<?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>26196</bug_id>
          
          <creation_ts>2009-06-04 13:14:52 -0700</creation_ts>
          <short_desc>Fix the problem that worker&apos;s importScripts fails if the script URL is redirected from different origin.</short_desc>
          <delta_ts>2009-06-15 02:38:33 -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 Misc.</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></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>26146</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Jian Li">jianli</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>abarth</cc>
    
    <cc>ap</cc>
    
    <cc>dimich</cc>
    
    <cc>levin</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>124367</commentid>
    <comment_count>0</comment_count>
    <who name="Jian Li">jianli</who>
    <bug_when>2009-06-04 13:14:52 -0700</bug_when>
    <thetext>Per the spec, the scripts loaded by worker&apos;s importScripts can come or redirect from any domain. Currently DocumentThreadableLoader::willSendRequest always checks if the redirection URL is from the same domain. To fix this problem, we need to pass additional enum parameter to the loader to tell it to perform the redirection check or not.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>124370</commentid>
    <comment_count>1</comment_count>
      <attachid>30957</attachid>
    <who name="Jian Li">jianli</who>
    <bug_when>2009-06-04 13:19:47 -0700</bug_when>
    <thetext>Created attachment 30957
Proposed Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>124860</commentid>
    <comment_count>2</comment_count>
      <attachid>30957</attachid>
    <who name="David Levin">levin</who>
    <bug_when>2009-06-08 18:03:19 -0700</bug_when>
    <thetext>Comment on attachment 30957
Proposed Patch

Just a few things to fix up on landing.

&gt; diff --git a/LayoutTests/ChangeLog b/LayoutTests/ChangeLog
&gt; index 40d853a..6b451d0 100644
&gt; --- a/LayoutTests/ChangeLog
&gt; +++ b/LayoutTests/ChangeLog
&gt; @@ -1,3 +1,13 @@
&gt; +2009-06-04  Jian Li  &lt;jianli@chromium.org&gt;
&gt; +
&gt; +        Reviewed by NOBODY (OOPS!).
&gt; +

I think the current style is to add the bug title here.
&gt; +        https://bugs.webkit.org/show_bug.cgi?id=26196
&gt; +        Add a test case in the importScripts layout test to cover the scenario that the import script URL can come from different redirect origin.

Interestingly, the changelog text is typically wrapped.

Perhaps 
  &quot;can come from different origin through a redirect.&quot;
would be slightly clearer.

