<?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>98608</bug_id>
          
          <creation_ts>2012-10-06 17:43:55 -0700</creation_ts>
          <short_desc>Contiguous array allocation should always be inlined</short_desc>
          <delta_ts>2012-10-12 22:46:45 -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>
          <dependson>97288</dependson>
    
    <dependson>98996</dependson>
    
    <dependson>99196</dependson>
          <blocked>99234</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Filip Pizlo">fpizlo</reporter>
          <assigned_to name="Filip Pizlo">fpizlo</assigned_to>
          <cc>barraclough</cc>
    
    <cc>ggaren</cc>
    
    <cc>mark.lam</cc>
    
    <cc>mhahnenberg</cc>
    
    <cc>msaboff</cc>
    
    <cc>oliver</cc>
    
    <cc>ossy</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>736312</commentid>
    <comment_count>0</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-10-06 17:43:55 -0700</bug_when>
    <thetext>Currently it&apos;s only inlined in the baseline JIT, which is unfortunate.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>741230</commentid>
    <comment_count>1</comment_count>
      <attachid>168488</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-10-12 14:43:59 -0700</bug_when>
    <thetext>Created attachment 168488
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>741398</commentid>
    <comment_count>2</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-10-12 20:56:32 -0700</bug_when>
    <thetext>Landed in http://trac.webkit.org/changeset/131249</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>741415</commentid>
    <comment_count>3</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2012-10-12 22:36:56 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; Landed in http://trac.webkit.org/changeset/131249

