<?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>192620</bug_id>
          
          <creation_ts>2018-12-12 02:50:37 -0800</creation_ts>
          <short_desc>[DFG][FTL] Add NewSymbol</short_desc>
          <delta_ts>2018-12-13 11:27:35 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>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>InRadar</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>ews-watchlist</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1487171</commentid>
    <comment_count>0</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-12-12 02:50:37 -0800</bug_when>
    <thetext>[DFG][FTL] Add NewSymbol</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1487172</commentid>
    <comment_count>1</comment_count>
      <attachid>357116</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-12-12 02:58:21 -0800</bug_when>
    <thetext>Created attachment 357116
WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1487186</commentid>
    <comment_count>2</comment_count>
      <attachid>357123</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-12-12 07:01:38 -0800</bug_when>
    <thetext>Created attachment 357123
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1487263</commentid>
    <comment_count>3</comment_count>
      <attachid>357123</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2018-12-12 10:10:33 -0800</bug_when>
    <thetext>Comment on attachment 357123
Patch

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

&gt; Source/JavaScriptCore/ChangeLog:9
&gt; +        NewSymbol code faster. Rather than that, this patch intends to offer SpecSymbol type information into DFG&apos;s

Do you think it could be worth inlining the allocation for this in another patch?

&gt; Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp:9662
&gt; +    // Known String.

You should assert instead of comment</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1487264</commentid>
    <comment_count>4</comment_count>
      <attachid>357123</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2018-12-12 10:12:01 -0800</bug_when>
    <thetext>Comment on attachment 357123
Patch

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

&gt; Source/JavaScriptCore/ChangeLog:14
&gt; +        itself does not perform any type checks. Since `NewSymbol` will not exit except for OOM, we can just use ToString

It’s worth saying this is because ToString performs effects but NewSymbol doesn’t. Also, I don’t think we will ever OOM here, we will just crash</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1487450</commentid>
    <comment_count>5</comment_count>
      <attachid>357123</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-12-12 18:05:40 -0800</bug_when>
    <thetext>Comment on attachment 357123
Patch

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

&gt;&gt; Source/JavaScriptCore/ChangeLog:9
&gt;&gt; +        NewSymbol code faster. Rather than that, this patch intends to offer SpecSymbol type information into DFG&apos;s
&gt; 
&gt; Do you think it could be worth inlining the allocation for this in another patch?

One problem is that every Symbol has an unique WTF::SymbolImpl, which is allocated from bmalloc heap.
While we can allocate Symbol JSCell in the inline code, we still need to call C runtime to allocate this SymbolImpl.
If it still offers a perf win, it would be worth doing since Symbol creation would be more frequent after class private fields come.

&gt;&gt; Source/JavaScriptCore/ChangeLog:14
&gt;&gt; +        itself does not perform any type checks. Since `NewSymbol` will not exit except for OOM, we can just use ToString
&gt; 
&gt; It’s worth saying this is because ToString performs effects but NewSymbol doesn’t. Also, I don’t think we will ever OOM here, we will just crash

Sounds nice. Fixed.

&gt;&gt; Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp:9662
&gt;&gt; +    // Known String.
&gt; 
&gt; You should assert instead of comment

