Find this useful? Enter your email to receive occasional updates for securing PHP code.

Signing you up...

Thank you for signing up!

PHP Decode

eval(base64_decode('CiBuYW1lc3BhY2UgQXBwXEh0dHBcQ29udHJvbGxlcnNcTWVtYmVyc2hpcDsgdXNlIEFwcF..

Decoded Output download


 namespace App\Http\Controllers\Membership; use App\Models\Club; use Carbon\Carbon; use Illuminate\Http\Request; use Illuminate\Support\Facades\DB; use Illuminate\Support\Facades\Validator; use Illuminate\Validation\Rule as ValidationRule; use Illuminate\Validation\ValidationException; use App\Models\Membership\Member; use App\Models\Membership\MemberCategory; use App\Models\Membership\Consts as MembershipConsts; use Exception; use Yajra\DataTables\DataTables; class MemberController extends MembershipBaseController { private $imagesPath = MembershipConsts::IMAGES_PATH; public function index(Request $request) { $selected_status = $request->filled("s") ? strtoupper($request->input("s")) : "ACTIVE"; if ($request->ajax()) { $user = auth()->user(); $can_edit_member = $user->can("Membership Edit Member"); $club_id = $user->club_id; $members = Member::where("club_id", $club_id)->select("membersr", "memberid", "membername", "mobileno", "email", "cnic", "typeid", "categoryid", "status", "mobileno2", "fromdate", "blockstatus", "todate", "department", "organisation", "rank", "occupationid", "blockremarks")->with("type:code,des")->with("category:code,des")->with("occupation:code,des"); if ($selected_status == "OTHERS") { $members = $members->where("memberid", "LIKE", "0%")->orWhere("memberid", "LIKE", "1%")->orWhere("memberid", "LIKE", "W%")->orWhere("memberid", "DHA")->get(); foreach ($members as $mbr) { $mbr->edit_url = $mbr->memberid && $can_edit_member ? route("member.edit", array("memberid" => $mbr->memberid)) : null; } return response($members); } else { if ($selected_status == "VIEW ALL") { $members = $members->get(); foreach ($members as $mbr) { $mbr->edit_url = $mbr->memberid && $can_edit_member ? route("member.edit", array("memberid" => $mbr->memberid)) : null; } return response($members); } } $members = $members->where("blockstatus", $selected_status)->where("memberid", "NOT LIKE", "0%")->where("memberid", "NOT LIKE", "1%")->where("memberid", "NOT LIKE", "W%")->where("memberid", "<>", "DHA")->get(); foreach ($members as $mbr) { $mbr->edit_url = $mbr->memberid && $can_edit_member ? route("member.edit", array("memberid" => $mbr->memberid)) : null; } return response($members); } return view("members.index", compact("selected_status")); } public function home() { $active_members = Member::countByBlockStatus("ACTIVE"); $outstation_members = Member::countByBlockStatus("OUTSTATION"); $cancelled_members = Member::countByBlockStatus("CANCEL"); $blocked_members = Member::countByBlockStatus("BLOCK"); $twentys = Member::countByAge(1, 29); $thirtys = Member::countByAge(30, 39); $fourtys = Member::countByAge(40, 49); $fiftys = Member::countByAge(50, 59); $sixtys = Member::countByAge(60, 63); $sixtyfour = Member::countByAge(64, 64); $sixtyfive = Member::countByAge(65, 69); $seventys = Member::countByAge(70, 79); $eightys = Member::countByAge(80, 300); return view("members.home", array("active_members" => $active_members, "outstation_members" => $outstation_members, "cancelled_members" => $cancelled_members, "blocked_members" => $blocked_members, "girls_max_age" => 30, "chart_by_age_labels" => array("0-30", "30-40", "40-50", "50-60", "60-64", "64-65", "65-70", "70-80", "80+"), "chart_by_age_data" => array($twentys, $thirtys, $fourtys, $fiftys, $sixtys, $sixtyfour, $sixtyfive, $seventys, $eightys))); } private function createPostForm($memberid, $route, $form_id = "form") { $csrf_token = csrf_token(); $csrf_input = "<input type="hidden" name="_token" value="" . $csrf_token . "" />"; $memberid_input = "<input type="hidden" name="memberid" value="" . $memberid . "" />"; $form = "<form id="" . $form_id . "" action="" . $route . "" method="POST" class="d-none">"; $form .= $csrf_input; $form .= $memberid_input; $form .= "</form>"; return $form; } public function show($memberid) { $club_id = auth()->user()->club_id; $member = Member::where("memberid", strtoupper($memberid))->where("club_id", $club_id)->with("family")->first(); if (!$member) { return redirect()->back()->with("memberid", $memberid)->with("error", "Sorry! Member Not Found, Invalid Member ID."); } return view("members.show", compact("member")); } public function create(Request $request) { $statuses = MembershipConsts::STATUSES; $block_statuses = MembershipConsts::BLOCK_STATUSES; $other_types = MembershipConsts::TYPES; $member_type_subs = MembershipConsts::MEMBER_TYPE_SUBS; $categories = MemberCategory::all("code", "des"); return view("members.create", array("categories" => $categories, "statuses" => $statuses, "block_statuses" => $block_statuses, "other_types" => $other_types, "member_type_subs" => $member_type_subs)); } public function store(Request $request) { $club_id = auth()->user()->club_id; if (!$club_id) { return redirect()->back()->with("error", "invalid club"); } $request->merge(array("club_id" => $club_id)); $validatedData = $this->validateData(); $memberid = strtoupper($request->memberid); $validatedData["memberid"] = $memberid; $msr = DB::select("SELECT MAX(NVL(membersr, 0)) + 1 next_member_sr FROM memberinfo"); $next_member_sr = $msr[0]->next_member_sr; $memberid = str_replace(" ", '', $memberid); $created_by = auth()->user()->id; $memberpic_filename = null; $membersign_filename = null; $parent_membersr = null; if ($request->parent_memberid) { $parent_member = Member::where("memberid", strtoupper($request->parent_memberid))->first("membersr"); $parent_membersr = $parent_member->membersr; } $validatedData["blockstatus"] = "ACTIVE"; $validatedData["memberpic"] = ''; $validatedData["parent_membersr"] = $parent_membersr; $validatedData["membersign"] = ''; $validatedData["married"] = in_array($request["married"], array("Y", "N")) ? $request["married"] : "Y"; $validatedData["club_id"] = $club_id; $validatedData["membersr"] = $next_member_sr; $validatedData["enb"] = auth()->user()->club->code; if ($request->hasFile("memberpic")) { $extension = $request->file("memberpic")->extension(); $memberpic_filename = $memberid . "-p-" . $next_member_sr . "." . $extension; $request->memberpic->storeAs($this->imagesPath, $memberpic_filename, "public"); } if ($request->hasFile("membersign")) { $extension = $request->file("membersign")->extension(); $membersign_filename = $memberid . "-s-" . $next_member_sr . "." . $extension; $request->membersign->storeAs($this->imagesPath, $membersign_filename, "public"); } $validatedData["picture"] = $memberpic_filename; $validatedData["signature"] = $membersign_filename; $validatedData["created_by"] = $created_by; $validatedData["updated_by"] = $created_by; $validatedData["memberid"] = strtoupper($memberid); DB::beginTransaction(); $member = null; try { unset($validatedData["parent_memberid"]); $member = Member::create($validatedData); DB::commit(); if ($member) { if ($request->hasFile("memberpic")) { Member::writeBlob($memberpic_filename, $next_member_sr, "member_img_upload"); } if ($request->hasFile("membersign")) { Member::writeBlob($membersign_filename, $next_member_sr, "member_sign_upload"); } } return redirect()->route("member.edit", array("memberid" => $member->memberid))->with("success", "Member created successfully!"); } catch (\Exception $e) { DB::rollBack(); $this->logError($e, $request->user()->id, __METHOD__, __LINE__); if ($member) { return redirect()->route("member.edit", array("memberid" => $member->memberid))->with("success", "Member created successfully!"); } $sweetAlert = array("type" => "error", "expression" => "Opps!", "message" => $e->getMessage()); return redirect()->back()->with("sweetAlert", $sweetAlert); } } public function updateStatus(Request $request) { $member = null; $memberid = null; $statuses = MembershipConsts::STATUSES; $block_statuses = MembershipConsts::BLOCK_STATUSES; $sessionMsg = null; $sessionMsgSA = null; if ($request->post()) { $request->validate(array("memberid" => "required|exists:memberinfo,memberid", "blockstatus" => array("required", ValidationRule::in(MembershipConsts::BLOCK_STATUS)), "remarks" => "nullable|max:500", "fromdate" => "nullable|date_format:Y-m-d", "todate" => "nullable|date_format:Y-m-d")); $membersr = $request->membersr; $memberid = $request->memberid; $user = auth()->user(); $user_id = $user->id; try { $member = Member::select("membersr", "memberid", "fromdate", "todate", "remarks", "blockstatus", "status", "membername", "typeid")->where("membersr", $membersr)->where("club_id", $user->club_id)->first(); if ($member) { $member->blockstatus = strtoupper($request->blockstatus); $member->remarks = strtoupper($request->remarks); $member->todate = $request->todate; $member->fromdate = $request->fromdate; $member->updated_by = $user_id; $member->save(); $sessionMsgSA = array("expression" => "Success!", "type" => "success", "message" => "Member status updated successfully!"); } else { $sessionMsgSA = array("expression" => "Opps!", "type" => "error", "message" => "Member Not Found!"); } } catch (\Exception $e) { $this->logError($e, $user_id, __METHOD__, __LINE__); $sessionMsgSA = array("expression" => "Opps!", "type" => "error", "message" => "Server Error, Please try again!"); } } return view("members.update_status", array("member" => $member, "memberid" => $memberid, "statuses" => $statuses, "block_statuses" => $block_statuses, "member" => $member, "sessionMsg" => null, "sessionMsgSA" => $sessionMsgSA)); } public function edit($memberid, Request $request) { $club_id = auth()->user()->club_id; $member = Member::getMember($memberid, $club_id); $statuses = MembershipConsts::STATUSES; $block_statuses = MembershipConsts::BLOCK_STATUSES; $other_types = MembershipConsts::TYPES; $member_type_subs = MembershipConsts::MEMBER_TYPE_SUBS; $categories = MemberCategory::all("code", "des"); $credit_allowed = MembershipConsts::CREDIT_ALLOWED; $relations = MembershipConsts::RELATIONS; $sessionMsg = null; if (!$member) { return redirect()->route("member.create")->with("memberid", $memberid)->with("error", "Sorry! Member <strong>{$memberid}</strong> Not Found"); } return view("members.edit", array("categories" => $categories, "statuses" => $statuses, "block_statuses" => $block_statuses, "other_types" => $other_types, "member_type_subs" => $member_type_subs, "member" => $member, "memberid" => $memberid, "credit_allowed" => $credit_allowed, "relations" => $relations, "sessionMsg" => $sessionMsg)); } public function update($membersr, Request $request) { $this->validateData(true); $memberid = strtoupper($request->memberid); $member = null; try { $member = Member::find($membersr); if (!$member) { throw new \Exception("Invalid Member"); } $memberid_exists = Member::where("memberid", $memberid)->where("membersr", "!=", $membersr)->first(); if ($memberid_exists) { throw new \Exception("Member ID Already Taken"); } } catch (\Exception $e) { $this->logError($e, $request->user()->id, __METHOD__, __LINE__); $validator = Validator::make(array(), array()); $validator->errors()->add("memberid", $e->getMessage()); throw new ValidationException($validator); } if (str_starts_with($member->memberid, "R")) { $memberid = $member->memberid; } else { if (str_starts_with($member->memberid, "T") && !str_starts_with($memberid, "T")) { $x = explode("-", $memberid); $m_fp = $x[0] == "R" ? "R" : "T"; $m_sp = explode("-", $member->memberid)[1]; $memberid = "{$m_fp}-{$m_sp}"; } } DB::beginTransaction(); try { $updated_by = auth()->user()->id; $memberid = str_replace(" ", '', $request->memberid); $memberpic_filename = $member->picture; $membersign_filename = $member->signature; if ($request->hasFile("memberpic")) { $extension = $request->file("memberpic")->extension(); $memberpic_filename = $memberid . "-p-" . $membersr . "." . $extension; $request->memberpic->storeAs($this->imagesPath, $memberpic_filename, "public"); } if ($request->hasFile("membersign")) { $extension = $request->file("membersign")->extension(); $membersign_filename = $memberid . "-s-" . $membersr . "." . $extension; $request->membersign->storeAs($this->imagesPath, $membersign_filename, "public"); } $parent_membersr = null; if ($request->parent_memberid) { $parent_member = Member::where("memberid", strtoupper($request->parent_memberid))->first("membersr"); $parent_membersr = $parent_member->membersr; } Member::find($membersr)->update(array("categoryid" => $request->categoryid, "typeid" => $request->typeid, "membername" => $request->membername, "memberfname" => $request->memberfname, "cnic" => $request->cnic, "cnic_expiry_date" => $request->cnic_expiry_date, "pano" => $request->pano, "occupationid" => $request->occupationid, "rank" => $request->rank, "department" => $request->department, "organisation" => $request->organisation, "dob" => $request->dob, "married" => $request->married, "otherinfo" => $request->otherinfo, "membertype" => $request->membertype, "status" => $request->status, "membershipdate" => $request->membershipdate, "cardissuedate" => $request->cardissuedate, "cardexpirydate" => $request->cardexpirydate, "phoneoffice" => $request->phoneoffice, "phoneresidence" => $request->phoneresidence, "mailingaddress" => $request->mailingaddress, "workingaddress" => $request->workingaddress, "mobileno" => $request->mobileno, "mobileno2" => $request->mobileno2, "fax" => $request->fax, "email" => $request->email, "picture" => $memberpic_filename, "signature" => $membersign_filename, "updated_by" => $updated_by, "parent_membersr" => $parent_membersr)); DB::commit(); return redirect()->to(route("member.edit", array("memberid" => $memberid)))->with("success", "Member Updated successfully!"); } catch (\Exception $e) { DB::rollBack(); $this->logError($e, $request->user()->id, __METHOD__, __LINE__); $sweetAlert = array("type" => "error", "expression" => "Opps!", "message" => $e->getMessage()); return redirect()->back()->with("sweetAlert", $sweetAlert); } } private function validateData($an_update = false) { $rules = array("club_id" => "required|exists:clubs,id", "categoryid" => "required|exists:membercategory,code", "typeid" => "required|exists:membertypes,code", "membername" => "required|max:100", "memberfname" => "nullable|max:100", "cnic" => "required|max:20", "pano" => "nullable|max:8", "occupationid" => "nullable|exists:memberoccupation,code", "rank" => "nullable|max:255", "department" => "nullable|max:200", "organisation" => "nullable|max:100", "dob" => "required|date_format:Y-m-d", "married" => "nullable", "otherinfo" => "nullable|max:100", "membertype" => array("nullable", ValidationRule::in(MembershipConsts::TYPE)), "memberpic" => "nullable|image|mimes:jpeg,jpg,png,bmp|max:1024", "membersign" => "nullable|image|mimes:jpeg,jpg,png,bmp|max:1024", "status" => array("nullable", ValidationRule::in(MembershipConsts::STATUS)), "membershipdate" => "nullable|date_format:Y-m-d", "cardissuedate" => "nullable|date_format:Y-m-d", "cardexpirydate" => "nullable|date_format:Y-m-d", "phoneoffice" => "nullable|max:60", "phoneresidence" => "nullable|max:60", "mailingaddress" => "nullable|max:500", "workingaddress" => "nullable|max:500", "mobileno" => "nullable|max:20", "mobileno2" => "nullable|max:100", "fax" => "nullable|max:20", "email" => "nullable|email|max:50", "parent_memberid" => "nullable|exists:memberinfo,memberid", "cnic_expiry_date" => "nullable|date_format:Y-m-d"); if (!$an_update) { $rules["memberid"] = "required|unique:memberinfo,memberid"; } return request()->validate($rules, array("memberid.required" => "Member ID is required.", "memberid.unique" => "Member ID already taken.", "club_id.exists" => "Invalid Club", "typeid.required" => "Required", "typeid.exists" => "Invalid Type", "categoryid.required" => "Cattegory is required", "categoryid.exists" => "Invalid Cattegory", "membername.required" => "Member name is required", "cnic.required" => "CNIC is required", "occupationid.exists" => "Invalid Profession", "dob.required" => "Date of birth is required", "membertype.in" => "Invalid Type", "status.in" => "Invalid Status", "*.date_format" => "Invalid Date")); } public function search() { $statuses = MembershipConsts::STATUSES; $block_statuses = MembershipConsts::BLOCK_STATUSES; $other_types = MembershipConsts::TYPES; $member_type_subs = MembershipConsts::MEMBER_TYPE_SUBS; $categories = MemberCategory::all("code", "des"); $clubs = Club::all("id", "name", "code"); return view("members.search_new", array("categories" => $categories, "statuses" => $statuses, "block_statuses" => $block_statuses, "other_types" => $other_types, "member_type_subs" => $member_type_subs, "clubs" => $clubs)); } public function memberSearch(Request $request) { } public function updateMemberShow() { $categories = MemberCategory::all("code", "des"); $temporary_cat_id = MemberCategory::$temporary_cat_id; $regular_cat_id = MemberCategory::$regular_cat_id; return view("members.update_member_id", array("doc" => null, "categories" => $categories, "temporary_cat_id" => $temporary_cat_id, "regular_cat_id" => $regular_cat_id)); } public function updateMemberId(Request $request) { $request->validate(array("current_memberid" => "required|exists:memberinfo,memberid", "categoryid" => "required|exists:membercategory,code"), array("current_memberid.required" => "Member ID is required.", "current_memberid.exists" => "Invalid Member ID.", "categoryid.required" => "The Member Category is required.", "categoryid.exists" => "The Member Category is invalid.")); $memberid = $request->current_memberid; $user = auth()->user(); $member = Member::where("memberid", $memberid)->where("club_id", $user->club_id)->first(); try { if (!$member) { throw new \Exception("Invalid Member ID"); } } catch (\Exception $e) { $this->logError($e, $request->user()->id, __METHOD__, __LINE__); $validator = Validator::make(array(), array()); $validator->errors()->add("current_memberid", $e->getMessage()); throw new ValidationException($validator); } $category_id = $request->categoryid; $num = explode("-", $memberid)[1]; $new_member_id = "R-{$num}"; try { $member->update(array("memberid" => $new_member_id, "categoryid" => $category_id, "updated_by" => $user->id)); $sweetAlert["icon"] = "success"; $sweetAlert["title"] = "Member Updated"; $sweetAlert["html"] = "Member ID Changed successfully."; return response()->json(array("sweetalert" => $sweetAlert, "success" => true)); } catch (\Exception $e) { logger($e->getMessage()); $sweetAlert["icon"] = "error"; $sweetAlert["title"] = "Opps!"; $sweetAlert["html"] = "Server Error, Member not updated!, please try again"; return response()->json(array("sweetalert" => $sweetAlert, "success" => false), 500); } } } 

Did this file decode correctly?

Original Code

eval(base64_decode('CiBuYW1lc3BhY2UgQXBwXEh0dHBcQ29udHJvbGxlcnNcTWVtYmVyc2hpcDsgdXNlIEFwcFxNb2RlbHNcQ2x1YjsgdXNlIENhcmJvblxDYXJib247IHVzZSBJbGx1bWluYXRlXEh0dHBcUmVxdWVzdDsgdXNlIElsbHVtaW5hdGVcU3VwcG9ydFxGYWNhZGVzXERCOyB1c2UgSWxsdW1pbmF0ZVxTdXBwb3J0XEZhY2FkZXNcVmFsaWRhdG9yOyB1c2UgSWxsdW1pbmF0ZVxWYWxpZGF0aW9uXFJ1bGUgYXMgVmFsaWRhdGlvblJ1bGU7IHVzZSBJbGx1bWluYXRlXFZhbGlkYXRpb25cVmFsaWRhdGlvbkV4Y2VwdGlvbjsgdXNlIEFwcFxNb2RlbHNcTWVtYmVyc2hpcFxNZW1iZXI7IHVzZSBBcHBcTW9kZWxzXE1lbWJlcnNoaXBcTWVtYmVyQ2F0ZWdvcnk7IHVzZSBBcHBcTW9kZWxzXE1lbWJlcnNoaXBcQ29uc3RzIGFzIE1lbWJlcnNoaXBDb25zdHM7IHVzZSBFeGNlcHRpb247IHVzZSBZYWpyYVxEYXRhVGFibGVzXERhdGFUYWJsZXM7IGNsYXNzIE1lbWJlckNvbnRyb2xsZXIgZXh0ZW5kcyBNZW1iZXJzaGlwQmFzZUNvbnRyb2xsZXIgeyBwcml2YXRlICRpbWFnZXNQYXRoID0gTWVtYmVyc2hpcENvbnN0czo6SU1BR0VTX1BBVEg7IHB1YmxpYyBmdW5jdGlvbiBpbmRleChSZXF1ZXN0ICRyZXF1ZXN0KSB7ICRzZWxlY3RlZF9zdGF0dXMgPSAkcmVxdWVzdC0+ZmlsbGVkKCJcMTYzIikgPyBzdHJ0b3VwcGVyKCRyZXF1ZXN0LT5pbnB1dCgiXDE2MyIpKSA6ICJcMTAxXHg0M1wxMjRcMTExXDEyNlwxMDUiOyBpZiAoJHJlcXVlc3QtPmFqYXgoKSkgeyAkdXNlciA9IGF1dGgoKS0+dXNlcigpOyAkY2FuX2VkaXRfbWVtYmVyID0gJHVzZXItPmNhbigiXHg0ZFx4NjVceDZkXDE0Mlx4NjVceDcyXHg3M1x4NjhcMTUxXDE2MFw0MFwxMDVceDY0XHg2OVx4NzRcNDBceDRkXDE0NVwxNTVceDYyXDE0NVx4NzIiKTsgJGNsdWJfaWQgPSAkdXNlci0+Y2x1Yl9pZDsgJG1lbWJlcnMgPSBNZW1iZXI6OndoZXJlKCJcMTQzXDE1NFx4NzVceDYyXDEzN1wxNTFceDY0IiwgJGNsdWJfaWQpLT5zZWxlY3QoIlx4NmRcMTQ1XHg2ZFx4NjJcMTQ1XDE2MlwxNjNcMTYyIiwgIlwxNTVceDY1XHg2ZFx4NjJcMTQ1XDE2Mlx4NjlcMTQ0IiwgIlx4NmRcMTQ1XHg2ZFx4NjJcMTQ1XHg3MlwxNTZceDYxXHg2ZFwxNDUiLCAiXHg2ZFwxNTdceDYyXHg2OVx4NmNceDY1XDE1NlwxNTciLCAiXHg2NVwxNTVcMTQxXHg2OVwxNTQiLCAiXDE0M1x4NmVceDY5XHg2MyIsICJceDc0XDE3MVx4NzBceDY1XDE1MVx4NjQiLCAiXHg2M1x4NjFcMTY0XDE0NVx4NjdcMTU3XHg3Mlx4NzlcMTUxXHg2NCIsICJcMTYzXHg3NFx4NjFceDc0XHg3NVwxNjMiLCAiXHg2ZFwxNTdceDYyXDE1MVx4NmNceDY1XHg2ZVx4NmZceDMyIiwgIlwxNDZcMTYyXHg2ZlwxNTVceDY0XHg2MVwxNjRcMTQ1IiwgIlwxNDJcMTU0XHg2Zlx4NjNceDZiXHg3M1wxNjRcMTQxXDE2NFwxNjVceDczIiwgIlx4NzRceDZmXHg2NFx4NjFceDc0XHg2NSIsICJcMTQ0XHg2NVx4NzBcMTQxXHg3Mlx4NzRceDZkXDE0NVx4NmVceDc0IiwgIlwxNTdceDcyXDE0N1x4NjFceDZlXHg2OVwxNjNcMTQxXDE2NFx4NjlcMTU3XDE1NiIsICJceDcyXDE0MVwxNTZcMTUzIiwgIlx4NmZceDYzXHg2M1x4NzVceDcwXDE0MVwxNjRcMTUxXHg2ZlwxNTZcMTUxXDE0NCIsICJceDYyXHg2Y1wxNTdcMTQzXDE1M1wxNjJceDY1XDE1NVwxNDFceDcyXDE1M1wxNjMiKS0+d2l0aCgiXDE2NFwxNzFcMTYwXHg2NVx4M2FceDYzXDE1N1wxNDRcMTQ1XHgyY1wxNDRceDY1XDE2MyIpLT53aXRoKCJcMTQzXDE0MVwxNjRceDY1XHg2N1wxNTdceDcyXHg3OVx4M2FceDYzXDE1N1wxNDRceDY1XDU0XDE0NFwxNDVcMTYzIiktPndpdGgoIlx4NmZcMTQzXDE0M1x4NzVcMTYwXHg2MVx4NzRcMTUxXDE1N1x4NmVceDNhXHg2M1x4NmZceDY0XDE0NVx4MmNceDY0XDE0NVwxNjMiKTsgaWYgKCRzZWxlY3RlZF9zdGF0dXMgPT0gIlx4NGZcMTI0XDExMFx4NDVceDUyXHg1MyIpIHsgJG1lbWJlcnMgPSAkbWVtYmVycy0+d2hlcmUoIlx4NmRcMTQ1XDE1NVwxNDJceDY1XDE2MlwxNTFcMTQ0IiwgIlx4NGNceDQ5XHg0YlwxMDUiLCAiXDYwXHgyNSIpLT5vcldoZXJlKCJcMTU1XHg2NVx4NmRcMTQyXHg2NVwxNjJceDY5XDE0NCIsICJcMTE0XDExMVwxMTNcMTA1IiwgIlw2MVw0NSIpLT5vcldoZXJlKCJcMTU1XDE0NVx4NmRcMTQyXDE0NVwxNjJcMTUxXDE0NCIsICJceDRjXDExMVx4NGJceDQ1IiwgIlx4NTdcNDUiKS0+b3JXaGVyZSgiXHg2ZFwxNDVceDZkXHg2Mlx4NjVceDcyXDE1MVx4NjQiLCAiXHg0NFwxMTBcMTAxIiktPmdldCgpOyBmb3JlYWNoICgkbWVtYmVycyBhcyAkbWJyKSB7ICRtYnItPmVkaXRfdXJsID0gJG1ici0+bWVtYmVyaWQgJiYgJGNhbl9lZGl0X21lbWJlciA/IHJvdXRlKCJceDZkXHg2NVx4NmRceDYyXHg2NVwxNjJcNTZcMTQ1XDE0NFwxNTFceDc0IiwgYXJyYXkoIlx4NmRceDY1XDE1NVx4NjJceDY1XDE2MlwxNTFceDY0IiA9PiAkbWJyLT5tZW1iZXJpZCkpIDogbnVsbDsgfSByZXR1cm4gcmVzcG9uc2UoJG1lbWJlcnMpOyB9IGVsc2UgeyBpZiAoJHNlbGVjdGVkX3N0YXR1cyA9PSAiXHg1Nlx4NDlceDQ1XDEyN1x4MjBceDQxXHg0Y1x4NGMiKSB7ICRtZW1iZXJzID0gJG1lbWJlcnMtPmdldCgpOyBmb3JlYWNoICgkbWVtYmVycyBhcyAkbWJyKSB7ICRtYnItPmVkaXRfdXJsID0gJG1ici0+bWVtYmVyaWQgJiYgJGNhbl9lZGl0X21lbWJlciA/IHJvdXRlKCJceDZkXDE0NVwxNTVceDYyXHg2NVwxNjJcNTZcMTQ1XHg2NFwxNTFcMTY0IiwgYXJyYXkoIlx4NmRceDY1XHg2ZFwxNDJcMTQ1XDE2Mlx4NjlceDY0IiA9PiAkbWJyLT5tZW1iZXJpZCkpIDogbnVsbDsgfSByZXR1cm4gcmVzcG9uc2UoJG1lbWJlcnMpOyB9IH0gJG1lbWJlcnMgPSAkbWVtYmVycy0+d2hlcmUoIlwxNDJceDZjXDE1N1x4NjNceDZiXDE2M1x4NzRcMTQxXHg3NFwxNjVcMTYzIiwgJHNlbGVjdGVkX3N0YXR1cyktPndoZXJlKCJcMTU1XDE0NVwxNTVceDYyXHg2NVx4NzJcMTUxXHg2NCIsICJcMTE2XDExN1wxMjRcNDBcMTE0XDExMVwxMTNcMTA1IiwgIlx4MzBcNDUiKS0+d2hlcmUoIlx4NmRceDY1XHg2ZFx4NjJceDY1XHg3MlwxNTFcMTQ0IiwgIlwxMTZceDRmXHg1NFw0MFwxMTRcMTExXDExM1x4NDUiLCAiXHgzMVx4MjUiKS0+d2hlcmUoIlwxNTVcMTQ1XDE1NVx4NjJceDY1XDE2MlwxNTFcMTQ0IiwgIlwxMTZcMTE3XDEyNFx4MjBcMTE0XHg0OVx4NGJceDQ1IiwgIlx4NTdceDI1IiktPndoZXJlKCJcMTU1XDE0NVx4NmRceDYyXHg2NVx4NzJceDY5XDE0NCIsICJcNzRcNzYiLCAiXDEwNFx4NDhcMTAxIiktPmdldCgpOyBmb3JlYWNoICgkbWVtYmVycyBhcyAkbWJyKSB7ICRtYnItPmVkaXRfdXJsID0gJG1ici0+bWVtYmVyaWQgJiYgJGNhbl9lZGl0X21lbWJlciA/IHJvdXRlKCJceDZkXHg2NVx4NmRceDYyXDE0NVwxNjJceDJlXHg2NVx4NjRcMTUxXHg3NCIsIGFycmF5KCJcMTU1XDE0NVwxNTVcMTQyXDE0NVwxNjJcMTUxXHg2NCIgPT4gJG1ici0+bWVtYmVyaWQpKSA6IG51bGw7IH0gcmV0dXJuIHJlc3BvbnNlKCRtZW1iZXJzKTsgfSByZXR1cm4gdmlldygiXHg2ZFx4NjVcMTU1XDE0MlwxNDVceDcyXDE2M1x4MmVceDY5XHg2ZVx4NjRceDY1XDE3MCIsIGNvbXBhY3QoIlx4NzNceDY1XDE1NFwxNDVceDYzXHg3NFx4NjVceDY0XHg1ZlwxNjNceDc0XDE0MVx4NzRcMTY1XHg3MyIpKTsgfSBwdWJsaWMgZnVuY3Rpb24gaG9tZSgpIHsgJGFjdGl2ZV9tZW1iZXJzID0gTWVtYmVyOjpjb3VudEJ5QmxvY2tTdGF0dXMoIlwxMDFcMTAzXDEyNFwxMTFceDU2XHg0NSIpOyAkb3V0c3RhdGlvbl9tZW1iZXJzID0gTWVtYmVyOjpjb3VudEJ5QmxvY2tTdGF0dXMoIlwxMTdceDU1XHg1NFx4NTNceDU0XDEwMVwxMjRceDQ5XHg0ZlwxMTYiKTsgJGNhbmNlbGxlZF9tZW1iZXJzID0gTWVtYmVyOjpjb3VudEJ5QmxvY2tTdGF0dXMoIlwxMDNcMTAxXHg0ZVx4NDNceDQ1XHg0YyIpOyAkYmxvY2tlZF9tZW1iZXJzID0gTWVtYmVyOjpjb3VudEJ5QmxvY2tTdGF0dXMoIlwxMDJcMTE0XDExN1wxMDNceDRiIik7ICR0d2VudHlzID0gTWVtYmVyOjpjb3VudEJ5QWdlKDEsIDI5KTsgJHRoaXJ0eXMgPSBNZW1iZXI6OmNvdW50QnlBZ2UoMzAsIDM5KTsgJGZvdXJ0eXMgPSBNZW1iZXI6OmNvdW50QnlBZ2UoNDAsIDQ5KTsgJGZpZnR5cyA9IE1lbWJlcjo6Y291bnRCeUFnZSg1MCwgNTkpOyAkc2l4dHlzID0gTWVtYmVyOjpjb3VudEJ5QWdlKDYwLCA2Myk7ICRzaXh0eWZvdXIgPSBNZW1iZXI6OmNvdW50QnlBZ2UoNjQsIDY0KTsgJHNpeHR5Zml2ZSA9IE1lbWJlcjo6Y291bnRCeUFnZSg2NSwgNjkpOyAkc2V2ZW50eXMgPSBNZW1iZXI6OmNvdW50QnlBZ2UoNzAsIDc5KTsgJGVpZ2h0eXMgPSBNZW1iZXI6OmNvdW50QnlBZ2UoODAsIDMwMCk7IHJldHVybiB2aWV3KCJcMTU1XHg2NVx4NmRceDYyXHg2NVwxNjJceDczXHgyZVwxNTBceDZmXHg2ZFwxNDUiLCBhcnJheSgiXDE0MVwxNDNcMTY0XDE1MVx4NzZcMTQ1XHg1ZlwxNTVceDY1XHg2ZFx4NjJcMTQ1XHg3MlwxNjMiID0+ICRhY3RpdmVfbWVtYmVycywgIlwxNTdceDc1XDE2NFwxNjNceDc0XHg2MVx4NzRcMTUxXHg2ZlwxNTZceDVmXDE1NVx4NjVcMTU1XDE0MlwxNDVceDcyXDE2MyIgPT4gJG91dHN0YXRpb25fbWVtYmVycywgIlwxNDNceDYxXHg2ZVx4NjNcMTQ1XHg2Y1x4NmNceDY1XDE0NFx4NWZceDZkXHg2NVwxNTVceDYyXDE0NVwxNjJceDczIiA9PiAkY2FuY2VsbGVkX21lbWJlcnMsICJceDYyXDE1NFx4NmZcMTQzXHg2Ylx4NjVcMTQ0XDEzN1wxNTVceDY1XHg2ZFwxNDJceDY1XDE2Mlx4NzMiID0+ICRibG9ja2VkX21lbWJlcnMsICJceDY3XDE1MVwxNjJceDZjXDE2M1wxMzdceDZkXDE0MVx4NzhcMTM3XDE0MVwxNDdcMTQ1IiA9PiAzMCwgIlwxNDNceDY4XHg2MVx4NzJceDc0XDEzN1x4NjJcMTcxXDEzN1x4NjFcMTQ3XHg2NVx4NWZceDZjXHg2MVx4NjJceDY1XDE1NFwxNjMiID0+IGFycmF5KCJcNjBcNTVcNjNcNjAiLCAiXHgzM1w2MFx4MmRceDM0XDYwIiwgIlx4MzRceDMwXHgyZFx4MzVceDMwIiwgIlw2NVw2MFx4MmRcNjZceDMwIiwgIlw2Nlw2MFx4MmRcNjZcNjQiLCAiXHgzNlx4MzRcNTVcNjZcNjUiLCAiXHgzNlw2NVx4MmRcNjdceDMwIiwgIlx4MzdcNjBcNTVceDM4XDYwIiwgIlw3MFx4MzBcNTMiKSwgIlwxNDNcMTUwXHg2MVx4NzJcMTY0XDEzN1x4NjJcMTcxXHg1Zlx4NjFcMTQ3XDE0NVx4NWZcMTQ0XHg2MVwxNjRcMTQxIiA9PiBhcnJheSgkdHdlbnR5cywgJHRoaXJ0eXMsICRmb3VydHlzLCAkZmlmdHlzLCAkc2l4dHlzLCAkc2l4dHlmb3VyLCAkc2l4dHlmaXZlLCAkc2V2ZW50eXMsICRlaWdodHlzKSkpOyB9IHByaXZhdGUgZnVuY3Rpb24gY3JlYXRlUG9zdEZvcm0oJG1lbWJlcmlkLCAkcm91dGUsICRmb3JtX2lkID0gIlx4NjZcMTU3XHg3MlwxNTUiKSB7ICRjc3JmX3Rva2VuID0gY3NyZl90b2tlbigpOyAkY3NyZl9pbnB1dCA9ICJcNzRceDY5XDE1NlwxNjBceDc1XDE2NFw0MFwxNjRcMTcxXDE2MFx4NjVcNzVceDIyXDE1MFx4NjlceDY0XHg2NFx4NjVcMTU2XHgyMlx4MjBcMTU2XHg2MVx4NmRcMTQ1XHgzZFw0MlwxMzdcMTY0XHg2Zlx4NmJceDY1XHg2ZVx4MjJceDIwXDE2Nlx4NjFcMTU0XDE2NVx4NjVcNzVcNDIiIC4gJGNzcmZfdG9rZW4gLiAiXHgyMlx4MjBceDJmXDc2IjsgJG1lbWJlcmlkX2lucHV0ID0gIlw3NFwxNTFcMTU2XDE2MFx4NzVcMTY0XHgyMFx4NzRcMTcxXDE2MFwxNDVceDNkXHgyMlwxNTBcMTUxXHg2NFx4NjRcMTQ1XHg2ZVx4MjJceDIwXDE1Nlx4NjFceDZkXDE0NVw3NVw0Mlx4NmRceDY1XHg2ZFx4NjJcMTQ1XHg3MlwxNTFcMTQ0XDQyXDQwXDE2NlwxNDFceDZjXDE2NVx4NjVcNzVcNDIiIC4gJG1lbWJlcmlkIC4gIlx4MjJceDIwXDU3XHgzZSI7ICRmb3JtID0gIlw3NFx4NjZceDZmXDE2MlwxNTVceDIwXDE1MVx4NjRcNzVcNDIiIC4gJGZvcm1faWQgLiAiXDQyXHgyMFx4NjFceDYzXHg3NFx4NjlceDZmXHg2ZVw3NVw0MiIgLiAkcm91dGUgLiAiXHgyMlx4MjBcMTU1XHg2NVx4NzRcMTUwXHg2ZlwxNDRcNzVceDIyXHg1MFwxMTdceDUzXHg1NFw0Mlx4MjBcMTQzXHg2Y1x4NjFcMTYzXDE2M1w3NVx4MjJcMTQ0XDU1XDE1NlwxNTdcMTU2XHg2NVx4MjJcNzYiOyAkZm9ybSAuPSAkY3NyZl9pbnB1dDsgJGZvcm0gLj0gJG1lbWJlcmlkX2lucHV0OyAkZm9ybSAuPSAiXHgzY1w1N1x4NjZceDZmXHg3MlwxNTVcNzYiOyByZXR1cm4gJGZvcm07IH0gcHVibGljIGZ1bmN0aW9uIHNob3coJG1lbWJlcmlkKSB7ICRjbHViX2lkID0gYXV0aCgpLT51c2VyKCktPmNsdWJfaWQ7ICRtZW1iZXIgPSBNZW1iZXI6OndoZXJlKCJceDZkXDE0NVx4NmRcMTQyXHg2NVwxNjJceDY5XHg2NCIsIHN0cnRvdXBwZXIoJG1lbWJlcmlkKSktPndoZXJlKCJcMTQzXHg2Y1x4NzVceDYyXHg1ZlwxNTFceDY0IiwgJGNsdWJfaWQpLT53aXRoKCJcMTQ2XHg2MVwxNTVceDY5XHg2Y1wxNzEiKS0+Zmlyc3QoKTsgaWYgKCEkbWVtYmVyKSB7IHJldHVybiByZWRpcmVjdCgpLT5iYWNrKCktPndpdGgoIlwxNTVceDY1XDE1NVwxNDJcMTQ1XHg3Mlx4NjlcMTQ0IiwgJG1lbWJlcmlkKS0+d2l0aCgiXDE0NVwxNjJcMTYyXHg2Zlx4NzIiLCAiXHg1M1wxNTdceDcyXHg3MlwxNzFceDIxXDQwXDExNVx4NjVcMTU1XHg2Mlx4NjVcMTYyXDQwXHg0ZVx4NmZcMTY0XDQwXHg0Nlx4NmZceDc1XDE1NlwxNDRceDJjXDQwXDExMVwxNTZcMTY2XDE0MVx4NmNceDY5XDE0NFw0MFx4NGRcMTQ1XHg2ZFwxNDJcMTQ1XHg3Mlx4MjBcMTExXDEwNFw1NiIpOyB9IHJldHVybiB2aWV3KCJcMTU1XHg2NVx4NmRcMTQyXHg2NVwxNjJcMTYzXHgyZVwxNjNceDY4XHg2ZlwxNjciLCBjb21wYWN0KCJcMTU1XDE0NVwxNTVcMTQyXHg2NVx4NzIiKSk7IH0gcHVibGljIGZ1bmN0aW9uIGNyZWF0ZShSZXF1ZXN0ICRyZXF1ZXN0KSB7ICRzdGF0dXNlcyA9IE1lbWJlcnNoaXBDb25zdHM6OlNUQVRVU0VTOyAkYmxvY2tfc3RhdHVzZXMgPSBNZW1iZXJzaGlwQ29uc3RzOjpCTE9DS19TVEFUVVNFUzsgJG90aGVyX3R5cGVzID0gTWVtYmVyc2hpcENvbnN0czo6VFlQRVM7ICRtZW1iZXJfdHlwZV9zdWJzID0gTWVtYmVyc2hpcENvbnN0czo6TUVNQkVSX1RZUEVfU1VCUzsgJGNhdGVnb3JpZXMgPSBNZW1iZXJDYXRlZ29yeTo6YWxsKCJceDYzXHg2Zlx4NjRceDY1IiwgIlwxNDRceDY1XHg3MyIpOyByZXR1cm4gdmlldygiXHg2ZFwxNDVcMTU1XDE0MlwxNDVcMTYyXDE2M1w1Nlx4NjNceDcyXHg2NVwxNDFcMTY0XHg2NSIsIGFycmF5KCJcMTQzXDE0MVwxNjRceDY1XHg2N1wxNTdcMTYyXDE1MVx4NjVceDczIiA9PiAkY2F0ZWdvcmllcywgIlwxNjNceDc0XDE0MVx4NzRceDc1XHg3M1x4NjVceDczIiA9PiAkc3RhdHVzZXMsICJcMTQyXDE1NFwxNTdceDYzXDE1M1wxMzdcMTYzXDE2NFx4NjFcMTY0XDE2NVx4NzNceDY1XDE2MyIgPT4gJGJsb2NrX3N0YXR1c2VzLCAiXDE1N1wxNjRceDY4XHg2NVx4NzJcMTM3XHg3NFwxNzFceDcwXHg2NVx4NzMiID0+ICRvdGhlcl90eXBlcywgIlwxNTVceDY1XHg2ZFwxNDJcMTQ1XHg3MlwxMzdcMTY0XHg3OVwxNjBceDY1XDEzN1wxNjNceDc1XDE0MlwxNjMiID0+ICRtZW1iZXJfdHlwZV9zdWJzKSk7IH0gcHVibGljIGZ1bmN0aW9uIHN0b3JlKFJlcXVlc3QgJHJlcXVlc3QpIHsgJGNsdWJfaWQgPSBhdXRoKCktPnVzZXIoKS0+Y2x1Yl9pZDsgaWYgKCEkY2x1Yl9pZCkgeyByZXR1cm4gcmVkaXJlY3QoKS0+YmFjaygpLT53aXRoKCJcMTQ1XHg3MlwxNjJceDZmXHg3MiIsICJceDY5XHg2ZVwxNjZcMTQxXHg2Y1wxNTFcMTQ0XDQwXDE0M1x4NmNcMTY1XHg2MiIpOyB9ICRyZXF1ZXN0LT5tZXJnZShhcnJheSgiXHg2M1wxNTRceDc1XHg2MlwxMzdcMTUxXHg2NCIgPT4gJGNsdWJfaWQpKTsgJHZhbGlkYXRlZERhdGEgPSAkdGhpcy0+dmFsaWRhdGVEYXRhKCk7ICRtZW1iZXJpZCA9IHN0cnRvdXBwZXIoJHJlcXVlc3QtPm1lbWJlcmlkKTsgJHZhbGlkYXRlZERhdGFbIlx4NmRcMTQ1XDE1NVwxNDJceDY1XHg3MlwxNTFcMTQ0Il0gPSAkbWVtYmVyaWQ7ICRtc3IgPSBEQjo6c2VsZWN0KCJceDUzXHg0NVx4NGNceDQ1XHg0M1x4NTRceDIwXDExNVwxMDFcMTMwXDUwXHg0ZVwxMjZcMTE0XHgyOFwxNTVcMTQ1XHg2ZFx4NjJceDY1XDE2MlwxNjNceDcyXHgyY1x4MjBceDMwXDUxXHgyOVx4MjBcNTNcNDBcNjFcNDBceDZlXHg2NVx4NzhcMTY0XHg1ZlwxNTVceDY1XHg2ZFwxNDJceDY1XHg3MlwxMzdcMTYzXHg3Mlx4MjBceDQ2XHg1Mlx4NGZceDRkXHgyMFwxNTVceDY1XHg2ZFwxNDJceDY1XDE2Mlx4NjlcMTU2XHg2Nlx4NmYiKTsgJG5leHRfbWVtYmVyX3NyID0gJG1zclswXS0+bmV4dF9tZW1iZXJfc3I7ICRtZW1iZXJpZCA9IHN0cl9yZXBsYWNlKCJcNDAiLCAnJywgJG1lbWJlcmlkKTsgJGNyZWF0ZWRfYnkgPSBhdXRoKCktPnVzZXIoKS0+aWQ7ICRtZW1iZXJwaWNfZmlsZW5hbWUgPSBudWxsOyAkbWVtYmVyc2lnbl9maWxlbmFtZSA9IG51bGw7ICRwYXJlbnRfbWVtYmVyc3IgPSBudWxsOyBpZiAoJHJlcXVlc3QtPnBhcmVudF9tZW1iZXJpZCkgeyAkcGFyZW50X21lbWJlciA9IE1lbWJlcjo6d2hlcmUoIlwxNTVceDY1XDE1NVwxNDJcMTQ1XHg3Mlx4NjlceDY0Iiwgc3RydG91cHBlcigkcmVxdWVzdC0+cGFyZW50X21lbWJlcmlkKSktPmZpcnN0KCJceDZkXDE0NVx4NmRcMTQyXDE0NVwxNjJcMTYzXDE2MiIpOyAkcGFyZW50X21lbWJlcnNyID0gJHBhcmVudF9tZW1iZXItPm1lbWJlcnNyOyB9ICR2YWxpZGF0ZWREYXRhWyJcMTQyXHg2Y1wxNTdceDYzXDE1M1wxNjNceDc0XDE0MVx4NzRcMTY1XHg3MyJdID0gIlwxMDFceDQzXHg1NFx4NDlcMTI2XDEwNSI7ICR2YWxpZGF0ZWREYXRhWyJcMTU1XHg2NVx4NmRceDYyXHg2NVwxNjJcMTYwXDE1MVx4NjMiXSA9ICcnOyAkdmFsaWRhdGVkRGF0YVsiXHg3MFwxNDFceDcyXDE0NVwxNTZcMTY0XDEzN1wxNTVcMTQ1XDE1NVx4NjJceDY1XDE2MlwxNjNceDcyIl0gPSAkcGFyZW50X21lbWJlcnNyOyAkdmFsaWRhdGVkRGF0YVsiXDE1NVx4NjVceDZkXDE0Mlx4NjVcMTYyXHg3M1x4NjlceDY3XHg2ZSJdID0gJyc7ICR2YWxpZGF0ZWREYXRhWyJceDZkXHg2MVx4NzJcMTYyXHg2OVwxNDVceDY0Il0gPSBpbl9hcnJheSgkcmVxdWVzdFsiXDE1NVx4NjFceDcyXHg3MlwxNTFcMTQ1XDE0NCJdLCBhcnJheSgiXDEzMSIsICJcMTE2IikpID8gJHJlcXVlc3RbIlwxNTVcMTQxXDE2Mlx4NzJcMTUxXHg2NVwxNDQiXSA6ICJceDU5IjsgJHZhbGlkYXRlZERhdGFbIlx4NjNceDZjXDE2NVwxNDJceDVmXDE1MVwxNDQiXSA9ICRjbHViX2lkOyAkdmFsaWRhdGVkRGF0YVsiXDE1NVwxNDVcMTU1XHg2MlwxNDVceDcyXDE2M1x4NzIiXSA9ICRuZXh0X21lbWJlcl9zcjsgJHZhbGlkYXRlZERhdGFbIlwxNDVceDZlXDE0MiJdID0gYXV0aCgpLT51c2VyKCktPmNsdWItPmNvZGU7IGlmICgkcmVxdWVzdC0+aGFzRmlsZSgiXDE1NVwxNDVceDZkXHg2MlwxNDVcMTYyXDE2MFx4NjlceDYzIikpIHsgJGV4dGVuc2lvbiA9ICRyZXF1ZXN0LT5maWxlKCJcMTU1XHg2NVwxNTVcMTQyXDE0NVx4NzJceDcwXHg2OVwxNDMiKS0+ZXh0ZW5zaW9uKCk7ICRtZW1iZXJwaWNfZmlsZW5hbWUgPSAkbWVtYmVyaWQgLiAiXHgyZFwxNjBcNTUiIC4gJG5leHRfbWVtYmVyX3NyIC4gIlx4MmUiIC4gJGV4dGVuc2lvbjsgJHJlcXVlc3QtPm1lbWJlcnBpYy0+c3RvcmVBcygkdGhpcy0+aW1hZ2VzUGF0aCwgJG1lbWJlcnBpY19maWxlbmFtZSwgIlx4NzBceDc1XHg2Mlx4NmNcMTUxXHg2MyIpOyB9IGlmICgkcmVxdWVzdC0+aGFzRmlsZSgiXHg2ZFwxNDVceDZkXHg2MlwxNDVcMTYyXDE2M1x4NjlcMTQ3XHg2ZSIpKSB7ICRleHRlbnNpb24gPSAkcmVxdWVzdC0+ZmlsZSgiXHg2ZFx4NjVceDZkXHg2Mlx4NjVcMTYyXHg3M1wxNTFceDY3XHg2ZSIpLT5leHRlbnNpb24oKTsgJG1lbWJlcnNpZ25fZmlsZW5hbWUgPSAkbWVtYmVyaWQgLiAiXDU1XDE2M1w1NSIgLiAkbmV4dF9tZW1iZXJfc3IgLiAiXDU2IiAuICRleHRlbnNpb247ICRyZXF1ZXN0LT5tZW1iZXJzaWduLT5zdG9yZUFzKCR0aGlzLT5pbWFnZXNQYXRoLCAkbWVtYmVyc2lnbl9maWxlbmFtZSwgIlx4NzBceDc1XDE0MlwxNTRcMTUxXHg2MyIpOyB9ICR2YWxpZGF0ZWREYXRhWyJceDcwXHg2OVx4NjNceDc0XDE2NVx4NzJceDY1Il0gPSAkbWVtYmVycGljX2ZpbGVuYW1lOyAkdmFsaWRhdGVkRGF0YVsiXDE2M1x4NjlceDY3XHg2ZVx4NjFceDc0XHg3NVwxNjJceDY1Il0gPSAkbWVtYmVyc2lnbl9maWxlbmFtZTsgJHZhbGlkYXRlZERhdGFbIlx4NjNceDcyXDE0NVx4NjFceDc0XHg2NVx4NjRceDVmXHg2Mlx4NzkiXSA9ICRjcmVhdGVkX2J5OyAkdmFsaWRhdGVkRGF0YVsiXHg3NVx4NzBcMTQ0XHg2MVwxNjRceDY1XDE0NFwxMzdceDYyXDE3MSJdID0gJGNyZWF0ZWRfYnk7ICR2YWxpZGF0ZWREYXRhWyJcMTU1XDE0NVwxNTVceDYyXHg2NVx4NzJcMTUxXHg2NCJdID0gc3RydG91cHBlcigkbWVtYmVyaWQpOyBEQjo6YmVnaW5UcmFuc2FjdGlvbigpOyAkbWVtYmVyID0gbnVsbDsgdHJ5IHsgdW5zZXQoJHZhbGlkYXRlZERhdGFbIlwxNjBcMTQxXHg3MlwxNDVcMTU2XDE2NFwxMzdceDZkXHg2NVx4NmRceDYyXHg2NVx4NzJceDY5XDE0NCJdKTsgJG1lbWJlciA9IE1lbWJlcjo6Y3JlYXRlKCR2YWxpZGF0ZWREYXRhKTsgREI6OmNvbW1pdCgpOyBpZiAoJG1lbWJlcikgeyBpZiAoJHJlcXVlc3QtPmhhc0ZpbGUoIlwxNTVceDY1XHg2ZFwxNDJceDY1XHg3Mlx4NzBcMTUxXDE0MyIpKSB7IE1lbWJlcjo6d3JpdGVCbG9iKCRtZW1iZXJwaWNfZmlsZW5hbWUsICRuZXh0X21lbWJlcl9zciwgIlwxNTVcMTQ1XHg2ZFx4NjJcMTQ1XHg3Mlx4NWZcMTUxXDE1NVx4NjdceDVmXDE2NVwxNjBcMTU0XDE1N1x4NjFcMTQ0Iik7IH0gaWYgKCRyZXF1ZXN0LT5oYXNGaWxlKCJcMTU1XDE0NVwxNTVceDYyXHg2NVx4NzJceDczXHg2OVwxNDdceDZlIikpIHsgTWVtYmVyOjp3cml0ZUJsb2IoJG1lbWJlcnNpZ25fZmlsZW5hbWUsICRuZXh0X21lbWJlcl9zciwgIlx4NmRcMTQ1XHg2ZFx4NjJceDY1XDE2Mlx4NWZcMTYzXDE1MVx4NjdceDZlXHg1ZlwxNjVcMTYwXHg2Y1x4NmZceDYxXDE0NCIpOyB9IH0gcmV0dXJuIHJlZGlyZWN0KCktPnJvdXRlKCJceDZkXHg2NVx4NmRcMTQyXDE0NVwxNjJcNTZceDY1XHg2NFx4NjlcMTY0IiwgYXJyYXkoIlwxNTVceDY1XHg2ZFwxNDJceDY1XHg3Mlx4NjlceDY0IiA9PiAkbWVtYmVyLT5tZW1iZXJpZCkpLT53aXRoKCJcMTYzXHg3NVx4NjNceDYzXHg2NVwxNjNceDczIiwgIlwxMTVceDY1XHg2ZFx4NjJcMTQ1XDE2Mlw0MFx4NjNceDcyXHg2NVwxNDFceDc0XHg2NVwxNDRcNDBcMTYzXDE2NVx4NjNceDYzXHg2NVx4NzNcMTYzXDE0NlwxNjVcMTU0XDE1NFx4NzlcNDEiKTsgfSBjYXRjaCAoXEV4Y2VwdGlvbiAkZSkgeyBEQjo6cm9sbEJhY2soKTsgJHRoaXMtPmxvZ0Vycm9yKCRlLCAkcmVxdWVzdC0+dXNlcigpLT5pZCwgX19NRVRIT0RfXywgX19MSU5FX18pOyBpZiAoJG1lbWJlcikgeyByZXR1cm4gcmVkaXJlY3QoKS0+cm91dGUoIlx4NmRcMTQ1XHg2ZFx4NjJceDY1XHg3Mlx4MmVcMTQ1XHg2NFx4NjlceDc0IiwgYXJyYXkoIlwxNTVcMTQ1XDE1NVwxNDJceDY1XDE2MlwxNTFceDY0IiA9PiAkbWVtYmVyLT5tZW1iZXJpZCkpLT53aXRoKCJcMTYzXDE2NVwxNDNcMTQzXHg2NVx4NzNcMTYzIiwgIlwxMTVcMTQ1XDE1NVx4NjJcMTQ1XHg3Mlw0MFwxNDNceDcyXHg2NVwxNDFceDc0XDE0NVx4NjRceDIwXDE2M1x4NzVcMTQzXDE0M1wxNDVceDczXHg3M1x4NjZceDc1XHg2Y1wxNTRcMTcxXHgyMSIpOyB9ICRzd2VldEFsZXJ0ID0gYXJyYXkoIlwxNjRceDc5XDE2MFx4NjUiID0+ICJceDY1XHg3MlwxNjJceDZmXHg3MiIsICJcMTQ1XDE3MFwxNjBceDcyXHg2NVwxNjNcMTYzXHg2OVwxNTdcMTU2IiA9PiAiXHg0Zlx4NzBcMTYwXDE2M1x4MjEiLCAiXHg2ZFx4NjVceDczXHg3M1x4NjFceDY3XDE0NSIgPT4gJGUtPmdldE1lc3NhZ2UoKSk7IHJldHVybiByZWRpcmVjdCgpLT5iYWNrKCktPndpdGgoIlwxNjNcMTY3XHg2NVwxNDVcMTY0XHg0MVwxNTRcMTQ1XDE2MlwxNjQiLCAkc3dlZXRBbGVydCk7IH0gfSBwdWJsaWMgZnVuY3Rpb24gdXBkYXRlU3RhdHVzKFJlcXVlc3QgJHJlcXVlc3QpIHsgJG1lbWJlciA9IG51bGw7ICRtZW1iZXJpZCA9IG51bGw7ICRzdGF0dXNlcyA9IE1lbWJlcnNoaXBDb25zdHM6OlNUQVRVU0VTOyAkYmxvY2tfc3RhdHVzZXMgPSBNZW1iZXJzaGlwQ29uc3RzOjpCTE9DS19TVEFUVVNFUzsgJHNlc3Npb25Nc2cgPSBudWxsOyAkc2Vzc2lvbk1zZ1NBID0gbnVsbDsgaWYgKCRyZXF1ZXN0LT5wb3N0KCkpIHsgJHJlcXVlc3QtPnZhbGlkYXRlKGFycmF5KCJcMTU1XDE0NVwxNTVceDYyXHg2NVx4NzJceDY5XHg2NCIgPT4gIlx4NzJceDY1XHg3MVx4NzVcMTUxXHg3Mlx4NjVcMTQ0XHg3Y1x4NjVceDc4XDE1MVx4NzNcMTY0XHg3M1x4M2FcMTU1XDE0NVx4NmRcMTQyXHg2NVwxNjJceDY5XHg2ZVwxNDZceDZmXDU0XDE1NVwxNDVcMTU1XDE0MlwxNDVceDcyXDE1MVx4NjQiLCAiXDE0Mlx4NmNceDZmXDE0M1x4NmJceDczXHg3NFx4NjFceDc0XHg3NVwxNjMiID0+IGFycmF5KCJcMTYyXHg2NVwxNjFcMTY1XHg2OVx4NzJcMTQ1XDE0NCIsIFZhbGlkYXRpb25SdWxlOjppbihNZW1iZXJzaGlwQ29uc3RzOjpCTE9DS19TVEFUVVMpKSwgIlwxNjJcMTQ1XHg2ZFx4NjFcMTYyXHg2YlwxNjMiID0+ICJcMTU2XDE2NVwxNTRcMTU0XHg2MVwxNDJceDZjXHg2NVwxNzRcMTU1XDE0MVx4NzhcNzJceDM1XDYwXDYwIiwgIlwxNDZcMTYyXHg2Zlx4NmRcMTQ0XDE0MVwxNjRcMTQ1IiA9PiAiXHg2ZVwxNjVceDZjXDE1NFx4NjFcMTQyXHg2Y1x4NjVceDdjXDE0NFx4NjFceDc0XDE0NVx4NWZceDY2XHg2Zlx4NzJcMTU1XDE0MVwxNjRcNzJcMTMxXDU1XHg2ZFx4MmRcMTQ0IiwgIlwxNjRceDZmXHg2NFwxNDFceDc0XDE0NSIgPT4gIlwxNTZceDc1XHg2Y1x4NmNcMTQxXHg2MlwxNTRcMTQ1XDE3NFwxNDRcMTQxXDE2NFx4NjVceDVmXDE0Nlx4NmZceDcyXHg2ZFx4NjFcMTY0XDcyXHg1OVw1NVwxNTVcNTVceDY0IikpOyAkbWVtYmVyc3IgPSAkcmVxdWVzdC0+bWVtYmVyc3I7ICRtZW1iZXJpZCA9ICRyZXF1ZXN0LT5tZW1iZXJpZDsgJHVzZXIgPSBhdXRoKCktPnVzZXIoKTsgJHVzZXJfaWQgPSAkdXNlci0+aWQ7IHRyeSB7ICRtZW1iZXIgPSBNZW1iZXI6OnNlbGVjdCgiXHg2ZFx4NjVceDZkXHg2Mlx4NjVcMTYyXHg3M1wxNjIiLCAiXDE1NVx4NjVceDZkXDE0Mlx4NjVcMTYyXDE1MVwxNDQiLCAiXDE0NlwxNjJcMTU3XHg2ZFwxNDRceDYxXDE2NFwxNDUiLCAiXDE2NFx4NmZceDY0XDE0MVwxNjRcMTQ1IiwgIlx4NzJcMTQ1XHg2ZFwxNDFcMTYyXDE1M1wxNjMiLCAiXHg2Mlx4NmNceDZmXDE0M1x4NmJcMTYzXDE2NFwxNDFceDc0XHg3NVx4NzMiLCAiXHg3M1x4NzRceDYxXDE2NFx4NzVcMTYzIiwgIlx4NmRceDY1XDE1NVx4NjJcMTQ1XHg3MlwxNTZcMTQxXDE1NVwxNDUiLCAiXDE2NFx4NzlcMTYwXHg2NVwxNTFceDY0IiktPndoZXJlKCJceDZkXHg2NVwxNTVceDYyXDE0NVwxNjJcMTYzXHg3MiIsICRtZW1iZXJzciktPndoZXJlKCJceDYzXDE1NFx4NzVceDYyXDEzN1x4NjlceDY0IiwgJHVzZXItPmNsdWJfaWQpLT5maXJzdCgpOyBpZiAoJG1lbWJlcikgeyAkbWVtYmVyLT5ibG9ja3N0YXR1cyA9IHN0cnRvdXBwZXIoJHJlcXVlc3QtPmJsb2Nrc3RhdHVzKTsgJG1lbWJlci0+cmVtYXJrcyA9IHN0cnRvdXBwZXIoJHJlcXVlc3QtPnJlbWFya3MpOyAkbWVtYmVyLT50b2RhdGUgPSAkcmVxdWVzdC0+dG9kYXRlOyAkbWVtYmVyLT5mcm9tZGF0ZSA9ICRyZXF1ZXN0LT5mcm9tZGF0ZTsgJG1lbWJlci0+dXBkYXRlZF9ieSA9ICR1c2VyX2lkOyAkbWVtYmVyLT5zYXZlKCk7ICRzZXNzaW9uTXNnU0EgPSBhcnJheSgiXDE0NVwxNzBcMTYwXDE2Mlx4NjVcMTYzXDE2M1x4NjlcMTU3XHg2ZSIgPT4gIlx4NTNcMTY1XHg2M1wxNDNcMTQ1XDE2M1wxNjNcNDEiLCAiXHg3NFx4NzlceDcwXHg2NSIgPT4gIlx4NzNcMTY1XHg2M1x4NjNceDY1XDE2M1wxNjMiLCAiXHg2ZFwxNDVceDczXHg3M1x4NjFceDY3XHg2NSIgPT4gIlx4NGRceDY1XDE1NVwxNDJceDY1XDE2Mlw0MFx4NzNcMTY0XDE0MVx4NzRcMTY1XHg3M1w0MFwxNjVcMTYwXDE0NFx4NjFceDc0XHg2NVx4NjRceDIwXHg3M1wxNjVceDYzXDE0M1x4NjVcMTYzXDE2M1x4NjZcMTY1XHg2Y1x4NmNcMTcxXDQxIik7IH0gZWxzZSB7ICRzZXNzaW9uTXNnU0EgPSBhcnJheSgiXDE0NVwxNzBcMTYwXHg3Mlx4NjVcMTYzXDE2M1x4NjlcMTU3XHg2ZSIgPT4gIlwxMTdceDcwXHg3MFx4NzNceDIxIiwgIlx4NzRceDc5XDE2MFx4NjUiID0+ICJceDY1XDE2MlwxNjJcMTU3XDE2MiIsICJceDZkXDE0NVx4NzNceDczXHg2MVx4NjdceDY1IiA9PiAiXDExNVx4NjVcMTU1XHg2Mlx4NjVceDcyXHgyMFx4NGVceDZmXHg3NFx4MjBceDQ2XHg2ZlwxNjVcMTU2XDE0NFx4MjEiKTsgfSB9IGNhdGNoIChcRXhjZXB0aW9uICRlKSB7ICR0aGlzLT5sb2dFcnJvcigkZSwgJHVzZXJfaWQsIF9fTUVUSE9EX18sIF9fTElORV9fKTsgJHNlc3Npb25Nc2dTQSA9IGFycmF5KCJceDY1XDE3MFx4NzBcMTYyXHg2NVwxNjNcMTYzXDE1MVx4NmZcMTU2IiA9PiAiXHg0ZlwxNjBceDcwXHg3M1x4MjEiLCAiXDE2NFwxNzFcMTYwXDE0NSIgPT4gIlx4NjVceDcyXDE2MlwxNTdceDcyIiwgIlwxNTVcMTQ1XHg3M1wxNjNceDYxXDE0N1wxNDUiID0+ICJceDUzXDE0NVwxNjJceDc2XDE0NVwxNjJcNDBcMTA1XDE2Mlx4NzJcMTU3XDE2Mlw1NFw0MFwxMjBcMTU0XDE0NVwxNDFcMTYzXDE0NVx4MjBcMTY0XHg3MlwxNzFceDIwXHg2MVx4NjdceDYxXHg2OVwxNTZceDIxIik7IH0gfSByZXR1cm4gdmlldygiXDE1NVwxNDVceDZkXHg2Mlx4NjVcMTYyXDE2M1w1Nlx4NzVcMTYwXHg2NFx4NjFcMTY0XDE0NVx4NWZceDczXDE2NFx4NjFcMTY0XDE2NVwxNjMiLCBhcnJheSgiXHg2ZFwxNDVceDZkXDE0MlwxNDVcMTYyIiA9PiAkbWVtYmVyLCAiXDE1NVx4NjVcMTU1XHg2MlwxNDVceDcyXHg2OVwxNDQiID0+ICRtZW1iZXJpZCwgIlwxNjNcMTY0XHg2MVx4NzRceDc1XHg3M1x4NjVcMTYzIiA9PiAkc3RhdHVzZXMsICJcMTQyXHg2Y1x4NmZceDYzXDE1M1wxMzdceDczXHg3NFx4NjFceDc0XDE2NVwxNjNceDY1XDE2MyIgPT4gJGJsb2NrX3N0YXR1c2VzLCAiXDE1NVwxNDVceDZkXHg2MlwxNDVceDcyIiA9PiAkbWVtYmVyLCAiXDE2M1x4NjVceDczXHg3M1wxNTFceDZmXDE1Nlx4NGRcMTYzXDE0NyIgPT4gbnVsbCwgIlx4NzNcMTQ1XHg3M1x4NzNceDY5XDE1N1wxNTZcMTE1XHg3M1wxNDdceDUzXHg0MSIgPT4gJHNlc3Npb25Nc2dTQSkpOyB9IHB1YmxpYyBmdW5jdGlvbiBlZGl0KCRtZW1iZXJpZCwgUmVxdWVzdCAkcmVxdWVzdCkgeyAkY2x1Yl9pZCA9IGF1dGgoKS0+dXNlcigpLT5jbHViX2lkOyAkbWVtYmVyID0gTWVtYmVyOjpnZXRNZW1iZXIoJG1lbWJlcmlkLCAkY2x1Yl9pZCk7ICRzdGF0dXNlcyA9IE1lbWJlcnNoaXBDb25zdHM6OlNUQVRVU0VTOyAkYmxvY2tfc3RhdHVzZXMgPSBNZW1iZXJzaGlwQ29uc3RzOjpCTE9DS19TVEFUVVNFUzsgJG90aGVyX3R5cGVzID0gTWVtYmVyc2hpcENvbnN0czo6VFlQRVM7ICRtZW1iZXJfdHlwZV9zdWJzID0gTWVtYmVyc2hpcENvbnN0czo6TUVNQkVSX1RZUEVfU1VCUzsgJGNhdGVnb3JpZXMgPSBNZW1iZXJDYXRlZ29yeTo6YWxsKCJcMTQzXHg2ZlwxNDRcMTQ1IiwgIlx4NjRceDY1XHg3MyIpOyAkY3JlZGl0X2FsbG93ZWQgPSBNZW1iZXJzaGlwQ29uc3RzOjpDUkVESVRfQUxMT1dFRDsgJHJlbGF0aW9ucyA9IE1lbWJlcnNoaXBDb25zdHM6OlJFTEFUSU9OUzsgJHNlc3Npb25Nc2cgPSBudWxsOyBpZiAoISRtZW1iZXIpIHsgcmV0dXJuIHJlZGlyZWN0KCktPnJvdXRlKCJceDZkXDE0NVx4NmRceDYyXDE0NVwxNjJceDJlXDE0M1wxNjJcMTQ1XDE0MVwxNjRceDY1IiktPndpdGgoIlx4NmRceDY1XDE1NVwxNDJceDY1XDE2MlwxNTFceDY0IiwgJG1lbWJlcmlkKS0+d2l0aCgiXHg2NVwxNjJceDcyXHg2ZlwxNjIiLCAiXDEyM1x4NmZcMTYyXHg3MlwxNzFceDIxXHgyMFx4NGRceDY1XDE1NVwxNDJceDY1XDE2Mlx4MjBceDNjXHg3M1wxNjRceDcyXHg2ZlwxNTZcMTQ3XHgzZXskbWVtYmVyaWR9XHgzY1w1N1wxNjNcMTY0XHg3MlwxNTdcMTU2XDE0N1w3Nlw0MFwxMTZceDZmXDE2NFw0MFx4NDZceDZmXHg3NVwxNTZcMTQ0Iik7IH0gcmV0dXJuIHZpZXcoIlwxNTVcMTQ1XHg2ZFx4NjJcMTQ1XDE2Mlx4NzNceDJlXHg2NVwxNDRcMTUxXDE2NCIsIGFycmF5KCJceDYzXHg2MVx4NzRcMTQ1XHg2N1wxNTdcMTYyXHg2OVx4NjVcMTYzIiA9PiAkY2F0ZWdvcmllcywgIlx4NzNceDc0XHg2MVwxNjRcMTY1XDE2M1x4NjVceDczIiA9PiAkc3RhdHVzZXMsICJceDYyXHg2Y1x4NmZcMTQzXDE1M1x4NWZcMTYzXHg3NFx4NjFceDc0XHg3NVx4NzNcMTQ1XDE2MyIgPT4gJGJsb2NrX3N0YXR1c2VzLCAiXHg2Zlx4NzRceDY4XDE0NVx4NzJcMTM3XDE2NFwxNzFceDcwXHg2NVwxNjMiID0+ICRvdGhlcl90eXBlcywgIlx4NmRceDY1XHg2ZFwxNDJcMTQ1XHg3Mlx4NWZcMTY0XDE3MVx4NzBceDY1XHg1ZlwxNjNcMTY1XDE0MlwxNjMiID0+ICRtZW1iZXJfdHlwZV9zdWJzLCAiXDE1NVx4NjVceDZkXHg2MlwxNDVceDcyIiA9PiAkbWVtYmVyLCAiXHg2ZFx4NjVcMTU1XDE0MlwxNDVcMTYyXDE1MVx4NjQiID0+ICRtZW1iZXJpZCwgIlwxNDNceDcyXHg2NVx4NjRceDY5XDE2NFwxMzdcMTQxXHg2Y1wxNTRcMTU3XDE2N1x4NjVcMTQ0IiA9PiAkY3JlZGl0X2FsbG93ZWQsICJcMTYyXHg2NVwxNTRceDYxXHg3NFx4NjlcMTU3XHg2ZVwxNjMiID0+ICRyZWxhdGlvbnMsICJceDczXDE0NVwxNjNceDczXDE1MVwxNTdcMTU2XHg0ZFwxNjNcMTQ3IiA9PiAkc2Vzc2lvbk1zZykpOyB9IHB1YmxpYyBmdW5jdGlvbiB1cGRhdGUoJG1lbWJlcnNyLCBSZXF1ZXN0ICRyZXF1ZXN0KSB7ICR0aGlzLT52YWxpZGF0ZURhdGEodHJ1ZSk7ICRtZW1iZXJpZCA9IHN0cnRvdXBwZXIoJHJlcXVlc3QtPm1lbWJlcmlkKTsgJG1lbWJlciA9IG51bGw7IHRyeSB7ICRtZW1iZXIgPSBNZW1iZXI6OmZpbmQoJG1lbWJlcnNyKTsgaWYgKCEkbWVtYmVyKSB7IHRocm93IG5ldyBcRXhjZXB0aW9uKCJceDQ5XDE1Nlx4NzZceDYxXDE1NFwxNTFcMTQ0XHgyMFx4NGRceDY1XDE1NVwxNDJcMTQ1XHg3MiIpOyB9ICRtZW1iZXJpZF9leGlzdHMgPSBNZW1iZXI6OndoZXJlKCJcMTU1XHg2NVx4NmRceDYyXHg2NVwxNjJcMTUxXDE0NCIsICRtZW1iZXJpZCktPndoZXJlKCJceDZkXHg2NVwxNTVcMTQyXDE0NVx4NzJcMTYzXDE2MiIsICJcNDFcNzUiLCAkbWVtYmVyc3IpLT5maXJzdCgpOyBpZiAoJG1lbWJlcmlkX2V4aXN0cykgeyB0aHJvdyBuZXcgXEV4Y2VwdGlvbigiXHg0ZFx4NjVcMTU1XHg2Mlx4NjVcMTYyXDQwXDExMVx4NDRceDIwXDEwMVwxNTRceDcyXHg2NVx4NjFcMTQ0XHg3OVx4MjBcMTI0XHg2MVx4NmJcMTQ1XDE1NiIpOyB9IH0gY2F0Y2ggKFxFeGNlcHRpb24gJGUpIHsgJHRoaXMtPmxvZ0Vycm9yKCRlLCAkcmVxdWVzdC0+dXNlcigpLT5pZCwgX19NRVRIT0RfXywgX19MSU5FX18pOyAkdmFsaWRhdG9yID0gVmFsaWRhdG9yOjptYWtlKGFycmF5KCksIGFycmF5KCkpOyAkdmFsaWRhdG9yLT5lcnJvcnMoKS0+YWRkKCJceDZkXHg2NVx4NmRceDYyXHg2NVx4NzJcMTUxXHg2NCIsICRlLT5nZXRNZXNzYWdlKCkpOyB0aHJvdyBuZXcgVmFsaWRhdGlvbkV4Y2VwdGlvbigkdmFsaWRhdG9yKTsgfSBpZiAoc3RyX3N0YXJ0c193aXRoKCRtZW1iZXItPm1lbWJlcmlkLCAiXDEyMiIpKSB7ICRtZW1iZXJpZCA9ICRtZW1iZXItPm1lbWJlcmlkOyB9IGVsc2UgeyBpZiAoc3RyX3N0YXJ0c193aXRoKCRtZW1iZXItPm1lbWJlcmlkLCAiXDEyNCIpICYmICFzdHJfc3RhcnRzX3dpdGgoJG1lbWJlcmlkLCAiXDEyNCIpKSB7ICR4ID0gZXhwbG9kZSgiXDU1IiwgJG1lbWJlcmlkKTsgJG1fZnAgPSAkeFswXSA9PSAiXHg1MiIgPyAiXDEyMiIgOiAiXHg1NCI7ICRtX3NwID0gZXhwbG9kZSgiXDU1IiwgJG1lbWJlci0+bWVtYmVyaWQpWzFdOyAkbWVtYmVyaWQgPSAieyRtX2ZwfVx4MmR7JG1fc3B9IjsgfSB9IERCOjpiZWdpblRyYW5zYWN0aW9uKCk7IHRyeSB7ICR1cGRhdGVkX2J5ID0gYXV0aCgpLT51c2VyKCktPmlkOyAkbWVtYmVyaWQgPSBzdHJfcmVwbGFjZSgiXHgyMCIsICcnLCAkcmVxdWVzdC0+bWVtYmVyaWQpOyAkbWVtYmVycGljX2ZpbGVuYW1lID0gJG1lbWJlci0+cGljdHVyZTsgJG1lbWJlcnNpZ25fZmlsZW5hbWUgPSAkbWVtYmVyLT5zaWduYXR1cmU7IGlmICgkcmVxdWVzdC0+aGFzRmlsZSgiXHg2ZFwxNDVcMTU1XHg2MlwxNDVceDcyXDE2MFwxNTFcMTQzIikpIHsgJGV4dGVuc2lvbiA9ICRyZXF1ZXN0LT5maWxlKCJcMTU1XHg2NVx4NmRceDYyXDE0NVwxNjJcMTYwXHg2OVwxNDMiKS0+ZXh0ZW5zaW9uKCk7ICRtZW1iZXJwaWNfZmlsZW5hbWUgPSAkbWVtYmVyaWQgLiAiXDU1XHg3MFx4MmQiIC4gJG1lbWJlcnNyIC4gIlx4MmUiIC4gJGV4dGVuc2lvbjsgJHJlcXVlc3QtPm1lbWJlcnBpYy0+c3RvcmVBcygkdGhpcy0+aW1hZ2VzUGF0aCwgJG1lbWJlcnBpY19maWxlbmFtZSwgIlwxNjBcMTY1XHg2MlwxNTRcMTUxXHg2MyIpOyB9IGlmICgkcmVxdWVzdC0+aGFzRmlsZSgiXHg2ZFwxNDVceDZkXDE0MlwxNDVceDcyXHg3M1wxNTFcMTQ3XDE1NiIpKSB7ICRleHRlbnNpb24gPSAkcmVxdWVzdC0+ZmlsZSgiXHg2ZFwxNDVceDZkXDE0Mlx4NjVceDcyXDE2M1x4NjlcMTQ3XDE1NiIpLT5leHRlbnNpb24oKTsgJG1lbWJlcnNpZ25fZmlsZW5hbWUgPSAkbWVtYmVyaWQgLiAiXHgyZFx4NzNcNTUiIC4gJG1lbWJlcnNyIC4gIlx4MmUiIC4gJGV4dGVuc2lvbjsgJHJlcXVlc3QtPm1lbWJlcnNpZ24tPnN0b3JlQXMoJHRoaXMtPmltYWdlc1BhdGgsICRtZW1iZXJzaWduX2ZpbGVuYW1lLCAiXDE2MFwxNjVcMTQyXHg2Y1wxNTFceDYzIik7IH0gJHBhcmVudF9tZW1iZXJzciA9IG51bGw7IGlmICgkcmVxdWVzdC0+cGFyZW50X21lbWJlcmlkKSB7ICRwYXJlbnRfbWVtYmVyID0gTWVtYmVyOjp3aGVyZSgiXHg2ZFx4NjVcMTU1XHg2Mlx4NjVcMTYyXDE1MVx4NjQiLCBzdHJ0b3VwcGVyKCRyZXF1ZXN0LT5wYXJlbnRfbWVtYmVyaWQpKS0+Zmlyc3QoIlx4NmRcMTQ1XDE1NVwxNDJcMTQ1XDE2Mlx4NzNcMTYyIik7ICRwYXJlbnRfbWVtYmVyc3IgPSAkcGFyZW50X21lbWJlci0+bWVtYmVyc3I7IH0gTWVtYmVyOjpmaW5kKCRtZW1iZXJzciktPnVwZGF0ZShhcnJheSgiXHg2M1wxNDFcMTY0XHg2NVwxNDdcMTU3XDE2Mlx4NzlceDY5XDE0NCIgPT4gJHJlcXVlc3QtPmNhdGVnb3J5aWQsICJcMTY0XDE3MVwxNjBceDY1XHg2OVwxNDQiID0+ICRyZXF1ZXN0LT50eXBlaWQsICJcMTU1XDE0NVwxNTVcMTQyXDE0NVx4NzJcMTU2XHg2MVx4NmRcMTQ1IiA9PiAkcmVxdWVzdC0+bWVtYmVybmFtZSwgIlwxNTVcMTQ1XDE1NVx4NjJceDY1XHg3MlwxNDZceDZlXDE0MVwxNTVceDY1IiA9PiAkcmVxdWVzdC0+bWVtYmVyZm5hbWUsICJceDYzXHg2ZVwxNTFceDYzIiA9PiAkcmVxdWVzdC0+Y25pYywgIlx4NjNcMTU2XDE1MVx4NjNcMTM3XHg2NVx4NzhceDcwXHg2OVwxNjJceDc5XDEzN1x4NjRcMTQxXDE2NFx4NjUiID0+ICRyZXF1ZXN0LT5jbmljX2V4cGlyeV9kYXRlLCAiXHg3MFwxNDFcMTU2XHg2ZiIgPT4gJHJlcXVlc3QtPnBhbm8sICJcMTU3XHg2M1x4NjNcMTY1XHg3MFwxNDFcMTY0XHg2OVwxNTdcMTU2XDE1MVwxNDQiID0+ICRyZXF1ZXN0LT5vY2N1cGF0aW9uaWQsICJcMTYyXHg2MVwxNTZceDZiIiA9PiAkcmVxdWVzdC0+cmFuaywgIlx4NjRcMTQ1XDE2MFwxNDFceDcyXDE2NFx4NmRcMTQ1XDE1Nlx4NzQiID0+ICRyZXF1ZXN0LT5kZXBhcnRtZW50LCAiXHg2ZlwxNjJceDY3XDE0MVwxNTZcMTUxXHg3M1wxNDFceDc0XHg2OVx4NmZcMTU2IiA9PiAkcmVxdWVzdC0+b3JnYW5pc2F0aW9uLCAiXHg2NFx4NmZceDYyIiA9PiAkcmVxdWVzdC0+ZG9iLCAiXDE1NVx4NjFcMTYyXHg3MlwxNTFcMTQ1XHg2NCIgPT4gJHJlcXVlc3QtPm1hcnJpZWQsICJceDZmXHg3NFx4NjhceDY1XHg3MlwxNTFceDZlXHg2NlwxNTciID0+ICRyZXF1ZXN0LT5vdGhlcmluZm8sICJcMTU1XDE0NVwxNTVcMTQyXDE0NVwxNjJceDc0XDE3MVwxNjBceDY1IiA9PiAkcmVxdWVzdC0+bWVtYmVydHlwZSwgIlwxNjNcMTY0XDE0MVwxNjRcMTY1XHg3MyIgPT4gJHJlcXVlc3QtPnN0YXR1cywgIlx4NmRcMTQ1XHg2ZFx4NjJcMTQ1XDE2Mlx4NzNceDY4XDE1MVx4NzBcMTQ0XHg2MVx4NzRcMTQ1IiA9PiAkcmVxdWVzdC0+bWVtYmVyc2hpcGRhdGUsICJcMTQzXHg2MVx4NzJcMTQ0XDE1MVx4NzNceDczXDE2NVwxNDVcMTQ0XDE0MVx4NzRcMTQ1IiA9PiAkcmVxdWVzdC0+Y2FyZGlzc3VlZGF0ZSwgIlx4NjNceDYxXHg3MlwxNDRcMTQ1XDE3MFx4NzBceDY5XHg3MlwxNzFcMTQ0XHg2MVx4NzRcMTQ1IiA9PiAkcmVxdWVzdC0+Y2FyZGV4cGlyeWRhdGUsICJceDcwXHg2OFx4NmZcMTU2XHg2NVwxNTdceDY2XDE0NlwxNTFceDYzXDE0NSIgPT4gJHJlcXVlc3QtPnBob25lb2ZmaWNlLCAiXHg3MFwxNTBceDZmXDE1NlwxNDVcMTYyXDE0NVx4NzNcMTUxXDE0NFwxNDVceDZlXHg2M1wxNDUiID0+ICRyZXF1ZXN0LT5waG9uZXJlc2lkZW5jZSwgIlx4NmRcMTQxXDE1MVx4NmNceDY5XDE1Nlx4NjdceDYxXDE0NFx4NjRcMTYyXDE0NVwxNjNcMTYzIiA9PiAkcmVxdWVzdC0+bWFpbGluZ2FkZHJlc3MsICJcMTY3XDE1N1x4NzJcMTUzXDE1MVx4NmVcMTQ3XDE0MVwxNDRceDY0XDE2MlwxNDVcMTYzXDE2MyIgPT4gJHJlcXVlc3QtPndvcmtpbmdhZGRyZXNzLCAiXHg2ZFx4NmZceDYyXDE1MVwxNTRceDY1XHg2ZVwxNTciID0+ICRyZXF1ZXN0LT5tb2JpbGVubywgIlx4NmRceDZmXHg2Mlx4NjlceDZjXHg2NVx4NmVceDZmXHgzMiIgPT4gJHJlcXVlc3QtPm1vYmlsZW5vMiwgIlx4NjZceDYxXDE3MCIgPT4gJHJlcXVlc3QtPmZheCwgIlwxNDVcMTU1XHg2MVwxNTFcMTU0IiA9PiAkcmVxdWVzdC0+ZW1haWwsICJcMTYwXDE1MVx4NjNcMTY0XDE2NVx4NzJceDY1IiA9PiAkbWVtYmVycGljX2ZpbGVuYW1lLCAiXHg3M1x4NjlcMTQ3XHg2ZVx4NjFcMTY0XDE2NVx4NzJcMTQ1IiA9PiAkbWVtYmVyc2lnbl9maWxlbmFtZSwgIlwxNjVceDcwXDE0NFx4NjFcMTY0XDE0NVwxNDRcMTM3XDE0Mlx4NzkiID0+ICR1cGRhdGVkX2J5LCAiXDE2MFwxNDFceDcyXHg2NVx4NmVceDc0XDEzN1x4NmRcMTQ1XHg2ZFx4NjJceDY1XDE2Mlx4NzNcMTYyIiA9PiAkcGFyZW50X21lbWJlcnNyKSk7IERCOjpjb21taXQoKTsgcmV0dXJuIHJlZGlyZWN0KCktPnRvKHJvdXRlKCJceDZkXHg2NVwxNTVcMTQyXHg2NVwxNjJceDJlXHg2NVx4NjRcMTUxXDE2NCIsIGFycmF5KCJcMTU1XHg2NVwxNTVcMTQyXDE0NVx4NzJcMTUxXHg2NCIgPT4gJG1lbWJlcmlkKSkpLT53aXRoKCJcMTYzXDE2NVx4NjNcMTQzXHg2NVwxNjNceDczIiwgIlwxMTVcMTQ1XDE1NVx4NjJcMTQ1XHg3Mlx4MjBceDU1XDE2MFx4NjRceDYxXHg3NFx4NjVcMTQ0XHgyMFx4NzNceDc1XDE0M1x4NjNcMTQ1XHg3M1wxNjNcMTQ2XHg3NVwxNTRcMTU0XHg3OVw0MSIpOyB9IGNhdGNoIChcRXhjZXB0aW9uICRlKSB7IERCOjpyb2xsQmFjaygpOyAkdGhpcy0+bG9nRXJyb3IoJGUsICRyZXF1ZXN0LT51c2VyKCktPmlkLCBfX01FVEhPRF9fLCBfX0xJTkVfXyk7ICRzd2VldEFsZXJ0ID0gYXJyYXkoIlwxNjRceDc5XHg3MFx4NjUiID0+ICJcMTQ1XHg3Mlx4NzJcMTU3XHg3MiIsICJcMTQ1XHg3OFwxNjBceDcyXDE0NVwxNjNcMTYzXDE1MVx4NmZcMTU2IiA9PiAiXHg0ZlwxNjBceDcwXDE2M1x4MjEiLCAiXDE1NVwxNDVceDczXDE2M1wxNDFcMTQ3XDE0NSIgPT4gJGUtPmdldE1lc3NhZ2UoKSk7IHJldHVybiByZWRpcmVjdCgpLT5iYWNrKCktPndpdGgoIlx4NzNceDc3XHg2NVx4NjVcMTY0XDEwMVwxNTRceDY1XHg3Mlx4NzQiLCAkc3dlZXRBbGVydCk7IH0gfSBwcml2YXRlIGZ1bmN0aW9uIHZhbGlkYXRlRGF0YSgkYW5fdXBkYXRlID0gZmFsc2UpIHsgJHJ1bGVzID0gYXJyYXkoIlwxNDNcMTU0XDE2NVwxNDJcMTM3XDE1MVwxNDQiID0+ICJceDcyXHg2NVx4NzFceDc1XHg2OVx4NzJceDY1XHg2NFx4N2NceDY1XDE3MFx4NjlceDczXDE2NFwxNjNcNzJcMTQzXDE1NFx4NzVceDYyXHg3M1x4MmNcMTUxXHg2NCIsICJcMTQzXHg2MVwxNjRceDY1XDE0N1x4NmZcMTYyXHg3OVx4NjlcMTQ0IiA9PiAiXDE2Mlx4NjVceDcxXHg3NVwxNTFcMTYyXDE0NVx4NjRceDdjXDE0NVx4NzhceDY5XHg3M1x4NzRceDczXHgzYVwxNTVceDY1XDE1NVwxNDJcMTQ1XDE2Mlx4NjNcMTQxXHg3NFwxNDVcMTQ3XHg2Zlx4NzJcMTcxXDU0XHg2M1x4NmZcMTQ0XDE0NSIsICJceDc0XDE3MVx4NzBceDY1XHg2OVwxNDQiID0+ICJcMTYyXDE0NVwxNjFceDc1XDE1MVx4NzJcMTQ1XHg2NFx4N2NcMTQ1XHg3OFx4NjlcMTYzXDE2NFx4NzNcNzJceDZkXHg2NVx4NmRcMTQyXHg2NVx4NzJceDc0XHg3OVwxNjBcMTQ1XHg3M1w1NFwxNDNceDZmXHg2NFwxNDUiLCAiXDE1NVwxNDVceDZkXDE0MlwxNDVceDcyXDE1NlwxNDFcMTU1XHg2NSIgPT4gIlwxNjJceDY1XHg3MVx4NzVcMTUxXHg3Mlx4NjVcMTQ0XDE3NFwxNTVcMTQxXDE3MFw3Mlw2MVx4MzBcNjAiLCAiXDE1NVx4NjVceDZkXDE0Mlx4NjVceDcyXDE0NlwxNTZcMTQxXHg2ZFwxNDUiID0+ICJcMTU2XDE2NVx4NmNceDZjXDE0MVwxNDJceDZjXDE0NVwxNzRceDZkXDE0MVx4NzhceDNhXHgzMVw2MFw2MCIsICJcMTQzXDE1NlwxNTFceDYzIiA9PiAiXHg3Mlx4NjVcMTYxXHg3NVx4NjlcMTYyXHg2NVx4NjRceDdjXDE1NVwxNDFceDc4XHgzYVw2Mlx4MzAiLCAiXDE2MFwxNDFcMTU2XDE1NyIgPT4gIlwxNTZcMTY1XDE1NFwxNTRcMTQxXDE0Mlx4NmNcMTQ1XDE3NFwxNTVceDYxXHg3OFw3Mlx4MzgiLCAiXDE1N1x4NjNcMTQzXDE2NVwxNjBceDYxXHg3NFwxNTFcMTU3XHg2ZVx4NjlcMTQ0IiA9PiAiXDE1Nlx4NzVcMTU0XHg2Y1wxNDFceDYyXDE1NFx4NjVcMTc0XDE0NVwxNzBceDY5XHg3M1x4NzRcMTYzXDcyXDE1NVwxNDVceDZkXDE0MlwxNDVcMTYyXHg2Zlx4NjNceDYzXHg3NVx4NzBcMTQxXHg3NFx4NjlceDZmXDE1Nlx4MmNcMTQzXHg2Zlx4NjRcMTQ1IiwgIlwxNjJceDYxXDE1Nlx4NmIiID0+ICJcMTU2XDE2NVx4NmNceDZjXHg2MVwxNDJceDZjXDE0NVwxNzRcMTU1XDE0MVwxNzBcNzJcNjJceDM1XHgzNSIsICJcMTQ0XHg2NVwxNjBcMTQxXHg3Mlx4NzRceDZkXDE0NVwxNTZcMTY0IiA9PiAiXHg2ZVwxNjVcMTU0XDE1NFx4NjFceDYyXDE1NFx4NjVcMTc0XHg2ZFx4NjFcMTcwXHgzYVw2Mlw2MFx4MzAiLCAiXDE1N1x4NzJcMTQ3XHg2MVx4NmVceDY5XDE2M1x4NjFcMTY0XDE1MVx4NmZcMTU2IiA9PiAiXHg2ZVx4NzVceDZjXDE1NFx4NjFceDYyXHg2Y1x4NjVcMTc0XDE1NVwxNDFceDc4XHgzYVx4MzFcNjBceDMwIiwgIlx4NjRceDZmXHg2MiIgPT4gIlwxNjJcMTQ1XDE2MVx4NzVcMTUxXHg3Mlx4NjVcMTQ0XDE3NFx4NjRceDYxXHg3NFwxNDVcMTM3XDE0NlwxNTdceDcyXDE1NVx4NjFceDc0XDcyXHg1OVw1NVwxNTVceDJkXHg2NCIsICJceDZkXHg2MVwxNjJceDcyXDE1MVx4NjVceDY0IiA9PiAiXHg2ZVwxNjVceDZjXHg2Y1wxNDFceDYyXHg2Y1wxNDUiLCAiXHg2ZlwxNjRceDY4XHg2NVwxNjJceDY5XDE1Nlx4NjZceDZmIiA9PiAiXHg2ZVx4NzVcMTU0XHg2Y1wxNDFceDYyXHg2Y1wxNDVceDdjXHg2ZFwxNDFceDc4XDcyXDYxXHgzMFx4MzAiLCAiXHg2ZFwxNDVceDZkXHg2MlwxNDVceDcyXDE2NFwxNzFcMTYwXDE0NSIgPT4gYXJyYXkoIlwxNTZceDc1XHg2Y1wxNTRcMTQxXDE0MlwxNTRcMTQ1IiwgVmFsaWRhdGlvblJ1bGU6OmluKE1lbWJlcnNoaXBDb25zdHM6OlRZUEUpKSwgIlx4NmRceDY1XDE1NVwxNDJcMTQ1XHg3MlwxNjBcMTUxXDE0MyIgPT4gIlwxNTZceDc1XHg2Y1x4NmNceDYxXHg2MlwxNTRcMTQ1XHg3Y1x4NjlceDZkXDE0MVx4NjdcMTQ1XDE3NFx4NmRcMTUxXDE1NVwxNDVceDczXHgzYVwxNTJceDcwXDE0NVwxNDdcNTRceDZhXDE2MFx4NjdcNTRcMTYwXHg2ZVx4NjdceDJjXDE0Mlx4NmRceDcwXDE3NFx4NmRceDYxXHg3OFx4M2FceDMxXHgzMFw2Mlw2NCIsICJcMTU1XDE0NVx4NmRceDYyXHg2NVx4NzJceDczXDE1MVwxNDdceDZlIiA9PiAiXHg2ZVx4NzVceDZjXDE1NFx4NjFcMTQyXDE1NFwxNDVcMTc0XHg2OVx4NmRceDYxXHg2N1wxNDVceDdjXDE1NVwxNTFcMTU1XHg2NVwxNjNcNzJcMTUyXDE2MFx4NjVcMTQ3XDU0XHg2YVx4NzBcMTQ3XHgyY1wxNjBceDZlXDE0N1x4MmNcMTQyXDE1NVwxNjBcMTc0XHg2ZFwxNDFceDc4XHgzYVx4MzFceDMwXDYyXHgzNCIsICJceDczXDE2NFx4NjFcMTY0XDE2NVwxNjMiID0+IGFycmF5KCJceDZlXDE2NVwxNTRceDZjXDE0MVwxNDJcMTU0XDE0NSIsIFZhbGlkYXRpb25SdWxlOjppbihNZW1iZXJzaGlwQ29uc3RzOjpTVEFUVVMpKSwgIlwxNTVceDY1XDE1NVwxNDJceDY1XDE2Mlx4NzNceDY4XHg2OVwxNjBceDY0XHg2MVwxNjRceDY1IiA9PiAiXHg2ZVwxNjVcMTU0XHg2Y1x4NjFcMTQyXHg2Y1wxNDVcMTc0XDE0NFx4NjFcMTY0XHg2NVx4NWZceDY2XDE1N1x4NzJcMTU1XDE0MVx4NzRceDNhXHg1OVw1NVwxNTVceDJkXHg2NCIsICJcMTQzXHg2MVx4NzJcMTQ0XHg2OVx4NzNcMTYzXDE2NVx4NjVceDY0XDE0MVwxNjRcMTQ1IiA9PiAiXDE1Nlx4NzVcMTU0XHg2Y1x4NjFcMTQyXHg2Y1wxNDVceDdjXDE0NFwxNDFceDc0XHg2NVwxMzdceDY2XHg2Zlx4NzJcMTU1XDE0MVx4NzRcNzJcMTMxXHgyZFwxNTVcNTVcMTQ0IiwgIlx4NjNceDYxXHg3MlwxNDRceDY1XDE3MFwxNjBceDY5XHg3MlwxNzFcMTQ0XHg2MVwxNjRcMTQ1IiA9PiAiXDE1Nlx4NzVcMTU0XHg2Y1wxNDFcMTQyXDE1NFx4NjVcMTc0XHg2NFx4NjFcMTY0XDE0NVx4NWZceDY2XDE1N1wxNjJcMTU1XHg2MVwxNjRcNzJceDU5XDU1XDE1NVw1NVx4NjQiLCAiXHg3MFwxNTBcMTU3XDE1Nlx4NjVcMTU3XHg2Nlx4NjZceDY5XHg2M1x4NjUiID0+ICJcMTU2XHg3NVwxNTRceDZjXDE0MVwxNDJceDZjXDE0NVx4N2NcMTU1XHg2MVwxNzBceDNhXDY2XHgzMCIsICJceDcwXDE1MFx4NmZceDZlXDE0NVx4NzJcMTQ1XHg3M1wxNTFcMTQ0XDE0NVwxNTZcMTQzXDE0NSIgPT4gIlx4NmVceDc1XDE1NFwxNTRcMTQxXHg2MlwxNTRceDY1XHg3Y1wxNTVceDYxXDE3MFx4M2FcNjZcNjAiLCAiXDE1NVwxNDFceDY5XDE1NFwxNTFceDZlXHg2N1wxNDFceDY0XHg2NFwxNjJcMTQ1XDE2M1x4NzMiID0+ICJcMTU2XHg3NVwxNTRceDZjXDE0MVwxNDJceDZjXDE0NVwxNzRceDZkXHg2MVx4NzhcNzJceDM1XDYwXHgzMCIsICJcMTY3XHg2ZlwxNjJceDZiXDE1MVx4NmVceDY3XHg2MVx4NjRcMTQ0XDE2MlwxNDVceDczXHg3MyIgPT4gIlwxNTZcMTY1XDE1NFwxNTRcMTQxXHg2Mlx4NmNceDY1XDE3NFx4NmRcMTQxXDE3MFw3Mlw2NVx4MzBceDMwIiwgIlx4NmRcMTU3XDE0Mlx4NjlceDZjXDE0NVx4NmVcMTU3IiA9PiAiXDE1NlwxNjVceDZjXDE1NFwxNDFcMTQyXDE1NFx4NjVceDdjXHg2ZFx4NjFceDc4XHgzYVw2Mlw2MCIsICJcMTU1XHg2ZlwxNDJcMTUxXHg2Y1x4NjVcMTU2XHg2Zlx4MzIiID0+ICJcMTU2XHg3NVx4NmNcMTU0XDE0MVx4NjJcMTU0XHg2NVx4N2NcMTU1XDE0MVx4NzhceDNhXHgzMVx4MzBcNjAiLCAiXDE0Nlx4NjFceDc4IiA9PiAiXDE1Nlx4NzVceDZjXDE1NFwxNDFcMTQyXHg2Y1x4NjVceDdjXHg2ZFwxNDFcMTcwXHgzYVx4MzJceDMwIiwgIlwxNDVceDZkXDE0MVwxNTFcMTU0IiA9PiAiXHg2ZVx4NzVceDZjXHg2Y1x4NjFceDYyXDE1NFwxNDVceDdjXDE0NVx4NmRceDYxXDE1MVwxNTRceDdjXDE1NVwxNDFceDc4XDcyXDY1XHgzMCIsICJceDcwXDE0MVx4NzJcMTQ1XDE1NlwxNjRceDVmXDE1NVx4NjVcMTU1XHg2Mlx4NjVcMTYyXDE1MVx4NjQiID0+ICJceDZlXDE2NVx4NmNceDZjXDE0MVx4NjJceDZjXHg2NVwxNzRceDY1XHg3OFx4NjlceDczXHg3NFx4NzNceDNhXHg2ZFwxNDVcMTU1XDE0MlwxNDVceDcyXHg2OVwxNTZceDY2XHg2Zlx4MmNceDZkXDE0NVx4NmRcMTQyXHg2NVwxNjJcMTUxXDE0NCIsICJceDYzXDE1Nlx4NjlceDYzXDEzN1wxNDVcMTcwXDE2MFwxNTFcMTYyXDE3MVwxMzdcMTQ0XHg2MVx4NzRceDY1IiA9PiAiXHg2ZVx4NzVceDZjXHg2Y1x4NjFceDYyXDE1NFx4NjVceDdjXDE0NFx4NjFcMTY0XHg2NVwxMzdcMTQ2XDE1N1wxNjJceDZkXHg2MVwxNjRcNzJcMTMxXHgyZFx4NmRceDJkXDE0NCIpOyBpZiAoISRhbl91cGRhdGUpIHsgJHJ1bGVzWyJceDZkXHg2NVx4NmRcMTQyXHg2NVx4NzJceDY5XHg2NCJdID0gIlwxNjJceDY1XHg3MVx4NzVcMTUxXHg3MlwxNDVcMTQ0XHg3Y1wxNjVceDZlXDE1MVx4NzFceDc1XHg2NVw3Mlx4NmRceDY1XDE1NVx4NjJcMTQ1XHg3MlwxNTFceDZlXHg2Nlx4NmZceDJjXDE1NVx4NjVceDZkXHg2Mlx4NjVceDcyXDE1MVx4NjQiOyB9IHJldHVybiByZXF1ZXN0KCktPnZhbGlkYXRlKCRydWxlcywgYXJyYXkoIlwxNTVcMTQ1XHg2ZFwxNDJcMTQ1XDE2MlwxNTFcMTQ0XDU2XDE2MlwxNDVceDcxXHg3NVwxNTFceDcyXHg2NVx4NjQiID0+ICJceDRkXHg2NVwxNTVceDYyXDE0NVx4NzJcNDBcMTExXDEwNFx4MjBcMTUxXDE2M1w0MFx4NzJcMTQ1XHg3MVwxNjVceDY5XHg3Mlx4NjVceDY0XDU2IiwgIlwxNTVcMTQ1XHg2ZFx4NjJcMTQ1XHg3Mlx4NjlcMTQ0XHgyZVx4NzVceDZlXDE1MVx4NzFcMTY1XHg2NSIgPT4gIlwxMTVcMTQ1XDE1NVwxNDJcMTQ1XHg3Mlw0MFx4NDlceDQ0XHgyMFwxNDFceDZjXDE2Mlx4NjVceDYxXHg2NFwxNzFcNDBcMTY0XDE0MVwxNTNcMTQ1XDE1Nlx4MmUiLCAiXDE0M1wxNTRcMTY1XDE0MlwxMzdceDY5XDE0NFx4MmVceDY1XDE3MFwxNTFcMTYzXDE2NFwxNjMiID0+ICJceDQ5XHg2ZVwxNjZceDYxXDE1NFwxNTFcMTQ0XHgyMFx4NDNceDZjXDE2NVx4NjIiLCAiXDE2NFwxNzFcMTYwXDE0NVwxNTFcMTQ0XDU2XHg3MlwxNDVcMTYxXHg3NVwxNTFcMTYyXDE0NVwxNDQiID0+ICJcMTIyXHg2NVx4NzFceDc1XDE1MVwxNjJceDY1XDE0NCIsICJceDc0XHg3OVwxNjBcMTQ1XDE1MVx4NjRceDJlXHg2NVx4NzhceDY5XDE2M1wxNjRcMTYzIiA9PiAiXHg0OVx4NmVceDc2XDE0MVx4NmNcMTUxXHg2NFw0MFwxMjRcMTcxXHg3MFx4NjUiLCAiXHg2M1wxNDFcMTY0XDE0NVwxNDdcMTU3XDE2MlwxNzFceDY5XHg2NFw1NlwxNjJcMTQ1XHg3MVx4NzVcMTUxXDE2MlwxNDVceDY0IiA9PiAiXDEwM1wxNDFceDc0XHg3NFx4NjVcMTQ3XDE1N1wxNjJceDc5XHgyMFx4NjlcMTYzXDQwXHg3MlwxNDVcMTYxXHg3NVwxNTFceDcyXHg2NVwxNDQiLCAiXDE0M1x4NjFceDc0XHg2NVwxNDdceDZmXDE2MlwxNzFceDY5XHg2NFx4MmVcMTQ1XDE3MFwxNTFcMTYzXDE2NFwxNjMiID0+ICJcMTExXDE1NlwxNjZcMTQxXDE1NFx4NjlcMTQ0XHgyMFwxMDNceDYxXHg3NFx4NzRcMTQ1XHg2N1wxNTdceDcyXHg3OSIsICJcMTU1XHg2NVwxNTVceDYyXDE0NVx4NzJcMTU2XHg2MVwxNTVcMTQ1XDU2XHg3MlwxNDVceDcxXDE2NVx4NjlcMTYyXHg2NVwxNDQiID0+ICJceDRkXHg2NVwxNTVcMTQyXDE0NVx4NzJceDIwXDE1Nlx4NjFcMTU1XDE0NVw0MFx4NjlceDczXHgyMFx4NzJcMTQ1XDE2MVx4NzVcMTUxXDE2MlwxNDVceDY0IiwgIlx4NjNceDZlXDE1MVx4NjNcNTZceDcyXDE0NVx4NzFceDc1XHg2OVx4NzJceDY1XDE0NCIgPT4gIlwxMDNcMTE2XHg0OVx4NDNceDIwXDE1MVwxNjNcNDBceDcyXHg2NVwxNjFcMTY1XDE1MVwxNjJcMTQ1XDE0NCIsICJceDZmXDE0M1x4NjNceDc1XHg3MFwxNDFceDc0XDE1MVwxNTdcMTU2XHg2OVwxNDRcNTZcMTQ1XHg3OFx4NjlceDczXDE2NFx4NzMiID0+ICJcMTExXHg2ZVwxNjZcMTQxXHg2Y1wxNTFceDY0XDQwXHg1MFwxNjJcMTU3XHg2NlwxNDVcMTYzXHg3M1wxNTFcMTU3XHg2ZSIsICJceDY0XDE1N1x4NjJcNTZcMTYyXDE0NVwxNjFcMTY1XDE1MVwxNjJcMTQ1XHg2NCIgPT4gIlx4NDRcMTQxXHg3NFwxNDVceDIwXDE1N1wxNDZceDIwXHg2MlwxNTFcMTYyXDE2NFx4NjhceDIwXDE1MVx4NzNceDIwXDE2MlwxNDVceDcxXDE2NVx4NjlceDcyXDE0NVx4NjQiLCAiXDE1NVwxNDVceDZkXDE0MlwxNDVcMTYyXHg3NFx4NzlcMTYwXHg2NVw1Nlx4NjlcMTU2IiA9PiAiXDExMVx4NmVcMTY2XDE0MVwxNTRcMTUxXDE0NFx4MjBceDU0XDE3MVx4NzBcMTQ1IiwgIlwxNjNceDc0XHg2MVx4NzRceDc1XDE2M1w1NlwxNTFcMTU2IiA9PiAiXHg0OVx4NmVceDc2XHg2MVwxNTRcMTUxXHg2NFw0MFwxMjNcMTY0XDE0MVwxNjRceDc1XHg3MyIsICJceDJhXDU2XHg2NFwxNDFcMTY0XDE0NVx4NWZceDY2XHg2Zlx4NzJceDZkXDE0MVwxNjQiID0+ICJceDQ5XHg2ZVx4NzZceDYxXDE1NFwxNTFceDY0XHgyMFx4NDRcMTQxXDE2NFx4NjUiKSk7IH0gcHVibGljIGZ1bmN0aW9uIHNlYXJjaCgpIHsgJHN0YXR1c2VzID0gTWVtYmVyc2hpcENvbnN0czo6U1RBVFVTRVM7ICRibG9ja19zdGF0dXNlcyA9IE1lbWJlcnNoaXBDb25zdHM6OkJMT0NLX1NUQVRVU0VTOyAkb3RoZXJfdHlwZXMgPSBNZW1iZXJzaGlwQ29uc3RzOjpUWVBFUzsgJG1lbWJlcl90eXBlX3N1YnMgPSBNZW1iZXJzaGlwQ29uc3RzOjpNRU1CRVJfVFlQRV9TVUJTOyAkY2F0ZWdvcmllcyA9IE1lbWJlckNhdGVnb3J5OjphbGwoIlwxNDNcMTU3XHg2NFwxNDUiLCAiXHg2NFx4NjVcMTYzIik7ICRjbHVicyA9IENsdWI6OmFsbCgiXDE1MVwxNDQiLCAiXDE1NlwxNDFcMTU1XHg2NSIsICJcMTQzXDE1N1x4NjRceDY1Iik7IHJldHVybiB2aWV3KCJcMTU1XHg2NVwxNTVceDYyXDE0NVx4NzJceDczXHgyZVx4NzNcMTQ1XHg2MVx4NzJcMTQzXHg2OFx4NWZceDZlXHg2NVx4NzciLCBhcnJheSgiXHg2M1x4NjFcMTY0XHg2NVwxNDdcMTU3XDE2MlwxNTFcMTQ1XHg3MyIgPT4gJGNhdGVnb3JpZXMsICJcMTYzXDE2NFx4NjFcMTY0XHg3NVwxNjNcMTQ1XDE2MyIgPT4gJHN0YXR1c2VzLCAiXHg2Mlx4NmNcMTU3XHg2M1wxNTNceDVmXDE2M1x4NzRcMTQxXDE2NFx4NzVceDczXHg2NVx4NzMiID0+ICRibG9ja19zdGF0dXNlcywgIlx4NmZcMTY0XDE1MFwxNDVceDcyXDEzN1wxNjRceDc5XDE2MFx4NjVcMTYzIiA9PiAkb3RoZXJfdHlwZXMsICJcMTU1XDE0NVx4NmRcMTQyXHg2NVx4NzJcMTM3XHg3NFwxNzFceDcwXHg2NVwxMzdcMTYzXHg3NVwxNDJcMTYzIiA9PiAkbWVtYmVyX3R5cGVfc3VicywgIlwxNDNcMTU0XDE2NVx4NjJcMTYzIiA9PiAkY2x1YnMpKTsgfSBwdWJsaWMgZnVuY3Rpb24gbWVtYmVyU2VhcmNoKFJlcXVlc3QgJHJlcXVlc3QpIHsgfSBwdWJsaWMgZnVuY3Rpb24gdXBkYXRlTWVtYmVyU2hvdygpIHsgJGNhdGVnb3JpZXMgPSBNZW1iZXJDYXRlZ29yeTo6YWxsKCJcMTQzXHg2Zlx4NjRcMTQ1IiwgIlx4NjRceDY1XHg3MyIpOyAkdGVtcG9yYXJ5X2NhdF9pZCA9IE1lbWJlckNhdGVnb3J5OjokdGVtcG9yYXJ5X2NhdF9pZDsgJHJlZ3VsYXJfY2F0X2lkID0gTWVtYmVyQ2F0ZWdvcnk6OiRyZWd1bGFyX2NhdF9pZDsgcmV0dXJuIHZpZXcoIlwxNTVceDY1XHg2ZFx4NjJcMTQ1XDE2Mlx4NzNcNTZceDc1XDE2MFx4NjRcMTQxXHg3NFwxNDVceDVmXDE1NVwxNDVceDZkXDE0Mlx4NjVceDcyXDEzN1x4NjlceDY0IiwgYXJyYXkoIlwxNDRcMTU3XHg2MyIgPT4gbnVsbCwgIlwxNDNceDYxXDE2NFx4NjVceDY3XHg2Zlx4NzJceDY5XDE0NVwxNjMiID0+ICRjYXRlZ29yaWVzLCAiXDE2NFx4NjVceDZkXHg3MFx4NmZceDcyXHg2MVwxNjJceDc5XDEzN1x4NjNceDYxXDE2NFwxMzdcMTUxXDE0NCIgPT4gJHRlbXBvcmFyeV9jYXRfaWQsICJceDcyXHg2NVwxNDdceDc1XDE1NFwxNDFceDcyXDEzN1wxNDNceDYxXHg3NFwxMzdcMTUxXDE0NCIgPT4gJHJlZ3VsYXJfY2F0X2lkKSk7IH0gcHVibGljIGZ1bmN0aW9uIHVwZGF0ZU1lbWJlcklkKFJlcXVlc3QgJHJlcXVlc3QpIHsgJHJlcXVlc3QtPnZhbGlkYXRlKGFycmF5KCJceDYzXDE2NVx4NzJceDcyXDE0NVx4NmVceDc0XDEzN1x4NmRceDY1XHg2ZFx4NjJceDY1XHg3MlwxNTFcMTQ0IiA9PiAiXHg3Mlx4NjVcMTYxXHg3NVx4NjlcMTYyXHg2NVwxNDRceDdjXHg2NVx4NzhcMTUxXDE2M1wxNjRcMTYzXDcyXDE1NVwxNDVcMTU1XDE0Mlx4NjVceDcyXHg2OVx4NmVcMTQ2XHg2Zlx4MmNceDZkXHg2NVwxNTVceDYyXHg2NVwxNjJceDY5XHg2NCIsICJceDYzXDE0MVwxNjRceDY1XHg2N1wxNTdceDcyXHg3OVx4NjlcMTQ0IiA9PiAiXDE2MlwxNDVcMTYxXDE2NVwxNTFceDcyXDE0NVx4NjRceDdjXDE0NVwxNzBcMTUxXHg3M1wxNjRcMTYzXDcyXHg2ZFwxNDVcMTU1XHg2MlwxNDVceDcyXDE0M1wxNDFceDc0XHg2NVx4NjdceDZmXHg3Mlx4NzlceDJjXDE0M1wxNTdcMTQ0XHg2NSIpLCBhcnJheSgiXHg2M1x4NzVceDcyXDE2MlwxNDVcMTU2XHg3NFx4NWZcMTU1XDE0NVx4NmRceDYyXDE0NVwxNjJcMTUxXDE0NFx4MmVcMTYyXHg2NVwxNjFceDc1XHg2OVwxNjJceDY1XDE0NCIgPT4gIlx4NGRceDY1XHg2ZFx4NjJcMTQ1XDE2Mlx4MjBcMTExXHg0NFw0MFx4NjlceDczXDQwXHg3Mlx4NjVcMTYxXDE2NVx4NjlceDcyXHg2NVx4NjRceDJlIiwgIlx4NjNcMTY1XHg3MlwxNjJceDY1XHg2ZVwxNjRcMTM3XHg2ZFx4NjVcMTU1XHg2Mlx4NjVcMTYyXHg2OVx4NjRcNTZceDY1XHg3OFwxNTFceDczXHg3NFx4NzMiID0+ICJcMTExXHg2ZVx4NzZcMTQxXHg2Y1x4NjlcMTQ0XHgyMFx4NGRceDY1XDE1NVwxNDJceDY1XHg3Mlx4MjBceDQ5XDEwNFx4MmUiLCAiXHg2M1wxNDFcMTY0XDE0NVwxNDdcMTU3XDE2MlwxNzFcMTUxXDE0NFw1Nlx4NzJceDY1XHg3MVwxNjVcMTUxXDE2Mlx4NjVceDY0IiA9PiAiXDEyNFwxNTBceDY1XHgyMFwxMTVceDY1XDE1NVx4NjJcMTQ1XHg3Mlx4MjBcMTAzXHg2MVwxNjRceDY1XDE0N1x4NmZcMTYyXDE3MVx4MjBcMTUxXDE2M1w0MFwxNjJceDY1XDE2MVwxNjVceDY5XDE2Mlx4NjVceDY0XDU2IiwgIlx4NjNceDYxXDE2NFx4NjVcMTQ3XHg2Zlx4NzJcMTcxXHg2OVx4NjRcNTZceDY1XDE3MFwxNTFcMTYzXHg3NFx4NzMiID0+ICJcMTI0XHg2OFx4NjVcNDBceDRkXDE0NVwxNTVcMTQyXHg2NVx4NzJceDIwXHg0M1x4NjFcMTY0XHg2NVx4NjdcMTU3XHg3Mlx4NzlcNDBcMTUxXDE2M1x4MjBcMTUxXHg2ZVwxNjZceDYxXDE1NFx4NjlcMTQ0XHgyZSIpKTsgJG1lbWJlcmlkID0gJHJlcXVlc3QtPmN1cnJlbnRfbWVtYmVyaWQ7ICR1c2VyID0gYXV0aCgpLT51c2VyKCk7ICRtZW1iZXIgPSBNZW1iZXI6OndoZXJlKCJcMTU1XHg2NVwxNTVcMTQyXHg2NVwxNjJceDY5XDE0NCIsICRtZW1iZXJpZCktPndoZXJlKCJceDYzXDE1NFwxNjVcMTQyXHg1ZlwxNTFcMTQ0IiwgJHVzZXItPmNsdWJfaWQpLT5maXJzdCgpOyB0cnkgeyBpZiAoISRtZW1iZXIpIHsgdGhyb3cgbmV3IFxFeGNlcHRpb24oIlx4NDlceDZlXHg3NlwxNDFceDZjXDE1MVwxNDRcNDBcMTE1XDE0NVx4NmRceDYyXDE0NVwxNjJcNDBcMTExXHg0NCIpOyB9IH0gY2F0Y2ggKFxFeGNlcHRpb24gJGUpIHsgJHRoaXMtPmxvZ0Vycm9yKCRlLCAkcmVxdWVzdC0+dXNlcigpLT5pZCwgX19NRVRIT0RfXywgX19MSU5FX18pOyAkdmFsaWRhdG9yID0gVmFsaWRhdG9yOjptYWtlKGFycmF5KCksIGFycmF5KCkpOyAkdmFsaWRhdG9yLT5lcnJvcnMoKS0+YWRkKCJcMTQzXHg3NVwxNjJcMTYyXHg2NVx4NmVcMTY0XHg1ZlwxNTVceDY1XHg2ZFwxNDJceDY1XDE2MlwxNTFceDY0IiwgJGUtPmdldE1lc3NhZ2UoKSk7IHRocm93IG5ldyBWYWxpZGF0aW9uRXhjZXB0aW9uKCR2YWxpZGF0b3IpOyB9ICRjYXRlZ29yeV9pZCA9ICRyZXF1ZXN0LT5jYXRlZ29yeWlkOyAkbnVtID0gZXhwbG9kZSgiXDU1IiwgJG1lbWJlcmlkKVsxXTsgJG5ld19tZW1iZXJfaWQgPSAiXDEyMlx4MmR7JG51bX0iOyB0cnkgeyAkbWVtYmVyLT51cGRhdGUoYXJyYXkoIlwxNTVceDY1XHg2ZFx4NjJceDY1XHg3Mlx4NjlceDY0IiA9PiAkbmV3X21lbWJlcl9pZCwgIlwxNDNceDYxXDE2NFx4NjVcMTQ3XHg2ZlwxNjJcMTcxXDE1MVx4NjQiID0+ICRjYXRlZ29yeV9pZCwgIlwxNjVceDcwXHg2NFx4NjFceDc0XDE0NVwxNDRceDVmXDE0Mlx4NzkiID0+ICR1c2VyLT5pZCkpOyAkc3dlZXRBbGVydFsiXHg2OVx4NjNcMTU3XDE1NiJdID0gIlx4NzNceDc1XDE0M1x4NjNceDY1XDE2M1x4NzMiOyAkc3dlZXRBbGVydFsiXHg3NFwxNTFcMTY0XHg2Y1wxNDUiXSA9ICJcMTE1XDE0NVwxNTVcMTQyXDE0NVx4NzJcNDBcMTI1XHg3MFwxNDRcMTQxXDE2NFwxNDVcMTQ0IjsgJHN3ZWV0QWxlcnRbIlwxNTBcMTY0XDE1NVx4NmMiXSA9ICJceDRkXHg2NVwxNTVceDYyXHg2NVwxNjJcNDBceDQ5XHg0NFx4MjBcMTAzXHg2OFwxNDFcMTU2XDE0N1wxNDVcMTQ0XHgyMFx4NzNceDc1XDE0M1x4NjNceDY1XDE2M1wxNjNceDY2XHg3NVwxNTRcMTU0XHg3OVw1NiI7IHJldHVybiByZXNwb25zZSgpLT5qc29uKGFycmF5KCJceDczXDE2N1wxNDVceDY1XHg3NFwxNDFcMTU0XDE0NVwxNjJceDc0IiA9PiAkc3dlZXRBbGVydCwgIlx4NzNceDc1XDE0M1x4NjNceDY1XHg3M1wxNjMiID0+IHRydWUpKTsgfSBjYXRjaCAoXEV4Y2VwdGlvbiAkZSkgeyBsb2dnZXIoJGUtPmdldE1lc3NhZ2UoKSk7ICRzd2VldEFsZXJ0WyJceDY5XHg2M1wxNTdceDZlIl0gPSAiXDE0NVwxNjJcMTYyXHg2Zlx4NzIiOyAkc3dlZXRBbGVydFsiXHg3NFx4NjlceDc0XHg2Y1x4NjUiXSA9ICJceDRmXHg3MFx4NzBcMTYzXHgyMSI7ICRzd2VldEFsZXJ0WyJceDY4XHg3NFwxNTVcMTU0Il0gPSAiXHg1M1wxNDVcMTYyXHg3NlwxNDVcMTYyXHgyMFx4NDVcMTYyXHg3Mlx4NmZcMTYyXDU0XHgyMFwxMTVceDY1XHg2ZFwxNDJceDY1XDE2Mlx4MjBcMTU2XHg2ZlwxNjRceDIwXHg3NVx4NzBceDY0XDE0MVwxNjRcMTQ1XHg2NFx4MjFceDJjXDQwXHg3MFwxNTRceDY1XHg2MVx4NzNcMTQ1XDQwXDE2NFwxNjJceDc5XDQwXHg2MVx4NjdceDYxXDE1MVx4NmUiOyByZXR1cm4gcmVzcG9uc2UoKS0+anNvbihhcnJheSgiXHg3M1wxNjdceDY1XHg2NVwxNjRcMTQxXDE1NFwxNDVceDcyXDE2NCIgPT4gJHN3ZWV0QWxlcnQsICJcMTYzXDE2NVx4NjNceDYzXHg2NVx4NzNceDczIiA9PiBmYWxzZSksIDUwMCk7IH0gfSB9IA=='))

Function Calls

base64_decode 1

Variables

None

Stats

MD5 74c90d04df0fdf0f851ddd1dab9843ee
Eval Count 1
Decode Time 95 ms