<?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>170182</bug_id>
          
          <creation_ts>2017-03-28 10:41:12 -0700</creation_ts>
          <short_desc>WebAssembly: pass Wasm::Context* to vmEntryToWasm when not using fast TLS</short_desc>
          <delta_ts>2017-03-30 00:29:10 -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>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Yusuke Suzuki">ysuzuki</reporter>
          <assigned_to name="Saam Barati">saam</assigned_to>
          <cc>buildbot</cc>
    
    <cc>commit-queue</cc>
    
    <cc>jfbastien</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1291937</commentid>
    <comment_count>0</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-03-28 10:41:12 -0700</bug_when>
    <thetext>And set it to wasmContext GPR.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1292607</commentid>
    <comment_count>1</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2017-03-29 15:29:55 -0700</bug_when>
    <thetext>working on this now</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1292627</commentid>
    <comment_count>2</comment_count>
      <attachid>305806</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2017-03-29 16:40:01 -0700</bug_when>
    <thetext>Created attachment 305806
WIP

might be done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1292630</commentid>
    <comment_count>3</comment_count>
      <attachid>305807</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2017-03-29 16:57:06 -0700</bug_when>
    <thetext>Created attachment 305807
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1292631</commentid>
    <comment_count>4</comment_count>
      <attachid>305808</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2017-03-29 16:58:36 -0700</bug_when>
    <thetext>Created attachment 305808
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1292632</commentid>
    <comment_count>5</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-03-29 17:01:50 -0700</bug_when>
    <thetext>Attachment 305808 did not pass style-queue:


ERROR: Source/JavaScriptCore/jsc.cpp:79:  Alphabetical sorting problem.  [build/include_order] [4]
Total errors found: 1 in 8 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>1292635</commentid>
    <comment_count>6</comment_count>
      <attachid>305808</attachid>
    <who name="JF Bastien">jfbastien</who>
    <bug_when>2017-03-29 17:09:45 -0700</bug_when>
    <thetext>Comment on attachment 305808
patch

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

Looks good.

&gt; Source/JavaScriptCore/ChangeLog:3
&gt; +        WebAssembly: pass JSWebAssemblyInstanace to vmEntryToWasm when not using fast TLS

Typo &quot;instance&quot;

&gt; Source/JavaScriptCore/wasm/WasmContext.h:39
&gt; +using Context = JSWebAssemblyInstance;

FIXME to make this a class so we don&apos;t keep explaining to each other why it&apos;s like this for now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1292638</commentid>
    <comment_count>7</comment_count>
      <attachid>305808</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2017-03-29 17:13:58 -0700</bug_when>
    <thetext>Comment on attachment 305808
patch

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

r=me

&gt; Source/JavaScriptCore/ChangeLog:3
&gt; +        WebAssembly: pass JSWebAssemblyInstanace to vmEntryToWasm when not using fast TLS

typo: /JSWebAssemblyInstanace/JSWebAssemblyInstance/</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1292640</commentid>
    <comment_count>8</comment_count>
      <attachid>305811</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2017-03-29 17:20:06 -0700</bug_when>
    <thetext>Created attachment 305811
patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1292731</commentid>
    <comment_count>9</comment_count>
      <attachid>305811</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-03-30 00:29:06 -0700</bug_when>
    <thetext>Comment on attachment 305811
patch for landing

Clearing flags on attachment: 305811

Committed r214602: &lt;http://trac.webkit.org/changeset/214602&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1292732</commentid>
    <comment_count>10</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-03-30 00:29:10 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>305806</attachid>
            <date>2017-03-29 16:40:01 -0700</date>
            <delta_ts>2017-03-29 16:57:06 -0700</delta_ts>
            <desc>WIP</desc>
            <filename>b-backup.diff</filename>
            <type>text/plain</type>
            <size>14870</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCShyZXZpc2lvbiAyMTQ1NjYpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvanNjLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzYsNiArNzYsNyBAQAogI2lu
