<?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>167501</bug_id>
          
          <creation_ts>2017-01-27 07:39:53 -0800</creation_ts>
          <short_desc>Propagate networking errors correctly for import() operator</short_desc>
          <delta_ts>2017-02-01 03:34:37 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>DOM</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</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>
          <dependson>167500</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Yusuke Suzuki">ysuzuki</reporter>
          <assigned_to name="Yusuke Suzuki">ysuzuki</assigned_to>
          <cc>cdumez</cc>
    
    <cc>darin</cc>
    
    <cc>ossy</cc>
    
    <cc>rniwa</cc>
    
    <cc>sam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1270638</commentid>
    <comment_count>0</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-01-27 07:39:53 -0800</bug_when>
    <thetext>Now, we propagate the symbols instead of networking errors.
We should propagate the errors in the promise pipeline.
And we should explore the other way to suppress duplicate error reporting.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1271004</commentid>
    <comment_count>1</comment_count>
      <attachid>300037</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-01-28 09:24:32 -0800</bug_when>
    <thetext>Created attachment 300037
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1271005</commentid>
    <comment_count>2</comment_count>
      <attachid>300038</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-01-28 09:31:52 -0800</bug_when>
    <thetext>Created attachment 300038
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1271855</commentid>
    <comment_count>3</comment_count>
      <attachid>300038</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2017-01-31 13:12:28 -0800</bug_when>
    <thetext>Comment on attachment 300038
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=300038&amp;action=review

