<?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>175228</bug_id>
          
          <creation_ts>2017-08-04 17:07:49 -0700</creation_ts>
          <short_desc>Move DFG::OSRExitCompiler methods into DFG::OSRExit [step 3].</short_desc>
          <delta_ts>2017-08-05 07:11:20 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>175144</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Mark Lam">mark.lam</reporter>
          <assigned_to name="Mark Lam">mark.lam</assigned_to>
          <cc>saam</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1335600</commentid>
    <comment_count>0</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2017-08-04 17:07:49 -0700</bug_when>
    <thetext>Merge the 32-bit OSRExit::compileExit() method into the 64-bit version, and delete OSRExit32_64.cpp.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1335601</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2017-08-04 17:08:21 -0700</bug_when>
    <thetext>&lt;rdar://problem/33735737&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1335648</commentid>
    <comment_count>2</comment_count>
      <attachid>317327</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2017-08-04 21:42:57 -0700</bug_when>
    <thetext>Created attachment 317327
proposed patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1335656</commentid>
    <comment_count>3</comment_count>
      <attachid>317328</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2017-08-04 22:14:14 -0700</bug_when>
    <thetext>Created attachment 317328
proposed patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1335659</commentid>
    <comment_count>4</comment_count>
      <attachid>317328</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2017-08-04 23:15:27 -0700</bug_when>
    <thetext>Comment on attachment 317328
proposed patch.

This is ready for a review.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1335673</commentid>
    <comment_count>5</comment_count>
      <attachid>317328</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2017-08-05 01:01:21 -0700</bug_when>
    <thetext>Comment on attachment 317328
proposed patch.

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1335693</commentid>
    <comment_count>6</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2017-08-05 07:11:20 -0700</bug_when>
    <thetext>Thanks for the review.  Landed in r220318: &lt;http://trac.webkit.org/r220318&gt;.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>317327</attachid>
            <date>2017-08-04 21:42:57 -0700</date>
            <delta_ts>2017-08-04 22:14:14 -0700</delta_ts>
            <desc>proposed patch.</desc>
            <filename>bug-175228.patch</filename>
            <type>text/plain</type>
            <size>37849</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjIwMzA5KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIyIEBA
CisyMDE3LTA4LTA0ICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBN
b3ZlIERGRzo6T1NSRXhpdENvbXBpbGVyIG1ldGhvZHMgaW50byBERkc6Ok9TUkV4aXQgW3N0ZXAg
M10uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzUy
MjgKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzMzNzM1NzM3PgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1lcmdlIHRoZSAzMi1iaXQgT1NSRXhpdDo6
Y29tcGlsZUV4aXQoKSBtZXRob2QgaW50byB0aGUgNjQtYml0IHZlcnNpb24sIGFuZAorICAgICAg
ICBkZWxldGUgT1NSRXhpdDMyXzY0LmNwcC4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0Ogor
ICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAg
ICAgICogZGZnL0RGR09TUkV4aXQuY3BwOgorICAgICAgICAoSlNDOjpERkc6Ok9TUkV4aXQ6OmNv
bXBpbGVFeGl0KToKKyAgICAgICAgKiBkZmcvREZHT1NSRXhpdDMyXzY0LmNwcDogUmVtb3ZlZC4K
KyAgICAgICAgKiBqaXQvR1BSSW5mby5oOgorICAgICAgICAoSlNDOjpKU1ZhbHVlU291cmNlOjpw
YXlsb2FkR1BSIGNvbnN0KToKKwogMjAxNy0wOC0wNCAgTWFyayBMYW0gIDxtYXJrLmxhbUBhcHBs
ZS5jb20+CiAKICAgICAgICAgRml4IHR5cG8gaW4gdGVzdG1hc20uY3BwOiBFTkFCTEUoSlNWQUxV
RTY0KSBzaG91bGQgYmUgVVNFKEpTVkFMVUU2NCkuCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ01ha2VMaXN0cy50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0NN
YWtlTGlzdHMudHh0CShyZXZpc2lvbiAyMjAzMDYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Q01ha2VMaXN0cy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTM3Niw3ICszNzYsNiBAQCBzZXQoSmF2
YVNjcmlwdENvcmVfU09VUkNFUwogICAgIGRmZy9ERkdPU1JFbnRyeS5jcHAKICAgICBkZmcvREZH
T1NSRW50cnlwb2ludENyZWF0aW9uUGhhc2UuY3BwCiAgICAgZGZnL0RGR09TUkV4aXQuY3BwCi0g
ICAgZGZnL0RGR09TUkV4aXQzMl82NC5jcHAKICAgICBkZmcvREZHT1NSRXhpdEJhc2UuY3BwCiAg
ICAgZGZnL0RGR09TUkV4aXRDb21waWxlckNvbW1vbi5jcHAKICAgICBkZmcvREZHT1NSRXhpdEZ1
enouY3BwCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
SmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMjIwMzA2
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTc0NCw3ICs3NDQsNiBAQAogCQkwRkJGMTU4
QzE5QjdBNTMxMDA2OTVERDAgLyogREZHQmxvY2tTZXQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZCRjE1OEExOUI3QTUzMTAwNjk1REQwIC8qIERG
R0Jsb2NrU2V0LmNwcCAqLzsgfTsKIAkJMEZCRjE1OEQxOUI3QTUzMTAwNjk1REQwIC8qIERGR0Js
b2NrU2V0SW5saW5lcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMEZCRjE1OEIxOUI3QTUzMTAwNjk1REQwIC8qIERGR0Jsb2NrU2V0SW5saW5lcy5oICov
OyB9OwogCQkwRkMwOTc2QTE0NjhBNkY3MDBDRjI0NDIgLyogREZHT1NSRXhpdC5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZDMDk3NjgxNDY4QTZFRjAw
Q0YyNDQyIC8qIERGR09TUkV4aXQuaCAqLzsgfTsKLQkJMEZDMDk3NzYxNDY5NDNCMDAwQ0YyNDQy
IC8qIERGR09TUkV4aXQzMl82NC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAwRkMwOTc3NTE0Njk0M0FEMDBDRjI0NDIgLyogREZHT1NSRXhpdDMyXzY0
LmNwcCAqLzsgfTsKIAkJMEZDMDk3OTExNDZBNkY3MTAwQ0YyNDQyIC8qIERGR09TUkV4aXQuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZDMDk3OEUx
NDZBNkY2MzAwQ0YyNDQyIC8qIERGR09TUkV4aXQuY3BwICovOyB9OwogCQkwRkMwOTdBMTE0NkIy
OENBMDBDRjI0NDIgLyogREZHVGh1bmtzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDBGQzA5NzlGMTQ2QjI4QzcwMENGMjQ0MiAvKiBERkdUaHVua3Mu
Y3BwICovOyB9OwogCQkwRkMwOTdBMjE0NkIyOENDMDBDRjI0NDIgLyogREZHVGh1bmtzLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkMwOTdBMDE0NkIy
OEM3MDBDRjI0NDIgLyogREZHVGh1bmtzLmggKi87IH07CkBAIC0zMzM5LDcgKzMzMzgsNiBAQAog
CQkwRkJGMTU4QTE5QjdBNTMxMDA2OTVERDAgLyogREZHQmxvY2tTZXQuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gREZHQmxvY2tTZXQuY3BwOyBwYXRoID0gZGZnL0RG
R0Jsb2NrU2V0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEZCRjE1OEIxOUI3
QTUzMTAwNjk1REQwIC8qIERGR0Jsb2NrU2V0SW5saW5lcy5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IG5hbWUgPSBERkdCbG9ja1NldElubGluZXMuaDsgcGF0aCA9IGRmZy9ERkdCbG9ja1Nl
dElubGluZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEZDMDk3NjgxNDY4QTZF
RjAwQ0YyNDQyIC8qIERGR09TUkV4aXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1l
ID0gREZHT1NSRXhpdC5oOyBwYXRoID0gZGZnL0RGR09TUkV4aXQuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKLQkJMEZDMDk3NzUxNDY5NDNBRDAwQ0YyNDQyIC8qIERGR09TUkV4aXQzMl82
NC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBERkdPU1JFeGl0MzJf
NjQuY3BwOyBwYXRoID0gZGZnL0RGR09TUkV4aXQzMl82NC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTBGQzA5NzdFMTQ2OUVCQzQwMENGMjQ0MiAvKiBERkdDb21tb24uaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gREZHQ29tbW9uLmg7IHBhdGggPSBkZmcvREZH
Q29tbW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGQzA5NzhFMTQ2QTZGNjMw
MENGMjQ0MiAvKiBERkdPU1JFeGl0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
bmFtZSA9IERGR09TUkV4aXQuY3BwOyBwYXRoID0gZGZnL0RGR09TUkV4aXQuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQkwRkMwOTc5RjE0NkIyOEM3MDBDRjI0NDIgLyogREZHVGh1
bmtzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IERGR1RodW5rcy5j
cHA7IHBhdGggPSBkZmcvREZHVGh1bmtzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
QEAgLTc0NjcsNyArNzQ2NSw2IEBACiAJCQkJMEZEOEEzMUUxN0Q1MUY1NzAwQ0EyQzQwIC8qIERG
R09TUkVudHJ5cG9pbnRDcmVhdGlvblBoYXNlLmggKi8sCiAJCQkJMEZDMDk3OEUxNDZBNkY2MzAw
Q0YyNDQyIC8qIERGR09TUkV4aXQuY3BwICovLAogCQkJCTBGQzA5NzY4MTQ2OEE2RUYwMENGMjQ0
MiAvKiBERkdPU1JFeGl0LmggKi8sCi0JCQkJMEZDMDk3NzUxNDY5NDNBRDAwQ0YyNDQyIC8qIERG
R09TUkV4aXQzMl82NC5jcHAgKi8sCiAJCQkJMEYyMzVCRTcxNzE3OEU3MzAwNjkwQzdGIC8qIERG
R09TUkV4aXRCYXNlLmNwcCAqLywKIAkJCQkwRjIzNUJFODE3MTc4RTczMDA2OTBDN0YgLyogREZH
T1NSRXhpdEJhc2UuaCAqLywKIAkJCQk2NTk4N0YyQzE2N0ZFODRCMDAzQzJGOEQgLyogREZHT1NS
RXhpdENvbXBpbGF0aW9uSW5mby5oICovLApAQCAtMTA0NzQsNyArMTA0NzEsNiBAQAogCQkJCTBG
RDhBMzI1MTdENTFGNTcwMENBMkM0MCAvKiBERkdPU1JFbnRyeXBvaW50Q3JlYXRpb25QaGFzZS5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQkwRkMwOTc5MTE0NkE2RjcxMDBDRjI0NDIgLyogREZHT1NS
RXhpdC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjIzNUJFQjE3MTc4RTczMDA2OTBDN0YgLyog
REZHT1NSRXhpdEJhc2UuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJMEZDMDk3NzYxNDY5NDNCMDAw
Q0YyNDQyIC8qIERGR09TUkV4aXQzMl82NC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjcwMjVB
OTE3MTRCMEZBMDAzODJDMEUgLyogREZHT1NSRXhpdENvbXBpbGVyQ29tbW9uLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTBGMzkyQzg5MUI0NjE4ODQwMDg0NDcyOCAvKiBERkdPU1JFeGl0RnV6ei5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQkwRkVGQzlBQTE2ODFBM0IzMDA1NjdGNTMgLyogREZHT1NS
RXhpdEp1bXBQbGFjZWhvbGRlci5jcHAgaW4gU291cmNlcyAqLywKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdDMyXzY0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXQzMl82NC5jcHAJKHJldmlzaW9uIDIyMDMwNikK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdDMyXzY0LmNwcAkobm9uZXhp
c3RlbnQpCkBAIC0xLDQxMSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDExLTIwMTcg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAot
ICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4gCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkRGR09T
UkV4aXQuaCIKLQotI2lmIEVOQUJMRShERkdfSklUKSAmJiBVU0UoSlNWQUxVRTMyXzY0KQotCi0j
aW5jbHVkZSAiREZHT1NSRXhpdENvbXBpbGVyQ29tbW9uLmgiCi0jaW5jbHVkZSAiREZHT3BlcmF0
aW9ucy5oIgotI2luY2x1ZGUgIkRGR1NwZWN1bGF0aXZlSklULmgiCi0jaW5jbHVkZSAiSlNDSW5s
aW5lcy5oIgotI2luY2x1ZGUgPHd0Zi9EYXRhTG9nLmg+Ci0KLW5hbWVzcGFjZSBKU0MgeyBuYW1l
c3BhY2UgREZHIHsKLQotdm9pZCBPU1JFeGl0Ojpjb21waWxlRXhpdChDQ2FsbEhlbHBlcnMmIGpp
dCwgVk0mIHZtLCBjb25zdCBPU1JFeGl0JiBleGl0LCBjb25zdCBPcGVyYW5kczxWYWx1ZVJlY292
ZXJ5PiYgb3BlcmFuZHMsIFNwZWN1bGF0aW9uUmVjb3ZlcnkqIHJlY292ZXJ5KQotewotICAgIC8v
IFByby1mb3JtYSBzdHVmZi4KLSAgICBpZiAoT3B0aW9uczo6cHJpbnRFYWNoT1NSRXhpdCgpKSB7
Ci0gICAgICAgIFNwZWN1bGF0aW9uRmFpbHVyZURlYnVnSW5mbyogZGVidWdJbmZvID0gbmV3IFNw
ZWN1bGF0aW9uRmFpbHVyZURlYnVnSW5mbzsKLSAgICAgICAgZGVidWdJbmZvLT5jb2RlQmxvY2sg
PSBqaXQuY29kZUJsb2NrKCk7Ci0gICAgICAgIGRlYnVnSW5mby0+a2luZCA9IGV4aXQubV9raW5k
OwotICAgICAgICBkZWJ1Z0luZm8tPmJ5dGVjb2RlT2Zmc2V0ID0gZXhpdC5tX2NvZGVPcmlnaW4u
Ynl0ZWNvZGVJbmRleDsKLSAgICAgICAgCi0gICAgICAgIGppdC5kZWJ1Z0NhbGwodm0sIGRlYnVn
T3BlcmF0aW9uUHJpbnRTcGVjdWxhdGlvbkZhaWx1cmUsIGRlYnVnSW5mbyk7Ci0gICAgfQotCi0g
ICAgLy8gUGVyZm9ybSBzcGVjdWxhdGlvbiByZWNvdmVyeS4gVGhpcyBvbmx5IGNvbWVzIGludG8g
cGxheSB3aGVuIGFuIG9wZXJhdGlvbgotICAgIC8vIHN0YXJ0cyBtdXRhdGluZyBzdGF0ZSBiZWZv
cmUgdmVyaWZ5aW5nIHRoZSBzcGVjdWxhdGlvbiBpdCBoYXMgYWxyZWFkeSBtYWRlLgotICAgIAot
ICAgIGlmIChyZWNvdmVyeSkgewotICAgICAgICBzd2l0Y2ggKHJlY292ZXJ5LT50eXBlKCkpIHsK
LSAgICAgICAgY2FzZSBTcGVjdWxhdGl2ZUFkZDoKLSAgICAgICAgICAgIGppdC5zdWIzMihyZWNv
dmVyeS0+c3JjKCksIHJlY292ZXJ5LT5kZXN0KCkpOwotICAgICAgICAgICAgYnJlYWs7Ci0KLSAg
ICAgICAgY2FzZSBTcGVjdWxhdGl2ZUFkZEltbWVkaWF0ZToKLSAgICAgICAgICAgIGppdC5zdWIz
MihBc3NlbWJseUhlbHBlcnM6OkltbTMyKHJlY292ZXJ5LT5pbW1lZGlhdGUoKSksIHJlY292ZXJ5
LT5kZXN0KCkpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAKLSAgICAgICAgY2Fz
ZSBCb29sZWFuU3BlY3VsYXRpb25DaGVjazoKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAg
ICAgCi0gICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAg
IH0KLQotICAgIC8vIFJlZmluZSBzb21lIHZhbHVlIHByb2ZpbGUsIGlmIGFwcHJvcHJpYXRlLgot
ICAgIAotICAgIGlmICghIWV4aXQubV9qc1ZhbHVlU291cmNlKSB7Ci0gICAgICAgIGlmIChleGl0
Lm1fa2luZCA9PSBCYWRDYWNoZSB8fCBleGl0Lm1fa2luZCA9PSBCYWRJbmRleGluZ1R5cGUpIHsK
LSAgICAgICAgICAgIC8vIElmIHRoZSBpbnN0cnVjdGlvbiB0aGF0IHRoaXMgb3JpZ2luYXRlZCBm
cm9tIGhhcyBhbiBhcnJheSBwcm9maWxlLCB0aGVuCi0gICAgICAgICAgICAvLyByZWZpbmUgaXQu
IElmIGl0IGRvZXNuJ3QsIHRoZW4gZG8gbm90aGluZy4gVGhlIGxhdHRlciBjb3VsZCBoYXBwZW4g
Zm9yCi0gICAgICAgICAgICAvLyBob2lzdGVkIGNoZWNrcywgb3IgY2hlY2tzIGVtaXR0ZWQgZm9y
IG9wZXJhdGlvbnMgdGhhdCBkaWRuJ3QgaGF2ZSBhcnJheQotICAgICAgICAgICAgLy8gcHJvZmls
aW5nIC0gZWl0aGVyIG9wcyB0aGF0IGFyZW4ndCBhcnJheSBhY2Nlc3NlcyBhdCBhbGwsIG9yIHdl
cmVuJ3QKLSAgICAgICAgICAgIC8vIGtub3duIHRvIGJlIGFycmF5IGFjY2VzZXMgaW4gdGhlIGJ5
dGVjb2RlLiBUaGUgbGF0dGVyIGNhc2UgaXMgYSBGSVhNRQotICAgICAgICAgICAgLy8gd2hpbGUg
dGhlIGZvcm1lciBjYXNlIGlzIGFuIG91dGNvbWUgb2YgYSBDaGVja1N0cnVjdHVyZSBub3Qga25v
d2luZyB3aHkKLSAgICAgICAgICAgIC8vIGl0IHdhcyBlbWl0dGVkIChjb3VsZCBiZSBlaXRoZXIg
ZHVlIHRvIGFuIGlubGluZSBjYWNoZSBvZiBhIHByb3BlcnR5Ci0gICAgICAgICAgICAvLyBwcm9w
ZXJ0eSBhY2Nlc3MsIG9yIGR1ZSB0byBhbiBhcnJheSBwcm9maWxlKS4KLSAgICAgICAgICAgIAot
ICAgICAgICAgICAgLy8gTm90ZTogV2UgYXJlIGZyZWUgdG8gYXNzdW1lIHRoYXQgdGhlIGpzVmFs
dWVTb3VyY2UgaXMgYWxyZWFkeSBrbm93biB0bwotICAgICAgICAgICAgLy8gYmUgYSBjZWxsIHNp
bmNlIGJvdGggQmFkQ2FjaGUgYW5kIEJhZEluZGV4aW5nVHlwZSBleGl0cyBvY2N1ciBhZnRlcgot
ICAgICAgICAgICAgLy8gdGhlIGNlbGwgY2hlY2sgd291bGQgaGF2ZSBhbHJlYWR5IGhhcHBlbmVk
LgotICAgICAgICAgICAgCi0gICAgICAgICAgICBDb2RlT3JpZ2luIGNvZGVPcmlnaW4gPSBleGl0
Lm1fY29kZU9yaWdpbkZvckV4aXRQcm9maWxlOwotICAgICAgICAgICAgaWYgKEFycmF5UHJvZmls
ZSogYXJyYXlQcm9maWxlID0gaml0LmJhc2VsaW5lQ29kZUJsb2NrRm9yKGNvZGVPcmlnaW4pLT5n
ZXRBcnJheVByb2ZpbGUoY29kZU9yaWdpbi5ieXRlY29kZUluZGV4KSkgewotICAgICAgICAgICAg
ICAgIEdQUlJlZyB1c2VkUmVnaXN0ZXIxOwotICAgICAgICAgICAgICAgIEdQUlJlZyB1c2VkUmVn
aXN0ZXIyOwotICAgICAgICAgICAgICAgIGlmIChleGl0Lm1fanNWYWx1ZVNvdXJjZS5pc0FkZHJl
c3MoKSkgewotICAgICAgICAgICAgICAgICAgICB1c2VkUmVnaXN0ZXIxID0gZXhpdC5tX2pzVmFs
dWVTb3VyY2UuYmFzZSgpOwotICAgICAgICAgICAgICAgICAgICB1c2VkUmVnaXN0ZXIyID0gSW52
YWxpZEdQUlJlZzsKLSAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAg
ICB1c2VkUmVnaXN0ZXIxID0gZXhpdC5tX2pzVmFsdWVTb3VyY2UucGF5bG9hZEdQUigpOwotICAg
ICAgICAgICAgICAgICAgICBpZiAoZXhpdC5tX2pzVmFsdWVTb3VyY2UuaGFzS25vd25UYWcoKSkK
LSAgICAgICAgICAgICAgICAgICAgICAgIHVzZWRSZWdpc3RlcjIgPSBJbnZhbGlkR1BSUmVnOwot
ICAgICAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgICAgICB1c2VkUmVn
aXN0ZXIyID0gZXhpdC5tX2pzVmFsdWVTb3VyY2UudGFnR1BSKCk7Ci0gICAgICAgICAgICAgICAg
fQotICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgIEdQUlJlZyBzY3JhdGNoMTsKLSAg
ICAgICAgICAgICAgICBHUFJSZWcgc2NyYXRjaDI7Ci0gICAgICAgICAgICAgICAgc2NyYXRjaDEg
PSBBc3NlbWJseUhlbHBlcnM6OnNlbGVjdFNjcmF0Y2hHUFIodXNlZFJlZ2lzdGVyMSwgdXNlZFJl
Z2lzdGVyMik7Ci0gICAgICAgICAgICAgICAgc2NyYXRjaDIgPSBBc3NlbWJseUhlbHBlcnM6OnNl
bGVjdFNjcmF0Y2hHUFIodXNlZFJlZ2lzdGVyMSwgdXNlZFJlZ2lzdGVyMiwgc2NyYXRjaDEpOwot
ICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgIGppdC5wdXNoKHNjcmF0Y2gxKTsKLSAg
ICAgICAgICAgICAgICBqaXQucHVzaChzY3JhdGNoMik7Ci0gICAgICAgICAgICAgICAgCi0gICAg
ICAgICAgICAgICAgR1BSUmVnIHZhbHVlOwotICAgICAgICAgICAgICAgIGlmIChleGl0Lm1fanNW
YWx1ZVNvdXJjZS5pc0FkZHJlc3MoKSkgewotICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IHNj
cmF0Y2gxOwotICAgICAgICAgICAgICAgICAgICBqaXQubG9hZFB0cihBc3NlbWJseUhlbHBlcnM6
OkFkZHJlc3MoZXhpdC5tX2pzVmFsdWVTb3VyY2UuYXNBZGRyZXNzKCkpLCB2YWx1ZSk7Ci0gICAg
ICAgICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICAgICAgICAgIHZhbHVlID0gZXhpdC5tX2pz
VmFsdWVTb3VyY2UucGF5bG9hZEdQUigpOwotICAgICAgICAgICAgICAgIAotICAgICAgICAgICAg
ICAgIGppdC5sb2FkUHRyKEFzc2VtYmx5SGVscGVyczo6QWRkcmVzcyh2YWx1ZSwgSlNDZWxsOjpz
dHJ1Y3R1cmVJRE9mZnNldCgpKSwgc2NyYXRjaDEpOwotICAgICAgICAgICAgICAgIGppdC5zdG9y
ZVB0cihzY3JhdGNoMSwgYXJyYXlQcm9maWxlLT5hZGRyZXNzT2ZMYXN0U2VlblN0cnVjdHVyZUlE
KCkpOwotICAgICAgICAgICAgICAgIGppdC5sb2FkOChBc3NlbWJseUhlbHBlcnM6OkFkZHJlc3Mo
c2NyYXRjaDEsIFN0cnVjdHVyZTo6aW5kZXhpbmdUeXBlSW5jbHVkaW5nSGlzdG9yeU9mZnNldCgp
KSwgc2NyYXRjaDEpOwotICAgICAgICAgICAgICAgIGppdC5tb3ZlKEFzc2VtYmx5SGVscGVyczo6
VHJ1c3RlZEltbTMyKDEpLCBzY3JhdGNoMik7Ci0gICAgICAgICAgICAgICAgaml0LmxzaGlmdDMy
KHNjcmF0Y2gxLCBzY3JhdGNoMik7Ci0gICAgICAgICAgICAgICAgaml0Lm9yMzIoc2NyYXRjaDIs
IEFzc2VtYmx5SGVscGVyczo6QWJzb2x1dGVBZGRyZXNzKGFycmF5UHJvZmlsZS0+YWRkcmVzc09m
QXJyYXlNb2RlcygpKSk7Ci0gICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgaml0LnBv
cChzY3JhdGNoMik7Ci0gICAgICAgICAgICAgICAgaml0LnBvcChzY3JhdGNoMSk7Ci0gICAgICAg
ICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgCi0gICAgICAgIGlmIChNZXRob2RPZkdldHRpbmdB
VmFsdWVQcm9maWxlIHByb2ZpbGUgPSBleGl0Lm1fdmFsdWVQcm9maWxlKSB7Ci0gICAgICAgICAg
ICBpZiAoZXhpdC5tX2pzVmFsdWVTb3VyY2UuaXNBZGRyZXNzKCkpIHsKLSAgICAgICAgICAgICAg
ICAvLyBTYXZlIGEgcmVnaXN0ZXIgc28gd2UgY2FuIHVzZSBpdC4KLSAgICAgICAgICAgICAgICBH
UFJSZWcgc2NyYXRjaFBheWxvYWQgPSBBc3NlbWJseUhlbHBlcnM6OnNlbGVjdFNjcmF0Y2hHUFIo
ZXhpdC5tX2pzVmFsdWVTb3VyY2UuYmFzZSgpKTsKLSAgICAgICAgICAgICAgICBHUFJSZWcgc2Ny
YXRjaFRhZyA9IEFzc2VtYmx5SGVscGVyczo6c2VsZWN0U2NyYXRjaEdQUihleGl0Lm1fanNWYWx1
ZVNvdXJjZS5iYXNlKCksIHNjcmF0Y2hQYXlsb2FkKTsKLSAgICAgICAgICAgICAgICBqaXQucHVz
aFRvU2F2ZShzY3JhdGNoUGF5bG9hZCk7Ci0gICAgICAgICAgICAgICAgaml0LnB1c2hUb1NhdmUo
c2NyYXRjaFRhZyk7Ci0KLSAgICAgICAgICAgICAgICBKU1ZhbHVlUmVncyBzY3JhdGNoKHNjcmF0
Y2hUYWcsIHNjcmF0Y2hQYXlsb2FkKTsKLSAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAg
ICBqaXQubG9hZFZhbHVlKGV4aXQubV9qc1ZhbHVlU291cmNlLmFzQWRkcmVzcygpLCBzY3JhdGNo
KTsKLSAgICAgICAgICAgICAgICBwcm9maWxlLmVtaXRSZXBvcnRWYWx1ZShqaXQsIHNjcmF0Y2gp
OwotICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgIGppdC5wb3BUb1Jlc3RvcmUoc2Ny
YXRjaFRhZyk7Ci0gICAgICAgICAgICAgICAgaml0LnBvcFRvUmVzdG9yZShzY3JhdGNoUGF5bG9h
ZCk7Ci0gICAgICAgICAgICB9IGVsc2UgaWYgKGV4aXQubV9qc1ZhbHVlU291cmNlLmhhc0tub3du
VGFnKCkpIHsKLSAgICAgICAgICAgICAgICBHUFJSZWcgc2NyYXRjaFRhZyA9IEFzc2VtYmx5SGVs
cGVyczo6c2VsZWN0U2NyYXRjaEdQUihleGl0Lm1fanNWYWx1ZVNvdXJjZS5wYXlsb2FkR1BSKCkp
OwotICAgICAgICAgICAgICAgIGppdC5wdXNoVG9TYXZlKHNjcmF0Y2hUYWcpOwotICAgICAgICAg
ICAgICAgIGppdC5tb3ZlKEFzc2VtYmx5SGVscGVyczo6VHJ1c3RlZEltbTMyKGV4aXQubV9qc1Zh
bHVlU291cmNlLnRhZygpKSwgc2NyYXRjaFRhZyk7Ci0gICAgICAgICAgICAgICAgSlNWYWx1ZVJl
Z3MgdmFsdWUoc2NyYXRjaFRhZywgZXhpdC5tX2pzVmFsdWVTb3VyY2UucGF5bG9hZEdQUigpKTsK
LSAgICAgICAgICAgICAgICBwcm9maWxlLmVtaXRSZXBvcnRWYWx1ZShqaXQsIHZhbHVlKTsKLSAg
ICAgICAgICAgICAgICBqaXQucG9wVG9SZXN0b3JlKHNjcmF0Y2hUYWcpOwotICAgICAgICAgICAg
fSBlbHNlCi0gICAgICAgICAgICAgICAgcHJvZmlsZS5lbWl0UmVwb3J0VmFsdWUoaml0LCBleGl0
Lm1fanNWYWx1ZVNvdXJjZS5yZWdzKCkpOwotICAgICAgICB9Ci0gICAgfQotICAgIAotICAgIC8v
IERvIGEgc2ltcGxpZmllZCBPU1IgZXhpdC4gU2VlIERGR09TUkV4aXRDb21waWxlcjY0LmNwcCdz
IGNvbW1lbnQgcmVnYXJkaW5nIGhvdyBhbmQgd255IHdlCi0gICAgLy8gZG8gdGhpcyBzaW1wbGUg
YXBwcm9hY2guCi0KLSAgICAvLyBTYXZlIGFsbCBzdGF0ZSBmcm9tIEdQUnMgaW50byB0aGUgc2Ny
YXRjaCBidWZmZXIuCi0gICAgCi0gICAgU2NyYXRjaEJ1ZmZlciogc2NyYXRjaEJ1ZmZlciA9IHZt
LnNjcmF0Y2hCdWZmZXJGb3JTaXplKHNpemVvZihFbmNvZGVkSlNWYWx1ZSkgKiBvcGVyYW5kcy5z
aXplKCkpOwotICAgIEVuY29kZWRKU1ZhbHVlKiBzY3JhdGNoID0gc2NyYXRjaEJ1ZmZlciA/IHN0
YXRpY19jYXN0PEVuY29kZWRKU1ZhbHVlKj4oc2NyYXRjaEJ1ZmZlci0+ZGF0YUJ1ZmZlcigpKSA6
IDA7Ci0gICAgCi0gICAgZm9yIChzaXplX3QgaW5kZXggPSAwOyBpbmRleCA8IG9wZXJhbmRzLnNp
emUoKTsgKytpbmRleCkgewotICAgICAgICBjb25zdCBWYWx1ZVJlY292ZXJ5JiByZWNvdmVyeSA9
IG9wZXJhbmRzW2luZGV4XTsKLSAgICAgICAgCi0gICAgICAgIHN3aXRjaCAocmVjb3ZlcnkudGVj
aG5pcXVlKCkpIHsKLSAgICAgICAgY2FzZSBVbmJveGVkSW50MzJJbkdQUjoKLSAgICAgICAgY2Fz
ZSBVbmJveGVkQm9vbGVhbkluR1BSOgotICAgICAgICBjYXNlIFVuYm94ZWRDZWxsSW5HUFI6Ci0g
ICAgICAgICAgICBqaXQuc3RvcmUzMigKLSAgICAgICAgICAgICAgICByZWNvdmVyeS5ncHIoKSwK
LSAgICAgICAgICAgICAgICAmYml0d2lzZV9jYXN0PEVuY29kZWRWYWx1ZURlc2NyaXB0b3IqPihz
Y3JhdGNoICsgaW5kZXgpLT5hc0JpdHMucGF5bG9hZCk7Ci0gICAgICAgICAgICBicmVhazsKLSAg
ICAgICAgICAgIAotICAgICAgICBjYXNlIEluUGFpcjoKLSAgICAgICAgICAgIGppdC5zdG9yZTMy
KAotICAgICAgICAgICAgICAgIHJlY292ZXJ5LnRhZ0dQUigpLAotICAgICAgICAgICAgICAgICZi
aXR3aXNlX2Nhc3Q8RW5jb2RlZFZhbHVlRGVzY3JpcHRvcio+KHNjcmF0Y2ggKyBpbmRleCktPmFz
Qml0cy50YWcpOwotICAgICAgICAgICAgaml0LnN0b3JlMzIoCi0gICAgICAgICAgICAgICAgcmVj
b3ZlcnkucGF5bG9hZEdQUigpLAotICAgICAgICAgICAgICAgICZiaXR3aXNlX2Nhc3Q8RW5jb2Rl
ZFZhbHVlRGVzY3JpcHRvcio+KHNjcmF0Y2ggKyBpbmRleCktPmFzQml0cy5wYXlsb2FkKTsKLSAg
ICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgCi0gICAgICAgIGRlZmF1bHQ6Ci0gICAgICAg
ICAgICBicmVhazsKLSAgICAgICAgfQotICAgIH0KLSAgICAKLSAgICAvLyBOb3cgYWxsIEdQUnMg
YXJlIGZyZWUgdG8gcmV1c2UuCi0gICAgCi0gICAgLy8gU2F2ZSBhbGwgc3RhdGUgZnJvbSBGUFJz
IGludG8gdGhlIHNjcmF0Y2ggYnVmZmVyLgotICAgIAotICAgIGZvciAoc2l6ZV90IGluZGV4ID0g
MDsgaW5kZXggPCBvcGVyYW5kcy5zaXplKCk7ICsraW5kZXgpIHsKLSAgICAgICAgY29uc3QgVmFs
dWVSZWNvdmVyeSYgcmVjb3ZlcnkgPSBvcGVyYW5kc1tpbmRleF07Ci0gICAgICAgIAotICAgICAg
ICBzd2l0Y2ggKHJlY292ZXJ5LnRlY2huaXF1ZSgpKSB7Ci0gICAgICAgIGNhc2UgVW5ib3hlZERv
dWJsZUluRlBSOgotICAgICAgICBjYXNlIEluRlBSOgotICAgICAgICAgICAgaml0Lm1vdmUoQXNz
ZW1ibHlIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKHNjcmF0Y2ggKyBpbmRleCksIEdQUkluZm86OnJl
Z1QwKTsKLSAgICAgICAgICAgIGppdC5zdG9yZURvdWJsZShyZWNvdmVyeS5mcHIoKSwgTWFjcm9B
c3NlbWJsZXI6OkFkZHJlc3MoR1BSSW5mbzo6cmVnVDApKTsKLSAgICAgICAgICAgIGJyZWFrOwot
ICAgICAgICAgICAgCi0gICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICBicmVhazsKLSAgICAg
ICAgfQotICAgIH0KLSAgICAKLSAgICAvLyBOb3cgYWxsIEZQUnMgYXJlIGZyZWUgdG8gcmV1c2Uu
Ci0gICAgCi0gICAgLy8gU2F2ZSBhbGwgc3RhdGUgZnJvbSB0aGUgc3RhY2sgaW50byB0aGUgc2Ny
YXRjaCBidWZmZXIuIEZvciBzaW1wbGljaXR5IHdlCi0gICAgLy8gZG8gdGhpcyBldmVuIGZvciBz
dGF0ZSB0aGF0J3MgYWxyZWFkeSBpbiB0aGUgcmlnaHQgcGxhY2Ugb24gdGhlIHN0YWNrLgotICAg
IC8vIEl0IG1ha2VzIHRoaW5ncyBzaW1wbGVyIGxhdGVyLgotICAgIAotICAgIGZvciAoc2l6ZV90
IGluZGV4ID0gMDsgaW5kZXggPCBvcGVyYW5kcy5zaXplKCk7ICsraW5kZXgpIHsKLSAgICAgICAg
Y29uc3QgVmFsdWVSZWNvdmVyeSYgcmVjb3ZlcnkgPSBvcGVyYW5kc1tpbmRleF07Ci0gICAgICAg
IAotICAgICAgICBzd2l0Y2ggKHJlY292ZXJ5LnRlY2huaXF1ZSgpKSB7Ci0gICAgICAgIGNhc2Ug
RGlzcGxhY2VkSW5KU1N0YWNrOgotICAgICAgICBjYXNlIEludDMyRGlzcGxhY2VkSW5KU1N0YWNr
OgotICAgICAgICBjYXNlIERvdWJsZURpc3BsYWNlZEluSlNTdGFjazoKLSAgICAgICAgY2FzZSBD
ZWxsRGlzcGxhY2VkSW5KU1N0YWNrOgotICAgICAgICBjYXNlIEJvb2xlYW5EaXNwbGFjZWRJbkpT
U3RhY2s6Ci0gICAgICAgICAgICBqaXQubG9hZDMyKAotICAgICAgICAgICAgICAgIEFzc2VtYmx5
SGVscGVyczo6dGFnRm9yKHJlY292ZXJ5LnZpcnR1YWxSZWdpc3RlcigpKSwKLSAgICAgICAgICAg
ICAgICBHUFJJbmZvOjpyZWdUMCk7Ci0gICAgICAgICAgICBqaXQubG9hZDMyKAotICAgICAgICAg
ICAgICAgIEFzc2VtYmx5SGVscGVyczo6cGF5bG9hZEZvcihyZWNvdmVyeS52aXJ0dWFsUmVnaXN0
ZXIoKSksCi0gICAgICAgICAgICAgICAgR1BSSW5mbzo6cmVnVDEpOwotICAgICAgICAgICAgaml0
LnN0b3JlMzIoCi0gICAgICAgICAgICAgICAgR1BSSW5mbzo6cmVnVDAsCi0gICAgICAgICAgICAg
ICAgJmJpdHdpc2VfY2FzdDxFbmNvZGVkVmFsdWVEZXNjcmlwdG9yKj4oc2NyYXRjaCArIGluZGV4
KS0+YXNCaXRzLnRhZyk7Ci0gICAgICAgICAgICBqaXQuc3RvcmUzMigKLSAgICAgICAgICAgICAg
ICBHUFJJbmZvOjpyZWdUMSwKLSAgICAgICAgICAgICAgICAmYml0d2lzZV9jYXN0PEVuY29kZWRW
YWx1ZURlc2NyaXB0b3IqPihzY3JhdGNoICsgaW5kZXgpLT5hc0JpdHMucGF5bG9hZCk7Ci0gICAg
ICAgICAgICBicmVhazsKLSAgICAgICAgICAgIAotICAgICAgICBkZWZhdWx0OgotICAgICAgICAg
ICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgCi0gICAgLy8gTmVlZCB0byBlbnN1cmUg
dGhhdCB0aGUgc3RhY2sgcG9pbnRlciBhY2NvdW50cyBmb3IgdGhlIHdvcnN0LWNhc2Ugc3RhY2sg
dXNhZ2UgYXQgZXhpdC4gVGhpcwotICAgIC8vIGNvdWxkIHRvYXN0IHNvbWUgc3RhY2sgdGhhdCB0
aGUgREZHIHVzZWQuIFdlIG5lZWQgdG8gZG8gaXQgYmVmb3JlIHN0b3JpbmcgdG8gc3RhY2sgb2Zm
c2V0cwotICAgIC8vIHVzZWQgYnkgYmFzZWxpbmUuCi0gICAgaml0LmFkZFB0cigKLSAgICAgICAg
Q0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoCi0gICAgICAgICAgICAtaml0LmNvZGVCbG9jaygp
LT5qaXRDb2RlKCktPmRmZ0NvbW1vbigpLT5yZXF1aXJlZFJlZ2lzdGVyQ291bnRGb3JFeGl0ICog
c2l6ZW9mKFJlZ2lzdGVyKSksCi0gICAgICAgIENDYWxsSGVscGVyczo6ZnJhbWVQb2ludGVyUmVn
aXN0ZXIsIENDYWxsSGVscGVyczo6c3RhY2tQb2ludGVyUmVnaXN0ZXIpOwotICAgIAotICAgIC8v
IFJlc3RvcmUgdGhlIERGRyBjYWxsZWUgc2F2ZXMgYW5kIHRoZW4gc2F2ZSB0aGUgb25lcyB0aGUg
YmFzZWxpbmUgSklUIHVzZXMuCi0gICAgaml0LmVtaXRSZXN0b3JlQ2FsbGVlU2F2ZXMoKTsKLSAg
ICBqaXQuZW1pdFNhdmVDYWxsZWVTYXZlc0ZvcihqaXQuYmFzZWxpbmVDb2RlQmxvY2soKSk7Ci0K
LSAgICBpZiAoZXhpdC5pc0V4Y2VwdGlvbkhhbmRsZXIoKSkKLSAgICAgICAgaml0LmNvcHlDYWxs
ZWVTYXZlc1RvVk1FbnRyeUZyYW1lQ2FsbGVlU2F2ZXNCdWZmZXIodm0pOwotCi0gICAgLy8gRG8g
YWxsIGRhdGEgZm9ybWF0IGNvbnZlcnNpb25zIGFuZCBzdG9yZSB0aGUgcmVzdWx0cyBpbnRvIHRo
ZSBzdGFjay4KLSAgICAKLSAgICBmb3IgKHNpemVfdCBpbmRleCA9IDA7IGluZGV4IDwgb3BlcmFu
ZHMuc2l6ZSgpOyArK2luZGV4KSB7Ci0gICAgICAgIGNvbnN0IFZhbHVlUmVjb3ZlcnkmIHJlY292
ZXJ5ID0gb3BlcmFuZHNbaW5kZXhdOwotICAgICAgICBWaXJ0dWFsUmVnaXN0ZXIgcmVnID0gb3Bl
cmFuZHMudmlydHVhbFJlZ2lzdGVyRm9ySW5kZXgoaW5kZXgpOwotCi0gICAgICAgIGlmIChyZWcu
aXNMb2NhbCgpICYmIHJlZy50b0xvY2FsKCkgPCBzdGF0aWNfY2FzdDxpbnQ+KGppdC5iYXNlbGlu
ZUNvZGVCbG9jaygpLT5jYWxsZWVTYXZlU3BhY2VBc1ZpcnR1YWxSZWdpc3RlcnMoKSkpCi0gICAg
ICAgICAgICBjb250aW51ZTsKLQotICAgICAgICBpbnQgb3BlcmFuZCA9IHJlZy5vZmZzZXQoKTsK
LQotICAgICAgICBzd2l0Y2ggKHJlY292ZXJ5LnRlY2huaXF1ZSgpKSB7Ci0gICAgICAgIGNhc2Ug
SW5QYWlyOgotICAgICAgICBjYXNlIERpc3BsYWNlZEluSlNTdGFjazoKLSAgICAgICAgY2FzZSBJ
bkZQUjoKLSAgICAgICAgICAgIGppdC5sb2FkMzIoCi0gICAgICAgICAgICAgICAgJmJpdHdpc2Vf
Y2FzdDxFbmNvZGVkVmFsdWVEZXNjcmlwdG9yKj4oc2NyYXRjaCArIGluZGV4KS0+YXNCaXRzLnRh
ZywKLSAgICAgICAgICAgICAgICBHUFJJbmZvOjpyZWdUMCk7Ci0gICAgICAgICAgICBqaXQubG9h
ZDMyKAotICAgICAgICAgICAgICAgICZiaXR3aXNlX2Nhc3Q8RW5jb2RlZFZhbHVlRGVzY3JpcHRv
cio+KHNjcmF0Y2ggKyBpbmRleCktPmFzQml0cy5wYXlsb2FkLAotICAgICAgICAgICAgICAgIEdQ
UkluZm86OnJlZ1QxKTsKLSAgICAgICAgICAgIGppdC5zdG9yZTMyKAotICAgICAgICAgICAgICAg
IEdQUkluZm86OnJlZ1QwLAotICAgICAgICAgICAgICAgIEFzc2VtYmx5SGVscGVyczo6dGFnRm9y
KG9wZXJhbmQpKTsKLSAgICAgICAgICAgIGppdC5zdG9yZTMyKAotICAgICAgICAgICAgICAgIEdQ
UkluZm86OnJlZ1QxLAotICAgICAgICAgICAgICAgIEFzc2VtYmx5SGVscGVyczo6cGF5bG9hZEZv
cihvcGVyYW5kKSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIAotICAgICAgICBj
YXNlIFVuYm94ZWREb3VibGVJbkZQUjoKLSAgICAgICAgY2FzZSBEb3VibGVEaXNwbGFjZWRJbkpT
U3RhY2s6Ci0gICAgICAgICAgICBqaXQubW92ZShBc3NlbWJseUhlbHBlcnM6OlRydXN0ZWRJbW1Q
dHIoc2NyYXRjaCArIGluZGV4KSwgR1BSSW5mbzo6cmVnVDApOwotICAgICAgICAgICAgaml0Lmxv
YWREb3VibGUoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoR1BSSW5mbzo6cmVnVDApLCBGUFJJbmZv
OjpmcFJlZ1QwKTsKLSAgICAgICAgICAgIGppdC5wdXJpZnlOYU4oRlBSSW5mbzo6ZnBSZWdUMCk7
Ci0gICAgICAgICAgICBqaXQuc3RvcmVEb3VibGUoRlBSSW5mbzo6ZnBSZWdUMCwgQXNzZW1ibHlI
ZWxwZXJzOjphZGRyZXNzRm9yKG9wZXJhbmQpKTsKLSAgICAgICAgICAgIGJyZWFrOwotCi0gICAg
ICAgIGNhc2UgVW5ib3hlZEludDMySW5HUFI6Ci0gICAgICAgIGNhc2UgSW50MzJEaXNwbGFjZWRJ
bkpTU3RhY2s6Ci0gICAgICAgICAgICBqaXQubG9hZDMyKAotICAgICAgICAgICAgICAgICZiaXR3
aXNlX2Nhc3Q8RW5jb2RlZFZhbHVlRGVzY3JpcHRvcio+KHNjcmF0Y2ggKyBpbmRleCktPmFzQml0
cy5wYXlsb2FkLAotICAgICAgICAgICAgICAgIEdQUkluZm86OnJlZ1QwKTsKLSAgICAgICAgICAg
IGppdC5zdG9yZTMyKAotICAgICAgICAgICAgICAgIEFzc2VtYmx5SGVscGVyczo6VHJ1c3RlZElt
bTMyKEpTVmFsdWU6OkludDMyVGFnKSwKLSAgICAgICAgICAgICAgICBBc3NlbWJseUhlbHBlcnM6
OnRhZ0ZvcihvcGVyYW5kKSk7Ci0gICAgICAgICAgICBqaXQuc3RvcmUzMigKLSAgICAgICAgICAg
ICAgICBHUFJJbmZvOjpyZWdUMCwKLSAgICAgICAgICAgICAgICBBc3NlbWJseUhlbHBlcnM6OnBh
eWxvYWRGb3Iob3BlcmFuZCkpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAKLSAg
ICAgICAgY2FzZSBVbmJveGVkQ2VsbEluR1BSOgotICAgICAgICBjYXNlIENlbGxEaXNwbGFjZWRJ
bkpTU3RhY2s6Ci0gICAgICAgICAgICBqaXQubG9hZDMyKAotICAgICAgICAgICAgICAgICZiaXR3
aXNlX2Nhc3Q8RW5jb2RlZFZhbHVlRGVzY3JpcHRvcio+KHNjcmF0Y2ggKyBpbmRleCktPmFzQml0
cy5wYXlsb2FkLAotICAgICAgICAgICAgICAgIEdQUkluZm86OnJlZ1QwKTsKLSAgICAgICAgICAg
IGppdC5zdG9yZTMyKAotICAgICAgICAgICAgICAgIEFzc2VtYmx5SGVscGVyczo6VHJ1c3RlZElt
bTMyKEpTVmFsdWU6OkNlbGxUYWcpLAotICAgICAgICAgICAgICAgIEFzc2VtYmx5SGVscGVyczo6
dGFnRm9yKG9wZXJhbmQpKTsKLSAgICAgICAgICAgIGppdC5zdG9yZTMyKAotICAgICAgICAgICAg
ICAgIEdQUkluZm86OnJlZ1QwLAotICAgICAgICAgICAgICAgIEFzc2VtYmx5SGVscGVyczo6cGF5
bG9hZEZvcihvcGVyYW5kKSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIAotICAg
ICAgICBjYXNlIFVuYm94ZWRCb29sZWFuSW5HUFI6Ci0gICAgICAgIGNhc2UgQm9vbGVhbkRpc3Bs
YWNlZEluSlNTdGFjazoKLSAgICAgICAgICAgIGppdC5sb2FkMzIoCi0gICAgICAgICAgICAgICAg
JmJpdHdpc2VfY2FzdDxFbmNvZGVkVmFsdWVEZXNjcmlwdG9yKj4oc2NyYXRjaCArIGluZGV4KS0+
YXNCaXRzLnBheWxvYWQsCi0gICAgICAgICAgICAgICAgR1BSSW5mbzo6cmVnVDApOwotICAgICAg
ICAgICAgaml0LnN0b3JlMzIoCi0gICAgICAgICAgICAgICAgQXNzZW1ibHlIZWxwZXJzOjpUcnVz
dGVkSW1tMzIoSlNWYWx1ZTo6Qm9vbGVhblRhZyksCi0gICAgICAgICAgICAgICAgQXNzZW1ibHlI
ZWxwZXJzOjp0YWdGb3Iob3BlcmFuZCkpOwotICAgICAgICAgICAgaml0LnN0b3JlMzIoCi0gICAg
ICAgICAgICAgICAgR1BSSW5mbzo6cmVnVDAsCi0gICAgICAgICAgICAgICAgQXNzZW1ibHlIZWxw
ZXJzOjpwYXlsb2FkRm9yKG9wZXJhbmQpKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAg
ICAgCi0gICAgICAgIGNhc2UgQ29uc3RhbnQ6Ci0gICAgICAgICAgICBqaXQuc3RvcmUzMigKLSAg
ICAgICAgICAgICAgICBBc3NlbWJseUhlbHBlcnM6OlRydXN0ZWRJbW0zMihyZWNvdmVyeS5jb25z
dGFudCgpLnRhZygpKSwKLSAgICAgICAgICAgICAgICBBc3NlbWJseUhlbHBlcnM6OnRhZ0Zvcihv
cGVyYW5kKSk7Ci0gICAgICAgICAgICBqaXQuc3RvcmUzMigKLSAgICAgICAgICAgICAgICBBc3Nl
bWJseUhlbHBlcnM6OlRydXN0ZWRJbW0zMihyZWNvdmVyeS5jb25zdGFudCgpLnBheWxvYWQoKSks
Ci0gICAgICAgICAgICAgICAgQXNzZW1ibHlIZWxwZXJzOjpwYXlsb2FkRm9yKG9wZXJhbmQpKTsK
LSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgCi0gICAgICAgIGNhc2UgRGlyZWN0QXJn
dW1lbnRzVGhhdFdlcmVOb3RDcmVhdGVkOgotICAgICAgICBjYXNlIENsb25lZEFyZ3VtZW50c1Ro
YXRXZXJlTm90Q3JlYXRlZDoKLSAgICAgICAgICAgIC8vIERvbid0IGRvIHRoaXMsIHlldC4KLSAg
ICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgCi0gICAgICAgIGRlZmF1bHQ6Ci0gICAgICAg
ICAgICBicmVhazsKLSAgICAgICAgfQotICAgIH0KLSAgICAKLSAgICAvLyBOb3cgdGhhdCB0aGlu
Z3Mgb24gdGhlIHN0YWNrIGFyZSByZWNvdmVyZWQsIGRvIHRoZSBhcmd1bWVudHMgcmVjb3Zlcnku
IFdlIGFzc3VtZSB0aGF0IGFyZ3VtZW50cwotICAgIC8vIHJlY292ZXJpZXMgZG9uJ3QgcmVjdXJz
aXZlbHkgcmVmZXIgdG8gZWFjaCBvdGhlci4gQnV0LCB3ZSBkb24ndCB0cnkgdG8gYXNzdW1lIHRo
YXQgdGhleSBvbmx5Ci0gICAgLy8gcmVmZXIgdG8gY2VydGFpbiByYW5nZXMgb2YgbG9jYWxzLiBI
ZW5jZSB3aHkgd2UgbmVlZCB0byBkbyB0aGlzIGhlcmUsIG9uY2UgdGhlIHN0YWNrIGlzIHNlbnNp
YmxlLgotICAgIC8vIE5vdGUgdGhhdCB3ZSBhbHNvIHJvdWdobHkgYXNzdW1lIHRoYXQgdGhlIGFy
Z3VtZW50cyBtaWdodCBzdGlsbCBiZSBtYXRlcmlhbGl6ZWQgb3V0c2lkZSBvZiBpdHMKLSAgICAv
LyBpbmxpbmUgY2FsbCBmcmFtZSBzY29wZSAtIGJ1dCBmb3Igbm93IHRoZSBERkcgd291bGRuJ3Qg
ZG8gdGhhdC4KLSAgICAKLSAgICBlbWl0UmVzdG9yZUFyZ3VtZW50cyhqaXQsIG9wZXJhbmRzKTsK
LQotICAgIC8vIEFkanVzdCB0aGUgb2xkIEpJVCdzIGV4ZWN1dGUgY291bnRlci4gU2luY2Ugd2Ug
YXJlIGV4aXRpbmcgT1NSLCB3ZSBrbm93Ci0gICAgLy8gdGhhdCBhbGwgbmV3IGNhbGxzIGludG8g
dGhpcyBjb2RlIHdpbGwgZ28gdG8gdGhlIG5ldyBKSVQsIHNvIHRoZSBleGVjdXRlCi0gICAgLy8g
Y291bnRlciBvbmx5IGFmZmVjdHMgY2FsbCBmcmFtZXMgdGhhdCBwZXJmb3JtZWQgT1NSIGV4aXQg
YW5kIGNhbGwgZnJhbWVzCi0gICAgLy8gdGhhdCB3ZXJlIHN0aWxsIGV4ZWN1dGluZyB0aGUgb2xk
IEpJVCBhdCB0aGUgdGltZSBvZiBhbm90aGVyIGNhbGwgZnJhbWUncwotICAgIC8vIE9TUiBleGl0
LiBXZSB3YW50IHRvIGVuc3VyZSB0aGF0IHRoZSBmb2xsb3dpbmcgaXMgdHJ1ZToKLSAgICAvLwot
ICAgIC8vIChhKSBDb2RlIHRoZSBwZXJmb3JtcyBhbiBPU1IgZXhpdCBnZXRzIGEgY2hhbmNlIHRv
IHJlZW50ZXIgb3B0aW1pemVkCi0gICAgLy8gICAgIGNvZGUgZXZlbnR1YWxseSwgc2luY2Ugb3B0
aW1pemVkIGNvZGUgaXMgZmFzdGVyLiBCdXQgd2UgZG9uJ3QKLSAgICAvLyAgICAgd2FudCB0byBk
byBzdWNoIHJlZW50ZXJ5IHRvbyBhZ2dyZXNzaXZlbHkgKHNlZSAoYykgYmVsb3cpLgotICAgIC8v
Ci0gICAgLy8gKGIpIElmIHRoZXJlIGlzIGNvZGUgb24gdGhlIGNhbGwgc3RhY2sgdGhhdCBpcyBz
dGlsbCBydW5uaW5nIHRoZSBvbGQKLSAgICAvLyAgICAgSklUJ3MgY29kZSBhbmQgaGFzIG5ldmVy
IE9TUidkLCB0aGVuIGl0IHNob3VsZCBnZXQgYSBjaGFuY2UgdG8KLSAgICAvLyAgICAgcGVyZm9y
bSBPU1IgZW50cnkgZGVzcGl0ZSB0aGUgZmFjdCB0aGF0IHdlJ3ZlIGV4aXRlZC4KLSAgICAvLwot
ICAgIC8vIChjKSBDb2RlIHRoZSBwZXJmb3JtcyBhbiBPU1IgZXhpdCBzaG91bGQgbm90IGltbWVk
aWF0ZWx5IHJldHJ5IE9TUgotICAgIC8vICAgICBlbnRyeSwgc2luY2UgYm90aCBmb3JtcyBvZiBP
U1IgYXJlIGV4cGVuc2l2ZS4gT1NSIGVudHJ5IGlzCi0gICAgLy8gICAgIHBhcnRpY3VsYXJseSBl
eHBlbnNpdmUuCi0gICAgLy8KLSAgICAvLyAoZCkgRnJlcXVlbnQgT1NSIGZhaWx1cmVzLCBldmVu
IHRob3NlIHRoYXQgZG8gbm90IHJlc3VsdCBpbiB0aGUgY29kZQotICAgIC8vICAgICBydW5uaW5n
IGluIGEgaG90IGxvb3AsIHJlc3VsdCBpbiByZWNvbXBpbGF0aW9uIGdldHRpbmcgdHJpZ2dlcmVk
LgotICAgIC8vCi0gICAgLy8gVG8gZW5zdXJlIChjKSwgd2UnZCBsaWtlIHRvIHNldCB0aGUgZXhl
Y3V0ZSBjb3VudGVyIHRvCi0gICAgLy8gY291bnRlclZhbHVlRm9yT3B0aW1pemVBZnRlcldhcm1V
cCgpLiBUaGlzIHNlZW1zIGxpa2UgaXQgd291bGQgZW5kYW5nZXIKLSAgICAvLyAoYSkgYW5kIChi
KSwgc2luY2UgdGhlbiBldmVyeSBPU1IgZXhpdCB3b3VsZCBkZWxheSB0aGUgb3Bwb3J0dW5pdHkg
Zm9yCi0gICAgLy8gZXZlcnkgY2FsbCBmcmFtZSB0byBwZXJmb3JtIE9TUiBlbnRyeS4gRXNzZW50
aWFsbHksIGlmIE9TUiBleGl0IGhhcHBlbnMKLSAgICAvLyBmcmVxdWVudGx5IGFuZCB0aGUgZnVu
Y3Rpb24gaGFzIGZldyBsb29wcywgdGhlbiB0aGUgY291bnRlciB3aWxsIG5ldmVyCi0gICAgLy8g
YmVjb21lIG5vbi1uZWdhdGl2ZSBhbmQgT1NSIGVudHJ5IHdpbGwgbmV2ZXIgYmUgdHJpZ2dlcmVk
LiBPU1IgZW50cnkKLSAgICAvLyB3aWxsIG9ubHkgaGFwcGVuIGlmIGEgbG9vcCBnZXRzIGhvdCBp
biB0aGUgb2xkIEpJVCwgd2hpY2ggZG9lcyBhIHByZXR0eQotICAgIC8vIGdvb2Qgam9iIG9mIGVu
c3VyaW5nIChhKSBhbmQgKGIpLiBCdXQgdGhhdCBkb2Vzbid0IHRha2UgY2FyZSBvZiAoZCksCi0g
ICAgLy8gc2luY2UgZWFjaCBzcGVjdWxhdGlvbiBmYWlsdXJlIHdvdWxkIHJlc2V0IHRoZSBleGVj
dXRlIGNvdW50ZXIuCi0gICAgLy8gU28gd2UgY2hlY2sgaGVyZSBpZiB0aGUgbnVtYmVyIG9mIHNw
ZWN1bGF0aW9uIGZhaWx1cmVzIGlzIHNpZ25pZmljYW50bHkKLSAgICAvLyBsYXJnZXIgdGhhbiB0
aGUgbnVtYmVyIG9mIHN1Y2Nlc3NlcyAod2Ugd2FudCA5MCUgc3VjY2VzcyByYXRlKSwgYW5kIGlm
Ci0gICAgLy8gdGhlcmUgaGF2ZSBiZWVuIGEgbGFyZ2UgZW5vdWdoIG51bWJlciBvZiBmYWlsdXJl
cy4gSWYgc28sIHdlIHNldCB0aGUKLSAgICAvLyBjb3VudGVyIHRvIDA7IG90aGVyd2lzZSB3ZSBz
ZXQgdGhlIGNvdW50ZXIgdG8KLSAgICAvLyBjb3VudGVyVmFsdWVGb3JPcHRpbWl6ZUFmdGVyV2Fy
bVVwKCkuCi0gICAgCi0gICAgaGFuZGxlRXhpdENvdW50cyhqaXQsIGV4aXQpOwotICAgIAotICAg
IC8vIFJlaWZ5IGlubGluZWQgY2FsbCBmcmFtZXMuCi0gICAgCi0gICAgcmVpZnlJbmxpbmVkQ2Fs
bEZyYW1lcyhqaXQsIGV4aXQpOwotICAgIAotICAgIC8vIEFuZCBmaW5pc2guCi0gICAgYWRqdXN0
QW5kSnVtcFRvVGFyZ2V0KHZtLCBqaXQsIGV4aXQpOwotfQotCi19IH0gLy8gbmFtZXNwYWNlIEpT
Qzo6REZHCi0KLSNlbmRpZiAvLyBFTkFCTEUoREZHX0pJVCkgJiYgVVNFKEpTVkFMVUUzMl82NCkK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0LmNwcAkocmV2aXNpb24g
MjIwMzA2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMjIzLDggKzIyMyw2IEBAIHZvaWQgSklUX09QRVJBVElPTiBPU1JFeGl0
Ojpjb21waWxlT1NSRXgKICAgICB2bS0+b3NyRXhpdEp1bXBEZXN0aW5hdGlvbiA9IGV4aXQubV9j
b2RlLmNvZGUoKS5leGVjdXRhYmxlQWRkcmVzcygpOwogfQogCi0jaWYgVVNFKEpTVkFMVUU2NCkK
LQogdm9pZCBPU1JFeGl0Ojpjb21waWxlRXhpdChDQ2FsbEhlbHBlcnMmIGppdCwgVk0mIHZtLCBj
b25zdCBPU1JFeGl0JiBleGl0LCBjb25zdCBPcGVyYW5kczxWYWx1ZVJlY292ZXJ5PiYgb3BlcmFu
ZHMsIFNwZWN1bGF0aW9uUmVjb3ZlcnkqIHJlY292ZXJ5KQogewogICAgIGppdC5qaXRBc3NlcnRU
YWdzSW5QbGFjZSgpOwpAQCAtMjQ2LDE2ICsyNDQsMjIgQEAgdm9pZCBPU1JFeGl0Ojpjb21waWxl
RXhpdChDQ2FsbEhlbHBlcnMmIAogICAgICAgICBzd2l0Y2ggKHJlY292ZXJ5LT50eXBlKCkpIHsK
ICAgICAgICAgY2FzZSBTcGVjdWxhdGl2ZUFkZDoKICAgICAgICAgICAgIGppdC5zdWIzMihyZWNv
dmVyeS0+c3JjKCksIHJlY292ZXJ5LT5kZXN0KCkpOworI2lmIFVTRShKU1ZBTFVFNjQpCiAgICAg
ICAgICAgICBqaXQub3I2NChHUFJJbmZvOjp0YWdUeXBlTnVtYmVyUmVnaXN0ZXIsIHJlY292ZXJ5
LT5kZXN0KCkpOworI2VuZGlmCiAgICAgICAgICAgICBicmVhazsKIAogICAgICAgICBjYXNlIFNw
ZWN1bGF0aXZlQWRkSW1tZWRpYXRlOgogICAgICAgICAgICAgaml0LnN1YjMyKEFzc2VtYmx5SGVs
cGVyczo6SW1tMzIocmVjb3ZlcnktPmltbWVkaWF0ZSgpKSwgcmVjb3ZlcnktPmRlc3QoKSk7Cisj
aWYgVVNFKEpTVkFMVUU2NCkKICAgICAgICAgICAgIGppdC5vcjY0KEdQUkluZm86OnRhZ1R5cGVO
dW1iZXJSZWdpc3RlciwgcmVjb3ZlcnktPmRlc3QoKSk7CisjZW5kaWYKICAgICAgICAgICAgIGJy
ZWFrOwogCiAgICAgICAgIGNhc2UgQm9vbGVhblNwZWN1bGF0aW9uQ2hlY2s6CisjaWYgVVNFKEpT
VkFMVUU2NCkKICAgICAgICAgICAgIGppdC54b3I2NChBc3NlbWJseUhlbHBlcnM6OlRydXN0ZWRJ
bW0zMihzdGF0aWNfY2FzdDxpbnQzMl90PihWYWx1ZUZhbHNlKSksIHJlY292ZXJ5LT5kZXN0KCkp
OworI2VuZGlmCiAgICAgICAgICAgICBicmVhazsKIAogICAgICAgICBkZWZhdWx0OgpAQCAtMjc4
LDE2ICsyODIsMzYgQEAgdm9pZCBPU1JFeGl0Ojpjb21waWxlRXhpdChDQ2FsbEhlbHBlcnMmIAog
CiAgICAgICAgICAgICBDb2RlT3JpZ2luIGNvZGVPcmlnaW4gPSBleGl0Lm1fY29kZU9yaWdpbkZv
ckV4aXRQcm9maWxlOwogICAgICAgICAgICAgaWYgKEFycmF5UHJvZmlsZSogYXJyYXlQcm9maWxl
ID0gaml0LmJhc2VsaW5lQ29kZUJsb2NrRm9yKGNvZGVPcmlnaW4pLT5nZXRBcnJheVByb2ZpbGUo
Y29kZU9yaWdpbi5ieXRlY29kZUluZGV4KSkgeworI2lmIFVTRShKU1ZBTFVFNjQpCiAgICAgICAg
ICAgICAgICAgR1BSUmVnIHVzZWRSZWdpc3RlcjsKICAgICAgICAgICAgICAgICBpZiAoZXhpdC5t
X2pzVmFsdWVTb3VyY2UuaXNBZGRyZXNzKCkpCiAgICAgICAgICAgICAgICAgICAgIHVzZWRSZWdp
c3RlciA9IGV4aXQubV9qc1ZhbHVlU291cmNlLmJhc2UoKTsKICAgICAgICAgICAgICAgICBlbHNl
CiAgICAgICAgICAgICAgICAgICAgIHVzZWRSZWdpc3RlciA9IGV4aXQubV9qc1ZhbHVlU291cmNl
LmdwcigpOworI2Vsc2UKKyAgICAgICAgICAgICAgICBHUFJSZWcgdXNlZFJlZ2lzdGVyMTsKKyAg
ICAgICAgICAgICAgICBHUFJSZWcgdXNlZFJlZ2lzdGVyMjsKKyAgICAgICAgICAgICAgICBpZiAo
ZXhpdC5tX2pzVmFsdWVTb3VyY2UuaXNBZGRyZXNzKCkpIHsKKyAgICAgICAgICAgICAgICAgICAg
dXNlZFJlZ2lzdGVyMSA9IGV4aXQubV9qc1ZhbHVlU291cmNlLmJhc2UoKTsKKyAgICAgICAgICAg
ICAgICAgICAgdXNlZFJlZ2lzdGVyMiA9IEludmFsaWRHUFJSZWc7CisgICAgICAgICAgICAgICAg
fSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgdXNlZFJlZ2lzdGVyMSA9IGV4aXQubV9qc1Zh
bHVlU291cmNlLnBheWxvYWRHUFIoKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGV4aXQubV9q
c1ZhbHVlU291cmNlLmhhc0tub3duVGFnKCkpCisgICAgICAgICAgICAgICAgICAgICAgICB1c2Vk
UmVnaXN0ZXIyID0gSW52YWxpZEdQUlJlZzsKKyAgICAgICAgICAgICAgICAgICAgZWxzZQorICAg
ICAgICAgICAgICAgICAgICAgICAgdXNlZFJlZ2lzdGVyMiA9IGV4aXQubV9qc1ZhbHVlU291cmNl
LnRhZ0dQUigpOworICAgICAgICAgICAgICAgIH0KKyNlbmRpZgogCiAgICAgICAgICAgICAgICAg
R1BSUmVnIHNjcmF0Y2gxOwogICAgICAgICAgICAgICAgIEdQUlJlZyBzY3JhdGNoMjsKKyNpZiBV
U0UoSlNWQUxVRTY0KQogICAgICAgICAgICAgICAgIHNjcmF0Y2gxID0gQXNzZW1ibHlIZWxwZXJz
OjpzZWxlY3RTY3JhdGNoR1BSKHVzZWRSZWdpc3Rlcik7CiAgICAgICAgICAgICAgICAgc2NyYXRj
aDIgPSBBc3NlbWJseUhlbHBlcnM6OnNlbGVjdFNjcmF0Y2hHUFIodXNlZFJlZ2lzdGVyLCBzY3Jh
dGNoMSk7CisjZWxzZQorICAgICAgICAgICAgICAgIHNjcmF0Y2gxID0gQXNzZW1ibHlIZWxwZXJz
OjpzZWxlY3RTY3JhdGNoR1BSKHVzZWRSZWdpc3RlcjEsIHVzZWRSZWdpc3RlcjIpOworICAgICAg
ICAgICAgICAgIHNjcmF0Y2gyID0gQXNzZW1ibHlIZWxwZXJzOjpzZWxlY3RTY3JhdGNoR1BSKHVz
ZWRSZWdpc3RlcjEsIHVzZWRSZWdpc3RlcjIsIHNjcmF0Y2gxKTsKKyNlbmRpZgogCiAgICAgICAg
ICAgICAgICAgaWYgKGlzQVJNNjQoKSkgewogICAgICAgICAgICAgICAgICAgICBqaXQucHVzaFRv
U2F2ZShzY3JhdGNoMSk7CkBAIC0zMDIsMTEgKzMyNiwxNSBAQCB2b2lkIE9TUkV4aXQ6OmNvbXBp
bGVFeGl0KENDYWxsSGVscGVycyYgCiAgICAgICAgICAgICAgICAgICAgIHZhbHVlID0gc2NyYXRj
aDE7CiAgICAgICAgICAgICAgICAgICAgIGppdC5sb2FkUHRyKEFzc2VtYmx5SGVscGVyczo6QWRk
cmVzcyhleGl0Lm1fanNWYWx1ZVNvdXJjZS5hc0FkZHJlc3MoKSksIHZhbHVlKTsKICAgICAgICAg
ICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSBleGl0Lm1fanNWYWx1
ZVNvdXJjZS5ncHIoKTsKKyAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSBleGl0Lm1fanNWYWx1
ZVNvdXJjZS5wYXlsb2FkR1BSKCk7CiAKICAgICAgICAgICAgICAgICBqaXQubG9hZDMyKEFzc2Vt
Ymx5SGVscGVyczo6QWRkcmVzcyh2YWx1ZSwgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSwg
c2NyYXRjaDEpOwogICAgICAgICAgICAgICAgIGppdC5zdG9yZTMyKHNjcmF0Y2gxLCBhcnJheVBy
b2ZpbGUtPmFkZHJlc3NPZkxhc3RTZWVuU3RydWN0dXJlSUQoKSk7CisjaWYgVVNFKEpTVkFMVUU2
NCkKICAgICAgICAgICAgICAgICBqaXQubG9hZDgoQXNzZW1ibHlIZWxwZXJzOjpBZGRyZXNzKHZh
bHVlLCBKU0NlbGw6OmluZGV4aW5nVHlwZUFuZE1pc2NPZmZzZXQoKSksIHNjcmF0Y2gxKTsKKyNl
bHNlCisgICAgICAgICAgICAgICAgaml0LmxvYWQ4KEFzc2VtYmx5SGVscGVyczo6QWRkcmVzcyhz
Y3JhdGNoMSwgU3RydWN0dXJlOjppbmRleGluZ1R5cGVJbmNsdWRpbmdIaXN0b3J5T2Zmc2V0KCkp
LCBzY3JhdGNoMSk7CisjZW5kaWYKICAgICAgICAgICAgICAgICBqaXQubW92ZShBc3NlbWJseUhl
bHBlcnM6OlRydXN0ZWRJbW0zMigxKSwgc2NyYXRjaDIpOwogICAgICAgICAgICAgICAgIGppdC5s
c2hpZnQzMihzY3JhdGNoMSwgc2NyYXRjaDIpOwogICAgICAgICAgICAgICAgIGppdC5vcjMyKHNj
cmF0Y2gyLCBBc3NlbWJseUhlbHBlcnM6OkFic29sdXRlQWRkcmVzcyhhcnJheVByb2ZpbGUtPmFk
ZHJlc3NPZkFycmF5TW9kZXMoKSkpOwpAQCAtMzIyLDYgKzM1MCw3IEBAIHZvaWQgT1NSRXhpdDo6
Y29tcGlsZUV4aXQoQ0NhbGxIZWxwZXJzJiAKICAgICAgICAgfQogCiAgICAgICAgIGlmIChNZXRo
b2RPZkdldHRpbmdBVmFsdWVQcm9maWxlIHByb2ZpbGUgPSBleGl0Lm1fdmFsdWVQcm9maWxlKSB7
CisjaWYgVVNFKEpTVkFMVUU2NCkKICAgICAgICAgICAgIGlmIChleGl0Lm1fanNWYWx1ZVNvdXJj
ZS5pc0FkZHJlc3MoKSkgewogICAgICAgICAgICAgICAgIC8vIFdlIGNhbid0IGJlIHN1cmUgdGhh
dCB3ZSBoYXZlIGEgc3BhcmUgcmVnaXN0ZXIuIFNvIHVzZSB0aGUgdGFnVHlwZU51bWJlclJlZ2lz
dGVyLAogICAgICAgICAgICAgICAgIC8vIHNpbmNlIHdlIGtub3cgaG93IHRvIHJlc3RvcmUgaXQu
CkBAIC0zMzAsNiArMzU5LDMxIEBAIHZvaWQgT1NSRXhpdDo6Y29tcGlsZUV4aXQoQ0NhbGxIZWxw
ZXJzJiAKICAgICAgICAgICAgICAgICBqaXQubW92ZShBc3NlbWJseUhlbHBlcnM6OlRydXN0ZWRJ
bW02NChUYWdUeXBlTnVtYmVyKSwgR1BSSW5mbzo6dGFnVHlwZU51bWJlclJlZ2lzdGVyKTsKICAg
ICAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgICAgIHByb2ZpbGUuZW1pdFJlcG9ydFZhbHVl
KGppdCwgSlNWYWx1ZVJlZ3MoZXhpdC5tX2pzVmFsdWVTb3VyY2UuZ3ByKCkpKTsKKyNlbHNlIC8v
IG5vdCBVU0UoSlNWQUxVRTY0KQorICAgICAgICAgICAgaWYgKGV4aXQubV9qc1ZhbHVlU291cmNl
LmlzQWRkcmVzcygpKSB7CisgICAgICAgICAgICAgICAgLy8gU2F2ZSBhIHJlZ2lzdGVyIHNvIHdl
IGNhbiB1c2UgaXQuCisgICAgICAgICAgICAgICAgR1BSUmVnIHNjcmF0Y2hQYXlsb2FkID0gQXNz
ZW1ibHlIZWxwZXJzOjpzZWxlY3RTY3JhdGNoR1BSKGV4aXQubV9qc1ZhbHVlU291cmNlLmJhc2Uo
KSk7CisgICAgICAgICAgICAgICAgR1BSUmVnIHNjcmF0Y2hUYWcgPSBBc3NlbWJseUhlbHBlcnM6
OnNlbGVjdFNjcmF0Y2hHUFIoZXhpdC5tX2pzVmFsdWVTb3VyY2UuYmFzZSgpLCBzY3JhdGNoUGF5
bG9hZCk7CisgICAgICAgICAgICAgICAgaml0LnB1c2hUb1NhdmUoc2NyYXRjaFBheWxvYWQpOwor
ICAgICAgICAgICAgICAgIGppdC5wdXNoVG9TYXZlKHNjcmF0Y2hUYWcpOworCisgICAgICAgICAg
ICAgICAgSlNWYWx1ZVJlZ3Mgc2NyYXRjaChzY3JhdGNoVGFnLCBzY3JhdGNoUGF5bG9hZCk7Cisg
ICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgaml0LmxvYWRWYWx1ZShleGl0Lm1fanNW
YWx1ZVNvdXJjZS5hc0FkZHJlc3MoKSwgc2NyYXRjaCk7CisgICAgICAgICAgICAgICAgcHJvZmls
ZS5lbWl0UmVwb3J0VmFsdWUoaml0LCBzY3JhdGNoKTsKKyAgICAgICAgICAgICAgICAKKyAgICAg
ICAgICAgICAgICBqaXQucG9wVG9SZXN0b3JlKHNjcmF0Y2hUYWcpOworICAgICAgICAgICAgICAg
IGppdC5wb3BUb1Jlc3RvcmUoc2NyYXRjaFBheWxvYWQpOworICAgICAgICAgICAgfSBlbHNlIGlm
IChleGl0Lm1fanNWYWx1ZVNvdXJjZS5oYXNLbm93blRhZygpKSB7CisgICAgICAgICAgICAgICAg
R1BSUmVnIHNjcmF0Y2hUYWcgPSBBc3NlbWJseUhlbHBlcnM6OnNlbGVjdFNjcmF0Y2hHUFIoZXhp
dC5tX2pzVmFsdWVTb3VyY2UucGF5bG9hZEdQUigpKTsKKyAgICAgICAgICAgICAgICBqaXQucHVz
aFRvU2F2ZShzY3JhdGNoVGFnKTsKKyAgICAgICAgICAgICAgICBqaXQubW92ZShBc3NlbWJseUhl
bHBlcnM6OlRydXN0ZWRJbW0zMihleGl0Lm1fanNWYWx1ZVNvdXJjZS50YWcoKSksIHNjcmF0Y2hU
YWcpOworICAgICAgICAgICAgICAgIEpTVmFsdWVSZWdzIHZhbHVlKHNjcmF0Y2hUYWcsIGV4aXQu
bV9qc1ZhbHVlU291cmNlLnBheWxvYWRHUFIoKSk7CisgICAgICAgICAgICAgICAgcHJvZmlsZS5l
bWl0UmVwb3J0VmFsdWUoaml0LCB2YWx1ZSk7CisgICAgICAgICAgICAgICAgaml0LnBvcFRvUmVz
dG9yZShzY3JhdGNoVGFnKTsKKyAgICAgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgICAgIHBy
b2ZpbGUuZW1pdFJlcG9ydFZhbHVlKGppdCwgZXhpdC5tX2pzVmFsdWVTb3VyY2UucmVncygpKTsK
KyNlbmRpZiAvLyBVU0UoSlNWQUxVRTY0KQogICAgICAgICB9CiAgICAgfQogCkBAIC0zNzgsMTMg
KzQzMiwzMCBAQCB2b2lkIE9TUkV4aXQ6OmNvbXBpbGVFeGl0KENDYWxsSGVscGVycyYgCiAgICAg
ICAgIGNvbnN0IFZhbHVlUmVjb3ZlcnkmIHJlY292ZXJ5ID0gb3BlcmFuZHNbaW5kZXhdOwogCiAg
ICAgICAgIHN3aXRjaCAocmVjb3ZlcnkudGVjaG5pcXVlKCkpIHsKLSAgICAgICAgY2FzZSBJbkdQ
UjoKICAgICAgICAgY2FzZSBVbmJveGVkSW50MzJJbkdQUjoKKyAgICAgICAgY2FzZSBVbmJveGVk
Q2VsbEluR1BSOgorI2lmIFVTRShKU1ZBTFVFNjQpCisgICAgICAgIGNhc2UgSW5HUFI6CiAgICAg
ICAgIGNhc2UgVW5ib3hlZEludDUySW5HUFI6CiAgICAgICAgIGNhc2UgVW5ib3hlZFN0cmljdElu
dDUySW5HUFI6Ci0gICAgICAgIGNhc2UgVW5ib3hlZENlbGxJbkdQUjoKICAgICAgICAgICAgIGpp
dC5zdG9yZTY0KHJlY292ZXJ5LmdwcigpLCBzY3JhdGNoICsgaW5kZXgpOwogICAgICAgICAgICAg
YnJlYWs7CisjZWxzZQorICAgICAgICBjYXNlIFVuYm94ZWRCb29sZWFuSW5HUFI6CisgICAgICAg
ICAgICBqaXQuc3RvcmUzMigKKyAgICAgICAgICAgICAgICByZWNvdmVyeS5ncHIoKSwKKyAgICAg
ICAgICAgICAgICAmYml0d2lzZV9jYXN0PEVuY29kZWRWYWx1ZURlc2NyaXB0b3IqPihzY3JhdGNo
ICsgaW5kZXgpLT5hc0JpdHMucGF5bG9hZCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
ICAgIAorICAgICAgICBjYXNlIEluUGFpcjoKKyAgICAgICAgICAgIGppdC5zdG9yZTMyKAorICAg
ICAgICAgICAgICAgIHJlY292ZXJ5LnRhZ0dQUigpLAorICAgICAgICAgICAgICAgICZiaXR3aXNl
X2Nhc3Q8RW5jb2RlZFZhbHVlRGVzY3JpcHRvcio+KHNjcmF0Y2ggKyBpbmRleCktPmFzQml0cy50
YWcpOworICAgICAgICAgICAgaml0LnN0b3JlMzIoCisgICAgICAgICAgICAgICAgcmVjb3Zlcnku
cGF5bG9hZEdQUigpLAorICAgICAgICAgICAgICAgICZiaXR3aXNlX2Nhc3Q8RW5jb2RlZFZhbHVl
RGVzY3JpcHRvcio+KHNjcmF0Y2ggKyBpbmRleCktPmFzQml0cy5wYXlsb2FkKTsKKyAgICAgICAg
ICAgIGJyZWFrOworI2VuZGlmCiAKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIGJyZWFr
OwpAQCAtNDIxLDE1ICs0OTIsMzEgQEAgdm9pZCBPU1JFeGl0Ojpjb21waWxlRXhpdChDQ2FsbEhl
bHBlcnMmIAogCiAgICAgICAgIHN3aXRjaCAocmVjb3ZlcnkudGVjaG5pcXVlKCkpIHsKICAgICAg
ICAgY2FzZSBEaXNwbGFjZWRJbkpTU3RhY2s6Ci0gICAgICAgIGNhc2UgQ2VsbERpc3BsYWNlZElu
SlNTdGFjazoKLSAgICAgICAgY2FzZSBCb29sZWFuRGlzcGxhY2VkSW5KU1N0YWNrOgogICAgICAg
ICBjYXNlIEludDMyRGlzcGxhY2VkSW5KU1N0YWNrOgogICAgICAgICBjYXNlIERvdWJsZURpc3Bs
YWNlZEluSlNTdGFjazoKKyAgICAgICAgY2FzZSBDZWxsRGlzcGxhY2VkSW5KU1N0YWNrOgorICAg
ICAgICBjYXNlIEJvb2xlYW5EaXNwbGFjZWRJbkpTU3RhY2s6CisjaWYgVVNFKEpTVkFMVUU2NCkK
ICAgICAgICAgY2FzZSBJbnQ1MkRpc3BsYWNlZEluSlNTdGFjazoKICAgICAgICAgY2FzZSBTdHJp
Y3RJbnQ1MkRpc3BsYWNlZEluSlNTdGFjazoKICAgICAgICAgICAgIGppdC5sb2FkNjQoQXNzZW1i
bHlIZWxwZXJzOjphZGRyZXNzRm9yKHJlY292ZXJ5LnZpcnR1YWxSZWdpc3RlcigpKSwgR1BSSW5m
bzo6cmVnVDApOwogICAgICAgICAgICAgaml0LnN0b3JlNjQoR1BSSW5mbzo6cmVnVDAsIHNjcmF0
Y2ggKyBpbmRleCk7CiAgICAgICAgICAgICBicmVhazsKKyNlbHNlCisgICAgICAgICAgICBqaXQu
bG9hZDMyKAorICAgICAgICAgICAgICAgIEFzc2VtYmx5SGVscGVyczo6dGFnRm9yKHJlY292ZXJ5
LnZpcnR1YWxSZWdpc3RlcigpKSwKKyAgICAgICAgICAgICAgICBHUFJJbmZvOjpyZWdUMCk7Cisg
ICAgICAgICAgICBqaXQubG9hZDMyKAorICAgICAgICAgICAgICAgIEFzc2VtYmx5SGVscGVyczo6
cGF5bG9hZEZvcihyZWNvdmVyeS52aXJ0dWFsUmVnaXN0ZXIoKSksCisgICAgICAgICAgICAgICAg
R1BSSW5mbzo6cmVnVDEpOworICAgICAgICAgICAgaml0LnN0b3JlMzIoCisgICAgICAgICAgICAg
ICAgR1BSSW5mbzo6cmVnVDAsCisgICAgICAgICAgICAgICAgJmJpdHdpc2VfY2FzdDxFbmNvZGVk
VmFsdWVEZXNjcmlwdG9yKj4oc2NyYXRjaCArIGluZGV4KS0+YXNCaXRzLnRhZyk7CisgICAgICAg
ICAgICBqaXQuc3RvcmUzMigKKyAgICAgICAgICAgICAgICBHUFJJbmZvOjpyZWdUMSwKKyAgICAg
ICAgICAgICAgICAmYml0d2lzZV9jYXN0PEVuY29kZWRWYWx1ZURlc2NyaXB0b3IqPihzY3JhdGNo
ICsgaW5kZXgpLT5hc0JpdHMucGF5bG9hZCk7CisgICAgICAgICAgICBicmVhazsKKyNlbmRpZgog
CiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICBicmVhazsKQEAgLTQ2NiwyNCArNTUzLDgw
IEBAIHZvaWQgT1NSRXhpdDo6Y29tcGlsZUV4aXQoQ0NhbGxIZWxwZXJzJiAKICAgICAgICAgaW50
IG9wZXJhbmQgPSByZWcub2Zmc2V0KCk7CiAKICAgICAgICAgc3dpdGNoIChyZWNvdmVyeS50ZWNo
bmlxdWUoKSkgeworICAgICAgICBjYXNlIERpc3BsYWNlZEluSlNTdGFjazoKKyAgICAgICAgY2Fz
ZSBJbkZQUjoKKyNpZiBVU0UoSlNWQUxVRTY0KQogICAgICAgICBjYXNlIEluR1BSOgogICAgICAg
ICBjYXNlIFVuYm94ZWRDZWxsSW5HUFI6Ci0gICAgICAgIGNhc2UgRGlzcGxhY2VkSW5KU1N0YWNr
OgogICAgICAgICBjYXNlIENlbGxEaXNwbGFjZWRJbkpTU3RhY2s6CiAgICAgICAgIGNhc2UgQm9v
bGVhbkRpc3BsYWNlZEluSlNTdGFjazoKLSAgICAgICAgY2FzZSBJbkZQUjoKICAgICAgICAgICAg
IGppdC5sb2FkNjQoc2NyYXRjaCArIGluZGV4LCBHUFJJbmZvOjpyZWdUMCk7CiAgICAgICAgICAg
ICBqaXQuc3RvcmU2NChHUFJJbmZvOjpyZWdUMCwgQXNzZW1ibHlIZWxwZXJzOjphZGRyZXNzRm9y
KG9wZXJhbmQpKTsKICAgICAgICAgICAgIGJyZWFrOworI2Vsc2UgLy8gbm90IFVTRShKU1ZBTFVF
NjQpCisgICAgICAgIGNhc2UgSW5QYWlyOgorICAgICAgICAgICAgaml0LmxvYWQzMigKKyAgICAg
ICAgICAgICAgICAmYml0d2lzZV9jYXN0PEVuY29kZWRWYWx1ZURlc2NyaXB0b3IqPihzY3JhdGNo
ICsgaW5kZXgpLT5hc0JpdHMudGFnLAorICAgICAgICAgICAgICAgIEdQUkluZm86OnJlZ1QwKTsK
KyAgICAgICAgICAgIGppdC5sb2FkMzIoCisgICAgICAgICAgICAgICAgJmJpdHdpc2VfY2FzdDxF
bmNvZGVkVmFsdWVEZXNjcmlwdG9yKj4oc2NyYXRjaCArIGluZGV4KS0+YXNCaXRzLnBheWxvYWQs
CisgICAgICAgICAgICAgICAgR1BSSW5mbzo6cmVnVDEpOworICAgICAgICAgICAgaml0LnN0b3Jl
MzIoCisgICAgICAgICAgICAgICAgR1BSSW5mbzo6cmVnVDAsCisgICAgICAgICAgICAgICAgQXNz
ZW1ibHlIZWxwZXJzOjp0YWdGb3Iob3BlcmFuZCkpOworICAgICAgICAgICAgaml0LnN0b3JlMzIo
CisgICAgICAgICAgICAgICAgR1BSSW5mbzo6cmVnVDEsCisgICAgICAgICAgICAgICAgQXNzZW1i
bHlIZWxwZXJzOjpwYXlsb2FkRm9yKG9wZXJhbmQpKTsKKyAgICAgICAgICAgIGJyZWFrOworCisg
ICAgICAgIGNhc2UgVW5ib3hlZENlbGxJbkdQUjoKKyAgICAgICAgY2FzZSBDZWxsRGlzcGxhY2Vk
SW5KU1N0YWNrOgorICAgICAgICAgICAgaml0LmxvYWQzMigKKyAgICAgICAgICAgICAgICAmYml0
d2lzZV9jYXN0PEVuY29kZWRWYWx1ZURlc2NyaXB0b3IqPihzY3JhdGNoICsgaW5kZXgpLT5hc0Jp
dHMucGF5bG9hZCwKKyAgICAgICAgICAgICAgICBHUFJJbmZvOjpyZWdUMCk7CisgICAgICAgICAg
ICBqaXQuc3RvcmUzMigKKyAgICAgICAgICAgICAgICBBc3NlbWJseUhlbHBlcnM6OlRydXN0ZWRJ
bW0zMihKU1ZhbHVlOjpDZWxsVGFnKSwKKyAgICAgICAgICAgICAgICBBc3NlbWJseUhlbHBlcnM6
OnRhZ0ZvcihvcGVyYW5kKSk7CisgICAgICAgICAgICBqaXQuc3RvcmUzMigKKyAgICAgICAgICAg
ICAgICBHUFJJbmZvOjpyZWdUMCwKKyAgICAgICAgICAgICAgICBBc3NlbWJseUhlbHBlcnM6OnBh
eWxvYWRGb3Iob3BlcmFuZCkpOworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBV
bmJveGVkQm9vbGVhbkluR1BSOgorICAgICAgICBjYXNlIEJvb2xlYW5EaXNwbGFjZWRJbkpTU3Rh
Y2s6CisgICAgICAgICAgICBqaXQubG9hZDMyKAorICAgICAgICAgICAgICAgICZiaXR3aXNlX2Nh
c3Q8RW5jb2RlZFZhbHVlRGVzY3JpcHRvcio+KHNjcmF0Y2ggKyBpbmRleCktPmFzQml0cy5wYXls
b2FkLAorICAgICAgICAgICAgICAgIEdQUkluZm86OnJlZ1QwKTsKKyAgICAgICAgICAgIGppdC5z
dG9yZTMyKAorICAgICAgICAgICAgICAgIEFzc2VtYmx5SGVscGVyczo6VHJ1c3RlZEltbTMyKEpT
VmFsdWU6OkJvb2xlYW5UYWcpLAorICAgICAgICAgICAgICAgIEFzc2VtYmx5SGVscGVyczo6dGFn
Rm9yKG9wZXJhbmQpKTsKKyAgICAgICAgICAgIGppdC5zdG9yZTMyKAorICAgICAgICAgICAgICAg
IEdQUkluZm86OnJlZ1QwLAorICAgICAgICAgICAgICAgIEFzc2VtYmx5SGVscGVyczo6cGF5bG9h
ZEZvcihvcGVyYW5kKSk7CisgICAgICAgICAgICBicmVhazsKKyNlbmRpZiAvLyBVU0UoSlNWQUxV
RTY0KQogCiAgICAgICAgIGNhc2UgVW5ib3hlZEludDMySW5HUFI6CiAgICAgICAgIGNhc2UgSW50
MzJEaXNwbGFjZWRJbkpTU3RhY2s6CisjaWYgVVNFKEpTVkFMVUU2NCkKICAgICAgICAgICAgIGpp
dC5sb2FkNjQoc2NyYXRjaCArIGluZGV4LCBHUFJJbmZvOjpyZWdUMCk7CiAgICAgICAgICAgICBq
aXQuemVyb0V4dGVuZDMyVG9QdHIoR1BSSW5mbzo6cmVnVDAsIEdQUkluZm86OnJlZ1QwKTsKICAg
ICAgICAgICAgIGppdC5vcjY0KEdQUkluZm86OnRhZ1R5cGVOdW1iZXJSZWdpc3RlciwgR1BSSW5m
bzo6cmVnVDApOwogICAgICAgICAgICAgaml0LnN0b3JlNjQoR1BSSW5mbzo6cmVnVDAsIEFzc2Vt
Ymx5SGVscGVyczo6YWRkcmVzc0ZvcihvcGVyYW5kKSk7CisjZWxzZQorICAgICAgICAgICAgaml0
LmxvYWQzMigKKyAgICAgICAgICAgICAgICAmYml0d2lzZV9jYXN0PEVuY29kZWRWYWx1ZURlc2Ny
aXB0b3IqPihzY3JhdGNoICsgaW5kZXgpLT5hc0JpdHMucGF5bG9hZCwKKyAgICAgICAgICAgICAg
ICBHUFJJbmZvOjpyZWdUMCk7CisgICAgICAgICAgICBqaXQuc3RvcmUzMigKKyAgICAgICAgICAg
ICAgICBBc3NlbWJseUhlbHBlcnM6OlRydXN0ZWRJbW0zMihKU1ZhbHVlOjpJbnQzMlRhZyksCisg
ICAgICAgICAgICAgICAgQXNzZW1ibHlIZWxwZXJzOjp0YWdGb3Iob3BlcmFuZCkpOworICAgICAg
ICAgICAgaml0LnN0b3JlMzIoCisgICAgICAgICAgICAgICAgR1BSSW5mbzo6cmVnVDAsCisgICAg
ICAgICAgICAgICAgQXNzZW1ibHlIZWxwZXJzOjpwYXlsb2FkRm9yKG9wZXJhbmQpKTsKKyNlbmRp
ZgogICAgICAgICAgICAgYnJlYWs7CiAKKyNpZiBVU0UoSlNWQUxVRTY0KQogICAgICAgICBjYXNl
IFVuYm94ZWRJbnQ1MkluR1BSOgogICAgICAgICBjYXNlIEludDUyRGlzcGxhY2VkSW5KU1N0YWNr
OgogICAgICAgICAgICAgaml0LmxvYWQ2NChzY3JhdGNoICsgaW5kZXgsIEdQUkluZm86OnJlZ1Qw
KTsKQEAgLTQ5OSwyMCArNjQyLDM0IEBAIHZvaWQgT1NSRXhpdDo6Y29tcGlsZUV4aXQoQ0NhbGxI
ZWxwZXJzJiAKICAgICAgICAgICAgIGppdC5ib3hJbnQ1MihHUFJJbmZvOjpyZWdUMCwgR1BSSW5m
bzo6cmVnVDAsIEdQUkluZm86OnJlZ1QxLCBGUFJJbmZvOjpmcFJlZ1QwKTsKICAgICAgICAgICAg
IGppdC5zdG9yZTY0KEdQUkluZm86OnJlZ1QwLCBBc3NlbWJseUhlbHBlcnM6OmFkZHJlc3NGb3Io
b3BlcmFuZCkpOwogICAgICAgICAgICAgYnJlYWs7CisjZW5kaWYKIAogICAgICAgICBjYXNlIFVu
Ym94ZWREb3VibGVJbkZQUjoKICAgICAgICAgY2FzZSBEb3VibGVEaXNwbGFjZWRJbkpTU3RhY2s6
CiAgICAgICAgICAgICBqaXQubW92ZShBc3NlbWJseUhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoc2Ny
YXRjaCArIGluZGV4KSwgR1BSSW5mbzo6cmVnVDApOwogICAgICAgICAgICAgaml0LmxvYWREb3Vi
bGUoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoR1BSSW5mbzo6cmVnVDApLCBGUFJJbmZvOjpmcFJl
Z1QwKTsKICAgICAgICAgICAgIGppdC5wdXJpZnlOYU4oRlBSSW5mbzo6ZnBSZWdUMCk7CisjaWYg
VVNFKEpTVkFMVUU2NCkKICAgICAgICAgICAgIGppdC5ib3hEb3VibGUoRlBSSW5mbzo6ZnBSZWdU
MCwgR1BSSW5mbzo6cmVnVDApOwogICAgICAgICAgICAgaml0LnN0b3JlNjQoR1BSSW5mbzo6cmVn
VDAsIEFzc2VtYmx5SGVscGVyczo6YWRkcmVzc0ZvcihvcGVyYW5kKSk7CisjZWxzZQorICAgICAg
ICAgICAgaml0LnN0b3JlRG91YmxlKEZQUkluZm86OmZwUmVnVDAsIEFzc2VtYmx5SGVscGVyczo6
YWRkcmVzc0ZvcihvcGVyYW5kKSk7CisjZW5kaWYKICAgICAgICAgICAgIGJyZWFrOwogCiAgICAg
ICAgIGNhc2UgQ29uc3RhbnQ6CisjaWYgVVNFKEpTVkFMVUU2NCkKICAgICAgICAgICAgIGppdC5z
dG9yZTY0KAogICAgICAgICAgICAgICAgIEFzc2VtYmx5SGVscGVyczo6VHJ1c3RlZEltbTY0KEpT
VmFsdWU6OmVuY29kZShyZWNvdmVyeS5jb25zdGFudCgpKSksCiAgICAgICAgICAgICAgICAgQXNz
ZW1ibHlIZWxwZXJzOjphZGRyZXNzRm9yKG9wZXJhbmQpKTsKKyNlbHNlCisgICAgICAgICAgICBq
aXQuc3RvcmUzMigKKyAgICAgICAgICAgICAgICBBc3NlbWJseUhlbHBlcnM6OlRydXN0ZWRJbW0z
MihyZWNvdmVyeS5jb25zdGFudCgpLnRhZygpKSwKKyAgICAgICAgICAgICAgICBBc3NlbWJseUhl
bHBlcnM6OnRhZ0ZvcihvcGVyYW5kKSk7CisgICAgICAgICAgICBqaXQuc3RvcmUzMigKKyAgICAg
ICAgICAgICAgICBBc3NlbWJseUhlbHBlcnM6OlRydXN0ZWRJbW0zMihyZWNvdmVyeS5jb25zdGFu
dCgpLnBheWxvYWQoKSksCisgICAgICAgICAgICAgICAgQXNzZW1ibHlIZWxwZXJzOjpwYXlsb2Fk
Rm9yKG9wZXJhbmQpKTsKKyNlbmRpZgogICAgICAgICAgICAgYnJlYWs7CiAKICAgICAgICAgY2Fz
ZSBEaXJlY3RBcmd1bWVudHNUaGF0V2VyZU5vdENyZWF0ZWQ6CkBAIC01MjEsNyArNjc4LDkgQEAg
dm9pZCBPU1JFeGl0Ojpjb21waWxlRXhpdChDQ2FsbEhlbHBlcnMmIAogICAgICAgICAgICAgYnJl
YWs7CiAKICAgICAgICAgZGVmYXVsdDoKKyNpZiBVU0UoSlNWQUxVRTY0KQogICAgICAgICAgICAg
UkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyNlbmRpZgogICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgIH0KICAgICB9CkBAIC01NzksNyArNzM4LDYgQEAgdm9pZCBPU1JFeGl0Ojpjb21w
aWxlRXhpdChDQ2FsbEhlbHBlcnMmIAogICAgIC8vIEFuZCBmaW5pc2guCiAgICAgYWRqdXN0QW5k
SnVtcFRvVGFyZ2V0KHZtLCBqaXQsIGV4aXQpOwogfQotI2VuZGlmIC8vIFVTRShKU1ZBTFVFNjQp
CiAKIHZvaWQgSklUX09QRVJBVElPTiBPU1JFeGl0OjpkZWJ1Z09wZXJhdGlvblByaW50U3BlY3Vs
YXRpb25GYWlsdXJlKEV4ZWNTdGF0ZSogZXhlYywgdm9pZCogZGVidWdJbmZvUmF3LCB2b2lkKiBz
Y3JhdGNoKQogewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9HUFJJbmZvLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9HUFJJbmZvLmgJKHJldmlzaW9u
IDIyMDMwNSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvR1BSSW5mby5oCSh3b3JraW5n
IGNvcHkpCkBAIC0xMzksNyArMTM5LDkgQEAgcHVibGljOgogICAgICAgICBBU1NFUlQoIWlzQWRk
cmVzcygpKTsKICAgICAgICAgcmV0dXJuIG1fYmFzZTsKICAgICB9Ci0gICAgCisKKyAgICBHUFJS
ZWcgcGF5bG9hZEdQUigpIGNvbnN0IHsgcmV0dXJuIGdwcigpOyB9CisKICAgICBKU1ZhbHVlUmVn
cyByZWdzKCkgY29uc3QKICAgICB7CiAgICAgICAgIHJldHVybiBKU1ZhbHVlUmVncyhncHIoKSk7
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>317328</attachid>
            <date>2017-08-04 22:14:14 -0700</date>
            <delta_ts>2017-08-05 01:01:21 -0700</delta_ts>
            <desc>proposed patch.</desc>
            <filename>bug-175228.patch</filename>
            <type>text/plain</type>
            <size>37445</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjIwMzA5KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIyIEBA
CisyMDE3LTA4LTA0ICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBN
b3ZlIERGRzo6T1NSRXhpdENvbXBpbGVyIG1ldGhvZHMgaW50byBERkc6Ok9TUkV4aXQgW3N0ZXAg
M10uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzUy
MjgKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzMzNzM1NzM3PgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1lcmdlIHRoZSAzMi1iaXQgT1NSRXhpdDo6
Y29tcGlsZUV4aXQoKSBtZXRob2QgaW50byB0aGUgNjQtYml0IHZlcnNpb24sIGFuZAorICAgICAg
ICBkZWxldGUgT1NSRXhpdDMyXzY0LmNwcC4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0Ogor
ICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAg
ICAgICogZGZnL0RGR09TUkV4aXQuY3BwOgorICAgICAgICAoSlNDOjpERkc6Ok9TUkV4aXQ6OmNv
bXBpbGVFeGl0KToKKyAgICAgICAgKiBkZmcvREZHT1NSRXhpdDMyXzY0LmNwcDogUmVtb3ZlZC4K
KyAgICAgICAgKiBqaXQvR1BSSW5mby5oOgorICAgICAgICAoSlNDOjpKU1ZhbHVlU291cmNlOjpw
YXlsb2FkR1BSIGNvbnN0KToKKwogMjAxNy0wOC0wNCAgTWFyayBMYW0gIDxtYXJrLmxhbUBhcHBs
ZS5jb20+CiAKICAgICAgICAgRml4IHR5cG8gaW4gdGVzdG1hc20uY3BwOiBFTkFCTEUoSlNWQUxV
RTY0KSBzaG91bGQgYmUgVVNFKEpTVkFMVUU2NCkuCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ01ha2VMaXN0cy50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0NN
YWtlTGlzdHMudHh0CShyZXZpc2lvbiAyMjAzMDYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Q01ha2VMaXN0cy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTM3Niw3ICszNzYsNiBAQCBzZXQoSmF2
YVNjcmlwdENvcmVfU09VUkNFUwogICAgIGRmZy9ERkdPU1JFbnRyeS5jcHAKICAgICBkZmcvREZH
T1NSRW50cnlwb2ludENyZWF0aW9uUGhhc2UuY3BwCiAgICAgZGZnL0RGR09TUkV4aXQuY3BwCi0g
ICAgZGZnL0RGR09TUkV4aXQzMl82NC5jcHAKICAgICBkZmcvREZHT1NSRXhpdEJhc2UuY3BwCiAg
ICAgZGZnL0RGR09TUkV4aXRDb21waWxlckNvbW1vbi5jcHAKICAgICBkZmcvREZHT1NSRXhpdEZ1
enouY3BwCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
SmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMjIwMzA2
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTc0NCw3ICs3NDQsNiBAQAogCQkwRkJGMTU4
QzE5QjdBNTMxMDA2OTVERDAgLyogREZHQmxvY2tTZXQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZCRjE1OEExOUI3QTUzMTAwNjk1REQwIC8qIERG
R0Jsb2NrU2V0LmNwcCAqLzsgfTsKIAkJMEZCRjE1OEQxOUI3QTUzMTAwNjk1REQwIC8qIERGR0Js
b2NrU2V0SW5saW5lcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMEZCRjE1OEIxOUI3QTUzMTAwNjk1REQwIC8qIERGR0Jsb2NrU2V0SW5saW5lcy5oICov
OyB9OwogCQkwRkMwOTc2QTE0NjhBNkY3MDBDRjI0NDIgLyogREZHT1NSRXhpdC5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZDMDk3NjgxNDY4QTZFRjAw
Q0YyNDQyIC8qIERGR09TUkV4aXQuaCAqLzsgfTsKLQkJMEZDMDk3NzYxNDY5NDNCMDAwQ0YyNDQy
IC8qIERGR09TUkV4aXQzMl82NC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAwRkMwOTc3NTE0Njk0M0FEMDBDRjI0NDIgLyogREZHT1NSRXhpdDMyXzY0
LmNwcCAqLzsgfTsKIAkJMEZDMDk3OTExNDZBNkY3MTAwQ0YyNDQyIC8qIERGR09TUkV4aXQuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZDMDk3OEUx
NDZBNkY2MzAwQ0YyNDQyIC8qIERGR09TUkV4aXQuY3BwICovOyB9OwogCQkwRkMwOTdBMTE0NkIy
OENBMDBDRjI0NDIgLyogREZHVGh1bmtzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDBGQzA5NzlGMTQ2QjI4QzcwMENGMjQ0MiAvKiBERkdUaHVua3Mu
Y3BwICovOyB9OwogCQkwRkMwOTdBMjE0NkIyOENDMDBDRjI0NDIgLyogREZHVGh1bmtzLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkMwOTdBMDE0NkIy
OEM3MDBDRjI0NDIgLyogREZHVGh1bmtzLmggKi87IH07CkBAIC0zMzM5LDcgKzMzMzgsNiBAQAog
CQkwRkJGMTU4QTE5QjdBNTMxMDA2OTVERDAgLyogREZHQmxvY2tTZXQuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gREZHQmxvY2tTZXQuY3BwOyBwYXRoID0gZGZnL0RG
R0Jsb2NrU2V0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEZCRjE1OEIxOUI3
QTUzMTAwNjk1REQwIC8qIERGR0Jsb2NrU2V0SW5saW5lcy5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IG5hbWUgPSBERkdCbG9ja1NldElubGluZXMuaDsgcGF0aCA9IGRmZy9ERkdCbG9ja1Nl
dElubGluZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEZDMDk3NjgxNDY4QTZF
RjAwQ0YyNDQyIC8qIERGR09TUkV4aXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1l
ID0gREZHT1NSRXhpdC5oOyBwYXRoID0gZGZnL0RGR09TUkV4aXQuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKLQkJMEZDMDk3NzUxNDY5NDNBRDAwQ0YyNDQyIC8qIERGR09TUkV4aXQzMl82
NC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBERkdPU1JFeGl0MzJf
NjQuY3BwOyBwYXRoID0gZGZnL0RGR09TUkV4aXQzMl82NC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTBGQzA5NzdFMTQ2OUVCQzQwMENGMjQ0MiAvKiBERkdDb21tb24uaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gREZHQ29tbW9uLmg7IHBhdGggPSBkZmcvREZH
Q29tbW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGQzA5NzhFMTQ2QTZGNjMw
MENGMjQ0MiAvKiBERkdPU1JFeGl0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
bmFtZSA9IERGR09TUkV4aXQuY3BwOyBwYXRoID0gZGZnL0RGR09TUkV4aXQuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQkwRkMwOTc5RjE0NkIyOEM3MDBDRjI0NDIgLyogREZHVGh1
bmtzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IERGR1RodW5rcy5j
cHA7IHBhdGggPSBkZmcvREZHVGh1bmtzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
QEAgLTc0NjcsNyArNzQ2NSw2IEBACiAJCQkJMEZEOEEzMUUxN0Q1MUY1NzAwQ0EyQzQwIC8qIERG
R09TUkVudHJ5cG9pbnRDcmVhdGlvblBoYXNlLmggKi8sCiAJCQkJMEZDMDk3OEUxNDZBNkY2MzAw
Q0YyNDQyIC8qIERGR09TUkV4aXQuY3BwICovLAogCQkJCTBGQzA5NzY4MTQ2OEE2RUYwMENGMjQ0
MiAvKiBERkdPU1JFeGl0LmggKi8sCi0JCQkJMEZDMDk3NzUxNDY5NDNBRDAwQ0YyNDQyIC8qIERG
R09TUkV4aXQzMl82NC5jcHAgKi8sCiAJCQkJMEYyMzVCRTcxNzE3OEU3MzAwNjkwQzdGIC8qIERG
R09TUkV4aXRCYXNlLmNwcCAqLywKIAkJCQkwRjIzNUJFODE3MTc4RTczMDA2OTBDN0YgLyogREZH
T1NSRXhpdEJhc2UuaCAqLywKIAkJCQk2NTk4N0YyQzE2N0ZFODRCMDAzQzJGOEQgLyogREZHT1NS
RXhpdENvbXBpbGF0aW9uSW5mby5oICovLApAQCAtMTA0NzQsNyArMTA0NzEsNiBAQAogCQkJCTBG
RDhBMzI1MTdENTFGNTcwMENBMkM0MCAvKiBERkdPU1JFbnRyeXBvaW50Q3JlYXRpb25QaGFzZS5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQkwRkMwOTc5MTE0NkE2RjcxMDBDRjI0NDIgLyogREZHT1NS
RXhpdC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjIzNUJFQjE3MTc4RTczMDA2OTBDN0YgLyog
REZHT1NSRXhpdEJhc2UuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJMEZDMDk3NzYxNDY5NDNCMDAw
Q0YyNDQyIC8qIERGR09TUkV4aXQzMl82NC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjcwMjVB
OTE3MTRCMEZBMDAzODJDMEUgLyogREZHT1NSRXhpdENvbXBpbGVyQ29tbW9uLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTBGMzkyQzg5MUI0NjE4ODQwMDg0NDcyOCAvKiBERkdPU1JFeGl0RnV6ei5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQkwRkVGQzlBQTE2ODFBM0IzMDA1NjdGNTMgLyogREZHT1NS
RXhpdEp1bXBQbGFjZWhvbGRlci5jcHAgaW4gU291cmNlcyAqLywKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdDMyXzY0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXQzMl82NC5jcHAJKHJldmlzaW9uIDIyMDMwNikK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdDMyXzY0LmNwcAkobm9uZXhp
c3RlbnQpCkBAIC0xLDQxMSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDExLTIwMTcg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAot
ICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4gCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkRGR09T
UkV4aXQuaCIKLQotI2lmIEVOQUJMRShERkdfSklUKSAmJiBVU0UoSlNWQUxVRTMyXzY0KQotCi0j
aW5jbHVkZSAiREZHT1NSRXhpdENvbXBpbGVyQ29tbW9uLmgiCi0jaW5jbHVkZSAiREZHT3BlcmF0
aW9ucy5oIgotI2luY2x1ZGUgIkRGR1NwZWN1bGF0aXZlSklULmgiCi0jaW5jbHVkZSAiSlNDSW5s
aW5lcy5oIgotI2luY2x1ZGUgPHd0Zi9EYXRhTG9nLmg+Ci0KLW5hbWVzcGFjZSBKU0MgeyBuYW1l
c3BhY2UgREZHIHsKLQotdm9pZCBPU1JFeGl0Ojpjb21waWxlRXhpdChDQ2FsbEhlbHBlcnMmIGpp
dCwgVk0mIHZtLCBjb25zdCBPU1JFeGl0JiBleGl0LCBjb25zdCBPcGVyYW5kczxWYWx1ZVJlY292
ZXJ5PiYgb3BlcmFuZHMsIFNwZWN1bGF0aW9uUmVjb3ZlcnkqIHJlY292ZXJ5KQotewotICAgIC8v
IFByby1mb3JtYSBzdHVmZi4KLSAgICBpZiAoT3B0aW9uczo6cHJpbnRFYWNoT1NSRXhpdCgpKSB7
Ci0gICAgICAgIFNwZWN1bGF0aW9uRmFpbHVyZURlYnVnSW5mbyogZGVidWdJbmZvID0gbmV3IFNw
ZWN1bGF0aW9uRmFpbHVyZURlYnVnSW5mbzsKLSAgICAgICAgZGVidWdJbmZvLT5jb2RlQmxvY2sg
PSBqaXQuY29kZUJsb2NrKCk7Ci0gICAgICAgIGRlYnVnSW5mby0+a2luZCA9IGV4aXQubV9raW5k
OwotICAgICAgICBkZWJ1Z0luZm8tPmJ5dGVjb2RlT2Zmc2V0ID0gZXhpdC5tX2NvZGVPcmlnaW4u
Ynl0ZWNvZGVJbmRleDsKLSAgICAgICAgCi0gICAgICAgIGppdC5kZWJ1Z0NhbGwodm0sIGRlYnVn
T3BlcmF0aW9uUHJpbnRTcGVjdWxhdGlvbkZhaWx1cmUsIGRlYnVnSW5mbyk7Ci0gICAgfQotCi0g
ICAgLy8gUGVyZm9ybSBzcGVjdWxhdGlvbiByZWNvdmVyeS4gVGhpcyBvbmx5IGNvbWVzIGludG8g
cGxheSB3aGVuIGFuIG9wZXJhdGlvbgotICAgIC8vIHN0YXJ0cyBtdXRhdGluZyBzdGF0ZSBiZWZv
cmUgdmVyaWZ5aW5nIHRoZSBzcGVjdWxhdGlvbiBpdCBoYXMgYWxyZWFkeSBtYWRlLgotICAgIAot
ICAgIGlmIChyZWNvdmVyeSkgewotICAgICAgICBzd2l0Y2ggKHJlY292ZXJ5LT50eXBlKCkpIHsK
LSAgICAgICAgY2FzZSBTcGVjdWxhdGl2ZUFkZDoKLSAgICAgICAgICAgIGppdC5zdWIzMihyZWNv
dmVyeS0+c3JjKCksIHJlY292ZXJ5LT5kZXN0KCkpOwotICAgICAgICAgICAgYnJlYWs7Ci0KLSAg
ICAgICAgY2FzZSBTcGVjdWxhdGl2ZUFkZEltbWVkaWF0ZToKLSAgICAgICAgICAgIGppdC5zdWIz
MihBc3NlbWJseUhlbHBlcnM6OkltbTMyKHJlY292ZXJ5LT5pbW1lZGlhdGUoKSksIHJlY292ZXJ5
LT5kZXN0KCkpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAKLSAgICAgICAgY2Fz
ZSBCb29sZWFuU3BlY3VsYXRpb25DaGVjazoKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAg
ICAgCi0gICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAg
IH0KLQotICAgIC8vIFJlZmluZSBzb21lIHZhbHVlIHByb2ZpbGUsIGlmIGFwcHJvcHJpYXRlLgot
ICAgIAotICAgIGlmICghIWV4aXQubV9qc1ZhbHVlU291cmNlKSB7Ci0gICAgICAgIGlmIChleGl0
Lm1fa2luZCA9PSBCYWRDYWNoZSB8fCBleGl0Lm1fa2luZCA9PSBCYWRJbmRleGluZ1R5cGUpIHsK
LSAgICAgICAgICAgIC8vIElmIHRoZSBpbnN0cnVjdGlvbiB0aGF0IHRoaXMgb3JpZ2luYXRlZCBm
cm9tIGhhcyBhbiBhcnJheSBwcm9maWxlLCB0aGVuCi0gICAgICAgICAgICAvLyByZWZpbmUgaXQu
IElmIGl0IGRvZXNuJ3QsIHRoZW4gZG8gbm90aGluZy4gVGhlIGxhdHRlciBjb3VsZCBoYXBwZW4g
Zm9yCi0gICAgICAgICAgICAvLyBob2lzdGVkIGNoZWNrcywgb3IgY2hlY2tzIGVtaXR0ZWQgZm9y
IG9wZXJhdGlvbnMgdGhhdCBkaWRuJ3QgaGF2ZSBhcnJheQotICAgICAgICAgICAgLy8gcHJvZmls
aW5nIC0gZWl0aGVyIG9wcyB0aGF0IGFyZW4ndCBhcnJheSBhY2Nlc3NlcyBhdCBhbGwsIG9yIHdl
cmVuJ3QKLSAgICAgICAgICAgIC8vIGtub3duIHRvIGJlIGFycmF5IGFjY2VzZXMgaW4gdGhlIGJ5
dGVjb2RlLiBUaGUgbGF0dGVyIGNhc2UgaXMgYSBGSVhNRQotICAgICAgICAgICAgLy8gd2hpbGUg
dGhlIGZvcm1lciBjYXNlIGlzIGFuIG91dGNvbWUgb2YgYSBDaGVja1N0cnVjdHVyZSBub3Qga25v
d2luZyB3aHkKLSAgICAgICAgICAgIC8vIGl0IHdhcyBlbWl0dGVkIChjb3VsZCBiZSBlaXRoZXIg
ZHVlIHRvIGFuIGlubGluZSBjYWNoZSBvZiBhIHByb3BlcnR5Ci0gICAgICAgICAgICAvLyBwcm9w
ZXJ0eSBhY2Nlc3MsIG9yIGR1ZSB0byBhbiBhcnJheSBwcm9maWxlKS4KLSAgICAgICAgICAgIAot
ICAgICAgICAgICAgLy8gTm90ZTogV2UgYXJlIGZyZWUgdG8gYXNzdW1lIHRoYXQgdGhlIGpzVmFs
dWVTb3VyY2UgaXMgYWxyZWFkeSBrbm93biB0bwotICAgICAgICAgICAgLy8gYmUgYSBjZWxsIHNp
bmNlIGJvdGggQmFkQ2FjaGUgYW5kIEJhZEluZGV4aW5nVHlwZSBleGl0cyBvY2N1ciBhZnRlcgot
ICAgICAgICAgICAgLy8gdGhlIGNlbGwgY2hlY2sgd291bGQgaGF2ZSBhbHJlYWR5IGhhcHBlbmVk
LgotICAgICAgICAgICAgCi0gICAgICAgICAgICBDb2RlT3JpZ2luIGNvZGVPcmlnaW4gPSBleGl0
Lm1fY29kZU9yaWdpbkZvckV4aXRQcm9maWxlOwotICAgICAgICAgICAgaWYgKEFycmF5UHJvZmls
ZSogYXJyYXlQcm9maWxlID0gaml0LmJhc2VsaW5lQ29kZUJsb2NrRm9yKGNvZGVPcmlnaW4pLT5n
ZXRBcnJheVByb2ZpbGUoY29kZU9yaWdpbi5ieXRlY29kZUluZGV4KSkgewotICAgICAgICAgICAg
ICAgIEdQUlJlZyB1c2VkUmVnaXN0ZXIxOwotICAgICAgICAgICAgICAgIEdQUlJlZyB1c2VkUmVn
aXN0ZXIyOwotICAgICAgICAgICAgICAgIGlmIChleGl0Lm1fanNWYWx1ZVNvdXJjZS5pc0FkZHJl
c3MoKSkgewotICAgICAgICAgICAgICAgICAgICB1c2VkUmVnaXN0ZXIxID0gZXhpdC5tX2pzVmFs
dWVTb3VyY2UuYmFzZSgpOwotICAgICAgICAgICAgICAgICAgICB1c2VkUmVnaXN0ZXIyID0gSW52
YWxpZEdQUlJlZzsKLSAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAg
ICB1c2VkUmVnaXN0ZXIxID0gZXhpdC5tX2pzVmFsdWVTb3VyY2UucGF5bG9hZEdQUigpOwotICAg
ICAgICAgICAgICAgICAgICBpZiAoZXhpdC5tX2pzVmFsdWVTb3VyY2UuaGFzS25vd25UYWcoKSkK
LSAgICAgICAgICAgICAgICAgICAgICAgIHVzZWRSZWdpc3RlcjIgPSBJbnZhbGlkR1BSUmVnOwot
ICAgICAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgICAgICB1c2VkUmVn
aXN0ZXIyID0gZXhpdC5tX2pzVmFsdWVTb3VyY2UudGFnR1BSKCk7Ci0gICAgICAgICAgICAgICAg
fQotICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgIEdQUlJlZyBzY3JhdGNoMTsKLSAg
ICAgICAgICAgICAgICBHUFJSZWcgc2NyYXRjaDI7Ci0gICAgICAgICAgICAgICAgc2NyYXRjaDEg
PSBBc3NlbWJseUhlbHBlcnM6OnNlbGVjdFNjcmF0Y2hHUFIodXNlZFJlZ2lzdGVyMSwgdXNlZFJl
Z2lzdGVyMik7Ci0gICAgICAgICAgICAgICAgc2NyYXRjaDIgPSBBc3NlbWJseUhlbHBlcnM6OnNl
bGVjdFNjcmF0Y2hHUFIodXNlZFJlZ2lzdGVyMSwgdXNlZFJlZ2lzdGVyMiwgc2NyYXRjaDEpOwot
ICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgIGppdC5wdXNoKHNjcmF0Y2gxKTsKLSAg
ICAgICAgICAgICAgICBqaXQucHVzaChzY3JhdGNoMik7Ci0gICAgICAgICAgICAgICAgCi0gICAg
ICAgICAgICAgICAgR1BSUmVnIHZhbHVlOwotICAgICAgICAgICAgICAgIGlmIChleGl0Lm1fanNW
YWx1ZVNvdXJjZS5pc0FkZHJlc3MoKSkgewotICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IHNj
cmF0Y2gxOwotICAgICAgICAgICAgICAgICAgICBqaXQubG9hZFB0cihBc3NlbWJseUhlbHBlcnM6
OkFkZHJlc3MoZXhpdC5tX2pzVmFsdWVTb3VyY2UuYXNBZGRyZXNzKCkpLCB2YWx1ZSk7Ci0gICAg
ICAgICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICAgICAgICAgIHZhbHVlID0gZXhpdC5tX2pz
VmFsdWVTb3VyY2UucGF5bG9hZEdQUigpOwotICAgICAgICAgICAgICAgIAotICAgICAgICAgICAg
ICAgIGppdC5sb2FkUHRyKEFzc2VtYmx5SGVscGVyczo6QWRkcmVzcyh2YWx1ZSwgSlNDZWxsOjpz
dHJ1Y3R1cmVJRE9mZnNldCgpKSwgc2NyYXRjaDEpOwotICAgICAgICAgICAgICAgIGppdC5zdG9y
ZVB0cihzY3JhdGNoMSwgYXJyYXlQcm9maWxlLT5hZGRyZXNzT2ZMYXN0U2VlblN0cnVjdHVyZUlE
KCkpOwotICAgICAgICAgICAgICAgIGppdC5sb2FkOChBc3NlbWJseUhlbHBlcnM6OkFkZHJlc3Mo
c2NyYXRjaDEsIFN0cnVjdHVyZTo6aW5kZXhpbmdUeXBlSW5jbHVkaW5nSGlzdG9yeU9mZnNldCgp
KSwgc2NyYXRjaDEpOwotICAgICAgICAgICAgICAgIGppdC5tb3ZlKEFzc2VtYmx5SGVscGVyczo6
VHJ1c3RlZEltbTMyKDEpLCBzY3JhdGNoMik7Ci0gICAgICAgICAgICAgICAgaml0LmxzaGlmdDMy
KHNjcmF0Y2gxLCBzY3JhdGNoMik7Ci0gICAgICAgICAgICAgICAgaml0Lm9yMzIoc2NyYXRjaDIs
IEFzc2VtYmx5SGVscGVyczo6QWJzb2x1dGVBZGRyZXNzKGFycmF5UHJvZmlsZS0+YWRkcmVzc09m
QXJyYXlNb2RlcygpKSk7Ci0gICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgaml0LnBv
cChzY3JhdGNoMik7Ci0gICAgICAgICAgICAgICAgaml0LnBvcChzY3JhdGNoMSk7Ci0gICAgICAg
ICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgCi0gICAgICAgIGlmIChNZXRob2RPZkdldHRpbmdB
VmFsdWVQcm9maWxlIHByb2ZpbGUgPSBleGl0Lm1fdmFsdWVQcm9maWxlKSB7Ci0gICAgICAgICAg
ICBpZiAoZXhpdC5tX2pzVmFsdWVTb3VyY2UuaXNBZGRyZXNzKCkpIHsKLSAgICAgICAgICAgICAg
ICAvLyBTYXZlIGEgcmVnaXN0ZXIgc28gd2UgY2FuIHVzZSBpdC4KLSAgICAgICAgICAgICAgICBH
UFJSZWcgc2NyYXRjaFBheWxvYWQgPSBBc3NlbWJseUhlbHBlcnM6OnNlbGVjdFNjcmF0Y2hHUFIo
ZXhpdC5tX2pzVmFsdWVTb3VyY2UuYmFzZSgpKTsKLSAgICAgICAgICAgICAgICBHUFJSZWcgc2Ny
YXRjaFRhZyA9IEFzc2VtYmx5SGVscGVyczo6c2VsZWN0U2NyYXRjaEdQUihleGl0Lm1fanNWYWx1
ZVNvdXJjZS5iYXNlKCksIHNjcmF0Y2hQYXlsb2FkKTsKLSAgICAgICAgICAgICAgICBqaXQucHVz
aFRvU2F2ZShzY3JhdGNoUGF5bG9hZCk7Ci0gICAgICAgICAgICAgICAgaml0LnB1c2hUb1NhdmUo
c2NyYXRjaFRhZyk7Ci0KLSAgICAgICAgICAgICAgICBKU1ZhbHVlUmVncyBzY3JhdGNoKHNjcmF0
Y2hUYWcsIHNjcmF0Y2hQYXlsb2FkKTsKLSAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAg
ICBqaXQubG9hZFZhbHVlKGV4aXQubV9qc1ZhbHVlU291cmNlLmFzQWRkcmVzcygpLCBzY3JhdGNo
KTsKLSAgICAgICAgICAgICAgICBwcm9maWxlLmVtaXRSZXBvcnRWYWx1ZShqaXQsIHNjcmF0Y2gp
OwotICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgIGppdC5wb3BUb1Jlc3RvcmUoc2Ny
YXRjaFRhZyk7Ci0gICAgICAgICAgICAgICAgaml0LnBvcFRvUmVzdG9yZShzY3JhdGNoUGF5bG9h
ZCk7Ci0gICAgICAgICAgICB9IGVsc2UgaWYgKGV4aXQubV9qc1ZhbHVlU291cmNlLmhhc0tub3du
VGFnKCkpIHsKLSAgICAgICAgICAgICAgICBHUFJSZWcgc2NyYXRjaFRhZyA9IEFzc2VtYmx5SGVs
cGVyczo6c2VsZWN0U2NyYXRjaEdQUihleGl0Lm1fanNWYWx1ZVNvdXJjZS5wYXlsb2FkR1BSKCkp
OwotICAgICAgICAgICAgICAgIGppdC5wdXNoVG9TYXZlKHNjcmF0Y2hUYWcpOwotICAgICAgICAg
ICAgICAgIGppdC5tb3ZlKEFzc2VtYmx5SGVscGVyczo6VHJ1c3RlZEltbTMyKGV4aXQubV9qc1Zh
bHVlU291cmNlLnRhZygpKSwgc2NyYXRjaFRhZyk7Ci0gICAgICAgICAgICAgICAgSlNWYWx1ZVJl
Z3MgdmFsdWUoc2NyYXRjaFRhZywgZXhpdC5tX2pzVmFsdWVTb3VyY2UucGF5bG9hZEdQUigpKTsK
LSAgICAgICAgICAgICAgICBwcm9maWxlLmVtaXRSZXBvcnRWYWx1ZShqaXQsIHZhbHVlKTsKLSAg
ICAgICAgICAgICAgICBqaXQucG9wVG9SZXN0b3JlKHNjcmF0Y2hUYWcpOwotICAgICAgICAgICAg
fSBlbHNlCi0gICAgICAgICAgICAgICAgcHJvZmlsZS5lbWl0UmVwb3J0VmFsdWUoaml0LCBleGl0
Lm1fanNWYWx1ZVNvdXJjZS5yZWdzKCkpOwotICAgICAgICB9Ci0gICAgfQotICAgIAotICAgIC8v
IERvIGEgc2ltcGxpZmllZCBPU1IgZXhpdC4gU2VlIERGR09TUkV4aXRDb21waWxlcjY0LmNwcCdz
IGNvbW1lbnQgcmVnYXJkaW5nIGhvdyBhbmQgd255IHdlCi0gICAgLy8gZG8gdGhpcyBzaW1wbGUg
YXBwcm9hY2guCi0KLSAgICAvLyBTYXZlIGFsbCBzdGF0ZSBmcm9tIEdQUnMgaW50byB0aGUgc2Ny
YXRjaCBidWZmZXIuCi0gICAgCi0gICAgU2NyYXRjaEJ1ZmZlciogc2NyYXRjaEJ1ZmZlciA9IHZt
LnNjcmF0Y2hCdWZmZXJGb3JTaXplKHNpemVvZihFbmNvZGVkSlNWYWx1ZSkgKiBvcGVyYW5kcy5z
aXplKCkpOwotICAgIEVuY29kZWRKU1ZhbHVlKiBzY3JhdGNoID0gc2NyYXRjaEJ1ZmZlciA/IHN0
YXRpY19jYXN0PEVuY29kZWRKU1ZhbHVlKj4oc2NyYXRjaEJ1ZmZlci0+ZGF0YUJ1ZmZlcigpKSA6
IDA7Ci0gICAgCi0gICAgZm9yIChzaXplX3QgaW5kZXggPSAwOyBpbmRleCA8IG9wZXJhbmRzLnNp
emUoKTsgKytpbmRleCkgewotICAgICAgICBjb25zdCBWYWx1ZVJlY292ZXJ5JiByZWNvdmVyeSA9
IG9wZXJhbmRzW2luZGV4XTsKLSAgICAgICAgCi0gICAgICAgIHN3aXRjaCAocmVjb3ZlcnkudGVj
aG5pcXVlKCkpIHsKLSAgICAgICAgY2FzZSBVbmJveGVkSW50MzJJbkdQUjoKLSAgICAgICAgY2Fz
ZSBVbmJveGVkQm9vbGVhbkluR1BSOgotICAgICAgICBjYXNlIFVuYm94ZWRDZWxsSW5HUFI6Ci0g
ICAgICAgICAgICBqaXQuc3RvcmUzMigKLSAgICAgICAgICAgICAgICByZWNvdmVyeS5ncHIoKSwK
LSAgICAgICAgICAgICAgICAmYml0d2lzZV9jYXN0PEVuY29kZWRWYWx1ZURlc2NyaXB0b3IqPihz
Y3JhdGNoICsgaW5kZXgpLT5hc0JpdHMucGF5bG9hZCk7Ci0gICAgICAgICAgICBicmVhazsKLSAg
ICAgICAgICAgIAotICAgICAgICBjYXNlIEluUGFpcjoKLSAgICAgICAgICAgIGppdC5zdG9yZTMy
KAotICAgICAgICAgICAgICAgIHJlY292ZXJ5LnRhZ0dQUigpLAotICAgICAgICAgICAgICAgICZi
aXR3aXNlX2Nhc3Q8RW5jb2RlZFZhbHVlRGVzY3JpcHRvcio+KHNjcmF0Y2ggKyBpbmRleCktPmFz
Qml0cy50YWcpOwotICAgICAgICAgICAgaml0LnN0b3JlMzIoCi0gICAgICAgICAgICAgICAgcmVj
b3ZlcnkucGF5bG9hZEdQUigpLAotICAgICAgICAgICAgICAgICZiaXR3aXNlX2Nhc3Q8RW5jb2Rl
ZFZhbHVlRGVzY3JpcHRvcio+KHNjcmF0Y2ggKyBpbmRleCktPmFzQml0cy5wYXlsb2FkKTsKLSAg
ICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgCi0gICAgICAgIGRlZmF1bHQ6Ci0gICAgICAg
ICAgICBicmVhazsKLSAgICAgICAgfQotICAgIH0KLSAgICAKLSAgICAvLyBOb3cgYWxsIEdQUnMg
YXJlIGZyZWUgdG8gcmV1c2UuCi0gICAgCi0gICAgLy8gU2F2ZSBhbGwgc3RhdGUgZnJvbSBGUFJz
IGludG8gdGhlIHNjcmF0Y2ggYnVmZmVyLgotICAgIAotICAgIGZvciAoc2l6ZV90IGluZGV4ID0g
MDsgaW5kZXggPCBvcGVyYW5kcy5zaXplKCk7ICsraW5kZXgpIHsKLSAgICAgICAgY29uc3QgVmFs
dWVSZWNvdmVyeSYgcmVjb3ZlcnkgPSBvcGVyYW5kc1tpbmRleF07Ci0gICAgICAgIAotICAgICAg
ICBzd2l0Y2ggKHJlY292ZXJ5LnRlY2huaXF1ZSgpKSB7Ci0gICAgICAgIGNhc2UgVW5ib3hlZERv
dWJsZUluRlBSOgotICAgICAgICBjYXNlIEluRlBSOgotICAgICAgICAgICAgaml0Lm1vdmUoQXNz
ZW1ibHlIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKHNjcmF0Y2ggKyBpbmRleCksIEdQUkluZm86OnJl
Z1QwKTsKLSAgICAgICAgICAgIGppdC5zdG9yZURvdWJsZShyZWNvdmVyeS5mcHIoKSwgTWFjcm9B
c3NlbWJsZXI6OkFkZHJlc3MoR1BSSW5mbzo6cmVnVDApKTsKLSAgICAgICAgICAgIGJyZWFrOwot
ICAgICAgICAgICAgCi0gICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICBicmVhazsKLSAgICAg
ICAgfQotICAgIH0KLSAgICAKLSAgICAvLyBOb3cgYWxsIEZQUnMgYXJlIGZyZWUgdG8gcmV1c2Uu
Ci0gICAgCi0gICAgLy8gU2F2ZSBhbGwgc3RhdGUgZnJvbSB0aGUgc3RhY2sgaW50byB0aGUgc2Ny
YXRjaCBidWZmZXIuIEZvciBzaW1wbGljaXR5IHdlCi0gICAgLy8gZG8gdGhpcyBldmVuIGZvciBz
dGF0ZSB0aGF0J3MgYWxyZWFkeSBpbiB0aGUgcmlnaHQgcGxhY2Ugb24gdGhlIHN0YWNrLgotICAg
IC8vIEl0IG1ha2VzIHRoaW5ncyBzaW1wbGVyIGxhdGVyLgotICAgIAotICAgIGZvciAoc2l6ZV90
IGluZGV4ID0gMDsgaW5kZXggPCBvcGVyYW5kcy5zaXplKCk7ICsraW5kZXgpIHsKLSAgICAgICAg
Y29uc3QgVmFsdWVSZWNvdmVyeSYgcmVjb3ZlcnkgPSBvcGVyYW5kc1tpbmRleF07Ci0gICAgICAg
IAotICAgICAgICBzd2l0Y2ggKHJlY292ZXJ5LnRlY2huaXF1ZSgpKSB7Ci0gICAgICAgIGNhc2Ug
RGlzcGxhY2VkSW5KU1N0YWNrOgotICAgICAgICBjYXNlIEludDMyRGlzcGxhY2VkSW5KU1N0YWNr
OgotICAgICAgICBjYXNlIERvdWJsZURpc3BsYWNlZEluSlNTdGFjazoKLSAgICAgICAgY2FzZSBD
ZWxsRGlzcGxhY2VkSW5KU1N0YWNrOgotICAgICAgICBjYXNlIEJvb2xlYW5EaXNwbGFjZWRJbkpT
U3RhY2s6Ci0gICAgICAgICAgICBqaXQubG9hZDMyKAotICAgICAgICAgICAgICAgIEFzc2VtYmx5
SGVscGVyczo6dGFnRm9yKHJlY292ZXJ5LnZpcnR1YWxSZWdpc3RlcigpKSwKLSAgICAgICAgICAg
ICAgICBHUFJJbmZvOjpyZWdUMCk7Ci0gICAgICAgICAgICBqaXQubG9hZDMyKAotICAgICAgICAg
ICAgICAgIEFzc2VtYmx5SGVscGVyczo6cGF5bG9hZEZvcihyZWNvdmVyeS52aXJ0dWFsUmVnaXN0
ZXIoKSksCi0gICAgICAgICAgICAgICAgR1BSSW5mbzo6cmVnVDEpOwotICAgICAgICAgICAgaml0
LnN0b3JlMzIoCi0gICAgICAgICAgICAgICAgR1BSSW5mbzo6cmVnVDAsCi0gICAgICAgICAgICAg
ICAgJmJpdHdpc2VfY2FzdDxFbmNvZGVkVmFsdWVEZXNjcmlwdG9yKj4oc2NyYXRjaCArIGluZGV4
KS0+YXNCaXRzLnRhZyk7Ci0gICAgICAgICAgICBqaXQuc3RvcmUzMigKLSAgICAgICAgICAgICAg
ICBHUFJJbmZvOjpyZWdUMSwKLSAgICAgICAgICAgICAgICAmYml0d2lzZV9jYXN0PEVuY29kZWRW
YWx1ZURlc2NyaXB0b3IqPihzY3JhdGNoICsgaW5kZXgpLT5hc0JpdHMucGF5bG9hZCk7Ci0gICAg
ICAgICAgICBicmVhazsKLSAgICAgICAgICAgIAotICAgICAgICBkZWZhdWx0OgotICAgICAgICAg
ICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgCi0gICAgLy8gTmVlZCB0byBlbnN1cmUg
dGhhdCB0aGUgc3RhY2sgcG9pbnRlciBhY2NvdW50cyBmb3IgdGhlIHdvcnN0LWNhc2Ugc3RhY2sg
dXNhZ2UgYXQgZXhpdC4gVGhpcwotICAgIC8vIGNvdWxkIHRvYXN0IHNvbWUgc3RhY2sgdGhhdCB0
aGUgREZHIHVzZWQuIFdlIG5lZWQgdG8gZG8gaXQgYmVmb3JlIHN0b3JpbmcgdG8gc3RhY2sgb2Zm
c2V0cwotICAgIC8vIHVzZWQgYnkgYmFzZWxpbmUuCi0gICAgaml0LmFkZFB0cigKLSAgICAgICAg
Q0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoCi0gICAgICAgICAgICAtaml0LmNvZGVCbG9jaygp
LT5qaXRDb2RlKCktPmRmZ0NvbW1vbigpLT5yZXF1aXJlZFJlZ2lzdGVyQ291bnRGb3JFeGl0ICog
c2l6ZW9mKFJlZ2lzdGVyKSksCi0gICAgICAgIENDYWxsSGVscGVyczo6ZnJhbWVQb2ludGVyUmVn
aXN0ZXIsIENDYWxsSGVscGVyczo6c3RhY2tQb2ludGVyUmVnaXN0ZXIpOwotICAgIAotICAgIC8v
IFJlc3RvcmUgdGhlIERGRyBjYWxsZWUgc2F2ZXMgYW5kIHRoZW4gc2F2ZSB0aGUgb25lcyB0aGUg
YmFzZWxpbmUgSklUIHVzZXMuCi0gICAgaml0LmVtaXRSZXN0b3JlQ2FsbGVlU2F2ZXMoKTsKLSAg
ICBqaXQuZW1pdFNhdmVDYWxsZWVTYXZlc0ZvcihqaXQuYmFzZWxpbmVDb2RlQmxvY2soKSk7Ci0K
LSAgICBpZiAoZXhpdC5pc0V4Y2VwdGlvbkhhbmRsZXIoKSkKLSAgICAgICAgaml0LmNvcHlDYWxs
ZWVTYXZlc1RvVk1FbnRyeUZyYW1lQ2FsbGVlU2F2ZXNCdWZmZXIodm0pOwotCi0gICAgLy8gRG8g
YWxsIGRhdGEgZm9ybWF0IGNvbnZlcnNpb25zIGFuZCBzdG9yZSB0aGUgcmVzdWx0cyBpbnRvIHRo
ZSBzdGFjay4KLSAgICAKLSAgICBmb3IgKHNpemVfdCBpbmRleCA9IDA7IGluZGV4IDwgb3BlcmFu
ZHMuc2l6ZSgpOyArK2luZGV4KSB7Ci0gICAgICAgIGNvbnN0IFZhbHVlUmVjb3ZlcnkmIHJlY292
ZXJ5ID0gb3BlcmFuZHNbaW5kZXhdOwotICAgICAgICBWaXJ0dWFsUmVnaXN0ZXIgcmVnID0gb3Bl
cmFuZHMudmlydHVhbFJlZ2lzdGVyRm9ySW5kZXgoaW5kZXgpOwotCi0gICAgICAgIGlmIChyZWcu
aXNMb2NhbCgpICYmIHJlZy50b0xvY2FsKCkgPCBzdGF0aWNfY2FzdDxpbnQ+KGppdC5iYXNlbGlu
ZUNvZGVCbG9jaygpLT5jYWxsZWVTYXZlU3BhY2VBc1ZpcnR1YWxSZWdpc3RlcnMoKSkpCi0gICAg
ICAgICAgICBjb250aW51ZTsKLQotICAgICAgICBpbnQgb3BlcmFuZCA9IHJlZy5vZmZzZXQoKTsK
LQotICAgICAgICBzd2l0Y2ggKHJlY292ZXJ5LnRlY2huaXF1ZSgpKSB7Ci0gICAgICAgIGNhc2Ug
SW5QYWlyOgotICAgICAgICBjYXNlIERpc3BsYWNlZEluSlNTdGFjazoKLSAgICAgICAgY2FzZSBJ
bkZQUjoKLSAgICAgICAgICAgIGppdC5sb2FkMzIoCi0gICAgICAgICAgICAgICAgJmJpdHdpc2Vf
Y2FzdDxFbmNvZGVkVmFsdWVEZXNjcmlwdG9yKj4oc2NyYXRjaCArIGluZGV4KS0+YXNCaXRzLnRh
ZywKLSAgICAgICAgICAgICAgICBHUFJJbmZvOjpyZWdUMCk7Ci0gICAgICAgICAgICBqaXQubG9h
ZDMyKAotICAgICAgICAgICAgICAgICZiaXR3aXNlX2Nhc3Q8RW5jb2RlZFZhbHVlRGVzY3JpcHRv
cio+KHNjcmF0Y2ggKyBpbmRleCktPmFzQml0cy5wYXlsb2FkLAotICAgICAgICAgICAgICAgIEdQ
UkluZm86OnJlZ1QxKTsKLSAgICAgICAgICAgIGppdC5zdG9yZTMyKAotICAgICAgICAgICAgICAg
IEdQUkluZm86OnJlZ1QwLAotICAgICAgICAgICAgICAgIEFzc2VtYmx5SGVscGVyczo6dGFnRm9y
KG9wZXJhbmQpKTsKLSAgICAgICAgICAgIGppdC5zdG9yZTMyKAotICAgICAgICAgICAgICAgIEdQ
UkluZm86OnJlZ1QxLAotICAgICAgICAgICAgICAgIEFzc2VtYmx5SGVscGVyczo6cGF5bG9hZEZv
cihvcGVyYW5kKSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIAotICAgICAgICBj
YXNlIFVuYm94ZWREb3VibGVJbkZQUjoKLSAgICAgICAgY2FzZSBEb3VibGVEaXNwbGFjZWRJbkpT
U3RhY2s6Ci0gICAgICAgICAgICBqaXQubW92ZShBc3NlbWJseUhlbHBlcnM6OlRydXN0ZWRJbW1Q
dHIoc2NyYXRjaCArIGluZGV4KSwgR1BSSW5mbzo6cmVnVDApOwotICAgICAgICAgICAgaml0Lmxv
YWREb3VibGUoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoR1BSSW5mbzo6cmVnVDApLCBGUFJJbmZv
OjpmcFJlZ1QwKTsKLSAgICAgICAgICAgIGppdC5wdXJpZnlOYU4oRlBSSW5mbzo6ZnBSZWdUMCk7
Ci0gICAgICAgICAgICBqaXQuc3RvcmVEb3VibGUoRlBSSW5mbzo6ZnBSZWdUMCwgQXNzZW1ibHlI
ZWxwZXJzOjphZGRyZXNzRm9yKG9wZXJhbmQpKTsKLSAgICAgICAgICAgIGJyZWFrOwotCi0gICAg
ICAgIGNhc2UgVW5ib3hlZEludDMySW5HUFI6Ci0gICAgICAgIGNhc2UgSW50MzJEaXNwbGFjZWRJ
bkpTU3RhY2s6Ci0gICAgICAgICAgICBqaXQubG9hZDMyKAotICAgICAgICAgICAgICAgICZiaXR3
aXNlX2Nhc3Q8RW5jb2RlZFZhbHVlRGVzY3JpcHRvcio+KHNjcmF0Y2ggKyBpbmRleCktPmFzQml0
cy5wYXlsb2FkLAotICAgICAgICAgICAgICAgIEdQUkluZm86OnJlZ1QwKTsKLSAgICAgICAgICAg
IGppdC5zdG9yZTMyKAotICAgICAgICAgICAgICAgIEFzc2VtYmx5SGVscGVyczo6VHJ1c3RlZElt
bTMyKEpTVmFsdWU6OkludDMyVGFnKSwKLSAgICAgICAgICAgICAgICBBc3NlbWJseUhlbHBlcnM6
OnRhZ0ZvcihvcGVyYW5kKSk7Ci0gICAgICAgICAgICBqaXQuc3RvcmUzMigKLSAgICAgICAgICAg
ICAgICBHUFJJbmZvOjpyZWdUMCwKLSAgICAgICAgICAgICAgICBBc3NlbWJseUhlbHBlcnM6OnBh
eWxvYWRGb3Iob3BlcmFuZCkpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAKLSAg
ICAgICAgY2FzZSBVbmJveGVkQ2VsbEluR1BSOgotICAgICAgICBjYXNlIENlbGxEaXNwbGFjZWRJ
bkpTU3RhY2s6Ci0gICAgICAgICAgICBqaXQubG9hZDMyKAotICAgICAgICAgICAgICAgICZiaXR3
aXNlX2Nhc3Q8RW5jb2RlZFZhbHVlRGVzY3JpcHRvcio+KHNjcmF0Y2ggKyBpbmRleCktPmFzQml0
cy5wYXlsb2FkLAotICAgICAgICAgICAgICAgIEdQUkluZm86OnJlZ1QwKTsKLSAgICAgICAgICAg
IGppdC5zdG9yZTMyKAotICAgICAgICAgICAgICAgIEFzc2VtYmx5SGVscGVyczo6VHJ1c3RlZElt
bTMyKEpTVmFsdWU6OkNlbGxUYWcpLAotICAgICAgICAgICAgICAgIEFzc2VtYmx5SGVscGVyczo6
dGFnRm9yKG9wZXJhbmQpKTsKLSAgICAgICAgICAgIGppdC5zdG9yZTMyKAotICAgICAgICAgICAg
ICAgIEdQUkluZm86OnJlZ1QwLAotICAgICAgICAgICAgICAgIEFzc2VtYmx5SGVscGVyczo6cGF5
bG9hZEZvcihvcGVyYW5kKSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIAotICAg
ICAgICBjYXNlIFVuYm94ZWRCb29sZWFuSW5HUFI6Ci0gICAgICAgIGNhc2UgQm9vbGVhbkRpc3Bs
YWNlZEluSlNTdGFjazoKLSAgICAgICAgICAgIGppdC5sb2FkMzIoCi0gICAgICAgICAgICAgICAg
JmJpdHdpc2VfY2FzdDxFbmNvZGVkVmFsdWVEZXNjcmlwdG9yKj4oc2NyYXRjaCArIGluZGV4KS0+
YXNCaXRzLnBheWxvYWQsCi0gICAgICAgICAgICAgICAgR1BSSW5mbzo6cmVnVDApOwotICAgICAg
ICAgICAgaml0LnN0b3JlMzIoCi0gICAgICAgICAgICAgICAgQXNzZW1ibHlIZWxwZXJzOjpUcnVz
dGVkSW1tMzIoSlNWYWx1ZTo6Qm9vbGVhblRhZyksCi0gICAgICAgICAgICAgICAgQXNzZW1ibHlI
ZWxwZXJzOjp0YWdGb3Iob3BlcmFuZCkpOwotICAgICAgICAgICAgaml0LnN0b3JlMzIoCi0gICAg
ICAgICAgICAgICAgR1BSSW5mbzo6cmVnVDAsCi0gICAgICAgICAgICAgICAgQXNzZW1ibHlIZWxw
ZXJzOjpwYXlsb2FkRm9yKG9wZXJhbmQpKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAg
ICAgCi0gICAgICAgIGNhc2UgQ29uc3RhbnQ6Ci0gICAgICAgICAgICBqaXQuc3RvcmUzMigKLSAg
ICAgICAgICAgICAgICBBc3NlbWJseUhlbHBlcnM6OlRydXN0ZWRJbW0zMihyZWNvdmVyeS5jb25z
dGFudCgpLnRhZygpKSwKLSAgICAgICAgICAgICAgICBBc3NlbWJseUhlbHBlcnM6OnRhZ0Zvcihv
cGVyYW5kKSk7Ci0gICAgICAgICAgICBqaXQuc3RvcmUzMigKLSAgICAgICAgICAgICAgICBBc3Nl
bWJseUhlbHBlcnM6OlRydXN0ZWRJbW0zMihyZWNvdmVyeS5jb25zdGFudCgpLnBheWxvYWQoKSks
Ci0gICAgICAgICAgICAgICAgQXNzZW1ibHlIZWxwZXJzOjpwYXlsb2FkRm9yKG9wZXJhbmQpKTsK
LSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgCi0gICAgICAgIGNhc2UgRGlyZWN0QXJn
dW1lbnRzVGhhdFdlcmVOb3RDcmVhdGVkOgotICAgICAgICBjYXNlIENsb25lZEFyZ3VtZW50c1Ro
YXRXZXJlTm90Q3JlYXRlZDoKLSAgICAgICAgICAgIC8vIERvbid0IGRvIHRoaXMsIHlldC4KLSAg
ICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgCi0gICAgICAgIGRlZmF1bHQ6Ci0gICAgICAg
ICAgICBicmVhazsKLSAgICAgICAgfQotICAgIH0KLSAgICAKLSAgICAvLyBOb3cgdGhhdCB0aGlu
Z3Mgb24gdGhlIHN0YWNrIGFyZSByZWNvdmVyZWQsIGRvIHRoZSBhcmd1bWVudHMgcmVjb3Zlcnku
IFdlIGFzc3VtZSB0aGF0IGFyZ3VtZW50cwotICAgIC8vIHJlY292ZXJpZXMgZG9uJ3QgcmVjdXJz
aXZlbHkgcmVmZXIgdG8gZWFjaCBvdGhlci4gQnV0LCB3ZSBkb24ndCB0cnkgdG8gYXNzdW1lIHRo
YXQgdGhleSBvbmx5Ci0gICAgLy8gcmVmZXIgdG8gY2VydGFpbiByYW5nZXMgb2YgbG9jYWxzLiBI
ZW5jZSB3aHkgd2UgbmVlZCB0byBkbyB0aGlzIGhlcmUsIG9uY2UgdGhlIHN0YWNrIGlzIHNlbnNp
YmxlLgotICAgIC8vIE5vdGUgdGhhdCB3ZSBhbHNvIHJvdWdobHkgYXNzdW1lIHRoYXQgdGhlIGFy
Z3VtZW50cyBtaWdodCBzdGlsbCBiZSBtYXRlcmlhbGl6ZWQgb3V0c2lkZSBvZiBpdHMKLSAgICAv
LyBpbmxpbmUgY2FsbCBmcmFtZSBzY29wZSAtIGJ1dCBmb3Igbm93IHRoZSBERkcgd291bGRuJ3Qg
ZG8gdGhhdC4KLSAgICAKLSAgICBlbWl0UmVzdG9yZUFyZ3VtZW50cyhqaXQsIG9wZXJhbmRzKTsK
LQotICAgIC8vIEFkanVzdCB0aGUgb2xkIEpJVCdzIGV4ZWN1dGUgY291bnRlci4gU2luY2Ugd2Ug
YXJlIGV4aXRpbmcgT1NSLCB3ZSBrbm93Ci0gICAgLy8gdGhhdCBhbGwgbmV3IGNhbGxzIGludG8g
dGhpcyBjb2RlIHdpbGwgZ28gdG8gdGhlIG5ldyBKSVQsIHNvIHRoZSBleGVjdXRlCi0gICAgLy8g
Y291bnRlciBvbmx5IGFmZmVjdHMgY2FsbCBmcmFtZXMgdGhhdCBwZXJmb3JtZWQgT1NSIGV4aXQg
YW5kIGNhbGwgZnJhbWVzCi0gICAgLy8gdGhhdCB3ZXJlIHN0aWxsIGV4ZWN1dGluZyB0aGUgb2xk
IEpJVCBhdCB0aGUgdGltZSBvZiBhbm90aGVyIGNhbGwgZnJhbWUncwotICAgIC8vIE9TUiBleGl0
LiBXZSB3YW50IHRvIGVuc3VyZSB0aGF0IHRoZSBmb2xsb3dpbmcgaXMgdHJ1ZToKLSAgICAvLwot
ICAgIC8vIChhKSBDb2RlIHRoZSBwZXJmb3JtcyBhbiBPU1IgZXhpdCBnZXRzIGEgY2hhbmNlIHRv
IHJlZW50ZXIgb3B0aW1pemVkCi0gICAgLy8gICAgIGNvZGUgZXZlbnR1YWxseSwgc2luY2Ugb3B0
aW1pemVkIGNvZGUgaXMgZmFzdGVyLiBCdXQgd2UgZG9uJ3QKLSAgICAvLyAgICAgd2FudCB0byBk
byBzdWNoIHJlZW50ZXJ5IHRvbyBhZ2dyZXNzaXZlbHkgKHNlZSAoYykgYmVsb3cpLgotICAgIC8v
Ci0gICAgLy8gKGIpIElmIHRoZXJlIGlzIGNvZGUgb24gdGhlIGNhbGwgc3RhY2sgdGhhdCBpcyBz
dGlsbCBydW5uaW5nIHRoZSBvbGQKLSAgICAvLyAgICAgSklUJ3MgY29kZSBhbmQgaGFzIG5ldmVy
IE9TUidkLCB0aGVuIGl0IHNob3VsZCBnZXQgYSBjaGFuY2UgdG8KLSAgICAvLyAgICAgcGVyZm9y
bSBPU1IgZW50cnkgZGVzcGl0ZSB0aGUgZmFjdCB0aGF0IHdlJ3ZlIGV4aXRlZC4KLSAgICAvLwot
ICAgIC8vIChjKSBDb2RlIHRoZSBwZXJmb3JtcyBhbiBPU1IgZXhpdCBzaG91bGQgbm90IGltbWVk
aWF0ZWx5IHJldHJ5IE9TUgotICAgIC8vICAgICBlbnRyeSwgc2luY2UgYm90aCBmb3JtcyBvZiBP
U1IgYXJlIGV4cGVuc2l2ZS4gT1NSIGVudHJ5IGlzCi0gICAgLy8gICAgIHBhcnRpY3VsYXJseSBl
eHBlbnNpdmUuCi0gICAgLy8KLSAgICAvLyAoZCkgRnJlcXVlbnQgT1NSIGZhaWx1cmVzLCBldmVu
IHRob3NlIHRoYXQgZG8gbm90IHJlc3VsdCBpbiB0aGUgY29kZQotICAgIC8vICAgICBydW5uaW5n
IGluIGEgaG90IGxvb3AsIHJlc3VsdCBpbiByZWNvbXBpbGF0aW9uIGdldHRpbmcgdHJpZ2dlcmVk
LgotICAgIC8vCi0gICAgLy8gVG8gZW5zdXJlIChjKSwgd2UnZCBsaWtlIHRvIHNldCB0aGUgZXhl
Y3V0ZSBjb3VudGVyIHRvCi0gICAgLy8gY291bnRlclZhbHVlRm9yT3B0aW1pemVBZnRlcldhcm1V
cCgpLiBUaGlzIHNlZW1zIGxpa2UgaXQgd291bGQgZW5kYW5nZXIKLSAgICAvLyAoYSkgYW5kIChi
KSwgc2luY2UgdGhlbiBldmVyeSBPU1IgZXhpdCB3b3VsZCBkZWxheSB0aGUgb3Bwb3J0dW5pdHkg
Zm9yCi0gICAgLy8gZXZlcnkgY2FsbCBmcmFtZSB0byBwZXJmb3JtIE9TUiBlbnRyeS4gRXNzZW50
aWFsbHksIGlmIE9TUiBleGl0IGhhcHBlbnMKLSAgICAvLyBmcmVxdWVudGx5IGFuZCB0aGUgZnVu
Y3Rpb24gaGFzIGZldyBsb29wcywgdGhlbiB0aGUgY291bnRlciB3aWxsIG5ldmVyCi0gICAgLy8g
YmVjb21lIG5vbi1uZWdhdGl2ZSBhbmQgT1NSIGVudHJ5IHdpbGwgbmV2ZXIgYmUgdHJpZ2dlcmVk
LiBPU1IgZW50cnkKLSAgICAvLyB3aWxsIG9ubHkgaGFwcGVuIGlmIGEgbG9vcCBnZXRzIGhvdCBp
biB0aGUgb2xkIEpJVCwgd2hpY2ggZG9lcyBhIHByZXR0eQotICAgIC8vIGdvb2Qgam9iIG9mIGVu
c3VyaW5nIChhKSBhbmQgKGIpLiBCdXQgdGhhdCBkb2Vzbid0IHRha2UgY2FyZSBvZiAoZCksCi0g
ICAgLy8gc2luY2UgZWFjaCBzcGVjdWxhdGlvbiBmYWlsdXJlIHdvdWxkIHJlc2V0IHRoZSBleGVj
dXRlIGNvdW50ZXIuCi0gICAgLy8gU28gd2UgY2hlY2sgaGVyZSBpZiB0aGUgbnVtYmVyIG9mIHNw
ZWN1bGF0aW9uIGZhaWx1cmVzIGlzIHNpZ25pZmljYW50bHkKLSAgICAvLyBsYXJnZXIgdGhhbiB0
aGUgbnVtYmVyIG9mIHN1Y2Nlc3NlcyAod2Ugd2FudCA5MCUgc3VjY2VzcyByYXRlKSwgYW5kIGlm
Ci0gICAgLy8gdGhlcmUgaGF2ZSBiZWVuIGEgbGFyZ2UgZW5vdWdoIG51bWJlciBvZiBmYWlsdXJl
cy4gSWYgc28sIHdlIHNldCB0aGUKLSAgICAvLyBjb3VudGVyIHRvIDA7IG90aGVyd2lzZSB3ZSBz
ZXQgdGhlIGNvdW50ZXIgdG8KLSAgICAvLyBjb3VudGVyVmFsdWVGb3JPcHRpbWl6ZUFmdGVyV2Fy
bVVwKCkuCi0gICAgCi0gICAgaGFuZGxlRXhpdENvdW50cyhqaXQsIGV4aXQpOwotICAgIAotICAg
IC8vIFJlaWZ5IGlubGluZWQgY2FsbCBmcmFtZXMuCi0gICAgCi0gICAgcmVpZnlJbmxpbmVkQ2Fs
bEZyYW1lcyhqaXQsIGV4aXQpOwotICAgIAotICAgIC8vIEFuZCBmaW5pc2guCi0gICAgYWRqdXN0
QW5kSnVtcFRvVGFyZ2V0KHZtLCBqaXQsIGV4aXQpOwotfQotCi19IH0gLy8gbmFtZXNwYWNlIEpT
Qzo6REZHCi0KLSNlbmRpZiAvLyBFTkFCTEUoREZHX0pJVCkgJiYgVVNFKEpTVkFMVUUzMl82NCkK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0LmNwcAkocmV2aXNpb24g
MjIwMzA2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMjIzLDggKzIyMyw2IEBAIHZvaWQgSklUX09QRVJBVElPTiBPU1JFeGl0
Ojpjb21waWxlT1NSRXgKICAgICB2bS0+b3NyRXhpdEp1bXBEZXN0aW5hdGlvbiA9IGV4aXQubV9j
b2RlLmNvZGUoKS5leGVjdXRhYmxlQWRkcmVzcygpOwogfQogCi0jaWYgVVNFKEpTVkFMVUU2NCkK
LQogdm9pZCBPU1JFeGl0Ojpjb21waWxlRXhpdChDQ2FsbEhlbHBlcnMmIGppdCwgVk0mIHZtLCBj
b25zdCBPU1JFeGl0JiBleGl0LCBjb25zdCBPcGVyYW5kczxWYWx1ZVJlY292ZXJ5PiYgb3BlcmFu
ZHMsIFNwZWN1bGF0aW9uUmVjb3ZlcnkqIHJlY292ZXJ5KQogewogICAgIGppdC5qaXRBc3NlcnRU
YWdzSW5QbGFjZSgpOwpAQCAtMjQ2LDE2ICsyNDQsMjIgQEAgdm9pZCBPU1JFeGl0Ojpjb21waWxl
RXhpdChDQ2FsbEhlbHBlcnMmIAogICAgICAgICBzd2l0Y2ggKHJlY292ZXJ5LT50eXBlKCkpIHsK
ICAgICAgICAgY2FzZSBTcGVjdWxhdGl2ZUFkZDoKICAgICAgICAgICAgIGppdC5zdWIzMihyZWNv
dmVyeS0+c3JjKCksIHJlY292ZXJ5LT5kZXN0KCkpOworI2lmIFVTRShKU1ZBTFVFNjQpCiAgICAg
ICAgICAgICBqaXQub3I2NChHUFJJbmZvOjp0YWdUeXBlTnVtYmVyUmVnaXN0ZXIsIHJlY292ZXJ5
LT5kZXN0KCkpOworI2VuZGlmCiAgICAgICAgICAgICBicmVhazsKIAogICAgICAgICBjYXNlIFNw
ZWN1bGF0aXZlQWRkSW1tZWRpYXRlOgogICAgICAgICAgICAgaml0LnN1YjMyKEFzc2VtYmx5SGVs
cGVyczo6SW1tMzIocmVjb3ZlcnktPmltbWVkaWF0ZSgpKSwgcmVjb3ZlcnktPmRlc3QoKSk7Cisj
aWYgVVNFKEpTVkFMVUU2NCkKICAgICAgICAgICAgIGppdC5vcjY0KEdQUkluZm86OnRhZ1R5cGVO
dW1iZXJSZWdpc3RlciwgcmVjb3ZlcnktPmRlc3QoKSk7CisjZW5kaWYKICAgICAgICAgICAgIGJy
ZWFrOwogCiAgICAgICAgIGNhc2UgQm9vbGVhblNwZWN1bGF0aW9uQ2hlY2s6CisjaWYgVVNFKEpT
VkFMVUU2NCkKICAgICAgICAgICAgIGppdC54b3I2NChBc3NlbWJseUhlbHBlcnM6OlRydXN0ZWRJ
bW0zMihzdGF0aWNfY2FzdDxpbnQzMl90PihWYWx1ZUZhbHNlKSksIHJlY292ZXJ5LT5kZXN0KCkp
OworI2VuZGlmCiAgICAgICAgICAgICBicmVhazsKIAogICAgICAgICBkZWZhdWx0OgpAQCAtMjc4
LDE2ICsyODIsMzYgQEAgdm9pZCBPU1JFeGl0Ojpjb21waWxlRXhpdChDQ2FsbEhlbHBlcnMmIAog
CiAgICAgICAgICAgICBDb2RlT3JpZ2luIGNvZGVPcmlnaW4gPSBleGl0Lm1fY29kZU9yaWdpbkZv
ckV4aXRQcm9maWxlOwogICAgICAgICAgICAgaWYgKEFycmF5UHJvZmlsZSogYXJyYXlQcm9maWxl
ID0gaml0LmJhc2VsaW5lQ29kZUJsb2NrRm9yKGNvZGVPcmlnaW4pLT5nZXRBcnJheVByb2ZpbGUo
Y29kZU9yaWdpbi5ieXRlY29kZUluZGV4KSkgeworI2lmIFVTRShKU1ZBTFVFNjQpCiAgICAgICAg
ICAgICAgICAgR1BSUmVnIHVzZWRSZWdpc3RlcjsKICAgICAgICAgICAgICAgICBpZiAoZXhpdC5t
X2pzVmFsdWVTb3VyY2UuaXNBZGRyZXNzKCkpCiAgICAgICAgICAgICAgICAgICAgIHVzZWRSZWdp
c3RlciA9IGV4aXQubV9qc1ZhbHVlU291cmNlLmJhc2UoKTsKICAgICAgICAgICAgICAgICBlbHNl
CiAgICAgICAgICAgICAgICAgICAgIHVzZWRSZWdpc3RlciA9IGV4aXQubV9qc1ZhbHVlU291cmNl
LmdwcigpOworI2Vsc2UKKyAgICAgICAgICAgICAgICBHUFJSZWcgdXNlZFJlZ2lzdGVyMTsKKyAg
ICAgICAgICAgICAgICBHUFJSZWcgdXNlZFJlZ2lzdGVyMjsKKyAgICAgICAgICAgICAgICBpZiAo
ZXhpdC5tX2pzVmFsdWVTb3VyY2UuaXNBZGRyZXNzKCkpIHsKKyAgICAgICAgICAgICAgICAgICAg
dXNlZFJlZ2lzdGVyMSA9IGV4aXQubV9qc1ZhbHVlU291cmNlLmJhc2UoKTsKKyAgICAgICAgICAg
ICAgICAgICAgdXNlZFJlZ2lzdGVyMiA9IEludmFsaWRHUFJSZWc7CisgICAgICAgICAgICAgICAg
fSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgdXNlZFJlZ2lzdGVyMSA9IGV4aXQubV9qc1Zh
bHVlU291cmNlLnBheWxvYWRHUFIoKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGV4aXQubV9q
c1ZhbHVlU291cmNlLmhhc0tub3duVGFnKCkpCisgICAgICAgICAgICAgICAgICAgICAgICB1c2Vk
UmVnaXN0ZXIyID0gSW52YWxpZEdQUlJlZzsKKyAgICAgICAgICAgICAgICAgICAgZWxzZQorICAg
ICAgICAgICAgICAgICAgICAgICAgdXNlZFJlZ2lzdGVyMiA9IGV4aXQubV9qc1ZhbHVlU291cmNl
LnRhZ0dQUigpOworICAgICAgICAgICAgICAgIH0KKyNlbmRpZgogCiAgICAgICAgICAgICAgICAg
R1BSUmVnIHNjcmF0Y2gxOwogICAgICAgICAgICAgICAgIEdQUlJlZyBzY3JhdGNoMjsKKyNpZiBV
U0UoSlNWQUxVRTY0KQogICAgICAgICAgICAgICAgIHNjcmF0Y2gxID0gQXNzZW1ibHlIZWxwZXJz
OjpzZWxlY3RTY3JhdGNoR1BSKHVzZWRSZWdpc3Rlcik7CiAgICAgICAgICAgICAgICAgc2NyYXRj
aDIgPSBBc3NlbWJseUhlbHBlcnM6OnNlbGVjdFNjcmF0Y2hHUFIodXNlZFJlZ2lzdGVyLCBzY3Jh
dGNoMSk7CisjZWxzZQorICAgICAgICAgICAgICAgIHNjcmF0Y2gxID0gQXNzZW1ibHlIZWxwZXJz
OjpzZWxlY3RTY3JhdGNoR1BSKHVzZWRSZWdpc3RlcjEsIHVzZWRSZWdpc3RlcjIpOworICAgICAg
ICAgICAgICAgIHNjcmF0Y2gyID0gQXNzZW1ibHlIZWxwZXJzOjpzZWxlY3RTY3JhdGNoR1BSKHVz
ZWRSZWdpc3RlcjEsIHVzZWRSZWdpc3RlcjIsIHNjcmF0Y2gxKTsKKyNlbmRpZgogCiAgICAgICAg
ICAgICAgICAgaWYgKGlzQVJNNjQoKSkgewogICAgICAgICAgICAgICAgICAgICBqaXQucHVzaFRv
U2F2ZShzY3JhdGNoMSk7CkBAIC0zMDIsMTEgKzMyNiwxNSBAQCB2b2lkIE9TUkV4aXQ6OmNvbXBp
bGVFeGl0KENDYWxsSGVscGVycyYgCiAgICAgICAgICAgICAgICAgICAgIHZhbHVlID0gc2NyYXRj
aDE7CiAgICAgICAgICAgICAgICAgICAgIGppdC5sb2FkUHRyKEFzc2VtYmx5SGVscGVyczo6QWRk
cmVzcyhleGl0Lm1fanNWYWx1ZVNvdXJjZS5hc0FkZHJlc3MoKSksIHZhbHVlKTsKICAgICAgICAg
ICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSBleGl0Lm1fanNWYWx1
ZVNvdXJjZS5ncHIoKTsKKyAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSBleGl0Lm1fanNWYWx1
ZVNvdXJjZS5wYXlsb2FkR1BSKCk7CiAKICAgICAgICAgICAgICAgICBqaXQubG9hZDMyKEFzc2Vt
Ymx5SGVscGVyczo6QWRkcmVzcyh2YWx1ZSwgSlNDZWxsOjpzdHJ1Y3R1cmVJRE9mZnNldCgpKSwg
c2NyYXRjaDEpOwogICAgICAgICAgICAgICAgIGppdC5zdG9yZTMyKHNjcmF0Y2gxLCBhcnJheVBy
b2ZpbGUtPmFkZHJlc3NPZkxhc3RTZWVuU3RydWN0dXJlSUQoKSk7CisjaWYgVVNFKEpTVkFMVUU2
NCkKICAgICAgICAgICAgICAgICBqaXQubG9hZDgoQXNzZW1ibHlIZWxwZXJzOjpBZGRyZXNzKHZh
bHVlLCBKU0NlbGw6OmluZGV4aW5nVHlwZUFuZE1pc2NPZmZzZXQoKSksIHNjcmF0Y2gxKTsKKyNl
bHNlCisgICAgICAgICAgICAgICAgaml0LmxvYWQ4KEFzc2VtYmx5SGVscGVyczo6QWRkcmVzcyhz
Y3JhdGNoMSwgU3RydWN0dXJlOjppbmRleGluZ1R5cGVJbmNsdWRpbmdIaXN0b3J5T2Zmc2V0KCkp
LCBzY3JhdGNoMSk7CisjZW5kaWYKICAgICAgICAgICAgICAgICBqaXQubW92ZShBc3NlbWJseUhl
bHBlcnM6OlRydXN0ZWRJbW0zMigxKSwgc2NyYXRjaDIpOwogICAgICAgICAgICAgICAgIGppdC5s
c2hpZnQzMihzY3JhdGNoMSwgc2NyYXRjaDIpOwogICAgICAgICAgICAgICAgIGppdC5vcjMyKHNj
cmF0Y2gyLCBBc3NlbWJseUhlbHBlcnM6OkFic29sdXRlQWRkcmVzcyhhcnJheVByb2ZpbGUtPmFk
ZHJlc3NPZkFycmF5TW9kZXMoKSkpOwpAQCAtMzIyLDYgKzM1MCw3IEBAIHZvaWQgT1NSRXhpdDo6
Y29tcGlsZUV4aXQoQ0NhbGxIZWxwZXJzJiAKICAgICAgICAgfQogCiAgICAgICAgIGlmIChNZXRo
b2RPZkdldHRpbmdBVmFsdWVQcm9maWxlIHByb2ZpbGUgPSBleGl0Lm1fdmFsdWVQcm9maWxlKSB7
CisjaWYgVVNFKEpTVkFMVUU2NCkKICAgICAgICAgICAgIGlmIChleGl0Lm1fanNWYWx1ZVNvdXJj
ZS5pc0FkZHJlc3MoKSkgewogICAgICAgICAgICAgICAgIC8vIFdlIGNhbid0IGJlIHN1cmUgdGhh
dCB3ZSBoYXZlIGEgc3BhcmUgcmVnaXN0ZXIuIFNvIHVzZSB0aGUgdGFnVHlwZU51bWJlclJlZ2lz
dGVyLAogICAgICAgICAgICAgICAgIC8vIHNpbmNlIHdlIGtub3cgaG93IHRvIHJlc3RvcmUgaXQu
CkBAIC0zMzAsNiArMzU5LDMxIEBAIHZvaWQgT1NSRXhpdDo6Y29tcGlsZUV4aXQoQ0NhbGxIZWxw
ZXJzJiAKICAgICAgICAgICAgICAgICBqaXQubW92ZShBc3NlbWJseUhlbHBlcnM6OlRydXN0ZWRJ
bW02NChUYWdUeXBlTnVtYmVyKSwgR1BSSW5mbzo6dGFnVHlwZU51bWJlclJlZ2lzdGVyKTsKICAg
ICAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgICAgIHByb2ZpbGUuZW1pdFJlcG9ydFZhbHVl
KGppdCwgSlNWYWx1ZVJlZ3MoZXhpdC5tX2pzVmFsdWVTb3VyY2UuZ3ByKCkpKTsKKyNlbHNlIC8v
IG5vdCBVU0UoSlNWQUxVRTY0KQorICAgICAgICAgICAgaWYgKGV4aXQubV9qc1ZhbHVlU291cmNl
LmlzQWRkcmVzcygpKSB7CisgICAgICAgICAgICAgICAgLy8gU2F2ZSBhIHJlZ2lzdGVyIHNvIHdl
IGNhbiB1c2UgaXQuCisgICAgICAgICAgICAgICAgR1BSUmVnIHNjcmF0Y2hQYXlsb2FkID0gQXNz
ZW1ibHlIZWxwZXJzOjpzZWxlY3RTY3JhdGNoR1BSKGV4aXQubV9qc1ZhbHVlU291cmNlLmJhc2Uo
KSk7CisgICAgICAgICAgICAgICAgR1BSUmVnIHNjcmF0Y2hUYWcgPSBBc3NlbWJseUhlbHBlcnM6
OnNlbGVjdFNjcmF0Y2hHUFIoZXhpdC5tX2pzVmFsdWVTb3VyY2UuYmFzZSgpLCBzY3JhdGNoUGF5
bG9hZCk7CisgICAgICAgICAgICAgICAgaml0LnB1c2hUb1NhdmUoc2NyYXRjaFBheWxvYWQpOwor
ICAgICAgICAgICAgICAgIGppdC5wdXNoVG9TYXZlKHNjcmF0Y2hUYWcpOworCisgICAgICAgICAg
ICAgICAgSlNWYWx1ZVJlZ3Mgc2NyYXRjaChzY3JhdGNoVGFnLCBzY3JhdGNoUGF5bG9hZCk7Cisg
ICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgaml0LmxvYWRWYWx1ZShleGl0Lm1fanNW
YWx1ZVNvdXJjZS5hc0FkZHJlc3MoKSwgc2NyYXRjaCk7CisgICAgICAgICAgICAgICAgcHJvZmls
ZS5lbWl0UmVwb3J0VmFsdWUoaml0LCBzY3JhdGNoKTsKKyAgICAgICAgICAgICAgICAKKyAgICAg
ICAgICAgICAgICBqaXQucG9wVG9SZXN0b3JlKHNjcmF0Y2hUYWcpOworICAgICAgICAgICAgICAg
IGppdC5wb3BUb1Jlc3RvcmUoc2NyYXRjaFBheWxvYWQpOworICAgICAgICAgICAgfSBlbHNlIGlm
IChleGl0Lm1fanNWYWx1ZVNvdXJjZS5oYXNLbm93blRhZygpKSB7CisgICAgICAgICAgICAgICAg
R1BSUmVnIHNjcmF0Y2hUYWcgPSBBc3NlbWJseUhlbHBlcnM6OnNlbGVjdFNjcmF0Y2hHUFIoZXhp
dC5tX2pzVmFsdWVTb3VyY2UucGF5bG9hZEdQUigpKTsKKyAgICAgICAgICAgICAgICBqaXQucHVz
aFRvU2F2ZShzY3JhdGNoVGFnKTsKKyAgICAgICAgICAgICAgICBqaXQubW92ZShBc3NlbWJseUhl
bHBlcnM6OlRydXN0ZWRJbW0zMihleGl0Lm1fanNWYWx1ZVNvdXJjZS50YWcoKSksIHNjcmF0Y2hU
YWcpOworICAgICAgICAgICAgICAgIEpTVmFsdWVSZWdzIHZhbHVlKHNjcmF0Y2hUYWcsIGV4aXQu
bV9qc1ZhbHVlU291cmNlLnBheWxvYWRHUFIoKSk7CisgICAgICAgICAgICAgICAgcHJvZmlsZS5l
bWl0UmVwb3J0VmFsdWUoaml0LCB2YWx1ZSk7CisgICAgICAgICAgICAgICAgaml0LnBvcFRvUmVz
dG9yZShzY3JhdGNoVGFnKTsKKyAgICAgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgICAgIHBy
b2ZpbGUuZW1pdFJlcG9ydFZhbHVlKGppdCwgZXhpdC5tX2pzVmFsdWVTb3VyY2UucmVncygpKTsK
KyNlbmRpZiAvLyBVU0UoSlNWQUxVRTY0KQogICAgICAgICB9CiAgICAgfQogCkBAIC0zNzgsMTMg
KzQzMiwzMCBAQCB2b2lkIE9TUkV4aXQ6OmNvbXBpbGVFeGl0KENDYWxsSGVscGVycyYgCiAgICAg
ICAgIGNvbnN0IFZhbHVlUmVjb3ZlcnkmIHJlY292ZXJ5ID0gb3BlcmFuZHNbaW5kZXhdOwogCiAg
ICAgICAgIHN3aXRjaCAocmVjb3ZlcnkudGVjaG5pcXVlKCkpIHsKLSAgICAgICAgY2FzZSBJbkdQ
UjoKICAgICAgICAgY2FzZSBVbmJveGVkSW50MzJJbkdQUjoKKyAgICAgICAgY2FzZSBVbmJveGVk
Q2VsbEluR1BSOgorI2lmIFVTRShKU1ZBTFVFNjQpCisgICAgICAgIGNhc2UgSW5HUFI6CiAgICAg
ICAgIGNhc2UgVW5ib3hlZEludDUySW5HUFI6CiAgICAgICAgIGNhc2UgVW5ib3hlZFN0cmljdElu
dDUySW5HUFI6Ci0gICAgICAgIGNhc2UgVW5ib3hlZENlbGxJbkdQUjoKICAgICAgICAgICAgIGpp
dC5zdG9yZTY0KHJlY292ZXJ5LmdwcigpLCBzY3JhdGNoICsgaW5kZXgpOwogICAgICAgICAgICAg
YnJlYWs7CisjZWxzZQorICAgICAgICBjYXNlIFVuYm94ZWRCb29sZWFuSW5HUFI6CisgICAgICAg
ICAgICBqaXQuc3RvcmUzMigKKyAgICAgICAgICAgICAgICByZWNvdmVyeS5ncHIoKSwKKyAgICAg
ICAgICAgICAgICAmYml0d2lzZV9jYXN0PEVuY29kZWRWYWx1ZURlc2NyaXB0b3IqPihzY3JhdGNo
ICsgaW5kZXgpLT5hc0JpdHMucGF5bG9hZCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
ICAgIAorICAgICAgICBjYXNlIEluUGFpcjoKKyAgICAgICAgICAgIGppdC5zdG9yZTMyKAorICAg
ICAgICAgICAgICAgIHJlY292ZXJ5LnRhZ0dQUigpLAorICAgICAgICAgICAgICAgICZiaXR3aXNl
X2Nhc3Q8RW5jb2RlZFZhbHVlRGVzY3JpcHRvcio+KHNjcmF0Y2ggKyBpbmRleCktPmFzQml0cy50
YWcpOworICAgICAgICAgICAgaml0LnN0b3JlMzIoCisgICAgICAgICAgICAgICAgcmVjb3Zlcnku
cGF5bG9hZEdQUigpLAorICAgICAgICAgICAgICAgICZiaXR3aXNlX2Nhc3Q8RW5jb2RlZFZhbHVl
RGVzY3JpcHRvcio+KHNjcmF0Y2ggKyBpbmRleCktPmFzQml0cy5wYXlsb2FkKTsKKyAgICAgICAg
ICAgIGJyZWFrOworI2VuZGlmCiAKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIGJyZWFr
OwpAQCAtNDI1LDExICs0OTYsMjcgQEAgdm9pZCBPU1JFeGl0Ojpjb21waWxlRXhpdChDQ2FsbEhl
bHBlcnMmIAogICAgICAgICBjYXNlIEJvb2xlYW5EaXNwbGFjZWRJbkpTU3RhY2s6CiAgICAgICAg
IGNhc2UgSW50MzJEaXNwbGFjZWRJbkpTU3RhY2s6CiAgICAgICAgIGNhc2UgRG91YmxlRGlzcGxh
Y2VkSW5KU1N0YWNrOgorI2lmIFVTRShKU1ZBTFVFNjQpCiAgICAgICAgIGNhc2UgSW50NTJEaXNw
bGFjZWRJbkpTU3RhY2s6CiAgICAgICAgIGNhc2UgU3RyaWN0SW50NTJEaXNwbGFjZWRJbkpTU3Rh
Y2s6CiAgICAgICAgICAgICBqaXQubG9hZDY0KEFzc2VtYmx5SGVscGVyczo6YWRkcmVzc0Zvcihy
ZWNvdmVyeS52aXJ0dWFsUmVnaXN0ZXIoKSksIEdQUkluZm86OnJlZ1QwKTsKICAgICAgICAgICAg
IGppdC5zdG9yZTY0KEdQUkluZm86OnJlZ1QwLCBzY3JhdGNoICsgaW5kZXgpOwogICAgICAgICAg
ICAgYnJlYWs7CisjZWxzZQorICAgICAgICAgICAgaml0LmxvYWQzMigKKyAgICAgICAgICAgICAg
ICBBc3NlbWJseUhlbHBlcnM6OnRhZ0ZvcihyZWNvdmVyeS52aXJ0dWFsUmVnaXN0ZXIoKSksCisg
ICAgICAgICAgICAgICAgR1BSSW5mbzo6cmVnVDApOworICAgICAgICAgICAgaml0LmxvYWQzMigK
KyAgICAgICAgICAgICAgICBBc3NlbWJseUhlbHBlcnM6OnBheWxvYWRGb3IocmVjb3Zlcnkudmly
dHVhbFJlZ2lzdGVyKCkpLAorICAgICAgICAgICAgICAgIEdQUkluZm86OnJlZ1QxKTsKKyAgICAg
ICAgICAgIGppdC5zdG9yZTMyKAorICAgICAgICAgICAgICAgIEdQUkluZm86OnJlZ1QwLAorICAg
ICAgICAgICAgICAgICZiaXR3aXNlX2Nhc3Q8RW5jb2RlZFZhbHVlRGVzY3JpcHRvcio+KHNjcmF0
Y2ggKyBpbmRleCktPmFzQml0cy50YWcpOworICAgICAgICAgICAgaml0LnN0b3JlMzIoCisgICAg
ICAgICAgICAgICAgR1BSSW5mbzo6cmVnVDEsCisgICAgICAgICAgICAgICAgJmJpdHdpc2VfY2Fz
dDxFbmNvZGVkVmFsdWVEZXNjcmlwdG9yKj4oc2NyYXRjaCArIGluZGV4KS0+YXNCaXRzLnBheWxv
YWQpOworICAgICAgICAgICAgYnJlYWs7CisjZW5kaWYKIAogICAgICAgICBkZWZhdWx0OgogICAg
ICAgICAgICAgYnJlYWs7CkBAIC00NjYsMjQgKzU1Myw4MCBAQCB2b2lkIE9TUkV4aXQ6OmNvbXBp
bGVFeGl0KENDYWxsSGVscGVycyYgCiAgICAgICAgIGludCBvcGVyYW5kID0gcmVnLm9mZnNldCgp
OwogCiAgICAgICAgIHN3aXRjaCAocmVjb3ZlcnkudGVjaG5pcXVlKCkpIHsKKyAgICAgICAgY2Fz
ZSBEaXNwbGFjZWRJbkpTU3RhY2s6CisgICAgICAgIGNhc2UgSW5GUFI6CisjaWYgVVNFKEpTVkFM
VUU2NCkKICAgICAgICAgY2FzZSBJbkdQUjoKICAgICAgICAgY2FzZSBVbmJveGVkQ2VsbEluR1BS
OgotICAgICAgICBjYXNlIERpc3BsYWNlZEluSlNTdGFjazoKICAgICAgICAgY2FzZSBDZWxsRGlz
cGxhY2VkSW5KU1N0YWNrOgogICAgICAgICBjYXNlIEJvb2xlYW5EaXNwbGFjZWRJbkpTU3RhY2s6
Ci0gICAgICAgIGNhc2UgSW5GUFI6CiAgICAgICAgICAgICBqaXQubG9hZDY0KHNjcmF0Y2ggKyBp
bmRleCwgR1BSSW5mbzo6cmVnVDApOwogICAgICAgICAgICAgaml0LnN0b3JlNjQoR1BSSW5mbzo6
cmVnVDAsIEFzc2VtYmx5SGVscGVyczo6YWRkcmVzc0ZvcihvcGVyYW5kKSk7CiAgICAgICAgICAg
ICBicmVhazsKKyNlbHNlIC8vIG5vdCBVU0UoSlNWQUxVRTY0KQorICAgICAgICBjYXNlIEluUGFp
cjoKKyAgICAgICAgICAgIGppdC5sb2FkMzIoCisgICAgICAgICAgICAgICAgJmJpdHdpc2VfY2Fz
dDxFbmNvZGVkVmFsdWVEZXNjcmlwdG9yKj4oc2NyYXRjaCArIGluZGV4KS0+YXNCaXRzLnRhZywK
KyAgICAgICAgICAgICAgICBHUFJJbmZvOjpyZWdUMCk7CisgICAgICAgICAgICBqaXQubG9hZDMy
KAorICAgICAgICAgICAgICAgICZiaXR3aXNlX2Nhc3Q8RW5jb2RlZFZhbHVlRGVzY3JpcHRvcio+
KHNjcmF0Y2ggKyBpbmRleCktPmFzQml0cy5wYXlsb2FkLAorICAgICAgICAgICAgICAgIEdQUklu
Zm86OnJlZ1QxKTsKKyAgICAgICAgICAgIGppdC5zdG9yZTMyKAorICAgICAgICAgICAgICAgIEdQ
UkluZm86OnJlZ1QwLAorICAgICAgICAgICAgICAgIEFzc2VtYmx5SGVscGVyczo6dGFnRm9yKG9w
ZXJhbmQpKTsKKyAgICAgICAgICAgIGppdC5zdG9yZTMyKAorICAgICAgICAgICAgICAgIEdQUklu
Zm86OnJlZ1QxLAorICAgICAgICAgICAgICAgIEFzc2VtYmx5SGVscGVyczo6cGF5bG9hZEZvcihv
cGVyYW5kKSk7CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlIFVuYm94ZWRDZWxs
SW5HUFI6CisgICAgICAgIGNhc2UgQ2VsbERpc3BsYWNlZEluSlNTdGFjazoKKyAgICAgICAgICAg
IGppdC5sb2FkMzIoCisgICAgICAgICAgICAgICAgJmJpdHdpc2VfY2FzdDxFbmNvZGVkVmFsdWVE
ZXNjcmlwdG9yKj4oc2NyYXRjaCArIGluZGV4KS0+YXNCaXRzLnBheWxvYWQsCisgICAgICAgICAg
ICAgICAgR1BSSW5mbzo6cmVnVDApOworICAgICAgICAgICAgaml0LnN0b3JlMzIoCisgICAgICAg
ICAgICAgICAgQXNzZW1ibHlIZWxwZXJzOjpUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6Q2VsbFRhZyks
CisgICAgICAgICAgICAgICAgQXNzZW1ibHlIZWxwZXJzOjp0YWdGb3Iob3BlcmFuZCkpOworICAg
ICAgICAgICAgaml0LnN0b3JlMzIoCisgICAgICAgICAgICAgICAgR1BSSW5mbzo6cmVnVDAsCisg
ICAgICAgICAgICAgICAgQXNzZW1ibHlIZWxwZXJzOjpwYXlsb2FkRm9yKG9wZXJhbmQpKTsKKyAg
ICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgVW5ib3hlZEJvb2xlYW5JbkdQUjoKKyAg
ICAgICAgY2FzZSBCb29sZWFuRGlzcGxhY2VkSW5KU1N0YWNrOgorICAgICAgICAgICAgaml0Lmxv
YWQzMigKKyAgICAgICAgICAgICAgICAmYml0d2lzZV9jYXN0PEVuY29kZWRWYWx1ZURlc2NyaXB0
b3IqPihzY3JhdGNoICsgaW5kZXgpLT5hc0JpdHMucGF5bG9hZCwKKyAgICAgICAgICAgICAgICBH
UFJJbmZvOjpyZWdUMCk7CisgICAgICAgICAgICBqaXQuc3RvcmUzMigKKyAgICAgICAgICAgICAg
ICBBc3NlbWJseUhlbHBlcnM6OlRydXN0ZWRJbW0zMihKU1ZhbHVlOjpCb29sZWFuVGFnKSwKKyAg
ICAgICAgICAgICAgICBBc3NlbWJseUhlbHBlcnM6OnRhZ0ZvcihvcGVyYW5kKSk7CisgICAgICAg
ICAgICBqaXQuc3RvcmUzMigKKyAgICAgICAgICAgICAgICBHUFJJbmZvOjpyZWdUMCwKKyAgICAg
ICAgICAgICAgICBBc3NlbWJseUhlbHBlcnM6OnBheWxvYWRGb3Iob3BlcmFuZCkpOworICAgICAg
ICAgICAgYnJlYWs7CisjZW5kaWYgLy8gVVNFKEpTVkFMVUU2NCkKIAogICAgICAgICBjYXNlIFVu
Ym94ZWRJbnQzMkluR1BSOgogICAgICAgICBjYXNlIEludDMyRGlzcGxhY2VkSW5KU1N0YWNrOgor
I2lmIFVTRShKU1ZBTFVFNjQpCiAgICAgICAgICAgICBqaXQubG9hZDY0KHNjcmF0Y2ggKyBpbmRl
eCwgR1BSSW5mbzo6cmVnVDApOwogICAgICAgICAgICAgaml0Lnplcm9FeHRlbmQzMlRvUHRyKEdQ
UkluZm86OnJlZ1QwLCBHUFJJbmZvOjpyZWdUMCk7CiAgICAgICAgICAgICBqaXQub3I2NChHUFJJ
bmZvOjp0YWdUeXBlTnVtYmVyUmVnaXN0ZXIsIEdQUkluZm86OnJlZ1QwKTsKICAgICAgICAgICAg
IGppdC5zdG9yZTY0KEdQUkluZm86OnJlZ1QwLCBBc3NlbWJseUhlbHBlcnM6OmFkZHJlc3NGb3Io
b3BlcmFuZCkpOworI2Vsc2UKKyAgICAgICAgICAgIGppdC5sb2FkMzIoCisgICAgICAgICAgICAg
ICAgJmJpdHdpc2VfY2FzdDxFbmNvZGVkVmFsdWVEZXNjcmlwdG9yKj4oc2NyYXRjaCArIGluZGV4
KS0+YXNCaXRzLnBheWxvYWQsCisgICAgICAgICAgICAgICAgR1BSSW5mbzo6cmVnVDApOworICAg
ICAgICAgICAgaml0LnN0b3JlMzIoCisgICAgICAgICAgICAgICAgQXNzZW1ibHlIZWxwZXJzOjpU
cnVzdGVkSW1tMzIoSlNWYWx1ZTo6SW50MzJUYWcpLAorICAgICAgICAgICAgICAgIEFzc2VtYmx5
SGVscGVyczo6dGFnRm9yKG9wZXJhbmQpKTsKKyAgICAgICAgICAgIGppdC5zdG9yZTMyKAorICAg
ICAgICAgICAgICAgIEdQUkluZm86OnJlZ1QwLAorICAgICAgICAgICAgICAgIEFzc2VtYmx5SGVs
cGVyczo6cGF5bG9hZEZvcihvcGVyYW5kKSk7CisjZW5kaWYKICAgICAgICAgICAgIGJyZWFrOwog
CisjaWYgVVNFKEpTVkFMVUU2NCkKICAgICAgICAgY2FzZSBVbmJveGVkSW50NTJJbkdQUjoKICAg
ICAgICAgY2FzZSBJbnQ1MkRpc3BsYWNlZEluSlNTdGFjazoKICAgICAgICAgICAgIGppdC5sb2Fk
NjQoc2NyYXRjaCArIGluZGV4LCBHUFJJbmZvOjpyZWdUMCk7CkBAIC00OTksMjAgKzY0MiwzNCBA
QCB2b2lkIE9TUkV4aXQ6OmNvbXBpbGVFeGl0KENDYWxsSGVscGVycyYgCiAgICAgICAgICAgICBq
aXQuYm94SW50NTIoR1BSSW5mbzo6cmVnVDAsIEdQUkluZm86OnJlZ1QwLCBHUFJJbmZvOjpyZWdU
MSwgRlBSSW5mbzo6ZnBSZWdUMCk7CiAgICAgICAgICAgICBqaXQuc3RvcmU2NChHUFJJbmZvOjpy
ZWdUMCwgQXNzZW1ibHlIZWxwZXJzOjphZGRyZXNzRm9yKG9wZXJhbmQpKTsKICAgICAgICAgICAg
IGJyZWFrOworI2VuZGlmCiAKICAgICAgICAgY2FzZSBVbmJveGVkRG91YmxlSW5GUFI6CiAgICAg
ICAgIGNhc2UgRG91YmxlRGlzcGxhY2VkSW5KU1N0YWNrOgogICAgICAgICAgICAgaml0Lm1vdmUo
QXNzZW1ibHlIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKHNjcmF0Y2ggKyBpbmRleCksIEdQUkluZm86
OnJlZ1QwKTsKICAgICAgICAgICAgIGppdC5sb2FkRG91YmxlKE1hY3JvQXNzZW1ibGVyOjpBZGRy
ZXNzKEdQUkluZm86OnJlZ1QwKSwgRlBSSW5mbzo6ZnBSZWdUMCk7CiAgICAgICAgICAgICBqaXQu
cHVyaWZ5TmFOKEZQUkluZm86OmZwUmVnVDApOworI2lmIFVTRShKU1ZBTFVFNjQpCiAgICAgICAg
ICAgICBqaXQuYm94RG91YmxlKEZQUkluZm86OmZwUmVnVDAsIEdQUkluZm86OnJlZ1QwKTsKICAg
ICAgICAgICAgIGppdC5zdG9yZTY0KEdQUkluZm86OnJlZ1QwLCBBc3NlbWJseUhlbHBlcnM6OmFk
ZHJlc3NGb3Iob3BlcmFuZCkpOworI2Vsc2UKKyAgICAgICAgICAgIGppdC5zdG9yZURvdWJsZShG
UFJJbmZvOjpmcFJlZ1QwLCBBc3NlbWJseUhlbHBlcnM6OmFkZHJlc3NGb3Iob3BlcmFuZCkpOwor
I2VuZGlmCiAgICAgICAgICAgICBicmVhazsKIAogICAgICAgICBjYXNlIENvbnN0YW50OgorI2lm
IFVTRShKU1ZBTFVFNjQpCiAgICAgICAgICAgICBqaXQuc3RvcmU2NCgKICAgICAgICAgICAgICAg
ICBBc3NlbWJseUhlbHBlcnM6OlRydXN0ZWRJbW02NChKU1ZhbHVlOjplbmNvZGUocmVjb3Zlcnku
Y29uc3RhbnQoKSkpLAogICAgICAgICAgICAgICAgIEFzc2VtYmx5SGVscGVyczo6YWRkcmVzc0Zv
cihvcGVyYW5kKSk7CisjZWxzZQorICAgICAgICAgICAgaml0LnN0b3JlMzIoCisgICAgICAgICAg
ICAgICAgQXNzZW1ibHlIZWxwZXJzOjpUcnVzdGVkSW1tMzIocmVjb3ZlcnkuY29uc3RhbnQoKS50
YWcoKSksCisgICAgICAgICAgICAgICAgQXNzZW1ibHlIZWxwZXJzOjp0YWdGb3Iob3BlcmFuZCkp
OworICAgICAgICAgICAgaml0LnN0b3JlMzIoCisgICAgICAgICAgICAgICAgQXNzZW1ibHlIZWxw
ZXJzOjpUcnVzdGVkSW1tMzIocmVjb3ZlcnkuY29uc3RhbnQoKS5wYXlsb2FkKCkpLAorICAgICAg
ICAgICAgICAgIEFzc2VtYmx5SGVscGVyczo6cGF5bG9hZEZvcihvcGVyYW5kKSk7CisjZW5kaWYK
ICAgICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgIGNhc2UgRGlyZWN0QXJndW1lbnRzVGhhdFdl
cmVOb3RDcmVhdGVkOgpAQCAtNTc5LDcgKzczNiw2IEBAIHZvaWQgT1NSRXhpdDo6Y29tcGlsZUV4
aXQoQ0NhbGxIZWxwZXJzJiAKICAgICAvLyBBbmQgZmluaXNoLgogICAgIGFkanVzdEFuZEp1bXBU
b1RhcmdldCh2bSwgaml0LCBleGl0KTsKIH0KLSNlbmRpZiAvLyBVU0UoSlNWQUxVRTY0KQogCiB2
b2lkIEpJVF9PUEVSQVRJT04gT1NSRXhpdDo6ZGVidWdPcGVyYXRpb25QcmludFNwZWN1bGF0aW9u
RmFpbHVyZShFeGVjU3RhdGUqIGV4ZWMsIHZvaWQqIGRlYnVnSW5mb1Jhdywgdm9pZCogc2NyYXRj
aCkKIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvR1BSSW5mby5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvR1BSSW5mby5oCShyZXZpc2lvbiAyMjAz
MDUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0dQUkluZm8uaAkod29ya2luZyBjb3B5
KQpAQCAtMTM5LDcgKzEzOSw5IEBAIHB1YmxpYzoKICAgICAgICAgQVNTRVJUKCFpc0FkZHJlc3Mo
KSk7CiAgICAgICAgIHJldHVybiBtX2Jhc2U7CiAgICAgfQotICAgIAorCisgICAgR1BSUmVnIHBh
eWxvYWRHUFIoKSBjb25zdCB7IHJldHVybiBncHIoKTsgfQorCiAgICAgSlNWYWx1ZVJlZ3MgcmVn
cygpIGNvbnN0CiAgICAgewogICAgICAgICByZXR1cm4gSlNWYWx1ZVJlZ3MoZ3ByKCkpOwo=
</data>
<flag name="review"
          id="337919"
          type_id="1"
          status="+"
          setter="saam"
    />
          </attachment>
      

    </bug>

</bugzilla>