Y2x1ZGUgIlRlc3RSdW5uZXJVdGlscy5oIgogI2luY2x1ZGUgIlR5cGVQcm9maWxlckxvZy5oIgog
I2luY2x1ZGUgIldhc21GYXVsdFNpZ25hbEhhbmRsZXIuaCIKKyNpbmNsdWRlICJXYXNtQ29udGV4
dC5oIgogI2luY2x1ZGUgIldhc21NZW1vcnkuaCIKICNpbmNsdWRlICJXYXNtUGxhbklubGluZXMu
aCIKICNpbmNsdWRlICJXYXNtV29ya2xpc3QuaCIKQEAgLTMyMjQsNiArMzIyNSwxMyBAQCBzdGF0
aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jCiAgICAgICAgICAgICBKU0FycmF5
KiBhcmd1bWVudHMgPSBqc0Nhc3Q8SlNBcnJheSo+KHRlc3QtPmdldEluZGV4UXVpY2tseSgxKSk7
CiAKICAgICAgICAgICAgIE1hcmtlZEFyZ3VtZW50QnVmZmVyIGJveGVkQXJnczsKKyAgICAgICAg
ICAgIGlmICghV2FzbTo6dXNlRmFzdFRMU0ZvckNvbnRleHQoKSkgeworICAgICAgICAgICAgICAg
IC8vIFdoZW4gbm90IHVzaW5nIGZhc3QgVExTLCB0aGUgY29kZSB3ZSBlbWl0IGV4cGVjdHMgV2Fz
bTo6Q29udGV4dCoKKyAgICAgICAgICAgICAgICAvLyBhcyB0aGUgZmlyc3QgYXJndW1lbnQuIFRo
ZXNlIHRlc3RzIHRoYXQgdGhpcyBBUEkgc3VwcG9ydHMgZG9uJ3QgZXZlcgorICAgICAgICAgICAg
ICAgIC8vIHVzZSBhIENvbnRleHQuIFNvIHRoaXMgaXMganVzdCBhIGhhY2sgdG8gZ2V0IGl0IHRv
IG5vdCBiYXJmLgorICAgICAgICAgICAgICAgIC8vIFdlIHJlYWxseSBuZWVkIHRvIHJlbW92ZSB0
aGlzIEFQSS4KKyAgICAgICAgICAgICAgICBib3hlZEFyZ3MuYXBwZW5kKGpzTnVtYmVyKDB4YmFk
YmVlZikpOworICAgICAgICAgICAgfQogICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBhcmdJbmRl
eCA9IDA7IGFyZ0luZGV4IDwgYXJndW1lbnRzLT5sZW5ndGgoKTsgKythcmdJbmRleCkKICAgICAg
ICAgICAgICAgICBib3hlZEFyZ3MuYXBwZW5kKGJveChleGVjLCB2bSwgYXJndW1lbnRzLT5nZXRJ
bmRleFF1aWNrbHkoYXJnSW5kZXgpKSk7CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvQXNzZW1ibHlIZWxwZXJzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0Fzc2VtYmx5SGVscGVycy5jcHAJKHJldmlzaW9uIDIxNDU2NikKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MzMsNiArMzMsNyBAQAogI2luY2x1ZGUgIkxpbmtCdWZmZXIuaCIKIAogI2lmIEVOQUJMRShXRUJB
U1NFTUJMWSkKKyNpbmNsdWRlICJXYXNtQ29udGV4dC5oIgogI2luY2x1ZGUgIldhc21NZW1vcnlJ
bmZvcm1hdGlvbi5oIgogI2VuZGlmCiAKQEAgLTc3Nyw3ICs3NzgsNyBAQCB2b2lkIEFzc2VtYmx5
SGVscGVyczo6ZW1pdENvbnZlcnRWYWx1ZVRvCiB2b2lkIEFzc2VtYmx5SGVscGVyczo6bG9hZFdh
c21Db250ZXh0KEdQUlJlZyBkc3QpCiB7CiAjaWYgRU5BQkxFKEZBU1RfVExTX0pJVCkKLSAgICBp
ZiAoV2FzbTo6dXNlRmFzdFRMU0Zvcldhc21Db250ZXh0KCkpIHsKKyAgICBpZiAoV2FzbTo6dXNl
RmFzdFRMU0ZvckNvbnRleHQoKSkgewogICAgICAgICBsb2FkRnJvbVRMU1B0cihmYXN0VExTT2Zm
c2V0Rm9yS2V5KFdURl9XQVNNX0NPTlRFWFRfS0VZKSwgZHN0KTsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KQEAgLTc4OCw3ICs3ODksNyBAQCB2b2lkIEFzc2VtYmx5SGVscGVyczo6bG9hZFdhc21D
b250ZXh0KEdQCiB2b2lkIEFzc2VtYmx5SGVscGVyczo6c3RvcmVXYXNtQ29udGV4dChHUFJSZWcg
c3JjKQogewogI2lmIEVOQUJMRShGQVNUX1RMU19KSVQpCi0gICAgaWYgKFdhc206OnVzZUZhc3RU
TFNGb3JXYXNtQ29udGV4dCgpKSB7CisgICAgaWYgKFdhc206OnVzZUZhc3RUTFNGb3JDb250ZXh0
KCkpIHsKICAgICAgICAgc3RvcmVUb1RMU1B0cihzcmMsIGZhc3RUTFNPZmZzZXRGb3JLZXkoV1RG
X1dBU01fQ09OVEVYVF9LRVkpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTc5OSw3ICs4
MDAsNyBAQCB2b2lkIEFzc2VtYmx5SGVscGVyczo6c3RvcmVXYXNtQ29udGV4dChHCiBib29sIEFz
c2VtYmx5SGVscGVyczo6bG9hZFdhc21Db250ZXh0TmVlZHNNYWNyb1NjcmF0Y2hSZWdpc3Rlcigp
CiB7CiAjaWYgRU5BQkxFKEZBU1RfVExTX0pJVCkKLSAgICBpZiAoV2FzbTo6dXNlRmFzdFRMU0Zv
cldhc21Db250ZXh0KCkpCisgICAgaWYgKFdhc206OnVzZUZhc3RUTFNGb3JDb250ZXh0KCkpCiAg
ICAgICAgIHJldHVybiBsb2FkRnJvbVRMU1B0ck5lZWRzTWFjcm9TY3JhdGNoUmVnaXN0ZXIoKTsK
ICNlbmRpZgogICAgIHJldHVybiBmYWxzZTsKQEAgLTgwOCw3ICs4MDksNyBAQCBib29sIEFzc2Vt
Ymx5SGVscGVyczo6bG9hZFdhc21Db250ZXh0TmVlCiBib29sIEFzc2VtYmx5SGVscGVyczo6c3Rv
cmVXYXNtQ29udGV4dE5lZWRzTWFjcm9TY3JhdGNoUmVnaXN0ZXIoKQogewogI2lmIEVOQUJMRShG
QVNUX1RMU19KSVQpCi0gICAgaWYgKFdhc206OnVzZUZhc3RUTFNGb3JXYXNtQ29udGV4dCgpKQor
ICAgIGlmIChXYXNtOjp1c2VGYXN0VExTRm9yQ29udGV4dCgpKQogICAgICAgICByZXR1cm4gc3Rv
cmVUb1RMU1B0ck5lZWRzTWFjcm9TY3JhdGNoUmVnaXN0ZXIoKTsKICNlbmRpZgogICAgIHJldHVy
biBmYWxzZTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21CM0lSR2VuZXJh
dG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQjNJ
UkdlbmVyYXRvci5jcHAJKHJldmlzaW9uIDIxNDU2NikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS93YXNtL1dhc21CM0lSR2VuZXJhdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTAsNiArNTAs
NyBAQAogI2luY2x1ZGUgIkpTV2ViQXNzZW1ibHlSdW50aW1lRXJyb3IuaCIKICNpbmNsdWRlICJW
aXJ0dWFsUmVnaXN0ZXIuaCIKICNpbmNsdWRlICJXYXNtQ2FsbGluZ0NvbnZlbnRpb24uaCIKKyNp
bmNsdWRlICJXYXNtQ29udGV4dC5oIgogI2luY2x1ZGUgIldhc21FeGNlcHRpb25UeXBlLmgiCiAj
aW5jbHVkZSAiV2FzbUZ1bmN0aW9uUGFyc2VyLmgiCiAjaW5jbHVkZSAiV2FzbU1lbW9yeS5oIgpA
QCAtMjQ0LDcgKzI0NSw3IEBAIHByaXZhdGU6CiAKIFZhbHVlKiBCM0lSR2VuZXJhdG9yOjptYXRl
cmlhbGl6ZVdhc21Db250ZXh0KFByb2NlZHVyZSYgcHJvYywgQmFzaWNCbG9jayogYmxvY2spCiB7
Ci0gICAgaWYgKHVzZUZhc3RUTFNGb3JXYXNtQ29udGV4dCgpKSB7CisgICAgaWYgKHVzZUZhc3RU
TFNGb3JDb250ZXh0KCkpIHsKICAgICAgICAgUGF0Y2hwb2ludFZhbHVlKiBwYXRjaHBvaW50ID0g
YmxvY2stPmFwcGVuZE5ldzxQYXRjaHBvaW50VmFsdWU+KHByb2MsIHBvaW50ZXJUeXBlKCksIE9y
aWdpbigpKTsKICAgICAgICAgaWYgKENDYWxsSGVscGVyczo6bG9hZFdhc21Db250ZXh0TmVlZHNN
YWNyb1NjcmF0Y2hSZWdpc3RlcigpKQogICAgICAgICAgICAgcGF0Y2hwb2ludC0+Y2xvYmJlcihS
ZWdpc3RlclNldDo6bWFjcm9TY3JhdGNoUmVnaXN0ZXJzKCkpOwpAQCAtMjY4LDcgKzI2OSw3IEBA
IFZhbHVlKiBCM0lSR2VuZXJhdG9yOjptYXRlcmlhbGl6ZVdhc21Db24KIAogdm9pZCBCM0lSR2Vu
ZXJhdG9yOjpyZXN0b3JlV2FzbUNvbnRleHQoUHJvY2VkdXJlJiBwcm9jLCBCYXNpY0Jsb2NrKiBi
bG9jaywgVmFsdWUqIGFyZykKIHsKLSAgICBpZiAodXNlRmFzdFRMU0Zvcldhc21Db250ZXh0KCkp
IHsKKyAgICBpZiAodXNlRmFzdFRMU0ZvckNvbnRleHQoKSkgewogICAgICAgICBQYXRjaHBvaW50
VmFsdWUqIHBhdGNocG9pbnQgPSBibG9jay0+YXBwZW5kTmV3PFBhdGNocG9pbnRWYWx1ZT4ocHJv
YywgQjM6OlZvaWQsIE9yaWdpbigpKTsKICAgICAgICAgaWYgKENDYWxsSGVscGVyczo6c3RvcmVX
YXNtQ29udGV4dE5lZWRzTWFjcm9TY3JhdGNoUmVnaXN0ZXIoKSkKICAgICAgICAgICAgIHBhdGNo
cG9pbnQtPmNsb2JiZXIoUmVnaXN0ZXJTZXQ6Om1hY3JvU2NyYXRjaFJlZ2lzdGVycygpKTsKQEAg
LTMyNCw3ICszMjUsNyBAQCBCM0lSR2VuZXJhdG9yOjpCM0lSR2VuZXJhdG9yKFZNJiB2bSwgY29u
CiAgICAgbV9tZW1vcnlCYXNlR1BSID0gcGlubmVkUmVncy5iYXNlTWVtb3J5UG9pbnRlcjsKICAg
ICBtX3dhc21Db250ZXh0R1BSID0gcGlubmVkUmVncy53YXNtQ29udGV4dFBvaW50ZXI7CiAgICAg
bV9wcm9jLnBpblJlZ2lzdGVyKG1fbWVtb3J5QmFzZUdQUik7Ci0gICAgaWYgKCF1c2VGYXN0VExT
Rm9yV2FzbUNvbnRleHQoKSkKKyAgICBpZiAoIXVzZUZhc3RUTFNGb3JDb250ZXh0KCkpCiAgICAg
ICAgIG1fcHJvYy5waW5SZWdpc3RlcihtX3dhc21Db250ZXh0R1BSKTsKICAgICBBU1NFUlQoIXBp
bm5lZFJlZ3Muc2l6ZVJlZ2lzdGVyc1swXS5zaXplT2Zmc2V0KTsKICAgICBtX21lbW9yeVNpemVH
UFIgPSBwaW5uZWRSZWdzLnNpemVSZWdpc3RlcnNbMF0uc2l6ZVJlZ2lzdGVyOwpAQCAtMTE1OSw2
ICsxMTYwLDEwIEBAIHN0YXRpYyB2b2lkIGNyZWF0ZUpTVG9XYXNtV3JhcHBlcihDb21waWwKICAg
ICAgICAgaml0LnN0b3JlUHRyKHJlZywgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKEdQUkluZm86OmNh
bGxGcmFtZVJlZ2lzdGVyLCBvZmZzZXQpKTsKICAgICB9CiAKKyAgICAvLyBGSVhNRTogSlN0b1dh
c20gd3JhcHBlciBzaG91bGQgdGFrZSBKU1dlYkFzc2VtYmx5SW5zdGFuY2UgcG9pbnRlciBhcyBh
biBhcmd1bWVudCBkaXJlY3RseS4KKyAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTcwMTgyCisgICAgR1BSUmVnIHdhc21Db250ZXh0R1BSID0gcGlubmVkUmVn
cy53YXNtQ29udGV4dFBvaW50ZXI7CisKICAgICB7CiAgICAgICAgIENDYWxsSGVscGVyczo6QWRk
cmVzcyBjYWxsZWVGcmFtZSA9IENDYWxsSGVscGVyczo6QWRkcmVzcyhNYWNyb0Fzc2VtYmxlcjo6
c3RhY2tQb2ludGVyUmVnaXN0ZXIsIC1zdGF0aWNfY2FzdDxwdHJkaWZmX3Q+KHNpemVvZihDYWxs
ZXJGcmFtZUFuZFBDKSkpOwogICAgICAgICBudW1HUFJzID0gMDsKQEAgLTExNjcsNyArMTE3Miwy
MiBAQCBzdGF0aWMgdm9pZCBjcmVhdGVKU1RvV2FzbVdyYXBwZXIoQ29tcGlsCiAgICAgICAgIC8v
IHdlIGNhbiB1c2UgdGhpcyBhcyBhIHNjcmF0Y2ggZm9yIG5vdyBzaW5jZSB3ZSBzYXZlZCBpdCBh
Ym92ZS4KICAgICAgICAgR1BSUmVnIHNjcmF0Y2hSZWcgPSBwaW5uZWRSZWdzLmJhc2VNZW1vcnlQ
b2ludGVyOwogCi0gICAgICAgIHB0cmRpZmZfdCBqc09mZnNldCA9IENhbGxGcmFtZVNsb3Q6OnRo
aXNBcmd1bWVudCAqIHNpemVvZih2b2lkKik7CisgICAgICAgIHB0cmRpZmZfdCBqc09mZnNldCA9
IENhbGxGcmFtZVNsb3Q6OnRoaXNBcmd1bWVudCAqIHNpemVvZihFbmNvZGVkSlNWYWx1ZSk7CisK
KyAgICAgICAgLy8gdm1FbnRyeVRvV2FzbSBwYXNzZXMgV2FzbUNvbnRleHQqIGFzIHRoZSBmaXJz
dCBKUyBhcmd1bWVudCB3aGVuIHdlJ3JlCisgICAgICAgIC8vIG5vdCB1c2luZyBmYXN0IFRMUyB0
byBob2xkIHdhc20gY29udGV4dC4KKyAgICAgICAgaWYgKCF1c2VGYXN0VExTRm9yQ29udGV4dCgp
KSB7CisgICAgICAgICAgICBqaXQubG9hZFB0cihDQ2FsbEhlbHBlcnM6OkFkZHJlc3MoR1BSSW5m
bzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIGpzT2Zmc2V0KSwgd2FzbUNvbnRleHRHUFIpOworICAgICAg
ICAgICAganNPZmZzZXQgKz0gc2l6ZW9mKEVuY29kZWRKU1ZhbHVlKTsKKworICAgICAgICAgICAg
LyogRklYTUU6IHJlbW92ZSB2YXJpb3VzIG9mZnNldCBmdW5jdGlvbnMgbm8gbG9uZ2VyIGluIHVz
ZS4KKyAgICAgICAgICAgIGppdC5sb2FkUHRyKENDYWxsSGVscGVyczo6QWRkcmVzcyhHUFJJbmZv
OjpjYWxsRnJhbWVSZWdpc3RlciwgQ2FsbEZyYW1lU2xvdDo6Y2FsbGVlICogc3RhdGljX2Nhc3Q8
aW50PihzaXplb2YoUmVnaXN0ZXIpKSksIHdhc21Db250ZXh0KTsKKyAgICAgICAgICAgIGppdC5h
bmRQdHIoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKE1hcmtlZEJsb2NrOjpibG9ja01hc2sp
LCB3YXNtQ29udGV4dCk7CisgICAgICAgICAgICBqaXQubG9hZFB0cihDQ2FsbEhlbHBlcnM6OkFk
ZHJlc3Mod2FzbUNvbnRleHQsIE1hcmtlZEJsb2NrOjpvZmZzZXRPZlZNKCkpLCB3YXNtQ29udGV4
dCk7CisgICAgICAgICAgICBqaXQubG9hZFB0cihDQ2FsbEhlbHBlcnM6OkFkZHJlc3Mod2FzbUNv
bnRleHQsIFZNOjp3YXNtQ29udGV4dE9mZnNldCgpKSwgd2FzbUNvbnRleHQpOworICAgICAgICAg
ICAgKi8KKyAgICAgICAgfQorCiAgICAgICAgIHB0cmRpZmZfdCB3YXNtT2Zmc2V0ID0gQ2FsbEZy
YW1lOjpoZWFkZXJTaXplSW5SZWdpc3RlcnMgKiBzaXplb2Yodm9pZCopOwogICAgICAgICBmb3Ig
KHVuc2lnbmVkIGkgPSAwOyBpIDwgc2lnbmF0dXJlLT5hcmd1bWVudENvdW50KCk7IGkrKykgewog
ICAgICAgICAgICAgc3dpdGNoIChzaWduYXR1cmUtPmFyZ3VtZW50KGkpKSB7CkBAIC0xMjEzLDI1
ICsxMjMzLDE1IEBAIHN0YXRpYyB2b2lkIGNyZWF0ZUpTVG9XYXNtV3JhcHBlcihDb21waWwKICAg
ICAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICAgICAg
fQogCi0gICAgICAgICAgICBqc09mZnNldCArPSBzaXplb2Yodm9pZCopOworICAgICAgICAgICAg
anNPZmZzZXQgKz0gc2l6ZW9mKEVuY29kZWRKU1ZhbHVlKTsKICAgICAgICAgfQogICAgIH0KIAot
ICAgIC8vIEZJWE1FOiBKU3RvV2FzbSB3cmFwcGVyIHNob3VsZCB0YWtlIEpTV2ViQXNzZW1ibHlJ
bnN0YW5jZSBwb2ludGVyIGFzIGFuIGFyZ3VtZW50IGRpcmVjdGx5LgotICAgIC8vIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzAxODIKLSAgICBHUFJSZWcgd2FzbUNv
bnRleHQgPSBwaW5uZWRSZWdzLndhc21Db250ZXh0UG9pbnRlcjsKLSAgICBpZiAoIXVzZUZhc3RU
TFNGb3JXYXNtQ29udGV4dCgpKSB7Ci0gICAgICAgIGppdC5sb2FkUHRyKENDYWxsSGVscGVyczo6
QWRkcmVzcyhHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgQ2FsbEZyYW1lU2xvdDo6Y2FsbGVl
ICogc3RhdGljX2Nhc3Q8aW50PihzaXplb2YoUmVnaXN0ZXIpKSksIHdhc21Db250ZXh0KTsKLSAg
ICAgICAgaml0LmFuZFB0cihDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoTWFya2VkQmxvY2s6
OmJsb2NrTWFzayksIHdhc21Db250ZXh0KTsKLSAgICAgICAgaml0LmxvYWRQdHIoQ0NhbGxIZWxw
ZXJzOjpBZGRyZXNzKHdhc21Db250ZXh0LCBNYXJrZWRCbG9jazo6b2Zmc2V0T2ZWTSgpKSwgd2Fz
bUNvbnRleHQpOwotICAgICAgICBqaXQubG9hZFB0cihDQ2FsbEhlbHBlcnM6OkFkZHJlc3Mod2Fz
bUNvbnRleHQsIFZNOjp3YXNtQ29udGV4dE9mZnNldCgpKSwgd2FzbUNvbnRleHQpOwotICAgIH0K
LQogICAgIGlmICghIWluZm8ubWVtb3J5KSB7CiAgICAgICAgIEdQUlJlZyBiYXNlTWVtb3J5ID0g
cGlubmVkUmVncy5iYXNlTWVtb3J5UG9pbnRlcjsKIAotICAgICAgICBpZiAoIXVzZUZhc3RUTFNG
b3JXYXNtQ29udGV4dCgpKQotICAgICAgICAgICAgaml0LmxvYWRQdHIoQ0NhbGxIZWxwZXJzOjpB
ZGRyZXNzKHdhc21Db250ZXh0LCBKU1dlYkFzc2VtYmx5SW5zdGFuY2U6Om9mZnNldE9mTWVtb3J5
KCkpLCBiYXNlTWVtb3J5KTsKKyAgICAgICAgaWYgKCF1c2VGYXN0VExTRm9yQ29udGV4dCgpKQor
ICAgICAgICAgICAgaml0LmxvYWRQdHIoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKHdhc21Db250ZXh0
R1BSLCBKU1dlYkFzc2VtYmx5SW5zdGFuY2U6Om9mZnNldE9mTWVtb3J5KCkpLCBiYXNlTWVtb3J5
KTsKICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICBqaXQubG9hZFdhc21Db250ZXh0KGJhc2VN
ZW1vcnkpOwogICAgICAgICAgICAgaml0LmxvYWRQdHIoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKGJh
c2VNZW1vcnksIEpTV2ViQXNzZW1ibHlJbnN0YW5jZTo6b2Zmc2V0T2ZNZW1vcnkoKSksIGJhc2VN
ZW1vcnkpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUNvbnRleHQuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21Db250ZXh0LmNw
cAkocmV2aXNpb24gMjE0NTY2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUNv
bnRleHQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMiwyOCArMzIsMjggQEAKICNpbmNsdWRlIDxt
dXRleD4KICNpbmNsdWRlIDx3dGYvRmFzdFRMUy5oPgogCi1uYW1lc3BhY2UgSlNDIHsKK25hbWVz
cGFjZSBKU0MgeyBuYW1lc3BhY2UgV2FzbSB7CiAKLVdhc21Db250ZXh0KiBsb2FkV2FzbUNvbnRl
eHQoVk0mIHZtKQorQ29udGV4dCogbG9hZENvbnRleHQoVk0mIHZtKQogewogI2lmIEVOQUJMRShG
QVNUX1RMU19KSVQpCi0gICAgaWYgKE9wdGlvbnM6OnVzZVdlYkFzc2VtYmx5RmFzdFRMUygpKQot
ICAgICAgICByZXR1cm4gYml0d2lzZV9jYXN0PFdhc21Db250ZXh0Kj4oX3B0aHJlYWRfZ2V0c3Bl
Y2lmaWNfZGlyZWN0KFdURl9XQVNNX0NPTlRFWFRfS0VZKSk7CisgICAgaWYgKHVzZUZhc3RUTFNG
b3JDb250ZXh0KCkpCisgICAgICAgIHJldHVybiBiaXR3aXNlX2Nhc3Q8Q29udGV4dCo+KF9wdGhy
ZWFkX2dldHNwZWNpZmljX2RpcmVjdChXVEZfV0FTTV9DT05URVhUX0tFWSkpOwogI2VuZGlmCiAg
ICAgLy8gRklYTUU6IFNhdmUgdGhpcyBzdGF0ZSBlbHNld2hlcmUgdG8gYWxsb3cgUElDLiBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY5NzczCiAgICAgcmV0dXJuIHZt
Lndhc21Db250ZXh0OwogfQogCi12b2lkIHN0b3JlV2FzbUNvbnRleHQoVk0mIHZtLCBXYXNtQ29u
dGV4dCogaW5zdGFuY2UpCit2b2lkIHN0b3JlQ29udGV4dChWTSYgdm0sIENvbnRleHQqIGNvbnRl
eHQpCiB7CiAjaWYgRU5BQkxFKEZBU1RfVExTX0pJVCkKLSAgICBpZiAoT3B0aW9uczo6dXNlV2Vi
QXNzZW1ibHlGYXN0VExTKCkpCi0gICAgICAgIF9wdGhyZWFkX3NldHNwZWNpZmljX2RpcmVjdChX
VEZfV0FTTV9DT05URVhUX0tFWSwgYml0d2lzZV9jYXN0PHZvaWQqPihpbnN0YW5jZSkpOworICAg
IGlmICh1c2VGYXN0VExTRm9yQ29udGV4dCgpKQorICAgICAgICBfcHRocmVhZF9zZXRzcGVjaWZp
Y19kaXJlY3QoV1RGX1dBU01fQ09OVEVYVF9LRVksIGJpdHdpc2VfY2FzdDx2b2lkKj4oY29udGV4
dCkpOwogI2VuZGlmCiAgICAgLy8gRklYTUU6IFNhdmUgdGhpcyBzdGF0ZSBlbHNld2hlcmUgdG8g
YWxsb3cgUElDLiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY5Nzcz
Ci0gICAgdm0ud2FzbUNvbnRleHQgPSBpbnN0YW5jZTsKKyAgICB2bS53YXNtQ29udGV4dCA9IGNv
bnRleHQ7CiB9CiAKLX0gLy8gbmFtZXNwYWNlIEpTQworfSB9IC8vIG5hbWVzcGFjZSBKU0M6Oldh
c20KIAogI2VuZGlmIC8vIEVOQUJMRShXRUJBU1NFTUJMWSkKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93YXNtL1dhc21Db250ZXh0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL3dhc20vV2FzbUNvbnRleHQuaAkocmV2aXNpb24gMjE0NTY2KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL3dhc20vV2FzbUNvbnRleHQuaAkod29ya2luZyBjb3B5KQpAQCAtMjcsMTYg
KzI3LDM1IEBACiAKICNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCiAKKyNpbmNsdWRlICJPcHRpb25z
LmgiCisKIG5hbWVzcGFjZSBKU0MgewogCiBjbGFzcyBKU1dlYkFzc2VtYmx5SW5zdGFuY2U7CiBj
bGFzcyBWTTsKIAotdXNpbmcgV2FzbUNvbnRleHQgPSBKU1dlYkFzc2VtYmx5SW5zdGFuY2U7Citu
YW1lc3BhY2UgV2FzbSB7CisKK3VzaW5nIENvbnRleHQgPSBKU1dlYkFzc2VtYmx5SW5zdGFuY2U7
CisKK2lubGluZSBib29sIHVzZUZhc3RUTFMoKQoreworI2lmIEVOQUJMRShGQVNUX1RMU19KSVQp
CisgICAgcmV0dXJuIE9wdGlvbnM6OnVzZVdlYkFzc2VtYmx5RmFzdFRMUygpOworI2Vsc2UKKyAg
ICByZXR1cm4gZmFsc2U7CisjZW5kaWYKK30KKworaW5saW5lIGJvb2wgdXNlRmFzdFRMU0ZvckNv
bnRleHQoKQoreworICAgIHJldHVybiBmYWxzZTsKKyAgICAvL3JldHVybiB1c2VGYXN0VExTKCk7
Cit9CiAKLVdhc21Db250ZXh0KiBsb2FkV2FzbUNvbnRleHQoVk0mKTsKLXZvaWQgc3RvcmVXYXNt
Q29udGV4dChWTSYsIFdhc21Db250ZXh0Kik7CitDb250ZXh0KiBsb2FkQ29udGV4dChWTSYpOwor
dm9pZCBzdG9yZUNvbnRleHQoVk0mLCBDb250ZXh0Kik7CiAKLX0gLy8gbmFtZXNwYWNlIEpTQwor
fSB9IC8vIG5hbWVzcGFjZSBKU0M6Oldhc20KIAogI2VuZGlmIC8vIEVOQUJMRShXRUJBU1NFTUJM
WSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21NZW1vcnlJbmZvcm1hdGlv
bi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbU1lbW9y
eUluZm9ybWF0aW9uLmNwcAkocmV2aXNpb24gMjE0NTY2KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL3dhc20vV2FzbU1lbW9yeUluZm9ybWF0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjks
NiArMjksNyBAQAogI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKIAogI2luY2x1ZGUgIldhc21DYWxs
aW5nQ29udmVudGlvbi5oIgorI2luY2x1ZGUgIldhc21Db250ZXh0LmgiCiAjaW5jbHVkZSAiV2Fz
bU1lbW9yeS5oIgogI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogCkBAIC02NCwxMiAr
NjUsMTIgQEAgY29uc3QgUGlubmVkUmVnaXN0ZXJJbmZvJiBQaW5uZWRSZWdpc3RlcgogICAgICAg
ICAvLyAgICAgICAgc2VlOiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTYyOTUyCiAgICAgICAgIFZlY3Rvcjx1bnNpZ25lZD4gcGlubmVkU2l6ZXMgPSB7IDAgfTsKICAg
ICAgICAgdW5zaWduZWQgbnVtYmVyT2ZQaW5uZWRSZWdpc3RlcnMgPSBwaW5uZWRTaXplcy5zaXpl
KCkgKyAxOwotICAgICAgICBpZiAoIXVzZUZhc3RUTFNGb3JXYXNtQ29udGV4dCgpKQorICAgICAg
ICBpZiAoIXVzZUZhc3RUTFNGb3JDb250ZXh0KCkpCiAgICAgICAgICAgICArK251bWJlck9mUGlu
bmVkUmVnaXN0ZXJzOwogICAgICAgICBWZWN0b3I8R1BSUmVnPiBwaW5uZWRSZWdzID0gZ2V0UGlu
bmVkUmVnaXN0ZXJzKG51bWJlck9mUGlubmVkUmVnaXN0ZXJzKTsKIAogICAgICAgICBiYXNlTWVt
b3J5UG9pbnRlciA9IHBpbm5lZFJlZ3MudGFrZUxhc3QoKTsKLSAgICAgICAgaWYgKCF1c2VGYXN0
VExTRm9yV2FzbUNvbnRleHQoKSkKKyAgICAgICAgaWYgKCF1c2VGYXN0VExTRm9yQ29udGV4dCgp
KQogICAgICAgICAgICAgd2FzbUNvbnRleHRQb2ludGVyID0gcGlubmVkUmVncy50YWtlTGFzdCgp
OwogCiAgICAgICAgIEFTU0VSVChwaW5uZWRTaXplcy5zaXplKCkgPT0gcGlubmVkUmVncy5zaXpl
KCkpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbU1lbW9yeUluZm9ybWF0
aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbU1lbW9y
eUluZm9ybWF0aW9uLmgJKHJldmlzaW9uIDIxNDU2NikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS93YXNtL1dhc21NZW1vcnlJbmZvcm1hdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC04MSwyMCAr
ODEsNiBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9pc0ltcG9ydCB7IGZhbHNlIH07CiB9OwogCi1p
bmxpbmUgYm9vbCB1c2VGYXN0VExTKCkKLXsKLSNpZiBFTkFCTEUoRkFTVF9UTFNfSklUKQotICAg
IHJldHVybiBPcHRpb25zOjp1c2VXZWJBc3NlbWJseUZhc3RUTFMoKTsKLSNlbHNlCi0gICAgcmV0
dXJuIGZhbHNlOwotI2VuZGlmCi19Ci0KLWlubGluZSBib29sIHVzZUZhc3RUTFNGb3JXYXNtQ29u
dGV4dCgpCi17Ci0gICAgcmV0dXJuIHVzZUZhc3RUTFMoKTsKLX0KLQogfSB9IC8vIG5hbWVzcGFj
ZSBKU0M6Oldhc20KIAogI2VuZGlmIC8vIEVOQUJMRShXQVNNKQpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlGdW5jdGlvbi5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlGdW5jdGlvbi5jcHAJKHJl
dmlzaW9uIDIxNDU2NikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2Vt
Ymx5RnVuY3Rpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04Miw2ICs4MiwxMiBAQCBzdGF0aWMg
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsCiAgICAgVHJhY2VTY29wZSB0cmFjZVNj
b3BlKFdlYkFzc2VtYmx5RXhlY3V0ZVN0YXJ0LCBXZWJBc3NlbWJseUV4ZWN1dGVFbmQpOwogCiAg
ICAgVmVjdG9yPEpTVmFsdWU+IGJveGVkQXJnczsKKyAgICBXYXNtOjpDb250ZXh0KiB3YXNtQ29u
dGV4dCA9IHdhc21GdW5jdGlvbi0+aW5zdGFuY2UoKTsKKyAgICAvLyBXZSBuZWVkIGEgd2F5IG9m
IHBhc3NpbmcgaW4gdGhlIGNvbnRleHQgd2hlbiB3ZSdyZSBub3QgcmVseWluZworICAgIC8vIG9u
IFRMUy4KKyAgICBpZiAoIVdhc206OnVzZUZhc3RUTFNGb3JDb250ZXh0KCkpCisgICAgICAgIGJv
eGVkQXJncy5hcHBlbmQod2FzbUNvbnRleHQpOworCiAgICAgZm9yICh1bnNpZ25lZCBhcmdJbmRl
eCA9IDA7IGFyZ0luZGV4IDwgc2lnbmF0dXJlLT5hcmd1bWVudENvdW50KCk7ICsrYXJnSW5kZXgp
IHsKICAgICAgICAgSlNWYWx1ZSBhcmcgPSBleGVjLT5hcmd1bWVudChhcmdJbmRleCk7CiAgICAg
ICAgIHN3aXRjaCAoc2lnbmF0dXJlLT5hcmd1bWVudChhcmdJbmRleCkpIHsKQEAgLTEyMiwxNiAr
MTI4LDE3IEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGwKICAgICBw
cm90b0NhbGxGcmFtZS5pbml0KG51bGxwdHIsIHdhc21GdW5jdGlvbiwgZmlyc3RBcmd1bWVudCwg
YXJnQ291bnQsIHJlbWFpbmluZ0FyZ3MpOwogCiAgICAgLy8gRklYTUUgRG8gYXdheSB3aXRoIHRo
aXMgZW50aXJlIGZ1bmN0aW9uLCBhbmQgb25seSB1c2UgdGhlIGVudHJ5cG9pbnQgZ2VuZXJhdGVk
IGJ5IEIzLiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY2NDg2Ci0g
ICAgLy8gRklYTUU6IFdlIHdvdWxkIGxpa2UgdG8gbWFrZSBsb2FkV2FzbUNvbnRleHQgYW5kIHN0
b3JlV2FzbUNvbnRleHQgbm8tb3AgaWYgd2UgdXNlIHBpbm5lZCByZWdpc3RlcnMuCisgICAgLy8g
RklYTUU6IFdlIHdvdWxkIGxpa2UgdG8gbWFrZSBXYXNtOjpsb2FkQ29udGV4dCBhbmQgV2FzbTo6
c3RvcmVDb250ZXh0IG5vLW9wIGlmIHdlIHVzZSBwaW5uZWQgcmVnaXN0ZXJzLgogICAgIC8vIEhv
d2V2ZXIsIHdlIHVzZSBWTS53YXNtQ29udGV4dCBmaWVsZCB0byBwYXNzIGluc3RhbmNlIHRvIHdh
c20gZnVuY3Rpb24ncyBKUyBnbHVlIGNvZGUuCiAgICAgLy8gV2Ugc2hvdWxkIHBhc3MgSlNXZWJB
c3NlbWJseUluc3RhbmNlIGRpcmVjdGx5IHRvIHZtRW50cnlUb1dhc20uCiAgICAgLy8gaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3MDE4MgotICAgIEpTV2ViQXNzZW1i
bHlJbnN0YW5jZSogcHJldkpTV2ViQXNzZW1ibHlJbnN0YW5jZSA9IGxvYWRXYXNtQ29udGV4dCh2
bSk7Ci0gICAgc3RvcmVXYXNtQ29udGV4dCh2bSwgd2FzbUZ1bmN0aW9uLT5pbnN0YW5jZSgpKTsK
KyAgICBKU1dlYkFzc2VtYmx5SW5zdGFuY2UqIHByZXZXYXNtQ29udGV4dCA9IFdhc206OmxvYWRD
b250ZXh0KHZtKTsKKyAgICBXYXNtOjpzdG9yZUNvbnRleHQodm0sIHdhc21Db250ZXh0KTsKICAg
ICBBU1NFUlQod2FzbUZ1bmN0aW9uLT5pbnN0YW5jZSgpKTsKLSAgICBBU1NFUlQod2FzbUZ1bmN0
aW9uLT5pbnN0YW5jZSgpID09IGxvYWRXYXNtQ29udGV4dCh2bSkpOworICAgIEFTU0VSVCh3YXNt
RnVuY3Rpb24tPmluc3RhbmNlKCkgPT0gV2FzbTo6bG9hZENvbnRleHQodm0pKTsKICAgICBFbmNv
ZGVkSlNWYWx1ZSByYXdSZXN1bHQgPSB2bUVudHJ5VG9XYXNtKHdhc21GdW5jdGlvbi0+anNFbnRy
eXBvaW50KCksICZ2bSwgJnByb3RvQ2FsbEZyYW1lKTsKLSAgICBzdG9yZVdhc21Db250ZXh0KHZt
LCBwcmV2SlNXZWJBc3NlbWJseUluc3RhbmNlKTsKKyAgICB3YXNtQ29udGV4dC0+dXNlKCk7IC8v
IE5lZWQgdG8gbWFrZSBzdXJlIHRoaXMgaXMgaW4gYSByZWdpc3RlciBvciBvbiB0aGUgc3RhY2sg
c2luY2UgaXQncyBzdG9yZWQgaW4gVmVjdG9yPEpTVmFsdWU+LgorICAgIFdhc206OnN0b3JlQ29u
dGV4dCh2bSwgcHJldldhc21Db250ZXh0KTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3Bl
LCB7IH0pOwogCiAgICAgc3dpdGNoIChzaWduYXR1cmUtPnJldHVyblR5cGUoKSkgewo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>305807</attachid>
            <date>2017-03-29 16:57:06 -0700</date>
            <delta_ts>2017-03-29 16:58:36 -0700</delta_ts>
            <desc>patch</desc>
            <filename>b-backup.diff</filename>
            <type>text/plain</type>
            <size>17670</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjE0NTgzKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ4IEBA
