<?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>123124</bug_id>
          
          <creation_ts>2013-10-21 16:20:48 -0700</creation_ts>
          <short_desc>Make IDBTransactionCoordinatorLevelDB cross platform</short_desc>
          <delta_ts>2013-10-21 17:17:00 -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>WebCore Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>123027</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Brady Eidson">beidson</reporter>
          <assigned_to name="Brady Eidson">beidson</assigned_to>
          <cc>alecflett</cc>
    
    <cc>commit-queue</cc>
    
    <cc>eflews.bot</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>jsbell</cc>
    
    <cc>rakuco</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>942061</commentid>
    <comment_count>0</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2013-10-21 16:20:48 -0700</bug_when>
    <thetext>Make IDBTransactionCoordinatorLevelDB cross platform

More progress towards https://bugs.webkit.org/show_bug.cgi?id=123027</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>942064</commentid>
    <comment_count>1</comment_count>
      <attachid>214788</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2013-10-21 16:22:39 -0700</bug_when>
    <thetext>Created attachment 214788
Patch v1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>942069</commentid>
    <comment_count>2</comment_count>
      <attachid>214788</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2013-10-21 16:25:59 -0700</bug_when>
    <thetext>Comment on attachment 214788
Patch v1 

Attachment 214788 did not pass efl-wk2-ews (efl-wk2):
Output: http://webkit-queues.appspot.com/results/4998192</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>942070</commentid>
    <comment_count>3</comment_count>
      <attachid>214788</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2013-10-21 16:26:04 -0700</bug_when>
    <thetext>Comment on attachment 214788
Patch v1 

Attachment 214788 did not pass efl-ews (efl):
Output: http://webkit-queues.appspot.com/results/8788147</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>942071</commentid>
    <comment_count>4</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2013-10-21 16:26:28 -0700</bug_when>
    <thetext>Oh yah, move the files for other build systems too.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>942075</commentid>
    <comment_count>5</comment_count>
      <attachid>214792</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2013-10-21 16:31:12 -0700</bug_when>
    <thetext>Created attachment 214792
Patch v2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>942081</commentid>
    <comment_count>6</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2013-10-21 16:46:51 -0700</bug_when>
    <thetext>Ugh more fixes coming.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>942082</commentid>
    <comment_count>7</comment_count>
      <attachid>214793</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2013-10-21 16:47:48 -0700</bug_when>
    <thetext>Created attachment 214793
Patch v3</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>942084</commentid>
    <comment_count>8</comment_count>
      <attachid>214793</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2013-10-21 16:50:18 -0700</bug_when>
    <thetext>Comment on attachment 214793
Patch v3

Attachment 214793 did not pass efl-ews (efl):
Output: http://webkit-queues.appspot.com/results/8838141</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>942086</commentid>
    <comment_count>9</comment_count>
      <attachid>214794</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2013-10-21 16:54:34 -0700</bug_when>
    <thetext>Created attachment 214794
Patch v4</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>942098</commentid>
    <comment_count>10</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2013-10-21 17:16:03 -0700</bug_when>
    <thetext>Fixed EFL bot, and builds locally on Mac, so I&apos;ll land.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>942099</commentid>
    <comment_count>11</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2013-10-21 17:17:00 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/157766</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>214788</attachid>
            <date>2013-10-21 16:22:39 -0700</date>
            <delta_ts>2013-10-21 16:31:12 -0700</delta_ts>
            <desc>Patch v1 </desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>29791</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0
