<?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>159120</bug_id>
          
          <creation_ts>2016-06-25 13:55:52 -0700</creation_ts>
          <short_desc>B3 should not use Nops when deleting unreachable code</short_desc>
          <delta_ts>2016-06-27 11:35:56 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Filip Pizlo">fpizlo</reporter>
          <assigned_to name="Filip Pizlo">fpizlo</assigned_to>
          <cc>barraclough</cc>
    
    <cc>benjamin</cc>
    
    <cc>commit-queue</cc>
    
    <cc>ggaren</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>mhahnenb</cc>
    
    <cc>msaboff</cc>
    
    <cc>oliver</cc>
    
    <cc>saam</cc>
    
    <cc>sam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1205399</commentid>
    <comment_count>0</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-06-25 13:55:52 -0700</bug_when>
    <thetext>Replacing an unreachable value with Nop is bad if the value is non-Void, since other unreachable code will now reference a Void value.  This can easily happen because deleting unreachable code is often an iterative process where you may not discover that the users of an unreachable value are unreachable until after you have already tried to do other things to those unreachable values.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1205400</commentid>
    <comment_count>1</comment_count>
      <attachid>282083</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-06-25 14:07:38 -0700</bug_when>
    <thetext>Created attachment 282083
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1205401</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-06-25 14:10:01 -0700</bug_when>
    <thetext>Attachment 282083 did not pass style-queue:


ERROR: Source/JavaScriptCore/b3/testb3.cpp:12064:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/b3/testb3.cpp:12078:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/b3/B3InsertionSet.h:88:  The parameter name &quot;type&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Total errors found: 3 in 12 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>1205408</commentid>
    <comment_count>3</comment_count>
      <attachid>282084</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-06-25 17:58:29 -0700</bug_when>
    <thetext>Created attachment 282084
the patch

Better patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1205409</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-06-25 17:59:47 -0700</bug_when>
    <thetext>Attachment 282084 did not pass style-queue:


ERROR: Source/JavaScriptCore/b3/testb3.cpp:12064:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/JavaScriptCore/b3/testb3.cpp:12078:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
Total errors found: 2 in 14 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>1205573</commentid>
    <comment_count>5</comment_count>
      <attachid>282084</attachid>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2016-06-27 09:46:42 -0700</bug_when>
    <thetext>Comment on attachment 282084
the patch

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

r=me

&gt; Source/JavaScriptCore/ChangeLog:13
&gt; +        - replaceWithNop() if the type is Void or if know that we&apos;ll fix any users of this value.

Change &quot;if know&quot; to &quot;if we know&quot;.

&gt; Source/JavaScriptCore/b3/B3Value.h:96
&gt; +    // method less you kill a value safely. It will replace Void values with Nop and non-Void

&quot;less&quot; =&gt; &quot;lets&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1205637</commentid>
    <comment_count>6</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2016-06-27 11:35:56 -0700</bug_when>
    <thetext>Landed in https://trac.webkit.org/changeset/202502</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>282083</attachid>
            <date>2016-06-25 14:07:38 -0700</date>
            <delta_ts>2016-06-25 17:58:29 -0700</delta_ts>
            <desc>the patch</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>16631</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjAyNDY5KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDU5IEBA