CisyMDE3LTAzLTI5ICBTYWFtIEJhcmF0aSAgPHNiYXJhdGlAYXBwbGUuY29tPgorCisgICAgICAg
IFdlYkFzc2VtYmx5OiBwYXNzIEpTV2ViQXNzZW1ibHlJbnN0YW5hY2UgdG8gdm1FbnRyeVRvV2Fz
bSB3aGVuIG5vdCB1c2luZyBmYXN0IFRMUworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTcwMTgyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgVGhpcyBpcyBvbmUgbW9yZSBzdGVwIGluIHRoZSBkaXJlY3Rpb24g
b2YgUElDLWlmaWVkIFdhc20uCisgICAgICAgIEknbSByZW1vdmluZyBhc3N1bXB0aW9ucyB0aGF0
IGEgd2FzbSBjYWxsZWUgaXMgYSBjZWxsLiBXZSB1c2VkIHRvIHVzZQorICAgICAgICB0aGUgY2Fs
bGVlIHRvIGdldCB0aGUgV2FzbUNvbnRleHQgb2ZmIHRoZSBjYWxsZWUncyBWTS4gSW5zdGVhZCwK
KyAgICAgICAgdGhpcyBwYXRjaCBtYWtlcyBpdCBzbyB0aGF0IHdlIHBhc3MgaW4gdGhlIGNvbnRl
eHQgYXMgYSBwYXJhbWV0ZXIKKyAgICAgICAgdG8gdGhlIEpTIGVudHJ5cG9pbnQuCisKKyAgICAg
ICAgKiBoZWFwL01hcmtlZEJsb2NrLmg6CisgICAgICAgIChKU0M6Ok1hcmtlZEJsb2NrOjpvZmZz
ZXRPZlZNKTogRGVsZXRlZC4KKyAgICAgICAgKiBqaXQvQXNzZW1ibHlIZWxwZXJzLmNwcDoKKyAg
ICAgICAgKEpTQzo6QXNzZW1ibHlIZWxwZXJzOjpsb2FkV2FzbUNvbnRleHQpOgorICAgICAgICAo
SlNDOjpBc3NlbWJseUhlbHBlcnM6OnN0b3JlV2FzbUNvbnRleHQpOgorICAgICAgICAoSlNDOjpB
c3NlbWJseUhlbHBlcnM6OmxvYWRXYXNtQ29udGV4dE5lZWRzTWFjcm9TY3JhdGNoUmVnaXN0ZXIp
OgorICAgICAgICAoSlNDOjpBc3NlbWJseUhlbHBlcnM6OnN0b3JlV2FzbUNvbnRleHROZWVkc01h
Y3JvU2NyYXRjaFJlZ2lzdGVyKToKKyAgICAgICAgKiBqc2MuY3BwOgorICAgICAgICAoZnVuY3Rp
b25UZXN0V2FzbU1vZHVsZUZ1bmN0aW9ucyk6CisgICAgICAgICogcnVudGltZS9WTS5oOgorICAg
ICAgICAoSlNDOjpWTTo6d2FzbUNvbnRleHRPZmZzZXQpOiBEZWxldGVkLgorICAgICAgICAqIHdh
c20vV2FzbUIzSVJHZW5lcmF0b3IuY3BwOgorICAgICAgICAoSlNDOjpXYXNtOjpCM0lSR2VuZXJh
dG9yOjptYXRlcmlhbGl6ZVdhc21Db250ZXh0KToKKyAgICAgICAgKEpTQzo6V2FzbTo6QjNJUkdl
bmVyYXRvcjo6cmVzdG9yZVdhc21Db250ZXh0KToKKyAgICAgICAgKEpTQzo6V2FzbTo6QjNJUkdl
bmVyYXRvcjo6QjNJUkdlbmVyYXRvcik6CisgICAgICAgIChKU0M6Oldhc206OmNyZWF0ZUpTVG9X
YXNtV3JhcHBlcik6CisgICAgICAgICogd2FzbS9XYXNtQ29udGV4dC5jcHA6CisgICAgICAgIChK
U0M6Oldhc206OmxvYWRDb250ZXh0KToKKyAgICAgICAgKEpTQzo6V2FzbTo6c3RvcmVDb250ZXh0
KToKKyAgICAgICAgKEpTQzo6bG9hZFdhc21Db250ZXh0KTogRGVsZXRlZC4KKyAgICAgICAgKEpT
Qzo6c3RvcmVXYXNtQ29udGV4dCk6IERlbGV0ZWQuCisgICAgICAgICogd2FzbS9XYXNtQ29udGV4
dC5oOgorICAgICAgICAoSlNDOjpXYXNtOjp1c2VGYXN0VExTKToKKyAgICAgICAgKEpTQzo6V2Fz
bTo6dXNlRmFzdFRMU0ZvckNvbnRleHQpOgorICAgICAgICAqIHdhc20vV2FzbU1lbW9yeUluZm9y
bWF0aW9uLmNwcDoKKyAgICAgICAgKEpTQzo6V2FzbTo6UGlubmVkUmVnaXN0ZXJJbmZvOjpnZXQp
OgorICAgICAgICAqIHdhc20vV2FzbU1lbW9yeUluZm9ybWF0aW9uLmg6CisgICAgICAgIChKU0M6
Oldhc206OnVzZUZhc3RUTFMpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpXYXNtOjp1c2VGYXN0
VExTRm9yV2FzbUNvbnRleHQpOiBEZWxldGVkLgorICAgICAgICAqIHdhc20vanMvV2ViQXNzZW1i
bHlGdW5jdGlvbi5jcHA6CisgICAgICAgIChKU0M6OmNhbGxXZWJBc3NlbWJseUZ1bmN0aW9uKToK
KwogMjAxNy0wMy0yOSAgU2FhbSBCYXJhdGkgIDxzYmFyYXRpQGFwcGxlLmNvbT4KIAogICAgICAg
ICBMaW5rQnVmZmVyIGFuZCBFeGVjdXRhYmxlQWxsb2NhdG9yIHNob3VsZG4ndCBoYXZlIGFueXRo
aW5nIHRvIGRvIHdpdGggVk0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCShyZXZpc2lvbiAyMTQ1
NjYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NzYsNiArNzYsNyBAQAogI2luY2x1ZGUgIlRlc3RSdW5uZXJVdGlscy5oIgogI2luY2x1ZGUgIlR5
cGVQcm9maWxlckxvZy5oIgogI2luY2x1ZGUgIldhc21GYXVsdFNpZ25hbEhhbmRsZXIuaCIKKyNp
bmNsdWRlICJXYXNtQ29udGV4dC5oIgogI2luY2x1ZGUgIldhc21NZW1vcnkuaCIKICNpbmNsdWRl
ICJXYXNtUGxhbklubGluZXMuaCIKICNpbmNsdWRlICJXYXNtV29ya2xpc3QuaCIKQEAgLTMyMjQs
NiArMzIyNSwxMyBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jCiAg
ICAgICAgICAgICBKU0FycmF5KiBhcmd1bWVudHMgPSBqc0Nhc3Q8SlNBcnJheSo+KHRlc3QtPmdl
dEluZGV4UXVpY2tseSgxKSk7CiAKICAgICAgICAgICAgIE1hcmtlZEFyZ3VtZW50QnVmZmVyIGJv
eGVkQXJnczsKKyAgICAgICAgICAgIGlmICghV2FzbTo6dXNlRmFzdFRMU0ZvckNvbnRleHQoKSkg
eworICAgICAgICAgICAgICAgIC8vIFdoZW4gbm90IHVzaW5nIGZhc3QgVExTLCB0aGUgY29kZSB3
ZSBlbWl0IGV4cGVjdHMgV2FzbTo6Q29udGV4dCoKKyAgICAgICAgICAgICAgICAvLyBhcyB0aGUg
Zmlyc3QgYXJndW1lbnQuIFRoZXNlIHRlc3RzIHRoYXQgdGhpcyBBUEkgc3VwcG9ydHMgZG9uJ3Qg
ZXZlcgorICAgICAgICAgICAgICAgIC8vIHVzZSBhIENvbnRleHQuIFNvIHRoaXMgaXMganVzdCBh
IGhhY2sgdG8gZ2V0IGl0IHRvIG5vdCBiYXJmLgorICAgICAgICAgICAgICAgIC8vIFdlIHJlYWxs
eSBuZWVkIHRvIHJlbW92ZSB0aGlzIEFQSS4KKyAgICAgICAgICAgICAgICBib3hlZEFyZ3MuYXBw
ZW5kKGpzTnVtYmVyKDB4YmFkYmVlZikpOworICAgICAgICAgICAgfQogICAgICAgICAgICAgZm9y
ICh1bnNpZ25lZCBhcmdJbmRleCA9IDA7IGFyZ0luZGV4IDwgYXJndW1lbnRzLT5sZW5ndGgoKTsg
KythcmdJbmRleCkKICAgICAgICAgICAgICAgICBib3hlZEFyZ3MuYXBwZW5kKGJveChleGVjLCB2
bSwgYXJndW1lbnRzLT5nZXRJbmRleFF1aWNrbHkoYXJnSW5kZXgpKSk7CiAKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEJsb2NrLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkQmxvY2suaAkocmV2aXNpb24gMjE0NTY2KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkQmxvY2suaAkod29ya2luZyBjb3B5KQpA
QCAtMjk5LDExICsyOTksNiBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc01hcmtlZFJhdyhjb25zdCB2
b2lkKiBwKTsKICAgICBIZWFwVmVyc2lvbiBtYXJraW5nVmVyc2lvbigpIGNvbnN0IHsgcmV0dXJu
IG1fbWFya2luZ1ZlcnNpb247IH0KIAotICAgIHN0YXRpYyBwdHJkaWZmX3Qgb2Zmc2V0T2ZWTSgp
Ci0gICAgewotICAgICAgICByZXR1cm4gT0JKRUNUX09GRlNFVE9GKE1hcmtlZEJsb2NrLCBtX3Zt
KTsKLSAgICB9Ci0gICAgCiBwcml2YXRlOgogICAgIHN0YXRpYyBjb25zdCBzaXplX3QgYXRvbUFs
aWdubWVudE1hc2sgPSBhdG9tU2l6ZSAtIDE7CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5jcHAJKHJldmlzaW9uIDIxNDU2NikKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMzMsNiArMzMsNyBAQAogI2luY2x1ZGUgIkxpbmtCdWZmZXIuaCIKIAogI2lmIEVOQUJMRShX
RUJBU1NFTUJMWSkKKyNpbmNsdWRlICJXYXNtQ29udGV4dC5oIgogI2luY2x1ZGUgIldhc21NZW1v
cnlJbmZvcm1hdGlvbi5oIgogI2VuZGlmCiAKQEAgLTc3Nyw3ICs3NzgsNyBAQCB2b2lkIEFzc2Vt
Ymx5SGVscGVyczo6ZW1pdENvbnZlcnRWYWx1ZVRvCiB2b2lkIEFzc2VtYmx5SGVscGVyczo6bG9h
ZFdhc21Db250ZXh0KEdQUlJlZyBkc3QpCiB7CiAjaWYgRU5BQkxFKEZBU1RfVExTX0pJVCkKLSAg
ICBpZiAoV2FzbTo6dXNlRmFzdFRMU0Zvcldhc21Db250ZXh0KCkpIHsKKyAgICBpZiAoV2FzbTo6
dXNlRmFzdFRMU0ZvckNvbnRleHQoKSkgewogICAgICAgICBsb2FkRnJvbVRMU1B0cihmYXN0VExT
T2Zmc2V0Rm9yS2V5KFdURl9XQVNNX0NPTlRFWFRfS0VZKSwgZHN0KTsKICAgICAgICAgcmV0dXJu
OwogICAgIH0KQEAgLTc4OCw3ICs3ODksNyBAQCB2b2lkIEFzc2VtYmx5SGVscGVyczo6bG9hZFdh
c21Db250ZXh0KEdQCiB2b2lkIEFzc2VtYmx5SGVscGVyczo6c3RvcmVXYXNtQ29udGV4dChHUFJS
ZWcgc3JjKQogewogI2lmIEVOQUJMRShGQVNUX1RMU19KSVQpCi0gICAgaWYgKFdhc206OnVzZUZh
c3RUTFNGb3JXYXNtQ29udGV4dCgpKSB7CisgICAgaWYgKFdhc206OnVzZUZhc3RUTFNGb3JDb250
ZXh0KCkpIHsKICAgICAgICAgc3RvcmVUb1RMU1B0cihzcmMsIGZhc3RUTFNPZmZzZXRGb3JLZXko
V1RGX1dBU01fQ09OVEVYVF9LRVkpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTc5OSw3
ICs4MDAsNyBAQCB2b2lkIEFzc2VtYmx5SGVscGVyczo6c3RvcmVXYXNtQ29udGV4dChHCiBib29s
IEFzc2VtYmx5SGVscGVyczo6bG9hZFdhc21Db250ZXh0TmVlZHNNYWNyb1NjcmF0Y2hSZWdpc3Rl
cigpCiB7CiAjaWYgRU5BQkxFKEZBU1RfVExTX0pJVCkKLSAgICBpZiAoV2FzbTo6dXNlRmFzdFRM
U0Zvcldhc21Db250ZXh0KCkpCisgICAgaWYgKFdhc206OnVzZUZhc3RUTFNGb3JDb250ZXh0KCkp
CiAgICAgICAgIHJldHVybiBsb2FkRnJvbVRMU1B0ck5lZWRzTWFjcm9TY3JhdGNoUmVnaXN0ZXIo
KTsKICNlbmRpZgogICAgIHJldHVybiBmYWxzZTsKQEAgLTgwOCw3ICs4MDksNyBAQCBib29sIEFz
c2VtYmx5SGVscGVyczo6bG9hZFdhc21Db250ZXh0TmVlCiBib29sIEFzc2VtYmx5SGVscGVyczo6
c3RvcmVXYXNtQ29udGV4dE5lZWRzTWFjcm9TY3JhdGNoUmVnaXN0ZXIoKQogewogI2lmIEVOQUJM
RShGQVNUX1RMU19KSVQpCi0gICAgaWYgKFdhc206OnVzZUZhc3RUTFNGb3JXYXNtQ29udGV4dCgp
KQorICAgIGlmIChXYXNtOjp1c2VGYXN0VExTRm9yQ29udGV4dCgpKQogICAgICAgICByZXR1cm4g
c3RvcmVUb1RMU1B0ck5lZWRzTWFjcm9TY3JhdGNoUmVnaXN0ZXIoKTsKICNlbmRpZgogICAgIHJl
dHVybiBmYWxzZTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaAkocmV2aXNpb24g
MjE0NTY2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaAkod29ya2luZyBj
b3B5KQpAQCAtNDkxLDExICs0OTEsNiBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBPQkpFQ1Rf
T0ZGU0VUT0YoVk0sIHRhcmdldE1hY2hpbmVQQ0ZvclRocm93KTsKICAgICB9CiAKLSAgICBzdGF0
aWMgcHRyZGlmZl90IHdhc21Db250ZXh0T2Zmc2V0KCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBP
QkpFQ1RfT0ZGU0VUT0YoVk0sIHdhc21Db250ZXh0KTsKLSAgICB9Ci0KICAgICB2b2lkIHJlc3Rv
cmVQcmV2aW91c0V4Y2VwdGlvbihFeGNlcHRpb24qIGV4Y2VwdGlvbikgeyBzZXRFeGNlcHRpb24o
ZXhjZXB0aW9uKTsgfQogCiAgICAgdm9pZCBjbGVhckxhc3RFeGNlcHRpb24oKSB7IG1fbGFzdEV4
Y2VwdGlvbiA9IG51bGxwdHI7IH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dh
c21CM0lSR2VuZXJhdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
d2FzbS9XYXNtQjNJUkdlbmVyYXRvci5jcHAJKHJldmlzaW9uIDIxNDU2NikKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS93YXNtL1dhc21CM0lSR2VuZXJhdG9yLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNTAsNiArNTAsNyBAQAogI2luY2x1ZGUgIkpTV2ViQXNzZW1ibHlSdW50aW1lRXJyb3IuaCIK
ICNpbmNsdWRlICJWaXJ0dWFsUmVnaXN0ZXIuaCIKICNpbmNsdWRlICJXYXNtQ2FsbGluZ0NvbnZl
bnRpb24uaCIKKyNpbmNsdWRlICJXYXNtQ29udGV4dC5oIgogI2luY2x1ZGUgIldhc21FeGNlcHRp
b25UeXBlLmgiCiAjaW5jbHVkZSAiV2FzbUZ1bmN0aW9uUGFyc2VyLmgiCiAjaW5jbHVkZSAiV2Fz
bU1lbW9yeS5oIgpAQCAtMjQ0LDcgKzI0NSw3IEBAIHByaXZhdGU6CiAKIFZhbHVlKiBCM0lSR2Vu
ZXJhdG9yOjptYXRlcmlhbGl6ZVdhc21Db250ZXh0KFByb2NlZHVyZSYgcHJvYywgQmFzaWNCbG9j
ayogYmxvY2spCiB7Ci0gICAgaWYgKHVzZUZhc3RUTFNGb3JXYXNtQ29udGV4dCgpKSB7CisgICAg
aWYgKHVzZUZhc3RUTFNGb3JDb250ZXh0KCkpIHsKICAgICAgICAgUGF0Y2hwb2ludFZhbHVlKiBw
YXRjaHBvaW50ID0gYmxvY2stPmFwcGVuZE5ldzxQYXRjaHBvaW50VmFsdWU+KHByb2MsIHBvaW50
ZXJUeXBlKCksIE9yaWdpbigpKTsKICAgICAgICAgaWYgKENDYWxsSGVscGVyczo6bG9hZFdhc21D
b250ZXh0TmVlZHNNYWNyb1NjcmF0Y2hSZWdpc3RlcigpKQogICAgICAgICAgICAgcGF0Y2hwb2lu
dC0+Y2xvYmJlcihSZWdpc3RlclNldDo6bWFjcm9TY3JhdGNoUmVnaXN0ZXJzKCkpOwpAQCAtMjY4
LDcgKzI2OSw3IEBAIFZhbHVlKiBCM0lSR2VuZXJhdG9yOjptYXRlcmlhbGl6ZVdhc21Db24KIAog
dm9pZCBCM0lSR2VuZXJhdG9yOjpyZXN0b3JlV2FzbUNvbnRleHQoUHJvY2VkdXJlJiBwcm9jLCBC
YXNpY0Jsb2NrKiBibG9jaywgVmFsdWUqIGFyZykKIHsKLSAgICBpZiAodXNlRmFzdFRMU0Zvcldh
c21Db250ZXh0KCkpIHsKKyAgICBpZiAodXNlRmFzdFRMU0ZvckNvbnRleHQoKSkgewogICAgICAg
ICBQYXRjaHBvaW50VmFsdWUqIHBhdGNocG9pbnQgPSBibG9jay0+YXBwZW5kTmV3PFBhdGNocG9p
bnRWYWx1ZT4ocHJvYywgQjM6OlZvaWQsIE9yaWdpbigpKTsKICAgICAgICAgaWYgKENDYWxsSGVs
cGVyczo6c3RvcmVXYXNtQ29udGV4dE5lZWRzTWFjcm9TY3JhdGNoUmVnaXN0ZXIoKSkKICAgICAg
ICAgICAgIHBhdGNocG9pbnQtPmNsb2JiZXIoUmVnaXN0ZXJTZXQ6Om1hY3JvU2NyYXRjaFJlZ2lz
dGVycygpKTsKQEAgLTMyNCw3ICszMjUsNyBAQCBCM0lSR2VuZXJhdG9yOjpCM0lSR2VuZXJhdG9y
KFZNJiB2bSwgY29uCiAgICAgbV9tZW1vcnlCYXNlR1BSID0gcGlubmVkUmVncy5iYXNlTWVtb3J5
UG9pbnRlcjsKICAgICBtX3dhc21Db250ZXh0R1BSID0gcGlubmVkUmVncy53YXNtQ29udGV4dFBv
aW50ZXI7CiAgICAgbV9wcm9jLnBpblJlZ2lzdGVyKG1fbWVtb3J5QmFzZUdQUik7Ci0gICAgaWYg
KCF1c2VGYXN0VExTRm9yV2FzbUNvbnRleHQoKSkKKyAgICBpZiAoIXVzZUZhc3RUTFNGb3JDb250
ZXh0KCkpCiAgICAgICAgIG1fcHJvYy5waW5SZWdpc3RlcihtX3dhc21Db250ZXh0R1BSKTsKICAg
ICBBU1NFUlQoIXBpbm5lZFJlZ3Muc2l6ZVJlZ2lzdGVyc1swXS5zaXplT2Zmc2V0KTsKICAgICBt
X21lbW9yeVNpemVHUFIgPSBwaW5uZWRSZWdzLnNpemVSZWdpc3RlcnNbMF0uc2l6ZVJlZ2lzdGVy
OwpAQCAtMTE1OSw2ICsxMTYwLDggQEAgc3RhdGljIHZvaWQgY3JlYXRlSlNUb1dhc21XcmFwcGVy
KENvbXBpbAogICAgICAgICBqaXQuc3RvcmVQdHIocmVnLCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3Mo
R1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIG9mZnNldCkpOwogICAgIH0KIAorICAgIEdQUlJl
ZyB3YXNtQ29udGV4dEdQUiA9IHBpbm5lZFJlZ3Mud2FzbUNvbnRleHRQb2ludGVyOworCiAgICAg
ewogICAgICAgICBDQ2FsbEhlbHBlcnM6OkFkZHJlc3MgY2FsbGVlRnJhbWUgPSBDQ2FsbEhlbHBl
cnM6OkFkZHJlc3MoTWFjcm9Bc3NlbWJsZXI6OnN0YWNrUG9pbnRlclJlZ2lzdGVyLCAtc3RhdGlj
X2Nhc3Q8cHRyZGlmZl90PihzaXplb2YoQ2FsbGVyRnJhbWVBbmRQQykpKTsKICAgICAgICAgbnVt
R1BScyA9IDA7CkBAIC0xMTY3LDcgKzExNzAsMTUgQEAgc3RhdGljIHZvaWQgY3JlYXRlSlNUb1dh
c21XcmFwcGVyKENvbXBpbAogICAgICAgICAvLyB3ZSBjYW4gdXNlIHRoaXMgYXMgYSBzY3JhdGNo
IGZvciBub3cgc2luY2Ugd2Ugc2F2ZWQgaXQgYWJvdmUuCiAgICAgICAgIEdQUlJlZyBzY3JhdGNo
UmVnID0gcGlubmVkUmVncy5iYXNlTWVtb3J5UG9pbnRlcjsKIAotICAgICAgICBwdHJkaWZmX3Qg
anNPZmZzZXQgPSBDYWxsRnJhbWVTbG90Ojp0aGlzQXJndW1lbnQgKiBzaXplb2Yodm9pZCopOwor
ICAgICAgICBwdHJkaWZmX3QganNPZmZzZXQgPSBDYWxsRnJhbWVTbG90Ojp0aGlzQXJndW1lbnQg
KiBzaXplb2YoRW5jb2RlZEpTVmFsdWUpOworCisgICAgICAgIC8vIHZtRW50cnlUb1dhc20gcGFz
c2VzIFdhc21Db250ZXh0KiBhcyB0aGUgZmlyc3QgSlMgYXJndW1lbnQgd2hlbiB3ZSdyZQorICAg
ICAgICAvLyBub3QgdXNpbmcgZmFzdCBUTFMgdG8gaG9sZCB3YXNtIGNvbnRleHQuCisgICAgICAg
IGlmICghdXNlRmFzdFRMU0ZvckNvbnRleHQoKSkgeworICAgICAgICAgICAgaml0LmxvYWRQdHIo
Q0NhbGxIZWxwZXJzOjpBZGRyZXNzKEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBqc09mZnNl
dCksIHdhc21Db250ZXh0R1BSKTsKKyAgICAgICAgICAgIGpzT2Zmc2V0ICs9IHNpemVvZihFbmNv
ZGVkSlNWYWx1ZSk7CisgICAgICAgIH0KKwogICAgICAgICBwdHJkaWZmX3Qgd2FzbU9mZnNldCA9
IENhbGxGcmFtZTo6aGVhZGVyU2l6ZUluUmVnaXN0ZXJzICogc2l6ZW9mKHZvaWQqKTsKICAgICAg
ICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHNpZ25hdHVyZS0+YXJndW1lbnRDb3VudCgpOyBp
KyspIHsKICAgICAgICAgICAgIHN3aXRjaCAoc2lnbmF0dXJlLT5hcmd1bWVudChpKSkgewpAQCAt
MTIxMywyNSArMTIyNCwxNSBAQCBzdGF0aWMgdm9pZCBjcmVhdGVKU1RvV2FzbVdyYXBwZXIoQ29t
cGlsCiAgICAgICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAg
ICAgICAgIH0KIAotICAgICAgICAgICAganNPZmZzZXQgKz0gc2l6ZW9mKHZvaWQqKTsKKyAgICAg
ICAgICAgIGpzT2Zmc2V0ICs9IHNpemVvZihFbmNvZGVkSlNWYWx1ZSk7CiAgICAgICAgIH0KICAg
ICB9CiAKLSAgICAvLyBGSVhNRTogSlN0b1dhc20gd3JhcHBlciBzaG91bGQgdGFrZSBKU1dlYkFz
c2VtYmx5SW5zdGFuY2UgcG9pbnRlciBhcyBhbiBhcmd1bWVudCBkaXJlY3RseS4KLSAgICAvLyBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTcwMTgyCi0gICAgR1BSUmVn
IHdhc21Db250ZXh0ID0gcGlubmVkUmVncy53YXNtQ29udGV4dFBvaW50ZXI7Ci0gICAgaWYgKCF1
c2VGYXN0VExTRm9yV2FzbUNvbnRleHQoKSkgewotICAgICAgICBqaXQubG9hZFB0cihDQ2FsbEhl
bHBlcnM6OkFkZHJlc3MoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIENhbGxGcmFtZVNsb3Q6
OmNhbGxlZSAqIHN0YXRpY19jYXN0PGludD4oc2l6ZW9mKFJlZ2lzdGVyKSkpLCB3YXNtQ29udGV4
dCk7Ci0gICAgICAgIGppdC5hbmRQdHIoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKE1hcmtl
ZEJsb2NrOjpibG9ja01hc2spLCB3YXNtQ29udGV4dCk7Ci0gICAgICAgIGppdC5sb2FkUHRyKEND
YWxsSGVscGVyczo6QWRkcmVzcyh3YXNtQ29udGV4dCwgTWFya2VkQmxvY2s6Om9mZnNldE9mVk0o
KSksIHdhc21Db250ZXh0KTsKLSAgICAgICAgaml0LmxvYWRQdHIoQ0NhbGxIZWxwZXJzOjpBZGRy
ZXNzKHdhc21Db250ZXh0LCBWTTo6d2FzbUNvbnRleHRPZmZzZXQoKSksIHdhc21Db250ZXh0KTsK
LSAgICB9Ci0KICAgICBpZiAoISFpbmZvLm1lbW9yeSkgewogICAgICAgICBHUFJSZWcgYmFzZU1l
bW9yeSA9IHBpbm5lZFJlZ3MuYmFzZU1lbW9yeVBvaW50ZXI7CiAKLSAgICAgICAgaWYgKCF1c2VG
YXN0VExTRm9yV2FzbUNvbnRleHQoKSkKLSAgICAgICAgICAgIGppdC5sb2FkUHRyKENDYWxsSGVs
cGVyczo6QWRkcmVzcyh3YXNtQ29udGV4dCwgSlNXZWJBc3NlbWJseUluc3RhbmNlOjpvZmZzZXRP
Zk1lbW9yeSgpKSwgYmFzZU1lbW9yeSk7CisgICAgICAgIGlmICghdXNlRmFzdFRMU0ZvckNvbnRl
eHQoKSkKKyAgICAgICAgICAgIGppdC5sb2FkUHRyKENDYWxsSGVscGVyczo6QWRkcmVzcyh3YXNt
Q29udGV4dEdQUiwgSlNXZWJBc3NlbWJseUluc3RhbmNlOjpvZmZzZXRPZk1lbW9yeSgpKSwgYmFz
ZU1lbW9yeSk7CiAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgaml0LmxvYWRXYXNtQ29udGV4
dChiYXNlTWVtb3J5KTsKICAgICAgICAgICAgIGppdC5sb2FkUHRyKENDYWxsSGVscGVyczo6QWRk
cmVzcyhiYXNlTWVtb3J5LCBKU1dlYkFzc2VtYmx5SW5zdGFuY2U6Om9mZnNldE9mTWVtb3J5KCkp
LCBiYXNlTWVtb3J5KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21Db250
ZXh0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQ29u
dGV4dC5jcHAJKHJldmlzaW9uIDIxNDU2NikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNt
L1dhc21Db250ZXh0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzIsMjggKzMyLDI4IEBACiAjaW5j
bHVkZSA8bXV0ZXg+CiAjaW5jbHVkZSA8d3RmL0Zhc3RUTFMuaD4KIAotbmFtZXNwYWNlIEpTQyB7
CituYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIFdhc20gewogCi1XYXNtQ29udGV4dCogbG9hZFdh
c21Db250ZXh0KFZNJiB2bSkKK0NvbnRleHQqIGxvYWRDb250ZXh0KFZNJiB2bSkKIHsKICNpZiBF
TkFCTEUoRkFTVF9UTFNfSklUKQotICAgIGlmIChPcHRpb25zOjp1c2VXZWJBc3NlbWJseUZhc3RU
TFMoKSkKLSAgICAgICAgcmV0dXJuIGJpdHdpc2VfY2FzdDxXYXNtQ29udGV4dCo+KF9wdGhyZWFk
X2dldHNwZWNpZmljX2RpcmVjdChXVEZfV0FTTV9DT05URVhUX0tFWSkpOworICAgIGlmICh1c2VG
YXN0VExTRm9yQ29udGV4dCgpKQorICAgICAgICByZXR1cm4gYml0d2lzZV9jYXN0PENvbnRleHQq
PihfcHRocmVhZF9nZXRzcGVjaWZpY19kaXJlY3QoV1RGX1dBU01fQ09OVEVYVF9LRVkpKTsKICNl
bmRpZgogICAgIC8vIEZJWE1FOiBTYXZlIHRoaXMgc3RhdGUgZWxzZXdoZXJlIHRvIGFsbG93IFBJ
Qy4gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2OTc3MwogICAgIHJl
dHVybiB2bS53YXNtQ29udGV4dDsKIH0KIAotdm9pZCBzdG9yZVdhc21Db250ZXh0KFZNJiB2bSwg
V2FzbUNvbnRleHQqIGluc3RhbmNlKQordm9pZCBzdG9yZUNvbnRleHQoVk0mIHZtLCBDb250ZXh0
KiBjb250ZXh0KQogewogI2lmIEVOQUJMRShGQVNUX1RMU19KSVQpCi0gICAgaWYgKE9wdGlvbnM6
OnVzZVdlYkFzc2VtYmx5RmFzdFRMUygpKQotICAgICAgICBfcHRocmVhZF9zZXRzcGVjaWZpY19k
aXJlY3QoV1RGX1dBU01fQ09OVEVYVF9LRVksIGJpdHdpc2VfY2FzdDx2b2lkKj4oaW5zdGFuY2Up
KTsKKyAgICBpZiAodXNlRmFzdFRMU0ZvckNvbnRleHQoKSkKKyAgICAgICAgX3B0aHJlYWRfc2V0
c3BlY2lmaWNfZGlyZWN0KFdURl9XQVNNX0NPTlRFWFRfS0VZLCBiaXR3aXNlX2Nhc3Q8dm9pZCo+
KGNvbnRleHQpKTsKICNlbmRpZgogICAgIC8vIEZJWE1FOiBTYXZlIHRoaXMgc3RhdGUgZWxzZXdo
ZXJlIHRvIGFsbG93IFBJQy4gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE2OTc3MwotICAgIHZtLndhc21Db250ZXh0ID0gaW5zdGFuY2U7CisgICAgdm0ud2FzbUNvbnRl
eHQgPSBjb250ZXh0OwogfQogCi19IC8vIG5hbWVzcGFjZSBKU0MKK30gfSAvLyBuYW1lc3BhY2Ug
SlNDOjpXYXNtCiAKICNlbmRpZiAvLyBFTkFCTEUoV0VCQVNTRU1CTFkpCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQ29udGV4dC5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS93YXNtL1dhc21Db250ZXh0LmgJKHJldmlzaW9uIDIxNDU2NikKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21Db250ZXh0LmgJKHdvcmtpbmcgY29weSkKQEAg
LTI3LDE2ICsyNywzNCBAQAogCiAjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQogCisjaW5jbHVkZSAi
T3B0aW9ucy5oIgorCiBuYW1lc3BhY2UgSlNDIHsKIAogY2xhc3MgSlNXZWJBc3NlbWJseUluc3Rh
bmNlOwogY2xhc3MgVk07CiAKLXVzaW5nIFdhc21Db250ZXh0ID0gSlNXZWJBc3NlbWJseUluc3Rh
bmNlOworbmFtZXNwYWNlIFdhc20geworCit1c2luZyBDb250ZXh0ID0gSlNXZWJBc3NlbWJseUlu
c3RhbmNlOworCitpbmxpbmUgYm9vbCB1c2VGYXN0VExTKCkKK3sKKyNpZiBFTkFCTEUoRkFTVF9U
TFNfSklUKQorICAgIHJldHVybiBPcHRpb25zOjp1c2VXZWJBc3NlbWJseUZhc3RUTFMoKTsKKyNl
bHNlCisgICAgcmV0dXJuIGZhbHNlOworI2VuZGlmCit9CisKK2lubGluZSBib29sIHVzZUZhc3RU
TFNGb3JDb250ZXh0KCkKK3sKKyAgICByZXR1cm4gdXNlRmFzdFRMUygpOworfQogCi1XYXNtQ29u
dGV4dCogbG9hZFdhc21Db250ZXh0KFZNJik7Ci12b2lkIHN0b3JlV2FzbUNvbnRleHQoVk0mLCBX
YXNtQ29udGV4dCopOworQ29udGV4dCogbG9hZENvbnRleHQoVk0mKTsKK3ZvaWQgc3RvcmVDb250
ZXh0KFZNJiwgQ29udGV4dCopOwogCi19IC8vIG5hbWVzcGFjZSBKU0MKK30gfSAvLyBuYW1lc3Bh
Y2UgSlNDOjpXYXNtCiAKICNlbmRpZiAvLyBFTkFCTEUoV0VCQVNTRU1CTFkpCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtTWVtb3J5SW5mb3JtYXRpb24uY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21NZW1vcnlJbmZvcm1hdGlvbi5j
cHAJKHJldmlzaW9uIDIxNDU2NikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21N
ZW1vcnlJbmZvcm1hdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI5LDYgKzI5LDcgQEAKICNp
ZiBFTkFCTEUoV0VCQVNTRU1CTFkpCiAKICNpbmNsdWRlICJXYXNtQ2FsbGluZ0NvbnZlbnRpb24u
aCIKKyNpbmNsdWRlICJXYXNtQ29udGV4dC5oIgogI2luY2x1ZGUgIldhc21NZW1vcnkuaCIKICNp
bmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KIApAQCAtNjQsMTIgKzY1LDEyIEBAIGNvbnN0
IFBpbm5lZFJlZ2lzdGVySW5mbyYgUGlubmVkUmVnaXN0ZXIKICAgICAgICAgLy8gICAgICAgIHNl
ZTogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2Mjk1MgogICAgICAg
ICBWZWN0b3I8dW5zaWduZWQ+IHBpbm5lZFNpemVzID0geyAwIH07CiAgICAgICAgIHVuc2lnbmVk
IG51bWJlck9mUGlubmVkUmVnaXN0ZXJzID0gcGlubmVkU2l6ZXMuc2l6ZSgpICsgMTsKLSAgICAg
ICAgaWYgKCF1c2VGYXN0VExTRm9yV2FzbUNvbnRleHQoKSkKKyAgICAgICAgaWYgKCF1c2VGYXN0
VExTRm9yQ29udGV4dCgpKQogICAgICAgICAgICAgKytudW1iZXJPZlBpbm5lZFJlZ2lzdGVyczsK
ICAgICAgICAgVmVjdG9yPEdQUlJlZz4gcGlubmVkUmVncyA9IGdldFBpbm5lZFJlZ2lzdGVycyhu
dW1iZXJPZlBpbm5lZFJlZ2lzdGVycyk7CiAKICAgICAgICAgYmFzZU1lbW9yeVBvaW50ZXIgPSBw
aW5uZWRSZWdzLnRha2VMYXN0KCk7Ci0gICAgICAgIGlmICghdXNlRmFzdFRMU0Zvcldhc21Db250
ZXh0KCkpCisgICAgICAgIGlmICghdXNlRmFzdFRMU0ZvckNvbnRleHQoKSkKICAgICAgICAgICAg
IHdhc21Db250ZXh0UG9pbnRlciA9IHBpbm5lZFJlZ3MudGFrZUxhc3QoKTsKIAogICAgICAgICBB
U1NFUlQocGlubmVkU2l6ZXMuc2l6ZSgpID09IHBpbm5lZFJlZ3Muc2l6ZSgpKTsKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21NZW1vcnlJbmZvcm1hdGlvbi5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21NZW1vcnlJbmZvcm1hdGlvbi5o
CShyZXZpc2lvbiAyMTQ1NjYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtTWVt
b3J5SW5mb3JtYXRpb24uaAkod29ya2luZyBjb3B5KQpAQCAtODEsMjAgKzgxLDYgQEAgcHJpdmF0
ZToKICAgICBib29sIG1faXNJbXBvcnQgeyBmYWxzZSB9OwogfTsKIAotaW5saW5lIGJvb2wgdXNl
RmFzdFRMUygpCi17Ci0jaWYgRU5BQkxFKEZBU1RfVExTX0pJVCkKLSAgICByZXR1cm4gT3B0aW9u
czo6dXNlV2ViQXNzZW1ibHlGYXN0VExTKCk7Ci0jZWxzZQotICAgIHJldHVybiBmYWxzZTsKLSNl
bmRpZgotfQotCi1pbmxpbmUgYm9vbCB1c2VGYXN0VExTRm9yV2FzbUNvbnRleHQoKQotewotICAg
IHJldHVybiB1c2VGYXN0VExTKCk7Ci19Ci0KIH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpXYXNtCiAK
ICNlbmRpZiAvLyBFTkFCTEUoV0FTTSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNt
L2pzL1dlYkFzc2VtYmx5RnVuY3Rpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5RnVuY3Rpb24uY3BwCShyZXZpc2lvbiAyMTQ1NjYp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseUZ1bmN0aW9uLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtODIsNiArODIsMTIgQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgY2FsbAogICAgIFRyYWNlU2NvcGUgdHJhY2VTY29wZShXZWJBc3NlbWJs
eUV4ZWN1dGVTdGFydCwgV2ViQXNzZW1ibHlFeGVjdXRlRW5kKTsKIAogICAgIFZlY3RvcjxKU1Zh
bHVlPiBib3hlZEFyZ3M7CisgICAgV2FzbTo6Q29udGV4dCogd2FzbUNvbnRleHQgPSB3YXNtRnVu
Y3Rpb24tPmluc3RhbmNlKCk7CisgICAgLy8gV2hlbiB3ZSBkb24ndCB1c2UgZmFzdCBUTFMgdG8g
c3RvcmUgdGhlIGNvbnRleHQsIHRoZSBqcworICAgIC8vIGVudHJ5IHdyYXBwZXIgZXhwZWN0cyB0
aGUgV2FzbUNvbnRleHQqIGFzIHRoZSBmaXJzdCBhcmd1bWVudC4KKyAgICBpZiAoIVdhc206OnVz
ZUZhc3RUTFNGb3JDb250ZXh0KCkpCisgICAgICAgIGJveGVkQXJncy5hcHBlbmQod2FzbUNvbnRl
eHQpOworCiAgICAgZm9yICh1bnNpZ25lZCBhcmdJbmRleCA9IDA7IGFyZ0luZGV4IDwgc2lnbmF0
dXJlLT5hcmd1bWVudENvdW50KCk7ICsrYXJnSW5kZXgpIHsKICAgICAgICAgSlNWYWx1ZSBhcmcg
PSBleGVjLT5hcmd1bWVudChhcmdJbmRleCk7CiAgICAgICAgIHN3aXRjaCAoc2lnbmF0dXJlLT5h
cmd1bWVudChhcmdJbmRleCkpIHsKQEAgLTEyMiwxNiArMTI4LDE2IEBAIHN0YXRpYyBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGwKICAgICBwcm90b0NhbGxGcmFtZS5pbml0KG51bGxw
dHIsIHdhc21GdW5jdGlvbiwgZmlyc3RBcmd1bWVudCwgYXJnQ291bnQsIHJlbWFpbmluZ0FyZ3Mp
OwogCiAgICAgLy8gRklYTUUgRG8gYXdheSB3aXRoIHRoaXMgZW50aXJlIGZ1bmN0aW9uLCBhbmQg
b25seSB1c2UgdGhlIGVudHJ5cG9pbnQgZ2VuZXJhdGVkIGJ5IEIzLiBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY2NDg2Ci0gICAgLy8gRklYTUU6IFdlIHdvdWxkIGxp
a2UgdG8gbWFrZSBsb2FkV2FzbUNvbnRleHQgYW5kIHN0b3JlV2FzbUNvbnRleHQgbm8tb3AgaWYg
d2UgdXNlIHBpbm5lZCByZWdpc3RlcnMuCi0gICAgLy8gSG93ZXZlciwgd2UgdXNlIFZNLndhc21D
b250ZXh0IGZpZWxkIHRvIHBhc3MgaW5zdGFuY2UgdG8gd2FzbSBmdW5jdGlvbidzIEpTIGdsdWUg
Y29kZS4KLSAgICAvLyBXZSBzaG91bGQgcGFzcyBKU1dlYkFzc2VtYmx5SW5zdGFuY2UgZGlyZWN0
bHkgdG8gdm1FbnRyeVRvV2FzbS4KLSAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTcwMTgyCi0gICAgSlNXZWJBc3NlbWJseUluc3RhbmNlKiBwcmV2SlNXZWJB
c3NlbWJseUluc3RhbmNlID0gbG9hZFdhc21Db250ZXh0KHZtKTsKLSAgICBzdG9yZVdhc21Db250
ZXh0KHZtLCB3YXNtRnVuY3Rpb24tPmluc3RhbmNlKCkpOworICAgIFdhc206OkNvbnRleHQqIHBy
ZXZXYXNtQ29udGV4dCA9IFdhc206OmxvYWRDb250ZXh0KHZtKTsKKyAgICBXYXNtOjpzdG9yZUNv
bnRleHQodm0sIHdhc21Db250ZXh0KTsKICAgICBBU1NFUlQod2FzbUZ1bmN0aW9uLT5pbnN0YW5j
ZSgpKTsKLSAgICBBU1NFUlQod2FzbUZ1bmN0aW9uLT5pbnN0YW5jZSgpID09IGxvYWRXYXNtQ29u
dGV4dCh2bSkpOworICAgIEFTU0VSVCh3YXNtRnVuY3Rpb24tPmluc3RhbmNlKCkgPT0gV2FzbTo6
bG9hZENvbnRleHQodm0pKTsKICAgICBFbmNvZGVkSlNWYWx1ZSByYXdSZXN1bHQgPSB2bUVudHJ5
VG9XYXNtKHdhc21GdW5jdGlvbi0+anNFbnRyeXBvaW50KCksICZ2bSwgJnByb3RvQ2FsbEZyYW1l
KTsKLSAgICBzdG9yZVdhc21Db250ZXh0KHZtLCBwcmV2SlNXZWJBc3NlbWJseUluc3RhbmNlKTsK
KyAgICAvLyBXZSBuZWVkIHRvIG1ha2Ugc3VyZSB0aGlzIGlzIGluIGEgcmVnaXN0ZXIgb3Igb24g
dGhlIHN0YWNrIHNpbmNlIGl0J3Mgc3RvcmVkIGluIFZlY3RvcjxKU1ZhbHVlPi4KKyAgICAvLyBU
aGlzIHByb2JhYmx5IGlzbid0IHN0cmljdGx5IG5lY2Vzc2FyeSwgc2luY2UgdGhlIFdlYkFzc2Vt
Ymx5RnVuY3Rpb24qIHNob3VsZCBrZWVwIHRoZSBpbnN0YW5jZQorICAgIC8vIGFsaXZlLiBCdXQg
aXQncyBnb29kIGh5Z2llbmUuCisgICAgd2FzbUNvbnRleHQtPnVzZSgpOyAKKyAgICBXYXNtOjpz
dG9yZUNvbnRleHQodm0sIHByZXZXYXNtQ29udGV4dCk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElP
TihzY29wZSwgeyB9KTsKIAogICAgIHN3aXRjaCAoc2lnbmF0dXJlLT5yZXR1cm5UeXBlKCkpIHsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>305808</attachid>
            <date>2017-03-29 16:58:36 -0700</date>
            <delta_ts>2017-03-29 17:20:06 -0700</delta_ts>
            <desc>patch</desc>
            <filename>b-backup.diff</filename>
            <type>text/plain</type>
            <size>17678</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjE0NTgzKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ4IEBA
