<?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>160553</bug_id>
          
          <creation_ts>2016-08-04 09:41:19 -0700</creation_ts>
          <short_desc>[ES6] Module namespace object should not allow unset IC</short_desc>
          <delta_ts>2016-08-07 19:50:26 -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>New Bugs</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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Yusuke Suzuki">ysuzuki</reporter>
          <assigned_to name="Yusuke Suzuki">ysuzuki</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1217428</commentid>
    <comment_count>0</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-08-04 09:41:19 -0700</bug_when>
    <thetext>[ES6] Namespace object should not allow IC</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1217444</commentid>
    <comment_count>1</comment_count>
      <attachid>285334</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-08-04 10:05:20 -0700</bug_when>
    <thetext>Created attachment 285334
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1217451</commentid>
    <comment_count>2</comment_count>
      <attachid>285334</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-08-04 10:17:13 -0700</bug_when>
    <thetext>Comment on attachment 285334
Patch

I&apos;ll do a slight change.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1217812</commentid>
    <comment_count>3</comment_count>
      <attachid>285402</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-08-04 23:06:19 -0700</bug_when>
    <thetext>Created attachment 285402
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1218097</commentid>
    <comment_count>4</comment_count>
      <attachid>285402</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2016-08-05 16:25:19 -0700</bug_when>
    <thetext>Comment on attachment 285402
Patch

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

&gt; Source/JavaScriptCore/runtime/JSModuleNamespaceObject.cpp:132
&gt; +        JSModuleRecord::Resolution resolution = moduleRecord-&gt;resolveExport(exec, Identifier::fromUid(exec, propertyName.uid()));
&gt; +        ASSERT(resolution.type != JSModuleRecord::Resolution::Type::NotFound &amp;&amp; resolution.type != JSModuleRecord::Resolution::Type::Ambiguous);
&gt; +
&gt; +        JSModuleRecord* targetModule = resolution.moduleRecord;
&gt; +        JSModuleEnvironment* targetEnvironment = targetModule-&gt;moduleEnvironment();
&gt; +
&gt; +        PropertySlot trampolineSlot(targetEnvironment, PropertySlot::InternalMethodType::Get);
&gt; +        bool found = targetEnvironment-&gt;methodTable(exec-&gt;vm())-&gt;getOwnPropertySlot(targetEnvironment, exec, resolution.localName, trampolineSlot);
&gt; +        ASSERT_UNUSED(found, found);

Why do these assertions have to hold?
I haven&apos;t thought too hard, but can&apos;t you just call GetOwnProperty on a namespace object and have this not actually be resolved?
like:
`
import * as ns from ...;
Reflect.getOwnPropertyDescriptor(ns, someIdentNotInNS)
`</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1218218</commentid>
    <comment_count>5</comment_count>
      <attachid>285402</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-08-05 23:33:58 -0700</bug_when>
    <thetext>Comment on attachment 285402
Patch

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

&gt;&gt; Source/JavaScriptCore/runtime/JSModuleNamespaceObject.cpp:132
&gt;&gt; +        ASSERT_UNUSED(found, found);
&gt; 
&gt; Why do these assertions have to hold?
&gt; I haven&apos;t thought too hard, but can&apos;t you just call GetOwnProperty on a namespace object and have this not actually be resolved?
&gt; like:
&gt; `
&gt; import * as ns from ...;
&gt; Reflect.getOwnPropertyDescriptor(ns, someIdentNotInNS)
&gt; `

The above example does not reach here because we filter them by

`
if (!thisObject-&gt;m_exports.contains(propertyName.uid()))
    return false;
`
in L116.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1218256</commentid>
    <comment_count>6</comment_count>
      <attachid>285402</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-08-06 11:50:02 -0700</bug_when>
    <thetext>Comment on attachment 285402
Patch

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

&gt;&gt;&gt; Source/JavaScriptCore/runtime/JSModuleNamespaceObject.cpp:132
&gt;&gt;&gt; +        ASSERT_UNUSED(found, found);
&gt;&gt; 
&gt;&gt; Why do these assertions have to hold?
&gt;&gt; I haven&apos;t thought too hard, but can&apos;t you just call GetOwnProperty on a namespace object and have this not actually be resolved?
&gt;&gt; like:
&gt;&gt; `
&gt;&gt; import * as ns from ...;
&gt;&gt; Reflect.getOwnPropertyDescriptor(ns, someIdentNotInNS)
&gt;&gt; `
&gt; 
&gt; The above example does not reach here because we filter them by
&gt; 
&gt; `
&gt; if (!thisObject-&gt;m_exports.contains(propertyName.uid()))
&gt;     return false;
&gt; `
&gt; in L116.

And this m_exports is collected by JSModuleRecord.cpp&apos;s getExportedNames, and already validated by JSModuleRecord::getModuleNamespace.
As a result, this m_exports only contains the names that can be resolved. And when the name is resolved, the resolution always has the target module and the local name.
So looking up the local binding from the target module always succeed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1218389</commentid>
    <comment_count>7</comment_count>
      <attachid>285402</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2016-08-07 14:06:36 -0700</bug_when>
    <thetext>Comment on attachment 285402
Patch

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

r=me

&gt;&gt;&gt;&gt; Source/JavaScriptCore/runtime/JSModuleNamespaceObject.cpp:132
&gt;&gt;&gt;&gt; +        ASSERT_UNUSED(found, found);
&gt;&gt;&gt; 
&gt;&gt;&gt; Why do these assertions have to hold?
&gt;&gt;&gt; I haven&apos;t thought too hard, but can&apos;t you just call GetOwnProperty on a namespace object and have this not actually be resolved?
&gt;&gt;&gt; like:
&gt;&gt;&gt; `
&gt;&gt;&gt; import * as ns from ...;
&gt;&gt;&gt; Reflect.getOwnPropertyDescriptor(ns, someIdentNotInNS)
&gt;&gt;&gt; `
&gt;&gt; 
&gt;&gt; The above example does not reach here because we filter them by
&gt;&gt; 
&gt;&gt; `
&gt;&gt; if (!thisObject-&gt;m_exports.contains(propertyName.uid()))
&gt;&gt;     return false;
&gt;&gt; `
&gt;&gt; in L116.
&gt; 
&gt; And this m_exports is collected by JSModuleRecord.cpp&apos;s getExportedNames, and already validated by JSModuleRecord::getModuleNamespace.
&gt; As a result, this m_exports only contains the names that can be resolved. And when the name is resolved, the resolution always has the target module and the local name.
&gt; So looking up the local binding from the target module always succeed.

Makes sense.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1218443</commentid>
    <comment_count>8</comment_count>
      <attachid>285402</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-08-07 19:29:39 -0700</bug_when>
    <thetext>Comment on attachment 285402
Patch

Thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1218446</commentid>
    <comment_count>9</comment_count>
      <attachid>285402</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-08-07 19:50:23 -0700</bug_when>
    <thetext>Comment on attachment 285402
Patch

Clearing flags on attachment: 285402

Committed r204248: &lt;http://trac.webkit.org/changeset/204248&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1218447</commentid>
    <comment_count>10</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-08-07 19:50:26 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>285334</attachid>
            <date>2016-08-04 10:05:20 -0700</date>
            <delta_ts>2016-08-04 23:06:15 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-160553-20160804170354.patch</filename>
            <type>text/plain</type>
            <size>22986</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA0MTE4CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBh
MmMzMzVhNTJiYzg2NWE1Nzk1OTc0NjMwYTQyZmIxYzkzNzg4NGI0Li40YmIzODgxZTE4ODZlYmI0
NTNkODg4YTU4MmIwNDI3Mzk1ZjRjNzU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw0NyBAQAorMjAxNi0wOC0wNCAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KKworICAgICAgICBbRVM2XSBNb2R1bGUgbmFtZXNwYWNlIG9iamVjdCBzaG91bGQgbm90
IGFsbG93IHVuc2V0IElDCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xNjA1NTMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBQcmV2aW91c2x5LCBtb2R1bGUgbmFtZXNwYWNlIG9iamVjdCBhY2NpZGVudGFsbHkg
YWxsb3cgInVuc2V0IElDIi4gQnV0IHRoaXMgInVuc2V0bmVzcyIgZG9lcyBub3QgcmVseSBvbgor
ICAgICAgICB0aGUgc3RydWN0dXJlLiBXZSBzaG91bGQgZGlzYWJsZSBpbmxpbmUgY2FjaGluZyBv
bnRvIHRoZSBuYW1lc3BhY2Ugb2JqZWN0LiBPbmNlIGl0IGlzIG5lZWRlZCwgd2Ugc2hvdWxkCisg
ICAgICAgIGNyZWF0ZSB0aGUgc3BlY2lhbCBjYWNoaW5nIGZvciBuYW1lc3BhY2Ugb2JqZWN0IHNv
bWV0aGluZyBsaWtlIHRoaXM6IGl0IHNob3VsZCBiZSBzb21ldGhpbmcgc2ltaWxhciB0bworICAg
ICAgICBnbG9iYWwgb2JqZWN0IE1vbm9JQy4gSXQgY2FjaGVzIHRoZSBtb2R1bGUgc2NvcGUgb2Jq
ZWN0IGl0c2VsZiBhbmQgbG9hZHMgdGhlIHZhbHVlIGZyb20gdGhlIGdvYWwgbW9kdWxlCisgICAg
ICAgIGVudmlyb25tZW50IGRpcmVjdGx5LiBDYWNoaW5nIG11bHRpcGxlIG5hbWVzcGFjZSBvYmpl
Y3RzIGluIG9uZSBJQyBtYXkgYmUgZ29vZC4KKworICAgICAgICBBbmQgdGhpcyBwYXRjaCBhbHNv
IHNldCBzZXRJc1RhaW50ZWRCeVByb3h5IGZvciB0aGUgbW9kdWxlIG5hbWVzcGFjZSBvYmplY3Qg
dG8gbm90aWZ5IHRvIHRoZSBjYWxsZXIgdGhhdAorICAgICAgICB0aGlzIG9iamVjdCBoYXMgaW1w
dXJlIDo6Z2V0T3duUHJvcGVydHlTbG90LiBUaGVuIHRoaXMgZnVuY3Rpb24gaXMgbm93IHJlbmFt
ZWQgdG8gc2V0SXNUYWludGVkQnlPcGFxdWVPYmplY3QuCisKKyAgICAgICAgV2UgZHJvcCB0aGUg
aGFjayBpbiBKU01vZHVsZU5hbWVzcGFjZU9iamVjdDo6Z2V0T3duUHJvcGVydHlTbG90IHNpbmNl
IHdlIGFscmVhZHkgaW50cm9kdWNlZCBJbnRlcm5hbE1ldGhvZFR5cGUKKyAgICAgICAgZm9yIFBy
b3h5T2JqZWN0LiBQcmV2aW91c2x5IHdlIGNhbm5vdCBkaXN0aW5ndWlzaCA6Okhhc1Byb3BlcnR5
IGFuZCA6OkdldE93blByb3BlcnR5LiBTbyBub3QgdG8gdGhyb3cgYW55CisgICAgICAgIGVycm9y
cyBmb3IgOjpIYXNQcm9wZXJ0eSBjYXNlLCB3ZSB1c2VkIHNsb3Quc2V0Q3VzdG9tIHRvIGRlbGF5
IHRoZSBvYnNlcnZhYmxlIG9wZXJhdGlvbi4KKyAgICAgICAgQnV0LCB0aGlzIGhhY2sgbGFja3Mg
dGhlIHN1cHBvcnQgZm9yIGhhc093blByb3BlcnR5OiBoYXNPd25Qcm9wZXJ0eSB1c2VzIFtbR2V0
T3duUHJvcGVydHldXSwgc28gaXQgc2hvdWxkIHRocm93IGFuIGVycm9yLgorICAgICAgICBIb3dl
dmVyIHRoZSBwcmV2aW91cyBpbXBsZW1lbnRhdGlvbiBkb2VzIG5vdCB0aHJvdyBhbiBlcnJvciBz
aW5jZSB0aGUgZGVsYXllZCBvYnNlcnZhYmxlIHBhcnQgKGN1c3RvbSBmdW5jdGlvbiBwYXJ0KSBp
cworICAgICAgICBza2lwcGVkIGluIGhhc093blByb3BlcnR5IGltcGxlbWVudGF0aW9uLiBXZSBu
b3cgcmVtb3ZlIHRoaXMgY3VzdG9tIHByb3BlcnR5IGhhY2sgYW5kIGZpeCB0aGUgY29ycmVzcG9u
ZGluZyBmYWlsdXJlCisgICAgICAgIGluIHRlc3QyNjIuCisKKyAgICAgICAgKiBqaXQvSklUT3Bl
cmF0aW9ucy5jcHA6CisgICAgICAgICogcnVudGltZS9BcnJheVByb3RvdHlwZS5jcHA6CisgICAg
ICAgIChKU0M6OmdldFByb3BlcnR5KToKKyAgICAgICAgKiBydW50aW1lL0pTR2VuZXJpY1R5cGVk
QXJyYXlWaWV3Q29uc3RydWN0b3JJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OmNvbnN0cnVjdEdl
bmVyaWNUeXBlZEFycmF5Vmlld1dpdGhBcmd1bWVudHMpOgorICAgICAgICAqIHJ1bnRpbWUvSlNN
b2R1bGVOYW1lc3BhY2VPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpKU01vZHVsZU5hbWVzcGFj
ZU9iamVjdDo6Z2V0T3duUHJvcGVydHlTbG90KToKKyAgICAgICAgKEpTQzo6Y2FsbGJhY2tHZXR0
ZXIpOiBEZWxldGVkLgorICAgICAgICAqIHJ1bnRpbWUvSlNNb2R1bGVOYW1lc3BhY2VPYmplY3Qu
aDoKKyAgICAgICAgKiBydW50aW1lL1Byb3BlcnR5U2xvdC5jcHA6CisgICAgICAgIChKU0M6OlBy
b3BlcnR5U2xvdDo6Z2V0UHVyZVJlc3VsdCk6CisgICAgICAgICogcnVudGltZS9Qcm9wZXJ0eVNs
b3QuaDoKKyAgICAgICAgKEpTQzo6UHJvcGVydHlTbG90OjpQcm9wZXJ0eVNsb3QpOgorICAgICAg
ICAoSlNDOjpQcm9wZXJ0eVNsb3Q6OnNldElzVGFpbnRlZEJ5T3BhcXVlT2JqZWN0KToKKyAgICAg
ICAgKEpTQzo6UHJvcGVydHlTbG90Ojppc1RhaW50ZWRCeU9wYXF1ZU9iamVjdCk6CisgICAgICAg
IChKU0M6OlByb3BlcnR5U2xvdDo6c2V0SXNUYWludGVkQnlQcm94eSk6IERlbGV0ZWQuCisgICAg
ICAgIChKU0M6OlByb3BlcnR5U2xvdDo6aXNUYWludGVkQnlQcm94eSk6IERlbGV0ZWQuCisgICAg
ICAgICogcnVudGltZS9Qcm94eU9iamVjdC5jcHA6CisgICAgICAgIChKU0M6OlByb3h5T2JqZWN0
OjpnZXRPd25Qcm9wZXJ0eVNsb3RDb21tb24pOgorCiAyMDE2LTA4LTAzICBDaHJpcyBEdW1leiAg
PGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgRHJvcCBEb2N1bWVudFR5cGUuaW50ZXJuYWxT
dWJzZXQgYXR0cmlidXRlCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VE9wZXJhdGlvbnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25z
LmNwcAppbmRleCA0MmY2ZTQ3YTk0YWIxODQyOTA1MzE4NDZkYjZkNjczZTFkYzcwMDdlLi40YzI0
Mjg2NGY4MzIyMTlkN2MwNTFmMmRhYzNiNGFkN2M5M2Y5Zjg1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAKQEAgLTE5NCw3ICsxOTQsNyBAQCBFbmNvZGVk
SlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblRyeUdldEJ5SWRPcHRpbWl6ZShFeGVjU3Rh
dGUqIGV4ZWMsIFN0cnVjdAogICAgIFByb3BlcnR5U2xvdCBzbG90KGJhc2VWYWx1ZSwgUHJvcGVy
dHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6OlZNSW5xdWlyeSk7CiAKICAgICBiYXNlVmFsdWUu
Z2V0UHJvcGVydHlTbG90KGV4ZWMsIGlkZW50LCBzbG90KTsKLSAgICBpZiAoc3R1YkluZm8tPmNv
bnNpZGVyQ2FjaGluZyhiYXNlVmFsdWUuc3RydWN0dXJlT3JOdWxsKCkpICYmICFzbG90LmlzVGFp
bnRlZEJ5UHJveHkoKSAmJiAoc2xvdC5pc0NhY2hlYWJsZVZhbHVlKCkgfHwgc2xvdC5pc0NhY2hl
YWJsZUdldHRlcigpIHx8IHNsb3QuaXNVbnNldCgpKSkKKyAgICBpZiAoc3R1YkluZm8tPmNvbnNp
ZGVyQ2FjaGluZyhiYXNlVmFsdWUuc3RydWN0dXJlT3JOdWxsKCkpICYmICFzbG90LmlzVGFpbnRl
ZEJ5T3BhcXVlT2JqZWN0KCkgJiYgKHNsb3QuaXNDYWNoZWFibGVWYWx1ZSgpIHx8IHNsb3QuaXND
YWNoZWFibGVHZXR0ZXIoKSB8fCBzbG90LmlzVW5zZXQoKSkpCiAgICAgICAgIHJlcGF0Y2hHZXRC
eUlEKGV4ZWMsIGJhc2VWYWx1ZSwgaWRlbnQsIHNsb3QsICpzdHViSW5mbywgR2V0QnlJREtpbmQ6
OlB1cmUpOwogCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShzbG90LmdldFB1cmVSZXN1bHQo
KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheVByb3Rv
dHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheVByb3RvdHlwZS5j
cHAKaW5kZXggMzY2MWRiYTAyNDMxNWUxOGNlNDU4NmJkMTU0NmRiM2NkZjlkNzU0OS4uZjFlYzU3
Y2FkMDE5YTYzZDgyODMxYThiYmNjYTgzMWIxYjcyMTMxZCAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlQcm90b3R5cGUuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0FycmF5UHJvdG90eXBlLmNwcApAQCAtMTU0LDEyICsxNTQsMTIg
QEAgc3RhdGljIEFMV0FZU19JTkxJTkUgSlNWYWx1ZSBnZXRQcm9wZXJ0eShFeGVjU3RhdGUqIGV4
ZWMsIEpTT2JqZWN0KiBvYmplY3QsIHVuc2kKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICAv
LyBXZSB3YW50IHRvIHBlcmZvcm0gZ2V0IGFuZCBoYXMgaW4gdGhlIHNhbWUgb3BlcmF0aW9uLgog
ICAgIC8vIFdlIGNhbiBvbmx5IGRvIHNvIHdoZW4gdGhpcyBiZWhhdmlvciBpcyBub3Qgb2JzZXJ2
YWJsZS4gVGhlCi0gICAgLy8gb25seSB0aW1lIGl0IGlzIG9ic2VydmFibGUgaXMgd2hlbiB3ZSBl
bmNvdW50ZXIgYSBQcm94eU9iamVjdAorICAgIC8vIG9ubHkgdGltZSBpdCBpcyBvYnNlcnZhYmxl
IGlzIHdoZW4gd2UgZW5jb3VudGVyIGFuIG9wYXF1ZSBvYmplY3RzIChQcm94eU9iamVjdCBhbmQg
SlNNb2R1bGVOYW1lc3BhY2VPYmplY3QpCiAgICAgLy8gc29tZXdoZXJlIGluIHRoZSBwcm90b3R5
cGUgY2hhaW4uCiAgICAgUHJvcGVydHlTbG90IHNsb3Qob2JqZWN0LCBQcm9wZXJ0eVNsb3Q6Oklu
dGVybmFsTWV0aG9kVHlwZTo6SGFzUHJvcGVydHkpOwogICAgIGlmICghb2JqZWN0LT5nZXRQcm9w
ZXJ0eVNsb3QoZXhlYywgaW5kZXgsIHNsb3QpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZSgpOwot
ICAgIGlmIChVTkxJS0VMWShzbG90LmlzVGFpbnRlZEJ5UHJveHkoKSkpCisgICAgaWYgKFVOTElL
RUxZKHNsb3QuaXNUYWludGVkQnlPcGFxdWVPYmplY3QoKSkpCiAgICAgICAgIHJldHVybiBvYmpl
Y3QtPmdldChleGVjLCBpbmRleCk7CiAgICAgcmV0dXJuIHNsb3QuZ2V0VmFsdWUoZXhlYywgaW5k
ZXgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5l
cmljVHlwZWRBcnJheVZpZXdDb25zdHJ1Y3RvcklubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3Q29uc3RydWN0b3JJbmxpbmVzLmgK
aW5kZXggOTAyYjA2YjMxYWZhZDc2MmRjYTM2YWFiYzRlYjg0MmU1MWFjMTM5Yy4uMTVhYjQwMTlh
OWJlNmY4ZDYyMzE5ZjJiY2IyYjg5MGVkZjRjMDMyZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXdDb25zdHJ1Y3RvcklubGlu
ZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFy
cmF5Vmlld0NvbnN0cnVjdG9ySW5saW5lcy5oCkBAIC0xNTIsNyArMTUyLDcgQEAgaW5saW5lIEpT
T2JqZWN0KiBjb25zdHJ1Y3RHZW5lcmljVHlwZWRBcnJheVZpZXdXaXRoQXJndW1lbnRzKEV4ZWNT
dGF0ZSogZXhlYywgU3QKICAgICAgICAgICAgIGxlbmd0aCA9IGpzQ2FzdDxKU0FycmF5QnVmZmVy
Vmlldyo+KG9iamVjdCktPmxlbmd0aCgpOwogICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIC8v
IFRoaXMgZ2V0UHJvcGVydHlTbG90IG9wZXJhdGlvbiBzaG91bGQgbm90IGJlIG9ic2VydmVkIGJ5
IHRoZSBQcm94eS4KLSAgICAgICAgICAgIC8vIFNvIHdlIHVzZSBWTUlucXVpcnkuIEFuZCBwdXJn
ZSB0aGUgcHJveHkgY2FzZSBieSBpc1RhaW50ZWRCeVByb3h5KCkgZ3VhcmQuCisgICAgICAgICAg
ICAvLyBTbyB3ZSB1c2UgVk1JbnF1aXJ5LiBBbmQgcHVyZ2UgdGhlIG9wYXF1ZSBvYmplY3QgY2Fz
ZXMgKHByb3h5IGFuZCBuYW1lc3BhY2Ugb2JqZWN0KSBieSBpc1RhaW50ZWRCeU9wYXF1ZU9iamVj
dCgpIGd1YXJkLgogICAgICAgICAgICAgUHJvcGVydHlTbG90IGxlbmd0aFNsb3Qob2JqZWN0LCBQ
cm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9kVHlwZTo6Vk1JbnF1aXJ5KTsKICAgICAgICAgICAg
IG9iamVjdC0+Z2V0UHJvcGVydHlTbG90KGV4ZWMsIHZtLnByb3BlcnR5TmFtZXMtPmxlbmd0aCwg
bGVuZ3RoU2xvdCk7CiAKQEAgLTE2OCw3ICsxNjgsNyBAQCBpbmxpbmUgSlNPYmplY3QqIGNvbnN0
cnVjdEdlbmVyaWNUeXBlZEFycmF5Vmlld1dpdGhBcmd1bWVudHMoRXhlY1N0YXRlKiBleGVjLCBT
dAogCiAgICAgICAgICAgICBpZiAoIWl0ZXJhdG9yRnVuYy5pc1VuZGVmaW5lZCgpCiAgICAgICAg
ICAgICAgICAgJiYgKGl0ZXJhdG9yRnVuYyAhPSBvYmplY3QtPmdsb2JhbE9iamVjdCgpLT5hcnJh
eVByb3RvVmFsdWVzRnVuY3Rpb24oKQotICAgICAgICAgICAgICAgICAgICB8fCBsZW5ndGhTbG90
LmlzQWNjZXNzb3IoKSB8fCBsZW5ndGhTbG90LmlzQ3VzdG9tKCkgfHwgbGVuZ3RoU2xvdC5pc1Rh
aW50ZWRCeVByb3h5KCkKKyAgICAgICAgICAgICAgICAgICAgfHwgbGVuZ3RoU2xvdC5pc0FjY2Vz
c29yKCkgfHwgbGVuZ3RoU2xvdC5pc0N1c3RvbSgpIHx8IGxlbmd0aFNsb3QuaXNUYWludGVkQnlP
cGFxdWVPYmplY3QoKQogICAgICAgICAgICAgICAgICAgICB8fCBoYXNBbnlBcnJheVN0b3JhZ2Uo
b2JqZWN0LT5pbmRleGluZ1R5cGUoKSkpKSB7CiAKICAgICAgICAgICAgICAgICAgICAgQ2FsbERh
dGEgY2FsbERhdGE7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U01vZHVsZU5hbWVzcGFjZU9iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU01vZHVsZU5hbWVzcGFjZU9iamVjdC5jcHAKaW5kZXggNDBkZGE3MzMzZmY3MjBhZGY2MDk4
ZmY0Nzc1NzJmMWViMTg2YWVhMC4uM2EzNzJjODIxNzE5OWI5NDZkNTY4YmI2MjM0ZmYxMjZmMTJi
NjNiNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVO
YW1lc3BhY2VPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
TW9kdWxlTmFtZXNwYWNlT2JqZWN0LmNwcApAQCAtOTcsMzEgKzk3LDYgQEAgdm9pZCBKU01vZHVs
ZU5hbWVzcGFjZU9iamVjdDo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9y
JiB2aXNpdG9yKQogICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX21vZHVsZVJlY29y
ZCk7CiB9CiAKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBjYWxsYmFja0dldHRlcihFeGVjU3RhdGUq
IGV4ZWMsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFt
ZSkKLXsKLSAgICBKU01vZHVsZU5hbWVzcGFjZU9iamVjdCogdGhpc09iamVjdCA9IGpzQ2FzdDxK
U01vZHVsZU5hbWVzcGFjZU9iamVjdCo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKLSAg
ICBKU01vZHVsZVJlY29yZCogbW9kdWxlUmVjb3JkID0gdGhpc09iamVjdC0+bW9kdWxlUmVjb3Jk
KCk7Ci0KLSAgICBKU01vZHVsZVJlY29yZDo6UmVzb2x1dGlvbiByZXNvbHV0aW9uID0gbW9kdWxl
UmVjb3JkLT5yZXNvbHZlRXhwb3J0KGV4ZWMsIElkZW50aWZpZXI6OmZyb21VaWQoZXhlYywgcHJv
cGVydHlOYW1lLnVpZCgpKSk7Ci0gICAgQVNTRVJUKHJlc29sdXRpb24udHlwZSAhPSBKU01vZHVs
ZVJlY29yZDo6UmVzb2x1dGlvbjo6VHlwZTo6Tm90Rm91bmQgJiYgcmVzb2x1dGlvbi50eXBlICE9
IEpTTW9kdWxlUmVjb3JkOjpSZXNvbHV0aW9uOjpUeXBlOjpBbWJpZ3VvdXMpOwotCi0gICAgSlNN
b2R1bGVSZWNvcmQqIHRhcmdldE1vZHVsZSA9IHJlc29sdXRpb24ubW9kdWxlUmVjb3JkOwotICAg
IEpTTW9kdWxlRW52aXJvbm1lbnQqIHRhcmdldEVudmlyb25tZW50ID0gdGFyZ2V0TW9kdWxlLT5t
b2R1bGVFbnZpcm9ubWVudCgpOwotCi0gICAgUHJvcGVydHlTbG90IHRyYW1wb2xpbmVTbG90KHRh
cmdldEVudmlyb25tZW50LCBQcm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9kVHlwZTo6R2V0KTsK
LSAgICBpZiAoIXRhcmdldEVudmlyb25tZW50LT5tZXRob2RUYWJsZShleGVjLT52bSgpKS0+Z2V0
T3duUHJvcGVydHlTbG90KHRhcmdldEVudmlyb25tZW50LCBleGVjLCByZXNvbHV0aW9uLmxvY2Fs
TmFtZSwgdHJhbXBvbGluZVNsb3QpKQotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpz
VW5kZWZpbmVkKCkpOwotCi0gICAgSlNWYWx1ZSB2YWx1ZSA9IHRyYW1wb2xpbmVTbG90LmdldFZh
bHVlKGV4ZWMsIHByb3BlcnR5TmFtZSk7Ci0gICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQot
ICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwotCi0gICAgLy8g
SWYgdGhlIHZhbHVlIGlzIGZpbGxlZCB3aXRoIFREWiB2YWx1ZSwgdGhyb3cgYSByZWZlcmVuY2Ug
ZXJyb3IuCi0gICAgaWYgKCF2YWx1ZSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihleGVj
LCBjcmVhdGVURFpFcnJvcihleGVjKSk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh2YWx1
ZSk7Ci19Ci0KIGJvb2wgSlNNb2R1bGVOYW1lc3BhY2VPYmplY3Q6OmdldE93blByb3BlcnR5U2xv
dChKU09iamVjdCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlO
YW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CiAgICAgLy8gaHR0cDovL3d3dy5lY21hLWludGVy
bmF0aW9uYWwub3JnL2VjbWEtMjYyLzYuMC8jc2VjLW1vZHVsZS1uYW1lc3BhY2UtZXhvdGljLW9i
amVjdHMtZ2V0b3ducHJvcGVydHktcApAQCAtMTM0LDIxICsxMDksNTIgQEAgYm9vbCBKU01vZHVs
ZU5hbWVzcGFjZU9iamVjdDo6Z2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiBjZWxsLCBFeGVj
U3RhdGUqIGV4ZWMKICAgICBpZiAocHJvcGVydHlOYW1lLmlzU3ltYm9sKCkpCiAgICAgICAgIHJl
dHVybiBKU09iamVjdDo6Z2V0T3duUHJvcGVydHlTbG90KHRoaXNPYmplY3QsIGV4ZWMsIHByb3Bl
cnR5TmFtZSwgc2xvdCk7CiAKKyAgICBzbG90LmRpc2FibGVDYWNoaW5nKCk7CisgICAgc2xvdC5z
ZXRJc1RhaW50ZWRCeU9wYXF1ZU9iamVjdCgpOwogICAgIGlmICghdGhpc09iamVjdC0+bV9leHBv
cnRzLmNvbnRhaW5zKHByb3BlcnR5TmFtZS51aWQoKSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
IAotICAgIC8vIGh0dHBzOi8vZXNkaXNjdXNzLm9yZy90b3BpYy9tYXJjaC0yNC1tZWV0aW5nLW5v
dGVzCi0gICAgLy8gaHR0cDovL3d3dy5lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzYu
MC8jc2VjLW1vZHVsZS1uYW1lc3BhY2UtZXhvdGljLW9iamVjdHMtZ2V0b3ducHJvcGVydHktcAot
ICAgIC8vIHNlY3Rpb24gOS40LjYuNSwgc3RlcCA2LgotICAgIC8vIFRoaXMgcHJvcGVydHkgd2ls
bCBiZSBzZWVuIGFzIHdyaXRhYmxlOiB0cnVlLCBlbnVtZXJhYmxlOnRydWUsIGNvbmZpZ3VyYWJs
ZTogZmFsc2UuCi0gICAgLy8gQnV0IHRoaXMgZG9lcyBub3QgbWVhbiB0aGF0IHRoaXMgcHJvcGVy
dHkgaXMgd3JpdGFibGUgYnkgdXNlcnMuCi0gICAgLy8KLSAgICAvLyBJbiBKU0MsIGdldE93blBy
b3BlcnR5U2xvdCBpcyBub3QgZGVzaWduZWQgdG8gdGhyb3cgYW55IGVycm9ycy4gQnV0IGxvb2tp
bmcgdXAgdGhlIHZhbHVlIGZyb20gdGhlIG1vZHVsZQotICAgIC8vIGVudmlyb25tZW50IG1heSB0
aHJvdyBlcnJvciBpZiB0aGUgbG9hZGVkIHZhcmlhYmxlIGlzIHRoZSBURFogdmFsdWUuIFRvIHdv
cmthcm91bmQsIHdlIHNldCB0aGUgY3VzdG9tCi0gICAgLy8gZ2V0dGVyIGZ1bmN0aW9uLiBXaGVu
IGl0IGlzIGNhbGxlZCwgaXQgbG9va3MgdXAgdGhlIHZhcmlhYmxlIGFuZCB0aHJvd3MgYW4gZXJy
b3IgaWYgdGhlIHZhcmlhYmxlIGlzIG5vdAotICAgIC8vIGluaXRpYWxpemVkLgotICAgIHNsb3Qu
c2V0Q3VzdG9tKHRoaXNPYmplY3QsIERvbnREZWxldGUsIGNhbGxiYWNrR2V0dGVyKTsKLSAgICBy
ZXR1cm4gdHJ1ZTsKKyAgICBzd2l0Y2ggKHNsb3QuaW50ZXJuYWxNZXRob2RUeXBlKCkpIHsKKyAg
ICBjYXNlIFByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpHZXQ6CisgICAgY2FzZSBQ
cm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9kVHlwZTo6R2V0T3duUHJvcGVydHk6IHsKKyAgICAg
ICAgSlNNb2R1bGVSZWNvcmQqIG1vZHVsZVJlY29yZCA9IHRoaXNPYmplY3QtPm1vZHVsZVJlY29y
ZCgpOworCisgICAgICAgIEpTTW9kdWxlUmVjb3JkOjpSZXNvbHV0aW9uIHJlc29sdXRpb24gPSBt
b2R1bGVSZWNvcmQtPnJlc29sdmVFeHBvcnQoZXhlYywgSWRlbnRpZmllcjo6ZnJvbVVpZChleGVj
LCBwcm9wZXJ0eU5hbWUudWlkKCkpKTsKKyAgICAgICAgQVNTRVJUKHJlc29sdXRpb24udHlwZSAh
PSBKU01vZHVsZVJlY29yZDo6UmVzb2x1dGlvbjo6VHlwZTo6Tm90Rm91bmQgJiYgcmVzb2x1dGlv
bi50eXBlICE9IEpTTW9kdWxlUmVjb3JkOjpSZXNvbHV0aW9uOjpUeXBlOjpBbWJpZ3VvdXMpOwor
CisgICAgICAgIEpTTW9kdWxlUmVjb3JkKiB0YXJnZXRNb2R1bGUgPSByZXNvbHV0aW9uLm1vZHVs
ZVJlY29yZDsKKyAgICAgICAgSlNNb2R1bGVFbnZpcm9ubWVudCogdGFyZ2V0RW52aXJvbm1lbnQg
PSB0YXJnZXRNb2R1bGUtPm1vZHVsZUVudmlyb25tZW50KCk7CisKKyAgICAgICAgUHJvcGVydHlT
bG90IHRyYW1wb2xpbmVTbG90KHRhcmdldEVudmlyb25tZW50LCBQcm9wZXJ0eVNsb3Q6OkludGVy
bmFsTWV0aG9kVHlwZTo6R2V0KTsKKyAgICAgICAgYm9vbCBmb3VuZCA9IHRhcmdldEVudmlyb25t
ZW50LT5tZXRob2RUYWJsZShleGVjLT52bSgpKS0+Z2V0T3duUHJvcGVydHlTbG90KHRhcmdldEVu
dmlyb25tZW50LCBleGVjLCByZXNvbHV0aW9uLmxvY2FsTmFtZSwgdHJhbXBvbGluZVNsb3QpOwor
ICAgICAgICBBU1NFUlRfVU5VU0VEKGZvdW5kLCBmb3VuZCk7CisKKyAgICAgICAgSlNWYWx1ZSB2
YWx1ZSA9IHRyYW1wb2xpbmVTbG90LmdldFZhbHVlKGV4ZWMsIHByb3BlcnR5TmFtZSk7CisgICAg
ICAgIEFTU0VSVCghZXhlYy0+aGFkRXhjZXB0aW9uKCkpOworCisgICAgICAgIC8vIElmIHRoZSB2
YWx1ZSBpcyBmaWxsZWQgd2l0aCBURFogdmFsdWUsIHRocm93IGEgcmVmZXJlbmNlIGVycm9yLgor
ICAgICAgICBpZiAoIXZhbHVlKSB7CisgICAgICAgICAgICB0aHJvd1ZNRXJyb3IoZXhlYywgY3Jl
YXRlVERaRXJyb3IoZXhlYykpOworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9
CisKKyAgICAgICAgc2xvdC5zZXRWYWx1ZSh0aGlzT2JqZWN0LCBEb250RGVsZXRlLCB2YWx1ZSk7
CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICBjYXNlIFByb3BlcnR5U2xvdDo6SW50
ZXJuYWxNZXRob2RUeXBlOjpIYXNQcm9wZXJ0eTogeworICAgICAgICAvLyBEbyBub3QgcGVyZm9y
bSBbW0dldF1dIGZvciBbW0hhc1Byb3BlcnR5XV0uCisgICAgICAgIC8vIFtbR2V0XV0gLyBbW0dl
dE93blByb3BlcnR5XV0gb250byBuYW1lc3BhY2Ugb2JqZWN0IGNvdWxkIHRocm93IGFuIGVycm9y
IHdoaWxlIFtbSGFzUHJvcGVydHldXSBqdXN0IHJldHVybnMgdHJ1ZSBoZXJlLgorICAgICAgICAv
LyBodHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWEyNjIvI3NlYy1tb2R1bGUtbmFtZXNwYWNlLWV4
b3RpYy1vYmplY3RzLWhhc3Byb3BlcnR5LXAKKyAgICAgICAgc2xvdC5zZXRWYWx1ZSh0aGlzT2Jq
ZWN0LCBEb250RGVsZXRlLCBqc1VuZGVmaW5lZCgpKTsKKyAgICAgICAgcmV0dXJuIHRydWU7Cisg
ICAgfQorCisgICAgY2FzZSBQcm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9kVHlwZTo6Vk1JbnF1
aXJ5OgorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgUkVMRUFTRV9BU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gZmFsc2U7CiB9CiAKIGJvb2wgSlNNb2R1bGVOYW1l
c3BhY2VPYmplY3Q6OnB1dChKU0NlbGwqLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSwg
SlNWYWx1ZSwgUHV0UHJvcGVydHlTbG90JiBzbG90KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVOYW1lc3BhY2VPYmplY3QuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTTW9kdWxlTmFtZXNwYWNlT2JqZWN0LmgKaW5kZXggOGNmZWNm
ZDBhNDViNTA0ZTZlYWU3NDc5YjUzZDExOGY0NzI2Njc5ZS4uMmVjMThlODI5MTViY2Q1NDk1MmJj
NjhkY2I3MWQ3MmVjOGVkNzc3MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNNb2R1bGVOYW1lc3BhY2VPYmplY3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU01vZHVsZU5hbWVzcGFjZU9iamVjdC5oCkBAIC0zNiw3ICszNiw3IEBAIGNs
YXNzIEpTTW9kdWxlUmVjb3JkOwogY2xhc3MgSlNNb2R1bGVOYW1lc3BhY2VPYmplY3QgOiBwdWJs
aWMgSlNEZXN0cnVjdGlibGVPYmplY3QgewogcHVibGljOgogICAgIHR5cGVkZWYgSlNEZXN0cnVj
dGlibGVPYmplY3QgQmFzZTsKLSAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxh
Z3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFncyB8IE92ZXJyaWRlc0dldE93blByb3BlcnR5U2xvdCB8
IE92ZXJyaWRlc0dldFByb3BlcnR5TmFtZXM7CisgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0
cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3MgfCBPdmVycmlkZXNHZXRPd25Qcm9w
ZXJ0eVNsb3QgfCBJbnRlcmNlcHRzR2V0T3duUHJvcGVydHlTbG90QnlJbmRleEV2ZW5XaGVuTGVu
Z3RoSXNOb3RaZXJvIHwgT3ZlcnJpZGVzR2V0UHJvcGVydHlOYW1lcyB8IEdldE93blByb3BlcnR5
U2xvdElzSW1wdXJlRm9yUHJvcGVydHlBYnNlbmNlOwogCiAgICAgc3RhdGljIEpTTW9kdWxlTmFt
ZXNwYWNlT2JqZWN0KiBjcmVhdGUoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNNb2R1bGVSZWNvcmQqIG1vZHVsZVJl
Y29yZCwgY29uc3QgSWRlbnRpZmllclNldCYgZXhwb3J0cykKICAgICB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eVNsb3QuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlTbG90LmNwcAppbmRleCA0OTZkMGFjNGNlZTQw
YjlmMzEyNDgwMmYwOTg1M2M4MjczNmNlMWIyLi4xOWQ5YTA5Njg4MjU2Yjk2MzYyNDJhY2Q1N2M5
YTk4NWI1MWY4MjUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Q
cm9wZXJ0eVNsb3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3Bl
cnR5U2xvdC5jcHAKQEAgLTQ0LDcgKzQ0LDcgQEAgSlNWYWx1ZSBQcm9wZXJ0eVNsb3Q6OmN1c3Rv
bUdldHRlcihFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpIGMKIEpT
VmFsdWUgUHJvcGVydHlTbG90OjpnZXRQdXJlUmVzdWx0KCkgY29uc3QKIHsKICAgICBKU1ZhbHVl
IHJlc3VsdDsKLSAgICBpZiAoaXNUYWludGVkQnlQcm94eSgpKQorICAgIGlmIChpc1RhaW50ZWRC
eU9wYXF1ZU9iamVjdCgpKQogICAgICAgICByZXN1bHQgPSBqc051bGwoKTsKICAgICBlbHNlIGlm
IChpc0NhY2hlYWJsZVZhbHVlKCkpCiAgICAgICAgIHJlc3VsdCA9IEpTVmFsdWU6OmRlY29kZSht
X2RhdGEudmFsdWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
UHJvcGVydHlTbG90LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eVNs
b3QuaAppbmRleCBkN2Q3NmM3ZTNjYTY1ZmRhZmU1YWMyOTM1ZDUxODg5ZGZiNTVkMjZmLi41MDNk
MDg2Zjc0NzBjN2NlYTkzMmE1ZDcwNGI5Zjg3ZmEyZmQzOTM4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eVNsb3QuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eVNsb3QuaApAQCAtOTAsNyArOTAsNyBAQCBjbGFzcyBQ
cm9wZXJ0eVNsb3QgewogICAgICAgICAsIG1fY2FjaGVhYmlsaXR5KENhY2hpbmdBbGxvd2VkKQog
ICAgICAgICAsIG1fcHJvcGVydHlUeXBlKFR5cGVVbnNldCkKICAgICAgICAgLCBtX2ludGVybmFs
TWV0aG9kVHlwZShpbnRlcm5hbE1ldGhvZFR5cGUpCi0gICAgICAgICwgbV9pc1RhaW50ZWRCeVBy
b3h5KGZhbHNlKQorICAgICAgICAsIG1faXNUYWludGVkQnlPcGFxdWVPYmplY3QoZmFsc2UpCiAg
ICAgewogICAgIH0KIApAQCAtMTEwLDggKzExMCw4IEBAIGNsYXNzIFByb3BlcnR5U2xvdCB7CiAg
ICAgYm9vbCBpc0NhY2hlYWJsZVZhbHVlKCkgY29uc3QgeyByZXR1cm4gaXNDYWNoZWFibGUoKSAm
JiBpc1ZhbHVlKCk7IH0KICAgICBib29sIGlzQ2FjaGVhYmxlR2V0dGVyKCkgY29uc3QgeyByZXR1
cm4gaXNDYWNoZWFibGUoKSAmJiBpc0FjY2Vzc29yKCk7IH0KICAgICBib29sIGlzQ2FjaGVhYmxl
Q3VzdG9tKCkgY29uc3QgeyByZXR1cm4gaXNDYWNoZWFibGUoKSAmJiBpc0N1c3RvbSgpOyB9Ci0g
ICAgdm9pZCBzZXRJc1RhaW50ZWRCeVByb3h5KCkgeyBtX2lzVGFpbnRlZEJ5UHJveHkgPSB0cnVl
OyB9Ci0gICAgYm9vbCBpc1RhaW50ZWRCeVByb3h5KCkgY29uc3QgeyByZXR1cm4gbV9pc1RhaW50
ZWRCeVByb3h5OyB9CisgICAgdm9pZCBzZXRJc1RhaW50ZWRCeU9wYXF1ZU9iamVjdCgpIHsgbV9p
c1RhaW50ZWRCeU9wYXF1ZU9iamVjdCA9IHRydWU7IH0KKyAgICBib29sIGlzVGFpbnRlZEJ5T3Bh
cXVlT2JqZWN0KCkgY29uc3QgeyByZXR1cm4gbV9pc1RhaW50ZWRCeU9wYXF1ZU9iamVjdDsgfQog
CiAgICAgSW50ZXJuYWxNZXRob2RUeXBlIGludGVybmFsTWV0aG9kVHlwZSgpIGNvbnN0IHsgcmV0
dXJuIG1faW50ZXJuYWxNZXRob2RUeXBlOyB9CiAKQEAgLTI5Myw3ICsyOTMsNyBAQCBjbGFzcyBQ
cm9wZXJ0eVNsb3QgewogICAgIENhY2hlYWJpbGl0eVR5cGUgbV9jYWNoZWFiaWxpdHk7CiAgICAg
UHJvcGVydHlUeXBlIG1fcHJvcGVydHlUeXBlOwogICAgIEludGVybmFsTWV0aG9kVHlwZSBtX2lu
dGVybmFsTWV0aG9kVHlwZTsKLSAgICBib29sIG1faXNUYWludGVkQnlQcm94eTsKKyAgICBib29s
IG1faXNUYWludGVkQnlPcGFxdWVPYmplY3Q7CiB9OwogCiBBTFdBWVNfSU5MSU5FIEpTVmFsdWUg
UHJvcGVydHlTbG90OjpnZXRWYWx1ZShFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9w
ZXJ0eU5hbWUpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9Qcm94eU9iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm94eU9i
amVjdC5jcHAKaW5kZXggNmVlNDg2Y2JiMDYxY2VjYWZkNGZhNTMwYTkyNDU2ZDljNmVhZWExNS4u
NDhhNzA5ZDU3OGM1YTMyYzY3YWE5NjVmYmY2YzljNWIzMTY0ZTQ2OCAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJveHlPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3h5T2JqZWN0LmNwcApAQCAtMzQ0LDcgKzM0NCw3IEBA
IGJvb2wgUHJveHlPYmplY3Q6OmdldE93blByb3BlcnR5U2xvdENvbW1vbihFeGVjU3RhdGUqIGV4
ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAg
ICAgc2xvdC5kaXNhYmxlQ2FjaGluZygpOwotICAgIHNsb3Quc2V0SXNUYWludGVkQnlQcm94eSgp
OworICAgIHNsb3Quc2V0SXNUYWludGVkQnlPcGFxdWVPYmplY3QoKTsKICAgICBzd2l0Y2ggKHNs
b3QuaW50ZXJuYWxNZXRob2RUeXBlKCkpIHsKICAgICBjYXNlIFByb3BlcnR5U2xvdDo6SW50ZXJu
YWxNZXRob2RUeXBlOjpHZXQ6CiAgICAgICAgIHJldHVybiBwZXJmb3JtR2V0KGV4ZWMsIHByb3Bl
cnR5TmFtZSwgc2xvdCk7CmRpZmYgLS1naXQgYS9KU1Rlc3RzL0NoYW5nZUxvZyBiL0pTVGVzdHMv
Q2hhbmdlTG9nCmluZGV4IDJjMGRiODU0MWMyMGE1NmYyNzJiZTE0YTAwNWY0ZDQ1MjZhZjM1YTIu
LjZmYTZmYjUxM2ZmYjQyYzlmMmQ4OTU3ZTE2Y2UxMjZhZGM3OGY1MmUgMTAwNjQ0Ci0tLSBhL0pT
VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0pTVGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjUgQEAK
KzIwMTYtMDgtMDQgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CisKKyAg
ICAgICAgW0VTNl0gTW9kdWxlIG5hbWVzcGFjZSBvYmplY3Qgc2hvdWxkIG5vdCBhbGxvdyB1bnNl
dCBJQworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYw
NTUzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBt
b2R1bGVzL25hbWVzcGFjZS1vYmplY3QtZ2V0LXByb3BlcnR5LmpzOiBBZGRlZC4KKyAgICAgICAg
KGltcG9ydC5hcy5ucy5mcm9tLnN0cmluZ19hcHBlYXJlZF9oZXJlLnNob3VsZFRocm93KToKKyAg
ICAgICAgKiBtb2R1bGVzL25hbWVzcGFjZS1vYmplY3QtaGFzLXByb3BlcnR5LmpzOiBBZGRlZC4K
KyAgICAgICAgKiBtb2R1bGVzL25hbWVzcGFjZS1vYmplY3QtaW5saW5lLWNhY2hpbmcuanM6IEFk
ZGVkLgorICAgICAgICAoaW1wb3J0LmFzLkEuZnJvbS5zdHJpbmdfYXBwZWFyZWRfaGVyZS5pbXBv
cnQuYXMuQi5mcm9tLnN0cmluZ19hcHBlYXJlZF9oZXJlLmxvb2t1cCk6CisgICAgICAgIChzaG91
bGRCZS5sb29rdXAubG9va3VwKToKKyAgICAgICAgKHNob3VsZEJlLmxvb2t1cCk6CisgICAgICAg
ICogbW9kdWxlcy9uYW1lc3BhY2Utb2JqZWN0LWlubGluZS1jYWNoaW5nL2EuanM6IEFkZGVkLgor
ICAgICAgICAqIG1vZHVsZXMvbmFtZXNwYWNlLW9iamVjdC1pbmxpbmUtY2FjaGluZy9iLmpzOiBB
ZGRlZC4KKyAgICAgICAgKiBtb2R1bGVzL25hbWVzcGFjZS1vYmplY3QtdHJ5LWdldC5qczogQWRk
ZWQuCisgICAgICAgIChpbXBvcnQuYXMubnMuZnJvbS5zdHJpbmdfYXBwZWFyZWRfaGVyZS50cnlH
ZXRCeUlkVGV4dCk6CisgICAgICAgICh0cnlHZXRCeUlkVGV4dFN0cmljdCk6CisgICAgICAgICog
bW9kdWxlcy9uYW1lc3BhY2Utb2JqZWN0LXR5cGVkLWFycmF5LWZhc3QtcGF0aC5qczogQWRkZWQu
CisgICAgICAgICogdGVzdDI2Mi55YW1sOgorCiAyMDE2LTA4LTAzICBDYWl0bGluIFBvdHRlciAg
PGNhaXRwQGlnYWxpYS5jb20+CiAKICAgICAgICAgQ2xhcmlmeSBTeW50YXhFcnJvcnMgYXJvdW5k
IHlpZWxkIGFuZCB1bnNraXAgdGVzdHMKZGlmZiAtLWdpdCBhL0pTVGVzdHMvbW9kdWxlcy9uYW1l
c3BhY2Utb2JqZWN0LWdldC1wcm9wZXJ0eS5qcyBiL0pTVGVzdHMvbW9kdWxlcy9uYW1lc3BhY2Ut
b2JqZWN0LWdldC1wcm9wZXJ0eS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yNjkyMDEyZGQ4Njk2Mjk1YTNhNzU3
ZDFhYWU0MzBkZjdmMTE0ZmUxCi0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9tb2R1bGVzL25h
bWVzcGFjZS1vYmplY3QtZ2V0LXByb3BlcnR5LmpzCkBAIC0wLDAgKzEsOSBAQAoraW1wb3J0IHsg
c2hvdWxkVGhyb3csIHNob3VsZEJlIH0gZnJvbSAiLi9yZXNvdXJjZXMvYXNzZXJ0LmpzIjsKK2lt
cG9ydCAqIGFzIG5zIGZyb20gIi4vbmFtZXNwYWNlLW9iamVjdC1nZXQtcHJvcGVydHkuanMiCisK
K3Nob3VsZFRocm93KCgpID0+IHsKKyAgICBSZWZsZWN0LmdldChucywgJ2VtcHR5Jyk7Cit9LCBg
UmVmZXJlbmNlRXJyb3I6IENhbm5vdCBhY2Nlc3MgdW5pbml0aWFsaXplZCB2YXJpYWJsZS5gKTsK
K3Nob3VsZEJlKFJlZmxlY3QuZ2V0KG5zLCAndW5kZWZpbmVkJyksIHVuZGVmaW5lZCk7CisKK2V4
cG9ydCBsZXQgZW1wdHk7CmRpZmYgLS1naXQgYS9KU1Rlc3RzL21vZHVsZXMvbmFtZXNwYWNlLW9i
amVjdC1oYXMtcHJvcGVydHkuanMgYi9KU1Rlc3RzL21vZHVsZXMvbmFtZXNwYWNlLW9iamVjdC1o
YXMtcHJvcGVydHkuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjg2ODg1YWFmZjNjYmQyMGQ0MzAwMmM5NTIyNjE0
Y2VjNGU2YWIxOQotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvbW9kdWxlcy9uYW1lc3BhY2Ut
b2JqZWN0LWhhcy1wcm9wZXJ0eS5qcwpAQCAtMCwwICsxLDcgQEAKK2ltcG9ydCB7IHNob3VsZEJl
IH0gZnJvbSAiLi9yZXNvdXJjZXMvYXNzZXJ0LmpzIjsKK2ltcG9ydCAqIGFzIG5zIGZyb20gIi4v
bmFtZXNwYWNlLW9iamVjdC1oYXMtcHJvcGVydHkuanMiCisKK3Nob3VsZEJlKFJlZmxlY3QuaGFz
KG5zLCAnZW1wdHknKSwgdHJ1ZSk7CitzaG91bGRCZShSZWZsZWN0LmhhcyhucywgJ3VuZGVmaW5l
ZCcpLCBmYWxzZSk7CisKK2V4cG9ydCBsZXQgZW1wdHk7CmRpZmYgLS1naXQgYS9KU1Rlc3RzL21v
ZHVsZXMvbmFtZXNwYWNlLW9iamVjdC1pbmxpbmUtY2FjaGluZy5qcyBiL0pTVGVzdHMvbW9kdWxl
cy9uYW1lc3BhY2Utb2JqZWN0LWlubGluZS1jYWNoaW5nLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjVjZWY1YWMw
ZGQzZDVlZGQyOWJiZTBhYzhhY2I1ZGM0YjNlNWZjZjQKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rl
c3RzL21vZHVsZXMvbmFtZXNwYWNlLW9iamVjdC1pbmxpbmUtY2FjaGluZy5qcwpAQCAtMCwwICsx
LDM3IEBACitpbXBvcnQgeyBzaG91bGRCZSB9IGZyb20gIi4vcmVzb3VyY2VzL2Fzc2VydC5qcyI7
CitpbXBvcnQgKiBhcyBBIGZyb20gIi4vbmFtZXNwYWNlLW9iamVjdC1pbmxpbmUtY2FjaGluZy9h
LmpzIgoraW1wb3J0ICogYXMgQiBmcm9tICIuL25hbWVzcGFjZS1vYmplY3QtaW5saW5lLWNhY2hp
bmcvYi5qcyIKKworLy8gdW5zZXQgY2FjaGluZyBzaG91bGQgYmUgZGlzYWJsZWQgZm9yIG5hbWVz
cGFjZSBvYmplY3QuCit7CisgICAgZnVuY3Rpb24gbG9va3VwKG5zKQorICAgIHsKKyAgICAgICAg
cmV0dXJuIG5zLmhlbGxvOworICAgIH0KKyAgICBub0lubGluZShsb29rdXApOworCisgICAgc2hv
dWxkQmUoQS5oZWxsbywgdW5kZWZpbmVkKTsKKyAgICBzaG91bGRCZShCLmhlbGxvLCA0Mik7CisK
KyAgICBmb3IgKGxldCBpID0gMDsgaSA8IDFlNDsgKytpKQorICAgICAgICBzaG91bGRCZShsb29r
dXAoQSksIHVuZGVmaW5lZCk7CisKKyAgICBzaG91bGRCZShsb29rdXAoQiksIDQyKTsKK30KKwor
Ly8gdXN1YWwgY2FjaGluZyBzaG91bGQgYmUgZGlzYWJsZWQgZm9yIG5hbWVzcGFjZSBvYmplY3Qu
Cit7CisgICAgZnVuY3Rpb24gbG9va3VwKG5zKQorICAgIHsKKyAgICAgICAgcmV0dXJuIG5zLmdv
b2RieWU7CisgICAgfQorICAgIG5vSW5saW5lKGxvb2t1cCk7CisKKyAgICBzaG91bGRCZShBLmdv
b2RieWUsIDApOworICAgIHNob3VsZEJlKEIuZ29vZGJ5ZSwgdW5kZWZpbmVkKTsKKworICAgIGZv
ciAobGV0IGkgPSAwOyBpIDwgMWU0OyArK2kpCisgICAgICAgIHNob3VsZEJlKGxvb2t1cChBKSwg
MCk7CisKKyAgICBzaG91bGRCZShsb29rdXAoQiksIHVuZGVmaW5lZCk7Cit9CmRpZmYgLS1naXQg
YS9KU1Rlc3RzL21vZHVsZXMvbmFtZXNwYWNlLW9iamVjdC1pbmxpbmUtY2FjaGluZy9hLmpzIGIv
SlNUZXN0cy9tb2R1bGVzL25hbWVzcGFjZS1vYmplY3QtaW5saW5lLWNhY2hpbmcvYS5qcwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi43MzE4NzNhMDE0MDhmNTc4ZjM5MGNjMWNiN2QyNmY2OTFhNGRiNWQ2Ci0tLSAvZGV2
L251bGwKKysrIGIvSlNUZXN0cy9tb2R1bGVzL25hbWVzcGFjZS1vYmplY3QtaW5saW5lLWNhY2hp
bmcvYS5qcwpAQCAtMCwwICsxIEBACitleHBvcnQgbGV0IGdvb2RieWUgPSAwOwpkaWZmIC0tZ2l0
IGEvSlNUZXN0cy9tb2R1bGVzL25hbWVzcGFjZS1vYmplY3QtaW5saW5lLWNhY2hpbmcvYi5qcyBi
L0pTVGVzdHMvbW9kdWxlcy9uYW1lc3BhY2Utb2JqZWN0LWlubGluZS1jYWNoaW5nL2IuanMKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNWI3ZDkwZjBlZmQ5ZmE0NzQ0MGIzYWY0MjJjZjY5YWRjMDM5NDY1OAotLS0gL2Rl
di9udWxsCisrKyBiL0pTVGVzdHMvbW9kdWxlcy9uYW1lc3BhY2Utb2JqZWN0LWlubGluZS1jYWNo
aW5nL2IuanMKQEAgLTAsMCArMSBAQAorZXhwb3J0IGxldCBoZWxsbyA9IDQyOwpkaWZmIC0tZ2l0
IGEvSlNUZXN0cy9tb2R1bGVzL25hbWVzcGFjZS1vYmplY3QtdHJ5LWdldC5qcyBiL0pTVGVzdHMv
bW9kdWxlcy9uYW1lc3BhY2Utb2JqZWN0LXRyeS1nZXQuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOGI3Y2U2OWZj
ZDNjZjBjMzQ3Zjc1MWQzMjcyMDdhM2E2ZDkwNTQ0NAotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVz
dHMvbW9kdWxlcy9uYW1lc3BhY2Utb2JqZWN0LXRyeS1nZXQuanMKQEAgLTAsMCArMSwyMyBAQAor
aW1wb3J0IHsgc2hvdWxkQmUgfSBmcm9tICIuL3Jlc291cmNlcy9hc3NlcnQuanMiOworaW1wb3J0
ICogYXMgbnMgZnJvbSAiLi9uYW1lc3BhY2Utb2JqZWN0LXRyeS1nZXQuanMiCisKK2Z1bmN0aW9u
IHRyeUdldEJ5SWRUZXh0KHByb3BlcnR5TmFtZSkgeyByZXR1cm4gYChmdW5jdGlvbiAoYmFzZSkg
eyByZXR1cm4gQHRyeUdldEJ5SWQoYmFzZSwgJyR7cHJvcGVydHlOYW1lfScpOyB9KWA7IH0KKwor
ZnVuY3Rpb24gdHJ5R2V0QnlJZFRleHRTdHJpY3QocHJvcGVydHlOYW1lKSB7IHJldHVybiBgKGZ1
bmN0aW9uIChiYXNlKSB7ICJ1c2Ugc3RyaWN0IjsgcmV0dXJuIEB0cnlHZXRCeUlkKGJhc2UsICck
e3Byb3BlcnR5TmFtZX0nKTsgfSlgOyB9CisKK3sKKyAgICBsZXQgZ2V0ID0gY3JlYXRlQnVpbHRp
bih0cnlHZXRCeUlkVGV4dCgiZW1wdHkiKSk7CisgICAgbm9JbmxpbmUoZ2V0KTsKKworICAgIC8v
IERvIG5vdCB0aHJvdy4KKyAgICBzaG91bGRCZShnZXQobnMpLCBudWxsKTsKKworICAgIGxldCBn
ZXRTdHJpY3QgPSBjcmVhdGVCdWlsdGluKHRyeUdldEJ5SWRUZXh0U3RyaWN0KCJlbXB0eSIpKTsK
KyAgICBub0lubGluZShnZXRTdHJpY3QpOworCisgICAgLy8gRG8gbm90IHRocm93LgorICAgIHNo
b3VsZEJlKGdldFN0cmljdChucyksIG51bGwpOworCit9CisKK2V4cG9ydCBsZXQgZW1wdHk7CmRp
ZmYgLS1naXQgYS9KU1Rlc3RzL21vZHVsZXMvbmFtZXNwYWNlLW9iamVjdC10eXBlZC1hcnJheS1m
YXN0LXBhdGguanMgYi9KU1Rlc3RzL21vZHVsZXMvbmFtZXNwYWNlLW9iamVjdC10eXBlZC1hcnJh
eS1mYXN0LXBhdGguanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMmFlYTc4NmMwYWQwMDNiMzA3MTYyN2FkZGFkOTk4
ZWE5Yjk3OWUyZQotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvbW9kdWxlcy9uYW1lc3BhY2Ut
b2JqZWN0LXR5cGVkLWFycmF5LWZhc3QtcGF0aC5qcwpAQCAtMCwwICsxLDcgQEAKK2ltcG9ydCB7
IHNob3VsZEJlIH0gZnJvbSAiLi9yZXNvdXJjZXMvYXNzZXJ0LmpzIjsKK2ltcG9ydCAqIGFzIG5z
IGZyb20gIi4vbmFtZXNwYWNlLW9iamVjdC10eXBlZC1hcnJheS1mYXN0LXBhdGguanMiCitleHBv
cnQgbGV0IGxlbmd0aCA9IDQyOworZXhwb3J0IGxldCBoZWxsbyA9IDQ0OworCitsZXQgYXJyYXkg
PSBuZXcgVWludDhBcnJheShucyk7CitzaG91bGRCZShhcnJheS5sZW5ndGgsIDIpOwpkaWZmIC0t
Z2l0IGEvSlNUZXN0cy90ZXN0MjYyLnlhbWwgYi9KU1Rlc3RzL3Rlc3QyNjIueWFtbAppbmRleCAy
NWMzNzdkZjYyZDBjNDg1NjM3ZWMzZTJjYTlmZmZiOTNhZTUzZDgxLi40MjgzOWI1ZDVjNDkzM2Fj
NWNlYzQ2OWQ4MzI1YTFjNjgwNGEyMjM0IDEwMDY0NAotLS0gYS9KU1Rlc3RzL3Rlc3QyNjIueWFt
bAorKysgYi9KU1Rlc3RzL3Rlc3QyNjIueWFtbApAQCAtNzEyNzQsNyArNzEyNzQsNyBAQAogLSBw
YXRoOiB0ZXN0MjYyL3Rlc3QvbGFuZ3VhZ2UvbW9kdWxlLWNvZGUvbmFtZXNwYWNlL2ludGVybmFs
cy9nZXQtb3duLXByb3BlcnR5LXN0ci1mb3VuZC1pbml0LmpzCiAgIGNtZDogcnVuVGVzdDI2MiA6
ZmFpbCwgIk5vRXhjZXB0aW9uIiwgWyIuLi8uLi8uLi8uLi8uLi9oYXJuZXNzL2Fzc2VydC5qcyIs
ICIuLi8uLi8uLi8uLi8uLi9oYXJuZXNzL3N0YS5qcyJdLCBbOm1vZHVsZV0KIC0gcGF0aDogdGVz
dDI2Mi90ZXN0L2xhbmd1YWdlL21vZHVsZS1jb2RlL25hbWVzcGFjZS9pbnRlcm5hbHMvZ2V0LW93
bi1wcm9wZXJ0eS1zdHItZm91bmQtdW5pbml0LmpzCi0gIGNtZDogcnVuVGVzdDI2MiA6ZmFpbCwg
Ik5vRXhjZXB0aW9uIiwgWyIuLi8uLi8uLi8uLi8uLi9oYXJuZXNzL2Fzc2VydC5qcyIsICIuLi8u
Li8uLi8uLi8uLi9oYXJuZXNzL3N0YS5qcyJdLCBbOm1vZHVsZV0KKyAgY21kOiBydW5UZXN0MjYy
IDpub3JtYWwsICJOb0V4Y2VwdGlvbiIsIFsiLi4vLi4vLi4vLi4vLi4vaGFybmVzcy9hc3NlcnQu
anMiLCAiLi4vLi4vLi4vLi4vLi4vaGFybmVzcy9zdGEuanMiXSwgWzptb2R1bGVdCiAtIHBhdGg6
IHRlc3QyNjIvdGVzdC9sYW5ndWFnZS9tb2R1bGUtY29kZS9uYW1lc3BhY2UvaW50ZXJuYWxzL2dl
dC1vd24tcHJvcGVydHktc3RyLW5vdC1mb3VuZC5qcwogICBjbWQ6IHJ1blRlc3QyNjIgOm5vcm1h
bCwgIk5vRXhjZXB0aW9uIiwgWyIuLi8uLi8uLi8uLi8uLi9oYXJuZXNzL2Fzc2VydC5qcyIsICIu
Li8uLi8uLi8uLi8uLi9oYXJuZXNzL3N0YS5qcyJdLCBbOm1vZHVsZV0KIC0gcGF0aDogdGVzdDI2
Mi90ZXN0L2xhbmd1YWdlL21vZHVsZS1jb2RlL25hbWVzcGFjZS9pbnRlcm5hbHMvZ2V0LW93bi1w
cm9wZXJ0eS1zeW0uanMK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>285402</attachid>
            <date>2016-08-04 23:06:19 -0700</date>
            <delta_ts>2016-08-07 19:50:23 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-160553-20160805150452.patch</filename>
            <type>text/plain</type>
            <size>23167</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA0MTE4CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBh
MmMzMzVhNTJiYzg2NWE1Nzk1OTc0NjMwYTQyZmIxYzkzNzg4NGI0Li40OTgyMTNiNTExNmQ1MjM0
YWQ2ZGZlZmYyMTQyY2VkZDE3NjBhMDNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw0OSBAQAorMjAxNi0wOC0wNCAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KKworICAgICAgICBbRVM2XSBNb2R1bGUgbmFtZXNwYWNlIG9iamVjdCBzaG91bGQgbm90
IGFsbG93IHVuc2V0IElDCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xNjA1NTMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBQcmV2aW91c2x5LCBtb2R1bGUgbmFtZXNwYWNlIG9iamVjdCBhY2NpZGVudGFsbHkg
YWxsb3cgInVuc2V0IElDIi4gQnV0IHRoaXMgInVuc2V0bmVzcyIgZG9lcyBub3QgcmVseSBvbgor
ICAgICAgICB0aGUgc3RydWN0dXJlLiBXZSBzaG91bGQgZGlzYWJsZSBpbmxpbmUgY2FjaGluZyBv
bnRvIHRoZSBuYW1lc3BhY2Ugb2JqZWN0LiBPbmNlIGl0IGlzIG5lZWRlZCwgd2Ugc2hvdWxkCisg
ICAgICAgIGNyZWF0ZSB0aGUgc3BlY2lhbCBjYWNoaW5nIGZvciBuYW1lc3BhY2Ugb2JqZWN0IGxp
a2UgdGhlIGZvbGxvd2luZzogaXQgc2hvdWxkIGJlIHNpbWlsYXIgdG8gbW9ub21vcnBoaWMgSUMs
CisgICAgICAgIGJ1dCBpdCBjYWNoZXMgdGhlIG9iamVjdCBpdHNlbGYgaW5zdGVhZCBvZiB0aGUg
c3RydWN0dXJlLiBJdCBjaGVja3MgdGhlIG9iamVjdCBpdHNlbGYgKEFuZCBpbiBERkcsIGl0IHNo
b3VsZCBiZQorICAgICAgICBDaGVja0NlbGwpIGFuZCBsb2FkcyB0aGUgdmFsdWUgZnJvbSB0aGUg
dGFyZ2V0IG1vZHVsZSBlbnZpcm9ubWVudCBkaXJlY3RseVsxXS4KKworICAgICAgICBBbmQgdGhp
cyBwYXRjaCBhbHNvIHNldCBzZXRJc1RhaW50ZWRCeVByb3h5IGZvciB0aGUgbW9kdWxlIG5hbWVz
cGFjZSBvYmplY3QgdG8gbm90aWZ5IHRvIHRoZSBjYWxsZXIgdGhhdAorICAgICAgICB0aGlzIG9i
amVjdCBoYXMgaW1wdXJlIDo6Z2V0T3duUHJvcGVydHlTbG90LiBUaGVuIHRoaXMgZnVuY3Rpb24g
aXMgbm93IHJlbmFtZWQgdG8gc2V0SXNUYWludGVkQnlPcGFxdWVPYmplY3QuCisKKyAgICAgICAg
V2UgZHJvcCB0aGUgaGFjayBpbiBKU01vZHVsZU5hbWVzcGFjZU9iamVjdDo6Z2V0T3duUHJvcGVy
dHlTbG90IHNpbmNlIHdlIGFscmVhZHkgaW50cm9kdWNlZCBJbnRlcm5hbE1ldGhvZFR5cGUKKyAg
ICAgICAgZm9yIFByb3h5T2JqZWN0LiBQcmV2aW91c2x5IHdlIGNhbm5vdCBkaXN0aW5ndWlzaCA6
Okhhc1Byb3BlcnR5IGFuZCA6OkdldE93blByb3BlcnR5LiBTbyBub3QgdG8gdGhyb3cgYW55Cisg
ICAgICAgIGVycm9ycyBmb3IgOjpIYXNQcm9wZXJ0eSBjYXNlLCB3ZSB1c2VkIHNsb3Quc2V0Q3Vz
dG9tIHRvIGRlbGF5IHRoZSBvYnNlcnZhYmxlIG9wZXJhdGlvbi4KKyAgICAgICAgQnV0LCB0aGlz
IGhhY2sgbGFja3MgdGhlIHN1cHBvcnQgZm9yIGhhc093blByb3BlcnR5OiBoYXNPd25Qcm9wZXJ0
eSB1c2VzIFtbR2V0T3duUHJvcGVydHldXSwgc28gaXQgc2hvdWxkIHRocm93IGFuIGVycm9yLgor
ICAgICAgICBIb3dldmVyIHRoZSBwcmV2aW91cyBpbXBsZW1lbnRhdGlvbiBkb2VzIG5vdCB0aHJv
dyBhbiBlcnJvciBzaW5jZSB0aGUgZGVsYXllZCBvYnNlcnZhYmxlIHBhcnQgKGN1c3RvbSBmdW5j
dGlvbiBwYXJ0KSBpcworICAgICAgICBza2lwcGVkIGluIGhhc093blByb3BlcnR5IGltcGxlbWVu
dGF0aW9uLiBXZSBub3cgcmVtb3ZlIHRoaXMgY3VzdG9tIHByb3BlcnR5IGhhY2sgYW5kIGZpeCB0
aGUgY29ycmVzcG9uZGluZyBmYWlsdXJlCisgICAgICAgIGluIHRlc3QyNjIuCisKKyAgICAgICAg
WzFdOiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYwNTkwCisKKyAg
ICAgICAgKiBqaXQvSklUT3BlcmF0aW9ucy5jcHA6CisgICAgICAgICogcnVudGltZS9BcnJheVBy
b3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6OmdldFByb3BlcnR5KToKKyAgICAgICAgKiBydW50
aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3Q29uc3RydWN0b3JJbmxpbmVzLmg6CisgICAgICAg
IChKU0M6OmNvbnN0cnVjdEdlbmVyaWNUeXBlZEFycmF5Vmlld1dpdGhBcmd1bWVudHMpOgorICAg
ICAgICAqIHJ1bnRpbWUvSlNNb2R1bGVOYW1lc3BhY2VPYmplY3QuY3BwOgorICAgICAgICAoSlND
OjpKU01vZHVsZU5hbWVzcGFjZU9iamVjdDo6Z2V0T3duUHJvcGVydHlTbG90KToKKyAgICAgICAg
KEpTQzo6Y2FsbGJhY2tHZXR0ZXIpOiBEZWxldGVkLgorICAgICAgICAqIHJ1bnRpbWUvSlNNb2R1
bGVOYW1lc3BhY2VPYmplY3QuaDoKKyAgICAgICAgKiBydW50aW1lL1Byb3BlcnR5U2xvdC5jcHA6
CisgICAgICAgIChKU0M6OlByb3BlcnR5U2xvdDo6Z2V0UHVyZVJlc3VsdCk6CisgICAgICAgICog
cnVudGltZS9Qcm9wZXJ0eVNsb3QuaDoKKyAgICAgICAgKEpTQzo6UHJvcGVydHlTbG90OjpQcm9w
ZXJ0eVNsb3QpOgorICAgICAgICAoSlNDOjpQcm9wZXJ0eVNsb3Q6OnNldElzVGFpbnRlZEJ5T3Bh
cXVlT2JqZWN0KToKKyAgICAgICAgKEpTQzo6UHJvcGVydHlTbG90Ojppc1RhaW50ZWRCeU9wYXF1
ZU9iamVjdCk6CisgICAgICAgIChKU0M6OlByb3BlcnR5U2xvdDo6c2V0SXNUYWludGVkQnlQcm94
eSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OlByb3BlcnR5U2xvdDo6aXNUYWludGVkQnlQcm94
eSk6IERlbGV0ZWQuCisgICAgICAgICogcnVudGltZS9Qcm94eU9iamVjdC5jcHA6CisgICAgICAg
IChKU0M6OlByb3h5T2JqZWN0OjpnZXRPd25Qcm9wZXJ0eVNsb3RDb21tb24pOgorCiAyMDE2LTA4
LTAzICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgRHJvcCBEb2N1
bWVudFR5cGUuaW50ZXJuYWxTdWJzZXQgYXR0cmlidXRlCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVRPcGVyYXRpb25zLmNwcAppbmRleCA0MmY2ZTQ3YTk0YWIxODQyOTA1MzE4NDZkYjZk
NjczZTFkYzcwMDdlLi40YzI0Mjg2NGY4MzIyMTlkN2MwNTFmMmRhYzNiNGFkN2M5M2Y5Zjg1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAKQEAgLTE5NCw3
ICsxOTQsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblRyeUdldEJ5
SWRPcHRpbWl6ZShFeGVjU3RhdGUqIGV4ZWMsIFN0cnVjdAogICAgIFByb3BlcnR5U2xvdCBzbG90
KGJhc2VWYWx1ZSwgUHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6OlZNSW5xdWlyeSk7
CiAKICAgICBiYXNlVmFsdWUuZ2V0UHJvcGVydHlTbG90KGV4ZWMsIGlkZW50LCBzbG90KTsKLSAg
ICBpZiAoc3R1YkluZm8tPmNvbnNpZGVyQ2FjaGluZyhiYXNlVmFsdWUuc3RydWN0dXJlT3JOdWxs
KCkpICYmICFzbG90LmlzVGFpbnRlZEJ5UHJveHkoKSAmJiAoc2xvdC5pc0NhY2hlYWJsZVZhbHVl
KCkgfHwgc2xvdC5pc0NhY2hlYWJsZUdldHRlcigpIHx8IHNsb3QuaXNVbnNldCgpKSkKKyAgICBp
ZiAoc3R1YkluZm8tPmNvbnNpZGVyQ2FjaGluZyhiYXNlVmFsdWUuc3RydWN0dXJlT3JOdWxsKCkp
ICYmICFzbG90LmlzVGFpbnRlZEJ5T3BhcXVlT2JqZWN0KCkgJiYgKHNsb3QuaXNDYWNoZWFibGVW
YWx1ZSgpIHx8IHNsb3QuaXNDYWNoZWFibGVHZXR0ZXIoKSB8fCBzbG90LmlzVW5zZXQoKSkpCiAg
ICAgICAgIHJlcGF0Y2hHZXRCeUlEKGV4ZWMsIGJhc2VWYWx1ZSwgaWRlbnQsIHNsb3QsICpzdHVi
SW5mbywgR2V0QnlJREtpbmQ6OlB1cmUpOwogCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShz
bG90LmdldFB1cmVSZXN1bHQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9BcnJheVByb3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9BcnJheVByb3RvdHlwZS5jcHAKaW5kZXggMzY2MWRiYTAyNDMxNWUxOGNlNDU4NmJkMTU0NmRi
M2NkZjlkNzU0OS4uZjFlYzU3Y2FkMDE5YTYzZDgyODMxYThiYmNjYTgzMWIxYjcyMTMxZCAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlQcm90b3R5cGUuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5UHJvdG90eXBlLmNwcApA
QCAtMTU0LDEyICsxNTQsMTIgQEAgc3RhdGljIEFMV0FZU19JTkxJTkUgSlNWYWx1ZSBnZXRQcm9w
ZXJ0eShFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBvYmplY3QsIHVuc2kKICAgICAgICAgcmV0
dXJuIHJlc3VsdDsKICAgICAvLyBXZSB3YW50IHRvIHBlcmZvcm0gZ2V0IGFuZCBoYXMgaW4gdGhl
IHNhbWUgb3BlcmF0aW9uLgogICAgIC8vIFdlIGNhbiBvbmx5IGRvIHNvIHdoZW4gdGhpcyBiZWhh
dmlvciBpcyBub3Qgb2JzZXJ2YWJsZS4gVGhlCi0gICAgLy8gb25seSB0aW1lIGl0IGlzIG9ic2Vy
dmFibGUgaXMgd2hlbiB3ZSBlbmNvdW50ZXIgYSBQcm94eU9iamVjdAorICAgIC8vIG9ubHkgdGlt
ZSBpdCBpcyBvYnNlcnZhYmxlIGlzIHdoZW4gd2UgZW5jb3VudGVyIGFuIG9wYXF1ZSBvYmplY3Rz
IChQcm94eU9iamVjdCBhbmQgSlNNb2R1bGVOYW1lc3BhY2VPYmplY3QpCiAgICAgLy8gc29tZXdo
ZXJlIGluIHRoZSBwcm90b3R5cGUgY2hhaW4uCiAgICAgUHJvcGVydHlTbG90IHNsb3Qob2JqZWN0
LCBQcm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9kVHlwZTo6SGFzUHJvcGVydHkpOwogICAgIGlm
ICghb2JqZWN0LT5nZXRQcm9wZXJ0eVNsb3QoZXhlYywgaW5kZXgsIHNsb3QpKQogICAgICAgICBy
ZXR1cm4gSlNWYWx1ZSgpOwotICAgIGlmIChVTkxJS0VMWShzbG90LmlzVGFpbnRlZEJ5UHJveHko
KSkpCisgICAgaWYgKFVOTElLRUxZKHNsb3QuaXNUYWludGVkQnlPcGFxdWVPYmplY3QoKSkpCiAg
ICAgICAgIHJldHVybiBvYmplY3QtPmdldChleGVjLCBpbmRleCk7CiAgICAgcmV0dXJuIHNsb3Qu
Z2V0VmFsdWUoZXhlYywgaW5kZXgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXdDb25zdHJ1Y3RvcklubGluZXMuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3Q29u
c3RydWN0b3JJbmxpbmVzLmgKaW5kZXggOTAyYjA2YjMxYWZhZDc2MmRjYTM2YWFiYzRlYjg0MmU1
MWFjMTM5Yy4uMTVhYjQwMTlhOWJlNmY4ZDYyMzE5ZjJiY2IyYjg5MGVkZjRjMDMyZCAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZp
ZXdDb25zdHJ1Y3RvcklubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld0NvbnN0cnVjdG9ySW5saW5lcy5oCkBAIC0xNTIsNyAr
MTUyLDcgQEAgaW5saW5lIEpTT2JqZWN0KiBjb25zdHJ1Y3RHZW5lcmljVHlwZWRBcnJheVZpZXdX
aXRoQXJndW1lbnRzKEV4ZWNTdGF0ZSogZXhlYywgU3QKICAgICAgICAgICAgIGxlbmd0aCA9IGpz
Q2FzdDxKU0FycmF5QnVmZmVyVmlldyo+KG9iamVjdCktPmxlbmd0aCgpOwogICAgICAgICBlbHNl
IHsKICAgICAgICAgICAgIC8vIFRoaXMgZ2V0UHJvcGVydHlTbG90IG9wZXJhdGlvbiBzaG91bGQg
bm90IGJlIG9ic2VydmVkIGJ5IHRoZSBQcm94eS4KLSAgICAgICAgICAgIC8vIFNvIHdlIHVzZSBW
TUlucXVpcnkuIEFuZCBwdXJnZSB0aGUgcHJveHkgY2FzZSBieSBpc1RhaW50ZWRCeVByb3h5KCkg
Z3VhcmQuCisgICAgICAgICAgICAvLyBTbyB3ZSB1c2UgVk1JbnF1aXJ5LiBBbmQgcHVyZ2UgdGhl
IG9wYXF1ZSBvYmplY3QgY2FzZXMgKHByb3h5IGFuZCBuYW1lc3BhY2Ugb2JqZWN0KSBieSBpc1Rh
aW50ZWRCeU9wYXF1ZU9iamVjdCgpIGd1YXJkLgogICAgICAgICAgICAgUHJvcGVydHlTbG90IGxl
bmd0aFNsb3Qob2JqZWN0LCBQcm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9kVHlwZTo6Vk1JbnF1
aXJ5KTsKICAgICAgICAgICAgIG9iamVjdC0+Z2V0UHJvcGVydHlTbG90KGV4ZWMsIHZtLnByb3Bl
cnR5TmFtZXMtPmxlbmd0aCwgbGVuZ3RoU2xvdCk7CiAKQEAgLTE2OCw3ICsxNjgsNyBAQCBpbmxp
bmUgSlNPYmplY3QqIGNvbnN0cnVjdEdlbmVyaWNUeXBlZEFycmF5Vmlld1dpdGhBcmd1bWVudHMo
RXhlY1N0YXRlKiBleGVjLCBTdAogCiAgICAgICAgICAgICBpZiAoIWl0ZXJhdG9yRnVuYy5pc1Vu
ZGVmaW5lZCgpCiAgICAgICAgICAgICAgICAgJiYgKGl0ZXJhdG9yRnVuYyAhPSBvYmplY3QtPmds
b2JhbE9iamVjdCgpLT5hcnJheVByb3RvVmFsdWVzRnVuY3Rpb24oKQotICAgICAgICAgICAgICAg
ICAgICB8fCBsZW5ndGhTbG90LmlzQWNjZXNzb3IoKSB8fCBsZW5ndGhTbG90LmlzQ3VzdG9tKCkg
fHwgbGVuZ3RoU2xvdC5pc1RhaW50ZWRCeVByb3h5KCkKKyAgICAgICAgICAgICAgICAgICAgfHwg
bGVuZ3RoU2xvdC5pc0FjY2Vzc29yKCkgfHwgbGVuZ3RoU2xvdC5pc0N1c3RvbSgpIHx8IGxlbmd0
aFNsb3QuaXNUYWludGVkQnlPcGFxdWVPYmplY3QoKQogICAgICAgICAgICAgICAgICAgICB8fCBo
YXNBbnlBcnJheVN0b3JhZ2Uob2JqZWN0LT5pbmRleGluZ1R5cGUoKSkpKSB7CiAKICAgICAgICAg
ICAgICAgICAgICAgQ2FsbERhdGEgY2FsbERhdGE7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU01vZHVsZU5hbWVzcGFjZU9iamVjdC5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVsZU5hbWVzcGFjZU9iamVjdC5jcHAKaW5kZXggNDBk
ZGE3MzMzZmY3MjBhZGY2MDk4ZmY0Nzc1NzJmMWViMTg2YWVhMC4uMjM4NWJkODY0NzE0NGM3NGRm
YzY2ZDJjYmMyZjcwODU5OTIyM2I4ZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNNb2R1bGVOYW1lc3BhY2VPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTTW9kdWxlTmFtZXNwYWNlT2JqZWN0LmNwcApAQCAtOTcsMzEgKzk3
LDYgQEAgdm9pZCBKU01vZHVsZU5hbWVzcGFjZU9iamVjdDo6dmlzaXRDaGlsZHJlbihKU0NlbGwq
IGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2Jq
ZWN0LT5tX21vZHVsZVJlY29yZCk7CiB9CiAKLXN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBjYWxsYmFj
a0dldHRlcihFeGVjU3RhdGUqIGV4ZWMsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVy
dHlOYW1lIHByb3BlcnR5TmFtZSkKLXsKLSAgICBKU01vZHVsZU5hbWVzcGFjZU9iamVjdCogdGhp
c09iamVjdCA9IGpzQ2FzdDxKU01vZHVsZU5hbWVzcGFjZU9iamVjdCo+KEpTVmFsdWU6OmRlY29k
ZSh0aGlzVmFsdWUpKTsKLSAgICBKU01vZHVsZVJlY29yZCogbW9kdWxlUmVjb3JkID0gdGhpc09i
amVjdC0+bW9kdWxlUmVjb3JkKCk7Ci0KLSAgICBKU01vZHVsZVJlY29yZDo6UmVzb2x1dGlvbiBy
ZXNvbHV0aW9uID0gbW9kdWxlUmVjb3JkLT5yZXNvbHZlRXhwb3J0KGV4ZWMsIElkZW50aWZpZXI6
OmZyb21VaWQoZXhlYywgcHJvcGVydHlOYW1lLnVpZCgpKSk7Ci0gICAgQVNTRVJUKHJlc29sdXRp
b24udHlwZSAhPSBKU01vZHVsZVJlY29yZDo6UmVzb2x1dGlvbjo6VHlwZTo6Tm90Rm91bmQgJiYg
cmVzb2x1dGlvbi50eXBlICE9IEpTTW9kdWxlUmVjb3JkOjpSZXNvbHV0aW9uOjpUeXBlOjpBbWJp
Z3VvdXMpOwotCi0gICAgSlNNb2R1bGVSZWNvcmQqIHRhcmdldE1vZHVsZSA9IHJlc29sdXRpb24u
bW9kdWxlUmVjb3JkOwotICAgIEpTTW9kdWxlRW52aXJvbm1lbnQqIHRhcmdldEVudmlyb25tZW50
ID0gdGFyZ2V0TW9kdWxlLT5tb2R1bGVFbnZpcm9ubWVudCgpOwotCi0gICAgUHJvcGVydHlTbG90
IHRyYW1wb2xpbmVTbG90KHRhcmdldEVudmlyb25tZW50LCBQcm9wZXJ0eVNsb3Q6OkludGVybmFs
TWV0aG9kVHlwZTo6R2V0KTsKLSAgICBpZiAoIXRhcmdldEVudmlyb25tZW50LT5tZXRob2RUYWJs
ZShleGVjLT52bSgpKS0+Z2V0T3duUHJvcGVydHlTbG90KHRhcmdldEVudmlyb25tZW50LCBleGVj
LCByZXNvbHV0aW9uLmxvY2FsTmFtZSwgdHJhbXBvbGluZVNsb3QpKQotICAgICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwotCi0gICAgSlNWYWx1ZSB2YWx1ZSA9IHRy
YW1wb2xpbmVTbG90LmdldFZhbHVlKGV4ZWMsIHByb3BlcnR5TmFtZSk7Ci0gICAgaWYgKGV4ZWMt
PmhhZEV4Y2VwdGlvbigpKQotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZp
bmVkKCkpOwotCi0gICAgLy8gSWYgdGhlIHZhbHVlIGlzIGZpbGxlZCB3aXRoIFREWiB2YWx1ZSwg
dGhyb3cgYSByZWZlcmVuY2UgZXJyb3IuCi0gICAgaWYgKCF2YWx1ZSkKLSAgICAgICAgcmV0dXJu
IHRocm93Vk1FcnJvcihleGVjLCBjcmVhdGVURFpFcnJvcihleGVjKSk7Ci0gICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZSh2YWx1ZSk7Ci19Ci0KIGJvb2wgSlNNb2R1bGVOYW1lc3BhY2VPYmplY3Q6
OmdldE93blByb3BlcnR5U2xvdChKU09iamVjdCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBQcm9w
ZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CiAgICAgLy8gaHR0
cDovL3d3dy5lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzYuMC8jc2VjLW1vZHVsZS1u
YW1lc3BhY2UtZXhvdGljLW9iamVjdHMtZ2V0b3ducHJvcGVydHktcApAQCAtMTM0LDIxICsxMDks
NTQgQEAgYm9vbCBKU01vZHVsZU5hbWVzcGFjZU9iamVjdDo6Z2V0T3duUHJvcGVydHlTbG90KEpT
T2JqZWN0KiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMKICAgICBpZiAocHJvcGVydHlOYW1lLmlzU3lt
Ym9sKCkpCiAgICAgICAgIHJldHVybiBKU09iamVjdDo6Z2V0T3duUHJvcGVydHlTbG90KHRoaXNP
YmplY3QsIGV4ZWMsIHByb3BlcnR5TmFtZSwgc2xvdCk7CiAKKyAgICAvLyBGSVhNRTogQWRkIElD
IGZvciBtb2R1bGUgbmFtZXNwYWNlIG9iamVjdC4KKyAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYwNTkwCisgICAgc2xvdC5kaXNhYmxlQ2FjaGluZygpOwor
ICAgIHNsb3Quc2V0SXNUYWludGVkQnlPcGFxdWVPYmplY3QoKTsKICAgICBpZiAoIXRoaXNPYmpl
Y3QtPm1fZXhwb3J0cy5jb250YWlucyhwcm9wZXJ0eU5hbWUudWlkKCkpKQogICAgICAgICByZXR1
cm4gZmFsc2U7CiAKLSAgICAvLyBodHRwczovL2VzZGlzY3Vzcy5vcmcvdG9waWMvbWFyY2gtMjQt
bWVldGluZy1ub3RlcwotICAgIC8vIGh0dHA6Ly93d3cuZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9l
Y21hLTI2Mi82LjAvI3NlYy1tb2R1bGUtbmFtZXNwYWNlLWV4b3RpYy1vYmplY3RzLWdldG93bnBy
b3BlcnR5LXAKLSAgICAvLyBzZWN0aW9uIDkuNC42LjUsIHN0ZXAgNi4KLSAgICAvLyBUaGlzIHBy
b3BlcnR5IHdpbGwgYmUgc2VlbiBhcyB3cml0YWJsZTogdHJ1ZSwgZW51bWVyYWJsZTp0cnVlLCBj
b25maWd1cmFibGU6IGZhbHNlLgotICAgIC8vIEJ1dCB0aGlzIGRvZXMgbm90IG1lYW4gdGhhdCB0
aGlzIHByb3BlcnR5IGlzIHdyaXRhYmxlIGJ5IHVzZXJzLgotICAgIC8vCi0gICAgLy8gSW4gSlND
LCBnZXRPd25Qcm9wZXJ0eVNsb3QgaXMgbm90IGRlc2lnbmVkIHRvIHRocm93IGFueSBlcnJvcnMu
IEJ1dCBsb29raW5nIHVwIHRoZSB2YWx1ZSBmcm9tIHRoZSBtb2R1bGUKLSAgICAvLyBlbnZpcm9u
bWVudCBtYXkgdGhyb3cgZXJyb3IgaWYgdGhlIGxvYWRlZCB2YXJpYWJsZSBpcyB0aGUgVERaIHZh
bHVlLiBUbyB3b3JrYXJvdW5kLCB3ZSBzZXQgdGhlIGN1c3RvbQotICAgIC8vIGdldHRlciBmdW5j
dGlvbi4gV2hlbiBpdCBpcyBjYWxsZWQsIGl0IGxvb2tzIHVwIHRoZSB2YXJpYWJsZSBhbmQgdGhy
b3dzIGFuIGVycm9yIGlmIHRoZSB2YXJpYWJsZSBpcyBub3QKLSAgICAvLyBpbml0aWFsaXplZC4K
LSAgICBzbG90LnNldEN1c3RvbSh0aGlzT2JqZWN0LCBEb250RGVsZXRlLCBjYWxsYmFja0dldHRl
cik7Ci0gICAgcmV0dXJuIHRydWU7CisgICAgc3dpdGNoIChzbG90LmludGVybmFsTWV0aG9kVHlw
ZSgpKSB7CisgICAgY2FzZSBQcm9wZXJ0eVNsb3Q6OkludGVybmFsTWV0aG9kVHlwZTo6R2V0Ogor
ICAgIGNhc2UgUHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6OkdldE93blByb3BlcnR5
OiB7CisgICAgICAgIEpTTW9kdWxlUmVjb3JkKiBtb2R1bGVSZWNvcmQgPSB0aGlzT2JqZWN0LT5t
b2R1bGVSZWNvcmQoKTsKKworICAgICAgICBKU01vZHVsZVJlY29yZDo6UmVzb2x1dGlvbiByZXNv
bHV0aW9uID0gbW9kdWxlUmVjb3JkLT5yZXNvbHZlRXhwb3J0KGV4ZWMsIElkZW50aWZpZXI6OmZy
b21VaWQoZXhlYywgcHJvcGVydHlOYW1lLnVpZCgpKSk7CisgICAgICAgIEFTU0VSVChyZXNvbHV0
aW9uLnR5cGUgIT0gSlNNb2R1bGVSZWNvcmQ6OlJlc29sdXRpb246OlR5cGU6Ok5vdEZvdW5kICYm
IHJlc29sdXRpb24udHlwZSAhPSBKU01vZHVsZVJlY29yZDo6UmVzb2x1dGlvbjo6VHlwZTo6QW1i
aWd1b3VzKTsKKworICAgICAgICBKU01vZHVsZVJlY29yZCogdGFyZ2V0TW9kdWxlID0gcmVzb2x1
dGlvbi5tb2R1bGVSZWNvcmQ7CisgICAgICAgIEpTTW9kdWxlRW52aXJvbm1lbnQqIHRhcmdldEVu
dmlyb25tZW50ID0gdGFyZ2V0TW9kdWxlLT5tb2R1bGVFbnZpcm9ubWVudCgpOworCisgICAgICAg
IFByb3BlcnR5U2xvdCB0cmFtcG9saW5lU2xvdCh0YXJnZXRFbnZpcm9ubWVudCwgUHJvcGVydHlT
bG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6OkdldCk7CisgICAgICAgIGJvb2wgZm91bmQgPSB0YXJn
ZXRFbnZpcm9ubWVudC0+bWV0aG9kVGFibGUoZXhlYy0+dm0oKSktPmdldE93blByb3BlcnR5U2xv
dCh0YXJnZXRFbnZpcm9ubWVudCwgZXhlYywgcmVzb2x1dGlvbi5sb2NhbE5hbWUsIHRyYW1wb2xp
bmVTbG90KTsKKyAgICAgICAgQVNTRVJUX1VOVVNFRChmb3VuZCwgZm91bmQpOworCisgICAgICAg
IEpTVmFsdWUgdmFsdWUgPSB0cmFtcG9saW5lU2xvdC5nZXRWYWx1ZShleGVjLCBwcm9wZXJ0eU5h
bWUpOworICAgICAgICBBU1NFUlQoIWV4ZWMtPmhhZEV4Y2VwdGlvbigpKTsKKworICAgICAgICAv
LyBJZiB0aGUgdmFsdWUgaXMgZmlsbGVkIHdpdGggVERaIHZhbHVlLCB0aHJvdyBhIHJlZmVyZW5j
ZSBlcnJvci4KKyAgICAgICAgaWYgKCF2YWx1ZSkgeworICAgICAgICAgICAgdGhyb3dWTUVycm9y
KGV4ZWMsIGNyZWF0ZVREWkVycm9yKGV4ZWMpKTsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICAgICAgfQorCisgICAgICAgIHNsb3Quc2V0VmFsdWUodGhpc09iamVjdCwgRG9udERlbGV0
ZSwgdmFsdWUpOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgY2FzZSBQcm9wZXJ0
eVNsb3Q6OkludGVybmFsTWV0aG9kVHlwZTo6SGFzUHJvcGVydHk6IHsKKyAgICAgICAgLy8gRG8g
bm90IHBlcmZvcm0gW1tHZXRdXSBmb3IgW1tIYXNQcm9wZXJ0eV1dLgorICAgICAgICAvLyBbW0dl
dF1dIC8gW1tHZXRPd25Qcm9wZXJ0eV1dIG9udG8gbmFtZXNwYWNlIG9iamVjdCBjb3VsZCB0aHJv
dyBhbiBlcnJvciB3aGlsZSBbW0hhc1Byb3BlcnR5XV0ganVzdCByZXR1cm5zIHRydWUgaGVyZS4K
KyAgICAgICAgLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hMjYyLyNzZWMtbW9kdWxlLW5h
bWVzcGFjZS1leG90aWMtb2JqZWN0cy1oYXNwcm9wZXJ0eS1wCisgICAgICAgIHNsb3Quc2V0VmFs
dWUodGhpc09iamVjdCwgRG9udERlbGV0ZSwganNVbmRlZmluZWQoKSk7CisgICAgICAgIHJldHVy
biB0cnVlOworICAgIH0KKworICAgIGNhc2UgUHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5
cGU6OlZNSW5xdWlyeToKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIFJFTEVB
U0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIGZhbHNlOwogfQogCiBib29sIEpT
TW9kdWxlTmFtZXNwYWNlT2JqZWN0OjpwdXQoSlNDZWxsKiwgRXhlY1N0YXRlKiBleGVjLCBQcm9w
ZXJ0eU5hbWUsIEpTVmFsdWUsIFB1dFByb3BlcnR5U2xvdCYgc2xvdCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTW9kdWxlTmFtZXNwYWNlT2JqZWN0LmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVsZU5hbWVzcGFjZU9iamVjdC5oCmlu
ZGV4IDhjZmVjZmQwYTQ1YjUwNGU2ZWFlNzQ3OWI1M2QxMThmNDcyNjY3OWUuLjJlYzE4ZTgyOTE1
YmNkNTQ5NTJiYzY4ZGNiNzFkNzJlYzhlZDc3NzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTTW9kdWxlTmFtZXNwYWNlT2JqZWN0LmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVOYW1lc3BhY2VPYmplY3QuaApAQCAtMzYsNyAr
MzYsNyBAQCBjbGFzcyBKU01vZHVsZVJlY29yZDsKIGNsYXNzIEpTTW9kdWxlTmFtZXNwYWNlT2Jq
ZWN0IDogcHVibGljIEpTRGVzdHJ1Y3RpYmxlT2JqZWN0IHsKIHB1YmxpYzoKICAgICB0eXBlZGVm
IEpTRGVzdHJ1Y3RpYmxlT2JqZWN0IEJhc2U7Ci0gICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0
cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3MgfCBPdmVycmlkZXNHZXRPd25Qcm9w
ZXJ0eVNsb3QgfCBPdmVycmlkZXNHZXRQcm9wZXJ0eU5hbWVzOworICAgIHN0YXRpYyBjb25zdCB1
bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzIHwgT3ZlcnJpZGVz
R2V0T3duUHJvcGVydHlTbG90IHwgSW50ZXJjZXB0c0dldE93blByb3BlcnR5U2xvdEJ5SW5kZXhF
dmVuV2hlbkxlbmd0aElzTm90WmVybyB8IE92ZXJyaWRlc0dldFByb3BlcnR5TmFtZXMgfCBHZXRP
d25Qcm9wZXJ0eVNsb3RJc0ltcHVyZUZvclByb3BlcnR5QWJzZW5jZTsKIAogICAgIHN0YXRpYyBK
U01vZHVsZU5hbWVzcGFjZU9iamVjdCogY3JlYXRlKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTTW9kdWxlUmVjb3Jk
KiBtb2R1bGVSZWNvcmQsIGNvbnN0IElkZW50aWZpZXJTZXQmIGV4cG9ydHMpCiAgICAgewpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlTbG90LmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5U2xvdC5jcHAKaW5kZXggNDk2
ZDBhYzRjZWU0MGI5ZjMxMjQ4MDJmMDk4NTNjODI3MzZjZTFiMi4uMTlkOWEwOTY4ODI1NmI5NjM2
MjQyYWNkNTdjOWE5ODViNTFmODI1MCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvUHJvcGVydHlTbG90LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9Qcm9wZXJ0eVNsb3QuY3BwCkBAIC00NCw3ICs0NCw3IEBAIEpTVmFsdWUgUHJvcGVydHlT
bG90OjpjdXN0b21HZXR0ZXIoRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlO
YW1lKSBjCiBKU1ZhbHVlIFByb3BlcnR5U2xvdDo6Z2V0UHVyZVJlc3VsdCgpIGNvbnN0CiB7CiAg
ICAgSlNWYWx1ZSByZXN1bHQ7Ci0gICAgaWYgKGlzVGFpbnRlZEJ5UHJveHkoKSkKKyAgICBpZiAo
aXNUYWludGVkQnlPcGFxdWVPYmplY3QoKSkKICAgICAgICAgcmVzdWx0ID0ganNOdWxsKCk7CiAg
ICAgZWxzZSBpZiAoaXNDYWNoZWFibGVWYWx1ZSgpKQogICAgICAgICByZXN1bHQgPSBKU1ZhbHVl
OjpkZWNvZGUobV9kYXRhLnZhbHVlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1Byb3BlcnR5U2xvdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
UHJvcGVydHlTbG90LmgKaW5kZXggZDdkNzZjN2UzY2E2NWZkYWZlNWFjMjkzNWQ1MTg4OWRmYjU1
ZDI2Zi4uNTAzZDA4NmY3NDcwYzdjZWE5MzJhNWQ3MDRiOWY4N2ZhMmZkMzkzOCAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlTbG90LmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlTbG90LmgKQEAgLTkwLDcgKzkwLDcg
QEAgY2xhc3MgUHJvcGVydHlTbG90IHsKICAgICAgICAgLCBtX2NhY2hlYWJpbGl0eShDYWNoaW5n
QWxsb3dlZCkKICAgICAgICAgLCBtX3Byb3BlcnR5VHlwZShUeXBlVW5zZXQpCiAgICAgICAgICwg
bV9pbnRlcm5hbE1ldGhvZFR5cGUoaW50ZXJuYWxNZXRob2RUeXBlKQotICAgICAgICAsIG1faXNU
YWludGVkQnlQcm94eShmYWxzZSkKKyAgICAgICAgLCBtX2lzVGFpbnRlZEJ5T3BhcXVlT2JqZWN0
KGZhbHNlKQogICAgIHsKICAgICB9CiAKQEAgLTExMCw4ICsxMTAsOCBAQCBjbGFzcyBQcm9wZXJ0
eVNsb3QgewogICAgIGJvb2wgaXNDYWNoZWFibGVWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIGlzQ2Fj
aGVhYmxlKCkgJiYgaXNWYWx1ZSgpOyB9CiAgICAgYm9vbCBpc0NhY2hlYWJsZUdldHRlcigpIGNv
bnN0IHsgcmV0dXJuIGlzQ2FjaGVhYmxlKCkgJiYgaXNBY2Nlc3NvcigpOyB9CiAgICAgYm9vbCBp
c0NhY2hlYWJsZUN1c3RvbSgpIGNvbnN0IHsgcmV0dXJuIGlzQ2FjaGVhYmxlKCkgJiYgaXNDdXN0
b20oKTsgfQotICAgIHZvaWQgc2V0SXNUYWludGVkQnlQcm94eSgpIHsgbV9pc1RhaW50ZWRCeVBy
b3h5ID0gdHJ1ZTsgfQotICAgIGJvb2wgaXNUYWludGVkQnlQcm94eSgpIGNvbnN0IHsgcmV0dXJu
IG1faXNUYWludGVkQnlQcm94eTsgfQorICAgIHZvaWQgc2V0SXNUYWludGVkQnlPcGFxdWVPYmpl
Y3QoKSB7IG1faXNUYWludGVkQnlPcGFxdWVPYmplY3QgPSB0cnVlOyB9CisgICAgYm9vbCBpc1Rh
aW50ZWRCeU9wYXF1ZU9iamVjdCgpIGNvbnN0IHsgcmV0dXJuIG1faXNUYWludGVkQnlPcGFxdWVP
YmplY3Q7IH0KIAogICAgIEludGVybmFsTWV0aG9kVHlwZSBpbnRlcm5hbE1ldGhvZFR5cGUoKSBj
b25zdCB7IHJldHVybiBtX2ludGVybmFsTWV0aG9kVHlwZTsgfQogCkBAIC0yOTMsNyArMjkzLDcg
QEAgY2xhc3MgUHJvcGVydHlTbG90IHsKICAgICBDYWNoZWFiaWxpdHlUeXBlIG1fY2FjaGVhYmls
aXR5OwogICAgIFByb3BlcnR5VHlwZSBtX3Byb3BlcnR5VHlwZTsKICAgICBJbnRlcm5hbE1ldGhv
ZFR5cGUgbV9pbnRlcm5hbE1ldGhvZFR5cGU7Ci0gICAgYm9vbCBtX2lzVGFpbnRlZEJ5UHJveHk7
CisgICAgYm9vbCBtX2lzVGFpbnRlZEJ5T3BhcXVlT2JqZWN0OwogfTsKIAogQUxXQVlTX0lOTElO
RSBKU1ZhbHVlIFByb3BlcnR5U2xvdDo6Z2V0VmFsdWUoRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0
eU5hbWUgcHJvcGVydHlOYW1lKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvUHJveHlPYmplY3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvUHJveHlPYmplY3QuY3BwCmluZGV4IDZlZTQ4NmNiYjA2MWNlY2FmZDRmYTUzMGE5MjQ1NmQ5
YzZlYWVhMTUuLjQ4YTcwOWQ1NzhjNWEzMmM2N2FhOTY1ZmJmNmM5YzViMzE2NGU0NjggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3h5T2JqZWN0LmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm94eU9iamVjdC5jcHAKQEAgLTM0NCw3
ICszNDQsNyBAQCBib29sIFByb3h5T2JqZWN0OjpnZXRPd25Qcm9wZXJ0eVNsb3RDb21tb24oRXhl
Y1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydAogICAgICAgICByZXR1cm4gZmFsc2U7
CiAgICAgfQogICAgIHNsb3QuZGlzYWJsZUNhY2hpbmcoKTsKLSAgICBzbG90LnNldElzVGFpbnRl
ZEJ5UHJveHkoKTsKKyAgICBzbG90LnNldElzVGFpbnRlZEJ5T3BhcXVlT2JqZWN0KCk7CiAgICAg
c3dpdGNoIChzbG90LmludGVybmFsTWV0aG9kVHlwZSgpKSB7CiAgICAgY2FzZSBQcm9wZXJ0eVNs
b3Q6OkludGVybmFsTWV0aG9kVHlwZTo6R2V0OgogICAgICAgICByZXR1cm4gcGVyZm9ybUdldChl
eGVjLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9DaGFuZ2VMb2cg
Yi9KU1Rlc3RzL0NoYW5nZUxvZwppbmRleCAyYzBkYjg1NDFjMjBhNTZmMjcyYmUxNGEwMDVmNGQ0
NTI2YWYzNWEyLi42ZmE2ZmI1MTNmZmI0MmM5ZjJkODk1N2UxNmNlMTI2YWRjNzhmNTJlIDEwMDY0
NAotLS0gYS9KU1Rlc3RzL0NoYW5nZUxvZworKysgYi9KU1Rlc3RzL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDI1IEBACisyMDE2LTA4LTA0ICBZdXN1a2UgU3V6dWtpICA8dXRhdGFuZS50ZWFAZ21haWwu
Y29tPgorCisgICAgICAgIFtFUzZdIE1vZHVsZSBuYW1lc3BhY2Ugb2JqZWN0IHNob3VsZCBub3Qg
YWxsb3cgdW5zZXQgSUMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE2MDU1MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgICogbW9kdWxlcy9uYW1lc3BhY2Utb2JqZWN0LWdldC1wcm9wZXJ0eS5qczogQWRkZWQu
CisgICAgICAgIChpbXBvcnQuYXMubnMuZnJvbS5zdHJpbmdfYXBwZWFyZWRfaGVyZS5zaG91bGRU
aHJvdyk6CisgICAgICAgICogbW9kdWxlcy9uYW1lc3BhY2Utb2JqZWN0LWhhcy1wcm9wZXJ0eS5q
czogQWRkZWQuCisgICAgICAgICogbW9kdWxlcy9uYW1lc3BhY2Utb2JqZWN0LWlubGluZS1jYWNo
aW5nLmpzOiBBZGRlZC4KKyAgICAgICAgKGltcG9ydC5hcy5BLmZyb20uc3RyaW5nX2FwcGVhcmVk
X2hlcmUuaW1wb3J0LmFzLkIuZnJvbS5zdHJpbmdfYXBwZWFyZWRfaGVyZS5sb29rdXApOgorICAg
ICAgICAoc2hvdWxkQmUubG9va3VwLmxvb2t1cCk6CisgICAgICAgIChzaG91bGRCZS5sb29rdXAp
OgorICAgICAgICAqIG1vZHVsZXMvbmFtZXNwYWNlLW9iamVjdC1pbmxpbmUtY2FjaGluZy9hLmpz
OiBBZGRlZC4KKyAgICAgICAgKiBtb2R1bGVzL25hbWVzcGFjZS1vYmplY3QtaW5saW5lLWNhY2hp
bmcvYi5qczogQWRkZWQuCisgICAgICAgICogbW9kdWxlcy9uYW1lc3BhY2Utb2JqZWN0LXRyeS1n
ZXQuanM6IEFkZGVkLgorICAgICAgICAoaW1wb3J0LmFzLm5zLmZyb20uc3RyaW5nX2FwcGVhcmVk
X2hlcmUudHJ5R2V0QnlJZFRleHQpOgorICAgICAgICAodHJ5R2V0QnlJZFRleHRTdHJpY3QpOgor
ICAgICAgICAqIG1vZHVsZXMvbmFtZXNwYWNlLW9iamVjdC10eXBlZC1hcnJheS1mYXN0LXBhdGgu
anM6IEFkZGVkLgorICAgICAgICAqIHRlc3QyNjIueWFtbDoKKwogMjAxNi0wOC0wMyAgQ2FpdGxp
biBQb3R0ZXIgIDxjYWl0cEBpZ2FsaWEuY29tPgogCiAgICAgICAgIENsYXJpZnkgU3ludGF4RXJy
b3JzIGFyb3VuZCB5aWVsZCBhbmQgdW5za2lwIHRlc3RzCmRpZmYgLS1naXQgYS9KU1Rlc3RzL21v
ZHVsZXMvbmFtZXNwYWNlLW9iamVjdC1nZXQtcHJvcGVydHkuanMgYi9KU1Rlc3RzL21vZHVsZXMv
bmFtZXNwYWNlLW9iamVjdC1nZXQtcHJvcGVydHkuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjY5MjAxMmRkODY5
NjI5NWEzYTc1N2QxYWFlNDMwZGY3ZjExNGZlMQotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMv
bW9kdWxlcy9uYW1lc3BhY2Utb2JqZWN0LWdldC1wcm9wZXJ0eS5qcwpAQCAtMCwwICsxLDkgQEAK
K2ltcG9ydCB7IHNob3VsZFRocm93LCBzaG91bGRCZSB9IGZyb20gIi4vcmVzb3VyY2VzL2Fzc2Vy
dC5qcyI7CitpbXBvcnQgKiBhcyBucyBmcm9tICIuL25hbWVzcGFjZS1vYmplY3QtZ2V0LXByb3Bl
cnR5LmpzIgorCitzaG91bGRUaHJvdygoKSA9PiB7CisgICAgUmVmbGVjdC5nZXQobnMsICdlbXB0
eScpOworfSwgYFJlZmVyZW5jZUVycm9yOiBDYW5ub3QgYWNjZXNzIHVuaW5pdGlhbGl6ZWQgdmFy
aWFibGUuYCk7CitzaG91bGRCZShSZWZsZWN0LmdldChucywgJ3VuZGVmaW5lZCcpLCB1bmRlZmlu
ZWQpOworCitleHBvcnQgbGV0IGVtcHR5OwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9tb2R1bGVzL25h
bWVzcGFjZS1vYmplY3QtaGFzLXByb3BlcnR5LmpzIGIvSlNUZXN0cy9tb2R1bGVzL25hbWVzcGFj
ZS1vYmplY3QtaGFzLXByb3BlcnR5LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjY4Njg4NWFhZmYzY2JkMjBkNDMw
MDJjOTUyMjYxNGNlYzRlNmFiMTkKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL21vZHVsZXMv
bmFtZXNwYWNlLW9iamVjdC1oYXMtcHJvcGVydHkuanMKQEAgLTAsMCArMSw3IEBACitpbXBvcnQg
eyBzaG91bGRCZSB9IGZyb20gIi4vcmVzb3VyY2VzL2Fzc2VydC5qcyI7CitpbXBvcnQgKiBhcyBu
cyBmcm9tICIuL25hbWVzcGFjZS1vYmplY3QtaGFzLXByb3BlcnR5LmpzIgorCitzaG91bGRCZShS
ZWZsZWN0LmhhcyhucywgJ2VtcHR5JyksIHRydWUpOworc2hvdWxkQmUoUmVmbGVjdC5oYXMobnMs
ICd1bmRlZmluZWQnKSwgZmFsc2UpOworCitleHBvcnQgbGV0IGVtcHR5OwpkaWZmIC0tZ2l0IGEv
SlNUZXN0cy9tb2R1bGVzL25hbWVzcGFjZS1vYmplY3QtaW5saW5lLWNhY2hpbmcuanMgYi9KU1Rl
c3RzL21vZHVsZXMvbmFtZXNwYWNlLW9iamVjdC1pbmxpbmUtY2FjaGluZy5qcwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li41Y2VmNWFjMGRkM2Q1ZWRkMjliYmUwYWM4YWNiNWRjNGIzZTVmY2Y0Ci0tLSAvZGV2L251bGwK
KysrIGIvSlNUZXN0cy9tb2R1bGVzL25hbWVzcGFjZS1vYmplY3QtaW5saW5lLWNhY2hpbmcuanMK
QEAgLTAsMCArMSwzNyBAQAoraW1wb3J0IHsgc2hvdWxkQmUgfSBmcm9tICIuL3Jlc291cmNlcy9h
c3NlcnQuanMiOworaW1wb3J0ICogYXMgQSBmcm9tICIuL25hbWVzcGFjZS1vYmplY3QtaW5saW5l
LWNhY2hpbmcvYS5qcyIKK2ltcG9ydCAqIGFzIEIgZnJvbSAiLi9uYW1lc3BhY2Utb2JqZWN0LWlu
bGluZS1jYWNoaW5nL2IuanMiCisKKy8vIHVuc2V0IGNhY2hpbmcgc2hvdWxkIGJlIGRpc2FibGVk
IGZvciBuYW1lc3BhY2Ugb2JqZWN0LgoreworICAgIGZ1bmN0aW9uIGxvb2t1cChucykKKyAgICB7
CisgICAgICAgIHJldHVybiBucy5oZWxsbzsKKyAgICB9CisgICAgbm9JbmxpbmUobG9va3VwKTsK
KworICAgIHNob3VsZEJlKEEuaGVsbG8sIHVuZGVmaW5lZCk7CisgICAgc2hvdWxkQmUoQi5oZWxs
bywgNDIpOworCisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxZTQ7ICsraSkKKyAgICAgICAgc2hv
dWxkQmUobG9va3VwKEEpLCB1bmRlZmluZWQpOworCisgICAgc2hvdWxkQmUobG9va3VwKEIpLCA0
Mik7Cit9CisKKy8vIHVzdWFsIGNhY2hpbmcgc2hvdWxkIGJlIGRpc2FibGVkIGZvciBuYW1lc3Bh
Y2Ugb2JqZWN0LgoreworICAgIGZ1bmN0aW9uIGxvb2t1cChucykKKyAgICB7CisgICAgICAgIHJl
dHVybiBucy5nb29kYnllOworICAgIH0KKyAgICBub0lubGluZShsb29rdXApOworCisgICAgc2hv
dWxkQmUoQS5nb29kYnllLCAwKTsKKyAgICBzaG91bGRCZShCLmdvb2RieWUsIHVuZGVmaW5lZCk7
CisKKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IDFlNDsgKytpKQorICAgICAgICBzaG91bGRCZShs
b29rdXAoQSksIDApOworCisgICAgc2hvdWxkQmUobG9va3VwKEIpLCB1bmRlZmluZWQpOworfQpk
aWZmIC0tZ2l0IGEvSlNUZXN0cy9tb2R1bGVzL25hbWVzcGFjZS1vYmplY3QtaW5saW5lLWNhY2hp
bmcvYS5qcyBiL0pTVGVzdHMvbW9kdWxlcy9uYW1lc3BhY2Utb2JqZWN0LWlubGluZS1jYWNoaW5n
L2EuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNzMxODczYTAxNDA4ZjU3OGYzOTBjYzFjYjdkMjZmNjkxYTRkYjVk
NgotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvbW9kdWxlcy9uYW1lc3BhY2Utb2JqZWN0LWlu
bGluZS1jYWNoaW5nL2EuanMKQEAgLTAsMCArMSBAQAorZXhwb3J0IGxldCBnb29kYnllID0gMDsK
ZGlmZiAtLWdpdCBhL0pTVGVzdHMvbW9kdWxlcy9uYW1lc3BhY2Utb2JqZWN0LWlubGluZS1jYWNo
aW5nL2IuanMgYi9KU1Rlc3RzL21vZHVsZXMvbmFtZXNwYWNlLW9iamVjdC1pbmxpbmUtY2FjaGlu
Zy9iLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjViN2Q5MGYwZWZkOWZhNDc0NDBiM2FmNDIyY2Y2OWFkYzAzOTQ2
NTgKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL21vZHVsZXMvbmFtZXNwYWNlLW9iamVjdC1p
bmxpbmUtY2FjaGluZy9iLmpzCkBAIC0wLDAgKzEgQEAKK2V4cG9ydCBsZXQgaGVsbG8gPSA0MjsK
ZGlmZiAtLWdpdCBhL0pTVGVzdHMvbW9kdWxlcy9uYW1lc3BhY2Utb2JqZWN0LXRyeS1nZXQuanMg
Yi9KU1Rlc3RzL21vZHVsZXMvbmFtZXNwYWNlLW9iamVjdC10cnktZ2V0LmpzCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjhiN2NlNjlmY2QzY2YwYzM0N2Y3NTFkMzI3MjA3YTNhNmQ5MDU0NDQKLS0tIC9kZXYvbnVsbAor
KysgYi9KU1Rlc3RzL21vZHVsZXMvbmFtZXNwYWNlLW9iamVjdC10cnktZ2V0LmpzCkBAIC0wLDAg
KzEsMjMgQEAKK2ltcG9ydCB7IHNob3VsZEJlIH0gZnJvbSAiLi9yZXNvdXJjZXMvYXNzZXJ0Lmpz
IjsKK2ltcG9ydCAqIGFzIG5zIGZyb20gIi4vbmFtZXNwYWNlLW9iamVjdC10cnktZ2V0LmpzIgor
CitmdW5jdGlvbiB0cnlHZXRCeUlkVGV4dChwcm9wZXJ0eU5hbWUpIHsgcmV0dXJuIGAoZnVuY3Rp
b24gKGJhc2UpIHsgcmV0dXJuIEB0cnlHZXRCeUlkKGJhc2UsICcke3Byb3BlcnR5TmFtZX0nKTsg
fSlgOyB9CisKK2Z1bmN0aW9uIHRyeUdldEJ5SWRUZXh0U3RyaWN0KHByb3BlcnR5TmFtZSkgeyBy
ZXR1cm4gYChmdW5jdGlvbiAoYmFzZSkgeyAidXNlIHN0cmljdCI7IHJldHVybiBAdHJ5R2V0QnlJ
ZChiYXNlLCAnJHtwcm9wZXJ0eU5hbWV9Jyk7IH0pYDsgfQorCit7CisgICAgbGV0IGdldCA9IGNy
ZWF0ZUJ1aWx0aW4odHJ5R2V0QnlJZFRleHQoImVtcHR5IikpOworICAgIG5vSW5saW5lKGdldCk7
CisKKyAgICAvLyBEbyBub3QgdGhyb3cuCisgICAgc2hvdWxkQmUoZ2V0KG5zKSwgbnVsbCk7CisK
KyAgICBsZXQgZ2V0U3RyaWN0ID0gY3JlYXRlQnVpbHRpbih0cnlHZXRCeUlkVGV4dFN0cmljdCgi
ZW1wdHkiKSk7CisgICAgbm9JbmxpbmUoZ2V0U3RyaWN0KTsKKworICAgIC8vIERvIG5vdCB0aHJv
dy4KKyAgICBzaG91bGRCZShnZXRTdHJpY3QobnMpLCBudWxsKTsKKworfQorCitleHBvcnQgbGV0
IGVtcHR5OwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9tb2R1bGVzL25hbWVzcGFjZS1vYmplY3QtdHlw
ZWQtYXJyYXktZmFzdC1wYXRoLmpzIGIvSlNUZXN0cy9tb2R1bGVzL25hbWVzcGFjZS1vYmplY3Qt
dHlwZWQtYXJyYXktZmFzdC1wYXRoLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjJhZWE3ODZjMGFkMDAzYjMwNzE2
MjdhZGRhZDk5OGVhOWI5NzllMmUKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL21vZHVsZXMv
bmFtZXNwYWNlLW9iamVjdC10eXBlZC1hcnJheS1mYXN0LXBhdGguanMKQEAgLTAsMCArMSw3IEBA
CitpbXBvcnQgeyBzaG91bGRCZSB9IGZyb20gIi4vcmVzb3VyY2VzL2Fzc2VydC5qcyI7CitpbXBv
cnQgKiBhcyBucyBmcm9tICIuL25hbWVzcGFjZS1vYmplY3QtdHlwZWQtYXJyYXktZmFzdC1wYXRo
LmpzIgorZXhwb3J0IGxldCBsZW5ndGggPSA0MjsKK2V4cG9ydCBsZXQgaGVsbG8gPSA0NDsKKwor
bGV0IGFycmF5ID0gbmV3IFVpbnQ4QXJyYXkobnMpOworc2hvdWxkQmUoYXJyYXkubGVuZ3RoLCAy
KTsKZGlmZiAtLWdpdCBhL0pTVGVzdHMvdGVzdDI2Mi55YW1sIGIvSlNUZXN0cy90ZXN0MjYyLnlh
bWwKaW5kZXggMjVjMzc3ZGY2MmQwYzQ4NTYzN2VjM2UyY2E5ZmZmYjkzYWU1M2Q4MS4uNDI4Mzli
NWQ1YzQ5MzNhYzVjZWM0NjlkODMyNWExYzY4MDRhMjIzNCAxMDA2NDQKLS0tIGEvSlNUZXN0cy90
ZXN0MjYyLnlhbWwKKysrIGIvSlNUZXN0cy90ZXN0MjYyLnlhbWwKQEAgLTcxMjc0LDcgKzcxMjc0
LDcgQEAKIC0gcGF0aDogdGVzdDI2Mi90ZXN0L2xhbmd1YWdlL21vZHVsZS1jb2RlL25hbWVzcGFj
ZS9pbnRlcm5hbHMvZ2V0LW93bi1wcm9wZXJ0eS1zdHItZm91bmQtaW5pdC5qcwogICBjbWQ6IHJ1
blRlc3QyNjIgOmZhaWwsICJOb0V4Y2VwdGlvbiIsIFsiLi4vLi4vLi4vLi4vLi4vaGFybmVzcy9h
c3NlcnQuanMiLCAiLi4vLi4vLi4vLi4vLi4vaGFybmVzcy9zdGEuanMiXSwgWzptb2R1bGVdCiAt
IHBhdGg6IHRlc3QyNjIvdGVzdC9sYW5ndWFnZS9tb2R1bGUtY29kZS9uYW1lc3BhY2UvaW50ZXJu
YWxzL2dldC1vd24tcHJvcGVydHktc3RyLWZvdW5kLXVuaW5pdC5qcwotICBjbWQ6IHJ1blRlc3Qy
NjIgOmZhaWwsICJOb0V4Y2VwdGlvbiIsIFsiLi4vLi4vLi4vLi4vLi4vaGFybmVzcy9hc3NlcnQu
anMiLCAiLi4vLi4vLi4vLi4vLi4vaGFybmVzcy9zdGEuanMiXSwgWzptb2R1bGVdCisgIGNtZDog
cnVuVGVzdDI2MiA6bm9ybWFsLCAiTm9FeGNlcHRpb24iLCBbIi4uLy4uLy4uLy4uLy4uL2hhcm5l
c3MvYXNzZXJ0LmpzIiwgIi4uLy4uLy4uLy4uLy4uL2hhcm5lc3Mvc3RhLmpzIl0sIFs6bW9kdWxl
XQogLSBwYXRoOiB0ZXN0MjYyL3Rlc3QvbGFuZ3VhZ2UvbW9kdWxlLWNvZGUvbmFtZXNwYWNlL2lu
dGVybmFscy9nZXQtb3duLXByb3BlcnR5LXN0ci1ub3QtZm91bmQuanMKICAgY21kOiBydW5UZXN0
MjYyIDpub3JtYWwsICJOb0V4Y2VwdGlvbiIsIFsiLi4vLi4vLi4vLi4vLi4vaGFybmVzcy9hc3Nl
cnQuanMiLCAiLi4vLi4vLi4vLi4vLi4vaGFybmVzcy9zdGEuanMiXSwgWzptb2R1bGVdCiAtIHBh
dGg6IHRlc3QyNjIvdGVzdC9sYW5ndWFnZS9tb2R1bGUtY29kZS9uYW1lc3BhY2UvaW50ZXJuYWxz
L2dldC1vd24tcHJvcGVydHktc3ltLmpzCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>