<?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>163001</bug_id>
          
          <creation_ts>2016-10-06 01:15:08 -0700</creation_ts>
          <short_desc>[WebCore][JSC] Use new @throwTypeError and @throwRangeError intrinsics</short_desc>
          <delta_ts>2016-10-06 12:44:44 -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>fpizlo</cc>
    
    <cc>ggaren</cc>
    
    <cc>saam</cc>
    
    <cc>sam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1236948</commentid>
    <comment_count>0</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-10-06 01:15:08 -0700</bug_when>
    <thetext>[WebCore][JSC] Use new @throwTypeError and @throwRangeError intrinsics</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1236949</commentid>
    <comment_count>1</comment_count>
      <attachid>290793</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-10-06 01:23:23 -0700</bug_when>
    <thetext>Created attachment 290793
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1237132</commentid>
    <comment_count>2</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-10-06 10:30:42 -0700</bug_when>
    <thetext>Motivation: https://bugs.webkit.org/show_bug.cgi?id=162995#c1

&gt; Some motivation: we would like to implement Object.defineProperty in builtin JS and allows it inlined. By doing so, property descriptor object { value: xxx } can get a chance to be allocation sinked in FTL. But it turns out that @TypeError etc. operations easily enlarge the size of byte code sequence and prevent us from inlining.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1237133</commentid>
    <comment_count>3</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-10-06 10:31:50 -0700</bug_when>
    <thetext>And more notes:

In builtin JS, there are so many `throw @TypeError(&quot;.....&quot;);` things.
But it spreads so large byte code sequence, effectively enlarges the size of bytecodes, and prevent us from inlining!

[  15] resolve_scope     loc8, loc3, PrivateSymbol.TypeError(@id0), &lt;GlobalVar&gt;, 0, 0x110bdc0a0
[  22] get_from_scope    loc9, loc8, PrivateSymbol.TypeError(@id0), 2049&lt;ThrowIfNotFound|GlobalVar|NotInitialization&gt;, 238692432    predicting None
[  30] mov               loc12, loc9
[  33] mov               loc11, String (atomic) (identifier): Properties can only be defined on Objects., ID: 4(const0)
[  36] construct         loc9, loc9, 2, 18 (this at loc12) status(Could Take Slow Path)    predicting None
[  45] throw             loc9
[  47] ...

Oh, it bloats 32 intructions! We already have great solution. Let&apos;s emit op_throw_static_error instead (size is only 3).
[reply] [-] Comment 1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1237144</commentid>
    <comment_count>4</comment_count>
      <attachid>290793</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2016-10-06 10:39:41 -0700</bug_when>
    <thetext>Comment on attachment 290793
Patch

nice! r=me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1237153</commentid>
    <comment_count>5</comment_count>
      <attachid>290793</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-10-06 11:02:04 -0700</bug_when>
    <thetext>Comment on attachment 290793
Patch

Clearing flags on attachment: 290793

Committed r206870: &lt;http://trac.webkit.org/changeset/206870&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1237154</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-10-06 11:02:09 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1237212</commentid>
    <comment_count>7</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2016-10-06 11:45:33 -0700</bug_when>
    <thetext>Maybe we should also remove the TypeError private name to prevent its use?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1237213</commentid>
    <comment_count>8</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2016-10-06 11:45:53 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; Maybe we should also remove the TypeError private name to prevent its use?