aW9uQmFja2VuZEludGVyZmFjZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlLmgKaW5kZXggZjcyNmI1ZTIuLjNjMDAwNjEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0
aW9uQmFja2VuZEludGVyZmFjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL0lEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZS5oCkBAIC01Miw5ICs1MiwxMSBAQCBw
dWJsaWM6CiAKICAgICB2aXJ0dWFsIEluZGV4ZWREQjo6VHJhbnNhY3Rpb25Nb2RlIG1vZGUoKSBj
b25zdCA9IDA7CiAKKyAgICB2aXJ0dWFsIHZvaWQgcnVuKCkgPSAwOwogICAgIHZpcnR1YWwgdm9p
ZCBjb21taXQoKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGFib3J0KCkgPSAwOwogICAgIHZpcnR1
YWwgdm9pZCBhYm9ydChQYXNzUmVmUHRyPElEQkRhdGFiYXNlRXJyb3I+KSA9IDA7CisgICAgdmly
dHVhbCBjb25zdCBIYXNoU2V0PGludDY0X3Q+JiBzY29wZSgpIGNvbnN0ID0gMDsKIAogICAgIHZp
cnR1YWwgdm9pZCBzY2hlZHVsZUNyZWF0ZU9iamVjdFN0b3JlT3BlcmF0aW9uKGNvbnN0IElEQk9i
amVjdFN0b3JlTWV0YWRhdGEmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHNjaGVkdWxlRGVsZXRl
T2JqZWN0U3RvcmVPcGVyYXRpb24oY29uc3QgSURCT2JqZWN0U3RvcmVNZXRhZGF0YSYpID0gMDsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0
aW9uQ29vcmRpbmF0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURC
VHJhbnNhY3Rpb25Db29yZGluYXRvci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMC4uMWJiNmU5MQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uQ29vcmRpbmF0b3IuY3BwCkBAIC0wLDAgKzEsMTUzIEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICog
MS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
IElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIklEQlRyYW5zYWN0aW9uQ29v
cmRpbmF0b3IuaCIKKworI2lmIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQorCisjaW5jbHVkZSAi
SURCRGF0YWJhc2VCYWNrZW5kTGV2ZWxEQi5oIgorI2luY2x1ZGUgIklEQkRhdGFiYXNlQ2FsbGJh
Y2tzLmgiCisjaW5jbHVkZSAiSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlLmgiCisKK25h
bWVzcGFjZSBXZWJDb3JlIHsKKworUGFzc093blB0cjxJREJUcmFuc2FjdGlvbkNvb3JkaW5hdG9y
PiBJREJUcmFuc2FjdGlvbkNvb3JkaW5hdG9yOjpjcmVhdGUoKQoreworICAgIHJldHVybiBhZG9w
dFB0cihuZXcgSURCVHJhbnNhY3Rpb25Db29yZGluYXRvcigpKTsKK30KKworSURCVHJhbnNhY3Rp
b25Db29yZGluYXRvcjo6SURCVHJhbnNhY3Rpb25Db29yZGluYXRvcigpCit7Cit9CisKK0lEQlRy
YW5zYWN0aW9uQ29vcmRpbmF0b3I6On5JREJUcmFuc2FjdGlvbkNvb3JkaW5hdG9yKCkKK3sKK30K
Kwordm9pZCBJREJUcmFuc2FjdGlvbkNvb3JkaW5hdG9yOjpkaWRDcmVhdGVUcmFuc2FjdGlvbihJ
REJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqIHRyYW5zYWN0aW9uKQoreworICAgIEFTU0VS
VCghbV90cmFuc2FjdGlvbnMuY29udGFpbnModHJhbnNhY3Rpb24pKTsKKyAgICBtX3RyYW5zYWN0
aW9ucy5hZGQodHJhbnNhY3Rpb24sIHRyYW5zYWN0aW9uKTsKK30KKwordm9pZCBJREJUcmFuc2Fj
dGlvbkNvb3JkaW5hdG9yOjpkaWRTdGFydFRyYW5zYWN0aW9uKElEQlRyYW5zYWN0aW9uQmFja2Vu
ZEludGVyZmFjZSogdHJhbnNhY3Rpb24pCit7CisgICAgQVNTRVJUKG1fdHJhbnNhY3Rpb25zLmNv
bnRhaW5zKHRyYW5zYWN0aW9uKSk7CisKKyAgICBtX3F1ZXVlZFRyYW5zYWN0aW9ucy5hZGQodHJh
bnNhY3Rpb24pOworICAgIHByb2Nlc3NTdGFydGVkVHJhbnNhY3Rpb25zKCk7Cit9CisKK3ZvaWQg
SURCVHJhbnNhY3Rpb25Db29yZGluYXRvcjo6ZGlkRmluaXNoVHJhbnNhY3Rpb24oSURCVHJhbnNh
Y3Rpb25CYWNrZW5kSW50ZXJmYWNlKiB0cmFuc2FjdGlvbikKK3sKKyAgICBBU1NFUlQobV90cmFu
c2FjdGlvbnMuY29udGFpbnModHJhbnNhY3Rpb24pKTsKKworICAgIGlmIChtX3F1ZXVlZFRyYW5z
YWN0aW9ucy5jb250YWlucyh0cmFuc2FjdGlvbikpIHsKKyAgICAgICAgQVNTRVJUKCFtX3N0YXJ0
ZWRUcmFuc2FjdGlvbnMuY29udGFpbnModHJhbnNhY3Rpb24pKTsKKyAgICAgICAgbV9xdWV1ZWRU
cmFuc2FjdGlvbnMucmVtb3ZlKHRyYW5zYWN0aW9uKTsKKyAgICB9IGVsc2UgaWYgKG1fc3RhcnRl
ZFRyYW5zYWN0aW9ucy5jb250YWlucyh0cmFuc2FjdGlvbikpCisgICAgICAgIG1fc3RhcnRlZFRy
YW5zYWN0aW9ucy5yZW1vdmUodHJhbnNhY3Rpb24pOworCisgICAgbV90cmFuc2FjdGlvbnMucmVt
b3ZlKHRyYW5zYWN0aW9uKTsKKworICAgIHByb2Nlc3NTdGFydGVkVHJhbnNhY3Rpb25zKCk7Cit9
CisKKyNpZm5kZWYgTkRFQlVHCisvLyBWZXJpZmllcyBpbnRlcm5hbCBjb25zaXN0aWVuY3kgd2hp
bGUgcmV0dXJuaW5nIHdoZXRoZXIgYW55dGhpbmcgaXMgZm91bmQuCitib29sIElEQlRyYW5zYWN0
aW9uQ29vcmRpbmF0b3I6OmlzQWN0aXZlKElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSog
dHJhbnNhY3Rpb24pCit7CisgICAgYm9vbCBmb3VuZCA9IGZhbHNlOworICAgIGlmIChtX3F1ZXVl
ZFRyYW5zYWN0aW9ucy5jb250YWlucyh0cmFuc2FjdGlvbikpCisgICAgICAgIGZvdW5kID0gdHJ1
ZTsKKyAgICBpZiAobV9zdGFydGVkVHJhbnNhY3Rpb25zLmNvbnRhaW5zKHRyYW5zYWN0aW9uKSkg
eworICAgICAgICBBU1NFUlQoIWZvdW5kKTsKKyAgICAgICAgZm91bmQgPSB0cnVlOworICAgIH0K
KyAgICBBU1NFUlQoZm91bmQgPT0gbV90cmFuc2FjdGlvbnMuY29udGFpbnModHJhbnNhY3Rpb24p
KTsKKyAgICByZXR1cm4gZm91bmQ7Cit9CisjZW5kaWYKKwordm9pZCBJREJUcmFuc2FjdGlvbkNv
b3JkaW5hdG9yOjpwcm9jZXNzU3RhcnRlZFRyYW5zYWN0aW9ucygpCit7CisgICAgaWYgKG1fcXVl
dWVkVHJhbnNhY3Rpb25zLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgQVNTRVJU
KG1fc3RhcnRlZFRyYW5zYWN0aW9ucy5pc0VtcHR5KCkgfHwgKCptX3N0YXJ0ZWRUcmFuc2FjdGlv
bnMuYmVnaW4oKSktPm1vZGUoKSAhPSBJbmRleGVkREI6OlRyYW5zYWN0aW9uVmVyc2lvbkNoYW5n
ZSk7CisKKyAgICBMaXN0SGFzaFNldDxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqPjo6
Y29uc3RfaXRlcmF0b3IgaXQgPSBtX3F1ZXVlZFRyYW5zYWN0aW9ucy5iZWdpbigpOworICAgIHdo
aWxlIChpdCAhPSBtX3F1ZXVlZFRyYW5zYWN0aW9ucy5lbmQoKSkgeworICAgICAgICBJREJUcmFu
c2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqIHRyYW5zYWN0aW9uID0gKml0OworICAgICAgICArK2l0
OworICAgICAgICBpZiAoY2FuUnVuVHJhbnNhY3Rpb24odHJhbnNhY3Rpb24pKSB7CisgICAgICAg
ICAgICBtX3F1ZXVlZFRyYW5zYWN0aW9ucy5yZW1vdmUodHJhbnNhY3Rpb24pOworICAgICAgICAg
ICAgbV9zdGFydGVkVHJhbnNhY3Rpb25zLmFkZCh0cmFuc2FjdGlvbik7CisgICAgICAgICAgICB0
cmFuc2FjdGlvbi0+cnVuKCk7CisgICAgICAgIH0KKyAgICB9Cit9CisKK3N0YXRpYyBib29sIGRv
U2NvcGVzT3ZlcmxhcChjb25zdCBIYXNoU2V0PGludDY0X3Q+JiBzY29wZTEsIGNvbnN0IEhhc2hT
ZXQ8aW50NjRfdD4mIHNjb3BlMikKK3sKKyAgICBmb3IgKEhhc2hTZXQ8aW50NjRfdD46OmNvbnN0
X2l0ZXJhdG9yIGl0ID0gc2NvcGUxLmJlZ2luKCk7IGl0ICE9IHNjb3BlMS5lbmQoKTsgKytpdCkg
eworICAgICAgICBpZiAoc2NvcGUyLmNvbnRhaW5zKCppdCkpCisgICAgICAgICAgICByZXR1cm4g
dHJ1ZTsKKyAgICB9CisgICAgcmV0dXJuIGZhbHNlOworfQorCitib29sIElEQlRyYW5zYWN0aW9u
Q29vcmRpbmF0b3I6OmNhblJ1blRyYW5zYWN0aW9uKElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVy
ZmFjZSogdHJhbnNhY3Rpb24pCit7CisgICAgQVNTRVJUKG1fcXVldWVkVHJhbnNhY3Rpb25zLmNv
bnRhaW5zKHRyYW5zYWN0aW9uKSk7CisgICAgc3dpdGNoICh0cmFuc2FjdGlvbi0+bW9kZSgpKSB7
CisgICAgY2FzZSBJbmRleGVkREI6OlRyYW5zYWN0aW9uVmVyc2lvbkNoYW5nZToKKyAgICAgICAg
QVNTRVJUKG1fcXVldWVkVHJhbnNhY3Rpb25zLnNpemUoKSA9PSAxKTsKKyAgICAgICAgQVNTRVJU
KG1fc3RhcnRlZFRyYW5zYWN0aW9ucy5pc0VtcHR5KCkpOworICAgICAgICByZXR1cm4gdHJ1ZTsK
KworICAgIGNhc2UgSW5kZXhlZERCOjpUcmFuc2FjdGlvblJlYWRPbmx5OgorICAgICAgICByZXR1
cm4gdHJ1ZTsKKworICAgIGNhc2UgSW5kZXhlZERCOjpUcmFuc2FjdGlvblJlYWRXcml0ZToKKyAg
ICAgICAgZm9yIChIYXNoU2V0PElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSo+Ojpjb25z
dF9pdGVyYXRvciBpdCA9IG1fc3RhcnRlZFRyYW5zYWN0aW9ucy5iZWdpbigpOyBpdCAhPSBtX3N0
YXJ0ZWRUcmFuc2FjdGlvbnMuZW5kKCk7ICsraXQpIHsKKyAgICAgICAgICAgIGlmICgoKml0KS0+
bW9kZSgpID09IEluZGV4ZWREQjo6VHJhbnNhY3Rpb25SZWFkV3JpdGUgJiYgZG9TY29wZXNPdmVy
bGFwKHRyYW5zYWN0aW9uLT5zY29wZSgpLCAoKml0KS0+c2NvcGUoKSkpCisgICAgICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAgICAgIGZvciAoTGlzdEhhc2hTZXQ8SURC
VHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKj46OmNvbnN0X2l0ZXJhdG9yIGl0ID0gbV9xdWV1
ZWRUcmFuc2FjdGlvbnMuYmVnaW4oKTsgKml0ICE9IHRyYW5zYWN0aW9uOyArK2l0KSB7CisgICAg
ICAgICAgICBBU1NFUlQoaXQgIT0gbV9xdWV1ZWRUcmFuc2FjdGlvbnMuZW5kKCkpOworICAgICAg
ICAgICAgaWYgKCgqaXQpLT5tb2RlKCkgPT0gSW5kZXhlZERCOjpUcmFuc2FjdGlvblJlYWRXcml0
ZSAmJiBkb1Njb3Blc092ZXJsYXAodHJhbnNhY3Rpb24tPnNjb3BlKCksICgqaXQpLT5zY29wZSgp
KSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICAgICAgcmV0
dXJuIHRydWU7CisgICAgfQorICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBm
YWxzZTsKK30KKworfTsKKworI2VuZGlmIC8vIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb25D
b29yZGluYXRvci5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNh
Y3Rpb25Db29yZGluYXRvci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjEw
ZTJiMTIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9JREJUcmFuc2FjdGlvbkNvb3JkaW5hdG9yLmgKQEAgLTAsMCArMSw3MSBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5E
IElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisg
KiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBP
UiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
Zm5kZWYgSURCVHJhbnNhY3Rpb25Db29yZGluYXRvcl9oCisjZGVmaW5lIElEQlRyYW5zYWN0aW9u
Q29vcmRpbmF0b3JfaAorCisjaWYgRU5BQkxFKElOREVYRURfREFUQUJBU0UpCisKKyNpbmNsdWRl
IDx3dGYvSGFzaE1hcC5oPgorI2luY2x1ZGUgPHd0Zi9MaXN0SGFzaFNldC5oPgorI2luY2x1ZGUg
PHd0Zi9SZWZQdHIuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBJREJUcmFuc2Fj
dGlvbkJhY2tlbmRJbnRlcmZhY2U7CisKKy8vIFRyYW5zYWN0aW9ucyBhcmUgZXhlY3V0ZWQgaW4g
dGhlIG9yZGVyIHRoZSB3ZXJlIGNyZWF0ZWQuCitjbGFzcyBJREJUcmFuc2FjdGlvbkNvb3JkaW5h
dG9yIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc093blB0cjxJREJUcmFuc2FjdGlvbkNvb3Jk
aW5hdG9yPiBjcmVhdGUoKTsKKyAgICB2aXJ0dWFsIH5JREJUcmFuc2FjdGlvbkNvb3JkaW5hdG9y
KCk7CisKKyAgICAvLyBDYWxsZWQgYnkgdHJhbnNhY3Rpb25zIGFzIHRoZXkgc3RhcnQgYW5kIGZp
bmlzaC4KKyAgICB2b2lkIGRpZENyZWF0ZVRyYW5zYWN0aW9uKElEQlRyYW5zYWN0aW9uQmFja2Vu
ZEludGVyZmFjZSopOworICAgIHZvaWQgZGlkU3RhcnRUcmFuc2FjdGlvbihJREJUcmFuc2FjdGlv
bkJhY2tlbmRJbnRlcmZhY2UqKTsKKyAgICB2b2lkIGRpZEZpbmlzaFRyYW5zYWN0aW9uKElEQlRy
YW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSopOworCisjaWZuZGVmIE5ERUJVRworICAgIGJvb2wg
aXNBY3RpdmUoSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKik7CisjZW5kaWYKKworcHJp
dmF0ZToKKyAgICBJREJUcmFuc2FjdGlvbkNvb3JkaW5hdG9yKCk7CisKKyAgICB2b2lkIHByb2Nl
c3NTdGFydGVkVHJhbnNhY3Rpb25zKCk7CisgICAgYm9vbCBjYW5SdW5UcmFuc2FjdGlvbihJREJU
cmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqKTsKKworICAgIC8vIFRoaXMgaXMganVzdCBhbiBl
ZmZpY2llbnQgd2F5IHRvIGtlZXAgcmVmZXJlbmNlcyB0byBhbGwgdHJhbnNhY3Rpb25zLgorICAg
IEhhc2hNYXA8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKiwgUmVmUHRyPElEQlRyYW5z
YWN0aW9uQmFja2VuZEludGVyZmFjZT4gPiBtX3RyYW5zYWN0aW9uczsKKyAgICAvLyBUcmFuc2Fj
dGlvbnMgaW4gZGlmZmVyZW50IHN0YXRlcyBhcmUgZ3JvdXBlZCBiZWxvdy4KKyAgICBMaXN0SGFz
aFNldDxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqPiBtX3F1ZXVlZFRyYW5zYWN0aW9u
czsKKyAgICBIYXNoU2V0PElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSo+IG1fc3RhcnRl
ZFRyYW5zYWN0aW9uczsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8v
IEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQorCisjZW5kaWYgLy8gSURCVHJhbnNhY3Rpb25Db29y
ZGluYXRvcl9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9s
ZXZlbGRiL0lEQkRhdGFiYXNlQmFja2VuZExldmVsREIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvbGV2ZWxkYi9JREJEYXRhYmFzZUJhY2tlbmRMZXZlbERCLmNwcAppbmRl
eCA1Y2E4NmY1Li4xODFlMjUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9sZXZlbGRiL0lEQkRhdGFiYXNlQmFja2VuZExldmVsREIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2xldmVsZGIvSURCRGF0YWJhc2VCYWNrZW5kTGV2
ZWxEQi5jcHAKQEAgLTM1LDcgKzM1LDcgQEAKICNpbmNsdWRlICJJREJLZXlSYW5nZS5oIgogI2lu
Y2x1ZGUgIklEQk9iamVjdFN0b3JlQmFja2VuZExldmVsREIuaCIKICNpbmNsdWRlICJJREJUcmFu
c2FjdGlvbkJhY2tlbmRMZXZlbERCLmgiCi0jaW5jbHVkZSAiSURCVHJhbnNhY3Rpb25Db29yZGlu
YXRvckxldmVsREIuaCIKKyNpbmNsdWRlICJJREJUcmFuc2FjdGlvbkNvb3JkaW5hdG9yLmgiCiAj
aW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgogI2luY2x1ZGUg
PHd0Zi9UZW1wb3JhcnlDaGFuZ2UuaD4KQEAgLTU1LDcgKzU1LDcgQEAgSURCRGF0YWJhc2VCYWNr
ZW5kTGV2ZWxEQjo6SURCRGF0YWJhc2VCYWNrZW5kTGV2ZWxEQihjb25zdCBTdHJpbmcmIG5hbWUs
IElEQkJhY2sKICAgICAsIG1fbWV0YWRhdGEobmFtZSwgSW52YWxpZElkLCAwLCBJbnZhbGlkSWQp
CiAgICAgLCBtX2lkZW50aWZpZXIodW5pcXVlSWRlbnRpZmllcikKICAgICAsIG1fZmFjdG9yeShm
YWN0b3J5KQotICAgICwgbV90cmFuc2FjdGlvbkNvb3JkaW5hdG9yKElEQlRyYW5zYWN0aW9uQ29v
cmRpbmF0b3JMZXZlbERCOjpjcmVhdGUoKSkKKyAgICAsIG1fdHJhbnNhY3Rpb25Db29yZGluYXRv
cihJREJUcmFuc2FjdGlvbkNvb3JkaW5hdG9yOjpjcmVhdGUoKSkKICAgICAsIG1fY2xvc2luZ0Nv
bm5lY3Rpb24oZmFsc2UpCiB7CiAgICAgQVNTRVJUKCFtX21ldGFkYXRhLm5hbWUuaXNOdWxsKCkp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvbGV2ZWxkYi9J
REJEYXRhYmFzZUJhY2tlbmRMZXZlbERCLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9sZXZlbGRiL0lEQkRhdGFiYXNlQmFja2VuZExldmVsREIuaAppbmRleCAzYTA1MGYzLi4w
ZjA5OGZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9sZXZl
bGRiL0lEQkRhdGFiYXNlQmFja2VuZExldmVsREIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9sZXZlbGRiL0lEQkRhdGFiYXNlQmFja2VuZExldmVsREIuaApAQCAtNDEs
NyArNDEsNyBAQCBjbGFzcyBJREJCYWNraW5nU3RvcmVJbnRlcmZhY2U7CiBjbGFzcyBJREJEYXRh
YmFzZTsKIGNsYXNzIElEQkZhY3RvcnlCYWNrZW5kSW50ZXJmYWNlOwogY2xhc3MgSURCVHJhbnNh
Y3Rpb25CYWNrZW5kSW50ZXJmYWNlOwotY2xhc3MgSURCVHJhbnNhY3Rpb25Db29yZGluYXRvckxl
dmVsREI7CitjbGFzcyBJREJUcmFuc2FjdGlvbkNvb3JkaW5hdG9yOwogCiBjbGFzcyBJREJEYXRh
YmFzZUJhY2tlbmRMZXZlbERCIDogcHVibGljIElEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZSB7
CiBwdWJsaWM6CkBAIC03NCw3ICs3NCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgY3Jl
YXRlSW5kZXgoaW50NjRfdCB0cmFuc2FjdGlvbklkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGlu
dDY0X3QgaW5kZXhJZCwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBJREJLZXlQYXRoJiwgYm9v
bCB1bmlxdWUsIGJvb2wgbXVsdGlFbnRyeSk7CiAgICAgdmlydHVhbCB2b2lkIGRlbGV0ZUluZGV4
KGludDY0X3QgdHJhbnNhY3Rpb25JZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBpbnQ2NF90IGlu
ZGV4SWQpOwogCi0gICAgSURCVHJhbnNhY3Rpb25Db29yZGluYXRvckxldmVsREIqIHRyYW5zYWN0
aW9uQ29vcmRpbmF0b3IoKSBjb25zdCB7IHJldHVybiBtX3RyYW5zYWN0aW9uQ29vcmRpbmF0b3Iu
Z2V0KCk7IH0KKyAgICBJREJUcmFuc2FjdGlvbkNvb3JkaW5hdG9yKiB0cmFuc2FjdGlvbkNvb3Jk
aW5hdG9yKCkgY29uc3QgeyByZXR1cm4gbV90cmFuc2FjdGlvbkNvb3JkaW5hdG9yLmdldCgpOyB9
CiAgICAgdm9pZCB0cmFuc2FjdGlvblN0YXJ0ZWQoSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJm
YWNlKik7CiAgICAgdm9pZCB0cmFuc2FjdGlvbkZpbmlzaGVkKElEQlRyYW5zYWN0aW9uQmFja2Vu
ZEludGVyZmFjZSopOwogICAgIHZvaWQgdHJhbnNhY3Rpb25GaW5pc2hlZEFuZENvbXBsZXRlRmly
ZWQoSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKik7CkBAIC0xMTAsNyArMTEwLDcgQEAg
cHJpdmF0ZToKICAgICAvLyBUaGlzIG1pZ2h0IG5vdCBuZWVkIHRvIGJlIGEgUmVmUHRyIHNpbmNl
IHRoZSBmYWN0b3J5J3MgbGlmZXRpbWUgaXMgdGhhdCBvZiB0aGUgcGFnZSBncm91cCwgYnV0IGl0
J3MgYmV0dGVyIHRvIGJlIGNvbnNlcnZpdGl2ZSB0aGFuIHNvcnJ5LgogICAgIFJlZlB0cjxJREJG
YWN0b3J5QmFja2VuZEludGVyZmFjZT4gbV9mYWN0b3J5OwogCi0gICAgT3duUHRyPElEQlRyYW5z
YWN0aW9uQ29vcmRpbmF0b3JMZXZlbERCPiBtX3RyYW5zYWN0aW9uQ29vcmRpbmF0b3I7CisgICAg
T3duUHRyPElEQlRyYW5zYWN0aW9uQ29vcmRpbmF0b3I+IG1fdHJhbnNhY3Rpb25Db29yZGluYXRv
cjsKICAgICBSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlPiBtX3J1bm5pbmdW
ZXJzaW9uQ2hhbmdlVHJhbnNhY3Rpb247CiAKICAgICB0eXBlZGVmIEhhc2hNYXA8aW50NjRfdCwg
SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKj4gVHJhbnNhY3Rpb25NYXA7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9sZXZlbGRiL0lEQkZhY3RvcnlC
YWNrZW5kTGV2ZWxEQi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9sZXZl
bGRiL0lEQkZhY3RvcnlCYWNrZW5kTGV2ZWxEQi5jcHAKaW5kZXggNWZhMWFjYy4uMDRlNGMxYiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvbGV2ZWxkYi9JREJG
YWN0b3J5QmFja2VuZExldmVsREIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL2xldmVsZGIvSURCRmFjdG9yeUJhY2tlbmRMZXZlbERCLmNwcApAQCAtMzQsNyArMzQs
NyBAQAogI2luY2x1ZGUgIklEQkRhdGFiYXNlQmFja2VuZExldmVsREIuaCIKICNpbmNsdWRlICJJ
REJEYXRhYmFzZUV4Y2VwdGlvbi5oIgogI2luY2x1ZGUgIklEQlRyYW5zYWN0aW9uQmFja2VuZExl
dmVsREIuaCIKLSNpbmNsdWRlICJJREJUcmFuc2FjdGlvbkNvb3JkaW5hdG9yTGV2ZWxEQi5oIgor
I2luY2x1ZGUgIklEQlRyYW5zYWN0aW9uQ29vcmRpbmF0b3IuaCIKICNpbmNsdWRlICJMb2dnaW5n
LmgiCiAjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvbGV2ZWxkYi9JREJUcmFuc2FjdGlvbkJhY2tlbmRMZXZl
bERCLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2xldmVsZGIvSURCVHJh
bnNhY3Rpb25CYWNrZW5kTGV2ZWxEQi5jcHAKaW5kZXggZTRlYTRjOC4uMWU2NmI3NCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvbGV2ZWxkYi9JREJUcmFuc2Fj
dGlvbkJhY2tlbmRMZXZlbERCLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9sZXZlbGRiL0lEQlRyYW5zYWN0aW9uQmFja2VuZExldmVsREIuY3BwCkBAIC0zNSw3ICsz
NSw3IEBACiAjaW5jbHVkZSAiSURCRGF0YWJhc2VFeGNlcHRpb24uaCIKICNpbmNsdWRlICJJREJL
ZXlSYW5nZS5oIgogI2luY2x1ZGUgIklEQlRyYW5zYWN0aW9uQmFja2VuZExldmVsREJPcGVyYXRp
b25zLmgiCi0jaW5jbHVkZSAiSURCVHJhbnNhY3Rpb25Db29yZGluYXRvckxldmVsREIuaCIKKyNp
bmNsdWRlICJJREJUcmFuc2FjdGlvbkNvb3JkaW5hdG9yLmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5o
IgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9sZXZlbGRiL0lEQlRyYW5zYWN0aW9uQmFja2VuZExldmVsREIuaCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2xldmVsZGIvSURCVHJhbnNhY3Rpb25CYWNr
ZW5kTGV2ZWxEQi5oCmluZGV4IDU1MzlkODUuLjE0OGVmZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2xldmVsZGIvSURCVHJhbnNhY3Rpb25CYWNrZW5kTGV2
ZWxEQi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2xldmVsZGIvSURC
VHJhbnNhY3Rpb25CYWNrZW5kTGV2ZWxEQi5oCkBAIC00NCw3ICs0NCw3IEBAIGNsYXNzIElEQkJh
Y2tpbmdTdG9yZUxldmVsREI7CiBjbGFzcyBJREJDdXJzb3JCYWNrZW5kTGV2ZWxEQjsKIGNsYXNz
IElEQkRhdGFiYXNlQ2FsbGJhY2tzOwogCi1jbGFzcyBJREJUcmFuc2FjdGlvbkJhY2tlbmRMZXZl
bERCIDogcHVibGljIElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSB7CitjbGFzcyBJREJU
cmFuc2FjdGlvbkJhY2tlbmRMZXZlbERCIEZJTkFMIDogcHVibGljIElEQlRyYW5zYWN0aW9uQmFj
a2VuZEludGVyZmFjZSB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8SURCVHJhbnNh
Y3Rpb25CYWNrZW5kTGV2ZWxEQj4gY3JlYXRlKElEQkRhdGFiYXNlQmFja2VuZExldmVsREIqLCBp
bnQ2NF90IHRyYW5zYWN0aW9uSWQsIFBhc3NSZWZQdHI8SURCRGF0YWJhc2VDYWxsYmFja3M+LCBj
b25zdCBWZWN0b3I8aW50NjRfdD4mIG9iamVjdFN0b3JlSWRzLCBJbmRleGVkREI6OlRyYW5zYWN0
aW9uTW9kZSk7CiAgICAgdmlydHVhbCB+SURCVHJhbnNhY3Rpb25CYWNrZW5kTGV2ZWxEQigpOwpA
QCAtNTksOSArNTksOSBAQCBwdWJsaWM6CiAgICAgICAgIHZpcnR1YWwgdm9pZCBwZXJmb3JtKCkg
PSAwOwogICAgIH07CiAKLSAgICB2b2lkIHJ1bigpOworICAgIHZpcnR1YWwgdm9pZCBydW4oKSBP
VkVSUklERTsKICAgICB2aXJ0dWFsIEluZGV4ZWREQjo6VHJhbnNhY3Rpb25Nb2RlIG1vZGUoKSBj
b25zdCBPVkVSUklERSBGSU5BTCB7IHJldHVybiBtX21vZGU7IH0KLSAgICBjb25zdCBIYXNoU2V0
PGludDY0X3Q+JiBzY29wZSgpIGNvbnN0IHsgcmV0dXJuIG1fb2JqZWN0U3RvcmVJZHM7IH0KKyAg
ICBjb25zdCBIYXNoU2V0PGludDY0X3Q+JiBzY29wZSgpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJu
IG1fb2JqZWN0U3RvcmVJZHM7IH0KICAgICB2b2lkIHNjaGVkdWxlVGFzayhQYXNzT3duUHRyPE9w
ZXJhdGlvbj4gdGFzaywgUGFzc093blB0cjxPcGVyYXRpb24+IGFib3J0VGFzayA9IG51bGxwdHIp
IHsgc2NoZWR1bGVUYXNrKElEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZTo6Tm9ybWFsVGFzaywg
dGFzaywgYWJvcnRUYXNrKTsgfQogICAgIHZvaWQgc2NoZWR1bGVUYXNrKElEQkRhdGFiYXNlQmFj
a2VuZEludGVyZmFjZTo6VGFza1R5cGUsIFBhc3NPd25QdHI8T3BlcmF0aW9uPiwgUGFzc093blB0
cjxPcGVyYXRpb24+IGFib3J0VGFzayA9IG51bGxwdHIpOwogICAgIHZvaWQgcmVnaXN0ZXJPcGVu
Q3Vyc29yKElEQkN1cnNvckJhY2tlbmRMZXZlbERCKik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9sZXZlbGRiL0lEQlRyYW5zYWN0aW9uQ29vcmRpbmF0b3JM
ZXZlbERCLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2xldmVsZGIvSURC
VHJhbnNhY3Rpb25Db29yZGluYXRvckxldmVsREIuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCBjODVhMmUxLi4wMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL2xldmVsZGIvSURCVHJhbnNhY3Rpb25Db29yZGluYXRvckxldmVsREIuY3BwCisrKyAv
ZGV2L251bGwKQEAgLTEsMTUzICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29v
Z2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwotICogYXJlIG1ldDoKLSAqCi0gKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiAg
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJB
UyBJUyIgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAotICogV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQotICog
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWQotICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKLSAqIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsKLSAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAotICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRgotICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0j
aW5jbHVkZSAiSURCVHJhbnNhY3Rpb25Db29yZGluYXRvckxldmVsREIuaCIKLQotI2lmIEVOQUJM
RShJTkRFWEVEX0RBVEFCQVNFKSAmJiBVU0UoTEVWRUxEQikKLQotI2luY2x1ZGUgIklEQkRhdGFi
YXNlQmFja2VuZExldmVsREIuaCIKLSNpbmNsdWRlICJJREJEYXRhYmFzZUNhbGxiYWNrcy5oIgot
I2luY2x1ZGUgIklEQlRyYW5zYWN0aW9uQmFja2VuZExldmVsREIuaCIKLQotbmFtZXNwYWNlIFdl
YkNvcmUgewotCi1QYXNzT3duUHRyPElEQlRyYW5zYWN0aW9uQ29vcmRpbmF0b3JMZXZlbERCPiBJ
REJUcmFuc2FjdGlvbkNvb3JkaW5hdG9yTGV2ZWxEQjo6Y3JlYXRlKCkKLXsKLSAgICByZXR1cm4g
YWRvcHRQdHIobmV3IElEQlRyYW5zYWN0aW9uQ29vcmRpbmF0b3JMZXZlbERCKCkpOwotfQotCi1J
REJUcmFuc2FjdGlvbkNvb3JkaW5hdG9yTGV2ZWxEQjo6SURCVHJhbnNhY3Rpb25Db29yZGluYXRv
ckxldmVsREIoKQotewotfQotCi1JREJUcmFuc2FjdGlvbkNvb3JkaW5hdG9yTGV2ZWxEQjo6fklE
QlRyYW5zYWN0aW9uQ29vcmRpbmF0b3JMZXZlbERCKCkKLXsKLX0KLQotdm9pZCBJREJUcmFuc2Fj
dGlvbkNvb3JkaW5hdG9yTGV2ZWxEQjo6ZGlkQ3JlYXRlVHJhbnNhY3Rpb24oSURCVHJhbnNhY3Rp
b25CYWNrZW5kTGV2ZWxEQiogdHJhbnNhY3Rpb24pCi17Ci0gICAgQVNTRVJUKCFtX3RyYW5zYWN0
aW9ucy5jb250YWlucyh0cmFuc2FjdGlvbikpOwotICAgIG1fdHJhbnNhY3Rpb25zLmFkZCh0cmFu
c2FjdGlvbiwgdHJhbnNhY3Rpb24pOwotfQotCi12b2lkIElEQlRyYW5zYWN0aW9uQ29vcmRpbmF0
b3JMZXZlbERCOjpkaWRTdGFydFRyYW5zYWN0aW9uKElEQlRyYW5zYWN0aW9uQmFja2VuZExldmVs
REIqIHRyYW5zYWN0aW9uKQotewotICAgIEFTU0VSVChtX3RyYW5zYWN0aW9ucy5jb250YWlucyh0
cmFuc2FjdGlvbikpOwotCi0gICAgbV9xdWV1ZWRUcmFuc2FjdGlvbnMuYWRkKHRyYW5zYWN0aW9u
KTsKLSAgICBwcm9jZXNzU3RhcnRlZFRyYW5zYWN0aW9ucygpOwotfQotCi12b2lkIElEQlRyYW5z
YWN0aW9uQ29vcmRpbmF0b3JMZXZlbERCOjpkaWRGaW5pc2hUcmFuc2FjdGlvbihJREJUcmFuc2Fj
dGlvbkJhY2tlbmRMZXZlbERCKiB0cmFuc2FjdGlvbikKLXsKLSAgICBBU1NFUlQobV90cmFuc2Fj
dGlvbnMuY29udGFpbnModHJhbnNhY3Rpb24pKTsKLQotICAgIGlmIChtX3F1ZXVlZFRyYW5zYWN0
aW9ucy5jb250YWlucyh0cmFuc2FjdGlvbikpIHsKLSAgICAgICAgQVNTRVJUKCFtX3N0YXJ0ZWRU
cmFuc2FjdGlvbnMuY29udGFpbnModHJhbnNhY3Rpb24pKTsKLSAgICAgICAgbV9xdWV1ZWRUcmFu
c2FjdGlvbnMucmVtb3ZlKHRyYW5zYWN0aW9uKTsKLSAgICB9IGVsc2UgaWYgKG1fc3RhcnRlZFRy
YW5zYWN0aW9ucy5jb250YWlucyh0cmFuc2FjdGlvbikpCi0gICAgICAgIG1fc3RhcnRlZFRyYW5z
YWN0aW9ucy5yZW1vdmUodHJhbnNhY3Rpb24pOwotCi0gICAgbV90cmFuc2FjdGlvbnMucmVtb3Zl
KHRyYW5zYWN0aW9uKTsKLQotICAgIHByb2Nlc3NTdGFydGVkVHJhbnNhY3Rpb25zKCk7Ci19Ci0K
LSNpZm5kZWYgTkRFQlVHCi0vLyBWZXJpZmllcyBpbnRlcm5hbCBjb25zaXN0aWVuY3kgd2hpbGUg
cmV0dXJuaW5nIHdoZXRoZXIgYW55dGhpbmcgaXMgZm91bmQuCi1ib29sIElEQlRyYW5zYWN0aW9u
Q29vcmRpbmF0b3JMZXZlbERCOjppc0FjdGl2ZShJREJUcmFuc2FjdGlvbkJhY2tlbmRMZXZlbERC
KiB0cmFuc2FjdGlvbikKLXsKLSAgICBib29sIGZvdW5kID0gZmFsc2U7Ci0gICAgaWYgKG1fcXVl
dWVkVHJhbnNhY3Rpb25zLmNvbnRhaW5zKHRyYW5zYWN0aW9uKSkKLSAgICAgICAgZm91bmQgPSB0
cnVlOwotICAgIGlmIChtX3N0YXJ0ZWRUcmFuc2FjdGlvbnMuY29udGFpbnModHJhbnNhY3Rpb24p
KSB7Ci0gICAgICAgIEFTU0VSVCghZm91bmQpOwotICAgICAgICBmb3VuZCA9IHRydWU7Ci0gICAg
fQotICAgIEFTU0VSVChmb3VuZCA9PSBtX3RyYW5zYWN0aW9ucy5jb250YWlucyh0cmFuc2FjdGlv
bikpOwotICAgIHJldHVybiBmb3VuZDsKLX0KLSNlbmRpZgotCi12b2lkIElEQlRyYW5zYWN0aW9u
Q29vcmRpbmF0b3JMZXZlbERCOjpwcm9jZXNzU3RhcnRlZFRyYW5zYWN0aW9ucygpCi17Ci0gICAg
aWYgKG1fcXVldWVkVHJhbnNhY3Rpb25zLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuOwotCi0g
ICAgQVNTRVJUKG1fc3RhcnRlZFRyYW5zYWN0aW9ucy5pc0VtcHR5KCkgfHwgKCptX3N0YXJ0ZWRU
cmFuc2FjdGlvbnMuYmVnaW4oKSktPm1vZGUoKSAhPSBJbmRleGVkREI6OlRyYW5zYWN0aW9uVmVy
c2lvbkNoYW5nZSk7Ci0KLSAgICBMaXN0SGFzaFNldDxJREJUcmFuc2FjdGlvbkJhY2tlbmRMZXZl
bERCKj46OmNvbnN0X2l0ZXJhdG9yIGl0ID0gbV9xdWV1ZWRUcmFuc2FjdGlvbnMuYmVnaW4oKTsK
LSAgICB3aGlsZSAoaXQgIT0gbV9xdWV1ZWRUcmFuc2FjdGlvbnMuZW5kKCkpIHsKLSAgICAgICAg
SURCVHJhbnNhY3Rpb25CYWNrZW5kTGV2ZWxEQiogdHJhbnNhY3Rpb24gPSAqaXQ7Ci0gICAgICAg
ICsraXQ7Ci0gICAgICAgIGlmIChjYW5SdW5UcmFuc2FjdGlvbih0cmFuc2FjdGlvbikpIHsKLSAg
ICAgICAgICAgIG1fcXVldWVkVHJhbnNhY3Rpb25zLnJlbW92ZSh0cmFuc2FjdGlvbik7Ci0gICAg
ICAgICAgICBtX3N0YXJ0ZWRUcmFuc2FjdGlvbnMuYWRkKHRyYW5zYWN0aW9uKTsKLSAgICAgICAg
ICAgIHRyYW5zYWN0aW9uLT5ydW4oKTsKLSAgICAgICAgfQotICAgIH0KLX0KLQotc3RhdGljIGJv
b2wgZG9TY29wZXNPdmVybGFwKGNvbnN0IEhhc2hTZXQ8aW50NjRfdD4mIHNjb3BlMSwgY29uc3Qg
SGFzaFNldDxpbnQ2NF90PiYgc2NvcGUyKQotewotICAgIGZvciAoSGFzaFNldDxpbnQ2NF90Pjo6
Y29uc3RfaXRlcmF0b3IgaXQgPSBzY29wZTEuYmVnaW4oKTsgaXQgIT0gc2NvcGUxLmVuZCgpOyAr
K2l0KSB7Ci0gICAgICAgIGlmIChzY29wZTIuY29udGFpbnMoKml0KSkKLSAgICAgICAgICAgIHJl
dHVybiB0cnVlOwotICAgIH0KLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KLWJvb2wgSURCVHJhbnNh
Y3Rpb25Db29yZGluYXRvckxldmVsREI6OmNhblJ1blRyYW5zYWN0aW9uKElEQlRyYW5zYWN0aW9u
QmFja2VuZExldmVsREIqIHRyYW5zYWN0aW9uKQotewotICAgIEFTU0VSVChtX3F1ZXVlZFRyYW5z
YWN0aW9ucy5jb250YWlucyh0cmFuc2FjdGlvbikpOwotICAgIHN3aXRjaCAodHJhbnNhY3Rpb24t
Pm1vZGUoKSkgewotICAgIGNhc2UgSW5kZXhlZERCOjpUcmFuc2FjdGlvblZlcnNpb25DaGFuZ2U6
Ci0gICAgICAgIEFTU0VSVChtX3F1ZXVlZFRyYW5zYWN0aW9ucy5zaXplKCkgPT0gMSk7Ci0gICAg
ICAgIEFTU0VSVChtX3N0YXJ0ZWRUcmFuc2FjdGlvbnMuaXNFbXB0eSgpKTsKLSAgICAgICAgcmV0
dXJuIHRydWU7Ci0KLSAgICBjYXNlIEluZGV4ZWREQjo6VHJhbnNhY3Rpb25SZWFkT25seToKLSAg
ICAgICAgcmV0dXJuIHRydWU7Ci0KLSAgICBjYXNlIEluZGV4ZWREQjo6VHJhbnNhY3Rpb25SZWFk
V3JpdGU6Ci0gICAgICAgIGZvciAoSGFzaFNldDxJREJUcmFuc2FjdGlvbkJhY2tlbmRMZXZlbERC
Kj46OmNvbnN0X2l0ZXJhdG9yIGl0ID0gbV9zdGFydGVkVHJhbnNhY3Rpb25zLmJlZ2luKCk7IGl0
ICE9IG1fc3RhcnRlZFRyYW5zYWN0aW9ucy5lbmQoKTsgKytpdCkgewotICAgICAgICAgICAgaWYg
KCgqaXQpLT5tb2RlKCkgPT0gSW5kZXhlZERCOjpUcmFuc2FjdGlvblJlYWRXcml0ZSAmJiBkb1Nj
b3Blc092ZXJsYXAodHJhbnNhY3Rpb24tPnNjb3BlKCksICgqaXQpLT5zY29wZSgpKSkKLSAgICAg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0KLSAgICAgICAgZm9yIChMaXN0SGFz
aFNldDxJREJUcmFuc2FjdGlvbkJhY2tlbmRMZXZlbERCKj46OmNvbnN0X2l0ZXJhdG9yIGl0ID0g
bV9xdWV1ZWRUcmFuc2FjdGlvbnMuYmVnaW4oKTsgKml0ICE9IHRyYW5zYWN0aW9uOyArK2l0KSB7
Ci0gICAgICAgICAgICBBU1NFUlQoaXQgIT0gbV9xdWV1ZWRUcmFuc2FjdGlvbnMuZW5kKCkpOwot
ICAgICAgICAgICAgaWYgKCgqaXQpLT5tb2RlKCkgPT0gSW5kZXhlZERCOjpUcmFuc2FjdGlvblJl
YWRXcml0ZSAmJiBkb1Njb3Blc092ZXJsYXAodHJhbnNhY3Rpb24tPnNjb3BlKCksICgqaXQpLT5z
Y29wZSgpKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0KLSAgICAg
ICAgcmV0dXJuIHRydWU7Ci0gICAgfQotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJl
dHVybiBmYWxzZTsKLX0KLQotfTsKLQotI2VuZGlmIC8vIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNF
KSAmJiBVU0UoTEVWRUxEQikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL2xldmVsZGIvSURCVHJhbnNhY3Rpb25Db29yZGluYXRvckxldmVsREIuaCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2xldmVsZGIvSURCVHJhbnNhY3Rpb25Db29yZGlu
YXRvckxldmVsREIuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTYxYTZiNC4uMDAw
MDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9sZXZlbGRiL0lEQlRy
YW5zYWN0aW9uQ29vcmRpbmF0b3JMZXZlbERCLmgKKysrIC9kZXYvbnVsbApAQCAtMSw3MSArMCww
IEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKgot
ICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQotICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKLSAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFIElNUExJRUQKLSAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKLSAqIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTCi0gKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7Ci0gKiBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQKLSAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKLSAqIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCi0gKi8KLQotI2lmbmRlZiBJREJUcmFuc2FjdGlvbkNvb3JkaW5hdG9yTGV2ZWxEQl9oCi0j
ZGVmaW5lIElEQlRyYW5zYWN0aW9uQ29vcmRpbmF0b3JMZXZlbERCX2gKLQotI2lmIEVOQUJMRShJ
TkRFWEVEX0RBVEFCQVNFKQotCi0jaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KLSNpbmNsdWRlIDx3
dGYvTGlzdEhhc2hTZXQuaD4KLSNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+Ci0KLW5hbWVzcGFjZSBX
ZWJDb3JlIHsKLQotY2xhc3MgSURCVHJhbnNhY3Rpb25CYWNrZW5kTGV2ZWxEQjsKLQotLy8gVHJh
bnNhY3Rpb25zIGFyZSBleGVjdXRlZCBpbiB0aGUgb3JkZXIgdGhlIHdlcmUgY3JlYXRlZC4KLWNs
YXNzIElEQlRyYW5zYWN0aW9uQ29vcmRpbmF0b3JMZXZlbERCIHsKLXB1YmxpYzoKLSAgICBzdGF0
aWMgUGFzc093blB0cjxJREJUcmFuc2FjdGlvbkNvb3JkaW5hdG9yTGV2ZWxEQj4gY3JlYXRlKCk7
Ci0gICAgdmlydHVhbCB+SURCVHJhbnNhY3Rpb25Db29yZGluYXRvckxldmVsREIoKTsKLQotICAg
IC8vIENhbGxlZCBieSB0cmFuc2FjdGlvbnMgYXMgdGhleSBzdGFydCBhbmQgZmluaXNoLgotICAg
IHZvaWQgZGlkQ3JlYXRlVHJhbnNhY3Rpb24oSURCVHJhbnNhY3Rpb25CYWNrZW5kTGV2ZWxEQiop
OwotICAgIHZvaWQgZGlkU3RhcnRUcmFuc2FjdGlvbihJREJUcmFuc2FjdGlvbkJhY2tlbmRMZXZl
bERCKik7Ci0gICAgdm9pZCBkaWRGaW5pc2hUcmFuc2FjdGlvbihJREJUcmFuc2FjdGlvbkJhY2tl
bmRMZXZlbERCKik7Ci0KLSNpZm5kZWYgTkRFQlVHCi0gICAgYm9vbCBpc0FjdGl2ZShJREJUcmFu
c2FjdGlvbkJhY2tlbmRMZXZlbERCKik7Ci0jZW5kaWYKLQotcHJpdmF0ZToKLSAgICBJREJUcmFu
c2FjdGlvbkNvb3JkaW5hdG9yTGV2ZWxEQigpOwotCi0gICAgdm9pZCBwcm9jZXNzU3RhcnRlZFRy
YW5zYWN0aW9ucygpOwotICAgIGJvb2wgY2FuUnVuVHJhbnNhY3Rpb24oSURCVHJhbnNhY3Rpb25C
YWNrZW5kTGV2ZWxEQiopOwotCi0gICAgLy8gVGhpcyBpcyBqdXN0IGFuIGVmZmljaWVudCB3YXkg
dG8ga2VlcCByZWZlcmVuY2VzIHRvIGFsbCB0cmFuc2FjdGlvbnMuCi0gICAgSGFzaE1hcDxJREJU
cmFuc2FjdGlvbkJhY2tlbmRMZXZlbERCKiwgUmVmUHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZExl
dmVsREI+ID4gbV90cmFuc2FjdGlvbnM7Ci0gICAgLy8gVHJhbnNhY3Rpb25zIGluIGRpZmZlcmVu
dCBzdGF0ZXMgYXJlIGdyb3VwZWQgYmVsb3cuCi0gICAgTGlzdEhhc2hTZXQ8SURCVHJhbnNhY3Rp
b25CYWNrZW5kTGV2ZWxEQio+IG1fcXVldWVkVHJhbnNhY3Rpb25zOwotICAgIEhhc2hTZXQ8SURC
VHJhbnNhY3Rpb25CYWNrZW5kTGV2ZWxEQio+IG1fc3RhcnRlZFRyYW5zYWN0aW9uczsKLX07Ci0K
LX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShJTkRFWEVEX0RBVEFC
QVNFKQotCi0jZW5kaWYgLy8gSURCVHJhbnNhY3Rpb25Db29yZGluYXRvckxldmVsREJfaApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
IGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4
IDNiNzk4MDEuLjRiZDg3YWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTE4MTEsNiArMTgxMSw4IEBACiAJCTUxRTNGOUQ2MERB
MDVFMUQwMDI1MDkxMSAvKiBKU1N0b3JhZ2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNTFFM0Y5RDQwREEwNUUxRDAwMjUwOTExIC8qIEpTU3RvcmFn
ZS5jcHAgKi87IH07CiAJCTUxRTQxNDM0MTZBNjU5NjMwMEM2MzNDNyAvKiBSZXNvdXJjZUhhbmRs
ZVR5cGVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1
MUU0MTQzMjE2QTY1OTUxMDBDNjMzQzcgLyogUmVzb3VyY2VIYW5kbGVUeXBlcy5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTUxRTY4MjEwMTYzODcz
MDIwMDNCQkYzQyAvKiBMb2FkZXJTdHJhdGVneS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNTFFNjgyMEYxNjM4NzMwMjAwM0JCRjNDIC8qIExvYWRlclN0
cmF0ZWd5LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
KwkJNTFFQUM1NjcxODE1RUQzRTAwNEYxQkE0IC8qIElEQlRyYW5zYWN0aW9uQ29vcmRpbmF0b3Iu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFFQUM1
NjUxODE1RUQzRTAwNEYxQkE0IC8qIElEQlRyYW5zYWN0aW9uQ29vcmRpbmF0b3IuY3BwICovOyB9
OworCQk1MUVBQzU2ODE4MTVFRDNFMDA0RjFCQTQgLyogSURCVHJhbnNhY3Rpb25Db29yZGluYXRv
ci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFFQUM1
NjYxODE1RUQzRTAwNEYxQkE0IC8qIElEQlRyYW5zYWN0aW9uQ29vcmRpbmF0b3IuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1MUVDOTI2NTBDRTkw
REQ0MDBGOTAzMDggLyogSlNDdXN0b21TUUxTdGF0ZW1lbnRFcnJvckNhbGxiYWNrLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxRUM5MjVEMENFOTBE
RDQwMEY5MDMwOCAvKiBKU0N1c3RvbVNRTFN0YXRlbWVudEVycm9yQ2FsbGJhY2suY3BwICovOyB9
OwogCQk1MUY2RTBBMzE4MTFEMjUyMDA1OEEwMEEgLyogSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50
ZXJmYWNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1
MUY2RTA4RjE4MTFEMjUyMDA1OEEwMEEgLyogSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNl
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTFG
QTJENzgxNTIxMzJCMzAwQzFCQTBCIC8qIERPTVdpbmRvd0V4dGVuc2lvbi5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE3RkJBMTgxNTFBQTcxQjAwQjU3
OTU5IC8qIERPTVdpbmRvd0V4dGVuc2lvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CkBAIC04NDA5LDYgKzg0MTEsOCBAQAogCQk1MUUzRjlENTBEQTA1
RTFEMDAyNTA5MTEgLyogSlNTdG9yYWdlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEpTU3RvcmFnZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MUU0MTQzMjE2
QTY1OTUxMDBDNjMzQzcgLyogUmVzb3VyY2VIYW5kbGVUeXBlcy5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBSZXNvdXJjZUhhbmRsZVR5cGVzLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTUxRTY4MjBGMTYzODczMDIwMDNCQkYzQyAvKiBMb2FkZXJTdHJhdGVneS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBMb2FkZXJTdHJhdGVneS5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MUVBQzU2NTE4MTVFRDNFMDA0RjFCQTQgLyogSURC
VHJhbnNhY3Rpb25Db29yZGluYXRvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBJREJUcmFuc2FjdGlvbkNvb3JkaW5hdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJNTFFQUM1NjYxODE1RUQzRTAwNEYxQkE0IC8qIElEQlRyYW5zYWN0aW9uQ29v
cmRpbmF0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSURCVHJhbnNhY3Rp
b25Db29yZGluYXRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MUVDOTI1RDBD
RTkwREQ0MDBGOTAzMDggLyogSlNDdXN0b21TUUxTdGF0ZW1lbnRFcnJvckNhbGxiYWNrLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTQ3VzdG9tU1FMU3RhdGVtZW50
RXJyb3JDYWxsYmFjay5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxRjZBM0Q1
MDY2M0JGMDQwMDREMjkxOSAvKiBIVE1MQ2FudmFzRWxlbWVudC5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGluZGVudFdpZHRoID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBIVE1MQ2FudmFzRWxlbWVu
dC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHRhYldpZHRoID0gODsgdXNlc1RhYnMgPSAw
OyB9OwogCQk1MUY2QTNENjA2NjNCRjA0MDA0RDI5MTkgLyogSFRNTENhbnZhc0VsZW1lbnQuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgaW5kZW50V2lk
dGggPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSFRNTENh
bnZhc0VsZW1lbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgdGFiV2lkdGggPSA4OyB1c2Vz
VGFicyA9IDA7IH07CkBAIC0xNjc1Niw2ICsxNjc2MCw4IEBACiAJCQkJNTFENzE5QTUxODExMDZF
MDAwMTZEQzUxIC8qIElEQlRyYW5zYWN0aW9uLmggKi8sCiAJCQkJNTFENzE5QTYxODExMDZFMDAw
MTZEQzUxIC8qIElEQlRyYW5zYWN0aW9uLmlkbCAqLywKIAkJCQk1MUY2RTA4RjE4MTFEMjUyMDA1
OEEwMEEgLyogSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlLmggKi8sCisJCQkJNTFFQUM1
NjUxODE1RUQzRTAwNEYxQkE0IC8qIElEQlRyYW5zYWN0aW9uQ29vcmRpbmF0b3IuY3BwICovLAor
CQkJCTUxRUFDNTY2MTgxNUVEM0UwMDRGMUJBNCAvKiBJREJUcmFuc2FjdGlvbkNvb3JkaW5hdG9y
LmggKi8sCiAJCQkJNTFENzE5QUIxODExMDZFMDAwMTZEQzUxIC8qIElEQlZlcnNpb25DaGFuZ2VF
dmVudC5jcHAgKi8sCiAJCQkJNTFENzE5QUMxODExMDZFMDAwMTZEQzUxIC8qIElEQlZlcnNpb25D
aGFuZ2VFdmVudC5oICovLAogCQkJCTUxRDcxOUFEMTgxMTA2RTAwMDE2REM1MSAvKiBJREJWZXJz
aW9uQ2hhbmdlRXZlbnQuaWRsICovLApAQCAtMjI4MjgsNiArMjI4MzQsNyBAQAogCQkJCTJFMkQ5
OUNFMTBFMkJCREEwMDQ5NjMzNyAvKiBKU0Jsb2IuaCBpbiBIZWFkZXJzICovLAogCQkJCTE0NDlF
MjRDMTA3RDRBODQwMEI1NzkzRiAvKiBKU0NhbGxiYWNrRGF0YS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJNjVERjMyM0EwOUQxREU2NTAwMEJFMzI1IC8qIEpTQ2FudmFzR3JhZGllbnQuaCBpbiBIZWFk
ZXJzICovLAorCQkJCTUxRUFDNTY4MTgxNUVEM0UwMDRGMUJBNCAvKiBJREJUcmFuc2FjdGlvbkNv
b3JkaW5hdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQk2NURGMzIzQzA5RDFERTY1MDAwQkUzMjUg
LyogSlNDYW52YXNQYXR0ZXJuLmggaW4gSGVhZGVycyAqLywKIAkJCQk2NURGMzIzQzA5RDFERTY1
MDAxQkUzMjUgLyogSlNDYW52YXNQcm94eS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTRENThFQjUx
N0I0REJEQzAwQ0JEQ0E4IC8qIFN0eWxlUmVzb2x2ZUZvckRvY3VtZW50LmggaW4gSGVhZGVycyAq
LywKQEAgLTI2MzU3LDYgKzI2MzY0LDcgQEAKIAkJCQkxQUU4MkZFQzBDQUIwN0VFMDAyMjM3QUUg
LyogSlNTUUxSZXN1bHRTZXQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUFGRTExOTkwQ0JGRkND
NDAwMzAxN0ZBIC8qIEpTU1FMUmVzdWx0U2V0Um93TGlzdC5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQk1MURDRTgwMjBDQUM5RjFDMDA0ODgzNTggLyogSlNTUUxSZXN1bHRTZXRSb3dMaXN0Q3VzdG9t
LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTUxRUFDNTY3MTgxNUVEM0UwMDRGMUJBNCAvKiBJREJU
cmFuc2FjdGlvbkNvb3JkaW5hdG9yLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUI1OURENkE2MTE5
MDJBNjIwMDdFOTY4NCAvKiBKU1NRTFN0YXRlbWVudENhbGxiYWNrLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCUI1OURENkFBMTE5MDJBNzEwMDdFOTY4NCAvKiBKU1NRTFN0YXRlbWVudEVycm9yQ2Fs
bGJhY2suY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTE0Qzc2MzgwQ0U5MjI1RTAwN0VGM0NEIC8q
IEpTU1FMVHJhbnNhY3Rpb24uY3BwIGluIFNvdXJjZXMgKi8sCg==
</data>
<flag name="commit-queue"
          id="237385"
          type_id="3"
          status="-"
          setter="eflews.bot"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>214792</attachid>
            <date>2013-10-21 16:31:12 -0700</date>
            <delta_ts>2013-10-21 16:47:48 -0700</delta_ts>
            <desc>Patch v2 </desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>34318</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYkNv
cmUvQ01ha2VMaXN0cy50eHQKaW5kZXggMzQyMGI2Mi4uYWQ3NWRjZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0
cy50eHQKQEAgLTc3OSw2ICs3NzksNyBAQCBzZXQoV2ViQ29yZV9TT1VSQ0VTCiAgICAgTW9kdWxl
cy9pbmRleGVkZGIvSURCUGVuZGluZ1RyYW5zYWN0aW9uTW9uaXRvci5jcHAKICAgICBNb2R1bGVz
L2luZGV4ZWRkYi9JREJSZXF1ZXN0LmNwcAogICAgIE1vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5z
YWN0aW9uLmNwcAorICAgIE1vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uQ29vcmRpbmF0
b3JMZXZlbERCLmNwcAogICAgIE1vZHVsZXMvaW5kZXhlZGRiL0lEQlZlcnNpb25DaGFuZ2VFdmVu
dC5jcHAKICAgICBNb2R1bGVzL2luZGV4ZWRkYi9QYWdlR3JvdXBJbmRleGVkRGF0YWJhc2UuY3Bw
CiAgICAgTW9kdWxlcy9pbmRleGVkZGIvV29ya2VyR2xvYmFsU2NvcGVJbmRleGVkRGF0YWJhc2Uu
Y3BwCkBAIC03OTAsNyArNzkxLDYgQEAgc2V0KFdlYkNvcmVfU09VUkNFUwogICAgIE1vZHVsZXMv
aW5kZXhlZGRiL2xldmVsZGIvSURCT2JqZWN0U3RvcmVCYWNrZW5kTGV2ZWxEQi5jcHAKICAgICBN
b2R1bGVzL2luZGV4ZWRkYi9sZXZlbGRiL0lEQlRyYW5zYWN0aW9uQmFja2VuZExldmVsREIuY3Bw
CiAgICAgTW9kdWxlcy9pbmRleGVkZGIvbGV2ZWxkYi9JREJUcmFuc2FjdGlvbkJhY2tlbmRMZXZl
bERCT3BlcmF0aW9ucy5jcHAKLSAgICBNb2R1bGVzL2luZGV4ZWRkYi9sZXZlbGRiL0lEQlRyYW5z
YWN0aW9uQ29vcmRpbmF0b3JMZXZlbERCLmNwcAogCiAgICAgTW9kdWxlcy9tZWRpYXNvdXJjZS9N
ZWRpYVNvdXJjZS5jcHAKICAgICBNb2R1bGVzL21lZGlhc291cmNlL01lZGlhU291cmNlUmVnaXN0
cnkuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cKaW5kZXggMzIzY2IxZC4uNDMwZWJkOSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1
ICsxLDQyIEBACiAyMDEzLTEwLTIxICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4K
IAorICAgICAgICBNYWtlIElEQlRyYW5zYWN0aW9uQ29vcmRpbmF0b3JMZXZlbERCIGNyb3NzIHBs
YXRmb3JtCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
MjMxMjQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAq
IENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIEdOVW1ha2VmaWxlLmxpc3QuYW06CisgICAgICAg
ICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorCisgICAgICAgIE1ha2UgbW9y
ZSBtZXRob2RzIHB1cmUgdmlydHVhbCBpbiB0aGUgaW50ZXJmYWNlOgorICAgICAgICAqIE1vZHVs
ZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZS5oOgorICAgICAgICAq
IE1vZHVsZXMvaW5kZXhlZGRiL2xldmVsZGIvSURCVHJhbnNhY3Rpb25CYWNrZW5kTGV2ZWxEQi5j
cHA6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvbGV2ZWxkYi9JREJUcmFuc2FjdGlvbkJh
Y2tlbmRMZXZlbERCLmg6CisKKyAgICAgICAgVXBkYXRlIHRoZSBuYW1lIG9mIHRoZSBjbGFzcywg
YW5kIHVzZSBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UgaW5zdGVhZCBvZiBJREJUcmFu
c2FjdGlvbkJhY2tlbmRMZXZlREI6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCVHJh
bnNhY3Rpb25Db29yZGluYXRvci5jcHA6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9sZXZlbGRiL0lEQlRyYW5zYWN0aW9uQ29vcmRpbmF0b3JMZXZlbERCLmNw
cC4KKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uQ29vcmRpbmF0b3I6OmNyZWF0ZSk6
CisgICAgICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbkNvb3JkaW5hdG9yOjpJREJUcmFuc2Fj
dGlvbkNvb3JkaW5hdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uQ29vcmRp
bmF0b3I6On5JREJUcmFuc2FjdGlvbkNvb3JkaW5hdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OklE
QlRyYW5zYWN0aW9uQ29vcmRpbmF0b3I6OmRpZENyZWF0ZVRyYW5zYWN0aW9uKToKKyAgICAgICAg
KFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uQ29vcmRpbmF0b3I6OmRpZFN0YXJ0VHJhbnNhY3Rpb24p
OgorICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb25Db29yZGluYXRvcjo6ZGlkRmluaXNo
VHJhbnNhY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb25Db29yZGluYXRv
cjo6aXNBY3RpdmUpOgorICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb25Db29yZGluYXRv
cjo6cHJvY2Vzc1N0YXJ0ZWRUcmFuc2FjdGlvbnMpOgorICAgICAgICAoV2ViQ29yZTo6ZG9TY29w
ZXNPdmVybGFwKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uQ29vcmRpbmF0b3I6
OmNhblJ1blRyYW5zYWN0aW9uKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFu
c2FjdGlvbkNvb3JkaW5hdG9yLmg6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9sZXZlbGRiL0lEQlRyYW5zYWN0aW9uQ29vcmRpbmF0b3JMZXZlbERCLmguCisK
KyAgICAgICAgVXBkYXRlIHRoZSBuYW1lIG9mIHRoZSBjbGFzcyBlbHNld2hlcmU6CisgICAgICAg
ICogTW9kdWxlcy9pbmRleGVkZGIvbGV2ZWxkYi9JREJEYXRhYmFzZUJhY2tlbmRMZXZlbERCLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNlQmFja2VuZExldmVsREI6OklEQkRhdGFi
YXNlQmFja2VuZExldmVsREIpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL2xldmVsZGIv
SURCRGF0YWJhc2VCYWNrZW5kTGV2ZWxEQi5oOgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJh
c2VCYWNrZW5kTGV2ZWxEQjo6dHJhbnNhY3Rpb25Db29yZGluYXRvcik6CisgICAgICAgICogTW9k
dWxlcy9pbmRleGVkZGIvbGV2ZWxkYi9JREJGYWN0b3J5QmFja2VuZExldmVsREIuY3BwOgorCisy
MDEzLTEwLTIxICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KKwogICAgICAgICBU
cmFuc2l0aW9uIG1vc3QgdXNlIG9mIElEQkJhY2tpbmdTdG9yZUxldmVsREIgdG8gSURCQmFja2lu
Z1N0b3JlSW50ZXJmYWNlCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xMjMxMDUKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUu
bGlzdC5hbSBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KaW5kZXggZTJiMjJi
ZC4uZDc1YTBhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5h
bQorKysgYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCkBAIC0xODQ3LDExICsx
ODQ3LDExIEBAIHdlYmNvcmVfbW9kdWxlc19zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9sZXZlbGRiL0lEQlRyYW5zYWN0aW9uQmFja2VuZExldmVsREIuaCBc
CiAJU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvbGV2ZWxkYi9JREJUcmFuc2FjdGlv
bkJhY2tlbmRMZXZlbERCT3BlcmF0aW9ucy5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL2xldmVsZGIvSURCVHJhbnNhY3Rpb25CYWNrZW5kTGV2ZWxEQk9wZXJhdGlvbnMu
aCBcCi0JU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvbGV2ZWxkYi9JREJUcmFuc2Fj
dGlvbkNvb3JkaW5hdG9yTGV2ZWxEQi5jcHAgXAotCVNvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL2xldmVsZGIvSURCVHJhbnNhY3Rpb25Db29yZGluYXRvckxldmVsREIuaCBcCiAJU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb24uY3BwIFwKIAlTb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5oIFwKIAlTb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2Uu
aCBcCisJU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb25Db29y
ZGluYXRvci5jcHAgXAorCVNvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5z
YWN0aW9uQ29vcmRpbmF0b3IuaCBcCiAJU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
SURCVmVyc2lvbkNoYW5nZUV2ZW50LmNwcCBcCiAJU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvSURCVmVyc2lvbkNoYW5nZUV2ZW50LmggXAogCVNvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL0luZGV4ZWREQi5oIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZS5oIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlLmgK
aW5kZXggZjcyNmI1ZTIuLjNjMDAwNjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFj
ZS5oCkBAIC01Miw5ICs1MiwxMSBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIEluZGV4ZWREQjo6
VHJhbnNhY3Rpb25Nb2RlIG1vZGUoKSBjb25zdCA9IDA7CiAKKyAgICB2aXJ0dWFsIHZvaWQgcnVu
KCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBjb21taXQoKSA9IDA7CiAgICAgdmlydHVhbCB2b2lk
IGFib3J0KCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBhYm9ydChQYXNzUmVmUHRyPElEQkRhdGFi
YXNlRXJyb3I+KSA9IDA7CisgICAgdmlydHVhbCBjb25zdCBIYXNoU2V0PGludDY0X3Q+JiBzY29w
ZSgpIGNvbnN0ID0gMDsKIAogICAgIHZpcnR1YWwgdm9pZCBzY2hlZHVsZUNyZWF0ZU9iamVjdFN0
b3JlT3BlcmF0aW9uKGNvbnN0IElEQk9iamVjdFN0b3JlTWV0YWRhdGEmKSA9IDA7CiAgICAgdmly
dHVhbCB2b2lkIHNjaGVkdWxlRGVsZXRlT2JqZWN0U3RvcmVPcGVyYXRpb24oY29uc3QgSURCT2Jq
ZWN0U3RvcmVNZXRhZGF0YSYpID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uQ29vcmRpbmF0b3IuY3BwIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb25Db29yZGluYXRvci5jcHAKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWJiNmU5MQotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uQ29vcmRpbmF0
b3IuY3BwCkBAIC0wLDAgKzEsMTUzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2ds
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMg
SVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2lu
Y2x1ZGUgIklEQlRyYW5zYWN0aW9uQ29vcmRpbmF0b3IuaCIKKworI2lmIEVOQUJMRShJTkRFWEVE
X0RBVEFCQVNFKQorCisjaW5jbHVkZSAiSURCRGF0YWJhc2VCYWNrZW5kTGV2ZWxEQi5oIgorI2lu
Y2x1ZGUgIklEQkRhdGFiYXNlQ2FsbGJhY2tzLmgiCisjaW5jbHVkZSAiSURCVHJhbnNhY3Rpb25C
YWNrZW5kSW50ZXJmYWNlLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworUGFzc093blB0cjxJ
REJUcmFuc2FjdGlvbkNvb3JkaW5hdG9yPiBJREJUcmFuc2FjdGlvbkNvb3JkaW5hdG9yOjpjcmVh
dGUoKQoreworICAgIHJldHVybiBhZG9wdFB0cihuZXcgSURCVHJhbnNhY3Rpb25Db29yZGluYXRv
cigpKTsKK30KKworSURCVHJhbnNhY3Rpb25Db29yZGluYXRvcjo6SURCVHJhbnNhY3Rpb25Db29y
ZGluYXRvcigpCit7Cit9CisKK0lEQlRyYW5zYWN0aW9uQ29vcmRpbmF0b3I6On5JREJUcmFuc2Fj
dGlvbkNvb3JkaW5hdG9yKCkKK3sKK30KKwordm9pZCBJREJUcmFuc2FjdGlvbkNvb3JkaW5hdG9y
OjpkaWRDcmVhdGVUcmFuc2FjdGlvbihJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqIHRy
YW5zYWN0aW9uKQoreworICAgIEFTU0VSVCghbV90cmFuc2FjdGlvbnMuY29udGFpbnModHJhbnNh
Y3Rpb24pKTsKKyAgICBtX3RyYW5zYWN0aW9ucy5hZGQodHJhbnNhY3Rpb24sIHRyYW5zYWN0aW9u
KTsKK30KKwordm9pZCBJREJUcmFuc2FjdGlvbkNvb3JkaW5hdG9yOjpkaWRTdGFydFRyYW5zYWN0
aW9uKElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSogdHJhbnNhY3Rpb24pCit7CisgICAg
QVNTRVJUKG1fdHJhbnNhY3Rpb25zLmNvbnRhaW5zKHRyYW5zYWN0aW9uKSk7CisKKyAgICBtX3F1
ZXVlZFRyYW5zYWN0aW9ucy5hZGQodHJhbnNhY3Rpb24pOworICAgIHByb2Nlc3NTdGFydGVkVHJh
bnNhY3Rpb25zKCk7Cit9CisKK3ZvaWQgSURCVHJhbnNhY3Rpb25Db29yZGluYXRvcjo6ZGlkRmlu
aXNoVHJhbnNhY3Rpb24oSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKiB0cmFuc2FjdGlv
bikKK3sKKyAgICBBU1NFUlQobV90cmFuc2FjdGlvbnMuY29udGFpbnModHJhbnNhY3Rpb24pKTsK
KworICAgIGlmIChtX3F1ZXVlZFRyYW5zYWN0aW9ucy5jb250YWlucyh0cmFuc2FjdGlvbikpIHsK
KyAgICAgICAgQVNTRVJUKCFtX3N0YXJ0ZWRUcmFuc2FjdGlvbnMuY29udGFpbnModHJhbnNhY3Rp
b24pKTsKKyAgICAgICAgbV9xdWV1ZWRUcmFuc2FjdGlvbnMucmVtb3ZlKHRyYW5zYWN0aW9uKTsK
KyAgICB9IGVsc2UgaWYgKG1fc3RhcnRlZFRyYW5zYWN0aW9ucy5jb250YWlucyh0cmFuc2FjdGlv
bikpCisgICAgICAgIG1fc3RhcnRlZFRyYW5zYWN0aW9ucy5yZW1vdmUodHJhbnNhY3Rpb24pOwor
CisgICAgbV90cmFuc2FjdGlvbnMucmVtb3ZlKHRyYW5zYWN0aW9uKTsKKworICAgIHByb2Nlc3NT
dGFydGVkVHJhbnNhY3Rpb25zKCk7Cit9CisKKyNpZm5kZWYgTkRFQlVHCisvLyBWZXJpZmllcyBp
bnRlcm5hbCBjb25zaXN0aWVuY3kgd2hpbGUgcmV0dXJuaW5nIHdoZXRoZXIgYW55dGhpbmcgaXMg
Zm91bmQuCitib29sIElEQlRyYW5zYWN0aW9uQ29vcmRpbmF0b3I6OmlzQWN0aXZlKElEQlRyYW5z
YWN0aW9uQmFja2VuZEludGVyZmFjZSogdHJhbnNhY3Rpb24pCit7CisgICAgYm9vbCBmb3VuZCA9
IGZhbHNlOworICAgIGlmIChtX3F1ZXVlZFRyYW5zYWN0aW9ucy5jb250YWlucyh0cmFuc2FjdGlv
bikpCisgICAgICAgIGZvdW5kID0gdHJ1ZTsKKyAgICBpZiAobV9zdGFydGVkVHJhbnNhY3Rpb25z
LmNvbnRhaW5zKHRyYW5zYWN0aW9uKSkgeworICAgICAgICBBU1NFUlQoIWZvdW5kKTsKKyAgICAg
ICAgZm91bmQgPSB0cnVlOworICAgIH0KKyAgICBBU1NFUlQoZm91bmQgPT0gbV90cmFuc2FjdGlv
bnMuY29udGFpbnModHJhbnNhY3Rpb24pKTsKKyAgICByZXR1cm4gZm91bmQ7Cit9CisjZW5kaWYK
Kwordm9pZCBJREJUcmFuc2FjdGlvbkNvb3JkaW5hdG9yOjpwcm9jZXNzU3RhcnRlZFRyYW5zYWN0
aW9ucygpCit7CisgICAgaWYgKG1fcXVldWVkVHJhbnNhY3Rpb25zLmlzRW1wdHkoKSkKKyAgICAg
ICAgcmV0dXJuOworCisgICAgQVNTRVJUKG1fc3RhcnRlZFRyYW5zYWN0aW9ucy5pc0VtcHR5KCkg
fHwgKCptX3N0YXJ0ZWRUcmFuc2FjdGlvbnMuYmVnaW4oKSktPm1vZGUoKSAhPSBJbmRleGVkREI6
OlRyYW5zYWN0aW9uVmVyc2lvbkNoYW5nZSk7CisKKyAgICBMaXN0SGFzaFNldDxJREJUcmFuc2Fj
dGlvbkJhY2tlbmRJbnRlcmZhY2UqPjo6Y29uc3RfaXRlcmF0b3IgaXQgPSBtX3F1ZXVlZFRyYW5z
YWN0aW9ucy5iZWdpbigpOworICAgIHdoaWxlIChpdCAhPSBtX3F1ZXVlZFRyYW5zYWN0aW9ucy5l
bmQoKSkgeworICAgICAgICBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqIHRyYW5zYWN0
aW9uID0gKml0OworICAgICAgICArK2l0OworICAgICAgICBpZiAoY2FuUnVuVHJhbnNhY3Rpb24o
dHJhbnNhY3Rpb24pKSB7CisgICAgICAgICAgICBtX3F1ZXVlZFRyYW5zYWN0aW9ucy5yZW1vdmUo
dHJhbnNhY3Rpb24pOworICAgICAgICAgICAgbV9zdGFydGVkVHJhbnNhY3Rpb25zLmFkZCh0cmFu
c2FjdGlvbik7CisgICAgICAgICAgICB0cmFuc2FjdGlvbi0+cnVuKCk7CisgICAgICAgIH0KKyAg
ICB9Cit9CisKK3N0YXRpYyBib29sIGRvU2NvcGVzT3ZlcmxhcChjb25zdCBIYXNoU2V0PGludDY0
X3Q+JiBzY29wZTEsIGNvbnN0IEhhc2hTZXQ8aW50NjRfdD4mIHNjb3BlMikKK3sKKyAgICBmb3Ig
KEhhc2hTZXQ8aW50NjRfdD46OmNvbnN0X2l0ZXJhdG9yIGl0ID0gc2NvcGUxLmJlZ2luKCk7IGl0
ICE9IHNjb3BlMS5lbmQoKTsgKytpdCkgeworICAgICAgICBpZiAoc2NvcGUyLmNvbnRhaW5zKCpp
dCkpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgcmV0dXJuIGZhbHNlOwor
fQorCitib29sIElEQlRyYW5zYWN0aW9uQ29vcmRpbmF0b3I6OmNhblJ1blRyYW5zYWN0aW9uKElE
QlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSogdHJhbnNhY3Rpb24pCit7CisgICAgQVNTRVJU
KG1fcXVldWVkVHJhbnNhY3Rpb25zLmNvbnRhaW5zKHRyYW5zYWN0aW9uKSk7CisgICAgc3dpdGNo
ICh0cmFuc2FjdGlvbi0+bW9kZSgpKSB7CisgICAgY2FzZSBJbmRleGVkREI6OlRyYW5zYWN0aW9u
VmVyc2lvbkNoYW5nZToKKyAgICAgICAgQVNTRVJUKG1fcXVldWVkVHJhbnNhY3Rpb25zLnNpemUo
KSA9PSAxKTsKKyAgICAgICAgQVNTRVJUKG1fc3RhcnRlZFRyYW5zYWN0aW9ucy5pc0VtcHR5KCkp
OworICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgIGNhc2UgSW5kZXhlZERCOjpUcmFuc2FjdGlv
blJlYWRPbmx5OgorICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgIGNhc2UgSW5kZXhlZERCOjpU
cmFuc2FjdGlvblJlYWRXcml0ZToKKyAgICAgICAgZm9yIChIYXNoU2V0PElEQlRyYW5zYWN0aW9u
QmFja2VuZEludGVyZmFjZSo+Ojpjb25zdF9pdGVyYXRvciBpdCA9IG1fc3RhcnRlZFRyYW5zYWN0
aW9ucy5iZWdpbigpOyBpdCAhPSBtX3N0YXJ0ZWRUcmFuc2FjdGlvbnMuZW5kKCk7ICsraXQpIHsK
KyAgICAgICAgICAgIGlmICgoKml0KS0+bW9kZSgpID09IEluZGV4ZWREQjo6VHJhbnNhY3Rpb25S
ZWFkV3JpdGUgJiYgZG9TY29wZXNPdmVybGFwKHRyYW5zYWN0aW9uLT5zY29wZSgpLCAoKml0KS0+
c2NvcGUoKSkpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAg
ICAgIGZvciAoTGlzdEhhc2hTZXQ8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKj46OmNv
bnN0X2l0ZXJhdG9yIGl0ID0gbV9xdWV1ZWRUcmFuc2FjdGlvbnMuYmVnaW4oKTsgKml0ICE9IHRy
YW5zYWN0aW9uOyArK2l0KSB7CisgICAgICAgICAgICBBU1NFUlQoaXQgIT0gbV9xdWV1ZWRUcmFu
c2FjdGlvbnMuZW5kKCkpOworICAgICAgICAgICAgaWYgKCgqaXQpLT5tb2RlKCkgPT0gSW5kZXhl
ZERCOjpUcmFuc2FjdGlvblJlYWRXcml0ZSAmJiBkb1Njb3Blc092ZXJsYXAodHJhbnNhY3Rpb24t
PnNjb3BlKCksICgqaXQpLT5zY29wZSgpKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOworICAgIHJldHVybiBmYWxzZTsKK30KKworfTsKKworI2VuZGlmIC8vIEVOQUJM
RShJTkRFWEVEX0RBVEFCQVNFKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvSURCVHJhbnNhY3Rpb25Db29yZGluYXRvci5oIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb25Db29yZGluYXRvci5oCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAuLjEwZTJiMTIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbkNvb3JkaW5hdG9yLmgKQEAg
LTAsMCArMSw3MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5Z
CisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
CisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgSURCVHJhbnNhY3Rpb25Db29yZGluYXRvcl9o
CisjZGVmaW5lIElEQlRyYW5zYWN0aW9uQ29vcmRpbmF0b3JfaAorCisjaWYgRU5BQkxFKElOREVY
RURfREFUQUJBU0UpCisKKyNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgorI2luY2x1ZGUgPHd0Zi9M
aXN0SGFzaFNldC5oPgorI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KKworbmFtZXNwYWNlIFdlYkNv
cmUgeworCitjbGFzcyBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2U7CisKKy8vIFRyYW5z
YWN0aW9ucyBhcmUgZXhlY3V0ZWQgaW4gdGhlIG9yZGVyIHRoZSB3ZXJlIGNyZWF0ZWQuCitjbGFz
cyBJREJUcmFuc2FjdGlvbkNvb3JkaW5hdG9yIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc093
blB0cjxJREJUcmFuc2FjdGlvbkNvb3JkaW5hdG9yPiBjcmVhdGUoKTsKKyAgICB2aXJ0dWFsIH5J
REJUcmFuc2FjdGlvbkNvb3JkaW5hdG9yKCk7CisKKyAgICAvLyBDYWxsZWQgYnkgdHJhbnNhY3Rp
b25zIGFzIHRoZXkgc3RhcnQgYW5kIGZpbmlzaC4KKyAgICB2b2lkIGRpZENyZWF0ZVRyYW5zYWN0
aW9uKElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSopOworICAgIHZvaWQgZGlkU3RhcnRU
cmFuc2FjdGlvbihJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqKTsKKyAgICB2b2lkIGRp
ZEZpbmlzaFRyYW5zYWN0aW9uKElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSopOworCisj
aWZuZGVmIE5ERUJVRworICAgIGJvb2wgaXNBY3RpdmUoSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50
ZXJmYWNlKik7CisjZW5kaWYKKworcHJpdmF0ZToKKyAgICBJREJUcmFuc2FjdGlvbkNvb3JkaW5h
dG9yKCk7CisKKyAgICB2b2lkIHByb2Nlc3NTdGFydGVkVHJhbnNhY3Rpb25zKCk7CisgICAgYm9v
bCBjYW5SdW5UcmFuc2FjdGlvbihJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqKTsKKwor
ICAgIC8vIFRoaXMgaXMganVzdCBhbiBlZmZpY2llbnQgd2F5IHRvIGtlZXAgcmVmZXJlbmNlcyB0
byBhbGwgdHJhbnNhY3Rpb25zLgorICAgIEhhc2hNYXA8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50
ZXJmYWNlKiwgUmVmUHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZT4gPiBtX3RyYW5z
YWN0aW9uczsKKyAgICAvLyBUcmFuc2FjdGlvbnMgaW4gZGlmZmVyZW50IHN0YXRlcyBhcmUgZ3Jv
dXBlZCBiZWxvdy4KKyAgICBMaXN0SGFzaFNldDxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZh
Y2UqPiBtX3F1ZXVlZFRyYW5zYWN0aW9uczsKKyAgICBIYXNoU2V0PElEQlRyYW5zYWN0aW9uQmFj
a2VuZEludGVyZmFjZSo+IG1fc3RhcnRlZFRyYW5zYWN0aW9uczsKK307CisKK30gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQorCisjZW5k
aWYgLy8gSURCVHJhbnNhY3Rpb25Db29yZGluYXRvcl9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9sZXZlbGRiL0lEQkRhdGFiYXNlQmFja2VuZExldmVsREIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvbGV2ZWxkYi9JREJEYXRhYmFz
ZUJhY2tlbmRMZXZlbERCLmNwcAppbmRleCA1Y2E4NmY1Li4xODFlMjUwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9sZXZlbGRiL0lEQkRhdGFiYXNlQmFja2Vu
ZExldmVsREIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2xldmVs
ZGIvSURCRGF0YWJhc2VCYWNrZW5kTGV2ZWxEQi5jcHAKQEAgLTM1LDcgKzM1LDcgQEAKICNpbmNs
dWRlICJJREJLZXlSYW5nZS5oIgogI2luY2x1ZGUgIklEQk9iamVjdFN0b3JlQmFja2VuZExldmVs
REIuaCIKICNpbmNsdWRlICJJREJUcmFuc2FjdGlvbkJhY2tlbmRMZXZlbERCLmgiCi0jaW5jbHVk
ZSAiSURCVHJhbnNhY3Rpb25Db29yZGluYXRvckxldmVsREIuaCIKKyNpbmNsdWRlICJJREJUcmFu
c2FjdGlvbkNvb3JkaW5hdG9yLmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIlNo
YXJlZEJ1ZmZlci5oIgogI2luY2x1ZGUgPHd0Zi9UZW1wb3JhcnlDaGFuZ2UuaD4KQEAgLTU1LDcg
KzU1LDcgQEAgSURCRGF0YWJhc2VCYWNrZW5kTGV2ZWxEQjo6SURCRGF0YWJhc2VCYWNrZW5kTGV2
ZWxEQihjb25zdCBTdHJpbmcmIG5hbWUsIElEQkJhY2sKICAgICAsIG1fbWV0YWRhdGEobmFtZSwg
SW52YWxpZElkLCAwLCBJbnZhbGlkSWQpCiAgICAgLCBtX2lkZW50aWZpZXIodW5pcXVlSWRlbnRp
ZmllcikKICAgICAsIG1fZmFjdG9yeShmYWN0b3J5KQotICAgICwgbV90cmFuc2FjdGlvbkNvb3Jk
aW5hdG9yKElEQlRyYW5zYWN0aW9uQ29vcmRpbmF0b3JMZXZlbERCOjpjcmVhdGUoKSkKKyAgICAs
IG1fdHJhbnNhY3Rpb25Db29yZGluYXRvcihJREJUcmFuc2FjdGlvbkNvb3JkaW5hdG9yOjpjcmVh
dGUoKSkKICAgICAsIG1fY2xvc2luZ0Nvbm5lY3Rpb24oZmFsc2UpCiB7CiAgICAgQVNTRVJUKCFt
X21ldGFkYXRhLm5hbWUuaXNOdWxsKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvbGV2ZWxkYi9JREJEYXRhYmFzZUJhY2tlbmRMZXZlbERCLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9sZXZlbGRiL0lEQkRhdGFiYXNlQmFja2VuZExl
dmVsREIuaAppbmRleCAzYTA1MGYzLi4wZjA5OGZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9sZXZlbGRiL0lEQkRhdGFiYXNlQmFja2VuZExldmVsREIuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9sZXZlbGRiL0lEQkRhdGFiYXNl
QmFja2VuZExldmVsREIuaApAQCAtNDEsNyArNDEsNyBAQCBjbGFzcyBJREJCYWNraW5nU3RvcmVJ
bnRlcmZhY2U7CiBjbGFzcyBJREJEYXRhYmFzZTsKIGNsYXNzIElEQkZhY3RvcnlCYWNrZW5kSW50
ZXJmYWNlOwogY2xhc3MgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlOwotY2xhc3MgSURC
VHJhbnNhY3Rpb25Db29yZGluYXRvckxldmVsREI7CitjbGFzcyBJREJUcmFuc2FjdGlvbkNvb3Jk
aW5hdG9yOwogCiBjbGFzcyBJREJEYXRhYmFzZUJhY2tlbmRMZXZlbERCIDogcHVibGljIElEQkRh
dGFiYXNlQmFja2VuZEludGVyZmFjZSB7CiBwdWJsaWM6CkBAIC03NCw3ICs3NCw3IEBAIHB1Ymxp
YzoKICAgICB2aXJ0dWFsIHZvaWQgY3JlYXRlSW5kZXgoaW50NjRfdCB0cmFuc2FjdGlvbklkLCBp
bnQ2NF90IG9iamVjdFN0b3JlSWQsIGludDY0X3QgaW5kZXhJZCwgY29uc3QgU3RyaW5nJiBuYW1l
LCBjb25zdCBJREJLZXlQYXRoJiwgYm9vbCB1bmlxdWUsIGJvb2wgbXVsdGlFbnRyeSk7CiAgICAg
dmlydHVhbCB2b2lkIGRlbGV0ZUluZGV4KGludDY0X3QgdHJhbnNhY3Rpb25JZCwgaW50NjRfdCBv
YmplY3RTdG9yZUlkLCBpbnQ2NF90IGluZGV4SWQpOwogCi0gICAgSURCVHJhbnNhY3Rpb25Db29y
ZGluYXRvckxldmVsREIqIHRyYW5zYWN0aW9uQ29vcmRpbmF0b3IoKSBjb25zdCB7IHJldHVybiBt
X3RyYW5zYWN0aW9uQ29vcmRpbmF0b3IuZ2V0KCk7IH0KKyAgICBJREJUcmFuc2FjdGlvbkNvb3Jk
aW5hdG9yKiB0cmFuc2FjdGlvbkNvb3JkaW5hdG9yKCkgY29uc3QgeyByZXR1cm4gbV90cmFuc2Fj
dGlvbkNvb3JkaW5hdG9yLmdldCgpOyB9CiAgICAgdm9pZCB0cmFuc2FjdGlvblN0YXJ0ZWQoSURC
VHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKik7CiAgICAgdm9pZCB0cmFuc2FjdGlvbkZpbmlz
aGVkKElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSopOwogICAgIHZvaWQgdHJhbnNhY3Rp
b25GaW5pc2hlZEFuZENvbXBsZXRlRmlyZWQoSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNl
Kik7CkBAIC0xMTAsNyArMTEwLDcgQEAgcHJpdmF0ZToKICAgICAvLyBUaGlzIG1pZ2h0IG5vdCBu
ZWVkIHRvIGJlIGEgUmVmUHRyIHNpbmNlIHRoZSBmYWN0b3J5J3MgbGlmZXRpbWUgaXMgdGhhdCBv
ZiB0aGUgcGFnZSBncm91cCwgYnV0IGl0J3MgYmV0dGVyIHRvIGJlIGNvbnNlcnZpdGl2ZSB0aGFu
IHNvcnJ5LgogICAgIFJlZlB0cjxJREJGYWN0b3J5QmFja2VuZEludGVyZmFjZT4gbV9mYWN0b3J5
OwogCi0gICAgT3duUHRyPElEQlRyYW5zYWN0aW9uQ29vcmRpbmF0b3JMZXZlbERCPiBtX3RyYW5z
YWN0aW9uQ29vcmRpbmF0b3I7CisgICAgT3duUHRyPElEQlRyYW5zYWN0aW9uQ29vcmRpbmF0b3I+
IG1fdHJhbnNhY3Rpb25Db29yZGluYXRvcjsKICAgICBSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNr
ZW5kSW50ZXJmYWNlPiBtX3J1bm5pbmdWZXJzaW9uQ2hhbmdlVHJhbnNhY3Rpb247CiAKICAgICB0
eXBlZGVmIEhhc2hNYXA8aW50NjRfdCwgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKj4g
VHJhbnNhY3Rpb25NYXA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9sZXZlbGRiL0lEQkZhY3RvcnlCYWNrZW5kTGV2ZWxEQi5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9sZXZlbGRiL0lEQkZhY3RvcnlCYWNrZW5kTGV2ZWxEQi5jcHAK
aW5kZXggNWZhMWFjYy4uMDRlNGMxYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvbGV2ZWxkYi9JREJGYWN0b3J5QmFja2VuZExldmVsREIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2xldmVsZGIvSURCRmFjdG9yeUJhY2tlbmRM
ZXZlbERCLmNwcApAQCAtMzQsNyArMzQsNyBAQAogI2luY2x1ZGUgIklEQkRhdGFiYXNlQmFja2Vu
ZExldmVsREIuaCIKICNpbmNsdWRlICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5oIgogI2luY2x1ZGUg
IklEQlRyYW5zYWN0aW9uQmFja2VuZExldmVsREIuaCIKLSNpbmNsdWRlICJJREJUcmFuc2FjdGlv
bkNvb3JkaW5hdG9yTGV2ZWxEQi5oIgorI2luY2x1ZGUgIklEQlRyYW5zYWN0aW9uQ29vcmRpbmF0
b3IuaCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvbGV2ZWxkYi9J
REJUcmFuc2FjdGlvbkJhY2tlbmRMZXZlbERCLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL2xldmVsZGIvSURCVHJhbnNhY3Rpb25CYWNrZW5kTGV2ZWxEQi5jcHAKaW5kZXgg
ZTRlYTRjOC4uMWU2NmI3NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvbGV2ZWxkYi9JREJUcmFuc2FjdGlvbkJhY2tlbmRMZXZlbERCLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9sZXZlbGRiL0lEQlRyYW5zYWN0aW9uQmFja2Vu
ZExldmVsREIuY3BwCkBAIC0zNSw3ICszNSw3IEBACiAjaW5jbHVkZSAiSURCRGF0YWJhc2VFeGNl
cHRpb24uaCIKICNpbmNsdWRlICJJREJLZXlSYW5nZS5oIgogI2luY2x1ZGUgIklEQlRyYW5zYWN0
aW9uQmFja2VuZExldmVsREJPcGVyYXRpb25zLmgiCi0jaW5jbHVkZSAiSURCVHJhbnNhY3Rpb25D
b29yZGluYXRvckxldmVsREIuaCIKKyNpbmNsdWRlICJJREJUcmFuc2FjdGlvbkNvb3JkaW5hdG9y
LmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9sZXZlbGRiL0lEQlRyYW5zYWN0
aW9uQmFja2VuZExldmVsREIuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2xl
dmVsZGIvSURCVHJhbnNhY3Rpb25CYWNrZW5kTGV2ZWxEQi5oCmluZGV4IDU1MzlkODUuLjE0OGVm
ZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2xldmVsZGIv
SURCVHJhbnNhY3Rpb25CYWNrZW5kTGV2ZWxEQi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL2xldmVsZGIvSURCVHJhbnNhY3Rpb25CYWNrZW5kTGV2ZWxEQi5oCkBAIC00
NCw3ICs0NCw3IEBAIGNsYXNzIElEQkJhY2tpbmdTdG9yZUxldmVsREI7CiBjbGFzcyBJREJDdXJz
b3JCYWNrZW5kTGV2ZWxEQjsKIGNsYXNzIElEQkRhdGFiYXNlQ2FsbGJhY2tzOwogCi1jbGFzcyBJ
REJUcmFuc2FjdGlvbkJhY2tlbmRMZXZlbERCIDogcHVibGljIElEQlRyYW5zYWN0aW9uQmFja2Vu
ZEludGVyZmFjZSB7CitjbGFzcyBJREJUcmFuc2FjdGlvbkJhY2tlbmRMZXZlbERCIEZJTkFMIDog
cHVibGljIElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSB7CiBwdWJsaWM6CiAgICAgc3Rh
dGljIFBhc3NSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kTGV2ZWxEQj4gY3JlYXRlKElEQkRh
dGFiYXNlQmFja2VuZExldmVsREIqLCBpbnQ2NF90IHRyYW5zYWN0aW9uSWQsIFBhc3NSZWZQdHI8
SURCRGF0YWJhc2VDYWxsYmFja3M+LCBjb25zdCBWZWN0b3I8aW50NjRfdD4mIG9iamVjdFN0b3Jl
SWRzLCBJbmRleGVkREI6OlRyYW5zYWN0aW9uTW9kZSk7CiAgICAgdmlydHVhbCB+SURCVHJhbnNh
Y3Rpb25CYWNrZW5kTGV2ZWxEQigpOwpAQCAtNTksOSArNTksOSBAQCBwdWJsaWM6CiAgICAgICAg
IHZpcnR1YWwgdm9pZCBwZXJmb3JtKCkgPSAwOwogICAgIH07CiAKLSAgICB2b2lkIHJ1bigpOwor
ICAgIHZpcnR1YWwgdm9pZCBydW4oKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIEluZGV4ZWREQjo6
VHJhbnNhY3Rpb25Nb2RlIG1vZGUoKSBjb25zdCBPVkVSUklERSBGSU5BTCB7IHJldHVybiBtX21v
ZGU7IH0KLSAgICBjb25zdCBIYXNoU2V0PGludDY0X3Q+JiBzY29wZSgpIGNvbnN0IHsgcmV0dXJu
IG1fb2JqZWN0U3RvcmVJZHM7IH0KKyAgICBjb25zdCBIYXNoU2V0PGludDY0X3Q+JiBzY29wZSgp
IGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIG1fb2JqZWN0U3RvcmVJZHM7IH0KICAgICB2b2lkIHNj
aGVkdWxlVGFzayhQYXNzT3duUHRyPE9wZXJhdGlvbj4gdGFzaywgUGFzc093blB0cjxPcGVyYXRp
b24+IGFib3J0VGFzayA9IG51bGxwdHIpIHsgc2NoZWR1bGVUYXNrKElEQkRhdGFiYXNlQmFja2Vu
ZEludGVyZmFjZTo6Tm9ybWFsVGFzaywgdGFzaywgYWJvcnRUYXNrKTsgfQogICAgIHZvaWQgc2No
ZWR1bGVUYXNrKElEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZTo6VGFza1R5cGUsIFBhc3NPd25Q
dHI8T3BlcmF0aW9uPiwgUGFzc093blB0cjxPcGVyYXRpb24+IGFib3J0VGFzayA9IG51bGxwdHIp
OwogICAgIHZvaWQgcmVnaXN0ZXJPcGVuQ3Vyc29yKElEQkN1cnNvckJhY2tlbmRMZXZlbERCKik7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9sZXZlbGRiL0lE
QlRyYW5zYWN0aW9uQ29vcmRpbmF0b3JMZXZlbERCLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL2xldmVsZGIvSURCVHJhbnNhY3Rpb25Db29yZGluYXRvckxldmVsREIuY3Bw
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjODVhMmUxLi4wMDAwMDAwCi0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2xldmVsZGIvSURCVHJhbnNhY3Rpb25Db29y
ZGluYXRvckxldmVsREIuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsMTUzICswLDAgQEAKLS8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAq
Ci0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqCi0gKiAxLiAgUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCi0gKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAg
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElF
RAotICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUiBQVVJQT1NFIEFSRQotICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQotICogRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMKLSAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKLSAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAotICog
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgotICogVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwot
Ci0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiSURCVHJhbnNhY3Rpb25Db29yZGluYXRv
ckxldmVsREIuaCIKLQotI2lmIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKSAmJiBVU0UoTEVWRUxE
QikKLQotI2luY2x1ZGUgIklEQkRhdGFiYXNlQmFja2VuZExldmVsREIuaCIKLSNpbmNsdWRlICJJ
REJEYXRhYmFzZUNhbGxiYWNrcy5oIgotI2luY2x1ZGUgIklEQlRyYW5zYWN0aW9uQmFja2VuZExl
dmVsREIuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1QYXNzT3duUHRyPElEQlRyYW5zYWN0
aW9uQ29vcmRpbmF0b3JMZXZlbERCPiBJREJUcmFuc2FjdGlvbkNvb3JkaW5hdG9yTGV2ZWxEQjo6
Y3JlYXRlKCkKLXsKLSAgICByZXR1cm4gYWRvcHRQdHIobmV3IElEQlRyYW5zYWN0aW9uQ29vcmRp
bmF0b3JMZXZlbERCKCkpOwotfQotCi1JREJUcmFuc2FjdGlvbkNvb3JkaW5hdG9yTGV2ZWxEQjo6
SURCVHJhbnNhY3Rpb25Db29yZGluYXRvckxldmVsREIoKQotewotfQotCi1JREJUcmFuc2FjdGlv
bkNvb3JkaW5hdG9yTGV2ZWxEQjo6fklEQlRyYW5zYWN0aW9uQ29vcmRpbmF0b3JMZXZlbERCKCkK
LXsKLX0KLQotdm9pZCBJREJUcmFuc2FjdGlvbkNvb3JkaW5hdG9yTGV2ZWxEQjo6ZGlkQ3JlYXRl
VHJhbnNhY3Rpb24oSURCVHJhbnNhY3Rpb25CYWNrZW5kTGV2ZWxEQiogdHJhbnNhY3Rpb24pCi17
Ci0gICAgQVNTRVJUKCFtX3RyYW5zYWN0aW9ucy5jb250YWlucyh0cmFuc2FjdGlvbikpOwotICAg
IG1fdHJhbnNhY3Rpb25zLmFkZCh0cmFuc2FjdGlvbiwgdHJhbnNhY3Rpb24pOwotfQotCi12b2lk
IElEQlRyYW5zYWN0aW9uQ29vcmRpbmF0b3JMZXZlbERCOjpkaWRTdGFydFRyYW5zYWN0aW9uKElE
QlRyYW5zYWN0aW9uQmFja2VuZExldmVsREIqIHRyYW5zYWN0aW9uKQotewotICAgIEFTU0VSVCht
X3RyYW5zYWN0aW9ucy5jb250YWlucyh0cmFuc2FjdGlvbikpOwotCi0gICAgbV9xdWV1ZWRUcmFu
c2FjdGlvbnMuYWRkKHRyYW5zYWN0aW9uKTsKLSAgICBwcm9jZXNzU3RhcnRlZFRyYW5zYWN0aW9u
cygpOwotfQotCi12b2lkIElEQlRyYW5zYWN0aW9uQ29vcmRpbmF0b3JMZXZlbERCOjpkaWRGaW5p
c2hUcmFuc2FjdGlvbihJREJUcmFuc2FjdGlvbkJhY2tlbmRMZXZlbERCKiB0cmFuc2FjdGlvbikK
LXsKLSAgICBBU1NFUlQobV90cmFuc2FjdGlvbnMuY29udGFpbnModHJhbnNhY3Rpb24pKTsKLQot
ICAgIGlmIChtX3F1ZXVlZFRyYW5zYWN0aW9ucy5jb250YWlucyh0cmFuc2FjdGlvbikpIHsKLSAg
ICAgICAgQVNTRVJUKCFtX3N0YXJ0ZWRUcmFuc2FjdGlvbnMuY29udGFpbnModHJhbnNhY3Rpb24p
KTsKLSAgICAgICAgbV9xdWV1ZWRUcmFuc2FjdGlvbnMucmVtb3ZlKHRyYW5zYWN0aW9uKTsKLSAg
ICB9IGVsc2UgaWYgKG1fc3RhcnRlZFRyYW5zYWN0aW9ucy5jb250YWlucyh0cmFuc2FjdGlvbikp
Ci0gICAgICAgIG1fc3RhcnRlZFRyYW5zYWN0aW9ucy5yZW1vdmUodHJhbnNhY3Rpb24pOwotCi0g
ICAgbV90cmFuc2FjdGlvbnMucmVtb3ZlKHRyYW5zYWN0aW9uKTsKLQotICAgIHByb2Nlc3NTdGFy
dGVkVHJhbnNhY3Rpb25zKCk7Ci19Ci0KLSNpZm5kZWYgTkRFQlVHCi0vLyBWZXJpZmllcyBpbnRl
cm5hbCBjb25zaXN0aWVuY3kgd2hpbGUgcmV0dXJuaW5nIHdoZXRoZXIgYW55dGhpbmcgaXMgZm91
bmQuCi1ib29sIElEQlRyYW5zYWN0aW9uQ29vcmRpbmF0b3JMZXZlbERCOjppc0FjdGl2ZShJREJU
cmFuc2FjdGlvbkJhY2tlbmRMZXZlbERCKiB0cmFuc2FjdGlvbikKLXsKLSAgICBib29sIGZvdW5k
ID0gZmFsc2U7Ci0gICAgaWYgKG1fcXVldWVkVHJhbnNhY3Rpb25zLmNvbnRhaW5zKHRyYW5zYWN0
aW9uKSkKLSAgICAgICAgZm91bmQgPSB0cnVlOwotICAgIGlmIChtX3N0YXJ0ZWRUcmFuc2FjdGlv
bnMuY29udGFpbnModHJhbnNhY3Rpb24pKSB7Ci0gICAgICAgIEFTU0VSVCghZm91bmQpOwotICAg
ICAgICBmb3VuZCA9IHRydWU7Ci0gICAgfQotICAgIEFTU0VSVChmb3VuZCA9PSBtX3RyYW5zYWN0
aW9ucy5jb250YWlucyh0cmFuc2FjdGlvbikpOwotICAgIHJldHVybiBmb3VuZDsKLX0KLSNlbmRp
ZgotCi12b2lkIElEQlRyYW5zYWN0aW9uQ29vcmRpbmF0b3JMZXZlbERCOjpwcm9jZXNzU3RhcnRl
ZFRyYW5zYWN0aW9ucygpCi17Ci0gICAgaWYgKG1fcXVldWVkVHJhbnNhY3Rpb25zLmlzRW1wdHko
KSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgQVNTRVJUKG1fc3RhcnRlZFRyYW5zYWN0aW9ucy5p
c0VtcHR5KCkgfHwgKCptX3N0YXJ0ZWRUcmFuc2FjdGlvbnMuYmVnaW4oKSktPm1vZGUoKSAhPSBJ
bmRleGVkREI6OlRyYW5zYWN0aW9uVmVyc2lvbkNoYW5nZSk7Ci0KLSAgICBMaXN0SGFzaFNldDxJ
REJUcmFuc2FjdGlvbkJhY2tlbmRMZXZlbERCKj46OmNvbnN0X2l0ZXJhdG9yIGl0ID0gbV9xdWV1
ZWRUcmFuc2FjdGlvbnMuYmVnaW4oKTsKLSAgICB3aGlsZSAoaXQgIT0gbV9xdWV1ZWRUcmFuc2Fj
dGlvbnMuZW5kKCkpIHsKLSAgICAgICAgSURCVHJhbnNhY3Rpb25CYWNrZW5kTGV2ZWxEQiogdHJh
bnNhY3Rpb24gPSAqaXQ7Ci0gICAgICAgICsraXQ7Ci0gICAgICAgIGlmIChjYW5SdW5UcmFuc2Fj
dGlvbih0cmFuc2FjdGlvbikpIHsKLSAgICAgICAgICAgIG1fcXVldWVkVHJhbnNhY3Rpb25zLnJl
bW92ZSh0cmFuc2FjdGlvbik7Ci0gICAgICAgICAgICBtX3N0YXJ0ZWRUcmFuc2FjdGlvbnMuYWRk
KHRyYW5zYWN0aW9uKTsKLSAgICAgICAgICAgIHRyYW5zYWN0aW9uLT5ydW4oKTsKLSAgICAgICAg
fQotICAgIH0KLX0KLQotc3RhdGljIGJvb2wgZG9TY29wZXNPdmVybGFwKGNvbnN0IEhhc2hTZXQ8
aW50NjRfdD4mIHNjb3BlMSwgY29uc3QgSGFzaFNldDxpbnQ2NF90PiYgc2NvcGUyKQotewotICAg
IGZvciAoSGFzaFNldDxpbnQ2NF90Pjo6Y29uc3RfaXRlcmF0b3IgaXQgPSBzY29wZTEuYmVnaW4o
KTsgaXQgIT0gc2NvcGUxLmVuZCgpOyArK2l0KSB7Ci0gICAgICAgIGlmIChzY29wZTIuY29udGFp
bnMoKml0KSkKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLSAgICByZXR1cm4gZmFs
c2U7Ci19Ci0KLWJvb2wgSURCVHJhbnNhY3Rpb25Db29yZGluYXRvckxldmVsREI6OmNhblJ1blRy
YW5zYWN0aW9uKElEQlRyYW5zYWN0aW9uQmFja2VuZExldmVsREIqIHRyYW5zYWN0aW9uKQotewot
ICAgIEFTU0VSVChtX3F1ZXVlZFRyYW5zYWN0aW9ucy5jb250YWlucyh0cmFuc2FjdGlvbikpOwot
ICAgIHN3aXRjaCAodHJhbnNhY3Rpb24tPm1vZGUoKSkgewotICAgIGNhc2UgSW5kZXhlZERCOjpU
cmFuc2FjdGlvblZlcnNpb25DaGFuZ2U6Ci0gICAgICAgIEFTU0VSVChtX3F1ZXVlZFRyYW5zYWN0
aW9ucy5zaXplKCkgPT0gMSk7Ci0gICAgICAgIEFTU0VSVChtX3N0YXJ0ZWRUcmFuc2FjdGlvbnMu
aXNFbXB0eSgpKTsKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0KLSAgICBjYXNlIEluZGV4ZWREQjo6
VHJhbnNhY3Rpb25SZWFkT25seToKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0KLSAgICBjYXNlIElu
ZGV4ZWREQjo6VHJhbnNhY3Rpb25SZWFkV3JpdGU6Ci0gICAgICAgIGZvciAoSGFzaFNldDxJREJU
cmFuc2FjdGlvbkJhY2tlbmRMZXZlbERCKj46OmNvbnN0X2l0ZXJhdG9yIGl0ID0gbV9zdGFydGVk
VHJhbnNhY3Rpb25zLmJlZ2luKCk7IGl0ICE9IG1fc3RhcnRlZFRyYW5zYWN0aW9ucy5lbmQoKTsg
KytpdCkgewotICAgICAgICAgICAgaWYgKCgqaXQpLT5tb2RlKCkgPT0gSW5kZXhlZERCOjpUcmFu
c2FjdGlvblJlYWRXcml0ZSAmJiBkb1Njb3Blc092ZXJsYXAodHJhbnNhY3Rpb24tPnNjb3BlKCks
ICgqaXQpLT5zY29wZSgpKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAg
IH0KLSAgICAgICAgZm9yIChMaXN0SGFzaFNldDxJREJUcmFuc2FjdGlvbkJhY2tlbmRMZXZlbERC
Kj46OmNvbnN0X2l0ZXJhdG9yIGl0ID0gbV9xdWV1ZWRUcmFuc2FjdGlvbnMuYmVnaW4oKTsgKml0
ICE9IHRyYW5zYWN0aW9uOyArK2l0KSB7Ci0gICAgICAgICAgICBBU1NFUlQoaXQgIT0gbV9xdWV1
ZWRUcmFuc2FjdGlvbnMuZW5kKCkpOwotICAgICAgICAgICAgaWYgKCgqaXQpLT5tb2RlKCkgPT0g
SW5kZXhlZERCOjpUcmFuc2FjdGlvblJlYWRXcml0ZSAmJiBkb1Njb3Blc092ZXJsYXAodHJhbnNh
Y3Rpb24tPnNjb3BlKCksICgqaXQpLT5zY29wZSgpKSkKLSAgICAgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiBmYWxzZTsKLX0KLQotfTsKLQotI2VuZGlmIC8v
IEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKSAmJiBVU0UoTEVWRUxEQikKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2xldmVsZGIvSURCVHJhbnNhY3Rpb25Db29y
ZGluYXRvckxldmVsREIuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2xldmVs
ZGIvSURCVHJhbnNhY3Rpb25Db29yZGluYXRvckxldmVsREIuaApkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggZTYxYTZiNC4uMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9sZXZlbGRiL0lEQlRyYW5zYWN0aW9uQ29vcmRpbmF0b3JMZXZlbERCLmgKKysr
IC9kZXYvbnVsbApAQCAtMSw3MSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEwIEdv
b2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKgotICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4g
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAi
QVMgSVMiIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKLSAqIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSAq
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkKLSAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCi0gKiAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7Ci0gKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKLSAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YKLSAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBJREJUcmFuc2FjdGlv
bkNvb3JkaW5hdG9yTGV2ZWxEQl9oCi0jZGVmaW5lIElEQlRyYW5zYWN0aW9uQ29vcmRpbmF0b3JM
ZXZlbERCX2gKLQotI2lmIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQotCi0jaW5jbHVkZSA8d3Rm
L0hhc2hNYXAuaD4KLSNpbmNsdWRlIDx3dGYvTGlzdEhhc2hTZXQuaD4KLSNpbmNsdWRlIDx3dGYv
UmVmUHRyLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgSURCVHJhbnNhY3Rpb25C
YWNrZW5kTGV2ZWxEQjsKLQotLy8gVHJhbnNhY3Rpb25zIGFyZSBleGVjdXRlZCBpbiB0aGUgb3Jk
ZXIgdGhlIHdlcmUgY3JlYXRlZC4KLWNsYXNzIElEQlRyYW5zYWN0aW9uQ29vcmRpbmF0b3JMZXZl
bERCIHsKLXB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc093blB0cjxJREJUcmFuc2FjdGlvbkNvb3Jk
aW5hdG9yTGV2ZWxEQj4gY3JlYXRlKCk7Ci0gICAgdmlydHVhbCB+SURCVHJhbnNhY3Rpb25Db29y
ZGluYXRvckxldmVsREIoKTsKLQotICAgIC8vIENhbGxlZCBieSB0cmFuc2FjdGlvbnMgYXMgdGhl
eSBzdGFydCBhbmQgZmluaXNoLgotICAgIHZvaWQgZGlkQ3JlYXRlVHJhbnNhY3Rpb24oSURCVHJh
bnNhY3Rpb25CYWNrZW5kTGV2ZWxEQiopOwotICAgIHZvaWQgZGlkU3RhcnRUcmFuc2FjdGlvbihJ
REJUcmFuc2FjdGlvbkJhY2tlbmRMZXZlbERCKik7Ci0gICAgdm9pZCBkaWRGaW5pc2hUcmFuc2Fj
dGlvbihJREJUcmFuc2FjdGlvbkJhY2tlbmRMZXZlbERCKik7Ci0KLSNpZm5kZWYgTkRFQlVHCi0g
ICAgYm9vbCBpc0FjdGl2ZShJREJUcmFuc2FjdGlvbkJhY2tlbmRMZXZlbERCKik7Ci0jZW5kaWYK
LQotcHJpdmF0ZToKLSAgICBJREJUcmFuc2FjdGlvbkNvb3JkaW5hdG9yTGV2ZWxEQigpOwotCi0g
ICAgdm9pZCBwcm9jZXNzU3RhcnRlZFRyYW5zYWN0aW9ucygpOwotICAgIGJvb2wgY2FuUnVuVHJh
bnNhY3Rpb24oSURCVHJhbnNhY3Rpb25CYWNrZW5kTGV2ZWxEQiopOwotCi0gICAgLy8gVGhpcyBp
cyBqdXN0IGFuIGVmZmljaWVudCB3YXkgdG8ga2VlcCByZWZlcmVuY2VzIHRvIGFsbCB0cmFuc2Fj
dGlvbnMuCi0gICAgSGFzaE1hcDxJREJUcmFuc2FjdGlvbkJhY2tlbmRMZXZlbERCKiwgUmVmUHRy
PElEQlRyYW5zYWN0aW9uQmFja2VuZExldmVsREI+ID4gbV90cmFuc2FjdGlvbnM7Ci0gICAgLy8g
VHJhbnNhY3Rpb25zIGluIGRpZmZlcmVudCBzdGF0ZXMgYXJlIGdyb3VwZWQgYmVsb3cuCi0gICAg
TGlzdEhhc2hTZXQ8SURCVHJhbnNhY3Rpb25CYWNrZW5kTGV2ZWxEQio+IG1fcXVldWVkVHJhbnNh
Y3Rpb25zOwotICAgIEhhc2hTZXQ8SURCVHJhbnNhY3Rpb25CYWNrZW5kTGV2ZWxEQio+IG1fc3Rh
cnRlZFRyYW5zYWN0aW9uczsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlm
IC8vIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQotCi0jZW5kaWYgLy8gSURCVHJhbnNhY3Rpb25D
b29yZGluYXRvckxldmVsREJfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDNiNzk4MDEuLjRiZDg3YWEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTE4MTEsNiAr
MTgxMSw4IEBACiAJCTUxRTNGOUQ2MERBMDVFMUQwMDI1MDkxMSAvKiBKU1N0b3JhZ2UuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFFM0Y5RDQwREEw
NUUxRDAwMjUwOTExIC8qIEpTU3RvcmFnZS5jcHAgKi87IH07CiAJCTUxRTQxNDM0MTZBNjU5NjMw
MEM2MzNDNyAvKiBSZXNvdXJjZUhhbmRsZVR5cGVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUU0MTQzMjE2QTY1OTUxMDBDNjMzQzcgLyogUmVzb3Vy
Y2VIYW5kbGVUeXBlcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCTUxRTY4MjEwMTYzODczMDIwMDNCQkYzQyAvKiBMb2FkZXJTdHJhdGVneS5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFFNjgyMEYxNjM4
NzMwMjAwM0JCRjNDIC8qIExvYWRlclN0cmF0ZWd5LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJNTFFQUM1NjcxODE1RUQzRTAwNEYxQkE0IC8qIElE
QlRyYW5zYWN0aW9uQ29vcmRpbmF0b3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNTFFQUM1NjUxODE1RUQzRTAwNEYxQkE0IC8qIElEQlRyYW5zYWN0
aW9uQ29vcmRpbmF0b3IuY3BwICovOyB9OworCQk1MUVBQzU2ODE4MTVFRDNFMDA0RjFCQTQgLyog
SURCVHJhbnNhY3Rpb25Db29yZGluYXRvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNTFFQUM1NjYxODE1RUQzRTAwNEYxQkE0IC8qIElEQlRyYW5zYWN0
aW9uQ29vcmRpbmF0b3IuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQk1MUVDOTI2NTBDRTkwREQ0MDBGOTAzMDggLyogSlNDdXN0b21TUUxTdGF0ZW1l
bnRFcnJvckNhbGxiYWNrLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDUxRUM5MjVEMENFOTBERDQwMEY5MDMwOCAvKiBKU0N1c3RvbVNRTFN0YXRlbWVu
dEVycm9yQ2FsbGJhY2suY3BwICovOyB9OwogCQk1MUY2RTBBMzE4MTFEMjUyMDA1OEEwMEEgLyog
SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUY2RTA4RjE4MTFEMjUyMDA1OEEwMEEgLyogSURCVHJh
bnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTFGQTJENzgxNTIxMzJCMzAwQzFCQTBCIC8qIERPTVdpbmRv
d0V4dGVuc2lvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNTE3RkJBMTgxNTFBQTcxQjAwQjU3OTU5IC8qIERPTVdpbmRvd0V4dGVuc2lvbi5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC04NDA5LDYgKzg0
MTEsOCBAQAogCQk1MUUzRjlENTBEQTA1RTFEMDAyNTA5MTEgLyogSlNTdG9yYWdlLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTU3RvcmFnZS5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk1MUU0MTQzMjE2QTY1OTUxMDBDNjMzQzcgLyogUmVzb3VyY2VIYW5kbGVU
eXBlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZXNvdXJjZUhhbmRsZVR5
cGVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxRTY4MjBGMTYzODczMDIwMDNC
QkYzQyAvKiBMb2FkZXJTdHJhdGVneS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBMb2FkZXJTdHJhdGVneS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MUVBQzU2
NTE4MTVFRDNFMDA0RjFCQTQgLyogSURCVHJhbnNhY3Rpb25Db29yZGluYXRvci5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJREJUcmFuc2FjdGlvbkNvb3JkaW5hdG9y
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTFFQUM1NjYxODE1RUQzRTAwNEYx
QkE0IC8qIElEQlRyYW5zYWN0aW9uQ29vcmRpbmF0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gSURCVHJhbnNhY3Rpb25Db29yZGluYXRvci5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk1MUVDOTI1RDBDRTkwREQ0MDBGOTAzMDggLyogSlNDdXN0b21TUUxTdGF0
ZW1lbnRFcnJvckNhbGxiYWNrLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IEpTQ3VzdG9tU1FMU3RhdGVtZW50RXJyb3JDYWxsYmFjay5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTUxRjZBM0Q1MDY2M0JGMDQwMDREMjkxOSAvKiBIVE1MQ2FudmFzRWxl
bWVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7
IGluZGVudFdpZHRoID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBIVE1MQ2FudmFzRWxlbWVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHRh
YldpZHRoID0gODsgdXNlc1RhYnMgPSAwOyB9OwogCQk1MUY2QTNENjA2NjNCRjA0MDA0RDI5MTkg
LyogSFRNTENhbnZhc0VsZW1lbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSAzMDsgaW5kZW50V2lkdGggPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gSFRNTENhbnZhc0VsZW1lbnQuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgdGFiV2lkdGggPSA4OyB1c2VzVGFicyA9IDA7IH07CkBAIC0xNjc1Niw2ICsxNjc2MCw4
IEBACiAJCQkJNTFENzE5QTUxODExMDZFMDAwMTZEQzUxIC8qIElEQlRyYW5zYWN0aW9uLmggKi8s
CiAJCQkJNTFENzE5QTYxODExMDZFMDAwMTZEQzUxIC8qIElEQlRyYW5zYWN0aW9uLmlkbCAqLywK
IAkJCQk1MUY2RTA4RjE4MTFEMjUyMDA1OEEwMEEgLyogSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50
ZXJmYWNlLmggKi8sCisJCQkJNTFFQUM1NjUxODE1RUQzRTAwNEYxQkE0IC8qIElEQlRyYW5zYWN0
aW9uQ29vcmRpbmF0b3IuY3BwICovLAorCQkJCTUxRUFDNTY2MTgxNUVEM0UwMDRGMUJBNCAvKiBJ
REJUcmFuc2FjdGlvbkNvb3JkaW5hdG9yLmggKi8sCiAJCQkJNTFENzE5QUIxODExMDZFMDAwMTZE
QzUxIC8qIElEQlZlcnNpb25DaGFuZ2VFdmVudC5jcHAgKi8sCiAJCQkJNTFENzE5QUMxODExMDZF
MDAwMTZEQzUxIC8qIElEQlZlcnNpb25DaGFuZ2VFdmVudC5oICovLAogCQkJCTUxRDcxOUFEMTgx
MTA2RTAwMDE2REM1MSAvKiBJREJWZXJzaW9uQ2hhbmdlRXZlbnQuaWRsICovLApAQCAtMjI4Mjgs
NiArMjI4MzQsNyBAQAogCQkJCTJFMkQ5OUNFMTBFMkJCREEwMDQ5NjMzNyAvKiBKU0Jsb2IuaCBp
biBIZWFkZXJzICovLAogCQkJCTE0NDlFMjRDMTA3RDRBODQwMEI1NzkzRiAvKiBKU0NhbGxiYWNr
RGF0YS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNjVERjMyM0EwOUQxREU2NTAwMEJFMzI1IC8qIEpT
Q2FudmFzR3JhZGllbnQuaCBpbiBIZWFkZXJzICovLAorCQkJCTUxRUFDNTY4MTgxNUVEM0UwMDRG
MUJBNCAvKiBJREJUcmFuc2FjdGlvbkNvb3JkaW5hdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQk2
NURGMzIzQzA5RDFERTY1MDAwQkUzMjUgLyogSlNDYW52YXNQYXR0ZXJuLmggaW4gSGVhZGVycyAq
LywKIAkJCQk2NURGMzIzQzA5RDFERTY1MDAxQkUzMjUgLyogSlNDYW52YXNQcm94eS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJRTRENThFQjUxN0I0REJEQzAwQ0JEQ0E4IC8qIFN0eWxlUmVzb2x2ZUZv
ckRvY3VtZW50LmggaW4gSGVhZGVycyAqLywKQEAgLTI2MzU3LDYgKzI2MzY0LDcgQEAKIAkJCQkx
QUU4MkZFQzBDQUIwN0VFMDAyMjM3QUUgLyogSlNTUUxSZXN1bHRTZXQuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJMUFGRTExOTkwQ0JGRkNDNDAwMzAxN0ZBIC8qIEpTU1FMUmVzdWx0U2V0Um93TGlz
dC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1MURDRTgwMjBDQUM5RjFDMDA0ODgzNTggLyogSlNT
UUxSZXN1bHRTZXRSb3dMaXN0Q3VzdG9tLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTUxRUFDNTY3
MTgxNUVEM0UwMDRGMUJBNCAvKiBJREJUcmFuc2FjdGlvbkNvb3JkaW5hdG9yLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCUI1OURENkE2MTE5MDJBNjIwMDdFOTY4NCAvKiBKU1NRTFN0YXRlbWVudENh
bGxiYWNrLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUI1OURENkFBMTE5MDJBNzEwMDdFOTY4NCAv
KiBKU1NRTFN0YXRlbWVudEVycm9yQ2FsbGJhY2suY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTE0
Qzc2MzgwQ0U5MjI1RTAwN0VGM0NEIC8qIEpTU1FMVHJhbnNhY3Rpb24uY3BwIGluIFNvdXJjZXMg
Ki8sCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>214793</attachid>
            <date>2013-10-21 16:47:48 -0700</date>
            <delta_ts>2013-10-21 16:54:34 -0700</delta_ts>
            <desc>Patch v3</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>34278</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYkNv
