<?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>144462</bug_id>
          
          <creation_ts>2015-04-30 11:37:29 -0700</creation_ts>
          <short_desc>Move all of the branchIs&lt;type&gt; helpers from SpeculativeJIT into AssemblyHelpers</short_desc>
          <delta_ts>2015-04-30 17:08:26 -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>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>144396</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Filip Pizlo">fpizlo</reporter>
          <assigned_to name="Filip Pizlo">fpizlo</assigned_to>
          <cc>barraclough</cc>
    
    <cc>benjamin</cc>
    
    <cc>ggaren</cc>
    
    <cc>mark.lam</cc>
    
    <cc>mhahnenb</cc>
    
    <cc>mmirman</cc>
    
    <cc>msaboff</cc>
    
    <cc>nrotem</cc>
    
    <cc>oliver</cc>
    
    <cc>saam</cc>
    
    <cc>sam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1090511</commentid>
    <comment_count>0</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-04-30 11:37:29 -0700</bug_when>
    <thetext>Patch forthcoming.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1090516</commentid>
    <comment_count>1</comment_count>
      <attachid>252076</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-04-30 11:49:44 -0700</bug_when>
    <thetext>Created attachment 252076
it begins</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1090621</commentid>
    <comment_count>2</comment_count>
      <attachid>252102</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-04-30 16:13:18 -0700</bug_when>
    <thetext>Created attachment 252102
almost done</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1090638</commentid>
    <comment_count>3</comment_count>
      <attachid>252108</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-04-30 16:27:09 -0700</bug_when>
    <thetext>Created attachment 252108
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1090640</commentid>
    <comment_count>4</comment_count>
      <attachid>252108</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-04-30 16:30:34 -0700</bug_when>
    <thetext>Comment on attachment 252108
the patch

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

&gt; Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp:3968
&gt; -    fastFalse.append(branchNotString(rightRegs.payloadGPR()));
&gt; +    fastFalse.append(m_jit.branchIfNotCell(rightRegs.payloadGPR()));

This looks busted.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1090641</commentid>
    <comment_count>5</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-04-30 16:30:46 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; Comment on attachment 252108 [details]
&gt; the patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=252108&amp;action=review
&gt; 
&gt; &gt; Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp:3968
&gt; &gt; -    fastFalse.append(branchNotString(rightRegs.payloadGPR()));
&gt; &gt; +    fastFalse.append(m_jit.branchIfNotCell(rightRegs.payloadGPR()));
&gt; 
&gt; This looks busted.

Fixed locally.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1090643</commentid>
    <comment_count>6</comment_count>
      <attachid>252110</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-04-30 16:31:22 -0700</bug_when>
    <thetext>Created attachment 252110
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1090653</commentid>
    <comment_count>7</comment_count>
      <attachid>252110</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2015-04-30 16:48:29 -0700</bug_when>
    <thetext>Comment on attachment 252110
the patch

r=me if unbusted</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1090654</commentid>
    <comment_count>8</comment_count>
      <attachid>252114</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-04-30 16:50:01 -0700</bug_when>
    <thetext>Created attachment 252114
the patch

More build/correctness fixing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1090662</commentid>
    <comment_count>9</comment_count>
      <attachid>252114</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2015-04-30 17:03:25 -0700</bug_when>
    <thetext>Comment on attachment 252114
the patch

r=me too</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1090665</commentid>
    <comment_count>10</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-04-30 17:08:26 -0700</bug_when>
    <thetext>Landed in http://trac.webkit.org/changeset/183656</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>252076</attachid>
            <date>2015-04-30 11:49:44 -0700</date>
            <delta_ts>2015-04-30 16:13:18 -0700</delta_ts>
            <desc>it begins</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>22444</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJ
VDY0LmNwcAkocmV2aXNpb24gMTgzNjM1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjA0LDcgKzIwNCw3IEBA
IHZvaWQgU3BlY3VsYXRpdmVKSVQ6Om5vblNwZWN1bGF0aXZlTm9uUGUKICAgICBKSVRDb21waWxl
cjo6SnVtcCBub3RNYXNxdWVyYWRlc0FzVW5kZWZpbmVkOwogICAgIGlmIChtYXNxdWVyYWRlc0Fz
VW5kZWZpbmVkV2F0Y2hwb2ludElzU3RpbGxWYWxpZCgpKSB7CiAgICAgICAgIGlmICghaXNLbm93
bkNlbGwob3BlcmFuZC5ub2RlKCkpKQotICAgICAgICAgICAgbm90Q2VsbCA9IGJyYW5jaE5vdENl
bGwoSlNWYWx1ZVJlZ3MoYXJnR1BSKSk7CisgICAgICAgICAgICBub3RDZWxsID0gbV9qaXQuYnJh
bmNoSWZOb3RDZWxsKEpTVmFsdWVSZWdzKGFyZ0dQUikpOwogCiAgICAgICAgIG1faml0Lm1vdmUo
aW52ZXJ0ID8gVHJ1c3RlZEltbTMyKDEpIDogVHJ1c3RlZEltbTMyKDApLCByZXN1bHRHUFIpOwog
ICAgICAgICBub3RNYXNxdWVyYWRlc0FzVW5kZWZpbmVkID0gbV9qaXQuanVtcCgpOwpAQCAtMjE0
LDcgKzIxNCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6Om5vblNwZWN1bGF0aXZlTm9uUGUKICAg
ICAgICAgR1BSVGVtcG9yYXJ5IHNjcmF0Y2godGhpcyk7CiAKICAgICAgICAgaWYgKCFpc0tub3du
Q2VsbChvcGVyYW5kLm5vZGUoKSkpCi0gICAgICAgICAgICBub3RDZWxsID0gYnJhbmNoTm90Q2Vs
bChKU1ZhbHVlUmVncyhhcmdHUFIpKTsKKyAgICAgICAgICAgIG5vdENlbGwgPSBtX2ppdC5icmFu
Y2hJZk5vdENlbGwoSlNWYWx1ZVJlZ3MoYXJnR1BSKSk7CiAgICAgICAgIAogICAgICAgICBKSVRD
b21waWxlcjo6SnVtcCBpc01hc3F1ZXJhZGVzQXNVbmRlZmluZWQgPSBtX2ppdC5icmFuY2hUZXN0
OCgKICAgICAgICAgICAgIEpJVENvbXBpbGVyOjpOb25aZXJvLCAKQEAgLTI3Myw3ICsyNzMsNyBA
QCB2b2lkIFNwZWN1bGF0aXZlSklUOjpub25TcGVjdWxhdGl2ZVBlZXBoCiAgICAgCiAgICAgaWYg
KG1hc3F1ZXJhZGVzQXNVbmRlZmluZWRXYXRjaHBvaW50SXNTdGlsbFZhbGlkKCkpIHsKICAgICAg
ICAgaWYgKCFpc0tub3duQ2VsbChvcGVyYW5kLm5vZGUoKSkpCi0gICAgICAgICAgICBub3RDZWxs
ID0gYnJhbmNoTm90Q2VsbChKU1ZhbHVlUmVncyhhcmdHUFIpKTsKKyAgICAgICAgICAgIG5vdENl
bGwgPSBtX2ppdC5icmFuY2hJZk5vdENlbGwoSlNWYWx1ZVJlZ3MoYXJnR1BSKSk7CiAgICAgICAg
IAogICAgICAgICBqdW1wKGludmVydCA/IHRha2VuIDogbm90VGFrZW4sIEZvcmNlSnVtcCk7CiAg
ICAgfSBlbHNlIHsKQEAgLTI4Miw3ICsyODIsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpub25T
cGVjdWxhdGl2ZVBlZXBoCiAgICAgICAgIEdQUlRlbXBvcmFyeSBzY3JhdGNoKHRoaXMpOwogCiAg
ICAgICAgIGlmICghaXNLbm93bkNlbGwob3BlcmFuZC5ub2RlKCkpKQotICAgICAgICAgICAgbm90
Q2VsbCA9IGJyYW5jaE5vdENlbGwoSlNWYWx1ZVJlZ3MoYXJnR1BSKSk7CisgICAgICAgICAgICBu
b3RDZWxsID0gbV9qaXQuYnJhbmNoSWZOb3RDZWxsKEpTVmFsdWVSZWdzKGFyZ0dQUikpOwogICAg
ICAgICAKICAgICAgICAgYnJhbmNoVGVzdDgoSklUQ29tcGlsZXI6Olplcm8sIAogICAgICAgICAg
ICAgSklUQ29tcGlsZXI6OkFkZHJlc3MoYXJnR1BSLCBKU0NlbGw6OnR5cGVJbmZvRmxhZ3NPZmZz
ZXQoKSksIApAQCAtMTExOSw3ICsxMTE5LDcgQEAgR1BSUmVnIFNwZWN1bGF0aXZlSklUOjpmaWxs
U3BlY3VsYXRlQ2VsbAogCiAgICAgICAgIGluZm8uZmlsbEpTVmFsdWUoKm1fc3RyZWFtLCBncHIs
IERhdGFGb3JtYXRKUyk7CiAgICAgICAgIGlmICh0eXBlICYgflNwZWNDZWxsKQotICAgICAgICAg
ICAgc3BlY3VsYXRpb25DaGVjayhCYWRUeXBlLCBKU1ZhbHVlUmVncyhncHIpLCBlZGdlLCBicmFu
Y2hOb3RDZWxsKEpTVmFsdWVSZWdzKGdwcikpKTsKKyAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hl
Y2soQmFkVHlwZSwgSlNWYWx1ZVJlZ3MoZ3ByKSwgZWRnZSwgbV9qaXQuYnJhbmNoSWZOb3RDZWxs
KEpTVmFsdWVSZWdzKGdwcikpKTsKICAgICAgICAgaW5mby5maWxsSlNWYWx1ZSgqbV9zdHJlYW0s
IGdwciwgRGF0YUZvcm1hdEpTQ2VsbCk7CiAgICAgICAgIHJldHVybiBncHI7CiAgICAgfQpAQCAt
MTEyOSw3ICsxMTI5LDcgQEAgR1BSUmVnIFNwZWN1bGF0aXZlSklUOjpmaWxsU3BlY3VsYXRlQ2Vs
bAogICAgICAgICBHUFJSZWcgZ3ByID0gaW5mby5ncHIoKTsKICAgICAgICAgbV9ncHJzLmxvY2so
Z3ByKTsKICAgICAgICAgaWYgKCFBU1NFUlRfRElTQUJMRUQpIHsKLSAgICAgICAgICAgIE1hY3Jv
QXNzZW1ibGVyOjpKdW1wIGNoZWNrQ2VsbCA9IGJyYW5jaElzQ2VsbChKU1ZhbHVlUmVncyhncHIp
KTsKKyAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIGNoZWNrQ2VsbCA9IG1faml0LmJy
YW5jaElmQ2VsbChKU1ZhbHVlUmVncyhncHIpKTsKICAgICAgICAgICAgIG1faml0LmFib3J0V2l0
aFJlYXNvbihERkdJc05vdENlbGwpOwogICAgICAgICAgICAgY2hlY2tDZWxsLmxpbmsoJm1faml0
KTsKICAgICAgICAgfQpAQCAtMTE0MCw3ICsxMTQwLDcgQEAgR1BSUmVnIFNwZWN1bGF0aXZlSklU
OjpmaWxsU3BlY3VsYXRlQ2VsbAogICAgICAgICBHUFJSZWcgZ3ByID0gaW5mby5ncHIoKTsKICAg
ICAgICAgbV9ncHJzLmxvY2soZ3ByKTsKICAgICAgICAgaWYgKHR5cGUgJiB+U3BlY0NlbGwpCi0g
ICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEJhZFR5cGUsIEpTVmFsdWVSZWdzKGdwciksIGVk
Z2UsIGJyYW5jaE5vdENlbGwoSlNWYWx1ZVJlZ3MoZ3ByKSkpOworICAgICAgICAgICAgc3BlY3Vs
YXRpb25DaGVjayhCYWRUeXBlLCBKU1ZhbHVlUmVncyhncHIpLCBlZGdlLCBtX2ppdC5icmFuY2hJ
Zk5vdENlbGwoSlNWYWx1ZVJlZ3MoZ3ByKSkpOwogICAgICAgICBpbmZvLmZpbGxKU1ZhbHVlKCpt
X3N0cmVhbSwgZ3ByLCBEYXRhRm9ybWF0SlNDZWxsKTsKICAgICAgICAgcmV0dXJuIGdwcjsKICAg
ICB9CkBAIC0xMjY1LDEyICsxMjY1LDEyIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVP
YmplY3RFcXVhbGkKICAgIAogICAgIGlmIChtYXNxdWVyYWRlc0FzVW5kZWZpbmVkV2F0Y2hwb2lu
dElzU3RpbGxWYWxpZCgpKSB7CiAgICAgICAgIERGR19UWVBFX0NIRUNLKAotICAgICAgICAgICAg
SlNWYWx1ZVNvdXJjZTo6dW5ib3hlZENlbGwob3AxR1BSKSwgbm9kZS0+Y2hpbGQxKCksIFNwZWNP
YmplY3QsIGJyYW5jaE5vdE9iamVjdChvcDFHUFIpKTsKKyAgICAgICAgICAgIEpTVmFsdWVTb3Vy
Y2U6OnVuYm94ZWRDZWxsKG9wMUdQUiksIG5vZGUtPmNoaWxkMSgpLCBTcGVjT2JqZWN0LCBtX2pp
dC5icmFuY2hJZk5vdE9iamVjdChvcDFHUFIpKTsKICAgICAgICAgREZHX1RZUEVfQ0hFQ0soCi0g
ICAgICAgICAgICBKU1ZhbHVlU291cmNlOjp1bmJveGVkQ2VsbChvcDJHUFIpLCBub2RlLT5jaGls
ZDIoKSwgU3BlY09iamVjdCwgYnJhbmNoTm90T2JqZWN0KG9wMkdQUikpOworICAgICAgICAgICAg
SlNWYWx1ZVNvdXJjZTo6dW5ib3hlZENlbGwob3AyR1BSKSwgbm9kZS0+Y2hpbGQyKCksIFNwZWNP
YmplY3QsIG1faml0LmJyYW5jaElmTm90T2JqZWN0KG9wMkdQUikpOwogICAgIH0gZWxzZSB7CiAg
ICAgICAgIERGR19UWVBFX0NIRUNLKAotICAgICAgICAgICAgSlNWYWx1ZVNvdXJjZTo6dW5ib3hl
ZENlbGwob3AxR1BSKSwgbm9kZS0+Y2hpbGQxKCksIFNwZWNPYmplY3QsIGJyYW5jaE5vdE9iamVj
dChvcDFHUFIpKTsKKyAgICAgICAgICAgIEpTVmFsdWVTb3VyY2U6OnVuYm94ZWRDZWxsKG9wMUdQ
UiksIG5vZGUtPmNoaWxkMSgpLCBTcGVjT2JqZWN0LCBtX2ppdC5icmFuY2hJZk5vdE9iamVjdChv
cDFHUFIpKTsKICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhCYWRUeXBlLCBKU1ZhbHVlU291cmNl
Ojp1bmJveGVkQ2VsbChvcDFHUFIpLCBub2RlLT5jaGlsZDEoKSwKICAgICAgICAgICAgIG1faml0
LmJyYW5jaFRlc3Q4KAogICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpOb25aZXJvLCAK
QEAgLTEyNzgsNyArMTI3OCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVPYmplY3RF
cXVhbGkKICAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbTMyKE1hc3F1
ZXJhZGVzQXNVbmRlZmluZWQpKSk7CiAKICAgICAgICAgREZHX1RZUEVfQ0hFQ0soCi0gICAgICAg
ICAgICBKU1ZhbHVlU291cmNlOjp1bmJveGVkQ2VsbChvcDJHUFIpLCBub2RlLT5jaGlsZDIoKSwg
U3BlY09iamVjdCwgYnJhbmNoTm90T2JqZWN0KG9wMkdQUikpOworICAgICAgICAgICAgSlNWYWx1
ZVNvdXJjZTo6dW5ib3hlZENlbGwob3AyR1BSKSwgbm9kZS0+Y2hpbGQyKCksIFNwZWNPYmplY3Qs
IG1faml0LmJyYW5jaElmTm90T2JqZWN0KG9wMkdQUikpOwogICAgICAgICBzcGVjdWxhdGlvbkNo
ZWNrKEJhZFR5cGUsIEpTVmFsdWVTb3VyY2U6OnVuYm94ZWRDZWxsKG9wMkdQUiksIG5vZGUtPmNo
aWxkMigpLAogICAgICAgICAgICAgbV9qaXQuYnJhbmNoVGVzdDgoCiAgICAgICAgICAgICAgICAg
TWFjcm9Bc3NlbWJsZXI6Ok5vblplcm8sIApAQCAtMTMxMSwxMCArMTMxMSwxMCBAQCB2b2lkIFNw
ZWN1bGF0aXZlSklUOjpjb21waWxlT2JqZWN0VG9PYmplCiAKICAgICBpZiAobWFzcXVlcmFkZXNB
c1VuZGVmaW5lZFdhdGNocG9pbnRWYWxpZCkgewogICAgICAgICBERkdfVFlQRV9DSEVDSygKLSAg
ICAgICAgICAgIEpTVmFsdWVTb3VyY2U6OnVuYm94ZWRDZWxsKG9wMUdQUiksIGxlZnRDaGlsZCwg
U3BlY09iamVjdCwgYnJhbmNoTm90T2JqZWN0KG9wMUdQUikpOworICAgICAgICAgICAgSlNWYWx1
ZVNvdXJjZTo6dW5ib3hlZENlbGwob3AxR1BSKSwgbGVmdENoaWxkLCBTcGVjT2JqZWN0LCBtX2pp
dC5icmFuY2hJZk5vdE9iamVjdChvcDFHUFIpKTsKICAgICB9IGVsc2UgewogICAgICAgICBERkdf
VFlQRV9DSEVDSygKLSAgICAgICAgICAgIEpTVmFsdWVTb3VyY2U6OnVuYm94ZWRDZWxsKG9wMUdQ
UiksIGxlZnRDaGlsZCwgU3BlY09iamVjdCwgYnJhbmNoTm90T2JqZWN0KG9wMUdQUikpOworICAg
ICAgICAgICAgSlNWYWx1ZVNvdXJjZTo6dW5ib3hlZENlbGwob3AxR1BSKSwgbGVmdENoaWxkLCBT
cGVjT2JqZWN0LCBtX2ppdC5icmFuY2hJZk5vdE9iamVjdChvcDFHUFIpKTsKICAgICAgICAgc3Bl
Y3VsYXRpb25DaGVjayhCYWRUeXBlLCBKU1ZhbHVlU291cmNlOjp1bmJveGVkQ2VsbChvcDFHUFIp
LCBsZWZ0Q2hpbGQsCiAgICAgICAgICAgICBtX2ppdC5icmFuY2hUZXN0OCgKICAgICAgICAgICAg
ICAgICBNYWNyb0Fzc2VtYmxlcjo6Tm9uWmVybywgCkBAIC0xMzI0LDE1ICsxMzI0LDE1IEBAIHZv
aWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVPYmplY3RUb09iamUKICAgICAKICAgICAvLyBJdCBz
ZWVtcyB0aGF0IG1vc3Qgb2YgdGhlIHRpbWUgd2hlbiBwcm9ncmFtcyBkbyBhID09IGIgd2hlcmUg
YiBtYXkgYmUgZWl0aGVyIG51bGwvdW5kZWZpbmVkCiAgICAgLy8gb3IgYW4gb2JqZWN0LCBiIGlz
IHVzdWFsbHkgYW4gb2JqZWN0LiBCYWxhbmNlIHRoZSBicmFuY2hlcyB0byBtYWtlIHRoYXQgY2Fz
ZSBmYXN0LgotICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIHJpZ2h0Tm90Q2VsbCA9IGJyYW5jaE5v
dENlbGwoSlNWYWx1ZVJlZ3Mob3AyR1BSKSk7CisgICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXAgcmln
aHROb3RDZWxsID0gbV9qaXQuYnJhbmNoSWZOb3RDZWxsKEpTVmFsdWVSZWdzKG9wMkdQUikpOwog
ICAgIAogICAgIC8vIFdlIGtub3cgdGhhdCB3aXRoaW4gdGhpcyBicmFuY2gsIHJpZ2h0Q2hpbGQg
bXVzdCBiZSBhIGNlbGwuIAogICAgIGlmIChtYXNxdWVyYWRlc0FzVW5kZWZpbmVkV2F0Y2hwb2lu
dFZhbGlkKSB7CiAgICAgICAgIERGR19UWVBFX0NIRUNLKAotICAgICAgICAgICAgSlNWYWx1ZVJl
Z3Mob3AyR1BSKSwgcmlnaHRDaGlsZCwgKH5TcGVjQ2VsbCkgfCBTcGVjT2JqZWN0LCBicmFuY2hO
b3RPYmplY3Qob3AyR1BSKSk7CisgICAgICAgICAgICBKU1ZhbHVlUmVncyhvcDJHUFIpLCByaWdo
dENoaWxkLCAoflNwZWNDZWxsKSB8IFNwZWNPYmplY3QsIG1faml0LmJyYW5jaElmTm90T2JqZWN0
KG9wMkdQUikpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIERGR19UWVBFX0NIRUNLKAotICAgICAg
ICAgICAgSlNWYWx1ZVJlZ3Mob3AyR1BSKSwgcmlnaHRDaGlsZCwgKH5TcGVjQ2VsbCkgfCBTcGVj
T2JqZWN0LCBicmFuY2hOb3RPYmplY3Qob3AyR1BSKSk7CisgICAgICAgICAgICBKU1ZhbHVlUmVn
cyhvcDJHUFIpLCByaWdodENoaWxkLCAoflNwZWNDZWxsKSB8IFNwZWNPYmplY3QsIG1faml0LmJy
YW5jaElmTm90T2JqZWN0KG9wMkdQUikpOwogICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEJhZFR5
cGUsIEpTVmFsdWVSZWdzKG9wMkdQUiksIHJpZ2h0Q2hpbGQsCiAgICAgICAgICAgICBtX2ppdC5i
cmFuY2hUZXN0OCgKICAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6Tm9uWmVybywgCkBA
IC0xMzg5LDEwICsxMzg5LDEwIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVQZWVwSG9s
ZU9iamUKIAogICAgIGlmIChtYXNxdWVyYWRlc0FzVW5kZWZpbmVkV2F0Y2hwb2ludFZhbGlkKSB7
CiAgICAgICAgIERGR19UWVBFX0NIRUNLKAotICAgICAgICAgICAgSlNWYWx1ZVNvdXJjZTo6dW5i
b3hlZENlbGwob3AxR1BSKSwgbGVmdENoaWxkLCBTcGVjT2JqZWN0LCBicmFuY2hOb3RPYmplY3Qo
b3AxR1BSKSk7CisgICAgICAgICAgICBKU1ZhbHVlU291cmNlOjp1bmJveGVkQ2VsbChvcDFHUFIp
LCBsZWZ0Q2hpbGQsIFNwZWNPYmplY3QsIG1faml0LmJyYW5jaElmTm90T2JqZWN0KG9wMUdQUikp
OwogICAgIH0gZWxzZSB7CiAgICAgICAgIERGR19UWVBFX0NIRUNLKAotICAgICAgICAgICAgSlNW
YWx1ZVNvdXJjZTo6dW5ib3hlZENlbGwob3AxR1BSKSwgbGVmdENoaWxkLCBTcGVjT2JqZWN0LCBi
cmFuY2hOb3RPYmplY3Qob3AxR1BSKSk7CisgICAgICAgICAgICBKU1ZhbHVlU291cmNlOjp1bmJv
eGVkQ2VsbChvcDFHUFIpLCBsZWZ0Q2hpbGQsIFNwZWNPYmplY3QsIG1faml0LmJyYW5jaElmTm90
T2JqZWN0KG9wMUdQUikpOwogICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEJhZFR5cGUsIEpTVmFs
dWVTb3VyY2U6OnVuYm94ZWRDZWxsKG9wMUdQUiksIGxlZnRDaGlsZCwgCiAgICAgICAgICAgICBt
X2ppdC5icmFuY2hUZXN0OCgKICAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6Tm9uWmVy
bywgCkBAIC0xNDAyLDE1ICsxNDAyLDE1IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVQ
ZWVwSG9sZU9iamUKIAogICAgIC8vIEl0IHNlZW1zIHRoYXQgbW9zdCBvZiB0aGUgdGltZSB3aGVu
IHByb2dyYW1zIGRvIGEgPT0gYiB3aGVyZSBiIG1heSBiZSBlaXRoZXIgbnVsbC91bmRlZmluZWQK
ICAgICAvLyBvciBhbiBvYmplY3QsIGIgaXMgdXN1YWxseSBhbiBvYmplY3QuIEJhbGFuY2UgdGhl
IGJyYW5jaGVzIHRvIG1ha2UgdGhhdCBjYXNlIGZhc3QuCi0gICAgTWFjcm9Bc3NlbWJsZXI6Okp1
bXAgcmlnaHROb3RDZWxsID0gYnJhbmNoTm90Q2VsbChKU1ZhbHVlUmVncyhvcDJHUFIpKTsKKyAg
ICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCByaWdodE5vdENlbGwgPSBtX2ppdC5icmFuY2hJZk5vdENl
bGwoSlNWYWx1ZVJlZ3Mob3AyR1BSKSk7CiAgICAgCiAgICAgLy8gV2Uga25vdyB0aGF0IHdpdGhp
biB0aGlzIGJyYW5jaCwgcmlnaHRDaGlsZCBtdXN0IGJlIGEgY2VsbC4gCiAgICAgaWYgKG1hc3F1
ZXJhZGVzQXNVbmRlZmluZWRXYXRjaHBvaW50VmFsaWQpIHsKICAgICAgICAgREZHX1RZUEVfQ0hF
Q0soCi0gICAgICAgICAgICBKU1ZhbHVlUmVncyhvcDJHUFIpLCByaWdodENoaWxkLCAoflNwZWND
ZWxsKSB8IFNwZWNPYmplY3QsIGJyYW5jaE5vdE9iamVjdChvcDJHUFIpKTsKKyAgICAgICAgICAg
IEpTVmFsdWVSZWdzKG9wMkdQUiksIHJpZ2h0Q2hpbGQsICh+U3BlY0NlbGwpIHwgU3BlY09iamVj
dCwgbV9qaXQuYnJhbmNoSWZOb3RPYmplY3Qob3AyR1BSKSk7CiAgICAgfSBlbHNlIHsKICAgICAg
ICAgREZHX1RZUEVfQ0hFQ0soCi0gICAgICAgICAgICBKU1ZhbHVlUmVncyhvcDJHUFIpLCByaWdo
dENoaWxkLCAoflNwZWNDZWxsKSB8IFNwZWNPYmplY3QsIGJyYW5jaE5vdE9iamVjdChvcDJHUFIp
KTsKKyAgICAgICAgICAgIEpTVmFsdWVSZWdzKG9wMkdQUiksIHJpZ2h0Q2hpbGQsICh+U3BlY0Nl
bGwpIHwgU3BlY09iamVjdCwgbV9qaXQuYnJhbmNoSWZOb3RPYmplY3Qob3AyR1BSKSk7CiAgICAg
ICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFkVHlwZSwgSlNWYWx1ZVJlZ3Mob3AyR1BSKSwgcmlnaHRD
aGlsZCwKICAgICAgICAgICAgIG1faml0LmJyYW5jaFRlc3Q4KAogICAgICAgICAgICAgICAgIE1h
Y3JvQXNzZW1ibGVyOjpOb25aZXJvLCAKQEAgLTE1MjksMTMgKzE1MjksMTMgQEAgdm9pZCBTcGVj
dWxhdGl2ZUpJVDo6Y29tcGlsZU9iamVjdE9yT3RoZQogICAgICAgICBzY3JhdGNoR1BSID0gc2Ny
YXRjaC5ncHIoKTsKICAgICB9CiAKLSAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBub3RDZWxsID0g
YnJhbmNoTm90Q2VsbChKU1ZhbHVlUmVncyh2YWx1ZUdQUikpOworICAgIE1hY3JvQXNzZW1ibGVy
OjpKdW1wIG5vdENlbGwgPSBtX2ppdC5icmFuY2hJZk5vdENlbGwoSlNWYWx1ZVJlZ3ModmFsdWVH
UFIpKTsKICAgICBpZiAobWFzcXVlcmFkZXNBc1VuZGVmaW5lZFdhdGNocG9pbnRWYWxpZCkgewog
ICAgICAgICBERkdfVFlQRV9DSEVDSygKLSAgICAgICAgICAgIEpTVmFsdWVSZWdzKHZhbHVlR1BS
KSwgbm9kZVVzZSwgKH5TcGVjQ2VsbCkgfCBTcGVjT2JqZWN0LCBicmFuY2hOb3RPYmplY3QodmFs
dWVHUFIpKTsKKyAgICAgICAgICAgIEpTVmFsdWVSZWdzKHZhbHVlR1BSKSwgbm9kZVVzZSwgKH5T
cGVjQ2VsbCkgfCBTcGVjT2JqZWN0LCBtX2ppdC5icmFuY2hJZk5vdE9iamVjdCh2YWx1ZUdQUikp
OwogICAgIH0gZWxzZSB7CiAgICAgICAgIERGR19UWVBFX0NIRUNLKAotICAgICAgICAgICAgSlNW
YWx1ZVJlZ3ModmFsdWVHUFIpLCBub2RlVXNlLCAoflNwZWNDZWxsKSB8IFNwZWNPYmplY3QsIGJy
YW5jaE5vdE9iamVjdCh2YWx1ZUdQUikpOworICAgICAgICAgICAgSlNWYWx1ZVJlZ3ModmFsdWVH
UFIpLCBub2RlVXNlLCAoflNwZWNDZWxsKSB8IFNwZWNPYmplY3QsIG1faml0LmJyYW5jaElmTm90
T2JqZWN0KHZhbHVlR1BSKSk7CiAKICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXAgaXNOb3RN
YXNxdWVyYWRlc0FzVW5kZWZpbmVkID0gCiAgICAgICAgICAgICBtX2ppdC5icmFuY2hUZXN0OCgK
QEAgLTE2NzMsMTMgKzE2NzMsMTMgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6ZW1pdE9iamVjdE9y
T3RoZXJCcgogICAgICAgICBzdHJ1Y3R1cmVHUFIgPSBzdHJ1Y3R1cmUuZ3ByKCk7CiAgICAgfQog
Ci0gICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXAgbm90Q2VsbCA9IGJyYW5jaE5vdENlbGwoSlNWYWx1
ZVJlZ3ModmFsdWVHUFIpKTsKKyAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBub3RDZWxsID0gbV9q
aXQuYnJhbmNoSWZOb3RDZWxsKEpTVmFsdWVSZWdzKHZhbHVlR1BSKSk7CiAgICAgaWYgKG1hc3F1
ZXJhZGVzQXNVbmRlZmluZWRXYXRjaHBvaW50SXNTdGlsbFZhbGlkKCkpIHsKICAgICAgICAgREZH
X1RZUEVfQ0hFQ0soCi0gICAgICAgICAgICBKU1ZhbHVlUmVncyh2YWx1ZUdQUiksIG5vZGVVc2Us
ICh+U3BlY0NlbGwpIHwgU3BlY09iamVjdCwgYnJhbmNoTm90T2JqZWN0KHZhbHVlR1BSKSk7Cisg
ICAgICAgICAgICBKU1ZhbHVlUmVncyh2YWx1ZUdQUiksIG5vZGVVc2UsICh+U3BlY0NlbGwpIHwg
U3BlY09iamVjdCwgbV9qaXQuYnJhbmNoSWZOb3RPYmplY3QodmFsdWVHUFIpKTsKICAgICB9IGVs
c2UgewogICAgICAgICBERkdfVFlQRV9DSEVDSygKLSAgICAgICAgICAgIEpTVmFsdWVSZWdzKHZh
bHVlR1BSKSwgbm9kZVVzZSwgKH5TcGVjQ2VsbCkgfCBTcGVjT2JqZWN0LCBicmFuY2hOb3RPYmpl
Y3QodmFsdWVHUFIpKTsKKyAgICAgICAgICAgIEpTVmFsdWVSZWdzKHZhbHVlR1BSKSwgbm9kZVVz
ZSwgKH5TcGVjQ2VsbCkgfCBTcGVjT2JqZWN0LCBtX2ppdC5icmFuY2hJZk5vdE9iamVjdCh2YWx1
ZUdQUikpOwogCiAgICAgICAgIEpJVENvbXBpbGVyOjpKdW1wIGlzTm90TWFzcXVlcmFkZXNBc1Vu
ZGVmaW5lZCA9IG1faml0LmJyYW5jaFRlc3Q4KAogICAgICAgICAgICAgSklUQ29tcGlsZXI6Olpl
cm8sIApAQCAtMzE2Nyw4ICszMTY3LDggQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShO
b2RlKiBub2RlKQogICAgICAgICAKICAgICAgICAgb3AxLnVzZSgpOwogICAgICAgICAKLSAgICAg
ICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXAgYWxyZWFkeVByaW1pdGl2ZSA9IGJyYW5jaE5vdENlbGwo
SlNWYWx1ZVJlZ3Mob3AxR1BSKSk7Ci0gICAgICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIG5vdFBy
aW1pdGl2ZSA9IGJyYW5jaElzT2JqZWN0KG9wMUdQUik7CisgICAgICAgIE1hY3JvQXNzZW1ibGVy
OjpKdW1wIGFscmVhZHlQcmltaXRpdmUgPSBtX2ppdC5icmFuY2hJZk5vdENlbGwoSlNWYWx1ZVJl
Z3Mob3AxR1BSKSk7CisgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIG5vdFByaW1pdGl2ZSA9
IG1faml0LmJyYW5jaElmT2JqZWN0KG9wMUdQUik7CiAgICAgICAgIAogICAgICAgICBhbHJlYWR5
UHJpbWl0aXZlLmxpbmsoJm1faml0KTsKICAgICAgICAgbV9qaXQubW92ZShvcDFHUFIsIHJlc3Vs
dEdQUik7CkBAIC0zMTkzLDggKzMxOTMsOCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxl
KE5vZGUqIG5vZGUpCiAgICAgICAgICAgICAKICAgICAgICAgICAgIEpJVENvbXBpbGVyOjpKdW1w
IGRvbmU7CiAgICAgICAgICAgICBpZiAobm9kZS0+Y2hpbGQxKCktPnByZWRpY3Rpb24oKSAmIFNw
ZWNTdHJpbmcpIHsKLSAgICAgICAgICAgICAgICBKSVRDb21waWxlcjo6SnVtcCBzbG93UGF0aDEg
PSBicmFuY2hOb3RDZWxsKEpTVmFsdWVSZWdzKG9wMUdQUikpOwotICAgICAgICAgICAgICAgIEpJ
VENvbXBpbGVyOjpKdW1wIHNsb3dQYXRoMiA9IGJyYW5jaE5vdFN0cmluZyhvcDFHUFIpOworICAg
ICAgICAgICAgICAgIEpJVENvbXBpbGVyOjpKdW1wIHNsb3dQYXRoMSA9IG1faml0LmJyYW5jaElm
Tm90Q2VsbChKU1ZhbHVlUmVncyhvcDFHUFIpKTsKKyAgICAgICAgICAgICAgICBKSVRDb21waWxl
cjo6SnVtcCBzbG93UGF0aDIgPSBtX2ppdC5icmFuY2hJZk5vdFN0cmluZyhvcDFHUFIpOwogICAg
ICAgICAgICAgICAgIG1faml0Lm1vdmUob3AxR1BSLCByZXN1bHRHUFIpOwogICAgICAgICAgICAg
ICAgIGRvbmUgPSBtX2ppdC5qdW1wKCk7CiAgICAgICAgICAgICAgICAgc2xvd1BhdGgxLmxpbmso
Jm1faml0KTsKQEAgLTM1NTMsNyArMzU1Myw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBp
bGUoTm9kZSogbm9kZSkKICAgICAgICAgR1BSUmVnIHRlbXBHUFIgPSB0ZW1wLmdwcigpOwogICAg
ICAgICAKICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXBMaXN0IHNsb3dDYXNlczsKLSAgICAg
ICAgc2xvd0Nhc2VzLmFwcGVuZChicmFuY2hOb3RDZWxsKEpTVmFsdWVSZWdzKHRoaXNWYWx1ZUdQ
UikpKTsKKyAgICAgICAgc2xvd0Nhc2VzLmFwcGVuZChtX2ppdC5icmFuY2hJZk5vdENlbGwoSlNW
YWx1ZVJlZ3ModGhpc1ZhbHVlR1BSKSkpOwogICAgICAgICBzbG93Q2FzZXMuYXBwZW5kKG1faml0
LmJyYW5jaDgoCiAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsCiAgICAgICAg
ICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyh0aGlzVmFsdWVHUFIsIEpTQ2VsbDo6dHlwZUlu
Zm9UeXBlT2Zmc2V0KCkpLApAQCAtMzcwMyw3ICszNzAzLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJ
VDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICAKICAgICAgICAgICAgIGJhc2UudXNlKCk7
CiAgICAgICAgIAotICAgICAgICAgICAgSklUQ29tcGlsZXI6Okp1bXAgbm90Q2VsbCA9IGJyYW5j
aE5vdENlbGwoSlNWYWx1ZVJlZ3MoYmFzZUdQUikpOworICAgICAgICAgICAgSklUQ29tcGlsZXI6
Okp1bXAgbm90Q2VsbCA9IG1faml0LmJyYW5jaElmTm90Q2VsbChKU1ZhbHVlUmVncyhiYXNlR1BS
KSk7CiAgICAgICAgIAogICAgICAgICAgICAgY2FjaGVkR2V0QnlJZChub2RlLT5vcmlnaW4uc2Vt
YW50aWMsIGJhc2VHUFIsIHJlc3VsdEdQUiwgbm9kZS0+aWRlbnRpZmllck51bWJlcigpLCBub3RD
ZWxsKTsKICAgICAgICAgCkBAIC0zNzUzLDcgKzM3NTMsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklU
Ojpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgICAgICBiYXNlLnVzZSgpOwogICAgICAgICAg
ICAgZmx1c2hSZWdpc3RlcnMoKTsKICAgICAgICAgCi0gICAgICAgICAgICBKSVRDb21waWxlcjo6
SnVtcCBub3RDZWxsID0gYnJhbmNoTm90Q2VsbChKU1ZhbHVlUmVncyhiYXNlR1BSKSk7CisgICAg
ICAgICAgICBKSVRDb21waWxlcjo6SnVtcCBub3RDZWxsID0gbV9qaXQuYnJhbmNoSWZOb3RDZWxs
KEpTVmFsdWVSZWdzKGJhc2VHUFIpKTsKICAgICAgICAgCiAgICAgICAgICAgICBjYWNoZWRHZXRC
eUlkKG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgYmFzZUdQUiwgcmVzdWx0R1BSLCBub2RlLT5pZGVu
dGlmaWVyTnVtYmVyKCksIG5vdENlbGwsIERvbnRTcGlsbCk7CiAgICAgICAgIApAQCAtNDA0OSw3
ICs0MDQ5LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAg
ICAgICBHUFJUZW1wb3JhcnkgcmVtb3RlR2xvYmFsT2JqZWN0KHRoaXMpOwogICAgICAgICBHUFJU
ZW1wb3Jhcnkgc2NyYXRjaCh0aGlzKTsKIAotICAgICAgICBKSVRDb21waWxlcjo6SnVtcCBpc0Nl
bGwgPSBicmFuY2hJc0NlbGwodmFsdWUuanNWYWx1ZVJlZ3MoKSk7CisgICAgICAgIEpJVENvbXBp
bGVyOjpKdW1wIGlzQ2VsbCA9IG1faml0LmJyYW5jaElmQ2VsbCh2YWx1ZS5qc1ZhbHVlUmVncygp
KTsKIAogICAgICAgICBtX2ppdC5jb21wYXJlNjQoSklUQ29tcGlsZXI6OkVxdWFsLCB2YWx1ZS5n
cHIoKSwgVHJ1c3RlZEltbTMyKFZhbHVlVW5kZWZpbmVkKSwgcmVzdWx0LmdwcigpKTsKICAgICAg
ICAgSklUQ29tcGlsZXI6Okp1bXAgZG9uZSA9IG1faml0Lmp1bXAoKTsKQEAgLTQxMDksNyArNDEw
OSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAg
SlNWYWx1ZU9wZXJhbmQgdmFsdWUodGhpcywgbm9kZS0+Y2hpbGQxKCkpOwogICAgICAgICBHUFJU
ZW1wb3JhcnkgcmVzdWx0KHRoaXMsIFJldXNlLCB2YWx1ZSk7CiAgICAgICAgIAotICAgICAgICBK
SVRDb21waWxlcjo6SnVtcCBpc05vdENlbGwgPSBicmFuY2hOb3RDZWxsKHZhbHVlLmpzVmFsdWVS
ZWdzKCkpOworICAgICAgICBKSVRDb21waWxlcjo6SnVtcCBpc05vdENlbGwgPSBtX2ppdC5icmFu
Y2hJZk5vdENlbGwodmFsdWUuanNWYWx1ZVJlZ3MoKSk7CiAgICAgICAgIAogICAgICAgICBtX2pp
dC5jb21wYXJlOChKSVRDb21waWxlcjo6RXF1YWwsIAogICAgICAgICAgICAgSklUQ29tcGlsZXI6
OkFkZHJlc3ModmFsdWUuZ3ByKCksIEpTQ2VsbDo6dHlwZUluZm9UeXBlT2Zmc2V0KCkpLCAKQEAg
LTQxMzAsNyArNDEzMCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9k
ZSkKICAgICAgICAgSlNWYWx1ZU9wZXJhbmQgdmFsdWUodGhpcywgbm9kZS0+Y2hpbGQxKCkpOwog
ICAgICAgICBHUFJUZW1wb3JhcnkgcmVzdWx0KHRoaXMsIFJldXNlLCB2YWx1ZSk7CiAKLSAgICAg
ICAgSklUQ29tcGlsZXI6Okp1bXAgaXNOb3RDZWxsID0gYnJhbmNoTm90Q2VsbCh2YWx1ZS5qc1Zh
bHVlUmVncygpKTsKKyAgICAgICAgSklUQ29tcGlsZXI6Okp1bXAgaXNOb3RDZWxsID0gbV9qaXQu
YnJhbmNoSWZOb3RDZWxsKHZhbHVlLmpzVmFsdWVSZWdzKCkpOwogCiAgICAgICAgIG1faml0LmNv
bXBhcmU4KEpJVENvbXBpbGVyOjpBYm92ZU9yRXF1YWwsCiAgICAgICAgICAgICBKSVRDb21waWxl
cjo6QWRkcmVzcyh2YWx1ZS5ncHIoKSwgSlNDZWxsOjp0eXBlSW5mb1R5cGVPZmZzZXQoKSksCkBA
IC00MTgyLDEyICs0MTgyLDEyIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSog
bm9kZSkKICAgICAgICAgCiAgICAgICAgIEFTU0VSVChub2RlLT5jaGlsZDEoKS51c2VLaW5kKCkg
PT0gVW50eXBlZFVzZSB8fCBub2RlLT5jaGlsZDEoKS51c2VLaW5kKCkgPT0gQ2VsbFVzZSB8fCBu
b2RlLT5jaGlsZDEoKS51c2VLaW5kKCkgPT0gU3RyaW5nVXNlKTsKIAotICAgICAgICBKSVRDb21w
aWxlcjo6SnVtcCBpc05vdENlbGwgPSBicmFuY2hOb3RDZWxsKEpTVmFsdWVSZWdzKHZhbHVlR1BS
KSk7CisgICAgICAgIEpJVENvbXBpbGVyOjpKdW1wIGlzTm90Q2VsbCA9IG1faml0LmJyYW5jaElm
Tm90Q2VsbChKU1ZhbHVlUmVncyh2YWx1ZUdQUikpOwogICAgICAgICBpZiAobm9kZS0+Y2hpbGQx
KCkudXNlS2luZCgpICE9IFVudHlwZWRVc2UpCiAgICAgICAgICAgICBERkdfVFlQRV9DSEVDSyhK
U1ZhbHVlU291cmNlKHZhbHVlR1BSKSwgbm9kZS0+Y2hpbGQxKCksIFNwZWNDZWxsLCBpc05vdENl
bGwpOwogCiAgICAgICAgIGlmICghbm9kZS0+Y2hpbGQxKCktPnNob3VsZFNwZWN1bGF0ZU9iamVj
dCgpIHx8IG5vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSA9PSBTdHJpbmdVc2UpIHsKLSAgICAgICAg
ICAgIEpJVENvbXBpbGVyOjpKdW1wIG5vdFN0cmluZyA9IGJyYW5jaE5vdFN0cmluZyh2YWx1ZUdQ
Uik7CisgICAgICAgICAgICBKSVRDb21waWxlcjo6SnVtcCBub3RTdHJpbmcgPSBtX2ppdC5icmFu
Y2hJZk5vdFN0cmluZyh2YWx1ZUdQUik7CiAgICAgICAgICAgICBpZiAobm9kZS0+Y2hpbGQxKCku
dXNlS2luZCgpID09IFN0cmluZ1VzZSkKICAgICAgICAgICAgICAgICBERkdfVFlQRV9DSEVDSyhK
U1ZhbHVlU291cmNlKHZhbHVlR1BSKSwgbm9kZS0+Y2hpbGQxKCksIFNwZWNTdHJpbmcsIG5vdFN0
cmluZyk7CiAgICAgICAgICAgICBtX2ppdC5tb3ZlKFRydXN0ZWRJbW1QdHIobV9qaXQudm0oKS0+
c21hbGxTdHJpbmdzLnN0cmluZ1N0cmluZygpKSwgcmVzdWx0R1BSKTsKQEAgLTQ2MjgsOCArNDYy
OCw4IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAg
ZWxzZSBpZiAoY2FjaGVkVHlwZUxvY2F0aW9uLT5tX2xhc3RTZWVuVHlwZSA9PSBUeXBlTnVtYmVy
KQogICAgICAgICAgICAganVtcFRvRW5kLmFwcGVuZChtX2ppdC5icmFuY2hUZXN0NjQoTWFjcm9B
c3NlbWJsZXI6Ok5vblplcm8sIHZhbHVlR1BSLCBHUFJJbmZvOjp0YWdUeXBlTnVtYmVyUmVnaXN0
ZXIpKTsKICAgICAgICAgZWxzZSBpZiAoY2FjaGVkVHlwZUxvY2F0aW9uLT5tX2xhc3RTZWVuVHlw
ZSA9PSBUeXBlU3RyaW5nKSB7Ci0gICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBpc05v
dENlbGwgPSBicmFuY2hOb3RDZWxsKEpTVmFsdWVSZWdzKHZhbHVlR1BSKSk7Ci0gICAgICAgICAg
ICBqdW1wVG9FbmQuYXBwZW5kKGJyYW5jaElzU3RyaW5nKHZhbHVlR1BSKSk7CisgICAgICAgICAg
ICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBpc05vdENlbGwgPSBtX2ppdC5icmFuY2hJZk5vdENlbGwo
SlNWYWx1ZVJlZ3ModmFsdWVHUFIpKTsKKyAgICAgICAgICAgIGp1bXBUb0VuZC5hcHBlbmQobV9q
aXQuYnJhbmNoSWZTdHJpbmcodmFsdWVHUFIpKTsKICAgICAgICAgICAgIGlzTm90Q2VsbC5saW5r
KCZtX2ppdCk7CiAgICAgICAgIH0KIApAQCAtNDY0NCw3ICs0NjQ0LDcgQEAgdm9pZCBTcGVjdWxh
dGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICBtX2ppdC5zdG9yZTY0KHZhbHVl
R1BSLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhzY3JhdGNoMUdQUiwgVHlwZVByb2ZpbGVyTG9n
OjpMb2dFbnRyeTo6dmFsdWVPZmZzZXQoKSkpOwogCiAgICAgICAgIC8vIFN0b3JlIHRoZSBzdHJ1
Y3R1cmVJRCBvZiB0aGUgY2VsbCBpZiB2YWx1ZUdQUiBpcyBhIGNlbGwsIG90aGVyd2lzZSwgc3Rv
cmUgMCBvbiB0aGUgbG9nIGVudHJ5LgotICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBpc05v
dENlbGwgPSBicmFuY2hOb3RDZWxsKEpTVmFsdWVSZWdzKHZhbHVlR1BSKSk7CisgICAgICAgIE1h
Y3JvQXNzZW1ibGVyOjpKdW1wIGlzTm90Q2VsbCA9IG1faml0LmJyYW5jaElmTm90Q2VsbChKU1Zh
bHVlUmVncyh2YWx1ZUdQUikpOwogICAgICAgICBtX2ppdC5sb2FkMzIoTWFjcm9Bc3NlbWJsZXI6
OkFkZHJlc3ModmFsdWVHUFIsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSksIHNjcmF0Y2gz
R1BSKTsKICAgICAgICAgbV9qaXQuc3RvcmUzMihzY3JhdGNoM0dQUiwgTWFjcm9Bc3NlbWJsZXI6
OkFkZHJlc3Moc2NyYXRjaDFHUFIsIFR5cGVQcm9maWxlckxvZzo6TG9nRW50cnk6OnN0cnVjdHVy
ZUlET2Zmc2V0KCkpKTsKICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXAgc2tpcElzQ2VsbCA9
IG1faml0Lmp1bXAoKTsKQEAgLTQ3NzksNyArNDc3OSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6
OndyaXRlQmFycmllcihHUFJSZWcKIHsKICAgICBKSVRDb21waWxlcjo6SnVtcCBpc05vdENlbGw7
CiAgICAgaWYgKCFpc0tub3duQ2VsbCh2YWx1ZVVzZS5ub2RlKCkpKQotICAgICAgICBpc05vdENl
bGwgPSBicmFuY2hOb3RDZWxsKEpTVmFsdWVSZWdzKHZhbHVlR1BSKSk7CisgICAgICAgIGlzTm90
Q2VsbCA9IG1faml0LmJyYW5jaElmTm90Q2VsbChKU1ZhbHVlUmVncyh2YWx1ZUdQUikpOwogICAg
IAogICAgIEpJVENvbXBpbGVyOjpKdW1wIG93bmVySXNSZW1lbWJlcmVkT3JJbkVkZW4gPSBtX2pp
dC5qdW1wSWZJc1JlbWVtYmVyZWRPckluRWRlbihvd25lckdQUik7CiAgICAgc3RvcmVUb1dyaXRl
QmFycmllckJ1ZmZlcihvd25lckdQUiwgc2NyYXRjaDEsIHNjcmF0Y2gyKTsKQEAgLTQ3OTMsNyAr
NDc5Myw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OndyaXRlQmFycmllcihKU0NlbGwKIHsKICAg
ICBKSVRDb21waWxlcjo6SnVtcCBpc05vdENlbGw7CiAgICAgaWYgKCFpc0tub3duQ2VsbCh2YWx1
ZVVzZS5ub2RlKCkpKQotICAgICAgICBpc05vdENlbGwgPSBicmFuY2hOb3RDZWxsKEpTVmFsdWVS
ZWdzKHZhbHVlR1BSKSk7CisgICAgICAgIGlzTm90Q2VsbCA9IG1faml0LmJyYW5jaElmTm90Q2Vs
bChKU1ZhbHVlUmVncyh2YWx1ZUdQUikpOwogICAgIAogICAgIEpJVENvbXBpbGVyOjpKdW1wIG93
bmVySXNSZW1lbWJlcmVkT3JJbkVkZW4gPSBtX2ppdC5qdW1wSWZJc1JlbWVtYmVyZWRPckluRWRl
bihvd25lcik7CiAgICAgc3RvcmVUb1dyaXRlQmFycmllckJ1ZmZlcihvd25lciwgc2NyYXRjaDEs
IHNjcmF0Y2gyKTsKQEAgLTQ4MDQsMzQgKzQ4MDQsNiBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjp3
cml0ZUJhcnJpZXIoSlNDZWxsCiB9CiAjZW5kaWYgLy8gRU5BQkxFKEdHQykKIAotSklUQ29tcGls
ZXI6Okp1bXAgU3BlY3VsYXRpdmVKSVQ6OmJyYW5jaElzQ2VsbChKU1ZhbHVlUmVncyByZWdzKQot
ewotICAgIHJldHVybiBtX2ppdC5icmFuY2hUZXN0NjQoTWFjcm9Bc3NlbWJsZXI6Olplcm8sIHJl
Z3MuZ3ByKCksIEdQUkluZm86OnRhZ01hc2tSZWdpc3Rlcik7Ci19Ci0KLUpJVENvbXBpbGVyOjpK
dW1wIFNwZWN1bGF0aXZlSklUOjpicmFuY2hOb3RDZWxsKEpTVmFsdWVSZWdzIHJlZ3MpCi17Ci0g
ICAgcmV0dXJuIG1faml0LmJyYW5jaFRlc3Q2NChNYWNyb0Fzc2VtYmxlcjo6Tm9uWmVybywgcmVn
cy5ncHIoKSwgR1BSSW5mbzo6dGFnTWFza1JlZ2lzdGVyKTsKLX0KLQotSklUQ29tcGlsZXI6Okp1
bXAgU3BlY3VsYXRpdmVKSVQ6OmJyYW5jaElzT3RoZXIoSlNWYWx1ZVJlZ3MgcmVncywgR1BSUmVn
IHRlbXBHUFIpCi17Ci0gICAgbV9qaXQubW92ZShyZWdzLmdwcigpLCB0ZW1wR1BSKTsKLSAgICBt
X2ppdC5hbmQ2NChNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbTMyKH5UYWdCaXRVbmRlZmluZWQp
LCB0ZW1wR1BSKTsKLSAgICByZXR1cm4gbV9qaXQuYnJhbmNoNjQoCi0gICAgICAgIE1hY3JvQXNz
ZW1ibGVyOjpFcXVhbCwgdGVtcEdQUiwKLSAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJ
bW02NChWYWx1ZU51bGwpKTsKLX0KLQotSklUQ29tcGlsZXI6Okp1bXAgU3BlY3VsYXRpdmVKSVQ6
OmJyYW5jaE5vdE90aGVyKEpTVmFsdWVSZWdzIHJlZ3MsIEdQUlJlZyB0ZW1wR1BSKQotewotICAg
IG1faml0Lm1vdmUocmVncy5ncHIoKSwgdGVtcEdQUik7Ci0gICAgbV9qaXQuYW5kNjQoTWFjcm9B
c3NlbWJsZXI6OlRydXN0ZWRJbW0zMih+VGFnQml0VW5kZWZpbmVkKSwgdGVtcEdQUik7Ci0gICAg
cmV0dXJuIG1faml0LmJyYW5jaDY0KAotICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWws
IHRlbXBHUFIsCi0gICAgICAgIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tNjQoVmFsdWVOdWxs
KSk7Ci19Ci0KIHZvaWQgU3BlY3VsYXRpdmVKSVQ6Om1vdmVUcnVlVG8oR1BSUmVnIGdwcikKIHsK
ICAgICBtX2ppdC5tb3ZlKFRydXN0ZWRJbW0zMihWYWx1ZVRydWUpLCBncHIpOwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaAkocmV2aXNpb24g
MTgzNjM1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5o
CSh3b3JraW5nIGNvcHkpCkBAIC0yMjE1LDE1ICsyMjE1LDYgQEAgcHVibGljOgogICAgIHZvaWQg
Y29tcGlsZU5vdGlmeVdyaXRlKE5vZGUqKTsKICAgICBib29sIGNvbXBpbGVSZWdFeHBFeGVjKE5v
ZGUqKTsKICAgICAKLSAgICBKSVRDb21waWxlcjo6SnVtcCBicmFuY2hJc0NlbGwoSlNWYWx1ZVJl
Z3MpOwotICAgIEpJVENvbXBpbGVyOjpKdW1wIGJyYW5jaE5vdENlbGwoSlNWYWx1ZVJlZ3MpOwot
ICAgIEpJVENvbXBpbGVyOjpKdW1wIGJyYW5jaElzT3RoZXIoSlNWYWx1ZVJlZ3MsIEdQUlJlZyB0
ZW1wR1BSKTsKLSAgICBKSVRDb21waWxlcjo6SnVtcCBicmFuY2hOb3RPdGhlcihKU1ZhbHVlUmVn
cywgR1BSUmVnIHRlbXBHUFIpOwotICAgIEpJVENvbXBpbGVyOjpKdW1wIGJyYW5jaElzT2JqZWN0
KEdQUlJlZyBjZWxsR1BSKTsKLSAgICBKSVRDb21waWxlcjo6SnVtcCBicmFuY2hOb3RPYmplY3Qo
R1BSUmVnIGNlbGxHUFIpOwotICAgIEpJVENvbXBpbGVyOjpKdW1wIGJyYW5jaElzU3RyaW5nKEdQ
UlJlZyBjZWxsR1BSKTsKLSAgICBKSVRDb21waWxlcjo6SnVtcCBicmFuY2hOb3RTdHJpbmcoR1BS
UmVnIGNlbGxHUFIpOwotICAgIAogICAgIHZvaWQgbW92ZVRydWVUbyhHUFJSZWcpOwogICAgIHZv
aWQgbW92ZUZhbHNlVG8oR1BSUmVnKTsKICAgICB2b2lkIGJsZXNzQm9vbGVhbihHUFJSZWcpOwpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5oCShyZXZp
c2lvbiAxODM2MzUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVy
cy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zODUsNiArMzg1LDc2IEBAIHB1YmxpYzoKICNlbmRpZgog
ICAgIH0KICAgICAKKyAgICBKdW1wIGJyYW5jaElmQ2VsbChHUFJSZWcgcmVnKQorICAgIHsKKyNp
ZiBVU0UoSlNWQUxVRTY0KQorICAgICAgICByZXR1cm4gYnJhbmNoVGVzdDY0KE1hY3JvQXNzZW1i
bGVyOjpaZXJvLCByZWcsIEdQUkluZm86OnRhZ01hc2tSZWdpc3Rlcik7CisjZWxzZQorICAgICAg
ICByZXR1cm4gYnJhbmNoMzIoTWFjcm9Bc3NlbWJsZXI6OkVxdWFsLCByZWcsIFRydXN0ZWRJbW0z
MihKU1ZhbHVlOjpDZWxsVGFnKSk7CisjZW5kaWYKKyAgICB9CisgICAgSnVtcCBicmFuY2hJZkNl
bGwoSlNWYWx1ZVJlZ3MgcmVncykKKyAgICB7CisjaWYgVVNFKEpTVkFMVUU2NCkKKyAgICAgICAg
cmV0dXJuIGJyYW5jaElmQ2VsbChyZWdzLmdwcigpKTsKKyNlbHNlCisgICAgICAgIHJldHVybiBi
cmFuY2hJZkNlbGwocmVncy50YWdHUFIoKSk7CisjZW5kaWYKKyAgICB9CisgICAgCisgICAgSnVt
cCBicmFuY2hJZk90aGVyKEpTVmFsdWVSZWdzIHJlZ3MsIEdQUlJlZyB0ZW1wR1BSKQorICAgIHsK
KyNpZiBVU0UoSlNWQUxVRTY0KQorICAgICAgICBtb3ZlKHJlZ3MuZ3ByKCksIHRlbXBHUFIpOwor
ICAgICAgICBhbmQ2NChUcnVzdGVkSW1tMzIoflRhZ0JpdFVuZGVmaW5lZCksIHRlbXBHUFIpOwor
ICAgICAgICByZXR1cm4gYnJhbmNoNjQoRXF1YWwsIHRlbXBHUFIsIFRydXN0ZWRJbW02NChWYWx1
ZU51bGwpKTsKKyNlbHNlCisgICAgICAgIG9yMzIoVHJ1c3RlZEltbTMyKDEpLCByZWdzLnRhZ0dQ
UigpLCB0ZW1wR1BSKTsKKyAgICAgICAgcmV0dXJuIGJyYW5jaDMyKEVxdWFsLCB0ZW1wR1BSLCBU
cnVzdGVkSW1tMzIoSlNWYWx1ZTo6TnVsbFRhZykpOworI2VuZGlmCisgICAgfQorICAgIAorICAg
IEp1bXAgYnJhbmNoSWZOb3RPdGhlcihKU1ZhbHVlUmVncyByZWdzLCBHUFJSZWcgdGVtcEdQUikK
KyAgICB7CisjaWYgVVNFKEpTVkFMVUU2NCkKKyAgICAgICAgbW92ZShyZWdzLmdwcigpLCB0ZW1w
R1BSKTsKKyAgICAgICAgYW5kNjQoVHJ1c3RlZEltbTMyKH5UYWdCaXRVbmRlZmluZWQpLCB0ZW1w
R1BSKTsKKyAgICAgICAgcmV0dXJuIGJyYW5jaDY0KE5vdEVxdWFsLCB0ZW1wR1BSLCBUcnVzdGVk
SW1tNjQoVmFsdWVOdWxsKSk7CisjZWxzZQorICAgICAgICBvcjMyKFRydXN0ZWRJbW0zMigxKSwg
cmVncy50YWdHUFIoKSwgdGVtcEdQUik7CisgICAgICAgIHJldHVybiBicmFuY2gzMihOb3RFcXVh
bCwgdGVtcEdQUiwgVHJ1c3RlZEltbTMyKEpTVmFsdWU6Ok51bGxUYWcpKTsKKyNlbmRpZgorICAg
IH0KKyAgICAKKyAgICBKdW1wIGJyYW5jaElmT2JqZWN0KEdQUlJlZyBjZWxsR1BSKQorICAgIHsK
KyAgICAgICAgcmV0dXJuIGJyYW5jaDgoCisgICAgICAgICAgICBBYm92ZU9yRXF1YWwsIEFkZHJl
c3MoY2VsbEdQUiwgSlNDZWxsOjp0eXBlSW5mb1R5cGVPZmZzZXQoKSksIFRydXN0ZWRJbW0zMihP
YmplY3RUeXBlKSk7CisgICAgfQorICAgIAorICAgIEp1bXAgYnJhbmNoSWZOb3RPYmplY3QoR1BS
UmVnIGNlbGxHUFIpCisgICAgeworICAgICAgICByZXR1cm4gYnJhbmNoOCgKKyAgICAgICAgICAg
IEJlbG93LCBBZGRyZXNzKGNlbGxHUFIsIEpTQ2VsbDo6dHlwZUluZm9UeXBlT2Zmc2V0KCkpLCBU
cnVzdGVkSW1tMzIoT2JqZWN0VHlwZSkpOworICAgIH0KKyAgICAKKyAgICBKdW1wIGJyYW5jaElm
VHlwZShHUFJSZWcgY2VsbEdQUiwgSlNUeXBlIHR5cGUpCisgICAgeworICAgICAgICByZXR1cm4g
YnJhbmNoOChFcXVhbCwgQWRkcmVzcyhjZWxsR1BSLCBKU0NlbGw6OnR5cGVJbmZvVHlwZU9mZnNl
dCgpKSwgVHJ1c3RlZEltbTMyKHR5cGUpKTsKKyAgICB9CisgICAgCisgICAgSnVtcCBicmFuY2hJ
Zk5vdFR5cGUoR1BSUmVnIGNlbGxHUFIsIEpTVHlwZSB0eXBlKQorICAgIHsKKyAgICAgICAgcmV0
dXJuIGJyYW5jaDgoTm90RXF1YWwsIEFkZHJlc3MoY2VsbEdQUiwgSlNDZWxsOjp0eXBlSW5mb1R5
cGVPZmZzZXQoKSksIFRydXN0ZWRJbW0zMih0eXBlKSk7CisgICAgfQorICAgIAorICAgIEp1bXAg
YnJhbmNoSWZTdHJpbmcoR1BSUmVnIGNlbGxHUFIpIHsgcmV0dXJuIGJyYW5jaElmVHlwZShjZWxs
R1BSLCBTdHJpbmdUeXBlKTsgfQorICAgIEp1bXAgYnJhbmNoSWZOb3RTdHJpbmcoR1BSUmVnIGNl
bGxHUFIpIHsgcmV0dXJuIGJyYW5jaElmTm90VHlwZShjZWxsR1BSLCBTdHJpbmdUeXBlKTsgfQor
ICAgIEp1bXAgYnJhbmNoSWZTeW1ib2woR1BSUmVnIGNlbGxHUFIpIHsgcmV0dXJuIGJyYW5jaElm
VHlwZShjZWxsR1BSLCBTeW1ib2xUeXBlKTsgfQorICAgIEp1bXAgYnJhbmNoSWZOb3RTeW1ib2wo
R1BSUmVnIGNlbGxHUFIpIHsgcmV0dXJuIGJyYW5jaElmTm90VHlwZShjZWxsR1BSLCBTeW1ib2xU
eXBlKTsgfQorICAgIEp1bXAgYnJhbmNoSWZGdW5jdGlvbihHUFJSZWcgY2VsbEdQUikgeyByZXR1
cm4gYnJhbmNoSWZUeXBlKGNlbGxHUFIsIEZ1bmN0aW9uVHlwZSk7IH0KKyAgICBKdW1wIGJyYW5j
aElmTm90RnVuY3Rpb24oR1BSUmVnIGNlbGxHUFIpIHsgcmV0dXJuIGJyYW5jaElmTm90VHlwZShj
ZWxsR1BSLCBGdW5jdGlvblR5cGUpOyB9CisgICAgCiAgICAgSnVtcCBicmFuY2hJc0VtcHR5KEpT
VmFsdWVSZWdzIHJlZ3MpCiAgICAgewogI2lmIFVTRShKU1ZBTFVFNjQpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>252102</attachid>
            <date>2015-04-30 16:13:18 -0700</date>
            <delta_ts>2015-04-30 16:27:09 -0700</delta_ts>
            <desc>almost done</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>52421</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2
ZUpJVDMyXzY0LmNwcAkocmV2aXNpb24gMTgzNjUwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjQ2LDcg
KzI0Niw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6Om5vblNwZWN1bGF0aXZlTm9uUGUKICAgICBK
SVRDb21waWxlcjo6SnVtcCBub3RNYXNxdWVyYWRlc0FzVW5kZWZpbmVkOyAgIAogICAgIGlmICht
YXNxdWVyYWRlc0FzVW5kZWZpbmVkV2F0Y2hwb2ludElzU3RpbGxWYWxpZCgpKSB7CiAgICAgICAg
IGlmICghaXNLbm93bkNlbGwob3BlcmFuZC5ub2RlKCkpKQotICAgICAgICAgICAgbm90Q2VsbCA9
IGJyYW5jaE5vdENlbGwoYXJnLmpzVmFsdWVSZWdzKCkpOworICAgICAgICAgICAgbm90Q2VsbCA9
IG1faml0LmJyYW5jaElmTm90Q2VsbChhcmcuanNWYWx1ZVJlZ3MoKSk7CiAgICAgICAgIAogICAg
ICAgICBtX2ppdC5tb3ZlKGludmVydCA/IFRydXN0ZWRJbW0zMigxKSA6IFRydXN0ZWRJbW0zMigw
KSwgcmVzdWx0UGF5bG9hZEdQUik7CiAgICAgICAgIG5vdE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQg
PSBtX2ppdC5qdW1wKCk7CkBAIC0yNTUsNyArMjU1LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6
bm9uU3BlY3VsYXRpdmVOb25QZQogICAgICAgICBHUFJUZW1wb3JhcnkgcmVtb3RlR2xvYmFsT2Jq
ZWN0KHRoaXMpOwogCiAgICAgICAgIGlmICghaXNLbm93bkNlbGwob3BlcmFuZC5ub2RlKCkpKQot
ICAgICAgICAgICAgbm90Q2VsbCA9IGJyYW5jaE5vdENlbGwoYXJnLmpzVmFsdWVSZWdzKCkpOwor
ICAgICAgICAgICAgbm90Q2VsbCA9IG1faml0LmJyYW5jaElmTm90Q2VsbChhcmcuanNWYWx1ZVJl
Z3MoKSk7CiAgICAgICAgIAogICAgICAgICBKSVRDb21waWxlcjo6SnVtcCBpc01hc3F1ZXJhZGVz
QXNVbmRlZmluZWQgPSBtX2ppdC5icmFuY2hUZXN0OCgKICAgICAgICAgICAgIEpJVENvbXBpbGVy
OjpOb25aZXJvLCAKQEAgLTMxNCw3ICszMTQsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpub25T
cGVjdWxhdGl2ZVBlZXBoCiAKICAgICBpZiAobWFzcXVlcmFkZXNBc1VuZGVmaW5lZFdhdGNocG9p
bnRJc1N0aWxsVmFsaWQoKSkgewogICAgICAgICBpZiAoIWlzS25vd25DZWxsKG9wZXJhbmQubm9k
ZSgpKSkKLSAgICAgICAgICAgIG5vdENlbGwgPSBicmFuY2hOb3RDZWxsKGFyZy5qc1ZhbHVlUmVn
cygpKTsKKyAgICAgICAgICAgIG5vdENlbGwgPSBtX2ppdC5icmFuY2hJZk5vdENlbGwoYXJnLmpz
VmFsdWVSZWdzKCkpOwogICAgICAgICAKICAgICAgICAganVtcChpbnZlcnQgPyB0YWtlbiA6IG5v
dFRha2VuLCBGb3JjZUp1bXApOwogICAgIH0gZWxzZSB7CkBAIC0zMjIsNyArMzIyLDcgQEAgdm9p
ZCBTcGVjdWxhdGl2ZUpJVDo6bm9uU3BlY3VsYXRpdmVQZWVwaAogICAgICAgICBHUFJUZW1wb3Jh
cnkgcmVtb3RlR2xvYmFsT2JqZWN0KHRoaXMpOwogCiAgICAgICAgIGlmICghaXNLbm93bkNlbGwo
b3BlcmFuZC5ub2RlKCkpKQotICAgICAgICAgICAgbm90Q2VsbCA9IGJyYW5jaE5vdENlbGwoYXJn
LmpzVmFsdWVSZWdzKCkpOworICAgICAgICAgICAgbm90Q2VsbCA9IG1faml0LmJyYW5jaElmTm90
Q2VsbChhcmcuanNWYWx1ZVJlZ3MoKSk7CiAgICAgICAgIAogICAgICAgICBicmFuY2hUZXN0OChK
SVRDb21waWxlcjo6WmVybywgCiAgICAgICAgICAgICBKSVRDb21waWxlcjo6QWRkcmVzcyhhcmdQ
YXlsb2FkR1BSLCBKU0NlbGw6OnR5cGVJbmZvRmxhZ3NPZmZzZXQoKSksIApAQCAtNzk5LDcgKzc5
OSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXRDYWxsKE5vZGUqIG5vZGUKICAgICAKICAg
ICBDYWxsTGlua0luZm8qIGluZm8gPSBtX2ppdC5jb2RlQmxvY2soKS0+YWRkQ2FsbExpbmtJbmZv
KCk7CiAKLSAgICBzbG93UGF0aC5hcHBlbmQoYnJhbmNoTm90Q2VsbChjYWxsZWUuanNWYWx1ZVJl
Z3MoKSkpOworICAgIHNsb3dQYXRoLmFwcGVuZChtX2ppdC5icmFuY2hJZk5vdENlbGwoY2FsbGVl
LmpzVmFsdWVSZWdzKCkpKTsKICAgICBzbG93UGF0aC5hcHBlbmQobV9qaXQuYnJhbmNoUHRyV2l0
aFBhdGNoKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgY2FsbGVlUGF5bG9hZEdQUiwgdGFyZ2V0
VG9DaGVjaykpOwogCiAgICAgSklUQ29tcGlsZXI6OkNhbGwgZmFzdENhbGwgPSBtX2ppdC5uZWFy
Q2FsbCgpOwpAQCAtMTAyNSw3ICsxMDI1LDcgQEAgR1BSUmVnIFNwZWN1bGF0aXZlSklUOjpmaWxs
U3BlY3VsYXRlQ2VsbAogICAgICAgICBpZiAodHlwZSAmIH5TcGVjQ2VsbCkgewogICAgICAgICAg
ICAgc3BlY3VsYXRpb25DaGVjaygKICAgICAgICAgICAgICAgICBCYWRUeXBlLCBKU1ZhbHVlUmVn
cyh0YWdHUFIsIHBheWxvYWRHUFIpLCBlZGdlLAotICAgICAgICAgICAgICAgIGJyYW5jaE5vdENl
bGwoaW5mby5qc1ZhbHVlUmVncygpKSk7CisgICAgICAgICAgICAgICAgbV9qaXQuYnJhbmNoSWZO
b3RDZWxsKGluZm8uanNWYWx1ZVJlZ3MoKSkpOwogICAgICAgICB9CiAgICAgICAgIG1fZ3Bycy51
bmxvY2sodGFnR1BSKTsKICAgICAgICAgbV9ncHJzLnJlbGVhc2UodGFnR1BSKTsKQEAgLTExNTAs
MTIgKzExNTAsMTIgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU9iamVjdEVxdWFsaQog
ICAgIAogICAgIGlmIChtYXNxdWVyYWRlc0FzVW5kZWZpbmVkV2F0Y2hwb2ludElzU3RpbGxWYWxp
ZCgpKSB7CiAgICAgICAgIERGR19UWVBFX0NIRUNLKAotICAgICAgICAgICAgSlNWYWx1ZVNvdXJj
ZTo6dW5ib3hlZENlbGwob3AxR1BSKSwgbm9kZS0+Y2hpbGQxKCksIFNwZWNPYmplY3QsIGJyYW5j
aE5vdE9iamVjdChvcDFHUFIpKTsKKyAgICAgICAgICAgIEpTVmFsdWVTb3VyY2U6OnVuYm94ZWRD
ZWxsKG9wMUdQUiksIG5vZGUtPmNoaWxkMSgpLCBTcGVjT2JqZWN0LCBtX2ppdC5icmFuY2hJZk5v
dE9iamVjdChvcDFHUFIpKTsKICAgICAgICAgREZHX1RZUEVfQ0hFQ0soCi0gICAgICAgICAgICBK
U1ZhbHVlU291cmNlOjp1bmJveGVkQ2VsbChvcDJHUFIpLCBub2RlLT5jaGlsZDIoKSwgU3BlY09i
amVjdCwgYnJhbmNoTm90T2JqZWN0KG9wMkdQUikpOworICAgICAgICAgICAgSlNWYWx1ZVNvdXJj
ZTo6dW5ib3hlZENlbGwob3AyR1BSKSwgbm9kZS0+Y2hpbGQyKCksIFNwZWNPYmplY3QsIG1faml0
LmJyYW5jaElmTm90T2JqZWN0KG9wMkdQUikpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIERGR19U
WVBFX0NIRUNLKAotICAgICAgICAgICAgSlNWYWx1ZVNvdXJjZTo6dW5ib3hlZENlbGwob3AxR1BS
KSwgbm9kZS0+Y2hpbGQxKCksIFNwZWNPYmplY3QsIGJyYW5jaE5vdE9iamVjdChvcDFHUFIpKTsK
KyAgICAgICAgICAgIEpTVmFsdWVTb3VyY2U6OnVuYm94ZWRDZWxsKG9wMUdQUiksIG5vZGUtPmNo
aWxkMSgpLCBTcGVjT2JqZWN0LCBtX2ppdC5icmFuY2hJZk5vdE9iamVjdChvcDFHUFIpKTsKICAg
ICAgICAgc3BlY3VsYXRpb25DaGVjayhCYWRUeXBlLCBKU1ZhbHVlU291cmNlOjp1bmJveGVkQ2Vs
bChvcDFHUFIpLCBub2RlLT5jaGlsZDEoKSwKICAgICAgICAgICAgIG1faml0LmJyYW5jaFRlc3Q4
KAogICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpOb25aZXJvLCAKQEAgLTExNjMsNyAr
MTE2Myw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVPYmplY3RFcXVhbGkKICAgICAg
ICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbTMyKE1hc3F1ZXJhZGVzQXNVbmRl
ZmluZWQpKSk7CiAKICAgICAgICAgREZHX1RZUEVfQ0hFQ0soCi0gICAgICAgICAgICBKU1ZhbHVl
U291cmNlOjp1bmJveGVkQ2VsbChvcDJHUFIpLCBub2RlLT5jaGlsZDIoKSwgU3BlY09iamVjdCwg
YnJhbmNoTm90T2JqZWN0KG9wMkdQUikpOworICAgICAgICAgICAgSlNWYWx1ZVNvdXJjZTo6dW5i
b3hlZENlbGwob3AyR1BSKSwgbm9kZS0+Y2hpbGQyKCksIFNwZWNPYmplY3QsIG1faml0LmJyYW5j
aElmTm90T2JqZWN0KG9wMkdQUikpOwogICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEJhZFR5cGUs
IEpTVmFsdWVTb3VyY2U6OnVuYm94ZWRDZWxsKG9wMkdQUiksIG5vZGUtPmNoaWxkMigpLAogICAg
ICAgICAgICAgbV9qaXQuYnJhbmNoVGVzdDgoCiAgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJs
ZXI6Ok5vblplcm8sCkBAIC0xMjAwLDEwICsxMjAwLDEwIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6
OmNvbXBpbGVPYmplY3RUb09iamUKIAogICAgIGlmIChtYXNxdWVyYWRlc0FzVW5kZWZpbmVkV2F0
Y2hwb2ludFZhbGlkKSB7CiAgICAgICAgIERGR19UWVBFX0NIRUNLKAotICAgICAgICAgICAgSlNW
YWx1ZVNvdXJjZTo6dW5ib3hlZENlbGwob3AxR1BSKSwgbGVmdENoaWxkLCBTcGVjT2JqZWN0LCBi
cmFuY2hOb3RPYmplY3Qob3AxR1BSKSk7CisgICAgICAgICAgICBKU1ZhbHVlU291cmNlOjp1bmJv
eGVkQ2VsbChvcDFHUFIpLCBsZWZ0Q2hpbGQsIFNwZWNPYmplY3QsIG1faml0LmJyYW5jaElmTm90
T2JqZWN0KG9wMUdQUikpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIERGR19UWVBFX0NIRUNLKAot
ICAgICAgICAgICAgSlNWYWx1ZVNvdXJjZTo6dW5ib3hlZENlbGwob3AxR1BSKSwgbGVmdENoaWxk
LCBTcGVjT2JqZWN0LCBicmFuY2hOb3RPYmplY3Qob3AxR1BSKSk7CisgICAgICAgICAgICBKU1Zh
bHVlU291cmNlOjp1bmJveGVkQ2VsbChvcDFHUFIpLCBsZWZ0Q2hpbGQsIFNwZWNPYmplY3QsIG1f
aml0LmJyYW5jaElmTm90T2JqZWN0KG9wMUdQUikpOwogICAgICAgICBzcGVjdWxhdGlvbkNoZWNr
KEJhZFR5cGUsIEpTVmFsdWVTb3VyY2U6OnVuYm94ZWRDZWxsKG9wMUdQUiksIGxlZnRDaGlsZCwg
CiAgICAgICAgICAgICBtX2ppdC5icmFuY2hUZXN0OCgKICAgICAgICAgICAgICAgICBNYWNyb0Fz
c2VtYmxlcjo6Tm9uWmVybywgCkBAIC0xMjE0LDE1ICsxMjE0LDE1IEBAIHZvaWQgU3BlY3VsYXRp
dmVKSVQ6OmNvbXBpbGVPYmplY3RUb09iamUKICAgICAKICAgICAvLyBJdCBzZWVtcyB0aGF0IG1v
c3Qgb2YgdGhlIHRpbWUgd2hlbiBwcm9ncmFtcyBkbyBhID09IGIgd2hlcmUgYiBtYXkgYmUgZWl0
aGVyIG51bGwvdW5kZWZpbmVkCiAgICAgLy8gb3IgYW4gb2JqZWN0LCBiIGlzIHVzdWFsbHkgYW4g
b2JqZWN0LiBCYWxhbmNlIHRoZSBicmFuY2hlcyB0byBtYWtlIHRoYXQgY2FzZSBmYXN0LgotICAg
IE1hY3JvQXNzZW1ibGVyOjpKdW1wIHJpZ2h0Tm90Q2VsbCA9IGJyYW5jaE5vdENlbGwob3AyLmpz
VmFsdWVSZWdzKCkpOworICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIHJpZ2h0Tm90Q2VsbCA9IG1f
aml0LmJyYW5jaElmTm90Q2VsbChvcDIuanNWYWx1ZVJlZ3MoKSk7CiAgICAgCiAgICAgLy8gV2Ug
a25vdyB0aGF0IHdpdGhpbiB0aGlzIGJyYW5jaCwgcmlnaHRDaGlsZCBtdXN0IGJlIGEgY2VsbC4K
ICAgICBpZiAobWFzcXVlcmFkZXNBc1VuZGVmaW5lZFdhdGNocG9pbnRWYWxpZCkgewogICAgICAg
ICBERkdfVFlQRV9DSEVDSygKLSAgICAgICAgICAgIEpTVmFsdWVSZWdzKG9wMlRhZ0dQUiwgb3Ay
UGF5bG9hZEdQUiksIHJpZ2h0Q2hpbGQsICh+U3BlY0NlbGwpIHwgU3BlY09iamVjdCwgYnJhbmNo
Tm90T2JqZWN0KG9wMlBheWxvYWRHUFIpKTsKKyAgICAgICAgICAgIEpTVmFsdWVSZWdzKG9wMlRh
Z0dQUiwgb3AyUGF5bG9hZEdQUiksIHJpZ2h0Q2hpbGQsICh+U3BlY0NlbGwpIHwgU3BlY09iamVj
dCwgbV9qaXQuYnJhbmNoSWZOb3RPYmplY3Qob3AyUGF5bG9hZEdQUikpOwogICAgIH0gZWxzZSB7
CiAgICAgICAgIERGR19UWVBFX0NIRUNLKAotICAgICAgICAgICAgSlNWYWx1ZVJlZ3Mob3AyVGFn
R1BSLCBvcDJQYXlsb2FkR1BSKSwgcmlnaHRDaGlsZCwgKH5TcGVjQ2VsbCkgfCBTcGVjT2JqZWN0
LCBicmFuY2hOb3RPYmplY3Qob3AyUGF5bG9hZEdQUikpOworICAgICAgICAgICAgSlNWYWx1ZVJl
Z3Mob3AyVGFnR1BSLCBvcDJQYXlsb2FkR1BSKSwgcmlnaHRDaGlsZCwgKH5TcGVjQ2VsbCkgfCBT
cGVjT2JqZWN0LCBtX2ppdC5icmFuY2hJZk5vdE9iamVjdChvcDJQYXlsb2FkR1BSKSk7CiAgICAg
ICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFkVHlwZSwgSlNWYWx1ZVJlZ3Mob3AyVGFnR1BSLCBvcDJQ
YXlsb2FkR1BSKSwgcmlnaHRDaGlsZCwgCiAgICAgICAgICAgICBtX2ppdC5icmFuY2hUZXN0OCgK
ICAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6Tm9uWmVybywgCkBAIC0xMjc5LDEwICsx
Mjc5LDEwIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVQZWVwSG9sZU9iamUKIAogICAg
IGlmIChtYXNxdWVyYWRlc0FzVW5kZWZpbmVkV2F0Y2hwb2ludFZhbGlkKSB7CiAgICAgICAgIERG
R19UWVBFX0NIRUNLKAotICAgICAgICAgICAgSlNWYWx1ZVNvdXJjZTo6dW5ib3hlZENlbGwob3Ax
R1BSKSwgbGVmdENoaWxkLCBTcGVjT2JqZWN0LCBicmFuY2hOb3RPYmplY3Qob3AxR1BSKSk7Cisg
ICAgICAgICAgICBKU1ZhbHVlU291cmNlOjp1bmJveGVkQ2VsbChvcDFHUFIpLCBsZWZ0Q2hpbGQs
IFNwZWNPYmplY3QsIG1faml0LmJyYW5jaElmTm90T2JqZWN0KG9wMUdQUikpOwogICAgIH0gZWxz
ZSB7CiAgICAgICAgIERGR19UWVBFX0NIRUNLKAotICAgICAgICAgICAgSlNWYWx1ZVNvdXJjZTo6
dW5ib3hlZENlbGwob3AxR1BSKSwgbGVmdENoaWxkLCBTcGVjT2JqZWN0LCBicmFuY2hOb3RPYmpl
Y3Qob3AxR1BSKSk7CisgICAgICAgICAgICBKU1ZhbHVlU291cmNlOjp1bmJveGVkQ2VsbChvcDFH
UFIpLCBsZWZ0Q2hpbGQsIFNwZWNPYmplY3QsIG1faml0LmJyYW5jaElmTm90T2JqZWN0KG9wMUdQ
UikpOwogICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEJhZFR5cGUsIEpTVmFsdWVTb3VyY2U6OnVu
Ym94ZWRDZWxsKG9wMUdQUiksIGxlZnRDaGlsZCwKICAgICAgICAgICAgIG1faml0LmJyYW5jaFRl
c3Q4KAogICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpOb25aZXJvLCAKQEAgLTEyOTIs
MTcgKzEyOTIsMTcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVBlZXBIb2xlT2JqZQog
ICAgIAogICAgIC8vIEl0IHNlZW1zIHRoYXQgbW9zdCBvZiB0aGUgdGltZSB3aGVuIHByb2dyYW1z
IGRvIGEgPT0gYiB3aGVyZSBiIG1heSBiZSBlaXRoZXIgbnVsbC91bmRlZmluZWQKICAgICAvLyBv
ciBhbiBvYmplY3QsIGIgaXMgdXN1YWxseSBhbiBvYmplY3QuIEJhbGFuY2UgdGhlIGJyYW5jaGVz
IHRvIG1ha2UgdGhhdCBjYXNlIGZhc3QuCi0gICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXAgcmlnaHRO
b3RDZWxsID0gYnJhbmNoTm90Q2VsbChvcDIuanNWYWx1ZVJlZ3MoKSk7CisgICAgTWFjcm9Bc3Nl
bWJsZXI6Okp1bXAgcmlnaHROb3RDZWxsID0gbV9qaXQuYnJhbmNoSWZOb3RDZWxsKG9wMi5qc1Zh
bHVlUmVncygpKTsKICAgICAKICAgICAvLyBXZSBrbm93IHRoYXQgd2l0aGluIHRoaXMgYnJhbmNo
LCByaWdodENoaWxkIG11c3QgYmUgYSBjZWxsLgogICAgIGlmIChtYXNxdWVyYWRlc0FzVW5kZWZp
bmVkV2F0Y2hwb2ludFZhbGlkKSB7CiAgICAgICAgIERGR19UWVBFX0NIRUNLKAogICAgICAgICAg
ICAgSlNWYWx1ZVJlZ3Mob3AyVGFnR1BSLCBvcDJQYXlsb2FkR1BSKSwgcmlnaHRDaGlsZCwgKH5T
cGVjQ2VsbCkgfCBTcGVjT2JqZWN0LAotICAgICAgICAgICAgYnJhbmNoTm90T2JqZWN0KG9wMlBh
eWxvYWRHUFIpKTsKKyAgICAgICAgICAgIG1faml0LmJyYW5jaElmTm90T2JqZWN0KG9wMlBheWxv
YWRHUFIpKTsKICAgICB9IGVsc2UgewogICAgICAgICBERkdfVFlQRV9DSEVDSygKICAgICAgICAg
ICAgIEpTVmFsdWVSZWdzKG9wMlRhZ0dQUiwgb3AyUGF5bG9hZEdQUiksIHJpZ2h0Q2hpbGQsICh+
U3BlY0NlbGwpIHwgU3BlY09iamVjdCwKLSAgICAgICAgICAgIGJyYW5jaE5vdE9iamVjdChvcDJQ
YXlsb2FkR1BSKSk7CisgICAgICAgICAgICBtX2ppdC5icmFuY2hJZk5vdE9iamVjdChvcDJQYXls
b2FkR1BSKSk7CiAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFkVHlwZSwgSlNWYWx1ZVJlZ3Mo
b3AyVGFnR1BSLCBvcDJQYXlsb2FkR1BSKSwgcmlnaHRDaGlsZCwKICAgICAgICAgICAgIG1faml0
LmJyYW5jaFRlc3Q4KAogICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpOb25aZXJvLCAK
QEAgLTEzODIsMTUgKzEzODIsMTUgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU9iamVj
dE9yT3RoZQogICAgICAgICBzdHJ1Y3R1cmVHUFIgPSBzdHJ1Y3R1cmUuZ3ByKCk7CiAgICAgfQog
Ci0gICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXAgbm90Q2VsbCA9IGJyYW5jaE5vdENlbGwodmFsdWUu
anNWYWx1ZVJlZ3MoKSk7CisgICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXAgbm90Q2VsbCA9IG1faml0
LmJyYW5jaElmTm90Q2VsbCh2YWx1ZS5qc1ZhbHVlUmVncygpKTsKICAgICBpZiAobWFzcXVlcmFk
ZXNBc1VuZGVmaW5lZFdhdGNocG9pbnRWYWxpZCkgewogICAgICAgICBERkdfVFlQRV9DSEVDSygK
ICAgICAgICAgICAgIEpTVmFsdWVSZWdzKHZhbHVlVGFnR1BSLCB2YWx1ZVBheWxvYWRHUFIpLCBu
b2RlVXNlLCAoflNwZWNDZWxsKSB8IFNwZWNPYmplY3QsCi0gICAgICAgICAgICBicmFuY2hOb3RP
YmplY3QodmFsdWVQYXlsb2FkR1BSKSk7CisgICAgICAgICAgICBtX2ppdC5icmFuY2hJZk5vdE9i
amVjdCh2YWx1ZVBheWxvYWRHUFIpKTsKICAgICB9IGVsc2UgewogICAgICAgICBERkdfVFlQRV9D
SEVDSygKICAgICAgICAgICAgIEpTVmFsdWVSZWdzKHZhbHVlVGFnR1BSLCB2YWx1ZVBheWxvYWRH
UFIpLCBub2RlVXNlLCAoflNwZWNDZWxsKSB8IFNwZWNPYmplY3QsCi0gICAgICAgICAgICBicmFu
Y2hOb3RPYmplY3QodmFsdWVQYXlsb2FkR1BSKSk7CisgICAgICAgICAgICBtX2ppdC5icmFuY2hJ
Zk5vdE9iamVjdCh2YWx1ZVBheWxvYWRHUFIpKTsKIAogICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6
SnVtcCBpc05vdE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQgPSAKICAgICAgICAgICAgIG1faml0LmJy
YW5jaFRlc3Q4KApAQCAtMTUwNCwxNSArMTUwNCwxNSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpl
bWl0T2JqZWN0T3JPdGhlckJyCiAgICAgR1BSUmVnIHZhbHVlUGF5bG9hZEdQUiA9IHZhbHVlLnBh
eWxvYWRHUFIoKTsKICAgICBHUFJSZWcgc2NyYXRjaEdQUiA9IHNjcmF0Y2guZ3ByKCk7CiAgICAg
Ci0gICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXAgbm90Q2VsbCA9IGJyYW5jaE5vdENlbGwodmFsdWUu
anNWYWx1ZVJlZ3MoKSk7CisgICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXAgbm90Q2VsbCA9IG1faml0
LmJyYW5jaElmTm90Q2VsbCh2YWx1ZS5qc1ZhbHVlUmVncygpKTsKICAgICBpZiAobWFzcXVlcmFk
ZXNBc1VuZGVmaW5lZFdhdGNocG9pbnRJc1N0aWxsVmFsaWQoKSkgewogICAgICAgICBERkdfVFlQ
RV9DSEVDSygKICAgICAgICAgICAgIEpTVmFsdWVSZWdzKHZhbHVlVGFnR1BSLCB2YWx1ZVBheWxv
YWRHUFIpLCBub2RlVXNlLCAoflNwZWNDZWxsKSB8IFNwZWNPYmplY3QsCi0gICAgICAgICAgICBi
cmFuY2hOb3RPYmplY3QodmFsdWVQYXlsb2FkR1BSKSk7CisgICAgICAgICAgICBtX2ppdC5icmFu
Y2hJZk5vdE9iamVjdCh2YWx1ZVBheWxvYWRHUFIpKTsKICAgICB9IGVsc2UgewogICAgICAgICBE
RkdfVFlQRV9DSEVDSygKICAgICAgICAgICAgIEpTVmFsdWVSZWdzKHZhbHVlVGFnR1BSLCB2YWx1
ZVBheWxvYWRHUFIpLCBub2RlVXNlLCAoflNwZWNDZWxsKSB8IFNwZWNPYmplY3QsCi0gICAgICAg
ICAgICBicmFuY2hOb3RPYmplY3QodmFsdWVQYXlsb2FkR1BSKSk7CisgICAgICAgICAgICBtX2pp
dC5icmFuY2hJZk5vdE9iamVjdCh2YWx1ZVBheWxvYWRHUFIpKTsKIAogICAgICAgICBKSVRDb21w
aWxlcjo6SnVtcCBpc05vdE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQgPSBtX2ppdC5icmFuY2hUZXN0
OCgKICAgICAgICAgICAgIEpJVENvbXBpbGVyOjpaZXJvLCAKQEAgLTMwNzQsOCArMzA3NCw4IEBA
IHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgICAgIG1f
aml0Lm1vdmUob3AxVGFnR1BSLCByZXN1bHRUYWdHUFIpOwogICAgICAgICAgICAgbV9qaXQubW92
ZShvcDFQYXlsb2FkR1BSLCByZXN1bHRQYXlsb2FkR1BSKTsKICAgICAgICAgfSBlbHNlIHsKLSAg
ICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIGFscmVhZHlQcmltaXRpdmUgPSBicmFuY2hO
b3RDZWxsKG9wMS5qc1ZhbHVlUmVncygpKTsKLSAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpK
dW1wIG5vdFByaW1pdGl2ZSA9IGJyYW5jaElzT2JqZWN0KG9wMVBheWxvYWRHUFIpOworICAgICAg
ICAgICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXAgYWxyZWFkeVByaW1pdGl2ZSA9IG1faml0LmJyYW5j
aElmTm90Q2VsbChvcDEuanNWYWx1ZVJlZ3MoKSk7CisgICAgICAgICAgICBNYWNyb0Fzc2VtYmxl
cjo6SnVtcCBub3RQcmltaXRpdmUgPSBtX2ppdC5icmFuY2hJZk9iamVjdChvcDFQYXlsb2FkR1BS
KTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgYWxyZWFkeVByaW1pdGl2ZS5saW5rKCZtX2pp
dCk7CiAgICAgICAgICAgICBtX2ppdC5tb3ZlKG9wMVRhZ0dQUiwgcmVzdWx0VGFnR1BSKTsKQEAg
LTMxMDUsOCArMzEwNSw4IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9k
ZSkKICAgICAgICAgICAgIAogICAgICAgICAgICAgSklUQ29tcGlsZXI6Okp1bXAgZG9uZTsKICAg
ICAgICAgICAgIGlmIChub2RlLT5jaGlsZDEoKS0+cHJlZGljdGlvbigpICYgU3BlY1N0cmluZykg
ewotICAgICAgICAgICAgICAgIEpJVENvbXBpbGVyOjpKdW1wIHNsb3dQYXRoMSA9IGJyYW5jaE5v
dENlbGwob3AxLmpzVmFsdWVSZWdzKCkpOwotICAgICAgICAgICAgICAgIEpJVENvbXBpbGVyOjpK
dW1wIHNsb3dQYXRoMiA9IGJyYW5jaE5vdFN0cmluZyhvcDFQYXlsb2FkR1BSKTsKKyAgICAgICAg
ICAgICAgICBKSVRDb21waWxlcjo6SnVtcCBzbG93UGF0aDEgPSBtX2ppdC5icmFuY2hJZk5vdENl
bGwob3AxLmpzVmFsdWVSZWdzKCkpOworICAgICAgICAgICAgICAgIEpJVENvbXBpbGVyOjpKdW1w
IHNsb3dQYXRoMiA9IG1faml0LmJyYW5jaElmTm90U3RyaW5nKG9wMVBheWxvYWRHUFIpOwogICAg
ICAgICAgICAgICAgIG1faml0Lm1vdmUob3AxUGF5bG9hZEdQUiwgcmVzdWx0R1BSKTsKICAgICAg
ICAgICAgICAgICBkb25lID0gbV9qaXQuanVtcCgpOwogICAgICAgICAgICAgICAgIHNsb3dQYXRo
MS5saW5rKCZtX2ppdCk7CkBAIC0zNDczLDcgKzM0NzMsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklU
Ojpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgIEdQUlJlZyB0ZW1wVGFnR1BSID0gdGVtcFRh
Zy5ncHIoKTsKICAgICAgICAgCiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wTGlzdCBzbG93
Q2FzZXM7Ci0gICAgICAgIHNsb3dDYXNlcy5hcHBlbmQoYnJhbmNoTm90Q2VsbCh0aGlzVmFsdWUu
anNWYWx1ZVJlZ3MoKSkpOworICAgICAgICBzbG93Q2FzZXMuYXBwZW5kKG1faml0LmJyYW5jaElm
Tm90Q2VsbCh0aGlzVmFsdWUuanNWYWx1ZVJlZ3MoKSkpOwogICAgICAgICBzbG93Q2FzZXMuYXBw
ZW5kKG1faml0LmJyYW5jaDgoCiAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWws
CiAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyh0aGlzVmFsdWVQYXlsb2FkR1BS
LCBKU0NlbGw6OnR5cGVJbmZvVHlwZU9mZnNldCgpKSwKQEAgLTM2MzcsNyArMzYzNyw3IEBAIHZv
aWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgCiAgICAgICAg
ICAgICBiYXNlLnVzZSgpOwogICAgICAgICAKLSAgICAgICAgICAgIEpJVENvbXBpbGVyOjpKdW1w
IG5vdENlbGwgPSBicmFuY2hOb3RDZWxsKGJhc2UuanNWYWx1ZVJlZ3MoKSk7CisgICAgICAgICAg
ICBKSVRDb21waWxlcjo6SnVtcCBub3RDZWxsID0gbV9qaXQuYnJhbmNoSWZOb3RDZWxsKGJhc2Uu
anNWYWx1ZVJlZ3MoKSk7CiAgICAgICAgIAogICAgICAgICAgICAgY2FjaGVkR2V0QnlJZChub2Rl
LT5vcmlnaW4uc2VtYW50aWMsIGJhc2VUYWdHUFIsIGJhc2VQYXlsb2FkR1BSLCByZXN1bHRUYWdH
UFIsIHJlc3VsdFBheWxvYWRHUFIsIG5vZGUtPmlkZW50aWZpZXJOdW1iZXIoKSwgbm90Q2VsbCk7
CiAgICAgICAgIApAQCAtMzY5Myw3ICszNjkzLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29t
cGlsZShOb2RlKiBub2RlKQogICAgICAgICAKICAgICAgICAgICAgIGZsdXNoUmVnaXN0ZXJzKCk7
CiAgICAgICAgIAotICAgICAgICAgICAgSklUQ29tcGlsZXI6Okp1bXAgbm90Q2VsbCA9IGJyYW5j
aE5vdENlbGwoYmFzZS5qc1ZhbHVlUmVncygpKTsKKyAgICAgICAgICAgIEpJVENvbXBpbGVyOjpK
dW1wIG5vdENlbGwgPSBtX2ppdC5icmFuY2hJZk5vdENlbGwoYmFzZS5qc1ZhbHVlUmVncygpKTsK
ICAgICAgICAgCiAgICAgICAgICAgICBjYWNoZWRHZXRCeUlkKG5vZGUtPm9yaWdpbi5zZW1hbnRp
YywgYmFzZVRhZ0dQUiwgYmFzZVBheWxvYWRHUFIsIHJlc3VsdFRhZ0dQUiwgcmVzdWx0UGF5bG9h
ZEdQUiwgbm9kZS0+aWRlbnRpZmllck51bWJlcigpLCBub3RDZWxsLCBEb250U3BpbGwpOwogICAg
ICAgICAKQEAgLTQwMTQsNyArNDAxNCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUo
Tm9kZSogbm9kZSkKICAgICAgICAgR1BSVGVtcG9yYXJ5IGxvY2FsR2xvYmFsT2JqZWN0KHRoaXMp
OwogICAgICAgICBHUFJUZW1wb3JhcnkgcmVtb3RlR2xvYmFsT2JqZWN0KHRoaXMpOwogCi0gICAg
ICAgIEpJVENvbXBpbGVyOjpKdW1wIGlzQ2VsbCA9IGJyYW5jaElzQ2VsbCh2YWx1ZS5qc1ZhbHVl
UmVncygpKTsKKyAgICAgICAgSklUQ29tcGlsZXI6Okp1bXAgaXNDZWxsID0gbV9qaXQuYnJhbmNo
SWZDZWxsKHZhbHVlLmpzVmFsdWVSZWdzKCkpOwogICAgICAgICAKICAgICAgICAgbV9qaXQuY29t
cGFyZTMyKEpJVENvbXBpbGVyOjpFcXVhbCwgdmFsdWUudGFnR1BSKCksIFRydXN0ZWRJbW0zMihK
U1ZhbHVlOjpVbmRlZmluZWRUYWcpLCByZXN1bHQuZ3ByKCkpOwogICAgICAgICBKSVRDb21waWxl
cjo6SnVtcCBkb25lID0gbV9qaXQuanVtcCgpOwpAQCAtNDA3MCw3ICs0MDcwLDcgQEAgdm9pZCBT
cGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICBKU1ZhbHVlT3BlcmFu
ZCB2YWx1ZSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CiAgICAgICAgIEdQUlRlbXBvcmFyeSByZXN1
bHQodGhpcywgUmV1c2UsIHZhbHVlLCBUYWdXb3JkKTsKICAgICAgICAgCi0gICAgICAgIEpJVENv
bXBpbGVyOjpKdW1wIGlzTm90Q2VsbCA9IGJyYW5jaE5vdENlbGwodmFsdWUuanNWYWx1ZVJlZ3Mo
KSk7CisgICAgICAgIEpJVENvbXBpbGVyOjpKdW1wIGlzTm90Q2VsbCA9IG1faml0LmJyYW5jaElm
Tm90Q2VsbCh2YWx1ZS5qc1ZhbHVlUmVncygpKTsKICAgICAgICAgCiAgICAgICAgIG1faml0LmNv
bXBhcmU4KEpJVENvbXBpbGVyOjpFcXVhbCwgCiAgICAgICAgICAgICBKSVRDb21waWxlcjo6QWRk
cmVzcyh2YWx1ZS5wYXlsb2FkR1BSKCksIEpTQ2VsbDo6dHlwZUluZm9UeXBlT2Zmc2V0KCkpLCAK
QEAgLTQwOTAsNyArNDA5MCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSog
bm9kZSkKICAgICAgICAgSlNWYWx1ZU9wZXJhbmQgdmFsdWUodGhpcywgbm9kZS0+Y2hpbGQxKCkp
OwogICAgICAgICBHUFJUZW1wb3JhcnkgcmVzdWx0KHRoaXMsIFJldXNlLCB2YWx1ZSwgVGFnV29y
ZCk7CiAKLSAgICAgICAgSklUQ29tcGlsZXI6Okp1bXAgaXNOb3RDZWxsID0gYnJhbmNoTm90Q2Vs
bCh2YWx1ZS5qc1ZhbHVlUmVncygpKTsKKyAgICAgICAgSklUQ29tcGlsZXI6Okp1bXAgaXNOb3RD
ZWxsID0gbV9qaXQuYnJhbmNoSWZOb3RDZWxsKHZhbHVlLmpzVmFsdWVSZWdzKCkpOwogCiAgICAg
ICAgIG1faml0LmNvbXBhcmU4KEpJVENvbXBpbGVyOjpBYm92ZU9yRXF1YWwsCiAgICAgICAgICAg
ICBKSVRDb21waWxlcjo6QWRkcmVzcyh2YWx1ZS5wYXlsb2FkR1BSKCksIEpTQ2VsbDo6dHlwZUlu
Zm9UeXBlT2Zmc2V0KCkpLApAQCAtNDE0MywxMiArNDE0MywxMiBAQCB2b2lkIFNwZWN1bGF0aXZl
SklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAKICAgICAgICAgQVNTRVJUKG5vZGUtPmNoaWxkMSgp
LnVzZUtpbmQoKSA9PSBVbnR5cGVkVXNlIHx8IG5vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSA9PSBD
ZWxsVXNlIHx8IG5vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSA9PSBTdHJpbmdVc2UpOwogCi0gICAg
ICAgIEpJVENvbXBpbGVyOjpKdW1wIGlzTm90Q2VsbCA9IGJyYW5jaE5vdENlbGwodmFsdWUuanNW
YWx1ZVJlZ3MoKSk7CisgICAgICAgIEpJVENvbXBpbGVyOjpKdW1wIGlzTm90Q2VsbCA9IG1faml0
LmJyYW5jaElmTm90Q2VsbCh2YWx1ZS5qc1ZhbHVlUmVncygpKTsKICAgICAgICAgaWYgKG5vZGUt
PmNoaWxkMSgpLnVzZUtpbmQoKSAhPSBVbnR5cGVkVXNlKQogICAgICAgICAgICAgREZHX1RZUEVf
Q0hFQ0soSlNWYWx1ZVJlZ3ModGFnR1BSLCBwYXlsb2FkR1BSKSwgbm9kZS0+Y2hpbGQxKCksIFNw
ZWNDZWxsLCBpc05vdENlbGwpOwogCiAgICAgICAgIGlmICghbm9kZS0+Y2hpbGQxKCktPnNob3Vs
ZFNwZWN1bGF0ZU9iamVjdCgpIHx8IG5vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSA9PSBTdHJpbmdV
c2UpIHsKLSAgICAgICAgICAgIEpJVENvbXBpbGVyOjpKdW1wIG5vdFN0cmluZyA9IGJyYW5jaE5v
dFN0cmluZyhwYXlsb2FkR1BSKTsKKyAgICAgICAgICAgIEpJVENvbXBpbGVyOjpKdW1wIG5vdFN0
cmluZyA9IG1faml0LmJyYW5jaElmTm90U3RyaW5nKHBheWxvYWRHUFIpOwogICAgICAgICAgICAg
aWYgKG5vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSA9PSBTdHJpbmdVc2UpCiAgICAgICAgICAgICAg
ICAgREZHX1RZUEVfQ0hFQ0soSlNWYWx1ZVJlZ3ModGFnR1BSLCBwYXlsb2FkR1BSKSwgbm9kZS0+
Y2hpbGQxKCksIFNwZWNTdHJpbmcsIG5vdFN0cmluZyk7CiAgICAgICAgICAgICBtX2ppdC5tb3Zl
KFRydXN0ZWRJbW1QdHIobV9qaXQudm0oKS0+c21hbGxTdHJpbmdzLnN0cmluZ1N0cmluZygpKSwg
cmVzdWx0R1BSKTsKQEAgLTQ1NzAsNyArNDU3MCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNv
bXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgbV9qaXQuc3RvcmUzMih2YWx1ZS5wYXlsb2FkR1BS
KCksIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHNjcmF0Y2gxR1BSLCBUeXBlUHJvZmlsZXJMb2c6
OkxvZ0VudHJ5Ojp2YWx1ZU9mZnNldCgpICsgT0JKRUNUX09GRlNFVE9GKEpTVmFsdWUsIHUuYXNC
aXRzLnBheWxvYWQpKSk7CiAKICAgICAgICAgLy8gU3RvcmUgdGhlIHN0cnVjdHVyZUlEIG9mIHRo
ZSBjZWxsIGlmIHZhbHVlR1BSIGlzIGEgY2VsbCwgb3RoZXJ3aXNlLCBzdG9yZSAwIG9uIHRoZSBs
b2cgZW50cnkuCi0gICAgICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIGlzTm90Q2VsbCA9IGJyYW5j
aE5vdENlbGwodmFsdWUuanNWYWx1ZVJlZ3MoKSk7CisgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpK
dW1wIGlzTm90Q2VsbCA9IG1faml0LmJyYW5jaElmTm90Q2VsbCh2YWx1ZS5qc1ZhbHVlUmVncygp
KTsKICAgICAgICAgbV9qaXQubG9hZDMyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHZhbHVlLnBh
eWxvYWRHUFIoKSwgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSwgc2NyYXRjaDNHUFIpOwog
ICAgICAgICBtX2ppdC5zdG9yZTMyKHNjcmF0Y2gzR1BSLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVz
cyhzY3JhdGNoMUdQUiwgVHlwZVByb2ZpbGVyTG9nOjpMb2dFbnRyeTo6c3RydWN0dXJlSURPZmZz
ZXQoKSkpOwogICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBza2lwSXNDZWxsID0gbV9qaXQu
anVtcCgpOwpAQCAtNDcxMywzMiArNDcxMyw2IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OndyaXRl
QmFycmllcihKU0NlbGwKIH0KICNlbmRpZiAvLyBFTkFCTEUoR0dDKQogCi1KSVRDb21waWxlcjo6
SnVtcCBTcGVjdWxhdGl2ZUpJVDo6YnJhbmNoSXNDZWxsKEpTVmFsdWVSZWdzIHJlZ3MpCi17Ci0g
ICAgcmV0dXJuIG1faml0LmJyYW5jaDMyKE1hY3JvQXNzZW1ibGVyOjpFcXVhbCwgcmVncy50YWdH
UFIoKSwgVHJ1c3RlZEltbTMyKEpTVmFsdWU6OkNlbGxUYWcpKTsKLX0KLQotSklUQ29tcGlsZXI6
Okp1bXAgU3BlY3VsYXRpdmVKSVQ6OmJyYW5jaE5vdENlbGwoSlNWYWx1ZVJlZ3MgcmVncykKLXsK
LSAgICByZXR1cm4gbV9qaXQuYnJhbmNoMzIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCByZWdz
LnRhZ0dQUigpLCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6Q2VsbFRhZykpOwotfQotCi1KSVRDb21w
aWxlcjo6SnVtcCBTcGVjdWxhdGl2ZUpJVDo6YnJhbmNoSXNPdGhlcihKU1ZhbHVlUmVncyByZWdz
LCBHUFJSZWcgdGVtcEdQUikKLXsKLSAgICBtX2ppdC5vcjMyKFRydXN0ZWRJbW0zMigxKSwgcmVn
cy50YWdHUFIoKSwgdGVtcEdQUik7Ci0gICAgcmV0dXJuIG1faml0LmJyYW5jaDMyKAotICAgICAg
ICBNYWNyb0Fzc2VtYmxlcjo6RXF1YWwsIHRlbXBHUFIsCi0gICAgICAgIE1hY3JvQXNzZW1ibGVy
OjpUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6TnVsbFRhZykpOwotfQotCi1KSVRDb21waWxlcjo6SnVt
cCBTcGVjdWxhdGl2ZUpJVDo6YnJhbmNoTm90T3RoZXIoSlNWYWx1ZVJlZ3MgcmVncywgR1BSUmVn
IHRlbXBHUFIpCi17Ci0gICAgbV9qaXQub3IzMihUcnVzdGVkSW1tMzIoMSksIHJlZ3MudGFnR1BS
KCksIHRlbXBHUFIpOwotICAgIHJldHVybiBtX2ppdC5icmFuY2gzMigKLSAgICAgICAgTWFjcm9B
c3NlbWJsZXI6Ok5vdEVxdWFsLCB0ZW1wR1BSLAotICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6VHJ1
c3RlZEltbTMyKEpTVmFsdWU6Ok51bGxUYWcpKTsKLX0KLQogdm9pZCBTcGVjdWxhdGl2ZUpJVDo6
bW92ZVRydWVUbyhHUFJSZWcgZ3ByKQogewogICAgIG1faml0Lm1vdmUoVHJ1c3RlZEltbTMyKDEp
LCBncHIpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJ
VDY0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1
bGF0aXZlSklUNjQuY3BwCShyZXZpc2lvbiAxODM2NTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMDQsNyAr
MjA0LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6bm9uU3BlY3VsYXRpdmVOb25QZQogICAgIEpJ
VENvbXBpbGVyOjpKdW1wIG5vdE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQ7CiAgICAgaWYgKG1hc3F1
ZXJhZGVzQXNVbmRlZmluZWRXYXRjaHBvaW50SXNTdGlsbFZhbGlkKCkpIHsKICAgICAgICAgaWYg
KCFpc0tub3duQ2VsbChvcGVyYW5kLm5vZGUoKSkpCi0gICAgICAgICAgICBub3RDZWxsID0gYnJh
bmNoTm90Q2VsbChKU1ZhbHVlUmVncyhhcmdHUFIpKTsKKyAgICAgICAgICAgIG5vdENlbGwgPSBt
X2ppdC5icmFuY2hJZk5vdENlbGwoSlNWYWx1ZVJlZ3MoYXJnR1BSKSk7CiAKICAgICAgICAgbV9q
aXQubW92ZShpbnZlcnQgPyBUcnVzdGVkSW1tMzIoMSkgOiBUcnVzdGVkSW1tMzIoMCksIHJlc3Vs
dEdQUik7CiAgICAgICAgIG5vdE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQgPSBtX2ppdC5qdW1wKCk7
CkBAIC0yMTQsNyArMjE0LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6bm9uU3BlY3VsYXRpdmVO
b25QZQogICAgICAgICBHUFJUZW1wb3Jhcnkgc2NyYXRjaCh0aGlzKTsKIAogICAgICAgICBpZiAo
IWlzS25vd25DZWxsKG9wZXJhbmQubm9kZSgpKSkKLSAgICAgICAgICAgIG5vdENlbGwgPSBicmFu
Y2hOb3RDZWxsKEpTVmFsdWVSZWdzKGFyZ0dQUikpOworICAgICAgICAgICAgbm90Q2VsbCA9IG1f
aml0LmJyYW5jaElmTm90Q2VsbChKU1ZhbHVlUmVncyhhcmdHUFIpKTsKICAgICAgICAgCiAgICAg
ICAgIEpJVENvbXBpbGVyOjpKdW1wIGlzTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCA9IG1faml0LmJy
YW5jaFRlc3Q4KAogICAgICAgICAgICAgSklUQ29tcGlsZXI6Ok5vblplcm8sIApAQCAtMjczLDcg
KzI3Myw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6Om5vblNwZWN1bGF0aXZlUGVlcGgKICAgICAK
ICAgICBpZiAobWFzcXVlcmFkZXNBc1VuZGVmaW5lZFdhdGNocG9pbnRJc1N0aWxsVmFsaWQoKSkg
ewogICAgICAgICBpZiAoIWlzS25vd25DZWxsKG9wZXJhbmQubm9kZSgpKSkKLSAgICAgICAgICAg
IG5vdENlbGwgPSBicmFuY2hOb3RDZWxsKEpTVmFsdWVSZWdzKGFyZ0dQUikpOworICAgICAgICAg
ICAgbm90Q2VsbCA9IG1faml0LmJyYW5jaElmTm90Q2VsbChKU1ZhbHVlUmVncyhhcmdHUFIpKTsK
ICAgICAgICAgCiAgICAgICAgIGp1bXAoaW52ZXJ0ID8gdGFrZW4gOiBub3RUYWtlbiwgRm9yY2VK
dW1wKTsKICAgICB9IGVsc2UgewpAQCAtMjgyLDcgKzI4Miw3IEBAIHZvaWQgU3BlY3VsYXRpdmVK
SVQ6Om5vblNwZWN1bGF0aXZlUGVlcGgKICAgICAgICAgR1BSVGVtcG9yYXJ5IHNjcmF0Y2godGhp
cyk7CiAKICAgICAgICAgaWYgKCFpc0tub3duQ2VsbChvcGVyYW5kLm5vZGUoKSkpCi0gICAgICAg
ICAgICBub3RDZWxsID0gYnJhbmNoTm90Q2VsbChKU1ZhbHVlUmVncyhhcmdHUFIpKTsKKyAgICAg
ICAgICAgIG5vdENlbGwgPSBtX2ppdC5icmFuY2hJZk5vdENlbGwoSlNWYWx1ZVJlZ3MoYXJnR1BS
KSk7CiAgICAgICAgIAogICAgICAgICBicmFuY2hUZXN0OChKSVRDb21waWxlcjo6WmVybywgCiAg
ICAgICAgICAgICBKSVRDb21waWxlcjo6QWRkcmVzcyhhcmdHUFIsIEpTQ2VsbDo6dHlwZUluZm9G
bGFnc09mZnNldCgpKSwgCkBAIC0xMTE5LDcgKzExMTksNyBAQCBHUFJSZWcgU3BlY3VsYXRpdmVK
SVQ6OmZpbGxTcGVjdWxhdGVDZWxsCiAKICAgICAgICAgaW5mby5maWxsSlNWYWx1ZSgqbV9zdHJl
YW0sIGdwciwgRGF0YUZvcm1hdEpTKTsKICAgICAgICAgaWYgKHR5cGUgJiB+U3BlY0NlbGwpCi0g
ICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEJhZFR5cGUsIEpTVmFsdWVSZWdzKGdwciksIGVk
Z2UsIGJyYW5jaE5vdENlbGwoSlNWYWx1ZVJlZ3MoZ3ByKSkpOworICAgICAgICAgICAgc3BlY3Vs
YXRpb25DaGVjayhCYWRUeXBlLCBKU1ZhbHVlUmVncyhncHIpLCBlZGdlLCBtX2ppdC5icmFuY2hJ
Zk5vdENlbGwoSlNWYWx1ZVJlZ3MoZ3ByKSkpOwogICAgICAgICBpbmZvLmZpbGxKU1ZhbHVlKCpt
X3N0cmVhbSwgZ3ByLCBEYXRhRm9ybWF0SlNDZWxsKTsKICAgICAgICAgcmV0dXJuIGdwcjsKICAg
ICB9CkBAIC0xMTI5LDcgKzExMjksNyBAQCBHUFJSZWcgU3BlY3VsYXRpdmVKSVQ6OmZpbGxTcGVj
dWxhdGVDZWxsCiAgICAgICAgIEdQUlJlZyBncHIgPSBpbmZvLmdwcigpOwogICAgICAgICBtX2dw
cnMubG9jayhncHIpOwogICAgICAgICBpZiAoIUFTU0VSVF9ESVNBQkxFRCkgewotICAgICAgICAg
ICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXAgY2hlY2tDZWxsID0gYnJhbmNoSXNDZWxsKEpTVmFsdWVS
ZWdzKGdwcikpOworICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXAgY2hlY2tDZWxsID0g
bV9qaXQuYnJhbmNoSWZDZWxsKEpTVmFsdWVSZWdzKGdwcikpOwogICAgICAgICAgICAgbV9qaXQu
YWJvcnRXaXRoUmVhc29uKERGR0lzTm90Q2VsbCk7CiAgICAgICAgICAgICBjaGVja0NlbGwubGlu
aygmbV9qaXQpOwogICAgICAgICB9CkBAIC0xMTQwLDcgKzExNDAsNyBAQCBHUFJSZWcgU3BlY3Vs
YXRpdmVKSVQ6OmZpbGxTcGVjdWxhdGVDZWxsCiAgICAgICAgIEdQUlJlZyBncHIgPSBpbmZvLmdw
cigpOwogICAgICAgICBtX2dwcnMubG9jayhncHIpOwogICAgICAgICBpZiAodHlwZSAmIH5TcGVj
Q2VsbCkKLSAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFkVHlwZSwgSlNWYWx1ZVJlZ3Mo
Z3ByKSwgZWRnZSwgYnJhbmNoTm90Q2VsbChKU1ZhbHVlUmVncyhncHIpKSk7CisgICAgICAgICAg
ICBzcGVjdWxhdGlvbkNoZWNrKEJhZFR5cGUsIEpTVmFsdWVSZWdzKGdwciksIGVkZ2UsIG1faml0
LmJyYW5jaElmTm90Q2VsbChKU1ZhbHVlUmVncyhncHIpKSk7CiAgICAgICAgIGluZm8uZmlsbEpT
VmFsdWUoKm1fc3RyZWFtLCBncHIsIERhdGFGb3JtYXRKU0NlbGwpOwogICAgICAgICByZXR1cm4g
Z3ByOwogICAgIH0KQEAgLTEyNjUsMTIgKzEyNjUsMTIgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6
Y29tcGlsZU9iamVjdEVxdWFsaQogICAgCiAgICAgaWYgKG1hc3F1ZXJhZGVzQXNVbmRlZmluZWRX
YXRjaHBvaW50SXNTdGlsbFZhbGlkKCkpIHsKICAgICAgICAgREZHX1RZUEVfQ0hFQ0soCi0gICAg
ICAgICAgICBKU1ZhbHVlU291cmNlOjp1bmJveGVkQ2VsbChvcDFHUFIpLCBub2RlLT5jaGlsZDEo
KSwgU3BlY09iamVjdCwgYnJhbmNoTm90T2JqZWN0KG9wMUdQUikpOworICAgICAgICAgICAgSlNW
YWx1ZVNvdXJjZTo6dW5ib3hlZENlbGwob3AxR1BSKSwgbm9kZS0+Y2hpbGQxKCksIFNwZWNPYmpl
Y3QsIG1faml0LmJyYW5jaElmTm90T2JqZWN0KG9wMUdQUikpOwogICAgICAgICBERkdfVFlQRV9D
SEVDSygKLSAgICAgICAgICAgIEpTVmFsdWVTb3VyY2U6OnVuYm94ZWRDZWxsKG9wMkdQUiksIG5v
ZGUtPmNoaWxkMigpLCBTcGVjT2JqZWN0LCBicmFuY2hOb3RPYmplY3Qob3AyR1BSKSk7CisgICAg
ICAgICAgICBKU1ZhbHVlU291cmNlOjp1bmJveGVkQ2VsbChvcDJHUFIpLCBub2RlLT5jaGlsZDIo
KSwgU3BlY09iamVjdCwgbV9qaXQuYnJhbmNoSWZOb3RPYmplY3Qob3AyR1BSKSk7CiAgICAgfSBl
bHNlIHsKICAgICAgICAgREZHX1RZUEVfQ0hFQ0soCi0gICAgICAgICAgICBKU1ZhbHVlU291cmNl
Ojp1bmJveGVkQ2VsbChvcDFHUFIpLCBub2RlLT5jaGlsZDEoKSwgU3BlY09iamVjdCwgYnJhbmNo
Tm90T2JqZWN0KG9wMUdQUikpOworICAgICAgICAgICAgSlNWYWx1ZVNvdXJjZTo6dW5ib3hlZENl
bGwob3AxR1BSKSwgbm9kZS0+Y2hpbGQxKCksIFNwZWNPYmplY3QsIG1faml0LmJyYW5jaElmTm90
T2JqZWN0KG9wMUdQUikpOwogICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEJhZFR5cGUsIEpTVmFs
dWVTb3VyY2U6OnVuYm94ZWRDZWxsKG9wMUdQUiksIG5vZGUtPmNoaWxkMSgpLAogICAgICAgICAg
ICAgbV9qaXQuYnJhbmNoVGVzdDgoCiAgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6Ok5v
blplcm8sIApAQCAtMTI3OCw3ICsxMjc4LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGls
ZU9iamVjdEVxdWFsaQogICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1t
MzIoTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCkpKTsKIAogICAgICAgICBERkdfVFlQRV9DSEVDSygK
LSAgICAgICAgICAgIEpTVmFsdWVTb3VyY2U6OnVuYm94ZWRDZWxsKG9wMkdQUiksIG5vZGUtPmNo
aWxkMigpLCBTcGVjT2JqZWN0LCBicmFuY2hOb3RPYmplY3Qob3AyR1BSKSk7CisgICAgICAgICAg
ICBKU1ZhbHVlU291cmNlOjp1bmJveGVkQ2VsbChvcDJHUFIpLCBub2RlLT5jaGlsZDIoKSwgU3Bl
Y09iamVjdCwgbV9qaXQuYnJhbmNoSWZOb3RPYmplY3Qob3AyR1BSKSk7CiAgICAgICAgIHNwZWN1
bGF0aW9uQ2hlY2soQmFkVHlwZSwgSlNWYWx1ZVNvdXJjZTo6dW5ib3hlZENlbGwob3AyR1BSKSwg
bm9kZS0+Y2hpbGQyKCksCiAgICAgICAgICAgICBtX2ppdC5icmFuY2hUZXN0OCgKICAgICAgICAg
ICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6Tm9uWmVybywgCkBAIC0xMzExLDEwICsxMzExLDEwIEBA
IHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVPYmplY3RUb09iamUKIAogICAgIGlmIChtYXNx
dWVyYWRlc0FzVW5kZWZpbmVkV2F0Y2hwb2ludFZhbGlkKSB7CiAgICAgICAgIERGR19UWVBFX0NI
RUNLKAotICAgICAgICAgICAgSlNWYWx1ZVNvdXJjZTo6dW5ib3hlZENlbGwob3AxR1BSKSwgbGVm
dENoaWxkLCBTcGVjT2JqZWN0LCBicmFuY2hOb3RPYmplY3Qob3AxR1BSKSk7CisgICAgICAgICAg
ICBKU1ZhbHVlU291cmNlOjp1bmJveGVkQ2VsbChvcDFHUFIpLCBsZWZ0Q2hpbGQsIFNwZWNPYmpl
Y3QsIG1faml0LmJyYW5jaElmTm90T2JqZWN0KG9wMUdQUikpOwogICAgIH0gZWxzZSB7CiAgICAg
ICAgIERGR19UWVBFX0NIRUNLKAotICAgICAgICAgICAgSlNWYWx1ZVNvdXJjZTo6dW5ib3hlZENl
bGwob3AxR1BSKSwgbGVmdENoaWxkLCBTcGVjT2JqZWN0LCBicmFuY2hOb3RPYmplY3Qob3AxR1BS
KSk7CisgICAgICAgICAgICBKU1ZhbHVlU291cmNlOjp1bmJveGVkQ2VsbChvcDFHUFIpLCBsZWZ0
Q2hpbGQsIFNwZWNPYmplY3QsIG1faml0LmJyYW5jaElmTm90T2JqZWN0KG9wMUdQUikpOwogICAg
ICAgICBzcGVjdWxhdGlvbkNoZWNrKEJhZFR5cGUsIEpTVmFsdWVTb3VyY2U6OnVuYm94ZWRDZWxs
KG9wMUdQUiksIGxlZnRDaGlsZCwKICAgICAgICAgICAgIG1faml0LmJyYW5jaFRlc3Q4KAogICAg
ICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpOb25aZXJvLCAKQEAgLTEzMjQsMTUgKzEzMjQs
MTUgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU9iamVjdFRvT2JqZQogICAgIAogICAg
IC8vIEl0IHNlZW1zIHRoYXQgbW9zdCBvZiB0aGUgdGltZSB3aGVuIHByb2dyYW1zIGRvIGEgPT0g
YiB3aGVyZSBiIG1heSBiZSBlaXRoZXIgbnVsbC91bmRlZmluZWQKICAgICAvLyBvciBhbiBvYmpl
Y3QsIGIgaXMgdXN1YWxseSBhbiBvYmplY3QuIEJhbGFuY2UgdGhlIGJyYW5jaGVzIHRvIG1ha2Ug
dGhhdCBjYXNlIGZhc3QuCi0gICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXAgcmlnaHROb3RDZWxsID0g
YnJhbmNoTm90Q2VsbChKU1ZhbHVlUmVncyhvcDJHUFIpKTsKKyAgICBNYWNyb0Fzc2VtYmxlcjo6
SnVtcCByaWdodE5vdENlbGwgPSBtX2ppdC5icmFuY2hJZk5vdENlbGwoSlNWYWx1ZVJlZ3Mob3Ay
R1BSKSk7CiAgICAgCiAgICAgLy8gV2Uga25vdyB0aGF0IHdpdGhpbiB0aGlzIGJyYW5jaCwgcmln
aHRDaGlsZCBtdXN0IGJlIGEgY2VsbC4gCiAgICAgaWYgKG1hc3F1ZXJhZGVzQXNVbmRlZmluZWRX
YXRjaHBvaW50VmFsaWQpIHsKICAgICAgICAgREZHX1RZUEVfQ0hFQ0soCi0gICAgICAgICAgICBK
U1ZhbHVlUmVncyhvcDJHUFIpLCByaWdodENoaWxkLCAoflNwZWNDZWxsKSB8IFNwZWNPYmplY3Qs
IGJyYW5jaE5vdE9iamVjdChvcDJHUFIpKTsKKyAgICAgICAgICAgIEpTVmFsdWVSZWdzKG9wMkdQ
UiksIHJpZ2h0Q2hpbGQsICh+U3BlY0NlbGwpIHwgU3BlY09iamVjdCwgbV9qaXQuYnJhbmNoSWZO
b3RPYmplY3Qob3AyR1BSKSk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgREZHX1RZUEVfQ0hFQ0so
Ci0gICAgICAgICAgICBKU1ZhbHVlUmVncyhvcDJHUFIpLCByaWdodENoaWxkLCAoflNwZWNDZWxs
KSB8IFNwZWNPYmplY3QsIGJyYW5jaE5vdE9iamVjdChvcDJHUFIpKTsKKyAgICAgICAgICAgIEpT
VmFsdWVSZWdzKG9wMkdQUiksIHJpZ2h0Q2hpbGQsICh+U3BlY0NlbGwpIHwgU3BlY09iamVjdCwg
bV9qaXQuYnJhbmNoSWZOb3RPYmplY3Qob3AyR1BSKSk7CiAgICAgICAgIHNwZWN1bGF0aW9uQ2hl
Y2soQmFkVHlwZSwgSlNWYWx1ZVJlZ3Mob3AyR1BSKSwgcmlnaHRDaGlsZCwKICAgICAgICAgICAg
IG1faml0LmJyYW5jaFRlc3Q4KAogICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpOb25a
ZXJvLCAKQEAgLTEzODksMTAgKzEzODksMTAgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGls
ZVBlZXBIb2xlT2JqZQogCiAgICAgaWYgKG1hc3F1ZXJhZGVzQXNVbmRlZmluZWRXYXRjaHBvaW50
VmFsaWQpIHsKICAgICAgICAgREZHX1RZUEVfQ0hFQ0soCi0gICAgICAgICAgICBKU1ZhbHVlU291
cmNlOjp1bmJveGVkQ2VsbChvcDFHUFIpLCBsZWZ0Q2hpbGQsIFNwZWNPYmplY3QsIGJyYW5jaE5v
dE9iamVjdChvcDFHUFIpKTsKKyAgICAgICAgICAgIEpTVmFsdWVTb3VyY2U6OnVuYm94ZWRDZWxs
KG9wMUdQUiksIGxlZnRDaGlsZCwgU3BlY09iamVjdCwgbV9qaXQuYnJhbmNoSWZOb3RPYmplY3Qo
b3AxR1BSKSk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgREZHX1RZUEVfQ0hFQ0soCi0gICAgICAg
ICAgICBKU1ZhbHVlU291cmNlOjp1bmJveGVkQ2VsbChvcDFHUFIpLCBsZWZ0Q2hpbGQsIFNwZWNP
YmplY3QsIGJyYW5jaE5vdE9iamVjdChvcDFHUFIpKTsKKyAgICAgICAgICAgIEpTVmFsdWVTb3Vy
Y2U6OnVuYm94ZWRDZWxsKG9wMUdQUiksIGxlZnRDaGlsZCwgU3BlY09iamVjdCwgbV9qaXQuYnJh
bmNoSWZOb3RPYmplY3Qob3AxR1BSKSk7CiAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFkVHlw
ZSwgSlNWYWx1ZVNvdXJjZTo6dW5ib3hlZENlbGwob3AxR1BSKSwgbGVmdENoaWxkLCAKICAgICAg
ICAgICAgIG1faml0LmJyYW5jaFRlc3Q4KAogICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVy
OjpOb25aZXJvLCAKQEAgLTE0MDIsMTUgKzE0MDIsMTUgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6
Y29tcGlsZVBlZXBIb2xlT2JqZQogCiAgICAgLy8gSXQgc2VlbXMgdGhhdCBtb3N0IG9mIHRoZSB0
aW1lIHdoZW4gcHJvZ3JhbXMgZG8gYSA9PSBiIHdoZXJlIGIgbWF5IGJlIGVpdGhlciBudWxsL3Vu
ZGVmaW5lZAogICAgIC8vIG9yIGFuIG9iamVjdCwgYiBpcyB1c3VhbGx5IGFuIG9iamVjdC4gQmFs
YW5jZSB0aGUgYnJhbmNoZXMgdG8gbWFrZSB0aGF0IGNhc2UgZmFzdC4KLSAgICBNYWNyb0Fzc2Vt
Ymxlcjo6SnVtcCByaWdodE5vdENlbGwgPSBicmFuY2hOb3RDZWxsKEpTVmFsdWVSZWdzKG9wMkdQ
UikpOworICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIHJpZ2h0Tm90Q2VsbCA9IG1faml0LmJyYW5j
aElmTm90Q2VsbChKU1ZhbHVlUmVncyhvcDJHUFIpKTsKICAgICAKICAgICAvLyBXZSBrbm93IHRo
YXQgd2l0aGluIHRoaXMgYnJhbmNoLCByaWdodENoaWxkIG11c3QgYmUgYSBjZWxsLiAKICAgICBp
ZiAobWFzcXVlcmFkZXNBc1VuZGVmaW5lZFdhdGNocG9pbnRWYWxpZCkgewogICAgICAgICBERkdf
VFlQRV9DSEVDSygKLSAgICAgICAgICAgIEpTVmFsdWVSZWdzKG9wMkdQUiksIHJpZ2h0Q2hpbGQs
ICh+U3BlY0NlbGwpIHwgU3BlY09iamVjdCwgYnJhbmNoTm90T2JqZWN0KG9wMkdQUikpOworICAg
ICAgICAgICAgSlNWYWx1ZVJlZ3Mob3AyR1BSKSwgcmlnaHRDaGlsZCwgKH5TcGVjQ2VsbCkgfCBT
cGVjT2JqZWN0LCBtX2ppdC5icmFuY2hJZk5vdE9iamVjdChvcDJHUFIpKTsKICAgICB9IGVsc2Ug
ewogICAgICAgICBERkdfVFlQRV9DSEVDSygKLSAgICAgICAgICAgIEpTVmFsdWVSZWdzKG9wMkdQ
UiksIHJpZ2h0Q2hpbGQsICh+U3BlY0NlbGwpIHwgU3BlY09iamVjdCwgYnJhbmNoTm90T2JqZWN0
KG9wMkdQUikpOworICAgICAgICAgICAgSlNWYWx1ZVJlZ3Mob3AyR1BSKSwgcmlnaHRDaGlsZCwg
KH5TcGVjQ2VsbCkgfCBTcGVjT2JqZWN0LCBtX2ppdC5icmFuY2hJZk5vdE9iamVjdChvcDJHUFIp
KTsKICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhCYWRUeXBlLCBKU1ZhbHVlUmVncyhvcDJHUFIp
LCByaWdodENoaWxkLAogICAgICAgICAgICAgbV9qaXQuYnJhbmNoVGVzdDgoCiAgICAgICAgICAg
ICAgICAgTWFjcm9Bc3NlbWJsZXI6Ok5vblplcm8sIApAQCAtMTUyOSwxMyArMTUyOSwxMyBAQCB2
b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlT2JqZWN0T3JPdGhlCiAgICAgICAgIHNjcmF0Y2hH
UFIgPSBzY3JhdGNoLmdwcigpOwogICAgIH0KIAotICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIG5v
dENlbGwgPSBicmFuY2hOb3RDZWxsKEpTVmFsdWVSZWdzKHZhbHVlR1BSKSk7CisgICAgTWFjcm9B
c3NlbWJsZXI6Okp1bXAgbm90Q2VsbCA9IG1faml0LmJyYW5jaElmTm90Q2VsbChKU1ZhbHVlUmVn
cyh2YWx1ZUdQUikpOwogICAgIGlmIChtYXNxdWVyYWRlc0FzVW5kZWZpbmVkV2F0Y2hwb2ludFZh
bGlkKSB7CiAgICAgICAgIERGR19UWVBFX0NIRUNLKAotICAgICAgICAgICAgSlNWYWx1ZVJlZ3Mo
dmFsdWVHUFIpLCBub2RlVXNlLCAoflNwZWNDZWxsKSB8IFNwZWNPYmplY3QsIGJyYW5jaE5vdE9i
amVjdCh2YWx1ZUdQUikpOworICAgICAgICAgICAgSlNWYWx1ZVJlZ3ModmFsdWVHUFIpLCBub2Rl
VXNlLCAoflNwZWNDZWxsKSB8IFNwZWNPYmplY3QsIG1faml0LmJyYW5jaElmTm90T2JqZWN0KHZh
bHVlR1BSKSk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgREZHX1RZUEVfQ0hFQ0soCi0gICAgICAg
ICAgICBKU1ZhbHVlUmVncyh2YWx1ZUdQUiksIG5vZGVVc2UsICh+U3BlY0NlbGwpIHwgU3BlY09i
amVjdCwgYnJhbmNoTm90T2JqZWN0KHZhbHVlR1BSKSk7CisgICAgICAgICAgICBKU1ZhbHVlUmVn
cyh2YWx1ZUdQUiksIG5vZGVVc2UsICh+U3BlY0NlbGwpIHwgU3BlY09iamVjdCwgbV9qaXQuYnJh
bmNoSWZOb3RPYmplY3QodmFsdWVHUFIpKTsKIAogICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVt
cCBpc05vdE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQgPSAKICAgICAgICAgICAgIG1faml0LmJyYW5j
aFRlc3Q4KApAQCAtMTY3MywxMyArMTY3MywxMyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjplbWl0
T2JqZWN0T3JPdGhlckJyCiAgICAgICAgIHN0cnVjdHVyZUdQUiA9IHN0cnVjdHVyZS5ncHIoKTsK
ICAgICB9CiAKLSAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBub3RDZWxsID0gYnJhbmNoTm90Q2Vs
bChKU1ZhbHVlUmVncyh2YWx1ZUdQUikpOworICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIG5vdENl
bGwgPSBtX2ppdC5icmFuY2hJZk5vdENlbGwoSlNWYWx1ZVJlZ3ModmFsdWVHUFIpKTsKICAgICBp
ZiAobWFzcXVlcmFkZXNBc1VuZGVmaW5lZFdhdGNocG9pbnRJc1N0aWxsVmFsaWQoKSkgewogICAg
ICAgICBERkdfVFlQRV9DSEVDSygKLSAgICAgICAgICAgIEpTVmFsdWVSZWdzKHZhbHVlR1BSKSwg
bm9kZVVzZSwgKH5TcGVjQ2VsbCkgfCBTcGVjT2JqZWN0LCBicmFuY2hOb3RPYmplY3QodmFsdWVH
UFIpKTsKKyAgICAgICAgICAgIEpTVmFsdWVSZWdzKHZhbHVlR1BSKSwgbm9kZVVzZSwgKH5TcGVj
Q2VsbCkgfCBTcGVjT2JqZWN0LCBtX2ppdC5icmFuY2hJZk5vdE9iamVjdCh2YWx1ZUdQUikpOwog
ICAgIH0gZWxzZSB7CiAgICAgICAgIERGR19UWVBFX0NIRUNLKAotICAgICAgICAgICAgSlNWYWx1
ZVJlZ3ModmFsdWVHUFIpLCBub2RlVXNlLCAoflNwZWNDZWxsKSB8IFNwZWNPYmplY3QsIGJyYW5j
aE5vdE9iamVjdCh2YWx1ZUdQUikpOworICAgICAgICAgICAgSlNWYWx1ZVJlZ3ModmFsdWVHUFIp
LCBub2RlVXNlLCAoflNwZWNDZWxsKSB8IFNwZWNPYmplY3QsIG1faml0LmJyYW5jaElmTm90T2Jq
ZWN0KHZhbHVlR1BSKSk7CiAKICAgICAgICAgSklUQ29tcGlsZXI6Okp1bXAgaXNOb3RNYXNxdWVy
YWRlc0FzVW5kZWZpbmVkID0gbV9qaXQuYnJhbmNoVGVzdDgoCiAgICAgICAgICAgICBKSVRDb21w
aWxlcjo6WmVybywgCkBAIC0zMTY3LDggKzMxNjcsOCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpj
b21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgIAogICAgICAgICBvcDEudXNlKCk7CiAgICAgICAg
IAotICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBhbHJlYWR5UHJpbWl0aXZlID0gYnJhbmNo
Tm90Q2VsbChKU1ZhbHVlUmVncyhvcDFHUFIpKTsKLSAgICAgICAgTWFjcm9Bc3NlbWJsZXI6Okp1
bXAgbm90UHJpbWl0aXZlID0gYnJhbmNoSXNPYmplY3Qob3AxR1BSKTsKKyAgICAgICAgTWFjcm9B
c3NlbWJsZXI6Okp1bXAgYWxyZWFkeVByaW1pdGl2ZSA9IG1faml0LmJyYW5jaElmTm90Q2VsbChK
U1ZhbHVlUmVncyhvcDFHUFIpKTsKKyAgICAgICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXAgbm90UHJp
bWl0aXZlID0gbV9qaXQuYnJhbmNoSWZPYmplY3Qob3AxR1BSKTsKICAgICAgICAgCiAgICAgICAg
IGFscmVhZHlQcmltaXRpdmUubGluaygmbV9qaXQpOwogICAgICAgICBtX2ppdC5tb3ZlKG9wMUdQ
UiwgcmVzdWx0R1BSKTsKQEAgLTMxOTMsOCArMzE5Myw4IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6
OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgICAgIAogICAgICAgICAgICAgSklUQ29tcGls
ZXI6Okp1bXAgZG9uZTsKICAgICAgICAgICAgIGlmIChub2RlLT5jaGlsZDEoKS0+cHJlZGljdGlv
bigpICYgU3BlY1N0cmluZykgewotICAgICAgICAgICAgICAgIEpJVENvbXBpbGVyOjpKdW1wIHNs
b3dQYXRoMSA9IGJyYW5jaE5vdENlbGwoSlNWYWx1ZVJlZ3Mob3AxR1BSKSk7Ci0gICAgICAgICAg
ICAgICAgSklUQ29tcGlsZXI6Okp1bXAgc2xvd1BhdGgyID0gYnJhbmNoTm90U3RyaW5nKG9wMUdQ
Uik7CisgICAgICAgICAgICAgICAgSklUQ29tcGlsZXI6Okp1bXAgc2xvd1BhdGgxID0gbV9qaXQu
YnJhbmNoSWZOb3RDZWxsKEpTVmFsdWVSZWdzKG9wMUdQUikpOworICAgICAgICAgICAgICAgIEpJ
VENvbXBpbGVyOjpKdW1wIHNsb3dQYXRoMiA9IG1faml0LmJyYW5jaElmTm90U3RyaW5nKG9wMUdQ
Uik7CiAgICAgICAgICAgICAgICAgbV9qaXQubW92ZShvcDFHUFIsIHJlc3VsdEdQUik7CiAgICAg
ICAgICAgICAgICAgZG9uZSA9IG1faml0Lmp1bXAoKTsKICAgICAgICAgICAgICAgICBzbG93UGF0
aDEubGluaygmbV9qaXQpOwpAQCAtMzU1Myw3ICszNTUzLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJ
VDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICBHUFJSZWcgdGVtcEdQUiA9IHRlbXAuZ3By
KCk7CiAgICAgICAgIAogICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcExpc3Qgc2xvd0Nhc2Vz
OwotICAgICAgICBzbG93Q2FzZXMuYXBwZW5kKGJyYW5jaE5vdENlbGwoSlNWYWx1ZVJlZ3ModGhp
c1ZhbHVlR1BSKSkpOworICAgICAgICBzbG93Q2FzZXMuYXBwZW5kKG1faml0LmJyYW5jaElmTm90
Q2VsbChKU1ZhbHVlUmVncyh0aGlzVmFsdWVHUFIpKSk7CiAgICAgICAgIHNsb3dDYXNlcy5hcHBl
bmQobV9qaXQuYnJhbmNoOCgKICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwK
ICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHRoaXNWYWx1ZUdQUiwgSlNDZWxs
Ojp0eXBlSW5mb1R5cGVPZmZzZXQoKSksCkBAIC0zNzAzLDcgKzM3MDMsNyBAQCB2b2lkIFNwZWN1
bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgIAogICAgICAgICAgICAgYmFz
ZS51c2UoKTsKICAgICAgICAgCi0gICAgICAgICAgICBKSVRDb21waWxlcjo6SnVtcCBub3RDZWxs
ID0gYnJhbmNoTm90Q2VsbChKU1ZhbHVlUmVncyhiYXNlR1BSKSk7CisgICAgICAgICAgICBKSVRD
b21waWxlcjo6SnVtcCBub3RDZWxsID0gbV9qaXQuYnJhbmNoSWZOb3RDZWxsKEpTVmFsdWVSZWdz
KGJhc2VHUFIpKTsKICAgICAgICAgCiAgICAgICAgICAgICBjYWNoZWRHZXRCeUlkKG5vZGUtPm9y
aWdpbi5zZW1hbnRpYywgYmFzZUdQUiwgcmVzdWx0R1BSLCBub2RlLT5pZGVudGlmaWVyTnVtYmVy
KCksIG5vdENlbGwpOwogICAgICAgICAKQEAgLTM3NTMsNyArMzc1Myw3IEBAIHZvaWQgU3BlY3Vs
YXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgICAgIGJhc2UudXNlKCk7CiAg
ICAgICAgICAgICBmbHVzaFJlZ2lzdGVycygpOwogICAgICAgICAKLSAgICAgICAgICAgIEpJVENv
bXBpbGVyOjpKdW1wIG5vdENlbGwgPSBicmFuY2hOb3RDZWxsKEpTVmFsdWVSZWdzKGJhc2VHUFIp
KTsKKyAgICAgICAgICAgIEpJVENvbXBpbGVyOjpKdW1wIG5vdENlbGwgPSBtX2ppdC5icmFuY2hJ
Zk5vdENlbGwoSlNWYWx1ZVJlZ3MoYmFzZUdQUikpOwogICAgICAgICAKICAgICAgICAgICAgIGNh
Y2hlZEdldEJ5SWQobm9kZS0+b3JpZ2luLnNlbWFudGljLCBiYXNlR1BSLCByZXN1bHRHUFIsIG5v
ZGUtPmlkZW50aWZpZXJOdW1iZXIoKSwgbm90Q2VsbCwgRG9udFNwaWxsKTsKICAgICAgICAgCkBA
IC00MDQ5LDcgKzQwNDksNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5v
ZGUpCiAgICAgICAgIEdQUlRlbXBvcmFyeSByZW1vdGVHbG9iYWxPYmplY3QodGhpcyk7CiAgICAg
ICAgIEdQUlRlbXBvcmFyeSBzY3JhdGNoKHRoaXMpOwogCi0gICAgICAgIEpJVENvbXBpbGVyOjpK
dW1wIGlzQ2VsbCA9IGJyYW5jaElzQ2VsbCh2YWx1ZS5qc1ZhbHVlUmVncygpKTsKKyAgICAgICAg
SklUQ29tcGlsZXI6Okp1bXAgaXNDZWxsID0gbV9qaXQuYnJhbmNoSWZDZWxsKHZhbHVlLmpzVmFs
dWVSZWdzKCkpOwogCiAgICAgICAgIG1faml0LmNvbXBhcmU2NChKSVRDb21waWxlcjo6RXF1YWws
IHZhbHVlLmdwcigpLCBUcnVzdGVkSW1tMzIoVmFsdWVVbmRlZmluZWQpLCByZXN1bHQuZ3ByKCkp
OwogICAgICAgICBKSVRDb21waWxlcjo6SnVtcCBkb25lID0gbV9qaXQuanVtcCgpOwpAQCAtNDEw
OSw3ICs0MTA5LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQog
ICAgICAgICBKU1ZhbHVlT3BlcmFuZCB2YWx1ZSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CiAgICAg
ICAgIEdQUlRlbXBvcmFyeSByZXN1bHQodGhpcywgUmV1c2UsIHZhbHVlKTsKICAgICAgICAgCi0g
ICAgICAgIEpJVENvbXBpbGVyOjpKdW1wIGlzTm90Q2VsbCA9IGJyYW5jaE5vdENlbGwodmFsdWUu
anNWYWx1ZVJlZ3MoKSk7CisgICAgICAgIEpJVENvbXBpbGVyOjpKdW1wIGlzTm90Q2VsbCA9IG1f
aml0LmJyYW5jaElmTm90Q2VsbCh2YWx1ZS5qc1ZhbHVlUmVncygpKTsKICAgICAgICAgCiAgICAg
ICAgIG1faml0LmNvbXBhcmU4KEpJVENvbXBpbGVyOjpFcXVhbCwgCiAgICAgICAgICAgICBKSVRD
b21waWxlcjo6QWRkcmVzcyh2YWx1ZS5ncHIoKSwgSlNDZWxsOjp0eXBlSW5mb1R5cGVPZmZzZXQo
KSksIApAQCAtNDEzMCw3ICs0MTMwLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShO
b2RlKiBub2RlKQogICAgICAgICBKU1ZhbHVlT3BlcmFuZCB2YWx1ZSh0aGlzLCBub2RlLT5jaGls
ZDEoKSk7CiAgICAgICAgIEdQUlRlbXBvcmFyeSByZXN1bHQodGhpcywgUmV1c2UsIHZhbHVlKTsK
IAotICAgICAgICBKSVRDb21waWxlcjo6SnVtcCBpc05vdENlbGwgPSBicmFuY2hOb3RDZWxsKHZh
bHVlLmpzVmFsdWVSZWdzKCkpOworICAgICAgICBKSVRDb21waWxlcjo6SnVtcCBpc05vdENlbGwg
PSBtX2ppdC5icmFuY2hJZk5vdENlbGwodmFsdWUuanNWYWx1ZVJlZ3MoKSk7CiAKICAgICAgICAg
bV9qaXQuY29tcGFyZTgoSklUQ29tcGlsZXI6OkFib3ZlT3JFcXVhbCwKICAgICAgICAgICAgIEpJ
VENvbXBpbGVyOjpBZGRyZXNzKHZhbHVlLmdwcigpLCBKU0NlbGw6OnR5cGVJbmZvVHlwZU9mZnNl
dCgpKSwKQEAgLTQxODIsMTIgKzQxODIsMTIgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGls
ZShOb2RlKiBub2RlKQogICAgICAgICAKICAgICAgICAgQVNTRVJUKG5vZGUtPmNoaWxkMSgpLnVz
ZUtpbmQoKSA9PSBVbnR5cGVkVXNlIHx8IG5vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSA9PSBDZWxs
VXNlIHx8IG5vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSA9PSBTdHJpbmdVc2UpOwogCi0gICAgICAg
IEpJVENvbXBpbGVyOjpKdW1wIGlzTm90Q2VsbCA9IGJyYW5jaE5vdENlbGwoSlNWYWx1ZVJlZ3Mo
dmFsdWVHUFIpKTsKKyAgICAgICAgSklUQ29tcGlsZXI6Okp1bXAgaXNOb3RDZWxsID0gbV9qaXQu
YnJhbmNoSWZOb3RDZWxsKEpTVmFsdWVSZWdzKHZhbHVlR1BSKSk7CiAgICAgICAgIGlmIChub2Rl
LT5jaGlsZDEoKS51c2VLaW5kKCkgIT0gVW50eXBlZFVzZSkKICAgICAgICAgICAgIERGR19UWVBF
X0NIRUNLKEpTVmFsdWVTb3VyY2UodmFsdWVHUFIpLCBub2RlLT5jaGlsZDEoKSwgU3BlY0NlbGws
IGlzTm90Q2VsbCk7CiAKICAgICAgICAgaWYgKCFub2RlLT5jaGlsZDEoKS0+c2hvdWxkU3BlY3Vs
YXRlT2JqZWN0KCkgfHwgbm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpID09IFN0cmluZ1VzZSkgewot
ICAgICAgICAgICAgSklUQ29tcGlsZXI6Okp1bXAgbm90U3RyaW5nID0gYnJhbmNoTm90U3RyaW5n
KHZhbHVlR1BSKTsKKyAgICAgICAgICAgIEpJVENvbXBpbGVyOjpKdW1wIG5vdFN0cmluZyA9IG1f
aml0LmJyYW5jaElmTm90U3RyaW5nKHZhbHVlR1BSKTsKICAgICAgICAgICAgIGlmIChub2RlLT5j
aGlsZDEoKS51c2VLaW5kKCkgPT0gU3RyaW5nVXNlKQogICAgICAgICAgICAgICAgIERGR19UWVBF
X0NIRUNLKEpTVmFsdWVTb3VyY2UodmFsdWVHUFIpLCBub2RlLT5jaGlsZDEoKSwgU3BlY1N0cmlu
Zywgbm90U3RyaW5nKTsKICAgICAgICAgICAgIG1faml0Lm1vdmUoVHJ1c3RlZEltbVB0cihtX2pp
dC52bSgpLT5zbWFsbFN0cmluZ3Muc3RyaW5nU3RyaW5nKCkpLCByZXN1bHRHUFIpOwpAQCAtNDYy
OCw4ICs0NjI4LDggQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQog
ICAgICAgICBlbHNlIGlmIChjYWNoZWRUeXBlTG9jYXRpb24tPm1fbGFzdFNlZW5UeXBlID09IFR5
cGVOdW1iZXIpCiAgICAgICAgICAgICBqdW1wVG9FbmQuYXBwZW5kKG1faml0LmJyYW5jaFRlc3Q2
NChNYWNyb0Fzc2VtYmxlcjo6Tm9uWmVybywgdmFsdWVHUFIsIEdQUkluZm86OnRhZ1R5cGVOdW1i
ZXJSZWdpc3RlcikpOwogICAgICAgICBlbHNlIGlmIChjYWNoZWRUeXBlTG9jYXRpb24tPm1fbGFz
dFNlZW5UeXBlID09IFR5cGVTdHJpbmcpIHsKLSAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpK
dW1wIGlzTm90Q2VsbCA9IGJyYW5jaE5vdENlbGwoSlNWYWx1ZVJlZ3ModmFsdWVHUFIpKTsKLSAg
ICAgICAgICAgIGp1bXBUb0VuZC5hcHBlbmQoYnJhbmNoSXNTdHJpbmcodmFsdWVHUFIpKTsKKyAg
ICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIGlzTm90Q2VsbCA9IG1faml0LmJyYW5jaElm
Tm90Q2VsbChKU1ZhbHVlUmVncyh2YWx1ZUdQUikpOworICAgICAgICAgICAganVtcFRvRW5kLmFw
cGVuZChtX2ppdC5icmFuY2hJZlN0cmluZyh2YWx1ZUdQUikpOwogICAgICAgICAgICAgaXNOb3RD
ZWxsLmxpbmsoJm1faml0KTsKICAgICAgICAgfQogCkBAIC00NjQ0LDcgKzQ2NDQsNyBAQCB2b2lk
IFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgIG1faml0LnN0b3Jl
NjQodmFsdWVHUFIsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHNjcmF0Y2gxR1BSLCBUeXBlUHJv
ZmlsZXJMb2c6OkxvZ0VudHJ5Ojp2YWx1ZU9mZnNldCgpKSk7CiAKICAgICAgICAgLy8gU3RvcmUg
dGhlIHN0cnVjdHVyZUlEIG9mIHRoZSBjZWxsIGlmIHZhbHVlR1BSIGlzIGEgY2VsbCwgb3RoZXJ3
aXNlLCBzdG9yZSAwIG9uIHRoZSBsb2cgZW50cnkuCi0gICAgICAgIE1hY3JvQXNzZW1ibGVyOjpK
dW1wIGlzTm90Q2VsbCA9IGJyYW5jaE5vdENlbGwoSlNWYWx1ZVJlZ3ModmFsdWVHUFIpKTsKKyAg
ICAgICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXAgaXNOb3RDZWxsID0gbV9qaXQuYnJhbmNoSWZOb3RD
ZWxsKEpTVmFsdWVSZWdzKHZhbHVlR1BSKSk7CiAgICAgICAgIG1faml0LmxvYWQzMihNYWNyb0Fz
c2VtYmxlcjo6QWRkcmVzcyh2YWx1ZUdQUiwgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSwg
c2NyYXRjaDNHUFIpOwogICAgICAgICBtX2ppdC5zdG9yZTMyKHNjcmF0Y2gzR1BSLCBNYWNyb0Fz
c2VtYmxlcjo6QWRkcmVzcyhzY3JhdGNoMUdQUiwgVHlwZVByb2ZpbGVyTG9nOjpMb2dFbnRyeTo6
c3RydWN0dXJlSURPZmZzZXQoKSkpOwogICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBza2lw
SXNDZWxsID0gbV9qaXQuanVtcCgpOwpAQCAtNDc3OSw3ICs0Nzc5LDcgQEAgdm9pZCBTcGVjdWxh
dGl2ZUpJVDo6d3JpdGVCYXJyaWVyKEdQUlJlZwogewogICAgIEpJVENvbXBpbGVyOjpKdW1wIGlz
Tm90Q2VsbDsKICAgICBpZiAoIWlzS25vd25DZWxsKHZhbHVlVXNlLm5vZGUoKSkpCi0gICAgICAg
IGlzTm90Q2VsbCA9IGJyYW5jaE5vdENlbGwoSlNWYWx1ZVJlZ3ModmFsdWVHUFIpKTsKKyAgICAg
ICAgaXNOb3RDZWxsID0gbV9qaXQuYnJhbmNoSWZOb3RDZWxsKEpTVmFsdWVSZWdzKHZhbHVlR1BS
KSk7CiAgICAgCiAgICAgSklUQ29tcGlsZXI6Okp1bXAgb3duZXJJc1JlbWVtYmVyZWRPckluRWRl
biA9IG1faml0Lmp1bXBJZklzUmVtZW1iZXJlZE9ySW5FZGVuKG93bmVyR1BSKTsKICAgICBzdG9y
ZVRvV3JpdGVCYXJyaWVyQnVmZmVyKG93bmVyR1BSLCBzY3JhdGNoMSwgc2NyYXRjaDIpOwpAQCAt
NDc5Myw3ICs0NzkzLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6d3JpdGVCYXJyaWVyKEpTQ2Vs
bAogewogICAgIEpJVENvbXBpbGVyOjpKdW1wIGlzTm90Q2VsbDsKICAgICBpZiAoIWlzS25vd25D
ZWxsKHZhbHVlVXNlLm5vZGUoKSkpCi0gICAgICAgIGlzTm90Q2VsbCA9IGJyYW5jaE5vdENlbGwo
SlNWYWx1ZVJlZ3ModmFsdWVHUFIpKTsKKyAgICAgICAgaXNOb3RDZWxsID0gbV9qaXQuYnJhbmNo
SWZOb3RDZWxsKEpTVmFsdWVSZWdzKHZhbHVlR1BSKSk7CiAgICAgCiAgICAgSklUQ29tcGlsZXI6
Okp1bXAgb3duZXJJc1JlbWVtYmVyZWRPckluRWRlbiA9IG1faml0Lmp1bXBJZklzUmVtZW1iZXJl
ZE9ySW5FZGVuKG93bmVyKTsKICAgICBzdG9yZVRvV3JpdGVCYXJyaWVyQnVmZmVyKG93bmVyLCBz
Y3JhdGNoMSwgc2NyYXRjaDIpOwpAQCAtNDgwNCwzNCArNDgwNCw2IEBAIHZvaWQgU3BlY3VsYXRp
dmVKSVQ6OndyaXRlQmFycmllcihKU0NlbGwKIH0KICNlbmRpZiAvLyBFTkFCTEUoR0dDKQogCi1K
SVRDb21waWxlcjo6SnVtcCBTcGVjdWxhdGl2ZUpJVDo6YnJhbmNoSXNDZWxsKEpTVmFsdWVSZWdz
IHJlZ3MpCi17Ci0gICAgcmV0dXJuIG1faml0LmJyYW5jaFRlc3Q2NChNYWNyb0Fzc2VtYmxlcjo6
WmVybywgcmVncy5ncHIoKSwgR1BSSW5mbzo6dGFnTWFza1JlZ2lzdGVyKTsKLX0KLQotSklUQ29t
cGlsZXI6Okp1bXAgU3BlY3VsYXRpdmVKSVQ6OmJyYW5jaE5vdENlbGwoSlNWYWx1ZVJlZ3MgcmVn
cykKLXsKLSAgICByZXR1cm4gbV9qaXQuYnJhbmNoVGVzdDY0KE1hY3JvQXNzZW1ibGVyOjpOb25a
ZXJvLCByZWdzLmdwcigpLCBHUFJJbmZvOjp0YWdNYXNrUmVnaXN0ZXIpOwotfQotCi1KSVRDb21w
aWxlcjo6SnVtcCBTcGVjdWxhdGl2ZUpJVDo6YnJhbmNoSXNPdGhlcihKU1ZhbHVlUmVncyByZWdz
LCBHUFJSZWcgdGVtcEdQUikKLXsKLSAgICBtX2ppdC5tb3ZlKHJlZ3MuZ3ByKCksIHRlbXBHUFIp
OwotICAgIG1faml0LmFuZDY0KE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tMzIoflRhZ0JpdFVu
ZGVmaW5lZCksIHRlbXBHUFIpOwotICAgIHJldHVybiBtX2ppdC5icmFuY2g2NCgKLSAgICAgICAg
TWFjcm9Bc3NlbWJsZXI6OkVxdWFsLCB0ZW1wR1BSLAotICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6
VHJ1c3RlZEltbTY0KFZhbHVlTnVsbCkpOwotfQotCi1KSVRDb21waWxlcjo6SnVtcCBTcGVjdWxh
dGl2ZUpJVDo6YnJhbmNoTm90T3RoZXIoSlNWYWx1ZVJlZ3MgcmVncywgR1BSUmVnIHRlbXBHUFIp
Ci17Ci0gICAgbV9qaXQubW92ZShyZWdzLmdwcigpLCB0ZW1wR1BSKTsKLSAgICBtX2ppdC5hbmQ2
NChNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbTMyKH5UYWdCaXRVbmRlZmluZWQpLCB0ZW1wR1BS
KTsKLSAgICByZXR1cm4gbV9qaXQuYnJhbmNoNjQoCi0gICAgICAgIE1hY3JvQXNzZW1ibGVyOjpO
b3RFcXVhbCwgdGVtcEdQUiwKLSAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW02NChW
YWx1ZU51bGwpKTsKLX0KLQogdm9pZCBTcGVjdWxhdGl2ZUpJVDo6bW92ZVRydWVUbyhHUFJSZWcg
Z3ByKQogewogICAgIG1faml0Lm1vdmUoVHJ1c3RlZEltbTMyKFZhbHVlVHJ1ZSksIGdwcik7Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNw
cAkocmV2aXNpb24gMTgzNjUwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVj
dWxhdGl2ZUpJVC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTExODIsMTcgKzExODIsMTcgQEAgdm9p
ZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVBlZXBIb2xlT2JqZQogICAgIGlmIChtYXNxdWVyYWRl
c0FzVW5kZWZpbmVkV2F0Y2hwb2ludElzU3RpbGxWYWxpZCgpKSB7CiAgICAgICAgIGlmIChtX3N0
YXRlLmZvck5vZGUobm9kZS0+Y2hpbGQxKCkpLm1fdHlwZSAmIH5TcGVjT2JqZWN0KSB7CiAgICAg
ICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKAotICAgICAgICAgICAgICAgIEJhZFR5cGUsIEpTVmFs
dWVTb3VyY2U6OnVuYm94ZWRDZWxsKG9wMUdQUiksIG5vZGUtPmNoaWxkMSgpLCBicmFuY2hOb3RP
YmplY3Qob3AxR1BSKSk7CisgICAgICAgICAgICAgICAgQmFkVHlwZSwgSlNWYWx1ZVNvdXJjZTo6
dW5ib3hlZENlbGwob3AxR1BSKSwgbm9kZS0+Y2hpbGQxKCksIG1faml0LmJyYW5jaElmTm90T2Jq
ZWN0KG9wMUdQUikpOwogICAgICAgICB9CiAgICAgICAgIGlmIChtX3N0YXRlLmZvck5vZGUobm9k
ZS0+Y2hpbGQyKCkpLm1fdHlwZSAmIH5TcGVjT2JqZWN0KSB7CiAgICAgICAgICAgICBzcGVjdWxh
dGlvbkNoZWNrKAotICAgICAgICAgICAgICAgIEJhZFR5cGUsIEpTVmFsdWVTb3VyY2U6OnVuYm94
ZWRDZWxsKG9wMkdQUiksIG5vZGUtPmNoaWxkMigpLCBicmFuY2hOb3RPYmplY3Qob3AyR1BSKSk7
CisgICAgICAgICAgICAgICAgQmFkVHlwZSwgSlNWYWx1ZVNvdXJjZTo6dW5ib3hlZENlbGwob3Ay
R1BSKSwgbm9kZS0+Y2hpbGQyKCksIG1faml0LmJyYW5jaElmTm90T2JqZWN0KG9wMkdQUikpOwog
ICAgICAgICB9CiAgICAgfSBlbHNlIHsKICAgICAgICAgaWYgKG1fc3RhdGUuZm9yTm9kZShub2Rl
LT5jaGlsZDEoKSkubV90eXBlICYgflNwZWNPYmplY3QpIHsKICAgICAgICAgICAgIHNwZWN1bGF0
aW9uQ2hlY2soCiAgICAgICAgICAgICAgICAgQmFkVHlwZSwgSlNWYWx1ZVNvdXJjZTo6dW5ib3hl
ZENlbGwob3AxR1BSKSwgbm9kZS0+Y2hpbGQxKCksCi0gICAgICAgICAgICAgICAgYnJhbmNoTm90
T2JqZWN0KG9wMUdQUikpOworICAgICAgICAgICAgICAgIG1faml0LmJyYW5jaElmTm90T2JqZWN0
KG9wMUdQUikpOwogICAgICAgICB9CiAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFkVHlwZSwg
SlNWYWx1ZVNvdXJjZTo6dW5ib3hlZENlbGwob3AxR1BSKSwgbm9kZS0+Y2hpbGQxKCksCiAgICAg
ICAgICAgICBtX2ppdC5icmFuY2hUZXN0OCgKQEAgLTEyMDMsNyArMTIwMyw3IEBAIHZvaWQgU3Bl
Y3VsYXRpdmVKSVQ6OmNvbXBpbGVQZWVwSG9sZU9iamUKICAgICAgICAgaWYgKG1fc3RhdGUuZm9y
Tm9kZShub2RlLT5jaGlsZDIoKSkubV90eXBlICYgflNwZWNPYmplY3QpIHsKICAgICAgICAgICAg
IHNwZWN1bGF0aW9uQ2hlY2soCiAgICAgICAgICAgICAgICAgQmFkVHlwZSwgSlNWYWx1ZVNvdXJj
ZTo6dW5ib3hlZENlbGwob3AyR1BSKSwgbm9kZS0+Y2hpbGQyKCksCi0gICAgICAgICAgICAgICAg
YnJhbmNoTm90T2JqZWN0KG9wMkdQUikpOworICAgICAgICAgICAgICAgIG1faml0LmJyYW5jaElm
Tm90T2JqZWN0KG9wMkdQUikpOwogICAgICAgICB9CiAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2so
QmFkVHlwZSwgSlNWYWx1ZVNvdXJjZTo6dW5ib3hlZENlbGwob3AyR1BSKSwgbm9kZS0+Y2hpbGQy
KCksCiAgICAgICAgICAgICBtX2ppdC5icmFuY2hUZXN0OCgKQEAgLTE4OTcsNyArMTg5Nyw3IEBA
IHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVWYWx1ZVRvSW50MzIKICAgICAgICAgICAgICAg
ICBKSVRDb21waWxlcjo6SnVtcCBpc051bWJlciA9IG1faml0LmJyYW5jaFRlc3Q2NChNYWNyb0Fz
c2VtYmxlcjo6Tm9uWmVybywgZ3ByLCBHUFJJbmZvOjp0YWdUeXBlTnVtYmVyUmVnaXN0ZXIpOwog
ICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIERGR19UWVBFX0NIRUNLKAotICAgICAg
ICAgICAgICAgICAgICBKU1ZhbHVlUmVncyhncHIpLCBub2RlLT5jaGlsZDEoKSwgflNwZWNDZWxs
LCBicmFuY2hJc0NlbGwoSlNWYWx1ZVJlZ3MoZ3ByKSkpOworICAgICAgICAgICAgICAgICAgICBK
U1ZhbHVlUmVncyhncHIpLCBub2RlLT5jaGlsZDEoKSwgflNwZWNDZWxsLCBtX2ppdC5icmFuY2hJ
ZkNlbGwoSlNWYWx1ZVJlZ3MoZ3ByKSkpOwogICAgICAgICAgICAgICAgIAogICAgICAgICAgICAg
ICAgIC8vIEl0J3Mgbm90IGEgY2VsbDogc28gdHJ1ZSB0dXJucyBpbnRvIDEgYW5kIGFsbCBlbHNl
IHR1cm5zIGludG8gMC4KICAgICAgICAgICAgICAgICBtX2ppdC5jb21wYXJlNjQoSklUQ29tcGls
ZXI6OkVxdWFsLCBncHIsIFRydXN0ZWRJbW0zMihWYWx1ZVRydWUpLCByZXN1bHRHcHIpOwpAQCAt
MTk1Myw3ICsxOTUzLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVZhbHVlVG9JbnQz
MgogICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgREZHX1RZUEVfQ0hF
Q0soCiAgICAgICAgICAgICAgICAgICAgICAgICBvcDEuanNWYWx1ZVJlZ3MoKSwgbm9kZS0+Y2hp
bGQxKCksIH5TcGVjQ2VsbCwKLSAgICAgICAgICAgICAgICAgICAgICAgIGJyYW5jaElzQ2VsbChv
cDEuanNWYWx1ZVJlZ3MoKSkpOworICAgICAgICAgICAgICAgICAgICAgICAgbV9qaXQuYnJhbmNo
SWZDZWxsKG9wMS5qc1ZhbHVlUmVncygpKSk7CiAgICAgICAgICAgICAgICAgICAgIAogICAgICAg
ICAgICAgICAgICAgICAvLyBJdCdzIG5vdCBhIGNlbGw6IHNvIHRydWUgdHVybnMgaW50byAxIGFu
ZCBhbGwgZWxzZSB0dXJucyBpbnRvIDAuCiAgICAgICAgICAgICAgICAgICAgIEpJVENvbXBpbGVy
OjpKdW1wIGlzQm9vbGVhbiA9IG1faml0LmJyYW5jaDMyKEpJVENvbXBpbGVyOjpFcXVhbCwgdGFn
R1BSLCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6Qm9vbGVhblRhZykpOwpAQCAtMjU0Myw3ICsyNTQz
LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVB1dEJ5VmFsRm9yRgogdm9pZCBTcGVj
dWxhdGl2ZUpJVDo6Y29tcGlsZUluc3RhbmNlT2ZGb3JPYmplY3QoTm9kZSosIEdQUlJlZyB2YWx1
ZVJlZywgR1BSUmVnIHByb3RvdHlwZVJlZywgR1BSUmVnIHNjcmF0Y2hSZWcsIEdQUlJlZyBzY3Jh
dGNoMlJlZykKIHsKICAgICAvLyBDaGVjayB0aGF0IHByb3RvdHlwZSBpcyBhbiBvYmplY3QuCi0g
ICAgc3BlY3VsYXRpb25DaGVjayhCYWRUeXBlLCBKU1ZhbHVlUmVncygpLCAwLCBtX2ppdC5icmFu
Y2hJZkNlbGxOb3RPYmplY3QocHJvdG90eXBlUmVnKSk7CisgICAgc3BlY3VsYXRpb25DaGVjayhC
YWRUeXBlLCBKU1ZhbHVlUmVncygpLCAwLCBtX2ppdC5icmFuY2hJZk5vdE9iamVjdChwcm90b3R5
cGVSZWcpKTsKICAgICAKICAgICAvLyBJbml0aWFsaXplIHNjcmF0Y2hSZWcgd2l0aCB0aGUgdmFs
dWUgYmVpbmcgY2hlY2tlZC4KICAgICBtX2ppdC5tb3ZlKHZhbHVlUmVnLCBzY3JhdGNoUmVnKTsK
QEAgLTI1NTQsNyArMjU1NCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVJbnN0YW5j
ZU9mRm8KICAgICBtX2ppdC5sb2FkUHRyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHNjcmF0Y2hS
ZWcsIFN0cnVjdHVyZTo6cHJvdG90eXBlT2Zmc2V0KCkgKyBDZWxsUGF5bG9hZE9mZnNldCksIHNj
cmF0Y2hSZWcpOwogICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIGlzSW5zdGFuY2UgPSBtX2ppdC5i
cmFuY2hQdHIoTWFjcm9Bc3NlbWJsZXI6OkVxdWFsLCBzY3JhdGNoUmVnLCBwcm90b3R5cGVSZWcp
OwogI2lmIFVTRShKU1ZBTFVFNjQpCi0gICAgYnJhbmNoSXNDZWxsKEpTVmFsdWVSZWdzKHNjcmF0
Y2hSZWcpKS5saW5rVG8obG9vcCwgJm1faml0KTsKKyAgICBtX2ppdC5icmFuY2hJZkNlbGwoSlNW
YWx1ZVJlZ3Moc2NyYXRjaFJlZykpLmxpbmtUbyhsb29wLCAmbV9qaXQpOwogI2Vsc2UKICAgICBt
X2ppdC5icmFuY2hUZXN0UHRyKE1hY3JvQXNzZW1ibGVyOjpOb25aZXJvLCBzY3JhdGNoUmVnKS5s
aW5rVG8obG9vcCwgJm1faml0KTsKICNlbmRpZgpAQCAtMjU5Myw3ICsyNTkzLDcgQEAgdm9pZCBT
cGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUluc3RhbmNlT2YoTgogICAgICAgICBHUFJSZWcgc2NyYXRj
aFJlZyA9IHNjcmF0Y2guZ3ByKCk7CiAgICAgICAgIEdQUlJlZyBzY3JhdGNoMlJlZyA9IHNjcmF0
Y2gyLmdwcigpOwogICAgICAgICAKLSAgICAgICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXAgaXNDZWxs
ID0gYnJhbmNoSXNDZWxsKHZhbHVlLmpzVmFsdWVSZWdzKCkpOworICAgICAgICBNYWNyb0Fzc2Vt
Ymxlcjo6SnVtcCBpc0NlbGwgPSBtX2ppdC5icmFuY2hJZkNlbGwodmFsdWUuanNWYWx1ZVJlZ3Mo
KSk7CiAgICAgICAgIEdQUlJlZyB2YWx1ZVJlZyA9IHZhbHVlLmpzVmFsdWVSZWdzKCkucGF5bG9h
ZEdQUigpOwogICAgICAgICBtb3ZlRmFsc2VUbyhzY3JhdGNoUmVnKTsKIApAQCAtMzk1OCwxNCAr
Mzk1OCwxNCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlU3RyaW5nVG9VbnR5CiAgICAg
SklUQ29tcGlsZXI6Okp1bXBMaXN0IGZhc3RUcnVlOwogICAgIEpJVENvbXBpbGVyOjpKdW1wTGlz
dCBmYXN0RmFsc2U7CiAgICAgCi0gICAgZmFzdEZhbHNlLmFwcGVuZChicmFuY2hOb3RDZWxsKHJp
Z2h0UmVncykpOworICAgIGZhc3RGYWxzZS5hcHBlbmQobV9qaXQuYnJhbmNoSWZOb3RDZWxsKHJp
Z2h0UmVncykpOwogICAgIAogICAgIC8vIEl0J3Mgc2FmZSB0byBicmFuY2ggYXJvdW5kIHRoZSB0
eXBlIGNoZWNrIGJlbG93LCBzaW5jZSBwcm92aW5nIHRoYXQgdGhlIHZhbHVlcyBhcmUKICAgICAv
LyBlcXVhbCBkb2VzIGluZGVlZCBwcm92ZSB0aGF0IHRoZSByaWdodCB2YWx1ZSBpcyBhIHN0cmlu
Zy4KICAgICBmYXN0VHJ1ZS5hcHBlbmQobV9qaXQuYnJhbmNoUHRyKAogICAgICAgICBNYWNyb0Fz
c2VtYmxlcjo6RXF1YWwsIGxlZnRHUFIsIHJpZ2h0UmVncy5wYXlsb2FkR1BSKCkpKTsKICAgICAK
LSAgICBmYXN0RmFsc2UuYXBwZW5kKGJyYW5jaE5vdFN0cmluZyhyaWdodFJlZ3MucGF5bG9hZEdQ
UigpKSk7CisgICAgZmFzdEZhbHNlLmFwcGVuZChtX2ppdC5icmFuY2hJZk5vdENlbGwocmlnaHRS
ZWdzLnBheWxvYWRHUFIoKSkpOwogICAgIAogICAgIGNvbXBpbGVTdHJpbmdFcXVhbGl0eSgKICAg
ICAgICAgbm9kZSwgbGVmdEdQUiwgcmlnaHRSZWdzLnBheWxvYWRHUFIoKSwgbGVuZ3RoR1BSLCBs
ZWZ0VGVtcEdQUiwgcmlnaHRUZW1wR1BSLCBsZWZ0VGVtcDJHUFIsCkBAIC00MDEyLDggKzQwMTIs
OCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlU3RyaW5nSWRlbnRUCiAKICAgICBtb3Zl
RmFsc2VUbyhyaWdodFRlbXBHUFIpOwogICAgIEpJVENvbXBpbGVyOjpKdW1wTGlzdCBub3RTdHJp
bmc7Ci0gICAgbm90U3RyaW5nLmFwcGVuZChicmFuY2hOb3RDZWxsKHJpZ2h0UmVncykpOwotICAg
IG5vdFN0cmluZy5hcHBlbmQoYnJhbmNoTm90U3RyaW5nKHJpZ2h0UmVncy5wYXlsb2FkR1BSKCkp
KTsKKyAgICBub3RTdHJpbmcuYXBwZW5kKG1faml0LmJyYW5jaElmTm90Q2VsbChyaWdodFJlZ3Mp
KTsKKyAgICBub3RTdHJpbmcuYXBwZW5kKG1faml0LmJyYW5jaElmTm90U3RyaW5nKHJpZ2h0UmVn
cy5wYXlsb2FkR1BSKCkpKTsKICAgICAKICAgICBzcGVjdWxhdGVTdHJpbmdJZGVudEFuZExvYWRT
dG9yYWdlKG5vdFN0cmluZ1ZhckVkZ2UsIHJpZ2h0UmVncy5wYXlsb2FkR1BSKCksIHJpZ2h0VGVt
cEdQUik7CiAgICAgCkBAIC00MjM0LDcgKzQyMzQsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpj
b21waWxlR2V0QnlWYWxPblNjCiAgICAgICAgICAgICBiYXNlUmVnLCBzY3JhdGNoMlJlZywgTWFj
cm9Bc3NlbWJsZXI6OlRpbWVzRWlnaHQsCiAgICAgICAgICAgICBTY29wZWRBcmd1bWVudHM6Om92
ZXJmbG93U3RvcmFnZU9mZnNldCgpKSwKICAgICAgICAgcmVzdWx0UmVncyk7Ci0gICAgc3BlY3Vs
YXRpb25DaGVjayhFeG90aWNPYmplY3RNb2RlLCBKU1ZhbHVlU291cmNlKCksIG51bGxwdHIsIG1f
aml0LmJyYW5jaElzRW1wdHkocmVzdWx0UmVncykpOworICAgIHNwZWN1bGF0aW9uQ2hlY2soRXhv
dGljT2JqZWN0TW9kZSwgSlNWYWx1ZVNvdXJjZSgpLCBudWxscHRyLCBtX2ppdC5icmFuY2hJZkVt
cHR5KHJlc3VsdFJlZ3MpKTsKICAgICAKICAgICBkb25lLmxpbmsoJm1faml0KTsKICAgICAKQEAg
LTQ5NjUsNyArNDk2NSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVUb1N0cmluZ09y
Q2EKICAgICAgICAgZmx1c2hSZWdpc3RlcnMoKTsKICAgICAgICAgSklUQ29tcGlsZXI6Okp1bXAg
ZG9uZTsKICAgICAgICAgaWYgKG5vZGUtPmNoaWxkMSgpLT5wcmVkaWN0aW9uKCkgJiBTcGVjU3Ry
aW5nKSB7Ci0gICAgICAgICAgICBKSVRDb21waWxlcjo6SnVtcCBuZWVkQ2FsbCA9IGJyYW5jaE5v
dFN0cmluZyhvcDFHUFIpOworICAgICAgICAgICAgSklUQ29tcGlsZXI6Okp1bXAgbmVlZENhbGwg
PSBtX2ppdC5icmFuY2hJZk5vdFN0cmluZyhvcDFHUFIpOwogICAgICAgICAgICAgbV9qaXQubW92
ZShvcDFHUFIsIHJlc3VsdEdQUik7CiAgICAgICAgICAgICBkb25lID0gbV9qaXQuanVtcCgpOwog
ICAgICAgICAgICAgbmVlZENhbGwubGluaygmbV9qaXQpOwpAQCAtNTE5NCw3ICs1MTk0LDcgQEAg
dm9pZCBTcGVjdWxhdGl2ZUpJVDo6c3BlY3VsYXRlT2JqZWN0KEVkZwogICAgIFNwZWN1bGF0ZUNl
bGxPcGVyYW5kIG9wZXJhbmQodGhpcywgZWRnZSk7CiAgICAgR1BSUmVnIGdwciA9IG9wZXJhbmQu
Z3ByKCk7CiAgICAgREZHX1RZUEVfQ0hFQ0soCi0gICAgICAgIEpTVmFsdWVTb3VyY2U6OnVuYm94
ZWRDZWxsKGdwciksIGVkZ2UsIFNwZWNPYmplY3QsIGJyYW5jaE5vdE9iamVjdChncHIpKTsKKyAg
ICAgICAgSlNWYWx1ZVNvdXJjZTo6dW5ib3hlZENlbGwoZ3ByKSwgZWRnZSwgU3BlY09iamVjdCwg
bV9qaXQuYnJhbmNoSWZOb3RPYmplY3QoZ3ByKSk7CiB9CiAKIHZvaWQgU3BlY3VsYXRpdmVKSVQ6
OnNwZWN1bGF0ZUZ1bmN0aW9uKEVkZ2UgZWRnZSkKQEAgLTUyMjMsMTYgKzUyMjMsMTYgQEAgdm9p
ZCBTcGVjdWxhdGl2ZUpJVDo6c3BlY3VsYXRlT2JqZWN0T3JPdAogICAgIEpTVmFsdWVPcGVyYW5k
IG9wZXJhbmQodGhpcywgZWRnZSwgTWFudWFsT3BlcmFuZFNwZWN1bGF0aW9uKTsKICAgICBHUFJU
ZW1wb3JhcnkgdGVtcCh0aGlzKTsKICAgICBHUFJSZWcgdGVtcEdQUiA9IHRlbXAuZ3ByKCk7Ci0g
ICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXAgbm90Q2VsbCA9IGJyYW5jaE5vdENlbGwob3BlcmFuZC5q
c1ZhbHVlUmVncygpKTsKKyAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBub3RDZWxsID0gbV9qaXQu
YnJhbmNoSWZOb3RDZWxsKG9wZXJhbmQuanNWYWx1ZVJlZ3MoKSk7CiAgICAgR1BSUmVnIGdwciA9
IG9wZXJhbmQuanNWYWx1ZVJlZ3MoKS5wYXlsb2FkR1BSKCk7CiAgICAgREZHX1RZUEVfQ0hFQ0so
Ci0gICAgICAgIG9wZXJhbmQuanNWYWx1ZVJlZ3MoKSwgZWRnZSwgKH5TcGVjQ2VsbCkgfCBTcGVj
T2JqZWN0LCBicmFuY2hOb3RPYmplY3QoZ3ByKSk7CisgICAgICAgIG9wZXJhbmQuanNWYWx1ZVJl
Z3MoKSwgZWRnZSwgKH5TcGVjQ2VsbCkgfCBTcGVjT2JqZWN0LCBtX2ppdC5icmFuY2hJZk5vdE9i
amVjdChncHIpKTsKICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBkb25lID0gbV9qaXQuanVtcCgp
OwogICAgIG5vdENlbGwubGluaygmbV9qaXQpOwogICAgIGlmIChuZWVkc1R5cGVDaGVjayhlZGdl
LCBTcGVjQ2VsbCB8IFNwZWNPdGhlcikpIHsKICAgICAgICAgdHlwZUNoZWNrKAogICAgICAgICAg
ICAgb3BlcmFuZC5qc1ZhbHVlUmVncygpLCBlZGdlLCBTcGVjQ2VsbCB8IFNwZWNPdGhlciwKLSAg
ICAgICAgICAgIGJyYW5jaE5vdE90aGVyKG9wZXJhbmQuanNWYWx1ZVJlZ3MoKSwgdGVtcEdQUikp
OworICAgICAgICAgICAgbV9qaXQuYnJhbmNoSWZOb3RPdGhlcihvcGVyYW5kLmpzVmFsdWVSZWdz
KCksIHRlbXBHUFIpKTsKICAgICB9CiAgICAgZG9uZS5saW5rKCZtX2ppdCk7CiB9CkBAIC01MjQw
LDcgKzUyNDAsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpzcGVjdWxhdGVPYmplY3RPck90CiB2
b2lkIFNwZWN1bGF0aXZlSklUOjpzcGVjdWxhdGVTdHJpbmcoRWRnZSBlZGdlLCBHUFJSZWcgY2Vs
bCkKIHsKICAgICBERkdfVFlQRV9DSEVDSygKLSAgICAgICAgSlNWYWx1ZVNvdXJjZTo6dW5ib3hl
ZENlbGwoY2VsbCksIGVkZ2UsIFNwZWNTdHJpbmcgfCB+U3BlY0NlbGwsIGJyYW5jaE5vdFN0cmlu
ZyhjZWxsKSk7CisgICAgICAgIEpTVmFsdWVTb3VyY2U6OnVuYm94ZWRDZWxsKGNlbGwpLCBlZGdl
LCBTcGVjU3RyaW5nIHwgflNwZWNDZWxsLCBtX2ppdC5icmFuY2hJZk5vdFN0cmluZyhjZWxsKSk7
CiB9CiAKIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OnNwZWN1bGF0ZVN0cmluZ0lkZW50QW5kTG9hZFN0
b3JhZ2UoRWRnZSBlZGdlLCBHUFJSZWcgc3RyaW5nLCBHUFJSZWcgc3RvcmFnZSkKQEAgLTUzNDIs
MTAgKzUzNDIsMTAgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6c3BlY3VsYXRlTm90U3RyaW5nVgog
ICAgIEdQUlRlbXBvcmFyeSB0ZW1wKHRoaXMpOwogICAgIEdQUlJlZyB0ZW1wR1BSID0gdGVtcC5n
cHIoKTsKICAgICAKLSAgICBKSVRDb21waWxlcjo6SnVtcCBub3RDZWxsID0gYnJhbmNoTm90Q2Vs
bChvcGVyYW5kLmpzVmFsdWVSZWdzKCkpOworICAgIEpJVENvbXBpbGVyOjpKdW1wIG5vdENlbGwg
PSBtX2ppdC5icmFuY2hJZk5vdENlbGwob3BlcmFuZC5qc1ZhbHVlUmVncygpKTsKICAgICBHUFJS
ZWcgY2VsbCA9IG9wZXJhbmQuanNWYWx1ZVJlZ3MoKS5wYXlsb2FkR1BSKCk7CiAgICAgCi0gICAg
SklUQ29tcGlsZXI6Okp1bXAgbm90U3RyaW5nID0gYnJhbmNoTm90U3RyaW5nKGNlbGwpOworICAg
IEpJVENvbXBpbGVyOjpKdW1wIG5vdFN0cmluZyA9IG1faml0LmJyYW5jaElmTm90U3RyaW5nKGNl
bGwpOwogICAgIAogICAgIHNwZWN1bGF0ZVN0cmluZ0lkZW50QW5kTG9hZFN0b3JhZ2UoZWRnZSwg
Y2VsbCwgdGVtcEdQUik7CiAgICAgCkBAIC01MzU5LDcgKzUzNTksNyBAQCB2b2lkIFNwZWN1bGF0
aXZlSklUOjpzcGVjdWxhdGVOb3RDZWxsKEVkCiAgICAgICAgIHJldHVybjsKICAgICAKICAgICBK
U1ZhbHVlT3BlcmFuZCBvcGVyYW5kKHRoaXMsIGVkZ2UsIE1hbnVhbE9wZXJhbmRTcGVjdWxhdGlv
bik7IAotICAgIHR5cGVDaGVjayhvcGVyYW5kLmpzVmFsdWVSZWdzKCksIGVkZ2UsIH5TcGVjQ2Vs
bCwgYnJhbmNoSXNDZWxsKG9wZXJhbmQuanNWYWx1ZVJlZ3MoKSkpOworICAgIHR5cGVDaGVjayhv
cGVyYW5kLmpzVmFsdWVSZWdzKCksIGVkZ2UsIH5TcGVjQ2VsbCwgbV9qaXQuYnJhbmNoSWZDZWxs
KG9wZXJhbmQuanNWYWx1ZVJlZ3MoKSkpOwogfQogCiB2b2lkIFNwZWN1bGF0aXZlSklUOjpzcGVj
dWxhdGVPdGhlcihFZGdlIGVkZ2UpCkBAIC01MzcyLDcgKzUzNzIsNyBAQCB2b2lkIFNwZWN1bGF0
aXZlSklUOjpzcGVjdWxhdGVPdGhlcihFZGdlCiAgICAgR1BSUmVnIHRlbXBHUFIgPSB0ZW1wLmdw
cigpOwogICAgIHR5cGVDaGVjaygKICAgICAgICAgb3BlcmFuZC5qc1ZhbHVlUmVncygpLCBlZGdl
LCBTcGVjT3RoZXIsCi0gICAgICAgIGJyYW5jaE5vdE90aGVyKG9wZXJhbmQuanNWYWx1ZVJlZ3Mo
KSwgdGVtcEdQUikpOworICAgICAgICBtX2ppdC5icmFuY2hJZk5vdE90aGVyKG9wZXJhbmQuanNW
YWx1ZVJlZ3MoKSwgdGVtcEdQUikpOwogfQogCiB2b2lkIFNwZWN1bGF0aXZlSklUOjpzcGVjdWxh
dGVNaXNjKEVkZ2UgZWRnZSwgSlNWYWx1ZVJlZ3MgcmVncykKQEAgLTU2MTksOSArNTYxOSw5IEBA
IHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXRTd2l0Y2hDaGFyKE5vZGUKICAgICAgICAgCiAgICAg
ICAgIG9wMS51c2UoKTsKICAgICAgICAgCi0gICAgICAgIGFkZEJyYW5jaChicmFuY2hOb3RDZWxs
KG9wMVJlZ3MpLCBkYXRhLT5mYWxsVGhyb3VnaC5ibG9jayk7CisgICAgICAgIGFkZEJyYW5jaCht
X2ppdC5icmFuY2hJZk5vdENlbGwob3AxUmVncyksIGRhdGEtPmZhbGxUaHJvdWdoLmJsb2NrKTsK
ICAgICAgICAgCi0gICAgICAgIGFkZEJyYW5jaChicmFuY2hOb3RTdHJpbmcob3AxUmVncy5wYXls
b2FkR1BSKCkpLCBkYXRhLT5mYWxsVGhyb3VnaC5ibG9jayk7CisgICAgICAgIGFkZEJyYW5jaCht
X2ppdC5icmFuY2hJZk5vdFN0cmluZyhvcDFSZWdzLnBheWxvYWRHUFIoKSksIGRhdGEtPmZhbGxU
aHJvdWdoLmJsb2NrKTsKICAgICAgICAgCiAgICAgICAgIGVtaXRTd2l0Y2hDaGFyU3RyaW5nSnVt
cChkYXRhLCBvcDFSZWdzLnBheWxvYWRHUFIoKSwgdGVtcEdQUik7CiAgICAgICAgIG5vUmVzdWx0
KG5vZGUsIFVzZUNoaWxkcmVuQ2FsbGVkRXhwbGljaXRseSk7CkBAIC01ODkyLDkgKzU4OTIsOSBA
QCB2b2lkIFNwZWN1bGF0aXZlSklUOjplbWl0U3dpdGNoU3RyaW5nKE5vCiAgICAgICAgIAogICAg
ICAgICBvcDEudXNlKCk7CiAgICAgICAgIAotICAgICAgICBhZGRCcmFuY2goYnJhbmNoTm90Q2Vs
bChvcDFSZWdzKSwgZGF0YS0+ZmFsbFRocm91Z2guYmxvY2spOworICAgICAgICBhZGRCcmFuY2go
bV9qaXQuYnJhbmNoSWZOb3RDZWxsKG9wMVJlZ3MpLCBkYXRhLT5mYWxsVGhyb3VnaC5ibG9jayk7
CiAgICAgICAgIAotICAgICAgICBhZGRCcmFuY2goYnJhbmNoTm90U3RyaW5nKG9wMVJlZ3MucGF5
bG9hZEdQUigpKSwgZGF0YS0+ZmFsbFRocm91Z2guYmxvY2spOworICAgICAgICBhZGRCcmFuY2go
bV9qaXQuYnJhbmNoSWZOb3RTdHJpbmcob3AxUmVncy5wYXlsb2FkR1BSKCkpLCBkYXRhLT5mYWxs
VGhyb3VnaC5ibG9jayk7CiAgICAgICAgIAogICAgICAgICBlbWl0U3dpdGNoU3RyaW5nT25TdHJp
bmcoZGF0YSwgb3AxUmVncy5wYXlsb2FkR1BSKCkpOwogICAgICAgICBub1Jlc3VsdChub2RlLCBV
c2VDaGlsZHJlbkNhbGxlZEV4cGxpY2l0bHkpOwpAQCAtNTk0NCwzOCArNTk0NCw2IEBAIHZvaWQg
U3BlY3VsYXRpdmVKSVQ6OmxpbmtCcmFuY2hlcygpCiAgICAgfQogfQogCi1KSVRDb21waWxlcjo6
SnVtcCBTcGVjdWxhdGl2ZUpJVDo6YnJhbmNoSXNPYmplY3QoR1BSUmVnIGNlbGxHUFIpCi17Ci0g
ICAgcmV0dXJuIG1faml0LmJyYW5jaDgoCi0gICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBYm92ZU9y
RXF1YWwsCi0gICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGNlbGxHUFIsIEpTQ2VsbDo6
dHlwZUluZm9UeXBlT2Zmc2V0KCkpLAotICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZElt
bTMyKE9iamVjdFR5cGUpKTsKLX0KLQotSklUQ29tcGlsZXI6Okp1bXAgU3BlY3VsYXRpdmVKSVQ6
OmJyYW5jaE5vdE9iamVjdChHUFJSZWcgY2VsbEdQUikKLXsKLSAgICByZXR1cm4gbV9qaXQuYnJh
bmNoOCgKLSAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkJlbG93LAotICAgICAgICBNYWNyb0Fzc2Vt
Ymxlcjo6QWRkcmVzcyhjZWxsR1BSLCBKU0NlbGw6OnR5cGVJbmZvVHlwZU9mZnNldCgpKSwKLSAg
ICAgICAgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW0zMihPYmplY3RUeXBlKSk7Ci19Ci0KLUpJ
VENvbXBpbGVyOjpKdW1wIFNwZWN1bGF0aXZlSklUOjpicmFuY2hJc1N0cmluZyhHUFJSZWcgY2Vs
bEdQUikKLXsKLSAgICByZXR1cm4gbV9qaXQuYnJhbmNoU3RydWN0dXJlUHRyKAotICAgICAgICBN
YWNyb0Fzc2VtYmxlcjo6RXF1YWwsCi0gICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGNl
bGxHUFIsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSksCi0gICAgICAgIG1faml0LnZtKCkt
PnN0cmluZ1N0cnVjdHVyZS5nZXQoKSk7Ci19Ci0KLUpJVENvbXBpbGVyOjpKdW1wIFNwZWN1bGF0
aXZlSklUOjpicmFuY2hOb3RTdHJpbmcoR1BSUmVnIGNlbGxHUFIpCi17Ci0gICAgcmV0dXJuIG1f
aml0LmJyYW5jaFN0cnVjdHVyZVB0cigKLSAgICAgICAgTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFs
LAotICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhjZWxsR1BSLCBKU0NlbGw6OnN0cnVj
dHVyZUlET2Zmc2V0KCkpLAotICAgICAgICBtX2ppdC52bSgpLT5zdHJpbmdTdHJ1Y3R1cmUuZ2V0
KCkpOwotfQotCiAjaWYgRU5BQkxFKEdHQykKIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVT
dG9yZUJhcnJpZXIoTm9kZSogbm9kZSkKIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHU3BlY3VsYXRpdmVKSVQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgJKHJldmlzaW9uIDE4MzY1MCkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaAkod29ya2luZyBjb3B5KQpAQCAt
MjIxNSwxNSArMjIxNSw2IEBAIHB1YmxpYzoKICAgICB2b2lkIGNvbXBpbGVOb3RpZnlXcml0ZShO
b2RlKik7CiAgICAgYm9vbCBjb21waWxlUmVnRXhwRXhlYyhOb2RlKik7CiAgICAgCi0gICAgSklU
Q29tcGlsZXI6Okp1bXAgYnJhbmNoSXNDZWxsKEpTVmFsdWVSZWdzKTsKLSAgICBKSVRDb21waWxl
cjo6SnVtcCBicmFuY2hOb3RDZWxsKEpTVmFsdWVSZWdzKTsKLSAgICBKSVRDb21waWxlcjo6SnVt
cCBicmFuY2hJc090aGVyKEpTVmFsdWVSZWdzLCBHUFJSZWcgdGVtcEdQUik7Ci0gICAgSklUQ29t
cGlsZXI6Okp1bXAgYnJhbmNoTm90T3RoZXIoSlNWYWx1ZVJlZ3MsIEdQUlJlZyB0ZW1wR1BSKTsK
LSAgICBKSVRDb21waWxlcjo6SnVtcCBicmFuY2hJc09iamVjdChHUFJSZWcgY2VsbEdQUik7Ci0g
ICAgSklUQ29tcGlsZXI6Okp1bXAgYnJhbmNoTm90T2JqZWN0KEdQUlJlZyBjZWxsR1BSKTsKLSAg
ICBKSVRDb21waWxlcjo6SnVtcCBicmFuY2hJc1N0cmluZyhHUFJSZWcgY2VsbEdQUik7Ci0gICAg
SklUQ29tcGlsZXI6Okp1bXAgYnJhbmNoTm90U3RyaW5nKEdQUlJlZyBjZWxsR1BSKTsKLSAgICAK
ICAgICB2b2lkIG1vdmVUcnVlVG8oR1BSUmVnKTsKICAgICB2b2lkIG1vdmVGYWxzZVRvKEdQUlJl
Zyk7CiAgICAgdm9pZCBibGVzc0Jvb2xlYW4oR1BSUmVnKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuaAkocmV2aXNpb24gMTgzNjUwKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuaAkod29ya2luZyBjb3B5KQpA
QCAtMzg1LDcgKzM4NSw3NyBAQCBwdWJsaWM6CiAjZW5kaWYKICAgICB9CiAgICAgCi0gICAgSnVt
cCBicmFuY2hJc0VtcHR5KEpTVmFsdWVSZWdzIHJlZ3MpCisgICAgSnVtcCBicmFuY2hJZkNlbGwo
R1BSUmVnIHJlZykKKyAgICB7CisjaWYgVVNFKEpTVkFMVUU2NCkKKyAgICAgICAgcmV0dXJuIGJy
YW5jaFRlc3Q2NChNYWNyb0Fzc2VtYmxlcjo6WmVybywgcmVnLCBHUFJJbmZvOjp0YWdNYXNrUmVn
aXN0ZXIpOworI2Vsc2UKKyAgICAgICAgcmV0dXJuIGJyYW5jaDMyKE1hY3JvQXNzZW1ibGVyOjpF
cXVhbCwgcmVnLCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6Q2VsbFRhZykpOworI2VuZGlmCisgICAg
fQorICAgIEp1bXAgYnJhbmNoSWZDZWxsKEpTVmFsdWVSZWdzIHJlZ3MpCisgICAgeworI2lmIFVT
RShKU1ZBTFVFNjQpCisgICAgICAgIHJldHVybiBicmFuY2hJZkNlbGwocmVncy5ncHIoKSk7Cisj
ZWxzZQorICAgICAgICByZXR1cm4gYnJhbmNoSWZDZWxsKHJlZ3MudGFnR1BSKCkpOworI2VuZGlm
CisgICAgfQorICAgIAorICAgIEp1bXAgYnJhbmNoSWZPdGhlcihKU1ZhbHVlUmVncyByZWdzLCBH
UFJSZWcgdGVtcEdQUikKKyAgICB7CisjaWYgVVNFKEpTVkFMVUU2NCkKKyAgICAgICAgbW92ZShy
ZWdzLmdwcigpLCB0ZW1wR1BSKTsKKyAgICAgICAgYW5kNjQoVHJ1c3RlZEltbTMyKH5UYWdCaXRV
bmRlZmluZWQpLCB0ZW1wR1BSKTsKKyAgICAgICAgcmV0dXJuIGJyYW5jaDY0KEVxdWFsLCB0ZW1w
R1BSLCBUcnVzdGVkSW1tNjQoVmFsdWVOdWxsKSk7CisjZWxzZQorICAgICAgICBvcjMyKFRydXN0
ZWRJbW0zMigxKSwgcmVncy50YWdHUFIoKSwgdGVtcEdQUik7CisgICAgICAgIHJldHVybiBicmFu
Y2gzMihFcXVhbCwgdGVtcEdQUiwgVHJ1c3RlZEltbTMyKEpTVmFsdWU6Ok51bGxUYWcpKTsKKyNl
bmRpZgorICAgIH0KKyAgICAKKyAgICBKdW1wIGJyYW5jaElmTm90T3RoZXIoSlNWYWx1ZVJlZ3Mg
cmVncywgR1BSUmVnIHRlbXBHUFIpCisgICAgeworI2lmIFVTRShKU1ZBTFVFNjQpCisgICAgICAg
IG1vdmUocmVncy5ncHIoKSwgdGVtcEdQUik7CisgICAgICAgIGFuZDY0KFRydXN0ZWRJbW0zMih+
VGFnQml0VW5kZWZpbmVkKSwgdGVtcEdQUik7CisgICAgICAgIHJldHVybiBicmFuY2g2NChOb3RF
cXVhbCwgdGVtcEdQUiwgVHJ1c3RlZEltbTY0KFZhbHVlTnVsbCkpOworI2Vsc2UKKyAgICAgICAg
b3IzMihUcnVzdGVkSW1tMzIoMSksIHJlZ3MudGFnR1BSKCksIHRlbXBHUFIpOworICAgICAgICBy
ZXR1cm4gYnJhbmNoMzIoTm90RXF1YWwsIHRlbXBHUFIsIFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpO
dWxsVGFnKSk7CisjZW5kaWYKKyAgICB9CisgICAgCisgICAgSnVtcCBicmFuY2hJZk9iamVjdChH
UFJSZWcgY2VsbEdQUikKKyAgICB7CisgICAgICAgIHJldHVybiBicmFuY2g4KAorICAgICAgICAg
ICAgQWJvdmVPckVxdWFsLCBBZGRyZXNzKGNlbGxHUFIsIEpTQ2VsbDo6dHlwZUluZm9UeXBlT2Zm
c2V0KCkpLCBUcnVzdGVkSW1tMzIoT2JqZWN0VHlwZSkpOworICAgIH0KKyAgICAKKyAgICBKdW1w
IGJyYW5jaElmTm90T2JqZWN0KEdQUlJlZyBjZWxsR1BSKQorICAgIHsKKyAgICAgICAgcmV0dXJu
IGJyYW5jaDgoCisgICAgICAgICAgICBCZWxvdywgQWRkcmVzcyhjZWxsR1BSLCBKU0NlbGw6OnR5
cGVJbmZvVHlwZU9mZnNldCgpKSwgVHJ1c3RlZEltbTMyKE9iamVjdFR5cGUpKTsKKyAgICB9Cisg
ICAgCisgICAgSnVtcCBicmFuY2hJZlR5cGUoR1BSUmVnIGNlbGxHUFIsIEpTVHlwZSB0eXBlKQor
ICAgIHsKKyAgICAgICAgcmV0dXJuIGJyYW5jaDgoRXF1YWwsIEFkZHJlc3MoY2VsbEdQUiwgSlND
ZWxsOjp0eXBlSW5mb1R5cGVPZmZzZXQoKSksIFRydXN0ZWRJbW0zMih0eXBlKSk7CisgICAgfQor
ICAgIAorICAgIEp1bXAgYnJhbmNoSWZOb3RUeXBlKEdQUlJlZyBjZWxsR1BSLCBKU1R5cGUgdHlw
ZSkKKyAgICB7CisgICAgICAgIHJldHVybiBicmFuY2g4KE5vdEVxdWFsLCBBZGRyZXNzKGNlbGxH
UFIsIEpTQ2VsbDo6dHlwZUluZm9UeXBlT2Zmc2V0KCkpLCBUcnVzdGVkSW1tMzIodHlwZSkpOwor
ICAgIH0KKyAgICAKKyAgICBKdW1wIGJyYW5jaElmU3RyaW5nKEdQUlJlZyBjZWxsR1BSKSB7IHJl
dHVybiBicmFuY2hJZlR5cGUoY2VsbEdQUiwgU3RyaW5nVHlwZSk7IH0KKyAgICBKdW1wIGJyYW5j
aElmTm90U3RyaW5nKEdQUlJlZyBjZWxsR1BSKSB7IHJldHVybiBicmFuY2hJZk5vdFR5cGUoY2Vs
bEdQUiwgU3RyaW5nVHlwZSk7IH0KKyAgICBKdW1wIGJyYW5jaElmU3ltYm9sKEdQUlJlZyBjZWxs
R1BSKSB7IHJldHVybiBicmFuY2hJZlR5cGUoY2VsbEdQUiwgU3ltYm9sVHlwZSk7IH0KKyAgICBK
dW1wIGJyYW5jaElmTm90U3ltYm9sKEdQUlJlZyBjZWxsR1BSKSB7IHJldHVybiBicmFuY2hJZk5v
dFR5cGUoY2VsbEdQUiwgU3ltYm9sVHlwZSk7IH0KKyAgICBKdW1wIGJyYW5jaElmRnVuY3Rpb24o
R1BSUmVnIGNlbGxHUFIpIHsgcmV0dXJuIGJyYW5jaElmVHlwZShjZWxsR1BSLCBGdW5jdGlvblR5
cGUpOyB9CisgICAgSnVtcCBicmFuY2hJZk5vdEZ1bmN0aW9uKEdQUlJlZyBjZWxsR1BSKSB7IHJl
dHVybiBicmFuY2hJZk5vdFR5cGUoY2VsbEdQUiwgRnVuY3Rpb25UeXBlKTsgfQorICAgIAorICAg
IEp1bXAgYnJhbmNoSWZFbXB0eShKU1ZhbHVlUmVncyByZWdzKQogICAgIHsKICNpZiBVU0UoSlNW
QUxVRTY0KQogICAgICAgICByZXR1cm4gYnJhbmNoVGVzdDY0KFplcm8sIHJlZ3MuZ3ByKCkpOwpA
QCAtNDc1LDExICs1NDUsNiBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBjYWxsZWVGcmFtZVNs
b3QoMCkud2l0aE9mZnNldChDYWxsRnJhbWU6OmNhbGxlckZyYW1lT2Zmc2V0KCkpOwogICAgIH0K
IAotICAgIEp1bXAgYnJhbmNoSWZDZWxsTm90T2JqZWN0KEdQUlJlZyBjZWxsUmVnKQotICAgIHsK
LSAgICAgICAgcmV0dXJuIGJyYW5jaDgoQmVsb3csIEFkZHJlc3MoY2VsbFJlZywgSlNDZWxsOjp0
eXBlSW5mb1R5cGVPZmZzZXQoKSksIFRydXN0ZWRJbW0zMihPYmplY3RUeXBlKSk7Ci0gICAgfQot
CiAgICAgc3RhdGljIEdQUlJlZyBzZWxlY3RTY3JhdGNoR1BSKEdQUlJlZyBwcmVzZXJ2ZTEgPSBJ
bnZhbGlkR1BSUmVnLCBHUFJSZWcgcHJlc2VydmUyID0gSW52YWxpZEdQUlJlZywgR1BSUmVnIHBy
ZXNlcnZlMyA9IEludmFsaWRHUFJSZWcsIEdQUlJlZyBwcmVzZXJ2ZTQgPSBJbnZhbGlkR1BSUmVn
LCBHUFJSZWcgcHJlc2VydmU1ID0gSW52YWxpZEdQUlJlZykKICAgICB7CiAgICAgICAgIGlmIChw
cmVzZXJ2ZTEgIT0gR1BSSW5mbzo6cmVnVDAgJiYgcHJlc2VydmUyICE9IEdQUkluZm86OnJlZ1Qw
ICYmIHByZXNlcnZlMyAhPSBHUFJJbmZvOjpyZWdUMCAmJiBwcmVzZXJ2ZTQgIT0gR1BSSW5mbzo6
cmVnVDAgJiYgcHJlc2VydmU1ICE9IEdQUkluZm86OnJlZ1QwKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>252108</attachid>
            <date>2015-04-30 16:27:09 -0700</date>
            <delta_ts>2015-04-30 16:31:22 -0700</delta_ts>
            <desc>the patch</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>58535</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTgzNjUyKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDkyIEBA
CisyMDE1LTA0LTMwICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
TW92ZSBhbGwgb2YgdGhlIGJyYW5jaElzPHR5cGU+IGhlbHBlcnMgZnJvbSBTcGVjdWxhdGl2ZUpJ
VCBpbnRvIEFzc2VtYmx5SGVscGVycworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTQ0NDYyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisgICAgICAgIAorICAgICAgICBBdCBzb21lIHBvaW50IHdlIHN0YXJ0ZWQgYWRkaW5nIHJl
cHJlc2VudGF0aW9uLWFnbm9zdGljIGhlbHBlcnMgZm9yIGRvaW5nIGNvbW1vbiB0eXBlIHRlc3Rz
LgorICAgICAgICBXZSBhZGRlZCBzb21lIGluIFNwZWN1bGF0aXZlSklULCBhbmQgdGhlbiBzb21l
IGluIEFzc2VtYmx5SGVscGVycy4gUHJpb3IgdG8gdGhpcyBjaGFuZ2UsCisgICAgICAgIHRoZXkg
aGFkIG92ZXJsYXBwaW5nIHBvd2VycywgdGhvdWdoIFNwZWN1bGF0aXZlSklUIHdhcyBhIGJpdCBi
ZXR0ZXIuCisgICAgICAgIAorICAgICAgICBUaGlzIHJlbW92ZXMgU3BlY3VsYXRpdmVKSVQncyBo
ZWxwZXJzIGFuZCBzdHJlbmd0aGVucyBBc3NlbWJseUhlbHBlcnMnIGhlbHBlcnMuIFRoaXMgaXMK
KyAgICAgICAgYmV0dGVyIGJlY2F1c2Ugbm93IGFsbCBvZiB0aGVzZSBoZWxwZXJzIGNhbiBiZSB1
c2VkIGluIGFsbCBvZiB0aGUgYXNzZW1ibHktYmFzZWQgSklUcywgbm90CisgICAgICAgIGp1c3Qg
dGhlIERGRy4gSXQgYWxzbyBzZXR0bGVzIG9uIHdoYXQgSSBmaW5kIHRvIGJlIGEgc2xpZ2h0bHkg
YmV0dGVyIG5hbWluZyBjb252ZW50aW9uLgorICAgICAgICBGb3IgZXhhbXBsZSB3aGVyZSB3ZSBw
cmV2aW91c2x5IHdvdWxkIGhhdmUgc2FpZCBicmFuY2hJc1N0cmluZywgbm93IHdlIHNheQorICAg
ICAgICBicmFuY2hJZlN0cmluZy4gU2ltaWxhcmx5LCBicmFuY2hOb3RTdHJpbmcgYmVjb21lcyBi
cmFuY2hJZk5vdFN0cmluZy4KKworICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHA6
CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVQZWVwSG9sZU9iamVj
dEVxdWFsaXR5KToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVZh
bHVlVG9JbnQzMik6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVJ
bnN0YW5jZU9mRm9yT2JqZWN0KToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6
Y29tcGlsZUluc3RhbmNlT2YpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpj
b21waWxlU3RyaW5nVG9VbnR5cGVkRXF1YWxpdHkpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1
bGF0aXZlSklUOjpjb21waWxlU3RyaW5nSWRlbnRUb05vdFN0cmluZ1ZhckVxdWFsaXR5KToKKyAg
ICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUdldEJ5VmFsT25TY29wZWRB
cmd1bWVudHMpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlVG9T
dHJpbmdPckNhbGxTdHJpbmdDb25zdHJ1Y3Rvck9uQ2VsbCk6CisgICAgICAgIChKU0M6OkRGRzo6
U3BlY3VsYXRpdmVKSVQ6OnNwZWN1bGF0ZU9iamVjdCk6CisgICAgICAgIChKU0M6OkRGRzo6U3Bl
Y3VsYXRpdmVKSVQ6OnNwZWN1bGF0ZU9iamVjdE9yT3RoZXIpOgorICAgICAgICAoSlNDOjpERkc6
OlNwZWN1bGF0aXZlSklUOjpzcGVjdWxhdGVTdHJpbmcpOgorICAgICAgICAoSlNDOjpERkc6OlNw
ZWN1bGF0aXZlSklUOjpzcGVjdWxhdGVOb3RTdHJpbmdWYXIpOgorICAgICAgICAoSlNDOjpERkc6
OlNwZWN1bGF0aXZlSklUOjpzcGVjdWxhdGVOb3RDZWxsKToKKyAgICAgICAgKEpTQzo6REZHOjpT
cGVjdWxhdGl2ZUpJVDo6c3BlY3VsYXRlT3RoZXIpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1
bGF0aXZlSklUOjplbWl0U3dpdGNoQ2hhcik6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRp
dmVKSVQ6OmVtaXRTd2l0Y2hTdHJpbmcpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZl
SklUOjpicmFuY2hJc09iamVjdCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkRGRzo6U3BlY3Vs
YXRpdmVKSVQ6OmJyYW5jaE5vdE9iamVjdCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkRGRzo6
U3BlY3VsYXRpdmVKSVQ6OmJyYW5jaElzU3RyaW5nKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6
REZHOjpTcGVjdWxhdGl2ZUpJVDo6YnJhbmNoTm90U3RyaW5nKTogRGVsZXRlZC4KKyAgICAgICAg
KiBkZmcvREZHU3BlY3VsYXRpdmVKSVQuaDoKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVK
SVQzMl82NC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6Om5vblNwZWN1
bGF0aXZlTm9uUGVlcGhvbGVDb21wYXJlTnVsbCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3Vs
YXRpdmVKSVQ6Om5vblNwZWN1bGF0aXZlUGVlcGhvbGVCcmFuY2hOdWxsKToKKyAgICAgICAgKEpT
Qzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6ZW1pdENhbGwpOgorICAgICAgICAoSlNDOjpERkc6OlNw
ZWN1bGF0aXZlSklUOjpmaWxsU3BlY3VsYXRlQ2VsbCk6CisgICAgICAgIChKU0M6OkRGRzo6U3Bl
Y3VsYXRpdmVKSVQ6OmNvbXBpbGVPYmplY3RFcXVhbGl0eSk6CisgICAgICAgIChKU0M6OkRGRzo6
U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVPYmplY3RUb09iamVjdE9yT3RoZXJFcXVhbGl0eSk6Cisg
ICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVQZWVwSG9sZU9iamVjdFRv
T2JqZWN0T3JPdGhlckVxdWFsaXR5KToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJ
VDo6Y29tcGlsZU9iamVjdE9yT3RoZXJMb2dpY2FsTm90KToKKyAgICAgICAgKEpTQzo6REZHOjpT
cGVjdWxhdGl2ZUpJVDo6ZW1pdE9iamVjdE9yT3RoZXJCcmFuY2gpOgorICAgICAgICAoSlNDOjpE
Rkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxh
dGl2ZUpJVDo6YnJhbmNoSXNDZWxsKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6REZHOjpTcGVj
dWxhdGl2ZUpJVDo6YnJhbmNoTm90Q2VsbCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkRGRzo6
U3BlY3VsYXRpdmVKSVQ6OmJyYW5jaElzT3RoZXIpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpE
Rkc6OlNwZWN1bGF0aXZlSklUOjpicmFuY2hOb3RPdGhlcik6IERlbGV0ZWQuCisgICAgICAgICog
ZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0
aXZlSklUOjpub25TcGVjdWxhdGl2ZU5vblBlZXBob2xlQ29tcGFyZU51bGwpOgorICAgICAgICAo
SlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpub25TcGVjdWxhdGl2ZVBlZXBob2xlQnJhbmNoTnVs
bCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmZpbGxTcGVjdWxhdGVDZWxs
KToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU9iamVjdEVxdWFs
aXR5KToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU9iamVjdFRv
T2JqZWN0T3JPdGhlckVxdWFsaXR5KToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJ
VDo6Y29tcGlsZVBlZXBIb2xlT2JqZWN0VG9PYmplY3RPck90aGVyRXF1YWxpdHkpOgorICAgICAg
ICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlT2JqZWN0T3JPdGhlckxvZ2ljYWxO
b3QpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjplbWl0T2JqZWN0T3JPdGhl
ckJyYW5jaCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUpOgor
ICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjp3cml0ZUJhcnJpZXIpOgorICAgICAg
ICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpicmFuY2hJc0NlbGwpOiBEZWxldGVkLgorICAg
ICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpicmFuY2hOb3RDZWxsKTogRGVsZXRlZC4K
KyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6YnJhbmNoSXNPdGhlcik6IERlbGV0
ZWQuCisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmJyYW5jaE5vdE90aGVyKTog
RGVsZXRlZC4KKyAgICAgICAgKiBqaXQvQXNzZW1ibHlIZWxwZXJzLmg6CisgICAgICAgIChKU0M6
OkFzc2VtYmx5SGVscGVyczo6YnJhbmNoSWZDZWxsKToKKyAgICAgICAgKEpTQzo6QXNzZW1ibHlI
ZWxwZXJzOjpicmFuY2hJZk90aGVyKToKKyAgICAgICAgKEpTQzo6QXNzZW1ibHlIZWxwZXJzOjpi
cmFuY2hJZk5vdE90aGVyKToKKyAgICAgICAgKEpTQzo6QXNzZW1ibHlIZWxwZXJzOjpicmFuY2hJ
Zk9iamVjdCk6CisgICAgICAgIChKU0M6OkFzc2VtYmx5SGVscGVyczo6YnJhbmNoSWZOb3RPYmpl
Y3QpOgorICAgICAgICAoSlNDOjpBc3NlbWJseUhlbHBlcnM6OmJyYW5jaElmVHlwZSk6CisgICAg
ICAgIChKU0M6OkFzc2VtYmx5SGVscGVyczo6YnJhbmNoSWZOb3RUeXBlKToKKyAgICAgICAgKEpT
Qzo6QXNzZW1ibHlIZWxwZXJzOjpicmFuY2hJZlN0cmluZyk6CisgICAgICAgIChKU0M6OkFzc2Vt
Ymx5SGVscGVyczo6YnJhbmNoSWZOb3RTdHJpbmcpOgorICAgICAgICAoSlNDOjpBc3NlbWJseUhl
bHBlcnM6OmJyYW5jaElmU3ltYm9sKToKKyAgICAgICAgKEpTQzo6QXNzZW1ibHlIZWxwZXJzOjpi
cmFuY2hJZk5vdFN5bWJvbCk6CisgICAgICAgIChKU0M6OkFzc2VtYmx5SGVscGVyczo6YnJhbmNo
SWZGdW5jdGlvbik6CisgICAgICAgIChKU0M6OkFzc2VtYmx5SGVscGVyczo6YnJhbmNoSWZOb3RG
dW5jdGlvbik6CisgICAgICAgIChKU0M6OkFzc2VtYmx5SGVscGVyczo6YnJhbmNoSWZFbXB0eSk6
CisgICAgICAgIChKU0M6OkFzc2VtYmx5SGVscGVyczo6YnJhbmNoSXNFbXB0eSk6IERlbGV0ZWQu
CisgICAgICAgIChKU0M6OkFzc2VtYmx5SGVscGVyczo6YnJhbmNoSWZDZWxsTm90T2JqZWN0KTog
RGVsZXRlZC4KKyAgICAgICAgKiBqaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwOgorICAgICAgICAo
SlNDOjpKSVQ6OmVtaXRTY29wZWRBcmd1bWVudHNHZXRCeVZhbCk6CisKIDIwMTUtMDQtMzAgIEZp
bGlwIFBpemxvICA8ZnBpemxvQGFwcGxlLmNvbT4KIAogICAgICAgICBqcy9yZWdyZXNzL2lzLXN0
cmluZy1mb2xkLXRyaWNreS5odG1sIGFuZCBqcy9yZWdyZXNzL2lzLXN0cmluZy1mb2xkLmh0bWwg
YXJlIGNyYXNoaW5nCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0
aXZlSklUMzJfNjQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAJKHJldmlzaW9uIDE4MzY1MCkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTI0Niw3ICsyNDYsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpub25TcGVjdWxhdGl2
ZU5vblBlCiAgICAgSklUQ29tcGlsZXI6Okp1bXAgbm90TWFzcXVlcmFkZXNBc1VuZGVmaW5lZDsg
ICAKICAgICBpZiAobWFzcXVlcmFkZXNBc1VuZGVmaW5lZFdhdGNocG9pbnRJc1N0aWxsVmFsaWQo
KSkgewogICAgICAgICBpZiAoIWlzS25vd25DZWxsKG9wZXJhbmQubm9kZSgpKSkKLSAgICAgICAg
ICAgIG5vdENlbGwgPSBicmFuY2hOb3RDZWxsKGFyZy5qc1ZhbHVlUmVncygpKTsKKyAgICAgICAg
ICAgIG5vdENlbGwgPSBtX2ppdC5icmFuY2hJZk5vdENlbGwoYXJnLmpzVmFsdWVSZWdzKCkpOwog
ICAgICAgICAKICAgICAgICAgbV9qaXQubW92ZShpbnZlcnQgPyBUcnVzdGVkSW1tMzIoMSkgOiBU
cnVzdGVkSW1tMzIoMCksIHJlc3VsdFBheWxvYWRHUFIpOwogICAgICAgICBub3RNYXNxdWVyYWRl
c0FzVW5kZWZpbmVkID0gbV9qaXQuanVtcCgpOwpAQCAtMjU1LDcgKzI1NSw3IEBAIHZvaWQgU3Bl
Y3VsYXRpdmVKSVQ6Om5vblNwZWN1bGF0aXZlTm9uUGUKICAgICAgICAgR1BSVGVtcG9yYXJ5IHJl
bW90ZUdsb2JhbE9iamVjdCh0aGlzKTsKIAogICAgICAgICBpZiAoIWlzS25vd25DZWxsKG9wZXJh
bmQubm9kZSgpKSkKLSAgICAgICAgICAgIG5vdENlbGwgPSBicmFuY2hOb3RDZWxsKGFyZy5qc1Zh
bHVlUmVncygpKTsKKyAgICAgICAgICAgIG5vdENlbGwgPSBtX2ppdC5icmFuY2hJZk5vdENlbGwo
YXJnLmpzVmFsdWVSZWdzKCkpOwogICAgICAgICAKICAgICAgICAgSklUQ29tcGlsZXI6Okp1bXAg
aXNNYXNxdWVyYWRlc0FzVW5kZWZpbmVkID0gbV9qaXQuYnJhbmNoVGVzdDgoCiAgICAgICAgICAg
ICBKSVRDb21waWxlcjo6Tm9uWmVybywgCkBAIC0zMTQsNyArMzE0LDcgQEAgdm9pZCBTcGVjdWxh
dGl2ZUpJVDo6bm9uU3BlY3VsYXRpdmVQZWVwaAogCiAgICAgaWYgKG1hc3F1ZXJhZGVzQXNVbmRl
ZmluZWRXYXRjaHBvaW50SXNTdGlsbFZhbGlkKCkpIHsKICAgICAgICAgaWYgKCFpc0tub3duQ2Vs
bChvcGVyYW5kLm5vZGUoKSkpCi0gICAgICAgICAgICBub3RDZWxsID0gYnJhbmNoTm90Q2VsbChh
cmcuanNWYWx1ZVJlZ3MoKSk7CisgICAgICAgICAgICBub3RDZWxsID0gbV9qaXQuYnJhbmNoSWZO
b3RDZWxsKGFyZy5qc1ZhbHVlUmVncygpKTsKICAgICAgICAgCiAgICAgICAgIGp1bXAoaW52ZXJ0
ID8gdGFrZW4gOiBub3RUYWtlbiwgRm9yY2VKdW1wKTsKICAgICB9IGVsc2UgewpAQCAtMzIyLDcg
KzMyMiw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6Om5vblNwZWN1bGF0aXZlUGVlcGgKICAgICAg
ICAgR1BSVGVtcG9yYXJ5IHJlbW90ZUdsb2JhbE9iamVjdCh0aGlzKTsKIAogICAgICAgICBpZiAo
IWlzS25vd25DZWxsKG9wZXJhbmQubm9kZSgpKSkKLSAgICAgICAgICAgIG5vdENlbGwgPSBicmFu
Y2hOb3RDZWxsKGFyZy5qc1ZhbHVlUmVncygpKTsKKyAgICAgICAgICAgIG5vdENlbGwgPSBtX2pp
dC5icmFuY2hJZk5vdENlbGwoYXJnLmpzVmFsdWVSZWdzKCkpOwogICAgICAgICAKICAgICAgICAg
YnJhbmNoVGVzdDgoSklUQ29tcGlsZXI6Olplcm8sIAogICAgICAgICAgICAgSklUQ29tcGlsZXI6
OkFkZHJlc3MoYXJnUGF5bG9hZEdQUiwgSlNDZWxsOjp0eXBlSW5mb0ZsYWdzT2Zmc2V0KCkpLCAK
QEAgLTc5OSw3ICs3OTksNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjplbWl0Q2FsbChOb2RlKiBu
b2RlCiAgICAgCiAgICAgQ2FsbExpbmtJbmZvKiBpbmZvID0gbV9qaXQuY29kZUJsb2NrKCktPmFk
ZENhbGxMaW5rSW5mbygpOwogCi0gICAgc2xvd1BhdGguYXBwZW5kKGJyYW5jaE5vdENlbGwoY2Fs
bGVlLmpzVmFsdWVSZWdzKCkpKTsKKyAgICBzbG93UGF0aC5hcHBlbmQobV9qaXQuYnJhbmNoSWZO
b3RDZWxsKGNhbGxlZS5qc1ZhbHVlUmVncygpKSk7CiAgICAgc2xvd1BhdGguYXBwZW5kKG1faml0
LmJyYW5jaFB0cldpdGhQYXRjaChNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIGNhbGxlZVBheWxv
YWRHUFIsIHRhcmdldFRvQ2hlY2spKTsKIAogICAgIEpJVENvbXBpbGVyOjpDYWxsIGZhc3RDYWxs
ID0gbV9qaXQubmVhckNhbGwoKTsKQEAgLTEwMjUsNyArMTAyNSw3IEBAIEdQUlJlZyBTcGVjdWxh
dGl2ZUpJVDo6ZmlsbFNwZWN1bGF0ZUNlbGwKICAgICAgICAgaWYgKHR5cGUgJiB+U3BlY0NlbGwp
IHsKICAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soCiAgICAgICAgICAgICAgICAgQmFkVHlw
ZSwgSlNWYWx1ZVJlZ3ModGFnR1BSLCBwYXlsb2FkR1BSKSwgZWRnZSwKLSAgICAgICAgICAgICAg
ICBicmFuY2hOb3RDZWxsKGluZm8uanNWYWx1ZVJlZ3MoKSkpOworICAgICAgICAgICAgICAgIG1f
aml0LmJyYW5jaElmTm90Q2VsbChpbmZvLmpzVmFsdWVSZWdzKCkpKTsKICAgICAgICAgfQogICAg
ICAgICBtX2dwcnMudW5sb2NrKHRhZ0dQUik7CiAgICAgICAgIG1fZ3Bycy5yZWxlYXNlKHRhZ0dQ
Uik7CkBAIC0xMTUwLDEyICsxMTUwLDEyIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVP
YmplY3RFcXVhbGkKICAgICAKICAgICBpZiAobWFzcXVlcmFkZXNBc1VuZGVmaW5lZFdhdGNocG9p
bnRJc1N0aWxsVmFsaWQoKSkgewogICAgICAgICBERkdfVFlQRV9DSEVDSygKLSAgICAgICAgICAg
IEpTVmFsdWVTb3VyY2U6OnVuYm94ZWRDZWxsKG9wMUdQUiksIG5vZGUtPmNoaWxkMSgpLCBTcGVj
T2JqZWN0LCBicmFuY2hOb3RPYmplY3Qob3AxR1BSKSk7CisgICAgICAgICAgICBKU1ZhbHVlU291
cmNlOjp1bmJveGVkQ2VsbChvcDFHUFIpLCBub2RlLT5jaGlsZDEoKSwgU3BlY09iamVjdCwgbV9q
aXQuYnJhbmNoSWZOb3RPYmplY3Qob3AxR1BSKSk7CiAgICAgICAgIERGR19UWVBFX0NIRUNLKAot
ICAgICAgICAgICAgSlNWYWx1ZVNvdXJjZTo6dW5ib3hlZENlbGwob3AyR1BSKSwgbm9kZS0+Y2hp
bGQyKCksIFNwZWNPYmplY3QsIGJyYW5jaE5vdE9iamVjdChvcDJHUFIpKTsKKyAgICAgICAgICAg
IEpTVmFsdWVTb3VyY2U6OnVuYm94ZWRDZWxsKG9wMkdQUiksIG5vZGUtPmNoaWxkMigpLCBTcGVj
T2JqZWN0LCBtX2ppdC5icmFuY2hJZk5vdE9iamVjdChvcDJHUFIpKTsKICAgICB9IGVsc2Ugewog
ICAgICAgICBERkdfVFlQRV9DSEVDSygKLSAgICAgICAgICAgIEpTVmFsdWVTb3VyY2U6OnVuYm94
ZWRDZWxsKG9wMUdQUiksIG5vZGUtPmNoaWxkMSgpLCBTcGVjT2JqZWN0LCBicmFuY2hOb3RPYmpl
Y3Qob3AxR1BSKSk7CisgICAgICAgICAgICBKU1ZhbHVlU291cmNlOjp1bmJveGVkQ2VsbChvcDFH
UFIpLCBub2RlLT5jaGlsZDEoKSwgU3BlY09iamVjdCwgbV9qaXQuYnJhbmNoSWZOb3RPYmplY3Qo
b3AxR1BSKSk7CiAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFkVHlwZSwgSlNWYWx1ZVNvdXJj
ZTo6dW5ib3hlZENlbGwob3AxR1BSKSwgbm9kZS0+Y2hpbGQxKCksCiAgICAgICAgICAgICBtX2pp
dC5icmFuY2hUZXN0OCgKICAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6Tm9uWmVybywg
CkBAIC0xMTYzLDcgKzExNjMsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlT2JqZWN0
RXF1YWxpCiAgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW0zMihNYXNx
dWVyYWRlc0FzVW5kZWZpbmVkKSkpOwogCiAgICAgICAgIERGR19UWVBFX0NIRUNLKAotICAgICAg
ICAgICAgSlNWYWx1ZVNvdXJjZTo6dW5ib3hlZENlbGwob3AyR1BSKSwgbm9kZS0+Y2hpbGQyKCks
IFNwZWNPYmplY3QsIGJyYW5jaE5vdE9iamVjdChvcDJHUFIpKTsKKyAgICAgICAgICAgIEpTVmFs
dWVTb3VyY2U6OnVuYm94ZWRDZWxsKG9wMkdQUiksIG5vZGUtPmNoaWxkMigpLCBTcGVjT2JqZWN0
LCBtX2ppdC5icmFuY2hJZk5vdE9iamVjdChvcDJHUFIpKTsKICAgICAgICAgc3BlY3VsYXRpb25D
aGVjayhCYWRUeXBlLCBKU1ZhbHVlU291cmNlOjp1bmJveGVkQ2VsbChvcDJHUFIpLCBub2RlLT5j
aGlsZDIoKSwKICAgICAgICAgICAgIG1faml0LmJyYW5jaFRlc3Q4KAogICAgICAgICAgICAgICAg
IE1hY3JvQXNzZW1ibGVyOjpOb25aZXJvLApAQCAtMTIwMCwxMCArMTIwMCwxMCBAQCB2b2lkIFNw
ZWN1bGF0aXZlSklUOjpjb21waWxlT2JqZWN0VG9PYmplCiAKICAgICBpZiAobWFzcXVlcmFkZXNB
c1VuZGVmaW5lZFdhdGNocG9pbnRWYWxpZCkgewogICAgICAgICBERkdfVFlQRV9DSEVDSygKLSAg
ICAgICAgICAgIEpTVmFsdWVTb3VyY2U6OnVuYm94ZWRDZWxsKG9wMUdQUiksIGxlZnRDaGlsZCwg
U3BlY09iamVjdCwgYnJhbmNoTm90T2JqZWN0KG9wMUdQUikpOworICAgICAgICAgICAgSlNWYWx1
ZVNvdXJjZTo6dW5ib3hlZENlbGwob3AxR1BSKSwgbGVmdENoaWxkLCBTcGVjT2JqZWN0LCBtX2pp
dC5icmFuY2hJZk5vdE9iamVjdChvcDFHUFIpKTsKICAgICB9IGVsc2UgewogICAgICAgICBERkdf
VFlQRV9DSEVDSygKLSAgICAgICAgICAgIEpTVmFsdWVTb3VyY2U6OnVuYm94ZWRDZWxsKG9wMUdQ
UiksIGxlZnRDaGlsZCwgU3BlY09iamVjdCwgYnJhbmNoTm90T2JqZWN0KG9wMUdQUikpOworICAg
ICAgICAgICAgSlNWYWx1ZVNvdXJjZTo6dW5ib3hlZENlbGwob3AxR1BSKSwgbGVmdENoaWxkLCBT
cGVjT2JqZWN0LCBtX2ppdC5icmFuY2hJZk5vdE9iamVjdChvcDFHUFIpKTsKICAgICAgICAgc3Bl
Y3VsYXRpb25DaGVjayhCYWRUeXBlLCBKU1ZhbHVlU291cmNlOjp1bmJveGVkQ2VsbChvcDFHUFIp
LCBsZWZ0Q2hpbGQsIAogICAgICAgICAgICAgbV9qaXQuYnJhbmNoVGVzdDgoCiAgICAgICAgICAg
ICAgICAgTWFjcm9Bc3NlbWJsZXI6Ok5vblplcm8sIApAQCAtMTIxNCwxNSArMTIxNCwxNSBAQCB2
b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlT2JqZWN0VG9PYmplCiAgICAgCiAgICAgLy8gSXQg
c2VlbXMgdGhhdCBtb3N0IG9mIHRoZSB0aW1lIHdoZW4gcHJvZ3JhbXMgZG8gYSA9PSBiIHdoZXJl
IGIgbWF5IGJlIGVpdGhlciBudWxsL3VuZGVmaW5lZAogICAgIC8vIG9yIGFuIG9iamVjdCwgYiBp
cyB1c3VhbGx5IGFuIG9iamVjdC4gQmFsYW5jZSB0aGUgYnJhbmNoZXMgdG8gbWFrZSB0aGF0IGNh
c2UgZmFzdC4KLSAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCByaWdodE5vdENlbGwgPSBicmFuY2hO
b3RDZWxsKG9wMi5qc1ZhbHVlUmVncygpKTsKKyAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCByaWdo
dE5vdENlbGwgPSBtX2ppdC5icmFuY2hJZk5vdENlbGwob3AyLmpzVmFsdWVSZWdzKCkpOwogICAg
IAogICAgIC8vIFdlIGtub3cgdGhhdCB3aXRoaW4gdGhpcyBicmFuY2gsIHJpZ2h0Q2hpbGQgbXVz
dCBiZSBhIGNlbGwuCiAgICAgaWYgKG1hc3F1ZXJhZGVzQXNVbmRlZmluZWRXYXRjaHBvaW50VmFs
aWQpIHsKICAgICAgICAgREZHX1RZUEVfQ0hFQ0soCi0gICAgICAgICAgICBKU1ZhbHVlUmVncyhv
cDJUYWdHUFIsIG9wMlBheWxvYWRHUFIpLCByaWdodENoaWxkLCAoflNwZWNDZWxsKSB8IFNwZWNP
YmplY3QsIGJyYW5jaE5vdE9iamVjdChvcDJQYXlsb2FkR1BSKSk7CisgICAgICAgICAgICBKU1Zh
bHVlUmVncyhvcDJUYWdHUFIsIG9wMlBheWxvYWRHUFIpLCByaWdodENoaWxkLCAoflNwZWNDZWxs
KSB8IFNwZWNPYmplY3QsIG1faml0LmJyYW5jaElmTm90T2JqZWN0KG9wMlBheWxvYWRHUFIpKTsK
ICAgICB9IGVsc2UgewogICAgICAgICBERkdfVFlQRV9DSEVDSygKLSAgICAgICAgICAgIEpTVmFs
dWVSZWdzKG9wMlRhZ0dQUiwgb3AyUGF5bG9hZEdQUiksIHJpZ2h0Q2hpbGQsICh+U3BlY0NlbGwp
IHwgU3BlY09iamVjdCwgYnJhbmNoTm90T2JqZWN0KG9wMlBheWxvYWRHUFIpKTsKKyAgICAgICAg
ICAgIEpTVmFsdWVSZWdzKG9wMlRhZ0dQUiwgb3AyUGF5bG9hZEdQUiksIHJpZ2h0Q2hpbGQsICh+
U3BlY0NlbGwpIHwgU3BlY09iamVjdCwgbV9qaXQuYnJhbmNoSWZOb3RPYmplY3Qob3AyUGF5bG9h
ZEdQUikpOwogICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEJhZFR5cGUsIEpTVmFsdWVSZWdzKG9w
MlRhZ0dQUiwgb3AyUGF5bG9hZEdQUiksIHJpZ2h0Q2hpbGQsIAogICAgICAgICAgICAgbV9qaXQu
YnJhbmNoVGVzdDgoCiAgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6Ok5vblplcm8sIApA
QCAtMTI3OSwxMCArMTI3OSwxMCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlUGVlcEhv
bGVPYmplCiAKICAgICBpZiAobWFzcXVlcmFkZXNBc1VuZGVmaW5lZFdhdGNocG9pbnRWYWxpZCkg
ewogICAgICAgICBERkdfVFlQRV9DSEVDSygKLSAgICAgICAgICAgIEpTVmFsdWVTb3VyY2U6OnVu
Ym94ZWRDZWxsKG9wMUdQUiksIGxlZnRDaGlsZCwgU3BlY09iamVjdCwgYnJhbmNoTm90T2JqZWN0
KG9wMUdQUikpOworICAgICAgICAgICAgSlNWYWx1ZVNvdXJjZTo6dW5ib3hlZENlbGwob3AxR1BS
KSwgbGVmdENoaWxkLCBTcGVjT2JqZWN0LCBtX2ppdC5icmFuY2hJZk5vdE9iamVjdChvcDFHUFIp
KTsKICAgICB9IGVsc2UgewogICAgICAgICBERkdfVFlQRV9DSEVDSygKLSAgICAgICAgICAgIEpT
VmFsdWVTb3VyY2U6OnVuYm94ZWRDZWxsKG9wMUdQUiksIGxlZnRDaGlsZCwgU3BlY09iamVjdCwg
YnJhbmNoTm90T2JqZWN0KG9wMUdQUikpOworICAgICAgICAgICAgSlNWYWx1ZVNvdXJjZTo6dW5i
b3hlZENlbGwob3AxR1BSKSwgbGVmdENoaWxkLCBTcGVjT2JqZWN0LCBtX2ppdC5icmFuY2hJZk5v
dE9iamVjdChvcDFHUFIpKTsKICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhCYWRUeXBlLCBKU1Zh
bHVlU291cmNlOjp1bmJveGVkQ2VsbChvcDFHUFIpLCBsZWZ0Q2hpbGQsCiAgICAgICAgICAgICBt
X2ppdC5icmFuY2hUZXN0OCgKICAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6Tm9uWmVy
bywgCkBAIC0xMjkyLDE3ICsxMjkyLDE3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVQ
ZWVwSG9sZU9iamUKICAgICAKICAgICAvLyBJdCBzZWVtcyB0aGF0IG1vc3Qgb2YgdGhlIHRpbWUg
d2hlbiBwcm9ncmFtcyBkbyBhID09IGIgd2hlcmUgYiBtYXkgYmUgZWl0aGVyIG51bGwvdW5kZWZp
bmVkCiAgICAgLy8gb3IgYW4gb2JqZWN0LCBiIGlzIHVzdWFsbHkgYW4gb2JqZWN0LiBCYWxhbmNl
IHRoZSBicmFuY2hlcyB0byBtYWtlIHRoYXQgY2FzZSBmYXN0LgotICAgIE1hY3JvQXNzZW1ibGVy
OjpKdW1wIHJpZ2h0Tm90Q2VsbCA9IGJyYW5jaE5vdENlbGwob3AyLmpzVmFsdWVSZWdzKCkpOwor
ICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIHJpZ2h0Tm90Q2VsbCA9IG1faml0LmJyYW5jaElmTm90
Q2VsbChvcDIuanNWYWx1ZVJlZ3MoKSk7CiAgICAgCiAgICAgLy8gV2Uga25vdyB0aGF0IHdpdGhp
biB0aGlzIGJyYW5jaCwgcmlnaHRDaGlsZCBtdXN0IGJlIGEgY2VsbC4KICAgICBpZiAobWFzcXVl
cmFkZXNBc1VuZGVmaW5lZFdhdGNocG9pbnRWYWxpZCkgewogICAgICAgICBERkdfVFlQRV9DSEVD
SygKICAgICAgICAgICAgIEpTVmFsdWVSZWdzKG9wMlRhZ0dQUiwgb3AyUGF5bG9hZEdQUiksIHJp
Z2h0Q2hpbGQsICh+U3BlY0NlbGwpIHwgU3BlY09iamVjdCwKLSAgICAgICAgICAgIGJyYW5jaE5v
dE9iamVjdChvcDJQYXlsb2FkR1BSKSk7CisgICAgICAgICAgICBtX2ppdC5icmFuY2hJZk5vdE9i
amVjdChvcDJQYXlsb2FkR1BSKSk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgREZHX1RZUEVfQ0hF
Q0soCiAgICAgICAgICAgICBKU1ZhbHVlUmVncyhvcDJUYWdHUFIsIG9wMlBheWxvYWRHUFIpLCBy
aWdodENoaWxkLCAoflNwZWNDZWxsKSB8IFNwZWNPYmplY3QsCi0gICAgICAgICAgICBicmFuY2hO
b3RPYmplY3Qob3AyUGF5bG9hZEdQUikpOworICAgICAgICAgICAgbV9qaXQuYnJhbmNoSWZOb3RP
YmplY3Qob3AyUGF5bG9hZEdQUikpOwogICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEJhZFR5cGUs
IEpTVmFsdWVSZWdzKG9wMlRhZ0dQUiwgb3AyUGF5bG9hZEdQUiksIHJpZ2h0Q2hpbGQsCiAgICAg
ICAgICAgICBtX2ppdC5icmFuY2hUZXN0OCgKICAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxl
cjo6Tm9uWmVybywgCkBAIC0xMzgyLDE1ICsxMzgyLDE1IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6
OmNvbXBpbGVPYmplY3RPck90aGUKICAgICAgICAgc3RydWN0dXJlR1BSID0gc3RydWN0dXJlLmdw
cigpOwogICAgIH0KIAotICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIG5vdENlbGwgPSBicmFuY2hO
b3RDZWxsKHZhbHVlLmpzVmFsdWVSZWdzKCkpOworICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIG5v
dENlbGwgPSBtX2ppdC5icmFuY2hJZk5vdENlbGwodmFsdWUuanNWYWx1ZVJlZ3MoKSk7CiAgICAg
aWYgKG1hc3F1ZXJhZGVzQXNVbmRlZmluZWRXYXRjaHBvaW50VmFsaWQpIHsKICAgICAgICAgREZH
X1RZUEVfQ0hFQ0soCiAgICAgICAgICAgICBKU1ZhbHVlUmVncyh2YWx1ZVRhZ0dQUiwgdmFsdWVQ
YXlsb2FkR1BSKSwgbm9kZVVzZSwgKH5TcGVjQ2VsbCkgfCBTcGVjT2JqZWN0LAotICAgICAgICAg
ICAgYnJhbmNoTm90T2JqZWN0KHZhbHVlUGF5bG9hZEdQUikpOworICAgICAgICAgICAgbV9qaXQu
YnJhbmNoSWZOb3RPYmplY3QodmFsdWVQYXlsb2FkR1BSKSk7CiAgICAgfSBlbHNlIHsKICAgICAg
ICAgREZHX1RZUEVfQ0hFQ0soCiAgICAgICAgICAgICBKU1ZhbHVlUmVncyh2YWx1ZVRhZ0dQUiwg
dmFsdWVQYXlsb2FkR1BSKSwgbm9kZVVzZSwgKH5TcGVjQ2VsbCkgfCBTcGVjT2JqZWN0LAotICAg
ICAgICAgICAgYnJhbmNoTm90T2JqZWN0KHZhbHVlUGF5bG9hZEdQUikpOworICAgICAgICAgICAg
bV9qaXQuYnJhbmNoSWZOb3RPYmplY3QodmFsdWVQYXlsb2FkR1BSKSk7CiAKICAgICAgICAgTWFj
cm9Bc3NlbWJsZXI6Okp1bXAgaXNOb3RNYXNxdWVyYWRlc0FzVW5kZWZpbmVkID0gCiAgICAgICAg
ICAgICBtX2ppdC5icmFuY2hUZXN0OCgKQEAgLTE1MDQsMTUgKzE1MDQsMTUgQEAgdm9pZCBTcGVj
dWxhdGl2ZUpJVDo6ZW1pdE9iamVjdE9yT3RoZXJCcgogICAgIEdQUlJlZyB2YWx1ZVBheWxvYWRH
UFIgPSB2YWx1ZS5wYXlsb2FkR1BSKCk7CiAgICAgR1BSUmVnIHNjcmF0Y2hHUFIgPSBzY3JhdGNo
LmdwcigpOwogICAgIAotICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIG5vdENlbGwgPSBicmFuY2hO
b3RDZWxsKHZhbHVlLmpzVmFsdWVSZWdzKCkpOworICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIG5v
dENlbGwgPSBtX2ppdC5icmFuY2hJZk5vdENlbGwodmFsdWUuanNWYWx1ZVJlZ3MoKSk7CiAgICAg
aWYgKG1hc3F1ZXJhZGVzQXNVbmRlZmluZWRXYXRjaHBvaW50SXNTdGlsbFZhbGlkKCkpIHsKICAg
ICAgICAgREZHX1RZUEVfQ0hFQ0soCiAgICAgICAgICAgICBKU1ZhbHVlUmVncyh2YWx1ZVRhZ0dQ
UiwgdmFsdWVQYXlsb2FkR1BSKSwgbm9kZVVzZSwgKH5TcGVjQ2VsbCkgfCBTcGVjT2JqZWN0LAot
ICAgICAgICAgICAgYnJhbmNoTm90T2JqZWN0KHZhbHVlUGF5bG9hZEdQUikpOworICAgICAgICAg
ICAgbV9qaXQuYnJhbmNoSWZOb3RPYmplY3QodmFsdWVQYXlsb2FkR1BSKSk7CiAgICAgfSBlbHNl
IHsKICAgICAgICAgREZHX1RZUEVfQ0hFQ0soCiAgICAgICAgICAgICBKU1ZhbHVlUmVncyh2YWx1
ZVRhZ0dQUiwgdmFsdWVQYXlsb2FkR1BSKSwgbm9kZVVzZSwgKH5TcGVjQ2VsbCkgfCBTcGVjT2Jq
ZWN0LAotICAgICAgICAgICAgYnJhbmNoTm90T2JqZWN0KHZhbHVlUGF5bG9hZEdQUikpOworICAg
ICAgICAgICAgbV9qaXQuYnJhbmNoSWZOb3RPYmplY3QodmFsdWVQYXlsb2FkR1BSKSk7CiAKICAg
ICAgICAgSklUQ29tcGlsZXI6Okp1bXAgaXNOb3RNYXNxdWVyYWRlc0FzVW5kZWZpbmVkID0gbV9q
aXQuYnJhbmNoVGVzdDgoCiAgICAgICAgICAgICBKSVRDb21waWxlcjo6WmVybywgCkBAIC0zMDc0
LDggKzMwNzQsOCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAg
ICAgICAgICAgICBtX2ppdC5tb3ZlKG9wMVRhZ0dQUiwgcmVzdWx0VGFnR1BSKTsKICAgICAgICAg
ICAgIG1faml0Lm1vdmUob3AxUGF5bG9hZEdQUiwgcmVzdWx0UGF5bG9hZEdQUik7CiAgICAgICAg
IH0gZWxzZSB7Ci0gICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBhbHJlYWR5UHJpbWl0
aXZlID0gYnJhbmNoTm90Q2VsbChvcDEuanNWYWx1ZVJlZ3MoKSk7Ci0gICAgICAgICAgICBNYWNy
b0Fzc2VtYmxlcjo6SnVtcCBub3RQcmltaXRpdmUgPSBicmFuY2hJc09iamVjdChvcDFQYXlsb2Fk
R1BSKTsKKyAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIGFscmVhZHlQcmltaXRpdmUg
PSBtX2ppdC5icmFuY2hJZk5vdENlbGwob3AxLmpzVmFsdWVSZWdzKCkpOworICAgICAgICAgICAg
TWFjcm9Bc3NlbWJsZXI6Okp1bXAgbm90UHJpbWl0aXZlID0gbV9qaXQuYnJhbmNoSWZPYmplY3Qo
b3AxUGF5bG9hZEdQUik7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIGFscmVhZHlQcmltaXRp
dmUubGluaygmbV9qaXQpOwogICAgICAgICAgICAgbV9qaXQubW92ZShvcDFUYWdHUFIsIHJlc3Vs
dFRhZ0dQUik7CkBAIC0zMTA1LDggKzMxMDUsOCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21w
aWxlKE5vZGUqIG5vZGUpCiAgICAgICAgICAgICAKICAgICAgICAgICAgIEpJVENvbXBpbGVyOjpK
dW1wIGRvbmU7CiAgICAgICAgICAgICBpZiAobm9kZS0+Y2hpbGQxKCktPnByZWRpY3Rpb24oKSAm
IFNwZWNTdHJpbmcpIHsKLSAgICAgICAgICAgICAgICBKSVRDb21waWxlcjo6SnVtcCBzbG93UGF0
aDEgPSBicmFuY2hOb3RDZWxsKG9wMS5qc1ZhbHVlUmVncygpKTsKLSAgICAgICAgICAgICAgICBK
SVRDb21waWxlcjo6SnVtcCBzbG93UGF0aDIgPSBicmFuY2hOb3RTdHJpbmcob3AxUGF5bG9hZEdQ
Uik7CisgICAgICAgICAgICAgICAgSklUQ29tcGlsZXI6Okp1bXAgc2xvd1BhdGgxID0gbV9qaXQu
YnJhbmNoSWZOb3RDZWxsKG9wMS5qc1ZhbHVlUmVncygpKTsKKyAgICAgICAgICAgICAgICBKSVRD
b21waWxlcjo6SnVtcCBzbG93UGF0aDIgPSBtX2ppdC5icmFuY2hJZk5vdFN0cmluZyhvcDFQYXls
b2FkR1BSKTsKICAgICAgICAgICAgICAgICBtX2ppdC5tb3ZlKG9wMVBheWxvYWRHUFIsIHJlc3Vs
dEdQUik7CiAgICAgICAgICAgICAgICAgZG9uZSA9IG1faml0Lmp1bXAoKTsKICAgICAgICAgICAg
ICAgICBzbG93UGF0aDEubGluaygmbV9qaXQpOwpAQCAtMzQ3Myw3ICszNDczLDcgQEAgdm9pZCBT
cGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICBHUFJSZWcgdGVtcFRh
Z0dQUiA9IHRlbXBUYWcuZ3ByKCk7CiAgICAgICAgIAogICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6
SnVtcExpc3Qgc2xvd0Nhc2VzOwotICAgICAgICBzbG93Q2FzZXMuYXBwZW5kKGJyYW5jaE5vdENl
bGwodGhpc1ZhbHVlLmpzVmFsdWVSZWdzKCkpKTsKKyAgICAgICAgc2xvd0Nhc2VzLmFwcGVuZCht
X2ppdC5icmFuY2hJZk5vdENlbGwodGhpc1ZhbHVlLmpzVmFsdWVSZWdzKCkpKTsKICAgICAgICAg
c2xvd0Nhc2VzLmFwcGVuZChtX2ppdC5icmFuY2g4KAogICAgICAgICAgICAgTWFjcm9Bc3NlbWJs
ZXI6Ok5vdEVxdWFsLAogICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3ModGhpc1Zh
bHVlUGF5bG9hZEdQUiwgSlNDZWxsOjp0eXBlSW5mb1R5cGVPZmZzZXQoKSksCkBAIC0zNjM3LDcg
KzM2MzcsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAg
ICAgIAogICAgICAgICAgICAgYmFzZS51c2UoKTsKICAgICAgICAgCi0gICAgICAgICAgICBKSVRD
b21waWxlcjo6SnVtcCBub3RDZWxsID0gYnJhbmNoTm90Q2VsbChiYXNlLmpzVmFsdWVSZWdzKCkp
OworICAgICAgICAgICAgSklUQ29tcGlsZXI6Okp1bXAgbm90Q2VsbCA9IG1faml0LmJyYW5jaElm
Tm90Q2VsbChiYXNlLmpzVmFsdWVSZWdzKCkpOwogICAgICAgICAKICAgICAgICAgICAgIGNhY2hl
ZEdldEJ5SWQobm9kZS0+b3JpZ2luLnNlbWFudGljLCBiYXNlVGFnR1BSLCBiYXNlUGF5bG9hZEdQ
UiwgcmVzdWx0VGFnR1BSLCByZXN1bHRQYXlsb2FkR1BSLCBub2RlLT5pZGVudGlmaWVyTnVtYmVy
KCksIG5vdENlbGwpOwogICAgICAgICAKQEAgLTM2OTMsNyArMzY5Myw3IEBAIHZvaWQgU3BlY3Vs
YXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgCiAgICAgICAgICAgICBmbHVz
aFJlZ2lzdGVycygpOwogICAgICAgICAKLSAgICAgICAgICAgIEpJVENvbXBpbGVyOjpKdW1wIG5v
dENlbGwgPSBicmFuY2hOb3RDZWxsKGJhc2UuanNWYWx1ZVJlZ3MoKSk7CisgICAgICAgICAgICBK
SVRDb21waWxlcjo6SnVtcCBub3RDZWxsID0gbV9qaXQuYnJhbmNoSWZOb3RDZWxsKGJhc2UuanNW
YWx1ZVJlZ3MoKSk7CiAgICAgICAgIAogICAgICAgICAgICAgY2FjaGVkR2V0QnlJZChub2RlLT5v
cmlnaW4uc2VtYW50aWMsIGJhc2VUYWdHUFIsIGJhc2VQYXlsb2FkR1BSLCByZXN1bHRUYWdHUFIs
IHJlc3VsdFBheWxvYWRHUFIsIG5vZGUtPmlkZW50aWZpZXJOdW1iZXIoKSwgbm90Q2VsbCwgRG9u
dFNwaWxsKTsKICAgICAgICAgCkBAIC00MDE0LDcgKzQwMTQsNyBAQCB2b2lkIFNwZWN1bGF0aXZl
SklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgIEdQUlRlbXBvcmFyeSBsb2NhbEdsb2Jh
bE9iamVjdCh0aGlzKTsKICAgICAgICAgR1BSVGVtcG9yYXJ5IHJlbW90ZUdsb2JhbE9iamVjdCh0
aGlzKTsKIAotICAgICAgICBKSVRDb21waWxlcjo6SnVtcCBpc0NlbGwgPSBicmFuY2hJc0NlbGwo
dmFsdWUuanNWYWx1ZVJlZ3MoKSk7CisgICAgICAgIEpJVENvbXBpbGVyOjpKdW1wIGlzQ2VsbCA9
IG1faml0LmJyYW5jaElmQ2VsbCh2YWx1ZS5qc1ZhbHVlUmVncygpKTsKICAgICAgICAgCiAgICAg
ICAgIG1faml0LmNvbXBhcmUzMihKSVRDb21waWxlcjo6RXF1YWwsIHZhbHVlLnRhZ0dQUigpLCBU
cnVzdGVkSW1tMzIoSlNWYWx1ZTo6VW5kZWZpbmVkVGFnKSwgcmVzdWx0LmdwcigpKTsKICAgICAg
ICAgSklUQ29tcGlsZXI6Okp1bXAgZG9uZSA9IG1faml0Lmp1bXAoKTsKQEAgLTQwNzAsNyArNDA3
MCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAg
SlNWYWx1ZU9wZXJhbmQgdmFsdWUodGhpcywgbm9kZS0+Y2hpbGQxKCkpOwogICAgICAgICBHUFJU
ZW1wb3JhcnkgcmVzdWx0KHRoaXMsIFJldXNlLCB2YWx1ZSwgVGFnV29yZCk7CiAgICAgICAgIAot
ICAgICAgICBKSVRDb21waWxlcjo6SnVtcCBpc05vdENlbGwgPSBicmFuY2hOb3RDZWxsKHZhbHVl
LmpzVmFsdWVSZWdzKCkpOworICAgICAgICBKSVRDb21waWxlcjo6SnVtcCBpc05vdENlbGwgPSBt
X2ppdC5icmFuY2hJZk5vdENlbGwodmFsdWUuanNWYWx1ZVJlZ3MoKSk7CiAgICAgICAgIAogICAg
ICAgICBtX2ppdC5jb21wYXJlOChKSVRDb21waWxlcjo6RXF1YWwsIAogICAgICAgICAgICAgSklU
Q29tcGlsZXI6OkFkZHJlc3ModmFsdWUucGF5bG9hZEdQUigpLCBKU0NlbGw6OnR5cGVJbmZvVHlw
ZU9mZnNldCgpKSwgCkBAIC00MDkwLDcgKzQwOTAsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpj
b21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgIEpTVmFsdWVPcGVyYW5kIHZhbHVlKHRoaXMsIG5v
ZGUtPmNoaWxkMSgpKTsKICAgICAgICAgR1BSVGVtcG9yYXJ5IHJlc3VsdCh0aGlzLCBSZXVzZSwg
dmFsdWUsIFRhZ1dvcmQpOwogCi0gICAgICAgIEpJVENvbXBpbGVyOjpKdW1wIGlzTm90Q2VsbCA9
IGJyYW5jaE5vdENlbGwodmFsdWUuanNWYWx1ZVJlZ3MoKSk7CisgICAgICAgIEpJVENvbXBpbGVy
OjpKdW1wIGlzTm90Q2VsbCA9IG1faml0LmJyYW5jaElmTm90Q2VsbCh2YWx1ZS5qc1ZhbHVlUmVn
cygpKTsKIAogICAgICAgICBtX2ppdC5jb21wYXJlOChKSVRDb21waWxlcjo6QWJvdmVPckVxdWFs
LAogICAgICAgICAgICAgSklUQ29tcGlsZXI6OkFkZHJlc3ModmFsdWUucGF5bG9hZEdQUigpLCBK
U0NlbGw6OnR5cGVJbmZvVHlwZU9mZnNldCgpKSwKQEAgLTQxNDMsMTIgKzQxNDMsMTIgQEAgdm9p
ZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogCiAgICAgICAgIEFTU0VSVChu
b2RlLT5jaGlsZDEoKS51c2VLaW5kKCkgPT0gVW50eXBlZFVzZSB8fCBub2RlLT5jaGlsZDEoKS51
c2VLaW5kKCkgPT0gQ2VsbFVzZSB8fCBub2RlLT5jaGlsZDEoKS51c2VLaW5kKCkgPT0gU3RyaW5n
VXNlKTsKIAotICAgICAgICBKSVRDb21waWxlcjo6SnVtcCBpc05vdENlbGwgPSBicmFuY2hOb3RD
ZWxsKHZhbHVlLmpzVmFsdWVSZWdzKCkpOworICAgICAgICBKSVRDb21waWxlcjo6SnVtcCBpc05v
dENlbGwgPSBtX2ppdC5icmFuY2hJZk5vdENlbGwodmFsdWUuanNWYWx1ZVJlZ3MoKSk7CiAgICAg
ICAgIGlmIChub2RlLT5jaGlsZDEoKS51c2VLaW5kKCkgIT0gVW50eXBlZFVzZSkKICAgICAgICAg
ICAgIERGR19UWVBFX0NIRUNLKEpTVmFsdWVSZWdzKHRhZ0dQUiwgcGF5bG9hZEdQUiksIG5vZGUt
PmNoaWxkMSgpLCBTcGVjQ2VsbCwgaXNOb3RDZWxsKTsKIAogICAgICAgICBpZiAoIW5vZGUtPmNo
aWxkMSgpLT5zaG91bGRTcGVjdWxhdGVPYmplY3QoKSB8fCBub2RlLT5jaGlsZDEoKS51c2VLaW5k
KCkgPT0gU3RyaW5nVXNlKSB7Ci0gICAgICAgICAgICBKSVRDb21waWxlcjo6SnVtcCBub3RTdHJp
bmcgPSBicmFuY2hOb3RTdHJpbmcocGF5bG9hZEdQUik7CisgICAgICAgICAgICBKSVRDb21waWxl
cjo6SnVtcCBub3RTdHJpbmcgPSBtX2ppdC5icmFuY2hJZk5vdFN0cmluZyhwYXlsb2FkR1BSKTsK
ICAgICAgICAgICAgIGlmIChub2RlLT5jaGlsZDEoKS51c2VLaW5kKCkgPT0gU3RyaW5nVXNlKQog
ICAgICAgICAgICAgICAgIERGR19UWVBFX0NIRUNLKEpTVmFsdWVSZWdzKHRhZ0dQUiwgcGF5bG9h
ZEdQUiksIG5vZGUtPmNoaWxkMSgpLCBTcGVjU3RyaW5nLCBub3RTdHJpbmcpOwogICAgICAgICAg
ICAgbV9qaXQubW92ZShUcnVzdGVkSW1tUHRyKG1faml0LnZtKCktPnNtYWxsU3RyaW5ncy5zdHJp
bmdTdHJpbmcoKSksIHJlc3VsdEdQUik7CkBAIC00NTcwLDcgKzQ1NzAsNyBAQCB2b2lkIFNwZWN1
bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgIG1faml0LnN0b3JlMzIodmFs
dWUucGF5bG9hZEdQUigpLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhzY3JhdGNoMUdQUiwgVHlw
ZVByb2ZpbGVyTG9nOjpMb2dFbnRyeTo6dmFsdWVPZmZzZXQoKSArIE9CSkVDVF9PRkZTRVRPRihK
U1ZhbHVlLCB1LmFzQml0cy5wYXlsb2FkKSkpOwogCiAgICAgICAgIC8vIFN0b3JlIHRoZSBzdHJ1
Y3R1cmVJRCBvZiB0aGUgY2VsbCBpZiB2YWx1ZUdQUiBpcyBhIGNlbGwsIG90aGVyd2lzZSwgc3Rv
cmUgMCBvbiB0aGUgbG9nIGVudHJ5LgotICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBpc05v
dENlbGwgPSBicmFuY2hOb3RDZWxsKHZhbHVlLmpzVmFsdWVSZWdzKCkpOworICAgICAgICBNYWNy
b0Fzc2VtYmxlcjo6SnVtcCBpc05vdENlbGwgPSBtX2ppdC5icmFuY2hJZk5vdENlbGwodmFsdWUu
anNWYWx1ZVJlZ3MoKSk7CiAgICAgICAgIG1faml0LmxvYWQzMihNYWNyb0Fzc2VtYmxlcjo6QWRk
cmVzcyh2YWx1ZS5wYXlsb2FkR1BSKCksIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSksIHNj
cmF0Y2gzR1BSKTsKICAgICAgICAgbV9qaXQuc3RvcmUzMihzY3JhdGNoM0dQUiwgTWFjcm9Bc3Nl
bWJsZXI6OkFkZHJlc3Moc2NyYXRjaDFHUFIsIFR5cGVQcm9maWxlckxvZzo6TG9nRW50cnk6OnN0
cnVjdHVyZUlET2Zmc2V0KCkpKTsKICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXAgc2tpcElz
Q2VsbCA9IG1faml0Lmp1bXAoKTsKQEAgLTQ3MTMsMzIgKzQ3MTMsNiBAQCB2b2lkIFNwZWN1bGF0
aXZlSklUOjp3cml0ZUJhcnJpZXIoSlNDZWxsCiB9CiAjZW5kaWYgLy8gRU5BQkxFKEdHQykKIAot
SklUQ29tcGlsZXI6Okp1bXAgU3BlY3VsYXRpdmVKSVQ6OmJyYW5jaElzQ2VsbChKU1ZhbHVlUmVn
cyByZWdzKQotewotICAgIHJldHVybiBtX2ppdC5icmFuY2gzMihNYWNyb0Fzc2VtYmxlcjo6RXF1
YWwsIHJlZ3MudGFnR1BSKCksIFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpDZWxsVGFnKSk7Ci19Ci0K
LUpJVENvbXBpbGVyOjpKdW1wIFNwZWN1bGF0aXZlSklUOjpicmFuY2hOb3RDZWxsKEpTVmFsdWVS
ZWdzIHJlZ3MpCi17Ci0gICAgcmV0dXJuIG1faml0LmJyYW5jaDMyKE1hY3JvQXNzZW1ibGVyOjpO
b3RFcXVhbCwgcmVncy50YWdHUFIoKSwgVHJ1c3RlZEltbTMyKEpTVmFsdWU6OkNlbGxUYWcpKTsK
LX0KLQotSklUQ29tcGlsZXI6Okp1bXAgU3BlY3VsYXRpdmVKSVQ6OmJyYW5jaElzT3RoZXIoSlNW
YWx1ZVJlZ3MgcmVncywgR1BSUmVnIHRlbXBHUFIpCi17Ci0gICAgbV9qaXQub3IzMihUcnVzdGVk
SW1tMzIoMSksIHJlZ3MudGFnR1BSKCksIHRlbXBHUFIpOwotICAgIHJldHVybiBtX2ppdC5icmFu
Y2gzMigKLSAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkVxdWFsLCB0ZW1wR1BSLAotICAgICAgICBN
YWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbTMyKEpTVmFsdWU6Ok51bGxUYWcpKTsKLX0KLQotSklU
Q29tcGlsZXI6Okp1bXAgU3BlY3VsYXRpdmVKSVQ6OmJyYW5jaE5vdE90aGVyKEpTVmFsdWVSZWdz
IHJlZ3MsIEdQUlJlZyB0ZW1wR1BSKQotewotICAgIG1faml0Lm9yMzIoVHJ1c3RlZEltbTMyKDEp
LCByZWdzLnRhZ0dQUigpLCB0ZW1wR1BSKTsKLSAgICByZXR1cm4gbV9qaXQuYnJhbmNoMzIoCi0g
ICAgICAgIE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgdGVtcEdQUiwKLSAgICAgICAgTWFjcm9B
c3NlbWJsZXI6OlRydXN0ZWRJbW0zMihKU1ZhbHVlOjpOdWxsVGFnKSk7Ci19Ci0KIHZvaWQgU3Bl
Y3VsYXRpdmVKSVQ6Om1vdmVUcnVlVG8oR1BSUmVnIGdwcikKIHsKICAgICBtX2ppdC5tb3ZlKFRy
dXN0ZWRJbW0zMigxKSwgZ3ByKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
U3BlY3VsYXRpdmVKSVQ2NC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAkocmV2aXNpb24gMTgzNjUwKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMjA0LDcgKzIwNCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6Om5vblNwZWN1bGF0aXZl
Tm9uUGUKICAgICBKSVRDb21waWxlcjo6SnVtcCBub3RNYXNxdWVyYWRlc0FzVW5kZWZpbmVkOwog
ICAgIGlmIChtYXNxdWVyYWRlc0FzVW5kZWZpbmVkV2F0Y2hwb2ludElzU3RpbGxWYWxpZCgpKSB7
CiAgICAgICAgIGlmICghaXNLbm93bkNlbGwob3BlcmFuZC5ub2RlKCkpKQotICAgICAgICAgICAg
bm90Q2VsbCA9IGJyYW5jaE5vdENlbGwoSlNWYWx1ZVJlZ3MoYXJnR1BSKSk7CisgICAgICAgICAg
ICBub3RDZWxsID0gbV9qaXQuYnJhbmNoSWZOb3RDZWxsKEpTVmFsdWVSZWdzKGFyZ0dQUikpOwog
CiAgICAgICAgIG1faml0Lm1vdmUoaW52ZXJ0ID8gVHJ1c3RlZEltbTMyKDEpIDogVHJ1c3RlZElt
bTMyKDApLCByZXN1bHRHUFIpOwogICAgICAgICBub3RNYXNxdWVyYWRlc0FzVW5kZWZpbmVkID0g
bV9qaXQuanVtcCgpOwpAQCAtMjE0LDcgKzIxNCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6Om5v
blNwZWN1bGF0aXZlTm9uUGUKICAgICAgICAgR1BSVGVtcG9yYXJ5IHNjcmF0Y2godGhpcyk7CiAK
ICAgICAgICAgaWYgKCFpc0tub3duQ2VsbChvcGVyYW5kLm5vZGUoKSkpCi0gICAgICAgICAgICBu
b3RDZWxsID0gYnJhbmNoTm90Q2VsbChKU1ZhbHVlUmVncyhhcmdHUFIpKTsKKyAgICAgICAgICAg
IG5vdENlbGwgPSBtX2ppdC5icmFuY2hJZk5vdENlbGwoSlNWYWx1ZVJlZ3MoYXJnR1BSKSk7CiAg
ICAgICAgIAogICAgICAgICBKSVRDb21waWxlcjo6SnVtcCBpc01hc3F1ZXJhZGVzQXNVbmRlZmlu
ZWQgPSBtX2ppdC5icmFuY2hUZXN0OCgKICAgICAgICAgICAgIEpJVENvbXBpbGVyOjpOb25aZXJv
LCAKQEAgLTI3Myw3ICsyNzMsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpub25TcGVjdWxhdGl2
ZVBlZXBoCiAgICAgCiAgICAgaWYgKG1hc3F1ZXJhZGVzQXNVbmRlZmluZWRXYXRjaHBvaW50SXNT
dGlsbFZhbGlkKCkpIHsKICAgICAgICAgaWYgKCFpc0tub3duQ2VsbChvcGVyYW5kLm5vZGUoKSkp
Ci0gICAgICAgICAgICBub3RDZWxsID0gYnJhbmNoTm90Q2VsbChKU1ZhbHVlUmVncyhhcmdHUFIp
KTsKKyAgICAgICAgICAgIG5vdENlbGwgPSBtX2ppdC5icmFuY2hJZk5vdENlbGwoSlNWYWx1ZVJl
Z3MoYXJnR1BSKSk7CiAgICAgICAgIAogICAgICAgICBqdW1wKGludmVydCA/IHRha2VuIDogbm90
VGFrZW4sIEZvcmNlSnVtcCk7CiAgICAgfSBlbHNlIHsKQEAgLTI4Miw3ICsyODIsNyBAQCB2b2lk
IFNwZWN1bGF0aXZlSklUOjpub25TcGVjdWxhdGl2ZVBlZXBoCiAgICAgICAgIEdQUlRlbXBvcmFy
eSBzY3JhdGNoKHRoaXMpOwogCiAgICAgICAgIGlmICghaXNLbm93bkNlbGwob3BlcmFuZC5ub2Rl
KCkpKQotICAgICAgICAgICAgbm90Q2VsbCA9IGJyYW5jaE5vdENlbGwoSlNWYWx1ZVJlZ3MoYXJn
R1BSKSk7CisgICAgICAgICAgICBub3RDZWxsID0gbV9qaXQuYnJhbmNoSWZOb3RDZWxsKEpTVmFs
dWVSZWdzKGFyZ0dQUikpOwogICAgICAgICAKICAgICAgICAgYnJhbmNoVGVzdDgoSklUQ29tcGls
ZXI6Olplcm8sIAogICAgICAgICAgICAgSklUQ29tcGlsZXI6OkFkZHJlc3MoYXJnR1BSLCBKU0Nl
bGw6OnR5cGVJbmZvRmxhZ3NPZmZzZXQoKSksIApAQCAtMTExOSw3ICsxMTE5LDcgQEAgR1BSUmVn
IFNwZWN1bGF0aXZlSklUOjpmaWxsU3BlY3VsYXRlQ2VsbAogCiAgICAgICAgIGluZm8uZmlsbEpT
VmFsdWUoKm1fc3RyZWFtLCBncHIsIERhdGFGb3JtYXRKUyk7CiAgICAgICAgIGlmICh0eXBlICYg
flNwZWNDZWxsKQotICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhCYWRUeXBlLCBKU1ZhbHVl
UmVncyhncHIpLCBlZGdlLCBicmFuY2hOb3RDZWxsKEpTVmFsdWVSZWdzKGdwcikpKTsKKyAgICAg
ICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFkVHlwZSwgSlNWYWx1ZVJlZ3MoZ3ByKSwgZWRnZSwg
bV9qaXQuYnJhbmNoSWZOb3RDZWxsKEpTVmFsdWVSZWdzKGdwcikpKTsKICAgICAgICAgaW5mby5m
aWxsSlNWYWx1ZSgqbV9zdHJlYW0sIGdwciwgRGF0YUZvcm1hdEpTQ2VsbCk7CiAgICAgICAgIHJl
dHVybiBncHI7CiAgICAgfQpAQCAtMTEyOSw3ICsxMTI5LDcgQEAgR1BSUmVnIFNwZWN1bGF0aXZl
SklUOjpmaWxsU3BlY3VsYXRlQ2VsbAogICAgICAgICBHUFJSZWcgZ3ByID0gaW5mby5ncHIoKTsK
ICAgICAgICAgbV9ncHJzLmxvY2soZ3ByKTsKICAgICAgICAgaWYgKCFBU1NFUlRfRElTQUJMRUQp
IHsKLSAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIGNoZWNrQ2VsbCA9IGJyYW5jaElz
Q2VsbChKU1ZhbHVlUmVncyhncHIpKTsKKyAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1w
IGNoZWNrQ2VsbCA9IG1faml0LmJyYW5jaElmQ2VsbChKU1ZhbHVlUmVncyhncHIpKTsKICAgICAg
ICAgICAgIG1faml0LmFib3J0V2l0aFJlYXNvbihERkdJc05vdENlbGwpOwogICAgICAgICAgICAg
Y2hlY2tDZWxsLmxpbmsoJm1faml0KTsKICAgICAgICAgfQpAQCAtMTE0MCw3ICsxMTQwLDcgQEAg
R1BSUmVnIFNwZWN1bGF0aXZlSklUOjpmaWxsU3BlY3VsYXRlQ2VsbAogICAgICAgICBHUFJSZWcg
Z3ByID0gaW5mby5ncHIoKTsKICAgICAgICAgbV9ncHJzLmxvY2soZ3ByKTsKICAgICAgICAgaWYg
KHR5cGUgJiB+U3BlY0NlbGwpCi0gICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEJhZFR5cGUs
IEpTVmFsdWVSZWdzKGdwciksIGVkZ2UsIGJyYW5jaE5vdENlbGwoSlNWYWx1ZVJlZ3MoZ3ByKSkp
OworICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhCYWRUeXBlLCBKU1ZhbHVlUmVncyhncHIp
LCBlZGdlLCBtX2ppdC5icmFuY2hJZk5vdENlbGwoSlNWYWx1ZVJlZ3MoZ3ByKSkpOwogICAgICAg
ICBpbmZvLmZpbGxKU1ZhbHVlKCptX3N0cmVhbSwgZ3ByLCBEYXRhRm9ybWF0SlNDZWxsKTsKICAg
ICAgICAgcmV0dXJuIGdwcjsKICAgICB9CkBAIC0xMjY1LDEyICsxMjY1LDEyIEBAIHZvaWQgU3Bl
Y3VsYXRpdmVKSVQ6OmNvbXBpbGVPYmplY3RFcXVhbGkKICAgIAogICAgIGlmIChtYXNxdWVyYWRl
c0FzVW5kZWZpbmVkV2F0Y2hwb2ludElzU3RpbGxWYWxpZCgpKSB7CiAgICAgICAgIERGR19UWVBF
X0NIRUNLKAotICAgICAgICAgICAgSlNWYWx1ZVNvdXJjZTo6dW5ib3hlZENlbGwob3AxR1BSKSwg
bm9kZS0+Y2hpbGQxKCksIFNwZWNPYmplY3QsIGJyYW5jaE5vdE9iamVjdChvcDFHUFIpKTsKKyAg
ICAgICAgICAgIEpTVmFsdWVTb3VyY2U6OnVuYm94ZWRDZWxsKG9wMUdQUiksIG5vZGUtPmNoaWxk
MSgpLCBTcGVjT2JqZWN0LCBtX2ppdC5icmFuY2hJZk5vdE9iamVjdChvcDFHUFIpKTsKICAgICAg
ICAgREZHX1RZUEVfQ0hFQ0soCi0gICAgICAgICAgICBKU1ZhbHVlU291cmNlOjp1bmJveGVkQ2Vs
bChvcDJHUFIpLCBub2RlLT5jaGlsZDIoKSwgU3BlY09iamVjdCwgYnJhbmNoTm90T2JqZWN0KG9w
MkdQUikpOworICAgICAgICAgICAgSlNWYWx1ZVNvdXJjZTo6dW5ib3hlZENlbGwob3AyR1BSKSwg
bm9kZS0+Y2hpbGQyKCksIFNwZWNPYmplY3QsIG1faml0LmJyYW5jaElmTm90T2JqZWN0KG9wMkdQ
UikpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIERGR19UWVBFX0NIRUNLKAotICAgICAgICAgICAg
SlNWYWx1ZVNvdXJjZTo6dW5ib3hlZENlbGwob3AxR1BSKSwgbm9kZS0+Y2hpbGQxKCksIFNwZWNP
YmplY3QsIGJyYW5jaE5vdE9iamVjdChvcDFHUFIpKTsKKyAgICAgICAgICAgIEpTVmFsdWVTb3Vy
Y2U6OnVuYm94ZWRDZWxsKG9wMUdQUiksIG5vZGUtPmNoaWxkMSgpLCBTcGVjT2JqZWN0LCBtX2pp
dC5icmFuY2hJZk5vdE9iamVjdChvcDFHUFIpKTsKICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhC
YWRUeXBlLCBKU1ZhbHVlU291cmNlOjp1bmJveGVkQ2VsbChvcDFHUFIpLCBub2RlLT5jaGlsZDEo
KSwKICAgICAgICAgICAgIG1faml0LmJyYW5jaFRlc3Q4KAogICAgICAgICAgICAgICAgIE1hY3Jv
QXNzZW1ibGVyOjpOb25aZXJvLCAKQEAgLTEyNzgsNyArMTI3OCw3IEBAIHZvaWQgU3BlY3VsYXRp
dmVKSVQ6OmNvbXBpbGVPYmplY3RFcXVhbGkKICAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxl
cjo6VHJ1c3RlZEltbTMyKE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQpKSk7CiAKICAgICAgICAgREZH
X1RZUEVfQ0hFQ0soCi0gICAgICAgICAgICBKU1ZhbHVlU291cmNlOjp1bmJveGVkQ2VsbChvcDJH
UFIpLCBub2RlLT5jaGlsZDIoKSwgU3BlY09iamVjdCwgYnJhbmNoTm90T2JqZWN0KG9wMkdQUikp
OworICAgICAgICAgICAgSlNWYWx1ZVNvdXJjZTo6dW5ib3hlZENlbGwob3AyR1BSKSwgbm9kZS0+
Y2hpbGQyKCksIFNwZWNPYmplY3QsIG1faml0LmJyYW5jaElmTm90T2JqZWN0KG9wMkdQUikpOwog
ICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEJhZFR5cGUsIEpTVmFsdWVTb3VyY2U6OnVuYm94ZWRD
ZWxsKG9wMkdQUiksIG5vZGUtPmNoaWxkMigpLAogICAgICAgICAgICAgbV9qaXQuYnJhbmNoVGVz
dDgoCiAgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6Ok5vblplcm8sIApAQCAtMTMxMSwx
MCArMTMxMSwxMCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlT2JqZWN0VG9PYmplCiAK
ICAgICBpZiAobWFzcXVlcmFkZXNBc1VuZGVmaW5lZFdhdGNocG9pbnRWYWxpZCkgewogICAgICAg
ICBERkdfVFlQRV9DSEVDSygKLSAgICAgICAgICAgIEpTVmFsdWVTb3VyY2U6OnVuYm94ZWRDZWxs
KG9wMUdQUiksIGxlZnRDaGlsZCwgU3BlY09iamVjdCwgYnJhbmNoTm90T2JqZWN0KG9wMUdQUikp
OworICAgICAgICAgICAgSlNWYWx1ZVNvdXJjZTo6dW5ib3hlZENlbGwob3AxR1BSKSwgbGVmdENo
aWxkLCBTcGVjT2JqZWN0LCBtX2ppdC5icmFuY2hJZk5vdE9iamVjdChvcDFHUFIpKTsKICAgICB9
IGVsc2UgewogICAgICAgICBERkdfVFlQRV9DSEVDSygKLSAgICAgICAgICAgIEpTVmFsdWVTb3Vy
Y2U6OnVuYm94ZWRDZWxsKG9wMUdQUiksIGxlZnRDaGlsZCwgU3BlY09iamVjdCwgYnJhbmNoTm90
T2JqZWN0KG9wMUdQUikpOworICAgICAgICAgICAgSlNWYWx1ZVNvdXJjZTo6dW5ib3hlZENlbGwo
b3AxR1BSKSwgbGVmdENoaWxkLCBTcGVjT2JqZWN0LCBtX2ppdC5icmFuY2hJZk5vdE9iamVjdChv
cDFHUFIpKTsKICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhCYWRUeXBlLCBKU1ZhbHVlU291cmNl
Ojp1bmJveGVkQ2VsbChvcDFHUFIpLCBsZWZ0Q2hpbGQsCiAgICAgICAgICAgICBtX2ppdC5icmFu
Y2hUZXN0OCgKICAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6Tm9uWmVybywgCkBAIC0x
MzI0LDE1ICsxMzI0LDE1IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVPYmplY3RUb09i
amUKICAgICAKICAgICAvLyBJdCBzZWVtcyB0aGF0IG1vc3Qgb2YgdGhlIHRpbWUgd2hlbiBwcm9n
cmFtcyBkbyBhID09IGIgd2hlcmUgYiBtYXkgYmUgZWl0aGVyIG51bGwvdW5kZWZpbmVkCiAgICAg
Ly8gb3IgYW4gb2JqZWN0LCBiIGlzIHVzdWFsbHkgYW4gb2JqZWN0LiBCYWxhbmNlIHRoZSBicmFu
Y2hlcyB0byBtYWtlIHRoYXQgY2FzZSBmYXN0LgotICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIHJp
Z2h0Tm90Q2VsbCA9IGJyYW5jaE5vdENlbGwoSlNWYWx1ZVJlZ3Mob3AyR1BSKSk7CisgICAgTWFj
cm9Bc3NlbWJsZXI6Okp1bXAgcmlnaHROb3RDZWxsID0gbV9qaXQuYnJhbmNoSWZOb3RDZWxsKEpT
VmFsdWVSZWdzKG9wMkdQUikpOwogICAgIAogICAgIC8vIFdlIGtub3cgdGhhdCB3aXRoaW4gdGhp
cyBicmFuY2gsIHJpZ2h0Q2hpbGQgbXVzdCBiZSBhIGNlbGwuIAogICAgIGlmIChtYXNxdWVyYWRl
c0FzVW5kZWZpbmVkV2F0Y2hwb2ludFZhbGlkKSB7CiAgICAgICAgIERGR19UWVBFX0NIRUNLKAot
ICAgICAgICAgICAgSlNWYWx1ZVJlZ3Mob3AyR1BSKSwgcmlnaHRDaGlsZCwgKH5TcGVjQ2VsbCkg
fCBTcGVjT2JqZWN0LCBicmFuY2hOb3RPYmplY3Qob3AyR1BSKSk7CisgICAgICAgICAgICBKU1Zh
bHVlUmVncyhvcDJHUFIpLCByaWdodENoaWxkLCAoflNwZWNDZWxsKSB8IFNwZWNPYmplY3QsIG1f
aml0LmJyYW5jaElmTm90T2JqZWN0KG9wMkdQUikpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIERG
R19UWVBFX0NIRUNLKAotICAgICAgICAgICAgSlNWYWx1ZVJlZ3Mob3AyR1BSKSwgcmlnaHRDaGls
ZCwgKH5TcGVjQ2VsbCkgfCBTcGVjT2JqZWN0LCBicmFuY2hOb3RPYmplY3Qob3AyR1BSKSk7Cisg
ICAgICAgICAgICBKU1ZhbHVlUmVncyhvcDJHUFIpLCByaWdodENoaWxkLCAoflNwZWNDZWxsKSB8
IFNwZWNPYmplY3QsIG1faml0LmJyYW5jaElmTm90T2JqZWN0KG9wMkdQUikpOwogICAgICAgICBz
cGVjdWxhdGlvbkNoZWNrKEJhZFR5cGUsIEpTVmFsdWVSZWdzKG9wMkdQUiksIHJpZ2h0Q2hpbGQs
CiAgICAgICAgICAgICBtX2ppdC5icmFuY2hUZXN0OCgKICAgICAgICAgICAgICAgICBNYWNyb0Fz
c2VtYmxlcjo6Tm9uWmVybywgCkBAIC0xMzg5LDEwICsxMzg5LDEwIEBAIHZvaWQgU3BlY3VsYXRp
dmVKSVQ6OmNvbXBpbGVQZWVwSG9sZU9iamUKIAogICAgIGlmIChtYXNxdWVyYWRlc0FzVW5kZWZp
bmVkV2F0Y2hwb2ludFZhbGlkKSB7CiAgICAgICAgIERGR19UWVBFX0NIRUNLKAotICAgICAgICAg
ICAgSlNWYWx1ZVNvdXJjZTo6dW5ib3hlZENlbGwob3AxR1BSKSwgbGVmdENoaWxkLCBTcGVjT2Jq
ZWN0LCBicmFuY2hOb3RPYmplY3Qob3AxR1BSKSk7CisgICAgICAgICAgICBKU1ZhbHVlU291cmNl
Ojp1bmJveGVkQ2VsbChvcDFHUFIpLCBsZWZ0Q2hpbGQsIFNwZWNPYmplY3QsIG1faml0LmJyYW5j
aElmTm90T2JqZWN0KG9wMUdQUikpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIERGR19UWVBFX0NI
RUNLKAotICAgICAgICAgICAgSlNWYWx1ZVNvdXJjZTo6dW5ib3hlZENlbGwob3AxR1BSKSwgbGVm
dENoaWxkLCBTcGVjT2JqZWN0LCBicmFuY2hOb3RPYmplY3Qob3AxR1BSKSk7CisgICAgICAgICAg
ICBKU1ZhbHVlU291cmNlOjp1bmJveGVkQ2VsbChvcDFHUFIpLCBsZWZ0Q2hpbGQsIFNwZWNPYmpl
Y3QsIG1faml0LmJyYW5jaElmTm90T2JqZWN0KG9wMUdQUikpOwogICAgICAgICBzcGVjdWxhdGlv
bkNoZWNrKEJhZFR5cGUsIEpTVmFsdWVTb3VyY2U6OnVuYm94ZWRDZWxsKG9wMUdQUiksIGxlZnRD
aGlsZCwgCiAgICAgICAgICAgICBtX2ppdC5icmFuY2hUZXN0OCgKICAgICAgICAgICAgICAgICBN
YWNyb0Fzc2VtYmxlcjo6Tm9uWmVybywgCkBAIC0xNDAyLDE1ICsxNDAyLDE1IEBAIHZvaWQgU3Bl
Y3VsYXRpdmVKSVQ6OmNvbXBpbGVQZWVwSG9sZU9iamUKIAogICAgIC8vIEl0IHNlZW1zIHRoYXQg
bW9zdCBvZiB0aGUgdGltZSB3aGVuIHByb2dyYW1zIGRvIGEgPT0gYiB3aGVyZSBiIG1heSBiZSBl
aXRoZXIgbnVsbC91bmRlZmluZWQKICAgICAvLyBvciBhbiBvYmplY3QsIGIgaXMgdXN1YWxseSBh
biBvYmplY3QuIEJhbGFuY2UgdGhlIGJyYW5jaGVzIHRvIG1ha2UgdGhhdCBjYXNlIGZhc3QuCi0g
ICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXAgcmlnaHROb3RDZWxsID0gYnJhbmNoTm90Q2VsbChKU1Zh
bHVlUmVncyhvcDJHUFIpKTsKKyAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCByaWdodE5vdENlbGwg
PSBtX2ppdC5icmFuY2hJZk5vdENlbGwoSlNWYWx1ZVJlZ3Mob3AyR1BSKSk7CiAgICAgCiAgICAg
Ly8gV2Uga25vdyB0aGF0IHdpdGhpbiB0aGlzIGJyYW5jaCwgcmlnaHRDaGlsZCBtdXN0IGJlIGEg
Y2VsbC4gCiAgICAgaWYgKG1hc3F1ZXJhZGVzQXNVbmRlZmluZWRXYXRjaHBvaW50VmFsaWQpIHsK
ICAgICAgICAgREZHX1RZUEVfQ0hFQ0soCi0gICAgICAgICAgICBKU1ZhbHVlUmVncyhvcDJHUFIp
LCByaWdodENoaWxkLCAoflNwZWNDZWxsKSB8IFNwZWNPYmplY3QsIGJyYW5jaE5vdE9iamVjdChv
cDJHUFIpKTsKKyAgICAgICAgICAgIEpTVmFsdWVSZWdzKG9wMkdQUiksIHJpZ2h0Q2hpbGQsICh+
U3BlY0NlbGwpIHwgU3BlY09iamVjdCwgbV9qaXQuYnJhbmNoSWZOb3RPYmplY3Qob3AyR1BSKSk7
CiAgICAgfSBlbHNlIHsKICAgICAgICAgREZHX1RZUEVfQ0hFQ0soCi0gICAgICAgICAgICBKU1Zh
bHVlUmVncyhvcDJHUFIpLCByaWdodENoaWxkLCAoflNwZWNDZWxsKSB8IFNwZWNPYmplY3QsIGJy
YW5jaE5vdE9iamVjdChvcDJHUFIpKTsKKyAgICAgICAgICAgIEpTVmFsdWVSZWdzKG9wMkdQUiks
IHJpZ2h0Q2hpbGQsICh+U3BlY0NlbGwpIHwgU3BlY09iamVjdCwgbV9qaXQuYnJhbmNoSWZOb3RP
YmplY3Qob3AyR1BSKSk7CiAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFkVHlwZSwgSlNWYWx1
ZVJlZ3Mob3AyR1BSKSwgcmlnaHRDaGlsZCwKICAgICAgICAgICAgIG1faml0LmJyYW5jaFRlc3Q4
KAogICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpOb25aZXJvLCAKQEAgLTE1MjksMTMg
KzE1MjksMTMgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU9iamVjdE9yT3RoZQogICAg
ICAgICBzY3JhdGNoR1BSID0gc2NyYXRjaC5ncHIoKTsKICAgICB9CiAKLSAgICBNYWNyb0Fzc2Vt
Ymxlcjo6SnVtcCBub3RDZWxsID0gYnJhbmNoTm90Q2VsbChKU1ZhbHVlUmVncyh2YWx1ZUdQUikp
OworICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIG5vdENlbGwgPSBtX2ppdC5icmFuY2hJZk5vdENl
bGwoSlNWYWx1ZVJlZ3ModmFsdWVHUFIpKTsKICAgICBpZiAobWFzcXVlcmFkZXNBc1VuZGVmaW5l
ZFdhdGNocG9pbnRWYWxpZCkgewogICAgICAgICBERkdfVFlQRV9DSEVDSygKLSAgICAgICAgICAg
IEpTVmFsdWVSZWdzKHZhbHVlR1BSKSwgbm9kZVVzZSwgKH5TcGVjQ2VsbCkgfCBTcGVjT2JqZWN0
LCBicmFuY2hOb3RPYmplY3QodmFsdWVHUFIpKTsKKyAgICAgICAgICAgIEpTVmFsdWVSZWdzKHZh
bHVlR1BSKSwgbm9kZVVzZSwgKH5TcGVjQ2VsbCkgfCBTcGVjT2JqZWN0LCBtX2ppdC5icmFuY2hJ
Zk5vdE9iamVjdCh2YWx1ZUdQUikpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIERGR19UWVBFX0NI
RUNLKAotICAgICAgICAgICAgSlNWYWx1ZVJlZ3ModmFsdWVHUFIpLCBub2RlVXNlLCAoflNwZWND
ZWxsKSB8IFNwZWNPYmplY3QsIGJyYW5jaE5vdE9iamVjdCh2YWx1ZUdQUikpOworICAgICAgICAg
ICAgSlNWYWx1ZVJlZ3ModmFsdWVHUFIpLCBub2RlVXNlLCAoflNwZWNDZWxsKSB8IFNwZWNPYmpl
Y3QsIG1faml0LmJyYW5jaElmTm90T2JqZWN0KHZhbHVlR1BSKSk7CiAKICAgICAgICAgTWFjcm9B
c3NlbWJsZXI6Okp1bXAgaXNOb3RNYXNxdWVyYWRlc0FzVW5kZWZpbmVkID0gCiAgICAgICAgICAg
ICBtX2ppdC5icmFuY2hUZXN0OCgKQEAgLTE2NzMsMTMgKzE2NzMsMTMgQEAgdm9pZCBTcGVjdWxh
dGl2ZUpJVDo6ZW1pdE9iamVjdE9yT3RoZXJCcgogICAgICAgICBzdHJ1Y3R1cmVHUFIgPSBzdHJ1
Y3R1cmUuZ3ByKCk7CiAgICAgfQogCi0gICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXAgbm90Q2VsbCA9
IGJyYW5jaE5vdENlbGwoSlNWYWx1ZVJlZ3ModmFsdWVHUFIpKTsKKyAgICBNYWNyb0Fzc2VtYmxl
cjo6SnVtcCBub3RDZWxsID0gbV9qaXQuYnJhbmNoSWZOb3RDZWxsKEpTVmFsdWVSZWdzKHZhbHVl
R1BSKSk7CiAgICAgaWYgKG1hc3F1ZXJhZGVzQXNVbmRlZmluZWRXYXRjaHBvaW50SXNTdGlsbFZh
bGlkKCkpIHsKICAgICAgICAgREZHX1RZUEVfQ0hFQ0soCi0gICAgICAgICAgICBKU1ZhbHVlUmVn
cyh2YWx1ZUdQUiksIG5vZGVVc2UsICh+U3BlY0NlbGwpIHwgU3BlY09iamVjdCwgYnJhbmNoTm90
T2JqZWN0KHZhbHVlR1BSKSk7CisgICAgICAgICAgICBKU1ZhbHVlUmVncyh2YWx1ZUdQUiksIG5v
ZGVVc2UsICh+U3BlY0NlbGwpIHwgU3BlY09iamVjdCwgbV9qaXQuYnJhbmNoSWZOb3RPYmplY3Qo
dmFsdWVHUFIpKTsKICAgICB9IGVsc2UgewogICAgICAgICBERkdfVFlQRV9DSEVDSygKLSAgICAg
ICAgICAgIEpTVmFsdWVSZWdzKHZhbHVlR1BSKSwgbm9kZVVzZSwgKH5TcGVjQ2VsbCkgfCBTcGVj
T2JqZWN0LCBicmFuY2hOb3RPYmplY3QodmFsdWVHUFIpKTsKKyAgICAgICAgICAgIEpTVmFsdWVS
ZWdzKHZhbHVlR1BSKSwgbm9kZVVzZSwgKH5TcGVjQ2VsbCkgfCBTcGVjT2JqZWN0LCBtX2ppdC5i
cmFuY2hJZk5vdE9iamVjdCh2YWx1ZUdQUikpOwogCiAgICAgICAgIEpJVENvbXBpbGVyOjpKdW1w
IGlzTm90TWFzcXVlcmFkZXNBc1VuZGVmaW5lZCA9IG1faml0LmJyYW5jaFRlc3Q4KAogICAgICAg
ICAgICAgSklUQ29tcGlsZXI6Olplcm8sIApAQCAtMzE2Nyw4ICszMTY3LDggQEAgdm9pZCBTcGVj
dWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICAKICAgICAgICAgb3AxLnVz
ZSgpOwogICAgICAgICAKLSAgICAgICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXAgYWxyZWFkeVByaW1p
dGl2ZSA9IGJyYW5jaE5vdENlbGwoSlNWYWx1ZVJlZ3Mob3AxR1BSKSk7Ci0gICAgICAgIE1hY3Jv
QXNzZW1ibGVyOjpKdW1wIG5vdFByaW1pdGl2ZSA9IGJyYW5jaElzT2JqZWN0KG9wMUdQUik7Cisg
ICAgICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIGFscmVhZHlQcmltaXRpdmUgPSBtX2ppdC5icmFu
Y2hJZk5vdENlbGwoSlNWYWx1ZVJlZ3Mob3AxR1BSKSk7CisgICAgICAgIE1hY3JvQXNzZW1ibGVy
OjpKdW1wIG5vdFByaW1pdGl2ZSA9IG1faml0LmJyYW5jaElmT2JqZWN0KG9wMUdQUik7CiAgICAg
ICAgIAogICAgICAgICBhbHJlYWR5UHJpbWl0aXZlLmxpbmsoJm1faml0KTsKICAgICAgICAgbV9q
aXQubW92ZShvcDFHUFIsIHJlc3VsdEdQUik7CkBAIC0zMTkzLDggKzMxOTMsOCBAQCB2b2lkIFNw
ZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgICAgICAKICAgICAgICAg
ICAgIEpJVENvbXBpbGVyOjpKdW1wIGRvbmU7CiAgICAgICAgICAgICBpZiAobm9kZS0+Y2hpbGQx
KCktPnByZWRpY3Rpb24oKSAmIFNwZWNTdHJpbmcpIHsKLSAgICAgICAgICAgICAgICBKSVRDb21w
aWxlcjo6SnVtcCBzbG93UGF0aDEgPSBicmFuY2hOb3RDZWxsKEpTVmFsdWVSZWdzKG9wMUdQUikp
OwotICAgICAgICAgICAgICAgIEpJVENvbXBpbGVyOjpKdW1wIHNsb3dQYXRoMiA9IGJyYW5jaE5v
dFN0cmluZyhvcDFHUFIpOworICAgICAgICAgICAgICAgIEpJVENvbXBpbGVyOjpKdW1wIHNsb3dQ
YXRoMSA9IG1faml0LmJyYW5jaElmTm90Q2VsbChKU1ZhbHVlUmVncyhvcDFHUFIpKTsKKyAgICAg
ICAgICAgICAgICBKSVRDb21waWxlcjo6SnVtcCBzbG93UGF0aDIgPSBtX2ppdC5icmFuY2hJZk5v
dFN0cmluZyhvcDFHUFIpOwogICAgICAgICAgICAgICAgIG1faml0Lm1vdmUob3AxR1BSLCByZXN1
bHRHUFIpOwogICAgICAgICAgICAgICAgIGRvbmUgPSBtX2ppdC5qdW1wKCk7CiAgICAgICAgICAg
ICAgICAgc2xvd1BhdGgxLmxpbmsoJm1faml0KTsKQEAgLTM1NTMsNyArMzU1Myw3IEBAIHZvaWQg
U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgR1BSUmVnIHRlbXBH
UFIgPSB0ZW1wLmdwcigpOwogICAgICAgICAKICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXBM
aXN0IHNsb3dDYXNlczsKLSAgICAgICAgc2xvd0Nhc2VzLmFwcGVuZChicmFuY2hOb3RDZWxsKEpT
VmFsdWVSZWdzKHRoaXNWYWx1ZUdQUikpKTsKKyAgICAgICAgc2xvd0Nhc2VzLmFwcGVuZChtX2pp
dC5icmFuY2hJZk5vdENlbGwoSlNWYWx1ZVJlZ3ModGhpc1ZhbHVlR1BSKSkpOwogICAgICAgICBz
bG93Q2FzZXMuYXBwZW5kKG1faml0LmJyYW5jaDgoCiAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxl
cjo6Tm90RXF1YWwsCiAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyh0aGlzVmFs
dWVHUFIsIEpTQ2VsbDo6dHlwZUluZm9UeXBlT2Zmc2V0KCkpLApAQCAtMzcwMyw3ICszNzAzLDcg
QEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICAKICAg
ICAgICAgICAgIGJhc2UudXNlKCk7CiAgICAgICAgIAotICAgICAgICAgICAgSklUQ29tcGlsZXI6
Okp1bXAgbm90Q2VsbCA9IGJyYW5jaE5vdENlbGwoSlNWYWx1ZVJlZ3MoYmFzZUdQUikpOworICAg
ICAgICAgICAgSklUQ29tcGlsZXI6Okp1bXAgbm90Q2VsbCA9IG1faml0LmJyYW5jaElmTm90Q2Vs
bChKU1ZhbHVlUmVncyhiYXNlR1BSKSk7CiAgICAgICAgIAogICAgICAgICAgICAgY2FjaGVkR2V0
QnlJZChub2RlLT5vcmlnaW4uc2VtYW50aWMsIGJhc2VHUFIsIHJlc3VsdEdQUiwgbm9kZS0+aWRl
bnRpZmllck51bWJlcigpLCBub3RDZWxsKTsKICAgICAgICAgCkBAIC0zNzUzLDcgKzM3NTMsNyBA
QCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgICAgICBi
YXNlLnVzZSgpOwogICAgICAgICAgICAgZmx1c2hSZWdpc3RlcnMoKTsKICAgICAgICAgCi0gICAg
ICAgICAgICBKSVRDb21waWxlcjo6SnVtcCBub3RDZWxsID0gYnJhbmNoTm90Q2VsbChKU1ZhbHVl
UmVncyhiYXNlR1BSKSk7CisgICAgICAgICAgICBKSVRDb21waWxlcjo6SnVtcCBub3RDZWxsID0g
bV9qaXQuYnJhbmNoSWZOb3RDZWxsKEpTVmFsdWVSZWdzKGJhc2VHUFIpKTsKICAgICAgICAgCiAg
ICAgICAgICAgICBjYWNoZWRHZXRCeUlkKG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgYmFzZUdQUiwg
cmVzdWx0R1BSLCBub2RlLT5pZGVudGlmaWVyTnVtYmVyKCksIG5vdENlbGwsIERvbnRTcGlsbCk7
CiAgICAgICAgIApAQCAtNDA0OSw3ICs0MDQ5LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29t
cGlsZShOb2RlKiBub2RlKQogICAgICAgICBHUFJUZW1wb3JhcnkgcmVtb3RlR2xvYmFsT2JqZWN0
KHRoaXMpOwogICAgICAgICBHUFJUZW1wb3Jhcnkgc2NyYXRjaCh0aGlzKTsKIAotICAgICAgICBK
SVRDb21waWxlcjo6SnVtcCBpc0NlbGwgPSBicmFuY2hJc0NlbGwodmFsdWUuanNWYWx1ZVJlZ3Mo
KSk7CisgICAgICAgIEpJVENvbXBpbGVyOjpKdW1wIGlzQ2VsbCA9IG1faml0LmJyYW5jaElmQ2Vs
bCh2YWx1ZS5qc1ZhbHVlUmVncygpKTsKIAogICAgICAgICBtX2ppdC5jb21wYXJlNjQoSklUQ29t
cGlsZXI6OkVxdWFsLCB2YWx1ZS5ncHIoKSwgVHJ1c3RlZEltbTMyKFZhbHVlVW5kZWZpbmVkKSwg
cmVzdWx0LmdwcigpKTsKICAgICAgICAgSklUQ29tcGlsZXI6Okp1bXAgZG9uZSA9IG1faml0Lmp1
bXAoKTsKQEAgLTQxMDksNyArNDEwOSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUo
Tm9kZSogbm9kZSkKICAgICAgICAgSlNWYWx1ZU9wZXJhbmQgdmFsdWUodGhpcywgbm9kZS0+Y2hp
bGQxKCkpOwogICAgICAgICBHUFJUZW1wb3JhcnkgcmVzdWx0KHRoaXMsIFJldXNlLCB2YWx1ZSk7
CiAgICAgICAgIAotICAgICAgICBKSVRDb21waWxlcjo6SnVtcCBpc05vdENlbGwgPSBicmFuY2hO
b3RDZWxsKHZhbHVlLmpzVmFsdWVSZWdzKCkpOworICAgICAgICBKSVRDb21waWxlcjo6SnVtcCBp
c05vdENlbGwgPSBtX2ppdC5icmFuY2hJZk5vdENlbGwodmFsdWUuanNWYWx1ZVJlZ3MoKSk7CiAg
ICAgICAgIAogICAgICAgICBtX2ppdC5jb21wYXJlOChKSVRDb21waWxlcjo6RXF1YWwsIAogICAg
ICAgICAgICAgSklUQ29tcGlsZXI6OkFkZHJlc3ModmFsdWUuZ3ByKCksIEpTQ2VsbDo6dHlwZUlu
Zm9UeXBlT2Zmc2V0KCkpLCAKQEAgLTQxMzAsNyArNDEzMCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVK
SVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgSlNWYWx1ZU9wZXJhbmQgdmFsdWUodGhp
cywgbm9kZS0+Y2hpbGQxKCkpOwogICAgICAgICBHUFJUZW1wb3JhcnkgcmVzdWx0KHRoaXMsIFJl
dXNlLCB2YWx1ZSk7CiAKLSAgICAgICAgSklUQ29tcGlsZXI6Okp1bXAgaXNOb3RDZWxsID0gYnJh
bmNoTm90Q2VsbCh2YWx1ZS5qc1ZhbHVlUmVncygpKTsKKyAgICAgICAgSklUQ29tcGlsZXI6Okp1
bXAgaXNOb3RDZWxsID0gbV9qaXQuYnJhbmNoSWZOb3RDZWxsKHZhbHVlLmpzVmFsdWVSZWdzKCkp
OwogCiAgICAgICAgIG1faml0LmNvbXBhcmU4KEpJVENvbXBpbGVyOjpBYm92ZU9yRXF1YWwsCiAg
ICAgICAgICAgICBKSVRDb21waWxlcjo6QWRkcmVzcyh2YWx1ZS5ncHIoKSwgSlNDZWxsOjp0eXBl
SW5mb1R5cGVPZmZzZXQoKSksCkBAIC00MTgyLDEyICs0MTgyLDEyIEBAIHZvaWQgU3BlY3VsYXRp
dmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgCiAgICAgICAgIEFTU0VSVChub2Rl
LT5jaGlsZDEoKS51c2VLaW5kKCkgPT0gVW50eXBlZFVzZSB8fCBub2RlLT5jaGlsZDEoKS51c2VL
aW5kKCkgPT0gQ2VsbFVzZSB8fCBub2RlLT5jaGlsZDEoKS51c2VLaW5kKCkgPT0gU3RyaW5nVXNl
KTsKIAotICAgICAgICBKSVRDb21waWxlcjo6SnVtcCBpc05vdENlbGwgPSBicmFuY2hOb3RDZWxs
KEpTVmFsdWVSZWdzKHZhbHVlR1BSKSk7CisgICAgICAgIEpJVENvbXBpbGVyOjpKdW1wIGlzTm90
Q2VsbCA9IG1faml0LmJyYW5jaElmTm90Q2VsbChKU1ZhbHVlUmVncyh2YWx1ZUdQUikpOwogICAg
ICAgICBpZiAobm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpICE9IFVudHlwZWRVc2UpCiAgICAgICAg
ICAgICBERkdfVFlQRV9DSEVDSyhKU1ZhbHVlU291cmNlKHZhbHVlR1BSKSwgbm9kZS0+Y2hpbGQx
KCksIFNwZWNDZWxsLCBpc05vdENlbGwpOwogCiAgICAgICAgIGlmICghbm9kZS0+Y2hpbGQxKCkt
PnNob3VsZFNwZWN1bGF0ZU9iamVjdCgpIHx8IG5vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSA9PSBT
dHJpbmdVc2UpIHsKLSAgICAgICAgICAgIEpJVENvbXBpbGVyOjpKdW1wIG5vdFN0cmluZyA9IGJy
YW5jaE5vdFN0cmluZyh2YWx1ZUdQUik7CisgICAgICAgICAgICBKSVRDb21waWxlcjo6SnVtcCBu
b3RTdHJpbmcgPSBtX2ppdC5icmFuY2hJZk5vdFN0cmluZyh2YWx1ZUdQUik7CiAgICAgICAgICAg
ICBpZiAobm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpID09IFN0cmluZ1VzZSkKICAgICAgICAgICAg
ICAgICBERkdfVFlQRV9DSEVDSyhKU1ZhbHVlU291cmNlKHZhbHVlR1BSKSwgbm9kZS0+Y2hpbGQx
KCksIFNwZWNTdHJpbmcsIG5vdFN0cmluZyk7CiAgICAgICAgICAgICBtX2ppdC5tb3ZlKFRydXN0
ZWRJbW1QdHIobV9qaXQudm0oKS0+c21hbGxTdHJpbmdzLnN0cmluZ1N0cmluZygpKSwgcmVzdWx0
R1BSKTsKQEAgLTQ2MjgsOCArNDYyOCw4IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUo
Tm9kZSogbm9kZSkKICAgICAgICAgZWxzZSBpZiAoY2FjaGVkVHlwZUxvY2F0aW9uLT5tX2xhc3RT
ZWVuVHlwZSA9PSBUeXBlTnVtYmVyKQogICAgICAgICAgICAganVtcFRvRW5kLmFwcGVuZChtX2pp
dC5icmFuY2hUZXN0NjQoTWFjcm9Bc3NlbWJsZXI6Ok5vblplcm8sIHZhbHVlR1BSLCBHUFJJbmZv
Ojp0YWdUeXBlTnVtYmVyUmVnaXN0ZXIpKTsKICAgICAgICAgZWxzZSBpZiAoY2FjaGVkVHlwZUxv
Y2F0aW9uLT5tX2xhc3RTZWVuVHlwZSA9PSBUeXBlU3RyaW5nKSB7Ci0gICAgICAgICAgICBNYWNy
b0Fzc2VtYmxlcjo6SnVtcCBpc05vdENlbGwgPSBicmFuY2hOb3RDZWxsKEpTVmFsdWVSZWdzKHZh
bHVlR1BSKSk7Ci0gICAgICAgICAgICBqdW1wVG9FbmQuYXBwZW5kKGJyYW5jaElzU3RyaW5nKHZh
bHVlR1BSKSk7CisgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBpc05vdENlbGwgPSBt
X2ppdC5icmFuY2hJZk5vdENlbGwoSlNWYWx1ZVJlZ3ModmFsdWVHUFIpKTsKKyAgICAgICAgICAg
IGp1bXBUb0VuZC5hcHBlbmQobV9qaXQuYnJhbmNoSWZTdHJpbmcodmFsdWVHUFIpKTsKICAgICAg
ICAgICAgIGlzTm90Q2VsbC5saW5rKCZtX2ppdCk7CiAgICAgICAgIH0KIApAQCAtNDY0NCw3ICs0
NjQ0LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAg
ICBtX2ppdC5zdG9yZTY0KHZhbHVlR1BSLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhzY3JhdGNo
MUdQUiwgVHlwZVByb2ZpbGVyTG9nOjpMb2dFbnRyeTo6dmFsdWVPZmZzZXQoKSkpOwogCiAgICAg
ICAgIC8vIFN0b3JlIHRoZSBzdHJ1Y3R1cmVJRCBvZiB0aGUgY2VsbCBpZiB2YWx1ZUdQUiBpcyBh
IGNlbGwsIG90aGVyd2lzZSwgc3RvcmUgMCBvbiB0aGUgbG9nIGVudHJ5LgotICAgICAgICBNYWNy
b0Fzc2VtYmxlcjo6SnVtcCBpc05vdENlbGwgPSBicmFuY2hOb3RDZWxsKEpTVmFsdWVSZWdzKHZh
bHVlR1BSKSk7CisgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIGlzTm90Q2VsbCA9IG1faml0
LmJyYW5jaElmTm90Q2VsbChKU1ZhbHVlUmVncyh2YWx1ZUdQUikpOwogICAgICAgICBtX2ppdC5s
b2FkMzIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3ModmFsdWVHUFIsIEpTQ2VsbDo6c3RydWN0dXJl
SURPZmZzZXQoKSksIHNjcmF0Y2gzR1BSKTsKICAgICAgICAgbV9qaXQuc3RvcmUzMihzY3JhdGNo
M0dQUiwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Moc2NyYXRjaDFHUFIsIFR5cGVQcm9maWxlckxv
Zzo6TG9nRW50cnk6OnN0cnVjdHVyZUlET2Zmc2V0KCkpKTsKICAgICAgICAgTWFjcm9Bc3NlbWJs
ZXI6Okp1bXAgc2tpcElzQ2VsbCA9IG1faml0Lmp1bXAoKTsKQEAgLTQ3NzksNyArNDc3OSw3IEBA
IHZvaWQgU3BlY3VsYXRpdmVKSVQ6OndyaXRlQmFycmllcihHUFJSZWcKIHsKICAgICBKSVRDb21w
aWxlcjo6SnVtcCBpc05vdENlbGw7CiAgICAgaWYgKCFpc0tub3duQ2VsbCh2YWx1ZVVzZS5ub2Rl
KCkpKQotICAgICAgICBpc05vdENlbGwgPSBicmFuY2hOb3RDZWxsKEpTVmFsdWVSZWdzKHZhbHVl
R1BSKSk7CisgICAgICAgIGlzTm90Q2VsbCA9IG1faml0LmJyYW5jaElmTm90Q2VsbChKU1ZhbHVl
UmVncyh2YWx1ZUdQUikpOwogICAgIAogICAgIEpJVENvbXBpbGVyOjpKdW1wIG93bmVySXNSZW1l
bWJlcmVkT3JJbkVkZW4gPSBtX2ppdC5qdW1wSWZJc1JlbWVtYmVyZWRPckluRWRlbihvd25lckdQ
Uik7CiAgICAgc3RvcmVUb1dyaXRlQmFycmllckJ1ZmZlcihvd25lckdQUiwgc2NyYXRjaDEsIHNj
cmF0Y2gyKTsKQEAgLTQ3OTMsNyArNDc5Myw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OndyaXRl
QmFycmllcihKU0NlbGwKIHsKICAgICBKSVRDb21waWxlcjo6SnVtcCBpc05vdENlbGw7CiAgICAg
aWYgKCFpc0tub3duQ2VsbCh2YWx1ZVVzZS5ub2RlKCkpKQotICAgICAgICBpc05vdENlbGwgPSBi
cmFuY2hOb3RDZWxsKEpTVmFsdWVSZWdzKHZhbHVlR1BSKSk7CisgICAgICAgIGlzTm90Q2VsbCA9
IG1faml0LmJyYW5jaElmTm90Q2VsbChKU1ZhbHVlUmVncyh2YWx1ZUdQUikpOwogICAgIAogICAg
IEpJVENvbXBpbGVyOjpKdW1wIG93bmVySXNSZW1lbWJlcmVkT3JJbkVkZW4gPSBtX2ppdC5qdW1w
SWZJc1JlbWVtYmVyZWRPckluRWRlbihvd25lcik7CiAgICAgc3RvcmVUb1dyaXRlQmFycmllckJ1
ZmZlcihvd25lciwgc2NyYXRjaDEsIHNjcmF0Y2gyKTsKQEAgLTQ4MDQsMzQgKzQ4MDQsNiBAQCB2
b2lkIFNwZWN1bGF0aXZlSklUOjp3cml0ZUJhcnJpZXIoSlNDZWxsCiB9CiAjZW5kaWYgLy8gRU5B
QkxFKEdHQykKIAotSklUQ29tcGlsZXI6Okp1bXAgU3BlY3VsYXRpdmVKSVQ6OmJyYW5jaElzQ2Vs
bChKU1ZhbHVlUmVncyByZWdzKQotewotICAgIHJldHVybiBtX2ppdC5icmFuY2hUZXN0NjQoTWFj
cm9Bc3NlbWJsZXI6Olplcm8sIHJlZ3MuZ3ByKCksIEdQUkluZm86OnRhZ01hc2tSZWdpc3Rlcik7
Ci19Ci0KLUpJVENvbXBpbGVyOjpKdW1wIFNwZWN1bGF0aXZlSklUOjpicmFuY2hOb3RDZWxsKEpT
VmFsdWVSZWdzIHJlZ3MpCi17Ci0gICAgcmV0dXJuIG1faml0LmJyYW5jaFRlc3Q2NChNYWNyb0Fz
c2VtYmxlcjo6Tm9uWmVybywgcmVncy5ncHIoKSwgR1BSSW5mbzo6dGFnTWFza1JlZ2lzdGVyKTsK
LX0KLQotSklUQ29tcGlsZXI6Okp1bXAgU3BlY3VsYXRpdmVKSVQ6OmJyYW5jaElzT3RoZXIoSlNW
YWx1ZVJlZ3MgcmVncywgR1BSUmVnIHRlbXBHUFIpCi17Ci0gICAgbV9qaXQubW92ZShyZWdzLmdw
cigpLCB0ZW1wR1BSKTsKLSAgICBtX2ppdC5hbmQ2NChNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZElt
bTMyKH5UYWdCaXRVbmRlZmluZWQpLCB0ZW1wR1BSKTsKLSAgICByZXR1cm4gbV9qaXQuYnJhbmNo
NjQoCi0gICAgICAgIE1hY3JvQXNzZW1ibGVyOjpFcXVhbCwgdGVtcEdQUiwKLSAgICAgICAgTWFj
cm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW02NChWYWx1ZU51bGwpKTsKLX0KLQotSklUQ29tcGlsZXI6
Okp1bXAgU3BlY3VsYXRpdmVKSVQ6OmJyYW5jaE5vdE90aGVyKEpTVmFsdWVSZWdzIHJlZ3MsIEdQ
UlJlZyB0ZW1wR1BSKQotewotICAgIG1faml0Lm1vdmUocmVncy5ncHIoKSwgdGVtcEdQUik7Ci0g
ICAgbV9qaXQuYW5kNjQoTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW0zMih+VGFnQml0VW5kZWZp
bmVkKSwgdGVtcEdQUik7Ci0gICAgcmV0dXJuIG1faml0LmJyYW5jaDY0KAotICAgICAgICBNYWNy
b0Fzc2VtYmxlcjo6Tm90RXF1YWwsIHRlbXBHUFIsCi0gICAgICAgIE1hY3JvQXNzZW1ibGVyOjpU
cnVzdGVkSW1tNjQoVmFsdWVOdWxsKSk7Ci19Ci0KIHZvaWQgU3BlY3VsYXRpdmVKSVQ6Om1vdmVU
cnVlVG8oR1BSUmVnIGdwcikKIHsKICAgICBtX2ppdC5tb3ZlKFRydXN0ZWRJbW0zMihWYWx1ZVRy
dWUpLCBncHIpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2
ZUpJVC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVj
dWxhdGl2ZUpJVC5jcHAJKHJldmlzaW9uIDE4MzY1MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTgyLDE3ICsx
MTgyLDE3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVQZWVwSG9sZU9iamUKICAgICBp
ZiAobWFzcXVlcmFkZXNBc1VuZGVmaW5lZFdhdGNocG9pbnRJc1N0aWxsVmFsaWQoKSkgewogICAg
ICAgICBpZiAobV9zdGF0ZS5mb3JOb2RlKG5vZGUtPmNoaWxkMSgpKS5tX3R5cGUgJiB+U3BlY09i
amVjdCkgewogICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjaygKLSAgICAgICAgICAgICAgICBC
YWRUeXBlLCBKU1ZhbHVlU291cmNlOjp1bmJveGVkQ2VsbChvcDFHUFIpLCBub2RlLT5jaGlsZDEo
KSwgYnJhbmNoTm90T2JqZWN0KG9wMUdQUikpOworICAgICAgICAgICAgICAgIEJhZFR5cGUsIEpT
VmFsdWVTb3VyY2U6OnVuYm94ZWRDZWxsKG9wMUdQUiksIG5vZGUtPmNoaWxkMSgpLCBtX2ppdC5i
cmFuY2hJZk5vdE9iamVjdChvcDFHUFIpKTsKICAgICAgICAgfQogICAgICAgICBpZiAobV9zdGF0
ZS5mb3JOb2RlKG5vZGUtPmNoaWxkMigpKS5tX3R5cGUgJiB+U3BlY09iamVjdCkgewogICAgICAg
ICAgICAgc3BlY3VsYXRpb25DaGVjaygKLSAgICAgICAgICAgICAgICBCYWRUeXBlLCBKU1ZhbHVl
U291cmNlOjp1bmJveGVkQ2VsbChvcDJHUFIpLCBub2RlLT5jaGlsZDIoKSwgYnJhbmNoTm90T2Jq
ZWN0KG9wMkdQUikpOworICAgICAgICAgICAgICAgIEJhZFR5cGUsIEpTVmFsdWVTb3VyY2U6OnVu
Ym94ZWRDZWxsKG9wMkdQUiksIG5vZGUtPmNoaWxkMigpLCBtX2ppdC5icmFuY2hJZk5vdE9iamVj
dChvcDJHUFIpKTsKICAgICAgICAgfQogICAgIH0gZWxzZSB7CiAgICAgICAgIGlmIChtX3N0YXRl
LmZvck5vZGUobm9kZS0+Y2hpbGQxKCkpLm1fdHlwZSAmIH5TcGVjT2JqZWN0KSB7CiAgICAgICAg
ICAgICBzcGVjdWxhdGlvbkNoZWNrKAogICAgICAgICAgICAgICAgIEJhZFR5cGUsIEpTVmFsdWVT
b3VyY2U6OnVuYm94ZWRDZWxsKG9wMUdQUiksIG5vZGUtPmNoaWxkMSgpLAotICAgICAgICAgICAg
ICAgIGJyYW5jaE5vdE9iamVjdChvcDFHUFIpKTsKKyAgICAgICAgICAgICAgICBtX2ppdC5icmFu
Y2hJZk5vdE9iamVjdChvcDFHUFIpKTsKICAgICAgICAgfQogICAgICAgICBzcGVjdWxhdGlvbkNo
ZWNrKEJhZFR5cGUsIEpTVmFsdWVTb3VyY2U6OnVuYm94ZWRDZWxsKG9wMUdQUiksIG5vZGUtPmNo
aWxkMSgpLAogICAgICAgICAgICAgbV9qaXQuYnJhbmNoVGVzdDgoCkBAIC0xMjAzLDcgKzEyMDMs
NyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlUGVlcEhvbGVPYmplCiAgICAgICAgIGlm
IChtX3N0YXRlLmZvck5vZGUobm9kZS0+Y2hpbGQyKCkpLm1fdHlwZSAmIH5TcGVjT2JqZWN0KSB7
CiAgICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKAogICAgICAgICAgICAgICAgIEJhZFR5cGUs
IEpTVmFsdWVTb3VyY2U6OnVuYm94ZWRDZWxsKG9wMkdQUiksIG5vZGUtPmNoaWxkMigpLAotICAg
ICAgICAgICAgICAgIGJyYW5jaE5vdE9iamVjdChvcDJHUFIpKTsKKyAgICAgICAgICAgICAgICBt
X2ppdC5icmFuY2hJZk5vdE9iamVjdChvcDJHUFIpKTsKICAgICAgICAgfQogICAgICAgICBzcGVj
dWxhdGlvbkNoZWNrKEJhZFR5cGUsIEpTVmFsdWVTb3VyY2U6OnVuYm94ZWRDZWxsKG9wMkdQUiks
IG5vZGUtPmNoaWxkMigpLAogICAgICAgICAgICAgbV9qaXQuYnJhbmNoVGVzdDgoCkBAIC0xODk3
LDcgKzE4OTcsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlVmFsdWVUb0ludDMyCiAg
ICAgICAgICAgICAgICAgSklUQ29tcGlsZXI6Okp1bXAgaXNOdW1iZXIgPSBtX2ppdC5icmFuY2hU
ZXN0NjQoTWFjcm9Bc3NlbWJsZXI6Ok5vblplcm8sIGdwciwgR1BSSW5mbzo6dGFnVHlwZU51bWJl
clJlZ2lzdGVyKTsKICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICBERkdfVFlQRV9D
SEVDSygKLSAgICAgICAgICAgICAgICAgICAgSlNWYWx1ZVJlZ3MoZ3ByKSwgbm9kZS0+Y2hpbGQx
KCksIH5TcGVjQ2VsbCwgYnJhbmNoSXNDZWxsKEpTVmFsdWVSZWdzKGdwcikpKTsKKyAgICAgICAg
ICAgICAgICAgICAgSlNWYWx1ZVJlZ3MoZ3ByKSwgbm9kZS0+Y2hpbGQxKCksIH5TcGVjQ2VsbCwg
bV9qaXQuYnJhbmNoSWZDZWxsKEpTVmFsdWVSZWdzKGdwcikpKTsKICAgICAgICAgICAgICAgICAK
ICAgICAgICAgICAgICAgICAvLyBJdCdzIG5vdCBhIGNlbGw6IHNvIHRydWUgdHVybnMgaW50byAx
IGFuZCBhbGwgZWxzZSB0dXJucyBpbnRvIDAuCiAgICAgICAgICAgICAgICAgbV9qaXQuY29tcGFy
ZTY0KEpJVENvbXBpbGVyOjpFcXVhbCwgZ3ByLCBUcnVzdGVkSW1tMzIoVmFsdWVUcnVlKSwgcmVz
dWx0R3ByKTsKQEAgLTE5NTMsNyArMTk1Myw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBp
bGVWYWx1ZVRvSW50MzIKICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAg
IERGR19UWVBFX0NIRUNLKAogICAgICAgICAgICAgICAgICAgICAgICAgb3AxLmpzVmFsdWVSZWdz
KCksIG5vZGUtPmNoaWxkMSgpLCB+U3BlY0NlbGwsCi0gICAgICAgICAgICAgICAgICAgICAgICBi
cmFuY2hJc0NlbGwob3AxLmpzVmFsdWVSZWdzKCkpKTsKKyAgICAgICAgICAgICAgICAgICAgICAg
IG1faml0LmJyYW5jaElmQ2VsbChvcDEuanNWYWx1ZVJlZ3MoKSkpOwogICAgICAgICAgICAgICAg
ICAgICAKICAgICAgICAgICAgICAgICAgICAgLy8gSXQncyBub3QgYSBjZWxsOiBzbyB0cnVlIHR1
cm5zIGludG8gMSBhbmQgYWxsIGVsc2UgdHVybnMgaW50byAwLgogICAgICAgICAgICAgICAgICAg
ICBKSVRDb21waWxlcjo6SnVtcCBpc0Jvb2xlYW4gPSBtX2ppdC5icmFuY2gzMihKSVRDb21waWxl
cjo6RXF1YWwsIHRhZ0dQUiwgVHJ1c3RlZEltbTMyKEpTVmFsdWU6OkJvb2xlYW5UYWcpKTsKQEAg
LTI1NDMsNyArMjU0Myw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVQdXRCeVZhbEZv
ckYKIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVJbnN0YW5jZU9mRm9yT2JqZWN0KE5vZGUq
LCBHUFJSZWcgdmFsdWVSZWcsIEdQUlJlZyBwcm90b3R5cGVSZWcsIEdQUlJlZyBzY3JhdGNoUmVn
LCBHUFJSZWcgc2NyYXRjaDJSZWcpCiB7CiAgICAgLy8gQ2hlY2sgdGhhdCBwcm90b3R5cGUgaXMg
YW4gb2JqZWN0LgotICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFkVHlwZSwgSlNWYWx1ZVJlZ3MoKSwg
MCwgbV9qaXQuYnJhbmNoSWZDZWxsTm90T2JqZWN0KHByb3RvdHlwZVJlZykpOworICAgIHNwZWN1
bGF0aW9uQ2hlY2soQmFkVHlwZSwgSlNWYWx1ZVJlZ3MoKSwgMCwgbV9qaXQuYnJhbmNoSWZOb3RP
YmplY3QocHJvdG90eXBlUmVnKSk7CiAgICAgCiAgICAgLy8gSW5pdGlhbGl6ZSBzY3JhdGNoUmVn
IHdpdGggdGhlIHZhbHVlIGJlaW5nIGNoZWNrZWQuCiAgICAgbV9qaXQubW92ZSh2YWx1ZVJlZywg
c2NyYXRjaFJlZyk7CkBAIC0yNTU0LDcgKzI1NTQsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpj
b21waWxlSW5zdGFuY2VPZkZvCiAgICAgbV9qaXQubG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRk
cmVzcyhzY3JhdGNoUmVnLCBTdHJ1Y3R1cmU6OnByb3RvdHlwZU9mZnNldCgpICsgQ2VsbFBheWxv
YWRPZmZzZXQpLCBzY3JhdGNoUmVnKTsKICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBpc0luc3Rh
bmNlID0gbV9qaXQuYnJhbmNoUHRyKE1hY3JvQXNzZW1ibGVyOjpFcXVhbCwgc2NyYXRjaFJlZywg
cHJvdG90eXBlUmVnKTsKICNpZiBVU0UoSlNWQUxVRTY0KQotICAgIGJyYW5jaElzQ2VsbChKU1Zh
bHVlUmVncyhzY3JhdGNoUmVnKSkubGlua1RvKGxvb3AsICZtX2ppdCk7CisgICAgbV9qaXQuYnJh
bmNoSWZDZWxsKEpTVmFsdWVSZWdzKHNjcmF0Y2hSZWcpKS5saW5rVG8obG9vcCwgJm1faml0KTsK
ICNlbHNlCiAgICAgbV9qaXQuYnJhbmNoVGVzdFB0cihNYWNyb0Fzc2VtYmxlcjo6Tm9uWmVybywg
c2NyYXRjaFJlZykubGlua1RvKGxvb3AsICZtX2ppdCk7CiAjZW5kaWYKQEAgLTI1OTMsNyArMjU5
Myw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVJbnN0YW5jZU9mKE4KICAgICAgICAg
R1BSUmVnIHNjcmF0Y2hSZWcgPSBzY3JhdGNoLmdwcigpOwogICAgICAgICBHUFJSZWcgc2NyYXRj
aDJSZWcgPSBzY3JhdGNoMi5ncHIoKTsKICAgICAgICAgCi0gICAgICAgIE1hY3JvQXNzZW1ibGVy
OjpKdW1wIGlzQ2VsbCA9IGJyYW5jaElzQ2VsbCh2YWx1ZS5qc1ZhbHVlUmVncygpKTsKKyAgICAg
ICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXAgaXNDZWxsID0gbV9qaXQuYnJhbmNoSWZDZWxsKHZhbHVl
LmpzVmFsdWVSZWdzKCkpOwogICAgICAgICBHUFJSZWcgdmFsdWVSZWcgPSB2YWx1ZS5qc1ZhbHVl
UmVncygpLnBheWxvYWRHUFIoKTsKICAgICAgICAgbW92ZUZhbHNlVG8oc2NyYXRjaFJlZyk7CiAK
QEAgLTM5NTgsMTQgKzM5NTgsMTQgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVN0cmlu
Z1RvVW50eQogICAgIEpJVENvbXBpbGVyOjpKdW1wTGlzdCBmYXN0VHJ1ZTsKICAgICBKSVRDb21w
aWxlcjo6SnVtcExpc3QgZmFzdEZhbHNlOwogICAgIAotICAgIGZhc3RGYWxzZS5hcHBlbmQoYnJh
bmNoTm90Q2VsbChyaWdodFJlZ3MpKTsKKyAgICBmYXN0RmFsc2UuYXBwZW5kKG1faml0LmJyYW5j
aElmTm90Q2VsbChyaWdodFJlZ3MpKTsKICAgICAKICAgICAvLyBJdCdzIHNhZmUgdG8gYnJhbmNo
IGFyb3VuZCB0aGUgdHlwZSBjaGVjayBiZWxvdywgc2luY2UgcHJvdmluZyB0aGF0IHRoZSB2YWx1
ZXMgYXJlCiAgICAgLy8gZXF1YWwgZG9lcyBpbmRlZWQgcHJvdmUgdGhhdCB0aGUgcmlnaHQgdmFs
dWUgaXMgYSBzdHJpbmcuCiAgICAgZmFzdFRydWUuYXBwZW5kKG1faml0LmJyYW5jaFB0cigKICAg
ICAgICAgTWFjcm9Bc3NlbWJsZXI6OkVxdWFsLCBsZWZ0R1BSLCByaWdodFJlZ3MucGF5bG9hZEdQ
UigpKSk7CiAgICAgCi0gICAgZmFzdEZhbHNlLmFwcGVuZChicmFuY2hOb3RTdHJpbmcocmlnaHRS
ZWdzLnBheWxvYWRHUFIoKSkpOworICAgIGZhc3RGYWxzZS5hcHBlbmQobV9qaXQuYnJhbmNoSWZO
b3RDZWxsKHJpZ2h0UmVncy5wYXlsb2FkR1BSKCkpKTsKICAgICAKICAgICBjb21waWxlU3RyaW5n
RXF1YWxpdHkoCiAgICAgICAgIG5vZGUsIGxlZnRHUFIsIHJpZ2h0UmVncy5wYXlsb2FkR1BSKCks
IGxlbmd0aEdQUiwgbGVmdFRlbXBHUFIsIHJpZ2h0VGVtcEdQUiwgbGVmdFRlbXAyR1BSLApAQCAt
NDAxMiw4ICs0MDEyLDggQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVN0cmluZ0lkZW50
VAogCiAgICAgbW92ZUZhbHNlVG8ocmlnaHRUZW1wR1BSKTsKICAgICBKSVRDb21waWxlcjo6SnVt
cExpc3Qgbm90U3RyaW5nOwotICAgIG5vdFN0cmluZy5hcHBlbmQoYnJhbmNoTm90Q2VsbChyaWdo
dFJlZ3MpKTsKLSAgICBub3RTdHJpbmcuYXBwZW5kKGJyYW5jaE5vdFN0cmluZyhyaWdodFJlZ3Mu
cGF5bG9hZEdQUigpKSk7CisgICAgbm90U3RyaW5nLmFwcGVuZChtX2ppdC5icmFuY2hJZk5vdENl
bGwocmlnaHRSZWdzKSk7CisgICAgbm90U3RyaW5nLmFwcGVuZChtX2ppdC5icmFuY2hJZk5vdFN0
cmluZyhyaWdodFJlZ3MucGF5bG9hZEdQUigpKSk7CiAgICAgCiAgICAgc3BlY3VsYXRlU3RyaW5n
SWRlbnRBbmRMb2FkU3RvcmFnZShub3RTdHJpbmdWYXJFZGdlLCByaWdodFJlZ3MucGF5bG9hZEdQ
UigpLCByaWdodFRlbXBHUFIpOwogICAgIApAQCAtNDIzNCw3ICs0MjM0LDcgQEAgdm9pZCBTcGVj
dWxhdGl2ZUpJVDo6Y29tcGlsZUdldEJ5VmFsT25TYwogICAgICAgICAgICAgYmFzZVJlZywgc2Ny
YXRjaDJSZWcsIE1hY3JvQXNzZW1ibGVyOjpUaW1lc0VpZ2h0LAogICAgICAgICAgICAgU2NvcGVk
QXJndW1lbnRzOjpvdmVyZmxvd1N0b3JhZ2VPZmZzZXQoKSksCiAgICAgICAgIHJlc3VsdFJlZ3Mp
OwotICAgIHNwZWN1bGF0aW9uQ2hlY2soRXhvdGljT2JqZWN0TW9kZSwgSlNWYWx1ZVNvdXJjZSgp
LCBudWxscHRyLCBtX2ppdC5icmFuY2hJc0VtcHR5KHJlc3VsdFJlZ3MpKTsKKyAgICBzcGVjdWxh
dGlvbkNoZWNrKEV4b3RpY09iamVjdE1vZGUsIEpTVmFsdWVTb3VyY2UoKSwgbnVsbHB0ciwgbV9q
aXQuYnJhbmNoSWZFbXB0eShyZXN1bHRSZWdzKSk7CiAgICAgCiAgICAgZG9uZS5saW5rKCZtX2pp
dCk7CiAgICAgCkBAIC00OTY1LDcgKzQ5NjUsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21w
aWxlVG9TdHJpbmdPckNhCiAgICAgICAgIGZsdXNoUmVnaXN0ZXJzKCk7CiAgICAgICAgIEpJVENv
bXBpbGVyOjpKdW1wIGRvbmU7CiAgICAgICAgIGlmIChub2RlLT5jaGlsZDEoKS0+cHJlZGljdGlv
bigpICYgU3BlY1N0cmluZykgewotICAgICAgICAgICAgSklUQ29tcGlsZXI6Okp1bXAgbmVlZENh
bGwgPSBicmFuY2hOb3RTdHJpbmcob3AxR1BSKTsKKyAgICAgICAgICAgIEpJVENvbXBpbGVyOjpK
dW1wIG5lZWRDYWxsID0gbV9qaXQuYnJhbmNoSWZOb3RTdHJpbmcob3AxR1BSKTsKICAgICAgICAg
ICAgIG1faml0Lm1vdmUob3AxR1BSLCByZXN1bHRHUFIpOwogICAgICAgICAgICAgZG9uZSA9IG1f
aml0Lmp1bXAoKTsKICAgICAgICAgICAgIG5lZWRDYWxsLmxpbmsoJm1faml0KTsKQEAgLTUxOTQs
NyArNTE5NCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OnNwZWN1bGF0ZU9iamVjdChFZGcKICAg
ICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBvcGVyYW5kKHRoaXMsIGVkZ2UpOwogICAgIEdQUlJlZyBn
cHIgPSBvcGVyYW5kLmdwcigpOwogICAgIERGR19UWVBFX0NIRUNLKAotICAgICAgICBKU1ZhbHVl
U291cmNlOjp1bmJveGVkQ2VsbChncHIpLCBlZGdlLCBTcGVjT2JqZWN0LCBicmFuY2hOb3RPYmpl
Y3QoZ3ByKSk7CisgICAgICAgIEpTVmFsdWVTb3VyY2U6OnVuYm94ZWRDZWxsKGdwciksIGVkZ2Us
IFNwZWNPYmplY3QsIG1faml0LmJyYW5jaElmTm90T2JqZWN0KGdwcikpOwogfQogCiB2b2lkIFNw
ZWN1bGF0aXZlSklUOjpzcGVjdWxhdGVGdW5jdGlvbihFZGdlIGVkZ2UpCkBAIC01MjIzLDE2ICs1
MjIzLDE2IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OnNwZWN1bGF0ZU9iamVjdE9yT3QKICAgICBK
U1ZhbHVlT3BlcmFuZCBvcGVyYW5kKHRoaXMsIGVkZ2UsIE1hbnVhbE9wZXJhbmRTcGVjdWxhdGlv
bik7CiAgICAgR1BSVGVtcG9yYXJ5IHRlbXAodGhpcyk7CiAgICAgR1BSUmVnIHRlbXBHUFIgPSB0
ZW1wLmdwcigpOwotICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIG5vdENlbGwgPSBicmFuY2hOb3RD
ZWxsKG9wZXJhbmQuanNWYWx1ZVJlZ3MoKSk7CisgICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXAgbm90
Q2VsbCA9IG1faml0LmJyYW5jaElmTm90Q2VsbChvcGVyYW5kLmpzVmFsdWVSZWdzKCkpOwogICAg
IEdQUlJlZyBncHIgPSBvcGVyYW5kLmpzVmFsdWVSZWdzKCkucGF5bG9hZEdQUigpOwogICAgIERG
R19UWVBFX0NIRUNLKAotICAgICAgICBvcGVyYW5kLmpzVmFsdWVSZWdzKCksIGVkZ2UsICh+U3Bl
Y0NlbGwpIHwgU3BlY09iamVjdCwgYnJhbmNoTm90T2JqZWN0KGdwcikpOworICAgICAgICBvcGVy
YW5kLmpzVmFsdWVSZWdzKCksIGVkZ2UsICh+U3BlY0NlbGwpIHwgU3BlY09iamVjdCwgbV9qaXQu
YnJhbmNoSWZOb3RPYmplY3QoZ3ByKSk7CiAgICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXAgZG9uZSA9
IG1faml0Lmp1bXAoKTsKICAgICBub3RDZWxsLmxpbmsoJm1faml0KTsKICAgICBpZiAobmVlZHNU
eXBlQ2hlY2soZWRnZSwgU3BlY0NlbGwgfCBTcGVjT3RoZXIpKSB7CiAgICAgICAgIHR5cGVDaGVj
aygKICAgICAgICAgICAgIG9wZXJhbmQuanNWYWx1ZVJlZ3MoKSwgZWRnZSwgU3BlY0NlbGwgfCBT
cGVjT3RoZXIsCi0gICAgICAgICAgICBicmFuY2hOb3RPdGhlcihvcGVyYW5kLmpzVmFsdWVSZWdz
KCksIHRlbXBHUFIpKTsKKyAgICAgICAgICAgIG1faml0LmJyYW5jaElmTm90T3RoZXIob3BlcmFu
ZC5qc1ZhbHVlUmVncygpLCB0ZW1wR1BSKSk7CiAgICAgfQogICAgIGRvbmUubGluaygmbV9qaXQp
OwogfQpAQCAtNTI0MCw3ICs1MjQwLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6c3BlY3VsYXRl
T2JqZWN0T3JPdAogdm9pZCBTcGVjdWxhdGl2ZUpJVDo6c3BlY3VsYXRlU3RyaW5nKEVkZ2UgZWRn
ZSwgR1BSUmVnIGNlbGwpCiB7CiAgICAgREZHX1RZUEVfQ0hFQ0soCi0gICAgICAgIEpTVmFsdWVT
b3VyY2U6OnVuYm94ZWRDZWxsKGNlbGwpLCBlZGdlLCBTcGVjU3RyaW5nIHwgflNwZWNDZWxsLCBi
cmFuY2hOb3RTdHJpbmcoY2VsbCkpOworICAgICAgICBKU1ZhbHVlU291cmNlOjp1bmJveGVkQ2Vs
bChjZWxsKSwgZWRnZSwgU3BlY1N0cmluZyB8IH5TcGVjQ2VsbCwgbV9qaXQuYnJhbmNoSWZOb3RT
dHJpbmcoY2VsbCkpOwogfQogCiB2b2lkIFNwZWN1bGF0aXZlSklUOjpzcGVjdWxhdGVTdHJpbmdJ
ZGVudEFuZExvYWRTdG9yYWdlKEVkZ2UgZWRnZSwgR1BSUmVnIHN0cmluZywgR1BSUmVnIHN0b3Jh
Z2UpCkBAIC01MzQyLDEwICs1MzQyLDEwIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OnNwZWN1bGF0
ZU5vdFN0cmluZ1YKICAgICBHUFJUZW1wb3JhcnkgdGVtcCh0aGlzKTsKICAgICBHUFJSZWcgdGVt
cEdQUiA9IHRlbXAuZ3ByKCk7CiAgICAgCi0gICAgSklUQ29tcGlsZXI6Okp1bXAgbm90Q2VsbCA9
IGJyYW5jaE5vdENlbGwob3BlcmFuZC5qc1ZhbHVlUmVncygpKTsKKyAgICBKSVRDb21waWxlcjo6
SnVtcCBub3RDZWxsID0gbV9qaXQuYnJhbmNoSWZOb3RDZWxsKG9wZXJhbmQuanNWYWx1ZVJlZ3Mo
KSk7CiAgICAgR1BSUmVnIGNlbGwgPSBvcGVyYW5kLmpzVmFsdWVSZWdzKCkucGF5bG9hZEdQUigp
OwogICAgIAotICAgIEpJVENvbXBpbGVyOjpKdW1wIG5vdFN0cmluZyA9IGJyYW5jaE5vdFN0cmlu
ZyhjZWxsKTsKKyAgICBKSVRDb21waWxlcjo6SnVtcCBub3RTdHJpbmcgPSBtX2ppdC5icmFuY2hJ
Zk5vdFN0cmluZyhjZWxsKTsKICAgICAKICAgICBzcGVjdWxhdGVTdHJpbmdJZGVudEFuZExvYWRT
dG9yYWdlKGVkZ2UsIGNlbGwsIHRlbXBHUFIpOwogICAgIApAQCAtNTM1OSw3ICs1MzU5LDcgQEAg
dm9pZCBTcGVjdWxhdGl2ZUpJVDo6c3BlY3VsYXRlTm90Q2VsbChFZAogICAgICAgICByZXR1cm47
CiAgICAgCiAgICAgSlNWYWx1ZU9wZXJhbmQgb3BlcmFuZCh0aGlzLCBlZGdlLCBNYW51YWxPcGVy
YW5kU3BlY3VsYXRpb24pOyAKLSAgICB0eXBlQ2hlY2sob3BlcmFuZC5qc1ZhbHVlUmVncygpLCBl
ZGdlLCB+U3BlY0NlbGwsIGJyYW5jaElzQ2VsbChvcGVyYW5kLmpzVmFsdWVSZWdzKCkpKTsKKyAg
ICB0eXBlQ2hlY2sob3BlcmFuZC5qc1ZhbHVlUmVncygpLCBlZGdlLCB+U3BlY0NlbGwsIG1faml0
LmJyYW5jaElmQ2VsbChvcGVyYW5kLmpzVmFsdWVSZWdzKCkpKTsKIH0KIAogdm9pZCBTcGVjdWxh
dGl2ZUpJVDo6c3BlY3VsYXRlT3RoZXIoRWRnZSBlZGdlKQpAQCAtNTM3Miw3ICs1MzcyLDcgQEAg
dm9pZCBTcGVjdWxhdGl2ZUpJVDo6c3BlY3VsYXRlT3RoZXIoRWRnZQogICAgIEdQUlJlZyB0ZW1w
R1BSID0gdGVtcC5ncHIoKTsKICAgICB0eXBlQ2hlY2soCiAgICAgICAgIG9wZXJhbmQuanNWYWx1
ZVJlZ3MoKSwgZWRnZSwgU3BlY090aGVyLAotICAgICAgICBicmFuY2hOb3RPdGhlcihvcGVyYW5k
LmpzVmFsdWVSZWdzKCksIHRlbXBHUFIpKTsKKyAgICAgICAgbV9qaXQuYnJhbmNoSWZOb3RPdGhl
cihvcGVyYW5kLmpzVmFsdWVSZWdzKCksIHRlbXBHUFIpKTsKIH0KIAogdm9pZCBTcGVjdWxhdGl2
ZUpJVDo6c3BlY3VsYXRlTWlzYyhFZGdlIGVkZ2UsIEpTVmFsdWVSZWdzIHJlZ3MpCkBAIC01NjE5
LDkgKzU2MTksOSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjplbWl0U3dpdGNoQ2hhcihOb2RlCiAg
ICAgICAgIAogICAgICAgICBvcDEudXNlKCk7CiAgICAgICAgIAotICAgICAgICBhZGRCcmFuY2go
YnJhbmNoTm90Q2VsbChvcDFSZWdzKSwgZGF0YS0+ZmFsbFRocm91Z2guYmxvY2spOworICAgICAg
ICBhZGRCcmFuY2gobV9qaXQuYnJhbmNoSWZOb3RDZWxsKG9wMVJlZ3MpLCBkYXRhLT5mYWxsVGhy
b3VnaC5ibG9jayk7CiAgICAgICAgIAotICAgICAgICBhZGRCcmFuY2goYnJhbmNoTm90U3RyaW5n
KG9wMVJlZ3MucGF5bG9hZEdQUigpKSwgZGF0YS0+ZmFsbFRocm91Z2guYmxvY2spOworICAgICAg
ICBhZGRCcmFuY2gobV9qaXQuYnJhbmNoSWZOb3RTdHJpbmcob3AxUmVncy5wYXlsb2FkR1BSKCkp
LCBkYXRhLT5mYWxsVGhyb3VnaC5ibG9jayk7CiAgICAgICAgIAogICAgICAgICBlbWl0U3dpdGNo
Q2hhclN0cmluZ0p1bXAoZGF0YSwgb3AxUmVncy5wYXlsb2FkR1BSKCksIHRlbXBHUFIpOwogICAg
ICAgICBub1Jlc3VsdChub2RlLCBVc2VDaGlsZHJlbkNhbGxlZEV4cGxpY2l0bHkpOwpAQCAtNTg5
Miw5ICs1ODkyLDkgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6ZW1pdFN3aXRjaFN0cmluZyhObwog
ICAgICAgICAKICAgICAgICAgb3AxLnVzZSgpOwogICAgICAgICAKLSAgICAgICAgYWRkQnJhbmNo
KGJyYW5jaE5vdENlbGwob3AxUmVncyksIGRhdGEtPmZhbGxUaHJvdWdoLmJsb2NrKTsKKyAgICAg
ICAgYWRkQnJhbmNoKG1faml0LmJyYW5jaElmTm90Q2VsbChvcDFSZWdzKSwgZGF0YS0+ZmFsbFRo
cm91Z2guYmxvY2spOwogICAgICAgICAKLSAgICAgICAgYWRkQnJhbmNoKGJyYW5jaE5vdFN0cmlu
ZyhvcDFSZWdzLnBheWxvYWRHUFIoKSksIGRhdGEtPmZhbGxUaHJvdWdoLmJsb2NrKTsKKyAgICAg
ICAgYWRkQnJhbmNoKG1faml0LmJyYW5jaElmTm90U3RyaW5nKG9wMVJlZ3MucGF5bG9hZEdQUigp
KSwgZGF0YS0+ZmFsbFRocm91Z2guYmxvY2spOwogICAgICAgICAKICAgICAgICAgZW1pdFN3aXRj
aFN0cmluZ09uU3RyaW5nKGRhdGEsIG9wMVJlZ3MucGF5bG9hZEdQUigpKTsKICAgICAgICAgbm9S
ZXN1bHQobm9kZSwgVXNlQ2hpbGRyZW5DYWxsZWRFeHBsaWNpdGx5KTsKQEAgLTU5NDQsMzggKzU5
NDQsNiBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpsaW5rQnJhbmNoZXMoKQogICAgIH0KIH0KIAot
SklUQ29tcGlsZXI6Okp1bXAgU3BlY3VsYXRpdmVKSVQ6OmJyYW5jaElzT2JqZWN0KEdQUlJlZyBj
ZWxsR1BSKQotewotICAgIHJldHVybiBtX2ppdC5icmFuY2g4KAotICAgICAgICBNYWNyb0Fzc2Vt
Ymxlcjo6QWJvdmVPckVxdWFsLAotICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhjZWxs
R1BSLCBKU0NlbGw6OnR5cGVJbmZvVHlwZU9mZnNldCgpKSwKLSAgICAgICAgTWFjcm9Bc3NlbWJs
ZXI6OlRydXN0ZWRJbW0zMihPYmplY3RUeXBlKSk7Ci19Ci0KLUpJVENvbXBpbGVyOjpKdW1wIFNw
ZWN1bGF0aXZlSklUOjpicmFuY2hOb3RPYmplY3QoR1BSUmVnIGNlbGxHUFIpCi17Ci0gICAgcmV0
dXJuIG1faml0LmJyYW5jaDgoCi0gICAgICAgIE1hY3JvQXNzZW1ibGVyOjpCZWxvdywKLSAgICAg
ICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoY2VsbEdQUiwgSlNDZWxsOjp0eXBlSW5mb1R5cGVP
ZmZzZXQoKSksCi0gICAgICAgIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tMzIoT2JqZWN0VHlw
ZSkpOwotfQotCi1KSVRDb21waWxlcjo6SnVtcCBTcGVjdWxhdGl2ZUpJVDo6YnJhbmNoSXNTdHJp
bmcoR1BSUmVnIGNlbGxHUFIpCi17Ci0gICAgcmV0dXJuIG1faml0LmJyYW5jaFN0cnVjdHVyZVB0
cigKLSAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkVxdWFsLAotICAgICAgICBNYWNyb0Fzc2VtYmxl
cjo6QWRkcmVzcyhjZWxsR1BSLCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkpLAotICAgICAg
ICBtX2ppdC52bSgpLT5zdHJpbmdTdHJ1Y3R1cmUuZ2V0KCkpOwotfQotCi1KSVRDb21waWxlcjo6
SnVtcCBTcGVjdWxhdGl2ZUpJVDo6YnJhbmNoTm90U3RyaW5nKEdQUlJlZyBjZWxsR1BSKQotewot
ICAgIHJldHVybiBtX2ppdC5icmFuY2hTdHJ1Y3R1cmVQdHIoCi0gICAgICAgIE1hY3JvQXNzZW1i
bGVyOjpOb3RFcXVhbCwKLSAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoY2VsbEdQUiwg
SlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSwKLSAgICAgICAgbV9qaXQudm0oKS0+c3RyaW5n
U3RydWN0dXJlLmdldCgpKTsKLX0KLQogI2lmIEVOQUJMRShHR0MpCiB2b2lkIFNwZWN1bGF0aXZl
SklUOjpjb21waWxlU3RvcmVCYXJyaWVyKE5vZGUqIG5vZGUpCiB7CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCShyZXZpc2lvbiAxODM2NTAp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgJKHdvcmtp
bmcgY29weSkKQEAgLTIyMTUsMTUgKzIyMTUsNiBAQCBwdWJsaWM6CiAgICAgdm9pZCBjb21waWxl
Tm90aWZ5V3JpdGUoTm9kZSopOwogICAgIGJvb2wgY29tcGlsZVJlZ0V4cEV4ZWMoTm9kZSopOwog
ICAgIAotICAgIEpJVENvbXBpbGVyOjpKdW1wIGJyYW5jaElzQ2VsbChKU1ZhbHVlUmVncyk7Ci0g
ICAgSklUQ29tcGlsZXI6Okp1bXAgYnJhbmNoTm90Q2VsbChKU1ZhbHVlUmVncyk7Ci0gICAgSklU
Q29tcGlsZXI6Okp1bXAgYnJhbmNoSXNPdGhlcihKU1ZhbHVlUmVncywgR1BSUmVnIHRlbXBHUFIp
OwotICAgIEpJVENvbXBpbGVyOjpKdW1wIGJyYW5jaE5vdE90aGVyKEpTVmFsdWVSZWdzLCBHUFJS
ZWcgdGVtcEdQUik7Ci0gICAgSklUQ29tcGlsZXI6Okp1bXAgYnJhbmNoSXNPYmplY3QoR1BSUmVn
IGNlbGxHUFIpOwotICAgIEpJVENvbXBpbGVyOjpKdW1wIGJyYW5jaE5vdE9iamVjdChHUFJSZWcg
Y2VsbEdQUik7Ci0gICAgSklUQ29tcGlsZXI6Okp1bXAgYnJhbmNoSXNTdHJpbmcoR1BSUmVnIGNl
bGxHUFIpOwotICAgIEpJVENvbXBpbGVyOjpKdW1wIGJyYW5jaE5vdFN0cmluZyhHUFJSZWcgY2Vs
bEdQUik7Ci0gICAgCiAgICAgdm9pZCBtb3ZlVHJ1ZVRvKEdQUlJlZyk7CiAgICAgdm9pZCBtb3Zl
RmFsc2VUbyhHUFJSZWcpOwogICAgIHZvaWQgYmxlc3NCb29sZWFuKEdQUlJlZyk7CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmgJKHJldmlzaW9uIDE4
MzY1MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmgJKHdv
cmtpbmcgY29weSkKQEAgLTM4NSw3ICszODUsNzcgQEAgcHVibGljOgogI2VuZGlmCiAgICAgfQog
ICAgIAotICAgIEp1bXAgYnJhbmNoSXNFbXB0eShKU1ZhbHVlUmVncyByZWdzKQorICAgIEp1bXAg
YnJhbmNoSWZDZWxsKEdQUlJlZyByZWcpCisgICAgeworI2lmIFVTRShKU1ZBTFVFNjQpCisgICAg
ICAgIHJldHVybiBicmFuY2hUZXN0NjQoTWFjcm9Bc3NlbWJsZXI6Olplcm8sIHJlZywgR1BSSW5m
bzo6dGFnTWFza1JlZ2lzdGVyKTsKKyNlbHNlCisgICAgICAgIHJldHVybiBicmFuY2gzMihNYWNy
b0Fzc2VtYmxlcjo6RXF1YWwsIHJlZywgVHJ1c3RlZEltbTMyKEpTVmFsdWU6OkNlbGxUYWcpKTsK
KyNlbmRpZgorICAgIH0KKyAgICBKdW1wIGJyYW5jaElmQ2VsbChKU1ZhbHVlUmVncyByZWdzKQor
ICAgIHsKKyNpZiBVU0UoSlNWQUxVRTY0KQorICAgICAgICByZXR1cm4gYnJhbmNoSWZDZWxsKHJl
Z3MuZ3ByKCkpOworI2Vsc2UKKyAgICAgICAgcmV0dXJuIGJyYW5jaElmQ2VsbChyZWdzLnRhZ0dQ
UigpKTsKKyNlbmRpZgorICAgIH0KKyAgICAKKyAgICBKdW1wIGJyYW5jaElmT3RoZXIoSlNWYWx1
ZVJlZ3MgcmVncywgR1BSUmVnIHRlbXBHUFIpCisgICAgeworI2lmIFVTRShKU1ZBTFVFNjQpCisg
ICAgICAgIG1vdmUocmVncy5ncHIoKSwgdGVtcEdQUik7CisgICAgICAgIGFuZDY0KFRydXN0ZWRJ
bW0zMih+VGFnQml0VW5kZWZpbmVkKSwgdGVtcEdQUik7CisgICAgICAgIHJldHVybiBicmFuY2g2
NChFcXVhbCwgdGVtcEdQUiwgVHJ1c3RlZEltbTY0KFZhbHVlTnVsbCkpOworI2Vsc2UKKyAgICAg
ICAgb3IzMihUcnVzdGVkSW1tMzIoMSksIHJlZ3MudGFnR1BSKCksIHRlbXBHUFIpOworICAgICAg
ICByZXR1cm4gYnJhbmNoMzIoRXF1YWwsIHRlbXBHUFIsIFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpO
dWxsVGFnKSk7CisjZW5kaWYKKyAgICB9CisgICAgCisgICAgSnVtcCBicmFuY2hJZk5vdE90aGVy
KEpTVmFsdWVSZWdzIHJlZ3MsIEdQUlJlZyB0ZW1wR1BSKQorICAgIHsKKyNpZiBVU0UoSlNWQUxV
RTY0KQorICAgICAgICBtb3ZlKHJlZ3MuZ3ByKCksIHRlbXBHUFIpOworICAgICAgICBhbmQ2NChU
cnVzdGVkSW1tMzIoflRhZ0JpdFVuZGVmaW5lZCksIHRlbXBHUFIpOworICAgICAgICByZXR1cm4g
YnJhbmNoNjQoTm90RXF1YWwsIHRlbXBHUFIsIFRydXN0ZWRJbW02NChWYWx1ZU51bGwpKTsKKyNl
bHNlCisgICAgICAgIG9yMzIoVHJ1c3RlZEltbTMyKDEpLCByZWdzLnRhZ0dQUigpLCB0ZW1wR1BS
KTsKKyAgICAgICAgcmV0dXJuIGJyYW5jaDMyKE5vdEVxdWFsLCB0ZW1wR1BSLCBUcnVzdGVkSW1t
MzIoSlNWYWx1ZTo6TnVsbFRhZykpOworI2VuZGlmCisgICAgfQorICAgIAorICAgIEp1bXAgYnJh
bmNoSWZPYmplY3QoR1BSUmVnIGNlbGxHUFIpCisgICAgeworICAgICAgICByZXR1cm4gYnJhbmNo
OCgKKyAgICAgICAgICAgIEFib3ZlT3JFcXVhbCwgQWRkcmVzcyhjZWxsR1BSLCBKU0NlbGw6OnR5
cGVJbmZvVHlwZU9mZnNldCgpKSwgVHJ1c3RlZEltbTMyKE9iamVjdFR5cGUpKTsKKyAgICB9Cisg
ICAgCisgICAgSnVtcCBicmFuY2hJZk5vdE9iamVjdChHUFJSZWcgY2VsbEdQUikKKyAgICB7Cisg
ICAgICAgIHJldHVybiBicmFuY2g4KAorICAgICAgICAgICAgQmVsb3csIEFkZHJlc3MoY2VsbEdQ
UiwgSlNDZWxsOjp0eXBlSW5mb1R5cGVPZmZzZXQoKSksIFRydXN0ZWRJbW0zMihPYmplY3RUeXBl
KSk7CisgICAgfQorICAgIAorICAgIEp1bXAgYnJhbmNoSWZUeXBlKEdQUlJlZyBjZWxsR1BSLCBK
U1R5cGUgdHlwZSkKKyAgICB7CisgICAgICAgIHJldHVybiBicmFuY2g4KEVxdWFsLCBBZGRyZXNz
KGNlbGxHUFIsIEpTQ2VsbDo6dHlwZUluZm9UeXBlT2Zmc2V0KCkpLCBUcnVzdGVkSW1tMzIodHlw
ZSkpOworICAgIH0KKyAgICAKKyAgICBKdW1wIGJyYW5jaElmTm90VHlwZShHUFJSZWcgY2VsbEdQ
UiwgSlNUeXBlIHR5cGUpCisgICAgeworICAgICAgICByZXR1cm4gYnJhbmNoOChOb3RFcXVhbCwg
QWRkcmVzcyhjZWxsR1BSLCBKU0NlbGw6OnR5cGVJbmZvVHlwZU9mZnNldCgpKSwgVHJ1c3RlZElt
bTMyKHR5cGUpKTsKKyAgICB9CisgICAgCisgICAgSnVtcCBicmFuY2hJZlN0cmluZyhHUFJSZWcg
Y2VsbEdQUikgeyByZXR1cm4gYnJhbmNoSWZUeXBlKGNlbGxHUFIsIFN0cmluZ1R5cGUpOyB9Cisg
ICAgSnVtcCBicmFuY2hJZk5vdFN0cmluZyhHUFJSZWcgY2VsbEdQUikgeyByZXR1cm4gYnJhbmNo
SWZOb3RUeXBlKGNlbGxHUFIsIFN0cmluZ1R5cGUpOyB9CisgICAgSnVtcCBicmFuY2hJZlN5bWJv
bChHUFJSZWcgY2VsbEdQUikgeyByZXR1cm4gYnJhbmNoSWZUeXBlKGNlbGxHUFIsIFN5bWJvbFR5
cGUpOyB9CisgICAgSnVtcCBicmFuY2hJZk5vdFN5bWJvbChHUFJSZWcgY2VsbEdQUikgeyByZXR1
cm4gYnJhbmNoSWZOb3RUeXBlKGNlbGxHUFIsIFN5bWJvbFR5cGUpOyB9CisgICAgSnVtcCBicmFu
Y2hJZkZ1bmN0aW9uKEdQUlJlZyBjZWxsR1BSKSB7IHJldHVybiBicmFuY2hJZlR5cGUoY2VsbEdQ
UiwgSlNGdW5jdGlvblR5cGUpOyB9CisgICAgSnVtcCBicmFuY2hJZk5vdEZ1bmN0aW9uKEdQUlJl
ZyBjZWxsR1BSKSB7IHJldHVybiBicmFuY2hJZk5vdFR5cGUoY2VsbEdQUiwgSlNGdW5jdGlvblR5
cGUpOyB9CisgICAgCisgICAgSnVtcCBicmFuY2hJZkVtcHR5KEpTVmFsdWVSZWdzIHJlZ3MpCiAg
ICAgewogI2lmIFVTRShKU1ZBTFVFNjQpCiAgICAgICAgIHJldHVybiBicmFuY2hUZXN0NjQoWmVy
bywgcmVncy5ncHIoKSk7CkBAIC00NzUsMTEgKzU0NSw2IEBAIHB1YmxpYzoKICAgICAgICAgcmV0
dXJuIGNhbGxlZUZyYW1lU2xvdCgwKS53aXRoT2Zmc2V0KENhbGxGcmFtZTo6Y2FsbGVyRnJhbWVP
ZmZzZXQoKSk7CiAgICAgfQogCi0gICAgSnVtcCBicmFuY2hJZkNlbGxOb3RPYmplY3QoR1BSUmVn
IGNlbGxSZWcpCi0gICAgewotICAgICAgICByZXR1cm4gYnJhbmNoOChCZWxvdywgQWRkcmVzcyhj
ZWxsUmVnLCBKU0NlbGw6OnR5cGVJbmZvVHlwZU9mZnNldCgpKSwgVHJ1c3RlZEltbTMyKE9iamVj
dFR5cGUpKTsKLSAgICB9Ci0KICAgICBzdGF0aWMgR1BSUmVnIHNlbGVjdFNjcmF0Y2hHUFIoR1BS
UmVnIHByZXNlcnZlMSA9IEludmFsaWRHUFJSZWcsIEdQUlJlZyBwcmVzZXJ2ZTIgPSBJbnZhbGlk
R1BSUmVnLCBHUFJSZWcgcHJlc2VydmUzID0gSW52YWxpZEdQUlJlZywgR1BSUmVnIHByZXNlcnZl
NCA9IEludmFsaWRHUFJSZWcsIEdQUlJlZyBwcmVzZXJ2ZTUgPSBJbnZhbGlkR1BSUmVnKQogICAg
IHsKICAgICAgICAgaWYgKHByZXNlcnZlMSAhPSBHUFJJbmZvOjpyZWdUMCAmJiBwcmVzZXJ2ZTIg
IT0gR1BSSW5mbzo6cmVnVDAgJiYgcHJlc2VydmUzICE9IEdQUkluZm86OnJlZ1QwICYmIHByZXNl
cnZlNCAhPSBHUFJJbmZvOjpyZWdUMCAmJiBwcmVzZXJ2ZTUgIT0gR1BSSW5mbzo6cmVnVDApCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFByb3BlcnR5QWNjZXNzLmNw
cAkocmV2aXNpb24gMTgzNjUwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9w
ZXJ0eUFjY2Vzcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTExMzAsNyArMTEzMCw3IEBAIEpJVDo6
SnVtcExpc3QgSklUOjplbWl0U2NvcGVkQXJndW1lbnRzR2UKICAgICBzdWIzMihwcm9wZXJ0eSwg
c2NyYXRjaDIpOwogICAgIG5lZzMyKHNjcmF0Y2gyKTsKICAgICBsb2FkVmFsdWUoQmFzZUluZGV4
KGJhc2UsIHNjcmF0Y2gyLCBUaW1lc0VpZ2h0LCBTY29wZWRBcmd1bWVudHM6Om92ZXJmbG93U3Rv
cmFnZU9mZnNldCgpKSwgcmVzdWx0KTsKLSAgICBzbG93Q2FzZXMuYXBwZW5kKGJyYW5jaElzRW1w
dHkocmVzdWx0KSk7CisgICAgc2xvd0Nhc2VzLmFwcGVuZChicmFuY2hJZkVtcHR5KHJlc3VsdCkp
OwogICAgIGRvbmUubGluayh0aGlzKTsKICAgICAKICAgICByZXR1cm4gc2xvd0Nhc2VzOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>252110</attachid>
            <date>2015-04-30 16:31:22 -0700</date>
            <delta_ts>2015-04-30 16:50:01 -0700</delta_ts>
            <desc>the patch</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>58537</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTgzNjUyKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDkyIEBA
CisyMDE1LTA0LTMwICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
TW92ZSBhbGwgb2YgdGhlIGJyYW5jaElzPHR5cGU+IGhlbHBlcnMgZnJvbSBTcGVjdWxhdGl2ZUpJ
VCBpbnRvIEFzc2VtYmx5SGVscGVycworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTQ0NDYyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisgICAgICAgIAorICAgICAgICBBdCBzb21lIHBvaW50IHdlIHN0YXJ0ZWQgYWRkaW5nIHJl
cHJlc2VudGF0aW9uLWFnbm9zdGljIGhlbHBlcnMgZm9yIGRvaW5nIGNvbW1vbiB0eXBlIHRlc3Rz
LgorICAgICAgICBXZSBhZGRlZCBzb21lIGluIFNwZWN1bGF0aXZlSklULCBhbmQgdGhlbiBzb21l
IGluIEFzc2VtYmx5SGVscGVycy4gUHJpb3IgdG8gdGhpcyBjaGFuZ2UsCisgICAgICAgIHRoZXkg
aGFkIG92ZXJsYXBwaW5nIHBvd2VycywgdGhvdWdoIFNwZWN1bGF0aXZlSklUIHdhcyBhIGJpdCBi
ZXR0ZXIuCisgICAgICAgIAorICAgICAgICBUaGlzIHJlbW92ZXMgU3BlY3VsYXRpdmVKSVQncyBo
ZWxwZXJzIGFuZCBzdHJlbmd0aGVucyBBc3NlbWJseUhlbHBlcnMnIGhlbHBlcnMuIFRoaXMgaXMK
KyAgICAgICAgYmV0dGVyIGJlY2F1c2Ugbm93IGFsbCBvZiB0aGVzZSBoZWxwZXJzIGNhbiBiZSB1
c2VkIGluIGFsbCBvZiB0aGUgYXNzZW1ibHktYmFzZWQgSklUcywgbm90CisgICAgICAgIGp1c3Qg
dGhlIERGRy4gSXQgYWxzbyBzZXR0bGVzIG9uIHdoYXQgSSBmaW5kIHRvIGJlIGEgc2xpZ2h0bHkg
YmV0dGVyIG5hbWluZyBjb252ZW50aW9uLgorICAgICAgICBGb3IgZXhhbXBsZSB3aGVyZSB3ZSBw
cmV2aW91c2x5IHdvdWxkIGhhdmUgc2FpZCBicmFuY2hJc1N0cmluZywgbm93IHdlIHNheQorICAg
ICAgICBicmFuY2hJZlN0cmluZy4gU2ltaWxhcmx5LCBicmFuY2hOb3RTdHJpbmcgYmVjb21lcyBi
cmFuY2hJZk5vdFN0cmluZy4KKworICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHA6
CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVQZWVwSG9sZU9iamVj
dEVxdWFsaXR5KToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVZh
bHVlVG9JbnQzMik6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVJ
bnN0YW5jZU9mRm9yT2JqZWN0KToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6
Y29tcGlsZUluc3RhbmNlT2YpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpj
b21waWxlU3RyaW5nVG9VbnR5cGVkRXF1YWxpdHkpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1
bGF0aXZlSklUOjpjb21waWxlU3RyaW5nSWRlbnRUb05vdFN0cmluZ1ZhckVxdWFsaXR5KToKKyAg
ICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUdldEJ5VmFsT25TY29wZWRB
cmd1bWVudHMpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlVG9T
dHJpbmdPckNhbGxTdHJpbmdDb25zdHJ1Y3Rvck9uQ2VsbCk6CisgICAgICAgIChKU0M6OkRGRzo6
U3BlY3VsYXRpdmVKSVQ6OnNwZWN1bGF0ZU9iamVjdCk6CisgICAgICAgIChKU0M6OkRGRzo6U3Bl
Y3VsYXRpdmVKSVQ6OnNwZWN1bGF0ZU9iamVjdE9yT3RoZXIpOgorICAgICAgICAoSlNDOjpERkc6
OlNwZWN1bGF0aXZlSklUOjpzcGVjdWxhdGVTdHJpbmcpOgorICAgICAgICAoSlNDOjpERkc6OlNw
ZWN1bGF0aXZlSklUOjpzcGVjdWxhdGVOb3RTdHJpbmdWYXIpOgorICAgICAgICAoSlNDOjpERkc6
OlNwZWN1bGF0aXZlSklUOjpzcGVjdWxhdGVOb3RDZWxsKToKKyAgICAgICAgKEpTQzo6REZHOjpT
cGVjdWxhdGl2ZUpJVDo6c3BlY3VsYXRlT3RoZXIpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1
bGF0aXZlSklUOjplbWl0U3dpdGNoQ2hhcik6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRp
dmVKSVQ6OmVtaXRTd2l0Y2hTdHJpbmcpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZl
SklUOjpicmFuY2hJc09iamVjdCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkRGRzo6U3BlY3Vs
YXRpdmVKSVQ6OmJyYW5jaE5vdE9iamVjdCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkRGRzo6
U3BlY3VsYXRpdmVKSVQ6OmJyYW5jaElzU3RyaW5nKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6
REZHOjpTcGVjdWxhdGl2ZUpJVDo6YnJhbmNoTm90U3RyaW5nKTogRGVsZXRlZC4KKyAgICAgICAg
KiBkZmcvREZHU3BlY3VsYXRpdmVKSVQuaDoKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVK
SVQzMl82NC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6Om5vblNwZWN1
bGF0aXZlTm9uUGVlcGhvbGVDb21wYXJlTnVsbCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3Vs
YXRpdmVKSVQ6Om5vblNwZWN1bGF0aXZlUGVlcGhvbGVCcmFuY2hOdWxsKToKKyAgICAgICAgKEpT
Qzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6ZW1pdENhbGwpOgorICAgICAgICAoSlNDOjpERkc6OlNw
ZWN1bGF0aXZlSklUOjpmaWxsU3BlY3VsYXRlQ2VsbCk6CisgICAgICAgIChKU0M6OkRGRzo6U3Bl
Y3VsYXRpdmVKSVQ6OmNvbXBpbGVPYmplY3RFcXVhbGl0eSk6CisgICAgICAgIChKU0M6OkRGRzo6
U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVPYmplY3RUb09iamVjdE9yT3RoZXJFcXVhbGl0eSk6Cisg
ICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVQZWVwSG9sZU9iamVjdFRv
T2JqZWN0T3JPdGhlckVxdWFsaXR5KToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJ
VDo6Y29tcGlsZU9iamVjdE9yT3RoZXJMb2dpY2FsTm90KToKKyAgICAgICAgKEpTQzo6REZHOjpT
cGVjdWxhdGl2ZUpJVDo6ZW1pdE9iamVjdE9yT3RoZXJCcmFuY2gpOgorICAgICAgICAoSlNDOjpE
Rkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxh
dGl2ZUpJVDo6YnJhbmNoSXNDZWxsKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6REZHOjpTcGVj
dWxhdGl2ZUpJVDo6YnJhbmNoTm90Q2VsbCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkRGRzo6
U3BlY3VsYXRpdmVKSVQ6OmJyYW5jaElzT3RoZXIpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpE
Rkc6OlNwZWN1bGF0aXZlSklUOjpicmFuY2hOb3RPdGhlcik6IERlbGV0ZWQuCisgICAgICAgICog
ZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0
aXZlSklUOjpub25TcGVjdWxhdGl2ZU5vblBlZXBob2xlQ29tcGFyZU51bGwpOgorICAgICAgICAo
SlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpub25TcGVjdWxhdGl2ZVBlZXBob2xlQnJhbmNoTnVs
bCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmZpbGxTcGVjdWxhdGVDZWxs
KToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU9iamVjdEVxdWFs
aXR5KToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU9iamVjdFRv
T2JqZWN0T3JPdGhlckVxdWFsaXR5KToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJ
VDo6Y29tcGlsZVBlZXBIb2xlT2JqZWN0VG9PYmplY3RPck90aGVyRXF1YWxpdHkpOgorICAgICAg
ICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlT2JqZWN0T3JPdGhlckxvZ2ljYWxO
b3QpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjplbWl0T2JqZWN0T3JPdGhl
ckJyYW5jaCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUpOgor
ICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjp3cml0ZUJhcnJpZXIpOgorICAgICAg
ICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpicmFuY2hJc0NlbGwpOiBEZWxldGVkLgorICAg
ICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpicmFuY2hOb3RDZWxsKTogRGVsZXRlZC4K
KyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6YnJhbmNoSXNPdGhlcik6IERlbGV0
ZWQuCisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmJyYW5jaE5vdE90aGVyKTog
RGVsZXRlZC4KKyAgICAgICAgKiBqaXQvQXNzZW1ibHlIZWxwZXJzLmg6CisgICAgICAgIChKU0M6
OkFzc2VtYmx5SGVscGVyczo6YnJhbmNoSWZDZWxsKToKKyAgICAgICAgKEpTQzo6QXNzZW1ibHlI
ZWxwZXJzOjpicmFuY2hJZk90aGVyKToKKyAgICAgICAgKEpTQzo6QXNzZW1ibHlIZWxwZXJzOjpi
cmFuY2hJZk5vdE90aGVyKToKKyAgICAgICAgKEpTQzo6QXNzZW1ibHlIZWxwZXJzOjpicmFuY2hJ
Zk9iamVjdCk6CisgICAgICAgIChKU0M6OkFzc2VtYmx5SGVscGVyczo6YnJhbmNoSWZOb3RPYmpl
Y3QpOgorICAgICAgICAoSlNDOjpBc3NlbWJseUhlbHBlcnM6OmJyYW5jaElmVHlwZSk6CisgICAg
ICAgIChKU0M6OkFzc2VtYmx5SGVscGVyczo6YnJhbmNoSWZOb3RUeXBlKToKKyAgICAgICAgKEpT
Qzo6QXNzZW1ibHlIZWxwZXJzOjpicmFuY2hJZlN0cmluZyk6CisgICAgICAgIChKU0M6OkFzc2Vt
Ymx5SGVscGVyczo6YnJhbmNoSWZOb3RTdHJpbmcpOgorICAgICAgICAoSlNDOjpBc3NlbWJseUhl
bHBlcnM6OmJyYW5jaElmU3ltYm9sKToKKyAgICAgICAgKEpTQzo6QXNzZW1ibHlIZWxwZXJzOjpi
cmFuY2hJZk5vdFN5bWJvbCk6CisgICAgICAgIChKU0M6OkFzc2VtYmx5SGVscGVyczo6YnJhbmNo
SWZGdW5jdGlvbik6CisgICAgICAgIChKU0M6OkFzc2VtYmx5SGVscGVyczo6YnJhbmNoSWZOb3RG
dW5jdGlvbik6CisgICAgICAgIChKU0M6OkFzc2VtYmx5SGVscGVyczo6YnJhbmNoSWZFbXB0eSk6
CisgICAgICAgIChKU0M6OkFzc2VtYmx5SGVscGVyczo6YnJhbmNoSXNFbXB0eSk6IERlbGV0ZWQu
CisgICAgICAgIChKU0M6OkFzc2VtYmx5SGVscGVyczo6YnJhbmNoSWZDZWxsTm90T2JqZWN0KTog
RGVsZXRlZC4KKyAgICAgICAgKiBqaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwOgorICAgICAgICAo
SlNDOjpKSVQ6OmVtaXRTY29wZWRBcmd1bWVudHNHZXRCeVZhbCk6CisKIDIwMTUtMDQtMzAgIEZp
bGlwIFBpemxvICA8ZnBpemxvQGFwcGxlLmNvbT4KIAogICAgICAgICBqcy9yZWdyZXNzL2lzLXN0
cmluZy1mb2xkLXRyaWNreS5odG1sIGFuZCBqcy9yZWdyZXNzL2lzLXN0cmluZy1mb2xkLmh0bWwg
YXJlIGNyYXNoaW5nCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0
aXZlSklUMzJfNjQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAJKHJldmlzaW9uIDE4MzY1MCkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTI0Niw3ICsyNDYsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpub25TcGVjdWxhdGl2
ZU5vblBlCiAgICAgSklUQ29tcGlsZXI6Okp1bXAgbm90TWFzcXVlcmFkZXNBc1VuZGVmaW5lZDsg
ICAKICAgICBpZiAobWFzcXVlcmFkZXNBc1VuZGVmaW5lZFdhdGNocG9pbnRJc1N0aWxsVmFsaWQo
KSkgewogICAgICAgICBpZiAoIWlzS25vd25DZWxsKG9wZXJhbmQubm9kZSgpKSkKLSAgICAgICAg
ICAgIG5vdENlbGwgPSBicmFuY2hOb3RDZWxsKGFyZy5qc1ZhbHVlUmVncygpKTsKKyAgICAgICAg
ICAgIG5vdENlbGwgPSBtX2ppdC5icmFuY2hJZk5vdENlbGwoYXJnLmpzVmFsdWVSZWdzKCkpOwog
ICAgICAgICAKICAgICAgICAgbV9qaXQubW92ZShpbnZlcnQgPyBUcnVzdGVkSW1tMzIoMSkgOiBU
cnVzdGVkSW1tMzIoMCksIHJlc3VsdFBheWxvYWRHUFIpOwogICAgICAgICBub3RNYXNxdWVyYWRl
c0FzVW5kZWZpbmVkID0gbV9qaXQuanVtcCgpOwpAQCAtMjU1LDcgKzI1NSw3IEBAIHZvaWQgU3Bl
Y3VsYXRpdmVKSVQ6Om5vblNwZWN1bGF0aXZlTm9uUGUKICAgICAgICAgR1BSVGVtcG9yYXJ5IHJl
bW90ZUdsb2JhbE9iamVjdCh0aGlzKTsKIAogICAgICAgICBpZiAoIWlzS25vd25DZWxsKG9wZXJh
bmQubm9kZSgpKSkKLSAgICAgICAgICAgIG5vdENlbGwgPSBicmFuY2hOb3RDZWxsKGFyZy5qc1Zh
bHVlUmVncygpKTsKKyAgICAgICAgICAgIG5vdENlbGwgPSBtX2ppdC5icmFuY2hJZk5vdENlbGwo
YXJnLmpzVmFsdWVSZWdzKCkpOwogICAgICAgICAKICAgICAgICAgSklUQ29tcGlsZXI6Okp1bXAg
aXNNYXNxdWVyYWRlc0FzVW5kZWZpbmVkID0gbV9qaXQuYnJhbmNoVGVzdDgoCiAgICAgICAgICAg
ICBKSVRDb21waWxlcjo6Tm9uWmVybywgCkBAIC0zMTQsNyArMzE0LDcgQEAgdm9pZCBTcGVjdWxh
dGl2ZUpJVDo6bm9uU3BlY3VsYXRpdmVQZWVwaAogCiAgICAgaWYgKG1hc3F1ZXJhZGVzQXNVbmRl
ZmluZWRXYXRjaHBvaW50SXNTdGlsbFZhbGlkKCkpIHsKICAgICAgICAgaWYgKCFpc0tub3duQ2Vs
bChvcGVyYW5kLm5vZGUoKSkpCi0gICAgICAgICAgICBub3RDZWxsID0gYnJhbmNoTm90Q2VsbChh
cmcuanNWYWx1ZVJlZ3MoKSk7CisgICAgICAgICAgICBub3RDZWxsID0gbV9qaXQuYnJhbmNoSWZO
b3RDZWxsKGFyZy5qc1ZhbHVlUmVncygpKTsKICAgICAgICAgCiAgICAgICAgIGp1bXAoaW52ZXJ0
ID8gdGFrZW4gOiBub3RUYWtlbiwgRm9yY2VKdW1wKTsKICAgICB9IGVsc2UgewpAQCAtMzIyLDcg
KzMyMiw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6Om5vblNwZWN1bGF0aXZlUGVlcGgKICAgICAg
ICAgR1BSVGVtcG9yYXJ5IHJlbW90ZUdsb2JhbE9iamVjdCh0aGlzKTsKIAogICAgICAgICBpZiAo
IWlzS25vd25DZWxsKG9wZXJhbmQubm9kZSgpKSkKLSAgICAgICAgICAgIG5vdENlbGwgPSBicmFu
Y2hOb3RDZWxsKGFyZy5qc1ZhbHVlUmVncygpKTsKKyAgICAgICAgICAgIG5vdENlbGwgPSBtX2pp
dC5icmFuY2hJZk5vdENlbGwoYXJnLmpzVmFsdWVSZWdzKCkpOwogICAgICAgICAKICAgICAgICAg
YnJhbmNoVGVzdDgoSklUQ29tcGlsZXI6Olplcm8sIAogICAgICAgICAgICAgSklUQ29tcGlsZXI6
OkFkZHJlc3MoYXJnUGF5bG9hZEdQUiwgSlNDZWxsOjp0eXBlSW5mb0ZsYWdzT2Zmc2V0KCkpLCAK
QEAgLTc5OSw3ICs3OTksNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjplbWl0Q2FsbChOb2RlKiBu
b2RlCiAgICAgCiAgICAgQ2FsbExpbmtJbmZvKiBpbmZvID0gbV9qaXQuY29kZUJsb2NrKCktPmFk
ZENhbGxMaW5rSW5mbygpOwogCi0gICAgc2xvd1BhdGguYXBwZW5kKGJyYW5jaE5vdENlbGwoY2Fs
bGVlLmpzVmFsdWVSZWdzKCkpKTsKKyAgICBzbG93UGF0aC5hcHBlbmQobV9qaXQuYnJhbmNoSWZO
b3RDZWxsKGNhbGxlZS5qc1ZhbHVlUmVncygpKSk7CiAgICAgc2xvd1BhdGguYXBwZW5kKG1faml0
LmJyYW5jaFB0cldpdGhQYXRjaChNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIGNhbGxlZVBheWxv
YWRHUFIsIHRhcmdldFRvQ2hlY2spKTsKIAogICAgIEpJVENvbXBpbGVyOjpDYWxsIGZhc3RDYWxs
ID0gbV9qaXQubmVhckNhbGwoKTsKQEAgLTEwMjUsNyArMTAyNSw3IEBAIEdQUlJlZyBTcGVjdWxh
dGl2ZUpJVDo6ZmlsbFNwZWN1bGF0ZUNlbGwKICAgICAgICAgaWYgKHR5cGUgJiB+U3BlY0NlbGwp
IHsKICAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soCiAgICAgICAgICAgICAgICAgQmFkVHlw
ZSwgSlNWYWx1ZVJlZ3ModGFnR1BSLCBwYXlsb2FkR1BSKSwgZWRnZSwKLSAgICAgICAgICAgICAg
ICBicmFuY2hOb3RDZWxsKGluZm8uanNWYWx1ZVJlZ3MoKSkpOworICAgICAgICAgICAgICAgIG1f
aml0LmJyYW5jaElmTm90Q2VsbChpbmZvLmpzVmFsdWVSZWdzKCkpKTsKICAgICAgICAgfQogICAg
ICAgICBtX2dwcnMudW5sb2NrKHRhZ0dQUik7CiAgICAgICAgIG1fZ3Bycy5yZWxlYXNlKHRhZ0dQ
Uik7CkBAIC0xMTUwLDEyICsxMTUwLDEyIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVP
YmplY3RFcXVhbGkKICAgICAKICAgICBpZiAobWFzcXVlcmFkZXNBc1VuZGVmaW5lZFdhdGNocG9p
bnRJc1N0aWxsVmFsaWQoKSkgewogICAgICAgICBERkdfVFlQRV9DSEVDSygKLSAgICAgICAgICAg
IEpTVmFsdWVTb3VyY2U6OnVuYm94ZWRDZWxsKG9wMUdQUiksIG5vZGUtPmNoaWxkMSgpLCBTcGVj
T2JqZWN0LCBicmFuY2hOb3RPYmplY3Qob3AxR1BSKSk7CisgICAgICAgICAgICBKU1ZhbHVlU291
cmNlOjp1bmJveGVkQ2VsbChvcDFHUFIpLCBub2RlLT5jaGlsZDEoKSwgU3BlY09iamVjdCwgbV9q
aXQuYnJhbmNoSWZOb3RPYmplY3Qob3AxR1BSKSk7CiAgICAgICAgIERGR19UWVBFX0NIRUNLKAot
ICAgICAgICAgICAgSlNWYWx1ZVNvdXJjZTo6dW5ib3hlZENlbGwob3AyR1BSKSwgbm9kZS0+Y2hp
bGQyKCksIFNwZWNPYmplY3QsIGJyYW5jaE5vdE9iamVjdChvcDJHUFIpKTsKKyAgICAgICAgICAg
IEpTVmFsdWVTb3VyY2U6OnVuYm94ZWRDZWxsKG9wMkdQUiksIG5vZGUtPmNoaWxkMigpLCBTcGVj
T2JqZWN0LCBtX2ppdC5icmFuY2hJZk5vdE9iamVjdChvcDJHUFIpKTsKICAgICB9IGVsc2Ugewog
ICAgICAgICBERkdfVFlQRV9DSEVDSygKLSAgICAgICAgICAgIEpTVmFsdWVTb3VyY2U6OnVuYm94
ZWRDZWxsKG9wMUdQUiksIG5vZGUtPmNoaWxkMSgpLCBTcGVjT2JqZWN0LCBicmFuY2hOb3RPYmpl
Y3Qob3AxR1BSKSk7CisgICAgICAgICAgICBKU1ZhbHVlU291cmNlOjp1bmJveGVkQ2VsbChvcDFH
UFIpLCBub2RlLT5jaGlsZDEoKSwgU3BlY09iamVjdCwgbV9qaXQuYnJhbmNoSWZOb3RPYmplY3Qo
b3AxR1BSKSk7CiAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFkVHlwZSwgSlNWYWx1ZVNvdXJj
ZTo6dW5ib3hlZENlbGwob3AxR1BSKSwgbm9kZS0+Y2hpbGQxKCksCiAgICAgICAgICAgICBtX2pp
dC5icmFuY2hUZXN0OCgKICAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6Tm9uWmVybywg
CkBAIC0xMTYzLDcgKzExNjMsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlT2JqZWN0
RXF1YWxpCiAgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW0zMihNYXNx
dWVyYWRlc0FzVW5kZWZpbmVkKSkpOwogCiAgICAgICAgIERGR19UWVBFX0NIRUNLKAotICAgICAg
ICAgICAgSlNWYWx1ZVNvdXJjZTo6dW5ib3hlZENlbGwob3AyR1BSKSwgbm9kZS0+Y2hpbGQyKCks
IFNwZWNPYmplY3QsIGJyYW5jaE5vdE9iamVjdChvcDJHUFIpKTsKKyAgICAgICAgICAgIEpTVmFs
dWVTb3VyY2U6OnVuYm94ZWRDZWxsKG9wMkdQUiksIG5vZGUtPmNoaWxkMigpLCBTcGVjT2JqZWN0
LCBtX2ppdC5icmFuY2hJZk5vdE9iamVjdChvcDJHUFIpKTsKICAgICAgICAgc3BlY3VsYXRpb25D
aGVjayhCYWRUeXBlLCBKU1ZhbHVlU291cmNlOjp1bmJveGVkQ2VsbChvcDJHUFIpLCBub2RlLT5j
aGlsZDIoKSwKICAgICAgICAgICAgIG1faml0LmJyYW5jaFRlc3Q4KAogICAgICAgICAgICAgICAg
IE1hY3JvQXNzZW1ibGVyOjpOb25aZXJvLApAQCAtMTIwMCwxMCArMTIwMCwxMCBAQCB2b2lkIFNw
ZWN1bGF0aXZlSklUOjpjb21waWxlT2JqZWN0VG9PYmplCiAKICAgICBpZiAobWFzcXVlcmFkZXNB
c1VuZGVmaW5lZFdhdGNocG9pbnRWYWxpZCkgewogICAgICAgICBERkdfVFlQRV9DSEVDSygKLSAg
ICAgICAgICAgIEpTVmFsdWVTb3VyY2U6OnVuYm94ZWRDZWxsKG9wMUdQUiksIGxlZnRDaGlsZCwg
U3BlY09iamVjdCwgYnJhbmNoTm90T2JqZWN0KG9wMUdQUikpOworICAgICAgICAgICAgSlNWYWx1
ZVNvdXJjZTo6dW5ib3hlZENlbGwob3AxR1BSKSwgbGVmdENoaWxkLCBTcGVjT2JqZWN0LCBtX2pp
dC5icmFuY2hJZk5vdE9iamVjdChvcDFHUFIpKTsKICAgICB9IGVsc2UgewogICAgICAgICBERkdf
VFlQRV9DSEVDSygKLSAgICAgICAgICAgIEpTVmFsdWVTb3VyY2U6OnVuYm94ZWRDZWxsKG9wMUdQ
UiksIGxlZnRDaGlsZCwgU3BlY09iamVjdCwgYnJhbmNoTm90T2JqZWN0KG9wMUdQUikpOworICAg
ICAgICAgICAgSlNWYWx1ZVNvdXJjZTo6dW5ib3hlZENlbGwob3AxR1BSKSwgbGVmdENoaWxkLCBT
cGVjT2JqZWN0LCBtX2ppdC5icmFuY2hJZk5vdE9iamVjdChvcDFHUFIpKTsKICAgICAgICAgc3Bl
Y3VsYXRpb25DaGVjayhCYWRUeXBlLCBKU1ZhbHVlU291cmNlOjp1bmJveGVkQ2VsbChvcDFHUFIp
LCBsZWZ0Q2hpbGQsIAogICAgICAgICAgICAgbV9qaXQuYnJhbmNoVGVzdDgoCiAgICAgICAgICAg
ICAgICAgTWFjcm9Bc3NlbWJsZXI6Ok5vblplcm8sIApAQCAtMTIxNCwxNSArMTIxNCwxNSBAQCB2
b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlT2JqZWN0VG9PYmplCiAgICAgCiAgICAgLy8gSXQg
c2VlbXMgdGhhdCBtb3N0IG9mIHRoZSB0aW1lIHdoZW4gcHJvZ3JhbXMgZG8gYSA9PSBiIHdoZXJl
IGIgbWF5IGJlIGVpdGhlciBudWxsL3VuZGVmaW5lZAogICAgIC8vIG9yIGFuIG9iamVjdCwgYiBp
cyB1c3VhbGx5IGFuIG9iamVjdC4gQmFsYW5jZSB0aGUgYnJhbmNoZXMgdG8gbWFrZSB0aGF0IGNh
c2UgZmFzdC4KLSAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCByaWdodE5vdENlbGwgPSBicmFuY2hO
b3RDZWxsKG9wMi5qc1ZhbHVlUmVncygpKTsKKyAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCByaWdo
dE5vdENlbGwgPSBtX2ppdC5icmFuY2hJZk5vdENlbGwob3AyLmpzVmFsdWVSZWdzKCkpOwogICAg
IAogICAgIC8vIFdlIGtub3cgdGhhdCB3aXRoaW4gdGhpcyBicmFuY2gsIHJpZ2h0Q2hpbGQgbXVz
dCBiZSBhIGNlbGwuCiAgICAgaWYgKG1hc3F1ZXJhZGVzQXNVbmRlZmluZWRXYXRjaHBvaW50VmFs
aWQpIHsKICAgICAgICAgREZHX1RZUEVfQ0hFQ0soCi0gICAgICAgICAgICBKU1ZhbHVlUmVncyhv
cDJUYWdHUFIsIG9wMlBheWxvYWRHUFIpLCByaWdodENoaWxkLCAoflNwZWNDZWxsKSB8IFNwZWNP
YmplY3QsIGJyYW5jaE5vdE9iamVjdChvcDJQYXlsb2FkR1BSKSk7CisgICAgICAgICAgICBKU1Zh
bHVlUmVncyhvcDJUYWdHUFIsIG9wMlBheWxvYWRHUFIpLCByaWdodENoaWxkLCAoflNwZWNDZWxs
KSB8IFNwZWNPYmplY3QsIG1faml0LmJyYW5jaElmTm90T2JqZWN0KG9wMlBheWxvYWRHUFIpKTsK
ICAgICB9IGVsc2UgewogICAgICAgICBERkdfVFlQRV9DSEVDSygKLSAgICAgICAgICAgIEpTVmFs
dWVSZWdzKG9wMlRhZ0dQUiwgb3AyUGF5bG9hZEdQUiksIHJpZ2h0Q2hpbGQsICh+U3BlY0NlbGwp
IHwgU3BlY09iamVjdCwgYnJhbmNoTm90T2JqZWN0KG9wMlBheWxvYWRHUFIpKTsKKyAgICAgICAg
ICAgIEpTVmFsdWVSZWdzKG9wMlRhZ0dQUiwgb3AyUGF5bG9hZEdQUiksIHJpZ2h0Q2hpbGQsICh+
U3BlY0NlbGwpIHwgU3BlY09iamVjdCwgbV9qaXQuYnJhbmNoSWZOb3RPYmplY3Qob3AyUGF5bG9h
ZEdQUikpOwogICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEJhZFR5cGUsIEpTVmFsdWVSZWdzKG9w
MlRhZ0dQUiwgb3AyUGF5bG9hZEdQUiksIHJpZ2h0Q2hpbGQsIAogICAgICAgICAgICAgbV9qaXQu
YnJhbmNoVGVzdDgoCiAgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6Ok5vblplcm8sIApA
QCAtMTI3OSwxMCArMTI3OSwxMCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlUGVlcEhv
bGVPYmplCiAKICAgICBpZiAobWFzcXVlcmFkZXNBc1VuZGVmaW5lZFdhdGNocG9pbnRWYWxpZCkg
ewogICAgICAgICBERkdfVFlQRV9DSEVDSygKLSAgICAgICAgICAgIEpTVmFsdWVTb3VyY2U6OnVu
Ym94ZWRDZWxsKG9wMUdQUiksIGxlZnRDaGlsZCwgU3BlY09iamVjdCwgYnJhbmNoTm90T2JqZWN0
KG9wMUdQUikpOworICAgICAgICAgICAgSlNWYWx1ZVNvdXJjZTo6dW5ib3hlZENlbGwob3AxR1BS
KSwgbGVmdENoaWxkLCBTcGVjT2JqZWN0LCBtX2ppdC5icmFuY2hJZk5vdE9iamVjdChvcDFHUFIp
KTsKICAgICB9IGVsc2UgewogICAgICAgICBERkdfVFlQRV9DSEVDSygKLSAgICAgICAgICAgIEpT
VmFsdWVTb3VyY2U6OnVuYm94ZWRDZWxsKG9wMUdQUiksIGxlZnRDaGlsZCwgU3BlY09iamVjdCwg
YnJhbmNoTm90T2JqZWN0KG9wMUdQUikpOworICAgICAgICAgICAgSlNWYWx1ZVNvdXJjZTo6dW5i
b3hlZENlbGwob3AxR1BSKSwgbGVmdENoaWxkLCBTcGVjT2JqZWN0LCBtX2ppdC5icmFuY2hJZk5v
dE9iamVjdChvcDFHUFIpKTsKICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhCYWRUeXBlLCBKU1Zh
bHVlU291cmNlOjp1bmJveGVkQ2VsbChvcDFHUFIpLCBsZWZ0Q2hpbGQsCiAgICAgICAgICAgICBt
X2ppdC5icmFuY2hUZXN0OCgKICAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6Tm9uWmVy
bywgCkBAIC0xMjkyLDE3ICsxMjkyLDE3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVQ
ZWVwSG9sZU9iamUKICAgICAKICAgICAvLyBJdCBzZWVtcyB0aGF0IG1vc3Qgb2YgdGhlIHRpbWUg
d2hlbiBwcm9ncmFtcyBkbyBhID09IGIgd2hlcmUgYiBtYXkgYmUgZWl0aGVyIG51bGwvdW5kZWZp
bmVkCiAgICAgLy8gb3IgYW4gb2JqZWN0LCBiIGlzIHVzdWFsbHkgYW4gb2JqZWN0LiBCYWxhbmNl
IHRoZSBicmFuY2hlcyB0byBtYWtlIHRoYXQgY2FzZSBmYXN0LgotICAgIE1hY3JvQXNzZW1ibGVy
OjpKdW1wIHJpZ2h0Tm90Q2VsbCA9IGJyYW5jaE5vdENlbGwob3AyLmpzVmFsdWVSZWdzKCkpOwor
ICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIHJpZ2h0Tm90Q2VsbCA9IG1faml0LmJyYW5jaElmTm90
Q2VsbChvcDIuanNWYWx1ZVJlZ3MoKSk7CiAgICAgCiAgICAgLy8gV2Uga25vdyB0aGF0IHdpdGhp
biB0aGlzIGJyYW5jaCwgcmlnaHRDaGlsZCBtdXN0IGJlIGEgY2VsbC4KICAgICBpZiAobWFzcXVl
cmFkZXNBc1VuZGVmaW5lZFdhdGNocG9pbnRWYWxpZCkgewogICAgICAgICBERkdfVFlQRV9DSEVD
SygKICAgICAgICAgICAgIEpTVmFsdWVSZWdzKG9wMlRhZ0dQUiwgb3AyUGF5bG9hZEdQUiksIHJp
Z2h0Q2hpbGQsICh+U3BlY0NlbGwpIHwgU3BlY09iamVjdCwKLSAgICAgICAgICAgIGJyYW5jaE5v
dE9iamVjdChvcDJQYXlsb2FkR1BSKSk7CisgICAgICAgICAgICBtX2ppdC5icmFuY2hJZk5vdE9i
amVjdChvcDJQYXlsb2FkR1BSKSk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgREZHX1RZUEVfQ0hF
Q0soCiAgICAgICAgICAgICBKU1ZhbHVlUmVncyhvcDJUYWdHUFIsIG9wMlBheWxvYWRHUFIpLCBy
aWdodENoaWxkLCAoflNwZWNDZWxsKSB8IFNwZWNPYmplY3QsCi0gICAgICAgICAgICBicmFuY2hO
b3RPYmplY3Qob3AyUGF5bG9hZEdQUikpOworICAgICAgICAgICAgbV9qaXQuYnJhbmNoSWZOb3RP
YmplY3Qob3AyUGF5bG9hZEdQUikpOwogICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEJhZFR5cGUs
IEpTVmFsdWVSZWdzKG9wMlRhZ0dQUiwgb3AyUGF5bG9hZEdQUiksIHJpZ2h0Q2hpbGQsCiAgICAg
ICAgICAgICBtX2ppdC5icmFuY2hUZXN0OCgKICAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxl
cjo6Tm9uWmVybywgCkBAIC0xMzgyLDE1ICsxMzgyLDE1IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6
OmNvbXBpbGVPYmplY3RPck90aGUKICAgICAgICAgc3RydWN0dXJlR1BSID0gc3RydWN0dXJlLmdw
cigpOwogICAgIH0KIAotICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIG5vdENlbGwgPSBicmFuY2hO
b3RDZWxsKHZhbHVlLmpzVmFsdWVSZWdzKCkpOworICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIG5v
dENlbGwgPSBtX2ppdC5icmFuY2hJZk5vdENlbGwodmFsdWUuanNWYWx1ZVJlZ3MoKSk7CiAgICAg
aWYgKG1hc3F1ZXJhZGVzQXNVbmRlZmluZWRXYXRjaHBvaW50VmFsaWQpIHsKICAgICAgICAgREZH
X1RZUEVfQ0hFQ0soCiAgICAgICAgICAgICBKU1ZhbHVlUmVncyh2YWx1ZVRhZ0dQUiwgdmFsdWVQ
YXlsb2FkR1BSKSwgbm9kZVVzZSwgKH5TcGVjQ2VsbCkgfCBTcGVjT2JqZWN0LAotICAgICAgICAg
ICAgYnJhbmNoTm90T2JqZWN0KHZhbHVlUGF5bG9hZEdQUikpOworICAgICAgICAgICAgbV9qaXQu
YnJhbmNoSWZOb3RPYmplY3QodmFsdWVQYXlsb2FkR1BSKSk7CiAgICAgfSBlbHNlIHsKICAgICAg
ICAgREZHX1RZUEVfQ0hFQ0soCiAgICAgICAgICAgICBKU1ZhbHVlUmVncyh2YWx1ZVRhZ0dQUiwg
dmFsdWVQYXlsb2FkR1BSKSwgbm9kZVVzZSwgKH5TcGVjQ2VsbCkgfCBTcGVjT2JqZWN0LAotICAg
ICAgICAgICAgYnJhbmNoTm90T2JqZWN0KHZhbHVlUGF5bG9hZEdQUikpOworICAgICAgICAgICAg
bV9qaXQuYnJhbmNoSWZOb3RPYmplY3QodmFsdWVQYXlsb2FkR1BSKSk7CiAKICAgICAgICAgTWFj
cm9Bc3NlbWJsZXI6Okp1bXAgaXNOb3RNYXNxdWVyYWRlc0FzVW5kZWZpbmVkID0gCiAgICAgICAg
ICAgICBtX2ppdC5icmFuY2hUZXN0OCgKQEAgLTE1MDQsMTUgKzE1MDQsMTUgQEAgdm9pZCBTcGVj
dWxhdGl2ZUpJVDo6ZW1pdE9iamVjdE9yT3RoZXJCcgogICAgIEdQUlJlZyB2YWx1ZVBheWxvYWRH
UFIgPSB2YWx1ZS5wYXlsb2FkR1BSKCk7CiAgICAgR1BSUmVnIHNjcmF0Y2hHUFIgPSBzY3JhdGNo
LmdwcigpOwogICAgIAotICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIG5vdENlbGwgPSBicmFuY2hO
b3RDZWxsKHZhbHVlLmpzVmFsdWVSZWdzKCkpOworICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIG5v
dENlbGwgPSBtX2ppdC5icmFuY2hJZk5vdENlbGwodmFsdWUuanNWYWx1ZVJlZ3MoKSk7CiAgICAg
aWYgKG1hc3F1ZXJhZGVzQXNVbmRlZmluZWRXYXRjaHBvaW50SXNTdGlsbFZhbGlkKCkpIHsKICAg
ICAgICAgREZHX1RZUEVfQ0hFQ0soCiAgICAgICAgICAgICBKU1ZhbHVlUmVncyh2YWx1ZVRhZ0dQ
UiwgdmFsdWVQYXlsb2FkR1BSKSwgbm9kZVVzZSwgKH5TcGVjQ2VsbCkgfCBTcGVjT2JqZWN0LAot
ICAgICAgICAgICAgYnJhbmNoTm90T2JqZWN0KHZhbHVlUGF5bG9hZEdQUikpOworICAgICAgICAg
ICAgbV9qaXQuYnJhbmNoSWZOb3RPYmplY3QodmFsdWVQYXlsb2FkR1BSKSk7CiAgICAgfSBlbHNl
IHsKICAgICAgICAgREZHX1RZUEVfQ0hFQ0soCiAgICAgICAgICAgICBKU1ZhbHVlUmVncyh2YWx1
ZVRhZ0dQUiwgdmFsdWVQYXlsb2FkR1BSKSwgbm9kZVVzZSwgKH5TcGVjQ2VsbCkgfCBTcGVjT2Jq
ZWN0LAotICAgICAgICAgICAgYnJhbmNoTm90T2JqZWN0KHZhbHVlUGF5bG9hZEdQUikpOworICAg
ICAgICAgICAgbV9qaXQuYnJhbmNoSWZOb3RPYmplY3QodmFsdWVQYXlsb2FkR1BSKSk7CiAKICAg
ICAgICAgSklUQ29tcGlsZXI6Okp1bXAgaXNOb3RNYXNxdWVyYWRlc0FzVW5kZWZpbmVkID0gbV9q
aXQuYnJhbmNoVGVzdDgoCiAgICAgICAgICAgICBKSVRDb21waWxlcjo6WmVybywgCkBAIC0zMDc0
LDggKzMwNzQsOCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAg
ICAgICAgICAgICBtX2ppdC5tb3ZlKG9wMVRhZ0dQUiwgcmVzdWx0VGFnR1BSKTsKICAgICAgICAg
ICAgIG1faml0Lm1vdmUob3AxUGF5bG9hZEdQUiwgcmVzdWx0UGF5bG9hZEdQUik7CiAgICAgICAg
IH0gZWxzZSB7Ci0gICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBhbHJlYWR5UHJpbWl0
aXZlID0gYnJhbmNoTm90Q2VsbChvcDEuanNWYWx1ZVJlZ3MoKSk7Ci0gICAgICAgICAgICBNYWNy
b0Fzc2VtYmxlcjo6SnVtcCBub3RQcmltaXRpdmUgPSBicmFuY2hJc09iamVjdChvcDFQYXlsb2Fk
R1BSKTsKKyAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIGFscmVhZHlQcmltaXRpdmUg
PSBtX2ppdC5icmFuY2hJZk5vdENlbGwob3AxLmpzVmFsdWVSZWdzKCkpOworICAgICAgICAgICAg
TWFjcm9Bc3NlbWJsZXI6Okp1bXAgbm90UHJpbWl0aXZlID0gbV9qaXQuYnJhbmNoSWZPYmplY3Qo
b3AxUGF5bG9hZEdQUik7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIGFscmVhZHlQcmltaXRp
dmUubGluaygmbV9qaXQpOwogICAgICAgICAgICAgbV9qaXQubW92ZShvcDFUYWdHUFIsIHJlc3Vs
dFRhZ0dQUik7CkBAIC0zMTA1LDggKzMxMDUsOCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21w
aWxlKE5vZGUqIG5vZGUpCiAgICAgICAgICAgICAKICAgICAgICAgICAgIEpJVENvbXBpbGVyOjpK
dW1wIGRvbmU7CiAgICAgICAgICAgICBpZiAobm9kZS0+Y2hpbGQxKCktPnByZWRpY3Rpb24oKSAm
IFNwZWNTdHJpbmcpIHsKLSAgICAgICAgICAgICAgICBKSVRDb21waWxlcjo6SnVtcCBzbG93UGF0
aDEgPSBicmFuY2hOb3RDZWxsKG9wMS5qc1ZhbHVlUmVncygpKTsKLSAgICAgICAgICAgICAgICBK
SVRDb21waWxlcjo6SnVtcCBzbG93UGF0aDIgPSBicmFuY2hOb3RTdHJpbmcob3AxUGF5bG9hZEdQ
Uik7CisgICAgICAgICAgICAgICAgSklUQ29tcGlsZXI6Okp1bXAgc2xvd1BhdGgxID0gbV9qaXQu
YnJhbmNoSWZOb3RDZWxsKG9wMS5qc1ZhbHVlUmVncygpKTsKKyAgICAgICAgICAgICAgICBKSVRD
b21waWxlcjo6SnVtcCBzbG93UGF0aDIgPSBtX2ppdC5icmFuY2hJZk5vdFN0cmluZyhvcDFQYXls
b2FkR1BSKTsKICAgICAgICAgICAgICAgICBtX2ppdC5tb3ZlKG9wMVBheWxvYWRHUFIsIHJlc3Vs
dEdQUik7CiAgICAgICAgICAgICAgICAgZG9uZSA9IG1faml0Lmp1bXAoKTsKICAgICAgICAgICAg
ICAgICBzbG93UGF0aDEubGluaygmbV9qaXQpOwpAQCAtMzQ3Myw3ICszNDczLDcgQEAgdm9pZCBT
cGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICBHUFJSZWcgdGVtcFRh
Z0dQUiA9IHRlbXBUYWcuZ3ByKCk7CiAgICAgICAgIAogICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6
SnVtcExpc3Qgc2xvd0Nhc2VzOwotICAgICAgICBzbG93Q2FzZXMuYXBwZW5kKGJyYW5jaE5vdENl
bGwodGhpc1ZhbHVlLmpzVmFsdWVSZWdzKCkpKTsKKyAgICAgICAgc2xvd0Nhc2VzLmFwcGVuZCht
X2ppdC5icmFuY2hJZk5vdENlbGwodGhpc1ZhbHVlLmpzVmFsdWVSZWdzKCkpKTsKICAgICAgICAg
c2xvd0Nhc2VzLmFwcGVuZChtX2ppdC5icmFuY2g4KAogICAgICAgICAgICAgTWFjcm9Bc3NlbWJs
ZXI6Ok5vdEVxdWFsLAogICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3ModGhpc1Zh
bHVlUGF5bG9hZEdQUiwgSlNDZWxsOjp0eXBlSW5mb1R5cGVPZmZzZXQoKSksCkBAIC0zNjM3LDcg
KzM2MzcsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAg
ICAgIAogICAgICAgICAgICAgYmFzZS51c2UoKTsKICAgICAgICAgCi0gICAgICAgICAgICBKSVRD
b21waWxlcjo6SnVtcCBub3RDZWxsID0gYnJhbmNoTm90Q2VsbChiYXNlLmpzVmFsdWVSZWdzKCkp
OworICAgICAgICAgICAgSklUQ29tcGlsZXI6Okp1bXAgbm90Q2VsbCA9IG1faml0LmJyYW5jaElm
Tm90Q2VsbChiYXNlLmpzVmFsdWVSZWdzKCkpOwogICAgICAgICAKICAgICAgICAgICAgIGNhY2hl
ZEdldEJ5SWQobm9kZS0+b3JpZ2luLnNlbWFudGljLCBiYXNlVGFnR1BSLCBiYXNlUGF5bG9hZEdQ
UiwgcmVzdWx0VGFnR1BSLCByZXN1bHRQYXlsb2FkR1BSLCBub2RlLT5pZGVudGlmaWVyTnVtYmVy
KCksIG5vdENlbGwpOwogICAgICAgICAKQEAgLTM2OTMsNyArMzY5Myw3IEBAIHZvaWQgU3BlY3Vs
YXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgCiAgICAgICAgICAgICBmbHVz
aFJlZ2lzdGVycygpOwogICAgICAgICAKLSAgICAgICAgICAgIEpJVENvbXBpbGVyOjpKdW1wIG5v
dENlbGwgPSBicmFuY2hOb3RDZWxsKGJhc2UuanNWYWx1ZVJlZ3MoKSk7CisgICAgICAgICAgICBK
SVRDb21waWxlcjo6SnVtcCBub3RDZWxsID0gbV9qaXQuYnJhbmNoSWZOb3RDZWxsKGJhc2UuanNW
YWx1ZVJlZ3MoKSk7CiAgICAgICAgIAogICAgICAgICAgICAgY2FjaGVkR2V0QnlJZChub2RlLT5v
cmlnaW4uc2VtYW50aWMsIGJhc2VUYWdHUFIsIGJhc2VQYXlsb2FkR1BSLCByZXN1bHRUYWdHUFIs
IHJlc3VsdFBheWxvYWRHUFIsIG5vZGUtPmlkZW50aWZpZXJOdW1iZXIoKSwgbm90Q2VsbCwgRG9u
dFNwaWxsKTsKICAgICAgICAgCkBAIC00MDE0LDcgKzQwMTQsNyBAQCB2b2lkIFNwZWN1bGF0aXZl
SklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgIEdQUlRlbXBvcmFyeSBsb2NhbEdsb2Jh
bE9iamVjdCh0aGlzKTsKICAgICAgICAgR1BSVGVtcG9yYXJ5IHJlbW90ZUdsb2JhbE9iamVjdCh0
aGlzKTsKIAotICAgICAgICBKSVRDb21waWxlcjo6SnVtcCBpc0NlbGwgPSBicmFuY2hJc0NlbGwo
dmFsdWUuanNWYWx1ZVJlZ3MoKSk7CisgICAgICAgIEpJVENvbXBpbGVyOjpKdW1wIGlzQ2VsbCA9
IG1faml0LmJyYW5jaElmQ2VsbCh2YWx1ZS5qc1ZhbHVlUmVncygpKTsKICAgICAgICAgCiAgICAg
ICAgIG1faml0LmNvbXBhcmUzMihKSVRDb21waWxlcjo6RXF1YWwsIHZhbHVlLnRhZ0dQUigpLCBU
cnVzdGVkSW1tMzIoSlNWYWx1ZTo6VW5kZWZpbmVkVGFnKSwgcmVzdWx0LmdwcigpKTsKICAgICAg
ICAgSklUQ29tcGlsZXI6Okp1bXAgZG9uZSA9IG1faml0Lmp1bXAoKTsKQEAgLTQwNzAsNyArNDA3
MCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAg
SlNWYWx1ZU9wZXJhbmQgdmFsdWUodGhpcywgbm9kZS0+Y2hpbGQxKCkpOwogICAgICAgICBHUFJU
ZW1wb3JhcnkgcmVzdWx0KHRoaXMsIFJldXNlLCB2YWx1ZSwgVGFnV29yZCk7CiAgICAgICAgIAot
ICAgICAgICBKSVRDb21waWxlcjo6SnVtcCBpc05vdENlbGwgPSBicmFuY2hOb3RDZWxsKHZhbHVl
LmpzVmFsdWVSZWdzKCkpOworICAgICAgICBKSVRDb21waWxlcjo6SnVtcCBpc05vdENlbGwgPSBt
X2ppdC5icmFuY2hJZk5vdENlbGwodmFsdWUuanNWYWx1ZVJlZ3MoKSk7CiAgICAgICAgIAogICAg
ICAgICBtX2ppdC5jb21wYXJlOChKSVRDb21waWxlcjo6RXF1YWwsIAogICAgICAgICAgICAgSklU
Q29tcGlsZXI6OkFkZHJlc3ModmFsdWUucGF5bG9hZEdQUigpLCBKU0NlbGw6OnR5cGVJbmZvVHlw
ZU9mZnNldCgpKSwgCkBAIC00MDkwLDcgKzQwOTAsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpj
b21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgIEpTVmFsdWVPcGVyYW5kIHZhbHVlKHRoaXMsIG5v
ZGUtPmNoaWxkMSgpKTsKICAgICAgICAgR1BSVGVtcG9yYXJ5IHJlc3VsdCh0aGlzLCBSZXVzZSwg
dmFsdWUsIFRhZ1dvcmQpOwogCi0gICAgICAgIEpJVENvbXBpbGVyOjpKdW1wIGlzTm90Q2VsbCA9
IGJyYW5jaE5vdENlbGwodmFsdWUuanNWYWx1ZVJlZ3MoKSk7CisgICAgICAgIEpJVENvbXBpbGVy
OjpKdW1wIGlzTm90Q2VsbCA9IG1faml0LmJyYW5jaElmTm90Q2VsbCh2YWx1ZS5qc1ZhbHVlUmVn
cygpKTsKIAogICAgICAgICBtX2ppdC5jb21wYXJlOChKSVRDb21waWxlcjo6QWJvdmVPckVxdWFs
LAogICAgICAgICAgICAgSklUQ29tcGlsZXI6OkFkZHJlc3ModmFsdWUucGF5bG9hZEdQUigpLCBK
U0NlbGw6OnR5cGVJbmZvVHlwZU9mZnNldCgpKSwKQEAgLTQxNDMsMTIgKzQxNDMsMTIgQEAgdm9p
ZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogCiAgICAgICAgIEFTU0VSVChu
b2RlLT5jaGlsZDEoKS51c2VLaW5kKCkgPT0gVW50eXBlZFVzZSB8fCBub2RlLT5jaGlsZDEoKS51
c2VLaW5kKCkgPT0gQ2VsbFVzZSB8fCBub2RlLT5jaGlsZDEoKS51c2VLaW5kKCkgPT0gU3RyaW5n
VXNlKTsKIAotICAgICAgICBKSVRDb21waWxlcjo6SnVtcCBpc05vdENlbGwgPSBicmFuY2hOb3RD
ZWxsKHZhbHVlLmpzVmFsdWVSZWdzKCkpOworICAgICAgICBKSVRDb21waWxlcjo6SnVtcCBpc05v
dENlbGwgPSBtX2ppdC5icmFuY2hJZk5vdENlbGwodmFsdWUuanNWYWx1ZVJlZ3MoKSk7CiAgICAg
ICAgIGlmIChub2RlLT5jaGlsZDEoKS51c2VLaW5kKCkgIT0gVW50eXBlZFVzZSkKICAgICAgICAg
ICAgIERGR19UWVBFX0NIRUNLKEpTVmFsdWVSZWdzKHRhZ0dQUiwgcGF5bG9hZEdQUiksIG5vZGUt
PmNoaWxkMSgpLCBTcGVjQ2VsbCwgaXNOb3RDZWxsKTsKIAogICAgICAgICBpZiAoIW5vZGUtPmNo
aWxkMSgpLT5zaG91bGRTcGVjdWxhdGVPYmplY3QoKSB8fCBub2RlLT5jaGlsZDEoKS51c2VLaW5k
KCkgPT0gU3RyaW5nVXNlKSB7Ci0gICAgICAgICAgICBKSVRDb21waWxlcjo6SnVtcCBub3RTdHJp
bmcgPSBicmFuY2hOb3RTdHJpbmcocGF5bG9hZEdQUik7CisgICAgICAgICAgICBKSVRDb21waWxl
cjo6SnVtcCBub3RTdHJpbmcgPSBtX2ppdC5icmFuY2hJZk5vdFN0cmluZyhwYXlsb2FkR1BSKTsK
ICAgICAgICAgICAgIGlmIChub2RlLT5jaGlsZDEoKS51c2VLaW5kKCkgPT0gU3RyaW5nVXNlKQog
ICAgICAgICAgICAgICAgIERGR19UWVBFX0NIRUNLKEpTVmFsdWVSZWdzKHRhZ0dQUiwgcGF5bG9h
ZEdQUiksIG5vZGUtPmNoaWxkMSgpLCBTcGVjU3RyaW5nLCBub3RTdHJpbmcpOwogICAgICAgICAg
ICAgbV9qaXQubW92ZShUcnVzdGVkSW1tUHRyKG1faml0LnZtKCktPnNtYWxsU3RyaW5ncy5zdHJp
bmdTdHJpbmcoKSksIHJlc3VsdEdQUik7CkBAIC00NTcwLDcgKzQ1NzAsNyBAQCB2b2lkIFNwZWN1
bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgIG1faml0LnN0b3JlMzIodmFs
dWUucGF5bG9hZEdQUigpLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhzY3JhdGNoMUdQUiwgVHlw
ZVByb2ZpbGVyTG9nOjpMb2dFbnRyeTo6dmFsdWVPZmZzZXQoKSArIE9CSkVDVF9PRkZTRVRPRihK
U1ZhbHVlLCB1LmFzQml0cy5wYXlsb2FkKSkpOwogCiAgICAgICAgIC8vIFN0b3JlIHRoZSBzdHJ1
Y3R1cmVJRCBvZiB0aGUgY2VsbCBpZiB2YWx1ZUdQUiBpcyBhIGNlbGwsIG90aGVyd2lzZSwgc3Rv
cmUgMCBvbiB0aGUgbG9nIGVudHJ5LgotICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBpc05v
dENlbGwgPSBicmFuY2hOb3RDZWxsKHZhbHVlLmpzVmFsdWVSZWdzKCkpOworICAgICAgICBNYWNy
b0Fzc2VtYmxlcjo6SnVtcCBpc05vdENlbGwgPSBtX2ppdC5icmFuY2hJZk5vdENlbGwodmFsdWUu
anNWYWx1ZVJlZ3MoKSk7CiAgICAgICAgIG1faml0LmxvYWQzMihNYWNyb0Fzc2VtYmxlcjo6QWRk
cmVzcyh2YWx1ZS5wYXlsb2FkR1BSKCksIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSksIHNj
cmF0Y2gzR1BSKTsKICAgICAgICAgbV9qaXQuc3RvcmUzMihzY3JhdGNoM0dQUiwgTWFjcm9Bc3Nl
bWJsZXI6OkFkZHJlc3Moc2NyYXRjaDFHUFIsIFR5cGVQcm9maWxlckxvZzo6TG9nRW50cnk6OnN0
cnVjdHVyZUlET2Zmc2V0KCkpKTsKICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXAgc2tpcElz
Q2VsbCA9IG1faml0Lmp1bXAoKTsKQEAgLTQ3MTMsMzIgKzQ3MTMsNiBAQCB2b2lkIFNwZWN1bGF0
aXZlSklUOjp3cml0ZUJhcnJpZXIoSlNDZWxsCiB9CiAjZW5kaWYgLy8gRU5BQkxFKEdHQykKIAot
SklUQ29tcGlsZXI6Okp1bXAgU3BlY3VsYXRpdmVKSVQ6OmJyYW5jaElzQ2VsbChKU1ZhbHVlUmVn
cyByZWdzKQotewotICAgIHJldHVybiBtX2ppdC5icmFuY2gzMihNYWNyb0Fzc2VtYmxlcjo6RXF1
YWwsIHJlZ3MudGFnR1BSKCksIFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpDZWxsVGFnKSk7Ci19Ci0K
LUpJVENvbXBpbGVyOjpKdW1wIFNwZWN1bGF0aXZlSklUOjpicmFuY2hOb3RDZWxsKEpTVmFsdWVS
ZWdzIHJlZ3MpCi17Ci0gICAgcmV0dXJuIG1faml0LmJyYW5jaDMyKE1hY3JvQXNzZW1ibGVyOjpO
b3RFcXVhbCwgcmVncy50YWdHUFIoKSwgVHJ1c3RlZEltbTMyKEpTVmFsdWU6OkNlbGxUYWcpKTsK
LX0KLQotSklUQ29tcGlsZXI6Okp1bXAgU3BlY3VsYXRpdmVKSVQ6OmJyYW5jaElzT3RoZXIoSlNW
YWx1ZVJlZ3MgcmVncywgR1BSUmVnIHRlbXBHUFIpCi17Ci0gICAgbV9qaXQub3IzMihUcnVzdGVk
SW1tMzIoMSksIHJlZ3MudGFnR1BSKCksIHRlbXBHUFIpOwotICAgIHJldHVybiBtX2ppdC5icmFu
Y2gzMigKLSAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkVxdWFsLCB0ZW1wR1BSLAotICAgICAgICBN
YWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbTMyKEpTVmFsdWU6Ok51bGxUYWcpKTsKLX0KLQotSklU
Q29tcGlsZXI6Okp1bXAgU3BlY3VsYXRpdmVKSVQ6OmJyYW5jaE5vdE90aGVyKEpTVmFsdWVSZWdz
IHJlZ3MsIEdQUlJlZyB0ZW1wR1BSKQotewotICAgIG1faml0Lm9yMzIoVHJ1c3RlZEltbTMyKDEp
LCByZWdzLnRhZ0dQUigpLCB0ZW1wR1BSKTsKLSAgICByZXR1cm4gbV9qaXQuYnJhbmNoMzIoCi0g
ICAgICAgIE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgdGVtcEdQUiwKLSAgICAgICAgTWFjcm9B
c3NlbWJsZXI6OlRydXN0ZWRJbW0zMihKU1ZhbHVlOjpOdWxsVGFnKSk7Ci19Ci0KIHZvaWQgU3Bl
Y3VsYXRpdmVKSVQ6Om1vdmVUcnVlVG8oR1BSUmVnIGdwcikKIHsKICAgICBtX2ppdC5tb3ZlKFRy
dXN0ZWRJbW0zMigxKSwgZ3ByKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
U3BlY3VsYXRpdmVKSVQ2NC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAkocmV2aXNpb24gMTgzNjUwKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMjA0LDcgKzIwNCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6Om5vblNwZWN1bGF0aXZl
Tm9uUGUKICAgICBKSVRDb21waWxlcjo6SnVtcCBub3RNYXNxdWVyYWRlc0FzVW5kZWZpbmVkOwog
ICAgIGlmIChtYXNxdWVyYWRlc0FzVW5kZWZpbmVkV2F0Y2hwb2ludElzU3RpbGxWYWxpZCgpKSB7
CiAgICAgICAgIGlmICghaXNLbm93bkNlbGwob3BlcmFuZC5ub2RlKCkpKQotICAgICAgICAgICAg
bm90Q2VsbCA9IGJyYW5jaE5vdENlbGwoSlNWYWx1ZVJlZ3MoYXJnR1BSKSk7CisgICAgICAgICAg
ICBub3RDZWxsID0gbV9qaXQuYnJhbmNoSWZOb3RDZWxsKEpTVmFsdWVSZWdzKGFyZ0dQUikpOwog
CiAgICAgICAgIG1faml0Lm1vdmUoaW52ZXJ0ID8gVHJ1c3RlZEltbTMyKDEpIDogVHJ1c3RlZElt
bTMyKDApLCByZXN1bHRHUFIpOwogICAgICAgICBub3RNYXNxdWVyYWRlc0FzVW5kZWZpbmVkID0g
bV9qaXQuanVtcCgpOwpAQCAtMjE0LDcgKzIxNCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6Om5v
blNwZWN1bGF0aXZlTm9uUGUKICAgICAgICAgR1BSVGVtcG9yYXJ5IHNjcmF0Y2godGhpcyk7CiAK
ICAgICAgICAgaWYgKCFpc0tub3duQ2VsbChvcGVyYW5kLm5vZGUoKSkpCi0gICAgICAgICAgICBu
b3RDZWxsID0gYnJhbmNoTm90Q2VsbChKU1ZhbHVlUmVncyhhcmdHUFIpKTsKKyAgICAgICAgICAg
IG5vdENlbGwgPSBtX2ppdC5icmFuY2hJZk5vdENlbGwoSlNWYWx1ZVJlZ3MoYXJnR1BSKSk7CiAg
ICAgICAgIAogICAgICAgICBKSVRDb21waWxlcjo6SnVtcCBpc01hc3F1ZXJhZGVzQXNVbmRlZmlu
ZWQgPSBtX2ppdC5icmFuY2hUZXN0OCgKICAgICAgICAgICAgIEpJVENvbXBpbGVyOjpOb25aZXJv
LCAKQEAgLTI3Myw3ICsyNzMsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpub25TcGVjdWxhdGl2
ZVBlZXBoCiAgICAgCiAgICAgaWYgKG1hc3F1ZXJhZGVzQXNVbmRlZmluZWRXYXRjaHBvaW50SXNT
dGlsbFZhbGlkKCkpIHsKICAgICAgICAgaWYgKCFpc0tub3duQ2VsbChvcGVyYW5kLm5vZGUoKSkp
Ci0gICAgICAgICAgICBub3RDZWxsID0gYnJhbmNoTm90Q2VsbChKU1ZhbHVlUmVncyhhcmdHUFIp
KTsKKyAgICAgICAgICAgIG5vdENlbGwgPSBtX2ppdC5icmFuY2hJZk5vdENlbGwoSlNWYWx1ZVJl
Z3MoYXJnR1BSKSk7CiAgICAgICAgIAogICAgICAgICBqdW1wKGludmVydCA/IHRha2VuIDogbm90
VGFrZW4sIEZvcmNlSnVtcCk7CiAgICAgfSBlbHNlIHsKQEAgLTI4Miw3ICsyODIsNyBAQCB2b2lk
IFNwZWN1bGF0aXZlSklUOjpub25TcGVjdWxhdGl2ZVBlZXBoCiAgICAgICAgIEdQUlRlbXBvcmFy
eSBzY3JhdGNoKHRoaXMpOwogCiAgICAgICAgIGlmICghaXNLbm93bkNlbGwob3BlcmFuZC5ub2Rl
KCkpKQotICAgICAgICAgICAgbm90Q2VsbCA9IGJyYW5jaE5vdENlbGwoSlNWYWx1ZVJlZ3MoYXJn
R1BSKSk7CisgICAgICAgICAgICBub3RDZWxsID0gbV9qaXQuYnJhbmNoSWZOb3RDZWxsKEpTVmFs
dWVSZWdzKGFyZ0dQUikpOwogICAgICAgICAKICAgICAgICAgYnJhbmNoVGVzdDgoSklUQ29tcGls
ZXI6Olplcm8sIAogICAgICAgICAgICAgSklUQ29tcGlsZXI6OkFkZHJlc3MoYXJnR1BSLCBKU0Nl
bGw6OnR5cGVJbmZvRmxhZ3NPZmZzZXQoKSksIApAQCAtMTExOSw3ICsxMTE5LDcgQEAgR1BSUmVn
IFNwZWN1bGF0aXZlSklUOjpmaWxsU3BlY3VsYXRlQ2VsbAogCiAgICAgICAgIGluZm8uZmlsbEpT
VmFsdWUoKm1fc3RyZWFtLCBncHIsIERhdGFGb3JtYXRKUyk7CiAgICAgICAgIGlmICh0eXBlICYg
flNwZWNDZWxsKQotICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhCYWRUeXBlLCBKU1ZhbHVl
UmVncyhncHIpLCBlZGdlLCBicmFuY2hOb3RDZWxsKEpTVmFsdWVSZWdzKGdwcikpKTsKKyAgICAg
ICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFkVHlwZSwgSlNWYWx1ZVJlZ3MoZ3ByKSwgZWRnZSwg
bV9qaXQuYnJhbmNoSWZOb3RDZWxsKEpTVmFsdWVSZWdzKGdwcikpKTsKICAgICAgICAgaW5mby5m
aWxsSlNWYWx1ZSgqbV9zdHJlYW0sIGdwciwgRGF0YUZvcm1hdEpTQ2VsbCk7CiAgICAgICAgIHJl
dHVybiBncHI7CiAgICAgfQpAQCAtMTEyOSw3ICsxMTI5LDcgQEAgR1BSUmVnIFNwZWN1bGF0aXZl
SklUOjpmaWxsU3BlY3VsYXRlQ2VsbAogICAgICAgICBHUFJSZWcgZ3ByID0gaW5mby5ncHIoKTsK
ICAgICAgICAgbV9ncHJzLmxvY2soZ3ByKTsKICAgICAgICAgaWYgKCFBU1NFUlRfRElTQUJMRUQp
IHsKLSAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIGNoZWNrQ2VsbCA9IGJyYW5jaElz
Q2VsbChKU1ZhbHVlUmVncyhncHIpKTsKKyAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1w
IGNoZWNrQ2VsbCA9IG1faml0LmJyYW5jaElmQ2VsbChKU1ZhbHVlUmVncyhncHIpKTsKICAgICAg
ICAgICAgIG1faml0LmFib3J0V2l0aFJlYXNvbihERkdJc05vdENlbGwpOwogICAgICAgICAgICAg
Y2hlY2tDZWxsLmxpbmsoJm1faml0KTsKICAgICAgICAgfQpAQCAtMTE0MCw3ICsxMTQwLDcgQEAg
R1BSUmVnIFNwZWN1bGF0aXZlSklUOjpmaWxsU3BlY3VsYXRlQ2VsbAogICAgICAgICBHUFJSZWcg
Z3ByID0gaW5mby5ncHIoKTsKICAgICAgICAgbV9ncHJzLmxvY2soZ3ByKTsKICAgICAgICAgaWYg
KHR5cGUgJiB+U3BlY0NlbGwpCi0gICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEJhZFR5cGUs
IEpTVmFsdWVSZWdzKGdwciksIGVkZ2UsIGJyYW5jaE5vdENlbGwoSlNWYWx1ZVJlZ3MoZ3ByKSkp
OworICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhCYWRUeXBlLCBKU1ZhbHVlUmVncyhncHIp
LCBlZGdlLCBtX2ppdC5icmFuY2hJZk5vdENlbGwoSlNWYWx1ZVJlZ3MoZ3ByKSkpOwogICAgICAg
ICBpbmZvLmZpbGxKU1ZhbHVlKCptX3N0cmVhbSwgZ3ByLCBEYXRhRm9ybWF0SlNDZWxsKTsKICAg
ICAgICAgcmV0dXJuIGdwcjsKICAgICB9CkBAIC0xMjY1LDEyICsxMjY1LDEyIEBAIHZvaWQgU3Bl
Y3VsYXRpdmVKSVQ6OmNvbXBpbGVPYmplY3RFcXVhbGkKICAgIAogICAgIGlmIChtYXNxdWVyYWRl
c0FzVW5kZWZpbmVkV2F0Y2hwb2ludElzU3RpbGxWYWxpZCgpKSB7CiAgICAgICAgIERGR19UWVBF
X0NIRUNLKAotICAgICAgICAgICAgSlNWYWx1ZVNvdXJjZTo6dW5ib3hlZENlbGwob3AxR1BSKSwg
bm9kZS0+Y2hpbGQxKCksIFNwZWNPYmplY3QsIGJyYW5jaE5vdE9iamVjdChvcDFHUFIpKTsKKyAg
ICAgICAgICAgIEpTVmFsdWVTb3VyY2U6OnVuYm94ZWRDZWxsKG9wMUdQUiksIG5vZGUtPmNoaWxk
MSgpLCBTcGVjT2JqZWN0LCBtX2ppdC5icmFuY2hJZk5vdE9iamVjdChvcDFHUFIpKTsKICAgICAg
ICAgREZHX1RZUEVfQ0hFQ0soCi0gICAgICAgICAgICBKU1ZhbHVlU291cmNlOjp1bmJveGVkQ2Vs
bChvcDJHUFIpLCBub2RlLT5jaGlsZDIoKSwgU3BlY09iamVjdCwgYnJhbmNoTm90T2JqZWN0KG9w
MkdQUikpOworICAgICAgICAgICAgSlNWYWx1ZVNvdXJjZTo6dW5ib3hlZENlbGwob3AyR1BSKSwg
bm9kZS0+Y2hpbGQyKCksIFNwZWNPYmplY3QsIG1faml0LmJyYW5jaElmTm90T2JqZWN0KG9wMkdQ
UikpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIERGR19UWVBFX0NIRUNLKAotICAgICAgICAgICAg
SlNWYWx1ZVNvdXJjZTo6dW5ib3hlZENlbGwob3AxR1BSKSwgbm9kZS0+Y2hpbGQxKCksIFNwZWNP
YmplY3QsIGJyYW5jaE5vdE9iamVjdChvcDFHUFIpKTsKKyAgICAgICAgICAgIEpTVmFsdWVTb3Vy
Y2U6OnVuYm94ZWRDZWxsKG9wMUdQUiksIG5vZGUtPmNoaWxkMSgpLCBTcGVjT2JqZWN0LCBtX2pp
dC5icmFuY2hJZk5vdE9iamVjdChvcDFHUFIpKTsKICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhC
YWRUeXBlLCBKU1ZhbHVlU291cmNlOjp1bmJveGVkQ2VsbChvcDFHUFIpLCBub2RlLT5jaGlsZDEo
KSwKICAgICAgICAgICAgIG1faml0LmJyYW5jaFRlc3Q4KAogICAgICAgICAgICAgICAgIE1hY3Jv
QXNzZW1ibGVyOjpOb25aZXJvLCAKQEAgLTEyNzgsNyArMTI3OCw3IEBAIHZvaWQgU3BlY3VsYXRp
dmVKSVQ6OmNvbXBpbGVPYmplY3RFcXVhbGkKICAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxl
cjo6VHJ1c3RlZEltbTMyKE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQpKSk7CiAKICAgICAgICAgREZH
X1RZUEVfQ0hFQ0soCi0gICAgICAgICAgICBKU1ZhbHVlU291cmNlOjp1bmJveGVkQ2VsbChvcDJH
UFIpLCBub2RlLT5jaGlsZDIoKSwgU3BlY09iamVjdCwgYnJhbmNoTm90T2JqZWN0KG9wMkdQUikp
OworICAgICAgICAgICAgSlNWYWx1ZVNvdXJjZTo6dW5ib3hlZENlbGwob3AyR1BSKSwgbm9kZS0+
Y2hpbGQyKCksIFNwZWNPYmplY3QsIG1faml0LmJyYW5jaElmTm90T2JqZWN0KG9wMkdQUikpOwog
ICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEJhZFR5cGUsIEpTVmFsdWVTb3VyY2U6OnVuYm94ZWRD
ZWxsKG9wMkdQUiksIG5vZGUtPmNoaWxkMigpLAogICAgICAgICAgICAgbV9qaXQuYnJhbmNoVGVz
dDgoCiAgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6Ok5vblplcm8sIApAQCAtMTMxMSwx
MCArMTMxMSwxMCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlT2JqZWN0VG9PYmplCiAK
ICAgICBpZiAobWFzcXVlcmFkZXNBc1VuZGVmaW5lZFdhdGNocG9pbnRWYWxpZCkgewogICAgICAg
ICBERkdfVFlQRV9DSEVDSygKLSAgICAgICAgICAgIEpTVmFsdWVTb3VyY2U6OnVuYm94ZWRDZWxs
KG9wMUdQUiksIGxlZnRDaGlsZCwgU3BlY09iamVjdCwgYnJhbmNoTm90T2JqZWN0KG9wMUdQUikp
OworICAgICAgICAgICAgSlNWYWx1ZVNvdXJjZTo6dW5ib3hlZENlbGwob3AxR1BSKSwgbGVmdENo
aWxkLCBTcGVjT2JqZWN0LCBtX2ppdC5icmFuY2hJZk5vdE9iamVjdChvcDFHUFIpKTsKICAgICB9
IGVsc2UgewogICAgICAgICBERkdfVFlQRV9DSEVDSygKLSAgICAgICAgICAgIEpTVmFsdWVTb3Vy
Y2U6OnVuYm94ZWRDZWxsKG9wMUdQUiksIGxlZnRDaGlsZCwgU3BlY09iamVjdCwgYnJhbmNoTm90
T2JqZWN0KG9wMUdQUikpOworICAgICAgICAgICAgSlNWYWx1ZVNvdXJjZTo6dW5ib3hlZENlbGwo
b3AxR1BSKSwgbGVmdENoaWxkLCBTcGVjT2JqZWN0LCBtX2ppdC5icmFuY2hJZk5vdE9iamVjdChv
cDFHUFIpKTsKICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhCYWRUeXBlLCBKU1ZhbHVlU291cmNl
Ojp1bmJveGVkQ2VsbChvcDFHUFIpLCBsZWZ0Q2hpbGQsCiAgICAgICAgICAgICBtX2ppdC5icmFu
Y2hUZXN0OCgKICAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6Tm9uWmVybywgCkBAIC0x
MzI0LDE1ICsxMzI0LDE1IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVPYmplY3RUb09i
amUKICAgICAKICAgICAvLyBJdCBzZWVtcyB0aGF0IG1vc3Qgb2YgdGhlIHRpbWUgd2hlbiBwcm9n
cmFtcyBkbyBhID09IGIgd2hlcmUgYiBtYXkgYmUgZWl0aGVyIG51bGwvdW5kZWZpbmVkCiAgICAg
Ly8gb3IgYW4gb2JqZWN0LCBiIGlzIHVzdWFsbHkgYW4gb2JqZWN0LiBCYWxhbmNlIHRoZSBicmFu
Y2hlcyB0byBtYWtlIHRoYXQgY2FzZSBmYXN0LgotICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIHJp
Z2h0Tm90Q2VsbCA9IGJyYW5jaE5vdENlbGwoSlNWYWx1ZVJlZ3Mob3AyR1BSKSk7CisgICAgTWFj
cm9Bc3NlbWJsZXI6Okp1bXAgcmlnaHROb3RDZWxsID0gbV9qaXQuYnJhbmNoSWZOb3RDZWxsKEpT
VmFsdWVSZWdzKG9wMkdQUikpOwogICAgIAogICAgIC8vIFdlIGtub3cgdGhhdCB3aXRoaW4gdGhp
cyBicmFuY2gsIHJpZ2h0Q2hpbGQgbXVzdCBiZSBhIGNlbGwuIAogICAgIGlmIChtYXNxdWVyYWRl
c0FzVW5kZWZpbmVkV2F0Y2hwb2ludFZhbGlkKSB7CiAgICAgICAgIERGR19UWVBFX0NIRUNLKAot
ICAgICAgICAgICAgSlNWYWx1ZVJlZ3Mob3AyR1BSKSwgcmlnaHRDaGlsZCwgKH5TcGVjQ2VsbCkg
fCBTcGVjT2JqZWN0LCBicmFuY2hOb3RPYmplY3Qob3AyR1BSKSk7CisgICAgICAgICAgICBKU1Zh
bHVlUmVncyhvcDJHUFIpLCByaWdodENoaWxkLCAoflNwZWNDZWxsKSB8IFNwZWNPYmplY3QsIG1f
aml0LmJyYW5jaElmTm90T2JqZWN0KG9wMkdQUikpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIERG
R19UWVBFX0NIRUNLKAotICAgICAgICAgICAgSlNWYWx1ZVJlZ3Mob3AyR1BSKSwgcmlnaHRDaGls
ZCwgKH5TcGVjQ2VsbCkgfCBTcGVjT2JqZWN0LCBicmFuY2hOb3RPYmplY3Qob3AyR1BSKSk7Cisg
ICAgICAgICAgICBKU1ZhbHVlUmVncyhvcDJHUFIpLCByaWdodENoaWxkLCAoflNwZWNDZWxsKSB8
IFNwZWNPYmplY3QsIG1faml0LmJyYW5jaElmTm90T2JqZWN0KG9wMkdQUikpOwogICAgICAgICBz
cGVjdWxhdGlvbkNoZWNrKEJhZFR5cGUsIEpTVmFsdWVSZWdzKG9wMkdQUiksIHJpZ2h0Q2hpbGQs
CiAgICAgICAgICAgICBtX2ppdC5icmFuY2hUZXN0OCgKICAgICAgICAgICAgICAgICBNYWNyb0Fz
c2VtYmxlcjo6Tm9uWmVybywgCkBAIC0xMzg5LDEwICsxMzg5LDEwIEBAIHZvaWQgU3BlY3VsYXRp
dmVKSVQ6OmNvbXBpbGVQZWVwSG9sZU9iamUKIAogICAgIGlmIChtYXNxdWVyYWRlc0FzVW5kZWZp
bmVkV2F0Y2hwb2ludFZhbGlkKSB7CiAgICAgICAgIERGR19UWVBFX0NIRUNLKAotICAgICAgICAg
ICAgSlNWYWx1ZVNvdXJjZTo6dW5ib3hlZENlbGwob3AxR1BSKSwgbGVmdENoaWxkLCBTcGVjT2Jq
ZWN0LCBicmFuY2hOb3RPYmplY3Qob3AxR1BSKSk7CisgICAgICAgICAgICBKU1ZhbHVlU291cmNl
Ojp1bmJveGVkQ2VsbChvcDFHUFIpLCBsZWZ0Q2hpbGQsIFNwZWNPYmplY3QsIG1faml0LmJyYW5j
aElmTm90T2JqZWN0KG9wMUdQUikpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIERGR19UWVBFX0NI
RUNLKAotICAgICAgICAgICAgSlNWYWx1ZVNvdXJjZTo6dW5ib3hlZENlbGwob3AxR1BSKSwgbGVm
dENoaWxkLCBTcGVjT2JqZWN0LCBicmFuY2hOb3RPYmplY3Qob3AxR1BSKSk7CisgICAgICAgICAg
ICBKU1ZhbHVlU291cmNlOjp1bmJveGVkQ2VsbChvcDFHUFIpLCBsZWZ0Q2hpbGQsIFNwZWNPYmpl
Y3QsIG1faml0LmJyYW5jaElmTm90T2JqZWN0KG9wMUdQUikpOwogICAgICAgICBzcGVjdWxhdGlv
bkNoZWNrKEJhZFR5cGUsIEpTVmFsdWVTb3VyY2U6OnVuYm94ZWRDZWxsKG9wMUdQUiksIGxlZnRD
aGlsZCwgCiAgICAgICAgICAgICBtX2ppdC5icmFuY2hUZXN0OCgKICAgICAgICAgICAgICAgICBN
YWNyb0Fzc2VtYmxlcjo6Tm9uWmVybywgCkBAIC0xNDAyLDE1ICsxNDAyLDE1IEBAIHZvaWQgU3Bl
Y3VsYXRpdmVKSVQ6OmNvbXBpbGVQZWVwSG9sZU9iamUKIAogICAgIC8vIEl0IHNlZW1zIHRoYXQg
bW9zdCBvZiB0aGUgdGltZSB3aGVuIHByb2dyYW1zIGRvIGEgPT0gYiB3aGVyZSBiIG1heSBiZSBl
aXRoZXIgbnVsbC91bmRlZmluZWQKICAgICAvLyBvciBhbiBvYmplY3QsIGIgaXMgdXN1YWxseSBh
biBvYmplY3QuIEJhbGFuY2UgdGhlIGJyYW5jaGVzIHRvIG1ha2UgdGhhdCBjYXNlIGZhc3QuCi0g
ICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXAgcmlnaHROb3RDZWxsID0gYnJhbmNoTm90Q2VsbChKU1Zh
bHVlUmVncyhvcDJHUFIpKTsKKyAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCByaWdodE5vdENlbGwg
PSBtX2ppdC5icmFuY2hJZk5vdENlbGwoSlNWYWx1ZVJlZ3Mob3AyR1BSKSk7CiAgICAgCiAgICAg
Ly8gV2Uga25vdyB0aGF0IHdpdGhpbiB0aGlzIGJyYW5jaCwgcmlnaHRDaGlsZCBtdXN0IGJlIGEg
Y2VsbC4gCiAgICAgaWYgKG1hc3F1ZXJhZGVzQXNVbmRlZmluZWRXYXRjaHBvaW50VmFsaWQpIHsK
ICAgICAgICAgREZHX1RZUEVfQ0hFQ0soCi0gICAgICAgICAgICBKU1ZhbHVlUmVncyhvcDJHUFIp
LCByaWdodENoaWxkLCAoflNwZWNDZWxsKSB8IFNwZWNPYmplY3QsIGJyYW5jaE5vdE9iamVjdChv
cDJHUFIpKTsKKyAgICAgICAgICAgIEpTVmFsdWVSZWdzKG9wMkdQUiksIHJpZ2h0Q2hpbGQsICh+
U3BlY0NlbGwpIHwgU3BlY09iamVjdCwgbV9qaXQuYnJhbmNoSWZOb3RPYmplY3Qob3AyR1BSKSk7
CiAgICAgfSBlbHNlIHsKICAgICAgICAgREZHX1RZUEVfQ0hFQ0soCi0gICAgICAgICAgICBKU1Zh
bHVlUmVncyhvcDJHUFIpLCByaWdodENoaWxkLCAoflNwZWNDZWxsKSB8IFNwZWNPYmplY3QsIGJy
YW5jaE5vdE9iamVjdChvcDJHUFIpKTsKKyAgICAgICAgICAgIEpTVmFsdWVSZWdzKG9wMkdQUiks
IHJpZ2h0Q2hpbGQsICh+U3BlY0NlbGwpIHwgU3BlY09iamVjdCwgbV9qaXQuYnJhbmNoSWZOb3RP
YmplY3Qob3AyR1BSKSk7CiAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFkVHlwZSwgSlNWYWx1
ZVJlZ3Mob3AyR1BSKSwgcmlnaHRDaGlsZCwKICAgICAgICAgICAgIG1faml0LmJyYW5jaFRlc3Q4
KAogICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpOb25aZXJvLCAKQEAgLTE1MjksMTMg
KzE1MjksMTMgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU9iamVjdE9yT3RoZQogICAg
ICAgICBzY3JhdGNoR1BSID0gc2NyYXRjaC5ncHIoKTsKICAgICB9CiAKLSAgICBNYWNyb0Fzc2Vt
Ymxlcjo6SnVtcCBub3RDZWxsID0gYnJhbmNoTm90Q2VsbChKU1ZhbHVlUmVncyh2YWx1ZUdQUikp
OworICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIG5vdENlbGwgPSBtX2ppdC5icmFuY2hJZk5vdENl
bGwoSlNWYWx1ZVJlZ3ModmFsdWVHUFIpKTsKICAgICBpZiAobWFzcXVlcmFkZXNBc1VuZGVmaW5l
ZFdhdGNocG9pbnRWYWxpZCkgewogICAgICAgICBERkdfVFlQRV9DSEVDSygKLSAgICAgICAgICAg
IEpTVmFsdWVSZWdzKHZhbHVlR1BSKSwgbm9kZVVzZSwgKH5TcGVjQ2VsbCkgfCBTcGVjT2JqZWN0
LCBicmFuY2hOb3RPYmplY3QodmFsdWVHUFIpKTsKKyAgICAgICAgICAgIEpTVmFsdWVSZWdzKHZh
bHVlR1BSKSwgbm9kZVVzZSwgKH5TcGVjQ2VsbCkgfCBTcGVjT2JqZWN0LCBtX2ppdC5icmFuY2hJ
Zk5vdE9iamVjdCh2YWx1ZUdQUikpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIERGR19UWVBFX0NI
RUNLKAotICAgICAgICAgICAgSlNWYWx1ZVJlZ3ModmFsdWVHUFIpLCBub2RlVXNlLCAoflNwZWND
ZWxsKSB8IFNwZWNPYmplY3QsIGJyYW5jaE5vdE9iamVjdCh2YWx1ZUdQUikpOworICAgICAgICAg
ICAgSlNWYWx1ZVJlZ3ModmFsdWVHUFIpLCBub2RlVXNlLCAoflNwZWNDZWxsKSB8IFNwZWNPYmpl
Y3QsIG1faml0LmJyYW5jaElmTm90T2JqZWN0KHZhbHVlR1BSKSk7CiAKICAgICAgICAgTWFjcm9B
c3NlbWJsZXI6Okp1bXAgaXNOb3RNYXNxdWVyYWRlc0FzVW5kZWZpbmVkID0gCiAgICAgICAgICAg
ICBtX2ppdC5icmFuY2hUZXN0OCgKQEAgLTE2NzMsMTMgKzE2NzMsMTMgQEAgdm9pZCBTcGVjdWxh
dGl2ZUpJVDo6ZW1pdE9iamVjdE9yT3RoZXJCcgogICAgICAgICBzdHJ1Y3R1cmVHUFIgPSBzdHJ1
Y3R1cmUuZ3ByKCk7CiAgICAgfQogCi0gICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXAgbm90Q2VsbCA9
IGJyYW5jaE5vdENlbGwoSlNWYWx1ZVJlZ3ModmFsdWVHUFIpKTsKKyAgICBNYWNyb0Fzc2VtYmxl
cjo6SnVtcCBub3RDZWxsID0gbV9qaXQuYnJhbmNoSWZOb3RDZWxsKEpTVmFsdWVSZWdzKHZhbHVl
R1BSKSk7CiAgICAgaWYgKG1hc3F1ZXJhZGVzQXNVbmRlZmluZWRXYXRjaHBvaW50SXNTdGlsbFZh
bGlkKCkpIHsKICAgICAgICAgREZHX1RZUEVfQ0hFQ0soCi0gICAgICAgICAgICBKU1ZhbHVlUmVn
cyh2YWx1ZUdQUiksIG5vZGVVc2UsICh+U3BlY0NlbGwpIHwgU3BlY09iamVjdCwgYnJhbmNoTm90
T2JqZWN0KHZhbHVlR1BSKSk7CisgICAgICAgICAgICBKU1ZhbHVlUmVncyh2YWx1ZUdQUiksIG5v
ZGVVc2UsICh+U3BlY0NlbGwpIHwgU3BlY09iamVjdCwgbV9qaXQuYnJhbmNoSWZOb3RPYmplY3Qo
dmFsdWVHUFIpKTsKICAgICB9IGVsc2UgewogICAgICAgICBERkdfVFlQRV9DSEVDSygKLSAgICAg
ICAgICAgIEpTVmFsdWVSZWdzKHZhbHVlR1BSKSwgbm9kZVVzZSwgKH5TcGVjQ2VsbCkgfCBTcGVj
T2JqZWN0LCBicmFuY2hOb3RPYmplY3QodmFsdWVHUFIpKTsKKyAgICAgICAgICAgIEpTVmFsdWVS
ZWdzKHZhbHVlR1BSKSwgbm9kZVVzZSwgKH5TcGVjQ2VsbCkgfCBTcGVjT2JqZWN0LCBtX2ppdC5i
cmFuY2hJZk5vdE9iamVjdCh2YWx1ZUdQUikpOwogCiAgICAgICAgIEpJVENvbXBpbGVyOjpKdW1w
IGlzTm90TWFzcXVlcmFkZXNBc1VuZGVmaW5lZCA9IG1faml0LmJyYW5jaFRlc3Q4KAogICAgICAg
ICAgICAgSklUQ29tcGlsZXI6Olplcm8sIApAQCAtMzE2Nyw4ICszMTY3LDggQEAgdm9pZCBTcGVj
dWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICAKICAgICAgICAgb3AxLnVz
ZSgpOwogICAgICAgICAKLSAgICAgICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXAgYWxyZWFkeVByaW1p
dGl2ZSA9IGJyYW5jaE5vdENlbGwoSlNWYWx1ZVJlZ3Mob3AxR1BSKSk7Ci0gICAgICAgIE1hY3Jv
QXNzZW1ibGVyOjpKdW1wIG5vdFByaW1pdGl2ZSA9IGJyYW5jaElzT2JqZWN0KG9wMUdQUik7Cisg
ICAgICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIGFscmVhZHlQcmltaXRpdmUgPSBtX2ppdC5icmFu
Y2hJZk5vdENlbGwoSlNWYWx1ZVJlZ3Mob3AxR1BSKSk7CisgICAgICAgIE1hY3JvQXNzZW1ibGVy
OjpKdW1wIG5vdFByaW1pdGl2ZSA9IG1faml0LmJyYW5jaElmT2JqZWN0KG9wMUdQUik7CiAgICAg
ICAgIAogICAgICAgICBhbHJlYWR5UHJpbWl0aXZlLmxpbmsoJm1faml0KTsKICAgICAgICAgbV9q
aXQubW92ZShvcDFHUFIsIHJlc3VsdEdQUik7CkBAIC0zMTkzLDggKzMxOTMsOCBAQCB2b2lkIFNw
ZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgICAgICAKICAgICAgICAg
ICAgIEpJVENvbXBpbGVyOjpKdW1wIGRvbmU7CiAgICAgICAgICAgICBpZiAobm9kZS0+Y2hpbGQx
KCktPnByZWRpY3Rpb24oKSAmIFNwZWNTdHJpbmcpIHsKLSAgICAgICAgICAgICAgICBKSVRDb21w
aWxlcjo6SnVtcCBzbG93UGF0aDEgPSBicmFuY2hOb3RDZWxsKEpTVmFsdWVSZWdzKG9wMUdQUikp
OwotICAgICAgICAgICAgICAgIEpJVENvbXBpbGVyOjpKdW1wIHNsb3dQYXRoMiA9IGJyYW5jaE5v
dFN0cmluZyhvcDFHUFIpOworICAgICAgICAgICAgICAgIEpJVENvbXBpbGVyOjpKdW1wIHNsb3dQ
YXRoMSA9IG1faml0LmJyYW5jaElmTm90Q2VsbChKU1ZhbHVlUmVncyhvcDFHUFIpKTsKKyAgICAg
ICAgICAgICAgICBKSVRDb21waWxlcjo6SnVtcCBzbG93UGF0aDIgPSBtX2ppdC5icmFuY2hJZk5v
dFN0cmluZyhvcDFHUFIpOwogICAgICAgICAgICAgICAgIG1faml0Lm1vdmUob3AxR1BSLCByZXN1
bHRHUFIpOwogICAgICAgICAgICAgICAgIGRvbmUgPSBtX2ppdC5qdW1wKCk7CiAgICAgICAgICAg
ICAgICAgc2xvd1BhdGgxLmxpbmsoJm1faml0KTsKQEAgLTM1NTMsNyArMzU1Myw3IEBAIHZvaWQg
U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgR1BSUmVnIHRlbXBH
UFIgPSB0ZW1wLmdwcigpOwogICAgICAgICAKICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXBM
aXN0IHNsb3dDYXNlczsKLSAgICAgICAgc2xvd0Nhc2VzLmFwcGVuZChicmFuY2hOb3RDZWxsKEpT
VmFsdWVSZWdzKHRoaXNWYWx1ZUdQUikpKTsKKyAgICAgICAgc2xvd0Nhc2VzLmFwcGVuZChtX2pp
dC5icmFuY2hJZk5vdENlbGwoSlNWYWx1ZVJlZ3ModGhpc1ZhbHVlR1BSKSkpOwogICAgICAgICBz
bG93Q2FzZXMuYXBwZW5kKG1faml0LmJyYW5jaDgoCiAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxl
cjo6Tm90RXF1YWwsCiAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyh0aGlzVmFs
dWVHUFIsIEpTQ2VsbDo6dHlwZUluZm9UeXBlT2Zmc2V0KCkpLApAQCAtMzcwMyw3ICszNzAzLDcg
QEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICAKICAg
ICAgICAgICAgIGJhc2UudXNlKCk7CiAgICAgICAgIAotICAgICAgICAgICAgSklUQ29tcGlsZXI6
Okp1bXAgbm90Q2VsbCA9IGJyYW5jaE5vdENlbGwoSlNWYWx1ZVJlZ3MoYmFzZUdQUikpOworICAg
ICAgICAgICAgSklUQ29tcGlsZXI6Okp1bXAgbm90Q2VsbCA9IG1faml0LmJyYW5jaElmTm90Q2Vs
bChKU1ZhbHVlUmVncyhiYXNlR1BSKSk7CiAgICAgICAgIAogICAgICAgICAgICAgY2FjaGVkR2V0
QnlJZChub2RlLT5vcmlnaW4uc2VtYW50aWMsIGJhc2VHUFIsIHJlc3VsdEdQUiwgbm9kZS0+aWRl
bnRpZmllck51bWJlcigpLCBub3RDZWxsKTsKICAgICAgICAgCkBAIC0zNzUzLDcgKzM3NTMsNyBA
QCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgICAgICBi
YXNlLnVzZSgpOwogICAgICAgICAgICAgZmx1c2hSZWdpc3RlcnMoKTsKICAgICAgICAgCi0gICAg
ICAgICAgICBKSVRDb21waWxlcjo6SnVtcCBub3RDZWxsID0gYnJhbmNoTm90Q2VsbChKU1ZhbHVl
UmVncyhiYXNlR1BSKSk7CisgICAgICAgICAgICBKSVRDb21waWxlcjo6SnVtcCBub3RDZWxsID0g
bV9qaXQuYnJhbmNoSWZOb3RDZWxsKEpTVmFsdWVSZWdzKGJhc2VHUFIpKTsKICAgICAgICAgCiAg
ICAgICAgICAgICBjYWNoZWRHZXRCeUlkKG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgYmFzZUdQUiwg
cmVzdWx0R1BSLCBub2RlLT5pZGVudGlmaWVyTnVtYmVyKCksIG5vdENlbGwsIERvbnRTcGlsbCk7
CiAgICAgICAgIApAQCAtNDA0OSw3ICs0MDQ5LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29t
cGlsZShOb2RlKiBub2RlKQogICAgICAgICBHUFJUZW1wb3JhcnkgcmVtb3RlR2xvYmFsT2JqZWN0
KHRoaXMpOwogICAgICAgICBHUFJUZW1wb3Jhcnkgc2NyYXRjaCh0aGlzKTsKIAotICAgICAgICBK
SVRDb21waWxlcjo6SnVtcCBpc0NlbGwgPSBicmFuY2hJc0NlbGwodmFsdWUuanNWYWx1ZVJlZ3Mo
KSk7CisgICAgICAgIEpJVENvbXBpbGVyOjpKdW1wIGlzQ2VsbCA9IG1faml0LmJyYW5jaElmQ2Vs
bCh2YWx1ZS5qc1ZhbHVlUmVncygpKTsKIAogICAgICAgICBtX2ppdC5jb21wYXJlNjQoSklUQ29t
cGlsZXI6OkVxdWFsLCB2YWx1ZS5ncHIoKSwgVHJ1c3RlZEltbTMyKFZhbHVlVW5kZWZpbmVkKSwg
cmVzdWx0LmdwcigpKTsKICAgICAgICAgSklUQ29tcGlsZXI6Okp1bXAgZG9uZSA9IG1faml0Lmp1
bXAoKTsKQEAgLTQxMDksNyArNDEwOSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUo
Tm9kZSogbm9kZSkKICAgICAgICAgSlNWYWx1ZU9wZXJhbmQgdmFsdWUodGhpcywgbm9kZS0+Y2hp
bGQxKCkpOwogICAgICAgICBHUFJUZW1wb3JhcnkgcmVzdWx0KHRoaXMsIFJldXNlLCB2YWx1ZSk7
CiAgICAgICAgIAotICAgICAgICBKSVRDb21waWxlcjo6SnVtcCBpc05vdENlbGwgPSBicmFuY2hO
b3RDZWxsKHZhbHVlLmpzVmFsdWVSZWdzKCkpOworICAgICAgICBKSVRDb21waWxlcjo6SnVtcCBp
c05vdENlbGwgPSBtX2ppdC5icmFuY2hJZk5vdENlbGwodmFsdWUuanNWYWx1ZVJlZ3MoKSk7CiAg
ICAgICAgIAogICAgICAgICBtX2ppdC5jb21wYXJlOChKSVRDb21waWxlcjo6RXF1YWwsIAogICAg
ICAgICAgICAgSklUQ29tcGlsZXI6OkFkZHJlc3ModmFsdWUuZ3ByKCksIEpTQ2VsbDo6dHlwZUlu
Zm9UeXBlT2Zmc2V0KCkpLCAKQEAgLTQxMzAsNyArNDEzMCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVK
SVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgSlNWYWx1ZU9wZXJhbmQgdmFsdWUodGhp
cywgbm9kZS0+Y2hpbGQxKCkpOwogICAgICAgICBHUFJUZW1wb3JhcnkgcmVzdWx0KHRoaXMsIFJl
dXNlLCB2YWx1ZSk7CiAKLSAgICAgICAgSklUQ29tcGlsZXI6Okp1bXAgaXNOb3RDZWxsID0gYnJh
bmNoTm90Q2VsbCh2YWx1ZS5qc1ZhbHVlUmVncygpKTsKKyAgICAgICAgSklUQ29tcGlsZXI6Okp1
bXAgaXNOb3RDZWxsID0gbV9qaXQuYnJhbmNoSWZOb3RDZWxsKHZhbHVlLmpzVmFsdWVSZWdzKCkp
OwogCiAgICAgICAgIG1faml0LmNvbXBhcmU4KEpJVENvbXBpbGVyOjpBYm92ZU9yRXF1YWwsCiAg
ICAgICAgICAgICBKSVRDb21waWxlcjo6QWRkcmVzcyh2YWx1ZS5ncHIoKSwgSlNDZWxsOjp0eXBl
SW5mb1R5cGVPZmZzZXQoKSksCkBAIC00MTgyLDEyICs0MTgyLDEyIEBAIHZvaWQgU3BlY3VsYXRp
dmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgCiAgICAgICAgIEFTU0VSVChub2Rl
LT5jaGlsZDEoKS51c2VLaW5kKCkgPT0gVW50eXBlZFVzZSB8fCBub2RlLT5jaGlsZDEoKS51c2VL
aW5kKCkgPT0gQ2VsbFVzZSB8fCBub2RlLT5jaGlsZDEoKS51c2VLaW5kKCkgPT0gU3RyaW5nVXNl
KTsKIAotICAgICAgICBKSVRDb21waWxlcjo6SnVtcCBpc05vdENlbGwgPSBicmFuY2hOb3RDZWxs
KEpTVmFsdWVSZWdzKHZhbHVlR1BSKSk7CisgICAgICAgIEpJVENvbXBpbGVyOjpKdW1wIGlzTm90
Q2VsbCA9IG1faml0LmJyYW5jaElmTm90Q2VsbChKU1ZhbHVlUmVncyh2YWx1ZUdQUikpOwogICAg
ICAgICBpZiAobm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpICE9IFVudHlwZWRVc2UpCiAgICAgICAg
ICAgICBERkdfVFlQRV9DSEVDSyhKU1ZhbHVlU291cmNlKHZhbHVlR1BSKSwgbm9kZS0+Y2hpbGQx
KCksIFNwZWNDZWxsLCBpc05vdENlbGwpOwogCiAgICAgICAgIGlmICghbm9kZS0+Y2hpbGQxKCkt
PnNob3VsZFNwZWN1bGF0ZU9iamVjdCgpIHx8IG5vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSA9PSBT
dHJpbmdVc2UpIHsKLSAgICAgICAgICAgIEpJVENvbXBpbGVyOjpKdW1wIG5vdFN0cmluZyA9IGJy
YW5jaE5vdFN0cmluZyh2YWx1ZUdQUik7CisgICAgICAgICAgICBKSVRDb21waWxlcjo6SnVtcCBu
b3RTdHJpbmcgPSBtX2ppdC5icmFuY2hJZk5vdFN0cmluZyh2YWx1ZUdQUik7CiAgICAgICAgICAg
ICBpZiAobm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpID09IFN0cmluZ1VzZSkKICAgICAgICAgICAg
ICAgICBERkdfVFlQRV9DSEVDSyhKU1ZhbHVlU291cmNlKHZhbHVlR1BSKSwgbm9kZS0+Y2hpbGQx
KCksIFNwZWNTdHJpbmcsIG5vdFN0cmluZyk7CiAgICAgICAgICAgICBtX2ppdC5tb3ZlKFRydXN0
ZWRJbW1QdHIobV9qaXQudm0oKS0+c21hbGxTdHJpbmdzLnN0cmluZ1N0cmluZygpKSwgcmVzdWx0
R1BSKTsKQEAgLTQ2MjgsOCArNDYyOCw4IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUo
Tm9kZSogbm9kZSkKICAgICAgICAgZWxzZSBpZiAoY2FjaGVkVHlwZUxvY2F0aW9uLT5tX2xhc3RT
ZWVuVHlwZSA9PSBUeXBlTnVtYmVyKQogICAgICAgICAgICAganVtcFRvRW5kLmFwcGVuZChtX2pp
dC5icmFuY2hUZXN0NjQoTWFjcm9Bc3NlbWJsZXI6Ok5vblplcm8sIHZhbHVlR1BSLCBHUFJJbmZv
Ojp0YWdUeXBlTnVtYmVyUmVnaXN0ZXIpKTsKICAgICAgICAgZWxzZSBpZiAoY2FjaGVkVHlwZUxv
Y2F0aW9uLT5tX2xhc3RTZWVuVHlwZSA9PSBUeXBlU3RyaW5nKSB7Ci0gICAgICAgICAgICBNYWNy
b0Fzc2VtYmxlcjo6SnVtcCBpc05vdENlbGwgPSBicmFuY2hOb3RDZWxsKEpTVmFsdWVSZWdzKHZh
bHVlR1BSKSk7Ci0gICAgICAgICAgICBqdW1wVG9FbmQuYXBwZW5kKGJyYW5jaElzU3RyaW5nKHZh
bHVlR1BSKSk7CisgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBpc05vdENlbGwgPSBt
X2ppdC5icmFuY2hJZk5vdENlbGwoSlNWYWx1ZVJlZ3ModmFsdWVHUFIpKTsKKyAgICAgICAgICAg
IGp1bXBUb0VuZC5hcHBlbmQobV9qaXQuYnJhbmNoSWZTdHJpbmcodmFsdWVHUFIpKTsKICAgICAg
ICAgICAgIGlzTm90Q2VsbC5saW5rKCZtX2ppdCk7CiAgICAgICAgIH0KIApAQCAtNDY0NCw3ICs0
NjQ0LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAg
ICBtX2ppdC5zdG9yZTY0KHZhbHVlR1BSLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhzY3JhdGNo
MUdQUiwgVHlwZVByb2ZpbGVyTG9nOjpMb2dFbnRyeTo6dmFsdWVPZmZzZXQoKSkpOwogCiAgICAg
ICAgIC8vIFN0b3JlIHRoZSBzdHJ1Y3R1cmVJRCBvZiB0aGUgY2VsbCBpZiB2YWx1ZUdQUiBpcyBh
IGNlbGwsIG90aGVyd2lzZSwgc3RvcmUgMCBvbiB0aGUgbG9nIGVudHJ5LgotICAgICAgICBNYWNy
b0Fzc2VtYmxlcjo6SnVtcCBpc05vdENlbGwgPSBicmFuY2hOb3RDZWxsKEpTVmFsdWVSZWdzKHZh
bHVlR1BSKSk7CisgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIGlzTm90Q2VsbCA9IG1faml0
LmJyYW5jaElmTm90Q2VsbChKU1ZhbHVlUmVncyh2YWx1ZUdQUikpOwogICAgICAgICBtX2ppdC5s
b2FkMzIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3ModmFsdWVHUFIsIEpTQ2VsbDo6c3RydWN0dXJl
SURPZmZzZXQoKSksIHNjcmF0Y2gzR1BSKTsKICAgICAgICAgbV9qaXQuc3RvcmUzMihzY3JhdGNo
M0dQUiwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Moc2NyYXRjaDFHUFIsIFR5cGVQcm9maWxlckxv
Zzo6TG9nRW50cnk6OnN0cnVjdHVyZUlET2Zmc2V0KCkpKTsKICAgICAgICAgTWFjcm9Bc3NlbWJs
ZXI6Okp1bXAgc2tpcElzQ2VsbCA9IG1faml0Lmp1bXAoKTsKQEAgLTQ3NzksNyArNDc3OSw3IEBA
IHZvaWQgU3BlY3VsYXRpdmVKSVQ6OndyaXRlQmFycmllcihHUFJSZWcKIHsKICAgICBKSVRDb21w
aWxlcjo6SnVtcCBpc05vdENlbGw7CiAgICAgaWYgKCFpc0tub3duQ2VsbCh2YWx1ZVVzZS5ub2Rl
KCkpKQotICAgICAgICBpc05vdENlbGwgPSBicmFuY2hOb3RDZWxsKEpTVmFsdWVSZWdzKHZhbHVl
R1BSKSk7CisgICAgICAgIGlzTm90Q2VsbCA9IG1faml0LmJyYW5jaElmTm90Q2VsbChKU1ZhbHVl
UmVncyh2YWx1ZUdQUikpOwogICAgIAogICAgIEpJVENvbXBpbGVyOjpKdW1wIG93bmVySXNSZW1l
bWJlcmVkT3JJbkVkZW4gPSBtX2ppdC5qdW1wSWZJc1JlbWVtYmVyZWRPckluRWRlbihvd25lckdQ
Uik7CiAgICAgc3RvcmVUb1dyaXRlQmFycmllckJ1ZmZlcihvd25lckdQUiwgc2NyYXRjaDEsIHNj
cmF0Y2gyKTsKQEAgLTQ3OTMsNyArNDc5Myw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OndyaXRl
QmFycmllcihKU0NlbGwKIHsKICAgICBKSVRDb21waWxlcjo6SnVtcCBpc05vdENlbGw7CiAgICAg
aWYgKCFpc0tub3duQ2VsbCh2YWx1ZVVzZS5ub2RlKCkpKQotICAgICAgICBpc05vdENlbGwgPSBi
cmFuY2hOb3RDZWxsKEpTVmFsdWVSZWdzKHZhbHVlR1BSKSk7CisgICAgICAgIGlzTm90Q2VsbCA9
IG1faml0LmJyYW5jaElmTm90Q2VsbChKU1ZhbHVlUmVncyh2YWx1ZUdQUikpOwogICAgIAogICAg
IEpJVENvbXBpbGVyOjpKdW1wIG93bmVySXNSZW1lbWJlcmVkT3JJbkVkZW4gPSBtX2ppdC5qdW1w
SWZJc1JlbWVtYmVyZWRPckluRWRlbihvd25lcik7CiAgICAgc3RvcmVUb1dyaXRlQmFycmllckJ1
ZmZlcihvd25lciwgc2NyYXRjaDEsIHNjcmF0Y2gyKTsKQEAgLTQ4MDQsMzQgKzQ4MDQsNiBAQCB2
b2lkIFNwZWN1bGF0aXZlSklUOjp3cml0ZUJhcnJpZXIoSlNDZWxsCiB9CiAjZW5kaWYgLy8gRU5B
QkxFKEdHQykKIAotSklUQ29tcGlsZXI6Okp1bXAgU3BlY3VsYXRpdmVKSVQ6OmJyYW5jaElzQ2Vs
bChKU1ZhbHVlUmVncyByZWdzKQotewotICAgIHJldHVybiBtX2ppdC5icmFuY2hUZXN0NjQoTWFj
cm9Bc3NlbWJsZXI6Olplcm8sIHJlZ3MuZ3ByKCksIEdQUkluZm86OnRhZ01hc2tSZWdpc3Rlcik7
Ci19Ci0KLUpJVENvbXBpbGVyOjpKdW1wIFNwZWN1bGF0aXZlSklUOjpicmFuY2hOb3RDZWxsKEpT
VmFsdWVSZWdzIHJlZ3MpCi17Ci0gICAgcmV0dXJuIG1faml0LmJyYW5jaFRlc3Q2NChNYWNyb0Fz
c2VtYmxlcjo6Tm9uWmVybywgcmVncy5ncHIoKSwgR1BSSW5mbzo6dGFnTWFza1JlZ2lzdGVyKTsK
LX0KLQotSklUQ29tcGlsZXI6Okp1bXAgU3BlY3VsYXRpdmVKSVQ6OmJyYW5jaElzT3RoZXIoSlNW
YWx1ZVJlZ3MgcmVncywgR1BSUmVnIHRlbXBHUFIpCi17Ci0gICAgbV9qaXQubW92ZShyZWdzLmdw
cigpLCB0ZW1wR1BSKTsKLSAgICBtX2ppdC5hbmQ2NChNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZElt
bTMyKH5UYWdCaXRVbmRlZmluZWQpLCB0ZW1wR1BSKTsKLSAgICByZXR1cm4gbV9qaXQuYnJhbmNo
NjQoCi0gICAgICAgIE1hY3JvQXNzZW1ibGVyOjpFcXVhbCwgdGVtcEdQUiwKLSAgICAgICAgTWFj
cm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW02NChWYWx1ZU51bGwpKTsKLX0KLQotSklUQ29tcGlsZXI6
Okp1bXAgU3BlY3VsYXRpdmVKSVQ6OmJyYW5jaE5vdE90aGVyKEpTVmFsdWVSZWdzIHJlZ3MsIEdQ
UlJlZyB0ZW1wR1BSKQotewotICAgIG1faml0Lm1vdmUocmVncy5ncHIoKSwgdGVtcEdQUik7Ci0g
ICAgbV9qaXQuYW5kNjQoTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW0zMih+VGFnQml0VW5kZWZp
bmVkKSwgdGVtcEdQUik7Ci0gICAgcmV0dXJuIG1faml0LmJyYW5jaDY0KAotICAgICAgICBNYWNy
b0Fzc2VtYmxlcjo6Tm90RXF1YWwsIHRlbXBHUFIsCi0gICAgICAgIE1hY3JvQXNzZW1ibGVyOjpU
cnVzdGVkSW1tNjQoVmFsdWVOdWxsKSk7Ci19Ci0KIHZvaWQgU3BlY3VsYXRpdmVKSVQ6Om1vdmVU
cnVlVG8oR1BSUmVnIGdwcikKIHsKICAgICBtX2ppdC5tb3ZlKFRydXN0ZWRJbW0zMihWYWx1ZVRy
dWUpLCBncHIpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2
ZUpJVC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVj
dWxhdGl2ZUpJVC5jcHAJKHJldmlzaW9uIDE4MzY1MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTgyLDE3ICsx
MTgyLDE3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVQZWVwSG9sZU9iamUKICAgICBp
ZiAobWFzcXVlcmFkZXNBc1VuZGVmaW5lZFdhdGNocG9pbnRJc1N0aWxsVmFsaWQoKSkgewogICAg
ICAgICBpZiAobV9zdGF0ZS5mb3JOb2RlKG5vZGUtPmNoaWxkMSgpKS5tX3R5cGUgJiB+U3BlY09i
amVjdCkgewogICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjaygKLSAgICAgICAgICAgICAgICBC
YWRUeXBlLCBKU1ZhbHVlU291cmNlOjp1bmJveGVkQ2VsbChvcDFHUFIpLCBub2RlLT5jaGlsZDEo
KSwgYnJhbmNoTm90T2JqZWN0KG9wMUdQUikpOworICAgICAgICAgICAgICAgIEJhZFR5cGUsIEpT
VmFsdWVTb3VyY2U6OnVuYm94ZWRDZWxsKG9wMUdQUiksIG5vZGUtPmNoaWxkMSgpLCBtX2ppdC5i
cmFuY2hJZk5vdE9iamVjdChvcDFHUFIpKTsKICAgICAgICAgfQogICAgICAgICBpZiAobV9zdGF0
ZS5mb3JOb2RlKG5vZGUtPmNoaWxkMigpKS5tX3R5cGUgJiB+U3BlY09iamVjdCkgewogICAgICAg
ICAgICAgc3BlY3VsYXRpb25DaGVjaygKLSAgICAgICAgICAgICAgICBCYWRUeXBlLCBKU1ZhbHVl
U291cmNlOjp1bmJveGVkQ2VsbChvcDJHUFIpLCBub2RlLT5jaGlsZDIoKSwgYnJhbmNoTm90T2Jq
ZWN0KG9wMkdQUikpOworICAgICAgICAgICAgICAgIEJhZFR5cGUsIEpTVmFsdWVTb3VyY2U6OnVu
Ym94ZWRDZWxsKG9wMkdQUiksIG5vZGUtPmNoaWxkMigpLCBtX2ppdC5icmFuY2hJZk5vdE9iamVj
dChvcDJHUFIpKTsKICAgICAgICAgfQogICAgIH0gZWxzZSB7CiAgICAgICAgIGlmIChtX3N0YXRl
LmZvck5vZGUobm9kZS0+Y2hpbGQxKCkpLm1fdHlwZSAmIH5TcGVjT2JqZWN0KSB7CiAgICAgICAg
ICAgICBzcGVjdWxhdGlvbkNoZWNrKAogICAgICAgICAgICAgICAgIEJhZFR5cGUsIEpTVmFsdWVT
b3VyY2U6OnVuYm94ZWRDZWxsKG9wMUdQUiksIG5vZGUtPmNoaWxkMSgpLAotICAgICAgICAgICAg
ICAgIGJyYW5jaE5vdE9iamVjdChvcDFHUFIpKTsKKyAgICAgICAgICAgICAgICBtX2ppdC5icmFu
Y2hJZk5vdE9iamVjdChvcDFHUFIpKTsKICAgICAgICAgfQogICAgICAgICBzcGVjdWxhdGlvbkNo
ZWNrKEJhZFR5cGUsIEpTVmFsdWVTb3VyY2U6OnVuYm94ZWRDZWxsKG9wMUdQUiksIG5vZGUtPmNo
aWxkMSgpLAogICAgICAgICAgICAgbV9qaXQuYnJhbmNoVGVzdDgoCkBAIC0xMjAzLDcgKzEyMDMs
NyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlUGVlcEhvbGVPYmplCiAgICAgICAgIGlm
IChtX3N0YXRlLmZvck5vZGUobm9kZS0+Y2hpbGQyKCkpLm1fdHlwZSAmIH5TcGVjT2JqZWN0KSB7
CiAgICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKAogICAgICAgICAgICAgICAgIEJhZFR5cGUs
IEpTVmFsdWVTb3VyY2U6OnVuYm94ZWRDZWxsKG9wMkdQUiksIG5vZGUtPmNoaWxkMigpLAotICAg
ICAgICAgICAgICAgIGJyYW5jaE5vdE9iamVjdChvcDJHUFIpKTsKKyAgICAgICAgICAgICAgICBt
X2ppdC5icmFuY2hJZk5vdE9iamVjdChvcDJHUFIpKTsKICAgICAgICAgfQogICAgICAgICBzcGVj
dWxhdGlvbkNoZWNrKEJhZFR5cGUsIEpTVmFsdWVTb3VyY2U6OnVuYm94ZWRDZWxsKG9wMkdQUiks
IG5vZGUtPmNoaWxkMigpLAogICAgICAgICAgICAgbV9qaXQuYnJhbmNoVGVzdDgoCkBAIC0xODk3
LDcgKzE4OTcsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlVmFsdWVUb0ludDMyCiAg
ICAgICAgICAgICAgICAgSklUQ29tcGlsZXI6Okp1bXAgaXNOdW1iZXIgPSBtX2ppdC5icmFuY2hU
ZXN0NjQoTWFjcm9Bc3NlbWJsZXI6Ok5vblplcm8sIGdwciwgR1BSSW5mbzo6dGFnVHlwZU51bWJl
clJlZ2lzdGVyKTsKICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICBERkdfVFlQRV9D
SEVDSygKLSAgICAgICAgICAgICAgICAgICAgSlNWYWx1ZVJlZ3MoZ3ByKSwgbm9kZS0+Y2hpbGQx
KCksIH5TcGVjQ2VsbCwgYnJhbmNoSXNDZWxsKEpTVmFsdWVSZWdzKGdwcikpKTsKKyAgICAgICAg
ICAgICAgICAgICAgSlNWYWx1ZVJlZ3MoZ3ByKSwgbm9kZS0+Y2hpbGQxKCksIH5TcGVjQ2VsbCwg
bV9qaXQuYnJhbmNoSWZDZWxsKEpTVmFsdWVSZWdzKGdwcikpKTsKICAgICAgICAgICAgICAgICAK
ICAgICAgICAgICAgICAgICAvLyBJdCdzIG5vdCBhIGNlbGw6IHNvIHRydWUgdHVybnMgaW50byAx
IGFuZCBhbGwgZWxzZSB0dXJucyBpbnRvIDAuCiAgICAgICAgICAgICAgICAgbV9qaXQuY29tcGFy
ZTY0KEpJVENvbXBpbGVyOjpFcXVhbCwgZ3ByLCBUcnVzdGVkSW1tMzIoVmFsdWVUcnVlKSwgcmVz
dWx0R3ByKTsKQEAgLTE5NTMsNyArMTk1Myw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBp
bGVWYWx1ZVRvSW50MzIKICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAg
IERGR19UWVBFX0NIRUNLKAogICAgICAgICAgICAgICAgICAgICAgICAgb3AxLmpzVmFsdWVSZWdz
KCksIG5vZGUtPmNoaWxkMSgpLCB+U3BlY0NlbGwsCi0gICAgICAgICAgICAgICAgICAgICAgICBi
cmFuY2hJc0NlbGwob3AxLmpzVmFsdWVSZWdzKCkpKTsKKyAgICAgICAgICAgICAgICAgICAgICAg
IG1faml0LmJyYW5jaElmQ2VsbChvcDEuanNWYWx1ZVJlZ3MoKSkpOwogICAgICAgICAgICAgICAg
ICAgICAKICAgICAgICAgICAgICAgICAgICAgLy8gSXQncyBub3QgYSBjZWxsOiBzbyB0cnVlIHR1
cm5zIGludG8gMSBhbmQgYWxsIGVsc2UgdHVybnMgaW50byAwLgogICAgICAgICAgICAgICAgICAg
ICBKSVRDb21waWxlcjo6SnVtcCBpc0Jvb2xlYW4gPSBtX2ppdC5icmFuY2gzMihKSVRDb21waWxl
cjo6RXF1YWwsIHRhZ0dQUiwgVHJ1c3RlZEltbTMyKEpTVmFsdWU6OkJvb2xlYW5UYWcpKTsKQEAg
LTI1NDMsNyArMjU0Myw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVQdXRCeVZhbEZv
ckYKIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVJbnN0YW5jZU9mRm9yT2JqZWN0KE5vZGUq
LCBHUFJSZWcgdmFsdWVSZWcsIEdQUlJlZyBwcm90b3R5cGVSZWcsIEdQUlJlZyBzY3JhdGNoUmVn
LCBHUFJSZWcgc2NyYXRjaDJSZWcpCiB7CiAgICAgLy8gQ2hlY2sgdGhhdCBwcm90b3R5cGUgaXMg
YW4gb2JqZWN0LgotICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFkVHlwZSwgSlNWYWx1ZVJlZ3MoKSwg
MCwgbV9qaXQuYnJhbmNoSWZDZWxsTm90T2JqZWN0KHByb3RvdHlwZVJlZykpOworICAgIHNwZWN1
bGF0aW9uQ2hlY2soQmFkVHlwZSwgSlNWYWx1ZVJlZ3MoKSwgMCwgbV9qaXQuYnJhbmNoSWZOb3RP
YmplY3QocHJvdG90eXBlUmVnKSk7CiAgICAgCiAgICAgLy8gSW5pdGlhbGl6ZSBzY3JhdGNoUmVn
IHdpdGggdGhlIHZhbHVlIGJlaW5nIGNoZWNrZWQuCiAgICAgbV9qaXQubW92ZSh2YWx1ZVJlZywg
c2NyYXRjaFJlZyk7CkBAIC0yNTU0LDcgKzI1NTQsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpj
b21waWxlSW5zdGFuY2VPZkZvCiAgICAgbV9qaXQubG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRk
cmVzcyhzY3JhdGNoUmVnLCBTdHJ1Y3R1cmU6OnByb3RvdHlwZU9mZnNldCgpICsgQ2VsbFBheWxv
YWRPZmZzZXQpLCBzY3JhdGNoUmVnKTsKICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBpc0luc3Rh
bmNlID0gbV9qaXQuYnJhbmNoUHRyKE1hY3JvQXNzZW1ibGVyOjpFcXVhbCwgc2NyYXRjaFJlZywg
cHJvdG90eXBlUmVnKTsKICNpZiBVU0UoSlNWQUxVRTY0KQotICAgIGJyYW5jaElzQ2VsbChKU1Zh
bHVlUmVncyhzY3JhdGNoUmVnKSkubGlua1RvKGxvb3AsICZtX2ppdCk7CisgICAgbV9qaXQuYnJh
bmNoSWZDZWxsKEpTVmFsdWVSZWdzKHNjcmF0Y2hSZWcpKS5saW5rVG8obG9vcCwgJm1faml0KTsK
ICNlbHNlCiAgICAgbV9qaXQuYnJhbmNoVGVzdFB0cihNYWNyb0Fzc2VtYmxlcjo6Tm9uWmVybywg
c2NyYXRjaFJlZykubGlua1RvKGxvb3AsICZtX2ppdCk7CiAjZW5kaWYKQEAgLTI1OTMsNyArMjU5
Myw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVJbnN0YW5jZU9mKE4KICAgICAgICAg
R1BSUmVnIHNjcmF0Y2hSZWcgPSBzY3JhdGNoLmdwcigpOwogICAgICAgICBHUFJSZWcgc2NyYXRj
aDJSZWcgPSBzY3JhdGNoMi5ncHIoKTsKICAgICAgICAgCi0gICAgICAgIE1hY3JvQXNzZW1ibGVy
OjpKdW1wIGlzQ2VsbCA9IGJyYW5jaElzQ2VsbCh2YWx1ZS5qc1ZhbHVlUmVncygpKTsKKyAgICAg
ICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXAgaXNDZWxsID0gbV9qaXQuYnJhbmNoSWZDZWxsKHZhbHVl
LmpzVmFsdWVSZWdzKCkpOwogICAgICAgICBHUFJSZWcgdmFsdWVSZWcgPSB2YWx1ZS5qc1ZhbHVl
UmVncygpLnBheWxvYWRHUFIoKTsKICAgICAgICAgbW92ZUZhbHNlVG8oc2NyYXRjaFJlZyk7CiAK
QEAgLTM5NTgsMTQgKzM5NTgsMTQgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVN0cmlu
Z1RvVW50eQogICAgIEpJVENvbXBpbGVyOjpKdW1wTGlzdCBmYXN0VHJ1ZTsKICAgICBKSVRDb21w
aWxlcjo6SnVtcExpc3QgZmFzdEZhbHNlOwogICAgIAotICAgIGZhc3RGYWxzZS5hcHBlbmQoYnJh
bmNoTm90Q2VsbChyaWdodFJlZ3MpKTsKKyAgICBmYXN0RmFsc2UuYXBwZW5kKG1faml0LmJyYW5j
aElmTm90U3RyaW5nKHJpZ2h0UmVncykpOwogICAgIAogICAgIC8vIEl0J3Mgc2FmZSB0byBicmFu
Y2ggYXJvdW5kIHRoZSB0eXBlIGNoZWNrIGJlbG93LCBzaW5jZSBwcm92aW5nIHRoYXQgdGhlIHZh
bHVlcyBhcmUKICAgICAvLyBlcXVhbCBkb2VzIGluZGVlZCBwcm92ZSB0aGF0IHRoZSByaWdodCB2
YWx1ZSBpcyBhIHN0cmluZy4KICAgICBmYXN0VHJ1ZS5hcHBlbmQobV9qaXQuYnJhbmNoUHRyKAog
ICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6RXF1YWwsIGxlZnRHUFIsIHJpZ2h0UmVncy5wYXlsb2Fk
R1BSKCkpKTsKICAgICAKLSAgICBmYXN0RmFsc2UuYXBwZW5kKGJyYW5jaE5vdFN0cmluZyhyaWdo
dFJlZ3MucGF5bG9hZEdQUigpKSk7CisgICAgZmFzdEZhbHNlLmFwcGVuZChtX2ppdC5icmFuY2hJ
Zk5vdENlbGwocmlnaHRSZWdzLnBheWxvYWRHUFIoKSkpOwogICAgIAogICAgIGNvbXBpbGVTdHJp
bmdFcXVhbGl0eSgKICAgICAgICAgbm9kZSwgbGVmdEdQUiwgcmlnaHRSZWdzLnBheWxvYWRHUFIo
KSwgbGVuZ3RoR1BSLCBsZWZ0VGVtcEdQUiwgcmlnaHRUZW1wR1BSLCBsZWZ0VGVtcDJHUFIsCkBA
IC00MDEyLDggKzQwMTIsOCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlU3RyaW5nSWRl
bnRUCiAKICAgICBtb3ZlRmFsc2VUbyhyaWdodFRlbXBHUFIpOwogICAgIEpJVENvbXBpbGVyOjpK
dW1wTGlzdCBub3RTdHJpbmc7Ci0gICAgbm90U3RyaW5nLmFwcGVuZChicmFuY2hOb3RDZWxsKHJp
Z2h0UmVncykpOwotICAgIG5vdFN0cmluZy5hcHBlbmQoYnJhbmNoTm90U3RyaW5nKHJpZ2h0UmVn
cy5wYXlsb2FkR1BSKCkpKTsKKyAgICBub3RTdHJpbmcuYXBwZW5kKG1faml0LmJyYW5jaElmTm90
Q2VsbChyaWdodFJlZ3MpKTsKKyAgICBub3RTdHJpbmcuYXBwZW5kKG1faml0LmJyYW5jaElmTm90
U3RyaW5nKHJpZ2h0UmVncy5wYXlsb2FkR1BSKCkpKTsKICAgICAKICAgICBzcGVjdWxhdGVTdHJp
bmdJZGVudEFuZExvYWRTdG9yYWdlKG5vdFN0cmluZ1ZhckVkZ2UsIHJpZ2h0UmVncy5wYXlsb2Fk
R1BSKCksIHJpZ2h0VGVtcEdQUik7CiAgICAgCkBAIC00MjM0LDcgKzQyMzQsNyBAQCB2b2lkIFNw
ZWN1bGF0aXZlSklUOjpjb21waWxlR2V0QnlWYWxPblNjCiAgICAgICAgICAgICBiYXNlUmVnLCBz
Y3JhdGNoMlJlZywgTWFjcm9Bc3NlbWJsZXI6OlRpbWVzRWlnaHQsCiAgICAgICAgICAgICBTY29w
ZWRBcmd1bWVudHM6Om92ZXJmbG93U3RvcmFnZU9mZnNldCgpKSwKICAgICAgICAgcmVzdWx0UmVn
cyk7Ci0gICAgc3BlY3VsYXRpb25DaGVjayhFeG90aWNPYmplY3RNb2RlLCBKU1ZhbHVlU291cmNl
KCksIG51bGxwdHIsIG1faml0LmJyYW5jaElzRW1wdHkocmVzdWx0UmVncykpOworICAgIHNwZWN1
bGF0aW9uQ2hlY2soRXhvdGljT2JqZWN0TW9kZSwgSlNWYWx1ZVNvdXJjZSgpLCBudWxscHRyLCBt
X2ppdC5icmFuY2hJZkVtcHR5KHJlc3VsdFJlZ3MpKTsKICAgICAKICAgICBkb25lLmxpbmsoJm1f
aml0KTsKICAgICAKQEAgLTQ5NjUsNyArNDk2NSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNv
bXBpbGVUb1N0cmluZ09yQ2EKICAgICAgICAgZmx1c2hSZWdpc3RlcnMoKTsKICAgICAgICAgSklU
Q29tcGlsZXI6Okp1bXAgZG9uZTsKICAgICAgICAgaWYgKG5vZGUtPmNoaWxkMSgpLT5wcmVkaWN0
aW9uKCkgJiBTcGVjU3RyaW5nKSB7Ci0gICAgICAgICAgICBKSVRDb21waWxlcjo6SnVtcCBuZWVk
Q2FsbCA9IGJyYW5jaE5vdFN0cmluZyhvcDFHUFIpOworICAgICAgICAgICAgSklUQ29tcGlsZXI6
Okp1bXAgbmVlZENhbGwgPSBtX2ppdC5icmFuY2hJZk5vdFN0cmluZyhvcDFHUFIpOwogICAgICAg
ICAgICAgbV9qaXQubW92ZShvcDFHUFIsIHJlc3VsdEdQUik7CiAgICAgICAgICAgICBkb25lID0g
bV9qaXQuanVtcCgpOwogICAgICAgICAgICAgbmVlZENhbGwubGluaygmbV9qaXQpOwpAQCAtNTE5
NCw3ICs1MTk0LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6c3BlY3VsYXRlT2JqZWN0KEVkZwog
ICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIG9wZXJhbmQodGhpcywgZWRnZSk7CiAgICAgR1BSUmVn
IGdwciA9IG9wZXJhbmQuZ3ByKCk7CiAgICAgREZHX1RZUEVfQ0hFQ0soCi0gICAgICAgIEpTVmFs
dWVTb3VyY2U6OnVuYm94ZWRDZWxsKGdwciksIGVkZ2UsIFNwZWNPYmplY3QsIGJyYW5jaE5vdE9i
amVjdChncHIpKTsKKyAgICAgICAgSlNWYWx1ZVNvdXJjZTo6dW5ib3hlZENlbGwoZ3ByKSwgZWRn
ZSwgU3BlY09iamVjdCwgbV9qaXQuYnJhbmNoSWZOb3RPYmplY3QoZ3ByKSk7CiB9CiAKIHZvaWQg
U3BlY3VsYXRpdmVKSVQ6OnNwZWN1bGF0ZUZ1bmN0aW9uKEVkZ2UgZWRnZSkKQEAgLTUyMjMsMTYg
KzUyMjMsMTYgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6c3BlY3VsYXRlT2JqZWN0T3JPdAogICAg
IEpTVmFsdWVPcGVyYW5kIG9wZXJhbmQodGhpcywgZWRnZSwgTWFudWFsT3BlcmFuZFNwZWN1bGF0
aW9uKTsKICAgICBHUFJUZW1wb3JhcnkgdGVtcCh0aGlzKTsKICAgICBHUFJSZWcgdGVtcEdQUiA9
IHRlbXAuZ3ByKCk7Ci0gICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXAgbm90Q2VsbCA9IGJyYW5jaE5v
dENlbGwob3BlcmFuZC5qc1ZhbHVlUmVncygpKTsKKyAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBu
b3RDZWxsID0gbV9qaXQuYnJhbmNoSWZOb3RDZWxsKG9wZXJhbmQuanNWYWx1ZVJlZ3MoKSk7CiAg
ICAgR1BSUmVnIGdwciA9IG9wZXJhbmQuanNWYWx1ZVJlZ3MoKS5wYXlsb2FkR1BSKCk7CiAgICAg
REZHX1RZUEVfQ0hFQ0soCi0gICAgICAgIG9wZXJhbmQuanNWYWx1ZVJlZ3MoKSwgZWRnZSwgKH5T
cGVjQ2VsbCkgfCBTcGVjT2JqZWN0LCBicmFuY2hOb3RPYmplY3QoZ3ByKSk7CisgICAgICAgIG9w
ZXJhbmQuanNWYWx1ZVJlZ3MoKSwgZWRnZSwgKH5TcGVjQ2VsbCkgfCBTcGVjT2JqZWN0LCBtX2pp
dC5icmFuY2hJZk5vdE9iamVjdChncHIpKTsKICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBkb25l
ID0gbV9qaXQuanVtcCgpOwogICAgIG5vdENlbGwubGluaygmbV9qaXQpOwogICAgIGlmIChuZWVk
c1R5cGVDaGVjayhlZGdlLCBTcGVjQ2VsbCB8IFNwZWNPdGhlcikpIHsKICAgICAgICAgdHlwZUNo
ZWNrKAogICAgICAgICAgICAgb3BlcmFuZC5qc1ZhbHVlUmVncygpLCBlZGdlLCBTcGVjQ2VsbCB8
IFNwZWNPdGhlciwKLSAgICAgICAgICAgIGJyYW5jaE5vdE90aGVyKG9wZXJhbmQuanNWYWx1ZVJl
Z3MoKSwgdGVtcEdQUikpOworICAgICAgICAgICAgbV9qaXQuYnJhbmNoSWZOb3RPdGhlcihvcGVy
YW5kLmpzVmFsdWVSZWdzKCksIHRlbXBHUFIpKTsKICAgICB9CiAgICAgZG9uZS5saW5rKCZtX2pp
dCk7CiB9CkBAIC01MjQwLDcgKzUyNDAsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpzcGVjdWxh
dGVPYmplY3RPck90CiB2b2lkIFNwZWN1bGF0aXZlSklUOjpzcGVjdWxhdGVTdHJpbmcoRWRnZSBl
ZGdlLCBHUFJSZWcgY2VsbCkKIHsKICAgICBERkdfVFlQRV9DSEVDSygKLSAgICAgICAgSlNWYWx1
ZVNvdXJjZTo6dW5ib3hlZENlbGwoY2VsbCksIGVkZ2UsIFNwZWNTdHJpbmcgfCB+U3BlY0NlbGws
IGJyYW5jaE5vdFN0cmluZyhjZWxsKSk7CisgICAgICAgIEpTVmFsdWVTb3VyY2U6OnVuYm94ZWRD
ZWxsKGNlbGwpLCBlZGdlLCBTcGVjU3RyaW5nIHwgflNwZWNDZWxsLCBtX2ppdC5icmFuY2hJZk5v
dFN0cmluZyhjZWxsKSk7CiB9CiAKIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OnNwZWN1bGF0ZVN0cmlu
Z0lkZW50QW5kTG9hZFN0b3JhZ2UoRWRnZSBlZGdlLCBHUFJSZWcgc3RyaW5nLCBHUFJSZWcgc3Rv
cmFnZSkKQEAgLTUzNDIsMTAgKzUzNDIsMTAgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6c3BlY3Vs
YXRlTm90U3RyaW5nVgogICAgIEdQUlRlbXBvcmFyeSB0ZW1wKHRoaXMpOwogICAgIEdQUlJlZyB0
ZW1wR1BSID0gdGVtcC5ncHIoKTsKICAgICAKLSAgICBKSVRDb21waWxlcjo6SnVtcCBub3RDZWxs
ID0gYnJhbmNoTm90Q2VsbChvcGVyYW5kLmpzVmFsdWVSZWdzKCkpOworICAgIEpJVENvbXBpbGVy
OjpKdW1wIG5vdENlbGwgPSBtX2ppdC5icmFuY2hJZk5vdENlbGwob3BlcmFuZC5qc1ZhbHVlUmVn
cygpKTsKICAgICBHUFJSZWcgY2VsbCA9IG9wZXJhbmQuanNWYWx1ZVJlZ3MoKS5wYXlsb2FkR1BS
KCk7CiAgICAgCi0gICAgSklUQ29tcGlsZXI6Okp1bXAgbm90U3RyaW5nID0gYnJhbmNoTm90U3Ry
aW5nKGNlbGwpOworICAgIEpJVENvbXBpbGVyOjpKdW1wIG5vdFN0cmluZyA9IG1faml0LmJyYW5j
aElmTm90U3RyaW5nKGNlbGwpOwogICAgIAogICAgIHNwZWN1bGF0ZVN0cmluZ0lkZW50QW5kTG9h
ZFN0b3JhZ2UoZWRnZSwgY2VsbCwgdGVtcEdQUik7CiAgICAgCkBAIC01MzU5LDcgKzUzNTksNyBA
QCB2b2lkIFNwZWN1bGF0aXZlSklUOjpzcGVjdWxhdGVOb3RDZWxsKEVkCiAgICAgICAgIHJldHVy
bjsKICAgICAKICAgICBKU1ZhbHVlT3BlcmFuZCBvcGVyYW5kKHRoaXMsIGVkZ2UsIE1hbnVhbE9w
ZXJhbmRTcGVjdWxhdGlvbik7IAotICAgIHR5cGVDaGVjayhvcGVyYW5kLmpzVmFsdWVSZWdzKCks
IGVkZ2UsIH5TcGVjQ2VsbCwgYnJhbmNoSXNDZWxsKG9wZXJhbmQuanNWYWx1ZVJlZ3MoKSkpOwor
ICAgIHR5cGVDaGVjayhvcGVyYW5kLmpzVmFsdWVSZWdzKCksIGVkZ2UsIH5TcGVjQ2VsbCwgbV9q
aXQuYnJhbmNoSWZDZWxsKG9wZXJhbmQuanNWYWx1ZVJlZ3MoKSkpOwogfQogCiB2b2lkIFNwZWN1
bGF0aXZlSklUOjpzcGVjdWxhdGVPdGhlcihFZGdlIGVkZ2UpCkBAIC01MzcyLDcgKzUzNzIsNyBA
QCB2b2lkIFNwZWN1bGF0aXZlSklUOjpzcGVjdWxhdGVPdGhlcihFZGdlCiAgICAgR1BSUmVnIHRl
bXBHUFIgPSB0ZW1wLmdwcigpOwogICAgIHR5cGVDaGVjaygKICAgICAgICAgb3BlcmFuZC5qc1Zh
bHVlUmVncygpLCBlZGdlLCBTcGVjT3RoZXIsCi0gICAgICAgIGJyYW5jaE5vdE90aGVyKG9wZXJh
bmQuanNWYWx1ZVJlZ3MoKSwgdGVtcEdQUikpOworICAgICAgICBtX2ppdC5icmFuY2hJZk5vdE90
aGVyKG9wZXJhbmQuanNWYWx1ZVJlZ3MoKSwgdGVtcEdQUikpOwogfQogCiB2b2lkIFNwZWN1bGF0
aXZlSklUOjpzcGVjdWxhdGVNaXNjKEVkZ2UgZWRnZSwgSlNWYWx1ZVJlZ3MgcmVncykKQEAgLTU2
MTksOSArNTYxOSw5IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXRTd2l0Y2hDaGFyKE5vZGUK
ICAgICAgICAgCiAgICAgICAgIG9wMS51c2UoKTsKICAgICAgICAgCi0gICAgICAgIGFkZEJyYW5j
aChicmFuY2hOb3RDZWxsKG9wMVJlZ3MpLCBkYXRhLT5mYWxsVGhyb3VnaC5ibG9jayk7CisgICAg
ICAgIGFkZEJyYW5jaChtX2ppdC5icmFuY2hJZk5vdENlbGwob3AxUmVncyksIGRhdGEtPmZhbGxU
aHJvdWdoLmJsb2NrKTsKICAgICAgICAgCi0gICAgICAgIGFkZEJyYW5jaChicmFuY2hOb3RTdHJp
bmcob3AxUmVncy5wYXlsb2FkR1BSKCkpLCBkYXRhLT5mYWxsVGhyb3VnaC5ibG9jayk7CisgICAg
ICAgIGFkZEJyYW5jaChtX2ppdC5icmFuY2hJZk5vdFN0cmluZyhvcDFSZWdzLnBheWxvYWRHUFIo
KSksIGRhdGEtPmZhbGxUaHJvdWdoLmJsb2NrKTsKICAgICAgICAgCiAgICAgICAgIGVtaXRTd2l0
Y2hDaGFyU3RyaW5nSnVtcChkYXRhLCBvcDFSZWdzLnBheWxvYWRHUFIoKSwgdGVtcEdQUik7CiAg
ICAgICAgIG5vUmVzdWx0KG5vZGUsIFVzZUNoaWxkcmVuQ2FsbGVkRXhwbGljaXRseSk7CkBAIC01
ODkyLDkgKzU4OTIsOSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjplbWl0U3dpdGNoU3RyaW5nKE5v
CiAgICAgICAgIAogICAgICAgICBvcDEudXNlKCk7CiAgICAgICAgIAotICAgICAgICBhZGRCcmFu
Y2goYnJhbmNoTm90Q2VsbChvcDFSZWdzKSwgZGF0YS0+ZmFsbFRocm91Z2guYmxvY2spOworICAg
ICAgICBhZGRCcmFuY2gobV9qaXQuYnJhbmNoSWZOb3RDZWxsKG9wMVJlZ3MpLCBkYXRhLT5mYWxs
VGhyb3VnaC5ibG9jayk7CiAgICAgICAgIAotICAgICAgICBhZGRCcmFuY2goYnJhbmNoTm90U3Ry
aW5nKG9wMVJlZ3MucGF5bG9hZEdQUigpKSwgZGF0YS0+ZmFsbFRocm91Z2guYmxvY2spOworICAg
ICAgICBhZGRCcmFuY2gobV9qaXQuYnJhbmNoSWZOb3RTdHJpbmcob3AxUmVncy5wYXlsb2FkR1BS
KCkpLCBkYXRhLT5mYWxsVGhyb3VnaC5ibG9jayk7CiAgICAgICAgIAogICAgICAgICBlbWl0U3dp
dGNoU3RyaW5nT25TdHJpbmcoZGF0YSwgb3AxUmVncy5wYXlsb2FkR1BSKCkpOwogICAgICAgICBu
b1Jlc3VsdChub2RlLCBVc2VDaGlsZHJlbkNhbGxlZEV4cGxpY2l0bHkpOwpAQCAtNTk0NCwzOCAr
NTk0NCw2IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmxpbmtCcmFuY2hlcygpCiAgICAgfQogfQog
Ci1KSVRDb21waWxlcjo6SnVtcCBTcGVjdWxhdGl2ZUpJVDo6YnJhbmNoSXNPYmplY3QoR1BSUmVn
IGNlbGxHUFIpCi17Ci0gICAgcmV0dXJuIG1faml0LmJyYW5jaDgoCi0gICAgICAgIE1hY3JvQXNz
ZW1ibGVyOjpBYm92ZU9yRXF1YWwsCi0gICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGNl
bGxHUFIsIEpTQ2VsbDo6dHlwZUluZm9UeXBlT2Zmc2V0KCkpLAotICAgICAgICBNYWNyb0Fzc2Vt
Ymxlcjo6VHJ1c3RlZEltbTMyKE9iamVjdFR5cGUpKTsKLX0KLQotSklUQ29tcGlsZXI6Okp1bXAg
U3BlY3VsYXRpdmVKSVQ6OmJyYW5jaE5vdE9iamVjdChHUFJSZWcgY2VsbEdQUikKLXsKLSAgICBy
ZXR1cm4gbV9qaXQuYnJhbmNoOCgKLSAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkJlbG93LAotICAg
ICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhjZWxsR1BSLCBKU0NlbGw6OnR5cGVJbmZvVHlw
ZU9mZnNldCgpKSwKLSAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW0zMihPYmplY3RU
eXBlKSk7Ci19Ci0KLUpJVENvbXBpbGVyOjpKdW1wIFNwZWN1bGF0aXZlSklUOjpicmFuY2hJc1N0
cmluZyhHUFJSZWcgY2VsbEdQUikKLXsKLSAgICByZXR1cm4gbV9qaXQuYnJhbmNoU3RydWN0dXJl
UHRyKAotICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6RXF1YWwsCi0gICAgICAgIE1hY3JvQXNzZW1i
bGVyOjpBZGRyZXNzKGNlbGxHUFIsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSksCi0gICAg
ICAgIG1faml0LnZtKCktPnN0cmluZ1N0cnVjdHVyZS5nZXQoKSk7Ci19Ci0KLUpJVENvbXBpbGVy
OjpKdW1wIFNwZWN1bGF0aXZlSklUOjpicmFuY2hOb3RTdHJpbmcoR1BSUmVnIGNlbGxHUFIpCi17
Ci0gICAgcmV0dXJuIG1faml0LmJyYW5jaFN0cnVjdHVyZVB0cigKLSAgICAgICAgTWFjcm9Bc3Nl
bWJsZXI6Ok5vdEVxdWFsLAotICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhjZWxsR1BS
LCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkpLAotICAgICAgICBtX2ppdC52bSgpLT5zdHJp
bmdTdHJ1Y3R1cmUuZ2V0KCkpOwotfQotCiAjaWYgRU5BQkxFKEdHQykKIHZvaWQgU3BlY3VsYXRp
dmVKSVQ6OmNvbXBpbGVTdG9yZUJhcnJpZXIoTm9kZSogbm9kZSkKIHsKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgJKHJldmlzaW9uIDE4MzY1
MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaAkod29y
a2luZyBjb3B5KQpAQCAtMjIxNSwxNSArMjIxNSw2IEBAIHB1YmxpYzoKICAgICB2b2lkIGNvbXBp
bGVOb3RpZnlXcml0ZShOb2RlKik7CiAgICAgYm9vbCBjb21waWxlUmVnRXhwRXhlYyhOb2RlKik7
CiAgICAgCi0gICAgSklUQ29tcGlsZXI6Okp1bXAgYnJhbmNoSXNDZWxsKEpTVmFsdWVSZWdzKTsK
LSAgICBKSVRDb21waWxlcjo6SnVtcCBicmFuY2hOb3RDZWxsKEpTVmFsdWVSZWdzKTsKLSAgICBK
SVRDb21waWxlcjo6SnVtcCBicmFuY2hJc090aGVyKEpTVmFsdWVSZWdzLCBHUFJSZWcgdGVtcEdQ
Uik7Ci0gICAgSklUQ29tcGlsZXI6Okp1bXAgYnJhbmNoTm90T3RoZXIoSlNWYWx1ZVJlZ3MsIEdQ
UlJlZyB0ZW1wR1BSKTsKLSAgICBKSVRDb21waWxlcjo6SnVtcCBicmFuY2hJc09iamVjdChHUFJS
ZWcgY2VsbEdQUik7Ci0gICAgSklUQ29tcGlsZXI6Okp1bXAgYnJhbmNoTm90T2JqZWN0KEdQUlJl
ZyBjZWxsR1BSKTsKLSAgICBKSVRDb21waWxlcjo6SnVtcCBicmFuY2hJc1N0cmluZyhHUFJSZWcg
Y2VsbEdQUik7Ci0gICAgSklUQ29tcGlsZXI6Okp1bXAgYnJhbmNoTm90U3RyaW5nKEdQUlJlZyBj
ZWxsR1BSKTsKLSAgICAKICAgICB2b2lkIG1vdmVUcnVlVG8oR1BSUmVnKTsKICAgICB2b2lkIG1v
dmVGYWxzZVRvKEdQUlJlZyk7CiAgICAgdm9pZCBibGVzc0Jvb2xlYW4oR1BSUmVnKTsKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuaAkocmV2aXNpb24g
MTgzNjUwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuaAko
d29ya2luZyBjb3B5KQpAQCAtMzg1LDcgKzM4NSw3NyBAQCBwdWJsaWM6CiAjZW5kaWYKICAgICB9
CiAgICAgCi0gICAgSnVtcCBicmFuY2hJc0VtcHR5KEpTVmFsdWVSZWdzIHJlZ3MpCisgICAgSnVt
cCBicmFuY2hJZkNlbGwoR1BSUmVnIHJlZykKKyAgICB7CisjaWYgVVNFKEpTVkFMVUU2NCkKKyAg
ICAgICAgcmV0dXJuIGJyYW5jaFRlc3Q2NChNYWNyb0Fzc2VtYmxlcjo6WmVybywgcmVnLCBHUFJJ
bmZvOjp0YWdNYXNrUmVnaXN0ZXIpOworI2Vsc2UKKyAgICAgICAgcmV0dXJuIGJyYW5jaDMyKE1h
Y3JvQXNzZW1ibGVyOjpFcXVhbCwgcmVnLCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6Q2VsbFRhZykp
OworI2VuZGlmCisgICAgfQorICAgIEp1bXAgYnJhbmNoSWZDZWxsKEpTVmFsdWVSZWdzIHJlZ3Mp
CisgICAgeworI2lmIFVTRShKU1ZBTFVFNjQpCisgICAgICAgIHJldHVybiBicmFuY2hJZkNlbGwo
cmVncy5ncHIoKSk7CisjZWxzZQorICAgICAgICByZXR1cm4gYnJhbmNoSWZDZWxsKHJlZ3MudGFn
R1BSKCkpOworI2VuZGlmCisgICAgfQorICAgIAorICAgIEp1bXAgYnJhbmNoSWZPdGhlcihKU1Zh
bHVlUmVncyByZWdzLCBHUFJSZWcgdGVtcEdQUikKKyAgICB7CisjaWYgVVNFKEpTVkFMVUU2NCkK
KyAgICAgICAgbW92ZShyZWdzLmdwcigpLCB0ZW1wR1BSKTsKKyAgICAgICAgYW5kNjQoVHJ1c3Rl
ZEltbTMyKH5UYWdCaXRVbmRlZmluZWQpLCB0ZW1wR1BSKTsKKyAgICAgICAgcmV0dXJuIGJyYW5j
aDY0KEVxdWFsLCB0ZW1wR1BSLCBUcnVzdGVkSW1tNjQoVmFsdWVOdWxsKSk7CisjZWxzZQorICAg
ICAgICBvcjMyKFRydXN0ZWRJbW0zMigxKSwgcmVncy50YWdHUFIoKSwgdGVtcEdQUik7CisgICAg
ICAgIHJldHVybiBicmFuY2gzMihFcXVhbCwgdGVtcEdQUiwgVHJ1c3RlZEltbTMyKEpTVmFsdWU6
Ok51bGxUYWcpKTsKKyNlbmRpZgorICAgIH0KKyAgICAKKyAgICBKdW1wIGJyYW5jaElmTm90T3Ro
ZXIoSlNWYWx1ZVJlZ3MgcmVncywgR1BSUmVnIHRlbXBHUFIpCisgICAgeworI2lmIFVTRShKU1ZB
TFVFNjQpCisgICAgICAgIG1vdmUocmVncy5ncHIoKSwgdGVtcEdQUik7CisgICAgICAgIGFuZDY0
KFRydXN0ZWRJbW0zMih+VGFnQml0VW5kZWZpbmVkKSwgdGVtcEdQUik7CisgICAgICAgIHJldHVy
biBicmFuY2g2NChOb3RFcXVhbCwgdGVtcEdQUiwgVHJ1c3RlZEltbTY0KFZhbHVlTnVsbCkpOwor
I2Vsc2UKKyAgICAgICAgb3IzMihUcnVzdGVkSW1tMzIoMSksIHJlZ3MudGFnR1BSKCksIHRlbXBH
UFIpOworICAgICAgICByZXR1cm4gYnJhbmNoMzIoTm90RXF1YWwsIHRlbXBHUFIsIFRydXN0ZWRJ
bW0zMihKU1ZhbHVlOjpOdWxsVGFnKSk7CisjZW5kaWYKKyAgICB9CisgICAgCisgICAgSnVtcCBi
cmFuY2hJZk9iamVjdChHUFJSZWcgY2VsbEdQUikKKyAgICB7CisgICAgICAgIHJldHVybiBicmFu
Y2g4KAorICAgICAgICAgICAgQWJvdmVPckVxdWFsLCBBZGRyZXNzKGNlbGxHUFIsIEpTQ2VsbDo6
dHlwZUluZm9UeXBlT2Zmc2V0KCkpLCBUcnVzdGVkSW1tMzIoT2JqZWN0VHlwZSkpOworICAgIH0K
KyAgICAKKyAgICBKdW1wIGJyYW5jaElmTm90T2JqZWN0KEdQUlJlZyBjZWxsR1BSKQorICAgIHsK
KyAgICAgICAgcmV0dXJuIGJyYW5jaDgoCisgICAgICAgICAgICBCZWxvdywgQWRkcmVzcyhjZWxs
R1BSLCBKU0NlbGw6OnR5cGVJbmZvVHlwZU9mZnNldCgpKSwgVHJ1c3RlZEltbTMyKE9iamVjdFR5
cGUpKTsKKyAgICB9CisgICAgCisgICAgSnVtcCBicmFuY2hJZlR5cGUoR1BSUmVnIGNlbGxHUFIs
IEpTVHlwZSB0eXBlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGJyYW5jaDgoRXF1YWwsIEFkZHJl
c3MoY2VsbEdQUiwgSlNDZWxsOjp0eXBlSW5mb1R5cGVPZmZzZXQoKSksIFRydXN0ZWRJbW0zMih0
eXBlKSk7CisgICAgfQorICAgIAorICAgIEp1bXAgYnJhbmNoSWZOb3RUeXBlKEdQUlJlZyBjZWxs
R1BSLCBKU1R5cGUgdHlwZSkKKyAgICB7CisgICAgICAgIHJldHVybiBicmFuY2g4KE5vdEVxdWFs
LCBBZGRyZXNzKGNlbGxHUFIsIEpTQ2VsbDo6dHlwZUluZm9UeXBlT2Zmc2V0KCkpLCBUcnVzdGVk
SW1tMzIodHlwZSkpOworICAgIH0KKyAgICAKKyAgICBKdW1wIGJyYW5jaElmU3RyaW5nKEdQUlJl
ZyBjZWxsR1BSKSB7IHJldHVybiBicmFuY2hJZlR5cGUoY2VsbEdQUiwgU3RyaW5nVHlwZSk7IH0K
KyAgICBKdW1wIGJyYW5jaElmTm90U3RyaW5nKEdQUlJlZyBjZWxsR1BSKSB7IHJldHVybiBicmFu
Y2hJZk5vdFR5cGUoY2VsbEdQUiwgU3RyaW5nVHlwZSk7IH0KKyAgICBKdW1wIGJyYW5jaElmU3lt
Ym9sKEdQUlJlZyBjZWxsR1BSKSB7IHJldHVybiBicmFuY2hJZlR5cGUoY2VsbEdQUiwgU3ltYm9s
VHlwZSk7IH0KKyAgICBKdW1wIGJyYW5jaElmTm90U3ltYm9sKEdQUlJlZyBjZWxsR1BSKSB7IHJl
dHVybiBicmFuY2hJZk5vdFR5cGUoY2VsbEdQUiwgU3ltYm9sVHlwZSk7IH0KKyAgICBKdW1wIGJy
YW5jaElmRnVuY3Rpb24oR1BSUmVnIGNlbGxHUFIpIHsgcmV0dXJuIGJyYW5jaElmVHlwZShjZWxs
R1BSLCBKU0Z1bmN0aW9uVHlwZSk7IH0KKyAgICBKdW1wIGJyYW5jaElmTm90RnVuY3Rpb24oR1BS
UmVnIGNlbGxHUFIpIHsgcmV0dXJuIGJyYW5jaElmTm90VHlwZShjZWxsR1BSLCBKU0Z1bmN0aW9u
VHlwZSk7IH0KKyAgICAKKyAgICBKdW1wIGJyYW5jaElmRW1wdHkoSlNWYWx1ZVJlZ3MgcmVncykK
ICAgICB7CiAjaWYgVVNFKEpTVkFMVUU2NCkKICAgICAgICAgcmV0dXJuIGJyYW5jaFRlc3Q2NCha
ZXJvLCByZWdzLmdwcigpKTsKQEAgLTQ3NSwxMSArNTQ1LDYgQEAgcHVibGljOgogICAgICAgICBy
ZXR1cm4gY2FsbGVlRnJhbWVTbG90KDApLndpdGhPZmZzZXQoQ2FsbEZyYW1lOjpjYWxsZXJGcmFt
ZU9mZnNldCgpKTsKICAgICB9CiAKLSAgICBKdW1wIGJyYW5jaElmQ2VsbE5vdE9iamVjdChHUFJS
ZWcgY2VsbFJlZykKLSAgICB7Ci0gICAgICAgIHJldHVybiBicmFuY2g4KEJlbG93LCBBZGRyZXNz
KGNlbGxSZWcsIEpTQ2VsbDo6dHlwZUluZm9UeXBlT2Zmc2V0KCkpLCBUcnVzdGVkSW1tMzIoT2Jq
ZWN0VHlwZSkpOwotICAgIH0KLQogICAgIHN0YXRpYyBHUFJSZWcgc2VsZWN0U2NyYXRjaEdQUihH
UFJSZWcgcHJlc2VydmUxID0gSW52YWxpZEdQUlJlZywgR1BSUmVnIHByZXNlcnZlMiA9IEludmFs
aWRHUFJSZWcsIEdQUlJlZyBwcmVzZXJ2ZTMgPSBJbnZhbGlkR1BSUmVnLCBHUFJSZWcgcHJlc2Vy
dmU0ID0gSW52YWxpZEdQUlJlZywgR1BSUmVnIHByZXNlcnZlNSA9IEludmFsaWRHUFJSZWcpCiAg
ICAgewogICAgICAgICBpZiAocHJlc2VydmUxICE9IEdQUkluZm86OnJlZ1QwICYmIHByZXNlcnZl
MiAhPSBHUFJJbmZvOjpyZWdUMCAmJiBwcmVzZXJ2ZTMgIT0gR1BSSW5mbzo6cmVnVDAgJiYgcHJl
c2VydmU0ICE9IEdQUkluZm86OnJlZ1QwICYmIHByZXNlcnZlNSAhPSBHUFJJbmZvOjpyZWdUMCkK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3Mu
Y3BwCShyZXZpc2lvbiAxODM2NTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFBy
b3BlcnR5QWNjZXNzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTEzMCw3ICsxMTMwLDcgQEAgSklU
OjpKdW1wTGlzdCBKSVQ6OmVtaXRTY29wZWRBcmd1bWVudHNHZQogICAgIHN1YjMyKHByb3BlcnR5
LCBzY3JhdGNoMik7CiAgICAgbmVnMzIoc2NyYXRjaDIpOwogICAgIGxvYWRWYWx1ZShCYXNlSW5k
ZXgoYmFzZSwgc2NyYXRjaDIsIFRpbWVzRWlnaHQsIFNjb3BlZEFyZ3VtZW50czo6b3ZlcmZsb3dT
dG9yYWdlT2Zmc2V0KCkpLCByZXN1bHQpOwotICAgIHNsb3dDYXNlcy5hcHBlbmQoYnJhbmNoSXNF
bXB0eShyZXN1bHQpKTsKKyAgICBzbG93Q2FzZXMuYXBwZW5kKGJyYW5jaElmRW1wdHkocmVzdWx0
KSk7CiAgICAgZG9uZS5saW5rKHRoaXMpOwogICAgIAogICAgIHJldHVybiBzbG93Q2FzZXM7Cg==
</data>
<flag name="review"
          id="276939"
          type_id="1"
          status="+"
          setter="ggaren"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>252114</attachid>
            <date>2015-04-30 16:50:01 -0700</date>
            <delta_ts>2015-04-30 17:03:25 -0700</delta_ts>
            <desc>the patch</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>58537</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTgzNjUyKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDkyIEBA
CisyMDE1LTA0LTMwICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
TW92ZSBhbGwgb2YgdGhlIGJyYW5jaElzPHR5cGU+IGhlbHBlcnMgZnJvbSBTcGVjdWxhdGl2ZUpJ
VCBpbnRvIEFzc2VtYmx5SGVscGVycworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTQ0NDYyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisgICAgICAgIAorICAgICAgICBBdCBzb21lIHBvaW50IHdlIHN0YXJ0ZWQgYWRkaW5nIHJl
cHJlc2VudGF0aW9uLWFnbm9zdGljIGhlbHBlcnMgZm9yIGRvaW5nIGNvbW1vbiB0eXBlIHRlc3Rz
LgorICAgICAgICBXZSBhZGRlZCBzb21lIGluIFNwZWN1bGF0aXZlSklULCBhbmQgdGhlbiBzb21l
IGluIEFzc2VtYmx5SGVscGVycy4gUHJpb3IgdG8gdGhpcyBjaGFuZ2UsCisgICAgICAgIHRoZXkg
aGFkIG92ZXJsYXBwaW5nIHBvd2VycywgdGhvdWdoIFNwZWN1bGF0aXZlSklUIHdhcyBhIGJpdCBi
ZXR0ZXIuCisgICAgICAgIAorICAgICAgICBUaGlzIHJlbW92ZXMgU3BlY3VsYXRpdmVKSVQncyBo
ZWxwZXJzIGFuZCBzdHJlbmd0aGVucyBBc3NlbWJseUhlbHBlcnMnIGhlbHBlcnMuIFRoaXMgaXMK
KyAgICAgICAgYmV0dGVyIGJlY2F1c2Ugbm93IGFsbCBvZiB0aGVzZSBoZWxwZXJzIGNhbiBiZSB1
c2VkIGluIGFsbCBvZiB0aGUgYXNzZW1ibHktYmFzZWQgSklUcywgbm90CisgICAgICAgIGp1c3Qg
dGhlIERGRy4gSXQgYWxzbyBzZXR0bGVzIG9uIHdoYXQgSSBmaW5kIHRvIGJlIGEgc2xpZ2h0bHkg
YmV0dGVyIG5hbWluZyBjb252ZW50aW9uLgorICAgICAgICBGb3IgZXhhbXBsZSB3aGVyZSB3ZSBw
cmV2aW91c2x5IHdvdWxkIGhhdmUgc2FpZCBicmFuY2hJc1N0cmluZywgbm93IHdlIHNheQorICAg
ICAgICBicmFuY2hJZlN0cmluZy4gU2ltaWxhcmx5LCBicmFuY2hOb3RTdHJpbmcgYmVjb21lcyBi
cmFuY2hJZk5vdFN0cmluZy4KKworICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHA6
CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVQZWVwSG9sZU9iamVj
dEVxdWFsaXR5KToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVZh
bHVlVG9JbnQzMik6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVJ
bnN0YW5jZU9mRm9yT2JqZWN0KToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6
Y29tcGlsZUluc3RhbmNlT2YpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpj
b21waWxlU3RyaW5nVG9VbnR5cGVkRXF1YWxpdHkpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1
bGF0aXZlSklUOjpjb21waWxlU3RyaW5nSWRlbnRUb05vdFN0cmluZ1ZhckVxdWFsaXR5KToKKyAg
ICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUdldEJ5VmFsT25TY29wZWRB
cmd1bWVudHMpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlVG9T
dHJpbmdPckNhbGxTdHJpbmdDb25zdHJ1Y3Rvck9uQ2VsbCk6CisgICAgICAgIChKU0M6OkRGRzo6
U3BlY3VsYXRpdmVKSVQ6OnNwZWN1bGF0ZU9iamVjdCk6CisgICAgICAgIChKU0M6OkRGRzo6U3Bl
Y3VsYXRpdmVKSVQ6OnNwZWN1bGF0ZU9iamVjdE9yT3RoZXIpOgorICAgICAgICAoSlNDOjpERkc6
OlNwZWN1bGF0aXZlSklUOjpzcGVjdWxhdGVTdHJpbmcpOgorICAgICAgICAoSlNDOjpERkc6OlNw
ZWN1bGF0aXZlSklUOjpzcGVjdWxhdGVOb3RTdHJpbmdWYXIpOgorICAgICAgICAoSlNDOjpERkc6
OlNwZWN1bGF0aXZlSklUOjpzcGVjdWxhdGVOb3RDZWxsKToKKyAgICAgICAgKEpTQzo6REZHOjpT
cGVjdWxhdGl2ZUpJVDo6c3BlY3VsYXRlT3RoZXIpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1
bGF0aXZlSklUOjplbWl0U3dpdGNoQ2hhcik6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRp
dmVKSVQ6OmVtaXRTd2l0Y2hTdHJpbmcpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZl
SklUOjpicmFuY2hJc09iamVjdCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkRGRzo6U3BlY3Vs
YXRpdmVKSVQ6OmJyYW5jaE5vdE9iamVjdCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkRGRzo6
U3BlY3VsYXRpdmVKSVQ6OmJyYW5jaElzU3RyaW5nKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6
REZHOjpTcGVjdWxhdGl2ZUpJVDo6YnJhbmNoTm90U3RyaW5nKTogRGVsZXRlZC4KKyAgICAgICAg
KiBkZmcvREZHU3BlY3VsYXRpdmVKSVQuaDoKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVK
SVQzMl82NC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6Om5vblNwZWN1
bGF0aXZlTm9uUGVlcGhvbGVDb21wYXJlTnVsbCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3Vs
YXRpdmVKSVQ6Om5vblNwZWN1bGF0aXZlUGVlcGhvbGVCcmFuY2hOdWxsKToKKyAgICAgICAgKEpT
Qzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6ZW1pdENhbGwpOgorICAgICAgICAoSlNDOjpERkc6OlNw
ZWN1bGF0aXZlSklUOjpmaWxsU3BlY3VsYXRlQ2VsbCk6CisgICAgICAgIChKU0M6OkRGRzo6U3Bl
Y3VsYXRpdmVKSVQ6OmNvbXBpbGVPYmplY3RFcXVhbGl0eSk6CisgICAgICAgIChKU0M6OkRGRzo6
U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVPYmplY3RUb09iamVjdE9yT3RoZXJFcXVhbGl0eSk6Cisg
ICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVQZWVwSG9sZU9iamVjdFRv
T2JqZWN0T3JPdGhlckVxdWFsaXR5KToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJ
VDo6Y29tcGlsZU9iamVjdE9yT3RoZXJMb2dpY2FsTm90KToKKyAgICAgICAgKEpTQzo6REZHOjpT
cGVjdWxhdGl2ZUpJVDo6ZW1pdE9iamVjdE9yT3RoZXJCcmFuY2gpOgorICAgICAgICAoSlNDOjpE
Rkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlKToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxh
dGl2ZUpJVDo6YnJhbmNoSXNDZWxsKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6REZHOjpTcGVj
dWxhdGl2ZUpJVDo6YnJhbmNoTm90Q2VsbCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkRGRzo6
U3BlY3VsYXRpdmVKSVQ6OmJyYW5jaElzT3RoZXIpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpE
Rkc6OlNwZWN1bGF0aXZlSklUOjpicmFuY2hOb3RPdGhlcik6IERlbGV0ZWQuCisgICAgICAgICog
ZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0
aXZlSklUOjpub25TcGVjdWxhdGl2ZU5vblBlZXBob2xlQ29tcGFyZU51bGwpOgorICAgICAgICAo
SlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpub25TcGVjdWxhdGl2ZVBlZXBob2xlQnJhbmNoTnVs
bCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmZpbGxTcGVjdWxhdGVDZWxs
KToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU9iamVjdEVxdWFs
aXR5KToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU9iamVjdFRv
T2JqZWN0T3JPdGhlckVxdWFsaXR5KToKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJ
VDo6Y29tcGlsZVBlZXBIb2xlT2JqZWN0VG9PYmplY3RPck90aGVyRXF1YWxpdHkpOgorICAgICAg
ICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlT2JqZWN0T3JPdGhlckxvZ2ljYWxO
b3QpOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjplbWl0T2JqZWN0T3JPdGhl
ckJyYW5jaCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUpOgor
ICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjp3cml0ZUJhcnJpZXIpOgorICAgICAg
ICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpicmFuY2hJc0NlbGwpOiBEZWxldGVkLgorICAg
ICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpicmFuY2hOb3RDZWxsKTogRGVsZXRlZC4K
KyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6YnJhbmNoSXNPdGhlcik6IERlbGV0
ZWQuCisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmJyYW5jaE5vdE90aGVyKTog
RGVsZXRlZC4KKyAgICAgICAgKiBqaXQvQXNzZW1ibHlIZWxwZXJzLmg6CisgICAgICAgIChKU0M6
OkFzc2VtYmx5SGVscGVyczo6YnJhbmNoSWZDZWxsKToKKyAgICAgICAgKEpTQzo6QXNzZW1ibHlI
ZWxwZXJzOjpicmFuY2hJZk90aGVyKToKKyAgICAgICAgKEpTQzo6QXNzZW1ibHlIZWxwZXJzOjpi
cmFuY2hJZk5vdE90aGVyKToKKyAgICAgICAgKEpTQzo6QXNzZW1ibHlIZWxwZXJzOjpicmFuY2hJ
Zk9iamVjdCk6CisgICAgICAgIChKU0M6OkFzc2VtYmx5SGVscGVyczo6YnJhbmNoSWZOb3RPYmpl
Y3QpOgorICAgICAgICAoSlNDOjpBc3NlbWJseUhlbHBlcnM6OmJyYW5jaElmVHlwZSk6CisgICAg
ICAgIChKU0M6OkFzc2VtYmx5SGVscGVyczo6YnJhbmNoSWZOb3RUeXBlKToKKyAgICAgICAgKEpT
Qzo6QXNzZW1ibHlIZWxwZXJzOjpicmFuY2hJZlN0cmluZyk6CisgICAgICAgIChKU0M6OkFzc2Vt
Ymx5SGVscGVyczo6YnJhbmNoSWZOb3RTdHJpbmcpOgorICAgICAgICAoSlNDOjpBc3NlbWJseUhl
bHBlcnM6OmJyYW5jaElmU3ltYm9sKToKKyAgICAgICAgKEpTQzo6QXNzZW1ibHlIZWxwZXJzOjpi
cmFuY2hJZk5vdFN5bWJvbCk6CisgICAgICAgIChKU0M6OkFzc2VtYmx5SGVscGVyczo6YnJhbmNo
SWZGdW5jdGlvbik6CisgICAgICAgIChKU0M6OkFzc2VtYmx5SGVscGVyczo6YnJhbmNoSWZOb3RG
dW5jdGlvbik6CisgICAgICAgIChKU0M6OkFzc2VtYmx5SGVscGVyczo6YnJhbmNoSWZFbXB0eSk6
CisgICAgICAgIChKU0M6OkFzc2VtYmx5SGVscGVyczo6YnJhbmNoSXNFbXB0eSk6IERlbGV0ZWQu
CisgICAgICAgIChKU0M6OkFzc2VtYmx5SGVscGVyczo6YnJhbmNoSWZDZWxsTm90T2JqZWN0KTog
RGVsZXRlZC4KKyAgICAgICAgKiBqaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwOgorICAgICAgICAo
SlNDOjpKSVQ6OmVtaXRTY29wZWRBcmd1bWVudHNHZXRCeVZhbCk6CisKIDIwMTUtMDQtMzAgIEZp
bGlwIFBpemxvICA8ZnBpemxvQGFwcGxlLmNvbT4KIAogICAgICAgICBqcy9yZWdyZXNzL2lzLXN0
cmluZy1mb2xkLXRyaWNreS5odG1sIGFuZCBqcy9yZWdyZXNzL2lzLXN0cmluZy1mb2xkLmh0bWwg
YXJlIGNyYXNoaW5nCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0
aXZlSklUMzJfNjQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAJKHJldmlzaW9uIDE4MzY1MCkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTI0Niw3ICsyNDYsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpub25TcGVjdWxhdGl2
ZU5vblBlCiAgICAgSklUQ29tcGlsZXI6Okp1bXAgbm90TWFzcXVlcmFkZXNBc1VuZGVmaW5lZDsg
ICAKICAgICBpZiAobWFzcXVlcmFkZXNBc1VuZGVmaW5lZFdhdGNocG9pbnRJc1N0aWxsVmFsaWQo
KSkgewogICAgICAgICBpZiAoIWlzS25vd25DZWxsKG9wZXJhbmQubm9kZSgpKSkKLSAgICAgICAg
ICAgIG5vdENlbGwgPSBicmFuY2hOb3RDZWxsKGFyZy5qc1ZhbHVlUmVncygpKTsKKyAgICAgICAg
ICAgIG5vdENlbGwgPSBtX2ppdC5icmFuY2hJZk5vdENlbGwoYXJnLmpzVmFsdWVSZWdzKCkpOwog
ICAgICAgICAKICAgICAgICAgbV9qaXQubW92ZShpbnZlcnQgPyBUcnVzdGVkSW1tMzIoMSkgOiBU
cnVzdGVkSW1tMzIoMCksIHJlc3VsdFBheWxvYWRHUFIpOwogICAgICAgICBub3RNYXNxdWVyYWRl
c0FzVW5kZWZpbmVkID0gbV9qaXQuanVtcCgpOwpAQCAtMjU1LDcgKzI1NSw3IEBAIHZvaWQgU3Bl
Y3VsYXRpdmVKSVQ6Om5vblNwZWN1bGF0aXZlTm9uUGUKICAgICAgICAgR1BSVGVtcG9yYXJ5IHJl
bW90ZUdsb2JhbE9iamVjdCh0aGlzKTsKIAogICAgICAgICBpZiAoIWlzS25vd25DZWxsKG9wZXJh
bmQubm9kZSgpKSkKLSAgICAgICAgICAgIG5vdENlbGwgPSBicmFuY2hOb3RDZWxsKGFyZy5qc1Zh
bHVlUmVncygpKTsKKyAgICAgICAgICAgIG5vdENlbGwgPSBtX2ppdC5icmFuY2hJZk5vdENlbGwo
YXJnLmpzVmFsdWVSZWdzKCkpOwogICAgICAgICAKICAgICAgICAgSklUQ29tcGlsZXI6Okp1bXAg
aXNNYXNxdWVyYWRlc0FzVW5kZWZpbmVkID0gbV9qaXQuYnJhbmNoVGVzdDgoCiAgICAgICAgICAg
ICBKSVRDb21waWxlcjo6Tm9uWmVybywgCkBAIC0zMTQsNyArMzE0LDcgQEAgdm9pZCBTcGVjdWxh
dGl2ZUpJVDo6bm9uU3BlY3VsYXRpdmVQZWVwaAogCiAgICAgaWYgKG1hc3F1ZXJhZGVzQXNVbmRl
ZmluZWRXYXRjaHBvaW50SXNTdGlsbFZhbGlkKCkpIHsKICAgICAgICAgaWYgKCFpc0tub3duQ2Vs
bChvcGVyYW5kLm5vZGUoKSkpCi0gICAgICAgICAgICBub3RDZWxsID0gYnJhbmNoTm90Q2VsbChh
cmcuanNWYWx1ZVJlZ3MoKSk7CisgICAgICAgICAgICBub3RDZWxsID0gbV9qaXQuYnJhbmNoSWZO
b3RDZWxsKGFyZy5qc1ZhbHVlUmVncygpKTsKICAgICAgICAgCiAgICAgICAgIGp1bXAoaW52ZXJ0
ID8gdGFrZW4gOiBub3RUYWtlbiwgRm9yY2VKdW1wKTsKICAgICB9IGVsc2UgewpAQCAtMzIyLDcg
KzMyMiw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6Om5vblNwZWN1bGF0aXZlUGVlcGgKICAgICAg
ICAgR1BSVGVtcG9yYXJ5IHJlbW90ZUdsb2JhbE9iamVjdCh0aGlzKTsKIAogICAgICAgICBpZiAo
IWlzS25vd25DZWxsKG9wZXJhbmQubm9kZSgpKSkKLSAgICAgICAgICAgIG5vdENlbGwgPSBicmFu
Y2hOb3RDZWxsKGFyZy5qc1ZhbHVlUmVncygpKTsKKyAgICAgICAgICAgIG5vdENlbGwgPSBtX2pp
dC5icmFuY2hJZk5vdENlbGwoYXJnLmpzVmFsdWVSZWdzKCkpOwogICAgICAgICAKICAgICAgICAg
YnJhbmNoVGVzdDgoSklUQ29tcGlsZXI6Olplcm8sIAogICAgICAgICAgICAgSklUQ29tcGlsZXI6
OkFkZHJlc3MoYXJnUGF5bG9hZEdQUiwgSlNDZWxsOjp0eXBlSW5mb0ZsYWdzT2Zmc2V0KCkpLCAK
QEAgLTc5OSw3ICs3OTksNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjplbWl0Q2FsbChOb2RlKiBu
b2RlCiAgICAgCiAgICAgQ2FsbExpbmtJbmZvKiBpbmZvID0gbV9qaXQuY29kZUJsb2NrKCktPmFk
ZENhbGxMaW5rSW5mbygpOwogCi0gICAgc2xvd1BhdGguYXBwZW5kKGJyYW5jaE5vdENlbGwoY2Fs
bGVlLmpzVmFsdWVSZWdzKCkpKTsKKyAgICBzbG93UGF0aC5hcHBlbmQobV9qaXQuYnJhbmNoSWZO
b3RDZWxsKGNhbGxlZS5qc1ZhbHVlUmVncygpKSk7CiAgICAgc2xvd1BhdGguYXBwZW5kKG1faml0
LmJyYW5jaFB0cldpdGhQYXRjaChNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIGNhbGxlZVBheWxv
YWRHUFIsIHRhcmdldFRvQ2hlY2spKTsKIAogICAgIEpJVENvbXBpbGVyOjpDYWxsIGZhc3RDYWxs
ID0gbV9qaXQubmVhckNhbGwoKTsKQEAgLTEwMjUsNyArMTAyNSw3IEBAIEdQUlJlZyBTcGVjdWxh
dGl2ZUpJVDo6ZmlsbFNwZWN1bGF0ZUNlbGwKICAgICAgICAgaWYgKHR5cGUgJiB+U3BlY0NlbGwp
IHsKICAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soCiAgICAgICAgICAgICAgICAgQmFkVHlw
ZSwgSlNWYWx1ZVJlZ3ModGFnR1BSLCBwYXlsb2FkR1BSKSwgZWRnZSwKLSAgICAgICAgICAgICAg
ICBicmFuY2hOb3RDZWxsKGluZm8uanNWYWx1ZVJlZ3MoKSkpOworICAgICAgICAgICAgICAgIG1f
aml0LmJyYW5jaElmTm90Q2VsbChpbmZvLmpzVmFsdWVSZWdzKCkpKTsKICAgICAgICAgfQogICAg
ICAgICBtX2dwcnMudW5sb2NrKHRhZ0dQUik7CiAgICAgICAgIG1fZ3Bycy5yZWxlYXNlKHRhZ0dQ
Uik7CkBAIC0xMTUwLDEyICsxMTUwLDEyIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVP
YmplY3RFcXVhbGkKICAgICAKICAgICBpZiAobWFzcXVlcmFkZXNBc1VuZGVmaW5lZFdhdGNocG9p
bnRJc1N0aWxsVmFsaWQoKSkgewogICAgICAgICBERkdfVFlQRV9DSEVDSygKLSAgICAgICAgICAg
IEpTVmFsdWVTb3VyY2U6OnVuYm94ZWRDZWxsKG9wMUdQUiksIG5vZGUtPmNoaWxkMSgpLCBTcGVj
T2JqZWN0LCBicmFuY2hOb3RPYmplY3Qob3AxR1BSKSk7CisgICAgICAgICAgICBKU1ZhbHVlU291
cmNlOjp1bmJveGVkQ2VsbChvcDFHUFIpLCBub2RlLT5jaGlsZDEoKSwgU3BlY09iamVjdCwgbV9q
aXQuYnJhbmNoSWZOb3RPYmplY3Qob3AxR1BSKSk7CiAgICAgICAgIERGR19UWVBFX0NIRUNLKAot
ICAgICAgICAgICAgSlNWYWx1ZVNvdXJjZTo6dW5ib3hlZENlbGwob3AyR1BSKSwgbm9kZS0+Y2hp
bGQyKCksIFNwZWNPYmplY3QsIGJyYW5jaE5vdE9iamVjdChvcDJHUFIpKTsKKyAgICAgICAgICAg
IEpTVmFsdWVTb3VyY2U6OnVuYm94ZWRDZWxsKG9wMkdQUiksIG5vZGUtPmNoaWxkMigpLCBTcGVj
T2JqZWN0LCBtX2ppdC5icmFuY2hJZk5vdE9iamVjdChvcDJHUFIpKTsKICAgICB9IGVsc2Ugewog
ICAgICAgICBERkdfVFlQRV9DSEVDSygKLSAgICAgICAgICAgIEpTVmFsdWVTb3VyY2U6OnVuYm94
ZWRDZWxsKG9wMUdQUiksIG5vZGUtPmNoaWxkMSgpLCBTcGVjT2JqZWN0LCBicmFuY2hOb3RPYmpl
Y3Qob3AxR1BSKSk7CisgICAgICAgICAgICBKU1ZhbHVlU291cmNlOjp1bmJveGVkQ2VsbChvcDFH
UFIpLCBub2RlLT5jaGlsZDEoKSwgU3BlY09iamVjdCwgbV9qaXQuYnJhbmNoSWZOb3RPYmplY3Qo
b3AxR1BSKSk7CiAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFkVHlwZSwgSlNWYWx1ZVNvdXJj
ZTo6dW5ib3hlZENlbGwob3AxR1BSKSwgbm9kZS0+Y2hpbGQxKCksCiAgICAgICAgICAgICBtX2pp
dC5icmFuY2hUZXN0OCgKICAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6Tm9uWmVybywg
CkBAIC0xMTYzLDcgKzExNjMsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlT2JqZWN0
RXF1YWxpCiAgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW0zMihNYXNx
dWVyYWRlc0FzVW5kZWZpbmVkKSkpOwogCiAgICAgICAgIERGR19UWVBFX0NIRUNLKAotICAgICAg
ICAgICAgSlNWYWx1ZVNvdXJjZTo6dW5ib3hlZENlbGwob3AyR1BSKSwgbm9kZS0+Y2hpbGQyKCks
IFNwZWNPYmplY3QsIGJyYW5jaE5vdE9iamVjdChvcDJHUFIpKTsKKyAgICAgICAgICAgIEpTVmFs
dWVTb3VyY2U6OnVuYm94ZWRDZWxsKG9wMkdQUiksIG5vZGUtPmNoaWxkMigpLCBTcGVjT2JqZWN0
LCBtX2ppdC5icmFuY2hJZk5vdE9iamVjdChvcDJHUFIpKTsKICAgICAgICAgc3BlY3VsYXRpb25D
aGVjayhCYWRUeXBlLCBKU1ZhbHVlU291cmNlOjp1bmJveGVkQ2VsbChvcDJHUFIpLCBub2RlLT5j
aGlsZDIoKSwKICAgICAgICAgICAgIG1faml0LmJyYW5jaFRlc3Q4KAogICAgICAgICAgICAgICAg
IE1hY3JvQXNzZW1ibGVyOjpOb25aZXJvLApAQCAtMTIwMCwxMCArMTIwMCwxMCBAQCB2b2lkIFNw
ZWN1bGF0aXZlSklUOjpjb21waWxlT2JqZWN0VG9PYmplCiAKICAgICBpZiAobWFzcXVlcmFkZXNB
c1VuZGVmaW5lZFdhdGNocG9pbnRWYWxpZCkgewogICAgICAgICBERkdfVFlQRV9DSEVDSygKLSAg
ICAgICAgICAgIEpTVmFsdWVTb3VyY2U6OnVuYm94ZWRDZWxsKG9wMUdQUiksIGxlZnRDaGlsZCwg
U3BlY09iamVjdCwgYnJhbmNoTm90T2JqZWN0KG9wMUdQUikpOworICAgICAgICAgICAgSlNWYWx1
ZVNvdXJjZTo6dW5ib3hlZENlbGwob3AxR1BSKSwgbGVmdENoaWxkLCBTcGVjT2JqZWN0LCBtX2pp
dC5icmFuY2hJZk5vdE9iamVjdChvcDFHUFIpKTsKICAgICB9IGVsc2UgewogICAgICAgICBERkdf
VFlQRV9DSEVDSygKLSAgICAgICAgICAgIEpTVmFsdWVTb3VyY2U6OnVuYm94ZWRDZWxsKG9wMUdQ
UiksIGxlZnRDaGlsZCwgU3BlY09iamVjdCwgYnJhbmNoTm90T2JqZWN0KG9wMUdQUikpOworICAg
ICAgICAgICAgSlNWYWx1ZVNvdXJjZTo6dW5ib3hlZENlbGwob3AxR1BSKSwgbGVmdENoaWxkLCBT
cGVjT2JqZWN0LCBtX2ppdC5icmFuY2hJZk5vdE9iamVjdChvcDFHUFIpKTsKICAgICAgICAgc3Bl
Y3VsYXRpb25DaGVjayhCYWRUeXBlLCBKU1ZhbHVlU291cmNlOjp1bmJveGVkQ2VsbChvcDFHUFIp
LCBsZWZ0Q2hpbGQsIAogICAgICAgICAgICAgbV9qaXQuYnJhbmNoVGVzdDgoCiAgICAgICAgICAg
ICAgICAgTWFjcm9Bc3NlbWJsZXI6Ok5vblplcm8sIApAQCAtMTIxNCwxNSArMTIxNCwxNSBAQCB2
b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlT2JqZWN0VG9PYmplCiAgICAgCiAgICAgLy8gSXQg
c2VlbXMgdGhhdCBtb3N0IG9mIHRoZSB0aW1lIHdoZW4gcHJvZ3JhbXMgZG8gYSA9PSBiIHdoZXJl
IGIgbWF5IGJlIGVpdGhlciBudWxsL3VuZGVmaW5lZAogICAgIC8vIG9yIGFuIG9iamVjdCwgYiBp
cyB1c3VhbGx5IGFuIG9iamVjdC4gQmFsYW5jZSB0aGUgYnJhbmNoZXMgdG8gbWFrZSB0aGF0IGNh
c2UgZmFzdC4KLSAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCByaWdodE5vdENlbGwgPSBicmFuY2hO
b3RDZWxsKG9wMi5qc1ZhbHVlUmVncygpKTsKKyAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCByaWdo
dE5vdENlbGwgPSBtX2ppdC5icmFuY2hJZk5vdENlbGwob3AyLmpzVmFsdWVSZWdzKCkpOwogICAg
IAogICAgIC8vIFdlIGtub3cgdGhhdCB3aXRoaW4gdGhpcyBicmFuY2gsIHJpZ2h0Q2hpbGQgbXVz
dCBiZSBhIGNlbGwuCiAgICAgaWYgKG1hc3F1ZXJhZGVzQXNVbmRlZmluZWRXYXRjaHBvaW50VmFs
aWQpIHsKICAgICAgICAgREZHX1RZUEVfQ0hFQ0soCi0gICAgICAgICAgICBKU1ZhbHVlUmVncyhv
cDJUYWdHUFIsIG9wMlBheWxvYWRHUFIpLCByaWdodENoaWxkLCAoflNwZWNDZWxsKSB8IFNwZWNP
YmplY3QsIGJyYW5jaE5vdE9iamVjdChvcDJQYXlsb2FkR1BSKSk7CisgICAgICAgICAgICBKU1Zh
bHVlUmVncyhvcDJUYWdHUFIsIG9wMlBheWxvYWRHUFIpLCByaWdodENoaWxkLCAoflNwZWNDZWxs
KSB8IFNwZWNPYmplY3QsIG1faml0LmJyYW5jaElmTm90T2JqZWN0KG9wMlBheWxvYWRHUFIpKTsK
ICAgICB9IGVsc2UgewogICAgICAgICBERkdfVFlQRV9DSEVDSygKLSAgICAgICAgICAgIEpTVmFs
dWVSZWdzKG9wMlRhZ0dQUiwgb3AyUGF5bG9hZEdQUiksIHJpZ2h0Q2hpbGQsICh+U3BlY0NlbGwp
IHwgU3BlY09iamVjdCwgYnJhbmNoTm90T2JqZWN0KG9wMlBheWxvYWRHUFIpKTsKKyAgICAgICAg
ICAgIEpTVmFsdWVSZWdzKG9wMlRhZ0dQUiwgb3AyUGF5bG9hZEdQUiksIHJpZ2h0Q2hpbGQsICh+
U3BlY0NlbGwpIHwgU3BlY09iamVjdCwgbV9qaXQuYnJhbmNoSWZOb3RPYmplY3Qob3AyUGF5bG9h
ZEdQUikpOwogICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEJhZFR5cGUsIEpTVmFsdWVSZWdzKG9w
MlRhZ0dQUiwgb3AyUGF5bG9hZEdQUiksIHJpZ2h0Q2hpbGQsIAogICAgICAgICAgICAgbV9qaXQu
YnJhbmNoVGVzdDgoCiAgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6Ok5vblplcm8sIApA
QCAtMTI3OSwxMCArMTI3OSwxMCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlUGVlcEhv
bGVPYmplCiAKICAgICBpZiAobWFzcXVlcmFkZXNBc1VuZGVmaW5lZFdhdGNocG9pbnRWYWxpZCkg
ewogICAgICAgICBERkdfVFlQRV9DSEVDSygKLSAgICAgICAgICAgIEpTVmFsdWVTb3VyY2U6OnVu
Ym94ZWRDZWxsKG9wMUdQUiksIGxlZnRDaGlsZCwgU3BlY09iamVjdCwgYnJhbmNoTm90T2JqZWN0
KG9wMUdQUikpOworICAgICAgICAgICAgSlNWYWx1ZVNvdXJjZTo6dW5ib3hlZENlbGwob3AxR1BS
KSwgbGVmdENoaWxkLCBTcGVjT2JqZWN0LCBtX2ppdC5icmFuY2hJZk5vdE9iamVjdChvcDFHUFIp
KTsKICAgICB9IGVsc2UgewogICAgICAgICBERkdfVFlQRV9DSEVDSygKLSAgICAgICAgICAgIEpT
VmFsdWVTb3VyY2U6OnVuYm94ZWRDZWxsKG9wMUdQUiksIGxlZnRDaGlsZCwgU3BlY09iamVjdCwg
YnJhbmNoTm90T2JqZWN0KG9wMUdQUikpOworICAgICAgICAgICAgSlNWYWx1ZVNvdXJjZTo6dW5i
b3hlZENlbGwob3AxR1BSKSwgbGVmdENoaWxkLCBTcGVjT2JqZWN0LCBtX2ppdC5icmFuY2hJZk5v
dE9iamVjdChvcDFHUFIpKTsKICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhCYWRUeXBlLCBKU1Zh
bHVlU291cmNlOjp1bmJveGVkQ2VsbChvcDFHUFIpLCBsZWZ0Q2hpbGQsCiAgICAgICAgICAgICBt
X2ppdC5icmFuY2hUZXN0OCgKICAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6Tm9uWmVy
bywgCkBAIC0xMjkyLDE3ICsxMjkyLDE3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVQ
ZWVwSG9sZU9iamUKICAgICAKICAgICAvLyBJdCBzZWVtcyB0aGF0IG1vc3Qgb2YgdGhlIHRpbWUg
d2hlbiBwcm9ncmFtcyBkbyBhID09IGIgd2hlcmUgYiBtYXkgYmUgZWl0aGVyIG51bGwvdW5kZWZp
bmVkCiAgICAgLy8gb3IgYW4gb2JqZWN0LCBiIGlzIHVzdWFsbHkgYW4gb2JqZWN0LiBCYWxhbmNl
IHRoZSBicmFuY2hlcyB0byBtYWtlIHRoYXQgY2FzZSBmYXN0LgotICAgIE1hY3JvQXNzZW1ibGVy
OjpKdW1wIHJpZ2h0Tm90Q2VsbCA9IGJyYW5jaE5vdENlbGwob3AyLmpzVmFsdWVSZWdzKCkpOwor
ICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIHJpZ2h0Tm90Q2VsbCA9IG1faml0LmJyYW5jaElmTm90
Q2VsbChvcDIuanNWYWx1ZVJlZ3MoKSk7CiAgICAgCiAgICAgLy8gV2Uga25vdyB0aGF0IHdpdGhp
biB0aGlzIGJyYW5jaCwgcmlnaHRDaGlsZCBtdXN0IGJlIGEgY2VsbC4KICAgICBpZiAobWFzcXVl
cmFkZXNBc1VuZGVmaW5lZFdhdGNocG9pbnRWYWxpZCkgewogICAgICAgICBERkdfVFlQRV9DSEVD
SygKICAgICAgICAgICAgIEpTVmFsdWVSZWdzKG9wMlRhZ0dQUiwgb3AyUGF5bG9hZEdQUiksIHJp
Z2h0Q2hpbGQsICh+U3BlY0NlbGwpIHwgU3BlY09iamVjdCwKLSAgICAgICAgICAgIGJyYW5jaE5v
dE9iamVjdChvcDJQYXlsb2FkR1BSKSk7CisgICAgICAgICAgICBtX2ppdC5icmFuY2hJZk5vdE9i
amVjdChvcDJQYXlsb2FkR1BSKSk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgREZHX1RZUEVfQ0hF
Q0soCiAgICAgICAgICAgICBKU1ZhbHVlUmVncyhvcDJUYWdHUFIsIG9wMlBheWxvYWRHUFIpLCBy
aWdodENoaWxkLCAoflNwZWNDZWxsKSB8IFNwZWNPYmplY3QsCi0gICAgICAgICAgICBicmFuY2hO
b3RPYmplY3Qob3AyUGF5bG9hZEdQUikpOworICAgICAgICAgICAgbV9qaXQuYnJhbmNoSWZOb3RP
YmplY3Qob3AyUGF5bG9hZEdQUikpOwogICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEJhZFR5cGUs
IEpTVmFsdWVSZWdzKG9wMlRhZ0dQUiwgb3AyUGF5bG9hZEdQUiksIHJpZ2h0Q2hpbGQsCiAgICAg
ICAgICAgICBtX2ppdC5icmFuY2hUZXN0OCgKICAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxl
cjo6Tm9uWmVybywgCkBAIC0xMzgyLDE1ICsxMzgyLDE1IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6
OmNvbXBpbGVPYmplY3RPck90aGUKICAgICAgICAgc3RydWN0dXJlR1BSID0gc3RydWN0dXJlLmdw
cigpOwogICAgIH0KIAotICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIG5vdENlbGwgPSBicmFuY2hO
b3RDZWxsKHZhbHVlLmpzVmFsdWVSZWdzKCkpOworICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIG5v
dENlbGwgPSBtX2ppdC5icmFuY2hJZk5vdENlbGwodmFsdWUuanNWYWx1ZVJlZ3MoKSk7CiAgICAg
aWYgKG1hc3F1ZXJhZGVzQXNVbmRlZmluZWRXYXRjaHBvaW50VmFsaWQpIHsKICAgICAgICAgREZH
X1RZUEVfQ0hFQ0soCiAgICAgICAgICAgICBKU1ZhbHVlUmVncyh2YWx1ZVRhZ0dQUiwgdmFsdWVQ
YXlsb2FkR1BSKSwgbm9kZVVzZSwgKH5TcGVjQ2VsbCkgfCBTcGVjT2JqZWN0LAotICAgICAgICAg
ICAgYnJhbmNoTm90T2JqZWN0KHZhbHVlUGF5bG9hZEdQUikpOworICAgICAgICAgICAgbV9qaXQu
YnJhbmNoSWZOb3RPYmplY3QodmFsdWVQYXlsb2FkR1BSKSk7CiAgICAgfSBlbHNlIHsKICAgICAg
ICAgREZHX1RZUEVfQ0hFQ0soCiAgICAgICAgICAgICBKU1ZhbHVlUmVncyh2YWx1ZVRhZ0dQUiwg
dmFsdWVQYXlsb2FkR1BSKSwgbm9kZVVzZSwgKH5TcGVjQ2VsbCkgfCBTcGVjT2JqZWN0LAotICAg
ICAgICAgICAgYnJhbmNoTm90T2JqZWN0KHZhbHVlUGF5bG9hZEdQUikpOworICAgICAgICAgICAg
bV9qaXQuYnJhbmNoSWZOb3RPYmplY3QodmFsdWVQYXlsb2FkR1BSKSk7CiAKICAgICAgICAgTWFj
cm9Bc3NlbWJsZXI6Okp1bXAgaXNOb3RNYXNxdWVyYWRlc0FzVW5kZWZpbmVkID0gCiAgICAgICAg
ICAgICBtX2ppdC5icmFuY2hUZXN0OCgKQEAgLTE1MDQsMTUgKzE1MDQsMTUgQEAgdm9pZCBTcGVj
dWxhdGl2ZUpJVDo6ZW1pdE9iamVjdE9yT3RoZXJCcgogICAgIEdQUlJlZyB2YWx1ZVBheWxvYWRH
UFIgPSB2YWx1ZS5wYXlsb2FkR1BSKCk7CiAgICAgR1BSUmVnIHNjcmF0Y2hHUFIgPSBzY3JhdGNo
LmdwcigpOwogICAgIAotICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIG5vdENlbGwgPSBicmFuY2hO
b3RDZWxsKHZhbHVlLmpzVmFsdWVSZWdzKCkpOworICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIG5v
dENlbGwgPSBtX2ppdC5icmFuY2hJZk5vdENlbGwodmFsdWUuanNWYWx1ZVJlZ3MoKSk7CiAgICAg
aWYgKG1hc3F1ZXJhZGVzQXNVbmRlZmluZWRXYXRjaHBvaW50SXNTdGlsbFZhbGlkKCkpIHsKICAg
ICAgICAgREZHX1RZUEVfQ0hFQ0soCiAgICAgICAgICAgICBKU1ZhbHVlUmVncyh2YWx1ZVRhZ0dQ
UiwgdmFsdWVQYXlsb2FkR1BSKSwgbm9kZVVzZSwgKH5TcGVjQ2VsbCkgfCBTcGVjT2JqZWN0LAot
ICAgICAgICAgICAgYnJhbmNoTm90T2JqZWN0KHZhbHVlUGF5bG9hZEdQUikpOworICAgICAgICAg
ICAgbV9qaXQuYnJhbmNoSWZOb3RPYmplY3QodmFsdWVQYXlsb2FkR1BSKSk7CiAgICAgfSBlbHNl
IHsKICAgICAgICAgREZHX1RZUEVfQ0hFQ0soCiAgICAgICAgICAgICBKU1ZhbHVlUmVncyh2YWx1
ZVRhZ0dQUiwgdmFsdWVQYXlsb2FkR1BSKSwgbm9kZVVzZSwgKH5TcGVjQ2VsbCkgfCBTcGVjT2Jq
ZWN0LAotICAgICAgICAgICAgYnJhbmNoTm90T2JqZWN0KHZhbHVlUGF5bG9hZEdQUikpOworICAg
ICAgICAgICAgbV9qaXQuYnJhbmNoSWZOb3RPYmplY3QodmFsdWVQYXlsb2FkR1BSKSk7CiAKICAg
ICAgICAgSklUQ29tcGlsZXI6Okp1bXAgaXNOb3RNYXNxdWVyYWRlc0FzVW5kZWZpbmVkID0gbV9q
aXQuYnJhbmNoVGVzdDgoCiAgICAgICAgICAgICBKSVRDb21waWxlcjo6WmVybywgCkBAIC0zMDc0
LDggKzMwNzQsOCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAg
ICAgICAgICAgICBtX2ppdC5tb3ZlKG9wMVRhZ0dQUiwgcmVzdWx0VGFnR1BSKTsKICAgICAgICAg
ICAgIG1faml0Lm1vdmUob3AxUGF5bG9hZEdQUiwgcmVzdWx0UGF5bG9hZEdQUik7CiAgICAgICAg
IH0gZWxzZSB7Ci0gICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBhbHJlYWR5UHJpbWl0
aXZlID0gYnJhbmNoTm90Q2VsbChvcDEuanNWYWx1ZVJlZ3MoKSk7Ci0gICAgICAgICAgICBNYWNy
b0Fzc2VtYmxlcjo6SnVtcCBub3RQcmltaXRpdmUgPSBicmFuY2hJc09iamVjdChvcDFQYXlsb2Fk
R1BSKTsKKyAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIGFscmVhZHlQcmltaXRpdmUg
PSBtX2ppdC5icmFuY2hJZk5vdENlbGwob3AxLmpzVmFsdWVSZWdzKCkpOworICAgICAgICAgICAg
TWFjcm9Bc3NlbWJsZXI6Okp1bXAgbm90UHJpbWl0aXZlID0gbV9qaXQuYnJhbmNoSWZPYmplY3Qo
b3AxUGF5bG9hZEdQUik7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIGFscmVhZHlQcmltaXRp
dmUubGluaygmbV9qaXQpOwogICAgICAgICAgICAgbV9qaXQubW92ZShvcDFUYWdHUFIsIHJlc3Vs
dFRhZ0dQUik7CkBAIC0zMTA1LDggKzMxMDUsOCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21w
aWxlKE5vZGUqIG5vZGUpCiAgICAgICAgICAgICAKICAgICAgICAgICAgIEpJVENvbXBpbGVyOjpK
dW1wIGRvbmU7CiAgICAgICAgICAgICBpZiAobm9kZS0+Y2hpbGQxKCktPnByZWRpY3Rpb24oKSAm
IFNwZWNTdHJpbmcpIHsKLSAgICAgICAgICAgICAgICBKSVRDb21waWxlcjo6SnVtcCBzbG93UGF0
aDEgPSBicmFuY2hOb3RDZWxsKG9wMS5qc1ZhbHVlUmVncygpKTsKLSAgICAgICAgICAgICAgICBK
SVRDb21waWxlcjo6SnVtcCBzbG93UGF0aDIgPSBicmFuY2hOb3RTdHJpbmcob3AxUGF5bG9hZEdQ
Uik7CisgICAgICAgICAgICAgICAgSklUQ29tcGlsZXI6Okp1bXAgc2xvd1BhdGgxID0gbV9qaXQu
YnJhbmNoSWZOb3RDZWxsKG9wMS5qc1ZhbHVlUmVncygpKTsKKyAgICAgICAgICAgICAgICBKSVRD
b21waWxlcjo6SnVtcCBzbG93UGF0aDIgPSBtX2ppdC5icmFuY2hJZk5vdFN0cmluZyhvcDFQYXls
b2FkR1BSKTsKICAgICAgICAgICAgICAgICBtX2ppdC5tb3ZlKG9wMVBheWxvYWRHUFIsIHJlc3Vs
dEdQUik7CiAgICAgICAgICAgICAgICAgZG9uZSA9IG1faml0Lmp1bXAoKTsKICAgICAgICAgICAg
ICAgICBzbG93UGF0aDEubGluaygmbV9qaXQpOwpAQCAtMzQ3Myw3ICszNDczLDcgQEAgdm9pZCBT
cGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICBHUFJSZWcgdGVtcFRh
Z0dQUiA9IHRlbXBUYWcuZ3ByKCk7CiAgICAgICAgIAogICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6
SnVtcExpc3Qgc2xvd0Nhc2VzOwotICAgICAgICBzbG93Q2FzZXMuYXBwZW5kKGJyYW5jaE5vdENl
bGwodGhpc1ZhbHVlLmpzVmFsdWVSZWdzKCkpKTsKKyAgICAgICAgc2xvd0Nhc2VzLmFwcGVuZCht
X2ppdC5icmFuY2hJZk5vdENlbGwodGhpc1ZhbHVlLmpzVmFsdWVSZWdzKCkpKTsKICAgICAgICAg
c2xvd0Nhc2VzLmFwcGVuZChtX2ppdC5icmFuY2g4KAogICAgICAgICAgICAgTWFjcm9Bc3NlbWJs
ZXI6Ok5vdEVxdWFsLAogICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3ModGhpc1Zh
bHVlUGF5bG9hZEdQUiwgSlNDZWxsOjp0eXBlSW5mb1R5cGVPZmZzZXQoKSksCkBAIC0zNjM3LDcg
KzM2MzcsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAg
ICAgIAogICAgICAgICAgICAgYmFzZS51c2UoKTsKICAgICAgICAgCi0gICAgICAgICAgICBKSVRD
b21waWxlcjo6SnVtcCBub3RDZWxsID0gYnJhbmNoTm90Q2VsbChiYXNlLmpzVmFsdWVSZWdzKCkp
OworICAgICAgICAgICAgSklUQ29tcGlsZXI6Okp1bXAgbm90Q2VsbCA9IG1faml0LmJyYW5jaElm
Tm90Q2VsbChiYXNlLmpzVmFsdWVSZWdzKCkpOwogICAgICAgICAKICAgICAgICAgICAgIGNhY2hl
ZEdldEJ5SWQobm9kZS0+b3JpZ2luLnNlbWFudGljLCBiYXNlVGFnR1BSLCBiYXNlUGF5bG9hZEdQ
UiwgcmVzdWx0VGFnR1BSLCByZXN1bHRQYXlsb2FkR1BSLCBub2RlLT5pZGVudGlmaWVyTnVtYmVy
KCksIG5vdENlbGwpOwogICAgICAgICAKQEAgLTM2OTMsNyArMzY5Myw3IEBAIHZvaWQgU3BlY3Vs
YXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgCiAgICAgICAgICAgICBmbHVz
aFJlZ2lzdGVycygpOwogICAgICAgICAKLSAgICAgICAgICAgIEpJVENvbXBpbGVyOjpKdW1wIG5v
dENlbGwgPSBicmFuY2hOb3RDZWxsKGJhc2UuanNWYWx1ZVJlZ3MoKSk7CisgICAgICAgICAgICBK
SVRDb21waWxlcjo6SnVtcCBub3RDZWxsID0gbV9qaXQuYnJhbmNoSWZOb3RDZWxsKGJhc2UuanNW
YWx1ZVJlZ3MoKSk7CiAgICAgICAgIAogICAgICAgICAgICAgY2FjaGVkR2V0QnlJZChub2RlLT5v
cmlnaW4uc2VtYW50aWMsIGJhc2VUYWdHUFIsIGJhc2VQYXlsb2FkR1BSLCByZXN1bHRUYWdHUFIs
IHJlc3VsdFBheWxvYWRHUFIsIG5vZGUtPmlkZW50aWZpZXJOdW1iZXIoKSwgbm90Q2VsbCwgRG9u
dFNwaWxsKTsKICAgICAgICAgCkBAIC00MDE0LDcgKzQwMTQsNyBAQCB2b2lkIFNwZWN1bGF0aXZl
SklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgIEdQUlRlbXBvcmFyeSBsb2NhbEdsb2Jh
bE9iamVjdCh0aGlzKTsKICAgICAgICAgR1BSVGVtcG9yYXJ5IHJlbW90ZUdsb2JhbE9iamVjdCh0
aGlzKTsKIAotICAgICAgICBKSVRDb21waWxlcjo6SnVtcCBpc0NlbGwgPSBicmFuY2hJc0NlbGwo
dmFsdWUuanNWYWx1ZVJlZ3MoKSk7CisgICAgICAgIEpJVENvbXBpbGVyOjpKdW1wIGlzQ2VsbCA9
IG1faml0LmJyYW5jaElmQ2VsbCh2YWx1ZS5qc1ZhbHVlUmVncygpKTsKICAgICAgICAgCiAgICAg
ICAgIG1faml0LmNvbXBhcmUzMihKSVRDb21waWxlcjo6RXF1YWwsIHZhbHVlLnRhZ0dQUigpLCBU
cnVzdGVkSW1tMzIoSlNWYWx1ZTo6VW5kZWZpbmVkVGFnKSwgcmVzdWx0LmdwcigpKTsKICAgICAg
ICAgSklUQ29tcGlsZXI6Okp1bXAgZG9uZSA9IG1faml0Lmp1bXAoKTsKQEAgLTQwNzAsNyArNDA3
MCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAg
SlNWYWx1ZU9wZXJhbmQgdmFsdWUodGhpcywgbm9kZS0+Y2hpbGQxKCkpOwogICAgICAgICBHUFJU
ZW1wb3JhcnkgcmVzdWx0KHRoaXMsIFJldXNlLCB2YWx1ZSwgVGFnV29yZCk7CiAgICAgICAgIAot
ICAgICAgICBKSVRDb21waWxlcjo6SnVtcCBpc05vdENlbGwgPSBicmFuY2hOb3RDZWxsKHZhbHVl
LmpzVmFsdWVSZWdzKCkpOworICAgICAgICBKSVRDb21waWxlcjo6SnVtcCBpc05vdENlbGwgPSBt
X2ppdC5icmFuY2hJZk5vdENlbGwodmFsdWUuanNWYWx1ZVJlZ3MoKSk7CiAgICAgICAgIAogICAg
ICAgICBtX2ppdC5jb21wYXJlOChKSVRDb21waWxlcjo6RXF1YWwsIAogICAgICAgICAgICAgSklU
Q29tcGlsZXI6OkFkZHJlc3ModmFsdWUucGF5bG9hZEdQUigpLCBKU0NlbGw6OnR5cGVJbmZvVHlw
ZU9mZnNldCgpKSwgCkBAIC00MDkwLDcgKzQwOTAsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpj
b21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgIEpTVmFsdWVPcGVyYW5kIHZhbHVlKHRoaXMsIG5v
ZGUtPmNoaWxkMSgpKTsKICAgICAgICAgR1BSVGVtcG9yYXJ5IHJlc3VsdCh0aGlzLCBSZXVzZSwg
dmFsdWUsIFRhZ1dvcmQpOwogCi0gICAgICAgIEpJVENvbXBpbGVyOjpKdW1wIGlzTm90Q2VsbCA9
IGJyYW5jaE5vdENlbGwodmFsdWUuanNWYWx1ZVJlZ3MoKSk7CisgICAgICAgIEpJVENvbXBpbGVy
OjpKdW1wIGlzTm90Q2VsbCA9IG1faml0LmJyYW5jaElmTm90Q2VsbCh2YWx1ZS5qc1ZhbHVlUmVn
cygpKTsKIAogICAgICAgICBtX2ppdC5jb21wYXJlOChKSVRDb21waWxlcjo6QWJvdmVPckVxdWFs
LAogICAgICAgICAgICAgSklUQ29tcGlsZXI6OkFkZHJlc3ModmFsdWUucGF5bG9hZEdQUigpLCBK
U0NlbGw6OnR5cGVJbmZvVHlwZU9mZnNldCgpKSwKQEAgLTQxNDMsMTIgKzQxNDMsMTIgQEAgdm9p
ZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogCiAgICAgICAgIEFTU0VSVChu
b2RlLT5jaGlsZDEoKS51c2VLaW5kKCkgPT0gVW50eXBlZFVzZSB8fCBub2RlLT5jaGlsZDEoKS51
c2VLaW5kKCkgPT0gQ2VsbFVzZSB8fCBub2RlLT5jaGlsZDEoKS51c2VLaW5kKCkgPT0gU3RyaW5n
VXNlKTsKIAotICAgICAgICBKSVRDb21waWxlcjo6SnVtcCBpc05vdENlbGwgPSBicmFuY2hOb3RD
ZWxsKHZhbHVlLmpzVmFsdWVSZWdzKCkpOworICAgICAgICBKSVRDb21waWxlcjo6SnVtcCBpc05v
dENlbGwgPSBtX2ppdC5icmFuY2hJZk5vdENlbGwodmFsdWUuanNWYWx1ZVJlZ3MoKSk7CiAgICAg
ICAgIGlmIChub2RlLT5jaGlsZDEoKS51c2VLaW5kKCkgIT0gVW50eXBlZFVzZSkKICAgICAgICAg
ICAgIERGR19UWVBFX0NIRUNLKEpTVmFsdWVSZWdzKHRhZ0dQUiwgcGF5bG9hZEdQUiksIG5vZGUt
PmNoaWxkMSgpLCBTcGVjQ2VsbCwgaXNOb3RDZWxsKTsKIAogICAgICAgICBpZiAoIW5vZGUtPmNo
aWxkMSgpLT5zaG91bGRTcGVjdWxhdGVPYmplY3QoKSB8fCBub2RlLT5jaGlsZDEoKS51c2VLaW5k
KCkgPT0gU3RyaW5nVXNlKSB7Ci0gICAgICAgICAgICBKSVRDb21waWxlcjo6SnVtcCBub3RTdHJp
bmcgPSBicmFuY2hOb3RTdHJpbmcocGF5bG9hZEdQUik7CisgICAgICAgICAgICBKSVRDb21waWxl
cjo6SnVtcCBub3RTdHJpbmcgPSBtX2ppdC5icmFuY2hJZk5vdFN0cmluZyhwYXlsb2FkR1BSKTsK
ICAgICAgICAgICAgIGlmIChub2RlLT5jaGlsZDEoKS51c2VLaW5kKCkgPT0gU3RyaW5nVXNlKQog
ICAgICAgICAgICAgICAgIERGR19UWVBFX0NIRUNLKEpTVmFsdWVSZWdzKHRhZ0dQUiwgcGF5bG9h
ZEdQUiksIG5vZGUtPmNoaWxkMSgpLCBTcGVjU3RyaW5nLCBub3RTdHJpbmcpOwogICAgICAgICAg
ICAgbV9qaXQubW92ZShUcnVzdGVkSW1tUHRyKG1faml0LnZtKCktPnNtYWxsU3RyaW5ncy5zdHJp
bmdTdHJpbmcoKSksIHJlc3VsdEdQUik7CkBAIC00NTcwLDcgKzQ1NzAsNyBAQCB2b2lkIFNwZWN1
bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgIG1faml0LnN0b3JlMzIodmFs
dWUucGF5bG9hZEdQUigpLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhzY3JhdGNoMUdQUiwgVHlw
ZVByb2ZpbGVyTG9nOjpMb2dFbnRyeTo6dmFsdWVPZmZzZXQoKSArIE9CSkVDVF9PRkZTRVRPRihK
U1ZhbHVlLCB1LmFzQml0cy5wYXlsb2FkKSkpOwogCiAgICAgICAgIC8vIFN0b3JlIHRoZSBzdHJ1
Y3R1cmVJRCBvZiB0aGUgY2VsbCBpZiB2YWx1ZUdQUiBpcyBhIGNlbGwsIG90aGVyd2lzZSwgc3Rv
cmUgMCBvbiB0aGUgbG9nIGVudHJ5LgotICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBpc05v
dENlbGwgPSBicmFuY2hOb3RDZWxsKHZhbHVlLmpzVmFsdWVSZWdzKCkpOworICAgICAgICBNYWNy
b0Fzc2VtYmxlcjo6SnVtcCBpc05vdENlbGwgPSBtX2ppdC5icmFuY2hJZk5vdENlbGwodmFsdWUu
anNWYWx1ZVJlZ3MoKSk7CiAgICAgICAgIG1faml0LmxvYWQzMihNYWNyb0Fzc2VtYmxlcjo6QWRk
cmVzcyh2YWx1ZS5wYXlsb2FkR1BSKCksIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSksIHNj
cmF0Y2gzR1BSKTsKICAgICAgICAgbV9qaXQuc3RvcmUzMihzY3JhdGNoM0dQUiwgTWFjcm9Bc3Nl
bWJsZXI6OkFkZHJlc3Moc2NyYXRjaDFHUFIsIFR5cGVQcm9maWxlckxvZzo6TG9nRW50cnk6OnN0
cnVjdHVyZUlET2Zmc2V0KCkpKTsKICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXAgc2tpcElz
Q2VsbCA9IG1faml0Lmp1bXAoKTsKQEAgLTQ3MTMsMzIgKzQ3MTMsNiBAQCB2b2lkIFNwZWN1bGF0
aXZlSklUOjp3cml0ZUJhcnJpZXIoSlNDZWxsCiB9CiAjZW5kaWYgLy8gRU5BQkxFKEdHQykKIAot
SklUQ29tcGlsZXI6Okp1bXAgU3BlY3VsYXRpdmVKSVQ6OmJyYW5jaElzQ2VsbChKU1ZhbHVlUmVn
cyByZWdzKQotewotICAgIHJldHVybiBtX2ppdC5icmFuY2gzMihNYWNyb0Fzc2VtYmxlcjo6RXF1
YWwsIHJlZ3MudGFnR1BSKCksIFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpDZWxsVGFnKSk7Ci19Ci0K
LUpJVENvbXBpbGVyOjpKdW1wIFNwZWN1bGF0aXZlSklUOjpicmFuY2hOb3RDZWxsKEpTVmFsdWVS
ZWdzIHJlZ3MpCi17Ci0gICAgcmV0dXJuIG1faml0LmJyYW5jaDMyKE1hY3JvQXNzZW1ibGVyOjpO
b3RFcXVhbCwgcmVncy50YWdHUFIoKSwgVHJ1c3RlZEltbTMyKEpTVmFsdWU6OkNlbGxUYWcpKTsK
LX0KLQotSklUQ29tcGlsZXI6Okp1bXAgU3BlY3VsYXRpdmVKSVQ6OmJyYW5jaElzT3RoZXIoSlNW
YWx1ZVJlZ3MgcmVncywgR1BSUmVnIHRlbXBHUFIpCi17Ci0gICAgbV9qaXQub3IzMihUcnVzdGVk
SW1tMzIoMSksIHJlZ3MudGFnR1BSKCksIHRlbXBHUFIpOwotICAgIHJldHVybiBtX2ppdC5icmFu
Y2gzMigKLSAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkVxdWFsLCB0ZW1wR1BSLAotICAgICAgICBN
YWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbTMyKEpTVmFsdWU6Ok51bGxUYWcpKTsKLX0KLQotSklU
Q29tcGlsZXI6Okp1bXAgU3BlY3VsYXRpdmVKSVQ6OmJyYW5jaE5vdE90aGVyKEpTVmFsdWVSZWdz
IHJlZ3MsIEdQUlJlZyB0ZW1wR1BSKQotewotICAgIG1faml0Lm9yMzIoVHJ1c3RlZEltbTMyKDEp
LCByZWdzLnRhZ0dQUigpLCB0ZW1wR1BSKTsKLSAgICByZXR1cm4gbV9qaXQuYnJhbmNoMzIoCi0g
ICAgICAgIE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgdGVtcEdQUiwKLSAgICAgICAgTWFjcm9B
c3NlbWJsZXI6OlRydXN0ZWRJbW0zMihKU1ZhbHVlOjpOdWxsVGFnKSk7Ci19Ci0KIHZvaWQgU3Bl
Y3VsYXRpdmVKSVQ6Om1vdmVUcnVlVG8oR1BSUmVnIGdwcikKIHsKICAgICBtX2ppdC5tb3ZlKFRy
dXN0ZWRJbW0zMigxKSwgZ3ByKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
U3BlY3VsYXRpdmVKSVQ2NC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAkocmV2aXNpb24gMTgzNjUwKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMjA0LDcgKzIwNCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6Om5vblNwZWN1bGF0aXZl
Tm9uUGUKICAgICBKSVRDb21waWxlcjo6SnVtcCBub3RNYXNxdWVyYWRlc0FzVW5kZWZpbmVkOwog
ICAgIGlmIChtYXNxdWVyYWRlc0FzVW5kZWZpbmVkV2F0Y2hwb2ludElzU3RpbGxWYWxpZCgpKSB7
CiAgICAgICAgIGlmICghaXNLbm93bkNlbGwob3BlcmFuZC5ub2RlKCkpKQotICAgICAgICAgICAg
bm90Q2VsbCA9IGJyYW5jaE5vdENlbGwoSlNWYWx1ZVJlZ3MoYXJnR1BSKSk7CisgICAgICAgICAg
ICBub3RDZWxsID0gbV9qaXQuYnJhbmNoSWZOb3RDZWxsKEpTVmFsdWVSZWdzKGFyZ0dQUikpOwog
CiAgICAgICAgIG1faml0Lm1vdmUoaW52ZXJ0ID8gVHJ1c3RlZEltbTMyKDEpIDogVHJ1c3RlZElt
bTMyKDApLCByZXN1bHRHUFIpOwogICAgICAgICBub3RNYXNxdWVyYWRlc0FzVW5kZWZpbmVkID0g
bV9qaXQuanVtcCgpOwpAQCAtMjE0LDcgKzIxNCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6Om5v
blNwZWN1bGF0aXZlTm9uUGUKICAgICAgICAgR1BSVGVtcG9yYXJ5IHNjcmF0Y2godGhpcyk7CiAK
ICAgICAgICAgaWYgKCFpc0tub3duQ2VsbChvcGVyYW5kLm5vZGUoKSkpCi0gICAgICAgICAgICBu
b3RDZWxsID0gYnJhbmNoTm90Q2VsbChKU1ZhbHVlUmVncyhhcmdHUFIpKTsKKyAgICAgICAgICAg
IG5vdENlbGwgPSBtX2ppdC5icmFuY2hJZk5vdENlbGwoSlNWYWx1ZVJlZ3MoYXJnR1BSKSk7CiAg
ICAgICAgIAogICAgICAgICBKSVRDb21waWxlcjo6SnVtcCBpc01hc3F1ZXJhZGVzQXNVbmRlZmlu
ZWQgPSBtX2ppdC5icmFuY2hUZXN0OCgKICAgICAgICAgICAgIEpJVENvbXBpbGVyOjpOb25aZXJv
LCAKQEAgLTI3Myw3ICsyNzMsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpub25TcGVjdWxhdGl2
ZVBlZXBoCiAgICAgCiAgICAgaWYgKG1hc3F1ZXJhZGVzQXNVbmRlZmluZWRXYXRjaHBvaW50SXNT
dGlsbFZhbGlkKCkpIHsKICAgICAgICAgaWYgKCFpc0tub3duQ2VsbChvcGVyYW5kLm5vZGUoKSkp
Ci0gICAgICAgICAgICBub3RDZWxsID0gYnJhbmNoTm90Q2VsbChKU1ZhbHVlUmVncyhhcmdHUFIp
KTsKKyAgICAgICAgICAgIG5vdENlbGwgPSBtX2ppdC5icmFuY2hJZk5vdENlbGwoSlNWYWx1ZVJl
Z3MoYXJnR1BSKSk7CiAgICAgICAgIAogICAgICAgICBqdW1wKGludmVydCA/IHRha2VuIDogbm90
VGFrZW4sIEZvcmNlSnVtcCk7CiAgICAgfSBlbHNlIHsKQEAgLTI4Miw3ICsyODIsNyBAQCB2b2lk
IFNwZWN1bGF0aXZlSklUOjpub25TcGVjdWxhdGl2ZVBlZXBoCiAgICAgICAgIEdQUlRlbXBvcmFy
eSBzY3JhdGNoKHRoaXMpOwogCiAgICAgICAgIGlmICghaXNLbm93bkNlbGwob3BlcmFuZC5ub2Rl
KCkpKQotICAgICAgICAgICAgbm90Q2VsbCA9IGJyYW5jaE5vdENlbGwoSlNWYWx1ZVJlZ3MoYXJn
R1BSKSk7CisgICAgICAgICAgICBub3RDZWxsID0gbV9qaXQuYnJhbmNoSWZOb3RDZWxsKEpTVmFs
dWVSZWdzKGFyZ0dQUikpOwogICAgICAgICAKICAgICAgICAgYnJhbmNoVGVzdDgoSklUQ29tcGls
ZXI6Olplcm8sIAogICAgICAgICAgICAgSklUQ29tcGlsZXI6OkFkZHJlc3MoYXJnR1BSLCBKU0Nl
bGw6OnR5cGVJbmZvRmxhZ3NPZmZzZXQoKSksIApAQCAtMTExOSw3ICsxMTE5LDcgQEAgR1BSUmVn
IFNwZWN1bGF0aXZlSklUOjpmaWxsU3BlY3VsYXRlQ2VsbAogCiAgICAgICAgIGluZm8uZmlsbEpT
VmFsdWUoKm1fc3RyZWFtLCBncHIsIERhdGFGb3JtYXRKUyk7CiAgICAgICAgIGlmICh0eXBlICYg
flNwZWNDZWxsKQotICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhCYWRUeXBlLCBKU1ZhbHVl
UmVncyhncHIpLCBlZGdlLCBicmFuY2hOb3RDZWxsKEpTVmFsdWVSZWdzKGdwcikpKTsKKyAgICAg
ICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFkVHlwZSwgSlNWYWx1ZVJlZ3MoZ3ByKSwgZWRnZSwg
bV9qaXQuYnJhbmNoSWZOb3RDZWxsKEpTVmFsdWVSZWdzKGdwcikpKTsKICAgICAgICAgaW5mby5m
aWxsSlNWYWx1ZSgqbV9zdHJlYW0sIGdwciwgRGF0YUZvcm1hdEpTQ2VsbCk7CiAgICAgICAgIHJl
dHVybiBncHI7CiAgICAgfQpAQCAtMTEyOSw3ICsxMTI5LDcgQEAgR1BSUmVnIFNwZWN1bGF0aXZl
SklUOjpmaWxsU3BlY3VsYXRlQ2VsbAogICAgICAgICBHUFJSZWcgZ3ByID0gaW5mby5ncHIoKTsK
ICAgICAgICAgbV9ncHJzLmxvY2soZ3ByKTsKICAgICAgICAgaWYgKCFBU1NFUlRfRElTQUJMRUQp
IHsKLSAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIGNoZWNrQ2VsbCA9IGJyYW5jaElz
Q2VsbChKU1ZhbHVlUmVncyhncHIpKTsKKyAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1w
IGNoZWNrQ2VsbCA9IG1faml0LmJyYW5jaElmQ2VsbChKU1ZhbHVlUmVncyhncHIpKTsKICAgICAg
ICAgICAgIG1faml0LmFib3J0V2l0aFJlYXNvbihERkdJc05vdENlbGwpOwogICAgICAgICAgICAg
Y2hlY2tDZWxsLmxpbmsoJm1faml0KTsKICAgICAgICAgfQpAQCAtMTE0MCw3ICsxMTQwLDcgQEAg
R1BSUmVnIFNwZWN1bGF0aXZlSklUOjpmaWxsU3BlY3VsYXRlQ2VsbAogICAgICAgICBHUFJSZWcg
Z3ByID0gaW5mby5ncHIoKTsKICAgICAgICAgbV9ncHJzLmxvY2soZ3ByKTsKICAgICAgICAgaWYg
KHR5cGUgJiB+U3BlY0NlbGwpCi0gICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEJhZFR5cGUs
IEpTVmFsdWVSZWdzKGdwciksIGVkZ2UsIGJyYW5jaE5vdENlbGwoSlNWYWx1ZVJlZ3MoZ3ByKSkp
OworICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhCYWRUeXBlLCBKU1ZhbHVlUmVncyhncHIp
LCBlZGdlLCBtX2ppdC5icmFuY2hJZk5vdENlbGwoSlNWYWx1ZVJlZ3MoZ3ByKSkpOwogICAgICAg
ICBpbmZvLmZpbGxKU1ZhbHVlKCptX3N0cmVhbSwgZ3ByLCBEYXRhRm9ybWF0SlNDZWxsKTsKICAg
ICAgICAgcmV0dXJuIGdwcjsKICAgICB9CkBAIC0xMjY1LDEyICsxMjY1LDEyIEBAIHZvaWQgU3Bl
Y3VsYXRpdmVKSVQ6OmNvbXBpbGVPYmplY3RFcXVhbGkKICAgIAogICAgIGlmIChtYXNxdWVyYWRl
c0FzVW5kZWZpbmVkV2F0Y2hwb2ludElzU3RpbGxWYWxpZCgpKSB7CiAgICAgICAgIERGR19UWVBF
X0NIRUNLKAotICAgICAgICAgICAgSlNWYWx1ZVNvdXJjZTo6dW5ib3hlZENlbGwob3AxR1BSKSwg
bm9kZS0+Y2hpbGQxKCksIFNwZWNPYmplY3QsIGJyYW5jaE5vdE9iamVjdChvcDFHUFIpKTsKKyAg
ICAgICAgICAgIEpTVmFsdWVTb3VyY2U6OnVuYm94ZWRDZWxsKG9wMUdQUiksIG5vZGUtPmNoaWxk
MSgpLCBTcGVjT2JqZWN0LCBtX2ppdC5icmFuY2hJZk5vdE9iamVjdChvcDFHUFIpKTsKICAgICAg
ICAgREZHX1RZUEVfQ0hFQ0soCi0gICAgICAgICAgICBKU1ZhbHVlU291cmNlOjp1bmJveGVkQ2Vs
bChvcDJHUFIpLCBub2RlLT5jaGlsZDIoKSwgU3BlY09iamVjdCwgYnJhbmNoTm90T2JqZWN0KG9w
MkdQUikpOworICAgICAgICAgICAgSlNWYWx1ZVNvdXJjZTo6dW5ib3hlZENlbGwob3AyR1BSKSwg
bm9kZS0+Y2hpbGQyKCksIFNwZWNPYmplY3QsIG1faml0LmJyYW5jaElmTm90T2JqZWN0KG9wMkdQ
UikpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIERGR19UWVBFX0NIRUNLKAotICAgICAgICAgICAg
SlNWYWx1ZVNvdXJjZTo6dW5ib3hlZENlbGwob3AxR1BSKSwgbm9kZS0+Y2hpbGQxKCksIFNwZWNP
YmplY3QsIGJyYW5jaE5vdE9iamVjdChvcDFHUFIpKTsKKyAgICAgICAgICAgIEpTVmFsdWVTb3Vy
Y2U6OnVuYm94ZWRDZWxsKG9wMUdQUiksIG5vZGUtPmNoaWxkMSgpLCBTcGVjT2JqZWN0LCBtX2pp
dC5icmFuY2hJZk5vdE9iamVjdChvcDFHUFIpKTsKICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhC
YWRUeXBlLCBKU1ZhbHVlU291cmNlOjp1bmJveGVkQ2VsbChvcDFHUFIpLCBub2RlLT5jaGlsZDEo
KSwKICAgICAgICAgICAgIG1faml0LmJyYW5jaFRlc3Q4KAogICAgICAgICAgICAgICAgIE1hY3Jv
QXNzZW1ibGVyOjpOb25aZXJvLCAKQEAgLTEyNzgsNyArMTI3OCw3IEBAIHZvaWQgU3BlY3VsYXRp
dmVKSVQ6OmNvbXBpbGVPYmplY3RFcXVhbGkKICAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxl
cjo6VHJ1c3RlZEltbTMyKE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQpKSk7CiAKICAgICAgICAgREZH
X1RZUEVfQ0hFQ0soCi0gICAgICAgICAgICBKU1ZhbHVlU291cmNlOjp1bmJveGVkQ2VsbChvcDJH
UFIpLCBub2RlLT5jaGlsZDIoKSwgU3BlY09iamVjdCwgYnJhbmNoTm90T2JqZWN0KG9wMkdQUikp
OworICAgICAgICAgICAgSlNWYWx1ZVNvdXJjZTo6dW5ib3hlZENlbGwob3AyR1BSKSwgbm9kZS0+
Y2hpbGQyKCksIFNwZWNPYmplY3QsIG1faml0LmJyYW5jaElmTm90T2JqZWN0KG9wMkdQUikpOwog
ICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEJhZFR5cGUsIEpTVmFsdWVTb3VyY2U6OnVuYm94ZWRD
ZWxsKG9wMkdQUiksIG5vZGUtPmNoaWxkMigpLAogICAgICAgICAgICAgbV9qaXQuYnJhbmNoVGVz
dDgoCiAgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6Ok5vblplcm8sIApAQCAtMTMxMSwx
MCArMTMxMSwxMCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlT2JqZWN0VG9PYmplCiAK
ICAgICBpZiAobWFzcXVlcmFkZXNBc1VuZGVmaW5lZFdhdGNocG9pbnRWYWxpZCkgewogICAgICAg
ICBERkdfVFlQRV9DSEVDSygKLSAgICAgICAgICAgIEpTVmFsdWVTb3VyY2U6OnVuYm94ZWRDZWxs
KG9wMUdQUiksIGxlZnRDaGlsZCwgU3BlY09iamVjdCwgYnJhbmNoTm90T2JqZWN0KG9wMUdQUikp
OworICAgICAgICAgICAgSlNWYWx1ZVNvdXJjZTo6dW5ib3hlZENlbGwob3AxR1BSKSwgbGVmdENo
aWxkLCBTcGVjT2JqZWN0LCBtX2ppdC5icmFuY2hJZk5vdE9iamVjdChvcDFHUFIpKTsKICAgICB9
IGVsc2UgewogICAgICAgICBERkdfVFlQRV9DSEVDSygKLSAgICAgICAgICAgIEpTVmFsdWVTb3Vy
Y2U6OnVuYm94ZWRDZWxsKG9wMUdQUiksIGxlZnRDaGlsZCwgU3BlY09iamVjdCwgYnJhbmNoTm90
T2JqZWN0KG9wMUdQUikpOworICAgICAgICAgICAgSlNWYWx1ZVNvdXJjZTo6dW5ib3hlZENlbGwo
b3AxR1BSKSwgbGVmdENoaWxkLCBTcGVjT2JqZWN0LCBtX2ppdC5icmFuY2hJZk5vdE9iamVjdChv
cDFHUFIpKTsKICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhCYWRUeXBlLCBKU1ZhbHVlU291cmNl
Ojp1bmJveGVkQ2VsbChvcDFHUFIpLCBsZWZ0Q2hpbGQsCiAgICAgICAgICAgICBtX2ppdC5icmFu
Y2hUZXN0OCgKICAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6Tm9uWmVybywgCkBAIC0x
MzI0LDE1ICsxMzI0LDE1IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVPYmplY3RUb09i
amUKICAgICAKICAgICAvLyBJdCBzZWVtcyB0aGF0IG1vc3Qgb2YgdGhlIHRpbWUgd2hlbiBwcm9n
cmFtcyBkbyBhID09IGIgd2hlcmUgYiBtYXkgYmUgZWl0aGVyIG51bGwvdW5kZWZpbmVkCiAgICAg
Ly8gb3IgYW4gb2JqZWN0LCBiIGlzIHVzdWFsbHkgYW4gb2JqZWN0LiBCYWxhbmNlIHRoZSBicmFu
Y2hlcyB0byBtYWtlIHRoYXQgY2FzZSBmYXN0LgotICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIHJp
Z2h0Tm90Q2VsbCA9IGJyYW5jaE5vdENlbGwoSlNWYWx1ZVJlZ3Mob3AyR1BSKSk7CisgICAgTWFj
cm9Bc3NlbWJsZXI6Okp1bXAgcmlnaHROb3RDZWxsID0gbV9qaXQuYnJhbmNoSWZOb3RDZWxsKEpT
VmFsdWVSZWdzKG9wMkdQUikpOwogICAgIAogICAgIC8vIFdlIGtub3cgdGhhdCB3aXRoaW4gdGhp
cyBicmFuY2gsIHJpZ2h0Q2hpbGQgbXVzdCBiZSBhIGNlbGwuIAogICAgIGlmIChtYXNxdWVyYWRl
c0FzVW5kZWZpbmVkV2F0Y2hwb2ludFZhbGlkKSB7CiAgICAgICAgIERGR19UWVBFX0NIRUNLKAot
ICAgICAgICAgICAgSlNWYWx1ZVJlZ3Mob3AyR1BSKSwgcmlnaHRDaGlsZCwgKH5TcGVjQ2VsbCkg
fCBTcGVjT2JqZWN0LCBicmFuY2hOb3RPYmplY3Qob3AyR1BSKSk7CisgICAgICAgICAgICBKU1Zh
bHVlUmVncyhvcDJHUFIpLCByaWdodENoaWxkLCAoflNwZWNDZWxsKSB8IFNwZWNPYmplY3QsIG1f
aml0LmJyYW5jaElmTm90T2JqZWN0KG9wMkdQUikpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIERG
R19UWVBFX0NIRUNLKAotICAgICAgICAgICAgSlNWYWx1ZVJlZ3Mob3AyR1BSKSwgcmlnaHRDaGls
ZCwgKH5TcGVjQ2VsbCkgfCBTcGVjT2JqZWN0LCBicmFuY2hOb3RPYmplY3Qob3AyR1BSKSk7Cisg
ICAgICAgICAgICBKU1ZhbHVlUmVncyhvcDJHUFIpLCByaWdodENoaWxkLCAoflNwZWNDZWxsKSB8
IFNwZWNPYmplY3QsIG1faml0LmJyYW5jaElmTm90T2JqZWN0KG9wMkdQUikpOwogICAgICAgICBz
cGVjdWxhdGlvbkNoZWNrKEJhZFR5cGUsIEpTVmFsdWVSZWdzKG9wMkdQUiksIHJpZ2h0Q2hpbGQs
CiAgICAgICAgICAgICBtX2ppdC5icmFuY2hUZXN0OCgKICAgICAgICAgICAgICAgICBNYWNyb0Fz
c2VtYmxlcjo6Tm9uWmVybywgCkBAIC0xMzg5LDEwICsxMzg5LDEwIEBAIHZvaWQgU3BlY3VsYXRp
dmVKSVQ6OmNvbXBpbGVQZWVwSG9sZU9iamUKIAogICAgIGlmIChtYXNxdWVyYWRlc0FzVW5kZWZp
bmVkV2F0Y2hwb2ludFZhbGlkKSB7CiAgICAgICAgIERGR19UWVBFX0NIRUNLKAotICAgICAgICAg
ICAgSlNWYWx1ZVNvdXJjZTo6dW5ib3hlZENlbGwob3AxR1BSKSwgbGVmdENoaWxkLCBTcGVjT2Jq
ZWN0LCBicmFuY2hOb3RPYmplY3Qob3AxR1BSKSk7CisgICAgICAgICAgICBKU1ZhbHVlU291cmNl
Ojp1bmJveGVkQ2VsbChvcDFHUFIpLCBsZWZ0Q2hpbGQsIFNwZWNPYmplY3QsIG1faml0LmJyYW5j
aElmTm90T2JqZWN0KG9wMUdQUikpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIERGR19UWVBFX0NI
RUNLKAotICAgICAgICAgICAgSlNWYWx1ZVNvdXJjZTo6dW5ib3hlZENlbGwob3AxR1BSKSwgbGVm
dENoaWxkLCBTcGVjT2JqZWN0LCBicmFuY2hOb3RPYmplY3Qob3AxR1BSKSk7CisgICAgICAgICAg
ICBKU1ZhbHVlU291cmNlOjp1bmJveGVkQ2VsbChvcDFHUFIpLCBsZWZ0Q2hpbGQsIFNwZWNPYmpl
Y3QsIG1faml0LmJyYW5jaElmTm90T2JqZWN0KG9wMUdQUikpOwogICAgICAgICBzcGVjdWxhdGlv
bkNoZWNrKEJhZFR5cGUsIEpTVmFsdWVTb3VyY2U6OnVuYm94ZWRDZWxsKG9wMUdQUiksIGxlZnRD
aGlsZCwgCiAgICAgICAgICAgICBtX2ppdC5icmFuY2hUZXN0OCgKICAgICAgICAgICAgICAgICBN
YWNyb0Fzc2VtYmxlcjo6Tm9uWmVybywgCkBAIC0xNDAyLDE1ICsxNDAyLDE1IEBAIHZvaWQgU3Bl
Y3VsYXRpdmVKSVQ6OmNvbXBpbGVQZWVwSG9sZU9iamUKIAogICAgIC8vIEl0IHNlZW1zIHRoYXQg
bW9zdCBvZiB0aGUgdGltZSB3aGVuIHByb2dyYW1zIGRvIGEgPT0gYiB3aGVyZSBiIG1heSBiZSBl
aXRoZXIgbnVsbC91bmRlZmluZWQKICAgICAvLyBvciBhbiBvYmplY3QsIGIgaXMgdXN1YWxseSBh
biBvYmplY3QuIEJhbGFuY2UgdGhlIGJyYW5jaGVzIHRvIG1ha2UgdGhhdCBjYXNlIGZhc3QuCi0g
ICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXAgcmlnaHROb3RDZWxsID0gYnJhbmNoTm90Q2VsbChKU1Zh
bHVlUmVncyhvcDJHUFIpKTsKKyAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCByaWdodE5vdENlbGwg
PSBtX2ppdC5icmFuY2hJZk5vdENlbGwoSlNWYWx1ZVJlZ3Mob3AyR1BSKSk7CiAgICAgCiAgICAg
Ly8gV2Uga25vdyB0aGF0IHdpdGhpbiB0aGlzIGJyYW5jaCwgcmlnaHRDaGlsZCBtdXN0IGJlIGEg
Y2VsbC4gCiAgICAgaWYgKG1hc3F1ZXJhZGVzQXNVbmRlZmluZWRXYXRjaHBvaW50VmFsaWQpIHsK
ICAgICAgICAgREZHX1RZUEVfQ0hFQ0soCi0gICAgICAgICAgICBKU1ZhbHVlUmVncyhvcDJHUFIp
LCByaWdodENoaWxkLCAoflNwZWNDZWxsKSB8IFNwZWNPYmplY3QsIGJyYW5jaE5vdE9iamVjdChv
cDJHUFIpKTsKKyAgICAgICAgICAgIEpTVmFsdWVSZWdzKG9wMkdQUiksIHJpZ2h0Q2hpbGQsICh+
U3BlY0NlbGwpIHwgU3BlY09iamVjdCwgbV9qaXQuYnJhbmNoSWZOb3RPYmplY3Qob3AyR1BSKSk7
CiAgICAgfSBlbHNlIHsKICAgICAgICAgREZHX1RZUEVfQ0hFQ0soCi0gICAgICAgICAgICBKU1Zh
bHVlUmVncyhvcDJHUFIpLCByaWdodENoaWxkLCAoflNwZWNDZWxsKSB8IFNwZWNPYmplY3QsIGJy
YW5jaE5vdE9iamVjdChvcDJHUFIpKTsKKyAgICAgICAgICAgIEpTVmFsdWVSZWdzKG9wMkdQUiks
IHJpZ2h0Q2hpbGQsICh+U3BlY0NlbGwpIHwgU3BlY09iamVjdCwgbV9qaXQuYnJhbmNoSWZOb3RP
YmplY3Qob3AyR1BSKSk7CiAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFkVHlwZSwgSlNWYWx1
ZVJlZ3Mob3AyR1BSKSwgcmlnaHRDaGlsZCwKICAgICAgICAgICAgIG1faml0LmJyYW5jaFRlc3Q4
KAogICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpOb25aZXJvLCAKQEAgLTE1MjksMTMg
KzE1MjksMTMgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU9iamVjdE9yT3RoZQogICAg
ICAgICBzY3JhdGNoR1BSID0gc2NyYXRjaC5ncHIoKTsKICAgICB9CiAKLSAgICBNYWNyb0Fzc2Vt
Ymxlcjo6SnVtcCBub3RDZWxsID0gYnJhbmNoTm90Q2VsbChKU1ZhbHVlUmVncyh2YWx1ZUdQUikp
OworICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIG5vdENlbGwgPSBtX2ppdC5icmFuY2hJZk5vdENl
bGwoSlNWYWx1ZVJlZ3ModmFsdWVHUFIpKTsKICAgICBpZiAobWFzcXVlcmFkZXNBc1VuZGVmaW5l
ZFdhdGNocG9pbnRWYWxpZCkgewogICAgICAgICBERkdfVFlQRV9DSEVDSygKLSAgICAgICAgICAg
IEpTVmFsdWVSZWdzKHZhbHVlR1BSKSwgbm9kZVVzZSwgKH5TcGVjQ2VsbCkgfCBTcGVjT2JqZWN0
LCBicmFuY2hOb3RPYmplY3QodmFsdWVHUFIpKTsKKyAgICAgICAgICAgIEpTVmFsdWVSZWdzKHZh
bHVlR1BSKSwgbm9kZVVzZSwgKH5TcGVjQ2VsbCkgfCBTcGVjT2JqZWN0LCBtX2ppdC5icmFuY2hJ
Zk5vdE9iamVjdCh2YWx1ZUdQUikpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIERGR19UWVBFX0NI
RUNLKAotICAgICAgICAgICAgSlNWYWx1ZVJlZ3ModmFsdWVHUFIpLCBub2RlVXNlLCAoflNwZWND
ZWxsKSB8IFNwZWNPYmplY3QsIGJyYW5jaE5vdE9iamVjdCh2YWx1ZUdQUikpOworICAgICAgICAg
ICAgSlNWYWx1ZVJlZ3ModmFsdWVHUFIpLCBub2RlVXNlLCAoflNwZWNDZWxsKSB8IFNwZWNPYmpl
Y3QsIG1faml0LmJyYW5jaElmTm90T2JqZWN0KHZhbHVlR1BSKSk7CiAKICAgICAgICAgTWFjcm9B
c3NlbWJsZXI6Okp1bXAgaXNOb3RNYXNxdWVyYWRlc0FzVW5kZWZpbmVkID0gCiAgICAgICAgICAg
ICBtX2ppdC5icmFuY2hUZXN0OCgKQEAgLTE2NzMsMTMgKzE2NzMsMTMgQEAgdm9pZCBTcGVjdWxh
dGl2ZUpJVDo6ZW1pdE9iamVjdE9yT3RoZXJCcgogICAgICAgICBzdHJ1Y3R1cmVHUFIgPSBzdHJ1
Y3R1cmUuZ3ByKCk7CiAgICAgfQogCi0gICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXAgbm90Q2VsbCA9
IGJyYW5jaE5vdENlbGwoSlNWYWx1ZVJlZ3ModmFsdWVHUFIpKTsKKyAgICBNYWNyb0Fzc2VtYmxl
cjo6SnVtcCBub3RDZWxsID0gbV9qaXQuYnJhbmNoSWZOb3RDZWxsKEpTVmFsdWVSZWdzKHZhbHVl
R1BSKSk7CiAgICAgaWYgKG1hc3F1ZXJhZGVzQXNVbmRlZmluZWRXYXRjaHBvaW50SXNTdGlsbFZh
bGlkKCkpIHsKICAgICAgICAgREZHX1RZUEVfQ0hFQ0soCi0gICAgICAgICAgICBKU1ZhbHVlUmVn
cyh2YWx1ZUdQUiksIG5vZGVVc2UsICh+U3BlY0NlbGwpIHwgU3BlY09iamVjdCwgYnJhbmNoTm90
T2JqZWN0KHZhbHVlR1BSKSk7CisgICAgICAgICAgICBKU1ZhbHVlUmVncyh2YWx1ZUdQUiksIG5v
ZGVVc2UsICh+U3BlY0NlbGwpIHwgU3BlY09iamVjdCwgbV9qaXQuYnJhbmNoSWZOb3RPYmplY3Qo
dmFsdWVHUFIpKTsKICAgICB9IGVsc2UgewogICAgICAgICBERkdfVFlQRV9DSEVDSygKLSAgICAg
ICAgICAgIEpTVmFsdWVSZWdzKHZhbHVlR1BSKSwgbm9kZVVzZSwgKH5TcGVjQ2VsbCkgfCBTcGVj
T2JqZWN0LCBicmFuY2hOb3RPYmplY3QodmFsdWVHUFIpKTsKKyAgICAgICAgICAgIEpTVmFsdWVS
ZWdzKHZhbHVlR1BSKSwgbm9kZVVzZSwgKH5TcGVjQ2VsbCkgfCBTcGVjT2JqZWN0LCBtX2ppdC5i
cmFuY2hJZk5vdE9iamVjdCh2YWx1ZUdQUikpOwogCiAgICAgICAgIEpJVENvbXBpbGVyOjpKdW1w
IGlzTm90TWFzcXVlcmFkZXNBc1VuZGVmaW5lZCA9IG1faml0LmJyYW5jaFRlc3Q4KAogICAgICAg
ICAgICAgSklUQ29tcGlsZXI6Olplcm8sIApAQCAtMzE2Nyw4ICszMTY3LDggQEAgdm9pZCBTcGVj
dWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICAKICAgICAgICAgb3AxLnVz
ZSgpOwogICAgICAgICAKLSAgICAgICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXAgYWxyZWFkeVByaW1p
dGl2ZSA9IGJyYW5jaE5vdENlbGwoSlNWYWx1ZVJlZ3Mob3AxR1BSKSk7Ci0gICAgICAgIE1hY3Jv
QXNzZW1ibGVyOjpKdW1wIG5vdFByaW1pdGl2ZSA9IGJyYW5jaElzT2JqZWN0KG9wMUdQUik7Cisg
ICAgICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIGFscmVhZHlQcmltaXRpdmUgPSBtX2ppdC5icmFu
Y2hJZk5vdENlbGwoSlNWYWx1ZVJlZ3Mob3AxR1BSKSk7CisgICAgICAgIE1hY3JvQXNzZW1ibGVy
OjpKdW1wIG5vdFByaW1pdGl2ZSA9IG1faml0LmJyYW5jaElmT2JqZWN0KG9wMUdQUik7CiAgICAg
ICAgIAogICAgICAgICBhbHJlYWR5UHJpbWl0aXZlLmxpbmsoJm1faml0KTsKICAgICAgICAgbV9q
aXQubW92ZShvcDFHUFIsIHJlc3VsdEdQUik7CkBAIC0zMTkzLDggKzMxOTMsOCBAQCB2b2lkIFNw
ZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgICAgICAKICAgICAgICAg
ICAgIEpJVENvbXBpbGVyOjpKdW1wIGRvbmU7CiAgICAgICAgICAgICBpZiAobm9kZS0+Y2hpbGQx
KCktPnByZWRpY3Rpb24oKSAmIFNwZWNTdHJpbmcpIHsKLSAgICAgICAgICAgICAgICBKSVRDb21w
aWxlcjo6SnVtcCBzbG93UGF0aDEgPSBicmFuY2hOb3RDZWxsKEpTVmFsdWVSZWdzKG9wMUdQUikp
OwotICAgICAgICAgICAgICAgIEpJVENvbXBpbGVyOjpKdW1wIHNsb3dQYXRoMiA9IGJyYW5jaE5v
dFN0cmluZyhvcDFHUFIpOworICAgICAgICAgICAgICAgIEpJVENvbXBpbGVyOjpKdW1wIHNsb3dQ
YXRoMSA9IG1faml0LmJyYW5jaElmTm90Q2VsbChKU1ZhbHVlUmVncyhvcDFHUFIpKTsKKyAgICAg
ICAgICAgICAgICBKSVRDb21waWxlcjo6SnVtcCBzbG93UGF0aDIgPSBtX2ppdC5icmFuY2hJZk5v
dFN0cmluZyhvcDFHUFIpOwogICAgICAgICAgICAgICAgIG1faml0Lm1vdmUob3AxR1BSLCByZXN1
bHRHUFIpOwogICAgICAgICAgICAgICAgIGRvbmUgPSBtX2ppdC5qdW1wKCk7CiAgICAgICAgICAg
ICAgICAgc2xvd1BhdGgxLmxpbmsoJm1faml0KTsKQEAgLTM1NTMsNyArMzU1Myw3IEBAIHZvaWQg
U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgR1BSUmVnIHRlbXBH
UFIgPSB0ZW1wLmdwcigpOwogICAgICAgICAKICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXBM
aXN0IHNsb3dDYXNlczsKLSAgICAgICAgc2xvd0Nhc2VzLmFwcGVuZChicmFuY2hOb3RDZWxsKEpT
VmFsdWVSZWdzKHRoaXNWYWx1ZUdQUikpKTsKKyAgICAgICAgc2xvd0Nhc2VzLmFwcGVuZChtX2pp
dC5icmFuY2hJZk5vdENlbGwoSlNWYWx1ZVJlZ3ModGhpc1ZhbHVlR1BSKSkpOwogICAgICAgICBz
bG93Q2FzZXMuYXBwZW5kKG1faml0LmJyYW5jaDgoCiAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxl
cjo6Tm90RXF1YWwsCiAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyh0aGlzVmFs
dWVHUFIsIEpTQ2VsbDo6dHlwZUluZm9UeXBlT2Zmc2V0KCkpLApAQCAtMzcwMyw3ICszNzAzLDcg
QEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICAKICAg
ICAgICAgICAgIGJhc2UudXNlKCk7CiAgICAgICAgIAotICAgICAgICAgICAgSklUQ29tcGlsZXI6
Okp1bXAgbm90Q2VsbCA9IGJyYW5jaE5vdENlbGwoSlNWYWx1ZVJlZ3MoYmFzZUdQUikpOworICAg
ICAgICAgICAgSklUQ29tcGlsZXI6Okp1bXAgbm90Q2VsbCA9IG1faml0LmJyYW5jaElmTm90Q2Vs
bChKU1ZhbHVlUmVncyhiYXNlR1BSKSk7CiAgICAgICAgIAogICAgICAgICAgICAgY2FjaGVkR2V0
QnlJZChub2RlLT5vcmlnaW4uc2VtYW50aWMsIGJhc2VHUFIsIHJlc3VsdEdQUiwgbm9kZS0+aWRl
bnRpZmllck51bWJlcigpLCBub3RDZWxsKTsKICAgICAgICAgCkBAIC0zNzUzLDcgKzM3NTMsNyBA
QCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgICAgICBi
YXNlLnVzZSgpOwogICAgICAgICAgICAgZmx1c2hSZWdpc3RlcnMoKTsKICAgICAgICAgCi0gICAg
ICAgICAgICBKSVRDb21waWxlcjo6SnVtcCBub3RDZWxsID0gYnJhbmNoTm90Q2VsbChKU1ZhbHVl
UmVncyhiYXNlR1BSKSk7CisgICAgICAgICAgICBKSVRDb21waWxlcjo6SnVtcCBub3RDZWxsID0g
bV9qaXQuYnJhbmNoSWZOb3RDZWxsKEpTVmFsdWVSZWdzKGJhc2VHUFIpKTsKICAgICAgICAgCiAg
ICAgICAgICAgICBjYWNoZWRHZXRCeUlkKG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgYmFzZUdQUiwg
cmVzdWx0R1BSLCBub2RlLT5pZGVudGlmaWVyTnVtYmVyKCksIG5vdENlbGwsIERvbnRTcGlsbCk7
CiAgICAgICAgIApAQCAtNDA0OSw3ICs0MDQ5LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29t
cGlsZShOb2RlKiBub2RlKQogICAgICAgICBHUFJUZW1wb3JhcnkgcmVtb3RlR2xvYmFsT2JqZWN0
KHRoaXMpOwogICAgICAgICBHUFJUZW1wb3Jhcnkgc2NyYXRjaCh0aGlzKTsKIAotICAgICAgICBK
SVRDb21waWxlcjo6SnVtcCBpc0NlbGwgPSBicmFuY2hJc0NlbGwodmFsdWUuanNWYWx1ZVJlZ3Mo
KSk7CisgICAgICAgIEpJVENvbXBpbGVyOjpKdW1wIGlzQ2VsbCA9IG1faml0LmJyYW5jaElmQ2Vs
bCh2YWx1ZS5qc1ZhbHVlUmVncygpKTsKIAogICAgICAgICBtX2ppdC5jb21wYXJlNjQoSklUQ29t
cGlsZXI6OkVxdWFsLCB2YWx1ZS5ncHIoKSwgVHJ1c3RlZEltbTMyKFZhbHVlVW5kZWZpbmVkKSwg
cmVzdWx0LmdwcigpKTsKICAgICAgICAgSklUQ29tcGlsZXI6Okp1bXAgZG9uZSA9IG1faml0Lmp1
bXAoKTsKQEAgLTQxMDksNyArNDEwOSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUo
Tm9kZSogbm9kZSkKICAgICAgICAgSlNWYWx1ZU9wZXJhbmQgdmFsdWUodGhpcywgbm9kZS0+Y2hp
bGQxKCkpOwogICAgICAgICBHUFJUZW1wb3JhcnkgcmVzdWx0KHRoaXMsIFJldXNlLCB2YWx1ZSk7
CiAgICAgICAgIAotICAgICAgICBKSVRDb21waWxlcjo6SnVtcCBpc05vdENlbGwgPSBicmFuY2hO
b3RDZWxsKHZhbHVlLmpzVmFsdWVSZWdzKCkpOworICAgICAgICBKSVRDb21waWxlcjo6SnVtcCBp
c05vdENlbGwgPSBtX2ppdC5icmFuY2hJZk5vdENlbGwodmFsdWUuanNWYWx1ZVJlZ3MoKSk7CiAg
ICAgICAgIAogICAgICAgICBtX2ppdC5jb21wYXJlOChKSVRDb21waWxlcjo6RXF1YWwsIAogICAg
ICAgICAgICAgSklUQ29tcGlsZXI6OkFkZHJlc3ModmFsdWUuZ3ByKCksIEpTQ2VsbDo6dHlwZUlu
Zm9UeXBlT2Zmc2V0KCkpLCAKQEAgLTQxMzAsNyArNDEzMCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVK
SVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgSlNWYWx1ZU9wZXJhbmQgdmFsdWUodGhp
cywgbm9kZS0+Y2hpbGQxKCkpOwogICAgICAgICBHUFJUZW1wb3JhcnkgcmVzdWx0KHRoaXMsIFJl
dXNlLCB2YWx1ZSk7CiAKLSAgICAgICAgSklUQ29tcGlsZXI6Okp1bXAgaXNOb3RDZWxsID0gYnJh
bmNoTm90Q2VsbCh2YWx1ZS5qc1ZhbHVlUmVncygpKTsKKyAgICAgICAgSklUQ29tcGlsZXI6Okp1
bXAgaXNOb3RDZWxsID0gbV9qaXQuYnJhbmNoSWZOb3RDZWxsKHZhbHVlLmpzVmFsdWVSZWdzKCkp
OwogCiAgICAgICAgIG1faml0LmNvbXBhcmU4KEpJVENvbXBpbGVyOjpBYm92ZU9yRXF1YWwsCiAg
ICAgICAgICAgICBKSVRDb21waWxlcjo6QWRkcmVzcyh2YWx1ZS5ncHIoKSwgSlNDZWxsOjp0eXBl
SW5mb1R5cGVPZmZzZXQoKSksCkBAIC00MTgyLDEyICs0MTgyLDEyIEBAIHZvaWQgU3BlY3VsYXRp
dmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgCiAgICAgICAgIEFTU0VSVChub2Rl
LT5jaGlsZDEoKS51c2VLaW5kKCkgPT0gVW50eXBlZFVzZSB8fCBub2RlLT5jaGlsZDEoKS51c2VL
aW5kKCkgPT0gQ2VsbFVzZSB8fCBub2RlLT5jaGlsZDEoKS51c2VLaW5kKCkgPT0gU3RyaW5nVXNl
KTsKIAotICAgICAgICBKSVRDb21waWxlcjo6SnVtcCBpc05vdENlbGwgPSBicmFuY2hOb3RDZWxs
KEpTVmFsdWVSZWdzKHZhbHVlR1BSKSk7CisgICAgICAgIEpJVENvbXBpbGVyOjpKdW1wIGlzTm90
Q2VsbCA9IG1faml0LmJyYW5jaElmTm90Q2VsbChKU1ZhbHVlUmVncyh2YWx1ZUdQUikpOwogICAg
ICAgICBpZiAobm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpICE9IFVudHlwZWRVc2UpCiAgICAgICAg
ICAgICBERkdfVFlQRV9DSEVDSyhKU1ZhbHVlU291cmNlKHZhbHVlR1BSKSwgbm9kZS0+Y2hpbGQx
KCksIFNwZWNDZWxsLCBpc05vdENlbGwpOwogCiAgICAgICAgIGlmICghbm9kZS0+Y2hpbGQxKCkt
PnNob3VsZFNwZWN1bGF0ZU9iamVjdCgpIHx8IG5vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSA9PSBT
dHJpbmdVc2UpIHsKLSAgICAgICAgICAgIEpJVENvbXBpbGVyOjpKdW1wIG5vdFN0cmluZyA9IGJy
YW5jaE5vdFN0cmluZyh2YWx1ZUdQUik7CisgICAgICAgICAgICBKSVRDb21waWxlcjo6SnVtcCBu
b3RTdHJpbmcgPSBtX2ppdC5icmFuY2hJZk5vdFN0cmluZyh2YWx1ZUdQUik7CiAgICAgICAgICAg
ICBpZiAobm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpID09IFN0cmluZ1VzZSkKICAgICAgICAgICAg
ICAgICBERkdfVFlQRV9DSEVDSyhKU1ZhbHVlU291cmNlKHZhbHVlR1BSKSwgbm9kZS0+Y2hpbGQx
KCksIFNwZWNTdHJpbmcsIG5vdFN0cmluZyk7CiAgICAgICAgICAgICBtX2ppdC5tb3ZlKFRydXN0
ZWRJbW1QdHIobV9qaXQudm0oKS0+c21hbGxTdHJpbmdzLnN0cmluZ1N0cmluZygpKSwgcmVzdWx0
R1BSKTsKQEAgLTQ2MjgsOCArNDYyOCw4IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUo
Tm9kZSogbm9kZSkKICAgICAgICAgZWxzZSBpZiAoY2FjaGVkVHlwZUxvY2F0aW9uLT5tX2xhc3RT
ZWVuVHlwZSA9PSBUeXBlTnVtYmVyKQogICAgICAgICAgICAganVtcFRvRW5kLmFwcGVuZChtX2pp
dC5icmFuY2hUZXN0NjQoTWFjcm9Bc3NlbWJsZXI6Ok5vblplcm8sIHZhbHVlR1BSLCBHUFJJbmZv
Ojp0YWdUeXBlTnVtYmVyUmVnaXN0ZXIpKTsKICAgICAgICAgZWxzZSBpZiAoY2FjaGVkVHlwZUxv
Y2F0aW9uLT5tX2xhc3RTZWVuVHlwZSA9PSBUeXBlU3RyaW5nKSB7Ci0gICAgICAgICAgICBNYWNy
b0Fzc2VtYmxlcjo6SnVtcCBpc05vdENlbGwgPSBicmFuY2hOb3RDZWxsKEpTVmFsdWVSZWdzKHZh
bHVlR1BSKSk7Ci0gICAgICAgICAgICBqdW1wVG9FbmQuYXBwZW5kKGJyYW5jaElzU3RyaW5nKHZh
bHVlR1BSKSk7CisgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBpc05vdENlbGwgPSBt
X2ppdC5icmFuY2hJZk5vdENlbGwoSlNWYWx1ZVJlZ3ModmFsdWVHUFIpKTsKKyAgICAgICAgICAg
IGp1bXBUb0VuZC5hcHBlbmQobV9qaXQuYnJhbmNoSWZTdHJpbmcodmFsdWVHUFIpKTsKICAgICAg
ICAgICAgIGlzTm90Q2VsbC5saW5rKCZtX2ppdCk7CiAgICAgICAgIH0KIApAQCAtNDY0NCw3ICs0
NjQ0LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAg
ICBtX2ppdC5zdG9yZTY0KHZhbHVlR1BSLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhzY3JhdGNo
MUdQUiwgVHlwZVByb2ZpbGVyTG9nOjpMb2dFbnRyeTo6dmFsdWVPZmZzZXQoKSkpOwogCiAgICAg
ICAgIC8vIFN0b3JlIHRoZSBzdHJ1Y3R1cmVJRCBvZiB0aGUgY2VsbCBpZiB2YWx1ZUdQUiBpcyBh
IGNlbGwsIG90aGVyd2lzZSwgc3RvcmUgMCBvbiB0aGUgbG9nIGVudHJ5LgotICAgICAgICBNYWNy
b0Fzc2VtYmxlcjo6SnVtcCBpc05vdENlbGwgPSBicmFuY2hOb3RDZWxsKEpTVmFsdWVSZWdzKHZh
bHVlR1BSKSk7CisgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIGlzTm90Q2VsbCA9IG1faml0
LmJyYW5jaElmTm90Q2VsbChKU1ZhbHVlUmVncyh2YWx1ZUdQUikpOwogICAgICAgICBtX2ppdC5s
b2FkMzIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3ModmFsdWVHUFIsIEpTQ2VsbDo6c3RydWN0dXJl
SURPZmZzZXQoKSksIHNjcmF0Y2gzR1BSKTsKICAgICAgICAgbV9qaXQuc3RvcmUzMihzY3JhdGNo
M0dQUiwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Moc2NyYXRjaDFHUFIsIFR5cGVQcm9maWxlckxv
Zzo6TG9nRW50cnk6OnN0cnVjdHVyZUlET2Zmc2V0KCkpKTsKICAgICAgICAgTWFjcm9Bc3NlbWJs
ZXI6Okp1bXAgc2tpcElzQ2VsbCA9IG1faml0Lmp1bXAoKTsKQEAgLTQ3NzksNyArNDc3OSw3IEBA
IHZvaWQgU3BlY3VsYXRpdmVKSVQ6OndyaXRlQmFycmllcihHUFJSZWcKIHsKICAgICBKSVRDb21w
aWxlcjo6SnVtcCBpc05vdENlbGw7CiAgICAgaWYgKCFpc0tub3duQ2VsbCh2YWx1ZVVzZS5ub2Rl
KCkpKQotICAgICAgICBpc05vdENlbGwgPSBicmFuY2hOb3RDZWxsKEpTVmFsdWVSZWdzKHZhbHVl
R1BSKSk7CisgICAgICAgIGlzTm90Q2VsbCA9IG1faml0LmJyYW5jaElmTm90Q2VsbChKU1ZhbHVl
UmVncyh2YWx1ZUdQUikpOwogICAgIAogICAgIEpJVENvbXBpbGVyOjpKdW1wIG93bmVySXNSZW1l
bWJlcmVkT3JJbkVkZW4gPSBtX2ppdC5qdW1wSWZJc1JlbWVtYmVyZWRPckluRWRlbihvd25lckdQ
Uik7CiAgICAgc3RvcmVUb1dyaXRlQmFycmllckJ1ZmZlcihvd25lckdQUiwgc2NyYXRjaDEsIHNj
cmF0Y2gyKTsKQEAgLTQ3OTMsNyArNDc5Myw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OndyaXRl
QmFycmllcihKU0NlbGwKIHsKICAgICBKSVRDb21waWxlcjo6SnVtcCBpc05vdENlbGw7CiAgICAg
aWYgKCFpc0tub3duQ2VsbCh2YWx1ZVVzZS5ub2RlKCkpKQotICAgICAgICBpc05vdENlbGwgPSBi
cmFuY2hOb3RDZWxsKEpTVmFsdWVSZWdzKHZhbHVlR1BSKSk7CisgICAgICAgIGlzTm90Q2VsbCA9
IG1faml0LmJyYW5jaElmTm90Q2VsbChKU1ZhbHVlUmVncyh2YWx1ZUdQUikpOwogICAgIAogICAg
IEpJVENvbXBpbGVyOjpKdW1wIG93bmVySXNSZW1lbWJlcmVkT3JJbkVkZW4gPSBtX2ppdC5qdW1w
SWZJc1JlbWVtYmVyZWRPckluRWRlbihvd25lcik7CiAgICAgc3RvcmVUb1dyaXRlQmFycmllckJ1
ZmZlcihvd25lciwgc2NyYXRjaDEsIHNjcmF0Y2gyKTsKQEAgLTQ4MDQsMzQgKzQ4MDQsNiBAQCB2
b2lkIFNwZWN1bGF0aXZlSklUOjp3cml0ZUJhcnJpZXIoSlNDZWxsCiB9CiAjZW5kaWYgLy8gRU5B
QkxFKEdHQykKIAotSklUQ29tcGlsZXI6Okp1bXAgU3BlY3VsYXRpdmVKSVQ6OmJyYW5jaElzQ2Vs
bChKU1ZhbHVlUmVncyByZWdzKQotewotICAgIHJldHVybiBtX2ppdC5icmFuY2hUZXN0NjQoTWFj
cm9Bc3NlbWJsZXI6Olplcm8sIHJlZ3MuZ3ByKCksIEdQUkluZm86OnRhZ01hc2tSZWdpc3Rlcik7
Ci19Ci0KLUpJVENvbXBpbGVyOjpKdW1wIFNwZWN1bGF0aXZlSklUOjpicmFuY2hOb3RDZWxsKEpT
VmFsdWVSZWdzIHJlZ3MpCi17Ci0gICAgcmV0dXJuIG1faml0LmJyYW5jaFRlc3Q2NChNYWNyb0Fz
c2VtYmxlcjo6Tm9uWmVybywgcmVncy5ncHIoKSwgR1BSSW5mbzo6dGFnTWFza1JlZ2lzdGVyKTsK
LX0KLQotSklUQ29tcGlsZXI6Okp1bXAgU3BlY3VsYXRpdmVKSVQ6OmJyYW5jaElzT3RoZXIoSlNW
YWx1ZVJlZ3MgcmVncywgR1BSUmVnIHRlbXBHUFIpCi17Ci0gICAgbV9qaXQubW92ZShyZWdzLmdw
cigpLCB0ZW1wR1BSKTsKLSAgICBtX2ppdC5hbmQ2NChNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZElt
bTMyKH5UYWdCaXRVbmRlZmluZWQpLCB0ZW1wR1BSKTsKLSAgICByZXR1cm4gbV9qaXQuYnJhbmNo
NjQoCi0gICAgICAgIE1hY3JvQXNzZW1ibGVyOjpFcXVhbCwgdGVtcEdQUiwKLSAgICAgICAgTWFj
cm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW02NChWYWx1ZU51bGwpKTsKLX0KLQotSklUQ29tcGlsZXI6
Okp1bXAgU3BlY3VsYXRpdmVKSVQ6OmJyYW5jaE5vdE90aGVyKEpTVmFsdWVSZWdzIHJlZ3MsIEdQ
UlJlZyB0ZW1wR1BSKQotewotICAgIG1faml0Lm1vdmUocmVncy5ncHIoKSwgdGVtcEdQUik7Ci0g
ICAgbV9qaXQuYW5kNjQoTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW0zMih+VGFnQml0VW5kZWZp
bmVkKSwgdGVtcEdQUik7Ci0gICAgcmV0dXJuIG1faml0LmJyYW5jaDY0KAotICAgICAgICBNYWNy
b0Fzc2VtYmxlcjo6Tm90RXF1YWwsIHRlbXBHUFIsCi0gICAgICAgIE1hY3JvQXNzZW1ibGVyOjpU
cnVzdGVkSW1tNjQoVmFsdWVOdWxsKSk7Ci19Ci0KIHZvaWQgU3BlY3VsYXRpdmVKSVQ6Om1vdmVU
cnVlVG8oR1BSUmVnIGdwcikKIHsKICAgICBtX2ppdC5tb3ZlKFRydXN0ZWRJbW0zMihWYWx1ZVRy
dWUpLCBncHIpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2
ZUpJVC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVj
dWxhdGl2ZUpJVC5jcHAJKHJldmlzaW9uIDE4MzY1MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTgyLDE3ICsx
MTgyLDE3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVQZWVwSG9sZU9iamUKICAgICBp
ZiAobWFzcXVlcmFkZXNBc1VuZGVmaW5lZFdhdGNocG9pbnRJc1N0aWxsVmFsaWQoKSkgewogICAg
ICAgICBpZiAobV9zdGF0ZS5mb3JOb2RlKG5vZGUtPmNoaWxkMSgpKS5tX3R5cGUgJiB+U3BlY09i
amVjdCkgewogICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjaygKLSAgICAgICAgICAgICAgICBC
YWRUeXBlLCBKU1ZhbHVlU291cmNlOjp1bmJveGVkQ2VsbChvcDFHUFIpLCBub2RlLT5jaGlsZDEo
KSwgYnJhbmNoTm90T2JqZWN0KG9wMUdQUikpOworICAgICAgICAgICAgICAgIEJhZFR5cGUsIEpT
VmFsdWVTb3VyY2U6OnVuYm94ZWRDZWxsKG9wMUdQUiksIG5vZGUtPmNoaWxkMSgpLCBtX2ppdC5i
cmFuY2hJZk5vdE9iamVjdChvcDFHUFIpKTsKICAgICAgICAgfQogICAgICAgICBpZiAobV9zdGF0
ZS5mb3JOb2RlKG5vZGUtPmNoaWxkMigpKS5tX3R5cGUgJiB+U3BlY09iamVjdCkgewogICAgICAg
ICAgICAgc3BlY3VsYXRpb25DaGVjaygKLSAgICAgICAgICAgICAgICBCYWRUeXBlLCBKU1ZhbHVl
U291cmNlOjp1bmJveGVkQ2VsbChvcDJHUFIpLCBub2RlLT5jaGlsZDIoKSwgYnJhbmNoTm90T2Jq
ZWN0KG9wMkdQUikpOworICAgICAgICAgICAgICAgIEJhZFR5cGUsIEpTVmFsdWVTb3VyY2U6OnVu
Ym94ZWRDZWxsKG9wMkdQUiksIG5vZGUtPmNoaWxkMigpLCBtX2ppdC5icmFuY2hJZk5vdE9iamVj
dChvcDJHUFIpKTsKICAgICAgICAgfQogICAgIH0gZWxzZSB7CiAgICAgICAgIGlmIChtX3N0YXRl
LmZvck5vZGUobm9kZS0+Y2hpbGQxKCkpLm1fdHlwZSAmIH5TcGVjT2JqZWN0KSB7CiAgICAgICAg
ICAgICBzcGVjdWxhdGlvbkNoZWNrKAogICAgICAgICAgICAgICAgIEJhZFR5cGUsIEpTVmFsdWVT
b3VyY2U6OnVuYm94ZWRDZWxsKG9wMUdQUiksIG5vZGUtPmNoaWxkMSgpLAotICAgICAgICAgICAg
ICAgIGJyYW5jaE5vdE9iamVjdChvcDFHUFIpKTsKKyAgICAgICAgICAgICAgICBtX2ppdC5icmFu
Y2hJZk5vdE9iamVjdChvcDFHUFIpKTsKICAgICAgICAgfQogICAgICAgICBzcGVjdWxhdGlvbkNo
ZWNrKEJhZFR5cGUsIEpTVmFsdWVTb3VyY2U6OnVuYm94ZWRDZWxsKG9wMUdQUiksIG5vZGUtPmNo
aWxkMSgpLAogICAgICAgICAgICAgbV9qaXQuYnJhbmNoVGVzdDgoCkBAIC0xMjAzLDcgKzEyMDMs
NyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlUGVlcEhvbGVPYmplCiAgICAgICAgIGlm
IChtX3N0YXRlLmZvck5vZGUobm9kZS0+Y2hpbGQyKCkpLm1fdHlwZSAmIH5TcGVjT2JqZWN0KSB7
CiAgICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKAogICAgICAgICAgICAgICAgIEJhZFR5cGUs
IEpTVmFsdWVTb3VyY2U6OnVuYm94ZWRDZWxsKG9wMkdQUiksIG5vZGUtPmNoaWxkMigpLAotICAg
ICAgICAgICAgICAgIGJyYW5jaE5vdE9iamVjdChvcDJHUFIpKTsKKyAgICAgICAgICAgICAgICBt
X2ppdC5icmFuY2hJZk5vdE9iamVjdChvcDJHUFIpKTsKICAgICAgICAgfQogICAgICAgICBzcGVj
dWxhdGlvbkNoZWNrKEJhZFR5cGUsIEpTVmFsdWVTb3VyY2U6OnVuYm94ZWRDZWxsKG9wMkdQUiks
IG5vZGUtPmNoaWxkMigpLAogICAgICAgICAgICAgbV9qaXQuYnJhbmNoVGVzdDgoCkBAIC0xODk3
LDcgKzE4OTcsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlVmFsdWVUb0ludDMyCiAg
ICAgICAgICAgICAgICAgSklUQ29tcGlsZXI6Okp1bXAgaXNOdW1iZXIgPSBtX2ppdC5icmFuY2hU
ZXN0NjQoTWFjcm9Bc3NlbWJsZXI6Ok5vblplcm8sIGdwciwgR1BSSW5mbzo6dGFnVHlwZU51bWJl
clJlZ2lzdGVyKTsKICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICBERkdfVFlQRV9D
SEVDSygKLSAgICAgICAgICAgICAgICAgICAgSlNWYWx1ZVJlZ3MoZ3ByKSwgbm9kZS0+Y2hpbGQx
KCksIH5TcGVjQ2VsbCwgYnJhbmNoSXNDZWxsKEpTVmFsdWVSZWdzKGdwcikpKTsKKyAgICAgICAg
ICAgICAgICAgICAgSlNWYWx1ZVJlZ3MoZ3ByKSwgbm9kZS0+Y2hpbGQxKCksIH5TcGVjQ2VsbCwg
bV9qaXQuYnJhbmNoSWZDZWxsKEpTVmFsdWVSZWdzKGdwcikpKTsKICAgICAgICAgICAgICAgICAK
ICAgICAgICAgICAgICAgICAvLyBJdCdzIG5vdCBhIGNlbGw6IHNvIHRydWUgdHVybnMgaW50byAx
IGFuZCBhbGwgZWxzZSB0dXJucyBpbnRvIDAuCiAgICAgICAgICAgICAgICAgbV9qaXQuY29tcGFy
ZTY0KEpJVENvbXBpbGVyOjpFcXVhbCwgZ3ByLCBUcnVzdGVkSW1tMzIoVmFsdWVUcnVlKSwgcmVz
dWx0R3ByKTsKQEAgLTE5NTMsNyArMTk1Myw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBp
bGVWYWx1ZVRvSW50MzIKICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAg
IERGR19UWVBFX0NIRUNLKAogICAgICAgICAgICAgICAgICAgICAgICAgb3AxLmpzVmFsdWVSZWdz
KCksIG5vZGUtPmNoaWxkMSgpLCB+U3BlY0NlbGwsCi0gICAgICAgICAgICAgICAgICAgICAgICBi
cmFuY2hJc0NlbGwob3AxLmpzVmFsdWVSZWdzKCkpKTsKKyAgICAgICAgICAgICAgICAgICAgICAg
IG1faml0LmJyYW5jaElmQ2VsbChvcDEuanNWYWx1ZVJlZ3MoKSkpOwogICAgICAgICAgICAgICAg
ICAgICAKICAgICAgICAgICAgICAgICAgICAgLy8gSXQncyBub3QgYSBjZWxsOiBzbyB0cnVlIHR1
cm5zIGludG8gMSBhbmQgYWxsIGVsc2UgdHVybnMgaW50byAwLgogICAgICAgICAgICAgICAgICAg
ICBKSVRDb21waWxlcjo6SnVtcCBpc0Jvb2xlYW4gPSBtX2ppdC5icmFuY2gzMihKSVRDb21waWxl
cjo6RXF1YWwsIHRhZ0dQUiwgVHJ1c3RlZEltbTMyKEpTVmFsdWU6OkJvb2xlYW5UYWcpKTsKQEAg
LTI1NDMsNyArMjU0Myw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVQdXRCeVZhbEZv
ckYKIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVJbnN0YW5jZU9mRm9yT2JqZWN0KE5vZGUq
LCBHUFJSZWcgdmFsdWVSZWcsIEdQUlJlZyBwcm90b3R5cGVSZWcsIEdQUlJlZyBzY3JhdGNoUmVn
LCBHUFJSZWcgc2NyYXRjaDJSZWcpCiB7CiAgICAgLy8gQ2hlY2sgdGhhdCBwcm90b3R5cGUgaXMg
YW4gb2JqZWN0LgotICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFkVHlwZSwgSlNWYWx1ZVJlZ3MoKSwg
MCwgbV9qaXQuYnJhbmNoSWZDZWxsTm90T2JqZWN0KHByb3RvdHlwZVJlZykpOworICAgIHNwZWN1
bGF0aW9uQ2hlY2soQmFkVHlwZSwgSlNWYWx1ZVJlZ3MoKSwgMCwgbV9qaXQuYnJhbmNoSWZOb3RP
YmplY3QocHJvdG90eXBlUmVnKSk7CiAgICAgCiAgICAgLy8gSW5pdGlhbGl6ZSBzY3JhdGNoUmVn
IHdpdGggdGhlIHZhbHVlIGJlaW5nIGNoZWNrZWQuCiAgICAgbV9qaXQubW92ZSh2YWx1ZVJlZywg
c2NyYXRjaFJlZyk7CkBAIC0yNTU0LDcgKzI1NTQsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpj
b21waWxlSW5zdGFuY2VPZkZvCiAgICAgbV9qaXQubG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRk
cmVzcyhzY3JhdGNoUmVnLCBTdHJ1Y3R1cmU6OnByb3RvdHlwZU9mZnNldCgpICsgQ2VsbFBheWxv
YWRPZmZzZXQpLCBzY3JhdGNoUmVnKTsKICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBpc0luc3Rh
bmNlID0gbV9qaXQuYnJhbmNoUHRyKE1hY3JvQXNzZW1ibGVyOjpFcXVhbCwgc2NyYXRjaFJlZywg
cHJvdG90eXBlUmVnKTsKICNpZiBVU0UoSlNWQUxVRTY0KQotICAgIGJyYW5jaElzQ2VsbChKU1Zh
bHVlUmVncyhzY3JhdGNoUmVnKSkubGlua1RvKGxvb3AsICZtX2ppdCk7CisgICAgbV9qaXQuYnJh
bmNoSWZDZWxsKEpTVmFsdWVSZWdzKHNjcmF0Y2hSZWcpKS5saW5rVG8obG9vcCwgJm1faml0KTsK
ICNlbHNlCiAgICAgbV9qaXQuYnJhbmNoVGVzdFB0cihNYWNyb0Fzc2VtYmxlcjo6Tm9uWmVybywg
c2NyYXRjaFJlZykubGlua1RvKGxvb3AsICZtX2ppdCk7CiAjZW5kaWYKQEAgLTI1OTMsNyArMjU5
Myw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVJbnN0YW5jZU9mKE4KICAgICAgICAg
R1BSUmVnIHNjcmF0Y2hSZWcgPSBzY3JhdGNoLmdwcigpOwogICAgICAgICBHUFJSZWcgc2NyYXRj
aDJSZWcgPSBzY3JhdGNoMi5ncHIoKTsKICAgICAgICAgCi0gICAgICAgIE1hY3JvQXNzZW1ibGVy
OjpKdW1wIGlzQ2VsbCA9IGJyYW5jaElzQ2VsbCh2YWx1ZS5qc1ZhbHVlUmVncygpKTsKKyAgICAg
ICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXAgaXNDZWxsID0gbV9qaXQuYnJhbmNoSWZDZWxsKHZhbHVl
LmpzVmFsdWVSZWdzKCkpOwogICAgICAgICBHUFJSZWcgdmFsdWVSZWcgPSB2YWx1ZS5qc1ZhbHVl
UmVncygpLnBheWxvYWRHUFIoKTsKICAgICAgICAgbW92ZUZhbHNlVG8oc2NyYXRjaFJlZyk7CiAK
QEAgLTM5NTgsMTQgKzM5NTgsMTQgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVN0cmlu
Z1RvVW50eQogICAgIEpJVENvbXBpbGVyOjpKdW1wTGlzdCBmYXN0VHJ1ZTsKICAgICBKSVRDb21w
aWxlcjo6SnVtcExpc3QgZmFzdEZhbHNlOwogICAgIAotICAgIGZhc3RGYWxzZS5hcHBlbmQoYnJh
bmNoTm90Q2VsbChyaWdodFJlZ3MpKTsKKyAgICBmYXN0RmFsc2UuYXBwZW5kKG1faml0LmJyYW5j
aElmTm90Q2VsbChyaWdodFJlZ3MpKTsKICAgICAKICAgICAvLyBJdCdzIHNhZmUgdG8gYnJhbmNo
IGFyb3VuZCB0aGUgdHlwZSBjaGVjayBiZWxvdywgc2luY2UgcHJvdmluZyB0aGF0IHRoZSB2YWx1
ZXMgYXJlCiAgICAgLy8gZXF1YWwgZG9lcyBpbmRlZWQgcHJvdmUgdGhhdCB0aGUgcmlnaHQgdmFs
dWUgaXMgYSBzdHJpbmcuCiAgICAgZmFzdFRydWUuYXBwZW5kKG1faml0LmJyYW5jaFB0cigKICAg
ICAgICAgTWFjcm9Bc3NlbWJsZXI6OkVxdWFsLCBsZWZ0R1BSLCByaWdodFJlZ3MucGF5bG9hZEdQ
UigpKSk7CiAgICAgCi0gICAgZmFzdEZhbHNlLmFwcGVuZChicmFuY2hOb3RTdHJpbmcocmlnaHRS
ZWdzLnBheWxvYWRHUFIoKSkpOworICAgIGZhc3RGYWxzZS5hcHBlbmQobV9qaXQuYnJhbmNoSWZO
b3RTdHJpbmcocmlnaHRSZWdzLnBheWxvYWRHUFIoKSkpOwogICAgIAogICAgIGNvbXBpbGVTdHJp
bmdFcXVhbGl0eSgKICAgICAgICAgbm9kZSwgbGVmdEdQUiwgcmlnaHRSZWdzLnBheWxvYWRHUFIo
KSwgbGVuZ3RoR1BSLCBsZWZ0VGVtcEdQUiwgcmlnaHRUZW1wR1BSLCBsZWZ0VGVtcDJHUFIsCkBA
IC00MDEyLDggKzQwMTIsOCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlU3RyaW5nSWRl
bnRUCiAKICAgICBtb3ZlRmFsc2VUbyhyaWdodFRlbXBHUFIpOwogICAgIEpJVENvbXBpbGVyOjpK
dW1wTGlzdCBub3RTdHJpbmc7Ci0gICAgbm90U3RyaW5nLmFwcGVuZChicmFuY2hOb3RDZWxsKHJp
Z2h0UmVncykpOwotICAgIG5vdFN0cmluZy5hcHBlbmQoYnJhbmNoTm90U3RyaW5nKHJpZ2h0UmVn
cy5wYXlsb2FkR1BSKCkpKTsKKyAgICBub3RTdHJpbmcuYXBwZW5kKG1faml0LmJyYW5jaElmTm90
Q2VsbChyaWdodFJlZ3MpKTsKKyAgICBub3RTdHJpbmcuYXBwZW5kKG1faml0LmJyYW5jaElmTm90
U3RyaW5nKHJpZ2h0UmVncy5wYXlsb2FkR1BSKCkpKTsKICAgICAKICAgICBzcGVjdWxhdGVTdHJp
bmdJZGVudEFuZExvYWRTdG9yYWdlKG5vdFN0cmluZ1ZhckVkZ2UsIHJpZ2h0UmVncy5wYXlsb2Fk
R1BSKCksIHJpZ2h0VGVtcEdQUik7CiAgICAgCkBAIC00MjM0LDcgKzQyMzQsNyBAQCB2b2lkIFNw
ZWN1bGF0aXZlSklUOjpjb21waWxlR2V0QnlWYWxPblNjCiAgICAgICAgICAgICBiYXNlUmVnLCBz
Y3JhdGNoMlJlZywgTWFjcm9Bc3NlbWJsZXI6OlRpbWVzRWlnaHQsCiAgICAgICAgICAgICBTY29w
ZWRBcmd1bWVudHM6Om92ZXJmbG93U3RvcmFnZU9mZnNldCgpKSwKICAgICAgICAgcmVzdWx0UmVn
cyk7Ci0gICAgc3BlY3VsYXRpb25DaGVjayhFeG90aWNPYmplY3RNb2RlLCBKU1ZhbHVlU291cmNl
KCksIG51bGxwdHIsIG1faml0LmJyYW5jaElzRW1wdHkocmVzdWx0UmVncykpOworICAgIHNwZWN1
bGF0aW9uQ2hlY2soRXhvdGljT2JqZWN0TW9kZSwgSlNWYWx1ZVNvdXJjZSgpLCBudWxscHRyLCBt
X2ppdC5icmFuY2hJZkVtcHR5KHJlc3VsdFJlZ3MpKTsKICAgICAKICAgICBkb25lLmxpbmsoJm1f
aml0KTsKICAgICAKQEAgLTQ5NjUsNyArNDk2NSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNv
bXBpbGVUb1N0cmluZ09yQ2EKICAgICAgICAgZmx1c2hSZWdpc3RlcnMoKTsKICAgICAgICAgSklU
Q29tcGlsZXI6Okp1bXAgZG9uZTsKICAgICAgICAgaWYgKG5vZGUtPmNoaWxkMSgpLT5wcmVkaWN0
aW9uKCkgJiBTcGVjU3RyaW5nKSB7Ci0gICAgICAgICAgICBKSVRDb21waWxlcjo6SnVtcCBuZWVk
Q2FsbCA9IGJyYW5jaE5vdFN0cmluZyhvcDFHUFIpOworICAgICAgICAgICAgSklUQ29tcGlsZXI6
Okp1bXAgbmVlZENhbGwgPSBtX2ppdC5icmFuY2hJZk5vdFN0cmluZyhvcDFHUFIpOwogICAgICAg
ICAgICAgbV9qaXQubW92ZShvcDFHUFIsIHJlc3VsdEdQUik7CiAgICAgICAgICAgICBkb25lID0g
bV9qaXQuanVtcCgpOwogICAgICAgICAgICAgbmVlZENhbGwubGluaygmbV9qaXQpOwpAQCAtNTE5
NCw3ICs1MTk0LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6c3BlY3VsYXRlT2JqZWN0KEVkZwog
ICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIG9wZXJhbmQodGhpcywgZWRnZSk7CiAgICAgR1BSUmVn
IGdwciA9IG9wZXJhbmQuZ3ByKCk7CiAgICAgREZHX1RZUEVfQ0hFQ0soCi0gICAgICAgIEpTVmFs
dWVTb3VyY2U6OnVuYm94ZWRDZWxsKGdwciksIGVkZ2UsIFNwZWNPYmplY3QsIGJyYW5jaE5vdE9i
amVjdChncHIpKTsKKyAgICAgICAgSlNWYWx1ZVNvdXJjZTo6dW5ib3hlZENlbGwoZ3ByKSwgZWRn
ZSwgU3BlY09iamVjdCwgbV9qaXQuYnJhbmNoSWZOb3RPYmplY3QoZ3ByKSk7CiB9CiAKIHZvaWQg
U3BlY3VsYXRpdmVKSVQ6OnNwZWN1bGF0ZUZ1bmN0aW9uKEVkZ2UgZWRnZSkKQEAgLTUyMjMsMTYg
KzUyMjMsMTYgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6c3BlY3VsYXRlT2JqZWN0T3JPdAogICAg
IEpTVmFsdWVPcGVyYW5kIG9wZXJhbmQodGhpcywgZWRnZSwgTWFudWFsT3BlcmFuZFNwZWN1bGF0
aW9uKTsKICAgICBHUFJUZW1wb3JhcnkgdGVtcCh0aGlzKTsKICAgICBHUFJSZWcgdGVtcEdQUiA9
IHRlbXAuZ3ByKCk7Ci0gICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXAgbm90Q2VsbCA9IGJyYW5jaE5v
dENlbGwob3BlcmFuZC5qc1ZhbHVlUmVncygpKTsKKyAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBu
b3RDZWxsID0gbV9qaXQuYnJhbmNoSWZOb3RDZWxsKG9wZXJhbmQuanNWYWx1ZVJlZ3MoKSk7CiAg
ICAgR1BSUmVnIGdwciA9IG9wZXJhbmQuanNWYWx1ZVJlZ3MoKS5wYXlsb2FkR1BSKCk7CiAgICAg
REZHX1RZUEVfQ0hFQ0soCi0gICAgICAgIG9wZXJhbmQuanNWYWx1ZVJlZ3MoKSwgZWRnZSwgKH5T
cGVjQ2VsbCkgfCBTcGVjT2JqZWN0LCBicmFuY2hOb3RPYmplY3QoZ3ByKSk7CisgICAgICAgIG9w
ZXJhbmQuanNWYWx1ZVJlZ3MoKSwgZWRnZSwgKH5TcGVjQ2VsbCkgfCBTcGVjT2JqZWN0LCBtX2pp
dC5icmFuY2hJZk5vdE9iamVjdChncHIpKTsKICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBkb25l
ID0gbV9qaXQuanVtcCgpOwogICAgIG5vdENlbGwubGluaygmbV9qaXQpOwogICAgIGlmIChuZWVk
c1R5cGVDaGVjayhlZGdlLCBTcGVjQ2VsbCB8IFNwZWNPdGhlcikpIHsKICAgICAgICAgdHlwZUNo
ZWNrKAogICAgICAgICAgICAgb3BlcmFuZC5qc1ZhbHVlUmVncygpLCBlZGdlLCBTcGVjQ2VsbCB8
IFNwZWNPdGhlciwKLSAgICAgICAgICAgIGJyYW5jaE5vdE90aGVyKG9wZXJhbmQuanNWYWx1ZVJl
Z3MoKSwgdGVtcEdQUikpOworICAgICAgICAgICAgbV9qaXQuYnJhbmNoSWZOb3RPdGhlcihvcGVy
YW5kLmpzVmFsdWVSZWdzKCksIHRlbXBHUFIpKTsKICAgICB9CiAgICAgZG9uZS5saW5rKCZtX2pp
dCk7CiB9CkBAIC01MjQwLDcgKzUyNDAsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpzcGVjdWxh
dGVPYmplY3RPck90CiB2b2lkIFNwZWN1bGF0aXZlSklUOjpzcGVjdWxhdGVTdHJpbmcoRWRnZSBl
ZGdlLCBHUFJSZWcgY2VsbCkKIHsKICAgICBERkdfVFlQRV9DSEVDSygKLSAgICAgICAgSlNWYWx1
ZVNvdXJjZTo6dW5ib3hlZENlbGwoY2VsbCksIGVkZ2UsIFNwZWNTdHJpbmcgfCB+U3BlY0NlbGws
IGJyYW5jaE5vdFN0cmluZyhjZWxsKSk7CisgICAgICAgIEpTVmFsdWVTb3VyY2U6OnVuYm94ZWRD
ZWxsKGNlbGwpLCBlZGdlLCBTcGVjU3RyaW5nIHwgflNwZWNDZWxsLCBtX2ppdC5icmFuY2hJZk5v
dFN0cmluZyhjZWxsKSk7CiB9CiAKIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OnNwZWN1bGF0ZVN0cmlu
Z0lkZW50QW5kTG9hZFN0b3JhZ2UoRWRnZSBlZGdlLCBHUFJSZWcgc3RyaW5nLCBHUFJSZWcgc3Rv
cmFnZSkKQEAgLTUzNDIsMTAgKzUzNDIsMTAgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6c3BlY3Vs
YXRlTm90U3RyaW5nVgogICAgIEdQUlRlbXBvcmFyeSB0ZW1wKHRoaXMpOwogICAgIEdQUlJlZyB0
ZW1wR1BSID0gdGVtcC5ncHIoKTsKICAgICAKLSAgICBKSVRDb21waWxlcjo6SnVtcCBub3RDZWxs
ID0gYnJhbmNoTm90Q2VsbChvcGVyYW5kLmpzVmFsdWVSZWdzKCkpOworICAgIEpJVENvbXBpbGVy
OjpKdW1wIG5vdENlbGwgPSBtX2ppdC5icmFuY2hJZk5vdENlbGwob3BlcmFuZC5qc1ZhbHVlUmVn
cygpKTsKICAgICBHUFJSZWcgY2VsbCA9IG9wZXJhbmQuanNWYWx1ZVJlZ3MoKS5wYXlsb2FkR1BS
KCk7CiAgICAgCi0gICAgSklUQ29tcGlsZXI6Okp1bXAgbm90U3RyaW5nID0gYnJhbmNoTm90U3Ry
aW5nKGNlbGwpOworICAgIEpJVENvbXBpbGVyOjpKdW1wIG5vdFN0cmluZyA9IG1faml0LmJyYW5j
aElmTm90U3RyaW5nKGNlbGwpOwogICAgIAogICAgIHNwZWN1bGF0ZVN0cmluZ0lkZW50QW5kTG9h
ZFN0b3JhZ2UoZWRnZSwgY2VsbCwgdGVtcEdQUik7CiAgICAgCkBAIC01MzU5LDcgKzUzNTksNyBA
QCB2b2lkIFNwZWN1bGF0aXZlSklUOjpzcGVjdWxhdGVOb3RDZWxsKEVkCiAgICAgICAgIHJldHVy
bjsKICAgICAKICAgICBKU1ZhbHVlT3BlcmFuZCBvcGVyYW5kKHRoaXMsIGVkZ2UsIE1hbnVhbE9w
ZXJhbmRTcGVjdWxhdGlvbik7IAotICAgIHR5cGVDaGVjayhvcGVyYW5kLmpzVmFsdWVSZWdzKCks
IGVkZ2UsIH5TcGVjQ2VsbCwgYnJhbmNoSXNDZWxsKG9wZXJhbmQuanNWYWx1ZVJlZ3MoKSkpOwor
ICAgIHR5cGVDaGVjayhvcGVyYW5kLmpzVmFsdWVSZWdzKCksIGVkZ2UsIH5TcGVjQ2VsbCwgbV9q
aXQuYnJhbmNoSWZDZWxsKG9wZXJhbmQuanNWYWx1ZVJlZ3MoKSkpOwogfQogCiB2b2lkIFNwZWN1
bGF0aXZlSklUOjpzcGVjdWxhdGVPdGhlcihFZGdlIGVkZ2UpCkBAIC01MzcyLDcgKzUzNzIsNyBA
QCB2b2lkIFNwZWN1bGF0aXZlSklUOjpzcGVjdWxhdGVPdGhlcihFZGdlCiAgICAgR1BSUmVnIHRl
bXBHUFIgPSB0ZW1wLmdwcigpOwogICAgIHR5cGVDaGVjaygKICAgICAgICAgb3BlcmFuZC5qc1Zh
bHVlUmVncygpLCBlZGdlLCBTcGVjT3RoZXIsCi0gICAgICAgIGJyYW5jaE5vdE90aGVyKG9wZXJh
bmQuanNWYWx1ZVJlZ3MoKSwgdGVtcEdQUikpOworICAgICAgICBtX2ppdC5icmFuY2hJZk5vdE90
aGVyKG9wZXJhbmQuanNWYWx1ZVJlZ3MoKSwgdGVtcEdQUikpOwogfQogCiB2b2lkIFNwZWN1bGF0
aXZlSklUOjpzcGVjdWxhdGVNaXNjKEVkZ2UgZWRnZSwgSlNWYWx1ZVJlZ3MgcmVncykKQEAgLTU2
MTksOSArNTYxOSw5IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXRTd2l0Y2hDaGFyKE5vZGUK
ICAgICAgICAgCiAgICAgICAgIG9wMS51c2UoKTsKICAgICAgICAgCi0gICAgICAgIGFkZEJyYW5j
aChicmFuY2hOb3RDZWxsKG9wMVJlZ3MpLCBkYXRhLT5mYWxsVGhyb3VnaC5ibG9jayk7CisgICAg
ICAgIGFkZEJyYW5jaChtX2ppdC5icmFuY2hJZk5vdENlbGwob3AxUmVncyksIGRhdGEtPmZhbGxU
aHJvdWdoLmJsb2NrKTsKICAgICAgICAgCi0gICAgICAgIGFkZEJyYW5jaChicmFuY2hOb3RTdHJp
bmcob3AxUmVncy5wYXlsb2FkR1BSKCkpLCBkYXRhLT5mYWxsVGhyb3VnaC5ibG9jayk7CisgICAg
ICAgIGFkZEJyYW5jaChtX2ppdC5icmFuY2hJZk5vdFN0cmluZyhvcDFSZWdzLnBheWxvYWRHUFIo
KSksIGRhdGEtPmZhbGxUaHJvdWdoLmJsb2NrKTsKICAgICAgICAgCiAgICAgICAgIGVtaXRTd2l0
Y2hDaGFyU3RyaW5nSnVtcChkYXRhLCBvcDFSZWdzLnBheWxvYWRHUFIoKSwgdGVtcEdQUik7CiAg
ICAgICAgIG5vUmVzdWx0KG5vZGUsIFVzZUNoaWxkcmVuQ2FsbGVkRXhwbGljaXRseSk7CkBAIC01
ODkyLDkgKzU4OTIsOSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjplbWl0U3dpdGNoU3RyaW5nKE5v
CiAgICAgICAgIAogICAgICAgICBvcDEudXNlKCk7CiAgICAgICAgIAotICAgICAgICBhZGRCcmFu
Y2goYnJhbmNoTm90Q2VsbChvcDFSZWdzKSwgZGF0YS0+ZmFsbFRocm91Z2guYmxvY2spOworICAg
ICAgICBhZGRCcmFuY2gobV9qaXQuYnJhbmNoSWZOb3RDZWxsKG9wMVJlZ3MpLCBkYXRhLT5mYWxs
VGhyb3VnaC5ibG9jayk7CiAgICAgICAgIAotICAgICAgICBhZGRCcmFuY2goYnJhbmNoTm90U3Ry
aW5nKG9wMVJlZ3MucGF5bG9hZEdQUigpKSwgZGF0YS0+ZmFsbFRocm91Z2guYmxvY2spOworICAg
ICAgICBhZGRCcmFuY2gobV9qaXQuYnJhbmNoSWZOb3RTdHJpbmcob3AxUmVncy5wYXlsb2FkR1BS
KCkpLCBkYXRhLT5mYWxsVGhyb3VnaC5ibG9jayk7CiAgICAgICAgIAogICAgICAgICBlbWl0U3dp
dGNoU3RyaW5nT25TdHJpbmcoZGF0YSwgb3AxUmVncy5wYXlsb2FkR1BSKCkpOwogICAgICAgICBu
b1Jlc3VsdChub2RlLCBVc2VDaGlsZHJlbkNhbGxlZEV4cGxpY2l0bHkpOwpAQCAtNTk0NCwzOCAr
NTk0NCw2IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmxpbmtCcmFuY2hlcygpCiAgICAgfQogfQog
Ci1KSVRDb21waWxlcjo6SnVtcCBTcGVjdWxhdGl2ZUpJVDo6YnJhbmNoSXNPYmplY3QoR1BSUmVn
IGNlbGxHUFIpCi17Ci0gICAgcmV0dXJuIG1faml0LmJyYW5jaDgoCi0gICAgICAgIE1hY3JvQXNz
ZW1ibGVyOjpBYm92ZU9yRXF1YWwsCi0gICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGNl
bGxHUFIsIEpTQ2VsbDo6dHlwZUluZm9UeXBlT2Zmc2V0KCkpLAotICAgICAgICBNYWNyb0Fzc2Vt
Ymxlcjo6VHJ1c3RlZEltbTMyKE9iamVjdFR5cGUpKTsKLX0KLQotSklUQ29tcGlsZXI6Okp1bXAg
U3BlY3VsYXRpdmVKSVQ6OmJyYW5jaE5vdE9iamVjdChHUFJSZWcgY2VsbEdQUikKLXsKLSAgICBy
ZXR1cm4gbV9qaXQuYnJhbmNoOCgKLSAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkJlbG93LAotICAg
ICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhjZWxsR1BSLCBKU0NlbGw6OnR5cGVJbmZvVHlw
ZU9mZnNldCgpKSwKLSAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW0zMihPYmplY3RU
eXBlKSk7Ci19Ci0KLUpJVENvbXBpbGVyOjpKdW1wIFNwZWN1bGF0aXZlSklUOjpicmFuY2hJc1N0
cmluZyhHUFJSZWcgY2VsbEdQUikKLXsKLSAgICByZXR1cm4gbV9qaXQuYnJhbmNoU3RydWN0dXJl
UHRyKAotICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6RXF1YWwsCi0gICAgICAgIE1hY3JvQXNzZW1i
bGVyOjpBZGRyZXNzKGNlbGxHUFIsIEpTQ2VsbDo6c3RydWN0dXJlSURPZmZzZXQoKSksCi0gICAg
ICAgIG1faml0LnZtKCktPnN0cmluZ1N0cnVjdHVyZS5nZXQoKSk7Ci19Ci0KLUpJVENvbXBpbGVy
OjpKdW1wIFNwZWN1bGF0aXZlSklUOjpicmFuY2hOb3RTdHJpbmcoR1BSUmVnIGNlbGxHUFIpCi17
Ci0gICAgcmV0dXJuIG1faml0LmJyYW5jaFN0cnVjdHVyZVB0cigKLSAgICAgICAgTWFjcm9Bc3Nl
bWJsZXI6Ok5vdEVxdWFsLAotICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhjZWxsR1BS
LCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkpLAotICAgICAgICBtX2ppdC52bSgpLT5zdHJp
bmdTdHJ1Y3R1cmUuZ2V0KCkpOwotfQotCiAjaWYgRU5BQkxFKEdHQykKIHZvaWQgU3BlY3VsYXRp
dmVKSVQ6OmNvbXBpbGVTdG9yZUJhcnJpZXIoTm9kZSogbm9kZSkKIHsKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgJKHJldmlzaW9uIDE4MzY1
MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaAkod29y
a2luZyBjb3B5KQpAQCAtMjIxNSwxNSArMjIxNSw2IEBAIHB1YmxpYzoKICAgICB2b2lkIGNvbXBp
bGVOb3RpZnlXcml0ZShOb2RlKik7CiAgICAgYm9vbCBjb21waWxlUmVnRXhwRXhlYyhOb2RlKik7
CiAgICAgCi0gICAgSklUQ29tcGlsZXI6Okp1bXAgYnJhbmNoSXNDZWxsKEpTVmFsdWVSZWdzKTsK
LSAgICBKSVRDb21waWxlcjo6SnVtcCBicmFuY2hOb3RDZWxsKEpTVmFsdWVSZWdzKTsKLSAgICBK
SVRDb21waWxlcjo6SnVtcCBicmFuY2hJc090aGVyKEpTVmFsdWVSZWdzLCBHUFJSZWcgdGVtcEdQ
Uik7Ci0gICAgSklUQ29tcGlsZXI6Okp1bXAgYnJhbmNoTm90T3RoZXIoSlNWYWx1ZVJlZ3MsIEdQ
UlJlZyB0ZW1wR1BSKTsKLSAgICBKSVRDb21waWxlcjo6SnVtcCBicmFuY2hJc09iamVjdChHUFJS
ZWcgY2VsbEdQUik7Ci0gICAgSklUQ29tcGlsZXI6Okp1bXAgYnJhbmNoTm90T2JqZWN0KEdQUlJl
ZyBjZWxsR1BSKTsKLSAgICBKSVRDb21waWxlcjo6SnVtcCBicmFuY2hJc1N0cmluZyhHUFJSZWcg
Y2VsbEdQUik7Ci0gICAgSklUQ29tcGlsZXI6Okp1bXAgYnJhbmNoTm90U3RyaW5nKEdQUlJlZyBj
ZWxsR1BSKTsKLSAgICAKICAgICB2b2lkIG1vdmVUcnVlVG8oR1BSUmVnKTsKICAgICB2b2lkIG1v
dmVGYWxzZVRvKEdQUlJlZyk7CiAgICAgdm9pZCBibGVzc0Jvb2xlYW4oR1BSUmVnKTsKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuaAkocmV2aXNpb24g
MTgzNjUwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuaAko
d29ya2luZyBjb3B5KQpAQCAtMzg1LDcgKzM4NSw3NyBAQCBwdWJsaWM6CiAjZW5kaWYKICAgICB9
CiAgICAgCi0gICAgSnVtcCBicmFuY2hJc0VtcHR5KEpTVmFsdWVSZWdzIHJlZ3MpCisgICAgSnVt
cCBicmFuY2hJZkNlbGwoR1BSUmVnIHJlZykKKyAgICB7CisjaWYgVVNFKEpTVkFMVUU2NCkKKyAg
ICAgICAgcmV0dXJuIGJyYW5jaFRlc3Q2NChNYWNyb0Fzc2VtYmxlcjo6WmVybywgcmVnLCBHUFJJ
bmZvOjp0YWdNYXNrUmVnaXN0ZXIpOworI2Vsc2UKKyAgICAgICAgcmV0dXJuIGJyYW5jaDMyKE1h
Y3JvQXNzZW1ibGVyOjpFcXVhbCwgcmVnLCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6Q2VsbFRhZykp
OworI2VuZGlmCisgICAgfQorICAgIEp1bXAgYnJhbmNoSWZDZWxsKEpTVmFsdWVSZWdzIHJlZ3Mp
CisgICAgeworI2lmIFVTRShKU1ZBTFVFNjQpCisgICAgICAgIHJldHVybiBicmFuY2hJZkNlbGwo
cmVncy5ncHIoKSk7CisjZWxzZQorICAgICAgICByZXR1cm4gYnJhbmNoSWZDZWxsKHJlZ3MudGFn
R1BSKCkpOworI2VuZGlmCisgICAgfQorICAgIAorICAgIEp1bXAgYnJhbmNoSWZPdGhlcihKU1Zh
bHVlUmVncyByZWdzLCBHUFJSZWcgdGVtcEdQUikKKyAgICB7CisjaWYgVVNFKEpTVkFMVUU2NCkK
KyAgICAgICAgbW92ZShyZWdzLmdwcigpLCB0ZW1wR1BSKTsKKyAgICAgICAgYW5kNjQoVHJ1c3Rl
ZEltbTMyKH5UYWdCaXRVbmRlZmluZWQpLCB0ZW1wR1BSKTsKKyAgICAgICAgcmV0dXJuIGJyYW5j
aDY0KEVxdWFsLCB0ZW1wR1BSLCBUcnVzdGVkSW1tNjQoVmFsdWVOdWxsKSk7CisjZWxzZQorICAg
ICAgICBvcjMyKFRydXN0ZWRJbW0zMigxKSwgcmVncy50YWdHUFIoKSwgdGVtcEdQUik7CisgICAg
ICAgIHJldHVybiBicmFuY2gzMihFcXVhbCwgdGVtcEdQUiwgVHJ1c3RlZEltbTMyKEpTVmFsdWU6
Ok51bGxUYWcpKTsKKyNlbmRpZgorICAgIH0KKyAgICAKKyAgICBKdW1wIGJyYW5jaElmTm90T3Ro
ZXIoSlNWYWx1ZVJlZ3MgcmVncywgR1BSUmVnIHRlbXBHUFIpCisgICAgeworI2lmIFVTRShKU1ZB
TFVFNjQpCisgICAgICAgIG1vdmUocmVncy5ncHIoKSwgdGVtcEdQUik7CisgICAgICAgIGFuZDY0
KFRydXN0ZWRJbW0zMih+VGFnQml0VW5kZWZpbmVkKSwgdGVtcEdQUik7CisgICAgICAgIHJldHVy
biBicmFuY2g2NChOb3RFcXVhbCwgdGVtcEdQUiwgVHJ1c3RlZEltbTY0KFZhbHVlTnVsbCkpOwor
I2Vsc2UKKyAgICAgICAgb3IzMihUcnVzdGVkSW1tMzIoMSksIHJlZ3MudGFnR1BSKCksIHRlbXBH
UFIpOworICAgICAgICByZXR1cm4gYnJhbmNoMzIoTm90RXF1YWwsIHRlbXBHUFIsIFRydXN0ZWRJ
bW0zMihKU1ZhbHVlOjpOdWxsVGFnKSk7CisjZW5kaWYKKyAgICB9CisgICAgCisgICAgSnVtcCBi
cmFuY2hJZk9iamVjdChHUFJSZWcgY2VsbEdQUikKKyAgICB7CisgICAgICAgIHJldHVybiBicmFu
Y2g4KAorICAgICAgICAgICAgQWJvdmVPckVxdWFsLCBBZGRyZXNzKGNlbGxHUFIsIEpTQ2VsbDo6
dHlwZUluZm9UeXBlT2Zmc2V0KCkpLCBUcnVzdGVkSW1tMzIoT2JqZWN0VHlwZSkpOworICAgIH0K
KyAgICAKKyAgICBKdW1wIGJyYW5jaElmTm90T2JqZWN0KEdQUlJlZyBjZWxsR1BSKQorICAgIHsK
KyAgICAgICAgcmV0dXJuIGJyYW5jaDgoCisgICAgICAgICAgICBCZWxvdywgQWRkcmVzcyhjZWxs
R1BSLCBKU0NlbGw6OnR5cGVJbmZvVHlwZU9mZnNldCgpKSwgVHJ1c3RlZEltbTMyKE9iamVjdFR5
cGUpKTsKKyAgICB9CisgICAgCisgICAgSnVtcCBicmFuY2hJZlR5cGUoR1BSUmVnIGNlbGxHUFIs
IEpTVHlwZSB0eXBlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGJyYW5jaDgoRXF1YWwsIEFkZHJl
c3MoY2VsbEdQUiwgSlNDZWxsOjp0eXBlSW5mb1R5cGVPZmZzZXQoKSksIFRydXN0ZWRJbW0zMih0
eXBlKSk7CisgICAgfQorICAgIAorICAgIEp1bXAgYnJhbmNoSWZOb3RUeXBlKEdQUlJlZyBjZWxs
R1BSLCBKU1R5cGUgdHlwZSkKKyAgICB7CisgICAgICAgIHJldHVybiBicmFuY2g4KE5vdEVxdWFs
LCBBZGRyZXNzKGNlbGxHUFIsIEpTQ2VsbDo6dHlwZUluZm9UeXBlT2Zmc2V0KCkpLCBUcnVzdGVk
SW1tMzIodHlwZSkpOworICAgIH0KKyAgICAKKyAgICBKdW1wIGJyYW5jaElmU3RyaW5nKEdQUlJl
ZyBjZWxsR1BSKSB7IHJldHVybiBicmFuY2hJZlR5cGUoY2VsbEdQUiwgU3RyaW5nVHlwZSk7IH0K
KyAgICBKdW1wIGJyYW5jaElmTm90U3RyaW5nKEdQUlJlZyBjZWxsR1BSKSB7IHJldHVybiBicmFu
Y2hJZk5vdFR5cGUoY2VsbEdQUiwgU3RyaW5nVHlwZSk7IH0KKyAgICBKdW1wIGJyYW5jaElmU3lt
Ym9sKEdQUlJlZyBjZWxsR1BSKSB7IHJldHVybiBicmFuY2hJZlR5cGUoY2VsbEdQUiwgU3ltYm9s
VHlwZSk7IH0KKyAgICBKdW1wIGJyYW5jaElmTm90U3ltYm9sKEdQUlJlZyBjZWxsR1BSKSB7IHJl
dHVybiBicmFuY2hJZk5vdFR5cGUoY2VsbEdQUiwgU3ltYm9sVHlwZSk7IH0KKyAgICBKdW1wIGJy
YW5jaElmRnVuY3Rpb24oR1BSUmVnIGNlbGxHUFIpIHsgcmV0dXJuIGJyYW5jaElmVHlwZShjZWxs
R1BSLCBKU0Z1bmN0aW9uVHlwZSk7IH0KKyAgICBKdW1wIGJyYW5jaElmTm90RnVuY3Rpb24oR1BS
UmVnIGNlbGxHUFIpIHsgcmV0dXJuIGJyYW5jaElmTm90VHlwZShjZWxsR1BSLCBKU0Z1bmN0aW9u
VHlwZSk7IH0KKyAgICAKKyAgICBKdW1wIGJyYW5jaElmRW1wdHkoSlNWYWx1ZVJlZ3MgcmVncykK
ICAgICB7CiAjaWYgVVNFKEpTVkFMVUU2NCkKICAgICAgICAgcmV0dXJuIGJyYW5jaFRlc3Q2NCha
ZXJvLCByZWdzLmdwcigpKTsKQEAgLTQ3NSwxMSArNTQ1LDYgQEAgcHVibGljOgogICAgICAgICBy
ZXR1cm4gY2FsbGVlRnJhbWVTbG90KDApLndpdGhPZmZzZXQoQ2FsbEZyYW1lOjpjYWxsZXJGcmFt
ZU9mZnNldCgpKTsKICAgICB9CiAKLSAgICBKdW1wIGJyYW5jaElmQ2VsbE5vdE9iamVjdChHUFJS
ZWcgY2VsbFJlZykKLSAgICB7Ci0gICAgICAgIHJldHVybiBicmFuY2g4KEJlbG93LCBBZGRyZXNz
KGNlbGxSZWcsIEpTQ2VsbDo6dHlwZUluZm9UeXBlT2Zmc2V0KCkpLCBUcnVzdGVkSW1tMzIoT2Jq
ZWN0VHlwZSkpOwotICAgIH0KLQogICAgIHN0YXRpYyBHUFJSZWcgc2VsZWN0U2NyYXRjaEdQUihH
UFJSZWcgcHJlc2VydmUxID0gSW52YWxpZEdQUlJlZywgR1BSUmVnIHByZXNlcnZlMiA9IEludmFs
aWRHUFJSZWcsIEdQUlJlZyBwcmVzZXJ2ZTMgPSBJbnZhbGlkR1BSUmVnLCBHUFJSZWcgcHJlc2Vy
dmU0ID0gSW52YWxpZEdQUlJlZywgR1BSUmVnIHByZXNlcnZlNSA9IEludmFsaWRHUFJSZWcpCiAg
ICAgewogICAgICAgICBpZiAocHJlc2VydmUxICE9IEdQUkluZm86OnJlZ1QwICYmIHByZXNlcnZl
MiAhPSBHUFJJbmZvOjpyZWdUMCAmJiBwcmVzZXJ2ZTMgIT0gR1BSSW5mbzo6cmVnVDAgJiYgcHJl
c2VydmU0ICE9IEdQUkluZm86OnJlZ1QwICYmIHByZXNlcnZlNSAhPSBHUFJJbmZvOjpyZWdUMCkK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3Mu
Y3BwCShyZXZpc2lvbiAxODM2NTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFBy
b3BlcnR5QWNjZXNzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTEzMCw3ICsxMTMwLDcgQEAgSklU
OjpKdW1wTGlzdCBKSVQ6OmVtaXRTY29wZWRBcmd1bWVudHNHZQogICAgIHN1YjMyKHByb3BlcnR5
LCBzY3JhdGNoMik7CiAgICAgbmVnMzIoc2NyYXRjaDIpOwogICAgIGxvYWRWYWx1ZShCYXNlSW5k
ZXgoYmFzZSwgc2NyYXRjaDIsIFRpbWVzRWlnaHQsIFNjb3BlZEFyZ3VtZW50czo6b3ZlcmZsb3dT
dG9yYWdlT2Zmc2V0KCkpLCByZXN1bHQpOwotICAgIHNsb3dDYXNlcy5hcHBlbmQoYnJhbmNoSXNF
bXB0eShyZXN1bHQpKTsKKyAgICBzbG93Q2FzZXMuYXBwZW5kKGJyYW5jaElmRW1wdHkocmVzdWx0
KSk7CiAgICAgZG9uZS5saW5rKHRoaXMpOwogICAgIAogICAgIHJldHVybiBzbG93Q2FzZXM7Cg==
</data>
<flag name="review"
          id="276945"
          type_id="1"
          status="+"
          setter="mark.lam"
    />
          </attachment>
      

    </bug>

</bugzilla>