<?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>142080</bug_id>
          
          <creation_ts>2015-02-27 02:25:16 -0800</creation_ts>
          <short_desc>Implement ES6 StringIterator</short_desc>
          <delta_ts>2015-03-05 10:27:57 -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>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>141351</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Yusuke Suzuki">ysuzuki</reporter>
          <assigned_to name="Yusuke Suzuki">ysuzuki</assigned_to>
          <cc>barraclough</cc>
    
    <cc>benjamin</cc>
    
    <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>fpizlo</cc>
    
    <cc>ggaren</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1072676</commentid>
    <comment_count>0</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-02-27 02:25:16 -0800</bug_when>
    <thetext>Implement ES6 StringIterator</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1072683</commentid>
    <comment_count>1</comment_count>
      <attachid>247507</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-02-27 03:40:12 -0800</bug_when>
    <thetext>Created attachment 247507
rev1 prototype

prototype. not including build configuration for OSX and Windows yet. And this patch requires https://bugs.webkit.org/show_bug.cgi?id=141351 change.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1072706</commentid>
    <comment_count>2</comment_count>
      <attachid>247516</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-02-27 09:14:27 -0800</bug_when>
    <thetext>Created attachment 247516
prototype rev2

Update for Windows / OSX build</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1073276</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-03-02 04:07:08 -0800</bug_when>
    <thetext>Attachment 247516 did not pass style-queue:


ERROR: Source/JavaScriptCore/runtime/StringIteratorPrototype.cpp:42:  Alphabetical sorting problem.  [build/include_order] [4]
Total errors found: 1 in 18 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1073701</commentid>
    <comment_count>4</comment_count>
      <attachid>247767</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-03-03 10:15:01 -0800</bug_when>
    <thetext>Created attachment 247767
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1074364</commentid>
    <comment_count>5</comment_count>
      <attachid>247767</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-03-04 20:10:56 -0800</bug_when>
    <thetext>Comment on attachment 247767
Patch

LGTM.  I can r+ once you&apos;re ready.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1074513</commentid>
    <comment_count>6</comment_count>
      <attachid>247952</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-03-05 08:39:01 -0800</bug_when>
    <thetext>Created attachment 247952
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1074515</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-03-05 08:41:02 -0800</bug_when>
    <thetext>Attachment 247952 did not pass style-queue:


ERROR: Source/JavaScriptCore/runtime/StringIteratorPrototype.cpp:42:  Alphabetical sorting problem.  [build/include_order] [4]
Total errors found: 1 in 18 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1074519</commentid>
    <comment_count>8</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-03-05 08:42:40 -0800</bug_when>
    <thetext>(In reply to comment #5)
&gt; Comment on attachment 247767 [details]
&gt; Patch
&gt; 
&gt; LGTM.  I can r+ once you&apos;re ready.

Great! I&apos;ve landed https://trac.webkit.org/changeset/181077, rebased my patch and marked r? :D</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1074549</commentid>
    <comment_count>9</comment_count>
      <attachid>247952</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-03-05 09:41:49 -0800</bug_when>
    <thetext>Comment on attachment 247952
Patch

Thank you!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1074570</commentid>
    <comment_count>10</comment_count>
      <attachid>247952</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-03-05 10:27:52 -0800</bug_when>
    <thetext>Comment on attachment 247952
Patch

Clearing flags on attachment: 247952

Committed r181084: &lt;http://trac.webkit.org/changeset/181084&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1074571</commentid>
    <comment_count>11</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-03-05 10:27:57 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>247507</attachid>
            <date>2015-02-27 03:40:12 -0800</date>
            <delta_ts>2015-02-27 09:14:22 -0800</delta_ts>
            <desc>rev1 prototype</desc>
            <filename>bug-142080-20150227203957.patch</filename>
            <type>text/plain</type>
            <size>34299</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTgwNzMyCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA5
N2UyMWFjNjRlNTJhN2E3YjQzZjU0OWYzNzRiNDc0YjY3MDkxNzIzLi4zZDRiZTA5NWM4NWMzM2Nh
NTZhMDMzYjA5MDcyNDllMGU3M2YyMWIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw0OSBAQAorMjAxNS0wMi0yNyAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KKworICAgICAgICBJbXBsZW1lbnQgRVM2IFN0cmluZ0l0ZXJhdG9yCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDIwODAKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIGludHJvZHVj
ZXMgRVM2IFN0cmluZyBJdGVyYXRvci4KKyAgICAgICAgSXQgZW51bWVyYXRlcyBjb2RlIHBvaW50
cyBpbnN0ZWFkIG9mIGVsZW1lbnRzIGluIFN0cmluZy4KKyAgICAgICAgU28gc3Vycm9nYXRlIHBh
aXJzIHNob3VsZCBiZSBoYW5kbGVkIGNvcnJlY3RseS4KKworICAgICAgICAqIENNYWtlTGlzdHMu
dHh0OgorICAgICAgICAqIERlcml2ZWRTb3VyY2VzLm1ha2U6CisgICAgICAgICogYnVpbHRpbnMv
U3RyaW5nSXRlcmF0b3IucHJvdG90eXBlLmpzOiBBZGRlZC4KKyAgICAgICAgKG5leHQpOgorICAg
ICAgICAqIHJ1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuaDoKKyAgICAgICAgKiBydW50aW1lL0pT
R2xvYmFsT2JqZWN0LmNwcDoKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0Lmg6Cisg
ICAgICAgICogcnVudGltZS9KU1N0cmluZ0l0ZXJhdG9yLmNwcDogQWRkZWQuCisgICAgICAgIChK
U0M6OkpTU3RyaW5nSXRlcmF0b3I6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKiBydW50aW1l
L0pTU3RyaW5nSXRlcmF0b3IuaDogQWRkZWQuCisgICAgICAgIChKU0M6OkpTU3RyaW5nSXRlcmF0
b3I6OmNyZWF0ZVN0cnVjdHVyZSk6CisgICAgICAgIChKU0M6OkpTU3RyaW5nSXRlcmF0b3I6OmNy
ZWF0ZSk6CisgICAgICAgIChKU0M6OkpTU3RyaW5nSXRlcmF0b3I6OkpTU3RyaW5nSXRlcmF0b3Ip
OgorICAgICAgICAqIHJ1bnRpbWUvU3RyaW5nSXRlcmF0b3JDb25zdHJ1Y3Rvci5jcHA6IEFkZGVk
LgorICAgICAgICAoSlNDOjpTdHJpbmdJdGVyYXRvckNvbnN0cnVjdG9yOjpmaW5pc2hDcmVhdGlv
bik6CisgICAgICAgICogcnVudGltZS9TdHJpbmdJdGVyYXRvckNvbnN0cnVjdG9yLmg6IEFkZGVk
LgorICAgICAgICAoSlNDOjpTdHJpbmdJdGVyYXRvckNvbnN0cnVjdG9yOjpjcmVhdGUpOgorICAg
ICAgICAoSlNDOjpTdHJpbmdJdGVyYXRvckNvbnN0cnVjdG9yOjpjcmVhdGVTdHJ1Y3R1cmUpOgor
ICAgICAgICAoSlNDOjpTdHJpbmdJdGVyYXRvckNvbnN0cnVjdG9yOjpTdHJpbmdJdGVyYXRvckNv
bnN0cnVjdG9yKToKKyAgICAgICAgKiBydW50aW1lL1N0cmluZ0l0ZXJhdG9yUHJvdG90eXBlLmNw
cDogQWRkZWQuCisgICAgICAgIChKU0M6OlN0cmluZ0l0ZXJhdG9yUHJvdG90eXBlOjpmaW5pc2hD
cmVhdGlvbik6CisgICAgICAgIChKU0M6OlN0cmluZ0l0ZXJhdG9yUHJvdG90eXBlOjpnZXRPd25Q
cm9wZXJ0eVNsb3QpOgorICAgICAgICAoSlNDOjpzdHJpbmdJdGVyYXRvclByb3RvdHlwZUl0ZXJh
dG9yKToKKyAgICAgICAgKiBydW50aW1lL1N0cmluZ0l0ZXJhdG9yUHJvdG90eXBlLmg6IEFkZGVk
LgorICAgICAgICAoSlNDOjpTdHJpbmdJdGVyYXRvclByb3RvdHlwZTo6Y3JlYXRlKToKKyAgICAg
ICAgKEpTQzo6U3RyaW5nSXRlcmF0b3JQcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZSk6CisgICAg
ICAgIChKU0M6OlN0cmluZ0l0ZXJhdG9yUHJvdG90eXBlOjpTdHJpbmdJdGVyYXRvclByb3RvdHlw
ZSk6CisgICAgICAgICogcnVudGltZS9TdHJpbmdQcm90b3R5cGUuY3BwOgorICAgICAgICAoSlND
OjpTdHJpbmdQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKEpTQzo6c3RyaW5n
UHJvdG9GdW5jSXRlcmF0b3IpOgorICAgICAgICAqIHRlc3RzL3N0cmVzcy9zdHJpbmctaXRlcmF0
b3JzLmpzOiBBZGRlZC4KKyAgICAgICAgKHRlc3RTdXJyb2dhdGVQYWlyKToKKyAgICAgICAgKGlu
Y3JlbWVudCk6CisgICAgICAgIChmb3IpOgorCiAyMDE1LTAyLTI2ICBGaWxpcCBQaXpsbyAgPGZw
aXpsb0BhcHBsZS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbCBvdXQgcjE4MDcyMy4g
SXQgYnJva2UgYSBidW5jaCBvZiB0ZXN0cy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4
dAppbmRleCBmOWNiZGRjY2ZmZmVhYTMwMDIxNDkwYWExZjc5OWI1NjRlMjAxYWQ0Li5mZTA2Y2M2
NjdlMGM5NWUzYmI0MWE4MTczNjU2MWI4N2JiMDUyYWU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NN
YWtlTGlzdHMudHh0CkBAIC00OTQsNiArNDk0LDcgQEAgc2V0KEphdmFTY3JpcHRDb3JlX1JVTlRJ
TUVfU09VUkNFUwogICAgIHJ1bnRpbWUvSlNTZXQuY3BwCiAgICAgcnVudGltZS9KU1NldEl0ZXJh
dG9yLmNwcAogICAgIHJ1bnRpbWUvSlNTdHJpbmcuY3BwCisgICAgcnVudGltZS9KU1N0cmluZ0l0
ZXJhdG9yLmNwcAogICAgIHJ1bnRpbWUvSlNTdHJpbmdKb2luZXIuY3BwCiAgICAgcnVudGltZS9K
U1N5bWJvbFRhYmxlT2JqZWN0LmNwcAogICAgIHJ1bnRpbWUvSlNUeXBlZEFycmF5Q29uc3RydWN0
b3JzLmNwcApAQCAtNTQ1LDYgKzU0Niw4IEBAIHNldChKYXZhU2NyaXB0Q29yZV9SVU5USU1FX1NP
VVJDRVMKICAgICBydW50aW1lL1NwYXJzZUFycmF5VmFsdWVNYXAuY3BwCiAgICAgcnVudGltZS9T
dHJpY3RFdmFsQWN0aXZhdGlvbi5jcHAKICAgICBydW50aW1lL1N0cmluZ0NvbnN0cnVjdG9yLmNw
cAorICAgIHJ1bnRpbWUvU3RyaW5nSXRlcmF0b3JDb25zdHJ1Y3Rvci5jcHAKKyAgICBydW50aW1l
L1N0cmluZ0l0ZXJhdG9yUHJvdG90eXBlLmNwcAogICAgIHJ1bnRpbWUvU3RyaW5nT2JqZWN0LmNw
cAogICAgIHJ1bnRpbWUvU3RyaW5nUHJvdG90eXBlLmNwcAogICAgIHJ1bnRpbWUvU3RyaW5nUmVj
dXJzaW9uQ2hlY2tlci5jcHAKQEAgLTU5Niw2ICs1OTksNyBAQCBzZXQoSmF2YVNjcmlwdENvcmVf
TFVUX0ZJTEVTCiAgICAgcnVudGltZS9SZWdFeHBPYmplY3QuY3BwCiAgICAgcnVudGltZS9SZWdF
eHBQcm90b3R5cGUuY3BwCiAgICAgcnVudGltZS9TdHJpbmdDb25zdHJ1Y3Rvci5jcHAKKyAgICBy
dW50aW1lL1N0cmluZ0l0ZXJhdG9yUHJvdG90eXBlLmNwcAogICAgIHJ1bnRpbWUvU3ltYm9sUHJv
dG90eXBlLmNwcAogKQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZl
ZFNvdXJjZXMubWFrZSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9EZXJpdmVkU291cmNlcy5tYWtl
CmluZGV4IDRhMjYyM2VmNWM5Yzc1NmQ1ZGE1NDdmMWQzZDY1Y2VhOWExNzY5NWEuLjQwNjE5MWQ2
MzhjMzgwOTM1NDhhNzM3NjVlY2JkNTdlMGQwYjk0ODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9EZXJpdmVkU291cmNlcy5tYWtlCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9EZXJpdmVkU291cmNlcy5tYWtlCkBAIC01Niw2ICs1Niw3IEBAIGFsbCA6IFwKICAgICBSZWdF
eHBKaXRUYWJsZXMuaCBcCiAgICAgUmVnRXhwT2JqZWN0Lmx1dC5oIFwKICAgICBTdHJpbmdDb25z
dHJ1Y3Rvci5sdXQuaCBcCisgICAgU3RyaW5nSXRlcmF0b3JQcm90b3R5cGUubHV0LmggXAogICAg
IFN5bWJvbFByb3RvdHlwZS5sdXQuaCBcCiAgICAgdWRpczg2X2l0YWIuaCBcCiAgICAgQnl0ZWNv
ZGVzLmggXApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL1N0cmlu
Z0l0ZXJhdG9yLnByb3RvdHlwZS5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9T
dHJpbmdJdGVyYXRvci5wcm90b3R5cGUuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODAyODljNjYxMGI4YWY4NzQw
M2E3NWZhNzdmNGM0NDM0NDFlNThlNAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9idWlsdGlucy9TdHJpbmdJdGVyYXRvci5wcm90b3R5cGUuanMKQEAgLTAsMCArMSw3
MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBZdXN1a2UgU3V6dWtpIDx1dGF0YW5lLnRl
YUBnbWFpbC5jb20+LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CitmdW5jdGlvbiBuZXh0KCkgeworICAgICJ1c2Ugc3RyaWN0IjsKKworICAgIGlmICh0aGlzID09
IG51bGwgfHwgKHR5cGVvZiB0aGlzICE9PSAib2JqZWN0IiAmJiB0eXBlb2YgdGhpcyAhPT0gImZ1
bmN0aW9uIikpCisgICAgICAgIHRocm93IG5ldyBAVHlwZUVycm9yKCIlU3RyaW5nSXRlcmF0b3JQ
cm90b3R5cGUlLm5leHQgcmVxdWlyZXMgdGhhdCB8dGhpc3wgYmUgT2JqZWN0Iik7CisKKyAgICB2
YXIgcG9zaXRpb24gPSB0aGlzLkBzdHJpbmdJdGVyYXRvck5leHRJbmRleDsKKyAgICBpZiAocG9z
aXRpb24gPT09IHVuZGVmaW5lZCkKKyAgICAgICAgdGhyb3cgbmV3IEBUeXBlRXJyb3IoIiVTdHJp
bmdJdGVyYXRvclByb3RvdHlwZSUubmV4dCByZXF1aXJlcyB0aGF0IHx0aGlzfCBiZSBTdHJpbmcg
SXRlcmF0b3IgSW5zdGFuY2UiKTsKKworICAgIHZhciBzdHJpbmcgPSB0aGlzLkBpdGVyYXRlZFN0
cmluZzsKKyAgICBpZiAoc3RyaW5nID09PSB1bmRlZmluZWQpIHsKKyAgICAgICAgcmV0dXJuIHsK
KyAgICAgICAgICAgIHZhbHVlOiB1bmRlZmluZWQsCisgICAgICAgICAgICBkb25lOiB0cnVlCisg
ICAgICAgIH07CisgICAgfQorCisgICAgdmFyIGxlbmd0aCA9IHN0cmluZy5sZW5ndGggPj4+IDA7
CisgICAgaWYgKHBvc2l0aW9uID49IGxlbmd0aCkgeworICAgICAgICB0aGlzLkBpdGVyYXRlZFN0
cmluZyA9IHVuZGVmaW5lZDsKKyAgICAgICAgcmV0dXJuIHsKKyAgICAgICAgICAgIHZhbHVlOiB1
bmRlZmluZWQsCisgICAgICAgICAgICBkb25lOiB0cnVlCisgICAgICAgIH07CisgICAgfTsKKwor
ICAgIHZhciBmaXJzdCA9IHN0cmluZy5AY2hhckNvZGVBdChwb3NpdGlvbik7CisgICAgdmFyIHJl
c3VsdFN0cmluZzsKKyAgICBpZiAoZmlyc3QgPCAweEQ4MDAgfHwgZmlyc3QgPiAweERCRkYgfHwg
cG9zaXRpb24gKyAxID09PSBsZW5ndGgpCisgICAgICAgIHJlc3VsdFN0cmluZyA9IHN0cmluZ1tw
b3NpdGlvbl07CisgICAgZWxzZSB7CisgICAgICAgIHZhciBzZWNvbmQgPSBzdHJpbmcuQGNoYXJD
b2RlQXQocG9zaXRpb24gKyAxKTsKKyAgICAgICAgaWYgKHNlY29uZCA8IDB4REMwMCB8fCBzZWNv
bmQgPiAweERGRkYpCisgICAgICAgICAgICByZXN1bHRTdHJpbmcgPSBzdHJpbmdbcG9zaXRpb25d
OworICAgICAgICBlbHNlCisgICAgICAgICAgICByZXN1bHRTdHJpbmcgPSBzdHJpbmdbcG9zaXRp
b25dICsgc3RyaW5nW3Bvc2l0aW9uICsgMV07CisgICAgfQorCisgICAgdmFyIHJlc3VsdFNpemUg
PSByZXN1bHRTdHJpbmcubGVuZ3RoOworICAgIHRoaXMuQHN0cmluZ0l0ZXJhdG9yTmV4dEluZGV4
ID0gcG9zaXRpb24gKyByZXN1bHRTaXplOworCisgICAgcmV0dXJuIHsKKyAgICAgICAgdmFsdWU6
IHJlc3VsdFN0cmluZywKKyAgICAgICAgZG9uZTogZmFsc2UKKyAgICB9OworfQpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmgKaW5kZXggZjEx
MTc3M2YxMDU1NzQ5ODFlOTY4NzdjNDc5M2U0ZTk1YWRiNTg1OC4uMTQ3NzI0YzY0ZDQ4NjI4ZjNh
MDNkZWZjMjA4Zjk3YWE4ZmE4ZDBmZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9Db21tb25JZGVudGlmaWVycy5oCkBAIC0yMzUsNiArMjM1LDkgQEAKIAogI2RlZmlu
ZSBKU0NfQ09NTU9OX1BSSVZBVEVfSURFTlRJRklFUlNfRUFDSF9QUk9QRVJUWV9OQU1FKG1hY3Jv
KSBcCiAgICAgSlNDX0NPTU1PTl9QUklWQVRFX0lERU5USUZJRVJTX0VBQ0hfV0VMTF9LTk9XTl9T
WU1CT0wobWFjcm8pIFwKKyAgICBtYWNybyhjaGFyQ29kZUF0KSBcCisgICAgbWFjcm8oaXRlcmF0
ZWRTdHJpbmcpIFwKKyAgICBtYWNybyhzdHJpbmdJdGVyYXRvck5leHRJbmRleCkgXAogICAgIG1h
Y3JvKGl0ZXJhdG9yTmV4dCkgXAogICAgIG1hY3JvKHJlc29sdmUpIFwKICAgICBtYWNybyhyZWpl
Y3QpIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFs
T2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0
LmNwcAppbmRleCA2YmE5MjJmNzUwMTMxOTgzYzVlYzExOWQ4NzkzNzI3MjQzMDc5NmEwLi5hN2Iz
NmYxMTI2ZTljODUwY2Q0ZjExYjZiZGQxNzdkZTJjYWU4YWFiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCkBAIC04Miw2ICs4Miw3IEBA
CiAjaW5jbHVkZSAiSlNPTk9iamVjdC5oIgogI2luY2x1ZGUgIkpTU2V0LmgiCiAjaW5jbHVkZSAi
SlNTZXRJdGVyYXRvci5oIgorI2luY2x1ZGUgIkpTU3RyaW5nSXRlcmF0b3IuaCIKICNpbmNsdWRl
ICJKU1R5cGVkQXJyYXlDb25zdHJ1Y3RvcnMuaCIKICNpbmNsdWRlICJKU1R5cGVkQXJyYXlQcm90
b3R5cGVzLmgiCiAjaW5jbHVkZSAiSlNUeXBlZEFycmF5cy5oIgpAQCAtMTE1LDYgKzExNiw4IEBA
CiAjaW5jbHVkZSAiU2V0UHJvdG90eXBlLmgiCiAjaW5jbHVkZSAiU3RyaWN0RXZhbEFjdGl2YXRp
b24uaCIKICNpbmNsdWRlICJTdHJpbmdDb25zdHJ1Y3Rvci5oIgorI2luY2x1ZGUgIlN0cmluZ0l0
ZXJhdG9yQ29uc3RydWN0b3IuaCIKKyNpbmNsdWRlICJTdHJpbmdJdGVyYXRvclByb3RvdHlwZS5o
IgogI2luY2x1ZGUgIlN0cmluZ1Byb3RvdHlwZS5oIgogI2luY2x1ZGUgIlN5bWJvbC5oIgogI2lu
Y2x1ZGUgIlN5bWJvbENvbnN0cnVjdG9yLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNHbG9iYWxPYmplY3QuaAppbmRleCA0MWFhZjk2M2Q3ZDRjNzFiOGE3NjlmZDA0MTE2
ZTBhOWM1OTkzYTlhLi5hZTJhZTFjNmM4ZmZiMThiOTk3MTNlMjI0NTZkM2ExMzJhYjA2ZWJmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKQEAg
LTEwOSw2ICsxMDksNyBAQAogICAgIERFRklORV9TVEFOREFSRF9CVUlMVElOKG1hY3JvLCBBcmd1
bWVudHNJdGVyYXRvciwgYXJndW1lbnRzSXRlcmF0b3IpIFwKICAgICBERUZJTkVfU1RBTkRBUkRf
QlVJTFRJTihtYWNybywgTWFwSXRlcmF0b3IsIG1hcEl0ZXJhdG9yKSBcCiAgICAgREVGSU5FX1NU
QU5EQVJEX0JVSUxUSU4obWFjcm8sIFNldEl0ZXJhdG9yLCBzZXRJdGVyYXRvcikgXAorICAgIERF
RklORV9TVEFOREFSRF9CVUlMVElOKG1hY3JvLCBTdHJpbmdJdGVyYXRvciwgc3RyaW5nSXRlcmF0
b3IpIFwKIAogCiAjZGVmaW5lIERFQ0xBUkVfU0lNUExFX0JVSUxUSU5fVFlQRShjYXBpdGFsTmFt
ZSwgbG93ZXJOYW1lLCBwcm9wZXJOYW1lLCBpbnN0YW5jZVR5cGUsIGpzTmFtZSkgXApkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmdJdGVyYXRvci5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0cmluZ0l0ZXJhdG9yLmNwcApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5kOTY3Y2U3MzM1OWRiODQ5YTczZDMzODJhNTYzZjAyODlhNTlkOWRmCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmdJdGVyYXRv
ci5jcHAKQEAgLTAsMCArMSw0NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBZdXN1a2Ug
U3V6dWtpIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiSlNTdHJp
bmdJdGVyYXRvci5oIgorCisjaW5jbHVkZSAiSlNDSlNWYWx1ZUlubGluZXMuaCIKKyNpbmNsdWRl
ICJKU0NlbGxJbmxpbmVzLmgiCisjaW5jbHVkZSAiU3RydWN0dXJlSW5saW5lcy5oIgorCituYW1l
c3BhY2UgSlNDIHsKKworY29uc3QgQ2xhc3NJbmZvIEpTU3RyaW5nSXRlcmF0b3I6OnNfaW5mbyA9
IHsgIlN0cmluZ0l0ZXJhdG9yIiwgJkJhc2U6OnNfaW5mbywgMCwgQ1JFQVRFX01FVEhPRF9UQUJM
RShKU1N0cmluZ0l0ZXJhdG9yKSB9OworCit2b2lkIEpTU3RyaW5nSXRlcmF0b3I6OmZpbmlzaENy
ZWF0aW9uKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqLCBKU1N0cmluZyogaXRlcmF0ZWRTdHJpbmcp
Cit7CisgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0pOworICAgIEFTU0VSVChpbmhlcml0cyhp
bmZvKCkpKTsKKyAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPml0ZXJhdGVkU3Ry
aW5nUHJpdmF0ZU5hbWUsIGl0ZXJhdGVkU3RyaW5nKTsKKyAgICBwdXREaXJlY3Qodm0sIHZtLnBy
b3BlcnR5TmFtZXMtPnN0cmluZ0l0ZXJhdG9yTmV4dEluZGV4UHJpdmF0ZU5hbWUsIGpzTnVtYmVy
KDApKTsKK30KKworfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU1N0cmluZ0l0ZXJhdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU1N0cmluZ0l0ZXJhdG9yLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMWRlMGM4YTM1MjFlNjNm
YTY1YmEzMjM1YzFlYmNlNWNlZGExYmFhMwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5nSXRlcmF0b3IuaApAQCAtMCwwICsxLDYzIEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDE1IFl1c3VrZSBTdXp1a2kgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4uCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgor
ICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5k
ZWYgSlNTdHJpbmdJdGVyYXRvcl9oCisjZGVmaW5lIEpTU3RyaW5nSXRlcmF0b3JfaAorCisjaW5j
bHVkZSAiSlNPYmplY3QuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIEpTU3RyaW5nSXRl
cmF0b3IgOiBwdWJsaWMgSlNOb25GaW5hbE9iamVjdCB7CitwdWJsaWM6CisgICAgdHlwZWRlZiBK
U05vbkZpbmFsT2JqZWN0IEJhc2U7CisKKyAgICBERUNMQVJFX0VYUE9SVF9JTkZPOworCisgICAg
c3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5cGUpCisgICAgeworICAgICAgICByZXR1cm4g
U3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBUeXBlSW5mbyhP
YmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7CisgICAgfQorCisgICAgc3RhdGlj
IEpTU3RyaW5nSXRlcmF0b3IqIGNyZWF0ZShFeGVjU3RhdGUqIGV4ZWMsIFN0cnVjdHVyZSogc3Ry
dWN0dXJlLCBKU1N0cmluZyogaXRlcmF0ZWRTdHJpbmcpCisgICAgeworICAgICAgICBWTSYgdm0g
PSBleGVjLT52bSgpOworICAgICAgICBKU1N0cmluZ0l0ZXJhdG9yKiBpbnN0YW5jZSA9IG5ldyAo
Tm90TnVsbCwgYWxsb2NhdGVDZWxsPEpTU3RyaW5nSXRlcmF0b3I+KHZtLmhlYXApKSBKU1N0cmlu
Z0l0ZXJhdG9yKHZtLCBzdHJ1Y3R1cmUpOworICAgICAgICBpbnN0YW5jZS0+ZmluaXNoQ3JlYXRp
b24odm0sIHN0cnVjdHVyZS0+Z2xvYmFsT2JqZWN0KCksIGl0ZXJhdGVkU3RyaW5nKTsKKyAgICAg
ICAgcmV0dXJuIGluc3RhbmNlOworICAgIH0KKworcHJpdmF0ZToKKyAgICBKU1N0cmluZ0l0ZXJh
dG9yKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCisgICAgICAgIDogQmFzZSh2bSwgc3Ry
dWN0dXJlKQorICAgIHsKKyAgICB9CisKKyAgICB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJiwgSlNH
bG9iYWxPYmplY3QqLCBKU1N0cmluZyogaXRlcmF0ZWRTdHJpbmcpOworfTsKKworfQorCisjZW5k
aWYgLy8gIWRlZmluZWQoSlNTdHJpbmdJdGVyYXRvcl9oKQpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nSXRlcmF0b3JDb25zdHJ1Y3Rvci5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdJdGVyYXRvckNvbnN0cnVjdG9yLmNwcApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi40OWFiNzA2NTNlNzNlZGI5ZmMwZTY3NWExMzYwMGE1YTk1MzZlMmU0Ci0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nSXRlcmF0
b3JDb25zdHJ1Y3Rvci5jcHAKQEAgLTAsMCArMSw0MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxMyBBcHBsZSwgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQor
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAi
U3RyaW5nSXRlcmF0b3JDb25zdHJ1Y3Rvci5oIgorCisjaW5jbHVkZSAiSlNDSlNWYWx1ZUlubGlu
ZXMuaCIKKyNpbmNsdWRlICJKU0NlbGxJbmxpbmVzLmgiCisjaW5jbHVkZSAiSlNHbG9iYWxPYmpl
Y3QuaCIKKyNpbmNsdWRlICJTdHJ1Y3R1cmVJbmxpbmVzLmgiCisKK25hbWVzcGFjZSBKU0Mgewor
Citjb25zdCBDbGFzc0luZm8gU3RyaW5nSXRlcmF0b3JDb25zdHJ1Y3Rvcjo6c19pbmZvID0geyAi
RnVuY3Rpb24iLCAmQmFzZTo6c19pbmZvLCAwLCBDUkVBVEVfTUVUSE9EX1RBQkxFKFN0cmluZ0l0
ZXJhdG9yQ29uc3RydWN0b3IpIH07CisKK3ZvaWQgU3RyaW5nSXRlcmF0b3JDb25zdHJ1Y3Rvcjo6
ZmluaXNoQ3JlYXRpb24oVk0mIHZtKQoreworICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtKTsK
K30KKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5n
SXRlcmF0b3JDb25zdHJ1Y3Rvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3Ry
aW5nSXRlcmF0b3JDb25zdHJ1Y3Rvci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjYyNDEzNjFiNjc2ZTI5MTVkZjBm
NWQyMTdhYTQ4Nzk2MDQyMjllNjAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9TdHJpbmdJdGVyYXRvckNvbnN0cnVjdG9yLmgKQEAgLTAsMCArMSw2MyBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSwgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAq
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
CisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVm
IFN0cmluZ0l0ZXJhdG9yQ29uc3RydWN0b3JfaAorI2RlZmluZSBTdHJpbmdJdGVyYXRvckNvbnN0
cnVjdG9yX2gKKworI2luY2x1ZGUgIkludGVybmFsRnVuY3Rpb24uaCIKKworbmFtZXNwYWNlIEpT
QyB7CisKK2NsYXNzIFN0cmluZ0l0ZXJhdG9yUHJvdG90eXBlOworCitjbGFzcyBTdHJpbmdJdGVy
YXRvckNvbnN0cnVjdG9yIDogcHVibGljIEpTTm9uRmluYWxPYmplY3QgeworcHVibGljOgorICAg
IHR5cGVkZWYgSlNOb25GaW5hbE9iamVjdCBCYXNlOworCisgICAgc3RhdGljIFN0cmluZ0l0ZXJh
dG9yQ29uc3RydWN0b3IqIGNyZWF0ZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBTdHJp
bmdJdGVyYXRvclByb3RvdHlwZSopCisgICAgeworICAgICAgICBTdHJpbmdJdGVyYXRvckNvbnN0
cnVjdG9yKiBjb25zdHJ1Y3RvciA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPFN0cmluZ0l0
ZXJhdG9yQ29uc3RydWN0b3I+KHZtLmhlYXApKSBTdHJpbmdJdGVyYXRvckNvbnN0cnVjdG9yKHZt
LCBzdHJ1Y3R1cmUpOworICAgICAgICBjb25zdHJ1Y3Rvci0+ZmluaXNoQ3JlYXRpb24odm0pOwor
ICAgICAgICByZXR1cm4gY29uc3RydWN0b3I7CisgICAgfQorCisgICAgREVDTEFSRV9JTkZPOwor
CisgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5cGUpCisgICAgeworICAgICAgICBy
ZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBUeXBl
SW5mbyhPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7CisgICAgfQorCitwcml2
YXRlOgorICAgIFN0cmluZ0l0ZXJhdG9yQ29uc3RydWN0b3IoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSkKKyAgICAgICAgOiBCYXNlKHZtLCBzdHJ1Y3R1cmUpCisgICAgeworICAgIH0KKyAg
ICB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJik7Cit9OworCit9CisKKyNlbmRpZiAvLyAhZGVmaW5l
ZChTdHJpbmdJdGVyYXRvckNvbnN0cnVjdG9yX2gpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9TdHJpbmdJdGVyYXRvclByb3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdJdGVyYXRvclByb3RvdHlwZS5jcHAKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNTNlMGNjYjMxNDRmMzk1OTZlNjQ1NWVhN2IzMmY3NTcwYmJmMWFkYgotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ0l0ZXJhdG9yUHJvdG90
eXBlLmNwcApAQCAtMCwwICsxLDc0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxl
LCBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgWXVzdWtl
IFN1enVraSA8dXRhdGFuZS50ZWFAZ21haWwuY29tPi4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlN0cmlu
Z0l0ZXJhdG9yUHJvdG90eXBlLmgiCisKKyNpbmNsdWRlICJKU0NKU1ZhbHVlSW5saW5lcy5oIgor
I2luY2x1ZGUgIkpTQ2VsbElubGluZXMuaCIKKyNpbmNsdWRlICJKU0dsb2JhbE9iamVjdC5oIgor
I2luY2x1ZGUgIkpTU3RyaW5nSXRlcmF0b3IuaCIKKyNpbmNsdWRlICJPYmplY3RDb25zdHJ1Y3Rv
ci5oIgorI2luY2x1ZGUgIlN0cnVjdHVyZUlubGluZXMuaCIKKworbmFtZXNwYWNlIEpTQyB7CisK
K3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ0l0ZXJhdG9yUHJvdG90
eXBlSXRlcmF0b3IoRXhlY1N0YXRlKik7CisKK30KKworI2luY2x1ZGUgIlN0cmluZ0l0ZXJhdG9y
UHJvdG90eXBlLmx1dC5oIgorCituYW1lc3BhY2UgSlNDIHsKKworY29uc3QgQ2xhc3NJbmZvIFN0
cmluZ0l0ZXJhdG9yUHJvdG90eXBlOjpzX2luZm8gPSB7ICJTdHJpbmcgSXRlcmF0b3IiLCAmQmFz
ZTo6c19pbmZvLCAmc3RyaW5nSXRlcmF0b3JQcm90b3R5cGVUYWJsZSwgQ1JFQVRFX01FVEhPRF9U
QUJMRShTdHJpbmdJdGVyYXRvclByb3RvdHlwZSkgfTsKKworLyogU291cmNlIGZvciBTdHJpbmdJ
dGVyYXRvclByb3RvdHlwZS5sdXQuaAorQGJlZ2luIHN0cmluZ0l0ZXJhdG9yUHJvdG90eXBlVGFi
bGUKKyAgbmV4dCAgICAgIHN0cmluZ0l0ZXJhdG9yUHJvdG90eXBlRnVuY05leHQgIERvbnRFbnVt
fEZ1bmN0aW9uIDAKK0BlbmQKKyovCisKK3ZvaWQgU3RyaW5nSXRlcmF0b3JQcm90b3R5cGU6OmZp
bmlzaENyZWF0aW9uKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKK3sKKyAg
ICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSk7CisgICAgQVNTRVJUKGluaGVyaXRzKGluZm8oKSkp
OworICAgIHZtLnByb3RvdHlwZU1hcC5hZGRQcm90b3R5cGUodGhpcyk7CisKKyAgICBKU0NfTkFU
SVZFX0ZVTkNUSU9OKHZtLnByb3BlcnR5TmFtZXMtPml0ZXJhdG9yUHJpdmF0ZU5hbWUsIHN0cmlu
Z0l0ZXJhdG9yUHJvdG90eXBlSXRlcmF0b3IsIERvbnRFbnVtLCAwKTsKK30KKworYm9vbCBTdHJp
bmdJdGVyYXRvclByb3RvdHlwZTo6Z2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiBvYmplY3Qs
IEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90
JiBzbG90KQoreworICAgIHJldHVybiBnZXRTdGF0aWNGdW5jdGlvblNsb3Q8QmFzZT4oZXhlYywg
c3RyaW5nSXRlcmF0b3JQcm90b3R5cGVUYWJsZSwganNDYXN0PFN0cmluZ0l0ZXJhdG9yUHJvdG90
eXBlKj4ob2JqZWN0KSwgcHJvcGVydHlOYW1lLCBzbG90KTsKK30KKworRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBzdHJpbmdJdGVyYXRvclByb3RvdHlwZUl0ZXJhdG9yKENhbGxGcmFtZSog
Y2FsbEZyYW1lKQoreworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoY2FsbEZyYW1lLT50aGlz
VmFsdWUoKSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nSXRlcmF0b3JQcm90b3R5cGUuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ0l0ZXJhdG9yUHJvdG90eXBlLmgKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uY2JiZDk2MDNkYWMxMDRhZWJhMmY2YjI2Yzg0M2RjNmVlODU5ZDEwZQotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ0l0ZXJhdG9yUHJvdG90
eXBlLmgKQEAgLTAsMCArMSw2NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSwg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE1IFl1c3VrZSBT
dXp1a2kgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4uCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgU3RyaW5nSXRlcmF0b3JQcm90b3R5cGVfaAorI2Rl
ZmluZSBTdHJpbmdJdGVyYXRvclByb3RvdHlwZV9oCisKKyNpbmNsdWRlICJKU09iamVjdC5oIgor
CituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgU3RyaW5nSXRlcmF0b3JQcm90b3R5cGUgOiBwdWJs
aWMgSlNOb25GaW5hbE9iamVjdCB7CitwdWJsaWM6CisgICAgdHlwZWRlZiBKU05vbkZpbmFsT2Jq
ZWN0IEJhc2U7CisKKyAgICBzdGF0aWMgU3RyaW5nSXRlcmF0b3JQcm90b3R5cGUqIGNyZWF0ZShW
TSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJl
KQorICAgIHsKKyAgICAgICAgU3RyaW5nSXRlcmF0b3JQcm90b3R5cGUqIHByb3RvdHlwZSA9IG5l
dyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPFN0cmluZ0l0ZXJhdG9yUHJvdG90eXBlPih2bS5oZWFw
KSkgU3RyaW5nSXRlcmF0b3JQcm90b3R5cGUodm0sIHN0cnVjdHVyZSk7CisgICAgICAgIHByb3Rv
dHlwZS0+ZmluaXNoQ3JlYXRpb24odm0sIGdsb2JhbE9iamVjdCk7CisgICAgICAgIHJldHVybiBw
cm90b3R5cGU7CisgICAgfQorCisgICAgREVDTEFSRV9JTkZPOworCisgICAgc3RhdGljIFN0cnVj
dHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgSlNWYWx1ZSBwcm90b3R5cGUpCisgICAgeworICAgICAgICByZXR1cm4gU3RydWN0dXJlOjpj
cmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBUeXBlSW5mbyhPYmplY3RUeXBlLCBT
dHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7CisgICAgfQorCitwcm90ZWN0ZWQ6CisgICAgc3RhdGlj
IGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gT3ZlcnJpZGVzR2V0T3duUHJvcGVydHlT
bG90IHwgQmFzZTo6U3RydWN0dXJlRmxhZ3M7CisKK3ByaXZhdGU6CisgICAgU3RyaW5nSXRlcmF0
b3JQcm90b3R5cGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKKyAgICAgICAgOiBCYXNl
KHZtLCBzdHJ1Y3R1cmUpCisgICAgeworICAgIH0KKyAgICB2b2lkIGZpbmlzaENyZWF0aW9uKFZN
JiwgSlNHbG9iYWxPYmplY3QqKTsKKyAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3Qo
SlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOworfTsK
KworfQorCisjZW5kaWYgLy8gIWRlZmluZWQoU3RyaW5nSXRlcmF0b3JQcm90b3R5cGVfaCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ1Byb3RvdHlwZS5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdQcm90b3R5cGUuY3BwCmlu
ZGV4IDUxYmZkYzdkZDJlZDQzOTM5ODFmMzBkM2VlYjFlM2Q1N2JlNzYxNjguLjQ0ZGNjYmE2Nzhk
M2Q5OTVkY2ZhZDc4MGVkMGY3NDU3MTg4ZTNlOTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1N0cmluZ1Byb3RvdHlwZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvU3RyaW5nUHJvdG90eXBlLmNwcApAQCAtMzQsNiArMzQsNyBAQAogI2lu
Y2x1ZGUgIkxvb2t1cC5oIgogI2luY2x1ZGUgIk9iamVjdFByb3RvdHlwZS5oIgogI2luY2x1ZGUg
IkpTQ0lubGluZXMuaCIKKyNpbmNsdWRlICJKU1N0cmluZ0l0ZXJhdG9yLmgiCiAjaW5jbHVkZSAi
UHJvcGVydHlOYW1lQXJyYXkuaCIKICNpbmNsdWRlICJSZWdFeHBDYWNoZS5oIgogI2luY2x1ZGUg
IlJlZ0V4cENvbnN0cnVjdG9yLmgiCkBAIC04Nyw2ICs4OCw3IEBACiBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvRnVuY1N0YXJ0c1dpdGgoRXhlY1N0YXRlKik7CiBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvRnVuY0VuZHNXaXRoKEV4ZWNTdGF0
ZSopOwogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90b0Z1bmNJbmNsdWRl
cyhFeGVjU3RhdGUqKTsKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG9G
dW5jSXRlcmF0b3IoRXhlY1N0YXRlKik7CiAKIGNvbnN0IENsYXNzSW5mbyBTdHJpbmdQcm90b3R5
cGU6OnNfaW5mbyA9IHsgIlN0cmluZyIsICZTdHJpbmdPYmplY3Q6OnNfaW5mbywgMCwgQ1JFQVRF
X01FVEhPRF9UQUJMRShTdHJpbmdQcm90b3R5cGUpIH07CiAKQEAgLTE0MCw2ICsxNDIsOSBAQCB2
b2lkIFN0cmluZ1Byb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBKU1N0cgogICAgIEpTQ19OQVRJVkVfRlVOQ1RJT04oInN0YXJ0c1dp
dGgiLCBzdHJpbmdQcm90b0Z1bmNTdGFydHNXaXRoLCBEb250RW51bSwgMCk7CiAgICAgSlNDX05B
VElWRV9GVU5DVElPTigiZW5kc1dpdGgiLCBzdHJpbmdQcm90b0Z1bmNFbmRzV2l0aCwgRG9udEVu
dW0sIDApOwogICAgIEpTQ19OQVRJVkVfRlVOQ1RJT04oImluY2x1ZGVzIiwgc3RyaW5nUHJvdG9G
dW5jSW5jbHVkZXMsIERvbnRFbnVtLCAwKTsKKyAgICBKU0NfTkFUSVZFX0ZVTkNUSU9OKHZtLnBy
b3BlcnR5TmFtZXMtPml0ZXJhdG9yUHJpdmF0ZU5hbWUsIHN0cmluZ1Byb3RvRnVuY0l0ZXJhdG9y
LCBEb250RW51bSwgMCk7CisKKyAgICBKU0NfTkFUSVZFX0lOVFJJTlNJQ19GVU5DVElPTih2bS5w
cm9wZXJ0eU5hbWVzLT5jaGFyQ29kZUF0UHJpdmF0ZU5hbWUsIHN0cmluZ1Byb3RvRnVuY0NoYXJD
b2RlQXQsIERvbnRFbnVtLCAxLCBDaGFyQ29kZUF0SW50cmluc2ljKTsKIAogICAgIC8vIFRoZSBj
b25zdHJ1Y3RvciB3aWxsIGJlIGFkZGVkIGxhdGVyLCBhZnRlciBTdHJpbmdDb25zdHJ1Y3RvciBo
YXMgYmVlbiBidWlsdAogICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9w
ZXJ0eU5hbWVzLT5sZW5ndGgsIGpzTnVtYmVyKDApLCBEb250RGVsZXRlIHwgUmVhZE9ubHkgfCBE
b250RW51bSk7CkBAIC0xNzAyLDUgKzE3MDcsMTQgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBzdHJpbmdQcm90b0Z1bmNJbmNsdWRlcyhFeGVjU3RhdGUqIGV4ZWMpCiAKICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbihzdHJpbmdUb1NlYXJjaEluLmNvbnRhaW5zKHNl
YXJjaFN0cmluZywgdHJ1ZSwgc3RhcnQpKSk7CiB9Ci0gICAgCisKK0VuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgc3RyaW5nUHJvdG9GdW5jSXRlcmF0b3IoRXhlY1N0YXRlKiBleGVjKQorewor
ICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CisgICAgaWYgKCFjaGVj
a09iamVjdENvZXJjaWJsZSh0aGlzVmFsdWUpKQorICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVF
cnJvcihleGVjKTsKKyAgICBKU1N0cmluZyogc3RyaW5nID0gdGhpc1ZhbHVlLnRvU3RyaW5nKGV4
ZWMpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNTdHJpbmdJdGVyYXRvcjo6Y3JlYXRl
KGV4ZWMsIGV4ZWMtPmNhbGxlZSgpLT5nbG9iYWxPYmplY3QoKS0+c3RyaW5nSXRlcmF0b3JTdHJ1
Y3R1cmUoKSwgc3RyaW5nKSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9zdHJpbmctaXRlcmF0b3JzLmpzIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9zdHJpbmctaXRlcmF0b3JzLmpzCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmMwZmNkYmM1NzI4YTUxMmQ1ZDAyYTk0NTYxM2VmNWY3ZDQzNWFhZDUKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL3N0cmluZy1p
dGVyYXRvcnMuanMKQEAgLTAsMCArMSwyMDkgQEAKKy8vIFRoaXMgdGVzdCBjaGVja3MgdGhlIGJl
aGF2aW9yIG9mIHRoZSBTdHJpbmcgaXRlcmF0b3IKKwordmFyIHRlc3RTdHJpbmcgPSAiQ29jb2Es
Q2FwcHVjY2lubyI7Cit2YXIgc3RyaW5nSXRlcmF0b3IgPSB0ZXN0U3RyaW5nW1N5bWJvbC5pdGVy
YXRvcl0oKTsKK3ZhciBzdHJpbmdJdGVyYXRvclByb3RvdHlwZSA9IHN0cmluZ0l0ZXJhdG9yLl9f
cHJvdG9fXzsKK3ZhciBzdHJpbmdJdGVyYXRvclByb3RvdHlwZU5leHQgPSBzdHJpbmdJdGVyYXRv
clByb3RvdHlwZS5uZXh0OworCitpZiAoc3RyaW5nSXRlcmF0b3IuaGFzT3duUHJvcGVydHkoJ25l
eHQnKSkKKyAgICB0aHJvdyAibmV4dCBtZXRob2Qgc2hvdWxkIGV4aXN0cyBvbiAlU3RyaW5nSXRl
cmF0b3JQcm90b3R5cGUlIjsKK2lmICghc3RyaW5nSXRlcmF0b3JQcm90b3R5cGUuaGFzT3duUHJv
cGVydHkoJ25leHQnKSkKKyAgICB0aHJvdyAibmV4dCBtZXRob2Qgc2hvdWxkIGV4aXN0cyBvbiAl
U3RyaW5nSXRlcmF0b3JQcm90b3R5cGUlIjsKKwordmFyIGl0ZXJhdG9yID0gdGVzdFN0cmluZ1tT
eW1ib2wuaXRlcmF0b3JdKCk7Cit2YXIgaSA9IDA7Cit3aGlsZSAodHJ1ZSkgeworICAgIHZhciB7
ZG9uZSwgdmFsdWV9ID0gaXRlcmF0b3IubmV4dCgpOworICAgIGlmIChkb25lKQorICAgICAgICBi
cmVhazsKKyAgICBpZiAodmFsdWUgIT09IHRlc3RTdHJpbmdbaV0pCisgICAgICAgIHRocm93ICJF
cnJvcjogYmFkIHZhbHVlOiAiICsgdmFsdWU7CisgICAgaSsrOworfQorCitpZiAodGVzdFN0cmlu
Zy5sZW5ndGggIT09IGkpCisgICAgdGhyb3cgIkVycm9yOiBiYWQgdmFsdWU6ICIgKyBpOworCitm
dW5jdGlvbiB0ZXN0U3Vycm9nYXRlUGFpcih0ZXN0U3RyaW5nLCBleHBlY3RlZCwgbnVtYmVyT2ZF
bGVtZW50cykgeworICAgIGlmICh0ZXN0U3RyaW5nLmxlbmd0aCAhPT0gbnVtYmVyT2ZFbGVtZW50
cykKKyAgICAgICAgdGhyb3cgIkVycm9yOiBiYWQgdmFsdWU6ICIgKyB0ZXN0U3RyaW5nLmxlbmd0
aDsKKworICAgIHZhciBpdGVyYXRvciA9IHRlc3RTdHJpbmdbU3ltYm9sLml0ZXJhdG9yXSgpOwor
ICAgIHZhciBpID0gMDsKKyAgICB3aGlsZSAodHJ1ZSkgeworICAgICAgICB2YXIge2RvbmUsIHZh
bHVlfSA9IGl0ZXJhdG9yLm5leHQoKTsKKyAgICAgICAgaWYgKGRvbmUpCisgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgaWYgKHZhbHVlICE9PSBleHBlY3RlZFtpXSkKKyAgICAgICAgICAgIHRo
cm93ICJFcnJvcjogYmFkIHZhbHVlOiAiICsgdmFsdWU7CisgICAgICAgIGkrKzsKKyAgICB9CisK
KyAgICBpZiAoaSAhPT0gZXhwZWN0ZWQubGVuZ3RoKQorICAgICAgICB0aHJvdyAiRXJyb3I6IGJh
ZCB2YWx1ZTogIiArIGk7CisKKyAgICBmb3IgKHZhciBjb2RlUG9pbnQgb2YgdGVzdFN0cmluZykg
eworICAgICAgICBpZiAodmFsdWUgIT09IGV4cGVjdGVkW2ldKQorICAgICAgICAgICAgdGhyb3cg
IkVycm9yOiBiYWQgdmFsdWU6ICIgKyB2YWx1ZTsKKyAgICB9Cit9CisKKy8vICJcdUQ4NDJcdURG
QjdcdTkxY2VcdTViYjYiCit2YXIgdGVzdFN0cmluZyA9ICLwoK636YeO5a62IjsKK3ZhciBleHBl
Y3RlZCA9IFsKKyAgICBTdHJpbmcuZnJvbUNoYXJDb2RlKDB4RDg0MiwgMHhERkI3KSwKKyAgICBT
dHJpbmcuZnJvbUNoYXJDb2RlKDB4OTFDRSksCisgICAgU3RyaW5nLmZyb21DaGFyQ29kZSgweDVC
QjYpLAorXTsKK3Rlc3RTdXJyb2dhdGVQYWlyKHRlc3RTdHJpbmcsIGV4cGVjdGVkLCA0KTsKKwor
dmFyIHRlc3RTdHJpbmcgPSAiQVx1RDg0MiI7Cit2YXIgZXhwZWN0ZWQgPSBbCisgICAgU3RyaW5n
LmZyb21DaGFyQ29kZSgweDAwNDEpLAorICAgIFN0cmluZy5mcm9tQ2hhckNvZGUoMHhEODQyKSwK
K107Cit0ZXN0U3Vycm9nYXRlUGFpcih0ZXN0U3RyaW5nLCBleHBlY3RlZCwgMik7CisKK3ZhciB0
ZXN0U3RyaW5nID0gIkFcdUQ4NDJBIjsKK3ZhciBleHBlY3RlZCA9IFsKKyAgICBTdHJpbmcuZnJv
bUNoYXJDb2RlKDB4MDA0MSksCisgICAgU3RyaW5nLmZyb21DaGFyQ29kZSgweEQ4NDIpLAorICAg
IFN0cmluZy5mcm9tQ2hhckNvZGUoMHgwMDQxKSwKK107Cit0ZXN0U3Vycm9nYXRlUGFpcih0ZXN0
U3RyaW5nLCBleHBlY3RlZCwgMyk7CisKK3ZhciB0ZXN0U3RyaW5nID0gIkFcdUQ4NDJcdURGQjci
OwordmFyIGV4cGVjdGVkID0gWworICAgIFN0cmluZy5mcm9tQ2hhckNvZGUoMHgwMDQxKSwKKyAg
ICBTdHJpbmcuZnJvbUNoYXJDb2RlKDB4RDg0MiwgMHhERkI3KSwKK107Cit0ZXN0U3Vycm9nYXRl
UGFpcih0ZXN0U3RyaW5nLCBleHBlY3RlZCwgMyk7CisKK3ZhciB0ZXN0U3RyaW5nID0gIlx1RDg0
MkFcdURGQjciOwordmFyIGV4cGVjdGVkID0gWworICAgIFN0cmluZy5mcm9tQ2hhckNvZGUoMHhE
ODQyKSwKKyAgICBTdHJpbmcuZnJvbUNoYXJDb2RlKDB4MDA0MSksCisgICAgU3RyaW5nLmZyb21D
aGFyQ29kZSgweERGQjcpLAorXTsKK3Rlc3RTdXJyb2dhdGVQYWlyKHRlc3RTdHJpbmcsIGV4cGVj
dGVkLCAzKTsKKwordmFyIHRlc3RTdHJpbmcgPSAiXHVERkI3XHVEODQyQSI7Cit2YXIgZXhwZWN0
ZWQgPSBbCisgICAgU3RyaW5nLmZyb21DaGFyQ29kZSgweERGQjcpLAorICAgIFN0cmluZy5mcm9t
Q2hhckNvZGUoMHhEODQyKSwKKyAgICBTdHJpbmcuZnJvbUNoYXJDb2RlKDB4MDA0MSksCitdOwor
dGVzdFN1cnJvZ2F0ZVBhaXIodGVzdFN0cmluZywgZXhwZWN0ZWQsIDMpOworCit2YXIgc3RyaW5n
MSA9ICJDb2NvYSI7Cit2YXIgc3RyaW5nMUl0ZXJhdG9yID0gc3RyaW5nMVtTeW1ib2wuaXRlcmF0
b3JdKCk7Cit2YXIgaW5kZXggPSAwOword2hpbGUgKHRydWUpIHsKKyAgICB2YXIgcmVzdWx0ID0g
c3RyaW5nSXRlcmF0b3JQcm90b3R5cGVOZXh0LmNhbGwoc3RyaW5nMUl0ZXJhdG9yKTsKKyAgICB2
YXIgdmFsdWUgPSByZXN1bHQudmFsdWU7CisgICAgaWYgKHJlc3VsdC5kb25lKSB7CisgICAgICAg
IGJyZWFrOworICAgIH0KKyAgICBpZiAodmFsdWUgIT09IHN0cmluZzFbaW5kZXgrK10pCisgICAg
ICAgIHRocm93ICJFcnJvcjogYmFkIHZhbHVlOiAiICsgdmFsdWU7Cit9CitpZiAoaW5kZXggIT09
IDUpCisgICAgdGhyb3cgIkVycm9yOiBiYWQgaW5kZXg6ICIgKyBpbmRleDsKKworZnVuY3Rpb24g
aW5jcmVtZW50KGl0ZXIpIHsKKyAgICByZXR1cm4gc3RyaW5nSXRlcmF0b3JQcm90b3R5cGVOZXh0
LmNhbGwoaXRlcik7Cit9Cit2YXIgc3RyaW5nMSA9ICJDb2NvYSI7Cit2YXIgc3RyaW5nMiA9ICJD
b2NvYSI7Cit2YXIgc3RyaW5nMUl0ZXJhdG9yID0gc3RyaW5nMVtTeW1ib2wuaXRlcmF0b3JdKCk7
Cit2YXIgc3RyaW5nMkl0ZXJhdG9yID0gc3RyaW5nMltTeW1ib2wuaXRlcmF0b3JdKCk7Citmb3Ig
KHZhciBpID0gMDsgaSA8IDM7ICsraSkgeworICAgIHZhciB2YWx1ZTEgPSBpbmNyZW1lbnQoc3Ry
aW5nMUl0ZXJhdG9yKS52YWx1ZTsKKyAgICB2YXIgdmFsdWUyID0gaW5jcmVtZW50KHN0cmluZzJJ
dGVyYXRvcikudmFsdWU7CisgICAgaWYgKHZhbHVlMSAhPT0gdmFsdWUyKQorICAgICAgICB0aHJv
dyAiRXJyb3I6IGJhZCB2YWx1ZTogIiArIHZhbHVlMSArICIgIiArIHZhbHVlMjsKK30KKwordmFy
IHN0cmluZzEgPSAiQ2FwcHVjY2lubyI7Cit2YXIgc3RyaW5nMUl0ZXJhdG9yID0gc3RyaW5nMVtT
eW1ib2wuaXRlcmF0b3JdKCk7CisKK3ZhciB2YWx1ZSA9IHN0cmluZzFJdGVyYXRvci5uZXh0KCku
dmFsdWU7CitpZiAodmFsdWUgIT09ICJDIikKKyAgICB0aHJvdyAiRXJyb3I6IGJhZCB2YWx1ZTog
IiArIHZhbHVlOwordmFyIHZhbHVlID0gc3RyaW5nMUl0ZXJhdG9yLm5leHQoKS52YWx1ZTsKK2lm
ICh2YWx1ZSAhPT0gImEiKQorICAgIHRocm93ICJFcnJvcjogYmFkIHZhbHVlOiAiICsgdmFsdWU7
Cit2YXIgdmFsdWUgPSBzdHJpbmcxSXRlcmF0b3IubmV4dCgpLnZhbHVlOworaWYgKHZhbHVlICE9
PSAicCIpCisgICAgdGhyb3cgIkVycm9yOiBiYWQgdmFsdWU6ICIgKyB2YWx1ZTsKK3ZhciB2YWx1
ZSA9IHN0cmluZ0l0ZXJhdG9yUHJvdG90eXBlTmV4dC5jYWxsKHN0cmluZzFJdGVyYXRvcikudmFs
dWU7CitpZiAodmFsdWUgIT09ICJwIikKKyAgICB0aHJvdyAiRXJyb3I6IGJhZCB2YWx1ZTogIiAr
IHZhbHVlOwordmFyIHZhbHVlID0gc3RyaW5nSXRlcmF0b3JQcm90b3R5cGVOZXh0LmNhbGwoc3Ry
aW5nMUl0ZXJhdG9yKS52YWx1ZTsKK2lmICh2YWx1ZSAhPT0gInUiKQorICAgIHRocm93ICJFcnJv
cjogYmFkIHZhbHVlOiAiICsgdmFsdWU7Cit2YXIgdmFsdWUgPSBzdHJpbmdJdGVyYXRvclByb3Rv
dHlwZU5leHQuY2FsbChzdHJpbmcxSXRlcmF0b3IpLnZhbHVlOworaWYgKHZhbHVlICE9PSAiYyIp
CisgICAgdGhyb3cgIkVycm9yOiBiYWQgdmFsdWU6ICIgKyB2YWx1ZTsKK3ZhciB2YWx1ZSA9IHN0
cmluZ0l0ZXJhdG9yUHJvdG90eXBlTmV4dC5jYWxsKHN0cmluZzFJdGVyYXRvcikudmFsdWU7Citp
ZiAodmFsdWUgIT09ICJjIikKKyAgICB0aHJvdyAiRXJyb3I6IGJhZCB2YWx1ZTogIiArIHZhbHVl
OwordmFyIHZhbHVlID0gc3RyaW5nSXRlcmF0b3JQcm90b3R5cGVOZXh0LmNhbGwoc3RyaW5nMUl0
ZXJhdG9yKS52YWx1ZTsKK2lmICh2YWx1ZSAhPT0gImkiKQorICAgIHRocm93ICJFcnJvcjogYmFk
IHZhbHVlOiAiICsgdmFsdWU7Cit2YXIgdmFsdWUgPSBzdHJpbmdJdGVyYXRvclByb3RvdHlwZU5l
eHQuY2FsbChzdHJpbmcxSXRlcmF0b3IpLnZhbHVlOworaWYgKHZhbHVlICE9PSAibiIpCisgICAg
dGhyb3cgIkVycm9yOiBiYWQgdmFsdWU6ICIgKyB2YWx1ZTsKK3ZhciB2YWx1ZSA9IHN0cmluZ0l0
ZXJhdG9yUHJvdG90eXBlTmV4dC5jYWxsKHN0cmluZzFJdGVyYXRvcikudmFsdWU7CitpZiAodmFs
dWUgIT09ICJvIikKKyAgICB0aHJvdyAiRXJyb3I6IGJhZCB2YWx1ZTogIiArIHZhbHVlOwordmFy
IHZhbHVlID0gc3RyaW5nSXRlcmF0b3JQcm90b3R5cGVOZXh0LmNhbGwoc3RyaW5nMUl0ZXJhdG9y
KS52YWx1ZTsKK2lmICh2YWx1ZSAhPT0gdW5kZWZpbmVkKQorICAgIHRocm93ICJFcnJvcjogYmFk
IHZhbHVlOiAiICsgdmFsdWU7CisKK3ZhciBwcmltaXRpdmVzID0gWworICAgICJzdHJpbmciLAor
ICAgIDQyLAorICAgIDAuMDMsCisgICAgZmFsc2UsCisgICAgdHJ1ZSwKKyAgICBTeW1ib2woIkNv
Y29hIiksCisgICAgbnVsbCwKKyAgICB1bmRlZmluZWQKK107Citmb3IgKHZhciBwcmltaXRpdmUg
b2YgcHJpbWl0aXZlcykgeworICAgIHZhciBkaWRUaHJvdyA9IG51bGw7CisgICAgdHJ5IHsKKyAg
ICAgICAgc3RyaW5nSXRlcmF0b3JQcm90b3R5cGVOZXh0LmNhbGwocHJpbWl0aXZlKTsKKyAgICB9
IGNhdGNoIChlKSB7CisgICAgICAgIGRpZFRocm93ID0gZTsKKyAgICB9CisgICAgaWYgKCFkaWRU
aHJvdykKKyAgICAgICAgdGhyb3cgIkVycm9yOiBubyBlcnJvciB0aHJvd24iOworICAgIGlmIChT
dHJpbmcoZGlkVGhyb3cpICE9PSAnVHlwZUVycm9yOiAlU3RyaW5nSXRlcmF0b3JQcm90b3R5cGUl
Lm5leHQgcmVxdWlyZXMgdGhhdCB8dGhpc3wgYmUgT2JqZWN0JykKKyAgICAgICAgdGhyb3cgIkVy
cm9yOiBiYWQgZXJyb3IgdGhyb3duOiAiICsgZGlkVGhyb3c7Cit9CisKK3ZhciBub25SZWxhdGVk
T2JqZWN0cyA9IFsKKyAgICB7fSwKKyAgICBbXSwKKyAgICBuZXcgRGF0ZSgpLAorICAgIG5ldyBF
cnJvcigpLAorICAgIE9iamVjdChTeW1ib2woKSksCisgICAgbmV3IFN0cmluZygiQ2FwcHVjY2lu
byIpLAorICAgIG5ldyBOdW1iZXIoNDIpLAorICAgIG5ldyBCb29sZWFuKGZhbHNlKSwKKyAgICBm
dW5jdGlvbiAoKSB7IH0sCitdOworZm9yICh2YXIgb2JqZWN0IG9mIG5vblJlbGF0ZWRPYmplY3Rz
KSB7CisgICAgdmFyIGRpZFRocm93ID0gbnVsbDsKKyAgICB0cnkgeworICAgICAgICBzdHJpbmdJ
dGVyYXRvclByb3RvdHlwZU5leHQuY2FsbChvYmplY3QpOworICAgIH0gY2F0Y2ggKGUpIHsKKyAg
ICAgICAgZGlkVGhyb3cgPSBlOworICAgIH0KKyAgICBpZiAoIWRpZFRocm93KQorICAgICAgICB0
aHJvdyAiRXJyb3I6IG5vIGVycm9yIHRocm93biI7CisgICAgaWYgKFN0cmluZyhkaWRUaHJvdykg
IT09ICdUeXBlRXJyb3I6ICVTdHJpbmdJdGVyYXRvclByb3RvdHlwZSUubmV4dCByZXF1aXJlcyB0
aGF0IHx0aGlzfCBiZSBTdHJpbmcgSXRlcmF0b3IgSW5zdGFuY2UnKQorICAgICAgICB0aHJvdyAi
RXJyb3I6IGJhZCBlcnJvciB0aHJvd246ICIgKyBkaWRUaHJvdzsKK30K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>247516</attachid>
            <date>2015-02-27 09:14:27 -0800</date>
            <delta_ts>2015-03-03 10:14:56 -0800</delta_ts>
            <desc>prototype rev2</desc>
            <filename>bug-142080-20150228021412.patch</filename>
            <type>text/plain</type>
            <size>47603</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTgwNzUyCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA5
N2UyMWFjNjRlNTJhN2E3YjQzZjU0OWYzNzRiNDc0YjY3MDkxNzIzLi4zNmVhZjliNmY0ZTUwNjdk
MzYzMzEzOGQxNGFjMmRhZDFkMTRmNjAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw1MiBAQAorMjAxNS0wMi0yNyAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KKworICAgICAgICBJbXBsZW1lbnQgRVM2IFN0cmluZ0l0ZXJhdG9yCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDIwODAKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIGludHJvZHVj
ZXMgRVM2IFN0cmluZyBJdGVyYXRvci4KKyAgICAgICAgSXQgZW51bWVyYXRlcyBjb2RlIHBvaW50
cyBpbnN0ZWFkIG9mIGVsZW1lbnRzIGluIFN0cmluZy4KKyAgICAgICAgU28gc3Vycm9nYXRlIHBh
aXJzIHNob3VsZCBiZSBoYW5kbGVkIGNvcnJlY3RseS4KKworICAgICAgICAqIENNYWtlTGlzdHMu
dHh0OgorICAgICAgICAqIERlcml2ZWRTb3VyY2VzLm1ha2U6CisgICAgICAgICogSmF2YVNjcmlw
dENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qOgorICAgICAgICAqIEphdmFTY3Jp
cHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvai5maWx0ZXJzOgorICAgICAgICAq
IEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogYnVp
bHRpbnMvU3RyaW5nSXRlcmF0b3IucHJvdG90eXBlLmpzOiBBZGRlZC4KKyAgICAgICAgKG5leHQp
OgorICAgICAgICAqIHJ1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuaDoKKyAgICAgICAgKiBydW50
aW1lL0pTR2xvYmFsT2JqZWN0LmNwcDoKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0
Lmg6CisgICAgICAgICogcnVudGltZS9KU1N0cmluZ0l0ZXJhdG9yLmNwcDogQWRkZWQuCisgICAg
ICAgIChKU0M6OkpTU3RyaW5nSXRlcmF0b3I6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKiBy
dW50aW1lL0pTU3RyaW5nSXRlcmF0b3IuaDogQWRkZWQuCisgICAgICAgIChKU0M6OkpTU3RyaW5n
SXRlcmF0b3I6OmNyZWF0ZVN0cnVjdHVyZSk6CisgICAgICAgIChKU0M6OkpTU3RyaW5nSXRlcmF0
b3I6OmNyZWF0ZSk6CisgICAgICAgIChKU0M6OkpTU3RyaW5nSXRlcmF0b3I6OkpTU3RyaW5nSXRl
cmF0b3IpOgorICAgICAgICAqIHJ1bnRpbWUvU3RyaW5nSXRlcmF0b3JDb25zdHJ1Y3Rvci5jcHA6
IEFkZGVkLgorICAgICAgICAoSlNDOjpTdHJpbmdJdGVyYXRvckNvbnN0cnVjdG9yOjpmaW5pc2hD
cmVhdGlvbik6CisgICAgICAgICogcnVudGltZS9TdHJpbmdJdGVyYXRvckNvbnN0cnVjdG9yLmg6
IEFkZGVkLgorICAgICAgICAoSlNDOjpTdHJpbmdJdGVyYXRvckNvbnN0cnVjdG9yOjpjcmVhdGUp
OgorICAgICAgICAoSlNDOjpTdHJpbmdJdGVyYXRvckNvbnN0cnVjdG9yOjpjcmVhdGVTdHJ1Y3R1
cmUpOgorICAgICAgICAoSlNDOjpTdHJpbmdJdGVyYXRvckNvbnN0cnVjdG9yOjpTdHJpbmdJdGVy
YXRvckNvbnN0cnVjdG9yKToKKyAgICAgICAgKiBydW50aW1lL1N0cmluZ0l0ZXJhdG9yUHJvdG90
eXBlLmNwcDogQWRkZWQuCisgICAgICAgIChKU0M6OlN0cmluZ0l0ZXJhdG9yUHJvdG90eXBlOjpm
aW5pc2hDcmVhdGlvbik6CisgICAgICAgIChKU0M6OlN0cmluZ0l0ZXJhdG9yUHJvdG90eXBlOjpn
ZXRPd25Qcm9wZXJ0eVNsb3QpOgorICAgICAgICAoSlNDOjpzdHJpbmdJdGVyYXRvclByb3RvdHlw
ZUl0ZXJhdG9yKToKKyAgICAgICAgKiBydW50aW1lL1N0cmluZ0l0ZXJhdG9yUHJvdG90eXBlLmg6
IEFkZGVkLgorICAgICAgICAoSlNDOjpTdHJpbmdJdGVyYXRvclByb3RvdHlwZTo6Y3JlYXRlKToK
KyAgICAgICAgKEpTQzo6U3RyaW5nSXRlcmF0b3JQcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZSk6
CisgICAgICAgIChKU0M6OlN0cmluZ0l0ZXJhdG9yUHJvdG90eXBlOjpTdHJpbmdJdGVyYXRvclBy
b3RvdHlwZSk6CisgICAgICAgICogcnVudGltZS9TdHJpbmdQcm90b3R5cGUuY3BwOgorICAgICAg
ICAoSlNDOjpTdHJpbmdQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKEpTQzo6
c3RyaW5nUHJvdG9GdW5jSXRlcmF0b3IpOgorICAgICAgICAqIHRlc3RzL3N0cmVzcy9zdHJpbmct
aXRlcmF0b3JzLmpzOiBBZGRlZC4KKyAgICAgICAgKHRlc3RTdXJyb2dhdGVQYWlyKToKKyAgICAg
ICAgKGluY3JlbWVudCk6CisgICAgICAgIChmb3IpOgorCiAyMDE1LTAyLTI2ICBGaWxpcCBQaXps
byAgPGZwaXpsb0BhcHBsZS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbCBvdXQgcjE4
MDcyMy4gSXQgYnJva2UgYSBidW5jaCBvZiB0ZXN0cy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxp
c3RzLnR4dAppbmRleCBmOWNiZGRjY2ZmZmVhYTMwMDIxNDkwYWExZjc5OWI1NjRlMjAxYWQ0Li5m
ZTA2Y2M2NjdlMGM5NWUzYmI0MWE4MTczNjU2MWI4N2JiMDUyYWU3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL0NNYWtlTGlzdHMudHh0CkBAIC00OTQsNiArNDk0LDcgQEAgc2V0KEphdmFTY3JpcHRDb3Jl
X1JVTlRJTUVfU09VUkNFUwogICAgIHJ1bnRpbWUvSlNTZXQuY3BwCiAgICAgcnVudGltZS9KU1Nl
dEl0ZXJhdG9yLmNwcAogICAgIHJ1bnRpbWUvSlNTdHJpbmcuY3BwCisgICAgcnVudGltZS9KU1N0
cmluZ0l0ZXJhdG9yLmNwcAogICAgIHJ1bnRpbWUvSlNTdHJpbmdKb2luZXIuY3BwCiAgICAgcnVu
dGltZS9KU1N5bWJvbFRhYmxlT2JqZWN0LmNwcAogICAgIHJ1bnRpbWUvSlNUeXBlZEFycmF5Q29u
c3RydWN0b3JzLmNwcApAQCAtNTQ1LDYgKzU0Niw4IEBAIHNldChKYXZhU2NyaXB0Q29yZV9SVU5U
SU1FX1NPVVJDRVMKICAgICBydW50aW1lL1NwYXJzZUFycmF5VmFsdWVNYXAuY3BwCiAgICAgcnVu
dGltZS9TdHJpY3RFdmFsQWN0aXZhdGlvbi5jcHAKICAgICBydW50aW1lL1N0cmluZ0NvbnN0cnVj
dG9yLmNwcAorICAgIHJ1bnRpbWUvU3RyaW5nSXRlcmF0b3JDb25zdHJ1Y3Rvci5jcHAKKyAgICBy
dW50aW1lL1N0cmluZ0l0ZXJhdG9yUHJvdG90eXBlLmNwcAogICAgIHJ1bnRpbWUvU3RyaW5nT2Jq
ZWN0LmNwcAogICAgIHJ1bnRpbWUvU3RyaW5nUHJvdG90eXBlLmNwcAogICAgIHJ1bnRpbWUvU3Ry
aW5nUmVjdXJzaW9uQ2hlY2tlci5jcHAKQEAgLTU5Niw2ICs1OTksNyBAQCBzZXQoSmF2YVNjcmlw
dENvcmVfTFVUX0ZJTEVTCiAgICAgcnVudGltZS9SZWdFeHBPYmplY3QuY3BwCiAgICAgcnVudGlt
ZS9SZWdFeHBQcm90b3R5cGUuY3BwCiAgICAgcnVudGltZS9TdHJpbmdDb25zdHJ1Y3Rvci5jcHAK
KyAgICBydW50aW1lL1N0cmluZ0l0ZXJhdG9yUHJvdG90eXBlLmNwcAogICAgIHJ1bnRpbWUvU3lt
Ym9sUHJvdG90eXBlLmNwcAogKQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
RGVyaXZlZFNvdXJjZXMubWFrZSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9EZXJpdmVkU291cmNl
cy5tYWtlCmluZGV4IDRhMjYyM2VmNWM5Yzc1NmQ1ZGE1NDdmMWQzZDY1Y2VhOWExNzY5NWEuLjQw
NjE5MWQ2MzhjMzgwOTM1NDhhNzM3NjVlY2JkNTdlMGQwYjk0ODMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9EZXJpdmVkU291cmNlcy5tYWtlCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9EZXJpdmVkU291cmNlcy5tYWtlCkBAIC01Niw2ICs1Niw3IEBAIGFsbCA6IFwKICAg
ICBSZWdFeHBKaXRUYWJsZXMuaCBcCiAgICAgUmVnRXhwT2JqZWN0Lmx1dC5oIFwKICAgICBTdHJp
bmdDb25zdHJ1Y3Rvci5sdXQuaCBcCisgICAgU3RyaW5nSXRlcmF0b3JQcm90b3R5cGUubHV0Lmgg
XAogICAgIFN5bWJvbFByb3RvdHlwZS5sdXQuaCBcCiAgICAgdWRpczg2X2l0YWIuaCBcCiAgICAg
Qnl0ZWNvZGVzLmggXApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3Jp
cHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvaiBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2oKaW5kZXgg
ODMxMDcwY2MyNmQzMTE2YjIwZTNkODhjOTIzM2UzNzk4ZGRmZjY5MS4uNzM1ODAyYjYxMjJiMGJh
ZDVmMmJhZDgzMjcwMzE0NGM3OTQ1ZGM0ZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvagorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29y
ZS52Y3hwcm9qCkBAIC03NjAsNiArNzYwLDcgQEAKICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4u
XHJ1bnRpbWVcSlNTZXQuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGlt
ZVxKU1NldEl0ZXJhdG9yLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRp
bWVcSlNTdHJpbmcuY3BwIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGltZVxK
U1N0cmluZ0l0ZXJhdG9yLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRp
bWVcSlNTdHJpbmdKb2luZXIuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccnVu
dGltZVxKU1N5bWJvbFRhYmxlT2JqZWN0LmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9
Ii4uXHJ1bnRpbWVcSlNUeXBlZEFycmF5Q29uc3RydWN0b3JzLmNwcCIgLz4KQEAgLTgxMyw2ICs4
MTQsOCBAQAogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGltZVxTdHJpY3RFdmFsQWN0
aXZhdGlvbi5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1lXFN0cmlu
Z0NvbnN0cnVjdG9yLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVc
U3RyaW5nT2JqZWN0LmNwcCIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVc
U3RyaW5nSXRlcmF0b3JDb25zdHJ1Y3Rvci5jcHAiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRl
PSIuLlxydW50aW1lXFN0cmluZ0l0ZXJhdG9yUHJvdG90eXBlLmNwcCIgLz4KICAgICA8Q2xDb21w
aWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcU3RyaW5nUHJvdG90eXBlLmNwcCIgLz4KICAgICA8Q2xD
b21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcU3RyaW5nUmVjdXJzaW9uQ2hlY2tlci5jcHAiIC8+
CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1lXFN0cnVjdHVyZS5jcHAiIC8+CkBA
IC0xNTUxLDYgKzE1NTQsNyBAQAogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxK
U1NldEl0ZXJhdG9yLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEpT
U3RyaW5nLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTU3RyaW5n
QnVpbGRlci5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU1N0cmlu
Z0l0ZXJhdG9yLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTU3Ry
aW5nSm9pbmVyLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTU3lt
Ym9sVGFibGVPYmplY3QuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVc
SlNUeXBlLmgiIC8+CkBAIC0xNjIzLDYgKzE2MjcsOCBAQAogICAgIDxDbEluY2x1ZGUgSW5jbHVk
ZT0iLi5ccnVudGltZVxTdGFja0FsaWdubWVudC5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVk
ZT0iLi5ccnVudGltZVxTdHJpY3RFdmFsQWN0aXZhdGlvbi5oIiAvPgogICAgIDxDbEluY2x1ZGUg
SW5jbHVkZT0iLi5ccnVudGltZVxTdHJpbmdDb25zdHJ1Y3Rvci5oIiAvPgorICAgIDxDbEluY2x1
ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxTdHJpbmdJdGVyYXRvckNvbnN0cnVjdG9yLmgiIC8+Cisg
ICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXFN0cmluZ0l0ZXJhdG9yUHJvdG90eXBl
LmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXFN0cmluZ09iamVjdC5o
IiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxTdHJpbmdQcm90b3R5cGUu
aCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcU3RyaW5nUmVjdXJzaW9u
Q2hlY2tlci5oIiAvPgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3Jp
cHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvai5maWx0ZXJzIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJv
ai5maWx0ZXJzCmluZGV4IGZmZjcyMGM4MWQwMjY0NGNlZDQ3NWYxMGRjZmJjMGQwY2IyNmY5OTMu
LmQ3MTAxYTkzZWVjZWY4NTk3ZDA5MDgwNDU2NzM5NDU3Yzg2ZGNlNmQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3Jl
LnZjeHByb2ouZmlsdGVycworKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENv
cmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qLmZpbHRlcnMKQEAgLTcwMiw2ICs3MDIs
OSBAQAogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU1N0cmluZy5jcHAiPgog
ICAgICAgPEZpbHRlcj5ydW50aW1lPC9GaWx0ZXI+CiAgICAgPC9DbENvbXBpbGU+CisgICAgPENs
Q29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTU3RyaW5nSXRlcmF0b3IuY3BwIj4KKyAgICAg
IDxGaWx0ZXI+cnVudGltZTwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgogICAgIDxDbENvbXBp
bGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU1N0cmluZ0pvaW5lci5jcHAiPgogICAgICAgPEZpbHRl
cj5ydW50aW1lPC9GaWx0ZXI+CiAgICAgPC9DbENvbXBpbGU+CkBAIC04MzQsNiArODM3LDEyIEBA
CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1lXFN0cmluZ0NvbnN0cnVjdG9yLmNw
cCI+CiAgICAgICA8RmlsdGVyPnJ1bnRpbWU8L0ZpbHRlcj4KICAgICA8L0NsQ29tcGlsZT4KKyAg
ICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcU3RyaW5nSXRlcmF0b3JDb25zdHJ1Y3Rv
ci5jcHAiPgorICAgICAgPEZpbHRlcj5ydW50aW1lPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+
CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1lXFN0cmluZ0l0ZXJhdG9yUHJvdG90
eXBlLmNwcCI+CisgICAgICA8RmlsdGVyPnJ1bnRpbWU8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGls
ZT4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcU3RyaW5nT2JqZWN0LmNwcCI+
CiAgICAgICA8RmlsdGVyPnJ1bnRpbWU8L0ZpbHRlcj4KICAgICA8L0NsQ29tcGlsZT4KQEAgLTI3
MzMsNiArMjc0Miw5IEBACiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTU3Ry
aW5nQnVpbGRlci5oIj4KICAgICAgIDxGaWx0ZXI+cnVudGltZTwvRmlsdGVyPgogICAgIDwvQ2xJ
bmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU1N0cmluZ0l0ZXJh
dG9yLmgiPgorICAgICAgPEZpbHRlcj5ydW50aW1lPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+
CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTU3RyaW5nSm9pbmVyLmgiPgog
ICAgICAgPEZpbHRlcj5ydW50aW1lPC9GaWx0ZXI+CiAgICAgPC9DbEluY2x1ZGU+CkBAIC0yODgw
LDYgKzI4OTIsMTIgQEAKICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcU3RyaW5n
Q29uc3RydWN0b3IuaCI+CiAgICAgICA8RmlsdGVyPnJ1bnRpbWU8L0ZpbHRlcj4KICAgICA8L0Ns
SW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcU3RyaW5nSXRlcmF0
b3JDb25zdHJ1Y3Rvci5oIj4KKyAgICAgIDxGaWx0ZXI+cnVudGltZTwvRmlsdGVyPgorICAgIDwv
Q2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxTdHJpbmdJdGVy
YXRvclByb3RvdHlwZS5oIj4KKyAgICAgIDxGaWx0ZXI+cnVudGltZTwvRmlsdGVyPgorICAgIDwv
Q2xJbmNsdWRlPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxTdHJpbmdPYmpl
Y3QuaCI+CiAgICAgICA8RmlsdGVyPnJ1bnRpbWU8L0ZpbHRlcj4KICAgICA8L0NsSW5jbHVkZT4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggNmE4NDU2NThhMjc0YjJlMzNlOWU5ZDc0
ODdmMWUxOTMxZGEwMjE0MC4uYmU5ODY0ZTM2MzBlMzFiYWY2MTQ0NjViZjBhODE4MGQwNjZlNWJh
YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3Jp
cHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTk1Miw2ICs5NTIsMTIgQEAKIAkJ
NzA1QjQxQjExQTZFNTAxRTAwNzE2NzU3IC8qIFN5bWJvbFByb3RvdHlwZS5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MDVCNDFBOTFBNkU1MDFFMDA3
MTY3NTcgLyogU3ltYm9sUHJvdG90eXBlLmNwcCAqLzsgfTsKIAkJNzA1QjQxQjIxQTZFNTAxRTAw
NzE2NzU3IC8qIFN5bWJvbFByb3RvdHlwZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNzA1QjQxQUExQTZFNTAxRTAwNzE2NzU3IC8qIFN5bWJvbFByb3Rv
dHlwZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJ
CTcwQjBBOUQxMUE5QjY2NDYwMDAxMzA2QSAvKiBSdW50aW1lRmxhZ3MuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcwQjBBOUQwMUE5QjY2MjAwMDAxMzA2
QSAvKiBSdW50aW1lRmxhZ3MuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OworCQk3MEVDMEVDMjFBQTBEN0RBMDBCNkFBRkEgLyogSlNTdHJpbmdJdGVyYXRv
ci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MEVD
MEVCQzFBQTBEN0RBMDBCNkFBRkEgLyogSlNTdHJpbmdJdGVyYXRvci5jcHAgKi87IH07CisJCTcw
RUMwRUMzMUFBMEQ3REEwMEI2QUFGQSAvKiBKU1N0cmluZ0l0ZXJhdG9yLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MEVDMEVCRDFBQTBEN0RBMDBCNkFB
RkEgLyogSlNTdHJpbmdJdGVyYXRvci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CisJCTcwRUMwRUM0MUFBMEQ3REEwMEI2QUFGQSAvKiBTdHJpbmdJdGVy
YXRvckNvbnN0cnVjdG9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDcwRUMwRUJFMUFBMEQ3REEwMEI2QUFGQSAvKiBTdHJpbmdJdGVyYXRvckNvbnN0
cnVjdG9yLmNwcCAqLzsgfTsKKwkJNzBFQzBFQzUxQUEwRDdEQTAwQjZBQUZBIC8qIFN0cmluZ0l0
ZXJhdG9yQ29uc3RydWN0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDcwRUMwRUJGMUFBMEQ3REEwMEI2QUFGQSAvKiBTdHJpbmdJdGVyYXRvckNvbnN0
cnVjdG9yLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
KwkJNzBFQzBFQzYxQUEwRDdEQTAwQjZBQUZBIC8qIFN0cmluZ0l0ZXJhdG9yUHJvdG90eXBlLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcwRUMwRUMw
MUFBMEQ3REEwMEI2QUFGQSAvKiBTdHJpbmdJdGVyYXRvclByb3RvdHlwZS5jcHAgKi87IH07CisJ
CTcwRUMwRUM3MUFBMEQ3REEwMEI2QUFGQSAvKiBTdHJpbmdJdGVyYXRvclByb3RvdHlwZS5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzBFQzBFQzExQUEw
RDdEQTAwQjZBQUZBIC8qIFN0cmluZ0l0ZXJhdG9yUHJvdG90eXBlLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJN0MwMDhDRDIxODZGOEE5MzAwOTU1
QzI0IC8qIEpTUHJvbWlzZUZ1bmN0aW9ucy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA3QzAwOENEMDE4NkY4QTkzMDA5NTVDMjQgLyogSlNQcm9taXNl
RnVuY3Rpb25zLmNwcCAqLzsgfTsKIAkJN0MwMDhDRDMxODZGOEE5MzAwOTU1QzI0IC8qIEpTUHJv
bWlzZUZ1bmN0aW9ucy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gN0MwMDhDRDExODZGOEE5MzAwOTU1QzI0IC8qIEpTUHJvbWlzZUZ1bmN0aW9ucy5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTdDMDA4Q0RB
MTg3MTI0QkIwMDk1NUMyNCAvKiBKU1Byb21pc2VEZWZlcnJlZC5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QzAwOENEODE4NzEyNEJCMDA5NTVDMjQg
LyogSlNQcm9taXNlRGVmZXJyZWQuY3BwICovOyB9OwpAQCAtMjYzMiw2ICsyNjM4LDEyIEBACiAJ
CTcwNUI0MUE5MUE2RTUwMUUwMDcxNjc1NyAvKiBTeW1ib2xQcm90b3R5cGUuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU3ltYm9sUHJvdG90eXBlLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzA1QjQxQUExQTZFNTAxRTAwNzE2NzU3IC8qIFN5bWJv
bFByb3RvdHlwZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTeW1ib2xQcm90
b3R5cGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzBCMEE5RDAxQTlCNjYyMDAw
MDEzMDZBIC8qIFJ1bnRpbWVGbGFncy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBSdW50aW1lRmxhZ3MuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNzBFQzBFQkMx
QUEwRDdEQTAwQjZBQUZBIC8qIEpTU3RyaW5nSXRlcmF0b3IuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gSlNTdHJpbmdJdGVyYXRvci5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTcwRUMwRUJEMUFBMEQ3REEwMEI2QUFGQSAvKiBKU1N0cmluZ0l0ZXJh
dG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTU3RyaW5nSXRlcmF0b3Iu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNzBFQzBFQkUxQUEwRDdEQTAwQjZBQUZB
IC8qIFN0cmluZ0l0ZXJhdG9yQ29uc3RydWN0b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gU3RyaW5nSXRlcmF0b3JDb25zdHJ1Y3Rvci5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTcwRUMwRUJGMUFBMEQ3REEwMEI2QUFGQSAvKiBTdHJpbmdJdGVy
YXRvckNvbnN0cnVjdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN0cmlu
Z0l0ZXJhdG9yQ29uc3RydWN0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNzBF
QzBFQzAxQUEwRDdEQTAwQjZBQUZBIC8qIFN0cmluZ0l0ZXJhdG9yUHJvdG90eXBlLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFN0cmluZ0l0ZXJhdG9yUHJvdG90eXBl
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNzBFQzBFQzExQUEwRDdEQTAwQjZB
QUZBIC8qIFN0cmluZ0l0ZXJhdG9yUHJvdG90eXBlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFN0cmluZ0l0ZXJhdG9yUHJvdG90eXBlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTdDMDA4Q0QwMTg2RjhBOTMwMDk1NUMyNCAvKiBKU1Byb21pc2VGdW5jdGlvbnMu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBsaW5lRW5kaW5nID0gMDsgcGF0aCA9
IEpTUHJvbWlzZUZ1bmN0aW9ucy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHhjTGFuZ3Vh
Z2VTcGVjaWZpY2F0aW9uSWRlbnRpZmllciA9IHhjb2RlLmxhbmcuY3BwOyB9OwogCQk3QzAwOENE
MTE4NkY4QTkzMDA5NTVDMjQgLyogSlNQcm9taXNlRnVuY3Rpb25zLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEpTUHJvbWlzZUZ1bmN0aW9ucy5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk3QzAwOENEODE4NzEyNEJCMDA5NTVDMjQgLyogSlNQcm9taXNlRGVmZXJy
ZWQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNQcm9taXNlRGVm
ZXJyZWQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNDQzNiw2ICs0NDQ4LDgg
QEAKIAkJCQlCQzAyRTlCNjBFMTg0MkZBMDAwRjkyOTcgLyogSlNTdHJpbmcuY3BwICovLAogCQkJ
CUY2OTJBODYyMDI1NTU5N0QwMUZGNjBGNyAvKiBKU1N0cmluZy5oICovLAogCQkJCTg2RTg1NTM4
MTExQjk5NjgwMDFBRjUxRSAvKiBKU1N0cmluZ0J1aWxkZXIuaCAqLywKKwkJCQk3MEVDMEVCQzFB
QTBEN0RBMDBCNkFBRkEgLyogSlNTdHJpbmdJdGVyYXRvci5jcHAgKi8sCisJCQkJNzBFQzBFQkQx
QUEwRDdEQTAwQjZBQUZBIC8qIEpTU3RyaW5nSXRlcmF0b3IuaCAqLywKIAkJCQkyNjAwQjVBNDE1
MkJBQUE3MDA5MUVFNUYgLyogSlNTdHJpbmdKb2luZXIuY3BwICovLAogCQkJCTI2MDBCNUE1MTUy
QkFBQTcwMDkxRUU1RiAvKiBKU1N0cmluZ0pvaW5lci5oICovLAogCQkJCTBGOTE5RDA5MTU3RUUw
OUQwMDRBNEU3RCAvKiBKU1N5bWJvbFRhYmxlT2JqZWN0LmNwcCAqLywKQEAgLTQ1NjAsNiArNDU3
NCwxMCBAQAogCQkJCUE3MzBCNjEwMTI1MDA2OEYwMDlEMjVCMSAvKiBTdHJpY3RFdmFsQWN0aXZh
dGlvbi5oICovLAogCQkJCUJDMThDM0MwMEUxNkVFMzMwMEIzNDQ2MCAvKiBTdHJpbmdDb25zdHJ1
Y3Rvci5jcHAgKi8sCiAJCQkJQkMxOEMzQzEwRTE2RUUzMzAwQjM0NDYwIC8qIFN0cmluZ0NvbnN0
cnVjdG9yLmggKi8sCisJCQkJNzBFQzBFQkUxQUEwRDdEQTAwQjZBQUZBIC8qIFN0cmluZ0l0ZXJh
dG9yQ29uc3RydWN0b3IuY3BwICovLAorCQkJCTcwRUMwRUJGMUFBMEQ3REEwMEI2QUFGQSAvKiBT
dHJpbmdJdGVyYXRvckNvbnN0cnVjdG9yLmggKi8sCisJCQkJNzBFQzBFQzAxQUEwRDdEQTAwQjZB
QUZBIC8qIFN0cmluZ0l0ZXJhdG9yUHJvdG90eXBlLmNwcCAqLywKKwkJCQk3MEVDMEVDMTFBQTBE
N0RBMDBCNkFBRkEgLyogU3RyaW5nSXRlcmF0b3JQcm90b3R5cGUuaCAqLywKIAkJCQlCQzE4QzND
MjBFMTZFRTMzMDBCMzQ0NjAgLyogU3RyaW5nT2JqZWN0LmNwcCAqLywKIAkJCQlCQzE4QzNDMzBF
MTZFRTMzMDBCMzQ0NjAgLyogU3RyaW5nT2JqZWN0LmggKi8sCiAJCQkJQkMxOEMzQzUwRTE2RUUz
MzAwQjM0NDYwIC8qIFN0cmluZ1Byb3RvdHlwZS5jcHAgKi8sCkBAIC01ODA2LDYgKzU4MjQsNyBA
QAogCQkJCUJDMThDNDA1MEUxNkY1Q0QwMEIzNDQ2MCAvKiBGdW5jdGlvblByb3RvdHlwZS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJQkNCRTJDQUUxNEU5ODVBQTAwMDU5M0FEIC8qIEdDQXNzZXJ0aW9u
cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY3NjZEMzAxNUE4RENFMjAwOEYzNjNFIC8qIEdDQXdh
cmVKSVRTdHViUm91dGluZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJNzBFQzBFQzcxQUEwRDdEQTAw
QjZBQUZBIC8qIFN0cmluZ0l0ZXJhdG9yUHJvdG90eXBlLmggaW4gSGVhZGVycyAqLywKIAkJCQkw
RjJCNjZBQzE3QjZCNTNGMDBBN0FFM0YgLyogR0NJbmNvbWluZ1JlZkNvdW50ZWQuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTBGMkI2NkFEMTdCNkI1NDUwMEE3QUUzRiAvKiBHQ0luY29taW5nUmVmQ291
bnRlZElubGluZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMkI2NkFFMTdCNkI1NDUwMEE3QUUz
RiAvKiBHQ0luY29taW5nUmVmQ291bnRlZFNldC5oIGluIEhlYWRlcnMgKi8sCkBAIC02MjI2LDYg
KzYyNDUsNyBAQAogCQkJCTkzMzA0MDA0MEU2QTc0OTQwMDc4NkU2QSAvKiBTbWFsbFN0cmluZ3Mu
aCBpbiBIZWFkZXJzICovLAogCQkJCUJDMThDNDY0MEUxNkY1Q0QwMEIzNDQ2MCAvKiBTb3VyY2VD
b2RlLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzE4QzQ2MzBFMTZGNUNEMDBCMzQ0NjAgLyogU291
cmNlUHJvdmlkZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCTcwRUMwRUMzMUFBMEQ3REEwMEI2QUFG
QSAvKiBKU1N0cmluZ0l0ZXJhdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQlFNDlEQzE2QzEyRUYy
OTRFMDAxODRBMUYgLyogU291cmNlUHJvdmlkZXJDYWNoZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
RTQ5REMxNkQxMkVGMjk1MzAwMTg0QTFGIC8qIFNvdXJjZVByb3ZpZGVyQ2FjaGVJdGVtLmggaW4g
SGVhZGVycyAqLywKIAkJCQkwRkI3RjM5RTE1RUQ4RTQ2MDBGMTY3QjIgLyogU3BhcnNlQXJyYXlW
YWx1ZU1hcC5oIGluIEhlYWRlcnMgKi8sCkBAIC02MjQ3LDYgKzYyNjcsNyBAQAogCQkJCTBGRDJD
OTI0MTZEMDFFRTkwMEM3ODAzRiAvKiBTdHJ1Y3R1cmVJbmxpbmVzLmggaW4gSGVhZGVycyAqLywK
IAkJCQlDMkZFMThBNDE2QkFFQzQwMDBBRjMwNjEgLyogU3RydWN0dXJlUmFyZURhdGEuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUMyMEJBOTJEMTZCQjFDMTUwMEIzQUVBMiAvKiBTdHJ1Y3R1cmVSYXJl
RGF0YUlubGluZXMuaCBpbiBIZWFkZXJzICovLAorCQkJCTcwRUMwRUM1MUFBMEQ3REEwMEI2QUFG
QSAvKiBTdHJpbmdJdGVyYXRvckNvbnN0cnVjdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjJC
OUNFQjE5RDBCQTdEMDBCMUQxQjUgLyogREZHUGhpQ2hpbGRyZW4uaCBpbiBIZWFkZXJzICovLAog
CQkJCTBGOTMzMkE1MTRDQTdEREQwMDg1RjNDNiAvKiBTdHJ1Y3R1cmVTZXQuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTBGNzY2RDM5MTVBRTRBMUYwMDhGMzYzRSAvKiBTdHJ1Y3R1cmVTdHViQ2xlYXJp
bmdXYXRjaHBvaW50LmggaW4gSGVhZGVycyAqLywKQEAgLTY5MzQsNiArNjk1NSw4IEBACiAJCQkJ
MEZDMDk3OTIxNDZBNkY3MzAwQ0YyNDQyIC8qIERGR09TUkV4aXRDb21waWxlci5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQkwRkMwOTc3NjE0Njk0M0IwMDBDRjI0NDIgLyogREZHT1NSRXhpdENvbXBp
bGVyMzJfNjQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZDMDk3NzIxNDY5M0FGOTAwQ0YyNDQy
IC8qIERGR09TUkV4aXRDb21waWxlcjY0LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTcwRUMwRUM0
MUFBMEQ3REEwMEI2QUFGQSAvKiBTdHJpbmdJdGVyYXRvckNvbnN0cnVjdG9yLmNwcCBpbiBTb3Vy
Y2VzICovLAorCQkJCTcwRUMwRUMyMUFBMEQ3REEwMEI2QUFGQSAvKiBKU1N0cmluZ0l0ZXJhdG9y
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGNzAyNUE5MTcxNEIwRkEwMDM4MkMwRSAvKiBERkdP
U1JFeGl0Q29tcGlsZXJDb21tb24uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZFRkM5QUExNjgx
QTNCMzAwNTY3RjUzIC8qIERGR09TUkV4aXRKdW1wUGxhY2Vob2xkZXIuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJMEYyMzVCRUQxNzE3OEU3MzAwNjkwQzdGIC8qIERGR09TUkV4aXRQcmVwYXJhdGlv
bi5jcHAgaW4gU291cmNlcyAqLywKQEAgLTcyOTYsNiArNzMxOSw3IEBACiAJCQkJMEYyNEU1NTAx
N0VFMjc0OTAwQUJCMjE3IC8qIFJlcGF0Y2guY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEY3NzAw
OTIxNDAyRkYzQzAwNzhFQjM5IC8qIFNhbXBsaW5nQ291bnRlci5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQkxNDI5RDg4NTBFRDIxQzNEMDBCODk2MTkgLyogU2FtcGxpbmdUb29sLmNwcCBpbiBTb3Vy
Y2VzICovLAorCQkJCTcwRUMwRUM2MUFBMEQ3REEwMEI2QUFGQSAvKiBTdHJpbmdJdGVyYXRvclBy
b3RvdHlwZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBNUZEMDA2NzE4OUFGRTlDMDA2MzMyMzEg
LyogU2NyaXB0QXJndW1lbnRzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE1RkQwMDZEMTg5QjAw
QUEwMDYzMzIzMSAvKiBTY3JpcHRDYWxsRnJhbWUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTVG
RDAwNkYxODlCMDBBQTAwNjMzMjMxIC8qIFNjcmlwdENhbGxTdGFjay5jcHAgaW4gU291cmNlcyAq
LywKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9TdHJpbmdJdGVy
YXRvci5wcm90b3R5cGUuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvU3RyaW5n
SXRlcmF0b3IucHJvdG90eXBlLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjgwMjg5YzY2MTBiOGFmODc0MDNhNzVm
YTc3ZjRjNDQzNDQxZTU4ZTQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnVpbHRpbnMvU3RyaW5nSXRlcmF0b3IucHJvdG90eXBlLmpzCkBAIC0wLDAgKzEsNzIgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgWXVzdWtlIFN1enVraSA8dXRhdGFuZS50ZWFAZ21h
aWwuY29tPi4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
CisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworZnVu
Y3Rpb24gbmV4dCgpIHsKKyAgICAidXNlIHN0cmljdCI7CisKKyAgICBpZiAodGhpcyA9PSBudWxs
IHx8ICh0eXBlb2YgdGhpcyAhPT0gIm9iamVjdCIgJiYgdHlwZW9mIHRoaXMgIT09ICJmdW5jdGlv
biIpKQorICAgICAgICB0aHJvdyBuZXcgQFR5cGVFcnJvcigiJVN0cmluZ0l0ZXJhdG9yUHJvdG90
eXBlJS5uZXh0IHJlcXVpcmVzIHRoYXQgfHRoaXN8IGJlIE9iamVjdCIpOworCisgICAgdmFyIHBv
c2l0aW9uID0gdGhpcy5Ac3RyaW5nSXRlcmF0b3JOZXh0SW5kZXg7CisgICAgaWYgKHBvc2l0aW9u
ID09PSB1bmRlZmluZWQpCisgICAgICAgIHRocm93IG5ldyBAVHlwZUVycm9yKCIlU3RyaW5nSXRl
cmF0b3JQcm90b3R5cGUlLm5leHQgcmVxdWlyZXMgdGhhdCB8dGhpc3wgYmUgU3RyaW5nIEl0ZXJh
dG9yIEluc3RhbmNlIik7CisKKyAgICB2YXIgc3RyaW5nID0gdGhpcy5AaXRlcmF0ZWRTdHJpbmc7
CisgICAgaWYgKHN0cmluZyA9PT0gdW5kZWZpbmVkKSB7CisgICAgICAgIHJldHVybiB7CisgICAg
ICAgICAgICB2YWx1ZTogdW5kZWZpbmVkLAorICAgICAgICAgICAgZG9uZTogdHJ1ZQorICAgICAg
ICB9OworICAgIH0KKworICAgIHZhciBsZW5ndGggPSBzdHJpbmcubGVuZ3RoID4+PiAwOworICAg
IGlmIChwb3NpdGlvbiA+PSBsZW5ndGgpIHsKKyAgICAgICAgdGhpcy5AaXRlcmF0ZWRTdHJpbmcg
PSB1bmRlZmluZWQ7CisgICAgICAgIHJldHVybiB7CisgICAgICAgICAgICB2YWx1ZTogdW5kZWZp
bmVkLAorICAgICAgICAgICAgZG9uZTogdHJ1ZQorICAgICAgICB9OworICAgIH07CisKKyAgICB2
YXIgZmlyc3QgPSBzdHJpbmcuQGNoYXJDb2RlQXQocG9zaXRpb24pOworICAgIHZhciByZXN1bHRT
dHJpbmc7CisgICAgaWYgKGZpcnN0IDwgMHhEODAwIHx8IGZpcnN0ID4gMHhEQkZGIHx8IHBvc2l0
aW9uICsgMSA9PT0gbGVuZ3RoKQorICAgICAgICByZXN1bHRTdHJpbmcgPSBzdHJpbmdbcG9zaXRp
b25dOworICAgIGVsc2UgeworICAgICAgICB2YXIgc2Vjb25kID0gc3RyaW5nLkBjaGFyQ29kZUF0
KHBvc2l0aW9uICsgMSk7CisgICAgICAgIGlmIChzZWNvbmQgPCAweERDMDAgfHwgc2Vjb25kID4g
MHhERkZGKQorICAgICAgICAgICAgcmVzdWx0U3RyaW5nID0gc3RyaW5nW3Bvc2l0aW9uXTsKKyAg
ICAgICAgZWxzZQorICAgICAgICAgICAgcmVzdWx0U3RyaW5nID0gc3RyaW5nW3Bvc2l0aW9uXSAr
IHN0cmluZ1twb3NpdGlvbiArIDFdOworICAgIH0KKworICAgIHZhciByZXN1bHRTaXplID0gcmVz
dWx0U3RyaW5nLmxlbmd0aDsKKyAgICB0aGlzLkBzdHJpbmdJdGVyYXRvck5leHRJbmRleCA9IHBv
c2l0aW9uICsgcmVzdWx0U2l6ZTsKKworICAgIHJldHVybiB7CisgICAgICAgIHZhbHVlOiByZXN1
bHRTdHJpbmcsCisgICAgICAgIGRvbmU6IGZhbHNlCisgICAgfTsKK30KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5oCmluZGV4IGYxMTE3NzNm
MTA1NTc0OTgxZTk2ODc3YzQ3OTNlNGU5NWFkYjU4NTguLjE0NzcyNGM2NGQ0ODYyOGYzYTAzZGVm
YzIwOGY5N2FhOGZhOGQwZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0NvbW1vbklkZW50aWZpZXJzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvQ29tbW9uSWRlbnRpZmllcnMuaApAQCAtMjM1LDYgKzIzNSw5IEBACiAKICNkZWZpbmUgSlND
X0NPTU1PTl9QUklWQVRFX0lERU5USUZJRVJTX0VBQ0hfUFJPUEVSVFlfTkFNRShtYWNybykgXAog
ICAgIEpTQ19DT01NT05fUFJJVkFURV9JREVOVElGSUVSU19FQUNIX1dFTExfS05PV05fU1lNQk9M
KG1hY3JvKSBcCisgICAgbWFjcm8oY2hhckNvZGVBdCkgXAorICAgIG1hY3JvKGl0ZXJhdGVkU3Ry
aW5nKSBcCisgICAgbWFjcm8oc3RyaW5nSXRlcmF0b3JOZXh0SW5kZXgpIFwKICAgICBtYWNybyhp
dGVyYXRvck5leHQpIFwKICAgICBtYWNybyhyZXNvbHZlKSBcCiAgICAgbWFjcm8ocmVqZWN0KSBc
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVj
dC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAK
aW5kZXggNmJhOTIyZjc1MDEzMTk4M2M1ZWMxMTlkODc5MzcyNzI0MzA3OTZhMC4uYTdiMzZmMTEy
NmU5Yzg1MGNkNGYxMWI2YmRkMTc3ZGUyY2FlOGFhYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcApAQCAtODIsNiArODIsNyBAQAogI2lu
Y2x1ZGUgIkpTT05PYmplY3QuaCIKICNpbmNsdWRlICJKU1NldC5oIgogI2luY2x1ZGUgIkpTU2V0
SXRlcmF0b3IuaCIKKyNpbmNsdWRlICJKU1N0cmluZ0l0ZXJhdG9yLmgiCiAjaW5jbHVkZSAiSlNU
eXBlZEFycmF5Q29uc3RydWN0b3JzLmgiCiAjaW5jbHVkZSAiSlNUeXBlZEFycmF5UHJvdG90eXBl
cy5oIgogI2luY2x1ZGUgIkpTVHlwZWRBcnJheXMuaCIKQEAgLTExNSw2ICsxMTYsOCBAQAogI2lu
Y2x1ZGUgIlNldFByb3RvdHlwZS5oIgogI2luY2x1ZGUgIlN0cmljdEV2YWxBY3RpdmF0aW9uLmgi
CiAjaW5jbHVkZSAiU3RyaW5nQ29uc3RydWN0b3IuaCIKKyNpbmNsdWRlICJTdHJpbmdJdGVyYXRv
ckNvbnN0cnVjdG9yLmgiCisjaW5jbHVkZSAiU3RyaW5nSXRlcmF0b3JQcm90b3R5cGUuaCIKICNp
bmNsdWRlICJTdHJpbmdQcm90b3R5cGUuaCIKICNpbmNsdWRlICJTeW1ib2wuaCIKICNpbmNsdWRl
ICJTeW1ib2xDb25zdHJ1Y3Rvci5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTR2xvYmFsT2JqZWN0LmgKaW5kZXggNDFhYWY5NjNkN2Q0YzcxYjhhNzY5ZmQwNDExNmUwYTlj
NTk5M2E5YS4uYWUyYWUxYzZjOGZmYjE4Yjk5NzEzZTIyNDU2ZDNhMTMyYWIwNmViZiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCkBAIC0xMDks
NiArMTA5LDcgQEAgc3RydWN0IEhhc2hUYWJsZTsKICAgICBERUZJTkVfU1RBTkRBUkRfQlVJTFRJ
TihtYWNybywgQXJndW1lbnRzSXRlcmF0b3IsIGFyZ3VtZW50c0l0ZXJhdG9yKSBcCiAgICAgREVG
SU5FX1NUQU5EQVJEX0JVSUxUSU4obWFjcm8sIE1hcEl0ZXJhdG9yLCBtYXBJdGVyYXRvcikgXAog
ICAgIERFRklORV9TVEFOREFSRF9CVUlMVElOKG1hY3JvLCBTZXRJdGVyYXRvciwgc2V0SXRlcmF0
b3IpIFwKKyAgICBERUZJTkVfU1RBTkRBUkRfQlVJTFRJTihtYWNybywgU3RyaW5nSXRlcmF0b3Is
IHN0cmluZ0l0ZXJhdG9yKSBcCiAKIAogI2RlZmluZSBERUNMQVJFX1NJTVBMRV9CVUlMVElOX1RZ
UEUoY2FwaXRhbE5hbWUsIGxvd2VyTmFtZSwgcHJvcGVyTmFtZSwgaW5zdGFuY2VUeXBlLCBqc05h
bWUpIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5n
SXRlcmF0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmdJdGVy
YXRvci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uZDk2N2NlNzMzNTlkYjg0OWE3M2QzMzgyYTU2M2YwMjg5YTU5
ZDlkZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
U3RyaW5nSXRlcmF0b3IuY3BwCkBAIC0wLDAgKzEsNDUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTUgWXVzdWtlIFN1enVraSA8dXRhdGFuZS50ZWFAZ21haWwuY29tPi4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFO
RCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAq
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2lu
Y2x1ZGUgIkpTU3RyaW5nSXRlcmF0b3IuaCIKKworI2luY2x1ZGUgIkpTQ0pTVmFsdWVJbmxpbmVz
LmgiCisjaW5jbHVkZSAiSlNDZWxsSW5saW5lcy5oIgorI2luY2x1ZGUgIlN0cnVjdHVyZUlubGlu
ZXMuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2NvbnN0IENsYXNzSW5mbyBKU1N0cmluZ0l0ZXJh
dG9yOjpzX2luZm8gPSB7ICJTdHJpbmdJdGVyYXRvciIsICZCYXNlOjpzX2luZm8sIDAsIENSRUFU
RV9NRVRIT0RfVEFCTEUoSlNTdHJpbmdJdGVyYXRvcikgfTsKKwordm9pZCBKU1N0cmluZ0l0ZXJh
dG9yOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiwgSlNTdHJpbmcqIGl0
ZXJhdGVkU3RyaW5nKQoreworICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtKTsKKyAgICBBU1NF
UlQoaW5oZXJpdHMoaW5mbygpKSk7CisgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVz
LT5pdGVyYXRlZFN0cmluZ1ByaXZhdGVOYW1lLCBpdGVyYXRlZFN0cmluZyk7CisgICAgcHV0RGly
ZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5zdHJpbmdJdGVyYXRvck5leHRJbmRleFByaXZhdGVO
YW1lLCBqc051bWJlcigwKSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmdJdGVyYXRvci5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmdJdGVyYXRvci5oCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjFk
ZTBjOGEzNTIxZTYzZmE2NWJhMzIzNWMxZWJjZTVjZWRhMWJhYTMKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0cmluZ0l0ZXJhdG9yLmgKQEAgLTAs
MCArMSw2MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBZdXN1a2UgU3V6dWtpIDx1dGF0
YW5lLnRlYUBnbWFpbC5jb20+LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
CisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaWZuZGVmIEpTU3RyaW5nSXRlcmF0b3JfaAorI2RlZmluZSBKU1N0cmluZ0l0ZXJh
dG9yX2gKKworI2luY2x1ZGUgIkpTT2JqZWN0LmgiCisKK25hbWVzcGFjZSBKU0MgeworCitjbGFz
cyBKU1N0cmluZ0l0ZXJhdG9yIDogcHVibGljIEpTTm9uRmluYWxPYmplY3QgeworcHVibGljOgor
ICAgIHR5cGVkZWYgSlNOb25GaW5hbE9iamVjdCBCYXNlOworCisgICAgREVDTEFSRV9FWFBPUlRf
SU5GTzsKKworICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG90eXBlKQorICAgIHsKKyAg
ICAgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlw
ZSwgVHlwZUluZm8oT2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOworICAgIH0K
KworICAgIHN0YXRpYyBKU1N0cmluZ0l0ZXJhdG9yKiBjcmVhdGUoRXhlY1N0YXRlKiBleGVjLCBT
dHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNTdHJpbmcqIGl0ZXJhdGVkU3RyaW5nKQorICAgIHsKKyAg
ICAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICAgICAgSlNTdHJpbmdJdGVyYXRvciogaW5z
dGFuY2UgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxKU1N0cmluZ0l0ZXJhdG9yPih2bS5o
ZWFwKSkgSlNTdHJpbmdJdGVyYXRvcih2bSwgc3RydWN0dXJlKTsKKyAgICAgICAgaW5zdGFuY2Ut
PmZpbmlzaENyZWF0aW9uKHZtLCBzdHJ1Y3R1cmUtPmdsb2JhbE9iamVjdCgpLCBpdGVyYXRlZFN0
cmluZyk7CisgICAgICAgIHJldHVybiBpbnN0YW5jZTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAg
SlNTdHJpbmdJdGVyYXRvcihWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQorICAgICAgICA6
IEJhc2Uodm0sIHN0cnVjdHVyZSkKKyAgICB7CisgICAgfQorCisgICAgdm9pZCBmaW5pc2hDcmVh
dGlvbihWTSYsIEpTR2xvYmFsT2JqZWN0KiwgSlNTdHJpbmcqIGl0ZXJhdGVkU3RyaW5nKTsKK307
CisKK30KKworI2VuZGlmIC8vICFkZWZpbmVkKEpTU3RyaW5nSXRlcmF0b3JfaCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ0l0ZXJhdG9yQ29uc3RydWN0
b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nSXRlcmF0b3JDb25z
dHJ1Y3Rvci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDlhYjcwNjUzZTczZWRiOWZjMGU2NzVhMTM2MDBhNWE5
NTM2ZTJlNAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1N0cmluZ0l0ZXJhdG9yQ29uc3RydWN0b3IuY3BwCkBAIC0wLDAgKzEsNDMgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUsIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJ
UycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5o
IgorI2luY2x1ZGUgIlN0cmluZ0l0ZXJhdG9yQ29uc3RydWN0b3IuaCIKKworI2luY2x1ZGUgIkpT
Q0pTVmFsdWVJbmxpbmVzLmgiCisjaW5jbHVkZSAiSlNDZWxsSW5saW5lcy5oIgorI2luY2x1ZGUg
IkpTR2xvYmFsT2JqZWN0LmgiCisjaW5jbHVkZSAiU3RydWN0dXJlSW5saW5lcy5oIgorCituYW1l
c3BhY2UgSlNDIHsKKworY29uc3QgQ2xhc3NJbmZvIFN0cmluZ0l0ZXJhdG9yQ29uc3RydWN0b3I6
OnNfaW5mbyA9IHsgIkZ1bmN0aW9uIiwgJkJhc2U6OnNfaW5mbywgMCwgQ1JFQVRFX01FVEhPRF9U
QUJMRShTdHJpbmdJdGVyYXRvckNvbnN0cnVjdG9yKSB9OworCit2b2lkIFN0cmluZ0l0ZXJhdG9y
Q29uc3RydWN0b3I6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSkKK3sKKyAgICBCYXNlOjpmaW5pc2hD
cmVhdGlvbih2bSk7Cit9CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1N0cmluZ0l0ZXJhdG9yQ29uc3RydWN0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1N0cmluZ0l0ZXJhdG9yQ29uc3RydWN0b3IuaApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42MjQxMzYx
YjY3NmUyOTE1ZGYwZjVkMjE3YWE0ODc5NjA0MjI5ZTYwCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nSXRlcmF0b3JDb25zdHJ1Y3Rvci5oCkBA
IC0wLDAgKzEsNjMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUsIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgor
ICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2lmbmRlZiBTdHJpbmdJdGVyYXRvckNvbnN0cnVjdG9yX2gKKyNkZWZpbmUgU3RyaW5n
SXRlcmF0b3JDb25zdHJ1Y3Rvcl9oCisKKyNpbmNsdWRlICJJbnRlcm5hbEZ1bmN0aW9uLmgiCisK
K25hbWVzcGFjZSBKU0MgeworCitjbGFzcyBTdHJpbmdJdGVyYXRvclByb3RvdHlwZTsKKworY2xh
c3MgU3RyaW5nSXRlcmF0b3JDb25zdHJ1Y3RvciA6IHB1YmxpYyBKU05vbkZpbmFsT2JqZWN0IHsK
K3B1YmxpYzoKKyAgICB0eXBlZGVmIEpTTm9uRmluYWxPYmplY3QgQmFzZTsKKworICAgIHN0YXRp
YyBTdHJpbmdJdGVyYXRvckNvbnN0cnVjdG9yKiBjcmVhdGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSwgU3RyaW5nSXRlcmF0b3JQcm90b3R5cGUqKQorICAgIHsKKyAgICAgICAgU3RyaW5n
SXRlcmF0b3JDb25zdHJ1Y3RvciogY29uc3RydWN0b3IgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRl
Q2VsbDxTdHJpbmdJdGVyYXRvckNvbnN0cnVjdG9yPih2bS5oZWFwKSkgU3RyaW5nSXRlcmF0b3JD
b25zdHJ1Y3Rvcih2bSwgc3RydWN0dXJlKTsKKyAgICAgICAgY29uc3RydWN0b3ItPmZpbmlzaENy
ZWF0aW9uKHZtKTsKKyAgICAgICAgcmV0dXJuIGNvbnN0cnVjdG9yOworICAgIH0KKworICAgIERF
Q0xBUkVfSU5GTzsKKworICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYg
dm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG90eXBlKQorICAg
IHsKKyAgICAgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHBy
b3RvdHlwZSwgVHlwZUluZm8oT2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOwor
ICAgIH0KKworcHJpdmF0ZToKKyAgICBTdHJpbmdJdGVyYXRvckNvbnN0cnVjdG9yKFZNJiB2bSwg
U3RydWN0dXJlKiBzdHJ1Y3R1cmUpCisgICAgICAgIDogQmFzZSh2bSwgc3RydWN0dXJlKQorICAg
IHsKKyAgICB9CisgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYpOworfTsKKworfQorCisjZW5k
aWYgLy8gIWRlZmluZWQoU3RyaW5nSXRlcmF0b3JDb25zdHJ1Y3Rvcl9oKQpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nSXRlcmF0b3JQcm90b3R5cGUuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nSXRlcmF0b3JQcm90b3R5cGUu
Y3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjUzZTBjY2IzMTQ0ZjM5NTk2ZTY0NTVlYTdiMzJmNzU3MGJiZjFhZGIK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdJ
dGVyYXRvclByb3RvdHlwZS5jcHAKQEAgLTAsMCArMSw3NCBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxMyBBcHBsZSwgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChD
KSAyMDE1IFl1c3VrZSBTdXp1a2kgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4uCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBB
TkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisg
KiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNp
bmNsdWRlICJTdHJpbmdJdGVyYXRvclByb3RvdHlwZS5oIgorCisjaW5jbHVkZSAiSlNDSlNWYWx1
ZUlubGluZXMuaCIKKyNpbmNsdWRlICJKU0NlbGxJbmxpbmVzLmgiCisjaW5jbHVkZSAiSlNHbG9i
YWxPYmplY3QuaCIKKyNpbmNsdWRlICJKU1N0cmluZ0l0ZXJhdG9yLmgiCisjaW5jbHVkZSAiT2Jq
ZWN0Q29uc3RydWN0b3IuaCIKKyNpbmNsdWRlICJTdHJ1Y3R1cmVJbmxpbmVzLmgiCisKK25hbWVz
cGFjZSBKU0MgeworCitzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdJ
dGVyYXRvclByb3RvdHlwZUl0ZXJhdG9yKEV4ZWNTdGF0ZSopOworCit9CisKKyNpbmNsdWRlICJT
dHJpbmdJdGVyYXRvclByb3RvdHlwZS5sdXQuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2NvbnN0
IENsYXNzSW5mbyBTdHJpbmdJdGVyYXRvclByb3RvdHlwZTo6c19pbmZvID0geyAiU3RyaW5nIEl0
ZXJhdG9yIiwgJkJhc2U6OnNfaW5mbywgJnN0cmluZ0l0ZXJhdG9yUHJvdG90eXBlVGFibGUsIENS
RUFURV9NRVRIT0RfVEFCTEUoU3RyaW5nSXRlcmF0b3JQcm90b3R5cGUpIH07CisKKy8qIFNvdXJj
ZSBmb3IgU3RyaW5nSXRlcmF0b3JQcm90b3R5cGUubHV0LmgKK0BiZWdpbiBzdHJpbmdJdGVyYXRv
clByb3RvdHlwZVRhYmxlCisgIG5leHQgICAgICBzdHJpbmdJdGVyYXRvclByb3RvdHlwZUZ1bmNO
ZXh0ICBEb250RW51bXxGdW5jdGlvbiAwCitAZW5kCisqLworCit2b2lkIFN0cmluZ0l0ZXJhdG9y
UHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QpCit7CisgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0pOworICAgIEFTU0VSVChpbmhl
cml0cyhpbmZvKCkpKTsKKyAgICB2bS5wcm90b3R5cGVNYXAuYWRkUHJvdG90eXBlKHRoaXMpOwor
CisgICAgSlNDX05BVElWRV9GVU5DVElPTih2bS5wcm9wZXJ0eU5hbWVzLT5pdGVyYXRvclByaXZh
dGVOYW1lLCBzdHJpbmdJdGVyYXRvclByb3RvdHlwZUl0ZXJhdG9yLCBEb250RW51bSwgMCk7Cit9
CisKK2Jvb2wgU3RyaW5nSXRlcmF0b3JQcm90b3R5cGU6OmdldE93blByb3BlcnR5U2xvdChKU09i
amVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUs
IFByb3BlcnR5U2xvdCYgc2xvdCkKK3sKKyAgICByZXR1cm4gZ2V0U3RhdGljRnVuY3Rpb25TbG90
PEJhc2U+KGV4ZWMsIHN0cmluZ0l0ZXJhdG9yUHJvdG90eXBlVGFibGUsIGpzQ2FzdDxTdHJpbmdJ
dGVyYXRvclByb3RvdHlwZSo+KG9iamVjdCksIHByb3BlcnR5TmFtZSwgc2xvdCk7Cit9CisKK0Vu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nSXRlcmF0b3JQcm90b3R5cGVJdGVyYXRv
cihDYWxsRnJhbWUqIGNhbGxGcmFtZSkKK3sKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGNh
bGxGcmFtZS0+dGhpc1ZhbHVlKCkpOworfQorCit9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ0l0ZXJhdG9yUHJvdG90eXBl
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdJdGVyYXRvclByb3RvdHlw
ZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmNiYmQ5NjAzZGFjMTA0YWViYTJmNmIyNmM4NDNkYzZlZTg1OWQxMGUK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdJ
dGVyYXRvclByb3RvdHlwZS5oCkBAIC0wLDAgKzEsNjYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTMgQXBwbGUsIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykg
MjAxNSBZdXN1a2UgU3V6dWtpIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+LgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5E
IEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICog
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFN0cmluZ0l0ZXJhdG9yUHJv
dG90eXBlX2gKKyNkZWZpbmUgU3RyaW5nSXRlcmF0b3JQcm90b3R5cGVfaAorCisjaW5jbHVkZSAi
SlNPYmplY3QuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIFN0cmluZ0l0ZXJhdG9yUHJv
dG90eXBlIDogcHVibGljIEpTTm9uRmluYWxPYmplY3QgeworcHVibGljOgorICAgIHR5cGVkZWYg
SlNOb25GaW5hbE9iamVjdCBCYXNlOworCisgICAgc3RhdGljIFN0cmluZ0l0ZXJhdG9yUHJvdG90
eXBlKiBjcmVhdGUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1
cmUqIHN0cnVjdHVyZSkKKyAgICB7CisgICAgICAgIFN0cmluZ0l0ZXJhdG9yUHJvdG90eXBlKiBw
cm90b3R5cGUgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxTdHJpbmdJdGVyYXRvclByb3Rv
dHlwZT4odm0uaGVhcCkpIFN0cmluZ0l0ZXJhdG9yUHJvdG90eXBlKHZtLCBzdHJ1Y3R1cmUpOwor
ICAgICAgICBwcm90b3R5cGUtPmZpbmlzaENyZWF0aW9uKHZtLCBnbG9iYWxPYmplY3QpOworICAg
ICAgICByZXR1cm4gcHJvdG90eXBlOworICAgIH0KKworICAgIERFQ0xBUkVfSU5GTzsKKworICAg
IHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG90eXBlKQorICAgIHsKKyAgICAgICAgcmV0dXJu
IFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUluZm8o
T2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOworICAgIH0KKworcHJvdGVjdGVk
OgorICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IE92ZXJyaWRlc0dl
dE93blByb3BlcnR5U2xvdCB8IEJhc2U6OlN0cnVjdHVyZUZsYWdzOworCitwcml2YXRlOgorICAg
IFN0cmluZ0l0ZXJhdG9yUHJvdG90eXBlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCisg
ICAgICAgIDogQmFzZSh2bSwgc3RydWN0dXJlKQorICAgIHsKKyAgICB9CisgICAgdm9pZCBmaW5p
c2hDcmVhdGlvbihWTSYsIEpTR2xvYmFsT2JqZWN0Kik7CisgICAgc3RhdGljIGJvb2wgZ2V0T3du
UHJvcGVydHlTbG90KEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0
eVNsb3QmKTsKK307CisKK30KKworI2VuZGlmIC8vICFkZWZpbmVkKFN0cmluZ0l0ZXJhdG9yUHJv
dG90eXBlX2gpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJp
bmdQcm90b3R5cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nUHJv
dG90eXBlLmNwcAppbmRleCA1MWJmZGM3ZGQyZWQ0MzkzOTgxZjMwZDNlZWIxZTNkNTdiZTc2MTY4
Li40NGRjY2JhNjc4ZDNkOTk1ZGNmYWQ3ODBlZDBmNzQ1NzE4OGUzZTkzIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdQcm90b3R5cGUuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ1Byb3RvdHlwZS5jcHAKQEAgLTM0LDYg
KzM0LDcgQEAKICNpbmNsdWRlICJMb29rdXAuaCIKICNpbmNsdWRlICJPYmplY3RQcm90b3R5cGUu
aCIKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCisjaW5jbHVkZSAiSlNTdHJpbmdJdGVyYXRvci5o
IgogI2luY2x1ZGUgIlByb3BlcnR5TmFtZUFycmF5LmgiCiAjaW5jbHVkZSAiUmVnRXhwQ2FjaGUu
aCIKICNpbmNsdWRlICJSZWdFeHBDb25zdHJ1Y3Rvci5oIgpAQCAtODcsNiArODgsNyBAQCBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvRnVuY1RyaW1SaWdodChFeGVjU3Rh
dGUqKTsKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG9GdW5jU3RhcnRz
V2l0aChFeGVjU3RhdGUqKTsKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJv
dG9GdW5jRW5kc1dpdGgoRXhlY1N0YXRlKik7CiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IHN0cmluZ1Byb3RvRnVuY0luY2x1ZGVzKEV4ZWNTdGF0ZSopOworRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBzdHJpbmdQcm90b0Z1bmNJdGVyYXRvcihFeGVjU3RhdGUqKTsKIAogY29uc3Qg
Q2xhc3NJbmZvIFN0cmluZ1Byb3RvdHlwZTo6c19pbmZvID0geyAiU3RyaW5nIiwgJlN0cmluZ09i
amVjdDo6c19pbmZvLCAwLCBDUkVBVEVfTUVUSE9EX1RBQkxFKFN0cmluZ1Byb3RvdHlwZSkgfTsK
IApAQCAtMTQwLDYgKzE0Miw5IEBAIHZvaWQgU3RyaW5nUHJvdG90eXBlOjpmaW5pc2hDcmVhdGlv
bihWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTU3RyCiAgICAgSlNDX05B
VElWRV9GVU5DVElPTigic3RhcnRzV2l0aCIsIHN0cmluZ1Byb3RvRnVuY1N0YXJ0c1dpdGgsIERv
bnRFbnVtLCAwKTsKICAgICBKU0NfTkFUSVZFX0ZVTkNUSU9OKCJlbmRzV2l0aCIsIHN0cmluZ1By
b3RvRnVuY0VuZHNXaXRoLCBEb250RW51bSwgMCk7CiAgICAgSlNDX05BVElWRV9GVU5DVElPTigi
aW5jbHVkZXMiLCBzdHJpbmdQcm90b0Z1bmNJbmNsdWRlcywgRG9udEVudW0sIDApOworICAgIEpT
Q19OQVRJVkVfRlVOQ1RJT04odm0ucHJvcGVydHlOYW1lcy0+aXRlcmF0b3JQcml2YXRlTmFtZSwg
c3RyaW5nUHJvdG9GdW5jSXRlcmF0b3IsIERvbnRFbnVtLCAwKTsKKworICAgIEpTQ19OQVRJVkVf
SU5UUklOU0lDX0ZVTkNUSU9OKHZtLnByb3BlcnR5TmFtZXMtPmNoYXJDb2RlQXRQcml2YXRlTmFt
ZSwgc3RyaW5nUHJvdG9GdW5jQ2hhckNvZGVBdCwgRG9udEVudW0sIDEsIENoYXJDb2RlQXRJbnRy
aW5zaWMpOwogCiAgICAgLy8gVGhlIGNvbnN0cnVjdG9yIHdpbGwgYmUgYWRkZWQgbGF0ZXIsIGFm
dGVyIFN0cmluZ0NvbnN0cnVjdG9yIGhhcyBiZWVuIGJ1aWx0CiAgICAgcHV0RGlyZWN0V2l0aG91
dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPmxlbmd0aCwganNOdW1iZXIoMCksIERv
bnREZWxldGUgfCBSZWFkT25seSB8IERvbnRFbnVtKTsKQEAgLTE3MDIsNSArMTcwNywxNCBAQCBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvRnVuY0luY2x1ZGVzKEV4ZWNT
dGF0ZSogZXhlYykKIAogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNCb29sZWFuKHN0cmlu
Z1RvU2VhcmNoSW4uY29udGFpbnMoc2VhcmNoU3RyaW5nLCB0cnVlLCBzdGFydCkpKTsKIH0KLSAg
ICAKKworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90b0Z1bmNJdGVyYXRv
cihFeGVjU3RhdGUqIGV4ZWMpCit7CisgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlz
VmFsdWUoKTsKKyAgICBpZiAoIWNoZWNrT2JqZWN0Q29lcmNpYmxlKHRoaXNWYWx1ZSkpCisgICAg
ICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMpOworICAgIEpTU3RyaW5nKiBzdHJpbmcg
PSB0aGlzVmFsdWUudG9TdHJpbmcoZXhlYyk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShK
U1N0cmluZ0l0ZXJhdG9yOjpjcmVhdGUoZXhlYywgZXhlYy0+Y2FsbGVlKCktPmdsb2JhbE9iamVj
dCgpLT5zdHJpbmdJdGVyYXRvclN0cnVjdHVyZSgpLCBzdHJpbmcpKTsKK30KKwogfSAvLyBuYW1l
c3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNz
L3N0cmluZy1pdGVyYXRvcnMuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNz
L3N0cmluZy1pdGVyYXRvcnMuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzBmY2RiYzU3MjhhNTEyZDVkMDJhOTQ1
NjEzZWY1ZjdkNDM1YWFkNQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS90ZXN0cy9zdHJlc3Mvc3RyaW5nLWl0ZXJhdG9ycy5qcwpAQCAtMCwwICsxLDIwOSBAQAorLy8g
VGhpcyB0ZXN0IGNoZWNrcyB0aGUgYmVoYXZpb3Igb2YgdGhlIFN0cmluZyBpdGVyYXRvcgorCit2
YXIgdGVzdFN0cmluZyA9ICJDb2NvYSxDYXBwdWNjaW5vIjsKK3ZhciBzdHJpbmdJdGVyYXRvciA9
IHRlc3RTdHJpbmdbU3ltYm9sLml0ZXJhdG9yXSgpOwordmFyIHN0cmluZ0l0ZXJhdG9yUHJvdG90
eXBlID0gc3RyaW5nSXRlcmF0b3IuX19wcm90b19fOwordmFyIHN0cmluZ0l0ZXJhdG9yUHJvdG90
eXBlTmV4dCA9IHN0cmluZ0l0ZXJhdG9yUHJvdG90eXBlLm5leHQ7CisKK2lmIChzdHJpbmdJdGVy
YXRvci5oYXNPd25Qcm9wZXJ0eSgnbmV4dCcpKQorICAgIHRocm93ICJuZXh0IG1ldGhvZCBzaG91
bGQgZXhpc3RzIG9uICVTdHJpbmdJdGVyYXRvclByb3RvdHlwZSUiOworaWYgKCFzdHJpbmdJdGVy
YXRvclByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eSgnbmV4dCcpKQorICAgIHRocm93ICJuZXh0IG1l
dGhvZCBzaG91bGQgZXhpc3RzIG9uICVTdHJpbmdJdGVyYXRvclByb3RvdHlwZSUiOworCit2YXIg
aXRlcmF0b3IgPSB0ZXN0U3RyaW5nW1N5bWJvbC5pdGVyYXRvcl0oKTsKK3ZhciBpID0gMDsKK3do
aWxlICh0cnVlKSB7CisgICAgdmFyIHtkb25lLCB2YWx1ZX0gPSBpdGVyYXRvci5uZXh0KCk7Cisg
ICAgaWYgKGRvbmUpCisgICAgICAgIGJyZWFrOworICAgIGlmICh2YWx1ZSAhPT0gdGVzdFN0cmlu
Z1tpXSkKKyAgICAgICAgdGhyb3cgIkVycm9yOiBiYWQgdmFsdWU6ICIgKyB2YWx1ZTsKKyAgICBp
Kys7Cit9CisKK2lmICh0ZXN0U3RyaW5nLmxlbmd0aCAhPT0gaSkKKyAgICB0aHJvdyAiRXJyb3I6
IGJhZCB2YWx1ZTogIiArIGk7CisKK2Z1bmN0aW9uIHRlc3RTdXJyb2dhdGVQYWlyKHRlc3RTdHJp
bmcsIGV4cGVjdGVkLCBudW1iZXJPZkVsZW1lbnRzKSB7CisgICAgaWYgKHRlc3RTdHJpbmcubGVu
Z3RoICE9PSBudW1iZXJPZkVsZW1lbnRzKQorICAgICAgICB0aHJvdyAiRXJyb3I6IGJhZCB2YWx1
ZTogIiArIHRlc3RTdHJpbmcubGVuZ3RoOworCisgICAgdmFyIGl0ZXJhdG9yID0gdGVzdFN0cmlu
Z1tTeW1ib2wuaXRlcmF0b3JdKCk7CisgICAgdmFyIGkgPSAwOworICAgIHdoaWxlICh0cnVlKSB7
CisgICAgICAgIHZhciB7ZG9uZSwgdmFsdWV9ID0gaXRlcmF0b3IubmV4dCgpOworICAgICAgICBp
ZiAoZG9uZSkKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBpZiAodmFsdWUgIT09IGV4cGVj
dGVkW2ldKQorICAgICAgICAgICAgdGhyb3cgIkVycm9yOiBiYWQgdmFsdWU6ICIgKyB2YWx1ZTsK
KyAgICAgICAgaSsrOworICAgIH0KKworICAgIGlmIChpICE9PSBleHBlY3RlZC5sZW5ndGgpCisg
ICAgICAgIHRocm93ICJFcnJvcjogYmFkIHZhbHVlOiAiICsgaTsKKworICAgIGZvciAodmFyIGNv
ZGVQb2ludCBvZiB0ZXN0U3RyaW5nKSB7CisgICAgICAgIGlmICh2YWx1ZSAhPT0gZXhwZWN0ZWRb
aV0pCisgICAgICAgICAgICB0aHJvdyAiRXJyb3I6IGJhZCB2YWx1ZTogIiArIHZhbHVlOworICAg
IH0KK30KKworLy8gIlx1RDg0Mlx1REZCN1x1OTFjZVx1NWJiNiIKK3ZhciB0ZXN0U3RyaW5nID0g
IvCgrrfph47lrrYiOwordmFyIGV4cGVjdGVkID0gWworICAgIFN0cmluZy5mcm9tQ2hhckNvZGUo
MHhEODQyLCAweERGQjcpLAorICAgIFN0cmluZy5mcm9tQ2hhckNvZGUoMHg5MUNFKSwKKyAgICBT
dHJpbmcuZnJvbUNoYXJDb2RlKDB4NUJCNiksCitdOwordGVzdFN1cnJvZ2F0ZVBhaXIodGVzdFN0
cmluZywgZXhwZWN0ZWQsIDQpOworCit2YXIgdGVzdFN0cmluZyA9ICJBXHVEODQyIjsKK3ZhciBl
eHBlY3RlZCA9IFsKKyAgICBTdHJpbmcuZnJvbUNoYXJDb2RlKDB4MDA0MSksCisgICAgU3RyaW5n
LmZyb21DaGFyQ29kZSgweEQ4NDIpLAorXTsKK3Rlc3RTdXJyb2dhdGVQYWlyKHRlc3RTdHJpbmcs
IGV4cGVjdGVkLCAyKTsKKwordmFyIHRlc3RTdHJpbmcgPSAiQVx1RDg0MkEiOwordmFyIGV4cGVj
dGVkID0gWworICAgIFN0cmluZy5mcm9tQ2hhckNvZGUoMHgwMDQxKSwKKyAgICBTdHJpbmcuZnJv
bUNoYXJDb2RlKDB4RDg0MiksCisgICAgU3RyaW5nLmZyb21DaGFyQ29kZSgweDAwNDEpLAorXTsK
K3Rlc3RTdXJyb2dhdGVQYWlyKHRlc3RTdHJpbmcsIGV4cGVjdGVkLCAzKTsKKwordmFyIHRlc3RT
dHJpbmcgPSAiQVx1RDg0Mlx1REZCNyI7Cit2YXIgZXhwZWN0ZWQgPSBbCisgICAgU3RyaW5nLmZy
b21DaGFyQ29kZSgweDAwNDEpLAorICAgIFN0cmluZy5mcm9tQ2hhckNvZGUoMHhEODQyLCAweERG
QjcpLAorXTsKK3Rlc3RTdXJyb2dhdGVQYWlyKHRlc3RTdHJpbmcsIGV4cGVjdGVkLCAzKTsKKwor
dmFyIHRlc3RTdHJpbmcgPSAiXHVEODQyQVx1REZCNyI7Cit2YXIgZXhwZWN0ZWQgPSBbCisgICAg
U3RyaW5nLmZyb21DaGFyQ29kZSgweEQ4NDIpLAorICAgIFN0cmluZy5mcm9tQ2hhckNvZGUoMHgw
MDQxKSwKKyAgICBTdHJpbmcuZnJvbUNoYXJDb2RlKDB4REZCNyksCitdOwordGVzdFN1cnJvZ2F0
ZVBhaXIodGVzdFN0cmluZywgZXhwZWN0ZWQsIDMpOworCit2YXIgdGVzdFN0cmluZyA9ICJcdURG
QjdcdUQ4NDJBIjsKK3ZhciBleHBlY3RlZCA9IFsKKyAgICBTdHJpbmcuZnJvbUNoYXJDb2RlKDB4
REZCNyksCisgICAgU3RyaW5nLmZyb21DaGFyQ29kZSgweEQ4NDIpLAorICAgIFN0cmluZy5mcm9t
Q2hhckNvZGUoMHgwMDQxKSwKK107Cit0ZXN0U3Vycm9nYXRlUGFpcih0ZXN0U3RyaW5nLCBleHBl
Y3RlZCwgMyk7CisKK3ZhciBzdHJpbmcxID0gIkNvY29hIjsKK3ZhciBzdHJpbmcxSXRlcmF0b3Ig
PSBzdHJpbmcxW1N5bWJvbC5pdGVyYXRvcl0oKTsKK3ZhciBpbmRleCA9IDA7Cit3aGlsZSAodHJ1
ZSkgeworICAgIHZhciByZXN1bHQgPSBzdHJpbmdJdGVyYXRvclByb3RvdHlwZU5leHQuY2FsbChz
dHJpbmcxSXRlcmF0b3IpOworICAgIHZhciB2YWx1ZSA9IHJlc3VsdC52YWx1ZTsKKyAgICBpZiAo
cmVzdWx0LmRvbmUpIHsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGlmICh2YWx1ZSAhPT0g
c3RyaW5nMVtpbmRleCsrXSkKKyAgICAgICAgdGhyb3cgIkVycm9yOiBiYWQgdmFsdWU6ICIgKyB2
YWx1ZTsKK30KK2lmIChpbmRleCAhPT0gNSkKKyAgICB0aHJvdyAiRXJyb3I6IGJhZCBpbmRleDog
IiArIGluZGV4OworCitmdW5jdGlvbiBpbmNyZW1lbnQoaXRlcikgeworICAgIHJldHVybiBzdHJp
bmdJdGVyYXRvclByb3RvdHlwZU5leHQuY2FsbChpdGVyKTsKK30KK3ZhciBzdHJpbmcxID0gIkNv
Y29hIjsKK3ZhciBzdHJpbmcyID0gIkNvY29hIjsKK3ZhciBzdHJpbmcxSXRlcmF0b3IgPSBzdHJp
bmcxW1N5bWJvbC5pdGVyYXRvcl0oKTsKK3ZhciBzdHJpbmcySXRlcmF0b3IgPSBzdHJpbmcyW1N5
bWJvbC5pdGVyYXRvcl0oKTsKK2ZvciAodmFyIGkgPSAwOyBpIDwgMzsgKytpKSB7CisgICAgdmFy
IHZhbHVlMSA9IGluY3JlbWVudChzdHJpbmcxSXRlcmF0b3IpLnZhbHVlOworICAgIHZhciB2YWx1
ZTIgPSBpbmNyZW1lbnQoc3RyaW5nMkl0ZXJhdG9yKS52YWx1ZTsKKyAgICBpZiAodmFsdWUxICE9
PSB2YWx1ZTIpCisgICAgICAgIHRocm93ICJFcnJvcjogYmFkIHZhbHVlOiAiICsgdmFsdWUxICsg
IiAiICsgdmFsdWUyOworfQorCit2YXIgc3RyaW5nMSA9ICJDYXBwdWNjaW5vIjsKK3ZhciBzdHJp
bmcxSXRlcmF0b3IgPSBzdHJpbmcxW1N5bWJvbC5pdGVyYXRvcl0oKTsKKwordmFyIHZhbHVlID0g
c3RyaW5nMUl0ZXJhdG9yLm5leHQoKS52YWx1ZTsKK2lmICh2YWx1ZSAhPT0gIkMiKQorICAgIHRo
cm93ICJFcnJvcjogYmFkIHZhbHVlOiAiICsgdmFsdWU7Cit2YXIgdmFsdWUgPSBzdHJpbmcxSXRl
cmF0b3IubmV4dCgpLnZhbHVlOworaWYgKHZhbHVlICE9PSAiYSIpCisgICAgdGhyb3cgIkVycm9y
OiBiYWQgdmFsdWU6ICIgKyB2YWx1ZTsKK3ZhciB2YWx1ZSA9IHN0cmluZzFJdGVyYXRvci5uZXh0
KCkudmFsdWU7CitpZiAodmFsdWUgIT09ICJwIikKKyAgICB0aHJvdyAiRXJyb3I6IGJhZCB2YWx1
ZTogIiArIHZhbHVlOwordmFyIHZhbHVlID0gc3RyaW5nSXRlcmF0b3JQcm90b3R5cGVOZXh0LmNh
bGwoc3RyaW5nMUl0ZXJhdG9yKS52YWx1ZTsKK2lmICh2YWx1ZSAhPT0gInAiKQorICAgIHRocm93
ICJFcnJvcjogYmFkIHZhbHVlOiAiICsgdmFsdWU7Cit2YXIgdmFsdWUgPSBzdHJpbmdJdGVyYXRv
clByb3RvdHlwZU5leHQuY2FsbChzdHJpbmcxSXRlcmF0b3IpLnZhbHVlOworaWYgKHZhbHVlICE9
PSAidSIpCisgICAgdGhyb3cgIkVycm9yOiBiYWQgdmFsdWU6ICIgKyB2YWx1ZTsKK3ZhciB2YWx1
ZSA9IHN0cmluZ0l0ZXJhdG9yUHJvdG90eXBlTmV4dC5jYWxsKHN0cmluZzFJdGVyYXRvcikudmFs
dWU7CitpZiAodmFsdWUgIT09ICJjIikKKyAgICB0aHJvdyAiRXJyb3I6IGJhZCB2YWx1ZTogIiAr
IHZhbHVlOwordmFyIHZhbHVlID0gc3RyaW5nSXRlcmF0b3JQcm90b3R5cGVOZXh0LmNhbGwoc3Ry
aW5nMUl0ZXJhdG9yKS52YWx1ZTsKK2lmICh2YWx1ZSAhPT0gImMiKQorICAgIHRocm93ICJFcnJv
cjogYmFkIHZhbHVlOiAiICsgdmFsdWU7Cit2YXIgdmFsdWUgPSBzdHJpbmdJdGVyYXRvclByb3Rv
dHlwZU5leHQuY2FsbChzdHJpbmcxSXRlcmF0b3IpLnZhbHVlOworaWYgKHZhbHVlICE9PSAiaSIp
CisgICAgdGhyb3cgIkVycm9yOiBiYWQgdmFsdWU6ICIgKyB2YWx1ZTsKK3ZhciB2YWx1ZSA9IHN0
cmluZ0l0ZXJhdG9yUHJvdG90eXBlTmV4dC5jYWxsKHN0cmluZzFJdGVyYXRvcikudmFsdWU7Citp
ZiAodmFsdWUgIT09ICJuIikKKyAgICB0aHJvdyAiRXJyb3I6IGJhZCB2YWx1ZTogIiArIHZhbHVl
OwordmFyIHZhbHVlID0gc3RyaW5nSXRlcmF0b3JQcm90b3R5cGVOZXh0LmNhbGwoc3RyaW5nMUl0
ZXJhdG9yKS52YWx1ZTsKK2lmICh2YWx1ZSAhPT0gIm8iKQorICAgIHRocm93ICJFcnJvcjogYmFk
IHZhbHVlOiAiICsgdmFsdWU7Cit2YXIgdmFsdWUgPSBzdHJpbmdJdGVyYXRvclByb3RvdHlwZU5l
eHQuY2FsbChzdHJpbmcxSXRlcmF0b3IpLnZhbHVlOworaWYgKHZhbHVlICE9PSB1bmRlZmluZWQp
CisgICAgdGhyb3cgIkVycm9yOiBiYWQgdmFsdWU6ICIgKyB2YWx1ZTsKKwordmFyIHByaW1pdGl2
ZXMgPSBbCisgICAgInN0cmluZyIsCisgICAgNDIsCisgICAgMC4wMywKKyAgICBmYWxzZSwKKyAg
ICB0cnVlLAorICAgIFN5bWJvbCgiQ29jb2EiKSwKKyAgICBudWxsLAorICAgIHVuZGVmaW5lZAor
XTsKK2ZvciAodmFyIHByaW1pdGl2ZSBvZiBwcmltaXRpdmVzKSB7CisgICAgdmFyIGRpZFRocm93
ID0gbnVsbDsKKyAgICB0cnkgeworICAgICAgICBzdHJpbmdJdGVyYXRvclByb3RvdHlwZU5leHQu
Y2FsbChwcmltaXRpdmUpOworICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAgZGlkVGhyb3cgPSBl
OworICAgIH0KKyAgICBpZiAoIWRpZFRocm93KQorICAgICAgICB0aHJvdyAiRXJyb3I6IG5vIGVy
cm9yIHRocm93biI7CisgICAgaWYgKFN0cmluZyhkaWRUaHJvdykgIT09ICdUeXBlRXJyb3I6ICVT
dHJpbmdJdGVyYXRvclByb3RvdHlwZSUubmV4dCByZXF1aXJlcyB0aGF0IHx0aGlzfCBiZSBPYmpl
Y3QnKQorICAgICAgICB0aHJvdyAiRXJyb3I6IGJhZCBlcnJvciB0aHJvd246ICIgKyBkaWRUaHJv
dzsKK30KKwordmFyIG5vblJlbGF0ZWRPYmplY3RzID0gWworICAgIHt9LAorICAgIFtdLAorICAg
IG5ldyBEYXRlKCksCisgICAgbmV3IEVycm9yKCksCisgICAgT2JqZWN0KFN5bWJvbCgpKSwKKyAg
ICBuZXcgU3RyaW5nKCJDYXBwdWNjaW5vIiksCisgICAgbmV3IE51bWJlcig0MiksCisgICAgbmV3
IEJvb2xlYW4oZmFsc2UpLAorICAgIGZ1bmN0aW9uICgpIHsgfSwKK107Citmb3IgKHZhciBvYmpl
Y3Qgb2Ygbm9uUmVsYXRlZE9iamVjdHMpIHsKKyAgICB2YXIgZGlkVGhyb3cgPSBudWxsOworICAg
IHRyeSB7CisgICAgICAgIHN0cmluZ0l0ZXJhdG9yUHJvdG90eXBlTmV4dC5jYWxsKG9iamVjdCk7
CisgICAgfSBjYXRjaCAoZSkgeworICAgICAgICBkaWRUaHJvdyA9IGU7CisgICAgfQorICAgIGlm
ICghZGlkVGhyb3cpCisgICAgICAgIHRocm93ICJFcnJvcjogbm8gZXJyb3IgdGhyb3duIjsKKyAg
ICBpZiAoU3RyaW5nKGRpZFRocm93KSAhPT0gJ1R5cGVFcnJvcjogJVN0cmluZ0l0ZXJhdG9yUHJv
dG90eXBlJS5uZXh0IHJlcXVpcmVzIHRoYXQgfHRoaXN8IGJlIFN0cmluZyBJdGVyYXRvciBJbnN0
YW5jZScpCisgICAgICAgIHRocm93ICJFcnJvcjogYmFkIGVycm9yIHRocm93bjogIiArIGRpZFRo
cm93OworfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>247767</attachid>
            <date>2015-03-03 10:15:01 -0800</date>
            <delta_ts>2015-03-05 08:38:56 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-142080-20150304031442.patch</filename>
            <type>text/plain</type>
            <size>47568</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTgwOTM5CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBk
ZWYwM2JiZTFjOWQ3MTVmOGZmY2ExNmQ2NmE1Nzg5OWQzZDRmNjFhLi40ZGExNTdlZTFjNDVmNDhj
OWZjYTgwNDZmNTBlMGNkZGE1OTc4MzFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw1MiBAQAorMjAxNS0wMy0wMyAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KKworICAgICAgICBJbXBsZW1lbnQgRVM2IFN0cmluZ0l0ZXJhdG9yCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDIwODAKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIGludHJvZHVj
ZXMgRVM2IFN0cmluZyBJdGVyYXRvci4KKyAgICAgICAgSXQgZW51bWVyYXRlcyBjb2RlIHBvaW50
cyBpbnN0ZWFkIG9mIGVsZW1lbnRzIGluIFN0cmluZy4KKyAgICAgICAgU28gc3Vycm9nYXRlIHBh
aXJzIHNob3VsZCBiZSBoYW5kbGVkIGNvcnJlY3RseS4KKworICAgICAgICAqIENNYWtlTGlzdHMu
dHh0OgorICAgICAgICAqIERlcml2ZWRTb3VyY2VzLm1ha2U6CisgICAgICAgICogSmF2YVNjcmlw
dENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qOgorICAgICAgICAqIEphdmFTY3Jp
cHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvai5maWx0ZXJzOgorICAgICAgICAq
IEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogYnVp
bHRpbnMvU3RyaW5nSXRlcmF0b3IucHJvdG90eXBlLmpzOiBBZGRlZC4KKyAgICAgICAgKG5leHQp
OgorICAgICAgICAqIHJ1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuaDoKKyAgICAgICAgKiBydW50
aW1lL0pTR2xvYmFsT2JqZWN0LmNwcDoKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0
Lmg6CisgICAgICAgICogcnVudGltZS9KU1N0cmluZ0l0ZXJhdG9yLmNwcDogQWRkZWQuCisgICAg
ICAgIChKU0M6OkpTU3RyaW5nSXRlcmF0b3I6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKiBy
dW50aW1lL0pTU3RyaW5nSXRlcmF0b3IuaDogQWRkZWQuCisgICAgICAgIChKU0M6OkpTU3RyaW5n
SXRlcmF0b3I6OmNyZWF0ZVN0cnVjdHVyZSk6CisgICAgICAgIChKU0M6OkpTU3RyaW5nSXRlcmF0
b3I6OmNyZWF0ZSk6CisgICAgICAgIChKU0M6OkpTU3RyaW5nSXRlcmF0b3I6OkpTU3RyaW5nSXRl
cmF0b3IpOgorICAgICAgICAqIHJ1bnRpbWUvU3RyaW5nSXRlcmF0b3JDb25zdHJ1Y3Rvci5jcHA6
IEFkZGVkLgorICAgICAgICAoSlNDOjpTdHJpbmdJdGVyYXRvckNvbnN0cnVjdG9yOjpmaW5pc2hD
cmVhdGlvbik6CisgICAgICAgICogcnVudGltZS9TdHJpbmdJdGVyYXRvckNvbnN0cnVjdG9yLmg6
IEFkZGVkLgorICAgICAgICAoSlNDOjpTdHJpbmdJdGVyYXRvckNvbnN0cnVjdG9yOjpjcmVhdGUp
OgorICAgICAgICAoSlNDOjpTdHJpbmdJdGVyYXRvckNvbnN0cnVjdG9yOjpjcmVhdGVTdHJ1Y3R1
cmUpOgorICAgICAgICAoSlNDOjpTdHJpbmdJdGVyYXRvckNvbnN0cnVjdG9yOjpTdHJpbmdJdGVy
YXRvckNvbnN0cnVjdG9yKToKKyAgICAgICAgKiBydW50aW1lL1N0cmluZ0l0ZXJhdG9yUHJvdG90
eXBlLmNwcDogQWRkZWQuCisgICAgICAgIChKU0M6OlN0cmluZ0l0ZXJhdG9yUHJvdG90eXBlOjpm
aW5pc2hDcmVhdGlvbik6CisgICAgICAgIChKU0M6OlN0cmluZ0l0ZXJhdG9yUHJvdG90eXBlOjpn
ZXRPd25Qcm9wZXJ0eVNsb3QpOgorICAgICAgICAoSlNDOjpzdHJpbmdJdGVyYXRvclByb3RvdHlw
ZUl0ZXJhdG9yKToKKyAgICAgICAgKiBydW50aW1lL1N0cmluZ0l0ZXJhdG9yUHJvdG90eXBlLmg6
IEFkZGVkLgorICAgICAgICAoSlNDOjpTdHJpbmdJdGVyYXRvclByb3RvdHlwZTo6Y3JlYXRlKToK
KyAgICAgICAgKEpTQzo6U3RyaW5nSXRlcmF0b3JQcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZSk6
CisgICAgICAgIChKU0M6OlN0cmluZ0l0ZXJhdG9yUHJvdG90eXBlOjpTdHJpbmdJdGVyYXRvclBy
b3RvdHlwZSk6CisgICAgICAgICogcnVudGltZS9TdHJpbmdQcm90b3R5cGUuY3BwOgorICAgICAg
ICAoSlNDOjpTdHJpbmdQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKEpTQzo6
c3RyaW5nUHJvdG9GdW5jSXRlcmF0b3IpOgorICAgICAgICAqIHRlc3RzL3N0cmVzcy9zdHJpbmct
aXRlcmF0b3JzLmpzOiBBZGRlZC4KKyAgICAgICAgKHRlc3RTdXJyb2dhdGVQYWlyKToKKyAgICAg
ICAgKGluY3JlbWVudCk6CisgICAgICAgIChmb3IpOgorCiAyMDE1LTAzLTAzICBwZWF2b0BvdXRs
b29rLmNvbSAgPHBlYXZvQG91dGxvb2suY29tPgogCiAgICAgICAgIFtXaW42NF0gSlNDIGNvbXBp
bGUgZXJyb3IuCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50
eHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXggZjljYmRkY2Nm
ZmZlYWEzMDAyMTQ5MGFhMWY3OTliNTY0ZTIwMWFkNC4uZmUwNmNjNjY3ZTBjOTVlM2JiNDFhODE3
MzY1NjFiODdiYjA1MmFlNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtl
TGlzdHMudHh0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dApAQCAt
NDk0LDYgKzQ5NCw3IEBAIHNldChKYXZhU2NyaXB0Q29yZV9SVU5USU1FX1NPVVJDRVMKICAgICBy
dW50aW1lL0pTU2V0LmNwcAogICAgIHJ1bnRpbWUvSlNTZXRJdGVyYXRvci5jcHAKICAgICBydW50
aW1lL0pTU3RyaW5nLmNwcAorICAgIHJ1bnRpbWUvSlNTdHJpbmdJdGVyYXRvci5jcHAKICAgICBy
dW50aW1lL0pTU3RyaW5nSm9pbmVyLmNwcAogICAgIHJ1bnRpbWUvSlNTeW1ib2xUYWJsZU9iamVj
dC5jcHAKICAgICBydW50aW1lL0pTVHlwZWRBcnJheUNvbnN0cnVjdG9ycy5jcHAKQEAgLTU0NSw2
ICs1NDYsOCBAQCBzZXQoSmF2YVNjcmlwdENvcmVfUlVOVElNRV9TT1VSQ0VTCiAgICAgcnVudGlt
ZS9TcGFyc2VBcnJheVZhbHVlTWFwLmNwcAogICAgIHJ1bnRpbWUvU3RyaWN0RXZhbEFjdGl2YXRp
b24uY3BwCiAgICAgcnVudGltZS9TdHJpbmdDb25zdHJ1Y3Rvci5jcHAKKyAgICBydW50aW1lL1N0
cmluZ0l0ZXJhdG9yQ29uc3RydWN0b3IuY3BwCisgICAgcnVudGltZS9TdHJpbmdJdGVyYXRvclBy
b3RvdHlwZS5jcHAKICAgICBydW50aW1lL1N0cmluZ09iamVjdC5jcHAKICAgICBydW50aW1lL1N0
cmluZ1Byb3RvdHlwZS5jcHAKICAgICBydW50aW1lL1N0cmluZ1JlY3Vyc2lvbkNoZWNrZXIuY3Bw
CkBAIC01OTYsNiArNTk5LDcgQEAgc2V0KEphdmFTY3JpcHRDb3JlX0xVVF9GSUxFUwogICAgIHJ1
bnRpbWUvUmVnRXhwT2JqZWN0LmNwcAogICAgIHJ1bnRpbWUvUmVnRXhwUHJvdG90eXBlLmNwcAog
ICAgIHJ1bnRpbWUvU3RyaW5nQ29uc3RydWN0b3IuY3BwCisgICAgcnVudGltZS9TdHJpbmdJdGVy
YXRvclByb3RvdHlwZS5jcHAKICAgICBydW50aW1lL1N5bWJvbFByb3RvdHlwZS5jcHAKICkKIApk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQppbmRleCA0YTI2MjNlZjVj
OWM3NTZkNWRhNTQ3ZjFkM2Q2NWNlYTlhMTc2OTVhLi40MDYxOTFkNjM4YzM4MDkzNTQ4YTczNzY1
ZWNiZDU3ZTBkMGI5NDgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZl
ZFNvdXJjZXMubWFrZQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJjZXMu
bWFrZQpAQCAtNTYsNiArNTYsNyBAQCBhbGwgOiBcCiAgICAgUmVnRXhwSml0VGFibGVzLmggXAog
ICAgIFJlZ0V4cE9iamVjdC5sdXQuaCBcCiAgICAgU3RyaW5nQ29uc3RydWN0b3IubHV0LmggXAor
ICAgIFN0cmluZ0l0ZXJhdG9yUHJvdG90eXBlLmx1dC5oIFwKICAgICBTeW1ib2xQcm90b3R5cGUu
bHV0LmggXAogICAgIHVkaXM4Nl9pdGFiLmggXAogICAgIEJ5dGVjb2Rlcy5oIFwKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3Jp
cHRDb3JlLnZjeHByb2ogYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4
cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qCmluZGV4IDgzMTA3MGNjMjZkMzExNmIyMGUzZDg4
YzkyMzNlMzc5OGRkZmY2OTEuLjczNTgwMmI2MTIyYjBiYWQ1ZjJiYWQ4MzI3MDMxNDRjNzk0NWRj
NGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hw
cm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2oKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0ph
dmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvagpAQCAtNzYwLDYgKzc2
MCw3IEBACiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTU2V0LmNwcCIgLz4K
ICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSlNTZXRJdGVyYXRvci5jcHAiIC8+
CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTU3RyaW5nLmNwcCIgLz4KKyAg
ICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSlNTdHJpbmdJdGVyYXRvci5jcHAiIC8+
CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTU3RyaW5nSm9pbmVyLmNwcCIg
Lz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSlNTeW1ib2xUYWJsZU9iamVj
dC5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTVHlwZWRBcnJh
eUNvbnN0cnVjdG9ycy5jcHAiIC8+CkBAIC04MTMsNiArODE0LDggQEAKICAgICA8Q2xDb21waWxl
IEluY2x1ZGU9Ii4uXHJ1bnRpbWVcU3RyaWN0RXZhbEFjdGl2YXRpb24uY3BwIiAvPgogICAgIDxD
bENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGltZVxTdHJpbmdDb25zdHJ1Y3Rvci5jcHAiIC8+CiAg
ICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1lXFN0cmluZ09iamVjdC5jcHAiIC8+Cisg
ICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1lXFN0cmluZ0l0ZXJhdG9yQ29uc3RydWN0
b3IuY3BwIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGltZVxTdHJpbmdJdGVy
YXRvclByb3RvdHlwZS5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1l
XFN0cmluZ1Byb3RvdHlwZS5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50
aW1lXFN0cmluZ1JlY3Vyc2lvbkNoZWNrZXIuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVk
ZT0iLi5ccnVudGltZVxTdHJ1Y3R1cmUuY3BwIiAvPgpAQCAtMTU1MSw2ICsxNTU0LDcgQEAKICAg
ICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSlNTZXRJdGVyYXRvci5oIiAvPgogICAg
IDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU1N0cmluZy5oIiAvPgogICAgIDxDbElu
Y2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU1N0cmluZ0J1aWxkZXIuaCIgLz4KKyAgICA8Q2xJ
bmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSlNTdHJpbmdJdGVyYXRvci5oIiAvPgogICAgIDxD
bEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU1N0cmluZ0pvaW5lci5oIiAvPgogICAgIDxD
bEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU1N5bWJvbFRhYmxlT2JqZWN0LmgiIC8+CiAg
ICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTVHlwZS5oIiAvPgpAQCAtMTYyMyw2
ICsxNjI3LDggQEAKICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcU3RhY2tBbGln
bm1lbnQuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcU3RyaWN0RXZh
bEFjdGl2YXRpb24uaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcU3Ry
aW5nQ29uc3RydWN0b3IuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVc
U3RyaW5nSXRlcmF0b3JDb25zdHJ1Y3Rvci5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0i
Li5ccnVudGltZVxTdHJpbmdJdGVyYXRvclByb3RvdHlwZS5oIiAvPgogICAgIDxDbEluY2x1ZGUg
SW5jbHVkZT0iLi5ccnVudGltZVxTdHJpbmdPYmplY3QuaCIgLz4KICAgICA8Q2xJbmNsdWRlIElu
Y2x1ZGU9Ii4uXHJ1bnRpbWVcU3RyaW5nUHJvdG90eXBlLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJ
bmNsdWRlPSIuLlxydW50aW1lXFN0cmluZ1JlY3Vyc2lvbkNoZWNrZXIuaCIgLz4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3Jp
cHRDb3JlLnZjeHByb2ouZmlsdGVycyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0
Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2ouZmlsdGVycwppbmRleCBmZmY3MjBj
ODFkMDI2NDRjZWQ0NzVmMTBkY2ZiYzBkMGNiMjZmOTkzLi5kNzEwMWE5M2VlY2VmODU5N2QwOTA4
MDQ1NjczOTQ1N2M4NmRjZTZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2
YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qLmZpbHRlcnMKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENv
cmUudmN4cHJvai5maWx0ZXJzCkBAIC03MDIsNiArNzAyLDkgQEAKICAgICA8Q2xDb21waWxlIElu
Y2x1ZGU9Ii4uXHJ1bnRpbWVcSlNTdHJpbmcuY3BwIj4KICAgICAgIDxGaWx0ZXI+cnVudGltZTwv
RmlsdGVyPgogICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccnVu
dGltZVxKU1N0cmluZ0l0ZXJhdG9yLmNwcCI+CisgICAgICA8RmlsdGVyPnJ1bnRpbWU8L0ZpbHRl
cj4KKyAgICA8L0NsQ29tcGlsZT4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVc
SlNTdHJpbmdKb2luZXIuY3BwIj4KICAgICAgIDxGaWx0ZXI+cnVudGltZTwvRmlsdGVyPgogICAg
IDwvQ2xDb21waWxlPgpAQCAtODM0LDYgKzgzNywxMiBAQAogICAgIDxDbENvbXBpbGUgSW5jbHVk
ZT0iLi5ccnVudGltZVxTdHJpbmdDb25zdHJ1Y3Rvci5jcHAiPgogICAgICAgPEZpbHRlcj5ydW50
aW1lPC9GaWx0ZXI+CiAgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIu
LlxydW50aW1lXFN0cmluZ0l0ZXJhdG9yQ29uc3RydWN0b3IuY3BwIj4KKyAgICAgIDxGaWx0ZXI+
cnVudGltZTwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVk
ZT0iLi5ccnVudGltZVxTdHJpbmdJdGVyYXRvclByb3RvdHlwZS5jcHAiPgorICAgICAgPEZpbHRl
cj5ydW50aW1lPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CiAgICAgPENsQ29tcGlsZSBJbmNs
dWRlPSIuLlxydW50aW1lXFN0cmluZ09iamVjdC5jcHAiPgogICAgICAgPEZpbHRlcj5ydW50aW1l
PC9GaWx0ZXI+CiAgICAgPC9DbENvbXBpbGU+CkBAIC0yNzMzLDYgKzI3NDIsOSBAQAogICAgIDxD
bEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU1N0cmluZ0J1aWxkZXIuaCI+CiAgICAgICA8
RmlsdGVyPnJ1bnRpbWU8L0ZpbHRlcj4KICAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNsdWRl
IEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSlNTdHJpbmdJdGVyYXRvci5oIj4KKyAgICAgIDxGaWx0ZXI+
cnVudGltZTwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgogICAgIDxDbEluY2x1ZGUgSW5jbHVk
ZT0iLi5ccnVudGltZVxKU1N0cmluZ0pvaW5lci5oIj4KICAgICAgIDxGaWx0ZXI+cnVudGltZTwv
RmlsdGVyPgogICAgIDwvQ2xJbmNsdWRlPgpAQCAtMjg4MCw2ICsyODkyLDEyIEBACiAgICAgPENs
SW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXFN0cmluZ0NvbnN0cnVjdG9yLmgiPgogICAgICAg
PEZpbHRlcj5ydW50aW1lPC9GaWx0ZXI+CiAgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVk
ZSBJbmNsdWRlPSIuLlxydW50aW1lXFN0cmluZ0l0ZXJhdG9yQ29uc3RydWN0b3IuaCI+CisgICAg
ICA8RmlsdGVyPnJ1bnRpbWU8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJbmNs
dWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcU3RyaW5nSXRlcmF0b3JQcm90b3R5cGUuaCI+CisgICAg
ICA8RmlsdGVyPnJ1bnRpbWU8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KICAgICA8Q2xJbmNs
dWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcU3RyaW5nT2JqZWN0LmgiPgogICAgICAgPEZpbHRlcj5y
dW50aW1lPC9GaWx0ZXI+CiAgICAgPC9DbEluY2x1ZGU+CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCmluZGV4IDZhODQ1NjU4YTI3NGIyZTMzZTllOWQ3NDg3ZjFlMTkzMWRhMDIxNDAuLmJlOTg2
NGUzNjMwZTMxYmFmNjE0NDY1YmYwYTgxODBkMDY2ZTViYWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCkBAIC05NTIsNiArOTUyLDEyIEBACiAJCTcwNUI0MUIxMUE2RTUwMUUwMDcxNjc1
NyAvKiBTeW1ib2xQcm90b3R5cGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNzA1QjQxQTkxQTZFNTAxRTAwNzE2NzU3IC8qIFN5bWJvbFByb3RvdHlw
ZS5jcHAgKi87IH07CiAJCTcwNUI0MUIyMUE2RTUwMUUwMDcxNjc1NyAvKiBTeW1ib2xQcm90b3R5
cGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcwNUI0
MUFBMUE2RTUwMUUwMDcxNjc1NyAvKiBTeW1ib2xQcm90b3R5cGUuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3MEIwQTlEMTFBOUI2NjQ2MDAwMTMw
NkEgLyogUnVudGltZUZsYWdzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA3MEIwQTlEMDFBOUI2NjIwMDAwMTMwNkEgLyogUnVudGltZUZsYWdzLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJNzBFQzBFQzIx
QUEwRDdEQTAwQjZBQUZBIC8qIEpTU3RyaW5nSXRlcmF0b3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzBFQzBFQkMxQUEwRDdEQTAwQjZBQUZBIC8q
IEpTU3RyaW5nSXRlcmF0b3IuY3BwICovOyB9OworCQk3MEVDMEVDMzFBQTBEN0RBMDBCNkFBRkEg
LyogSlNTdHJpbmdJdGVyYXRvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNzBFQzBFQkQxQUEwRDdEQTAwQjZBQUZBIC8qIEpTU3RyaW5nSXRlcmF0b3Iu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk3MEVD
MEVDNDFBQTBEN0RBMDBCNkFBRkEgLyogU3RyaW5nSXRlcmF0b3JDb25zdHJ1Y3Rvci5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MEVDMEVCRTFBQTBE
N0RBMDBCNkFBRkEgLyogU3RyaW5nSXRlcmF0b3JDb25zdHJ1Y3Rvci5jcHAgKi87IH07CisJCTcw
RUMwRUM1MUFBMEQ3REEwMEI2QUFGQSAvKiBTdHJpbmdJdGVyYXRvckNvbnN0cnVjdG9yLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MEVDMEVCRjFBQTBE
N0RBMDBCNkFBRkEgLyogU3RyaW5nSXRlcmF0b3JDb25zdHJ1Y3Rvci5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTcwRUMwRUM2MUFBMEQ3REEwMEI2
QUFGQSAvKiBTdHJpbmdJdGVyYXRvclByb3RvdHlwZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MEVDMEVDMDFBQTBEN0RBMDBCNkFBRkEgLyogU3Ry
aW5nSXRlcmF0b3JQcm90b3R5cGUuY3BwICovOyB9OworCQk3MEVDMEVDNzFBQTBEN0RBMDBCNkFB
RkEgLyogU3RyaW5nSXRlcmF0b3JQcm90b3R5cGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcwRUMwRUMxMUFBMEQ3REEwMEI2QUFGQSAvKiBTdHJpbmdJ
dGVyYXRvclByb3RvdHlwZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCTdDMDA4Q0QyMTg2RjhBOTMwMDk1NUMyNCAvKiBKU1Byb21pc2VGdW5jdGlv
bnMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0Mw
MDhDRDAxODZGOEE5MzAwOTU1QzI0IC8qIEpTUHJvbWlzZUZ1bmN0aW9ucy5jcHAgKi87IH07CiAJ
CTdDMDA4Q0QzMTg2RjhBOTMwMDk1NUMyNCAvKiBKU1Byb21pc2VGdW5jdGlvbnMuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDMDA4Q0QxMTg2RjhBOTMw
MDk1NUMyNCAvKiBKU1Byb21pc2VGdW5jdGlvbnMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3QzAwOENEQTE4NzEyNEJCMDA5NTVDMjQgLyogSlNQ
cm9taXNlRGVmZXJyZWQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gN0MwMDhDRDgxODcxMjRCQjAwOTU1QzI0IC8qIEpTUHJvbWlzZURlZmVycmVkLmNw
cCAqLzsgfTsKQEAgLTI2MzIsNiArMjYzOCwxMiBAQAogCQk3MDVCNDFBOTFBNkU1MDFFMDA3MTY3
NTcgLyogU3ltYm9sUHJvdG90eXBlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IFN5bWJvbFByb3RvdHlwZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTcwNUI0MUFBMUE2RTUwMUUwMDcxNjc1NyAvKiBTeW1ib2xQcm90b3R5cGUuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3ltYm9sUHJvdG90eXBlLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTcwQjBBOUQwMUE5QjY2MjAwMDAxMzA2QSAvKiBSdW50aW1lRmxhZ3Mu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUnVudGltZUZsYWdzLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTcwRUMwRUJDMUFBMEQ3REEwMEI2QUFGQSAvKiBKU1N0
cmluZ0l0ZXJhdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpT
U3RyaW5nSXRlcmF0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3MEVDMEVC
RDFBQTBEN0RBMDBCNkFBRkEgLyogSlNTdHJpbmdJdGVyYXRvci5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBKU1N0cmluZ0l0ZXJhdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTcwRUMwRUJFMUFBMEQ3REEwMEI2QUFGQSAvKiBTdHJpbmdJdGVyYXRvckNvbnN0
cnVjdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFN0cmluZ0l0
ZXJhdG9yQ29uc3RydWN0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3MEVD
MEVCRjFBQTBEN0RBMDBCNkFBRkEgLyogU3RyaW5nSXRlcmF0b3JDb25zdHJ1Y3Rvci5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTdHJpbmdJdGVyYXRvckNvbnN0cnVjdG9yLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTcwRUMwRUMwMUFBMEQ3REEwMEI2QUFGQSAv
KiBTdHJpbmdJdGVyYXRvclByb3RvdHlwZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBTdHJpbmdJdGVyYXRvclByb3RvdHlwZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTcwRUMwRUMxMUFBMEQ3REEwMEI2QUFGQSAvKiBTdHJpbmdJdGVyYXRvclBy
b3RvdHlwZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTdHJpbmdJdGVyYXRv
clByb3RvdHlwZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QzAwOENEMDE4NkY4
QTkzMDA5NTVDMjQgLyogSlNQcm9taXNlRnVuY3Rpb25zLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgbGluZUVuZGluZyA9IDA7IHBhdGggPSBKU1Byb21pc2VGdW5jdGlvbnMuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB4Y0xhbmd1YWdlU3BlY2lmaWNhdGlvbklkZW50aWZp
ZXIgPSB4Y29kZS5sYW5nLmNwcDsgfTsKIAkJN0MwMDhDRDExODZGOEE5MzAwOTU1QzI0IC8qIEpT
UHJvbWlzZUZ1bmN0aW9ucy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1By
b21pc2VGdW5jdGlvbnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0MwMDhDRDgx
ODcxMjRCQjAwOTU1QzI0IC8qIEpTUHJvbWlzZURlZmVycmVkLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTUHJvbWlzZURlZmVycmVkLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKQEAgLTQ0MzYsNiArNDQ0OCw4IEBACiAJCQkJQkMwMkU5QjYwRTE4NDJG
QTAwMEY5Mjk3IC8qIEpTU3RyaW5nLmNwcCAqLywKIAkJCQlGNjkyQTg2MjAyNTU1OTdEMDFGRjYw
RjcgLyogSlNTdHJpbmcuaCAqLywKIAkJCQk4NkU4NTUzODExMUI5OTY4MDAxQUY1MUUgLyogSlNT
dHJpbmdCdWlsZGVyLmggKi8sCisJCQkJNzBFQzBFQkMxQUEwRDdEQTAwQjZBQUZBIC8qIEpTU3Ry
aW5nSXRlcmF0b3IuY3BwICovLAorCQkJCTcwRUMwRUJEMUFBMEQ3REEwMEI2QUFGQSAvKiBKU1N0
cmluZ0l0ZXJhdG9yLmggKi8sCiAJCQkJMjYwMEI1QTQxNTJCQUFBNzAwOTFFRTVGIC8qIEpTU3Ry
aW5nSm9pbmVyLmNwcCAqLywKIAkJCQkyNjAwQjVBNTE1MkJBQUE3MDA5MUVFNUYgLyogSlNTdHJp
bmdKb2luZXIuaCAqLywKIAkJCQkwRjkxOUQwOTE1N0VFMDlEMDA0QTRFN0QgLyogSlNTeW1ib2xU
YWJsZU9iamVjdC5jcHAgKi8sCkBAIC00NTYwLDYgKzQ1NzQsMTAgQEAKIAkJCQlBNzMwQjYxMDEy
NTAwNjhGMDA5RDI1QjEgLyogU3RyaWN0RXZhbEFjdGl2YXRpb24uaCAqLywKIAkJCQlCQzE4QzND
MDBFMTZFRTMzMDBCMzQ0NjAgLyogU3RyaW5nQ29uc3RydWN0b3IuY3BwICovLAogCQkJCUJDMThD
M0MxMEUxNkVFMzMwMEIzNDQ2MCAvKiBTdHJpbmdDb25zdHJ1Y3Rvci5oICovLAorCQkJCTcwRUMw
RUJFMUFBMEQ3REEwMEI2QUFGQSAvKiBTdHJpbmdJdGVyYXRvckNvbnN0cnVjdG9yLmNwcCAqLywK
KwkJCQk3MEVDMEVCRjFBQTBEN0RBMDBCNkFBRkEgLyogU3RyaW5nSXRlcmF0b3JDb25zdHJ1Y3Rv
ci5oICovLAorCQkJCTcwRUMwRUMwMUFBMEQ3REEwMEI2QUFGQSAvKiBTdHJpbmdJdGVyYXRvclBy
b3RvdHlwZS5jcHAgKi8sCisJCQkJNzBFQzBFQzExQUEwRDdEQTAwQjZBQUZBIC8qIFN0cmluZ0l0
ZXJhdG9yUHJvdG90eXBlLmggKi8sCiAJCQkJQkMxOEMzQzIwRTE2RUUzMzAwQjM0NDYwIC8qIFN0
cmluZ09iamVjdC5jcHAgKi8sCiAJCQkJQkMxOEMzQzMwRTE2RUUzMzAwQjM0NDYwIC8qIFN0cmlu
Z09iamVjdC5oICovLAogCQkJCUJDMThDM0M1MEUxNkVFMzMwMEIzNDQ2MCAvKiBTdHJpbmdQcm90
b3R5cGUuY3BwICovLApAQCAtNTgwNiw2ICs1ODI0LDcgQEAKIAkJCQlCQzE4QzQwNTBFMTZGNUNE
MDBCMzQ0NjAgLyogRnVuY3Rpb25Qcm90b3R5cGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDQkUy
Q0FFMTRFOTg1QUEwMDA1OTNBRCAvKiBHQ0Fzc2VydGlvbnMuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTBGNzY2RDMwMTVBOERDRTIwMDhGMzYzRSAvKiBHQ0F3YXJlSklUU3R1YlJvdXRpbmUuaCBpbiBI
ZWFkZXJzICovLAorCQkJCTcwRUMwRUM3MUFBMEQ3REEwMEI2QUFGQSAvKiBTdHJpbmdJdGVyYXRv
clByb3RvdHlwZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYyQjY2QUMxN0I2QjUzRjAwQTdBRTNG
IC8qIEdDSW5jb21pbmdSZWZDb3VudGVkLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjJCNjZBRDE3
QjZCNTQ1MDBBN0FFM0YgLyogR0NJbmNvbWluZ1JlZkNvdW50ZWRJbmxpbmVzLmggaW4gSGVhZGVy
cyAqLywKIAkJCQkwRjJCNjZBRTE3QjZCNTQ1MDBBN0FFM0YgLyogR0NJbmNvbWluZ1JlZkNvdW50
ZWRTZXQuaCBpbiBIZWFkZXJzICovLApAQCAtNjIyNiw2ICs2MjQ1LDcgQEAKIAkJCQk5MzMwNDAw
NDBFNkE3NDk0MDA3ODZFNkEgLyogU21hbGxTdHJpbmdzLmggaW4gSGVhZGVycyAqLywKIAkJCQlC
QzE4QzQ2NDBFMTZGNUNEMDBCMzQ0NjAgLyogU291cmNlQ29kZS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQkMxOEM0NjMwRTE2RjVDRDAwQjM0NDYwIC8qIFNvdXJjZVByb3ZpZGVyLmggaW4gSGVhZGVy
cyAqLywKKwkJCQk3MEVDMEVDMzFBQTBEN0RBMDBCNkFBRkEgLyogSlNTdHJpbmdJdGVyYXRvci5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJRTQ5REMxNkMxMkVGMjk0RTAwMTg0QTFGIC8qIFNvdXJjZVBy
b3ZpZGVyQ2FjaGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUU0OURDMTZEMTJFRjI5NTMwMDE4NEEx
RiAvKiBTb3VyY2VQcm92aWRlckNhY2hlSXRlbS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZCN0Yz
OUUxNUVEOEU0NjAwRjE2N0IyIC8qIFNwYXJzZUFycmF5VmFsdWVNYXAuaCBpbiBIZWFkZXJzICov
LApAQCAtNjI0Nyw2ICs2MjY3LDcgQEAKIAkJCQkwRkQyQzkyNDE2RDAxRUU5MDBDNzgwM0YgLyog
U3RydWN0dXJlSW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQzJGRTE4QTQxNkJBRUM0MDAw
QUYzMDYxIC8qIFN0cnVjdHVyZVJhcmVEYXRhLmggaW4gSGVhZGVycyAqLywKIAkJCQlDMjBCQTky
RDE2QkIxQzE1MDBCM0FFQTIgLyogU3RydWN0dXJlUmFyZURhdGFJbmxpbmVzLmggaW4gSGVhZGVy
cyAqLywKKwkJCQk3MEVDMEVDNTFBQTBEN0RBMDBCNkFBRkEgLyogU3RyaW5nSXRlcmF0b3JDb25z
dHJ1Y3Rvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYyQjlDRUIxOUQwQkE3RDAwQjFEMUI1IC8q
IERGR1BoaUNoaWxkcmVuLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjkzMzJBNTE0Q0E3REREMDA4
NUYzQzYgLyogU3RydWN0dXJlU2V0LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjc2NkQzOTE1QUU0
QTFGMDA4RjM2M0UgLyogU3RydWN0dXJlU3R1YkNsZWFyaW5nV2F0Y2hwb2ludC5oIGluIEhlYWRl
cnMgKi8sCkBAIC02OTM0LDYgKzY5NTUsOCBAQAogCQkJCTBGQzA5NzkyMTQ2QTZGNzMwMENGMjQ0
MiAvKiBERkdPU1JFeGl0Q29tcGlsZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZDMDk3NzYx
NDY5NDNCMDAwQ0YyNDQyIC8qIERGR09TUkV4aXRDb21waWxlcjMyXzY0LmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTBGQzA5NzcyMTQ2OTNBRjkwMENGMjQ0MiAvKiBERkdPU1JFeGl0Q29tcGlsZXI2
NC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk3MEVDMEVDNDFBQTBEN0RBMDBCNkFBRkEgLyogU3Ry
aW5nSXRlcmF0b3JDb25zdHJ1Y3Rvci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk3MEVDMEVDMjFB
QTBEN0RBMDBCNkFBRkEgLyogSlNTdHJpbmdJdGVyYXRvci5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQkwRjcwMjVBOTE3MTRCMEZBMDAzODJDMEUgLyogREZHT1NSRXhpdENvbXBpbGVyQ29tbW9uLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTBGRUZDOUFBMTY4MUEzQjMwMDU2N0Y1MyAvKiBERkdPU1JF
eGl0SnVtcFBsYWNlaG9sZGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGMjM1QkVEMTcxNzhF
NzMwMDY5MEM3RiAvKiBERkdPU1JFeGl0UHJlcGFyYXRpb24uY3BwIGluIFNvdXJjZXMgKi8sCkBA
IC03Mjk2LDYgKzczMTksNyBAQAogCQkJCTBGMjRFNTUwMTdFRTI3NDkwMEFCQjIxNyAvKiBSZXBh
dGNoLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGNzcwMDkyMTQwMkZGM0MwMDc4RUIzOSAvKiBT
YW1wbGluZ0NvdW50ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMTQyOUQ4ODUwRUQyMUMzRDAw
Qjg5NjE5IC8qIFNhbXBsaW5nVG9vbC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk3MEVDMEVDNjFB
QTBEN0RBMDBCNkFBRkEgLyogU3RyaW5nSXRlcmF0b3JQcm90b3R5cGUuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJQTVGRDAwNjcxODlBRkU5QzAwNjMzMjMxIC8qIFNjcmlwdEFyZ3VtZW50cy5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQlBNUZEMDA2RDE4OUIwMEFBMDA2MzMyMzEgLyogU2NyaXB0Q2Fs
bEZyYW1lLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE1RkQwMDZGMTg5QjAwQUEwMDYzMzIzMSAv
KiBTY3JpcHRDYWxsU3RhY2suY3BwIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvU3RyaW5nSXRlcmF0b3IucHJvdG90eXBlLmpzIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL1N0cmluZ0l0ZXJhdG9yLnByb3RvdHlwZS5qcwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi4yMDdlYmJjZjVmOTlmYzc3OTgwNWYxOGIyZmY2NDA2ZDY5MTBjMGQ0Ci0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL1N0cmluZ0l0ZXJh
dG9yLnByb3RvdHlwZS5qcwpAQCAtMCwwICsxLDY2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDE1IFl1c3VrZSBTdXp1a2kgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4uCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQg
QU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKK2Z1bmN0aW9uIG5leHQoKSB7CisgICAgInVz
ZSBzdHJpY3QiOworCisgICAgaWYgKHRoaXMgPT0gbnVsbCkKKyAgICAgICAgdGhyb3cgbmV3IEBU
eXBlRXJyb3IoIiVTdHJpbmdJdGVyYXRvclByb3RvdHlwZSUubmV4dCByZXF1aXJlcyB0aGF0IHx0
aGlzfCBiZSBub3QgbnVsbCBvciB1bmRlZmluZWQiKTsKKworICAgIHZhciBwb3NpdGlvbiA9IHRo
aXMuQHN0cmluZ0l0ZXJhdG9yTmV4dEluZGV4OworICAgIGlmIChwb3NpdGlvbiA9PT0gdW5kZWZp
bmVkKQorICAgICAgICB0aHJvdyBuZXcgQFR5cGVFcnJvcigiJVN0cmluZ0l0ZXJhdG9yUHJvdG90
eXBlJS5uZXh0IHJlcXVpcmVzIHRoYXQgfHRoaXN8IGJlIFN0cmluZyBJdGVyYXRvciBJbnN0YW5j
ZSIpOworCisgICAgdmFyIGRvbmUgPSB0cnVlOworICAgIHZhciB2YWx1ZSA9IHVuZGVmaW5lZDsK
KworICAgIHZhciBzdHJpbmcgPSB0aGlzLkBpdGVyYXRlZFN0cmluZzsKKyAgICBpZiAoc3RyaW5n
ICE9PSB1bmRlZmluZWQpIHsKKyAgICAgICAgdmFyIGxlbmd0aCA9IHN0cmluZy5sZW5ndGggPj4+
IDA7CisgICAgICAgIGlmIChwb3NpdGlvbiA+PSBsZW5ndGgpIHsKKyAgICAgICAgICAgIHRoaXMu
QGl0ZXJhdGVkU3RyaW5nID0gdW5kZWZpbmVkOworICAgICAgICB9IGVsc2UgeworICAgICAgICAg
ICAgZG9uZSA9IGZhbHNlOworCisgICAgICAgICAgICB2YXIgZmlyc3QgPSBzdHJpbmcuQGNoYXJD
b2RlQXQocG9zaXRpb24pOworICAgICAgICAgICAgaWYgKGZpcnN0IDwgMHhEODAwIHx8IGZpcnN0
ID4gMHhEQkZGIHx8IHBvc2l0aW9uICsgMSA9PT0gbGVuZ3RoKQorICAgICAgICAgICAgICAgIHZh
bHVlID0gc3RyaW5nW3Bvc2l0aW9uXTsKKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAg
ICAgIHZhciBzZWNvbmQgPSBzdHJpbmcuQGNoYXJDb2RlQXQocG9zaXRpb24gKyAxKTsKKyAgICAg
ICAgICAgICAgICBpZiAoc2Vjb25kIDwgMHhEQzAwIHx8IHNlY29uZCA+IDB4REZGRikKKyAgICAg
ICAgICAgICAgICAgICAgdmFsdWUgPSBzdHJpbmdbcG9zaXRpb25dOworICAgICAgICAgICAgICAg
IGVsc2UKKyAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSBzdHJpbmdbcG9zaXRpb25dICsgc3Ry
aW5nW3Bvc2l0aW9uICsgMV07CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHRoaXMuQHN0
cmluZ0l0ZXJhdG9yTmV4dEluZGV4ID0gcG9zaXRpb24gKyB2YWx1ZS5sZW5ndGg7CisgICAgICAg
IH0KKyAgICB9CisKKyAgICByZXR1cm4geworICAgICAgICBkb25lOiBkb25lLAorICAgICAgICB2
YWx1ZTogdmFsdWUKKyAgICB9OworfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0NvbW1vbklkZW50aWZpZXJzLmgKaW5kZXggZjExMTc3M2YxMDU1NzQ5ODFlOTY4NzdjNDc5
M2U0ZTk1YWRiNTg1OC4uMTQ3NzI0YzY0ZDQ4NjI4ZjNhMDNkZWZjMjA4Zjk3YWE4ZmE4ZDBmZCAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRpZmll
cnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVy
cy5oCkBAIC0yMzUsNiArMjM1LDkgQEAKIAogI2RlZmluZSBKU0NfQ09NTU9OX1BSSVZBVEVfSURF
TlRJRklFUlNfRUFDSF9QUk9QRVJUWV9OQU1FKG1hY3JvKSBcCiAgICAgSlNDX0NPTU1PTl9QUklW
QVRFX0lERU5USUZJRVJTX0VBQ0hfV0VMTF9LTk9XTl9TWU1CT0wobWFjcm8pIFwKKyAgICBtYWNy
byhjaGFyQ29kZUF0KSBcCisgICAgbWFjcm8oaXRlcmF0ZWRTdHJpbmcpIFwKKyAgICBtYWNybyhz
dHJpbmdJdGVyYXRvck5leHRJbmRleCkgXAogICAgIG1hY3JvKGl0ZXJhdG9yTmV4dCkgXAogICAg
IG1hY3JvKHJlc29sdmUpIFwKICAgICBtYWNybyhyZWplY3QpIFwKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAppbmRleCA2YmE5MjJmNzUwMTMx
OTgzYzVlYzExOWQ4NzkzNzI3MjQzMDc5NmEwLi5hN2IzNmYxMTI2ZTljODUwY2Q0ZjExYjZiZGQx
NzdkZTJjYWU4YWFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0dsb2JhbE9iamVjdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNH
bG9iYWxPYmplY3QuY3BwCkBAIC04Miw2ICs4Miw3IEBACiAjaW5jbHVkZSAiSlNPTk9iamVjdC5o
IgogI2luY2x1ZGUgIkpTU2V0LmgiCiAjaW5jbHVkZSAiSlNTZXRJdGVyYXRvci5oIgorI2luY2x1
ZGUgIkpTU3RyaW5nSXRlcmF0b3IuaCIKICNpbmNsdWRlICJKU1R5cGVkQXJyYXlDb25zdHJ1Y3Rv
cnMuaCIKICNpbmNsdWRlICJKU1R5cGVkQXJyYXlQcm90b3R5cGVzLmgiCiAjaW5jbHVkZSAiSlNU
eXBlZEFycmF5cy5oIgpAQCAtMTE1LDYgKzExNiw4IEBACiAjaW5jbHVkZSAiU2V0UHJvdG90eXBl
LmgiCiAjaW5jbHVkZSAiU3RyaWN0RXZhbEFjdGl2YXRpb24uaCIKICNpbmNsdWRlICJTdHJpbmdD
b25zdHJ1Y3Rvci5oIgorI2luY2x1ZGUgIlN0cmluZ0l0ZXJhdG9yQ29uc3RydWN0b3IuaCIKKyNp
bmNsdWRlICJTdHJpbmdJdGVyYXRvclByb3RvdHlwZS5oIgogI2luY2x1ZGUgIlN0cmluZ1Byb3Rv
dHlwZS5oIgogI2luY2x1ZGUgIlN5bWJvbC5oIgogI2luY2x1ZGUgIlN5bWJvbENvbnN0cnVjdG9y
LmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9i
amVjdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaApp
bmRleCA0MWFhZjk2M2Q3ZDRjNzFiOGE3NjlmZDA0MTE2ZTBhOWM1OTkzYTlhLi5hZTJhZTFjNmM4
ZmZiMThiOTk3MTNlMjI0NTZkM2ExMzJhYjA2ZWJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKQEAgLTEwOSw2ICsxMDksNyBAQAogICAgIERF
RklORV9TVEFOREFSRF9CVUlMVElOKG1hY3JvLCBBcmd1bWVudHNJdGVyYXRvciwgYXJndW1lbnRz
SXRlcmF0b3IpIFwKICAgICBERUZJTkVfU1RBTkRBUkRfQlVJTFRJTihtYWNybywgTWFwSXRlcmF0
b3IsIG1hcEl0ZXJhdG9yKSBcCiAgICAgREVGSU5FX1NUQU5EQVJEX0JVSUxUSU4obWFjcm8sIFNl
dEl0ZXJhdG9yLCBzZXRJdGVyYXRvcikgXAorICAgIERFRklORV9TVEFOREFSRF9CVUlMVElOKG1h
Y3JvLCBTdHJpbmdJdGVyYXRvciwgc3RyaW5nSXRlcmF0b3IpIFwKIAogCiAjZGVmaW5lIERFQ0xB
UkVfU0lNUExFX0JVSUxUSU5fVFlQRShjYXBpdGFsTmFtZSwgbG93ZXJOYW1lLCBwcm9wZXJOYW1l
LCBpbnN0YW5jZVR5cGUsIGpzTmFtZSkgXApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNTdHJpbmdJdGVyYXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU1N0cmluZ0l0ZXJhdG9yLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kOTY3Y2U3MzM1OWRiODQ5
YTczZDMzODJhNTYzZjAyODlhNTlkOWRmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmdJdGVyYXRvci5jcHAKQEAgLTAsMCArMSw0NSBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBZdXN1a2UgU3V6dWtpIDx1dGF0YW5lLnRlYUBnbWFp
bC5jb20+LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IK
KyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5j
bHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiSlNTdHJpbmdJdGVyYXRvci5oIgorCisjaW5jbHVk
ZSAiSlNDSlNWYWx1ZUlubGluZXMuaCIKKyNpbmNsdWRlICJKU0NlbGxJbmxpbmVzLmgiCisjaW5j
bHVkZSAiU3RydWN0dXJlSW5saW5lcy5oIgorCituYW1lc3BhY2UgSlNDIHsKKworY29uc3QgQ2xh
c3NJbmZvIEpTU3RyaW5nSXRlcmF0b3I6OnNfaW5mbyA9IHsgIlN0cmluZ0l0ZXJhdG9yIiwgJkJh
c2U6OnNfaW5mbywgMCwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU1N0cmluZ0l0ZXJhdG9yKSB9Owor
Cit2b2lkIEpTU3RyaW5nSXRlcmF0b3I6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgSlNHbG9iYWxP
YmplY3QqLCBKU1N0cmluZyogaXRlcmF0ZWRTdHJpbmcpCit7CisgICAgQmFzZTo6ZmluaXNoQ3Jl
YXRpb24odm0pOworICAgIEFTU0VSVChpbmhlcml0cyhpbmZvKCkpKTsKKyAgICBwdXREaXJlY3Qo
dm0sIHZtLnByb3BlcnR5TmFtZXMtPml0ZXJhdGVkU3RyaW5nUHJpdmF0ZU5hbWUsIGl0ZXJhdGVk
U3RyaW5nKTsKKyAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPnN0cmluZ0l0ZXJh
dG9yTmV4dEluZGV4UHJpdmF0ZU5hbWUsIGpzTnVtYmVyKDApKTsKK30KKworfSAvLyBuYW1lc3Bh
Y2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0cmlu
Z0l0ZXJhdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0cmluZ0l0ZXJh
dG9yLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uMWRlMGM4YTM1MjFlNjNmYTY1YmEzMjM1YzFlYmNlNWNlZGExYmFh
MwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3Ry
aW5nSXRlcmF0b3IuaApAQCAtMCwwICsxLDYzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1
IFl1c3VrZSBTdXp1a2kgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4uCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5Z
CisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAg
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgSlNTdHJpbmdJdGVyYXRvcl9oCisj
ZGVmaW5lIEpTU3RyaW5nSXRlcmF0b3JfaAorCisjaW5jbHVkZSAiSlNPYmplY3QuaCIKKworbmFt
ZXNwYWNlIEpTQyB7CisKK2NsYXNzIEpTU3RyaW5nSXRlcmF0b3IgOiBwdWJsaWMgSlNOb25GaW5h
bE9iamVjdCB7CitwdWJsaWM6CisgICAgdHlwZWRlZiBKU05vbkZpbmFsT2JqZWN0IEJhc2U7CisK
KyAgICBERUNMQVJFX0VYUE9SVF9JTkZPOworCisgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRl
U3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBw
cm90b3R5cGUpCisgICAgeworICAgICAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUodm0sIGds
b2JhbE9iamVjdCwgcHJvdG90eXBlLCBUeXBlSW5mbyhPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFn
cyksIGluZm8oKSk7CisgICAgfQorCisgICAgc3RhdGljIEpTU3RyaW5nSXRlcmF0b3IqIGNyZWF0
ZShFeGVjU3RhdGUqIGV4ZWMsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBKU1N0cmluZyogaXRlcmF0
ZWRTdHJpbmcpCisgICAgeworICAgICAgICBWTSYgdm0gPSBleGVjLT52bSgpOworICAgICAgICBK
U1N0cmluZ0l0ZXJhdG9yKiBpbnN0YW5jZSA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEpT
U3RyaW5nSXRlcmF0b3I+KHZtLmhlYXApKSBKU1N0cmluZ0l0ZXJhdG9yKHZtLCBzdHJ1Y3R1cmUp
OworICAgICAgICBpbnN0YW5jZS0+ZmluaXNoQ3JlYXRpb24odm0sIHN0cnVjdHVyZS0+Z2xvYmFs
T2JqZWN0KCksIGl0ZXJhdGVkU3RyaW5nKTsKKyAgICAgICAgcmV0dXJuIGluc3RhbmNlOworICAg
IH0KKworcHJpdmF0ZToKKyAgICBKU1N0cmluZ0l0ZXJhdG9yKFZNJiB2bSwgU3RydWN0dXJlKiBz
dHJ1Y3R1cmUpCisgICAgICAgIDogQmFzZSh2bSwgc3RydWN0dXJlKQorICAgIHsKKyAgICB9CisK
KyAgICB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBKU1N0cmluZyog
aXRlcmF0ZWRTdHJpbmcpOworfTsKKworfQorCisjZW5kaWYgLy8gIWRlZmluZWQoSlNTdHJpbmdJ
dGVyYXRvcl9oKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3Ry
aW5nSXRlcmF0b3JDb25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9TdHJpbmdJdGVyYXRvckNvbnN0cnVjdG9yLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40OWFiNzA2NTNlNzNl
ZGI5ZmMwZTY3NWExMzYwMGE1YTk1MzZlMmU0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nSXRlcmF0b3JDb25zdHJ1Y3Rvci5jcHAKQEAgLTAs
MCArMSw0MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSwgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiU3RyaW5nSXRlcmF0b3JDb25zdHJ1Y3Rv
ci5oIgorCisjaW5jbHVkZSAiSlNDSlNWYWx1ZUlubGluZXMuaCIKKyNpbmNsdWRlICJKU0NlbGxJ
bmxpbmVzLmgiCisjaW5jbHVkZSAiSlNHbG9iYWxPYmplY3QuaCIKKyNpbmNsdWRlICJTdHJ1Y3R1
cmVJbmxpbmVzLmgiCisKK25hbWVzcGFjZSBKU0MgeworCitjb25zdCBDbGFzc0luZm8gU3RyaW5n
SXRlcmF0b3JDb25zdHJ1Y3Rvcjo6c19pbmZvID0geyAiRnVuY3Rpb24iLCAmQmFzZTo6c19pbmZv
LCAwLCBDUkVBVEVfTUVUSE9EX1RBQkxFKFN0cmluZ0l0ZXJhdG9yQ29uc3RydWN0b3IpIH07CisK
K3ZvaWQgU3RyaW5nSXRlcmF0b3JDb25zdHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtKQor
eworICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtKTsKK30KKworfQpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nSXRlcmF0b3JDb25zdHJ1Y3Rvci5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nSXRlcmF0b3JDb25zdHJ1Y3Rvci5o
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjYyNDEzNjFiNjc2ZTI5MTVkZjBmNWQyMTdhYTQ4Nzk2MDQyMjllNjAKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdJdGVy
YXRvckNvbnN0cnVjdG9yLmgKQEAgLTAsMCArMSw2MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxMyBBcHBsZSwgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQor
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFN0cmluZ0l0ZXJhdG9yQ29uc3RydWN0
b3JfaAorI2RlZmluZSBTdHJpbmdJdGVyYXRvckNvbnN0cnVjdG9yX2gKKworI2luY2x1ZGUgIklu
dGVybmFsRnVuY3Rpb24uaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIFN0cmluZ0l0ZXJh
dG9yUHJvdG90eXBlOworCitjbGFzcyBTdHJpbmdJdGVyYXRvckNvbnN0cnVjdG9yIDogcHVibGlj
IEpTTm9uRmluYWxPYmplY3QgeworcHVibGljOgorICAgIHR5cGVkZWYgSlNOb25GaW5hbE9iamVj
dCBCYXNlOworCisgICAgc3RhdGljIFN0cmluZ0l0ZXJhdG9yQ29uc3RydWN0b3IqIGNyZWF0ZShW
TSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBTdHJpbmdJdGVyYXRvclByb3RvdHlwZSopCisg
ICAgeworICAgICAgICBTdHJpbmdJdGVyYXRvckNvbnN0cnVjdG9yKiBjb25zdHJ1Y3RvciA9IG5l
dyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPFN0cmluZ0l0ZXJhdG9yQ29uc3RydWN0b3I+KHZtLmhl
YXApKSBTdHJpbmdJdGVyYXRvckNvbnN0cnVjdG9yKHZtLCBzdHJ1Y3R1cmUpOworICAgICAgICBj
b25zdHJ1Y3Rvci0+ZmluaXNoQ3JlYXRpb24odm0pOworICAgICAgICByZXR1cm4gY29uc3RydWN0
b3I7CisgICAgfQorCisgICAgREVDTEFSRV9JTkZPOworCisgICAgc3RhdGljIFN0cnVjdHVyZSog
Y3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNW
YWx1ZSBwcm90b3R5cGUpCisgICAgeworICAgICAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUo
dm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBUeXBlSW5mbyhPYmplY3RUeXBlLCBTdHJ1Y3R1
cmVGbGFncyksIGluZm8oKSk7CisgICAgfQorCitwcml2YXRlOgorICAgIFN0cmluZ0l0ZXJhdG9y
Q29uc3RydWN0b3IoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKKyAgICAgICAgOiBCYXNl
KHZtLCBzdHJ1Y3R1cmUpCisgICAgeworICAgIH0KKyAgICB2b2lkIGZpbmlzaENyZWF0aW9uKFZN
Jik7Cit9OworCit9CisKKyNlbmRpZiAvLyAhZGVmaW5lZChTdHJpbmdJdGVyYXRvckNvbnN0cnVj
dG9yX2gpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdJ
dGVyYXRvclByb3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJp
bmdJdGVyYXRvclByb3RvdHlwZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTNlMGNjYjMxNDRmMzk1OTZlNjQ1
NWVhN2IzMmY3NTcwYmJmMWFkYgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1N0cmluZ0l0ZXJhdG9yUHJvdG90eXBlLmNwcApAQCAtMCwwICsxLDc0IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlLCBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgWXVzdWtlIFN1enVraSA8dXRhdGFuZS50ZWFAZ21h
aWwuY29tPi4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
CisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lu
Y2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlN0cmluZ0l0ZXJhdG9yUHJvdG90eXBlLmgiCisK
KyNpbmNsdWRlICJKU0NKU1ZhbHVlSW5saW5lcy5oIgorI2luY2x1ZGUgIkpTQ2VsbElubGluZXMu
aCIKKyNpbmNsdWRlICJKU0dsb2JhbE9iamVjdC5oIgorI2luY2x1ZGUgIkpTU3RyaW5nSXRlcmF0
b3IuaCIKKyNpbmNsdWRlICJPYmplY3RDb25zdHJ1Y3Rvci5oIgorI2luY2x1ZGUgIlN0cnVjdHVy
ZUlubGluZXMuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIHN0cmluZ0l0ZXJhdG9yUHJvdG90eXBlSXRlcmF0b3IoRXhlY1N0YXRlKik7
CisKK30KKworI2luY2x1ZGUgIlN0cmluZ0l0ZXJhdG9yUHJvdG90eXBlLmx1dC5oIgorCituYW1l
c3BhY2UgSlNDIHsKKworY29uc3QgQ2xhc3NJbmZvIFN0cmluZ0l0ZXJhdG9yUHJvdG90eXBlOjpz
X2luZm8gPSB7ICJTdHJpbmcgSXRlcmF0b3IiLCAmQmFzZTo6c19pbmZvLCAmc3RyaW5nSXRlcmF0
b3JQcm90b3R5cGVUYWJsZSwgQ1JFQVRFX01FVEhPRF9UQUJMRShTdHJpbmdJdGVyYXRvclByb3Rv
dHlwZSkgfTsKKworLyogU291cmNlIGZvciBTdHJpbmdJdGVyYXRvclByb3RvdHlwZS5sdXQuaAor
QGJlZ2luIHN0cmluZ0l0ZXJhdG9yUHJvdG90eXBlVGFibGUKKyAgbmV4dCAgICAgIHN0cmluZ0l0
ZXJhdG9yUHJvdG90eXBlRnVuY05leHQgIERvbnRFbnVtfEZ1bmN0aW9uIDAKK0BlbmQKKyovCisK
K3ZvaWQgU3RyaW5nSXRlcmF0b3JQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKK3sKKyAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2
bSk7CisgICAgQVNTRVJUKGluaGVyaXRzKGluZm8oKSkpOworICAgIHZtLnByb3RvdHlwZU1hcC5h
ZGRQcm90b3R5cGUodGhpcyk7CisKKyAgICBKU0NfTkFUSVZFX0ZVTkNUSU9OKHZtLnByb3BlcnR5
TmFtZXMtPml0ZXJhdG9yUHJpdmF0ZU5hbWUsIHN0cmluZ0l0ZXJhdG9yUHJvdG90eXBlSXRlcmF0
b3IsIERvbnRFbnVtLCAwKTsKK30KKworYm9vbCBTdHJpbmdJdGVyYXRvclByb3RvdHlwZTo6Z2V0
T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVy
dHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQoreworICAgIHJldHVybiBn
ZXRTdGF0aWNGdW5jdGlvblNsb3Q8QmFzZT4oZXhlYywgc3RyaW5nSXRlcmF0b3JQcm90b3R5cGVU
YWJsZSwganNDYXN0PFN0cmluZ0l0ZXJhdG9yUHJvdG90eXBlKj4ob2JqZWN0KSwgcHJvcGVydHlO
YW1lLCBzbG90KTsKK30KKworRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdJdGVy
YXRvclByb3RvdHlwZUl0ZXJhdG9yKENhbGxGcmFtZSogY2FsbEZyYW1lKQoreworICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUoY2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7Cit9CisKK30gLy8gbmFt
ZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3Ry
aW5nSXRlcmF0b3JQcm90b3R5cGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0
cmluZ0l0ZXJhdG9yUHJvdG90eXBlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uY2JiZDk2MDNkYWMxMDRhZWJhMmY2
YjI2Yzg0M2RjNmVlODU5ZDEwZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1N0cmluZ0l0ZXJhdG9yUHJvdG90eXBlLmgKQEAgLTAsMCArMSw2NiBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSwgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICogQ29weXJpZ2h0IChDKSAyMDE1IFl1c3VrZSBTdXp1a2kgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4uCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgor
ICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5k
ZWYgU3RyaW5nSXRlcmF0b3JQcm90b3R5cGVfaAorI2RlZmluZSBTdHJpbmdJdGVyYXRvclByb3Rv
dHlwZV9oCisKKyNpbmNsdWRlICJKU09iamVjdC5oIgorCituYW1lc3BhY2UgSlNDIHsKKworY2xh
c3MgU3RyaW5nSXRlcmF0b3JQcm90b3R5cGUgOiBwdWJsaWMgSlNOb25GaW5hbE9iamVjdCB7Citw
dWJsaWM6CisgICAgdHlwZWRlZiBKU05vbkZpbmFsT2JqZWN0IEJhc2U7CisKKyAgICBzdGF0aWMg
U3RyaW5nSXRlcmF0b3JQcm90b3R5cGUqIGNyZWF0ZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlKQorICAgIHsKKyAgICAgICAgU3RyaW5n
SXRlcmF0b3JQcm90b3R5cGUqIHByb3RvdHlwZSA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxs
PFN0cmluZ0l0ZXJhdG9yUHJvdG90eXBlPih2bS5oZWFwKSkgU3RyaW5nSXRlcmF0b3JQcm90b3R5
cGUodm0sIHN0cnVjdHVyZSk7CisgICAgICAgIHByb3RvdHlwZS0+ZmluaXNoQ3JlYXRpb24odm0s
IGdsb2JhbE9iamVjdCk7CisgICAgICAgIHJldHVybiBwcm90b3R5cGU7CisgICAgfQorCisgICAg
REVDTEFSRV9JTkZPOworCisgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZN
JiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5cGUpCisg
ICAgeworICAgICAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwg
cHJvdG90eXBlLCBUeXBlSW5mbyhPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7
CisgICAgfQorCitwcm90ZWN0ZWQ6CisgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVy
ZUZsYWdzID0gT3ZlcnJpZGVzR2V0T3duUHJvcGVydHlTbG90IHwgQmFzZTo6U3RydWN0dXJlRmxh
Z3M7CisKK3ByaXZhdGU6CisgICAgU3RyaW5nSXRlcmF0b3JQcm90b3R5cGUoVk0mIHZtLCBTdHJ1
Y3R1cmUqIHN0cnVjdHVyZSkKKyAgICAgICAgOiBCYXNlKHZtLCBzdHJ1Y3R1cmUpCisgICAgewor
ICAgIH0KKyAgICB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJiwgSlNHbG9iYWxPYmplY3QqKTsKKyAg
ICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBQ
cm9wZXJ0eU5hbWUsIFByb3BlcnR5U2xvdCYpOworfTsKKworfQorCisjZW5kaWYgLy8gIWRlZmlu
ZWQoU3RyaW5nSXRlcmF0b3JQcm90b3R5cGVfaCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1N0cmluZ1Byb3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9TdHJpbmdQcm90b3R5cGUuY3BwCmluZGV4IDUxYmZkYzdkZDJlZDQzOTM5ODFm
MzBkM2VlYjFlM2Q1N2JlNzYxNjguLjQ0ZGNjYmE2NzhkM2Q5OTVkY2ZhZDc4MGVkMGY3NDU3MTg4
ZTNlOTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ1By
b3RvdHlwZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nUHJv
dG90eXBlLmNwcApAQCAtMzQsNiArMzQsNyBAQAogI2luY2x1ZGUgIkxvb2t1cC5oIgogI2luY2x1
ZGUgIk9iamVjdFByb3RvdHlwZS5oIgogI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKKyNpbmNsdWRl
ICJKU1N0cmluZ0l0ZXJhdG9yLmgiCiAjaW5jbHVkZSAiUHJvcGVydHlOYW1lQXJyYXkuaCIKICNp
bmNsdWRlICJSZWdFeHBDYWNoZS5oIgogI2luY2x1ZGUgIlJlZ0V4cENvbnN0cnVjdG9yLmgiCkBA
IC04Nyw2ICs4OCw3IEBACiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3Rv
RnVuY1N0YXJ0c1dpdGgoRXhlY1N0YXRlKik7CiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IHN0cmluZ1Byb3RvRnVuY0VuZHNXaXRoKEV4ZWNTdGF0ZSopOwogRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBzdHJpbmdQcm90b0Z1bmNJbmNsdWRlcyhFeGVjU3RhdGUqKTsKK0VuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG9GdW5jSXRlcmF0b3IoRXhlY1N0YXRlKik7
CiAKIGNvbnN0IENsYXNzSW5mbyBTdHJpbmdQcm90b3R5cGU6OnNfaW5mbyA9IHsgIlN0cmluZyIs
ICZTdHJpbmdPYmplY3Q6OnNfaW5mbywgMCwgQ1JFQVRFX01FVEhPRF9UQUJMRShTdHJpbmdQcm90
b3R5cGUpIH07CiAKQEAgLTE0MCw2ICsxNDIsOSBAQCB2b2lkIFN0cmluZ1Byb3RvdHlwZTo6Zmlu
aXNoQ3JlYXRpb24oVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1N0cgog
ICAgIEpTQ19OQVRJVkVfRlVOQ1RJT04oInN0YXJ0c1dpdGgiLCBzdHJpbmdQcm90b0Z1bmNTdGFy
dHNXaXRoLCBEb250RW51bSwgMCk7CiAgICAgSlNDX05BVElWRV9GVU5DVElPTigiZW5kc1dpdGgi
LCBzdHJpbmdQcm90b0Z1bmNFbmRzV2l0aCwgRG9udEVudW0sIDApOwogICAgIEpTQ19OQVRJVkVf
RlVOQ1RJT04oImluY2x1ZGVzIiwgc3RyaW5nUHJvdG9GdW5jSW5jbHVkZXMsIERvbnRFbnVtLCAw
KTsKKyAgICBKU0NfTkFUSVZFX0ZVTkNUSU9OKHZtLnByb3BlcnR5TmFtZXMtPml0ZXJhdG9yUHJp
dmF0ZU5hbWUsIHN0cmluZ1Byb3RvRnVuY0l0ZXJhdG9yLCBEb250RW51bSwgMCk7CisKKyAgICBK
U0NfTkFUSVZFX0lOVFJJTlNJQ19GVU5DVElPTih2bS5wcm9wZXJ0eU5hbWVzLT5jaGFyQ29kZUF0
UHJpdmF0ZU5hbWUsIHN0cmluZ1Byb3RvRnVuY0NoYXJDb2RlQXQsIERvbnRFbnVtLCAxLCBDaGFy
Q29kZUF0SW50cmluc2ljKTsKIAogICAgIC8vIFRoZSBjb25zdHJ1Y3RvciB3aWxsIGJlIGFkZGVk
IGxhdGVyLCBhZnRlciBTdHJpbmdDb25zdHJ1Y3RvciBoYXMgYmVlbiBidWlsdAogICAgIHB1dERp
cmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5sZW5ndGgsIGpzTnVt
YmVyKDApLCBEb250RGVsZXRlIHwgUmVhZE9ubHkgfCBEb250RW51bSk7CkBAIC0xNzAyLDUgKzE3
MDcsMTQgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90b0Z1bmNJbmNs
dWRlcyhFeGVjU3RhdGUqIGV4ZWMpCiAKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9v
bGVhbihzdHJpbmdUb1NlYXJjaEluLmNvbnRhaW5zKHNlYXJjaFN0cmluZywgdHJ1ZSwgc3RhcnQp
KSk7CiB9Ci0gICAgCisKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG9G
dW5jSXRlcmF0b3IoRXhlY1N0YXRlKiBleGVjKQoreworICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0g
ZXhlYy0+dGhpc1ZhbHVlKCk7CisgICAgaWYgKCFjaGVja09iamVjdENvZXJjaWJsZSh0aGlzVmFs
dWUpKQorICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjKTsKKyAgICBKU1N0cmlu
Zyogc3RyaW5nID0gdGhpc1ZhbHVlLnRvU3RyaW5nKGV4ZWMpOworICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoSlNTdHJpbmdJdGVyYXRvcjo6Y3JlYXRlKGV4ZWMsIGV4ZWMtPmNhbGxlZSgpLT5n
bG9iYWxPYmplY3QoKS0+c3RyaW5nSXRlcmF0b3JTdHJ1Y3R1cmUoKSwgc3RyaW5nKSk7Cit9CisK
IH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rl
c3RzL3N0cmVzcy9zdHJpbmctaXRlcmF0b3JzLmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rl
c3RzL3N0cmVzcy9zdHJpbmctaXRlcmF0b3JzLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQ2YzA1N2Q4ZmNkYjUx
NTM5MTY1Y2FmZjNhOGU2NmU4OWRhOTQ0OTIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL3N0cmluZy1pdGVyYXRvcnMuanMKQEAgLTAsMCArMSwy
MTIgQEAKKy8vIFRoaXMgdGVzdCBjaGVja3MgdGhlIGJlaGF2aW9yIG9mIHRoZSBTdHJpbmcgaXRl
cmF0b3IKKwordmFyIHRlc3RTdHJpbmcgPSAiQ29jb2EsQ2FwcHVjY2lubyI7Cit2YXIgc3RyaW5n
SXRlcmF0b3IgPSB0ZXN0U3RyaW5nW1N5bWJvbC5pdGVyYXRvcl0oKTsKK3ZhciBzdHJpbmdJdGVy
YXRvclByb3RvdHlwZSA9IHN0cmluZ0l0ZXJhdG9yLl9fcHJvdG9fXzsKK3ZhciBzdHJpbmdJdGVy
YXRvclByb3RvdHlwZU5leHQgPSBzdHJpbmdJdGVyYXRvclByb3RvdHlwZS5uZXh0OworCitpZiAo
c3RyaW5nSXRlcmF0b3IuaGFzT3duUHJvcGVydHkoJ25leHQnKSkKKyAgICB0aHJvdyAibmV4dCBt
ZXRob2Qgc2hvdWxkIGV4aXN0cyBvbiAlU3RyaW5nSXRlcmF0b3JQcm90b3R5cGUlIjsKK2lmICgh
c3RyaW5nSXRlcmF0b3JQcm90b3R5cGUuaGFzT3duUHJvcGVydHkoJ25leHQnKSkKKyAgICB0aHJv
dyAibmV4dCBtZXRob2Qgc2hvdWxkIGV4aXN0cyBvbiAlU3RyaW5nSXRlcmF0b3JQcm90b3R5cGUl
IjsKKwordmFyIGl0ZXJhdG9yID0gdGVzdFN0cmluZ1tTeW1ib2wuaXRlcmF0b3JdKCk7Cit2YXIg
aSA9IDA7Cit3aGlsZSAodHJ1ZSkgeworICAgIHZhciB7ZG9uZSwgdmFsdWV9ID0gaXRlcmF0b3Iu
bmV4dCgpOworICAgIGlmIChkb25lKQorICAgICAgICBicmVhazsKKyAgICBpZiAodmFsdWUgIT09
IHRlc3RTdHJpbmdbaV0pCisgICAgICAgIHRocm93ICJFcnJvcjogYmFkIHZhbHVlOiAiICsgdmFs
dWU7CisgICAgaSsrOworfQorCitpZiAodGVzdFN0cmluZy5sZW5ndGggIT09IGkpCisgICAgdGhy
b3cgIkVycm9yOiBiYWQgdmFsdWU6ICIgKyBpOworCitmdW5jdGlvbiB0ZXN0U3Vycm9nYXRlUGFp
cih0ZXN0U3RyaW5nLCBleHBlY3RlZCwgbnVtYmVyT2ZFbGVtZW50cykgeworICAgIGlmICh0ZXN0
U3RyaW5nLmxlbmd0aCAhPT0gbnVtYmVyT2ZFbGVtZW50cykKKyAgICAgICAgdGhyb3cgIkVycm9y
OiBiYWQgdmFsdWU6ICIgKyB0ZXN0U3RyaW5nLmxlbmd0aDsKKworICAgIHZhciBpdGVyYXRvciA9
IHRlc3RTdHJpbmdbU3ltYm9sLml0ZXJhdG9yXSgpOworICAgIHZhciBpID0gMDsKKyAgICB3aGls
ZSAodHJ1ZSkgeworICAgICAgICB2YXIge2RvbmUsIHZhbHVlfSA9IGl0ZXJhdG9yLm5leHQoKTsK
KyAgICAgICAgaWYgKGRvbmUpCisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgaWYgKHZhbHVl
ICE9PSBleHBlY3RlZFtpXSkKKyAgICAgICAgICAgIHRocm93ICJFcnJvcjogYmFkIHZhbHVlOiAi
ICsgdmFsdWU7CisgICAgICAgIGkrKzsKKyAgICB9CisKKyAgICBpZiAoaSAhPT0gZXhwZWN0ZWQu
bGVuZ3RoKQorICAgICAgICB0aHJvdyAiRXJyb3I6IGJhZCB2YWx1ZTogIiArIGk7CisKKyAgICBm
b3IgKHZhciBjb2RlUG9pbnQgb2YgdGVzdFN0cmluZykgeworICAgICAgICBpZiAodmFsdWUgIT09
IGV4cGVjdGVkW2ldKQorICAgICAgICAgICAgdGhyb3cgIkVycm9yOiBiYWQgdmFsdWU6ICIgKyB2
YWx1ZTsKKyAgICB9Cit9CisKKy8vICJcdUQ4NDJcdURGQjdcdTkxY2VcdTViYjYiCit2YXIgdGVz
dFN0cmluZyA9ICLwoK636YeO5a62IjsKK3ZhciBleHBlY3RlZCA9IFsKKyAgICBTdHJpbmcuZnJv
bUNoYXJDb2RlKDB4RDg0MiwgMHhERkI3KSwKKyAgICBTdHJpbmcuZnJvbUNoYXJDb2RlKDB4OTFD
RSksCisgICAgU3RyaW5nLmZyb21DaGFyQ29kZSgweDVCQjYpLAorXTsKK3Rlc3RTdXJyb2dhdGVQ
YWlyKHRlc3RTdHJpbmcsIGV4cGVjdGVkLCA0KTsKKwordmFyIHRlc3RTdHJpbmcgPSAiQVx1RDg0
MiI7Cit2YXIgZXhwZWN0ZWQgPSBbCisgICAgU3RyaW5nLmZyb21DaGFyQ29kZSgweDAwNDEpLAor
ICAgIFN0cmluZy5mcm9tQ2hhckNvZGUoMHhEODQyKSwKK107Cit0ZXN0U3Vycm9nYXRlUGFpcih0
ZXN0U3RyaW5nLCBleHBlY3RlZCwgMik7CisKK3ZhciB0ZXN0U3RyaW5nID0gIkFcdUQ4NDJBIjsK
K3ZhciBleHBlY3RlZCA9IFsKKyAgICBTdHJpbmcuZnJvbUNoYXJDb2RlKDB4MDA0MSksCisgICAg
U3RyaW5nLmZyb21DaGFyQ29kZSgweEQ4NDIpLAorICAgIFN0cmluZy5mcm9tQ2hhckNvZGUoMHgw
MDQxKSwKK107Cit0ZXN0U3Vycm9nYXRlUGFpcih0ZXN0U3RyaW5nLCBleHBlY3RlZCwgMyk7CisK
K3ZhciB0ZXN0U3RyaW5nID0gIkFcdUQ4NDJcdURGQjciOwordmFyIGV4cGVjdGVkID0gWworICAg
IFN0cmluZy5mcm9tQ2hhckNvZGUoMHgwMDQxKSwKKyAgICBTdHJpbmcuZnJvbUNoYXJDb2RlKDB4
RDg0MiwgMHhERkI3KSwKK107Cit0ZXN0U3Vycm9nYXRlUGFpcih0ZXN0U3RyaW5nLCBleHBlY3Rl
ZCwgMyk7CisKK3ZhciB0ZXN0U3RyaW5nID0gIlx1RDg0MkFcdURGQjciOwordmFyIGV4cGVjdGVk
ID0gWworICAgIFN0cmluZy5mcm9tQ2hhckNvZGUoMHhEODQyKSwKKyAgICBTdHJpbmcuZnJvbUNo
YXJDb2RlKDB4MDA0MSksCisgICAgU3RyaW5nLmZyb21DaGFyQ29kZSgweERGQjcpLAorXTsKK3Rl
c3RTdXJyb2dhdGVQYWlyKHRlc3RTdHJpbmcsIGV4cGVjdGVkLCAzKTsKKwordmFyIHRlc3RTdHJp
bmcgPSAiXHVERkI3XHVEODQyQSI7Cit2YXIgZXhwZWN0ZWQgPSBbCisgICAgU3RyaW5nLmZyb21D
aGFyQ29kZSgweERGQjcpLAorICAgIFN0cmluZy5mcm9tQ2hhckNvZGUoMHhEODQyKSwKKyAgICBT
dHJpbmcuZnJvbUNoYXJDb2RlKDB4MDA0MSksCitdOwordGVzdFN1cnJvZ2F0ZVBhaXIodGVzdFN0
cmluZywgZXhwZWN0ZWQsIDMpOworCit2YXIgc3RyaW5nMSA9ICJDb2NvYSI7Cit2YXIgc3RyaW5n
MUl0ZXJhdG9yID0gc3RyaW5nMVtTeW1ib2wuaXRlcmF0b3JdKCk7Cit2YXIgaW5kZXggPSAwOwor
d2hpbGUgKHRydWUpIHsKKyAgICB2YXIgcmVzdWx0ID0gc3RyaW5nSXRlcmF0b3JQcm90b3R5cGVO
ZXh0LmNhbGwoc3RyaW5nMUl0ZXJhdG9yKTsKKyAgICB2YXIgdmFsdWUgPSByZXN1bHQudmFsdWU7
CisgICAgaWYgKHJlc3VsdC5kb25lKSB7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBpZiAo
dmFsdWUgIT09IHN0cmluZzFbaW5kZXgrK10pCisgICAgICAgIHRocm93ICJFcnJvcjogYmFkIHZh
bHVlOiAiICsgdmFsdWU7Cit9CitpZiAoaW5kZXggIT09IDUpCisgICAgdGhyb3cgIkVycm9yOiBi
YWQgaW5kZXg6ICIgKyBpbmRleDsKKworZnVuY3Rpb24gaW5jcmVtZW50KGl0ZXIpIHsKKyAgICBy
ZXR1cm4gc3RyaW5nSXRlcmF0b3JQcm90b3R5cGVOZXh0LmNhbGwoaXRlcik7Cit9Cit2YXIgc3Ry
aW5nMSA9ICJDb2NvYSI7Cit2YXIgc3RyaW5nMiA9ICJDb2NvYSI7Cit2YXIgc3RyaW5nMUl0ZXJh
dG9yID0gc3RyaW5nMVtTeW1ib2wuaXRlcmF0b3JdKCk7Cit2YXIgc3RyaW5nMkl0ZXJhdG9yID0g
c3RyaW5nMltTeW1ib2wuaXRlcmF0b3JdKCk7Citmb3IgKHZhciBpID0gMDsgaSA8IDM7ICsraSkg
eworICAgIHZhciB2YWx1ZTEgPSBpbmNyZW1lbnQoc3RyaW5nMUl0ZXJhdG9yKS52YWx1ZTsKKyAg
ICB2YXIgdmFsdWUyID0gaW5jcmVtZW50KHN0cmluZzJJdGVyYXRvcikudmFsdWU7CisgICAgaWYg
KHZhbHVlMSAhPT0gdmFsdWUyKQorICAgICAgICB0aHJvdyAiRXJyb3I6IGJhZCB2YWx1ZTogIiAr
IHZhbHVlMSArICIgIiArIHZhbHVlMjsKK30KKwordmFyIHN0cmluZzEgPSAiQ2FwcHVjY2lubyI7
Cit2YXIgc3RyaW5nMUl0ZXJhdG9yID0gc3RyaW5nMVtTeW1ib2wuaXRlcmF0b3JdKCk7CisKK3Zh
ciB2YWx1ZSA9IHN0cmluZzFJdGVyYXRvci5uZXh0KCkudmFsdWU7CitpZiAodmFsdWUgIT09ICJD
IikKKyAgICB0aHJvdyAiRXJyb3I6IGJhZCB2YWx1ZTogIiArIHZhbHVlOwordmFyIHZhbHVlID0g
c3RyaW5nMUl0ZXJhdG9yLm5leHQoKS52YWx1ZTsKK2lmICh2YWx1ZSAhPT0gImEiKQorICAgIHRo
cm93ICJFcnJvcjogYmFkIHZhbHVlOiAiICsgdmFsdWU7Cit2YXIgdmFsdWUgPSBzdHJpbmcxSXRl
cmF0b3IubmV4dCgpLnZhbHVlOworaWYgKHZhbHVlICE9PSAicCIpCisgICAgdGhyb3cgIkVycm9y
OiBiYWQgdmFsdWU6ICIgKyB2YWx1ZTsKK3ZhciB2YWx1ZSA9IHN0cmluZ0l0ZXJhdG9yUHJvdG90
eXBlTmV4dC5jYWxsKHN0cmluZzFJdGVyYXRvcikudmFsdWU7CitpZiAodmFsdWUgIT09ICJwIikK
KyAgICB0aHJvdyAiRXJyb3I6IGJhZCB2YWx1ZTogIiArIHZhbHVlOwordmFyIHZhbHVlID0gc3Ry
aW5nSXRlcmF0b3JQcm90b3R5cGVOZXh0LmNhbGwoc3RyaW5nMUl0ZXJhdG9yKS52YWx1ZTsKK2lm
ICh2YWx1ZSAhPT0gInUiKQorICAgIHRocm93ICJFcnJvcjogYmFkIHZhbHVlOiAiICsgdmFsdWU7
Cit2YXIgdmFsdWUgPSBzdHJpbmdJdGVyYXRvclByb3RvdHlwZU5leHQuY2FsbChzdHJpbmcxSXRl
cmF0b3IpLnZhbHVlOworaWYgKHZhbHVlICE9PSAiYyIpCisgICAgdGhyb3cgIkVycm9yOiBiYWQg
dmFsdWU6ICIgKyB2YWx1ZTsKK3ZhciB2YWx1ZSA9IHN0cmluZ0l0ZXJhdG9yUHJvdG90eXBlTmV4
dC5jYWxsKHN0cmluZzFJdGVyYXRvcikudmFsdWU7CitpZiAodmFsdWUgIT09ICJjIikKKyAgICB0
aHJvdyAiRXJyb3I6IGJhZCB2YWx1ZTogIiArIHZhbHVlOwordmFyIHZhbHVlID0gc3RyaW5nSXRl
cmF0b3JQcm90b3R5cGVOZXh0LmNhbGwoc3RyaW5nMUl0ZXJhdG9yKS52YWx1ZTsKK2lmICh2YWx1
ZSAhPT0gImkiKQorICAgIHRocm93ICJFcnJvcjogYmFkIHZhbHVlOiAiICsgdmFsdWU7Cit2YXIg
dmFsdWUgPSBzdHJpbmdJdGVyYXRvclByb3RvdHlwZU5leHQuY2FsbChzdHJpbmcxSXRlcmF0b3Ip
LnZhbHVlOworaWYgKHZhbHVlICE9PSAibiIpCisgICAgdGhyb3cgIkVycm9yOiBiYWQgdmFsdWU6
ICIgKyB2YWx1ZTsKK3ZhciB2YWx1ZSA9IHN0cmluZ0l0ZXJhdG9yUHJvdG90eXBlTmV4dC5jYWxs
KHN0cmluZzFJdGVyYXRvcikudmFsdWU7CitpZiAodmFsdWUgIT09ICJvIikKKyAgICB0aHJvdyAi
RXJyb3I6IGJhZCB2YWx1ZTogIiArIHZhbHVlOwordmFyIHZhbHVlID0gc3RyaW5nSXRlcmF0b3JQ
cm90b3R5cGVOZXh0LmNhbGwoc3RyaW5nMUl0ZXJhdG9yKS52YWx1ZTsKK2lmICh2YWx1ZSAhPT0g
dW5kZWZpbmVkKQorICAgIHRocm93ICJFcnJvcjogYmFkIHZhbHVlOiAiICsgdmFsdWU7CisKK3Zh
ciBwcmltaXRpdmVzID0gWworICAgICJzdHJpbmciLAorICAgIDQyLAorICAgIDAuMDMsCisgICAg
ZmFsc2UsCisgICAgdHJ1ZSwKKyAgICBTeW1ib2woIkNvY29hIiksCisgICAgbnVsbCwKKyAgICB1
bmRlZmluZWQKK107Citmb3IgKHZhciBwcmltaXRpdmUgb2YgcHJpbWl0aXZlcykgeworICAgIHZh
ciBkaWRUaHJvdyA9IG51bGw7CisgICAgdHJ5IHsKKyAgICAgICAgc3RyaW5nSXRlcmF0b3JQcm90
b3R5cGVOZXh0LmNhbGwocHJpbWl0aXZlKTsKKyAgICB9IGNhdGNoIChlKSB7CisgICAgICAgIGRp
ZFRocm93ID0gZTsKKyAgICB9CisgICAgaWYgKCFkaWRUaHJvdykKKyAgICAgICAgdGhyb3cgIkVy
cm9yOiBubyBlcnJvciB0aHJvd24iOworICAgIHZhciBtZXNzYWdlID0gJ1R5cGVFcnJvcjogJVN0
cmluZ0l0ZXJhdG9yUHJvdG90eXBlJS5uZXh0IHJlcXVpcmVzIHRoYXQgfHRoaXN8IGJlIFN0cmlu
ZyBJdGVyYXRvciBJbnN0YW5jZSc7CisgICAgaWYgKHByaW1pdGl2ZSA9PSBudWxsKQorICAgICAg
ICBtZXNzYWdlID0gJ1R5cGVFcnJvcjogJVN0cmluZ0l0ZXJhdG9yUHJvdG90eXBlJS5uZXh0IHJl
cXVpcmVzIHRoYXQgfHRoaXN8IGJlIG5vdCBudWxsIG9yIHVuZGVmaW5lZCcKKyAgICBpZiAoU3Ry
aW5nKGRpZFRocm93KSAhPT0gbWVzc2FnZSkKKyAgICAgICAgdGhyb3cgIkVycm9yOiBiYWQgZXJy
b3IgdGhyb3duOiAiICsgZGlkVGhyb3c7Cit9CisKK3ZhciBub25SZWxhdGVkT2JqZWN0cyA9IFsK
KyAgICB7fSwKKyAgICBbXSwKKyAgICBuZXcgRGF0ZSgpLAorICAgIG5ldyBFcnJvcigpLAorICAg
IE9iamVjdChTeW1ib2woKSksCisgICAgbmV3IFN0cmluZygiQ2FwcHVjY2lubyIpLAorICAgIG5l
dyBOdW1iZXIoNDIpLAorICAgIG5ldyBCb29sZWFuKGZhbHNlKSwKKyAgICBmdW5jdGlvbiAoKSB7
IH0sCitdOworZm9yICh2YXIgb2JqZWN0IG9mIG5vblJlbGF0ZWRPYmplY3RzKSB7CisgICAgdmFy
IGRpZFRocm93ID0gbnVsbDsKKyAgICB0cnkgeworICAgICAgICBzdHJpbmdJdGVyYXRvclByb3Rv
dHlwZU5leHQuY2FsbChvYmplY3QpOworICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAgZGlkVGhy
b3cgPSBlOworICAgIH0KKyAgICBpZiAoIWRpZFRocm93KQorICAgICAgICB0aHJvdyAiRXJyb3I6
IG5vIGVycm9yIHRocm93biI7CisgICAgaWYgKFN0cmluZyhkaWRUaHJvdykgIT09ICdUeXBlRXJy
b3I6ICVTdHJpbmdJdGVyYXRvclByb3RvdHlwZSUubmV4dCByZXF1aXJlcyB0aGF0IHx0aGlzfCBi
ZSBTdHJpbmcgSXRlcmF0b3IgSW5zdGFuY2UnKQorICAgICAgICB0aHJvdyAiRXJyb3I6IGJhZCBl
cnJvciB0aHJvd246ICIgKyBkaWRUaHJvdzsKK30K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>247952</attachid>
            <date>2015-03-05 08:39:01 -0800</date>
            <delta_ts>2015-03-05 10:27:52 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-142080-20150306013844.patch</filename>
            <type>text/plain</type>
            <size>47688</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTgxMDc3CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAw
ODQwMDM2YTAzNjc3MzY1ZTQ1NmQyNDZlOGQyNmZhYjExYTIwZjAxLi5kOGI5OWUyMDc5YTVmYmM1
YTJhNWMzNmMyNmQ0MzI0MDBiNmNjYThjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
NSArMSw1NCBAQAogMjAxNS0wMy0wNSAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KIAorICAgICAgICBJbXBsZW1lbnQgRVM2IFN0cmluZ0l0ZXJhdG9yCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDIwODAKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIGludHJvZHVj
ZXMgRVM2IFN0cmluZyBJdGVyYXRvci4KKyAgICAgICAgSXQgZW51bWVyYXRlcyBjb2RlIHBvaW50
cyBpbnN0ZWFkIG9mIGVsZW1lbnRzIGluIFN0cmluZy4KKyAgICAgICAgU28gc3Vycm9nYXRlIHBh
aXJzIHNob3VsZCBiZSBoYW5kbGVkIGNvcnJlY3RseS4KKworICAgICAgICAqIENNYWtlTGlzdHMu
dHh0OgorICAgICAgICAqIERlcml2ZWRTb3VyY2VzLm1ha2U6CisgICAgICAgICogSmF2YVNjcmlw
dENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qOgorICAgICAgICAqIEphdmFTY3Jp
cHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvai5maWx0ZXJzOgorICAgICAgICAq
IEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogYnVp
bHRpbnMvU3RyaW5nSXRlcmF0b3IucHJvdG90eXBlLmpzOiBBZGRlZC4KKyAgICAgICAgKG5leHQp
OgorICAgICAgICAqIHJ1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuaDoKKyAgICAgICAgKiBydW50
aW1lL0pTR2xvYmFsT2JqZWN0LmNwcDoKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0
Lmg6CisgICAgICAgICogcnVudGltZS9KU1N0cmluZ0l0ZXJhdG9yLmNwcDogQWRkZWQuCisgICAg
ICAgIChKU0M6OkpTU3RyaW5nSXRlcmF0b3I6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKiBy
dW50aW1lL0pTU3RyaW5nSXRlcmF0b3IuaDogQWRkZWQuCisgICAgICAgIChKU0M6OkpTU3RyaW5n
SXRlcmF0b3I6OmNyZWF0ZVN0cnVjdHVyZSk6CisgICAgICAgIChKU0M6OkpTU3RyaW5nSXRlcmF0
b3I6OmNyZWF0ZSk6CisgICAgICAgIChKU0M6OkpTU3RyaW5nSXRlcmF0b3I6OkpTU3RyaW5nSXRl
cmF0b3IpOgorICAgICAgICAqIHJ1bnRpbWUvU3RyaW5nSXRlcmF0b3JDb25zdHJ1Y3Rvci5jcHA6
IEFkZGVkLgorICAgICAgICAoSlNDOjpTdHJpbmdJdGVyYXRvckNvbnN0cnVjdG9yOjpmaW5pc2hD
cmVhdGlvbik6CisgICAgICAgICogcnVudGltZS9TdHJpbmdJdGVyYXRvckNvbnN0cnVjdG9yLmg6
IEFkZGVkLgorICAgICAgICAoSlNDOjpTdHJpbmdJdGVyYXRvckNvbnN0cnVjdG9yOjpjcmVhdGUp
OgorICAgICAgICAoSlNDOjpTdHJpbmdJdGVyYXRvckNvbnN0cnVjdG9yOjpjcmVhdGVTdHJ1Y3R1
cmUpOgorICAgICAgICAoSlNDOjpTdHJpbmdJdGVyYXRvckNvbnN0cnVjdG9yOjpTdHJpbmdJdGVy
YXRvckNvbnN0cnVjdG9yKToKKyAgICAgICAgKiBydW50aW1lL1N0cmluZ0l0ZXJhdG9yUHJvdG90
eXBlLmNwcDogQWRkZWQuCisgICAgICAgIChKU0M6OlN0cmluZ0l0ZXJhdG9yUHJvdG90eXBlOjpm
aW5pc2hDcmVhdGlvbik6CisgICAgICAgIChKU0M6OlN0cmluZ0l0ZXJhdG9yUHJvdG90eXBlOjpn
ZXRPd25Qcm9wZXJ0eVNsb3QpOgorICAgICAgICAoSlNDOjpzdHJpbmdJdGVyYXRvclByb3RvdHlw
ZUl0ZXJhdG9yKToKKyAgICAgICAgKiBydW50aW1lL1N0cmluZ0l0ZXJhdG9yUHJvdG90eXBlLmg6
IEFkZGVkLgorICAgICAgICAoSlNDOjpTdHJpbmdJdGVyYXRvclByb3RvdHlwZTo6Y3JlYXRlKToK
KyAgICAgICAgKEpTQzo6U3RyaW5nSXRlcmF0b3JQcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZSk6
CisgICAgICAgIChKU0M6OlN0cmluZ0l0ZXJhdG9yUHJvdG90eXBlOjpTdHJpbmdJdGVyYXRvclBy
b3RvdHlwZSk6CisgICAgICAgICogcnVudGltZS9TdHJpbmdQcm90b3R5cGUuY3BwOgorICAgICAg
ICAoSlNDOjpTdHJpbmdQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKEpTQzo6
c3RyaW5nUHJvdG9GdW5jSXRlcmF0b3IpOgorICAgICAgICAqIHRlc3RzL3N0cmVzcy9zdHJpbmct
aXRlcmF0b3JzLmpzOiBBZGRlZC4KKyAgICAgICAgKHRlc3RTdXJyb2dhdGVQYWlyKToKKyAgICAg
ICAgKGluY3JlbWVudCk6CisgICAgICAgIChmb3IpOgorCisyMDE1LTAzLTA1ICBZdXN1a2UgU3V6
dWtpICA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgorCiAgICAgICAgIFVwZ3JhZGUgRVM2IEl0ZXJh
dG9yIGludGVyZmFjZXMKICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE0MTM1MQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VM
aXN0cy50eHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXggZTc1
NGM2ZWE2MjNhOWQ4ODkyMjJiNTE4NmI3YTY5NzdkMTIyNDdlZi4uYzNjYzY2MmE2OWRlNWVkZDIz
MGVmOTNlZjVhMzIyZTE2YmRiNDQ4YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4
dApAQCAtNDk1LDYgKzQ5NSw3IEBAIHNldChKYXZhU2NyaXB0Q29yZV9SVU5USU1FX1NPVVJDRVMK
ICAgICBydW50aW1lL0pTU2V0LmNwcAogICAgIHJ1bnRpbWUvSlNTZXRJdGVyYXRvci5jcHAKICAg
ICBydW50aW1lL0pTU3RyaW5nLmNwcAorICAgIHJ1bnRpbWUvSlNTdHJpbmdJdGVyYXRvci5jcHAK
ICAgICBydW50aW1lL0pTU3RyaW5nSm9pbmVyLmNwcAogICAgIHJ1bnRpbWUvSlNTeW1ib2xUYWJs
ZU9iamVjdC5jcHAKICAgICBydW50aW1lL0pTVHlwZWRBcnJheUNvbnN0cnVjdG9ycy5jcHAKQEAg
LTU0Niw2ICs1NDcsOCBAQCBzZXQoSmF2YVNjcmlwdENvcmVfUlVOVElNRV9TT1VSQ0VTCiAgICAg
cnVudGltZS9TcGFyc2VBcnJheVZhbHVlTWFwLmNwcAogICAgIHJ1bnRpbWUvU3RyaWN0RXZhbEFj
dGl2YXRpb24uY3BwCiAgICAgcnVudGltZS9TdHJpbmdDb25zdHJ1Y3Rvci5jcHAKKyAgICBydW50
aW1lL1N0cmluZ0l0ZXJhdG9yQ29uc3RydWN0b3IuY3BwCisgICAgcnVudGltZS9TdHJpbmdJdGVy
YXRvclByb3RvdHlwZS5jcHAKICAgICBydW50aW1lL1N0cmluZ09iamVjdC5jcHAKICAgICBydW50
aW1lL1N0cmluZ1Byb3RvdHlwZS5jcHAKICAgICBydW50aW1lL1N0cmluZ1JlY3Vyc2lvbkNoZWNr
ZXIuY3BwCkBAIC01OTgsNiArNjAxLDcgQEAgc2V0KEphdmFTY3JpcHRDb3JlX0xVVF9GSUxFUwog
ICAgIHJ1bnRpbWUvUmVnRXhwT2JqZWN0LmNwcAogICAgIHJ1bnRpbWUvUmVnRXhwUHJvdG90eXBl
LmNwcAogICAgIHJ1bnRpbWUvU3RyaW5nQ29uc3RydWN0b3IuY3BwCisgICAgcnVudGltZS9TdHJp
bmdJdGVyYXRvclByb3RvdHlwZS5jcHAKICAgICBydW50aW1lL1N5bWJvbFByb3RvdHlwZS5jcHAK
ICkKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0Rlcml2ZWRTb3VyY2VzLm1h
a2UgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQppbmRleCA0ZGIw
OWJkNDc3MmI0ZDFjOWYwYzYxYzAyYWU2ZDM5NWI2NTQxZTdiLi41NTQwZjcyNDljZWE0NDE1ZjJl
YTllOGY3YzJlYTg2NTBkNTYwNjg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
RGVyaXZlZFNvdXJjZXMubWFrZQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNv
dXJjZXMubWFrZQpAQCAtNTcsNiArNTcsNyBAQCBhbGwgOiBcCiAgICAgUmVnRXhwSml0VGFibGVz
LmggXAogICAgIFJlZ0V4cE9iamVjdC5sdXQuaCBcCiAgICAgU3RyaW5nQ29uc3RydWN0b3IubHV0
LmggXAorICAgIFN0cmluZ0l0ZXJhdG9yUHJvdG90eXBlLmx1dC5oIFwKICAgICBTeW1ib2xQcm90
b3R5cGUubHV0LmggXAogICAgIHVkaXM4Nl9pdGFiLmggXAogICAgIEJ5dGVjb2Rlcy5oIFwKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0ph
dmFTY3JpcHRDb3JlLnZjeHByb2ogYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENv
cmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qCmluZGV4IGQyN2MzZmRiODg1MTIyMzk3
N2Q1NjMwZWFiN2Y2ZTA5NjQxNGM4ZjYuLjg2YmI1YWFmYzcyNTU0NGFmZWEwN2Q0MGJiYzljNTRh
OWIwYjEwODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29y
ZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2oKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvagpAQCAtNzYx
LDYgKzc2MSw3IEBACiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTU2V0LmNw
cCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSlNTZXRJdGVyYXRvci5j
cHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTU3RyaW5nLmNwcCIg
Lz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSlNTdHJpbmdJdGVyYXRvci5j
cHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTU3RyaW5nSm9pbmVy
LmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSlNTeW1ib2xUYWJs
ZU9iamVjdC5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTVHlw
ZWRBcnJheUNvbnN0cnVjdG9ycy5jcHAiIC8+CkBAIC04MTQsNiArODE1LDggQEAKICAgICA8Q2xD
b21waWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcU3RyaWN0RXZhbEFjdGl2YXRpb24uY3BwIiAvPgog
ICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGltZVxTdHJpbmdDb25zdHJ1Y3Rvci5jcHAi
IC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1lXFN0cmluZ09iamVjdC5jcHAi
IC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxydW50aW1lXFN0cmluZ0l0ZXJhdG9yQ29u
c3RydWN0b3IuY3BwIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccnVudGltZVxTdHJp
bmdJdGVyYXRvclByb3RvdHlwZS5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxy
dW50aW1lXFN0cmluZ1Byb3RvdHlwZS5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIu
LlxydW50aW1lXFN0cmluZ1JlY3Vyc2lvbkNoZWNrZXIuY3BwIiAvPgogICAgIDxDbENvbXBpbGUg
SW5jbHVkZT0iLi5ccnVudGltZVxTdHJ1Y3R1cmUuY3BwIiAvPgpAQCAtMTU1NCw2ICsxNTU3LDcg
QEAKICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSlNTZXRJdGVyYXRvci5oIiAv
PgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU1N0cmluZy5oIiAvPgogICAg
IDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU1N0cmluZ0J1aWxkZXIuaCIgLz4KKyAg
ICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSlNTdHJpbmdJdGVyYXRvci5oIiAvPgog
ICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU1N0cmluZ0pvaW5lci5oIiAvPgog
ICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU1N5bWJvbFRhYmxlT2JqZWN0Lmgi
IC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXEpTVHlwZS5oIiAvPgpAQCAt
MTYyNiw2ICsxNjMwLDggQEAKICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcU3Rh
Y2tBbGlnbm1lbnQuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcU3Ry
aWN0RXZhbEFjdGl2YXRpb24uaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRp
bWVcU3RyaW5nQ29uc3RydWN0b3IuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1
bnRpbWVcU3RyaW5nSXRlcmF0b3JDb25zdHJ1Y3Rvci5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5j
bHVkZT0iLi5ccnVudGltZVxTdHJpbmdJdGVyYXRvclByb3RvdHlwZS5oIiAvPgogICAgIDxDbElu
Y2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxTdHJpbmdPYmplY3QuaCIgLz4KICAgICA8Q2xJbmNs
dWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcU3RyaW5nUHJvdG90eXBlLmgiIC8+CiAgICAgPENsSW5j
bHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXFN0cmluZ1JlY3Vyc2lvbkNoZWNrZXIuaCIgLz4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0ph
dmFTY3JpcHRDb3JlLnZjeHByb2ouZmlsdGVycyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZh
U2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2ouZmlsdGVycwppbmRleCBh
YjYyMTg4NDQ2MmZkMzU4OWNhNjc4ZmU0ZjU3M2NkMGUwZDIxYzEzLi45NGZmMmYxMzBjZGQwZDlk
NTYwYTcxZDVmZDRlM2NmMWVmMjI5NDc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qLmZpbHRlcnMK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNj
cmlwdENvcmUudmN4cHJvai5maWx0ZXJzCkBAIC03MDUsNiArNzA1LDkgQEAKICAgICA8Q2xDb21w
aWxlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSlNTdHJpbmcuY3BwIj4KICAgICAgIDxGaWx0ZXI+cnVu
dGltZTwvRmlsdGVyPgogICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0i
Li5ccnVudGltZVxKU1N0cmluZ0l0ZXJhdG9yLmNwcCI+CisgICAgICA8RmlsdGVyPnJ1bnRpbWU8
L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJ1
bnRpbWVcSlNTdHJpbmdKb2luZXIuY3BwIj4KICAgICAgIDxGaWx0ZXI+cnVudGltZTwvRmlsdGVy
PgogICAgIDwvQ2xDb21waWxlPgpAQCAtODM3LDYgKzg0MCwxMiBAQAogICAgIDxDbENvbXBpbGUg
SW5jbHVkZT0iLi5ccnVudGltZVxTdHJpbmdDb25zdHJ1Y3Rvci5jcHAiPgogICAgICAgPEZpbHRl
cj5ydW50aW1lPC9GaWx0ZXI+CiAgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNs
dWRlPSIuLlxydW50aW1lXFN0cmluZ0l0ZXJhdG9yQ29uc3RydWN0b3IuY3BwIj4KKyAgICAgIDxG
aWx0ZXI+cnVudGltZTwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUg
SW5jbHVkZT0iLi5ccnVudGltZVxTdHJpbmdJdGVyYXRvclByb3RvdHlwZS5jcHAiPgorICAgICAg
PEZpbHRlcj5ydW50aW1lPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CiAgICAgPENsQ29tcGls
ZSBJbmNsdWRlPSIuLlxydW50aW1lXFN0cmluZ09iamVjdC5jcHAiPgogICAgICAgPEZpbHRlcj5y
dW50aW1lPC9GaWx0ZXI+CiAgICAgPC9DbENvbXBpbGU+CkBAIC0yNzM5LDYgKzI3NDgsOSBAQAog
ICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccnVudGltZVxKU1N0cmluZ0J1aWxkZXIuaCI+CiAg
ICAgICA8RmlsdGVyPnJ1bnRpbWU8L0ZpbHRlcj4KICAgICA8L0NsSW5jbHVkZT4KKyAgICA8Q2xJ
bmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcSlNTdHJpbmdJdGVyYXRvci5oIj4KKyAgICAgIDxG
aWx0ZXI+cnVudGltZTwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgogICAgIDxDbEluY2x1ZGUg
SW5jbHVkZT0iLi5ccnVudGltZVxKU1N0cmluZ0pvaW5lci5oIj4KICAgICAgIDxGaWx0ZXI+cnVu
dGltZTwvRmlsdGVyPgogICAgIDwvQ2xJbmNsdWRlPgpAQCAtMjg4Niw2ICsyODk4LDEyIEBACiAg
ICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXFN0cmluZ0NvbnN0cnVjdG9yLmgiPgog
ICAgICAgPEZpbHRlcj5ydW50aW1lPC9GaWx0ZXI+CiAgICAgPC9DbEluY2x1ZGU+CisgICAgPENs
SW5jbHVkZSBJbmNsdWRlPSIuLlxydW50aW1lXFN0cmluZ0l0ZXJhdG9yQ29uc3RydWN0b3IuaCI+
CisgICAgICA8RmlsdGVyPnJ1bnRpbWU8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KKyAgICA8
Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcU3RyaW5nSXRlcmF0b3JQcm90b3R5cGUuaCI+
CisgICAgICA8RmlsdGVyPnJ1bnRpbWU8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KICAgICA8
Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJ1bnRpbWVcU3RyaW5nT2JqZWN0LmgiPgogICAgICAgPEZp
bHRlcj5ydW50aW1lPC9GaWx0ZXI+CiAgICAgPC9DbEluY2x1ZGU+CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
aiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCmluZGV4IGZiMDZhYmMwMjM3YTJkM2FjNGQwNDdlZDBmYTE0ZDc3ZTFmYzc2OTYu
LmJmN2YxNWIxOTk1MGY5OTNkZmY2YzM4OTNkZGE5YThlZTRiMmJmYWUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCkBAIC05NTUsNiArOTU1LDEyIEBACiAJCTcwNUI0MUIxMUE2RTUwMUUw
MDcxNjc1NyAvKiBTeW1ib2xQcm90b3R5cGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNzA1QjQxQTkxQTZFNTAxRTAwNzE2NzU3IC8qIFN5bWJvbFBy
b3RvdHlwZS5jcHAgKi87IH07CiAJCTcwNUI0MUIyMUE2RTUwMUUwMDcxNjc1NyAvKiBTeW1ib2xQ
cm90b3R5cGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDcwNUI0MUFBMUE2RTUwMUUwMDcxNjc1NyAvKiBTeW1ib2xQcm90b3R5cGUuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3MEIwQTlEMTFBOUI2NjQ2
MDAwMTMwNkEgLyogUnVudGltZUZsYWdzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA3MEIwQTlEMDFBOUI2NjIwMDAwMTMwNkEgLyogUnVudGltZUZsYWdz
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJNzBF
QzBFQzIxQUEwRDdEQTAwQjZBQUZBIC8qIEpTU3RyaW5nSXRlcmF0b3IuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzBFQzBFQkMxQUEwRDdEQTAwQjZB
QUZBIC8qIEpTU3RyaW5nSXRlcmF0b3IuY3BwICovOyB9OworCQk3MEVDMEVDMzFBQTBEN0RBMDBC
NkFBRkEgLyogSlNTdHJpbmdJdGVyYXRvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNzBFQzBFQkQxQUEwRDdEQTAwQjZBQUZBIC8qIEpTU3RyaW5nSXRl
cmF0b3IuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owor
CQk3MEVDMEVDNDFBQTBEN0RBMDBCNkFBRkEgLyogU3RyaW5nSXRlcmF0b3JDb25zdHJ1Y3Rvci5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MEVDMEVC
RTFBQTBEN0RBMDBCNkFBRkEgLyogU3RyaW5nSXRlcmF0b3JDb25zdHJ1Y3Rvci5jcHAgKi87IH07
CisJCTcwRUMwRUM1MUFBMEQ3REEwMEI2QUFGQSAvKiBTdHJpbmdJdGVyYXRvckNvbnN0cnVjdG9y
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MEVDMEVC
RjFBQTBEN0RBMDBCNkFBRkEgLyogU3RyaW5nSXRlcmF0b3JDb25zdHJ1Y3Rvci5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTcwRUMwRUM2MUFBMEQ3
REEwMEI2QUFGQSAvKiBTdHJpbmdJdGVyYXRvclByb3RvdHlwZS5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MEVDMEVDMDFBQTBEN0RBMDBCNkFBRkEg
LyogU3RyaW5nSXRlcmF0b3JQcm90b3R5cGUuY3BwICovOyB9OworCQk3MEVDMEVDNzFBQTBEN0RB
MDBCNkFBRkEgLyogU3RyaW5nSXRlcmF0b3JQcm90b3R5cGUuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcwRUMwRUMxMUFBMEQ3REEwMEI2QUFGQSAvKiBT
dHJpbmdJdGVyYXRvclByb3RvdHlwZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCTdDMDA4Q0QyMTg2RjhBOTMwMDk1NUMyNCAvKiBKU1Byb21pc2VG
dW5jdGlvbnMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gN0MwMDhDRDAxODZGOEE5MzAwOTU1QzI0IC8qIEpTUHJvbWlzZUZ1bmN0aW9ucy5jcHAgKi87
IH07CiAJCTdDMDA4Q0QzMTg2RjhBOTMwMDk1NUMyNCAvKiBKU1Byb21pc2VGdW5jdGlvbnMuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDMDA4Q0QxMTg2
RjhBOTMwMDk1NUMyNCAvKiBKU1Byb21pc2VGdW5jdGlvbnMuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3QzAwOENEQTE4NzEyNEJCMDA5NTVDMjQg
LyogSlNQcm9taXNlRGVmZXJyZWQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gN0MwMDhDRDgxODcxMjRCQjAwOTU1QzI0IC8qIEpTUHJvbWlzZURlZmVy
cmVkLmNwcCAqLzsgfTsKQEAgLTI2NDAsNiArMjY0NiwxMiBAQAogCQk3MDVCNDFBOTFBNkU1MDFF
MDA3MTY3NTcgLyogU3ltYm9sUHJvdG90eXBlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IFN5bWJvbFByb3RvdHlwZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTcwNUI0MUFBMUE2RTUwMUUwMDcxNjc1NyAvKiBTeW1ib2xQcm90b3R5cGUuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3ltYm9sUHJvdG90eXBlLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcwQjBBOUQwMUE5QjY2MjAwMDAxMzA2QSAvKiBSdW50aW1l
RmxhZ3MuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUnVudGltZUZsYWdzLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTcwRUMwRUJDMUFBMEQ3REEwMEI2QUFGQSAv
KiBKU1N0cmluZ0l0ZXJhdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IEpTU3RyaW5nSXRlcmF0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3
MEVDMEVCRDFBQTBEN0RBMDBCNkFBRkEgLyogSlNTdHJpbmdJdGVyYXRvci5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBKU1N0cmluZ0l0ZXJhdG9yLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTcwRUMwRUJFMUFBMEQ3REEwMEI2QUFGQSAvKiBTdHJpbmdJdGVyYXRv
ckNvbnN0cnVjdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFN0
cmluZ0l0ZXJhdG9yQ29uc3RydWN0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQk3MEVDMEVCRjFBQTBEN0RBMDBCNkFBRkEgLyogU3RyaW5nSXRlcmF0b3JDb25zdHJ1Y3Rvci5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTdHJpbmdJdGVyYXRvckNvbnN0cnVj
dG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTcwRUMwRUMwMUFBMEQ3REEwMEI2
QUFGQSAvKiBTdHJpbmdJdGVyYXRvclByb3RvdHlwZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBTdHJpbmdJdGVyYXRvclByb3RvdHlwZS5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTcwRUMwRUMxMUFBMEQ3REEwMEI2QUFGQSAvKiBTdHJpbmdJdGVy
YXRvclByb3RvdHlwZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTdHJpbmdJ
dGVyYXRvclByb3RvdHlwZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QzAwOENE
MDE4NkY4QTkzMDA5NTVDMjQgLyogSlNQcm9taXNlRnVuY3Rpb25zLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgbGluZUVuZGluZyA9IDA7IHBhdGggPSBKU1Byb21pc2VGdW5jdGlv
bnMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB4Y0xhbmd1YWdlU3BlY2lmaWNhdGlvbklk
ZW50aWZpZXIgPSB4Y29kZS5sYW5nLmNwcDsgfTsKIAkJN0MwMDhDRDExODZGOEE5MzAwOTU1QzI0
IC8qIEpTUHJvbWlzZUZ1bmN0aW9ucy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBKU1Byb21pc2VGdW5jdGlvbnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0Mw
MDhDRDgxODcxMjRCQjAwOTU1QzI0IC8qIEpTUHJvbWlzZURlZmVycmVkLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTUHJvbWlzZURlZmVycmVkLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTQ0NDksNiArNDQ2MSw4IEBACiAJCQkJQkMwMkU5QjYw
RTE4NDJGQTAwMEY5Mjk3IC8qIEpTU3RyaW5nLmNwcCAqLywKIAkJCQlGNjkyQTg2MjAyNTU1OTdE
MDFGRjYwRjcgLyogSlNTdHJpbmcuaCAqLywKIAkJCQk4NkU4NTUzODExMUI5OTY4MDAxQUY1MUUg
LyogSlNTdHJpbmdCdWlsZGVyLmggKi8sCisJCQkJNzBFQzBFQkMxQUEwRDdEQTAwQjZBQUZBIC8q
IEpTU3RyaW5nSXRlcmF0b3IuY3BwICovLAorCQkJCTcwRUMwRUJEMUFBMEQ3REEwMEI2QUFGQSAv
KiBKU1N0cmluZ0l0ZXJhdG9yLmggKi8sCiAJCQkJMjYwMEI1QTQxNTJCQUFBNzAwOTFFRTVGIC8q
IEpTU3RyaW5nSm9pbmVyLmNwcCAqLywKIAkJCQkyNjAwQjVBNTE1MkJBQUE3MDA5MUVFNUYgLyog
SlNTdHJpbmdKb2luZXIuaCAqLywKIAkJCQkwRjkxOUQwOTE1N0VFMDlEMDA0QTRFN0QgLyogSlNT
eW1ib2xUYWJsZU9iamVjdC5jcHAgKi8sCkBAIC00NTczLDYgKzQ1ODcsMTAgQEAKIAkJCQlBNzMw
QjYxMDEyNTAwNjhGMDA5RDI1QjEgLyogU3RyaWN0RXZhbEFjdGl2YXRpb24uaCAqLywKIAkJCQlC
QzE4QzNDMDBFMTZFRTMzMDBCMzQ0NjAgLyogU3RyaW5nQ29uc3RydWN0b3IuY3BwICovLAogCQkJ
CUJDMThDM0MxMEUxNkVFMzMwMEIzNDQ2MCAvKiBTdHJpbmdDb25zdHJ1Y3Rvci5oICovLAorCQkJ
CTcwRUMwRUJFMUFBMEQ3REEwMEI2QUFGQSAvKiBTdHJpbmdJdGVyYXRvckNvbnN0cnVjdG9yLmNw
cCAqLywKKwkJCQk3MEVDMEVCRjFBQTBEN0RBMDBCNkFBRkEgLyogU3RyaW5nSXRlcmF0b3JDb25z
dHJ1Y3Rvci5oICovLAorCQkJCTcwRUMwRUMwMUFBMEQ3REEwMEI2QUFGQSAvKiBTdHJpbmdJdGVy
YXRvclByb3RvdHlwZS5jcHAgKi8sCisJCQkJNzBFQzBFQzExQUEwRDdEQTAwQjZBQUZBIC8qIFN0
cmluZ0l0ZXJhdG9yUHJvdG90eXBlLmggKi8sCiAJCQkJQkMxOEMzQzIwRTE2RUUzMzAwQjM0NDYw
IC8qIFN0cmluZ09iamVjdC5jcHAgKi8sCiAJCQkJQkMxOEMzQzMwRTE2RUUzMzAwQjM0NDYwIC8q
IFN0cmluZ09iamVjdC5oICovLAogCQkJCUJDMThDM0M1MEUxNkVFMzMwMEIzNDQ2MCAvKiBTdHJp
bmdQcm90b3R5cGUuY3BwICovLApAQCAtNTgyMSw2ICs1ODM5LDcgQEAKIAkJCQlCQzE4QzQwNTBF
MTZGNUNEMDBCMzQ0NjAgLyogRnVuY3Rpb25Qcm90b3R5cGUuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUJDQkUyQ0FFMTRFOTg1QUEwMDA1OTNBRCAvKiBHQ0Fzc2VydGlvbnMuaCBpbiBIZWFkZXJzICov
LAogCQkJCTBGNzY2RDMwMTVBOERDRTIwMDhGMzYzRSAvKiBHQ0F3YXJlSklUU3R1YlJvdXRpbmUu
aCBpbiBIZWFkZXJzICovLAorCQkJCTcwRUMwRUM3MUFBMEQ3REEwMEI2QUFGQSAvKiBTdHJpbmdJ
dGVyYXRvclByb3RvdHlwZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYyQjY2QUMxN0I2QjUzRjAw
QTdBRTNGIC8qIEdDSW5jb21pbmdSZWZDb3VudGVkLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjJC
NjZBRDE3QjZCNTQ1MDBBN0FFM0YgLyogR0NJbmNvbWluZ1JlZkNvdW50ZWRJbmxpbmVzLmggaW4g
SGVhZGVycyAqLywKIAkJCQkwRjJCNjZBRTE3QjZCNTQ1MDBBN0FFM0YgLyogR0NJbmNvbWluZ1Jl
ZkNvdW50ZWRTZXQuaCBpbiBIZWFkZXJzICovLApAQCAtNjI0Miw2ICs2MjYxLDcgQEAKIAkJCQk5
MzMwNDAwNDBFNkE3NDk0MDA3ODZFNkEgLyogU21hbGxTdHJpbmdzLmggaW4gSGVhZGVycyAqLywK
IAkJCQlCQzE4QzQ2NDBFMTZGNUNEMDBCMzQ0NjAgLyogU291cmNlQ29kZS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJQkMxOEM0NjMwRTE2RjVDRDAwQjM0NDYwIC8qIFNvdXJjZVByb3ZpZGVyLmggaW4g
SGVhZGVycyAqLywKKwkJCQk3MEVDMEVDMzFBQTBEN0RBMDBCNkFBRkEgLyogSlNTdHJpbmdJdGVy
YXRvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTQ5REMxNkMxMkVGMjk0RTAwMTg0QTFGIC8qIFNv
dXJjZVByb3ZpZGVyQ2FjaGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUU0OURDMTZEMTJFRjI5NTMw
MDE4NEExRiAvKiBTb3VyY2VQcm92aWRlckNhY2hlSXRlbS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MEZCN0YzOUUxNUVEOEU0NjAwRjE2N0IyIC8qIFNwYXJzZUFycmF5VmFsdWVNYXAuaCBpbiBIZWFk
ZXJzICovLApAQCAtNjI2Myw2ICs2MjgzLDcgQEAKIAkJCQkwRkQyQzkyNDE2RDAxRUU5MDBDNzgw
M0YgLyogU3RydWN0dXJlSW5saW5lcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQzJGRTE4QTQxNkJB
RUM0MDAwQUYzMDYxIC8qIFN0cnVjdHVyZVJhcmVEYXRhLmggaW4gSGVhZGVycyAqLywKIAkJCQlD
MjBCQTkyRDE2QkIxQzE1MDBCM0FFQTIgLyogU3RydWN0dXJlUmFyZURhdGFJbmxpbmVzLmggaW4g
SGVhZGVycyAqLywKKwkJCQk3MEVDMEVDNTFBQTBEN0RBMDBCNkFBRkEgLyogU3RyaW5nSXRlcmF0
b3JDb25zdHJ1Y3Rvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYyQjlDRUIxOUQwQkE3RDAwQjFE
MUI1IC8qIERGR1BoaUNoaWxkcmVuLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjkzMzJBNTE0Q0E3
REREMDA4NUYzQzYgLyogU3RydWN0dXJlU2V0LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjc2NkQz
OTE1QUU0QTFGMDA4RjM2M0UgLyogU3RydWN0dXJlU3R1YkNsZWFyaW5nV2F0Y2hwb2ludC5oIGlu
IEhlYWRlcnMgKi8sCkBAIC02OTUxLDYgKzY5NzIsOCBAQAogCQkJCTBGQzA5NzkyMTQ2QTZGNzMw
MENGMjQ0MiAvKiBERkdPU1JFeGl0Q29tcGlsZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZD
MDk3NzYxNDY5NDNCMDAwQ0YyNDQyIC8qIERGR09TUkV4aXRDb21waWxlcjMyXzY0LmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTBGQzA5NzcyMTQ2OTNBRjkwMENGMjQ0MiAvKiBERkdPU1JFeGl0Q29t
cGlsZXI2NC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk3MEVDMEVDNDFBQTBEN0RBMDBCNkFBRkEg
LyogU3RyaW5nSXRlcmF0b3JDb25zdHJ1Y3Rvci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk3MEVD
MEVDMjFBQTBEN0RBMDBCNkFBRkEgLyogSlNTdHJpbmdJdGVyYXRvci5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQkwRjcwMjVBOTE3MTRCMEZBMDAzODJDMEUgLyogREZHT1NSRXhpdENvbXBpbGVyQ29t
bW9uLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGRUZDOUFBMTY4MUEzQjMwMDU2N0Y1MyAvKiBE
RkdPU1JFeGl0SnVtcFBsYWNlaG9sZGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGMjM1QkVE
MTcxNzhFNzMwMDY5MEM3RiAvKiBERkdPU1JFeGl0UHJlcGFyYXRpb24uY3BwIGluIFNvdXJjZXMg
Ki8sCkBAIC03MzE0LDYgKzczMzcsNyBAQAogCQkJCTBGMjRFNTUwMTdFRTI3NDkwMEFCQjIxNyAv
KiBSZXBhdGNoLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGNzcwMDkyMTQwMkZGM0MwMDc4RUIz
OSAvKiBTYW1wbGluZ0NvdW50ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMTQyOUQ4ODUwRUQy
MUMzRDAwQjg5NjE5IC8qIFNhbXBsaW5nVG9vbC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk3MEVD
MEVDNjFBQTBEN0RBMDBCNkFBRkEgLyogU3RyaW5nSXRlcmF0b3JQcm90b3R5cGUuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJQTVGRDAwNjcxODlBRkU5QzAwNjMzMjMxIC8qIFNjcmlwdEFyZ3VtZW50
cy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBNUZEMDA2RDE4OUIwMEFBMDA2MzMyMzEgLyogU2Ny
aXB0Q2FsbEZyYW1lLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE1RkQwMDZGMTg5QjAwQUEwMDYz
MzIzMSAvKiBTY3JpcHRDYWxsU3RhY2suY3BwIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvU3RyaW5nSXRlcmF0b3IucHJvdG90eXBlLmpz
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL1N0cmluZ0l0ZXJhdG9yLnByb3RvdHlw
ZS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi4yMDdlYmJjZjVmOTlmYzc3OTgwNWYxOGIyZmY2NDA2ZDY5MTBjMGQ0
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL1N0cmlu
Z0l0ZXJhdG9yLnByb3RvdHlwZS5qcwpAQCAtMCwwICsxLDY2IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDE1IFl1c3VrZSBTdXp1a2kgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4uCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMn
JyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
CisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKK2Z1bmN0aW9uIG5leHQoKSB7Cisg
ICAgInVzZSBzdHJpY3QiOworCisgICAgaWYgKHRoaXMgPT0gbnVsbCkKKyAgICAgICAgdGhyb3cg
bmV3IEBUeXBlRXJyb3IoIiVTdHJpbmdJdGVyYXRvclByb3RvdHlwZSUubmV4dCByZXF1aXJlcyB0
aGF0IHx0aGlzfCBiZSBub3QgbnVsbCBvciB1bmRlZmluZWQiKTsKKworICAgIHZhciBwb3NpdGlv
biA9IHRoaXMuQHN0cmluZ0l0ZXJhdG9yTmV4dEluZGV4OworICAgIGlmIChwb3NpdGlvbiA9PT0g
dW5kZWZpbmVkKQorICAgICAgICB0aHJvdyBuZXcgQFR5cGVFcnJvcigiJVN0cmluZ0l0ZXJhdG9y
UHJvdG90eXBlJS5uZXh0IHJlcXVpcmVzIHRoYXQgfHRoaXN8IGJlIFN0cmluZyBJdGVyYXRvciBJ
bnN0YW5jZSIpOworCisgICAgdmFyIGRvbmUgPSB0cnVlOworICAgIHZhciB2YWx1ZSA9IHVuZGVm
aW5lZDsKKworICAgIHZhciBzdHJpbmcgPSB0aGlzLkBpdGVyYXRlZFN0cmluZzsKKyAgICBpZiAo
c3RyaW5nICE9PSB1bmRlZmluZWQpIHsKKyAgICAgICAgdmFyIGxlbmd0aCA9IHN0cmluZy5sZW5n
dGggPj4+IDA7CisgICAgICAgIGlmIChwb3NpdGlvbiA+PSBsZW5ndGgpIHsKKyAgICAgICAgICAg
IHRoaXMuQGl0ZXJhdGVkU3RyaW5nID0gdW5kZWZpbmVkOworICAgICAgICB9IGVsc2UgeworICAg
ICAgICAgICAgZG9uZSA9IGZhbHNlOworCisgICAgICAgICAgICB2YXIgZmlyc3QgPSBzdHJpbmcu
QGNoYXJDb2RlQXQocG9zaXRpb24pOworICAgICAgICAgICAgaWYgKGZpcnN0IDwgMHhEODAwIHx8
IGZpcnN0ID4gMHhEQkZGIHx8IHBvc2l0aW9uICsgMSA9PT0gbGVuZ3RoKQorICAgICAgICAgICAg
ICAgIHZhbHVlID0gc3RyaW5nW3Bvc2l0aW9uXTsKKyAgICAgICAgICAgIGVsc2UgeworICAgICAg
ICAgICAgICAgIHZhciBzZWNvbmQgPSBzdHJpbmcuQGNoYXJDb2RlQXQocG9zaXRpb24gKyAxKTsK
KyAgICAgICAgICAgICAgICBpZiAoc2Vjb25kIDwgMHhEQzAwIHx8IHNlY29uZCA+IDB4REZGRikK
KyAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSBzdHJpbmdbcG9zaXRpb25dOworICAgICAgICAg
ICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSBzdHJpbmdbcG9zaXRpb25d
ICsgc3RyaW5nW3Bvc2l0aW9uICsgMV07CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHRo
aXMuQHN0cmluZ0l0ZXJhdG9yTmV4dEluZGV4ID0gcG9zaXRpb24gKyB2YWx1ZS5sZW5ndGg7Cisg
ICAgICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4geworICAgICAgICBkb25lOiBkb25lLAorICAg
ICAgICB2YWx1ZTogdmFsdWUKKyAgICB9OworfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmgKaW5kZXggMzg2ZjU0M2I5ZjQ2ZmM2Zjc1Y2Ri
YjVkNDQ2MDIxYjgxNTA2MGViNi4uZTk1Yzk3NjM2MTcxMmUyZDIzZTExNWEyZDlmMmQwMTAzYzg2
MmU5MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRl
bnRpZmllcnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25JZGVu
dGlmaWVycy5oCkBAIC0yNDEsNiArMjQxLDkgQEAKICAgICBtYWNybyhhcnJheUl0ZXJhdGlvbktp
bmRLZXkpIFwKICAgICBtYWNybyhhcnJheUl0ZXJhdGlvbktpbmRWYWx1ZSkgXAogICAgIG1hY3Jv
KGFycmF5SXRlcmF0aW9uS2luZEtleVZhbHVlKSBcCisgICAgbWFjcm8oY2hhckNvZGVBdCkgXAor
ICAgIG1hY3JvKGl0ZXJhdGVkU3RyaW5nKSBcCisgICAgbWFjcm8oc3RyaW5nSXRlcmF0b3JOZXh0
SW5kZXgpIFwKICAgICBtYWNybyhyZXNvbHZlKSBcCiAgICAgbWFjcm8ocmVqZWN0KSBcCiAgICAg
bWFjcm8ocHJvbWlzZSkgXApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNHbG9iYWxPYmplY3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNH
bG9iYWxPYmplY3QuY3BwCmluZGV4IDRjOGQ3YWI3OWM2NWZjN2IzM2JlOWYwOTMxMmUyMWI4NGNi
ZjQ5NjUuLjdhMGI3NTk0MjlhOTdjNDE1NTE0ZjM4ZTM4OThkY2Y4Y2I2ODhhMzYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKQEAgLTgy
LDYgKzgyLDcgQEAKICNpbmNsdWRlICJKU09OT2JqZWN0LmgiCiAjaW5jbHVkZSAiSlNTZXQuaCIK
ICNpbmNsdWRlICJKU1NldEl0ZXJhdG9yLmgiCisjaW5jbHVkZSAiSlNTdHJpbmdJdGVyYXRvci5o
IgogI2luY2x1ZGUgIkpTVHlwZWRBcnJheUNvbnN0cnVjdG9ycy5oIgogI2luY2x1ZGUgIkpTVHlw
ZWRBcnJheVByb3RvdHlwZXMuaCIKICNpbmNsdWRlICJKU1R5cGVkQXJyYXlzLmgiCkBAIC0xMTUs
NiArMTE2LDggQEAKICNpbmNsdWRlICJTZXRQcm90b3R5cGUuaCIKICNpbmNsdWRlICJTdHJpY3RF
dmFsQWN0aXZhdGlvbi5oIgogI2luY2x1ZGUgIlN0cmluZ0NvbnN0cnVjdG9yLmgiCisjaW5jbHVk
ZSAiU3RyaW5nSXRlcmF0b3JDb25zdHJ1Y3Rvci5oIgorI2luY2x1ZGUgIlN0cmluZ0l0ZXJhdG9y
UHJvdG90eXBlLmgiCiAjaW5jbHVkZSAiU3RyaW5nUHJvdG90eXBlLmgiCiAjaW5jbHVkZSAiU3lt
Ym9sLmgiCiAjaW5jbHVkZSAiU3ltYm9sQ29uc3RydWN0b3IuaCIKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCmluZGV4IDVlYjllYTZiZjZhYjIzMjg5
YzJlZDRkMTExNTVkMjY0ZDY1ZmUwNzYuLjkwMzU0NmIwNzRhMWMxMjdjN2U5OWFiNDE5ZDc3MmY4
MzFlYjIxYzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xv
YmFsT2JqZWN0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxP
YmplY3QuaApAQCAtMTA5LDYgKzEwOSw3IEBAIHN0cnVjdCBIYXNoVGFibGU7CiAgICAgREVGSU5F
X1NUQU5EQVJEX0JVSUxUSU4obWFjcm8sIEFyZ3VtZW50c0l0ZXJhdG9yLCBhcmd1bWVudHNJdGVy
YXRvcikgXAogICAgIERFRklORV9TVEFOREFSRF9CVUlMVElOKG1hY3JvLCBNYXBJdGVyYXRvciwg
bWFwSXRlcmF0b3IpIFwKICAgICBERUZJTkVfU1RBTkRBUkRfQlVJTFRJTihtYWNybywgU2V0SXRl
cmF0b3IsIHNldEl0ZXJhdG9yKSBcCisgICAgREVGSU5FX1NUQU5EQVJEX0JVSUxUSU4obWFjcm8s
IFN0cmluZ0l0ZXJhdG9yLCBzdHJpbmdJdGVyYXRvcikgXAogCiAKICNkZWZpbmUgREVDTEFSRV9T
SU1QTEVfQlVJTFRJTl9UWVBFKGNhcGl0YWxOYW1lLCBsb3dlck5hbWUsIHByb3Blck5hbWUsIGlu
c3RhbmNlVHlwZSwganNOYW1lKSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU1N0cmluZ0l0ZXJhdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTU3RyaW5nSXRlcmF0b3IuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQ5NjdjZTczMzU5ZGI4NDlhNzNk
MzM4MmE1NjNmMDI4OWE1OWQ5ZGYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU1N0cmluZ0l0ZXJhdG9yLmNwcApAQCAtMCwwICsxLDQ1IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDE1IFl1c3VrZSBTdXp1a2kgPHV0YXRhbmUudGVhQGdtYWlsLmNv
bT4uCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICog
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkK
KyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRl
ICJjb25maWcuaCIKKyNpbmNsdWRlICJKU1N0cmluZ0l0ZXJhdG9yLmgiCisKKyNpbmNsdWRlICJK
U0NKU1ZhbHVlSW5saW5lcy5oIgorI2luY2x1ZGUgIkpTQ2VsbElubGluZXMuaCIKKyNpbmNsdWRl
ICJTdHJ1Y3R1cmVJbmxpbmVzLmgiCisKK25hbWVzcGFjZSBKU0MgeworCitjb25zdCBDbGFzc0lu
Zm8gSlNTdHJpbmdJdGVyYXRvcjo6c19pbmZvID0geyAiU3RyaW5nSXRlcmF0b3IiLCAmQmFzZTo6
c19pbmZvLCAwLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTU3RyaW5nSXRlcmF0b3IpIH07CisKK3Zv
aWQgSlNTdHJpbmdJdGVyYXRvcjo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBKU0dsb2JhbE9iamVj
dCosIEpTU3RyaW5nKiBpdGVyYXRlZFN0cmluZykKK3sKKyAgICBCYXNlOjpmaW5pc2hDcmVhdGlv
bih2bSk7CisgICAgQVNTRVJUKGluaGVyaXRzKGluZm8oKSkpOworICAgIHB1dERpcmVjdCh2bSwg
dm0ucHJvcGVydHlOYW1lcy0+aXRlcmF0ZWRTdHJpbmdQcml2YXRlTmFtZSwgaXRlcmF0ZWRTdHJp
bmcpOworICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+c3RyaW5nSXRlcmF0b3JO
ZXh0SW5kZXhQcml2YXRlTmFtZSwganNOdW1iZXIoMCkpOworfQorCit9IC8vIG5hbWVzcGFjZSBK
U0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5nSXRl
cmF0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5nSXRlcmF0b3Iu
aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi4xZGUwYzhhMzUyMWU2M2ZhNjViYTMyMzVjMWViY2U1Y2VkYTFiYWEzCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmdJ
dGVyYXRvci5oCkBAIC0wLDAgKzEsNjMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgWXVz
dWtlIFN1enVraSA8dXRhdGFuZS50ZWFAZ21haWwuY29tPi4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
KyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBKU1N0cmluZ0l0ZXJhdG9yX2gKKyNkZWZp
bmUgSlNTdHJpbmdJdGVyYXRvcl9oCisKKyNpbmNsdWRlICJKU09iamVjdC5oIgorCituYW1lc3Bh
Y2UgSlNDIHsKKworY2xhc3MgSlNTdHJpbmdJdGVyYXRvciA6IHB1YmxpYyBKU05vbkZpbmFsT2Jq
ZWN0IHsKK3B1YmxpYzoKKyAgICB0eXBlZGVmIEpTTm9uRmluYWxPYmplY3QgQmFzZTsKKworICAg
IERFQ0xBUkVfRVhQT1JUX0lORk87CisKKyAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1
Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3Rv
dHlwZSkKKyAgICB7CisgICAgICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFs
T2JqZWN0LCBwcm90b3R5cGUsIFR5cGVJbmZvKE9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwg
aW5mbygpKTsKKyAgICB9CisKKyAgICBzdGF0aWMgSlNTdHJpbmdJdGVyYXRvciogY3JlYXRlKEV4
ZWNTdGF0ZSogZXhlYywgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTU3RyaW5nKiBpdGVyYXRlZFN0
cmluZykKKyAgICB7CisgICAgICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CisgICAgICAgIEpTU3Ry
aW5nSXRlcmF0b3IqIGluc3RhbmNlID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SlNTdHJp
bmdJdGVyYXRvcj4odm0uaGVhcCkpIEpTU3RyaW5nSXRlcmF0b3Iodm0sIHN0cnVjdHVyZSk7Cisg
ICAgICAgIGluc3RhbmNlLT5maW5pc2hDcmVhdGlvbih2bSwgc3RydWN0dXJlLT5nbG9iYWxPYmpl
Y3QoKSwgaXRlcmF0ZWRTdHJpbmcpOworICAgICAgICByZXR1cm4gaW5zdGFuY2U7CisgICAgfQor
Citwcml2YXRlOgorICAgIEpTU3RyaW5nSXRlcmF0b3IoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVj
dHVyZSkKKyAgICAgICAgOiBCYXNlKHZtLCBzdHJ1Y3R1cmUpCisgICAgeworICAgIH0KKworICAg
IHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mLCBKU0dsb2JhbE9iamVjdCosIEpTU3RyaW5nKiBpdGVy
YXRlZFN0cmluZyk7Cit9OworCit9CisKKyNlbmRpZiAvLyAhZGVmaW5lZChKU1N0cmluZ0l0ZXJh
dG9yX2gpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdJ
dGVyYXRvckNvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0
cmluZ0l0ZXJhdG9yQ29uc3RydWN0b3IuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQ5YWI3MDY1M2U3M2VkYjlm
YzBlNjc1YTEzNjAwYTVhOTUzNmUyZTQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9TdHJpbmdJdGVyYXRvckNvbnN0cnVjdG9yLmNwcApAQCAtMCwwICsx
LDQzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlLCBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
bmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJTdHJpbmdJdGVyYXRvckNvbnN0cnVjdG9yLmgi
CisKKyNpbmNsdWRlICJKU0NKU1ZhbHVlSW5saW5lcy5oIgorI2luY2x1ZGUgIkpTQ2VsbElubGlu
ZXMuaCIKKyNpbmNsdWRlICJKU0dsb2JhbE9iamVjdC5oIgorI2luY2x1ZGUgIlN0cnVjdHVyZUlu
bGluZXMuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2NvbnN0IENsYXNzSW5mbyBTdHJpbmdJdGVy
YXRvckNvbnN0cnVjdG9yOjpzX2luZm8gPSB7ICJGdW5jdGlvbiIsICZCYXNlOjpzX2luZm8sIDAs
IENSRUFURV9NRVRIT0RfVEFCTEUoU3RyaW5nSXRlcmF0b3JDb25zdHJ1Y3RvcikgfTsKKwordm9p
ZCBTdHJpbmdJdGVyYXRvckNvbnN0cnVjdG9yOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0pCit7Cisg
ICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0pOworfQorCit9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdJdGVyYXRvckNvbnN0cnVjdG9yLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdJdGVyYXRvckNvbnN0cnVjdG9yLmgKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNjI0MTM2MWI2NzZlMjkxNWRmMGY1ZDIxN2FhNDg3OTYwNDIyOWU2MAotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ0l0ZXJhdG9y
Q29uc3RydWN0b3IuaApAQCAtMCwwICsxLDYzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEz
IEFwcGxlLCBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgU3RyaW5nSXRlcmF0b3JDb25zdHJ1Y3Rvcl9o
CisjZGVmaW5lIFN0cmluZ0l0ZXJhdG9yQ29uc3RydWN0b3JfaAorCisjaW5jbHVkZSAiSW50ZXJu
YWxGdW5jdGlvbi5oIgorCituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgU3RyaW5nSXRlcmF0b3JQ
cm90b3R5cGU7CisKK2NsYXNzIFN0cmluZ0l0ZXJhdG9yQ29uc3RydWN0b3IgOiBwdWJsaWMgSlNO
b25GaW5hbE9iamVjdCB7CitwdWJsaWM6CisgICAgdHlwZWRlZiBKU05vbkZpbmFsT2JqZWN0IEJh
c2U7CisKKyAgICBzdGF0aWMgU3RyaW5nSXRlcmF0b3JDb25zdHJ1Y3RvciogY3JlYXRlKFZNJiB2
bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFN0cmluZ0l0ZXJhdG9yUHJvdG90eXBlKikKKyAgICB7
CisgICAgICAgIFN0cmluZ0l0ZXJhdG9yQ29uc3RydWN0b3IqIGNvbnN0cnVjdG9yID0gbmV3IChO
b3ROdWxsLCBhbGxvY2F0ZUNlbGw8U3RyaW5nSXRlcmF0b3JDb25zdHJ1Y3Rvcj4odm0uaGVhcCkp
IFN0cmluZ0l0ZXJhdG9yQ29uc3RydWN0b3Iodm0sIHN0cnVjdHVyZSk7CisgICAgICAgIGNvbnN0
cnVjdG9yLT5maW5pc2hDcmVhdGlvbih2bSk7CisgICAgICAgIHJldHVybiBjb25zdHJ1Y3RvcjsK
KyAgICB9CisKKyAgICBERUNMQVJFX0lORk87CisKKyAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVh
dGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVl
IHByb3RvdHlwZSkKKyAgICB7CisgICAgICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwg
Z2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIFR5cGVJbmZvKE9iamVjdFR5cGUsIFN0cnVjdHVyZUZs
YWdzKSwgaW5mbygpKTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgU3RyaW5nSXRlcmF0b3JDb25z
dHJ1Y3RvcihWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQorICAgICAgICA6IEJhc2Uodm0s
IHN0cnVjdHVyZSkKKyAgICB7CisgICAgfQorICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mKTsK
K307CisKK30KKworI2VuZGlmIC8vICFkZWZpbmVkKFN0cmluZ0l0ZXJhdG9yQ29uc3RydWN0b3Jf
aCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ0l0ZXJh
dG9yUHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ0l0
ZXJhdG9yUHJvdG90eXBlLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41M2UwY2NiMzE0NGYzOTU5NmU2NDU1ZWE3
YjMyZjc1NzBiYmYxYWRiCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvU3RyaW5nSXRlcmF0b3JQcm90b3R5cGUuY3BwCkBAIC0wLDAgKzEsNzQgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUsIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqIENvcHlyaWdodCAoQykgMjAxNSBZdXN1a2UgU3V6dWtpIDx1dGF0YW5lLnRlYUBnbWFpbC5j
b20+LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAq
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
CisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVk
ZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiU3RyaW5nSXRlcmF0b3JQcm90b3R5cGUuaCIKKworI2lu
Y2x1ZGUgIkpTQ0pTVmFsdWVJbmxpbmVzLmgiCisjaW5jbHVkZSAiSlNDZWxsSW5saW5lcy5oIgor
I2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0LmgiCisjaW5jbHVkZSAiSlNTdHJpbmdJdGVyYXRvci5o
IgorI2luY2x1ZGUgIk9iamVjdENvbnN0cnVjdG9yLmgiCisjaW5jbHVkZSAiU3RydWN0dXJlSW5s
aW5lcy5oIgorCituYW1lc3BhY2UgSlNDIHsKKworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgc3RyaW5nSXRlcmF0b3JQcm90b3R5cGVJdGVyYXRvcihFeGVjU3RhdGUqKTsKKwor
fQorCisjaW5jbHVkZSAiU3RyaW5nSXRlcmF0b3JQcm90b3R5cGUubHV0LmgiCisKK25hbWVzcGFj
ZSBKU0MgeworCitjb25zdCBDbGFzc0luZm8gU3RyaW5nSXRlcmF0b3JQcm90b3R5cGU6OnNfaW5m
byA9IHsgIlN0cmluZyBJdGVyYXRvciIsICZCYXNlOjpzX2luZm8sICZzdHJpbmdJdGVyYXRvclBy
b3RvdHlwZVRhYmxlLCBDUkVBVEVfTUVUSE9EX1RBQkxFKFN0cmluZ0l0ZXJhdG9yUHJvdG90eXBl
KSB9OworCisvKiBTb3VyY2UgZm9yIFN0cmluZ0l0ZXJhdG9yUHJvdG90eXBlLmx1dC5oCitAYmVn
aW4gc3RyaW5nSXRlcmF0b3JQcm90b3R5cGVUYWJsZQorICBuZXh0ICAgICAgc3RyaW5nSXRlcmF0
b3JQcm90b3R5cGVGdW5jTmV4dCAgRG9udEVudW18RnVuY3Rpb24gMAorQGVuZAorKi8KKwordm9p
ZCBTdHJpbmdJdGVyYXRvclByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0KQoreworICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtKTsK
KyAgICBBU1NFUlQoaW5oZXJpdHMoaW5mbygpKSk7CisgICAgdm0ucHJvdG90eXBlTWFwLmFkZFBy
b3RvdHlwZSh0aGlzKTsKKworICAgIEpTQ19OQVRJVkVfRlVOQ1RJT04odm0ucHJvcGVydHlOYW1l
cy0+aXRlcmF0b3JQcml2YXRlTmFtZSwgc3RyaW5nSXRlcmF0b3JQcm90b3R5cGVJdGVyYXRvciwg
RG9udEVudW0sIDApOworfQorCitib29sIFN0cmluZ0l0ZXJhdG9yUHJvdG90eXBlOjpnZXRPd25Q
cm9wZXJ0eVNsb3QoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5h
bWUgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCit7CisgICAgcmV0dXJuIGdldFN0
YXRpY0Z1bmN0aW9uU2xvdDxCYXNlPihleGVjLCBzdHJpbmdJdGVyYXRvclByb3RvdHlwZVRhYmxl
LCBqc0Nhc3Q8U3RyaW5nSXRlcmF0b3JQcm90b3R5cGUqPihvYmplY3QpLCBwcm9wZXJ0eU5hbWUs
IHNsb3QpOworfQorCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ0l0ZXJhdG9y
UHJvdG90eXBlSXRlcmF0b3IoQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCit7CisgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpKTsKK30KKworfSAvLyBuYW1lc3Bh
Y2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdJ
dGVyYXRvclByb3RvdHlwZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5n
SXRlcmF0b3JQcm90b3R5cGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jYmJkOTYwM2RhYzEwNGFlYmEyZjZiMjZj
ODQzZGM2ZWU4NTlkMTBlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvU3RyaW5nSXRlcmF0b3JQcm90b3R5cGUuaApAQCAtMCwwICsxLDY2IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlLCBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTUgWXVzdWtlIFN1enVraSA8dXRhdGFuZS50ZWFAZ21haWwuY29t
Pi4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQor
ICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBT
dHJpbmdJdGVyYXRvclByb3RvdHlwZV9oCisjZGVmaW5lIFN0cmluZ0l0ZXJhdG9yUHJvdG90eXBl
X2gKKworI2luY2x1ZGUgIkpTT2JqZWN0LmgiCisKK25hbWVzcGFjZSBKU0MgeworCitjbGFzcyBT
dHJpbmdJdGVyYXRvclByb3RvdHlwZSA6IHB1YmxpYyBKU05vbkZpbmFsT2JqZWN0IHsKK3B1Ymxp
YzoKKyAgICB0eXBlZGVmIEpTTm9uRmluYWxPYmplY3QgQmFzZTsKKworICAgIHN0YXRpYyBTdHJp
bmdJdGVyYXRvclByb3RvdHlwZSogY3JlYXRlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCisgICAgeworICAgICAgICBTdHJpbmdJdGVy
YXRvclByb3RvdHlwZSogcHJvdG90eXBlID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8U3Ry
aW5nSXRlcmF0b3JQcm90b3R5cGU+KHZtLmhlYXApKSBTdHJpbmdJdGVyYXRvclByb3RvdHlwZSh2
bSwgc3RydWN0dXJlKTsKKyAgICAgICAgcHJvdG90eXBlLT5maW5pc2hDcmVhdGlvbih2bSwgZ2xv
YmFsT2JqZWN0KTsKKyAgICAgICAgcmV0dXJuIHByb3RvdHlwZTsKKyAgICB9CisKKyAgICBERUNM
QVJFX0lORk87CisKKyAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZt
LCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSkKKyAgICB7
CisgICAgICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90
b3R5cGUsIFR5cGVJbmZvKE9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKKyAg
ICB9CisKK3Byb3RlY3RlZDoKKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxh
Z3MgPSBPdmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3QgfCBCYXNlOjpTdHJ1Y3R1cmVGbGFnczsK
KworcHJpdmF0ZToKKyAgICBTdHJpbmdJdGVyYXRvclByb3RvdHlwZShWTSYgdm0sIFN0cnVjdHVy
ZSogc3RydWN0dXJlKQorICAgICAgICA6IEJhc2Uodm0sIHN0cnVjdHVyZSkKKyAgICB7CisgICAg
fQorICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mLCBKU0dsb2JhbE9iamVjdCopOworICAgIHN0
YXRpYyBib29sIGdldE93blByb3BlcnR5U2xvdChKU09iamVjdCosIEV4ZWNTdGF0ZSosIFByb3Bl
cnR5TmFtZSwgUHJvcGVydHlTbG90Jik7Cit9OworCit9CisKKyNlbmRpZiAvLyAhZGVmaW5lZChT
dHJpbmdJdGVyYXRvclByb3RvdHlwZV9oKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvU3RyaW5nUHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1N0cmluZ1Byb3RvdHlwZS5jcHAKaW5kZXggNTFiZmRjN2RkMmVkNDM5Mzk4MWYzMGQz
ZWViMWUzZDU3YmU3NjE2OC4uNDRkY2NiYTY3OGQzZDk5NWRjZmFkNzgwZWQwZjc0NTcxODhlM2U5
MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nUHJvdG90
eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdQcm90b3R5
cGUuY3BwCkBAIC0zNCw2ICszNCw3IEBACiAjaW5jbHVkZSAiTG9va3VwLmgiCiAjaW5jbHVkZSAi
T2JqZWN0UHJvdG90eXBlLmgiCiAjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgorI2luY2x1ZGUgIkpT
U3RyaW5nSXRlcmF0b3IuaCIKICNpbmNsdWRlICJQcm9wZXJ0eU5hbWVBcnJheS5oIgogI2luY2x1
ZGUgIlJlZ0V4cENhY2hlLmgiCiAjaW5jbHVkZSAiUmVnRXhwQ29uc3RydWN0b3IuaCIKQEAgLTg3
LDYgKzg4LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90b0Z1bmNU
cmltUmlnaHQoRXhlY1N0YXRlKik7CiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmlu
Z1Byb3RvRnVuY1N0YXJ0c1dpdGgoRXhlY1N0YXRlKik7CiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIHN0cmluZ1Byb3RvRnVuY0VuZHNXaXRoKEV4ZWNTdGF0ZSopOwogRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90b0Z1bmNJbmNsdWRlcyhFeGVjU3RhdGUqKTsKK0Vu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG9GdW5jSXRlcmF0b3IoRXhlY1N0
YXRlKik7CiAKIGNvbnN0IENsYXNzSW5mbyBTdHJpbmdQcm90b3R5cGU6OnNfaW5mbyA9IHsgIlN0
cmluZyIsICZTdHJpbmdPYmplY3Q6OnNfaW5mbywgMCwgQ1JFQVRFX01FVEhPRF9UQUJMRShTdHJp
bmdQcm90b3R5cGUpIH07CiAKQEAgLTE0MCw2ICsxNDIsOSBAQCB2b2lkIFN0cmluZ1Byb3RvdHlw
ZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBK
U1N0cgogICAgIEpTQ19OQVRJVkVfRlVOQ1RJT04oInN0YXJ0c1dpdGgiLCBzdHJpbmdQcm90b0Z1
bmNTdGFydHNXaXRoLCBEb250RW51bSwgMCk7CiAgICAgSlNDX05BVElWRV9GVU5DVElPTigiZW5k
c1dpdGgiLCBzdHJpbmdQcm90b0Z1bmNFbmRzV2l0aCwgRG9udEVudW0sIDApOwogICAgIEpTQ19O
QVRJVkVfRlVOQ1RJT04oImluY2x1ZGVzIiwgc3RyaW5nUHJvdG9GdW5jSW5jbHVkZXMsIERvbnRF
bnVtLCAwKTsKKyAgICBKU0NfTkFUSVZFX0ZVTkNUSU9OKHZtLnByb3BlcnR5TmFtZXMtPml0ZXJh
dG9yUHJpdmF0ZU5hbWUsIHN0cmluZ1Byb3RvRnVuY0l0ZXJhdG9yLCBEb250RW51bSwgMCk7CisK
KyAgICBKU0NfTkFUSVZFX0lOVFJJTlNJQ19GVU5DVElPTih2bS5wcm9wZXJ0eU5hbWVzLT5jaGFy
Q29kZUF0UHJpdmF0ZU5hbWUsIHN0cmluZ1Byb3RvRnVuY0NoYXJDb2RlQXQsIERvbnRFbnVtLCAx
LCBDaGFyQ29kZUF0SW50cmluc2ljKTsKIAogICAgIC8vIFRoZSBjb25zdHJ1Y3RvciB3aWxsIGJl
IGFkZGVkIGxhdGVyLCBhZnRlciBTdHJpbmdDb25zdHJ1Y3RvciBoYXMgYmVlbiBidWlsdAogICAg
IHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5sZW5ndGgs
IGpzTnVtYmVyKDApLCBEb250RGVsZXRlIHwgUmVhZE9ubHkgfCBEb250RW51bSk7CkBAIC0xNzAy
LDUgKzE3MDcsMTQgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90b0Z1
bmNJbmNsdWRlcyhFeGVjU3RhdGUqIGV4ZWMpCiAKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KGpzQm9vbGVhbihzdHJpbmdUb1NlYXJjaEluLmNvbnRhaW5zKHNlYXJjaFN0cmluZywgdHJ1ZSwg
c3RhcnQpKSk7CiB9Ci0gICAgCisKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5n
UHJvdG9GdW5jSXRlcmF0b3IoRXhlY1N0YXRlKiBleGVjKQoreworICAgIEpTVmFsdWUgdGhpc1Zh
bHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CisgICAgaWYgKCFjaGVja09iamVjdENvZXJjaWJsZSh0
aGlzVmFsdWUpKQorICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjKTsKKyAgICBK
U1N0cmluZyogc3RyaW5nID0gdGhpc1ZhbHVlLnRvU3RyaW5nKGV4ZWMpOworICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoSlNTdHJpbmdJdGVyYXRvcjo6Y3JlYXRlKGV4ZWMsIGV4ZWMtPmNhbGxl
ZSgpLT5nbG9iYWxPYmplY3QoKS0+c3RyaW5nSXRlcmF0b3JTdHJ1Y3R1cmUoKSwgc3RyaW5nKSk7
Cit9CisKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3Rlc3RzL3N0cmVzcy9zdHJpbmctaXRlcmF0b3JzLmpzIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3Rlc3RzL3N0cmVzcy9zdHJpbmctaXRlcmF0b3JzLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQ2YzA1N2Q4
ZmNkYjUxNTM5MTY1Y2FmZjNhOGU2NmU4OWRhOTQ0OTIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL3N0cmluZy1pdGVyYXRvcnMuanMKQEAgLTAs
MCArMSwyMTIgQEAKKy8vIFRoaXMgdGVzdCBjaGVja3MgdGhlIGJlaGF2aW9yIG9mIHRoZSBTdHJp
bmcgaXRlcmF0b3IKKwordmFyIHRlc3RTdHJpbmcgPSAiQ29jb2EsQ2FwcHVjY2lubyI7Cit2YXIg
c3RyaW5nSXRlcmF0b3IgPSB0ZXN0U3RyaW5nW1N5bWJvbC5pdGVyYXRvcl0oKTsKK3ZhciBzdHJp
bmdJdGVyYXRvclByb3RvdHlwZSA9IHN0cmluZ0l0ZXJhdG9yLl9fcHJvdG9fXzsKK3ZhciBzdHJp
bmdJdGVyYXRvclByb3RvdHlwZU5leHQgPSBzdHJpbmdJdGVyYXRvclByb3RvdHlwZS5uZXh0Owor
CitpZiAoc3RyaW5nSXRlcmF0b3IuaGFzT3duUHJvcGVydHkoJ25leHQnKSkKKyAgICB0aHJvdyAi
bmV4dCBtZXRob2Qgc2hvdWxkIGV4aXN0cyBvbiAlU3RyaW5nSXRlcmF0b3JQcm90b3R5cGUlIjsK
K2lmICghc3RyaW5nSXRlcmF0b3JQcm90b3R5cGUuaGFzT3duUHJvcGVydHkoJ25leHQnKSkKKyAg
ICB0aHJvdyAibmV4dCBtZXRob2Qgc2hvdWxkIGV4aXN0cyBvbiAlU3RyaW5nSXRlcmF0b3JQcm90
b3R5cGUlIjsKKwordmFyIGl0ZXJhdG9yID0gdGVzdFN0cmluZ1tTeW1ib2wuaXRlcmF0b3JdKCk7
Cit2YXIgaSA9IDA7Cit3aGlsZSAodHJ1ZSkgeworICAgIHZhciB7ZG9uZSwgdmFsdWV9ID0gaXRl
cmF0b3IubmV4dCgpOworICAgIGlmIChkb25lKQorICAgICAgICBicmVhazsKKyAgICBpZiAodmFs
dWUgIT09IHRlc3RTdHJpbmdbaV0pCisgICAgICAgIHRocm93ICJFcnJvcjogYmFkIHZhbHVlOiAi
ICsgdmFsdWU7CisgICAgaSsrOworfQorCitpZiAodGVzdFN0cmluZy5sZW5ndGggIT09IGkpCisg
ICAgdGhyb3cgIkVycm9yOiBiYWQgdmFsdWU6ICIgKyBpOworCitmdW5jdGlvbiB0ZXN0U3Vycm9n
YXRlUGFpcih0ZXN0U3RyaW5nLCBleHBlY3RlZCwgbnVtYmVyT2ZFbGVtZW50cykgeworICAgIGlm
ICh0ZXN0U3RyaW5nLmxlbmd0aCAhPT0gbnVtYmVyT2ZFbGVtZW50cykKKyAgICAgICAgdGhyb3cg
IkVycm9yOiBiYWQgdmFsdWU6ICIgKyB0ZXN0U3RyaW5nLmxlbmd0aDsKKworICAgIHZhciBpdGVy
YXRvciA9IHRlc3RTdHJpbmdbU3ltYm9sLml0ZXJhdG9yXSgpOworICAgIHZhciBpID0gMDsKKyAg
ICB3aGlsZSAodHJ1ZSkgeworICAgICAgICB2YXIge2RvbmUsIHZhbHVlfSA9IGl0ZXJhdG9yLm5l
eHQoKTsKKyAgICAgICAgaWYgKGRvbmUpCisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgaWYg
KHZhbHVlICE9PSBleHBlY3RlZFtpXSkKKyAgICAgICAgICAgIHRocm93ICJFcnJvcjogYmFkIHZh
bHVlOiAiICsgdmFsdWU7CisgICAgICAgIGkrKzsKKyAgICB9CisKKyAgICBpZiAoaSAhPT0gZXhw
ZWN0ZWQubGVuZ3RoKQorICAgICAgICB0aHJvdyAiRXJyb3I6IGJhZCB2YWx1ZTogIiArIGk7CisK
KyAgICBmb3IgKHZhciBjb2RlUG9pbnQgb2YgdGVzdFN0cmluZykgeworICAgICAgICBpZiAodmFs
dWUgIT09IGV4cGVjdGVkW2ldKQorICAgICAgICAgICAgdGhyb3cgIkVycm9yOiBiYWQgdmFsdWU6
ICIgKyB2YWx1ZTsKKyAgICB9Cit9CisKKy8vICJcdUQ4NDJcdURGQjdcdTkxY2VcdTViYjYiCit2
YXIgdGVzdFN0cmluZyA9ICLwoK636YeO5a62IjsKK3ZhciBleHBlY3RlZCA9IFsKKyAgICBTdHJp
bmcuZnJvbUNoYXJDb2RlKDB4RDg0MiwgMHhERkI3KSwKKyAgICBTdHJpbmcuZnJvbUNoYXJDb2Rl
KDB4OTFDRSksCisgICAgU3RyaW5nLmZyb21DaGFyQ29kZSgweDVCQjYpLAorXTsKK3Rlc3RTdXJy
b2dhdGVQYWlyKHRlc3RTdHJpbmcsIGV4cGVjdGVkLCA0KTsKKwordmFyIHRlc3RTdHJpbmcgPSAi
QVx1RDg0MiI7Cit2YXIgZXhwZWN0ZWQgPSBbCisgICAgU3RyaW5nLmZyb21DaGFyQ29kZSgweDAw
NDEpLAorICAgIFN0cmluZy5mcm9tQ2hhckNvZGUoMHhEODQyKSwKK107Cit0ZXN0U3Vycm9nYXRl
UGFpcih0ZXN0U3RyaW5nLCBleHBlY3RlZCwgMik7CisKK3ZhciB0ZXN0U3RyaW5nID0gIkFcdUQ4
NDJBIjsKK3ZhciBleHBlY3RlZCA9IFsKKyAgICBTdHJpbmcuZnJvbUNoYXJDb2RlKDB4MDA0MSks
CisgICAgU3RyaW5nLmZyb21DaGFyQ29kZSgweEQ4NDIpLAorICAgIFN0cmluZy5mcm9tQ2hhckNv
ZGUoMHgwMDQxKSwKK107Cit0ZXN0U3Vycm9nYXRlUGFpcih0ZXN0U3RyaW5nLCBleHBlY3RlZCwg
Myk7CisKK3ZhciB0ZXN0U3RyaW5nID0gIkFcdUQ4NDJcdURGQjciOwordmFyIGV4cGVjdGVkID0g
WworICAgIFN0cmluZy5mcm9tQ2hhckNvZGUoMHgwMDQxKSwKKyAgICBTdHJpbmcuZnJvbUNoYXJD
b2RlKDB4RDg0MiwgMHhERkI3KSwKK107Cit0ZXN0U3Vycm9nYXRlUGFpcih0ZXN0U3RyaW5nLCBl
eHBlY3RlZCwgMyk7CisKK3ZhciB0ZXN0U3RyaW5nID0gIlx1RDg0MkFcdURGQjciOwordmFyIGV4
cGVjdGVkID0gWworICAgIFN0cmluZy5mcm9tQ2hhckNvZGUoMHhEODQyKSwKKyAgICBTdHJpbmcu
ZnJvbUNoYXJDb2RlKDB4MDA0MSksCisgICAgU3RyaW5nLmZyb21DaGFyQ29kZSgweERGQjcpLAor
XTsKK3Rlc3RTdXJyb2dhdGVQYWlyKHRlc3RTdHJpbmcsIGV4cGVjdGVkLCAzKTsKKwordmFyIHRl
c3RTdHJpbmcgPSAiXHVERkI3XHVEODQyQSI7Cit2YXIgZXhwZWN0ZWQgPSBbCisgICAgU3RyaW5n
LmZyb21DaGFyQ29kZSgweERGQjcpLAorICAgIFN0cmluZy5mcm9tQ2hhckNvZGUoMHhEODQyKSwK
KyAgICBTdHJpbmcuZnJvbUNoYXJDb2RlKDB4MDA0MSksCitdOwordGVzdFN1cnJvZ2F0ZVBhaXIo
dGVzdFN0cmluZywgZXhwZWN0ZWQsIDMpOworCit2YXIgc3RyaW5nMSA9ICJDb2NvYSI7Cit2YXIg
c3RyaW5nMUl0ZXJhdG9yID0gc3RyaW5nMVtTeW1ib2wuaXRlcmF0b3JdKCk7Cit2YXIgaW5kZXgg
PSAwOword2hpbGUgKHRydWUpIHsKKyAgICB2YXIgcmVzdWx0ID0gc3RyaW5nSXRlcmF0b3JQcm90
b3R5cGVOZXh0LmNhbGwoc3RyaW5nMUl0ZXJhdG9yKTsKKyAgICB2YXIgdmFsdWUgPSByZXN1bHQu
dmFsdWU7CisgICAgaWYgKHJlc3VsdC5kb25lKSB7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAg
ICBpZiAodmFsdWUgIT09IHN0cmluZzFbaW5kZXgrK10pCisgICAgICAgIHRocm93ICJFcnJvcjog
YmFkIHZhbHVlOiAiICsgdmFsdWU7Cit9CitpZiAoaW5kZXggIT09IDUpCisgICAgdGhyb3cgIkVy
cm9yOiBiYWQgaW5kZXg6ICIgKyBpbmRleDsKKworZnVuY3Rpb24gaW5jcmVtZW50KGl0ZXIpIHsK
KyAgICByZXR1cm4gc3RyaW5nSXRlcmF0b3JQcm90b3R5cGVOZXh0LmNhbGwoaXRlcik7Cit9Cit2
YXIgc3RyaW5nMSA9ICJDb2NvYSI7Cit2YXIgc3RyaW5nMiA9ICJDb2NvYSI7Cit2YXIgc3RyaW5n
MUl0ZXJhdG9yID0gc3RyaW5nMVtTeW1ib2wuaXRlcmF0b3JdKCk7Cit2YXIgc3RyaW5nMkl0ZXJh
dG9yID0gc3RyaW5nMltTeW1ib2wuaXRlcmF0b3JdKCk7Citmb3IgKHZhciBpID0gMDsgaSA8IDM7
ICsraSkgeworICAgIHZhciB2YWx1ZTEgPSBpbmNyZW1lbnQoc3RyaW5nMUl0ZXJhdG9yKS52YWx1
ZTsKKyAgICB2YXIgdmFsdWUyID0gaW5jcmVtZW50KHN0cmluZzJJdGVyYXRvcikudmFsdWU7Cisg
ICAgaWYgKHZhbHVlMSAhPT0gdmFsdWUyKQorICAgICAgICB0aHJvdyAiRXJyb3I6IGJhZCB2YWx1
ZTogIiArIHZhbHVlMSArICIgIiArIHZhbHVlMjsKK30KKwordmFyIHN0cmluZzEgPSAiQ2FwcHVj
Y2lubyI7Cit2YXIgc3RyaW5nMUl0ZXJhdG9yID0gc3RyaW5nMVtTeW1ib2wuaXRlcmF0b3JdKCk7
CisKK3ZhciB2YWx1ZSA9IHN0cmluZzFJdGVyYXRvci5uZXh0KCkudmFsdWU7CitpZiAodmFsdWUg
IT09ICJDIikKKyAgICB0aHJvdyAiRXJyb3I6IGJhZCB2YWx1ZTogIiArIHZhbHVlOwordmFyIHZh
bHVlID0gc3RyaW5nMUl0ZXJhdG9yLm5leHQoKS52YWx1ZTsKK2lmICh2YWx1ZSAhPT0gImEiKQor
ICAgIHRocm93ICJFcnJvcjogYmFkIHZhbHVlOiAiICsgdmFsdWU7Cit2YXIgdmFsdWUgPSBzdHJp
bmcxSXRlcmF0b3IubmV4dCgpLnZhbHVlOworaWYgKHZhbHVlICE9PSAicCIpCisgICAgdGhyb3cg
IkVycm9yOiBiYWQgdmFsdWU6ICIgKyB2YWx1ZTsKK3ZhciB2YWx1ZSA9IHN0cmluZ0l0ZXJhdG9y
UHJvdG90eXBlTmV4dC5jYWxsKHN0cmluZzFJdGVyYXRvcikudmFsdWU7CitpZiAodmFsdWUgIT09
ICJwIikKKyAgICB0aHJvdyAiRXJyb3I6IGJhZCB2YWx1ZTogIiArIHZhbHVlOwordmFyIHZhbHVl
ID0gc3RyaW5nSXRlcmF0b3JQcm90b3R5cGVOZXh0LmNhbGwoc3RyaW5nMUl0ZXJhdG9yKS52YWx1
ZTsKK2lmICh2YWx1ZSAhPT0gInUiKQorICAgIHRocm93ICJFcnJvcjogYmFkIHZhbHVlOiAiICsg
dmFsdWU7Cit2YXIgdmFsdWUgPSBzdHJpbmdJdGVyYXRvclByb3RvdHlwZU5leHQuY2FsbChzdHJp
bmcxSXRlcmF0b3IpLnZhbHVlOworaWYgKHZhbHVlICE9PSAiYyIpCisgICAgdGhyb3cgIkVycm9y
OiBiYWQgdmFsdWU6ICIgKyB2YWx1ZTsKK3ZhciB2YWx1ZSA9IHN0cmluZ0l0ZXJhdG9yUHJvdG90
eXBlTmV4dC5jYWxsKHN0cmluZzFJdGVyYXRvcikudmFsdWU7CitpZiAodmFsdWUgIT09ICJjIikK
KyAgICB0aHJvdyAiRXJyb3I6IGJhZCB2YWx1ZTogIiArIHZhbHVlOwordmFyIHZhbHVlID0gc3Ry
aW5nSXRlcmF0b3JQcm90b3R5cGVOZXh0LmNhbGwoc3RyaW5nMUl0ZXJhdG9yKS52YWx1ZTsKK2lm
ICh2YWx1ZSAhPT0gImkiKQorICAgIHRocm93ICJFcnJvcjogYmFkIHZhbHVlOiAiICsgdmFsdWU7
Cit2YXIgdmFsdWUgPSBzdHJpbmdJdGVyYXRvclByb3RvdHlwZU5leHQuY2FsbChzdHJpbmcxSXRl
cmF0b3IpLnZhbHVlOworaWYgKHZhbHVlICE9PSAibiIpCisgICAgdGhyb3cgIkVycm9yOiBiYWQg
dmFsdWU6ICIgKyB2YWx1ZTsKK3ZhciB2YWx1ZSA9IHN0cmluZ0l0ZXJhdG9yUHJvdG90eXBlTmV4
dC5jYWxsKHN0cmluZzFJdGVyYXRvcikudmFsdWU7CitpZiAodmFsdWUgIT09ICJvIikKKyAgICB0
aHJvdyAiRXJyb3I6IGJhZCB2YWx1ZTogIiArIHZhbHVlOwordmFyIHZhbHVlID0gc3RyaW5nSXRl
cmF0b3JQcm90b3R5cGVOZXh0LmNhbGwoc3RyaW5nMUl0ZXJhdG9yKS52YWx1ZTsKK2lmICh2YWx1
ZSAhPT0gdW5kZWZpbmVkKQorICAgIHRocm93ICJFcnJvcjogYmFkIHZhbHVlOiAiICsgdmFsdWU7
CisKK3ZhciBwcmltaXRpdmVzID0gWworICAgICJzdHJpbmciLAorICAgIDQyLAorICAgIDAuMDMs
CisgICAgZmFsc2UsCisgICAgdHJ1ZSwKKyAgICBTeW1ib2woIkNvY29hIiksCisgICAgbnVsbCwK
KyAgICB1bmRlZmluZWQKK107Citmb3IgKHZhciBwcmltaXRpdmUgb2YgcHJpbWl0aXZlcykgewor
ICAgIHZhciBkaWRUaHJvdyA9IG51bGw7CisgICAgdHJ5IHsKKyAgICAgICAgc3RyaW5nSXRlcmF0
b3JQcm90b3R5cGVOZXh0LmNhbGwocHJpbWl0aXZlKTsKKyAgICB9IGNhdGNoIChlKSB7CisgICAg
ICAgIGRpZFRocm93ID0gZTsKKyAgICB9CisgICAgaWYgKCFkaWRUaHJvdykKKyAgICAgICAgdGhy
b3cgIkVycm9yOiBubyBlcnJvciB0aHJvd24iOworICAgIHZhciBtZXNzYWdlID0gJ1R5cGVFcnJv
cjogJVN0cmluZ0l0ZXJhdG9yUHJvdG90eXBlJS5uZXh0IHJlcXVpcmVzIHRoYXQgfHRoaXN8IGJl
IFN0cmluZyBJdGVyYXRvciBJbnN0YW5jZSc7CisgICAgaWYgKHByaW1pdGl2ZSA9PSBudWxsKQor
ICAgICAgICBtZXNzYWdlID0gJ1R5cGVFcnJvcjogJVN0cmluZ0l0ZXJhdG9yUHJvdG90eXBlJS5u
ZXh0IHJlcXVpcmVzIHRoYXQgfHRoaXN8IGJlIG5vdCBudWxsIG9yIHVuZGVmaW5lZCcKKyAgICBp
ZiAoU3RyaW5nKGRpZFRocm93KSAhPT0gbWVzc2FnZSkKKyAgICAgICAgdGhyb3cgIkVycm9yOiBi
YWQgZXJyb3IgdGhyb3duOiAiICsgZGlkVGhyb3c7Cit9CisKK3ZhciBub25SZWxhdGVkT2JqZWN0
cyA9IFsKKyAgICB7fSwKKyAgICBbXSwKKyAgICBuZXcgRGF0ZSgpLAorICAgIG5ldyBFcnJvcigp
LAorICAgIE9iamVjdChTeW1ib2woKSksCisgICAgbmV3IFN0cmluZygiQ2FwcHVjY2lubyIpLAor
ICAgIG5ldyBOdW1iZXIoNDIpLAorICAgIG5ldyBCb29sZWFuKGZhbHNlKSwKKyAgICBmdW5jdGlv
biAoKSB7IH0sCitdOworZm9yICh2YXIgb2JqZWN0IG9mIG5vblJlbGF0ZWRPYmplY3RzKSB7Cisg
ICAgdmFyIGRpZFRocm93ID0gbnVsbDsKKyAgICB0cnkgeworICAgICAgICBzdHJpbmdJdGVyYXRv
clByb3RvdHlwZU5leHQuY2FsbChvYmplY3QpOworICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAg
ZGlkVGhyb3cgPSBlOworICAgIH0KKyAgICBpZiAoIWRpZFRocm93KQorICAgICAgICB0aHJvdyAi
RXJyb3I6IG5vIGVycm9yIHRocm93biI7CisgICAgaWYgKFN0cmluZyhkaWRUaHJvdykgIT09ICdU
eXBlRXJyb3I6ICVTdHJpbmdJdGVyYXRvclByb3RvdHlwZSUubmV4dCByZXF1aXJlcyB0aGF0IHx0
aGlzfCBiZSBTdHJpbmcgSXRlcmF0b3IgSW5zdGFuY2UnKQorICAgICAgICB0aHJvdyAiRXJyb3I6
IGJhZCBlcnJvciB0aHJvd246ICIgKyBkaWRUaHJvdzsKK30K
</data>

          </attachment>
      

    </bug>

</bugzilla>