<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "https://bugs.webkit.org/page.cgi?id=bugzilla.dtd">

<bugzilla version="5.0.4.1"
          urlbase="https://bugs.webkit.org/"
          
          maintainer="admin@webkit.org"
>

    <bug>
          <bug_id>22721</bug_id>
          
          <creation_ts>2008-12-07 03:21:34 -0800</creation_ts>
          <short_desc>Implement WorkerUtils.importScripts()</short_desc>
          <delta_ts>2009-03-10 02:45:23 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore JavaScript</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Enhancement</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Alexey Proskuryakov">ap</reporter>
          <assigned_to name="Oliver Hunt">oliver</assigned_to>
          <cc>levin</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>101726</commentid>
    <comment_count>0</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2008-12-07 03:21:34 -0800</bug_when>
    <thetext>This is a way to include external code in scripts running in Workers: &lt;http://www.whatwg.org/specs/web-workers/current-work/#importscripts&gt;.

Much of the groundwork necessary for this is common with XMLHttpRequest.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>101738</commentid>
    <comment_count>1</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2008-12-07 03:58:37 -0800</bug_when>
    <thetext>&lt;rdar://problem/6425807&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>112576</commentid>
    <comment_count>2</comment_count>
      <attachid>28358</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2009-03-06 06:55:39 -0800</bug_when>
    <thetext>Created attachment 28358
Initial pass at importScripts

Patcheration for fun and profit</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>112600</commentid>
    <comment_count>3</comment_count>
      <attachid>28358</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2009-03-06 09:21:41 -0800</bug_when>
    <thetext>Comment on attachment 28358
Initial pass at importScripts

I&apos;m getting an assertion failure on layout tests that is caused by this patch: in WorkerScriptController::evaluate(), reportException() is no longer protected with JSLock. This is harmless in release builds, though.

I&apos;m not sure if splitting evaluate() in two functions is necessary or helpful - can you just check exec-&gt;hadException() after each script?

-    if (comp.complType() == Throw)
-        reportException(exec, comp.value());

You&apos;ve removed complType() check - was that intentional?

+    operator bool() { return m_value; }

That&apos;s one very dangerous operator, can you avoid adding it?

+#include &quot;ScriptSourceCode.h&quot;
+#include &quot;WorkerImportScriptsClient.h&quot;
+#include &quot;ScriptValue.h&quot;

Keep them sorted? I guess that&apos;s result of a global rename.

+        if (!m_responseEncoding.isEmpty())
+            m_decoder = TextResourceDecoder::create(&quot;text/javascript&quot;, m_responseEncoding);
+        else
+            m_decoder = TextResourceDecoder::create(&quot;text/javascript&quot;, &quot;UTF-8&quot;);

This should really be document-&gt;encoding(), not &quot;UTF-8&quot;. That depends on bug 24150, which is in commit queue at the moment.

+    m_failed = true;

Tell the Web Inspector?

+        WorkerImportScriptsClient(ScriptExecutionContext* scriptExecutionContext, const String&amp; url, const String&amp; callerURL, int callerLineNumber)

As you are well aware, there are multiple instances in WebCore where we lack script URL and line info to properly return errors - unconditionally passing them around does not scale. Surely, solving this old problem is out of scope for this bug.

+        ScriptString m_script;

Do we really need to use ScriptString here? For XHR, it was needed because responses are sometimes huge - certainly it&apos;s not the case for importScripts().

I&apos;ve got enough comments to say r-, but this looks extremely good for an initial pass!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>112650</commentid>
    <comment_count>4</comment_count>
    <who name="Dmitry Titov">dimich</who>
    <bug_when>2009-03-06 13:35:52 -0800</bug_when>
    <thetext>&gt; +        if (!m_responseEncoding.isEmpty())
&gt; +            m_decoder = TextResourceDecoder::create(&quot;text/javascript&quot;,
&gt; m_responseEncoding);
&gt; +        else
&gt; +            m_decoder = TextResourceDecoder::create(&quot;text/javascript&quot;,
&gt; &quot;UTF-8&quot;);
&gt; 
&gt; This should really be document-&gt;encoding(), not &quot;UTF-8&quot;. That depends on bug
&gt; 24150, which is in commit queue at the moment.

bug 24150 is landed, and m_executionContext-&gt;encoding() would do the right thing here. It contains the encoding of the original document.
</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>112692</commentid>
    <comment_count>5</comment_count>
      <attachid>28382</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2009-03-06 19:25:03 -0800</bug_when>
    <thetext>Created attachment 28382
Updated patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>112693</commentid>
    <comment_count>6</comment_count>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2009-03-06 19:25:47 -0800</bug_when>
    <thetext>Second patch removes the same origin check on scripts as the spec has had those restrictions removed</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>112695</commentid>
    <comment_count>7</comment_count>
      <attachid>28383</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2009-03-06 21:10:05 -0800</bug_when>
    <thetext>Created attachment 28383
Updated patch #2

Updated to ToT so i could use ScriptExecutionContext::encoding()</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>112702</commentid>
    <comment_count>8</comment_count>
      <attachid>28383</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2009-03-06 23:49:46 -0800</bug_when>
    <thetext>Comment on attachment 28383
Updated patch #2

per whatwg ml discussion i have to update this for behaviour to match spec rather than firefox</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>112745</commentid>
    <comment_count>9</comment_count>
      <attachid>28393</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2009-03-07 16:22:58 -0800</bug_when>
    <thetext>Created attachment 28393
Updated to match firefox behaviour, as well as a little tidy up

Here we go</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>112805</commentid>
    <comment_count>10</comment_count>
      <attachid>28393</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2009-03-09 02:03:57 -0700</bug_when>
    <thetext>Comment on attachment 28393
Updated to match firefox behaviour, as well as a little tidy up

&gt; +        if (exec-&gt;hadException())
&gt; +            return jsNull();

Why return jsNull in exceptional case, but jsUndefined in normal one?

&gt; +    if (exception.jsValue())
&gt; +        reportException(m_workerContextWrapper-&gt;globalExec(), exception.jsValue());

This reportException() call still isn&apos;t explicitly protected with JSLock. Does anything guarantee that a lock will be held?

+        bool executionForbidden() const { return m_executionForbidden; }
     private:

This is not a nice function to add to public interface: since the flag is set from a different thread, you need to lock WorkerScriptController::m_sharedDataMutex in order for its value to be propagated to the current processor, and it&apos;s possible that the result will be stale by the time this lock is released. Is it really necessary to check this flag where you do? I&apos;m sure that the check before calling evaluate() can be removed, because this function does it internally, and I think that the loader will also handle his situation gracefully.

Also, we usually leave a blank line before &quot;private&quot;.

+#include &quot;config.h&quot;
+
+#include &quot;WorkerImportScriptsClient.h&quot;
+
+#include &quot;ScriptExecutionContext.h&quot;

There shouldn&apos;t be a blank line after config.h.

+void WorkerImportScriptsClient::didReceiveResponse(const ResourceResponse&amp; response)

So, importScripts has the same security model as &lt;script&gt;, right? Should we add a test to ensure that some future XHR refactoring doesn&apos;t accidentally enforce CORS restrictions on importScripts()?

Looks like the WHATWG discussion is still ongoing, so I hope that you won&apos;t mind me being nasty, and saying r- again. My main concerns are adding executionForbidden(), and missing JSLock.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>112806</commentid>
    <comment_count>11</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2009-03-09 02:13:42 -0700</bug_when>
    <thetext>Oh, and it looks like WorkerImportScriptsClient needs ENABLE(WORKERS) guards.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>112819</commentid>
    <comment_count>12</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2009-03-09 04:09:56 -0700</bug_when>
    <thetext>+    Vector&lt;KURL&gt; completedUrls;

And it&apos;s URLs, not Urls.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>112951</commentid>
    <comment_count>13</comment_count>
      <attachid>28425</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2009-03-09 22:10:50 -0700</bug_when>
    <thetext>Created attachment 28425
Implement importScripts, matching spec behaviour (which appears to be the consensus)

This updates the patch to match spec behaviour again (this appears to be the consensus from the whatwg list), and hopefully i&apos;ve addressed all of alexey&apos;s comments</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>112957</commentid>
    <comment_count>14</comment_count>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2009-03-09 22:54:54 -0700</bug_when>
    <thetext>In response to comments from dave_levin, i have removed the m_response field from WorkerImportScriptsClient as it was unnecessary</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>112965</commentid>
    <comment_count>15</comment_count>
      <attachid>28425</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2009-03-10 00:42:20 -0700</bug_when>
    <thetext>Comment on attachment 28425
Implement importScripts, matching spec behaviour (which appears to be the consensus)

You can test cross-origin loading better by loading one of the scripts from http://localhost:8000 (as http tests are loaded from http://127.0.0.1:8000).

Please add WorkerImportScriptsClient to non-Mac projects.

Still no JSLock in evaluate()? Per IRC discussion, it&apos;s just an unsaved file.

         virtual void resourceRetrievedByXMLHttpRequest(unsigned long identifier, const ScriptString&amp; sourceString) = 0;
-
+        virtual void scriptImported(unsigned long, const String&amp;) { ASSERT_NOT_REACHED(); }

Why is scriptImported() not a pure virtual function, like the above counterpart?

+        virtual void didFinishLoading(unsigned long /* identifier */);

No need to comment out the argument name in declaration.

&gt; In response to comments from dave_levin, i have removed the m_response field
&gt; from WorkerImportScriptsClient as it was unnecessary

A good point, it&apos;s unnecessary - but I still see it in the patch.

r=me, please consider the comments, especially fixing non-Mac builds.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>112969</commentid>
    <comment_count>16</comment_count>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2009-03-10 02:45:23 -0700</bug_when>
    <thetext>Committing to http://svn.webkit.org/repository/webkit/trunk ...
	M	LayoutTests/ChangeLog
	A	LayoutTests/http/tests/workers/resources/worker-importScripts-differentOrigin.js
	A	LayoutTests/http/tests/workers/resources/worker-importScripts-source1.js
	A	LayoutTests/http/tests/workers/resources/worker-importScripts-source2.js
	A	LayoutTests/http/tests/workers/resources/worker-importScripts-syntaxError.js
	A	LayoutTests/http/tests/workers/resources/worker-importScripts.js
	A	LayoutTests/http/tests/workers/worker-importScripts-expected.txt
	A	LayoutTests/http/tests/workers/worker-importScripts.html
	M	WebCore/ChangeLog
	M	WebCore/GNUmakefile.am
	M	WebCore/WebCore.vcproj/WebCore.vcproj
	M	WebCore/WebCore.xcodeproj/project.pbxproj
	M	WebCore/bindings/js/JSWorkerContextCustom.cpp
	M	WebCore/bindings/js/ScriptValue.h
	M	WebCore/bindings/js/WorkerScriptController.cpp
	M	WebCore/bindings/js/WorkerScriptController.h
	M	WebCore/dom/Document.cpp
	M	WebCore/dom/Document.h
	M	WebCore/dom/ScriptExecutionContext.h
	M	WebCore/inspector/InspectorController.cpp
	M	WebCore/inspector/InspectorController.h
	M	WebCore/inspector/InspectorResource.cpp
	M	WebCore/inspector/InspectorResource.h
	M	WebCore/workers/WorkerContext.cpp
	M	WebCore/workers/WorkerContext.h
	M	WebCore/workers/WorkerContext.idl
	A	WebCore/workers/WorkerImportScriptsClient.cpp
	A	WebCore/workers/WorkerImportScriptsClient.h
Committed r41549
</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>28358</attachid>
            <date>2009-03-06 06:55:39 -0800</date>
            <delta_ts>2009-03-06 19:25:03 -0800</delta_ts>
            <desc>Initial pass at importScripts</desc>
            <filename>importScripts.patch</filename>
            <type>text/plain</type>
            <size>29840</size>
            <attacher name="Oliver Hunt">oliver</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA3MGQxZDM2Li5mNmFkZjYzIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMDktMDMt
MDYgIE9saXZlciBIdW50ICA8b2xpdmVyQGFwcGxlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICA8cmRhcjovL3Byb2JsZW0vNjQyNTgwNz4gSW1w
bGVtZW50IFdvcmtlclV0aWxzLmltcG9ydFNjcmlwdHMoKQorICAgICAgICA8aHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNzIxPgorCisgICAgICAgIFRlc3RzIHRvIGNv
dmVyIHZhcmlvdXMgdXNhZ2VzIG9mIGltcG9ydFNjcmlwdHMsIGVnLiBuZXR3b3JrIGxvYWQKKyAg
ICAgICAgZmFpbHVyZXMsIHNlY3VyaXR5IGV4Y2VwdGlvbnMsIGV4ZWN1dGlvbiBvcmRlcmluZywg
ZXRjCisKKyAgICAgICAgKiBmYXN0L3dvcmtlcnMvcmVzb3VyY2VzL3dvcmtlci1pbXBvcnRTY3Jp
cHRzLXNvdXJjZTEuanM6IEFkZGVkLgorICAgICAgICAqIGZhc3Qvd29ya2Vycy9yZXNvdXJjZXMv
d29ya2VyLWltcG9ydFNjcmlwdHMtc291cmNlMi5qczogQWRkZWQuCisgICAgICAgICogZmFzdC93
b3JrZXJzL3Jlc291cmNlcy93b3JrZXItaW1wb3J0U2NyaXB0cy5qczogQWRkZWQuCisgICAgICAg
ICogZmFzdC93b3JrZXJzL3dvcmtlci1pbXBvcnRTY3JpcHRzLWV4cGVjdGVkLnR4dDogQWRkZWQu
CisgICAgICAgICogZmFzdC93b3JrZXJzL3dvcmtlci1pbXBvcnRTY3JpcHRzLmh0bWw6IEFkZGVk
LgorCiAyMDA5LTAzLTA1ICBTaW1vbiBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgog
CiAgICAgICAgIFJldmlld2VkIGJ5IERhdmUgSHlhdHQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2Zhc3Qvd29ya2Vycy9yZXNvdXJjZXMvd29ya2VyLWltcG9ydFNjcmlwdHMtc291cmNlMS5qcyBi
L0xheW91dFRlc3RzL2Zhc3Qvd29ya2Vycy9yZXNvdXJjZXMvd29ya2VyLWltcG9ydFNjcmlwdHMt
c291cmNlMS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xMGE4MDI4Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC93b3JrZXJzL3Jlc291cmNlcy93b3Jr
ZXItaW1wb3J0U2NyaXB0cy1zb3VyY2UxLmpzCkBAIC0wLDAgKzEsNiBAQAorbG9hZGVkU291cmNl
MSA9IHRydWU7Citwb3N0TWVzc2FnZSgiTG9hZGVkIHJlc291cmNlIDEiKTsKK2lmICh0aGlzLmZp
cnN0U2hvdWxkVGhyb3cpIHsKKyAgICBwb3N0TWVzc2FnZSgiRmlyc3QgcmVzb3VyY2UgdGhyb3dp
bmcgYW4gZXhjZXB0aW9uIik7CisgICAgdGhyb3cgIlRocm93biBieSBmaXJzdCByZXNvdXJjZSIK
K30KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qvd29ya2Vycy9yZXNvdXJjZXMvd29ya2Vy
LWltcG9ydFNjcmlwdHMtc291cmNlMi5qcyBiL0xheW91dFRlc3RzL2Zhc3Qvd29ya2Vycy9yZXNv
dXJjZXMvd29ya2VyLWltcG9ydFNjcmlwdHMtc291cmNlMi5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwLi40ZGM2M2JhCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
ZmFzdC93b3JrZXJzL3Jlc291cmNlcy93b3JrZXItaW1wb3J0U2NyaXB0cy1zb3VyY2UyLmpzCkBA
IC0wLDAgKzEsOCBAQAoraWYgKCFsb2FkZWRTb3VyY2UxKQorICAgIHBvc3RNZXNzYWdlKCJSZXNv
dXJjZSAyIGxvYWRlZCBiZWZvcmUgcmVzb3VyY2UgMSIpOworbG9hZGVkU291cmNlMiA9IHRydWU7
Citwb3N0TWVzc2FnZSgiTG9hZGVkIHNvdXJjZSAyIik7CitpZiAodGhpcy5zZWNvbmRTaG91bGRU
aHJvdykgeworICAgIHBvc3RNZXNzYWdlKCJTZWNvbmQgcmVzb3VyY2UgdGhyb3dpbmcgYW4gZXhj
ZXB0aW9uIik7CisgICAgdGhyb3cgIlRocm93biBieSBzZWNvbmQgcmVzb3VyY2UiOworfQpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC93b3JrZXJzL3Jlc291cmNlcy93b3JrZXItaW1wb3J0
U2NyaXB0cy5qcyBiL0xheW91dFRlc3RzL2Zhc3Qvd29ya2Vycy9yZXNvdXJjZXMvd29ya2VyLWlt
cG9ydFNjcmlwdHMuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDc1N2Ez
ZQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3Qvd29ya2Vycy9yZXNvdXJjZXMv
d29ya2VyLWltcG9ydFNjcmlwdHMuanMKQEAgLTAsMCArMSwxMTYgQEAKK3RyeSB7Citwb3N0TWVz
c2FnZSgiVGVzdCBzdGFydGVkLiIpOworCitpbXBvcnRTY3JpcHRzKCk7Citwb3N0TWVzc2FnZSgi
UEFTUzogaW1wb3J0U2NyaXB0cygpLCBleGlzdHMsIGlzIGEgZnVuY3Rpb24sIGFuZCBkb2Vzbid0
IHRocm93IHdoZW4gbm90IGdpdmVuIGFueSBhcmd1bWVudHMiKTsKKworcG9zdE1lc3NhZ2UoIlRl
c3RpbmcgZGlmZmVyZW50IG9yaWdpbiIpOwordmFyIGRpZmZlcmVudE9yaWdpbiA9ICJkYXRhOnRl
eHQvamF2YXNjcmlwdCxwb3N0TWVzc2FnZSgnRkFJTDogbG9hZGVkIHNjcmlwdCBmcm9tIGRpZmZl
cmVudCBvcmlnaW4nKSI7Cit0cnkgeworICAgIGltcG9ydFNjcmlwdHMoZGlmZmVyZW50T3JpZ2lu
KQorfSBjYXRjaChlKSB7CisgICAgcG9zdE1lc3NhZ2UoIlBBU1M6IFRocmV3ICIgKyBlICsgIiB3
aGVuIGF0dGVtcHRpbmcgY3Jvc3Mgb3JpZ2luIGxvYWQiKTsKK30KKwordmFyIHNvdXJjZTEgPSAi
d29ya2VyLWltcG9ydFNjcmlwdHMtc291cmNlMS5qcyI7Cit2YXIgc291cmNlMiA9ICJ3b3JrZXIt
aW1wb3J0U2NyaXB0cy1zb3VyY2UyLmpzIjsKK3ZhciBmYWtlU291cmNlID0gIm5vbmV4aXN0YW50
IjsKK3ZhciBsb2FkZWRTb3VyY2UxID0gZmFsc2U7Cit2YXIgbG9hZGVkU291cmNlMiA9IGZhbHNl
OworCitwb3N0TWVzc2FnZSgiVGVzdGluZyBzaW5nbGUgYXJndW1lbnQ6Iik7CitpbXBvcnRTY3Jp
cHRzKHNvdXJjZTEpCitpZiAobG9hZGVkU291cmNlMSkKKyAgICBwb3N0TWVzc2FnZSgiUEFTUzog
bG9hZGVkIGZpcnN0IHNvdXJjZSIpOworZWxzZQorICAgIHBvc3RNZXNzYWdlKCJGQUlMOiBkaWQg
bm90IGxvYWQgZmlyc3Qgc291cmNlIik7CisKK2xvYWRlZFNvdXJjZTEgPSBmYWxzZTsKK2xvYWRl
ZFNvdXJjZTIgPSBmYWxzZTsKKworcG9zdE1lc3NhZ2UoIlRlc3RpbmcgbXVsdGlwbGUgYXJndW1l
bnRzOiIpOworaW1wb3J0U2NyaXB0cyhzb3VyY2UxLCBzb3VyY2UyKTsKK2lmIChsb2FkZWRTb3Vy
Y2UxICYmIGxvYWRlZFNvdXJjZTIpCisgICAgcG9zdE1lc3NhZ2UoIlBBU1M6IEJvdGggc291cmNl
cyBsb2FkZWQgYW5kIGV4ZWN1dGVkLiIpOworZWxzZQorICAgIHBvc3RNZXNzYWdlKCJGQUlMOiBu
b3QgYWxsIHNvdXJjZXMgd2VyZSBsb2FkZWQiKTsKKworbG9hZGVkU291cmNlMSA9IGZhbHNlOwor
bG9hZGVkU291cmNlMiA9IGZhbHNlOworCitwb3N0TWVzc2FnZSgiVGVzdGluZyBtdWx0aXBsZSBh
cmd1bWVudHMgKGRpZmZlcmVudCBvcmRlcik6Iik7CitpbXBvcnRTY3JpcHRzKHNvdXJjZTIsIHNv
dXJjZTEpOworaWYgKGxvYWRlZFNvdXJjZTEgJiYgbG9hZGVkU291cmNlMikKKyAgICBwb3N0TWVz
c2FnZSgiUEFTUzogQm90aCBzb3VyY2VzIGxvYWRlZCBhbmQgZXhlY3V0ZWQuIik7CitlbHNlCisg
ICAgcG9zdE1lc3NhZ2UoIkZBSUw6IG5vdCBhbGwgc291cmNlcyB3ZXJlIGxvYWRlZCIpOworCits
b2FkZWRTb3VyY2UxID0gZmFsc2U7Citsb2FkZWRTb3VyY2UyID0gZmFsc2U7CisKK3Bvc3RNZXNz
YWdlKCJUZXN0aW5nIG11bHRpcGxlIGFyZ3VtZW50cywgd2l0aCBkaWZmZXJlbnQgb3JpZ2luIGZv
ciBvbmUgYXJndW1lbnQ6Iik7Cit0cnkgeworICAgIGltcG9ydFNjcmlwdHMoc291cmNlMSwgZGlm
ZmVyZW50T3JpZ2luLCBzb3VyY2UyKTsKK30gY2F0Y2goZSkgeworICAgIHBvc3RNZXNzYWdlKCJQ
QVNTOiBUaHJldyAiICsgZSArICIgd2hlbiBhdHRlbXB0IGNyb3NzIG9yaWdpbiBsb2FkIik7Cit9
CitpZiAoIWxvYWRlZFNvdXJjZTEgJiYgIWxvYWRlZFNvdXJjZTIpCisgICAgcG9zdE1lc3NhZ2Uo
IlBBU1M6IE5laXRoZXIgJ3NhZmUnIHNvdXJjZSB3YXMgZXhlY3V0ZWQuIik7CitlbHNlCisgICAg
cG9zdE1lc3NhZ2UoIkZBSUw6IFNvbWUgcmVzb3VyY2VzIHdlcmUgbG9hZGVkIGluIHNwaXRlIG9m
IHRoZSBvcmlnaW4gZmFpbHVyZSIpOworCitsb2FkZWRTb3VyY2UxID0gZmFsc2U7Citsb2FkZWRT
b3VyY2UyID0gZmFsc2U7CisKK3RyeSB7CisgICAgaW1wb3J0U2NyaXB0cyhzb3VyY2UxLCBmYWtl
U291cmNlLCBzb3VyY2UyKTsKK30gY2F0Y2goZSkgeworICAgIHBvc3RNZXNzYWdlKCJQQVNTOiBU
aHJldyAiICsgZSArICIgd2hlbiBsb2FkIGZhaWxlZCIpOworfQoraWYgKCFsb2FkZWRTb3VyY2Ux
ICYmICFsb2FkZWRTb3VyY2UyKQorICAgIHBvc3RNZXNzYWdlKCJQQVNTOiBOb3RoaW5nIHdhcyBl
eGVjdXRlZCB3aGVuIG5ldHdvcmsgZXJyb3Igb2NjdXJyZWQuIik7CitlbHNlCisgICAgcG9zdE1l
c3NhZ2UoIkZBSUw6IHNvbWUgcmVzb3VyY2VzIHdlcmUgbG9hZGVkIGRlc2l0ZSB0aGUgbmV0d29y
ayBlcnJvciIpOworCitsb2FkZWRTb3VyY2UxID0gZmFsc2U7Citsb2FkZWRTb3VyY2UyID0gZmFs
c2U7CisKK3Bvc3RNZXNzYWdlKCJUZXN0aW5nIG11bHRpcGxlIGFyZ3VtZW50cywgd2l0aCBmaXJz
dCByZXNvdXJjZSB0aHJvd2luZyBhbiBleGNlcHRpb246Iik7CitmaXJzdFNob3VsZFRocm93ID0g
dHJ1ZTsKK3RyeSB7CisgICAgaW1wb3J0U2NyaXB0cyhzb3VyY2UxLCBzb3VyY2UyKTsKK30gY2F0
Y2goZSkgeworICAgIHBvc3RNZXNzYWdlKCJQQVNTOiBQcm9wYWdhdGVkICciICsgZSArICInIGZy
b20gc2NyaXB0Iik7Cit9CitmaXJzdFNob3VsZFRocm93ID0gZmFsc2U7CitpZiAobG9hZGVkU291
cmNlMSAmJiAhbG9hZGVkU291cmNlMikKKyAgICBwb3N0TWVzc2FnZSgiUEFTUzogRmlyc3QgcmVz
b3VyY2Ugd2FzIGV4ZWN1dGVkLCBhbmQgc2Vjb25kIHJlc291cmNlIHdhcyBub3QiKTsKK2Vsc2Ug
aWYgKGxvYWRlZFNvdXJjZTIpCisgICAgcG9zdE1lc3NhZ2UoIkZBSUw6IFNlY29uZCByZXNvdXJj
ZSB3YXMgZXhlY3V0ZWQiKTsKK2Vsc2UKKyAgICBwb3N0TWVzc2FnZSgiRkFJTDogZmlyc3QgcmVz
b3VyY2UgZGlkIG5vdCBleGVjdXRlIGNvcnJlY3RseSIpOworCitsb2FkZWRTb3VyY2UxID0gZmFs
c2U7Citsb2FkZWRTb3VyY2UyID0gZmFsc2U7CisKK3Bvc3RNZXNzYWdlKCJUZXN0aW5nIG11bHRp
cGxlIGFyZ3VtZW50cywgd2l0aCBzZWNvbmQgcmVzb3VyY2UgdGhyb3dpbmcgYW4gZXhjZXB0aW9u
OiIpOworc2Vjb25kU2hvdWxkVGhyb3cgPSB0cnVlOwordHJ5IHsKKyAgICBpbXBvcnRTY3JpcHRz
KHNvdXJjZTEsIHNvdXJjZTIpOworfSBjYXRjaChlKSB7CisgICAgcG9zdE1lc3NhZ2UoIlBBU1M6
IFByb3BhZ2F0ZWQgJyIgKyBlICsgIicgZnJvbSBzY3JpcHQiKTsKK30KK3NlY29uZFNob3VsZFRo
cm93ID0gZmFsc2U7CitpZiAobG9hZGVkU291cmNlMSAmJiBsb2FkZWRTb3VyY2UyKQorICAgIHBv
c3RNZXNzYWdlKCJQQVNTOiBCb3RoIHNjcmlwdHMgd2VyZSBleGVjdXRlZCIpOworZWxzZQorICAg
IHBvc3RNZXNzYWdlKCJGQUlMOiBzY3JpcHRzIGRpZCBub3QgZXhlY3V0ZSBjb3JyZWN0bHkiKTsK
KworbG9hZGVkU291cmNlMSA9IGZhbHNlOworbG9hZGVkU291cmNlMiA9IGZhbHNlOworCit9IGNh
dGNoKGUpIHsKKyAgICBwb3N0TWVzc2FnZSgiRkFJTDogVW5leHBlY3RlZCBleGNlcHRpb246ICIg
KyBlKTsKK30gZmluYWxseSB7CisgICAgcG9zdE1lc3NhZ2UoIkRPTkUiKTsKK30KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2Zhc3Qvd29ya2Vycy93b3JrZXItaW1wb3J0U2NyaXB0cy1leHBlY3Rl
ZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L3dvcmtlcnMvd29ya2VyLWltcG9ydFNjcmlwdHMtZXhw
ZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY1ZDkyYTIKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3dvcmtlcnMvd29ya2VyLWltcG9ydFNj
cmlwdHMtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMzYgQEAKK1Rlc3QgaW1wb3J0U2NyaXB0cy4K
KworVGVzdCBzdGFydGVkLgorUEFTUzogaW1wb3J0U2NyaXB0cygpLCBleGlzdHMsIGlzIGEgZnVu
Y3Rpb24sIGFuZCBkb2Vzbid0IHRocm93IHdoZW4gbm90IGdpdmVuIGFueSBhcmd1bWVudHMKK1Rl
c3RpbmcgZGlmZmVyZW50IG9yaWdpbgorUEFTUzogVGhyZXcgRXJyb3I6IFNFQ1VSSVRZX0VSUjog
RE9NIEV4Y2VwdGlvbiAxOCB3aGVuIGF0dGVtcHRpbmcgY3Jvc3Mgb3JpZ2luIGxvYWQKK1Rlc3Rp
bmcgc2luZ2xlIGFyZ3VtZW50OgorTG9hZGVkIHJlc291cmNlIDEKK1BBU1M6IGxvYWRlZCBmaXJz
dCBzb3VyY2UKK1Rlc3RpbmcgbXVsdGlwbGUgYXJndW1lbnRzOgorTG9hZGVkIHJlc291cmNlIDEK
K0xvYWRlZCBzb3VyY2UgMgorUEFTUzogQm90aCBzb3VyY2VzIGxvYWRlZCBhbmQgZXhlY3V0ZWQu
CitUZXN0aW5nIG11bHRpcGxlIGFyZ3VtZW50cyAoZGlmZmVyZW50IG9yZGVyKToKK1Jlc291cmNl
IDIgbG9hZGVkIGJlZm9yZSByZXNvdXJjZSAxCitMb2FkZWQgc291cmNlIDIKK0xvYWRlZCByZXNv
dXJjZSAxCitQQVNTOiBCb3RoIHNvdXJjZXMgbG9hZGVkIGFuZCBleGVjdXRlZC4KK1Rlc3Rpbmcg
bXVsdGlwbGUgYXJndW1lbnRzLCB3aXRoIGRpZmZlcmVudCBvcmlnaW4gZm9yIG9uZSBhcmd1bWVu
dDoKK1BBU1M6IFRocmV3IEVycm9yOiBTRUNVUklUWV9FUlI6IERPTSBFeGNlcHRpb24gMTggd2hl
biBhdHRlbXB0IGNyb3NzIG9yaWdpbiBsb2FkCitQQVNTOiBOZWl0aGVyICdzYWZlJyBzb3VyY2Ug
d2FzIGV4ZWN1dGVkLgorUEFTUzogVGhyZXcgRXJyb3I6IE5FVFdPUktfRVJSOiBYTUxIdHRwUmVx
dWVzdCBFeGNlcHRpb24gMTAxIHdoZW4gbG9hZCBmYWlsZWQKK1BBU1M6IE5vdGhpbmcgd2FzIGV4
ZWN1dGVkIHdoZW4gbmV0d29yayBlcnJvciBvY2N1cnJlZC4KK1Rlc3RpbmcgbXVsdGlwbGUgYXJn
dW1lbnRzLCB3aXRoIGZpcnN0IHJlc291cmNlIHRocm93aW5nIGFuIGV4Y2VwdGlvbjoKK0xvYWRl
ZCByZXNvdXJjZSAxCitGaXJzdCByZXNvdXJjZSB0aHJvd2luZyBhbiBleGNlcHRpb24KK1BBU1M6
IFByb3BhZ2F0ZWQgJ1Rocm93biBieSBmaXJzdCByZXNvdXJjZScgZnJvbSBzY3JpcHQKK1BBU1M6
IEZpcnN0IHJlc291cmNlIHdhcyBleGVjdXRlZCwgYW5kIHNlY29uZCByZXNvdXJjZSB3YXMgbm90
CitUZXN0aW5nIG11bHRpcGxlIGFyZ3VtZW50cywgd2l0aCBzZWNvbmQgcmVzb3VyY2UgdGhyb3dp
bmcgYW4gZXhjZXB0aW9uOgorTG9hZGVkIHJlc291cmNlIDEKK0xvYWRlZCBzb3VyY2UgMgorU2Vj
b25kIHJlc291cmNlIHRocm93aW5nIGFuIGV4Y2VwdGlvbgorUEFTUzogUHJvcGFnYXRlZCAnVGhy
b3duIGJ5IHNlY29uZCByZXNvdXJjZScgZnJvbSBzY3JpcHQKK1BBU1M6IEJvdGggc2NyaXB0cyB3
ZXJlIGV4ZWN1dGVkCitET05FCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qvd29ya2Vy
cy93b3JrZXItaW1wb3J0U2NyaXB0cy5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC93b3JrZXJzL3dv
cmtlci1pbXBvcnRTY3JpcHRzLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MC4uZjcwYTQ1NgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3Qvd29ya2Vycy93
b3JrZXItaW1wb3J0U2NyaXB0cy5odG1sCkBAIC0wLDAgKzEsMjQgQEAKKzxib2R5PgorPHA+VGVz
dCBpbXBvcnRTY3JpcHRzLjwvcD4KKzxkaXYgaWQ9cmVzdWx0PjwvZGl2PgorPHNjcmlwdD4KK2Z1
bmN0aW9uIGxvZyhtZXNzYWdlKQoreworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZXN1
bHQiKS5pbm5lckhUTUwgKz0gbWVzc2FnZSArICI8YnI+IjsKK30KKworaWYgKHdpbmRvdy5sYXlv
dXRUZXN0Q29udHJvbGxlcikgeworICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQo
KTsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7Cit9CisKK3ZhciB3
b3JrZXIgPSBuZXcgV29ya2VyKCdyZXNvdXJjZXMvd29ya2VyLWltcG9ydFNjcmlwdHMuanMnKTsK
Kword29ya2VyLm9ubWVzc2FnZSA9IGZ1bmN0aW9uKGV2dCkgeworICAgIGxvZyhldnQuZGF0YSk7
CisgICAgaWYgKGV2dC5kYXRhID09ICJET05FIiAmJiB3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xs
ZXIpCisgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKK30KKzwvc2Ny
aXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9DaGFuZ2VMb2cgYi9X
ZWJDb3JlL0NoYW5nZUxvZwppbmRleCAyYTU3YjRmLi41N2ZhMGFkIDEwMDY0NAotLS0gYS9XZWJD
b3JlL0NoYW5nZUxvZworKysgYi9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ1IEBACisy
MDA5LTAzLTA2ICBPbGl2ZXIgSHVudCAgPG9saXZlckBhcHBsZS5jb20+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzY0MjU4
MDc+IEltcGxlbWVudCBXb3JrZXJVdGlscy5pbXBvcnRTY3JpcHRzKCkKKyAgICAgICAgPGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjcyMT4KKworICAgICAgICBJbXBs
ZW1lbnQgaW1wb3J0U2NyaXB0cywgY3VycmVudGx5IHVzZXMgYSBzZXJpZXMgb2Ygc3luY2hyb25v
dXMgbG9hZHMKKyAgICAgICAgdG8gZmV0Y2ggdGhlIHNjcmlwdHMsIGJ1dCB0aGlzIGlzIHNpbXBs
ZXIgdGhhbiBhIHN5bmNocm9ub3VzIGxvYWQgb2YKKyAgICAgICAgbXVsdGlwbGUgbG9hZHMgaW4g
cGFyYWxsZWwuICBJbiBmdXR1cmUgd2UnbGwgd2FudCB0byBzd2l0Y2ggdG8gcGFyYWxsZWwKKyAg
ICAgICAgbG9hZGluZywgYnV0IHRoaXMgd2lsbCBkbyBmb3Igbm93LgorCisgICAgICAgIFRlc3Q6
IGZhc3Qvd29ya2Vycy93b3JrZXItaW1wb3J0U2NyaXB0cy5odG1sCisKKyAgICAgICAgKiBXZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogYmluZGluZ3MvanMvSlNX
b3JrZXJDb250ZXh0Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTV29ya2VyQ29udGV4
dDo6aW1wb3J0U2NyaXB0cyk6CisgICAgICAgICogYmluZGluZ3MvanMvU2NyaXB0U3RyaW5nLmg6
CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRTdHJpbmc6OnRvU3RyaW5nKToKKyAgICAgICAgKiBi
aW5kaW5ncy9qcy9TY3JpcHRWYWx1ZS5oOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0VmFsdWU6
Om9wZXJhdG9yIGJvb2wpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1dvcmtlclNjcmlwdENvbnRy
b2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyU2NyaXB0Q29udHJvbGxlcjo6ZXZh
bHVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyU2NyaXB0Q29udHJvbGxlcjo6c2V0RXhj
ZXB0aW9uKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9Xb3JrZXJTY3JpcHRDb250cm9sbGVyLmg6
CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJTY3JpcHRDb250cm9sbGVyOjpleGVjdXRpb25Gb3Ji
aWRkZW4pOgorICAgICAgICAqIHdvcmtlcnMvV29ya2VyQ29udGV4dC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpXb3JrZXJDb250ZXh0OjppbXBvcnRTY3JpcHRzKToKKyAgICAgICAgKiB3b3JrZXJz
L1dvcmtlckNvbnRleHQuaDoKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtlckNvbnRleHQuaWRsOgor
ICAgICAgICAqIHdvcmtlcnMvV29ya2VySW1wb3J0U2NyaXB0c0NsaWVudC5jcHA6IEFkZGVkLgor
ICAgICAgICAoV2ViQ29yZTo6V29ya2VySW1wb3J0U2NyaXB0c0NsaWVudDo6ZGlkUmVjZWl2ZVJl
c3BvbnNlKToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlckltcG9ydFNjcmlwdHNDbGllbnQ6OmRp
ZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlckltcG9ydFNjcmlwdHNDbGll
bnQ6OmRpZEZpbmlzaExvYWRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VySW1wb3J0U2Ny
aXB0c0NsaWVudDo6ZGlkRmFpbCk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJJbXBvcnRTY3Jp
cHRzQ2xpZW50OjpkaWRGYWlsUmVkaXJlY3RDaGVjayk6CisgICAgICAgIChXZWJDb3JlOjpXb3Jr
ZXJJbXBvcnRTY3JpcHRzQ2xpZW50OjpkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DYW5jZWxsYXRp
b24pOgorICAgICAgICAqIHdvcmtlcnMvV29ya2VySW1wb3J0U2NyaXB0c0NsaWVudC5oOiBBZGRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OldvcmtlckltcG9ydFNjcmlwdHNDbGllbnQ6Oldvcmtlcklt
cG9ydFNjcmlwdHNDbGllbnQpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VySW1wb3J0U2NyaXB0
c0NsaWVudDo6c2NyaXB0KToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlckltcG9ydFNjcmlwdHND
bGllbnQ6OmZhaWxlZCk6CisKIDIwMDktMDMtMDUgIEplcmVteSBNb3Nrb3ZpY2ggIDxqZXJlbXlA
Y2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IFNpbW9uIEZyYXNlci4KZGlmZiAt
LWdpdCBhL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvV2ViQ29y
ZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggYjUwZWI4MC4uMWJkNzIy
ZCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
KysrIGIvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTIxNTMs
NiArMjE1Myw4IEBACiAJCUE3RDAzMThFMEU5MzU0MDMwMEUyNEFDRCAvKiBKU0ltYWdlRGF0YUN1
c3RvbS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBB
N0QwMzE4RDBFOTM1NDAzMDBFMjRBQ0QgLyogSlNJbWFnZURhdGFDdXN0b20uY3BwICovOyB9Owog
CQlBN0QyN0ZDNDBFMEE1OTlGMDA3OUFEMkIgLyogU1ZHRkVUaWxlLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3RDI3RkMzMEUwQTU5OUYwMDc5QUQy
QiAvKiBTVkdGRVRpbGUuY3BwICovOyB9OwogCQlBN0QzQzUyNDBCNTc2QjRCMDAyQ0E0NTAgLyog
UGFzdGVib2FyZEhlbHBlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQTdEM0M1MjMwQjU3NkI0QjAwMkNBNDUwIC8qIFBhc3RlYm9hcmRIZWxwZXIuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlBN0Q2QjM0
OTBGNjExMDQ1MDBCNzlGRDEgLyogV29ya2VySW1wb3J0U2NyaXB0c0NsaWVudC5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTdENkIzNDcwRjYxMTA0NTAw
Qjc5RkQxIC8qIFdvcmtlckltcG9ydFNjcmlwdHNDbGllbnQuaCAqLzsgfTsKKwkJQTdENkIzNEEw
RjYxMTA0NTAwQjc5RkQxIC8qIFdvcmtlckltcG9ydFNjcmlwdHNDbGllbnQuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTdENkIzNDgwRjYxMTA0NTAw
Qjc5RkQxIC8qIFdvcmtlckltcG9ydFNjcmlwdHNDbGllbnQuY3BwICovOyB9OwogCQlBODA5RjE0
NzBCNzM3OTNBMDAyRTREN0YgLyogUmVuZGVyU1ZHR3JhZGllbnRTdG9wLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBODA5RjE0NTBCNzM3OTNBMDAyRTRE
N0YgLyogUmVuZGVyU1ZHR3JhZGllbnRTdG9wLmggKi87IH07CiAJCUE4MDlGMTQ4MEI3Mzc5M0Iw
MDJFNEQ3RiAvKiBSZW5kZXJTVkdHcmFkaWVudFN0b3AuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTgwOUYxNDYwQjczNzkzQTAwMkU0RDdGIC8qIFJl
bmRlclNWR0dyYWRpZW50U3RvcC5jcHAgKi87IH07CiAJCUE4MDlGMUFBMEI3MzdGQjYwMDJFNEQ3
RiAvKiBSZW5kZXJTVkdIaWRkZW5Db250YWluZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE4MDlGMUE4MEI3MzdGQjYwMDJFNEQ3RiAvKiBSZW5kZXJT
VkdIaWRkZW5Db250YWluZXIuaCAqLzsgfTsKQEAgLTcwNjQsNiArNzA2Niw4IEBACiAJCUE3RDAz
MThEMEU5MzU0MDMwMEUyNEFDRCAvKiBKU0ltYWdlRGF0YUN1c3RvbS5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0ltYWdlRGF0YUN1c3RvbS5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE3RDI3RkMzMEUwQTU5OUYwMDc5QUQyQiAvKiBTVkdGRVRp
bGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU1ZHRkVUaWxlLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTdEM0M1MjMwQjU3NkI0QjAwMkNBNDUw
IC8qIFBhc3RlYm9hcmRIZWxwZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
UGFzdGVib2FyZEhlbHBlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBN0Q2QjM0
NzBGNjExMDQ1MDBCNzlGRDEgLyogV29ya2VySW1wb3J0U2NyaXB0c0NsaWVudC5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBXb3JrZXJJbXBvcnRTY3JpcHRzQ2xpZW50Lmg7IHBh
dGggPSB3b3JrZXJzL1dvcmtlckltcG9ydFNjcmlwdHNDbGllbnQuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJQTdENkIzNDgwRjYxMTA0NTAwQjc5RkQxIC8qIFdvcmtlckltcG9ydFNj
cmlwdHNDbGllbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gV29y
a2VySW1wb3J0U2NyaXB0c0NsaWVudC5jcHA7IHBhdGggPSB3b3JrZXJzL1dvcmtlckltcG9ydFNj
cmlwdHNDbGllbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBODA5RjE0NTBC
NzM3OTNBMDAyRTREN0YgLyogUmVuZGVyU1ZHR3JhZGllbnRTdG9wLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFJlbmRlclNWR0dyYWRpZW50U3RvcC5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlBODA5RjE0NjBCNzM3OTNBMDAyRTREN0YgLyogUmVuZGVyU1ZHR3Jh
ZGllbnRTdG9wLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbmRl
clNWR0dyYWRpZW50U3RvcC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE4MDlG
MUE4MEI3MzdGQjYwMDJFNEQ3RiAvKiBSZW5kZXJTVkdIaWRkZW5Db250YWluZXIuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVuZGVyU1ZHSGlkZGVuQ29udGFpbmVyLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC05Nzg0LDYgKzk3ODgsOCBAQAogCQkJCTJFNDM0
NjQxMEY1NDZBODIwMEIwRjFCQSAvKiBXb3JrZXJSdW5Mb29wLmggKi8sCiAJCQkJMkU0MzQ2NDIw
RjU0NkE4MjAwQjBGMUJBIC8qIFdvcmtlclRocmVhZC5jcHAgKi8sCiAJCQkJMkU0MzQ2NDMwRjU0
NkE4MjAwQjBGMUJBIC8qIFdvcmtlclRocmVhZC5oICovLAorCQkJCUE3RDZCMzQ3MEY2MTEwNDUw
MEI3OUZEMSAvKiBXb3JrZXJJbXBvcnRTY3JpcHRzQ2xpZW50LmggKi8sCisJCQkJQTdENkIzNDgw
RjYxMTA0NTAwQjc5RkQxIC8qIFdvcmtlckltcG9ydFNjcmlwdHNDbGllbnQuY3BwICovLAogCQkJ
KTsKIAkJCW5hbWUgPSB3b3JrZXJzOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKQEAgLTE2
ODQ1LDYgKzE2ODUxLDcgQEAKIAkJCQk0MUYwNjE4RTBGNUYwNjk4MDBBMDdFQUMgLyogQ29uc29s
ZU1lc3NhZ2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTQxRjA2MjAxMEY1RjBCNjYwMEEwN0VBQyAv
KiBJbnNwZWN0b3JSZXNvdXJjZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDFGMDYyMTQwRjVGMTky
NjAwQTA3RUFDIC8qIEluc3BlY3RvckRhdGFiYXNlUmVzb3VyY2UuaCBpbiBIZWFkZXJzICovLAor
CQkJCUE3RDZCMzQ5MEY2MTEwNDUwMEI3OUZEMSAvKiBXb3JrZXJJbXBvcnRTY3JpcHRzQ2xpZW50
LmggaW4gSGVhZGVycyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9j
ZXNzaW5nID0gMDsKIAkJfTsKQEAgLTE4ODM5LDYgKzE4ODQ2LDcgQEAKIAkJCQk0MUYwNjE4RjBG
NUYwNjk4MDBBMDdFQUMgLyogQ29uc29sZU1lc3NhZ2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
NDFGMDYyMDIwRjVGMEI2NjAwQTA3RUFDIC8qIEluc3BlY3RvclJlc291cmNlLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTQxRjA2MjE1MEY1RjE5MjYwMEEwN0VBQyAvKiBJbnNwZWN0b3JEYXRhYmFz
ZVJlc291cmNlLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUE3RDZCMzRBMEY2MTEwNDUwMEI3OUZE
MSAvKiBXb3JrZXJJbXBvcnRTY3JpcHRzQ2xpZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJKTsK
IAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpkaWZmIC0t
Z2l0IGEvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dvcmtlckNvbnRleHRDdXN0b20uY3BwIGIvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU1dvcmtlckNvbnRleHRDdXN0b20uY3BwCmluZGV4IGMzZWY5YzEu
LjFkNDhjM2EgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXb3JrZXJDb250ZXh0
Q3VzdG9tLmNwcAorKysgYi9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV29ya2VyQ29udGV4dEN1c3Rv
bS5jcHAKQEAgLTMzLDYgKzMzLDcgQEAKICNpbmNsdWRlICJKU0V2ZW50TGlzdGVuZXIuaCIKICNp
bmNsdWRlICJTY2hlZHVsZWRBY3Rpb24uaCIKICNpbmNsdWRlICJXb3JrZXJDb250ZXh0LmgiCisj
aW5jbHVkZSA8aW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuaD4KIAogdXNpbmcgbmFtZXNwYWNlIEpT
QzsKIApAQCAtNzYsNiArNzcsMjkgQEAgdm9pZCBKU1dvcmtlckNvbnRleHQ6OnNldFNlbGYoRXhl
Y1N0YXRlKiBleGVjLCBKU1ZhbHVlUHRyIHZhbHVlKQogICAgIHB1dERpcmVjdChJZGVudGlmaWVy
KGV4ZWMsICJzZWxmIiksIHZhbHVlKTsKIH0KIAorSlNWYWx1ZVB0ciBKU1dvcmtlckNvbnRleHQ6
OmltcG9ydFNjcmlwdHMoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBBcmdMaXN0JiBhcmdzKQorewor
ICAgIGlmICghYXJncy5zaXplKCkpCisgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOworCisg
ICAgVmVjdG9yPFN0cmluZz4gdXJsczsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgYXJn
cy5zaXplKCk7IGkrKykgeworICAgICAgICB1cmxzLmFwcGVuZChhcmdzLmF0KGV4ZWMsIGkpLnRv
U3RyaW5nKGV4ZWMpKTsKKyAgICAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQorICAgICAg
ICAgICAgcmV0dXJuIGpzTnVsbCgpOworICAgIH0KKyAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsK
KyAgICBpbnQgc2lnbmVkTGluZU51bWJlcjsKKyAgICBpbnRwdHJfdCBzb3VyY2VJRDsKKyAgICBV
U3RyaW5nIHNvdXJjZVVSTDsKKyAgICBKU1ZhbHVlUHRyIGZ1bmN0aW9uOworICAgIGV4ZWMtPmlu
dGVycHJldGVyKCktPnJldHJpZXZlTGFzdENhbGxlcihleGVjLCBzaWduZWRMaW5lTnVtYmVyLCBz
b3VyY2VJRCwgc291cmNlVVJMLCBmdW5jdGlvbik7CisKKyAgICBpbXBsKCktPmltcG9ydFNjcmlw
dHModXJscywgc291cmNlVVJMLCBzaWduZWRMaW5lTnVtYmVyID49IDAgPyBzaWduZWRMaW5lTnVt
YmVyIDogMCwgZWMpOworICAgIHNldERPTUV4Y2VwdGlvbihleGVjLCBlYyk7CisgICAgcmV0dXJu
IGpzVW5kZWZpbmVkKCk7Cit9CisKIEpTVmFsdWVQdHIgSlNXb3JrZXJDb250ZXh0OjphZGRFdmVu
dExpc3RlbmVyKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgQXJnTGlzdCYgYXJncykKIHsKICAgICBS
ZWZQdHI8SlNVbnByb3RlY3RlZEV2ZW50TGlzdGVuZXI+IGxpc3RlbmVyID0gZmluZE9yQ3JlYXRl
SlNVbnByb3RlY3RlZEV2ZW50TGlzdGVuZXIoZXhlYywgYXJncy5hdChleGVjLCAxKSk7CmRpZmYg
LS1naXQgYS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdFN0cmluZy5oIGIvV2ViQ29yZS9iaW5k
aW5ncy9qcy9TY3JpcHRTdHJpbmcuaAppbmRleCA2ZGFiOWEwLi4wMzQzNDk1IDEwMDY0NAotLS0g
YS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdFN0cmluZy5oCisrKyBiL1dlYkNvcmUvYmluZGlu
Z3MvanMvU2NyaXB0U3RyaW5nLmgKQEAgLTQ2LDYgKzQ2LDggQEAgcHVibGljOgogCiAgICAgb3Bl
cmF0b3IgSlNDOjpVU3RyaW5nKCkgY29uc3QgeyByZXR1cm4gbV9zdHI7IH0KIAorICAgIFN0cmlu
ZyB0b1N0cmluZygpIGNvbnN0IHsgcmV0dXJuIG1fc3RyOyB9CisKICAgICBib29sIGlzTnVsbCgp
IGNvbnN0IHsgcmV0dXJuIG1fc3RyLmlzTnVsbCgpOyB9CiAgICAgc2l6ZV90IHNpemUoKSBjb25z
dCB7IHJldHVybiBtX3N0ci5zaXplKCk7IH0KIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5kaW5n
cy9qcy9TY3JpcHRWYWx1ZS5oIGIvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRWYWx1ZS5oCmlu
ZGV4IDg1NTUwOWEuLmMxNGM2OTEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvYmluZGluZ3MvanMvU2Ny
aXB0VmFsdWUuaAorKysgYi9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdFZhbHVlLmgKQEAgLTQ1
LDcgKzQ1LDcgQEAgcHVibGljOgogICAgIGJvb2wgZ2V0U3RyaW5nKFN0cmluZyYgcmVzdWx0KSBj
b25zdDsKICAgICBib29sIGlzTnVsbCgpIGNvbnN0OwogICAgIGJvb2wgaXNVbmRlZmluZWQoKSBj
b25zdDsKLQorICAgIG9wZXJhdG9yIGJvb2woKSB7IHJldHVybiBtX3ZhbHVlOyB9CiBwcml2YXRl
OgogICAgIEpTQzo6UHJvdGVjdGVkSlNWYWx1ZVB0ciBtX3ZhbHVlOwogfTsKZGlmZiAtLWdpdCBh
L1dlYkNvcmUvYmluZGluZ3MvanMvV29ya2VyU2NyaXB0Q29udHJvbGxlci5jcHAgYi9XZWJDb3Jl
L2JpbmRpbmdzL2pzL1dvcmtlclNjcmlwdENvbnRyb2xsZXIuY3BwCmluZGV4IGFiOTdiNTIuLjU2
ZmJlNGUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvYmluZGluZ3MvanMvV29ya2VyU2NyaXB0Q29udHJv
bGxlci5jcHAKKysrIGIvV2ViQ29yZS9iaW5kaW5ncy9qcy9Xb3JrZXJTY3JpcHRDb250cm9sbGVy
LmNwcApAQCAtNzUsNiArNzUsMTUgQEAgdm9pZCBXb3JrZXJTY3JpcHRDb250cm9sbGVyOjppbml0
U2NyaXB0KCkKIAogU2NyaXB0VmFsdWUgV29ya2VyU2NyaXB0Q29udHJvbGxlcjo6ZXZhbHVhdGUo
Y29uc3QgU2NyaXB0U291cmNlQ29kZSYgc291cmNlQ29kZSkKIHsKKyAgICBTY3JpcHRWYWx1ZSBl
eGNlcHRpb247CisgICAgU2NyaXB0VmFsdWUgcmVzdWx0ID0gZXZhbHVhdGUoc291cmNlQ29kZSwg
JmV4Y2VwdGlvbik7CisgICAgaWYgKGV4Y2VwdGlvbikKKyAgICAgICAgcmVwb3J0RXhjZXB0aW9u
KG1fd29ya2VyQ29udGV4dFdyYXBwZXItPmdsb2JhbEV4ZWMoKSwgZXhjZXB0aW9uLmpzVmFsdWUo
KSk7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworU2NyaXB0VmFsdWUgV29ya2VyU2NyaXB0Q29u
dHJvbGxlcjo6ZXZhbHVhdGUoY29uc3QgU2NyaXB0U291cmNlQ29kZSYgc291cmNlQ29kZSwgU2Ny
aXB0VmFsdWUqIGV4Y2VwdGlvbikKK3sKICAgICB7CiAgICAgICAgIE11dGV4TG9ja2VyIGxvY2so
bV9zaGFyZWREYXRhTXV0ZXgpOwogICAgICAgICBpZiAobV9leGVjdXRpb25Gb3JiaWRkZW4pCkBA
IC05NCwxMSArMTAzLDE1IEBAIFNjcmlwdFZhbHVlIFdvcmtlclNjcmlwdENvbnRyb2xsZXI6OmV2
YWx1YXRlKGNvbnN0IFNjcmlwdFNvdXJjZUNvZGUmIHNvdXJjZUNvZGUpCiAgICAgaWYgKGNvbXAu
Y29tcGxUeXBlKCkgPT0gTm9ybWFsIHx8IGNvbXAuY29tcGxUeXBlKCkgPT0gUmV0dXJuVmFsdWUp
CiAgICAgICAgIHJldHVybiBjb21wLnZhbHVlKCk7CiAKLSAgICBpZiAoY29tcC5jb21wbFR5cGUo
KSA9PSBUaHJvdykKLSAgICAgICAgcmVwb3J0RXhjZXB0aW9uKGV4ZWMsIGNvbXAudmFsdWUoKSk7
CisgICAgKmV4Y2VwdGlvbiA9IGNvbXAudmFsdWUoKTsKICAgICByZXR1cm4gbm9WYWx1ZSgpOwog
fQogCit2b2lkIFdvcmtlclNjcmlwdENvbnRyb2xsZXI6OnNldEV4Y2VwdGlvbihTY3JpcHRWYWx1
ZSBleGNlcHRpb24pCit7CisgICAgbV93b3JrZXJDb250ZXh0V3JhcHBlci0+Z2xvYmFsRXhlYygp
LT5zZXRFeGNlcHRpb24oZXhjZXB0aW9uLmpzVmFsdWUoKSk7Cit9CisKIHZvaWQgV29ya2VyU2Ny
aXB0Q29udHJvbGxlcjo6Zm9yYmlkRXhlY3V0aW9uKCkKIHsKICAgICAvLyBUaGlzIGZ1bmN0aW9u
IGlzIGNhbGxlZCBmcm9tIGFub3RoZXIgdGhyZWFkLgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5k
aW5ncy9qcy9Xb3JrZXJTY3JpcHRDb250cm9sbGVyLmggYi9XZWJDb3JlL2JpbmRpbmdzL2pzL1dv
cmtlclNjcmlwdENvbnRyb2xsZXIuaAppbmRleCAxZGRhNWRhLi5iMzEzZDkzIDEwMDY0NAotLS0g
YS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dvcmtlclNjcmlwdENvbnRyb2xsZXIuaAorKysgYi9XZWJD
b3JlL2JpbmRpbmdzL2pzL1dvcmtlclNjcmlwdENvbnRyb2xsZXIuaApAQCAtNTcsOSArNTcsMTEg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB9CiAKICAgICAgICAgU2NyaXB0VmFsdWUg
ZXZhbHVhdGUoY29uc3QgU2NyaXB0U291cmNlQ29kZSYpOworICAgICAgICBTY3JpcHRWYWx1ZSBl
dmFsdWF0ZShjb25zdCBTY3JpcHRTb3VyY2VDb2RlJiwgU2NyaXB0VmFsdWUqIGV4Y2VwdGlvbik7
CisgICAgICAgIHZvaWQgc2V0RXhjZXB0aW9uKFNjcmlwdFZhbHVlKTsKIAogICAgICAgICB2b2lk
IGZvcmJpZEV4ZWN1dGlvbigpOwotCisgICAgICAgIGJvb2wgZXhlY3V0aW9uRm9yYmlkZGVuKCkg
Y29uc3QgeyByZXR1cm4gbV9leGVjdXRpb25Gb3JiaWRkZW47IH0KICAgICBwcml2YXRlOgogICAg
ICAgICB2b2lkIGluaXRTY3JpcHRJZk5lZWRlZCgpCiAgICAgICAgIHsKZGlmZiAtLWdpdCBhL1dl
YkNvcmUvd29ya2Vycy9Xb3JrZXJDb250ZXh0LmNwcCBiL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJD
b250ZXh0LmNwcAppbmRleCBhMjlhOGU0Li45ZDYxNzU0IDEwMDY0NAotLS0gYS9XZWJDb3JlL3dv
cmtlcnMvV29ya2VyQ29udGV4dC5jcHAKKysrIGIvV2ViQ29yZS93b3JrZXJzL1dvcmtlckNvbnRl
eHQuY3BwCkBAIC0zOCwxMSArMzgsMTcgQEAKICNpbmNsdWRlICJFdmVudEV4Y2VwdGlvbi5oIgog
I2luY2x1ZGUgIk1lc3NhZ2VFdmVudC5oIgogI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCisj
aW5jbHVkZSAiUmVzb3VyY2VSZXF1ZXN0LmgiCisjaW5jbHVkZSAiU2NyaXB0U291cmNlQ29kZS5o
IgorI2luY2x1ZGUgIldvcmtlckltcG9ydFNjcmlwdHNDbGllbnQuaCIKKyNpbmNsdWRlICJTY3Jp
cHRWYWx1ZS5oIgogI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCisjaW5jbHVkZSAiVGhyZWFk
YWJsZUxvYWRlci5oIgogI2luY2x1ZGUgIldvcmtlckxvY2F0aW9uLmgiCiAjaW5jbHVkZSAiV29y
a2VyTmF2aWdhdG9yLmgiCiAjaW5jbHVkZSAiV29ya2VyT2JqZWN0UHJveHkuaCIKICNpbmNsdWRl
ICJXb3JrZXJUaHJlYWQuaCIKKyNpbmNsdWRlICJYTUxIdHRwUmVxdWVzdEV4Y2VwdGlvbi5oIgog
I2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMjE0LDYg
KzIyMCw1MiBAQCB2b2lkIFdvcmtlckNvbnRleHQ6OmRpc3BhdGNoTWVzc2FnZShjb25zdCBTdHJp
bmcmIG1lc3NhZ2UpCiAgICAgQVNTRVJUKCFlYyk7CiB9CiAKK3ZvaWQgV29ya2VyQ29udGV4dDo6
aW1wb3J0U2NyaXB0cyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgdXJscywgY29uc3QgU3RyaW5nJiBj
YWxsZXJVUkwsIGludCBjYWxsZXJMaW5lLCBFeGNlcHRpb25Db2RlJiBlYykKK3sKKyAgICBlYyA9
IDA7CisgICAgVmVjdG9yPFN0cmluZz46OmNvbnN0X2l0ZXJhdG9yIHVybHNFbmQgPSB1cmxzLmVu
ZCgpOworICAgIFZlY3RvcjxLVVJMPiBjb21wbGV0ZWRVcmxzOworICAgIGZvciAoVmVjdG9yPFN0
cmluZz46OmNvbnN0X2l0ZXJhdG9yIGl0ID0gdXJscy5iZWdpbigpOyBpdCAhPSB1cmxzRW5kOyAr
K2l0KSB7CisgICAgICAgIGNvbnN0IEtVUkwmIHVybCA9IHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQo
KS0+Y29tcGxldGVVUkwoKml0KTsKKyAgICAgICAgaWYgKCF1cmwuaXNWYWxpZCgpKSB7CisgICAg
ICAgICAgICBlYyA9IFNZTlRBWF9FUlI7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0K
KworICAgICAgICBpZiAoIXNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+c2VjdXJpdHlPcmlnaW4o
KS0+Y2FuUmVxdWVzdCh1cmwpKSB7CisgICAgICAgICAgICBlYyA9IFNFQ1VSSVRZX0VSUjsKKyAg
ICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBjb21wbGV0ZWRVcmxzLmFwcGVu
ZCh1cmwpOworICAgIH0KKyAgICBTdHJpbmcgc2VjdXJpdHlPcmlnaW4gPSBzY3JpcHRFeGVjdXRp
b25Db250ZXh0KCktPnNlY3VyaXR5T3JpZ2luKCktPnRvU3RyaW5nKCk7CisgICAgVmVjdG9yPEtV
Ukw+Ojpjb25zdF9pdGVyYXRvciBlbmQgPSBjb21wbGV0ZWRVcmxzLmVuZCgpOworICAgIFZlY3Rv
cjxTY3JpcHRTb3VyY2VDb2RlPiBzb3VyY2VzOworICAgIGZvciAoVmVjdG9yPEtVUkw+Ojpjb25z
dF9pdGVyYXRvciBpdCA9IGNvbXBsZXRlZFVybHMuYmVnaW4oKTsgaXQgIT0gZW5kICYmICFtX3Nj
cmlwdC0+ZXhlY3V0aW9uRm9yYmlkZGVuKCk7ICsraXQpIHsKKyAgICAgICAgUmVzb3VyY2VSZXF1
ZXN0IHJlcXVlc3QoKml0KTsKKyAgICAgICAgcmVxdWVzdC5zZXRIVFRQTWV0aG9kKCJHRVQiKTsK
KyAgICAgICAgcmVxdWVzdC5zZXRIVFRQT3JpZ2luKHNlY3VyaXR5T3JpZ2luKTsKKyAgICAgICAg
V29ya2VySW1wb3J0U2NyaXB0c0NsaWVudCBjbGllbnQoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgp
LCAqaXQsIGNhbGxlclVSTCwgY2FsbGVyTGluZSk7CisgICAgICAgIFRocmVhZGFibGVMb2FkZXI6
OmxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHkoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCByZXF1
ZXN0LCBjbGllbnQpOworICAgICAgICAKKyAgICAgICAgLy8gSWYgdGhlIGZldGNoaW5nIGF0dGVt
cHQgZmFpbGVkLCB0aHJvdyBhIE5FVFdPUktfRVJSIGV4Y2VwdGlvbiBhbmQgYWJvcnQgYWxsIHRo
ZXNlIHN0ZXBzLgorICAgICAgICBpZiAoY2xpZW50LmZhaWxlZCgpKSB7CisgICAgICAgICAgICBl
YyA9IFhNTEh0dHBSZXF1ZXN0RXhjZXB0aW9uOjpORVRXT1JLX0VSUjsKKyAgICAgICAgICAgIHJl
dHVybjsKKyAgICAgICAgfQorICAgICAgICBzb3VyY2VzLmFwcGVuZChTY3JpcHRTb3VyY2VDb2Rl
KGNsaWVudC5zY3JpcHQoKS50b1N0cmluZygpLCAqaXQpKTsKKyAgICB9CisgICAgVmVjdG9yPFNj
cmlwdFNvdXJjZUNvZGU+Ojpjb25zdF9pdGVyYXRvciBzb3VyY2VFbmQgPSBzb3VyY2VzLmVuZCgp
OworICAgIGZvciAoVmVjdG9yPFNjcmlwdFNvdXJjZUNvZGU+Ojpjb25zdF9pdGVyYXRvciBpdCA9
IHNvdXJjZXMuYmVnaW4oKTsgaXQgIT0gc291cmNlRW5kICYmICFtX3NjcmlwdC0+ZXhlY3V0aW9u
Rm9yYmlkZGVuKCk7ICsraXQpIHsKKyAgICAgICAgU2NyaXB0VmFsdWUgZXhjZXB0aW9uOworICAg
ICAgICBtX3NjcmlwdC0+ZXZhbHVhdGUoKml0LCAmZXhjZXB0aW9uKTsKKyAgICAgICAgaWYgKGV4
Y2VwdGlvbikgeworICAgICAgICAgICAgbV9zY3JpcHQtPnNldEV4Y2VwdGlvbihleGNlcHRpb24p
OworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgfQorfQorCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoV09SS0VSUykKZGlmZiAtLWdpdCBhL1dl
YkNvcmUvd29ya2Vycy9Xb3JrZXJDb250ZXh0LmggYi9XZWJDb3JlL3dvcmtlcnMvV29ya2VyQ29u
dGV4dC5oCmluZGV4IDQxNGUxM2EuLjBmODg5NjcgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvd29ya2Vy
cy9Xb3JrZXJDb250ZXh0LmgKKysrIGIvV2ViQ29yZS93b3JrZXJzL1dvcmtlckNvbnRleHQuaApA
QCAtOTgsNiArOTgsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHR5cGVkZWYgSGFz
aE1hcDxBdG9taWNTdHJpbmcsIExpc3RlbmVyVmVjdG9yPiBFdmVudExpc3RlbmVyc01hcDsKICAg
ICAgICAgRXZlbnRMaXN0ZW5lcnNNYXAmIGV2ZW50TGlzdGVuZXJzKCkgeyByZXR1cm4gbV9ldmVu
dExpc3RlbmVyczsgfQogCisgICAgICAgIHZvaWQgaW1wb3J0U2NyaXB0cyhjb25zdCBWZWN0b3I8
U3RyaW5nPiYgdXJscywgY29uc3QgU3RyaW5nJiBjYWxsZXJVUkwsIGludCBjYWxsZXJMaW5lLCBF
eGNlcHRpb25Db2RlJik7CisgICAgICAgIAogICAgICAgICB1c2luZyBSZWZDb3VudGVkPFdvcmtl
ckNvbnRleHQ+OjpyZWY7CiAgICAgICAgIHVzaW5nIFJlZkNvdW50ZWQ8V29ya2VyQ29udGV4dD46
OmRlcmVmOwogCmRpZmYgLS1naXQgYS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyQ29udGV4dC5pZGwg
Yi9XZWJDb3JlL3dvcmtlcnMvV29ya2VyQ29udGV4dC5pZGwKaW5kZXggZTFmZmY1MS4uYmJmY2E2
MyAxMDA2NDQKLS0tIGEvV2ViQ29yZS93b3JrZXJzL1dvcmtlckNvbnRleHQuaWRsCisrKyBiL1dl
YkNvcmUvd29ya2Vycy9Xb3JrZXJDb250ZXh0LmlkbApAQCAtNDAsNiArNDAsNyBAQCBtb2R1bGUg
dGhyZWFkcyB7CiAKICAgICAgICAgYXR0cmlidXRlIEV2ZW50TGlzdGVuZXIgb25tZXNzYWdlOwog
ICAgICAgICB2b2lkIHBvc3RNZXNzYWdlKGluIERPTVN0cmluZyBtZXNzYWdlKTsKKyAgICAgICAg
W0N1c3RvbV0gdm9pZCBpbXBvcnRTY3JpcHRzKC8qIHVybHMgKi8pOwogCiAgICAgICAgIGF0dHJp
YnV0ZSBbUmVwbGFjZWFibGVdIFdvcmtlckxvY2F0aW9uIGxvY2F0aW9uOwogICAgICAgICBhdHRy
aWJ1dGUgW1JlcGxhY2VhYmxlXSBXb3JrZXJOYXZpZ2F0b3IgbmF2aWdhdG9yOwpkaWZmIC0tZ2l0
IGEvV2ViQ29yZS93b3JrZXJzL1dvcmtlckltcG9ydFNjcmlwdHNDbGllbnQuY3BwIGIvV2ViQ29y
ZS93b3JrZXJzL1dvcmtlckltcG9ydFNjcmlwdHNDbGllbnQuY3BwCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAuLjc1OGViNmEKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb3JlL3dv
cmtlcnMvV29ya2VySW1wb3J0U2NyaXB0c0NsaWVudC5jcHAKQEAgLTAsMCArMSw5MiBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAwOSBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRF
UiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVS
LCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgor
ICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAor
ICoKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpbmNsdWRlICJXb3JrZXJJbXBvcnRT
Y3JpcHRzQ2xpZW50LmgiCisjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgorCitu
YW1lc3BhY2UgV2ViQ29yZSB7CisKK3ZvaWQgV29ya2VySW1wb3J0U2NyaXB0c0NsaWVudDo6ZGlk
UmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQoreworICAg
IGlmIChyZXNwb25zZS5odHRwU3RhdHVzQ29kZSgpIC8gMTAwICE9IDIgJiYgcmVzcG9uc2UuaHR0
cFN0YXR1c0NvZGUoKSAhPSAwKSB7CisgICAgICAgIG1fZmFpbGVkID0gdHJ1ZTsKKyAgICAgICAg
cmV0dXJuOworICAgIH0KKyAgICBtX3Jlc3BvbnNlID0gcmVzcG9uc2U7CisgICAgbV9yZXNwb25z
ZUVuY29kaW5nID0gcmVzcG9uc2UudGV4dEVuY29kaW5nTmFtZSgpOworfQorCit2b2lkIFdvcmtl
ckltcG9ydFNjcmlwdHNDbGllbnQ6OmRpZFJlY2VpdmVEYXRhKGNvbnN0IGNoYXIqIGRhdGEsIGlu
dCBsZW4pCit7CisgICAgaWYgKG1fZmFpbGVkKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAo
IW1fZGVjb2RlcikgeworICAgICAgICBpZiAoIW1fcmVzcG9uc2VFbmNvZGluZy5pc0VtcHR5KCkp
CisgICAgICAgICAgICBtX2RlY29kZXIgPSBUZXh0UmVzb3VyY2VEZWNvZGVyOjpjcmVhdGUoInRl
eHQvamF2YXNjcmlwdCIsIG1fcmVzcG9uc2VFbmNvZGluZyk7CisgICAgICAgIGVsc2UKKyAgICAg
ICAgICAgIG1fZGVjb2RlciA9IFRleHRSZXNvdXJjZURlY29kZXI6OmNyZWF0ZSgidGV4dC9qYXZh
c2NyaXB0IiwgIlVURi04Iik7CisgICAgfQorCisgICAgaWYgKCFsZW4pCisgICAgICAgIHJldHVy
bjsKKyAgICAKKyAgICBpZiAobGVuID09IC0xKQorICAgICAgICBsZW4gPSBzdHJsZW4oZGF0YSk7
CisgICAgCisgICAgbV9zY3JpcHQgKz0gbV9kZWNvZGVyLT5kZWNvZGUoZGF0YSwgbGVuKTsKK30K
Kwordm9pZCBXb3JrZXJJbXBvcnRTY3JpcHRzQ2xpZW50OjpkaWRGaW5pc2hMb2FkaW5nKHVuc2ln
bmVkIGxvbmcgaWRlbnRpZmllcikKK3sKKyAgICBpZiAobV9mYWlsZWQpCisgICAgICAgIHJldHVy
bjsKKworICAgIGlmIChtX2RlY29kZXIpCisgICAgICAgIG1fc2NyaXB0ICs9IG1fZGVjb2Rlci0+
Zmx1c2goKTsKKyAgICAKKyAgICBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPnJlc291cmNlUmV0
cmlldmVkQnlYTUxIdHRwUmVxdWVzdChpZGVudGlmaWVyLCBtX3NjcmlwdCk7CisgICAgbV9zY3Jp
cHRFeGVjdXRpb25Db250ZXh0LT5hZGRNZXNzYWdlKEluc3BlY3RvckNvbnRyb2xsZXJEZXN0aW5h
dGlvbiwgSlNNZXNzYWdlU291cmNlLCBMb2dNZXNzYWdlTGV2ZWwsICJXb3JrZXIgc2NyaXB0IGlt
cG9ydGVkOiBcIiIgKyBtX3VybCArICJcIi4iLCBtX2NhbGxlckxpbmVOdW1iZXIsIG1fY2FsbGVy
VVJMKTsKK30KKwordm9pZCBXb3JrZXJJbXBvcnRTY3JpcHRzQ2xpZW50OjpkaWRGYWlsKGNvbnN0
IFJlc291cmNlRXJyb3ImKQoreworICAgIG1fZmFpbGVkID0gdHJ1ZTsKK30KKwordm9pZCBXb3Jr
ZXJJbXBvcnRTY3JpcHRzQ2xpZW50OjpkaWRGYWlsUmVkaXJlY3RDaGVjaygpCit7CisgICAgbV9m
YWlsZWQgPSB0cnVlOworfQorCit2b2lkIFdvcmtlckltcG9ydFNjcmlwdHNDbGllbnQ6OmRpZFJl
Y2VpdmVBdXRoZW50aWNhdGlvbkNhbmNlbGxhdGlvbihjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikK
K3sKKyAgICBtX2ZhaWxlZCA9IHRydWU7Cit9CisKK30KZGlmZiAtLWdpdCBhL1dlYkNvcmUvd29y
a2Vycy9Xb3JrZXJJbXBvcnRTY3JpcHRzQ2xpZW50LmggYi9XZWJDb3JlL3dvcmtlcnMvV29ya2Vy
SW1wb3J0U2NyaXB0c0NsaWVudC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAu
LjM2MDE3NDEKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb3JlL3dvcmtlcnMvV29ya2VySW1wb3J0
U2NyaXB0c0NsaWVudC5oCkBAIC0wLDAgKzEsNzUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MDkgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFO
RCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqCisgKi8KKworI2lmbmRlZiBX
b3JrZXJJbXBvcnRTY3JpcHRzQ2xpZW50X2gKKyNkZWZpbmUgV29ya2VySW1wb3J0U2NyaXB0c0Ns
aWVudF9oCisKKyNpbmNsdWRlICJSZXNvdXJjZVJlc3BvbnNlLmgiCisjaW5jbHVkZSAiU2NyaXB0
U3RyaW5nLmgiCisjaW5jbHVkZSAiVGV4dFJlc291cmNlRGVjb2Rlci5oIgorI2luY2x1ZGUgIlRo
cmVhZGFibGVMb2FkZXJDbGllbnQuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCisgICAgY2xh
c3MgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKKyAgICAKKyAgICBjbGFzcyBXb3JrZXJJbXBvcnRT
Y3JpcHRzQ2xpZW50IDogcHVibGljIFRocmVhZGFibGVMb2FkZXJDbGllbnQgeworICAgIHB1Ymxp
YzoKKyAgICAgICAgV29ya2VySW1wb3J0U2NyaXB0c0NsaWVudChTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0LCBjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgU3Ry
aW5nJiBjYWxsZXJVUkwsIGludCBjYWxsZXJMaW5lTnVtYmVyKQorICAgICAgICAgICAgOiBtX3Nj
cmlwdEV4ZWN1dGlvbkNvbnRleHQoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCkKKyAgICAgICAgICAg
ICwgbV91cmwodXJsKQorICAgICAgICAgICAgLCBtX2NhbGxlclVSTChjYWxsZXJVUkwpCisgICAg
ICAgICAgICAsIG1fY2FsbGVyTGluZU51bWJlcihjYWxsZXJMaW5lTnVtYmVyKQorICAgICAgICAg
ICAgLCBtX2ZhaWxlZChmYWxzZSkKKyAgICAgICAgeworICAgICAgICB9CisKKyAgICAgICAgY29u
c3QgU2NyaXB0U3RyaW5nJiBzY3JpcHQoKSBjb25zdCB7IHJldHVybiBtX3NjcmlwdDsgfQorICAg
ICAgICBib29sIGZhaWxlZCgpIGNvbnN0IHsgcmV0dXJuIG1fZmFpbGVkOyB9CisKKyAgICAgICAg
dmlydHVhbCB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiBy
ZXNwb25zZSk7CisgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlRGF0YShjb25zdCBjaGFy
KiBkYXRhLCBpbnQgbGVuZ3RoUmVjZWl2ZWQpOworICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkRmlu
aXNoTG9hZGluZyh1bnNpZ25lZCBsb25nIC8qIGlkZW50aWZpZXIgKi8pOworICAgICAgICB2aXJ0
dWFsIHZvaWQgZGlkRmFpbChjb25zdCBSZXNvdXJjZUVycm9yJik7CisgICAgICAgIHZpcnR1YWwg
dm9pZCBkaWRGYWlsUmVkaXJlY3RDaGVjaygpOworICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVj
ZWl2ZUF1dGhlbnRpY2F0aW9uQ2FuY2VsbGF0aW9uKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsK
KworICAgIHByaXZhdGU6CisgICAgICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIG1fc2NyaXB0
RXhlY3V0aW9uQ29udGV4dDsKKyAgICAgICAgU3RyaW5nIG1fdXJsOworICAgICAgICBTdHJpbmcg
bV9jYWxsZXJVUkw7CisgICAgICAgIGludCBtX2NhbGxlckxpbmVOdW1iZXI7CisgICAgICAgIFJl
c291cmNlUmVzcG9uc2UgbV9yZXNwb25zZTsKKyAgICAgICAgU3RyaW5nIG1fcmVzcG9uc2VFbmNv
ZGluZzsgICAgICAgIAorICAgICAgICBSZWZQdHI8VGV4dFJlc291cmNlRGVjb2Rlcj4gbV9kZWNv
ZGVyOworICAgICAgICBTY3JpcHRTdHJpbmcgbV9zY3JpcHQ7CisgICAgICAgIGJvb2wgbV9mYWls
ZWQ7CisgICAgfTsKKworfQorCisjZW5kaWYKKwo=
</data>
<flag name="review"
          id="13887"
          type_id="1"
          status="-"
          setter="ap"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>28382</attachid>
            <date>2009-03-06 19:25:03 -0800</date>
            <delta_ts>2009-03-06 21:10:05 -0800</delta_ts>
            <desc>Updated patch</desc>
            <filename>importScripts.patch</filename>
            <type>text/plain</type>
            <size>31600</size>
            <attacher name="Oliver Hunt">oliver</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA3MGQxZDM2Li5mNmFkZjYzIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMDktMDMt
MDYgIE9saXZlciBIdW50ICA8b2xpdmVyQGFwcGxlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICA8cmRhcjovL3Byb2JsZW0vNjQyNTgwNz4gSW1w
bGVtZW50IFdvcmtlclV0aWxzLmltcG9ydFNjcmlwdHMoKQorICAgICAgICA8aHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNzIxPgorCisgICAgICAgIFRlc3RzIHRvIGNv
dmVyIHZhcmlvdXMgdXNhZ2VzIG9mIGltcG9ydFNjcmlwdHMsIGVnLiBuZXR3b3JrIGxvYWQKKyAg
ICAgICAgZmFpbHVyZXMsIHNlY3VyaXR5IGV4Y2VwdGlvbnMsIGV4ZWN1dGlvbiBvcmRlcmluZywg
ZXRjCisKKyAgICAgICAgKiBmYXN0L3dvcmtlcnMvcmVzb3VyY2VzL3dvcmtlci1pbXBvcnRTY3Jp
cHRzLXNvdXJjZTEuanM6IEFkZGVkLgorICAgICAgICAqIGZhc3Qvd29ya2Vycy9yZXNvdXJjZXMv
d29ya2VyLWltcG9ydFNjcmlwdHMtc291cmNlMi5qczogQWRkZWQuCisgICAgICAgICogZmFzdC93
b3JrZXJzL3Jlc291cmNlcy93b3JrZXItaW1wb3J0U2NyaXB0cy5qczogQWRkZWQuCisgICAgICAg
ICogZmFzdC93b3JrZXJzL3dvcmtlci1pbXBvcnRTY3JpcHRzLWV4cGVjdGVkLnR4dDogQWRkZWQu
CisgICAgICAgICogZmFzdC93b3JrZXJzL3dvcmtlci1pbXBvcnRTY3JpcHRzLmh0bWw6IEFkZGVk
LgorCiAyMDA5LTAzLTA1ICBTaW1vbiBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgog
CiAgICAgICAgIFJldmlld2VkIGJ5IERhdmUgSHlhdHQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2Zhc3Qvd29ya2Vycy9yZXNvdXJjZXMvd29ya2VyLWltcG9ydFNjcmlwdHMtc291cmNlMS5qcyBi
L0xheW91dFRlc3RzL2Zhc3Qvd29ya2Vycy9yZXNvdXJjZXMvd29ya2VyLWltcG9ydFNjcmlwdHMt
c291cmNlMS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xMGE4MDI4Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC93b3JrZXJzL3Jlc291cmNlcy93b3Jr
ZXItaW1wb3J0U2NyaXB0cy1zb3VyY2UxLmpzCkBAIC0wLDAgKzEsNiBAQAorbG9hZGVkU291cmNl
MSA9IHRydWU7Citwb3N0TWVzc2FnZSgiTG9hZGVkIHJlc291cmNlIDEiKTsKK2lmICh0aGlzLmZp
cnN0U2hvdWxkVGhyb3cpIHsKKyAgICBwb3N0TWVzc2FnZSgiRmlyc3QgcmVzb3VyY2UgdGhyb3dp
bmcgYW4gZXhjZXB0aW9uIik7CisgICAgdGhyb3cgIlRocm93biBieSBmaXJzdCByZXNvdXJjZSIK
K30KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qvd29ya2Vycy9yZXNvdXJjZXMvd29ya2Vy
LWltcG9ydFNjcmlwdHMtc291cmNlMi5qcyBiL0xheW91dFRlc3RzL2Zhc3Qvd29ya2Vycy9yZXNv
dXJjZXMvd29ya2VyLWltcG9ydFNjcmlwdHMtc291cmNlMi5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwLi44NjQwZWRkCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
ZmFzdC93b3JrZXJzL3Jlc291cmNlcy93b3JrZXItaW1wb3J0U2NyaXB0cy1zb3VyY2UyLmpzCkBA
IC0wLDAgKzEsOCBAQAoraWYgKCFsb2FkZWRTb3VyY2UxKQorICAgIHBvc3RNZXNzYWdlKCJSZXNv
dXJjZSAyIGxvYWRlZCBiZWZvcmUgcmVzb3VyY2UgMSIpOworbG9hZGVkU291cmNlMiA9IHRydWU7
Citwb3N0TWVzc2FnZSgiTG9hZGVkIHJlc291cmNlIDIiKTsKK2lmICh0aGlzLnNlY29uZFNob3Vs
ZFRocm93KSB7CisgICAgcG9zdE1lc3NhZ2UoIlNlY29uZCByZXNvdXJjZSB0aHJvd2luZyBhbiBl
eGNlcHRpb24iKTsKKyAgICB0aHJvdyAiVGhyb3duIGJ5IHNlY29uZCByZXNvdXJjZSI7Cit9CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3dvcmtlcnMvcmVzb3VyY2VzL3dvcmtlci1pbXBv
cnRTY3JpcHRzLmpzIGIvTGF5b3V0VGVzdHMvZmFzdC93b3JrZXJzL3Jlc291cmNlcy93b3JrZXIt
aW1wb3J0U2NyaXB0cy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43MzA4
NTMzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC93b3JrZXJzL3Jlc291cmNl
cy93b3JrZXItaW1wb3J0U2NyaXB0cy5qcwpAQCAtMCwwICsxLDEyMCBAQAordHJ5IHsKK3Bvc3RN
ZXNzYWdlKCJUZXN0IHN0YXJ0ZWQuIik7CisKK2ltcG9ydFNjcmlwdHMoKTsKK3Bvc3RNZXNzYWdl
KCJQQVNTOiBpbXBvcnRTY3JpcHRzKCksIGV4aXN0cywgaXMgYSBmdW5jdGlvbiwgYW5kIGRvZXNu
J3QgdGhyb3cgd2hlbiBub3QgZ2l2ZW4gYW55IGFyZ3VtZW50cyIpOworCitwb3N0TWVzc2FnZSgi
VGVzdGluZyBkaWZmZXJlbnQgb3JpZ2luIik7Cit2YXIgZGlmZmVyZW50T3JpZ2luID0gImRhdGE6
dGV4dC9qYXZhc2NyaXB0LHBvc3RNZXNzYWdlKCdQQVNTOiBsb2FkZWQgc2NyaXB0IGZyb20gZGlm
ZmVyZW50IG9yaWdpbicpO2RpZmZlcmVudE9yaWdpbkxvYWRlZD10cnVlIjsKK3RyeSB7CisgICAg
aW1wb3J0U2NyaXB0cyhkaWZmZXJlbnRPcmlnaW4pCit9IGNhdGNoKGUpIHsKKyAgICBwb3N0TWVz
c2FnZSgiRkFJTDogVGhyZXcgIiArIGUgKyAiIHdoZW4gYXR0ZW1wdGluZyBjcm9zcyBvcmlnaW4g
bG9hZCIpOworfQoraWYgKGRpZmZlcmVudE9yaWdpbkxvYWRlZCkKKyAgICBwb3N0TWVzc2FnZSgi
UEFTUzogZXhlY3V0ZWQgc2NyaXB0IGZyb20gZGlmZmVyZW50IG9yaWdpbiIpOworCit2YXIgc291
cmNlMSA9ICJ3b3JrZXItaW1wb3J0U2NyaXB0cy1zb3VyY2UxLmpzIjsKK3ZhciBzb3VyY2UyID0g
Indvcmtlci1pbXBvcnRTY3JpcHRzLXNvdXJjZTIuanMiOwordmFyIGZha2VTb3VyY2UgPSAibm9u
ZXhpc3RhbnQiOwordmFyIGxvYWRlZFNvdXJjZTEgPSBmYWxzZTsKK3ZhciBsb2FkZWRTb3VyY2Uy
ID0gZmFsc2U7CisKK3Bvc3RNZXNzYWdlKCJUZXN0aW5nIHNpbmdsZSBhcmd1bWVudDoiKTsKK2lt
cG9ydFNjcmlwdHMoc291cmNlMSkKK2lmIChsb2FkZWRTb3VyY2UxKQorICAgIHBvc3RNZXNzYWdl
KCJQQVNTOiBsb2FkZWQgZmlyc3Qgc291cmNlIik7CitlbHNlCisgICAgcG9zdE1lc3NhZ2UoIkZB
SUw6IGRpZCBub3QgbG9hZCBmaXJzdCBzb3VyY2UiKTsKKworbG9hZGVkU291cmNlMSA9IGZhbHNl
OworbG9hZGVkU291cmNlMiA9IGZhbHNlOworCitwb3N0TWVzc2FnZSgiVGVzdGluZyBtdWx0aXBs
ZSBhcmd1bWVudHM6Iik7CitpbXBvcnRTY3JpcHRzKHNvdXJjZTEsIHNvdXJjZTIpOworaWYgKGxv
YWRlZFNvdXJjZTEgJiYgbG9hZGVkU291cmNlMikKKyAgICBwb3N0TWVzc2FnZSgiUEFTUzogQm90
aCBzb3VyY2VzIGxvYWRlZCBhbmQgZXhlY3V0ZWQuIik7CitlbHNlCisgICAgcG9zdE1lc3NhZ2Uo
IkZBSUw6IDFub3QgYWxsIHNvdXJjZXMgd2VyZSBsb2FkZWQiKTsKKworbG9hZGVkU291cmNlMSA9
IGZhbHNlOworbG9hZGVkU291cmNlMiA9IGZhbHNlOworCitwb3N0TWVzc2FnZSgiVGVzdGluZyBt
dWx0aXBsZSBhcmd1bWVudHMgKGRpZmZlcmVudCBvcmRlcik6Iik7CitpbXBvcnRTY3JpcHRzKHNv
dXJjZTIsIHNvdXJjZTEpOworaWYgKGxvYWRlZFNvdXJjZTEgJiYgbG9hZGVkU291cmNlMikKKyAg
ICBwb3N0TWVzc2FnZSgiUEFTUzogQm90aCBzb3VyY2VzIGxvYWRlZCBhbmQgZXhlY3V0ZWQuIik7
CitlbHNlCisgICAgcG9zdE1lc3NhZ2UoIkZBSUw6IG5vdCBhbGwgc291cmNlcyB3ZXJlIGxvYWRl
ZCIpOworCitsb2FkZWRTb3VyY2UxID0gZmFsc2U7Citsb2FkZWRTb3VyY2UyID0gZmFsc2U7Citk
aWZmZXJlbnRPcmlnaW5Mb2FkZWQgPSBmYWxzZTsKK2ZpcnN0U2hvdWxkVGhyb3cgPSBmYWxzZTsK
K3NlY29uZFNob3VsZFRocm93ID0gZmFsc2U7Citwb3N0TWVzc2FnZSgiVGVzdGluZyBtdWx0aXBs
ZSBhcmd1bWVudHMsIHdpdGggZGlmZmVyZW50IG9yaWdpbiBmb3Igb25lIGFyZ3VtZW50OiIpOwor
dHJ5IHsKKyAgICBpbXBvcnRTY3JpcHRzKHNvdXJjZTEsIGRpZmZlcmVudE9yaWdpbiwgc291cmNl
Mik7Cit9IGNhdGNoKGUpIHsKKyAgICBwb3N0TWVzc2FnZSgiRkFJTDogVGhyZXcgIiArIGUgKyAi
IHdoZW4gYXR0ZW1wdCBjcm9zcyBvcmlnaW4gbG9hZCIpOworfQoraWYgKGxvYWRlZFNvdXJjZTEg
JiYgbG9hZGVkU291cmNlMiAmJiBkaWZmZXJlbnRPcmlnaW5Mb2FkZWQpCisgICAgcG9zdE1lc3Nh
Z2UoIlBBU1M6IGFsbCByZXNvdXJjZXMgZXhlY3V0ZWQuIik7CitlbHNlCisgICAgcG9zdE1lc3Nh
Z2UoIkZBSUw6IFNvbWUgcmVzb3VyY2VzIHdlcmUgbG9hZGVkIGluIHNwaXRlIG9mIHRoZSBvcmln
aW4gZmFpbHVyZSIpOworCitsb2FkZWRTb3VyY2UxID0gZmFsc2U7Citsb2FkZWRTb3VyY2UyID0g
ZmFsc2U7CisKK3RyeSB7CisgICAgaW1wb3J0U2NyaXB0cyhzb3VyY2UxLCBmYWtlU291cmNlLCBz
b3VyY2UyKTsKK30gY2F0Y2goZSkgeworICAgIHBvc3RNZXNzYWdlKCJQQVNTOiBUaHJldyAiICsg
ZSArICIgd2hlbiBsb2FkIGZhaWxlZCIpOworfQoraWYgKCFsb2FkZWRTb3VyY2UxICYmICFsb2Fk
ZWRTb3VyY2UyKQorICAgIHBvc3RNZXNzYWdlKCJQQVNTOiBOb3RoaW5nIHdhcyBleGVjdXRlZCB3
aGVuIG5ldHdvcmsgZXJyb3Igb2NjdXJyZWQuIik7CitlbHNlCisgICAgcG9zdE1lc3NhZ2UoIkZB
SUw6IHNvbWUgcmVzb3VyY2VzIHdlcmUgbG9hZGVkIGRlc2l0ZSB0aGUgbmV0d29yayBlcnJvciIp
OworCitsb2FkZWRTb3VyY2UxID0gZmFsc2U7Citsb2FkZWRTb3VyY2UyID0gZmFsc2U7CisKK3Bv
c3RNZXNzYWdlKCJUZXN0aW5nIG11bHRpcGxlIGFyZ3VtZW50cywgd2l0aCBmaXJzdCByZXNvdXJj
ZSB0aHJvd2luZyBhbiBleGNlcHRpb246Iik7CitmaXJzdFNob3VsZFRocm93ID0gdHJ1ZTsKK3Ry
eSB7CisgICAgaW1wb3J0U2NyaXB0cyhzb3VyY2UxLCBzb3VyY2UyKTsKK30gY2F0Y2goZSkgewor
ICAgIHBvc3RNZXNzYWdlKCJQQVNTOiBQcm9wYWdhdGVkICciICsgZSArICInIGZyb20gc2NyaXB0
Iik7Cit9CitmaXJzdFNob3VsZFRocm93ID0gZmFsc2U7CitpZiAobG9hZGVkU291cmNlMSAmJiAh
bG9hZGVkU291cmNlMikKKyAgICBwb3N0TWVzc2FnZSgiUEFTUzogRmlyc3QgcmVzb3VyY2Ugd2Fz
IGV4ZWN1dGVkLCBhbmQgc2Vjb25kIHJlc291cmNlIHdhcyBub3QiKTsKK2Vsc2UgaWYgKGxvYWRl
ZFNvdXJjZTIpCisgICAgcG9zdE1lc3NhZ2UoIkZBSUw6IFNlY29uZCByZXNvdXJjZSB3YXMgZXhl
Y3V0ZWQiKTsKK2Vsc2UKKyAgICBwb3N0TWVzc2FnZSgiRkFJTDogZmlyc3QgcmVzb3VyY2UgZGlk
IG5vdCBleGVjdXRlIGNvcnJlY3RseSIpOworCitsb2FkZWRTb3VyY2UxID0gZmFsc2U7Citsb2Fk
ZWRTb3VyY2UyID0gZmFsc2U7CisKK3Bvc3RNZXNzYWdlKCJUZXN0aW5nIG11bHRpcGxlIGFyZ3Vt
ZW50cywgd2l0aCBzZWNvbmQgcmVzb3VyY2UgdGhyb3dpbmcgYW4gZXhjZXB0aW9uOiIpOworc2Vj
b25kU2hvdWxkVGhyb3cgPSB0cnVlOwordHJ5IHsKKyAgICBpbXBvcnRTY3JpcHRzKHNvdXJjZTEs
IHNvdXJjZTIpOworfSBjYXRjaChlKSB7CisgICAgcG9zdE1lc3NhZ2UoIlBBU1M6IFByb3BhZ2F0
ZWQgJyIgKyBlICsgIicgZnJvbSBzY3JpcHQiKTsKK30KK3NlY29uZFNob3VsZFRocm93ID0gZmFs
c2U7CitpZiAobG9hZGVkU291cmNlMSAmJiBsb2FkZWRTb3VyY2UyKQorICAgIHBvc3RNZXNzYWdl
KCJQQVNTOiBCb3RoIHNjcmlwdHMgd2VyZSBleGVjdXRlZCIpOworZWxzZQorICAgIHBvc3RNZXNz
YWdlKCJGQUlMOiBzY3JpcHRzIGRpZCBub3QgZXhlY3V0ZSBjb3JyZWN0bHkiKTsKKworbG9hZGVk
U291cmNlMSA9IGZhbHNlOworbG9hZGVkU291cmNlMiA9IGZhbHNlOworCit9IGNhdGNoKGUpIHsK
KyAgICBwb3N0TWVzc2FnZSgiRkFJTDogVW5leHBlY3RlZCBleGNlcHRpb246ICIgKyBlKTsKK30g
ZmluYWxseSB7CisgICAgcG9zdE1lc3NhZ2UoIkRPTkUiKTsKK30KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2Zhc3Qvd29ya2Vycy93b3JrZXItaW1wb3J0U2NyaXB0cy1leHBlY3RlZC50eHQgYi9M
YXlvdXRUZXN0cy9mYXN0L3dvcmtlcnMvd29ya2VyLWltcG9ydFNjcmlwdHMtZXhwZWN0ZWQudHh0
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI0NmQzODQKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3dvcmtlcnMvd29ya2VyLWltcG9ydFNjcmlwdHMtZXhw
ZWN0ZWQudHh0CkBAIC0wLDAgKzEsMzkgQEAKK1Rlc3QgaW1wb3J0U2NyaXB0cy4KKworVGVzdCBz
dGFydGVkLgorUEFTUzogaW1wb3J0U2NyaXB0cygpLCBleGlzdHMsIGlzIGEgZnVuY3Rpb24sIGFu
ZCBkb2Vzbid0IHRocm93IHdoZW4gbm90IGdpdmVuIGFueSBhcmd1bWVudHMKK1Rlc3RpbmcgZGlm
ZmVyZW50IG9yaWdpbgorUEFTUzogbG9hZGVkIHNjcmlwdCBmcm9tIGRpZmZlcmVudCBvcmlnaW4K
K1BBU1M6IGV4ZWN1dGVkIHNjcmlwdCBmcm9tIGRpZmZlcmVudCBvcmlnaW4KK1Rlc3Rpbmcgc2lu
Z2xlIGFyZ3VtZW50OgorTG9hZGVkIHJlc291cmNlIDEKK1BBU1M6IGxvYWRlZCBmaXJzdCBzb3Vy
Y2UKK1Rlc3RpbmcgbXVsdGlwbGUgYXJndW1lbnRzOgorTG9hZGVkIHJlc291cmNlIDEKK0xvYWRl
ZCByZXNvdXJjZSAyCitQQVNTOiBCb3RoIHNvdXJjZXMgbG9hZGVkIGFuZCBleGVjdXRlZC4KK1Rl
c3RpbmcgbXVsdGlwbGUgYXJndW1lbnRzIChkaWZmZXJlbnQgb3JkZXIpOgorUmVzb3VyY2UgMiBs
b2FkZWQgYmVmb3JlIHJlc291cmNlIDEKK0xvYWRlZCByZXNvdXJjZSAyCitMb2FkZWQgcmVzb3Vy
Y2UgMQorUEFTUzogQm90aCBzb3VyY2VzIGxvYWRlZCBhbmQgZXhlY3V0ZWQuCitUZXN0aW5nIG11
bHRpcGxlIGFyZ3VtZW50cywgd2l0aCBkaWZmZXJlbnQgb3JpZ2luIGZvciBvbmUgYXJndW1lbnQ6
CitMb2FkZWQgcmVzb3VyY2UgMQorUEFTUzogbG9hZGVkIHNjcmlwdCBmcm9tIGRpZmZlcmVudCBv
cmlnaW4KK0xvYWRlZCByZXNvdXJjZSAyCitQQVNTOiBhbGwgcmVzb3VyY2VzIGV4ZWN1dGVkLgor
UEFTUzogVGhyZXcgRXJyb3I6IE5FVFdPUktfRVJSOiBYTUxIdHRwUmVxdWVzdCBFeGNlcHRpb24g
MTAxIHdoZW4gbG9hZCBmYWlsZWQKK1BBU1M6IE5vdGhpbmcgd2FzIGV4ZWN1dGVkIHdoZW4gbmV0
d29yayBlcnJvciBvY2N1cnJlZC4KK1Rlc3RpbmcgbXVsdGlwbGUgYXJndW1lbnRzLCB3aXRoIGZp
cnN0IHJlc291cmNlIHRocm93aW5nIGFuIGV4Y2VwdGlvbjoKK0xvYWRlZCByZXNvdXJjZSAxCitG
aXJzdCByZXNvdXJjZSB0aHJvd2luZyBhbiBleGNlcHRpb24KK1BBU1M6IFByb3BhZ2F0ZWQgJ1Ro
cm93biBieSBmaXJzdCByZXNvdXJjZScgZnJvbSBzY3JpcHQKK1BBU1M6IEZpcnN0IHJlc291cmNl
IHdhcyBleGVjdXRlZCwgYW5kIHNlY29uZCByZXNvdXJjZSB3YXMgbm90CitUZXN0aW5nIG11bHRp
cGxlIGFyZ3VtZW50cywgd2l0aCBzZWNvbmQgcmVzb3VyY2UgdGhyb3dpbmcgYW4gZXhjZXB0aW9u
OgorTG9hZGVkIHJlc291cmNlIDEKK0xvYWRlZCByZXNvdXJjZSAyCitTZWNvbmQgcmVzb3VyY2Ug
dGhyb3dpbmcgYW4gZXhjZXB0aW9uCitQQVNTOiBQcm9wYWdhdGVkICdUaHJvd24gYnkgc2Vjb25k
IHJlc291cmNlJyBmcm9tIHNjcmlwdAorUEFTUzogQm90aCBzY3JpcHRzIHdlcmUgZXhlY3V0ZWQK
K0RPTkUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC93b3JrZXJzL3dvcmtlci1pbXBv
cnRTY3JpcHRzLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L3dvcmtlcnMvd29ya2VyLWltcG9ydFNj
cmlwdHMuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mNzBhNDU2Ci0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC93b3JrZXJzL3dvcmtlci1pbXBvcnRT
Y3JpcHRzLmh0bWwKQEAgLTAsMCArMSwyNCBAQAorPGJvZHk+Cis8cD5UZXN0IGltcG9ydFNjcmlw
dHMuPC9wPgorPGRpdiBpZD1yZXN1bHQ+PC9kaXY+Cis8c2NyaXB0PgorZnVuY3Rpb24gbG9nKG1l
c3NhZ2UpCit7CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlc3VsdCIpLmlubmVySFRN
TCArPSBtZXNzYWdlICsgIjxicj4iOworfQorCitpZiAod2luZG93LmxheW91dFRlc3RDb250cm9s
bGVyKSB7CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAgIGxheW91
dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKK30KKwordmFyIHdvcmtlciA9IG5ldyBX
b3JrZXIoJ3Jlc291cmNlcy93b3JrZXItaW1wb3J0U2NyaXB0cy5qcycpOworCit3b3JrZXIub25t
ZXNzYWdlID0gZnVuY3Rpb24oZXZ0KSB7CisgICAgbG9nKGV2dC5kYXRhKTsKKyAgICBpZiAoZXZ0
LmRhdGEgPT0gIkRPTkUiICYmIHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICAgICAg
bGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworfQorPC9zY3JpcHQ+Cis8L2JvZHk+
Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9XZWJDb3JlL0NoYW5nZUxvZyBiL1dlYkNvcmUvQ2hhbmdl
TG9nCmluZGV4IDJhNTdiNGYuLjc5ZjU3OTMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvQ2hhbmdlTG9n
CisrKyBiL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDUgQEAKKzIwMDktMDMtMDYgIE9s
aXZlciBIdW50ICA8b2xpdmVyQGFwcGxlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICA8cmRhcjovL3Byb2JsZW0vNjQyNTgwNz4gSW1wbGVtZW50
IFdvcmtlclV0aWxzLmltcG9ydFNjcmlwdHMoKQorICAgICAgICA8aHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNzIxPgorCisgICAgICAgIEltcGxlbWVudCBpbXBvcnRT
Y3JpcHRzLCBjdXJyZW50bHkgdXNlcyBhIHNlcmllcyBvZiBzeW5jaHJvbm91cyBsb2FkcworICAg
ICAgICB0byBmZXRjaCB0aGUgc2NyaXB0cywgYnV0IHRoaXMgaXMgc2ltcGxlciB0aGFuIGEgc3lu
Y2hyb25vdXMgbG9hZCBvZgorICAgICAgICBtdWx0aXBsZSBsb2FkcyBpbiBwYXJhbGxlbC4gIElu
IGZ1dHVyZSB3ZSdsbCB3YW50IHRvIHN3aXRjaCB0byBwYXJhbGxlbAorICAgICAgICBsb2FkaW5n
LCBidXQgdGhpcyB3aWxsIGRvIGZvciBub3cuCisKKyAgICAgICAgVGVzdDogZmFzdC93b3JrZXJz
L3dvcmtlci1pbXBvcnRTY3JpcHRzLmh0bWwKKworICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU1dvcmtlckNvbnRleHRD
dXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNXb3JrZXJDb250ZXh0OjppbXBvcnRTY3Jp
cHRzKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TY3JpcHRTdHJpbmcuaDoKKyAgICAgICAgKFdl
YkNvcmU6OlNjcmlwdFN0cmluZzo6dG9TdHJpbmcpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1Nj
cmlwdFZhbHVlLmg6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRWYWx1ZTo6aGFzTm9WYWx1ZSk6
CisgICAgICAgICogYmluZGluZ3MvanMvV29ya2VyU2NyaXB0Q29udHJvbGxlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpXb3JrZXJTY3JpcHRDb250cm9sbGVyOjpldmFsdWF0ZSk6CisgICAgICAg
IChXZWJDb3JlOjpXb3JrZXJTY3JpcHRDb250cm9sbGVyOjpzZXRFeGNlcHRpb24pOgorICAgICAg
ICAqIGJpbmRpbmdzL2pzL1dvcmtlclNjcmlwdENvbnRyb2xsZXIuaDoKKyAgICAgICAgKFdlYkNv
cmU6OldvcmtlclNjcmlwdENvbnRyb2xsZXI6OmV4ZWN1dGlvbkZvcmJpZGRlbik6CisgICAgICAg
ICogd29ya2Vycy9Xb3JrZXJDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlckNv
bnRleHQ6OmltcG9ydFNjcmlwdHMpOgorICAgICAgICAqIHdvcmtlcnMvV29ya2VyQ29udGV4dC5o
OgorICAgICAgICAqIHdvcmtlcnMvV29ya2VyQ29udGV4dC5pZGw6CisgICAgICAgICogd29ya2Vy
cy9Xb3JrZXJJbXBvcnRTY3JpcHRzQ2xpZW50LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3Jl
OjpXb3JrZXJJbXBvcnRTY3JpcHRzQ2xpZW50OjpkaWRSZWNlaXZlUmVzcG9uc2UpOgorICAgICAg
ICAoV2ViQ29yZTo6V29ya2VySW1wb3J0U2NyaXB0c0NsaWVudDo6ZGlkUmVjZWl2ZURhdGEpOgor
ICAgICAgICAoV2ViQ29yZTo6V29ya2VySW1wb3J0U2NyaXB0c0NsaWVudDo6ZGlkRmluaXNoTG9h
ZGluZyk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJJbXBvcnRTY3JpcHRzQ2xpZW50OjpkaWRG
YWlsKToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlckltcG9ydFNjcmlwdHNDbGllbnQ6OmRpZEZh
aWxSZWRpcmVjdENoZWNrKToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlckltcG9ydFNjcmlwdHND
bGllbnQ6OmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNhbmNlbGxhdGlvbik6CisgICAgICAgICog
d29ya2Vycy9Xb3JrZXJJbXBvcnRTY3JpcHRzQ2xpZW50Lmg6IEFkZGVkLgorICAgICAgICAoV2Vi
Q29yZTo6V29ya2VySW1wb3J0U2NyaXB0c0NsaWVudDo6V29ya2VySW1wb3J0U2NyaXB0c0NsaWVu
dCk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJJbXBvcnRTY3JpcHRzQ2xpZW50OjpzY3JpcHQp
OgorICAgICAgICAoV2ViQ29yZTo6V29ya2VySW1wb3J0U2NyaXB0c0NsaWVudDo6ZmFpbGVkKToK
KwogMjAwOS0wMy0wNSAgSmVyZW15IE1vc2tvdmljaCAgPGplcmVteUBjaHJvbWl1bS5vcmc+CiAK
ICAgICAgICAgUmV2aWV3ZWQgYnkgU2ltb24gRnJhc2VyLgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9X
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9XZWJDb3JlL1dlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBiNTBlYjgwLi4xYmQ3MjJkIDEwMDY0NAotLS0gYS9X
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9XZWJDb3JlL1dl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMjE1Myw2ICsyMTUzLDggQEAKIAkJ
QTdEMDMxOEUwRTkzNTQwMzAwRTI0QUNEIC8qIEpTSW1hZ2VEYXRhQ3VzdG9tLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3RDAzMThEMEU5MzU0MDMw
MEUyNEFDRCAvKiBKU0ltYWdlRGF0YUN1c3RvbS5jcHAgKi87IH07CiAJCUE3RDI3RkM0MEUwQTU5
OUYwMDc5QUQyQiAvKiBTVkdGRVRpbGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQTdEMjdGQzMwRTBBNTk5RjAwNzlBRDJCIC8qIFNWR0ZFVGlsZS5j
cHAgKi87IH07CiAJCUE3RDNDNTI0MEI1NzZCNEIwMDJDQTQ1MCAvKiBQYXN0ZWJvYXJkSGVscGVy
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBN0QzQzUy
MzBCNTc2QjRCMDAyQ0E0NTAgLyogUGFzdGVib2FyZEhlbHBlci5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUE3RDZCMzQ5MEY2MTEwNDUwMEI3OUZE
MSAvKiBXb3JrZXJJbXBvcnRTY3JpcHRzQ2xpZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBN0Q2QjM0NzBGNjExMDQ1MDBCNzlGRDEgLyogV29ya2Vy
SW1wb3J0U2NyaXB0c0NsaWVudC5oICovOyB9OworCQlBN0Q2QjM0QTBGNjExMDQ1MDBCNzlGRDEg
LyogV29ya2VySW1wb3J0U2NyaXB0c0NsaWVudC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBN0Q2QjM0ODBGNjExMDQ1MDBCNzlGRDEgLyogV29ya2Vy
SW1wb3J0U2NyaXB0c0NsaWVudC5jcHAgKi87IH07CiAJCUE4MDlGMTQ3MEI3Mzc5M0EwMDJFNEQ3
RiAvKiBSZW5kZXJTVkdHcmFkaWVudFN0b3AuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEE4MDlGMTQ1MEI3Mzc5M0EwMDJFNEQ3RiAvKiBSZW5kZXJTVkdH
cmFkaWVudFN0b3AuaCAqLzsgfTsKIAkJQTgwOUYxNDgwQjczNzkzQjAwMkU0RDdGIC8qIFJlbmRl
clNWR0dyYWRpZW50U3RvcC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBBODA5RjE0NjBCNzM3OTNBMDAyRTREN0YgLyogUmVuZGVyU1ZHR3JhZGllbnRT
dG9wLmNwcCAqLzsgfTsKIAkJQTgwOUYxQUEwQjczN0ZCNjAwMkU0RDdGIC8qIFJlbmRlclNWR0hp
ZGRlbkNvbnRhaW5lci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQTgwOUYxQTgwQjczN0ZCNjAwMkU0RDdGIC8qIFJlbmRlclNWR0hpZGRlbkNvbnRhaW5l
ci5oICovOyB9OwpAQCAtNzA2NCw2ICs3MDY2LDggQEAKIAkJQTdEMDMxOEQwRTkzNTQwMzAwRTI0
QUNEIC8qIEpTSW1hZ2VEYXRhQ3VzdG9tLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IEpTSW1hZ2VEYXRhQ3VzdG9tLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJQTdEMjdGQzMwRTBBNTk5RjAwNzlBRDJCIC8qIFNWR0ZFVGlsZS5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTVkdGRVRpbGUuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlBN0QzQzUyMzBCNTc2QjRCMDAyQ0E0NTAgLyogUGFzdGVib2FyZEhl
bHBlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQYXN0ZWJvYXJkSGVscGVy
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE3RDZCMzQ3MEY2MTEwNDUwMEI3OUZE
MSAvKiBXb3JrZXJJbXBvcnRTY3JpcHRzQ2xpZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgbmFtZSA9IFdvcmtlckltcG9ydFNjcmlwdHNDbGllbnQuaDsgcGF0aCA9IHdvcmtlcnMvV29y
a2VySW1wb3J0U2NyaXB0c0NsaWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlB
N0Q2QjM0ODBGNjExMDQ1MDBCNzlGRDEgLyogV29ya2VySW1wb3J0U2NyaXB0c0NsaWVudC5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBXb3JrZXJJbXBvcnRTY3JpcHRz
Q2xpZW50LmNwcDsgcGF0aCA9IHdvcmtlcnMvV29ya2VySW1wb3J0U2NyaXB0c0NsaWVudC5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE4MDlGMTQ1MEI3Mzc5M0EwMDJFNEQ3RiAv
KiBSZW5kZXJTVkdHcmFkaWVudFN0b3AuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gUmVuZGVyU1ZHR3JhZGllbnRTdG9wLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUE4MDlGMTQ2MEI3Mzc5M0EwMDJFNEQ3RiAvKiBSZW5kZXJTVkdHcmFkaWVudFN0b3AuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVuZGVyU1ZHR3JhZGllbnRTdG9w
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTgwOUYxQTgwQjczN0ZCNjAwMkU0
RDdGIC8qIFJlbmRlclNWR0hpZGRlbkNvbnRhaW5lci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBSZW5kZXJTVkdIaWRkZW5Db250YWluZXIuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKQEAgLTk3ODQsNiArOTc4OCw4IEBACiAJCQkJMkU0MzQ2NDEwRjU0NkE4MjAwQjBG
MUJBIC8qIFdvcmtlclJ1bkxvb3AuaCAqLywKIAkJCQkyRTQzNDY0MjBGNTQ2QTgyMDBCMEYxQkEg
LyogV29ya2VyVGhyZWFkLmNwcCAqLywKIAkJCQkyRTQzNDY0MzBGNTQ2QTgyMDBCMEYxQkEgLyog
V29ya2VyVGhyZWFkLmggKi8sCisJCQkJQTdENkIzNDcwRjYxMTA0NTAwQjc5RkQxIC8qIFdvcmtl
ckltcG9ydFNjcmlwdHNDbGllbnQuaCAqLywKKwkJCQlBN0Q2QjM0ODBGNjExMDQ1MDBCNzlGRDEg
LyogV29ya2VySW1wb3J0U2NyaXB0c0NsaWVudC5jcHAgKi8sCiAJCQkpOwogCQkJbmFtZSA9IHdv
cmtlcnM7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwpAQCAtMTY4NDUsNiArMTY4NTEsNyBA
QAogCQkJCTQxRjA2MThFMEY1RjA2OTgwMEEwN0VBQyAvKiBDb25zb2xlTWVzc2FnZS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJNDFGMDYyMDEwRjVGMEI2NjAwQTA3RUFDIC8qIEluc3BlY3RvclJlc291
cmNlLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MUYwNjIxNDBGNUYxOTI2MDBBMDdFQUMgLyogSW5z
cGVjdG9yRGF0YWJhc2VSZXNvdXJjZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJQTdENkIzNDkwRjYx
MTA0NTAwQjc5RkQxIC8qIFdvcmtlckltcG9ydFNjcmlwdHNDbGllbnQuaCBpbiBIZWFkZXJzICov
LAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9
OwpAQCAtMTg4MzksNiArMTg4NDYsNyBAQAogCQkJCTQxRjA2MThGMEY1RjA2OTgwMEEwN0VBQyAv
KiBDb25zb2xlTWVzc2FnZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk0MUYwNjIwMjBGNUYwQjY2
MDBBMDdFQUMgLyogSW5zcGVjdG9yUmVzb3VyY2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNDFG
MDYyMTUwRjVGMTkyNjAwQTA3RUFDIC8qIEluc3BlY3RvckRhdGFiYXNlUmVzb3VyY2UuY3BwIGlu
IFNvdXJjZXMgKi8sCisJCQkJQTdENkIzNEEwRjYxMTA0NTAwQjc5RkQxIC8qIFdvcmtlckltcG9y
dFNjcmlwdHNDbGllbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRl
cGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CmRpZmYgLS1naXQgYS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTV29ya2VyQ29udGV4dEN1c3RvbS5jcHAgYi9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTV29ya2VyQ29udGV4dEN1c3RvbS5jcHAKaW5kZXggYzNlZjljMS4uMWQ0OGMzYSAxMDA2NDQK
LS0tIGEvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dvcmtlckNvbnRleHRDdXN0b20uY3BwCisrKyBi
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNXb3JrZXJDb250ZXh0Q3VzdG9tLmNwcApAQCAtMzMsNiAr
MzMsNyBAQAogI2luY2x1ZGUgIkpTRXZlbnRMaXN0ZW5lci5oIgogI2luY2x1ZGUgIlNjaGVkdWxl
ZEFjdGlvbi5oIgogI2luY2x1ZGUgIldvcmtlckNvbnRleHQuaCIKKyNpbmNsdWRlIDxpbnRlcnBy
ZXRlci9JbnRlcnByZXRlci5oPgogCiB1c2luZyBuYW1lc3BhY2UgSlNDOwogCkBAIC03Niw2ICs3
NywyOSBAQCB2b2lkIEpTV29ya2VyQ29udGV4dDo6c2V0U2VsZihFeGVjU3RhdGUqIGV4ZWMsIEpT
VmFsdWVQdHIgdmFsdWUpCiAgICAgcHV0RGlyZWN0KElkZW50aWZpZXIoZXhlYywgInNlbGYiKSwg
dmFsdWUpOwogfQogCitKU1ZhbHVlUHRyIEpTV29ya2VyQ29udGV4dDo6aW1wb3J0U2NyaXB0cyhF
eGVjU3RhdGUqIGV4ZWMsIGNvbnN0IEFyZ0xpc3QmIGFyZ3MpCit7CisgICAgaWYgKCFhcmdzLnNp
emUoKSkKKyAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CisKKyAgICBWZWN0b3I8U3RyaW5n
PiB1cmxzOworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBhcmdzLnNpemUoKTsgaSsrKSB7
CisgICAgICAgIHVybHMuYXBwZW5kKGFyZ3MuYXQoZXhlYywgaSkudG9TdHJpbmcoZXhlYykpOwor
ICAgICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCisgICAgICAgICAgICByZXR1cm4ganNO
dWxsKCk7CisgICAgfQorICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOworICAgIGludCBzaWduZWRM
aW5lTnVtYmVyOworICAgIGludHB0cl90IHNvdXJjZUlEOworICAgIFVTdHJpbmcgc291cmNlVVJM
OworICAgIEpTVmFsdWVQdHIgZnVuY3Rpb247CisgICAgZXhlYy0+aW50ZXJwcmV0ZXIoKS0+cmV0
cmlldmVMYXN0Q2FsbGVyKGV4ZWMsIHNpZ25lZExpbmVOdW1iZXIsIHNvdXJjZUlELCBzb3VyY2VV
UkwsIGZ1bmN0aW9uKTsKKworICAgIGltcGwoKS0+aW1wb3J0U2NyaXB0cyh1cmxzLCBzb3VyY2VV
UkwsIHNpZ25lZExpbmVOdW1iZXIgPj0gMCA/IHNpZ25lZExpbmVOdW1iZXIgOiAwLCBlYyk7Cisg
ICAgc2V0RE9NRXhjZXB0aW9uKGV4ZWMsIGVjKTsKKyAgICByZXR1cm4ganNVbmRlZmluZWQoKTsK
K30KKwogSlNWYWx1ZVB0ciBKU1dvcmtlckNvbnRleHQ6OmFkZEV2ZW50TGlzdGVuZXIoRXhlY1N0
YXRlKiBleGVjLCBjb25zdCBBcmdMaXN0JiBhcmdzKQogewogICAgIFJlZlB0cjxKU1VucHJvdGVj
dGVkRXZlbnRMaXN0ZW5lcj4gbGlzdGVuZXIgPSBmaW5kT3JDcmVhdGVKU1VucHJvdGVjdGVkRXZl
bnRMaXN0ZW5lcihleGVjLCBhcmdzLmF0KGV4ZWMsIDEpKTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUv
YmluZGluZ3MvanMvU2NyaXB0VmFsdWUuaCBiL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0VmFs
dWUuaAppbmRleCA4NTU1MDlhLi4zY2VlMDliIDEwMDY0NAotLS0gYS9XZWJDb3JlL2JpbmRpbmdz
L2pzL1NjcmlwdFZhbHVlLmgKKysrIGIvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRWYWx1ZS5o
CkBAIC00NSw2ICs0NSw3IEBAIHB1YmxpYzoKICAgICBib29sIGdldFN0cmluZyhTdHJpbmcmIHJl
c3VsdCkgY29uc3Q7CiAgICAgYm9vbCBpc051bGwoKSBjb25zdDsKICAgICBib29sIGlzVW5kZWZp
bmVkKCkgY29uc3Q7CisgICAgYm9vbCBoYXNOb1ZhbHVlKCkgY29uc3QgeyByZXR1cm4gbV92YWx1
ZSA9PSBKU0M6Om5vVmFsdWUoKTsgfQogCiBwcml2YXRlOgogICAgIEpTQzo6UHJvdGVjdGVkSlNW
YWx1ZVB0ciBtX3ZhbHVlOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5kaW5ncy9qcy9Xb3JrZXJT
Y3JpcHRDb250cm9sbGVyLmNwcCBiL1dlYkNvcmUvYmluZGluZ3MvanMvV29ya2VyU2NyaXB0Q29u
dHJvbGxlci5jcHAKaW5kZXggYWI5N2I1Mi4uN2ZjYTk3MSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9i
aW5kaW5ncy9qcy9Xb3JrZXJTY3JpcHRDb250cm9sbGVyLmNwcAorKysgYi9XZWJDb3JlL2JpbmRp
bmdzL2pzL1dvcmtlclNjcmlwdENvbnRyb2xsZXIuY3BwCkBAIC04MCw2ICs4MCwyMCBAQCBTY3Jp
cHRWYWx1ZSBXb3JrZXJTY3JpcHRDb250cm9sbGVyOjpldmFsdWF0ZShjb25zdCBTY3JpcHRTb3Vy
Y2VDb2RlJiBzb3VyY2VDb2RlKQogICAgICAgICBpZiAobV9leGVjdXRpb25Gb3JiaWRkZW4pCiAg
ICAgICAgICAgICByZXR1cm4gbm9WYWx1ZSgpOwogICAgIH0KKyAgICBTY3JpcHRWYWx1ZSBleGNl
cHRpb247CisgICAgU2NyaXB0VmFsdWUgcmVzdWx0ID0gZXZhbHVhdGUoc291cmNlQ29kZSwgJmV4
Y2VwdGlvbik7CisgICAgaWYgKGV4Y2VwdGlvbi5qc1ZhbHVlKCkpCisgICAgICAgIHJlcG9ydEV4
Y2VwdGlvbihtX3dvcmtlckNvbnRleHRXcmFwcGVyLT5nbG9iYWxFeGVjKCksIGV4Y2VwdGlvbi5q
c1ZhbHVlKCkpOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK1NjcmlwdFZhbHVlIFdvcmtlclNj
cmlwdENvbnRyb2xsZXI6OmV2YWx1YXRlKGNvbnN0IFNjcmlwdFNvdXJjZUNvZGUmIHNvdXJjZUNv
ZGUsIFNjcmlwdFZhbHVlKiBleGNlcHRpb24pCit7CisgICAgeworICAgICAgICBNdXRleExvY2tl
ciBsb2NrKG1fc2hhcmVkRGF0YU11dGV4KTsKKyAgICAgICAgaWYgKG1fZXhlY3V0aW9uRm9yYmlk
ZGVuKQorICAgICAgICAgICAgcmV0dXJuIG5vVmFsdWUoKTsKKyAgICB9CiAKICAgICBpbml0U2Ny
aXB0SWZOZWVkZWQoKTsKICAgICBKU0xvY2sgbG9jayhmYWxzZSk7CkBAIC05NSwxMCArMTA5LDE1
IEBAIFNjcmlwdFZhbHVlIFdvcmtlclNjcmlwdENvbnRyb2xsZXI6OmV2YWx1YXRlKGNvbnN0IFNj
cmlwdFNvdXJjZUNvZGUmIHNvdXJjZUNvZGUpCiAgICAgICAgIHJldHVybiBjb21wLnZhbHVlKCk7
CiAKICAgICBpZiAoY29tcC5jb21wbFR5cGUoKSA9PSBUaHJvdykKLSAgICAgICAgcmVwb3J0RXhj
ZXB0aW9uKGV4ZWMsIGNvbXAudmFsdWUoKSk7CisgICAgICAgICpleGNlcHRpb24gPSBjb21wLnZh
bHVlKCk7CiAgICAgcmV0dXJuIG5vVmFsdWUoKTsKIH0KIAordm9pZCBXb3JrZXJTY3JpcHRDb250
cm9sbGVyOjpzZXRFeGNlcHRpb24oU2NyaXB0VmFsdWUgZXhjZXB0aW9uKQoreworICAgIG1fd29y
a2VyQ29udGV4dFdyYXBwZXItPmdsb2JhbEV4ZWMoKS0+c2V0RXhjZXB0aW9uKGV4Y2VwdGlvbi5q
c1ZhbHVlKCkpOworfQorCiB2b2lkIFdvcmtlclNjcmlwdENvbnRyb2xsZXI6OmZvcmJpZEV4ZWN1
dGlvbigpCiB7CiAgICAgLy8gVGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgZnJvbSBhbm90aGVyIHRo
cmVhZC4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvYmluZGluZ3MvanMvV29ya2VyU2NyaXB0Q29udHJv
bGxlci5oIGIvV2ViQ29yZS9iaW5kaW5ncy9qcy9Xb3JrZXJTY3JpcHRDb250cm9sbGVyLmgKaW5k
ZXggMWRkYTVkYS4uYjMxM2Q5MyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9iaW5kaW5ncy9qcy9Xb3Jr
ZXJTY3JpcHRDb250cm9sbGVyLmgKKysrIGIvV2ViQ29yZS9iaW5kaW5ncy9qcy9Xb3JrZXJTY3Jp
cHRDb250cm9sbGVyLmgKQEAgLTU3LDkgKzU3LDExIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAg
ICAgICAgfQogCiAgICAgICAgIFNjcmlwdFZhbHVlIGV2YWx1YXRlKGNvbnN0IFNjcmlwdFNvdXJj
ZUNvZGUmKTsKKyAgICAgICAgU2NyaXB0VmFsdWUgZXZhbHVhdGUoY29uc3QgU2NyaXB0U291cmNl
Q29kZSYsIFNjcmlwdFZhbHVlKiBleGNlcHRpb24pOworICAgICAgICB2b2lkIHNldEV4Y2VwdGlv
bihTY3JpcHRWYWx1ZSk7CiAKICAgICAgICAgdm9pZCBmb3JiaWRFeGVjdXRpb24oKTsKLQorICAg
ICAgICBib29sIGV4ZWN1dGlvbkZvcmJpZGRlbigpIGNvbnN0IHsgcmV0dXJuIG1fZXhlY3V0aW9u
Rm9yYmlkZGVuOyB9CiAgICAgcHJpdmF0ZToKICAgICAgICAgdm9pZCBpbml0U2NyaXB0SWZOZWVk
ZWQoKQogICAgICAgICB7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25D
b250ZXh0LmggYi9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmgKaW5kZXggY2Yz
MjdkNy4uMjRmNjFiOCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dC5oCisrKyBiL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaApAQCAtNjYs
NyArNjYsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZpcnR1YWwgdm9pZCByZXBv
cnRFeGNlcHRpb24oY29uc3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UsIGludCBsaW5lTnVtYmVyLCBj
b25zdCBTdHJpbmcmIHNvdXJjZVVSTCkgPSAwOwogICAgICAgICB2aXJ0dWFsIHZvaWQgYWRkTWVz
c2FnZShNZXNzYWdlRGVzdGluYXRpb24sIE1lc3NhZ2VTb3VyY2UsIE1lc3NhZ2VMZXZlbCwgY29u
c3QgU3RyaW5nJiBtZXNzYWdlLCB1bnNpZ25lZCBsaW5lTnVtYmVyLCBjb25zdCBTdHJpbmcmIHNv
dXJjZVVSTCkgPSAwOwogICAgICAgICB2aXJ0dWFsIHZvaWQgcmVzb3VyY2VSZXRyaWV2ZWRCeVhN
TEh0dHBSZXF1ZXN0KHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgU2NyaXB0U3RyaW5n
JiBzb3VyY2VTdHJpbmcpID0gMDsKLQorICAgICAgICB2aXJ0dWFsIHZvaWQgc2NyaXB0SW1wb3J0
ZWQodW5zaWduZWQgbG9uZywgY29uc3QgU3RyaW5nJikgeyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsg
fQorICAgICAgICAKICAgICAgICAgLy8gQWN0aXZlIG9iamVjdHMgYXJlIG5vdCBnYXJiYWdlIGNv
bGxlY3RlZCBldmVuIGlmIGluYWNjZXNzaWJsZSwgZS5nLiBiZWNhdXNlIHRoZWlyIGFjdGl2aXR5
IG1heSByZXN1bHQgaW4gY2FsbGJhY2tzIGJlaW5nIGludm9rZWQuCiAgICAgICAgIGJvb2wgY2Fu
U3VzcGVuZEFjdGl2ZURPTU9iamVjdHMoKTsKICAgICAgICAgLy8gQWN0aXZlIG9iamVjdHMgY2Fu
IGJlIGFza2VkIHRvIHN1c3BlbmQgZXZlbiBpZiBjYW5TdXNwZW5kQWN0aXZlRE9NT2JqZWN0cygp
IHJldHVybnMgJ2ZhbHNlJyAtCmRpZmYgLS1naXQgYS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyQ29u
dGV4dC5jcHAgYi9XZWJDb3JlL3dvcmtlcnMvV29ya2VyQ29udGV4dC5jcHAKaW5kZXggYTI5YThl
NC4uOTE2NWNjZSAxMDA2NDQKLS0tIGEvV2ViQ29yZS93b3JrZXJzL1dvcmtlckNvbnRleHQuY3Bw
CisrKyBiL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJDb250ZXh0LmNwcApAQCAtMzgsMTEgKzM4LDE3
IEBACiAjaW5jbHVkZSAiRXZlbnRFeGNlcHRpb24uaCIKICNpbmNsdWRlICJNZXNzYWdlRXZlbnQu
aCIKICNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgorI2luY2x1ZGUgIlJlc291cmNlUmVxdWVz
dC5oIgorI2luY2x1ZGUgIlNjcmlwdFNvdXJjZUNvZGUuaCIKKyNpbmNsdWRlICJTY3JpcHRWYWx1
ZS5oIgogI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCisjaW5jbHVkZSAiVGhyZWFkYWJsZUxv
YWRlci5oIgorI2luY2x1ZGUgIldvcmtlckltcG9ydFNjcmlwdHNDbGllbnQuaCIKICNpbmNsdWRl
ICJXb3JrZXJMb2NhdGlvbi5oIgogI2luY2x1ZGUgIldvcmtlck5hdmlnYXRvci5oIgogI2luY2x1
ZGUgIldvcmtlck9iamVjdFByb3h5LmgiCiAjaW5jbHVkZSAiV29ya2VyVGhyZWFkLmgiCisjaW5j
bHVkZSAiWE1MSHR0cFJlcXVlc3RFeGNlcHRpb24uaCIKICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTEyOCw2ICsxMzQsMTIgQEAgdm9pZCBXb3JrZXJD
b250ZXh0OjpyZXNvdXJjZVJldHJpZXZlZEJ5WE1MSHR0cFJlcXVlc3QodW5zaWduZWQgbG9uZywg
Y29uc3QgU2NyaXAKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQogCit2b2lkIFdvcmtlckNvbnRl
eHQ6OnNjcmlwdEltcG9ydGVkKHVuc2lnbmVkIGxvbmcsIGNvbnN0IFN0cmluZyYpCit7CisgICAg
Ly8gRklYTUU6IFRoZSBpbXBsZW1lbnRhdGlvbiBpcyBwZW5kaW5nIHRoZSBmaXhlcyBpbiBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMxNzUKKyAgICBub3RJbXBsZW1l
bnRlZCgpOworfQorCiB2b2lkIFdvcmtlckNvbnRleHQ6OnBvc3RNZXNzYWdlKGNvbnN0IFN0cmlu
ZyYgbWVzc2FnZSkKIHsKICAgICBtX3RocmVhZC0+d29ya2VyT2JqZWN0UHJveHkoKS0+cG9zdE1l
c3NhZ2VUb1dvcmtlck9iamVjdChtZXNzYWdlKTsKQEAgLTIxNCw2ICsyMjYsNDcgQEAgdm9pZCBX
b3JrZXJDb250ZXh0OjpkaXNwYXRjaE1lc3NhZ2UoY29uc3QgU3RyaW5nJiBtZXNzYWdlKQogICAg
IEFTU0VSVCghZWMpOwogfQogCit2b2lkIFdvcmtlckNvbnRleHQ6OmltcG9ydFNjcmlwdHMoY29u
c3QgVmVjdG9yPFN0cmluZz4mIHVybHMsIGNvbnN0IFN0cmluZyYgY2FsbGVyVVJMLCBpbnQgY2Fs
bGVyTGluZSwgRXhjZXB0aW9uQ29kZSYgZWMpCit7CisgICAgZWMgPSAwOworICAgIFZlY3RvcjxT
dHJpbmc+Ojpjb25zdF9pdGVyYXRvciB1cmxzRW5kID0gdXJscy5lbmQoKTsKKyAgICBWZWN0b3I8
S1VSTD4gY29tcGxldGVkVXJsczsKKyAgICBmb3IgKFZlY3RvcjxTdHJpbmc+Ojpjb25zdF9pdGVy
YXRvciBpdCA9IHVybHMuYmVnaW4oKTsgaXQgIT0gdXJsc0VuZDsgKytpdCkgeworICAgICAgICBj
b25zdCBLVVJMJiB1cmwgPSBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPmNvbXBsZXRlVVJMKCpp
dCk7CisgICAgICAgIGlmICghdXJsLmlzVmFsaWQoKSkgeworICAgICAgICAgICAgZWMgPSBTWU5U
QVhfRVJSOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIGNvbXBsZXRl
ZFVybHMuYXBwZW5kKHVybCk7CisgICAgfQorICAgIFN0cmluZyBzZWN1cml0eU9yaWdpbiA9IHNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+c2VjdXJpdHlPcmlnaW4oKS0+dG9TdHJpbmcoKTsKKyAg
ICBWZWN0b3I8S1VSTD46OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IGNvbXBsZXRlZFVybHMuZW5kKCk7
CisgICAgVmVjdG9yPFNjcmlwdFNvdXJjZUNvZGU+IHNvdXJjZXM7CisgICAgZm9yIChWZWN0b3I8
S1VSTD46OmNvbnN0X2l0ZXJhdG9yIGl0ID0gY29tcGxldGVkVXJscy5iZWdpbigpOyBpdCAhPSBl
bmQgJiYgIW1fc2NyaXB0LT5leGVjdXRpb25Gb3JiaWRkZW4oKTsgKytpdCkgeworICAgICAgICBS
ZXNvdXJjZVJlcXVlc3QgcmVxdWVzdCgqaXQpOworICAgICAgICByZXF1ZXN0LnNldEhUVFBNZXRo
b2QoIkdFVCIpOworICAgICAgICByZXF1ZXN0LnNldEhUVFBPcmlnaW4oc2VjdXJpdHlPcmlnaW4p
OworICAgICAgICBXb3JrZXJJbXBvcnRTY3JpcHRzQ2xpZW50IGNsaWVudChzY3JpcHRFeGVjdXRp
b25Db250ZXh0KCksICppdCwgY2FsbGVyVVJMLCBjYWxsZXJMaW5lKTsKKyAgICAgICAgVGhyZWFk
YWJsZUxvYWRlcjo6bG9hZFJlc291cmNlU3luY2hyb25vdXNseShzY3JpcHRFeGVjdXRpb25Db250
ZXh0KCksIHJlcXVlc3QsIGNsaWVudCk7CisgICAgICAgIAorICAgICAgICAvLyBJZiB0aGUgZmV0
Y2hpbmcgYXR0ZW1wdCBmYWlsZWQsIHRocm93IGEgTkVUV09SS19FUlIgZXhjZXB0aW9uIGFuZCBh
Ym9ydCBhbGwgdGhlc2Ugc3RlcHMuCisgICAgICAgIGlmIChjbGllbnQuZmFpbGVkKCkpIHsKKyAg
ICAgICAgICAgIGVjID0gWE1MSHR0cFJlcXVlc3RFeGNlcHRpb246Ok5FVFdPUktfRVJSOworICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIHNvdXJjZXMuYXBwZW5kKFNjcmlw
dFNvdXJjZUNvZGUoY2xpZW50LnNjcmlwdCgpLCAqaXQpKTsKKyAgICB9CisgICAgVmVjdG9yPFNj
cmlwdFNvdXJjZUNvZGU+Ojpjb25zdF9pdGVyYXRvciBzb3VyY2VFbmQgPSBzb3VyY2VzLmVuZCgp
OworICAgIGZvciAoVmVjdG9yPFNjcmlwdFNvdXJjZUNvZGU+Ojpjb25zdF9pdGVyYXRvciBpdCA9
IHNvdXJjZXMuYmVnaW4oKTsgaXQgIT0gc291cmNlRW5kICYmICFtX3NjcmlwdC0+ZXhlY3V0aW9u
Rm9yYmlkZGVuKCk7ICsraXQpIHsKKyAgICAgICAgU2NyaXB0VmFsdWUgZXhjZXB0aW9uOworICAg
ICAgICBtX3NjcmlwdC0+ZXZhbHVhdGUoKml0LCAmZXhjZXB0aW9uKTsKKyAgICAgICAgaWYgKCFl
eGNlcHRpb24uaGFzTm9WYWx1ZSgpKSB7CisgICAgICAgICAgICBtX3NjcmlwdC0+c2V0RXhjZXB0
aW9uKGV4Y2VwdGlvbik7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICB9Cit9
CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShXT1JLRVJTKQpk
aWZmIC0tZ2l0IGEvV2ViQ29yZS93b3JrZXJzL1dvcmtlckNvbnRleHQuaCBiL1dlYkNvcmUvd29y
a2Vycy9Xb3JrZXJDb250ZXh0LmgKaW5kZXggNDE0ZTEzYS4uMzlhNWI5YiAxMDA2NDQKLS0tIGEv
V2ViQ29yZS93b3JrZXJzL1dvcmtlckNvbnRleHQuaAorKysgYi9XZWJDb3JlL3dvcmtlcnMvV29y
a2VyQ29udGV4dC5oCkBAIC03Niw2ICs3Niw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAg
ICAgdmlydHVhbCB2b2lkIHJlcG9ydEV4Y2VwdGlvbihjb25zdCBTdHJpbmcmIGVycm9yTWVzc2Fn
ZSwgaW50IGxpbmVOdW1iZXIsIGNvbnN0IFN0cmluZyYgc291cmNlVVJMKTsKICAgICAgICAgdmly
dHVhbCB2b2lkIGFkZE1lc3NhZ2UoTWVzc2FnZURlc3RpbmF0aW9uLCBNZXNzYWdlU291cmNlLCBN
ZXNzYWdlTGV2ZWwsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgdW5zaWduZWQgbGluZU51bWJlciwg
Y29uc3QgU3RyaW5nJiBzb3VyY2VVUkwpOwogICAgICAgICB2aXJ0dWFsIHZvaWQgcmVzb3VyY2VS
ZXRyaWV2ZWRCeVhNTEh0dHBSZXF1ZXN0KHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3Qg
U2NyaXB0U3RyaW5nJiBzb3VyY2VTdHJpbmcpOworICAgICAgICB2aXJ0dWFsIHZvaWQgc2NyaXB0
SW1wb3J0ZWQodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIHNvdXJjZVN0
cmluZyk7CiAKICAgICAgICAgdmlydHVhbCBXb3JrZXJDb250ZXh0KiB0b1dvcmtlckNvbnRleHQo
KSB7IHJldHVybiB0aGlzOyB9CiAKQEAgLTk4LDYgKzk5LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogICAgICAgICB0eXBlZGVmIEhhc2hNYXA8QXRvbWljU3RyaW5nLCBMaXN0ZW5lclZlY3Rvcj4g
RXZlbnRMaXN0ZW5lcnNNYXA7CiAgICAgICAgIEV2ZW50TGlzdGVuZXJzTWFwJiBldmVudExpc3Rl
bmVycygpIHsgcmV0dXJuIG1fZXZlbnRMaXN0ZW5lcnM7IH0KIAorICAgICAgICB2b2lkIGltcG9y
dFNjcmlwdHMoY29uc3QgVmVjdG9yPFN0cmluZz4mIHVybHMsIGNvbnN0IFN0cmluZyYgY2FsbGVy
VVJMLCBpbnQgY2FsbGVyTGluZSwgRXhjZXB0aW9uQ29kZSYpOworICAgICAgICAKICAgICAgICAg
dXNpbmcgUmVmQ291bnRlZDxXb3JrZXJDb250ZXh0Pjo6cmVmOwogICAgICAgICB1c2luZyBSZWZD
b3VudGVkPFdvcmtlckNvbnRleHQ+OjpkZXJlZjsKIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS93b3Jr
ZXJzL1dvcmtlckNvbnRleHQuaWRsIGIvV2ViQ29yZS93b3JrZXJzL1dvcmtlckNvbnRleHQuaWRs
CmluZGV4IGUxZmZmNTEuLmJiZmNhNjMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvd29ya2Vycy9Xb3Jr
ZXJDb250ZXh0LmlkbAorKysgYi9XZWJDb3JlL3dvcmtlcnMvV29ya2VyQ29udGV4dC5pZGwKQEAg
LTQwLDYgKzQwLDcgQEAgbW9kdWxlIHRocmVhZHMgewogCiAgICAgICAgIGF0dHJpYnV0ZSBFdmVu
dExpc3RlbmVyIG9ubWVzc2FnZTsKICAgICAgICAgdm9pZCBwb3N0TWVzc2FnZShpbiBET01TdHJp
bmcgbWVzc2FnZSk7CisgICAgICAgIFtDdXN0b21dIHZvaWQgaW1wb3J0U2NyaXB0cygvKiB1cmxz
ICovKTsKIAogICAgICAgICBhdHRyaWJ1dGUgW1JlcGxhY2VhYmxlXSBXb3JrZXJMb2NhdGlvbiBs
b2NhdGlvbjsKICAgICAgICAgYXR0cmlidXRlIFtSZXBsYWNlYWJsZV0gV29ya2VyTmF2aWdhdG9y
IG5hdmlnYXRvcjsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJJbXBvcnRTY3Jp
cHRzQ2xpZW50LmNwcCBiL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJJbXBvcnRTY3JpcHRzQ2xpZW50
LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yZjI4Yzk1Ci0tLSAvZGV2
L251bGwKKysrIGIvV2ViQ29yZS93b3JrZXJzL1dvcmtlckltcG9ydFNjcmlwdHNDbGllbnQuY3Bw
CkBAIC0wLDAgKzEsOTMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgQXBwbGUgSW5jLiBB
bGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisj
aW5jbHVkZSAiV29ya2VySW1wb3J0U2NyaXB0c0NsaWVudC5oIgorCisjaW5jbHVkZSAiU2NyaXB0
RXhlY3V0aW9uQ29udGV4dC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3ZvaWQgV29ya2Vy
SW1wb3J0U2NyaXB0c0NsaWVudDo6ZGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVz
cG9uc2UmIHJlc3BvbnNlKQoreworICAgIGlmIChyZXNwb25zZS5odHRwU3RhdHVzQ29kZSgpIC8g
MTAwICE9IDIgJiYgcmVzcG9uc2UuaHR0cFN0YXR1c0NvZGUoKSAhPSAwKSB7CisgICAgICAgIG1f
ZmFpbGVkID0gdHJ1ZTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBtX3Jlc3BvbnNlID0g
cmVzcG9uc2U7CisgICAgbV9yZXNwb25zZUVuY29kaW5nID0gcmVzcG9uc2UudGV4dEVuY29kaW5n
TmFtZSgpOworfQorCit2b2lkIFdvcmtlckltcG9ydFNjcmlwdHNDbGllbnQ6OmRpZFJlY2VpdmVE
YXRhKGNvbnN0IGNoYXIqIGRhdGEsIGludCBsZW4pCit7CisgICAgaWYgKG1fZmFpbGVkKQorICAg
ICAgICByZXR1cm47CisKKyAgICBpZiAoIW1fZGVjb2RlcikgeworICAgICAgICBpZiAoIW1fcmVz
cG9uc2VFbmNvZGluZy5pc0VtcHR5KCkpCisgICAgICAgICAgICBtX2RlY29kZXIgPSBUZXh0UmVz
b3VyY2VEZWNvZGVyOjpjcmVhdGUoInRleHQvamF2YXNjcmlwdCIsIG1fcmVzcG9uc2VFbmNvZGlu
Zyk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIG1fZGVjb2RlciA9IFRleHRSZXNvdXJjZURl
Y29kZXI6OmNyZWF0ZSgidGV4dC9qYXZhc2NyaXB0IiwgIlVURi04Iik7CisgICAgfQorCisgICAg
aWYgKCFsZW4pCisgICAgICAgIHJldHVybjsKKyAgICAKKyAgICBpZiAobGVuID09IC0xKQorICAg
ICAgICBsZW4gPSBzdHJsZW4oZGF0YSk7CisgICAgCisgICAgbV9zY3JpcHQgKz0gbV9kZWNvZGVy
LT5kZWNvZGUoZGF0YSwgbGVuKTsKK30KKwordm9pZCBXb3JrZXJJbXBvcnRTY3JpcHRzQ2xpZW50
OjpkaWRGaW5pc2hMb2FkaW5nKHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllcikKK3sKKyAgICBpZiAo
bV9mYWlsZWQpCisgICAgICAgIHJldHVybjsKKworICAgIGlmIChtX2RlY29kZXIpCisgICAgICAg
IG1fc2NyaXB0ICs9IG1fZGVjb2Rlci0+Zmx1c2goKTsKKyAgICAKKyAgICBtX3NjcmlwdEV4ZWN1
dGlvbkNvbnRleHQtPnNjcmlwdEltcG9ydGVkKGlkZW50aWZpZXIsIG1fc2NyaXB0KTsKKyAgICBt
X3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPmFkZE1lc3NhZ2UoSW5zcGVjdG9yQ29udHJvbGxlckRl
c3RpbmF0aW9uLCBKU01lc3NhZ2VTb3VyY2UsIExvZ01lc3NhZ2VMZXZlbCwgIldvcmtlciBzY3Jp
cHQgaW1wb3J0ZWQ6IFwiIiArIG1fdXJsICsgIlwiLiIsIG1fY2FsbGVyTGluZU51bWJlciwgbV9j
YWxsZXJVUkwpOworfQorCit2b2lkIFdvcmtlckltcG9ydFNjcmlwdHNDbGllbnQ6OmRpZEZhaWwo
Y29uc3QgUmVzb3VyY2VFcnJvciYpCit7CisgICAgbV9mYWlsZWQgPSB0cnVlOworfQorCit2b2lk
IFdvcmtlckltcG9ydFNjcmlwdHNDbGllbnQ6OmRpZEZhaWxSZWRpcmVjdENoZWNrKCkKK3sKKyAg
ICBtX2ZhaWxlZCA9IHRydWU7Cit9CisKK3ZvaWQgV29ya2VySW1wb3J0U2NyaXB0c0NsaWVudDo6
ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2FuY2VsbGF0aW9uKGNvbnN0IFJlc291cmNlUmVzcG9u
c2UmKQoreworICAgIG1fZmFpbGVkID0gdHJ1ZTsKK30KKworfQpkaWZmIC0tZ2l0IGEvV2ViQ29y
ZS93b3JrZXJzL1dvcmtlckltcG9ydFNjcmlwdHNDbGllbnQuaCBiL1dlYkNvcmUvd29ya2Vycy9X
b3JrZXJJbXBvcnRTY3JpcHRzQ2xpZW50LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMC4uNTY3NjdiYgotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJJ
bXBvcnRTY3JpcHRzQ2xpZW50LmgKQEAgLTAsMCArMSw3NSBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAwOSBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElT
JycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQor
ICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICoKKyAqLworCisjaWZu
ZGVmIFdvcmtlckltcG9ydFNjcmlwdHNDbGllbnRfaAorI2RlZmluZSBXb3JrZXJJbXBvcnRTY3Jp
cHRzQ2xpZW50X2gKKworI2luY2x1ZGUgIlJlc291cmNlUmVzcG9uc2UuaCIKKyNpbmNsdWRlICJT
Y3JpcHRTdHJpbmcuaCIKKyNpbmNsdWRlICJUZXh0UmVzb3VyY2VEZWNvZGVyLmgiCisjaW5jbHVk
ZSAiVGhyZWFkYWJsZUxvYWRlckNsaWVudC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKKyAg
ICBjbGFzcyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OworICAgIAorICAgIGNsYXNzIFdvcmtlcklt
cG9ydFNjcmlwdHNDbGllbnQgOiBwdWJsaWMgVGhyZWFkYWJsZUxvYWRlckNsaWVudCB7CisgICAg
cHVibGljOgorICAgICAgICBXb3JrZXJJbXBvcnRTY3JpcHRzQ2xpZW50KFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIGNvbnN0IFN0cmluZyYgdXJsLCBjb25z
dCBTdHJpbmcmIGNhbGxlclVSTCwgaW50IGNhbGxlckxpbmVOdW1iZXIpCisgICAgICAgICAgICA6
IG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dChzY3JpcHRFeGVjdXRpb25Db250ZXh0KQorICAgICAg
ICAgICAgLCBtX3VybCh1cmwpCisgICAgICAgICAgICAsIG1fY2FsbGVyVVJMKGNhbGxlclVSTCkK
KyAgICAgICAgICAgICwgbV9jYWxsZXJMaW5lTnVtYmVyKGNhbGxlckxpbmVOdW1iZXIpCisgICAg
ICAgICAgICAsIG1fZmFpbGVkKGZhbHNlKQorICAgICAgICB7CisgICAgICAgIH0KKworICAgICAg
ICBjb25zdCBTdHJpbmcmIHNjcmlwdCgpIGNvbnN0IHsgcmV0dXJuIG1fc2NyaXB0OyB9CisgICAg
ICAgIGJvb2wgZmFpbGVkKCkgY29uc3QgeyByZXR1cm4gbV9mYWlsZWQ7IH0KKworICAgICAgICB2
aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJl
c3BvbnNlKTsKKyAgICAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVEYXRhKGNvbnN0IGNoYXIq
IGRhdGEsIGludCBsZW5ndGhSZWNlaXZlZCk7CisgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRGaW5p
c2hMb2FkaW5nKHVuc2lnbmVkIGxvbmcgLyogaWRlbnRpZmllciAqLyk7CisgICAgICAgIHZpcnR1
YWwgdm9pZCBkaWRGYWlsKGNvbnN0IFJlc291cmNlRXJyb3ImKTsKKyAgICAgICAgdmlydHVhbCB2
b2lkIGRpZEZhaWxSZWRpcmVjdENoZWNrKCk7CisgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNl
aXZlQXV0aGVudGljYXRpb25DYW5jZWxsYXRpb24oY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOwor
CisgICAgcHJpdmF0ZToKKyAgICAgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogbV9zY3JpcHRF
eGVjdXRpb25Db250ZXh0OworICAgICAgICBTdHJpbmcgbV91cmw7CisgICAgICAgIFN0cmluZyBt
X2NhbGxlclVSTDsKKyAgICAgICAgaW50IG1fY2FsbGVyTGluZU51bWJlcjsKKyAgICAgICAgUmVz
b3VyY2VSZXNwb25zZSBtX3Jlc3BvbnNlOworICAgICAgICBTdHJpbmcgbV9yZXNwb25zZUVuY29k
aW5nOyAgICAgICAgCisgICAgICAgIFJlZlB0cjxUZXh0UmVzb3VyY2VEZWNvZGVyPiBtX2RlY29k
ZXI7CisgICAgICAgIFN0cmluZyBtX3NjcmlwdDsKKyAgICAgICAgYm9vbCBtX2ZhaWxlZDsKKyAg
ICB9OworCit9CisKKyNlbmRpZgorCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>28383</attachid>
            <date>2009-03-06 21:10:05 -0800</date>
            <delta_ts>2009-03-06 23:49:46 -0800</delta_ts>
            <desc>Updated patch #2</desc>
            <filename>importScripts.patch</filename>
            <type>text/plain</type>
            <size>31643</size>
            <attacher name="Oliver Hunt">oliver</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBiMGFhMzM2Li44NDliMzA4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMDktMDMt
MDYgIE9saXZlciBIdW50ICA8b2xpdmVyQGFwcGxlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICA8cmRhcjovL3Byb2JsZW0vNjQyNTgwNz4gSW1w
bGVtZW50IFdvcmtlclV0aWxzLmltcG9ydFNjcmlwdHMoKQorICAgICAgICA8aHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNzIxPgorCisgICAgICAgIFRlc3RzIHRvIGNv
dmVyIHZhcmlvdXMgdXNhZ2VzIG9mIGltcG9ydFNjcmlwdHMsIGVnLiBuZXR3b3JrIGxvYWQKKyAg
ICAgICAgZmFpbHVyZXMsIHNlY3VyaXR5IGV4Y2VwdGlvbnMsIGV4ZWN1dGlvbiBvcmRlcmluZywg
ZXRjCisKKyAgICAgICAgKiBmYXN0L3dvcmtlcnMvcmVzb3VyY2VzL3dvcmtlci1pbXBvcnRTY3Jp
cHRzLXNvdXJjZTEuanM6IEFkZGVkLgorICAgICAgICAqIGZhc3Qvd29ya2Vycy9yZXNvdXJjZXMv
d29ya2VyLWltcG9ydFNjcmlwdHMtc291cmNlMi5qczogQWRkZWQuCisgICAgICAgICogZmFzdC93
b3JrZXJzL3Jlc291cmNlcy93b3JrZXItaW1wb3J0U2NyaXB0cy5qczogQWRkZWQuCisgICAgICAg
ICogZmFzdC93b3JrZXJzL3dvcmtlci1pbXBvcnRTY3JpcHRzLWV4cGVjdGVkLnR4dDogQWRkZWQu
CisgICAgICAgICogZmFzdC93b3JrZXJzL3dvcmtlci1pbXBvcnRTY3JpcHRzLmh0bWw6IEFkZGVk
LgorCiAyMDA5LTAzLTA2ICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KIAogICAgICAg
ICBGaXhlZCBicm9rZW4gdGVzdCBJIGp1c3QgbGFuZGVkIGZvciBidWcgMjQ0MjIuCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9mYXN0L3dvcmtlcnMvcmVzb3VyY2VzL3dvcmtlci1pbXBvcnRTY3Jp
cHRzLXNvdXJjZTEuanMgYi9MYXlvdXRUZXN0cy9mYXN0L3dvcmtlcnMvcmVzb3VyY2VzL3dvcmtl
ci1pbXBvcnRTY3JpcHRzLXNvdXJjZTEuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMC4uMTBhODAyOAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3Qvd29ya2Vy
cy9yZXNvdXJjZXMvd29ya2VyLWltcG9ydFNjcmlwdHMtc291cmNlMS5qcwpAQCAtMCwwICsxLDYg
QEAKK2xvYWRlZFNvdXJjZTEgPSB0cnVlOworcG9zdE1lc3NhZ2UoIkxvYWRlZCByZXNvdXJjZSAx
Iik7CitpZiAodGhpcy5maXJzdFNob3VsZFRocm93KSB7CisgICAgcG9zdE1lc3NhZ2UoIkZpcnN0
IHJlc291cmNlIHRocm93aW5nIGFuIGV4Y2VwdGlvbiIpOworICAgIHRocm93ICJUaHJvd24gYnkg
Zmlyc3QgcmVzb3VyY2UiCit9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3dvcmtlcnMv
cmVzb3VyY2VzL3dvcmtlci1pbXBvcnRTY3JpcHRzLXNvdXJjZTIuanMgYi9MYXlvdXRUZXN0cy9m
YXN0L3dvcmtlcnMvcmVzb3VyY2VzL3dvcmtlci1pbXBvcnRTY3JpcHRzLXNvdXJjZTIuanMKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODY0MGVkZAotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2Zhc3Qvd29ya2Vycy9yZXNvdXJjZXMvd29ya2VyLWltcG9ydFNjcmlw
dHMtc291cmNlMi5qcwpAQCAtMCwwICsxLDggQEAKK2lmICghbG9hZGVkU291cmNlMSkKKyAgICBw
b3N0TWVzc2FnZSgiUmVzb3VyY2UgMiBsb2FkZWQgYmVmb3JlIHJlc291cmNlIDEiKTsKK2xvYWRl
ZFNvdXJjZTIgPSB0cnVlOworcG9zdE1lc3NhZ2UoIkxvYWRlZCByZXNvdXJjZSAyIik7CitpZiAo
dGhpcy5zZWNvbmRTaG91bGRUaHJvdykgeworICAgIHBvc3RNZXNzYWdlKCJTZWNvbmQgcmVzb3Vy
Y2UgdGhyb3dpbmcgYW4gZXhjZXB0aW9uIik7CisgICAgdGhyb3cgIlRocm93biBieSBzZWNvbmQg
cmVzb3VyY2UiOworfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC93b3JrZXJzL3Jlc291
cmNlcy93b3JrZXItaW1wb3J0U2NyaXB0cy5qcyBiL0xheW91dFRlc3RzL2Zhc3Qvd29ya2Vycy9y
ZXNvdXJjZXMvd29ya2VyLWltcG9ydFNjcmlwdHMuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMC4uNzMwODUzMwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3Qv
d29ya2Vycy9yZXNvdXJjZXMvd29ya2VyLWltcG9ydFNjcmlwdHMuanMKQEAgLTAsMCArMSwxMjAg
QEAKK3RyeSB7Citwb3N0TWVzc2FnZSgiVGVzdCBzdGFydGVkLiIpOworCitpbXBvcnRTY3JpcHRz
KCk7Citwb3N0TWVzc2FnZSgiUEFTUzogaW1wb3J0U2NyaXB0cygpLCBleGlzdHMsIGlzIGEgZnVu
Y3Rpb24sIGFuZCBkb2Vzbid0IHRocm93IHdoZW4gbm90IGdpdmVuIGFueSBhcmd1bWVudHMiKTsK
KworcG9zdE1lc3NhZ2UoIlRlc3RpbmcgZGlmZmVyZW50IG9yaWdpbiIpOwordmFyIGRpZmZlcmVu
dE9yaWdpbiA9ICJkYXRhOnRleHQvamF2YXNjcmlwdCxwb3N0TWVzc2FnZSgnUEFTUzogbG9hZGVk
IHNjcmlwdCBmcm9tIGRpZmZlcmVudCBvcmlnaW4nKTtkaWZmZXJlbnRPcmlnaW5Mb2FkZWQ9dHJ1
ZSI7Cit0cnkgeworICAgIGltcG9ydFNjcmlwdHMoZGlmZmVyZW50T3JpZ2luKQorfSBjYXRjaChl
KSB7CisgICAgcG9zdE1lc3NhZ2UoIkZBSUw6IFRocmV3ICIgKyBlICsgIiB3aGVuIGF0dGVtcHRp
bmcgY3Jvc3Mgb3JpZ2luIGxvYWQiKTsKK30KK2lmIChkaWZmZXJlbnRPcmlnaW5Mb2FkZWQpCisg
ICAgcG9zdE1lc3NhZ2UoIlBBU1M6IGV4ZWN1dGVkIHNjcmlwdCBmcm9tIGRpZmZlcmVudCBvcmln
aW4iKTsKKwordmFyIHNvdXJjZTEgPSAid29ya2VyLWltcG9ydFNjcmlwdHMtc291cmNlMS5qcyI7
Cit2YXIgc291cmNlMiA9ICJ3b3JrZXItaW1wb3J0U2NyaXB0cy1zb3VyY2UyLmpzIjsKK3ZhciBm
YWtlU291cmNlID0gIm5vbmV4aXN0YW50IjsKK3ZhciBsb2FkZWRTb3VyY2UxID0gZmFsc2U7Cit2
YXIgbG9hZGVkU291cmNlMiA9IGZhbHNlOworCitwb3N0TWVzc2FnZSgiVGVzdGluZyBzaW5nbGUg
YXJndW1lbnQ6Iik7CitpbXBvcnRTY3JpcHRzKHNvdXJjZTEpCitpZiAobG9hZGVkU291cmNlMSkK
KyAgICBwb3N0TWVzc2FnZSgiUEFTUzogbG9hZGVkIGZpcnN0IHNvdXJjZSIpOworZWxzZQorICAg
IHBvc3RNZXNzYWdlKCJGQUlMOiBkaWQgbm90IGxvYWQgZmlyc3Qgc291cmNlIik7CisKK2xvYWRl
ZFNvdXJjZTEgPSBmYWxzZTsKK2xvYWRlZFNvdXJjZTIgPSBmYWxzZTsKKworcG9zdE1lc3NhZ2Uo
IlRlc3RpbmcgbXVsdGlwbGUgYXJndW1lbnRzOiIpOworaW1wb3J0U2NyaXB0cyhzb3VyY2UxLCBz
b3VyY2UyKTsKK2lmIChsb2FkZWRTb3VyY2UxICYmIGxvYWRlZFNvdXJjZTIpCisgICAgcG9zdE1l
c3NhZ2UoIlBBU1M6IEJvdGggc291cmNlcyBsb2FkZWQgYW5kIGV4ZWN1dGVkLiIpOworZWxzZQor
ICAgIHBvc3RNZXNzYWdlKCJGQUlMOiAxbm90IGFsbCBzb3VyY2VzIHdlcmUgbG9hZGVkIik7CisK
K2xvYWRlZFNvdXJjZTEgPSBmYWxzZTsKK2xvYWRlZFNvdXJjZTIgPSBmYWxzZTsKKworcG9zdE1l
c3NhZ2UoIlRlc3RpbmcgbXVsdGlwbGUgYXJndW1lbnRzIChkaWZmZXJlbnQgb3JkZXIpOiIpOwor
aW1wb3J0U2NyaXB0cyhzb3VyY2UyLCBzb3VyY2UxKTsKK2lmIChsb2FkZWRTb3VyY2UxICYmIGxv
YWRlZFNvdXJjZTIpCisgICAgcG9zdE1lc3NhZ2UoIlBBU1M6IEJvdGggc291cmNlcyBsb2FkZWQg
YW5kIGV4ZWN1dGVkLiIpOworZWxzZQorICAgIHBvc3RNZXNzYWdlKCJGQUlMOiBub3QgYWxsIHNv
dXJjZXMgd2VyZSBsb2FkZWQiKTsKKworbG9hZGVkU291cmNlMSA9IGZhbHNlOworbG9hZGVkU291
cmNlMiA9IGZhbHNlOworZGlmZmVyZW50T3JpZ2luTG9hZGVkID0gZmFsc2U7CitmaXJzdFNob3Vs
ZFRocm93ID0gZmFsc2U7CitzZWNvbmRTaG91bGRUaHJvdyA9IGZhbHNlOworcG9zdE1lc3NhZ2Uo
IlRlc3RpbmcgbXVsdGlwbGUgYXJndW1lbnRzLCB3aXRoIGRpZmZlcmVudCBvcmlnaW4gZm9yIG9u
ZSBhcmd1bWVudDoiKTsKK3RyeSB7CisgICAgaW1wb3J0U2NyaXB0cyhzb3VyY2UxLCBkaWZmZXJl
bnRPcmlnaW4sIHNvdXJjZTIpOworfSBjYXRjaChlKSB7CisgICAgcG9zdE1lc3NhZ2UoIkZBSUw6
IFRocmV3ICIgKyBlICsgIiB3aGVuIGF0dGVtcHQgY3Jvc3Mgb3JpZ2luIGxvYWQiKTsKK30KK2lm
IChsb2FkZWRTb3VyY2UxICYmIGxvYWRlZFNvdXJjZTIgJiYgZGlmZmVyZW50T3JpZ2luTG9hZGVk
KQorICAgIHBvc3RNZXNzYWdlKCJQQVNTOiBhbGwgcmVzb3VyY2VzIGV4ZWN1dGVkLiIpOworZWxz
ZQorICAgIHBvc3RNZXNzYWdlKCJGQUlMOiBTb21lIHJlc291cmNlcyB3ZXJlIGxvYWRlZCBpbiBz
cGl0ZSBvZiB0aGUgb3JpZ2luIGZhaWx1cmUiKTsKKworbG9hZGVkU291cmNlMSA9IGZhbHNlOwor
bG9hZGVkU291cmNlMiA9IGZhbHNlOworCit0cnkgeworICAgIGltcG9ydFNjcmlwdHMoc291cmNl
MSwgZmFrZVNvdXJjZSwgc291cmNlMik7Cit9IGNhdGNoKGUpIHsKKyAgICBwb3N0TWVzc2FnZSgi
UEFTUzogVGhyZXcgIiArIGUgKyAiIHdoZW4gbG9hZCBmYWlsZWQiKTsKK30KK2lmICghbG9hZGVk
U291cmNlMSAmJiAhbG9hZGVkU291cmNlMikKKyAgICBwb3N0TWVzc2FnZSgiUEFTUzogTm90aGlu
ZyB3YXMgZXhlY3V0ZWQgd2hlbiBuZXR3b3JrIGVycm9yIG9jY3VycmVkLiIpOworZWxzZQorICAg
IHBvc3RNZXNzYWdlKCJGQUlMOiBzb21lIHJlc291cmNlcyB3ZXJlIGxvYWRlZCBkZXNpdGUgdGhl
IG5ldHdvcmsgZXJyb3IiKTsKKworbG9hZGVkU291cmNlMSA9IGZhbHNlOworbG9hZGVkU291cmNl
MiA9IGZhbHNlOworCitwb3N0TWVzc2FnZSgiVGVzdGluZyBtdWx0aXBsZSBhcmd1bWVudHMsIHdp
dGggZmlyc3QgcmVzb3VyY2UgdGhyb3dpbmcgYW4gZXhjZXB0aW9uOiIpOworZmlyc3RTaG91bGRU
aHJvdyA9IHRydWU7Cit0cnkgeworICAgIGltcG9ydFNjcmlwdHMoc291cmNlMSwgc291cmNlMik7
Cit9IGNhdGNoKGUpIHsKKyAgICBwb3N0TWVzc2FnZSgiUEFTUzogUHJvcGFnYXRlZCAnIiArIGUg
KyAiJyBmcm9tIHNjcmlwdCIpOworfQorZmlyc3RTaG91bGRUaHJvdyA9IGZhbHNlOworaWYgKGxv
YWRlZFNvdXJjZTEgJiYgIWxvYWRlZFNvdXJjZTIpCisgICAgcG9zdE1lc3NhZ2UoIlBBU1M6IEZp
cnN0IHJlc291cmNlIHdhcyBleGVjdXRlZCwgYW5kIHNlY29uZCByZXNvdXJjZSB3YXMgbm90Iik7
CitlbHNlIGlmIChsb2FkZWRTb3VyY2UyKQorICAgIHBvc3RNZXNzYWdlKCJGQUlMOiBTZWNvbmQg
cmVzb3VyY2Ugd2FzIGV4ZWN1dGVkIik7CitlbHNlCisgICAgcG9zdE1lc3NhZ2UoIkZBSUw6IGZp
cnN0IHJlc291cmNlIGRpZCBub3QgZXhlY3V0ZSBjb3JyZWN0bHkiKTsKKworbG9hZGVkU291cmNl
MSA9IGZhbHNlOworbG9hZGVkU291cmNlMiA9IGZhbHNlOworCitwb3N0TWVzc2FnZSgiVGVzdGlu
ZyBtdWx0aXBsZSBhcmd1bWVudHMsIHdpdGggc2Vjb25kIHJlc291cmNlIHRocm93aW5nIGFuIGV4
Y2VwdGlvbjoiKTsKK3NlY29uZFNob3VsZFRocm93ID0gdHJ1ZTsKK3RyeSB7CisgICAgaW1wb3J0
U2NyaXB0cyhzb3VyY2UxLCBzb3VyY2UyKTsKK30gY2F0Y2goZSkgeworICAgIHBvc3RNZXNzYWdl
KCJQQVNTOiBQcm9wYWdhdGVkICciICsgZSArICInIGZyb20gc2NyaXB0Iik7Cit9CitzZWNvbmRT
aG91bGRUaHJvdyA9IGZhbHNlOworaWYgKGxvYWRlZFNvdXJjZTEgJiYgbG9hZGVkU291cmNlMikK
KyAgICBwb3N0TWVzc2FnZSgiUEFTUzogQm90aCBzY3JpcHRzIHdlcmUgZXhlY3V0ZWQiKTsKK2Vs
c2UKKyAgICBwb3N0TWVzc2FnZSgiRkFJTDogc2NyaXB0cyBkaWQgbm90IGV4ZWN1dGUgY29ycmVj
dGx5Iik7CisKK2xvYWRlZFNvdXJjZTEgPSBmYWxzZTsKK2xvYWRlZFNvdXJjZTIgPSBmYWxzZTsK
KworfSBjYXRjaChlKSB7CisgICAgcG9zdE1lc3NhZ2UoIkZBSUw6IFVuZXhwZWN0ZWQgZXhjZXB0
aW9uOiAiICsgZSk7Cit9IGZpbmFsbHkgeworICAgIHBvc3RNZXNzYWdlKCJET05FIik7Cit9CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3dvcmtlcnMvd29ya2VyLWltcG9ydFNjcmlwdHMt
ZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC93b3JrZXJzL3dvcmtlci1pbXBvcnRTY3Jp
cHRzLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iNDZk
Mzg0Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC93b3JrZXJzL3dvcmtlci1p
bXBvcnRTY3JpcHRzLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDM5IEBACitUZXN0IGltcG9ydFNj
cmlwdHMuCisKK1Rlc3Qgc3RhcnRlZC4KK1BBU1M6IGltcG9ydFNjcmlwdHMoKSwgZXhpc3RzLCBp
cyBhIGZ1bmN0aW9uLCBhbmQgZG9lc24ndCB0aHJvdyB3aGVuIG5vdCBnaXZlbiBhbnkgYXJndW1l
bnRzCitUZXN0aW5nIGRpZmZlcmVudCBvcmlnaW4KK1BBU1M6IGxvYWRlZCBzY3JpcHQgZnJvbSBk
aWZmZXJlbnQgb3JpZ2luCitQQVNTOiBleGVjdXRlZCBzY3JpcHQgZnJvbSBkaWZmZXJlbnQgb3Jp
Z2luCitUZXN0aW5nIHNpbmdsZSBhcmd1bWVudDoKK0xvYWRlZCByZXNvdXJjZSAxCitQQVNTOiBs
b2FkZWQgZmlyc3Qgc291cmNlCitUZXN0aW5nIG11bHRpcGxlIGFyZ3VtZW50czoKK0xvYWRlZCBy
ZXNvdXJjZSAxCitMb2FkZWQgcmVzb3VyY2UgMgorUEFTUzogQm90aCBzb3VyY2VzIGxvYWRlZCBh
bmQgZXhlY3V0ZWQuCitUZXN0aW5nIG11bHRpcGxlIGFyZ3VtZW50cyAoZGlmZmVyZW50IG9yZGVy
KToKK1Jlc291cmNlIDIgbG9hZGVkIGJlZm9yZSByZXNvdXJjZSAxCitMb2FkZWQgcmVzb3VyY2Ug
MgorTG9hZGVkIHJlc291cmNlIDEKK1BBU1M6IEJvdGggc291cmNlcyBsb2FkZWQgYW5kIGV4ZWN1
dGVkLgorVGVzdGluZyBtdWx0aXBsZSBhcmd1bWVudHMsIHdpdGggZGlmZmVyZW50IG9yaWdpbiBm
b3Igb25lIGFyZ3VtZW50OgorTG9hZGVkIHJlc291cmNlIDEKK1BBU1M6IGxvYWRlZCBzY3JpcHQg
ZnJvbSBkaWZmZXJlbnQgb3JpZ2luCitMb2FkZWQgcmVzb3VyY2UgMgorUEFTUzogYWxsIHJlc291
cmNlcyBleGVjdXRlZC4KK1BBU1M6IFRocmV3IEVycm9yOiBORVRXT1JLX0VSUjogWE1MSHR0cFJl
cXVlc3QgRXhjZXB0aW9uIDEwMSB3aGVuIGxvYWQgZmFpbGVkCitQQVNTOiBOb3RoaW5nIHdhcyBl
eGVjdXRlZCB3aGVuIG5ldHdvcmsgZXJyb3Igb2NjdXJyZWQuCitUZXN0aW5nIG11bHRpcGxlIGFy
Z3VtZW50cywgd2l0aCBmaXJzdCByZXNvdXJjZSB0aHJvd2luZyBhbiBleGNlcHRpb246CitMb2Fk
ZWQgcmVzb3VyY2UgMQorRmlyc3QgcmVzb3VyY2UgdGhyb3dpbmcgYW4gZXhjZXB0aW9uCitQQVNT
OiBQcm9wYWdhdGVkICdUaHJvd24gYnkgZmlyc3QgcmVzb3VyY2UnIGZyb20gc2NyaXB0CitQQVNT
OiBGaXJzdCByZXNvdXJjZSB3YXMgZXhlY3V0ZWQsIGFuZCBzZWNvbmQgcmVzb3VyY2Ugd2FzIG5v
dAorVGVzdGluZyBtdWx0aXBsZSBhcmd1bWVudHMsIHdpdGggc2Vjb25kIHJlc291cmNlIHRocm93
aW5nIGFuIGV4Y2VwdGlvbjoKK0xvYWRlZCByZXNvdXJjZSAxCitMb2FkZWQgcmVzb3VyY2UgMgor
U2Vjb25kIHJlc291cmNlIHRocm93aW5nIGFuIGV4Y2VwdGlvbgorUEFTUzogUHJvcGFnYXRlZCAn
VGhyb3duIGJ5IHNlY29uZCByZXNvdXJjZScgZnJvbSBzY3JpcHQKK1BBU1M6IEJvdGggc2NyaXB0
cyB3ZXJlIGV4ZWN1dGVkCitET05FCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qvd29y
a2Vycy93b3JrZXItaW1wb3J0U2NyaXB0cy5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC93b3JrZXJz
L3dvcmtlci1pbXBvcnRTY3JpcHRzLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMC4uZjcwYTQ1NgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3Qvd29ya2Vy
cy93b3JrZXItaW1wb3J0U2NyaXB0cy5odG1sCkBAIC0wLDAgKzEsMjQgQEAKKzxib2R5PgorPHA+
VGVzdCBpbXBvcnRTY3JpcHRzLjwvcD4KKzxkaXYgaWQ9cmVzdWx0PjwvZGl2PgorPHNjcmlwdD4K
K2Z1bmN0aW9uIGxvZyhtZXNzYWdlKQoreworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJy
ZXN1bHQiKS5pbm5lckhUTUwgKz0gbWVzc2FnZSArICI8YnI+IjsKK30KKworaWYgKHdpbmRvdy5s
YXlvdXRUZXN0Q29udHJvbGxlcikgeworICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1Rl
eHQoKTsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7Cit9CisKK3Zh
ciB3b3JrZXIgPSBuZXcgV29ya2VyKCdyZXNvdXJjZXMvd29ya2VyLWltcG9ydFNjcmlwdHMuanMn
KTsKKword29ya2VyLm9ubWVzc2FnZSA9IGZ1bmN0aW9uKGV2dCkgeworICAgIGxvZyhldnQuZGF0
YSk7CisgICAgaWYgKGV2dC5kYXRhID09ICJET05FIiAmJiB3aW5kb3cubGF5b3V0VGVzdENvbnRy
b2xsZXIpCisgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKK30KKzwv
c2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9DaGFuZ2VMb2cg
Yi9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAwYzQxMDlhLi5kMmYxMzdlIDEwMDY0NAotLS0gYS9X
ZWJDb3JlL0NoYW5nZUxvZworKysgYi9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ1IEBA
CisyMDA5LTAzLTA2ICBPbGl2ZXIgSHVudCAgPG9saXZlckBhcHBsZS5jb20+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzY0
MjU4MDc+IEltcGxlbWVudCBXb3JrZXJVdGlscy5pbXBvcnRTY3JpcHRzKCkKKyAgICAgICAgPGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjcyMT4KKworICAgICAgICBJ
bXBsZW1lbnQgaW1wb3J0U2NyaXB0cywgY3VycmVudGx5IHVzZXMgYSBzZXJpZXMgb2Ygc3luY2hy
b25vdXMgbG9hZHMKKyAgICAgICAgdG8gZmV0Y2ggdGhlIHNjcmlwdHMsIGJ1dCB0aGlzIGlzIHNp
bXBsZXIgdGhhbiBhIHN5bmNocm9ub3VzIGxvYWQgb2YKKyAgICAgICAgbXVsdGlwbGUgbG9hZHMg
aW4gcGFyYWxsZWwuICBJbiBmdXR1cmUgd2UnbGwgd2FudCB0byBzd2l0Y2ggdG8gcGFyYWxsZWwK
KyAgICAgICAgbG9hZGluZywgYnV0IHRoaXMgd2lsbCBkbyBmb3Igbm93LgorCisgICAgICAgIFRl
c3Q6IGZhc3Qvd29ya2Vycy93b3JrZXItaW1wb3J0U2NyaXB0cy5odG1sCisKKyAgICAgICAgKiBX
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogYmluZGluZ3MvanMv
SlNXb3JrZXJDb250ZXh0Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTV29ya2VyQ29u
dGV4dDo6aW1wb3J0U2NyaXB0cyk6CisgICAgICAgICogYmluZGluZ3MvanMvU2NyaXB0U3RyaW5n
Lmg6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRTdHJpbmc6OnRvU3RyaW5nKToKKyAgICAgICAg
KiBiaW5kaW5ncy9qcy9TY3JpcHRWYWx1ZS5oOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0VmFs
dWU6Omhhc05vVmFsdWUpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1dvcmtlclNjcmlwdENvbnRy
b2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyU2NyaXB0Q29udHJvbGxlcjo6ZXZh
bHVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyU2NyaXB0Q29udHJvbGxlcjo6c2V0RXhj
ZXB0aW9uKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9Xb3JrZXJTY3JpcHRDb250cm9sbGVyLmg6
CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJTY3JpcHRDb250cm9sbGVyOjpleGVjdXRpb25Gb3Ji
aWRkZW4pOgorICAgICAgICAqIHdvcmtlcnMvV29ya2VyQ29udGV4dC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpXb3JrZXJDb250ZXh0OjppbXBvcnRTY3JpcHRzKToKKyAgICAgICAgKiB3b3JrZXJz
L1dvcmtlckNvbnRleHQuaDoKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtlckNvbnRleHQuaWRsOgor
ICAgICAgICAqIHdvcmtlcnMvV29ya2VySW1wb3J0U2NyaXB0c0NsaWVudC5jcHA6IEFkZGVkLgor
ICAgICAgICAoV2ViQ29yZTo6V29ya2VySW1wb3J0U2NyaXB0c0NsaWVudDo6ZGlkUmVjZWl2ZVJl
c3BvbnNlKToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlckltcG9ydFNjcmlwdHNDbGllbnQ6OmRp
ZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlckltcG9ydFNjcmlwdHNDbGll
bnQ6OmRpZEZpbmlzaExvYWRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VySW1wb3J0U2Ny
aXB0c0NsaWVudDo6ZGlkRmFpbCk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJJbXBvcnRTY3Jp
cHRzQ2xpZW50OjpkaWRGYWlsUmVkaXJlY3RDaGVjayk6CisgICAgICAgIChXZWJDb3JlOjpXb3Jr
ZXJJbXBvcnRTY3JpcHRzQ2xpZW50OjpkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DYW5jZWxsYXRp
b24pOgorICAgICAgICAqIHdvcmtlcnMvV29ya2VySW1wb3J0U2NyaXB0c0NsaWVudC5oOiBBZGRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OldvcmtlckltcG9ydFNjcmlwdHNDbGllbnQ6Oldvcmtlcklt
cG9ydFNjcmlwdHNDbGllbnQpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VySW1wb3J0U2NyaXB0
c0NsaWVudDo6c2NyaXB0KToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlckltcG9ydFNjcmlwdHND
bGllbnQ6OmZhaWxlZCk6CisKIDIwMDktMDMtMDYgIFBldGVyIEthc3RpbmcgIDxwa2FzdGluZ0Bn
b29nbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEZpc2hlci4KZGlmZiAtLWdp
dCBhL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvV2ViQ29yZS9X
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggYjUwZWI4MC4uMWJkNzIyZCAx
MDA2NDQKLS0tIGEvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysr
IGIvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTIxNTMsNiAr
MjE1Myw4IEBACiAJCUE3RDAzMThFMEU5MzU0MDMwMEUyNEFDRCAvKiBKU0ltYWdlRGF0YUN1c3Rv
bS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBN0Qw
MzE4RDBFOTM1NDAzMDBFMjRBQ0QgLyogSlNJbWFnZURhdGFDdXN0b20uY3BwICovOyB9OwogCQlB
N0QyN0ZDNDBFMEE1OTlGMDA3OUFEMkIgLyogU1ZHRkVUaWxlLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3RDI3RkMzMEUwQTU5OUYwMDc5QUQyQiAv
KiBTVkdGRVRpbGUuY3BwICovOyB9OwogCQlBN0QzQzUyNDBCNTc2QjRCMDAyQ0E0NTAgLyogUGFz
dGVib2FyZEhlbHBlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQTdEM0M1MjMwQjU3NkI0QjAwMkNBNDUwIC8qIFBhc3RlYm9hcmRIZWxwZXIuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlBN0Q2QjM0OTBG
NjExMDQ1MDBCNzlGRDEgLyogV29ya2VySW1wb3J0U2NyaXB0c0NsaWVudC5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTdENkIzNDcwRjYxMTA0NTAwQjc5
RkQxIC8qIFdvcmtlckltcG9ydFNjcmlwdHNDbGllbnQuaCAqLzsgfTsKKwkJQTdENkIzNEEwRjYx
MTA0NTAwQjc5RkQxIC8qIFdvcmtlckltcG9ydFNjcmlwdHNDbGllbnQuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTdENkIzNDgwRjYxMTA0NTAwQjc5
RkQxIC8qIFdvcmtlckltcG9ydFNjcmlwdHNDbGllbnQuY3BwICovOyB9OwogCQlBODA5RjE0NzBC
NzM3OTNBMDAyRTREN0YgLyogUmVuZGVyU1ZHR3JhZGllbnRTdG9wLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBODA5RjE0NTBCNzM3OTNBMDAyRTREN0Yg
LyogUmVuZGVyU1ZHR3JhZGllbnRTdG9wLmggKi87IH07CiAJCUE4MDlGMTQ4MEI3Mzc5M0IwMDJF
NEQ3RiAvKiBSZW5kZXJTVkdHcmFkaWVudFN0b3AuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTgwOUYxNDYwQjczNzkzQTAwMkU0RDdGIC8qIFJlbmRl
clNWR0dyYWRpZW50U3RvcC5jcHAgKi87IH07CiAJCUE4MDlGMUFBMEI3MzdGQjYwMDJFNEQ3RiAv
KiBSZW5kZXJTVkdIaWRkZW5Db250YWluZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEE4MDlGMUE4MEI3MzdGQjYwMDJFNEQ3RiAvKiBSZW5kZXJTVkdI
aWRkZW5Db250YWluZXIuaCAqLzsgfTsKQEAgLTcwNjQsNiArNzA2Niw4IEBACiAJCUE3RDAzMThE
MEU5MzU0MDMwMEUyNEFDRCAvKiBKU0ltYWdlRGF0YUN1c3RvbS5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0ltYWdlRGF0YUN1c3RvbS5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUE3RDI3RkMzMEUwQTU5OUYwMDc5QUQyQiAvKiBTVkdGRVRpbGUu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU1ZHRkVUaWxlLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTdEM0M1MjMwQjU3NkI0QjAwMkNBNDUwIC8q
IFBhc3RlYm9hcmRIZWxwZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUGFz
dGVib2FyZEhlbHBlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBN0Q2QjM0NzBG
NjExMDQ1MDBCNzlGRDEgLyogV29ya2VySW1wb3J0U2NyaXB0c0NsaWVudC5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IG5hbWUgPSBXb3JrZXJJbXBvcnRTY3JpcHRzQ2xpZW50Lmg7IHBhdGgg
PSB3b3JrZXJzL1dvcmtlckltcG9ydFNjcmlwdHNDbGllbnQuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJQTdENkIzNDgwRjYxMTA0NTAwQjc5RkQxIC8qIFdvcmtlckltcG9ydFNjcmlw
dHNDbGllbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gV29ya2Vy
SW1wb3J0U2NyaXB0c0NsaWVudC5jcHA7IHBhdGggPSB3b3JrZXJzL1dvcmtlckltcG9ydFNjcmlw
dHNDbGllbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBODA5RjE0NTBCNzM3
OTNBMDAyRTREN0YgLyogUmVuZGVyU1ZHR3JhZGllbnRTdG9wLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFJlbmRlclNWR0dyYWRpZW50U3RvcC5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlBODA5RjE0NjBCNzM3OTNBMDAyRTREN0YgLyogUmVuZGVyU1ZHR3JhZGll
bnRTdG9wLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbmRlclNW
R0dyYWRpZW50U3RvcC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE4MDlGMUE4
MEI3MzdGQjYwMDJFNEQ3RiAvKiBSZW5kZXJTVkdIaWRkZW5Db250YWluZXIuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVuZGVyU1ZHSGlkZGVuQ29udGFpbmVyLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC05Nzg0LDYgKzk3ODgsOCBAQAogCQkJCTJFNDM0NjQx
MEY1NDZBODIwMEIwRjFCQSAvKiBXb3JrZXJSdW5Mb29wLmggKi8sCiAJCQkJMkU0MzQ2NDIwRjU0
NkE4MjAwQjBGMUJBIC8qIFdvcmtlclRocmVhZC5jcHAgKi8sCiAJCQkJMkU0MzQ2NDMwRjU0NkE4
MjAwQjBGMUJBIC8qIFdvcmtlclRocmVhZC5oICovLAorCQkJCUE3RDZCMzQ3MEY2MTEwNDUwMEI3
OUZEMSAvKiBXb3JrZXJJbXBvcnRTY3JpcHRzQ2xpZW50LmggKi8sCisJCQkJQTdENkIzNDgwRjYx
MTA0NTAwQjc5RkQxIC8qIFdvcmtlckltcG9ydFNjcmlwdHNDbGllbnQuY3BwICovLAogCQkJKTsK
IAkJCW5hbWUgPSB3b3JrZXJzOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKQEAgLTE2ODQ1
LDYgKzE2ODUxLDcgQEAKIAkJCQk0MUYwNjE4RTBGNUYwNjk4MDBBMDdFQUMgLyogQ29uc29sZU1l
c3NhZ2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTQxRjA2MjAxMEY1RjBCNjYwMEEwN0VBQyAvKiBJ
bnNwZWN0b3JSZXNvdXJjZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDFGMDYyMTQwRjVGMTkyNjAw
QTA3RUFDIC8qIEluc3BlY3RvckRhdGFiYXNlUmVzb3VyY2UuaCBpbiBIZWFkZXJzICovLAorCQkJ
CUE3RDZCMzQ5MEY2MTEwNDUwMEI3OUZEMSAvKiBXb3JrZXJJbXBvcnRTY3JpcHRzQ2xpZW50Lmgg
aW4gSGVhZGVycyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNz
aW5nID0gMDsKIAkJfTsKQEAgLTE4ODM5LDYgKzE4ODQ2LDcgQEAKIAkJCQk0MUYwNjE4RjBGNUYw
Njk4MDBBMDdFQUMgLyogQ29uc29sZU1lc3NhZ2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNDFG
MDYyMDIwRjVGMEI2NjAwQTA3RUFDIC8qIEluc3BlY3RvclJlc291cmNlLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTQxRjA2MjE1MEY1RjE5MjYwMEEwN0VBQyAvKiBJbnNwZWN0b3JEYXRhYmFzZVJl
c291cmNlLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUE3RDZCMzRBMEY2MTEwNDUwMEI3OUZEMSAv
KiBXb3JrZXJJbXBvcnRTY3JpcHRzQ2xpZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJKTsKIAkJ
CXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpkaWZmIC0tZ2l0
IGEvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dvcmtlckNvbnRleHRDdXN0b20uY3BwIGIvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU1dvcmtlckNvbnRleHRDdXN0b20uY3BwCmluZGV4IGMzZWY5YzEuLjFk
NDhjM2EgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXb3JrZXJDb250ZXh0Q3Vz
dG9tLmNwcAorKysgYi9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV29ya2VyQ29udGV4dEN1c3RvbS5j
cHAKQEAgLTMzLDYgKzMzLDcgQEAKICNpbmNsdWRlICJKU0V2ZW50TGlzdGVuZXIuaCIKICNpbmNs
dWRlICJTY2hlZHVsZWRBY3Rpb24uaCIKICNpbmNsdWRlICJXb3JrZXJDb250ZXh0LmgiCisjaW5j
bHVkZSA8aW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuaD4KIAogdXNpbmcgbmFtZXNwYWNlIEpTQzsK
IApAQCAtNzYsNiArNzcsMjkgQEAgdm9pZCBKU1dvcmtlckNvbnRleHQ6OnNldFNlbGYoRXhlY1N0
YXRlKiBleGVjLCBKU1ZhbHVlUHRyIHZhbHVlKQogICAgIHB1dERpcmVjdChJZGVudGlmaWVyKGV4
ZWMsICJzZWxmIiksIHZhbHVlKTsKIH0KIAorSlNWYWx1ZVB0ciBKU1dvcmtlckNvbnRleHQ6Omlt
cG9ydFNjcmlwdHMoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBBcmdMaXN0JiBhcmdzKQoreworICAg
IGlmICghYXJncy5zaXplKCkpCisgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOworCisgICAg
VmVjdG9yPFN0cmluZz4gdXJsczsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgYXJncy5z
aXplKCk7IGkrKykgeworICAgICAgICB1cmxzLmFwcGVuZChhcmdzLmF0KGV4ZWMsIGkpLnRvU3Ry
aW5nKGV4ZWMpKTsKKyAgICAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQorICAgICAgICAg
ICAgcmV0dXJuIGpzTnVsbCgpOworICAgIH0KKyAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKKyAg
ICBpbnQgc2lnbmVkTGluZU51bWJlcjsKKyAgICBpbnRwdHJfdCBzb3VyY2VJRDsKKyAgICBVU3Ry
aW5nIHNvdXJjZVVSTDsKKyAgICBKU1ZhbHVlUHRyIGZ1bmN0aW9uOworICAgIGV4ZWMtPmludGVy
cHJldGVyKCktPnJldHJpZXZlTGFzdENhbGxlcihleGVjLCBzaWduZWRMaW5lTnVtYmVyLCBzb3Vy
Y2VJRCwgc291cmNlVVJMLCBmdW5jdGlvbik7CisKKyAgICBpbXBsKCktPmltcG9ydFNjcmlwdHMo
dXJscywgc291cmNlVVJMLCBzaWduZWRMaW5lTnVtYmVyID49IDAgPyBzaWduZWRMaW5lTnVtYmVy
IDogMCwgZWMpOworICAgIHNldERPTUV4Y2VwdGlvbihleGVjLCBlYyk7CisgICAgcmV0dXJuIGpz
VW5kZWZpbmVkKCk7Cit9CisKIEpTVmFsdWVQdHIgSlNXb3JrZXJDb250ZXh0OjphZGRFdmVudExp
c3RlbmVyKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgQXJnTGlzdCYgYXJncykKIHsKICAgICBSZWZQ
dHI8SlNVbnByb3RlY3RlZEV2ZW50TGlzdGVuZXI+IGxpc3RlbmVyID0gZmluZE9yQ3JlYXRlSlNV
bnByb3RlY3RlZEV2ZW50TGlzdGVuZXIoZXhlYywgYXJncy5hdChleGVjLCAxKSk7CmRpZmYgLS1n
aXQgYS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdFZhbHVlLmggYi9XZWJDb3JlL2JpbmRpbmdz
L2pzL1NjcmlwdFZhbHVlLmgKaW5kZXggODU1NTA5YS4uM2NlZTA5YiAxMDA2NDQKLS0tIGEvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9TY3JpcHRWYWx1ZS5oCisrKyBiL1dlYkNvcmUvYmluZGluZ3MvanMv
U2NyaXB0VmFsdWUuaApAQCAtNDUsNiArNDUsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBnZXRTdHJp
bmcoU3RyaW5nJiByZXN1bHQpIGNvbnN0OwogICAgIGJvb2wgaXNOdWxsKCkgY29uc3Q7CiAgICAg
Ym9vbCBpc1VuZGVmaW5lZCgpIGNvbnN0OworICAgIGJvb2wgaGFzTm9WYWx1ZSgpIGNvbnN0IHsg
cmV0dXJuIG1fdmFsdWUgPT0gSlNDOjpub1ZhbHVlKCk7IH0KIAogcHJpdmF0ZToKICAgICBKU0M6
OlByb3RlY3RlZEpTVmFsdWVQdHIgbV92YWx1ZTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvYmluZGlu
Z3MvanMvV29ya2VyU2NyaXB0Q29udHJvbGxlci5jcHAgYi9XZWJDb3JlL2JpbmRpbmdzL2pzL1dv
cmtlclNjcmlwdENvbnRyb2xsZXIuY3BwCmluZGV4IGFiOTdiNTIuLjdmY2E5NzEgMTAwNjQ0Ci0t
LSBhL1dlYkNvcmUvYmluZGluZ3MvanMvV29ya2VyU2NyaXB0Q29udHJvbGxlci5jcHAKKysrIGIv
V2ViQ29yZS9iaW5kaW5ncy9qcy9Xb3JrZXJTY3JpcHRDb250cm9sbGVyLmNwcApAQCAtODAsNiAr
ODAsMjAgQEAgU2NyaXB0VmFsdWUgV29ya2VyU2NyaXB0Q29udHJvbGxlcjo6ZXZhbHVhdGUoY29u
c3QgU2NyaXB0U291cmNlQ29kZSYgc291cmNlQ29kZSkKICAgICAgICAgaWYgKG1fZXhlY3V0aW9u
Rm9yYmlkZGVuKQogICAgICAgICAgICAgcmV0dXJuIG5vVmFsdWUoKTsKICAgICB9CisgICAgU2Ny
aXB0VmFsdWUgZXhjZXB0aW9uOworICAgIFNjcmlwdFZhbHVlIHJlc3VsdCA9IGV2YWx1YXRlKHNv
dXJjZUNvZGUsICZleGNlcHRpb24pOworICAgIGlmIChleGNlcHRpb24uanNWYWx1ZSgpKQorICAg
ICAgICByZXBvcnRFeGNlcHRpb24obV93b3JrZXJDb250ZXh0V3JhcHBlci0+Z2xvYmFsRXhlYygp
LCBleGNlcHRpb24uanNWYWx1ZSgpKTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCitTY3JpcHRW
YWx1ZSBXb3JrZXJTY3JpcHRDb250cm9sbGVyOjpldmFsdWF0ZShjb25zdCBTY3JpcHRTb3VyY2VD
b2RlJiBzb3VyY2VDb2RlLCBTY3JpcHRWYWx1ZSogZXhjZXB0aW9uKQoreworICAgIHsKKyAgICAg
ICAgTXV0ZXhMb2NrZXIgbG9jayhtX3NoYXJlZERhdGFNdXRleCk7CisgICAgICAgIGlmIChtX2V4
ZWN1dGlvbkZvcmJpZGRlbikKKyAgICAgICAgICAgIHJldHVybiBub1ZhbHVlKCk7CisgICAgfQog
CiAgICAgaW5pdFNjcmlwdElmTmVlZGVkKCk7CiAgICAgSlNMb2NrIGxvY2soZmFsc2UpOwpAQCAt
OTUsMTAgKzEwOSwxNSBAQCBTY3JpcHRWYWx1ZSBXb3JrZXJTY3JpcHRDb250cm9sbGVyOjpldmFs
dWF0ZShjb25zdCBTY3JpcHRTb3VyY2VDb2RlJiBzb3VyY2VDb2RlKQogICAgICAgICByZXR1cm4g
Y29tcC52YWx1ZSgpOwogCiAgICAgaWYgKGNvbXAuY29tcGxUeXBlKCkgPT0gVGhyb3cpCi0gICAg
ICAgIHJlcG9ydEV4Y2VwdGlvbihleGVjLCBjb21wLnZhbHVlKCkpOworICAgICAgICAqZXhjZXB0
aW9uID0gY29tcC52YWx1ZSgpOwogICAgIHJldHVybiBub1ZhbHVlKCk7CiB9CiAKK3ZvaWQgV29y
a2VyU2NyaXB0Q29udHJvbGxlcjo6c2V0RXhjZXB0aW9uKFNjcmlwdFZhbHVlIGV4Y2VwdGlvbikK
K3sKKyAgICBtX3dvcmtlckNvbnRleHRXcmFwcGVyLT5nbG9iYWxFeGVjKCktPnNldEV4Y2VwdGlv
bihleGNlcHRpb24uanNWYWx1ZSgpKTsKK30KKwogdm9pZCBXb3JrZXJTY3JpcHRDb250cm9sbGVy
Ojpmb3JiaWRFeGVjdXRpb24oKQogewogICAgIC8vIFRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIGZy
b20gYW5vdGhlciB0aHJlYWQuCmRpZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dvcmtl
clNjcmlwdENvbnRyb2xsZXIuaCBiL1dlYkNvcmUvYmluZGluZ3MvanMvV29ya2VyU2NyaXB0Q29u
dHJvbGxlci5oCmluZGV4IDFkZGE1ZGEuLmIzMTNkOTMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvYmlu
ZGluZ3MvanMvV29ya2VyU2NyaXB0Q29udHJvbGxlci5oCisrKyBiL1dlYkNvcmUvYmluZGluZ3Mv
anMvV29ya2VyU2NyaXB0Q29udHJvbGxlci5oCkBAIC01Nyw5ICs1NywxMSBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAgICAgICAgIH0KIAogICAgICAgICBTY3JpcHRWYWx1ZSBldmFsdWF0ZShjb25z
dCBTY3JpcHRTb3VyY2VDb2RlJik7CisgICAgICAgIFNjcmlwdFZhbHVlIGV2YWx1YXRlKGNvbnN0
IFNjcmlwdFNvdXJjZUNvZGUmLCBTY3JpcHRWYWx1ZSogZXhjZXB0aW9uKTsKKyAgICAgICAgdm9p
ZCBzZXRFeGNlcHRpb24oU2NyaXB0VmFsdWUpOwogCiAgICAgICAgIHZvaWQgZm9yYmlkRXhlY3V0
aW9uKCk7Ci0KKyAgICAgICAgYm9vbCBleGVjdXRpb25Gb3JiaWRkZW4oKSBjb25zdCB7IHJldHVy
biBtX2V4ZWN1dGlvbkZvcmJpZGRlbjsgfQogICAgIHByaXZhdGU6CiAgICAgICAgIHZvaWQgaW5p
dFNjcmlwdElmTmVlZGVkKCkKICAgICAgICAgewpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9kb20vU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dC5oIGIvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4
dC5oCmluZGV4IDg2N2QzNGYuLjUwMDI2NGUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZG9tL1Njcmlw
dEV4ZWN1dGlvbkNvbnRleHQuaAorKysgYi9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250
ZXh0LmgKQEAgLTY3LDcgKzY3LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2aXJ0
dWFsIHZvaWQgcmVwb3J0RXhjZXB0aW9uKGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlLCBpbnQg
bGluZU51bWJlciwgY29uc3QgU3RyaW5nJiBzb3VyY2VVUkwpID0gMDsKICAgICAgICAgdmlydHVh
bCB2b2lkIGFkZE1lc3NhZ2UoTWVzc2FnZURlc3RpbmF0aW9uLCBNZXNzYWdlU291cmNlLCBNZXNz
YWdlTGV2ZWwsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgdW5zaWduZWQgbGluZU51bWJlciwgY29u
c3QgU3RyaW5nJiBzb3VyY2VVUkwpID0gMDsKICAgICAgICAgdmlydHVhbCB2b2lkIHJlc291cmNl
UmV0cmlldmVkQnlYTUxIdHRwUmVxdWVzdCh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0
IFNjcmlwdFN0cmluZyYgc291cmNlU3RyaW5nKSA9IDA7Ci0KKyAgICAgICAgdmlydHVhbCB2b2lk
IHNjcmlwdEltcG9ydGVkKHVuc2lnbmVkIGxvbmcsIGNvbnN0IFN0cmluZyYpIHsgQVNTRVJUX05P
VF9SRUFDSEVEKCk7IH0KKyAgICAgICAgCiAgICAgICAgIC8vIEFjdGl2ZSBvYmplY3RzIGFyZSBu
b3QgZ2FyYmFnZSBjb2xsZWN0ZWQgZXZlbiBpZiBpbmFjY2Vzc2libGUsIGUuZy4gYmVjYXVzZSB0
aGVpciBhY3Rpdml0eSBtYXkgcmVzdWx0IGluIGNhbGxiYWNrcyBiZWluZyBpbnZva2VkLgogICAg
ICAgICBib29sIGNhblN1c3BlbmRBY3RpdmVET01PYmplY3RzKCk7CiAgICAgICAgIC8vIEFjdGl2
ZSBvYmplY3RzIGNhbiBiZSBhc2tlZCB0byBzdXNwZW5kIGV2ZW4gaWYgY2FuU3VzcGVuZEFjdGl2
ZURPTU9iamVjdHMoKSByZXR1cm5zICdmYWxzZScgLQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS93b3Jr
ZXJzL1dvcmtlckNvbnRleHQuY3BwIGIvV2ViQ29yZS93b3JrZXJzL1dvcmtlckNvbnRleHQuY3Bw
CmluZGV4IGZkYTJlNmQuLjFmYTQ0MmUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvd29ya2Vycy9Xb3Jr
ZXJDb250ZXh0LmNwcAorKysgYi9XZWJDb3JlL3dvcmtlcnMvV29ya2VyQ29udGV4dC5jcHAKQEAg
LTM4LDExICszOCwxNyBAQAogI2luY2x1ZGUgIkV2ZW50RXhjZXB0aW9uLmgiCiAjaW5jbHVkZSAi
TWVzc2FnZUV2ZW50LmgiCiAjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKKyNpbmNsdWRlICJS
ZXNvdXJjZVJlcXVlc3QuaCIKKyNpbmNsdWRlICJTY3JpcHRTb3VyY2VDb2RlLmgiCisjaW5jbHVk
ZSAiU2NyaXB0VmFsdWUuaCIKICNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgorI2luY2x1ZGUg
IlRocmVhZGFibGVMb2FkZXIuaCIKKyNpbmNsdWRlICJXb3JrZXJJbXBvcnRTY3JpcHRzQ2xpZW50
LmgiCiAjaW5jbHVkZSAiV29ya2VyTG9jYXRpb24uaCIKICNpbmNsdWRlICJXb3JrZXJOYXZpZ2F0
b3IuaCIKICNpbmNsdWRlICJXb3JrZXJPYmplY3RQcm94eS5oIgogI2luY2x1ZGUgIldvcmtlclRo
cmVhZC5oIgorI2luY2x1ZGUgIlhNTEh0dHBSZXF1ZXN0RXhjZXB0aW9uLmgiCiAjaW5jbHVkZSA8
d3RmL1JlZlB0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0xMzYsNiArMTQyLDEyIEBA
IHZvaWQgV29ya2VyQ29udGV4dDo6cmVzb3VyY2VSZXRyaWV2ZWRCeVhNTEh0dHBSZXF1ZXN0KHVu
c2lnbmVkIGxvbmcsIGNvbnN0IFNjcmlwCiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KIAordm9p
ZCBXb3JrZXJDb250ZXh0OjpzY3JpcHRJbXBvcnRlZCh1bnNpZ25lZCBsb25nLCBjb25zdCBTdHJp
bmcmKQoreworICAgIC8vIEZJWE1FOiBUaGUgaW1wbGVtZW50YXRpb24gaXMgcGVuZGluZyB0aGUg
Zml4ZXMgaW4gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMTc1Cisg
ICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwogdm9pZCBXb3JrZXJDb250ZXh0Ojpwb3N0TWVzc2Fn
ZShjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCiB7CiAgICAgbV90aHJlYWQtPndvcmtlck9iamVjdFBy
b3h5KCktPnBvc3RNZXNzYWdlVG9Xb3JrZXJPYmplY3QobWVzc2FnZSk7CkBAIC0yMjIsNiArMjM0
LDQ3IEBAIHZvaWQgV29ya2VyQ29udGV4dDo6ZGlzcGF0Y2hNZXNzYWdlKGNvbnN0IFN0cmluZyYg
bWVzc2FnZSkKICAgICBBU1NFUlQoIWVjKTsKIH0KIAordm9pZCBXb3JrZXJDb250ZXh0OjppbXBv
cnRTY3JpcHRzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiB1cmxzLCBjb25zdCBTdHJpbmcmIGNhbGxl
clVSTCwgaW50IGNhbGxlckxpbmUsIEV4Y2VwdGlvbkNvZGUmIGVjKQoreworICAgIGVjID0gMDsK
KyAgICBWZWN0b3I8U3RyaW5nPjo6Y29uc3RfaXRlcmF0b3IgdXJsc0VuZCA9IHVybHMuZW5kKCk7
CisgICAgVmVjdG9yPEtVUkw+IGNvbXBsZXRlZFVybHM7CisgICAgZm9yIChWZWN0b3I8U3RyaW5n
Pjo6Y29uc3RfaXRlcmF0b3IgaXQgPSB1cmxzLmJlZ2luKCk7IGl0ICE9IHVybHNFbmQ7ICsraXQp
IHsKKyAgICAgICAgY29uc3QgS1VSTCYgdXJsID0gc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5j
b21wbGV0ZVVSTCgqaXQpOworICAgICAgICBpZiAoIXVybC5pc1ZhbGlkKCkpIHsKKyAgICAgICAg
ICAgIGVjID0gU1lOVEFYX0VSUjsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAg
ICAgICBjb21wbGV0ZWRVcmxzLmFwcGVuZCh1cmwpOworICAgIH0KKyAgICBTdHJpbmcgc2VjdXJp
dHlPcmlnaW4gPSBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPnNlY3VyaXR5T3JpZ2luKCktPnRv
U3RyaW5nKCk7CisgICAgVmVjdG9yPEtVUkw+Ojpjb25zdF9pdGVyYXRvciBlbmQgPSBjb21wbGV0
ZWRVcmxzLmVuZCgpOworICAgIFZlY3RvcjxTY3JpcHRTb3VyY2VDb2RlPiBzb3VyY2VzOworICAg
IGZvciAoVmVjdG9yPEtVUkw+Ojpjb25zdF9pdGVyYXRvciBpdCA9IGNvbXBsZXRlZFVybHMuYmVn
aW4oKTsgaXQgIT0gZW5kICYmICFtX3NjcmlwdC0+ZXhlY3V0aW9uRm9yYmlkZGVuKCk7ICsraXQp
IHsKKyAgICAgICAgUmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QoKml0KTsKKyAgICAgICAgcmVxdWVz
dC5zZXRIVFRQTWV0aG9kKCJHRVQiKTsKKyAgICAgICAgcmVxdWVzdC5zZXRIVFRQT3JpZ2luKHNl
Y3VyaXR5T3JpZ2luKTsKKyAgICAgICAgV29ya2VySW1wb3J0U2NyaXB0c0NsaWVudCBjbGllbnQo
c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCAqaXQsIGNhbGxlclVSTCwgY2FsbGVyTGluZSk7Cisg
ICAgICAgIFRocmVhZGFibGVMb2FkZXI6OmxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHkoc2NyaXB0
RXhlY3V0aW9uQ29udGV4dCgpLCByZXF1ZXN0LCBjbGllbnQpOworICAgICAgICAKKyAgICAgICAg
Ly8gSWYgdGhlIGZldGNoaW5nIGF0dGVtcHQgZmFpbGVkLCB0aHJvdyBhIE5FVFdPUktfRVJSIGV4
Y2VwdGlvbiBhbmQgYWJvcnQgYWxsIHRoZXNlIHN0ZXBzLgorICAgICAgICBpZiAoY2xpZW50LmZh
aWxlZCgpKSB7CisgICAgICAgICAgICBlYyA9IFhNTEh0dHBSZXF1ZXN0RXhjZXB0aW9uOjpORVRX
T1JLX0VSUjsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBzb3VyY2Vz
LmFwcGVuZChTY3JpcHRTb3VyY2VDb2RlKGNsaWVudC5zY3JpcHQoKSwgKml0KSk7CisgICAgfQor
ICAgIFZlY3RvcjxTY3JpcHRTb3VyY2VDb2RlPjo6Y29uc3RfaXRlcmF0b3Igc291cmNlRW5kID0g
c291cmNlcy5lbmQoKTsKKyAgICBmb3IgKFZlY3RvcjxTY3JpcHRTb3VyY2VDb2RlPjo6Y29uc3Rf
aXRlcmF0b3IgaXQgPSBzb3VyY2VzLmJlZ2luKCk7IGl0ICE9IHNvdXJjZUVuZCAmJiAhbV9zY3Jp
cHQtPmV4ZWN1dGlvbkZvcmJpZGRlbigpOyArK2l0KSB7CisgICAgICAgIFNjcmlwdFZhbHVlIGV4
Y2VwdGlvbjsKKyAgICAgICAgbV9zY3JpcHQtPmV2YWx1YXRlKCppdCwgJmV4Y2VwdGlvbik7Cisg
ICAgICAgIGlmICghZXhjZXB0aW9uLmhhc05vVmFsdWUoKSkgeworICAgICAgICAgICAgbV9zY3Jp
cHQtPnNldEV4Y2VwdGlvbihleGNlcHRpb24pOworICAgICAgICAgICAgcmV0dXJuOworICAgICAg
ICB9CisgICAgfQorfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFC
TEUoV09SS0VSUykKZGlmZiAtLWdpdCBhL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJDb250ZXh0Lmgg
Yi9XZWJDb3JlL3dvcmtlcnMvV29ya2VyQ29udGV4dC5oCmluZGV4IDIyNTU1NTQuLjY2NGRlZDMg
MTAwNjQ0Ci0tLSBhL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJDb250ZXh0LmgKKysrIGIvV2ViQ29y
ZS93b3JrZXJzL1dvcmtlckNvbnRleHQuaApAQCAtNzcsNiArNzcsNyBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAgICAgICAgIHZpcnR1YWwgdm9pZCByZXBvcnRFeGNlcHRpb24oY29uc3QgU3RyaW5n
JiBlcnJvck1lc3NhZ2UsIGludCBsaW5lTnVtYmVyLCBjb25zdCBTdHJpbmcmIHNvdXJjZVVSTCk7
CiAgICAgICAgIHZpcnR1YWwgdm9pZCBhZGRNZXNzYWdlKE1lc3NhZ2VEZXN0aW5hdGlvbiwgTWVz
c2FnZVNvdXJjZSwgTWVzc2FnZUxldmVsLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIHVuc2lnbmVk
IGxpbmVOdW1iZXIsIGNvbnN0IFN0cmluZyYgc291cmNlVVJMKTsKICAgICAgICAgdmlydHVhbCB2
b2lkIHJlc291cmNlUmV0cmlldmVkQnlYTUxIdHRwUmVxdWVzdCh1bnNpZ25lZCBsb25nIGlkZW50
aWZpZXIsIGNvbnN0IFNjcmlwdFN0cmluZyYgc291cmNlU3RyaW5nKTsKKyAgICAgICAgdmlydHVh
bCB2b2lkIHNjcmlwdEltcG9ydGVkKHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgU3Ry
aW5nJiBzb3VyY2VTdHJpbmcpOwogCiAgICAgICAgIHZpcnR1YWwgV29ya2VyQ29udGV4dCogdG9X
b3JrZXJDb250ZXh0KCkgeyByZXR1cm4gdGhpczsgfQogCkBAIC05OSw2ICsxMDAsOCBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHR5cGVkZWYgSGFzaE1hcDxBdG9taWNTdHJpbmcsIExp
c3RlbmVyVmVjdG9yPiBFdmVudExpc3RlbmVyc01hcDsKICAgICAgICAgRXZlbnRMaXN0ZW5lcnNN
YXAmIGV2ZW50TGlzdGVuZXJzKCkgeyByZXR1cm4gbV9ldmVudExpc3RlbmVyczsgfQogCisgICAg
ICAgIHZvaWQgaW1wb3J0U2NyaXB0cyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgdXJscywgY29uc3Qg
U3RyaW5nJiBjYWxsZXJVUkwsIGludCBjYWxsZXJMaW5lLCBFeGNlcHRpb25Db2RlJik7CisgICAg
ICAgIAogICAgICAgICB1c2luZyBSZWZDb3VudGVkPFdvcmtlckNvbnRleHQ+OjpyZWY7CiAgICAg
ICAgIHVzaW5nIFJlZkNvdW50ZWQ8V29ya2VyQ29udGV4dD46OmRlcmVmOwogCmRpZmYgLS1naXQg
YS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyQ29udGV4dC5pZGwgYi9XZWJDb3JlL3dvcmtlcnMvV29y
a2VyQ29udGV4dC5pZGwKaW5kZXggZTFmZmY1MS4uYmJmY2E2MyAxMDA2NDQKLS0tIGEvV2ViQ29y
ZS93b3JrZXJzL1dvcmtlckNvbnRleHQuaWRsCisrKyBiL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJD
b250ZXh0LmlkbApAQCAtNDAsNiArNDAsNyBAQCBtb2R1bGUgdGhyZWFkcyB7CiAKICAgICAgICAg
YXR0cmlidXRlIEV2ZW50TGlzdGVuZXIgb25tZXNzYWdlOwogICAgICAgICB2b2lkIHBvc3RNZXNz
YWdlKGluIERPTVN0cmluZyBtZXNzYWdlKTsKKyAgICAgICAgW0N1c3RvbV0gdm9pZCBpbXBvcnRT
Y3JpcHRzKC8qIHVybHMgKi8pOwogCiAgICAgICAgIGF0dHJpYnV0ZSBbUmVwbGFjZWFibGVdIFdv
cmtlckxvY2F0aW9uIGxvY2F0aW9uOwogICAgICAgICBhdHRyaWJ1dGUgW1JlcGxhY2VhYmxlXSBX
b3JrZXJOYXZpZ2F0b3IgbmF2aWdhdG9yOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS93b3JrZXJzL1dv
cmtlckltcG9ydFNjcmlwdHNDbGllbnQuY3BwIGIvV2ViQ29yZS93b3JrZXJzL1dvcmtlckltcG9y
dFNjcmlwdHNDbGllbnQuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjlm
YzBlZmEKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb3JlL3dvcmtlcnMvV29ya2VySW1wb3J0U2Ny
aXB0c0NsaWVudC5jcHAKQEAgLTAsMCArMSw5MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAw
OSBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5E
IEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICoKKyAqLworCisjaW5jbHVkZSAi
Y29uZmlnLmgiCisKKyNpbmNsdWRlICJXb3JrZXJJbXBvcnRTY3JpcHRzQ2xpZW50LmgiCisKKyNp
bmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsK
Kwordm9pZCBXb3JrZXJJbXBvcnRTY3JpcHRzQ2xpZW50OjpkaWRSZWNlaXZlUmVzcG9uc2UoY29u
c3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCit7CisgICAgaWYgKHJlc3BvbnNlLmh0dHBT
dGF0dXNDb2RlKCkgLyAxMDAgIT0gMiAmJiByZXNwb25zZS5odHRwU3RhdHVzQ29kZSgpICE9IDAp
IHsKKyAgICAgICAgbV9mYWlsZWQgPSB0cnVlOworICAgICAgICByZXR1cm47CisgICAgfQorICAg
IG1fcmVzcG9uc2UgPSByZXNwb25zZTsKKyAgICBtX3Jlc3BvbnNlRW5jb2RpbmcgPSByZXNwb25z
ZS50ZXh0RW5jb2RpbmdOYW1lKCk7Cit9CisKK3ZvaWQgV29ya2VySW1wb3J0U2NyaXB0c0NsaWVu
dDo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgY2hhciogZGF0YSwgaW50IGxlbikKK3sKKyAgICBpZiAo
bV9mYWlsZWQpCisgICAgICAgIHJldHVybjsKKworICAgIGlmICghbV9kZWNvZGVyKSB7CisgICAg
ICAgIGlmICghbV9yZXNwb25zZUVuY29kaW5nLmlzRW1wdHkoKSkKKyAgICAgICAgICAgIG1fZGVj
b2RlciA9IFRleHRSZXNvdXJjZURlY29kZXI6OmNyZWF0ZSgidGV4dC9qYXZhc2NyaXB0IiwgbV9y
ZXNwb25zZUVuY29kaW5nKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgbV9kZWNvZGVyID0g
VGV4dFJlc291cmNlRGVjb2Rlcjo6Y3JlYXRlKCJ0ZXh0L2phdmFzY3JpcHQiLCBtX3NjcmlwdEV4
ZWN1dGlvbkNvbnRleHQtPmVuY29kaW5nKCkpOworICAgIH0KKworICAgIGlmICghbGVuKQorICAg
ICAgICByZXR1cm47CisgICAgCisgICAgaWYgKGxlbiA9PSAtMSkKKyAgICAgICAgbGVuID0gc3Ry
bGVuKGRhdGEpOworICAgIAorICAgIG1fc2NyaXB0ICs9IG1fZGVjb2Rlci0+ZGVjb2RlKGRhdGEs
IGxlbik7Cit9CisKK3ZvaWQgV29ya2VySW1wb3J0U2NyaXB0c0NsaWVudDo6ZGlkRmluaXNoTG9h
ZGluZyh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIpCit7CisgICAgaWYgKG1fZmFpbGVkKQorICAg
ICAgICByZXR1cm47CisKKyAgICBpZiAobV9kZWNvZGVyKQorICAgICAgICBtX3NjcmlwdCArPSBt
X2RlY29kZXItPmZsdXNoKCk7CisgICAgCisgICAgbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0LT5z
Y3JpcHRJbXBvcnRlZChpZGVudGlmaWVyLCBtX3NjcmlwdCk7CisgICAgbV9zY3JpcHRFeGVjdXRp
b25Db250ZXh0LT5hZGRNZXNzYWdlKEluc3BlY3RvckNvbnRyb2xsZXJEZXN0aW5hdGlvbiwgSlNN
ZXNzYWdlU291cmNlLCBMb2dNZXNzYWdlTGV2ZWwsICJXb3JrZXIgc2NyaXB0IGltcG9ydGVkOiBc
IiIgKyBtX3VybCArICJcIi4iLCBtX2NhbGxlckxpbmVOdW1iZXIsIG1fY2FsbGVyVVJMKTsKK30K
Kwordm9pZCBXb3JrZXJJbXBvcnRTY3JpcHRzQ2xpZW50OjpkaWRGYWlsKGNvbnN0IFJlc291cmNl
RXJyb3ImKQoreworICAgIG1fZmFpbGVkID0gdHJ1ZTsKK30KKwordm9pZCBXb3JrZXJJbXBvcnRT
Y3JpcHRzQ2xpZW50OjpkaWRGYWlsUmVkaXJlY3RDaGVjaygpCit7CisgICAgbV9mYWlsZWQgPSB0
cnVlOworfQorCit2b2lkIFdvcmtlckltcG9ydFNjcmlwdHNDbGllbnQ6OmRpZFJlY2VpdmVBdXRo
ZW50aWNhdGlvbkNhbmNlbGxhdGlvbihjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikKK3sKKyAgICBt
X2ZhaWxlZCA9IHRydWU7Cit9CisKK30KZGlmZiAtLWdpdCBhL1dlYkNvcmUvd29ya2Vycy9Xb3Jr
ZXJJbXBvcnRTY3JpcHRzQ2xpZW50LmggYi9XZWJDb3JlL3dvcmtlcnMvV29ya2VySW1wb3J0U2Ny
aXB0c0NsaWVudC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU2NzY3YmIK
LS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb3JlL3dvcmtlcnMvV29ya2VySW1wb3J0U2NyaXB0c0Ns
aWVudC5oCkBAIC0wLDAgKzEsNzUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgQXBwbGUg
SW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisg
KiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqCisgKi8KKworI2lmbmRlZiBXb3JrZXJJbXBv
cnRTY3JpcHRzQ2xpZW50X2gKKyNkZWZpbmUgV29ya2VySW1wb3J0U2NyaXB0c0NsaWVudF9oCisK
KyNpbmNsdWRlICJSZXNvdXJjZVJlc3BvbnNlLmgiCisjaW5jbHVkZSAiU2NyaXB0U3RyaW5nLmgi
CisjaW5jbHVkZSAiVGV4dFJlc291cmNlRGVjb2Rlci5oIgorI2luY2x1ZGUgIlRocmVhZGFibGVM
b2FkZXJDbGllbnQuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCisgICAgY2xhc3MgU2NyaXB0
RXhlY3V0aW9uQ29udGV4dDsKKyAgICAKKyAgICBjbGFzcyBXb3JrZXJJbXBvcnRTY3JpcHRzQ2xp
ZW50IDogcHVibGljIFRocmVhZGFibGVMb2FkZXJDbGllbnQgeworICAgIHB1YmxpYzoKKyAgICAg
ICAgV29ya2VySW1wb3J0U2NyaXB0c0NsaWVudChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3Jp
cHRFeGVjdXRpb25Db250ZXh0LCBjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5nJiBjYWxs
ZXJVUkwsIGludCBjYWxsZXJMaW5lTnVtYmVyKQorICAgICAgICAgICAgOiBtX3NjcmlwdEV4ZWN1
dGlvbkNvbnRleHQoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCkKKyAgICAgICAgICAgICwgbV91cmwo
dXJsKQorICAgICAgICAgICAgLCBtX2NhbGxlclVSTChjYWxsZXJVUkwpCisgICAgICAgICAgICAs
IG1fY2FsbGVyTGluZU51bWJlcihjYWxsZXJMaW5lTnVtYmVyKQorICAgICAgICAgICAgLCBtX2Zh
aWxlZChmYWxzZSkKKyAgICAgICAgeworICAgICAgICB9CisKKyAgICAgICAgY29uc3QgU3RyaW5n
JiBzY3JpcHQoKSBjb25zdCB7IHJldHVybiBtX3NjcmlwdDsgfQorICAgICAgICBib29sIGZhaWxl
ZCgpIGNvbnN0IHsgcmV0dXJuIG1fZmFpbGVkOyB9CisKKyAgICAgICAgdmlydHVhbCB2b2lkIGRp
ZFJlY2VpdmVSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSk7CisgICAg
ICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlRGF0YShjb25zdCBjaGFyKiBkYXRhLCBpbnQgbGVu
Z3RoUmVjZWl2ZWQpOworICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkRmluaXNoTG9hZGluZyh1bnNp
Z25lZCBsb25nIC8qIGlkZW50aWZpZXIgKi8pOworICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkRmFp
bChjb25zdCBSZXNvdXJjZUVycm9yJik7CisgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRGYWlsUmVk
aXJlY3RDaGVjaygpOworICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZUF1dGhlbnRpY2F0
aW9uQ2FuY2VsbGF0aW9uKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsKKworICAgIHByaXZhdGU6
CisgICAgICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4
dDsKKyAgICAgICAgU3RyaW5nIG1fdXJsOworICAgICAgICBTdHJpbmcgbV9jYWxsZXJVUkw7Cisg
ICAgICAgIGludCBtX2NhbGxlckxpbmVOdW1iZXI7CisgICAgICAgIFJlc291cmNlUmVzcG9uc2Ug
bV9yZXNwb25zZTsKKyAgICAgICAgU3RyaW5nIG1fcmVzcG9uc2VFbmNvZGluZzsgICAgICAgIAor
ICAgICAgICBSZWZQdHI8VGV4dFJlc291cmNlRGVjb2Rlcj4gbV9kZWNvZGVyOworICAgICAgICBT
dHJpbmcgbV9zY3JpcHQ7CisgICAgICAgIGJvb2wgbV9mYWlsZWQ7CisgICAgfTsKKworfQorCisj
ZW5kaWYKKwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>28393</attachid>
            <date>2009-03-07 16:22:58 -0800</date>
            <delta_ts>2009-03-09 22:10:50 -0700</delta_ts>
            <desc>Updated to match firefox behaviour, as well as a little tidy up</desc>
            <filename>importScripts.patch</filename>
            <type>text/plain</type>
            <size>33562</size>
            <attacher name="Oliver Hunt">oliver</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBiMGFhMzM2Li5lYjFhMGQ0IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjAgQEAKKzIwMDktMDMt
MDcgIE9saXZlciBIdW50ICA8b2xpdmVyQGFwcGxlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICA8cmRhcjovL3Byb2JsZW0vNjQyNTgwNz4gSW1w
bGVtZW50IFdvcmtlclV0aWxzLmltcG9ydFNjcmlwdHMoKQorICAgICAgICA8aHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNzIxPgorCisgICAgICAgIFRlc3RzIHRvIGNv
dmVyIHZhcmlvdXMgdXNhZ2VzIG9mIGltcG9ydFNjcmlwdHMsIGVnLiBuZXR3b3JrIGxvYWQKKyAg
ICAgICAgZmFpbHVyZXMsIHNlY3VyaXR5IGV4Y2VwdGlvbnMsIGV4ZWN1dGlvbiBvcmRlcmluZywg
ZXRjCisKKyAgICAgICAgKiBmYXN0L3dvcmtlcnMvcmVzb3VyY2VzL3dvcmtlci1pbXBvcnRTY3Jp
cHRzLXNvdXJjZTEuanM6IEFkZGVkLgorICAgICAgICAqIGZhc3Qvd29ya2Vycy9yZXNvdXJjZXMv
d29ya2VyLWltcG9ydFNjcmlwdHMtc291cmNlMi5qczogQWRkZWQuCisgICAgICAgICogZmFzdC93
b3JrZXJzL3Jlc291cmNlcy93b3JrZXItaW1wb3J0U2NyaXB0cy1zeW50YXhFcnJvci5qczogQWRk
ZWQuCisgICAgICAgICogZmFzdC93b3JrZXJzL3Jlc291cmNlcy93b3JrZXItaW1wb3J0U2NyaXB0
cy5qczogQWRkZWQuCisgICAgICAgICogZmFzdC93b3JrZXJzL3dvcmtlci1pbXBvcnRTY3JpcHRz
LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC93b3JrZXJzL3dvcmtlci1pbXBv
cnRTY3JpcHRzLmh0bWw6IEFkZGVkLgorCiAyMDA5LTAzLTA2ICBEYXJpbiBBZGxlciAgPGRhcmlu
QGFwcGxlLmNvbT4KIAogICAgICAgICBGaXhlZCBicm9rZW4gdGVzdCBJIGp1c3QgbGFuZGVkIGZv
ciBidWcgMjQ0MjIuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3dvcmtlcnMvcmVzb3Vy
Y2VzL3dvcmtlci1pbXBvcnRTY3JpcHRzLXNvdXJjZTEuanMgYi9MYXlvdXRUZXN0cy9mYXN0L3dv
cmtlcnMvcmVzb3VyY2VzL3dvcmtlci1pbXBvcnRTY3JpcHRzLXNvdXJjZTEuanMKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTBhODAyOAotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2Zhc3Qvd29ya2Vycy9yZXNvdXJjZXMvd29ya2VyLWltcG9ydFNjcmlwdHMtc291
cmNlMS5qcwpAQCAtMCwwICsxLDYgQEAKK2xvYWRlZFNvdXJjZTEgPSB0cnVlOworcG9zdE1lc3Nh
Z2UoIkxvYWRlZCByZXNvdXJjZSAxIik7CitpZiAodGhpcy5maXJzdFNob3VsZFRocm93KSB7Cisg
ICAgcG9zdE1lc3NhZ2UoIkZpcnN0IHJlc291cmNlIHRocm93aW5nIGFuIGV4Y2VwdGlvbiIpOwor
ICAgIHRocm93ICJUaHJvd24gYnkgZmlyc3QgcmVzb3VyY2UiCit9CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9mYXN0L3dvcmtlcnMvcmVzb3VyY2VzL3dvcmtlci1pbXBvcnRTY3JpcHRzLXNvdXJj
ZTIuanMgYi9MYXlvdXRUZXN0cy9mYXN0L3dvcmtlcnMvcmVzb3VyY2VzL3dvcmtlci1pbXBvcnRT
Y3JpcHRzLXNvdXJjZTIuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODY0
MGVkZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3Qvd29ya2Vycy9yZXNvdXJj
ZXMvd29ya2VyLWltcG9ydFNjcmlwdHMtc291cmNlMi5qcwpAQCAtMCwwICsxLDggQEAKK2lmICgh
bG9hZGVkU291cmNlMSkKKyAgICBwb3N0TWVzc2FnZSgiUmVzb3VyY2UgMiBsb2FkZWQgYmVmb3Jl
IHJlc291cmNlIDEiKTsKK2xvYWRlZFNvdXJjZTIgPSB0cnVlOworcG9zdE1lc3NhZ2UoIkxvYWRl
ZCByZXNvdXJjZSAyIik7CitpZiAodGhpcy5zZWNvbmRTaG91bGRUaHJvdykgeworICAgIHBvc3RN
ZXNzYWdlKCJTZWNvbmQgcmVzb3VyY2UgdGhyb3dpbmcgYW4gZXhjZXB0aW9uIik7CisgICAgdGhy
b3cgIlRocm93biBieSBzZWNvbmQgcmVzb3VyY2UiOworfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvZmFzdC93b3JrZXJzL3Jlc291cmNlcy93b3JrZXItaW1wb3J0U2NyaXB0cy1zeW50YXhFcnJv
ci5qcyBiL0xheW91dFRlc3RzL2Zhc3Qvd29ya2Vycy9yZXNvdXJjZXMvd29ya2VyLWltcG9ydFNj
cmlwdHMtc3ludGF4RXJyb3IuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4u
ZGUyNjRkNAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3Qvd29ya2Vycy9yZXNv
dXJjZXMvd29ya2VyLWltcG9ydFNjcmlwdHMtc3ludGF4RXJyb3IuanMKQEAgLTAsMCArMSBAQAor
YSBzeW50YXggZXJyb3IKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qvd29ya2Vycy9yZXNv
dXJjZXMvd29ya2VyLWltcG9ydFNjcmlwdHMuanMgYi9MYXlvdXRUZXN0cy9mYXN0L3dvcmtlcnMv
cmVzb3VyY2VzL3dvcmtlci1pbXBvcnRTY3JpcHRzLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAuLjliMjliMjAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0
L3dvcmtlcnMvcmVzb3VyY2VzL3dvcmtlci1pbXBvcnRTY3JpcHRzLmpzCkBAIC0wLDAgKzEsMTM0
IEBACit0cnkgeworcG9zdE1lc3NhZ2UoIlRlc3Qgc3RhcnRlZC4iKTsKKworaW1wb3J0U2NyaXB0
cygpOworcG9zdE1lc3NhZ2UoIlBBU1M6IGltcG9ydFNjcmlwdHMoKSwgZXhpc3RzLCBpcyBhIGZ1
bmN0aW9uLCBhbmQgZG9lc24ndCB0aHJvdyB3aGVuIG5vdCBnaXZlbiBhbnkgYXJndW1lbnRzIik7
CisKK3Bvc3RNZXNzYWdlKCJUZXN0aW5nIGRpZmZlcmVudCBvcmlnaW4iKTsKK3ZhciBkaWZmZXJl
bnRPcmlnaW4gPSAiZGF0YTp0ZXh0L2phdmFzY3JpcHQscG9zdE1lc3NhZ2UoJ1BBU1M6IGxvYWRl
ZCBzY3JpcHQgZnJvbSBkaWZmZXJlbnQgb3JpZ2luJyk7ZGlmZmVyZW50T3JpZ2luTG9hZGVkPXRy
dWUiOwordHJ5IHsKKyAgICBpbXBvcnRTY3JpcHRzKGRpZmZlcmVudE9yaWdpbikKK30gY2F0Y2go
ZSkgeworICAgIHBvc3RNZXNzYWdlKCJGQUlMOiBUaHJldyAiICsgZSArICIgd2hlbiBhdHRlbXB0
aW5nIGNyb3NzIG9yaWdpbiBsb2FkIik7Cit9CitpZiAoZGlmZmVyZW50T3JpZ2luTG9hZGVkKQor
ICAgIHBvc3RNZXNzYWdlKCJQQVNTOiBleGVjdXRlZCBzY3JpcHQgZnJvbSBkaWZmZXJlbnQgb3Jp
Z2luIik7CisKK3ZhciBzb3VyY2UxID0gIndvcmtlci1pbXBvcnRTY3JpcHRzLXNvdXJjZTEuanMi
OwordmFyIHNvdXJjZTIgPSAid29ya2VyLWltcG9ydFNjcmlwdHMtc291cmNlMi5qcyI7Cit2YXIg
c3ludGF4RXJyb3JTb3VyY2UgPSAid29ya2VyLWltcG9ydFNjcmlwdHMtc3ludGF4RXJyb3IuanMi
OwordmFyIGZha2VTb3VyY2UgPSAibm9uZXhpc3RhbnQiOwordmFyIGxvYWRlZFNvdXJjZTEgPSBm
YWxzZTsKK3ZhciBsb2FkZWRTb3VyY2UyID0gZmFsc2U7CisKK3Bvc3RNZXNzYWdlKCJUZXN0aW5n
IHNpbmdsZSBhcmd1bWVudDoiKTsKK2ltcG9ydFNjcmlwdHMoc291cmNlMSkKK2lmIChsb2FkZWRT
b3VyY2UxKQorICAgIHBvc3RNZXNzYWdlKCJQQVNTOiBsb2FkZWQgZmlyc3Qgc291cmNlIik7Citl
bHNlCisgICAgcG9zdE1lc3NhZ2UoIkZBSUw6IGRpZCBub3QgbG9hZCBmaXJzdCBzb3VyY2UiKTsK
KworbG9hZGVkU291cmNlMSA9IGZhbHNlOworbG9hZGVkU291cmNlMiA9IGZhbHNlOworCitwb3N0
TWVzc2FnZSgiVGVzdGluZyBtdWx0aXBsZSBhcmd1bWVudHM6Iik7CitpbXBvcnRTY3JpcHRzKHNv
dXJjZTEsIHNvdXJjZTIpOworaWYgKGxvYWRlZFNvdXJjZTEgJiYgbG9hZGVkU291cmNlMikKKyAg
ICBwb3N0TWVzc2FnZSgiUEFTUzogQm90aCBzb3VyY2VzIGxvYWRlZCBhbmQgZXhlY3V0ZWQuIik7
CitlbHNlCisgICAgcG9zdE1lc3NhZ2UoIkZBSUw6IDFub3QgYWxsIHNvdXJjZXMgd2VyZSBsb2Fk
ZWQiKTsKKworbG9hZGVkU291cmNlMSA9IGZhbHNlOworbG9hZGVkU291cmNlMiA9IGZhbHNlOwor
Citwb3N0TWVzc2FnZSgiVGVzdGluZyBtdWx0aXBsZSBhcmd1bWVudHMgKGRpZmZlcmVudCBvcmRl
cik6Iik7CitpbXBvcnRTY3JpcHRzKHNvdXJjZTIsIHNvdXJjZTEpOworaWYgKGxvYWRlZFNvdXJj
ZTEgJiYgbG9hZGVkU291cmNlMikKKyAgICBwb3N0TWVzc2FnZSgiUEFTUzogQm90aCBzb3VyY2Vz
IGxvYWRlZCBhbmQgZXhlY3V0ZWQuIik7CitlbHNlCisgICAgcG9zdE1lc3NhZ2UoIkZBSUw6IG5v
dCBhbGwgc291cmNlcyB3ZXJlIGxvYWRlZCIpOworCitsb2FkZWRTb3VyY2UxID0gZmFsc2U7Cits
b2FkZWRTb3VyY2UyID0gZmFsc2U7CitkaWZmZXJlbnRPcmlnaW5Mb2FkZWQgPSBmYWxzZTsKK2Zp
cnN0U2hvdWxkVGhyb3cgPSBmYWxzZTsKK3NlY29uZFNob3VsZFRocm93ID0gZmFsc2U7Citwb3N0
TWVzc2FnZSgiVGVzdGluZyBtdWx0aXBsZSBhcmd1bWVudHMsIHdpdGggZGlmZmVyZW50IG9yaWdp
biBmb3Igb25lIGFyZ3VtZW50OiIpOwordHJ5IHsKKyAgICBpbXBvcnRTY3JpcHRzKHNvdXJjZTEs
IGRpZmZlcmVudE9yaWdpbiwgc291cmNlMik7Cit9IGNhdGNoKGUpIHsKKyAgICBwb3N0TWVzc2Fn
ZSgiRkFJTDogVGhyZXcgIiArIGUgKyAiIHdoZW4gYXR0ZW1wdCBjcm9zcyBvcmlnaW4gbG9hZCIp
OworfQoraWYgKGxvYWRlZFNvdXJjZTEgJiYgbG9hZGVkU291cmNlMiAmJiBkaWZmZXJlbnRPcmln
aW5Mb2FkZWQpCisgICAgcG9zdE1lc3NhZ2UoIlBBU1M6IGFsbCByZXNvdXJjZXMgZXhlY3V0ZWQu
Iik7CitlbHNlCisgICAgcG9zdE1lc3NhZ2UoIkZBSUw6IFNvbWUgcmVzb3VyY2VzIHdlcmUgbG9h
ZGVkIGRlc3BpdGUgb2YgdGhlIG9yaWdpbiBmYWlsdXJlIik7CisKK2xvYWRlZFNvdXJjZTEgPSBm
YWxzZTsKK2xvYWRlZFNvdXJjZTIgPSBmYWxzZTsKKwordHJ5IHsKKyAgICBpbXBvcnRTY3JpcHRz
KHNvdXJjZTEsIGZha2VTb3VyY2UsIHNvdXJjZTIpOworfSBjYXRjaChlKSB7CisgICAgcG9zdE1l
c3NhZ2UoIlBBU1M6IFRocmV3ICIgKyBlICsgIiB3aGVuIGxvYWQgZmFpbGVkIik7Cit9CitpZiAo
IWxvYWRlZFNvdXJjZTEgJiYgIWxvYWRlZFNvdXJjZTIpCisgICAgcG9zdE1lc3NhZ2UoIlBBU1M6
IE5vdGhpbmcgd2FzIGV4ZWN1dGVkIHdoZW4gbmV0d29yayBlcnJvciBvY2N1cnJlZC4iKTsKK2Vs
c2UKKyAgICBwb3N0TWVzc2FnZSgiRkFJTDogc29tZSByZXNvdXJjZXMgd2VyZSBsb2FkZWQgZGVz
cGl0ZSB0aGUgbmV0d29yayBlcnJvciIpOworCitsb2FkZWRTb3VyY2UxID0gZmFsc2U7Citsb2Fk
ZWRTb3VyY2UyID0gZmFsc2U7CisKK3RyeSB7CisgICAgaW1wb3J0U2NyaXB0cyhzb3VyY2UxLCBz
eW50YXhFcnJvclNvdXJjZSwgc291cmNlMik7Cit9IGNhdGNoKGUpIHsKKyAgICBwb3N0TWVzc2Fn
ZSgiUEFTUzogVGhyZXcgIiArIGUgKyAiIHdoZW4gZW5jb3VudGVyaW5nIGEgc3ludGF4IGVycm9y
IGluIGltcG9ydGVkIHNjcmlwdCIpOworfQoraWYgKCFsb2FkZWRTb3VyY2UxICYmICFsb2FkZWRT
b3VyY2UyKQorICAgIHBvc3RNZXNzYWdlKCJQQVNTOiBOb3RoaW5nIHdhcyBleGVjdXRlZCB3aGVu
IHN5bnRheCBlcnJvciB3YXMgcHJlc2VudCBpbiBhbnkgc291cmNlLiIpOworZWxzZQorICAgIHBv
c3RNZXNzYWdlKCJGQUlMOiBzb21lIHJlc291cmNlcyB3ZXJlIGxvYWRlZCBkZXNwaXRlIHRoZSBw
cmVzZW5jZSBvZiBhIHN5bnRheCBlcnJvciIpOworCitsb2FkZWRTb3VyY2UxID0gZmFsc2U7Cits
b2FkZWRTb3VyY2UyID0gZmFsc2U7CisKK3Bvc3RNZXNzYWdlKCJUZXN0aW5nIG11bHRpcGxlIGFy
Z3VtZW50cywgd2l0aCBmaXJzdCByZXNvdXJjZSB0aHJvd2luZyBhbiBleGNlcHRpb246Iik7Citm
aXJzdFNob3VsZFRocm93ID0gdHJ1ZTsKK3RyeSB7CisgICAgaW1wb3J0U2NyaXB0cyhzb3VyY2Ux
LCBzb3VyY2UyKTsKK30gY2F0Y2goZSkgeworICAgIHBvc3RNZXNzYWdlKCJQQVNTOiBQcm9wYWdh
dGVkICciICsgZSArICInIGZyb20gc2NyaXB0Iik7Cit9CitmaXJzdFNob3VsZFRocm93ID0gZmFs
c2U7CitpZiAobG9hZGVkU291cmNlMSAmJiAhbG9hZGVkU291cmNlMikKKyAgICBwb3N0TWVzc2Fn
ZSgiUEFTUzogRmlyc3QgcmVzb3VyY2Ugd2FzIGV4ZWN1dGVkLCBhbmQgc2Vjb25kIHJlc291cmNl
IHdhcyBub3QiKTsKK2Vsc2UgaWYgKGxvYWRlZFNvdXJjZTIpCisgICAgcG9zdE1lc3NhZ2UoIkZB
SUw6IFNlY29uZCByZXNvdXJjZSB3YXMgZXhlY3V0ZWQiKTsKK2Vsc2UKKyAgICBwb3N0TWVzc2Fn
ZSgiRkFJTDogZmlyc3QgcmVzb3VyY2UgZGlkIG5vdCBleGVjdXRlIGNvcnJlY3RseSIpOworCits
b2FkZWRTb3VyY2UxID0gZmFsc2U7Citsb2FkZWRTb3VyY2UyID0gZmFsc2U7CisKK3Bvc3RNZXNz
YWdlKCJUZXN0aW5nIG11bHRpcGxlIGFyZ3VtZW50cywgd2l0aCBzZWNvbmQgcmVzb3VyY2UgdGhy
b3dpbmcgYW4gZXhjZXB0aW9uOiIpOworc2Vjb25kU2hvdWxkVGhyb3cgPSB0cnVlOwordHJ5IHsK
KyAgICBpbXBvcnRTY3JpcHRzKHNvdXJjZTEsIHNvdXJjZTIpOworfSBjYXRjaChlKSB7CisgICAg
cG9zdE1lc3NhZ2UoIlBBU1M6IFByb3BhZ2F0ZWQgJyIgKyBlICsgIicgZnJvbSBzY3JpcHQiKTsK
K30KK3NlY29uZFNob3VsZFRocm93ID0gZmFsc2U7CitpZiAobG9hZGVkU291cmNlMSAmJiBsb2Fk
ZWRTb3VyY2UyKQorICAgIHBvc3RNZXNzYWdlKCJQQVNTOiBCb3RoIHNjcmlwdHMgd2VyZSBleGVj
dXRlZCIpOworZWxzZQorICAgIHBvc3RNZXNzYWdlKCJGQUlMOiBzY3JpcHRzIGRpZCBub3QgZXhl
Y3V0ZSBjb3JyZWN0bHkiKTsKKworbG9hZGVkU291cmNlMSA9IGZhbHNlOworbG9hZGVkU291cmNl
MiA9IGZhbHNlOworCit9IGNhdGNoKGUpIHsKKyAgICBwb3N0TWVzc2FnZSgiRkFJTDogVW5leHBl
Y3RlZCBleGNlcHRpb246ICIgKyBlKTsKK30gZmluYWxseSB7CisgICAgcG9zdE1lc3NhZ2UoIkRP
TkUiKTsKK30KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qvd29ya2Vycy93b3JrZXItaW1w
b3J0U2NyaXB0cy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L3dvcmtlcnMvd29ya2Vy
LWltcG9ydFNjcmlwdHMtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAuLmM3MTRlNGIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3dvcmtl
cnMvd29ya2VyLWltcG9ydFNjcmlwdHMtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNDEgQEAKK1Rl
c3QgaW1wb3J0U2NyaXB0cy4KKworVGVzdCBzdGFydGVkLgorUEFTUzogaW1wb3J0U2NyaXB0cygp
LCBleGlzdHMsIGlzIGEgZnVuY3Rpb24sIGFuZCBkb2Vzbid0IHRocm93IHdoZW4gbm90IGdpdmVu
IGFueSBhcmd1bWVudHMKK1Rlc3RpbmcgZGlmZmVyZW50IG9yaWdpbgorUEFTUzogbG9hZGVkIHNj
cmlwdCBmcm9tIGRpZmZlcmVudCBvcmlnaW4KK1BBU1M6IGV4ZWN1dGVkIHNjcmlwdCBmcm9tIGRp
ZmZlcmVudCBvcmlnaW4KK1Rlc3Rpbmcgc2luZ2xlIGFyZ3VtZW50OgorTG9hZGVkIHJlc291cmNl
IDEKK1BBU1M6IGxvYWRlZCBmaXJzdCBzb3VyY2UKK1Rlc3RpbmcgbXVsdGlwbGUgYXJndW1lbnRz
OgorTG9hZGVkIHJlc291cmNlIDEKK0xvYWRlZCByZXNvdXJjZSAyCitQQVNTOiBCb3RoIHNvdXJj
ZXMgbG9hZGVkIGFuZCBleGVjdXRlZC4KK1Rlc3RpbmcgbXVsdGlwbGUgYXJndW1lbnRzIChkaWZm
ZXJlbnQgb3JkZXIpOgorUmVzb3VyY2UgMiBsb2FkZWQgYmVmb3JlIHJlc291cmNlIDEKK0xvYWRl
ZCByZXNvdXJjZSAyCitMb2FkZWQgcmVzb3VyY2UgMQorUEFTUzogQm90aCBzb3VyY2VzIGxvYWRl
ZCBhbmQgZXhlY3V0ZWQuCitUZXN0aW5nIG11bHRpcGxlIGFyZ3VtZW50cywgd2l0aCBkaWZmZXJl
bnQgb3JpZ2luIGZvciBvbmUgYXJndW1lbnQ6CitMb2FkZWQgcmVzb3VyY2UgMQorUEFTUzogbG9h
ZGVkIHNjcmlwdCBmcm9tIGRpZmZlcmVudCBvcmlnaW4KK0xvYWRlZCByZXNvdXJjZSAyCitQQVNT
OiBhbGwgcmVzb3VyY2VzIGV4ZWN1dGVkLgorUEFTUzogVGhyZXcgRXJyb3I6IE5FVFdPUktfRVJS
OiBYTUxIdHRwUmVxdWVzdCBFeGNlcHRpb24gMTAxIHdoZW4gbG9hZCBmYWlsZWQKK1BBU1M6IE5v
dGhpbmcgd2FzIGV4ZWN1dGVkIHdoZW4gbmV0d29yayBlcnJvciBvY2N1cnJlZC4KK1BBU1M6IFRo
cmV3IFN5bnRheEVycm9yOiBQYXJzZSBlcnJvciB3aGVuIGVuY291bnRlcmluZyBhIHN5bnRheCBl
cnJvciBpbiBpbXBvcnRlZCBzY3JpcHQKK1BBU1M6IE5vdGhpbmcgd2FzIGV4ZWN1dGVkIHdoZW4g
c3ludGF4IGVycm9yIHdhcyBwcmVzZW50IGluIGFueSBzb3VyY2UuCitUZXN0aW5nIG11bHRpcGxl
IGFyZ3VtZW50cywgd2l0aCBmaXJzdCByZXNvdXJjZSB0aHJvd2luZyBhbiBleGNlcHRpb246CitM
b2FkZWQgcmVzb3VyY2UgMQorRmlyc3QgcmVzb3VyY2UgdGhyb3dpbmcgYW4gZXhjZXB0aW9uCitQ
QVNTOiBQcm9wYWdhdGVkICdUaHJvd24gYnkgZmlyc3QgcmVzb3VyY2UnIGZyb20gc2NyaXB0CitQ
QVNTOiBGaXJzdCByZXNvdXJjZSB3YXMgZXhlY3V0ZWQsIGFuZCBzZWNvbmQgcmVzb3VyY2Ugd2Fz
IG5vdAorVGVzdGluZyBtdWx0aXBsZSBhcmd1bWVudHMsIHdpdGggc2Vjb25kIHJlc291cmNlIHRo
cm93aW5nIGFuIGV4Y2VwdGlvbjoKK0xvYWRlZCByZXNvdXJjZSAxCitMb2FkZWQgcmVzb3VyY2Ug
MgorU2Vjb25kIHJlc291cmNlIHRocm93aW5nIGFuIGV4Y2VwdGlvbgorUEFTUzogUHJvcGFnYXRl
ZCAnVGhyb3duIGJ5IHNlY29uZCByZXNvdXJjZScgZnJvbSBzY3JpcHQKK1BBU1M6IEJvdGggc2Ny
aXB0cyB3ZXJlIGV4ZWN1dGVkCitET05FCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qv
d29ya2Vycy93b3JrZXItaW1wb3J0U2NyaXB0cy5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC93b3Jr
ZXJzL3dvcmtlci1pbXBvcnRTY3JpcHRzLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMC4uZjcwYTQ1NgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3Qvd29y
a2Vycy93b3JrZXItaW1wb3J0U2NyaXB0cy5odG1sCkBAIC0wLDAgKzEsMjQgQEAKKzxib2R5Pgor
PHA+VGVzdCBpbXBvcnRTY3JpcHRzLjwvcD4KKzxkaXYgaWQ9cmVzdWx0PjwvZGl2PgorPHNjcmlw
dD4KK2Z1bmN0aW9uIGxvZyhtZXNzYWdlKQoreworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCJyZXN1bHQiKS5pbm5lckhUTUwgKz0gbWVzc2FnZSArICI8YnI+IjsKK30KKworaWYgKHdpbmRv
dy5sYXlvdXRUZXN0Q29udHJvbGxlcikgeworICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBB
c1RleHQoKTsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7Cit9CisK
K3ZhciB3b3JrZXIgPSBuZXcgV29ya2VyKCdyZXNvdXJjZXMvd29ya2VyLWltcG9ydFNjcmlwdHMu
anMnKTsKKword29ya2VyLm9ubWVzc2FnZSA9IGZ1bmN0aW9uKGV2dCkgeworICAgIGxvZyhldnQu
ZGF0YSk7CisgICAgaWYgKGV2dC5kYXRhID09ICJET05FIiAmJiB3aW5kb3cubGF5b3V0VGVzdENv
bnRyb2xsZXIpCisgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKK30K
Kzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9DaGFuZ2VM
b2cgYi9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAwYzQxMDlhLi5jYTAyNmQ1IDEwMDY0NAotLS0g
YS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ3
IEBACisyMDA5LTAzLTA2ICBPbGl2ZXIgSHVudCAgPG9saXZlckBhcHBsZS5jb20+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVt
LzY0MjU4MDc+IEltcGxlbWVudCBXb3JrZXJVdGlscy5pbXBvcnRTY3JpcHRzKCkKKyAgICAgICAg
PGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjcyMT4KKworICAgICAg
ICBJbXBsZW1lbnQgaW1wb3J0U2NyaXB0cywgY3VycmVudGx5IHVzZXMgYSBzZXJpZXMgb2Ygc3lu
Y2hyb25vdXMgbG9hZHMKKyAgICAgICAgdG8gZmV0Y2ggdGhlIHNjcmlwdHMsIGJ1dCB0aGlzIGlz
IHNpbXBsZXIgdGhhbiBhIHN5bmNocm9ub3VzIGxvYWQgb2YKKyAgICAgICAgbXVsdGlwbGUgbG9h
ZHMgaW4gcGFyYWxsZWwuICBJbiBmdXR1cmUgd2UnbGwgd2FudCB0byBzd2l0Y2ggdG8gcGFyYWxs
ZWwKKyAgICAgICAgbG9hZGluZywgYnV0IHRoaXMgd2lsbCBkbyBmb3Igbm93LgorCisgICAgICAg
IFRlc3Q6IGZhc3Qvd29ya2Vycy93b3JrZXItaW1wb3J0U2NyaXB0cy5odG1sCisKKyAgICAgICAg
KiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogYmluZGluZ3Mv
anMvSlNXb3JrZXJDb250ZXh0Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTV29ya2Vy
Q29udGV4dDo6aW1wb3J0U2NyaXB0cyk6CisgICAgICAgICogYmluZGluZ3MvanMvU2NyaXB0VmFs
dWUuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdFZhbHVlOjpoYXNOb1ZhbHVlKToKKyAgICAg
ICAgKiBiaW5kaW5ncy9qcy9Xb3JrZXJTY3JpcHRDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OldvcmtlclNjcmlwdENvbnRyb2xsZXI6OmV2YWx1YXRlKToKKyAgICAgICAgKFdlYkNv
cmU6OldvcmtlclNjcmlwdENvbnRyb2xsZXI6OmNoZWNrU3ludGF4KToKKyAgICAgICAgKFdlYkNv
cmU6OldvcmtlclNjcmlwdENvbnRyb2xsZXI6OnNldEV4Y2VwdGlvbik6CisgICAgICAgICogYmlu
ZGluZ3MvanMvV29ya2VyU2NyaXB0Q29udHJvbGxlci5oOgorICAgICAgICAoV2ViQ29yZTo6V29y
a2VyU2NyaXB0Q29udHJvbGxlcjo6ZXhlY3V0aW9uRm9yYmlkZGVuKToKKyAgICAgICAgKiBkb20v
U2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0RXhlY3V0
aW9uQ29udGV4dDo6c2NyaXB0SW1wb3J0ZWQpOgorICAgICAgICAqIHdvcmtlcnMvV29ya2VyQ29u
dGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJDb250ZXh0OjpzY3JpcHRJbXBvcnRl
ZCk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJDb250ZXh0OjppbXBvcnRTY3JpcHRzKToKKyAg
ICAgICAgKiB3b3JrZXJzL1dvcmtlckNvbnRleHQuaDoKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtl
ckNvbnRleHQuaWRsOgorICAgICAgICAqIHdvcmtlcnMvV29ya2VySW1wb3J0U2NyaXB0c0NsaWVu
dC5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6V29ya2VySW1wb3J0U2NyaXB0c0NsaWVu
dDo6ZGlkUmVjZWl2ZVJlc3BvbnNlKToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlckltcG9ydFNj
cmlwdHNDbGllbnQ6OmRpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6Oldvcmtlcklt
cG9ydFNjcmlwdHNDbGllbnQ6OmRpZEZpbmlzaExvYWRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6
V29ya2VySW1wb3J0U2NyaXB0c0NsaWVudDo6ZGlkRmFpbCk6CisgICAgICAgIChXZWJDb3JlOjpX
b3JrZXJJbXBvcnRTY3JpcHRzQ2xpZW50OjpkaWRGYWlsUmVkaXJlY3RDaGVjayk6CisgICAgICAg
IChXZWJDb3JlOjpXb3JrZXJJbXBvcnRTY3JpcHRzQ2xpZW50OjpkaWRSZWNlaXZlQXV0aGVudGlj
YXRpb25DYW5jZWxsYXRpb24pOgorICAgICAgICAqIHdvcmtlcnMvV29ya2VySW1wb3J0U2NyaXB0
c0NsaWVudC5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OldvcmtlckltcG9ydFNjcmlwdHND
bGllbnQ6OldvcmtlckltcG9ydFNjcmlwdHNDbGllbnQpOgorICAgICAgICAoV2ViQ29yZTo6V29y
a2VySW1wb3J0U2NyaXB0c0NsaWVudDo6c2NyaXB0KToKKyAgICAgICAgKFdlYkNvcmU6Oldvcmtl
ckltcG9ydFNjcmlwdHNDbGllbnQ6OmZhaWxlZCk6CisKIDIwMDktMDMtMDYgIFBldGVyIEthc3Rp
bmcgIDxwa2FzdGluZ0Bnb29nbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEZp
c2hlci4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qIGIvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggYjUw
ZWI4MC4uMWJkNzIyZCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKKysrIGIvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKQEAgLTIxNTMsNiArMjE1Myw4IEBACiAJCUE3RDAzMThFMEU5MzU0MDMwMEUyNEFDRCAvKiBK
U0ltYWdlRGF0YUN1c3RvbS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBBN0QwMzE4RDBFOTM1NDAzMDBFMjRBQ0QgLyogSlNJbWFnZURhdGFDdXN0b20u
Y3BwICovOyB9OwogCQlBN0QyN0ZDNDBFMEE1OTlGMDA3OUFEMkIgLyogU1ZHRkVUaWxlLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3RDI3RkMzMEUw
QTU5OUYwMDc5QUQyQiAvKiBTVkdGRVRpbGUuY3BwICovOyB9OwogCQlBN0QzQzUyNDBCNTc2QjRC
MDAyQ0E0NTAgLyogUGFzdGVib2FyZEhlbHBlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQTdEM0M1MjMwQjU3NkI0QjAwMkNBNDUwIC8qIFBhc3RlYm9h
cmRIZWxwZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OworCQlBN0Q2QjM0OTBGNjExMDQ1MDBCNzlGRDEgLyogV29ya2VySW1wb3J0U2NyaXB0c0NsaWVu
dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTdENkIz
NDcwRjYxMTA0NTAwQjc5RkQxIC8qIFdvcmtlckltcG9ydFNjcmlwdHNDbGllbnQuaCAqLzsgfTsK
KwkJQTdENkIzNEEwRjYxMTA0NTAwQjc5RkQxIC8qIFdvcmtlckltcG9ydFNjcmlwdHNDbGllbnQu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTdENkIz
NDgwRjYxMTA0NTAwQjc5RkQxIC8qIFdvcmtlckltcG9ydFNjcmlwdHNDbGllbnQuY3BwICovOyB9
OwogCQlBODA5RjE0NzBCNzM3OTNBMDAyRTREN0YgLyogUmVuZGVyU1ZHR3JhZGllbnRTdG9wLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBODA5RjE0NTBC
NzM3OTNBMDAyRTREN0YgLyogUmVuZGVyU1ZHR3JhZGllbnRTdG9wLmggKi87IH07CiAJCUE4MDlG
MTQ4MEI3Mzc5M0IwMDJFNEQ3RiAvKiBSZW5kZXJTVkdHcmFkaWVudFN0b3AuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTgwOUYxNDYwQjczNzkzQTAw
MkU0RDdGIC8qIFJlbmRlclNWR0dyYWRpZW50U3RvcC5jcHAgKi87IH07CiAJCUE4MDlGMUFBMEI3
MzdGQjYwMDJFNEQ3RiAvKiBSZW5kZXJTVkdIaWRkZW5Db250YWluZXIuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE4MDlGMUE4MEI3MzdGQjYwMDJFNEQ3
RiAvKiBSZW5kZXJTVkdIaWRkZW5Db250YWluZXIuaCAqLzsgfTsKQEAgLTcwNjQsNiArNzA2Niw4
IEBACiAJCUE3RDAzMThEMEU5MzU0MDMwMEUyNEFDRCAvKiBKU0ltYWdlRGF0YUN1c3RvbS5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0ltYWdlRGF0YUN1c3RvbS5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE3RDI3RkMzMEUwQTU5OUYwMDc5QUQy
QiAvKiBTVkdGRVRpbGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
U1ZHRkVUaWxlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTdEM0M1MjMwQjU3
NkI0QjAwMkNBNDUwIC8qIFBhc3RlYm9hcmRIZWxwZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gUGFzdGVib2FyZEhlbHBlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQlBN0Q2QjM0NzBGNjExMDQ1MDBCNzlGRDEgLyogV29ya2VySW1wb3J0U2NyaXB0c0NsaWVu
dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBXb3JrZXJJbXBvcnRTY3JpcHRz
Q2xpZW50Lmg7IHBhdGggPSB3b3JrZXJzL1dvcmtlckltcG9ydFNjcmlwdHNDbGllbnQuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTdENkIzNDgwRjYxMTA0NTAwQjc5RkQxIC8qIFdv
cmtlckltcG9ydFNjcmlwdHNDbGllbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBuYW1lID0gV29ya2VySW1wb3J0U2NyaXB0c0NsaWVudC5jcHA7IHBhdGggPSB3b3JrZXJzL1dv
cmtlckltcG9ydFNjcmlwdHNDbGllbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlBODA5RjE0NTBCNzM3OTNBMDAyRTREN0YgLyogUmVuZGVyU1ZHR3JhZGllbnRTdG9wLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbmRlclNWR0dyYWRpZW50U3RvcC5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBODA5RjE0NjBCNzM3OTNBMDAyRTREN0YgLyog
UmVuZGVyU1ZHR3JhZGllbnRTdG9wLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IFJlbmRlclNWR0dyYWRpZW50U3RvcC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUE4MDlGMUE4MEI3MzdGQjYwMDJFNEQ3RiAvKiBSZW5kZXJTVkdIaWRkZW5Db250YWlu
ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVuZGVyU1ZHSGlkZGVuQ29u
dGFpbmVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC05Nzg0LDYgKzk3ODgsOCBA
QAogCQkJCTJFNDM0NjQxMEY1NDZBODIwMEIwRjFCQSAvKiBXb3JrZXJSdW5Mb29wLmggKi8sCiAJ
CQkJMkU0MzQ2NDIwRjU0NkE4MjAwQjBGMUJBIC8qIFdvcmtlclRocmVhZC5jcHAgKi8sCiAJCQkJ
MkU0MzQ2NDMwRjU0NkE4MjAwQjBGMUJBIC8qIFdvcmtlclRocmVhZC5oICovLAorCQkJCUE3RDZC
MzQ3MEY2MTEwNDUwMEI3OUZEMSAvKiBXb3JrZXJJbXBvcnRTY3JpcHRzQ2xpZW50LmggKi8sCisJ
CQkJQTdENkIzNDgwRjYxMTA0NTAwQjc5RkQxIC8qIFdvcmtlckltcG9ydFNjcmlwdHNDbGllbnQu
Y3BwICovLAogCQkJKTsKIAkJCW5hbWUgPSB3b3JrZXJzOwogCQkJc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsKQEAgLTE2ODQ1LDYgKzE2ODUxLDcgQEAKIAkJCQk0MUYwNjE4RTBGNUYwNjk4MDBBMDdF
QUMgLyogQ29uc29sZU1lc3NhZ2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTQxRjA2MjAxMEY1RjBC
NjYwMEEwN0VBQyAvKiBJbnNwZWN0b3JSZXNvdXJjZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDFG
MDYyMTQwRjVGMTkyNjAwQTA3RUFDIC8qIEluc3BlY3RvckRhdGFiYXNlUmVzb3VyY2UuaCBpbiBI
ZWFkZXJzICovLAorCQkJCUE3RDZCMzQ5MEY2MTEwNDUwMEI3OUZEMSAvKiBXb3JrZXJJbXBvcnRT
Y3JpcHRzQ2xpZW50LmggaW4gSGVhZGVycyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95
bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKQEAgLTE4ODM5LDYgKzE4ODQ2LDcgQEAKIAkJ
CQk0MUYwNjE4RjBGNUYwNjk4MDBBMDdFQUMgLyogQ29uc29sZU1lc3NhZ2UuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJNDFGMDYyMDIwRjVGMEI2NjAwQTA3RUFDIC8qIEluc3BlY3RvclJlc291cmNl
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTQxRjA2MjE1MEY1RjE5MjYwMEEwN0VBQyAvKiBJbnNw
ZWN0b3JEYXRhYmFzZVJlc291cmNlLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUE3RDZCMzRBMEY2
MTEwNDUwMEI3OUZEMSAvKiBXb3JrZXJJbXBvcnRTY3JpcHRzQ2xpZW50LmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwog
CQl9OwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dvcmtlckNvbnRleHRDdXN0
b20uY3BwIGIvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dvcmtlckNvbnRleHRDdXN0b20uY3BwCmlu
ZGV4IGMzZWY5YzEuLjFkNDhjM2EgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvYmluZGluZ3MvanMvSlNX
b3JrZXJDb250ZXh0Q3VzdG9tLmNwcAorKysgYi9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV29ya2Vy
Q29udGV4dEN1c3RvbS5jcHAKQEAgLTMzLDYgKzMzLDcgQEAKICNpbmNsdWRlICJKU0V2ZW50TGlz
dGVuZXIuaCIKICNpbmNsdWRlICJTY2hlZHVsZWRBY3Rpb24uaCIKICNpbmNsdWRlICJXb3JrZXJD
b250ZXh0LmgiCisjaW5jbHVkZSA8aW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuaD4KIAogdXNpbmcg
bmFtZXNwYWNlIEpTQzsKIApAQCAtNzYsNiArNzcsMjkgQEAgdm9pZCBKU1dvcmtlckNvbnRleHQ6
OnNldFNlbGYoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlUHRyIHZhbHVlKQogICAgIHB1dERpcmVj
dChJZGVudGlmaWVyKGV4ZWMsICJzZWxmIiksIHZhbHVlKTsKIH0KIAorSlNWYWx1ZVB0ciBKU1dv
cmtlckNvbnRleHQ6OmltcG9ydFNjcmlwdHMoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBBcmdMaXN0
JiBhcmdzKQoreworICAgIGlmICghYXJncy5zaXplKCkpCisgICAgICAgIHJldHVybiBqc1VuZGVm
aW5lZCgpOworCisgICAgVmVjdG9yPFN0cmluZz4gdXJsczsKKyAgICBmb3IgKHVuc2lnbmVkIGkg
PSAwOyBpIDwgYXJncy5zaXplKCk7IGkrKykgeworICAgICAgICB1cmxzLmFwcGVuZChhcmdzLmF0
KGV4ZWMsIGkpLnRvU3RyaW5nKGV4ZWMpKTsKKyAgICAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlv
bigpKQorICAgICAgICAgICAgcmV0dXJuIGpzTnVsbCgpOworICAgIH0KKyAgICBFeGNlcHRpb25D
b2RlIGVjID0gMDsKKyAgICBpbnQgc2lnbmVkTGluZU51bWJlcjsKKyAgICBpbnRwdHJfdCBzb3Vy
Y2VJRDsKKyAgICBVU3RyaW5nIHNvdXJjZVVSTDsKKyAgICBKU1ZhbHVlUHRyIGZ1bmN0aW9uOwor
ICAgIGV4ZWMtPmludGVycHJldGVyKCktPnJldHJpZXZlTGFzdENhbGxlcihleGVjLCBzaWduZWRM
aW5lTnVtYmVyLCBzb3VyY2VJRCwgc291cmNlVVJMLCBmdW5jdGlvbik7CisKKyAgICBpbXBsKCkt
PmltcG9ydFNjcmlwdHModXJscywgc291cmNlVVJMLCBzaWduZWRMaW5lTnVtYmVyID49IDAgPyBz
aWduZWRMaW5lTnVtYmVyIDogMCwgZWMpOworICAgIHNldERPTUV4Y2VwdGlvbihleGVjLCBlYyk7
CisgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7Cit9CisKIEpTVmFsdWVQdHIgSlNXb3JrZXJDb250
ZXh0OjphZGRFdmVudExpc3RlbmVyKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgQXJnTGlzdCYgYXJn
cykKIHsKICAgICBSZWZQdHI8SlNVbnByb3RlY3RlZEV2ZW50TGlzdGVuZXI+IGxpc3RlbmVyID0g
ZmluZE9yQ3JlYXRlSlNVbnByb3RlY3RlZEV2ZW50TGlzdGVuZXIoZXhlYywgYXJncy5hdChleGVj
LCAxKSk7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdFZhbHVlLmggYi9X
ZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdFZhbHVlLmgKaW5kZXggODU1NTA5YS4uM2NlZTA5YiAx
MDA2NDQKLS0tIGEvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRWYWx1ZS5oCisrKyBiL1dlYkNv
cmUvYmluZGluZ3MvanMvU2NyaXB0VmFsdWUuaApAQCAtNDUsNiArNDUsNyBAQCBwdWJsaWM6CiAg
ICAgYm9vbCBnZXRTdHJpbmcoU3RyaW5nJiByZXN1bHQpIGNvbnN0OwogICAgIGJvb2wgaXNOdWxs
KCkgY29uc3Q7CiAgICAgYm9vbCBpc1VuZGVmaW5lZCgpIGNvbnN0OworICAgIGJvb2wgaGFzTm9W
YWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdmFsdWUgPT0gSlNDOjpub1ZhbHVlKCk7IH0KIAogcHJp
dmF0ZToKICAgICBKU0M6OlByb3RlY3RlZEpTVmFsdWVQdHIgbV92YWx1ZTsKZGlmZiAtLWdpdCBh
L1dlYkNvcmUvYmluZGluZ3MvanMvV29ya2VyU2NyaXB0Q29udHJvbGxlci5jcHAgYi9XZWJDb3Jl
L2JpbmRpbmdzL2pzL1dvcmtlclNjcmlwdENvbnRyb2xsZXIuY3BwCmluZGV4IGFiOTdiNTIuLmQ2
Yjg4NGYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvYmluZGluZ3MvanMvV29ya2VyU2NyaXB0Q29udHJv
bGxlci5jcHAKKysrIGIvV2ViQ29yZS9iaW5kaW5ncy9qcy9Xb3JrZXJTY3JpcHRDb250cm9sbGVy
LmNwcApAQCAtODAsNiArODAsMjAgQEAgU2NyaXB0VmFsdWUgV29ya2VyU2NyaXB0Q29udHJvbGxl
cjo6ZXZhbHVhdGUoY29uc3QgU2NyaXB0U291cmNlQ29kZSYgc291cmNlQ29kZSkKICAgICAgICAg
aWYgKG1fZXhlY3V0aW9uRm9yYmlkZGVuKQogICAgICAgICAgICAgcmV0dXJuIG5vVmFsdWUoKTsK
ICAgICB9CisgICAgU2NyaXB0VmFsdWUgZXhjZXB0aW9uOworICAgIFNjcmlwdFZhbHVlIHJlc3Vs
dCA9IGV2YWx1YXRlKHNvdXJjZUNvZGUsICZleGNlcHRpb24pOworICAgIGlmIChleGNlcHRpb24u
anNWYWx1ZSgpKQorICAgICAgICByZXBvcnRFeGNlcHRpb24obV93b3JrZXJDb250ZXh0V3JhcHBl
ci0+Z2xvYmFsRXhlYygpLCBleGNlcHRpb24uanNWYWx1ZSgpKTsKKyAgICByZXR1cm4gcmVzdWx0
OworfQorCitTY3JpcHRWYWx1ZSBXb3JrZXJTY3JpcHRDb250cm9sbGVyOjpldmFsdWF0ZShjb25z
dCBTY3JpcHRTb3VyY2VDb2RlJiBzb3VyY2VDb2RlLCBTY3JpcHRWYWx1ZSogZXhjZXB0aW9uKQor
eworICAgIHsKKyAgICAgICAgTXV0ZXhMb2NrZXIgbG9jayhtX3NoYXJlZERhdGFNdXRleCk7Cisg
ICAgICAgIGlmIChtX2V4ZWN1dGlvbkZvcmJpZGRlbikKKyAgICAgICAgICAgIHJldHVybiBub1Zh
bHVlKCk7CisgICAgfQogCiAgICAgaW5pdFNjcmlwdElmTmVlZGVkKCk7CiAgICAgSlNMb2NrIGxv
Y2soZmFsc2UpOwpAQCAtOTUsMTAgKzEwOSwyNSBAQCBTY3JpcHRWYWx1ZSBXb3JrZXJTY3JpcHRD
b250cm9sbGVyOjpldmFsdWF0ZShjb25zdCBTY3JpcHRTb3VyY2VDb2RlJiBzb3VyY2VDb2RlKQog
ICAgICAgICByZXR1cm4gY29tcC52YWx1ZSgpOwogCiAgICAgaWYgKGNvbXAuY29tcGxUeXBlKCkg
PT0gVGhyb3cpCi0gICAgICAgIHJlcG9ydEV4Y2VwdGlvbihleGVjLCBjb21wLnZhbHVlKCkpOwor
ICAgICAgICAqZXhjZXB0aW9uID0gY29tcC52YWx1ZSgpOwogICAgIHJldHVybiBub1ZhbHVlKCk7
CiB9CiAKK2Jvb2wgV29ya2VyU2NyaXB0Q29udHJvbGxlcjo6Y2hlY2tTeW50YXgoY29uc3QgU2Ny
aXB0U291cmNlQ29kZSYgc291cmNlQ29kZSwgU2NyaXB0VmFsdWUqIGV4Y2VwdGlvbikKK3sKKyAg
ICBDb21wbGV0aW9uIGNvbXAgPSBKU0M6OmNoZWNrU3ludGF4KG1fd29ya2VyQ29udGV4dFdyYXBw
ZXItPmdsb2JhbEV4ZWMoKSwgc291cmNlQ29kZS5qc1NvdXJjZUNvZGUoKSk7CisgICAgaWYgKGNv
bXAuY29tcGxUeXBlKCkgPT0gVGhyb3cpIHsKKyAgICAgICAgKmV4Y2VwdGlvbiA9IGNvbXAudmFs
dWUoKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICByZXR1cm4gdHJ1ZTsKK30K
Kwordm9pZCBXb3JrZXJTY3JpcHRDb250cm9sbGVyOjpzZXRFeGNlcHRpb24oU2NyaXB0VmFsdWUg
ZXhjZXB0aW9uKQoreworICAgIG1fd29ya2VyQ29udGV4dFdyYXBwZXItPmdsb2JhbEV4ZWMoKS0+
c2V0RXhjZXB0aW9uKGV4Y2VwdGlvbi5qc1ZhbHVlKCkpOworfQorCiB2b2lkIFdvcmtlclNjcmlw
dENvbnRyb2xsZXI6OmZvcmJpZEV4ZWN1dGlvbigpCiB7CiAgICAgLy8gVGhpcyBmdW5jdGlvbiBp
cyBjYWxsZWQgZnJvbSBhbm90aGVyIHRocmVhZC4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvYmluZGlu
Z3MvanMvV29ya2VyU2NyaXB0Q29udHJvbGxlci5oIGIvV2ViQ29yZS9iaW5kaW5ncy9qcy9Xb3Jr
ZXJTY3JpcHRDb250cm9sbGVyLmgKaW5kZXggMWRkYTVkYS4uNmRhMDQ4NyAxMDA2NDQKLS0tIGEv
V2ViQ29yZS9iaW5kaW5ncy9qcy9Xb3JrZXJTY3JpcHRDb250cm9sbGVyLmgKKysrIGIvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9Xb3JrZXJTY3JpcHRDb250cm9sbGVyLmgKQEAgLTU3LDkgKzU3LDEzIEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgfQogCiAgICAgICAgIFNjcmlwdFZhbHVlIGV2
YWx1YXRlKGNvbnN0IFNjcmlwdFNvdXJjZUNvZGUmKTsKKyAgICAgICAgU2NyaXB0VmFsdWUgZXZh
bHVhdGUoY29uc3QgU2NyaXB0U291cmNlQ29kZSYsIFNjcmlwdFZhbHVlKiBleGNlcHRpb24pOwor
ICAgICAgICBib29sIGNoZWNrU3ludGF4KGNvbnN0IFNjcmlwdFNvdXJjZUNvZGUmLCBTY3JpcHRW
YWx1ZSogZXhjZXB0aW9uKTsKIAotICAgICAgICB2b2lkIGZvcmJpZEV4ZWN1dGlvbigpOworICAg
ICAgICB2b2lkIHNldEV4Y2VwdGlvbihTY3JpcHRWYWx1ZSk7CiAKKyAgICAgICAgdm9pZCBmb3Ji
aWRFeGVjdXRpb24oKTsKKyAgICAgICAgYm9vbCBleGVjdXRpb25Gb3JiaWRkZW4oKSBjb25zdCB7
IHJldHVybiBtX2V4ZWN1dGlvbkZvcmJpZGRlbjsgfQogICAgIHByaXZhdGU6CiAgICAgICAgIHZv
aWQgaW5pdFNjcmlwdElmTmVlZGVkKCkKICAgICAgICAgewpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9k
b20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIGIvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9u
Q29udGV4dC5oCmluZGV4IDg2N2QzNGYuLjUwMDI2NGUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZG9t
L1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaAorKysgYi9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRp
b25Db250ZXh0LmgKQEAgLTY3LDcgKzY3LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAg
ICB2aXJ0dWFsIHZvaWQgcmVwb3J0RXhjZXB0aW9uKGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdl
LCBpbnQgbGluZU51bWJlciwgY29uc3QgU3RyaW5nJiBzb3VyY2VVUkwpID0gMDsKICAgICAgICAg
dmlydHVhbCB2b2lkIGFkZE1lc3NhZ2UoTWVzc2FnZURlc3RpbmF0aW9uLCBNZXNzYWdlU291cmNl
LCBNZXNzYWdlTGV2ZWwsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgdW5zaWduZWQgbGluZU51bWJl
ciwgY29uc3QgU3RyaW5nJiBzb3VyY2VVUkwpID0gMDsKICAgICAgICAgdmlydHVhbCB2b2lkIHJl
c291cmNlUmV0cmlldmVkQnlYTUxIdHRwUmVxdWVzdCh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIs
IGNvbnN0IFNjcmlwdFN0cmluZyYgc291cmNlU3RyaW5nKSA9IDA7Ci0KKyAgICAgICAgdmlydHVh
bCB2b2lkIHNjcmlwdEltcG9ydGVkKHVuc2lnbmVkIGxvbmcsIGNvbnN0IFN0cmluZyYpIHsgQVNT
RVJUX05PVF9SRUFDSEVEKCk7IH0KKyAgICAgICAgCiAgICAgICAgIC8vIEFjdGl2ZSBvYmplY3Rz
IGFyZSBub3QgZ2FyYmFnZSBjb2xsZWN0ZWQgZXZlbiBpZiBpbmFjY2Vzc2libGUsIGUuZy4gYmVj
YXVzZSB0aGVpciBhY3Rpdml0eSBtYXkgcmVzdWx0IGluIGNhbGxiYWNrcyBiZWluZyBpbnZva2Vk
LgogICAgICAgICBib29sIGNhblN1c3BlbmRBY3RpdmVET01PYmplY3RzKCk7CiAgICAgICAgIC8v
IEFjdGl2ZSBvYmplY3RzIGNhbiBiZSBhc2tlZCB0byBzdXNwZW5kIGV2ZW4gaWYgY2FuU3VzcGVu
ZEFjdGl2ZURPTU9iamVjdHMoKSByZXR1cm5zICdmYWxzZScgLQpkaWZmIC0tZ2l0IGEvV2ViQ29y
ZS93b3JrZXJzL1dvcmtlckNvbnRleHQuY3BwIGIvV2ViQ29yZS93b3JrZXJzL1dvcmtlckNvbnRl
eHQuY3BwCmluZGV4IGZkYTJlNmQuLjdmMDg5NWMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvd29ya2Vy
cy9Xb3JrZXJDb250ZXh0LmNwcAorKysgYi9XZWJDb3JlL3dvcmtlcnMvV29ya2VyQ29udGV4dC5j
cHAKQEAgLTM4LDExICszOCwxNyBAQAogI2luY2x1ZGUgIkV2ZW50RXhjZXB0aW9uLmgiCiAjaW5j
bHVkZSAiTWVzc2FnZUV2ZW50LmgiCiAjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKKyNpbmNs
dWRlICJSZXNvdXJjZVJlcXVlc3QuaCIKKyNpbmNsdWRlICJTY3JpcHRTb3VyY2VDb2RlLmgiCisj
aW5jbHVkZSAiU2NyaXB0VmFsdWUuaCIKICNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgorI2lu
Y2x1ZGUgIlRocmVhZGFibGVMb2FkZXIuaCIKKyNpbmNsdWRlICJXb3JrZXJJbXBvcnRTY3JpcHRz
Q2xpZW50LmgiCiAjaW5jbHVkZSAiV29ya2VyTG9jYXRpb24uaCIKICNpbmNsdWRlICJXb3JrZXJO
YXZpZ2F0b3IuaCIKICNpbmNsdWRlICJXb3JrZXJPYmplY3RQcm94eS5oIgogI2luY2x1ZGUgIldv
cmtlclRocmVhZC5oIgorI2luY2x1ZGUgIlhNTEh0dHBSZXF1ZXN0RXhjZXB0aW9uLmgiCiAjaW5j
bHVkZSA8d3RmL1JlZlB0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0xMzYsNiArMTQy
LDEyIEBAIHZvaWQgV29ya2VyQ29udGV4dDo6cmVzb3VyY2VSZXRyaWV2ZWRCeVhNTEh0dHBSZXF1
ZXN0KHVuc2lnbmVkIGxvbmcsIGNvbnN0IFNjcmlwCiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0K
IAordm9pZCBXb3JrZXJDb250ZXh0OjpzY3JpcHRJbXBvcnRlZCh1bnNpZ25lZCBsb25nLCBjb25z
dCBTdHJpbmcmKQoreworICAgIC8vIEZJWE1FOiBUaGUgaW1wbGVtZW50YXRpb24gaXMgcGVuZGlu
ZyB0aGUgZml4ZXMgaW4gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIz
MTc1CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwogdm9pZCBXb3JrZXJDb250ZXh0Ojpwb3N0
TWVzc2FnZShjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCiB7CiAgICAgbV90aHJlYWQtPndvcmtlck9i
amVjdFByb3h5KCktPnBvc3RNZXNzYWdlVG9Xb3JrZXJPYmplY3QobWVzc2FnZSk7CkBAIC0yMjIs
NiArMjM0LDU0IEBAIHZvaWQgV29ya2VyQ29udGV4dDo6ZGlzcGF0Y2hNZXNzYWdlKGNvbnN0IFN0
cmluZyYgbWVzc2FnZSkKICAgICBBU1NFUlQoIWVjKTsKIH0KIAordm9pZCBXb3JrZXJDb250ZXh0
OjppbXBvcnRTY3JpcHRzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiB1cmxzLCBjb25zdCBTdHJpbmcm
IGNhbGxlclVSTCwgaW50IGNhbGxlckxpbmUsIEV4Y2VwdGlvbkNvZGUmIGVjKQoreworICAgIGVj
ID0gMDsKKyAgICBWZWN0b3I8U3RyaW5nPjo6Y29uc3RfaXRlcmF0b3IgdXJsc0VuZCA9IHVybHMu
ZW5kKCk7CisgICAgVmVjdG9yPEtVUkw+IGNvbXBsZXRlZFVybHM7CisgICAgZm9yIChWZWN0b3I8
U3RyaW5nPjo6Y29uc3RfaXRlcmF0b3IgaXQgPSB1cmxzLmJlZ2luKCk7IGl0ICE9IHVybHNFbmQ7
ICsraXQpIHsKKyAgICAgICAgY29uc3QgS1VSTCYgdXJsID0gc2NyaXB0RXhlY3V0aW9uQ29udGV4
dCgpLT5jb21wbGV0ZVVSTCgqaXQpOworICAgICAgICBpZiAoIXVybC5pc1ZhbGlkKCkpIHsKKyAg
ICAgICAgICAgIGVjID0gU1lOVEFYX0VSUjsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAg
fQorICAgICAgICBjb21wbGV0ZWRVcmxzLmFwcGVuZCh1cmwpOworICAgIH0KKyAgICBTdHJpbmcg
c2VjdXJpdHlPcmlnaW4gPSBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPnNlY3VyaXR5T3JpZ2lu
KCktPnRvU3RyaW5nKCk7CisgICAgVmVjdG9yPEtVUkw+Ojpjb25zdF9pdGVyYXRvciBlbmQgPSBj
b21wbGV0ZWRVcmxzLmVuZCgpOworICAgIFZlY3RvcjxTY3JpcHRTb3VyY2VDb2RlPiBzb3VyY2Vz
OworICAgIGZvciAoVmVjdG9yPEtVUkw+Ojpjb25zdF9pdGVyYXRvciBpdCA9IGNvbXBsZXRlZFVy
bHMuYmVnaW4oKTsgaXQgIT0gZW5kICYmICFtX3NjcmlwdC0+ZXhlY3V0aW9uRm9yYmlkZGVuKCk7
ICsraXQpIHsKKyAgICAgICAgUmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QoKml0KTsKKyAgICAgICAg
cmVxdWVzdC5zZXRIVFRQTWV0aG9kKCJHRVQiKTsKKyAgICAgICAgcmVxdWVzdC5zZXRIVFRQT3Jp
Z2luKHNlY3VyaXR5T3JpZ2luKTsKKyAgICAgICAgV29ya2VySW1wb3J0U2NyaXB0c0NsaWVudCBj
bGllbnQoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCAqaXQsIGNhbGxlclVSTCwgY2FsbGVyTGlu
ZSk7CisgICAgICAgIFRocmVhZGFibGVMb2FkZXI6OmxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHko
c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCByZXF1ZXN0LCBjbGllbnQpOworICAgICAgICAKKyAg
ICAgICAgLy8gSWYgdGhlIGZldGNoaW5nIGF0dGVtcHQgZmFpbGVkLCB0aHJvdyBhIE5FVFdPUktf
RVJSIGV4Y2VwdGlvbiBhbmQgYWJvcnQgYWxsIHRoZXNlIHN0ZXBzLgorICAgICAgICBpZiAoY2xp
ZW50LmZhaWxlZCgpKSB7CisgICAgICAgICAgICBlYyA9IFhNTEh0dHBSZXF1ZXN0RXhjZXB0aW9u
OjpORVRXT1JLX0VSUjsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBT
Y3JpcHRTb3VyY2VDb2RlIHNvdXJjZSA9IFNjcmlwdFNvdXJjZUNvZGUoY2xpZW50LnNjcmlwdCgp
LCAqaXQpOworICAgICAgICBTY3JpcHRWYWx1ZSBleGNlcHRpb247CisgICAgICAgIGlmICghbV9z
Y3JpcHQtPmNoZWNrU3ludGF4KHNvdXJjZSwgJmV4Y2VwdGlvbikpIHsKKyAgICAgICAgICAgIEFT
U0VSVCghZXhjZXB0aW9uLmhhc05vVmFsdWUoKSk7CisgICAgICAgICAgICBtX3NjcmlwdC0+c2V0
RXhjZXB0aW9uKGV4Y2VwdGlvbik7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAg
ICAgICAgc291cmNlcy5hcHBlbmQoc291cmNlKTsKKyAgICB9CisgICAgVmVjdG9yPFNjcmlwdFNv
dXJjZUNvZGU+Ojpjb25zdF9pdGVyYXRvciBzb3VyY2VFbmQgPSBzb3VyY2VzLmVuZCgpOworICAg
IGZvciAoVmVjdG9yPFNjcmlwdFNvdXJjZUNvZGU+Ojpjb25zdF9pdGVyYXRvciBpdCA9IHNvdXJj
ZXMuYmVnaW4oKTsgaXQgIT0gc291cmNlRW5kICYmICFtX3NjcmlwdC0+ZXhlY3V0aW9uRm9yYmlk
ZGVuKCk7ICsraXQpIHsKKyAgICAgICAgU2NyaXB0VmFsdWUgZXhjZXB0aW9uOworICAgICAgICBt
X3NjcmlwdC0+ZXZhbHVhdGUoKml0LCAmZXhjZXB0aW9uKTsKKyAgICAgICAgaWYgKCFleGNlcHRp
b24uaGFzTm9WYWx1ZSgpKSB7CisgICAgICAgICAgICBtX3NjcmlwdC0+c2V0RXhjZXB0aW9uKGV4
Y2VwdGlvbik7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICB9Cit9CisKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShXT1JLRVJTKQpkaWZmIC0t
Z2l0IGEvV2ViQ29yZS93b3JrZXJzL1dvcmtlckNvbnRleHQuaCBiL1dlYkNvcmUvd29ya2Vycy9X
b3JrZXJDb250ZXh0LmgKaW5kZXggMjI1NTU1NC4uNjY0ZGVkMyAxMDA2NDQKLS0tIGEvV2ViQ29y
ZS93b3JrZXJzL1dvcmtlckNvbnRleHQuaAorKysgYi9XZWJDb3JlL3dvcmtlcnMvV29ya2VyQ29u
dGV4dC5oCkBAIC03Nyw2ICs3Nyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdmly
dHVhbCB2b2lkIHJlcG9ydEV4Y2VwdGlvbihjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSwgaW50
IGxpbmVOdW1iZXIsIGNvbnN0IFN0cmluZyYgc291cmNlVVJMKTsKICAgICAgICAgdmlydHVhbCB2
b2lkIGFkZE1lc3NhZ2UoTWVzc2FnZURlc3RpbmF0aW9uLCBNZXNzYWdlU291cmNlLCBNZXNzYWdl
TGV2ZWwsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgdW5zaWduZWQgbGluZU51bWJlciwgY29uc3Qg
U3RyaW5nJiBzb3VyY2VVUkwpOwogICAgICAgICB2aXJ0dWFsIHZvaWQgcmVzb3VyY2VSZXRyaWV2
ZWRCeVhNTEh0dHBSZXF1ZXN0KHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgY29uc3QgU2NyaXB0
U3RyaW5nJiBzb3VyY2VTdHJpbmcpOworICAgICAgICB2aXJ0dWFsIHZvaWQgc2NyaXB0SW1wb3J0
ZWQodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIHNvdXJjZVN0cmluZyk7
CiAKICAgICAgICAgdmlydHVhbCBXb3JrZXJDb250ZXh0KiB0b1dvcmtlckNvbnRleHQoKSB7IHJl
dHVybiB0aGlzOyB9CiAKQEAgLTk5LDYgKzEwMCw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAg
ICAgICAgdHlwZWRlZiBIYXNoTWFwPEF0b21pY1N0cmluZywgTGlzdGVuZXJWZWN0b3I+IEV2ZW50
TGlzdGVuZXJzTWFwOwogICAgICAgICBFdmVudExpc3RlbmVyc01hcCYgZXZlbnRMaXN0ZW5lcnMo
KSB7IHJldHVybiBtX2V2ZW50TGlzdGVuZXJzOyB9CiAKKyAgICAgICAgdm9pZCBpbXBvcnRTY3Jp
cHRzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiB1cmxzLCBjb25zdCBTdHJpbmcmIGNhbGxlclVSTCwg
aW50IGNhbGxlckxpbmUsIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICAgICAgCiAgICAgICAgIHVzaW5n
IFJlZkNvdW50ZWQ8V29ya2VyQ29udGV4dD46OnJlZjsKICAgICAgICAgdXNpbmcgUmVmQ291bnRl
ZDxXb3JrZXJDb250ZXh0Pjo6ZGVyZWY7CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvd29ya2Vycy9X
b3JrZXJDb250ZXh0LmlkbCBiL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJDb250ZXh0LmlkbAppbmRl
eCBlMWZmZjUxLi5iYmZjYTYzIDEwMDY0NAotLS0gYS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyQ29u
dGV4dC5pZGwKKysrIGIvV2ViQ29yZS93b3JrZXJzL1dvcmtlckNvbnRleHQuaWRsCkBAIC00MCw2
ICs0MCw3IEBAIG1vZHVsZSB0aHJlYWRzIHsKIAogICAgICAgICBhdHRyaWJ1dGUgRXZlbnRMaXN0
ZW5lciBvbm1lc3NhZ2U7CiAgICAgICAgIHZvaWQgcG9zdE1lc3NhZ2UoaW4gRE9NU3RyaW5nIG1l
c3NhZ2UpOworICAgICAgICBbQ3VzdG9tXSB2b2lkIGltcG9ydFNjcmlwdHMoLyogdXJscyAqLyk7
CiAKICAgICAgICAgYXR0cmlidXRlIFtSZXBsYWNlYWJsZV0gV29ya2VyTG9jYXRpb24gbG9jYXRp
b247CiAgICAgICAgIGF0dHJpYnV0ZSBbUmVwbGFjZWFibGVdIFdvcmtlck5hdmlnYXRvciBuYXZp
Z2F0b3I7CmRpZmYgLS1naXQgYS9XZWJDb3JlL3dvcmtlcnMvV29ya2VySW1wb3J0U2NyaXB0c0Ns
aWVudC5jcHAgYi9XZWJDb3JlL3dvcmtlcnMvV29ya2VySW1wb3J0U2NyaXB0c0NsaWVudC5jcHAK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWZjMGVmYQotLS0gL2Rldi9udWxs
CisrKyBiL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJJbXBvcnRTY3JpcHRzQ2xpZW50LmNwcApAQCAt
MCwwICsxLDkzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA5IEFwcGxlIEluYy4gQWxsIFJp
Z2h0cyBSZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQor
ICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4gCisgKgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2luY2x1
ZGUgIldvcmtlckltcG9ydFNjcmlwdHNDbGllbnQuaCIKKworI2luY2x1ZGUgIlNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCit2b2lkIFdvcmtlckltcG9y
dFNjcmlwdHNDbGllbnQ6OmRpZFJlY2VpdmVSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNl
JiByZXNwb25zZSkKK3sKKyAgICBpZiAocmVzcG9uc2UuaHR0cFN0YXR1c0NvZGUoKSAvIDEwMCAh
PSAyICYmIHJlc3BvbnNlLmh0dHBTdGF0dXNDb2RlKCkgIT0gMCkgeworICAgICAgICBtX2ZhaWxl
ZCA9IHRydWU7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgbV9yZXNwb25zZSA9IHJlc3Bv
bnNlOworICAgIG1fcmVzcG9uc2VFbmNvZGluZyA9IHJlc3BvbnNlLnRleHRFbmNvZGluZ05hbWUo
KTsKK30KKwordm9pZCBXb3JrZXJJbXBvcnRTY3JpcHRzQ2xpZW50OjpkaWRSZWNlaXZlRGF0YShj
b25zdCBjaGFyKiBkYXRhLCBpbnQgbGVuKQoreworICAgIGlmIChtX2ZhaWxlZCkKKyAgICAgICAg
cmV0dXJuOworCisgICAgaWYgKCFtX2RlY29kZXIpIHsKKyAgICAgICAgaWYgKCFtX3Jlc3BvbnNl
RW5jb2RpbmcuaXNFbXB0eSgpKQorICAgICAgICAgICAgbV9kZWNvZGVyID0gVGV4dFJlc291cmNl
RGVjb2Rlcjo6Y3JlYXRlKCJ0ZXh0L2phdmFzY3JpcHQiLCBtX3Jlc3BvbnNlRW5jb2RpbmcpOwor
ICAgICAgICBlbHNlCisgICAgICAgICAgICBtX2RlY29kZXIgPSBUZXh0UmVzb3VyY2VEZWNvZGVy
OjpjcmVhdGUoInRleHQvamF2YXNjcmlwdCIsIG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+ZW5j
b2RpbmcoKSk7CisgICAgfQorCisgICAgaWYgKCFsZW4pCisgICAgICAgIHJldHVybjsKKyAgICAK
KyAgICBpZiAobGVuID09IC0xKQorICAgICAgICBsZW4gPSBzdHJsZW4oZGF0YSk7CisgICAgCisg
ICAgbV9zY3JpcHQgKz0gbV9kZWNvZGVyLT5kZWNvZGUoZGF0YSwgbGVuKTsKK30KKwordm9pZCBX
b3JrZXJJbXBvcnRTY3JpcHRzQ2xpZW50OjpkaWRGaW5pc2hMb2FkaW5nKHVuc2lnbmVkIGxvbmcg
aWRlbnRpZmllcikKK3sKKyAgICBpZiAobV9mYWlsZWQpCisgICAgICAgIHJldHVybjsKKworICAg
IGlmIChtX2RlY29kZXIpCisgICAgICAgIG1fc2NyaXB0ICs9IG1fZGVjb2Rlci0+Zmx1c2goKTsK
KyAgICAKKyAgICBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPnNjcmlwdEltcG9ydGVkKGlkZW50
aWZpZXIsIG1fc2NyaXB0KTsKKyAgICBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPmFkZE1lc3Nh
Z2UoSW5zcGVjdG9yQ29udHJvbGxlckRlc3RpbmF0aW9uLCBKU01lc3NhZ2VTb3VyY2UsIExvZ01l
c3NhZ2VMZXZlbCwgIldvcmtlciBzY3JpcHQgaW1wb3J0ZWQ6IFwiIiArIG1fdXJsICsgIlwiLiIs
IG1fY2FsbGVyTGluZU51bWJlciwgbV9jYWxsZXJVUkwpOworfQorCit2b2lkIFdvcmtlckltcG9y
dFNjcmlwdHNDbGllbnQ6OmRpZEZhaWwoY29uc3QgUmVzb3VyY2VFcnJvciYpCit7CisgICAgbV9m
YWlsZWQgPSB0cnVlOworfQorCit2b2lkIFdvcmtlckltcG9ydFNjcmlwdHNDbGllbnQ6OmRpZEZh
aWxSZWRpcmVjdENoZWNrKCkKK3sKKyAgICBtX2ZhaWxlZCA9IHRydWU7Cit9CisKK3ZvaWQgV29y
a2VySW1wb3J0U2NyaXB0c0NsaWVudDo6ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2FuY2VsbGF0
aW9uKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKQoreworICAgIG1fZmFpbGVkID0gdHJ1ZTsKK30K
KworfQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS93b3JrZXJzL1dvcmtlckltcG9ydFNjcmlwdHNDbGll
bnQuaCBiL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJJbXBvcnRTY3JpcHRzQ2xpZW50LmgKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTY3NjdiYgotLS0gL2Rldi9udWxsCisrKyBi
L1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJJbXBvcnRTY3JpcHRzQ2xpZW50LmgKQEAgLTAsMCArMSw3
NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOSBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuIAorICoKKyAqLworCisjaWZuZGVmIFdvcmtlckltcG9ydFNjcmlwdHNDbGllbnRfaAor
I2RlZmluZSBXb3JrZXJJbXBvcnRTY3JpcHRzQ2xpZW50X2gKKworI2luY2x1ZGUgIlJlc291cmNl
UmVzcG9uc2UuaCIKKyNpbmNsdWRlICJTY3JpcHRTdHJpbmcuaCIKKyNpbmNsdWRlICJUZXh0UmVz
b3VyY2VEZWNvZGVyLmgiCisjaW5jbHVkZSAiVGhyZWFkYWJsZUxvYWRlckNsaWVudC5oIgorCitu
YW1lc3BhY2UgV2ViQ29yZSB7CisKKyAgICBjbGFzcyBTY3JpcHRFeGVjdXRpb25Db250ZXh0Owor
ICAgIAorICAgIGNsYXNzIFdvcmtlckltcG9ydFNjcmlwdHNDbGllbnQgOiBwdWJsaWMgVGhyZWFk
YWJsZUxvYWRlckNsaWVudCB7CisgICAgcHVibGljOgorICAgICAgICBXb3JrZXJJbXBvcnRTY3Jp
cHRzQ2xpZW50KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQs
IGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBTdHJpbmcmIGNhbGxlclVSTCwgaW50IGNhbGxlckxp
bmVOdW1iZXIpCisgICAgICAgICAgICA6IG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dChzY3JpcHRF
eGVjdXRpb25Db250ZXh0KQorICAgICAgICAgICAgLCBtX3VybCh1cmwpCisgICAgICAgICAgICAs
IG1fY2FsbGVyVVJMKGNhbGxlclVSTCkKKyAgICAgICAgICAgICwgbV9jYWxsZXJMaW5lTnVtYmVy
KGNhbGxlckxpbmVOdW1iZXIpCisgICAgICAgICAgICAsIG1fZmFpbGVkKGZhbHNlKQorICAgICAg
ICB7CisgICAgICAgIH0KKworICAgICAgICBjb25zdCBTdHJpbmcmIHNjcmlwdCgpIGNvbnN0IHsg
cmV0dXJuIG1fc2NyaXB0OyB9CisgICAgICAgIGJvb2wgZmFpbGVkKCkgY29uc3QgeyByZXR1cm4g
bV9mYWlsZWQ7IH0KKworICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKGNv
bnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKTsKKyAgICAgICAgdmlydHVhbCB2b2lkIGRp
ZFJlY2VpdmVEYXRhKGNvbnN0IGNoYXIqIGRhdGEsIGludCBsZW5ndGhSZWNlaXZlZCk7CisgICAg
ICAgIHZpcnR1YWwgdm9pZCBkaWRGaW5pc2hMb2FkaW5nKHVuc2lnbmVkIGxvbmcgLyogaWRlbnRp
ZmllciAqLyk7CisgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRGYWlsKGNvbnN0IFJlc291cmNlRXJy
b3ImKTsKKyAgICAgICAgdmlydHVhbCB2b2lkIGRpZEZhaWxSZWRpcmVjdENoZWNrKCk7CisgICAg
ICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DYW5jZWxsYXRpb24oY29u
c3QgUmVzb3VyY2VSZXNwb25zZSYpOworCisgICAgcHJpdmF0ZToKKyAgICAgICAgU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCogbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0OworICAgICAgICBTdHJpbmcg
bV91cmw7CisgICAgICAgIFN0cmluZyBtX2NhbGxlclVSTDsKKyAgICAgICAgaW50IG1fY2FsbGVy
TGluZU51bWJlcjsKKyAgICAgICAgUmVzb3VyY2VSZXNwb25zZSBtX3Jlc3BvbnNlOworICAgICAg
ICBTdHJpbmcgbV9yZXNwb25zZUVuY29kaW5nOyAgICAgICAgCisgICAgICAgIFJlZlB0cjxUZXh0
UmVzb3VyY2VEZWNvZGVyPiBtX2RlY29kZXI7CisgICAgICAgIFN0cmluZyBtX3NjcmlwdDsKKyAg
ICAgICAgYm9vbCBtX2ZhaWxlZDsKKyAgICB9OworCit9CisKKyNlbmRpZgorCg==
</data>
<flag name="review"
          id="13911"
          type_id="1"
          status="-"
          setter="ap"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>28425</attachid>
            <date>2009-03-09 22:10:50 -0700</date>
            <delta_ts>2009-03-10 00:42:20 -0700</delta_ts>
            <desc>Implement importScripts, matching spec behaviour (which appears to be the consensus)</desc>
            <filename>importScripts.patch</filename>
            <type>text/plain</type>
            <size>32536</size>
            <attacher name="Oliver Hunt">oliver</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBjMWEzZWY4Li5jMTIwYzk3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsMjIgQEAKIDIwMDktMDMt
MDkgIE9saXZlciBIdW50ICA8b2xpdmVyQGFwcGxlLmNvbT4KIAorICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICA8cmRhcjovL3Byb2JsZW0vNjQyNTgwNz4gSW1w
bGVtZW50IFdvcmtlclV0aWxzLmltcG9ydFNjcmlwdHMoKQorICAgICAgICA8aHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNzIxPgorCisgICAgICAgIFRlc3RzIHRvIGNv
dmVyIHZhcmlvdXMgdXNhZ2VzIG9mIGltcG9ydFNjcmlwdHMsIGVnLiBuZXR3b3JrIGxvYWQKKyAg
ICAgICAgZmFpbHVyZXMsIHNlY3VyaXR5IGV4Y2VwdGlvbnMsIGV4ZWN1dGlvbiBvcmRlcmluZywg
ZXRjCisKKyAgICAgICAgKiBmYXN0L3dvcmtlcnMvcmVzb3VyY2VzL3dvcmtlci1pbXBvcnRTY3Jp
cHRzLXNvdXJjZTEuanM6IEFkZGVkLgorICAgICAgICAqIGZhc3Qvd29ya2Vycy9yZXNvdXJjZXMv
d29ya2VyLWltcG9ydFNjcmlwdHMtc291cmNlMi5qczogQWRkZWQuCisgICAgICAgICogZmFzdC93
b3JrZXJzL3Jlc291cmNlcy93b3JrZXItaW1wb3J0U2NyaXB0cy1zeW50YXhFcnJvci5qczogQWRk
ZWQuCisgICAgICAgICogZmFzdC93b3JrZXJzL3Jlc291cmNlcy93b3JrZXItaW1wb3J0U2NyaXB0
cy5qczogQWRkZWQuCisgICAgICAgICogZmFzdC93b3JrZXJzL3dvcmtlci1pbXBvcnRTY3JpcHRz
LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC93b3JrZXJzL3dvcmtlci1pbXBv
cnRTY3JpcHRzLmh0bWw6IEFkZGVkLgorCisyMDA5LTAzLTA5ICBPbGl2ZXIgSHVudCAgPG9saXZl
ckBhcHBsZS5jb20+CisKICAgICAgICAgUmV2aWV3ZWQgYnkgR2F2aW4gQmFycmFjbG91Z2guCiAK
ICAgICAgICAgQnVnIDI0NDQ3OiBSRUdSRVNTSU9OIChyNDE1MDgpOiBHb29nbGUgTWFwcyBkb2Vz
IG5vdCBjb21wbGV0ZSBpbml0aWFsaXphdGlvbgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFz
dC93b3JrZXJzL3Jlc291cmNlcy93b3JrZXItaW1wb3J0U2NyaXB0cy1zb3VyY2UxLmpzIGIvTGF5
b3V0VGVzdHMvZmFzdC93b3JrZXJzL3Jlc291cmNlcy93b3JrZXItaW1wb3J0U2NyaXB0cy1zb3Vy
Y2UxLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjEwYTgwMjgKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3dvcmtlcnMvcmVzb3VyY2VzL3dvcmtlci1p
bXBvcnRTY3JpcHRzLXNvdXJjZTEuanMKQEAgLTAsMCArMSw2IEBACitsb2FkZWRTb3VyY2UxID0g
dHJ1ZTsKK3Bvc3RNZXNzYWdlKCJMb2FkZWQgcmVzb3VyY2UgMSIpOworaWYgKHRoaXMuZmlyc3RT
aG91bGRUaHJvdykgeworICAgIHBvc3RNZXNzYWdlKCJGaXJzdCByZXNvdXJjZSB0aHJvd2luZyBh
biBleGNlcHRpb24iKTsKKyAgICB0aHJvdyAiVGhyb3duIGJ5IGZpcnN0IHJlc291cmNlIgorfQpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC93b3JrZXJzL3Jlc291cmNlcy93b3JrZXItaW1w
b3J0U2NyaXB0cy1zb3VyY2UyLmpzIGIvTGF5b3V0VGVzdHMvZmFzdC93b3JrZXJzL3Jlc291cmNl
cy93b3JrZXItaW1wb3J0U2NyaXB0cy1zb3VyY2UyLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAuLjg2NDBlZGQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0
L3dvcmtlcnMvcmVzb3VyY2VzL3dvcmtlci1pbXBvcnRTY3JpcHRzLXNvdXJjZTIuanMKQEAgLTAs
MCArMSw4IEBACitpZiAoIWxvYWRlZFNvdXJjZTEpCisgICAgcG9zdE1lc3NhZ2UoIlJlc291cmNl
IDIgbG9hZGVkIGJlZm9yZSByZXNvdXJjZSAxIik7Citsb2FkZWRTb3VyY2UyID0gdHJ1ZTsKK3Bv
c3RNZXNzYWdlKCJMb2FkZWQgcmVzb3VyY2UgMiIpOworaWYgKHRoaXMuc2Vjb25kU2hvdWxkVGhy
b3cpIHsKKyAgICBwb3N0TWVzc2FnZSgiU2Vjb25kIHJlc291cmNlIHRocm93aW5nIGFuIGV4Y2Vw
dGlvbiIpOworICAgIHRocm93ICJUaHJvd24gYnkgc2Vjb25kIHJlc291cmNlIjsKK30KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qvd29ya2Vycy9yZXNvdXJjZXMvd29ya2VyLWltcG9ydFNj
cmlwdHMtc3ludGF4RXJyb3IuanMgYi9MYXlvdXRUZXN0cy9mYXN0L3dvcmtlcnMvcmVzb3VyY2Vz
L3dvcmtlci1pbXBvcnRTY3JpcHRzLXN5bnRheEVycm9yLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAuLmRlMjY0ZDQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9m
YXN0L3dvcmtlcnMvcmVzb3VyY2VzL3dvcmtlci1pbXBvcnRTY3JpcHRzLXN5bnRheEVycm9yLmpz
CkBAIC0wLDAgKzEgQEAKK2Egc3ludGF4IGVycm9yCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9m
YXN0L3dvcmtlcnMvcmVzb3VyY2VzL3dvcmtlci1pbXBvcnRTY3JpcHRzLmpzIGIvTGF5b3V0VGVz
dHMvZmFzdC93b3JrZXJzL3Jlc291cmNlcy93b3JrZXItaW1wb3J0U2NyaXB0cy5qcwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kZjlhZGM0Ci0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvZmFzdC93b3JrZXJzL3Jlc291cmNlcy93b3JrZXItaW1wb3J0U2NyaXB0cy5q
cwpAQCAtMCwwICsxLDEzNCBAQAordHJ5IHsKK3Bvc3RNZXNzYWdlKCJUZXN0IHN0YXJ0ZWQuIik7
CisKK2ltcG9ydFNjcmlwdHMoKTsKK3Bvc3RNZXNzYWdlKCJQQVNTOiBpbXBvcnRTY3JpcHRzKCks
IGV4aXN0cywgaXMgYSBmdW5jdGlvbiwgYW5kIGRvZXNuJ3QgdGhyb3cgd2hlbiBub3QgZ2l2ZW4g
YW55IGFyZ3VtZW50cyIpOworCitwb3N0TWVzc2FnZSgiVGVzdGluZyBkaWZmZXJlbnQgb3JpZ2lu
Iik7Cit2YXIgZGlmZmVyZW50T3JpZ2luID0gImRhdGE6dGV4dC9qYXZhc2NyaXB0LHBvc3RNZXNz
YWdlKCdQQVNTOiBsb2FkZWQgc2NyaXB0IGZyb20gZGlmZmVyZW50IG9yaWdpbicpO2RpZmZlcmVu
dE9yaWdpbkxvYWRlZD10cnVlIjsKK3RyeSB7CisgICAgaW1wb3J0U2NyaXB0cyhkaWZmZXJlbnRP
cmlnaW4pCit9IGNhdGNoKGUpIHsKKyAgICBwb3N0TWVzc2FnZSgiRkFJTDogVGhyZXcgIiArIGUg
KyAiIHdoZW4gYXR0ZW1wdGluZyBjcm9zcyBvcmlnaW4gbG9hZCIpOworfQoraWYgKGRpZmZlcmVu
dE9yaWdpbkxvYWRlZCkKKyAgICBwb3N0TWVzc2FnZSgiUEFTUzogZXhlY3V0ZWQgc2NyaXB0IGZy
b20gZGlmZmVyZW50IG9yaWdpbiIpOworCit2YXIgc291cmNlMSA9ICJ3b3JrZXItaW1wb3J0U2Ny
aXB0cy1zb3VyY2UxLmpzIjsKK3ZhciBzb3VyY2UyID0gIndvcmtlci1pbXBvcnRTY3JpcHRzLXNv
dXJjZTIuanMiOwordmFyIHN5bnRheEVycm9yU291cmNlID0gIndvcmtlci1pbXBvcnRTY3JpcHRz
LXN5bnRheEVycm9yLmpzIjsKK3ZhciBmYWtlU291cmNlID0gIm5vbmV4aXN0YW50IjsKK3ZhciBs
b2FkZWRTb3VyY2UxID0gZmFsc2U7Cit2YXIgbG9hZGVkU291cmNlMiA9IGZhbHNlOworCitwb3N0
TWVzc2FnZSgiVGVzdGluZyBzaW5nbGUgYXJndW1lbnQ6Iik7CitpbXBvcnRTY3JpcHRzKHNvdXJj
ZTEpCitpZiAobG9hZGVkU291cmNlMSkKKyAgICBwb3N0TWVzc2FnZSgiUEFTUzogbG9hZGVkIGZp
cnN0IHNvdXJjZSIpOworZWxzZQorICAgIHBvc3RNZXNzYWdlKCJGQUlMOiBkaWQgbm90IGxvYWQg
Zmlyc3Qgc291cmNlIik7CisKK2xvYWRlZFNvdXJjZTEgPSBmYWxzZTsKK2xvYWRlZFNvdXJjZTIg
PSBmYWxzZTsKKworcG9zdE1lc3NhZ2UoIlRlc3RpbmcgbXVsdGlwbGUgYXJndW1lbnRzOiIpOwor
aW1wb3J0U2NyaXB0cyhzb3VyY2UxLCBzb3VyY2UyKTsKK2lmIChsb2FkZWRTb3VyY2UxICYmIGxv
YWRlZFNvdXJjZTIpCisgICAgcG9zdE1lc3NhZ2UoIlBBU1M6IEJvdGggc291cmNlcyBsb2FkZWQg
YW5kIGV4ZWN1dGVkLiIpOworZWxzZQorICAgIHBvc3RNZXNzYWdlKCJGQUlMOiAxbm90IGFsbCBz
b3VyY2VzIHdlcmUgbG9hZGVkIik7CisKK2xvYWRlZFNvdXJjZTEgPSBmYWxzZTsKK2xvYWRlZFNv
dXJjZTIgPSBmYWxzZTsKKworcG9zdE1lc3NhZ2UoIlRlc3RpbmcgbXVsdGlwbGUgYXJndW1lbnRz
IChkaWZmZXJlbnQgb3JkZXIpOiIpOworaW1wb3J0U2NyaXB0cyhzb3VyY2UyLCBzb3VyY2UxKTsK
K2lmIChsb2FkZWRTb3VyY2UxICYmIGxvYWRlZFNvdXJjZTIpCisgICAgcG9zdE1lc3NhZ2UoIlBB
U1M6IEJvdGggc291cmNlcyBsb2FkZWQgYW5kIGV4ZWN1dGVkLiIpOworZWxzZQorICAgIHBvc3RN
ZXNzYWdlKCJGQUlMOiBub3QgYWxsIHNvdXJjZXMgd2VyZSBsb2FkZWQiKTsKKworbG9hZGVkU291
cmNlMSA9IGZhbHNlOworbG9hZGVkU291cmNlMiA9IGZhbHNlOworZGlmZmVyZW50T3JpZ2luTG9h
ZGVkID0gZmFsc2U7CitmaXJzdFNob3VsZFRocm93ID0gZmFsc2U7CitzZWNvbmRTaG91bGRUaHJv
dyA9IGZhbHNlOworcG9zdE1lc3NhZ2UoIlRlc3RpbmcgbXVsdGlwbGUgYXJndW1lbnRzLCB3aXRo
IGRpZmZlcmVudCBvcmlnaW4gZm9yIG9uZSBhcmd1bWVudDoiKTsKK3RyeSB7CisgICAgaW1wb3J0
U2NyaXB0cyhzb3VyY2UxLCBkaWZmZXJlbnRPcmlnaW4sIHNvdXJjZTIpOworfSBjYXRjaChlKSB7
CisgICAgcG9zdE1lc3NhZ2UoIkZBSUw6IFRocmV3ICIgKyBlICsgIiB3aGVuIGF0dGVtcHQgY3Jv
c3Mgb3JpZ2luIGxvYWQiKTsKK30KK2lmIChsb2FkZWRTb3VyY2UxICYmIGxvYWRlZFNvdXJjZTIg
JiYgZGlmZmVyZW50T3JpZ2luTG9hZGVkKQorICAgIHBvc3RNZXNzYWdlKCJQQVNTOiBhbGwgcmVz
b3VyY2VzIGV4ZWN1dGVkLiIpOworZWxzZQorICAgIHBvc3RNZXNzYWdlKCJGQUlMOiBTb21lIHJl
c291cmNlcyB3ZXJlIGxvYWRlZCBkZXNwaXRlIG9mIHRoZSBvcmlnaW4gZmFpbHVyZSIpOworCits
b2FkZWRTb3VyY2UxID0gZmFsc2U7Citsb2FkZWRTb3VyY2UyID0gZmFsc2U7CisKK3RyeSB7Cisg
ICAgaW1wb3J0U2NyaXB0cyhzb3VyY2UxLCBmYWtlU291cmNlLCBzb3VyY2UyKTsKK30gY2F0Y2go
ZSkgeworICAgIHBvc3RNZXNzYWdlKCJQQVNTOiBUaHJldyAiICsgZSArICIgd2hlbiBsb2FkIGZh
aWxlZCIpOworfQoraWYgKCFsb2FkZWRTb3VyY2UxICYmICFsb2FkZWRTb3VyY2UyKQorICAgIHBv
c3RNZXNzYWdlKCJGQUlMOiBOb3RoaW5nIHdhcyBleGVjdXRlZCB3aGVuIG5ldHdvcmsgZXJyb3Ig
b2NjdXJyZWQuIik7CitlbHNlCisgICAgcG9zdE1lc3NhZ2UoIlBBU1M6IHNvbWUgcmVzb3VyY2Vz
IHdlcmUgbG9hZGVkIGRlc3BpdGUgdGhlIG5ldHdvcmsgZXJyb3IiKTsKKworbG9hZGVkU291cmNl
MSA9IGZhbHNlOworbG9hZGVkU291cmNlMiA9IGZhbHNlOworCit0cnkgeworICAgIGltcG9ydFNj
cmlwdHMoc291cmNlMSwgc3ludGF4RXJyb3JTb3VyY2UsIHNvdXJjZTIpOworfSBjYXRjaChlKSB7
CisgICAgcG9zdE1lc3NhZ2UoIlBBU1M6IFRocmV3ICIgKyBlICsgIiB3aGVuIGVuY291bnRlcmlu
ZyBhIHN5bnRheCBlcnJvciBpbiBpbXBvcnRlZCBzY3JpcHQiKTsKK30KK2lmICghbG9hZGVkU291
cmNlMSAmJiAhbG9hZGVkU291cmNlMikKKyAgICBwb3N0TWVzc2FnZSgiRkFJTDogTm90aGluZyB3
YXMgZXhlY3V0ZWQgd2hlbiBzeW50YXggZXJyb3Igd2FzIHByZXNlbnQgaW4gYW55IHNvdXJjZS4i
KTsKK2Vsc2UKKyAgICBwb3N0TWVzc2FnZSgiUEFTUzogc29tZSByZXNvdXJjZXMgd2VyZSBsb2Fk
ZWQgZGVzcGl0ZSB0aGUgcHJlc2VuY2Ugb2YgYSBzeW50YXggZXJyb3IiKTsKKworbG9hZGVkU291
cmNlMSA9IGZhbHNlOworbG9hZGVkU291cmNlMiA9IGZhbHNlOworCitwb3N0TWVzc2FnZSgiVGVz
dGluZyBtdWx0aXBsZSBhcmd1bWVudHMsIHdpdGggZmlyc3QgcmVzb3VyY2UgdGhyb3dpbmcgYW4g
ZXhjZXB0aW9uOiIpOworZmlyc3RTaG91bGRUaHJvdyA9IHRydWU7Cit0cnkgeworICAgIGltcG9y
dFNjcmlwdHMoc291cmNlMSwgc291cmNlMik7Cit9IGNhdGNoKGUpIHsKKyAgICBwb3N0TWVzc2Fn
ZSgiUEFTUzogUHJvcGFnYXRlZCAnIiArIGUgKyAiJyBmcm9tIHNjcmlwdCIpOworfQorZmlyc3RT
aG91bGRUaHJvdyA9IGZhbHNlOworaWYgKGxvYWRlZFNvdXJjZTEgJiYgIWxvYWRlZFNvdXJjZTIp
CisgICAgcG9zdE1lc3NhZ2UoIlBBU1M6IEZpcnN0IHJlc291cmNlIHdhcyBleGVjdXRlZCwgYW5k
IHNlY29uZCByZXNvdXJjZSB3YXMgbm90Iik7CitlbHNlIGlmIChsb2FkZWRTb3VyY2UyKQorICAg
IHBvc3RNZXNzYWdlKCJGQUlMOiBTZWNvbmQgcmVzb3VyY2Ugd2FzIGV4ZWN1dGVkIik7CitlbHNl
CisgICAgcG9zdE1lc3NhZ2UoIkZBSUw6IGZpcnN0IHJlc291cmNlIGRpZCBub3QgZXhlY3V0ZSBj
b3JyZWN0bHkiKTsKKworbG9hZGVkU291cmNlMSA9IGZhbHNlOworbG9hZGVkU291cmNlMiA9IGZh
bHNlOworCitwb3N0TWVzc2FnZSgiVGVzdGluZyBtdWx0aXBsZSBhcmd1bWVudHMsIHdpdGggc2Vj
b25kIHJlc291cmNlIHRocm93aW5nIGFuIGV4Y2VwdGlvbjoiKTsKK3NlY29uZFNob3VsZFRocm93
ID0gdHJ1ZTsKK3RyeSB7CisgICAgaW1wb3J0U2NyaXB0cyhzb3VyY2UxLCBzb3VyY2UyKTsKK30g
Y2F0Y2goZSkgeworICAgIHBvc3RNZXNzYWdlKCJQQVNTOiBQcm9wYWdhdGVkICciICsgZSArICIn
IGZyb20gc2NyaXB0Iik7Cit9CitzZWNvbmRTaG91bGRUaHJvdyA9IGZhbHNlOworaWYgKGxvYWRl
ZFNvdXJjZTEgJiYgbG9hZGVkU291cmNlMikKKyAgICBwb3N0TWVzc2FnZSgiUEFTUzogQm90aCBz
Y3JpcHRzIHdlcmUgZXhlY3V0ZWQiKTsKK2Vsc2UKKyAgICBwb3N0TWVzc2FnZSgiRkFJTDogc2Ny
aXB0cyBkaWQgbm90IGV4ZWN1dGUgY29ycmVjdGx5Iik7CisKK2xvYWRlZFNvdXJjZTEgPSBmYWxz
ZTsKK2xvYWRlZFNvdXJjZTIgPSBmYWxzZTsKKworfSBjYXRjaChlKSB7CisgICAgcG9zdE1lc3Nh
Z2UoIkZBSUw6IFVuZXhwZWN0ZWQgZXhjZXB0aW9uOiAiICsgZSk7Cit9IGZpbmFsbHkgeworICAg
IHBvc3RNZXNzYWdlKCJET05FIik7Cit9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3dv
cmtlcnMvd29ya2VyLWltcG9ydFNjcmlwdHMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFz
dC93b3JrZXJzL3dvcmtlci1pbXBvcnRTY3JpcHRzLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwLi5lN2M5NDA2Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvZmFzdC93b3JrZXJzL3dvcmtlci1pbXBvcnRTY3JpcHRzLWV4cGVjdGVkLnR4dApAQCAt
MCwwICsxLDQzIEBACitUZXN0IGltcG9ydFNjcmlwdHMuCisKK1Rlc3Qgc3RhcnRlZC4KK1BBU1M6
IGltcG9ydFNjcmlwdHMoKSwgZXhpc3RzLCBpcyBhIGZ1bmN0aW9uLCBhbmQgZG9lc24ndCB0aHJv
dyB3aGVuIG5vdCBnaXZlbiBhbnkgYXJndW1lbnRzCitUZXN0aW5nIGRpZmZlcmVudCBvcmlnaW4K
K1BBU1M6IGxvYWRlZCBzY3JpcHQgZnJvbSBkaWZmZXJlbnQgb3JpZ2luCitQQVNTOiBleGVjdXRl
ZCBzY3JpcHQgZnJvbSBkaWZmZXJlbnQgb3JpZ2luCitUZXN0aW5nIHNpbmdsZSBhcmd1bWVudDoK
K0xvYWRlZCByZXNvdXJjZSAxCitQQVNTOiBsb2FkZWQgZmlyc3Qgc291cmNlCitUZXN0aW5nIG11
bHRpcGxlIGFyZ3VtZW50czoKK0xvYWRlZCByZXNvdXJjZSAxCitMb2FkZWQgcmVzb3VyY2UgMgor
UEFTUzogQm90aCBzb3VyY2VzIGxvYWRlZCBhbmQgZXhlY3V0ZWQuCitUZXN0aW5nIG11bHRpcGxl
IGFyZ3VtZW50cyAoZGlmZmVyZW50IG9yZGVyKToKK1Jlc291cmNlIDIgbG9hZGVkIGJlZm9yZSBy
ZXNvdXJjZSAxCitMb2FkZWQgcmVzb3VyY2UgMgorTG9hZGVkIHJlc291cmNlIDEKK1BBU1M6IEJv
dGggc291cmNlcyBsb2FkZWQgYW5kIGV4ZWN1dGVkLgorVGVzdGluZyBtdWx0aXBsZSBhcmd1bWVu
dHMsIHdpdGggZGlmZmVyZW50IG9yaWdpbiBmb3Igb25lIGFyZ3VtZW50OgorTG9hZGVkIHJlc291
cmNlIDEKK1BBU1M6IGxvYWRlZCBzY3JpcHQgZnJvbSBkaWZmZXJlbnQgb3JpZ2luCitMb2FkZWQg
cmVzb3VyY2UgMgorUEFTUzogYWxsIHJlc291cmNlcyBleGVjdXRlZC4KK0xvYWRlZCByZXNvdXJj
ZSAxCitQQVNTOiBUaHJldyBFcnJvcjogTkVUV09SS19FUlI6IFhNTEh0dHBSZXF1ZXN0IEV4Y2Vw
dGlvbiAxMDEgd2hlbiBsb2FkIGZhaWxlZAorUEFTUzogc29tZSByZXNvdXJjZXMgd2VyZSBsb2Fk
ZWQgZGVzcGl0ZSB0aGUgbmV0d29yayBlcnJvcgorTG9hZGVkIHJlc291cmNlIDEKK1BBU1M6IFRo
cmV3IFN5bnRheEVycm9yOiBQYXJzZSBlcnJvciB3aGVuIGVuY291bnRlcmluZyBhIHN5bnRheCBl
cnJvciBpbiBpbXBvcnRlZCBzY3JpcHQKK1BBU1M6IHNvbWUgcmVzb3VyY2VzIHdlcmUgbG9hZGVk
IGRlc3BpdGUgdGhlIHByZXNlbmNlIG9mIGEgc3ludGF4IGVycm9yCitUZXN0aW5nIG11bHRpcGxl
IGFyZ3VtZW50cywgd2l0aCBmaXJzdCByZXNvdXJjZSB0aHJvd2luZyBhbiBleGNlcHRpb246CitM
b2FkZWQgcmVzb3VyY2UgMQorRmlyc3QgcmVzb3VyY2UgdGhyb3dpbmcgYW4gZXhjZXB0aW9uCitQ
QVNTOiBQcm9wYWdhdGVkICdUaHJvd24gYnkgZmlyc3QgcmVzb3VyY2UnIGZyb20gc2NyaXB0CitQ
QVNTOiBGaXJzdCByZXNvdXJjZSB3YXMgZXhlY3V0ZWQsIGFuZCBzZWNvbmQgcmVzb3VyY2Ugd2Fz
IG5vdAorVGVzdGluZyBtdWx0aXBsZSBhcmd1bWVudHMsIHdpdGggc2Vjb25kIHJlc291cmNlIHRo
cm93aW5nIGFuIGV4Y2VwdGlvbjoKK0xvYWRlZCByZXNvdXJjZSAxCitMb2FkZWQgcmVzb3VyY2Ug
MgorU2Vjb25kIHJlc291cmNlIHRocm93aW5nIGFuIGV4Y2VwdGlvbgorUEFTUzogUHJvcGFnYXRl
ZCAnVGhyb3duIGJ5IHNlY29uZCByZXNvdXJjZScgZnJvbSBzY3JpcHQKK1BBU1M6IEJvdGggc2Ny
aXB0cyB3ZXJlIGV4ZWN1dGVkCitET05FCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qv
d29ya2Vycy93b3JrZXItaW1wb3J0U2NyaXB0cy5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC93b3Jr
ZXJzL3dvcmtlci1pbXBvcnRTY3JpcHRzLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMC4uZjcwYTQ1NgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3Qvd29y
a2Vycy93b3JrZXItaW1wb3J0U2NyaXB0cy5odG1sCkBAIC0wLDAgKzEsMjQgQEAKKzxib2R5Pgor
PHA+VGVzdCBpbXBvcnRTY3JpcHRzLjwvcD4KKzxkaXYgaWQ9cmVzdWx0PjwvZGl2PgorPHNjcmlw
dD4KK2Z1bmN0aW9uIGxvZyhtZXNzYWdlKQoreworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCJyZXN1bHQiKS5pbm5lckhUTUwgKz0gbWVzc2FnZSArICI8YnI+IjsKK30KKworaWYgKHdpbmRv
dy5sYXlvdXRUZXN0Q29udHJvbGxlcikgeworICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBB
c1RleHQoKTsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7Cit9CisK
K3ZhciB3b3JrZXIgPSBuZXcgV29ya2VyKCdyZXNvdXJjZXMvd29ya2VyLWltcG9ydFNjcmlwdHMu
anMnKTsKKword29ya2VyLm9ubWVzc2FnZSA9IGZ1bmN0aW9uKGV2dCkgeworICAgIGxvZyhldnQu
ZGF0YSk7CisgICAgaWYgKGV2dC5kYXRhID09ICJET05FIiAmJiB3aW5kb3cubGF5b3V0VGVzdENv
bnRyb2xsZXIpCisgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKK30K
Kzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9DaGFuZ2VM
b2cgYi9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBmMDQ0NjY4Li4xYWQ5Nzk5IDEwMDY0NAotLS0g
YS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ0
IEBACisyMDA5LTAzLTA5ICBPbGl2ZXIgSHVudCAgPG9saXZlckBhcHBsZS5jb20+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVt
LzY0MjU4MDc+IEltcGxlbWVudCBXb3JrZXJVdGlscy5pbXBvcnRTY3JpcHRzKCkKKyAgICAgICAg
PGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjcyMT4KKworICAgICAg
ICBJbXBsZW1lbnQgaW1wb3J0U2NyaXB0cywgY3VycmVudGx5IHVzZXMgYSBzZXJpZXMgb2Ygc3lu
Y2hyb25vdXMgbG9hZHMKKyAgICAgICAgdG8gZmV0Y2ggdGhlIHNjcmlwdHMsIGJ1dCB0aGlzIGlz
IHNpbXBsZXIgdGhhbiBhIHN5bmNocm9ub3VzIGxvYWQgb2YKKyAgICAgICAgbXVsdGlwbGUgbG9h
ZHMgaW4gcGFyYWxsZWwuICBJbiBmdXR1cmUgd2UnbGwgd2FudCB0byBzd2l0Y2ggdG8gcGFyYWxs
ZWwKKyAgICAgICAgbG9hZGluZywgYnV0IHRoaXMgd2lsbCBkbyBmb3Igbm93LgorCisgICAgICAg
IFRlc3Q6IGZhc3Qvd29ya2Vycy93b3JrZXItaW1wb3J0U2NyaXB0cy5odG1sCisKKyAgICAgICAg
KiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogYmluZGluZ3Mv
anMvSlNXb3JrZXJDb250ZXh0Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTV29ya2Vy
Q29udGV4dDo6aW1wb3J0U2NyaXB0cyk6CisgICAgICAgICogYmluZGluZ3MvanMvU2NyaXB0VmFs
dWUuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdFZhbHVlOjpoYXNOb1ZhbHVlKToKKyAgICAg
ICAgKiBiaW5kaW5ncy9qcy9Xb3JrZXJTY3JpcHRDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OldvcmtlclNjcmlwdENvbnRyb2xsZXI6OmV2YWx1YXRlKToKKyAgICAgICAgKFdlYkNv
cmU6OldvcmtlclNjcmlwdENvbnRyb2xsZXI6OnNldEV4Y2VwdGlvbik6CisgICAgICAgICogZG9t
L1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQ6OnNjcmlwdEltcG9ydGVkKToKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtlckNv
bnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyQ29udGV4dDo6c2NyaXB0SW1wb3J0
ZWQpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyQ29udGV4dDo6aW1wb3J0U2NyaXB0cyk6Cisg
ICAgICAgICogd29ya2Vycy9Xb3JrZXJDb250ZXh0Lmg6CisgICAgICAgICogd29ya2Vycy9Xb3Jr
ZXJDb250ZXh0LmlkbDoKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtlckltcG9ydFNjcmlwdHNDbGll
bnQuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OldvcmtlckltcG9ydFNjcmlwdHNDbGll
bnQ6OmRpZFJlY2VpdmVSZXNwb25zZSk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJJbXBvcnRT
Y3JpcHRzQ2xpZW50OjpkaWRSZWNlaXZlRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJJ
bXBvcnRTY3JpcHRzQ2xpZW50OjpkaWRGaW5pc2hMb2FkaW5nKToKKyAgICAgICAgKFdlYkNvcmU6
OldvcmtlckltcG9ydFNjcmlwdHNDbGllbnQ6OmRpZEZhaWwpOgorICAgICAgICAoV2ViQ29yZTo6
V29ya2VySW1wb3J0U2NyaXB0c0NsaWVudDo6ZGlkRmFpbFJlZGlyZWN0Q2hlY2spOgorICAgICAg
ICAoV2ViQ29yZTo6V29ya2VySW1wb3J0U2NyaXB0c0NsaWVudDo6ZGlkUmVjZWl2ZUF1dGhlbnRp
Y2F0aW9uQ2FuY2VsbGF0aW9uKToKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtlckltcG9ydFNjcmlw
dHNDbGllbnQuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJJbXBvcnRTY3JpcHRz
Q2xpZW50OjpXb3JrZXJJbXBvcnRTY3JpcHRzQ2xpZW50KToKKyAgICAgICAgKFdlYkNvcmU6Oldv
cmtlckltcG9ydFNjcmlwdHNDbGllbnQ6OnNjcmlwdCk6CisgICAgICAgIChXZWJDb3JlOjpXb3Jr
ZXJJbXBvcnRTY3JpcHRzQ2xpZW50OjpmYWlsZWQpOgorCiAyMDA5LTAzLTA5ICBTdGVwaGFuaWUg
TGV3aXMgIDxzbGV3aXNAYXBwbGUuY29tPgogCiAgICAgICAgIEZpeCBidWlsZC4KZGlmZiAtLWdp
dCBhL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvV2ViQ29yZS9X
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggMjM0N2RiZS4uYWI4ZDJlNSAx
MDA2NDQKLS0tIGEvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysr
IGIvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTIxNTUsNiAr
MjE1NSw4IEBACiAJCUE3RDAzMThFMEU5MzU0MDMwMEUyNEFDRCAvKiBKU0ltYWdlRGF0YUN1c3Rv
bS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBN0Qw
MzE4RDBFOTM1NDAzMDBFMjRBQ0QgLyogSlNJbWFnZURhdGFDdXN0b20uY3BwICovOyB9OwogCQlB
N0QyN0ZDNDBFMEE1OTlGMDA3OUFEMkIgLyogU1ZHRkVUaWxlLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3RDI3RkMzMEUwQTU5OUYwMDc5QUQyQiAv
KiBTVkdGRVRpbGUuY3BwICovOyB9OwogCQlBN0QzQzUyNDBCNTc2QjRCMDAyQ0E0NTAgLyogUGFz
dGVib2FyZEhlbHBlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQTdEM0M1MjMwQjU3NkI0QjAwMkNBNDUwIC8qIFBhc3RlYm9hcmRIZWxwZXIuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlBN0Q2QjM0OTBG
NjExMDQ1MDBCNzlGRDEgLyogV29ya2VySW1wb3J0U2NyaXB0c0NsaWVudC5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTdENkIzNDcwRjYxMTA0NTAwQjc5
RkQxIC8qIFdvcmtlckltcG9ydFNjcmlwdHNDbGllbnQuaCAqLzsgfTsKKwkJQTdENkIzNEEwRjYx
MTA0NTAwQjc5RkQxIC8qIFdvcmtlckltcG9ydFNjcmlwdHNDbGllbnQuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTdENkIzNDgwRjYxMTA0NTAwQjc5
RkQxIC8qIFdvcmtlckltcG9ydFNjcmlwdHNDbGllbnQuY3BwICovOyB9OwogCQlBODA5RjE0NzBC
NzM3OTNBMDAyRTREN0YgLyogUmVuZGVyU1ZHR3JhZGllbnRTdG9wLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBODA5RjE0NTBCNzM3OTNBMDAyRTREN0Yg
LyogUmVuZGVyU1ZHR3JhZGllbnRTdG9wLmggKi87IH07CiAJCUE4MDlGMTQ4MEI3Mzc5M0IwMDJF
NEQ3RiAvKiBSZW5kZXJTVkdHcmFkaWVudFN0b3AuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTgwOUYxNDYwQjczNzkzQTAwMkU0RDdGIC8qIFJlbmRl
clNWR0dyYWRpZW50U3RvcC5jcHAgKi87IH07CiAJCUE4MDlGMUFBMEI3MzdGQjYwMDJFNEQ3RiAv
KiBSZW5kZXJTVkdIaWRkZW5Db250YWluZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEE4MDlGMUE4MEI3MzdGQjYwMDJFNEQ3RiAvKiBSZW5kZXJTVkdI
aWRkZW5Db250YWluZXIuaCAqLzsgfTsKQEAgLTcwNjgsNiArNzA3MCw4IEBACiAJCUE3RDAzMThE
MEU5MzU0MDMwMEUyNEFDRCAvKiBKU0ltYWdlRGF0YUN1c3RvbS5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0ltYWdlRGF0YUN1c3RvbS5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUE3RDI3RkMzMEUwQTU5OUYwMDc5QUQyQiAvKiBTVkdGRVRpbGUu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU1ZHRkVUaWxlLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTdEM0M1MjMwQjU3NkI0QjAwMkNBNDUwIC8q
IFBhc3RlYm9hcmRIZWxwZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUGFz
dGVib2FyZEhlbHBlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBN0Q2QjM0NzBG
NjExMDQ1MDBCNzlGRDEgLyogV29ya2VySW1wb3J0U2NyaXB0c0NsaWVudC5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IG5hbWUgPSBXb3JrZXJJbXBvcnRTY3JpcHRzQ2xpZW50Lmg7IHBhdGgg
PSB3b3JrZXJzL1dvcmtlckltcG9ydFNjcmlwdHNDbGllbnQuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJQTdENkIzNDgwRjYxMTA0NTAwQjc5RkQxIC8qIFdvcmtlckltcG9ydFNjcmlw
dHNDbGllbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gV29ya2Vy
SW1wb3J0U2NyaXB0c0NsaWVudC5jcHA7IHBhdGggPSB3b3JrZXJzL1dvcmtlckltcG9ydFNjcmlw
dHNDbGllbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBODA5RjE0NTBCNzM3
OTNBMDAyRTREN0YgLyogUmVuZGVyU1ZHR3JhZGllbnRTdG9wLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFJlbmRlclNWR0dyYWRpZW50U3RvcC5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlBODA5RjE0NjBCNzM3OTNBMDAyRTREN0YgLyogUmVuZGVyU1ZHR3JhZGll
bnRTdG9wLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbmRlclNW
R0dyYWRpZW50U3RvcC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE4MDlGMUE4
MEI3MzdGQjYwMDJFNEQ3RiAvKiBSZW5kZXJTVkdIaWRkZW5Db250YWluZXIuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVuZGVyU1ZHSGlkZGVuQ29udGFpbmVyLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC05Nzg4LDYgKzk3OTIsOCBAQAogCQkJCTJFNDM0NjQx
MEY1NDZBODIwMEIwRjFCQSAvKiBXb3JrZXJSdW5Mb29wLmggKi8sCiAJCQkJMkU0MzQ2NDIwRjU0
NkE4MjAwQjBGMUJBIC8qIFdvcmtlclRocmVhZC5jcHAgKi8sCiAJCQkJMkU0MzQ2NDMwRjU0NkE4
MjAwQjBGMUJBIC8qIFdvcmtlclRocmVhZC5oICovLAorCQkJCUE3RDZCMzQ3MEY2MTEwNDUwMEI3
OUZEMSAvKiBXb3JrZXJJbXBvcnRTY3JpcHRzQ2xpZW50LmggKi8sCisJCQkJQTdENkIzNDgwRjYx
MTA0NTAwQjc5RkQxIC8qIFdvcmtlckltcG9ydFNjcmlwdHNDbGllbnQuY3BwICovLAogCQkJKTsK
IAkJCW5hbWUgPSB3b3JrZXJzOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKQEAgLTE2ODUy
LDYgKzE2ODU4LDcgQEAKIAkJCQk0MUYwNjIwMTBGNUYwQjY2MDBBMDdFQUMgLyogSW5zcGVjdG9y
UmVzb3VyY2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTQxRjA2MjE0MEY1RjE5MjYwMEEwN0VBQyAv
KiBJbnNwZWN0b3JEYXRhYmFzZVJlc291cmNlLmggaW4gSGVhZGVycyAqLywKIAkJCQk1RDkyNUI2
ODBGNjRENEREMDBCODQ3RjAgLyogU2Nyb2xsQmVoYXZpb3IuaCBpbiBIZWFkZXJzICovLAorCQkJ
CUE3RDZCMzQ5MEY2MTEwNDUwMEI3OUZEMSAvKiBXb3JrZXJJbXBvcnRTY3JpcHRzQ2xpZW50Lmgg
aW4gSGVhZGVycyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNz
aW5nID0gMDsKIAkJfTsKQEAgLTE4ODQ3LDYgKzE4ODU0LDcgQEAKIAkJCQk0MUYwNjIwMjBGNUYw
QjY2MDBBMDdFQUMgLyogSW5zcGVjdG9yUmVzb3VyY2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
NDFGMDYyMTUwRjVGMTkyNjAwQTA3RUFDIC8qIEluc3BlY3RvckRhdGFiYXNlUmVzb3VyY2UuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJNUQ5MjVCNjcwRjY0RDRERDAwQjg0N0YwIC8qIFNjcm9sbEJl
aGF2aW9yLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUE3RDZCMzRBMEY2MTEwNDUwMEI3OUZEMSAv
KiBXb3JrZXJJbXBvcnRTY3JpcHRzQ2xpZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJKTsKIAkJ
CXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpkaWZmIC0tZ2l0
IGEvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dvcmtlckNvbnRleHRDdXN0b20uY3BwIGIvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU1dvcmtlckNvbnRleHRDdXN0b20uY3BwCmluZGV4IGMzZWY5YzEuLjVi
OTk0MzUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXb3JrZXJDb250ZXh0Q3Vz
dG9tLmNwcAorKysgYi9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV29ya2VyQ29udGV4dEN1c3RvbS5j
cHAKQEAgLTMzLDYgKzMzLDcgQEAKICNpbmNsdWRlICJKU0V2ZW50TGlzdGVuZXIuaCIKICNpbmNs
dWRlICJTY2hlZHVsZWRBY3Rpb24uaCIKICNpbmNsdWRlICJXb3JrZXJDb250ZXh0LmgiCisjaW5j
bHVkZSA8aW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuaD4KIAogdXNpbmcgbmFtZXNwYWNlIEpTQzsK
IApAQCAtNzYsNiArNzcsMjkgQEAgdm9pZCBKU1dvcmtlckNvbnRleHQ6OnNldFNlbGYoRXhlY1N0
YXRlKiBleGVjLCBKU1ZhbHVlUHRyIHZhbHVlKQogICAgIHB1dERpcmVjdChJZGVudGlmaWVyKGV4
ZWMsICJzZWxmIiksIHZhbHVlKTsKIH0KIAorSlNWYWx1ZVB0ciBKU1dvcmtlckNvbnRleHQ6Omlt
cG9ydFNjcmlwdHMoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBBcmdMaXN0JiBhcmdzKQoreworICAg
IGlmICghYXJncy5zaXplKCkpCisgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOworCisgICAg
VmVjdG9yPFN0cmluZz4gdXJsczsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgYXJncy5z
aXplKCk7IGkrKykgeworICAgICAgICB1cmxzLmFwcGVuZChhcmdzLmF0KGV4ZWMsIGkpLnRvU3Ry
aW5nKGV4ZWMpKTsKKyAgICAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQorICAgICAgICAg
ICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CisgICAgfQorICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAw
OworICAgIGludCBzaWduZWRMaW5lTnVtYmVyOworICAgIGludHB0cl90IHNvdXJjZUlEOworICAg
IFVTdHJpbmcgc291cmNlVVJMOworICAgIEpTVmFsdWVQdHIgZnVuY3Rpb247CisgICAgZXhlYy0+
aW50ZXJwcmV0ZXIoKS0+cmV0cmlldmVMYXN0Q2FsbGVyKGV4ZWMsIHNpZ25lZExpbmVOdW1iZXIs
IHNvdXJjZUlELCBzb3VyY2VVUkwsIGZ1bmN0aW9uKTsKKworICAgIGltcGwoKS0+aW1wb3J0U2Ny
aXB0cyh1cmxzLCBzb3VyY2VVUkwsIHNpZ25lZExpbmVOdW1iZXIgPj0gMCA/IHNpZ25lZExpbmVO
dW1iZXIgOiAwLCBlYyk7CisgICAgc2V0RE9NRXhjZXB0aW9uKGV4ZWMsIGVjKTsKKyAgICByZXR1
cm4ganNVbmRlZmluZWQoKTsKK30KKwogSlNWYWx1ZVB0ciBKU1dvcmtlckNvbnRleHQ6OmFkZEV2
ZW50TGlzdGVuZXIoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBBcmdMaXN0JiBhcmdzKQogewogICAg
IFJlZlB0cjxKU1VucHJvdGVjdGVkRXZlbnRMaXN0ZW5lcj4gbGlzdGVuZXIgPSBmaW5kT3JDcmVh
dGVKU1VucHJvdGVjdGVkRXZlbnRMaXN0ZW5lcihleGVjLCBhcmdzLmF0KGV4ZWMsIDEpKTsKZGlm
ZiAtLWdpdCBhL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0VmFsdWUuaCBiL1dlYkNvcmUvYmlu
ZGluZ3MvanMvU2NyaXB0VmFsdWUuaAppbmRleCA4NTU1MDlhLi4zY2VlMDliIDEwMDY0NAotLS0g
YS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdFZhbHVlLmgKKysrIGIvV2ViQ29yZS9iaW5kaW5n
cy9qcy9TY3JpcHRWYWx1ZS5oCkBAIC00NSw2ICs0NSw3IEBAIHB1YmxpYzoKICAgICBib29sIGdl
dFN0cmluZyhTdHJpbmcmIHJlc3VsdCkgY29uc3Q7CiAgICAgYm9vbCBpc051bGwoKSBjb25zdDsK
ICAgICBib29sIGlzVW5kZWZpbmVkKCkgY29uc3Q7CisgICAgYm9vbCBoYXNOb1ZhbHVlKCkgY29u
c3QgeyByZXR1cm4gbV92YWx1ZSA9PSBKU0M6Om5vVmFsdWUoKTsgfQogCiBwcml2YXRlOgogICAg
IEpTQzo6UHJvdGVjdGVkSlNWYWx1ZVB0ciBtX3ZhbHVlOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9i
aW5kaW5ncy9qcy9Xb3JrZXJTY3JpcHRDb250cm9sbGVyLmNwcCBiL1dlYkNvcmUvYmluZGluZ3Mv
anMvV29ya2VyU2NyaXB0Q29udHJvbGxlci5jcHAKaW5kZXggYWI5N2I1Mi4uN2ZjYTk3MSAxMDA2
NDQKLS0tIGEvV2ViQ29yZS9iaW5kaW5ncy9qcy9Xb3JrZXJTY3JpcHRDb250cm9sbGVyLmNwcAor
KysgYi9XZWJDb3JlL2JpbmRpbmdzL2pzL1dvcmtlclNjcmlwdENvbnRyb2xsZXIuY3BwCkBAIC04
MCw2ICs4MCwyMCBAQCBTY3JpcHRWYWx1ZSBXb3JrZXJTY3JpcHRDb250cm9sbGVyOjpldmFsdWF0
ZShjb25zdCBTY3JpcHRTb3VyY2VDb2RlJiBzb3VyY2VDb2RlKQogICAgICAgICBpZiAobV9leGVj
dXRpb25Gb3JiaWRkZW4pCiAgICAgICAgICAgICByZXR1cm4gbm9WYWx1ZSgpOwogICAgIH0KKyAg
ICBTY3JpcHRWYWx1ZSBleGNlcHRpb247CisgICAgU2NyaXB0VmFsdWUgcmVzdWx0ID0gZXZhbHVh
dGUoc291cmNlQ29kZSwgJmV4Y2VwdGlvbik7CisgICAgaWYgKGV4Y2VwdGlvbi5qc1ZhbHVlKCkp
CisgICAgICAgIHJlcG9ydEV4Y2VwdGlvbihtX3dvcmtlckNvbnRleHRXcmFwcGVyLT5nbG9iYWxF
eGVjKCksIGV4Y2VwdGlvbi5qc1ZhbHVlKCkpOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK1Nj
cmlwdFZhbHVlIFdvcmtlclNjcmlwdENvbnRyb2xsZXI6OmV2YWx1YXRlKGNvbnN0IFNjcmlwdFNv
dXJjZUNvZGUmIHNvdXJjZUNvZGUsIFNjcmlwdFZhbHVlKiBleGNlcHRpb24pCit7CisgICAgewor
ICAgICAgICBNdXRleExvY2tlciBsb2NrKG1fc2hhcmVkRGF0YU11dGV4KTsKKyAgICAgICAgaWYg
KG1fZXhlY3V0aW9uRm9yYmlkZGVuKQorICAgICAgICAgICAgcmV0dXJuIG5vVmFsdWUoKTsKKyAg
ICB9CiAKICAgICBpbml0U2NyaXB0SWZOZWVkZWQoKTsKICAgICBKU0xvY2sgbG9jayhmYWxzZSk7
CkBAIC05NSwxMCArMTA5LDE1IEBAIFNjcmlwdFZhbHVlIFdvcmtlclNjcmlwdENvbnRyb2xsZXI6
OmV2YWx1YXRlKGNvbnN0IFNjcmlwdFNvdXJjZUNvZGUmIHNvdXJjZUNvZGUpCiAgICAgICAgIHJl
dHVybiBjb21wLnZhbHVlKCk7CiAKICAgICBpZiAoY29tcC5jb21wbFR5cGUoKSA9PSBUaHJvdykK
LSAgICAgICAgcmVwb3J0RXhjZXB0aW9uKGV4ZWMsIGNvbXAudmFsdWUoKSk7CisgICAgICAgICpl
eGNlcHRpb24gPSBjb21wLnZhbHVlKCk7CiAgICAgcmV0dXJuIG5vVmFsdWUoKTsKIH0KIAordm9p
ZCBXb3JrZXJTY3JpcHRDb250cm9sbGVyOjpzZXRFeGNlcHRpb24oU2NyaXB0VmFsdWUgZXhjZXB0
aW9uKQoreworICAgIG1fd29ya2VyQ29udGV4dFdyYXBwZXItPmdsb2JhbEV4ZWMoKS0+c2V0RXhj
ZXB0aW9uKGV4Y2VwdGlvbi5qc1ZhbHVlKCkpOworfQorCiB2b2lkIFdvcmtlclNjcmlwdENvbnRy
b2xsZXI6OmZvcmJpZEV4ZWN1dGlvbigpCiB7CiAgICAgLy8gVGhpcyBmdW5jdGlvbiBpcyBjYWxs
ZWQgZnJvbSBhbm90aGVyIHRocmVhZC4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvYmluZGluZ3MvanMv
V29ya2VyU2NyaXB0Q29udHJvbGxlci5oIGIvV2ViQ29yZS9iaW5kaW5ncy9qcy9Xb3JrZXJTY3Jp
cHRDb250cm9sbGVyLmgKaW5kZXggMWRkYTVkYS4uMDQ1NDcyMSAxMDA2NDQKLS0tIGEvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9Xb3JrZXJTY3JpcHRDb250cm9sbGVyLmgKKysrIGIvV2ViQ29yZS9iaW5k
aW5ncy9qcy9Xb3JrZXJTY3JpcHRDb250cm9sbGVyLmgKQEAgLTU3LDkgKzU3LDExIEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKICAgICAgICAgfQogCiAgICAgICAgIFNjcmlwdFZhbHVlIGV2YWx1YXRl
KGNvbnN0IFNjcmlwdFNvdXJjZUNvZGUmKTsKKyAgICAgICAgU2NyaXB0VmFsdWUgZXZhbHVhdGUo
Y29uc3QgU2NyaXB0U291cmNlQ29kZSYsIFNjcmlwdFZhbHVlKiBleGNlcHRpb24pOwogCi0gICAg
ICAgIHZvaWQgZm9yYmlkRXhlY3V0aW9uKCk7CisgICAgICAgIHZvaWQgc2V0RXhjZXB0aW9uKFNj
cmlwdFZhbHVlKTsKIAorICAgICAgICB2b2lkIGZvcmJpZEV4ZWN1dGlvbigpOwogICAgIHByaXZh
dGU6CiAgICAgICAgIHZvaWQgaW5pdFNjcmlwdElmTmVlZGVkKCkKICAgICAgICAgewpkaWZmIC0t
Z2l0IGEvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIGIvV2ViQ29yZS9kb20v
U2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oCmluZGV4IDg2N2QzNGYuLjUwMDI2NGUgMTAwNjQ0Ci0t
LSBhL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaAorKysgYi9XZWJDb3JlL2Rv
bS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmgKQEAgLTY3LDcgKzY3LDggQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogICAgICAgICB2aXJ0dWFsIHZvaWQgcmVwb3J0RXhjZXB0aW9uKGNvbnN0IFN0cmlu
ZyYgZXJyb3JNZXNzYWdlLCBpbnQgbGluZU51bWJlciwgY29uc3QgU3RyaW5nJiBzb3VyY2VVUkwp
ID0gMDsKICAgICAgICAgdmlydHVhbCB2b2lkIGFkZE1lc3NhZ2UoTWVzc2FnZURlc3RpbmF0aW9u
LCBNZXNzYWdlU291cmNlLCBNZXNzYWdlTGV2ZWwsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgdW5z
aWduZWQgbGluZU51bWJlciwgY29uc3QgU3RyaW5nJiBzb3VyY2VVUkwpID0gMDsKICAgICAgICAg
dmlydHVhbCB2b2lkIHJlc291cmNlUmV0cmlldmVkQnlYTUxIdHRwUmVxdWVzdCh1bnNpZ25lZCBs
b25nIGlkZW50aWZpZXIsIGNvbnN0IFNjcmlwdFN0cmluZyYgc291cmNlU3RyaW5nKSA9IDA7Ci0K
KyAgICAgICAgdmlydHVhbCB2b2lkIHNjcmlwdEltcG9ydGVkKHVuc2lnbmVkIGxvbmcsIGNvbnN0
IFN0cmluZyYpIHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KKyAgICAgICAgCiAgICAgICAgIC8v
IEFjdGl2ZSBvYmplY3RzIGFyZSBub3QgZ2FyYmFnZSBjb2xsZWN0ZWQgZXZlbiBpZiBpbmFjY2Vz
c2libGUsIGUuZy4gYmVjYXVzZSB0aGVpciBhY3Rpdml0eSBtYXkgcmVzdWx0IGluIGNhbGxiYWNr
cyBiZWluZyBpbnZva2VkLgogICAgICAgICBib29sIGNhblN1c3BlbmRBY3RpdmVET01PYmplY3Rz
KCk7CiAgICAgICAgIC8vIEFjdGl2ZSBvYmplY3RzIGNhbiBiZSBhc2tlZCB0byBzdXNwZW5kIGV2
ZW4gaWYgY2FuU3VzcGVuZEFjdGl2ZURPTU9iamVjdHMoKSByZXR1cm5zICdmYWxzZScgLQpkaWZm
IC0tZ2l0IGEvV2ViQ29yZS93b3JrZXJzL1dvcmtlckNvbnRleHQuY3BwIGIvV2ViQ29yZS93b3Jr
ZXJzL1dvcmtlckNvbnRleHQuY3BwCmluZGV4IGZkYTJlNmQuLjlmYzcwNjIgMTAwNjQ0Ci0tLSBh
L1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJDb250ZXh0LmNwcAorKysgYi9XZWJDb3JlL3dvcmtlcnMv
V29ya2VyQ29udGV4dC5jcHAKQEAgLTM4LDExICszOCwxNyBAQAogI2luY2x1ZGUgIkV2ZW50RXhj
ZXB0aW9uLmgiCiAjaW5jbHVkZSAiTWVzc2FnZUV2ZW50LmgiCiAjaW5jbHVkZSAiTm90SW1wbGVt
ZW50ZWQuaCIKKyNpbmNsdWRlICJSZXNvdXJjZVJlcXVlc3QuaCIKKyNpbmNsdWRlICJTY3JpcHRT
b3VyY2VDb2RlLmgiCisjaW5jbHVkZSAiU2NyaXB0VmFsdWUuaCIKICNpbmNsdWRlICJTZWN1cml0
eU9yaWdpbi5oIgorI2luY2x1ZGUgIlRocmVhZGFibGVMb2FkZXIuaCIKKyNpbmNsdWRlICJXb3Jr
ZXJJbXBvcnRTY3JpcHRzQ2xpZW50LmgiCiAjaW5jbHVkZSAiV29ya2VyTG9jYXRpb24uaCIKICNp
bmNsdWRlICJXb3JrZXJOYXZpZ2F0b3IuaCIKICNpbmNsdWRlICJXb3JrZXJPYmplY3RQcm94eS5o
IgogI2luY2x1ZGUgIldvcmtlclRocmVhZC5oIgorI2luY2x1ZGUgIlhNTEh0dHBSZXF1ZXN0RXhj
ZXB0aW9uLmgiCiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CkBAIC0xMzYsNiArMTQyLDEyIEBAIHZvaWQgV29ya2VyQ29udGV4dDo6cmVzb3VyY2VSZXRyaWV2
ZWRCeVhNTEh0dHBSZXF1ZXN0KHVuc2lnbmVkIGxvbmcsIGNvbnN0IFNjcmlwCiAgICAgbm90SW1w
bGVtZW50ZWQoKTsKIH0KIAordm9pZCBXb3JrZXJDb250ZXh0OjpzY3JpcHRJbXBvcnRlZCh1bnNp
Z25lZCBsb25nLCBjb25zdCBTdHJpbmcmKQoreworICAgIC8vIEZJWE1FOiBUaGUgaW1wbGVtZW50
YXRpb24gaXMgcGVuZGluZyB0aGUgZml4ZXMgaW4gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIzMTc1CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwogdm9pZCBXb3Jr
ZXJDb250ZXh0Ojpwb3N0TWVzc2FnZShjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCiB7CiAgICAgbV90
aHJlYWQtPndvcmtlck9iamVjdFByb3h5KCktPnBvc3RNZXNzYWdlVG9Xb3JrZXJPYmplY3QobWVz
c2FnZSk7CkBAIC0yMjIsNiArMjM0LDQ0IEBAIHZvaWQgV29ya2VyQ29udGV4dDo6ZGlzcGF0Y2hN
ZXNzYWdlKGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKICAgICBBU1NFUlQoIWVjKTsKIH0KIAordm9p
ZCBXb3JrZXJDb250ZXh0OjppbXBvcnRTY3JpcHRzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiB1cmxz
LCBjb25zdCBTdHJpbmcmIGNhbGxlclVSTCwgaW50IGNhbGxlckxpbmUsIEV4Y2VwdGlvbkNvZGUm
IGVjKQoreworICAgIGVjID0gMDsKKyAgICBWZWN0b3I8U3RyaW5nPjo6Y29uc3RfaXRlcmF0b3Ig
dXJsc0VuZCA9IHVybHMuZW5kKCk7CisgICAgVmVjdG9yPEtVUkw+IGNvbXBsZXRlZFVSTHM7Cisg
ICAgZm9yIChWZWN0b3I8U3RyaW5nPjo6Y29uc3RfaXRlcmF0b3IgaXQgPSB1cmxzLmJlZ2luKCk7
IGl0ICE9IHVybHNFbmQ7ICsraXQpIHsKKyAgICAgICAgY29uc3QgS1VSTCYgdXJsID0gc2NyaXB0
RXhlY3V0aW9uQ29udGV4dCgpLT5jb21wbGV0ZVVSTCgqaXQpOworICAgICAgICBpZiAoIXVybC5p
c1ZhbGlkKCkpIHsKKyAgICAgICAgICAgIGVjID0gU1lOVEFYX0VSUjsKKyAgICAgICAgICAgIHJl
dHVybjsKKyAgICAgICAgfQorICAgICAgICBjb21wbGV0ZWRVUkxzLmFwcGVuZCh1cmwpOworICAg
IH0KKyAgICBTdHJpbmcgc2VjdXJpdHlPcmlnaW4gPSBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkt
PnNlY3VyaXR5T3JpZ2luKCktPnRvU3RyaW5nKCk7CisgICAgVmVjdG9yPEtVUkw+Ojpjb25zdF9p
dGVyYXRvciBlbmQgPSBjb21wbGV0ZWRVUkxzLmVuZCgpOworCisgICAgZm9yIChWZWN0b3I8S1VS
TD46OmNvbnN0X2l0ZXJhdG9yIGl0ID0gY29tcGxldGVkVVJMcy5iZWdpbigpOyBpdCAhPSBlbmQ7
ICsraXQpIHsKKyAgICAgICAgUmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QoKml0KTsKKyAgICAgICAg
cmVxdWVzdC5zZXRIVFRQTWV0aG9kKCJHRVQiKTsKKyAgICAgICAgcmVxdWVzdC5zZXRIVFRQT3Jp
Z2luKHNlY3VyaXR5T3JpZ2luKTsKKyAgICAgICAgV29ya2VySW1wb3J0U2NyaXB0c0NsaWVudCBj
bGllbnQoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCAqaXQsIGNhbGxlclVSTCwgY2FsbGVyTGlu
ZSk7CisgICAgICAgIFRocmVhZGFibGVMb2FkZXI6OmxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHko
c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCByZXF1ZXN0LCBjbGllbnQpOworICAgICAgICAKKyAg
ICAgICAgLy8gSWYgdGhlIGZldGNoaW5nIGF0dGVtcHQgZmFpbGVkLCB0aHJvdyBhIE5FVFdPUktf
RVJSIGV4Y2VwdGlvbiBhbmQgYWJvcnQgYWxsIHRoZXNlIHN0ZXBzLgorICAgICAgICBpZiAoY2xp
ZW50LmZhaWxlZCgpKSB7CisgICAgICAgICAgICBlYyA9IFhNTEh0dHBSZXF1ZXN0RXhjZXB0aW9u
OjpORVRXT1JLX0VSUjsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAg
IFNjcmlwdFZhbHVlIGV4Y2VwdGlvbjsKKyAgICAgICAgbV9zY3JpcHQtPmV2YWx1YXRlKFNjcmlw
dFNvdXJjZUNvZGUoY2xpZW50LnNjcmlwdCgpLCAqaXQpLCAmZXhjZXB0aW9uKTsKKyAgICAgICAg
aWYgKCFleGNlcHRpb24uaGFzTm9WYWx1ZSgpKSB7CisgICAgICAgICAgICBtX3NjcmlwdC0+c2V0
RXhjZXB0aW9uKGV4Y2VwdGlvbik7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAg
ICB9Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShXT1JL
RVJTKQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS93b3JrZXJzL1dvcmtlckNvbnRleHQuaCBiL1dlYkNv
cmUvd29ya2Vycy9Xb3JrZXJDb250ZXh0LmgKaW5kZXggMjI1NTU1NC4uNjY0ZGVkMyAxMDA2NDQK
LS0tIGEvV2ViQ29yZS93b3JrZXJzL1dvcmtlckNvbnRleHQuaAorKysgYi9XZWJDb3JlL3dvcmtl
cnMvV29ya2VyQ29udGV4dC5oCkBAIC03Nyw2ICs3Nyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
ICAgICAgICAgdmlydHVhbCB2b2lkIHJlcG9ydEV4Y2VwdGlvbihjb25zdCBTdHJpbmcmIGVycm9y
TWVzc2FnZSwgaW50IGxpbmVOdW1iZXIsIGNvbnN0IFN0cmluZyYgc291cmNlVVJMKTsKICAgICAg
ICAgdmlydHVhbCB2b2lkIGFkZE1lc3NhZ2UoTWVzc2FnZURlc3RpbmF0aW9uLCBNZXNzYWdlU291
cmNlLCBNZXNzYWdlTGV2ZWwsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgdW5zaWduZWQgbGluZU51
bWJlciwgY29uc3QgU3RyaW5nJiBzb3VyY2VVUkwpOwogICAgICAgICB2aXJ0dWFsIHZvaWQgcmVz
b3VyY2VSZXRyaWV2ZWRCeVhNTEh0dHBSZXF1ZXN0KHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwg
Y29uc3QgU2NyaXB0U3RyaW5nJiBzb3VyY2VTdHJpbmcpOworICAgICAgICB2aXJ0dWFsIHZvaWQg
c2NyaXB0SW1wb3J0ZWQodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIHNv
dXJjZVN0cmluZyk7CiAKICAgICAgICAgdmlydHVhbCBXb3JrZXJDb250ZXh0KiB0b1dvcmtlckNv
bnRleHQoKSB7IHJldHVybiB0aGlzOyB9CiAKQEAgLTk5LDYgKzEwMCw4IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKICAgICAgICAgdHlwZWRlZiBIYXNoTWFwPEF0b21pY1N0cmluZywgTGlzdGVuZXJW
ZWN0b3I+IEV2ZW50TGlzdGVuZXJzTWFwOwogICAgICAgICBFdmVudExpc3RlbmVyc01hcCYgZXZl
bnRMaXN0ZW5lcnMoKSB7IHJldHVybiBtX2V2ZW50TGlzdGVuZXJzOyB9CiAKKyAgICAgICAgdm9p
ZCBpbXBvcnRTY3JpcHRzKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiB1cmxzLCBjb25zdCBTdHJpbmcm
IGNhbGxlclVSTCwgaW50IGNhbGxlckxpbmUsIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICAgICAgCiAg
ICAgICAgIHVzaW5nIFJlZkNvdW50ZWQ8V29ya2VyQ29udGV4dD46OnJlZjsKICAgICAgICAgdXNp
bmcgUmVmQ291bnRlZDxXb3JrZXJDb250ZXh0Pjo6ZGVyZWY7CiAKZGlmZiAtLWdpdCBhL1dlYkNv
cmUvd29ya2Vycy9Xb3JrZXJDb250ZXh0LmlkbCBiL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJDb250
ZXh0LmlkbAppbmRleCBlMWZmZjUxLi5iYmZjYTYzIDEwMDY0NAotLS0gYS9XZWJDb3JlL3dvcmtl
cnMvV29ya2VyQ29udGV4dC5pZGwKKysrIGIvV2ViQ29yZS93b3JrZXJzL1dvcmtlckNvbnRleHQu
aWRsCkBAIC00MCw2ICs0MCw3IEBAIG1vZHVsZSB0aHJlYWRzIHsKIAogICAgICAgICBhdHRyaWJ1
dGUgRXZlbnRMaXN0ZW5lciBvbm1lc3NhZ2U7CiAgICAgICAgIHZvaWQgcG9zdE1lc3NhZ2UoaW4g
RE9NU3RyaW5nIG1lc3NhZ2UpOworICAgICAgICBbQ3VzdG9tXSB2b2lkIGltcG9ydFNjcmlwdHMo
LyogdXJscyAqLyk7CiAKICAgICAgICAgYXR0cmlidXRlIFtSZXBsYWNlYWJsZV0gV29ya2VyTG9j
YXRpb24gbG9jYXRpb247CiAgICAgICAgIGF0dHJpYnV0ZSBbUmVwbGFjZWFibGVdIFdvcmtlck5h
dmlnYXRvciBuYXZpZ2F0b3I7CmRpZmYgLS1naXQgYS9XZWJDb3JlL3dvcmtlcnMvV29ya2VySW1w
b3J0U2NyaXB0c0NsaWVudC5jcHAgYi9XZWJDb3JlL3dvcmtlcnMvV29ya2VySW1wb3J0U2NyaXB0
c0NsaWVudC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTVhODI0NAot
LS0gL2Rldi9udWxsCisrKyBiL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJJbXBvcnRTY3JpcHRzQ2xp
ZW50LmNwcApAQCAtMCwwICsxLDk3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA5IEFwcGxl
IEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisg
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAor
ICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKgorICovCisKKyNpbmNsdWRlICJjb25maWcu
aCIKKworI2lmIEVOQUJMRShXT1JLRVJTKQorCisjaW5jbHVkZSAiV29ya2VySW1wb3J0U2NyaXB0
c0NsaWVudC5oIgorCisjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgorCituYW1l
c3BhY2UgV2ViQ29yZSB7CisKK3ZvaWQgV29ya2VySW1wb3J0U2NyaXB0c0NsaWVudDo6ZGlkUmVj
ZWl2ZVJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQoreworICAgIGlm
IChyZXNwb25zZS5odHRwU3RhdHVzQ29kZSgpIC8gMTAwICE9IDIgJiYgcmVzcG9uc2UuaHR0cFN0
YXR1c0NvZGUoKSAhPSAwKSB7CisgICAgICAgIG1fZmFpbGVkID0gdHJ1ZTsKKyAgICAgICAgcmV0
dXJuOworICAgIH0KKyAgICBtX3Jlc3BvbnNlID0gcmVzcG9uc2U7CisgICAgbV9yZXNwb25zZUVu
Y29kaW5nID0gcmVzcG9uc2UudGV4dEVuY29kaW5nTmFtZSgpOworfQorCit2b2lkIFdvcmtlcklt
cG9ydFNjcmlwdHNDbGllbnQ6OmRpZFJlY2VpdmVEYXRhKGNvbnN0IGNoYXIqIGRhdGEsIGludCBs
ZW4pCit7CisgICAgaWYgKG1fZmFpbGVkKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAoIW1f
ZGVjb2RlcikgeworICAgICAgICBpZiAoIW1fcmVzcG9uc2VFbmNvZGluZy5pc0VtcHR5KCkpCisg
ICAgICAgICAgICBtX2RlY29kZXIgPSBUZXh0UmVzb3VyY2VEZWNvZGVyOjpjcmVhdGUoInRleHQv
amF2YXNjcmlwdCIsIG1fcmVzcG9uc2VFbmNvZGluZyk7CisgICAgICAgIGVsc2UKKyAgICAgICAg
ICAgIG1fZGVjb2RlciA9IFRleHRSZXNvdXJjZURlY29kZXI6OmNyZWF0ZSgidGV4dC9qYXZhc2Ny
aXB0IiwgbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0LT5lbmNvZGluZygpKTsKKyAgICB9CisKKyAg
ICBpZiAoIWxlbikKKyAgICAgICAgcmV0dXJuOworICAgIAorICAgIGlmIChsZW4gPT0gLTEpCisg
ICAgICAgIGxlbiA9IHN0cmxlbihkYXRhKTsKKyAgICAKKyAgICBtX3NjcmlwdCArPSBtX2RlY29k
ZXItPmRlY29kZShkYXRhLCBsZW4pOworfQorCit2b2lkIFdvcmtlckltcG9ydFNjcmlwdHNDbGll
bnQ6OmRpZEZpbmlzaExvYWRpbmcodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyKQoreworICAgIGlm
IChtX2ZhaWxlZCkKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKG1fZGVjb2RlcikKKyAgICAg
ICAgbV9zY3JpcHQgKz0gbV9kZWNvZGVyLT5mbHVzaCgpOworICAgIAorICAgIG1fc2NyaXB0RXhl
Y3V0aW9uQ29udGV4dC0+c2NyaXB0SW1wb3J0ZWQoaWRlbnRpZmllciwgbV9zY3JpcHQpOworICAg
IG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+YWRkTWVzc2FnZShJbnNwZWN0b3JDb250cm9sbGVy
RGVzdGluYXRpb24sIEpTTWVzc2FnZVNvdXJjZSwgTG9nTWVzc2FnZUxldmVsLCAiV29ya2VyIHNj
cmlwdCBpbXBvcnRlZDogXCIiICsgbV91cmwgKyAiXCIuIiwgbV9jYWxsZXJMaW5lTnVtYmVyLCBt
X2NhbGxlclVSTCk7Cit9CisKK3ZvaWQgV29ya2VySW1wb3J0U2NyaXB0c0NsaWVudDo6ZGlkRmFp
bChjb25zdCBSZXNvdXJjZUVycm9yJikKK3sKKyAgICBtX2ZhaWxlZCA9IHRydWU7Cit9CisKK3Zv
aWQgV29ya2VySW1wb3J0U2NyaXB0c0NsaWVudDo6ZGlkRmFpbFJlZGlyZWN0Q2hlY2soKQorewor
ICAgIG1fZmFpbGVkID0gdHJ1ZTsKK30KKwordm9pZCBXb3JrZXJJbXBvcnRTY3JpcHRzQ2xpZW50
OjpkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DYW5jZWxsYXRpb24oY29uc3QgUmVzb3VyY2VSZXNw
b25zZSYpCit7CisgICAgbV9mYWlsZWQgPSB0cnVlOworfQorCit9CisKKyNlbmRpZiAvLyBFTkFC
TEUoV09SS0VSUykKZGlmZiAtLWdpdCBhL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJJbXBvcnRTY3Jp
cHRzQ2xpZW50LmggYi9XZWJDb3JlL3dvcmtlcnMvV29ya2VySW1wb3J0U2NyaXB0c0NsaWVudC5o
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZmNjkzYmEKLS0tIC9kZXYvbnVs
bAorKysgYi9XZWJDb3JlL3dvcmtlcnMvV29ya2VySW1wb3J0U2NyaXB0c0NsaWVudC5oCkBAIC0w
LDAgKzEsNzggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgQXBwbGUgSW5jLiBBbGwgUmln
aHRzIFJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisg
KiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLiAKKyAqCisgKi8KKworI2lmbmRlZiBXb3JrZXJJbXBvcnRTY3JpcHRzQ2xp
ZW50X2gKKyNkZWZpbmUgV29ya2VySW1wb3J0U2NyaXB0c0NsaWVudF9oCisKKyNpZiBFTkFCTEUo
V09SS0VSUykKKworI2luY2x1ZGUgIlJlc291cmNlUmVzcG9uc2UuaCIKKyNpbmNsdWRlICJTY3Jp
cHRTdHJpbmcuaCIKKyNpbmNsdWRlICJUZXh0UmVzb3VyY2VEZWNvZGVyLmgiCisjaW5jbHVkZSAi
VGhyZWFkYWJsZUxvYWRlckNsaWVudC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKKyAgICBj
bGFzcyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OworICAgIAorICAgIGNsYXNzIFdvcmtlckltcG9y
dFNjcmlwdHNDbGllbnQgOiBwdWJsaWMgVGhyZWFkYWJsZUxvYWRlckNsaWVudCB7CisgICAgcHVi
bGljOgorICAgICAgICBXb3JrZXJJbXBvcnRTY3JpcHRzQ2xpZW50KFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBT
dHJpbmcmIGNhbGxlclVSTCwgaW50IGNhbGxlckxpbmVOdW1iZXIpCisgICAgICAgICAgICA6IG1f
c2NyaXB0RXhlY3V0aW9uQ29udGV4dChzY3JpcHRFeGVjdXRpb25Db250ZXh0KQorICAgICAgICAg
ICAgLCBtX3VybCh1cmwpCisgICAgICAgICAgICAsIG1fY2FsbGVyVVJMKGNhbGxlclVSTCkKKyAg
ICAgICAgICAgICwgbV9jYWxsZXJMaW5lTnVtYmVyKGNhbGxlckxpbmVOdW1iZXIpCisgICAgICAg
ICAgICAsIG1fZmFpbGVkKGZhbHNlKQorICAgICAgICB7CisgICAgICAgIH0KKworICAgICAgICBj
b25zdCBTdHJpbmcmIHNjcmlwdCgpIGNvbnN0IHsgcmV0dXJuIG1fc2NyaXB0OyB9CisgICAgICAg
IGJvb2wgZmFpbGVkKCkgY29uc3QgeyByZXR1cm4gbV9mYWlsZWQ7IH0KKworICAgICAgICB2aXJ0
dWFsIHZvaWQgZGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3Bv
bnNlKTsKKyAgICAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVEYXRhKGNvbnN0IGNoYXIqIGRh
dGEsIGludCBsZW5ndGhSZWNlaXZlZCk7CisgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRGaW5pc2hM
b2FkaW5nKHVuc2lnbmVkIGxvbmcgLyogaWRlbnRpZmllciAqLyk7CisgICAgICAgIHZpcnR1YWwg
dm9pZCBkaWRGYWlsKGNvbnN0IFJlc291cmNlRXJyb3ImKTsKKyAgICAgICAgdmlydHVhbCB2b2lk
IGRpZEZhaWxSZWRpcmVjdENoZWNrKCk7CisgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZl
QXV0aGVudGljYXRpb25DYW5jZWxsYXRpb24oY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOworCisg
ICAgcHJpdmF0ZToKKyAgICAgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogbV9zY3JpcHRFeGVj
dXRpb25Db250ZXh0OworICAgICAgICBTdHJpbmcgbV91cmw7CisgICAgICAgIFN0cmluZyBtX2Nh
bGxlclVSTDsKKyAgICAgICAgaW50IG1fY2FsbGVyTGluZU51bWJlcjsKKyAgICAgICAgUmVzb3Vy
Y2VSZXNwb25zZSBtX3Jlc3BvbnNlOworICAgICAgICBTdHJpbmcgbV9yZXNwb25zZUVuY29kaW5n
OyAgICAgICAgCisgICAgICAgIFJlZlB0cjxUZXh0UmVzb3VyY2VEZWNvZGVyPiBtX2RlY29kZXI7
CisgICAgICAgIFN0cmluZyBtX3NjcmlwdDsKKyAgICAgICAgYm9vbCBtX2ZhaWxlZDsKKyAgICB9
OworCit9CisKKyNlbmRpZiAvLyBFTkFCTEUoV09SS0VSUykKKyNlbmRpZgorCg==
</data>
<flag name="review"
          id="13931"
          type_id="1"
          status="+"
          setter="ap"
    />
          </attachment>
      

    </bug>

</bugzilla>