&gt; +
&gt; +        * http/tests/workers/resources/worker-importScripts.js:
&gt; +        * http/tests/workers/worker-importScripts-expected.txt:
&gt; +
&gt;  2009-06-02  Alexey Proskuryakov  &lt;ap@webkit.org&gt;
&gt;  
&gt;          Land correct results for a test I just added (forgot to regenerate them after adding new
&gt; diff --git a/LayoutTests/http/tests/workers/resources/worker-importScripts.js b/LayoutTests/http/tests/workers/resources/worker-importScripts.js
&gt; index ddf479c..364c502 100644
&gt; --- a/LayoutTests/http/tests/workers/resources/worker-importScripts.js
&gt; +++ b/LayoutTests/http/tests/workers/resources/worker-importScripts.js
&gt; @@ -7,6 +7,7 @@ postMessage(&quot;PASS: importScripts(), exists, is a function, and doesn&apos;t throw whe
&gt;  var source1 = &quot;worker-importScripts-source1.js&quot;;
&gt;  var source2 = &quot;worker-importScripts-source2.js&quot;;
&gt;  var differentOrigin = &quot;http://localhost:8000/workers/resources/worker-importScripts-differentOrigin.js&quot;;
&gt; +var differentRedirectOrigin = &quot;/resources/redirect.php?url=http://localhost:8000/workers/resources/worker-importScripts-differentOrigin.js&quot;;
&gt;  var syntaxErrorSource = &quot;worker-importScripts-syntaxError.js&quot;;
&gt;  var fakeSource = &quot;nonexistant&quot;;
&gt;  var loadedSource1 = false;
&gt; @@ -29,6 +30,16 @@ if (differentOriginLoaded)
&gt;  
&gt;  resetLoadFlags();
&gt;  
&gt; +try {
&gt; +    importScripts(differentRedirectOrigin)
&gt; +} catch(e) {
&gt; +    postMessage(&quot;FAIL: Threw &quot; + e + &quot; when attempting cross origin load on redirection&quot;);
Add &quot;.&quot;

&gt; +}
&gt; +if (differentOriginLoaded)
&gt; +    postMessage(&quot;PASS: executed script from different redirect origin&quot;);
I think this could be re-worded slight (similar to the ChangeLog and add a &quot;.&quot;).

Add an else to print a FAIL message so that one can tell that it failed just by running it in a browser.


&gt; diff --git a/WebCore/ChangeLog b/WebCore/ChangeLog
&gt; index b119fa6..bf8ebc3 100644
&gt; --- a/WebCore/ChangeLog
&gt; +++ b/WebCore/ChangeLog
&gt; @@ -1,3 +1,34 @@

Same fix up in this changelog as suggested above.

&gt;  
&gt; -DocumentThreadableLoader::DocumentThreadableLoader(Document* document, ThreadableLoaderClient* client, const ResourceRequest&amp; request, LoadCallbacks callbacksSetting, ContentSniff contentSniff, StoredCredentials storedCredentials)
&gt; +DocumentThreadableLoader::DocumentThreadableLoader(Document* document, ThreadableLoaderClient* client, const ResourceRequest&amp; request, LoadCallbacks callbacksSetting, ContentSniff contentSniff, StoredCredentials storedCredentials, RedirectOriginCheck redirectOriginCheck)
&gt;      : m_client(client)
&gt;      , m_document(document)
&gt;      , m_allowStoredCredentials(storedCredentials == AllowStoredCredentials)
&gt;      , m_sameOriginRequest(document-&gt;securityOrigin()-&gt;canRequest(request.url()))
&gt; +    , m_checkRedirectOrigin(redirectOriginCheck == RequireSameRedirectOrigin)
&gt;  {

It would be nice to assert that redirectOriginCheck has one of the two allowed values (and feel free to add it for storedCredentials which I should have done).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>124982</commentid>
    <comment_count>3</comment_count>
    <who name="Jian Li">jianli</who>
    <bug_when>2009-06-09 11:27:08 -0700</bug_when>
    <thetext>Commited as http://trac.webkit.org/changeset/44538.

All feedbacks are addressed before landing except adding &quot;.&quot;. Per discussion with levin, we do not want to add it to be consistent with other part of the test script.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>125666</commentid>
    <comment_count>4</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2009-06-13 13:50:03 -0700</bug_when>
    <thetext>I cannot really parse &quot;RequireSameRedirectOrigin&quot; - is the order of words as intended here? Would &quot;AllowCrossOriginRedirect&quot; be clearer perhaps?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>125671</commentid>
    <comment_count>5</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2009-06-13 14:16:31 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; I cannot really parse &quot;RequireSameRedirectOrigin&quot; - is the order of words as
&gt; intended here? Would &quot;AllowCrossOriginRedirect&quot; be clearer perhaps?

Yeah, I agree.  Maybe call the opposite DenyCrossOriginRedirect?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>125911</commentid>
    <comment_count>6</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2009-06-15 02:38:33 -0700</bug_when>
    <thetext>Sounds fine to me.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>30957</attachid>
            <date>2009-06-04 13:19:47 -0700</date>
            <delta_ts>2009-06-08 18:03:19 -0700</delta_ts>
            <desc>Proposed Patch</desc>
            <filename>26196</filename>
            <type>text/plain</type>
            <size>24016</size>
            <attacher name="Jian Li">jianli</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA0MGQ4NTNhLi42YjQ1MWQwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMDktMDYt
MDQgIEppYW4gTGkgIDxqaWFubGlAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yNjE5NgorICAgICAgICBBZGQgYSB0ZXN0IGNhc2UgaW4gdGhlIGltcG9ydFNj
cmlwdHMgbGF5b3V0IHRlc3QgdG8gY292ZXIgdGhlIHNjZW5hcmlvIHRoYXQgdGhlIGltcG9ydCBz
Y3JpcHQgVVJMIGNhbiBjb21lIGZyb20gZGlmZmVyZW50IHJlZGlyZWN0IG9yaWdpbi4KKworICAg
ICAgICAqIGh0dHAvdGVzdHMvd29ya2Vycy9yZXNvdXJjZXMvd29ya2VyLWltcG9ydFNjcmlwdHMu
anM6CisgICAgICAgICogaHR0cC90ZXN0cy93b3JrZXJzL3dvcmtlci1pbXBvcnRTY3JpcHRzLWV4
cGVjdGVkLnR4dDoKKwogMjAwOS0wNi0wMiAgQWxleGV5IFByb3NrdXJ5YWtvdiAgPGFwQHdlYmtp
dC5vcmc+CiAKICAgICAgICAgTGFuZCBjb3JyZWN0IHJlc3VsdHMgZm9yIGEgdGVzdCBJIGp1c3Qg
YWRkZWQgKGZvcmdvdCB0byByZWdlbmVyYXRlIHRoZW0gYWZ0ZXIgYWRkaW5nIG5ldwpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93b3JrZXJzL3Jlc291cmNlcy93b3JrZXItaW1w
b3J0U2NyaXB0cy5qcyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd29ya2Vycy9yZXNvdXJjZXMv
d29ya2VyLWltcG9ydFNjcmlwdHMuanMKaW5kZXggZGRmNDc5Yy4uMzY0YzUwMiAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93b3JrZXJzL3Jlc291cmNlcy93b3JrZXItaW1wb3J0
U2NyaXB0cy5qcworKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dvcmtlcnMvcmVzb3VyY2Vz
L3dvcmtlci1pbXBvcnRTY3JpcHRzLmpzCkBAIC03LDYgKzcsNyBAQCBwb3N0TWVzc2FnZSgiUEFT
UzogaW1wb3J0U2NyaXB0cygpLCBleGlzdHMsIGlzIGEgZnVuY3Rpb24sIGFuZCBkb2Vzbid0IHRo
cm93IHdoZQogdmFyIHNvdXJjZTEgPSAid29ya2VyLWltcG9ydFNjcmlwdHMtc291cmNlMS5qcyI7
CiB2YXIgc291cmNlMiA9ICJ3b3JrZXItaW1wb3J0U2NyaXB0cy1zb3VyY2UyLmpzIjsKIHZhciBk
aWZmZXJlbnRPcmlnaW4gPSAiaHR0cDovL2xvY2FsaG9zdDo4MDAwL3dvcmtlcnMvcmVzb3VyY2Vz
L3dvcmtlci1pbXBvcnRTY3JpcHRzLWRpZmZlcmVudE9yaWdpbi5qcyI7Cit2YXIgZGlmZmVyZW50
UmVkaXJlY3RPcmlnaW4gPSAiL3Jlc291cmNlcy9yZWRpcmVjdC5waHA/dXJsPWh0dHA6Ly9sb2Nh
bGhvc3Q6ODAwMC93b3JrZXJzL3Jlc291cmNlcy93b3JrZXItaW1wb3J0U2NyaXB0cy1kaWZmZXJl
bnRPcmlnaW4uanMiOwogdmFyIHN5bnRheEVycm9yU291cmNlID0gIndvcmtlci1pbXBvcnRTY3Jp
cHRzLXN5bnRheEVycm9yLmpzIjsKIHZhciBmYWtlU291cmNlID0gIm5vbmV4aXN0YW50IjsKIHZh
ciBsb2FkZWRTb3VyY2UxID0gZmFsc2U7CkBAIC0yOSw2ICszMCwxNiBAQCBpZiAoZGlmZmVyZW50
T3JpZ2luTG9hZGVkKQogCiByZXNldExvYWRGbGFncygpOwogCit0cnkgeworICAgIGltcG9ydFNj
cmlwdHMoZGlmZmVyZW50UmVkaXJlY3RPcmlnaW4pCit9IGNhdGNoKGUpIHsKKyAgICBwb3N0TWVz
c2FnZSgiRkFJTDogVGhyZXcgIiArIGUgKyAiIHdoZW4gYXR0ZW1wdGluZyBjcm9zcyBvcmlnaW4g
bG9hZCBvbiByZWRpcmVjdGlvbiIpOworfQoraWYgKGRpZmZlcmVudE9yaWdpbkxvYWRlZCkKKyAg
ICBwb3N0TWVzc2FnZSgiUEFTUzogZXhlY3V0ZWQgc2NyaXB0IGZyb20gZGlmZmVyZW50IHJlZGly
ZWN0IG9yaWdpbiIpOworCityZXNldExvYWRGbGFncygpOworCiBwb3N0TWVzc2FnZSgiVGVzdGlu
ZyBzaW5nbGUgYXJndW1lbnQ6Iik7CiBpbXBvcnRTY3JpcHRzKHNvdXJjZTEpCiBpZiAobG9hZGVk
U291cmNlMSkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd29ya2Vycy93b3Jr
ZXItaW1wb3J0U2NyaXB0cy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dv
cmtlcnMvd29ya2VyLWltcG9ydFNjcmlwdHMtZXhwZWN0ZWQudHh0CmluZGV4IGJiZDExYTcuLmQ1
NWFkNmMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd29ya2Vycy93b3JrZXIt
aW1wb3J0U2NyaXB0cy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93
b3JrZXJzL3dvcmtlci1pbXBvcnRTY3JpcHRzLWV4cGVjdGVkLnR4dApAQCAtNCw2ICs0LDggQEAg
VGVzdCBzdGFydGVkLgogUEFTUzogaW1wb3J0U2NyaXB0cygpLCBleGlzdHMsIGlzIGEgZnVuY3Rp
b24sIGFuZCBkb2Vzbid0IHRocm93IHdoZW4gbm90IGdpdmVuIGFueSBhcmd1bWVudHMKIExvYWRl
ZCBtZXNzYWdlIGZyb20gZGlmZmVyZW50IG9yaWdpbgogUEFTUzogZXhlY3V0ZWQgc2NyaXB0IGZy
b20gZGlmZmVyZW50IG9yaWdpbgorTG9hZGVkIG1lc3NhZ2UgZnJvbSBkaWZmZXJlbnQgb3JpZ2lu
CitQQVNTOiBleGVjdXRlZCBzY3JpcHQgZnJvbSBkaWZmZXJlbnQgcmVkaXJlY3Qgb3JpZ2luCiBU
ZXN0aW5nIHNpbmdsZSBhcmd1bWVudDoKIExvYWRlZCByZXNvdXJjZSAxCiBQQVNTOiBsb2FkZWQg
Zmlyc3Qgc291cmNlCmRpZmYgLS1naXQgYS9XZWJDb3JlL0NoYW5nZUxvZyBiL1dlYkNvcmUvQ2hh
bmdlTG9nCmluZGV4IGIxMTlmYTYuLmJmOGViYzMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvQ2hhbmdl
TG9nCisrKyBiL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzQgQEAKKzIwMDktMDYtMDQg
IEppYW4gTGkgIDxqaWFubGlAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yNjE5NgorICAgICAgICBGaXggdGhlIHByb2JsZW0gdGhhdCB3b3JrZXIncyBpbXBv
cnRTY3JpcHRzIGZhaWxzIGlmIHRoZSBzY3JpcHQgVVJMIGlzIHJlZGlyZWN0ZWQgZnJvbSBkaWZm
ZXJlbnQgb3JpZ2luLiBUaGUgZml4IGlzIHRvIHBhc3MgYW4gYWRkaXRpb25hbCBlbnVtIHBhcmFt
ZXRlciB0byB0aGUgbG9hZGVyIGluIG9yZGVyIHRvIHRlbGwgaXQgdG8gcGVyZm9ybSB0aGUgcmVk
aXJlY3Qgb3JpZ2luIGNoZWNrIG9yIG5vdC4KKworICAgICAgICBUZXN0OiBodHRwL3Rlc3RzL3dv
cmtlcnMvd29ya2VyLWltcG9ydFNjcmlwdHMuaHRtbAorCisgICAgICAgICogbG9hZGVyL0RvY3Vt
ZW50VGhyZWFkYWJsZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudFRocmVh
ZGFibGVMb2FkZXI6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudFRocmVhZGFi
bGVMb2FkZXI6OkRvY3VtZW50VGhyZWFkYWJsZUxvYWRlcik6CisgICAgICAgIChXZWJDb3JlOjpE
b2N1bWVudFRocmVhZGFibGVMb2FkZXI6OndpbGxTZW5kUmVxdWVzdCk6CisgICAgICAgICogbG9h
ZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5oOgorICAgICAgICAqIGxvYWRlci9UaHJlYWRh
YmxlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRocmVhZGFibGVMb2FkZXI6OmNyZWF0
ZSk6CisgICAgICAgIChXZWJDb3JlOjpUaHJlYWRhYmxlTG9hZGVyOjpsb2FkUmVzb3VyY2VTeW5j
aHJvbm91c2x5KToKKyAgICAgICAgKiBsb2FkZXIvVGhyZWFkYWJsZUxvYWRlci5oOgorICAgICAg
ICAoV2ViQ29yZTo6KToKKyAgICAgICAgKiBsb2FkZXIvV29ya2VyVGhyZWFkYWJsZUxvYWRlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJUaHJlYWRhYmxlTG9hZGVyOjpXb3JrZXJUaHJl
YWRhYmxlTG9hZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlclRocmVhZGFibGVMb2FkZXI6
OmxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHkpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyVGhy
ZWFkYWJsZUxvYWRlcjo6TWFpblRocmVhZEJyaWRnZTo6TWFpblRocmVhZEJyaWRnZSk6CisgICAg
ICAgIChXZWJDb3JlOjpXb3JrZXJUaHJlYWRhYmxlTG9hZGVyOjpNYWluVGhyZWFkQnJpZGdlOjpt
YWluVGhyZWFkQ3JlYXRlTG9hZGVyKToKKyAgICAgICAgKiBsb2FkZXIvV29ya2VyVGhyZWFkYWJs
ZUxvYWRlci5oOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyVGhyZWFkYWJsZUxvYWRlcjo6Y3Jl
YXRlKToKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtlckNvbnRleHQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6V29ya2VyQ29udGV4dDo6aW1wb3J0U2NyaXB0cyk6CisgICAgICAgICogeG1sL1hNTEh0
dHBSZXF1ZXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlhNTEh0dHBSZXF1ZXN0Ojpsb2FkUmVx
dWVzdEFzeW5jaHJvbm91c2x5KToKKwogMjAwOS0wNi0wMiAgSnVsaWVuIENoYWZmcmFpeCAgPGpj
aGFmZnJhaXhAd2Via2l0Lm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBFcmljIFNlaWRlbC4K
ZGlmZiAtLWdpdCBhL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5jcHAg
Yi9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3BwCmluZGV4IDY0M2Mw
NjcuLjFlZmE5ZGIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJs
ZUxvYWRlci5jcHAKKysrIGIvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVy
LmNwcApAQCAtNzcsMjAgKzc3LDIxIEBAIHZvaWQgRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyOjps
b2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KERvY3VtZW50KiBkb2N1bWVudCwgY29uCiAgICAgY2xp
ZW50LmRpZEZpbmlzaExvYWRpbmcoaWRlbnRpZmllcik7CiB9CiAKLVBhc3NSZWZQdHI8RG9jdW1l
bnRUaHJlYWRhYmxlTG9hZGVyPiBEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6OmNyZWF0ZShEb2N1
bWVudCogZG9jdW1lbnQsIFRocmVhZGFibGVMb2FkZXJDbGllbnQqIGNsaWVudCwgY29uc3QgUmVz
b3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBMb2FkQ2FsbGJhY2tzIGNhbGxiYWNrc1NldHRpbmcsIENv
bnRlbnRTbmlmZiBjb250ZW50U25pZmYsIFN0b3JlZENyZWRlbnRpYWxzIHN0b3JlZENyZWRlbnRp
YWxzKQorUGFzc1JlZlB0cjxEb2N1bWVudFRocmVhZGFibGVMb2FkZXI+IERvY3VtZW50VGhyZWFk
YWJsZUxvYWRlcjo6Y3JlYXRlKERvY3VtZW50KiBkb2N1bWVudCwgVGhyZWFkYWJsZUxvYWRlckNs
aWVudCogY2xpZW50LCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIExvYWRDYWxsYmFj
a3MgY2FsbGJhY2tzU2V0dGluZywgQ29udGVudFNuaWZmIGNvbnRlbnRTbmlmZiwgU3RvcmVkQ3Jl
ZGVudGlhbHMgc3RvcmVkQ3JlZGVudGlhbHMsIFJlZGlyZWN0T3JpZ2luQ2hlY2sgcmVkaXJlY3RP
cmlnaW5DaGVjaykKIHsKICAgICBBU1NFUlQoZG9jdW1lbnQpOwotICAgIFJlZlB0cjxEb2N1bWVu
dFRocmVhZGFibGVMb2FkZXI+IGxvYWRlciA9IGFkb3B0UmVmKG5ldyBEb2N1bWVudFRocmVhZGFi
bGVMb2FkZXIoZG9jdW1lbnQsIGNsaWVudCwgcmVxdWVzdCwgY2FsbGJhY2tzU2V0dGluZywgY29u
dGVudFNuaWZmLCBzdG9yZWRDcmVkZW50aWFscykpOworICAgIFJlZlB0cjxEb2N1bWVudFRocmVh
ZGFibGVMb2FkZXI+IGxvYWRlciA9IGFkb3B0UmVmKG5ldyBEb2N1bWVudFRocmVhZGFibGVMb2Fk
ZXIoZG9jdW1lbnQsIGNsaWVudCwgcmVxdWVzdCwgY2FsbGJhY2tzU2V0dGluZywgY29udGVudFNu
aWZmLCBzdG9yZWRDcmVkZW50aWFscywgcmVkaXJlY3RPcmlnaW5DaGVjaykpOwogICAgIGlmICgh
bG9hZGVyLT5tX2xvYWRlcikKICAgICAgICAgbG9hZGVyID0gMDsKICAgICByZXR1cm4gbG9hZGVy
LnJlbGVhc2UoKTsKIH0KIAotRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyOjpEb2N1bWVudFRocmVh
ZGFibGVMb2FkZXIoRG9jdW1lbnQqIGRvY3VtZW50LCBUaHJlYWRhYmxlTG9hZGVyQ2xpZW50KiBj
bGllbnQsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgTG9hZENhbGxiYWNrcyBjYWxs
YmFja3NTZXR0aW5nLCBDb250ZW50U25pZmYgY29udGVudFNuaWZmLCBTdG9yZWRDcmVkZW50aWFs
cyBzdG9yZWRDcmVkZW50aWFscykKK0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6RG9jdW1lbnRU
aHJlYWRhYmxlTG9hZGVyKERvY3VtZW50KiBkb2N1bWVudCwgVGhyZWFkYWJsZUxvYWRlckNsaWVu
dCogY2xpZW50LCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIExvYWRDYWxsYmFja3Mg
Y2FsbGJhY2tzU2V0dGluZywgQ29udGVudFNuaWZmIGNvbnRlbnRTbmlmZiwgU3RvcmVkQ3JlZGVu
dGlhbHMgc3RvcmVkQ3JlZGVudGlhbHMsIFJlZGlyZWN0T3JpZ2luQ2hlY2sgcmVkaXJlY3RPcmln
aW5DaGVjaykKICAgICA6IG1fY2xpZW50KGNsaWVudCkKICAgICAsIG1fZG9jdW1lbnQoZG9jdW1l
bnQpCiAgICAgLCBtX2FsbG93U3RvcmVkQ3JlZGVudGlhbHMoc3RvcmVkQ3JlZGVudGlhbHMgPT0g
QWxsb3dTdG9yZWRDcmVkZW50aWFscykKICAgICAsIG1fc2FtZU9yaWdpblJlcXVlc3QoZG9jdW1l
bnQtPnNlY3VyaXR5T3JpZ2luKCktPmNhblJlcXVlc3QocmVxdWVzdC51cmwoKSkpCisgICAgLCBt
X2NoZWNrUmVkaXJlY3RPcmlnaW4ocmVkaXJlY3RPcmlnaW5DaGVjayA9PSBSZXF1aXJlU2FtZVJl
ZGlyZWN0T3JpZ2luKQogewogICAgIEFTU0VSVChkb2N1bWVudCk7CiAgICAgQVNTRVJUKGNsaWVu
dCk7CkBAIC0xMjAsNyArMTIxLDcgQEAgdm9pZCBEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6Ondp
bGxTZW5kUmVxdWVzdChTdWJyZXNvdXJjZUxvYWRlciogbG9hZGVyLCBSZXNvdXIKICAgICBBU1NF
UlRfVU5VU0VEKGxvYWRlciwgbG9hZGVyID09IG1fbG9hZGVyKTsKIAogICAgIC8vIEZJWE1FOiBU
aGlzIG5lZWRzIHRvIGJlIGZpeGVkIHRvIGZvbGxvdyB0aGUgcmVkaXJlY3QgY29ycmVjdGx5IGV2
ZW4gZm9yIGNyb3NzLWRvbWFpbiByZXF1ZXN0cy4KLSAgICBpZiAoIW1fZG9jdW1lbnQtPnNlY3Vy
aXR5T3JpZ2luKCktPmNhblJlcXVlc3QocmVxdWVzdC51cmwoKSkpIHsKKyAgICBpZiAobV9jaGVj
a1JlZGlyZWN0T3JpZ2luICYmICFtX2RvY3VtZW50LT5zZWN1cml0eU9yaWdpbigpLT5jYW5SZXF1
ZXN0KHJlcXVlc3QudXJsKCkpKSB7CiAgICAgICAgIFJlZlB0cjxEb2N1bWVudFRocmVhZGFibGVM
b2FkZXI+IHByb3RlY3QodGhpcyk7CiAgICAgICAgIG1fY2xpZW50LT5kaWRGYWlsUmVkaXJlY3RD
aGVjaygpOwogICAgICAgICByZXF1ZXN0ID0gUmVzb3VyY2VSZXF1ZXN0KCk7CmRpZmYgLS1naXQg
YS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuaCBiL1dlYkNvcmUvbG9h
ZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5oCmluZGV4IGM2MTJmNzIuLjA3OWM3MjUgMTAw
NjQ0Ci0tLSBhL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5oCisrKyBi
L1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5oCkBAIC00NSw3ICs0NSw3
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBjbGFzcyBEb2N1bWVudFRocmVhZGFibGVMb2Fk
ZXIgOiBwdWJsaWMgUmVmQ291bnRlZDxEb2N1bWVudFRocmVhZGFibGVMb2FkZXI+LCBwdWJsaWMg
VGhyZWFkYWJsZUxvYWRlciwgcHJpdmF0ZSBTdWJyZXNvdXJjZUxvYWRlckNsaWVudCAgewogICAg
IHB1YmxpYzoKICAgICAgICAgc3RhdGljIHZvaWQgbG9hZFJlc291cmNlU3luY2hyb25vdXNseShE
b2N1bWVudCosIGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIFRocmVhZGFibGVMb2FkZXJDbGllbnQm
LCBTdG9yZWRDcmVkZW50aWFscyk7Ci0gICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPERvY3VtZW50
VGhyZWFkYWJsZUxvYWRlcj4gY3JlYXRlKERvY3VtZW50KiwgVGhyZWFkYWJsZUxvYWRlckNsaWVu
dCosIGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIExvYWRDYWxsYmFja3MsIENvbnRlbnRTbmlmZiwg
U3RvcmVkQ3JlZGVudGlhbHMpOworICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxEb2N1bWVudFRo
cmVhZGFibGVMb2FkZXI+IGNyZWF0ZShEb2N1bWVudCosIFRocmVhZGFibGVMb2FkZXJDbGllbnQq
LCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBMb2FkQ2FsbGJhY2tzLCBDb250ZW50U25pZmYsIFN0
b3JlZENyZWRlbnRpYWxzLCBSZWRpcmVjdE9yaWdpbkNoZWNrKTsKICAgICAgICAgdmlydHVhbCB+
RG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyKCk7CiAKICAgICAgICAgdmlydHVhbCB2b2lkIGNhbmNl
bCgpOwpAQCAtNTgsNyArNTgsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZpcnR1
YWwgdm9pZCBkZXJlZlRocmVhZGFibGVMb2FkZXIoKSB7IGRlcmVmKCk7IH0KIAogICAgIHByaXZh
dGU6Ci0gICAgICAgIERvY3VtZW50VGhyZWFkYWJsZUxvYWRlcihEb2N1bWVudCosIFRocmVhZGFi
bGVMb2FkZXJDbGllbnQqLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBMb2FkQ2FsbGJhY2tzLCBD
b250ZW50U25pZmYsIFN0b3JlZENyZWRlbnRpYWxzKTsKKyAgICAgICAgRG9jdW1lbnRUaHJlYWRh
YmxlTG9hZGVyKERvY3VtZW50KiwgVGhyZWFkYWJsZUxvYWRlckNsaWVudCosIGNvbnN0IFJlc291
cmNlUmVxdWVzdCYsIExvYWRDYWxsYmFja3MsIENvbnRlbnRTbmlmZiwgU3RvcmVkQ3JlZGVudGlh
bHMsIFJlZGlyZWN0T3JpZ2luQ2hlY2spOwogICAgICAgICB2aXJ0dWFsIHZvaWQgd2lsbFNlbmRS
ZXF1ZXN0KFN1YnJlc291cmNlTG9hZGVyKiwgUmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgUmVzb3Vy
Y2VSZXNwb25zZSYgcmVkaXJlY3RSZXNwb25zZSk7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRT
ZW5kRGF0YShTdWJyZXNvdXJjZUxvYWRlciosIHVuc2lnbmVkIGxvbmcgbG9uZyBieXRlc1NlbnQs
IHVuc2lnbmVkIGxvbmcgbG9uZyB0b3RhbEJ5dGVzVG9CZVNlbnQpOwogCkBAIC03Niw2ICs3Niw3
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgRG9jdW1lbnQqIG1fZG9jdW1lbnQ7CiAg
ICAgICAgIGJvb2wgbV9hbGxvd1N0b3JlZENyZWRlbnRpYWxzOwogICAgICAgICBib29sIG1fc2Ft
ZU9yaWdpblJlcXVlc3Q7CisgICAgICAgIGJvb2wgbV9jaGVja1JlZGlyZWN0T3JpZ2luOwogICAg
IH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1dlYkNvcmUvbG9hZGVy
L1RocmVhZGFibGVMb2FkZXIuY3BwIGIvV2ViQ29yZS9sb2FkZXIvVGhyZWFkYWJsZUxvYWRlci5j
cHAKaW5kZXggMzkyNzYyNC4uN2I5YzZjNiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9sb2FkZXIvVGhy
ZWFkYWJsZUxvYWRlci5jcHAKKysrIGIvV2ViQ29yZS9sb2FkZXIvVGhyZWFkYWJsZUxvYWRlci5j
cHAKQEAgLTQwLDE4ICs0MCwxOCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVBhc3NSZWZQ
dHI8VGhyZWFkYWJsZUxvYWRlcj4gVGhyZWFkYWJsZUxvYWRlcjo6Y3JlYXRlKFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqIGNvbnRleHQsIFRocmVhZGFibGVMb2FkZXJDbGllbnQqIGNsaWVudCwgY29u
c3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBMb2FkQ2FsbGJhY2tzIGNhbGxiYWNrc1NldHRp
bmcsIENvbnRlbnRTbmlmZiBjb250ZW50U25pZmYsIFN0b3JlZENyZWRlbnRpYWxzIHN0b3JlZENy
ZWRlbnRpYWxzKSAKK1Bhc3NSZWZQdHI8VGhyZWFkYWJsZUxvYWRlcj4gVGhyZWFkYWJsZUxvYWRl
cjo6Y3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFRocmVhZGFibGVMb2Fk
ZXJDbGllbnQqIGNsaWVudCwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBMb2FkQ2Fs
bGJhY2tzIGNhbGxiYWNrc1NldHRpbmcsIENvbnRlbnRTbmlmZiBjb250ZW50U25pZmYsIFN0b3Jl
ZENyZWRlbnRpYWxzIHN0b3JlZENyZWRlbnRpYWxzLCBSZWRpcmVjdE9yaWdpbkNoZWNrIHJlZGly
ZWN0T3JpZ2luQ2hlY2spIAogewogICAgIEFTU0VSVChjbGllbnQpOwogICAgIEFTU0VSVChjb250
ZXh0KTsKIAogI2lmIEVOQUJMRShXT1JLRVJTKQogICAgIGlmIChjb250ZXh0LT5pc1dvcmtlckNv
bnRleHQoKSkKLSAgICAgICAgcmV0dXJuIFdvcmtlclRocmVhZGFibGVMb2FkZXI6OmNyZWF0ZShz
dGF0aWNfY2FzdDxXb3JrZXJDb250ZXh0Kj4oY29udGV4dCksIGNsaWVudCwgV29ya2VyUnVuTG9v
cDo6ZGVmYXVsdE1vZGUoKSwgcmVxdWVzdCwgY2FsbGJhY2tzU2V0dGluZywgY29udGVudFNuaWZm
LCBzdG9yZWRDcmVkZW50aWFscyk7CisgICAgICAgIHJldHVybiBXb3JrZXJUaHJlYWRhYmxlTG9h
ZGVyOjpjcmVhdGUoc3RhdGljX2Nhc3Q8V29ya2VyQ29udGV4dCo+KGNvbnRleHQpLCBjbGllbnQs
IFdvcmtlclJ1bkxvb3A6OmRlZmF1bHRNb2RlKCksIHJlcXVlc3QsIGNhbGxiYWNrc1NldHRpbmcs
IGNvbnRlbnRTbmlmZiwgc3RvcmVkQ3JlZGVudGlhbHMsIHJlZGlyZWN0T3JpZ2luQ2hlY2spOwog
I2VuZGlmIC8vIEVOQUJMRShXT1JLRVJTKQogCiAgICAgQVNTRVJUKGNvbnRleHQtPmlzRG9jdW1l
bnQoKSk7Ci0gICAgcmV0dXJuIERvY3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6Y3JlYXRlKHN0YXRp
Y19jYXN0PERvY3VtZW50Kj4oY29udGV4dCksIGNsaWVudCwgcmVxdWVzdCwgY2FsbGJhY2tzU2V0
dGluZywgY29udGVudFNuaWZmLCBzdG9yZWRDcmVkZW50aWFscyk7CisgICAgcmV0dXJuIERvY3Vt
ZW50VGhyZWFkYWJsZUxvYWRlcjo6Y3JlYXRlKHN0YXRpY19jYXN0PERvY3VtZW50Kj4oY29udGV4
dCksIGNsaWVudCwgcmVxdWVzdCwgY2FsbGJhY2tzU2V0dGluZywgY29udGVudFNuaWZmLCBzdG9y
ZWRDcmVkZW50aWFscywgcmVkaXJlY3RPcmlnaW5DaGVjayk7CiB9CiAKIHZvaWQgVGhyZWFkYWJs
ZUxvYWRlcjo6bG9hZFJlc291cmNlU3luY2hyb25vdXNseShTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiBjb250ZXh0LCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIFRocmVhZGFibGVMb2Fk
ZXJDbGllbnQmIGNsaWVudCwgU3RvcmVkQ3JlZGVudGlhbHMgc3RvcmVkQ3JlZGVudGlhbHMpCkBA
IC02MCw3ICs2MCw3IEBAIHZvaWQgVGhyZWFkYWJsZUxvYWRlcjo6bG9hZFJlc291cmNlU3luY2hy
b25vdXNseShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0CiAKICNpZiBFTkFCTEUoV09S
S0VSUykKICAgICBpZiAoY29udGV4dC0+aXNXb3JrZXJDb250ZXh0KCkpIHsKLSAgICAgICAgV29y
a2VyVGhyZWFkYWJsZUxvYWRlcjo6bG9hZFJlc291cmNlU3luY2hyb25vdXNseShzdGF0aWNfY2Fz
dDxXb3JrZXJDb250ZXh0Kj4oY29udGV4dCksIHJlcXVlc3QsIGNsaWVudCwgc3RvcmVkQ3JlZGVu
dGlhbHMpOworICAgICAgICBXb3JrZXJUaHJlYWRhYmxlTG9hZGVyOjpsb2FkUmVzb3VyY2VTeW5j
aHJvbm91c2x5KHN0YXRpY19jYXN0PFdvcmtlckNvbnRleHQqPihjb250ZXh0KSwgcmVxdWVzdCwg
Y2xpZW50LCBzdG9yZWRDcmVkZW50aWFscywgUmVxdWlyZVNhbWVSZWRpcmVjdE9yaWdpbik7CiAg
ICAgICAgIHJldHVybjsKICAgICB9CiAjZW5kaWYgLy8gRU5BQkxFKFdPUktFUlMpCmRpZmYgLS1n
aXQgYS9XZWJDb3JlL2xvYWRlci9UaHJlYWRhYmxlTG9hZGVyLmggYi9XZWJDb3JlL2xvYWRlci9U
aHJlYWRhYmxlTG9hZGVyLmgKaW5kZXggYjBjZmY3ZC4uMGE0YzRlMyAxMDA2NDQKLS0tIGEvV2Vi
Q29yZS9sb2FkZXIvVGhyZWFkYWJsZUxvYWRlci5oCisrKyBiL1dlYkNvcmUvbG9hZGVyL1RocmVh
ZGFibGVMb2FkZXIuaApAQCAtNTgsMTIgKzU4LDE3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAg
ICAgICAgRG9Ob3RBbGxvd1N0b3JlZENyZWRlbnRpYWxzCiAgICAgfTsKIAorICAgIGVudW0gUmVk
aXJlY3RPcmlnaW5DaGVjayB7CisgICAgICAgIFJlcXVpcmVTYW1lUmVkaXJlY3RPcmlnaW4sCisg
ICAgICAgIEFsbG93RGlmZmVyZW50UmVkaXJlY3RPcmlnaW4KKyAgICB9OworCiAgICAgLy8gVXNl
ZnVsIGZvciBkb2luZyBsb2FkZXIgb3BlcmF0aW9ucyBmcm9tIGFueSB0aHJlYWQgKG5vdCB0aHJl
YWRzYWZlLCAKICAgICAvLyBqdXN0IGFibGUgdG8gcnVuIG9uIHRocmVhZHMgb3RoZXIgdGhhbiB0
aGUgbWFpbiB0aHJlYWQpLgogICAgIGNsYXNzIFRocmVhZGFibGVMb2FkZXIgOiBOb25jb3B5YWJs
ZSB7CiAgICAgcHVibGljOgogICAgICAgICBzdGF0aWMgdm9pZCBsb2FkUmVzb3VyY2VTeW5jaHJv
bm91c2x5KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBU
aHJlYWRhYmxlTG9hZGVyQ2xpZW50JiwgU3RvcmVkQ3JlZGVudGlhbHMpOwotICAgICAgICBzdGF0
aWMgUGFzc1JlZlB0cjxUaHJlYWRhYmxlTG9hZGVyPiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCosIFRocmVhZGFibGVMb2FkZXJDbGllbnQqLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBM
b2FkQ2FsbGJhY2tzLCBDb250ZW50U25pZmYsIFN0b3JlZENyZWRlbnRpYWxzKTsKKyAgICAgICAg
c3RhdGljIFBhc3NSZWZQdHI8VGhyZWFkYWJsZUxvYWRlcj4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqLCBUaHJlYWRhYmxlTG9hZGVyQ2xpZW50KiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0
JiwgTG9hZENhbGxiYWNrcywgQ29udGVudFNuaWZmLCBTdG9yZWRDcmVkZW50aWFscywgUmVkaXJl
Y3RPcmlnaW5DaGVjayk7CiAKICAgICAgICAgdmlydHVhbCB2b2lkIGNhbmNlbCgpID0gMDsKICAg
ICAgICAgdm9pZCByZWYoKSB7IHJlZlRocmVhZGFibGVMb2FkZXIoKTsgfQpkaWZmIC0tZ2l0IGEv
V2ViQ29yZS9sb2FkZXIvV29ya2VyVGhyZWFkYWJsZUxvYWRlci5jcHAgYi9XZWJDb3JlL2xvYWRl
ci9Xb3JrZXJUaHJlYWRhYmxlTG9hZGVyLmNwcAppbmRleCBiZWFmMDYxLi5jYmRhY2YyIDEwMDY0
NAotLS0gYS9XZWJDb3JlL2xvYWRlci9Xb3JrZXJUaHJlYWRhYmxlTG9hZGVyLmNwcAorKysgYi9X
ZWJDb3JlL2xvYWRlci9Xb3JrZXJUaHJlYWRhYmxlTG9hZGVyLmNwcApAQCAtNTUsMTEgKzU1LDEx
IEBAIHN0YXRpYyBjb25zdCBjaGFyIGxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHlNb2RlW10gPSAi
bG9hZFJlc291cmNlU3luY2hyb25vdXNseU1vCiAKIC8vIEZJWE1FOiBUaGUgYXNzdW1wdGlvbiB0
aGF0IHdlIGNhbiB1cGNhc3Qgd29ya2VyIG9iamVjdCBwcm94eSB0byBXb3JrZXJNZXNzYWdpbmdQ
cm94eSB3aWxsIG5vdCBiZSB0cnVlIGluIG11bHRpLXByb2Nlc3MgaW1wbGVtZW50YXRpb24uCiBX
b3JrZXJUaHJlYWRhYmxlTG9hZGVyOjpXb3JrZXJUaHJlYWRhYmxlTG9hZGVyKFdvcmtlckNvbnRl
eHQqIHdvcmtlckNvbnRleHQsIFRocmVhZGFibGVMb2FkZXJDbGllbnQqIGNsaWVudCwgY29uc3Qg
U3RyaW5nJiB0YXNrTW9kZSwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBMb2FkQ2Fs
bGJhY2tzIGNhbGxiYWNrc1NldHRpbmcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIENvbnRlbnRTbmlmZiBjb250ZW50U25pZmYsIFN0b3JlZENyZWRlbnRp
YWxzIHN0b3JlZENyZWRlbnRpYWxzKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBDb250ZW50U25pZmYgY29udGVudFNuaWZmLCBTdG9yZWRDcmVkZW50aWFs
cyBzdG9yZWRDcmVkZW50aWFscywgUmVkaXJlY3RPcmlnaW5DaGVjayByZWRpcmVjdE9yaWdpbkNo
ZWNrKQogICAgIDogbV93b3JrZXJDb250ZXh0KHdvcmtlckNvbnRleHQpCiAgICAgLCBtX3dvcmtl
ckNsaWVudFdyYXBwZXIoVGhyZWFkYWJsZUxvYWRlckNsaWVudFdyYXBwZXI6OmNyZWF0ZShjbGll
bnQpKQogICAgICwgbV9icmlkZ2UoKihuZXcgTWFpblRocmVhZEJyaWRnZShtX3dvcmtlckNsaWVu
dFdyYXBwZXIsICooc3RhdGljX2Nhc3Q8V29ya2VyTWVzc2FnaW5nUHJveHkqPihtX3dvcmtlckNv
bnRleHQtPnRocmVhZCgpLT53b3JrZXJPYmplY3RQcm94eSgpKSksIHRhc2tNb2RlLCByZXF1ZXN0
LCBjYWxsYmFja3NTZXR0aW5nLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb250ZW50U25pZmYsIHN0b3JlZENyZWRlbnRpYWxzKSkpCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnRlbnRTbmlmZiwgc3RvcmVkQ3JlZGVudGlhbHMsIHJlZGly
ZWN0T3JpZ2luQ2hlY2spKSkKIHsKIH0KIApAQCAtNjgsNyArNjgsNyBAQCBXb3JrZXJUaHJlYWRh
YmxlTG9hZGVyOjp+V29ya2VyVGhyZWFkYWJsZUxvYWRlcigpCiAgICAgbV9icmlkZ2UuZGVzdHJv
eSgpOwogfQogCi12b2lkIFdvcmtlclRocmVhZGFibGVMb2FkZXI6OmxvYWRSZXNvdXJjZVN5bmNo
cm9ub3VzbHkoV29ya2VyQ29udGV4dCogd29ya2VyQ29udGV4dCwgY29uc3QgUmVzb3VyY2VSZXF1
ZXN0JiByZXF1ZXN0LCBUaHJlYWRhYmxlTG9hZGVyQ2xpZW50JiBjbGllbnQsIFN0b3JlZENyZWRl
bnRpYWxzIHN0b3JlZENyZWRlbnRpYWxzKQordm9pZCBXb3JrZXJUaHJlYWRhYmxlTG9hZGVyOjps
b2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KFdvcmtlckNvbnRleHQqIHdvcmtlckNvbnRleHQsIGNv
bnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgVGhyZWFkYWJsZUxvYWRlckNsaWVudCYgY2xp
ZW50LCBTdG9yZWRDcmVkZW50aWFscyBzdG9yZWRDcmVkZW50aWFscywgUmVkaXJlY3RPcmlnaW5D
aGVjayByZWRpcmVjdE9yaWdpbkNoZWNrKQogewogICAgIFdvcmtlclJ1bkxvb3AmIHJ1bkxvb3Ag
PSB3b3JrZXJDb250ZXh0LT50aHJlYWQoKS0+cnVuTG9vcCgpOwogCkBAIC03Nyw3ICs3Nyw3IEBA
IHZvaWQgV29ya2VyVGhyZWFkYWJsZUxvYWRlcjo6bG9hZFJlc291cmNlU3luY2hyb25vdXNseShX
b3JrZXJDb250ZXh0KiB3b3JrZXJDb250CiAgICAgbW9kZS5hcHBlbmQoU3RyaW5nOjpudW1iZXIo
cnVuTG9vcC5jcmVhdGVVbmlxdWVJZCgpKSk7CiAKICAgICBDb250ZW50U25pZmYgY29udGVudFNu
aWZmID0gcmVxdWVzdC51cmwoKS5pc0xvY2FsRmlsZSgpID8gU25pZmZDb250ZW50IDogRG9Ob3RT
bmlmZkNvbnRlbnQ7Ci0gICAgUmVmUHRyPFdvcmtlclRocmVhZGFibGVMb2FkZXI+IGxvYWRlciA9
IFdvcmtlclRocmVhZGFibGVMb2FkZXI6OmNyZWF0ZSh3b3JrZXJDb250ZXh0LCAmY2xpZW50LCBt
b2RlLCByZXF1ZXN0LCBEb05vdFNlbmRMb2FkQ2FsbGJhY2tzLCBjb250ZW50U25pZmYsIHN0b3Jl
ZENyZWRlbnRpYWxzKTsKKyAgICBSZWZQdHI8V29ya2VyVGhyZWFkYWJsZUxvYWRlcj4gbG9hZGVy
ID0gV29ya2VyVGhyZWFkYWJsZUxvYWRlcjo6Y3JlYXRlKHdvcmtlckNvbnRleHQsICZjbGllbnQs
IG1vZGUsIHJlcXVlc3QsIERvTm90U2VuZExvYWRDYWxsYmFja3MsIGNvbnRlbnRTbmlmZiwgc3Rv
cmVkQ3JlZGVudGlhbHMsIHJlZGlyZWN0T3JpZ2luQ2hlY2spOwogCiAgICAgTWVzc2FnZVF1ZXVl
V2FpdFJlc3VsdCByZXN1bHQgPSBNZXNzYWdlUXVldWVNZXNzYWdlUmVjZWl2ZWQ7CiAgICAgd2hp
bGUgKCFsb2FkZXItPmRvbmUoKSAmJiByZXN1bHQgIT0gTWVzc2FnZVF1ZXVlVGVybWluYXRlZCkK
QEAgLTkzLDIwICs5MywyMSBAQCB2b2lkIFdvcmtlclRocmVhZGFibGVMb2FkZXI6OmNhbmNlbCgp
CiB9CiAKIFdvcmtlclRocmVhZGFibGVMb2FkZXI6Ok1haW5UaHJlYWRCcmlkZ2U6Ok1haW5UaHJl
YWRCcmlkZ2UoUGFzc1JlZlB0cjxUaHJlYWRhYmxlTG9hZGVyQ2xpZW50V3JhcHBlcj4gd29ya2Vy
Q2xpZW50V3JhcHBlciwgV29ya2VyTWVzc2FnaW5nUHJveHkmIG1lc3NhZ2luZ1Byb3h5LCBjb25z
dCBTdHJpbmcmIHRhc2tNb2RlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIExv
YWRDYWxsYmFja3MgY2FsbGJhY2tzU2V0dGluZywgQ29udGVudFNuaWZmIGNvbnRlbnRTbmlmZiwg
U3RvcmVkQ3JlZGVudGlhbHMgc3RvcmVkQ3JlZGVudGlhbHMpCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFJlc291cmNlUmVx
dWVzdCYgcmVxdWVzdCwgTG9hZENhbGxiYWNrcyBjYWxsYmFja3NTZXR0aW5nLCBDb250ZW50U25p
ZmYgY29udGVudFNuaWZmLCBTdG9yZWRDcmVkZW50aWFscyBzdG9yZWRDcmVkZW50aWFscywKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
UmVkaXJlY3RPcmlnaW5DaGVjayByZWRpcmVjdE9yaWdpbkNoZWNrKQogICAgIDogbV93b3JrZXJD
bGllbnRXcmFwcGVyKHdvcmtlckNsaWVudFdyYXBwZXIpCiAgICAgLCBtX21lc3NhZ2luZ1Byb3h5
KG1lc3NhZ2luZ1Byb3h5KQogICAgICwgbV90YXNrTW9kZSh0YXNrTW9kZS5jb3B5KCkpCiB7CiAg
ICAgQVNTRVJUKG1fd29ya2VyQ2xpZW50V3JhcHBlci5nZXQoKSk7Ci0gICAgbV9tZXNzYWdpbmdQ
cm94eS5wb3N0VGFza1RvV29ya2VyT2JqZWN0KGNyZWF0ZUNhbGxiYWNrVGFzaygmTWFpblRocmVh
ZEJyaWRnZTo6bWFpblRocmVhZENyZWF0ZUxvYWRlciwgdGhpcywgcmVxdWVzdCwgY2FsbGJhY2tz
U2V0dGluZywgY29udGVudFNuaWZmLCBzdG9yZWRDcmVkZW50aWFscykpOworICAgIG1fbWVzc2Fn
aW5nUHJveHkucG9zdFRhc2tUb1dvcmtlck9iamVjdChjcmVhdGVDYWxsYmFja1Rhc2soJk1haW5U
aHJlYWRCcmlkZ2U6Om1haW5UaHJlYWRDcmVhdGVMb2FkZXIsIHRoaXMsIHJlcXVlc3QsIGNhbGxi
YWNrc1NldHRpbmcsIGNvbnRlbnRTbmlmZiwgc3RvcmVkQ3JlZGVudGlhbHMsIHJlZGlyZWN0T3Jp
Z2luQ2hlY2spKTsKIH0KIAogV29ya2VyVGhyZWFkYWJsZUxvYWRlcjo6TWFpblRocmVhZEJyaWRn
ZTo6fk1haW5UaHJlYWRCcmlkZ2UoKQogewogfQogCi12b2lkIFdvcmtlclRocmVhZGFibGVMb2Fk
ZXI6Ok1haW5UaHJlYWRCcmlkZ2U6Om1haW5UaHJlYWRDcmVhdGVMb2FkZXIoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCogY29udGV4dCwgTWFpblRocmVhZEJyaWRnZSogdGhpc1B0ciwgYXV0b19wdHI8
Q3Jvc3NUaHJlYWRSZXNvdXJjZVJlcXVlc3REYXRhPiByZXF1ZXN0RGF0YSwgTG9hZENhbGxiYWNr
cyBjYWxsYmFja3NTZXR0aW5nLCBDb250ZW50U25pZmYgY29udGVudFNuaWZmLCBTdG9yZWRDcmVk
ZW50aWFscyBzdG9yZWRDcmVkZW50aWFscykKK3ZvaWQgV29ya2VyVGhyZWFkYWJsZUxvYWRlcjo6
TWFpblRocmVhZEJyaWRnZTo6bWFpblRocmVhZENyZWF0ZUxvYWRlcihTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiBjb250ZXh0LCBNYWluVGhyZWFkQnJpZGdlKiB0aGlzUHRyLCBhdXRvX3B0cjxDcm9z
c1RocmVhZFJlc291cmNlUmVxdWVzdERhdGE+IHJlcXVlc3REYXRhLCBMb2FkQ2FsbGJhY2tzIGNh
bGxiYWNrc1NldHRpbmcsIENvbnRlbnRTbmlmZiBjb250ZW50U25pZmYsIFN0b3JlZENyZWRlbnRp
YWxzIHN0b3JlZENyZWRlbnRpYWxzLCBSZWRpcmVjdE9yaWdpbkNoZWNrIHJlZGlyZWN0T3JpZ2lu
Q2hlY2spCiB7CiAgICAgLy8gRklYTUU6IFRoaXMgYXNzZXJ0IGZhaWxzIGZvciBuZXN0ZWQgd29y
a2Vycy4gIFJlbW92aW5nIHRoZSBhc3NlcnQgd291bGQgYWxsb3cgaXQgdG8gd29yaywKICAgICAv
LyBidXQgdGhlbiB0aGVyZSB3b3VsZCBiZSBvbmUgV29ya2VyVGhyZWFkYWJsZUxvYWRlciBpbiBl
dmVyeSBpbnRlcm1lZGlhdGUgd29ya2VyIHNpbXBseQpAQCAtMTI1LDcgKzEyNiw3IEBAIHZvaWQg
V29ya2VyVGhyZWFkYWJsZUxvYWRlcjo6TWFpblRocmVhZEJyaWRnZTo6bWFpblRocmVhZENyZWF0
ZUxvYWRlcihTY3JpcHRFeGVjCiAgICAgLy8gRklYTUU6IElmIHRoZSBhIHNpdGUgcmVxdWVzdHMg
YSBsb2NhbCByZXNvdXJjZSwgdGhlbiB0aGlzIHdpbGwgcmV0dXJuIGEgbm9uLXplcm8gdmFsdWUg
YnV0IHRoZSBzeW5jIHBhdGgKICAgICAvLyB3aWxsIHJldHVybiBhIDAgdmFsdWUuICBFaXRoZXIg
dGhpcyBzaG91bGQgcmV0dXJuIDAgb3IgdGhlIG90aGVyIGNvZGUgcGF0aCBzaG91bGQgZG8gYSBj
YWxsYmFjayB3aXRoCiAgICAgLy8gYSBmYWlsdXJlLgotICAgIHRoaXNQdHItPm1fbWFpblRocmVh
ZExvYWRlciA9IFRocmVhZGFibGVMb2FkZXI6OmNyZWF0ZShjb250ZXh0LCB0aGlzUHRyLCAqcmVx
dWVzdCwgY2FsbGJhY2tzU2V0dGluZywgY29udGVudFNuaWZmLCBzdG9yZWRDcmVkZW50aWFscyk7
CisgICAgdGhpc1B0ci0+bV9tYWluVGhyZWFkTG9hZGVyID0gVGhyZWFkYWJsZUxvYWRlcjo6Y3Jl
YXRlKGNvbnRleHQsIHRoaXNQdHIsICpyZXF1ZXN0LCBjYWxsYmFja3NTZXR0aW5nLCBjb250ZW50
U25pZmYsIHN0b3JlZENyZWRlbnRpYWxzLCByZWRpcmVjdE9yaWdpbkNoZWNrKTsKICAgICBBU1NF
UlQodGhpc1B0ci0+bV9tYWluVGhyZWFkTG9hZGVyKTsKIH0KIApkaWZmIC0tZ2l0IGEvV2ViQ29y
ZS9sb2FkZXIvV29ya2VyVGhyZWFkYWJsZUxvYWRlci5oIGIvV2ViQ29yZS9sb2FkZXIvV29ya2Vy
VGhyZWFkYWJsZUxvYWRlci5oCmluZGV4IDk4MTdmZWEuLjJiNmE2ODkgMTAwNjQ0Ci0tLSBhL1dl
YkNvcmUvbG9hZGVyL1dvcmtlclRocmVhZGFibGVMb2FkZXIuaAorKysgYi9XZWJDb3JlL2xvYWRl
ci9Xb3JrZXJUaHJlYWRhYmxlTG9hZGVyLmgKQEAgLTU1LDEwICs1NSwxMCBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKICAgICBjbGFzcyBXb3JrZXJUaHJlYWRhYmxlTG9hZGVyIDogcHVibGljIFJl
ZkNvdW50ZWQ8V29ya2VyVGhyZWFkYWJsZUxvYWRlcj4sIHB1YmxpYyBUaHJlYWRhYmxlTG9hZGVy
IHsKICAgICBwdWJsaWM6Ci0gICAgICAgIHN0YXRpYyB2b2lkIGxvYWRSZXNvdXJjZVN5bmNocm9u
b3VzbHkoV29ya2VyQ29udGV4dCosIGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIFRocmVhZGFibGVM
b2FkZXJDbGllbnQmLCBTdG9yZWRDcmVkZW50aWFscyk7Ci0gICAgICAgIHN0YXRpYyBQYXNzUmVm
UHRyPFdvcmtlclRocmVhZGFibGVMb2FkZXI+IGNyZWF0ZShXb3JrZXJDb250ZXh0KiB3b3JrZXJD
b250ZXh0LCBUaHJlYWRhYmxlTG9hZGVyQ2xpZW50KiBjbGllbnQsIGNvbnN0IFN0cmluZyYgdGFz
a01vZGUsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgTG9hZENhbGxiYWNrcyBjYWxs
YmFja3NTZXR0aW5nLCBDb250ZW50U25pZmYgY29udGVudFNuaWZmLCBTdG9yZWRDcmVkZW50aWFs
cyBzdG9yZWRDcmVkZW50aWFscykKKyAgICAgICAgc3RhdGljIHZvaWQgbG9hZFJlc291cmNlU3lu
Y2hyb25vdXNseShXb3JrZXJDb250ZXh0KiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgVGhyZWFk
YWJsZUxvYWRlckNsaWVudCYsIFN0b3JlZENyZWRlbnRpYWxzLCBSZWRpcmVjdE9yaWdpbkNoZWNr
KTsKKyAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8V29ya2VyVGhyZWFkYWJsZUxvYWRlcj4gY3Jl
YXRlKFdvcmtlckNvbnRleHQqIHdvcmtlckNvbnRleHQsIFRocmVhZGFibGVMb2FkZXJDbGllbnQq
IGNsaWVudCwgY29uc3QgU3RyaW5nJiB0YXNrTW9kZSwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiBy
ZXF1ZXN0LCBMb2FkQ2FsbGJhY2tzIGNhbGxiYWNrc1NldHRpbmcsIENvbnRlbnRTbmlmZiBjb250
ZW50U25pZmYsIFN0b3JlZENyZWRlbnRpYWxzIHN0b3JlZENyZWRlbnRpYWxzLCBSZWRpcmVjdE9y
aWdpbkNoZWNrIHJlZGlyZWN0T3JpZ2luQ2hlY2spCiAgICAgICAgIHsKLSAgICAgICAgICAgIHJl
dHVybiBhZG9wdFJlZihuZXcgV29ya2VyVGhyZWFkYWJsZUxvYWRlcih3b3JrZXJDb250ZXh0LCBj
bGllbnQsIHRhc2tNb2RlLCByZXF1ZXN0LCBjYWxsYmFja3NTZXR0aW5nLCBjb250ZW50U25pZmYs
IHN0b3JlZENyZWRlbnRpYWxzKSk7CisgICAgICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFdv
cmtlclRocmVhZGFibGVMb2FkZXIod29ya2VyQ29udGV4dCwgY2xpZW50LCB0YXNrTW9kZSwgcmVx
dWVzdCwgY2FsbGJhY2tzU2V0dGluZywgY29udGVudFNuaWZmLCBzdG9yZWRDcmVkZW50aWFscywg
cmVkaXJlY3RPcmlnaW5DaGVjaykpOwogICAgICAgICB9CiAKICAgICAgICAgfldvcmtlclRocmVh
ZGFibGVMb2FkZXIoKTsKQEAgLTk3LDcgKzk3LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAg
ICAgICBjbGFzcyBNYWluVGhyZWFkQnJpZGdlIDogVGhyZWFkYWJsZUxvYWRlckNsaWVudCB7CiAg
ICAgICAgIHB1YmxpYzoKICAgICAgICAgICAgIC8vIEFsbCBleGVjdXRlZCBvbiB0aGUgd29ya2Vy
IGNvbnRleHQncyB0aHJlYWQuCi0gICAgICAgICAgICBNYWluVGhyZWFkQnJpZGdlKFBhc3NSZWZQ
dHI8VGhyZWFkYWJsZUxvYWRlckNsaWVudFdyYXBwZXI+LCBXb3JrZXJNZXNzYWdpbmdQcm94eSYs
IGNvbnN0IFN0cmluZyYgdGFza01vZGUsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIExvYWRDYWxs
YmFja3MsIENvbnRlbnRTbmlmZiwgU3RvcmVkQ3JlZGVudGlhbHMpOworICAgICAgICAgICAgTWFp
blRocmVhZEJyaWRnZShQYXNzUmVmUHRyPFRocmVhZGFibGVMb2FkZXJDbGllbnRXcmFwcGVyPiwg
V29ya2VyTWVzc2FnaW5nUHJveHkmLCBjb25zdCBTdHJpbmcmIHRhc2tNb2RlLCBjb25zdCBSZXNv
dXJjZVJlcXVlc3QmLCBMb2FkQ2FsbGJhY2tzLCBDb250ZW50U25pZmYsIFN0b3JlZENyZWRlbnRp
YWxzLCBSZWRpcmVjdE9yaWdpbkNoZWNrKTsKICAgICAgICAgICAgIHZvaWQgY2FuY2VsKCk7CiAg
ICAgICAgICAgICB2b2lkIGRlc3Ryb3koKTsKIApAQCAtMTA5LDcgKzEwOSw3IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKICAgICAgICAgICAgIHN0YXRpYyB2b2lkIG1haW5UaHJlYWREZXN0cm95KFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBNYWluVGhyZWFkQnJpZGdlKik7CiAgICAgICAgICAgICB+
TWFpblRocmVhZEJyaWRnZSgpOwogCi0gICAgICAgICAgICBzdGF0aWMgdm9pZCBtYWluVGhyZWFk
Q3JlYXRlTG9hZGVyKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBNYWluVGhyZWFkQnJpZGdlKiwg
c3RkOjphdXRvX3B0cjxDcm9zc1RocmVhZFJlc291cmNlUmVxdWVzdERhdGE+LCBMb2FkQ2FsbGJh
Y2tzLCBDb250ZW50U25pZmYsIFN0b3JlZENyZWRlbnRpYWxzKTsKKyAgICAgICAgICAgIHN0YXRp
YyB2b2lkIG1haW5UaHJlYWRDcmVhdGVMb2FkZXIoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIE1h
aW5UaHJlYWRCcmlkZ2UqLCBzdGQ6OmF1dG9fcHRyPENyb3NzVGhyZWFkUmVzb3VyY2VSZXF1ZXN0
RGF0YT4sIExvYWRDYWxsYmFja3MsIENvbnRlbnRTbmlmZiwgU3RvcmVkQ3JlZGVudGlhbHMsIFJl
ZGlyZWN0T3JpZ2luQ2hlY2spOwogICAgICAgICAgICAgc3RhdGljIHZvaWQgbWFpblRocmVhZENh
bmNlbChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgTWFpblRocmVhZEJyaWRnZSopOwogICAgICAg
ICAgICAgdmlydHVhbCB2b2lkIGRpZFNlbmREYXRhKHVuc2lnbmVkIGxvbmcgbG9uZyBieXRlc1Nl
bnQsIHVuc2lnbmVkIGxvbmcgbG9uZyB0b3RhbEJ5dGVzVG9CZVNlbnQpOwogICAgICAgICAgICAg
dmlydHVhbCB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7
CkBAIC0xMzMsNyArMTMzLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICAgICAgU3Ry
aW5nIG1fdGFza01vZGU7CiAgICAgICAgIH07CiAKLSAgICAgICAgV29ya2VyVGhyZWFkYWJsZUxv
YWRlcihXb3JrZXJDb250ZXh0KiwgVGhyZWFkYWJsZUxvYWRlckNsaWVudCosIGNvbnN0IFN0cmlu
ZyYgdGFza01vZGUsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIExvYWRDYWxsYmFja3MsIENvbnRl
bnRTbmlmZiwgU3RvcmVkQ3JlZGVudGlhbHMpOworICAgICAgICBXb3JrZXJUaHJlYWRhYmxlTG9h
ZGVyKFdvcmtlckNvbnRleHQqLCBUaHJlYWRhYmxlTG9hZGVyQ2xpZW50KiwgY29uc3QgU3RyaW5n
JiB0YXNrTW9kZSwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgTG9hZENhbGxiYWNrcywgQ29udGVu
dFNuaWZmLCBTdG9yZWRDcmVkZW50aWFscywgUmVkaXJlY3RPcmlnaW5DaGVjayk7CiAKICAgICAg
ICAgUmVmUHRyPFdvcmtlckNvbnRleHQ+IG1fd29ya2VyQ29udGV4dDsKICAgICAgICAgUmVmUHRy
PFRocmVhZGFibGVMb2FkZXJDbGllbnRXcmFwcGVyPiBtX3dvcmtlckNsaWVudFdyYXBwZXI7CmRp
ZmYgLS1naXQgYS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyQ29udGV4dC5jcHAgYi9XZWJDb3JlL3dv
cmtlcnMvV29ya2VyQ29udGV4dC5jcHAKaW5kZXggNTkxNjhjNy4uOTA0OTU2MCAxMDA2NDQKLS0t
IGEvV2ViQ29yZS93b3JrZXJzL1dvcmtlckNvbnRleHQuY3BwCisrKyBiL1dlYkNvcmUvd29ya2Vy
cy9Xb3JrZXJDb250ZXh0LmNwcApAQCAtNDIsMTIgKzQyLDEyIEBACiAjaW5jbHVkZSAiU2NyaXB0
U291cmNlQ29kZS5oIgogI2luY2x1ZGUgIlNjcmlwdFZhbHVlLmgiCiAjaW5jbHVkZSAiU2VjdXJp
dHlPcmlnaW4uaCIKLSNpbmNsdWRlICJUaHJlYWRhYmxlTG9hZGVyLmgiCiAjaW5jbHVkZSAiV29y
a2VySW1wb3J0U2NyaXB0c0NsaWVudC5oIgogI2luY2x1ZGUgIldvcmtlckxvY2F0aW9uLmgiCiAj
aW5jbHVkZSAiV29ya2VyTmF2aWdhdG9yLmgiCiAjaW5jbHVkZSAiV29ya2VyT2JqZWN0UHJveHku
aCIKICNpbmNsdWRlICJXb3JrZXJUaHJlYWQuaCIKKyNpbmNsdWRlICJXb3JrZXJUaHJlYWRhYmxl
TG9hZGVyLmgiCiAjaW5jbHVkZSAiWE1MSHR0cFJlcXVlc3RFeGNlcHRpb24uaCIKICNpbmNsdWRl
IDx3dGYvUmVmUHRyLmg+CiAKQEAgLTI3OCw3ICsyNzgsNyBAQCB2b2lkIFdvcmtlckNvbnRleHQ6
OmltcG9ydFNjcmlwdHMoY29uc3QgVmVjdG9yPFN0cmluZz4mIHVybHMsIGNvbnN0IFN0cmluZyYg
Y2FsbAogICAgICAgICByZXF1ZXN0LnNldEhUVFBNZXRob2QoIkdFVCIpOwogICAgICAgICByZXF1
ZXN0LnNldEhUVFBPcmlnaW4oc2VjdXJpdHlPcmlnaW4pOwogICAgICAgICBXb3JrZXJJbXBvcnRT
Y3JpcHRzQ2xpZW50IGNsaWVudChzY3JpcHRFeGVjdXRpb25Db250ZXh0KCksICppdCwgY2FsbGVy
VVJMLCBjYWxsZXJMaW5lKTsKLSAgICAgICAgVGhyZWFkYWJsZUxvYWRlcjo6bG9hZFJlc291cmNl
U3luY2hyb25vdXNseShzY3JpcHRFeGVjdXRpb25Db250ZXh0KCksIHJlcXVlc3QsIGNsaWVudCwg
QWxsb3dTdG9yZWRDcmVkZW50aWFscyk7CisgICAgICAgIFdvcmtlclRocmVhZGFibGVMb2FkZXI6
OmxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHkodGhpcywgcmVxdWVzdCwgY2xpZW50LCBBbGxvd1N0
b3JlZENyZWRlbnRpYWxzLCBBbGxvd0RpZmZlcmVudFJlZGlyZWN0T3JpZ2luKTsKICAgICAgICAg
CiAgICAgICAgIC8vIElmIHRoZSBmZXRjaGluZyBhdHRlbXB0IGZhaWxlZCwgdGhyb3cgYSBORVRX
T1JLX0VSUiBleGNlcHRpb24gYW5kIGFib3J0IGFsbCB0aGVzZSBzdGVwcy4KICAgICAgICAgaWYg
KGNsaWVudC5mYWlsZWQoKSkgewpkaWZmIC0tZ2l0IGEvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVl
c3QuY3BwIGIvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuY3BwCmluZGV4IGE4MzdjOGMuLjc2
ZWUwNDggMTAwNjQ0Ci0tLSBhL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcAorKysgYi9X
ZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5jcHAKQEAgLTY3NCw3ICs2NzQsNyBAQCB2b2lkIFhN
TEh0dHBSZXF1ZXN0Ojpsb2FkUmVxdWVzdEFzeW5jaHJvbm91c2x5KFJlc291cmNlUmVxdWVzdCYg
cmVxdWVzdCkKICAgICBpZiAobV91cGxvYWQpCiAgICAgICAgIHJlcXVlc3Quc2V0UmVwb3J0VXBs
b2FkUHJvZ3Jlc3ModHJ1ZSk7CiAKLSAgICBtX2xvYWRlciA9IFRocmVhZGFibGVMb2FkZXI6OmNy
ZWF0ZShzY3JpcHRFeGVjdXRpb25Db250ZXh0KCksIHRoaXMsIHJlcXVlc3QsIGNhbGxiYWNrcywg
RG9Ob3RTbmlmZkNvbnRlbnQsIHN0b3JlZENyZWRlbnRpYWxzKTsKKyAgICBtX2xvYWRlciA9IFRo
cmVhZGFibGVMb2FkZXI6OmNyZWF0ZShzY3JpcHRFeGVjdXRpb25Db250ZXh0KCksIHRoaXMsIHJl
cXVlc3QsIGNhbGxiYWNrcywgRG9Ob3RTbmlmZkNvbnRlbnQsIHN0b3JlZENyZWRlbnRpYWxzLCBS
ZXF1aXJlU2FtZVJlZGlyZWN0T3JpZ2luKTsKIAogICAgIGlmIChtX2xvYWRlcikgewogICAgICAg
ICAvLyBOZWl0aGVyIHRoaXMgb2JqZWN0IG5vciB0aGUgSmF2YVNjcmlwdCB3cmFwcGVyIHNob3Vs
ZCBiZSBkZWxldGVkIHdoaWxlCg==
</data>
<flag name="review"
          id="15740"
          type_id="1"
          status="+"
          setter="levin"
    />
          </attachment>
      

    </bug>

</bugzilla>