CisyMDE3LTAzLTI5ICBTYWFtIEJhcmF0aSAgPHNiYXJhdGlAYXBwbGUuY29tPgorCisgICAgICAg
IFdlYkFzc2VtYmx5OiBwYXNzIEpTV2ViQXNzZW1ibHlJbnN0YW5hY2UgdG8gdm1FbnRyeVRvV2Fz
bSB3aGVuIG5vdCB1c2luZyBmYXN0IFRMUworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTcwMTgyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgVGhpcyBpcyBvbmUgbW9yZSBzdGVwIGluIHRoZSBkaXJlY3Rpb24g
b2YgUElDLWlmaWVkIFdhc20uCisgICAgICAgIEknbSByZW1vdmluZyBhc3N1bXB0aW9ucyB0aGF0
IGEgd2FzbSBjYWxsZWUgaXMgYSBjZWxsLiBXZSB1c2VkIHRvIHVzZQorICAgICAgICB0aGUgY2Fs
bGVlIHRvIGdldCB0aGUgV2FzbUNvbnRleHQgb2ZmIHRoZSBjYWxsZWUncyBWTS4gSW5zdGVhZCwK
KyAgICAgICAgdGhpcyBwYXRjaCBtYWtlcyBpdCBzbyB0aGF0IHdlIHBhc3MgaW4gdGhlIGNvbnRl
eHQgYXMgYSBwYXJhbWV0ZXIKKyAgICAgICAgdG8gdGhlIEpTIGVudHJ5cG9pbnQuCisKKyAgICAg
ICAgKiBoZWFwL01hcmtlZEJsb2NrLmg6CisgICAgICAgIChKU0M6Ok1hcmtlZEJsb2NrOjpvZmZz
ZXRPZlZNKTogRGVsZXRlZC4KKyAgICAgICAgKiBqaXQvQXNzZW1ibHlIZWxwZXJzLmNwcDoKKyAg
ICAgICAgKEpTQzo6QXNzZW1ibHlIZWxwZXJzOjpsb2FkV2FzbUNvbnRleHQpOgorICAgICAgICAo
SlNDOjpBc3NlbWJseUhlbHBlcnM6OnN0b3JlV2FzbUNvbnRleHQpOgorICAgICAgICAoSlNDOjpB
c3NlbWJseUhlbHBlcnM6OmxvYWRXYXNtQ29udGV4dE5lZWRzTWFjcm9TY3JhdGNoUmVnaXN0ZXIp
OgorICAgICAgICAoSlNDOjpBc3NlbWJseUhlbHBlcnM6OnN0b3JlV2FzbUNvbnRleHROZWVkc01h
Y3JvU2NyYXRjaFJlZ2lzdGVyKToKKyAgICAgICAgKiBqc2MuY3BwOgorICAgICAgICAoZnVuY3Rp
b25UZXN0V2FzbU1vZHVsZUZ1bmN0aW9ucyk6CisgICAgICAgICogcnVudGltZS9WTS5oOgorICAg
ICAgICAoSlNDOjpWTTo6d2FzbUNvbnRleHRPZmZzZXQpOiBEZWxldGVkLgorICAgICAgICAqIHdh
c20vV2FzbUIzSVJHZW5lcmF0b3IuY3BwOgorICAgICAgICAoSlNDOjpXYXNtOjpCM0lSR2VuZXJh
dG9yOjptYXRlcmlhbGl6ZVdhc21Db250ZXh0KToKKyAgICAgICAgKEpTQzo6V2FzbTo6QjNJUkdl
bmVyYXRvcjo6cmVzdG9yZVdhc21Db250ZXh0KToKKyAgICAgICAgKEpTQzo6V2FzbTo6QjNJUkdl
bmVyYXRvcjo6QjNJUkdlbmVyYXRvcik6CisgICAgICAgIChKU0M6Oldhc206OmNyZWF0ZUpTVG9X
YXNtV3JhcHBlcik6CisgICAgICAgICogd2FzbS9XYXNtQ29udGV4dC5jcHA6CisgICAgICAgIChK
U0M6Oldhc206OmxvYWRDb250ZXh0KToKKyAgICAgICAgKEpTQzo6V2FzbTo6c3RvcmVDb250ZXh0
KToKKyAgICAgICAgKEpTQzo6bG9hZFdhc21Db250ZXh0KTogRGVsZXRlZC4KKyAgICAgICAgKEpT
Qzo6c3RvcmVXYXNtQ29udGV4dCk6IERlbGV0ZWQuCisgICAgICAgICogd2FzbS9XYXNtQ29udGV4
dC5oOgorICAgICAgICAoSlNDOjpXYXNtOjp1c2VGYXN0VExTKToKKyAgICAgICAgKEpTQzo6V2Fz
bTo6dXNlRmFzdFRMU0ZvckNvbnRleHQpOgorICAgICAgICAqIHdhc20vV2FzbU1lbW9yeUluZm9y
bWF0aW9uLmNwcDoKKyAgICAgICAgKEpTQzo6V2FzbTo6UGlubmVkUmVnaXN0ZXJJbmZvOjpnZXQp
OgorICAgICAgICAqIHdhc20vV2FzbU1lbW9yeUluZm9ybWF0aW9uLmg6CisgICAgICAgIChKU0M6
Oldhc206OnVzZUZhc3RUTFMpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpXYXNtOjp1c2VGYXN0
VExTRm9yV2FzbUNvbnRleHQpOiBEZWxldGVkLgorICAgICAgICAqIHdhc20vanMvV2ViQXNzZW1i
bHlGdW5jdGlvbi5jcHA6CisgICAgICAgIChKU0M6OmNhbGxXZWJBc3NlbWJseUZ1bmN0aW9uKToK
KwogMjAxNy0wMy0yOSAgU2FhbSBCYXJhdGkgIDxzYmFyYXRpQGFwcGxlLmNvbT4KIAogICAgICAg
ICBMaW5rQnVmZmVyIGFuZCBFeGVjdXRhYmxlQWxsb2NhdG9yIHNob3VsZG4ndCBoYXZlIGFueXRo
aW5nIHRvIGRvIHdpdGggVk0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCShyZXZpc2lvbiAyMTQ1
NjYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NzYsNiArNzYsNyBAQAogI2luY2x1ZGUgIlRlc3RSdW5uZXJVdGlscy5oIgogI2luY2x1ZGUgIlR5
cGVQcm9maWxlckxvZy5oIgogI2luY2x1ZGUgIldhc21GYXVsdFNpZ25hbEhhbmRsZXIuaCIKKyNp
bmNsdWRlICJXYXNtQ29udGV4dC5oIgogI2luY2x1ZGUgIldhc21NZW1vcnkuaCIKICNpbmNsdWRl
ICJXYXNtUGxhbklubGluZXMuaCIKICNpbmNsdWRlICJXYXNtV29ya2xpc3QuaCIKQEAgLTMyMjQs
NiArMzIyNSwxMyBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jCiAg
ICAgICAgICAgICBKU0FycmF5KiBhcmd1bWVudHMgPSBqc0Nhc3Q8SlNBcnJheSo+KHRlc3QtPmdl
dEluZGV4UXVpY2tseSgxKSk7CiAKICAgICAgICAgICAgIE1hcmtlZEFyZ3VtZW50QnVmZmVyIGJv
eGVkQXJnczsKKyAgICAgICAgICAgIGlmICghV2FzbTo6dXNlRmFzdFRMU0ZvckNvbnRleHQoKSkg
eworICAgICAgICAgICAgICAgIC8vIFdoZW4gbm90IHVzaW5nIGZhc3QgVExTLCB0aGUgY29kZSB3
ZSBlbWl0IGV4cGVjdHMgV2FzbTo6Q29udGV4dCoKKyAgICAgICAgICAgICAgICAvLyBhcyB0aGUg
Zmlyc3QgYXJndW1lbnQuIFRoZXNlIHRlc3RzIHRoYXQgdGhpcyBBUEkgc3VwcG9ydHMgZG9uJ3Qg
ZXZlcgorICAgICAgICAgICAgICAgIC8vIHVzZSBhIENvbnRleHQuIFNvIHRoaXMgaXMganVzdCBh
IGhhY2sgdG8gZ2V0IGl0IHRvIG5vdCBiYXJmLgorICAgICAgICAgICAgICAgIC8vIFdlIHJlYWxs
eSBuZWVkIHRvIHJlbW92ZSB0aGlzIEFQSS4KKyAgICAgICAgICAgICAgICBib3hlZEFyZ3MuYXBw
ZW5kKGpzTnVtYmVyKDB4YmFkYmVlZikpOworICAgICAgICAgICAgfQogICAgICAgICAgICAgZm9y
ICh1bnNpZ25lZCBhcmdJbmRleCA9IDA7IGFyZ0luZGV4IDwgYXJndW1lbnRzLT5sZW5ndGgoKTsg
KythcmdJbmRleCkKICAgICAgICAgICAgICAgICBib3hlZEFyZ3MuYXBwZW5kKGJveChleGVjLCB2
bSwgYXJndW1lbnRzLT5nZXRJbmRleFF1aWNrbHkoYXJnSW5kZXgpKSk7CiAKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEJsb2NrLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkQmxvY2suaAkocmV2aXNpb24gMjE0NTY2KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkQmxvY2suaAkod29ya2luZyBjb3B5KQpA
QCAtMjk5LDExICsyOTksNiBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc01hcmtlZFJhdyhjb25zdCB2
b2lkKiBwKTsKICAgICBIZWFwVmVyc2lvbiBtYXJraW5nVmVyc2lvbigpIGNvbnN0IHsgcmV0dXJu
IG1fbWFya2luZ1ZlcnNpb247IH0KIAotICAgIHN0YXRpYyBwdHJkaWZmX3Qgb2Zmc2V0T2ZWTSgp
Ci0gICAgewotICAgICAgICByZXR1cm4gT0JKRUNUX09GRlNFVE9GKE1hcmtlZEJsb2NrLCBtX3Zt
KTsKLSAgICB9Ci0gICAgCiBwcml2YXRlOgogICAgIHN0YXRpYyBjb25zdCBzaXplX3QgYXRvbUFs
aWdubWVudE1hc2sgPSBhdG9tU2l6ZSAtIDE7CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5jcHAJKHJldmlzaW9uIDIxNDU2NikKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMzMsNiArMzMsNyBAQAogI2luY2x1ZGUgIkxpbmtCdWZmZXIuaCIKIAogI2lmIEVOQUJMRShX
RUJBU1NFTUJMWSkKKyNpbmNsdWRlICJXYXNtQ29udGV4dC5oIgogI2luY2x1ZGUgIldhc21NZW1v
cnlJbmZvcm1hdGlvbi5oIgogI2VuZGlmCiAKQEAgLTc3Nyw3ICs3NzgsNyBAQCB2b2lkIEFzc2Vt
Ymx5SGVscGVyczo6ZW1pdENvbnZlcnRWYWx1ZVRvCiB2b2lkIEFzc2VtYmx5SGVscGVyczo6bG9h
ZFdhc21Db250ZXh0KEdQUlJlZyBkc3QpCiB7CiAjaWYgRU5BQkxFKEZBU1RfVExTX0pJVCkKLSAg
ICBpZiAoV2FzbTo6dXNlRmFzdFRMU0Zvcldhc21Db250ZXh0KCkpIHsKKyAgICBpZiAoV2FzbTo6
dXNlRmFzdFRMU0ZvckNvbnRleHQoKSkgewogICAgICAgICBsb2FkRnJvbVRMU1B0cihmYXN0VExT
T2Zmc2V0Rm9yS2V5KFdURl9XQVNNX0NPTlRFWFRfS0VZKSwgZHN0KTsKICAgICAgICAgcmV0dXJu
OwogICAgIH0KQEAgLTc4OCw3ICs3ODksNyBAQCB2b2lkIEFzc2VtYmx5SGVscGVyczo6bG9hZFdh
c21Db250ZXh0KEdQCiB2b2lkIEFzc2VtYmx5SGVscGVyczo6c3RvcmVXYXNtQ29udGV4dChHUFJS
ZWcgc3JjKQogewogI2lmIEVOQUJMRShGQVNUX1RMU19KSVQpCi0gICAgaWYgKFdhc206OnVzZUZh
c3RUTFNGb3JXYXNtQ29udGV4dCgpKSB7CisgICAgaWYgKFdhc206OnVzZUZhc3RUTFNGb3JDb250
ZXh0KCkpIHsKICAgICAgICAgc3RvcmVUb1RMU1B0cihzcmMsIGZhc3RUTFNPZmZzZXRGb3JLZXko
V1RGX1dBU01fQ09OVEVYVF9LRVkpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTc5OSw3
ICs4MDAsNyBAQCB2b2lkIEFzc2VtYmx5SGVscGVyczo6c3RvcmVXYXNtQ29udGV4dChHCiBib29s
IEFzc2VtYmx5SGVscGVyczo6bG9hZFdhc21Db250ZXh0TmVlZHNNYWNyb1NjcmF0Y2hSZWdpc3Rl
cigpCiB7CiAjaWYgRU5BQkxFKEZBU1RfVExTX0pJVCkKLSAgICBpZiAoV2FzbTo6dXNlRmFzdFRM
U0Zvcldhc21Db250ZXh0KCkpCisgICAgaWYgKFdhc206OnVzZUZhc3RUTFNGb3JDb250ZXh0KCkp
CiAgICAgICAgIHJldHVybiBsb2FkRnJvbVRMU1B0ck5lZWRzTWFjcm9TY3JhdGNoUmVnaXN0ZXIo
KTsKICNlbmRpZgogICAgIHJldHVybiBmYWxzZTsKQEAgLTgwOCw3ICs4MDksNyBAQCBib29sIEFz
c2VtYmx5SGVscGVyczo6bG9hZFdhc21Db250ZXh0TmVlCiBib29sIEFzc2VtYmx5SGVscGVyczo6
c3RvcmVXYXNtQ29udGV4dE5lZWRzTWFjcm9TY3JhdGNoUmVnaXN0ZXIoKQogewogI2lmIEVOQUJM
RShGQVNUX1RMU19KSVQpCi0gICAgaWYgKFdhc206OnVzZUZhc3RUTFNGb3JXYXNtQ29udGV4dCgp
KQorICAgIGlmIChXYXNtOjp1c2VGYXN0VExTRm9yQ29udGV4dCgpKQogICAgICAgICByZXR1cm4g
c3RvcmVUb1RMU1B0ck5lZWRzTWFjcm9TY3JhdGNoUmVnaXN0ZXIoKTsKICNlbmRpZgogICAgIHJl
dHVybiBmYWxzZTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaAkocmV2aXNpb24g
MjE0NTY2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaAkod29ya2luZyBj
b3B5KQpAQCAtNDkxLDExICs0OTEsNiBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBPQkpFQ1Rf
T0ZGU0VUT0YoVk0sIHRhcmdldE1hY2hpbmVQQ0ZvclRocm93KTsKICAgICB9CiAKLSAgICBzdGF0
aWMgcHRyZGlmZl90IHdhc21Db250ZXh0T2Zmc2V0KCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBP
QkpFQ1RfT0ZGU0VUT0YoVk0sIHdhc21Db250ZXh0KTsKLSAgICB9Ci0KICAgICB2b2lkIHJlc3Rv
cmVQcmV2aW91c0V4Y2VwdGlvbihFeGNlcHRpb24qIGV4Y2VwdGlvbikgeyBzZXRFeGNlcHRpb24o
ZXhjZXB0aW9uKTsgfQogCiAgICAgdm9pZCBjbGVhckxhc3RFeGNlcHRpb24oKSB7IG1fbGFzdEV4
Y2VwdGlvbiA9IG51bGxwdHI7IH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dh
c21CM0lSR2VuZXJhdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
d2FzbS9XYXNtQjNJUkdlbmVyYXRvci5jcHAJKHJldmlzaW9uIDIxNDU2NikKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS93YXNtL1dhc21CM0lSR2VuZXJhdG9yLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNTAsNiArNTAsNyBAQAogI2luY2x1ZGUgIkpTV2ViQXNzZW1ibHlSdW50aW1lRXJyb3IuaCIK
ICNpbmNsdWRlICJWaXJ0dWFsUmVnaXN0ZXIuaCIKICNpbmNsdWRlICJXYXNtQ2FsbGluZ0NvbnZl
bnRpb24uaCIKKyNpbmNsdWRlICJXYXNtQ29udGV4dC5oIgogI2luY2x1ZGUgIldhc21FeGNlcHRp
b25UeXBlLmgiCiAjaW5jbHVkZSAiV2FzbUZ1bmN0aW9uUGFyc2VyLmgiCiAjaW5jbHVkZSAiV2Fz
bU1lbW9yeS5oIgpAQCAtMjQ0LDcgKzI0NSw3IEBAIHByaXZhdGU6CiAKIFZhbHVlKiBCM0lSR2Vu
ZXJhdG9yOjptYXRlcmlhbGl6ZVdhc21Db250ZXh0KFByb2NlZHVyZSYgcHJvYywgQmFzaWNCbG9j
ayogYmxvY2spCiB7Ci0gICAgaWYgKHVzZUZhc3RUTFNGb3JXYXNtQ29udGV4dCgpKSB7CisgICAg
aWYgKHVzZUZhc3RUTFNGb3JDb250ZXh0KCkpIHsKICAgICAgICAgUGF0Y2hwb2ludFZhbHVlKiBw
YXRjaHBvaW50ID0gYmxvY2stPmFwcGVuZE5ldzxQYXRjaHBvaW50VmFsdWU+KHByb2MsIHBvaW50
ZXJUeXBlKCksIE9yaWdpbigpKTsKICAgICAgICAgaWYgKENDYWxsSGVscGVyczo6bG9hZFdhc21D
b250ZXh0TmVlZHNNYWNyb1NjcmF0Y2hSZWdpc3RlcigpKQogICAgICAgICAgICAgcGF0Y2hwb2lu
dC0+Y2xvYmJlcihSZWdpc3RlclNldDo6bWFjcm9TY3JhdGNoUmVnaXN0ZXJzKCkpOwpAQCAtMjY4
LDcgKzI2OSw3IEBAIFZhbHVlKiBCM0lSR2VuZXJhdG9yOjptYXRlcmlhbGl6ZVdhc21Db24KIAog
dm9pZCBCM0lSR2VuZXJhdG9yOjpyZXN0b3JlV2FzbUNvbnRleHQoUHJvY2VkdXJlJiBwcm9jLCBC
YXNpY0Jsb2NrKiBibG9jaywgVmFsdWUqIGFyZykKIHsKLSAgICBpZiAodXNlRmFzdFRMU0Zvcldh
c21Db250ZXh0KCkpIHsKKyAgICBpZiAodXNlRmFzdFRMU0ZvckNvbnRleHQoKSkgewogICAgICAg
ICBQYXRjaHBvaW50VmFsdWUqIHBhdGNocG9pbnQgPSBibG9jay0+YXBwZW5kTmV3PFBhdGNocG9p
bnRWYWx1ZT4ocHJvYywgQjM6OlZvaWQsIE9yaWdpbigpKTsKICAgICAgICAgaWYgKENDYWxsSGVs
cGVyczo6c3RvcmVXYXNtQ29udGV4dE5lZWRzTWFjcm9TY3JhdGNoUmVnaXN0ZXIoKSkKICAgICAg
ICAgICAgIHBhdGNocG9pbnQtPmNsb2JiZXIoUmVnaXN0ZXJTZXQ6Om1hY3JvU2NyYXRjaFJlZ2lz
dGVycygpKTsKQEAgLTMyNCw3ICszMjUsNyBAQCBCM0lSR2VuZXJhdG9yOjpCM0lSR2VuZXJhdG9y
KFZNJiB2bSwgY29uCiAgICAgbV9tZW1vcnlCYXNlR1BSID0gcGlubmVkUmVncy5iYXNlTWVtb3J5
UG9pbnRlcjsKICAgICBtX3dhc21Db250ZXh0R1BSID0gcGlubmVkUmVncy53YXNtQ29udGV4dFBv
aW50ZXI7CiAgICAgbV9wcm9jLnBpblJlZ2lzdGVyKG1fbWVtb3J5QmFzZUdQUik7Ci0gICAgaWYg
KCF1c2VGYXN0VExTRm9yV2FzbUNvbnRleHQoKSkKKyAgICBpZiAoIXVzZUZhc3RUTFNGb3JDb250
ZXh0KCkpCiAgICAgICAgIG1fcHJvYy5waW5SZWdpc3RlcihtX3dhc21Db250ZXh0R1BSKTsKICAg
ICBBU1NFUlQoIXBpbm5lZFJlZ3Muc2l6ZVJlZ2lzdGVyc1swXS5zaXplT2Zmc2V0KTsKICAgICBt
X21lbW9yeVNpemVHUFIgPSBwaW5uZWRSZWdzLnNpemVSZWdpc3RlcnNbMF0uc2l6ZVJlZ2lzdGVy
OwpAQCAtMTE1OSw2ICsxMTYwLDggQEAgc3RhdGljIHZvaWQgY3JlYXRlSlNUb1dhc21XcmFwcGVy
KENvbXBpbAogICAgICAgICBqaXQuc3RvcmVQdHIocmVnLCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3Mo
R1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIG9mZnNldCkpOwogICAgIH0KIAorICAgIEdQUlJl
ZyB3YXNtQ29udGV4dEdQUiA9IHBpbm5lZFJlZ3Mud2FzbUNvbnRleHRQb2ludGVyOworCiAgICAg
ewogICAgICAgICBDQ2FsbEhlbHBlcnM6OkFkZHJlc3MgY2FsbGVlRnJhbWUgPSBDQ2FsbEhlbHBl
cnM6OkFkZHJlc3MoTWFjcm9Bc3NlbWJsZXI6OnN0YWNrUG9pbnRlclJlZ2lzdGVyLCAtc3RhdGlj
X2Nhc3Q8cHRyZGlmZl90PihzaXplb2YoQ2FsbGVyRnJhbWVBbmRQQykpKTsKICAgICAgICAgbnVt
R1BScyA9IDA7CkBAIC0xMTY3LDcgKzExNzAsMTUgQEAgc3RhdGljIHZvaWQgY3JlYXRlSlNUb1dh
c21XcmFwcGVyKENvbXBpbAogICAgICAgICAvLyB3ZSBjYW4gdXNlIHRoaXMgYXMgYSBzY3JhdGNo
IGZvciBub3cgc2luY2Ugd2Ugc2F2ZWQgaXQgYWJvdmUuCiAgICAgICAgIEdQUlJlZyBzY3JhdGNo
UmVnID0gcGlubmVkUmVncy5iYXNlTWVtb3J5UG9pbnRlcjsKIAotICAgICAgICBwdHJkaWZmX3Qg
anNPZmZzZXQgPSBDYWxsRnJhbWVTbG90Ojp0aGlzQXJndW1lbnQgKiBzaXplb2Yodm9pZCopOwor
ICAgICAgICBwdHJkaWZmX3QganNPZmZzZXQgPSBDYWxsRnJhbWVTbG90Ojp0aGlzQXJndW1lbnQg
KiBzaXplb2YoRW5jb2RlZEpTVmFsdWUpOworCisgICAgICAgIC8vIHZtRW50cnlUb1dhc20gcGFz
c2VzIFdhc206OkNvbnRleHQqIGFzIHRoZSBmaXJzdCBKUyBhcmd1bWVudCB3aGVuIHdlJ3JlCisg
ICAgICAgIC8vIG5vdCB1c2luZyBmYXN0IFRMUyB0byBob2xkIHRoZSBXYXNtOjpDb250ZXh0Ki4K
KyAgICAgICAgaWYgKCF1c2VGYXN0VExTRm9yQ29udGV4dCgpKSB7CisgICAgICAgICAgICBqaXQu
bG9hZFB0cihDQ2FsbEhlbHBlcnM6OkFkZHJlc3MoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIs
IGpzT2Zmc2V0KSwgd2FzbUNvbnRleHRHUFIpOworICAgICAgICAgICAganNPZmZzZXQgKz0gc2l6
ZW9mKEVuY29kZWRKU1ZhbHVlKTsKKyAgICAgICAgfQorCiAgICAgICAgIHB0cmRpZmZfdCB3YXNt
T2Zmc2V0ID0gQ2FsbEZyYW1lOjpoZWFkZXJTaXplSW5SZWdpc3RlcnMgKiBzaXplb2Yodm9pZCop
OwogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgc2lnbmF0dXJlLT5hcmd1bWVudENv
dW50KCk7IGkrKykgewogICAgICAgICAgICAgc3dpdGNoIChzaWduYXR1cmUtPmFyZ3VtZW50KGkp
KSB7CkBAIC0xMjEzLDI1ICsxMjI0LDE1IEBAIHN0YXRpYyB2b2lkIGNyZWF0ZUpTVG9XYXNtV3Jh
cHBlcihDb21waWwKICAgICAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgp
OwogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBqc09mZnNldCArPSBzaXplb2Yodm9pZCop
OworICAgICAgICAgICAganNPZmZzZXQgKz0gc2l6ZW9mKEVuY29kZWRKU1ZhbHVlKTsKICAgICAg
ICAgfQogICAgIH0KIAotICAgIC8vIEZJWE1FOiBKU3RvV2FzbSB3cmFwcGVyIHNob3VsZCB0YWtl
IEpTV2ViQXNzZW1ibHlJbnN0YW5jZSBwb2ludGVyIGFzIGFuIGFyZ3VtZW50IGRpcmVjdGx5Lgot
ICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzAxODIKLSAg
ICBHUFJSZWcgd2FzbUNvbnRleHQgPSBwaW5uZWRSZWdzLndhc21Db250ZXh0UG9pbnRlcjsKLSAg
ICBpZiAoIXVzZUZhc3RUTFNGb3JXYXNtQ29udGV4dCgpKSB7Ci0gICAgICAgIGppdC5sb2FkUHRy
KENDYWxsSGVscGVyczo6QWRkcmVzcyhHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgQ2FsbEZy
YW1lU2xvdDo6Y2FsbGVlICogc3RhdGljX2Nhc3Q8aW50PihzaXplb2YoUmVnaXN0ZXIpKSksIHdh
c21Db250ZXh0KTsKLSAgICAgICAgaml0LmFuZFB0cihDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1Q
dHIoTWFya2VkQmxvY2s6OmJsb2NrTWFzayksIHdhc21Db250ZXh0KTsKLSAgICAgICAgaml0Lmxv
YWRQdHIoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKHdhc21Db250ZXh0LCBNYXJrZWRCbG9jazo6b2Zm
c2V0T2ZWTSgpKSwgd2FzbUNvbnRleHQpOwotICAgICAgICBqaXQubG9hZFB0cihDQ2FsbEhlbHBl
cnM6OkFkZHJlc3Mod2FzbUNvbnRleHQsIFZNOjp3YXNtQ29udGV4dE9mZnNldCgpKSwgd2FzbUNv
bnRleHQpOwotICAgIH0KLQogICAgIGlmICghIWluZm8ubWVtb3J5KSB7CiAgICAgICAgIEdQUlJl
ZyBiYXNlTWVtb3J5ID0gcGlubmVkUmVncy5iYXNlTWVtb3J5UG9pbnRlcjsKIAotICAgICAgICBp
ZiAoIXVzZUZhc3RUTFNGb3JXYXNtQ29udGV4dCgpKQotICAgICAgICAgICAgaml0LmxvYWRQdHIo
Q0NhbGxIZWxwZXJzOjpBZGRyZXNzKHdhc21Db250ZXh0LCBKU1dlYkFzc2VtYmx5SW5zdGFuY2U6
Om9mZnNldE9mTWVtb3J5KCkpLCBiYXNlTWVtb3J5KTsKKyAgICAgICAgaWYgKCF1c2VGYXN0VExT
Rm9yQ29udGV4dCgpKQorICAgICAgICAgICAgaml0LmxvYWRQdHIoQ0NhbGxIZWxwZXJzOjpBZGRy
ZXNzKHdhc21Db250ZXh0R1BSLCBKU1dlYkFzc2VtYmx5SW5zdGFuY2U6Om9mZnNldE9mTWVtb3J5
KCkpLCBiYXNlTWVtb3J5KTsKICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICBqaXQubG9hZFdh
c21Db250ZXh0KGJhc2VNZW1vcnkpOwogICAgICAgICAgICAgaml0LmxvYWRQdHIoQ0NhbGxIZWxw
ZXJzOjpBZGRyZXNzKGJhc2VNZW1vcnksIEpTV2ViQXNzZW1ibHlJbnN0YW5jZTo6b2Zmc2V0T2ZN
ZW1vcnkoKSksIGJhc2VNZW1vcnkpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20v
V2FzbUNvbnRleHQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNt
L1dhc21Db250ZXh0LmNwcAkocmV2aXNpb24gMjE0NTY2KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL3dhc20vV2FzbUNvbnRleHQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMiwyOCArMzIsMjgg
QEAKICNpbmNsdWRlIDxtdXRleD4KICNpbmNsdWRlIDx3dGYvRmFzdFRMUy5oPgogCi1uYW1lc3Bh
Y2UgSlNDIHsKK25hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgV2FzbSB7CiAKLVdhc21Db250ZXh0
KiBsb2FkV2FzbUNvbnRleHQoVk0mIHZtKQorQ29udGV4dCogbG9hZENvbnRleHQoVk0mIHZtKQog
ewogI2lmIEVOQUJMRShGQVNUX1RMU19KSVQpCi0gICAgaWYgKE9wdGlvbnM6OnVzZVdlYkFzc2Vt
Ymx5RmFzdFRMUygpKQotICAgICAgICByZXR1cm4gYml0d2lzZV9jYXN0PFdhc21Db250ZXh0Kj4o
X3B0aHJlYWRfZ2V0c3BlY2lmaWNfZGlyZWN0KFdURl9XQVNNX0NPTlRFWFRfS0VZKSk7CisgICAg
aWYgKHVzZUZhc3RUTFNGb3JDb250ZXh0KCkpCisgICAgICAgIHJldHVybiBiaXR3aXNlX2Nhc3Q8
Q29udGV4dCo+KF9wdGhyZWFkX2dldHNwZWNpZmljX2RpcmVjdChXVEZfV0FTTV9DT05URVhUX0tF
WSkpOwogI2VuZGlmCiAgICAgLy8gRklYTUU6IFNhdmUgdGhpcyBzdGF0ZSBlbHNld2hlcmUgdG8g
YWxsb3cgUElDLiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY5Nzcz
CiAgICAgcmV0dXJuIHZtLndhc21Db250ZXh0OwogfQogCi12b2lkIHN0b3JlV2FzbUNvbnRleHQo
Vk0mIHZtLCBXYXNtQ29udGV4dCogaW5zdGFuY2UpCit2b2lkIHN0b3JlQ29udGV4dChWTSYgdm0s
IENvbnRleHQqIGNvbnRleHQpCiB7CiAjaWYgRU5BQkxFKEZBU1RfVExTX0pJVCkKLSAgICBpZiAo
T3B0aW9uczo6dXNlV2ViQXNzZW1ibHlGYXN0VExTKCkpCi0gICAgICAgIF9wdGhyZWFkX3NldHNw
ZWNpZmljX2RpcmVjdChXVEZfV0FTTV9DT05URVhUX0tFWSwgYml0d2lzZV9jYXN0PHZvaWQqPihp
bnN0YW5jZSkpOworICAgIGlmICh1c2VGYXN0VExTRm9yQ29udGV4dCgpKQorICAgICAgICBfcHRo
cmVhZF9zZXRzcGVjaWZpY19kaXJlY3QoV1RGX1dBU01fQ09OVEVYVF9LRVksIGJpdHdpc2VfY2Fz
dDx2b2lkKj4oY29udGV4dCkpOwogI2VuZGlmCiAgICAgLy8gRklYTUU6IFNhdmUgdGhpcyBzdGF0
ZSBlbHNld2hlcmUgdG8gYWxsb3cgUElDLiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTY5NzczCi0gICAgdm0ud2FzbUNvbnRleHQgPSBpbnN0YW5jZTsKKyAgICB2bS53
YXNtQ29udGV4dCA9IGNvbnRleHQ7CiB9CiAKLX0gLy8gbmFtZXNwYWNlIEpTQworfSB9IC8vIG5h
bWVzcGFjZSBKU0M6Oldhc20KIAogI2VuZGlmIC8vIEVOQUJMRShXRUJBU1NFTUJMWSkKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21Db250ZXh0LmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUNvbnRleHQuaAkocmV2aXNpb24gMjE0NTY2
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUNvbnRleHQuaAkod29ya2luZyBj
b3B5KQpAQCAtMjcsMTYgKzI3LDM0IEBACiAKICNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCiAKKyNp
bmNsdWRlICJPcHRpb25zLmgiCisKIG5hbWVzcGFjZSBKU0MgewogCiBjbGFzcyBKU1dlYkFzc2Vt
Ymx5SW5zdGFuY2U7CiBjbGFzcyBWTTsKIAotdXNpbmcgV2FzbUNvbnRleHQgPSBKU1dlYkFzc2Vt
Ymx5SW5zdGFuY2U7CituYW1lc3BhY2UgV2FzbSB7CisKK3VzaW5nIENvbnRleHQgPSBKU1dlYkFz
c2VtYmx5SW5zdGFuY2U7CisKK2lubGluZSBib29sIHVzZUZhc3RUTFMoKQoreworI2lmIEVOQUJM
RShGQVNUX1RMU19KSVQpCisgICAgcmV0dXJuIE9wdGlvbnM6OnVzZVdlYkFzc2VtYmx5RmFzdFRM
UygpOworI2Vsc2UKKyAgICByZXR1cm4gZmFsc2U7CisjZW5kaWYKK30KKworaW5saW5lIGJvb2wg
dXNlRmFzdFRMU0ZvckNvbnRleHQoKQoreworICAgIHJldHVybiB1c2VGYXN0VExTKCk7Cit9CiAK
LVdhc21Db250ZXh0KiBsb2FkV2FzbUNvbnRleHQoVk0mKTsKLXZvaWQgc3RvcmVXYXNtQ29udGV4
dChWTSYsIFdhc21Db250ZXh0Kik7CitDb250ZXh0KiBsb2FkQ29udGV4dChWTSYpOwordm9pZCBz
dG9yZUNvbnRleHQoVk0mLCBDb250ZXh0Kik7CiAKLX0gLy8gbmFtZXNwYWNlIEpTQworfSB9IC8v
IG5hbWVzcGFjZSBKU0M6Oldhc20KIAogI2VuZGlmIC8vIEVOQUJMRShXRUJBU1NFTUJMWSkKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21NZW1vcnlJbmZvcm1hdGlvbi5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbU1lbW9yeUluZm9y
bWF0aW9uLmNwcAkocmV2aXNpb24gMjE0NTY2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3dh
c20vV2FzbU1lbW9yeUluZm9ybWF0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjksNiArMjks
NyBAQAogI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKIAogI2luY2x1ZGUgIldhc21DYWxsaW5nQ29u
dmVudGlvbi5oIgorI2luY2x1ZGUgIldhc21Db250ZXh0LmgiCiAjaW5jbHVkZSAiV2FzbU1lbW9y
eS5oIgogI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogCkBAIC02NCwxMiArNjUsMTIg
QEAgY29uc3QgUGlubmVkUmVnaXN0ZXJJbmZvJiBQaW5uZWRSZWdpc3RlcgogICAgICAgICAvLyAg
ICAgICAgc2VlOiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYyOTUy
CiAgICAgICAgIFZlY3Rvcjx1bnNpZ25lZD4gcGlubmVkU2l6ZXMgPSB7IDAgfTsKICAgICAgICAg
dW5zaWduZWQgbnVtYmVyT2ZQaW5uZWRSZWdpc3RlcnMgPSBwaW5uZWRTaXplcy5zaXplKCkgKyAx
OwotICAgICAgICBpZiAoIXVzZUZhc3RUTFNGb3JXYXNtQ29udGV4dCgpKQorICAgICAgICBpZiAo
IXVzZUZhc3RUTFNGb3JDb250ZXh0KCkpCiAgICAgICAgICAgICArK251bWJlck9mUGlubmVkUmVn
aXN0ZXJzOwogICAgICAgICBWZWN0b3I8R1BSUmVnPiBwaW5uZWRSZWdzID0gZ2V0UGlubmVkUmVn
aXN0ZXJzKG51bWJlck9mUGlubmVkUmVnaXN0ZXJzKTsKIAogICAgICAgICBiYXNlTWVtb3J5UG9p
bnRlciA9IHBpbm5lZFJlZ3MudGFrZUxhc3QoKTsKLSAgICAgICAgaWYgKCF1c2VGYXN0VExTRm9y
V2FzbUNvbnRleHQoKSkKKyAgICAgICAgaWYgKCF1c2VGYXN0VExTRm9yQ29udGV4dCgpKQogICAg
ICAgICAgICAgd2FzbUNvbnRleHRQb2ludGVyID0gcGlubmVkUmVncy50YWtlTGFzdCgpOwogCiAg
ICAgICAgIEFTU0VSVChwaW5uZWRTaXplcy5zaXplKCkgPT0gcGlubmVkUmVncy5zaXplKCkpOwpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbU1lbW9yeUluZm9ybWF0aW9uLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbU1lbW9yeUluZm9y
bWF0aW9uLmgJKHJldmlzaW9uIDIxNDU2NikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNt
L1dhc21NZW1vcnlJbmZvcm1hdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC04MSwyMCArODEsNiBA
QCBwcml2YXRlOgogICAgIGJvb2wgbV9pc0ltcG9ydCB7IGZhbHNlIH07CiB9OwogCi1pbmxpbmUg
Ym9vbCB1c2VGYXN0VExTKCkKLXsKLSNpZiBFTkFCTEUoRkFTVF9UTFNfSklUKQotICAgIHJldHVy
biBPcHRpb25zOjp1c2VXZWJBc3NlbWJseUZhc3RUTFMoKTsKLSNlbHNlCi0gICAgcmV0dXJuIGZh
bHNlOwotI2VuZGlmCi19Ci0KLWlubGluZSBib29sIHVzZUZhc3RUTFNGb3JXYXNtQ29udGV4dCgp
Ci17Ci0gICAgcmV0dXJuIHVzZUZhc3RUTFMoKTsKLX0KLQogfSB9IC8vIG5hbWVzcGFjZSBKU0M6
Oldhc20KIAogI2VuZGlmIC8vIEVOQUJMRShXQVNNKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL3dhc20vanMvV2ViQXNzZW1ibHlGdW5jdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlGdW5jdGlvbi5jcHAJKHJldmlzaW9u
IDIxNDU2NikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5RnVu
Y3Rpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04Miw2ICs4MiwxMiBAQCBzdGF0aWMgRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsCiAgICAgVHJhY2VTY29wZSB0cmFjZVNjb3BlKFdl
YkFzc2VtYmx5RXhlY3V0ZVN0YXJ0LCBXZWJBc3NlbWJseUV4ZWN1dGVFbmQpOwogCiAgICAgVmVj
dG9yPEpTVmFsdWU+IGJveGVkQXJnczsKKyAgICBXYXNtOjpDb250ZXh0KiB3YXNtQ29udGV4dCA9
IHdhc21GdW5jdGlvbi0+aW5zdGFuY2UoKTsKKyAgICAvLyBXaGVuIHdlIGRvbid0IHVzZSBmYXN0
IFRMUyB0byBzdG9yZSB0aGUgY29udGV4dCwgdGhlIGpzCisgICAgLy8gZW50cnkgd3JhcHBlciBl
eHBlY3RzIHRoZSBXYXNtQ29udGV4dCogYXMgdGhlIGZpcnN0IGFyZ3VtZW50LgorICAgIGlmICgh
V2FzbTo6dXNlRmFzdFRMU0ZvckNvbnRleHQoKSkKKyAgICAgICAgYm94ZWRBcmdzLmFwcGVuZCh3
YXNtQ29udGV4dCk7CisKICAgICBmb3IgKHVuc2lnbmVkIGFyZ0luZGV4ID0gMDsgYXJnSW5kZXgg
PCBzaWduYXR1cmUtPmFyZ3VtZW50Q291bnQoKTsgKythcmdJbmRleCkgewogICAgICAgICBKU1Zh
bHVlIGFyZyA9IGV4ZWMtPmFyZ3VtZW50KGFyZ0luZGV4KTsKICAgICAgICAgc3dpdGNoIChzaWdu
YXR1cmUtPmFyZ3VtZW50KGFyZ0luZGV4KSkgewpAQCAtMTIyLDE2ICsxMjgsMTYgQEAgc3RhdGlj
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2FsbAogICAgIHByb3RvQ2FsbEZyYW1lLmlu
aXQobnVsbHB0ciwgd2FzbUZ1bmN0aW9uLCBmaXJzdEFyZ3VtZW50LCBhcmdDb3VudCwgcmVtYWlu
aW5nQXJncyk7CiAKICAgICAvLyBGSVhNRSBEbyBhd2F5IHdpdGggdGhpcyBlbnRpcmUgZnVuY3Rp
b24sIGFuZCBvbmx5IHVzZSB0aGUgZW50cnlwb2ludCBnZW5lcmF0ZWQgYnkgQjMuIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjY0ODYKLSAgICAvLyBGSVhNRTogV2Ug
d291bGQgbGlrZSB0byBtYWtlIGxvYWRXYXNtQ29udGV4dCBhbmQgc3RvcmVXYXNtQ29udGV4dCBu
by1vcCBpZiB3ZSB1c2UgcGlubmVkIHJlZ2lzdGVycy4KLSAgICAvLyBIb3dldmVyLCB3ZSB1c2Ug
Vk0ud2FzbUNvbnRleHQgZmllbGQgdG8gcGFzcyBpbnN0YW5jZSB0byB3YXNtIGZ1bmN0aW9uJ3Mg
SlMgZ2x1ZSBjb2RlLgotICAgIC8vIFdlIHNob3VsZCBwYXNzIEpTV2ViQXNzZW1ibHlJbnN0YW5j
ZSBkaXJlY3RseSB0byB2bUVudHJ5VG9XYXNtLgotICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xNzAxODIKLSAgICBKU1dlYkFzc2VtYmx5SW5zdGFuY2UqIHBy
ZXZKU1dlYkFzc2VtYmx5SW5zdGFuY2UgPSBsb2FkV2FzbUNvbnRleHQodm0pOwotICAgIHN0b3Jl
V2FzbUNvbnRleHQodm0sIHdhc21GdW5jdGlvbi0+aW5zdGFuY2UoKSk7CisgICAgV2FzbTo6Q29u
dGV4dCogcHJldldhc21Db250ZXh0ID0gV2FzbTo6bG9hZENvbnRleHQodm0pOworICAgIFdhc206
OnN0b3JlQ29udGV4dCh2bSwgd2FzbUNvbnRleHQpOwogICAgIEFTU0VSVCh3YXNtRnVuY3Rpb24t
Pmluc3RhbmNlKCkpOwotICAgIEFTU0VSVCh3YXNtRnVuY3Rpb24tPmluc3RhbmNlKCkgPT0gbG9h
ZFdhc21Db250ZXh0KHZtKSk7CisgICAgQVNTRVJUKHdhc21GdW5jdGlvbi0+aW5zdGFuY2UoKSA9
PSBXYXNtOjpsb2FkQ29udGV4dCh2bSkpOwogICAgIEVuY29kZWRKU1ZhbHVlIHJhd1Jlc3VsdCA9
IHZtRW50cnlUb1dhc20od2FzbUZ1bmN0aW9uLT5qc0VudHJ5cG9pbnQoKSwgJnZtLCAmcHJvdG9D
YWxsRnJhbWUpOwotICAgIHN0b3JlV2FzbUNvbnRleHQodm0sIHByZXZKU1dlYkFzc2VtYmx5SW5z
dGFuY2UpOworICAgIC8vIFdlIG5lZWQgdG8gbWFrZSBzdXJlIHRoaXMgaXMgaW4gYSByZWdpc3Rl
ciBvciBvbiB0aGUgc3RhY2sgc2luY2UgaXQncyBzdG9yZWQgaW4gVmVjdG9yPEpTVmFsdWU+Lgor
ICAgIC8vIFRoaXMgcHJvYmFibHkgaXNuJ3Qgc3RyaWN0bHkgbmVjZXNzYXJ5LCBzaW5jZSB0aGUg
V2ViQXNzZW1ibHlGdW5jdGlvbiogc2hvdWxkIGtlZXAgdGhlIGluc3RhbmNlCisgICAgLy8gYWxp
dmUuIEJ1dCBpdCdzIGdvb2QgaHlnaWVuZS4KKyAgICB3YXNtQ29udGV4dC0+dXNlKCk7IAorICAg
IFdhc206OnN0b3JlQ29udGV4dCh2bSwgcHJldldhc21Db250ZXh0KTsKICAgICBSRVRVUk5fSUZf
RVhDRVBUSU9OKHNjb3BlLCB7IH0pOwogCiAgICAgc3dpdGNoIChzaWduYXR1cmUtPnJldHVyblR5
cGUoKSkgewo=
</data>
<flag name="review"
          id="327215"
          type_id="1"
          status="+"
          setter="mark.lam"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>305811</attachid>
            <date>2017-03-29 17:20:06 -0700</date>
            <delta_ts>2017-03-30 00:29:06 -0700</delta_ts>
            <desc>patch for landing</desc>
            <filename>b-backup.diff</filename>
            <type>text/plain</type>
            <size>17781</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjE0NTg0KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ4IEBA