&gt; Source/WebCore/bindings/js/HostErrorKind.h:30
&gt; +enum class HostErrorKind {

Can&apos;t we just call this ModuleFetchFailureKind?

&gt; Source/WebCore/bindings/js/HostErrorKind.h:32
&gt; +    ModuleFetchWasErrored,
&gt; +    ModuleFetchWasCanceled,

And remove &quot;ModuelFetch&quot; prefix from these?

&gt; Source/WebCore/bindings/js/ScriptController.cpp:395
&gt; +            JSValue errorKindValue = object-&gt;getDirect(vm, static_cast&lt;JSVMClientData&amp;&gt;(*vm.clientData).builtinNames().errorKindPrivateName());
&gt; +            if (errorKindValue) {

Please define errorKindValue inside if (~).

&gt; Source/WebCore/bindings/js/ScriptController.cpp:404
&gt; +                case HostErrorKind::ModuleFetchWasErrored: {
&gt; +                    moduleScript-&gt;notifyLoadFailed(LoadableScript::Error {
&gt; +                        LoadableScript::ErrorType::CachedScript,
&gt; +                        std::nullopt
&gt; +                    });
&gt; +                    break;
&gt; +                }

We don&apos;t need curly braces here since there is no variable declaration.

&gt; Source/WebCore/bindings/js/ScriptController.cpp:408
&gt; +                case HostErrorKind::ModuleFetchWasCanceled: {
&gt; +                    moduleScript-&gt;notifyLoadWasCanceled();
&gt; +                    break;
&gt; +                }

Ditto.

&gt; Source/WebCore/bindings/js/ScriptModuleLoader.cpp:158
&gt; +        // Reject a promise to propagate the error back all the way through module promise chains to the script element.

Instead of adding a comment, why don&apos;t we add a helper function with a descriptive name like:
rejectToPropagateNetworkError(deferred, HostErrorKind::ModuleFetchWasErrored);
return jsPromise.

&gt; LayoutTests/http/tests/security/mixedContent/import-insecure-script-in-iframe.html:7
&gt; +trigger a mixed content callback even though the main frame is HTTP because the
&gt; +HTTPS frame&apos;s origin is contaminated with an insecure module script.`);

I think it&apos;s quite irrelevant whether the main frame is HTTP or no.
I think it&apos;s better to just state that since iframe&apos;s content is of a secure origin,
importing a module script via HTTP should result in a mixed content error.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1272079</commentid>
    <comment_count>4</comment_count>
      <attachid>300038</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-02-01 01:58:55 -0800</bug_when>
    <thetext>Comment on attachment 300038
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=300038&amp;action=review

Thanks!

&gt;&gt; Source/WebCore/bindings/js/HostErrorKind.h:30
&gt;&gt; +enum class HostErrorKind {
&gt; 
&gt; Can&apos;t we just call this ModuleFetchFailureKind?

OK, changed.

&gt;&gt; Source/WebCore/bindings/js/HostErrorKind.h:32
&gt;&gt; +    ModuleFetchWasCanceled,
&gt; 
&gt; And remove &quot;ModuelFetch&quot; prefix from these?

Done.

&gt;&gt; Source/WebCore/bindings/js/ScriptController.cpp:395
&gt;&gt; +            if (errorKindValue) {
&gt; 
&gt; Please define errorKindValue inside if (~).

Done.

&gt;&gt; Source/WebCore/bindings/js/ScriptController.cpp:404
&gt;&gt; +                }
&gt; 
&gt; We don&apos;t need curly braces here since there is no variable declaration.

OK, done.

&gt;&gt; Source/WebCore/bindings/js/ScriptController.cpp:408
&gt;&gt; +                }
&gt; 
&gt; Ditto.

Done.

&gt;&gt; Source/WebCore/bindings/js/ScriptModuleLoader.cpp:158
&gt;&gt; +        // Reject a promise to propagate the error back all the way through module promise chains to the script element.
&gt; 
&gt; Instead of adding a comment, why don&apos;t we add a helper function with a descriptive name like:
&gt; rejectToPropagateNetworkError(deferred, HostErrorKind::ModuleFetchWasErrored);
&gt; return jsPromise.

Nice. I&apos;ve extracted these part to a static function named &quot;rejectToPropagateNetworkError&quot;.

&gt;&gt; LayoutTests/http/tests/security/mixedContent/import-insecure-script-in-iframe.html:7
&gt;&gt; +HTTPS frame&apos;s origin is contaminated with an insecure module script.`);
&gt; 
&gt; I think it&apos;s quite irrelevant whether the main frame is HTTP or no.
&gt; I think it&apos;s better to just state that since iframe&apos;s content is of a secure origin,
&gt; importing a module script via HTTP should result in a mixed content error.

OK, the description is changed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1272080</commentid>
    <comment_count>5</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-02-01 02:02:01 -0800</bug_when>
    <thetext>Committed r211473: &lt;http://trac.webkit.org/changeset/211473&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1272084</commentid>
    <comment_count>6</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2017-02-01 02:33:30 -0800</bug_when>
    <thetext>(In reply to comment #5)
&gt; Committed r211473: &lt;http://trac.webkit.org/changeset/211473&gt;

It broke the build everywhere, see build.webkit.org for details.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1272104</commentid>
    <comment_count>7</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-02-01 03:34:37 -0800</bug_when>
    <thetext>(In reply to comment #6)
&gt; (In reply to comment #5)
&gt; &gt; Committed r211473: &lt;http://trac.webkit.org/changeset/211473&gt;
&gt; 
&gt; It broke the build everywhere, see build.webkit.org for details.

Fixed with the follow-up patches.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>300037</attachid>
            <date>2017-01-28 09:24:32 -0800</date>
            <delta_ts>2017-01-28 09:31:47 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-167501-20170129022225.patch</filename>
            <type>text/plain</type>
            <size>25306</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjExMzI4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDI4MTE1MjkyZmE3Njc5
OTUyZDliYWE1YmNjOGMwNmY0ZDcyYzYyNi4uZjZiM2UxMTM2OWUyNzU4NTAyMGI3NDM1MmU5NjVm
OTM2MDIwMjExMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU0IEBACisyMDE3LTAxLTI4ICBZdXN1
a2UgU3V6dWtpICA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgorCisgICAgICAgIFByb3BhZ2F0ZSBu
ZXR3b3JraW5nIGVycm9ycyBjb3JyZWN0bHkgZm9yIGltcG9ydCgpIG9wZXJhdG9yCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjc1MDEKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXZSB1c2UgdGhlIHByb21p
c2UgY2hhaW4gaW5zaWRlIHRoZSBtb2R1bGUgbG9hZGVyIHBpcGVsaW5lLgorICAgICAgICBUaGUg
cHJvYmxlbSBpcyB0aGF0LAorCisgICAgICAgIDEuIFRoZSBlcnJvcnMgb2YgbG9hZGluZyBtb2R1
bGUgc2NyaXB0cyBhcmUgcHJvcGFnYXRlZCB0aHJvdWdoIHRoZSBwcm9taXNlJ3MgcmVqZWN0aW9u
LgorICAgICAgICAyLiBTb21lIG1vZHVsZSByZWxhdGVkIGVycm9ycyBsaWtlIHN5bnRheCBlcnJv
ciAod2hlbiBzY2FubmluZyBtb2R1bGUgZGVwZW5kZW5jaWVzKSBhcmUKKyAgICAgICAgICAgcmVw
b3J0ZWQgYXQgbG9hZGluZyB0aW1lIChldmFsdWF0aW5nIHRpbWUpLiBUaGVzZSBlcnJvcnMgYXJl
IHByb3BhZ2F0ZWQgdGhyb3VnaCB0aGUKKyAgICAgICAgICAgcHJvbWlzZSByZWplY3Rpb25zIGFu
ZCBkdW1wZWQgdG8gdGhlIGNvbnNvbGUuIExvYWRhYmxlTW9kdWxlU2NyaXB0IHNldCBjYXRjaCBo
YW5kbGVyCisgICAgICAgICAgIGZvciB0aGF0IGFuZCBwcmludCB0aGVzZSBlcnJvcnMgdG8gdGhl
IGNvbnNvbGUgZm9yIFNjcmlwdEVsZW1lbnQuCisgICAgICAgIDMuIFNvbWUgb2YgZXJyb3JzIGFy
ZSBhbHJlYWR5IHJlcG9ydGVkIHRvIHRoZSBjb25zb2xlLiBGb3IgZXhhbXBsZSwgbmV0d29ya2lu
ZyBlcnJvcnMKKyAgICAgICAgICAgYXJlIHJlcG9ydGVkIGJ5IHRoZSBDYWNoZWRNb2R1bGVMb2Fk
ZXIuCisgICAgICAgIDQuIEJ1dCB0aGVyZSBpcyBubyB3YXkgdG8gZGlzdGluZ3Vpc2ggYmV0d2Vl
biAoMikgYW5kICgzKSBhdCB0aGUgY2F0Y2ggaGFuZGxlci4KKworICAgICAgICBQcmV2aW91c2x5
LCB3ZSBwcm9wYWdhdGUgdGhlIHNwZWNpYWwgc3ltYm9sIGZvciB0aGUgYWxyZWFkeSByZXBvcnRl
ZCBlcnJvcnMgdG8gZGlzdGluZ3Vpc2gKKyAgICAgICAgdGhhdC4gVGhpcyB3YXMgT0sgYmVjYXVz
ZSB0aGVzZSBlcnJvcnMgY2Fubm90IGJlIGNhdGNoZWQgYnkgdGhlIHVzZXIgY29kZS4gSG93ZXZl
ciwKKyAgICAgICAgcmVjZW50IGBpbXBvcnQoKWAgY2FsbCBuZWVkcyB0byBleHBvc2UgdGhlc2Ug
ZXJyb3JzIHRvIHRoZSB1c2VyIGNvZGUuIFNvIG5vdywgYWNjaWRlbnRhbGx5LAorICAgICAgICB0
aGUgc3BlY2lhbCBwdXJwb3NlIHN5bWJvbCBpcyBleHBvc2VkLgorCisgICAgICAgIEluc3RlYWQg
b2YgcHJvcGFnYXRpbmcgdGhlIHNwZWNpYWwgc3ltYm9sLCB0aGlzIHBhdGNoIGp1c3QgcHJvcGFn
YXRlcyB0aGUgZXJyb3JzLiBCdXQgdGhlc2UKKyAgICAgICAgZXJyb3Igb2JqZWN0cyBhcmUgYW5u
b3RhdGVkIHdpdGggdGhlIHByaXZhdGUgc3ltYm9sLiBTbyB0aGVzZSBlcnJvcnMgY2FuIGJlIGRp
c3Rpbmd1aXNoZWQKKyAgICAgICAgZnJvbSB0aGUgb3RoZXIgb25lcy4KKworICAgICAgICBDdXJy
ZW50bHksIHdlIGRvIG5vdCBoYXZlIHRoZSB3YXkgdG8gZXhwb3NlIHRoZSBlcnJvciBkZXRhaWxz
IHRvIHRoZSBjbGllbnQgb2YgdGhlCisgICAgICAgIENhY2hlZFNjcmlwdC4gU28gd2UganVzdCBy
ZXBvcnQgdGhlIGVycm9yIHdpdGggdGhlIGZhaWxlZCAvIGNhbmNlbGVkLiBUaGlzIHNob3VsZCBi
ZQorICAgICAgICBtb3JlIGRlc2NyaXB0aXZlIGVycm9yIG1lc3NhZ2VzIGluIHRoZSBzZXBhcmF0
ZSBwYXRjaFsxXS4KKworICAgICAgICBbMV06IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xNjc1NTMKKworICAgICAgICBUZXN0czogaHR0cC90ZXN0cy9zZWN1cml0eS9t
aXhlZENvbnRlbnQvaW1wb3J0LWluc2VjdXJlLXNjcmlwdC1pbi1pZnJhbWUuaHRtbAorICAgICAg
ICAgICAgICAganMvZG9tL21vZHVsZXMvaW1wb3J0LW5vdC1mb3VuZC1lcnJvci5odG1sCisKKyAg
ICAgICAgKiBiaW5kaW5ncy9qcy9Ib3N0RXJyb3JLaW5kLmg6IEFkZGVkLgorICAgICAgICAqIGJp
bmRpbmdzL2pzL0pTRE9NUHJvbWlzZS5oOgorICAgICAgICAoV2ViQ29yZTo6RGVmZXJyZWRQcm9t
aXNlOjpyZXNvbHZlV2l0aENhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OkRlZmVycmVkUHJv
bWlzZTo6cmVqZWN0V2l0aENhbGxiYWNrKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TY3JpcHRD
b250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdENvbnRyb2xsZXI6OnNldHVw
TW9kdWxlU2NyaXB0SGFuZGxlcnMpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1NjcmlwdENvbnRy
b2xsZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdENvbnRyb2xsZXI6Om1vZHVsZUxvYWRl
ckFscmVhZHlSZXBvcnRlZEVycm9yU3ltYm9sKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OlNjcmlwdENvbnRyb2xsZXI6Om1vZHVsZUxvYWRlckZldGNoaW5nSXNDYW5jZWxlZFN5bWJvbCk6
IERlbGV0ZWQuCisgICAgICAgICogYmluZGluZ3MvanMvU2NyaXB0TW9kdWxlTG9hZGVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdE1vZHVsZUxvYWRlcjo6ZmV0Y2gpOgorICAgICAgICAo
V2ViQ29yZTo6U2NyaXB0TW9kdWxlTG9hZGVyOjpub3RpZnlGaW5pc2hlZCk6CisgICAgICAgICog
YmluZGluZ3MvanMvV2ViQ29yZUJ1aWx0aW5OYW1lcy5oOgorCiAyMDE3LTAxLTI3ICBEYW4gQmVy
bnN0ZWluICA8bWl0ekBhcHBsZS5jb20+CiAKICAgICAgICAgSWdub3JlIFhjb2Rl4oCZcyBwcm9q
ZWN0Lnhjd29ya3NwYWNlIGFuZCB1c2VyZGF0YSBkaXJlY3RvcmllcyBpbiB0aGlzIG5ldyBwcm9q
ZWN0IGxpa2Ugd2UgZG8KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0hv
c3RFcnJvcktpbmQuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0hvc3RFcnJvcktpbmQu
aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi41NjNlOGExNzIwMjFiOTBhZGFhNTNkYzY2ZDFmYmE2YzA0NGI0YzVkCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSG9zdEVycm9yS2lu
ZC5oCkBAIC0wLDAgKzEsMzYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgWXVzdWtlIFN1
enVraSA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
CisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisg
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworCitlbnVtIGNsYXNzIEhvc3RFcnJvcktpbmQgeworICAgIE1v
ZHVsZUZldGNoV2FzRXJyb3JlZCwKKyAgICBNb2R1bGVGZXRjaFdhc0NhbmNlbGVkLAorfTsKKwor
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0RPTVByb21pc2UuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9N
UHJvbWlzZS5oCmluZGV4IGQ4NjRlMjVmZDZiNDlhODRhNGEzMjU5NWNiMThiNDgxN2RkMWMwODEu
LjM5NTMwY2M2ZTNiODRiMGIzMWRlOTJjZDFmYjg5OWRiMTdmNjk3MGMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NUHJvbWlzZS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTRE9NUHJvbWlzZS5oCkBAIC05NCw4ICs5NCw4IEBAIGNsYXNzIERl
ZmVycmVkUHJvbWlzZSA6IHB1YmxpYyBSZWZDb3VudGVkPERlZmVycmVkUHJvbWlzZT4sIHB1Ymxp
YyBBY3RpdmVET01DYWxsCiAgICAgdm9pZCByZWplY3QoRXhjZXB0aW9uQ29kZSwgY29uc3QgU3Ry
aW5nJiA9IHsgfSk7CiAgICAgdm9pZCByZWplY3QoY29uc3QgSlNDOjpQcml2YXRlTmFtZSYpOwog
Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2FsbGJhY2ssIHR5cGVuYW1lIFZhbHVlPgotICAgIHZv
aWQgcmVzb2x2ZVdpdGhDYWxsYmFjayhDYWxsYmFjayBjYWxsYmFjaywgVmFsdWUgdmFsdWUpCisg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2FsbGJhY2s+CisgICAgdm9pZCByZXNvbHZlV2l0aENhbGxi
YWNrKENhbGxiYWNrIGNhbGxiYWNrKQogICAgIHsKICAgICAgICAgaWYgKGlzU3VzcGVuZGVkKCkp
CiAgICAgICAgICAgICByZXR1cm47CkBAIC0xMDMsNyArMTAzLDE5IEBAIGNsYXNzIERlZmVycmVk
UHJvbWlzZSA6IHB1YmxpYyBSZWZDb3VudGVkPERlZmVycmVkUHJvbWlzZT4sIHB1YmxpYyBBY3Rp
dmVET01DYWxsCiAgICAgICAgIEFTU0VSVChtX2dsb2JhbE9iamVjdCk7CiAgICAgICAgIEpTQzo6
RXhlY1N0YXRlKiBleGVjID0gbV9nbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKTsKICAgICAgICAg
SlNDOjpKU0xvY2tIb2xkZXIgbG9ja2VyKGV4ZWMpOwotICAgICAgICByZXNvbHZlKCpleGVjLCBj
YWxsYmFjaygqZXhlYywgKm1fZ2xvYmFsT2JqZWN0LmdldCgpLCBzdGQ6OmZvcndhcmQ8VmFsdWU+
KHZhbHVlKSkpOworICAgICAgICByZXNvbHZlKCpleGVjLCBjYWxsYmFjaygqZXhlYywgKm1fZ2xv
YmFsT2JqZWN0LmdldCgpKSk7CisgICAgfQorCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2FsbGJh
Y2s+CisgICAgdm9pZCByZWplY3RXaXRoQ2FsbGJhY2soQ2FsbGJhY2sgY2FsbGJhY2spCisgICAg
eworICAgICAgICBpZiAoaXNTdXNwZW5kZWQoKSkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAg
ICAgQVNTRVJUKG1fZGVmZXJyZWQpOworICAgICAgICBBU1NFUlQobV9nbG9iYWxPYmplY3QpOwor
ICAgICAgICBKU0M6OkV4ZWNTdGF0ZSogZXhlYyA9IG1fZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVj
KCk7CisgICAgICAgIEpTQzo6SlNMb2NrSG9sZGVyIGxvY2tlcihleGVjKTsKKyAgICAgICAgcmVq
ZWN0KCpleGVjLCBjYWxsYmFjaygqZXhlYywgKm1fZ2xvYmFsT2JqZWN0LmdldCgpKSk7CiAgICAg
fQogCiAgICAgSlNDOjpKU1ZhbHVlIHByb21pc2UoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5jcHAKaW5kZXggYWRiZWFmZjFhMDVmNDhj
ZWJjMzE4N2M3ZDU4NjUwYmU0MDc5ZmViZi4uMjNmMTI1ODRmOTllODBiMGQ5ZDJhZGUzOTg4OGU2
NGZkZTYwN2U1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0
Q29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29u
dHJvbGxlci5jcHAKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJGcmFtZUxvYWRlckNsaWVu
dC5oIgogI2luY2x1ZGUgIkdDQ29udHJvbGxlci5oIgogI2luY2x1ZGUgIkhUTUxQbHVnSW5FbGVt
ZW50LmgiCisjaW5jbHVkZSAiSG9zdEVycm9yS2luZC5oIgogI2luY2x1ZGUgIkluc3BlY3Rvcklu
c3RydW1lbnRhdGlvbi5oIgogI2luY2x1ZGUgIkpTRE9NV2luZG93LmgiCiAjaW5jbHVkZSAiSlNE
b2N1bWVudC5oIgpAQCAtMzc3LDkgKzM3OCw2IEBAIHZvaWQgU2NyaXB0Q29udHJvbGxlcjo6c2V0
dXBNb2R1bGVTY3JpcHRIYW5kbGVycyhMb2FkYWJsZU1vZHVsZVNjcmlwdCYgbW9kdWxlU2NyCiAg
ICAgLy8gRm9yIGV4YW1wbGUsIGlmIHRoZSBwYWdlIGxvYWQgaXMgY2FuY2VsZWQsIHRoZSBEZWZl
cnJlZFByb21pc2UgdXNlZCBpbiB0aGUgbW9kdWxlIGxvYWRlciBwaXBlbGluZSB3aWxsIHN0b3Ag
ZXhlY3V0aW5nIEpTIGNvZGUuCiAgICAgLy8gVGh1cyB0aGUgcHJvbWlzZSByZXR1cm5lZCBmcm9t
IHRoaXMgZnVuY3Rpb24gY291bGQgcmVtYWluIHVucmVzb2x2ZWQuCiAKLSAgICBKU0M6OlByaXZh
dGVOYW1lIG1vZHVsZUxvYWRlckFscmVhZHlSZXBvcnRlZEVycm9yU3ltYm9sID0gbV9tb2R1bGVM
b2FkZXJBbHJlYWR5UmVwb3J0ZWRFcnJvclN5bWJvbDsKLSAgICBKU0M6OlByaXZhdGVOYW1lIG1v
ZHVsZUxvYWRlckZldGNoaW5nSXNDYW5jZWxlZFN5bWJvbCA9IG1fbW9kdWxlTG9hZGVyRmV0Y2hp
bmdJc0NhbmNlbGVkU3ltYm9sOwotCiAgICAgUmVmUHRyPExvYWRhYmxlTW9kdWxlU2NyaXB0PiBt
b2R1bGVTY3JpcHQoJm1vZHVsZVNjcmlwdFJlZik7CiAKICAgICBhdXRvJiBmdWxmaWxsSGFuZGxl
ciA9ICpKU05hdGl2ZVN0ZEZ1bmN0aW9uOjpjcmVhdGUoc3RhdGUudm0oKSwgc2hlbGwud2luZG93
KCksIDEsIFN0cmluZygpLCBbbW9kdWxlU2NyaXB0XShFeGVjU3RhdGUqIGV4ZWMpIHsKQEAgLTM4
OCwyMCArMzg2LDI3IEBAIHZvaWQgU2NyaXB0Q29udHJvbGxlcjo6c2V0dXBNb2R1bGVTY3JpcHRI
YW5kbGVycyhMb2FkYWJsZU1vZHVsZVNjcmlwdCYgbW9kdWxlU2NyCiAgICAgICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiAgICAgfSk7CiAKLSAgICBhdXRvJiByZWpl
Y3RIYW5kbGVyID0gKkpTTmF0aXZlU3RkRnVuY3Rpb246OmNyZWF0ZShzdGF0ZS52bSgpLCBzaGVs
bC53aW5kb3coKSwgMSwgU3RyaW5nKCksIFttb2R1bGVTY3JpcHQsIG1vZHVsZUxvYWRlckFscmVh
ZHlSZXBvcnRlZEVycm9yU3ltYm9sLCBtb2R1bGVMb2FkZXJGZXRjaGluZ0lzQ2FuY2VsZWRTeW1i
b2xdKEV4ZWNTdGF0ZSogZXhlYykgewotICAgICAgICBKU1ZhbHVlIGVycm9yID0gZXhlYy0+YXJn
dW1lbnQoMCk7CisgICAgYXV0byYgcmVqZWN0SGFuZGxlciA9ICpKU05hdGl2ZVN0ZEZ1bmN0aW9u
OjpjcmVhdGUoc3RhdGUudm0oKSwgc2hlbGwud2luZG93KCksIDEsIFN0cmluZygpLCBbbW9kdWxl
U2NyaXB0XShFeGVjU3RhdGUqIGV4ZWMpIHsKICAgICAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsK
LSAgICAgICAgaWYgKGF1dG8qIHN5bWJvbCA9IGpzRHluYW1pY0Nhc3Q8U3ltYm9sKj4odm0sIGVy
cm9yKSkgewotICAgICAgICAgICAgaWYgKHN5bWJvbC0+cHJpdmF0ZU5hbWUoKSA9PSBtb2R1bGVM
b2FkZXJBbHJlYWR5UmVwb3J0ZWRFcnJvclN5bWJvbCkgewotICAgICAgICAgICAgICAgIG1vZHVs
ZVNjcmlwdC0+bm90aWZ5TG9hZEZhaWxlZChMb2FkYWJsZVNjcmlwdDo6RXJyb3IgewotICAgICAg
ICAgICAgICAgICAgICBMb2FkYWJsZVNjcmlwdDo6RXJyb3JUeXBlOjpDYWNoZWRTY3JpcHQsCi0g
ICAgICAgICAgICAgICAgICAgIHN0ZDo6bnVsbG9wdAotICAgICAgICAgICAgICAgIH0pOwotICAg
ICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7Ci0gICAg
ICAgICAgICB9Ci0KLSAgICAgICAgICAgIGlmIChzeW1ib2wtPnByaXZhdGVOYW1lKCkgPT0gbW9k
dWxlTG9hZGVyRmV0Y2hpbmdJc0NhbmNlbGVkU3ltYm9sKSB7Ci0gICAgICAgICAgICAgICAgbW9k
dWxlU2NyaXB0LT5ub3RpZnlMb2FkV2FzQ2FuY2VsZWQoKTsKKyAgICAgICAgSlNWYWx1ZSBlcnJv
clZhbHVlID0gZXhlYy0+YXJndW1lbnQoMCk7CisgICAgICAgIGlmIChlcnJvclZhbHVlLmlzT2Jq
ZWN0KCkpIHsKKyAgICAgICAgICAgIGF1dG8qIG9iamVjdCA9IEpTQzo6YXNPYmplY3QoZXJyb3JW
YWx1ZSk7CisgICAgICAgICAgICBKU1ZhbHVlIGVycm9yS2luZFZhbHVlID0gb2JqZWN0LT5nZXRE
aXJlY3Qodm0sIHN0YXRpY19jYXN0PEpTVk1DbGllbnREYXRhJj4oKnZtLmNsaWVudERhdGEpLmJ1
aWx0aW5OYW1lcygpLmVycm9yS2luZFByaXZhdGVOYW1lKCkpOworICAgICAgICAgICAgaWYgKGVy
cm9yS2luZFZhbHVlKSB7CisgICAgICAgICAgICAgICAgLy8gVGhpcyBpcyBob3N0IHByb3BhZ2F0
ZWQgZXJyb3IgaW4gdGhlIG1vZHVsZSBsb2FkZXIgcGlwZWxpbmUuCisgICAgICAgICAgICAgICAg
c3dpdGNoIChzdGF0aWNfY2FzdDxIb3N0RXJyb3JLaW5kPihlcnJvcktpbmRWYWx1ZS5hc0ludDMy
KCkpKSB7CisgICAgICAgICAgICAgICAgY2FzZSBIb3N0RXJyb3JLaW5kOjpNb2R1bGVGZXRjaFdh
c0Vycm9yZWQ6IHsKKyAgICAgICAgICAgICAgICAgICAgbW9kdWxlU2NyaXB0LT5ub3RpZnlMb2Fk
RmFpbGVkKExvYWRhYmxlU2NyaXB0OjpFcnJvciB7CisgICAgICAgICAgICAgICAgICAgICAgICBM
b2FkYWJsZVNjcmlwdDo6RXJyb3JUeXBlOjpDYWNoZWRTY3JpcHQsCisgICAgICAgICAgICAgICAg
ICAgICAgICBzdGQ6Om51bGxvcHQKKyAgICAgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBjYXNl
IEhvc3RFcnJvcktpbmQ6Ok1vZHVsZUZldGNoV2FzQ2FuY2VsZWQ6IHsKKyAgICAgICAgICAgICAg
ICAgICAgbW9kdWxlU2NyaXB0LT5ub3RpZnlMb2FkV2FzQ2FuY2VsZWQoKTsKKyAgICAgICAgICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KICAg
ICAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogICAg
ICAgICAgICAgfQogICAgICAgICB9CkBAIC00MTIsNyArNDE3LDcgQEAgdm9pZCBTY3JpcHRDb250
cm9sbGVyOjpzZXR1cE1vZHVsZVNjcmlwdEhhbmRsZXJzKExvYWRhYmxlTW9kdWxlU2NyaXB0JiBt
b2R1bGVTY3IKICAgICAgICAgICAgIExvYWRhYmxlU2NyaXB0OjpDb25zb2xlTWVzc2FnZSB7CiAg
ICAgICAgICAgICAgICAgTWVzc2FnZVNvdXJjZTo6SlMsCiAgICAgICAgICAgICAgICAgTWVzc2Fn
ZUxldmVsOjpFcnJvciwKLSAgICAgICAgICAgICAgICByZXRyaWV2ZUVycm9yTWVzc2FnZSgqZXhl
Yywgdm0sIGVycm9yLCBzY29wZSksCisgICAgICAgICAgICAgICAgcmV0cmlldmVFcnJvck1lc3Nh
Z2UoKmV4ZWMsIHZtLCBlcnJvclZhbHVlLCBzY29wZSksCiAgICAgICAgICAgICB9CiAgICAgICAg
IH0pOwogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5oIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5oCmluZGV4IGRhNDIz
ZTdmZjdhODA5NTdmZTZmNGU2NDI3ZWQwOGE5NWY5MzkwNDQuLjRmMjEyYzNhZjgwMzAxNmZiM2Yy
OTVlMmViYzVmYjg4Yjg4ZTRiNTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL1NjcmlwdENvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9T
Y3JpcHRDb250cm9sbGVyLmgKQEAgLTE0NSw5ICsxNDUsNiBAQCBjbGFzcyBTY3JpcHRDb250cm9s
bGVyIHsKIAogICAgIGNvbnN0IFN0cmluZyogc291cmNlVVJMKCkgY29uc3QgeyByZXR1cm4gbV9z
b3VyY2VVUkw7IH0gLy8gMCBpZiB3ZSBhcmUgbm90IGV2YWx1YXRpbmcgYW55IHNjcmlwdAogCi0g
ICAgY29uc3QgSlNDOjpQcml2YXRlTmFtZSYgbW9kdWxlTG9hZGVyQWxyZWFkeVJlcG9ydGVkRXJy
b3JTeW1ib2woKSBjb25zdCB7IHJldHVybiBtX21vZHVsZUxvYWRlckFscmVhZHlSZXBvcnRlZEVy
cm9yU3ltYm9sOyB9Ci0gICAgY29uc3QgSlNDOjpQcml2YXRlTmFtZSYgbW9kdWxlTG9hZGVyRmV0
Y2hpbmdJc0NhbmNlbGVkU3ltYm9sKCkgY29uc3QgeyByZXR1cm4gbV9tb2R1bGVMb2FkZXJGZXRj
aGluZ0lzQ2FuY2VsZWRTeW1ib2w7IH0KLQogICAgIHZvaWQgY2xlYXJXaW5kb3dTaGVsbHNOb3RN
YXRjaGluZ0RPTVdpbmRvdyhET01XaW5kb3cqLCBib29sIGdvaW5nSW50b1BhZ2VDYWNoZSk7CiAg
ICAgdm9pZCBzZXRET01XaW5kb3dGb3JXaW5kb3dTaGVsbChET01XaW5kb3cqKTsKICAgICB2b2lk
IHVwZGF0ZURvY3VtZW50KCk7CkBAIC0xOTAsOCArMTg3LDYgQEAgY2xhc3MgU2NyaXB0Q29udHJv
bGxlciB7CiAgICAgY29uc3QgU3RyaW5nKiBtX3NvdXJjZVVSTDsKIAogICAgIGJvb2wgbV9wYXVz
ZWQ7Ci0gICAgSlNDOjpQcml2YXRlTmFtZSBtX21vZHVsZUxvYWRlckFscmVhZHlSZXBvcnRlZEVy
cm9yU3ltYm9sOwotICAgIEpTQzo6UHJpdmF0ZU5hbWUgbV9tb2R1bGVMb2FkZXJGZXRjaGluZ0lz
Q2FuY2VsZWRTeW1ib2w7CiAKICAgICAvLyBUaGUgcm9vdCBvYmplY3QgdXNlZCBmb3Igb2JqZWN0
cyBib3VuZCBvdXRzaWRlIHRoZSBjb250ZXh0IG9mIGEgcGx1Z2luLCBzdWNoCiAgICAgLy8gYXMg
TlBBUEkgcGx1Z2lucy4gVGhlIHBsdWdpbnMgdXNpbmcgdGhlc2Ugb2JqZWN0cyBwcmV2ZW50IGEg
cGFnZSBmcm9tIGJlaW5nIGNhY2hlZCBzbyB0aGV5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9TY3JpcHRNb2R1bGVMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvU2NyaXB0TW9kdWxlTG9hZGVyLmNwcAppbmRleCA4OWFjYWZmZmNiZjg4ZDk1Mjk4
ZGNhYzA5Nzk0YjJjOGViY2U3ZjcxLi45NGNiZWE4MDI4ZmVlNzcyMDVhM2U4NmMxYWY5OTUxNzI2
ZDFlOGNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRNb2R1
bGVMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdE1vZHVs
ZUxvYWRlci5jcHAKQEAgLTMxLDExICszMSwxMyBAQAogI2luY2x1ZGUgIkNhY2hlZFNjcmlwdEZl
dGNoZXIuaCIKICNpbmNsdWRlICJEb2N1bWVudC5oIgogI2luY2x1ZGUgIkZyYW1lLmgiCisjaW5j
bHVkZSAiSG9zdEVycm9yS2luZC5oIgogI2luY2x1ZGUgIkpTRE9NQmluZGluZy5oIgogI2luY2x1
ZGUgIkxvYWRhYmxlTW9kdWxlU2NyaXB0LmgiCiAjaW5jbHVkZSAiTUlNRVR5cGVSZWdpc3RyeS5o
IgogI2luY2x1ZGUgIlNjcmlwdENvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJTY3JpcHRTb3VyY2VD
b2RlLmgiCisjaW5jbHVkZSAiV2ViQ29yZUpTQ2xpZW50RGF0YS5oIgogI2luY2x1ZGUgPHJ1bnRp
bWUvQ29tcGxldGlvbi5oPgogI2luY2x1ZGUgPHJ1bnRpbWUvSlNJbnRlcm5hbFByb21pc2UuaD4K
ICNpbmNsdWRlIDxydW50aW1lL0pTSW50ZXJuYWxQcm9taXNlRGVmZXJyZWQuaD4KQEAgLTE0OCwx
NSArMTUwLDIzIEBAIEpTQzo6SlNJbnRlcm5hbFByb21pc2UqIFNjcmlwdE1vZHVsZUxvYWRlcjo6
ZmV0Y2goSlNDOjpKU0dsb2JhbE9iamVjdCoganNHbG9iYWxPCiAgICAgICAgIHJldHVybiBqc1By
b21pc2UucHJvbWlzZSgpOwogICAgIH0KIAotICAgIGlmIChhdXRvKiBmcmFtZSA9IG1fZG9jdW1l
bnQuZnJhbWUoKSkgewotICAgICAgICBhdXRvIGxvYWRlciA9IENhY2hlZE1vZHVsZVNjcmlwdExv
YWRlcjo6Y3JlYXRlKCp0aGlzLCBkZWZlcnJlZC5nZXQoKSwgKnN0YXRpY19jYXN0PENhY2hlZFNj
cmlwdEZldGNoZXIqPihKU0M6OmpzQ2FzdDxKU0M6OkpTU2NyaXB0RmV0Y2hlcio+KHNjcmlwdEZl
dGNoZXIpLT5mZXRjaGVyKCkpKTsKLSAgICAgICAgbV9sb2FkZXJzLmFkZChsb2FkZXIuY29weVJl
ZigpKTsKLSAgICAgICAgaWYgKCFsb2FkZXItPmxvYWQobV9kb2N1bWVudCwgY29tcGxldGVkVVJM
KSkgewotICAgICAgICAgICAgbG9hZGVyLT5jbGVhckNsaWVudCgpOwotICAgICAgICAgICAgbV9s
b2FkZXJzLnJlbW92ZShXVEZNb3ZlKGxvYWRlcikpOwotICAgICAgICAgICAgZGVmZXJyZWQtPnJl
amVjdChmcmFtZS0+c2NyaXB0KCkubW9kdWxlTG9hZGVyQWxyZWFkeVJlcG9ydGVkRXJyb3JTeW1i
b2woKSk7Ci0gICAgICAgICAgICByZXR1cm4ganNQcm9taXNlLnByb21pc2UoKTsKLSAgICAgICAg
fQorICAgIGF1dG8gbG9hZGVyID0gQ2FjaGVkTW9kdWxlU2NyaXB0TG9hZGVyOjpjcmVhdGUoKnRo
aXMsIGRlZmVycmVkLmdldCgpLCAqc3RhdGljX2Nhc3Q8Q2FjaGVkU2NyaXB0RmV0Y2hlcio+KEpT
Qzo6anNDYXN0PEpTQzo6SlNTY3JpcHRGZXRjaGVyKj4oc2NyaXB0RmV0Y2hlciktPmZldGNoZXIo
KSkpOworICAgIG1fbG9hZGVycy5hZGQobG9hZGVyLmNvcHlSZWYoKSk7CisgICAgaWYgKCFsb2Fk
ZXItPmxvYWQobV9kb2N1bWVudCwgY29tcGxldGVkVVJMKSkgeworICAgICAgICBsb2FkZXItPmNs
ZWFyQ2xpZW50KCk7CisgICAgICAgIG1fbG9hZGVycy5yZW1vdmUoV1RGTW92ZShsb2FkZXIpKTsK
KyAgICAgICAgLy8gUmVqZWN0IGEgcHJvbWlzZSB0byBwcm9wYWdhdGUgdGhlIGVycm9yIGJhY2sg
YWxsIHRoZSB3YXkgdGhyb3VnaCBtb2R1bGUgcHJvbWlzZSBjaGFpbnMgdG8gdGhlIHNjcmlwdCBl
bGVtZW50LgorICAgICAgICBkZWZlcnJlZC0+cmVqZWN0V2l0aENhbGxiYWNrKFtdIChKU0M6OkV4
ZWNTdGF0ZSYgc3RhdGUsIEpTRE9NR2xvYmFsT2JqZWN0JikgeworICAgICAgICAgICAgLy8gV2Ug
YW5ub3RhdGUgZXhjZXB0aW9uIHdpdGggc3BlY2lhbCBwcml2YXRlIHN5bWJvbC4gSXQgYWxsb3dz
IHVzIHRvIGRpc3Rpbmd1aXNoIHRoZXNlIGVycm9ycyBmcm9tIHRoZSB1c2VyIHRocm93biBvbmVz
LgorICAgICAgICAgICAgSlNDOjpWTSYgdm0gPSBzdGF0ZS52bSgpOworICAgICAgICAgICAgLy8g
RklYTUU6IFByb3BhZ2F0ZSBtb3JlIGRlc2NyaXB0aXZlIGVycm9yLgorICAgICAgICAgICAgLy8g
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2NzU1MworICAgICAgICAg
ICAgYXV0byogZXJyb3IgPSBKU0M6OmNyZWF0ZVR5cGVFcnJvcigmc3RhdGUsIEFTQ0lJTGl0ZXJh
bCgiSW1wb3J0aW5nIGEgbW9kdWxlIHNjcmlwdCBmYWlsZWQuIikpOworICAgICAgICAgICAgQVNT
RVJUKGVycm9yKTsKKyAgICAgICAgICAgIGVycm9yLT5wdXREaXJlY3Qodm0sIHN0YXRpY19jYXN0
PEpTVk1DbGllbnREYXRhJj4oKnZtLmNsaWVudERhdGEpLmJ1aWx0aW5OYW1lcygpLmVycm9yS2lu
ZFByaXZhdGVOYW1lKCksIEpTQzo6anNOdW1iZXIoc3RhdGljX2Nhc3Q8aW50MzJfdD4oSG9zdEVy
cm9yS2luZDo6TW9kdWxlRmV0Y2hXYXNFcnJvcmVkKSkpOworICAgICAgICAgICAgcmV0dXJuIGVy
cm9yOworICAgICAgICB9KTsKKyAgICAgICAgcmV0dXJuIGpzUHJvbWlzZS5wcm9taXNlKCk7CiAg
ICAgfQogCiAgICAgcmV0dXJuIGpzUHJvbWlzZS5wcm9taXNlKCk7CkBAIC0yMzIsNDMgKzI0Miw1
MyBAQCB2b2lkIFNjcmlwdE1vZHVsZUxvYWRlcjo6bm90aWZ5RmluaXNoZWQoQ2FjaGVkTW9kdWxl
U2NyaXB0TG9hZGVyJiBsb2FkZXIsIFJlZlB0cgogCiAgICAgYXV0byYgY2FjaGVkU2NyaXB0ID0g
KmxvYWRlci5jYWNoZWRTY3JpcHQoKTsKIAotICAgIGJvb2wgZmFpbGVkID0gZmFsc2U7Ci0KICAg
ICBpZiAoY2FjaGVkU2NyaXB0LnJlc291cmNlRXJyb3IoKS5pc0FjY2Vzc0NvbnRyb2woKSkgewog
ICAgICAgICBwcm9taXNlLT5yZWplY3QoVHlwZUVycm9yLCBBU0NJSUxpdGVyYWwoIkNyb3NzLW9y
aWdpbiBzY3JpcHQgbG9hZCBkZW5pZWQgYnkgQ3Jvc3MtT3JpZ2luIFJlc291cmNlIFNoYXJpbmcg
cG9saWN5LiIpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGlmIChjYWNoZWRTY3Jp
cHQuZXJyb3JPY2N1cnJlZCgpKQotICAgICAgICBmYWlsZWQgPSB0cnVlOwotICAgIGVsc2UgaWYg
KCFNSU1FVHlwZVJlZ2lzdHJ5Ojppc1N1cHBvcnRlZEphdmFTY3JpcHRNSU1FVHlwZShjYWNoZWRT
Y3JpcHQucmVzcG9uc2UoKS5taW1lVHlwZSgpKSkgewotICAgICAgICAvLyBodHRwczovL2h0bWwu
c3BlYy53aGF0d2cub3JnL211bHRpcGFnZS93ZWJhcHBhcGlzLmh0bWwjZmV0Y2gtYS1zaW5nbGUt
bW9kdWxlLXNjcmlwdAotICAgICAgICAvLyBUaGUgcmVzdWx0IG9mIGV4dHJhY3RpbmcgYSBNSU1F
IHR5cGUgZnJvbSByZXNwb25zZSdzIGhlYWRlciBsaXN0IChpZ25vcmluZyBwYXJhbWV0ZXJzKSBp
cyBub3QgYSBKYXZhU2NyaXB0IE1JTUUgdHlwZS4KLSAgICAgICAgLy8gRm9yIGhpc3RvcmljYWwg
cmVhc29ucywgZmV0Y2hpbmcgYSBjbGFzc2ljIHNjcmlwdCBkb2VzIG5vdCBpbmNsdWRlIE1JTUUg
dHlwZSBjaGVja2luZy4gSW4gY29udHJhc3QsIG1vZHVsZSBzY3JpcHRzIHdpbGwgZmFpbCB0byBs
b2FkIGlmIHRoZXkgYXJlIG5vdCBvZiBhIGNvcnJlY3QgTUlNRSB0eXBlLgotICAgICAgICBwcm9t
aXNlLT5yZWplY3QoVHlwZUVycm9yLCBtYWtlU3RyaW5nKCInIiwgY2FjaGVkU2NyaXB0LnJlc3Bv
bnNlKCkubWltZVR5cGUoKSwgIicgaXMgbm90IGEgdmFsaWQgSmF2YVNjcmlwdCBNSU1FIHR5cGUu
IikpOworICAgIGlmIChjYWNoZWRTY3JpcHQuZXJyb3JPY2N1cnJlZCgpKSB7CisgICAgICAgIC8v
IFJlamVjdCBhIHByb21pc2UgdG8gcHJvcGFnYXRlIHRoZSBlcnJvciBiYWNrIGFsbCB0aGUgd2F5
IHRocm91Z2ggbW9kdWxlIHByb21pc2UgY2hhaW5zIHRvIHRoZSBzY3JpcHQgZWxlbWVudC4KKyAg
ICAgICAgcHJvbWlzZS0+cmVqZWN0V2l0aENhbGxiYWNrKFtdIChKU0M6OkV4ZWNTdGF0ZSYgc3Rh
dGUsIEpTRE9NR2xvYmFsT2JqZWN0JikgeworICAgICAgICAgICAgLy8gV2UgYW5ub3RhdGUgZXhj
ZXB0aW9uIHdpdGggc3BlY2lhbCBwcml2YXRlIHN5bWJvbC4gSXQgYWxsb3dzIHVzIHRvIGRpc3Rp
bmd1aXNoIHRoZXNlIGVycm9ycyBmcm9tIHRoZSB1c2VyIHRocm93biBvbmVzLgorICAgICAgICAg
ICAgSlNDOjpWTSYgdm0gPSBzdGF0ZS52bSgpOworICAgICAgICAgICAgLy8gRklYTUU6IFByb3Bh
Z2F0ZSBtb3JlIGRlc2NyaXB0aXZlIGVycm9yLgorICAgICAgICAgICAgLy8gaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2NzU1MworICAgICAgICAgICAgYXV0byogZXJy
b3IgPSBKU0M6OmNyZWF0ZVR5cGVFcnJvcigmc3RhdGUsIEFTQ0lJTGl0ZXJhbCgiSW1wb3J0aW5n
IGEgbW9kdWxlIHNjcmlwdCBmYWlsZWQuIikpOworICAgICAgICAgICAgQVNTRVJUKGVycm9yKTsK
KyAgICAgICAgICAgIGVycm9yLT5wdXREaXJlY3Qodm0sIHN0YXRpY19jYXN0PEpTVk1DbGllbnRE
YXRhJj4oKnZtLmNsaWVudERhdGEpLmJ1aWx0aW5OYW1lcygpLmVycm9yS2luZFByaXZhdGVOYW1l
KCksIEpTQzo6anNOdW1iZXIoc3RhdGljX2Nhc3Q8aW50MzJfdD4oSG9zdEVycm9yS2luZDo6TW9k
dWxlRmV0Y2hXYXNFcnJvcmVkKSkpOworICAgICAgICAgICAgcmV0dXJuIGVycm9yOworICAgICAg
ICB9KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGF1dG8qIGZyYW1lID0gbV9kb2N1
bWVudC5mcmFtZSgpOwotICAgIGlmICghZnJhbWUpCi0gICAgICAgIHJldHVybjsKLQotICAgIGlm
IChmYWlsZWQpIHsKLSAgICAgICAgLy8gUmVqZWN0IGEgcHJvbWlzZSB0byBwcm9wYWdhdGUgdGhl
IGVycm9yIGJhY2sgYWxsIHRoZSB3YXkgdGhyb3VnaCBtb2R1bGUgcHJvbWlzZSBjaGFpbnMgdG8g
dGhlIHNjcmlwdCBlbGVtZW50LgotICAgICAgICBwcm9taXNlLT5yZWplY3QoZnJhbWUtPnNjcmlw
dCgpLm1vZHVsZUxvYWRlckFscmVhZHlSZXBvcnRlZEVycm9yU3ltYm9sKCkpOworICAgIGlmIChj
YWNoZWRTY3JpcHQud2FzQ2FuY2VsZWQoKSkgeworICAgICAgICBwcm9taXNlLT5yZWplY3RXaXRo
Q2FsbGJhY2soW10gKEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSwgSlNET01HbG9iYWxPYmplY3QmKSB7
CisgICAgICAgICAgICAvLyBXZSBhbm5vdGF0ZSBleGNlcHRpb24gd2l0aCBzcGVjaWFsIHByaXZh
dGUgc3ltYm9sLiBJdCBhbGxvd3MgdXMgdG8gZGlzdGluZ3Vpc2ggdGhlc2UgZXJyb3JzIGZyb20g
dGhlIHVzZXIgdGhyb3duIG9uZXMuCisgICAgICAgICAgICBKU0M6OlZNJiB2bSA9IHN0YXRlLnZt
KCk7CisgICAgICAgICAgICAvLyBGSVhNRTogUHJvcGFnYXRlIG1vcmUgZGVzY3JpcHRpdmUgZXJy
b3IuCisgICAgICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTY3NTUzCisgICAgICAgICAgICBhdXRvKiBlcnJvciA9IEpTQzo6Y3JlYXRlVHlwZUVycm9y
KCZzdGF0ZSwgQVNDSUlMaXRlcmFsKCJJbXBvcnRpbmcgYSBtb2R1bGUgc2NyaXB0IGlzIGNhbmNl
bGVkIikpOworICAgICAgICAgICAgQVNTRVJUKGVycm9yKTsKKyAgICAgICAgICAgIGVycm9yLT5w
dXREaXJlY3Qodm0sIHN0YXRpY19jYXN0PEpTVk1DbGllbnREYXRhJj4oKnZtLmNsaWVudERhdGEp
LmJ1aWx0aW5OYW1lcygpLmVycm9yS2luZFByaXZhdGVOYW1lKCksIEpTQzo6anNOdW1iZXIoc3Rh
dGljX2Nhc3Q8aW50MzJfdD4oSG9zdEVycm9yS2luZDo6TW9kdWxlRmV0Y2hXYXNDYW5jZWxlZCkp
KTsKKyAgICAgICAgICAgIHJldHVybiBlcnJvcjsKKyAgICAgICAgfSk7CiAgICAgICAgIHJldHVy
bjsKICAgICB9CiAKLSAgICBpZiAoY2FjaGVkU2NyaXB0Lndhc0NhbmNlbGVkKCkpIHsKLSAgICAg
ICAgcHJvbWlzZS0+cmVqZWN0KGZyYW1lLT5zY3JpcHQoKS5tb2R1bGVMb2FkZXJGZXRjaGluZ0lz
Q2FuY2VsZWRTeW1ib2woKSk7CisgICAgaWYgKCFNSU1FVHlwZVJlZ2lzdHJ5Ojppc1N1cHBvcnRl
ZEphdmFTY3JpcHRNSU1FVHlwZShjYWNoZWRTY3JpcHQucmVzcG9uc2UoKS5taW1lVHlwZSgpKSkg
eworICAgICAgICAvLyBodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnL211bHRpcGFnZS93ZWJh
cHBhcGlzLmh0bWwjZmV0Y2gtYS1zaW5nbGUtbW9kdWxlLXNjcmlwdAorICAgICAgICAvLyBUaGUg
cmVzdWx0IG9mIGV4dHJhY3RpbmcgYSBNSU1FIHR5cGUgZnJvbSByZXNwb25zZSdzIGhlYWRlciBs
aXN0IChpZ25vcmluZyBwYXJhbWV0ZXJzKSBpcyBub3QgYSBKYXZhU2NyaXB0IE1JTUUgdHlwZS4K
KyAgICAgICAgLy8gRm9yIGhpc3RvcmljYWwgcmVhc29ucywgZmV0Y2hpbmcgYSBjbGFzc2ljIHNj
cmlwdCBkb2VzIG5vdCBpbmNsdWRlIE1JTUUgdHlwZSBjaGVja2luZy4gSW4gY29udHJhc3QsIG1v
ZHVsZSBzY3JpcHRzIHdpbGwgZmFpbCB0byBsb2FkIGlmIHRoZXkgYXJlIG5vdCBvZiBhIGNvcnJl
Y3QgTUlNRSB0eXBlLgorICAgICAgICBwcm9taXNlLT5yZWplY3QoVHlwZUVycm9yLCBtYWtlU3Ry
aW5nKCInIiwgY2FjaGVkU2NyaXB0LnJlc3BvbnNlKCkubWltZVR5cGUoKSwgIicgaXMgbm90IGEg
dmFsaWQgSmF2YVNjcmlwdCBNSU1FIHR5cGUuIikpOwogICAgICAgICByZXR1cm47CiAgICAgfQog
CiAgICAgbV9yZXF1ZXN0VVJMVG9SZXNwb25zZVVSTE1hcC5hZGQoY2FjaGVkU2NyaXB0LnVybCgp
LCBjYWNoZWRTY3JpcHQucmVzcG9uc2UoKS51cmwoKSk7Ci0gICAgU2NyaXB0U291cmNlQ29kZSBz
Y3JpcHRTb3VyY2VDb2RlKCZjYWNoZWRTY3JpcHQsIEpTQzo6U291cmNlUHJvdmlkZXJTb3VyY2VU
eXBlOjpNb2R1bGUsIGxvYWRlci5zY3JpcHRGZXRjaGVyKCkpOwotICAgIHByb21pc2UtPnJlc29s
dmVXaXRoQ2FsbGJhY2soW10gKEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSwgSlNET01HbG9iYWxPYmpl
Y3QmLCBKU0M6OlNvdXJjZUNvZGUgc291cmNlQ29kZSkgewotICAgICAgICByZXR1cm4gSlNDOjpK
U1NvdXJjZUNvZGU6OmNyZWF0ZShzdGF0ZS52bSgpLCBXVEZNb3ZlKHNvdXJjZUNvZGUpKTsKLSAg
ICB9LCBzY3JpcHRTb3VyY2VDb2RlLmpzU291cmNlQ29kZSgpKTsKKyAgICBwcm9taXNlLT5yZXNv
bHZlV2l0aENhbGxiYWNrKFsmXSAoSlNDOjpFeGVjU3RhdGUmIHN0YXRlLCBKU0RPTUdsb2JhbE9i
amVjdCYpIHsKKyAgICAgICAgcmV0dXJuIEpTQzo6SlNTb3VyY2VDb2RlOjpjcmVhdGUoc3RhdGUu
dm0oKSwKKyAgICAgICAgICAgIEpTQzo6U291cmNlQ29kZSB7IFNjcmlwdFNvdXJjZUNvZGUgeyAm
Y2FjaGVkU2NyaXB0LCBKU0M6OlNvdXJjZVByb3ZpZGVyU291cmNlVHlwZTo6TW9kdWxlLCBsb2Fk
ZXIuc2NyaXB0RmV0Y2hlcigpIH0uanNTb3VyY2VDb2RlKCkgfSk7CisgICAgfSk7CiB9CiAKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dlYkNvcmVCdWlsdGluTmFt
ZXMuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dlYkNvcmVCdWlsdGluTmFtZXMuaApp
bmRleCAwYzBiYWI0M2MxY2ZkNzJkOWI1N2UzYzc3MTNmYWI0ZWU1NDk5ZTgwLi42ZmNiN2U5MjVh
NjYyODMyZjRjNGYxNThjYTQ2NDU3NmIwMmJkMDRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9XZWJDb3JlQnVpbHRpbk5hbWVzLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvV2ViQ29yZUJ1aWx0aW5OYW1lcy5oCkBAIC00NSw2ICs0NSw3IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKICAgICBtYWNybyhjb250cm9sbGVyKSBcCiAgICAgbWFjcm8oY3JlYXRl
UmVhZGFibGVTdHJlYW1Tb3VyY2UpIFwKICAgICBtYWNybyhkaXN0dXJiZWQpIFwKKyAgICBtYWNy
byhlcnJvcktpbmQpIFwKICAgICBtYWNybyhmZXRjaFJlcXVlc3QpIFwKICAgICBtYWNybyhmaWxs
RnJvbUpTKSBcCiAgICAgbWFjcm8oZmluaXNoQ29uc3VtaW5nU3RyZWFtKSBcCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggNTkx
MzE2NDkyNDM4NzNkNWIzYmFmODI5NDgzNmUzMWRhYjBkMDg5NS4uYThjMDQ1NDI5NzA5ZDQ0NGE4
ZmQxZWYxOTEzYTA2YWIzMDI5YWIzYiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
CisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDE3LTAxLTI4
ICBZdXN1a2UgU3V6dWtpICA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgorCisgICAgICAgIFByb3Bh
Z2F0ZSBuZXR3b3JraW5nIGVycm9ycyBjb3JyZWN0bHkgZm9yIGltcG9ydCgpIG9wZXJhdG9yCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjc1MDEKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGh0dHAvdGVz
dHMvc2VjdXJpdHkvbWl4ZWRDb250ZW50L2ltcG9ydC1pbnNlY3VyZS1zY3JpcHQtaW4taWZyYW1l
LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9zZWN1cml0eS9taXhl
ZENvbnRlbnQvaW1wb3J0LWluc2VjdXJlLXNjcmlwdC1pbi1pZnJhbWUuaHRtbDogQWRkZWQuCisg
ICAgICAgICogaHR0cC90ZXN0cy9zZWN1cml0eS9taXhlZENvbnRlbnQvcmVzb3VyY2VzL2ZyYW1l
LXdpdGgtaW5zZWN1cmUtaW1wb3J0Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGpzL2RvbS9tb2R1
bGVzL2ltcG9ydC1ub3QtZm91bmQtZXJyb3ItZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAg
KiBqcy9kb20vbW9kdWxlcy9pbXBvcnQtbm90LWZvdW5kLWVycm9yLmh0bWw6IEFkZGVkLgorCiAy
MDE3LTAxLTI3ICBZdXN1a2UgU3V6dWtpICA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgogCiAgICAg
ICAgIExpZnQgdGVtcGxhdGUgZXNjYXBlIHNlcXVlbmNlIHJlc3RyaWN0aW9ucyBpbiB0YWdnZWQg
dGVtcGxhdGVzCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L21p
eGVkQ29udGVudC9pbXBvcnQtaW5zZWN1cmUtc2NyaXB0LWluLWlmcmFtZS1leHBlY3RlZC50eHQg
Yi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L21peGVkQ29udGVudC9pbXBvcnQtaW5z
ZWN1cmUtc2NyaXB0LWluLWlmcmFtZS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uY2I2Yjc3ODA1
NjZlYmUwYTdiYzk0OWJiYWZjYTZkNGI3ZWU2ZWMyNwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvbWl4ZWRDb250ZW50L2ltcG9ydC1pbnNlY3VyZS1z
Y3JpcHQtaW4taWZyYW1lLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDEyIEBACitDT05TT0xFIE1F
U1NBR0U6IGxpbmUgMTogW2Jsb2NrZWRdIFRoZSBwYWdlIGF0IGh0dHBzOi8vMTI3LjAuMC4xOjg0
NDMvc2VjdXJpdHkvbWl4ZWRDb250ZW50L3Jlc291cmNlcy9mcmFtZS13aXRoLWluc2VjdXJlLWlt
cG9ydC5odG1sIHdhcyBub3QgYWxsb3dlZCB0byBydW4gaW5zZWN1cmUgY29udGVudCBmcm9tIGh0
dHA6Ly8xMjcuMC4wLjE6ODA4MC9zZWN1cml0eS9taXhlZENvbnRlbnQvcmVzb3VyY2VzL3Njcmlw
dC5qcy4KKworVGhpcyB0ZXN0IGxvYWRzIGEgc2VjdXJlIGlmcmFtZSB0aGF0IGxvYWRzIGFuIGlu
c2VjdXJlIG1vZHVsZSBzY3JpcHQgd2l0aCBpbXBvcnQoKS4gV2Ugc2hvdWxkIHRyaWdnZXIgYSBt
aXhlZCBjb250ZW50IGNhbGxiYWNrIGV2ZW4gdGhvdWdoIHRoZSBtYWluIGZyYW1lIGlzIEhUVFAg
YmVjYXVzZSB0aGUgSFRUUFMgZnJhbWUncyBvcmlnaW4gaXMgY29udGFtaW5hdGVkIHdpdGggYW4g
aW5zZWN1cmUgbW9kdWxlIHNjcmlwdC4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2Vy
aWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisK
K1BBU1Mgd2luZG93LmRhdGEgaXMgIlR5cGVFcnJvcjogSW1wb3J0aW5nIGEgbW9kdWxlIHNjcmlw
dCBmYWlsZWQuIgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBM
RVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvbWl4ZWRD
b250ZW50L2ltcG9ydC1pbnNlY3VyZS1zY3JpcHQtaW4taWZyYW1lLmh0bWwgYi9MYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL3NlY3VyaXR5L21peGVkQ29udGVudC9pbXBvcnQtaW5zZWN1cmUtc2NyaXB0
LWluLWlmcmFtZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjdjZjc5NjFkYzgyYzY5NTgyNGZmOGZjNjIzYjM2
ODA1OGM1OWQ0ZWMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3Nl
Y3VyaXR5L21peGVkQ29udGVudC9pbXBvcnQtaW5zZWN1cmUtc2NyaXB0LWluLWlmcmFtZS5odG1s
CkBAIC0wLDAgKzEsMjAgQEAKKzxodG1sPgorPGJvZHk+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVz
b3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+CitkZXNjcmlwdGlvbihg
VGhpcyB0ZXN0IGxvYWRzIGEgc2VjdXJlIGlmcmFtZSB0aGF0IGxvYWRzIGFuIGluc2VjdXJlIG1v
ZHVsZSBzY3JpcHQgd2l0aCBpbXBvcnQoKS4gV2Ugc2hvdWxkCit0cmlnZ2VyIGEgbWl4ZWQgY29u
dGVudCBjYWxsYmFjayBldmVuIHRob3VnaCB0aGUgbWFpbiBmcmFtZSBpcyBIVFRQIGJlY2F1c2Ug
dGhlCitIVFRQUyBmcmFtZSdzIG9yaWdpbiBpcyBjb250YW1pbmF0ZWQgd2l0aCBhbiBpbnNlY3Vy
ZSBtb2R1bGUgc2NyaXB0LmApOword2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOword2luZG93
LmRhdGEgPSBudWxsOword2luZG93LmFkZEV2ZW50TGlzdGVuZXIoIm1lc3NhZ2UiLCBmdW5jdGlv
biAoZXJyb3IpIHsKKyAgICB3aW5kb3cuZGF0YSA9IGVycm9yLmRhdGE7CisgICAgc2hvdWxkQmUo
YHdpbmRvdy5kYXRhYCwgYCJUeXBlRXJyb3I6IEltcG9ydGluZyBhIG1vZHVsZSBzY3JpcHQgZmFp
bGVkLiJgKTsKKyAgICBmaW5pc2hKU1Rlc3QoKTsKK30sIGZhbHNlKTsKKzwvc2NyaXB0PgorPHNj
cmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPHA+
PC9wPgorPGlmcmFtZSBzcmM9Imh0dHBzOi8vMTI3LjAuMC4xOjg0NDMvc2VjdXJpdHkvbWl4ZWRD
b250ZW50L3Jlc291cmNlcy9mcmFtZS13aXRoLWluc2VjdXJlLWltcG9ydC5odG1sIj48L2lmcmFt
ZT4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMv
c2VjdXJpdHkvbWl4ZWRDb250ZW50L3Jlc291cmNlcy9mcmFtZS13aXRoLWluc2VjdXJlLWltcG9y
dC5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9taXhlZENvbnRlbnQvcmVz
b3VyY2VzL2ZyYW1lLXdpdGgtaW5zZWN1cmUtaW1wb3J0Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDg4YjNk
MjY4NjkyYjIyOGIwNjczZTBkNjg4NTBmZGM2YzZmMjc5MgotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvbWl4ZWRDb250ZW50L3Jlc291cmNlcy9mcmFt
ZS13aXRoLWluc2VjdXJlLWltcG9ydC5odG1sCkBAIC0wLDAgKzEsOCBAQAorPHNjcmlwdD4KK3dp
bmRvdy5vbmxvYWQgPSBmdW5jdGlvbigpIHsKKyAgICBpbXBvcnQoImh0dHA6Ly8xMjcuMC4wLjE6
ODA4MC9zZWN1cml0eS9taXhlZENvbnRlbnQvcmVzb3VyY2VzL3NjcmlwdC5qcyIpLmNhdGNoKGZ1
bmN0aW9uIChlcnJvcikgeworICAgICAgICBpZiAod2luZG93LnBhcmVudCkKKyAgICAgICAgICAg
IHdpbmRvdy5wYXJlbnQucG9zdE1lc3NhZ2UoU3RyaW5nKGVycm9yKSwgJyonKTsKKyAgICB9KTsK
K307Cis8L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2pzL2RvbS9tb2R1bGVzL2lt
cG9ydC1ub3QtZm91bmQtZXJyb3ItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvanMvZG9tL21v
ZHVsZXMvaW1wb3J0LW5vdC1mb3VuZC1lcnJvci1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uN2Jj
YWY5ZGNiOTA0NjQ4N2NmOGNmM2Y1NzRiMmM3ODc5YTVkOGQzZAotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2pzL2RvbS9tb2R1bGVzL2ltcG9ydC1ub3QtZm91bmQtZXJyb3ItZXhwZWN0
ZWQudHh0CkBAIC0wLDAgKzEsMTAgQEAKK1Rlc3QgaW1wb3J0IHdpdGggbm9uIGV4aXN0aW5nIG1v
ZHVsZS4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNz
YWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1MgU3RyaW5nKGVycm9y
KSBpcyAiVHlwZUVycm9yOiBJbXBvcnRpbmcgYSBtb2R1bGUgc2NyaXB0IGZhaWxlZC4iCitQQVNT
IHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvanMvZG9tL21vZHVsZXMvaW1wb3J0LW5vdC1mb3VuZC1lcnJvci5odG1s
IGIvTGF5b3V0VGVzdHMvanMvZG9tL21vZHVsZXMvaW1wb3J0LW5vdC1mb3VuZC1lcnJvci5odG1s
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjQ1YmFhYmNiY2E0MjQ3ZDA0YjkyMWU0YWJlNDM5MTU2OTEyMTgyOTYKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9qcy9kb20vbW9kdWxlcy9pbXBvcnQtbm90LWZv
dW5kLWVycm9yLmh0bWwKQEAgLTAsMCArMSwyNiBAQAorPCFET0NUWVBFIEhUTUw+Cis8aHRtbD4K
KzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+
PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxzY3JpcHQ+CitkZXNjcmlwdGlvbignVGVzdCBp
bXBvcnQgd2l0aCBub24gZXhpc3RpbmcgbW9kdWxlLicpOworCit3aW5kb3cuanNUZXN0SXNBc3lu
YyA9IHRydWU7Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMt
dGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+Cit2YXIgZXJyb3IgPSBudWxsOworKGFz
eW5jIGZ1bmN0aW9uICgpIHsKKyAgICB0cnkgeworICAgICAgICBhd2FpdCBpbXBvcnQoYC4vcmVz
b3VyY2VzL2ltcG9ydC1ub3QtZm91bmQuanNgKTsKKyAgICB9IGNhdGNoIChlKSB7CisgICAgICAg
IGVycm9yID0gZTsKKyAgICB9CisgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKGBTdHJpbmcoZXJy
b3IpYCwgYFR5cGVFcnJvcjogSW1wb3J0aW5nIGEgbW9kdWxlIHNjcmlwdCBmYWlsZWQuYCk7Cisg
ICAgZmluaXNoSlNUZXN0KCk7Cit9KCkpOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>300038</attachid>
            <date>2017-01-28 09:31:52 -0800</date>
            <delta_ts>2017-01-31 13:12:28 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-167501-20170129022945.patch</filename>
            <type>text/plain</type>
            <size>29181</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjExMzM3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzJmZDE2ZWRhZWY5Y2I1
N2E1ZjM1NTUwZjUwODlmZGMzNTJhNzUwYy4uZjBjMTdkNWI2MWUyZjhjZGViNmMzN2I5NDAxNzkz
NDY3OThhYTVhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU1IEBACisyMDE3LTAxLTI4ICBZdXN1
a2UgU3V6dWtpICA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgorCisgICAgICAgIFByb3BhZ2F0ZSBu
ZXR3b3JraW5nIGVycm9ycyBjb3JyZWN0bHkgZm9yIGltcG9ydCgpIG9wZXJhdG9yCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjc1MDEKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXZSB1c2UgdGhlIHByb21p
c2UgY2hhaW4gaW5zaWRlIHRoZSBtb2R1bGUgbG9hZGVyIHBpcGVsaW5lLgorICAgICAgICBUaGUg
cHJvYmxlbSBpcyB0aGF0LAorCisgICAgICAgIDEuIFRoZSBlcnJvcnMgb2YgbG9hZGluZyBtb2R1
bGUgc2NyaXB0cyBhcmUgcHJvcGFnYXRlZCB0aHJvdWdoIHRoZSBwcm9taXNlJ3MgcmVqZWN0aW9u
LgorICAgICAgICAyLiBTb21lIG1vZHVsZSByZWxhdGVkIGVycm9ycyBsaWtlIHN5bnRheCBlcnJv
ciAod2hlbiBzY2FubmluZyBtb2R1bGUgZGVwZW5kZW5jaWVzKSBhcmUKKyAgICAgICAgICAgcmVw
b3J0ZWQgYXQgbG9hZGluZyB0aW1lIChldmFsdWF0aW5nIHRpbWUpLiBUaGVzZSBlcnJvcnMgYXJl
IHByb3BhZ2F0ZWQgdGhyb3VnaCB0aGUKKyAgICAgICAgICAgcHJvbWlzZSByZWplY3Rpb25zIGFu
ZCBkdW1wZWQgdG8gdGhlIGNvbnNvbGUuIExvYWRhYmxlTW9kdWxlU2NyaXB0IHNldCBjYXRjaCBo
YW5kbGVyCisgICAgICAgICAgIGZvciB0aGF0IGFuZCBwcmludCB0aGVzZSBlcnJvcnMgdG8gdGhl
IGNvbnNvbGUgZm9yIFNjcmlwdEVsZW1lbnQuCisgICAgICAgIDMuIFNvbWUgb2YgZXJyb3JzIGFy
ZSBhbHJlYWR5IHJlcG9ydGVkIHRvIHRoZSBjb25zb2xlLiBGb3IgZXhhbXBsZSwgbmV0d29ya2lu
ZyBlcnJvcnMKKyAgICAgICAgICAgYXJlIHJlcG9ydGVkIGJ5IHRoZSBDYWNoZWRNb2R1bGVMb2Fk
ZXIuCisgICAgICAgIDQuIEJ1dCB0aGVyZSBpcyBubyB3YXkgdG8gZGlzdGluZ3Vpc2ggYmV0d2Vl
biAoMikgYW5kICgzKSBhdCB0aGUgY2F0Y2ggaGFuZGxlci4KKworICAgICAgICBQcmV2aW91c2x5
LCB3ZSBwcm9wYWdhdGUgdGhlIHNwZWNpYWwgc3ltYm9sIGZvciB0aGUgYWxyZWFkeSByZXBvcnRl
ZCBlcnJvcnMgdG8gZGlzdGluZ3Vpc2gKKyAgICAgICAgdGhhdC4gVGhpcyB3YXMgT0sgYmVjYXVz
ZSB0aGVzZSBlcnJvcnMgY2Fubm90IGJlIGNhdGNoZWQgYnkgdGhlIHVzZXIgY29kZS4gSG93ZXZl
ciwKKyAgICAgICAgcmVjZW50IGBpbXBvcnQoKWAgY2FsbCBuZWVkcyB0byBleHBvc2UgdGhlc2Ug
ZXJyb3JzIHRvIHRoZSB1c2VyIGNvZGUuIFNvIG5vdywgYWNjaWRlbnRhbGx5LAorICAgICAgICB0
aGUgc3BlY2lhbCBwdXJwb3NlIHN5bWJvbCBpcyBleHBvc2VkLgorCisgICAgICAgIEluc3RlYWQg
b2YgcHJvcGFnYXRpbmcgdGhlIHNwZWNpYWwgc3ltYm9sLCB0aGlzIHBhdGNoIGp1c3QgcHJvcGFn
YXRlcyB0aGUgZXJyb3JzLiBCdXQgdGhlc2UKKyAgICAgICAgZXJyb3Igb2JqZWN0cyBhcmUgYW5u
b3RhdGVkIHdpdGggdGhlIHByaXZhdGUgc3ltYm9sLiBTbyB0aGVzZSBlcnJvcnMgY2FuIGJlIGRp
c3Rpbmd1aXNoZWQKKyAgICAgICAgZnJvbSB0aGUgb3RoZXIgb25lcy4KKworICAgICAgICBDdXJy
ZW50bHksIHdlIGRvIG5vdCBoYXZlIHRoZSB3YXkgdG8gZXhwb3NlIHRoZSBlcnJvciBkZXRhaWxz
IHRvIHRoZSBjbGllbnQgb2YgdGhlCisgICAgICAgIENhY2hlZFNjcmlwdC4gU28gd2UganVzdCBy
ZXBvcnQgdGhlIGVycm9yIHdpdGggdGhlIGZhaWxlZCAvIGNhbmNlbGVkLiBUaGlzIHNob3VsZCBi
ZQorICAgICAgICBtb3JlIGRlc2NyaXB0aXZlIGVycm9yIG1lc3NhZ2VzIGluIHRoZSBzZXBhcmF0
ZSBwYXRjaFsxXS4KKworICAgICAgICBbMV06IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xNjc1NTMKKworICAgICAgICBUZXN0czogaHR0cC90ZXN0cy9zZWN1cml0eS9t
aXhlZENvbnRlbnQvaW1wb3J0LWluc2VjdXJlLXNjcmlwdC1pbi1pZnJhbWUuaHRtbAorICAgICAg
ICAgICAgICAganMvZG9tL21vZHVsZXMvaW1wb3J0LW5vdC1mb3VuZC1lcnJvci5odG1sCisKKyAg
ICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogYmlu
ZGluZ3MvanMvSG9zdEVycm9yS2luZC5oOiBBZGRlZC4KKyAgICAgICAgKiBiaW5kaW5ncy9qcy9K
U0RPTVByb21pc2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OkRlZmVycmVkUHJvbWlzZTo6cmVzb2x2
ZVdpdGhDYWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpEZWZlcnJlZFByb21pc2U6OnJlamVj
dFdpdGhDYWxsYmFjayk6CisgICAgICAgICogYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRDb250cm9sbGVyOjpzZXR1cE1vZHVsZVNjcmlw
dEhhbmRsZXJzKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmg6Cisg
ICAgICAgIChXZWJDb3JlOjpTY3JpcHRDb250cm9sbGVyOjptb2R1bGVMb2FkZXJBbHJlYWR5UmVw
b3J0ZWRFcnJvclN5bWJvbCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRDb250
cm9sbGVyOjptb2R1bGVMb2FkZXJGZXRjaGluZ0lzQ2FuY2VsZWRTeW1ib2wpOiBEZWxldGVkLgor
ICAgICAgICAqIGJpbmRpbmdzL2pzL1NjcmlwdE1vZHVsZUxvYWRlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpTY3JpcHRNb2R1bGVMb2FkZXI6OmZldGNoKToKKyAgICAgICAgKFdlYkNvcmU6OlNj
cmlwdE1vZHVsZUxvYWRlcjo6bm90aWZ5RmluaXNoZWQpOgorICAgICAgICAqIGJpbmRpbmdzL2pz
L1dlYkNvcmVCdWlsdGluTmFtZXMuaDoKKwogMjAxNy0wMS0yOCAgWmFsYW4gQnVqdGFzICA8emFs
YW5AYXBwbGUuY29tPgogCiAgICAgICAgIFJlc29sdmUgYmVmb3JlQ2hpbGQncyByZW5kZXIgdHJl
ZSBwb3NpdGlvbiBiZWZvcmUgY2FsbGluZyBhZGRDaGlsZElnbm9yaW5nQ29udGludWF0aW9uLgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmlu
ZGV4IGEzZWJiZDFiYWIwMmFiZTdhNGFhZWExMmUyMGMxNTc5ZjE2ZTVkZTQuLmYxMmNkODg1NGM4
Nzg1ZGExMWZjNmE4ODU1NTdiMTY0NmM1YzBjNTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTI2NzMsNiArMjY3Myw3IEBACiAJ
CTZGOTk1QTM5MUE3MDgzMzcwMEE3MzVGNCAvKiBKU1dlYkdMVmVydGV4QXJyYXlPYmplY3QuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNkY5OTVBMkYx
QTcwODMzNzAwQTczNUY0IC8qIEpTV2ViR0xWZXJ0ZXhBcnJheU9iamVjdC5jcHAgKi87IH07CiAJ
CTZGOTk1QTNBMUE3MDgzMzcwMEE3MzVGNCAvKiBKU1dlYkdMVmVydGV4QXJyYXlPYmplY3QuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDZGOTk1QTMwMUE3
MDgzMzcwMEE3MzVGNCAvKiBKU1dlYkdMVmVydGV4QXJyYXlPYmplY3QuaCAqLzsgfTsKIAkJNkZB
NDQ1NEU4OThGMkZDMTY4QkMzOEMxIC8qIEpTQmVmb3JlVW5sb2FkRXZlbnQuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDI5RTA0QTI3QkVEMkY4MUY5OEU5
MDIyQiAvKiBKU0JlZm9yZVVubG9hZEV2ZW50LmggKi87IH07CisJCTcwOUEwMUZFMUUzRDBCREQw
MDZCMEQ0QyAvKiBIb3N0RXJyb3JLaW5kLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA3MDlBMDFGRDFFM0QwQkNDMDA2QjBENEMgLyogSG9zdEVycm9yS2lu
ZC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTcw
RjU0NkU4QjhCNUQ3REM1NEVFMTQ0RSAvKiBKU0JlZm9yZVVubG9hZEV2ZW50LmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgyMjU0MzJDQTlENEI0Q0Y0
NjI4RUM3RiAvKiBKU0JlZm9yZVVubG9hZEV2ZW50LmNwcCAqLzsgfTsKIAkJNzExNzQ0NTkxNEJD
MzRFQzAwRUU1RkM4IC8qIFNWR1RleHRNZXRyaWNzQnVpbGRlci5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzExNzQ0NTcxNEJDMzRFMjAwRUU1RkM4IC8q
IFNWR1RleHRNZXRyaWNzQnVpbGRlci5oICovOyB9OwogCQk3MTE4RkVENDE1Njg1Q0M2MDAzMEI3
OUEgLyogSlNTVkdWaWV3U3BlYy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA3MTE4RkVEMjE1Njg1Q0M2MDAzMEI3OUEgLyogSlNTVkdWaWV3U3BlYy5j
cHAgKi87IH07CkBAIC0xMDAyMCw2ICsxMDAyMSw3IEBACiAJCTZGOTk1QTJGMUE3MDgzMzcwMEE3
MzVGNCAvKiBKU1dlYkdMVmVydGV4QXJyYXlPYmplY3QuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gSlNXZWJHTFZlcnRleEFycmF5T2JqZWN0LmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNkY5OTVBMzAxQTcwODMzNzAwQTczNUY0IC8qIEpTV2ViR0xW
ZXJ0ZXhBcnJheU9iamVjdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1dl
YkdMVmVydGV4QXJyYXlPYmplY3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNkZB
RDRBNTYxQTlEMEZBRTAwOUY3RDNDIC8qIE9wZW5HTEVTU1BJLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE9w
ZW5HTEVTU1BJLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTcwOUEwMUZEMUUzRDBC
Q0MwMDZCMEQ0QyAvKiBIb3N0RXJyb3JLaW5kLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IEhvc3RFcnJvcktpbmQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzEw
MDRCOUExREMxMTA5MzAwQTUyQTM4IC8qIGVsYXBzZWQtdGltZS1zdXBwb3J0LmpzICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5qYXZhc2NyaXB0OyBwYXRoID0gImVsYXBzZWQtdGltZS1zdXBwb3J0Lmpz
Ijsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzEwMDRCOUIxREMxMTA5MzAwQTUyQTM4
IC8qIHJlbWFpbmluZy10aW1lLXN1cHBvcnQuanMgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmphdmFz
Y3JpcHQ7IHBhdGggPSAicmVtYWluaW5nLXRpbWUtc3VwcG9ydC5qcyI7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTcxMDA0QjlEMURDMTM5ODgwMEE1MkEzOCAvKiBwbGF5YmFjay1zdXBw
b3J0LmpzICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5qYXZhc2NyaXB0OyBwYXRoID0gInBsYXliYWNr
LXN1cHBvcnQuanMiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjIxNDEsNiArMjIx
NDMsNyBAQAogCQkJCUJDNTNEQTJEMTE0MzEyMUUwMDBEODE3RSAvKiBET01XcmFwcGVyV29ybGQu
aCAqLywKIAkJCQkxNDMyRTg0ODBDNTE0OTNGMDBCMTUwMEYgLyogR0NDb250cm9sbGVyLmNwcCAq
LywKIAkJCQkxNDMyRTg0NjBDNTE0OTM4MDBCMTUwMEYgLyogR0NDb250cm9sbGVyLmggKi8sCisJ
CQkJNzA5QTAxRkQxRTNEMEJDQzAwNkIwRDRDIC8qIEhvc3RFcnJvcktpbmQuaCAqLywKIAkJCQlD
NTg1QTY2MDExRDRGQUM1MDA0QzNFNEIgLyogSURCQmluZGluZ1V0aWxpdGllcy5jcHAgKi8sCiAJ
CQkJQzU4NUE2NjExMUQ0RkFDNTAwNEMzRTRCIC8qIElEQkJpbmRpbmdVdGlsaXRpZXMuaCAqLywK
IAkJCQlFMTU3QThFRTE4MTg1NDI1MDA5RjgyMUQgLyogSlNDcnlwdG9BbGdvcml0aG1CdWlsZGVy
LmNwcCAqLywKQEAgLTI1OTI0LDYgKzI1OTI3LDcgQEAKIAkJCQlBODEzNjlEMDA5NzM3NEY2MDBE
NzQ0NjMgLyogSFRNTEZvcm1FbGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlBODcxREUyQjBB
MTUyQUM4MDBCMTJBNjggLyogSFRNTEZyYW1lRWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MTRGRkUzMUQwQUUxOTYzMzAwMTM2QkY1IC8qIEhUTUxGcmFtZUVsZW1lbnRCYXNlLmggaW4gSGVh
ZGVycyAqLywKKwkJCQk3MDlBMDFGRTFFM0QwQkREMDA2QjBENEMgLyogSG9zdEVycm9yS2luZC5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJOTNFMjQxRkYwQjJCNEU0MDAwQzczMkExIC8qIEhUTUxGcmFt
ZU93bmVyRWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTg3MURFMjgwQTE1MkFDODAwQjEy
QTY4IC8qIEhUTUxGcmFtZVNldEVsZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUE4NzFERTJE
MEExNTJBQzgwMEIxMkE2OCAvKiBIVE1MSGVhZEVsZW1lbnQuaCBpbiBIZWFkZXJzICovLApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSG9zdEVycm9yS2luZC5oIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSG9zdEVycm9yS2luZC5oCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjU2M2U4
YTE3MjAyMWI5MGFkYWE1M2RjNjZkMWZiYTZjMDQ0YjRjNWQKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9Ib3N0RXJyb3JLaW5kLmgKQEAgLTAsMCArMSwzNiBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBZdXN1a2UgU3V6dWtpIDx1dGF0YW5lLnRlYUBn
bWFpbC5jb20+CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
KyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisg
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCituYW1lc3BhY2UgV2ViQ29yZSB7
CisKK2VudW0gY2xhc3MgSG9zdEVycm9yS2luZCB7CisgICAgTW9kdWxlRmV0Y2hXYXNFcnJvcmVk
LAorICAgIE1vZHVsZUZldGNoV2FzQ2FuY2VsZWQsCit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCisKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NUHJvbWlz
ZS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01Qcm9taXNlLmgKaW5kZXggZDg2
NGUyNWZkNmI0OWE4NGE0YTMyNTk1Y2IxOGI0ODE3ZGQxYzA4MS4uMzk1MzBjYzZlM2I4NGIwYjMx
ZGU5MmNkMWZiODk5ZGIxN2Y2OTcwYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNET01Qcm9taXNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNE
T01Qcm9taXNlLmgKQEAgLTk0LDggKzk0LDggQEAgY2xhc3MgRGVmZXJyZWRQcm9taXNlIDogcHVi
bGljIFJlZkNvdW50ZWQ8RGVmZXJyZWRQcm9taXNlPiwgcHVibGljIEFjdGl2ZURPTUNhbGwKICAg
ICB2b2lkIHJlamVjdChFeGNlcHRpb25Db2RlLCBjb25zdCBTdHJpbmcmID0geyB9KTsKICAgICB2
b2lkIHJlamVjdChjb25zdCBKU0M6OlByaXZhdGVOYW1lJik7CiAKLSAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBDYWxsYmFjaywgdHlwZW5hbWUgVmFsdWU+Ci0gICAgdm9pZCByZXNvbHZlV2l0aENhbGxi
YWNrKENhbGxiYWNrIGNhbGxiYWNrLCBWYWx1ZSB2YWx1ZSkKKyAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBDYWxsYmFjaz4KKyAgICB2b2lkIHJlc29sdmVXaXRoQ2FsbGJhY2soQ2FsbGJhY2sgY2FsbGJh
Y2spCiAgICAgewogICAgICAgICBpZiAoaXNTdXNwZW5kZWQoKSkKICAgICAgICAgICAgIHJldHVy
bjsKQEAgLTEwMyw3ICsxMDMsMTkgQEAgY2xhc3MgRGVmZXJyZWRQcm9taXNlIDogcHVibGljIFJl
ZkNvdW50ZWQ8RGVmZXJyZWRQcm9taXNlPiwgcHVibGljIEFjdGl2ZURPTUNhbGwKICAgICAgICAg
QVNTRVJUKG1fZ2xvYmFsT2JqZWN0KTsKICAgICAgICAgSlNDOjpFeGVjU3RhdGUqIGV4ZWMgPSBt
X2dsb2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpOwogICAgICAgICBKU0M6OkpTTG9ja0hvbGRlciBs
b2NrZXIoZXhlYyk7Ci0gICAgICAgIHJlc29sdmUoKmV4ZWMsIGNhbGxiYWNrKCpleGVjLCAqbV9n
bG9iYWxPYmplY3QuZ2V0KCksIHN0ZDo6Zm9yd2FyZDxWYWx1ZT4odmFsdWUpKSk7CisgICAgICAg
IHJlc29sdmUoKmV4ZWMsIGNhbGxiYWNrKCpleGVjLCAqbV9nbG9iYWxPYmplY3QuZ2V0KCkpKTsK
KyAgICB9CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDYWxsYmFjaz4KKyAgICB2b2lkIHJlamVj
dFdpdGhDYWxsYmFjayhDYWxsYmFjayBjYWxsYmFjaykKKyAgICB7CisgICAgICAgIGlmIChpc1N1
c3BlbmRlZCgpKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBBU1NFUlQobV9kZWZlcnJl
ZCk7CisgICAgICAgIEFTU0VSVChtX2dsb2JhbE9iamVjdCk7CisgICAgICAgIEpTQzo6RXhlY1N0
YXRlKiBleGVjID0gbV9nbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKTsKKyAgICAgICAgSlNDOjpK
U0xvY2tIb2xkZXIgbG9ja2VyKGV4ZWMpOworICAgICAgICByZWplY3QoKmV4ZWMsIGNhbGxiYWNr
KCpleGVjLCAqbV9nbG9iYWxPYmplY3QuZ2V0KCkpKTsKICAgICB9CiAKICAgICBKU0M6OkpTVmFs
dWUgcHJvbWlzZSgpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvU2NyaXB0Q29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3Jp
cHRDb250cm9sbGVyLmNwcAppbmRleCBhZGJlYWZmMWEwNWY0OGNlYmMzMTg3YzdkNTg2NTBiZTQw
NzlmZWJmLi4yM2YxMjU4NGY5OWU4MGIwZDlkMmFkZTM5ODg4ZTY0ZmRlNjA3ZTU3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmNwcApAQCAtMzEs
NiArMzEsNyBAQAogI2luY2x1ZGUgIkZyYW1lTG9hZGVyQ2xpZW50LmgiCiAjaW5jbHVkZSAiR0ND
b250cm9sbGVyLmgiCiAjaW5jbHVkZSAiSFRNTFBsdWdJbkVsZW1lbnQuaCIKKyNpbmNsdWRlICJI
b3N0RXJyb3JLaW5kLmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgiCiAj
aW5jbHVkZSAiSlNET01XaW5kb3cuaCIKICNpbmNsdWRlICJKU0RvY3VtZW50LmgiCkBAIC0zNzcs
OSArMzc4LDYgQEAgdm9pZCBTY3JpcHRDb250cm9sbGVyOjpzZXR1cE1vZHVsZVNjcmlwdEhhbmRs
ZXJzKExvYWRhYmxlTW9kdWxlU2NyaXB0JiBtb2R1bGVTY3IKICAgICAvLyBGb3IgZXhhbXBsZSwg
aWYgdGhlIHBhZ2UgbG9hZCBpcyBjYW5jZWxlZCwgdGhlIERlZmVycmVkUHJvbWlzZSB1c2VkIGlu
IHRoZSBtb2R1bGUgbG9hZGVyIHBpcGVsaW5lIHdpbGwgc3RvcCBleGVjdXRpbmcgSlMgY29kZS4K
ICAgICAvLyBUaHVzIHRoZSBwcm9taXNlIHJldHVybmVkIGZyb20gdGhpcyBmdW5jdGlvbiBjb3Vs
ZCByZW1haW4gdW5yZXNvbHZlZC4KIAotICAgIEpTQzo6UHJpdmF0ZU5hbWUgbW9kdWxlTG9hZGVy
QWxyZWFkeVJlcG9ydGVkRXJyb3JTeW1ib2wgPSBtX21vZHVsZUxvYWRlckFscmVhZHlSZXBvcnRl
ZEVycm9yU3ltYm9sOwotICAgIEpTQzo6UHJpdmF0ZU5hbWUgbW9kdWxlTG9hZGVyRmV0Y2hpbmdJ
c0NhbmNlbGVkU3ltYm9sID0gbV9tb2R1bGVMb2FkZXJGZXRjaGluZ0lzQ2FuY2VsZWRTeW1ib2w7
Ci0KICAgICBSZWZQdHI8TG9hZGFibGVNb2R1bGVTY3JpcHQ+IG1vZHVsZVNjcmlwdCgmbW9kdWxl
U2NyaXB0UmVmKTsKIAogICAgIGF1dG8mIGZ1bGZpbGxIYW5kbGVyID0gKkpTTmF0aXZlU3RkRnVu
Y3Rpb246OmNyZWF0ZShzdGF0ZS52bSgpLCBzaGVsbC53aW5kb3coKSwgMSwgU3RyaW5nKCksIFtt
b2R1bGVTY3JpcHRdKEV4ZWNTdGF0ZSogZXhlYykgewpAQCAtMzg4LDIwICszODYsMjcgQEAgdm9p
ZCBTY3JpcHRDb250cm9sbGVyOjpzZXR1cE1vZHVsZVNjcmlwdEhhbmRsZXJzKExvYWRhYmxlTW9k
dWxlU2NyaXB0JiBtb2R1bGVTY3IKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1Vu
ZGVmaW5lZCgpKTsKICAgICB9KTsKIAotICAgIGF1dG8mIHJlamVjdEhhbmRsZXIgPSAqSlNOYXRp
dmVTdGRGdW5jdGlvbjo6Y3JlYXRlKHN0YXRlLnZtKCksIHNoZWxsLndpbmRvdygpLCAxLCBTdHJp
bmcoKSwgW21vZHVsZVNjcmlwdCwgbW9kdWxlTG9hZGVyQWxyZWFkeVJlcG9ydGVkRXJyb3JTeW1i
b2wsIG1vZHVsZUxvYWRlckZldGNoaW5nSXNDYW5jZWxlZFN5bWJvbF0oRXhlY1N0YXRlKiBleGVj
KSB7Ci0gICAgICAgIEpTVmFsdWUgZXJyb3IgPSBleGVjLT5hcmd1bWVudCgwKTsKKyAgICBhdXRv
JiByZWplY3RIYW5kbGVyID0gKkpTTmF0aXZlU3RkRnVuY3Rpb246OmNyZWF0ZShzdGF0ZS52bSgp
LCBzaGVsbC53aW5kb3coKSwgMSwgU3RyaW5nKCksIFttb2R1bGVTY3JpcHRdKEV4ZWNTdGF0ZSog
ZXhlYykgewogICAgICAgICBWTSYgdm0gPSBleGVjLT52bSgpOwotICAgICAgICBpZiAoYXV0byog
c3ltYm9sID0ganNEeW5hbWljQ2FzdDxTeW1ib2wqPih2bSwgZXJyb3IpKSB7Ci0gICAgICAgICAg
ICBpZiAoc3ltYm9sLT5wcml2YXRlTmFtZSgpID09IG1vZHVsZUxvYWRlckFscmVhZHlSZXBvcnRl
ZEVycm9yU3ltYm9sKSB7Ci0gICAgICAgICAgICAgICAgbW9kdWxlU2NyaXB0LT5ub3RpZnlMb2Fk
RmFpbGVkKExvYWRhYmxlU2NyaXB0OjpFcnJvciB7Ci0gICAgICAgICAgICAgICAgICAgIExvYWRh
YmxlU2NyaXB0OjpFcnJvclR5cGU6OkNhY2hlZFNjcmlwdCwKLSAgICAgICAgICAgICAgICAgICAg
c3RkOjpudWxsb3B0Ci0gICAgICAgICAgICAgICAgfSk7Ci0gICAgICAgICAgICAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKLSAgICAgICAgICAgIH0KLQotICAgICAg
ICAgICAgaWYgKHN5bWJvbC0+cHJpdmF0ZU5hbWUoKSA9PSBtb2R1bGVMb2FkZXJGZXRjaGluZ0lz
Q2FuY2VsZWRTeW1ib2wpIHsKLSAgICAgICAgICAgICAgICBtb2R1bGVTY3JpcHQtPm5vdGlmeUxv
YWRXYXNDYW5jZWxlZCgpOworICAgICAgICBKU1ZhbHVlIGVycm9yVmFsdWUgPSBleGVjLT5hcmd1
bWVudCgwKTsKKyAgICAgICAgaWYgKGVycm9yVmFsdWUuaXNPYmplY3QoKSkgeworICAgICAgICAg
ICAgYXV0byogb2JqZWN0ID0gSlNDOjphc09iamVjdChlcnJvclZhbHVlKTsKKyAgICAgICAgICAg
IEpTVmFsdWUgZXJyb3JLaW5kVmFsdWUgPSBvYmplY3QtPmdldERpcmVjdCh2bSwgc3RhdGljX2Nh
c3Q8SlNWTUNsaWVudERhdGEmPigqdm0uY2xpZW50RGF0YSkuYnVpbHRpbk5hbWVzKCkuZXJyb3JL
aW5kUHJpdmF0ZU5hbWUoKSk7CisgICAgICAgICAgICBpZiAoZXJyb3JLaW5kVmFsdWUpIHsKKyAg
ICAgICAgICAgICAgICAvLyBUaGlzIGlzIGhvc3QgcHJvcGFnYXRlZCBlcnJvciBpbiB0aGUgbW9k
dWxlIGxvYWRlciBwaXBlbGluZS4KKyAgICAgICAgICAgICAgICBzd2l0Y2ggKHN0YXRpY19jYXN0
PEhvc3RFcnJvcktpbmQ+KGVycm9yS2luZFZhbHVlLmFzSW50MzIoKSkpIHsKKyAgICAgICAgICAg
ICAgICBjYXNlIEhvc3RFcnJvcktpbmQ6Ok1vZHVsZUZldGNoV2FzRXJyb3JlZDogeworICAgICAg
ICAgICAgICAgICAgICBtb2R1bGVTY3JpcHQtPm5vdGlmeUxvYWRGYWlsZWQoTG9hZGFibGVTY3Jp
cHQ6OkVycm9yIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIExvYWRhYmxlU2NyaXB0OjpFcnJv
clR5cGU6OkNhY2hlZFNjcmlwdCwKKyAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6bnVsbG9w
dAorICAgICAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGNhc2UgSG9zdEVycm9yS2luZDo6TW9k
dWxlRmV0Y2hXYXNDYW5jZWxlZDogeworICAgICAgICAgICAgICAgICAgICBtb2R1bGVTY3JpcHQt
Pm5vdGlmeUxvYWRXYXNDYW5jZWxlZCgpOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiAgICAgICAgICAgICB9CiAgICAgICAg
IH0KQEAgLTQxMiw3ICs0MTcsNyBAQCB2b2lkIFNjcmlwdENvbnRyb2xsZXI6OnNldHVwTW9kdWxl
U2NyaXB0SGFuZGxlcnMoTG9hZGFibGVNb2R1bGVTY3JpcHQmIG1vZHVsZVNjcgogICAgICAgICAg
ICAgTG9hZGFibGVTY3JpcHQ6OkNvbnNvbGVNZXNzYWdlIHsKICAgICAgICAgICAgICAgICBNZXNz
YWdlU291cmNlOjpKUywKICAgICAgICAgICAgICAgICBNZXNzYWdlTGV2ZWw6OkVycm9yLAotICAg
ICAgICAgICAgICAgIHJldHJpZXZlRXJyb3JNZXNzYWdlKCpleGVjLCB2bSwgZXJyb3IsIHNjb3Bl
KSwKKyAgICAgICAgICAgICAgICByZXRyaWV2ZUVycm9yTWVzc2FnZSgqZXhlYywgdm0sIGVycm9y
VmFsdWUsIHNjb3BlKSwKICAgICAgICAgICAgIH0KICAgICAgICAgfSk7CiAgICAgICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmgKaW5kZXggZGE0MjNlN2ZmN2E4MDk1N2ZlNmY0ZTY0
MjdlZDA4YTk1ZjkzOTA0NC4uNGYyMTJjM2FmODAzMDE2ZmIzZjI5NWUyZWJjNWZiODhiODhlNGI1
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxl
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuaApA
QCAtMTQ1LDkgKzE0NSw2IEBAIGNsYXNzIFNjcmlwdENvbnRyb2xsZXIgewogCiAgICAgY29uc3Qg
U3RyaW5nKiBzb3VyY2VVUkwoKSBjb25zdCB7IHJldHVybiBtX3NvdXJjZVVSTDsgfSAvLyAwIGlm
IHdlIGFyZSBub3QgZXZhbHVhdGluZyBhbnkgc2NyaXB0CiAKLSAgICBjb25zdCBKU0M6OlByaXZh
dGVOYW1lJiBtb2R1bGVMb2FkZXJBbHJlYWR5UmVwb3J0ZWRFcnJvclN5bWJvbCgpIGNvbnN0IHsg
cmV0dXJuIG1fbW9kdWxlTG9hZGVyQWxyZWFkeVJlcG9ydGVkRXJyb3JTeW1ib2w7IH0KLSAgICBj
b25zdCBKU0M6OlByaXZhdGVOYW1lJiBtb2R1bGVMb2FkZXJGZXRjaGluZ0lzQ2FuY2VsZWRTeW1i
b2woKSBjb25zdCB7IHJldHVybiBtX21vZHVsZUxvYWRlckZldGNoaW5nSXNDYW5jZWxlZFN5bWJv
bDsgfQotCiAgICAgdm9pZCBjbGVhcldpbmRvd1NoZWxsc05vdE1hdGNoaW5nRE9NV2luZG93KERP
TVdpbmRvdyosIGJvb2wgZ29pbmdJbnRvUGFnZUNhY2hlKTsKICAgICB2b2lkIHNldERPTVdpbmRv
d0ZvcldpbmRvd1NoZWxsKERPTVdpbmRvdyopOwogICAgIHZvaWQgdXBkYXRlRG9jdW1lbnQoKTsK
QEAgLTE5MCw4ICsxODcsNiBAQCBjbGFzcyBTY3JpcHRDb250cm9sbGVyIHsKICAgICBjb25zdCBT
dHJpbmcqIG1fc291cmNlVVJMOwogCiAgICAgYm9vbCBtX3BhdXNlZDsKLSAgICBKU0M6OlByaXZh
dGVOYW1lIG1fbW9kdWxlTG9hZGVyQWxyZWFkeVJlcG9ydGVkRXJyb3JTeW1ib2w7Ci0gICAgSlND
OjpQcml2YXRlTmFtZSBtX21vZHVsZUxvYWRlckZldGNoaW5nSXNDYW5jZWxlZFN5bWJvbDsKIAog
ICAgIC8vIFRoZSByb290IG9iamVjdCB1c2VkIGZvciBvYmplY3RzIGJvdW5kIG91dHNpZGUgdGhl
IGNvbnRleHQgb2YgYSBwbHVnaW4sIHN1Y2gKICAgICAvLyBhcyBOUEFQSSBwbHVnaW5zLiBUaGUg
cGx1Z2lucyB1c2luZyB0aGVzZSBvYmplY3RzIHByZXZlbnQgYSBwYWdlIGZyb20gYmVpbmcgY2Fj
aGVkIHNvIHRoZXkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1Njcmlw
dE1vZHVsZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRNb2R1
bGVMb2FkZXIuY3BwCmluZGV4IDg5YWNhZmZmY2JmODhkOTUyOThkY2FjMDk3OTRiMmM4ZWJjZTdm
NzEuLjk0Y2JlYTgwMjhmZWU3NzIwNWEzZTg2YzFhZjk5NTE3MjZkMWU4Y2IgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdE1vZHVsZUxvYWRlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0TW9kdWxlTG9hZGVyLmNwcApAQCAtMzEs
MTEgKzMxLDEzIEBACiAjaW5jbHVkZSAiQ2FjaGVkU2NyaXB0RmV0Y2hlci5oIgogI2luY2x1ZGUg
IkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiRnJhbWUuaCIKKyNpbmNsdWRlICJIb3N0RXJyb3JLaW5k
LmgiCiAjaW5jbHVkZSAiSlNET01CaW5kaW5nLmgiCiAjaW5jbHVkZSAiTG9hZGFibGVNb2R1bGVT
Y3JpcHQuaCIKICNpbmNsdWRlICJNSU1FVHlwZVJlZ2lzdHJ5LmgiCiAjaW5jbHVkZSAiU2NyaXB0
Q29udHJvbGxlci5oIgogI2luY2x1ZGUgIlNjcmlwdFNvdXJjZUNvZGUuaCIKKyNpbmNsdWRlICJX
ZWJDb3JlSlNDbGllbnREYXRhLmgiCiAjaW5jbHVkZSA8cnVudGltZS9Db21wbGV0aW9uLmg+CiAj
aW5jbHVkZSA8cnVudGltZS9KU0ludGVybmFsUHJvbWlzZS5oPgogI2luY2x1ZGUgPHJ1bnRpbWUv
SlNJbnRlcm5hbFByb21pc2VEZWZlcnJlZC5oPgpAQCAtMTQ4LDE1ICsxNTAsMjMgQEAgSlNDOjpK
U0ludGVybmFsUHJvbWlzZSogU2NyaXB0TW9kdWxlTG9hZGVyOjpmZXRjaChKU0M6OkpTR2xvYmFs
T2JqZWN0KiBqc0dsb2JhbE8KICAgICAgICAgcmV0dXJuIGpzUHJvbWlzZS5wcm9taXNlKCk7CiAg
ICAgfQogCi0gICAgaWYgKGF1dG8qIGZyYW1lID0gbV9kb2N1bWVudC5mcmFtZSgpKSB7Ci0gICAg
ICAgIGF1dG8gbG9hZGVyID0gQ2FjaGVkTW9kdWxlU2NyaXB0TG9hZGVyOjpjcmVhdGUoKnRoaXMs
IGRlZmVycmVkLmdldCgpLCAqc3RhdGljX2Nhc3Q8Q2FjaGVkU2NyaXB0RmV0Y2hlcio+KEpTQzo6
anNDYXN0PEpTQzo6SlNTY3JpcHRGZXRjaGVyKj4oc2NyaXB0RmV0Y2hlciktPmZldGNoZXIoKSkp
OwotICAgICAgICBtX2xvYWRlcnMuYWRkKGxvYWRlci5jb3B5UmVmKCkpOwotICAgICAgICBpZiAo
IWxvYWRlci0+bG9hZChtX2RvY3VtZW50LCBjb21wbGV0ZWRVUkwpKSB7Ci0gICAgICAgICAgICBs
b2FkZXItPmNsZWFyQ2xpZW50KCk7Ci0gICAgICAgICAgICBtX2xvYWRlcnMucmVtb3ZlKFdURk1v
dmUobG9hZGVyKSk7Ci0gICAgICAgICAgICBkZWZlcnJlZC0+cmVqZWN0KGZyYW1lLT5zY3JpcHQo
KS5tb2R1bGVMb2FkZXJBbHJlYWR5UmVwb3J0ZWRFcnJvclN5bWJvbCgpKTsKLSAgICAgICAgICAg
IHJldHVybiBqc1Byb21pc2UucHJvbWlzZSgpOwotICAgICAgICB9CisgICAgYXV0byBsb2FkZXIg
PSBDYWNoZWRNb2R1bGVTY3JpcHRMb2FkZXI6OmNyZWF0ZSgqdGhpcywgZGVmZXJyZWQuZ2V0KCks
ICpzdGF0aWNfY2FzdDxDYWNoZWRTY3JpcHRGZXRjaGVyKj4oSlNDOjpqc0Nhc3Q8SlNDOjpKU1Nj
cmlwdEZldGNoZXIqPihzY3JpcHRGZXRjaGVyKS0+ZmV0Y2hlcigpKSk7CisgICAgbV9sb2FkZXJz
LmFkZChsb2FkZXIuY29weVJlZigpKTsKKyAgICBpZiAoIWxvYWRlci0+bG9hZChtX2RvY3VtZW50
LCBjb21wbGV0ZWRVUkwpKSB7CisgICAgICAgIGxvYWRlci0+Y2xlYXJDbGllbnQoKTsKKyAgICAg
ICAgbV9sb2FkZXJzLnJlbW92ZShXVEZNb3ZlKGxvYWRlcikpOworICAgICAgICAvLyBSZWplY3Qg
YSBwcm9taXNlIHRvIHByb3BhZ2F0ZSB0aGUgZXJyb3IgYmFjayBhbGwgdGhlIHdheSB0aHJvdWdo
IG1vZHVsZSBwcm9taXNlIGNoYWlucyB0byB0aGUgc2NyaXB0IGVsZW1lbnQuCisgICAgICAgIGRl
ZmVycmVkLT5yZWplY3RXaXRoQ2FsbGJhY2soW10gKEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSwgSlNE
T01HbG9iYWxPYmplY3QmKSB7CisgICAgICAgICAgICAvLyBXZSBhbm5vdGF0ZSBleGNlcHRpb24g
d2l0aCBzcGVjaWFsIHByaXZhdGUgc3ltYm9sLiBJdCBhbGxvd3MgdXMgdG8gZGlzdGluZ3Vpc2gg
dGhlc2UgZXJyb3JzIGZyb20gdGhlIHVzZXIgdGhyb3duIG9uZXMuCisgICAgICAgICAgICBKU0M6
OlZNJiB2bSA9IHN0YXRlLnZtKCk7CisgICAgICAgICAgICAvLyBGSVhNRTogUHJvcGFnYXRlIG1v
cmUgZGVzY3JpcHRpdmUgZXJyb3IuCisgICAgICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY3NTUzCisgICAgICAgICAgICBhdXRvKiBlcnJvciA9IEpT
Qzo6Y3JlYXRlVHlwZUVycm9yKCZzdGF0ZSwgQVNDSUlMaXRlcmFsKCJJbXBvcnRpbmcgYSBtb2R1
bGUgc2NyaXB0IGZhaWxlZC4iKSk7CisgICAgICAgICAgICBBU1NFUlQoZXJyb3IpOworICAgICAg
ICAgICAgZXJyb3ItPnB1dERpcmVjdCh2bSwgc3RhdGljX2Nhc3Q8SlNWTUNsaWVudERhdGEmPigq
dm0uY2xpZW50RGF0YSkuYnVpbHRpbk5hbWVzKCkuZXJyb3JLaW5kUHJpdmF0ZU5hbWUoKSwgSlND
Ojpqc051bWJlcihzdGF0aWNfY2FzdDxpbnQzMl90PihIb3N0RXJyb3JLaW5kOjpNb2R1bGVGZXRj
aFdhc0Vycm9yZWQpKSk7CisgICAgICAgICAgICByZXR1cm4gZXJyb3I7CisgICAgICAgIH0pOwor
ICAgICAgICByZXR1cm4ganNQcm9taXNlLnByb21pc2UoKTsKICAgICB9CiAKICAgICByZXR1cm4g
anNQcm9taXNlLnByb21pc2UoKTsKQEAgLTIzMiw0MyArMjQyLDUzIEBAIHZvaWQgU2NyaXB0TW9k
dWxlTG9hZGVyOjpub3RpZnlGaW5pc2hlZChDYWNoZWRNb2R1bGVTY3JpcHRMb2FkZXImIGxvYWRl
ciwgUmVmUHRyCiAKICAgICBhdXRvJiBjYWNoZWRTY3JpcHQgPSAqbG9hZGVyLmNhY2hlZFNjcmlw
dCgpOwogCi0gICAgYm9vbCBmYWlsZWQgPSBmYWxzZTsKLQogICAgIGlmIChjYWNoZWRTY3JpcHQu
cmVzb3VyY2VFcnJvcigpLmlzQWNjZXNzQ29udHJvbCgpKSB7CiAgICAgICAgIHByb21pc2UtPnJl
amVjdChUeXBlRXJyb3IsIEFTQ0lJTGl0ZXJhbCgiQ3Jvc3Mtb3JpZ2luIHNjcmlwdCBsb2FkIGRl
bmllZCBieSBDcm9zcy1PcmlnaW4gUmVzb3VyY2UgU2hhcmluZyBwb2xpY3kuIikpOwogICAgICAg
ICByZXR1cm47CiAgICAgfQogCi0gICAgaWYgKGNhY2hlZFNjcmlwdC5lcnJvck9jY3VycmVkKCkp
Ci0gICAgICAgIGZhaWxlZCA9IHRydWU7Ci0gICAgZWxzZSBpZiAoIU1JTUVUeXBlUmVnaXN0cnk6
OmlzU3VwcG9ydGVkSmF2YVNjcmlwdE1JTUVUeXBlKGNhY2hlZFNjcmlwdC5yZXNwb25zZSgpLm1p
bWVUeXBlKCkpKSB7Ci0gICAgICAgIC8vIGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVs
dGlwYWdlL3dlYmFwcGFwaXMuaHRtbCNmZXRjaC1hLXNpbmdsZS1tb2R1bGUtc2NyaXB0Ci0gICAg
ICAgIC8vIFRoZSByZXN1bHQgb2YgZXh0cmFjdGluZyBhIE1JTUUgdHlwZSBmcm9tIHJlc3BvbnNl
J3MgaGVhZGVyIGxpc3QgKGlnbm9yaW5nIHBhcmFtZXRlcnMpIGlzIG5vdCBhIEphdmFTY3JpcHQg
TUlNRSB0eXBlLgotICAgICAgICAvLyBGb3IgaGlzdG9yaWNhbCByZWFzb25zLCBmZXRjaGluZyBh
IGNsYXNzaWMgc2NyaXB0IGRvZXMgbm90IGluY2x1ZGUgTUlNRSB0eXBlIGNoZWNraW5nLiBJbiBj
b250cmFzdCwgbW9kdWxlIHNjcmlwdHMgd2lsbCBmYWlsIHRvIGxvYWQgaWYgdGhleSBhcmUgbm90
IG9mIGEgY29ycmVjdCBNSU1FIHR5cGUuCi0gICAgICAgIHByb21pc2UtPnJlamVjdChUeXBlRXJy
b3IsIG1ha2VTdHJpbmcoIiciLCBjYWNoZWRTY3JpcHQucmVzcG9uc2UoKS5taW1lVHlwZSgpLCAi
JyBpcyBub3QgYSB2YWxpZCBKYXZhU2NyaXB0IE1JTUUgdHlwZS4iKSk7CisgICAgaWYgKGNhY2hl
ZFNjcmlwdC5lcnJvck9jY3VycmVkKCkpIHsKKyAgICAgICAgLy8gUmVqZWN0IGEgcHJvbWlzZSB0
byBwcm9wYWdhdGUgdGhlIGVycm9yIGJhY2sgYWxsIHRoZSB3YXkgdGhyb3VnaCBtb2R1bGUgcHJv
bWlzZSBjaGFpbnMgdG8gdGhlIHNjcmlwdCBlbGVtZW50LgorICAgICAgICBwcm9taXNlLT5yZWpl
Y3RXaXRoQ2FsbGJhY2soW10gKEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSwgSlNET01HbG9iYWxPYmpl
Y3QmKSB7CisgICAgICAgICAgICAvLyBXZSBhbm5vdGF0ZSBleGNlcHRpb24gd2l0aCBzcGVjaWFs
IHByaXZhdGUgc3ltYm9sLiBJdCBhbGxvd3MgdXMgdG8gZGlzdGluZ3Vpc2ggdGhlc2UgZXJyb3Jz
IGZyb20gdGhlIHVzZXIgdGhyb3duIG9uZXMuCisgICAgICAgICAgICBKU0M6OlZNJiB2bSA9IHN0
YXRlLnZtKCk7CisgICAgICAgICAgICAvLyBGSVhNRTogUHJvcGFnYXRlIG1vcmUgZGVzY3JpcHRp
dmUgZXJyb3IuCisgICAgICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTY3NTUzCisgICAgICAgICAgICBhdXRvKiBlcnJvciA9IEpTQzo6Y3JlYXRlVHlw
ZUVycm9yKCZzdGF0ZSwgQVNDSUlMaXRlcmFsKCJJbXBvcnRpbmcgYSBtb2R1bGUgc2NyaXB0IGZh
aWxlZC4iKSk7CisgICAgICAgICAgICBBU1NFUlQoZXJyb3IpOworICAgICAgICAgICAgZXJyb3It
PnB1dERpcmVjdCh2bSwgc3RhdGljX2Nhc3Q8SlNWTUNsaWVudERhdGEmPigqdm0uY2xpZW50RGF0
YSkuYnVpbHRpbk5hbWVzKCkuZXJyb3JLaW5kUHJpdmF0ZU5hbWUoKSwgSlNDOjpqc051bWJlcihz
dGF0aWNfY2FzdDxpbnQzMl90PihIb3N0RXJyb3JLaW5kOjpNb2R1bGVGZXRjaFdhc0Vycm9yZWQp
KSk7CisgICAgICAgICAgICByZXR1cm4gZXJyb3I7CisgICAgICAgIH0pOwogICAgICAgICByZXR1
cm47CiAgICAgfQogCi0gICAgYXV0byogZnJhbWUgPSBtX2RvY3VtZW50LmZyYW1lKCk7Ci0gICAg
aWYgKCFmcmFtZSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgaWYgKGZhaWxlZCkgewotICAgICAg
ICAvLyBSZWplY3QgYSBwcm9taXNlIHRvIHByb3BhZ2F0ZSB0aGUgZXJyb3IgYmFjayBhbGwgdGhl
IHdheSB0aHJvdWdoIG1vZHVsZSBwcm9taXNlIGNoYWlucyB0byB0aGUgc2NyaXB0IGVsZW1lbnQu
Ci0gICAgICAgIHByb21pc2UtPnJlamVjdChmcmFtZS0+c2NyaXB0KCkubW9kdWxlTG9hZGVyQWxy
ZWFkeVJlcG9ydGVkRXJyb3JTeW1ib2woKSk7CisgICAgaWYgKGNhY2hlZFNjcmlwdC53YXNDYW5j
ZWxlZCgpKSB7CisgICAgICAgIHByb21pc2UtPnJlamVjdFdpdGhDYWxsYmFjayhbXSAoSlNDOjpF
eGVjU3RhdGUmIHN0YXRlLCBKU0RPTUdsb2JhbE9iamVjdCYpIHsKKyAgICAgICAgICAgIC8vIFdl
IGFubm90YXRlIGV4Y2VwdGlvbiB3aXRoIHNwZWNpYWwgcHJpdmF0ZSBzeW1ib2wuIEl0IGFsbG93
cyB1cyB0byBkaXN0aW5ndWlzaCB0aGVzZSBlcnJvcnMgZnJvbSB0aGUgdXNlciB0aHJvd24gb25l
cy4KKyAgICAgICAgICAgIEpTQzo6Vk0mIHZtID0gc3RhdGUudm0oKTsKKyAgICAgICAgICAgIC8v
IEZJWE1FOiBQcm9wYWdhdGUgbW9yZSBkZXNjcmlwdGl2ZSBlcnJvci4KKyAgICAgICAgICAgIC8v
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjc1NTMKKyAgICAgICAg
ICAgIGF1dG8qIGVycm9yID0gSlNDOjpjcmVhdGVUeXBlRXJyb3IoJnN0YXRlLCBBU0NJSUxpdGVy
YWwoIkltcG9ydGluZyBhIG1vZHVsZSBzY3JpcHQgaXMgY2FuY2VsZWQiKSk7CisgICAgICAgICAg
ICBBU1NFUlQoZXJyb3IpOworICAgICAgICAgICAgZXJyb3ItPnB1dERpcmVjdCh2bSwgc3RhdGlj
X2Nhc3Q8SlNWTUNsaWVudERhdGEmPigqdm0uY2xpZW50RGF0YSkuYnVpbHRpbk5hbWVzKCkuZXJy
b3JLaW5kUHJpdmF0ZU5hbWUoKSwgSlNDOjpqc051bWJlcihzdGF0aWNfY2FzdDxpbnQzMl90PihI
b3N0RXJyb3JLaW5kOjpNb2R1bGVGZXRjaFdhc0NhbmNlbGVkKSkpOworICAgICAgICAgICAgcmV0
dXJuIGVycm9yOworICAgICAgICB9KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGlm
IChjYWNoZWRTY3JpcHQud2FzQ2FuY2VsZWQoKSkgewotICAgICAgICBwcm9taXNlLT5yZWplY3Qo
ZnJhbWUtPnNjcmlwdCgpLm1vZHVsZUxvYWRlckZldGNoaW5nSXNDYW5jZWxlZFN5bWJvbCgpKTsK
KyAgICBpZiAoIU1JTUVUeXBlUmVnaXN0cnk6OmlzU3VwcG9ydGVkSmF2YVNjcmlwdE1JTUVUeXBl
KGNhY2hlZFNjcmlwdC5yZXNwb25zZSgpLm1pbWVUeXBlKCkpKSB7CisgICAgICAgIC8vIGh0dHBz
Oi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdlL3dlYmFwcGFwaXMuaHRtbCNmZXRjaC1h
LXNpbmdsZS1tb2R1bGUtc2NyaXB0CisgICAgICAgIC8vIFRoZSByZXN1bHQgb2YgZXh0cmFjdGlu
ZyBhIE1JTUUgdHlwZSBmcm9tIHJlc3BvbnNlJ3MgaGVhZGVyIGxpc3QgKGlnbm9yaW5nIHBhcmFt
ZXRlcnMpIGlzIG5vdCBhIEphdmFTY3JpcHQgTUlNRSB0eXBlLgorICAgICAgICAvLyBGb3IgaGlz
dG9yaWNhbCByZWFzb25zLCBmZXRjaGluZyBhIGNsYXNzaWMgc2NyaXB0IGRvZXMgbm90IGluY2x1
ZGUgTUlNRSB0eXBlIGNoZWNraW5nLiBJbiBjb250cmFzdCwgbW9kdWxlIHNjcmlwdHMgd2lsbCBm
YWlsIHRvIGxvYWQgaWYgdGhleSBhcmUgbm90IG9mIGEgY29ycmVjdCBNSU1FIHR5cGUuCisgICAg
ICAgIHByb21pc2UtPnJlamVjdChUeXBlRXJyb3IsIG1ha2VTdHJpbmcoIiciLCBjYWNoZWRTY3Jp
cHQucmVzcG9uc2UoKS5taW1lVHlwZSgpLCAiJyBpcyBub3QgYSB2YWxpZCBKYXZhU2NyaXB0IE1J
TUUgdHlwZS4iKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICBtX3JlcXVlc3RVUkxU
b1Jlc3BvbnNlVVJMTWFwLmFkZChjYWNoZWRTY3JpcHQudXJsKCksIGNhY2hlZFNjcmlwdC5yZXNw
b25zZSgpLnVybCgpKTsKLSAgICBTY3JpcHRTb3VyY2VDb2RlIHNjcmlwdFNvdXJjZUNvZGUoJmNh
Y2hlZFNjcmlwdCwgSlNDOjpTb3VyY2VQcm92aWRlclNvdXJjZVR5cGU6Ok1vZHVsZSwgbG9hZGVy
LnNjcmlwdEZldGNoZXIoKSk7Ci0gICAgcHJvbWlzZS0+cmVzb2x2ZVdpdGhDYWxsYmFjayhbXSAo
SlNDOjpFeGVjU3RhdGUmIHN0YXRlLCBKU0RPTUdsb2JhbE9iamVjdCYsIEpTQzo6U291cmNlQ29k
ZSBzb3VyY2VDb2RlKSB7Ci0gICAgICAgIHJldHVybiBKU0M6OkpTU291cmNlQ29kZTo6Y3JlYXRl
KHN0YXRlLnZtKCksIFdURk1vdmUoc291cmNlQ29kZSkpOwotICAgIH0sIHNjcmlwdFNvdXJjZUNv
ZGUuanNTb3VyY2VDb2RlKCkpOworICAgIHByb21pc2UtPnJlc29sdmVXaXRoQ2FsbGJhY2soWyZd
IChKU0M6OkV4ZWNTdGF0ZSYgc3RhdGUsIEpTRE9NR2xvYmFsT2JqZWN0JikgeworICAgICAgICBy
ZXR1cm4gSlNDOjpKU1NvdXJjZUNvZGU6OmNyZWF0ZShzdGF0ZS52bSgpLAorICAgICAgICAgICAg
SlNDOjpTb3VyY2VDb2RlIHsgU2NyaXB0U291cmNlQ29kZSB7ICZjYWNoZWRTY3JpcHQsIEpTQzo6
U291cmNlUHJvdmlkZXJTb3VyY2VUeXBlOjpNb2R1bGUsIGxvYWRlci5zY3JpcHRGZXRjaGVyKCkg
fS5qc1NvdXJjZUNvZGUoKSB9KTsKKyAgICB9KTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvV2ViQ29yZUJ1aWx0aW5OYW1lcy5oIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvV2ViQ29yZUJ1aWx0aW5OYW1lcy5oCmluZGV4IDBjMGJhYjQzYzFjZmQ3
MmQ5YjU3ZTNjNzcxM2ZhYjRlZTU0OTllODAuLjZmY2I3ZTkyNWE2NjI4MzJmNGM0ZjE1OGNhNDY0
NTc2YjAyYmQwNGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dlYkNv
cmVCdWlsdGluTmFtZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9XZWJDb3Jl
QnVpbHRpbk5hbWVzLmgKQEAgLTQ1LDYgKzQ1LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAg
IG1hY3JvKGNvbnRyb2xsZXIpIFwKICAgICBtYWNybyhjcmVhdGVSZWFkYWJsZVN0cmVhbVNvdXJj
ZSkgXAogICAgIG1hY3JvKGRpc3R1cmJlZCkgXAorICAgIG1hY3JvKGVycm9yS2luZCkgXAogICAg
IG1hY3JvKGZldGNoUmVxdWVzdCkgXAogICAgIG1hY3JvKGZpbGxGcm9tSlMpIFwKICAgICBtYWNy
byhmaW5pc2hDb25zdW1pbmdTdHJlYW0pIFwKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA4YzYwOWUxZDZmMWQxMjcxY2ZkMWEz
N2IyYjhhYmYwMDdkNGZlYzQ2Li5jOGI4MTMyNTViMjhlYzNmODc1Y2RhYWIwNzY5ZTZmNDZjNzFl
NjZlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTctMDEtMjggIFl1c3VrZSBTdXp1a2kgIDx1
dGF0YW5lLnRlYUBnbWFpbC5jb20+CisKKyAgICAgICAgUHJvcGFnYXRlIG5ldHdvcmtpbmcgZXJy
b3JzIGNvcnJlY3RseSBmb3IgaW1wb3J0KCkgb3BlcmF0b3IKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2NzUwMQorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogaHR0cC90ZXN0cy9zZWN1cml0eS9taXhlZENv
bnRlbnQvaW1wb3J0LWluc2VjdXJlLXNjcmlwdC1pbi1pZnJhbWUtZXhwZWN0ZWQudHh0OiBBZGRl
ZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3NlY3VyaXR5L21peGVkQ29udGVudC9pbXBvcnQtaW5z
ZWN1cmUtc2NyaXB0LWluLWlmcmFtZS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3Rz
L3NlY3VyaXR5L21peGVkQ29udGVudC9yZXNvdXJjZXMvZnJhbWUtd2l0aC1pbnNlY3VyZS1pbXBv
cnQuaHRtbDogQWRkZWQuCisgICAgICAgICoganMvZG9tL21vZHVsZXMvaW1wb3J0LW5vdC1mb3Vu
ZC1lcnJvci1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGpzL2RvbS9tb2R1bGVzL2lt
cG9ydC1ub3QtZm91bmQtZXJyb3IuaHRtbDogQWRkZWQuCisKIDIwMTctMDEtMjggIFphbGFuIEJ1
anRhcyAgPHphbGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXNvbHZlIGJlZm9yZUNoaWxkJ3Mg
cmVuZGVyIHRyZWUgcG9zaXRpb24gYmVmb3JlIGNhbGxpbmcgYWRkQ2hpbGRJZ25vcmluZ0NvbnRp
bnVhdGlvbi4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvbWl4
ZWRDb250ZW50L2ltcG9ydC1pbnNlY3VyZS1zY3JpcHQtaW4taWZyYW1lLWV4cGVjdGVkLnR4dCBi
L0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2VjdXJpdHkvbWl4ZWRDb250ZW50L2ltcG9ydC1pbnNl
Y3VyZS1zY3JpcHQtaW4taWZyYW1lLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jYjZiNzc4MDU2
NmViZTBhN2JjOTQ5YmJhZmNhNmQ0YjdlZTZlYzI3Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9taXhlZENvbnRlbnQvaW1wb3J0LWluc2VjdXJlLXNj
cmlwdC1pbi1pZnJhbWUtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTIgQEAKK0NPTlNPTEUgTUVT
U0FHRTogbGluZSAxOiBbYmxvY2tlZF0gVGhlIHBhZ2UgYXQgaHR0cHM6Ly8xMjcuMC4wLjE6ODQ0
My9zZWN1cml0eS9taXhlZENvbnRlbnQvcmVzb3VyY2VzL2ZyYW1lLXdpdGgtaW5zZWN1cmUtaW1w
b3J0Lmh0bWwgd2FzIG5vdCBhbGxvd2VkIHRvIHJ1biBpbnNlY3VyZSBjb250ZW50IGZyb20gaHR0
cDovLzEyNy4wLjAuMTo4MDgwL3NlY3VyaXR5L21peGVkQ29udGVudC9yZXNvdXJjZXMvc2NyaXB0
LmpzLgorCitUaGlzIHRlc3QgbG9hZHMgYSBzZWN1cmUgaWZyYW1lIHRoYXQgbG9hZHMgYW4gaW5z
ZWN1cmUgbW9kdWxlIHNjcmlwdCB3aXRoIGltcG9ydCgpLiBXZSBzaG91bGQgdHJpZ2dlciBhIG1p
eGVkIGNvbnRlbnQgY2FsbGJhY2sgZXZlbiB0aG91Z2ggdGhlIG1haW4gZnJhbWUgaXMgSFRUUCBi
ZWNhdXNlIHRoZSBIVFRQUyBmcmFtZSdzIG9yaWdpbiBpcyBjb250YW1pbmF0ZWQgd2l0aCBhbiBp
bnNlY3VyZSBtb2R1bGUgc2NyaXB0LgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJp
ZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKwor
UEFTUyB3aW5kb3cuZGF0YSBpcyAiVHlwZUVycm9yOiBJbXBvcnRpbmcgYSBtb2R1bGUgc2NyaXB0
IGZhaWxlZC4iCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExF
VEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9taXhlZENv
bnRlbnQvaW1wb3J0LWluc2VjdXJlLXNjcmlwdC1pbi1pZnJhbWUuaHRtbCBiL0xheW91dFRlc3Rz
L2h0dHAvdGVzdHMvc2VjdXJpdHkvbWl4ZWRDb250ZW50L2ltcG9ydC1pbnNlY3VyZS1zY3JpcHQt
aW4taWZyYW1lLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uN2NmNzk2MWRjODJjNjk1ODI0ZmY4ZmM2MjNiMzY4
MDU4YzU5ZDRlYwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvc2Vj
dXJpdHkvbWl4ZWRDb250ZW50L2ltcG9ydC1pbnNlY3VyZS1zY3JpcHQtaW4taWZyYW1lLmh0bWwK
QEAgLTAsMCArMSwyMCBAQAorPGh0bWw+Cis8Ym9keT4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNv
dXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdD4KK2Rlc2NyaXB0aW9uKGBU
aGlzIHRlc3QgbG9hZHMgYSBzZWN1cmUgaWZyYW1lIHRoYXQgbG9hZHMgYW4gaW5zZWN1cmUgbW9k
dWxlIHNjcmlwdCB3aXRoIGltcG9ydCgpLiBXZSBzaG91bGQKK3RyaWdnZXIgYSBtaXhlZCBjb250
ZW50IGNhbGxiYWNrIGV2ZW4gdGhvdWdoIHRoZSBtYWluIGZyYW1lIGlzIEhUVFAgYmVjYXVzZSB0
aGUKK0hUVFBTIGZyYW1lJ3Mgb3JpZ2luIGlzIGNvbnRhbWluYXRlZCB3aXRoIGFuIGluc2VjdXJl
IG1vZHVsZSBzY3JpcHQuYCk7Cit3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7Cit3aW5kb3cu
ZGF0YSA9IG51bGw7Cit3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigibWVzc2FnZSIsIGZ1bmN0aW9u
IChlcnJvcikgeworICAgIHdpbmRvdy5kYXRhID0gZXJyb3IuZGF0YTsKKyAgICBzaG91bGRCZShg
d2luZG93LmRhdGFgLCBgIlR5cGVFcnJvcjogSW1wb3J0aW5nIGEgbW9kdWxlIHNjcmlwdCBmYWls
ZWQuImApOworICAgIGZpbmlzaEpTVGVzdCgpOworfSwgZmFsc2UpOworPC9zY3JpcHQ+Cis8c2Ny
aXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8cD48
L3A+Cis8aWZyYW1lIHNyYz0iaHR0cHM6Ly8xMjcuMC4wLjE6ODQ0My9zZWN1cml0eS9taXhlZENv
bnRlbnQvcmVzb3VyY2VzL2ZyYW1lLXdpdGgtaW5zZWN1cmUtaW1wb3J0Lmh0bWwiPjwvaWZyYW1l
PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9z
ZWN1cml0eS9taXhlZENvbnRlbnQvcmVzb3VyY2VzL2ZyYW1lLXdpdGgtaW5zZWN1cmUtaW1wb3J0
Lmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3NlY3VyaXR5L21peGVkQ29udGVudC9yZXNv
dXJjZXMvZnJhbWUtd2l0aC1pbnNlY3VyZS1pbXBvcnQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ODhiM2Qy
Njg2OTJiMjI4YjA2NzNlMGQ2ODg1MGZkYzZjNmYyNzkyCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy9zZWN1cml0eS9taXhlZENvbnRlbnQvcmVzb3VyY2VzL2ZyYW1l
LXdpdGgtaW5zZWN1cmUtaW1wb3J0Lmh0bWwKQEAgLTAsMCArMSw4IEBACis8c2NyaXB0Pgord2lu
ZG93Lm9ubG9hZCA9IGZ1bmN0aW9uKCkgeworICAgIGltcG9ydCgiaHR0cDovLzEyNy4wLjAuMTo4
MDgwL3NlY3VyaXR5L21peGVkQ29udGVudC9yZXNvdXJjZXMvc2NyaXB0LmpzIikuY2F0Y2goZnVu
Y3Rpb24gKGVycm9yKSB7CisgICAgICAgIGlmICh3aW5kb3cucGFyZW50KQorICAgICAgICAgICAg
d2luZG93LnBhcmVudC5wb3N0TWVzc2FnZShTdHJpbmcoZXJyb3IpLCAnKicpOworICAgIH0pOwor
fTsKKzwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvanMvZG9tL21vZHVsZXMvaW1w
b3J0LW5vdC1mb3VuZC1lcnJvci1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9qcy9kb20vbW9k
dWxlcy9pbXBvcnQtbm90LWZvdW5kLWVycm9yLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43YmNh
ZjlkY2I5MDQ2NDg3Y2Y4Y2YzZjU3NGIyYzc4NzlhNWQ4ZDNkCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvanMvZG9tL21vZHVsZXMvaW1wb3J0LW5vdC1mb3VuZC1lcnJvci1leHBlY3Rl
ZC50eHQKQEAgLTAsMCArMSwxMCBAQAorVGVzdCBpbXBvcnQgd2l0aCBub24gZXhpc3RpbmcgbW9k
dWxlLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3Nh
Z2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyBTdHJpbmcoZXJyb3Ip
IGlzICJUeXBlRXJyb3I6IEltcG9ydGluZyBhIG1vZHVsZSBzY3JpcHQgZmFpbGVkLiIKK1BBU1Mg
c3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9qcy9kb20vbW9kdWxlcy9pbXBvcnQtbm90LWZvdW5kLWVycm9yLmh0bWwg
Yi9MYXlvdXRUZXN0cy9qcy9kb20vbW9kdWxlcy9pbXBvcnQtbm90LWZvdW5kLWVycm9yLmh0bWwK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNDViYWFiY2JjYTQyNDdkMDRiOTIxZTRhYmU0MzkxNTY5MTIxODI5NgotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2pzL2RvbS9tb2R1bGVzL2ltcG9ydC1ub3QtZm91
bmQtZXJyb3IuaHRtbApAQCAtMCwwICsxLDI2IEBACis8IURPQ1RZUEUgSFRNTD4KKzxodG1sPgor
PGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48
L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHNjcmlwdD4KK2Rlc2NyaXB0aW9uKCdUZXN0IGlt
cG9ydCB3aXRoIG5vbiBleGlzdGluZyBtb2R1bGUuJyk7CisKK3dpbmRvdy5qc1Rlc3RJc0FzeW5j
ID0gdHJ1ZTsKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10
ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPHNjcmlwdD4KK3ZhciBlcnJvciA9IG51bGw7CisoYXN5
bmMgZnVuY3Rpb24gKCkgeworICAgIHRyeSB7CisgICAgICAgIGF3YWl0IGltcG9ydChgLi9yZXNv
dXJjZXMvaW1wb3J0LW5vdC1mb3VuZC5qc2ApOworICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAg
ZXJyb3IgPSBlOworICAgIH0KKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoYFN0cmluZyhlcnJv
cilgLCBgVHlwZUVycm9yOiBJbXBvcnRpbmcgYSBtb2R1bGUgc2NyaXB0IGZhaWxlZC5gKTsKKyAg
ICBmaW5pc2hKU1Rlc3QoKTsKK30oKSk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4K
</data>
<flag name="review"
          id="321958"
          type_id="1"
          status="+"
          setter="rniwa"
    />
          </attachment>
      

    </bug>

</bugzilla>