It broke the 32 bit builds:
/ramdisk/qt-linux-release/build/Source/JavaScriptCore/dfg/DFGSpeculativeJIT32_64.cpp: In member function &apos;void JSC::DFG::SpeculativeJIT::compile(JSC::DFG::Node&amp;)&apos;:
/ramdisk/qt-linux-release/build/Source/JavaScriptCore/dfg/DFGSpeculativeJIT32_64.cpp:3628: error: no matching function for call to &apos;JSC::DFG::SpeculativeJIT::emitAllocateBasicJSObject(JSC::AbstractMacroAssembler&lt;JSC::X86Assembler&gt;::TrustedImmPtr, JSC::DFG::GPRReg&amp;, JSC::DFG::GPRReg&amp;, JSC::DFG::GPRReg&amp;, JSC::AbstractMacroAssembler&lt;JSC::X86Assembler&gt;::JumpList&amp;)&apos;[0m</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>741420</commentid>
    <comment_count>4</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2012-10-12 22:46:45 -0700</bug_when>
    <thetext>Fix landed in http://trac.webkit.org/changeset/131251</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>168488</attachid>
            <date>2012-10-12 14:43:59 -0700</date>
            <delta_ts>2012-10-12 14:44:56 -0700</delta_ts>
            <desc>the patch</desc>
            <filename>newarray_1.patch</filename>
            <type>text/plain</type>
            <size>39368</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTMxMjI0KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ4IEBA
CisyMDEyLTEwLTEyICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
Q29udGlndW91cyBhcnJheSBhbGxvY2F0aW9uIHNob3VsZCBhbHdheXMgYmUgaW5saW5lZAorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTg2MDgKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIGlubGluZXMg
Y29udGlndW91cyBhcnJheSBhbGxvY2F0aW9uIGluIHRoZSBtb3N0IG9idmlvdXMgd2F5IHBvc3Np
YmxlLgorCisgICAgICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
ajoKKyAgICAgICAgKiBhc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXIuaDoKKyAgICAgICAgKEpTQzo6
TWFjcm9Bc3NlbWJsZXI6OmJyYW5jaFN1YlB0cik6CisgICAgICAgIChNYWNyb0Fzc2VtYmxlcik6
CisgICAgICAgICogYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2XzY0Lmg6CisgICAgICAgIChK
U0M6Ok1hY3JvQXNzZW1ibGVyWDg2XzY0OjpicmFuY2hTdWJQdHIpOgorICAgICAgICAoTWFjcm9B
c3NlbWJsZXJYODZfNjQpOgorICAgICAgICAqIGRmZy9ERkdBYnN0cmFjdFN0YXRlLmNwcDoKKyAg
ICAgICAgKEpTQzo6REZHOjpBYnN0cmFjdFN0YXRlOjpleGVjdXRlKToKKyAgICAgICAgKiBkZmcv
REZHQ0NhbGxIZWxwZXJzLmg6CisgICAgICAgIChKU0M6OkRGRzo6Q0NhbGxIZWxwZXJzOjpzZXR1
cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUpOgorICAgICAgICAoQ0NhbGxIZWxwZXJzKToKKyAgICAg
ICAgKiBkZmcvREZHQ2FsbEFycmF5QWxsb2NhdG9yU2xvd1BhdGhHZW5lcmF0b3IuaDogQWRkZWQu
CisgICAgICAgIChERkcpOgorICAgICAgICAoQ2FsbEFycmF5QWxsb2NhdG9yU2xvd1BhdGhHZW5l
cmF0b3IpOgorICAgICAgICAoSlNDOjpERkc6OkNhbGxBcnJheUFsbG9jYXRvclNsb3dQYXRoR2Vu
ZXJhdG9yOjpDYWxsQXJyYXlBbGxvY2F0b3JTbG93UGF0aEdlbmVyYXRvcik6CisgICAgICAgIChK
U0M6OkRGRzo6Q2FsbEFycmF5QWxsb2NhdG9yU2xvd1BhdGhHZW5lcmF0b3I6OmdlbmVyYXRlSW50
ZXJuYWwpOgorICAgICAgICAoQ2FsbEFycmF5QWxsb2NhdG9yV2l0aFZhcmlhYmxlU2l6ZVNsb3dQ
YXRoR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6REZHOjpDYWxsQXJyYXlBbGxvY2F0b3JXaXRo
VmFyaWFibGVTaXplU2xvd1BhdGhHZW5lcmF0b3I6OkNhbGxBcnJheUFsbG9jYXRvcldpdGhWYXJp
YWJsZVNpemVTbG93UGF0aEdlbmVyYXRvcik6CisgICAgICAgIChKU0M6OkRGRzo6Q2FsbEFycmF5
QWxsb2NhdG9yV2l0aFZhcmlhYmxlU2l6ZVNsb3dQYXRoR2VuZXJhdG9yOjpnZW5lcmF0ZUludGVy
bmFsKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwOgorICAgICAgICAoSlND
OjpERkc6OlNwZWN1bGF0aXZlSklUOjplbWl0QWxsb2NhdGVKU0FycmF5KToKKyAgICAgICAgKERG
Ryk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVBbGxvY2F0ZVBy
b3BlcnR5U3RvcmFnZSk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBp
bGVSZWFsbG9jYXRlUHJvcGVydHlTdG9yYWdlKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRp
dmVKSVQuaDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y2FsbE9wZXJhdGlv
bik6CisgICAgICAgIChTcGVjdWxhdGl2ZUpJVCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3Vs
YXRpdmVKSVQ6OmVtaXRBbGxvY2F0ZUJhc2ljU3RvcmFnZSk6CisgICAgICAgIChKU0M6OkRGRzo6
U3BlY3VsYXRpdmVKSVQ6OmVtaXRBbGxvY2F0ZUJhc2ljSlNPYmplY3QpOgorICAgICAgICAoSlND
OjpERkc6OlNwZWN1bGF0aXZlSklUOjplbWl0QWxsb2NhdGVKU0ZpbmFsT2JqZWN0KToKKyAgICAg
ICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6
U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJ
VDY0LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZSk6CisK
IDIwMTItMTAtMTIgIE1hcmsgSGFobmVuYmVyZyAgPG1oYWhuZW5iZXJnQGFwcGxlLmNvbT4KIAog
ICAgICAgICBCdWlsZCBmaXggYWZ0ZXIgcjEzMTIxMwpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oJKHJldmlzaW9uIDEzMTIxMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZh
U2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC04
OCw2ICs4OCw3IEBACiAJCTBGMjFDMjdEMTRCRTcyN0EwMEFEQzY0QiAvKiBDb2RlU3BlY2lhbGl6
YXRpb25LaW5kLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAwRjIxQzI3OTE0QkU3MjczMDBBREM2NEIgLyogQ29kZVNwZWNpYWxpemF0aW9uS2luZC5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGMjFDMjdG
MTRCRUFBODIwMEFEQzY0QiAvKiBCeXRlY29kZUNvbnZlbnRpb25zLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjIxQzI3RTE0QkVBQTgwMDBBREM2NEIg
LyogQnl0ZWNvZGVDb252ZW50aW9ucy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCTBGMjQyREE3MTNGM0IxRTgwMDdBREQ0QyAvKiBXZWFrUmVmZXJl
bmNlSGFydmVzdGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAwRjI0MkRBNTEzRjNCMUJCMDA3QURENEMgLyogV2Vha1JlZmVyZW5jZUhhcnZlc3Rlci5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTBGMjU2
QzM2MTYyN0IwQUQwMDdGMjc4MyAvKiBERkdDYWxsQXJyYXlBbGxvY2F0b3JTbG93UGF0aEdlbmVy
YXRvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYy
NTZDMzQxNjI3QjBBQTAwN0YyNzgzIC8qIERGR0NhbGxBcnJheUFsbG9jYXRvclNsb3dQYXRoR2Vu
ZXJhdG9yLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJMEYyQkRDMTUxNTFDNUQ0RDAwQ0Q4OTEwIC8qIERGR0ZpeHVwUGhhc2UuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYyQkRDMTIxNTFDNUQ0QTAw
Q0Q4OTEwIC8qIERGR0ZpeHVwUGhhc2UuY3BwICovOyB9OwogCQkwRjJCREMxNjE1MUM1RDRGMDBD
RDg5MTAgLyogREZHRml4dXBQaGFzZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMEYyQkRDMTMxNTFDNUQ0QTAwQ0Q4OTEwIC8qIERGR0ZpeHVwUGhhc2Uu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRjJC
REMyMTE1MUU4MDNCMDBDRDg5MTAgLyogREZHSW5zZXJ0aW9uU2V0LmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjJCREMxRjE1MUU4MDM4MDBDRDg5MTAg
LyogREZHSW5zZXJ0aW9uU2V0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKQEAgLTg2Nyw2ICs4NjgsNyBAQAogCQkwRjIxQzI3QTE0QkU3MjczMDBBREM2
NEIgLyogRXhlY3V0aW9uSGFybmVzcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBFeGVjdXRpb25IYXJuZXNzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGMjFD
MjdFMTRCRUFBODAwMEFEQzY0QiAvKiBCeXRlY29kZUNvbnZlbnRpb25zLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEJ5dGVjb2RlQ29udmVudGlvbnMuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJMEYyNDJEQTUxM0YzQjFCQjAwN0FERDRDIC8qIFdlYWtSZWZlcmVu
Y2VIYXJ2ZXN0ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2Vha1JlZmVy
ZW5jZUhhcnZlc3Rlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjI1NkMzNDE2
MjdCMEFBMDA3RjI3ODMgLyogREZHQ2FsbEFycmF5QWxsb2NhdG9yU2xvd1BhdGhHZW5lcmF0b3Iu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gREZHQ2FsbEFycmF5QWxsb2NhdG9y
U2xvd1BhdGhHZW5lcmF0b3IuaDsgcGF0aCA9IGRmZy9ERkdDYWxsQXJyYXlBbGxvY2F0b3JTbG93
UGF0aEdlbmVyYXRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjJCREMxMjE1
MUM1RDRBMDBDRDg5MTAgLyogREZHRml4dXBQaGFzZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IG5hbWUgPSBERkdGaXh1cFBoYXNlLmNwcDsgcGF0aCA9IGRmZy9ERkdGaXh1cFBo
YXNlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEYyQkRDMTMxNTFDNUQ0QTAw
Q0Q4OTEwIC8qIERGR0ZpeHVwUGhhc2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1l
ID0gREZHRml4dXBQaGFzZS5oOyBwYXRoID0gZGZnL0RGR0ZpeHVwUGhhc2UuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEYyQkRDMUYxNTFFODAzODAwQ0Q4OTEwIC8qIERGR0luc2Vy
dGlvblNldC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBERkdJbnNlcnRpb25T
ZXQuaDsgcGF0aCA9IGRmZy9ERkdJbnNlcnRpb25TZXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKQEAgLTIzNDUsMjAgKzIzNDcsMjEgQEAKIAkJCQkwRjVGMDhDQzE0NkJFNjAyMDAwNDcy
QTkgLyogREZHQnl0ZUNvZGVDYWNoZS5oICovLAogCQkJCTg2RUM5REI0MTMyOERGODIwMDJCMkFE
NyAvKiBERkdCeXRlQ29kZVBhcnNlci5jcHAgKi8sCiAJCQkJODZFQzlEQjUxMzI4REY4MjAwMkIy
QUQ3IC8qIERGR0J5dGVDb2RlUGFyc2VyLmggKi8sCisJCQkJMEYyNTZDMzQxNjI3QjBBQTAwN0Yy
NzgzIC8qIERGR0NhbGxBcnJheUFsbG9jYXRvclNsb3dQYXRoR2VuZXJhdG9yLmggKi8sCisJCQkJ
MEZEODJFMUUxNDE3MkMyRjAwMTc5Qzk0IC8qIERGR0NhcGFiaWxpdGllcy5jcHAgKi8sCisJCQkJ
MEZEODJFMUYxNDE3MkMyRjAwMTc5Qzk0IC8qIERGR0NhcGFiaWxpdGllcy5oICovLAogCQkJCTBG
N0IyOTQ4MTRDM0NEMjMwMDdDM0RCMSAvKiBERkdDQ2FsbEhlbHBlcnMuaCAqLywKIAkJCQkwRkZG
Qzk0QjE0RUY5MDk1MDBDNzI1MzIgLyogREZHQ0ZBUGhhc2UuY3BwICovLAogCQkJCTBGRkZDOTRD
MTRFRjkwOTUwMEM3MjUzMiAvKiBERkdDRkFQaGFzZS5oICovLAogCQkJCTBGM0IzQTI0MTU0NEM5
OTEwMDNFRDBGRiAvKiBERkdDRkdTaW1wbGlmaWNhdGlvblBoYXNlLmNwcCAqLywKIAkJCQkwRjNC
M0EyNTE1NDRDOTkxMDAzRUQwRkYgLyogREZHQ0ZHU2ltcGxpZmljYXRpb25QaGFzZS5oICovLAot
CQkJCTBGRkZDOTREMTRFRjkwOTUwMEM3MjUzMiAvKiBERkdDU0VQaGFzZS5jcHAgKi8sCi0JCQkJ
MEZGRkM5NEUxNEVGOTA5NTAwQzcyNTMyIC8qIERGR0NTRVBoYXNlLmggKi8sCi0JCQkJMEZEODJF
MUUxNDE3MkMyRjAwMTc5Qzk0IC8qIERGR0NhcGFiaWxpdGllcy5jcHAgKi8sCi0JCQkJMEZEODJF
MUYxNDE3MkMyRjAwMTc5Qzk0IC8qIERGR0NhcGFiaWxpdGllcy5oICovLAogCQkJCTBGQzA5NzdF
MTQ2OUVCQzQwMENGMjQ0MiAvKiBERkdDb21tb24uaCAqLywKIAkJCQkwRjNCM0ExNzE1M0U2OEVG
MDAzRUQwRkYgLyogREZHQ29uc3RhbnRGb2xkaW5nUGhhc2UuY3BwICovLAogCQkJCTBGM0IzQTE4
MTUzRTY4RUYwMDNFRDBGRiAvKiBERkdDb25zdGFudEZvbGRpbmdQaGFzZS5oICovLAogCQkJCTBG
QzA5NzlEMTQ2QjI3MUUwMENGMjQ0MiAvKiBERkdDb3JyZWN0YWJsZUp1bXBQb2ludC5jcHAgKi8s
CiAJCQkJMEZDMDk3OUExNDZBNzcyMDAwQ0YyNDQyIC8qIERGR0NvcnJlY3RhYmxlSnVtcFBvaW50
LmggKi8sCisJCQkJMEZGRkM5NEQxNEVGOTA5NTAwQzcyNTMyIC8qIERGR0NTRVBoYXNlLmNwcCAq
LywKKwkJCQkwRkZGQzk0RTE0RUY5MDk1MDBDNzI1MzIgLyogREZHQ1NFUGhhc2UuaCAqLywKIAkJ
CQkwRkY0Mjc2MTE1OTFBMUM5MDA0Q0I5RkYgLyogREZHRGlzYXNzZW1ibGVyLmNwcCAqLywKIAkJ
CQkwRkY0Mjc2MjE1OTFBMUM5MDA0Q0I5RkYgLyogREZHRGlzYXNzZW1ibGVyLmggKi8sCiAJCQkJ
MEZEODFBQ0YxNTRGQjRFQjAwOTgzRTcyIC8qIERGR0RvbWluYXRvcnMuY3BwICovLApAQCAtMjM2
Niw5ICsyMzY5LDEwIEBACiAJCQkJMEYxRTNBNDQxNTM0Q0JBRDAwMEY5NDU2IC8qIERGR0RvdWJs
ZUZvcm1hdFN0YXRlLmggKi8sCiAJCQkJMEZEM0M4MjAxNDExNUNGODAwRkQ4MUNCIC8qIERGR0Ry
aXZlci5jcHAgKi8sCiAJCQkJMEZEM0M4MjIxNDExNUQwRTAwRkQ4MUNCIC8qIERGR0RyaXZlci5o
ICovLAotCQkJCTg2QUU2QzRCMTM2QTExRTQwMDk2MzAxMiAvKiBERkdGUFJJbmZvLmggKi8sCisJ
CQkJMEY2NkUxNjkxNERGM0YxMzAwQjdCMkU0IC8qIERGR0VkZ2UuaCAqLywKIAkJCQkwRjJCREMx
MjE1MUM1RDRBMDBDRDg5MTAgLyogREZHRml4dXBQaGFzZS5jcHAgKi8sCiAJCQkJMEYyQkRDMTMx
NTFDNUQ0QTAwQ0Q4OTEwIC8qIERGR0ZpeHVwUGhhc2UuaCAqLywKKwkJCQk4NkFFNkM0QjEzNkEx
MUU0MDA5NjMwMTIgLyogREZHRlBSSW5mby5oICovLAogCQkJCTg2RUM5REI2MTMyOERGODIwMDJC
MkFENyAvKiBERkdHZW5lcmF0aW9uSW5mby5oICovLAogCQkJCTg2QUU2QzRDMTM2QTExRTQwMDk2
MzAxMiAvKiBERkdHUFJJbmZvLmggKi8sCiAJCQkJODZFQzlEQjcxMzI4REY4MjAwMkIyQUQ3IC8q
IERGR0dyYXBoLmNwcCAqLywKQEAgLTIzODMsNyArMjM4Nyw2IEBACiAJCQkJMEZBNTgxQjcxNTBF
OTUyQTAwQjlBMkQ5IC8qIERGR05vZGVGbGFncy5jcHAgKi8sCiAJCQkJMEZBNTgxQjgxNTBFOTUy
QTAwQjlBMkQ5IC8qIERGR05vZGVGbGFncy5oICovLAogCQkJCTBGQTU4MUI5MTUwRTk1MkEwMEI5
QTJEOSAvKiBERkdOb2RlVHlwZS5oICovLAotCQkJCTBGNjZFMTY5MTRERjNGMTMwMEI3QjJFNCAv
KiBERkdFZGdlLmggKi8sCiAJCQkJODZFQzlEQkYxMzI4REY4MjAwMkIyQUQ3IC8qIERGR09wZXJh
dGlvbnMuY3BwICovLAogCQkJCTg2RUM5REMwMTMyOERGODIwMDJCMkFENyAvKiBERkdPcGVyYXRp
b25zLmggKi8sCiAJCQkJMEZEODJFNTIxNDFEQUVERTAwMTc5Qzk0IC8qIERGR09TUkVudHJ5LmNw
cCAqLywKQEAgLTI0MTUsMTEgKzI0MTgsMTEgQEAKIAkJCQkwRjYzOTQzRDE1Qzc1RjE0MDA2QTU5
N0MgLyogREZHU3RydWN0dXJlQ2hlY2tIb2lzdGluZ1BoYXNlLmggKi8sCiAJCQkJMEZDMDk3OUYx
NDZCMjhDNzAwQ0YyNDQyIC8qIERGR1RodW5rcy5jcHAgKi8sCiAJCQkJMEZDMDk3QTAxNDZCMjhD
NzAwQ0YyNDQyIC8qIERGR1RodW5rcy5oICovLAorCQkJCTBGM0IzQTI5MTU0NzRGRjQwMDNFRDBG
RiAvKiBERkdWYWxpZGF0ZS5jcHAgKi8sCisJCQkJMEYzQjNBMkExNTQ3NEZGNDAwM0VEMEZGIC8q
IERGR1ZhbGlkYXRlLmggKi8sCiAJCQkJMEYyQkRDM0YxNTIyODAxNzAwQ0Q4OTEwIC8qIERGR1Zh
bHVlUmVjb3ZlcnlPdmVycmlkZS5oICovLAogCQkJCTBGMkJEQzRFMTUyMjhCRTcwMENEODkxMCAv
KiBERkdWYWx1ZVNvdXJjZS5jcHAgKi8sCiAJCQkJMEYyQkRDNDAxNTIyODAxNzAwQ0Q4OTEwIC8q
IERGR1ZhbHVlU291cmNlLmggKi8sCi0JCQkJMEYzQjNBMjkxNTQ3NEZGNDAwM0VEMEZGIC8qIERG
R1ZhbGlkYXRlLmNwcCAqLywKLQkJCQkwRjNCM0EyQTE1NDc0RkY0MDAzRUQwRkYgLyogREZHVmFs
aWRhdGUuaCAqLywKIAkJCQkwRjYyMDE3MjE0M0ZDRDJGMDA2OEI3N0MgLyogREZHVmFyaWFibGVB
Y2Nlc3NEYXRhLmggKi8sCiAJCQkJMEYyQkRDNTAxNTIyOEZGQTAwQ0Q4OTEwIC8qIERGR1Zhcmlh
YmxlRXZlbnQuY3BwICovLAogCQkJCTBGMkJEQzQxMTUyMjgwMTcwMENEODkxMCAvKiBERkdWYXJp
YWJsZUV2ZW50LmggKi8sCkBAIC0yOTgyLDYgKzI5ODUsNyBAQAogCQkJCTg2MjU1M0QyMTYxMzZF
MUEwMDlGMTdEMCAvKiBKU1Byb3h5LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjU1NDFCMjE2MTND
MUZCMDBDRTNFMjUgLyogU3BlY2lhbFBvaW50ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGRUIz
RUNEMTYyMzdGNEQwMEFCNjdBRCAvKiBUeXBlZEFycmF5RGVzY3JpcHRvci5oIGluIEhlYWRlcnMg
Ki8sCisJCQkJMEYyNTZDMzYxNjI3QjBBRDAwN0YyNzgzIC8qIERGR0NhbGxBcnJheUFsbG9jYXRv
clNsb3dQYXRoR2VuZXJhdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9y
RGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXIuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyLmgJKHJldmlzaW9uIDEzMTIx
MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXIuaAko
d29ya2luZyBjb3B5KQpAQCAtNTAwLDYgKzUwMCwxMSBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVy
biBicmFuY2gzMihjb25kLCBsZWZ0LCBUcnVzdGVkSW1tMzIocmlnaHQpKTsKICAgICB9CiAKKyAg
ICBKdW1wIGJyYW5jaFN1YlB0cihSZXN1bHRDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBzcmMs
IFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAgIHJldHVybiBicmFuY2hTdWIzMihjb25k
LCBzcmMsIGRlc3QpOworICAgIH0KKwogICAgIEp1bXAgYnJhbmNoVGVzdFB0cihSZXN1bHRDb25k
aXRpb24gY29uZCwgUmVnaXN0ZXJJRCByZWcsIFJlZ2lzdGVySUQgbWFzaykKICAgICB7CiAgICAg
ICAgIHJldHVybiBicmFuY2hUZXN0MzIoY29uZCwgcmVnLCBtYXNrKTsKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZfNjQuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2XzY0
LmgJKHJldmlzaW9uIDEzMTIxMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIv
TWFjcm9Bc3NlbWJsZXJYODZfNjQuaAkod29ya2luZyBjb3B5KQpAQCAtNTI2LDYgKzUyNiwxMiBA
QCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBKdW1wKG1fYXNzZW1ibGVyLmpDQyh4ODZDb25kaXRp
b24oY29uZCkpKTsKICAgICB9CiAKKyAgICBKdW1wIGJyYW5jaFN1YlB0cihSZXN1bHRDb25kaXRp
b24gY29uZCwgUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAg
IHN1YlB0cihzcmMsIGRlc3QpOworICAgICAgICByZXR1cm4gSnVtcChtX2Fzc2VtYmxlci5qQ0Mo
eDg2Q29uZGl0aW9uKGNvbmQpKSk7CisgICAgfQorCiAgICAgSnVtcCBicmFuY2hTdWJQdHIoUmVz
dWx0Q29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgc3JjMSwgVHJ1c3RlZEltbTMyIHNyYzIsIFJl
Z2lzdGVySUQgZGVzdCkKICAgICB7CiAgICAgICAgIG1vdmUoc3JjMSwgZGVzdCk7CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0U3RhdGUuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RTdGF0ZS5jcHAJKHJldmlz
aW9uIDEzMTIxMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RTdGF0
ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTExMzQsNyArMTEzNCw3IEBAIGJvb2wgQWJzdHJhY3RT
dGF0ZTo6ZXhlY3V0ZSh1bnNpZ25lZCBpbmQKICAgICBjYXNlIE5ld0FycmF5V2l0aFNpemU6CiAg
ICAgICAgIG5vZGUuc2V0Q2FuRXhpdCh0cnVlKTsKICAgICAgICAgZm9yTm9kZShub2RlLmNoaWxk
MSgpKS5maWx0ZXIoU3BlY0ludDMyKTsKLSAgICAgICAgZm9yTm9kZShub2RlSW5kZXgpLnNldCht
X2dyYXBoLmdsb2JhbE9iamVjdEZvcihub2RlLmNvZGVPcmlnaW4pLT5hcnJheVN0cnVjdHVyZSgp
KTsKKyAgICAgICAgZm9yTm9kZShub2RlSW5kZXgpLnNldChTcGVjQXJyYXkpOwogICAgICAgICBt
X2hhdmVTdHJ1Y3R1cmVzID0gdHJ1ZTsKICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ0NhbGxIZWxwZXJzLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDQ2FsbEhlbHBlcnMuaAkocmV2aXNp
b24gMTMxMjEwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDQ2FsbEhlbHBlcnMu
aAkod29ya2luZyBjb3B5KQpAQCAtMTg0LDYgKzE4NCwxNCBAQCBwdWJsaWM6CiAgICAgICAgIGFk
ZENhbGxBcmd1bWVudChhcmcyKTsKICAgICB9CiAKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0
dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKFRydXN0ZWRJbW1QdHIgYXJnMSwgVHJ1c3RlZEltbTMy
IGFyZzIpCisgICAgeworICAgICAgICByZXNldENhbGxBcmd1bWVudHMoKTsKKyAgICAgICAgYWRk
Q2FsbEFyZ3VtZW50KEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyKTsKKyAgICAgICAgYWRkQ2Fs
bEFyZ3VtZW50KGFyZzEpOworICAgICAgICBhZGRDYWxsQXJndW1lbnQoYXJnMik7CisgICAgfQor
CiAgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShHUFJS
ZWcgYXJnMSwgR1BSUmVnIGFyZzIsIEdQUlJlZyBhcmczKQogICAgIHsKICAgICAgICAgcmVzZXRD
YWxsQXJndW1lbnRzKCk7CkBAIC01OTMsNiArNjAxLDEzIEBAIHB1YmxpYzoKICAgICAgICAgbW92
ZShHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKICAg
ICB9CiAKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRl
KFRydXN0ZWRJbW1QdHIgYXJnMSwgVHJ1c3RlZEltbTMyIGFyZzIpCisgICAgeworICAgICAgICBt
b3ZlKGFyZzEsIEdQUkluZm86OmFyZ3VtZW50R1BSMSk7CisgICAgICAgIG1vdmUoYXJnMiwgR1BS
SW5mbzo6YXJndW1lbnRHUFIyKTsKKyAgICAgICAgbW92ZShHUFJJbmZvOjpjYWxsRnJhbWVSZWdp
c3RlciwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKKyAgICB9CisKICAgICBBTFdBWVNfSU5MSU5F
IHZvaWQgc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKEdQUlJlZyBhcmcxLCBHUFJSZWcgYXJn
MiwgR1BSUmVnIGFyZzMpCiAgICAgewogICAgICAgICBzZXR1cFN0dWJBcmd1bWVudHMoYXJnMSwg
YXJnMiwgYXJnMyk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhbGxBcnJh
eUFsbG9jYXRvclNsb3dQYXRoR2VuZXJhdG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdDYWxsQXJyYXlBbGxvY2F0b3JTbG93UGF0aEdlbmVyYXRvci5oCShy
ZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYWxsQXJyYXlBbGxv
Y2F0b3JTbG93UGF0aEdlbmVyYXRvci5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDEyOCBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAq
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIERG
R0NhbGxBcnJheUFsbG9jYXRvclNsb3dQYXRoR2VuZXJhdG9yX2gKKyNkZWZpbmUgREZHQ2FsbEFy
cmF5QWxsb2NhdG9yU2xvd1BhdGhHZW5lcmF0b3JfaAorCisjaW5jbHVkZSA8d3RmL1BsYXRmb3Jt
Lmg+CisKKyNpZiBFTkFCTEUoREZHX0pJVCkKKworI2luY2x1ZGUgIkRGR0NvbW1vbi5oIgorI2lu
Y2x1ZGUgIkRGR1Nsb3dQYXRoR2VuZXJhdG9yLmgiCisjaW5jbHVkZSAiREZHU3BlY3VsYXRpdmVK
SVQuaCIKKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisKK25hbWVzcGFjZSBKU0MgeyBuYW1lc3Bh
Y2UgREZHIHsKKworY2xhc3MgQ2FsbEFycmF5QWxsb2NhdG9yU2xvd1BhdGhHZW5lcmF0b3IgOiBw
dWJsaWMgSnVtcGluZ1Nsb3dQYXRoR2VuZXJhdG9yPE1hY3JvQXNzZW1ibGVyOjpKdW1wTGlzdD4g
eworcHVibGljOgorICAgIENhbGxBcnJheUFsbG9jYXRvclNsb3dQYXRoR2VuZXJhdG9yKAorICAg
ICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcExpc3QgZnJvbSwgU3BlY3VsYXRpdmVKSVQqIGppdCwg
UF9ERkdPcGVyYXRpb25fRVN0WiBmdW5jdGlvbiwKKyAgICAgICAgR1BSUmVnIHJlc3VsdEdQUiwg
R1BSUmVnIHN0b3JhZ2VHUFIsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBzaXplX3Qgc2l6ZSkKKyAg
ICAgICAgOiBKdW1waW5nU2xvd1BhdGhHZW5lcmF0b3I8TWFjcm9Bc3NlbWJsZXI6Okp1bXBMaXN0
Pihmcm9tLCBqaXQpCisgICAgICAgICwgbV9mdW5jdGlvbihmdW5jdGlvbikKKyAgICAgICAgLCBt
X3Jlc3VsdEdQUihyZXN1bHRHUFIpCisgICAgICAgICwgbV9zdG9yYWdlR1BSKHN0b3JhZ2VHUFIp
CisgICAgICAgICwgbV9zdHJ1Y3R1cmUoc3RydWN0dXJlKQorICAgICAgICAsIG1fc2l6ZShzaXpl
KQorICAgIHsKKyAgICAgICAgQVNTRVJUKHNpemUgPCBzdGF0aWNfY2FzdDxzaXplX3Q+KHN0ZDo6
bnVtZXJpY19saW1pdHM8aW50MzJfdD46Om1heCgpKSk7CisgICAgICAgIGppdC0+c2lsZW50U3Bp
bGxBbGxSZWdpc3RlcnNJbXBsKGZhbHNlLCBtX3BsYW5zLCByZXN1bHRHUFIpOworICAgIH0KKwor
cHJvdGVjdGVkOgorICAgIHZvaWQgZ2VuZXJhdGVJbnRlcm5hbChTcGVjdWxhdGl2ZUpJVCogaml0
KQorICAgIHsKKyAgICAgICAgbGlua0Zyb20oaml0KTsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBp
ID0gMDsgaSA8IG1fcGxhbnMuc2l6ZSgpOyArK2kpCisgICAgICAgICAgICBqaXQtPnNpbGVudFNw
aWxsKG1fcGxhbnNbaV0pOworICAgICAgICBqaXQtPmNhbGxPcGVyYXRpb24obV9mdW5jdGlvbiwg
bV9yZXN1bHRHUFIsIG1fc3RydWN0dXJlLCBtX3NpemUpOworICAgICAgICBHUFJSZWcgY2FuVHJh
bXBsZSA9IFNwZWN1bGF0aXZlSklUOjpwaWNrQ2FuVHJhbXBsZShtX3Jlc3VsdEdQUik7CisgICAg
ICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX3BsYW5zLnNpemUoKTsgKytpKQorICAgICAg
ICAgICAgaml0LT5zaWxlbnRGaWxsKG1fcGxhbnNbaV0sIGNhblRyYW1wbGUpOworICAgICAgICBq
aXQtPm1faml0LmxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MobV9yZXN1bHRHUFIsIEpT
T2JqZWN0OjpidXR0ZXJmbHlPZmZzZXQoKSksIG1fc3RvcmFnZUdQUik7CisgICAgICAgIGp1bXBU
byhqaXQpOworICAgIH0KKyAgICAKK3ByaXZhdGU6CisgICAgUF9ERkdPcGVyYXRpb25fRVN0WiBt
X2Z1bmN0aW9uOworICAgIEdQUlJlZyBtX3Jlc3VsdEdQUjsKKyAgICBHUFJSZWcgbV9zdG9yYWdl
R1BSOworICAgIFN0cnVjdHVyZSogbV9zdHJ1Y3R1cmU7CisgICAgc2l6ZV90IG1fc2l6ZTsKKyAg
ICBWZWN0b3I8U2lsZW50UmVnaXN0ZXJTYXZlUGxhbiwgMj4gbV9wbGFuczsKK307CisKK2NsYXNz
IENhbGxBcnJheUFsbG9jYXRvcldpdGhWYXJpYWJsZVNpemVTbG93UGF0aEdlbmVyYXRvciA6IHB1
YmxpYyBKdW1waW5nU2xvd1BhdGhHZW5lcmF0b3I8TWFjcm9Bc3NlbWJsZXI6Okp1bXBMaXN0PiB7
CitwdWJsaWM6CisgICAgQ2FsbEFycmF5QWxsb2NhdG9yV2l0aFZhcmlhYmxlU2l6ZVNsb3dQYXRo
R2VuZXJhdG9yKAorICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcExpc3QgZnJvbSwgU3BlY3Vs
YXRpdmVKSVQqIGppdCwgUF9ERkdPcGVyYXRpb25fRVN0WiBmdW5jdGlvbiwKKyAgICAgICAgR1BS
UmVnIHJlc3VsdEdQUiwgU3RydWN0dXJlKiBjb250aWd1b3VzU3RydWN0dXJlLCBTdHJ1Y3R1cmUq
IGFycmF5U3RvcmFnZVN0cnVjdHVyZSwgR1BSUmVnIHNpemVHUFIpCisgICAgICAgIDogSnVtcGlu
Z1Nsb3dQYXRoR2VuZXJhdG9yPE1hY3JvQXNzZW1ibGVyOjpKdW1wTGlzdD4oZnJvbSwgaml0KQor
ICAgICAgICAsIG1fZnVuY3Rpb24oZnVuY3Rpb24pCisgICAgICAgICwgbV9yZXN1bHRHUFIocmVz
dWx0R1BSKQorICAgICAgICAsIG1fY29udGlndW91c1N0cnVjdHVyZShjb250aWd1b3VzU3RydWN0
dXJlKQorICAgICAgICAsIG1fYXJyYXlTdG9yYWdlU3RydWN0dXJlKGFycmF5U3RvcmFnZVN0cnVj
dHVyZSkKKyAgICAgICAgLCBtX3NpemVHUFIoc2l6ZUdQUikKKyAgICB7CisgICAgICAgIGppdC0+
c2lsZW50U3BpbGxBbGxSZWdpc3RlcnNJbXBsKGZhbHNlLCBtX3BsYW5zLCByZXN1bHRHUFIpOwor
ICAgIH0KKworcHJvdGVjdGVkOgorICAgIHZvaWQgZ2VuZXJhdGVJbnRlcm5hbChTcGVjdWxhdGl2
ZUpJVCogaml0KQorICAgIHsKKyAgICAgICAgbGlua0Zyb20oaml0KTsKKyAgICAgICAgZm9yICh1
bnNpZ25lZCBpID0gMDsgaSA8IG1fcGxhbnMuc2l6ZSgpOyArK2kpCisgICAgICAgICAgICBqaXQt
PnNpbGVudFNwaWxsKG1fcGxhbnNbaV0pOworICAgICAgICBHUFJSZWcgc2NyYXRjaEdQUiA9IEFz
c2VtYmx5SGVscGVyczo6c2VsZWN0U2NyYXRjaEdQUihtX3NpemVHUFIpOworICAgICAgICBNYWNy
b0Fzc2VtYmxlcjo6SnVtcCBiaWdMZW5ndGggPSBqaXQtPm1faml0LmJyYW5jaDMyKE1hY3JvQXNz
ZW1ibGVyOjpBYm92ZU9yRXF1YWwsIG1fc2l6ZUdQUiwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJ
bW0zMihNSU5fU1BBUlNFX0FSUkFZX0lOREVYKSk7CisgICAgICAgIGppdC0+bV9qaXQubW92ZShN
YWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihtX2NvbnRpZ3VvdXNTdHJ1Y3R1cmUpLCBzY3Jh
dGNoR1BSKTsKKyAgICAgICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXAgZG9uZSA9IGppdC0+bV9qaXQu
anVtcCgpOworICAgICAgICBiaWdMZW5ndGgubGluaygmaml0LT5tX2ppdCk7CisgICAgICAgIGpp
dC0+bV9qaXQubW92ZShNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihtX2FycmF5U3RvcmFn
ZVN0cnVjdHVyZSksIHNjcmF0Y2hHUFIpOworICAgICAgICBkb25lLmxpbmsoJmppdC0+bV9qaXQp
OworICAgICAgICBqaXQtPmNhbGxPcGVyYXRpb24obV9mdW5jdGlvbiwgbV9yZXN1bHRHUFIsIHNj
cmF0Y2hHUFIsIG1fc2l6ZUdQUik7CisgICAgICAgIEdQUlJlZyBjYW5UcmFtcGxlID0gU3BlY3Vs
YXRpdmVKSVQ6OnBpY2tDYW5UcmFtcGxlKG1fcmVzdWx0R1BSKTsKKyAgICAgICAgZm9yICh1bnNp
Z25lZCBpID0gMDsgaSA8IG1fcGxhbnMuc2l6ZSgpOyArK2kpCisgICAgICAgICAgICBqaXQtPnNp
bGVudEZpbGwobV9wbGFuc1tpXSwgY2FuVHJhbXBsZSk7CisgICAgICAgIGp1bXBUbyhqaXQpOwor
ICAgIH0KKyAgICAKK3ByaXZhdGU6CisgICAgUF9ERkdPcGVyYXRpb25fRVN0WiBtX2Z1bmN0aW9u
OworICAgIEdQUlJlZyBtX3Jlc3VsdEdQUjsKKyAgICBTdHJ1Y3R1cmUqIG1fY29udGlndW91c1N0
cnVjdHVyZTsKKyAgICBTdHJ1Y3R1cmUqIG1fYXJyYXlTdG9yYWdlU3RydWN0dXJlOworICAgIEdQ
UlJlZyBtX3NpemVHUFI7CisgICAgVmVjdG9yPFNpbGVudFJlZ2lzdGVyU2F2ZVBsYW4sIDI+IG1f
cGxhbnM7Cit9OworCit9IH0gLy8gbmFtZXNwYWNlIEpTQzo6REZHCisKKyNlbmRpZiAvLyBFTkFC
TEUoREZHX0pJVCkKKworI2VuZGlmIC8vIERGR0NhbGxBcnJheUFsbG9jYXRvclNsb3dQYXRoR2Vu
ZXJhdG9yX2gKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2
ZUpJVDMyXzY0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCShyZXZpc2lvbiAxMzEyMTApCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0yOSw2ICsyOSw3IEBACiAKICNpZiBFTkFCTEUoREZHX0pJVCkKIAorI2luY2x1ZGUgIkRG
R0NhbGxBcnJheUFsbG9jYXRvclNsb3dQYXRoR2VuZXJhdG9yLmgiCiAjaW5jbHVkZSAiREZHU2xv
d1BhdGhHZW5lcmF0b3IuaCIKICNpbmNsdWRlICJKU0FjdGl2YXRpb24uaCIKIApAQCAtMzUxMCw4
ICszNTExLDQyIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSYgbm9kZSkKIAog
ICAgIGNhc2UgTmV3QXJyYXk6IHsKICAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCA9IG1faml0LmdyYXBoKCkuZ2xvYmFsT2JqZWN0Rm9yKG5vZGUuY29kZU9yaWdpbik7Ci0gICAg
ICAgIGlmICghZ2xvYmFsT2JqZWN0LT5pc0hhdmluZ0FCYWRUaW1lKCkpCisgICAgICAgIGlmICgh
Z2xvYmFsT2JqZWN0LT5pc0hhdmluZ0FCYWRUaW1lKCkpIHsKICAgICAgICAgICAgIGdsb2JhbE9i
amVjdC0+aGF2aW5nQUJhZFRpbWVXYXRjaHBvaW50KCktPmFkZChzcGVjdWxhdGlvbldhdGNocG9p
bnQoKSk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIEFTU0VSVChoYXNDb250aWd1b3VzKGds
b2JhbE9iamVjdC0+YXJyYXlTdHJ1Y3R1cmUoKS0+aW5kZXhpbmdUeXBlKCkpKTsKKyAgICAgICAg
ICAgIAorICAgICAgICAgICAgdW5zaWduZWQgbnVtRWxlbWVudHMgPSBub2RlLm51bUNoaWxkcmVu
KCk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIEdQUlRlbXBvcmFyeSByZXN1bHQodGhpcyk7
CisgICAgICAgICAgICBHUFJUZW1wb3Jhcnkgc3RvcmFnZSh0aGlzKTsKKyAgICAgICAgICAgIAor
ICAgICAgICAgICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJlc3VsdC5ncHIoKTsKKyAgICAgICAgICAg
IEdQUlJlZyBzdG9yYWdlR1BSID0gc3RvcmFnZS5ncHIoKTsKKworICAgICAgICAgICAgZW1pdEFs
bG9jYXRlSlNBcnJheShnbG9iYWxPYmplY3QtPmFycmF5U3RydWN0dXJlKCksIHJlc3VsdEdQUiwg
c3RvcmFnZUdQUiwgbnVtRWxlbWVudHMpOworICAgICAgICAgICAgCisgICAgICAgICAgICAvLyBB
dCB0aGlzIHBvaW50LCBvbmUgd2F5IG9yIGFub3RoZXIsIHJlc3VsdEdQUiBhbmQgc3RvcmFnZUdQ
UiBoYXZlIHBvaW50ZXJzIHRvCisgICAgICAgICAgICAvLyB0aGUgSlNBcnJheSBhbmQgdGhlIEJ1
dHRlcmZseSwgcmVzcGVjdGl2ZWx5LgorICAgICAgICAgICAgCisgICAgICAgICAgICBmb3IgKHVu
c2lnbmVkIG9wZXJhbmRJZHggPSAwOyBvcGVyYW5kSWR4IDwgbm9kZS5udW1DaGlsZHJlbigpOyAr
K29wZXJhbmRJZHgpIHsKKyAgICAgICAgICAgICAgICBKU1ZhbHVlT3BlcmFuZCBvcGVyYW5kKHRo
aXMsIG1faml0LmdyYXBoKCkubV92YXJBcmdDaGlsZHJlbltub2RlLmZpcnN0Q2hpbGQoKSArIG9w
ZXJhbmRJZHhdKTsKKyAgICAgICAgICAgICAgICBHUFJSZWcgb3BUYWdHUFIgPSBvcGVyYW5kLnRh
Z0dQUigpOworICAgICAgICAgICAgICAgIEdQUlJlZyBvcFBheWxvYWRHUFIgPSBvcGVyYW5kLnBh
eWxvYWRHUFIoKTsKKyAgICAgICAgICAgICAgICBtX2ppdC5zdG9yZTMyKG9wVGFnR1BSLCBNYWNy
b0Fzc2VtYmxlcjo6QWRkcmVzcyhzdG9yYWdlR1BSLCBzaXplb2YoSlNWYWx1ZSkgKiBvcGVyYW5k
SWR4ICsgT0JKRUNUX09GRlNFVE9GKEpTVmFsdWUsIHUuYXNCaXRzLnRhZykpKTsKKyAgICAgICAg
ICAgICAgICBtX2ppdC5zdG9yZTMyKG9wUGF5bG9hZEdQUiwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJl
c3Moc3RvcmFnZUdQUiwgc2l6ZW9mKEpTVmFsdWUpICogb3BlcmFuZElkeCArIE9CSkVDVF9PRkZT
RVRPRihKU1ZhbHVlLCB1LmFzQml0cy5wYXlsb2FkKSkpOworICAgICAgICAgICAgfQorICAgICAg
ICAgICAgCisgICAgICAgICAgICAvLyBZdWNrLCB3ZSBzaG91bGQgKnJlYWxseSogaGF2ZSBhIHdh
eSBvZiBhbHNvIHJldHVybmluZyB0aGUgc3RvcmFnZUdQUi4gQnV0CisgICAgICAgICAgICAvLyB0
aGF0J3MgdGhlIGxlYXN0IG9mIHdoYXQncyB3cm9uZyB3aXRoIHRoaXMgY29kZS4gV2UgcmVhbGx5
IHNob3VsZG4ndCBiZQorICAgICAgICAgICAgLy8gYWxsb2NhdGluZyB0aGUgYXJyYXkgYWZ0ZXIg
aGF2aW5nIGNvbXB1dGVkIC0gYW5kIHByb2JhYmx5IHNwaWxsZWQgdG8gdGhlCisgICAgICAgICAg
ICAvLyBzdGFjayAtIGFsbCBvZiB0aGUgdGhpbmdzIHRoYXQgd2lsbCBnbyBpbnRvIHRoZSBhcnJh
eS4gVGhlIHNvbHV0aW9uIHRvIHRoYXQKKyAgICAgICAgICAgIC8vIGJpZ2dlciBwcm9ibGVtIHdp
bGwgYWxzbyBsaWtlbHkgZml4IHRoZSByZWR1bmRhbmN5IGluIHJlbG9hZGluZyB0aGUgc3RvcmFn
ZQorICAgICAgICAgICAgLy8gcG9pbnRlciB0aGF0IHdlIGN1cnJlbnRseSBoYXZlLgorICAgICAg
ICAgICAgCisgICAgICAgICAgICBjZWxsUmVzdWx0KHJlc3VsdEdQUiwgbV9jb21waWxlSW5kZXgp
OworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIGlmICgh
bm9kZS5udW1DaGlsZHJlbigpKSB7CiAgICAgICAgICAgICBmbHVzaFJlZ2lzdGVycygpOwpAQCAt
MzU2NSw4ICszNjAwLDQ2IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSYgbm9k
ZSkKIAogICAgIGNhc2UgTmV3QXJyYXlXaXRoU2l6ZTogewogICAgICAgICBKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0ID0gbV9qaXQuZ3JhcGgoKS5nbG9iYWxPYmplY3RGb3Iobm9kZS5jb2Rl
T3JpZ2luKTsKLSAgICAgICAgaWYgKCFnbG9iYWxPYmplY3QtPmlzSGF2aW5nQUJhZFRpbWUoKSkK
KyAgICAgICAgaWYgKCFnbG9iYWxPYmplY3QtPmlzSGF2aW5nQUJhZFRpbWUoKSkgewogICAgICAg
ICAgICAgZ2xvYmFsT2JqZWN0LT5oYXZpbmdBQmFkVGltZVdhdGNocG9pbnQoKS0+YWRkKHNwZWN1
bGF0aW9uV2F0Y2hwb2ludCgpKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgU3BlY3VsYXRl
U3RyaWN0SW50MzJPcGVyYW5kIHNpemUodGhpcywgbm9kZS5jaGlsZDEoKSk7CisgICAgICAgICAg
ICBHUFJUZW1wb3JhcnkgcmVzdWx0KHRoaXMpOworICAgICAgICAgICAgR1BSVGVtcG9yYXJ5IHN0
b3JhZ2UodGhpcyk7CisgICAgICAgICAgICBHUFJUZW1wb3Jhcnkgc2NyYXRjaCh0aGlzKTsKKyAg
ICAgICAgICAgIAorICAgICAgICAgICAgR1BSUmVnIHNpemVHUFIgPSBzaXplLmdwcigpOworICAg
ICAgICAgICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJlc3VsdC5ncHIoKTsKKyAgICAgICAgICAgIEdQ
UlJlZyBzdG9yYWdlR1BSID0gc3RvcmFnZS5ncHIoKTsKKyAgICAgICAgICAgIEdQUlJlZyBzY3Jh
dGNoR1BSID0gc2NyYXRjaC5ncHIoKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgTWFjcm9B
c3NlbWJsZXI6Okp1bXBMaXN0IHNsb3dDYXNlczsKKyAgICAgICAgICAgIHNsb3dDYXNlcy5hcHBl
bmQobV9qaXQuYnJhbmNoMzIoTWFjcm9Bc3NlbWJsZXI6OkFib3ZlT3JFcXVhbCwgc2l6ZUdQUiwg
VHJ1c3RlZEltbTMyKE1JTl9TUEFSU0VfQVJSQVlfSU5ERVgpKSk7CisgICAgICAgICAgICAKKyAg
ICAgICAgICAgIEFTU0VSVCgoMSA8PCAzKSA9PSBzaXplb2YoSlNWYWx1ZSkpOworICAgICAgICAg
ICAgbV9qaXQubW92ZShzaXplR1BSLCBzY3JhdGNoR1BSKTsKKyAgICAgICAgICAgIG1faml0Lmxz
aGlmdDMyKFRydXN0ZWRJbW0zMigzKSwgc2NyYXRjaEdQUik7CisgICAgICAgICAgICBtX2ppdC5h
ZGQzMihUcnVzdGVkSW1tMzIoc2l6ZW9mKEluZGV4aW5nSGVhZGVyKSksIHNjcmF0Y2hHUFIsIHJl
c3VsdEdQUik7CisgICAgICAgICAgICBzbG93Q2FzZXMuYXBwZW5kKAorICAgICAgICAgICAgICAg
IGVtaXRBbGxvY2F0ZUJhc2ljU3RvcmFnZShyZXN1bHRHUFIsIHN0b3JhZ2VHUFIpKTsKKyAgICAg
ICAgICAgIG1faml0LnN1YlB0cihzY3JhdGNoR1BSLCBzdG9yYWdlR1BSKTsKKyAgICAgICAgICAg
IGVtaXRBbGxvY2F0ZUJhc2ljSlNPYmplY3Q8SlNBcnJheSwgTWFya2VkQmxvY2s6Ok5vbmU+KAor
ICAgICAgICAgICAgICAgIFRydXN0ZWRJbW1QdHIoZ2xvYmFsT2JqZWN0LT5hcnJheVN0cnVjdHVy
ZSgpKSwgcmVzdWx0R1BSLCBzY3JhdGNoR1BSLAorICAgICAgICAgICAgICAgIHN0b3JhZ2VHUFIs
IHNsb3dDYXNlcyk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIG1faml0LnN0b3JlMzIoc2l6
ZUdQUiwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Moc3RvcmFnZUdQUiwgQnV0dGVyZmx5OjpvZmZz
ZXRPZlB1YmxpY0xlbmd0aCgpKSk7CisgICAgICAgICAgICBtX2ppdC5zdG9yZTMyKHNpemVHUFIs
IE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHN0b3JhZ2VHUFIsIEJ1dHRlcmZseTo6b2Zmc2V0T2ZW
ZWN0b3JMZW5ndGgoKSkpOworICAgICAgICAgICAgCisgICAgICAgICAgICBhZGRTbG93UGF0aEdl
bmVyYXRvcihhZG9wdFB0cigKKyAgICAgICAgICAgICAgICBuZXcgQ2FsbEFycmF5QWxsb2NhdG9y
V2l0aFZhcmlhYmxlU2l6ZVNsb3dQYXRoR2VuZXJhdG9yKAorICAgICAgICAgICAgICAgICAgICBz
bG93Q2FzZXMsIHRoaXMsIG9wZXJhdGlvbk5ld0FycmF5V2l0aFNpemUsIHJlc3VsdEdQUiwKKyAg
ICAgICAgICAgICAgICAgICAgZ2xvYmFsT2JqZWN0LT5hcnJheVN0cnVjdHVyZSgpLAorICAgICAg
ICAgICAgICAgICAgICBnbG9iYWxPYmplY3QtPmFycmF5U3RydWN0dXJlV2l0aEFycmF5U3RvcmFn
ZSgpLAorICAgICAgICAgICAgICAgICAgICBzaXplR1BSKSkpOworICAgICAgICAgICAgCisgICAg
ICAgICAgICBjZWxsUmVzdWx0KHJlc3VsdEdQUiwgbV9jb21waWxlSW5kZXgpOworICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIFNwZWN1bGF0ZVN0cmljdElu
dDMyT3BlcmFuZCBzaXplKHRoaXMsIG5vZGUuY2hpbGQxKCkpOwogICAgICAgICBHUFJSZWcgc2l6
ZUdQUiA9IHNpemUuZ3ByKCk7CkBAIC0zNTgwLDggKzM2NTMsMjggQEAgdm9pZCBTcGVjdWxhdGl2
ZUpJVDo6Y29tcGlsZShOb2RlJiBub2RlKQogICAgICAgICAKICAgICBjYXNlIE5ld0FycmF5QnVm
ZmVyOiB7CiAgICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBtX2ppdC5ncmFw
aCgpLmdsb2JhbE9iamVjdEZvcihub2RlLmNvZGVPcmlnaW4pOwotICAgICAgICBpZiAoIWdsb2Jh
bE9iamVjdC0+aXNIYXZpbmdBQmFkVGltZSgpKQorICAgICAgICBpZiAoIWdsb2JhbE9iamVjdC0+
aXNIYXZpbmdBQmFkVGltZSgpKSB7CiAgICAgICAgICAgICBnbG9iYWxPYmplY3QtPmhhdmluZ0FC
YWRUaW1lV2F0Y2hwb2ludCgpLT5hZGQoc3BlY3VsYXRpb25XYXRjaHBvaW50KCkpOworICAgICAg
ICAgICAgCisgICAgICAgICAgICB1bnNpZ25lZCBudW1FbGVtZW50cyA9IG5vZGUubnVtQ29uc3Rh
bnRzKCk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIEdQUlRlbXBvcmFyeSByZXN1bHQodGhp
cyk7CisgICAgICAgICAgICBHUFJUZW1wb3Jhcnkgc3RvcmFnZSh0aGlzKTsKKyAgICAgICAgICAg
IAorICAgICAgICAgICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJlc3VsdC5ncHIoKTsKKyAgICAgICAg
ICAgIEdQUlJlZyBzdG9yYWdlR1BSID0gc3RvcmFnZS5ncHIoKTsKKworICAgICAgICAgICAgZW1p
dEFsbG9jYXRlSlNBcnJheShnbG9iYWxPYmplY3QtPmFycmF5U3RydWN0dXJlKCksIHJlc3VsdEdQ
Uiwgc3RvcmFnZUdQUiwgbnVtRWxlbWVudHMpOworICAgICAgICAgICAgCisgICAgICAgICAgICBp
bnQzMl90KiBkYXRhID0gYml0d2lzZV9jYXN0PGludDMyX3QqPihtX2ppdC5jb2RlQmxvY2soKS0+
Y29uc3RhbnRCdWZmZXIobm9kZS5zdGFydENvbnN0YW50KCkpKTsKKyAgICAgICAgICAgIGZvciAo
dW5zaWduZWQgaW5kZXggPSAwOyBpbmRleCA8IG5vZGUubnVtQ29uc3RhbnRzKCkgKiAyOyArK2lu
ZGV4KSB7CisgICAgICAgICAgICAgICAgbV9qaXQuc3RvcmUzMigKKyAgICAgICAgICAgICAgICAg
ICAgSW1tMzIoZGF0YVtpbmRleF0pLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhzdG9yYWdlR1BS
LCBzaXplb2YoaW50MzJfdCkgKiBpbmRleCkpOworICAgICAgICAgICAgfQorICAgICAgICAgICAg
CisgICAgICAgICAgICBjZWxsUmVzdWx0KHJlc3VsdEdQUiwgbV9jb21waWxlSW5kZXgpOworICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIGZsdXNoUmVnaXN0
ZXJzKCk7CiAgICAgICAgIEdQUlJlc3VsdCByZXN1bHQodGhpcyk7CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAJKHJldmlzaW9u
IDEzMTIxMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2
NC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI5LDYgKzI5LDcgQEAKICNpZiBFTkFCTEUoREZHX0pJ
VCkKIAogI2luY2x1ZGUgIkFyZ3VtZW50cy5oIgorI2luY2x1ZGUgIkRGR0NhbGxBcnJheUFsbG9j
YXRvclNsb3dQYXRoR2VuZXJhdG9yLmgiCiAjaW5jbHVkZSAiREZHU2xvd1BhdGhHZW5lcmF0b3Iu
aCIKIAogbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewpAQCAtMzQ4MCw4ICszNDgxLDQw
IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSYgbm9kZSkKICAgICAgICAgCiAg
ICAgY2FzZSBOZXdBcnJheTogewogICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
ID0gbV9qaXQuZ3JhcGgoKS5nbG9iYWxPYmplY3RGb3Iobm9kZS5jb2RlT3JpZ2luKTsKLSAgICAg
ICAgaWYgKCFnbG9iYWxPYmplY3QtPmlzSGF2aW5nQUJhZFRpbWUoKSkKKyAgICAgICAgaWYgKCFn
bG9iYWxPYmplY3QtPmlzSGF2aW5nQUJhZFRpbWUoKSkgewogICAgICAgICAgICAgZ2xvYmFsT2Jq
ZWN0LT5oYXZpbmdBQmFkVGltZVdhdGNocG9pbnQoKS0+YWRkKHNwZWN1bGF0aW9uV2F0Y2hwb2lu
dCgpKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgQVNTRVJUKGhhc0NvbnRpZ3VvdXMoZ2xv
YmFsT2JqZWN0LT5hcnJheVN0cnVjdHVyZSgpLT5pbmRleGluZ1R5cGUoKSkpOworICAgICAgICAg
ICAgCisgICAgICAgICAgICB1bnNpZ25lZCBudW1FbGVtZW50cyA9IG5vZGUubnVtQ2hpbGRyZW4o
KTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgR1BSVGVtcG9yYXJ5IHJlc3VsdCh0aGlzKTsK
KyAgICAgICAgICAgIEdQUlRlbXBvcmFyeSBzdG9yYWdlKHRoaXMpOworICAgICAgICAgICAgCisg
ICAgICAgICAgICBHUFJSZWcgcmVzdWx0R1BSID0gcmVzdWx0LmdwcigpOworICAgICAgICAgICAg
R1BSUmVnIHN0b3JhZ2VHUFIgPSBzdG9yYWdlLmdwcigpOworCisgICAgICAgICAgICBlbWl0QWxs
b2NhdGVKU0FycmF5KGdsb2JhbE9iamVjdC0+YXJyYXlTdHJ1Y3R1cmUoKSwgcmVzdWx0R1BSLCBz
dG9yYWdlR1BSLCBudW1FbGVtZW50cyk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIC8vIEF0
IHRoaXMgcG9pbnQsIG9uZSB3YXkgb3IgYW5vdGhlciwgcmVzdWx0R1BSIGFuZCBzdG9yYWdlR1BS
IGhhdmUgcG9pbnRlcnMgdG8KKyAgICAgICAgICAgIC8vIHRoZSBKU0FycmF5IGFuZCB0aGUgQnV0
dGVyZmx5LCByZXNwZWN0aXZlbHkuCisgICAgICAgICAgICAKKyAgICAgICAgICAgIGZvciAodW5z
aWduZWQgb3BlcmFuZElkeCA9IDA7IG9wZXJhbmRJZHggPCBub2RlLm51bUNoaWxkcmVuKCk7ICsr
b3BlcmFuZElkeCkgeworICAgICAgICAgICAgICAgIEpTVmFsdWVPcGVyYW5kIG9wZXJhbmQodGhp
cywgbV9qaXQuZ3JhcGgoKS5tX3ZhckFyZ0NoaWxkcmVuW25vZGUuZmlyc3RDaGlsZCgpICsgb3Bl
cmFuZElkeF0pOworICAgICAgICAgICAgICAgIEdQUlJlZyBvcEdQUiA9IG9wZXJhbmQuZ3ByKCk7
CisgICAgICAgICAgICAgICAgbV9qaXQuc3RvcmVQdHIob3BHUFIsIE1hY3JvQXNzZW1ibGVyOjpB
ZGRyZXNzKHN0b3JhZ2VHUFIsIHNpemVvZihKU1ZhbHVlKSAqIG9wZXJhbmRJZHgpKTsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICAgICAgLy8gWXVjaywgd2Ugc2hvdWxkICpy
ZWFsbHkqIGhhdmUgYSB3YXkgb2YgYWxzbyByZXR1cm5pbmcgdGhlIHN0b3JhZ2VHUFIuIEJ1dAor
ICAgICAgICAgICAgLy8gdGhhdCdzIHRoZSBsZWFzdCBvZiB3aGF0J3Mgd3Jvbmcgd2l0aCB0aGlz
IGNvZGUuIFdlIHJlYWxseSBzaG91bGRuJ3QgYmUKKyAgICAgICAgICAgIC8vIGFsbG9jYXRpbmcg
dGhlIGFycmF5IGFmdGVyIGhhdmluZyBjb21wdXRlZCAtIGFuZCBwcm9iYWJseSBzcGlsbGVkIHRv
IHRoZQorICAgICAgICAgICAgLy8gc3RhY2sgLSBhbGwgb2YgdGhlIHRoaW5ncyB0aGF0IHdpbGwg
Z28gaW50byB0aGUgYXJyYXkuIFRoZSBzb2x1dGlvbiB0byB0aGF0CisgICAgICAgICAgICAvLyBi
aWdnZXIgcHJvYmxlbSB3aWxsIGFsc28gbGlrZWx5IGZpeCB0aGUgcmVkdW5kYW5jeSBpbiByZWxv
YWRpbmcgdGhlIHN0b3JhZ2UKKyAgICAgICAgICAgIC8vIHBvaW50ZXIgdGhhdCB3ZSBjdXJyZW50
bHkgaGF2ZS4KKyAgICAgICAgICAgIAorICAgICAgICAgICAgY2VsbFJlc3VsdChyZXN1bHRHUFIs
IG1fY29tcGlsZUluZGV4KTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CiAgICAgICAg
IAogICAgICAgICBpZiAoIW5vZGUubnVtQ2hpbGRyZW4oKSkgewogICAgICAgICAgICAgZmx1c2hS
ZWdpc3RlcnMoKTsKQEAgLTM1MzIsOCArMzU2NSw0NiBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpj
b21waWxlKE5vZGUmIG5vZGUpCiAgICAgICAgIAogICAgIGNhc2UgTmV3QXJyYXlXaXRoU2l6ZTog
ewogICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gbV9qaXQuZ3JhcGgoKS5n
bG9iYWxPYmplY3RGb3Iobm9kZS5jb2RlT3JpZ2luKTsKLSAgICAgICAgaWYgKCFnbG9iYWxPYmpl
Y3QtPmlzSGF2aW5nQUJhZFRpbWUoKSkKKyAgICAgICAgaWYgKCFnbG9iYWxPYmplY3QtPmlzSGF2
aW5nQUJhZFRpbWUoKSkgewogICAgICAgICAgICAgZ2xvYmFsT2JqZWN0LT5oYXZpbmdBQmFkVGlt
ZVdhdGNocG9pbnQoKS0+YWRkKHNwZWN1bGF0aW9uV2F0Y2hwb2ludCgpKTsKKyAgICAgICAgICAg
IAorICAgICAgICAgICAgU3BlY3VsYXRlU3RyaWN0SW50MzJPcGVyYW5kIHNpemUodGhpcywgbm9k
ZS5jaGlsZDEoKSk7CisgICAgICAgICAgICBHUFJUZW1wb3JhcnkgcmVzdWx0KHRoaXMpOworICAg
ICAgICAgICAgR1BSVGVtcG9yYXJ5IHN0b3JhZ2UodGhpcyk7CisgICAgICAgICAgICBHUFJUZW1w
b3Jhcnkgc2NyYXRjaCh0aGlzKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgR1BSUmVnIHNp
emVHUFIgPSBzaXplLmdwcigpOworICAgICAgICAgICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJlc3Vs
dC5ncHIoKTsKKyAgICAgICAgICAgIEdQUlJlZyBzdG9yYWdlR1BSID0gc3RvcmFnZS5ncHIoKTsK
KyAgICAgICAgICAgIEdQUlJlZyBzY3JhdGNoR1BSID0gc2NyYXRjaC5ncHIoKTsKKyAgICAgICAg
ICAgIAorICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXBMaXN0IHNsb3dDYXNlczsKKyAg
ICAgICAgICAgIHNsb3dDYXNlcy5hcHBlbmQobV9qaXQuYnJhbmNoMzIoTWFjcm9Bc3NlbWJsZXI6
OkFib3ZlT3JFcXVhbCwgc2l6ZUdQUiwgVHJ1c3RlZEltbTMyKE1JTl9TUEFSU0VfQVJSQVlfSU5E
RVgpKSk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIEFTU0VSVCgoMSA8PCAzKSA9PSBzaXpl
b2YoSlNWYWx1ZSkpOworICAgICAgICAgICAgbV9qaXQubW92ZShzaXplR1BSLCBzY3JhdGNoR1BS
KTsKKyAgICAgICAgICAgIG1faml0LmxzaGlmdDMyKFRydXN0ZWRJbW0zMigzKSwgc2NyYXRjaEdQ
Uik7CisgICAgICAgICAgICBtX2ppdC5hZGQzMihUcnVzdGVkSW1tMzIoc2l6ZW9mKEluZGV4aW5n
SGVhZGVyKSksIHNjcmF0Y2hHUFIsIHJlc3VsdEdQUik7CisgICAgICAgICAgICBzbG93Q2FzZXMu
YXBwZW5kKAorICAgICAgICAgICAgICAgIGVtaXRBbGxvY2F0ZUJhc2ljU3RvcmFnZShyZXN1bHRH
UFIsIHN0b3JhZ2VHUFIpKTsKKyAgICAgICAgICAgIG1faml0LnN1YlB0cihzY3JhdGNoR1BSLCBz
dG9yYWdlR1BSKTsKKyAgICAgICAgICAgIGVtaXRBbGxvY2F0ZUJhc2ljSlNPYmplY3Q8SlNBcnJh
eSwgTWFya2VkQmxvY2s6Ok5vbmU+KAorICAgICAgICAgICAgICAgIFRydXN0ZWRJbW1QdHIoZ2xv
YmFsT2JqZWN0LT5hcnJheVN0cnVjdHVyZSgpKSwgcmVzdWx0R1BSLCBzY3JhdGNoR1BSLAorICAg
ICAgICAgICAgICAgIHN0b3JhZ2VHUFIsIHNsb3dDYXNlcyk7CisgICAgICAgICAgICAKKyAgICAg
ICAgICAgIG1faml0LnN0b3JlMzIoc2l6ZUdQUiwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Moc3Rv
cmFnZUdQUiwgQnV0dGVyZmx5OjpvZmZzZXRPZlB1YmxpY0xlbmd0aCgpKSk7CisgICAgICAgICAg
ICBtX2ppdC5zdG9yZTMyKHNpemVHUFIsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHN0b3JhZ2VH
UFIsIEJ1dHRlcmZseTo6b2Zmc2V0T2ZWZWN0b3JMZW5ndGgoKSkpOworICAgICAgICAgICAgCisg
ICAgICAgICAgICBhZGRTbG93UGF0aEdlbmVyYXRvcihhZG9wdFB0cigKKyAgICAgICAgICAgICAg
ICBuZXcgQ2FsbEFycmF5QWxsb2NhdG9yV2l0aFZhcmlhYmxlU2l6ZVNsb3dQYXRoR2VuZXJhdG9y
KAorICAgICAgICAgICAgICAgICAgICBzbG93Q2FzZXMsIHRoaXMsIG9wZXJhdGlvbk5ld0FycmF5
V2l0aFNpemUsIHJlc3VsdEdQUiwKKyAgICAgICAgICAgICAgICAgICAgZ2xvYmFsT2JqZWN0LT5h
cnJheVN0cnVjdHVyZSgpLAorICAgICAgICAgICAgICAgICAgICBnbG9iYWxPYmplY3QtPmFycmF5
U3RydWN0dXJlV2l0aEFycmF5U3RvcmFnZSgpLAorICAgICAgICAgICAgICAgICAgICBzaXplR1BS
KSkpOworICAgICAgICAgICAgCisgICAgICAgICAgICBjZWxsUmVzdWx0KHJlc3VsdEdQUiwgbV9j
b21waWxlSW5kZXgpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KICAgICAgICAgCiAg
ICAgICAgIFNwZWN1bGF0ZVN0cmljdEludDMyT3BlcmFuZCBzaXplKHRoaXMsIG5vZGUuY2hpbGQx
KCkpOwogICAgICAgICBHUFJSZWcgc2l6ZUdQUiA9IHNpemUuZ3ByKCk7CkBAIC0zNTkyLDggKzM2
NjMsMjkgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlJiBub2RlKQogICAgICAg
ICAKICAgICBjYXNlIE5ld0FycmF5QnVmZmVyOiB7CiAgICAgICAgIEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QgPSBtX2ppdC5ncmFwaCgpLmdsb2JhbE9iamVjdEZvcihub2RlLmNvZGVPcmln
aW4pOwotICAgICAgICBpZiAoIWdsb2JhbE9iamVjdC0+aXNIYXZpbmdBQmFkVGltZSgpKQorICAg
ICAgICBpZiAoIWdsb2JhbE9iamVjdC0+aXNIYXZpbmdBQmFkVGltZSgpKSB7CiAgICAgICAgICAg
ICBnbG9iYWxPYmplY3QtPmhhdmluZ0FCYWRUaW1lV2F0Y2hwb2ludCgpLT5hZGQoc3BlY3VsYXRp
b25XYXRjaHBvaW50KCkpOworICAgICAgICAgICAgCisgICAgICAgICAgICB1bnNpZ25lZCBudW1F
bGVtZW50cyA9IG5vZGUubnVtQ29uc3RhbnRzKCk7CisgICAgICAgICAgICAKKyAgICAgICAgICAg
IEdQUlRlbXBvcmFyeSByZXN1bHQodGhpcyk7CisgICAgICAgICAgICBHUFJUZW1wb3Jhcnkgc3Rv
cmFnZSh0aGlzKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgR1BSUmVnIHJlc3VsdEdQUiA9
IHJlc3VsdC5ncHIoKTsKKyAgICAgICAgICAgIEdQUlJlZyBzdG9yYWdlR1BSID0gc3RvcmFnZS5n
cHIoKTsKKworICAgICAgICAgICAgZW1pdEFsbG9jYXRlSlNBcnJheShnbG9iYWxPYmplY3QtPmFy
cmF5U3RydWN0dXJlKCksIHJlc3VsdEdQUiwgc3RvcmFnZUdQUiwgbnVtRWxlbWVudHMpOworICAg
ICAgICAgICAgCisgICAgICAgICAgICBKU1ZhbHVlKiBkYXRhID0gbV9qaXQuY29kZUJsb2NrKCkt
PmNvbnN0YW50QnVmZmVyKG5vZGUuc3RhcnRDb25zdGFudCgpKTsKKyAgICAgICAgICAgIGZvciAo
dW5zaWduZWQgaW5kZXggPSAwOyBpbmRleCA8IG5vZGUubnVtQ29uc3RhbnRzKCk7ICsraW5kZXgp
IHsKKyAgICAgICAgICAgICAgICBtX2ppdC5zdG9yZVB0cigKKyAgICAgICAgICAgICAgICAgICAg
SW1tUHRyKGJpdHdpc2VfY2FzdDx2b2lkKj4oSlNWYWx1ZTo6ZW5jb2RlKGRhdGFbaW5kZXhdKSkp
LAorICAgICAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhzdG9yYWdlR1BS
LCBzaXplb2YoSlNWYWx1ZSkgKiBpbmRleCkpOworICAgICAgICAgICAgfQorICAgICAgICAgICAg
CisgICAgICAgICAgICBjZWxsUmVzdWx0KHJlc3VsdEdQUiwgbV9jb21waWxlSW5kZXgpOworICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIGZsdXNoUmVnaXN0
ZXJzKCk7CiAgICAgICAgIEdQUlJlc3VsdCByZXN1bHQodGhpcyk7CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAkocmV2aXNpb24gMTMx
MjEwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTI5LDYgKzI5LDcgQEAKICNpZiBFTkFCTEUoREZHX0pJVCkKIAog
I2luY2x1ZGUgIkFyZ3VtZW50cy5oIgorI2luY2x1ZGUgIkRGR0NhbGxBcnJheUFsbG9jYXRvclNs
b3dQYXRoR2VuZXJhdG9yLmgiCiAjaW5jbHVkZSAiREZHU2xvd1BhdGhHZW5lcmF0b3IuaCIKICNp
bmNsdWRlICJMaW5rQnVmZmVyLmgiCiAKQEAgLTU2LDYgKzU3LDM1IEBAIFNwZWN1bGF0aXZlSklU
Ojp+U3BlY3VsYXRpdmVKSVQoKQogICAgIFdURjo6ZGVsZXRlQWxsVmFsdWVzKG1fc2xvd1BhdGhH
ZW5lcmF0b3JzKTsKIH0KIAordm9pZCBTcGVjdWxhdGl2ZUpJVDo6ZW1pdEFsbG9jYXRlSlNBcnJh
eShTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgR1BSUmVnIHJlc3VsdEdQUiwgR1BSUmVnIHN0b3JhZ2VH
UFIsIHVuc2lnbmVkIG51bUVsZW1lbnRzKQoreworICAgIEFTU0VSVChoYXNDb250aWd1b3VzKHN0
cnVjdHVyZS0+aW5kZXhpbmdUeXBlKCkpKTsKKyAgICAKKyAgICBHUFJUZW1wb3Jhcnkgc2NyYXRj
aCh0aGlzKTsKKyAgICBHUFJSZWcgc2NyYXRjaEdQUiA9IHNjcmF0Y2guZ3ByKCk7CisgICAgCisg
ICAgSklUQ29tcGlsZXI6Okp1bXBMaXN0IHNsb3dDYXNlczsKKyAgICBzbG93Q2FzZXMuYXBwZW5k
KAorICAgICAgICBlbWl0QWxsb2NhdGVCYXNpY1N0b3JhZ2UoVHJ1c3RlZEltbTMyKG51bUVsZW1l
bnRzICogc2l6ZW9mKEpTVmFsdWUpICsgc2l6ZW9mKEluZGV4aW5nSGVhZGVyKSksIHN0b3JhZ2VH
UFIpKTsKKyAgICBtX2ppdC5zdWJQdHIoVHJ1c3RlZEltbTMyKG51bUVsZW1lbnRzICogc2l6ZW9m
KEpTVmFsdWUpKSwgc3RvcmFnZUdQUik7CisgICAgZW1pdEFsbG9jYXRlQmFzaWNKU09iamVjdDxK
U0FycmF5LCBNYXJrZWRCbG9jazo6Tm9uZT4oCisgICAgICAgIFRydXN0ZWRJbW1QdHIoc3RydWN0
dXJlKSwgcmVzdWx0R1BSLCBzY3JhdGNoR1BSLAorICAgICAgICBzdG9yYWdlR1BSLCBzbG93Q2Fz
ZXMpOworICAgIAorICAgIC8vIEknbSBhc3N1bWluZyB0aGF0IHR3byAzMi1iaXQgc3RvcmVzIGFy
ZSBiZXR0ZXIgdGhhbiBhIDY0LWJpdCBzdG9yZS4KKyAgICAvLyBJIGhhdmUgbm8gaWRlYSBpZiB0
aGF0J3MgdHJ1ZS4gQW5kIGl0IHByb2JhYmx5IGRvZXNuJ3QgbWF0dGVyIGFueXdheS4KKyAgICBt
X2ppdC5zdG9yZTMyKFRydXN0ZWRJbW0zMihudW1FbGVtZW50cyksIE1hY3JvQXNzZW1ibGVyOjpB
ZGRyZXNzKHN0b3JhZ2VHUFIsIEJ1dHRlcmZseTo6b2Zmc2V0T2ZQdWJsaWNMZW5ndGgoKSkpOwor
ICAgIG1faml0LnN0b3JlMzIoVHJ1c3RlZEltbTMyKG51bUVsZW1lbnRzKSwgTWFjcm9Bc3NlbWJs
ZXI6OkFkZHJlc3Moc3RvcmFnZUdQUiwgQnV0dGVyZmx5OjpvZmZzZXRPZlZlY3Rvckxlbmd0aCgp
KSk7CisgICAgCisgICAgLy8gSSB3YW50IGEgc2xvdyBwYXRoIHRoYXQgYWxzbyBsb2FkcyBvdXQg
dGhlIHN0b3JhZ2UgcG9pbnRlciwgYW5kIHRoYXQncworICAgIC8vIHdoYXQgdGhpcyBjdXN0b20g
Q2FsbEFycmF5QWxsb2NhdG9yU2xvd1BhdGhHZW5lcmF0b3IgZ2l2ZXMgbWUuIEl0J3MgYSBsb3QK
KyAgICAvLyBvZiB3b3JrIGZvciBhIHZlcnkgc21hbGwgcGllY2Ugb2YgZnVuY3Rpb25hbGl0eS4g
Oi0vCisgICAgYWRkU2xvd1BhdGhHZW5lcmF0b3IoYWRvcHRQdHIoCisgICAgICAgIG5ldyBDYWxs
QXJyYXlBbGxvY2F0b3JTbG93UGF0aEdlbmVyYXRvcigKKyAgICAgICAgICAgIHNsb3dDYXNlcywg
dGhpcywgb3BlcmF0aW9uTmV3QXJyYXlXaXRoU2l6ZSwgcmVzdWx0R1BSLCBzdG9yYWdlR1BSLAor
ICAgICAgICAgICAgc3RydWN0dXJlLCBudW1FbGVtZW50cykpKTsKK30KKwogdm9pZCBTcGVjdWxh
dGl2ZUpJVDo6c3BlY3VsYXRpb25DaGVjayhFeGl0S2luZCBraW5kLCBKU1ZhbHVlU291cmNlIGpz
VmFsdWVTb3VyY2UsIE5vZGVJbmRleCBub2RlSW5kZXgsIE1hY3JvQXNzZW1ibGVyOjpKdW1wIGp1
bXBUb0ZhaWwpCiB7CiAgICAgaWYgKCFtX2NvbXBpbGVPa2F5KQpAQCAtMzQzNCwxNCArMzQ2NCwx
MSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlQWxsb2NhdGVQcm9wCiAgICAgICAgIAog
ICAgIEFTU0VSVCghbm9kZS5zdHJ1Y3R1cmVUcmFuc2l0aW9uRGF0YSgpLnByZXZpb3VzU3RydWN0
dXJlLT5vdXRPZkxpbmVDYXBhY2l0eSgpKTsKICAgICBBU1NFUlQoaW5pdGlhbE91dE9mTGluZUNh
cGFjaXR5ID09IG5vZGUuc3RydWN0dXJlVHJhbnNpdGlvbkRhdGEoKS5uZXdTdHJ1Y3R1cmUtPm91
dE9mTGluZUNhcGFjaXR5KCkpOwotICAgIHNpemVfdCBuZXdTaXplID0gaW5pdGlhbE91dE9mTGlu
ZUNhcGFjaXR5ICogc2l6ZW9mKEpTVmFsdWUpOwotICAgIENvcGllZEFsbG9jYXRvciogY29waWVk
QWxsb2NhdG9yID0gJm1faml0Lmdsb2JhbERhdGEoKS0+aGVhcC5zdG9yYWdlQWxsb2NhdG9yKCk7
CisgICAgCisgICAgSklUQ29tcGlsZXI6Okp1bXAgc2xvd1BhdGggPQorICAgICAgICBlbWl0QWxs
b2NhdGVCYXNpY1N0b3JhZ2UoCisgICAgICAgICAgICBUcnVzdGVkSW1tMzIoaW5pdGlhbE91dE9m
TGluZUNhcGFjaXR5ICogc2l6ZW9mKEpTVmFsdWUpKSwgc2NyYXRjaEdQUik7CiAKLSAgICBtX2pp
dC5sb2FkUHRyKCZjb3BpZWRBbGxvY2F0b3ItPm1fY3VycmVudFJlbWFpbmluZywgc2NyYXRjaEdQ
Uik7Ci0gICAgSklUQ29tcGlsZXI6Okp1bXAgc2xvd1BhdGggPSBtX2ppdC5icmFuY2hTdWJQdHIo
SklUQ29tcGlsZXI6OlNpZ25lZCwgSklUQ29tcGlsZXI6OlRydXN0ZWRJbW0zMihuZXdTaXplKSwg
c2NyYXRjaEdQUik7Ci0gICAgbV9qaXQuc3RvcmVQdHIoc2NyYXRjaEdQUiwgJmNvcGllZEFsbG9j
YXRvci0+bV9jdXJyZW50UmVtYWluaW5nKTsKLSAgICBtX2ppdC5uZWdQdHIoc2NyYXRjaEdQUik7
Ci0gICAgbV9qaXQuYWRkUHRyKEpJVENvbXBpbGVyOjpBYnNvbHV0ZUFkZHJlc3MoJmNvcGllZEFs
bG9jYXRvci0+bV9jdXJyZW50UGF5bG9hZEVuZCksIHNjcmF0Y2hHUFIpOwogICAgIG1faml0LmFk
ZFB0cihKSVRDb21waWxlcjo6VHJ1c3RlZEltbTMyKHNpemVvZihKU1ZhbHVlKSksIHNjcmF0Y2hH
UFIpOwogICAgICAgICAKICAgICBhZGRTbG93UGF0aEdlbmVyYXRvcigKQEAgLTM0ODIsMTUgKzM1
MDksOSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlUmVhbGxvY2F0ZVByCiAgICAgR1BS
UmVnIHNjcmF0Y2hHUFIxID0gc2NyYXRjaDEuZ3ByKCk7CiAgICAgR1BSUmVnIHNjcmF0Y2hHUFIy
ID0gc2NyYXRjaDIuZ3ByKCk7CiAgICAgICAgIAotICAgIEpJVENvbXBpbGVyOjpKdW1wIHNsb3dQ
YXRoOwotICAgICAgICAKLSAgICBDb3BpZWRBbGxvY2F0b3IqIGNvcGllZEFsbG9jYXRvciA9ICZt
X2ppdC5nbG9iYWxEYXRhKCktPmhlYXAuc3RvcmFnZUFsbG9jYXRvcigpOwotICAgICAgICAKLSAg
ICBtX2ppdC5sb2FkUHRyKCZjb3BpZWRBbGxvY2F0b3ItPm1fY3VycmVudFJlbWFpbmluZywgc2Ny
YXRjaEdQUjIpOwotICAgIHNsb3dQYXRoID0gbV9qaXQuYnJhbmNoU3ViUHRyKEpJVENvbXBpbGVy
OjpTaWduZWQsIEpJVENvbXBpbGVyOjpUcnVzdGVkSW1tMzIobmV3U2l6ZSksIHNjcmF0Y2hHUFIy
KTsKLSAgICBtX2ppdC5zdG9yZVB0cihzY3JhdGNoR1BSMiwgJmNvcGllZEFsbG9jYXRvci0+bV9j
dXJyZW50UmVtYWluaW5nKTsKLSAgICBtX2ppdC5uZWdQdHIoc2NyYXRjaEdQUjIpOwotICAgIG1f
aml0LmFkZFB0cihKSVRDb21waWxlcjo6QWJzb2x1dGVBZGRyZXNzKCZjb3BpZWRBbGxvY2F0b3It
Pm1fY3VycmVudFBheWxvYWRFbmQpLCBzY3JhdGNoR1BSMik7CisgICAgSklUQ29tcGlsZXI6Okp1
bXAgc2xvd1BhdGggPQorICAgICAgICBlbWl0QWxsb2NhdGVCYXNpY1N0b3JhZ2UoVHJ1c3RlZElt
bTMyKG5ld1NpemUpLCBzY3JhdGNoR1BSMik7CisKICAgICBtX2ppdC5hZGRQdHIoSklUQ29tcGls
ZXI6OlRydXN0ZWRJbW0zMihzaXplb2YoSlNWYWx1ZSkpLCBzY3JhdGNoR1BSMik7CiAgICAgICAg
IAogICAgIGFkZFNsb3dQYXRoR2VuZXJhdG9yKApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaAkocmV2aXNpb24gMTMxMjEwKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCSh3b3JraW5nIGNvcHkpCkBA
IC0xMjI5LDYgKzEyMjksMTEgQEAgcHVibGljOgogICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50
c1dpdGhFeGVjU3RhdGUoVHJ1c3RlZEltbVB0cihzdHJ1Y3R1cmUpLCBhcmcyKTsKICAgICAgICAg
cmV0dXJuIGFwcGVuZENhbGxXaXRoRXhjZXB0aW9uQ2hlY2tTZXRSZXN1bHQob3BlcmF0aW9uLCBy
ZXN1bHQpOwogICAgIH0KKyAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKFBfREZH
T3BlcmF0aW9uX0VTdFogb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0LCBTdHJ1Y3R1cmUqIHN0cnVj
dHVyZSwgc2l6ZV90IGFyZzIpCisgICAgeworICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dp
dGhFeGVjU3RhdGUoVHJ1c3RlZEltbVB0cihzdHJ1Y3R1cmUpLCBUcnVzdGVkSW1tMzIoYXJnMikp
OworICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRpb25DaGVja1NldFJlc3VsdChv
cGVyYXRpb24sIHJlc3VsdCk7CisgICAgfQogICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVy
YXRpb24oUF9ERkdPcGVyYXRpb25fRVN0WiBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHQsIEdQUlJl
ZyBhcmcxLCBHUFJSZWcgYXJnMikKICAgICB7CiAgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRz
V2l0aEV4ZWNTdGF0ZShhcmcxLCBhcmcyKTsKQEAgLTE1NTcsNiArMTU2MiwxMSBAQCBwdWJsaWM6
CiAgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShUcnVzdGVkSW1tUHRy
KHN0cnVjdHVyZSksIGFyZzIpOwogICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFdpdGhFeGNlcHRp
b25DaGVja1NldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CiAgICAgfQorICAgIEpJVENvbXBp
bGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oUF9ERkdPcGVyYXRpb25fRVN0WiBvcGVyYXRpb24sIEdQ
UlJlZyByZXN1bHQsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBzaXplX3QgYXJnMikKKyAgICB7Cisg
ICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShUcnVzdGVkSW1tUHRyKHN0
cnVjdHVyZSksIFRydXN0ZWRJbW0zMihhcmcyKSk7CisgICAgICAgIHJldHVybiBhcHBlbmRDYWxs
V2l0aEV4Y2VwdGlvbkNoZWNrU2V0UmVzdWx0KG9wZXJhdGlvbiwgcmVzdWx0KTsKKyAgICB9CiAg
ICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihQX0RGR09wZXJhdGlvbl9FU3RaIG9w
ZXJhdGlvbiwgR1BSUmVnIHJlc3VsdCwgR1BSUmVnIGFyZzEsIEdQUlJlZyBhcmcyKQogICAgIHsK
ICAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRlKGFyZzEsIGFyZzIpOwpA
QCAtMjI1NSwxMSArMjI2NSwyOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBjb21waWxlTmV3RnVuY3Rp
b25Ob0NoZWNrKE5vZGUmKTsKICAgICB2b2lkIGNvbXBpbGVOZXdGdW5jdGlvbkV4cHJlc3Npb24o
Tm9kZSYpOwogICAgIGJvb2wgY29tcGlsZVJlZ0V4cEV4ZWMoTm9kZSYpOwotICAgCisgICAgCisg
ICAgLy8gc2l6ZSBjYW4gYmUgYW4gaW1tZWRpYXRlIG9yIGEgcmVnaXN0ZXIsIGFuZCBtdXN0IGJl
IGluIGJ5dGVzLiBJZiBzaXplIGlzIGEgcmVnaXN0ZXIsCisgICAgLy8gaXQgbXVzdCBiZSBhIGRp
ZmZlcmVudCByZWdpc3RlciB0aGFuIHJlc3VsdEdQUi4gUmV0dXJucyBhIHBvaW50ZXIgdG8gdGhl
IGVuZCBvZiB0aGUKKyAgICAvLyBhbGxvY2F0aW9uLiBUaGUgcmV0dXJuZWQganVtcCBpcyB0aGUg
anVtcCB0byB0aGUgc2xvdyBwYXRoLgorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFNpemVUeXBlPgor
ICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIGVtaXRBbGxvY2F0ZUJhc2ljU3RvcmFnZShTaXplVHlw
ZSBzaXplLCBHUFJSZWcgcmVzdWx0R1BSKQorICAgIHsKKyAgICAgICAgQ29waWVkQWxsb2NhdG9y
KiBjb3BpZWRBbGxvY2F0b3IgPSAmbV9qaXQuZ2xvYmFsRGF0YSgpLT5oZWFwLnN0b3JhZ2VBbGxv
Y2F0b3IoKTsKKyAgICAgICAgCisgICAgICAgIG1faml0LmxvYWRQdHIoJmNvcGllZEFsbG9jYXRv
ci0+bV9jdXJyZW50UmVtYWluaW5nLCByZXN1bHRHUFIpOworICAgICAgICBNYWNyb0Fzc2VtYmxl
cjo6SnVtcCBzbG93UGF0aCA9IG1faml0LmJyYW5jaFN1YlB0cihKSVRDb21waWxlcjo6U2lnbmVk
LCBzaXplLCByZXN1bHRHUFIpOworICAgICAgICBtX2ppdC5zdG9yZVB0cihyZXN1bHRHUFIsICZj
b3BpZWRBbGxvY2F0b3ItPm1fY3VycmVudFJlbWFpbmluZyk7CisgICAgICAgIG1faml0Lm5lZ1B0
cihyZXN1bHRHUFIpOworICAgICAgICBtX2ppdC5hZGRQdHIoSklUQ29tcGlsZXI6OkFic29sdXRl
QWRkcmVzcygmY29waWVkQWxsb2NhdG9yLT5tX2N1cnJlbnRQYXlsb2FkRW5kKSwgcmVzdWx0R1BS
KTsKKyAgICAgICAgCisgICAgICAgIHJldHVybiBzbG93UGF0aDsKKyAgICB9CisgICAgCiAgICAg
Ly8gSXQgaXMgTk9UIG9rYXkgZm9yIHRoZSBzdHJ1Y3R1cmUgYW5kIHRoZSBzY3JhdGNoIHJlZ2lz
dGVyIHRvIGJlIHRoZSBzYW1lIHRoaW5nIGJlY2F1c2UgaWYgdGhleSBhcmUgdGhlbiB0aGUgU3Ry
dWN0dXJlIHdpbGwgCiAgICAgLy8gZ2V0IGNsb2JiZXJlZC4gCi0gICAgdGVtcGxhdGUgPHR5cGVu
YW1lIENsYXNzVHlwZSwgTWFya2VkQmxvY2s6OkRlc3RydWN0b3JUeXBlIGRlc3RydWN0b3JUeXBl
LCB0eXBlbmFtZSBTdHJ1Y3R1cmVUeXBlPiAKLSAgICB2b2lkIGVtaXRBbGxvY2F0ZUJhc2ljSlNP
YmplY3QoU3RydWN0dXJlVHlwZSBzdHJ1Y3R1cmUsIEdQUlJlZyByZXN1bHRHUFIsIEdQUlJlZyBz
Y3JhdGNoR1BSLCBNYWNyb0Fzc2VtYmxlcjo6SnVtcExpc3QmIHNsb3dQYXRoKQorICAgIHRlbXBs
YXRlIDx0eXBlbmFtZSBDbGFzc1R5cGUsIE1hcmtlZEJsb2NrOjpEZXN0cnVjdG9yVHlwZSBkZXN0
cnVjdG9yVHlwZSwgdHlwZW5hbWUgU3RydWN0dXJlVHlwZSwgdHlwZW5hbWUgU3RvcmFnZVR5cGU+
IAorICAgIHZvaWQgZW1pdEFsbG9jYXRlQmFzaWNKU09iamVjdChTdHJ1Y3R1cmVUeXBlIHN0cnVj
dHVyZSwgR1BSUmVnIHJlc3VsdEdQUiwgR1BSUmVnIHNjcmF0Y2hHUFIsIFN0b3JhZ2VUeXBlIHN0
b3JhZ2UsIE1hY3JvQXNzZW1ibGVyOjpKdW1wTGlzdCYgc2xvd1BhdGgpCiAgICAgewogICAgICAg
ICBzaXplX3Qgc2l6ZSA9IENsYXNzVHlwZTo6YWxsb2NhdGlvblNpemUoSU5MSU5FX1NUT1JBR0Vf
Q0FQQUNJVFkpOwogICAgICAgICBNYXJrZWRBbGxvY2F0b3IqIGFsbG9jYXRvciA9IDA7CkBAIC0y
MjgyLDE0ICsyMzA5LDE2IEBAIHB1YmxpYzoKICAgICAgICAgbV9qaXQuc3RvcmVQdHIoc3RydWN0
dXJlLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhyZXN1bHRHUFIsIEpTQ2VsbDo6c3RydWN0dXJl
T2Zmc2V0KCkpKTsKICAgICAgICAgCiAgICAgICAgIC8vIEluaXRpYWxpemUgdGhlIG9iamVjdCdz
IHByb3BlcnR5IHN0b3JhZ2UgcG9pbnRlci4KLSAgICAgICAgbV9qaXQuc3RvcmVQdHIoTWFjcm9B
c3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIoMCksIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHJlc3Vs
dEdQUiwgSlNPYmplY3Q6OmJ1dHRlcmZseU9mZnNldCgpKSk7CisgICAgICAgIG1faml0LnN0b3Jl
UHRyKHN0b3JhZ2UsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHJlc3VsdEdQUiwgSlNPYmplY3Q6
OmJ1dHRlcmZseU9mZnNldCgpKSk7CiAgICAgfQogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4K
ICAgICB2b2lkIGVtaXRBbGxvY2F0ZUpTRmluYWxPYmplY3QoVCBzdHJ1Y3R1cmUsIEdQUlJlZyBy
ZXN1bHRHUFIsIEdQUlJlZyBzY3JhdGNoR1BSLCBNYWNyb0Fzc2VtYmxlcjo6SnVtcExpc3QmIHNs
b3dQYXRoKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGVtaXRBbGxvY2F0ZUJhc2ljSlNPYmplY3Q8
SlNGaW5hbE9iamVjdCwgTWFya2VkQmxvY2s6Ok5vbmU+KHN0cnVjdHVyZSwgcmVzdWx0R1BSLCBz
Y3JhdGNoR1BSLCBzbG93UGF0aCk7CisgICAgICAgIHJldHVybiBlbWl0QWxsb2NhdGVCYXNpY0pT
T2JqZWN0PEpTRmluYWxPYmplY3QsIE1hcmtlZEJsb2NrOjpOb25lPihzdHJ1Y3R1cmUsIHJlc3Vs
dEdQUiwgc2NyYXRjaEdQUiwgVHJ1c3RlZEltbVB0cigwKSwgc2xvd1BhdGgpOwogICAgIH0KKyAg
ICAKKyAgICB2b2lkIGVtaXRBbGxvY2F0ZUpTQXJyYXkoU3RydWN0dXJlKiwgR1BSUmVnIHJlc3Vs
dEdQUiwgR1BSUmVnIHN0b3JhZ2VHUFIsIHVuc2lnbmVkIG51bUVsZW1lbnRzKTsKIAogI2lmIFVT
RShKU1ZBTFVFNjQpIAogICAgIEpJVENvbXBpbGVyOjpKdW1wIGNvbnZlcnRUb0RvdWJsZShHUFJS
ZWcgdmFsdWUsIEZQUlJlZyByZXN1bHQsIEdQUlJlZyB0bXApOwo=
</data>
<flag name="review"
          id="181479"
          type_id="1"
          status="+"
          setter="oliver"
    />
          </attachment>
      

    </bug>

</bugzilla>