{"id":182096,"date":"2026-04-02T11:06:46","date_gmt":"2026-04-02T02:06:46","guid":{"rendered":"https:\/\/support.questetra.com\/developer-blog\/qguide-request-to-openai-api-using-localstorage-2026\/"},"modified":"2026-04-03T11:13:14","modified_gmt":"2026-04-03T02:13:14","slug":"qguide-request-to-openai-api-using-localstorage-2026","status":"publish","type":"post","link":"https:\/\/support.questetra.com\/ja\/deco-ja\/qguide-request-to-openai-api-using-localstorage-2026\/","title":{"rendered":"qGuide: OpenAI API \u306b\u30ea\u30af\u30a8\u30b9\u30c8 (localStorage\u7248)"},"content":{"rendered":"\n<h4 class=\"wp-block-heading has-background\" style=\"background-color:#ffc69b;margin-top:var(--wp--preset--spacing--30);margin-right:0;margin-bottom:0;margin-left:0;padding-top:0;padding-right:var(--wp--preset--spacing--20);padding-bottom:0;padding-left:var(--wp--preset--spacing--20)\"><strong>qGuide: OpenAI API \u306b\u30ea\u30af\u30a8\u30b9\u30c8 (localStorage\u7248)<\/strong><\/h4>\n\n\n\n<p class=\"has-text-align-right has-background has-small-font-size mt-0 pt-0 wp-block-paragraph\" style=\"background-color:#ffc69b;margin-top:0;margin-right:0;margin-bottom:0;margin-left:0;padding-top:0;padding-right:var(--wp--preset--spacing--30);padding-bottom:0;padding-left:var(--wp--preset--spacing--30)\"><a href=\"https:\/\/support.questetra.com\/ja\/deco-ja\/qguide-request-to-openai-api-using-localstorage-2026\/\"><span class=\"material-icons\">translate<\/span> qGuide: Request to OpenAI API using localStorage<\/a><\/p>\n\n\n\n<p class=\"has-background mt-0 pt-0 wp-block-paragraph\" style=\"background-color:#ffe5ce;margin-top:0;margin-right:0;margin-bottom:var(--wp--preset--spacing--60);margin-left:0;padding-top:var(--wp--preset--spacing--20);padding-right:var(--wp--preset--spacing--30);padding-bottom:var(--wp--preset--spacing--20);padding-left:var(--wp--preset--spacing--40)\">\u6587\u5b57\u5217 &#8220;\u6295\u5165\u30c7\u30fc\u30bf&#8221; \u3092 Responses API \u306b CORS \u9001\u4fe1\u3057\u307e\u3059\u3002\u30ec\u30b9\u30dd\u30f3\u30b9\uff08\u30e2\u30c7\u30eb\u304c\u751f\u6210\u3057\u305f\u6587\u7ae0\uff09\u306f\u3001\u30bf\u30b9\u30af\u51e6\u7406\u753b\u9762\u4e0a\u3067\u30b9\u30c8\u30ea\u30fc\u30df\u30f3\u30b0\u8868\u793a\u3055\u308c\u307e\u3059\u3002\u30d7\u30ed\u30f3\u30d7\u30c8\u8a2d\u5b9a\u6b21\u7b2c\u3067\u3001\u300c\u8aa4\u690d\u30c1\u30a7\u30c3\u30af\u6a5f\u80fd\u300d\u300c\u6587\u7ae0\u30ea\u30e9\u30a4\u30c8\u6a5f\u80fd\u300d\u300c\u5dee\u623b\u7406\u7531\u306e\u5019\u88dc\u5217\u6319\u6a5f\u80fd\u300d\u3068\u3044\u3063\u305f\u69d8\u3005\u306a\u652f\u63f4\u6a5f\u80fd\uff08\u30bf\u30b9\u30af\u51e6\u7406\u8005\u3092\u652f\u63f4\u3059\u308b\u6a5f\u80fd\uff09\u3092\u63d0\u4f9b\u3059\u308b\u3053\u3068\u304c\u53ef\u80fd\u3067\u3059\u3002&#8221;API\u30ad\u30fc&#8221; \u3068 &#8220;\u6307\u793a\u6587&#8221; \u306f\u3001\u305d\u308c\u305e\u308c\u306e\u30e6\u30fc\u30b6\u304c localStorage \u306b\u4fdd\u5b58\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" style=\"margin-top:var(--wp--preset--spacing--60)\"><span style=\"text-decoration: underline;\">Input \/ Output<\/span><\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u2190 STRING (STRING_TEXTFIELD) <code>q_human_answer_body<\/code><\/li>\n\n\n\n<li>\u2190 localStorage <code>apiKey<\/code><\/li>\n\n\n\n<li>\u2190 localStorage <code>instruction<\/code><\/li>\n\n\n\n<li>\u2192 <code>pre#user_result<\/code><\/li>\n\n\n\n<li>\u2192 <code>div#user_status<\/code><\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Web\u30b9\u30c8\u30ec\u30fc\u30b8\u306e\u6a5f\u80fd\u304a\u3088\u3073\u30ea\u30b9\u30af\u3092\u7406\u89e3\u3057\u305f\u3046\u3048\u3067\u3054\u6d3b\u7528\u304f\u3060\u3055\u3044\u3002<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><a href=\"https:\/\/w.wiki\/ALQp\" rel=\"nofollow\">https:\/\/w.wiki\/ALQp<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/developer.mozilla.org\/ja\/docs\/Web\/API\/Web_Storage_API\" rel=\"nofollow\">https:\/\/developer.mozilla.org\/ja\/docs\/Web\/API\/Web_Storage_API<\/a><\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\" style=\"margin-top:var(--wp--preset--spacing--60)\"><span style=\"text-decoration: underline;\">Code Example<\/span><\/h3>\n\n\n\n<div class=\"wp-block-coblocks-accordion\">\n<div class=\"wp-block-coblocks-accordion-item\"><details open><summary class=\"wp-block-coblocks-accordion-item__title has-background\" style=\"background-color:#ffe5ce\">HTML\/JavaScript (click to close)<\/summary><div class=\"wp-block-coblocks-accordion-item__content\" style=\"border-color:#ffe5ce\">\n<div class=\"hcb_wrap\"><pre class=\"prism line-numbers lang-html\" data-lang=\"HTML\"><code>&lt;style&gt;\n\/* AI\u547c\u3073\u51fa\u3057\u30dc\u30bf\u30f3 *\/\n.user_aiBtn {\nborder: 1px solid #ccc;\npadding: 6px 12px;\nborder-radius: 20px;\ncursor: pointer;\nfont-size: 13px;\ntransition: all 0.2s ease;\ncolor: #333;\nmargin-right: 8px;\nmargin-bottom: 12px;\nbackground-color: #fff;\nfont-family: system-ui, -apple-system, sans-serif;\n}\n.user_aiBtn:hover { background-color: #f0f0f0; border-color: #bbb; }\n.user_aiBtn:disabled { opacity: 0.5; cursor: not-allowed; background-color: #eee; }\n\n\/* CONFIG\u30dc\u30bf\u30f3 *\/\n#user_btnConfig {\nborder: 1px solid #4a5568;\npadding: 6px 16px;\nborder-radius: 4px;\ncursor: pointer;\nfont-size: 13px;\nfont-weight: bold;\ntransition: all 0.2s ease;\ncolor: #fff;\nbackground-color: #4a5568;\nmargin-right: 16px;\nmargin-bottom: 12px;\nfont-family: system-ui, -apple-system, sans-serif;\n}\n#user_btnConfig:hover { background-color: #2d3748; border-color: #1a202c; }\n#user_btnConfig.user_active { background-color: #2b6cb0; border-color: #2c5282; box-shadow: inset 0 2px 4px rgba(0,0,0,0.2); }\n\n\/* --- \u305d\u306e\u4ed6\u306e\u8a2d\u5b9a\u30a8\u30ea\u30a2\u8981\u7d20 --- *\/\n.user_lbl {\ndisplay: block;\nmargin: 12px 0 4px 0;\nfont-weight: bold;\nfont-size: 13px;\nfont-family: system-ui, -apple-system, sans-serif;\n}\n.user_display_val {\nbackground: #e9e9e9;\npadding: 4px 8px;\nborder-radius: 4px;\nfont-family: Menlo, Monaco, Consolas, monospace;\ncolor: #333;\nfont-size: 13px;\n}\n.user_display_inst {\nbackground: #e9e9e9;\npadding: 8px;\nborder-radius: 4px;\nwhite-space: pre-wrap;\ncolor: #333;\nmin-height: 1.5em;\nmargin-bottom: 4px;\nfont-size: 13px;\nfont-family: system-ui, -apple-system, sans-serif;\n}\n.user_btnEdit {\npadding: 2px 8px;\nfont-size: 11px;\ncursor: pointer;\nborder: 1px solid #bbb;\nbackground-color: #fff;\nborder-radius: 4px;\nmargin-left: 8px;\nvertical-align: middle;\n}\n.user_btnEdit:hover { background-color: #eee; }\n#user_apiKey, #user_instruction {\nwidth: 100%;\nbox-sizing: border-box;\npadding: 6px;\nborder: 1px solid #ccc;\nborder-radius: 4px;\nfont-family: inherit;\nfont-size: 13px;\n}\n#user_instruction { resize: vertical; min-height: 4em; }\n.user_actionBtn {\npadding: 4px 12px;\nborder: 1px solid #bbb;\nbackground-color: #fff;\nborder-radius: 4px;\ncursor: pointer;\nfont-size: 13px;\n}\n.user_actionBtn:hover { background-color: #eee; }\n#user_result {\nbackground-color: #f9f9f9;\nborder: 1px solid #ddd;\nborder-radius: 4px;\npadding: 12px;\nmin-height: 8em;\nwhite-space: pre-wrap;\nword-break: break-word;\nfont-family: Menlo, Monaco, Consolas, &quot;Courier New&quot;, monospace;\nfont-size: 14px;\nline-height: 1.6;\ncolor: #222;\nmargin-top: 16px;\n}\n#user_status {\nfont: 12px\/1.4 system-ui, sans-serif;\nopacity: 0.75;\nmargin-top: 8px;\nmin-height: 1.4em;\n}\n\n@keyframes blink { 50% { opacity: 0; } }\n.user_cursor {\ndisplay: inline-block;\nwidth: 8px;\nheight: 1em;\nbackground-color: #333;\nmargin-left: 2px;\nanimation: blink 1s step-end infinite;\nvertical-align: text-bottom;\n}\n&lt;\/style&gt;\n\n&lt;button type=&quot;button&quot; id=&quot;user_btnConfig&quot;&gt;CONFIG&lt;\/button&gt;\n&lt;button type=&quot;button&quot; class=&quot;user_aiBtn&quot;&gt;gpt-5.4&lt;\/button&gt;\n&lt;button type=&quot;button&quot; class=&quot;user_aiBtn&quot;&gt;gpt-5.4-mini&lt;\/button&gt;\n&lt;button type=&quot;button&quot; class=&quot;user_aiBtn&quot;&gt;gpt-5.4-nano&lt;\/button&gt;\n&lt;button type=&quot;button&quot; class=&quot;user_aiBtn&quot;&gt;gpt-5-nano&lt;\/button&gt;\n&lt;button type=&quot;button&quot; class=&quot;user_aiBtn&quot;&gt;gpt-5-mini&lt;\/button&gt;\n&lt;button type=&quot;button&quot; class=&quot;user_aiBtn&quot;&gt;gpt-5&lt;\/button&gt;\n&lt;button type=&quot;button&quot; class=&quot;user_aiBtn&quot;&gt;gpt-5.3-codex&lt;\/button&gt;\n&lt;button type=&quot;button&quot; class=&quot;user_aiBtn&quot;&gt;gpt-5-codex&lt;\/button&gt;\n&lt;span id=&quot;user_lbl_api&quot; class=&quot;user_lbl&quot; style=&quot;display:none;&quot;&gt;API\u30ad\u30fc \/ API Key:&lt;\/span&gt;\n&lt;span id=&quot;user_apiKey_display&quot; class=&quot;user_display_val&quot; style=&quot;display:none;&quot;&gt;&lt;\/span&gt;\n&lt;button type=&quot;button&quot; class=&quot;user_btnEdit&quot; id=&quot;user_btn_editApiKey&quot; style=&quot;display:none;&quot;&gt;Edit KEY&lt;\/button&gt;\n&lt;span id=&quot;user_apiKey_edit_area&quot; style=&quot;display:none; width:100%;&quot;&gt;&lt;\/span&gt;\n&lt;span id=&quot;user_lbl_inst&quot; class=&quot;user_lbl&quot; style=&quot;display:none;&quot;&gt;\u6307\u793a \/ Instruction (\u5165\u529b\u5bfe\u8c61: &lt;span id=&quot;user_lbl_target_field&quot;&gt;&lt;\/span&gt;):&lt;\/span&gt;\n&lt;span id=&quot;user_instruction_display&quot; class=&quot;user_display_inst&quot; style=&quot;display:none;&quot;&gt;&lt;\/span&gt;\n&lt;button type=&quot;button&quot; class=&quot;user_btnEdit&quot; id=&quot;user_btn_editInst&quot; style=&quot;margin-left:0; margin-top:4px; display:none;&quot;&gt;Edit PROMPT&lt;\/button&gt;\n&lt;span id=&quot;user_inst_edit_area&quot; style=&quot;display:none; width:100%;&quot;&gt;&lt;\/span&gt;\n&lt;hr id=&quot;user_set_hr&quot; style=&quot;margin:16px 0 12px 0; border:none; border-top:1px dashed #ccc; display:none;&quot;&gt;\n&lt;button type=&quot;button&quot; id=&quot;user_btnSave&quot; class=&quot;user_actionBtn&quot; style=&quot;display:none;&quot;&gt;\u8a2d\u5b9a\u3092\u4fdd\u5b58 \/ Save&lt;\/button&gt;\n&lt;button type=&quot;button&quot; id=&quot;user_btnClear&quot; class=&quot;user_actionBtn&quot; style=&quot;display:none;&quot;&gt;\u30af\u30ea\u30a2 \/ Clear&lt;\/button&gt;\n&lt;span id=&quot;user_settingStatus&quot; style=&quot;margin-left:8px; color:#0066cc; font-weight:bold; font-size:13px; display:none;&quot;&gt;&lt;\/span&gt;\n&lt;pre id=&quot;user_result&quot;&gt;&lt;\/pre&gt;\n&lt;div id=&quot;user_status&quot;&gt;&lt;\/div&gt;\n\n&lt;script&gt;\nqbpms.form.on(&#39;ready&#39;, () =&gt; {\n  \/\/ --- 0. \u5bfe\u8c61\u30d5\u30a3\u30fc\u30eb\u30c9\u2605\u2605\u2605 \u7de8\u96c6\u3057\u3066\u304f\u3060\u3055\u3044 \/ EDIT here \u2605\u2605\u2605 ---\n  const TARGET_FIELD_NAME = &quot;q_human_answer_body&quot;;\n  \n  \/\/ \u30e9\u30d9\u30eb\u306b\u5bfe\u8c61\u30d5\u30a3\u30fc\u30eb\u30c9\u540d\u3092\u53cd\u6620\n  document.getElementById(&quot;user_lbl_target_field&quot;).innerText = TARGET_FIELD_NAME;\n\n  \/\/ --- 1. \u52d5\u7684\u306a\u5165\u529b\u8981\u7d20\u306e\u751f\u6210 ---\n  const apiKeyInput = document.createElement(&quot;input&quot;);\n  apiKeyInput.type = &quot;password&quot;;\n  apiKeyInput.id = &quot;user_apiKey&quot;;\n  apiKeyInput.placeholder = &quot;sk-...&quot;;\n  document.getElementById(&quot;user_apiKey_edit_area&quot;).appendChild(apiKeyInput);\n  const instructionInput = document.createElement(&quot;textarea&quot;);\n  instructionInput.id = &quot;user_instruction&quot;;\n  instructionInput.placeholder = &quot;\u4f8b: \u3042\u306a\u305f\u306f\u512a\u79c0\u306a\u30a2\u30b7\u30b9\u30bf\u30f3\u30c8\u3067\u3059\u3002\u7c21\u6f54\u306b\u7b54\u3048\u3066\u304f\u3060\u3055\u3044\u3002 \/ Ex: You are a helpful assistant...&quot;;\n  document.getElementById(&quot;user_inst_edit_area&quot;).appendChild(instructionInput);\n\n  \/\/ --- 2. \u5404\u7a2e\u5b9a\u6570\u3068\u8981\u7d20\u306e\u53d6\u5f97 ---\n  const STORAGE_KEY_API = &quot;user_openai_api_key&quot;;\n  const STORAGE_KEY_INST = &quot;user_openai_instruction&quot;;\n  const btnConfig = document.getElementById(&quot;user_btnConfig&quot;);\n  const aiButtons = document.querySelectorAll(&quot;.user_aiBtn&quot;);\n  const resultElement = document.getElementById(&quot;user_result&quot;);\n  const statusElement = document.getElementById(&quot;user_status&quot;);\n  const settingStatus = document.getElementById(&quot;user_settingStatus&quot;);\n\n  \/\/ UI\u72b6\u614b\u7ba1\u7406\u30d5\u30e9\u30b0\n  let isConfigOpen = false;\n  let isEditingApi = false;\n  let isEditingInst = false;\n\n  \/\/ --- 3. UI\u306e\u8868\u793a\u5207\u308a\u66ff\u3048\u95a2\u6570 (\u30d5\u30e9\u30c3\u30c8\u306a\u8981\u7d20\u3092\u500b\u5225\u306b\u5236\u5fa1) ---\n  function renderUI() {\n    const storedKey = localStorage.getItem(STORAGE_KEY_API) || &quot;&quot;;\n    const storedInst = localStorage.getItem(STORAGE_KEY_INST) || &quot;&quot;;\n    apiKeyInput.value = storedKey;\n    instructionInput.value = storedInst;\n    const hasKey = !!storedKey;\n    const hasInst = !!storedInst;\n    const showApiDisp = isConfigOpen && hasKey && !isEditingApi;\n    const showApiEdit = isConfigOpen && (!hasKey || isEditingApi);\n    const showInstDisp = isConfigOpen && hasInst && !isEditingInst;\n    const showInstEdit = isConfigOpen && (!hasInst || isEditingInst);\n\n    if (isConfigOpen) {\n      btnConfig.classList.add(&quot;user_active&quot;);\n    } else {\n      btnConfig.classList.remove(&quot;user_active&quot;);\n    }\n\n    document.getElementById(&quot;user_lbl_api&quot;).style.display = isConfigOpen ? &quot;block&quot; : &quot;none&quot;;\n    const eKeyDisp = document.getElementById(&quot;user_apiKey_display&quot;);\n    eKeyDisp.style.display = showApiDisp ? &quot;inline-block&quot; : &quot;none&quot;;\n    if (showApiDisp) eKeyDisp.innerText = storedKey.length &gt; 10 ? storedKey.substring(0, 10) + &quot;...&quot; : storedKey;\n    document.getElementById(&quot;user_btn_editApiKey&quot;).style.display = showApiDisp ? &quot;inline-block&quot; : &quot;none&quot;;\n    document.getElementById(&quot;user_apiKey_edit_area&quot;).style.display = showApiEdit ? &quot;block&quot; : &quot;none&quot;;\n    document.getElementById(&quot;user_lbl_inst&quot;).style.display = isConfigOpen ? &quot;block&quot; : &quot;none&quot;;\n    const eInstDisp = document.getElementById(&quot;user_instruction_display&quot;);\n    eInstDisp.style.display = showInstDisp ? &quot;block&quot; : &quot;none&quot;;\n    if (showInstDisp) eInstDisp.innerText = storedInst;\n    document.getElementById(&quot;user_btn_editInst&quot;).style.display = showInstDisp ? &quot;inline-block&quot; : &quot;none&quot;;\n    document.getElementById(&quot;user_inst_edit_area&quot;).style.display = showInstEdit ? &quot;block&quot; : &quot;none&quot;;\n    document.getElementById(&quot;user_set_hr&quot;).style.display = isConfigOpen ? &quot;block&quot; : &quot;none&quot;;\n    document.getElementById(&quot;user_btnSave&quot;).style.display = isConfigOpen ? &quot;inline-block&quot; : &quot;none&quot;;\n    document.getElementById(&quot;user_btnClear&quot;).style.display = isConfigOpen ? &quot;inline-block&quot; : &quot;none&quot;;\n    settingStatus.style.display = isConfigOpen ? &quot;inline-block&quot; : &quot;none&quot;;\n  }\n\n  \/\/ \u521d\u671f\u5316\n  renderUI();\n\n  \/\/ --- 4. \u5404\u7a2e\u30a4\u30d9\u30f3\u30c8\u30ea\u30b9\u30ca\u30fc ---\n  btnConfig.addEventListener(&quot;click&quot;, () =&gt; {\n    isConfigOpen = !isConfigOpen;\n    if (!isConfigOpen) {\n      isEditingApi = false;\n      isEditingInst = false;\n    }\n    renderUI();\n  });\n  document.getElementById(&quot;user_btn_editApiKey&quot;).addEventListener(&quot;click&quot;, () =&gt; {\n    isEditingApi = true;\n    renderUI();\n    apiKeyInput.focus();\n  });\n  document.getElementById(&quot;user_btn_editInst&quot;).addEventListener(&quot;click&quot;, () =&gt; {\n    isEditingInst = true;\n    renderUI();\n    instructionInput.focus();\n  });\n  document.getElementById(&quot;user_btnSave&quot;).addEventListener(&quot;click&quot;, () =&gt; {\n    localStorage.setItem(STORAGE_KEY_API, apiKeyInput.value.trim());\n    localStorage.setItem(STORAGE_KEY_INST, instructionInput.value);\n    isEditingApi = false;\n    isEditingInst = false;\n    renderUI();\n    settingStatus.innerText = &quot;\u8a2d\u5b9a\u3092\u4fdd\u5b58\u3057\u307e\u3057\u305f \/ Saved successfully.&quot;;\n    setTimeout(() =&gt; { settingStatus.innerText = &quot;&quot;; }, 2500);\n  });\n  document.getElementById(&quot;user_btnClear&quot;).addEventListener(&quot;click&quot;, () =&gt; {\n    localStorage.removeItem(STORAGE_KEY_API);\n    localStorage.removeItem(STORAGE_KEY_INST);\n    isEditingApi = false;\n    isEditingInst = false;\n    renderUI();\n    settingStatus.innerText = &quot;\u8a2d\u5b9a\u3092\u30af\u30ea\u30a2\u3057\u307e\u3057\u305f \/ Cleared successfully.&quot;;\n    setTimeout(() =&gt; { settingStatus.innerText = &quot;&quot;; }, 2500);\n  });\n\n  \/\/ --- 5. AI\u547c\u3073\u51fa\u3057\u51e6\u7406 ---\n  aiButtons.forEach(button =&gt; {\n    button.addEventListener(&quot;click&quot;, async (event) =&gt; {\n      const strKey = localStorage.getItem(STORAGE_KEY_API);\n      const strInstruction = localStorage.getItem(STORAGE_KEY_INST) || &quot;&quot;; \n      \/\/ \u5909\u6570\u5316\u3057\u305f\u30bf\u30fc\u30b2\u30c3\u30c8\u30d5\u30a3\u30fc\u30eb\u30c9\u540d\u3092\u5229\u7528\n      const strInput = qbpms.form.get(TARGET_FIELD_NAME);\n      const modelName = event.currentTarget.innerText.trim();\n\n      if (!strKey) {\n        statusElement.innerText = &quot;\u30a8\u30e9\u30fc: API\u30ad\u30fc\u304c\u8a2d\u5b9a\u3055\u308c\u3066\u3044\u307e\u305b\u3093\u3002CONFIG\u30dc\u30bf\u30f3\u304b\u3089\u8a2d\u5b9a\u3092\u4fdd\u5b58\u3057\u3066\u304f\u3060\u3055\u3044\u3002 \/ Error: API Key is not set.&quot;;\n        resultElement.innerText = &quot;&quot;;\n        return;\n      }\n      if (!strInput) {\n        statusElement.innerText = `\u30a8\u30e9\u30fc: \u5165\u529b\u5185\u5bb9(${TARGET_FIELD_NAME})\u304c\u7a7a\u3067\u3059\u3002 \/ Error: Input field is empty.`;\n        resultElement.innerText = &quot;&quot;;\n        return;\n      }\n\n      aiButtons.forEach(btn =&gt; btn.disabled = true);\n      btnConfig.disabled = true;\n      statusElement.innerText = &quot;AI\u306b\u63a5\u7d9a\u4e2d... \/ Connecting to AI...&quot;;\n      resultElement.innerHTML = &#39;&lt;span class=&quot;user_cursor&quot;&gt;&lt;\/span&gt;&#39;;\n      const cursor = resultElement.querySelector(&quot;.user_cursor&quot;);\n\n      try {\n        const response = await fetch(&quot;https:\/\/api.openai.com\/v1\/responses&quot;, {\n          method: &quot;POST&quot;,\n          headers: {\n            &quot;Content-Type&quot;: &quot;application\/json&quot;,\n            &quot;Authorization&quot;: `Bearer ${strKey}`\n          },\n          body: JSON.stringify({\n            model: modelName,\n            instructions: strInstruction,\n            input: strInput,\n            stream: true\n          })\n        });\n\n        if (!response.ok) {\n          let msg = `API Error: ${response.status}`;\n          try {\n            const err = await response.json();\n            msg += `\\n${JSON.stringify(err, null, 2)}`;\n          } catch (_) {}\n          throw new Error(msg);\n        }\n        statusElement.innerText = &quot;AI\u304c\u6587\u7ae0\u3092\u751f\u6210\u4e2d... \/ AI is generating text...&quot;;\n        const reader = response.body.getReader();\n        const decoder = new TextDecoder();\n        let buffer = &quot;&quot;;\n        let currentEvent = &quot;&quot;;\n        const flushLines = (chunkText) =&gt; {\n          buffer += chunkText;\n          const lines = buffer.split(\/\\r?\\n\/);\n          buffer = lines.pop() || &quot;&quot;;\n          for (const line of lines) {\n            if (!line.trim()) continue;\n            if (line.startsWith(&quot;event:&quot;)) {\n              currentEvent = line.replace(\/^event:\\s*\/, &quot;&quot;).trim();\n              continue;\n            }\n            if (line.startsWith(&quot;data:&quot;)) {\n              const dataRaw = line.replace(\/^data:\\s*\/, &quot;&quot;).trim();\n              if (dataRaw === &quot;[DONE]&quot;) return &quot;DONE&quot;;\n              \n              try {\n                const data = JSON.parse(dataRaw);\n                if (currentEvent === &quot;response.output_text.delta&quot; && data.delta) {\n                  cursor.insertAdjacentText(&quot;beforebegin&quot;, data.delta);\n                }\n                if (currentEvent === &quot;response.completed&quot;) {\n                  return &quot;DONE&quot;;\n                }\n                if (currentEvent === &quot;response.error&quot;) {\n                  throw new Error(data?.error?.message || &quot;Unknown streaming error&quot;);\n                }\n              } catch (e) {\n                console.error(&quot;SSE JSON parse error:&quot;, dataRaw, e);\n              }\n            }\n          }\n        };\n        while (true) {\n          const { done, value } = await reader.read();\n          if (done) break;\n          const text = decoder.decode(value, { stream: true });\n          const status = flushLines(text);\n          if (status === &quot;DONE&quot;) break;\n        }\n        statusElement.innerText = &quot;\u751f\u6210\u5b8c\u4e86 \/ Generation Completed&quot;;\n      } catch (error) {\n        console.error(&quot;Request failed:&quot;, error);\n        statusElement.innerText = &quot;\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f\u3002 \/ An error occurred.&quot;;\n        resultElement.innerText = String(error.message || error);\n      } finally {\n        const c = document.querySelector(&quot;#user_result .user_cursor&quot;);\n        c?.remove();\n        aiButtons.forEach(btn =&gt; btn.disabled = false);\n        btnConfig.disabled = false;\n      }\n    });\n  });\n});\n&lt;\/script&gt;<\/code><\/pre><\/div>\n<\/div><\/details><\/div>\n<\/div>\n\n\n\n<div class=\"has-small-font-size\" style=\"text-align: right;\"><div style=\"display: inline-block; background: #FBE7DD; text-align: center;\">\n\u81ea\u7531\u6539\u5909\u53ef\u80fd\u306a HTML\/JavaScript \u30b3\u30fc\u30c9\u3067\u3059 (MIT License)\u3002\u3044\u304b\u306a\u308b\u4fdd\u8a3c\u3082\u3042\u308a\u307e\u305b\u3093\u3002<br>\n(<em><strong>JavaScript \u3092\u7528\u3044\u305f\u30c7\u30b3\u30ec\u30fc\u30b7\u30e7\u30f3<\/strong><\/em>\u306f <em><strong><span style=\"color: #1970B9\">Professional<\/span><\/strong><\/em> edition\u3067\u306e\u307f\u5229\u7528\u53ef\u80fd\u3067\u3059: <a href=\"https:\/\/questetra.zendesk.com\/hc\/ja\/articles\/360002245252-M213\">M213<\/a>)\n<\/div><\/div>\n\n\n\n<h3 class=\"wp-block-heading\" style=\"margin-top:var(--wp--preset--spacing--60)\"><span style=\"text-decoration: underline;\">Capture<\/span><\/h3>\n\n\n\n<figure data-wp-context=\"{&quot;imageId&quot;:&quot;69f9ee6d9a4bb&quot;}\" data-wp-interactive=\"core\/image\" data-wp-key=\"69f9ee6d9a4bb\" class=\"wp-block-image size-large has-lightbox wp-lightbox-container\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"536\" data-attachment-id=\"182098\" data-permalink=\"https:\/\/support.questetra.com\/ja\/deco-ja\/qguide-request-to-openai-api-using-localstorage-2026\/attachment\/deco-request-to-openai-api-using-localstorage-ja\/\" data-orig-file=\"https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2026\/04\/deco-Request-to-OpenAI-API-using-localStorage-ja.png?fit=1200%2C628&amp;ssl=1\" data-orig-size=\"1200,628\" data-comments-opened=\"0\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"deco-Request-to-OpenAI-API-using-localStorage-ja\" data-image-description=\"\" data-image-caption=\"\" data-large-file=\"https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2026\/04\/deco-Request-to-OpenAI-API-using-localStorage-ja.png?fit=1024%2C536&amp;ssl=1\" data-wp-class--hide=\"state.isContentHidden\" data-wp-class--show=\"state.isContentVisible\" data-wp-init=\"callbacks.setButtonStyles\" data-wp-on--click=\"actions.showLightbox\" data-wp-on--load=\"callbacks.setButtonStyles\" data-wp-on--pointerdown=\"actions.preloadImage\" data-wp-on--pointerenter=\"actions.preloadImageWithDelay\" data-wp-on--pointerleave=\"actions.cancelPreload\" data-wp-on-window--resize=\"callbacks.setButtonStyles\" src=\"https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2026\/04\/deco-Request-to-OpenAI-API-using-localStorage-ja.png?resize=1024%2C536&#038;ssl=1\" alt=\"qGuide: OpenAI API \u306b\u30ea\u30af\u30a8\u30b9\u30c8 (localStorage\u7248)\" class=\"wp-image-182098\" srcset=\"https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2026\/04\/deco-Request-to-OpenAI-API-using-localStorage-ja.png?resize=1024%2C536&amp;ssl=1 1024w, https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2026\/04\/deco-Request-to-OpenAI-API-using-localStorage-ja.png?resize=600%2C315&amp;ssl=1 600w, https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2026\/04\/deco-Request-to-OpenAI-API-using-localStorage-ja.png?resize=768%2C402&amp;ssl=1 768w, https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2026\/04\/deco-Request-to-OpenAI-API-using-localStorage-ja.png?w=1200&amp;ssl=1 1200w\" sizes=\"auto, (max-width: 1000px) 100vw, 1000px\" \/><button\n\t\t\tclass=\"lightbox-trigger\"\n\t\t\ttype=\"button\"\n\t\t\taria-haspopup=\"dialog\"\n\t\t\tdata-wp-bind--aria-label=\"state.thisImage.triggerButtonAriaLabel\"\n\t\t\tdata-wp-init=\"callbacks.initTriggerButton\"\n\t\t\tdata-wp-on--click=\"actions.showLightbox\"\n\t\t\tdata-wp-style--right=\"state.thisImage.buttonRight\"\n\t\t\tdata-wp-style--top=\"state.thisImage.buttonTop\"\n\t\t>\n\t\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"12\" height=\"12\" fill=\"none\" viewBox=\"0 0 12 12\">\n\t\t\t\t<path fill=\"#fff\" d=\"M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z\" \/>\n\t\t\t<\/svg>\n\t\t<\/button><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\" style=\"margin-top:var(--wp--preset--spacing--60)\"><span style=\"text-decoration: underline;\">Capture<\/span><\/h3>\n\n\n\n<figure data-wp-context=\"{&quot;imageId&quot;:&quot;69f9ee6d9aa5c&quot;}\" data-wp-interactive=\"core\/image\" data-wp-key=\"69f9ee6d9aa5c\" class=\"wp-block-image aligncenter size-large is-style-default has-lightbox wp-lightbox-container\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"576\" data-wp-class--hide=\"state.isContentHidden\" data-wp-class--show=\"state.isContentVisible\" data-wp-init=\"callbacks.setButtonStyles\" data-wp-on--click=\"actions.showLightbox\" data-wp-on--load=\"callbacks.setButtonStyles\" data-wp-on--pointerdown=\"actions.preloadImage\" data-wp-on--pointerenter=\"actions.preloadImageWithDelay\" data-wp-on--pointerleave=\"actions.cancelPreload\" data-wp-on-window--resize=\"callbacks.setButtonStyles\" src=\"https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2026\/04\/ai-deco-localStorage.gif?resize=1024%2C576&#038;ssl=1\" alt=\"\" class=\"wp-image-182079\" srcset=\"https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2026\/04\/ai-deco-localStorage.gif?resize=1024%2C576&amp;ssl=1 1024w, https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2026\/04\/ai-deco-localStorage.gif?resize=560%2C315&amp;ssl=1 560w, https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2026\/04\/ai-deco-localStorage.gif?resize=768%2C432&amp;ssl=1 768w, https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2026\/04\/ai-deco-localStorage.gif?resize=1536%2C864&amp;ssl=1 1536w, https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2026\/04\/ai-deco-localStorage.gif?resize=1200%2C675&amp;ssl=1 1200w\" sizes=\"auto, (max-width: 1000px) 100vw, 1000px\" \/><button\n\t\t\tclass=\"lightbox-trigger\"\n\t\t\ttype=\"button\"\n\t\t\taria-haspopup=\"dialog\"\n\t\t\tdata-wp-bind--aria-label=\"state.thisImage.triggerButtonAriaLabel\"\n\t\t\tdata-wp-init=\"callbacks.initTriggerButton\"\n\t\t\tdata-wp-on--click=\"actions.showLightbox\"\n\t\t\tdata-wp-style--right=\"state.thisImage.buttonRight\"\n\t\t\tdata-wp-style--top=\"state.thisImage.buttonTop\"\n\t\t>\n\t\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"12\" height=\"12\" fill=\"none\" viewBox=\"0 0 12 12\">\n\t\t\t\t<path fill=\"#fff\" d=\"M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z\" \/>\n\t\t\t<\/svg>\n\t\t<\/button><\/figure>\n\n\n\n<figure data-wp-context=\"{&quot;imageId&quot;:&quot;69f9ee6d9b0f8&quot;}\" data-wp-interactive=\"core\/image\" data-wp-key=\"69f9ee6d9b0f8\" class=\"wp-block-image aligncenter size-large has-lightbox wp-lightbox-container\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"515\" data-wp-class--hide=\"state.isContentHidden\" data-wp-class--show=\"state.isContentVisible\" data-wp-init=\"callbacks.setButtonStyles\" data-wp-on--click=\"actions.showLightbox\" data-wp-on--load=\"callbacks.setButtonStyles\" data-wp-on--pointerdown=\"actions.preloadImage\" data-wp-on--pointerenter=\"actions.preloadImageWithDelay\" data-wp-on--pointerleave=\"actions.cancelPreload\" data-wp-on-window--resize=\"callbacks.setButtonStyles\" src=\"https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2026\/04\/localStorage-output.png?resize=1024%2C515&#038;ssl=1\" alt=\"\" class=\"wp-image-182082\" srcset=\"https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2026\/04\/localStorage-output.png?resize=1024%2C515&amp;ssl=1 1024w, https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2026\/04\/localStorage-output.png?resize=600%2C302&amp;ssl=1 600w, https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2026\/04\/localStorage-output.png?resize=768%2C386&amp;ssl=1 768w, https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2026\/04\/localStorage-output.png?resize=1536%2C772&amp;ssl=1 1536w, https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2026\/04\/localStorage-output.png?resize=1200%2C603&amp;ssl=1 1200w, https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2026\/04\/localStorage-output.png?w=1617&amp;ssl=1 1617w\" sizes=\"auto, (max-width: 1000px) 100vw, 1000px\" \/><button\n\t\t\tclass=\"lightbox-trigger\"\n\t\t\ttype=\"button\"\n\t\t\taria-haspopup=\"dialog\"\n\t\t\tdata-wp-bind--aria-label=\"state.thisImage.triggerButtonAriaLabel\"\n\t\t\tdata-wp-init=\"callbacks.initTriggerButton\"\n\t\t\tdata-wp-on--click=\"actions.showLightbox\"\n\t\t\tdata-wp-style--right=\"state.thisImage.buttonRight\"\n\t\t\tdata-wp-style--top=\"state.thisImage.buttonTop\"\n\t\t>\n\t\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"12\" height=\"12\" fill=\"none\" viewBox=\"0 0 12 12\">\n\t\t\t\t<path fill=\"#fff\" d=\"M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z\" \/>\n\t\t\t<\/svg>\n\t\t<\/button><\/figure>\n\n\n\n<figure data-wp-context=\"{&quot;imageId&quot;:&quot;69f9ee6d9b751&quot;}\" data-wp-interactive=\"core\/image\" data-wp-key=\"69f9ee6d9b751\" class=\"wp-block-image aligncenter size-large has-lightbox wp-lightbox-container\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"591\" data-wp-class--hide=\"state.isContentHidden\" data-wp-class--show=\"state.isContentVisible\" data-wp-init=\"callbacks.setButtonStyles\" data-wp-on--click=\"actions.showLightbox\" data-wp-on--load=\"callbacks.setButtonStyles\" data-wp-on--pointerdown=\"actions.preloadImage\" data-wp-on--pointerenter=\"actions.preloadImageWithDelay\" data-wp-on--pointerleave=\"actions.cancelPreload\" data-wp-on-window--resize=\"callbacks.setButtonStyles\" src=\"https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2026\/04\/localStorage-config.png?resize=1024%2C591&#038;ssl=1\" alt=\"\" class=\"wp-image-182086\" srcset=\"https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2026\/04\/localStorage-config.png?resize=1024%2C591&amp;ssl=1 1024w, https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2026\/04\/localStorage-config.png?resize=546%2C315&amp;ssl=1 546w, https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2026\/04\/localStorage-config.png?resize=768%2C443&amp;ssl=1 768w, https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2026\/04\/localStorage-config.png?resize=1536%2C886&amp;ssl=1 1536w, https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2026\/04\/localStorage-config.png?resize=1200%2C692&amp;ssl=1 1200w, https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2026\/04\/localStorage-config.png?w=1619&amp;ssl=1 1619w\" sizes=\"auto, (max-width: 1000px) 100vw, 1000px\" \/><button\n\t\t\tclass=\"lightbox-trigger\"\n\t\t\ttype=\"button\"\n\t\t\taria-haspopup=\"dialog\"\n\t\t\tdata-wp-bind--aria-label=\"state.thisImage.triggerButtonAriaLabel\"\n\t\t\tdata-wp-init=\"callbacks.initTriggerButton\"\n\t\t\tdata-wp-on--click=\"actions.showLightbox\"\n\t\t\tdata-wp-style--right=\"state.thisImage.buttonRight\"\n\t\t\tdata-wp-style--top=\"state.thisImage.buttonTop\"\n\t\t>\n\t\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"12\" height=\"12\" fill=\"none\" viewBox=\"0 0 12 12\">\n\t\t\t\t<path fill=\"#fff\" d=\"M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z\" \/>\n\t\t\t<\/svg>\n\t\t<\/button><\/figure>\n\n\n\n<figure data-wp-context=\"{&quot;imageId&quot;:&quot;69f9ee6d9bd1a&quot;}\" data-wp-interactive=\"core\/image\" data-wp-key=\"69f9ee6d9bd1a\" class=\"wp-block-image aligncenter size-large has-lightbox wp-lightbox-container\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" width=\"548\" height=\"630\" data-wp-class--hide=\"state.isContentHidden\" data-wp-class--show=\"state.isContentVisible\" data-wp-init=\"callbacks.setButtonStyles\" data-wp-on--click=\"actions.showLightbox\" data-wp-on--load=\"callbacks.setButtonStyles\" data-wp-on--pointerdown=\"actions.preloadImage\" data-wp-on--pointerenter=\"actions.preloadImageWithDelay\" data-wp-on--pointerleave=\"actions.cancelPreload\" data-wp-on-window--resize=\"callbacks.setButtonStyles\" src=\"https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2026\/04\/localStorage-config-edit-mode.png?resize=548%2C630&#038;ssl=1\" alt=\"\" class=\"wp-image-182088\" srcset=\"https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2026\/04\/localStorage-config-edit-mode.png?resize=548%2C630&amp;ssl=1 548w, https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2026\/04\/localStorage-config-edit-mode.png?resize=274%2C315&amp;ssl=1 274w, https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2026\/04\/localStorage-config-edit-mode.png?resize=768%2C882&amp;ssl=1 768w, https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2026\/04\/localStorage-config-edit-mode.png?w=947&amp;ssl=1 947w\" sizes=\"auto, (max-width: 548px) 100vw, 548px\" \/><button\n\t\t\tclass=\"lightbox-trigger\"\n\t\t\ttype=\"button\"\n\t\t\taria-haspopup=\"dialog\"\n\t\t\tdata-wp-bind--aria-label=\"state.thisImage.triggerButtonAriaLabel\"\n\t\t\tdata-wp-init=\"callbacks.initTriggerButton\"\n\t\t\tdata-wp-on--click=\"actions.showLightbox\"\n\t\t\tdata-wp-style--right=\"state.thisImage.buttonRight\"\n\t\t\tdata-wp-style--top=\"state.thisImage.buttonTop\"\n\t\t>\n\t\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"12\" height=\"12\" fill=\"none\" viewBox=\"0 0 12 12\">\n\t\t\t\t<path fill=\"#fff\" d=\"M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z\" \/>\n\t\t\t<\/svg>\n\t\t<\/button><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\" style=\"margin-top:var(--wp--preset--spacing--60)\"><span style=\"text-decoration: underline;\">See Also<\/span><\/h3>\n\n\n\n<figure class=\"wp-block-embed is-type-wp-embed is-provider-questetra-support wp-block-embed-questetra-support\"><div class=\"wp-block-embed__wrapper\">\n<blockquote class=\"wp-embedded-content\" data-secret=\"Ml66h1c7yO\"><a href=\"https:\/\/support.questetra.com\/deco\/qguide-request-to-openai-api-2025\/\">qGuide: Request to OpenAI API<\/a><\/blockquote><iframe loading=\"lazy\" class=\"wp-embedded-content\" sandbox=\"allow-scripts\" security=\"restricted\" style=\"position: absolute; visibility: hidden;\" title=\"&#8220;qGuide: Request to OpenAI API&#8221; &#8212; Questetra Support\" src=\"https:\/\/support.questetra.com\/deco\/qguide-request-to-openai-api-2025\/embed\/#?secret=Npjpn1uyjL#?secret=Ml66h1c7yO\" data-secret=\"Ml66h1c7yO\" width=\"500\" height=\"282\" frameborder=\"0\" marginwidth=\"0\" marginheight=\"0\" scrolling=\"no\"><\/iframe>\n<\/div><\/figure>\n\n\n\n<figure class=\"wp-block-embed is-type-wp-embed is-provider-questetra-support wp-block-embed-questetra-support\"><div class=\"wp-block-embed__wrapper\">\n<blockquote class=\"wp-embedded-content\" data-secret=\"ROUP5Rk5bG\"><a href=\"https:\/\/support.questetra.com\/deco\/qguide-request-to-openai-api-with-image-2025\/\">qGuide: Request to OpenAI API with Image<\/a><\/blockquote><iframe loading=\"lazy\" class=\"wp-embedded-content\" sandbox=\"allow-scripts\" security=\"restricted\" style=\"position: absolute; visibility: hidden;\" title=\"&#8220;qGuide: Request to OpenAI API with Image&#8221; &#8212; Questetra Support\" src=\"https:\/\/support.questetra.com\/deco\/qguide-request-to-openai-api-with-image-2025\/embed\/#?secret=5Nyzq7Z3Hs#?secret=ROUP5Rk5bG\" data-secret=\"ROUP5Rk5bG\" width=\"500\" height=\"282\" frameborder=\"0\" marginwidth=\"0\" marginheight=\"0\" scrolling=\"no\"><\/iframe>\n<\/div><\/figure>\n","protected":false},"excerpt":{"rendered":"<p>\u6587\u5b57\u5217 &#8220;\u6295\u5165\u30c7\u30fc\u30bf&#8221; \u3092 Responses API \u306b CORS \u9001\u4fe1\u3057\u307e\u3059\u3002\u30ec\u30b9\u30dd\u30f3\u30b9\uff08\u30e2\u30c7\u30eb\u304c\u751f\u6210\u3057\u305f\u6587\u7ae0\uff09\u306f\u3001\u30bf\u30b9\u30af\u51e6\u7406\u753b\u9762\u4e0a\u3067\u30b9\u30c8\u30ea\u30fc\u30df\u30f3\u30b0\u8868\u793a\u3055\u308c\u307e\u3059\u3002\u30d7\u30ed\u30f3\u30d7\u30c8\u8a2d\u5b9a\u6b21\u7b2c\u3067\u3001\u300c\u8aa4\u690d\u30c1\u30a7\u30c3\u30af\u6a5f\u80fd\u300d\u300c\u6587\u7ae0\u30ea\u30e9\u30a4\u30c8\u6a5f\u80fd\u300d\u300c\u5dee\u623b\u7406\u7531\u306e\u5019\u88dc\u5217\u6319\u6a5f\u80fd\u300d\u3068\u3044\u3063\u305f\u69d8\u3005\u306a\u652f\u63f4\u6a5f\u80fd\uff08\u30bf\u30b9\u30af\u51e6\u7406\u8005\u3092\u652f\u63f4\u3059\u308b\u6a5f\u80fd\uff09\u3092\u63d0\u4f9b\u3059\u308b\u3053\u3068\u304c\u53ef\u80fd\u3067\u3059\u3002&#8221;API\u30ad\u30fc&#8221; \u3068 &#8220;\u6307\u793a\u6587&#8221; \u306f\u3001\u305d\u308c\u305e\u308c\u306e\u30e6\u30fc\u30b6\u304c localStorage \u306b\u4fdd\u5b58\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002<\/p>\n","protected":false},"author":2,"featured_media":182098,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_coblocks_attr":"","_coblocks_dimensions":"","_coblocks_responsive_height":"","_coblocks_accordion_ie_support":"","_crdt_document":"{\"document\":\"AADSAbTf76Eas8283wGP0vbyA7fVkvsNj9L28gOzzbzfAbTf76Ea88283wEAz9L28gMHt9WS+w3P0vbyA6UVs8283wHP0vbyAw231ZL7Dc\/S9vIDGLPNvN8Bz9L28gMKt9WS+w3P0vbyAwnzzbzfAR7P0vbyAwOzzbzfAY\/S9vIDs8283wGP0vbyA7PNvN8Bj9L28gOzzbzfAY\/S9vIDs8283wGP0vbyA\/PNvN8BO4\/S9vID88283wEBz9L28gMBt9WS+w3P0vbyAwKzzbzfAc\/S9vIDD9wMrDmCtQLAqgLsRK6HAQKQnAcBAIQEDARCwOkG5nqWnwfU4geA+QcCLgL0jAUGpI0FtgICjAyKAu7+B4D\/B0KoAkK0AUK+AUKsAUKqAd61BJq\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cmFnZTwvYT48L3A+CnRleHRQYW5lbEhpZGVDb2xvcnRleHRQYW5lbFNob3dTcGFjaW5nQ29udHJvbHN0ZXh0UGFuZWxIZWFkaW5nRm9udFNpemVzPCEtLSB3cDppbWFnZSB7ImxpZ2h0Ym94Ijp7ImVuYWJsZWQiOnRydWV9LCJpZCI6MTgyMDk4LCJzaXplU2x1ZyI6ImxhcmdlIiwibGlua0Rlc3RpbmF0aW9uIjoibm9uZSJ9IC0tPgo8ZmlndXJlIGNsYXNzPSJ3cC1ibG9jay1pbWFnZSBzaXplLWxhcmdlIGhhcy1saWdodGJveCI+PGltZyBzcmM9Imh0dHBzOi8vc3VwcG9ydC5xdWVzdGV0cmEuY29tL3dwLWNvbnRlbnQvdXBsb2Fkcy8yMDI2LzA0L2RlY28tUmVxdWVzdC10by1PcGVuQUktQVBJLXVzaW5nLWxvY2FsU3RvcmFnZS1qYS0xMDI0eDUzNi5wbmciIGFsdD0icUd1aWRlOiBPcGVuQUkgQVBJIOOBq+ODquOCr+OCqOOCueODiCAobG9jYWxTdG9yYWdl54mIKSIgY2xhc3M9IndwLWltYWdlLTE4MjA5OCIvPjwvZmlndXJlPgpzdGF0ZXZlcnNpb252ZWxwZXJibG9nb3JpZ2luYWxDb250ZW50b3JpZ2luYWxDb250ZW50b3JpZ2luYWxDb250ZW50b3JpZ2luYWxDb250ZW50b3JpZ2luYWxDb250ZW50b3JpZ2luYWxDb250ZW50b3JpZ2luYWxDb250ZW50b3JpZ2luYWxDb250ZW50b3JpZ2luYWxDb250ZW50c3RhdGV2ZXJzaW9uZG9jdW1lbnRkYXRlZG9jdW1lbnRzdGF0dXNkb2N1bWVudHRpdGxlZG9jdW1lbnRjb250ZW50ZG9jdW1lbnRleGNlcnB0ZG9jdW1lbnRhdXRob3Jkb2N1bWVudGZlYXR1cmVkX21lZGlhZG9jdW1lbnRjb21tZW50X3N0YXR1c2RvY3VtZW50cGluZ19zdGF0dXNkb2N1bWVudHN0aWNreWRvY3VtZW50dGVtcGxhdGVkb2N1bWVudGZvcm1hdGRvY3VtZW50bWV0YV9jb2Jsb2Nrc19hdHRyX2NvYmxvY2tzX2RpbWVuc2lvbnNfY29ibG9ja3NfcmVzcG9uc2l2ZV9oZWlnaHRfY29ibG9ja3NfYWNjb3JkaW9uX2llX3N1cHBvcnRfdWFnX2N1c3RvbV9wYWdlX2xldmVsX2Nzc3NpdGUtc2lkZWJhci1sYXlvdXRzaXRlLWNvbnRlbnQtbGF5b3V0YXN0LXNpdGUtY29udGVudC1sYXlvdXRzaXRlLWNvbnRlbnQtc3R5bGVzaXRlLXNpZGViYXItc3R5bGVhc3QtZ2xvYmFsLWhlYWRlci1kaXNwbGF5YXN0LWJhbm5lci10aXRsZS12aXNpYmlsaXR5YXN0LW1haW4taGVhZGVyLWRpc3BsYXlhc3QtaGZiLWFib3ZlLWhlYWRlci1kaXNwbGF5YXN0LWhmYi1iZWxvdy1oZWFkZXItZGlzcGxheWFzdC1oZmItbW9iaWxlLWhlYWRlci1kaXNwbGF5c2l0ZS1wb3N0LXRpdGxlYXN0LWJyZWFkY3J1bWJzLWNvbnRlbnRhc3QtZmVhdHVyZWQtaW1nZm9vdGVyLXNtbC1sYXlvdXR0aGVtZS10cmFuc3BhcmVudC1oZWFkZXItbWV0YWFkdi1oZWFkZXItaWQtbWV0YXN0aWNrLWhlYWRlci1tZXRhaGVhZGVyLWFib3ZlLXN0aWNrLW1ldGFoZWFkZXItbWFpbi1zdGljay1tZXRhaGVhZGVyLWJlbG93LXN0aWNrLW1ldGFhc3RyYS1taWdyYXRlLW1ldGEtbGF5b3V0c2FzdC1wYWdlLWJhY2tncm91bmQtZW5hYmxlZGFzdC1wYWdlLWJhY2tncm91bmQtbWV0YWFzdC1jb250ZW50LWJhY2tncm91bmQtbWV0YWFkdmFuY2VkX3Nlb19kZXNjcmlwdGlvbmpldHBhY2tfc2VvX2h0bWxfdGl0bGVqZXRwYWNrX3Nlb19ub2luZGV4amV0cGFja19wb3N0X3dhc19ldmVyX3B1Ymxpc2hlZF9qZXRwYWNrX25ld3NsZXR0ZXJfYWNjZXNzX2pldHBhY2tfZG9udF9lbWFpbF9wb3N0X3RvX3N1YnNfamV0cGFja19uZXdzbGV0dGVyX3RpZXJfaWRfamV0cGFja19tZW1iZXJzaGlwc19jb250YWluc19wYXl3YWxsZWRfY29udGVudF9qZXRwYWNrX21lbWJlcnNoaXBzX2NvbnRhaW5zX3BhaWRfY29udGVudGZvb3Rub3Rlc2pldHBhY2tfcHVibGljaXplX21lc3NhZ2VqZXRwYWNrX3B1YmxpY2l6ZV9mZWF0dXJlX2VuYWJsZWRqZXRwYWNrX3NvY2lhbF9wb3N0X2FscmVhZHlfc2hhcmVkamV0cGFja19zb2NpYWxfb3B0aW9uc193cGFzX2N1c3RvbWl6ZV9wZXJfbmV0d29ya2RvY3VtZW50Y2F0ZWdvcmllc2RvY3VtZW50dGFnc2RvY3VtZW50YmxvY2tzcUd1aWRlOiBPcGVuQUkgQVBJY2xpZW50SWRpc1ZhbGlkb3JpZ2luYWxDb250ZW50bmFtZWF0dHJpYnV0ZXNjb250ZW50PHN0cm8+ZHJvcENhcHBsYWNlaG9sZGVydGV4dENvbG9yYmFja2dyb3VuZENvbG9yZm9udFNpemVkaXJlY3Rpb25zdHlsZWxvY2tjbGFzc05hbWVtZXRhZGF0YWFuaW1hdGlvbmN1c3RvbUZvbnRTaXplZm9udEZhbWlseWN1c3RvbVRleHRDb2xvcmxpbmVIZWlnaHRsZXR0ZXJTcGFjaW5nZm9udFdlaWdodHRleHRUcmFuc2Zvcm1ub0JvdHRvbVNwYWNpbmdub1RvcFNwYWNpbmdVQUdVc2VyUm9sZVVBR0Jyb3dzZXJVQUdTeXN0ZW1VQUdIaWRlRGVza3RvcFVBR0hpZGVNb2JVQUdIaWRlVGFiVUFHTG9nZ2VkSW5VQUdMb2dnZWRPdXRVQUdEaXNwbGF5Q29uZGl0aW9uc1VBR0RheXpJbmRleHpJbmRleFRhYmxldHpJbmRleE1vYmlsZVVBR1Jlc3BvbnNpdmVDb25kaXRpb25zVUFHQW5pbWF0aW9uVHlwZVVBR0FuaW1hdGlvblRpbWVVQUdBbmltYXRpb25EZWxheVVBR0FuaW1hdGlvbkVhc2luZ1VBR0FuaW1hdGlvblJlcGVhdFVBR1Bvc2l0aW9uVUFHU3RpY2t5TG9jYXRpb25VQUdTdGlja3lSZXN0cmljdGVkVUFHU3RpY2t5T2Zmc2V0dGV4dFBhbmVsSGlkZUNvbG9ydGV4dFBhbmVsU2hvd1NwYWNpbmdDb250cm9sc3RleHRQYW5lbEhlYWRpbmdGb250U2l6ZXNpbm5lckJsb2Nrc2NsaWVudElkaXNWYWxpZG9yaWdpbmFsQ29udGVudG5hbWVhdHRyaWJ1dGVzY29udGVudGRyb3BDYXBzdHlsZWZvbnRXZWlnaHR0ZXh0VHJhbnNmb3Jtbm9Cb3R0b21TcGFjaW5nbm9Ub3BTcGFjaW5nVUFHSGlkZURlc2t0b3BVQUdIaWRlTW9iVUFHSGlkZVRhYlVBR0xvZ2dlZEluVUFHTG9nZ2VkT3V0VUFHRGF5VUFHUmVzcG9uc2l2ZUNvbmRpdGlvbnNVQUdBbmltYXRpb25UeXBlVUFHQW5pbWF0aW9uVGltZVVBR0FuaW1hdGlvbkRlbGF5VUFHQW5pbWF0aW9uRWFzaW5nVUFHQW5pbWF0aW9uUmVwZWF0VUFHUG9zaXRpb25VQUdTdGlja3lMb2NhdGlvblVBR1N0aWNreVJlc3RyaWN0ZWRVQUdTdGlja3lPZmZzZXRpbm5lckJsb2Nrc2NsaWVudElkaXNWYWxpZG9yaWdpbmFsQ29udGVudG5hbWVhdHRyaWJ1dGVzY29udGVudGxldmVsc3R5bGVmb250V2VpZ2h0dGV4dFRyYW5zZm9ybW5vQm90dG9tU3BhY2luZ25vVG9wU3BhY2luZ1VBR0hpZGVEZXNrdG9wVUFHSGlkZU1vYlVBR0hpZGVUYWJVQUdMb2dnZWRJblVBR0xvZ2dlZE91dFVBR0RheVVBR1Jlc3BvbnNpdmVDb25kaXRpb25zVUFHQW5pbWF0aW9uVHlwZVVBR0FuaW1hdGlvblRpbWVVQUdBbmltYXRpb25EZWxheVVBR0FuaW1hdGlvbkVhc2luZ1VBR0FuaW1hdGlvblJlcGVhdFVBR1Bvc2l0aW9uVUFHU3RpY2t5TG9jYXRpb25VQUdTdGlja3lSZXN0cmljdGVkVUFHU3RpY2t5T2Zmc2V0aW5uZXJCbG9ja3NjbGllbnRJZGlzVmFsaWRvcmlnaW5hbENvbnRlbnRuYW1lYXR0cmlidXRlc2NvbnRlbnRkcm9wQ2FwZm9udFdlaWdodHRleHRUcmFuc2Zvcm1ub0JvdHRvbVNwYWNpbmdub1RvcFNwYWNpbmdVQUdIaWRlRGVza3RvcFVBR0hpZGVNb2JVQUdIaWRlVGFiVUFHTG9nZ2VkSW5VQUdMb2dnZWRPdXRVQUdEYXlVQUdSZXNwb25zaXZlQ29uZGl0aW9uc1VBR0FuaW1hdGlvblR5cGVVQUdBbmltYXRpb25UaW1lVUFHQW5pbWF0aW9uRGVsYXlVQUdBbmltYXRpb25FYXNpbmdVQUdBbmltYXRpb25SZXBlYXRVQUdQb3NpdGlvblVBR1N0aWNreUxvY2F0aW9uVUFHU3RpY2t5UmVzdHJpY3RlZFVBR1N0aWNreU9mZnNldGlubmVyQmxvY2tzY2xpZW50SWRpc1ZhbGlkb3JpZ2luYWxDb250ZW50bmFtZWF0dHJpYnV0ZXNjb250ZW50bGV2ZWxzdHlsZWZvbnRXZWlnaHR0ZXh0VHJhbnNmb3Jtbm9Cb3R0b21TcGFjaW5nbm9Ub3BTcGFjaW5nVUFHSGlkZURlc2t0b3BVQUdIaWRlTW9iVUFHSGlkZVRhYlVBR0xvZ2dlZEluVUFHTG9nZ2VkT3V0VUFHRGF5VUFHUmVzcG9uc2l2ZUNvbmRpdGlvbnNVQUdBbmltYXRpb25UeXBlVUFHQW5pbWF0aW9uVGltZVVBR0FuaW1hdGlvbkRlbGF5VUFHQW5pbWF0aW9uRWFzaW5nVUFHQW5pbWF0aW9uUmVwZWF0VUFHUG9zaXRpb25VQUdTdGlja3lMb2NhdGlvblVBR1N0aWNreVJlc3RyaWN0ZWRVQUdTdGlja3lPZmZzZXRpbm5lckJsb2Nrc2NsaWVudElkaXNWYWxpZG9yaWdpbmFsQ29udGVudG5hbWVhdHRyaWJ1dGVzY291bnRwb2x5ZmlsbGZvbnRXZWlnaHR0ZXh0VHJhbnNmb3Jtbm9Cb3R0b21TcGFjaW5nbm9Ub3BTcGFjaW5nVUFHSGlkZURlc2t0b3BVQUdIaWRlTW9iVUFHSGlkZVRhYlVBR0xvZ2dlZEluVUFHTG9nZ2VkT3V0VUFHRGF5VUFHUmVzcG9uc2l2ZUNvbmRpdGlvbnNVQUdBbmltYXRpb25UeXBlVUFHQW5pbWF0aW9uVGltZVVBR0FuaW1hdGlvbkRlbGF5VUFHQW5pbWF0aW9uRWFzaW5nVUFHQW5pbWF0aW9uUmVwZWF0VUFHUG9zaXRpb25VQUdTdGlja3lMb2NhdGlvblVBR1N0aWNreVJlc3RyaWN0ZWRVQUdTdGlja3lPZmZzZXRpbm5lckJsb2Nrc2NsaWVudElkaXNWYWxpZG9yaWdpbmFsQ29udGVudG5hbWVhdHRyaWJ1dGVzY29udGVudFVBR0hpZGVEZXNrdG9wVUFHSGlkZU1vYlVBR0hpZGVUYWJVQUdMb2dnZWRJblVBR0xvZ2dlZE91dFVBR0RheVVBR1Jlc3BvbnNpdmVDb25kaXRpb25zVUFHQW5pbWF0aW9uVHlwZVVBR0FuaW1hdGlvblRpbWVVQUdBbmltYXRpb25EZWxheVVBR0FuaW1hdGlvbkVhc2luZ1VBR0FuaW1hdGlvblJlcGVhdFVBR1Bvc2l0aW9uVUFHU3RpY2t5TG9jYXRpb25VQUdTdGlja3lSZXN0cmljdGVkVUFHU3RpY2t5T2Zmc2V0aW5uZXJCbG9ja3NjbGllbnRJZGlzVmFsaWRvcmlnaW5hbENvbnRlbnRuYW1lYXR0cmlidXRlc2NvbnRlbnRsZXZlbHN0eWxlZm9udFdlaWdodHRleHRUcmFuc2Zvcm1ub0JvdHRvbVNwYWNpbmdub1RvcFNwYWNpbmdVQUdIaWRlRGVza3RvcFVBR0hpZGVNb2JVQUdIaWRlVGFiVUFHTG9nZ2VkSW5VQUdMb2dnZWRPdXRVQUdEYXlVQUdSZXNwb25zaXZlQ29uZGl0aW9uc1VBR0FuaW1hdGlvblR5cGVVQUdBbmltYXRpb25UaW1lVUFHQW5pbWF0aW9uRGVsYXlVQUdBbmltYXRpb25FYXNpbmdVQUdBbmltYXRpb25SZXBlYXRVQUdQb3NpdGlvblVBR1N0aWNreUxvY2F0aW9uVUFHU3RpY2t5UmVzdHJpY3RlZFVBR1N0aWNreU9mZnNldGlubmVyQmxvY2tzY2xpZW50SWRpc1ZhbGlkb3JpZ2luYWxDb250ZW50bmFtZWF0dHJpYnV0ZXNhbHRjYXB0aW9ubm9Cb3R0b21NYXJnaW5ub1RvcE1hcmdpbmZpbHRlclVBR0hpZGVEZXNrdG9wVUFHSGlkZU1vYlVBR0hpZGVUYWJVQUdMb2dnZWRJblVBR0xvZ2dlZE91dFVBR0RheVVBR1Jlc3BvbnNpdmVDb25kaXRpb25zVUFHQW5pbWF0aW9uVHlwZVVBR0FuaW1hdGlvblRpbWVVQUdBbmltYXRpb25EZWxheVVBR0FuaW1hdGlvbkVhc2luZ1VBR0FuaW1hdGlvblJlcGVhdFVBR1Bvc2l0aW9uVUFHU3RpY2t5TG9jYXRpb25VQUdTdGlja3lSZXN0cmljdGVkVUFHU3RpY2t5T2Zmc2V0YW1wTGlnaHRib3hpbm5lckJsb2Nrc2NsaWVudElkaXNWYWxpZG9yaWdpbmFsQ29udGVudG5hbWVhdHRyaWJ1dGVzY29udGVudGxldmVsc3R5bGVmb250V2VpZ2h0dGV4dFRyYW5zZm9ybW5vQm90dG9tU3BhY2luZ25vVG9wU3BhY2luZ1VBR0hpZGVEZXNrdG9wVUFHSGlkZU1vYlVBR0hpZGVUYWJVQUdMb2dnZWRJblVBR0xvZ2dlZE91dFVBR0RheVVBR1Jlc3BvbnNpdmVDb25kaXRpb25zVUFHQW5pbWF0aW9uVHlwZVVBR0FuaW1hdGlvblRpbWVVQUdBbmltYXRpb25EZWxheVVBR0FuaW1hdGlvbkVhc2luZ1VBR0FuaW1hdGlvblJlcGVhdFVBR1Bvc2l0aW9uVUFHU3RpY2t5TG9jYXRpb25VQUdTdGlja3lSZXN0cmljdGVkVUFHU3RpY2t5T2Zmc2V0aW5uZXJCbG9ja3NjbGllbnRJZGlzVmFsaWRvcmlnaW5hbENvbnRlbnRuYW1lYXR0cmlidXRlc2NhcHRpb25hbGxvd1Jlc3BvbnNpdmVyZXNwb25zaXZlcHJldmlld2FibGVVQUdIaWRlRGVza3RvcFVBR0hpZGVNb2JVQUdIaWRlVGFiVUFHTG9nZ2VkSW5VQUdMb2dnZWRPdXRVQUdEYXlVQUdSZXNwb25zaXZlQ29uZGl0aW9uc1VBR0FuaW1hdGlvblR5cGVVQUdBbmltYXRpb25UaW1lVUFHQW5pbWF0aW9uRGVsYXlVQUdBbmltYXRpb25FYXNpbmdVQUdBbmltYXRpb25SZXBlYXRVQUdQb3NpdGlvblVBR1N0aWNreUxvY2F0aW9uVUFHU3RpY2t5UmVzdHJpY3RlZFVBR1N0aWNreU9mZnNldGlubmVyQmxvY2tzY2xpZW50SWRpc1ZhbGlkb3JpZ2luYWxDb250ZW50bmFtZWF0dHJpYnV0ZXNjb250ZW50bGV2ZWxzdHlsZWZvbnRXZWlnaHR0ZXh0VHJhbnNmb3Jtbm9Cb3R0b21TcGFjaW5nbm9Ub3BTcGFjaW5nVUFHSGlkZURlc2t0b3BVQUdIaWRlTW9iVUFHSGlkZVRhYlVBR0xvZ2dlZEluVUFHTG9nZ2VkT3V0VUFHRGF5VUFHUmVzcG9uc2l2ZUNvbmRpdGlvbnNVQUdBbmltYXRpb25UeXBlVUFHQW5pbWF0aW9uVGltZVVBR0FuaW1hdGlvbkRlbGF5VUFHQW5pbWF0aW9uRWFzaW5nVUFHQW5pbWF0aW9uUmVwZWF0VUFHUG9zaXRpb25VQUdTdGlja3lMb2NhdGlvblVBR1N0aWNreVJlc3RyaWN0ZWRVQUdTdGlja3lPZmZzZXRpbm5lckJsb2Nrc2NsaWVudElkaXNWYWxpZG9yaWdpbmFsQ29udGVudG5hbWVhdHRyaWJ1dGVzY29udGVudDxzcGFuIHN0eWxlPSJ0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTsiPmU8L3NwYW4+bGV2ZWxzdHlsZWZvbnRXZWlnaHR0ZXh0VHJhbnNmb3Jtbm9Cb3R0b21TcGFjaW5nbm9Ub3BTcGFjaW5nVUFHSGlkZURlc2t0b3BVQUdIaWRlTW9iVUFHSGlkZVRhYlVBR0xvZ2dlZEluVUFHTG9nZ2VkT3V0VUFHRGF5VUFHUmVzcG9uc2l2ZUNvbmRpdGlvbnNVQUdBbmltYXRpb25UeXBlVUFHQW5pbWF0aW9uVGltZVVBR0FuaW1hdGlvbkRlbGF5VUFHQW5pbWF0aW9uRWFzaW5nVUFHQW5pbWF0aW9uUmVwZWF0VUFHUG9zaXRpb25VQUdTdGlja3lMb2NhdGlvblVBR1N0aWNreVJlc3RyaWN0ZWRVQUdTdGlja3lPZmZzZXRpbm5lckJsb2Nrc2NsaWVudElkaXNWYWxpZG9yaWdpbmFsQ29udGVudG5hbWVhdHRyaWJ1dGVzYWx0Y2FwdGlvbmNsYXNzTmFtZW5vQm90dG9tTWFyZ2lubm9Ub3BNYXJnaW5maWx0ZXJVQUdIaWRlRGVza3RvcFVBR0hpZGVNb2JVQUdIaWRlVGFiVUFHTG9nZ2VkSW5VQUdMb2dnZWRPdXRVQUdEYXlVQUdSZXNwb25zaXZlQ29uZGl0aW9uc1VBR0FuaW1hdGlvblR5cGVVQUdBbmltYXRpb25UaW1lVUFHQW5pbWF0aW9uRGVsYXlVQUdBbmltYXRpb25FYXNpbmdVQUdBbmltYXRpb25SZXBlYXRVQUdQb3NpdGlvblVBR1N0aWNreUxvY2F0aW9uVUFHU3RpY2t5UmVzdHJpY3RlZFVBR1N0aWNreU9mZnNldGFtcExpZ2h0Ym94aW5uZXJCbG9ja3MgIGxvY2FsU3RvcmFnZTwhLS0gd3A6cGFyYWdyYXBoIHsiY2xhc3NOYW1lIjoiaGFzLWJhY2tncm91bmQiLCJzdHlsZSI6eyJzcGFjaW5nIjp7InBhZGRpbmciOnsidG9wIjoiMCIsInJpZ2h0IjoidmFyOnByZXNldHxzcGFjaW5nfDMwIiwiYm90dG9tIjoiMCIsImxlZnQiOiJ2YXI6cHJlc2V0fHNwYWNpbmd8MzAifSwibWFyZ2luIjp7InRvcCI6IjAiLCJyaWdodCI6IjAiLCJib3R0b20iOiIwIiwibGVmdCI6IjAifX0sImNvbG9yIjp7ImJhY2tncm91bmQiOiIjZmZjNjliIn0sInR5cG9ncmFwaHkiOnsidGV4dEFsaWduIjoicmlnaHQifX0sImZvbnRTaXplIjoic21hbGwiLCJub1RvcFNwYWNpbmciOnRydWV9IC0tPgo8IS0tIC93cDpwYXJhZ3JhcGggLS0+Cgo8IS0tIHdwOnBhcmFncmFwaCB7InN0eWxlIjp7ImNvbG9yIjp7ImJhY2tncm91bmQiOiIjZmZlNWNlIn0sInNwYWNpbmciOnsicGFkZGluZyI6eyJ0b3AiOiJ2YXI6cHJlc2V0fHNwYWNpbmd8MjAiLCJyaWdodCI6InZhcjpwcmVzZXR8c3BhY2luZ3wzMCIsImJvdHRvbSI6InZhcjpwcmVzZXR8c3BhY2luZ3wyMCIsImxlZnQiOiJ2YXI6cHJlc2V0fHNwYWNpbmd8NDAifSwibWFyZ2luIjp7InRvcCI6IjAiLCJyaWdodCI6IjAiLCJib3R0b20iOiJ2YXI6cHJlc2V0fHNwYWNpbmd8NjAiLCJsZWZ0IjoiMCJ9fX0sIm5vVG9wU3BhY2luZyI6dHJ1ZX0gLS0+CjwhLS0gL3dwOnBhcmFncmFwaCAtLT4KCjwhLS0gd3A6aGVhZGluZyB7ImxldmVsIjozLCJzdHlsZSI6eyJzcGFjaW5nIjp7Im1hcmdpbiI6eyJ0b3AiOiJ2YXI6cHJlc2V0fHNwYWNpbmd8NjAifX19fSAtLT4KPGgzIGNsYXNzPSJ3cC1ibG9jay1oZWFkaW5nIiBzdHlsZT0ibWFyZ2luLXRvcDp2YXIoLS13cC0tcHJlc2V0LS1zcGFjaW5nLS02MCkiPjxzcGFuIHN0eWxlPSJ0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTsiPklucHV0IC8gT3V0cHV0PC9zcGFuPjwvaDM+CjwhLS0gL3dwOmhlYWRpbmcgLS0+CgoKPCEtLSB3cDpoZWFkaW5nIHsibGV2ZWwiOjMsInN0eWxlIjp7InNwYWNpbmciOnsibWFyZ2luIjp7InRvcCI6InZhcjpwcmVzZXR8c3BhY2luZ3w2MCJ9fX19IC0tPgo8aDMgY2xhc3M9IndwLWJsb2NrLWhlYWRpbmciIHN0eWxlPSJtYXJnaW4tdG9wOnZhcigtLXdwLS1wcmVzZXQtLXNwYWNpbmctLTYwKSI+PHNwYW4gc3R5bGU9InRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lOyI+Q29kZSBFeGFtcGxlPC9zcGFuPjwvaDM+CjwhLS0gL3dwOmhlYWRpbmcgLS0+Cgo8IS0tIHdwOmNvYmxvY2tzL2FjY29yZGlvbiAtLT4KPGRpdiBjbGFzcz0id3AtYmxvY2stY29ibG9ja3MtYWNjb3JkaW9uIj48IS0tIHdwOmNvYmxvY2tzL2FjY29yZGlvbi1pdGVtIHsidGl0bGUiOiJIVE1ML0phdmFTY3JpcHQgKGNsaWNrIHRvIGNsb3NlKSIsIm9wZW4iOnRydWUsImN1c3RvbUJhY2tncm91bmRDb2xvciI6IiNmZmU1Y2UiLCJib3JkZXJDb2xvciI6IiNmZmU1Y2UifSAtLT4KPGRpdiBjbGFzcz0id3AtYmxvY2stY29ibG9ja3MtYWNjb3JkaW9uLWl0ZW0iPjxkZXRhaWxzIG9wZW4+PHN1bW1hcnkgY2xhc3M9IndwLWJsb2NrLWNvYmxvY2tzLWFjY29yZGlvbi1pdGVtX190aXRsZSBoYXMtYmFja2dyb3VuZCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6I2ZmZTVjZSI+SFRNTC9KYXZhU2NyaXB0IChjbGljayB0byBjbG9zZSk8L3N1bW1hcnk+PGRpdiBjbGFzcz0id3AtYmxvY2stY29ibG9ja3MtYWNjb3JkaW9uLWl0ZW1fX2NvbnRlbnQiIHN0eWxlPSJib3JkZXItY29sb3I6I2ZmZTVjZSI+PCEtLSB3cDpsb29zLWhjYi9jb2RlLWJsb2NrIHsibGFuZ1R5cGUiOiJodG1sIiwibGFuZ05hbWUiOiJIVE1MIn0gLS0+CjwhLS0gL3dwOmxvb3MtaGNiL2NvZGUtYmxvY2sgLS0+PC9kaXY+PC9kZXRhaWxzPjwvZGl2Pgo8IS0tIC93cDpjb2Jsb2Nrcy9hY2NvcmRpb24taXRlbSAtLT48L2Rpdj4KPCEtLSAvd3A6Y29ibG9ja3MvYWNjb3JkaW9uIC0tPgoKPCEtLSB3cDpodG1sIC0tPgo8L2Rpdj48L2Rpdj4KPCEtLSAvd3A6aHRtbCAtLT4KCjwhLS0gd3A6aGVhZGluZyB7ImxldmVsIjozLCJzdHlsZSI6eyJzcGFjaW5nIjp7Im1hcmdpbiI6eyJ0b3AiOiJ2YXI6cHJlc2V0fHNwYWNpbmd8NjAifX19fSAtLT4KPGgzIGNsYXNzPSJ3cC1ibG9jay1oZWFkaW5nIiBzdHlsZT0ibWFyZ2luLXRvcDp2YXIoLS13cC0tcHJlc2V0LS1zcGFjaW5nLS02MCkiPjxzcGFuIHN0eWxlPSJ0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTsiPkNhcHR1cmU8L3NwYW4+PC9oMz4KPCEtLSAvd3A6aGVhZGluZyAtLT4KCjwhLS0gL3dwOmltYWdlIC0tPgoKPCEtLSB3cDpoZWFkaW5nIHsibGV2ZWwiOjMsInN0eWxlIjp7InNwYWNpbmciOnsibWFyZ2luIjp7InRvcCI6InZhcjpwcmVzZXR8c3BhY2luZ3w2MCJ9fX19IC0tPgo8IS0tIC93cDpoZWFkaW5nIC0tPgoKCjwhLS0gd3A6aGVhZGluZyB7ImxldmVsIjozLCJzdHlsZSI6eyJzcGFjaW5nIjp7Im1hcmdpbiI6eyJ0b3AiOiJ2YXI6cHJlc2V0fHNwYWNpbmd8NjAifX19fSAtLT4KPCEtLSAvd3A6aGVhZGluZyAtLT4KCiBoZXR0cHNzcG90ZXN0ZXJhZGVvZGVlZXN0dG9vcGVuYWlwdWlub2FzdG9yYXNhbiBjYXNhdGVpYWljb25zdHJhbnN0ZWFuIHVpZSBlICAgbG9jYWxTdG9yYWdlYXRleHRQYW5lbEhpZGVDb2xvcnRleHRQYW5lbFNob3dTcGFjaW5nQ29udHJvbHN0ZXh0UGFuZWxIZWFkaW5nRm9udFNpemVzbj5xR3VpZGU6IHRyZ2dzdGF0ZXNhdmVkQXRzdGF0ZXNhdmVkQnlkb2N1bWVudHNsdWd0ZXh0UGFuZWxIaWRlQ29sb3J0ZXh0UGFuZWxTaG93U3BhY2luZ0NvbnRyb2xzdGV4dFBhbmVsSGVhZGluZ0ZvbnRTaXplc29yZGVyZWR2YWx1ZXN0ZXh0UGFuZWxIZWFkaW5nRm9udFNpemVzdGV4dFBhbmVsTGluZUhlaWdodHRleHRQYW5lbEhpZGVDb2xvcnRleHRQYW5lbFNob3dTcGFjaW5nQ29udHJvbHM8IS0tIHdwOmxpc3QgLS0+Cjx1bCBjbGFzcz0id3AtYmxvY2stbGlzdCI+PCEtLSB3cDpsaXN0LWl0ZW0gLS0+CjxsaT7ihpAgU1RSSU5HIChTVFJJTkdfVEVYVEZJRUxEKSA8Y29kZT5xX2h1bWFuX2Fuc3dlcl9ib2R5PC9jb2RlPjwvbGk+CjwhLS0gL3dwOmxpc3QtaXRlbSAtLT4KPCEtLSB3cDpsaXN0LWl0ZW0gLS0+CjxsaT7ihpAgbG9jYWxTdG9yYWdlIDxjb2RlPmFwaUtleTwvY29kZT48L2xpPgo8IS0tIC93cDpsaXN0LWl0ZW0gLS0+Cgo8IS0tIHdwOmxpc3QtaXRlbSAtLT4KPGxpPuKGkCBsb2NhbFN0b3JhZ2UgPGNvZGU+aW5zdHJ1Y3Rpb248L2NvZGU+PC9saT4KPCEtLSAvd3A6bGlzdC1pdGVtIC0tPgoKPCEtLSB3cDpsaXN0LWl0ZW0gLS0+CjxsaT7ihpIgPGNvZGU+cHJlI3VzZXJfcmVzdWx0PC9jb2RlPjwvbGk+CjwhLS0gL3dwOmxpc3QtaXRlbSAtLT4KCjwhLS0gd3A6bGlzdC1pdGVtIC0tPgo8bGk+4oaSIDxjb2RlPmRpdiN1c2VyX3N0YXR1czwvY29kZT48L2xpPgo8IS0tIC93cDpsaXN0LWl0ZW0gLS0+PC91bD4KPCEtLSAvd3A6bGlzdCAtLT4KCmRyb3BDYXB0ZXh0UGFuZWxIaWRlQ29sb3J0ZXh0UGFuZWxTaG93U3BhY2luZ0NvbnRyb2xzdGV4dFBhbmVsSGVhZGluZ0ZvbnRTaXplc2NsaWVudElkaXNWYWxpZG5hbWVhdHRyaWJ1dGVzb3JkZXJlZHZhbHVlc2ZvbnRXZWlnaHR0ZXh0VHJhbnNmb3Jtbm9Cb3R0b21TcGFjaW5nbm9Ub3BTcGFjaW5nVUFHSGlkZURlc2t0b3BVQUdIaWRlTW9iVUFHSGlkZVRhYlVBR0xvZ2dlZEluVUFHTG9nZ2VkT3V0VUFHRGF5VUFHUmVzcG9uc2l2ZUNvbmRpdGlvbnNVQUdBbmltYXRpb25UeXBlVUFHQW5pbWF0aW9uVGltZVVBR0FuaW1hdGlvbkRlbGF5VUFHQW5pbWF0aW9uRWFzaW5nVUFHQW5pbWF0aW9uUmVwZWF0VUFHUG9zaXRpb25VQUdTdGlja3lMb2NhdGlvblVBR1N0aWNreVJlc3RyaWN0ZWRVQUdTdGlja3lPZmZzZXR0ZXh0UGFuZWxIZWFkaW5nRm9udFNpemVzdGV4dFBhbmVsTGluZUhlaWdodHRleHRQYW5lbEhpZGVDb2xvcnRleHRQYW5lbFNob3dTcGFjaW5nQ29udHJvbHNpbm5lckJsb2NrczwhLS0gd3A6cGFyYWdyYXBoIC0tPgo8IS0tIC93cDpwYXJhZ3JhcGggLS0+Cgo8ZGl2IGNsYXNzPSJoY2Jfd3JhcCI+PHByZSBjbGFzcz0icHJpc20gdW5kZWZpbmVkLW51bWJlcnMgbGFuZy1odG1sIiBkYXRhLWxhbmc9IkhUTUwiPjxjb2RlPiZsdDtzdHlsZSZndDsKLyogQUnlkbzjgbPlh7rjgZfjg5zjgr\/jg7MgKi8KLnVzZXJfYWlCdG4gewpib3JkZXI6IDFweCBzb2xpZCAjY2NjOwpwYWRkaW5nOiA2cHggMTJweDsKYm9yZGVyLXJhZGl1czogMjBweDsKY3Vyc29yOiBwb2ludGVyOwpmb250LXNpemU6IDEzcHg7CnRyYW5zaXRpb246IGFsbCAwLjJzIGVhc2U7CmNvbG9yOiAjMzMzOwptYXJnaW4tcmlnaHQ6IDhweDsKbWFyZ2luLWJvdHRvbTogMTJweDsKYmFja2dyb3VuZC1jb2xvcjogI2ZmZjsKZm9udC1mYW1pbHk6IHN5c3RlbS11aSwgLWFwcGxlLXN5c3RlbSwgc2Fucy1zZXJpZjsKfQoudXNlcl9haUJ0bjpob3ZlciB7IGJhY2tncm91bmQtY29sb3I6ICNmMGYwZjA7IGJvcmRlci1jb2xvcjogI2JiYjsgfQoudXNlcl9haUJ0bjpkaXNhYmxlZCB7IG9wYWNpdHk6IDAuNTsgY3Vyc29yOiBub3QtYWxsb3dlZDsgYmFja2dyb3VuZC1jb2xvcjogI2VlZTsgfQoKLyogQ09ORklH44Oc44K\/44OzICovCiN1c2VyX2J0bkNvbmZpZyB7CmJvcmRlcjogMXB4IHNvbGlkICM0YTU1Njg7CnBhZGRpbmc6IDZweCAxNnB4Owpib3JkZXItcmFkaXVzOiA0cHg7CmN1cnNvcjogcG9pbnRlcjsKZm9udC1zaXplOiAxM3B4Owpmb250LXdlaWdodDogYm9sZDsKdHJhbnNpdGlvbjogYWxsIDAuMnMgZWFzZTsKY29sb3I6ICNmZmY7CmJhY2tncm91bmQtY29sb3I6ICM0YTU1Njg7Cm1hcmdpbi1yaWdodDogMTZweDsKbWFyZ2luLWJvdHRvbTogMTJweDsKZm9udC1mYW1pbHk6IHN5c3RlbS11aSwgLWFwcGxlLXN5c3RlbSwgc2Fucy1zZXJpZjsKfQojdXNlcl9idG5Db25maWc6aG92ZXIgeyBiYWNrZ3JvdW5kLWNvbG9yOiAjMmQzNzQ4OyBib3JkZXItY29sb3I6ICMxYTIwMmM7IH0KI3VzZXJfYnRuQ29uZmlnLnVzZXJfYWN0aXZlIHsgYmFja2dyb3VuZC1jb2xvcjogIzJiNmNiMDsgYm9yZGVyLWNvbG9yOiAjMmM1MjgyOyBib3gtc2hhZG93OiBpbnNldCAwIDJweCA0cHggcmdiYSgwLDAsMCwwLjIpOyB9CgovKiAtLS0g44Gd44Gu5LuW44Gu6Kit5a6a44Ko44Oq44Ki6KaB57SgIC0tLSAqLwoudXNlcl9sYmwgewpkaXNwbGF5OiBibG9jazsKbWFyZ2luOiAxMnB4IDAgNHB4IDA7CmZvbnQtd2VpZ2h0OiBib2xkOwpmb250LXNpemU6IDEzcHg7CmZvbnQtZmFtaWx5OiBzeXN0ZW0tdWksIC1hcHBsZS1zeXN0ZW0sIHNhbnMtc2VyaWY7Cn0KLnVzZXJfZGlzcGxheV92YWwgewpiYWNrZ3JvdW5kOiAjZTllOWU5OwpwYWRkaW5nOiA0cHggOHB4Owpib3JkZXItcmFkaXVzOiA0cHg7CmZvbnQtZmFtaWx5OiBNZW5sbywgTW9uYWNvLCBDb25zb2xhcywgbW9ub3NwYWNlOwpjb2xvcjogIzMzMzsKZm9udC1zaXplOiAxM3B4Owp9Ci51c2VyX2Rpc3BsYXlfaW5zdCB7CmJhY2tncm91bmQ6ICNlOWU5ZTk7CnBhZGRpbmc6IDhweDsKYm9yZGVyLXJhZGl1czogNHB4Owp3aGl0ZS1zcGFjZTogcHJlLXdyYXA7CmNvbG9yOiAjMzMzOwptaW4taGVpZ2h0OiAxLjVlbTsKbWFyZ2luLWJvdHRvbTogNHB4Owpmb250LXNpemU6IDEzcHg7CmZvbnQtZmFtaWx5OiBzeXN0ZW0tdWksIC1hcHBsZS1zeXN0ZW0sIHNhbnMtc2VyaWY7Cn0KLnVzZXJfYnRuRWRpdCB7CnBhZGRpbmc6IDJweCA4cHg7CmZvbnQtc2l6ZTogMTFweDsKY3Vyc29yOiBwb2ludGVyOwpib3JkZXI6IDFweCBzb2xpZCAjYmJiOwpiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmOwpib3JkZXItcmFkaXVzOiA0cHg7Cm1hcmdpbi1sZWZ0OiA4cHg7CnZlcnRpY2FsLWFsaWduOiBtaWRkbGU7Cn0KLnVzZXJfYnRuRWRpdDpob3ZlciB7IGJhY2tncm91bmQtY29sb3I6ICNlZWU7IH0KI3VzZXJfYXBpS2V5LCAjdXNlcl9pbnN0cnVjdGlvbiB7CndpZHRoOiAxMDAlOwpib3gtc2l6aW5nOiBib3JkZXItYm94OwpwYWRkaW5nOiA2cHg7CmJvcmRlcjogMXB4IHNvbGlkICNjY2M7CmJvcmRlci1yYWRpdXM6IDRweDsKZm9udC1mYW1pbHk6IGluaGVyaXQ7CmZvbnQtc2l6ZTogMTNweDsKfQojdXNlcl9pbnN0cnVjdGlvbiB7IHJlc2l6ZTogdmVydGljYWw7IG1pbi1oZWlnaHQ6IDRlbTsgfQoudXNlcl9hY3Rpb25CdG4gewpwYWRkaW5nOiA0cHggMTJweDsKYm9yZGVyOiAxcHggc29saWQgI2JiYjsKYmFja2dyb3VuZC1jb2xvcjogI2ZmZjsKYm9yZGVyLXJhZGl1czogNHB4OwpjdXJzb3I6IHBvaW50ZXI7CmZvbnQtc2l6ZTogMTNweDsKfQoudXNlcl9hY3Rpb25CdG46aG92ZXIgeyBiYWNrZ3JvdW5kLWNvbG9yOiAjZWVlOyB9CiN1c2VyX3Jlc3VsdCB7CmJhY2tncm91bmQtY29sb3I6ICNmOWY5Zjk7CmJvcmRlcjogMXB4IHNvbGlkICNkZGQ7CmJvcmRlci1yYWRpdXM6IDRweDsKcGFkZGluZzogMTJweDsKbWluLWhlaWdodDogOGVtOwp3aGl0ZS1zcGFjZTogcHJlLXdyYXA7CndvcmQtYnJlYWs6IGJyZWFrLXdvcmQ7CmZvbnQtZmFtaWx5OiBNZW5sbywgTW9uYWNvLCBDb25zb2xhcywgJnF1b3Q7Q291cmllciBOZXcmcXVvdDssIG1vbm9zcGFjZTsKZm9udC1zaXplOiAxNHB4OwpsaW5lLWhlaWdodDogMS42Owpjb2xvcjogIzIyMjsKbWFyZ2luLXRvcDogMTZweDsKfQojdXNlcl9zdGF0dXMgewpmb250OiAxMnB4LzEuNCBzeXN0ZW0tdWksIHNhbnMtc2VyaWY7Cm9wYWNpdHk6IDAuNzU7Cm1hcmdpbi10b3A6IDhweDsKbWluLWhlaWdodDogMS40ZW07Cn0KCkBrZXlmcmFtZXMgYmxpbmsgeyA1MCUgeyBvcGFjaXR5OiAwOyB9IH0KLnVzZXJfY3Vyc29yIHsKZGlzcGxheTogaW5saW5lLWJsb2NrOwp3aWR0aDogOHB4OwpoZWlnaHQ6IDFlbTsKYmFja2dyb3VuZC1jb2xvcjogIzMzMzsKbWFyZ2luLWxlZnQ6IDJweDsKYW5pbWF0aW9uOiBibGluayAxcyBzdGVwLWVuZCBpbmZpbml0ZTsKdmVydGljYWwtYWxpZ246IHRleHQtYm90dG9tOwp9CiZsdDsvc3R5bGUmZ3Q7CgombHQ7YnV0dG9uIHR5cGU9JnF1b3Q7YnV0dG9uJnF1b3Q7IGlkPSZxdW90O3VzZXJfYnRuQ29uZmlnJnF1b3Q7Jmd0O0NPTkZJRyZsdDsvYnV0dG9uJmd0OwombHQ7YnV0dG9uIHR5cGU9JnF1b3Q7YnV0dG9uJnF1b3Q7IGNsYXNzPSZxdW90O3VzZXJfYWlCdG4mcXVvdDsmZ3Q7Z3B0LTUuNCZsdDsvYnV0dG9uJmd0OwombHQ7YnV0dG9uIHR5cGU9JnF1b3Q7YnV0dG9uJnF1b3Q7IGNsYXNzPSZxdW90O3VzZXJfYWlCdG4mcXVvdDsmZ3Q7Z3B0LTUuNC1taW5pJmx0Oy9idXR0b24mZ3Q7CiZsdDtidXR0b24gdHlwZT0mcXVvdDtidXR0b24mcXVvdDsgY2xhc3M9JnF1b3Q7dXNlcl9haUJ0biZxdW90OyZndDtncHQtNS40LW5hbm8mbHQ7L2J1dHRvbiZndDsKJmx0O2J1dHRvbiB0eXBlPSZxdW90O2J1dHRvbiZxdW90OyBjbGFzcz0mcXVvdDt1c2VyX2FpQnRuJnF1b3Q7Jmd0O2dwdC01LW5hbm8mbHQ7L2J1dHRvbiZndDsKJmx0O2J1dHRvbiB0eXBlPSZxdW90O2J1dHRvbiZxdW90OyBjbGFzcz0mcXVvdDt1c2VyX2FpQnRuJnF1b3Q7Jmd0O2dwdC01LW1pbmkmbHQ7L2J1dHRvbiZndDsKJmx0O2J1dHRvbiB0eXBlPSZxdW90O2J1dHRvbiZxdW90OyBjbGFzcz0mcXVvdDt1c2VyX2FpQnRuJnF1b3Q7Jmd0O2dwdC01Jmx0Oy9idXR0b24mZ3Q7CiZsdDtidXR0b24gdHlwZT0mcXVvdDtidXR0b24mcXVvdDsgY2xhc3M9JnF1b3Q7dXNlcl9haUJ0biZxdW90OyZndDtncHQtNS4zLWNvZGV4Jmx0Oy9idXR0b24mZ3Q7CiZsdDtidXR0b24gdHlwZT0mcXVvdDtidXR0b24mcXVvdDsgY2xhc3M9JnF1b3Q7dXNlcl9haUJ0biZxdW90OyZndDtncHQtNS1jb2RleCZsdDsvYnV0dG9uJmd0OwombHQ7c3BhbiBpZD0mcXVvdDt1c2VyX2xibF9hcGkmcXVvdDsgY2xhc3M9JnF1b3Q7dXNlcl9sYmwmcXVvdDsgc3R5bGU9JnF1b3Q7ZGlzcGxheTpub25lOyZxdW90OyZndDtBUEnjgq3jg7wgLyBBUEkgS2V5OiZsdDsvc3BhbiZndDsKJmx0O3NwYW4gaWQ9JnF1b3Q7dXNlcl9hcGlLZXlfZGlzcGxheSZxdW90OyBjbGFzcz0mcXVvdDt1c2VyX2Rpc3BsYXlfdmFsJnF1b3Q7IHN0eWxlPSZxdW90O2Rpc3BsYXk6bm9uZTsmcXVvdDsmZ3Q7Jmx0Oy9zcGFuJmd0OwombHQ7YnV0dG9uIHR5cGU9JnF1b3Q7YnV0dG9uJnF1b3Q7IGNsYXNzPSZxdW90O3VzZXJfYnRuRWRpdCZxdW90OyBpZD0mcXVvdDt1c2VyX2J0bl9lZGl0QXBpS2V5JnF1b3Q7IHN0eWxlPSZxdW90O2Rpc3BsYXk6bm9uZTsmcXVvdDsmZ3Q7RWRpdCBLRVkmbHQ7L2J1dHRvbiZndDsKJmx0O3NwYW4gaWQ9JnF1b3Q7dXNlcl9hcGlLZXlfZWRpdF9hcmVhJnF1b3Q7IHN0eWxlPSZxdW90O2Rpc3BsYXk6bm9uZTsgd2lkdGg6MTAwJTsmcXVvdDsmZ3Q7Jmx0Oy9zcGFuJmd0OwombHQ7c3BhbiBpZD0mcXVvdDt1c2VyX2xibF9pbnN0JnF1b3Q7IGNsYXNzPSZxdW90O3VzZXJfbGJsJnF1b3Q7IHN0eWxlPSZxdW90O2Rpc3BsYXk6bm9uZTsmcXVvdDsmZ3Q75oyH56S6IC8gSW5zdHJ1Y3Rpb24gKOWFpeWKm+WvvuixoTogJmx0O3NwYW4gaWQ9JnF1b3Q7dXNlcl9sYmxfdGFyZ2V0X2ZpZWxkJnF1b3Q7Jmd0OyZsdDsvc3BhbiZndDspOiZsdDsvc3BhbiZndDsKJmx0O3NwYW4gaWQ9JnF1b3Q7dXNlcl9pbnN0cnVjdGlvbl9kaXNwbGF5JnF1b3Q7IGNsYXNzPSZxdW90O3VzZXJfZGlzcGxheV9pbnN0JnF1b3Q7IHN0eWxlPSZxdW90O2Rpc3BsYXk6bm9uZTsmcXVvdDsmZ3Q7Jmx0Oy9zcGFuJmd0OwombHQ7YnV0dG9uIHR5cGU9JnF1b3Q7YnV0dG9uJnF1b3Q7IGNsYXNzPSZxdW90O3VzZXJfYnRuRWRpdCZxdW90OyBpZD0mcXVvdDt1c2VyX2J0bl9lZGl0SW5zdCZxdW90OyBzdHlsZT0mcXVvdDttYXJnaW4tbGVmdDowOyBtYXJnaW4tdG9wOjRweDsgZGlzcGxheTpub25lOyZxdW90OyZndDtFZGl0IFBST01QVCZsdDsvYnV0dG9uJmd0OwombHQ7c3BhbiBpZD0mcXVvdDt1c2VyX2luc3RfZWRpdF9hcmVhJnF1b3Q7IHN0eWxlPSZxdW90O2Rpc3BsYXk6bm9uZTsgd2lkdGg6MTAwJTsmcXVvdDsmZ3Q7Jmx0Oy9zcGFuJmd0OwombHQ7aHIgaWQ9JnF1b3Q7dXNlcl9zZXRfaHImcXVvdDsgc3R5bGU9JnF1b3Q7bWFyZ2luOjE2cHggMCAxMnB4IDA7IGJvcmRlcjpub25lOyBib3JkZXItdG9wOjFweCBkYXNoZWQgI2NjYzsgZGlzcGxheTpub25lOyZxdW90OyZndDsKJmx0O2J1dHRvbiB0eXBlPSZxdW90O2J1dHRvbiZxdW90OyBpZD0mcXVvdDt1c2VyX2J0blNhdmUmcXVvdDsgY2xhc3M9JnF1b3Q7dXNlcl9hY3Rpb25CdG4mcXVvdDsgc3R5bGU9JnF1b3Q7ZGlzcGxheTpub25lOyZxdW90OyZndDvoqK3lrprjgpLkv53lrZggLyBTYXZlJmx0Oy9idXR0b24mZ3Q7CiZsdDtidXR0b24gdHlwZT0mcXVvdDtidXR0b24mcXVvdDsgaWQ9JnF1b3Q7dXNlcl9idG5DbGVhciZxdW90OyBjbGFzcz0mcXVvdDt1c2VyX2FjdGlvbkJ0biZxdW90OyBzdHlsZT0mcXVvdDtkaXNwbGF5Om5vbmU7JnF1b3Q7Jmd0O+OCr+ODquOCoiAvIENsZWFyJmx0Oy9idXR0b24mZ3Q7CiZsdDtzcGFuIGlkPSZxdW90O3VzZXJfc2V0dGluZ1N0YXR1cyZxdW90OyBzdHlsZT0mcXVvdDttYXJnaW4tbGVmdDo4cHg7IGNvbG9yOiMwMDY2Y2M7IGZvbnQtd2VpZ2h0OmJvbGQ7IGZvbnQtc2l6ZToxM3B4OyBkaXNwbGF5Om5vbmU7JnF1b3Q7Jmd0OyZsdDsvc3BhbiZndDsKJmx0O3ByZSBpZD0mcXVvdDt1c2VyX3Jlc3VsdCZxdW90OyZndDsmbHQ7L3ByZSZndDsKJmx0O2RpdiBpZD0mcXVvdDt1c2VyX3N0YXR1cyZxdW90OyZndDsmbHQ7L2RpdiZndDsKCiZsdDtzY3JpcHQmZ3Q7CnFicG1zLmZvcm0ub24oJiMzOTtyZWFkeSYjMzk7LCAoKSA9Jmd0OyB7CiAgLy8gLS0tIDAuIOWvvuixoeODleOCo+ODvOODq+ODieKYheKYheKYhSDnt6jpm4bjgZfjgabjgY\/jgaDjgZXjgYQgLyBFRElUIGhlcmUg4piF4piF4piFIC0tLQogIGNvbnN0IFRBUkdFVF9GSUVMRF9OQU1FID0gJnF1b3Q7cV9odW1hbl9hbnN3ZXJfYm9keSZxdW90OzsKICAKICAvLyDjg6njg5njg6vjgavlr77osaHjg5XjgqPjg7zjg6vjg4nlkI3jgpLlj43mmKAKICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgmcXVvdDt1c2VyX2xibF90YXJnZXRfZmllbGQmcXVvdDspLmlubmVyVGV4dCA9IFRBUkdFVF9GSUVMRF9OQU1FOwoKICAvLyAtLS0gMS4g5YuV55qE44Gq5YWl5Yqb6KaB57Sg44Gu55Sf5oiQIC0tLQogIGNvbnN0IGFwaUtleUlucHV0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgmcXVvdDtpbnB1dCZxdW90Oyk7CiAgYXBpS2V5SW5wdXQudHlwZSA9ICZxdW90O3Bhc3N3b3JkJnF1b3Q7OwogIGFwaUtleUlucHV0LmlkID0gJnF1b3Q7dXNlcl9hcGlLZXkmcXVvdDs7CiAgYXBpS2V5SW5wdXQucGxhY2Vob2xkZXIgPSAmcXVvdDtzay0uLi4mcXVvdDs7CiAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJnF1b3Q7dXNlcl9hcGlLZXlfZWRpdF9hcmVhJnF1b3Q7KS5hcHBlbmRDaGlsZChhcGlLZXlJbnB1dCk7CiAgY29uc3QgaW5zdHJ1Y3Rpb25JbnB1dCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJnF1b3Q7dGV4dGFyZWEmcXVvdDspOwogIGluc3RydWN0aW9uSW5wdXQuaWQgPSAmcXVvdDt1c2VyX2luc3RydWN0aW9uJnF1b3Q7OwogIGluc3RydWN0aW9uSW5wdXQucGxhY2Vob2xkZXIgPSAmcXVvdDvkvos6IOOBguOBquOBn+OBr+WEquengOOBquOCouOCt+OCueOCv+ODs+ODiOOBp+OBmeOAguewoea9lOOBq+etlOOBiOOBpuOBj+OBoOOBleOBhOOAgiAvIEV4OiBZb3UgYXJlIGEgaGVscGZ1bCBhc3Npc3RhbnQuLi4mcXVvdDs7CiAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJnF1b3Q7dXNlcl9pbnN0X2VkaXRfYXJlYSZxdW90OykuYXBwZW5kQ2hpbGQoaW5zdHJ1Y3Rpb25JbnB1dCk7CgogIC8vIC0tLSAyLiDlkITnqK7lrprmlbDjgajopoHntKDjga7lj5blvpcgLS0tCiAgY29uc3QgU1RPUkFHRV9LRVlfQVBJID0gJnF1b3Q7dXNlcl9vcGVuYWlfYXBpX2tleSZxdW90OzsKICBjb25zdCBTVE9SQUdFX0tFWV9JTlNUID0gJnF1b3Q7dXNlcl9vcGVuYWlfaW5zdHJ1Y3Rpb24mcXVvdDs7CiAgY29uc3QgYnRuQ29uZmlnID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJnF1b3Q7dXNlcl9idG5Db25maWcmcXVvdDspOwogIGNvbnN0IGFpQnV0dG9ucyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJnF1b3Q7LnVzZXJfYWlCdG4mcXVvdDspOwogIGNvbnN0IHJlc3VsdEVsZW1lbnQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgmcXVvdDt1c2VyX3Jlc3VsdCZxdW90Oyk7CiAgY29uc3Qgc3RhdHVzRWxlbWVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCZxdW90O3VzZXJfc3RhdHVzJnF1b3Q7KTsKICBjb25zdCBzZXR0aW5nU3RhdHVzID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJnF1b3Q7dXNlcl9zZXR0aW5nU3RhdHVzJnF1b3Q7KTsKCiAgLy8gVUnnirbmhYvnrqHnkIbjg5Xjg6njgrAKICBsZXQgaXNDb25maWdPcGVuID0gZmFsc2U7CiAgbGV0IGlzRWRpdGluZ0FwaSA9IGZhbHNlOwogIGxldCBpc0VkaXRpbmdJbnN0ID0gZmFsc2U7CgogIC8vIC0tLSAzLiBVSeOBruihqOekuuWIh+OCiuabv+OBiOmWouaVsCAo44OV44Op44OD44OI44Gq6KaB57Sg44KS5YCL5Yil44Gr5Yi25b6hKSAtLS0KICBmdW5jdGlvbiByZW5kZXJVSSgpIHsKICAgIGNvbnN0IHN0b3JlZEtleSA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKFNUT1JBR0VfS0VZX0FQSSkgfHwgJnF1b3Q7JnF1b3Q7OwogICAgY29uc3Qgc3RvcmVkSW5zdCA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKFNUT1JBR0VfS0VZX0lOU1QpIHx8ICZxdW90OyZxdW90OzsKICAgIGFwaUtleUlucHV0LnZhbHVlID0gc3RvcmVkS2V5OwogICAgaW5zdHJ1Y3Rpb25JbnB1dC52YWx1ZSA9IHN0b3JlZEluc3Q7CiAgICBjb25zdCBoYXNLZXkgPSAhIXN0b3JlZEtleTsKICAgIGNvbnN0IGhhc0luc3QgPSAhIXN0b3JlZEluc3Q7CiAgICBjb25zdCBzaG93QXBpRGlzcCA9IGlzQ29uZmlnT3BlbiAmJiBoYXNLZXkgJiYgIWlzRWRpdGluZ0FwaTsKICAgIGNvbnN0IHNob3dBcGlFZGl0ID0gaXNDb25maWdPcGVuICYmICghaGFzS2V5IHx8IGlzRWRpdGluZ0FwaSk7CiAgICBjb25zdCBzaG93SW5zdERpc3AgPSBpc0NvbmZpZ09wZW4gJiYgaGFzSW5zdCAmJiAhaXNFZGl0aW5nSW5zdDsKICAgIGNvbnN0IHNob3dJbnN0RWRpdCA9IGlzQ29uZmlnT3BlbiAmJiAoIWhhc0luc3QgfHwgaXNFZGl0aW5nSW5zdCk7CgogICAgaWYgKGlzQ29uZmlnT3BlbikgewogICAgICBidG5Db25maWcuY2xhc3NMaXN0LmFkZCgmcXVvdDt1c2VyX2FjdGl2ZSZxdW90Oyk7CiAgICB9IGVsc2UgewogICAgICBidG5Db25maWcuY2xhc3NMaXN0LnJlbW92ZSgmcXVvdDt1c2VyX2FjdGl2ZSZxdW90Oyk7CiAgICB9CgogICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJnF1b3Q7dXNlcl9sYmxfYXBpJnF1b3Q7KS5zdHlsZS5kaXNwbGF5ID0gaXNDb25maWdPcGVuID8gJnF1b3Q7YmxvY2smcXVvdDsgOiAmcXVvdDtub25lJnF1b3Q7OwogICAgY29uc3QgZUtleURpc3AgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgmcXVvdDt1c2VyX2FwaUtleV9kaXNwbGF5JnF1b3Q7KTsKICAgIGVLZXlEaXNwLnN0eWxlLmRpc3BsYXkgPSBzaG93QXBpRGlzcCA\/ICZxdW90O2lubGluZS1ibG9jayZxdW90OyA6ICZxdW90O25vbmUmcXVvdDs7CiAgICBpZiAoc2hvd0FwaURpc3ApIGVLZXlEaXNwLmlubmVyVGV4dCA9IHN0b3JlZEtleS5sZW5ndGggJmd0OyAxMCA\/IHN0b3JlZEtleS5zdWJzdHJpbmcoMCwgMTApICsgJnF1b3Q7Li4uJnF1b3Q7IDogc3RvcmVkS2V5OwogICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJnF1b3Q7dXNlcl9idG5fZWRpdEFwaUtleSZxdW90Oykuc3R5bGUuZGlzcGxheSA9IHNob3dBcGlEaXNwID8gJnF1b3Q7aW5saW5lLWJsb2NrJnF1b3Q7IDogJnF1b3Q7bm9uZSZxdW90OzsKICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCZxdW90O3VzZXJfYXBpS2V5X2VkaXRfYXJlYSZxdW90Oykuc3R5bGUuZGlzcGxheSA9IHNob3dBcGlFZGl0ID8gJnF1b3Q7YmxvY2smcXVvdDsgOiAmcXVvdDtub25lJnF1b3Q7OwogICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJnF1b3Q7dXNlcl9sYmxfaW5zdCZxdW90Oykuc3R5bGUuZGlzcGxheSA9IGlzQ29uZmlnT3BlbiA\/ICZxdW90O2Jsb2NrJnF1b3Q7IDogJnF1b3Q7bm9uZSZxdW90OzsKICAgIGNvbnN0IGVJbnN0RGlzcCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCZxdW90O3VzZXJfaW5zdHJ1Y3Rpb25fZGlzcGxheSZxdW90Oyk7CiAgICBlSW5zdERpc3Auc3R5bGUuZGlzcGxheSA9IHNob3dJbnN0RGlzcCA\/ICZxdW90O2Jsb2NrJnF1b3Q7IDogJnF1b3Q7bm9uZSZxdW90OzsKICAgIGlmIChzaG93SW5zdERpc3ApIGVJbnN0RGlzcC5pbm5lclRleHQgPSBzdG9yZWRJbnN0OwogICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJnF1b3Q7dXNlcl9idG5fZWRpdEluc3QmcXVvdDspLnN0eWxlLmRpc3BsYXkgPSBzaG93SW5zdERpc3AgPyAmcXVvdDtpbmxpbmUtYmxvY2smcXVvdDsgOiAmcXVvdDtub25lJnF1b3Q7OwogICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJnF1b3Q7dXNlcl9pbnN0X2VkaXRfYXJlYSZxdW90Oykuc3R5bGUuZGlzcGxheSA9IHNob3dJbnN0RWRpdCA\/ICZxdW90O2Jsb2NrJnF1b3Q7IDogJnF1b3Q7bm9uZSZxdW90OzsKICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCZxdW90O3VzZXJfc2V0X2hyJnF1b3Q7KS5zdHlsZS5kaXNwbGF5ID0gaXNDb25maWdPcGVuID8gJnF1b3Q7YmxvY2smcXVvdDsgOiAmcXVvdDtub25lJnF1b3Q7OwogICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJnF1b3Q7dXNlcl9idG5TYXZlJnF1b3Q7KS5zdHlsZS5kaXNwbGF5ID0gaXNDb25maWdPcGVuID8gJnF1b3Q7aW5saW5lLWJsb2NrJnF1b3Q7IDogJnF1b3Q7bm9uZSZxdW90OzsKICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCZxdW90O3VzZXJfYnRuQ2xlYXImcXVvdDspLnN0eWxlLmRpc3BsYXkgPSBpc0NvbmZpZ09wZW4gPyAmcXVvdDtpbmxpbmUtYmxvY2smcXVvdDsgOiAmcXVvdDtub25lJnF1b3Q7OwogICAgc2V0dGluZ1N0YXR1cy5zdHlsZS5kaXNwbGF5ID0gaXNDb25maWdPcGVuID8gJnF1b3Q7aW5saW5lLWJsb2NrJnF1b3Q7IDogJnF1b3Q7bm9uZSZxdW90OzsKICB9CgogIC8vIOWIneacn+WMlgogIHJlbmRlclVJKCk7CgogIC8vIC0tLSA0LiDlkITnqK7jgqTjg5njg7Pjg4jjg6rjgrnjg4rjg7wgLS0tCiAgYnRuQ29uZmlnLmFkZEV2ZW50TGlzdGVuZXIoJnF1b3Q7Y2xpY2smcXVvdDssICgpID0mZ3Q7IHsKICAgIGlzQ29uZmlnT3BlbiA9ICFpc0NvbmZpZ09wZW47CiAgICBpZiAoIWlzQ29uZmlnT3BlbikgewogICAgICBpc0VkaXRpbmdBcGkgPSBmYWxzZTsKICAgICAgaXNFZGl0aW5nSW5zdCA9IGZhbHNlOwogICAgfQogICAgcmVuZGVyVUkoKTsKICB9KTsKICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgmcXVvdDt1c2VyX2J0bl9lZGl0QXBpS2V5JnF1b3Q7KS5hZGRFdmVudExpc3RlbmVyKCZxdW90O2NsaWNrJnF1b3Q7LCAoKSA9Jmd0OyB7CiAgICBpc0VkaXRpbmdBcGkgPSB0cnVlOwogICAgcmVuZGVyVUkoKTsKICAgIGFwaUtleUlucHV0LmZvY3VzKCk7CiAgfSk7CiAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJnF1b3Q7dXNlcl9idG5fZWRpdEluc3QmcXVvdDspLmFkZEV2ZW50TGlzdGVuZXIoJnF1b3Q7Y2xpY2smcXVvdDssICgpID0mZ3Q7IHsKICAgIGlzRWRpdGluZ0luc3QgPSB0cnVlOwogICAgcmVuZGVyVUkoKTsKICAgIGluc3RydWN0aW9uSW5wdXQuZm9jdXMoKTsKICB9KTsKICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgmcXVvdDt1c2VyX2J0blNhdmUmcXVvdDspLmFkZEV2ZW50TGlzdGVuZXIoJnF1b3Q7Y2xpY2smcXVvdDssICgpID0mZ3Q7IHsKICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKFNUT1JBR0VfS0VZX0FQSSwgYXBpS2V5SW5wdXQudmFsdWUudHJpbSgpKTsKICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKFNUT1JBR0VfS0VZX0lOU1QsIGluc3RydWN0aW9uSW5wdXQudmFsdWUpOwogICAgaXNFZGl0aW5nQXBpID0gZmFsc2U7CiAgICBpc0VkaXRpbmdJbnN0ID0gZmFsc2U7CiAgICByZW5kZXJVSSgpOwogICAgc2V0dGluZ1N0YXR1cy5pbm5lclRleHQgPSAmcXVvdDvoqK3lrprjgpLkv53lrZjjgZfjgb7jgZfjgZ8gLyBTYXZlZCBzdWNjZXNzZnVsbHkuJnF1b3Q7OwogICAgc2V0VGltZW91dCgoKSA9Jmd0OyB7IHNldHRpbmdTdGF0dXMuaW5uZXJUZXh0ID0gJnF1b3Q7JnF1b3Q7OyB9LCAyNTAwKTsKICB9KTsKICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgmcXVvdDt1c2VyX2J0bkNsZWFyJnF1b3Q7KS5hZGRFdmVudExpc3RlbmVyKCZxdW90O2NsaWNrJnF1b3Q7LCAoKSA9Jmd0OyB7CiAgICBsb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbShTVE9SQUdFX0tFWV9BUEkpOwogICAgbG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oU1RPUkFHRV9LRVlfSU5TVCk7CiAgICBpc0VkaXRpbmdBcGkgPSBmYWxzZTsKICAgIGlzRWRpdGluZ0luc3QgPSBmYWxzZTsKICAgIHJlbmRlclVJKCk7CiAgICBzZXR0aW5nU3RhdHVzLmlubmVyVGV4dCA9ICZxdW90O+ioreWumuOCkuOCr+ODquOCouOBl+OBvuOBl+OBnyAvIENsZWFyZWQgc3VjY2Vzc2Z1bGx5LiZxdW90OzsKICAgIHNldFRpbWVvdXQoKCkgPSZndDsgeyBzZXR0aW5nU3RhdHVzLmlubmVyVGV4dCA9ICZxdW90OyZxdW90OzsgfSwgMjUwMCk7CiAgfSk7CgogIC8vIC0tLSA1LiBBSeWRvOOBs+WHuuOBl+WHpueQhiAtLS0KICBhaUJ1dHRvbnMuZm9yRWFjaChidXR0b24gPSZndDsgewogICAgYnV0dG9uLmFkZEV2ZW50TGlzdGVuZXIoJnF1b3Q7Y2xpY2smcXVvdDssIGFzeW5jIChldmVudCkgPSZndDsgewogICAgICBjb25zdCBzdHJLZXkgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbShTVE9SQUdFX0tFWV9BUEkpOwogICAgICBjb25zdCBzdHJJbnN0cnVjdGlvbiA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKFNUT1JBR0VfS0VZX0lOU1QpIHx8ICZxdW90OyZxdW90OzsgCiAgICAgIC8vIOWkieaVsOWMluOBl+OBn+OCv+ODvOOCsuODg+ODiOODleOCo+ODvOODq+ODieWQjeOCkuWIqeeUqAogICAgICBjb25zdCBzdHJJbnB1dCA9IHFicG1zLmZvcm0uZ2V0KFRBUkdFVF9GSUVMRF9OQU1FKTsKICAgICAgY29uc3QgbW9kZWxOYW1lID0gZXZlbnQuY3VycmVudFRhcmdldC5pbm5lclRleHQudHJpbSgpOwoKICAgICAgaWYgKCFzdHJLZXkpIHsKICAgICAgICBzdGF0dXNFbGVtZW50LmlubmVyVGV4dCA9ICZxdW90O+OCqOODqeODvDogQVBJ44Kt44O844GM6Kit5a6a44GV44KM44Gm44GE44G+44Gb44KT44CCQ09ORklH44Oc44K\/44Oz44GL44KJ6Kit5a6a44KS5L+d5a2Y44GX44Gm44GP44Gg44GV44GE44CCIC8gRXJyb3I6IEFQSSBLZXkgaXMgbm90IHNldC4mcXVvdDs7CiAgICAgICAgcmVzdWx0RWxlbWVudC5pbm5lclRleHQgPSAmcXVvdDsmcXVvdDs7CiAgICAgICAgcmV0dXJuOwogICAgICB9CiAgICAgIGlmICghc3RySW5wdXQpIHsKICAgICAgICBzdGF0dXNFbGVtZW50LmlubmVyVGV4dCA9IGDjgqjjg6njg7w6IOWFpeWKm+WGheWuuSgke1RBUkdFVF9GSUVMRF9OQU1FfSnjgYznqbrjgafjgZnjgIIgLyBFcnJvcjogSW5wdXQgZmllbGQgaXMgZW1wdHkuYDsKICAgICAgICByZXN1bHRFbGVtZW50LmlubmVyVGV4dCA9ICZxdW90OyZxdW90OzsKICAgICAgICByZXR1cm47CiAgICAgIH0KCiAgICAgIGFpQnV0dG9ucy5mb3JFYWNoKGJ0biA9Jmd0OyBidG4uZGlzYWJsZWQgPSB0cnVlKTsKICAgICAgYnRuQ29uZmlnLmRpc2FibGVkID0gdHJ1ZTsKICAgICAgc3RhdHVzRWxlbWVudC5pbm5lclRleHQgPSAmcXVvdDtBSeOBq+aOpee2muS4rS4uLiAvIENvbm5lY3RpbmcgdG8gQUkuLi4mcXVvdDs7CiAgICAgIHJlc3VsdEVsZW1lbnQuaW5uZXJIVE1MID0gJiMzOTsmbHQ7c3BhbiBjbGFzcz0mcXVvdDt1c2VyX2N1cnNvciZxdW90OyZndDsmbHQ7L3NwYW4mZ3Q7JiMzOTs7CiAgICAgIGNvbnN0IGN1cnNvciA9IHJlc3VsdEVsZW1lbnQucXVlcnlTZWxlY3RvcigmcXVvdDsudXNlcl9jdXJzb3ImcXVvdDspOwoKICAgICAgdHJ5IHsKICAgICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGZldGNoKCZxdW90O2h0dHBzOi8vYXBpLm9wZW5haS5jb20vdjEvcmVzcG9uc2VzJnF1b3Q7LCB7CiAgICAgICAgICBtZXRob2Q6ICZxdW90O1BPU1QmcXVvdDssCiAgICAgICAgICBoZWFkZXJzOiB7CiAgICAgICAgICAgICZxdW90O0NvbnRlbnQtVHlwZSZxdW90OzogJnF1b3Q7YXBwbGljYXRpb24vanNvbiZxdW90OywKICAgICAgICAgICAgJnF1b3Q7QXV0aG9yaXphdGlvbiZxdW90OzogYEJlYXJlciAke3N0cktleX1gCiAgICAgICAgICB9LAogICAgICAgICAgYm9keTogSlNPTi5zdHJpbmdpZnkoewogICAgICAgICAgICBtb2RlbDogbW9kZWxOYW1lLAogICAgICAgICAgICBpbnN0cnVjdGlvbnM6IHN0ckluc3RydWN0aW9uLAogICAgICAgICAgICBpbnB1dDogc3RySW5wdXQsCiAgICAgICAgICAgIHN0cmVhbTogdHJ1ZQogICAgICAgICAgfSkKICAgICAgICB9KTsKCiAgICAgICAgaWYgKCFyZXNwb25zZS5vaykgewogICAgICAgICAgbGV0IG1zZyA9IGBBUEkgRXJyb3I6ICR7cmVzcG9uc2Uuc3RhdHVzfWA7CiAgICAgICAgICB0cnkgewogICAgICAgICAgICBjb25zdCBlcnIgPSBhd2FpdCByZXNwb25zZS5qc29uKCk7CiAgICAgICAgICAgIG1zZyArPSBgXG4ke0pTT04uc3RyaW5naWZ5KGVyciwgbnVsbCwgMil9YDsKICAgICAgICAgIH0gY2F0Y2ggKF8pIHt9CiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IobXNnKTsKICAgICAgICB9CiAgICAgICAgc3RhdHVzRWxlbWVudC5pbm5lclRleHQgPSAmcXVvdDtBSeOBjOaWh+eroOOCkueUn+aIkOS4rS4uLiAvIEFJIGlzIGdlbmVyYXRpbmcgdGV4dC4uLiZxdW90OzsKICAgICAgICBjb25zdCByZWFkZXIgPSByZXNwb25zZS5ib2R5LmdldFJlYWRlcigpOwogICAgICAgIGNvbnN0IGRlY29kZXIgPSBuZXcgVGV4dERlY29kZXIoKTsKICAgICAgICBsZXQgYnVmZmVyID0gJnF1b3Q7JnF1b3Q7OwogICAgICAgIGxldCBjdXJyZW50RXZlbnQgPSAmcXVvdDsmcXVvdDs7CiAgICAgICAgY29uc3QgZmx1c2hMaW5lcyA9IChjaHVua1RleHQpID0mZ3Q7IHsKICAgICAgICAgIGJ1ZmZlciArPSBjaHVua1RleHQ7CiAgICAgICAgICBjb25zdCBsaW5lcyA9IGJ1ZmZlci5zcGxpdCgvXHI\/XG4vKTsKICAgICAgICAgIGJ1ZmZlciA9IGxpbmVzLnBvcCgpIHx8ICZxdW90OyZxdW90OzsKICAgICAgICAgIGZvciAoY29uc3QgbGluZSBvZiBsaW5lcykgewogICAgICAgICAgICBpZiAoIWxpbmUudHJpbSgpKSBjb250aW51ZTsKICAgICAgICAgICAgaWYgKGxpbmUuc3RhcnRzV2l0aCgmcXVvdDtldmVudDomcXVvdDspKSB7CiAgICAgICAgICAgICAgY3VycmVudEV2ZW50ID0gbGluZS5yZXBsYWNlKC9eZXZlbnQ6XHMqLywgJnF1b3Q7JnF1b3Q7KS50cmltKCk7CiAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYgKGxpbmUuc3RhcnRzV2l0aCgmcXVvdDtkYXRhOiZxdW90OykpIHsKICAgICAgICAgICAgICBjb25zdCBkYXRhUmF3ID0gbGluZS5yZXBsYWNlKC9eZGF0YTpccyovLCAmcXVvdDsmcXVvdDspLnRyaW0oKTsKICAgICAgICAgICAgICBpZiAoZGF0YVJhdyA9PT0gJnF1b3Q7W0RPTkVdJnF1b3Q7KSByZXR1cm4gJnF1b3Q7RE9ORSZxdW90OzsKICAgICAgICAgICAgICAKICAgICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgY29uc3QgZGF0YSA9IEpTT04ucGFyc2UoZGF0YVJhdyk7CiAgICAgICAgICAgICAgICBpZiAoY3VycmVudEV2ZW50ID09PSAmcXVvdDtyZXNwb25zZS5vdXRwdXRfdGV4dC5kZWx0YSZxdW90OyAmJiBkYXRhLmRlbHRhKSB7CiAgICAgICAgICAgICAgICAgIGN1cnNvci5pbnNlcnRBZGphY2VudFRleHQoJnF1b3Q7YmVmb3JlYmVnaW4mcXVvdDssIGRhdGEuZGVsdGEpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgaWYgKGN1cnJlbnRFdmVudCA9PT0gJnF1b3Q7cmVzcG9uc2UuY29tcGxldGVkJnF1b3Q7KSB7CiAgICAgICAgICAgICAgICAgIHJldHVybiAmcXVvdDtET05FJnF1b3Q7OwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgaWYgKGN1cnJlbnRFdmVudCA9PT0gJnF1b3Q7cmVzcG9uc2UuZXJyb3ImcXVvdDspIHsKICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGRhdGE\/LmVycm9yPy5tZXNzYWdlIHx8ICZxdW90O1Vua25vd24gc3RyZWFtaW5nIGVycm9yJnF1b3Q7KTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICB9IGNhdGNoIChlKSB7CiAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKCZxdW90O1NTRSBKU09OIHBhcnNlIGVycm9yOiZxdW90OywgZGF0YVJhdywgZSk7CiAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICB9CiAgICAgICAgfTsKICAgICAgICB3aGlsZSAodHJ1ZSkgewogICAgICAgICAgY29uc3QgeyBkb25lLCB2YWx1ZSB9ID0gYXdhaXQgcmVhZGVyLnJlYWQoKTsKICAgICAgICAgIGlmIChkb25lKSBicmVhazsKICAgICAgICAgIGNvbnN0IHRleHQgPSBkZWNvZGVyLmRlY29kZSh2YWx1ZSwgeyBzdHJlYW06IHRydWUgfSk7CiAgICAgICAgICBjb25zdCBzdGF0dXMgPSBmbHVzaExpbmVzKHRleHQpOwogICAgICAgICAgaWYgKHN0YXR1cyA9PT0gJnF1b3Q7RE9ORSZxdW90OykgYnJlYWs7CiAgICAgICAgfQogICAgICAgIHN0YXR1c0VsZW1lbnQuaW5uZXJUZXh0ID0gJnF1b3Q755Sf5oiQ5a6M5LqGIC8gR2VuZXJhdGlvbiBDb21wbGV0ZWQmcXVvdDs7CiAgICAgIH0gY2F0Y2ggKGVycm9yKSB7CiAgICAgICAgY29uc29sZS5lcnJvcigmcXVvdDtSZXF1ZXN0IGZhaWxlZDomcXVvdDssIGVycm9yKTsKICAgICAgICBzdGF0dXNFbGVtZW50LmlubmVyVGV4dCA9ICZxdW90O+OCqOODqeODvOOBjOeZuueUn+OBl+OBvuOBl+OBn+OAgiAvIEFuIGVycm9yIG9jY3VycmVkLiZxdW90OzsKICAgICAgICByZXN1bHRFbGVtZW50LmlubmVyVGV4dCA9IFN0cmluZyhlcnJvci5tZXNzYWdlIHx8IGVycm9yKTsKICAgICAgfSBmaW5hbGx5IHsKICAgICAgICBjb25zdCBjID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcigmcXVvdDsjdXNlcl9yZXN1bHQgLnVzZXJfY3Vyc29yJnF1b3Q7KTsKICAgICAgICBjPy5yZW1vdmUoKTsKICAgICAgICBhaUJ1dHRvbnMuZm9yRWFjaChidG4gPSZndDsgYnRuLmRpc2FibGVkID0gZmFsc2UpOwogICAgICAgIGJ0bkNvbmZpZy5kaXNhYmxlZCA9IGZhbHNlOwogICAgICB9CiAgICB9KTsKICB9KTsKfSk7CiZsdDsvc2NyaXB0Jmd0OzwvY29kZT48L3ByZT48L2Rpdj4KaWRsaW5rdXJsc2l6ZVNsdWdsaW5rRGVzdGluYXRpb25ocmVmbGlnaHRib3g8L3NvbmxldmVsPGFyZj0iaDovL3Vwci5xdXQuY29tLy0vcWd1aS1ycXUtLS1haS1zZy1sY2xnZS0yMDI2LyI+PHBscz0ibXJsLSI+bGE8L3NwPnFHZDpPcG5BSUFQSTwvPnBsYWNlaG9sZGVydGV4dENvbG9yYmFja2dyb3VuZENvbG9yZm9udFNpemVkaXJlY3Rpb25jbGFzc05hbWVhbmltYXRpb25mb250RmFtaWx5Y3VzdG9tVGV4dENvbG9yVUFHVXNlclJvbGVVQUdCcm93c2VyVUFHU3lzdGVtVUFHRGlzcGxheUNvbmRpdGlvbnNTZWRyb3BDYXA8c3BhbiBzdHlsZT0idGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7Ij5JbnB1dCAvIE91dHB1dDwvc3Bhbj5sZXZlbHN0eWxlb3JkZXJlZHZhbHVlc3RleHRQYW5lbExpbmVIZWlnaHRjbGllbnRJZGlzVmFsaWRuYW1lYXR0cmlidXRlc2NvbnRlbnTihpAgU1RSSU5HIChTVFJJTkdfVEVYVEZJRUxEKSA8Y29kZT5xX2h1bWFuX2Fuc3dlcl9ib2R5PC9jb2RlPlVBR0hpZGVEZXNrdG9wVUFHSGlkZU1vYlVBR0hpZGVUYWJVQUdMb2dnZWRJblVBR0xvZ2dlZE91dFVBR0RheVVBR1Jlc3BvbnNpdmVDb25kaXRpb25zVUFHQW5pbWF0aW9uVHlwZVVBR0FuaW1hdGlvblRpbWVVQUdBbmltYXRpb25EZWxheVVBR0FuaW1hdGlvbkVhc2luZ1VBR0FuaW1hdGlvblJlcGVhdFVBR1Bvc2l0aW9uVUFHU3RpY2t5TG9jYXRpb25VQUdTdGlja3lSZXN0cmljdGVkVUFHU3RpY2t5T2Zmc2V0aW5uZXJCbG9ja3NjbGllbnRJZGlzVmFsaWRuYW1lYXR0cmlidXRlc2NvbnRlbnTihpAgbG9jYWxTdG9yYWdlIDxjb2RlPmFwaUtleTwvY29kZT5VQUdIaWRlRGVza3RvcFVBR0hpZGVNb2JVQUdIaWRlVGFiVUFHTG9nZ2VkSW5VQUdMb2dnZWRPdXRVQUdEYXlVQUdSZXNwb25zaXZlQ29uZGl0aW9uc1VBR0FuaW1hdGlvblR5cGVVQUdBbmltYXRpb25UaW1lVUFHQW5pbWF0aW9uRGVsYXlVQUdBbmltYXRpb25FYXNpbmdVQUdBbmltYXRpb25SZXBlYXRVQUdQb3NpdGlvblVBR1N0aWNreUxvY2F0aW9uVUFHU3RpY2t5UmVzdHJpY3RlZFVBR1N0aWNreU9mZnNldGlubmVyQmxvY2tzY2xpZW50SWRpc1ZhbGlkbmFtZWF0dHJpYnV0ZXNjb250ZW504oaQIGxvY2FsU3RvcmFnZSA8Y29kZT5pbnN0cnVjdGlvbjwvY29kZT5VQUdIaWRlRGVza3RvcFVBR0hpZGVNb2JVQUdIaWRlVGFiVUFHTG9nZ2VkSW5VQUdMb2dnZWRPdXRVQUdEYXlVQUdSZXNwb25zaXZlQ29uZGl0aW9uc1VBR0FuaW1hdGlvblR5cGVVQUdBbmltYXRpb25UaW1lVUFHQW5pbWF0aW9uRGVsYXlVQUdBbmltYXRpb25FYXNpbmdVQUdBbmltYXRpb25SZXBlYXRVQUdQb3NpdGlvblVBR1N0aWNreUxvY2F0aW9uVUFHU3RpY2t5UmVzdHJpY3RlZFVBR1N0aWNreU9mZnNldGlubmVyQmxvY2tzY2xpZW50SWRpc1ZhbGlkbmFtZWF0dHJpYnV0ZXNjb250ZW504oaSIDxjb2RlPnByZSN1c2VyX3Jlc3VsdDwvY29kZT5VQUdIaWRlRGVza3RvcFVBR0hpZGVNb2JVQUdIaWRlVGFiVUFHTG9nZ2VkSW5VQUdMb2dnZWRPdXRVQUdEYXlVQUdSZXNwb25zaXZlQ29uZGl0aW9uc1VBR0FuaW1hdGlvblR5cGVVQUdBbmltYXRpb25UaW1lVUFHQW5pbWF0aW9uRGVsYXlVQUdBbmltYXRpb25FYXNpbmdVQUdBbmltYXRpb25SZXBlYXRVQUdQb3NpdGlvblVBR1N0aWNreUxvY2F0aW9uVUFHU3RpY2t5UmVzdHJpY3RlZFVBR1N0aWNreU9mZnNldGlubmVyQmxvY2tzY2xpZW50SWRpc1ZhbGlkbmFtZWF0dHJpYnV0ZXNjb250ZW504oaSIDxjb2RlPmRpdiN1c2VyX3N0YXR1czwvY29kZT5VQUdIaWRlRGVza3RvcFVBR0hpZGVNb2JVQUdIaWRlVGFiVUFHTG9nZ2VkSW5VQUdMb2dnZWRPdXRVQUdEYXlVQUdSZXNwb25zaXZlQ29uZGl0aW9uc1VBR0FuaW1hdGlvblR5cGVVQUdBbmltYXRpb25UaW1lVUFHQW5pbWF0aW9uRGVsYXlVQUdBbmltYXRpb25FYXNpbmdVQUdBbmltYXRpb25SZXBlYXRVQUdQb3NpdGlvblVBR1N0aWNreUxvY2F0aW9uVUFHU3RpY2t5UmVzdHJpY3RlZFVBR1N0aWNreU9mZnNldGlubmVyQmxvY2tzY29udGVudGViZHJvcENhcGNvbnRlbnQ8c3BhbiBzdHlsZT0idGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7Ij5Db2RlIEV4YW1wbGU8L3NwYW4+bGV2ZWxzdHlsZXRleHRQYW5lbEhpZGVDb2xvcnRleHRQYW5lbFNob3dTcGFjaW5nQ29udHJvbHN0ZXh0UGFuZWxIZWFkaW5nRm9udFNpemVzY291bnRwb2x5ZmlsbGZvbnRXZWlnaHR0ZXh0VHJhbnNmb3Jtbm9Cb3R0b21TcGFjaW5nbm9Ub3BTcGFjaW5nY2xpZW50SWRpc1ZhbGlkb3JpZ2luYWxDb250ZW50bmFtZWF0dHJpYnV0ZXN0aXRsZW9wZW5jdXN0b21CYWNrZ3JvdW5kQ29sb3Jib3JkZXJDb2xvcmZvbnRXZWlnaHR0ZXh0VHJhbnNmb3Jtbm9Cb3R0b21TcGFjaW5nbm9Ub3BTcGFjaW5nVUFHSGlkZURlc2t0b3BVQUdIaWRlTW9iVUFHSGlkZVRhYlVBR0xvZ2dlZEluVUFHTG9nZ2VkT3V0VUFHRGF5VUFHUmVzcG9uc2l2ZUNvbmRpdGlvbnNVQUdBbmltYXRpb25UeXBlVUFHQW5pbWF0aW9uVGltZVVBR0FuaW1hdGlvbkRlbGF5VUFHQW5pbWF0aW9uRWFzaW5nVUFHQW5pbWF0aW9uUmVwZWF0VUFHUG9zaXRpb25VQUdTdGlja3lMb2NhdGlvblVBR1N0aWNreVJlc3RyaWN0ZWRVQUdTdGlja3lPZmZzZXRpbm5lckJsb2Nrc2NsaWVudElkaXNWYWxpZG9yaWdpbmFsQ29udGVudG5hbWVhdHRyaWJ1dGVzY29kZWxhbmdUeXBlbGFuZ05hbWVmaWxlTmFtZWRhdGFMaW5lTnVtZGF0YVN0YXJ0aXNMaW5lU2hvd2lzU2hvd0xhbmdVQUdIaWRlRGVza3RvcFVBR0hpZGVNb2JVQUdIaWRlVGFiVUFHTG9nZ2VkSW5VQUdMb2dnZWRPdXRVQUdEYXlVQUdSZXNwb25zaXZlQ29uZGl0aW9uc1VBR0FuaW1hdGlvblR5cGVVQUdBbmltYXRpb25UaW1lVUFHQW5pbWF0aW9uRGVsYXlVQUdBbmltYXRpb25FYXNpbmdVQUdBbmltYXRpb25SZXBlYXRVQUdQb3NpdGlvblVBR1N0aWNreUxvY2F0aW9uVUFHU3RpY2t5UmVzdHJpY3RlZFVBR1N0aWNreU9mZnNldGlubmVyQmxvY2tzY29udGVudDxzcGFuIHN0eWxlPSJ0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTsiPkNhcHR1cmU8L3NwYW4+bGV2ZWxzdHlsZWZvbnRXZWlnaHR0ZXh0VHJhbnNmb3Jtbm9Cb3R0b21TcGFjaW5nbm9Ub3BTcGFjaW5nYWx0Y2FwdGlvbm5vQm90dG9tTWFyZ2lubm9Ub3BNYXJnaW5maWx0ZXJhbXBMaWdodGJveGlkbGlua3VybHNpemVTbHVnbGlua0Rlc3RpbmF0aW9uaHJlZmxpZ2h0Ym94Y29udGVudDxzcGFuIHN0eWxlPSJ0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTsiPmU8L3NwYW4+bGV2ZWxzdHlsZWZvbnRXZWlnaHR0ZXh0VHJhbnNmb3Jtbm9Cb3R0b21TcGFjaW5nbm9Ub3BTcGFjaW5nY2FwdGlvbmFsbG93UmVzcG9uc2l2ZXJlc3BvbnNpdmVwcmV2aWV3YWJsZU9wZW5BSSBBUEkgIGxvY2FsU3RvcmFnZTwhLS0gd3A6aGVhZGluZyB7ImxldmVsIjo0LCJzdHlsZSI6eyJjb2xvciI6eyJiYWNrZ3JvdW5kIjoiI2ZmYzY5YiJ9LCJzcGFjaW5nIjp7InBhZGRpbmciOnsidG9wIjoiMCIsInJpZ2h0IjoidmFyOnByZXNldHxzcGFjaW5nfDIwIiwiYm90dG9tIjoiMCIsImxlZnQiOiJ2YXI6cHJlc2V0fHNwYWNpbmd8MjAifSwibWFyZ2luIjp7InJpZ2h0IjoiMCIsImJvdHRvbSI6IjAiLCJsZWZ0IjoiMCIsInRvcCI6InZhcjpwcmVzZXR8c3BhY2luZ3wzMCJ9fX19IC0tPgo8IS0tIC93cDpoZWFkaW5nIC0tPgoKQ2FwdHVyYWx0Y2xhc3NOYW1lbm9Cb3R0b21NYXJnaW5ub1RvcE1hcmdpbmZpbHRlcmFtcExpZ2h0Ym94U2UgQWxzb3RleHRQYW5lbEhpZGVDb2xvcnRleHRQYW5lbFNob3dTcGFjaW5nQ29udHJvbHN0ZXh0UGFuZWxIZWFkaW5nRm9udFNpemVzYWxsb3dSZXNwb25zaXZlcmVzcG9uc2l2ZXByZXZpZXdhYmxlPGgzIGNsYXNzPSJ3cC1ibG9jay1oZWFkaW5nIiBzdHlsZT0ibWFyZ2luLXRvcDp2YXIoLS13cC0tcHJlc2V0LS1zcGFjaW5nLS02MCkiPjxzcGFuIHN0eWxlPSJ0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTsiPkNhcHR1cmU8L3NwYW4+PC9oMz4KPCEtLSAvd3A6aW1hZ2UgLS0+CjxoMyBjbGFzcz0id3AtYmxvY2staGVhZGluZyIgc3R5bGU9Im1hcmdpbi10b3A6dmFyKC0td3AtLXByZXNldC0tc3BhY2luZy0tNjApIj48c3BhbiBzdHlsZT0idGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7Ij5TZWUgQWxzbzwvc3Bhbj48L2gzPgppZGxpbmt1cmxzaXplU2x1Z2xpbmtEZXN0aW5hdGlvbmhyZWZsaWdodGJveGFsaWduY2xpZW50SWRpc1ZhbGlkbmFtZWF0dHJpYnV0ZXNjb250ZW50ZHJvcENhcGZvbnRXZWlnaHR0ZXh0VHJhbnNmb3Jtbm9Cb3R0b21TcGFjaW5nbm9Ub3BTcGFjaW5nVUFHSGlkZURlc2t0b3BVQUdIaWRlTW9iVUFHSGlkZVRhYlVBR0xvZ2dlZEluVUFHTG9nZ2VkT3V0VUFHRGF5VUFHUmVzcG9uc2l2ZUNvbmRpdGlvbnNVQUdBbmltYXRpb25UeXBlVUFHQW5pbWF0aW9uVGltZVVBR0FuaW1hdGlvbkRlbGF5VUFHQW5pbWF0aW9uRWFzaW5nVUFHQW5pbWF0aW9uUmVwZWF0VUFHUG9zaXRpb25VQUdTdGlja3lMb2NhdGlvblVBR1N0aWNreVJlc3RyaWN0ZWRVQUdTdGlja3lPZmZzZXR0ZXh0UGFuZWxIaWRlQ29sb3J0ZXh0UGFuZWxTaG93U3BhY2luZ0NvbnRyb2xzdGV4dFBhbmVsSGVhZGluZ0ZvbnRTaXplc2lubmVyQmxvY2tzYWx0Y2FwdGlvbm5vQm90dG9tTWFyZ2lubm9Ub3BNYXJnaW5maWx0ZXJhbXBMaWdodGJveDwhLS0gd3A6aW1hZ2UgeyJsaWdodGJveCI6eyJlbmFibGVkIjp0cnVlfSwiaWQiOjE4MjA3OSwic2l6ZVNsdWciOiJsYXJnZSIsImxpbmtEZXN0aW5hdGlvbiI6Im5vbmUiLCJhbGlnbiI6ImNlbnRlciIsImNsYXNzTmFtZSI6ImlzLXN0eWxlLWRlZmF1bHQifSAtLT4KPGZpZ3VyZSBjbGFzcz0id3AtYmxvY2staW1hZ2UgYWxpZ25jZW50ZXIgc2l6ZS1sYXJnZSBpcy1zdHlsZS1kZWZhdWx0IGhhcy1saWdodGJveCI+PGltZyBzcmM9Imh0dHBzOi8vc3VwcG9ydC5xdWVzdGV0cmEuY29tL3dwLWNvbnRlbnQvdXBsb2Fkcy8yMDI2LzA0L2FpLWRlY28tbG9jYWxTdG9yYWdlLTEwMjR4NTc2LmdpZiIgYWx0PSIiIGNsYXNzPSJ3cC1pbWFnZS0xODIwNzkiLz48L2ZpZ3VyZT4KPCEtLSAvd3A6aW1hZ2UgLS0+CgppZGxpbmt1cmxzaXplU2x1Z2xpbmtEZXN0aW5hdGlvbmhyZWZsaWdodGJveGFsaWduPCEtLSB3cDppbWFnZSB7ImxpZ2h0Ym94Ijp7ImVuYWJsZWQiOnRydWV9LCJpZCI6MTgyMDgyLCJzaXplU2x1ZyI6ImxhcmdlIiwibGlua0Rlc3RpbmF0aW9uIjoibm9uZSIsImFsaWduIjoiY2VudGVyIn0gLS0+CjxmaWd1cmUgY2xhc3M9IndwLWJsb2NrLWltYWdlIGFsaWduY2VudGVyIHNpemUtbGFyZ2UgaGFzLWxpZ2h0Ym94Ij48aW1nIHNyYz0iaHR0cHM6Ly9zdXBwb3J0LnF1ZXN0ZXRyYS5jb20vd3AtY29udGVudC91cGxvYWRzLzIwMjYvMDQvbG9jYWxTdG9yYWdlLW91dHB1dC0xMDI0eDUxNS5wbmciIGFsdD0iIiBjbGFzcz0id3AtaW1hZ2UtMTgyMDgyIi8+PC9maWd1cmU+CmNsaWVudElkaXNWYWxpZG5hbWVhdHRyaWJ1dGVzY29udGVudGRyb3BDYXBmb250V2VpZ2h0dGV4dFRyYW5zZm9ybW5vQm90dG9tU3BhY2luZ25vVG9wU3BhY2luZ1VBR0hpZGVEZXNrdG9wVUFHSGlkZU1vYlVBR0hpZGVUYWJVQUdMb2dnZWRJblVBR0xvZ2dlZE91dFVBR0RheVVBR1Jlc3BvbnNpdmVDb25kaXRpb25zVUFHQW5pbWF0aW9uVHlwZVVBR0FuaW1hdGlvblRpbWVVQUdBbmltYXRpb25EZWxheVVBR0FuaW1hdGlvbkVhc2luZ1VBR0FuaW1hdGlvblJlcGVhdFVBR1Bvc2l0aW9uVUFHU3RpY2t5TG9jYXRpb25VQUdTdGlja3lSZXN0cmljdGVkVUFHU3RpY2t5T2Zmc2V0dGV4dFBhbmVsSGlkZUNvbG9ydGV4dFBhbmVsU2hvd1NwYWNpbmdDb250cm9sc3RleHRQYW5lbEhlYWRpbmdGb250U2l6ZXNpbm5lckJsb2Nrc2NsaWVudElkaXNWYWxpZG5hbWVhdHRyaWJ1dGVzY29udGVudGRyb3BDYXBmb250V2VpZ2h0dGV4dFRyYW5zZm9ybW5vQm90dG9tU3BhY2luZ25vVG9wU3BhY2luZ1VBR0hpZGVEZXNrdG9wVUFHSGlkZU1vYlVBR0hpZGVUYWJVQUdMb2dnZWRJblVBR0xvZ2dlZE91dFVBR0RheVVBR1Jlc3BvbnNpdmVDb25kaXRpb25zVUFHQW5pbWF0aW9uVHlwZVVBR0FuaW1hdGlvblRpbWVVQUdBbmltYXRpb25EZWxheVVBR0FuaW1hdGlvbkVhc2luZ1VBR0FuaW1hdGlvblJlcGVhdFVBR1Bvc2l0aW9uVUFHU3RpY2t5TG9jYXRpb25VQUdTdGlja3lSZXN0cmljdGVkVUFHU3RpY2t5T2Zmc2V0dGV4dFBhbmVsSGlkZUNvbG9ydGV4dFBhbmVsU2hvd1NwYWNpbmdDb250cm9sc3RleHRQYW5lbEhlYWRpbmdGb250U2l6ZXNpbm5lckJsb2Nrc2FsdGNhcHRpb25ub0JvdHRvbU1hcmdpbm5vVG9wTWFyZ2luZmlsdGVyYW1wTGlnaHRib3hhbHRjYXB0aW9ubm9Cb3R0b21NYXJnaW5ub1RvcE1hcmdpbmZpbHRlcmFtcExpZ2h0Ym94PCEtLSAvd3A6aW1hZ2UgLS0+Cgo8IS0tIC93cDppbWFnZSAtLT4KCmlkbGlua3VybHNpemVTbHVnbGlua0Rlc3RpbmF0aW9uYWxpZ25pZGxpbmt1cmxzaXplU2x1Z2xpbmtEZXN0aW5hdGlvbmFsaWdudXJsdHlwZXByb3ZpZGVyTmFtZVNsdWdjbGllbnRJZGlzVmFsaWRvcmlnaW5hbENvbnRlbnRuYW1lYXR0cmlidXRlc2NhcHRpb25hbGxvd1Jlc3BvbnNpdmVyZXNwb25zaXZlcHJldmlld2FibGVVQUdIaWRlRGVza3RvcFVBR0hpZGVNb2JVQUdIaWRlVGFiVUFHTG9nZ2VkSW5VQUdMb2dnZWRPdXRVQUdEYXlVQUdSZXNwb25zaXZlQ29uZGl0aW9uc1VBR0FuaW1hdGlvblR5cGVVQUdBbmltYXRpb25UaW1lVUFHQW5pbWF0aW9uRGVsYXlVQUdBbmltYXRpb25FYXNpbmdVQUdBbmltYXRpb25SZXBlYXRVQUdQb3NpdGlvblVBR1N0aWNreUxvY2F0aW9uVUFHU3RpY2t5UmVzdHJpY3RlZFVBR1N0aWNreU9mZnNldHVybHR5cGVwcm92aWRlck5hbWVTbHVnaW5uZXJCbG9ja3M8ZmlndXJlIGNsYXNzPSJ3cC1ibG9jay1lbWJlZCBpcy10eXBlLXdwLWVtYmVkIGlzLXByb3ZpZGVyLXF1ZXN0ZXRyYS1zdXBwb3J0IHdwLWJsb2NrLWVtYmVkLXF1ZXN0ZXRyYS1zdXBwb3J0Ij48ZGl2IGNsYXNzPSJ3cC1ibG9jay1lbWJlZF9fd3JhcHBlciI+CjwvZGl2PjwvZmlndXJlPgo8IS0tIC93cDplbWJlZCAtLT4KCjxmaWd1cmUgY2xhc3M9IndwLWJsb2NrLWVtYmVkIGlzLXR5cGUtd3AtZW1iZWQgaXMtcHJvdmlkZXItcXVlc3RldHJhLXN1cHBvcnQgd3AtYmxvY2stZW1iZWQtcXVlc3RldHJhLXN1cHBvcnQiPjxkaXYgY2xhc3M9IndwLWJsb2NrLWVtYmVkX193cmFwcGVyIj4KPC9kaXY+PC9maWd1cmU+CjwhLS0gL3dwOmVtYmVkIC0tPmhyZWZsaWdodGJveGhyZWZsaWdodGJveDwhLS0gd3A6aW1hZ2UgeyJsaWdodGJveCI6eyJlbmFibGVkIjp0cnVlfSwiaWQiOjE4MjA4Niwic2l6ZVNsdWciOiJsYXJnZSIsImxpbmtEZXN0aW5hdGlvbiI6Im5vbmUiLCJhbGlnbiI6ImNlbnRlciJ9IC0tPgo8ZmlndXJlIGNsYXNzPSJ3cC1ibG9jay1pbWFnZSBhbGlnbmNlbnRlciBzaXplLWxhcmdlIGhhcy1saWdodGJveCI+PGltZyBzcmM9Imh0dHBzOi8vc3VwcG9ydC5xdWVzdGV0cmEuY29tL3dwLWNvbnRlbnQvdXBsb2Fkcy8yMDI2LzA0L2xvY2FsU3RvcmFnZS1jb25maWctMTAyNHg1OTEucG5nIiBhbHQ9IiIgY2xhc3M9IndwLWltYWdlLTE4MjA4NiIvPjwvZmlndXJlPgo8IS0tIHdwOmltYWdlIHsibGlnaHRib3giOnsiZW5hYmxlZCI6dHJ1ZX0sImlkIjoxODIwODgsInNpemVTbHVnIjoibGFyZ2UiLCJsaW5rRGVzdGluYXRpb24iOiJub25lIiwiYWxpZ24iOiJjZW50ZXIifSAtLT4KPGZpZ3VyZSBjbGFzcz0id3AtYmxvY2staW1hZ2UgYWxpZ25jZW50ZXIgc2l6ZS1sYXJnZSBoYXMtbGlnaHRib3giPjxpbWcgc3JjPSJodHRwczovL3N1cHBvcnQucXVlc3RldHJhLmNvbS93cC1jb250ZW50L3VwbG9hZHMvMjAyNi8wNC9sb2NhbFN0b3JhZ2UtY29uZmlnLWVkaXQtbW9kZS01NDh4NjMwLnBuZyIgYWx0PSIiIGNsYXNzPSJ3cC1pbWFnZS0xODIwODgiLz48L2ZpZ3VyZT4KICAgUmVzcG9uc2VzIEFQSSAgQ09SUyAiQVBJIiAgIiIgIGxvY2FsU3RvcmFnZSBzdGF0ZXZlcnNpb27jgavjg6rjgq\/jgqjjgrnjg4go54mIKeOBq+ODquOCr+OCqOOCueODiCjniYgpPGg0IGNsYXNzPSJ3cC1ibG9jay1oZWFkaW5nIGhhcy1iYWNrZ3JvdW5kIiBzdHlsZT0iYmFja2dyb3VuZC1jb2xvcjojZmZjNjliO21hcmdpbi10b3A6dmFyKC0td3AtLXByZXNldC0tc3BhY2luZy0tMzApO21hcmdpbi1yaWdodDowO21hcmdpbi1ib3R0b206MDttYXJnaW4tbGVmdDowO3BhZGRpbmctdG9wOjA7cGFkZGluZy1yaWdodDp2YXIoLS13cC0tcHJlc2V0LS1zcGFjaW5nLS0yMCk7cGFkZGluZy1ib3R0b206MDtwYWRkaW5nLWxlZnQ6dmFyKC0td3AtLXByZXNldC0tc3BhY2luZy0tMjApIj48c3Ryb25nPnFHdWlkZTogT3BlbkFJIEFQSSDjgavjg6rjgq\/jgqjjgrnjg4ggKGxvY2FsU3RvcmFnZeeJiCk8L3N0cm9uZz48L2g0PgrmloflrZfliJci5oqV5YWl44OH44O844K\/IuOCkuOBq+mAgeS\/oeOBl+OBvuOBmeOAguODrOOCueODneODs+OCue+8iOODouODh+ODq+OBjOeUn+aIkOOBl+OBn+aWh+eroO+8ieOBr+OAgeOCv+OCueOCr+WHpueQhueUu+mdouS4iuOBp+OCueODiOODquODvOODn+ODs+OCsOihqOekuuOBleOCjOOBvuOBmeOAguODl+ODreODs+ODl+ODiOioreWumuasoeesrOOBp+OAgeOAjOiqpOakjeODgeOCp+ODg+OCr+apn+iDveOAjeOAjOaWh+eroOODquODqeOCpOODiOapn+iDveOAjeOAjOW3ruaIu+eQhueUseOBruWAmeijnOWIl+aMmeapn+iDveOAjeOBqOOBhOOBo+OBn+anmOOAheOBquaUr+aPtOapn+iDve+8iOOCv+OCueOCr+WHpueQhuiAheOCkuaUr+aPtOOBmeOCi+apn+iDve+8ieOCkuaPkOS+m+OBmeOCi+OBk+OBqOOBjOWPr+iDveOBp+OBmeOAguOCreODvOOBqOaMh+ekuuaWh+OBr+OAgeOBneOCjOOBnuOCjOOBruODpuODvOOCtuOBjOOBq+S\/neWtmOOBmeOCi+W\/heimgeOBjOOBguOCiuOBvuOBmeOAguaWh+Wtl+WIlyAi5oqV5YWl44OH44O844K\/IiDjgpIgUmVzcG9uc2VzIEFQSSDjgasgQ09SIOmAgeS\/oeOBl+OBvuOBmeOAguODrOOCueODneODs+OCue+8iOODouODh+ODq+OBjOeUn+aIkOOBl+OBn+aWh+eroO+8ieOBr+OAgeOCv+OCueOCr+WHpueQhueUu+mdouS4iuOBp+OCueODiOODquODvOODn+ODs+OCsOihqOekuuOBleOCjOOBvuOBmeOAguODl+ODreODs+ODl+ODiOioreWumuasoeesrOOBp+OAgeOAjOiqpOakjeODgeOCp+ODg+OCr+apn+iDveOAjeOAjOaWh+eroOODquODqeOCpOODiOapn+iDveOAjeOAjOW3ruaIu+eQhueUseOBruWAmeijnOWIl+aMmeapn+iDveOAjeOBqOOBhOOBo+OBn+anmOOAheOBquaUr+aPtOapn+iDve+8iOOCv+OCueOCr+WHpueQhuiAheOCkuaUr+aPtOOBmeOCi+apn+iDve+8ieOCkuaPkOS+m+OBmeOCi+OBk+OBqOOBjOWPr+iDveOBp+OBmeOAgiJBUEnjgq3jg7wiIOOBqCAi5oyH56S65paHIiDjga\/jgIHjgZ3jgozjgZ7jgozjga7jg6bjg7zjgrbjgYwgbG9jYWxTdG9yYWcg44Gr5L+d5a2Y44GZ44KL5b+F6KaB44GM44GC44KK44G+44GZ44CCUmVxdWVzdCB0byB1c2luZzxwIGNsYXNzPSJoYXMtYmFja2dyb3VuZCBtdC0wIHB0LTAiIHN0eWxlPSJiYWNrZ3JvdW5kLWNvbG9yOiNmZmU1Y2U7bWFyZ2luLXRvcDowO21hcmdpbi1yaWdodDowO21hcmdpbi1ib3R0b206dmFyKC0td3AtLXByZXNldC0tc3BhY2luZy0tNjApO21hcmdpbi1sZWZ0OjA7cGFkZGluZy10b3A6dmFyKC0td3AtLXByZXNldC0tc3BhY2luZy0tMjApO3BhZGRpbmctcmlnaHQ6dmFyKC0td3AtLXByZXNldC0tc3BhY2luZy0tMzApO3BhZGRpbmctYm90dG9tOnZhcigtLXdwLS1wcmVzZXQtLXNwYWNpbmctLTIwKTtwYWRkaW5nLWxlZnQ6dmFyKC0td3AtLXByZXNldC0tc3BhY2luZy0tNDApIj7mloflrZfliJcgIuaKleWFpeODh+ODvOOCvyIg44KSIFJlc3BvbnNlcyBBUEkg44GrIENPUlMg6YCB5L+h44GX44G+44GZ44CC44Os44K544Od44Oz44K577yI44Oi44OH44Or44GM55Sf5oiQ44GX44Gf5paH56ug77yJ44Gv44CB44K\/44K544Kv5Yem55CG55S76Z2i5LiK44Gn44K544OI44Oq44O844Of44Oz44Kw6KGo56S644GV44KM44G+44GZ44CC44OX44Ot44Oz44OX44OI6Kit5a6a5qyh56ys44Gn44CB44CM6Kqk5qSN44OB44Kn44OD44Kv5qmf6IO944CN44CM5paH56ug44Oq44Op44Kk44OI5qmf6IO944CN44CM5beu5oi755CG55Sx44Gu5YCZ6KOc5YiX5oyZ5qmf6IO944CN44Go44GE44Gj44Gf5qeY44CF44Gq5pSv5o+05qmf6IO977yI44K\/44K544Kv5Yem55CG6ICF44KS5pSv5o+044GZ44KL5qmf6IO977yJ44KS5o+Q5L6b44GZ44KL44GT44Go44GM5Y+v6IO944Gn44GZ44CCIkFQSeOCreODvCIg44GoICLmjIfnpLrmlociIOOBr+OAgeOBneOCjOOBnuOCjOOBruODpuODvOOCtuOBjCBsb2NhbFN0b3JhZ2Ug44Gr5L+d5a2Y44GZ44KL5b+F6KaB44GM44GC44KK44G+44GZ44CCPC9wPgpX44K544OI44Os44O844K444Gu5qmf6IO944GK44KI44Gz44Oq44K544Kv44KS55CG6Kej44GX44Gf44GG44GI44Gn44GU5rS755So44GP44Gg44GV44GE44CCY2xpZW50SWRpc1ZhbGlkb3JpZ2luYWxDb250ZW50bmFtZWF0dHJpYnV0ZXNmb250V2VpZ2h0dGV4dFRyYW5zZm9ybW5vQm90dG9tU3BhY2luZ25vVG9wU3BhY2luZ1VBR0hpZGVEZXNrdG9wVUFHSGlkZU1vYlVBR0hpZGVUYWJVQUdMb2dnZWRJblVBR0xvZ2dlZE91dFVBR0RheVVBR1Jlc3BvbnNpdmVDb25kaXRpb25zVUFHQW5pbWF0aW9uVHlwZVVBR0FuaW1hdGlvblRpbWVVQUdBbmltYXRpb25EZWxheVVBR0FuaW1hdGlvbkVhc2luZ1VBR0FuaW1hdGlvblJlcGVhdFVBR1Bvc2l0aW9uVUFHU3RpY2t5TG9jYXRpb25VQUdTdGlja3lSZXN0cmljdGVkVUFHU3RpY2t5T2Zmc2V0Y29udGVudGRyb3BDYXB0ZXh0UGFuZWxIaWRlQ29sb3J0ZXh0UGFuZWxTaG93U3BhY2luZ0NvbnRyb2xzdGV4dFBhbmVsSGVhZGluZ0ZvbnRTaXplc2lubmVyQmxvY2tzPHA+V2Vi44K544OI44Os44O844K444Gu5qmf6IO944GK44KI44Gz44Oq44K544Kv44KS55CG6Kej44GX44Gf44GG44GI44Gn44GU5rS755So44GP44Gg44GV44GE44CCPC9wPgoKCm9yZGVyZWR2YWx1ZXN0ZXh0UGFuZWxMaW5lSGVpZ2h0Y2xpZW50SWRpc1ZhbGlkbmFtZWF0dHJpYnV0ZXNjb250ZW50aHR0cHM6Ly93Lndpa2kvQUxRcFVBR0hpZGVEZXNrdG9wVUFHSGlkZU1vYlVBR0hpZGVUYWJVQUdMb2dnZWRJblVBR0xvZ2dlZE91dFVBR0RheVVBR1Jlc3BvbnNpdmVDb25kaXRpb25zVUFHQW5pbWF0aW9uVHlwZVVBR0FuaW1hdGlvblRpbWVVQUdBbmltYXRpb25EZWxheVVBR0FuaW1hdGlvbkVhc2luZ1VBR0FuaW1hdGlvblJlcGVhdFVBR1Bvc2l0aW9uVUFHU3RpY2t5TG9jYXRpb25VQUdTdGlja3lSZXN0cmljdGVkVUFHU3RpY2t5T2Zmc2V0aW5uZXJCbG9ja3NjbGllbnRJZGlzVmFsaWRuYW1lYXR0cmlidXRlc2NvbnRlbnRodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9qYS9kb2NzL1dlYi9BUEkvV2ViX1N0b3JhZ2VfQVBJVUFHSGlkZURlc2t0b3BVQUdIaWRlTW9iVUFHSGlkZVRhYlVBR0xvZ2dlZEluVUFHTG9nZ2VkT3V0VUFHRGF5VUFHUmVzcG9uc2l2ZUNvbmRpdGlvbnNVQUdBbmltYXRpb25UeXBlVUFHQW5pbWF0aW9uVGltZVVBR0FuaW1hdGlvbkRlbGF5VUFHQW5pbWF0aW9uRWFzaW5nVUFHQW5pbWF0aW9uUmVwZWF0VUFHUG9zaXRpb25VQUdTdGlja3lMb2NhdGlvblVBR1N0aWNreVJlc3RyaWN0ZWRVQUdTdGlja3lPZmZzZXRpbm5lckJsb2NrczwhLS0gd3A6bGlzdCAtLT4KPHVsIGNsYXNzPSJ3cC1ibG9jay1saXN0Ij48IS0tIHdwOmxpc3QtaXRlbSAtLT4KPGxpPmh0dHBzOi8vdy53aWtpL0FMUXA8L2xpPgo8IS0tIC93cDpsaXN0LWl0ZW0gLS0+CjwhLS0gd3A6bGlzdC1pdGVtIC0tPgo8bGk+aHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvamEvZG9jcy9XZWIvQVBJL1dlYl9TdG9yYWdlX0FQSTwvbGk+CjwhLS0gL3dwOmxpc3QtaXRlbSAtLT48L3VsPgo8IS0tIC93cDpsaXN0IC0tPgo8ZGl2IGNsYXNzPSJoYXMtc21hbGwtZm9udC1zaXplIiBzdHlsZT0idGV4dC1hbGlnbjogcmlnaHQ7Ij48ZGl2IHN0eWxlPSJkaXNwbGF5OiBpbmxpbmUtYmxvY2s7IGJhY2tncm91bmQ6ICNGQkU3REQ7IHRleHQtYWxpZ246IGNlbnRlcjsiPgroh6rnlLHmlLnlpInlj6\/og73jgaogSFRNTC9KYXZhU2NyaXB0IOOCs+ODvOODieOBp+OBmSAoTUlUIExpY2Vuc2Up44CC44GE44GL44Gq44KL5L+d6Ki844KC44GC44KK44G+44Gb44KT44CCPGJyPgooPGVtPjxzdHJvbmc+SmF2YVNjcmlwdCDjgpLnlKjjgYTjgZ\/jg4fjgrPjg6zjg7zjgrfjg6fjg7M8L3N0cm9uZz48L2VtPuOBryA8ZW0+PHN0cm9uZz48c3BhbiBzdHlsZT0iY29sb3I6ICMxOTcwQjkiPlByb2Zlc3Npb25hbDwvc3Bhbj48L3N0cm9uZz48L2VtPiBlZGl0aW9u44Gn44Gu44G\/5Yip55So5Y+v6IO944Gn44GZOiA8YSBocmVmPSJodHRwczovL3F1ZXN0ZXRyYS56ZW5kZXNrLmNvbS9oYy9qYS9hcnRpY2xlcy8zNjAwMDIyNDUyNTItTTIxMyI+TTIxMzwvYT4pCjwhLS0gd3A6ZW1iZWQgeyJ1cmwiOiJodHRwczovL3N1cHBvcnQucXVlc3RldHJhLmNvbS9qYS9kZWNvLWphL3FndWlkZS1yZXF1ZXN0LXRvLW9wZW5haS1hcGktMjAyNS8iLCJ0eXBlIjoid3AtZW1iZWQiLCJwcm92aWRlck5hbWVTbHVnIjoicXVlc3RldHJhLXN1cHBvcnQifSAtLT4KaHR0cHM6Ly9zdXBwb3J0LnF1ZXN0ZXRyYS5jb20vamEvZGVjby1qYS9xZ3VpZGUtcmVxdWVzdC10by1vcGVuYWktYXBpLTIwMjUvCjwhLS0gd3A6ZW1iZWQgeyJ1cmwiOiJodHRwczovL3N1cHBvcnQucXVlc3RldHJhLmNvbS9qYS9kZWNvLWphL3FndWlkZS1yZXF1ZXN0LXRvLW9wZW5haS1hcGktd2l0aC1pbWFnZS0yMDI1LyIsInR5cGUiOiJ3cC1lbWJlZCIsInByb3ZpZGVyTmFtZVNsdWciOiJxdWVzdGV0cmEtc3VwcG9ydCJ9IC0tPgpodHRwczovL3N1cHBvcnQucXVlc3RldHJhLmNvbS9qYS9kZWNvLWphL3FndWlkZS1yZXF1ZXN0LXRvLW9wZW5haS1hcGktd2l0aC1pbWFnZS0yMDI1LwoFBwGqBxIcGbQFBQdDAARPBwUHCAQIBggFCAcIBwgGCA4IDggLCAZIAQYIBA4UGx4aUwAXUgAZGxdcAB0PFxARHRIRFxYXGhsYGxgWEx8aIBsvKgkZISIWGwgKCAQIBggKCAcPBAoHQQQHCwkPCAkFBAkICQ4KDwoNCg0PDAsKCQ5KAAsMFEYATAAXUAARUgALERMPEhwZCwgHDwQKRwAFCg0PDA5KAAsMBhdQABFSAAsREw8LCAcPBAoHRQAKDQ8MDkoACwwGF1AAEVIACxETDwsIBw8ECkcACg0PDA5KAAsMBhdQABFSAAsREw8LCAcPBAoHRQAKDQ8MDkoACwwGF1AAEVIACxETDwsIBw8ECgUICg0PDA5KAAsMBhdQABFSAAsREw8LCAcPBAo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\/1F2gAHtB6kO+\/oAAAHh4eHc3cUd1aWRlOiBPcGVuQUkgQVBJIOOBq+ODquOCr+OCqOOCueODiCAobG9jYWxTdG9yYWdl54mIKX2SnRZ3dmh0dHBzOi8vc3VwcG9ydC5xdWVzdGV0cmEuY29tL3dwLWNvbnRlbnQvdXBsb2Fkcy8yMDI2LzA0L2RlY28tUmVxdWVzdC10by1PcGVuQUktQVBJLXVzaW5nLWxvY2FsU3RvcmFnZS1qYS0xMDI0eDUzNi5wbmd3oQFodHRwczovL3N1cHBvcnQucXVlc3RldHJhLmNvbS9qYS9kZXZlbG9wZXItYmxvZy9xZ3VpZGUtcmVxdWVzdC10by1vcGVuYWktYXBpLXVzaW5nLWxvY2Fsc3RvcmFnZS0yMDI2L2F0dGFjaG1lbnQvZGVjby1yZXF1ZXN0LXRvLW9wZW5haS1hcGktdXNpbmctbG9jYWxzdG9yYWdlLWphLzQAeHckZDVjOGRhMTctMzI2Zi00YThmLWE1ZmUtMWEyZGM0NjVjMmJjd+ICPGg0IGNsYXNzPSJ3cC1ibG9jay1oZWFkaW5nIGhhcy1iYWNrZ3JvdW5kIiBzdHlsZT0iYmFja2dyb3VuZC1jb2xvcjojZmZjNjliO21hcmdpbi10b3A6dmFyKC0td3AtLXByZXNldC0tc3BhY2luZy0tMzApO21hcmdpbi1yaWdodDowO21hcmdpbi1ib3R0b206MDttYXJnaW4tbGVmdDowO3BhZGRpbmctdG9wOjA7cGFkZGluZy1yaWdodDp2YXIoLS13cC0tcHJlc2V0LS1zcGFjaW5nLS0yMCk7cGFkZGluZy1ib3R0b206MDtwYWRkaW5nLWxlZnQ6dmFyKC0td3AtLXByZXNldC0tc3BhY2luZy0tMjApIj48c3Ryb25nPnFHdWlkZTogUmVxdWVzdCB0byBPcGVuQUkgQVBJIHVzaW5nIGxvY2FsU3RvcmFnZTwvc3Ryb25nPjwvaDQ+dyQxZTU2ZmFiYy1jZDM2LTRlZjQtODU4ZS1lOWJjYTFmNDhlZmJ3+gM8cCBjbGFzcz0iaGFzLXRleHQtYWxpZ24tcmlnaHQgaGFzLWJhY2tncm91bmQgaGFzLXNtYWxsLWZvbnQtc2l6ZSBtdC0wIHB0LTAiIHN0eWxlPSJiYWNrZ3JvdW5kLWNvbG9yOiNmZmM2OWI7bWFyZ2luLXRvcDowO21hcmdpbi1yaWdodDowO21hcmdpbi1ib3R0b206MDttYXJnaW4tbGVmdDowO3BhZGRpbmctdG9wOjA7cGFkZGluZy1yaWdodDp2YXIoLS13cC0tcHJlc2V0LS1zcGFjaW5nLS0zMCk7cGFkZGluZy1ib3R0b206MDtwYWRkaW5nLWxlZnQ6dmFyKC0td3AtLXByZXNldC0tc3BhY2luZy0tMzApIj48YSBocmVmPSJodHRwczovL3N1cHBvcnQucXVlc3RldHJhLmNvbS9kZXZlbG9wZXItYmxvZy9xZ3VpZGUtcmVxdWVzdC10by1vcGVuYWktYXBpLXVzaW5nLWxvY2Fsc3RvcmFnZS0yMDI2LyI+PHNwYW4gY2xhc3M9Im1hdGVyaWFsLWljb25zIj50cmFuc2xhdGU8L3NwYW4+IHFHdWlkZTogT3BlbkFJIEFQSSDjgavjg6rjgq\/jgqjjgrnjg4ggKGxvY2FsU3RvcmFnZeeJiCk8L2E+PC9wPnckNTYxMjdiODQtOGI4ZS00YTg4LWJlZmYtYjc3NzgwZTBmYmZhd\/8FPHAgY2xhc3M9Imhhcy1iYWNrZ3JvdW5kIG10LTAgcHQtMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6I2ZmZTVjZTttYXJnaW4tdG9wOjA7bWFyZ2luLXJpZ2h0OjA7bWFyZ2luLWJvdHRvbTp2YXIoLS13cC0tcHJlc2V0LS1zcGFjaW5nLS02MCk7bWFyZ2luLWxlZnQ6MDtwYWRkaW5nLXRvcDp2YXIoLS13cC0tcHJlc2V0LS1zcGFjaW5nLS0yMCk7cGFkZGluZy1yaWdodDp2YXIoLS13cC0tcHJlc2V0LS1zcGFjaW5nLS0zMCk7cGFkZGluZy1ib3R0b206dmFyKC0td3AtLXByZXNldC0tc3BhY2luZy0tMjApO3BhZGRpbmctbGVmdDp2YXIoLS13cC0tcHJlc2V0LS1zcGFjaW5nLS00MCkiPlNlbmRzIHRoZSBJbnB1dC1zdHJpbmcgdG8gdGhlIFJlc3BvbnNlcyBBUEkgdmlhIENPUlMuIFRoZSByZXNwb25zZXMgKHRoZSBzZW50ZW5jZSBnZW5lcmF0ZWQgYnkgdGhlIG1vZGVsKSB3aWxsIGJlIGRpc3BsYXllZCBpbiBzdHJlYW1pbmcgZm9ybWF0LiBEZXBlbmRpbmcgb24gdGhlIHByb21wdCBzZXR0aW5ncywgdmFyaW91cyBzdXBwb3J0IGZ1bmN0aW9ucyB0byBhc3Npc3QgdGFzayBvcGVyYXRvcnMgY2FuIGJlIHByb3ZpZGVkLCBzdWNoIGFzIGEgdHlwbyBjaGVjayBmdW5jdGlvbiwgYSB0ZXh0IHJld3JpdGUgZnVuY3Rpb24sIGFuZCBhIGxpc3Qgb2YgcG9zc2libGUgcmVhc29ucyBmb3IgcmVqZWN0aW9uLiBUaGUgIkFQSSBrZXkiIGFuZCAiaW5zdHJ1Y3Rpb24gdGV4dCIgbXVzdCBiZSBzYXZlZCBpbiBsb2NhbFN0b3JhZ2UgYnkgZWFjaCB1c2VyLjwvcD53JGEwMjgwY2FjLWI4MzItNDhmNC05M2U1LWZmMTA3Y2E3Njk1M3ckOGU4NjlhMTAtZWU4Yi00MzhhLWIwYmItYjYwMDViYzhjY2I1dyc8dWwgY2xhc3M9IndwLWJsb2NrLWxpc3QiPgoKCgoKCgoKPC91bD53JDhkMTgzYTEzLWYyNjMtNGJkMi05NTgwLWJlMTFhOTdjZGYyYndHPGxpPuKGkCBTVFJJTkcgKFNUUklOR19URVhURklFTEQpIDxjb2RlPnFfaHVtYW5fYW5zd2VyX2JvZHk8L2NvZGU+PC9saT53JDFiMWY4MzAwLTA4NGQtNDUyZS1iNWI0LTQ1NDQwZmVhMzEwZHctPGxpPuKGkCBsb2NhbFN0b3JhZ2UgPGNvZGU+YXBpS2V5PC9jb2RlPjwvbGk+dyQwYzc2OGRhOS0zNzA1LTRkOGQtOTIzZi05YWM1MWI4ZDFhZjh3MjxsaT7ihpAgbG9jYWxTdG9yYWdlIDxjb2RlPmluc3RydWN0aW9uPC9jb2RlPjwvbGk+dyQxZWQ4MDNmYS0yNmExLTQxODItOTdlNS0yYjFmOTE3ZTJhMGN3KTxsaT7ihpIgPGNvZGU+cHJlI3VzZXJfcmVzdWx0PC9jb2RlPjwvbGk+dyQyZjgyZTIxNy0yODdiLTQwN2YtYmU5Zi02MGZkM2Y3YTZhMTl3KTxsaT7ihpIgPGNvZGU+ZGl2I3VzZXJfc3RhdHVzPC9jb2RlPjwvbGk+dyQxZmU3NWUwNC0wNjYxLTQ0ZWMtODU3NS1kMThjMWIxMWE5M2V3SjxwPlBsZWFzZSB1c2Ugd2ViIHN0b3JhZ2UgYWZ0ZXIgdW5kZXJzdGFuZGluZyBpdHMgZnVuY3Rpb25zIGFuZCByaXNrcy48L3A+dyQwZDYxNmIzZi0yNjZmLTQ1ZTAtYTdhMC05YzhmYmQzMTFmZjd3JGY0YTE5NzRjLTk1ZWMtNDRhNS1hNTZlLTlhYTIzYTdiNmFhYXckNDVlOThmYzQtNjRiMy00N2VhLWEwNDMtNjc3OWYyNGI2MDIwdyRmNWFiMmQ1Zi0yYTgwLTQ0MDctOGRiZi05NjE2MmFkMTczYzN30X48ZGl2IGNsYXNzPSJoY2Jfd3JhcCI+PHByZSBjbGFzcz0icHJpc20gdW5kZWZpbmVkLW51bWJlcnMgbGFuZy1odG1sIiBkYXRhLWxhbmc9IkhUTUwiPjxjb2RlPiZsdDtzdHlsZSZndDsKLyogQUnlkbzjgbPlh7rjgZfjg5zjgr\/jg7MgKi8KLnVzZXJfYWlCdG4gewpib3JkZXI6IDFweCBzb2xpZCAjY2NjOwpwYWRkaW5nOiA2cHggMTJweDsKYm9yZGVyLXJhZGl1czogMjBweDsKY3Vyc29yOiBwb2ludGVyOwpmb250LXNpemU6IDEzcHg7CnRyYW5zaXRpb246IGFsbCAwLjJzIGVhc2U7CmNvbG9yOiAjMzMzOwptYXJnaW4tcmlnaHQ6IDhweDsKbWFyZ2luLWJvdHRvbTogMTJweDsKYmFja2dyb3VuZC1jb2xvcjogI2ZmZjsKZm9udC1mYW1pbHk6IHN5c3RlbS11aSwgLWFwcGxlLXN5c3RlbSwgc2Fucy1zZXJpZjsKfQoudXNlcl9haUJ0bjpob3ZlciB7IGJhY2tncm91bmQtY29sb3I6ICNmMGYwZjA7IGJvcmRlci1jb2xvcjogI2JiYjsgfQoudXNlcl9haUJ0bjpkaXNhYmxlZCB7IG9wYWNpdHk6IDAuNTsgY3Vyc29yOiBub3QtYWxsb3dlZDsgYmFja2dyb3VuZC1jb2xvcjogI2VlZTsgfQoKLyogQ09ORklH44Oc44K\/44OzICovCiN1c2VyX2J0bkNvbmZpZyB7CmJvcmRlcjogMXB4IHNvbGlkICM0YTU1Njg7CnBhZGRpbmc6IDZweCAxNnB4Owpib3JkZXItcmFkaXVzOiA0cHg7CmN1cnNvcjogcG9pbnRlcjsKZm9udC1zaXplOiAxM3B4Owpmb250LXdlaWdodDogYm9sZDsKdHJhbnNpdGlvbjogYWxsIDAuMnMgZWFzZTsKY29sb3I6ICNmZmY7CmJhY2tncm91bmQtY29sb3I6ICM0YTU1Njg7Cm1hcmdpbi1yaWdodDogMTZweDsKbWFyZ2luLWJvdHRvbTogMTJweDsKZm9udC1mYW1pbHk6IHN5c3RlbS11aSwgLWFwcGxlLXN5c3RlbSwgc2Fucy1zZXJpZjsKfQojdXNlcl9idG5Db25maWc6aG92ZXIgeyBiYWNrZ3JvdW5kLWNvbG9yOiAjMmQzNzQ4OyBib3JkZXItY29sb3I6ICMxYTIwMmM7IH0KI3VzZXJfYnRuQ29uZmlnLnVzZXJfYWN0aXZlIHsgYmFja2dyb3VuZC1jb2xvcjogIzJiNmNiMDsgYm9yZGVyLWNvbG9yOiAjMmM1MjgyOyBib3gtc2hhZG93OiBpbnNldCAwIDJweCA0cHggcmdiYSgwLDAsMCwwLjIpOyB9CgovKiAtLS0g44Gd44Gu5LuW44Gu6Kit5a6a44Ko44Oq44Ki6KaB57SgIC0tLSAqLwoudXNlcl9sYmwgewpkaXNwbGF5OiBibG9jazsKbWFyZ2luOiAxMnB4IDAgNHB4IDA7CmZvbnQtd2VpZ2h0OiBib2xkOwpmb250LXNpemU6IDEzcHg7CmZvbnQtZmFtaWx5OiBzeXN0ZW0tdWksIC1hcHBsZS1zeXN0ZW0sIHNhbnMtc2VyaWY7Cn0KLnVzZXJfZGlzcGxheV92YWwgewpiYWNrZ3JvdW5kOiAjZTllOWU5OwpwYWRkaW5nOiA0cHggOHB4Owpib3JkZXItcmFkaXVzOiA0cHg7CmZvbnQtZmFtaWx5OiBNZW5sbywgTW9uYWNvLCBDb25zb2xhcywgbW9ub3NwYWNlOwpjb2xvcjogIzMzMzsKZm9udC1zaXplOiAxM3B4Owp9Ci51c2VyX2Rpc3BsYXlfaW5zdCB7CmJhY2tncm91bmQ6ICNlOWU5ZTk7CnBhZGRpbmc6IDhweDsKYm9yZGVyLXJhZGl1czogNHB4Owp3aGl0ZS1zcGFjZTogcHJlLXdyYXA7CmNvbG9yOiAjMzMzOwptaW4taGVpZ2h0OiAxLjVlbTsKbWFyZ2luLWJvdHRvbTogNHB4Owpmb250LXNpemU6IDEzcHg7CmZvbnQtZmFtaWx5OiBzeXN0ZW0tdWksIC1hcHBsZS1zeXN0ZW0sIHNhbnMtc2VyaWY7Cn0KLnVzZXJfYnRuRWRpdCB7CnBhZGRpbmc6IDJweCA4cHg7CmZvbnQtc2l6ZTogMTFweDsKY3Vyc29yOiBwb2ludGVyOwpib3JkZXI6IDFweCBzb2xpZCAjYmJiOwpiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmOwpib3JkZXItcmFkaXVzOiA0cHg7Cm1hcmdpbi1sZWZ0OiA4cHg7CnZlcnRpY2FsLWFsaWduOiBtaWRkbGU7Cn0KLnVzZXJfYnRuRWRpdDpob3ZlciB7IGJhY2tncm91bmQtY29sb3I6ICNlZWU7IH0KI3VzZXJfYXBpS2V5LCAjdXNlcl9pbnN0cnVjdGlvbiB7CndpZHRoOiAxMDAlOwpib3gtc2l6aW5nOiBib3JkZXItYm94OwpwYWRkaW5nOiA2cHg7CmJvcmRlcjogMXB4IHNvbGlkICNjY2M7CmJvcmRlci1yYWRpdXM6IDRweDsKZm9udC1mYW1pbHk6IGluaGVyaXQ7CmZvbnQtc2l6ZTogMTNweDsKfQojdXNlcl9pbnN0cnVjdGlvbiB7IHJlc2l6ZTogdmVydGljYWw7IG1pbi1oZWlnaHQ6IDRlbTsgfQoudXNlcl9hY3Rpb25CdG4gewpwYWRkaW5nOiA0cHggMTJweDsKYm9yZGVyOiAxcHggc29saWQgI2JiYjsKYmFja2dyb3VuZC1jb2xvcjogI2ZmZjsKYm9yZGVyLXJhZGl1czogNHB4OwpjdXJzb3I6IHBvaW50ZXI7CmZvbnQtc2l6ZTogMTNweDsKfQoudXNlcl9hY3Rpb25CdG46aG92ZXIgeyBiYWNrZ3JvdW5kLWNvbG9yOiAjZWVlOyB9CiN1c2VyX3Jlc3VsdCB7CmJhY2tncm91bmQtY29sb3I6ICNmOWY5Zjk7CmJvcmRlcjogMXB4IHNvbGlkICNkZGQ7CmJvcmRlci1yYWRpdXM6IDRweDsKcGFkZGluZzogMTJweDsKbWluLWhlaWdodDogOGVtOwp3aGl0ZS1zcGFjZTogcHJlLXdyYXA7CndvcmQtYnJlYWs6IGJyZWFrLXdvcmQ7CmZvbnQtZmFtaWx5OiBNZW5sbywgTW9uYWNvLCBDb25zb2xhcywgJnF1b3Q7Q291cmllciBOZXcmcXVvdDssIG1vbm9zcGFjZTsKZm9udC1zaXplOiAxNHB4OwpsaW5lLWhlaWdodDogMS42Owpjb2xvcjogIzIyMjsKbWFyZ2luLXRvcDogMTZweDsKfQojdXNlcl9zdGF0dXMgewpmb250OiAxMnB4LzEuNCBzeXN0ZW0tdWksIHNhbnMtc2VyaWY7Cm9wYWNpdHk6IDAuNzU7Cm1hcmdpbi10b3A6IDhweDsKbWluLWhlaWdodDogMS40ZW07Cn0KCkBrZXlmcmFtZXMgYmxpbmsgeyA1MCUgeyBvcGFjaXR5OiAwOyB9IH0KLnVzZXJfY3Vyc29yIHsKZGlzcGxheTogaW5saW5lLWJsb2NrOwp3aWR0aDogOHB4OwpoZWlnaHQ6IDFlbTsKYmFja2dyb3VuZC1jb2xvcjogIzMzMzsKbWFyZ2luLWxlZnQ6IDJweDsKYW5pbWF0aW9uOiBibGluayAxcyBzdGVwLWVuZCBpbmZpbml0ZTsKdmVydGljYWwtYWxpZ246IHRleHQtYm90dG9tOwp9CiZsdDsvc3R5bGUmZ3Q7CgombHQ7YnV0dG9uIHR5cGU9JnF1b3Q7YnV0dG9uJnF1b3Q7IGlkPSZxdW90O3VzZXJfYnRuQ29uZmlnJnF1b3Q7Jmd0O0NPTkZJRyZsdDsvYnV0dG9uJmd0OwombHQ7YnV0dG9uIHR5cGU9JnF1b3Q7YnV0dG9uJnF1b3Q7IGNsYXNzPSZxdW90O3VzZXJfYWlCdG4mcXVvdDsmZ3Q7Z3B0LTUuNCZsdDsvYnV0dG9uJmd0OwombHQ7YnV0dG9uIHR5cGU9JnF1b3Q7YnV0dG9uJnF1b3Q7IGNsYXNzPSZxdW90O3VzZXJfYWlCdG4mcXVvdDsmZ3Q7Z3B0LTUuNC1taW5pJmx0Oy9idXR0b24mZ3Q7CiZsdDtidXR0b24gdHlwZT0mcXVvdDtidXR0b24mcXVvdDsgY2xhc3M9JnF1b3Q7dXNlcl9haUJ0biZxdW90OyZndDtncHQtNS40LW5hbm8mbHQ7L2J1dHRvbiZndDsKJmx0O2J1dHRvbiB0eXBlPSZxdW90O2J1dHRvbiZxdW90OyBjbGFzcz0mcXVvdDt1c2VyX2FpQnRuJnF1b3Q7Jmd0O2dwdC01LW5hbm8mbHQ7L2J1dHRvbiZndDsKJmx0O2J1dHRvbiB0eXBlPSZxdW90O2J1dHRvbiZxdW90OyBjbGFzcz0mcXVvdDt1c2VyX2FpQnRuJnF1b3Q7Jmd0O2dwdC01LW1pbmkmbHQ7L2J1dHRvbiZndDsKJmx0O2J1dHRvbiB0eXBlPSZxdW90O2J1dHRvbiZxdW90OyBjbGFzcz0mcXVvdDt1c2VyX2FpQnRuJnF1b3Q7Jmd0O2dwdC01Jmx0Oy9idXR0b24mZ3Q7CiZsdDtidXR0b24gdHlwZT0mcXVvdDtidXR0b24mcXVvdDsgY2xhc3M9JnF1b3Q7dXNlcl9haUJ0biZxdW90OyZndDtncHQtNS4zLWNvZGV4Jmx0Oy9idXR0b24mZ3Q7CiZsdDtidXR0b24gdHlwZT0mcXVvdDtidXR0b24mcXVvdDsgY2xhc3M9JnF1b3Q7dXNlcl9haUJ0biZxdW90OyZndDtncHQtNS1jb2RleCZsdDsvYnV0dG9uJmd0OwombHQ7c3BhbiBpZD0mcXVvdDt1c2VyX2xibF9hcGkmcXVvdDsgY2xhc3M9JnF1b3Q7dXNlcl9sYmwmcXVvdDsgc3R5bGU9JnF1b3Q7ZGlzcGxheTpub25lOyZxdW90OyZndDtBUEnjgq3jg7wgLyBBUEkgS2V5OiZsdDsvc3BhbiZndDsKJmx0O3NwYW4gaWQ9JnF1b3Q7dXNlcl9hcGlLZXlfZGlzcGxheSZxdW90OyBjbGFzcz0mcXVvdDt1c2VyX2Rpc3BsYXlfdmFsJnF1b3Q7IHN0eWxlPSZxdW90O2Rpc3BsYXk6bm9uZTsmcXVvdDsmZ3Q7Jmx0Oy9zcGFuJmd0OwombHQ7YnV0dG9uIHR5cGU9JnF1b3Q7YnV0dG9uJnF1b3Q7IGNsYXNzPSZxdW90O3VzZXJfYnRuRWRpdCZxdW90OyBpZD0mcXVvdDt1c2VyX2J0bl9lZGl0QXBpS2V5JnF1b3Q7IHN0eWxlPSZxdW90O2Rpc3BsYXk6bm9uZTsmcXVvdDsmZ3Q7RWRpdCBLRVkmbHQ7L2J1dHRvbiZndDsKJmx0O3NwYW4gaWQ9JnF1b3Q7dXNlcl9hcGlLZXlfZWRpdF9hcmVhJnF1b3Q7IHN0eWxlPSZxdW90O2Rpc3BsYXk6bm9uZTsgd2lkdGg6MTAwJTsmcXVvdDsmZ3Q7Jmx0Oy9zcGFuJmd0OwombHQ7c3BhbiBpZD0mcXVvdDt1c2VyX2xibF9pbnN0JnF1b3Q7IGNsYXNzPSZxdW90O3VzZXJfbGJsJnF1b3Q7IHN0eWxlPSZxdW90O2Rpc3BsYXk6bm9uZTsmcXVvdDsmZ3Q75oyH56S6IC8gSW5zdHJ1Y3Rpb24gKOWFpeWKm+WvvuixoTogJmx0O3NwYW4gaWQ9JnF1b3Q7dXNlcl9sYmxfdGFyZ2V0X2ZpZWxkJnF1b3Q7Jmd0OyZsdDsvc3BhbiZndDspOiZsdDsvc3BhbiZndDsKJmx0O3NwYW4gaWQ9JnF1b3Q7dXNlcl9pbnN0cnVjdGlvbl9kaXNwbGF5JnF1b3Q7IGNsYXNzPSZxdW90O3VzZXJfZGlzcGxheV9pbnN0JnF1b3Q7IHN0eWxlPSZxdW90O2Rpc3BsYXk6bm9uZTsmcXVvdDsmZ3Q7Jmx0Oy9zcGFuJmd0OwombHQ7YnV0dG9uIHR5cGU9JnF1b3Q7YnV0dG9uJnF1b3Q7IGNsYXNzPSZxdW90O3VzZXJfYnRuRWRpdCZxdW90OyBpZD0mcXVvdDt1c2VyX2J0bl9lZGl0SW5zdCZxdW90OyBzdHlsZT0mcXVvdDttYXJnaW4tbGVmdDowOyBtYXJnaW4tdG9wOjRweDsgZGlzcGxheTpub25lOyZxdW90OyZndDtFZGl0IFBST01QVCZsdDsvYnV0dG9uJmd0OwombHQ7c3BhbiBpZD0mcXVvdDt1c2VyX2luc3RfZWRpdF9hcmVhJnF1b3Q7IHN0eWxlPSZxdW90O2Rpc3BsYXk6bm9uZTsgd2lkdGg6MTAwJTsmcXVvdDsmZ3Q7Jmx0Oy9zcGFuJmd0OwombHQ7aHIgaWQ9JnF1b3Q7dXNlcl9zZXRfaHImcXVvdDsgc3R5bGU9JnF1b3Q7bWFyZ2luOjE2cHggMCAxMnB4IDA7IGJvcmRlcjpub25lOyBib3JkZXItdG9wOjFweCBkYXNoZWQgI2NjYzsgZGlzcGxheTpub25lOyZxdW90OyZndDsKJmx0O2J1dHRvbiB0eXBlPSZxdW90O2J1dHRvbiZxdW90OyBpZD0mcXVvdDt1c2VyX2J0blNhdmUmcXVvdDsgY2xhc3M9JnF1b3Q7dXNlcl9hY3Rpb25CdG4mcXVvdDsgc3R5bGU9JnF1b3Q7ZGlzcGxheTpub25lOyZxdW90OyZndDvoqK3lrprjgpLkv53lrZggLyBTYXZlJmx0Oy9idXR0b24mZ3Q7CiZsdDtidXR0b24gdHlwZT0mcXVvdDtidXR0b24mcXVvdDsgaWQ9JnF1b3Q7dXNlcl9idG5DbGVhciZxdW90OyBjbGFzcz0mcXVvdDt1c2VyX2FjdGlvbkJ0biZxdW90OyBzdHlsZT0mcXVvdDtkaXNwbGF5Om5vbmU7JnF1b3Q7Jmd0O+OCr+ODquOCoiAvIENsZWFyJmx0Oy9idXR0b24mZ3Q7CiZsdDtzcGFuIGlkPSZxdW90O3VzZXJfc2V0dGluZ1N0YXR1cyZxdW90OyBzdHlsZT0mcXVvdDttYXJnaW4tbGVmdDo4cHg7IGNvbG9yOiMwMDY2Y2M7IGZvbnQtd2VpZ2h0OmJvbGQ7IGZvbnQtc2l6ZToxM3B4OyBkaXNwbGF5Om5vbmU7JnF1b3Q7Jmd0OyZsdDsvc3BhbiZndDsKJmx0O3ByZSBpZD0mcXVvdDt1c2VyX3Jlc3VsdCZxdW90OyZndDsmbHQ7L3ByZSZndDsKJmx0O2RpdiBpZD0mcXVvdDt1c2VyX3N0YXR1cyZxdW90OyZndDsmbHQ7L2RpdiZndDsKCiZsdDtzY3JpcHQmZ3Q7CnFicG1zLmZvcm0ub24oJiMzOTtyZWFkeSYjMzk7LCAoKSA9Jmd0OyB7CiAgLy8gLS0tIDAuIOWvvuixoeODleOCo+ODvOODq+ODieKYheKYheKYhSDnt6jpm4bjgZfjgabjgY\/jgaDjgZXjgYQgLyBFRElUIGhlcmUg4piF4piF4piFIC0tLQogIGNvbnN0IFRBUkdFVF9GSUVMRF9OQU1FID0gJnF1b3Q7cV9odW1hbl9hbnN3ZXJfYm9keSZxdW90OzsKICAKICAvLyDjg6njg5njg6vjgavlr77osaHjg5XjgqPjg7zjg6vjg4nlkI3jgpLlj43mmKAKICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgmcXVvdDt1c2VyX2xibF90YXJnZXRfZmllbGQmcXVvdDspLmlubmVyVGV4dCA9IFRBUkdFVF9GSUVMRF9OQU1FOwoKICAvLyAtLS0gMS4g5YuV55qE44Gq5YWl5Yqb6KaB57Sg44Gu55Sf5oiQIC0tLQogIGNvbnN0IGFwaUtleUlucHV0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgmcXVvdDtpbnB1dCZxdW90Oyk7CiAgYXBpS2V5SW5wdXQudHlwZSA9ICZxdW90O3Bhc3N3b3JkJnF1b3Q7OwogIGFwaUtleUlucHV0LmlkID0gJnF1b3Q7dXNlcl9hcGlLZXkmcXVvdDs7CiAgYXBpS2V5SW5wdXQucGxhY2Vob2xkZXIgPSAmcXVvdDtzay0uLi4mcXVvdDs7CiAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJnF1b3Q7dXNlcl9hcGlLZXlfZWRpdF9hcmVhJnF1b3Q7KS5hcHBlbmRDaGlsZChhcGlLZXlJbnB1dCk7CiAgY29uc3QgaW5zdHJ1Y3Rpb25JbnB1dCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJnF1b3Q7dGV4dGFyZWEmcXVvdDspOwogIGluc3RydWN0aW9uSW5wdXQuaWQgPSAmcXVvdDt1c2VyX2luc3RydWN0aW9uJnF1b3Q7OwogIGluc3RydWN0aW9uSW5wdXQucGxhY2Vob2xkZXIgPSAmcXVvdDvkvos6IOOBguOBquOBn+OBr+WEquengOOBquOCouOCt+OCueOCv+ODs+ODiOOBp+OBmeOAguewoea9lOOBq+etlOOBiOOBpuOBj+OBoOOBleOBhOOAgiAvIEV4OiBZb3UgYXJlIGEgaGVscGZ1bCBhc3Npc3RhbnQuLi4mcXVvdDs7CiAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJnF1b3Q7dXNlcl9pbnN0X2VkaXRfYXJlYSZxdW90OykuYXBwZW5kQ2hpbGQoaW5zdHJ1Y3Rpb25JbnB1dCk7CgogIC8vIC0tLSAyLiDlkITnqK7lrprmlbDjgajopoHntKDjga7lj5blvpcgLS0tCiAgY29uc3QgU1RPUkFHRV9LRVlfQVBJID0gJnF1b3Q7dXNlcl9vcGVuYWlfYXBpX2tleSZxdW90OzsKICBjb25zdCBTVE9SQUdFX0tFWV9JTlNUID0gJnF1b3Q7dXNlcl9vcGVuYWlfaW5zdHJ1Y3Rpb24mcXVvdDs7CiAgY29uc3QgYnRuQ29uZmlnID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJnF1b3Q7dXNlcl9idG5Db25maWcmcXVvdDspOwogIGNvbnN0IGFpQnV0dG9ucyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJnF1b3Q7LnVzZXJfYWlCdG4mcXVvdDspOwogIGNvbnN0IHJlc3VsdEVsZW1lbnQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgmcXVvdDt1c2VyX3Jlc3VsdCZxdW90Oyk7CiAgY29uc3Qgc3RhdHVzRWxlbWVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCZxdW90O3VzZXJfc3RhdHVzJnF1b3Q7KTsKICBjb25zdCBzZXR0aW5nU3RhdHVzID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJnF1b3Q7dXNlcl9zZXR0aW5nU3RhdHVzJnF1b3Q7KTsKCiAgLy8gVUnnirbmhYvnrqHnkIbjg5Xjg6njgrAKICBsZXQgaXNDb25maWdPcGVuID0gZmFsc2U7CiAgbGV0IGlzRWRpdGluZ0FwaSA9IGZhbHNlOwogIGxldCBpc0VkaXRpbmdJbnN0ID0gZmFsc2U7CgogIC8vIC0tLSAzLiBVSeOBruihqOekuuWIh+OCiuabv+OBiOmWouaVsCAo44OV44Op44OD44OI44Gq6KaB57Sg44KS5YCL5Yil44Gr5Yi25b6hKSAtLS0KICBmdW5jdGlvbiByZW5kZXJVSSgpIHsKICAgIGNvbnN0IHN0b3JlZEtleSA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKFNUT1JBR0VfS0VZX0FQSSkgfHwgJnF1b3Q7JnF1b3Q7OwogICAgY29uc3Qgc3RvcmVkSW5zdCA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKFNUT1JBR0VfS0VZX0lOU1QpIHx8ICZxdW90OyZxdW90OzsKICAgIGFwaUtleUlucHV0LnZhbHVlID0gc3RvcmVkS2V5OwogICAgaW5zdHJ1Y3Rpb25JbnB1dC52YWx1ZSA9IHN0b3JlZEluc3Q7CiAgICBjb25zdCBoYXNLZXkgPSAhIXN0b3JlZEtleTsKICAgIGNvbnN0IGhhc0luc3QgPSAhIXN0b3JlZEluc3Q7CiAgICBjb25zdCBzaG93QXBpRGlzcCA9IGlzQ29uZmlnT3BlbiAmJiBoYXNLZXkgJiYgIWlzRWRpdGluZ0FwaTsKICAgIGNvbnN0IHNob3dBcGlFZGl0ID0gaXNDb25maWdPcGVuICYmICghaGFzS2V5IHx8IGlzRWRpdGluZ0FwaSk7CiAgICBjb25zdCBzaG93SW5zdERpc3AgPSBpc0NvbmZpZ09wZW4gJiYgaGFzSW5zdCAmJiAhaXNFZGl0aW5nSW5zdDsKICAgIGNvbnN0IHNob3dJbnN0RWRpdCA9IGlzQ29uZmlnT3BlbiAmJiAoIWhhc0luc3QgfHwgaXNFZGl0aW5nSW5zdCk7CgogICAgaWYgKGlzQ29uZmlnT3BlbikgewogICAgICBidG5Db25maWcuY2xhc3NMaXN0LmFkZCgmcXVvdDt1c2VyX2FjdGl2ZSZxdW90Oyk7CiAgICB9IGVsc2UgewogICAgICBidG5Db25maWcuY2xhc3NMaXN0LnJlbW92ZSgmcXVvdDt1c2VyX2FjdGl2ZSZxdW90Oyk7CiAgICB9CgogICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJnF1b3Q7dXNlcl9sYmxfYXBpJnF1b3Q7KS5zdHlsZS5kaXNwbGF5ID0gaXNDb25maWdPcGVuID8gJnF1b3Q7YmxvY2smcXVvdDsgOiAmcXVvdDtub25lJnF1b3Q7OwogICAgY29uc3QgZUtleURpc3AgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgmcXVvdDt1c2VyX2FwaUtleV9kaXNwbGF5JnF1b3Q7KTsKICAgIGVLZXlEaXNwLnN0eWxlLmRpc3BsYXkgPSBzaG93QXBpRGlzcCA\/ICZxdW90O2lubGluZS1ibG9jayZxdW90OyA6ICZxdW90O25vbmUmcXVvdDs7CiAgICBpZiAoc2hvd0FwaURpc3ApIGVLZXlEaXNwLmlubmVyVGV4dCA9IHN0b3JlZEtleS5sZW5ndGggJmd0OyAxMCA\/IHN0b3JlZEtleS5zdWJzdHJpbmcoMCwgMTApICsgJnF1b3Q7Li4uJnF1b3Q7IDogc3RvcmVkS2V5OwogICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJnF1b3Q7dXNlcl9idG5fZWRpdEFwaUtleSZxdW90Oykuc3R5bGUuZGlzcGxheSA9IHNob3dBcGlEaXNwID8gJnF1b3Q7aW5saW5lLWJsb2NrJnF1b3Q7IDogJnF1b3Q7bm9uZSZxdW90OzsKICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCZxdW90O3VzZXJfYXBpS2V5X2VkaXRfYXJlYSZxdW90Oykuc3R5bGUuZGlzcGxheSA9IHNob3dBcGlFZGl0ID8gJnF1b3Q7YmxvY2smcXVvdDsgOiAmcXVvdDtub25lJnF1b3Q7OwogICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJnF1b3Q7dXNlcl9sYmxfaW5zdCZxdW90Oykuc3R5bGUuZGlzcGxheSA9IGlzQ29uZmlnT3BlbiA\/ICZxdW90O2Jsb2NrJnF1b3Q7IDogJnF1b3Q7bm9uZSZxdW90OzsKICAgIGNvbnN0IGVJbnN0RGlzcCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCZxdW90O3VzZXJfaW5zdHJ1Y3Rpb25fZGlzcGxheSZxdW90Oyk7CiAgICBlSW5zdERpc3Auc3R5bGUuZGlzcGxheSA9IHNob3dJbnN0RGlzcCA\/ICZxdW90O2Jsb2NrJnF1b3Q7IDogJnF1b3Q7bm9uZSZxdW90OzsKICAgIGlmIChzaG93SW5zdERpc3ApIGVJbnN0RGlzcC5pbm5lclRleHQgPSBzdG9yZWRJbnN0OwogICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJnF1b3Q7dXNlcl9idG5fZWRpdEluc3QmcXVvdDspLnN0eWxlLmRpc3BsYXkgPSBzaG93SW5zdERpc3AgPyAmcXVvdDtpbmxpbmUtYmxvY2smcXVvdDsgOiAmcXVvdDtub25lJnF1b3Q7OwogICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJnF1b3Q7dXNlcl9pbnN0X2VkaXRfYXJlYSZxdW90Oykuc3R5bGUuZGlzcGxheSA9IHNob3dJbnN0RWRpdCA\/ICZxdW90O2Jsb2NrJnF1b3Q7IDogJnF1b3Q7bm9uZSZxdW90OzsKICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCZxdW90O3VzZXJfc2V0X2hyJnF1b3Q7KS5zdHlsZS5kaXNwbGF5ID0gaXNDb25maWdPcGVuID8gJnF1b3Q7YmxvY2smcXVvdDsgOiAmcXVvdDtub25lJnF1b3Q7OwogICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJnF1b3Q7dXNlcl9idG5TYXZlJnF1b3Q7KS5zdHlsZS5kaXNwbGF5ID0gaXNDb25maWdPcGVuID8gJnF1b3Q7aW5saW5lLWJsb2NrJnF1b3Q7IDogJnF1b3Q7bm9uZSZxdW90OzsKICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCZxdW90O3VzZXJfYnRuQ2xlYXImcXVvdDspLnN0eWxlLmRpc3BsYXkgPSBpc0NvbmZpZ09wZW4gPyAmcXVvdDtpbmxpbmUtYmxvY2smcXVvdDsgOiAmcXVvdDtub25lJnF1b3Q7OwogICAgc2V0dGluZ1N0YXR1cy5zdHlsZS5kaXNwbGF5ID0gaXNDb25maWdPcGVuID8gJnF1b3Q7aW5saW5lLWJsb2NrJnF1b3Q7IDogJnF1b3Q7bm9uZSZxdW90OzsKICB9CgogIC8vIOWIneacn+WMlgogIHJlbmRlclVJKCk7CgogIC8vIC0tLSA0LiDlkITnqK7jgqTjg5njg7Pjg4jjg6rjgrnjg4rjg7wgLS0tCiAgYnRuQ29uZmlnLmFkZEV2ZW50TGlzdGVuZXIoJnF1b3Q7Y2xpY2smcXVvdDssICgpID0mZ3Q7IHsKICAgIGlzQ29uZmlnT3BlbiA9ICFpc0NvbmZpZ09wZW47CiAgICBpZiAoIWlzQ29uZmlnT3BlbikgewogICAgICBpc0VkaXRpbmdBcGkgPSBmYWxzZTsKICAgICAgaXNFZGl0aW5nSW5zdCA9IGZhbHNlOwogICAgfQogICAgcmVuZGVyVUkoKTsKICB9KTsKICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgmcXVvdDt1c2VyX2J0bl9lZGl0QXBpS2V5JnF1b3Q7KS5hZGRFdmVudExpc3RlbmVyKCZxdW90O2NsaWNrJnF1b3Q7LCAoKSA9Jmd0OyB7CiAgICBpc0VkaXRpbmdBcGkgPSB0cnVlOwogICAgcmVuZGVyVUkoKTsKICAgIGFwaUtleUlucHV0LmZvY3VzKCk7CiAgfSk7CiAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJnF1b3Q7dXNlcl9idG5fZWRpdEluc3QmcXVvdDspLmFkZEV2ZW50TGlzdGVuZXIoJnF1b3Q7Y2xpY2smcXVvdDssICgpID0mZ3Q7IHsKICAgIGlzRWRpdGluZ0luc3QgPSB0cnVlOwogICAgcmVuZGVyVUkoKTsKICAgIGluc3RydWN0aW9uSW5wdXQuZm9jdXMoKTsKICB9KTsKICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgmcXVvdDt1c2VyX2J0blNhdmUmcXVvdDspLmFkZEV2ZW50TGlzdGVuZXIoJnF1b3Q7Y2xpY2smcXVvdDssICgpID0mZ3Q7IHsKICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKFNUT1JBR0VfS0VZX0FQSSwgYXBpS2V5SW5wdXQudmFsdWUudHJpbSgpKTsKICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKFNUT1JBR0VfS0VZX0lOU1QsIGluc3RydWN0aW9uSW5wdXQudmFsdWUpOwogICAgaXNFZGl0aW5nQXBpID0gZmFsc2U7CiAgICBpc0VkaXRpbmdJbnN0ID0gZmFsc2U7CiAgICByZW5kZXJVSSgpOwogICAgc2V0dGluZ1N0YXR1cy5pbm5lclRleHQgPSAmcXVvdDvoqK3lrprjgpLkv53lrZjjgZfjgb7jgZfjgZ8gLyBTYXZlZCBzdWNjZXNzZnVsbHkuJnF1b3Q7OwogICAgc2V0VGltZW91dCgoKSA9Jmd0OyB7IHNldHRpbmdTdGF0dXMuaW5uZXJUZXh0ID0gJnF1b3Q7JnF1b3Q7OyB9LCAyNTAwKTsKICB9KTsKICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgmcXVvdDt1c2VyX2J0bkNsZWFyJnF1b3Q7KS5hZGRFdmVudExpc3RlbmVyKCZxdW90O2NsaWNrJnF1b3Q7LCAoKSA9Jmd0OyB7CiAgICBsb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbShTVE9SQUdFX0tFWV9BUEkpOwogICAgbG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oU1RPUkFHRV9LRVlfSU5TVCk7CiAgICBpc0VkaXRpbmdBcGkgPSBmYWxzZTsKICAgIGlzRWRpdGluZ0luc3QgPSBmYWxzZTsKICAgIHJlbmRlclVJKCk7CiAgICBzZXR0aW5nU3RhdHVzLmlubmVyVGV4dCA9ICZxdW90O+ioreWumuOCkuOCr+ODquOCouOBl+OBvuOBl+OBnyAvIENsZWFyZWQgc3VjY2Vzc2Z1bGx5LiZxdW90OzsKICAgIHNldFRpbWVvdXQoKCkgPSZndDsgeyBzZXR0aW5nU3RhdHVzLmlubmVyVGV4dCA9ICZxdW90OyZxdW90OzsgfSwgMjUwMCk7CiAgfSk7CgogIC8vIC0tLSA1LiBBSeWRvOOBs+WHuuOBl+WHpueQhiAtLS0KICBhaUJ1dHRvbnMuZm9yRWFjaChidXR0b24gPSZndDsgewogICAgYnV0dG9uLmFkZEV2ZW50TGlzdGVuZXIoJnF1b3Q7Y2xpY2smcXVvdDssIGFzeW5jIChldmVudCkgPSZndDsgewogICAgICBjb25zdCBzdHJLZXkgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbShTVE9SQUdFX0tFWV9BUEkpOwogICAgICBjb25zdCBzdHJJbnN0cnVjdGlvbiA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKFNUT1JBR0VfS0VZX0lOU1QpIHx8ICZxdW90OyZxdW90OzsgCiAgICAgIC8vIOWkieaVsOWMluOBl+OBn+OCv+ODvOOCsuODg+ODiOODleOCo+ODvOODq+ODieWQjeOCkuWIqeeUqAogICAgICBjb25zdCBzdHJJbnB1dCA9IHFicG1zLmZvcm0uZ2V0KFRBUkdFVF9GSUVMRF9OQU1FKTsKICAgICAgY29uc3QgbW9kZWxOYW1lID0gZXZlbnQuY3VycmVudFRhcmdldC5pbm5lclRleHQudHJpbSgpOwoKICAgICAgaWYgKCFzdHJLZXkpIHsKICAgICAgICBzdGF0dXNFbGVtZW50LmlubmVyVGV4dCA9ICZxdW90O+OCqOODqeODvDogQVBJ44Kt44O844GM6Kit5a6a44GV44KM44Gm44GE44G+44Gb44KT44CCQ09ORklH44Oc44K\/44Oz44GL44KJ6Kit5a6a44KS5L+d5a2Y44GX44Gm44GP44Gg44GV44GE44CCIC8gRXJyb3I6IEFQSSBLZXkgaXMgbm90IHNldC4mcXVvdDs7CiAgICAgICAgcmVzdWx0RWxlbWVudC5pbm5lclRleHQgPSAmcXVvdDsmcXVvdDs7CiAgICAgICAgcmV0dXJuOwogICAgICB9CiAgICAgIGlmICghc3RySW5wdXQpIHsKICAgICAgICBzdGF0dXNFbGVtZW50LmlubmVyVGV4dCA9IGDjgqjjg6njg7w6IOWFpeWKm+WGheWuuSgke1RBUkdFVF9GSUVMRF9OQU1FfSnjgYznqbrjgafjgZnjgIIgLyBFcnJvcjogSW5wdXQgZmllbGQgaXMgZW1wdHkuYDsKICAgICAgICByZXN1bHRFbGVtZW50LmlubmVyVGV4dCA9ICZxdW90OyZxdW90OzsKICAgICAgICByZXR1cm47CiAgICAgIH0KCiAgICAgIGFpQnV0dG9ucy5mb3JFYWNoKGJ0biA9Jmd0OyBidG4uZGlzYWJsZWQgPSB0cnVlKTsKICAgICAgYnRuQ29uZmlnLmRpc2FibGVkID0gdHJ1ZTsKICAgICAgc3RhdHVzRWxlbWVudC5pbm5lclRleHQgPSAmcXVvdDtBSeOBq+aOpee2muS4rS4uLiAvIENvbm5lY3RpbmcgdG8gQUkuLi4mcXVvdDs7CiAgICAgIHJlc3VsdEVsZW1lbnQuaW5uZXJIVE1MID0gJiMzOTsmbHQ7c3BhbiBjbGFzcz0mcXVvdDt1c2VyX2N1cnNvciZxdW90OyZndDsmbHQ7L3NwYW4mZ3Q7JiMzOTs7CiAgICAgIGNvbnN0IGN1cnNvciA9IHJlc3VsdEVsZW1lbnQucXVlcnlTZWxlY3RvcigmcXVvdDsudXNlcl9jdXJzb3ImcXVvdDspOwoKICAgICAgdHJ5IHsKICAgICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGZldGNoKCZxdW90O2h0dHBzOi8vYXBpLm9wZW5haS5jb20vdjEvcmVzcG9uc2VzJnF1b3Q7LCB7CiAgICAgICAgICBtZXRob2Q6ICZxdW90O1BPU1QmcXVvdDssCiAgICAgICAgICBoZWFkZXJzOiB7CiAgICAgICAgICAgICZxdW90O0NvbnRlbnQtVHlwZSZxdW90OzogJnF1b3Q7YXBwbGljYXRpb24vanNvbiZxdW90OywKICAgICAgICAgICAgJnF1b3Q7QXV0aG9yaXphdGlvbiZxdW90OzogYEJlYXJlciAke3N0cktleX1gCiAgICAgICAgICB9LAogICAgICAgICAgYm9keTogSlNPTi5zdHJpbmdpZnkoewogICAgICAgICAgICBtb2RlbDogbW9kZWxOYW1lLAogICAgICAgICAgICBpbnN0cnVjdGlvbnM6IHN0ckluc3RydWN0aW9uLAogICAgICAgICAgICBpbnB1dDogc3RySW5wdXQsCiAgICAgICAgICAgIHN0cmVhbTogdHJ1ZQogICAgICAgICAgfSkKICAgICAgICB9KTsKCiAgICAgICAgaWYgKCFyZXNwb25zZS5vaykgewogICAgICAgICAgbGV0IG1zZyA9IGBBUEkgRXJyb3I6ICR7cmVzcG9uc2Uuc3RhdHVzfWA7CiAgICAgICAgICB0cnkgewogICAgICAgICAgICBjb25zdCBlcnIgPSBhd2FpdCByZXNwb25zZS5qc29uKCk7CiAgICAgICAgICAgIG1zZyArPSBgXG4ke0pTT04uc3RyaW5naWZ5KGVyciwgbnVsbCwgMil9YDsKICAgICAgICAgIH0gY2F0Y2ggKF8pIHt9CiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IobXNnKTsKICAgICAgICB9CiAgICAgICAgc3RhdHVzRWxlbWVudC5pbm5lclRleHQgPSAmcXVvdDtBSeOBjOaWh+eroOOCkueUn+aIkOS4rS4uLiAvIEFJIGlzIGdlbmVyYXRpbmcgdGV4dC4uLiZxdW90OzsKICAgICAgICBjb25zdCByZWFkZXIgPSByZXNwb25zZS5ib2R5LmdldFJlYWRlcigpOwogICAgICAgIGNvbnN0IGRlY29kZXIgPSBuZXcgVGV4dERlY29kZXIoKTsKICAgICAgICBsZXQgYnVmZmVyID0gJnF1b3Q7JnF1b3Q7OwogICAgICAgIGxldCBjdXJyZW50RXZlbnQgPSAmcXVvdDsmcXVvdDs7CiAgICAgICAgY29uc3QgZmx1c2hMaW5lcyA9IChjaHVua1RleHQpID0mZ3Q7IHsKICAgICAgICAgIGJ1ZmZlciArPSBjaHVua1RleHQ7CiAgICAgICAgICBjb25zdCBsaW5lcyA9IGJ1ZmZlci5zcGxpdCgvXHI\/XG4vKTsKICAgICAgICAgIGJ1ZmZlciA9IGxpbmVzLnBvcCgpIHx8ICZxdW90OyZxdW90OzsKICAgICAgICAgIGZvciAoY29uc3QgbGluZSBvZiBsaW5lcykgewogICAgICAgICAgICBpZiAoIWxpbmUudHJpbSgpKSBjb250aW51ZTsKICAgICAgICAgICAgaWYgKGxpbmUuc3RhcnRzV2l0aCgmcXVvdDtldmVudDomcXVvdDspKSB7CiAgICAgICAgICAgICAgY3VycmVudEV2ZW50ID0gbGluZS5yZXBsYWNlKC9eZXZlbnQ6XHMqLywgJnF1b3Q7JnF1b3Q7KS50cmltKCk7CiAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYgKGxpbmUuc3RhcnRzV2l0aCgmcXVvdDtkYXRhOiZxdW90OykpIHsKICAgICAgICAgICAgICBjb25zdCBkYXRhUmF3ID0gbGluZS5yZXBsYWNlKC9eZGF0YTpccyovLCAmcXVvdDsmcXVvdDspLnRyaW0oKTsKICAgICAgICAgICAgICBpZiAoZGF0YVJhdyA9PT0gJnF1b3Q7W0RPTkVdJnF1b3Q7KSByZXR1cm4gJnF1b3Q7RE9ORSZxdW90OzsKICAgICAgICAgICAgICAKICAgICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgY29uc3QgZGF0YSA9IEpTT04ucGFyc2UoZGF0YVJhdyk7CiAgICAgICAgICAgICAgICBpZiAoY3VycmVudEV2ZW50ID09PSAmcXVvdDtyZXNwb25zZS5vdXRwdXRfdGV4dC5kZWx0YSZxdW90OyAmJiBkYXRhLmRlbHRhKSB7CiAgICAgICAgICAgICAgICAgIGN1cnNvci5pbnNlcnRBZGphY2VudFRleHQoJnF1b3Q7YmVmb3JlYmVnaW4mcXVvdDssIGRhdGEuZGVsdGEpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgaWYgKGN1cnJlbnRFdmVudCA9PT0gJnF1b3Q7cmVzcG9uc2UuY29tcGxldGVkJnF1b3Q7KSB7CiAgICAgICAgICAgICAgICAgIHJldHVybiAmcXVvdDtET05FJnF1b3Q7OwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgaWYgKGN1cnJlbnRFdmVudCA9PT0gJnF1b3Q7cmVzcG9uc2UuZXJyb3ImcXVvdDspIHsKICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGRhdGE\/LmVycm9yPy5tZXNzYWdlIHx8ICZxdW90O1Vua25vd24gc3RyZWFtaW5nIGVycm9yJnF1b3Q7KTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICB9IGNhdGNoIChlKSB7CiAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKCZxdW90O1NTRSBKU09OIHBhcnNlIGVycm9yOiZxdW90OywgZGF0YVJhdywgZSk7CiAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICB9CiAgICAgICAgfTsKICAgICAgICB3aGlsZSAodHJ1ZSkgewogICAgICAgICAgY29uc3QgeyBkb25lLCB2YWx1ZSB9ID0gYXdhaXQgcmVhZGVyLnJlYWQoKTsKICAgICAgICAgIGlmIChkb25lKSBicmVhazsKICAgICAgICAgIGNvbnN0IHRleHQgPSBkZWNvZGVyLmRlY29kZSh2YWx1ZSwgeyBzdHJlYW06IHRydWUgfSk7CiAgICAgICAgICBjb25zdCBzdGF0dXMgPSBmbHVzaExpbmVzKHRleHQpOwogICAgICAgICAgaWYgKHN0YXR1cyA9PT0gJnF1b3Q7RE9ORSZxdW90OykgYnJlYWs7CiAgICAgICAgfQogICAgICAgIHN0YXR1c0VsZW1lbnQuaW5uZXJUZXh0ID0gJnF1b3Q755Sf5oiQ5a6M5LqGIC8gR2VuZXJhdGlvbiBDb21wbGV0ZWQmcXVvdDs7CiAgICAgIH0gY2F0Y2ggKGVycm9yKSB7CiAgICAgICAgY29uc29sZS5lcnJvcigmcXVvdDtSZXF1ZXN0IGZhaWxlZDomcXVvdDssIGVycm9yKTsKICAgICAgICBzdGF0dXNFbGVtZW50LmlubmVyVGV4dCA9ICZxdW90O+OCqOODqeODvOOBjOeZuueUn+OBl+OBvuOBl+OBn+OAgiAvIEFuIGVycm9yIG9jY3VycmVkLiZxdW90OzsKICAgICAgICByZXN1bHRFbGVtZW50LmlubmVyVGV4dCA9IFN0cmluZyhlcnJvci5tZXNzYWdlIHx8IGVycm9yKTsKICAgICAgfSBmaW5hbGx5IHsKICAgICAgICBjb25zdCBjID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcigmcXVvdDsjdXNlcl9yZXN1bHQgLnVzZXJfY3Vyc29yJnF1b3Q7KTsKICAgICAgICBjPy5yZW1vdmUoKTsKICAgICAgICBhaUJ1dHRvbnMuZm9yRWFjaChidG4gPSZndDsgYnRuLmRpc2FibGVkID0gZmFsc2UpOwogICAgICAgIGJ0bkNvbmZpZy5kaXNhYmxlZCA9IGZhbHNlOwogICAgICB9CiAgICB9KTsKICB9KTsKfSk7CiZsdDsvc2NyaXB0Jmd0OzwvY29kZT48L3ByZT48L2Rpdj53JDQ5MjQ4MWQ3LTQ1ZWUtNDY2ZS05ZjA1LTUwYjNhNjZlZWEwM3ckYjBlYTgxMzItMmMzZS00OGU3LTk4OTItYTVkYzQ3ZDNkODYzd5ICPGZpZ3VyZSBjbGFzcz0id3AtYmxvY2staW1hZ2Ugc2l6ZS1sYXJnZSBoYXMtbGlnaHRib3giPjxpbWcgc3JjPSJodHRwczovL3N1cHBvcnQucXVlc3RldHJhLmNvbS93cC1jb250ZW50L3VwbG9hZHMvMjAyNi8wNC9kZWNvLVJlcXVlc3QtdG8tT3BlbkFJLUFQSS11c2luZy1sb2NhbFN0b3JhZ2UtZW4tMTAyNHg1MzYucG5nIiBhbHQ9InFHdWlkZTogUmVxdWVzdCB0byBPcGVuQUkgQVBJIHVzaW5nIGxvY2FsU3RvcmFnZSIgY2xhc3M9IndwLWltYWdlLTE4MjA3MyIvPjwvZmlndXJlPnckYTZkYWZkMDEtOTk5Zi00MDg5LWIzNDUtZGM2MWUzNjlmMmZkdyQxZGMwMTA0YS0zNzVmLTRkNTUtOTM2OS0wOGZlNWI2MWUyODd34wE8ZmlndXJlIGNsYXNzPSJ3cC1ibG9jay1pbWFnZSBhbGlnbmNlbnRlciBzaXplLWxhcmdlIGlzLXN0eWxlLWRlZmF1bHQgaGFzLWxpZ2h0Ym94Ij48aW1nIHNyYz0iaHR0cHM6Ly9zdXBwb3J0LnF1ZXN0ZXRyYS5jb20vd3AtY29udGVudC91cGxvYWRzLzIwMjYvMDQvYWktZGVjby1sb2NhbFN0b3JhZ2UtMTAyNHg1NzYuZ2lmIiBhbHQ9IiIgY2xhc3M9IndwLWltYWdlLTE4MjA3OSIvPjwvZmlndXJlPnckOTBiNGNiMDYtYjEwYi00OTFjLWE4MTgtZmNhMjVmMjY0OWM4d9EBPGZpZ3VyZSBjbGFzcz0id3AtYmxvY2staW1hZ2UgYWxpZ25jZW50ZXIgc2l6ZS1sYXJnZSBoYXMtbGlnaHRib3giPjxpbWcgc3JjPSJodHRwczovL3N1cHBvcnQucXVlc3RldHJhLmNvbS93cC1jb250ZW50L3VwbG9hZHMvMjAyNi8wNC9sb2NhbFN0b3JhZ2Utb3V0cHV0LTEwMjR4NTE1LnBuZyIgYWx0PSIiIGNsYXNzPSJ3cC1pbWFnZS0xODIwODIiLz48L2ZpZ3VyZT53JDE0OGRhZDMxLTJkZmQtNDJlNi1iNzA1LTg0OGM0NWNhYmIyYXfRATxmaWd1cmUgY2xhc3M9IndwLWJsb2NrLWltYWdlIGFsaWduY2VudGVyIHNpemUtbGFyZ2UgaGFzLWxpZ2h0Ym94Ij48aW1nIHNyYz0iaHR0cHM6Ly9zdXBwb3J0LnF1ZXN0ZXRyYS5jb20vd3AtY29udGVudC91cGxvYWRzLzIwMjYvMDQvbG9jYWxTdG9yYWdlLWNvbmZpZy0xMDI0eDU5MS5wbmciIGFsdD0iIiBjbGFzcz0id3AtaW1hZ2UtMTgyMDg2Ii8+PC9maWd1cmU+dyQyZjAxYzM2ZS05YWNlLTQwNWEtYTAzZi1kMjFiODg5YjljZDV32gE8ZmlndXJlIGNsYXNzPSJ3cC1ibG9jay1pbWFnZSBhbGlnbmNlbnRlciBzaXplLWxhcmdlIGhhcy1saWdodGJveCI+PGltZyBzcmM9Imh0dHBzOi8vc3VwcG9ydC5xdWVzdGV0cmEuY29tL3dwLWNvbnRlbnQvdXBsb2Fkcy8yMDI2LzA0L2xvY2FsU3RvcmFnZS1jb25maWctZWRpdC1tb2RlLTU0OHg2MzAucG5nIiBhbHQ9IiIgY2xhc3M9IndwLWltYWdlLTE4MjA4OCIvPjwvZmlndXJlPnckNjQ0MWM0N2EtYzUzOC00NjZhLWFiOTItYjE1NDYzZWJiZWJkdyQyZGZiMmEyYy1iZTdlLTQ1OGQtOTVmZC1hYzYwYTU4OGIzOGV36gE8ZmlndXJlIGNsYXNzPSJ3cC1ibG9jay1lbWJlZCBpcy10eXBlLXdwLWVtYmVkIGlzLXByb3ZpZGVyLXF1ZXN0ZXRyYS1zdXBwb3J0IHdwLWJsb2NrLWVtYmVkLXF1ZXN0ZXRyYS1zdXBwb3J0Ij48ZGl2IGNsYXNzPSJ3cC1ibG9jay1lbWJlZF9fd3JhcHBlciI+Cmh0dHBzOi8vc3VwcG9ydC5xdWVzdGV0cmEuY29tL2RlY28vcWd1aWRlLXJlcXVlc3QtdG8tb3BlbmFpLWFwaS0yMDI1Lwo8L2Rpdj48L2ZpZ3VyZT53JDQ3YzcyYzlhLWRjOGItNGVjMC04M2FmLTEwMGJiNjAwYzBjNnf1ATxmaWd1cmUgY2xhc3M9IndwLWJsb2NrLWVtYmVkIGlzLXR5cGUtd3AtZW1iZWQgaXMtcHJvdmlkZXItcXVlc3RldHJhLXN1cHBvcnQgd3AtYmxvY2stZW1iZWQtcXVlc3RldHJhLXN1cHBvcnQiPjxkaXYgY2xhc3M9IndwLWJsb2NrLWVtYmVkX193cmFwcGVyIj4KaHR0cHM6Ly9zdXBwb3J0LnF1ZXN0ZXRyYS5jb20vZGVjby9xZ3VpZGUtcmVxdWVzdC10by1vcGVuYWktYXBpLXdpdGgtaW1hZ2UtMjAyNS8KPC9kaXY+PC9maWd1cmU++hIAfQJ3BmNsb3NlZHcEb3Blbnl3AHcIc3RhbmRhcmR3AHcAdwB3AHcAdwdkZWZhdWx0dwB3B2RlZmF1bHR3B2RlZmF1bHR3B2RlZmF1bHR3AHcAdwB3AHcAdwB3AHcAdwB3AHcAdwB3AHcAdwB3AHcHZGVmYXVsdHcHZGVmYXVsdHYDB2Rlc2t0b3B2DBBiYWNrZ3JvdW5kLWNvbG9ydwAQYmFja2dyb3VuZC1pbWFnZXcAEWJhY2tncm91bmQtcmVwZWF0dwZyZXBlYXQTYmFja2dyb3VuZC1wb3NpdGlvbncNY2VudGVyIGNlbnRlcg9iYWNrZ3JvdW5kLXNpemV3BGF1dG8VYmFja2dyb3VuZC1hdHRhY2htZW50dwZzY3JvbGwPYmFja2dyb3VuZC10eXBldwAQYmFja2dyb3VuZC1tZWRpYXcADG92ZXJsYXktdHlwZXcADW92ZXJsYXktY29sb3J3AA9vdmVybGF5LW9wYWNpdHl3ABBvdmVybGF5LWdyYWRpZW50dwAGdGFibGV0dgwQYmFja2dyb3VuZC1jb2xvcncAEGJhY2tncm91bmQtaW1hZ2V3ABFiYWNrZ3JvdW5kLXJlcGVhdHcGcmVwZWF0E2JhY2tncm91bmQtcG9zaXRpb253DWNlbnRlciBjZW50ZXIPYmFja2dyb3VuZC1zaXpldwRhdXRvFWJhY2tncm91bmQtYXR0YWNobWVudHcGc2Nyb2xsD2JhY2tncm91bmQtdHlwZXcAEGJhY2tncm91bmQtbWVkaWF3AAxvdmVybGF5LXR5cGV3AA1vdmVybGF5LWNvbG9ydwAPb3ZlcmxheS1vcGFjaXR5dwAQb3ZlcmxheS1ncmFkaWVudHcABm1vYmlsZXYMEGJhY2tncm91bmQtY29sb3J3ABBiYWNrZ3JvdW5kLWltYWdldwARYmFja2dyb3VuZC1yZXBlYXR3BnJlcGVhdBNiYWNrZ3JvdW5kLXBvc2l0aW9udw1jZW50ZXIgY2VudGVyD2JhY2tncm91bmQtc2l6ZXcEYXV0bxViYWNrZ3JvdW5kLWF0dGFjaG1lbnR3BnNjcm9sbA9iYWNrZ3JvdW5kLXR5cGV3ABBiYWNrZ3JvdW5kLW1lZGlhdwAMb3ZlcmxheS10eXBldwANb3ZlcmxheS1jb2xvcncAD292ZXJsYXktb3BhY2l0eXcAEG92ZXJsYXktZ3JhZGllbnR3AHYDB2Rlc2t0b3B2DBBiYWNrZ3JvdW5kLWNvbG9ydxl2YXIoLS1hc3QtZ2xvYmFsLWNvbG9yLTUpEGJhY2tncm91bmQtaW1hZ2V3ABFiYWNrZ3JvdW5kLXJlcGVhdHcGcmVwZWF0E2JhY2tncm91bmQtcG9zaXRpb253DWNlbnRlciBjZW50ZXIPYmFja2dyb3VuZC1zaXpldwRhdXRvFWJhY2tncm91bmQtYXR0YWNobWVudHcGc2Nyb2xsD2JhY2tncm91bmQtdHlwZXcAEGJhY2tncm91bmQtbWVkaWF3AAxvdmVybGF5LXR5cGV3AA1vdmVybGF5LWNvbG9ydwAPb3ZlcmxheS1vcGFjaXR5dwAQb3ZlcmxheS1ncmFkaWVudHcABnRhYmxldHYMEGJhY2tncm91bmQtY29sb3J3GXZhcigtLWFzdC1nbG9iYWwtY29sb3ItNSkQYmFja2dyb3VuZC1pbWFnZXcAEWJhY2tncm91bmQtcmVwZWF0dwZyZXBlYXQTYmFja2dyb3VuZC1wb3NpdGlvbncNY2VudGVyIGNlbnRlcg9iYWNrZ3JvdW5kLXNpemV3BGF1dG8VYmFja2dyb3VuZC1hdHRhY2htZW50dwZzY3JvbGwPYmFja2dyb3VuZC10eXBldwAQYmFja2dyb3VuZC1tZWRpYXcADG92ZXJsYXktdHlwZXcADW92ZXJsYXktY29sb3J3AA9vdmVybGF5LW9wYWNpdHl3ABBvdmVybGF5LWdyYWRpZW50dwAGbW9iaWxldgwQYmFja2dyb3VuZC1jb2xvcncZdmFyKC0tYXN0LWdsb2JhbC1jb2xvci01KRBiYWNrZ3JvdW5kLWltYWdldwARYmFja2dyb3VuZC1yZXBlYXR3BnJlcGVhdBNiYWNrZ3JvdW5kLXBvc2l0aW9udw1jZW50ZXIgY2VudGVyD2JhY2tncm91bmQtc2l6ZXcEYXV0bxViYWNrZ3JvdW5kLWF0dGFjaG1lbnR3BnNjcm9sbA9iYWNrZ3JvdW5kLXR5cGV3ABBiYWNrZ3JvdW5kLW1lZGlhdwAMb3ZlcmxheS10eXBldwANb3ZlcmxheS1jb2xvcncAD292ZXJsYXktb3BhY2l0eXcAEG92ZXJsYXktZ3JhZGllbnR3AHcAdwB5eXcAeX0AeXl3AHcAeHYCGGltYWdlX2dlbmVyYXRvcl9zZXR0aW5nc3YECHRlbXBsYXRldwdoaWdod2F5EGRlZmF1bHRfaW1hZ2VfaWR9AARmb250dwAHZW5hYmxlZHkHdmVyc2lvbn0CeXUAeHcAdwB5eXl5eXl1AHl3AH2QBn0AdwRlYXNleXcAdwN0b3B5fQB4dw5jb3JlL3BhcmFncmFwaHl3AHcAeXh5eXl5eXUAeXcAfZAGfQB3BGVhc2V5dwB3A3RvcHl9AHh3AHcAeXl5eXl5dQB5dwB9kAZ9AHcEZWFzZXl3AHcDdG9weX0AeHcAdwB5eXl5eXl5dQB5dwB9kAZ9AHcEZWFzZXl3AHcDdG9weX0AeHcAdwB5eXl5eXl5dQB5dwB9kAZ9AHcEZWFzZXl3AHcDdG9weX0AeHcAdwB5eXl5eXl5dQB5dwB9kAZ9AHcEZWFzZXl3AHcDdG9weX0AeHl5eXl5dQB5dwB9kAZ9AHcEZWFzZXl3AHcDdG9weX0AeHl5eXl5dQB5dwB9kAZ9AHcEZWFzZXl3AHcDdG9weX0AeHl5eXl5dQB5dwB9kAZ9AHcEZWFzZXl3AHcDdG9weX0AeHl5eXl5dQB5dwB9kAZ9AHcEZWFzZXl3AHcDdG9weX0AeHl5eXl5dQB5dwB9kAZ9AHcEZWFzZXl3AHcDdG9weX0AeHl5eXl5dQB5dwB9kAZ9AHcEZWFzZXl3AHcDdG9weX0AeHcMY29yZS9oZWFkaW5nfQN2AQdzcGFjaW5ndgEGbWFyZ2ludgEDdG9wdxV2YXI6cHJlc2V0fHNwYWNpbmd8NjB3AHcAeXl5eXl5eXUAeXcAfZAGfQB3BGVhc2V5dwB3A3RvcHl9AHh5eXl5eXUAeXcAfZAGfQB3BGVhc2V5dwB3A3RvcHl9AHc0cWd1aWRlLXJlcXVlc3QtdG8tb3BlbmFpLWFwaS11c2luZy1sb2NhbHN0b3JhZ2UtMjAyNnh3AHcAeXl5eXl5eXUAeXcAfZAGfQB3BGVhc2V5dwB3A3RvcHl9AHcMY29yZS9oZWFkaW5nfQR2AgVjb2xvcnYBCmJhY2tncm91bmR3ByNmZmM2OWIHc3BhY2luZ3YCB3BhZGRpbmd2BAN0b3B3ATAFcmlnaHR3FXZhcjpwcmVzZXR8c3BhY2luZ3wyMAZib3R0b213ATAEbGVmdHcVdmFyOnByZXNldHxzcGFjaW5nfDIwBm1hcmdpbnYEBXJpZ2h0dwEwBmJvdHRvbXcBMARsZWZ0dwEwA3RvcHcVdmFyOnByZXNldHxzcGFjaW5nfDMweXcFc21hbGx2AwdzcGFjaW5ndgIHcGFkZGluZ3YEA3RvcHcBMAVyaWdodHcVdmFyOnByZXNldHxzcGFjaW5nfDMwBmJvdHRvbXcBMARsZWZ0dxV2YXI6cHJlc2V0fHNwYWNpbmd8MzAGbWFyZ2ludgQDdG9wdwEwBXJpZ2h0dwEwBmJvdHRvbXcBMARsZWZ0dwEwBWNvbG9ydgEKYmFja2dyb3VuZHcHI2ZmYzY5Ygp0eXBvZ3JhcGh5dgEJdGV4dEFsaWdudwVyaWdodHcOaGFzLWJhY2tncm91bmR3DmNvcmUvcGFyYWdyYXBoeXYCBWNvbG9ydgEKYmFja2dyb3VuZHcHI2ZmZTVjZQdzcGFjaW5ndgIHcGFkZGluZ3YEA3RvcHcVdmFyOnByZXNldHxzcGFjaW5nfDIwBXJpZ2h0dxV2YXI6cHJlc2V0fHNwYWNpbmd8MzAGYm90dG9tdxV2YXI6cHJlc2V0fHNwYWNpbmd8MjAEbGVmdHcVdmFyOnByZXNldHxzcGFjaW5nfDQwBm1hcmdpbnYEA3RvcHcBMAVyaWdodHcBMAZib3R0b213FXZhcjpwcmVzZXR8c3BhY2luZ3w2MARsZWZ0dwEweHeTATxoMyBjbGFzcz0id3AtYmxvY2staGVhZGluZyIgc3R5bGU9Im1hcmdpbi10b3A6dmFyKC0td3AtLXByZXNldC0tc3BhY2luZy0tNjApIj48c3BhbiBzdHlsZT0idGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7Ij5JbnB1dCAvIE91dHB1dDwvc3Bhbj48L2gzPncMY29yZS9oZWFkaW5nfQN2AQdzcGFjaW5ndgEGbWFyZ2ludgEDdG9wdxV2YXI6cHJlc2V0fHNwYWNpbmd8NjB3CWNvcmUvbGlzdHl3AHh3DmNvcmUvbGlzdC1pdGVteXl5eXl1AHl3AH2QBn0AdwRlYXNleXcAdwN0b3B5fQB4dw5jb3JlL2xpc3QtaXRlbXl5eXl5dQB5dwB9kAZ9AHcEZWFzZXl3AHcDdG9weX0AeHcOY29yZS9saXN0LWl0ZW15eXl5eXUAeXcAfZAGfQB3BGVhc2V5dwB3A3RvcHl9AHh3DmNvcmUvbGlzdC1pdGVteXl5eXl1AHl3AH2QBn0AdwRlYXNleXcAdwN0b3B5fQB4dw5jb3JlL2xpc3QtaXRlbXl5eXl5dQB5dwB9kAZ9AHcEZWFzZXl3AHcDdG9weX0Adw5jb3JlL3BhcmFncmFwaHl3kQE8aDMgY2xhc3M9IndwLWJsb2NrLWhlYWRpbmciIHN0eWxlPSJtYXJnaW4tdG9wOnZhcigtLXdwLS1wcmVzZXQtLXNwYWNpbmctLTYwKSI+PHNwYW4gc3R5bGU9InRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lOyI+Q29kZSBFeGFtcGxlPC9zcGFuPjwvaDM+dwxjb3JlL2hlYWRpbmd9A3YBB3NwYWNpbmd2AQZtYXJnaW52AQN0b3B3FXZhcjpwcmVzZXR8c3BhY2luZ3w2MHcvPGRpdiBjbGFzcz0id3AtYmxvY2stY29ibG9ja3MtYWNjb3JkaW9uIj48L2Rpdj53EmNvYmxvY2tzL2FjY29yZGlvbncBMXl3AHcAeXl4d7kCPGRpdiBjbGFzcz0id3AtYmxvY2stY29ibG9ja3MtYWNjb3JkaW9uLWl0ZW0iPjxkZXRhaWxzIG9wZW4+PHN1bW1hcnkgY2xhc3M9IndwLWJsb2NrLWNvYmxvY2tzLWFjY29yZGlvbi1pdGVtX190aXRsZSBoYXMtYmFja2dyb3VuZCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6I2ZmZTVjZSI+SFRNTC9KYXZhU2NyaXB0IChjbGljayB0byBjbG9zZSk8L3N1bW1hcnk+PGRpdiBjbGFzcz0id3AtYmxvY2stY29ibG9ja3MtYWNjb3JkaW9uLWl0ZW1fX2NvbnRlbnQiIHN0eWxlPSJib3JkZXItY29sb3I6I2ZmZTVjZSI+PC9kaXY+PC9kZXRhaWxzPjwvZGl2PncXY29ibG9ja3MvYWNjb3JkaW9uLWl0ZW13IEhUTUwvSmF2YVNjcmlwdCAoY2xpY2sgdG8gY2xvc2UpeHcHI2ZmZTVjZXcHI2ZmZTVjZXcAdwB5eXl5eXl5dQB5dwB9kAZ9AHcEZWFzZXl3AHcDdG9weX0AeHcTbG9vcy1oY2IvY29kZS1ibG9ja3eCbjxzdHlsZT4KLyogQUnlkbzjgbPlh7rjgZfjg5zjgr\/jg7MgKi8KLnVzZXJfYWlCdG4gewpib3JkZXI6IDFweCBzb2xpZCAjY2NjOwpwYWRkaW5nOiA2cHggMTJweDsKYm9yZGVyLXJhZGl1czogMjBweDsKY3Vyc29yOiBwb2ludGVyOwpmb250LXNpemU6IDEzcHg7CnRyYW5zaXRpb246IGFsbCAwLjJzIGVhc2U7CmNvbG9yOiAjMzMzOwptYXJnaW4tcmlnaHQ6IDhweDsKbWFyZ2luLWJvdHRvbTogMTJweDsKYmFja2dyb3VuZC1jb2xvcjogI2ZmZjsKZm9udC1mYW1pbHk6IHN5c3RlbS11aSwgLWFwcGxlLXN5c3RlbSwgc2Fucy1zZXJpZjsKfQoudXNlcl9haUJ0bjpob3ZlciB7IGJhY2tncm91bmQtY29sb3I6ICNmMGYwZjA7IGJvcmRlci1jb2xvcjogI2JiYjsgfQoudXNlcl9haUJ0bjpkaXNhYmxlZCB7IG9wYWNpdHk6IDAuNTsgY3Vyc29yOiBub3QtYWxsb3dlZDsgYmFja2dyb3VuZC1jb2xvcjogI2VlZTsgfQoKLyogQ09ORklH44Oc44K\/44OzICovCiN1c2VyX2J0bkNvbmZpZyB7CmJvcmRlcjogMXB4IHNvbGlkICM0YTU1Njg7CnBhZGRpbmc6IDZweCAxNnB4Owpib3JkZXItcmFkaXVzOiA0cHg7CmN1cnNvcjogcG9pbnRlcjsKZm9udC1zaXplOiAxM3B4Owpmb250LXdlaWdodDogYm9sZDsKdHJhbnNpdGlvbjogYWxsIDAuMnMgZWFzZTsKY29sb3I6ICNmZmY7CmJhY2tncm91bmQtY29sb3I6ICM0YTU1Njg7Cm1hcmdpbi1yaWdodDogMTZweDsKbWFyZ2luLWJvdHRvbTogMTJweDsKZm9udC1mYW1pbHk6IHN5c3RlbS11aSwgLWFwcGxlLXN5c3RlbSwgc2Fucy1zZXJpZjsKfQojdXNlcl9idG5Db25maWc6aG92ZXIgeyBiYWNrZ3JvdW5kLWNvbG9yOiAjMmQzNzQ4OyBib3JkZXItY29sb3I6ICMxYTIwMmM7IH0KI3VzZXJfYnRuQ29uZmlnLnVzZXJfYWN0aXZlIHsgYmFja2dyb3VuZC1jb2xvcjogIzJiNmNiMDsgYm9yZGVyLWNvbG9yOiAjMmM1MjgyOyBib3gtc2hhZG93OiBpbnNldCAwIDJweCA0cHggcmdiYSgwLDAsMCwwLjIpOyB9CgovKiAtLS0g44Gd44Gu5LuW44Gu6Kit5a6a44Ko44Oq44Ki6KaB57SgIC0tLSAqLwoudXNlcl9sYmwgewpkaXNwbGF5OiBibG9jazsKbWFyZ2luOiAxMnB4IDAgNHB4IDA7CmZvbnQtd2VpZ2h0OiBib2xkOwpmb250LXNpemU6IDEzcHg7CmZvbnQtZmFtaWx5OiBzeXN0ZW0tdWksIC1hcHBsZS1zeXN0ZW0sIHNhbnMtc2VyaWY7Cn0KLnVzZXJfZGlzcGxheV92YWwgewpiYWNrZ3JvdW5kOiAjZTllOWU5OwpwYWRkaW5nOiA0cHggOHB4Owpib3JkZXItcmFkaXVzOiA0cHg7CmZvbnQtZmFtaWx5OiBNZW5sbywgTW9uYWNvLCBDb25zb2xhcywgbW9ub3NwYWNlOwpjb2xvcjogIzMzMzsKZm9udC1zaXplOiAxM3B4Owp9Ci51c2VyX2Rpc3BsYXlfaW5zdCB7CmJhY2tncm91bmQ6ICNlOWU5ZTk7CnBhZGRpbmc6IDhweDsKYm9yZGVyLXJhZGl1czogNHB4Owp3aGl0ZS1zcGFjZTogcHJlLXdyYXA7CmNvbG9yOiAjMzMzOwptaW4taGVpZ2h0OiAxLjVlbTsKbWFyZ2luLWJvdHRvbTogNHB4Owpmb250LXNpemU6IDEzcHg7CmZvbnQtZmFtaWx5OiBzeXN0ZW0tdWksIC1hcHBsZS1zeXN0ZW0sIHNhbnMtc2VyaWY7Cn0KLnVzZXJfYnRuRWRpdCB7CnBhZGRpbmc6IDJweCA4cHg7CmZvbnQtc2l6ZTogMTFweDsKY3Vyc29yOiBwb2ludGVyOwpib3JkZXI6IDFweCBzb2xpZCAjYmJiOwpiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmOwpib3JkZXItcmFkaXVzOiA0cHg7Cm1hcmdpbi1sZWZ0OiA4cHg7CnZlcnRpY2FsLWFsaWduOiBtaWRkbGU7Cn0KLnVzZXJfYnRuRWRpdDpob3ZlciB7IGJhY2tncm91bmQtY29sb3I6ICNlZWU7IH0KI3VzZXJfYXBpS2V5LCAjdXNlcl9pbnN0cnVjdGlvbiB7CndpZHRoOiAxMDAlOwpib3gtc2l6aW5nOiBib3JkZXItYm94OwpwYWRkaW5nOiA2cHg7CmJvcmRlcjogMXB4IHNvbGlkICNjY2M7CmJvcmRlci1yYWRpdXM6IDRweDsKZm9udC1mYW1pbHk6IGluaGVyaXQ7CmZvbnQtc2l6ZTogMTNweDsKfQojdXNlcl9pbnN0cnVjdGlvbiB7IHJlc2l6ZTogdmVydGljYWw7IG1pbi1oZWlnaHQ6IDRlbTsgfQoudXNlcl9hY3Rpb25CdG4gewpwYWRkaW5nOiA0cHggMTJweDsKYm9yZGVyOiAxcHggc29saWQgI2JiYjsKYmFja2dyb3VuZC1jb2xvcjogI2ZmZjsKYm9yZGVyLXJhZGl1czogNHB4OwpjdXJzb3I6IHBvaW50ZXI7CmZvbnQtc2l6ZTogMTNweDsKfQoudXNlcl9hY3Rpb25CdG46aG92ZXIgeyBiYWNrZ3JvdW5kLWNvbG9yOiAjZWVlOyB9CiN1c2VyX3Jlc3VsdCB7CmJhY2tncm91bmQtY29sb3I6ICNmOWY5Zjk7CmJvcmRlcjogMXB4IHNvbGlkICNkZGQ7CmJvcmRlci1yYWRpdXM6IDRweDsKcGFkZGluZzogMTJweDsKbWluLWhlaWdodDogOGVtOwp3aGl0ZS1zcGFjZTogcHJlLXdyYXA7CndvcmQtYnJlYWs6IGJyZWFrLXdvcmQ7CmZvbnQtZmFtaWx5OiBNZW5sbywgTW9uYWNvLCBDb25zb2xhcywgIkNvdXJpZXIgTmV3IiwgbW9ub3NwYWNlOwpmb250LXNpemU6IDE0cHg7CmxpbmUtaGVpZ2h0OiAxLjY7CmNvbG9yOiAjMjIyOwptYXJnaW4tdG9wOiAxNnB4Owp9CiN1c2VyX3N0YXR1cyB7CmZvbnQ6IDEycHgvMS40IHN5c3RlbS11aSwgc2Fucy1zZXJpZjsKb3BhY2l0eTogMC43NTsKbWFyZ2luLXRvcDogOHB4OwptaW4taGVpZ2h0OiAxLjRlbTsKfQoKQGtleWZyYW1lcyBibGluayB7IDUwJSB7IG9wYWNpdHk6IDA7IH0gfQoudXNlcl9jdXJzb3IgewpkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CndpZHRoOiA4cHg7CmhlaWdodDogMWVtOwpiYWNrZ3JvdW5kLWNvbG9yOiAjMzMzOwptYXJnaW4tbGVmdDogMnB4OwphbmltYXRpb246IGJsaW5rIDFzIHN0ZXAtZW5kIGluZmluaXRlOwp2ZXJ0aWNhbC1hbGlnbjogdGV4dC1ib3R0b207Cn0KPC9zdHlsZT4KCjxidXR0b24gdHlwZT0iYnV0dG9uIiBpZD0idXNlcl9idG5Db25maWciPkNPTkZJRzwvYnV0dG9uPgo8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9InVzZXJfYWlCdG4iPmdwdC01LjQ8L2J1dHRvbj4KPGJ1dHRvbiB0eXBlPSJidXR0b24iIGNsYXNzPSJ1c2VyX2FpQnRuIj5ncHQtNS40LW1pbmk8L2J1dHRvbj4KPGJ1dHRvbiB0eXBlPSJidXR0b24iIGNsYXNzPSJ1c2VyX2FpQnRuIj5ncHQtNS40LW5hbm88L2J1dHRvbj4KPGJ1dHRvbiB0eXBlPSJidXR0b24iIGNsYXNzPSJ1c2VyX2FpQnRuIj5ncHQtNS1uYW5vPC9idXR0b24+CjxidXR0b24gdHlwZT0iYnV0dG9uIiBjbGFzcz0idXNlcl9haUJ0biI+Z3B0LTUtbWluaTwvYnV0dG9uPgo8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9InVzZXJfYWlCdG4iPmdwdC01PC9idXR0b24+CjxidXR0b24gdHlwZT0iYnV0dG9uIiBjbGFzcz0idXNlcl9haUJ0biI+Z3B0LTUuMy1jb2RleDwvYnV0dG9uPgo8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9InVzZXJfYWlCdG4iPmdwdC01LWNvZGV4PC9idXR0b24+CjxzcGFuIGlkPSJ1c2VyX2xibF9hcGkiIGNsYXNzPSJ1c2VyX2xibCIgc3R5bGU9ImRpc3BsYXk6bm9uZTsiPkFQSeOCreODvCAvIEFQSSBLZXk6PC9zcGFuPgo8c3BhbiBpZD0idXNlcl9hcGlLZXlfZGlzcGxheSIgY2xhc3M9InVzZXJfZGlzcGxheV92YWwiIHN0eWxlPSJkaXNwbGF5Om5vbmU7Ij48L3NwYW4+CjxidXR0b24gdHlwZT0iYnV0dG9uIiBjbGFzcz0idXNlcl9idG5FZGl0IiBpZD0idXNlcl9idG5fZWRpdEFwaUtleSIgc3R5bGU9ImRpc3BsYXk6bm9uZTsiPkVkaXQgS0VZPC9idXR0b24+CjxzcGFuIGlkPSJ1c2VyX2FwaUtleV9lZGl0X2FyZWEiIHN0eWxlPSJkaXNwbGF5Om5vbmU7IHdpZHRoOjEwMCU7Ij48L3NwYW4+CjxzcGFuIGlkPSJ1c2VyX2xibF9pbnN0IiBjbGFzcz0idXNlcl9sYmwiIHN0eWxlPSJkaXNwbGF5Om5vbmU7Ij7mjIfnpLogLyBJbnN0cnVjdGlvbiAo5YWl5Yqb5a++6LGhOiA8c3BhbiBpZD0idXNlcl9sYmxfdGFyZ2V0X2ZpZWxkIj48L3NwYW4+KTo8L3NwYW4+CjxzcGFuIGlkPSJ1c2VyX2luc3RydWN0aW9uX2Rpc3BsYXkiIGNsYXNzPSJ1c2VyX2Rpc3BsYXlfaW5zdCIgc3R5bGU9ImRpc3BsYXk6bm9uZTsiPjwvc3Bhbj4KPGJ1dHRvbiB0eXBlPSJidXR0b24iIGNsYXNzPSJ1c2VyX2J0bkVkaXQiIGlkPSJ1c2VyX2J0bl9lZGl0SW5zdCIgc3R5bGU9Im1hcmdpbi1sZWZ0OjA7IG1hcmdpbi10b3A6NHB4OyBkaXNwbGF5Om5vbmU7Ij5FZGl0IFBST01QVDwvYnV0dG9uPgo8c3BhbiBpZD0idXNlcl9pbnN0X2VkaXRfYXJlYSIgc3R5bGU9ImRpc3BsYXk6bm9uZTsgd2lkdGg6MTAwJTsiPjwvc3Bhbj4KPGhyIGlkPSJ1c2VyX3NldF9ociIgc3R5bGU9Im1hcmdpbjoxNnB4IDAgMTJweCAwOyBib3JkZXI6bm9uZTsgYm9yZGVyLXRvcDoxcHggZGFzaGVkICNjY2M7IGRpc3BsYXk6bm9uZTsiPgo8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgaWQ9InVzZXJfYnRuU2F2ZSIgY2xhc3M9InVzZXJfYWN0aW9uQnRuIiBzdHlsZT0iZGlzcGxheTpub25lOyI+6Kit5a6a44KS5L+d5a2YIC8gU2F2ZTwvYnV0dG9uPgo8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgaWQ9InVzZXJfYnRuQ2xlYXIiIGNsYXNzPSJ1c2VyX2FjdGlvbkJ0biIgc3R5bGU9ImRpc3BsYXk6bm9uZTsiPuOCr+ODquOCoiAvIENsZWFyPC9idXR0b24+CjxzcGFuIGlkPSJ1c2VyX3NldHRpbmdTdGF0dXMiIHN0eWxlPSJtYXJnaW4tbGVmdDo4cHg7IGNvbG9yOiMwMDY2Y2M7IGZvbnQtd2VpZ2h0OmJvbGQ7IGZvbnQtc2l6ZToxM3B4OyBkaXNwbGF5Om5vbmU7Ij48L3NwYW4+CjxwcmUgaWQ9InVzZXJfcmVzdWx0Ij48L3ByZT4KPGRpdiBpZD0idXNlcl9zdGF0dXMiPjwvZGl2PgoKPHNjcmlwdD4KcWJwbXMuZm9ybS5vbigncmVhZHknLCAoKSA9PiB7CiAgLy8gLS0tIDAuIOWvvuixoeODleOCo+ODvOODq+ODieKYheKYheKYhSDnt6jpm4bjgZfjgabjgY\/jgaDjgZXjgYQgLyBFRElUIGhlcmUg4piF4piF4piFIC0tLQogIGNvbnN0IFRBUkdFVF9GSUVMRF9OQU1FID0gInFfaHVtYW5fYW5zd2VyX2JvZHkiOwogIAogIC8vIOODqeODmeODq+OBq+WvvuixoeODleOCo+ODvOODq+ODieWQjeOCkuWPjeaYoAogIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ1c2VyX2xibF90YXJnZXRfZmllbGQiKS5pbm5lclRleHQgPSBUQVJHRVRfRklFTERfTkFNRTsKCiAgLy8gLS0tIDEuIOWLleeahOOBquWFpeWKm+imgee0oOOBrueUn+aIkCAtLS0KICBjb25zdCBhcGlLZXlJbnB1dCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImlucHV0Iik7CiAgYXBpS2V5SW5wdXQudHlwZSA9ICJwYXNzd29yZCI7CiAgYXBpS2V5SW5wdXQuaWQgPSAidXNlcl9hcGlLZXkiOwogIGFwaUtleUlucHV0LnBsYWNlaG9sZGVyID0gInNrLS4uLiI7CiAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInVzZXJfYXBpS2V5X2VkaXRfYXJlYSIpLmFwcGVuZENoaWxkKGFwaUtleUlucHV0KTsKICBjb25zdCBpbnN0cnVjdGlvbklucHV0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgidGV4dGFyZWEiKTsKICBpbnN0cnVjdGlvbklucHV0LmlkID0gInVzZXJfaW5zdHJ1Y3Rpb24iOwogIGluc3RydWN0aW9uSW5wdXQucGxhY2Vob2xkZXIgPSAi5L6LOiDjgYLjgarjgZ\/jga\/lhKrnp4DjgarjgqLjgrfjgrnjgr\/jg7Pjg4jjgafjgZnjgILnsKHmvZTjgavnrZTjgYjjgabjgY\/jgaDjgZXjgYTjgIIgLyBFeDogWW91IGFyZSBhIGhlbHBmdWwgYXNzaXN0YW50Li4uIjsKICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidXNlcl9pbnN0X2VkaXRfYXJlYSIpLmFwcGVuZENoaWxkKGluc3RydWN0aW9uSW5wdXQpOwoKICAvLyAtLS0gMi4g5ZCE56iu5a6a5pWw44Go6KaB57Sg44Gu5Y+W5b6XIC0tLQogIGNvbnN0IFNUT1JBR0VfS0VZX0FQSSA9ICJ1c2VyX29wZW5haV9hcGlfa2V5IjsKICBjb25zdCBTVE9SQUdFX0tFWV9JTlNUID0gInVzZXJfb3BlbmFpX2luc3RydWN0aW9uIjsKICBjb25zdCBidG5Db25maWcgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidXNlcl9idG5Db25maWciKTsKICBjb25zdCBhaUJ1dHRvbnMgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCIudXNlcl9haUJ0biIpOwogIGNvbnN0IHJlc3VsdEVsZW1lbnQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidXNlcl9yZXN1bHQiKTsKICBjb25zdCBzdGF0dXNFbGVtZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInVzZXJfc3RhdHVzIik7CiAgY29uc3Qgc2V0dGluZ1N0YXR1cyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ1c2VyX3NldHRpbmdTdGF0dXMiKTsKCiAgLy8gVUnnirbmhYvnrqHnkIbjg5Xjg6njgrAKICBsZXQgaXNDb25maWdPcGVuID0gZmFsc2U7CiAgbGV0IGlzRWRpdGluZ0FwaSA9IGZhbHNlOwogIGxldCBpc0VkaXRpbmdJbnN0ID0gZmFsc2U7CgogIC8vIC0tLSAzLiBVSeOBruihqOekuuWIh+OCiuabv+OBiOmWouaVsCAo44OV44Op44OD44OI44Gq6KaB57Sg44KS5YCL5Yil44Gr5Yi25b6hKSAtLS0KICBmdW5jdGlvbiByZW5kZXJVSSgpIHsKICAgIGNvbnN0IHN0b3JlZEtleSA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKFNUT1JBR0VfS0VZX0FQSSkgfHwgIiI7CiAgICBjb25zdCBzdG9yZWRJbnN0ID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oU1RPUkFHRV9LRVlfSU5TVCkgfHwgIiI7CiAgICBhcGlLZXlJbnB1dC52YWx1ZSA9IHN0b3JlZEtleTsKICAgIGluc3RydWN0aW9uSW5wdXQudmFsdWUgPSBzdG9yZWRJbnN0OwogICAgY29uc3QgaGFzS2V5ID0gISFzdG9yZWRLZXk7CiAgICBjb25zdCBoYXNJbnN0ID0gISFzdG9yZWRJbnN0OwogICAgY29uc3Qgc2hvd0FwaURpc3AgPSBpc0NvbmZpZ09wZW4gJiYgaGFzS2V5ICYmICFpc0VkaXRpbmdBcGk7CiAgICBjb25zdCBzaG93QXBpRWRpdCA9IGlzQ29uZmlnT3BlbiAmJiAoIWhhc0tleSB8fCBpc0VkaXRpbmdBcGkpOwogICAgY29uc3Qgc2hvd0luc3REaXNwID0gaXNDb25maWdPcGVuICYmIGhhc0luc3QgJiYgIWlzRWRpdGluZ0luc3Q7CiAgICBjb25zdCBzaG93SW5zdEVkaXQgPSBpc0NvbmZpZ09wZW4gJiYgKCFoYXNJbnN0IHx8IGlzRWRpdGluZ0luc3QpOwoKICAgIGlmIChpc0NvbmZpZ09wZW4pIHsKICAgICAgYnRuQ29uZmlnLmNsYXNzTGlzdC5hZGQoInVzZXJfYWN0aXZlIik7CiAgICB9IGVsc2UgewogICAgICBidG5Db25maWcuY2xhc3NMaXN0LnJlbW92ZSgidXNlcl9hY3RpdmUiKTsKICAgIH0KCiAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidXNlcl9sYmxfYXBpIikuc3R5bGUuZGlzcGxheSA9IGlzQ29uZmlnT3BlbiA\/ICJibG9jayIgOiAibm9uZSI7CiAgICBjb25zdCBlS2V5RGlzcCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ1c2VyX2FwaUtleV9kaXNwbGF5Iik7CiAgICBlS2V5RGlzcC5zdHlsZS5kaXNwbGF5ID0gc2hvd0FwaURpc3AgPyAiaW5saW5lLWJsb2NrIiA6ICJub25lIjsKICAgIGlmIChzaG93QXBpRGlzcCkgZUtleURpc3AuaW5uZXJUZXh0ID0gc3RvcmVkS2V5Lmxlbmd0aCA+IDEwID8gc3RvcmVkS2V5LnN1YnN0cmluZygwLCAxMCkgKyAiLi4uIiA6IHN0b3JlZEtleTsKICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ1c2VyX2J0bl9lZGl0QXBpS2V5Iikuc3R5bGUuZGlzcGxheSA9IHNob3dBcGlEaXNwID8gImlubGluZS1ibG9jayIgOiAibm9uZSI7CiAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidXNlcl9hcGlLZXlfZWRpdF9hcmVhIikuc3R5bGUuZGlzcGxheSA9IHNob3dBcGlFZGl0ID8gImJsb2NrIiA6ICJub25lIjsKICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ1c2VyX2xibF9pbnN0Iikuc3R5bGUuZGlzcGxheSA9IGlzQ29uZmlnT3BlbiA\/ICJibG9jayIgOiAibm9uZSI7CiAgICBjb25zdCBlSW5zdERpc3AgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidXNlcl9pbnN0cnVjdGlvbl9kaXNwbGF5Iik7CiAgICBlSW5zdERpc3Auc3R5bGUuZGlzcGxheSA9IHNob3dJbnN0RGlzcCA\/ICJibG9jayIgOiAibm9uZSI7CiAgICBpZiAoc2hvd0luc3REaXNwKSBlSW5zdERpc3AuaW5uZXJUZXh0ID0gc3RvcmVkSW5zdDsKICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ1c2VyX2J0bl9lZGl0SW5zdCIpLnN0eWxlLmRpc3BsYXkgPSBzaG93SW5zdERpc3AgPyAiaW5saW5lLWJsb2NrIiA6ICJub25lIjsKICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ1c2VyX2luc3RfZWRpdF9hcmVhIikuc3R5bGUuZGlzcGxheSA9IHNob3dJbnN0RWRpdCA\/ICJibG9jayIgOiAibm9uZSI7CiAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidXNlcl9zZXRfaHIiKS5zdHlsZS5kaXNwbGF5ID0gaXNDb25maWdPcGVuID8gImJsb2NrIiA6ICJub25lIjsKICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ1c2VyX2J0blNhdmUiKS5zdHlsZS5kaXNwbGF5ID0gaXNDb25maWdPcGVuID8gImlubGluZS1ibG9jayIgOiAibm9uZSI7CiAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidXNlcl9idG5DbGVhciIpLnN0eWxlLmRpc3BsYXkgPSBpc0NvbmZpZ09wZW4gPyAiaW5saW5lLWJsb2NrIiA6ICJub25lIjsKICAgIHNldHRpbmdTdGF0dXMuc3R5bGUuZGlzcGxheSA9IGlzQ29uZmlnT3BlbiA\/ICJpbmxpbmUtYmxvY2siIDogIm5vbmUiOwogIH0KCiAgLy8g5Yid5pyf5YyWCiAgcmVuZGVyVUkoKTsKCiAgLy8gLS0tIDQuIOWQhOeoruOCpOODmeODs+ODiOODquOCueODiuODvCAtLS0KICBidG5Db25maWcuYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLCAoKSA9PiB7CiAgICBpc0NvbmZpZ09wZW4gPSAhaXNDb25maWdPcGVuOwogICAgaWYgKCFpc0NvbmZpZ09wZW4pIHsKICAgICAgaXNFZGl0aW5nQXBpID0gZmFsc2U7CiAgICAgIGlzRWRpdGluZ0luc3QgPSBmYWxzZTsKICAgIH0KICAgIHJlbmRlclVJKCk7CiAgfSk7CiAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInVzZXJfYnRuX2VkaXRBcGlLZXkiKS5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsICgpID0+IHsKICAgIGlzRWRpdGluZ0FwaSA9IHRydWU7CiAgICByZW5kZXJVSSgpOwogICAgYXBpS2V5SW5wdXQuZm9jdXMoKTsKICB9KTsKICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidXNlcl9idG5fZWRpdEluc3QiKS5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsICgpID0+IHsKICAgIGlzRWRpdGluZ0luc3QgPSB0cnVlOwogICAgcmVuZGVyVUkoKTsKICAgIGluc3RydWN0aW9uSW5wdXQuZm9jdXMoKTsKICB9KTsKICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidXNlcl9idG5TYXZlIikuYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLCAoKSA9PiB7CiAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbShTVE9SQUdFX0tFWV9BUEksIGFwaUtleUlucHV0LnZhbHVlLnRyaW0oKSk7CiAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbShTVE9SQUdFX0tFWV9JTlNULCBpbnN0cnVjdGlvbklucHV0LnZhbHVlKTsKICAgIGlzRWRpdGluZ0FwaSA9IGZhbHNlOwogICAgaXNFZGl0aW5nSW5zdCA9IGZhbHNlOwogICAgcmVuZGVyVUkoKTsKICAgIHNldHRpbmdTdGF0dXMuaW5uZXJUZXh0ID0gIuioreWumuOCkuS\/neWtmOOBl+OBvuOBl+OBnyAvIFNhdmVkIHN1Y2Nlc3NmdWxseS4iOwogICAgc2V0VGltZW91dCgoKSA9PiB7IHNldHRpbmdTdGF0dXMuaW5uZXJUZXh0ID0gIiI7IH0sIDI1MDApOwogIH0pOwogIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ1c2VyX2J0bkNsZWFyIikuYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLCAoKSA9PiB7CiAgICBsb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbShTVE9SQUdFX0tFWV9BUEkpOwogICAgbG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oU1RPUkFHRV9LRVlfSU5TVCk7CiAgICBpc0VkaXRpbmdBcGkgPSBmYWxzZTsKICAgIGlzRWRpdGluZ0luc3QgPSBmYWxzZTsKICAgIHJlbmRlclVJKCk7CiAgICBzZXR0aW5nU3RhdHVzLmlubmVyVGV4dCA9ICLoqK3lrprjgpLjgq\/jg6rjgqLjgZfjgb7jgZfjgZ8gLyBDbGVhcmVkIHN1Y2Nlc3NmdWxseS4iOwogICAgc2V0VGltZW91dCgoKSA9PiB7IHNldHRpbmdTdGF0dXMuaW5uZXJUZXh0ID0gIiI7IH0sIDI1MDApOwogIH0pOwoKICAvLyAtLS0gNS4gQUnlkbzjgbPlh7rjgZflh6bnkIYgLS0tCiAgYWlCdXR0b25zLmZvckVhY2goYnV0dG9uID0+IHsKICAgIGJ1dHRvbi5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsIGFzeW5jIChldmVudCkgPT4gewogICAgICBjb25zdCBzdHJLZXkgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbShTVE9SQUdFX0tFWV9BUEkpOwogICAgICBjb25zdCBzdHJJbnN0cnVjdGlvbiA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKFNUT1JBR0VfS0VZX0lOU1QpIHx8ICIiOyAKICAgICAgLy8g5aSJ5pWw5YyW44GX44Gf44K\/44O844Ky44OD44OI44OV44Kj44O844Or44OJ5ZCN44KS5Yip55SoCiAgICAgIGNvbnN0IHN0cklucHV0ID0gcWJwbXMuZm9ybS5nZXQoVEFSR0VUX0ZJRUxEX05BTUUpOwogICAgICBjb25zdCBtb2RlbE5hbWUgPSBldmVudC5jdXJyZW50VGFyZ2V0LmlubmVyVGV4dC50cmltKCk7CgogICAgICBpZiAoIXN0cktleSkgewogICAgICAgIHN0YXR1c0VsZW1lbnQuaW5uZXJUZXh0ID0gIuOCqOODqeODvDogQVBJ44Kt44O844GM6Kit5a6a44GV44KM44Gm44GE44G+44Gb44KT44CCQ09ORklH44Oc44K\/44Oz44GL44KJ6Kit5a6a44KS5L+d5a2Y44GX44Gm44GP44Gg44GV44GE44CCIC8gRXJyb3I6IEFQSSBLZXkgaXMgbm90IHNldC4iOwogICAgICAgIHJlc3VsdEVsZW1lbnQuaW5uZXJUZXh0ID0gIiI7CiAgICAgICAgcmV0dXJuOwogICAgICB9CiAgICAgIGlmICghc3RySW5wdXQpIHsKICAgICAgICBzdGF0dXNFbGVtZW50LmlubmVyVGV4dCA9IGDjgqjjg6njg7w6IOWFpeWKm+WGheWuuSgke1RBUkdFVF9GSUVMRF9OQU1FfSnjgYznqbrjgafjgZnjgIIgLyBFcnJvcjogSW5wdXQgZmllbGQgaXMgZW1wdHkuYDsKICAgICAgICByZXN1bHRFbGVtZW50LmlubmVyVGV4dCA9ICIiOwogICAgICAgIHJldHVybjsKICAgICAgfQoKICAgICAgYWlCdXR0b25zLmZvckVhY2goYnRuID0+IGJ0bi5kaXNhYmxlZCA9IHRydWUpOwogICAgICBidG5Db25maWcuZGlzYWJsZWQgPSB0cnVlOwogICAgICBzdGF0dXNFbGVtZW50LmlubmVyVGV4dCA9ICJBSeOBq+aOpee2muS4rS4uLiAvIENvbm5lY3RpbmcgdG8gQUkuLi4iOwogICAgICByZXN1bHRFbGVtZW50LmlubmVySFRNTCA9ICc8c3BhbiBjbGFzcz0idXNlcl9jdXJzb3IiPjwvc3Bhbj4nOwogICAgICBjb25zdCBjdXJzb3IgPSByZXN1bHRFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoIi51c2VyX2N1cnNvciIpOwoKICAgICAgdHJ5IHsKICAgICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGZldGNoKCJodHRwczovL2FwaS5vcGVuYWkuY29tL3YxL3Jlc3BvbnNlcyIsIHsKICAgICAgICAgIG1ldGhvZDogIlBPU1QiLAogICAgICAgICAgaGVhZGVyczogewogICAgICAgICAgICAiQ29udGVudC1UeXBlIjogImFwcGxpY2F0aW9uL2pzb24iLAogICAgICAgICAgICAiQXV0aG9yaXphdGlvbiI6IGBCZWFyZXIgJHtzdHJLZXl9YAogICAgICAgICAgfSwKICAgICAgICAgIGJvZHk6IEpTT04uc3RyaW5naWZ5KHsKICAgICAgICAgICAgbW9kZWw6IG1vZGVsTmFtZSwKICAgICAgICAgICAgaW5zdHJ1Y3Rpb25zOiBzdHJJbnN0cnVjdGlvbiwKICAgICAgICAgICAgaW5wdXQ6IHN0cklucHV0LAogICAgICAgICAgICBzdHJlYW06IHRydWUKICAgICAgICAgIH0pCiAgICAgICAgfSk7CgogICAgICAgIGlmICghcmVzcG9uc2Uub2spIHsKICAgICAgICAgIGxldCBtc2cgPSBgQVBJIEVycm9yOiAke3Jlc3BvbnNlLnN0YXR1c31gOwogICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgY29uc3QgZXJyID0gYXdhaXQgcmVzcG9uc2UuanNvbigpOwogICAgICAgICAgICBtc2cgKz0gYFxuJHtKU09OLnN0cmluZ2lmeShlcnIsIG51bGwsIDIpfWA7CiAgICAgICAgICB9IGNhdGNoIChfKSB7fQogICAgICAgICAgdGhyb3cgbmV3IEVycm9yKG1zZyk7CiAgICAgICAgfQogICAgICAgIHN0YXR1c0VsZW1lbnQuaW5uZXJUZXh0ID0gIkFJ44GM5paH56ug44KS55Sf5oiQ5LitLi4uIC8gQUkgaXMgZ2VuZXJhdGluZyB0ZXh0Li4uIjsKICAgICAgICBjb25zdCByZWFkZXIgPSByZXNwb25zZS5ib2R5LmdldFJlYWRlcigpOwogICAgICAgIGNvbnN0IGRlY29kZXIgPSBuZXcgVGV4dERlY29kZXIoKTsKICAgICAgICBsZXQgYnVmZmVyID0gIiI7CiAgICAgICAgbGV0IGN1cnJlbnRFdmVudCA9ICIiOwogICAgICAgIGNvbnN0IGZsdXNoTGluZXMgPSAoY2h1bmtUZXh0KSA9PiB7CiAgICAgICAgICBidWZmZXIgKz0gY2h1bmtUZXh0OwogICAgICAgICAgY29uc3QgbGluZXMgPSBidWZmZXIuc3BsaXQoL1xyP1xuLyk7CiAgICAgICAgICBidWZmZXIgPSBsaW5lcy5wb3AoKSB8fCAiIjsKICAgICAgICAgIGZvciAoY29uc3QgbGluZSBvZiBsaW5lcykgewogICAgICAgICAgICBpZiAoIWxpbmUudHJpbSgpKSBjb250aW51ZTsKICAgICAgICAgICAgaWYgKGxpbmUuc3RhcnRzV2l0aCgiZXZlbnQ6IikpIHsKICAgICAgICAgICAgICBjdXJyZW50RXZlbnQgPSBsaW5lLnJlcGxhY2UoL15ldmVudDpccyovLCAiIikudHJpbSgpOwogICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmIChsaW5lLnN0YXJ0c1dpdGgoImRhdGE6IikpIHsKICAgICAgICAgICAgICBjb25zdCBkYXRhUmF3ID0gbGluZS5yZXBsYWNlKC9eZGF0YTpccyovLCAiIikudHJpbSgpOwogICAgICAgICAgICAgIGlmIChkYXRhUmF3ID09PSAiW0RPTkVdIikgcmV0dXJuICJET05FIjsKICAgICAgICAgICAgICAKICAgICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgY29uc3QgZGF0YSA9IEpTT04ucGFyc2UoZGF0YVJhdyk7CiAgICAgICAgICAgICAgICBpZiAoY3VycmVudEV2ZW50ID09PSAicmVzcG9uc2Uub3V0cHV0X3RleHQuZGVsdGEiICYmIGRhdGEuZGVsdGEpIHsKICAgICAgICAgICAgICAgICAgY3Vyc29yLmluc2VydEFkamFjZW50VGV4dCgiYmVmb3JlYmVnaW4iLCBkYXRhLmRlbHRhKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGlmIChjdXJyZW50RXZlbnQgPT09ICJyZXNwb25zZS5jb21wbGV0ZWQiKSB7CiAgICAgICAgICAgICAgICAgIHJldHVybiAiRE9ORSI7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBpZiAoY3VycmVudEV2ZW50ID09PSAicmVzcG9uc2UuZXJyb3IiKSB7CiAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihkYXRhPy5lcnJvcj8ubWVzc2FnZSB8fCAiVW5rbm93biBzdHJlYW1pbmcgZXJyb3IiKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICB9IGNhdGNoIChlKSB7CiAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKCJTU0UgSlNPTiBwYXJzZSBlcnJvcjoiLCBkYXRhUmF3LCBlKTsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgIH0KICAgICAgICB9OwogICAgICAgIHdoaWxlICh0cnVlKSB7CiAgICAgICAgICBjb25zdCB7IGRvbmUsIHZhbHVlIH0gPSBhd2FpdCByZWFkZXIucmVhZCgpOwogICAgICAgICAgaWYgKGRvbmUpIGJyZWFrOwogICAgICAgICAgY29uc3QgdGV4dCA9IGRlY29kZXIuZGVjb2RlKHZhbHVlLCB7IHN0cmVhbTogdHJ1ZSB9KTsKICAgICAgICAgIGNvbnN0IHN0YXR1cyA9IGZsdXNoTGluZXModGV4dCk7CiAgICAgICAgICBpZiAoc3RhdHVzID09PSAiRE9ORSIpIGJyZWFrOwogICAgICAgIH0KICAgICAgICBzdGF0dXNFbGVtZW50LmlubmVyVGV4dCA9ICLnlJ\/miJDlrozkuoYgLyBHZW5lcmF0aW9uIENvbXBsZXRlZCI7CiAgICAgIH0gY2F0Y2ggKGVycm9yKSB7CiAgICAgICAgY29uc29sZS5lcnJvcigiUmVxdWVzdCBmYWlsZWQ6IiwgZXJyb3IpOwogICAgICAgIHN0YXR1c0VsZW1lbnQuaW5uZXJUZXh0ID0gIuOCqOODqeODvOOBjOeZuueUn+OBl+OBvuOBl+OBn+OAgiAvIEFuIGVycm9yIG9jY3VycmVkLiI7CiAgICAgICAgcmVzdWx0RWxlbWVudC5pbm5lclRleHQgPSBTdHJpbmcoZXJyb3IubWVzc2FnZSB8fCBlcnJvcik7CiAgICAgIH0gZmluYWxseSB7CiAgICAgICAgY29uc3QgYyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoIiN1c2VyX3Jlc3VsdCAudXNlcl9jdXJzb3IiKTsKICAgICAgICBjPy5yZW1vdmUoKTsKICAgICAgICBhaUJ1dHRvbnMuZm9yRWFjaChidG4gPT4gYnRuLmRpc2FibGVkID0gZmFsc2UpOwogICAgICAgIGJ0bkNvbmZpZy5kaXNhYmxlZCA9IGZhbHNlOwogICAgICB9CiAgICB9KTsKICB9KTsKfSk7Cjwvc2NyaXB0PncEaHRtbHcESFRNTHcAdwB9AXcJdW5kZWZpbmVkdwB5eXl5eXUAeXcAfZAGfQB3BGVhc2V5dwB3A3RvcHl9AHcJY29yZS9odG1sd4wBPGgzIGNsYXNzPSJ3cC1ibG9jay1oZWFkaW5nIiBzdHlsZT0ibWFyZ2luLXRvcDp2YXIoLS13cC0tcHJlc2V0LS1zcGFjaW5nLS02MCkiPjxzcGFuIHN0eWxlPSJ0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTsiPkNhcHR1cmU8L3NwYW4+PC9oMz53DGNvcmUvaGVhZGluZ30DdgEHc3BhY2luZ3YBBm1hcmdpbnYBA3RvcHcVdmFyOnByZXNldHxzcGFjaW5nfDYwdwB3AHl5dwpjb3JlL2ltYWdldzBxR3VpZGU6IFJlcXVlc3QgdG8gT3BlbkFJIEFQSSB1c2luZyBsb2NhbFN0b3JhZ2V5eXcEbm9uZXl9uZwWd3ZodHRwczovL3N1cHBvcnQucXVlc3RldHJhLmNvbS93cC1jb250ZW50L3VwbG9hZHMvMjAyNi8wNC9kZWNvLVJlcXVlc3QtdG8tT3BlbkFJLUFQSS11c2luZy1sb2NhbFN0b3JhZ2UtZW4tMTAyNHg1MzYucG5ndwVsYXJnZXcEbm9uZXYBB2VuYWJsZWR4dwxjb3JlL2hlYWRpbmd9A3YBB3NwYWNpbmd2AQZtYXJnaW52AQN0b3B3FXZhcjpwcmVzZXR8c3BhY2luZ3w2MHcAdwB5eXeMATxoMyBjbGFzcz0id3AtYmxvY2staGVhZGluZyIgc3R5bGU9Im1hcmdpbi10b3A6dmFyKC0td3AtLXByZXNldC0tc3BhY2luZy0tNjApIj48c3BhbiBzdHlsZT0idGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7Ij5DYXB0dXJlPC9zcGFuPjwvaDM+dwpjb3JlL2ltYWdldwB3EGlzLXN0eWxlLWRlZmF1bHR5eXcEbm9uZXl3jQE8aDMgY2xhc3M9IndwLWJsb2NrLWhlYWRpbmciIHN0eWxlPSJtYXJnaW4tdG9wOnZhcigtLXdwLS1wcmVzZXQtLXNwYWNpbmctLTYwKSI+PHNwYW4gc3R5bGU9InRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lOyI+U2VlIEFsc288L3NwYW4+PC9oMz53CmNvcmUvZW1iZWR4eXh9v5wWd1podHRwczovL3N1cHBvcnQucXVlc3RldHJhLmNvbS93cC1jb250ZW50L3VwbG9hZHMvMjAyNi8wNC9haS1kZWNvLWxvY2FsU3RvcmFnZS0xMDI0eDU3Ni5naWZ3BWxhcmdldwRub25ldgEHZW5hYmxlZHh3BmNlbnRlcnh5eXl5eXUAeXcAfZAGfQB3BGVhc2V5dwB3A3RvcHl9AHcKY29yZS9pbWFnZXcAeXl3BG5vbmV5fYKdFndZaHR0cHM6Ly9zdXBwb3J0LnF1ZXN0ZXRyYS5jb20vd3AtY29udGVudC91cGxvYWRzLzIwMjYvMDQvbG9jYWxTdG9yYWdlLW91dHB1dC0xMDI0eDUxNS5wbmd3BWxhcmdldwRub25ldgEHZW5hYmxlZHh3BmNlbnRlcnh5eXl5eXUAeXcAfZAGfQB3BGVhc2V5dwB3A3RvcHl9AHh5eXl5eXUAeXcAfZAGfQB3BGVhc2V5dwB3A3RvcHl9AHcKY29yZS9pbWFnZXcAeXl3BG5vbmV5dwpjb3JlL2ltYWdldwB5eXcEbm9uZXl9hp0Wd1lodHRwczovL3N1cHBvcnQucXVlc3RldHJhLmNvbS93cC1jb250ZW50L3VwbG9hZHMvMjAyNi8wNC9sb2NhbFN0b3JhZ2UtY29uZmlnLTEwMjR4NTkxLnBuZ3cFbGFyZ2V3BG5vbmV3BmNlbnRlcn2InRZ3Ymh0dHBzOi8vc3VwcG9ydC5xdWVzdGV0cmEuY29tL3dwLWNvbnRlbnQvdXBsb2Fkcy8yMDI2LzA0L2xvY2FsU3RvcmFnZS1jb25maWctZWRpdC1tb2RlLTU0OHg2MzAucG5ndwVsYXJnZXcEbm9uZXcGY2VudGVydwh3cC1lbWJlZHcRcXVlc3RldHJhLXN1cHBvcnR4dwpjb3JlL2VtYmVkeHl4eXl5eXl1AHl3AH2QBn0AdwRlYXNleXcAdwN0b3B5fQB3CHdwLWVtYmVkdxFxdWVzdGV0cmEtc3VwcG9ydHYBB2VuYWJsZWR4dgEHZW5hYmxlZHh3B3B1Ymxpc2imAQB3EzIwMjYtMDQtMDJUMTE6MDY6NDZ4eHh9kp0WeHh4eHh4eHh4eHcAdwB5eXl5eXl5dQB5dwB9kAZ9AHcEZWFzZXl3AHcDdG9weX0AeHh4dyQ4NzU1NzVkNC01OWFhLTQzMTQtYTYyOS04NTc2YjZlMWFkMDd3CWNvcmUvbGlzdHl3AHh3JDgzYzc5NzFjLTFjNTMtNGIzNC1iMzliLWJmMTMyNTQ2OWY2N3h3DmNvcmUvbGlzdC1pdGVteXl5eXl1AHl3AH2QBn0AdwRlYXNleXcAdwN0b3B5fQB3JDY3MGQyYzU4LTMwMjUtNGI5MS04MWVhLWQ2ZTA3ODFlMzNkMHh3DmNvcmUvbGlzdC1pdGVteXl5eXl1AHl3AH2QBn0AdwRlYXNleXcAdwN0b3B5fQB4eHh3JDllMmY3ZWYxLTMwNTItNGNlYi1hMmQ0LTVhYTk2MjhhMmM1ZnfEBDxkaXYgY2xhc3M9Imhhcy1zbWFsbC1mb250LXNpemUiIHN0eWxlPSJ0ZXh0LWFsaWduOiByaWdodDsiPjxkaXYgc3R5bGU9ImRpc3BsYXk6IGlubGluZS1ibG9jazsgYmFja2dyb3VuZDogI0ZCRTdERDsgdGV4dC1hbGlnbjogY2VudGVyOyI+DQo8c3BhbiBjbGFzcz0ibWF0ZXJpYWwtaWNvbnMiPndhcm5pbmc8L3NwYW4+IOiHqueUseaUueWkieWPr+iDveOBqiBIVE1ML0phdmFTY3JpcHQg44Kz44O844OJ44Gn44GZIChNSVQgTGljZW5zZSnjgILjgYTjgYvjgarjgovkv53oqLzjgoLjgYLjgorjgb7jgZvjgpPjgII8YnI+DQooPGVtPjxzdHJvbmc+SmF2YVNjcmlwdCDjgpLnlKjjgYTjgZ\/jg4fjgrPjg6zjg7zjgrfjg6fjg7M8L3N0cm9uZz48L2VtPuOBryA8ZW0+PHN0cm9uZz48c3BhbiBzdHlsZT0iY29sb3I6ICMxOTcwQjkiPlByb2Zlc3Npb25hbDwvc3Bhbj48L3N0cm9uZz48L2VtPiBlZGl0aW9u44Gn44Gu44G\/5Yip55So5Y+v6IO944Gn44GZOiA8YSBocmVmPSJodHRwczovL3F1ZXN0ZXRyYS56ZW5kZXNrLmNvbS9oYy9qYS9hcnRpY2xlcy8zNjAwMDIyNDUyNTItTTIxMyI+TTIxMzwvYT4pDQo8L2Rpdj48L2Rpdj53lQQ8ZGl2IGNsYXNzPSJoYXMtc21hbGwtZm9udC1zaXplIiBzdHlsZT0idGV4dC1hbGlnbjogcmlnaHQ7Ij48ZGl2IHN0eWxlPSJkaXNwbGF5OiBpbmxpbmUtYmxvY2s7IGJhY2tncm91bmQ6ICNGQkU3REQ7IHRleHQtYWxpZ246IGNlbnRlcjsiPgroh6rnlLHmlLnlpInlj6\/og73jgaogSFRNTC9KYXZhU2NyaXB0IOOCs+ODvOODieOBp+OBmSAoTUlUIExpY2Vuc2Up44CC44GE44GL44Gq44KL5L+d6Ki844KC44GC44KK44G+44Gb44KT44CCPGJyPgooPGVtPjxzdHJvbmc+SmF2YVNjcmlwdCDjgpLnlKjjgYTjgZ\/jg4fjgrPjg6zjg7zjgrfjg6fjg7M8L3N0cm9uZz48L2VtPuOBryA8ZW0+PHN0cm9uZz48c3BhbiBzdHlsZT0iY29sb3I6ICMxOTcwQjkiPlByb2Zlc3Npb25hbDwvc3Bhbj48L3N0cm9uZz48L2VtPiBlZGl0aW9u44Gn44Gu44G\/5Yip55So5Y+v6IO944Gn44GZOiA8YSBocmVmPSJodHRwczovL3F1ZXN0ZXRyYS56ZW5kZXNrLmNvbS9oYy9qYS9hcnRpY2xlcy8zNjAwMDIyNDUyNTItTTIxMyI+TTIxMzwvYT4pCjwvZGl2PjwvZGl2Pnh4eHdLaHR0cHM6Ly9zdXBwb3J0LnF1ZXN0ZXRyYS5jb20vamEvZGVjby1qYS9xZ3VpZGUtcmVxdWVzdC10by1vcGVuYWktYXBpLTIwMjUvd1ZodHRwczovL3N1cHBvcnQucXVlc3RldHJhLmNvbS9qYS9kZWNvLWphL3FndWlkZS1yZXF1ZXN0LXRvLW9wZW5haS1hcGktd2l0aC1pbWFnZS0yMDI1LwT07\/eQDQEBAPeqyf0GBADuAwUJEQUFAI+pu\/kBiAIAAgQAMAACAAICCAoKAgEAAQEDCwEIAQcBAgGAAQEPAwMFAAECCgICAAEAAwIBABYAAQECQAMAEgABAQEBFgABAQE\/FgABAQEBFT0BAAEBAQARFwEAAQEBPhIAAQEBBBAAAgABAQE\/EgABAQEDERcBAAEBASwRvwUBAAEALQUgAAEBAQABAxAAAgTeAssD0gLVAqECNNAGcpQBhAQgigSCAkdzjQEWEgGGGl+PDBaQAQEAAgQBAQEOAQEBAAEVAgUBAAEAAQECBwIBAQUBAQMIAQcBBAIMAQsBBwEAAQIBAgEEAQABBQEFAQIBAAECAQACAgEFAQECAgEBAw4BAQIAAQABBQEHAQMBCQEFAQECCQIMAQABAQIJAQYBCgIAAQUBAQEDAQIBBQIEAQENBAF8AQwBLwgYAQABAAGgDAGHBAHVApoEpwEBAAEAAQEUAwGIAhZKGPkCpnrXBQEMCAEWBj4IAwIBAAIIA\/4CAwBEAAMDAQBSADgAPQA0ADMAAgEBCQE0AfcBQgMJAB4AAQAbAQEBQQEBAAUCAgABASwAAQUNAgENCwQNFYYC4gIWCwcBBwAIBJEBeaEBHAEAAxYBCgEKAQABAAEFEAIBL4MDRxQKAQADFgEKzAIQAQABAAEFEAIBCgEAAQABBRACAVQHVAdHFEcUCgEAAwoBCgEAAwoB4wQCCgEAAQAWAAOhAZUBSySgAZUBSyKKBAEWoAUEAQIBCwEGDgIFAAGqAgQDAgICDwIDAQsNDPOm3m8NAAD6BQEW8wOvBAAjAAEBFVcEWCmKAQGKAwEViAPPAqEHAQ==\",\"updateId\":1758144}","_uag_custom_page_level_css":"","site-sidebar-layout":"default","site-content-layout":"","ast-site-content-layout":"default","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"","ast-breadcrumbs-content":"","ast-featured-img":"","footer-sml-layout":"","ast-disable-related-posts":"","theme-transparent-header-meta":"","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"default","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"advanced_seo_description":"","jetpack_seo_html_title":"","jetpack_seo_noindex":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":true,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2},"_wpas_customize_per_network":false,"jetpack_post_was_ever_published":false},"categories":[3440],"tags":[],"class_list":["post-182096","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-deco-ja"],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2026\/04\/deco-Request-to-OpenAI-API-using-localStorage-ja.png?fit=1200%2C628&ssl=1","uagb_featured_image_src":{"full":["https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2026\/04\/deco-Request-to-OpenAI-API-using-localStorage-ja.png?fit=1200%2C628&ssl=1",1200,628,false],"thumbnail":["https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2026\/04\/deco-Request-to-OpenAI-API-using-localStorage-ja.png?resize=440%2C440&ssl=1",440,440,true],"medium":["https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2026\/04\/deco-Request-to-OpenAI-API-using-localStorage-ja.png?fit=600%2C315&ssl=1",600,315,true],"medium_large":["https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2026\/04\/deco-Request-to-OpenAI-API-using-localStorage-ja.png?fit=768%2C402&ssl=1",768,402,true],"large":["https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2026\/04\/deco-Request-to-OpenAI-API-using-localStorage-ja.png?fit=1024%2C536&ssl=1",1024,536,true],"1536x1536":["https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2026\/04\/deco-Request-to-OpenAI-API-using-localStorage-ja.png?fit=1200%2C628&ssl=1",1200,628,true],"2048x2048":["https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2026\/04\/deco-Request-to-OpenAI-API-using-localStorage-ja.png?fit=1200%2C628&ssl=1",1200,628,true],"newspack-article-block-landscape-large":["https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2026\/04\/deco-Request-to-OpenAI-API-using-localStorage-ja.png?resize=1200%2C628&ssl=1",1200,628,true],"newspack-article-block-portrait-large":["https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2026\/04\/deco-Request-to-OpenAI-API-using-localStorage-ja.png?resize=900%2C628&ssl=1",900,628,true],"newspack-article-block-square-large":["https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2026\/04\/deco-Request-to-OpenAI-API-using-localStorage-ja.png?resize=1200%2C628&ssl=1",1200,628,true],"newspack-article-block-landscape-medium":["https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2026\/04\/deco-Request-to-OpenAI-API-using-localStorage-ja.png?resize=800%2C600&ssl=1",800,600,true],"newspack-article-block-portrait-medium":["https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2026\/04\/deco-Request-to-OpenAI-API-using-localStorage-ja.png?resize=600%2C628&ssl=1",600,628,true],"newspack-article-block-square-medium":["https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2026\/04\/deco-Request-to-OpenAI-API-using-localStorage-ja.png?resize=800%2C628&ssl=1",800,628,true],"newspack-article-block-landscape-intermediate":["https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2026\/04\/deco-Request-to-OpenAI-API-using-localStorage-ja.png?resize=600%2C450&ssl=1",600,450,true],"newspack-article-block-portrait-intermediate":["https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2026\/04\/deco-Request-to-OpenAI-API-using-localStorage-ja.png?resize=450%2C600&ssl=1",450,600,true],"newspack-article-block-square-intermediate":["https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2026\/04\/deco-Request-to-OpenAI-API-using-localStorage-ja.png?resize=600%2C600&ssl=1",600,600,true],"newspack-article-block-landscape-small":["https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2026\/04\/deco-Request-to-OpenAI-API-using-localStorage-ja.png?resize=400%2C300&ssl=1",400,300,true],"newspack-article-block-portrait-small":["https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2026\/04\/deco-Request-to-OpenAI-API-using-localStorage-ja.png?resize=300%2C400&ssl=1",300,400,true],"newspack-article-block-square-small":["https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2026\/04\/deco-Request-to-OpenAI-API-using-localStorage-ja.png?resize=400%2C400&ssl=1",400,400,true],"newspack-article-block-landscape-tiny":["https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2026\/04\/deco-Request-to-OpenAI-API-using-localStorage-ja.png?resize=200%2C150&ssl=1",200,150,true],"newspack-article-block-portrait-tiny":["https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2026\/04\/deco-Request-to-OpenAI-API-using-localStorage-ja.png?resize=150%2C200&ssl=1",150,200,true],"newspack-article-block-square-tiny":["https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2026\/04\/deco-Request-to-OpenAI-API-using-localStorage-ja.png?resize=200%2C200&ssl=1",200,200,true],"newspack-article-block-uncropped":["https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2026\/04\/deco-Request-to-OpenAI-API-using-localStorage-ja.png?fit=1200%2C628&ssl=1",1200,628,true]},"uagb_author_info":{"display_name":"IMAMURA, Genichi","author_link":"https:\/\/support.questetra.com\/ja\/author\/imamuragenichi\/"},"uagb_comment_info":1,"uagb_excerpt":"\u6587\u5b57\u5217 \"\u6295\u5165\u30c7\u30fc\u30bf\" \u3092 Responses API \u306b CORS \u9001\u4fe1\u3057\u307e\u3059\u3002\u30ec\u30b9\u30dd\u30f3\u30b9\uff08\u30e2\u30c7\u30eb\u304c\u751f\u6210\u3057\u305f&hellip;","jetpack_sharing_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/p9DiIh-Ln2","jetpack_likes_enabled":true,"jetpack-related-posts":[{"id":178399,"url":"https:\/\/support.questetra.com\/ja\/deco-ja\/qguide-request-to-azure-openai-service-api-2025\/","url_meta":{"origin":182096,"position":0},"title":"qGuide: Azure OpenAI Service API \u306b\u30ea\u30af\u30a8\u30b9\u30c8","author":"Tsuyoshi Kusaka","date":"2025-10-16","format":false,"excerpt":"\u6587\u5b57\u5217 \"\u6295\u5165\u30c7\u30fc\u30bf\"\u30fb\"API\u30ad\u30fc\"\u30fb\"\u30ea\u30bd\u30fc\u30b9\u540d\"\u30fb\"\u30c7\u30d7\u30ed\u30a4ID\"\u30fb\"API\u30d0\u30fc\u30b8\u30e7\u30f3\" \u3092 \u2026","rel":"","context":"\u51e6\u7406\u753b\u9762\u30c7\u30b3\u30ec\u30fc\u30b7\u30e7\u30f3","block_context":{"text":"\u51e6\u7406\u753b\u9762\u30c7\u30b3\u30ec\u30fc\u30b7\u30e7\u30f3","link":"https:\/\/support.questetra.com\/ja\/category\/deco-ja\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2025\/10\/qGuide-Request-to-AOAI-API-ja-eyecatch2.png?fit=1200%2C675&ssl=1&resize=350%2C200","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2025\/10\/qGuide-Request-to-AOAI-API-ja-eyecatch2.png?fit=1200%2C675&ssl=1&resize=350%2C200 1x, https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2025\/10\/qGuide-Request-to-AOAI-API-ja-eyecatch2.png?fit=1200%2C675&ssl=1&resize=525%2C300 1.5x, https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2025\/10\/qGuide-Request-to-AOAI-API-ja-eyecatch2.png?fit=1200%2C675&ssl=1&resize=700%2C400 2x, https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2025\/10\/qGuide-Request-to-AOAI-API-ja-eyecatch2.png?fit=1200%2C675&ssl=1&resize=1050%2C600 3x"},"classes":[]},{"id":178050,"url":"https:\/\/support.questetra.com\/ja\/deco-ja\/qguide-request-to-openai-api-2025\/","url_meta":{"origin":182096,"position":1},"title":"qGuide: OpenAI API \u306b\u30ea\u30af\u30a8\u30b9\u30c8","author":"IMAMURA, Genichi","date":"2025-09-29","format":false,"excerpt":"\u6587\u5b57\u5217 \"\u6295\u5165\u30c7\u30fc\u30bf\" \u3068\u6587\u5b57\u5217 \"API\u30ad\u30fc\" \u3092 Responses API \u306b CORS \u9001\u4fe1\u2026","rel":"","context":"\u51e6\u7406\u753b\u9762\u30c7\u30b3\u30ec\u30fc\u30b7\u30e7\u30f3","block_context":{"text":"\u51e6\u7406\u753b\u9762\u30c7\u30b3\u30ec\u30fc\u30b7\u30e7\u30f3","link":"https:\/\/support.questetra.com\/ja\/category\/deco-ja\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2025\/09\/qGuide-Request-to-OpenAI-API-ja.png?fit=1200%2C628&ssl=1&resize=350%2C200","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2025\/09\/qGuide-Request-to-OpenAI-API-ja.png?fit=1200%2C628&ssl=1&resize=350%2C200 1x, https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2025\/09\/qGuide-Request-to-OpenAI-API-ja.png?fit=1200%2C628&ssl=1&resize=525%2C300 1.5x, https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2025\/09\/qGuide-Request-to-OpenAI-API-ja.png?fit=1200%2C628&ssl=1&resize=700%2C400 2x, https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2025\/09\/qGuide-Request-to-OpenAI-API-ja.png?fit=1200%2C628&ssl=1&resize=1050%2C600 3x"},"classes":[]},{"id":89754,"url":"https:\/\/support.questetra.com\/ja\/versions\/version-1210\/","url_meta":{"origin":182096,"position":2},"title":"Ver. 12.1 \uff3b\u30de\u30a4\u30bf\u30b9\u30af\uff3d\u3067\u7d5e\u308a\u8fbc\u307f\u691c\u7d22\u3084\u30c7\u30fc\u30bf\u9805\u76ee\u8868\u793a\u306b\u5bfe\u5fdc (2020\u5e747\u670813\u65e5)","author":"Hirotaka NISHI","date":"2020-06-29","format":false,"excerpt":"\u30de\u30a4\u30bf\u30b9\u30af\uff0f\u5f15\u304d\u53d7\u3051\u5f85\u3061\u306e\u4e00\u89a7\u3067\u691c\u7d22\u3084\u30c7\u30fc\u30bf\u9805\u76ee\u8868\u793a\u3092\u884c\u3048\u308b\u3088\u3046\u306b\u306a\u308a\u307e\u3059\u3002\u307e\u305f\u3001\u5951\u7d04\u30a8\u30c7\u30a3\u30b7\u30e7\u30f3\u306b\u2026","rel":"","context":"\u30d0\u30fc\u30b8\u30e7\u30f3\u60c5\u5831","block_context":{"text":"\u30d0\u30fc\u30b8\u30e7\u30f3\u60c5\u5831","link":"https:\/\/support.questetra.com\/ja\/category\/versions\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2020\/06\/version-1210-fi-ja.png?fit=1200%2C675&ssl=1&resize=350%2C200","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2020\/06\/version-1210-fi-ja.png?fit=1200%2C675&ssl=1&resize=350%2C200 1x, https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2020\/06\/version-1210-fi-ja.png?fit=1200%2C675&ssl=1&resize=525%2C300 1.5x, https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2020\/06\/version-1210-fi-ja.png?fit=1200%2C675&ssl=1&resize=700%2C400 2x, https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2020\/06\/version-1210-fi-ja.png?fit=1200%2C675&ssl=1&resize=1050%2C600 3x"},"classes":[]},{"id":87653,"url":"https:\/\/support.questetra.com\/ja\/versions\/version-1200\/","url_meta":{"origin":182096,"position":3},"title":"Ver. 12.0 \u30e2\u30c7\u30ea\u30f3\u30b0\u6a5f\u80fd\u3001Flash \u304b\u3089 HTML5 \u3078\u5b8c\u5168\u79fb\u884c (2020\u5e745\u670811\u65e5)","author":"Hirotaka NISHI","date":"2020-04-27","format":false,"excerpt":"\u30e2\u30c7\u30ea\u30f3\u30b0\u6a5f\u80fd\u3001Flash \u7248\u304c\u5ec3\u6b62\u3055\u308c\u3001HTML5 \u7248\u306b\u5b8c\u5168\u79fb\u884c\u3057\u307e\u3059\u3002\u307e\u305f\u3001\u30a2\u30d7\u30ea\u7de8\u96c6\u4e2d\u306b\u30b9\u30ca\u30c3\u2026","rel":"","context":"\u30d0\u30fc\u30b8\u30e7\u30f3\u60c5\u5831","block_context":{"text":"\u30d0\u30fc\u30b8\u30e7\u30f3\u60c5\u5831","link":"https:\/\/support.questetra.com\/ja\/category\/versions\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2020\/04\/version-1200-fi-ja.png?fit=1200%2C675&ssl=1&resize=350%2C200","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2020\/04\/version-1200-fi-ja.png?fit=1200%2C675&ssl=1&resize=350%2C200 1x, https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2020\/04\/version-1200-fi-ja.png?fit=1200%2C675&ssl=1&resize=525%2C300 1.5x, https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2020\/04\/version-1200-fi-ja.png?fit=1200%2C675&ssl=1&resize=700%2C400 2x, https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2020\/04\/version-1200-fi-ja.png?fit=1200%2C675&ssl=1&resize=1050%2C600 3x"},"classes":[]},{"id":154885,"url":"https:\/\/support.questetra.com\/ja\/versions\/version-152\/","url_meta":{"origin":182096,"position":4},"title":"Ver. 15.2 \u300c\u5f79\u8077\u300d\u3092\u5b9a\u7fa9\u3057\u3001\u7d44\u7e54\u3078\u306e\u6240\u5c5e\u3067\u6307\u5b9a\u3067\u304d\u308b\u3088\u3046\u306b\u5bfe\u5fdc (2023\u5e7412\u670818\u65e5)","author":"Hirotaka NISHI","date":"2023-12-11","format":false,"excerpt":"\u4efb\u610f\u306e\u300c\u5f79\u8077\u300d\u3092\u5b9a\u7fa9\u3057\u3001\u30e6\u30fc\u30b6\u3092\u7d44\u7e54\u306b\u6240\u5c5e\u3055\u305b\u308b\u969b\u306b\u6307\u5b9a\u3067\u304d\u308b\u3088\u3046\u306b\u306a\u308a\u307e\u3059\u3002\u307e\u305f\u3001Microsof\u2026","rel":"","context":"\u30d0\u30fc\u30b8\u30e7\u30f3\u60c5\u5831","block_context":{"text":"\u30d0\u30fc\u30b8\u30e7\u30f3\u60c5\u5831","link":"https:\/\/support.questetra.com\/ja\/category\/versions\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2023\/12\/version-152-fi-ja.png?fit=1200%2C675&ssl=1&resize=350%2C200","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2023\/12\/version-152-fi-ja.png?fit=1200%2C675&ssl=1&resize=350%2C200 1x, https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2023\/12\/version-152-fi-ja.png?fit=1200%2C675&ssl=1&resize=525%2C300 1.5x, https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2023\/12\/version-152-fi-ja.png?fit=1200%2C675&ssl=1&resize=700%2C400 2x, https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2023\/12\/version-152-fi-ja.png?fit=1200%2C675&ssl=1&resize=1050%2C600 3x"},"classes":[]},{"id":68626,"url":"https:\/\/support.questetra.com\/ja\/versions\/version-1140\/","url_meta":{"origin":182096,"position":5},"title":"Ver.11.4 \u30a2\u30af\u30bb\u30b9\u5236\u5fa1\u6a5f\u80fd\u306a\u3069\u306b\u3088\u308a\u30bb\u30ad\u30e5\u30ea\u30c6\u30a3\u3092\u5f37\u5316 (2017\u5e749\u670811\u65e5)","author":"Hirotaka NISHI","date":"2017-08-29","format":false,"excerpt":"\u30ea\u30ea\u30fc\u30b9\u6982\u8981 \u30ea\u30ea\u30fc\u30b9\u65e5 2017\u5e749\u670811\u65e5 (\u6708) \u6ce8\u610f\u3059\u3079\u304d\u5909\u66f4\u70b9 CSRF \u5bfe\u7b56\uff08\u30bb\u30ad\u30e5\u30ea\u30c6\u2026","rel":"","context":"\u30d0\u30fc\u30b8\u30e7\u30f3\u60c5\u5831","block_context":{"text":"\u30d0\u30fc\u30b8\u30e7\u30f3\u60c5\u5831","link":"https:\/\/support.questetra.com\/ja\/category\/versions\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2017\/08\/version-1140-fi-ja-1.png?fit=1200%2C675&ssl=1&resize=350%2C200","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2017\/08\/version-1140-fi-ja-1.png?fit=1200%2C675&ssl=1&resize=350%2C200 1x, https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2017\/08\/version-1140-fi-ja-1.png?fit=1200%2C675&ssl=1&resize=525%2C300 1.5x, https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2017\/08\/version-1140-fi-ja-1.png?fit=1200%2C675&ssl=1&resize=700%2C400 2x, https:\/\/i0.wp.com\/support.questetra.com\/wp-content\/uploads\/2017\/08\/version-1140-fi-ja-1.png?fit=1200%2C675&ssl=1&resize=1050%2C600 3x"},"classes":[]}],"amp_enabled":false,"_links":{"self":[{"href":"https:\/\/support.questetra.com\/ja\/wp-json\/wp\/v2\/posts\/182096","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/support.questetra.com\/ja\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/support.questetra.com\/ja\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/support.questetra.com\/ja\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/support.questetra.com\/ja\/wp-json\/wp\/v2\/comments?post=182096"}],"version-history":[{"count":5,"href":"https:\/\/support.questetra.com\/ja\/wp-json\/wp\/v2\/posts\/182096\/revisions"}],"predecessor-version":[{"id":182106,"href":"https:\/\/support.questetra.com\/ja\/wp-json\/wp\/v2\/posts\/182096\/revisions\/182106"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/support.questetra.com\/ja\/wp-json\/wp\/v2\/media\/182098"}],"wp:attachment":[{"href":"https:\/\/support.questetra.com\/ja\/wp-json\/wp\/v2\/media?parent=182096"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/support.questetra.com\/ja\/wp-json\/wp\/v2\/categories?post=182096"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/support.questetra.com\/ja\/wp-json\/wp\/v2\/tags?post=182096"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}