cmUvQ01ha2VMaXN0cy50eHQKaW5kZXggMzQyMGI2Mi4uYWQ3NWRjZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0
cy50eHQKQEAgLTc3OSw2ICs3NzksNyBAQCBzZXQoV2ViQ29yZV9TT1VSQ0VTCiAgICAgTW9kdWxl
cy9pbmRleGVkZGIvSURCUGVuZGluZ1RyYW5zYWN0aW9uTW9uaXRvci5jcHAKICAgICBNb2R1bGVz
L2luZGV4ZWRkYi9JREJSZXF1ZXN0LmNwcAogICAgIE1vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5z
YWN0aW9uLmNwcAorICAgIE1vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uQ29vcmRpbmF0
b3JMZXZlbERCLmNwcAogICAgIE1vZHVsZXMvaW5kZXhlZGRiL0lEQlZlcnNpb25DaGFuZ2VFdmVu
dC5jcHAKICAgICBNb2R1bGVzL2luZGV4ZWRkYi9QYWdlR3JvdXBJbmRleGVkRGF0YWJhc2UuY3Bw
CiAgICAgTW9kdWxlcy9pbmRleGVkZGIvV29ya2VyR2xvYmFsU2NvcGVJbmRleGVkRGF0YWJhc2Uu
Y3BwCkBAIC03OTAsNyArNzkxLDYgQEAgc2V0KFdlYkNvcmVfU09VUkNFUwogICAgIE1vZHVsZXMv
aW5kZXhlZGRiL2xldmVsZGIvSURCT2JqZWN0U3RvcmVCYWNrZW5kTGV2ZWxEQi5jcHAKICAgICBN
b2R1bGVzL2luZGV4ZWRkYi9sZXZlbGRiL0lEQlRyYW5zYWN0aW9uQmFja2VuZExldmVsREIuY3Bw
CiAgICAgTW9kdWxlcy9pbmRleGVkZGIvbGV2ZWxkYi9JREJUcmFuc2FjdGlvbkJhY2tlbmRMZXZl
bERCT3BlcmF0aW9ucy5jcHAKLSAgICBNb2R1bGVzL2luZGV4ZWRkYi9sZXZlbGRiL0lEQlRyYW5z
YWN0aW9uQ29vcmRpbmF0b3JMZXZlbERCLmNwcAogCiAgICAgTW9kdWxlcy9tZWRpYXNvdXJjZS9N
ZWRpYVNvdXJjZS5jcHAKICAgICBNb2R1bGVzL21lZGlhc291cmNlL01lZGlhU291cmNlUmVnaXN0
cnkuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cKaW5kZXggMzIzY2IxZC4uNDMwZWJkOSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1
ICsxLDQyIEBACiAyMDEzLTEwLTIxICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4K
IAorICAgICAgICBNYWtlIElEQlRyYW5zYWN0aW9uQ29vcmRpbmF0b3JMZXZlbERCIGNyb3NzIHBs
YXRmb3JtCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
MjMxMjQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAq
IENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIEdOVW1ha2VmaWxlLmxpc3QuYW06CisgICAgICAg
ICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorCisgICAgICAgIE1ha2UgbW9y
ZSBtZXRob2RzIHB1cmUgdmlydHVhbCBpbiB0aGUgaW50ZXJmYWNlOgorICAgICAgICAqIE1vZHVs
ZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZS5oOgorICAgICAgICAq
IE1vZHVsZXMvaW5kZXhlZGRiL2xldmVsZGIvSURCVHJhbnNhY3Rpb25CYWNrZW5kTGV2ZWxEQi5j
cHA6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvbGV2ZWxkYi9JREJUcmFuc2FjdGlvbkJh
Y2tlbmRMZXZlbERCLmg6CisKKyAgICAgICAgVXBkYXRlIHRoZSBuYW1lIG9mIHRoZSBjbGFzcywg
YW5kIHVzZSBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UgaW5zdGVhZCBvZiBJREJUcmFu
c2FjdGlvbkJhY2tlbmRMZXZlREI6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCVHJh
bnNhY3Rpb25Db29yZGluYXRvci5jcHA6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9sZXZlbGRiL0lEQlRyYW5zYWN0aW9uQ29vcmRpbmF0b3JMZXZlbERCLmNw
cC4KKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uQ29vcmRpbmF0b3I6OmNyZWF0ZSk6
CisgICAgICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbkNvb3JkaW5hdG9yOjpJREJUcmFuc2Fj
dGlvbkNvb3JkaW5hdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uQ29vcmRp
bmF0b3I6On5JREJUcmFuc2FjdGlvbkNvb3JkaW5hdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OklE
QlRyYW5zYWN0aW9uQ29vcmRpbmF0b3I6OmRpZENyZWF0ZVRyYW5zYWN0aW9uKToKKyAgICAgICAg
KFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uQ29vcmRpbmF0b3I6OmRpZFN0YXJ0VHJhbnNhY3Rpb24p
OgorICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb25Db29yZGluYXRvcjo6ZGlkRmluaXNo
VHJhbnNhY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb25Db29yZGluYXRv
cjo6aXNBY3RpdmUpOgorICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb25Db29yZGluYXRv
cjo6cHJvY2Vzc1N0YXJ0ZWRUcmFuc2FjdGlvbnMpOgorICAgICAgICAoV2ViQ29yZTo6ZG9TY29w
ZXNPdmVybGFwKToKKyAgICAgICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uQ29vcmRpbmF0b3I6
OmNhblJ1blRyYW5zYWN0aW9uKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFu
c2FjdGlvbkNvb3JkaW5hdG9yLmg6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9sZXZlbGRiL0lEQlRyYW5zYWN0aW9uQ29vcmRpbmF0b3JMZXZlbERCLmguCisK
KyAgICAgICAgVXBkYXRlIHRoZSBuYW1lIG9mIHRoZSBjbGFzcyBlbHNld2hlcmU6CisgICAgICAg
ICogTW9kdWxlcy9pbmRleGVkZGIvbGV2ZWxkYi9JREJEYXRhYmFzZUJhY2tlbmRMZXZlbERCLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNlQmFja2VuZExldmVsREI6OklEQkRhdGFi
YXNlQmFja2VuZExldmVsREIpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL2xldmVsZGIv
SURCRGF0YWJhc2VCYWNrZW5kTGV2ZWxEQi5oOgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJh
c2VCYWNrZW5kTGV2ZWxEQjo6dHJhbnNhY3Rpb25Db29yZGluYXRvcik6CisgICAgICAgICogTW9k
dWxlcy9pbmRleGVkZGIvbGV2ZWxkYi9JREJGYWN0b3J5QmFja2VuZExldmVsREIuY3BwOgorCisy
MDEzLTEwLTIxICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KKwogICAgICAgICBU
cmFuc2l0aW9uIG1vc3QgdXNlIG9mIElEQkJhY2tpbmdTdG9yZUxldmVsREIgdG8gSURCQmFja2lu
Z1N0b3JlSW50ZXJmYWNlCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xMjMxMDUKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUu
bGlzdC5hbSBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KaW5kZXggZTJiMjJi
ZC4uZDc1YTBhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5h
bQorKysgYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCkBAIC0xODQ3LDExICsx
ODQ3LDExIEBAIHdlYmNvcmVfbW9kdWxlc19zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9sZXZlbGRiL0lEQlRyYW5zYWN0aW9uQmFja2VuZExldmVsREIuaCBc
CiAJU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvbGV2ZWxkYi9JREJUcmFuc2FjdGlv
bkJhY2tlbmRMZXZlbERCT3BlcmF0aW9ucy5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL2xldmVsZGIvSURCVHJhbnNhY3Rpb25CYWNrZW5kTGV2ZWxEQk9wZXJhdGlvbnMu
aCBcCi0JU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvbGV2ZWxkYi9JREJUcmFuc2Fj
dGlvbkNvb3JkaW5hdG9yTGV2ZWxEQi5jcHAgXAotCVNvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL2xldmVsZGIvSURCVHJhbnNhY3Rpb25Db29yZGluYXRvckxldmVsREIuaCBcCiAJU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb24uY3BwIFwKIAlTb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5oIFwKIAlTb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2Uu
aCBcCisJU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb25Db29y
ZGluYXRvci5jcHAgXAorCVNvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5z
YWN0aW9uQ29vcmRpbmF0b3IuaCBcCiAJU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
SURCVmVyc2lvbkNoYW5nZUV2ZW50LmNwcCBcCiAJU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvSURCVmVyc2lvbkNoYW5nZUV2ZW50LmggXAogCVNvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL0luZGV4ZWREQi5oIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZS5oIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlLmgK
aW5kZXggZjcyNmI1ZTIuLjNjMDAwNjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFj
ZS5oCkBAIC01Miw5ICs1MiwxMSBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIEluZGV4ZWREQjo6
VHJhbnNhY3Rpb25Nb2RlIG1vZGUoKSBjb25zdCA9IDA7CiAKKyAgICB2aXJ0dWFsIHZvaWQgcnVu
KCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBjb21taXQoKSA9IDA7CiAgICAgdmlydHVhbCB2b2lk
IGFib3J0KCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBhYm9ydChQYXNzUmVmUHRyPElEQkRhdGFi
YXNlRXJyb3I+KSA9IDA7CisgICAgdmlydHVhbCBjb25zdCBIYXNoU2V0PGludDY0X3Q+JiBzY29w
ZSgpIGNvbnN0ID0gMDsKIAogICAgIHZpcnR1YWwgdm9pZCBzY2hlZHVsZUNyZWF0ZU9iamVjdFN0
b3JlT3BlcmF0aW9uKGNvbnN0IElEQk9iamVjdFN0b3JlTWV0YWRhdGEmKSA9IDA7CiAgICAgdmly
dHVhbCB2b2lkIHNjaGVkdWxlRGVsZXRlT2JqZWN0U3RvcmVPcGVyYXRpb24oY29uc3QgSURCT2Jq
ZWN0U3RvcmVNZXRhZGF0YSYpID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uQ29vcmRpbmF0b3IuY3BwIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb25Db29yZGluYXRvci5jcHAKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWQ3YjgwZgotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uQ29vcmRpbmF0
b3IuY3BwCkBAIC0wLDAgKzEsMTUyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2ds
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMg
SVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2lu
Y2x1ZGUgIklEQlRyYW5zYWN0aW9uQ29vcmRpbmF0b3IuaCIKKworI2lmIEVOQUJMRShJTkRFWEVE
X0RBVEFCQVNFKQorCisjaW5jbHVkZSAiSURCRGF0YWJhc2VDYWxsYmFja3MuaCIKKyNpbmNsdWRl
ICJJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUg
eworCitQYXNzT3duUHRyPElEQlRyYW5zYWN0aW9uQ29vcmRpbmF0b3I+IElEQlRyYW5zYWN0aW9u
Q29vcmRpbmF0b3I6OmNyZWF0ZSgpCit7CisgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBJREJUcmFu
c2FjdGlvbkNvb3JkaW5hdG9yKCkpOworfQorCitJREJUcmFuc2FjdGlvbkNvb3JkaW5hdG9yOjpJ
REJUcmFuc2FjdGlvbkNvb3JkaW5hdG9yKCkKK3sKK30KKworSURCVHJhbnNhY3Rpb25Db29yZGlu
YXRvcjo6fklEQlRyYW5zYWN0aW9uQ29vcmRpbmF0b3IoKQoreworfQorCit2b2lkIElEQlRyYW5z
YWN0aW9uQ29vcmRpbmF0b3I6OmRpZENyZWF0ZVRyYW5zYWN0aW9uKElEQlRyYW5zYWN0aW9uQmFj
a2VuZEludGVyZmFjZSogdHJhbnNhY3Rpb24pCit7CisgICAgQVNTRVJUKCFtX3RyYW5zYWN0aW9u
cy5jb250YWlucyh0cmFuc2FjdGlvbikpOworICAgIG1fdHJhbnNhY3Rpb25zLmFkZCh0cmFuc2Fj
dGlvbiwgdHJhbnNhY3Rpb24pOworfQorCit2b2lkIElEQlRyYW5zYWN0aW9uQ29vcmRpbmF0b3I6
OmRpZFN0YXJ0VHJhbnNhY3Rpb24oSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKiB0cmFu
c2FjdGlvbikKK3sKKyAgICBBU1NFUlQobV90cmFuc2FjdGlvbnMuY29udGFpbnModHJhbnNhY3Rp
b24pKTsKKworICAgIG1fcXVldWVkVHJhbnNhY3Rpb25zLmFkZCh0cmFuc2FjdGlvbik7CisgICAg
cHJvY2Vzc1N0YXJ0ZWRUcmFuc2FjdGlvbnMoKTsKK30KKwordm9pZCBJREJUcmFuc2FjdGlvbkNv
b3JkaW5hdG9yOjpkaWRGaW5pc2hUcmFuc2FjdGlvbihJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRl
cmZhY2UqIHRyYW5zYWN0aW9uKQoreworICAgIEFTU0VSVChtX3RyYW5zYWN0aW9ucy5jb250YWlu
cyh0cmFuc2FjdGlvbikpOworCisgICAgaWYgKG1fcXVldWVkVHJhbnNhY3Rpb25zLmNvbnRhaW5z
KHRyYW5zYWN0aW9uKSkgeworICAgICAgICBBU1NFUlQoIW1fc3RhcnRlZFRyYW5zYWN0aW9ucy5j
b250YWlucyh0cmFuc2FjdGlvbikpOworICAgICAgICBtX3F1ZXVlZFRyYW5zYWN0aW9ucy5yZW1v
dmUodHJhbnNhY3Rpb24pOworICAgIH0gZWxzZSBpZiAobV9zdGFydGVkVHJhbnNhY3Rpb25zLmNv
bnRhaW5zKHRyYW5zYWN0aW9uKSkKKyAgICAgICAgbV9zdGFydGVkVHJhbnNhY3Rpb25zLnJlbW92
ZSh0cmFuc2FjdGlvbik7CisKKyAgICBtX3RyYW5zYWN0aW9ucy5yZW1vdmUodHJhbnNhY3Rpb24p
OworCisgICAgcHJvY2Vzc1N0YXJ0ZWRUcmFuc2FjdGlvbnMoKTsKK30KKworI2lmbmRlZiBOREVC
VUcKKy8vIFZlcmlmaWVzIGludGVybmFsIGNvbnNpc3RpZW5jeSB3aGlsZSByZXR1cm5pbmcgd2hl
dGhlciBhbnl0aGluZyBpcyBmb3VuZC4KK2Jvb2wgSURCVHJhbnNhY3Rpb25Db29yZGluYXRvcjo6
aXNBY3RpdmUoSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKiB0cmFuc2FjdGlvbikKK3sK
KyAgICBib29sIGZvdW5kID0gZmFsc2U7CisgICAgaWYgKG1fcXVldWVkVHJhbnNhY3Rpb25zLmNv
bnRhaW5zKHRyYW5zYWN0aW9uKSkKKyAgICAgICAgZm91bmQgPSB0cnVlOworICAgIGlmIChtX3N0
YXJ0ZWRUcmFuc2FjdGlvbnMuY29udGFpbnModHJhbnNhY3Rpb24pKSB7CisgICAgICAgIEFTU0VS
VCghZm91bmQpOworICAgICAgICBmb3VuZCA9IHRydWU7CisgICAgfQorICAgIEFTU0VSVChmb3Vu
ZCA9PSBtX3RyYW5zYWN0aW9ucy5jb250YWlucyh0cmFuc2FjdGlvbikpOworICAgIHJldHVybiBm
b3VuZDsKK30KKyNlbmRpZgorCit2b2lkIElEQlRyYW5zYWN0aW9uQ29vcmRpbmF0b3I6OnByb2Nl
c3NTdGFydGVkVHJhbnNhY3Rpb25zKCkKK3sKKyAgICBpZiAobV9xdWV1ZWRUcmFuc2FjdGlvbnMu
aXNFbXB0eSgpKQorICAgICAgICByZXR1cm47CisKKyAgICBBU1NFUlQobV9zdGFydGVkVHJhbnNh
Y3Rpb25zLmlzRW1wdHkoKSB8fCAoKm1fc3RhcnRlZFRyYW5zYWN0aW9ucy5iZWdpbigpKS0+bW9k
ZSgpICE9IEluZGV4ZWREQjo6VHJhbnNhY3Rpb25WZXJzaW9uQ2hhbmdlKTsKKworICAgIExpc3RI
YXNoU2V0PElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSo+Ojpjb25zdF9pdGVyYXRvciBp
dCA9IG1fcXVldWVkVHJhbnNhY3Rpb25zLmJlZ2luKCk7CisgICAgd2hpbGUgKGl0ICE9IG1fcXVl
dWVkVHJhbnNhY3Rpb25zLmVuZCgpKSB7CisgICAgICAgIElEQlRyYW5zYWN0aW9uQmFja2VuZElu
dGVyZmFjZSogdHJhbnNhY3Rpb24gPSAqaXQ7CisgICAgICAgICsraXQ7CisgICAgICAgIGlmIChj
YW5SdW5UcmFuc2FjdGlvbih0cmFuc2FjdGlvbikpIHsKKyAgICAgICAgICAgIG1fcXVldWVkVHJh
bnNhY3Rpb25zLnJlbW92ZSh0cmFuc2FjdGlvbik7CisgICAgICAgICAgICBtX3N0YXJ0ZWRUcmFu
c2FjdGlvbnMuYWRkKHRyYW5zYWN0aW9uKTsKKyAgICAgICAgICAgIHRyYW5zYWN0aW9uLT5ydW4o
KTsKKyAgICAgICAgfQorICAgIH0KK30KKworc3RhdGljIGJvb2wgZG9TY29wZXNPdmVybGFwKGNv
bnN0IEhhc2hTZXQ8aW50NjRfdD4mIHNjb3BlMSwgY29uc3QgSGFzaFNldDxpbnQ2NF90PiYgc2Nv
cGUyKQoreworICAgIGZvciAoSGFzaFNldDxpbnQ2NF90Pjo6Y29uc3RfaXRlcmF0b3IgaXQgPSBz
Y29wZTEuYmVnaW4oKTsgaXQgIT0gc2NvcGUxLmVuZCgpOyArK2l0KSB7CisgICAgICAgIGlmIChz
Y29wZTIuY29udGFpbnMoKml0KSkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAg
ICByZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wgSURCVHJhbnNhY3Rpb25Db29yZGluYXRvcjo6Y2Fu
UnVuVHJhbnNhY3Rpb24oSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKiB0cmFuc2FjdGlv
bikKK3sKKyAgICBBU1NFUlQobV9xdWV1ZWRUcmFuc2FjdGlvbnMuY29udGFpbnModHJhbnNhY3Rp
b24pKTsKKyAgICBzd2l0Y2ggKHRyYW5zYWN0aW9uLT5tb2RlKCkpIHsKKyAgICBjYXNlIEluZGV4
ZWREQjo6VHJhbnNhY3Rpb25WZXJzaW9uQ2hhbmdlOgorICAgICAgICBBU1NFUlQobV9xdWV1ZWRU
cmFuc2FjdGlvbnMuc2l6ZSgpID09IDEpOworICAgICAgICBBU1NFUlQobV9zdGFydGVkVHJhbnNh
Y3Rpb25zLmlzRW1wdHkoKSk7CisgICAgICAgIHJldHVybiB0cnVlOworCisgICAgY2FzZSBJbmRl
eGVkREI6OlRyYW5zYWN0aW9uUmVhZE9ubHk6CisgICAgICAgIHJldHVybiB0cnVlOworCisgICAg
Y2FzZSBJbmRleGVkREI6OlRyYW5zYWN0aW9uUmVhZFdyaXRlOgorICAgICAgICBmb3IgKEhhc2hT
ZXQ8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKj46OmNvbnN0X2l0ZXJhdG9yIGl0ID0g
bV9zdGFydGVkVHJhbnNhY3Rpb25zLmJlZ2luKCk7IGl0ICE9IG1fc3RhcnRlZFRyYW5zYWN0aW9u
cy5lbmQoKTsgKytpdCkgeworICAgICAgICAgICAgaWYgKCgqaXQpLT5tb2RlKCkgPT0gSW5kZXhl
ZERCOjpUcmFuc2FjdGlvblJlYWRXcml0ZSAmJiBkb1Njb3Blc092ZXJsYXAodHJhbnNhY3Rpb24t
PnNjb3BlKCksICgqaXQpLT5zY29wZSgpKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgICAgIH0KKyAgICAgICAgZm9yIChMaXN0SGFzaFNldDxJREJUcmFuc2FjdGlvbkJhY2tl
bmRJbnRlcmZhY2UqPjo6Y29uc3RfaXRlcmF0b3IgaXQgPSBtX3F1ZXVlZFRyYW5zYWN0aW9ucy5i
ZWdpbigpOyAqaXQgIT0gdHJhbnNhY3Rpb247ICsraXQpIHsKKyAgICAgICAgICAgIEFTU0VSVChp
dCAhPSBtX3F1ZXVlZFRyYW5zYWN0aW9ucy5lbmQoKSk7CisgICAgICAgICAgICBpZiAoKCppdCkt
Pm1vZGUoKSA9PSBJbmRleGVkREI6OlRyYW5zYWN0aW9uUmVhZFdyaXRlICYmIGRvU2NvcGVzT3Zl
cmxhcCh0cmFuc2FjdGlvbi0+c2NvcGUoKSwgKCppdCktPnNjb3BlKCkpKQorICAgICAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9
CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIGZhbHNlOworfQorCit9Owor
CisjZW5kaWYgLy8gRU5BQkxFKElOREVYRURfREFUQUJBU0UpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbkNvb3JkaW5hdG9yLmggYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbkNvb3JkaW5hdG9y
LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTBlMmIxMgotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9u
Q29vcmRpbmF0b3IuaApAQCAtMCwwICsxLDcxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEw
IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9S
UyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUK
KyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBJREJUcmFuc2Fj
dGlvbkNvb3JkaW5hdG9yX2gKKyNkZWZpbmUgSURCVHJhbnNhY3Rpb25Db29yZGluYXRvcl9oCisK
KyNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKKworI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+
CisjaW5jbHVkZSA8d3RmL0xpc3RIYXNoU2V0Lmg+CisjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgor
CituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVy
ZmFjZTsKKworLy8gVHJhbnNhY3Rpb25zIGFyZSBleGVjdXRlZCBpbiB0aGUgb3JkZXIgdGhlIHdl
cmUgY3JlYXRlZC4KK2NsYXNzIElEQlRyYW5zYWN0aW9uQ29vcmRpbmF0b3IgeworcHVibGljOgor
ICAgIHN0YXRpYyBQYXNzT3duUHRyPElEQlRyYW5zYWN0aW9uQ29vcmRpbmF0b3I+IGNyZWF0ZSgp
OworICAgIHZpcnR1YWwgfklEQlRyYW5zYWN0aW9uQ29vcmRpbmF0b3IoKTsKKworICAgIC8vIENh
bGxlZCBieSB0cmFuc2FjdGlvbnMgYXMgdGhleSBzdGFydCBhbmQgZmluaXNoLgorICAgIHZvaWQg
ZGlkQ3JlYXRlVHJhbnNhY3Rpb24oSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKik7Cisg
ICAgdm9pZCBkaWRTdGFydFRyYW5zYWN0aW9uKElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFj
ZSopOworICAgIHZvaWQgZGlkRmluaXNoVHJhbnNhY3Rpb24oSURCVHJhbnNhY3Rpb25CYWNrZW5k
SW50ZXJmYWNlKik7CisKKyNpZm5kZWYgTkRFQlVHCisgICAgYm9vbCBpc0FjdGl2ZShJREJUcmFu
c2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqKTsKKyNlbmRpZgorCitwcml2YXRlOgorICAgIElEQlRy
YW5zYWN0aW9uQ29vcmRpbmF0b3IoKTsKKworICAgIHZvaWQgcHJvY2Vzc1N0YXJ0ZWRUcmFuc2Fj
dGlvbnMoKTsKKyAgICBib29sIGNhblJ1blRyYW5zYWN0aW9uKElEQlRyYW5zYWN0aW9uQmFja2Vu
ZEludGVyZmFjZSopOworCisgICAgLy8gVGhpcyBpcyBqdXN0IGFuIGVmZmljaWVudCB3YXkgdG8g
a2VlcCByZWZlcmVuY2VzIHRvIGFsbCB0cmFuc2FjdGlvbnMuCisgICAgSGFzaE1hcDxJREJUcmFu
c2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqLCBSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50
ZXJmYWNlPiA+IG1fdHJhbnNhY3Rpb25zOworICAgIC8vIFRyYW5zYWN0aW9ucyBpbiBkaWZmZXJl
bnQgc3RhdGVzIGFyZSBncm91cGVkIGJlbG93LgorICAgIExpc3RIYXNoU2V0PElEQlRyYW5zYWN0
aW9uQmFja2VuZEludGVyZmFjZSo+IG1fcXVldWVkVHJhbnNhY3Rpb25zOworICAgIEhhc2hTZXQ8
SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKj4gbV9zdGFydGVkVHJhbnNhY3Rpb25zOwor
fTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKElOREVYRURf
REFUQUJBU0UpCisKKyNlbmRpZiAvLyBJREJUcmFuc2FjdGlvbkNvb3JkaW5hdG9yX2gKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2xldmVsZGIvSURCRGF0YWJh
c2VCYWNrZW5kTGV2ZWxEQi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9s
ZXZlbGRiL0lEQkRhdGFiYXNlQmFja2VuZExldmVsREIuY3BwCmluZGV4IDVjYTg2ZjUuLjE4MWUy
NTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2xldmVsZGIv
SURCRGF0YWJhc2VCYWNrZW5kTGV2ZWxEQi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvbGV2ZWxkYi9JREJEYXRhYmFzZUJhY2tlbmRMZXZlbERCLmNwcApAQCAtMzUs
NyArMzUsNyBAQAogI2luY2x1ZGUgIklEQktleVJhbmdlLmgiCiAjaW5jbHVkZSAiSURCT2JqZWN0
U3RvcmVCYWNrZW5kTGV2ZWxEQi5oIgogI2luY2x1ZGUgIklEQlRyYW5zYWN0aW9uQmFja2VuZExl
dmVsREIuaCIKLSNpbmNsdWRlICJJREJUcmFuc2FjdGlvbkNvb3JkaW5hdG9yTGV2ZWxEQi5oIgor
I2luY2x1ZGUgIklEQlRyYW5zYWN0aW9uQ29vcmRpbmF0b3IuaCIKICNpbmNsdWRlICJMb2dnaW5n
LmgiCiAjaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgiCiAjaW5jbHVkZSA8d3RmL1RlbXBvcmFyeUNo
YW5nZS5oPgpAQCAtNTUsNyArNTUsNyBAQCBJREJEYXRhYmFzZUJhY2tlbmRMZXZlbERCOjpJREJE
YXRhYmFzZUJhY2tlbmRMZXZlbERCKGNvbnN0IFN0cmluZyYgbmFtZSwgSURCQmFjawogICAgICwg
bV9tZXRhZGF0YShuYW1lLCBJbnZhbGlkSWQsIDAsIEludmFsaWRJZCkKICAgICAsIG1faWRlbnRp
Zmllcih1bmlxdWVJZGVudGlmaWVyKQogICAgICwgbV9mYWN0b3J5KGZhY3RvcnkpCi0gICAgLCBt
X3RyYW5zYWN0aW9uQ29vcmRpbmF0b3IoSURCVHJhbnNhY3Rpb25Db29yZGluYXRvckxldmVsREI6
OmNyZWF0ZSgpKQorICAgICwgbV90cmFuc2FjdGlvbkNvb3JkaW5hdG9yKElEQlRyYW5zYWN0aW9u
Q29vcmRpbmF0b3I6OmNyZWF0ZSgpKQogICAgICwgbV9jbG9zaW5nQ29ubmVjdGlvbihmYWxzZSkK
IHsKICAgICBBU1NFUlQoIW1fbWV0YWRhdGEubmFtZS5pc051bGwoKSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9sZXZlbGRiL0lEQkRhdGFiYXNlQmFja2Vu
ZExldmVsREIuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2xldmVsZGIvSURC
RGF0YWJhc2VCYWNrZW5kTGV2ZWxEQi5oCmluZGV4IDNhMDUwZjMuLjBmMDk4ZmYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2xldmVsZGIvSURCRGF0YWJhc2VC
YWNrZW5kTGV2ZWxEQi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2xl
dmVsZGIvSURCRGF0YWJhc2VCYWNrZW5kTGV2ZWxEQi5oCkBAIC00MSw3ICs0MSw3IEBAIGNsYXNz
IElEQkJhY2tpbmdTdG9yZUludGVyZmFjZTsKIGNsYXNzIElEQkRhdGFiYXNlOwogY2xhc3MgSURC
RmFjdG9yeUJhY2tlbmRJbnRlcmZhY2U7CiBjbGFzcyBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRl
cmZhY2U7Ci1jbGFzcyBJREJUcmFuc2FjdGlvbkNvb3JkaW5hdG9yTGV2ZWxEQjsKK2NsYXNzIElE
QlRyYW5zYWN0aW9uQ29vcmRpbmF0b3I7CiAKIGNsYXNzIElEQkRhdGFiYXNlQmFja2VuZExldmVs
REIgOiBwdWJsaWMgSURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlIHsKIHB1YmxpYzoKQEAgLTc0
LDcgKzc0LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBjcmVhdGVJbmRleChpbnQ2NF90
IHRyYW5zYWN0aW9uSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgaW50NjRfdCBpbmRleElkLCBj
b25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IElEQktleVBhdGgmLCBib29sIHVuaXF1ZSwgYm9vbCBt
dWx0aUVudHJ5KTsKICAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlSW5kZXgoaW50NjRfdCB0cmFuc2Fj
dGlvbklkLCBpbnQ2NF90IG9iamVjdFN0b3JlSWQsIGludDY0X3QgaW5kZXhJZCk7CiAKLSAgICBJ
REJUcmFuc2FjdGlvbkNvb3JkaW5hdG9yTGV2ZWxEQiogdHJhbnNhY3Rpb25Db29yZGluYXRvcigp
IGNvbnN0IHsgcmV0dXJuIG1fdHJhbnNhY3Rpb25Db29yZGluYXRvci5nZXQoKTsgfQorICAgIElE
QlRyYW5zYWN0aW9uQ29vcmRpbmF0b3IqIHRyYW5zYWN0aW9uQ29vcmRpbmF0b3IoKSBjb25zdCB7
IHJldHVybiBtX3RyYW5zYWN0aW9uQ29vcmRpbmF0b3IuZ2V0KCk7IH0KICAgICB2b2lkIHRyYW5z
YWN0aW9uU3RhcnRlZChJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqKTsKICAgICB2b2lk
IHRyYW5zYWN0aW9uRmluaXNoZWQoSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKik7CiAg
ICAgdm9pZCB0cmFuc2FjdGlvbkZpbmlzaGVkQW5kQ29tcGxldGVGaXJlZChJREJUcmFuc2FjdGlv
bkJhY2tlbmRJbnRlcmZhY2UqKTsKQEAgLTExMCw3ICsxMTAsNyBAQCBwcml2YXRlOgogICAgIC8v
IFRoaXMgbWlnaHQgbm90IG5lZWQgdG8gYmUgYSBSZWZQdHIgc2luY2UgdGhlIGZhY3RvcnkncyBs
aWZldGltZSBpcyB0aGF0IG9mIHRoZSBwYWdlIGdyb3VwLCBidXQgaXQncyBiZXR0ZXIgdG8gYmUg
Y29uc2Vydml0aXZlIHRoYW4gc29ycnkuCiAgICAgUmVmUHRyPElEQkZhY3RvcnlCYWNrZW5kSW50
ZXJmYWNlPiBtX2ZhY3Rvcnk7CiAKLSAgICBPd25QdHI8SURCVHJhbnNhY3Rpb25Db29yZGluYXRv
ckxldmVsREI+IG1fdHJhbnNhY3Rpb25Db29yZGluYXRvcjsKKyAgICBPd25QdHI8SURCVHJhbnNh
Y3Rpb25Db29yZGluYXRvcj4gbV90cmFuc2FjdGlvbkNvb3JkaW5hdG9yOwogICAgIFJlZlB0cjxJ
REJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2U+IG1fcnVubmluZ1ZlcnNpb25DaGFuZ2VUcmFu
c2FjdGlvbjsKIAogICAgIHR5cGVkZWYgSGFzaE1hcDxpbnQ2NF90LCBJREJUcmFuc2FjdGlvbkJh
Y2tlbmRJbnRlcmZhY2UqPiBUcmFuc2FjdGlvbk1hcDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL2xldmVsZGIvSURCRmFjdG9yeUJhY2tlbmRMZXZlbERCLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2xldmVsZGIvSURCRmFjdG9yeUJh
Y2tlbmRMZXZlbERCLmNwcAppbmRleCA1ZmExYWNjLi4wNGU0YzFiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9sZXZlbGRiL0lEQkZhY3RvcnlCYWNrZW5kTGV2
ZWxEQi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvbGV2ZWxkYi9J
REJGYWN0b3J5QmFja2VuZExldmVsREIuY3BwCkBAIC0zNCw3ICszNCw3IEBACiAjaW5jbHVkZSAi
SURCRGF0YWJhc2VCYWNrZW5kTGV2ZWxEQi5oIgogI2luY2x1ZGUgIklEQkRhdGFiYXNlRXhjZXB0
aW9uLmgiCiAjaW5jbHVkZSAiSURCVHJhbnNhY3Rpb25CYWNrZW5kTGV2ZWxEQi5oIgotI2luY2x1
ZGUgIklEQlRyYW5zYWN0aW9uQ29vcmRpbmF0b3JMZXZlbERCLmgiCisjaW5jbHVkZSAiSURCVHJh
bnNhY3Rpb25Db29yZGluYXRvci5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJT
ZWN1cml0eU9yaWdpbi5oIgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9sZXZlbGRiL0lEQlRyYW5zYWN0aW9uQmFja2VuZExldmVsREIuY3BwIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvbGV2ZWxkYi9JREJUcmFuc2FjdGlvbkJhY2tlbmRM
ZXZlbERCLmNwcAppbmRleCBlNGVhNGM4Li4xZTY2Yjc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9sZXZlbGRiL0lEQlRyYW5zYWN0aW9uQmFja2VuZExldmVs
REIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2xldmVsZGIvSURC
VHJhbnNhY3Rpb25CYWNrZW5kTGV2ZWxEQi5jcHAKQEAgLTM1LDcgKzM1LDcgQEAKICNpbmNsdWRl
ICJJREJEYXRhYmFzZUV4Y2VwdGlvbi5oIgogI2luY2x1ZGUgIklEQktleVJhbmdlLmgiCiAjaW5j
bHVkZSAiSURCVHJhbnNhY3Rpb25CYWNrZW5kTGV2ZWxEQk9wZXJhdGlvbnMuaCIKLSNpbmNsdWRl
ICJJREJUcmFuc2FjdGlvbkNvb3JkaW5hdG9yTGV2ZWxEQi5oIgorI2luY2x1ZGUgIklEQlRyYW5z
YWN0aW9uQ29vcmRpbmF0b3IuaCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2xl
dmVsZGIvSURCVHJhbnNhY3Rpb25CYWNrZW5kTGV2ZWxEQi5oIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvbGV2ZWxkYi9JREJUcmFuc2FjdGlvbkJhY2tlbmRMZXZlbERCLmgKaW5k
ZXggNTUzOWQ4NS4uMTQ4ZWZmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvbGV2ZWxkYi9JREJUcmFuc2FjdGlvbkJhY2tlbmRMZXZlbERCLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvbGV2ZWxkYi9JREJUcmFuc2FjdGlvbkJhY2tl
bmRMZXZlbERCLmgKQEAgLTQ0LDcgKzQ0LDcgQEAgY2xhc3MgSURCQmFja2luZ1N0b3JlTGV2ZWxE
QjsKIGNsYXNzIElEQkN1cnNvckJhY2tlbmRMZXZlbERCOwogY2xhc3MgSURCRGF0YWJhc2VDYWxs
YmFja3M7CiAKLWNsYXNzIElEQlRyYW5zYWN0aW9uQmFja2VuZExldmVsREIgOiBwdWJsaWMgSURC
VHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlIHsKK2NsYXNzIElEQlRyYW5zYWN0aW9uQmFja2Vu
ZExldmVsREIgRklOQUwgOiBwdWJsaWMgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlIHsK
IHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRMZXZl
bERCPiBjcmVhdGUoSURCRGF0YWJhc2VCYWNrZW5kTGV2ZWxEQiosIGludDY0X3QgdHJhbnNhY3Rp
b25JZCwgUGFzc1JlZlB0cjxJREJEYXRhYmFzZUNhbGxiYWNrcz4sIGNvbnN0IFZlY3RvcjxpbnQ2
NF90PiYgb2JqZWN0U3RvcmVJZHMsIEluZGV4ZWREQjo6VHJhbnNhY3Rpb25Nb2RlKTsKICAgICB2
aXJ0dWFsIH5JREJUcmFuc2FjdGlvbkJhY2tlbmRMZXZlbERCKCk7CkBAIC01OSw5ICs1OSw5IEBA
IHB1YmxpYzoKICAgICAgICAgdmlydHVhbCB2b2lkIHBlcmZvcm0oKSA9IDA7CiAgICAgfTsKIAot
ICAgIHZvaWQgcnVuKCk7CisgICAgdmlydHVhbCB2b2lkIHJ1bigpIE9WRVJSSURFOwogICAgIHZp
cnR1YWwgSW5kZXhlZERCOjpUcmFuc2FjdGlvbk1vZGUgbW9kZSgpIGNvbnN0IE9WRVJSSURFIEZJ
TkFMIHsgcmV0dXJuIG1fbW9kZTsgfQotICAgIGNvbnN0IEhhc2hTZXQ8aW50NjRfdD4mIHNjb3Bl
KCkgY29uc3QgeyByZXR1cm4gbV9vYmplY3RTdG9yZUlkczsgfQorICAgIGNvbnN0IEhhc2hTZXQ8
aW50NjRfdD4mIHNjb3BlKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gbV9vYmplY3RTdG9yZUlk
czsgfQogICAgIHZvaWQgc2NoZWR1bGVUYXNrKFBhc3NPd25QdHI8T3BlcmF0aW9uPiB0YXNrLCBQ
YXNzT3duUHRyPE9wZXJhdGlvbj4gYWJvcnRUYXNrID0gbnVsbHB0cikgeyBzY2hlZHVsZVRhc2so
SURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlOjpOb3JtYWxUYXNrLCB0YXNrLCBhYm9ydFRhc2sp
OyB9CiAgICAgdm9pZCBzY2hlZHVsZVRhc2soSURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlOjpU
YXNrVHlwZSwgUGFzc093blB0cjxPcGVyYXRpb24+LCBQYXNzT3duUHRyPE9wZXJhdGlvbj4gYWJv
cnRUYXNrID0gbnVsbHB0cik7CiAgICAgdm9pZCByZWdpc3Rlck9wZW5DdXJzb3IoSURCQ3Vyc29y
QmFja2VuZExldmVsREIqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL2xldmVsZGIvSURCVHJhbnNhY3Rpb25Db29yZGluYXRvckxldmVsREIuY3BwIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvbGV2ZWxkYi9JREJUcmFuc2FjdGlvbkNvb3Jk
aW5hdG9yTGV2ZWxEQi5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM4NWEyZTEu
LjAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvbGV2ZWxkYi9J
REJUcmFuc2FjdGlvbkNvb3JkaW5hdG9yTGV2ZWxEQi5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwx
NTMgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0
OgotICoKLSAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuICBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKLSAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCi0g
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRSBJTVBMSUVECi0gKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0gKiBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
Ci0gKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUwotICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwotICogTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5ECi0gKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCi0g
KiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJJREJUcmFu
c2FjdGlvbkNvb3JkaW5hdG9yTGV2ZWxEQi5oIgotCi0jaWYgRU5BQkxFKElOREVYRURfREFUQUJB
U0UpICYmIFVTRShMRVZFTERCKQotCi0jaW5jbHVkZSAiSURCRGF0YWJhc2VCYWNrZW5kTGV2ZWxE
Qi5oIgotI2luY2x1ZGUgIklEQkRhdGFiYXNlQ2FsbGJhY2tzLmgiCi0jaW5jbHVkZSAiSURCVHJh
bnNhY3Rpb25CYWNrZW5kTGV2ZWxEQi5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLVBhc3NP
d25QdHI8SURCVHJhbnNhY3Rpb25Db29yZGluYXRvckxldmVsREI+IElEQlRyYW5zYWN0aW9uQ29v
cmRpbmF0b3JMZXZlbERCOjpjcmVhdGUoKQotewotICAgIHJldHVybiBhZG9wdFB0cihuZXcgSURC
VHJhbnNhY3Rpb25Db29yZGluYXRvckxldmVsREIoKSk7Ci19Ci0KLUlEQlRyYW5zYWN0aW9uQ29v
cmRpbmF0b3JMZXZlbERCOjpJREJUcmFuc2FjdGlvbkNvb3JkaW5hdG9yTGV2ZWxEQigpCi17Ci19
Ci0KLUlEQlRyYW5zYWN0aW9uQ29vcmRpbmF0b3JMZXZlbERCOjp+SURCVHJhbnNhY3Rpb25Db29y
ZGluYXRvckxldmVsREIoKQotewotfQotCi12b2lkIElEQlRyYW5zYWN0aW9uQ29vcmRpbmF0b3JM
ZXZlbERCOjpkaWRDcmVhdGVUcmFuc2FjdGlvbihJREJUcmFuc2FjdGlvbkJhY2tlbmRMZXZlbERC
KiB0cmFuc2FjdGlvbikKLXsKLSAgICBBU1NFUlQoIW1fdHJhbnNhY3Rpb25zLmNvbnRhaW5zKHRy
YW5zYWN0aW9uKSk7Ci0gICAgbV90cmFuc2FjdGlvbnMuYWRkKHRyYW5zYWN0aW9uLCB0cmFuc2Fj
dGlvbik7Ci19Ci0KLXZvaWQgSURCVHJhbnNhY3Rpb25Db29yZGluYXRvckxldmVsREI6OmRpZFN0
YXJ0VHJhbnNhY3Rpb24oSURCVHJhbnNhY3Rpb25CYWNrZW5kTGV2ZWxEQiogdHJhbnNhY3Rpb24p
Ci17Ci0gICAgQVNTRVJUKG1fdHJhbnNhY3Rpb25zLmNvbnRhaW5zKHRyYW5zYWN0aW9uKSk7Ci0K
LSAgICBtX3F1ZXVlZFRyYW5zYWN0aW9ucy5hZGQodHJhbnNhY3Rpb24pOwotICAgIHByb2Nlc3NT
dGFydGVkVHJhbnNhY3Rpb25zKCk7Ci19Ci0KLXZvaWQgSURCVHJhbnNhY3Rpb25Db29yZGluYXRv
ckxldmVsREI6OmRpZEZpbmlzaFRyYW5zYWN0aW9uKElEQlRyYW5zYWN0aW9uQmFja2VuZExldmVs
REIqIHRyYW5zYWN0aW9uKQotewotICAgIEFTU0VSVChtX3RyYW5zYWN0aW9ucy5jb250YWlucyh0
cmFuc2FjdGlvbikpOwotCi0gICAgaWYgKG1fcXVldWVkVHJhbnNhY3Rpb25zLmNvbnRhaW5zKHRy
YW5zYWN0aW9uKSkgewotICAgICAgICBBU1NFUlQoIW1fc3RhcnRlZFRyYW5zYWN0aW9ucy5jb250
YWlucyh0cmFuc2FjdGlvbikpOwotICAgICAgICBtX3F1ZXVlZFRyYW5zYWN0aW9ucy5yZW1vdmUo
dHJhbnNhY3Rpb24pOwotICAgIH0gZWxzZSBpZiAobV9zdGFydGVkVHJhbnNhY3Rpb25zLmNvbnRh
aW5zKHRyYW5zYWN0aW9uKSkKLSAgICAgICAgbV9zdGFydGVkVHJhbnNhY3Rpb25zLnJlbW92ZSh0
cmFuc2FjdGlvbik7Ci0KLSAgICBtX3RyYW5zYWN0aW9ucy5yZW1vdmUodHJhbnNhY3Rpb24pOwot
Ci0gICAgcHJvY2Vzc1N0YXJ0ZWRUcmFuc2FjdGlvbnMoKTsKLX0KLQotI2lmbmRlZiBOREVCVUcK
LS8vIFZlcmlmaWVzIGludGVybmFsIGNvbnNpc3RpZW5jeSB3aGlsZSByZXR1cm5pbmcgd2hldGhl
ciBhbnl0aGluZyBpcyBmb3VuZC4KLWJvb2wgSURCVHJhbnNhY3Rpb25Db29yZGluYXRvckxldmVs
REI6OmlzQWN0aXZlKElEQlRyYW5zYWN0aW9uQmFja2VuZExldmVsREIqIHRyYW5zYWN0aW9uKQot
ewotICAgIGJvb2wgZm91bmQgPSBmYWxzZTsKLSAgICBpZiAobV9xdWV1ZWRUcmFuc2FjdGlvbnMu
Y29udGFpbnModHJhbnNhY3Rpb24pKQotICAgICAgICBmb3VuZCA9IHRydWU7Ci0gICAgaWYgKG1f
c3RhcnRlZFRyYW5zYWN0aW9ucy5jb250YWlucyh0cmFuc2FjdGlvbikpIHsKLSAgICAgICAgQVNT
RVJUKCFmb3VuZCk7Ci0gICAgICAgIGZvdW5kID0gdHJ1ZTsKLSAgICB9Ci0gICAgQVNTRVJUKGZv
dW5kID09IG1fdHJhbnNhY3Rpb25zLmNvbnRhaW5zKHRyYW5zYWN0aW9uKSk7Ci0gICAgcmV0dXJu
IGZvdW5kOwotfQotI2VuZGlmCi0KLXZvaWQgSURCVHJhbnNhY3Rpb25Db29yZGluYXRvckxldmVs
REI6OnByb2Nlc3NTdGFydGVkVHJhbnNhY3Rpb25zKCkKLXsKLSAgICBpZiAobV9xdWV1ZWRUcmFu
c2FjdGlvbnMuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBBU1NFUlQobV9zdGFy
dGVkVHJhbnNhY3Rpb25zLmlzRW1wdHkoKSB8fCAoKm1fc3RhcnRlZFRyYW5zYWN0aW9ucy5iZWdp
bigpKS0+bW9kZSgpICE9IEluZGV4ZWREQjo6VHJhbnNhY3Rpb25WZXJzaW9uQ2hhbmdlKTsKLQot
ICAgIExpc3RIYXNoU2V0PElEQlRyYW5zYWN0aW9uQmFja2VuZExldmVsREIqPjo6Y29uc3RfaXRl
cmF0b3IgaXQgPSBtX3F1ZXVlZFRyYW5zYWN0aW9ucy5iZWdpbigpOwotICAgIHdoaWxlIChpdCAh
PSBtX3F1ZXVlZFRyYW5zYWN0aW9ucy5lbmQoKSkgewotICAgICAgICBJREJUcmFuc2FjdGlvbkJh
Y2tlbmRMZXZlbERCKiB0cmFuc2FjdGlvbiA9ICppdDsKLSAgICAgICAgKytpdDsKLSAgICAgICAg
aWYgKGNhblJ1blRyYW5zYWN0aW9uKHRyYW5zYWN0aW9uKSkgewotICAgICAgICAgICAgbV9xdWV1
ZWRUcmFuc2FjdGlvbnMucmVtb3ZlKHRyYW5zYWN0aW9uKTsKLSAgICAgICAgICAgIG1fc3RhcnRl
ZFRyYW5zYWN0aW9ucy5hZGQodHJhbnNhY3Rpb24pOwotICAgICAgICAgICAgdHJhbnNhY3Rpb24t
PnJ1bigpOwotICAgICAgICB9Ci0gICAgfQotfQotCi1zdGF0aWMgYm9vbCBkb1Njb3Blc092ZXJs
YXAoY29uc3QgSGFzaFNldDxpbnQ2NF90PiYgc2NvcGUxLCBjb25zdCBIYXNoU2V0PGludDY0X3Q+
JiBzY29wZTIpCi17Ci0gICAgZm9yIChIYXNoU2V0PGludDY0X3Q+Ojpjb25zdF9pdGVyYXRvciBp
dCA9IHNjb3BlMS5iZWdpbigpOyBpdCAhPSBzY29wZTEuZW5kKCk7ICsraXQpIHsKLSAgICAgICAg
aWYgKHNjb3BlMi5jb250YWlucygqaXQpKQotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAg
fQotICAgIHJldHVybiBmYWxzZTsKLX0KLQotYm9vbCBJREJUcmFuc2FjdGlvbkNvb3JkaW5hdG9y
TGV2ZWxEQjo6Y2FuUnVuVHJhbnNhY3Rpb24oSURCVHJhbnNhY3Rpb25CYWNrZW5kTGV2ZWxEQiog
dHJhbnNhY3Rpb24pCi17Ci0gICAgQVNTRVJUKG1fcXVldWVkVHJhbnNhY3Rpb25zLmNvbnRhaW5z
KHRyYW5zYWN0aW9uKSk7Ci0gICAgc3dpdGNoICh0cmFuc2FjdGlvbi0+bW9kZSgpKSB7Ci0gICAg
Y2FzZSBJbmRleGVkREI6OlRyYW5zYWN0aW9uVmVyc2lvbkNoYW5nZToKLSAgICAgICAgQVNTRVJU
KG1fcXVldWVkVHJhbnNhY3Rpb25zLnNpemUoKSA9PSAxKTsKLSAgICAgICAgQVNTRVJUKG1fc3Rh
cnRlZFRyYW5zYWN0aW9ucy5pc0VtcHR5KCkpOwotICAgICAgICByZXR1cm4gdHJ1ZTsKLQotICAg
IGNhc2UgSW5kZXhlZERCOjpUcmFuc2FjdGlvblJlYWRPbmx5OgotICAgICAgICByZXR1cm4gdHJ1
ZTsKLQotICAgIGNhc2UgSW5kZXhlZERCOjpUcmFuc2FjdGlvblJlYWRXcml0ZToKLSAgICAgICAg
Zm9yIChIYXNoU2V0PElEQlRyYW5zYWN0aW9uQmFja2VuZExldmVsREIqPjo6Y29uc3RfaXRlcmF0
b3IgaXQgPSBtX3N0YXJ0ZWRUcmFuc2FjdGlvbnMuYmVnaW4oKTsgaXQgIT0gbV9zdGFydGVkVHJh
bnNhY3Rpb25zLmVuZCgpOyArK2l0KSB7Ci0gICAgICAgICAgICBpZiAoKCppdCktPm1vZGUoKSA9
PSBJbmRleGVkREI6OlRyYW5zYWN0aW9uUmVhZFdyaXRlICYmIGRvU2NvcGVzT3ZlcmxhcCh0cmFu
c2FjdGlvbi0+c2NvcGUoKSwgKCppdCktPnNjb3BlKCkpKQotICAgICAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKLSAgICAgICAgfQotICAgICAgICBmb3IgKExpc3RIYXNoU2V0PElEQlRyYW5zYWN0
aW9uQmFja2VuZExldmVsREIqPjo6Y29uc3RfaXRlcmF0b3IgaXQgPSBtX3F1ZXVlZFRyYW5zYWN0
aW9ucy5iZWdpbigpOyAqaXQgIT0gdHJhbnNhY3Rpb247ICsraXQpIHsKLSAgICAgICAgICAgIEFT
U0VSVChpdCAhPSBtX3F1ZXVlZFRyYW5zYWN0aW9ucy5lbmQoKSk7Ci0gICAgICAgICAgICBpZiAo
KCppdCktPm1vZGUoKSA9PSBJbmRleGVkREI6OlRyYW5zYWN0aW9uUmVhZFdyaXRlICYmIGRvU2Nv
cGVzT3ZlcmxhcCh0cmFuc2FjdGlvbi0+c2NvcGUoKSwgKCppdCktPnNjb3BlKCkpKQotICAgICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4gdHJ1ZTsK
LSAgICB9Ci0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIGZhbHNlOwotfQot
Ci19OwotCi0jZW5kaWYgLy8gRU5BQkxFKElOREVYRURfREFUQUJBU0UpICYmIFVTRShMRVZFTERC
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvbGV2ZWxkYi9J
REJUcmFuc2FjdGlvbkNvb3JkaW5hdG9yTGV2ZWxEQi5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvbGV2ZWxkYi9JREJUcmFuc2FjdGlvbkNvb3JkaW5hdG9yTGV2ZWxEQi5oCmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlNjFhNmI0Li4wMDAwMDAwCi0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2xldmVsZGIvSURCVHJhbnNhY3Rpb25Db29yZGlu
YXRvckxldmVsREIuaAorKysgL2Rldi9udWxsCkBAIC0xLDcxICswLDAgQEAKLS8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqCi0gKiAxLiAgUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCi0gKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJ
VFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAotICog
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UiBQVVJQT1NFIEFSRQotICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1Ig
SVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQotICogRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMK
LSAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsKLSAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAotICogT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgotICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWZu
ZGVmIElEQlRyYW5zYWN0aW9uQ29vcmRpbmF0b3JMZXZlbERCX2gKLSNkZWZpbmUgSURCVHJhbnNh
Y3Rpb25Db29yZGluYXRvckxldmVsREJfaAotCi0jaWYgRU5BQkxFKElOREVYRURfREFUQUJBU0Up
Ci0KLSNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgotI2luY2x1ZGUgPHd0Zi9MaXN0SGFzaFNldC5o
PgotI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFz
cyBJREJUcmFuc2FjdGlvbkJhY2tlbmRMZXZlbERCOwotCi0vLyBUcmFuc2FjdGlvbnMgYXJlIGV4
ZWN1dGVkIGluIHRoZSBvcmRlciB0aGUgd2VyZSBjcmVhdGVkLgotY2xhc3MgSURCVHJhbnNhY3Rp
b25Db29yZGluYXRvckxldmVsREIgewotcHVibGljOgotICAgIHN0YXRpYyBQYXNzT3duUHRyPElE
QlRyYW5zYWN0aW9uQ29vcmRpbmF0b3JMZXZlbERCPiBjcmVhdGUoKTsKLSAgICB2aXJ0dWFsIH5J
REJUcmFuc2FjdGlvbkNvb3JkaW5hdG9yTGV2ZWxEQigpOwotCi0gICAgLy8gQ2FsbGVkIGJ5IHRy
YW5zYWN0aW9ucyBhcyB0aGV5IHN0YXJ0IGFuZCBmaW5pc2guCi0gICAgdm9pZCBkaWRDcmVhdGVU
cmFuc2FjdGlvbihJREJUcmFuc2FjdGlvbkJhY2tlbmRMZXZlbERCKik7Ci0gICAgdm9pZCBkaWRT
dGFydFRyYW5zYWN0aW9uKElEQlRyYW5zYWN0aW9uQmFja2VuZExldmVsREIqKTsKLSAgICB2b2lk
IGRpZEZpbmlzaFRyYW5zYWN0aW9uKElEQlRyYW5zYWN0aW9uQmFja2VuZExldmVsREIqKTsKLQot
I2lmbmRlZiBOREVCVUcKLSAgICBib29sIGlzQWN0aXZlKElEQlRyYW5zYWN0aW9uQmFja2VuZExl
dmVsREIqKTsKLSNlbmRpZgotCi1wcml2YXRlOgotICAgIElEQlRyYW5zYWN0aW9uQ29vcmRpbmF0
b3JMZXZlbERCKCk7Ci0KLSAgICB2b2lkIHByb2Nlc3NTdGFydGVkVHJhbnNhY3Rpb25zKCk7Ci0g
ICAgYm9vbCBjYW5SdW5UcmFuc2FjdGlvbihJREJUcmFuc2FjdGlvbkJhY2tlbmRMZXZlbERCKik7
Ci0KLSAgICAvLyBUaGlzIGlzIGp1c3QgYW4gZWZmaWNpZW50IHdheSB0byBrZWVwIHJlZmVyZW5j
ZXMgdG8gYWxsIHRyYW5zYWN0aW9ucy4KLSAgICBIYXNoTWFwPElEQlRyYW5zYWN0aW9uQmFja2Vu
ZExldmVsREIqLCBSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kTGV2ZWxEQj4gPiBtX3RyYW5z
YWN0aW9uczsKLSAgICAvLyBUcmFuc2FjdGlvbnMgaW4gZGlmZmVyZW50IHN0YXRlcyBhcmUgZ3Jv
dXBlZCBiZWxvdy4KLSAgICBMaXN0SGFzaFNldDxJREJUcmFuc2FjdGlvbkJhY2tlbmRMZXZlbERC
Kj4gbV9xdWV1ZWRUcmFuc2FjdGlvbnM7Ci0gICAgSGFzaFNldDxJREJUcmFuc2FjdGlvbkJhY2tl
bmRMZXZlbERCKj4gbV9zdGFydGVkVHJhbnNhY3Rpb25zOwotfTsKLQotfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKElOREVYRURfREFUQUJBU0UpCi0KLSNlbmRpZiAv
LyBJREJUcmFuc2FjdGlvbkNvb3JkaW5hdG9yTGV2ZWxEQl9oCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggM2I3OTgwMS4uNGJkODdh
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagpAQCAtMTgxMSw2ICsxODExLDggQEAKIAkJNTFFM0Y5RDYwREEwNUUxRDAwMjUwOTExIC8q
IEpTU3RvcmFnZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA1MUUzRjlENDBEQTA1RTFEMDAyNTA5MTEgLyogSlNTdG9yYWdlLmNwcCAqLzsgfTsKIAkJ
NTFFNDE0MzQxNkE2NTk2MzAwQzYzM0M3IC8qIFJlc291cmNlSGFuZGxlVHlwZXMuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxRTQxNDMyMTZBNjU5NTEw
MEM2MzNDNyAvKiBSZXNvdXJjZUhhbmRsZVR5cGVzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTFFNjgyMTAxNjM4NzMwMjAwM0JCRjNDIC8qIExv
YWRlclN0cmF0ZWd5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA1MUU2ODIwRjE2Mzg3MzAyMDAzQkJGM0MgLyogTG9hZGVyU3RyYXRlZ3kuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk1MUVBQzU2NzE4MTVF
RDNFMDA0RjFCQTQgLyogSURCVHJhbnNhY3Rpb25Db29yZGluYXRvci5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUVBQzU2NTE4MTVFRDNFMDA0RjFC
QTQgLyogSURCVHJhbnNhY3Rpb25Db29yZGluYXRvci5jcHAgKi87IH07CisJCTUxRUFDNTY4MTgx
NUVEM0UwMDRGMUJBNCAvKiBJREJUcmFuc2FjdGlvbkNvb3JkaW5hdG9yLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUVBQzU2NjE4MTVFRDNFMDA0RjFC
QTQgLyogSURCVHJhbnNhY3Rpb25Db29yZGluYXRvci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTUxRUM5MjY1MENFOTBERDQwMEY5MDMwOCAvKiBK
U0N1c3RvbVNRTFN0YXRlbWVudEVycm9yQ2FsbGJhY2suY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFFQzkyNUQwQ0U5MERENDAwRjkwMzA4IC8qIEpT
Q3VzdG9tU1FMU3RhdGVtZW50RXJyb3JDYWxsYmFjay5jcHAgKi87IH07CiAJCTUxRjZFMEEzMTgx
MUQyNTIwMDU4QTAwQSAvKiBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxRjZFMDhGMTgxMUQyNTIw
MDU4QTAwQSAvKiBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1MUZBMkQ3ODE1MjEzMkIzMDBD
MUJBMEIgLyogRE9NV2luZG93RXh0ZW5zaW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA1MTdGQkExODE1MUFBNzFCMDBCNTc5NTkgLyogRE9NV2luZG93
RXh0ZW5zaW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKQEAgLTg0MDksNiArODQxMSw4IEBACiAJCTUxRTNGOUQ1MERBMDVFMUQwMDI1MDkxMSAvKiBK
U1N0b3JhZ2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNTdG9yYWdlLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxRTQxNDMyMTZBNjU5NTEwMEM2MzNDNyAv
KiBSZXNvdXJjZUhhbmRsZVR5cGVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFJlc291cmNlSGFuZGxlVHlwZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTFF
NjgyMEYxNjM4NzMwMjAwM0JCRjNDIC8qIExvYWRlclN0cmF0ZWd5LmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IExvYWRlclN0cmF0ZWd5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTUxRUFDNTY1MTgxNUVEM0UwMDRGMUJBNCAvKiBJREJUcmFuc2FjdGlvbkNvb3Jk
aW5hdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IElEQlRyYW5z
YWN0aW9uQ29vcmRpbmF0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MUVB
QzU2NjE4MTVFRDNFMDA0RjFCQTQgLyogSURCVHJhbnNhY3Rpb25Db29yZGluYXRvci5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJREJUcmFuc2FjdGlvbkNvb3JkaW5hdG9yLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxRUM5MjVEMENFOTBERDQwMEY5MDMwOCAv
KiBKU0N1c3RvbVNRTFN0YXRlbWVudEVycm9yQ2FsbGJhY2suY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gSlNDdXN0b21TUUxTdGF0ZW1lbnRFcnJvckNhbGxiYWNrLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTFGNkEzRDUwNjYzQkYwNDAwNEQyOTE5
IC8qIEhUTUxDYW52YXNFbGVtZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSAzMDsgaW5kZW50V2lkdGggPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEhUTUxDYW52YXNFbGVtZW50LmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgdGFiV2lkdGggPSA4OyB1c2VzVGFicyA9IDA7IH07CiAJCTUxRjZBM0Q2
MDY2M0JGMDQwMDREMjkxOSAvKiBIVE1MQ2FudmFzRWxlbWVudC5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBpbmRlbnRXaWR0aCA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBIVE1MQ2FudmFzRWxlbWVudC5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB0YWJXaWR0aCA9IDg7IHVzZXNUYWJzID0gMDsgfTsKQEAg
LTE2NzU2LDYgKzE2NzYwLDggQEAKIAkJCQk1MUQ3MTlBNTE4MTEwNkUwMDAxNkRDNTEgLyogSURC
VHJhbnNhY3Rpb24uaCAqLywKIAkJCQk1MUQ3MTlBNjE4MTEwNkUwMDAxNkRDNTEgLyogSURCVHJh
bnNhY3Rpb24uaWRsICovLAogCQkJCTUxRjZFMDhGMTgxMUQyNTIwMDU4QTAwQSAvKiBJREJUcmFu
c2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UuaCAqLywKKwkJCQk1MUVBQzU2NTE4MTVFRDNFMDA0RjFC
QTQgLyogSURCVHJhbnNhY3Rpb25Db29yZGluYXRvci5jcHAgKi8sCisJCQkJNTFFQUM1NjYxODE1
RUQzRTAwNEYxQkE0IC8qIElEQlRyYW5zYWN0aW9uQ29vcmRpbmF0b3IuaCAqLywKIAkJCQk1MUQ3
MTlBQjE4MTEwNkUwMDAxNkRDNTEgLyogSURCVmVyc2lvbkNoYW5nZUV2ZW50LmNwcCAqLywKIAkJ
CQk1MUQ3MTlBQzE4MTEwNkUwMDAxNkRDNTEgLyogSURCVmVyc2lvbkNoYW5nZUV2ZW50LmggKi8s
CiAJCQkJNTFENzE5QUQxODExMDZFMDAwMTZEQzUxIC8qIElEQlZlcnNpb25DaGFuZ2VFdmVudC5p
ZGwgKi8sCkBAIC0yMjgyOCw2ICsyMjgzNCw3IEBACiAJCQkJMkUyRDk5Q0UxMEUyQkJEQTAwNDk2
MzM3IC8qIEpTQmxvYi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMTQ0OUUyNEMxMDdENEE4NDAwQjU3
OTNGIC8qIEpTQ2FsbGJhY2tEYXRhLmggaW4gSGVhZGVycyAqLywKIAkJCQk2NURGMzIzQTA5RDFE
RTY1MDAwQkUzMjUgLyogSlNDYW52YXNHcmFkaWVudC5oIGluIEhlYWRlcnMgKi8sCisJCQkJNTFF
QUM1NjgxODE1RUQzRTAwNEYxQkE0IC8qIElEQlRyYW5zYWN0aW9uQ29vcmRpbmF0b3IuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTY1REYzMjNDMDlEMURFNjUwMDBCRTMyNSAvKiBKU0NhbnZhc1BhdHRl
cm4uaCBpbiBIZWFkZXJzICovLAogCQkJCTY1REYzMjNDMDlEMURFNjUwMDFCRTMyNSAvKiBKU0Nh
bnZhc1Byb3h5LmggaW4gSGVhZGVycyAqLywKIAkJCQlFNEQ1OEVCNTE3QjREQkRDMDBDQkRDQTgg
LyogU3R5bGVSZXNvbHZlRm9yRG9jdW1lbnQuaCBpbiBIZWFkZXJzICovLApAQCAtMjYzNTcsNiAr
MjYzNjQsNyBAQAogCQkJCTFBRTgyRkVDMENBQjA3RUUwMDIyMzdBRSAvKiBKU1NRTFJlc3VsdFNl
dC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQUZFMTE5OTBDQkZGQ0M0MDAzMDE3RkEgLyogSlNT
UUxSZXN1bHRTZXRSb3dMaXN0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUxRENFODAyMENBQzlG
MUMwMDQ4ODM1OCAvKiBKU1NRTFJlc3VsdFNldFJvd0xpc3RDdXN0b20uY3BwIGluIFNvdXJjZXMg
Ki8sCisJCQkJNTFFQUM1NjcxODE1RUQzRTAwNEYxQkE0IC8qIElEQlRyYW5zYWN0aW9uQ29vcmRp
bmF0b3IuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQjU5REQ2QTYxMTkwMkE2MjAwN0U5Njg0IC8q
IEpTU1FMU3RhdGVtZW50Q2FsbGJhY2suY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQjU5REQ2QUEx
MTkwMkE3MTAwN0U5Njg0IC8qIEpTU1FMU3RhdGVtZW50RXJyb3JDYWxsYmFjay5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQk1MTRDNzYzODBDRTkyMjVFMDA3RUYzQ0QgLyogSlNTUUxUcmFuc2FjdGlv
bi5jcHAgaW4gU291cmNlcyAqLywK
</data>
<flag name="commit-queue"
          id="237388"
          type_id="3"
          status="-"
          setter="eflews.bot"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>214794</attachid>
            <date>2013-10-21 16:54:34 -0700</date>
            <delta_ts>2013-10-21 17:02:58 -0700</delta_ts>
            <desc>Patch v4</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>34271</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYkNv
cmUvQ01ha2VMaXN0cy50eHQKaW5kZXggMzQyMGI2Mi4uYzFjYTZhNSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0
cy50eHQKQEAgLTc3OSw2ICs3NzksNyBAQCBzZXQoV2ViQ29yZV9TT1VSQ0VTCiAgICAgTW9kdWxl
cy9pbmRleGVkZGIvSURCUGVuZGluZ1RyYW5zYWN0aW9uTW9uaXRvci5jcHAKICAgICBNb2R1bGVz
L2luZGV4ZWRkYi9JREJSZXF1ZXN0LmNwcAogICAgIE1vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5z
YWN0aW9uLmNwcAorICAgIE1vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uQ29vcmRpbmF0
b3IuY3BwCiAgICAgTW9kdWxlcy9pbmRleGVkZGIvSURCVmVyc2lvbkNoYW5nZUV2ZW50LmNwcAog
ICAgIE1vZHVsZXMvaW5kZXhlZGRiL1BhZ2VHcm91cEluZGV4ZWREYXRhYmFzZS5jcHAKICAgICBN
b2R1bGVzL2luZGV4ZWRkYi9Xb3JrZXJHbG9iYWxTY29wZUluZGV4ZWREYXRhYmFzZS5jcHAKQEAg
LTc5MCw3ICs3OTEsNiBAQCBzZXQoV2ViQ29yZV9TT1VSQ0VTCiAgICAgTW9kdWxlcy9pbmRleGVk
ZGIvbGV2ZWxkYi9JREJPYmplY3RTdG9yZUJhY2tlbmRMZXZlbERCLmNwcAogICAgIE1vZHVsZXMv
aW5kZXhlZGRiL2xldmVsZGIvSURCVHJhbnNhY3Rpb25CYWNrZW5kTGV2ZWxEQi5jcHAKICAgICBN
b2R1bGVzL2luZGV4ZWRkYi9sZXZlbGRiL0lEQlRyYW5zYWN0aW9uQmFja2VuZExldmVsREJPcGVy
YXRpb25zLmNwcAotICAgIE1vZHVsZXMvaW5kZXhlZGRiL2xldmVsZGIvSURCVHJhbnNhY3Rpb25D
b29yZGluYXRvckxldmVsREIuY3BwCiAKICAgICBNb2R1bGVzL21lZGlhc291cmNlL01lZGlhU291
cmNlLmNwcAogICAgIE1vZHVsZXMvbWVkaWFzb3VyY2UvTWVkaWFTb3VyY2VSZWdpc3RyeS5jcHAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCAzMjNjYjFkLi40MzBlYmQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsNDIg
QEAKIDIwMTMtMTAtMjEgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgogCisgICAg
ICAgIE1ha2UgSURCVHJhbnNhY3Rpb25Db29yZGluYXRvckxldmVsREIgY3Jvc3MgcGxhdGZvcm0K
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyMzEyNAor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogQ01ha2VM
aXN0cy50eHQ6CisgICAgICAgICogR05VbWFrZWZpbGUubGlzdC5hbToKKyAgICAgICAgKiBXZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisKKyAgICAgICAgTWFrZSBtb3JlIG1ldGhv
ZHMgcHVyZSB2aXJ0dWFsIGluIHRoZSBpbnRlcmZhY2U6CisgICAgICAgICogTW9kdWxlcy9pbmRl
eGVkZGIvSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlLmg6CisgICAgICAgICogTW9kdWxl
cy9pbmRleGVkZGIvbGV2ZWxkYi9JREJUcmFuc2FjdGlvbkJhY2tlbmRMZXZlbERCLmNwcDoKKyAg
ICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9sZXZlbGRiL0lEQlRyYW5zYWN0aW9uQmFja2VuZExl
dmVsREIuaDoKKworICAgICAgICBVcGRhdGUgdGhlIG5hbWUgb2YgdGhlIGNsYXNzLCBhbmQgdXNl
IElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSBpbnN0ZWFkIG9mIElEQlRyYW5zYWN0aW9u
QmFja2VuZExldmVEQjoKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlv
bkNvb3JkaW5hdG9yLmNwcDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL2xldmVsZGIvSURCVHJhbnNhY3Rpb25Db29yZGluYXRvckxldmVsREIuY3BwLgorICAg
ICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb25Db29yZGluYXRvcjo6Y3JlYXRlKToKKyAgICAg
ICAgKFdlYkNvcmU6OklEQlRyYW5zYWN0aW9uQ29vcmRpbmF0b3I6OklEQlRyYW5zYWN0aW9uQ29v
cmRpbmF0b3IpOgorICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb25Db29yZGluYXRvcjo6
fklEQlRyYW5zYWN0aW9uQ29vcmRpbmF0b3IpOgorICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNh
Y3Rpb25Db29yZGluYXRvcjo6ZGlkQ3JlYXRlVHJhbnNhY3Rpb24pOgorICAgICAgICAoV2ViQ29y
ZTo6SURCVHJhbnNhY3Rpb25Db29yZGluYXRvcjo6ZGlkU3RhcnRUcmFuc2FjdGlvbik6CisgICAg
ICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbkNvb3JkaW5hdG9yOjpkaWRGaW5pc2hUcmFuc2Fj
dGlvbik6CisgICAgICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbkNvb3JkaW5hdG9yOjppc0Fj
dGl2ZSk6CisgICAgICAgIChXZWJDb3JlOjpJREJUcmFuc2FjdGlvbkNvb3JkaW5hdG9yOjpwcm9j
ZXNzU3RhcnRlZFRyYW5zYWN0aW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpkb1Njb3Blc092ZXJs
YXApOgorICAgICAgICAoV2ViQ29yZTo6SURCVHJhbnNhY3Rpb25Db29yZGluYXRvcjo6Y2FuUnVu
VHJhbnNhY3Rpb24pOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9u
Q29vcmRpbmF0b3IuaDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL2xldmVsZGIvSURCVHJhbnNhY3Rpb25Db29yZGluYXRvckxldmVsREIuaC4KKworICAgICAg
ICBVcGRhdGUgdGhlIG5hbWUgb2YgdGhlIGNsYXNzIGVsc2V3aGVyZToKKyAgICAgICAgKiBNb2R1
bGVzL2luZGV4ZWRkYi9sZXZlbGRiL0lEQkRhdGFiYXNlQmFja2VuZExldmVsREIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SURCRGF0YWJhc2VCYWNrZW5kTGV2ZWxEQjo6SURCRGF0YWJhc2VCYWNr
ZW5kTGV2ZWxEQik6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvbGV2ZWxkYi9JREJEYXRh
YmFzZUJhY2tlbmRMZXZlbERCLmg6CisgICAgICAgIChXZWJDb3JlOjpJREJEYXRhYmFzZUJhY2tl
bmRMZXZlbERCOjp0cmFuc2FjdGlvbkNvb3JkaW5hdG9yKToKKyAgICAgICAgKiBNb2R1bGVzL2lu
ZGV4ZWRkYi9sZXZlbGRiL0lEQkZhY3RvcnlCYWNrZW5kTGV2ZWxEQi5jcHA6CisKKzIwMTMtMTAt
MjEgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgorCiAgICAgICAgIFRyYW5zaXRp
b24gbW9zdCB1c2Ugb2YgSURCQmFja2luZ1N0b3JlTGV2ZWxEQiB0byBJREJCYWNraW5nU3RvcmVJ
bnRlcmZhY2UKICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTEyMzEwNQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFt
IGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQppbmRleCBlMmIyMmJkLi5kNzVh
MGE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCisrKyBi
L1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KQEAgLTE4NDcsMTEgKzE4NDcsMTEg
QEAgd2ViY29yZV9tb2R1bGVzX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL2xldmVsZGIvSURCVHJhbnNhY3Rpb25CYWNrZW5kTGV2ZWxEQi5oIFwKIAlTb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9sZXZlbGRiL0lEQlRyYW5zYWN0aW9uQmFja2Vu
ZExldmVsREJPcGVyYXRpb25zLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvbGV2ZWxkYi9JREJUcmFuc2FjdGlvbkJhY2tlbmRMZXZlbERCT3BlcmF0aW9ucy5oIFwKLQlT
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9sZXZlbGRiL0lEQlRyYW5zYWN0aW9uQ29v
cmRpbmF0b3JMZXZlbERCLmNwcCBcCi0JU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
bGV2ZWxkYi9JREJUcmFuc2FjdGlvbkNvb3JkaW5hdG9yTGV2ZWxEQi5oIFwKIAlTb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5jcHAgXAogCVNvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmggXAogCVNvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZS5oIFwKKwlT
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbkNvb3JkaW5hdG9y
LmNwcCBcCisJU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb25D
b29yZGluYXRvci5oIFwKIAlTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJWZXJz
aW9uQ2hhbmdlRXZlbnQuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9J
REJWZXJzaW9uQ2hhbmdlRXZlbnQuaCBcCiAJU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvSW5kZXhlZERCLmggXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlLmggYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UuaAppbmRleCBm
NzI2YjVlMi4uM2MwMDA2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlLmgKQEAg
LTUyLDkgKzUyLDExIEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgSW5kZXhlZERCOjpUcmFuc2Fj
dGlvbk1vZGUgbW9kZSgpIGNvbnN0ID0gMDsKIAorICAgIHZpcnR1YWwgdm9pZCBydW4oKSA9IDA7
CiAgICAgdmlydHVhbCB2b2lkIGNvbW1pdCgpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgYWJvcnQo
KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGFib3J0KFBhc3NSZWZQdHI8SURCRGF0YWJhc2VFcnJv
cj4pID0gMDsKKyAgICB2aXJ0dWFsIGNvbnN0IEhhc2hTZXQ8aW50NjRfdD4mIHNjb3BlKCkgY29u
c3QgPSAwOwogCiAgICAgdmlydHVhbCB2b2lkIHNjaGVkdWxlQ3JlYXRlT2JqZWN0U3RvcmVPcGVy
YXRpb24oY29uc3QgSURCT2JqZWN0U3RvcmVNZXRhZGF0YSYpID0gMDsKICAgICB2aXJ0dWFsIHZv
aWQgc2NoZWR1bGVEZWxldGVPYmplY3RTdG9yZU9wZXJhdGlvbihjb25zdCBJREJPYmplY3RTdG9y
ZU1ldGFkYXRhJikgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvSURCVHJhbnNhY3Rpb25Db29yZGluYXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbkNvb3JkaW5hdG9yLmNwcApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwLi45ZDdiODBmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb25Db29yZGluYXRvci5jcHAK
QEAgLTAsMCArMSwxNTIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5E
IEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAq
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAi
SURCVHJhbnNhY3Rpb25Db29yZGluYXRvci5oIgorCisjaWYgRU5BQkxFKElOREVYRURfREFUQUJB
U0UpCisKKyNpbmNsdWRlICJJREJEYXRhYmFzZUNhbGxiYWNrcy5oIgorI2luY2x1ZGUgIklEQlRy
YW5zYWN0aW9uQmFja2VuZEludGVyZmFjZS5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1Bh
c3NPd25QdHI8SURCVHJhbnNhY3Rpb25Db29yZGluYXRvcj4gSURCVHJhbnNhY3Rpb25Db29yZGlu
YXRvcjo6Y3JlYXRlKCkKK3sKKyAgICByZXR1cm4gYWRvcHRQdHIobmV3IElEQlRyYW5zYWN0aW9u
Q29vcmRpbmF0b3IoKSk7Cit9CisKK0lEQlRyYW5zYWN0aW9uQ29vcmRpbmF0b3I6OklEQlRyYW5z
YWN0aW9uQ29vcmRpbmF0b3IoKQoreworfQorCitJREJUcmFuc2FjdGlvbkNvb3JkaW5hdG9yOjp+
SURCVHJhbnNhY3Rpb25Db29yZGluYXRvcigpCit7Cit9CisKK3ZvaWQgSURCVHJhbnNhY3Rpb25D
b29yZGluYXRvcjo6ZGlkQ3JlYXRlVHJhbnNhY3Rpb24oSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50
ZXJmYWNlKiB0cmFuc2FjdGlvbikKK3sKKyAgICBBU1NFUlQoIW1fdHJhbnNhY3Rpb25zLmNvbnRh
aW5zKHRyYW5zYWN0aW9uKSk7CisgICAgbV90cmFuc2FjdGlvbnMuYWRkKHRyYW5zYWN0aW9uLCB0
cmFuc2FjdGlvbik7Cit9CisKK3ZvaWQgSURCVHJhbnNhY3Rpb25Db29yZGluYXRvcjo6ZGlkU3Rh
cnRUcmFuc2FjdGlvbihJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqIHRyYW5zYWN0aW9u
KQoreworICAgIEFTU0VSVChtX3RyYW5zYWN0aW9ucy5jb250YWlucyh0cmFuc2FjdGlvbikpOwor
CisgICAgbV9xdWV1ZWRUcmFuc2FjdGlvbnMuYWRkKHRyYW5zYWN0aW9uKTsKKyAgICBwcm9jZXNz
U3RhcnRlZFRyYW5zYWN0aW9ucygpOworfQorCit2b2lkIElEQlRyYW5zYWN0aW9uQ29vcmRpbmF0
b3I6OmRpZEZpbmlzaFRyYW5zYWN0aW9uKElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSog
dHJhbnNhY3Rpb24pCit7CisgICAgQVNTRVJUKG1fdHJhbnNhY3Rpb25zLmNvbnRhaW5zKHRyYW5z
YWN0aW9uKSk7CisKKyAgICBpZiAobV9xdWV1ZWRUcmFuc2FjdGlvbnMuY29udGFpbnModHJhbnNh
Y3Rpb24pKSB7CisgICAgICAgIEFTU0VSVCghbV9zdGFydGVkVHJhbnNhY3Rpb25zLmNvbnRhaW5z
KHRyYW5zYWN0aW9uKSk7CisgICAgICAgIG1fcXVldWVkVHJhbnNhY3Rpb25zLnJlbW92ZSh0cmFu
c2FjdGlvbik7CisgICAgfSBlbHNlIGlmIChtX3N0YXJ0ZWRUcmFuc2FjdGlvbnMuY29udGFpbnMo
dHJhbnNhY3Rpb24pKQorICAgICAgICBtX3N0YXJ0ZWRUcmFuc2FjdGlvbnMucmVtb3ZlKHRyYW5z
YWN0aW9uKTsKKworICAgIG1fdHJhbnNhY3Rpb25zLnJlbW92ZSh0cmFuc2FjdGlvbik7CisKKyAg
ICBwcm9jZXNzU3RhcnRlZFRyYW5zYWN0aW9ucygpOworfQorCisjaWZuZGVmIE5ERUJVRworLy8g
VmVyaWZpZXMgaW50ZXJuYWwgY29uc2lzdGllbmN5IHdoaWxlIHJldHVybmluZyB3aGV0aGVyIGFu
eXRoaW5nIGlzIGZvdW5kLgorYm9vbCBJREJUcmFuc2FjdGlvbkNvb3JkaW5hdG9yOjppc0FjdGl2
ZShJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqIHRyYW5zYWN0aW9uKQoreworICAgIGJv
b2wgZm91bmQgPSBmYWxzZTsKKyAgICBpZiAobV9xdWV1ZWRUcmFuc2FjdGlvbnMuY29udGFpbnMo
dHJhbnNhY3Rpb24pKQorICAgICAgICBmb3VuZCA9IHRydWU7CisgICAgaWYgKG1fc3RhcnRlZFRy
YW5zYWN0aW9ucy5jb250YWlucyh0cmFuc2FjdGlvbikpIHsKKyAgICAgICAgQVNTRVJUKCFmb3Vu
ZCk7CisgICAgICAgIGZvdW5kID0gdHJ1ZTsKKyAgICB9CisgICAgQVNTRVJUKGZvdW5kID09IG1f
dHJhbnNhY3Rpb25zLmNvbnRhaW5zKHRyYW5zYWN0aW9uKSk7CisgICAgcmV0dXJuIGZvdW5kOwor
fQorI2VuZGlmCisKK3ZvaWQgSURCVHJhbnNhY3Rpb25Db29yZGluYXRvcjo6cHJvY2Vzc1N0YXJ0
ZWRUcmFuc2FjdGlvbnMoKQoreworICAgIGlmIChtX3F1ZXVlZFRyYW5zYWN0aW9ucy5pc0VtcHR5
KCkpCisgICAgICAgIHJldHVybjsKKworICAgIEFTU0VSVChtX3N0YXJ0ZWRUcmFuc2FjdGlvbnMu
aXNFbXB0eSgpIHx8ICgqbV9zdGFydGVkVHJhbnNhY3Rpb25zLmJlZ2luKCkpLT5tb2RlKCkgIT0g
SW5kZXhlZERCOjpUcmFuc2FjdGlvblZlcnNpb25DaGFuZ2UpOworCisgICAgTGlzdEhhc2hTZXQ8
SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKj46OmNvbnN0X2l0ZXJhdG9yIGl0ID0gbV9x
dWV1ZWRUcmFuc2FjdGlvbnMuYmVnaW4oKTsKKyAgICB3aGlsZSAoaXQgIT0gbV9xdWV1ZWRUcmFu
c2FjdGlvbnMuZW5kKCkpIHsKKyAgICAgICAgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNl
KiB0cmFuc2FjdGlvbiA9ICppdDsKKyAgICAgICAgKytpdDsKKyAgICAgICAgaWYgKGNhblJ1blRy
YW5zYWN0aW9uKHRyYW5zYWN0aW9uKSkgeworICAgICAgICAgICAgbV9xdWV1ZWRUcmFuc2FjdGlv
bnMucmVtb3ZlKHRyYW5zYWN0aW9uKTsKKyAgICAgICAgICAgIG1fc3RhcnRlZFRyYW5zYWN0aW9u
cy5hZGQodHJhbnNhY3Rpb24pOworICAgICAgICAgICAgdHJhbnNhY3Rpb24tPnJ1bigpOworICAg
ICAgICB9CisgICAgfQorfQorCitzdGF0aWMgYm9vbCBkb1Njb3Blc092ZXJsYXAoY29uc3QgSGFz
aFNldDxpbnQ2NF90PiYgc2NvcGUxLCBjb25zdCBIYXNoU2V0PGludDY0X3Q+JiBzY29wZTIpCit7
CisgICAgZm9yIChIYXNoU2V0PGludDY0X3Q+Ojpjb25zdF9pdGVyYXRvciBpdCA9IHNjb3BlMS5i
ZWdpbigpOyBpdCAhPSBzY29wZTEuZW5kKCk7ICsraXQpIHsKKyAgICAgICAgaWYgKHNjb3BlMi5j
b250YWlucygqaXQpKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICAgIHJldHVy
biBmYWxzZTsKK30KKworYm9vbCBJREJUcmFuc2FjdGlvbkNvb3JkaW5hdG9yOjpjYW5SdW5UcmFu
c2FjdGlvbihJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqIHRyYW5zYWN0aW9uKQorewor
ICAgIEFTU0VSVChtX3F1ZXVlZFRyYW5zYWN0aW9ucy5jb250YWlucyh0cmFuc2FjdGlvbikpOwor
ICAgIHN3aXRjaCAodHJhbnNhY3Rpb24tPm1vZGUoKSkgeworICAgIGNhc2UgSW5kZXhlZERCOjpU
cmFuc2FjdGlvblZlcnNpb25DaGFuZ2U6CisgICAgICAgIEFTU0VSVChtX3F1ZXVlZFRyYW5zYWN0
aW9ucy5zaXplKCkgPT0gMSk7CisgICAgICAgIEFTU0VSVChtX3N0YXJ0ZWRUcmFuc2FjdGlvbnMu
aXNFbXB0eSgpKTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICBjYXNlIEluZGV4ZWREQjo6
VHJhbnNhY3Rpb25SZWFkT25seToKKyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICBjYXNlIElu
ZGV4ZWREQjo6VHJhbnNhY3Rpb25SZWFkV3JpdGU6CisgICAgICAgIGZvciAoSGFzaFNldDxJREJU
cmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqPjo6Y29uc3RfaXRlcmF0b3IgaXQgPSBtX3N0YXJ0
ZWRUcmFuc2FjdGlvbnMuYmVnaW4oKTsgaXQgIT0gbV9zdGFydGVkVHJhbnNhY3Rpb25zLmVuZCgp
OyArK2l0KSB7CisgICAgICAgICAgICBpZiAoKCppdCktPm1vZGUoKSA9PSBJbmRleGVkREI6OlRy
YW5zYWN0aW9uUmVhZFdyaXRlICYmIGRvU2NvcGVzT3ZlcmxhcCh0cmFuc2FjdGlvbi0+c2NvcGUo
KSwgKCppdCktPnNjb3BlKCkpKQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAg
ICAgfQorICAgICAgICBmb3IgKExpc3RIYXNoU2V0PElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVy
ZmFjZSo+Ojpjb25zdF9pdGVyYXRvciBpdCA9IG1fcXVldWVkVHJhbnNhY3Rpb25zLmJlZ2luKCk7
ICppdCAhPSB0cmFuc2FjdGlvbjsgKytpdCkgeworICAgICAgICAgICAgQVNTRVJUKGl0ICE9IG1f
cXVldWVkVHJhbnNhY3Rpb25zLmVuZCgpKTsKKyAgICAgICAgICAgIGlmICgoKml0KS0+bW9kZSgp
ID09IEluZGV4ZWREQjo6VHJhbnNhY3Rpb25SZWFkV3JpdGUgJiYgZG9TY29wZXNPdmVybGFwKHRy
YW5zYWN0aW9uLT5zY29wZSgpLCAoKml0KS0+c2NvcGUoKSkpCisgICAgICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgICAgICB9CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK307CisKKyNlbmRp
ZiAvLyBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uQ29vcmRpbmF0b3IuaCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uQ29vcmRpbmF0b3IuaApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xMGUyYjEyCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb25Db29yZGlu
YXRvci5oCkBAIC0wLDAgKzEsNzEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJ
UyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIElEQlRyYW5zYWN0aW9uQ29v
cmRpbmF0b3JfaAorI2RlZmluZSBJREJUcmFuc2FjdGlvbkNvb3JkaW5hdG9yX2gKKworI2lmIEVO
QUJMRShJTkRFWEVEX0RBVEFCQVNFKQorCisjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNs
dWRlIDx3dGYvTGlzdEhhc2hTZXQuaD4KKyNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CisKK25hbWVz
cGFjZSBXZWJDb3JlIHsKKworY2xhc3MgSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlOwor
CisvLyBUcmFuc2FjdGlvbnMgYXJlIGV4ZWN1dGVkIGluIHRoZSBvcmRlciB0aGUgd2VyZSBjcmVh
dGVkLgorY2xhc3MgSURCVHJhbnNhY3Rpb25Db29yZGluYXRvciB7CitwdWJsaWM6CisgICAgc3Rh
dGljIFBhc3NPd25QdHI8SURCVHJhbnNhY3Rpb25Db29yZGluYXRvcj4gY3JlYXRlKCk7CisgICAg
dmlydHVhbCB+SURCVHJhbnNhY3Rpb25Db29yZGluYXRvcigpOworCisgICAgLy8gQ2FsbGVkIGJ5
IHRyYW5zYWN0aW9ucyBhcyB0aGV5IHN0YXJ0IGFuZCBmaW5pc2guCisgICAgdm9pZCBkaWRDcmVh
dGVUcmFuc2FjdGlvbihJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqKTsKKyAgICB2b2lk
IGRpZFN0YXJ0VHJhbnNhY3Rpb24oSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlKik7Cisg
ICAgdm9pZCBkaWRGaW5pc2hUcmFuc2FjdGlvbihJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZh
Y2UqKTsKKworI2lmbmRlZiBOREVCVUcKKyAgICBib29sIGlzQWN0aXZlKElEQlRyYW5zYWN0aW9u
QmFja2VuZEludGVyZmFjZSopOworI2VuZGlmCisKK3ByaXZhdGU6CisgICAgSURCVHJhbnNhY3Rp
b25Db29yZGluYXRvcigpOworCisgICAgdm9pZCBwcm9jZXNzU3RhcnRlZFRyYW5zYWN0aW9ucygp
OworICAgIGJvb2wgY2FuUnVuVHJhbnNhY3Rpb24oSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJm
YWNlKik7CisKKyAgICAvLyBUaGlzIGlzIGp1c3QgYW4gZWZmaWNpZW50IHdheSB0byBrZWVwIHJl
ZmVyZW5jZXMgdG8gYWxsIHRyYW5zYWN0aW9ucy4KKyAgICBIYXNoTWFwPElEQlRyYW5zYWN0aW9u
QmFja2VuZEludGVyZmFjZSosIFJlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2U+
ID4gbV90cmFuc2FjdGlvbnM7CisgICAgLy8gVHJhbnNhY3Rpb25zIGluIGRpZmZlcmVudCBzdGF0
ZXMgYXJlIGdyb3VwZWQgYmVsb3cuCisgICAgTGlzdEhhc2hTZXQ8SURCVHJhbnNhY3Rpb25CYWNr
ZW5kSW50ZXJmYWNlKj4gbV9xdWV1ZWRUcmFuc2FjdGlvbnM7CisgICAgSGFzaFNldDxJREJUcmFu
c2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqPiBtX3N0YXJ0ZWRUcmFuc2FjdGlvbnM7Cit9OworCit9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoSU5ERVhFRF9EQVRBQkFT
RSkKKworI2VuZGlmIC8vIElEQlRyYW5zYWN0aW9uQ29vcmRpbmF0b3JfaApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvbGV2ZWxkYi9JREJEYXRhYmFzZUJhY2tl
bmRMZXZlbERCLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2xldmVsZGIv
SURCRGF0YWJhc2VCYWNrZW5kTGV2ZWxEQi5jcHAKaW5kZXggNWNhODZmNS4uMTgxZTI1MCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvbGV2ZWxkYi9JREJEYXRh
YmFzZUJhY2tlbmRMZXZlbERCLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9sZXZlbGRiL0lEQkRhdGFiYXNlQmFja2VuZExldmVsREIuY3BwCkBAIC0zNSw3ICszNSw3
IEBACiAjaW5jbHVkZSAiSURCS2V5UmFuZ2UuaCIKICNpbmNsdWRlICJJREJPYmplY3RTdG9yZUJh
Y2tlbmRMZXZlbERCLmgiCiAjaW5jbHVkZSAiSURCVHJhbnNhY3Rpb25CYWNrZW5kTGV2ZWxEQi5o
IgotI2luY2x1ZGUgIklEQlRyYW5zYWN0aW9uQ29vcmRpbmF0b3JMZXZlbERCLmgiCisjaW5jbHVk
ZSAiSURCVHJhbnNhY3Rpb25Db29yZGluYXRvci5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNp
bmNsdWRlICJTaGFyZWRCdWZmZXIuaCIKICNpbmNsdWRlIDx3dGYvVGVtcG9yYXJ5Q2hhbmdlLmg+
CkBAIC01NSw3ICs1NSw3IEBAIElEQkRhdGFiYXNlQmFja2VuZExldmVsREI6OklEQkRhdGFiYXNl
QmFja2VuZExldmVsREIoY29uc3QgU3RyaW5nJiBuYW1lLCBJREJCYWNrCiAgICAgLCBtX21ldGFk
YXRhKG5hbWUsIEludmFsaWRJZCwgMCwgSW52YWxpZElkKQogICAgICwgbV9pZGVudGlmaWVyKHVu
aXF1ZUlkZW50aWZpZXIpCiAgICAgLCBtX2ZhY3RvcnkoZmFjdG9yeSkKLSAgICAsIG1fdHJhbnNh
Y3Rpb25Db29yZGluYXRvcihJREJUcmFuc2FjdGlvbkNvb3JkaW5hdG9yTGV2ZWxEQjo6Y3JlYXRl
KCkpCisgICAgLCBtX3RyYW5zYWN0aW9uQ29vcmRpbmF0b3IoSURCVHJhbnNhY3Rpb25Db29yZGlu
YXRvcjo6Y3JlYXRlKCkpCiAgICAgLCBtX2Nsb3NpbmdDb25uZWN0aW9uKGZhbHNlKQogewogICAg
IEFTU0VSVCghbV9tZXRhZGF0YS5uYW1lLmlzTnVsbCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2xldmVsZGIvSURCRGF0YWJhc2VCYWNrZW5kTGV2ZWxE
Qi5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvbGV2ZWxkYi9JREJEYXRhYmFz
ZUJhY2tlbmRMZXZlbERCLmgKaW5kZXggM2EwNTBmMy4uMGYwOThmZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvbGV2ZWxkYi9JREJEYXRhYmFzZUJhY2tlbmRM
ZXZlbERCLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvbGV2ZWxkYi9J
REJEYXRhYmFzZUJhY2tlbmRMZXZlbERCLmgKQEAgLTQxLDcgKzQxLDcgQEAgY2xhc3MgSURCQmFj
a2luZ1N0b3JlSW50ZXJmYWNlOwogY2xhc3MgSURCRGF0YWJhc2U7CiBjbGFzcyBJREJGYWN0b3J5
QmFja2VuZEludGVyZmFjZTsKIGNsYXNzIElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZTsK
LWNsYXNzIElEQlRyYW5zYWN0aW9uQ29vcmRpbmF0b3JMZXZlbERCOworY2xhc3MgSURCVHJhbnNh
Y3Rpb25Db29yZGluYXRvcjsKIAogY2xhc3MgSURCRGF0YWJhc2VCYWNrZW5kTGV2ZWxEQiA6IHB1
YmxpYyBJREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2UgewogcHVibGljOgpAQCAtNzQsNyArNzQs
NyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGNyZWF0ZUluZGV4KGludDY0X3QgdHJhbnNh
Y3Rpb25JZCwgaW50NjRfdCBvYmplY3RTdG9yZUlkLCBpbnQ2NF90IGluZGV4SWQsIGNvbnN0IFN0
cmluZyYgbmFtZSwgY29uc3QgSURCS2V5UGF0aCYsIGJvb2wgdW5pcXVlLCBib29sIG11bHRpRW50
cnkpOwogICAgIHZpcnR1YWwgdm9pZCBkZWxldGVJbmRleChpbnQ2NF90IHRyYW5zYWN0aW9uSWQs
IGludDY0X3Qgb2JqZWN0U3RvcmVJZCwgaW50NjRfdCBpbmRleElkKTsKIAotICAgIElEQlRyYW5z
YWN0aW9uQ29vcmRpbmF0b3JMZXZlbERCKiB0cmFuc2FjdGlvbkNvb3JkaW5hdG9yKCkgY29uc3Qg
eyByZXR1cm4gbV90cmFuc2FjdGlvbkNvb3JkaW5hdG9yLmdldCgpOyB9CisgICAgSURCVHJhbnNh
Y3Rpb25Db29yZGluYXRvciogdHJhbnNhY3Rpb25Db29yZGluYXRvcigpIGNvbnN0IHsgcmV0dXJu
IG1fdHJhbnNhY3Rpb25Db29yZGluYXRvci5nZXQoKTsgfQogICAgIHZvaWQgdHJhbnNhY3Rpb25T
dGFydGVkKElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZSopOwogICAgIHZvaWQgdHJhbnNh
Y3Rpb25GaW5pc2hlZChJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqKTsKICAgICB2b2lk
IHRyYW5zYWN0aW9uRmluaXNoZWRBbmRDb21wbGV0ZUZpcmVkKElEQlRyYW5zYWN0aW9uQmFja2Vu
ZEludGVyZmFjZSopOwpAQCAtMTEwLDcgKzExMCw3IEBAIHByaXZhdGU6CiAgICAgLy8gVGhpcyBt
aWdodCBub3QgbmVlZCB0byBiZSBhIFJlZlB0ciBzaW5jZSB0aGUgZmFjdG9yeSdzIGxpZmV0aW1l
IGlzIHRoYXQgb2YgdGhlIHBhZ2UgZ3JvdXAsIGJ1dCBpdCdzIGJldHRlciB0byBiZSBjb25zZXJ2
aXRpdmUgdGhhbiBzb3JyeS4KICAgICBSZWZQdHI8SURCRmFjdG9yeUJhY2tlbmRJbnRlcmZhY2U+
IG1fZmFjdG9yeTsKIAotICAgIE93blB0cjxJREJUcmFuc2FjdGlvbkNvb3JkaW5hdG9yTGV2ZWxE
Qj4gbV90cmFuc2FjdGlvbkNvb3JkaW5hdG9yOworICAgIE93blB0cjxJREJUcmFuc2FjdGlvbkNv
b3JkaW5hdG9yPiBtX3RyYW5zYWN0aW9uQ29vcmRpbmF0b3I7CiAgICAgUmVmUHRyPElEQlRyYW5z
YWN0aW9uQmFja2VuZEludGVyZmFjZT4gbV9ydW5uaW5nVmVyc2lvbkNoYW5nZVRyYW5zYWN0aW9u
OwogCiAgICAgdHlwZWRlZiBIYXNoTWFwPGludDY0X3QsIElEQlRyYW5zYWN0aW9uQmFja2VuZElu
dGVyZmFjZSo+IFRyYW5zYWN0aW9uTWFwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvbGV2ZWxkYi9JREJGYWN0b3J5QmFja2VuZExldmVsREIuY3BwIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvbGV2ZWxkYi9JREJGYWN0b3J5QmFja2VuZExl
dmVsREIuY3BwCmluZGV4IDVmYTFhY2MuLjA0ZTRjMWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL2xldmVsZGIvSURCRmFjdG9yeUJhY2tlbmRMZXZlbERCLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9sZXZlbGRiL0lEQkZhY3Rv
cnlCYWNrZW5kTGV2ZWxEQi5jcHAKQEAgLTM0LDcgKzM0LDcgQEAKICNpbmNsdWRlICJJREJEYXRh
YmFzZUJhY2tlbmRMZXZlbERCLmgiCiAjaW5jbHVkZSAiSURCRGF0YWJhc2VFeGNlcHRpb24uaCIK
ICNpbmNsdWRlICJJREJUcmFuc2FjdGlvbkJhY2tlbmRMZXZlbERCLmgiCi0jaW5jbHVkZSAiSURC
VHJhbnNhY3Rpb25Db29yZGluYXRvckxldmVsREIuaCIKKyNpbmNsdWRlICJJREJUcmFuc2FjdGlv
bkNvb3JkaW5hdG9yLmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIlNlY3VyaXR5
T3JpZ2luLmgiCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRi
L2xldmVsZGIvSURCVHJhbnNhY3Rpb25CYWNrZW5kTGV2ZWxEQi5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9sZXZlbGRiL0lEQlRyYW5zYWN0aW9uQmFja2VuZExldmVsREIu
Y3BwCmluZGV4IGU0ZWE0YzguLjFlNjZiNzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL2xldmVsZGIvSURCVHJhbnNhY3Rpb25CYWNrZW5kTGV2ZWxEQi5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvbGV2ZWxkYi9JREJUcmFuc2Fj
dGlvbkJhY2tlbmRMZXZlbERCLmNwcApAQCAtMzUsNyArMzUsNyBAQAogI2luY2x1ZGUgIklEQkRh
dGFiYXNlRXhjZXB0aW9uLmgiCiAjaW5jbHVkZSAiSURCS2V5UmFuZ2UuaCIKICNpbmNsdWRlICJJ
REJUcmFuc2FjdGlvbkJhY2tlbmRMZXZlbERCT3BlcmF0aW9ucy5oIgotI2luY2x1ZGUgIklEQlRy
YW5zYWN0aW9uQ29vcmRpbmF0b3JMZXZlbERCLmgiCisjaW5jbHVkZSAiSURCVHJhbnNhY3Rpb25D
b29yZGluYXRvci5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvbGV2ZWxkYi9J
REJUcmFuc2FjdGlvbkJhY2tlbmRMZXZlbERCLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9sZXZlbGRiL0lEQlRyYW5zYWN0aW9uQmFja2VuZExldmVsREIuaAppbmRleCA1NTM5
ZDg1Li4xNDhlZmY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9sZXZlbGRiL0lEQlRyYW5zYWN0aW9uQmFja2VuZExldmVsREIuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9sZXZlbGRiL0lEQlRyYW5zYWN0aW9uQmFja2VuZExldmVs
REIuaApAQCAtNDQsNyArNDQsNyBAQCBjbGFzcyBJREJCYWNraW5nU3RvcmVMZXZlbERCOwogY2xh
c3MgSURCQ3Vyc29yQmFja2VuZExldmVsREI7CiBjbGFzcyBJREJEYXRhYmFzZUNhbGxiYWNrczsK
IAotY2xhc3MgSURCVHJhbnNhY3Rpb25CYWNrZW5kTGV2ZWxEQiA6IHB1YmxpYyBJREJUcmFuc2Fj
dGlvbkJhY2tlbmRJbnRlcmZhY2UgeworY2xhc3MgSURCVHJhbnNhY3Rpb25CYWNrZW5kTGV2ZWxE
QiBGSU5BTCA6IHB1YmxpYyBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UgewogcHVibGlj
OgogICAgIHN0YXRpYyBQYXNzUmVmUHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZExldmVsREI+IGNy
ZWF0ZShJREJEYXRhYmFzZUJhY2tlbmRMZXZlbERCKiwgaW50NjRfdCB0cmFuc2FjdGlvbklkLCBQ
YXNzUmVmUHRyPElEQkRhdGFiYXNlQ2FsbGJhY2tzPiwgY29uc3QgVmVjdG9yPGludDY0X3Q+JiBv
YmplY3RTdG9yZUlkcywgSW5kZXhlZERCOjpUcmFuc2FjdGlvbk1vZGUpOwogICAgIHZpcnR1YWwg
fklEQlRyYW5zYWN0aW9uQmFja2VuZExldmVsREIoKTsKQEAgLTU5LDkgKzU5LDkgQEAgcHVibGlj
OgogICAgICAgICB2aXJ0dWFsIHZvaWQgcGVyZm9ybSgpID0gMDsKICAgICB9OwogCi0gICAgdm9p
ZCBydW4oKTsKKyAgICB2aXJ0dWFsIHZvaWQgcnVuKCkgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBJ
bmRleGVkREI6OlRyYW5zYWN0aW9uTW9kZSBtb2RlKCkgY29uc3QgT1ZFUlJJREUgRklOQUwgeyBy
ZXR1cm4gbV9tb2RlOyB9Ci0gICAgY29uc3QgSGFzaFNldDxpbnQ2NF90PiYgc2NvcGUoKSBjb25z
dCB7IHJldHVybiBtX29iamVjdFN0b3JlSWRzOyB9CisgICAgY29uc3QgSGFzaFNldDxpbnQ2NF90
PiYgc2NvcGUoKSBjb25zdCBPVkVSUklERSB7IHJldHVybiBtX29iamVjdFN0b3JlSWRzOyB9CiAg
ICAgdm9pZCBzY2hlZHVsZVRhc2soUGFzc093blB0cjxPcGVyYXRpb24+IHRhc2ssIFBhc3NPd25Q
dHI8T3BlcmF0aW9uPiBhYm9ydFRhc2sgPSBudWxscHRyKSB7IHNjaGVkdWxlVGFzayhJREJEYXRh
YmFzZUJhY2tlbmRJbnRlcmZhY2U6Ok5vcm1hbFRhc2ssIHRhc2ssIGFib3J0VGFzayk7IH0KICAg
ICB2b2lkIHNjaGVkdWxlVGFzayhJREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2U6OlRhc2tUeXBl
LCBQYXNzT3duUHRyPE9wZXJhdGlvbj4sIFBhc3NPd25QdHI8T3BlcmF0aW9uPiBhYm9ydFRhc2sg
PSBudWxscHRyKTsKICAgICB2b2lkIHJlZ2lzdGVyT3BlbkN1cnNvcihJREJDdXJzb3JCYWNrZW5k
TGV2ZWxEQiopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
bGV2ZWxkYi9JREJUcmFuc2FjdGlvbkNvb3JkaW5hdG9yTGV2ZWxEQi5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9sZXZlbGRiL0lEQlRyYW5zYWN0aW9uQ29vcmRpbmF0b3JM
ZXZlbERCLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzg1YTJlMS4uMDAwMDAw
MAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9sZXZlbGRiL0lEQlRyYW5z
YWN0aW9uQ29vcmRpbmF0b3JMZXZlbERCLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDE1MyArMCww
IEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKgot
ICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQotICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKLSAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFIElNUExJRUQKLSAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKLSAqIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTCi0gKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7Ci0gKiBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQKLSAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKLSAqIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIklEQlRyYW5zYWN0aW9u
Q29vcmRpbmF0b3JMZXZlbERCLmgiCi0KLSNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkgJiYg
VVNFKExFVkVMREIpCi0KLSNpbmNsdWRlICJJREJEYXRhYmFzZUJhY2tlbmRMZXZlbERCLmgiCi0j
aW5jbHVkZSAiSURCRGF0YWJhc2VDYWxsYmFja3MuaCIKLSNpbmNsdWRlICJJREJUcmFuc2FjdGlv
bkJhY2tlbmRMZXZlbERCLmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotUGFzc093blB0cjxJ
REJUcmFuc2FjdGlvbkNvb3JkaW5hdG9yTGV2ZWxEQj4gSURCVHJhbnNhY3Rpb25Db29yZGluYXRv
ckxldmVsREI6OmNyZWF0ZSgpCi17Ci0gICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBJREJUcmFuc2Fj
dGlvbkNvb3JkaW5hdG9yTGV2ZWxEQigpKTsKLX0KLQotSURCVHJhbnNhY3Rpb25Db29yZGluYXRv
ckxldmVsREI6OklEQlRyYW5zYWN0aW9uQ29vcmRpbmF0b3JMZXZlbERCKCkKLXsKLX0KLQotSURC
VHJhbnNhY3Rpb25Db29yZGluYXRvckxldmVsREI6On5JREJUcmFuc2FjdGlvbkNvb3JkaW5hdG9y
TGV2ZWxEQigpCi17Ci19Ci0KLXZvaWQgSURCVHJhbnNhY3Rpb25Db29yZGluYXRvckxldmVsREI6
OmRpZENyZWF0ZVRyYW5zYWN0aW9uKElEQlRyYW5zYWN0aW9uQmFja2VuZExldmVsREIqIHRyYW5z
YWN0aW9uKQotewotICAgIEFTU0VSVCghbV90cmFuc2FjdGlvbnMuY29udGFpbnModHJhbnNhY3Rp
b24pKTsKLSAgICBtX3RyYW5zYWN0aW9ucy5hZGQodHJhbnNhY3Rpb24sIHRyYW5zYWN0aW9uKTsK
LX0KLQotdm9pZCBJREJUcmFuc2FjdGlvbkNvb3JkaW5hdG9yTGV2ZWxEQjo6ZGlkU3RhcnRUcmFu
c2FjdGlvbihJREJUcmFuc2FjdGlvbkJhY2tlbmRMZXZlbERCKiB0cmFuc2FjdGlvbikKLXsKLSAg
ICBBU1NFUlQobV90cmFuc2FjdGlvbnMuY29udGFpbnModHJhbnNhY3Rpb24pKTsKLQotICAgIG1f
cXVldWVkVHJhbnNhY3Rpb25zLmFkZCh0cmFuc2FjdGlvbik7Ci0gICAgcHJvY2Vzc1N0YXJ0ZWRU
cmFuc2FjdGlvbnMoKTsKLX0KLQotdm9pZCBJREJUcmFuc2FjdGlvbkNvb3JkaW5hdG9yTGV2ZWxE
Qjo6ZGlkRmluaXNoVHJhbnNhY3Rpb24oSURCVHJhbnNhY3Rpb25CYWNrZW5kTGV2ZWxEQiogdHJh
bnNhY3Rpb24pCi17Ci0gICAgQVNTRVJUKG1fdHJhbnNhY3Rpb25zLmNvbnRhaW5zKHRyYW5zYWN0
aW9uKSk7Ci0KLSAgICBpZiAobV9xdWV1ZWRUcmFuc2FjdGlvbnMuY29udGFpbnModHJhbnNhY3Rp
b24pKSB7Ci0gICAgICAgIEFTU0VSVCghbV9zdGFydGVkVHJhbnNhY3Rpb25zLmNvbnRhaW5zKHRy
YW5zYWN0aW9uKSk7Ci0gICAgICAgIG1fcXVldWVkVHJhbnNhY3Rpb25zLnJlbW92ZSh0cmFuc2Fj
dGlvbik7Ci0gICAgfSBlbHNlIGlmIChtX3N0YXJ0ZWRUcmFuc2FjdGlvbnMuY29udGFpbnModHJh
bnNhY3Rpb24pKQotICAgICAgICBtX3N0YXJ0ZWRUcmFuc2FjdGlvbnMucmVtb3ZlKHRyYW5zYWN0
aW9uKTsKLQotICAgIG1fdHJhbnNhY3Rpb25zLnJlbW92ZSh0cmFuc2FjdGlvbik7Ci0KLSAgICBw
cm9jZXNzU3RhcnRlZFRyYW5zYWN0aW9ucygpOwotfQotCi0jaWZuZGVmIE5ERUJVRwotLy8gVmVy
aWZpZXMgaW50ZXJuYWwgY29uc2lzdGllbmN5IHdoaWxlIHJldHVybmluZyB3aGV0aGVyIGFueXRo
aW5nIGlzIGZvdW5kLgotYm9vbCBJREJUcmFuc2FjdGlvbkNvb3JkaW5hdG9yTGV2ZWxEQjo6aXNB
Y3RpdmUoSURCVHJhbnNhY3Rpb25CYWNrZW5kTGV2ZWxEQiogdHJhbnNhY3Rpb24pCi17Ci0gICAg
Ym9vbCBmb3VuZCA9IGZhbHNlOwotICAgIGlmIChtX3F1ZXVlZFRyYW5zYWN0aW9ucy5jb250YWlu
cyh0cmFuc2FjdGlvbikpCi0gICAgICAgIGZvdW5kID0gdHJ1ZTsKLSAgICBpZiAobV9zdGFydGVk
VHJhbnNhY3Rpb25zLmNvbnRhaW5zKHRyYW5zYWN0aW9uKSkgewotICAgICAgICBBU1NFUlQoIWZv
dW5kKTsKLSAgICAgICAgZm91bmQgPSB0cnVlOwotICAgIH0KLSAgICBBU1NFUlQoZm91bmQgPT0g
bV90cmFuc2FjdGlvbnMuY29udGFpbnModHJhbnNhY3Rpb24pKTsKLSAgICByZXR1cm4gZm91bmQ7
Ci19Ci0jZW5kaWYKLQotdm9pZCBJREJUcmFuc2FjdGlvbkNvb3JkaW5hdG9yTGV2ZWxEQjo6cHJv
Y2Vzc1N0YXJ0ZWRUcmFuc2FjdGlvbnMoKQotewotICAgIGlmIChtX3F1ZXVlZFRyYW5zYWN0aW9u
cy5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIEFTU0VSVChtX3N0YXJ0ZWRUcmFu
c2FjdGlvbnMuaXNFbXB0eSgpIHx8ICgqbV9zdGFydGVkVHJhbnNhY3Rpb25zLmJlZ2luKCkpLT5t
b2RlKCkgIT0gSW5kZXhlZERCOjpUcmFuc2FjdGlvblZlcnNpb25DaGFuZ2UpOwotCi0gICAgTGlz
dEhhc2hTZXQ8SURCVHJhbnNhY3Rpb25CYWNrZW5kTGV2ZWxEQio+Ojpjb25zdF9pdGVyYXRvciBp
dCA9IG1fcXVldWVkVHJhbnNhY3Rpb25zLmJlZ2luKCk7Ci0gICAgd2hpbGUgKGl0ICE9IG1fcXVl
dWVkVHJhbnNhY3Rpb25zLmVuZCgpKSB7Ci0gICAgICAgIElEQlRyYW5zYWN0aW9uQmFja2VuZExl
dmVsREIqIHRyYW5zYWN0aW9uID0gKml0OwotICAgICAgICArK2l0OwotICAgICAgICBpZiAoY2Fu
UnVuVHJhbnNhY3Rpb24odHJhbnNhY3Rpb24pKSB7Ci0gICAgICAgICAgICBtX3F1ZXVlZFRyYW5z
YWN0aW9ucy5yZW1vdmUodHJhbnNhY3Rpb24pOwotICAgICAgICAgICAgbV9zdGFydGVkVHJhbnNh
Y3Rpb25zLmFkZCh0cmFuc2FjdGlvbik7Ci0gICAgICAgICAgICB0cmFuc2FjdGlvbi0+cnVuKCk7
Ci0gICAgICAgIH0KLSAgICB9Ci19Ci0KLXN0YXRpYyBib29sIGRvU2NvcGVzT3ZlcmxhcChjb25z
dCBIYXNoU2V0PGludDY0X3Q+JiBzY29wZTEsIGNvbnN0IEhhc2hTZXQ8aW50NjRfdD4mIHNjb3Bl
MikKLXsKLSAgICBmb3IgKEhhc2hTZXQ8aW50NjRfdD46OmNvbnN0X2l0ZXJhdG9yIGl0ID0gc2Nv
cGUxLmJlZ2luKCk7IGl0ICE9IHNjb3BlMS5lbmQoKTsgKytpdCkgewotICAgICAgICBpZiAoc2Nv
cGUyLmNvbnRhaW5zKCppdCkpCi0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0gICAg
cmV0dXJuIGZhbHNlOwotfQotCi1ib29sIElEQlRyYW5zYWN0aW9uQ29vcmRpbmF0b3JMZXZlbERC
OjpjYW5SdW5UcmFuc2FjdGlvbihJREJUcmFuc2FjdGlvbkJhY2tlbmRMZXZlbERCKiB0cmFuc2Fj
dGlvbikKLXsKLSAgICBBU1NFUlQobV9xdWV1ZWRUcmFuc2FjdGlvbnMuY29udGFpbnModHJhbnNh
Y3Rpb24pKTsKLSAgICBzd2l0Y2ggKHRyYW5zYWN0aW9uLT5tb2RlKCkpIHsKLSAgICBjYXNlIElu
ZGV4ZWREQjo6VHJhbnNhY3Rpb25WZXJzaW9uQ2hhbmdlOgotICAgICAgICBBU1NFUlQobV9xdWV1
ZWRUcmFuc2FjdGlvbnMuc2l6ZSgpID09IDEpOwotICAgICAgICBBU1NFUlQobV9zdGFydGVkVHJh
bnNhY3Rpb25zLmlzRW1wdHkoKSk7Ci0gICAgICAgIHJldHVybiB0cnVlOwotCi0gICAgY2FzZSBJ
bmRleGVkREI6OlRyYW5zYWN0aW9uUmVhZE9ubHk6Ci0gICAgICAgIHJldHVybiB0cnVlOwotCi0g
ICAgY2FzZSBJbmRleGVkREI6OlRyYW5zYWN0aW9uUmVhZFdyaXRlOgotICAgICAgICBmb3IgKEhh
c2hTZXQ8SURCVHJhbnNhY3Rpb25CYWNrZW5kTGV2ZWxEQio+Ojpjb25zdF9pdGVyYXRvciBpdCA9
IG1fc3RhcnRlZFRyYW5zYWN0aW9ucy5iZWdpbigpOyBpdCAhPSBtX3N0YXJ0ZWRUcmFuc2FjdGlv
bnMuZW5kKCk7ICsraXQpIHsKLSAgICAgICAgICAgIGlmICgoKml0KS0+bW9kZSgpID09IEluZGV4
ZWREQjo6VHJhbnNhY3Rpb25SZWFkV3JpdGUgJiYgZG9TY29wZXNPdmVybGFwKHRyYW5zYWN0aW9u
LT5zY29wZSgpLCAoKml0KS0+c2NvcGUoKSkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OwotICAgICAgICB9Ci0gICAgICAgIGZvciAoTGlzdEhhc2hTZXQ8SURCVHJhbnNhY3Rpb25CYWNr
ZW5kTGV2ZWxEQio+Ojpjb25zdF9pdGVyYXRvciBpdCA9IG1fcXVldWVkVHJhbnNhY3Rpb25zLmJl
Z2luKCk7ICppdCAhPSB0cmFuc2FjdGlvbjsgKytpdCkgewotICAgICAgICAgICAgQVNTRVJUKGl0
ICE9IG1fcXVldWVkVHJhbnNhY3Rpb25zLmVuZCgpKTsKLSAgICAgICAgICAgIGlmICgoKml0KS0+
bW9kZSgpID09IEluZGV4ZWREQjo6VHJhbnNhY3Rpb25SZWFkV3JpdGUgJiYgZG9TY29wZXNPdmVy
bGFwKHRyYW5zYWN0aW9uLT5zY29wZSgpLCAoKml0KS0+c2NvcGUoKSkpCi0gICAgICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgIH0K
LSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KLX07Ci0K
LSNlbmRpZiAvLyBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkgJiYgVVNFKExFVkVMREIpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9sZXZlbGRiL0lEQlRyYW5z
YWN0aW9uQ29vcmRpbmF0b3JMZXZlbERCLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9sZXZlbGRiL0lEQlRyYW5zYWN0aW9uQ29vcmRpbmF0b3JMZXZlbERCLmgKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU2MWE2YjQuLjAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvbGV2ZWxkYi9JREJUcmFuc2FjdGlvbkNvb3JkaW5hdG9yTGV2
ZWxEQi5oCisrKyAvZGV2L251bGwKQEAgLTEsNzEgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAo
QykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICoKLSAqIDEuICBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KLSAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05U
UklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0gKiBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBP
U0UgQVJFCi0gKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCi0gKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwotICogKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOwotICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECi0gKiBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCi0gKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpZm5kZWYgSURC
VHJhbnNhY3Rpb25Db29yZGluYXRvckxldmVsREJfaAotI2RlZmluZSBJREJUcmFuc2FjdGlvbkNv
b3JkaW5hdG9yTGV2ZWxEQl9oCi0KLSNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKLQotI2lu
Y2x1ZGUgPHd0Zi9IYXNoTWFwLmg+Ci0jaW5jbHVkZSA8d3RmL0xpc3RIYXNoU2V0Lmg+Ci0jaW5j
bHVkZSA8d3RmL1JlZlB0ci5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIElEQlRy
YW5zYWN0aW9uQmFja2VuZExldmVsREI7Ci0KLS8vIFRyYW5zYWN0aW9ucyBhcmUgZXhlY3V0ZWQg
aW4gdGhlIG9yZGVyIHRoZSB3ZXJlIGNyZWF0ZWQuCi1jbGFzcyBJREJUcmFuc2FjdGlvbkNvb3Jk
aW5hdG9yTGV2ZWxEQiB7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NPd25QdHI8SURCVHJhbnNh
Y3Rpb25Db29yZGluYXRvckxldmVsREI+IGNyZWF0ZSgpOwotICAgIHZpcnR1YWwgfklEQlRyYW5z
YWN0aW9uQ29vcmRpbmF0b3JMZXZlbERCKCk7Ci0KLSAgICAvLyBDYWxsZWQgYnkgdHJhbnNhY3Rp
b25zIGFzIHRoZXkgc3RhcnQgYW5kIGZpbmlzaC4KLSAgICB2b2lkIGRpZENyZWF0ZVRyYW5zYWN0
aW9uKElEQlRyYW5zYWN0aW9uQmFja2VuZExldmVsREIqKTsKLSAgICB2b2lkIGRpZFN0YXJ0VHJh
bnNhY3Rpb24oSURCVHJhbnNhY3Rpb25CYWNrZW5kTGV2ZWxEQiopOwotICAgIHZvaWQgZGlkRmlu
aXNoVHJhbnNhY3Rpb24oSURCVHJhbnNhY3Rpb25CYWNrZW5kTGV2ZWxEQiopOwotCi0jaWZuZGVm
IE5ERUJVRwotICAgIGJvb2wgaXNBY3RpdmUoSURCVHJhbnNhY3Rpb25CYWNrZW5kTGV2ZWxEQiop
OwotI2VuZGlmCi0KLXByaXZhdGU6Ci0gICAgSURCVHJhbnNhY3Rpb25Db29yZGluYXRvckxldmVs
REIoKTsKLQotICAgIHZvaWQgcHJvY2Vzc1N0YXJ0ZWRUcmFuc2FjdGlvbnMoKTsKLSAgICBib29s
IGNhblJ1blRyYW5zYWN0aW9uKElEQlRyYW5zYWN0aW9uQmFja2VuZExldmVsREIqKTsKLQotICAg
IC8vIFRoaXMgaXMganVzdCBhbiBlZmZpY2llbnQgd2F5IHRvIGtlZXAgcmVmZXJlbmNlcyB0byBh
bGwgdHJhbnNhY3Rpb25zLgotICAgIEhhc2hNYXA8SURCVHJhbnNhY3Rpb25CYWNrZW5kTGV2ZWxE
QiosIFJlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRMZXZlbERCPiA+IG1fdHJhbnNhY3Rpb25z
OwotICAgIC8vIFRyYW5zYWN0aW9ucyBpbiBkaWZmZXJlbnQgc3RhdGVzIGFyZSBncm91cGVkIGJl
bG93LgotICAgIExpc3RIYXNoU2V0PElEQlRyYW5zYWN0aW9uQmFja2VuZExldmVsREIqPiBtX3F1
ZXVlZFRyYW5zYWN0aW9uczsKLSAgICBIYXNoU2V0PElEQlRyYW5zYWN0aW9uQmFja2VuZExldmVs
REIqPiBtX3N0YXJ0ZWRUcmFuc2FjdGlvbnM7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
Ci0KLSNlbmRpZiAvLyBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKLQotI2VuZGlmIC8vIElEQlRy
YW5zYWN0aW9uQ29vcmRpbmF0b3JMZXZlbERCX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAzYjc5ODAxLi40YmQ4N2FhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
KysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBA
IC0xODExLDYgKzE4MTEsOCBAQAogCQk1MUUzRjlENjBEQTA1RTFEMDAyNTA5MTEgLyogSlNTdG9y
YWdlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUx
RTNGOUQ0MERBMDVFMUQwMDI1MDkxMSAvKiBKU1N0b3JhZ2UuY3BwICovOyB9OwogCQk1MUU0MTQz
NDE2QTY1OTYzMDBDNjMzQzcgLyogUmVzb3VyY2VIYW5kbGVUeXBlcy5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFFNDE0MzIxNkE2NTk1MTAwQzYzM0M3
IC8qIFJlc291cmNlSGFuZGxlVHlwZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQk1MUU2ODIxMDE2Mzg3MzAyMDAzQkJGM0MgLyogTG9hZGVyU3Ry
YXRlZ3kuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUx
RTY4MjBGMTYzODczMDIwMDNCQkYzQyAvKiBMb2FkZXJTdHJhdGVneS5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTUxRUFDNTY3MTgxNUVEM0UwMDRG
MUJBNCAvKiBJREJUcmFuc2FjdGlvbkNvb3JkaW5hdG9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxRUFDNTY1MTgxNUVEM0UwMDRGMUJBNCAvKiBJ
REJUcmFuc2FjdGlvbkNvb3JkaW5hdG9yLmNwcCAqLzsgfTsKKwkJNTFFQUM1NjgxODE1RUQzRTAw
NEYxQkE0IC8qIElEQlRyYW5zYWN0aW9uQ29vcmRpbmF0b3IuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxRUFDNTY2MTgxNUVEM0UwMDRGMUJBNCAvKiBJ
REJUcmFuc2FjdGlvbkNvb3JkaW5hdG9yLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTFFQzkyNjUwQ0U5MERENDAwRjkwMzA4IC8qIEpTQ3VzdG9t
U1FMU3RhdGVtZW50RXJyb3JDYWxsYmFjay5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA1MUVDOTI1RDBDRTkwREQ0MDBGOTAzMDggLyogSlNDdXN0b21T
UUxTdGF0ZW1lbnRFcnJvckNhbGxiYWNrLmNwcCAqLzsgfTsKIAkJNTFGNkUwQTMxODExRDI1MjAw
NThBMDBBIC8qIElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFGNkUwOEYxODExRDI1MjAwNThBMDBB
IC8qIElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZS5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTUxRkEyRDc4MTUyMTMyQjMwMEMxQkEwQiAv
KiBET01XaW5kb3dFeHRlbnNpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDUxN0ZCQTE4MTUxQUE3MUIwMEI1Nzk1OSAvKiBET01XaW5kb3dFeHRlbnNp
b24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAt
ODQwOSw2ICs4NDExLDggQEAKIAkJNTFFM0Y5RDUwREEwNUUxRDAwMjUwOTExIC8qIEpTU3RvcmFn
ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1N0b3JhZ2UuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTFFNDE0MzIxNkE2NTk1MTAwQzYzM0M3IC8qIFJlc291
cmNlSGFuZGxlVHlwZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVzb3Vy
Y2VIYW5kbGVUeXBlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MUU2ODIwRjE2
Mzg3MzAyMDAzQkJGM0MgLyogTG9hZGVyU3RyYXRlZ3kuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gTG9hZGVyU3RyYXRlZ3kuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJNTFFQUM1NjUxODE1RUQzRTAwNEYxQkE0IC8qIElEQlRyYW5zYWN0aW9uQ29vcmRpbmF0b3Iu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSURCVHJhbnNhY3Rpb25D
b29yZGluYXRvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUxRUFDNTY2MTgx
NUVEM0UwMDRGMUJBNCAvKiBJREJUcmFuc2FjdGlvbkNvb3JkaW5hdG9yLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IElEQlRyYW5zYWN0aW9uQ29vcmRpbmF0b3IuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTFFQzkyNUQwQ0U5MERENDAwRjkwMzA4IC8qIEpTQ3Vz
dG9tU1FMU3RhdGVtZW50RXJyb3JDYWxsYmFjay5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBKU0N1c3RvbVNRTFN0YXRlbWVudEVycm9yQ2FsbGJhY2suY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MUY2QTNENTA2NjNCRjA0MDA0RDI5MTkgLyogSFRN
TENhbnZhc0VsZW1lbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDMwOyBpbmRlbnRXaWR0aCA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gSFRNTENhbnZhc0VsZW1lbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB0YWJXaWR0aCA9IDg7IHVzZXNUYWJzID0gMDsgfTsKIAkJNTFGNkEzRDYwNjYzQkYw
NDAwNEQyOTE5IC8qIEhUTUxDYW52YXNFbGVtZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGluZGVudFdpZHRoID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEhUTUxDYW52YXNFbGVtZW50Lmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IHRhYldpZHRoID0gODsgdXNlc1RhYnMgPSAwOyB9OwpAQCAtMTY3NTYs
NiArMTY3NjAsOCBAQAogCQkJCTUxRDcxOUE1MTgxMTA2RTAwMDE2REM1MSAvKiBJREJUcmFuc2Fj
dGlvbi5oICovLAogCQkJCTUxRDcxOUE2MTgxMTA2RTAwMDE2REM1MSAvKiBJREJUcmFuc2FjdGlv
bi5pZGwgKi8sCiAJCQkJNTFGNkUwOEYxODExRDI1MjAwNThBMDBBIC8qIElEQlRyYW5zYWN0aW9u
QmFja2VuZEludGVyZmFjZS5oICovLAorCQkJCTUxRUFDNTY1MTgxNUVEM0UwMDRGMUJBNCAvKiBJ
REJUcmFuc2FjdGlvbkNvb3JkaW5hdG9yLmNwcCAqLywKKwkJCQk1MUVBQzU2NjE4MTVFRDNFMDA0
RjFCQTQgLyogSURCVHJhbnNhY3Rpb25Db29yZGluYXRvci5oICovLAogCQkJCTUxRDcxOUFCMTgx
MTA2RTAwMDE2REM1MSAvKiBJREJWZXJzaW9uQ2hhbmdlRXZlbnQuY3BwICovLAogCQkJCTUxRDcx
OUFDMTgxMTA2RTAwMDE2REM1MSAvKiBJREJWZXJzaW9uQ2hhbmdlRXZlbnQuaCAqLywKIAkJCQk1
MUQ3MTlBRDE4MTEwNkUwMDAxNkRDNTEgLyogSURCVmVyc2lvbkNoYW5nZUV2ZW50LmlkbCAqLywK
QEAgLTIyODI4LDYgKzIyODM0LDcgQEAKIAkJCQkyRTJEOTlDRTEwRTJCQkRBMDA0OTYzMzcgLyog
SlNCbG9iLmggaW4gSGVhZGVycyAqLywKIAkJCQkxNDQ5RTI0QzEwN0Q0QTg0MDBCNTc5M0YgLyog
SlNDYWxsYmFja0RhdGEuaCBpbiBIZWFkZXJzICovLAogCQkJCTY1REYzMjNBMDlEMURFNjUwMDBC
RTMyNSAvKiBKU0NhbnZhc0dyYWRpZW50LmggaW4gSGVhZGVycyAqLywKKwkJCQk1MUVBQzU2ODE4
MTVFRDNFMDA0RjFCQTQgLyogSURCVHJhbnNhY3Rpb25Db29yZGluYXRvci5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJNjVERjMyM0MwOUQxREU2NTAwMEJFMzI1IC8qIEpTQ2FudmFzUGF0dGVybi5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJNjVERjMyM0MwOUQxREU2NTAwMUJFMzI1IC8qIEpTQ2FudmFzUHJv
eHkuaCBpbiBIZWFkZXJzICovLAogCQkJCUU0RDU4RUI1MTdCNERCREMwMENCRENBOCAvKiBTdHls
ZVJlc29sdmVGb3JEb2N1bWVudC5oIGluIEhlYWRlcnMgKi8sCkBAIC0yNjM1Nyw2ICsyNjM2NCw3
IEBACiAJCQkJMUFFODJGRUMwQ0FCMDdFRTAwMjIzN0FFIC8qIEpTU1FMUmVzdWx0U2V0LmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTFBRkUxMTk5MENCRkZDQzQwMDMwMTdGQSAvKiBKU1NRTFJlc3Vs
dFNldFJvd0xpc3QuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTFEQ0U4MDIwQ0FDOUYxQzAwNDg4
MzU4IC8qIEpTU1FMUmVzdWx0U2V0Um93TGlzdEN1c3RvbS5jcHAgaW4gU291cmNlcyAqLywKKwkJ
CQk1MUVBQzU2NzE4MTVFRDNFMDA0RjFCQTQgLyogSURCVHJhbnNhY3Rpb25Db29yZGluYXRvci5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQlCNTlERDZBNjExOTAyQTYyMDA3RTk2ODQgLyogSlNTUUxT
dGF0ZW1lbnRDYWxsYmFjay5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCNTlERDZBQTExOTAyQTcx
MDA3RTk2ODQgLyogSlNTUUxTdGF0ZW1lbnRFcnJvckNhbGxiYWNrLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTUxNEM3NjM4MENFOTIyNUUwMDdFRjNDRCAvKiBKU1NRTFRyYW5zYWN0aW9uLmNwcCBp
biBTb3VyY2VzICovLAo=
</data>
<flag name="review"
          id="237389"
          type_id="1"
          status="+"
          setter="thorton"
    />
          </attachment>
      

    </bug>

</bugzilla>