CisyMDE2LTA2LTI1ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
QjMgc2hvdWxkIG5vdCB1c2UgTm9wcyB3aGVuIGRlbGV0aW5nIHVucmVhY2hhYmxlIGNvZGUKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1OTEyMAorICAg
ICAgICByZGFyOi8vcHJvYmxlbS8yNjUwMDc0MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorICAgICAgICAKKyAgICAgICAgVGhpcyBpbnRyb2R1Y2VzIHR3byBoaWdoLWxl
dmVsIGNoYW5nZXM6CisgICAgICAgIAorICAgICAgICAtIEl0J3Mgbm8gbG9uZ2VyIGxlZ2FsIHRv
IHJlcGxhY2VXaXRoTm9wKCkgaWYgdGhlIHZhbHVlIGlzIG5vdCBWb2lkLgorICAgICAgICAKKyAg
ICAgICAgLSBUaGVyZSBpcyBhIG5ldyByZXBsYWNlV2l0aEJvdHRvbSgpIGZhY2lsaXR5IHRoYXQg
d29ya3Mgd2l0aCBWb2lkIG9yIG5vbi1Wb2lkIGFuZCBiZWhhdmVzCisgICAgICAgICAgbGlrZSB5
b3Ugd291bGQgd2FudCByZXBsYWNlV2l0aE5vcCgpIHRvIGJlaGF2ZTogaWYgeW91IGtub3cgdGhh
dCB0aGUgY29kZSBpcyB1bnJlYWNoYWJsZQorICAgICAgICAgIHRoZW4gaXQgcHJvZHVjZXMgc29t
ZXRoaW5nIHRoYXQgaXMgZ3VhcmFudGVlZCB0byBiZSBkZWxldGVkIGJ5IGxhdGVyIG9wdGltaXph
dGlvbnMsIGFuZAorICAgICAgICAgIGlmIGl0J3Mgbm90IHVucmVhY2hhYmxlLCB0aGVuIGl0J3Mg
Z3VhcmFudGVlZCB0byBiZSBjb21waWxlZCB0byBzb21ldGhpbmcgaGFybWxlc3MgYW5kCisgICAg
ICAgICAgY2hlYXAuCisgICAgICAgIAorICAgICAgICBUaGlzIGFsc28gYWRkcyBhIHRlc3QgY2Fz
ZSBmb3IgdGhlIHJlYXNvbiB3aHkgd2UgZG8gdGhpczogd2UgbWF5IGhhdmUgdHdvIGJsb2Nrcywg
d2hlcmUKKyAgICAgICAgdGhlIGZpcnN0IGJsb2NrIHVuY29uZGl0aW9uYWxseSBleGl0cyB3aGls
ZSBkb21pbmF0aW5nIHRoZSBzZWNvbmQgYmxvY2suIFRoZSBzZWNvbmQgYmxvY2sKKyAgICAgICAg
cmVmZXJlbmNlcyB2YWx1ZXMgaW4gdGhlIHBhcnQgb2YgdGhlIGZpcnN0IGJsb2NrIHRoYXQgaXMg
dW5yZWFjaGFibGUuIEluIHRydW5rLCB0aGlzIHRlc3QKKyAgICAgICAgd291bGQgYXNzZXJ0IGlu
IFJlZHVjZVN0cmVuZ3RoOjpyYW5nZUZvcigpIGJlY2F1c2UgdGhlIENoZWNrQWRkIGluIHRoZSBz
ZWNvbmQgYmxvY2sgd291bGQKKyAgICAgICAgcmVmZXJlbmNlIGEgTm9wIGluIHRoZSBmaXJzdCBi
bG9jay4KKyAgICAgICAgCisgICAgICAgIFRoaXMgZml4ZXMgYSBoaWdoIHZvbHVtZSBjcmFzaCBp
biBSZWR1Y2VTdHJlbmd0aDo6cmFuZ2VGb3IoKS4gVGhpcyBjcmFzaCB3YXMgdmVyeQorICAgICAg
ICBjb25mdXNpbmcuIEV2ZW4gdGhvdWdoIHdlIHdlcmUgY3Jhc2hpbmcgYXQgYSBSRUxFQVNFX0FT
U0VSVF9OT1RfUkVBQ0hFRCgpIGluIGEgc3dpdGNoCisgICAgICAgIHN0YXRlbWVudCBpbiBJbnRS
YW5nZTo6dG9wKFR5cGUpLCBjbGFuZyB3YXMgbWVyZ2luZyB0aGF0IHRyYXAgd2l0aCB0aGUgdHJh
cCBpdCB1c2VkIGZvcgorICAgICAgICBWZWN0b3IgT09CLiBTbywgaXQgc2VlbWVkIGZvciBzdXJl
IGxpa2Ugd2Ugd2VyZSBjcmFzaGluZyBiZWNhdXNlIGEgdmFsdWUgZGlkbid0IGhhdmUKKyAgICAg
ICAgZW5vdWdoIGNoaWxkcmVuLiBDbGFuZyBpcyB3YXkgdG9vIG1lcmdlLWhhcHB5IHdpdGggb3Vy
IGNyYXNoIG1hY3JvLgorCisgICAgICAgICogYjMvQjNCb3R0b21Qcm92aWRlci5oOiBBZGRlZC4g
VGhpcyBpcyBhIHV0aWxpdHkgZm9yIGNyZWF0aW5nIGJvdHRvbSB2YWx1ZXMuCisgICAgICAgIChK
U0M6OkIzOjpCb3R0b21Qcm92aWRlcjo6Qm90dG9tUHJvdmlkZXIpOgorICAgICAgICAoSlNDOjpC
Mzo6Qm90dG9tUHJvdmlkZXI6Om9wZXJhdG9yKCkpOgorICAgICAgICAqIGIzL0IzSW5zZXJ0aW9u
U2V0LmNwcDogT3B0aW1pemVkIGFkZGluZyBib3R0b20gdmFsdWVzIGEgYml0LiBXZSB3aWxsIG5v
IGxvbmdlciBjcmVhdGUgcG9pbnRsZXNzIGR1cGxpY2F0ZXMuCisgICAgICAgIChKU0M6OkIzOjpJ
bnNlcnRpb25TZXQ6Omluc2VydEJvdHRvbSk6CisgICAgICAgIChKU0M6OkIzOjpJbnNlcnRpb25T
ZXQ6OmV4ZWN1dGUpOgorICAgICAgICAoSlNDOjpCMzo6SW5zZXJ0aW9uU2V0Ojpib3R0b21Gb3JU
eXBlKToKKyAgICAgICAgKiBiMy9CM0luc2VydGlvblNldC5oOgorICAgICAgICAqIGIzL0IzTW92
ZUNvbnN0YW50cy5jcHA6IFVzZSByZXBsYWNlV2l0aE5vcElnbm9yaW5nVHlwZSgpIGJlY2F1c2Ug
d2UgKmtub3cqIHRoYXQgd2UgY2FuIHJlcGxhY2VXaXRoTm9wIGV2ZW4gZm9yIG5vbi1Wb2lkLgor
ICAgICAgICAqIGIzL0IzUHJvY2VkdXJlLmg6CisgICAgICAgICogYjMvQjNSZWR1Y2VTdHJlbmd0
aC5jcHA6IFVzZSByZXBsYWNlV2l0aEJvdHRvbSgpLgorICAgICAgICAqIGIzL0IzUmVkdWNlU3Ry
ZW5ndGguaDoKKyAgICAgICAgKiBiMy9CM1ZhbHVlLmNwcDoKKyAgICAgICAgKEpTQzo6QjM6OlZh
bHVlOjpyZXBsYWNlV2l0aElkZW50aXR5KToKKyAgICAgICAgKEpTQzo6QjM6OlZhbHVlOjpyZXBs
YWNlV2l0aE5vcCk6CisgICAgICAgIChKU0M6OkIzOjpWYWx1ZTo6cmVwbGFjZVdpdGhOb3BJZ25v
cmluZ1R5cGUpOgorICAgICAgICAqIGIzL0IzVmFsdWUuaDoKKyAgICAgICAgKiBiMy9CM1ZhbHVl
SW5saW5lcy5oOgorICAgICAgICAoSlNDOjpCMzo6VmFsdWU6OnJlcGxhY2VXaXRoQm90dG9tKTog
VGhpcyBpcyB0aGUgbmV3IG1ldGhvZCBvZiBraWxsaW5nIHVucmVhY2hhYmxlIGNvZGUuCisgICAg
ICAgIChKU0M6OkIzOjpWYWx1ZTo6YXMpOgorICAgICAgICAqIGIzL3Rlc3RiMy5jcHA6IEFkZCBu
ZXcgdGVzdHMhCisgICAgICAgIChKU0M6OkIzOjp0ZXN0TGF0ZVJlZ2lzdGVyKToKKyAgICAgICAg
KEpTQzo6QjM6OnRlc3RSZWR1Y2VTdHJlbmd0aENoZWNrQm90dG9tVXNlSW5Bbm90aGVyQmxvY2sp
OgorICAgICAgICAoSlNDOjpCMzo6emVybyk6CisgICAgICAgIChKU0M6OkIzOjpydW4pOgorCiAy
MDE2LTA2LTI0ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CiAKICAgICAgICAgQjMg
c2hvdWxkIGRpZSBzb29uZXIgaWYgYSBWYWx1ZSBoYXMgdGhlIHdyb25nIG51bWJlciBvZiBjaGls
ZHJlbgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzQm90dG9tUHJvdmlkZXIuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNCb3R0b21Qcm92aWRlci5o
CShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzQm90dG9tUHJvdmlk
ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDYxIEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkK
KyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgQjNCb3R0b21Qcm92aWRlcl9oCisj
ZGVmaW5lIEIzQm90dG9tUHJvdmlkZXJfaAorCisjaWYgRU5BQkxFKEIzX0pJVCkKKworI2luY2x1
ZGUgIkIzSW5zZXJ0aW9uU2V0LmgiCisKK25hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgQjMgewor
CisvLyBUaGlzIGV4aXN0cyBiZWNhdXNlIHdlIGNhbm5vdCBjb252ZXJ0IHZhbHVlcyB0byBjb25z
dGFudHMgaW4tcGxhY2UuCisvLyBGSVhNRTogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE1OTExOQorCitjbGFzcyBCb3R0b21Qcm92aWRlciB7CitwdWJsaWM6CisgICAg
Qm90dG9tUHJvdmlkZXIoSW5zZXJ0aW9uU2V0JiBpbnNlcnRpb25TZXQsIHNpemVfdCBpbmRleCkK
KyAgICAgICAgOiBtX2luc2VydGlvblNldCgmaW5zZXJ0aW9uU2V0KQorICAgICAgICAsIG1faW5k
ZXgoaW5kZXgpCisgICAgeworICAgIH0KKyAgICAKKyAgICBWYWx1ZSogb3BlcmF0b3IoKShPcmln
aW4gb3JpZ2luLCBUeXBlIHR5cGUpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gbV9pbnNl
cnRpb25TZXQtPmluc2VydEJvdHRvbShtX2luZGV4LCBvcmlnaW4sIHR5cGUpOworICAgIH0KKyAg
ICAKK3ByaXZhdGU6CisgICAgSW5zZXJ0aW9uU2V0KiBtX2luc2VydGlvblNldDsKKyAgICBzaXpl
X3QgbV9pbmRleDsKK307CisKK30gfSAvLyBuYW1lc3BhY2UgSlNDOjpCMworCisjZW5kaWYgLy8g
RU5BQkxFKEIzX0pJVCkKKworI2VuZGlmIC8vIEIzQm90dG9tUHJvdmlkZXJfaAorCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNJbnNlcnRpb25TZXQuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0luc2VydGlvblNldC5jcHAJKHJldmlzaW9uIDIw
MjQ2MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0luc2VydGlvblNldC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTQ3LDcgKzQ3LDEwIEBAIFZhbHVlKiBJbnNlcnRpb25TZXQ6Omluc2Vy
dEludENvbnN0YW50KHMKIAogVmFsdWUqIEluc2VydGlvblNldDo6aW5zZXJ0Qm90dG9tKHNpemVf
dCBpbmRleCwgT3JpZ2luIG9yaWdpbiwgVHlwZSB0eXBlKQogewotICAgIHJldHVybiBpbnNlcnRW
YWx1ZShpbmRleCwgbV9wcm9jZWR1cmUuYWRkQm90dG9tKG9yaWdpbiwgdHlwZSkpOworICAgIFZh
bHVlKiYgYm90dG9tID0gYm90dG9tRm9yVHlwZSh0eXBlKTsKKyAgICBpZiAoIWJvdHRvbSkKKyAg
ICAgICAgYm90dG9tID0gaW5zZXJ0VmFsdWUoaW5kZXgsIG1fcHJvY2VkdXJlLmFkZEJvdHRvbShv
cmlnaW4sIHR5cGUpKTsKKyAgICByZXR1cm4gYm90dG9tOwogfQogCiBWYWx1ZSogSW5zZXJ0aW9u
U2V0OjppbnNlcnRCb3R0b20oc2l6ZV90IGluZGV4LCBWYWx1ZSogbGlrZVZhbHVlKQpAQCAtNTks
NiArNjIsMjggQEAgdm9pZCBJbnNlcnRpb25TZXQ6OmV4ZWN1dGUoQmFzaWNCbG9jayogYgogewog
ICAgIGJ1YmJsZVNvcnQobV9pbnNlcnRpb25zLmJlZ2luKCksIG1faW5zZXJ0aW9ucy5lbmQoKSk7
CiAgICAgZXhlY3V0ZUluc2VydGlvbnMoYmxvY2stPm1fdmFsdWVzLCBtX2luc2VydGlvbnMpOwor
ICAgIG1faW50MzJCb3R0b20gPSBudWxscHRyOworICAgIG1faW50NjRCb3R0b20gPSBudWxscHRy
OworICAgIG1fZmxvYXRCb3R0b20gPSBudWxscHRyOworICAgIG1fZG91YmxlQm90dG9tID0gbnVs
bHB0cjsKK30KKworVmFsdWUqJiBJbnNlcnRpb25TZXQ6OmJvdHRvbUZvclR5cGUoVHlwZSB0eXBl
KQoreworICAgIHN3aXRjaCAodHlwZSkgeworICAgIGNhc2UgSW50MzI6CisgICAgICAgIHJldHVy
biBtX2ludDMyQm90dG9tOworICAgIGNhc2UgSW50NjQ6CisgICAgICAgIHJldHVybiBtX2ludDY0
Qm90dG9tOworICAgIGNhc2UgRmxvYXQ6CisgICAgICAgIHJldHVybiBtX2Zsb2F0Qm90dG9tOwor
ICAgIGNhc2UgRG91YmxlOgorICAgICAgICByZXR1cm4gbV9kb3VibGVCb3R0b207CisgICAgY2Fz
ZSBWb2lkOgorICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICBy
ZXR1cm4gbV9pbnQzMkJvdHRvbTsKKyAgICB9CisgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNI
RUQoKTsKIH0KIAogfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkIzCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYjMvQjNJbnNlcnRpb25TZXQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYjMvQjNJbnNlcnRpb25TZXQuaAkocmV2aXNpb24gMjAyNDYzKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2IzL0IzSW5zZXJ0aW9uU2V0LmgJKHdvcmtpbmcgY29weSkKQEAgLTc3
LDYgKzc3LDE1IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgUHJvY2VkdXJlJiBtX3Byb2NlZHVy
ZTsKICAgICBWZWN0b3I8SW5zZXJ0aW9uLCA4PiBtX2luc2VydGlvbnM7CisgICAgCisgICAgLy8g
VGhpcyBleGlzdHMgYmVjYXVzZSBpdCdzIG5vdCBwb3NzaWJsZSB0byBjb252ZXJ0IGEgdmFsdWUg
dG8gYSBjb25zdGFudCBpbi1wbGFjZS4KKyAgICAvLyBGSVhNRTogaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE1OTExOQorICAgIFZhbHVlKiBtX2ludDMyQm90dG9tIHsg
bnVsbHB0ciB9OworICAgIFZhbHVlKiBtX2ludDY0Qm90dG9tIHsgbnVsbHB0ciB9OworICAgIFZh
bHVlKiBtX2Zsb2F0Qm90dG9tIHsgbnVsbHB0ciB9OworICAgIFZhbHVlKiBtX2RvdWJsZUJvdHRv
bSB7IG51bGxwdHIgfTsKKyAgICAKKyAgICBWYWx1ZSomIGJvdHRvbUZvclR5cGUoVHlwZSB0eXBl
KTsKIH07CiAKIH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpCMwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2IzL0IzTW92ZUNvbnN0YW50cy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2IzL0IzTW92ZUNvbnN0YW50cy5jcHAJKHJldmlzaW9uIDIwMjQ2MykKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM01vdmVDb25zdGFudHMuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xMjUsNyArMTI1LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICBpZiAodmFsdWVG
b3JDb25zdGFudC5nZXQoa2V5KSA9PSB2YWx1ZSkKICAgICAgICAgICAgICAgICAgICAgdmFsdWUg
PSBtX3Byb2MuYWRkPFZhbHVlPihOb3AsIHZhbHVlLT5vcmlnaW4oKSk7CiAgICAgICAgICAgICAg
ICAgZWxzZQotICAgICAgICAgICAgICAgICAgICB2YWx1ZS0+cmVwbGFjZVdpdGhOb3AoKTsKKyAg
ICAgICAgICAgICAgICAgICAgdmFsdWUtPnJlcGxhY2VXaXRoTm9wSWdub3JpbmdUeXBlKCk7CiAg
ICAgICAgICAgICB9CiAgICAgICAgIH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Iz
L0IzUHJvY2VkdXJlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0Iz
UHJvY2VkdXJlLmgJKHJldmlzaW9uIDIwMjQ2MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
My9CM1Byb2NlZHVyZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMTMsNyArMTEzLDcgQEAgcHVibGlj
OgogICAgIFZhbHVlKiBhZGRCb29sQ29uc3RhbnQoT3JpZ2luLCBUcmlTdGF0ZSk7CiAKICAgICB2
b2lkIHJlc2V0VmFsdWVPd25lcnMoKTsKLSAgICB2b2lkIHJlc2V0UmVhY2hhYmlsaXR5KCk7Cisg
ICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCByZXNldFJlYWNoYWJpbGl0eSgpOwogCiAgICAgLy8g
VGhpcyBkZXN0cm95cyBDRkcgYW5hbHlzZXMuIElmIHdlIGFzayBmb3IgdGhlbSBhZ2Fpbiwgd2Ug
d2lsbCByZWNvbXB1dGUgdGhlbS4gVXN1YWxseSB5b3UKICAgICAvLyBzaG91bGQgY2FsbCB0aGlz
IGFueXRpbWUgeW91IGNhbGwgcmVzZXRSZWFjaGFiaWxpdHkoKS4KSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9iMy9CM1JlZHVjZVN0cmVuZ3RoLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYjMvQjNSZWR1Y2VTdHJlbmd0aC5jcHAJKHJldmlzaW9uIDIwMjQ2MykK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1JlZHVjZVN0cmVuZ3RoLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMTcxNiw3ICsxNzE2LDcgQEAgcHJpdmF0ZToKIAogICAgICAgICAgICAgICAg
IC8vIFJlcGxhY2UgdGhlIHJlc3Qgb2YgdGhlIGJsb2NrIHdpdGggYW4gT29wcy4KICAgICAgICAg
ICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBtX2luZGV4ICsgMTsgaSA8IG1fYmxvY2stPnNpemUo
KSAtIDE7ICsraSkKLSAgICAgICAgICAgICAgICAgICAgbV9ibG9jay0+YXQoaSktPnJlcGxhY2VX
aXRoTm9wKCk7CisgICAgICAgICAgICAgICAgICAgIG1fYmxvY2stPmF0KGkpLT5yZXBsYWNlV2l0
aEJvdHRvbShtX2luc2VydGlvblNldCwgbV9pbmRleCk7CiAgICAgICAgICAgICAgICAgbV9ibG9j
ay0+bGFzdCgpLT5hczxDb250cm9sVmFsdWU+KCktPmNvbnZlcnRUb09vcHMoKTsKICAgICAgICAg
ICAgICAgICBtX2Jsb2NrLT5sYXN0KCktPnNldE9yaWdpbihjaGVja1ZhbHVlLT5vcmlnaW4oKSk7
CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1JlZHVjZVN0cmVuZ3RoLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzUmVkdWNlU3RyZW5ndGguaAko
cmV2aXNpb24gMjAyNDYzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzUmVkdWNlU3Ry
ZW5ndGguaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChD
KSAyMDE1LTIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCkBAIC00MCw3ICs0MCw3IEBAIGNsYXNzIFByb2NlZHVyZTsKIC8v
IGFkZCBzb3BoaXN0aWNhdGVkIG9wdGltaXphdGlvbnMgdG8gaXQuIEZvciB0aGF0IHJlYXNvbiB3
ZSBoYXZlIGZ1bGwgQ1NFIGluIGEgZGlmZmVyZW50IHBoYXNlLCBmb3IKIC8vIGV4YW1wbGUuCiAK
LWJvb2wgcmVkdWNlU3RyZW5ndGgoUHJvY2VkdXJlJik7CitKU19FWFBPUlRfUFJJVkFURSBib29s
IHJlZHVjZVN0cmVuZ3RoKFByb2NlZHVyZSYpOwogCiB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6QjMK
IApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzVmFsdWUuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1ZhbHVlLmNwcAkocmV2aXNpb24gMjAyNDYz
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzVmFsdWUuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0yOSw2ICsyOSw3IEBACiAjaWYgRU5BQkxFKEIzX0pJVCkKIAogI2luY2x1ZGUgIkIzQXJn
dW1lbnRSZWdWYWx1ZS5oIgorI2luY2x1ZGUgIkIzQm90dG9tUHJvdmlkZXIuaCIKICNpbmNsdWRl
ICJCM0NDYWxsVmFsdWUuaCIKICNpbmNsdWRlICJCM0NvbnRyb2xWYWx1ZS5oIgogI2luY2x1ZGUg
IkIzTWVtb3J5VmFsdWUuaCIKQEAgLTYwLDcgKzYxLDcgQEAgdm9pZCBWYWx1ZTo6cmVwbGFjZVdp
dGhJZGVudGl0eShWYWx1ZSogdgogICAgIEFTU0VSVChtX3R5cGUgPT0gdmFsdWUtPm1fdHlwZSk7
CiAKICAgICBpZiAobV90eXBlID09IFZvaWQpIHsKLSAgICAgICAgcmVwbGFjZVdpdGhOb3AoKTsK
KyAgICAgICAgcmVwbGFjZVdpdGhOb3BJZ25vcmluZ1R5cGUoKTsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KIApAQCAtNzksOCArODAsMTkgQEAgdm9pZCBWYWx1ZTo6cmVwbGFjZVdpdGhJZGVudGl0
eShWYWx1ZSogdgogICAgIHRoaXMtPm1faW5kZXggPSBpbmRleDsKIH0KIAordm9pZCBWYWx1ZTo6
cmVwbGFjZVdpdGhCb3R0b20oSW5zZXJ0aW9uU2V0JiBpbnNlcnRpb25TZXQsIHNpemVfdCBpbmRl
eCkKK3sKKyAgICByZXBsYWNlV2l0aEJvdHRvbShCb3R0b21Qcm92aWRlcihpbnNlcnRpb25TZXQs
IGluZGV4KSk7Cit9CisKIHZvaWQgVmFsdWU6OnJlcGxhY2VXaXRoTm9wKCkKIHsKKyAgICBSRUxF
QVNFX0FTU0VSVChtX3R5cGUgPT0gVm9pZCk7CisgICAgcmVwbGFjZVdpdGhOb3BJZ25vcmluZ1R5
cGUoKTsKK30KKwordm9pZCBWYWx1ZTo6cmVwbGFjZVdpdGhOb3BJZ25vcmluZ1R5cGUoKQorewog
ICAgIHVuc2lnbmVkIGluZGV4ID0gbV9pbmRleDsKICAgICBPcmlnaW4gb3JpZ2luID0gbV9vcmln
aW47CiAgICAgQmFzaWNCbG9jayogb3duZXIgPSB0aGlzLT5vd25lcjsKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9iMy9CM1ZhbHVlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2IzL0IzVmFsdWUuaAkocmV2aXNpb24gMjAyNDYzKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2IzL0IzVmFsdWUuaAkod29ya2luZyBjb3B5KQpAQCAtNDMsNiArNDMsNyBAQCBuYW1l
c3BhY2UgSlNDIHsgbmFtZXNwYWNlIEIzIHsKIAogY2xhc3MgQmFzaWNCbG9jazsKIGNsYXNzIENo
ZWNrVmFsdWU7CitjbGFzcyBJbnNlcnRpb25TZXQ7CiBjbGFzcyBQaGlDaGlsZHJlbjsKIGNsYXNz
IFByb2NlZHVyZTsKIApAQCAtODMsOCArODQsMzAgQEAgcHVibGljOgogICAgIEFkamFjZW5jeUxp
c3QmIGNoaWxkcmVuKCkgeyByZXR1cm4gbV9jaGlsZHJlbjsgfSAKICAgICBjb25zdCBBZGphY2Vu
Y3lMaXN0JiBjaGlsZHJlbigpIGNvbnN0IHsgcmV0dXJuIG1fY2hpbGRyZW47IH0KIAorICAgIC8v
IElmIHlvdSB3YW50IHRvIHJlcGxhY2UgYWxsIHVzZXMgb2YgdGhpcyB2YWx1ZSB3aXRoIGEgZGlm
ZmVyZW50IHZhbHVlLCB0aGVuIHJlcGxhY2UgdGhpcworICAgIC8vIHZhbHVlIHdpdGggSWRlbnRp
dHkuIFRoZW4gZG8gYSBwYXNzIG9mIHBlcmZvcm1TdWJzdGl0dXRpb24oKSBvbiBhbGwgb2YgdGhl
IHZhbHVlcyB0aGF0IHVzZQorICAgIC8vIHRoaXMgb25lLiBVc3VhbGx5IHdlIGRvIGFsbCBvZiB0
aGlzIGluIG9uZSBwYXNzIGluIHByZS1vcmRlciwgd2hpY2ggZW5zdXJlcyB0aGF0IHRoZQorICAg
IC8vIFgtPnJlcGxhY2VXaXRoSWRlbnRpdHkoKSBjYWxscyBoYXBwZW4gYmVmb3JlIHRoZSBwZXJm
b3JtU3Vic3RpdHV0aW9uKCkgY2FsbHMgb24gWCdzIHVzZXJzLgogICAgIHZvaWQgcmVwbGFjZVdp
dGhJZGVudGl0eShWYWx1ZSopOworICAgIAorICAgIC8vIEl0J3Mgb2Z0ZW4gbmVjZXNzYXJ5IHRv
IGtpbGwgYSB2YWx1ZS4gSXQncyB0ZW1wdGluZyB0byByZXBsYWNlIHRoZSB2YWx1ZSB3aXRoIE5v
cCBvciB0bworICAgIC8vIGp1c3QgcmVtb3ZlIGl0LiBCdXQgdW5sZXNzIHlvdSBhcmUgc3VyZSB0
aGF0IHRoZSB2YWx1ZSBpcyBWb2lkLCB5b3Ugd2lsbCBwcm9iYWJseSBzdGlsbAorICAgIC8vIGhh
dmUgb3RoZXIgdmFsdWVzIHRoYXQgdXNlIHRoaXMgb25lLiBTdXJlLCB5b3UgbWF5IGtpbGwgdGhv
c2UgbGF0ZXIsIG9yIHlvdSBtaWdodCBub3QuIFRoaXMKKyAgICAvLyBtZXRob2QgbGVzcyB5b3Ug
a2lsbCBhIHZhbHVlIHNhZmVseS4gSXQgd2lsbCByZXBsYWNlIFZvaWQgdmFsdWVzIHdpdGggTm9w
IGFuZCBub24tVm9pZAorICAgIC8vIHZhbHVlcyB3aXRoIElkZW50aXRpZXMgb24gYm90dG9tIGNv
bnN0YW50cy4gRm9yIHRoaXMgcmVhc29uLCB0aGlzIHRha2VzIGEgY2FsbGJhY2sgdGhhdCBpcwor
ICAgIC8vIHJlc3BvbnNpYmxlIGZvciBjcmVhdGluZyBib3R0b21zLiBUaGVyZSdzIGEgdXRpbGl0
eSBmb3IgdGhpcywgc2VlIEIzQm90dG9tUHJvdmlkZXIuaC4gWW91CisgICAgLy8gY2FuIGFsc28g
YWNjZXNzIHRoYXQgdXRpbGl0eSB1c2luZyByZXBsYWNlV2l0aEJvdHRvbShJbnNlcnRpb25TZXQm
LCBzaXplX3QpLgorICAgIHRlbXBsYXRlPHR5cGVuYW1lIEJvdHRvbVByb3ZpZGVyPgorICAgIHZv
aWQgcmVwbGFjZVdpdGhCb3R0b20oY29uc3QgQm90dG9tUHJvdmlkZXImKTsKKyAgICAKKyAgICB2
b2lkIHJlcGxhY2VXaXRoQm90dG9tKEluc2VydGlvblNldCYsIHNpemVfdCBpbmRleCk7CisKKyAg
ICAvLyBVc2UgdGhpcyBpZiB5b3Ugd2FudCB0byBraWxsIGEgdmFsdWUgYW5kIHlvdSBhcmUgc3Vy
ZSB0aGF0IHRoZSB2YWx1ZSBpcyBWb2lkLgogICAgIHZvaWQgcmVwbGFjZVdpdGhOb3AoKTsKKyAg
ICAKKyAgICAvLyBVc2UgdGhpcyBpZiB5b3Ugd2FudCB0byBraWxsIGEgdmFsdWUgYW5kIHlvdSBh
cmUgc3VyZSB0aGF0IG5vYm9keSBpcyB1c2luZyBpdCBhbnltb3JlLgorICAgIHZvaWQgcmVwbGFj
ZVdpdGhOb3BJZ25vcmluZ1R5cGUoKTsKKyAgICAKICAgICB2b2lkIHJlcGxhY2VXaXRoUGhpKCk7
CiAKICAgICB2b2lkIGR1bXAoUHJpbnRTdHJlYW0mKSBjb25zdDsKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9iMy9CM1ZhbHVlSW5saW5lcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9iMy9CM1ZhbHVlSW5saW5lcy5oCShyZXZpc2lvbiAyMDI0NjMpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYjMvQjNWYWx1ZUlubGluZXMuaAkod29ya2luZyBjb3B5KQpAQCAt
NDEsNiArNDEsMjAgQEAKIAogbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBCMyB7CiAKK3RlbXBs
YXRlPHR5cGVuYW1lIEJvdHRvbVByb3ZpZGVyPgordm9pZCBWYWx1ZTo6cmVwbGFjZVdpdGhCb3R0
b20oY29uc3QgQm90dG9tUHJvdmlkZXImIGJvdHRvbVByb3ZpZGVyKQoreworICAgIGlmIChtX3R5
cGUgPT0gVm9pZCkgeworICAgICAgICByZXBsYWNlV2l0aE5vcCgpOworICAgICAgICByZXR1cm47
CisgICAgfQorICAgIAorICAgIGlmIChpc0NvbnN0YW50KCkpCisgICAgICAgIHJldHVybjsKKyAg
ICAKKyAgICByZXBsYWNlV2l0aElkZW50aXR5KGJvdHRvbVByb3ZpZGVyKG1fb3JpZ2luLCBtX3R5
cGUpKTsKK30KKwogdGVtcGxhdGU8dHlwZW5hbWUgVD4KIFQqIFZhbHVlOjphcygpCiB7CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvdGVzdGIzLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYjMvdGVzdGIzLmNwcAkocmV2aXNpb24gMjAyNDYzKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2IzL3Rlc3RiMy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM4LDYg
KzM4LDcgQEAKICNpbmNsdWRlICJCM01hdGhFeHRyYXMuaCIKICNpbmNsdWRlICJCM01lbW9yeVZh
bHVlLmgiCiAjaW5jbHVkZSAiQjNQcm9jZWR1cmUuaCIKKyNpbmNsdWRlICJCM1JlZHVjZVN0cmVu
Z3RoLmgiCiAjaW5jbHVkZSAiQjNTbG90QmFzZVZhbHVlLmgiCiAjaW5jbHVkZSAiQjNTdGFja1Ns
b3QuaCIKICNpbmNsdWRlICJCM1N0YWNrbWFwR2VuZXJhdGlvblBhcmFtcy5oIgpAQCAtMTIwNTAs
NiArMTIwNTEsMzkgQEAgdm9pZCB0ZXN0TGF0ZVJlZ2lzdGVyKCkKICAgICBDSEVDSyhpbnZva2U8
dWludDY0X3Q+KCpjb2RlKSA9PSByZXN1bHQpOwogfQogCit2b2lkIHRlc3RSZWR1Y2VTdHJlbmd0
aENoZWNrQm90dG9tVXNlSW5Bbm90aGVyQmxvY2soKQoreworICAgIFByb2NlZHVyZSBwcm9jOwor
ICAgIAorICAgIEJhc2ljQmxvY2sqIG9uZSA9IHByb2MuYWRkQmxvY2soKTsKKyAgICBCYXNpY0Js
b2NrKiB0d28gPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgCisgICAgQ2hlY2tWYWx1ZSogY2hlY2sg
PSBvbmUtPmFwcGVuZE5ldzxDaGVja1ZhbHVlPigKKyAgICAgICAgcHJvYywgQ2hlY2ssIE9yaWdp
bigpLCBvbmUtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCAxKSk7Cisg
ICAgY2hlY2stPnNldEdlbmVyYXRvcigKKyAgICAgICAgWyZdIChDQ2FsbEhlbHBlcnMmIGppdCwg
Y29uc3QgU3RhY2ttYXBHZW5lcmF0aW9uUGFyYW1zJikgeworICAgICAgICAgICAgQWxsb3dNYWNy
b1NjcmF0Y2hSZWdpc3RlclVzYWdlIGFsbG93U2NyYXRjaChqaXQpOworCisgICAgICAgICAgICBq
aXQubW92ZShDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMig2NjYpLCBHUFJJbmZvOjpyZXR1cm5W
YWx1ZUdQUik7CisgICAgICAgICAgICBqaXQuZW1pdEZ1bmN0aW9uRXBpbG9ndWUoKTsKKyAgICAg
ICAgICAgIGppdC5yZXQoKTsKKyAgICAgICAgfSk7CisgICAgVmFsdWUqIGFyZyA9IG9uZS0+YXBw
ZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVu
dEdQUjApOworICAgIG9uZS0+YXBwZW5kTmV3PENvbnRyb2xWYWx1ZT4ocHJvYywgSnVtcCwgT3Jp
Z2luKCksIEZyZXF1ZW50ZWRCbG9jayh0d28pKTsKKyAgICAKKyAgICBjaGVjayA9IHR3by0+YXBw
ZW5kTmV3PENoZWNrVmFsdWU+KAorICAgICAgICBwcm9jLCBDaGVja0FkZCwgT3JpZ2luKCksIGFy
ZywKKyAgICAgICAgdHdvLT5hcHBlbmROZXc8Q29uc3RQdHJWYWx1ZT4ocHJvYywgT3JpZ2luKCks
IDEpKTsKKyAgICBjaGVjay0+c2V0R2VuZXJhdG9yKAorICAgICAgICBbJl0gKENDYWxsSGVscGVy
cyYsIGNvbnN0IFN0YWNrbWFwR2VuZXJhdGlvblBhcmFtcyYpIHsKKyAgICAgICAgICAgIENIRUNL
KCEiU2hvdWxkIG5vdCBleGVjdXRlIik7CisgICAgICAgIH0pOworICAgIHR3by0+YXBwZW5kTmV3
PENvbnRyb2xWYWx1ZT4ocHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgY2hlY2spOworICAgIAorICAg
IHByb2MucmVzZXRSZWFjaGFiaWxpdHkoKTsKKyAgICByZWR1Y2VTdHJlbmd0aChwcm9jKTsKK30K
KwogLy8gTWFrZSBzdXJlIHRoZSBjb21waWxlciBkb2VzIG5vdCB0cnkgdG8gb3B0aW1pemUgYW55
dGhpbmcgb3V0LgogTkVWRVJfSU5MSU5FIGRvdWJsZSB6ZXJvKCkKIHsKQEAgLTEzNDQ5LDExICsx
MzQ4MywxMCBAQCB2b2lkIHJ1bihjb25zdCBjaGFyKiBmaWx0ZXIpCiAgICAgUlVOKHRlc3RMU2hp
ZnRTZWxmNjQoKSk7CiAKICAgICBSVU4odGVzdFBhdGNocG9pbnREb3VibGVSZWdzKCkpOwotCiAg
ICAgUlVOKHRlc3RTcGlsbERlZlNtYWxsZXJUaGFuVXNlKCkpOwogICAgIFJVTih0ZXN0U3BpbGxV
c2VMYXJnZXJUaGFuRGVmKCkpOwotCiAgICAgUlVOKHRlc3RMYXRlUmVnaXN0ZXIoKSk7CisgICAg
UlVOKHRlc3RSZWR1Y2VTdHJlbmd0aENoZWNrQm90dG9tVXNlSW5Bbm90aGVyQmxvY2soKSk7CiAK
ICAgICBpZiAodGFza3MuaXNFbXB0eSgpKQogICAgICAgICB1c2FnZSgpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>282084</attachid>
            <date>2016-06-25 17:58:29 -0700</date>
            <delta_ts>2016-06-27 09:46:42 -0700</delta_ts>
            <desc>the patch</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>27051</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjAyNDY5KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEwMyBA
QAorMjAxNi0wNi0yNSAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgorCisgICAgICAg
IEIzIHNob3VsZCBub3QgdXNlIE5vcHMgd2hlbiBkZWxldGluZyB1bnJlYWNoYWJsZSBjb2RlCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTkxMjAKKyAg
ICAgICAgcmRhcjovL3Byb2JsZW0vMjY1MDA3NDMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKyAgICAgICAgCisgICAgICAgIFByaW9yIHRvIHRoaXMgY2hhbmdlLCB0cmFu
c2Zvcm1hdGlvbnMgdGhhdCBvYnZpYXRlZCB0aGUgbmVlZCBmb3Igc29tZSB2YWx1ZSBjb3VsZCBj
aG9vc2UKKyAgICAgICAgZnJvbSB0aGVzZSB3YXlzIHRvIGtpbGwgaXQ6CisgICAgICAgIAorICAg
ICAgICAtIHJlcGxhY2VXaXRoSWRlbnRpdHkoKSBpZiB3ZSdyZSByZXBsYWNpbmcgd2l0aCBhbm90
aGVyIHZhbHVlLgorICAgICAgICAtIHJlcGxhY2VXaXRoTm9wKCkgaWYgdGhlIHR5cGUgaXMgVm9p
ZCBvciBpZiBrbm93IHRoYXQgd2UnbGwgZml4IGFueSB1c2VycyBvZiB0aGlzIHZhbHVlLgorICAg
ICAgICAtIGRlbGV0ZVZhbHVlKCkgaWYgdGhlIGNvZGUgaXMgdW5yZWFjaGFibGUuCisgICAgICAg
IAorICAgICAgICBUaGUgYnVnIGhlcmUgaXMgdGhhdCByZWR1Y2VTdHJlbmd0aCgpIHdhcyBiZWlu
ZyBjbGV2ZXIgYWJvdXQgaG93IHRvIGdldCByaWQgb2YgYSB2YWx1ZS4KKyAgICAgICAgcmVkdWNl
U3RyZW5ndGgoKSBtYXkgZmluZCBhIENoZWNrIHRoYXQgbXVzdCBhbHdheXMgZXhpdC4gVGhlIGdv
YWwgaXMgdG8gcmVtb3ZlIGFueSBjb2RlCisgICAgICAgIGRvbWluYXRlZCBieSB0aGUgQ2hlY2su
IEJ1dCBpdCB3b3VsZCBiZSBhd2t3YXJkIHRvIGVhZ2VybHkgZGVsZXRlIGFsbCBvZiB0aGUgYmxv
Y2tzCisgICAgICAgIGRvbWluYXRlZCBieSB0aGlzIG9uZS4gU28gdGhpcyBjb2RlIHRvb2sgYSBt
dWNoIHNpbXBsZXIgYXBwcm9hY2g6IGl0IHdvdWxkCisgICAgICAgIHJlcGxhY2VXaXRoTm9wKCkg
Zm9yIGFsbCBvZiB0aGUgdmFsdWVzIGluIHRoaXMgYmxvY2sgYWZ0ZXIgdGhlIENoZWNrIGFuZCBp
dCB3b3VsZCByZXBsYWNlCisgICAgICAgIHRoZSB0ZXJtaW5hbCB3aXRoIE9vcHMuCisgICAgICAg
IAorICAgICAgICBCdXQgdGhpcyBjb3JydXB0cyB0aGUgSVIgaW4gYSBzdWJ0bGUgd2F5OiBzb21l
IG9mIHRob3NlIHZhbHVlcyBtYXkgaGF2ZSBiZWVuIG5vbi1Wb2lkIGJ1dAorICAgICAgICBub3cg
dGhleSBhcmUgTm9wcyBzbyB0aGV5IGFyZSBWb2lkLiByZWR1Y2VTdHJlbmd0aCgpIHdpbGwgbm90
IHlldCByZWFsaXplIHRoYXQgdGhlIGJsb2NrcworICAgICAgICBkb21pbmF0ZWQgYnkgdGhlIG9u
ZSB3aXRoIHRoZSBDaGVjayBhcmUgdW5yZWFjaGFibGUsIHNvIGl0IHdpbGwgcnVuIGFsbCBzb3J0
cyBvZgorICAgICAgICBvcHRpbWl6YXRpb25zIG9uIHRob3NlIGJsb2Nrcy4gVGhpcyBjb3VsZCBo
YXZlIHByb2JhYmx5IG1hbmlmZXN0ZWQgYXMgbWFueSBkaWZmZXJlbnQga2luZHMKKyAgICAgICAg
b2YgYmFkbmVzcywgYnV0IHRoZSB3YXkgSSBmb3VuZCBvdXQgYWJvdXQgdGhpcyBpc3N1ZSB3YXMg
dGhyb3VnaCBhIGNyYXNoIGluCisgICAgICAgIEludFJhbmdlOjp0b3AoVHlwZSkgd2hlbiBpbmxp
bmVkIGludG8gUmVkdWNlU3RyZW5ndGg6OnJhbmdlRm9yKCkuIFdlJ2QgZGllIGluIGEgc3dpdGNo
CisgICAgICAgIHN0YXRlbWVudCBvdmVyIGEgY2hpbGQncyB0eXBlLgorICAgICAgICAKKyAgICAg
ICAgV2UgY291bGQgZml4IHRoaXMgYnkgbWFraW5nIHJhbmdlRm9yKCkgdG9sZXJhdGUgVm9pZC4g
QnV0IEkgdGhpbmsgdGhhdCB0aGlzIHdvdWxkIGJlCisgICAgICAgIGRhbmdlcm91cy4gVGhlcmUg
Y291bGQgZWFzaWx5IGJlIG90aGVyIHBsYWNlcyBpbiByZWR1Y2VTdHJlbmd0aCgpIHRoYXQgYXNz
dW1lIHRoYXQgdmFsdWUncworICAgICAgICBjaGlsZHJlbiBhcmUgbm9uLVZvaWQuIFNvLCB0aGlz
IGNoYW5nZSBmaXhlcyB0aGUgQ2hlY2sgb3B0aW1pemF0aW9uIGFuZCBhZGRzIG1lY2hhbmlzbXMg
dG8KKyAgICAgICAgcHJldmVudCBvdGhlciBvcHRpbWl6YXRpb25zIGZyb20gYnJlYWtpbmcgdGhl
IGNoaWxkcmVuLWFyZS1ub3QtVm9pZCBydWxlLgorICAgICAgICAKKyAgICAgICAgVGhpcyBpbnRy
b2R1Y2VzIHR3byBoaWdoLWxldmVsIGNoYW5nZXM6CisgICAgICAgIAorICAgICAgICAtIEl0J3Mg
bm8gbG9uZ2VyIGxlZ2FsIHRvIHJlcGxhY2VXaXRoTm9wKCkgaWYgdGhlIHZhbHVlIGlzIG5vdCBW
b2lkLiBUaGlzIGNoYW5nZSBhbG9uZQorICAgICAgICAgIHdvdWxkIGNhdXNlIHJlZHVjZVN0cmVu
Z3RoKCkgdG8gaW5zdGFjcmFzaCBpbiBpdHMgQ2hlY2sgb3B0aW1pemF0aW9uLiBBbG1vc3QgYWxs
IG90aGVyCisgICAgICAgICAgdXNlcyBvZiByZXBsYWNlV2l0aE5vcCgpIHdlcmUgYWxyZWFkeSBm
b2xsb3dpbmcgdGhpcyBydWxlLCBzbyB0aGV5IHdlcmUgZmluZS4gT25lIG90aGVyCisgICAgICAg
ICAgcGxhY2Ugd2FzIHVzaW5nIHJlcGxhY2VXaXRoTm9wKCkgb24gbm9uLVZvaWQgdmFsdWVzIGFm
dGVyIGFycmFuZ2luZyBmb3IgdGhlbSB0byBubworICAgICAgICAgIGxvbmdlciBoYXZlIGFueSBw
YXJlbnRzLiBUaGF0IHdhcyBjaGFuZ2VkIHRvIGNhbGwgcmVwbGFjZVdpdGhOb3BJZ25vcmluZ1R5
cGUoKSwgd2hpY2gKKyAgICAgICAgICBkb2Vzbid0IGhhdmUgYW55IHR5cGUgYXNzZXJ0aW9ucy4K
KyAgICAgICAgCisgICAgICAgIC0gRm9yIHJlZHVjZVN0cmVuZ3RoKCkgdGhlcmUgaXMgYSBuZXcg
VmFsdWU6OnJlcGxhY2VXaXRoQm90dG9tKCkgbWV0aG9kIHRoYXQgd29ya3Mgd2l0aAorICAgICAg
ICAgIFZvaWQgb3Igbm9uLVZvaWQgYW5kIGJlaGF2ZXMgbGlrZSB5b3Ugd291bGQgd2FudCByZXBs
YWNlV2l0aE5vcCgpIHRvIGJlaGF2ZTogaWYgeW91IGtub3cKKyAgICAgICAgICB0aGF0IHRoZSBj
b2RlIGlzIHVucmVhY2hhYmxlIHRoZW4gaXQgcHJvZHVjZXMgc29tZXRoaW5nIHRoYXQgaXMgZ3Vh
cmFudGVlZCB0byBiZSBkZWxldGVkCisgICAgICAgICAgYnkgbGF0ZXIgb3B0aW1pemF0aW9ucywg
YW5kIGlmIGl0J3Mgbm90IHVucmVhY2hhYmxlLCB0aGVuIGl0J3MgZ3VhcmFudGVlZCB0byBiZSBj
b21waWxlZAorICAgICAgICAgIHRvIHNvbWV0aGluZyBoYXJtbGVzcyBhbmQgY2hlYXAuIFRoaXMg
bWVhbnMgcmVwbGFjaW5nIHRoZSB2YWx1ZSB3aXRoIGFuIGlkZW50aXR5IHRoYXQKKyAgICAgICAg
ICBwb2ludHMgdG8gYSBib3R0b20gY29uc3RhbnQgKHRoZSAwIGZvciB3aGF0ZXZlciB0eXBlIHdl
IGhhdmUpLCBvciBqdXN0IHJlcGxhY2luZyBpdCB3aXRoCisgICAgICAgICAgTm9wIGlmIGl0J3Mg
Vm9pZC4KKyAgICAgICAgCisgICAgICAgIFRoaXMgYWxzbyBhZGRzIGEgdGVzdCBjYXNlIGZvciB0
aGUgcmVhc29uIHdoeSB3ZSBkbyB0aGlzOiB3ZSBtYXkgaGF2ZSB0d28gYmxvY2tzLCB3aGVyZQor
ICAgICAgICB0aGUgZmlyc3QgYmxvY2sgdW5jb25kaXRpb25hbGx5IGV4aXRzIHdoaWxlIGRvbWlu
YXRpbmcgdGhlIHNlY29uZCBibG9jay4gVGhlIHNlY29uZCBibG9jaworICAgICAgICByZWZlcmVu
Y2VzIHZhbHVlcyBpbiB0aGUgcGFydCBvZiB0aGUgZmlyc3QgYmxvY2sgdGhhdCBpcyB1bnJlYWNo
YWJsZS4gSW4gdHJ1bmssIHRoaXMgdGVzdAorICAgICAgICB3b3VsZCBhc3NlcnQgaW4gUmVkdWNl
U3RyZW5ndGg6OnJhbmdlRm9yKCkgYmVjYXVzZSB0aGUgQ2hlY2tBZGQgaW4gdGhlIHNlY29uZCBi
bG9jayB3b3VsZAorICAgICAgICByZWZlcmVuY2UgYSBOb3AgaW4gdGhlIGZpcnN0IGJsb2NrLgor
ICAgICAgICAKKyAgICAgICAgVGhpcyBmaXhlcyBhIGhpZ2ggdm9sdW1lIGNyYXNoIGluIFJlZHVj
ZVN0cmVuZ3RoOjpyYW5nZUZvcigpLiBUaGlzIGNyYXNoIHdhcyB2ZXJ5CisgICAgICAgIGNvbmZ1
c2luZy4gRXZlbiB0aG91Z2ggd2Ugd2VyZSBjcmFzaGluZyBhdCBhIFJFTEVBU0VfQVNTRVJUX05P
VF9SRUFDSEVEKCkgaW4gYSBzd2l0Y2gKKyAgICAgICAgc3RhdGVtZW50IGluIEludFJhbmdlOjp0
b3AoVHlwZSksIGNsYW5nIHdhcyBtZXJnaW5nIHRoYXQgdHJhcCB3aXRoIHRoZSB0cmFwIGl0IHVz
ZWQgZm9yCisgICAgICAgIFZlY3RvciBPT0IuIFRoZSB0b3Agb2YgdGhlIHN0YWNrIGluIGNyYXNo
IGR1bXBzIGxvb2tlZCBsaWtlOgorICAgICAgICAKKyAgICAgICAgICAgIEpTQzo6QjM6Oihhbm9u
eW1vdXMgbmFtZXNwYWNlKTo6UmVkdWNlU3RyZW5ndGg6OnJhbmdlRm9yKEpTQzo6QjM6OlZhbHVl
KiwgdW5zaWduZWQgaW50KSArIDQ0NzcgKFZlY3Rvci5oOjY1NSkKKyAgICAgICAgCisgICAgICAg
IFdoZXJlIFZlY3Rvci5oOjY1NSBpczoKKyAgICAgICAgCisgICAgICAgICAgICBPdmVyZmxvd0hh
bmRsZXI6Om92ZXJmbG93ZWQoKTsKKworICAgICAgICBCdXQgdGhpcyBjcmFzaCB3YXMgbm90IGF0
IFZlY3Rvci5oOjY1NS4gSXQgd2FzIGF0IEIzUmVkdWNlU3RyZW5ndGguY3BwOjEyMS4gVGhlIHR3
byBsaW5lcworICAgICAgICBhcmUgYm90aCB0cmFwcywgc28gdGhleSBnb3QgbWVyZ2VkIGRlc3Bp
dGUgZGlmZmVyZW5jZXMgaW4gZGVidWcgaW5mby4gVGhpcyBidWcgd291bGQgaGF2ZQorICAgICAg
ICBiZWVuIHNvIG11Y2ggZWFzaWVyIHRvIGZpeCBpZiBJIGhhZCB0aGUgcmlnaHQgbGluZSBudW1i
ZXIuCisKKyAgICAgICAgKiBiMy9CM0JvdHRvbVByb3ZpZGVyLmg6IEFkZGVkLiBUaGlzIGlzIGEg
dXRpbGl0eSBmb3IgY3JlYXRpbmcgYm90dG9tIHZhbHVlcy4KKyAgICAgICAgKEpTQzo6QjM6OkJv
dHRvbVByb3ZpZGVyOjpCb3R0b21Qcm92aWRlcik6CisgICAgICAgIChKU0M6OkIzOjpCb3R0b21Q
cm92aWRlcjo6b3BlcmF0b3IoKSk6CisgICAgICAgICogYjMvQjNJbnNlcnRpb25TZXQuY3BwOiBP
cHRpbWl6ZWQgYWRkaW5nIGJvdHRvbSB2YWx1ZXMgYSBiaXQuIFdlIHdpbGwgbm8gbG9uZ2VyIGNy
ZWF0ZSBwb2ludGxlc3MgZHVwbGljYXRlcy4KKyAgICAgICAgKEpTQzo6QjM6Okluc2VydGlvblNl
dDo6aW5zZXJ0Qm90dG9tKToKKyAgICAgICAgKEpTQzo6QjM6Okluc2VydGlvblNldDo6ZXhlY3V0
ZSk6CisgICAgICAgIChKU0M6OkIzOjpJbnNlcnRpb25TZXQ6OmJvdHRvbUZvclR5cGUpOgorICAg
ICAgICAqIGIzL0IzSW5zZXJ0aW9uU2V0Lmg6CisgICAgICAgICogYjMvQjNNb3ZlQ29uc3RhbnRz
LmNwcDogVXNlIHJlcGxhY2VXaXRoTm9wSWdub3JpbmdUeXBlKCkgYmVjYXVzZSB3ZSAqa25vdyog
dGhhdCB3ZSBjYW4gcmVwbGFjZVdpdGhOb3AgZXZlbiBmb3Igbm9uLVZvaWQuCisgICAgICAgICog
YjMvQjNQcm9jZWR1cmUuaDoKKyAgICAgICAgKiBiMy9CM1JlZHVjZVN0cmVuZ3RoLmNwcDogVXNl
IHJlcGxhY2VXaXRoQm90dG9tKCkuCisgICAgICAgICogYjMvQjNSZWR1Y2VTdHJlbmd0aC5oOgor
ICAgICAgICAqIGIzL0IzVHlwZU1hcC5oOiBJIGZpZ3VyZWQgaWYgSSB3cm90ZSB0eXBlLWNhc2lu
ZyBjb2RlIGxpa2UgdGhpcyBvbmNlIHRoZW4gSSdkIG5ldmVyIHdhbnQgdG8gd3JpdGUgaXQgYWdh
aW4uCisgICAgICAgICogYjMvQjNWYWx1ZS5jcHA6CisgICAgICAgIChKU0M6OkIzOjpWYWx1ZTo6
cmVwbGFjZVdpdGhJZGVudGl0eSk6CisgICAgICAgIChKU0M6OkIzOjpWYWx1ZTo6cmVwbGFjZVdp
dGhOb3ApOgorICAgICAgICAoSlNDOjpCMzo6VmFsdWU6OnJlcGxhY2VXaXRoTm9wSWdub3JpbmdU
eXBlKToKKyAgICAgICAgKiBiMy9CM1ZhbHVlLmg6CisgICAgICAgICogYjMvQjNWYWx1ZUlubGlu
ZXMuaDoKKyAgICAgICAgKEpTQzo6QjM6OlZhbHVlOjpyZXBsYWNlV2l0aEJvdHRvbSk6IFRoaXMg
aXMgdGhlIG5ldyBtZXRob2Qgb2Yga2lsbGluZyB1bnJlYWNoYWJsZSBjb2RlLgorICAgICAgICAo
SlNDOjpCMzo6VmFsdWU6OmFzKToKKyAgICAgICAgKiBiMy90ZXN0YjMuY3BwOiBBZGQgbmV3IHRl
c3RzIQorICAgICAgICAoSlNDOjpCMzo6dGVzdExhdGVSZWdpc3Rlcik6CisgICAgICAgIChKU0M6
OkIzOjp0ZXN0UmVkdWNlU3RyZW5ndGhDaGVja0JvdHRvbVVzZUluQW5vdGhlckJsb2NrKToKKyAg
ICAgICAgKEpTQzo6QjM6Onplcm8pOgorICAgICAgICAoSlNDOjpCMzo6cnVuKToKKwogMjAxNi0w
Ni0yNCAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgogCiAgICAgICAgIEIzIHNob3Vs
ZCBkaWUgc29vbmVyIGlmIGEgVmFsdWUgaGFzIHRoZSB3cm9uZyBudW1iZXIgb2YgY2hpbGRyZW4K
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2Ny
aXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAyMDI0NjMpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagkod29ya2luZyBjb3B5KQpAQCAtMjAwNCw2ICsyMDA0LDggQEAKIAkJRENGM0Q1NkIxQ0Qy
OTQ3MjAwM0Q1QzY1IC8qIExhenlDbGFzc1N0cnVjdHVyZUlubGluZXMuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IERDRjNENTY2MUNEMjk0NjgwMDNENUM2
NSAvKiBMYXp5Q2xhc3NTdHJ1Y3R1cmVJbmxpbmVzLmggKi87IH07CiAJCURDRjNENTZDMUNEMjk0
NzUwMDNENUM2NSAvKiBMYXp5UHJvcGVydHkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IERDRjNENTY3MUNEMjk0NjgwMDNENUM2NSAvKiBMYXp5UHJvcGVy
dHkuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlE
Q0YzRDU2RDFDRDI5NDc2MDAzRDVDNjUgLyogTGF6eVByb3BlcnR5SW5saW5lcy5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRENGM0Q1NjgxQ0QyOTQ2ODAw
M0Q1QzY1IC8qIExhenlQcm9wZXJ0eUlubGluZXMuaCAqLzsgfTsKKwkJRENGREZCRDkxRDFGNUQ5
QjAwRkUzRDcyIC8qIEIzQm90dG9tUHJvdmlkZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IERDRkRGQkQ3MUQxRjVEOTgwMEZFM0Q3MiAvKiBCM0JvdHRv
bVByb3ZpZGVyLmggKi87IH07CisJCURDRkRGQkRBMUQxRjVEOUUwMEZFM0Q3MiAvKiBCM1R5cGVN
YXAuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IERDRkRG
QkQ4MUQxRjVEOTgwMEZFM0Q3MiAvKiBCM1R5cGVNYXAuaCAqLzsgfTsKIAkJREUyNkU5MDMxQ0I1
REQwNTAwRDJCRTgyIC8qIEJ1aWx0aW5FeGVjdXRhYmxlQ3JlYXRvci5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gREUyNkU5MDIxQ0I1REQwNTAwRDJCRTgy
IC8qIEJ1aWx0aW5FeGVjdXRhYmxlQ3JlYXRvci5oICovOyB9OwogCQlERTI2RTkwNzFDQjVERUZC
MDBEMkJFODIgLyogQnVpbHRpbkV4ZWN1dGFibGVDcmVhdG9yLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IERFMjZFOTA2MUNCNUREOTYwMEQyQkU4MiAv
KiBCdWlsdGluRXhlY3V0YWJsZUNyZWF0b3IuY3BwICovOyB9OwogCQlERTVBMEEwMDFCQTNBQzNF
MDAzRDQ0MjQgLyogSW50cmluc2ljRW1pdHRlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBERTVBMDlGRjFCQTNBQzNFMDAzRDQ0MjQgLyogSW50cmlu
c2ljRW1pdHRlci5jcHAgKi87IH07CkBAIC00MjIzLDYgKzQyMjUsOCBAQAogCQlEQ0YzRDU2NjFD
RDI5NDY4MDAzRDVDNjUgLyogTGF6eUNsYXNzU3RydWN0dXJlSW5saW5lcy5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBMYXp5Q2xhc3NTdHJ1Y3R1cmVJbmxpbmVzLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCURDRjNENTY3MUNEMjk0NjgwMDNENUM2NSAvKiBMYXp5
UHJvcGVydHkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTGF6eVByb3BlcnR5
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCURDRjNENTY4MUNEMjk0NjgwMDNENUM2
NSAvKiBMYXp5UHJvcGVydHlJbmxpbmVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IExhenlQcm9wZXJ0eUlubGluZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
RENGREZCRDcxRDFGNUQ5ODAwRkUzRDcyIC8qIEIzQm90dG9tUHJvdmlkZXIuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gQjNCb3R0b21Qcm92aWRlci5oOyBwYXRoID0gYjMvQjNC
b3R0b21Qcm92aWRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlEQ0ZERkJEODFE
MUY1RDk4MDBGRTNENzIgLyogQjNUeXBlTWFwLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
bmFtZSA9IEIzVHlwZU1hcC5oOyBwYXRoID0gYjMvQjNUeXBlTWFwLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCURFMjZFOTAyMUNCNUREMDUwMEQyQkU4MiAvKiBCdWlsdGluRXhlY3V0
YWJsZUNyZWF0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQnVpbHRpbkV4
ZWN1dGFibGVDcmVhdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCURFMjZFOTA2
MUNCNUREOTYwMEQyQkU4MiAvKiBCdWlsdGluRXhlY3V0YWJsZUNyZWF0b3IuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQnVpbHRpbkV4ZWN1dGFibGVDcmVhdG9yLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJREU1QTA5RkYxQkEzQUMzRTAwM0Q0NDI0
IC8qIEludHJpbnNpY0VtaXR0ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gSW50cmluc2ljRW1pdHRlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBA
IC00NjcxLDYgKzQ2NzUsNyBAQAogCQkJCTBGMzM4RTE3MUJGMjg2RUEwMDEzQzg4RiAvKiBCM0Js
b2NrSW5zZXJ0aW9uU2V0LmNwcCAqLywKIAkJCQkwRjMzOEUxODFCRjI4NkVBMDAxM0M4OEYgLyog
QjNCbG9ja0luc2VydGlvblNldC5oICovLAogCQkJCTBGRUM4NEJBMUJEQUNEQUMwMDgwRkY3NCAv
KiBCM0Jsb2NrV29ya2xpc3QuaCAqLywKKwkJCQlEQ0ZERkJENzFEMUY1RDk4MDBGRTNENzIgLyog
QjNCb3R0b21Qcm92aWRlci5oICovLAogCQkJCTBGNkI4QURFMUM0RUZFMTcwMDk2OTA1MiAvKiBC
M0JyZWFrQ3JpdGljYWxFZGdlcy5jcHAgKi8sCiAJCQkJMEY2QjhBREYxQzRFRkUxNzAwOTY5MDUy
IC8qIEIzQnJlYWtDcml0aWNhbEVkZ2VzLmggKi8sCiAJCQkJMEYzMzhERjcxQkU5NkFBODAwMTND
ODhGIC8qIEIzQ0NhbGxWYWx1ZS5jcHAgKi8sCkBAIC00Nzg5LDYgKzQ3OTQsNyBAQAogCQkJCTBG
NDU3MDNGMUJFNTg0Q0EwMDYyQTYyOSAvKiBCM1RpbWluZ1Njb3BlLmggKi8sCiAJCQkJMEZFQzg0
RjExQkRBQ0RBQzAwODBGRjc0IC8qIEIzVHlwZS5jcHAgKi8sCiAJCQkJMEZFQzg0RjIxQkRBQ0RB
QzAwODBGRjc0IC8qIEIzVHlwZS5oICovLAorCQkJCURDRkRGQkQ4MUQxRjVEOTgwMEZFM0Q3MiAv
KiBCM1R5cGVNYXAuaCAqLywKIAkJCQkwRkVDODRGMzFCREFDREFDMDA4MEZGNzQgLyogQjNVcHNp
bG9uVmFsdWUuY3BwICovLAogCQkJCTBGRUM4NEY0MUJEQUNEQUMwMDgwRkY3NCAvKiBCM1Vwc2ls
b25WYWx1ZS5oICovLAogCQkJCTBGRUM4NEY1MUJEQUNEQUMwMDgwRkY3NCAvKiBCM1VzZUNvdW50
cy5jcHAgKi8sCkBAIC03MTA0LDYgKzcxMTAsNyBAQAogCQkJCTk5REEwMEE1MUJENTk5MzEwMEY0
NTc1QyAvKiBidWlsdGluc190ZW1wbGF0ZXMucHkgaW4gSGVhZGVycyAqLywKIAkJCQk0MURFQTEz
MjFCOUYzMTYzMDA2RDY1REQgLyogQnVpbHRpblV0aWxzLmggaW4gSGVhZGVycyAqLywKIAkJCQk5
RTcyOTQwQjE5MEYwNTE0MDAxQTkxQjUgLyogQnVuZGxlUGF0aC5oIGluIEhlYWRlcnMgKi8sCisJ
CQkJRENGREZCRDkxRDFGNUQ5QjAwRkUzRDcyIC8qIEIzQm90dG9tUHJvdmlkZXIuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTBGQjdGMzk3MTVFRDhFNDYwMEYxNjdCMiAvKiBCdXR0ZXJmbHkuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTBGQjdGMzk4MTVFRDhFNDYwMEYxNjdCMiAvKiBCdXR0ZXJmbHlJbmxp
bmVzLmggaW4gSGVhZGVycyAqLywKIAkJCQlDMkZDQUUxMTE3QTlDMjRFMDAzNEM3MzUgLyogQnl0
ZWNvZGVCYXNpY0Jsb2NrLmggaW4gSGVhZGVycyAqLywKQEAgLTczOTAsNiArNzM5Nyw3IEBACiAJ
CQkJMEY2Mzk0M0YxNUM3NUYxOTAwNkE1OTdDIC8qIERGR1R5cGVDaGVja0hvaXN0aW5nUGhhc2Uu
aCBpbiBIZWFkZXJzICovLAogCQkJCTBGQkUwRjc3MTZDMURCMTIwMDgyQzVFOCAvKiBERkdVbmlm
aWNhdGlvblBoYXNlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjM0QjE0QTE2RDQyMDEzMDAxQ0RB
NUEgLyogREZHVXNlS2luZC5oIGluIEhlYWRlcnMgKi8sCisJCQkJRENGREZCREExRDFGNUQ5RTAw
RkUzRDcyIC8qIEIzVHlwZU1hcC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYzQjNBMkMxNTQ3NTAw
MjAwM0VEMEZGIC8qIERGR1ZhbGlkYXRlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjJCREM0ODE1
MjI4MDI5MDBDRDg5MTAgLyogREZHVmFsdWVTb3VyY2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTBG
MDEyMzMzMTk0NEVBMUIwMDg0M0EwQyAvKiBERkdWYWx1ZVN0cmVuZ3RoLmggaW4gSGVhZGVycyAq
LywKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0JvdHRvbVByb3ZpZGVyLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzQm90dG9tUHJvdmlkZXIuaAko
cmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0JvdHRvbVByb3ZpZGVy
LmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw2MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisg
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIEIzQm90dG9tUHJvdmlkZXJfaAorI2Rl
ZmluZSBCM0JvdHRvbVByb3ZpZGVyX2gKKworI2lmIEVOQUJMRShCM19KSVQpCisKKyNpbmNsdWRl
ICJCM0luc2VydGlvblNldC5oIgorCituYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIEIzIHsKKwor
Ly8gVGhpcyBleGlzdHMgYmVjYXVzZSB3ZSBjYW5ub3QgY29udmVydCB2YWx1ZXMgdG8gY29uc3Rh
bnRzIGluLXBsYWNlLgorLy8gRklYTUU6IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xNTkxMTkKKworY2xhc3MgQm90dG9tUHJvdmlkZXIgeworcHVibGljOgorICAgIEJv
dHRvbVByb3ZpZGVyKEluc2VydGlvblNldCYgaW5zZXJ0aW9uU2V0LCBzaXplX3QgaW5kZXgpCisg
ICAgICAgIDogbV9pbnNlcnRpb25TZXQoJmluc2VydGlvblNldCkKKyAgICAgICAgLCBtX2luZGV4
KGluZGV4KQorICAgIHsKKyAgICB9CisgICAgCisgICAgVmFsdWUqIG9wZXJhdG9yKCkoT3JpZ2lu
IG9yaWdpbiwgVHlwZSB0eXBlKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1faW5zZXJ0
aW9uU2V0LT5pbnNlcnRCb3R0b20obV9pbmRleCwgb3JpZ2luLCB0eXBlKTsKKyAgICB9CisgICAg
Citwcml2YXRlOgorICAgIEluc2VydGlvblNldCogbV9pbnNlcnRpb25TZXQ7CisgICAgc2l6ZV90
IG1faW5kZXg7Cit9OworCit9IH0gLy8gbmFtZXNwYWNlIEpTQzo6QjMKKworI2VuZGlmIC8vIEVO
QUJMRShCM19KSVQpCisKKyNlbmRpZiAvLyBCM0JvdHRvbVByb3ZpZGVyX2gKKwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzSW5zZXJ0aW9uU2V0LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNJbnNlcnRpb25TZXQuY3BwCShyZXZpc2lvbiAyMDI0
NjMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNJbnNlcnRpb25TZXQuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC00Nyw3ICs0NywxMCBAQCBWYWx1ZSogSW5zZXJ0aW9uU2V0OjppbnNlcnRJ
bnRDb25zdGFudChzCiAKIFZhbHVlKiBJbnNlcnRpb25TZXQ6Omluc2VydEJvdHRvbShzaXplX3Qg
aW5kZXgsIE9yaWdpbiBvcmlnaW4sIFR5cGUgdHlwZSkKIHsKLSAgICByZXR1cm4gaW5zZXJ0VmFs
dWUoaW5kZXgsIG1fcHJvY2VkdXJlLmFkZEJvdHRvbShvcmlnaW4sIHR5cGUpKTsKKyAgICBWYWx1
ZSomIGJvdHRvbSA9IG1fYm90dG9tRm9yVHlwZVt0eXBlXTsKKyAgICBpZiAoIWJvdHRvbSkKKyAg
ICAgICAgYm90dG9tID0gaW5zZXJ0VmFsdWUoaW5kZXgsIG1fcHJvY2VkdXJlLmFkZEJvdHRvbShv
cmlnaW4sIHR5cGUpKTsKKyAgICByZXR1cm4gYm90dG9tOwogfQogCiBWYWx1ZSogSW5zZXJ0aW9u
U2V0OjppbnNlcnRCb3R0b20oc2l6ZV90IGluZGV4LCBWYWx1ZSogbGlrZVZhbHVlKQpAQCAtNTks
NiArNjIsNyBAQCB2b2lkIEluc2VydGlvblNldDo6ZXhlY3V0ZShCYXNpY0Jsb2NrKiBiCiB7CiAg
ICAgYnViYmxlU29ydChtX2luc2VydGlvbnMuYmVnaW4oKSwgbV9pbnNlcnRpb25zLmVuZCgpKTsK
ICAgICBleGVjdXRlSW5zZXJ0aW9ucyhibG9jay0+bV92YWx1ZXMsIG1faW5zZXJ0aW9ucyk7Cisg
ICAgbV9ib3R0b21Gb3JUeXBlID0gVHlwZU1hcDxWYWx1ZSo+KCk7CiB9CiAKIH0gfSAvLyBuYW1l
c3BhY2UgSlNDOjpCMwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzSW5zZXJ0aW9u
U2V0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzSW5zZXJ0aW9u
U2V0LmgJKHJldmlzaW9uIDIwMjQ2MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0lu
c2VydGlvblNldC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw2ICszMCw3IEBACiAKICNpbmNsdWRl
ICJCM09yaWdpbi5oIgogI2luY2x1ZGUgIkIzVHlwZS5oIgorI2luY2x1ZGUgIkIzVHlwZU1hcC5o
IgogI2luY2x1ZGUgPHd0Zi9JbnNlcnRpb24uaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAK
QEAgLTc3LDYgKzc4LDggQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBQcm9jZWR1cmUmIG1fcHJv
Y2VkdXJlOwogICAgIFZlY3RvcjxJbnNlcnRpb24sIDg+IG1faW5zZXJ0aW9uczsKKworICAgIFR5
cGVNYXA8VmFsdWUqPiBtX2JvdHRvbUZvclR5cGU7CiB9OwogCiB9IH0gLy8gbmFtZXNwYWNlIEpT
Qzo6QjMKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM01vdmVDb25zdGFudHMuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM01vdmVDb25zdGFudHMu
Y3BwCShyZXZpc2lvbiAyMDI0NjMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNNb3Zl
Q29uc3RhbnRzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTI1LDcgKzEyNSw3IEBAIHByaXZhdGU6
CiAgICAgICAgICAgICAgICAgaWYgKHZhbHVlRm9yQ29uc3RhbnQuZ2V0KGtleSkgPT0gdmFsdWUp
CiAgICAgICAgICAgICAgICAgICAgIHZhbHVlID0gbV9wcm9jLmFkZDxWYWx1ZT4oTm9wLCB2YWx1
ZS0+b3JpZ2luKCkpOwogICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAg
dmFsdWUtPnJlcGxhY2VXaXRoTm9wKCk7CisgICAgICAgICAgICAgICAgICAgIHZhbHVlLT5yZXBs
YWNlV2l0aE5vcElnbm9yaW5nVHlwZSgpOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1Byb2NlZHVyZS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1Byb2NlZHVyZS5oCShyZXZpc2lvbiAyMDI0NjMp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNQcm9jZWR1cmUuaAkod29ya2luZyBjb3B5
KQpAQCAtMTEzLDcgKzExMyw3IEBAIHB1YmxpYzoKICAgICBWYWx1ZSogYWRkQm9vbENvbnN0YW50
KE9yaWdpbiwgVHJpU3RhdGUpOwogCiAgICAgdm9pZCByZXNldFZhbHVlT3duZXJzKCk7Ci0gICAg
dm9pZCByZXNldFJlYWNoYWJpbGl0eSgpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgcmVz
ZXRSZWFjaGFiaWxpdHkoKTsKIAogICAgIC8vIFRoaXMgZGVzdHJveXMgQ0ZHIGFuYWx5c2VzLiBJ
ZiB3ZSBhc2sgZm9yIHRoZW0gYWdhaW4sIHdlIHdpbGwgcmVjb21wdXRlIHRoZW0uIFVzdWFsbHkg
eW91CiAgICAgLy8gc2hvdWxkIGNhbGwgdGhpcyBhbnl0aW1lIHlvdSBjYWxsIHJlc2V0UmVhY2hh
YmlsaXR5KCkuCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNSZWR1Y2VTdHJlbmd0
aC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzUmVkdWNlU3Ry
ZW5ndGguY3BwCShyZXZpc2lvbiAyMDI0NjMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMv
QjNSZWR1Y2VTdHJlbmd0aC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE3MTYsNyArMTcxNiw3IEBA
IHByaXZhdGU6CiAKICAgICAgICAgICAgICAgICAvLyBSZXBsYWNlIHRoZSByZXN0IG9mIHRoZSBi
bG9jayB3aXRoIGFuIE9vcHMuCiAgICAgICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gbV9p
bmRleCArIDE7IGkgPCBtX2Jsb2NrLT5zaXplKCkgLSAxOyArK2kpCi0gICAgICAgICAgICAgICAg
ICAgIG1fYmxvY2stPmF0KGkpLT5yZXBsYWNlV2l0aE5vcCgpOworICAgICAgICAgICAgICAgICAg
ICBtX2Jsb2NrLT5hdChpKS0+cmVwbGFjZVdpdGhCb3R0b20obV9pbnNlcnRpb25TZXQsIG1faW5k
ZXgpOwogICAgICAgICAgICAgICAgIG1fYmxvY2stPmxhc3QoKS0+YXM8Q29udHJvbFZhbHVlPigp
LT5jb252ZXJ0VG9Pb3BzKCk7CiAgICAgICAgICAgICAgICAgbV9ibG9jay0+bGFzdCgpLT5zZXRP
cmlnaW4oY2hlY2tWYWx1ZS0+b3JpZ2luKCkpOwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYjMvQjNSZWR1Y2VTdHJlbmd0aC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9iMy9CM1JlZHVjZVN0cmVuZ3RoLmgJKHJldmlzaW9uIDIwMjQ2MykKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9iMy9CM1JlZHVjZVN0cmVuZ3RoLmgJKHdvcmtpbmcgY29weSkKQEAgLTEs
NSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNS0yMDE2IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNDAsNyAr
NDAsNyBAQCBjbGFzcyBQcm9jZWR1cmU7CiAvLyBhZGQgc29waGlzdGljYXRlZCBvcHRpbWl6YXRp
b25zIHRvIGl0LiBGb3IgdGhhdCByZWFzb24gd2UgaGF2ZSBmdWxsIENTRSBpbiBhIGRpZmZlcmVu
dCBwaGFzZSwgZm9yCiAvLyBleGFtcGxlLgogCi1ib29sIHJlZHVjZVN0cmVuZ3RoKFByb2NlZHVy
ZSYpOworSlNfRVhQT1JUX1BSSVZBVEUgYm9vbCByZWR1Y2VTdHJlbmd0aChQcm9jZWR1cmUmKTsK
IAogfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkIzCiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9iMy9CM1R5cGVNYXAuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMv
QjNUeXBlTWFwLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNU
eXBlTWFwLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxMDIgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5E
IEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICog
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBCM1R5cGVNYXBfaAorI2Rl
ZmluZSBCM1R5cGVNYXBfaAorCisjaWYgRU5BQkxFKEIzX0pJVCkKKworI2luY2x1ZGUgIkIzVHlw
ZS5oIgorI2luY2x1ZGUgPHd0Zi9QcmludFN0cmVhbS5oPgorCituYW1lc3BhY2UgSlNDIHsgbmFt
ZXNwYWNlIEIzIHsKKwordGVtcGxhdGU8dHlwZW5hbWUgVD4KK2NsYXNzIFR5cGVNYXAgeworcHVi
bGljOgorICAgIFR5cGVNYXAoKQorICAgICAgICA6IG1fdm9pZCgpCisgICAgICAgICwgbV9pbnQz
MigpCisgICAgICAgICwgbV9pbnQ2NCgpCisgICAgICAgICwgbV9mbG9hdCgpCisgICAgICAgICwg
bV9kb3VibGUoKQorICAgIHsKKyAgICB9CisgICAgCisgICAgVCYgYXQoVHlwZSB0eXBlKQorICAg
IHsKKyAgICAgICAgc3dpdGNoICh0eXBlKSB7CisgICAgICAgIGNhc2UgVm9pZDoKKyAgICAgICAg
ICAgIHJldHVybiBtX3ZvaWQ7CisgICAgICAgIGNhc2UgSW50MzI6CisgICAgICAgICAgICByZXR1
cm4gbV9pbnQzMjsKKyAgICAgICAgY2FzZSBJbnQ2NDoKKyAgICAgICAgICAgIHJldHVybiBtX2lu
dDY0OworICAgICAgICBjYXNlIEZsb2F0OgorICAgICAgICAgICAgcmV0dXJuIG1fZmxvYXQ7Cisg
ICAgICAgIGNhc2UgRG91YmxlOgorICAgICAgICAgICAgcmV0dXJuIG1fZG91YmxlOworICAgICAg
ICB9CisgICAgfQorICAgIAorICAgIGNvbnN0IFQmIGF0KFR5cGUgdHlwZSkgY29uc3QKKyAgICB7
CisgICAgICAgIHJldHVybiBiaXR3aXNlX2Nhc3Q8VHlwZU1hcCo+KHRoaXMpLT5hdCh0eXBlKTsK
KyAgICB9CisgICAgCisgICAgVCYgb3BlcmF0b3JbXShUeXBlIHR5cGUpCisgICAgeworICAgICAg
ICByZXR1cm4gYXQodHlwZSk7CisgICAgfQorICAgIAorICAgIGNvbnN0IFQmIG9wZXJhdG9yW10o
VHlwZSB0eXBlKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIGF0KHR5cGUpOworICAgIH0K
KyAgICAKKyAgICB2b2lkIGR1bXAoUHJpbnRTdHJlYW0mIG91dCkgY29uc3QKKyAgICB7CisgICAg
ICAgIG91dC5wcmludCgKKyAgICAgICAgICAgICJ7dm9pZCA9ICIsIG1fdm9pZCwKKyAgICAgICAg
ICAgICIsIGludDMyID0gIiwgbV9pbnQzMiwKKyAgICAgICAgICAgICIsIGludDY0ID0gIiwgbV9p
bnQ2NCwKKyAgICAgICAgICAgICIsIGZsb2F0ID0gIiwgbV9mbG9hdCwKKyAgICAgICAgICAgICIs
IGRvdWJsZSA9ICIsIG1fZG91YmxlLCAifSIpOworICAgIH0KKyAgICAKK3ByaXZhdGU6CisgICAg
VCBtX3ZvaWQ7CisgICAgVCBtX2ludDMyOworICAgIFQgbV9pbnQ2NDsKKyAgICBUIG1fZmxvYXQ7
CisgICAgVCBtX2RvdWJsZTsKK307CisKK30gfSAvLyBuYW1lc3BhY2UgSlNDOjpCMworCisjZW5k
aWYgLy8gRU5BQkxFKEIzX0pJVCkKKworI2VuZGlmIC8vIEIzVHlwZU1hcF9oCisKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1ZhbHVlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYjMvQjNWYWx1ZS5jcHAJKHJldmlzaW9uIDIwMjQ2MykKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1ZhbHVlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjksNiAr
MjksNyBAQAogI2lmIEVOQUJMRShCM19KSVQpCiAKICNpbmNsdWRlICJCM0FyZ3VtZW50UmVnVmFs
dWUuaCIKKyNpbmNsdWRlICJCM0JvdHRvbVByb3ZpZGVyLmgiCiAjaW5jbHVkZSAiQjNDQ2FsbFZh
bHVlLmgiCiAjaW5jbHVkZSAiQjNDb250cm9sVmFsdWUuaCIKICNpbmNsdWRlICJCM01lbW9yeVZh
bHVlLmgiCkBAIC02MCw3ICs2MSw3IEBAIHZvaWQgVmFsdWU6OnJlcGxhY2VXaXRoSWRlbnRpdHko
VmFsdWUqIHYKICAgICBBU1NFUlQobV90eXBlID09IHZhbHVlLT5tX3R5cGUpOwogCiAgICAgaWYg
KG1fdHlwZSA9PSBWb2lkKSB7Ci0gICAgICAgIHJlcGxhY2VXaXRoTm9wKCk7CisgICAgICAgIHJl
cGxhY2VXaXRoTm9wSWdub3JpbmdUeXBlKCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAg
LTc5LDggKzgwLDE5IEBAIHZvaWQgVmFsdWU6OnJlcGxhY2VXaXRoSWRlbnRpdHkoVmFsdWUqIHYK
ICAgICB0aGlzLT5tX2luZGV4ID0gaW5kZXg7CiB9CiAKK3ZvaWQgVmFsdWU6OnJlcGxhY2VXaXRo
Qm90dG9tKEluc2VydGlvblNldCYgaW5zZXJ0aW9uU2V0LCBzaXplX3QgaW5kZXgpCit7CisgICAg
cmVwbGFjZVdpdGhCb3R0b20oQm90dG9tUHJvdmlkZXIoaW5zZXJ0aW9uU2V0LCBpbmRleCkpOwor
fQorCiB2b2lkIFZhbHVlOjpyZXBsYWNlV2l0aE5vcCgpCiB7CisgICAgUkVMRUFTRV9BU1NFUlQo
bV90eXBlID09IFZvaWQpOworICAgIHJlcGxhY2VXaXRoTm9wSWdub3JpbmdUeXBlKCk7Cit9CisK
K3ZvaWQgVmFsdWU6OnJlcGxhY2VXaXRoTm9wSWdub3JpbmdUeXBlKCkKK3sKICAgICB1bnNpZ25l
ZCBpbmRleCA9IG1faW5kZXg7CiAgICAgT3JpZ2luIG9yaWdpbiA9IG1fb3JpZ2luOwogICAgIEJh
c2ljQmxvY2sqIG93bmVyID0gdGhpcy0+b3duZXI7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYjMvQjNWYWx1ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9C
M1ZhbHVlLmgJKHJldmlzaW9uIDIwMjQ2MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9C
M1ZhbHVlLmgJKHdvcmtpbmcgY29weSkKQEAgLTQzLDYgKzQzLDcgQEAgbmFtZXNwYWNlIEpTQyB7
IG5hbWVzcGFjZSBCMyB7CiAKIGNsYXNzIEJhc2ljQmxvY2s7CiBjbGFzcyBDaGVja1ZhbHVlOwor
Y2xhc3MgSW5zZXJ0aW9uU2V0OwogY2xhc3MgUGhpQ2hpbGRyZW47CiBjbGFzcyBQcm9jZWR1cmU7
CiAKQEAgLTgzLDggKzg0LDMwIEBAIHB1YmxpYzoKICAgICBBZGphY2VuY3lMaXN0JiBjaGlsZHJl
bigpIHsgcmV0dXJuIG1fY2hpbGRyZW47IH0gCiAgICAgY29uc3QgQWRqYWNlbmN5TGlzdCYgY2hp
bGRyZW4oKSBjb25zdCB7IHJldHVybiBtX2NoaWxkcmVuOyB9CiAKKyAgICAvLyBJZiB5b3Ugd2Fu
dCB0byByZXBsYWNlIGFsbCB1c2VzIG9mIHRoaXMgdmFsdWUgd2l0aCBhIGRpZmZlcmVudCB2YWx1
ZSwgdGhlbiByZXBsYWNlIHRoaXMKKyAgICAvLyB2YWx1ZSB3aXRoIElkZW50aXR5LiBUaGVuIGRv
IGEgcGFzcyBvZiBwZXJmb3JtU3Vic3RpdHV0aW9uKCkgb24gYWxsIG9mIHRoZSB2YWx1ZXMgdGhh
dCB1c2UKKyAgICAvLyB0aGlzIG9uZS4gVXN1YWxseSB3ZSBkbyBhbGwgb2YgdGhpcyBpbiBvbmUg
cGFzcyBpbiBwcmUtb3JkZXIsIHdoaWNoIGVuc3VyZXMgdGhhdCB0aGUKKyAgICAvLyBYLT5yZXBs
YWNlV2l0aElkZW50aXR5KCkgY2FsbHMgaGFwcGVuIGJlZm9yZSB0aGUgcGVyZm9ybVN1YnN0aXR1
dGlvbigpIGNhbGxzIG9uIFgncyB1c2Vycy4KICAgICB2b2lkIHJlcGxhY2VXaXRoSWRlbnRpdHko
VmFsdWUqKTsKKyAgICAKKyAgICAvLyBJdCdzIG9mdGVuIG5lY2Vzc2FyeSB0byBraWxsIGEgdmFs
dWUuIEl0J3MgdGVtcHRpbmcgdG8gcmVwbGFjZSB0aGUgdmFsdWUgd2l0aCBOb3Agb3IgdG8KKyAg
ICAvLyBqdXN0IHJlbW92ZSBpdC4gQnV0IHVubGVzcyB5b3UgYXJlIHN1cmUgdGhhdCB0aGUgdmFs
dWUgaXMgVm9pZCwgeW91IHdpbGwgcHJvYmFibHkgc3RpbGwKKyAgICAvLyBoYXZlIG90aGVyIHZh
bHVlcyB0aGF0IHVzZSB0aGlzIG9uZS4gU3VyZSwgeW91IG1heSBraWxsIHRob3NlIGxhdGVyLCBv
ciB5b3UgbWlnaHQgbm90LiBUaGlzCisgICAgLy8gbWV0aG9kIGxlc3MgeW91IGtpbGwgYSB2YWx1
ZSBzYWZlbHkuIEl0IHdpbGwgcmVwbGFjZSBWb2lkIHZhbHVlcyB3aXRoIE5vcCBhbmQgbm9uLVZv
aWQKKyAgICAvLyB2YWx1ZXMgd2l0aCBJZGVudGl0aWVzIG9uIGJvdHRvbSBjb25zdGFudHMuIEZv
ciB0aGlzIHJlYXNvbiwgdGhpcyB0YWtlcyBhIGNhbGxiYWNrIHRoYXQgaXMKKyAgICAvLyByZXNw
b25zaWJsZSBmb3IgY3JlYXRpbmcgYm90dG9tcy4gVGhlcmUncyBhIHV0aWxpdHkgZm9yIHRoaXMs
IHNlZSBCM0JvdHRvbVByb3ZpZGVyLmguIFlvdQorICAgIC8vIGNhbiBhbHNvIGFjY2VzcyB0aGF0
IHV0aWxpdHkgdXNpbmcgcmVwbGFjZVdpdGhCb3R0b20oSW5zZXJ0aW9uU2V0Jiwgc2l6ZV90KS4K
KyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBCb3R0b21Qcm92aWRlcj4KKyAgICB2b2lkIHJlcGxhY2VX
aXRoQm90dG9tKGNvbnN0IEJvdHRvbVByb3ZpZGVyJik7CisgICAgCisgICAgdm9pZCByZXBsYWNl
V2l0aEJvdHRvbShJbnNlcnRpb25TZXQmLCBzaXplX3QgaW5kZXgpOworCisgICAgLy8gVXNlIHRo
aXMgaWYgeW91IHdhbnQgdG8ga2lsbCBhIHZhbHVlIGFuZCB5b3UgYXJlIHN1cmUgdGhhdCB0aGUg
dmFsdWUgaXMgVm9pZC4KICAgICB2b2lkIHJlcGxhY2VXaXRoTm9wKCk7CisgICAgCisgICAgLy8g
VXNlIHRoaXMgaWYgeW91IHdhbnQgdG8ga2lsbCBhIHZhbHVlIGFuZCB5b3UgYXJlIHN1cmUgdGhh
dCBub2JvZHkgaXMgdXNpbmcgaXQgYW55bW9yZS4KKyAgICB2b2lkIHJlcGxhY2VXaXRoTm9wSWdu
b3JpbmdUeXBlKCk7CisgICAgCiAgICAgdm9pZCByZXBsYWNlV2l0aFBoaSgpOwogCiAgICAgdm9p
ZCBkdW1wKFByaW50U3RyZWFtJikgY29uc3Q7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
YjMvQjNWYWx1ZUlubGluZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
YjMvQjNWYWx1ZUlubGluZXMuaAkocmV2aXNpb24gMjAyNDYzKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2IzL0IzVmFsdWVJbmxpbmVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTQxLDYgKzQxLDIw
IEBACiAKIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgQjMgewogCit0ZW1wbGF0ZTx0eXBlbmFt
ZSBCb3R0b21Qcm92aWRlcj4KK3ZvaWQgVmFsdWU6OnJlcGxhY2VXaXRoQm90dG9tKGNvbnN0IEJv
dHRvbVByb3ZpZGVyJiBib3R0b21Qcm92aWRlcikKK3sKKyAgICBpZiAobV90eXBlID09IFZvaWQp
IHsKKyAgICAgICAgcmVwbGFjZVdpdGhOb3AoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAg
ICAKKyAgICBpZiAoaXNDb25zdGFudCgpKQorICAgICAgICByZXR1cm47CisgICAgCisgICAgcmVw
bGFjZVdpdGhJZGVudGl0eShib3R0b21Qcm92aWRlcihtX29yaWdpbiwgbV90eXBlKSk7Cit9CisK
IHRlbXBsYXRlPHR5cGVuYW1lIFQ+CiBUKiBWYWx1ZTo6YXMoKQogewpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2IzL3Rlc3RiMy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2IzL3Rlc3RiMy5jcHAJKHJldmlzaW9uIDIwMjQ2MykKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9iMy90ZXN0YjMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zOCw2ICszOCw3IEBACiAj
aW5jbHVkZSAiQjNNYXRoRXh0cmFzLmgiCiAjaW5jbHVkZSAiQjNNZW1vcnlWYWx1ZS5oIgogI2lu
Y2x1ZGUgIkIzUHJvY2VkdXJlLmgiCisjaW5jbHVkZSAiQjNSZWR1Y2VTdHJlbmd0aC5oIgogI2lu
Y2x1ZGUgIkIzU2xvdEJhc2VWYWx1ZS5oIgogI2luY2x1ZGUgIkIzU3RhY2tTbG90LmgiCiAjaW5j
bHVkZSAiQjNTdGFja21hcEdlbmVyYXRpb25QYXJhbXMuaCIKQEAgLTEyMDUwLDYgKzEyMDUxLDM5
IEBAIHZvaWQgdGVzdExhdGVSZWdpc3RlcigpCiAgICAgQ0hFQ0soaW52b2tlPHVpbnQ2NF90Pigq
Y29kZSkgPT0gcmVzdWx0KTsKIH0KIAordm9pZCB0ZXN0UmVkdWNlU3RyZW5ndGhDaGVja0JvdHRv
bVVzZUluQW5vdGhlckJsb2NrKCkKK3sKKyAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICAKKyAgICBC
YXNpY0Jsb2NrKiBvbmUgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgQmFzaWNCbG9jayogdHdvID0g
cHJvYy5hZGRCbG9jaygpOworICAgIAorICAgIENoZWNrVmFsdWUqIGNoZWNrID0gb25lLT5hcHBl
bmROZXc8Q2hlY2tWYWx1ZT4oCisgICAgICAgIHByb2MsIENoZWNrLCBPcmlnaW4oKSwgb25lLT5h
cHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgMSkpOworICAgIGNoZWNrLT5z
ZXRHZW5lcmF0b3IoCisgICAgICAgIFsmXSAoQ0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0IFN0YWNr
bWFwR2VuZXJhdGlvblBhcmFtcyYpIHsKKyAgICAgICAgICAgIEFsbG93TWFjcm9TY3JhdGNoUmVn
aXN0ZXJVc2FnZSBhbGxvd1NjcmF0Y2goaml0KTsKKworICAgICAgICAgICAgaml0Lm1vdmUoQ0Nh
bGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoNjY2KSwgR1BSSW5mbzo6cmV0dXJuVmFsdWVHUFIpOwor
ICAgICAgICAgICAgaml0LmVtaXRGdW5jdGlvbkVwaWxvZ3VlKCk7CisgICAgICAgICAgICBqaXQu
cmV0KCk7CisgICAgICAgIH0pOworICAgIFZhbHVlKiBhcmcgPSBvbmUtPmFwcGVuZE5ldzxBcmd1
bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKKyAg
ICBvbmUtPmFwcGVuZE5ldzxDb250cm9sVmFsdWU+KHByb2MsIEp1bXAsIE9yaWdpbigpLCBGcmVx
dWVudGVkQmxvY2sodHdvKSk7CisgICAgCisgICAgY2hlY2sgPSB0d28tPmFwcGVuZE5ldzxDaGVj
a1ZhbHVlPigKKyAgICAgICAgcHJvYywgQ2hlY2tBZGQsIE9yaWdpbigpLCBhcmcsCisgICAgICAg
IHR3by0+YXBwZW5kTmV3PENvbnN0UHRyVmFsdWU+KHByb2MsIE9yaWdpbigpLCAxKSk7CisgICAg
Y2hlY2stPnNldEdlbmVyYXRvcigKKyAgICAgICAgWyZdIChDQ2FsbEhlbHBlcnMmLCBjb25zdCBT
dGFja21hcEdlbmVyYXRpb25QYXJhbXMmKSB7CisgICAgICAgICAgICBDSEVDSyghIlNob3VsZCBu
b3QgZXhlY3V0ZSIpOworICAgICAgICB9KTsKKyAgICB0d28tPmFwcGVuZE5ldzxDb250cm9sVmFs
dWU+KHByb2MsIFJldHVybiwgT3JpZ2luKCksIGNoZWNrKTsKKyAgICAKKyAgICBwcm9jLnJlc2V0
UmVhY2hhYmlsaXR5KCk7CisgICAgcmVkdWNlU3RyZW5ndGgocHJvYyk7Cit9CisKIC8vIE1ha2Ug
c3VyZSB0aGUgY29tcGlsZXIgZG9lcyBub3QgdHJ5IHRvIG9wdGltaXplIGFueXRoaW5nIG91dC4K
IE5FVkVSX0lOTElORSBkb3VibGUgemVybygpCiB7CkBAIC0xMzQ0OSwxMSArMTM0ODMsMTAgQEAg
dm9pZCBydW4oY29uc3QgY2hhciogZmlsdGVyKQogICAgIFJVTih0ZXN0TFNoaWZ0U2VsZjY0KCkp
OwogCiAgICAgUlVOKHRlc3RQYXRjaHBvaW50RG91YmxlUmVncygpKTsKLQogICAgIFJVTih0ZXN0
U3BpbGxEZWZTbWFsbGVyVGhhblVzZSgpKTsKICAgICBSVU4odGVzdFNwaWxsVXNlTGFyZ2VyVGhh
bkRlZigpKTsKLQogICAgIFJVTih0ZXN0TGF0ZVJlZ2lzdGVyKCkpOworICAgIFJVTih0ZXN0UmVk
dWNlU3RyZW5ndGhDaGVja0JvdHRvbVVzZUluQW5vdGhlckJsb2NrKCkpOwogCiAgICAgaWYgKHRh
c2tzLmlzRW1wdHkoKSkKICAgICAgICAgdXNhZ2UoKTsK
</data>
<flag name="review"
          id="305894"
          type_id="1"
          status="+"
          setter="msaboff"
    />
          </attachment>
      

    </bug>

</bugzilla>