And the other potential error types.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1237231</commentid>
    <comment_count>9</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-10-06 12:03:35 -0700</bug_when>
    <thetext>(In reply to comment #8)
&gt; (In reply to comment #7)
&gt; &gt; Maybe we should also remove the TypeError private name to prevent its use?
&gt; 
&gt; And the other potential error types.

Nice catch. @throwTypeError can throw any messages.
We can drop it now!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1237255</commentid>
    <comment_count>10</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-10-06 12:44:44 -0700</bug_when>
    <thetext>(In reply to comment #9)
&gt; (In reply to comment #8)
&gt; &gt; (In reply to comment #7)
&gt; &gt; &gt; Maybe we should also remove the TypeError private name to prevent its use?
&gt; &gt; 
&gt; &gt; And the other potential error types.
&gt; 
&gt; Nice catch. @throwTypeError can throw any messages.
&gt; We can drop it now!

Ah, after investigating it, we figured out @TypeError etc. is still useful when we rejects Promise.
Like, promise.@reject(new @TypeError(&quot;&quot;));</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>290793</attachid>
            <date>2016-10-06 01:23:23 -0700</date>
            <delta_ts>2016-10-06 11:02:04 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-163001-20161006172009.patch</filename>
            <type>text/plain</type>
            <size>28137</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA2ODUzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA3
MWE3ZDA5YWYwZDg3MDhjYTE1OTJlMTlmODgyZDFkYTJmMjM3YjE4Li4wZmIwNTgzMDlhODg2YTU5
OTNmMzllYzU2OTEzNTFlMTBlODRmOTVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyNSBAQAorMjAxNi0xMC0wNiAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KKworICAgICAgICBbV2ViQ29yZV1bSlNDXSBVc2UgbmV3IEB0aHJvd1R5cGVFcnJvciBh
bmQgQHRocm93UmFuZ2VFcnJvciBpbnRyaW5zaWNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjMwMDEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBQcmV2aW91c2x5LCB0aGUgYXJndW1lbnQgb2YgQHRocm93
WFhYRXJyb3IgaW50cmluc2ljcyBtdXN0IGJlIHN0cmluZyBsaXRlcmFsLgorICAgICAgICBCdXQg
aXQgaXMgZXJyb3ItcHJvbmUgcmVzdHJpY3Rpb24uIFRoaXMgcGF0Y2ggcmVsYXhlcyB0aGUgcmVz
dHJpY3Rpb24gdG8gYWNjZXB0CisgICAgICAgIGFyYml0cmFyeSB2YWx1ZXMuIFRvIGtlZXAgZW1p
dHRlZCBieXRlY29kZSBzbWFsbCwgaWYgdGhlIGFyZ3VtZW50IGlzIHN0cmluZyBsaXRlcmFsLAor
ICAgICAgICB3ZSBnZW5lcmF0ZSB0aGUgc2FtZSBieXRlY29kZSBhcyBiZWZvcmUuIElmIHRoZSBh
cmd1bWVudCBpcyBub3Qgc3RyaW5nIGxpdGVyYWwsCisgICAgICAgIHdlIGV2YWx1YXRlIGl0IGFu
ZCBwZXJmb3JtIHRvX3N0cmluZyBiZWZvcmUgcGFzc2luZyB0byB0aHJvd19zdGF0aWNfZXJyb3Iu
CisKKyAgICAgICAgKiBieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwOgorICAgICAg
ICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFRocm93U3RhdGljRXJyb3IpOgorICAgICAg
ICAqIGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oOgorICAgICAgICAqIGJ5dGVjb21w
aWxlci9Ob2Rlc0NvZGVnZW4uY3BwOgorICAgICAgICAoSlNDOjpCeXRlY29kZUludHJpbnNpY05v
ZGU6OmVtaXRfaW50cmluc2ljX3Rocm93VHlwZUVycm9yKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNv
ZGVJbnRyaW5zaWNOb2RlOjplbWl0X2ludHJpbnNpY190aHJvd1JhbmdlRXJyb3IpOgorICAgICAg
ICAqIGRmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNv
ZGVQYXJzZXI6OnBhcnNlQmxvY2spOgorCiAyMDE2LTEwLTA1ICBZdXN1a2UgU3V6dWtpICA8dXRh
dGFuZS50ZWFAZ21haWwuY29tPgogCiAgICAgICAgIFtKU0NdIEFkZCBAdGhyb3dYWFhFcnJvciBi
eXRlY29kZSBpbnRyaW5zaWMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBi
L1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBmN2VjM2E4Yjk4Yzc4Y2FlNzhkZDQ1Zjgy
MGU0YzQzNjRlNTJmOTliLi40NjNhMDU1OTU2ZjI3ZTE4ZjI4YTRmYjc5NTdkMmU3ODY5MGE0OGU1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNv
cmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTQgQEAKKzIwMTYtMTAtMDYgIFl1c3VrZSBTdXp1a2kg
IDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+CisKKyAgICAgICAgW1dlYkNvcmVdW0pTQ10gVXNlIG5l
dyBAdGhyb3dUeXBlRXJyb3IgYW5kIEB0aHJvd1JhbmdlRXJyb3IgaW50cmluc2ljcworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYzMDAxCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVwbGFjZSBgdGhyb3cg
bmV3IEBYWFhFcnJvciguLi4pYCB0byBAdGhyb3dYWFhFcnJvciBpbnRyaW5zaWMuCisgICAgICAg
IEl0IHJlZHVjZXMgdGhlIHNpemUgb2YgYnl0ZWNvZGUgc2VxdWVuY2UgYW5kIGZhY2lsaXRhdGUg
aW5saW5pbmcuCisKKyAgICAgICAgTm8gYmVoYXZpb3IgY2hhbmdlLgorCisgICAgICAgICogTW9k
dWxlcy9mZXRjaC9GZXRjaEhlYWRlcnMuanM6CisgICAgICAgIChpbml0aWFsaXplRmV0Y2hIZWFk
ZXJzKToKKyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNoSW50ZXJuYWxzLmpzOgorICAgICAg
ICAoZmlsbEZldGNoSGVhZGVycyk6CisgICAgICAgICogTW9kdWxlcy9mZXRjaC9GZXRjaFJlcXVl
c3QuanM6CisgICAgICAgIChpbml0aWFsaXplRmV0Y2hSZXF1ZXN0KToKKyAgICAgICAgKiBNb2R1
bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuanM6CisgICAgICAgIChpbml0aWFsaXplRmV0Y2hSZXNw
b25zZSk6CisgICAgICAgIChjbG9uZSk6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9O
YXZpZ2F0b3JVc2VyTWVkaWEuanM6CisgICAgICAgICh3ZWJraXRHZXRVc2VyTWVkaWEpOgorICAg
ICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb24uanM6CisgICAgICAg
IChpbml0aWFsaXplUlRDUGVlckNvbm5lY3Rpb24pOgorICAgICAgICAoZ2V0TG9jYWxTdHJlYW1z
KToKKyAgICAgICAgKGdldFN0cmVhbUJ5SWQpOgorICAgICAgICAoYWRkU3RyZWFtKToKKyAgICAg
ICAgKiBNb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJlYW0uanM6CisgICAgICAgIChpbml0aWFs
aXplUmVhZGFibGVTdHJlYW0pOgorICAgICAgICAoZ2V0UmVhZGVyKToKKyAgICAgICAgKiBNb2R1
bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJlYW1EZWZhdWx0Q29udHJvbGxlci5qczoKKyAgICAgICAg
KGVucXVldWUpOgorICAgICAgICAoZXJyb3IpOgorICAgICAgICAoY2xvc2UpOgorICAgICAgICAq
IE1vZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVhbURlZmF1bHRSZWFkZXIuanM6CisgICAgICAg
IChyZWxlYXNlTG9jayk6CisgICAgICAgICogTW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFt
SW50ZXJuYWxzLmpzOgorICAgICAgICAocHJpdmF0ZUluaXRpYWxpemVSZWFkYWJsZVN0cmVhbURl
ZmF1bHRSZWFkZXIpOgorICAgICAgICAocHJpdmF0ZUluaXRpYWxpemVSZWFkYWJsZVN0cmVhbURl
ZmF1bHRDb250cm9sbGVyKToKKyAgICAgICAgKGRvU3RydWN0dXJlZENsb25lKToKKyAgICAgICAg
KHJlYWRhYmxlU3RyZWFtRXJyb3IpOgorICAgICAgICAqIE1vZHVsZXMvc3RyZWFtcy9TdHJlYW1J
bnRlcm5hbHMuanM6CisgICAgICAgICh2YWxpZGF0ZUFuZE5vcm1hbGl6ZVF1ZXVpbmdTdHJhdGVn
eSk6CisgICAgICAgIChlbnF1ZXVlVmFsdWVXaXRoU2l6ZSk6CisgICAgICAgICogTW9kdWxlcy9z
dHJlYW1zL1dyaXRhYmxlU3RyZWFtLmpzOgorICAgICAgICAoaW5pdGlhbGl6ZVdyaXRhYmxlU3Ry
ZWFtKToKKyAgICAgICAgKHN0YXRlKToKKyAgICAgICAgKiB4bWwvWE1MSHR0cFJlcXVlc3QuanM6
CisgICAgICAgIChyZXNwb25zZSk6CisKIDIwMTYtMTAtMDUgIENvbW1pdCBRdWV1ZSAgPGNvbW1p
dC1xdWV1ZUB3ZWJraXQub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIy
MDY4NDUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5
dGVjb2RlR2VuZXJhdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIv
Qnl0ZWNvZGVHZW5lcmF0b3IuY3BwCmluZGV4IDNiYjJmYTg1OTk0ODBmNjBmYmI2YzZmMWExZTVi
MDQwNzI5Y2I5ZjEuLmYxNWZjZTQ2YWM1ZTAwYTU4NDY2ZmYzNWMxMTU0Nzg4MzM3YWRjZjQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5l
cmF0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNv
ZGVHZW5lcmF0b3IuY3BwCkBAIC0zOTA1LDYgKzM5MDUsMTUgQEAgaW50IEJ5dGVjb2RlR2VuZXJh
dG9yOjpsYWJlbFNjb3BlRGVwdGgoKSBjb25zdAogICAgIHJldHVybiBsb2NhbFNjb3BlRGVwdGgo
KSArIG1fZmluYWxseURlcHRoOwogfQogCit2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0VGhy
b3dTdGF0aWNFcnJvcihFcnJvclR5cGUgZXJyb3JUeXBlLCBSZWdpc3RlcklEKiByYXcpCit7Cisg
ICAgUmVmUHRyPFJlZ2lzdGVySUQ+IG1lc3NhZ2UgPSBuZXdUZW1wb3JhcnkoKTsKKyAgICBlbWl0
VG9TdHJpbmcobWVzc2FnZS5nZXQoKSwgcmF3KTsKKyAgICBlbWl0T3Bjb2RlKG9wX3Rocm93X3N0
YXRpY19lcnJvcik7CisgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKG1lc3NhZ2UtPmluZGV4KCkp
OworICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChzdGF0aWNfY2FzdDx1bnNpZ25lZD4oZXJyb3JU
eXBlKSk7Cit9CisKIHZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRUaHJvd1N0YXRpY0Vycm9y
KEVycm9yVHlwZSBlcnJvclR5cGUsIGNvbnN0IElkZW50aWZpZXImIG1lc3NhZ2UpCiB7CiAgICAg
ZW1pdE9wY29kZShvcF90aHJvd19zdGF0aWNfZXJyb3IpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCmluZGV4IGY5OTUz
MzIxNmQxZDFkNjc4Y2UxYTc4YzIwYmQ1YzIxMDEyZDA3OTguLmNmYjZlNDcwMWNkZjRlNzRlODI1
YWIwODE2NThkNTkxNTg4OWQ1NjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgKQEAgLTY2Miw2ICs2NjIsNyBAQCBu
YW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgIGVtaXRVbmFyeU5vRHN0T3Aob3BfdGhyb3csIGV4
Yyk7CiAgICAgICAgIH0KIAorICAgICAgICB2b2lkIGVtaXRUaHJvd1N0YXRpY0Vycm9yKEVycm9y
VHlwZSwgUmVnaXN0ZXJJRCopOwogICAgICAgICB2b2lkIGVtaXRUaHJvd1N0YXRpY0Vycm9yKEVy
cm9yVHlwZSwgY29uc3QgSWRlbnRpZmllciYgbWVzc2FnZSk7CiAgICAgICAgIHZvaWQgZW1pdFRo
cm93UmVmZXJlbmNlRXJyb3IoY29uc3QgU3RyaW5nJiBtZXNzYWdlKTsKICAgICAgICAgdm9pZCBl
bWl0VGhyb3dUeXBlRXJyb3IoY29uc3QgU3RyaW5nJiBtZXNzYWdlKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcAppbmRleCAxNjk4
ZmE5ZDVlYzk5M2U1MjlkY2U5NDhiMmFjZGQxMmU5ZWFjYjgwLi40ZDI3NmQzYmRhYmVjMDA2YTEy
YzJkMjg5NWQwMmRlZmE2ZjE4NjJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCkBAIC05MDEsMjIgKzkwMSwyOSBAQCBSZWdp
c3RlcklEKiBCeXRlY29kZUludHJpbnNpY05vZGU6OmVtaXRfaW50cmluc2ljX3RhaWxDYWxsRm9y
d2FyZEFyZ3VtZW50cyhCeXRlYwogUmVnaXN0ZXJJRCogQnl0ZWNvZGVJbnRyaW5zaWNOb2RlOjpl
bWl0X2ludHJpbnNpY190aHJvd1R5cGVFcnJvcihCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9y
LCBSZWdpc3RlcklEKiBkc3QpCiB7CiAgICAgQXJndW1lbnRMaXN0Tm9kZSogbm9kZSA9IG1fYXJn
cy0+bV9saXN0Tm9kZTsKLSAgICBBU1NFUlQobm9kZS0+bV9leHByLT5pc1N0cmluZygpKTsKLSAg
ICBjb25zdCBJZGVudGlmaWVyJiBpZGVudCA9IHN0YXRpY19jYXN0PFN0cmluZ05vZGUqPihub2Rl
LT5tX2V4cHIpLT52YWx1ZSgpOwogICAgIEFTU0VSVCghbm9kZS0+bV9uZXh0KTsKLQotICAgIGdl
bmVyYXRvci5lbWl0VGhyb3dUeXBlRXJyb3IoaWRlbnQpOworICAgIGlmIChub2RlLT5tX2V4cHIt
PmlzU3RyaW5nKCkpIHsKKyAgICAgICAgY29uc3QgSWRlbnRpZmllciYgaWRlbnQgPSBzdGF0aWNf
Y2FzdDxTdHJpbmdOb2RlKj4obm9kZS0+bV9leHByKS0+dmFsdWUoKTsKKyAgICAgICAgZ2VuZXJh
dG9yLmVtaXRUaHJvd1R5cGVFcnJvcihpZGVudCk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgUmVm
UHRyPFJlZ2lzdGVySUQ+IG1lc3NhZ2UgPSBnZW5lcmF0b3IuZW1pdE5vZGUobm9kZSk7CisgICAg
ICAgIGdlbmVyYXRvci5lbWl0VGhyb3dTdGF0aWNFcnJvcihFcnJvclR5cGU6OlR5cGVFcnJvciwg
bWVzc2FnZS5nZXQoKSk7CisgICAgfQogICAgIHJldHVybiBkc3Q7CiB9CiAKIFJlZ2lzdGVySUQq
IEJ5dGVjb2RlSW50cmluc2ljTm9kZTo6ZW1pdF9pbnRyaW5zaWNfdGhyb3dSYW5nZUVycm9yKEJ5
dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCkKIHsKICAgICBBcmd1
bWVudExpc3ROb2RlKiBub2RlID0gbV9hcmdzLT5tX2xpc3ROb2RlOwotICAgIEFTU0VSVChub2Rl
LT5tX2V4cHItPmlzU3RyaW5nKCkpOwotICAgIGNvbnN0IElkZW50aWZpZXImIGlkZW50ID0gc3Rh
dGljX2Nhc3Q8U3RyaW5nTm9kZSo+KG5vZGUtPm1fZXhwciktPnZhbHVlKCk7CiAgICAgQVNTRVJU
KCFub2RlLT5tX25leHQpOworICAgIGlmIChub2RlLT5tX2V4cHItPmlzU3RyaW5nKCkpIHsKKyAg
ICAgICAgY29uc3QgSWRlbnRpZmllciYgaWRlbnQgPSBzdGF0aWNfY2FzdDxTdHJpbmdOb2RlKj4o
bm9kZS0+bV9leHByKS0+dmFsdWUoKTsKKyAgICAgICAgZ2VuZXJhdG9yLmVtaXRUaHJvd1Jhbmdl
RXJyb3IoaWRlbnQpOworICAgIH0gZWxzZSB7CisgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBt
ZXNzYWdlID0gZ2VuZXJhdG9yLmVtaXROb2RlKG5vZGUpOworICAgICAgICBnZW5lcmF0b3IuZW1p
dFRocm93U3RhdGljRXJyb3IoRXJyb3JUeXBlOjpSYW5nZUVycm9yLCBtZXNzYWdlLmdldCgpKTsK
KyAgICB9CiAKLSAgICBnZW5lcmF0b3IuZW1pdFRocm93UmFuZ2VFcnJvcihpZGVudCk7CiAgICAg
cmV0dXJuIGRzdDsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdCeXRlQ29kZVBhcnNlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVD
b2RlUGFyc2VyLmNwcAppbmRleCBlZmYyM2E4NTQyMGQ5MDg5ZTk4YWI1Y2RlMGNiMTQxZTViMGJk
MGZlLi4wZDFiYWIyM2M5MmFjZTZlMDcxYmEzNWY4ODdiYTZkZGUyMjMzZTNiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcApAQCAtNDY2MCw2
ICs0NjYwLDcgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZCBsaW1p
dCkKICAgICAgICAgICAgIExBU1RfT1BDT0RFKG9wX3Rocm93KTsKICAgICAgICAgICAgIAogICAg
ICAgICBjYXNlIG9wX3Rocm93X3N0YXRpY19lcnJvcjoKKyAgICAgICAgICAgIGFkZFRvR3JhcGgo
UGhhbnRvbSwgZ2V0KFZpcnR1YWxSZWdpc3RlcihjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVy
YW5kKSkpOyAvLyBLZWVwIGFyZ3VtZW50IGxpdmUuCiAgICAgICAgICAgICBhZGRUb0dyYXBoKFRo
cm93U3RhdGljRXJyb3IpOwogICAgICAgICAgICAgZmx1c2hGb3JUZXJtaW5hbCgpOwogICAgICAg
ICAgICAgYWRkVG9HcmFwaChVbnJlYWNoYWJsZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2ZldGNoL0ZldGNoSGVhZGVycy5qcyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
ZmV0Y2gvRmV0Y2hIZWFkZXJzLmpzCmluZGV4IDJiZWZlOWU2Y2QwZWM3OGQ5NzMzZmVhZDRlMzQ1
MDhkZWZkNDMwYjUuLmU4YzJkNzU5OGM4YzZmZDA1MTdhYzU0OTYwOTYwYWExMGMzZTM4ZmYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hIZWFkZXJzLmpzCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hIZWFkZXJzLmpzCkBAIC0zMyw3
ICszMyw3IEBAIGZ1bmN0aW9uIGluaXRpYWxpemVGZXRjaEhlYWRlcnMoaGVhZGVyc0luaXQpCiAg
ICAgICAgIHJldHVybiB0aGlzOwogCiAgICAgaWYgKCFAaXNPYmplY3QoaGVhZGVyc0luaXQpKQot
ICAgICAgICB0aHJvdyBuZXcgQFR5cGVFcnJvcigiaGVhZGVyc0luaXQgbXVzdCBiZSBhbiBvYmpl
Y3QiKTsKKyAgICAgICAgQHRocm93VHlwZUVycm9yKCJoZWFkZXJzSW5pdCBtdXN0IGJlIGFuIG9i
amVjdCIpOwogCiAgICAgQGZpbGxGZXRjaEhlYWRlcnModGhpcywgaGVhZGVyc0luaXQpOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoSW50ZXJuYWxzLmpz
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEludGVybmFscy5qcwppbmRleCA4
NjgzMjc3Zjc4ZjY2YzEwYzlhZjVkYTRkYzI2ZTM4NWYzZWRhNzY2Li5lM2I2ZjQxMGE1YjFhYTFh
MjU3NDMyMTUxMTcyYjYyMTBlNWNiMjBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2ZldGNoL0ZldGNoSW50ZXJuYWxzLmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
ZmV0Y2gvRmV0Y2hJbnRlcm5hbHMuanMKQEAgLTM5LDcgKzM5LDcgQEAgZnVuY3Rpb24gZmlsbEZl
dGNoSGVhZGVycyhoZWFkZXJzLCBoZWFkZXJzSW5pdCkKICAgICAgICAgZm9yIChsZXQgaSA9IDA7
IGkgPCBoZWFkZXJzSW5pdC5sZW5ndGg7IGkrKykgewogICAgICAgICAgICAgbGV0IGhlYWRlciA9
IGhlYWRlcnNJbml0W2ldOwogICAgICAgICAgICAgaWYgKGhlYWRlci5sZW5ndGggIT09IDIpCi0g
ICAgICAgICAgICAgICAgdGhyb3cgbmV3IEBUeXBlRXJyb3IoImhlYWRlcnNJbml0IHNlcXVlbmNl
IGl0ZW1zIHNob3VsZCBjb250YWluIHR3byB2YWx1ZXMiKTsKKyAgICAgICAgICAgICAgICBAdGhy
b3dUeXBlRXJyb3IoImhlYWRlcnNJbml0IHNlcXVlbmNlIGl0ZW1zIHNob3VsZCBjb250YWluIHR3
byB2YWx1ZXMiKTsKICAgICAgICAgICAgIEBIZWFkZXJzLnByb3RvdHlwZS5AYXBwZW5kRnJvbUpT
LkBjYWxsKGhlYWRlcnMsIGhlYWRlclswXSwgaGVhZGVyWzFdKTsKICAgICAgICAgfQogICAgICAg
ICByZXR1cm4gdGhpczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gv
RmV0Y2hSZXF1ZXN0LmpzIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlcXVl
c3QuanMKaW5kZXggNWI0MTQxZDM0YjdlMzgyNDVkMjRhYTE3NGMxNTk5ZGYzNmZmNmRkYi4uNTMz
YTMzYjUyZjAxODkwZjRkYzljNTQwMGVjOGY0MWYyYzFkODhkOCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlcXVlc3QuanMKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlcXVlc3QuanMKQEAgLTMyLDcgKzMyLDcgQEAgZnVuY3Rp
b24gaW5pdGlhbGl6ZUZldGNoUmVxdWVzdChpbnB1dCwgaW5pdCkKICAgICBpZiAoaW5pdCA9PT0g
QHVuZGVmaW5lZCkKICAgICAgICAgaW5pdCA9IHsgfTsKICAgICBlbHNlIGlmICghQGlzT2JqZWN0
KGluaXQpKQotICAgICAgICB0aHJvdyBuZXcgQFR5cGVFcnJvcigiUmVxdWVzdCBpbml0IG11c3Qg
YmUgYW4gb2JqZWN0Iik7CisgICAgICAgIEB0aHJvd1R5cGVFcnJvcigiUmVxdWVzdCBpbml0IG11
c3QgYmUgYW4gb2JqZWN0Iik7CiAKICAgICBsZXQgaGVhZGVycyA9IHRoaXMuQGluaXRpYWxpemVX
aXRoKGlucHV0LCBpbml0KTsKICAgICBAYXNzZXJ0KGhlYWRlcnMgaW5zdGFuY2VvZiBASGVhZGVy
cyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9u
c2UuanMgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuanMKaW5k
ZXggM2I2MWQyMzM2OWE3NTQyMmRkMmMxYzFkODQ3MGNhZTM2YmMwZDU5YS4uOGZkMDY4ODg1NWEy
YTNhZTY3N2M3OGNjMmY1YmJhMTgzNWIyY2IzZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5qcwpAQCAtMzIsMTEgKzMyLDExIEBAIGZ1bmN0aW9uIGlu
aXRpYWxpemVGZXRjaFJlc3BvbnNlKGJvZHksIGluaXQpCiAgICAgaWYgKGluaXQgPT09IEB1bmRl
ZmluZWQpCiAgICAgICAgIGluaXQgPSB7IH07CiAgICAgZWxzZSBpZiAoIUBpc09iamVjdChpbml0
KSkKLSAgICAgICAgdGhyb3cgbmV3IEBUeXBlRXJyb3IoIlJlc3BvbnNlIGluaXQgbXVzdCBiZSBh
biBvYmplY3QiKTsKKyAgICAgICAgQHRocm93VHlwZUVycm9yKCJSZXNwb25zZSBpbml0IG11c3Qg
YmUgYW4gb2JqZWN0Iik7CiAKICAgICBsZXQgc3RhdHVzID0gKGluaXQuc3RhdHVzICE9PSBAdW5k
ZWZpbmVkKSA/IEB0b051bWJlcihpbml0LnN0YXR1cykgOiAyMDA7CiAgICAgaWYgKHN0YXR1cyA8
IDIwMCAgfHwgc3RhdHVzID4gNTk5KQotICAgICAgICB0aHJvdyBuZXcgQFJhbmdlRXJyb3IoIlN0
YXR1cyBtdXN0IGJlIGJldHdlZW4gMjAwIGFuZCA1OTkiKTsKKyAgICAgICAgQHRocm93UmFuZ2VF
cnJvcigiU3RhdHVzIG11c3QgYmUgYmV0d2VlbiAyMDAgYW5kIDU5OSIpOwogCiAgICAgbGV0IHN0
YXR1c1RleHQgPSAoaW5pdC5zdGF0dXNUZXh0ICE9PSBAdW5kZWZpbmVkKSA/IGluaXQuc3RhdHVz
VGV4dCA6ICJPSyI7CiAKQEAgLTQ3LDcgKzQ3LDcgQEAgZWxzZSBpZiAoIUBpc09iamVjdChpbml0
KSkKIAogICAgIGlmIChib2R5ICE9PSBAdW5kZWZpbmVkICYmIGJvZHkgIT09IG51bGwpIHsKICAg
ICAgICAgaWYgKHN0YXR1cyA9PSAxMDEgfHwgc3RhdHVzID09IDIwNCB8fCBzdGF0dXMgPT0gMjA1
IHx8IHN0YXR1cyA9PSAzMDQpCi0gICAgICAgICAgICB0aHJvdyBuZXcgQFR5cGVFcnJvcigiUmVz
cG9uc2UgY2Fubm90IGhhdmUgYSBib2R5IHdpdGggdGhlIGdpdmVuIHN0YXR1cyIpOworICAgICAg
ICAgICAgQHRocm93VHlwZUVycm9yKCJSZXNwb25zZSBjYW5ub3QgaGF2ZSBhIGJvZHkgd2l0aCB0
aGUgZ2l2ZW4gc3RhdHVzIik7CiAKICAgICAgICAgLy8gRklYTUU6IFVzZSBAaXNSZWFkYWJsZVN0
cmVhbSBvbmNlIGl0IGlzIG5vIGxvbmdlciBndWFyZGVkIGJ5IFJFQURBQkxFX1NUUkVBTV9BUEkg
Z3VhcmQuCiAgICAgICAgIGxldCBpc0JvZHlSZWFkYWJsZVN0cmVhbSA9IChAaXNPYmplY3QoYm9k
eSkgJiYgISFib2R5LkByZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXIpOwpAQCAtOTUsNyArOTUsNyBA
QCBmdW5jdGlvbiBjbG9uZSgpCiAgICAgICAgIHRocm93IEBtYWtlVGhpc1R5cGVFcnJvcigiUmVz
cG9uc2UiLCAiY2xvbmUiKTsKIAogICAgIGlmIChAUmVzcG9uc2UucHJvdG90eXBlLkBpc0Rpc3R1
cmJlZC5AY2FsbCh0aGlzKSB8fCAodGhpcy5AYm9keSAmJiBAaXNSZWFkYWJsZVN0cmVhbUxvY2tl
ZCh0aGlzLkBib2R5KSkpCi0gICAgICAgIHRocm93IG5ldyBAVHlwZUVycm9yKCJDYW5ub3QgY2xv
bmUgYSBkaXN0dXJiZWQgUmVzcG9uc2UiKTsKKyAgICAgICAgQHRocm93VHlwZUVycm9yKCJDYW5u
b3QgY2xvbmUgYSBkaXN0dXJiZWQgUmVzcG9uc2UiKTsKIAogICAgIHZhciBjbG9uZWQgPSBAUmVz
cG9uc2UucHJvdG90eXBlLkBjbG9uZUZvckpTLkBjYWxsKHRoaXMpOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL05hdmlnYXRvclVzZXJNZWRpYS5qcyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTmF2aWdhdG9yVXNlck1lZGlhLmpz
CmluZGV4IDY1YjNmMjM0OGNmNDg1MGRlMTA5ZWU4NmYxNWUwY2U5MzhkMDRhM2MuLmQzZmM1ZDEx
NmI4YWFjNGRlZTIwMjZhZWY0MTVkN2Y4NTBiZDI0ODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTmF2aWdhdG9yVXNlck1lZGlhLmpzCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTmF2aWdhdG9yVXNlck1lZGlhLmpzCkBAIC0z
NCwxNSArMzQsMTUgQEAgZnVuY3Rpb24gd2Via2l0R2V0VXNlck1lZGlhKG9wdGlvbnMsIHN1Y2Nl
c3NDYWxsYmFjaywgZXJyb3JDYWxsYmFjaykKICAgICAgICAgdGhyb3cgQG1ha2VUaGlzVHlwZUVy
cm9yKCJOYXZpZ2F0b3IiLCAid2Via2l0R2V0VXNlck1lZGlhIik7CiAKICAgICBpZiAoYXJndW1l
bnRzLmxlbmd0aCA8IDMpCi0gICAgICAgIHRocm93IG5ldyBAVHlwZUVycm9yKCJOb3QgZW5vdWdo
IGFyZ3VtZW50cyIpOworICAgICAgICBAdGhyb3dUeXBlRXJyb3IoIk5vdCBlbm91Z2ggYXJndW1l
bnRzIik7CiAKICAgICBpZiAob3B0aW9ucyAhPT0gQE9iamVjdChvcHRpb25zKSkKLSAgICAgICAg
dGhyb3cgbmV3IEBUeXBlRXJyb3IoIkFyZ3VtZW50IDEgKG9wdGlvbnMpIHRvIE5hdmlnYXRvci53
ZWJraXRHZXRVc2VyTWVkaWEgbXVzdCBiZSBhbiBvYmplY3QiKTsKKyAgICAgICAgQHRocm93VHlw
ZUVycm9yKCJBcmd1bWVudCAxIChvcHRpb25zKSB0byBOYXZpZ2F0b3Iud2Via2l0R2V0VXNlck1l
ZGlhIG11c3QgYmUgYW4gb2JqZWN0Iik7CiAKICAgICBpZiAodHlwZW9mIHN1Y2Nlc3NDYWxsYmFj
ayAhPT0gImZ1bmN0aW9uIikKLSAgICAgICAgdGhyb3cgbmV3IEBUeXBlRXJyb3IoIkFyZ3VtZW50
IDIgKCdzdWNjZXNzQ2FsbGJhY2snKSB0byBOYXZpZ2F0b3Iud2Via2l0R2V0VXNlck1lZGlhIG11
c3QgYmUgYSBmdW5jdGlvbiIpOworICAgICAgICBAdGhyb3dUeXBlRXJyb3IoIkFyZ3VtZW50IDIg
KCdzdWNjZXNzQ2FsbGJhY2snKSB0byBOYXZpZ2F0b3Iud2Via2l0R2V0VXNlck1lZGlhIG11c3Qg
YmUgYSBmdW5jdGlvbiIpOwogICAgIGlmICh0eXBlb2YgZXJyb3JDYWxsYmFjayAhPT0gImZ1bmN0
aW9uIikKLSAgICAgICAgdGhyb3cgbmV3IEBUeXBlRXJyb3IoIkFyZ3VtZW50IDMgKCdlcnJvckNh
bGxiYWNrJykgdG8gTmF2aWdhdG9yLndlYmtpdEdldFVzZXJNZWRpYSBtdXN0IGJlIGEgZnVuY3Rp
b24iKTsKKyAgICAgICAgQHRocm93VHlwZUVycm9yKCJBcmd1bWVudCAzICgnZXJyb3JDYWxsYmFj
aycpIHRvIE5hdmlnYXRvci53ZWJraXRHZXRVc2VyTWVkaWEgbXVzdCBiZSBhIGZ1bmN0aW9uIik7
CiAKICAgICB0aGlzLm1lZGlhRGV2aWNlcy5AZ2V0VXNlck1lZGlhKG9wdGlvbnMpLkB0aGVuKHN1
Y2Nlc3NDYWxsYmFjaywgZXJyb3JDYWxsYmFjayk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uLmpzIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbi5qcwppbmRleCBiOGY3
YWNjNDA0MWUwZmUzMDJiYjVjODg0MzMxOTQ1MmRkMDY4MzA2Li4xYWE0NTlhMDc0NDk1ZGQ3YmY4
ZjA2NWVkZTMxZTMxMDJiNTUxZDM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uLmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb24uanMKQEAgLTM1LDEwICszNSwxMCBA
QCBmdW5jdGlvbiBpbml0aWFsaXplUlRDUGVlckNvbm5lY3Rpb24oY29uZmlndXJhdGlvbikKICAg
ICAidXNlIHN0cmljdCI7CiAKICAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCA8IDEpCi0gICAgICAg
IHRocm93IG5ldyBAVHlwZUVycm9yKCJOb3QgZW5vdWdoIGFyZ3VtZW50cyIpOworICAgICAgICBA
dGhyb3dUeXBlRXJyb3IoIk5vdCBlbm91Z2ggYXJndW1lbnRzIik7CiAKICAgICBpZiAoIUBpc09i
amVjdChjb25maWd1cmF0aW9uKSkKLSAgICAgICAgdGhyb3cgbmV3IEBUeXBlRXJyb3IoIlJUQ1Bl
ZXJDb25uZWN0aW9uIGFyZ3VtZW50IG11c3QgYmUgYSB2YWxpZCBEaWN0aW9uYXJ5Iik7CisgICAg
ICAgIEB0aHJvd1R5cGVFcnJvcigiUlRDUGVlckNvbm5lY3Rpb24gYXJndW1lbnQgbXVzdCBiZSBh
IHZhbGlkIERpY3Rpb25hcnkiKTsKIAogICAgIC8vIEZJWE1FOiBIYW5kbGUgZXJyb3JzIGluIGEg
YmV0dGVyIHdheSB0aGFuIGNhdGNoaW5nIGFuZCByZS10aHJvd2luZyAoaHR0cDovL3dlYmtpdC5v
cmcvYi8xNTg5MzYpCiAgICAgdHJ5IHsKQEAgLTQ2LDcgKzQ2LDcgQEAgZnVuY3Rpb24gaW5pdGlh
bGl6ZVJUQ1BlZXJDb25uZWN0aW9uKGNvbmZpZ3VyYXRpb24pCiAgICAgfSBjYXRjaCAoZSkgewog
ICAgICAgICBjb25zdCBtZXNzYWdlID0gZS5uYW1lID09PSAiVHlwZU1pc21hdGNoRXJyb3IiID8g
IkludmFsaWQgUlRDUGVlckNvbm5lY3Rpb24gY29uc3RydWN0b3IgYXJndW1lbnRzIgogICAgICAg
ICAgICAgOiAiRXJyb3IgY3JlYXRpbmcgUlRDUGVlckNvbm5lY3Rpb24iOwotICAgICAgICB0aHJv
dyBuZXcgQFR5cGVFcnJvcihtZXNzYWdlKTsKKyAgICAgICAgQHRocm93VHlwZUVycm9yKG1lc3Nh
Z2UpOwogICAgIH0KIAogICAgIHRoaXMuQG9wZXJhdGlvbnMgPSBbXTsKQEAgLTYwLDcgKzYwLDcg
QEAgZnVuY3Rpb24gZ2V0TG9jYWxTdHJlYW1zKCkKICAgICAidXNlIHN0cmljdCI7CiAKICAgICBp
ZiAoIUBpc1JUQ1BlZXJDb25uZWN0aW9uKHRoaXMpKQotICAgICAgICB0aHJvdyBuZXcgQFR5cGVF
cnJvcigiRnVuY3Rpb24gc2hvdWxkIGJlIGNhbGxlZCBvbiBhbiBSVENQZWVyQ29ubmVjdGlvbiIp
OworICAgICAgICBAdGhyb3dUeXBlRXJyb3IoIkZ1bmN0aW9uIHNob3VsZCBiZSBjYWxsZWQgb24g
YW4gUlRDUGVlckNvbm5lY3Rpb24iKTsKIAogICAgIHJldHVybiB0aGlzLkBsb2NhbFN0cmVhbXMu
c2xpY2UoKTsKIH0KQEAgLTcwLDEwICs3MCwxMCBAQCBmdW5jdGlvbiBnZXRTdHJlYW1CeUlkKHN0
cmVhbUlkQXJnKQogICAgICJ1c2Ugc3RyaWN0IjsKIAogICAgIGlmICghQGlzUlRDUGVlckNvbm5l
Y3Rpb24odGhpcykpCi0gICAgICAgIHRocm93IG5ldyBAVHlwZUVycm9yKCJGdW5jdGlvbiBzaG91
bGQgYmUgY2FsbGVkIG9uIGFuIFJUQ1BlZXJDb25uZWN0aW9uIik7CisgICAgICAgIEB0aHJvd1R5
cGVFcnJvcigiRnVuY3Rpb24gc2hvdWxkIGJlIGNhbGxlZCBvbiBhbiBSVENQZWVyQ29ubmVjdGlv
biIpOwogCiAgICAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPCAxKQotICAgICAgICB0aHJvdyBuZXcg
QFR5cGVFcnJvcigiTm90IGVub3VnaCBhcmd1bWVudHMiKTsKKyAgICAgICAgQHRocm93VHlwZUVy
cm9yKCJOb3QgZW5vdWdoIGFyZ3VtZW50cyIpOwogCiAgICAgY29uc3Qgc3RyZWFtSWQgPSBAU3Ry
aW5nKHN0cmVhbUlkQXJnKTsKIApAQCAtODcsMTMgKzg3LDEzIEBAIGZ1bmN0aW9uIGFkZFN0cmVh
bShzdHJlYW0pCiAgICAgInVzZSBzdHJpY3QiOwogCiAgICAgaWYgKCFAaXNSVENQZWVyQ29ubmVj
dGlvbih0aGlzKSkKLSAgICAgICAgdGhyb3cgbmV3IEBUeXBlRXJyb3IoIkZ1bmN0aW9uIHNob3Vs
ZCBiZSBjYWxsZWQgb24gYW4gUlRDUGVlckNvbm5lY3Rpb24iKTsKKyAgICAgICAgQHRocm93VHlw
ZUVycm9yKCJGdW5jdGlvbiBzaG91bGQgYmUgY2FsbGVkIG9uIGFuIFJUQ1BlZXJDb25uZWN0aW9u
Iik7CiAKICAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCA8IDEpCi0gICAgICAgIHRocm93IG5ldyBA
VHlwZUVycm9yKCJOb3QgZW5vdWdoIGFyZ3VtZW50cyIpOworICAgICAgICBAdGhyb3dUeXBlRXJy
b3IoIk5vdCBlbm91Z2ggYXJndW1lbnRzIik7CiAKICAgICBpZiAoIShzdHJlYW0gaW5zdGFuY2Vv
ZiBATWVkaWFTdHJlYW0pKQotICAgICAgICB0aHJvdyBuZXcgQFR5cGVFcnJvcigiQXJndW1lbnQg
MSAoJ3N0cmVhbScpIHRvIFJUQ1BlZXJDb25uZWN0aW9uLmFkZFN0cmVhbSBtdXN0IGJlIGFuIGlu
c3RhbmNlIG9mIE1lZGlhU3RyZWFtIik7CisgICAgICAgIEB0aHJvd1R5cGVFcnJvcigiQXJndW1l
bnQgMSAoJ3N0cmVhbScpIHRvIFJUQ1BlZXJDb25uZWN0aW9uLmFkZFN0cmVhbSBtdXN0IGJlIGFu
IGluc3RhbmNlIG9mIE1lZGlhU3RyZWFtIik7CiAKICAgICBpZiAodGhpcy5AbG9jYWxTdHJlYW1z
LmZpbmQobG9jYWxTdHJlYW0gPT4gbG9jYWxTdHJlYW0uaWQgPT09IHN0cmVhbS5pZCkpCiAgICAg
ICAgIHJldHVybjsKQEAgLTEwNywxMyArMTA3LDEzIEBAIGZ1bmN0aW9uIHJlbW92ZVN0cmVhbShz
dHJlYW0pCiAgICAgInVzZSBzdHJpY3QiOwogCiAgICAgaWYgKCFAaXNSVENQZWVyQ29ubmVjdGlv
bih0aGlzKSkKLSAgICAgICAgdGhyb3cgbmV3IEBUeXBlRXJyb3IoIkZ1bmN0aW9uIHNob3VsZCBi
ZSBjYWxsZWQgb24gYW4gUlRDUGVlckNvbm5lY3Rpb24iKTsKKyAgICAgICAgQHRocm93VHlwZUVy
cm9yKCJGdW5jdGlvbiBzaG91bGQgYmUgY2FsbGVkIG9uIGFuIFJUQ1BlZXJDb25uZWN0aW9uIik7
CiAKICAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCA8IDEpCi0gICAgICAgIHRocm93IG5ldyBAVHlw
ZUVycm9yKCJOb3QgZW5vdWdoIGFyZ3VtZW50cyIpOworICAgICAgICBAdGhyb3dUeXBlRXJyb3Io
Ik5vdCBlbm91Z2ggYXJndW1lbnRzIik7CiAKICAgICBpZiAoIShzdHJlYW0gaW5zdGFuY2VvZiBA
TWVkaWFTdHJlYW0pKQotICAgICAgICB0aHJvdyBuZXcgQFR5cGVFcnJvcigiQXJndW1lbnQgMSAo
J3N0cmVhbScpIHRvIFJUQ1BlZXJDb25uZWN0aW9uLnJlbW92ZVN0cmVhbSBtdXN0IGJlIGFuIGlu
c3RhbmNlIG9mIE1lZGlhU3RyZWFtIik7CisgICAgICAgIEB0aHJvd1R5cGVFcnJvcigiQXJndW1l
bnQgMSAoJ3N0cmVhbScpIHRvIFJUQ1BlZXJDb25uZWN0aW9uLnJlbW92ZVN0cmVhbSBtdXN0IGJl
IGFuIGluc3RhbmNlIG9mIE1lZGlhU3RyZWFtIik7CiAKICAgICBjb25zdCBpbmRleE9mU3RyZWFt
VG9SZW1vdmUgPSB0aGlzLkBsb2NhbFN0cmVhbXMuZmluZEluZGV4KGxvY2FsU3RyZWFtID0+IGxv
Y2FsU3RyZWFtLmlkID09PSBzdHJlYW0uaWQpOwogICAgIGlmIChpbmRleE9mU3RyZWFtVG9SZW1v
dmUgPT09IC0xKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1zL1Jl
YWRhYmxlU3RyZWFtLmpzIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxl
U3RyZWFtLmpzCmluZGV4IGFiYzMyNzNhMjY5MGU5YWJiMmJkYzljYWJmNDc1OTc1MTlmMmQxN2Eu
LmRlOTQyYTk0MDRjMjYyY2YwZmU3MTM4YjdlNTYwOWI4MWQwYWFlMWEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVhbS5qcworKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJlYW0uanMKQEAgLTM2LDEwICsz
NiwxMCBAQCBmdW5jdGlvbiBpbml0aWFsaXplUmVhZGFibGVTdHJlYW0odW5kZXJseWluZ1NvdXJj
ZSwgc3RyYXRlZ3kpCiAgICAgICAgICBzdHJhdGVneSA9IHsgaGlnaFdhdGVyTWFyazogMSwgc2l6
ZTogZnVuY3Rpb24oKSB7IHJldHVybiAxOyB9IH07CiAKICAgICBpZiAoIUBpc09iamVjdCh1bmRl
cmx5aW5nU291cmNlKSkKLSAgICAgICAgdGhyb3cgbmV3IEBUeXBlRXJyb3IoIlJlYWRhYmxlU3Ry
ZWFtIGNvbnN0cnVjdG9yIHRha2VzIGFuIG9iamVjdCBhcyBmaXJzdCBhcmd1bWVudCIpOworICAg
ICAgICBAdGhyb3dUeXBlRXJyb3IoIlJlYWRhYmxlU3RyZWFtIGNvbnN0cnVjdG9yIHRha2VzIGFu
IG9iamVjdCBhcyBmaXJzdCBhcmd1bWVudCIpOwogCiAgICAgaWYgKHN0cmF0ZWd5ICE9PSBAdW5k
ZWZpbmVkICYmICFAaXNPYmplY3Qoc3RyYXRlZ3kpKQotICAgICAgICB0aHJvdyBuZXcgQFR5cGVF
cnJvcigiUmVhZGFibGVTdHJlYW0gY29uc3RydWN0b3IgdGFrZXMgYW4gb2JqZWN0IGFzIHNlY29u
ZCBhcmd1bWVudCwgaWYgYW55Iik7CisgICAgICAgIEB0aHJvd1R5cGVFcnJvcigiUmVhZGFibGVT
dHJlYW0gY29uc3RydWN0b3IgdGFrZXMgYW4gb2JqZWN0IGFzIHNlY29uZCBhcmd1bWVudCwgaWYg
YW55Iik7CiAKICAgICB0aGlzLkBzdGF0ZSA9IEBzdHJlYW1SZWFkYWJsZTsKICAgICB0aGlzLkBy
ZWFkZXIgPSBAdW5kZWZpbmVkOwpAQCAtNTMsMTMgKzUzLDEzIEBAIGZ1bmN0aW9uIGluaXRpYWxp
emVSZWFkYWJsZVN0cmVhbSh1bmRlcmx5aW5nU291cmNlLCBzdHJhdGVneSkKIAogICAgIGlmICh0
eXBlU3RyaW5nID09PSAiYnl0ZXMiKSB7CiAgICAgICAgICAvLyBGSVhNRTogSW1wbGVtZW50IHN1
cHBvcnQgb2YgUmVhZGFibGVCeXRlU3RyZWFtQ29udHJvbGxlci4KLSAgICAgICAgdGhyb3cgbmV3
IEBUeXBlRXJyb3IoIlJlYWRhYmxlQnl0ZVN0cmVhbUNvbnRyb2xsZXIgaXMgbm90IGltcGxlbWVu
dGVkIik7CisgICAgICAgIEB0aHJvd1R5cGVFcnJvcigiUmVhZGFibGVCeXRlU3RyZWFtQ29udHJv
bGxlciBpcyBub3QgaW1wbGVtZW50ZWQiKTsKICAgICB9IGVsc2UgaWYgKHR5cGUgPT09IEB1bmRl
ZmluZWQpIHsKICAgICAgICAgaWYgKHN0cmF0ZWd5LmhpZ2hXYXRlck1hcmsgPT09IEB1bmRlZmlu
ZWQpCiAgICAgICAgICAgICBzdHJhdGVneS5oaWdoV2F0ZXJNYXJrID0gMTsKICAgICAgICAgdGhp
cy5AcmVhZGFibGVTdHJlYW1Db250cm9sbGVyID0gbmV3IEBSZWFkYWJsZVN0cmVhbURlZmF1bHRD
b250cm9sbGVyKHRoaXMsIHVuZGVybHlpbmdTb3VyY2UsIHN0cmF0ZWd5LnNpemUsIHN0cmF0ZWd5
LmhpZ2hXYXRlck1hcmspOwogICAgIH0gZWxzZQotICAgICAgICB0aHJvdyBuZXcgQFJhbmdlRXJy
b3IoIkludmFsaWQgdHlwZSBmb3IgdW5kZXJseWluZyBzb3VyY2UiKTsKKyAgICAgICAgQHRocm93
UmFuZ2VFcnJvcigiSW52YWxpZCB0eXBlIGZvciB1bmRlcmx5aW5nIHNvdXJjZSIpOwogCiAgICAg
cmV0dXJuIHRoaXM7CiB9CkBAIC04OSwxMyArODksMTMgQEAgZnVuY3Rpb24gZ2V0UmVhZGVyKG9w
dGlvbnMpCiAKICAgICBpZiAob3B0aW9ucy5tb2RlID09PSAnYnlvYicpIHsKICAgICAgICAgLy8g
RklYTUU6IFVwZGF0ZSBvbmNlIFJlYWRhYmxlQnl0ZVN0cmVhbUNvbnRvbGxlciBhbmQgUmVhZGFi
bGVTdHJlYW1CWU9CUmVhZGVyIGFyZSBpbXBsZW1lbnRlZC4KLSAgICAgICAgdGhyb3cgbmV3IEBU
eXBlRXJyb3IoIlJlYWRhYmxlU3RyZWFtQllPQlJlYWRlciBpcyBub3QgaW1wbGVtZW50ZWQiKTsK
KyAgICAgICAgQHRocm93VHlwZUVycm9yKCJSZWFkYWJsZVN0cmVhbUJZT0JSZWFkZXIgaXMgbm90
IGltcGxlbWVudGVkIik7CiAgICAgfQogCiAgICAgaWYgKG9wdGlvbnMubW9kZSA9PT0gQHVuZGVm
aW5lZCkKICAgICAgICAgcmV0dXJuIG5ldyBAUmVhZGFibGVTdHJlYW1EZWZhdWx0UmVhZGVyKHRo
aXMpOwogCi0gICAgdGhyb3cgbmV3IEBSYW5nZUVycm9yKCJJbnZhbGlkIG1vZGUgaXMgc3BlY2lm
aWVkIik7CisgICAgQHRocm93UmFuZ2VFcnJvcigiSW52YWxpZCBtb2RlIGlzIHNwZWNpZmllZCIp
OwogfQogCiBmdW5jdGlvbiBwaXBlVGhyb3VnaChzdHJlYW1zLCBvcHRpb25zKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFtRGVmYXVsdENv
bnRyb2xsZXIuanMgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJl
YW1EZWZhdWx0Q29udHJvbGxlci5qcwppbmRleCAwNzU0ZTJiNzAyNGEwODUzOWZjNzIyYWE0ZGZm
YWU3MDQyODJkNWYyLi4yZTVjNDExOGY0MTVkZTE1YjRmYzk1OWI4MTA2NmFkODc2NGY3ODcyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJlYW1E
ZWZhdWx0Q29udHJvbGxlci5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMv
UmVhZGFibGVTdHJlYW1EZWZhdWx0Q29udHJvbGxlci5qcwpAQCAtMzMsMTAgKzMzLDEwIEBAIGZ1
bmN0aW9uIGVucXVldWUoY2h1bmspCiAgICAgICAgIHRocm93IEBtYWtlVGhpc1R5cGVFcnJvcigi
UmVhZGFibGVTdHJlYW1EZWZhdWx0Q29udHJvbGxlciIsICJlbnF1ZXVlIik7CiAKICAgICBpZiAo
dGhpcy5AY2xvc2VSZXF1ZXN0ZWQpCi0gICAgICAgIHRocm93IG5ldyBAVHlwZUVycm9yKCJSZWFk
YWJsZVN0cmVhbURlZmF1bHRDb250cm9sbGVyIGlzIHJlcXVlc3RlZCB0byBjbG9zZSIpOworICAg
ICAgICBAdGhyb3dUeXBlRXJyb3IoIlJlYWRhYmxlU3RyZWFtRGVmYXVsdENvbnRyb2xsZXIgaXMg
cmVxdWVzdGVkIHRvIGNsb3NlIik7CiAKICAgICBpZiAodGhpcy5AY29udHJvbGxlZFJlYWRhYmxl
U3RyZWFtLkBzdGF0ZSAhPT0gQHN0cmVhbVJlYWRhYmxlKQotICAgICAgICB0aHJvdyBuZXcgQFR5
cGVFcnJvcigiUmVhZGFibGVTdHJlYW0gaXMgbm90IHJlYWRhYmxlIik7CisgICAgICAgIEB0aHJv
d1R5cGVFcnJvcigiUmVhZGFibGVTdHJlYW0gaXMgbm90IHJlYWRhYmxlIik7CiAKICAgICByZXR1
cm4gQHJlYWRhYmxlU3RyZWFtRGVmYXVsdENvbnRyb2xsZXJFbnF1ZXVlKHRoaXMsIGNodW5rKTsK
IH0KQEAgLTUwLDcgKzUwLDcgQEAgZnVuY3Rpb24gZXJyb3IoZXJyb3IpCiAKICAgICBjb25zdCBz
dHJlYW0gPSB0aGlzLkBjb250cm9sbGVkUmVhZGFibGVTdHJlYW07CiAgICAgaWYgKHN0cmVhbS5A
c3RhdGUgIT09IEBzdHJlYW1SZWFkYWJsZSkKLSAgICAgICAgdGhyb3cgbmV3IEBUeXBlRXJyb3Io
IlJlYWRhYmxlU3RyZWFtIGlzIG5vdCByZWFkYWJsZSIpOworICAgICAgICBAdGhyb3dUeXBlRXJy
b3IoIlJlYWRhYmxlU3RyZWFtIGlzIG5vdCByZWFkYWJsZSIpOwogCiAgICAgQHJlYWRhYmxlU3Ry
ZWFtRXJyb3Ioc3RyZWFtLCBlcnJvcik7CiB9CkBAIC02MywxMCArNjMsMTAgQEAgZnVuY3Rpb24g
Y2xvc2UoKQogICAgICAgICB0aHJvdyBAbWFrZVRoaXNUeXBlRXJyb3IoIlJlYWRhYmxlU3RyZWFt
RGVmYXVsdENvbnRyb2xsZXIiLCAiY2xvc2UiKTsKIAogICAgIGlmICh0aGlzLkBjbG9zZVJlcXVl
c3RlZCkKLSAgICAgICAgdGhyb3cgbmV3IEBUeXBlRXJyb3IoIlJlYWRhYmxlU3RyZWFtRGVmYXVs
dENvbnRyb2xsZXIgaXMgYWxyZWFkeSByZXF1ZXN0ZWQgdG8gY2xvc2UiKTsKKyAgICAgICAgQHRo
cm93VHlwZUVycm9yKCJSZWFkYWJsZVN0cmVhbURlZmF1bHRDb250cm9sbGVyIGlzIGFscmVhZHkg
cmVxdWVzdGVkIHRvIGNsb3NlIik7CiAKICAgICBpZiAodGhpcy5AY29udHJvbGxlZFJlYWRhYmxl
U3RyZWFtLkBzdGF0ZSAhPT0gQHN0cmVhbVJlYWRhYmxlKQotICAgICAgICB0aHJvdyBuZXcgQFR5
cGVFcnJvcigiUmVhZGFibGVTdHJlYW0gaXMgbm90IHJlYWRhYmxlIik7CisgICAgICAgIEB0aHJv
d1R5cGVFcnJvcigiUmVhZGFibGVTdHJlYW0gaXMgbm90IHJlYWRhYmxlIik7CiAKICAgICBAcmVh
ZGFibGVTdHJlYW1EZWZhdWx0Q29udHJvbGxlckNsb3NlKHRoaXMpOwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFtRGVmYXVsdFJlYWRl
ci5qcyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVhbURlZmF1
bHRSZWFkZXIuanMKaW5kZXggZDVhYzFmNWYxNjg1MTcyN2FlNjVmZGNhODg4Y2E4MWZkNjFiOWIz
NS4uMGFlMGQ0YzU1NjU1NDEwYTU1ZTRiMDY3ODQwNDdjNDBjMDg5ZTI3MiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFtRGVmYXVsdFJlYWRl
ci5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJlYW1E
ZWZhdWx0UmVhZGVyLmpzCkBAIC02Miw3ICs2Miw3IEBAIGZ1bmN0aW9uIHJlbGVhc2VMb2NrKCkK
ICAgICAgICAgIHJldHVybjsKIAogICAgIGlmICh0aGlzLkByZWFkUmVxdWVzdHMubGVuZ3RoKQot
ICAgICAgICB0aHJvdyBuZXcgQFR5cGVFcnJvcigiVGhlcmUgYXJlIHN0aWxsIHBlbmRpbmcgcmVh
ZCByZXF1ZXN0cywgY2Fubm90IHJlbGVhc2UgdGhlIGxvY2siKTsKKyAgICAgICAgQHRocm93VHlw
ZUVycm9yKCJUaGVyZSBhcmUgc3RpbGwgcGVuZGluZyByZWFkIHJlcXVlc3RzLCBjYW5ub3QgcmVs
ZWFzZSB0aGUgbG9jayIpOwogCiAgICAgaWYgKHN0cmVhbS5Ac3RhdGUgPT09IEBzdHJlYW1SZWFk
YWJsZSkKICAgICAgICAgdGhpcy5AY2xvc2VkUHJvbWlzZUNhcGFiaWxpdHkuQHJlamVjdC5AY2Fs
bChAdW5kZWZpbmVkLCBuZXcgQFR5cGVFcnJvcigicmVsZWFzaW5nIGxvY2sgb2YgcmVhZGVyIHdo
b3NlIHN0cmVhbSBpcyBzdGlsbCBpbiByZWFkYWJsZSBzdGF0ZSIpKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVhbUludGVybmFscy5qcyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVhbUludGVybmFscy5q
cwppbmRleCBmNjhlYWNkMGZkZjRhMmJhMWUyOGE4NjQ3MDljOGJkY2FiMWM5YWU1Li42MWZkY2Jh
NTdkODcxMDhhM2E2NTRmMjdkZjJhMjYzMTAwYjE5ZTRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJlYW1JbnRlcm5hbHMuanMKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFtSW50ZXJuYWxzLmpzCkBA
IC0zMiw5ICszMiw5IEBAIGZ1bmN0aW9uIHByaXZhdGVJbml0aWFsaXplUmVhZGFibGVTdHJlYW1E
ZWZhdWx0UmVhZGVyKHN0cmVhbSkKICAgICAidXNlIHN0cmljdCI7CiAKICAgICBpZiAoIUBpc1Jl
YWRhYmxlU3RyZWFtKHN0cmVhbSkpCi0gICAgICAgdGhyb3cgbmV3IEBUeXBlRXJyb3IoIlJlYWRh
YmxlU3RyZWFtRGVmYXVsdFJlYWRlciBuZWVkcyBhIFJlYWRhYmxlU3RyZWFtIik7CisgICAgICAg
QHRocm93VHlwZUVycm9yKCJSZWFkYWJsZVN0cmVhbURlZmF1bHRSZWFkZXIgbmVlZHMgYSBSZWFk
YWJsZVN0cmVhbSIpOwogICAgIGlmIChAaXNSZWFkYWJsZVN0cmVhbUxvY2tlZChzdHJlYW0pKQot
ICAgICAgIHRocm93IG5ldyBAVHlwZUVycm9yKCJSZWFkYWJsZVN0cmVhbSBpcyBsb2NrZWQiKTsK
KyAgICAgICBAdGhyb3dUeXBlRXJyb3IoIlJlYWRhYmxlU3RyZWFtIGlzIGxvY2tlZCIpOwogCiAg
ICAgdGhpcy5AcmVhZFJlcXVlc3RzID0gW107CiAgICAgdGhpcy5Ab3duZXJSZWFkYWJsZVN0cmVh
bSA9IHN0cmVhbTsKQEAgLTU4LDExICs1OCwxMSBAQCBmdW5jdGlvbiBwcml2YXRlSW5pdGlhbGl6
ZVJlYWRhYmxlU3RyZWFtRGVmYXVsdENvbnRyb2xsZXIoc3RyZWFtLCB1bmRlcmx5aW5nU291cgog
ICAgICJ1c2Ugc3RyaWN0IjsKIAogICAgIGlmICghQGlzUmVhZGFibGVTdHJlYW0oc3RyZWFtKSkK
LSAgICAgICAgdGhyb3cgbmV3IEBUeXBlRXJyb3IoIlJlYWRhYmxlU3RyZWFtRGVmYXVsdENvbnRy
b2xsZXIgbmVlZHMgYSBSZWFkYWJsZVN0cmVhbSIpOworICAgICAgICBAdGhyb3dUeXBlRXJyb3Io
IlJlYWRhYmxlU3RyZWFtRGVmYXVsdENvbnRyb2xsZXIgbmVlZHMgYSBSZWFkYWJsZVN0cmVhbSIp
OwogCiAgICAgLy8gcmVhZGFibGVTdHJlYW1Db250cm9sbGVyIGlzIGluaXRpYWxpemVkIHdpdGgg
bnVsbCB2YWx1ZS4KICAgICBpZiAoc3RyZWFtLkByZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXIgIT09
IG51bGwpCi0gICAgICAgIHRocm93IG5ldyBAVHlwZUVycm9yKCJSZWFkYWJsZVN0cmVhbSBhbHJl
YWR5IGhhcyBhIGNvbnRyb2xsZXIiKTsKKyAgICAgICAgQHRocm93VHlwZUVycm9yKCJSZWFkYWJs
ZVN0cmVhbSBhbHJlYWR5IGhhcyBhIGNvbnRyb2xsZXIiKTsKIAogICAgIHRoaXMuQGNvbnRyb2xs
ZWRSZWFkYWJsZVN0cmVhbSA9IHN0cmVhbTsKICAgICB0aGlzLkB1bmRlcmx5aW5nU291cmNlID0g
dW5kZXJseWluZ1NvdXJjZTsKQEAgLTE1Nyw3ICsxNTcsNyBAQCBmdW5jdGlvbiBkb1N0cnVjdHVy
ZWRDbG9uZShvYmplY3QpCiAgICAgaWYgKEBBcnJheUJ1ZmZlci5AaXNWaWV3KG9iamVjdCkpCiAg
ICAgICAgIHJldHVybiBAc3RydWN0dXJlZENsb25lQXJyYXlCdWZmZXJWaWV3KG9iamVjdCk7CiAK
LSAgICB0aHJvdyBuZXcgQFR5cGVFcnJvcigic3RydWN0dXJlZENsb25lIG5vdCBpbXBsZW1lbnRl
ZCBmb3I6ICIgKyBvYmplY3QpOworICAgIEB0aHJvd1R5cGVFcnJvcigic3RydWN0dXJlZENsb25l
IG5vdCBpbXBsZW1lbnRlZCBmb3I6ICIgKyBvYmplY3QpOwogfQogCiBmdW5jdGlvbiByZWFkYWJs
ZVN0cmVhbVRlZVB1bGxGdW5jdGlvbih0ZWVTdGF0ZSwgcmVhZGVyLCBzaG91bGRDbG9uZSkKQEAg
LTI2OSw3ICsyNjksNyBAQCBmdW5jdGlvbiByZWFkYWJsZVN0cmVhbUVycm9yKHN0cmVhbSwgZXJy
b3IpCiAgICAgICAgIHJlYWRlci5AcmVhZFJlcXVlc3RzID0gW107CiAgICAgfSBlbHNlCiAgICAg
ICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgUmVhZGFibGVTdHJlYW1CWU9CUmVhZGVyLgotICAgICAg
ICB0aHJvdyBuZXcgQFR5cGVFcnJvcigiT25seSBSZWFkYWJsZVN0cmVhbURlZmF1bHRSZWFkZXIg
aXMgY3VycmVudGx5IHN1cHBvcnRlZCIpOworICAgICAgICBAdGhyb3dUeXBlRXJyb3IoIk9ubHkg
UmVhZGFibGVTdHJlYW1EZWZhdWx0UmVhZGVyIGlzIGN1cnJlbnRseSBzdXBwb3J0ZWQiKTsKIAog
ICAgIHJlYWRlci5AY2xvc2VkUHJvbWlzZUNhcGFiaWxpdHkuQHJlamVjdC5AY2FsbChAdW5kZWZp
bmVkLCBlcnJvcik7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0cmVh
bXMvU3RyZWFtSW50ZXJuYWxzLmpzIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1zL1N0
cmVhbUludGVybmFscy5qcwppbmRleCBjYzg1MjMzNmZmNTgyMDgzZGRhOWYyZTZlNjM0N2I4ZDM3
ZjVjNzg3Li45NGE5NmUzOTZjYmRiZDE0ZWRhMDhmNjE2MDVhZmE4Y2FhMTMxNjc2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMvU3RyZWFtSW50ZXJuYWxzLmpzCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3RyZWFtcy9TdHJlYW1JbnRlcm5hbHMuanMKQEAg
LTc5LDcgKzc5LDcgQEAgZnVuY3Rpb24gdmFsaWRhdGVBbmROb3JtYWxpemVRdWV1aW5nU3RyYXRl
Z3koc2l6ZSwgaGlnaFdhdGVyTWFyaykKICAgICAidXNlIHN0cmljdCI7CiAKICAgICBpZiAoc2l6
ZSAhPT0gQHVuZGVmaW5lZCAmJiB0eXBlb2Ygc2l6ZSAhPT0gImZ1bmN0aW9uIikKLSAgICAgICAg
dGhyb3cgbmV3IEBUeXBlRXJyb3IoInNpemUgcGFyYW1ldGVyIG11c3QgYmUgYSBmdW5jdGlvbiIp
OworICAgICAgICBAdGhyb3dUeXBlRXJyb3IoInNpemUgcGFyYW1ldGVyIG11c3QgYmUgYSBmdW5j
dGlvbiIpOwogCiAgICAgY29uc3Qgbm9ybWFsaXplZFN0cmF0ZWd5ID0geyB9OwogCkBAIC04Nyw3
ICs4Nyw3IEBAIGZ1bmN0aW9uIHZhbGlkYXRlQW5kTm9ybWFsaXplUXVldWluZ1N0cmF0ZWd5KHNp
emUsIGhpZ2hXYXRlck1hcmspCiAgICAgbm9ybWFsaXplZFN0cmF0ZWd5LmhpZ2hXYXRlck1hcmsg
PSBATnVtYmVyKGhpZ2hXYXRlck1hcmspOwogCiAgICAgaWYgKEBpc05hTihub3JtYWxpemVkU3Ry
YXRlZ3kuaGlnaFdhdGVyTWFyaykgfHwgbm9ybWFsaXplZFN0cmF0ZWd5LmhpZ2hXYXRlck1hcmsg
PCAwKQotICAgICAgICB0aHJvdyBuZXcgQFJhbmdlRXJyb3IoImhpZ2hXYXRlck1hcmsgdmFsdWUg
aXMgbmVnYXRpdmUgb3Igbm90IGEgbnVtYmVyIik7CisgICAgICAgIEB0aHJvd1JhbmdlRXJyb3Io
ImhpZ2hXYXRlck1hcmsgdmFsdWUgaXMgbmVnYXRpdmUgb3Igbm90IGEgbnVtYmVyIik7CiAKICAg
ICByZXR1cm4gbm9ybWFsaXplZFN0cmF0ZWd5OwogfQpAQCAtMTE0LDcgKzExNCw3IEBAIGZ1bmN0
aW9uIGVucXVldWVWYWx1ZVdpdGhTaXplKHF1ZXVlLCB2YWx1ZSwgc2l6ZSkKIAogICAgIHNpemUg
PSBATnVtYmVyKHNpemUpOwogICAgIGlmICghQGlzRmluaXRlKHNpemUpIHx8IHNpemUgPCAwKQot
ICAgICAgICB0aHJvdyBuZXcgQFJhbmdlRXJyb3IoInNpemUgaGFzIGFuIGluY29ycmVjdCB2YWx1
ZSIpOworICAgICAgICBAdGhyb3dSYW5nZUVycm9yKCJzaXplIGhhcyBhbiBpbmNvcnJlY3QgdmFs
dWUiKTsKICAgICBxdWV1ZS5jb250ZW50LkBwdXNoKHsgdmFsdWU6IHZhbHVlLCBzaXplOiBzaXpl
IH0pOwogICAgIHF1ZXVlLnNpemUgKz0gc2l6ZTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvc3RyZWFtcy9Xcml0YWJsZVN0cmVhbS5qcyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvc3RyZWFtcy9Xcml0YWJsZVN0cmVhbS5qcwppbmRleCBlYTEyN2YyZjRkYTI4ZWExNjU1
Y2U2NDM3MzlkN2ZmYjBlZDZhZTk4Li5hYzZjYTI2NDlmMDBlNTdhNmIzYzg4NGY2ZjViZmEwNTRi
NmFkYzIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMvV3JpdGFi
bGVTdHJlYW0uanMKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1zL1dyaXRhYmxl
U3RyZWFtLmpzCkBAIC0zNiwxMCArMzYsMTAgQEAgZnVuY3Rpb24gaW5pdGlhbGl6ZVdyaXRhYmxl
U3RyZWFtKHVuZGVybHlpbmdTaW5rLCBzdHJhdGVneSkKICAgICAgICAgc3RyYXRlZ3kgPSB7IGhp
Z2hXYXRlck1hcms6IDAsIHNpemU6IGZ1bmN0aW9uKCkgeyByZXR1cm4gMTsgfSB9OwogCiAgICAg
aWYgKCFAaXNPYmplY3QodW5kZXJseWluZ1NpbmspKQotICAgICAgICB0aHJvdyBuZXcgQFR5cGVF
cnJvcigiV3JpdGFibGVTdHJlYW0gY29uc3RydWN0b3IgdGFrZXMgYW4gb2JqZWN0IGFzIGZpcnN0
IGFyZ3VtZW50Iik7CisgICAgICAgIEB0aHJvd1R5cGVFcnJvcigiV3JpdGFibGVTdHJlYW0gY29u
c3RydWN0b3IgdGFrZXMgYW4gb2JqZWN0IGFzIGZpcnN0IGFyZ3VtZW50Iik7CiAKICAgICBpZiAo
IUBpc09iamVjdChzdHJhdGVneSkpCi0gICAgICAgIHRocm93IG5ldyBAVHlwZUVycm9yKCJXcml0
YWJsZVN0cmVhbSBjb25zdHJ1Y3RvciB0YWtlcyBhbiBvYmplY3QgYXMgc2Vjb25kIGFyZ3VtZW50
LCBpZiBhbnkiKTsKKyAgICAgICAgQHRocm93VHlwZUVycm9yKCJXcml0YWJsZVN0cmVhbSBjb25z
dHJ1Y3RvciB0YWtlcyBhbiBvYmplY3QgYXMgc2Vjb25kIGFyZ3VtZW50LCBpZiBhbnkiKTsKIAog
ICAgIHRoaXMuQHVuZGVybHlpbmdTaW5rID0gdW5kZXJseWluZ1Npbms7CiAgICAgdGhpcy5AY2xv
c2VkUHJvbWlzZUNhcGFiaWxpdHkgPSBAbmV3UHJvbWlzZUNhcGFiaWxpdHkoQFByb21pc2UpOwpA
QCAtMTcwLDcgKzE3MCw3IEBAIGZ1bmN0aW9uIHN0YXRlKCkKICAgICAidXNlIHN0cmljdCI7CiAK
ICAgICBpZiAoIUBpc1dyaXRhYmxlU3RyZWFtKHRoaXMpKQotICAgICAgICB0aHJvdyBuZXcgQFR5
cGVFcnJvcigiVGhlIFdyaXRhYmxlU3RyZWFtLnN0YXRlIGdldHRlciBjYW4gb25seSBiZSB1c2Vk
IG9uIGluc3RhbmNlcyBvZiBXcml0YWJsZVN0cmVhbSIpOworICAgICAgICBAdGhyb3dUeXBlRXJy
b3IoIlRoZSBXcml0YWJsZVN0cmVhbS5zdGF0ZSBnZXR0ZXIgY2FuIG9ubHkgYmUgdXNlZCBvbiBp
bnN0YW5jZXMgb2YgV3JpdGFibGVTdHJlYW0iKTsKIAogICAgIHN3aXRjaCh0aGlzLkBzdGF0ZSkg
ewogICAgIGNhc2UgQHN0cmVhbUNsb3NlZDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3ht
bC9YTUxIdHRwUmVxdWVzdC5qcyBiL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5q
cwppbmRleCAzOWQyN2M4ZGMxNWQ4YmI1N2VkMTkyNTQ4NjBiM2YyM2M3NDlkNjYzLi42YWU1NDZi
MDhjMjYwNjJjYzc2NjQ1NGZlYjBhOWU1ODU1ZjI5OTgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS94bWwvWE1MSHR0cFJlcXVlc3QuanMKKysrIGIvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0
dHBSZXF1ZXN0LmpzCkBAIC0yOSw3ICsyOSw3IEBAIGZ1bmN0aW9uIHJlc3BvbnNlKCkKIAogICAg
IC8vIEZJWE1FOiBBZGQgYSBoZWxwZXIgcm91dGluZSBmb3IgdGhhdCBraW5kIG9mIGNoZWNrcy4K
ICAgICBpZiAoISh0aGlzIGluc3RhbmNlb2YgQFhNTEh0dHBSZXF1ZXN0KSkKLSAgICAgICAgdGhy
b3cgbmV3IEBUeXBlRXJyb3IoIlRoZSBYTUxIdHRwUmVxdWVzdC5yZXNwb25zZSBnZXR0ZXIgY2Fu
IG9ubHkgYmUgdXNlZCBvbiBpbnN0YW5jZXMgb2YgWE1MSHR0cFJlcXVlc3QiKTsKKyAgICAgICAg
QHRocm93VHlwZUVycm9yKCJUaGUgWE1MSHR0cFJlcXVlc3QucmVzcG9uc2UgZ2V0dGVyIGNhbiBv
bmx5IGJlIHVzZWQgb24gaW5zdGFuY2VzIG9mIFhNTEh0dHBSZXF1ZXN0Iik7CiAKICAgICBpZiAo
QFhNTEh0dHBSZXF1ZXN0LnByb3RvdHlwZS5AcmVzcG9uc2VDYWNoZUlzVmFsaWQuQGNhbGwodGhp
cykpCiAgICAgICAgIHJldHVybiB0aGlzLkByZXNwb25zZTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>