CisyMDE3LTAzLTI5ICBTYWFtIEJhcmF0aSAgPHNiYXJhdGlAYXBwbGUuY29tPgorCisgICAgICAg
IFdlYkFzc2VtYmx5OiBwYXNzIFdhc206OkNvbnRleHQqIHRvIHZtRW50cnlUb1dhc20gd2hlbiBu
b3QgdXNpbmcgZmFzdCBUTFMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE3MDE4MgorCisgICAgICAgIFJldmlld2VkIGJ5IE1hcmsgTGFtLgorCisgICAg
ICAgIFRoaXMgaXMgb25lIG1vcmUgc3RlcCBpbiB0aGUgZGlyZWN0aW9uIG9mIFBJQy1pZmllZCBX
YXNtLgorICAgICAgICBJJ20gcmVtb3ZpbmcgYXNzdW1wdGlvbnMgdGhhdCBhIHdhc20gY2FsbGVl
IGlzIGEgY2VsbC4gV2UgdXNlZCB0byB1c2UKKyAgICAgICAgdGhlIGNhbGxlZSB0byBnZXQgdGhl
IFdhc21Db250ZXh0IG9mZiB0aGUgY2FsbGVlJ3MgVk0uIEluc3RlYWQsCisgICAgICAgIHRoaXMg
cGF0Y2ggbWFrZXMgaXQgc28gdGhhdCB3ZSBwYXNzIGluIHRoZSBjb250ZXh0IGFzIGEgcGFyYW1l
dGVyCisgICAgICAgIHRvIHRoZSBKUyBlbnRyeXBvaW50LgorCisgICAgICAgICogaGVhcC9NYXJr
ZWRCbG9jay5oOgorICAgICAgICAoSlNDOjpNYXJrZWRCbG9jazo6b2Zmc2V0T2ZWTSk6IERlbGV0
ZWQuCisgICAgICAgICogaml0L0Fzc2VtYmx5SGVscGVycy5jcHA6CisgICAgICAgIChKU0M6OkFz
c2VtYmx5SGVscGVyczo6bG9hZFdhc21Db250ZXh0KToKKyAgICAgICAgKEpTQzo6QXNzZW1ibHlI
ZWxwZXJzOjpzdG9yZVdhc21Db250ZXh0KToKKyAgICAgICAgKEpTQzo6QXNzZW1ibHlIZWxwZXJz
Ojpsb2FkV2FzbUNvbnRleHROZWVkc01hY3JvU2NyYXRjaFJlZ2lzdGVyKToKKyAgICAgICAgKEpT
Qzo6QXNzZW1ibHlIZWxwZXJzOjpzdG9yZVdhc21Db250ZXh0TmVlZHNNYWNyb1NjcmF0Y2hSZWdp
c3Rlcik6CisgICAgICAgICoganNjLmNwcDoKKyAgICAgICAgKGZ1bmN0aW9uVGVzdFdhc21Nb2R1
bGVGdW5jdGlvbnMpOgorICAgICAgICAqIHJ1bnRpbWUvVk0uaDoKKyAgICAgICAgKEpTQzo6Vk06
Ondhc21Db250ZXh0T2Zmc2V0KTogRGVsZXRlZC4KKyAgICAgICAgKiB3YXNtL1dhc21CM0lSR2Vu
ZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6V2FzbTo6QjNJUkdlbmVyYXRvcjo6bWF0ZXJpYWxp
emVXYXNtQ29udGV4dCk6CisgICAgICAgIChKU0M6Oldhc206OkIzSVJHZW5lcmF0b3I6OnJlc3Rv
cmVXYXNtQ29udGV4dCk6CisgICAgICAgIChKU0M6Oldhc206OkIzSVJHZW5lcmF0b3I6OkIzSVJH
ZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpXYXNtOjpjcmVhdGVKU1RvV2FzbVdyYXBwZXIpOgor
ICAgICAgICAqIHdhc20vV2FzbUNvbnRleHQuY3BwOgorICAgICAgICAoSlNDOjpXYXNtOjpsb2Fk
Q29udGV4dCk6CisgICAgICAgIChKU0M6Oldhc206OnN0b3JlQ29udGV4dCk6CisgICAgICAgIChK
U0M6OmxvYWRXYXNtQ29udGV4dCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OnN0b3JlV2FzbUNv
bnRleHQpOiBEZWxldGVkLgorICAgICAgICAqIHdhc20vV2FzbUNvbnRleHQuaDoKKyAgICAgICAg
KEpTQzo6V2FzbTo6dXNlRmFzdFRMUyk6CisgICAgICAgIChKU0M6Oldhc206OnVzZUZhc3RUTFNG
b3JDb250ZXh0KToKKyAgICAgICAgKiB3YXNtL1dhc21NZW1vcnlJbmZvcm1hdGlvbi5jcHA6Cisg
ICAgICAgIChKU0M6Oldhc206OlBpbm5lZFJlZ2lzdGVySW5mbzo6Z2V0KToKKyAgICAgICAgKiB3
YXNtL1dhc21NZW1vcnlJbmZvcm1hdGlvbi5oOgorICAgICAgICAoSlNDOjpXYXNtOjp1c2VGYXN0
VExTKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6V2FzbTo6dXNlRmFzdFRMU0Zvcldhc21Db250
ZXh0KTogRGVsZXRlZC4KKyAgICAgICAgKiB3YXNtL2pzL1dlYkFzc2VtYmx5RnVuY3Rpb24uY3Bw
OgorICAgICAgICAoSlNDOjpjYWxsV2ViQXNzZW1ibHlGdW5jdGlvbik6CisKIDIwMTctMDMtMjkg
IFNhYW0gQmFyYXRpICA8c2JhcmF0aUBhcHBsZS5jb20+CiAKICAgICAgICAgTGlua0J1ZmZlciBh
bmQgRXhlY3V0YWJsZUFsbG9jYXRvciBzaG91bGRuJ3QgaGF2ZSBhbnl0aGluZyB0byBkbyB3aXRo
IFZNCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcAkocmV2aXNpb24gMjE0NTY2KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2pzYy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc1LDYgKzc1LDcgQEAK
ICNpbmNsdWRlICJTdXBlclNhbXBsZXIuaCIKICNpbmNsdWRlICJUZXN0UnVubmVyVXRpbHMuaCIK
ICNpbmNsdWRlICJUeXBlUHJvZmlsZXJMb2cuaCIKKyNpbmNsdWRlICJXYXNtQ29udGV4dC5oIgog
I2luY2x1ZGUgIldhc21GYXVsdFNpZ25hbEhhbmRsZXIuaCIKICNpbmNsdWRlICJXYXNtTWVtb3J5
LmgiCiAjaW5jbHVkZSAiV2FzbVBsYW5JbmxpbmVzLmgiCkBAIC0zMjI0LDYgKzMyMjUsMTMgQEAg
c3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuYwogICAgICAgICAgICAgSlNB
cnJheSogYXJndW1lbnRzID0ganNDYXN0PEpTQXJyYXkqPih0ZXN0LT5nZXRJbmRleFF1aWNrbHko
MSkpOwogCiAgICAgICAgICAgICBNYXJrZWRBcmd1bWVudEJ1ZmZlciBib3hlZEFyZ3M7CisgICAg
ICAgICAgICBpZiAoIVdhc206OnVzZUZhc3RUTFNGb3JDb250ZXh0KCkpIHsKKyAgICAgICAgICAg
ICAgICAvLyBXaGVuIG5vdCB1c2luZyBmYXN0IFRMUywgdGhlIGNvZGUgd2UgZW1pdCBleHBlY3Rz
IFdhc206OkNvbnRleHQqCisgICAgICAgICAgICAgICAgLy8gYXMgdGhlIGZpcnN0IGFyZ3VtZW50
LiBUaGVzZSB0ZXN0cyB0aGF0IHRoaXMgQVBJIHN1cHBvcnRzIGRvbid0IGV2ZXIKKyAgICAgICAg
ICAgICAgICAvLyB1c2UgYSBDb250ZXh0LiBTbyB0aGlzIGlzIGp1c3QgYSBoYWNrIHRvIGdldCBp
dCB0byBub3QgYmFyZi4KKyAgICAgICAgICAgICAgICAvLyBXZSByZWFsbHkgbmVlZCB0byByZW1v
dmUgdGhpcyBBUEkuCisgICAgICAgICAgICAgICAgYm94ZWRBcmdzLmFwcGVuZChqc051bWJlcigw
eGJhZGJlZWYpKTsKKyAgICAgICAgICAgIH0KICAgICAgICAgICAgIGZvciAodW5zaWduZWQgYXJn
SW5kZXggPSAwOyBhcmdJbmRleCA8IGFyZ3VtZW50cy0+bGVuZ3RoKCk7ICsrYXJnSW5kZXgpCiAg
ICAgICAgICAgICAgICAgYm94ZWRBcmdzLmFwcGVuZChib3goZXhlYywgdm0sIGFyZ3VtZW50cy0+
Z2V0SW5kZXhRdWlja2x5KGFyZ0luZGV4KSkpOwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaGVhcC9NYXJrZWRCbG9jay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9oZWFwL01hcmtlZEJsb2NrLmgJKHJldmlzaW9uIDIxNDU2NikKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9oZWFwL01hcmtlZEJsb2NrLmgJKHdvcmtpbmcgY29weSkKQEAgLTI5OSwxMSArMjk5
LDYgQEAgcHVibGljOgogICAgIGJvb2wgaXNNYXJrZWRSYXcoY29uc3Qgdm9pZCogcCk7CiAgICAg
SGVhcFZlcnNpb24gbWFya2luZ1ZlcnNpb24oKSBjb25zdCB7IHJldHVybiBtX21hcmtpbmdWZXJz
aW9uOyB9CiAKLSAgICBzdGF0aWMgcHRyZGlmZl90IG9mZnNldE9mVk0oKQotICAgIHsKLSAgICAg
ICAgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihNYXJrZWRCbG9jaywgbV92bSk7Ci0gICAgfQotICAg
IAogcHJpdmF0ZToKICAgICBzdGF0aWMgY29uc3Qgc2l6ZV90IGF0b21BbGlnbm1lbnRNYXNrID0g
YXRvbVNpemUgLSAxOwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5
SGVscGVycy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3Nl
bWJseUhlbHBlcnMuY3BwCShyZXZpc2lvbiAyMTQ1NjYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0Fzc2VtYmx5SGVscGVycy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMzLDYgKzMzLDcg
QEAKICNpbmNsdWRlICJMaW5rQnVmZmVyLmgiCiAKICNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCisj
aW5jbHVkZSAiV2FzbUNvbnRleHQuaCIKICNpbmNsdWRlICJXYXNtTWVtb3J5SW5mb3JtYXRpb24u
aCIKICNlbmRpZgogCkBAIC03NzcsNyArNzc4LDcgQEAgdm9pZCBBc3NlbWJseUhlbHBlcnM6OmVt
aXRDb252ZXJ0VmFsdWVUbwogdm9pZCBBc3NlbWJseUhlbHBlcnM6OmxvYWRXYXNtQ29udGV4dChH
UFJSZWcgZHN0KQogewogI2lmIEVOQUJMRShGQVNUX1RMU19KSVQpCi0gICAgaWYgKFdhc206OnVz
ZUZhc3RUTFNGb3JXYXNtQ29udGV4dCgpKSB7CisgICAgaWYgKFdhc206OnVzZUZhc3RUTFNGb3JD
b250ZXh0KCkpIHsKICAgICAgICAgbG9hZEZyb21UTFNQdHIoZmFzdFRMU09mZnNldEZvcktleShX
VEZfV0FTTV9DT05URVhUX0tFWSksIGRzdCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC03
ODgsNyArNzg5LDcgQEAgdm9pZCBBc3NlbWJseUhlbHBlcnM6OmxvYWRXYXNtQ29udGV4dChHUAog
dm9pZCBBc3NlbWJseUhlbHBlcnM6OnN0b3JlV2FzbUNvbnRleHQoR1BSUmVnIHNyYykKIHsKICNp
ZiBFTkFCTEUoRkFTVF9UTFNfSklUKQotICAgIGlmIChXYXNtOjp1c2VGYXN0VExTRm9yV2FzbUNv
bnRleHQoKSkgeworICAgIGlmIChXYXNtOjp1c2VGYXN0VExTRm9yQ29udGV4dCgpKSB7CiAgICAg
ICAgIHN0b3JlVG9UTFNQdHIoc3JjLCBmYXN0VExTT2Zmc2V0Rm9yS2V5KFdURl9XQVNNX0NPTlRF
WFRfS0VZKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC03OTksNyArODAwLDcgQEAgdm9p
ZCBBc3NlbWJseUhlbHBlcnM6OnN0b3JlV2FzbUNvbnRleHQoRwogYm9vbCBBc3NlbWJseUhlbHBl
cnM6OmxvYWRXYXNtQ29udGV4dE5lZWRzTWFjcm9TY3JhdGNoUmVnaXN0ZXIoKQogewogI2lmIEVO
QUJMRShGQVNUX1RMU19KSVQpCi0gICAgaWYgKFdhc206OnVzZUZhc3RUTFNGb3JXYXNtQ29udGV4
dCgpKQorICAgIGlmIChXYXNtOjp1c2VGYXN0VExTRm9yQ29udGV4dCgpKQogICAgICAgICByZXR1
cm4gbG9hZEZyb21UTFNQdHJOZWVkc01hY3JvU2NyYXRjaFJlZ2lzdGVyKCk7CiAjZW5kaWYKICAg
ICByZXR1cm4gZmFsc2U7CkBAIC04MDgsNyArODA5LDcgQEAgYm9vbCBBc3NlbWJseUhlbHBlcnM6
OmxvYWRXYXNtQ29udGV4dE5lZQogYm9vbCBBc3NlbWJseUhlbHBlcnM6OnN0b3JlV2FzbUNvbnRl
eHROZWVkc01hY3JvU2NyYXRjaFJlZ2lzdGVyKCkKIHsKICNpZiBFTkFCTEUoRkFTVF9UTFNfSklU
KQotICAgIGlmIChXYXNtOjp1c2VGYXN0VExTRm9yV2FzbUNvbnRleHQoKSkKKyAgICBpZiAoV2Fz
bTo6dXNlRmFzdFRMU0ZvckNvbnRleHQoKSkKICAgICAgICAgcmV0dXJuIHN0b3JlVG9UTFNQdHJO
ZWVkc01hY3JvU2NyYXRjaFJlZ2lzdGVyKCk7CiAjZW5kaWYKICAgICByZXR1cm4gZmFsc2U7Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgJKHJldmlzaW9uIDIxNDU2NikKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ5MSwx
MSArNDkxLDYgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gT0JKRUNUX09GRlNFVE9GKFZNLCB0
YXJnZXRNYWNoaW5lUENGb3JUaHJvdyk7CiAgICAgfQogCi0gICAgc3RhdGljIHB0cmRpZmZfdCB3
YXNtQ29udGV4dE9mZnNldCgpCi0gICAgewotICAgICAgICByZXR1cm4gT0JKRUNUX09GRlNFVE9G
KFZNLCB3YXNtQ29udGV4dCk7Ci0gICAgfQotCiAgICAgdm9pZCByZXN0b3JlUHJldmlvdXNFeGNl
cHRpb24oRXhjZXB0aW9uKiBleGNlcHRpb24pIHsgc2V0RXhjZXB0aW9uKGV4Y2VwdGlvbik7IH0K
IAogICAgIHZvaWQgY2xlYXJMYXN0RXhjZXB0aW9uKCkgeyBtX2xhc3RFeGNlcHRpb24gPSBudWxs
cHRyOyB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQjNJUkdlbmVyYXRv
ci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUIzSVJH
ZW5lcmF0b3IuY3BwCShyZXZpc2lvbiAyMTQ1NjYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
d2FzbS9XYXNtQjNJUkdlbmVyYXRvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUwLDYgKzUwLDcg
QEAKICNpbmNsdWRlICJKU1dlYkFzc2VtYmx5UnVudGltZUVycm9yLmgiCiAjaW5jbHVkZSAiVmly
dHVhbFJlZ2lzdGVyLmgiCiAjaW5jbHVkZSAiV2FzbUNhbGxpbmdDb252ZW50aW9uLmgiCisjaW5j
bHVkZSAiV2FzbUNvbnRleHQuaCIKICNpbmNsdWRlICJXYXNtRXhjZXB0aW9uVHlwZS5oIgogI2lu
Y2x1ZGUgIldhc21GdW5jdGlvblBhcnNlci5oIgogI2luY2x1ZGUgIldhc21NZW1vcnkuaCIKQEAg
LTI0NCw3ICsyNDUsNyBAQCBwcml2YXRlOgogCiBWYWx1ZSogQjNJUkdlbmVyYXRvcjo6bWF0ZXJp
YWxpemVXYXNtQ29udGV4dChQcm9jZWR1cmUmIHByb2MsIEJhc2ljQmxvY2sqIGJsb2NrKQogewot
ICAgIGlmICh1c2VGYXN0VExTRm9yV2FzbUNvbnRleHQoKSkgeworICAgIGlmICh1c2VGYXN0VExT
Rm9yQ29udGV4dCgpKSB7CiAgICAgICAgIFBhdGNocG9pbnRWYWx1ZSogcGF0Y2hwb2ludCA9IGJs
b2NrLT5hcHBlbmROZXc8UGF0Y2hwb2ludFZhbHVlPihwcm9jLCBwb2ludGVyVHlwZSgpLCBPcmln
aW4oKSk7CiAgICAgICAgIGlmIChDQ2FsbEhlbHBlcnM6OmxvYWRXYXNtQ29udGV4dE5lZWRzTWFj
cm9TY3JhdGNoUmVnaXN0ZXIoKSkKICAgICAgICAgICAgIHBhdGNocG9pbnQtPmNsb2JiZXIoUmVn
aXN0ZXJTZXQ6Om1hY3JvU2NyYXRjaFJlZ2lzdGVycygpKTsKQEAgLTI2OCw3ICsyNjksNyBAQCBW
YWx1ZSogQjNJUkdlbmVyYXRvcjo6bWF0ZXJpYWxpemVXYXNtQ29uCiAKIHZvaWQgQjNJUkdlbmVy
YXRvcjo6cmVzdG9yZVdhc21Db250ZXh0KFByb2NlZHVyZSYgcHJvYywgQmFzaWNCbG9jayogYmxv
Y2ssIFZhbHVlKiBhcmcpCiB7Ci0gICAgaWYgKHVzZUZhc3RUTFNGb3JXYXNtQ29udGV4dCgpKSB7
CisgICAgaWYgKHVzZUZhc3RUTFNGb3JDb250ZXh0KCkpIHsKICAgICAgICAgUGF0Y2hwb2ludFZh
bHVlKiBwYXRjaHBvaW50ID0gYmxvY2stPmFwcGVuZE5ldzxQYXRjaHBvaW50VmFsdWU+KHByb2Ms
IEIzOjpWb2lkLCBPcmlnaW4oKSk7CiAgICAgICAgIGlmIChDQ2FsbEhlbHBlcnM6OnN0b3JlV2Fz
bUNvbnRleHROZWVkc01hY3JvU2NyYXRjaFJlZ2lzdGVyKCkpCiAgICAgICAgICAgICBwYXRjaHBv
aW50LT5jbG9iYmVyKFJlZ2lzdGVyU2V0OjptYWNyb1NjcmF0Y2hSZWdpc3RlcnMoKSk7CkBAIC0z
MjQsNyArMzI1LDcgQEAgQjNJUkdlbmVyYXRvcjo6QjNJUkdlbmVyYXRvcihWTSYgdm0sIGNvbgog
ICAgIG1fbWVtb3J5QmFzZUdQUiA9IHBpbm5lZFJlZ3MuYmFzZU1lbW9yeVBvaW50ZXI7CiAgICAg
bV93YXNtQ29udGV4dEdQUiA9IHBpbm5lZFJlZ3Mud2FzbUNvbnRleHRQb2ludGVyOwogICAgIG1f
cHJvYy5waW5SZWdpc3RlcihtX21lbW9yeUJhc2VHUFIpOwotICAgIGlmICghdXNlRmFzdFRMU0Zv
cldhc21Db250ZXh0KCkpCisgICAgaWYgKCF1c2VGYXN0VExTRm9yQ29udGV4dCgpKQogICAgICAg
ICBtX3Byb2MucGluUmVnaXN0ZXIobV93YXNtQ29udGV4dEdQUik7CiAgICAgQVNTRVJUKCFwaW5u
ZWRSZWdzLnNpemVSZWdpc3RlcnNbMF0uc2l6ZU9mZnNldCk7CiAgICAgbV9tZW1vcnlTaXplR1BS
ID0gcGlubmVkUmVncy5zaXplUmVnaXN0ZXJzWzBdLnNpemVSZWdpc3RlcjsKQEAgLTExNTksNiAr
MTE2MCw4IEBAIHN0YXRpYyB2b2lkIGNyZWF0ZUpTVG9XYXNtV3JhcHBlcihDb21waWwKICAgICAg
ICAgaml0LnN0b3JlUHRyKHJlZywgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKEdQUkluZm86OmNhbGxG
cmFtZVJlZ2lzdGVyLCBvZmZzZXQpKTsKICAgICB9CiAKKyAgICBHUFJSZWcgd2FzbUNvbnRleHRH
UFIgPSBwaW5uZWRSZWdzLndhc21Db250ZXh0UG9pbnRlcjsKKwogICAgIHsKICAgICAgICAgQ0Nh
bGxIZWxwZXJzOjpBZGRyZXNzIGNhbGxlZUZyYW1lID0gQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKE1h
Y3JvQXNzZW1ibGVyOjpzdGFja1BvaW50ZXJSZWdpc3RlciwgLXN0YXRpY19jYXN0PHB0cmRpZmZf
dD4oc2l6ZW9mKENhbGxlckZyYW1lQW5kUEMpKSk7CiAgICAgICAgIG51bUdQUnMgPSAwOwpAQCAt
MTE2Nyw3ICsxMTcwLDE1IEBAIHN0YXRpYyB2b2lkIGNyZWF0ZUpTVG9XYXNtV3JhcHBlcihDb21w
aWwKICAgICAgICAgLy8gd2UgY2FuIHVzZSB0aGlzIGFzIGEgc2NyYXRjaCBmb3Igbm93IHNpbmNl
IHdlIHNhdmVkIGl0IGFib3ZlLgogICAgICAgICBHUFJSZWcgc2NyYXRjaFJlZyA9IHBpbm5lZFJl
Z3MuYmFzZU1lbW9yeVBvaW50ZXI7CiAKLSAgICAgICAgcHRyZGlmZl90IGpzT2Zmc2V0ID0gQ2Fs
bEZyYW1lU2xvdDo6dGhpc0FyZ3VtZW50ICogc2l6ZW9mKHZvaWQqKTsKKyAgICAgICAgcHRyZGlm
Zl90IGpzT2Zmc2V0ID0gQ2FsbEZyYW1lU2xvdDo6dGhpc0FyZ3VtZW50ICogc2l6ZW9mKEVuY29k
ZWRKU1ZhbHVlKTsKKworICAgICAgICAvLyB2bUVudHJ5VG9XYXNtIHBhc3NlcyBXYXNtOjpDb250
ZXh0KiBhcyB0aGUgZmlyc3QgSlMgYXJndW1lbnQgd2hlbiB3ZSdyZQorICAgICAgICAvLyBub3Qg
dXNpbmcgZmFzdCBUTFMgdG8gaG9sZCB0aGUgV2FzbTo6Q29udGV4dCouCisgICAgICAgIGlmICgh
dXNlRmFzdFRMU0ZvckNvbnRleHQoKSkgeworICAgICAgICAgICAgaml0LmxvYWRQdHIoQ0NhbGxI
ZWxwZXJzOjpBZGRyZXNzKEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBqc09mZnNldCksIHdh
c21Db250ZXh0R1BSKTsKKyAgICAgICAgICAgIGpzT2Zmc2V0ICs9IHNpemVvZihFbmNvZGVkSlNW
YWx1ZSk7CisgICAgICAgIH0KKwogICAgICAgICBwdHJkaWZmX3Qgd2FzbU9mZnNldCA9IENhbGxG
cmFtZTo6aGVhZGVyU2l6ZUluUmVnaXN0ZXJzICogc2l6ZW9mKHZvaWQqKTsKICAgICAgICAgZm9y
ICh1bnNpZ25lZCBpID0gMDsgaSA8IHNpZ25hdHVyZS0+YXJndW1lbnRDb3VudCgpOyBpKyspIHsK
ICAgICAgICAgICAgIHN3aXRjaCAoc2lnbmF0dXJlLT5hcmd1bWVudChpKSkgewpAQCAtMTIxMywy
NSArMTIyNCwxNSBAQCBzdGF0aWMgdm9pZCBjcmVhdGVKU1RvV2FzbVdyYXBwZXIoQ29tcGlsCiAg
ICAgICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgICAg
IH0KIAotICAgICAgICAgICAganNPZmZzZXQgKz0gc2l6ZW9mKHZvaWQqKTsKKyAgICAgICAgICAg
IGpzT2Zmc2V0ICs9IHNpemVvZihFbmNvZGVkSlNWYWx1ZSk7CiAgICAgICAgIH0KICAgICB9CiAK
LSAgICAvLyBGSVhNRTogSlN0b1dhc20gd3JhcHBlciBzaG91bGQgdGFrZSBKU1dlYkFzc2VtYmx5
SW5zdGFuY2UgcG9pbnRlciBhcyBhbiBhcmd1bWVudCBkaXJlY3RseS4KLSAgICAvLyBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTcwMTgyCi0gICAgR1BSUmVnIHdhc21D
b250ZXh0ID0gcGlubmVkUmVncy53YXNtQ29udGV4dFBvaW50ZXI7Ci0gICAgaWYgKCF1c2VGYXN0
VExTRm9yV2FzbUNvbnRleHQoKSkgewotICAgICAgICBqaXQubG9hZFB0cihDQ2FsbEhlbHBlcnM6
OkFkZHJlc3MoR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIENhbGxGcmFtZVNsb3Q6OmNhbGxl
ZSAqIHN0YXRpY19jYXN0PGludD4oc2l6ZW9mKFJlZ2lzdGVyKSkpLCB3YXNtQ29udGV4dCk7Ci0g
ICAgICAgIGppdC5hbmRQdHIoQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKE1hcmtlZEJsb2Nr
OjpibG9ja01hc2spLCB3YXNtQ29udGV4dCk7Ci0gICAgICAgIGppdC5sb2FkUHRyKENDYWxsSGVs
cGVyczo6QWRkcmVzcyh3YXNtQ29udGV4dCwgTWFya2VkQmxvY2s6Om9mZnNldE9mVk0oKSksIHdh
c21Db250ZXh0KTsKLSAgICAgICAgaml0LmxvYWRQdHIoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKHdh
c21Db250ZXh0LCBWTTo6d2FzbUNvbnRleHRPZmZzZXQoKSksIHdhc21Db250ZXh0KTsKLSAgICB9
Ci0KICAgICBpZiAoISFpbmZvLm1lbW9yeSkgewogICAgICAgICBHUFJSZWcgYmFzZU1lbW9yeSA9
IHBpbm5lZFJlZ3MuYmFzZU1lbW9yeVBvaW50ZXI7CiAKLSAgICAgICAgaWYgKCF1c2VGYXN0VExT
Rm9yV2FzbUNvbnRleHQoKSkKLSAgICAgICAgICAgIGppdC5sb2FkUHRyKENDYWxsSGVscGVyczo6
QWRkcmVzcyh3YXNtQ29udGV4dCwgSlNXZWJBc3NlbWJseUluc3RhbmNlOjpvZmZzZXRPZk1lbW9y
eSgpKSwgYmFzZU1lbW9yeSk7CisgICAgICAgIGlmICghdXNlRmFzdFRMU0ZvckNvbnRleHQoKSkK
KyAgICAgICAgICAgIGppdC5sb2FkUHRyKENDYWxsSGVscGVyczo6QWRkcmVzcyh3YXNtQ29udGV4
dEdQUiwgSlNXZWJBc3NlbWJseUluc3RhbmNlOjpvZmZzZXRPZk1lbW9yeSgpKSwgYmFzZU1lbW9y
eSk7CiAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgaml0LmxvYWRXYXNtQ29udGV4dChiYXNl
TWVtb3J5KTsKICAgICAgICAgICAgIGppdC5sb2FkUHRyKENDYWxsSGVscGVyczo6QWRkcmVzcyhi
YXNlTWVtb3J5LCBKU1dlYkFzc2VtYmx5SW5zdGFuY2U6Om9mZnNldE9mTWVtb3J5KCkpLCBiYXNl
TWVtb3J5KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21Db250ZXh0LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtQ29udGV4dC5j
cHAJKHJldmlzaW9uIDIxNDU2NikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21D
b250ZXh0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzIsMjggKzMyLDI4IEBACiAjaW5jbHVkZSA8
bXV0ZXg+CiAjaW5jbHVkZSA8d3RmL0Zhc3RUTFMuaD4KIAotbmFtZXNwYWNlIEpTQyB7CituYW1l
c3BhY2UgSlNDIHsgbmFtZXNwYWNlIFdhc20gewogCi1XYXNtQ29udGV4dCogbG9hZFdhc21Db250
ZXh0KFZNJiB2bSkKK0NvbnRleHQqIGxvYWRDb250ZXh0KFZNJiB2bSkKIHsKICNpZiBFTkFCTEUo
RkFTVF9UTFNfSklUKQotICAgIGlmIChPcHRpb25zOjp1c2VXZWJBc3NlbWJseUZhc3RUTFMoKSkK
LSAgICAgICAgcmV0dXJuIGJpdHdpc2VfY2FzdDxXYXNtQ29udGV4dCo+KF9wdGhyZWFkX2dldHNw
ZWNpZmljX2RpcmVjdChXVEZfV0FTTV9DT05URVhUX0tFWSkpOworICAgIGlmICh1c2VGYXN0VExT
Rm9yQ29udGV4dCgpKQorICAgICAgICByZXR1cm4gYml0d2lzZV9jYXN0PENvbnRleHQqPihfcHRo
cmVhZF9nZXRzcGVjaWZpY19kaXJlY3QoV1RGX1dBU01fQ09OVEVYVF9LRVkpKTsKICNlbmRpZgog
ICAgIC8vIEZJWE1FOiBTYXZlIHRoaXMgc3RhdGUgZWxzZXdoZXJlIHRvIGFsbG93IFBJQy4gaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2OTc3MwogICAgIHJldHVybiB2
bS53YXNtQ29udGV4dDsKIH0KIAotdm9pZCBzdG9yZVdhc21Db250ZXh0KFZNJiB2bSwgV2FzbUNv
bnRleHQqIGluc3RhbmNlKQordm9pZCBzdG9yZUNvbnRleHQoVk0mIHZtLCBDb250ZXh0KiBjb250
ZXh0KQogewogI2lmIEVOQUJMRShGQVNUX1RMU19KSVQpCi0gICAgaWYgKE9wdGlvbnM6OnVzZVdl
YkFzc2VtYmx5RmFzdFRMUygpKQotICAgICAgICBfcHRocmVhZF9zZXRzcGVjaWZpY19kaXJlY3Qo
V1RGX1dBU01fQ09OVEVYVF9LRVksIGJpdHdpc2VfY2FzdDx2b2lkKj4oaW5zdGFuY2UpKTsKKyAg
ICBpZiAodXNlRmFzdFRMU0ZvckNvbnRleHQoKSkKKyAgICAgICAgX3B0aHJlYWRfc2V0c3BlY2lm
aWNfZGlyZWN0KFdURl9XQVNNX0NPTlRFWFRfS0VZLCBiaXR3aXNlX2Nhc3Q8dm9pZCo+KGNvbnRl
eHQpKTsKICNlbmRpZgogICAgIC8vIEZJWE1FOiBTYXZlIHRoaXMgc3RhdGUgZWxzZXdoZXJlIHRv
IGFsbG93IFBJQy4gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2OTc3
MwotICAgIHZtLndhc21Db250ZXh0ID0gaW5zdGFuY2U7CisgICAgdm0ud2FzbUNvbnRleHQgPSBj
b250ZXh0OwogfQogCi19IC8vIG5hbWVzcGFjZSBKU0MKK30gfSAvLyBuYW1lc3BhY2UgSlNDOjpX
YXNtCiAKICNlbmRpZiAvLyBFTkFCTEUoV0VCQVNTRU1CTFkpCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvd2FzbS9XYXNtQ29udGV4dC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93YXNtL1dhc21Db250ZXh0LmgJKHJldmlzaW9uIDIxNDU2NikKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS93YXNtL1dhc21Db250ZXh0LmgJKHdvcmtpbmcgY29weSkKQEAgLTI3LDE2
ICsyNywzNiBAQAogCiAjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQogCisjaW5jbHVkZSAiT3B0aW9u
cy5oIgorCiBuYW1lc3BhY2UgSlNDIHsKIAogY2xhc3MgSlNXZWJBc3NlbWJseUluc3RhbmNlOwog
Y2xhc3MgVk07CiAKLXVzaW5nIFdhc21Db250ZXh0ID0gSlNXZWJBc3NlbWJseUluc3RhbmNlOwor
bmFtZXNwYWNlIFdhc20geworCisvLyBGSVhNRTogV2UgbWlnaHQgd2FudCB0aGlzIHRvIGJlIHNv
bWV0aGluZyBlbHNlIGF0IHNvbWUgcG9pbnQ6CisvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTcwMjYwCit1c2luZyBDb250ZXh0ID0gSlNXZWJBc3NlbWJseUluc3Rh
bmNlOworCitpbmxpbmUgYm9vbCB1c2VGYXN0VExTKCkKK3sKKyNpZiBFTkFCTEUoRkFTVF9UTFNf
SklUKQorICAgIHJldHVybiBPcHRpb25zOjp1c2VXZWJBc3NlbWJseUZhc3RUTFMoKTsKKyNlbHNl
CisgICAgcmV0dXJuIGZhbHNlOworI2VuZGlmCit9CisKK2lubGluZSBib29sIHVzZUZhc3RUTFNG
b3JDb250ZXh0KCkKK3sKKyAgICByZXR1cm4gdXNlRmFzdFRMUygpOworfQogCi1XYXNtQ29udGV4
dCogbG9hZFdhc21Db250ZXh0KFZNJik7Ci12b2lkIHN0b3JlV2FzbUNvbnRleHQoVk0mLCBXYXNt
Q29udGV4dCopOworQ29udGV4dCogbG9hZENvbnRleHQoVk0mKTsKK3ZvaWQgc3RvcmVDb250ZXh0
KFZNJiwgQ29udGV4dCopOwogCi19IC8vIG5hbWVzcGFjZSBKU0MKK30gfSAvLyBuYW1lc3BhY2Ug
SlNDOjpXYXNtCiAKICNlbmRpZiAvLyBFTkFCTEUoV0VCQVNTRU1CTFkpCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtTWVtb3J5SW5mb3JtYXRpb24uY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21NZW1vcnlJbmZvcm1hdGlvbi5jcHAJ
KHJldmlzaW9uIDIxNDU2NikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21NZW1v
cnlJbmZvcm1hdGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI5LDYgKzI5LDcgQEAKICNpZiBF
TkFCTEUoV0VCQVNTRU1CTFkpCiAKICNpbmNsdWRlICJXYXNtQ2FsbGluZ0NvbnZlbnRpb24uaCIK
KyNpbmNsdWRlICJXYXNtQ29udGV4dC5oIgogI2luY2x1ZGUgIldhc21NZW1vcnkuaCIKICNpbmNs
dWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KIApAQCAtNjQsMTIgKzY1LDEyIEBAIGNvbnN0IFBp
bm5lZFJlZ2lzdGVySW5mbyYgUGlubmVkUmVnaXN0ZXIKICAgICAgICAgLy8gICAgICAgIHNlZTog
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2Mjk1MgogICAgICAgICBW
ZWN0b3I8dW5zaWduZWQ+IHBpbm5lZFNpemVzID0geyAwIH07CiAgICAgICAgIHVuc2lnbmVkIG51
bWJlck9mUGlubmVkUmVnaXN0ZXJzID0gcGlubmVkU2l6ZXMuc2l6ZSgpICsgMTsKLSAgICAgICAg
aWYgKCF1c2VGYXN0VExTRm9yV2FzbUNvbnRleHQoKSkKKyAgICAgICAgaWYgKCF1c2VGYXN0VExT
Rm9yQ29udGV4dCgpKQogICAgICAgICAgICAgKytudW1iZXJPZlBpbm5lZFJlZ2lzdGVyczsKICAg
ICAgICAgVmVjdG9yPEdQUlJlZz4gcGlubmVkUmVncyA9IGdldFBpbm5lZFJlZ2lzdGVycyhudW1i
ZXJPZlBpbm5lZFJlZ2lzdGVycyk7CiAKICAgICAgICAgYmFzZU1lbW9yeVBvaW50ZXIgPSBwaW5u
ZWRSZWdzLnRha2VMYXN0KCk7Ci0gICAgICAgIGlmICghdXNlRmFzdFRMU0Zvcldhc21Db250ZXh0
KCkpCisgICAgICAgIGlmICghdXNlRmFzdFRMU0ZvckNvbnRleHQoKSkKICAgICAgICAgICAgIHdh
c21Db250ZXh0UG9pbnRlciA9IHBpbm5lZFJlZ3MudGFrZUxhc3QoKTsKIAogICAgICAgICBBU1NF
UlQocGlubmVkU2l6ZXMuc2l6ZSgpID09IHBpbm5lZFJlZ3Muc2l6ZSgpKTsKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21NZW1vcnlJbmZvcm1hdGlvbi5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21NZW1vcnlJbmZvcm1hdGlvbi5oCShy
ZXZpc2lvbiAyMTQ1NjYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtTWVtb3J5
SW5mb3JtYXRpb24uaAkod29ya2luZyBjb3B5KQpAQCAtODEsMjAgKzgxLDYgQEAgcHJpdmF0ZToK
ICAgICBib29sIG1faXNJbXBvcnQgeyBmYWxzZSB9OwogfTsKIAotaW5saW5lIGJvb2wgdXNlRmFz
dFRMUygpCi17Ci0jaWYgRU5BQkxFKEZBU1RfVExTX0pJVCkKLSAgICByZXR1cm4gT3B0aW9uczo6
dXNlV2ViQXNzZW1ibHlGYXN0VExTKCk7Ci0jZWxzZQotICAgIHJldHVybiBmYWxzZTsKLSNlbmRp
ZgotfQotCi1pbmxpbmUgYm9vbCB1c2VGYXN0VExTRm9yV2FzbUNvbnRleHQoKQotewotICAgIHJl
dHVybiB1c2VGYXN0VExTKCk7Ci19Ci0KIH0gfSAvLyBuYW1lc3BhY2UgSlNDOjpXYXNtCiAKICNl
bmRpZiAvLyBFTkFCTEUoV0FTTSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pz
L1dlYkFzc2VtYmx5RnVuY3Rpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5RnVuY3Rpb24uY3BwCShyZXZpc2lvbiAyMTQ1NjYpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseUZ1bmN0aW9uLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtODIsNiArODIsMTIgQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgY2FsbAogICAgIFRyYWNlU2NvcGUgdHJhY2VTY29wZShXZWJBc3NlbWJseUV4
ZWN1dGVTdGFydCwgV2ViQXNzZW1ibHlFeGVjdXRlRW5kKTsKIAogICAgIFZlY3RvcjxKU1ZhbHVl
PiBib3hlZEFyZ3M7CisgICAgV2FzbTo6Q29udGV4dCogd2FzbUNvbnRleHQgPSB3YXNtRnVuY3Rp
b24tPmluc3RhbmNlKCk7CisgICAgLy8gV2hlbiB3ZSBkb24ndCB1c2UgZmFzdCBUTFMgdG8gc3Rv
cmUgdGhlIGNvbnRleHQsIHRoZSBqcworICAgIC8vIGVudHJ5IHdyYXBwZXIgZXhwZWN0cyB0aGUg
V2FzbUNvbnRleHQqIGFzIHRoZSBmaXJzdCBhcmd1bWVudC4KKyAgICBpZiAoIVdhc206OnVzZUZh
c3RUTFNGb3JDb250ZXh0KCkpCisgICAgICAgIGJveGVkQXJncy5hcHBlbmQod2FzbUNvbnRleHQp
OworCiAgICAgZm9yICh1bnNpZ25lZCBhcmdJbmRleCA9IDA7IGFyZ0luZGV4IDwgc2lnbmF0dXJl
LT5hcmd1bWVudENvdW50KCk7ICsrYXJnSW5kZXgpIHsKICAgICAgICAgSlNWYWx1ZSBhcmcgPSBl
eGVjLT5hcmd1bWVudChhcmdJbmRleCk7CiAgICAgICAgIHN3aXRjaCAoc2lnbmF0dXJlLT5hcmd1
bWVudChhcmdJbmRleCkpIHsKQEAgLTEyMiwxNiArMTI4LDE2IEBAIHN0YXRpYyBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGwKICAgICBwcm90b0NhbGxGcmFtZS5pbml0KG51bGxwdHIs
IHdhc21GdW5jdGlvbiwgZmlyc3RBcmd1bWVudCwgYXJnQ291bnQsIHJlbWFpbmluZ0FyZ3MpOwog
CiAgICAgLy8gRklYTUUgRG8gYXdheSB3aXRoIHRoaXMgZW50aXJlIGZ1bmN0aW9uLCBhbmQgb25s
eSB1c2UgdGhlIGVudHJ5cG9pbnQgZ2VuZXJhdGVkIGJ5IEIzLiBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY2NDg2Ci0gICAgLy8gRklYTUU6IFdlIHdvdWxkIGxpa2Ug
dG8gbWFrZSBsb2FkV2FzbUNvbnRleHQgYW5kIHN0b3JlV2FzbUNvbnRleHQgbm8tb3AgaWYgd2Ug
dXNlIHBpbm5lZCByZWdpc3RlcnMuCi0gICAgLy8gSG93ZXZlciwgd2UgdXNlIFZNLndhc21Db250
ZXh0IGZpZWxkIHRvIHBhc3MgaW5zdGFuY2UgdG8gd2FzbSBmdW5jdGlvbidzIEpTIGdsdWUgY29k
ZS4KLSAgICAvLyBXZSBzaG91bGQgcGFzcyBKU1dlYkFzc2VtYmx5SW5zdGFuY2UgZGlyZWN0bHkg
dG8gdm1FbnRyeVRvV2FzbS4KLSAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTcwMTgyCi0gICAgSlNXZWJBc3NlbWJseUluc3RhbmNlKiBwcmV2SlNXZWJBc3Nl
bWJseUluc3RhbmNlID0gbG9hZFdhc21Db250ZXh0KHZtKTsKLSAgICBzdG9yZVdhc21Db250ZXh0
KHZtLCB3YXNtRnVuY3Rpb24tPmluc3RhbmNlKCkpOworICAgIFdhc206OkNvbnRleHQqIHByZXZX
YXNtQ29udGV4dCA9IFdhc206OmxvYWRDb250ZXh0KHZtKTsKKyAgICBXYXNtOjpzdG9yZUNvbnRl
eHQodm0sIHdhc21Db250ZXh0KTsKICAgICBBU1NFUlQod2FzbUZ1bmN0aW9uLT5pbnN0YW5jZSgp
KTsKLSAgICBBU1NFUlQod2FzbUZ1bmN0aW9uLT5pbnN0YW5jZSgpID09IGxvYWRXYXNtQ29udGV4
dCh2bSkpOworICAgIEFTU0VSVCh3YXNtRnVuY3Rpb24tPmluc3RhbmNlKCkgPT0gV2FzbTo6bG9h
ZENvbnRleHQodm0pKTsKICAgICBFbmNvZGVkSlNWYWx1ZSByYXdSZXN1bHQgPSB2bUVudHJ5VG9X
YXNtKHdhc21GdW5jdGlvbi0+anNFbnRyeXBvaW50KCksICZ2bSwgJnByb3RvQ2FsbEZyYW1lKTsK
LSAgICBzdG9yZVdhc21Db250ZXh0KHZtLCBwcmV2SlNXZWJBc3NlbWJseUluc3RhbmNlKTsKKyAg
ICAvLyBXZSBuZWVkIHRvIG1ha2Ugc3VyZSB0aGlzIGlzIGluIGEgcmVnaXN0ZXIgb3Igb24gdGhl
IHN0YWNrIHNpbmNlIGl0J3Mgc3RvcmVkIGluIFZlY3RvcjxKU1ZhbHVlPi4KKyAgICAvLyBUaGlz
IHByb2JhYmx5IGlzbid0IHN0cmljdGx5IG5lY2Vzc2FyeSwgc2luY2UgdGhlIFdlYkFzc2VtYmx5
RnVuY3Rpb24qIHNob3VsZCBrZWVwIHRoZSBpbnN0YW5jZQorICAgIC8vIGFsaXZlLiBCdXQgaXQn
cyBnb29kIGh5Z2llbmUuCisgICAgd2FzbUNvbnRleHQtPnVzZSgpOyAKKyAgICBXYXNtOjpzdG9y
ZUNvbnRleHQodm0sIHByZXZXYXNtQ29udGV4dCk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihz
Y29wZSwgeyB9KTsKIAogICAgIHN3aXRjaCAoc2lnbmF0dXJlLT5yZXR1cm5UeXBlKCkpIHsK
</data>

          </attachment>
      

    </bug>

</bugzilla>