Nice, fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1487451</commentid>
    <comment_count>6</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-12-12 18:09:33 -0800</bug_when>
    <thetext>Committed r239142: &lt;https://trac.webkit.org/changeset/239142&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1487452</commentid>
    <comment_count>7</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-12-12 18:10:27 -0800</bug_when>
    <thetext>&lt;rdar://problem/46683296&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1487528</commentid>
    <comment_count>8</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-12-13 00:17:47 -0800</bug_when>
    <thetext>(In reply to Saam Barati from comment #3)
&gt; Comment on attachment 357123 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=357123&amp;action=review
&gt; 
&gt; &gt; Source/JavaScriptCore/ChangeLog:9
&gt; &gt; +        NewSymbol code faster. Rather than that, this patch intends to offer SpecSymbol type information into DFG&apos;s
&gt; 
&gt; Do you think it could be worth inlining the allocation for this in another
&gt; patch?

After investigating, inlining allocation does not improve Symbol constructor calls much. Actually, the large part of the time is consumed by HashTable, which is used to ensure one-on-one correspondence betweeen Symbol* and WTF::SymbolImpl.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1487586</commentid>
    <comment_count>9</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2018-12-13 08:22:05 -0800</bug_when>
    <thetext>(In reply to Yusuke Suzuki from comment #8)
&gt; (In reply to Saam Barati from comment #3)
&gt; &gt; Comment on attachment 357123 [details]
&gt; &gt; Patch
&gt; &gt; 
&gt; &gt; View in context:
&gt; &gt; https://bugs.webkit.org/attachment.cgi?id=357123&amp;action=review
&gt; &gt; 
&gt; &gt; &gt; Source/JavaScriptCore/ChangeLog:9
&gt; &gt; &gt; +        NewSymbol code faster. Rather than that, this patch intends to offer SpecSymbol type information into DFG&apos;s
&gt; &gt; 
&gt; &gt; Do you think it could be worth inlining the allocation for this in another
&gt; &gt; patch?
&gt; 
&gt; After investigating, inlining allocation does not improve Symbol constructor
&gt; calls much. Actually, the large part of the time is consumed by HashTable,
&gt; which is used to ensure one-on-one correspondence betweeen Symbol* and
&gt; WTF::SymbolImpl.

Makes sense. Thanks for investigating.

If we ever found a use case where this is super hot, we could inline cache Symbol(), e.g, a program like this:
function foo() { return Symbol(“const string”) }
Where foo is frequently called. We could cache the underlying SymbolImpl</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1487588</commentid>
    <comment_count>10</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-12-13 08:33:11 -0800</bug_when>
    <thetext>(In reply to Saam Barati from comment #9)
&gt; 
&gt; Makes sense. Thanks for investigating.
&gt; 
&gt; If we ever found a use case where this is super hot, we could inline cache
&gt; Symbol(), e.g, a program like this:
&gt; function foo() { return Symbol(“const string”) }
&gt; Where foo is frequently called. We could cache the underlying SymbolImpl

The issue is that, everytime foo is called, it generates a new unique Symbol with unique SymbolImpl. So we cannot perform IC here.
One fancy plan is that, embedding SymbolImpl into Symbol*. And Symbol* won&apos;t be collected while SymbolImpl&apos;s ref count is larger than one (this could be implemented by marking constraints).
But the problem is, one SymbolImpl generated by VM cannot be used by the other VM.
So, if we would like to do this optimization, I think we need per-process VM heap.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1487638</commentid>
    <comment_count>11</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2018-12-13 11:27:35 -0800</bug_when>
    <thetext>Makes sense. I clearly forgot that we have the 1:1 mapping of SymbolImpl to Symbol*</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>357116</attachid>
            <date>2018-12-12 02:58:21 -0800</date>
            <delta_ts>2018-12-12 07:01:36 -0800</delta_ts>
            <desc>WIP</desc>
            <filename>bug-192620-20181212195820.patch</filename>
            <type>text/plain</type>
            <size>18689</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM5MTAyCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAz
MTUyMjQzNGQ3N2EzZmZhM2IxZWY0N2NhNTZkNTdjNTJkYjQzZDY2Li5iYmFmMjdmNzVmNjQzNmI5
OGQxZDU1YjQ3MDM0YWYyYzdhOWUzNjZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw1MiBAQAorMjAxOC0xMi0xMiAgWXVzdWtlIFN1enVraSAgPHl1c3VrZXN1enVraUBzbG93
c3RhcnQub3JnPgorCisgICAgICAgIFtERkddW0ZUTF0gQWRkIE5ld1N5bWJvbAorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkyNjIwCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBwYXRjaCBpbnRyb2R1
Y2VzIE5ld1N5bWJvbCBERkcgbm9kZSBpbnRvIERGRyBhbmQgRlRMIHRpZXJzLiBUaGUgbWFpbiBn
b2FsIG9mIHRoaXMgcGF0Y2ggaXMgbm90IG9wdGltaXplCisgICAgICAgIE5ld1N5bWJvbCBjb2Rl
IGZhc3Rlci4gUmF0aGVyIHRoYW4gdGhhdCwgdGhpcyBwYXRjaCBpbnRlbmRzIHRvIG9mZmVyIFNw
ZWNTeW1ib2wgdHlwZSBpbmZvcm1hdGlvbiBpbnRvIERGRydzCisgICAgICAgIGRhdGEgZmxvdyB0
byBvcHRpbWl6ZSBnZW5lcmF0ZWQgY29kZSBpbiBGVEwgYmFja2VuZC4KKworICAgICAgICBXZSBh
ZGQgTmV3U3ltYm9sIERGRyBub2RlLCB3aGljaCBtYXkgdGFrZSBhbiBhcmd1bWVudC4gSWYgYW4g
YXJndW1lbnQgaXMgbm90IGdpdmVuLCBOZXdTeW1ib2wgaXMgZm9yIGBTeW1ib2woKWAuCisgICAg
ICAgIElmIGFuIGFyZ3VtZW50IGlzIGdpdmVuLCBUb1N0cmluZyBpcyBlbWl0dGVkIHRvIHRoaXMg
YXJndW1lbnQgYmVmb3JlIHBhc3NpbmcgaXQgdG8gTmV3U3ltYm9sLiBTbyBOZXdTeW1ib2wgbm9k
ZQorICAgICAgICBpdHNlbGYgZG9lcyBub3QgcGVyZm9ybSBhbnkgdHlwZSBjaGVja3MuIFNpbmNl
IGBOZXdTeW1ib2xgIHdpbGwgbm90IGV4aXQgZXhjZXB0IGZvciBPT00sIHdlIGNhbiBqdXN0IHVz
ZSBUb1N0cmluZworICAgICAgICBoZXJlLgorCisgICAgICAgICogZGZnL0RGR0Fic3RyYWN0SW50
ZXJwcmV0ZXJJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OkRGRzo6QWJzdHJhY3RJbnRlcnByZXRl
cjxBYnN0cmFjdFN0YXRlVHlwZT46OmV4ZWN1dGVFZmZlY3RzKToKKyAgICAgICAgKiBkZmcvREZH
Qnl0ZUNvZGVQYXJzZXIuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpo
YW5kbGVDb25zdGFudEludGVybmFsRnVuY3Rpb24pOgorICAgICAgICAqIGRmZy9ERkdDbG9iYmVy
aXplLmg6CisgICAgICAgIChKU0M6OkRGRzo6Y2xvYmJlcml6ZSk6CisgICAgICAgICogZGZnL0RG
R0Nsb2JiZXJzRXhpdFN0YXRlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpjbG9iYmVyc0V4aXRT
dGF0ZSk6CisgICAgICAgICogZGZnL0RGR0RvZXNHQy5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6
ZG9lc0dDKToKKyAgICAgICAgKiBkZmcvREZHRml4dXBQaGFzZS5jcHA6CisgICAgICAgIChKU0M6
OkRGRzo6Rml4dXBQaGFzZTo6Zml4dXBOb2RlKToKKyAgICAgICAgKiBkZmcvREZHTWF5RXhpdC5j
cHA6CisgICAgICAgICogZGZnL0RGR05vZGVUeXBlLmg6CisgICAgICAgICogZGZnL0RGR09wZXJh
dGlvbnMuY3BwOgorICAgICAgICAqIGRmZy9ERkdPcGVyYXRpb25zLmg6CisgICAgICAgICogZGZn
L0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcDoKKyAgICAgICAgKiBkZmcvREZHU2Fm
ZVRvRXhlY3V0ZS5oOgorICAgICAgICAoSlNDOjpERkc6OnNhZmVUb0V4ZWN1dGUpOgorICAgICAg
ICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3Vs
YXRpdmVKSVQ6OmNvbXBpbGVOZXdTeW1ib2wpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2
ZUpJVC5oOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcDoKKyAgICAg
ICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZSk6CisgICAgICAgICogZGZnL0RG
R1NwZWN1bGF0aXZlSklUNjQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklU
Ojpjb21waWxlKToKKyAgICAgICAgKiBkZmcvREZHU3RvcmVCYXJyaWVySW5zZXJ0aW9uUGhhc2Uu
Y3BwOgorICAgICAgICAqIGZ0bC9GVExDYXBhYmlsaXRpZXMuY3BwOgorICAgICAgICAoSlNDOjpG
VEw6OmNhbkNvbXBpbGUpOgorICAgICAgICAqIGZ0bC9GVExMb3dlckRGR1RvQjMuY3BwOgorICAg
ICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlTm9kZSk6CisgICAgICAg
IChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVOZXdTeW1ib2wpOgorCiAyMDE4
LTEyLTExICBZdXN1a2UgU3V6dWtpICA8eXVzdWtlc3V6dWtpQHNsb3dzdGFydC5vcmc+CiAKICAg
ICAgICAgW0JpZ0ludF0gU2ltcGxpZnkgYm9vbGVhbiBjb250ZXh0IGV2YWx1YXRpb24gYnkgbGV2
ZXJhZ2luZyBKU1N0cmluZzo6b2Zmc2V0T2ZMZW5ndGgoKSA9PSBKU0JpZ0ludDo6b2Zmc2V0T2ZM
ZW5ndGgoKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFj
dEludGVycHJldGVySW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0
cmFjdEludGVycHJldGVySW5saW5lcy5oCmluZGV4IGM4ZjY2ZGRlMjQ2YWM4ZGNjNTczNmNjNjU0
NjZiYTgxMjkzMmI5NjMuLmY1OTJkZDE4NDhjNjExZmIyMzhiZDA0MzBjMjEwZjI3Njg2ZjEwYTUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnBy
ZXRlcklubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0
SW50ZXJwcmV0ZXJJbmxpbmVzLmgKQEAgLTI0MjQsNiArMjQyNCwxMSBAQCBib29sIEFic3RyYWN0
SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+OjpleGVjdXRlRWZmZWN0cyh1bnNpZ25lZCBj
bG9iYmVyTGltaQogICAgICAgICBzZXRGb3JOb2RlKG5vZGUsIG5vZGUtPnN0cnVjdHVyZSgpKTsK
ICAgICAgICAgYnJlYWs7CiAgICAgfQorCisgICAgY2FzZSBOZXdTeW1ib2w6IHsKKyAgICAgICAg
c2V0Rm9yTm9kZShub2RlLCBtX3ZtLnN5bWJvbFN0cnVjdHVyZS5nZXQoKSk7CisgICAgICAgIGJy
ZWFrOworICAgIH0KICAgICAgICAgICAgIAogICAgIGNhc2UgTmV3QXJyYXk6CiAgICAgICAgIEFT
U0VSVChub2RlLT5pbmRleGluZ01vZGUoKSA9PSBub2RlLT5pbmRleGluZ1R5cGUoKSk7IC8vIENv
cHkgb24gd3JpdGUgYXJyYXlzIHNob3VsZCBvbmx5IGJlIGNyZWF0ZWQgYnkgTmV3QXJyYXlCdWZm
ZXIuCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFy
c2VyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3Bw
CmluZGV4IGFhMjMxNjczMjdjNmRlNjgxNDYxNGEyYTMxNGI1YjdhMmYwM2QwYjguLmVkYjBjNjRl
MjBkMjU2OTM4MDAzNWU2NjU2NTE1NmFlNDBhM2NhMzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCkBAIC02NSw2ICs2NSw3IEBACiAjaW5j
bHVkZSAiU3RhY2tBbGlnbm1lbnQuaCIKICNpbmNsdWRlICJTdHJpbmdDb25zdHJ1Y3Rvci5oIgog
I2luY2x1ZGUgIlN0cnVjdHVyZVN0dWJJbmZvLmgiCisjaW5jbHVkZSAiU3ltYm9sQ29uc3RydWN0
b3IuaCIKICNpbmNsdWRlICJXYXRjaGRvZy5oIgogI2luY2x1ZGUgPHd0Zi9Db21tYVByaW50ZXIu
aD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgpAQCAtMzcxMiw2ICszNzEzLDIwIEBAIGJvb2wg
Qnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUNvbnN0YW50SW50ZXJuYWxGdW5jdGlvbigKICAgICAgICAg
cmV0dXJuIHRydWU7CiAgICAgfQogCisgICAgaWYgKGZ1bmN0aW9uLT5jbGFzc0luZm8oKSA9PSBT
eW1ib2xDb25zdHJ1Y3Rvcjo6aW5mbygpICYmIGtpbmQgPT0gQ29kZUZvckNhbGwpIHsKKyAgICAg
ICAgaW5zZXJ0Q2hlY2tzKCk7CisKKyAgICAgICAgTm9kZSogcmVzdWx0Tm9kZTsKKworICAgICAg
ICBpZiAoYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMgPD0gMSkKKyAgICAgICAgICAgIHJlc3Vs
dE5vZGUgPSBhZGRUb0dyYXBoKE5ld1N5bWJvbCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAg
IHJlc3VsdE5vZGUgPSBhZGRUb0dyYXBoKE5ld1N5bWJvbCwgYWRkVG9HcmFwaChUb1N0cmluZywg
Z2V0KHZpcnR1YWxSZWdpc3RlckZvckFyZ3VtZW50KDEsIHJlZ2lzdGVyT2Zmc2V0KSkpKTsKKwor
ICAgICAgICBzZXQocmVzdWx0LCByZXN1bHROb2RlKTsKKyAgICAgICAgcmV0dXJuIHRydWU7Cisg
ICAgfQorCiAgICAgLy8gRklYTUU6IFRoaXMgc2hvdWxkIGhhbmRsZSBjb25zdHJ1Y3Rpb24gYXMg
d2VsbC4gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1NTU5MQogICAg
IGlmIChmdW5jdGlvbi0+Y2xhc3NJbmZvKCkgPT0gT2JqZWN0Q29uc3RydWN0b3I6OmluZm8oKSAm
JiBraW5kID09IENvZGVGb3JDYWxsKSB7CiAgICAgICAgIGluc2VydENoZWNrcygpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaAppbmRleCA5NTQwNGYzZjkyMGRkOTlk
NjMxMTg3NWZlYjgyYTliYTM5M2IyYjY0Li4xNjZlNDE5NWE1ZjIxYWM1YjcxOTJkYjk5NzZiYjli
MjViNzI5OTQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2Ji
ZXJpemUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaApA
QCAtMTUzMSw2ICsxNTMxLDcgQEAgdm9pZCBjbG9iYmVyaXplKEdyYXBoJiBncmFwaCwgTm9kZSog
bm9kZSwgY29uc3QgUmVhZEZ1bmN0b3ImIHJlYWQsIGNvbnN0IFdyaXRlRnUKIAogICAgIGNhc2Ug
TmV3T2JqZWN0OgogICAgIGNhc2UgTmV3UmVnZXhwOgorICAgIGNhc2UgTmV3U3ltYm9sOgogICAg
IGNhc2UgTmV3U3RyaW5nT2JqZWN0OgogICAgIGNhc2UgUGhhbnRvbU5ld09iamVjdDoKICAgICBj
YXNlIE1hdGVyaWFsaXplTmV3T2JqZWN0OgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdDbG9iYmVyc0V4aXRTdGF0ZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0Nsb2JiZXJzRXhpdFN0YXRlLmNwcAppbmRleCBmYWNkYmZiNDBmNmYxZWJiZWJiNWYw
ZmVkYWQyMjFlMzBkYTBjODI2Li5mZGRkNTE4NzA4NmQ5OWMzMTg2MWY2NGM5ODMzZjBkYjQ3MTlj
NjAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJzRXhp
dFN0YXRlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJzRXhp
dFN0YXRlLmNwcApAQCAtNTgsNiArNTgsNyBAQCBib29sIGNsb2JiZXJzRXhpdFN0YXRlKEdyYXBo
JiBncmFwaCwgTm9kZSogbm9kZSkKICAgICBjYXNlIEFycmF5aWZ5OgogICAgIGNhc2UgTmV3T2Jq
ZWN0OgogICAgIGNhc2UgTmV3UmVnZXhwOgorICAgIGNhc2UgTmV3U3ltYm9sOgogICAgIGNhc2Ug
TmV3U3RyaW5nT2JqZWN0OgogICAgIGNhc2UgUGhhbnRvbU5ld09iamVjdDoKICAgICBjYXNlIE1h
dGVyaWFsaXplTmV3T2JqZWN0OgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdEb2VzR0MuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3Bw
CmluZGV4IDY0ZTJmNWVmZWNhZDY0YjMwMTNkNDE4OWUyODQ5Y2IxNTM0OThmNjkuLjgwODkzMmY5
OTNhY2ZkMDI2NzFkMmZkYTU2YWJiNDljOWZkMzg5MGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0RvZXNHQy5jcHAKQEAgLTM1MCw2ICszNTAsNyBAQCBib29sIGRvZXNHQyhHcmFwaCYg
Z3JhcGgsIE5vZGUqIG5vZGUpCiAgICAgY2FzZSBOZXdBcnJheUJ1ZmZlcjoKICAgICBjYXNlIE5l
d1JlZ2V4cDoKICAgICBjYXNlIE5ld1N0cmluZ09iamVjdDoKKyAgICBjYXNlIE5ld1N5bWJvbDoK
ICAgICBjYXNlIE1ha2VSb3BlOgogICAgIGNhc2UgTmV3RnVuY3Rpb246CiAgICAgY2FzZSBOZXdH
ZW5lcmF0b3JGdW5jdGlvbjoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHRml4dXBQaGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhh
c2UuY3BwCmluZGV4IDViMGRlMTJmYTUwNjcxODNjNmI4ODZmMTFmYzBjYjA0OTgwY2I5MWMuLjU5
M2RkZjJlMGExNmYzY2QwMjRhNzhhMTBmYjYzMTA5ZWJhZmZhZTggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcApAQCAtMTI3NCw2ICsxMjc0LDEyIEBAIGNs
YXNzIEZpeHVwUGhhc2UgOiBwdWJsaWMgUGhhc2UgewogICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgIH0KIAorICAgICAgICBjYXNlIE5ld1N5bWJvbDogeworICAgICAgICAgICAgaWYgKG5vZGUt
PmNoaWxkMSgpKQorICAgICAgICAgICAgICAgIGZpeEVkZ2U8S25vd25TdHJpbmdVc2U+KG5vZGUt
PmNoaWxkMSgpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisKICAgICAgICAgY2Fz
ZSBOZXdBcnJheVdpdGhTcHJlYWQ6IHsKICAgICAgICAgICAgIHdhdGNoSGF2aW5nQUJhZFRpbWUo
bm9kZSk7CiAgICAgICAgICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHTWF5RXhpdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR01heUV4aXQu
Y3BwCmluZGV4IDExZDkwZDFkYjFmZTM5MjA1MzA3Yzk4OWY4OTA3MzFmZDJmYTU1NTYuLjVjYmZh
ZTg2MjVjOGUwYmNmZTg3NjM0NDdiYzliZjFlNGI1NTI4NzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHTWF5RXhpdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdNYXlFeGl0LmNwcApAQCAtMTI0LDYgKzEyNCw3IEBAIEV4aXRNb2RlIG1heUV4
aXRJbXBsKEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZSwgU3RhdGVUeXBlJiBzdGF0ZSkKICAgICBj
YXNlIE5ld0FzeW5jRnVuY3Rpb246CiAgICAgY2FzZSBOZXdBc3luY0dlbmVyYXRvckZ1bmN0aW9u
OgogICAgIGNhc2UgTmV3U3RyaW5nT2JqZWN0OgorICAgIGNhc2UgTmV3U3ltYm9sOgogICAgIGNh
c2UgTmV3UmVnZXhwOgogICAgIGNhc2UgVG9OdW1iZXI6CiAgICAgY2FzZSBSZWdFeHBFeGVjTm9u
R2xvYmFsT3JTdGlja3k6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R05vZGVUeXBlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgKaW5k
ZXggNDBmNjI2NDU3NjlmMTkxZjE3YmY2YmZlMWI4MzFiMWNhYmY3N2IxOS4uMzgxN2ZiMmFhMjFm
MDdkNjFkMjE0YzM5ZDQ0Y2E3MmMwMmZiZDJmMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHTm9kZVR5cGUuaApAQCAtMzM2LDYgKzMzNiw4IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3Bh
Y2UgREZHIHsKICAgICBtYWNybyhOZXdBcnJheUJ1ZmZlciwgTm9kZVJlc3VsdEpTKSBcCiAgICAg
bWFjcm8oTmV3VHlwZWRBcnJheSwgTm9kZVJlc3VsdEpTIHwgTm9kZU11c3RHZW5lcmF0ZSkgXAog
ICAgIG1hY3JvKE5ld1JlZ2V4cCwgTm9kZVJlc3VsdEpTKSBcCisgICAgbWFjcm8oTmV3U3ltYm9s
LCBOb2RlUmVzdWx0SlMpIFwKKyAgICBtYWNybyhOZXdTdHJpbmdPYmplY3QsIE5vZGVSZXN1bHRK
UykgXAogICAgIC8qIFJlc3QgUGFyYW1ldGVyICovXAogICAgIG1hY3JvKEdldFJlc3RMZW5ndGgs
IE5vZGVSZXN1bHRJbnQzMikgXAogICAgIG1hY3JvKENyZWF0ZVJlc3QsIE5vZGVSZXN1bHRKUyB8
IE5vZGVNdXN0R2VuZXJhdGUpIFwKQEAgLTM4MCw3ICszODIsNiBAQCBuYW1lc3BhY2UgSlNDIHsg
bmFtZXNwYWNlIERGRyB7CiAgICAgbWFjcm8oQ2FsbFN0cmluZ0NvbnN0cnVjdG9yLCBOb2RlUmVz
dWx0SlMgfCBOb2RlTXVzdEdlbmVyYXRlKSBcCiAgICAgbWFjcm8oTnVtYmVyVG9TdHJpbmdXaXRo
UmFkaXgsIE5vZGVSZXN1bHRKUyB8IE5vZGVNdXN0R2VuZXJhdGUpIFwKICAgICBtYWNybyhOdW1i
ZXJUb1N0cmluZ1dpdGhWYWxpZFJhZGl4Q29uc3RhbnQsIE5vZGVSZXN1bHRKUykgXAotICAgIG1h
Y3JvKE5ld1N0cmluZ09iamVjdCwgTm9kZVJlc3VsdEpTKSBcCiAgICAgbWFjcm8oTWFrZVJvcGUs
IE5vZGVSZXN1bHRKUykgXAogICAgIG1hY3JvKEluQnlWYWwsIE5vZGVSZXN1bHRCb29sZWFuIHwg
Tm9kZU11c3RHZW5lcmF0ZSkgXAogICAgIG1hY3JvKEluQnlJZCwgTm9kZVJlc3VsdEJvb2xlYW4g
fCBOb2RlTXVzdEdlbmVyYXRlKSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR09wZXJhdGlvbnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVy
YXRpb25zLmNwcAppbmRleCBiZTk5MmFmNmY2MzhmMzk2Njg3YjIyZjg0ZDZhYTMwZjA5ZmJkODE4
Li44MWYxNmM1ZDNhOTE4NTQ1YjRhODg1ZWM3ZjgzNTJiMjcxNDI4OGZjIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAKQEAgLTIyMzAsNiArMjIzMCwyMiBA
QCBKU1N0cmluZyogSklUX09QRVJBVElPTiBvcGVyYXRpb25TaW5nbGVDaGFyYWN0ZXJTdHJpbmco
RXhlY1N0YXRlKiBleGVjLCBpbnQzMl90CiAgICAgcmV0dXJuIGpzU2luZ2xlQ2hhcmFjdGVyU3Ry
aW5nKGV4ZWMsIHN0YXRpY19jYXN0PFVDaGFyPihjaGFyYWN0ZXIpKTsKIH0KIAorU3ltYm9sKiBK
SVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5ld1N5bWJvbChFeGVjU3RhdGUqIGV4ZWMpCit7CisgICAg
Vk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKCZ2
bSwgZXhlYyk7CisKKyAgICByZXR1cm4gU3ltYm9sOjpjcmVhdGUodm0pOworfQorCitTeW1ib2wq
IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTmV3U3ltYm9sV2l0aERlc2NyaXB0aW9uKEV4ZWNTdGF0
ZSogZXhlYywgSlNTdHJpbmcqIGRlc2NyaXB0aW9uKQoreworICAgIFZNJiB2bSA9IGV4ZWMtPnZt
KCk7CisgICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcigmdm0sIGV4ZWMpOworCisgICAg
cmV0dXJuIFN5bWJvbDo6Y3JlYXRlKGV4ZWMsIGRlc2NyaXB0aW9uKTsKK30KKwogSlNDZWxsKiBK
SVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5ld1N0cmluZ09iamVjdChFeGVjU3RhdGUqIGV4ZWMsIEpT
U3RyaW5nKiBzdHJpbmcsIFN0cnVjdHVyZSogc3RydWN0dXJlKQogewogICAgIFZNJiB2bSA9IGV4
ZWMtPnZtKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJh
dGlvbnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5oCmluZGV4
IGU0NTU2MDlhMWY1OTllY2VlYTAxODZiM2Y2ZGJlYjFhNjE4YmVmNDEuLjRlMzU2MzRkYjczNDZj
YzU5N2ZjZjg3OGZlNTA3N2I3NzcyOGMyYTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHT3BlcmF0aW9ucy5oCkBAIC0yMTksNiArMjE5LDggQEAgRW5jb2RlZEpTVmFsdWUgSklUX09Q
RVJBVElPTiBvcGVyYXRpb25QYXJzZUludFN0cmluZ05vUmFkaXgoRXhlY1N0YXRlKiwgSlNTdHJp
bmcKIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUGFyc2VJbnRTdHJpbmco
RXhlY1N0YXRlKiwgSlNTdHJpbmcqLCBpbnQzMl90KTsKIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVS
QVRJT04gb3BlcmF0aW9uUGFyc2VJbnRHZW5lcmljKEV4ZWNTdGF0ZSosIEVuY29kZWRKU1ZhbHVl
LCBpbnQzMl90KTsKIAorU3ltYm9sKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5ld1N5bWJvbChF
eGVjU3RhdGUqKTsKK1N5bWJvbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25OZXdTeW1ib2xXaXRo
RGVzY3JpcHRpb24oRXhlY1N0YXRlKiwgSlNTdHJpbmcqKTsKIEpTQ2VsbCogSklUX09QRVJBVElP
TiBvcGVyYXRpb25OZXdTdHJpbmdPYmplY3QoRXhlY1N0YXRlKiwgSlNTdHJpbmcqLCBTdHJ1Y3R1
cmUqKTsKIEpTU3RyaW5nKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblRvU3RyaW5nT25DZWxsKEV4
ZWNTdGF0ZSosIEpTQ2VsbCopOwogSlNTdHJpbmcqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVG9T
dHJpbmcoRXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcApp
bmRleCBlODI5OWViODczYzUwNjFhYmI0YTQ1ZjBkYzFiMTdkMjM5MDI1YTMwLi43MmUxNWZhYWJl
M2MzNWQ2N2E3MjJhMWM0MDNlY2NmMmEyNDkxZjZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcApA
QCAtMTAxOSw2ICsxMDE5LDEwIEBAIGNsYXNzIFByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlIDog
cHVibGljIFBoYXNlIHsKICAgICAgICAgICAgIHNldFByZWRpY3Rpb24oU3BlY1N0cmluZ09iamVj
dCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQorICAgICAgICBjYXNlIE5ld1N5bWJv
bDogeworICAgICAgICAgICAgc2V0UHJlZGljdGlvbihTcGVjU3ltYm9sKTsKKyAgICAgICAgICAg
IGJyZWFrOworICAgICAgICB9CiAgICAgICAgICAgICAKICAgICAgICAgY2FzZSBDcmVhdGVEaXJl
Y3RBcmd1bWVudHM6IHsKICAgICAgICAgICAgIHNldFByZWRpY3Rpb24oU3BlY0RpcmVjdEFyZ3Vt
ZW50cyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4
ZWN1dGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oCmlu
ZGV4IDA3Y2YwMWYzOGViNmVmMTNhM2EyYzRkMDZmODVlNWQ3M2FhODA0YTAuLmRjNzUxZTUwYzM3
Mzg2ZmI1YWE2YjJhNDVlMzkwYjdkNWYzYzMyZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oCkBAIC0zMTUsNiArMzE1LDcgQEAgYm9vbCBzYWZlVG9F
eGVjdXRlKEFic3RyYWN0U3RhdGVUeXBlJiBzdGF0ZSwgR3JhcGgmIGdyYXBoLCBOb2RlKiBub2Rl
LCBib29sIGlnbm8KICAgICBjYXNlIE5ld0FycmF5V2l0aFNwcmVhZDoKICAgICBjYXNlIFNwcmVh
ZDoKICAgICBjYXNlIE5ld1JlZ2V4cDoKKyAgICBjYXNlIE5ld1N5bWJvbDoKICAgICBjYXNlIFBy
b2ZpbGVUeXBlOgogICAgIGNhc2UgUHJvZmlsZUNvbnRyb2xGbG93OgogICAgIGNhc2UgQ2hlY2tU
eXBlSW5mb0ZsYWdzOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdT
cGVjdWxhdGl2ZUpJVC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0
aXZlSklULmNwcAppbmRleCA0NjViZjNmYjBmZDg3YzRhMDhlNWY1ZDk2ZmE5OGYzMzM4YTRhYjYy
Li43MzhmYWE5NTY0OTNiZmY1YzNhNjhlZmNhODMxYTVmZDY1NWU0YTY2IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcApAQCAtOTY0Nyw2ICs5
NjQ3LDMxIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVOZXdTdHJpbmdPYmplY3QoTm9k
ZSogbm9kZSkKICAgICBjZWxsUmVzdWx0KHJlc3VsdEdQUiwgbm9kZSk7CiB9CiAKK3ZvaWQgU3Bl
Y3VsYXRpdmVKSVQ6OmNvbXBpbGVOZXdTeW1ib2woTm9kZSogbm9kZSkKK3sKKyAgICBpZiAoIW5v
ZGUtPmNoaWxkMSgpKSB7CisgICAgICAgIGZsdXNoUmVnaXN0ZXJzKCk7CisgICAgICAgIEdQUkZs
dXNoZWRDYWxsUmVzdWx0IHJlc3VsdCh0aGlzKTsKKyAgICAgICAgR1BSUmVnIHJlc3VsdEdQUiA9
IHJlc3VsdC5ncHIoKTsKKyAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25OZXdTeW1ib2ws
IHJlc3VsdEdQUik7CisgICAgICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CisgICAgICAgIGNl
bGxSZXN1bHQocmVzdWx0R1BSLCBub2RlKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAg
IC8vIEtub3duIFN0cmluZy4KKyAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBvcGVyYW5kKHRoaXMs
IG5vZGUtPmNoaWxkMSgpKTsKKworICAgIEdQUlJlZyBzdHJpbmdHUFIgPSBvcGVyYW5kLmdwcigp
OworCisgICAgZmx1c2hSZWdpc3RlcnMoKTsKKyAgICBHUFJGbHVzaGVkQ2FsbFJlc3VsdCByZXN1
bHQodGhpcyk7CisgICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJlc3VsdC5ncHIoKTsKKyAgICBjYWxs
T3BlcmF0aW9uKG9wZXJhdGlvbk5ld1N5bWJvbFdpdGhEZXNjcmlwdGlvbiwgcmVzdWx0R1BSLCBz
dHJpbmdHUFIpOworICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CisgICAgY2VsbFJlc3VsdChy
ZXN1bHRHUFIsIG5vZGUpOworfQorCiB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlTmV3VHlw
ZWRBcnJheVdpdGhTaXplKE5vZGUqIG5vZGUpCiB7CiAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCA9IG1faml0LmdyYXBoKCkuZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1h
bnRpYyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0
aXZlSklULmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgK
aW5kZXggYTIwZTM5YTgzYWZlOGNiYjI5MjkyNzFkM2NlMjVhZmUzM2U3ZWE4Ny4uODE3N2U0YTQz
NGMxMDIxMWMzZjYxYTY1YmQ5MDY5NTkxNGY0MTQ1ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaApAQCAtMTI1Myw2ICsxMjUzLDcgQEAgY2xhc3Mg
U3BlY3VsYXRpdmVKSVQgewogICAgIHZvaWQgY29tcGlsZU51bWJlclRvU3RyaW5nV2l0aFZhbGlk
UmFkaXhDb25zdGFudChOb2RlKik7CiAgICAgdm9pZCBjb21waWxlTnVtYmVyVG9TdHJpbmdXaXRo
VmFsaWRSYWRpeENvbnN0YW50KE5vZGUqLCBpbnQzMl90IHJhZGl4KTsKICAgICB2b2lkIGNvbXBp
bGVOZXdTdHJpbmdPYmplY3QoTm9kZSopOworICAgIHZvaWQgY29tcGlsZU5ld1N5bWJvbChOb2Rl
Kik7CiAgICAgCiAgICAgdm9pZCBjb21waWxlTmV3VHlwZWRBcnJheVdpdGhTaXplKE5vZGUqKTsK
ICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRp
dmVKSVQzMl82NC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZl
SklUMzJfNjQuY3BwCmluZGV4IGJjZjdjNzI0ODhlODc2NTBhZjZiY2Y0MmFiNTdmY2MxNzMyNTg5
M2IuLjBjOTczZmNiY2Q2Zjc0MTMzMzAwZDE1OGM2NjQ0NWU0NGFiNmMwMWMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcApA
QCAtMzEwNSw2ICszMTA1LDExIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSog
bm9kZSkKICAgICAgICAgY29tcGlsZU5ld1N0cmluZ09iamVjdChub2RlKTsKICAgICAgICAgYnJl
YWs7CiAgICAgfQorCisgICAgY2FzZSBOZXdTeW1ib2w6IHsKKyAgICAgICAgY29tcGlsZU5ld1N5
bWJvbChub2RlKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQogICAgICAgICAKICAgICBjYXNlIE5l
d0FycmF5OiB7CiAgICAgICAgIGNvbXBpbGVOZXdBcnJheShub2RlKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCmluZGV4IDA2NjI3NDQ5
MDA5M2ZlYzJiMGYyZjg4NjM3MmFkYzA0MWQwNTg3ODIuLjI1MjE1ZTNlZGZkODVmMDk0MTRjMGU3
ZjExYmY1NjE5Zjk2ZDE2MDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdTcGVjdWxhdGl2ZUpJVDY0LmNwcApAQCAtMzM0Nyw2ICszMzQ3LDExIEBAIHZvaWQgU3BlY3Vs
YXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgY29tcGlsZU5ld1N0cmluZ09i
amVjdChub2RlKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQorCisgICAgY2FzZSBOZXdTeW1ib2w6
IHsKKyAgICAgICAgY29tcGlsZU5ld1N5bWJvbChub2RlKTsKKyAgICAgICAgYnJlYWs7CisgICAg
fQogICAgICAgICAKICAgICBjYXNlIE5ld0FycmF5OiB7CiAgICAgICAgIGNvbXBpbGVOZXdBcnJh
eShub2RlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3RvcmVC
YXJyaWVySW5zZXJ0aW9uUGhhc2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdT
dG9yZUJhcnJpZXJJbnNlcnRpb25QaGFzZS5jcHAKaW5kZXggNjhiMDYzZWI2ZGVhMjBlYTI0ZDVm
YWQ1MGYyMmMxMTE2ZTQzOGViZS4uNmFmNDViMDZjYjRlMzA3ZWY2MmM4MmNkOTBmMTRhYzA5MjAx
OWNjNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdG9yZUJhcnJp
ZXJJbnNlcnRpb25QaGFzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdT
dG9yZUJhcnJpZXJJbnNlcnRpb25QaGFzZS5jcHAKQEAgLTMyNSw5ICszMjUsMTAgQEAgY2xhc3Mg
U3RvcmVCYXJyaWVySW5zZXJ0aW9uUGhhc2UgOiBwdWJsaWMgUGhhc2UgewogICAgICAgICAgICAg
Y2FzZSBOZXdBcnJheUJ1ZmZlcjoKICAgICAgICAgICAgIGNhc2UgTmV3VHlwZWRBcnJheToKICAg
ICAgICAgICAgIGNhc2UgTmV3UmVnZXhwOgorICAgICAgICAgICAgY2FzZSBOZXdTdHJpbmdPYmpl
Y3Q6CisgICAgICAgICAgICBjYXNlIE5ld1N5bWJvbDoKICAgICAgICAgICAgIGNhc2UgTWF0ZXJp
YWxpemVOZXdPYmplY3Q6CiAgICAgICAgICAgICBjYXNlIE1hdGVyaWFsaXplQ3JlYXRlQWN0aXZh
dGlvbjoKLSAgICAgICAgICAgIGNhc2UgTmV3U3RyaW5nT2JqZWN0OgogICAgICAgICAgICAgY2Fz
ZSBNYWtlUm9wZToKICAgICAgICAgICAgIGNhc2UgQ3JlYXRlQWN0aXZhdGlvbjoKICAgICAgICAg
ICAgIGNhc2UgQ3JlYXRlRGlyZWN0QXJndW1lbnRzOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwCmluZGV4IDBhMzU2OWZlODg3NjU0NTc2OGJjNmM2ZTY4
OGFkMWJjNDQ4YTZhZjUuLmM5MWQxNTU3YzNmM2FmN2I1YWIzMjk0NzlkYTNkNDc2NTVkYjBmYTQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAKQEAg
LTc0LDYgKzc0LDcgQEAgaW5saW5lIENhcGFiaWxpdHlMZXZlbCBjYW5Db21waWxlKE5vZGUqIG5v
ZGUpCiAgICAgY2FzZSBHZXRCdXR0ZXJmbHk6CiAgICAgY2FzZSBOZXdPYmplY3Q6CiAgICAgY2Fz
ZSBOZXdTdHJpbmdPYmplY3Q6CisgICAgY2FzZSBOZXdTeW1ib2w6CiAgICAgY2FzZSBOZXdBcnJh
eToKICAgICBjYXNlIE5ld0FycmF5V2l0aFNwcmVhZDoKICAgICBjYXNlIFNwcmVhZDoKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAppbmRleCA3MmViOTM2
M2VkYmJlNTc1ZGJiZWRjNmNjOGQ1YTMxZjA1M2U3NDhiLi5hNDY4ODBlMDYxOGFmZTJjNDJlYjli
YTk0MzQ3ZmQzMmFkODlkMGQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRs
L0ZUTExvd2VyREZHVG9CMy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExM
b3dlckRGR1RvQjMuY3BwCkBAIC04NjksNiArODY5LDkgQEAgY2xhc3MgTG93ZXJERkdUb0IzIHsK
ICAgICAgICAgY2FzZSBOZXdTdHJpbmdPYmplY3Q6CiAgICAgICAgICAgICBjb21waWxlTmV3U3Ry
aW5nT2JqZWN0KCk7CiAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBOZXdTeW1ib2w6
CisgICAgICAgICAgICBjb21waWxlTmV3U3ltYm9sKCk7CisgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgY2FzZSBOZXdBcnJheToKICAgICAgICAgICAgIGNvbXBpbGVOZXdBcnJheSgpOwogICAg
ICAgICAgICAgYnJlYWs7CkBAIC01NTM1LDcgKzU1MzgsMTYgQEAgY2xhc3MgTG93ZXJERkdUb0Iz
IHsKICAgICAgICAgbV9vdXQuYXBwZW5kVG8oY29udGludWF0aW9uLCBsYXN0TmV4dCk7CiAgICAg
ICAgIHNldEpTVmFsdWUobV9vdXQucGhpKHBvaW50ZXJUeXBlKCksIGZhc3RSZXN1bHQsIHNsb3dS
ZXN1bHQpKTsKICAgICB9Ci0gICAgCisKKyAgICB2b2lkIGNvbXBpbGVOZXdTeW1ib2woKQorICAg
IHsKKyAgICAgICAgaWYgKCFtX25vZGUtPmNoaWxkMSgpKSB7CisgICAgICAgICAgICBzZXRKU1Zh
bHVlKHZtQ2FsbChwb2ludGVyVHlwZSgpLCBtX291dC5vcGVyYXRpb24ob3BlcmF0aW9uTmV3U3lt
Ym9sKSwgbV9jYWxsRnJhbWUpKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAg
ICAgICBzZXRKU1ZhbHVlKHZtQ2FsbChwb2ludGVyVHlwZSgpLCBtX291dC5vcGVyYXRpb24ob3Bl
cmF0aW9uTmV3U3ltYm9sV2l0aERlc2NyaXB0aW9uKSwgbV9jYWxsRnJhbWUsIGxvd1N0cmluZyht
X25vZGUtPmNoaWxkMSgpKSkpOworICAgIH0KKwogICAgIHZvaWQgY29tcGlsZU5ld0FycmF5KCkK
ICAgICB7CiAgICAgICAgIC8vIEZpcnN0IHNwZWN1bGF0ZSBhcHByb3ByaWF0ZWx5IG9uIGFsbCBv
ZiB0aGUgY2hpbGRyZW4uIERvIHRoaXMgdW5jb25kaXRpb25hbGx5IHVwIGhlcmUKZGlmZiAtLWdp
dCBhL0pTVGVzdHMvQ2hhbmdlTG9nIGIvSlNUZXN0cy9DaGFuZ2VMb2cKaW5kZXggYzZiODZjOWMy
NmQ1YjMzZjg4YmY5Y2M5OThhMDVjZWQ5MDFkMjI2NS4uYTk4NzI3MTNmZTFlYTZkMjQ0YzA4NDdm
NDI3Y2FiOTRkMTE2OTk4YiAxMDA2NDQKLS0tIGEvSlNUZXN0cy9DaGFuZ2VMb2cKKysrIGIvSlNU
ZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAxOC0xMi0xMiAgWXVzdWtlIFN1enVr
aSAgPHl1c3VrZXN1enVraUBzbG93c3RhcnQub3JnPgorCisgICAgICAgIFtERkddW0ZUTF0gQWRk
IE5ld1N5bWJvbAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTkyNjIwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiBtaWNyb2JlbmNobWFya3Mvc3ltYm9sLWNyZWF0aW9uLmpzOiBBZGRlZC4KKyAgICAgICAg
KHRlc3QpOgorCiAyMDE4LTEyLTEwICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KIAog
ICAgICAgICBQcm9wZXJ0eUF0dHJpYnV0ZSBuZWVkcyBhIEN1c3RvbVZhbHVlIGJpdC4KZGlmZiAt
LWdpdCBhL0pTVGVzdHMvbWljcm9iZW5jaG1hcmtzL3N5bWJvbC1jcmVhdGlvbi5qcyBiL0pTVGVz
dHMvbWljcm9iZW5jaG1hcmtzL3N5bWJvbC1jcmVhdGlvbi5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iYWYyNjBi
MGIwNzY1Y2U1NjJjZTJmMmZhY2Y1MGYyOTVkY2YyNTdkCi0tLSAvZGV2L251bGwKKysrIGIvSlNU
ZXN0cy9taWNyb2JlbmNobWFya3Mvc3ltYm9sLWNyZWF0aW9uLmpzCkBAIC0wLDAgKzEsOCBAQAor
ZnVuY3Rpb24gdGVzdCgpCit7CisgICAgcmV0dXJuIFN5bWJvbCgpOworfQorbm9JbmxpbmUodGVz
dCk7CisKK2ZvciAodmFyIGkgPSAwOyBpIDwgNGU1OyArK2kpCisgICAgdGVzdCgpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>357123</attachid>
            <date>2018-12-12 07:01:38 -0800</date>
            <delta_ts>2018-12-12 10:10:33 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-192620-20181213000137.patch</filename>
            <type>text/plain</type>
            <size>21836</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM5MTAyCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAz
MTUyMjQzNGQ3N2EzZmZhM2IxZWY0N2NhNTZkNTdjNTJkYjQzZDY2Li5iYmFmMjdmNzVmNjQzNmI5
OGQxZDU1YjQ3MDM0YWYyYzdhOWUzNjZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw1MiBAQAorMjAxOC0xMi0xMiAgWXVzdWtlIFN1enVraSAgPHl1c3VrZXN1enVraUBzbG93
c3RhcnQub3JnPgorCisgICAgICAgIFtERkddW0ZUTF0gQWRkIE5ld1N5bWJvbAorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkyNjIwCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBwYXRjaCBpbnRyb2R1
Y2VzIE5ld1N5bWJvbCBERkcgbm9kZSBpbnRvIERGRyBhbmQgRlRMIHRpZXJzLiBUaGUgbWFpbiBn
b2FsIG9mIHRoaXMgcGF0Y2ggaXMgbm90IG9wdGltaXplCisgICAgICAgIE5ld1N5bWJvbCBjb2Rl
IGZhc3Rlci4gUmF0aGVyIHRoYW4gdGhhdCwgdGhpcyBwYXRjaCBpbnRlbmRzIHRvIG9mZmVyIFNw
ZWNTeW1ib2wgdHlwZSBpbmZvcm1hdGlvbiBpbnRvIERGRydzCisgICAgICAgIGRhdGEgZmxvdyB0
byBvcHRpbWl6ZSBnZW5lcmF0ZWQgY29kZSBpbiBGVEwgYmFja2VuZC4KKworICAgICAgICBXZSBh
ZGQgTmV3U3ltYm9sIERGRyBub2RlLCB3aGljaCBtYXkgdGFrZSBhbiBhcmd1bWVudC4gSWYgYW4g
YXJndW1lbnQgaXMgbm90IGdpdmVuLCBOZXdTeW1ib2wgaXMgZm9yIGBTeW1ib2woKWAuCisgICAg
ICAgIElmIGFuIGFyZ3VtZW50IGlzIGdpdmVuLCBUb1N0cmluZyBpcyBlbWl0dGVkIHRvIHRoaXMg
YXJndW1lbnQgYmVmb3JlIHBhc3NpbmcgaXQgdG8gTmV3U3ltYm9sLiBTbyBOZXdTeW1ib2wgbm9k
ZQorICAgICAgICBpdHNlbGYgZG9lcyBub3QgcGVyZm9ybSBhbnkgdHlwZSBjaGVja3MuIFNpbmNl
IGBOZXdTeW1ib2xgIHdpbGwgbm90IGV4aXQgZXhjZXB0IGZvciBPT00sIHdlIGNhbiBqdXN0IHVz
ZSBUb1N0cmluZworICAgICAgICBoZXJlLgorCisgICAgICAgICogZGZnL0RGR0Fic3RyYWN0SW50
ZXJwcmV0ZXJJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OkRGRzo6QWJzdHJhY3RJbnRlcnByZXRl
cjxBYnN0cmFjdFN0YXRlVHlwZT46OmV4ZWN1dGVFZmZlY3RzKToKKyAgICAgICAgKiBkZmcvREZH
Qnl0ZUNvZGVQYXJzZXIuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpo
YW5kbGVDb25zdGFudEludGVybmFsRnVuY3Rpb24pOgorICAgICAgICAqIGRmZy9ERkdDbG9iYmVy
aXplLmg6CisgICAgICAgIChKU0M6OkRGRzo6Y2xvYmJlcml6ZSk6CisgICAgICAgICogZGZnL0RG
R0Nsb2JiZXJzRXhpdFN0YXRlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpjbG9iYmVyc0V4aXRT
dGF0ZSk6CisgICAgICAgICogZGZnL0RGR0RvZXNHQy5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6
ZG9lc0dDKToKKyAgICAgICAgKiBkZmcvREZHRml4dXBQaGFzZS5jcHA6CisgICAgICAgIChKU0M6
OkRGRzo6Rml4dXBQaGFzZTo6Zml4dXBOb2RlKToKKyAgICAgICAgKiBkZmcvREZHTWF5RXhpdC5j
cHA6CisgICAgICAgICogZGZnL0RGR05vZGVUeXBlLmg6CisgICAgICAgICogZGZnL0RGR09wZXJh
dGlvbnMuY3BwOgorICAgICAgICAqIGRmZy9ERkdPcGVyYXRpb25zLmg6CisgICAgICAgICogZGZn
L0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcDoKKyAgICAgICAgKiBkZmcvREZHU2Fm
ZVRvRXhlY3V0ZS5oOgorICAgICAgICAoSlNDOjpERkc6OnNhZmVUb0V4ZWN1dGUpOgorICAgICAg
ICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3Vs
YXRpdmVKSVQ6OmNvbXBpbGVOZXdTeW1ib2wpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2
ZUpJVC5oOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcDoKKyAgICAg
ICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZSk6CisgICAgICAgICogZGZnL0RG
R1NwZWN1bGF0aXZlSklUNjQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklU
Ojpjb21waWxlKToKKyAgICAgICAgKiBkZmcvREZHU3RvcmVCYXJyaWVySW5zZXJ0aW9uUGhhc2Uu
Y3BwOgorICAgICAgICAqIGZ0bC9GVExDYXBhYmlsaXRpZXMuY3BwOgorICAgICAgICAoSlNDOjpG
VEw6OmNhbkNvbXBpbGUpOgorICAgICAgICAqIGZ0bC9GVExMb3dlckRGR1RvQjMuY3BwOgorICAg
ICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlTm9kZSk6CisgICAgICAg
IChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVOZXdTeW1ib2wpOgorCiAyMDE4
LTEyLTExICBZdXN1a2UgU3V6dWtpICA8eXVzdWtlc3V6dWtpQHNsb3dzdGFydC5vcmc+CiAKICAg
ICAgICAgW0JpZ0ludF0gU2ltcGxpZnkgYm9vbGVhbiBjb250ZXh0IGV2YWx1YXRpb24gYnkgbGV2
ZXJhZ2luZyBKU1N0cmluZzo6b2Zmc2V0T2ZMZW5ndGgoKSA9PSBKU0JpZ0ludDo6b2Zmc2V0T2ZM
ZW5ndGgoKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFj
dEludGVycHJldGVySW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0
cmFjdEludGVycHJldGVySW5saW5lcy5oCmluZGV4IGM4ZjY2ZGRlMjQ2YWM4ZGNjNTczNmNjNjU0
NjZiYTgxMjkzMmI5NjMuLmY1OTJkZDE4NDhjNjExZmIyMzhiZDA0MzBjMjEwZjI3Njg2ZjEwYTUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnBy
ZXRlcklubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0
SW50ZXJwcmV0ZXJJbmxpbmVzLmgKQEAgLTI0MjQsNiArMjQyNCwxMSBAQCBib29sIEFic3RyYWN0
SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+OjpleGVjdXRlRWZmZWN0cyh1bnNpZ25lZCBj
bG9iYmVyTGltaQogICAgICAgICBzZXRGb3JOb2RlKG5vZGUsIG5vZGUtPnN0cnVjdHVyZSgpKTsK
ICAgICAgICAgYnJlYWs7CiAgICAgfQorCisgICAgY2FzZSBOZXdTeW1ib2w6IHsKKyAgICAgICAg
c2V0Rm9yTm9kZShub2RlLCBtX3ZtLnN5bWJvbFN0cnVjdHVyZS5nZXQoKSk7CisgICAgICAgIGJy
ZWFrOworICAgIH0KICAgICAgICAgICAgIAogICAgIGNhc2UgTmV3QXJyYXk6CiAgICAgICAgIEFT
U0VSVChub2RlLT5pbmRleGluZ01vZGUoKSA9PSBub2RlLT5pbmRleGluZ1R5cGUoKSk7IC8vIENv
cHkgb24gd3JpdGUgYXJyYXlzIHNob3VsZCBvbmx5IGJlIGNyZWF0ZWQgYnkgTmV3QXJyYXlCdWZm
ZXIuCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFy
c2VyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3Bw
CmluZGV4IGFhMjMxNjczMjdjNmRlNjgxNDYxNGEyYTMxNGI1YjdhMmYwM2QwYjguLmVkYjBjNjRl
MjBkMjU2OTM4MDAzNWU2NjU2NTE1NmFlNDBhM2NhMzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCkBAIC02NSw2ICs2NSw3IEBACiAjaW5j
bHVkZSAiU3RhY2tBbGlnbm1lbnQuaCIKICNpbmNsdWRlICJTdHJpbmdDb25zdHJ1Y3Rvci5oIgog
I2luY2x1ZGUgIlN0cnVjdHVyZVN0dWJJbmZvLmgiCisjaW5jbHVkZSAiU3ltYm9sQ29uc3RydWN0
b3IuaCIKICNpbmNsdWRlICJXYXRjaGRvZy5oIgogI2luY2x1ZGUgPHd0Zi9Db21tYVByaW50ZXIu
aD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgpAQCAtMzcxMiw2ICszNzEzLDIwIEBAIGJvb2wg
Qnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUNvbnN0YW50SW50ZXJuYWxGdW5jdGlvbigKICAgICAgICAg
cmV0dXJuIHRydWU7CiAgICAgfQogCisgICAgaWYgKGZ1bmN0aW9uLT5jbGFzc0luZm8oKSA9PSBT
eW1ib2xDb25zdHJ1Y3Rvcjo6aW5mbygpICYmIGtpbmQgPT0gQ29kZUZvckNhbGwpIHsKKyAgICAg
ICAgaW5zZXJ0Q2hlY2tzKCk7CisKKyAgICAgICAgTm9kZSogcmVzdWx0Tm9kZTsKKworICAgICAg
ICBpZiAoYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMgPD0gMSkKKyAgICAgICAgICAgIHJlc3Vs
dE5vZGUgPSBhZGRUb0dyYXBoKE5ld1N5bWJvbCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAg
IHJlc3VsdE5vZGUgPSBhZGRUb0dyYXBoKE5ld1N5bWJvbCwgYWRkVG9HcmFwaChUb1N0cmluZywg
Z2V0KHZpcnR1YWxSZWdpc3RlckZvckFyZ3VtZW50KDEsIHJlZ2lzdGVyT2Zmc2V0KSkpKTsKKwor
ICAgICAgICBzZXQocmVzdWx0LCByZXN1bHROb2RlKTsKKyAgICAgICAgcmV0dXJuIHRydWU7Cisg
ICAgfQorCiAgICAgLy8gRklYTUU6IFRoaXMgc2hvdWxkIGhhbmRsZSBjb25zdHJ1Y3Rpb24gYXMg
d2VsbC4gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1NTU5MQogICAg
IGlmIChmdW5jdGlvbi0+Y2xhc3NJbmZvKCkgPT0gT2JqZWN0Q29uc3RydWN0b3I6OmluZm8oKSAm
JiBraW5kID09IENvZGVGb3JDYWxsKSB7CiAgICAgICAgIGluc2VydENoZWNrcygpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaAppbmRleCA5NTQwNGYzZjkyMGRkOTlk
NjMxMTg3NWZlYjgyYTliYTM5M2IyYjY0Li4xNjZlNDE5NWE1ZjIxYWM1YjcxOTJkYjk5NzZiYjli
MjViNzI5OTQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2Ji
ZXJpemUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaApA
QCAtMTUzMSw2ICsxNTMxLDcgQEAgdm9pZCBjbG9iYmVyaXplKEdyYXBoJiBncmFwaCwgTm9kZSog
bm9kZSwgY29uc3QgUmVhZEZ1bmN0b3ImIHJlYWQsIGNvbnN0IFdyaXRlRnUKIAogICAgIGNhc2Ug
TmV3T2JqZWN0OgogICAgIGNhc2UgTmV3UmVnZXhwOgorICAgIGNhc2UgTmV3U3ltYm9sOgogICAg
IGNhc2UgTmV3U3RyaW5nT2JqZWN0OgogICAgIGNhc2UgUGhhbnRvbU5ld09iamVjdDoKICAgICBj
YXNlIE1hdGVyaWFsaXplTmV3T2JqZWN0OgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdDbG9iYmVyc0V4aXRTdGF0ZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0Nsb2JiZXJzRXhpdFN0YXRlLmNwcAppbmRleCBmYWNkYmZiNDBmNmYxZWJiZWJiNWYw
ZmVkYWQyMjFlMzBkYTBjODI2Li5mZGRkNTE4NzA4NmQ5OWMzMTg2MWY2NGM5ODMzZjBkYjQ3MTlj
NjAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJzRXhp
dFN0YXRlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJzRXhp
dFN0YXRlLmNwcApAQCAtNTgsNiArNTgsNyBAQCBib29sIGNsb2JiZXJzRXhpdFN0YXRlKEdyYXBo
JiBncmFwaCwgTm9kZSogbm9kZSkKICAgICBjYXNlIEFycmF5aWZ5OgogICAgIGNhc2UgTmV3T2Jq
ZWN0OgogICAgIGNhc2UgTmV3UmVnZXhwOgorICAgIGNhc2UgTmV3U3ltYm9sOgogICAgIGNhc2Ug
TmV3U3RyaW5nT2JqZWN0OgogICAgIGNhc2UgUGhhbnRvbU5ld09iamVjdDoKICAgICBjYXNlIE1h
dGVyaWFsaXplTmV3T2JqZWN0OgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdEb2VzR0MuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3Bw
CmluZGV4IDY0ZTJmNWVmZWNhZDY0YjMwMTNkNDE4OWUyODQ5Y2IxNTM0OThmNjkuLjgwODkzMmY5
OTNhY2ZkMDI2NzFkMmZkYTU2YWJiNDljOWZkMzg5MGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0RvZXNHQy5jcHAKQEAgLTM1MCw2ICszNTAsNyBAQCBib29sIGRvZXNHQyhHcmFwaCYg
Z3JhcGgsIE5vZGUqIG5vZGUpCiAgICAgY2FzZSBOZXdBcnJheUJ1ZmZlcjoKICAgICBjYXNlIE5l
d1JlZ2V4cDoKICAgICBjYXNlIE5ld1N0cmluZ09iamVjdDoKKyAgICBjYXNlIE5ld1N5bWJvbDoK
ICAgICBjYXNlIE1ha2VSb3BlOgogICAgIGNhc2UgTmV3RnVuY3Rpb246CiAgICAgY2FzZSBOZXdH
ZW5lcmF0b3JGdW5jdGlvbjoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHRml4dXBQaGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhh
c2UuY3BwCmluZGV4IDViMGRlMTJmYTUwNjcxODNjNmI4ODZmMTFmYzBjYjA0OTgwY2I5MWMuLjU5
M2RkZjJlMGExNmYzY2QwMjRhNzhhMTBmYjYzMTA5ZWJhZmZhZTggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcApAQCAtMTI3NCw2ICsxMjc0LDEyIEBAIGNs
YXNzIEZpeHVwUGhhc2UgOiBwdWJsaWMgUGhhc2UgewogICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgIH0KIAorICAgICAgICBjYXNlIE5ld1N5bWJvbDogeworICAgICAgICAgICAgaWYgKG5vZGUt
PmNoaWxkMSgpKQorICAgICAgICAgICAgICAgIGZpeEVkZ2U8S25vd25TdHJpbmdVc2U+KG5vZGUt
PmNoaWxkMSgpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisKICAgICAgICAgY2Fz
ZSBOZXdBcnJheVdpdGhTcHJlYWQ6IHsKICAgICAgICAgICAgIHdhdGNoSGF2aW5nQUJhZFRpbWUo
bm9kZSk7CiAgICAgICAgICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHTWF5RXhpdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR01heUV4aXQu
Y3BwCmluZGV4IDExZDkwZDFkYjFmZTM5MjA1MzA3Yzk4OWY4OTA3MzFmZDJmYTU1NTYuLjVjYmZh
ZTg2MjVjOGUwYmNmZTg3NjM0NDdiYzliZjFlNGI1NTI4NzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHTWF5RXhpdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdNYXlFeGl0LmNwcApAQCAtMTI0LDYgKzEyNCw3IEBAIEV4aXRNb2RlIG1heUV4
aXRJbXBsKEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZSwgU3RhdGVUeXBlJiBzdGF0ZSkKICAgICBj
YXNlIE5ld0FzeW5jRnVuY3Rpb246CiAgICAgY2FzZSBOZXdBc3luY0dlbmVyYXRvckZ1bmN0aW9u
OgogICAgIGNhc2UgTmV3U3RyaW5nT2JqZWN0OgorICAgIGNhc2UgTmV3U3ltYm9sOgogICAgIGNh
c2UgTmV3UmVnZXhwOgogICAgIGNhc2UgVG9OdW1iZXI6CiAgICAgY2FzZSBSZWdFeHBFeGVjTm9u
R2xvYmFsT3JTdGlja3k6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R05vZGVUeXBlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgKaW5k
ZXggNDBmNjI2NDU3NjlmMTkxZjE3YmY2YmZlMWI4MzFiMWNhYmY3N2IxOS4uMzgxN2ZiMmFhMjFm
MDdkNjFkMjE0YzM5ZDQ0Y2E3MmMwMmZiZDJmMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHTm9kZVR5cGUuaApAQCAtMzM2LDYgKzMzNiw4IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3Bh
Y2UgREZHIHsKICAgICBtYWNybyhOZXdBcnJheUJ1ZmZlciwgTm9kZVJlc3VsdEpTKSBcCiAgICAg
bWFjcm8oTmV3VHlwZWRBcnJheSwgTm9kZVJlc3VsdEpTIHwgTm9kZU11c3RHZW5lcmF0ZSkgXAog
ICAgIG1hY3JvKE5ld1JlZ2V4cCwgTm9kZVJlc3VsdEpTKSBcCisgICAgbWFjcm8oTmV3U3ltYm9s
LCBOb2RlUmVzdWx0SlMpIFwKKyAgICBtYWNybyhOZXdTdHJpbmdPYmplY3QsIE5vZGVSZXN1bHRK
UykgXAogICAgIC8qIFJlc3QgUGFyYW1ldGVyICovXAogICAgIG1hY3JvKEdldFJlc3RMZW5ndGgs
IE5vZGVSZXN1bHRJbnQzMikgXAogICAgIG1hY3JvKENyZWF0ZVJlc3QsIE5vZGVSZXN1bHRKUyB8
IE5vZGVNdXN0R2VuZXJhdGUpIFwKQEAgLTM4MCw3ICszODIsNiBAQCBuYW1lc3BhY2UgSlNDIHsg
bmFtZXNwYWNlIERGRyB7CiAgICAgbWFjcm8oQ2FsbFN0cmluZ0NvbnN0cnVjdG9yLCBOb2RlUmVz
dWx0SlMgfCBOb2RlTXVzdEdlbmVyYXRlKSBcCiAgICAgbWFjcm8oTnVtYmVyVG9TdHJpbmdXaXRo
UmFkaXgsIE5vZGVSZXN1bHRKUyB8IE5vZGVNdXN0R2VuZXJhdGUpIFwKICAgICBtYWNybyhOdW1i
ZXJUb1N0cmluZ1dpdGhWYWxpZFJhZGl4Q29uc3RhbnQsIE5vZGVSZXN1bHRKUykgXAotICAgIG1h
Y3JvKE5ld1N0cmluZ09iamVjdCwgTm9kZVJlc3VsdEpTKSBcCiAgICAgbWFjcm8oTWFrZVJvcGUs
IE5vZGVSZXN1bHRKUykgXAogICAgIG1hY3JvKEluQnlWYWwsIE5vZGVSZXN1bHRCb29sZWFuIHwg
Tm9kZU11c3RHZW5lcmF0ZSkgXAogICAgIG1hY3JvKEluQnlJZCwgTm9kZVJlc3VsdEJvb2xlYW4g
fCBOb2RlTXVzdEdlbmVyYXRlKSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR09wZXJhdGlvbnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVy
YXRpb25zLmNwcAppbmRleCBiZTk5MmFmNmY2MzhmMzk2Njg3YjIyZjg0ZDZhYTMwZjA5ZmJkODE4
Li44MWYxNmM1ZDNhOTE4NTQ1YjRhODg1ZWM3ZjgzNTJiMjcxNDI4OGZjIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAKQEAgLTIyMzAsNiArMjIzMCwyMiBA
QCBKU1N0cmluZyogSklUX09QRVJBVElPTiBvcGVyYXRpb25TaW5nbGVDaGFyYWN0ZXJTdHJpbmco
RXhlY1N0YXRlKiBleGVjLCBpbnQzMl90CiAgICAgcmV0dXJuIGpzU2luZ2xlQ2hhcmFjdGVyU3Ry
aW5nKGV4ZWMsIHN0YXRpY19jYXN0PFVDaGFyPihjaGFyYWN0ZXIpKTsKIH0KIAorU3ltYm9sKiBK
SVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5ld1N5bWJvbChFeGVjU3RhdGUqIGV4ZWMpCit7CisgICAg
Vk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKCZ2
bSwgZXhlYyk7CisKKyAgICByZXR1cm4gU3ltYm9sOjpjcmVhdGUodm0pOworfQorCitTeW1ib2wq
IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTmV3U3ltYm9sV2l0aERlc2NyaXB0aW9uKEV4ZWNTdGF0
ZSogZXhlYywgSlNTdHJpbmcqIGRlc2NyaXB0aW9uKQoreworICAgIFZNJiB2bSA9IGV4ZWMtPnZt
KCk7CisgICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcigmdm0sIGV4ZWMpOworCisgICAg
cmV0dXJuIFN5bWJvbDo6Y3JlYXRlKGV4ZWMsIGRlc2NyaXB0aW9uKTsKK30KKwogSlNDZWxsKiBK
SVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5ld1N0cmluZ09iamVjdChFeGVjU3RhdGUqIGV4ZWMsIEpT
U3RyaW5nKiBzdHJpbmcsIFN0cnVjdHVyZSogc3RydWN0dXJlKQogewogICAgIFZNJiB2bSA9IGV4
ZWMtPnZtKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJh
dGlvbnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5oCmluZGV4
IGU0NTU2MDlhMWY1OTllY2VlYTAxODZiM2Y2ZGJlYjFhNjE4YmVmNDEuLjRlMzU2MzRkYjczNDZj
YzU5N2ZjZjg3OGZlNTA3N2I3NzcyOGMyYTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHT3BlcmF0aW9ucy5oCkBAIC0yMTksNiArMjE5LDggQEAgRW5jb2RlZEpTVmFsdWUgSklUX09Q
RVJBVElPTiBvcGVyYXRpb25QYXJzZUludFN0cmluZ05vUmFkaXgoRXhlY1N0YXRlKiwgSlNTdHJp
bmcKIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uUGFyc2VJbnRTdHJpbmco
RXhlY1N0YXRlKiwgSlNTdHJpbmcqLCBpbnQzMl90KTsKIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVS
QVRJT04gb3BlcmF0aW9uUGFyc2VJbnRHZW5lcmljKEV4ZWNTdGF0ZSosIEVuY29kZWRKU1ZhbHVl
LCBpbnQzMl90KTsKIAorU3ltYm9sKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbk5ld1N5bWJvbChF
eGVjU3RhdGUqKTsKK1N5bWJvbCogSklUX09QRVJBVElPTiBvcGVyYXRpb25OZXdTeW1ib2xXaXRo
RGVzY3JpcHRpb24oRXhlY1N0YXRlKiwgSlNTdHJpbmcqKTsKIEpTQ2VsbCogSklUX09QRVJBVElP
TiBvcGVyYXRpb25OZXdTdHJpbmdPYmplY3QoRXhlY1N0YXRlKiwgSlNTdHJpbmcqLCBTdHJ1Y3R1
cmUqKTsKIEpTU3RyaW5nKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblRvU3RyaW5nT25DZWxsKEV4
ZWNTdGF0ZSosIEpTQ2VsbCopOwogSlNTdHJpbmcqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVG9T
dHJpbmcoRXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcApp
bmRleCBlODI5OWViODczYzUwNjFhYmI0YTQ1ZjBkYzFiMTdkMjM5MDI1YTMwLi43MmUxNWZhYWJl
M2MzNWQ2N2E3MjJhMWM0MDNlY2NmMmEyNDkxZjZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcApA
QCAtMTAxOSw2ICsxMDE5LDEwIEBAIGNsYXNzIFByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlIDog
cHVibGljIFBoYXNlIHsKICAgICAgICAgICAgIHNldFByZWRpY3Rpb24oU3BlY1N0cmluZ09iamVj
dCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQorICAgICAgICBjYXNlIE5ld1N5bWJv
bDogeworICAgICAgICAgICAgc2V0UHJlZGljdGlvbihTcGVjU3ltYm9sKTsKKyAgICAgICAgICAg
IGJyZWFrOworICAgICAgICB9CiAgICAgICAgICAgICAKICAgICAgICAgY2FzZSBDcmVhdGVEaXJl
Y3RBcmd1bWVudHM6IHsKICAgICAgICAgICAgIHNldFByZWRpY3Rpb24oU3BlY0RpcmVjdEFyZ3Vt
ZW50cyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4
ZWN1dGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oCmlu
ZGV4IDA3Y2YwMWYzOGViNmVmMTNhM2EyYzRkMDZmODVlNWQ3M2FhODA0YTAuLmRjNzUxZTUwYzM3
Mzg2ZmI1YWE2YjJhNDVlMzkwYjdkNWYzYzMyZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oCkBAIC0zMTUsNiArMzE1LDcgQEAgYm9vbCBzYWZlVG9F
eGVjdXRlKEFic3RyYWN0U3RhdGVUeXBlJiBzdGF0ZSwgR3JhcGgmIGdyYXBoLCBOb2RlKiBub2Rl
LCBib29sIGlnbm8KICAgICBjYXNlIE5ld0FycmF5V2l0aFNwcmVhZDoKICAgICBjYXNlIFNwcmVh
ZDoKICAgICBjYXNlIE5ld1JlZ2V4cDoKKyAgICBjYXNlIE5ld1N5bWJvbDoKICAgICBjYXNlIFBy
b2ZpbGVUeXBlOgogICAgIGNhc2UgUHJvZmlsZUNvbnRyb2xGbG93OgogICAgIGNhc2UgQ2hlY2tU
eXBlSW5mb0ZsYWdzOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdT
cGVjdWxhdGl2ZUpJVC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0
aXZlSklULmNwcAppbmRleCA0NjViZjNmYjBmZDg3YzRhMDhlNWY1ZDk2ZmE5OGYzMzM4YTRhYjYy
Li43MzhmYWE5NTY0OTNiZmY1YzNhNjhlZmNhODMxYTVmZDY1NWU0YTY2IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcApAQCAtOTY0Nyw2ICs5
NjQ3LDMxIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVOZXdTdHJpbmdPYmplY3QoTm9k
ZSogbm9kZSkKICAgICBjZWxsUmVzdWx0KHJlc3VsdEdQUiwgbm9kZSk7CiB9CiAKK3ZvaWQgU3Bl
Y3VsYXRpdmVKSVQ6OmNvbXBpbGVOZXdTeW1ib2woTm9kZSogbm9kZSkKK3sKKyAgICBpZiAoIW5v
ZGUtPmNoaWxkMSgpKSB7CisgICAgICAgIGZsdXNoUmVnaXN0ZXJzKCk7CisgICAgICAgIEdQUkZs
dXNoZWRDYWxsUmVzdWx0IHJlc3VsdCh0aGlzKTsKKyAgICAgICAgR1BSUmVnIHJlc3VsdEdQUiA9
IHJlc3VsdC5ncHIoKTsKKyAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRpb25OZXdTeW1ib2ws
IHJlc3VsdEdQUik7CisgICAgICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CisgICAgICAgIGNl
bGxSZXN1bHQocmVzdWx0R1BSLCBub2RlKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAg
IC8vIEtub3duIFN0cmluZy4KKyAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBvcGVyYW5kKHRoaXMs
IG5vZGUtPmNoaWxkMSgpKTsKKworICAgIEdQUlJlZyBzdHJpbmdHUFIgPSBvcGVyYW5kLmdwcigp
OworCisgICAgZmx1c2hSZWdpc3RlcnMoKTsKKyAgICBHUFJGbHVzaGVkQ2FsbFJlc3VsdCByZXN1
bHQodGhpcyk7CisgICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJlc3VsdC5ncHIoKTsKKyAgICBjYWxs
T3BlcmF0aW9uKG9wZXJhdGlvbk5ld1N5bWJvbFdpdGhEZXNjcmlwdGlvbiwgcmVzdWx0R1BSLCBz
dHJpbmdHUFIpOworICAgIG1faml0LmV4Y2VwdGlvbkNoZWNrKCk7CisgICAgY2VsbFJlc3VsdChy
ZXN1bHRHUFIsIG5vZGUpOworfQorCiB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlTmV3VHlw
ZWRBcnJheVdpdGhTaXplKE5vZGUqIG5vZGUpCiB7CiAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCA9IG1faml0LmdyYXBoKCkuZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1h
bnRpYyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0
aXZlSklULmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgK
aW5kZXggYTIwZTM5YTgzYWZlOGNiYjI5MjkyNzFkM2NlMjVhZmUzM2U3ZWE4Ny4uODE3N2U0YTQz
NGMxMDIxMWMzZjYxYTY1YmQ5MDY5NTkxNGY0MTQ1ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaApAQCAtMTI1Myw2ICsxMjUzLDcgQEAgY2xhc3Mg
U3BlY3VsYXRpdmVKSVQgewogICAgIHZvaWQgY29tcGlsZU51bWJlclRvU3RyaW5nV2l0aFZhbGlk
UmFkaXhDb25zdGFudChOb2RlKik7CiAgICAgdm9pZCBjb21waWxlTnVtYmVyVG9TdHJpbmdXaXRo
VmFsaWRSYWRpeENvbnN0YW50KE5vZGUqLCBpbnQzMl90IHJhZGl4KTsKICAgICB2b2lkIGNvbXBp
bGVOZXdTdHJpbmdPYmplY3QoTm9kZSopOworICAgIHZvaWQgY29tcGlsZU5ld1N5bWJvbChOb2Rl
Kik7CiAgICAgCiAgICAgdm9pZCBjb21waWxlTmV3VHlwZWRBcnJheVdpdGhTaXplKE5vZGUqKTsK
ICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRp
dmVKSVQzMl82NC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZl
SklUMzJfNjQuY3BwCmluZGV4IGJjZjdjNzI0ODhlODc2NTBhZjZiY2Y0MmFiNTdmY2MxNzMyNTg5
M2IuLjBjOTczZmNiY2Q2Zjc0MTMzMzAwZDE1OGM2NjQ0NWU0NGFiNmMwMWMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcApA
QCAtMzEwNSw2ICszMTA1LDExIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSog
bm9kZSkKICAgICAgICAgY29tcGlsZU5ld1N0cmluZ09iamVjdChub2RlKTsKICAgICAgICAgYnJl
YWs7CiAgICAgfQorCisgICAgY2FzZSBOZXdTeW1ib2w6IHsKKyAgICAgICAgY29tcGlsZU5ld1N5
bWJvbChub2RlKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQogICAgICAgICAKICAgICBjYXNlIE5l
d0FycmF5OiB7CiAgICAgICAgIGNvbXBpbGVOZXdBcnJheShub2RlKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCmluZGV4IDA2NjI3NDQ5
MDA5M2ZlYzJiMGYyZjg4NjM3MmFkYzA0MWQwNTg3ODIuLjI1MjE1ZTNlZGZkODVmMDk0MTRjMGU3
ZjExYmY1NjE5Zjk2ZDE2MDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdTcGVjdWxhdGl2ZUpJVDY0LmNwcApAQCAtMzM0Nyw2ICszMzQ3LDExIEBAIHZvaWQgU3BlY3Vs
YXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgY29tcGlsZU5ld1N0cmluZ09i
amVjdChub2RlKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQorCisgICAgY2FzZSBOZXdTeW1ib2w6
IHsKKyAgICAgICAgY29tcGlsZU5ld1N5bWJvbChub2RlKTsKKyAgICAgICAgYnJlYWs7CisgICAg
fQogICAgICAgICAKICAgICBjYXNlIE5ld0FycmF5OiB7CiAgICAgICAgIGNvbXBpbGVOZXdBcnJh
eShub2RlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3RvcmVC
YXJyaWVySW5zZXJ0aW9uUGhhc2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdT
dG9yZUJhcnJpZXJJbnNlcnRpb25QaGFzZS5jcHAKaW5kZXggNjhiMDYzZWI2ZGVhMjBlYTI0ZDVm
YWQ1MGYyMmMxMTE2ZTQzOGViZS4uNmFmNDViMDZjYjRlMzA3ZWY2MmM4MmNkOTBmMTRhYzA5MjAx
OWNjNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdG9yZUJhcnJp
ZXJJbnNlcnRpb25QaGFzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdT
dG9yZUJhcnJpZXJJbnNlcnRpb25QaGFzZS5jcHAKQEAgLTMyNSw5ICszMjUsMTAgQEAgY2xhc3Mg
U3RvcmVCYXJyaWVySW5zZXJ0aW9uUGhhc2UgOiBwdWJsaWMgUGhhc2UgewogICAgICAgICAgICAg
Y2FzZSBOZXdBcnJheUJ1ZmZlcjoKICAgICAgICAgICAgIGNhc2UgTmV3VHlwZWRBcnJheToKICAg
ICAgICAgICAgIGNhc2UgTmV3UmVnZXhwOgorICAgICAgICAgICAgY2FzZSBOZXdTdHJpbmdPYmpl
Y3Q6CisgICAgICAgICAgICBjYXNlIE5ld1N5bWJvbDoKICAgICAgICAgICAgIGNhc2UgTWF0ZXJp
YWxpemVOZXdPYmplY3Q6CiAgICAgICAgICAgICBjYXNlIE1hdGVyaWFsaXplQ3JlYXRlQWN0aXZh
dGlvbjoKLSAgICAgICAgICAgIGNhc2UgTmV3U3RyaW5nT2JqZWN0OgogICAgICAgICAgICAgY2Fz
ZSBNYWtlUm9wZToKICAgICAgICAgICAgIGNhc2UgQ3JlYXRlQWN0aXZhdGlvbjoKICAgICAgICAg
ICAgIGNhc2UgQ3JlYXRlRGlyZWN0QXJndW1lbnRzOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwCmluZGV4IDBhMzU2OWZlODg3NjU0NTc2OGJjNmM2ZTY4
OGFkMWJjNDQ4YTZhZjUuLmM5MWQxNTU3YzNmM2FmN2I1YWIzMjk0NzlkYTNkNDc2NTVkYjBmYTQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAKQEAg
LTc0LDYgKzc0LDcgQEAgaW5saW5lIENhcGFiaWxpdHlMZXZlbCBjYW5Db21waWxlKE5vZGUqIG5v
ZGUpCiAgICAgY2FzZSBHZXRCdXR0ZXJmbHk6CiAgICAgY2FzZSBOZXdPYmplY3Q6CiAgICAgY2Fz
ZSBOZXdTdHJpbmdPYmplY3Q6CisgICAgY2FzZSBOZXdTeW1ib2w6CiAgICAgY2FzZSBOZXdBcnJh
eToKICAgICBjYXNlIE5ld0FycmF5V2l0aFNwcmVhZDoKICAgICBjYXNlIFNwcmVhZDoKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAppbmRleCA3MmViOTM2
M2VkYmJlNTc1ZGJiZWRjNmNjOGQ1YTMxZjA1M2U3NDhiLi5hNDY4ODBlMDYxOGFmZTJjNDJlYjli
YTk0MzQ3ZmQzMmFkODlkMGQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRs
L0ZUTExvd2VyREZHVG9CMy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExM
b3dlckRGR1RvQjMuY3BwCkBAIC04NjksNiArODY5LDkgQEAgY2xhc3MgTG93ZXJERkdUb0IzIHsK
ICAgICAgICAgY2FzZSBOZXdTdHJpbmdPYmplY3Q6CiAgICAgICAgICAgICBjb21waWxlTmV3U3Ry
aW5nT2JqZWN0KCk7CiAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBOZXdTeW1ib2w6
CisgICAgICAgICAgICBjb21waWxlTmV3U3ltYm9sKCk7CisgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgY2FzZSBOZXdBcnJheToKICAgICAgICAgICAgIGNvbXBpbGVOZXdBcnJheSgpOwogICAg
ICAgICAgICAgYnJlYWs7CkBAIC01NTM1LDcgKzU1MzgsMTYgQEAgY2xhc3MgTG93ZXJERkdUb0Iz
IHsKICAgICAgICAgbV9vdXQuYXBwZW5kVG8oY29udGludWF0aW9uLCBsYXN0TmV4dCk7CiAgICAg
ICAgIHNldEpTVmFsdWUobV9vdXQucGhpKHBvaW50ZXJUeXBlKCksIGZhc3RSZXN1bHQsIHNsb3dS
ZXN1bHQpKTsKICAgICB9Ci0gICAgCisKKyAgICB2b2lkIGNvbXBpbGVOZXdTeW1ib2woKQorICAg
IHsKKyAgICAgICAgaWYgKCFtX25vZGUtPmNoaWxkMSgpKSB7CisgICAgICAgICAgICBzZXRKU1Zh
bHVlKHZtQ2FsbChwb2ludGVyVHlwZSgpLCBtX291dC5vcGVyYXRpb24ob3BlcmF0aW9uTmV3U3lt
Ym9sKSwgbV9jYWxsRnJhbWUpKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAg
ICAgICBzZXRKU1ZhbHVlKHZtQ2FsbChwb2ludGVyVHlwZSgpLCBtX291dC5vcGVyYXRpb24ob3Bl
cmF0aW9uTmV3U3ltYm9sV2l0aERlc2NyaXB0aW9uKSwgbV9jYWxsRnJhbWUsIGxvd1N0cmluZyht
X25vZGUtPmNoaWxkMSgpKSkpOworICAgIH0KKwogICAgIHZvaWQgY29tcGlsZU5ld0FycmF5KCkK
ICAgICB7CiAgICAgICAgIC8vIEZpcnN0IHNwZWN1bGF0ZSBhcHByb3ByaWF0ZWx5IG9uIGFsbCBv
ZiB0aGUgY2hpbGRyZW4uIERvIHRoaXMgdW5jb25kaXRpb25hbGx5IHVwIGhlcmUKZGlmZiAtLWdp
dCBhL0pTVGVzdHMvQ2hhbmdlTG9nIGIvSlNUZXN0cy9DaGFuZ2VMb2cKaW5kZXggYzZiODZjOWMy
NmQ1YjMzZjg4YmY5Y2M5OThhMDVjZWQ5MDFkMjI2NS4uMmRjZDZiZmYzODcwNDQzYTljNGMxZGEy
ZjExOGRhODdjNWJkOTdmZCAxMDA2NDQKLS0tIGEvSlNUZXN0cy9DaGFuZ2VMb2cKKysrIGIvSlNU
ZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNCBAQAorMjAxOC0xMi0xMiAgWXVzdWtlIFN1enVr
aSAgPHl1c3VrZXN1enVraUBzbG93c3RhcnQub3JnPgorCisgICAgICAgIFtERkddW0ZUTF0gQWRk
IE5ld1N5bWJvbAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTkyNjIwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiBtaWNyb2JlbmNobWFya3Mvc3ltYm9sLWNyZWF0aW9uLmpzOiBBZGRlZC4KKyAgICAgICAg
KHRlc3QpOgorICAgICAgICAqIHN0cmVzcy9zeW1ib2wtZGVzY3JpcHRpb24taWRlbnRpdHkuanM6
IEFkZGVkLgorICAgICAgICAoc2hvdWxkQmUpOgorICAgICAgICAodGVzdCk6CisgICAgICAgICog
c3RyZXNzL3N5bWJvbC1pZGVudGl0eS5qczogQWRkZWQuCisgICAgICAgIChzaG91bGRCZSk6Cisg
ICAgICAgICh0ZXN0KToKKyAgICAgICAgKiBzdHJlc3Mvc3ltYm9sLXdpdGgtZGVzY3JpcHRpb24t
dGhyb3ctZXJyb3IuanM6IEFkZGVkLgorICAgICAgICAoc2hvdWxkQmUpOgorICAgICAgICAoc2hv
dWxkVGhyb3cpOgorICAgICAgICAodGVzdCk6CisgICAgICAgIChvYmplY3QudG9TdHJpbmcpOgor
CiAyMDE4LTEyLTEwICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KIAogICAgICAgICBQ
cm9wZXJ0eUF0dHJpYnV0ZSBuZWVkcyBhIEN1c3RvbVZhbHVlIGJpdC4KZGlmZiAtLWdpdCBhL0pT
VGVzdHMvbWljcm9iZW5jaG1hcmtzL3N5bWJvbC1jcmVhdGlvbi5qcyBiL0pTVGVzdHMvbWljcm9i
ZW5jaG1hcmtzL3N5bWJvbC1jcmVhdGlvbi5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iYWYyNjBiMGIwNzY1Y2U1
NjJjZTJmMmZhY2Y1MGYyOTVkY2YyNTdkCi0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9taWNy
b2JlbmNobWFya3Mvc3ltYm9sLWNyZWF0aW9uLmpzCkBAIC0wLDAgKzEsOCBAQAorZnVuY3Rpb24g
dGVzdCgpCit7CisgICAgcmV0dXJuIFN5bWJvbCgpOworfQorbm9JbmxpbmUodGVzdCk7CisKK2Zv
ciAodmFyIGkgPSAwOyBpIDwgNGU1OyArK2kpCisgICAgdGVzdCgpOwpkaWZmIC0tZ2l0IGEvSlNU
ZXN0cy9zdHJlc3Mvc3ltYm9sLWRlc2NyaXB0aW9uLWlkZW50aXR5LmpzIGIvSlNUZXN0cy9zdHJl
c3Mvc3ltYm9sLWRlc2NyaXB0aW9uLWlkZW50aXR5LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjNmMGJlNjhmYjRi
ZDQxMTcyNDMwNDFkMTViZDQ0ZmNhYWE0ZjNkN2QKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3Rz
L3N0cmVzcy9zeW1ib2wtZGVzY3JpcHRpb24taWRlbnRpdHkuanMKQEAgLTAsMCArMSwyMSBAQAor
ZnVuY3Rpb24gc2hvdWxkQmUoYWN0dWFsLCBleHBlY3RlZCkKK3sKKyAgICBpZiAoYWN0dWFsICE9
PSBleHBlY3RlZCkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdiYWQgdmFsdWU6ICcgKyBhY3R1
YWwpOworfQorbm9JbmxpbmUoc2hvdWxkQmUpOworCitmdW5jdGlvbiB0ZXN0KGRlc2NyaXB0aW9u
KQoreworICAgIHJldHVybiBTeW1ib2woZGVzY3JpcHRpb24pOworfQorbm9JbmxpbmUodGVzdCk7
CisKK3ZhciBzZXQgPSBuZXcgU2V0OworZm9yICh2YXIgaSA9IDA7IGkgPCAxZTQ7ICsraSkgewor
ICAgIHZhciBkZXNjcmlwdGlvbiA9IFN0cmluZyhpKTsKKyAgICB2YXIgc3ltYm9sID0gdGVzdChk
ZXNjcmlwdGlvbik7CisgICAgc2V0LmFkZChzeW1ib2wpOworICAgIHNob3VsZEJlKHNldC5zaXpl
LCBpICsgMSk7CisgICAgc2hvdWxkQmUoc3ltYm9sLmRlc2NyaXB0aW9uLCBkZXNjcmlwdGlvbik7
Cit9CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9zeW1ib2wtaWRlbnRpdHkuanMgYi9KU1Rl
c3RzL3N0cmVzcy9zeW1ib2wtaWRlbnRpdHkuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTRkYThiYTViYmE4NTI0
ZjkzOTRjMzA2NGFlMDQxYzViNTMwMDYyYQotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3Ry
ZXNzL3N5bWJvbC1pZGVudGl0eS5qcwpAQCAtMCwwICsxLDIwIEBACitmdW5jdGlvbiBzaG91bGRC
ZShhY3R1YWwsIGV4cGVjdGVkKQoreworICAgIGlmIChhY3R1YWwgIT09IGV4cGVjdGVkKQorICAg
ICAgICB0aHJvdyBuZXcgRXJyb3IoJ2JhZCB2YWx1ZTogJyArIGFjdHVhbCk7Cit9Citub0lubGlu
ZShzaG91bGRCZSk7CisKK2Z1bmN0aW9uIHRlc3QoKQoreworICAgIHJldHVybiBTeW1ib2woKTsK
K30KK25vSW5saW5lKHRlc3QpOworCit2YXIgc2V0ID0gbmV3IFNldDsKK2ZvciAodmFyIGkgPSAw
OyBpIDwgMWU0OyArK2kpIHsKKyAgICB2YXIgc3ltYm9sID0gdGVzdCgpOworICAgIHNldC5hZGQo
c3ltYm9sKTsKKyAgICBzaG91bGRCZShzZXQuc2l6ZSwgaSArIDEpOworICAgIHNob3VsZEJlKHN5
bWJvbC5kZXNjcmlwdGlvbiwgdW5kZWZpbmVkKTsKK30KZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3Ry
ZXNzL3N5bWJvbC13aXRoLWRlc2NyaXB0aW9uLXRocm93LWVycm9yLmpzIGIvSlNUZXN0cy9zdHJl
c3Mvc3ltYm9sLXdpdGgtZGVzY3JpcHRpb24tdGhyb3ctZXJyb3IuanMKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDVi
MmY1MTg4M2E5NTY5Nzg4NzBkODIwOWVmNzhkMzYwYTMyMGVjMQotLS0gL2Rldi9udWxsCisrKyBi
L0pTVGVzdHMvc3RyZXNzL3N5bWJvbC13aXRoLWRlc2NyaXB0aW9uLXRocm93LWVycm9yLmpzCkBA
IC0wLDAgKzEsNTIgQEAKK2Z1bmN0aW9uIHNob3VsZEJlKGFjdHVhbCwgZXhwZWN0ZWQpCit7Cisg
ICAgaWYgKGFjdHVhbCAhPT0gZXhwZWN0ZWQpCisgICAgICAgIHRocm93IG5ldyBFcnJvcignYmFk
IHZhbHVlOiAnICsgYWN0dWFsKTsKK30KK25vSW5saW5lKHNob3VsZEJlKTsKKworZnVuY3Rpb24g
c2hvdWxkVGhyb3coZnVuYywgZXJyb3JNZXNzYWdlKSB7CisgICAgdmFyIGVycm9yVGhyb3duID0g
ZmFsc2U7CisgICAgdmFyIGVycm9yID0gbnVsbDsKKyAgICB0cnkgeworICAgICAgICBmdW5jKCk7
CisgICAgfSBjYXRjaCAoZSkgeworICAgICAgICBlcnJvclRocm93biA9IHRydWU7CisgICAgICAg
IGVycm9yID0gZTsKKyAgICB9CisgICAgaWYgKCFlcnJvclRocm93bikKKyAgICAgICAgdGhyb3cg
bmV3IEVycm9yKCdub3QgdGhyb3duJyk7CisgICAgaWYgKFN0cmluZyhlcnJvcikgIT09IGVycm9y
TWVzc2FnZSkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBiYWQgZXJyb3I6ICR7U3RyaW5nKGVy
cm9yKX1gKTsKK30KK25vSW5saW5lKHNob3VsZFRocm93KTsKKworZnVuY3Rpb24gdGVzdChkZXNj
cmlwdGlvbikKK3sKKyAgICByZXR1cm4gU3ltYm9sKGRlc2NyaXB0aW9uKTsKK30KK25vSW5saW5l
KHRlc3QpOworCit2YXIgY291bnQgPSAwOwordmFyIGZsYWcgPSBmYWxzZTsKK3ZhciBvYmplY3Qg
PSB7CisgICAgdG9TdHJpbmcoKQorICAgIHsKKyAgICAgICAgY291bnQrKzsKKyAgICAgICAgaWYg
KGZsYWcpIHsKKyAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigib3V0Iik7CisgICAgICAgIH0K
KyAgICAgICAgcmV0dXJuICJDb2NvYSI7CisgICAgfQorfTsKKworZm9yICh2YXIgaSA9IDA7IGkg
PCAxZTQ7ICsraSkgeworICAgIHNob3VsZEJlKHRlc3Qob2JqZWN0KS5kZXNjcmlwdGlvbiwgIkNv
Y29hIik7CisgICAgc2hvdWxkQmUoY291bnQsIGkgKyAxKTsKK30KK2ZsYWcgPSB0cnVlOworCitz
aG91bGRUaHJvdygoKSA9PiB7CisgICAgc2hvdWxkQmUodGVzdChvYmplY3QpLmRlc2NyaXB0aW9u
LCAiQ29jb2EiKTsKKyAgICBzaG91bGRCZShjb3VudCwgMWU0ICsgMSk7Cit9LCBgRXJyb3I6IG91
dGApOwo=
</data>
<flag name="review"
          id="374033"
          type_id="1"
          status="+"
          setter="saam"
    />
          </attachment>
      

    </bug>

</bugzilla>