<?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>89617</bug_id>
          
          <creation_ts>2012-06-20 17:05:51 -0700</creation_ts>
          <short_desc>DFG should optimize ResolveGlobal</short_desc>
          <delta_ts>2012-06-20 18:39:06 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Filip Pizlo">fpizlo</reporter>
          <assigned_to name="Filip Pizlo">fpizlo</assigned_to>
          <cc>rakuco</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>654020</commentid>
    <comment_count>0</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-06-20 17:05:51 -0700</bug_when>
    <thetext>And it should even do specific function optimizations on common things, like the Array constructor.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>654033</commentid>
    <comment_count>1</comment_count>
      <attachid>148686</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-06-20 17:13:28 -0700</bug_when>
    <thetext>Created attachment 148686
work in progress</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>654039</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-06-20 17:17:00 -0700</bug_when>
    <thetext>Attachment 148686 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/JavaScriptCore/JavaScriptCore.xcode...&quot; exit_code: 1
Source/JavaScriptCore/runtime/JSObject.h:49:  The parameter name &quot;cell&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Total errors found: 1 in 10 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>654041</commentid>
    <comment_count>3</comment_count>
      <attachid>148688</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-06-20 17:20:31 -0700</bug_when>
    <thetext>Created attachment 148688
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>654079</commentid>
    <comment_count>4</comment_count>
      <attachid>148688</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-06-20 18:05:24 -0700</bug_when>
    <thetext>Comment on attachment 148688
the patch

Attachment 148688 did not pass win-ews (win):
Output: http://queues.webkit.org/results/13023029</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>654116</commentid>
    <comment_count>5</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-06-20 18:39:06 -0700</bug_when>
    <thetext>Landed in http://trac.webkit.org/changeset/120897</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>148686</attachid>
            <date>2012-06-20 17:13:28 -0700</date>
            <delta_ts>2012-06-20 17:20:31 -0700</delta_ts>
            <desc>work in progress</desc>
            <filename>resolveglobal_patch_1.diff</filename>
            <type>text/plain</type>
            <size>25461</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2Ny
aXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAxMjA4ODYpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagkod29ya2luZyBjb3B5KQpAQCAtMjExLDYgKzIxMSw4IEBACiAJCTBGRjQyNzU3MTU5MTRB
MjAwMDRDQjlGRiAvKiBMaW5rQnVmZmVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDBGRjQyNzU2MTU5MTRBMjAwMDRDQjlGRiAvKiBMaW5rQnVmZmVy
LmNwcCAqLzsgfTsKIAkJMEZGNDI3NjQxNTkxQTFDQzAwNENCOUZGIC8qIERGR0Rpc2Fzc2VtYmxl
ci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkY0
Mjc2MTE1OTFBMUM5MDA0Q0I5RkYgLyogREZHRGlzYXNzZW1ibGVyLmNwcCAqLzsgfTsKIAkJMEZG
NDI3NjUxNTkxQTFDRTAwNENCOUZGIC8qIERGR0Rpc2Fzc2VtYmxlci5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZGNDI3NjIxNTkxQTFDOTAwNENCOUZG
IC8qIERGR0Rpc2Fzc2VtYmxlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CisJCTBGRjQyNzcxMTU5Mjc1RDUwMDRDQjlGRiAvKiBSZXNvbHZlR2xvYmFs
U3RhdHVzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDBGRjQyNzZFMTU5Mjc1RDIwMDRDQjlGRiAvKiBSZXNvbHZlR2xvYmFsU3RhdHVzLmNwcCAqLzsg
fTsKKwkJMEZGNDI3NzIxNTkyNzVEODAwNENCOUZGIC8qIFJlc29sdmVHbG9iYWxTdGF0dXMuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGRjQyNzZGMTU5
Mjc1RDIwMDRDQjlGRiAvKiBSZXNvbHZlR2xvYmFsU3RhdHVzLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEZGOTIyRDQxNEY0NkI0MTAwNDFBMjRF
IC8qIExMSW50T2Zmc2V0c0V4dHJhY3Rvci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAwRjQ2ODBBMTE0QkE3RjgyMDBCRkUyNzIgLyogTExJbnRPZmZz
ZXRzRXh0cmFjdG9yLmNwcCAqLzsgfTsKIAkJMEZGRkM5NTcxNEVGOTBBMDAwQzcyNTMyIC8qIERG
R0NGQVBoYXNlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDBGRkZDOTRCMTRFRjkwOTUwMEM3MjUzMiAvKiBERkdDRkFQaGFzZS5jcHAgKi87IH07CiAJ
CTBGRkZDOTU4MTRFRjkwQTIwMEM3MjUzMiAvKiBERkdDRkFQaGFzZS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZGRkM5NEMxNEVGOTA5NTAwQzcyNTMy
IC8qIERGR0NGQVBoYXNlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKQEAgLTkzMyw2ICs5MzUsOCBAQAogCQkwRkY0Mjc1NjE1OTE0QTIwMDA0Q0I5RkYg
LyogTGlua0J1ZmZlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBM
aW5rQnVmZmVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEZGNDI3NjExNTkx
QTFDOTAwNENCOUZGIC8qIERGR0Rpc2Fzc2VtYmxlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IG5hbWUgPSBERkdEaXNhc3NlbWJsZXIuY3BwOyBwYXRoID0gZGZnL0RGR0Rpc2Fz
c2VtYmxlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGRjQyNzYyMTU5MUEx
QzkwMDRDQjlGRiAvKiBERkdEaXNhc3NlbWJsZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBuYW1lID0gREZHRGlzYXNzZW1ibGVyLmg7IHBhdGggPSBkZmcvREZHRGlzYXNzZW1ibGVyLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGRjQyNzZFMTU5Mjc1RDIwMDRDQjlGRiAv
KiBSZXNvbHZlR2xvYmFsU3RhdHVzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IFJlc29sdmVHbG9iYWxTdGF0dXMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQkwRkY0Mjc2RjE1OTI3NUQyMDA0Q0I5RkYgLyogUmVzb2x2ZUdsb2JhbFN0YXR1cy5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZXNvbHZlR2xvYmFsU3RhdHVzLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGRjkyMkNGMTRGNDZCMTMwMDQxQTI0RSAvKiBK
U0NMTEludE9mZnNldHNFeHRyYWN0b3IgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZXhw
bGljaXRGaWxlVHlwZSA9ICJjb21waWxlZC5tYWNoLW8uZXhlY3V0YWJsZSI7IGluY2x1ZGVJbklu
ZGV4ID0gMDsgcGF0aCA9IEpTQ0xMSW50T2Zmc2V0c0V4dHJhY3Rvcjsgc291cmNlVHJlZSA9IEJV
SUxUX1BST0RVQ1RTX0RJUjsgfTsKIAkJMEZGRkM5NEIxNEVGOTA5NTAwQzcyNTMyIC8qIERGR0NG
QVBoYXNlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IERGR0NGQVBo
YXNlLmNwcDsgcGF0aCA9IGRmZy9ERkdDRkFQaGFzZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTBGRkZDOTRDMTRFRjkwOTUwMEM3MjUzMiAvKiBERkdDRkFQaGFzZS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBERkdDRkFQaGFzZS5oOyBwYXRoID0gZGZnL0RG
R0NGQVBoYXNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yMzQ3LDYgKzIzNTEs
OCBAQAogCQkJCTBGOTMzMjk4MTRDQTdEQzEwMDg1RjNDNiAvKiBNZXRob2RDYWxsTGlua1N0YXR1
cy5oICovLAogCQkJCTBGOTMzMjk5MTRDQTdEQzEwMDg1RjNDNiAvKiBQdXRCeUlkU3RhdHVzLmNw
cCAqLywKIAkJCQkwRjkzMzI5QTE0Q0E3REMxMDA4NUYzQzYgLyogUHV0QnlJZFN0YXR1cy5oICov
LAorCQkJCTBGRjQyNzZFMTU5Mjc1RDIwMDRDQjlGRiAvKiBSZXNvbHZlR2xvYmFsU3RhdHVzLmNw
cCAqLywKKwkJCQkwRkY0Mjc2RjE1OTI3NUQyMDA0Q0I5RkYgLyogUmVzb2x2ZUdsb2JhbFN0YXR1
cy5oICovLAogCQkJCTBGOTMzMjlCMTRDQTdEQzEwMDg1RjNDNiAvKiBTdHJ1Y3R1cmVTZXQuaCAq
LywKIAkJCQkwRjBCODNCODE0QkNGOTVCMDA4ODVCNEYgLyogQ2FsbFJldHVybk9mZnNldFRvQnl0
ZWNvZGVPZmZzZXQuaCAqLywKIAkJCQkwRjBCODNCNjE0QkNGOERGMDA4ODVCNEYgLyogR2xvYmFs
UmVzb2x2ZUluZm8uaCAqLywKQEAgLTI3NjYsNiArMjc3Miw3IEBACiAJCQkJMEZGNDI3NDkxNThF
QkU5MTAwNENCOUZGIC8qIHVkaXM4Nl90eXBlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZGNDI3
NEIxNThFQkU5MTAwNENCOUZGIC8qIHVkaXM4Ni5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEZGNDI3
NjUxNTkxQTFDRTAwNENCOUZGIC8qIERGR0Rpc2Fzc2VtYmxlci5oIGluIEhlYWRlcnMgKi8sCisJ
CQkJMEZGNDI3NzIxNTkyNzVEODAwNENCOUZGIC8qIFJlc29sdmVHbG9iYWxTdGF0dXMuaCBpbiBI
ZWFkZXJzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3Npbmcg
PSAwOwogCQl9OwpAQCAtMzM1Myw2ICszMzYwLDcgQEAKIAkJCQkwRkY0Mjc1NzE1OTE0QTIwMDA0
Q0I5RkYgLyogTGlua0J1ZmZlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlDMkQ1OEMzNDE1OTEy
RkVFMDAyMUE4NDQgLyogR0NBY3Rpdml0eUNhbGxiYWNrLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTBGRjQyNzY0MTU5MUExQ0MwMDRDQjlGRiAvKiBERkdEaXNhc3NlbWJsZXIuY3BwIGluIFNvdXJj
ZXMgKi8sCisJCQkJMEZGNDI3NzExNTkyNzVENTAwNENCOUZGIC8qIFJlc29sdmVHbG9iYWxTdGF0
dXMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0
cHJvY2Vzc2luZyA9IDA7CiAJCX07CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvQ29kZUJsb2NrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQ29kZUJsb2NrLmNwcAkocmV2aXNpb24gMTIwODg2KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIyNTgsNiAr
MjI1OCwxMCBAQCBib29sIENvZGVCbG9jazo6aGFzR2xvYmFsUmVzb2x2ZUluZm9BdEJ5CiAgICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KK0dsb2JhbFJlc29sdmVJbmZv
JiBDb2RlQmxvY2s6Omdsb2JhbFJlc29sdmVJbmZvRm9yQnl0ZWNvZGVPZmZzZXQodW5zaWduZWQg
Ynl0ZWNvZGVPZmZzZXQpCit7CisgICAgcmV0dXJuICooYmluYXJ5U2VhcmNoPEdsb2JhbFJlc29s
dmVJbmZvLCB1bnNpZ25lZCwgZ2V0R2xvYmFsUmVzb2x2ZUluZm9CeXRlY29kZU9mZnNldD4obV9n
bG9iYWxSZXNvbHZlSW5mb3MuYmVnaW4oKSwgbV9nbG9iYWxSZXNvbHZlSW5mb3Muc2l6ZSgpLCBi
eXRlY29kZU9mZnNldCkpOworfQogI2VuZGlmCiAKIHZvaWQgQ29kZUJsb2NrOjpzaHJpbmtUb0Zp
dChTaHJpbmtNb2RlIHNocmlua01vZGUpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQ29kZUJsb2NrLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0NvZGVCbG9jay5oCShyZXZpc2lvbiAxMjA4ODYpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgJKHdvcmtpbmcgY29weSkKQEAgLTU1Myw2ICs1NTMs
OCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgfQogICAgICAgICBHbG9iYWxSZXNvbHZlSW5m
byYgZ2xvYmFsUmVzb2x2ZUluZm8oaW50IGluZGV4KSB7IHJldHVybiBtX2dsb2JhbFJlc29sdmVJ
bmZvc1tpbmRleF07IH0KICAgICAgICAgYm9vbCBoYXNHbG9iYWxSZXNvbHZlSW5mb0F0Qnl0ZWNv
ZGVPZmZzZXQodW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQpOworICAgICAgICBHbG9iYWxSZXNvbHZl
SW5mbyYgZ2xvYmFsUmVzb2x2ZUluZm9Gb3JCeXRlY29kZU9mZnNldCh1bnNpZ25lZCBieXRlY29k
ZU9mZnNldCk7CisgICAgICAgIHVuc2lnbmVkIG51bWJlck9mR2xvYmFsUmVzb2x2ZUluZm9zKCkg
eyByZXR1cm4gbV9nbG9iYWxSZXNvbHZlSW5mb3Muc2l6ZSgpOyB9CiAKICAgICAgICAgdm9pZCBz
ZXROdW1iZXJPZkNhbGxMaW5rSW5mb3Moc2l6ZV90IHNpemUpIHsgbV9jYWxsTGlua0luZm9zLmdy
b3coc2l6ZSk7IH0KICAgICAgICAgc2l6ZV90IG51bWJlck9mQ2FsbExpbmtJbmZvcygpIGNvbnN0
IHsgcmV0dXJuIG1fY2FsbExpbmtJbmZvcy5zaXplKCk7IH0KSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9HbG9iYWxSZXNvbHZlSW5mby5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9HbG9iYWxSZXNvbHZlSW5mby5oCShyZXZpc2lvbiAx
MjA4ODYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvR2xvYmFsUmVzb2x2ZUlu
Zm8uaAkod29ya2luZyBjb3B5KQpAQCAtNDIsNiArNDIsMTEgQEAgc3RydWN0IEdsb2JhbFJlc29s
dmVJbmZvIHsKICAgICB1bnNpZ25lZCBieXRlY29kZU9mZnNldDsKIH07CiAKK2lubGluZSB1bnNp
Z25lZCBnZXRHbG9iYWxSZXNvbHZlSW5mb0J5dGVjb2RlT2Zmc2V0KEdsb2JhbFJlc29sdmVJbmZv
KiBnbG9iYWxSZXNvbHZlSW5mbykKK3sKKyAgICByZXR1cm4gZ2xvYmFsUmVzb2x2ZUluZm8tPmJ5
dGVjb2RlT2Zmc2V0OworfQorCiB9IC8vIG5hbWVzcGFjZSBKU0MKIAogI2VuZGlmIC8vIEdsb2Jh
bFJlc29sdmVJbmZvX2gKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9SZXNv
bHZlR2xvYmFsU3RhdHVzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvUmVzb2x2ZUdsb2JhbFN0YXR1cy5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUmVzb2x2ZUdsb2JhbFN0YXR1cy5jcHAJKHJldmlzaW9u
IDApCkBAIC0wLDAgKzEsODggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAq
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlJlc29sdmVHbG9iYWxT
dGF0dXMuaCIKKworI2luY2x1ZGUgIkNvZGVCbG9jay5oIgorI2luY2x1ZGUgIkpTVmFsdWUuaCIK
KyNpbmNsdWRlICJTdHJ1Y3R1cmUuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK3N0YXRpYyBSZXNv
bHZlR2xvYmFsU3RhdHVzIGNvbXB1dGVGb3JTdHJ1Y3R1cmUoQ29kZUJsb2NrKiBjb2RlQmxvY2ss
IFN0cnVjdHVyZSogc3RydWN0dXJlLCBJZGVudGlmaWVyJiBpZGVudGlmaWVyKQoreworICAgIHVu
c2lnbmVkIGF0dHJpYnV0ZXNJZ25vcmVkOworICAgIEpTQ2VsbCogc3BlY2lmaWNWYWx1ZTsKKyAg
ICBzaXplX3Qgb2Zmc2V0ID0gc3RydWN0dXJlLT5nZXQoCisgICAgICAgICpjb2RlQmxvY2stPmds
b2JhbERhdGEoKSwgaWRlbnRpZmllciwgYXR0cmlidXRlc0lnbm9yZWQsIHNwZWNpZmljVmFsdWUp
OworICAgIGlmIChvZmZzZXQgPT0gbm90Rm91bmQpCisgICAgICAgIHJldHVybiBSZXNvbHZlR2xv
YmFsU3RhdHVzKCk7CisgICAgCisgICAgcmV0dXJuIFJlc29sdmVHbG9iYWxTdGF0dXMoUmVzb2x2
ZUdsb2JhbFN0YXR1czo6U2ltcGxlLCBzdHJ1Y3R1cmUsIG9mZnNldCwgc3BlY2lmaWNWYWx1ZSk7
Cit9CisKK3N0YXRpYyBSZXNvbHZlR2xvYmFsU3RhdHVzIGNvbXB1dGVGb3JMTEludChDb2RlQmxv
Y2sqIGNvZGVCbG9jaywgdW5zaWduZWQgYnl0ZWNvZGVJbmRleCwgSWRlbnRpZmllciYgaWRlbnRp
ZmllcikKK3sKKyNpZiBFTkFCTEUoTExJTlQpCisgICAgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9u
ID0gY29kZUJsb2NrLT5pbnN0cnVjdGlvbnMoKS5iZWdpbigpICsgYnl0ZWNvZGVJbmRleDsKKyAg
ICAKKyAgICBBU1NFUlQoaW5zdHJ1Y3Rpb25bMF0udS5vcGNvZGUgPT0gbGxpbnRfb3BfcmVzb2x2
ZV9nbG9iYWwpOworICAgIAorICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gaW5zdHJ1Y3Rpb25b
M10udS5zdHJ1Y3R1cmUuZ2V0KCk7CisgICAgaWYgKCFzdHJ1Y3R1cmUpCisgICAgICAgIHJldHVy
biBSZXNvbHZlR2xvYmFsU3RhdHVzKCk7CisgICAgCisgICAgcmV0dXJuIGNvbXB1dGVGb3JTdHJ1
Y3R1cmUoY29kZUJsb2NrLCBzdHJ1Y3R1cmUsIGlkZW50aWZpZXIpOworI2Vsc2UKKyAgICBVTlVT
RURfUEFSQU0oY29kZUJsb2NrKTsKKyAgICBVTlVTRURfUEFSQU0oYnl0ZWNvZGVJbmRleCk7Cisg
ICAgVU5VU0VEX1BBUkFNKGlkZW50aWZpZXIpOworICAgIHJldHVybiBSZXNvbHZlR2xvYmFsU3Rh
dHVzKCk7CisjZW5kaWYKK30KKworUmVzb2x2ZUdsb2JhbFN0YXR1cyBSZXNvbHZlR2xvYmFsU3Rh
dHVzOjpjb21wdXRlRm9yKENvZGVCbG9jayogY29kZUJsb2NrLCB1bnNpZ25lZCBieXRlY29kZUlu
ZGV4LCBJZGVudGlmaWVyJiBpZGVudGlmaWVyKQoreworI2lmIEVOQUJMRShKSVQpICYmIEVOQUJM
RShWQUxVRV9QUk9GSUxFUikKKyAgICBpZiAoIWNvZGVCbG9jay0+bnVtYmVyT2ZHbG9iYWxSZXNv
bHZlSW5mb3MoKSkKKyAgICAgICAgcmV0dXJuIGNvbXB1dGVGb3JMTEludChjb2RlQmxvY2ssIGJ5
dGVjb2RlSW5kZXgsIGlkZW50aWZpZXIpOworICAgIAorICAgIGlmIChjb2RlQmxvY2stPmxpa2Vs
eVRvVGFrZVNsb3dDYXNlKGJ5dGVjb2RlSW5kZXgpKQorICAgICAgICByZXR1cm4gUmVzb2x2ZUds
b2JhbFN0YXR1cyhUYWtlc1Nsb3dQYXRoKTsKKyAgICAKKyAgICBHbG9iYWxSZXNvbHZlSW5mbyYg
Z2xvYmFsUmVzb2x2ZUluZm8gPSBjb2RlQmxvY2stPmdsb2JhbFJlc29sdmVJbmZvRm9yQnl0ZWNv
ZGVPZmZzZXQoYnl0ZWNvZGVJbmRleCk7CisgICAgCisgICAgaWYgKCFnbG9iYWxSZXNvbHZlSW5m
by5zdHJ1Y3R1cmUpCisgICAgICAgIHJldHVybiBjb21wdXRlRm9yTExJbnQoY29kZUJsb2NrLCBi
eXRlY29kZUluZGV4LCBpZGVudGlmaWVyKTsKKyAgICAKKyAgICByZXR1cm4gY29tcHV0ZUZvclN0
cnVjdHVyZShjb2RlQmxvY2ssIGdsb2JhbFJlc29sdmVJbmZvLnN0cnVjdHVyZS5nZXQoKSwgaWRl
bnRpZmllcik7CisjZWxzZQorICAgIHJldHVybiBjb21wdXRlRm9yTExJbnQoY29kZUJsb2NrLCBi
eXRlY29kZUluZGV4LCBpZGVudGlmaWVyKTsKKyNlbmRpZgorfQorCit9IC8vIG5hbWVzcGFjZSBK
U0MKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1Jlc29sdmVHbG9iYWxT
dGF0dXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUmVz
b2x2ZUdsb2JhbFN0YXR1cy5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL1Jlc29sdmVHbG9iYWxTdGF0dXMuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw4
NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgor
ICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZu
ZGVmIFJlc29sdmVHbG9iYWxTdGF0dXNfaAorI2RlZmluZSBSZXNvbHZlR2xvYmFsU3RhdHVzX2gK
KworI2luY2x1ZGUgIkpTVmFsdWUuaCIKKyNpbmNsdWRlIDx3dGYvTm90Rm91bmQuaD4KKworbmFt
ZXNwYWNlIEpTQyB7CisKK2NsYXNzIENvZGVCbG9jazsKK2NsYXNzIElkZW50aWZpZXI7CitjbGFz
cyBTdHJ1Y3R1cmU7CisKK2NsYXNzIFJlc29sdmVHbG9iYWxTdGF0dXMgeworcHVibGljOgorICAg
IGVudW0gU3RhdGUgeworICAgICAgICBOb0luZm9ybWF0aW9uLAorICAgICAgICBTaW1wbGUsCisg
ICAgICAgIFRha2VzU2xvd1BhdGgKKyAgICB9OworICAgIAorICAgIFJlc29sdmVHbG9iYWxTdGF0
dXMoKQorICAgICAgICA6IG1fc3RhdGUoTm9JbmZvcm1hdGlvbikKKyAgICAgICAgLCBtX3N0cnVj
dHVyZSgwKQorICAgICAgICAsIG1fb2Zmc2V0KG5vdEZvdW5kKQorICAgIHsKKyAgICB9CisgICAg
CisgICAgUmVzb2x2ZUdsb2JhbFN0YXR1cygKKyAgICAgICAgU3RhdGUgc3RhdGUsIFN0cnVjdHVy
ZSogc3RydWN0dXJlID0gMCwgc2l6ZV90IG9mZnNldCA9IG5vdEZvdW5kLAorICAgICAgICBKU1Zh
bHVlIHNwZWNpZmljVmFsdWUgPSBKU1ZhbHVlKCkpCisgICAgICAgIDogbV9zdGF0ZShzdGF0ZSkK
KyAgICAgICAgLCBtX3N0cnVjdHVyZShzdHJ1Y3R1cmUpCisgICAgICAgICwgbV9vZmZzZXQob2Zm
c2V0KQorICAgICAgICAsIG1fc3BlY2lmaWNWYWx1ZShzcGVjaWZpY1ZhbHVlKQorICAgIHsKKyAg
ICB9CisgICAgCisgICAgc3RhdGljIFJlc29sdmVHbG9iYWxTdGF0dXMgY29tcHV0ZUZvcihDb2Rl
QmxvY2sqLCB1bnNpZ25lZCBieXRlY29kZUluZGV4LCBJZGVudGlmaWVyJik7CisgICAgCisgICAg
U3RhdGUgc3RhdGUoKSBjb25zdCB7IHJldHVybiBtX3N0YXRlOyB9CisgICAgCisgICAgYm9vbCBp
c1NldCgpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGUgIT0gTm9JbmZvcm1hdGlvbjsgfQorICAgIGJv
b2wgb3BlcmF0b3IhKCkgY29uc3QgeyByZXR1cm4gIWlzU2V0KCk7IH0KKyAgICBib29sIGlzU2lt
cGxlKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0ZSA9PSBTaW1wbGU7IH0KKyAgICBib29sIHRha2Vz
U2xvd1BhdGgoKSBjb25zdCB7IHJldHVybiBtX3N0YXRlID09IFRha2VzU2xvd1BhdGg7IH0KKyAg
ICAKKyAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3RydWN0dXJl
OyB9CisgICAgc2l6ZV90IG9mZnNldCgpIGNvbnN0IHsgcmV0dXJuIG1fb2Zmc2V0OyB9CisgICAg
SlNWYWx1ZSBzcGVjaWZpY1ZhbHVlKCkgY29uc3QgeyByZXR1cm4gbV9zcGVjaWZpY1ZhbHVlOyB9
CisKK3ByaXZhdGU6CisgICAgU3RhdGUgbV9zdGF0ZTsKKyAgICBTdHJ1Y3R1cmUqIG1fc3RydWN0
dXJlOworICAgIHNpemVfdCBtX29mZnNldDsKKyAgICBKU1ZhbHVlIG1fc3BlY2lmaWNWYWx1ZTsK
K307IC8vIGNsYXNzIFJlc29sdmVHbG9iYWxTdGF0dXMKKworfSAvLyBuYW1lc3BhY2UgSlNDCisK
KyNlbmRpZiAvLyBSZXNvbHZlR2xvYmFsU3RhdHVzX2gKKwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAJKHJldmlzaW9uIDEyMDg4NikK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zNSw2ICszNSw3IEBACiAjaW5jbHVkZSAiR2V0QnlJZFN0YXR1cy5oIgog
I2luY2x1ZGUgIk1ldGhvZENhbGxMaW5rU3RhdHVzLmgiCiAjaW5jbHVkZSAiUHV0QnlJZFN0YXR1
cy5oIgorI2luY2x1ZGUgIlJlc29sdmVHbG9iYWxTdGF0dXMuaCIKICNpbmNsdWRlIDx3dGYvSGFz
aE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+CiAKQEAgLTk0LDYgKzk1LDkgQEAg
cHJpdmF0ZToKICAgICB2b2lkIHNldEludHJpbnNpY1Jlc3VsdChib29sIHVzZXNSZXN1bHQsIGlu
dCByZXN1bHRPcGVyYW5kLCBOb2RlSW5kZXgpOwogICAgIC8vIEhhbmRsZSBpbnRyaW5zaWMgZnVu
Y3Rpb25zLiBSZXR1cm4gdHJ1ZSBpZiBpdCBzdWNjZWVkZWQsIGZhbHNlIGlmIHdlIG5lZWQgdG8g
cGxhbnQgYSBjYWxsLgogICAgIGJvb2wgaGFuZGxlSW50cmluc2ljKGJvb2wgdXNlc1Jlc3VsdCwg
aW50IHJlc3VsdE9wZXJhbmQsIEludHJpbnNpYywgaW50IHJlZ2lzdGVyT2Zmc2V0LCBpbnQgYXJn
dW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIFNwZWN1bGF0ZWRUeXBlIHByZWRpY3Rpb24pOworICAg
IHZvaWQgaGFuZGxlR2V0QnlPZmZzZXQoCisgICAgICAgIGludCBkZXN0aW5hdGlvbk9wZXJhbmQs
IFNwZWN1bGF0ZWRUeXBlLCBOb2RlSW5kZXggYmFzZSwgdW5zaWduZWQgaWRlbnRpZmllck51bWJl
ciwKKyAgICAgICAgYm9vbCB1c2VJbmxpbmVTdG9yYWdlLCBzaXplX3Qgb2Zmc2V0KTsKICAgICB2
b2lkIGhhbmRsZUdldEJ5SWQoCiAgICAgICAgIGludCBkZXN0aW5hdGlvbk9wZXJhbmQsIFNwZWN1
bGF0ZWRUeXBlLCBOb2RlSW5kZXggYmFzZSwgdW5zaWduZWQgaWRlbnRpZmllck51bWJlciwKICAg
ICAgICAgY29uc3QgR2V0QnlJZFN0YXR1cyYpOwpAQCAtMTU2Nyw2ICsxNTcxLDMxIEBAIGJvb2wg
Qnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUludHJpbnNpYyhib28KICAgICB9CiB9CiAKK3ZvaWQgQnl0
ZUNvZGVQYXJzZXI6OmhhbmRsZUdldEJ5T2Zmc2V0KAorICAgIGludCBkZXN0aW5hdGlvbk9wZXJh
bmQsIFNwZWN1bGF0ZWRUeXBlIHByZWRpY3Rpb24sIE5vZGVJbmRleCBiYXNlLCB1bnNpZ25lZCBp
ZGVudGlmaWVyTnVtYmVyLAorICAgIGJvb2wgdXNlSW5saW5lU3RvcmFnZSwgc2l6ZV90IG9mZnNl
dCkKK3sKKyAgICBOb2RlSW5kZXggcHJvcGVydHlTdG9yYWdlOworICAgIHNpemVfdCBvZmZzZXRP
ZmZzZXQ7CisgICAgaWYgKHVzZUlubGluZVN0b3JhZ2UpIHsKKyAgICAgICAgcHJvcGVydHlTdG9y
YWdlID0gYmFzZTsKKyAgICAgICAgQVNTRVJUKCEoc2l6ZW9mKEpTT2JqZWN0KSAlIHNpemVvZihF
bmNvZGVkSlNWYWx1ZSkpKTsKKyAgICAgICAgb2Zmc2V0T2Zmc2V0ID0gc2l6ZW9mKEpTT2JqZWN0
KSAvIHNpemVvZihFbmNvZGVkSlNWYWx1ZSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgcHJvcGVy
dHlTdG9yYWdlID0gYWRkVG9HcmFwaChHZXRQcm9wZXJ0eVN0b3JhZ2UsIGJhc2UpOworICAgICAg
ICBvZmZzZXRPZmZzZXQgPSAwOworICAgIH0KKyAgICBzZXQoZGVzdGluYXRpb25PcGVyYW5kLAor
ICAgICAgICBhZGRUb0dyYXBoKAorICAgICAgICAgICAgR2V0QnlPZmZzZXQsIE9wSW5mbyhtX2dy
YXBoLm1fc3RvcmFnZUFjY2Vzc0RhdGEuc2l6ZSgpKSwgT3BJbmZvKHByZWRpY3Rpb24pLAorICAg
ICAgICAgICAgcHJvcGVydHlTdG9yYWdlKSk7CisgICAgICAgIAorICAgIFN0b3JhZ2VBY2Nlc3NE
YXRhIHN0b3JhZ2VBY2Nlc3NEYXRhOworICAgIHN0b3JhZ2VBY2Nlc3NEYXRhLm9mZnNldCA9IG9m
ZnNldCArIG9mZnNldE9mZnNldDsKKyAgICBzdG9yYWdlQWNjZXNzRGF0YS5pZGVudGlmaWVyTnVt
YmVyID0gaWRlbnRpZmllck51bWJlcjsKKyAgICBtX2dyYXBoLm1fc3RvcmFnZUFjY2Vzc0RhdGEu
YXBwZW5kKHN0b3JhZ2VBY2Nlc3NEYXRhKTsKK30KKwogdm9pZCBCeXRlQ29kZVBhcnNlcjo6aGFu
ZGxlR2V0QnlJZCgKICAgICBpbnQgZGVzdGluYXRpb25PcGVyYW5kLCBTcGVjdWxhdGVkVHlwZSBw
cmVkaWN0aW9uLCBOb2RlSW5kZXggYmFzZSwgdW5zaWduZWQgaWRlbnRpZmllck51bWJlciwKICAg
ICBjb25zdCBHZXRCeUlkU3RhdHVzJiBnZXRCeUlkU3RhdHVzKQpAQCAtMTYyMCwyNSArMTY0OSw5
IEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUdldEJ5SWQoCiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAgICAgCi0gICAgTm9kZUluZGV4IHByb3BlcnR5U3RvcmFnZTsKLSAgICBzaXplX3Qg
b2Zmc2V0T2Zmc2V0OwotICAgIGlmICh1c2VJbmxpbmVTdG9yYWdlKSB7Ci0gICAgICAgIHByb3Bl
cnR5U3RvcmFnZSA9IGJhc2U7Ci0gICAgICAgIEFTU0VSVCghKHNpemVvZihKU09iamVjdCkgJSBz
aXplb2YoRW5jb2RlZEpTVmFsdWUpKSk7Ci0gICAgICAgIG9mZnNldE9mZnNldCA9IHNpemVvZihK
U09iamVjdCkgLyBzaXplb2YoRW5jb2RlZEpTVmFsdWUpOwotICAgIH0gZWxzZSB7Ci0gICAgICAg
IHByb3BlcnR5U3RvcmFnZSA9IGFkZFRvR3JhcGgoR2V0UHJvcGVydHlTdG9yYWdlLCBiYXNlKTsK
LSAgICAgICAgb2Zmc2V0T2Zmc2V0ID0gMDsKLSAgICB9Ci0gICAgc2V0KGRlc3RpbmF0aW9uT3Bl
cmFuZCwKLSAgICAgICAgYWRkVG9HcmFwaCgKLSAgICAgICAgICAgIEdldEJ5T2Zmc2V0LCBPcElu
Zm8obV9ncmFwaC5tX3N0b3JhZ2VBY2Nlc3NEYXRhLnNpemUoKSksIE9wSW5mbyhwcmVkaWN0aW9u
KSwKLSAgICAgICAgICAgIHByb3BlcnR5U3RvcmFnZSkpOwotICAgICAgICAKLSAgICBTdG9yYWdl
QWNjZXNzRGF0YSBzdG9yYWdlQWNjZXNzRGF0YTsKLSAgICBzdG9yYWdlQWNjZXNzRGF0YS5vZmZz
ZXQgPSBnZXRCeUlkU3RhdHVzLm9mZnNldCgpICsgb2Zmc2V0T2Zmc2V0OwotICAgIHN0b3JhZ2VB
Y2Nlc3NEYXRhLmlkZW50aWZpZXJOdW1iZXIgPSBpZGVudGlmaWVyTnVtYmVyOwotICAgIG1fZ3Jh
cGgubV9zdG9yYWdlQWNjZXNzRGF0YS5hcHBlbmQoc3RvcmFnZUFjY2Vzc0RhdGEpOworICAgIGhh
bmRsZUdldEJ5T2Zmc2V0KAorICAgICAgICBkZXN0aW5hdGlvbk9wZXJhbmQsIHByZWRpY3Rpb24s
IGJhc2UsIGlkZW50aWZpZXJOdW1iZXIsIHVzZUlubGluZVN0b3JhZ2UsCisgICAgICAgIGdldEJ5
SWRTdGF0dXMub2Zmc2V0KCkpOwogfQogCiB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpwcmVwYXJlVG9Q
YXJzZUJsb2NrKCkKQEAgLTI2NDgsMTAgKzI2NjEsMzcgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6
cGFyc2VCbG9jayh1bnNpZ25lZAogICAgICAgICBjYXNlIG9wX3Jlc29sdmVfZ2xvYmFsOiB7CiAg
ICAgICAgICAgICBTcGVjdWxhdGVkVHlwZSBwcmVkaWN0aW9uID0gZ2V0UHJlZGljdGlvbigpOwog
ICAgICAgICAgICAgCisgICAgICAgICAgICB1bnNpZ25lZCBpZGVudGlmaWVyTnVtYmVyID0gbV9p
bmxpbmVTdGFja1RvcC0+bV9pZGVudGlmaWVyUmVtYXBbCisgICAgICAgICAgICAgICAgY3VycmVu
dEluc3RydWN0aW9uWzJdLnUub3BlcmFuZF07CisgICAgICAgICAgICAKKyAgICAgICAgICAgIFJl
c29sdmVHbG9iYWxTdGF0dXMgc3RhdHVzID0gUmVzb2x2ZUdsb2JhbFN0YXR1czo6Y29tcHV0ZUZv
cigKKyAgICAgICAgICAgICAgICBtX2lubGluZVN0YWNrVG9wLT5tX3Byb2ZpbGVkQmxvY2ssIG1f
Y3VycmVudEluZGV4LAorICAgICAgICAgICAgICAgIG1fY29kZUJsb2NrLT5pZGVudGlmaWVyKGlk
ZW50aWZpZXJOdW1iZXIpKTsKKyAgICAgICAgICAgIGlmIChzdGF0dXMuaXNTaW1wbGUoKSkgewor
ICAgICAgICAgICAgICAgIEFTU0VSVChzdGF0dXMuc3RydWN0dXJlKCkpOworICAgICAgICAgICAg
ICAgIAorICAgICAgICAgICAgICAgIE5vZGVJbmRleCBnbG9iYWxPYmplY3QgPSBhZGRTdHJ1Y3R1
cmVUcmFuc2l0aW9uQ2hlY2soCisgICAgICAgICAgICAgICAgICAgIG1faW5saW5lU3RhY2tUb3At
Pm1fY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKSwgc3RhdHVzLnN0cnVjdHVyZSgpKTsKKyAgICAg
ICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBpZiAoc3RhdHVzLnNwZWNpZmljVmFsdWUoKSkg
eworICAgICAgICAgICAgICAgICAgICBBU1NFUlQoc3RhdHVzLnNwZWNpZmljVmFsdWUoKS5pc0Nl
bGwoKSk7CisgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICBzZXQoY3Vy
cmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZCwKKyAgICAgICAgICAgICAgICAgICAgICAgIGNl
bGxDb25zdGFudChzdGF0dXMuc3BlY2lmaWNWYWx1ZSgpLmFzQ2VsbCgpKSk7CisgICAgICAgICAg
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgaGFuZGxlR2V0QnlPZmZzZXQoCisg
ICAgICAgICAgICAgICAgICAgICAgICBjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kLCBw
cmVkaWN0aW9uLCBnbG9iYWxPYmplY3QsCisgICAgICAgICAgICAgICAgICAgICAgICBpZGVudGlm
aWVyTnVtYmVyLCBzdGF0dXMuc3RydWN0dXJlKCktPmlzVXNpbmdJbmxpbmVTdG9yYWdlKCksCisg
ICAgICAgICAgICAgICAgICAgICAgICBzdGF0dXMub2Zmc2V0KCkpOworICAgICAgICAgICAgICAg
IH0KKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBORVhUX09QQ09ERShvcF9yZXNv
bHZlX2dsb2JhbCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAKICAgICAgICAgICAgIE5v
ZGVJbmRleCByZXNvbHZlID0gYWRkVG9HcmFwaChSZXNvbHZlR2xvYmFsLCBPcEluZm8obV9ncmFw
aC5tX3Jlc29sdmVHbG9iYWxEYXRhLnNpemUoKSksIE9wSW5mbyhwcmVkaWN0aW9uKSk7CiAgICAg
ICAgICAgICBtX2dyYXBoLm1fcmVzb2x2ZUdsb2JhbERhdGEuYXBwZW5kKFJlc29sdmVHbG9iYWxE
YXRhKCkpOwogICAgICAgICAgICAgUmVzb2x2ZUdsb2JhbERhdGEmIGRhdGEgPSBtX2dyYXBoLm1f
cmVzb2x2ZUdsb2JhbERhdGEubGFzdCgpOwotICAgICAgICAgICAgZGF0YS5pZGVudGlmaWVyTnVt
YmVyID0gbV9pbmxpbmVTdGFja1RvcC0+bV9pZGVudGlmaWVyUmVtYXBbY3VycmVudEluc3RydWN0
aW9uWzJdLnUub3BlcmFuZF07CisgICAgICAgICAgICBkYXRhLmlkZW50aWZpZXJOdW1iZXIgPSBp
ZGVudGlmaWVyTnVtYmVyOwogICAgICAgICAgICAgZGF0YS5yZXNvbHZlSW5mb0luZGV4ID0gbV9n
bG9iYWxSZXNvbHZlTnVtYmVyKys7CiAgICAgICAgICAgICBzZXQoY3VycmVudEluc3RydWN0aW9u
WzFdLnUub3BlcmFuZCwgcmVzb2x2ZSk7CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTT2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU09iamVjdC5jcHAJKHJldmlzaW9uIDEyMDg4NikKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDMsNiArNDMs
MTYgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKK0pTQ2VsbCogZ2V0Q2FsbGFibGVPYmplY3RTbG93
KEpTQ2VsbCogY2VsbCkKK3sKKyAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IGNlbGwtPnN0cnVj
dHVyZSgpOworICAgIGlmIChzdHJ1Y3R1cmUtPnR5cGVJbmZvKCkudHlwZSgpID09IEpTRnVuY3Rp
b25UeXBlKQorICAgICAgICByZXR1cm4gY2VsbDsKKyAgICBpZiAoc3RydWN0dXJlLT5jbGFzc0lu
Zm8oKS0+aXNTdWJDbGFzc09mKCZJbnRlcm5hbEZ1bmN0aW9uOjpzX2luZm8pKQorICAgICAgICBy
ZXR1cm4gY2VsbDsKKyAgICByZXR1cm4gMDsKK30KKwogQVNTRVJUX0NMQVNTX0ZJVFNfSU5fQ0VM
TChKU09iamVjdCk7CiBBU1NFUlRfQ0xBU1NfRklUU19JTl9DRUxMKEpTTm9uRmluYWxPYmplY3Qp
OwogQVNTRVJUX0NMQVNTX0ZJVFNfSU5fQ0VMTChKU0ZpbmFsT2JqZWN0KTsKQEAgLTEzMyw3ICsx
NDMsNyBAQCB2b2lkIEpTT2JqZWN0OjpwdXQoSlNDZWxsKiBjZWxsLCBFeGVjU3RhCiAgICAgICAg
IGZvciAoSlNPYmplY3QqIG9iaiA9IHRoaXNPYmplY3Q7ICFvYmotPnN0cnVjdHVyZSgpLT5oYXNS
ZWFkT25seU9yR2V0dGVyU2V0dGVyUHJvcGVydGllc0V4Y2x1ZGluZ1Byb3RvKCk7IG9iaiA9IGFz
T2JqZWN0KHByb3RvdHlwZSkpIHsKICAgICAgICAgICAgIHByb3RvdHlwZSA9IG9iai0+cHJvdG90
eXBlKCk7CiAgICAgICAgICAgICBpZiAocHJvdG90eXBlLmlzTnVsbCgpKSB7Ci0gICAgICAgICAg
ICAgICAgaWYgKCF0aGlzT2JqZWN0LT5wdXREaXJlY3RJbnRlcm5hbDxQdXRNb2RlUHV0PihnbG9i
YWxEYXRhLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCAwLCBzbG90LCBnZXRKU0Z1bmN0aW9uKHZhbHVl
KSkgJiYgc2xvdC5pc1N0cmljdE1vZGUoKSkKKyAgICAgICAgICAgICAgICBpZiAoIXRoaXNPYmpl
Y3QtPnB1dERpcmVjdEludGVybmFsPFB1dE1vZGVQdXQ+KGdsb2JhbERhdGEsIHByb3BlcnR5TmFt
ZSwgdmFsdWUsIDAsIHNsb3QsIGdldENhbGxhYmxlT2JqZWN0KHZhbHVlKSkgJiYgc2xvdC5pc1N0
cmljdE1vZGUoKSkKICAgICAgICAgICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgU3Ry
aWN0TW9kZVJlYWRvbmx5UHJvcGVydHlXcml0ZUVycm9yKTsKICAgICAgICAgICAgICAgICByZXR1
cm47CiAgICAgICAgICAgICB9CkBAIC0xODAsNyArMTkwLDcgQEAgdm9pZCBKU09iamVjdDo6cHV0
KEpTQ2VsbCogY2VsbCwgRXhlY1N0YQogICAgICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIAot
ICAgIGlmICghdGhpc09iamVjdC0+cHV0RGlyZWN0SW50ZXJuYWw8UHV0TW9kZVB1dD4oZ2xvYmFs
RGF0YSwgcHJvcGVydHlOYW1lLCB2YWx1ZSwgMCwgc2xvdCwgZ2V0SlNGdW5jdGlvbih2YWx1ZSkp
ICYmIHNsb3QuaXNTdHJpY3RNb2RlKCkpCisgICAgaWYgKCF0aGlzT2JqZWN0LT5wdXREaXJlY3RJ
bnRlcm5hbDxQdXRNb2RlUHV0PihnbG9iYWxEYXRhLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCAwLCBz
bG90LCBnZXRDYWxsYWJsZU9iamVjdCh2YWx1ZSkpICYmIHNsb3QuaXNTdHJpY3RNb2RlKCkpCiAg
ICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIFN0cmljdE1vZGVSZWFkb25seVByb3BlcnR5V3Jp
dGVFcnJvcik7CiAgICAgcmV0dXJuOwogfQpAQCAtMTk2LDcgKzIwNiw3IEBAIHZvaWQgSlNPYmpl
Y3Q6OnB1dERpcmVjdFZpcnR1YWwoSlNPYmplY3QKIHsKICAgICBBU1NFUlQoIXZhbHVlLmlzR2V0
dGVyU2V0dGVyKCkgJiYgIShhdHRyaWJ1dGVzICYgQWNjZXNzb3IpKTsKICAgICBQdXRQcm9wZXJ0
eVNsb3Qgc2xvdDsKLSAgICBvYmplY3QtPnB1dERpcmVjdEludGVybmFsPFB1dE1vZGVEZWZpbmVP
d25Qcm9wZXJ0eT4oZXhlYy0+Z2xvYmFsRGF0YSgpLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBhdHRy
aWJ1dGVzLCBzbG90LCBnZXRKU0Z1bmN0aW9uKHZhbHVlKSk7CisgICAgb2JqZWN0LT5wdXREaXJl
Y3RJbnRlcm5hbDxQdXRNb2RlRGVmaW5lT3duUHJvcGVydHk+KGV4ZWMtPmdsb2JhbERhdGEoKSwg
cHJvcGVydHlOYW1lLCB2YWx1ZSwgYXR0cmlidXRlcywgc2xvdCwgZ2V0Q2FsbGFibGVPYmplY3Qo
dmFsdWUpKTsKIH0KIAogYm9vbCBKU09iamVjdDo6c2V0UHJvdG90eXBlV2l0aEN5Y2xlQ2hlY2so
SlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKU1ZhbHVlIHByb3RvdHlwZSkKQEAgLTIyNiw3ICsy
MzYsNyBAQCB2b2lkIEpTT2JqZWN0OjpwdXREaXJlY3RBY2Nlc3NvcihKU0dsb2JhCiAgICAgQVNT
RVJUKHZhbHVlLmlzR2V0dGVyU2V0dGVyKCkgJiYgKGF0dHJpYnV0ZXMgJiBBY2Nlc3NvcikpOwog
CiAgICAgUHV0UHJvcGVydHlTbG90IHNsb3Q7Ci0gICAgcHV0RGlyZWN0SW50ZXJuYWw8UHV0TW9k
ZURlZmluZU93blByb3BlcnR5PihnbG9iYWxEYXRhLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBhdHRy
aWJ1dGVzLCBzbG90LCBnZXRKU0Z1bmN0aW9uKHZhbHVlKSk7CisgICAgcHV0RGlyZWN0SW50ZXJu
YWw8UHV0TW9kZURlZmluZU93blByb3BlcnR5PihnbG9iYWxEYXRhLCBwcm9wZXJ0eU5hbWUsIHZh
bHVlLCBhdHRyaWJ1dGVzLCBzbG90LCBnZXRDYWxsYWJsZU9iamVjdCh2YWx1ZSkpOwogCiAgICAg
Ly8gcHV0RGlyZWN0IHdpbGwgY2hhbmdlIG91ciBTdHJ1Y3R1cmUgaWYgd2UgYWRkIGEgbmV3IHBy
b3BlcnR5LiBGb3IKICAgICAvLyBnZXR0ZXJzIGFuZCBzZXR0ZXJzLCB0aG91Z2gsIHdlIGFsc28g
bmVlZCB0byBjaGFuZ2Ugb3VyIFN0cnVjdHVyZQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNPYmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU09iamVjdC5oCShyZXZpc2lvbiAxMjA4ODYpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU09iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC00Niw2ICs0NiwxNSBA
QCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogCisgICAgSlNfRVhQ
T1JUX1BSSVZBVEUgSlNDZWxsKiBnZXRDYWxsYWJsZU9iamVjdFNsb3coSlNDZWxsKiBjZWxsKTsK
KworICAgIGlubGluZSBKU0NlbGwqIGdldENhbGxhYmxlT2JqZWN0KEpTVmFsdWUgdmFsdWUpCisg
ICAgeworICAgICAgICBpZiAoIXZhbHVlLmlzQ2VsbCgpKQorICAgICAgICAgICAgcmV0dXJuIDA7
CisgICAgICAgIHJldHVybiBnZXRDYWxsYWJsZU9iamVjdFNsb3codmFsdWUuYXNDZWxsKCkpOwor
ICAgIH0KKwogICAgIGNsYXNzIEdldHRlclNldHRlcjsKICAgICBjbGFzcyBIYXNoRW50cnk7CiAg
ICAgY2xhc3MgSW50ZXJuYWxGdW5jdGlvbjsKQEAgLTc1OSwyMCArNzY4LDIwIEBAIGlubGluZSBi
b29sIEpTT2JqZWN0OjpwdXRPd25EYXRhUHJvcGVydHkKICAgICBBU1NFUlQoIUhlYXA6OmhlYXAo
dmFsdWUpIHx8IEhlYXA6OmhlYXAodmFsdWUpID09IEhlYXA6OmhlYXAodGhpcykpOwogICAgIEFT
U0VSVCghc3RydWN0dXJlKCktPmhhc0dldHRlclNldHRlclByb3BlcnRpZXMoKSk7CiAKLSAgICBy
ZXR1cm4gcHV0RGlyZWN0SW50ZXJuYWw8UHV0TW9kZVB1dD4oZ2xvYmFsRGF0YSwgcHJvcGVydHlO
YW1lLCB2YWx1ZSwgMCwgc2xvdCwgZ2V0SlNGdW5jdGlvbih2YWx1ZSkpOworICAgIHJldHVybiBw
dXREaXJlY3RJbnRlcm5hbDxQdXRNb2RlUHV0PihnbG9iYWxEYXRhLCBwcm9wZXJ0eU5hbWUsIHZh
bHVlLCAwLCBzbG90LCBnZXRDYWxsYWJsZU9iamVjdCh2YWx1ZSkpOwogfQogCiBpbmxpbmUgdm9p
ZCBKU09iamVjdDo6cHV0RGlyZWN0KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgUHJvcGVydHlO
YW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgdW5zaWduZWQgYXR0cmlidXRlcykKIHsK
ICAgICBBU1NFUlQoIXZhbHVlLmlzR2V0dGVyU2V0dGVyKCkgJiYgIShhdHRyaWJ1dGVzICYgQWNj
ZXNzb3IpKTsKICAgICBQdXRQcm9wZXJ0eVNsb3Qgc2xvdDsKLSAgICBwdXREaXJlY3RJbnRlcm5h
bDxQdXRNb2RlRGVmaW5lT3duUHJvcGVydHk+KGdsb2JhbERhdGEsIHByb3BlcnR5TmFtZSwgdmFs
dWUsIGF0dHJpYnV0ZXMsIHNsb3QsIGdldEpTRnVuY3Rpb24odmFsdWUpKTsKKyAgICBwdXREaXJl
Y3RJbnRlcm5hbDxQdXRNb2RlRGVmaW5lT3duUHJvcGVydHk+KGdsb2JhbERhdGEsIHByb3BlcnR5
TmFtZSwgdmFsdWUsIGF0dHJpYnV0ZXMsIHNsb3QsIGdldENhbGxhYmxlT2JqZWN0KHZhbHVlKSk7
CiB9CiAKIGlubGluZSB2b2lkIEpTT2JqZWN0OjpwdXREaXJlY3QoSlNHbG9iYWxEYXRhJiBnbG9i
YWxEYXRhLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBQdXRQcm9w
ZXJ0eVNsb3QmIHNsb3QpCiB7CiAgICAgQVNTRVJUKCF2YWx1ZS5pc0dldHRlclNldHRlcigpKTsK
LSAgICBwdXREaXJlY3RJbnRlcm5hbDxQdXRNb2RlRGVmaW5lT3duUHJvcGVydHk+KGdsb2JhbERh
dGEsIHByb3BlcnR5TmFtZSwgdmFsdWUsIDAsIHNsb3QsIGdldEpTRnVuY3Rpb24odmFsdWUpKTsK
KyAgICBwdXREaXJlY3RJbnRlcm5hbDxQdXRNb2RlRGVmaW5lT3duUHJvcGVydHk+KGdsb2JhbERh
dGEsIHByb3BlcnR5TmFtZSwgdmFsdWUsIDAsIHNsb3QsIGdldENhbGxhYmxlT2JqZWN0KHZhbHVl
KSk7CiB9CiAKIGlubGluZSB2b2lkIEpTT2JqZWN0OjpwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlv
bihKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpT
VmFsdWUgdmFsdWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMpCkBAIC03ODEsNyArNzkwLDcgQEAgaW5s
aW5lIHZvaWQgSlNPYmplY3Q6OnB1dERpcmVjdFdpdGhvdXRUcgogICAgIFByb3BlcnR5U3RvcmFn
ZSBuZXdTdG9yYWdlID0gcHJvcGVydHlTdG9yYWdlKCk7CiAgICAgaWYgKHN0cnVjdHVyZSgpLT5z
aG91bGRHcm93UHJvcGVydHlTdG9yYWdlKCkpCiAgICAgICAgIG5ld1N0b3JhZ2UgPSBncm93UHJv
cGVydHlTdG9yYWdlKGdsb2JhbERhdGEsIHN0cnVjdHVyZSgpLT5wcm9wZXJ0eVN0b3JhZ2VDYXBh
Y2l0eSgpLCBzdHJ1Y3R1cmUoKS0+c3VnZ2VzdGVkTmV3UHJvcGVydHlTdG9yYWdlU2l6ZSgpKTsK
LSAgICBzaXplX3Qgb2Zmc2V0ID0gc3RydWN0dXJlKCktPmFkZFByb3BlcnR5V2l0aG91dFRyYW5z
aXRpb24oZ2xvYmFsRGF0YSwgcHJvcGVydHlOYW1lLCBhdHRyaWJ1dGVzLCBnZXRKU0Z1bmN0aW9u
KHZhbHVlKSk7CisgICAgc2l6ZV90IG9mZnNldCA9IHN0cnVjdHVyZSgpLT5hZGRQcm9wZXJ0eVdp
dGhvdXRUcmFuc2l0aW9uKGdsb2JhbERhdGEsIHByb3BlcnR5TmFtZSwgYXR0cmlidXRlcywgZ2V0
Q2FsbGFibGVPYmplY3QodmFsdWUpKTsKICAgICBzZXRQcm9wZXJ0eVN0b3JhZ2UoZ2xvYmFsRGF0
YSwgbmV3U3RvcmFnZSwgc3RydWN0dXJlKCkpOwogICAgIHB1dERpcmVjdE9mZnNldChnbG9iYWxE
YXRhLCBvZmZzZXQsIHZhbHVlKTsKIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1N0cnVjdHVyZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvU3RydWN0dXJlLmNwcAkocmV2aXNpb24gMTIwODg2KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzQ5LDcgKzM0
OSw3IEBAIFN0cnVjdHVyZSogU3RydWN0dXJlOjphZGRQcm9wZXJ0eVRyYW5zaXQKICAgICAgICAg
ZWxzZQogICAgICAgICAgICAgdHJhbnNpdGlvbi0+Y3JlYXRlUHJvcGVydHlNYXAoKTsKICAgICB9
Ci0KKyAgICAKICAgICBvZmZzZXQgPSB0cmFuc2l0aW9uLT5wdXRTcGVjaWZpY1ZhbHVlKGdsb2Jh
bERhdGEsIHByb3BlcnR5TmFtZSwgYXR0cmlidXRlcywgc3BlY2lmaWNWYWx1ZSk7CiAgICAgaWYg
KHRyYW5zaXRpb24tPnByb3BlcnR5U3RvcmFnZVNpemUoKSA+IHRyYW5zaXRpb24tPnByb3BlcnR5
U3RvcmFnZUNhcGFjaXR5KCkpCiAgICAgICAgIHRyYW5zaXRpb24tPmdyb3dQcm9wZXJ0eVN0b3Jh
Z2VDYXBhY2l0eSgpOwpAQCAtNTcyLDcgKzU3Miw3IEBAIHNpemVfdCBTdHJ1Y3R1cmU6OmFkZFBy
b3BlcnR5V2l0aG91dFRyYW4KIAogICAgIGlmIChtX3NwZWNpZmljRnVuY3Rpb25UaHJhc2hDb3Vu
dCA9PSBtYXhTcGVjaWZpY0Z1bmN0aW9uVGhyYXNoQ291bnQpCiAgICAgICAgIHNwZWNpZmljVmFs
dWUgPSAwOwotCisgICAgCiAgICAgbWF0ZXJpYWxpemVQcm9wZXJ0eU1hcElmTmVjZXNzYXJ5Rm9y
UGlubmluZyhnbG9iYWxEYXRhKTsKICAgICAKICAgICBwaW4oKTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>148688</attachid>
            <date>2012-06-20 17:20:31 -0700</date>
            <delta_ts>2012-06-20 18:05:24 -0700</delta_ts>
            <desc>the patch</desc>
            <filename>resolveglobal_patch_3.diff</filename>
            <type>text/plain</type>
            <size>29250</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTIwODg3KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDY3IEBA
CisyMDEyLTA2LTIwICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
REZHIHNob3VsZCBvcHRpbWl6ZSBSZXNvbHZlR2xvYmFsCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04OTYxNworCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorICAgICAgICAKKyAgICAgICAgVGhpcyBhZGRzIGlubGluaW5nIG9mIFJl
c29sdmVHbG9iYWwgYWNjZXNzZXMgdGhhdCBhcmUga25vd24gbW9ub21vcnBoaWMuIEl0IGFsc28K
KyAgICAgICAgYWRkcyB0aGUgc3BlY2lmaWMgZnVuY3Rpb24gb3B0aW1pemF0aW9uIHRvIFJlc29s
dmVHbG9iYWwsIHdoZW4gaXQgaXMgaW5saW5lZC4gQW5kLAorICAgICAgICBpdCBtYWtlcyBpbnRl
cm5hbCBmdW5jdGlvbnMgYWN0IGxpa2Ugc3BlY2lmaWMgZnVuY3Rpb25zLCBzaW5jZSB0aGF0IHdp
bGwgYmUgdGhlCisgICAgICAgIG1vc3QgY29tbW9uIHVzZS1jYXNlIG9mIHRoaXMgb3B0aW1pemF0
aW9uLgorICAgICAgICAKKyAgICAgICAgVGhpcyBpcyBvbmx5IGEgc2xpZ2h5IHNwZWVkLXVwIChz
dWIgMSUpLCBzaW5jZSB3ZSBkb24ndCB5ZXQgZG8gdGhlIG9idmlvdXMgdGhpbmcKKyAgICAgICAg
d2l0aCB0aGlzIG9wdGltaXphdGlvbiwgd2hpY2ggaXMgdG8gY29tcGxldGVseSBpbmxpbmUgY29t
bW9uICJnbG9iYWxseSByZXNvbHZlZCIKKyAgICAgICAgZnVuY3Rpb24gYW5kIGNvbnN0cnVjdG9y
IGNhbGxzLCBsaWtlICJuZXcgQXJyYXkoKSIuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoK
KyAgICAgICAgKiBHTlVtYWtlZmlsZS5saXN0LmFtOgorICAgICAgICAqIEphdmFTY3JpcHRDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogVGFyZ2V0LnByaToKKyAgICAg
ICAgKiBieXRlY29kZS9Db2RlQmxvY2suY3BwOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6Omds
b2JhbFJlc29sdmVJbmZvRm9yQnl0ZWNvZGVPZmZzZXQpOgorICAgICAgICAqIGJ5dGVjb2RlL0Nv
ZGVCbG9jay5oOgorICAgICAgICAoQ29kZUJsb2NrKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2Nr
OjpudW1iZXJPZkdsb2JhbFJlc29sdmVJbmZvcyk6CisgICAgICAgICogYnl0ZWNvZGUvR2xvYmFs
UmVzb2x2ZUluZm8uaDoKKyAgICAgICAgKEpTQzo6Z2V0R2xvYmFsUmVzb2x2ZUluZm9CeXRlY29k
ZU9mZnNldCk6CisgICAgICAgIChKU0MpOgorICAgICAgICAqIGJ5dGVjb2RlL1Jlc29sdmVHbG9i
YWxTdGF0dXMuY3BwOiBBZGRlZC4KKyAgICAgICAgKEpTQyk6CisgICAgICAgIChKU0M6OmNvbXB1
dGVGb3JTdHJ1Y3R1cmUpOgorICAgICAgICAoSlNDOjpjb21wdXRlRm9yTExJbnQpOgorICAgICAg
ICAoSlNDOjpSZXNvbHZlR2xvYmFsU3RhdHVzOjpjb21wdXRlRm9yKToKKyAgICAgICAgKiBieXRl
Y29kZS9SZXNvbHZlR2xvYmFsU3RhdHVzLmg6IEFkZGVkLgorICAgICAgICAoSlNDKToKKyAgICAg
ICAgKFJlc29sdmVHbG9iYWxTdGF0dXMpOgorICAgICAgICAoSlNDOjpSZXNvbHZlR2xvYmFsU3Rh
dHVzOjpSZXNvbHZlR2xvYmFsU3RhdHVzKToKKyAgICAgICAgKEpTQzo6UmVzb2x2ZUdsb2JhbFN0
YXR1czo6c3RhdGUpOgorICAgICAgICAoSlNDOjpSZXNvbHZlR2xvYmFsU3RhdHVzOjppc1NldCk6
CisgICAgICAgIChKU0M6OlJlc29sdmVHbG9iYWxTdGF0dXM6Om9wZXJhdG9yISk6CisgICAgICAg
IChKU0M6OlJlc29sdmVHbG9iYWxTdGF0dXM6OmlzU2ltcGxlKToKKyAgICAgICAgKEpTQzo6UmVz
b2x2ZUdsb2JhbFN0YXR1czo6dGFrZXNTbG93UGF0aCk6CisgICAgICAgIChKU0M6OlJlc29sdmVH
bG9iYWxTdGF0dXM6OnN0cnVjdHVyZSk6CisgICAgICAgIChKU0M6OlJlc29sdmVHbG9iYWxTdGF0
dXM6Om9mZnNldCk6CisgICAgICAgIChKU0M6OlJlc29sdmVHbG9iYWxTdGF0dXM6OnNwZWNpZmlj
VmFsdWUpOgorICAgICAgICAqIGRmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHA6CisgICAgICAgIChC
eXRlQ29kZVBhcnNlcik6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OmhhbmRs
ZUdldEJ5T2Zmc2V0KToKKyAgICAgICAgKERGRyk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNv
ZGVQYXJzZXI6OmhhbmRsZUdldEJ5SWQpOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFy
c2VyOjpwYXJzZUJsb2NrKToKKyAgICAgICAgKiBydW50aW1lL0pTT2JqZWN0LmNwcDoKKyAgICAg
ICAgKEpTQzo6Z2V0Q2FsbGFibGVPYmplY3RTbG93KToKKyAgICAgICAgKEpTQyk6CisgICAgICAg
IChKU0M6OkpTT2JqZWN0OjpwdXQpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6cHV0RGlyZWN0
VmlydHVhbCk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpwdXREaXJlY3RBY2Nlc3Nvcik6Cisg
ICAgICAgICogcnVudGltZS9KU09iamVjdC5oOgorICAgICAgICAoSlNDKToKKyAgICAgICAgKEpT
Qzo6Z2V0Q2FsbGFibGVPYmplY3QpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6cHV0T3duRGF0
YVByb3BlcnR5KToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OnB1dERpcmVjdCk6CisgICAgICAg
IChKU0M6OkpTT2JqZWN0OjpwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbik6CisKIDIwMTItMDYt
MjAgIEZpbGlwIFBpemxvICA8ZnBpemxvQGFwcGxlLmNvbT4KIAogICAgICAgICBGdW5jdGlvbnMg
b24gZ2xvYmFsIG9iamVjdHMgc2hvdWxkIGJlIHNwZWNpYWxpemFibGUKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvQ01ha2VMaXN0cy50eHQJKHJldmlzaW9uIDEyMDg3OCkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAkod29ya2luZyBjb3B5KQpAQCAtNTQsNiArNTQsNyBA
QCBTRVQoSmF2YVNjcmlwdENvcmVfU09VUkNFUwogICAgIGJ5dGVjb2RlL1BvbHltb3JwaGljUHV0
QnlJZExpc3QuY3BwCiAgICAgYnl0ZWNvZGUvU3BlY3VsYXRlZFR5cGUuY3BwCiAgICAgYnl0ZWNv
ZGUvUHV0QnlJZFN0YXR1cy5jcHAKKyAgICBieXRlY29kZS9SZXNvbHZlR2xvYmFsU3RhdHVzLmNw
cAogICAgIGJ5dGVjb2RlL1NhbXBsaW5nVG9vbC5jcHAKICAgICBieXRlY29kZS9TdHJ1Y3R1cmVT
dHViSW5mby5jcHAKICAgICBieXRlY29kZS9XYXRjaHBvaW50LmNwcApJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0JKHJldmlzaW9uIDEyMDg3OCkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCSh3b3JraW5nIGNvcHkpCkBA
IC0xMjYsNiArMTI2LDggQEAgamF2YXNjcmlwdGNvcmVfc291cmNlcyArPSBcCiAJU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL1B1dEJ5SWRTdGF0dXMuY3BwIFwKIAlTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvUHV0QnlJZFN0YXR1cy5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvUHV0S2luZC5oIFwKKwlTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
UmVzb2x2ZUdsb2JhbFN0YXR1cy5jcHAgXAorCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9SZXNvbHZlR2xvYmFsU3RhdHVzLmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9TYW1wbGluZ1Rvb2wuY3BwIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvU2Ft
cGxpbmdUb29sLmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9TdHJ1Y3R1cmVT
ZXQuaCBcCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvVGFyZ2V0LnByaQo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvVGFyZ2V0LnByaQkocmV2aXNpb24gMTIwODc4KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL1RhcmdldC5wcmkJKHdvcmtpbmcgY29weSkKQEAgLTY0
LDYgKzY0LDcgQEAgU09VUkNFUyArPSBcCiAgICAgYnl0ZWNvZGUvT3Bjb2RlLmNwcCBcCiAgICAg
Ynl0ZWNvZGUvUG9seW1vcnBoaWNQdXRCeUlkTGlzdC5jcHAgXAogICAgIGJ5dGVjb2RlL1B1dEJ5
SWRTdGF0dXMuY3BwIFwKKyAgICBieXRlY29kZS9SZXNvbHZlR2xvYmFsU3RhdHVzLmNwcCBcCiAg
ICAgYnl0ZWNvZGUvU2FtcGxpbmdUb29sLmNwcCBcCiAgICAgYnl0ZWNvZGUvU3BlY3VsYXRlZFR5
cGUuY3BwIFwKICAgICBieXRlY29kZS9TdHJ1Y3R1cmVTdHViSW5mby5jcHAgXApJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDEyMDg3OCkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yMTEsNiArMjExLDggQEAKIAkJMEZGNDI3NTcxNTkxNEEyMDAwNENCOUZG
IC8qIExpbmtCdWZmZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMEZGNDI3NTYxNTkxNEEyMDAwNENCOUZGIC8qIExpbmtCdWZmZXIuY3BwICovOyB9
OwogCQkwRkY0Mjc2NDE1OTFBMUNDMDA0Q0I5RkYgLyogREZHRGlzYXNzZW1ibGVyLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGRjQyNzYxMTU5MUEx
QzkwMDRDQjlGRiAvKiBERkdEaXNhc3NlbWJsZXIuY3BwICovOyB9OwogCQkwRkY0Mjc2NTE1OTFB
MUNFMDA0Q0I5RkYgLyogREZHRGlzYXNzZW1ibGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkY0Mjc2MjE1OTFBMUM5MDA0Q0I5RkYgLyogREZHRGlz
YXNzZW1ibGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKKwkJMEZGNDI3NzExNTkyNzVENTAwNENCOUZGIC8qIFJlc29sdmVHbG9iYWxTdGF0dXMuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZGNDI3NkUx
NTkyNzVEMjAwNENCOUZGIC8qIFJlc29sdmVHbG9iYWxTdGF0dXMuY3BwICovOyB9OworCQkwRkY0
Mjc3MjE1OTI3NUQ4MDA0Q0I5RkYgLyogUmVzb2x2ZUdsb2JhbFN0YXR1cy5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZGNDI3NkYxNTkyNzVEMjAwNENC
OUZGIC8qIFJlc29sdmVHbG9iYWxTdGF0dXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQkwRkY5MjJENDE0RjQ2QjQxMDA0MUEyNEUgLyogTExJbnRP
ZmZzZXRzRXh0cmFjdG9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDBGNDY4MEExMTRCQTdGODIwMEJGRTI3MiAvKiBMTEludE9mZnNldHNFeHRyYWN0
b3IuY3BwICovOyB9OwogCQkwRkZGQzk1NzE0RUY5MEEwMDBDNzI1MzIgLyogREZHQ0ZBUGhhc2Uu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZGRkM5
NEIxNEVGOTA5NTAwQzcyNTMyIC8qIERGR0NGQVBoYXNlLmNwcCAqLzsgfTsKIAkJMEZGRkM5NTgx
NEVGOTBBMjAwQzcyNTMyIC8qIERGR0NGQVBoYXNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkZGQzk0QzE0RUY5MDk1MDBDNzI1MzIgLyogREZHQ0ZB
UGhhc2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpA
QCAtOTMzLDYgKzkzNSw4IEBACiAJCTBGRjQyNzU2MTU5MTRBMjAwMDRDQjlGRiAvKiBMaW5rQnVm
ZmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IExpbmtCdWZmZXIu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRkY0Mjc2MTE1OTFBMUM5MDA0Q0I5
RkYgLyogREZHRGlzYXNzZW1ibGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
bmFtZSA9IERGR0Rpc2Fzc2VtYmxlci5jcHA7IHBhdGggPSBkZmcvREZHRGlzYXNzZW1ibGVyLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEZGNDI3NjIxNTkxQTFDOTAwNENCOUZG
IC8qIERGR0Rpc2Fzc2VtYmxlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBE
RkdEaXNhc3NlbWJsZXIuaDsgcGF0aCA9IGRmZy9ERkdEaXNhc3NlbWJsZXIuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEZGNDI3NkUxNTkyNzVEMjAwNENCOUZGIC8qIFJlc29sdmVH
bG9iYWxTdGF0dXMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVz
b2x2ZUdsb2JhbFN0YXR1cy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGRjQy
NzZGMTU5Mjc1RDIwMDRDQjlGRiAvKiBSZXNvbHZlR2xvYmFsU3RhdHVzLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlc29sdmVHbG9iYWxTdGF0dXMuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJMEZGOTIyQ0YxNEY0NkIxMzAwNDFBMjRFIC8qIEpTQ0xMSW50T2Zm
c2V0c0V4dHJhY3RvciAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBleHBsaWNpdEZpbGVU
eXBlID0gImNvbXBpbGVkLm1hY2gtby5leGVjdXRhYmxlIjsgaW5jbHVkZUluSW5kZXggPSAwOyBw
YXRoID0gSlNDTExJbnRPZmZzZXRzRXh0cmFjdG9yOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVD
VFNfRElSOyB9OwogCQkwRkZGQzk0QjE0RUY5MDk1MDBDNzI1MzIgLyogREZHQ0ZBUGhhc2UuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gREZHQ0ZBUGhhc2UuY3BwOyBw
YXRoID0gZGZnL0RGR0NGQVBoYXNlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
MEZGRkM5NEMxNEVGOTA5NTAwQzcyNTMyIC8qIERGR0NGQVBoYXNlLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgbmFtZSA9IERGR0NGQVBoYXNlLmg7IHBhdGggPSBkZmcvREZHQ0ZBUGhhc2Uu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTIzNDcsNiArMjM1MSw4IEBACiAJCQkJ
MEY5MzMyOTgxNENBN0RDMTAwODVGM0M2IC8qIE1ldGhvZENhbGxMaW5rU3RhdHVzLmggKi8sCiAJ
CQkJMEY5MzMyOTkxNENBN0RDMTAwODVGM0M2IC8qIFB1dEJ5SWRTdGF0dXMuY3BwICovLAogCQkJ
CTBGOTMzMjlBMTRDQTdEQzEwMDg1RjNDNiAvKiBQdXRCeUlkU3RhdHVzLmggKi8sCisJCQkJMEZG
NDI3NkUxNTkyNzVEMjAwNENCOUZGIC8qIFJlc29sdmVHbG9iYWxTdGF0dXMuY3BwICovLAorCQkJ
CTBGRjQyNzZGMTU5Mjc1RDIwMDRDQjlGRiAvKiBSZXNvbHZlR2xvYmFsU3RhdHVzLmggKi8sCiAJ
CQkJMEY5MzMyOUIxNENBN0RDMTAwODVGM0M2IC8qIFN0cnVjdHVyZVNldC5oICovLAogCQkJCTBG
MEI4M0I4MTRCQ0Y5NUIwMDg4NUI0RiAvKiBDYWxsUmV0dXJuT2Zmc2V0VG9CeXRlY29kZU9mZnNl
dC5oICovLAogCQkJCTBGMEI4M0I2MTRCQ0Y4REYwMDg4NUI0RiAvKiBHbG9iYWxSZXNvbHZlSW5m
by5oICovLApAQCAtMjc2Niw2ICsyNzcyLDcgQEAKIAkJCQkwRkY0Mjc0OTE1OEVCRTkxMDA0Q0I5
RkYgLyogdWRpczg2X3R5cGVzLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkY0Mjc0QjE1OEVCRTkx
MDA0Q0I5RkYgLyogdWRpczg2LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkY0Mjc2NTE1OTFBMUNF
MDA0Q0I5RkYgLyogREZHRGlzYXNzZW1ibGVyLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRkY0Mjc3
MjE1OTI3NUQ4MDA0Q0I5RkYgLyogUmVzb2x2ZUdsb2JhbFN0YXR1cy5oIGluIEhlYWRlcnMgKi8s
CiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07
CkBAIC0zMzUzLDYgKzMzNjAsNyBAQAogCQkJCTBGRjQyNzU3MTU5MTRBMjAwMDRDQjlGRiAvKiBM
aW5rQnVmZmVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUMyRDU4QzM0MTU5MTJGRUUwMDIxQTg0
NCAvKiBHQ0FjdGl2aXR5Q2FsbGJhY2suY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZGNDI3NjQx
NTkxQTFDQzAwNENCOUZGIC8qIERGR0Rpc2Fzc2VtYmxlci5jcHAgaW4gU291cmNlcyAqLywKKwkJ
CQkwRkY0Mjc3MTE1OTI3NUQ1MDA0Q0I5RkYgLyogUmVzb2x2ZUdsb2JhbFN0YXR1cy5jcHAgaW4g
U291cmNlcyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5n
ID0gMDsKIAkJfTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxv
Y2suY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2Rl
QmxvY2suY3BwCShyZXZpc2lvbiAxMjA4NzgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQ29kZUJsb2NrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjI1OCw2ICsyMjU4LDEwIEBA
IGJvb2wgQ29kZUJsb2NrOjpoYXNHbG9iYWxSZXNvbHZlSW5mb0F0QnkKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogICAgIHJldHVybiB0cnVlOwogfQorR2xvYmFsUmVzb2x2ZUluZm8mIENvZGVCbG9j
azo6Z2xvYmFsUmVzb2x2ZUluZm9Gb3JCeXRlY29kZU9mZnNldCh1bnNpZ25lZCBieXRlY29kZU9m
ZnNldCkKK3sKKyAgICByZXR1cm4gKihiaW5hcnlTZWFyY2g8R2xvYmFsUmVzb2x2ZUluZm8sIHVu
c2lnbmVkLCBnZXRHbG9iYWxSZXNvbHZlSW5mb0J5dGVjb2RlT2Zmc2V0PihtX2dsb2JhbFJlc29s
dmVJbmZvcy5iZWdpbigpLCBtX2dsb2JhbFJlc29sdmVJbmZvcy5zaXplKCksIGJ5dGVjb2RlT2Zm
c2V0KSk7Cit9CiAjZW5kaWYKIAogdm9pZCBDb2RlQmxvY2s6OnNocmlua1RvRml0KFNocmlua01v
ZGUgc2hyaW5rTW9kZSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2Rl
QmxvY2suaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29k
ZUJsb2NrLmgJKHJldmlzaW9uIDEyMDg3OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9Db2RlQmxvY2suaAkod29ya2luZyBjb3B5KQpAQCAtNTUzLDYgKzU1Myw4IEBAIG5hbWVz
cGFjZSBKU0MgewogICAgICAgICB9CiAgICAgICAgIEdsb2JhbFJlc29sdmVJbmZvJiBnbG9iYWxS
ZXNvbHZlSW5mbyhpbnQgaW5kZXgpIHsgcmV0dXJuIG1fZ2xvYmFsUmVzb2x2ZUluZm9zW2luZGV4
XTsgfQogICAgICAgICBib29sIGhhc0dsb2JhbFJlc29sdmVJbmZvQXRCeXRlY29kZU9mZnNldCh1
bnNpZ25lZCBieXRlY29kZU9mZnNldCk7CisgICAgICAgIEdsb2JhbFJlc29sdmVJbmZvJiBnbG9i
YWxSZXNvbHZlSW5mb0ZvckJ5dGVjb2RlT2Zmc2V0KHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0KTsK
KyAgICAgICAgdW5zaWduZWQgbnVtYmVyT2ZHbG9iYWxSZXNvbHZlSW5mb3MoKSB7IHJldHVybiBt
X2dsb2JhbFJlc29sdmVJbmZvcy5zaXplKCk7IH0KIAogICAgICAgICB2b2lkIHNldE51bWJlck9m
Q2FsbExpbmtJbmZvcyhzaXplX3Qgc2l6ZSkgeyBtX2NhbGxMaW5rSW5mb3MuZ3JvdyhzaXplKTsg
fQogICAgICAgICBzaXplX3QgbnVtYmVyT2ZDYWxsTGlua0luZm9zKCkgY29uc3QgeyByZXR1cm4g
bV9jYWxsTGlua0luZm9zLnNpemUoKTsgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0dsb2JhbFJlc29sdmVJbmZvLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0dsb2JhbFJlc29sdmVJbmZvLmgJKHJldmlzaW9uIDEyMDg3OCkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9HbG9iYWxSZXNvbHZlSW5mby5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC00Miw2ICs0MiwxMSBAQCBzdHJ1Y3QgR2xvYmFsUmVzb2x2ZUluZm8gewog
ICAgIHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0OwogfTsKIAoraW5saW5lIHVuc2lnbmVkIGdldEds
b2JhbFJlc29sdmVJbmZvQnl0ZWNvZGVPZmZzZXQoR2xvYmFsUmVzb2x2ZUluZm8qIGdsb2JhbFJl
c29sdmVJbmZvKQoreworICAgIHJldHVybiBnbG9iYWxSZXNvbHZlSW5mby0+Ynl0ZWNvZGVPZmZz
ZXQ7Cit9CisKIH0gLy8gbmFtZXNwYWNlIEpTQwogCiAjZW5kaWYgLy8gR2xvYmFsUmVzb2x2ZUlu
Zm9faApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1Jlc29sdmVHbG9iYWxT
dGF0dXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9S
ZXNvbHZlR2xvYmFsU3RhdHVzLmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9SZXNvbHZlR2xvYmFsU3RhdHVzLmNwcAkocmV2aXNpb24gMCkKQEAgLTAs
MCArMSw4OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLwor
CisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUmVzb2x2ZUdsb2JhbFN0YXR1cy5oIgor
CisjaW5jbHVkZSAiQ29kZUJsb2NrLmgiCisjaW5jbHVkZSAiSlNWYWx1ZS5oIgorI2luY2x1ZGUg
IlN0cnVjdHVyZS5oIgorCituYW1lc3BhY2UgSlNDIHsKKworc3RhdGljIFJlc29sdmVHbG9iYWxT
dGF0dXMgY29tcHV0ZUZvclN0cnVjdHVyZShDb2RlQmxvY2sqIGNvZGVCbG9jaywgU3RydWN0dXJl
KiBzdHJ1Y3R1cmUsIElkZW50aWZpZXImIGlkZW50aWZpZXIpCit7CisgICAgdW5zaWduZWQgYXR0
cmlidXRlc0lnbm9yZWQ7CisgICAgSlNDZWxsKiBzcGVjaWZpY1ZhbHVlOworICAgIHNpemVfdCBv
ZmZzZXQgPSBzdHJ1Y3R1cmUtPmdldCgKKyAgICAgICAgKmNvZGVCbG9jay0+Z2xvYmFsRGF0YSgp
LCBpZGVudGlmaWVyLCBhdHRyaWJ1dGVzSWdub3JlZCwgc3BlY2lmaWNWYWx1ZSk7CisgICAgaWYg
KG9mZnNldCA9PSBub3RGb3VuZCkKKyAgICAgICAgcmV0dXJuIFJlc29sdmVHbG9iYWxTdGF0dXMo
KTsKKyAgICAKKyAgICByZXR1cm4gUmVzb2x2ZUdsb2JhbFN0YXR1cyhSZXNvbHZlR2xvYmFsU3Rh
dHVzOjpTaW1wbGUsIHN0cnVjdHVyZSwgb2Zmc2V0LCBzcGVjaWZpY1ZhbHVlKTsKK30KKworc3Rh
dGljIFJlc29sdmVHbG9iYWxTdGF0dXMgY29tcHV0ZUZvckxMSW50KENvZGVCbG9jayogY29kZUJs
b2NrLCB1bnNpZ25lZCBieXRlY29kZUluZGV4LCBJZGVudGlmaWVyJiBpZGVudGlmaWVyKQorewor
I2lmIEVOQUJMRShMTElOVCkKKyAgICBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24gPSBjb2RlQmxv
Y2stPmluc3RydWN0aW9ucygpLmJlZ2luKCkgKyBieXRlY29kZUluZGV4OworICAgIAorICAgIEFT
U0VSVChpbnN0cnVjdGlvblswXS51Lm9wY29kZSA9PSBsbGludF9vcF9yZXNvbHZlX2dsb2JhbCk7
CisgICAgCisgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBpbnN0cnVjdGlvblszXS51LnN0cnVj
dHVyZS5nZXQoKTsKKyAgICBpZiAoIXN0cnVjdHVyZSkKKyAgICAgICAgcmV0dXJuIFJlc29sdmVH
bG9iYWxTdGF0dXMoKTsKKyAgICAKKyAgICByZXR1cm4gY29tcHV0ZUZvclN0cnVjdHVyZShjb2Rl
QmxvY2ssIHN0cnVjdHVyZSwgaWRlbnRpZmllcik7CisjZWxzZQorICAgIFVOVVNFRF9QQVJBTShj
b2RlQmxvY2spOworICAgIFVOVVNFRF9QQVJBTShieXRlY29kZUluZGV4KTsKKyAgICBVTlVTRURf
UEFSQU0oaWRlbnRpZmllcik7CisgICAgcmV0dXJuIFJlc29sdmVHbG9iYWxTdGF0dXMoKTsKKyNl
bmRpZgorfQorCitSZXNvbHZlR2xvYmFsU3RhdHVzIFJlc29sdmVHbG9iYWxTdGF0dXM6OmNvbXB1
dGVGb3IoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIHVuc2lnbmVkIGJ5dGVjb2RlSW5kZXgsIElkZW50
aWZpZXImIGlkZW50aWZpZXIpCit7CisjaWYgRU5BQkxFKEpJVCkgJiYgRU5BQkxFKFZBTFVFX1BS
T0ZJTEVSKQorICAgIGlmICghY29kZUJsb2NrLT5udW1iZXJPZkdsb2JhbFJlc29sdmVJbmZvcygp
KQorICAgICAgICByZXR1cm4gY29tcHV0ZUZvckxMSW50KGNvZGVCbG9jaywgYnl0ZWNvZGVJbmRl
eCwgaWRlbnRpZmllcik7CisgICAgCisgICAgaWYgKGNvZGVCbG9jay0+bGlrZWx5VG9UYWtlU2xv
d0Nhc2UoYnl0ZWNvZGVJbmRleCkpCisgICAgICAgIHJldHVybiBSZXNvbHZlR2xvYmFsU3RhdHVz
KFRha2VzU2xvd1BhdGgpOworICAgIAorICAgIEdsb2JhbFJlc29sdmVJbmZvJiBnbG9iYWxSZXNv
bHZlSW5mbyA9IGNvZGVCbG9jay0+Z2xvYmFsUmVzb2x2ZUluZm9Gb3JCeXRlY29kZU9mZnNldChi
eXRlY29kZUluZGV4KTsKKyAgICAKKyAgICBpZiAoIWdsb2JhbFJlc29sdmVJbmZvLnN0cnVjdHVy
ZSkKKyAgICAgICAgcmV0dXJuIGNvbXB1dGVGb3JMTEludChjb2RlQmxvY2ssIGJ5dGVjb2RlSW5k
ZXgsIGlkZW50aWZpZXIpOworICAgIAorICAgIHJldHVybiBjb21wdXRlRm9yU3RydWN0dXJlKGNv
ZGVCbG9jaywgZ2xvYmFsUmVzb2x2ZUluZm8uc3RydWN0dXJlLmdldCgpLCBpZGVudGlmaWVyKTsK
KyNlbHNlCisgICAgcmV0dXJuIGNvbXB1dGVGb3JMTEludChjb2RlQmxvY2ssIGJ5dGVjb2RlSW5k
ZXgsIGlkZW50aWZpZXIpOworI2VuZGlmCit9CisKK30gLy8gbmFtZXNwYWNlIEpTQworCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUmVzb2x2ZUdsb2JhbFN0YXR1cy5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9SZXNvbHZlR2xvYmFs
U3RhdHVzLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
UmVzb2x2ZUdsb2JhbFN0YXR1cy5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDg2IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBB
UyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgUmVzb2x2
ZUdsb2JhbFN0YXR1c19oCisjZGVmaW5lIFJlc29sdmVHbG9iYWxTdGF0dXNfaAorCisjaW5jbHVk
ZSAiSlNWYWx1ZS5oIgorI2luY2x1ZGUgPHd0Zi9Ob3RGb3VuZC5oPgorCituYW1lc3BhY2UgSlND
IHsKKworY2xhc3MgQ29kZUJsb2NrOworY2xhc3MgSWRlbnRpZmllcjsKK2NsYXNzIFN0cnVjdHVy
ZTsKKworY2xhc3MgUmVzb2x2ZUdsb2JhbFN0YXR1cyB7CitwdWJsaWM6CisgICAgZW51bSBTdGF0
ZSB7CisgICAgICAgIE5vSW5mb3JtYXRpb24sCisgICAgICAgIFNpbXBsZSwKKyAgICAgICAgVGFr
ZXNTbG93UGF0aAorICAgIH07CisgICAgCisgICAgUmVzb2x2ZUdsb2JhbFN0YXR1cygpCisgICAg
ICAgIDogbV9zdGF0ZShOb0luZm9ybWF0aW9uKQorICAgICAgICAsIG1fc3RydWN0dXJlKDApCisg
ICAgICAgICwgbV9vZmZzZXQobm90Rm91bmQpCisgICAgeworICAgIH0KKyAgICAKKyAgICBSZXNv
bHZlR2xvYmFsU3RhdHVzKAorICAgICAgICBTdGF0ZSBzdGF0ZSwgU3RydWN0dXJlKiBzdHJ1Y3R1
cmUgPSAwLCBzaXplX3Qgb2Zmc2V0ID0gbm90Rm91bmQsCisgICAgICAgIEpTVmFsdWUgc3BlY2lm
aWNWYWx1ZSA9IEpTVmFsdWUoKSkKKyAgICAgICAgOiBtX3N0YXRlKHN0YXRlKQorICAgICAgICAs
IG1fc3RydWN0dXJlKHN0cnVjdHVyZSkKKyAgICAgICAgLCBtX29mZnNldChvZmZzZXQpCisgICAg
ICAgICwgbV9zcGVjaWZpY1ZhbHVlKHNwZWNpZmljVmFsdWUpCisgICAgeworICAgIH0KKyAgICAK
KyAgICBzdGF0aWMgUmVzb2x2ZUdsb2JhbFN0YXR1cyBjb21wdXRlRm9yKENvZGVCbG9jayosIHVu
c2lnbmVkIGJ5dGVjb2RlSW5kZXgsIElkZW50aWZpZXImKTsKKyAgICAKKyAgICBTdGF0ZSBzdGF0
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGU7IH0KKyAgICAKKyAgICBib29sIGlzU2V0KCkgY29u
c3QgeyByZXR1cm4gbV9zdGF0ZSAhPSBOb0luZm9ybWF0aW9uOyB9CisgICAgYm9vbCBvcGVyYXRv
ciEoKSBjb25zdCB7IHJldHVybiAhaXNTZXQoKTsgfQorICAgIGJvb2wgaXNTaW1wbGUoKSBjb25z
dCB7IHJldHVybiBtX3N0YXRlID09IFNpbXBsZTsgfQorICAgIGJvb2wgdGFrZXNTbG93UGF0aCgp
IGNvbnN0IHsgcmV0dXJuIG1fc3RhdGUgPT0gVGFrZXNTbG93UGF0aDsgfQorICAgIAorICAgIFN0
cnVjdHVyZSogc3RydWN0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9zdHJ1Y3R1cmU7IH0KKyAgICBz
aXplX3Qgb2Zmc2V0KCkgY29uc3QgeyByZXR1cm4gbV9vZmZzZXQ7IH0KKyAgICBKU1ZhbHVlIHNw
ZWNpZmljVmFsdWUoKSBjb25zdCB7IHJldHVybiBtX3NwZWNpZmljVmFsdWU7IH0KKworcHJpdmF0
ZToKKyAgICBTdGF0ZSBtX3N0YXRlOworICAgIFN0cnVjdHVyZSogbV9zdHJ1Y3R1cmU7CisgICAg
c2l6ZV90IG1fb2Zmc2V0OworICAgIEpTVmFsdWUgbV9zcGVjaWZpY1ZhbHVlOworfTsgLy8gY2xh
c3MgUmVzb2x2ZUdsb2JhbFN0YXR1cworCit9IC8vIG5hbWVzcGFjZSBKU0MKKworI2VuZGlmIC8v
IFJlc29sdmVHbG9iYWxTdGF0dXNfaAorCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0J5dGVDb2RlUGFyc2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAkocmV2aXNpb24gMTIwODc4KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTM1LDYgKzM1LDcgQEAKICNpbmNsdWRlICJHZXRCeUlkU3RhdHVzLmgiCiAjaW5jbHVkZSAi
TWV0aG9kQ2FsbExpbmtTdGF0dXMuaCIKICNpbmNsdWRlICJQdXRCeUlkU3RhdHVzLmgiCisjaW5j
bHVkZSAiUmVzb2x2ZUdsb2JhbFN0YXR1cy5oIgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAj
aW5jbHVkZSA8d3RmL01hdGhFeHRyYXMuaD4KIApAQCAtOTQsNiArOTUsOSBAQCBwcml2YXRlOgog
ICAgIHZvaWQgc2V0SW50cmluc2ljUmVzdWx0KGJvb2wgdXNlc1Jlc3VsdCwgaW50IHJlc3VsdE9w
ZXJhbmQsIE5vZGVJbmRleCk7CiAgICAgLy8gSGFuZGxlIGludHJpbnNpYyBmdW5jdGlvbnMuIFJl
dHVybiB0cnVlIGlmIGl0IHN1Y2NlZWRlZCwgZmFsc2UgaWYgd2UgbmVlZCB0byBwbGFudCBhIGNh
bGwuCiAgICAgYm9vbCBoYW5kbGVJbnRyaW5zaWMoYm9vbCB1c2VzUmVzdWx0LCBpbnQgcmVzdWx0
T3BlcmFuZCwgSW50cmluc2ljLCBpbnQgcmVnaXN0ZXJPZmZzZXQsIGludCBhcmd1bWVudENvdW50
SW5jbHVkaW5nVGhpcywgU3BlY3VsYXRlZFR5cGUgcHJlZGljdGlvbik7CisgICAgdm9pZCBoYW5k
bGVHZXRCeU9mZnNldCgKKyAgICAgICAgaW50IGRlc3RpbmF0aW9uT3BlcmFuZCwgU3BlY3VsYXRl
ZFR5cGUsIE5vZGVJbmRleCBiYXNlLCB1bnNpZ25lZCBpZGVudGlmaWVyTnVtYmVyLAorICAgICAg
ICBib29sIHVzZUlubGluZVN0b3JhZ2UsIHNpemVfdCBvZmZzZXQpOwogICAgIHZvaWQgaGFuZGxl
R2V0QnlJZCgKICAgICAgICAgaW50IGRlc3RpbmF0aW9uT3BlcmFuZCwgU3BlY3VsYXRlZFR5cGUs
IE5vZGVJbmRleCBiYXNlLCB1bnNpZ25lZCBpZGVudGlmaWVyTnVtYmVyLAogICAgICAgICBjb25z
dCBHZXRCeUlkU3RhdHVzJik7CkBAIC0xNTY3LDYgKzE1NzEsMzEgQEAgYm9vbCBCeXRlQ29kZVBh
cnNlcjo6aGFuZGxlSW50cmluc2ljKGJvbwogICAgIH0KIH0KIAordm9pZCBCeXRlQ29kZVBhcnNl
cjo6aGFuZGxlR2V0QnlPZmZzZXQoCisgICAgaW50IGRlc3RpbmF0aW9uT3BlcmFuZCwgU3BlY3Vs
YXRlZFR5cGUgcHJlZGljdGlvbiwgTm9kZUluZGV4IGJhc2UsIHVuc2lnbmVkIGlkZW50aWZpZXJO
dW1iZXIsCisgICAgYm9vbCB1c2VJbmxpbmVTdG9yYWdlLCBzaXplX3Qgb2Zmc2V0KQoreworICAg
IE5vZGVJbmRleCBwcm9wZXJ0eVN0b3JhZ2U7CisgICAgc2l6ZV90IG9mZnNldE9mZnNldDsKKyAg
ICBpZiAodXNlSW5saW5lU3RvcmFnZSkgeworICAgICAgICBwcm9wZXJ0eVN0b3JhZ2UgPSBiYXNl
OworICAgICAgICBBU1NFUlQoIShzaXplb2YoSlNPYmplY3QpICUgc2l6ZW9mKEVuY29kZWRKU1Zh
bHVlKSkpOworICAgICAgICBvZmZzZXRPZmZzZXQgPSBzaXplb2YoSlNPYmplY3QpIC8gc2l6ZW9m
KEVuY29kZWRKU1ZhbHVlKTsKKyAgICB9IGVsc2UgeworICAgICAgICBwcm9wZXJ0eVN0b3JhZ2Ug
PSBhZGRUb0dyYXBoKEdldFByb3BlcnR5U3RvcmFnZSwgYmFzZSk7CisgICAgICAgIG9mZnNldE9m
ZnNldCA9IDA7CisgICAgfQorICAgIHNldChkZXN0aW5hdGlvbk9wZXJhbmQsCisgICAgICAgIGFk
ZFRvR3JhcGgoCisgICAgICAgICAgICBHZXRCeU9mZnNldCwgT3BJbmZvKG1fZ3JhcGgubV9zdG9y
YWdlQWNjZXNzRGF0YS5zaXplKCkpLCBPcEluZm8ocHJlZGljdGlvbiksCisgICAgICAgICAgICBw
cm9wZXJ0eVN0b3JhZ2UpKTsKKyAgICAgICAgCisgICAgU3RvcmFnZUFjY2Vzc0RhdGEgc3RvcmFn
ZUFjY2Vzc0RhdGE7CisgICAgc3RvcmFnZUFjY2Vzc0RhdGEub2Zmc2V0ID0gb2Zmc2V0ICsgb2Zm
c2V0T2Zmc2V0OworICAgIHN0b3JhZ2VBY2Nlc3NEYXRhLmlkZW50aWZpZXJOdW1iZXIgPSBpZGVu
dGlmaWVyTnVtYmVyOworICAgIG1fZ3JhcGgubV9zdG9yYWdlQWNjZXNzRGF0YS5hcHBlbmQoc3Rv
cmFnZUFjY2Vzc0RhdGEpOworfQorCiB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVHZXRCeUlk
KAogICAgIGludCBkZXN0aW5hdGlvbk9wZXJhbmQsIFNwZWN1bGF0ZWRUeXBlIHByZWRpY3Rpb24s
IE5vZGVJbmRleCBiYXNlLCB1bnNpZ25lZCBpZGVudGlmaWVyTnVtYmVyLAogICAgIGNvbnN0IEdl
dEJ5SWRTdGF0dXMmIGdldEJ5SWRTdGF0dXMpCkBAIC0xNjIwLDI1ICsxNjQ5LDkgQEAgdm9pZCBC
eXRlQ29kZVBhcnNlcjo6aGFuZGxlR2V0QnlJZCgKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAg
ICAKLSAgICBOb2RlSW5kZXggcHJvcGVydHlTdG9yYWdlOwotICAgIHNpemVfdCBvZmZzZXRPZmZz
ZXQ7Ci0gICAgaWYgKHVzZUlubGluZVN0b3JhZ2UpIHsKLSAgICAgICAgcHJvcGVydHlTdG9yYWdl
ID0gYmFzZTsKLSAgICAgICAgQVNTRVJUKCEoc2l6ZW9mKEpTT2JqZWN0KSAlIHNpemVvZihFbmNv
ZGVkSlNWYWx1ZSkpKTsKLSAgICAgICAgb2Zmc2V0T2Zmc2V0ID0gc2l6ZW9mKEpTT2JqZWN0KSAv
IHNpemVvZihFbmNvZGVkSlNWYWx1ZSk7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgcHJvcGVydHlT
dG9yYWdlID0gYWRkVG9HcmFwaChHZXRQcm9wZXJ0eVN0b3JhZ2UsIGJhc2UpOwotICAgICAgICBv
ZmZzZXRPZmZzZXQgPSAwOwotICAgIH0KLSAgICBzZXQoZGVzdGluYXRpb25PcGVyYW5kLAotICAg
ICAgICBhZGRUb0dyYXBoKAotICAgICAgICAgICAgR2V0QnlPZmZzZXQsIE9wSW5mbyhtX2dyYXBo
Lm1fc3RvcmFnZUFjY2Vzc0RhdGEuc2l6ZSgpKSwgT3BJbmZvKHByZWRpY3Rpb24pLAotICAgICAg
ICAgICAgcHJvcGVydHlTdG9yYWdlKSk7Ci0gICAgICAgIAotICAgIFN0b3JhZ2VBY2Nlc3NEYXRh
IHN0b3JhZ2VBY2Nlc3NEYXRhOwotICAgIHN0b3JhZ2VBY2Nlc3NEYXRhLm9mZnNldCA9IGdldEJ5
SWRTdGF0dXMub2Zmc2V0KCkgKyBvZmZzZXRPZmZzZXQ7Ci0gICAgc3RvcmFnZUFjY2Vzc0RhdGEu
aWRlbnRpZmllck51bWJlciA9IGlkZW50aWZpZXJOdW1iZXI7Ci0gICAgbV9ncmFwaC5tX3N0b3Jh
Z2VBY2Nlc3NEYXRhLmFwcGVuZChzdG9yYWdlQWNjZXNzRGF0YSk7CisgICAgaGFuZGxlR2V0QnlP
ZmZzZXQoCisgICAgICAgIGRlc3RpbmF0aW9uT3BlcmFuZCwgcHJlZGljdGlvbiwgYmFzZSwgaWRl
bnRpZmllck51bWJlciwgdXNlSW5saW5lU3RvcmFnZSwKKyAgICAgICAgZ2V0QnlJZFN0YXR1cy5v
ZmZzZXQoKSk7CiB9CiAKIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OnByZXBhcmVUb1BhcnNlQmxvY2so
KQpAQCAtMjY0OCwxMCArMjY2MSwzNyBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2Nr
KHVuc2lnbmVkCiAgICAgICAgIGNhc2Ugb3BfcmVzb2x2ZV9nbG9iYWw6IHsKICAgICAgICAgICAg
IFNwZWN1bGF0ZWRUeXBlIHByZWRpY3Rpb24gPSBnZXRQcmVkaWN0aW9uKCk7CiAgICAgICAgICAg
ICAKKyAgICAgICAgICAgIHVuc2lnbmVkIGlkZW50aWZpZXJOdW1iZXIgPSBtX2lubGluZVN0YWNr
VG9wLT5tX2lkZW50aWZpZXJSZW1hcFsKKyAgICAgICAgICAgICAgICBjdXJyZW50SW5zdHJ1Y3Rp
b25bMl0udS5vcGVyYW5kXTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgUmVzb2x2ZUdsb2Jh
bFN0YXR1cyBzdGF0dXMgPSBSZXNvbHZlR2xvYmFsU3RhdHVzOjpjb21wdXRlRm9yKAorICAgICAg
ICAgICAgICAgIG1faW5saW5lU3RhY2tUb3AtPm1fcHJvZmlsZWRCbG9jaywgbV9jdXJyZW50SW5k
ZXgsCisgICAgICAgICAgICAgICAgbV9jb2RlQmxvY2stPmlkZW50aWZpZXIoaWRlbnRpZmllck51
bWJlcikpOworICAgICAgICAgICAgaWYgKHN0YXR1cy5pc1NpbXBsZSgpKSB7CisgICAgICAgICAg
ICAgICAgQVNTRVJUKHN0YXR1cy5zdHJ1Y3R1cmUoKSk7CisgICAgICAgICAgICAgICAgCisgICAg
ICAgICAgICAgICAgTm9kZUluZGV4IGdsb2JhbE9iamVjdCA9IGFkZFN0cnVjdHVyZVRyYW5zaXRp
b25DaGVjaygKKyAgICAgICAgICAgICAgICAgICAgbV9pbmxpbmVTdGFja1RvcC0+bV9jb2RlQmxv
Y2stPmdsb2JhbE9iamVjdCgpLCBzdGF0dXMuc3RydWN0dXJlKCkpOworICAgICAgICAgICAgICAg
IAorICAgICAgICAgICAgICAgIGlmIChzdGF0dXMuc3BlY2lmaWNWYWx1ZSgpKSB7CisgICAgICAg
ICAgICAgICAgICAgIEFTU0VSVChzdGF0dXMuc3BlY2lmaWNWYWx1ZSgpLmlzQ2VsbCgpKTsKKyAg
ICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgIHNldChjdXJyZW50SW5zdHJ1
Y3Rpb25bMV0udS5vcGVyYW5kLAorICAgICAgICAgICAgICAgICAgICAgICAgY2VsbENvbnN0YW50
KHN0YXR1cy5zcGVjaWZpY1ZhbHVlKCkuYXNDZWxsKCkpKTsKKyAgICAgICAgICAgICAgICB9IGVs
c2UgeworICAgICAgICAgICAgICAgICAgICBoYW5kbGVHZXRCeU9mZnNldCgKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQsIHByZWRpY3Rpb24s
IGdsb2JhbE9iamVjdCwKKyAgICAgICAgICAgICAgICAgICAgICAgIGlkZW50aWZpZXJOdW1iZXIs
IHN0YXR1cy5zdHJ1Y3R1cmUoKS0+aXNVc2luZ0lubGluZVN0b3JhZ2UoKSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgIHN0YXR1cy5vZmZzZXQoKSk7CisgICAgICAgICAgICAgICAgfQorICAgICAg
ICAgICAgICAgIAorICAgICAgICAgICAgICAgIE5FWFRfT1BDT0RFKG9wX3Jlc29sdmVfZ2xvYmFs
KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAogICAgICAgICAgICAgTm9kZUluZGV4IHJl
c29sdmUgPSBhZGRUb0dyYXBoKFJlc29sdmVHbG9iYWwsIE9wSW5mbyhtX2dyYXBoLm1fcmVzb2x2
ZUdsb2JhbERhdGEuc2l6ZSgpKSwgT3BJbmZvKHByZWRpY3Rpb24pKTsKICAgICAgICAgICAgIG1f
Z3JhcGgubV9yZXNvbHZlR2xvYmFsRGF0YS5hcHBlbmQoUmVzb2x2ZUdsb2JhbERhdGEoKSk7CiAg
ICAgICAgICAgICBSZXNvbHZlR2xvYmFsRGF0YSYgZGF0YSA9IG1fZ3JhcGgubV9yZXNvbHZlR2xv
YmFsRGF0YS5sYXN0KCk7Ci0gICAgICAgICAgICBkYXRhLmlkZW50aWZpZXJOdW1iZXIgPSBtX2lu
bGluZVN0YWNrVG9wLT5tX2lkZW50aWZpZXJSZW1hcFtjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5v
cGVyYW5kXTsKKyAgICAgICAgICAgIGRhdGEuaWRlbnRpZmllck51bWJlciA9IGlkZW50aWZpZXJO
dW1iZXI7CiAgICAgICAgICAgICBkYXRhLnJlc29sdmVJbmZvSW5kZXggPSBtX2dsb2JhbFJlc29s
dmVOdW1iZXIrKzsKICAgICAgICAgICAgIHNldChjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVy
YW5kLCByZXNvbHZlKTsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNP
YmplY3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
T2JqZWN0LmNwcAkocmV2aXNpb24gMTIwODc4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNPYmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Myw2ICs0MywxNiBAQAogCiBu
YW1lc3BhY2UgSlNDIHsKIAorSlNDZWxsKiBnZXRDYWxsYWJsZU9iamVjdFNsb3coSlNDZWxsKiBj
ZWxsKQoreworICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gY2VsbC0+c3RydWN0dXJlKCk7Cisg
ICAgaWYgKHN0cnVjdHVyZS0+dHlwZUluZm8oKS50eXBlKCkgPT0gSlNGdW5jdGlvblR5cGUpCisg
ICAgICAgIHJldHVybiBjZWxsOworICAgIGlmIChzdHJ1Y3R1cmUtPmNsYXNzSW5mbygpLT5pc1N1
YkNsYXNzT2YoJkludGVybmFsRnVuY3Rpb246OnNfaW5mbykpCisgICAgICAgIHJldHVybiBjZWxs
OworICAgIHJldHVybiAwOworfQorCiBBU1NFUlRfQ0xBU1NfRklUU19JTl9DRUxMKEpTT2JqZWN0
KTsKIEFTU0VSVF9DTEFTU19GSVRTX0lOX0NFTEwoSlNOb25GaW5hbE9iamVjdCk7CiBBU1NFUlRf
Q0xBU1NfRklUU19JTl9DRUxMKEpTRmluYWxPYmplY3QpOwpAQCAtMTMzLDcgKzE0Myw3IEBAIHZv
aWQgSlNPYmplY3Q6OnB1dChKU0NlbGwqIGNlbGwsIEV4ZWNTdGEKICAgICAgICAgZm9yIChKU09i
amVjdCogb2JqID0gdGhpc09iamVjdDsgIW9iai0+c3RydWN0dXJlKCktPmhhc1JlYWRPbmx5T3JH
ZXR0ZXJTZXR0ZXJQcm9wZXJ0aWVzRXhjbHVkaW5nUHJvdG8oKTsgb2JqID0gYXNPYmplY3QocHJv
dG90eXBlKSkgewogICAgICAgICAgICAgcHJvdG90eXBlID0gb2JqLT5wcm90b3R5cGUoKTsKICAg
ICAgICAgICAgIGlmIChwcm90b3R5cGUuaXNOdWxsKCkpIHsKLSAgICAgICAgICAgICAgICBpZiAo
IXRoaXNPYmplY3QtPnB1dERpcmVjdEludGVybmFsPFB1dE1vZGVQdXQ+KGdsb2JhbERhdGEsIHBy
b3BlcnR5TmFtZSwgdmFsdWUsIDAsIHNsb3QsIGdldEpTRnVuY3Rpb24odmFsdWUpKSAmJiBzbG90
LmlzU3RyaWN0TW9kZSgpKQorICAgICAgICAgICAgICAgIGlmICghdGhpc09iamVjdC0+cHV0RGly
ZWN0SW50ZXJuYWw8UHV0TW9kZVB1dD4oZ2xvYmFsRGF0YSwgcHJvcGVydHlOYW1lLCB2YWx1ZSwg
MCwgc2xvdCwgZ2V0Q2FsbGFibGVPYmplY3QodmFsdWUpKSAmJiBzbG90LmlzU3RyaWN0TW9kZSgp
KQogICAgICAgICAgICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBTdHJpY3RNb2RlUmVh
ZG9ubHlQcm9wZXJ0eVdyaXRlRXJyb3IpOwogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAg
ICAgICAgIH0KQEAgLTE4MCw3ICsxOTAsNyBAQCB2b2lkIEpTT2JqZWN0OjpwdXQoSlNDZWxsKiBj
ZWxsLCBFeGVjU3RhCiAgICAgICAgICAgICBicmVhazsKICAgICB9CiAgICAgCi0gICAgaWYgKCF0
aGlzT2JqZWN0LT5wdXREaXJlY3RJbnRlcm5hbDxQdXRNb2RlUHV0PihnbG9iYWxEYXRhLCBwcm9w
ZXJ0eU5hbWUsIHZhbHVlLCAwLCBzbG90LCBnZXRKU0Z1bmN0aW9uKHZhbHVlKSkgJiYgc2xvdC5p
c1N0cmljdE1vZGUoKSkKKyAgICBpZiAoIXRoaXNPYmplY3QtPnB1dERpcmVjdEludGVybmFsPFB1
dE1vZGVQdXQ+KGdsb2JhbERhdGEsIHByb3BlcnR5TmFtZSwgdmFsdWUsIDAsIHNsb3QsIGdldENh
bGxhYmxlT2JqZWN0KHZhbHVlKSkgJiYgc2xvdC5pc1N0cmljdE1vZGUoKSkKICAgICAgICAgdGhy
b3dUeXBlRXJyb3IoZXhlYywgU3RyaWN0TW9kZVJlYWRvbmx5UHJvcGVydHlXcml0ZUVycm9yKTsK
ICAgICByZXR1cm47CiB9CkBAIC0xOTYsNyArMjA2LDcgQEAgdm9pZCBKU09iamVjdDo6cHV0RGly
ZWN0VmlydHVhbChKU09iamVjdAogewogICAgIEFTU0VSVCghdmFsdWUuaXNHZXR0ZXJTZXR0ZXIo
KSAmJiAhKGF0dHJpYnV0ZXMgJiBBY2Nlc3NvcikpOwogICAgIFB1dFByb3BlcnR5U2xvdCBzbG90
OwotICAgIG9iamVjdC0+cHV0RGlyZWN0SW50ZXJuYWw8UHV0TW9kZURlZmluZU93blByb3BlcnR5
PihleGVjLT5nbG9iYWxEYXRhKCksIHByb3BlcnR5TmFtZSwgdmFsdWUsIGF0dHJpYnV0ZXMsIHNs
b3QsIGdldEpTRnVuY3Rpb24odmFsdWUpKTsKKyAgICBvYmplY3QtPnB1dERpcmVjdEludGVybmFs
PFB1dE1vZGVEZWZpbmVPd25Qcm9wZXJ0eT4oZXhlYy0+Z2xvYmFsRGF0YSgpLCBwcm9wZXJ0eU5h
bWUsIHZhbHVlLCBhdHRyaWJ1dGVzLCBzbG90LCBnZXRDYWxsYWJsZU9iamVjdCh2YWx1ZSkpOwog
fQogCiBib29sIEpTT2JqZWN0OjpzZXRQcm90b3R5cGVXaXRoQ3ljbGVDaGVjayhKU0dsb2JhbERh
dGEmIGdsb2JhbERhdGEsIEpTVmFsdWUgcHJvdG90eXBlKQpAQCAtMjI2LDcgKzIzNiw3IEBAIHZv
aWQgSlNPYmplY3Q6OnB1dERpcmVjdEFjY2Vzc29yKEpTR2xvYmEKICAgICBBU1NFUlQodmFsdWUu
aXNHZXR0ZXJTZXR0ZXIoKSAmJiAoYXR0cmlidXRlcyAmIEFjY2Vzc29yKSk7CiAKICAgICBQdXRQ
cm9wZXJ0eVNsb3Qgc2xvdDsKLSAgICBwdXREaXJlY3RJbnRlcm5hbDxQdXRNb2RlRGVmaW5lT3du
UHJvcGVydHk+KGdsb2JhbERhdGEsIHByb3BlcnR5TmFtZSwgdmFsdWUsIGF0dHJpYnV0ZXMsIHNs
b3QsIGdldEpTRnVuY3Rpb24odmFsdWUpKTsKKyAgICBwdXREaXJlY3RJbnRlcm5hbDxQdXRNb2Rl
RGVmaW5lT3duUHJvcGVydHk+KGdsb2JhbERhdGEsIHByb3BlcnR5TmFtZSwgdmFsdWUsIGF0dHJp
YnV0ZXMsIHNsb3QsIGdldENhbGxhYmxlT2JqZWN0KHZhbHVlKSk7CiAKICAgICAvLyBwdXREaXJl
Y3Qgd2lsbCBjaGFuZ2Ugb3VyIFN0cnVjdHVyZSBpZiB3ZSBhZGQgYSBuZXcgcHJvcGVydHkuIEZv
cgogICAgIC8vIGdldHRlcnMgYW5kIHNldHRlcnMsIHRob3VnaCwgd2UgYWxzbyBuZWVkIHRvIGNo
YW5nZSBvdXIgU3RydWN0dXJlCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U09iamVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
T2JqZWN0LmgJKHJldmlzaW9uIDEyMDg3OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTT2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTQ2LDYgKzQ2LDE1IEBAIG5hbWVzcGFj
ZSBKU0MgewogICAgICAgICByZXR1cm4gMDsKICAgICB9CiAKKyAgICBKU19FWFBPUlRfUFJJVkFU
RSBKU0NlbGwqIGdldENhbGxhYmxlT2JqZWN0U2xvdyhKU0NlbGwqKTsKKworICAgIGlubGluZSBK
U0NlbGwqIGdldENhbGxhYmxlT2JqZWN0KEpTVmFsdWUgdmFsdWUpCisgICAgeworICAgICAgICBp
ZiAoIXZhbHVlLmlzQ2VsbCgpKQorICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVy
biBnZXRDYWxsYWJsZU9iamVjdFNsb3codmFsdWUuYXNDZWxsKCkpOworICAgIH0KKwogICAgIGNs
YXNzIEdldHRlclNldHRlcjsKICAgICBjbGFzcyBIYXNoRW50cnk7CiAgICAgY2xhc3MgSW50ZXJu
YWxGdW5jdGlvbjsKQEAgLTc1OSwyMCArNzY4LDIwIEBAIGlubGluZSBib29sIEpTT2JqZWN0Ojpw
dXRPd25EYXRhUHJvcGVydHkKICAgICBBU1NFUlQoIUhlYXA6OmhlYXAodmFsdWUpIHx8IEhlYXA6
OmhlYXAodmFsdWUpID09IEhlYXA6OmhlYXAodGhpcykpOwogICAgIEFTU0VSVCghc3RydWN0dXJl
KCktPmhhc0dldHRlclNldHRlclByb3BlcnRpZXMoKSk7CiAKLSAgICByZXR1cm4gcHV0RGlyZWN0
SW50ZXJuYWw8UHV0TW9kZVB1dD4oZ2xvYmFsRGF0YSwgcHJvcGVydHlOYW1lLCB2YWx1ZSwgMCwg
c2xvdCwgZ2V0SlNGdW5jdGlvbih2YWx1ZSkpOworICAgIHJldHVybiBwdXREaXJlY3RJbnRlcm5h
bDxQdXRNb2RlUHV0PihnbG9iYWxEYXRhLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCAwLCBzbG90LCBn
ZXRDYWxsYWJsZU9iamVjdCh2YWx1ZSkpOwogfQogCiBpbmxpbmUgdm9pZCBKU09iamVjdDo6cHV0
RGlyZWN0KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFt
ZSwgSlNWYWx1ZSB2YWx1ZSwgdW5zaWduZWQgYXR0cmlidXRlcykKIHsKICAgICBBU1NFUlQoIXZh
bHVlLmlzR2V0dGVyU2V0dGVyKCkgJiYgIShhdHRyaWJ1dGVzICYgQWNjZXNzb3IpKTsKICAgICBQ
dXRQcm9wZXJ0eVNsb3Qgc2xvdDsKLSAgICBwdXREaXJlY3RJbnRlcm5hbDxQdXRNb2RlRGVmaW5l
T3duUHJvcGVydHk+KGdsb2JhbERhdGEsIHByb3BlcnR5TmFtZSwgdmFsdWUsIGF0dHJpYnV0ZXMs
IHNsb3QsIGdldEpTRnVuY3Rpb24odmFsdWUpKTsKKyAgICBwdXREaXJlY3RJbnRlcm5hbDxQdXRN
b2RlRGVmaW5lT3duUHJvcGVydHk+KGdsb2JhbERhdGEsIHByb3BlcnR5TmFtZSwgdmFsdWUsIGF0
dHJpYnV0ZXMsIHNsb3QsIGdldENhbGxhYmxlT2JqZWN0KHZhbHVlKSk7CiB9CiAKIGlubGluZSB2
b2lkIEpTT2JqZWN0OjpwdXREaXJlY3QoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBQcm9wZXJ0
eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCBQdXRQcm9wZXJ0eVNsb3QmIHNsb3Qp
CiB7CiAgICAgQVNTRVJUKCF2YWx1ZS5pc0dldHRlclNldHRlcigpKTsKLSAgICBwdXREaXJlY3RJ
bnRlcm5hbDxQdXRNb2RlRGVmaW5lT3duUHJvcGVydHk+KGdsb2JhbERhdGEsIHByb3BlcnR5TmFt
ZSwgdmFsdWUsIDAsIHNsb3QsIGdldEpTRnVuY3Rpb24odmFsdWUpKTsKKyAgICBwdXREaXJlY3RJ
bnRlcm5hbDxQdXRNb2RlRGVmaW5lT3duUHJvcGVydHk+KGdsb2JhbERhdGEsIHByb3BlcnR5TmFt
ZSwgdmFsdWUsIDAsIHNsb3QsIGdldENhbGxhYmxlT2JqZWN0KHZhbHVlKSk7CiB9CiAKIGlubGlu
ZSB2b2lkIEpTT2JqZWN0OjpwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbihKU0dsb2JhbERhdGEm
IGdsb2JhbERhdGEsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUsIHVu
c2lnbmVkIGF0dHJpYnV0ZXMpCkBAIC03ODEsNyArNzkwLDcgQEAgaW5saW5lIHZvaWQgSlNPYmpl
Y3Q6OnB1dERpcmVjdFdpdGhvdXRUcgogICAgIFByb3BlcnR5U3RvcmFnZSBuZXdTdG9yYWdlID0g
cHJvcGVydHlTdG9yYWdlKCk7CiAgICAgaWYgKHN0cnVjdHVyZSgpLT5zaG91bGRHcm93UHJvcGVy
dHlTdG9yYWdlKCkpCiAgICAgICAgIG5ld1N0b3JhZ2UgPSBncm93UHJvcGVydHlTdG9yYWdlKGds
b2JhbERhdGEsIHN0cnVjdHVyZSgpLT5wcm9wZXJ0eVN0b3JhZ2VDYXBhY2l0eSgpLCBzdHJ1Y3R1
cmUoKS0+c3VnZ2VzdGVkTmV3UHJvcGVydHlTdG9yYWdlU2l6ZSgpKTsKLSAgICBzaXplX3Qgb2Zm
c2V0ID0gc3RydWN0dXJlKCktPmFkZFByb3BlcnR5V2l0aG91dFRyYW5zaXRpb24oZ2xvYmFsRGF0
YSwgcHJvcGVydHlOYW1lLCBhdHRyaWJ1dGVzLCBnZXRKU0Z1bmN0aW9uKHZhbHVlKSk7CisgICAg
c2l6ZV90IG9mZnNldCA9IHN0cnVjdHVyZSgpLT5hZGRQcm9wZXJ0eVdpdGhvdXRUcmFuc2l0aW9u
KGdsb2JhbERhdGEsIHByb3BlcnR5TmFtZSwgYXR0cmlidXRlcywgZ2V0Q2FsbGFibGVPYmplY3Qo
dmFsdWUpKTsKICAgICBzZXRQcm9wZXJ0eVN0b3JhZ2UoZ2xvYmFsRGF0YSwgbmV3U3RvcmFnZSwg
c3RydWN0dXJlKCkpOwogICAgIHB1dERpcmVjdE9mZnNldChnbG9iYWxEYXRhLCBvZmZzZXQsIHZh
bHVlKTsKIH0K
</data>
<flag name="review"
          id="156496"
          type_id="1"
          status="+"
          setter="oliver"
    />
    <flag name="commit-queue"
          id="156504"
          type_id="3"
          status="-"
          setter="buildbot"
    />
          </attachment>
      

    </bug>

</bugzilla>