<?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>82058</bug_id>
          
          <creation_ts>2012-03-23 09:05:51 -0700</creation_ts>
          <short_desc>[BlackBerry] Accelerated compositing updates</short_desc>
          <delta_ts>2012-03-26 10:43:25 -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>WebKit BlackBerry</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>0</everconfirmed>
          <reporter name="Filip Spacek">fspacek</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>tonikitoo</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>586377</commentid>
    <comment_count>0</comment_count>
      <attachid>133496</attachid>
    <who name="Filip Spacek">fspacek</who>
    <bug_when>2012-03-23 09:05:51 -0700</bug_when>
    <thetext>Created attachment 133496
accel comp updates

Attached patch includes updates to the accelerated compositing code for BlackBerry port. It reflects changes in skia portion of webkit as well as skia itself.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>587742</commentid>
    <comment_count>1</comment_count>
      <attachid>133496</attachid>
    <who name="Rob Buis">rwlbuis</who>
    <bug_when>2012-03-26 07:51:44 -0700</bug_when>
    <thetext>Comment on attachment 133496
accel comp updates

Looks good, but needs ChangeLog.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>587763</commentid>
    <comment_count>2</comment_count>
      <attachid>133817</attachid>
    <who name="Filip Spacek">fspacek</who>
    <bug_when>2012-03-26 08:23:26 -0700</bug_when>
    <thetext>Created attachment 133817
Now with changelog</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>587767</commentid>
    <comment_count>3</comment_count>
      <attachid>133817</attachid>
    <who name="Rob Buis">rwlbuis</who>
    <bug_when>2012-03-26 08:26:54 -0700</bug_when>
    <thetext>Comment on attachment 133817
Now with changelog

Looks good.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>587795</commentid>
    <comment_count>4</comment_count>
      <attachid>133817</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-03-26 08:53:34 -0700</bug_when>
    <thetext>Comment on attachment 133817
Now with changelog

Rejecting attachment 133817 from commit-queue.

Failed to run &quot;[&apos;/mnt/git/webkit-commit-queue/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=queues.webkit.org&apos;, &apos;-...&quot; exit_code: 2

Last 500 characters of output:
ead.cpp
patching file Source/WebCore/platform/graphics/blackberry/MediaPlayerPrivateBlackBerry.cpp
patching file Source/WebCore/platform/graphics/blackberry/skia/ImageBufferData.h
rm &apos;Source/WebCore/platform/graphics/blackberry/skia/ImageBufferData.h&apos;
patching file Source/WebCore/platform/graphics/blackberry/skia/ImageBufferDataSkia.h

Failed to run &quot;[u&apos;/mnt/git/webkit-commit-queue/Tools/Scripts/svn-apply&apos;, u&apos;--force&apos;, u&apos;--reviewer&apos;, u&apos;Rob Buis&apos;]&quot; exit_code: 1 cwd: /mnt/git/webkit-commit-queue/

Full output: http://queues.webkit.org/results/12132846</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>587803</commentid>
    <comment_count>5</comment_count>
      <attachid>133817</attachid>
    <who name="Rob Buis">rwlbuis</who>
    <bug_when>2012-03-26 09:06:44 -0700</bug_when>
    <thetext>Comment on attachment 133817
Now with changelog

Retry.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>587805</commentid>
    <comment_count>6</comment_count>
      <attachid>133817</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-03-26 09:08:51 -0700</bug_when>
    <thetext>Comment on attachment 133817
Now with changelog

Rejecting attachment 133817 from commit-queue.

Failed to run &quot;[&apos;/mnt/git/webkit-commit-queue/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=queues.webkit.org&apos;, &apos;-...&quot; exit_code: 2

Last 500 characters of output:
ead.cpp
patching file Source/WebCore/platform/graphics/blackberry/MediaPlayerPrivateBlackBerry.cpp
patching file Source/WebCore/platform/graphics/blackberry/skia/ImageBufferData.h
rm &apos;Source/WebCore/platform/graphics/blackberry/skia/ImageBufferData.h&apos;
patching file Source/WebCore/platform/graphics/blackberry/skia/ImageBufferDataSkia.h

Failed to run &quot;[u&apos;/mnt/git/webkit-commit-queue/Tools/Scripts/svn-apply&apos;, u&apos;--force&apos;, u&apos;--reviewer&apos;, u&apos;Rob Buis&apos;]&quot; exit_code: 1 cwd: /mnt/git/webkit-commit-queue/

Full output: http://queues.webkit.org/results/12134883</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>587845</commentid>
    <comment_count>7</comment_count>
      <attachid>133838</attachid>
    <who name="Filip Spacek">fspacek</who>
    <bug_when>2012-03-26 09:49:34 -0700</bug_when>
    <thetext>Created attachment 133838
Fixed patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>587851</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-03-26 09:56:12 -0700</bug_when>
    <thetext>Attachment 133838 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCor...&quot; exit_code: 1
Source/WebCore/platform/graphics/blackberry/skia/ImageBufferDataSkia.h:32:  #ifndef header guard has wrong style, please use: ImageBufferDataSkia_h  [build/header_guard] [5]
Total errors found: 1 in 10 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>587854</commentid>
    <comment_count>9</comment_count>
      <attachid>133839</attachid>
    <who name="Filip Spacek">fspacek</who>
    <bug_when>2012-03-26 09:59:37 -0700</bug_when>
    <thetext>Created attachment 133839
Fixed style</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>587870</commentid>
    <comment_count>10</comment_count>
      <attachid>133839</attachid>
    <who name="Rob Buis">rwlbuis</who>
    <bug_when>2012-03-26 10:28:40 -0700</bug_when>
    <thetext>Comment on attachment 133839
Fixed style

Looks good.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>587879</commentid>
    <comment_count>11</comment_count>
      <attachid>133839</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-03-26 10:43:20 -0700</bug_when>
    <thetext>Comment on attachment 133839
Fixed style

Clearing flags on attachment: 133839

Committed r112124: &lt;http://trac.webkit.org/changeset/112124&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>587880</commentid>
    <comment_count>12</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-03-26 10:43:25 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>133496</attachid>
            <date>2012-03-23 09:05:51 -0700</date>
            <delta_ts>2012-03-26 08:23:26 -0700</delta_ts>
            <desc>accel comp updates</desc>
            <filename>a.diff</filename>
            <type>text/plain</type>
            <size>25793</size>
            <attacher name="Filip Spacek">fspacek</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkv
Q2FudmFzTGF5ZXJXZWJLaXRUaHJlYWQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYmxhY2tiZXJyeS9DYW52YXNMYXllcldlYktpdFRocmVhZC5jcHAKaW5kZXggNGQyMDMy
Ni4uNWY2YTQ4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YmxhY2tiZXJyeS9DYW52YXNMYXllcldlYktpdFRocmVhZC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9DYW52YXNMYXllcldlYktpdFRocmVhZC5j
cHAKQEAgLTE5LDM2ICsxOSwzMSBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkNh
bnZhc0xheWVyV2ViS2l0VGhyZWFkLmgiCiAKLSNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJ
TkcpICYmIEVOQUJMRShTS0lBX0dQVV9DQU5WQVMpCisjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBP
U0lUSU5HKSAmJiBFTkFCTEUoQUNDRUxFUkFURURfMkRfQ0FOVkFTKQogCi0jaW5jbHVkZSAiSFRN
TENhbnZhc0VsZW1lbnQuaCIKLSNpbmNsdWRlICJQbGF0Zm9ybUNvbnRleHRTa2lhLmgiCi0KLSNp
bmNsdWRlIDxCbGFja0JlcnJ5UGxhdGZvcm1HcmFwaGljcy5oPgorI2luY2x1ZGUgIlNoYXJlZEdy
YXBoaWNzQ29udGV4dDNELmgiCiAjaW5jbHVkZSA8R0xFUzIvZ2wyLmg+Ci0jaW5jbHVkZSA8R3JH
TFRleHR1cmUuaD4KICNpbmNsdWRlIDxTa0dwdURldmljZS5oPgogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKLUNhbnZhc0xheWVyV2ViS2l0VGhyZWFkOjpDYW52YXNMYXllcldlYktpdFRocmVhZChI
VE1MQ2FudmFzRWxlbWVudCogY2FudmFzKQotICAgIDogTGF5ZXJXZWJLaXRUaHJlYWQoTGF5ZXIs
IDApCitDYW52YXNMYXllcldlYktpdFRocmVhZDo6Q2FudmFzTGF5ZXJXZWJLaXRUaHJlYWQoU2tH
cHVEZXZpY2UqIGRldmljZSkKKyAgICA6IExheWVyV2ViS2l0VGhyZWFkKENhbnZhc0xheWVyLCAw
KQogewotICAgIHNldENhbnZhcyhjYW52YXMpOworICAgIHNldERldmljZShkZXZpY2UpOwogfQog
CiBDYW52YXNMYXllcldlYktpdFRocmVhZDo6fkNhbnZhc0xheWVyV2ViS2l0VGhyZWFkKCkKIHsK
ICAgICBpZiAobV90ZXhJRCkgewotICAgICAgICBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6R3JhcGhp
Y3M6Om1ha2VTaGFyZWRSZXNvdXJjZUNvbnRleHRDdXJyZW50KEJsYWNrQmVycnk6OlBsYXRmb3Jt
OjpHcmFwaGljczo6R0xFUzIpOworICAgICAgICBTaGFyZWRHcmFwaGljc0NvbnRleHQzRDo6Z2V0
KCktPm1ha2VDb250ZXh0Q3VycmVudCgpOwogICAgICAgICBnbERlbGV0ZVRleHR1cmVzKDEsICZt
X3RleElEKTsKICAgICB9CiB9CiAKLXZvaWQgQ2FudmFzTGF5ZXJXZWJLaXRUaHJlYWQ6OnNldENh
bnZhcyhIVE1MQ2FudmFzRWxlbWVudCogY2FudmFzKQordm9pZCBDYW52YXNMYXllcldlYktpdFRo
cmVhZDo6c2V0RGV2aWNlKFNrR3B1RGV2aWNlKiBkZXZpY2UpCiB7Ci0gICAgbV9jYW52YXMgPSBj
YW52YXM7Ci0gICAgc2V0TmVlZHNUZXh0dXJlKGlzRHJhd2FibGUoKSAmJiBjYW52YXMpOworICAg
IG1fZGV2aWNlID0gZGV2aWNlOwogICAgIHNldExheWVyUHJvZ3JhbVNoYWRlcihMYXllclByb2dy
YW1TaGFkZXJSR0JBKTsKICAgICBzZXROZWVkc0Rpc3BsYXkoKTsKIH0KQEAgLTYxLDIxICs1Niwx
MSBAQCB2b2lkIENhbnZhc0xheWVyV2ViS2l0VGhyZWFkOjpzZXROZWVkc0Rpc3BsYXkoKQogCiB2
b2lkIENhbnZhc0xheWVyV2ViS2l0VGhyZWFkOjp1cGRhdGVUZXh0dXJlQ29udGVudHNJZk5lZWRl
ZCgpCiB7Ci0gICAgaWYgKCFtX25lZWRzRGlzcGxheSkKKyAgICBpZiAoIW1fbmVlZHNEaXNwbGF5
IHx8ICFtX2RldmljZSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgbV9uZWVkc0Rpc3BsYXkgPSBm
YWxzZTsKLQotICAgIGlmICghbV9jYW52YXMgfHwgIW1fY2FudmFzLT5kcmF3aW5nQ29udGV4dCgp
KQotICAgICAgICByZXR1cm47Ci0KLSAgICBTa0dwdURldmljZSogZ3B1RGV2aWNlID0gc3RhdGlj
X2Nhc3Q8U2tHcHVEZXZpY2UqPihtX2NhbnZhcy0+ZHJhd2luZ0NvbnRleHQoKS0+cGxhdGZvcm1D
b250ZXh0KCktPmNhbnZhcygpLT5nZXREZXZpY2UoKSk7Ci0gICAgZ3B1RGV2aWNlLT5tYWtlUmVu
ZGVyVGFyZ2V0Q3VycmVudCgpOwotICAgIC8vIFdlIGtub3cgdGhpcyBpcyBhIEdyR0xUZXh0dXJl
Ci0gICAgaWYgKEdyR0xUZXh0dXJlKiBkZXZpY2VUZXh0dXJlID0gKEdyR0xUZXh0dXJlKilncHVE
ZXZpY2UtPmFjY2Vzc1RleHR1cmUoKSkgewotICAgICAgICBtX3RleFdpZHRoID0gZGV2aWNlVGV4
dHVyZS0+YWxsb2NXaWR0aCgpOwotICAgICAgICBtX3RleEhlaWdodCA9IGRldmljZVRleHR1cmUt
PmFsbG9jSGVpZ2h0KCk7Ci0gICAgfQorICAgIG1fZGV2aWNlLT5tYWtlUmVuZGVyVGFyZ2V0Q3Vy
cmVudCgpOwogCiAgICAgR0xpbnQgcHJldmlvdXNUZXh0dXJlOwogICAgIGdsR2V0SW50ZWdlcnYo
R0xfVEVYVFVSRV9CSU5ESU5HXzJELCAmcHJldmlvdXNUZXh0dXJlKTsKQEAgLTg3LDE4ICs3Miwx
OCBAQCB2b2lkIENhbnZhc0xheWVyV2ViS2l0VGhyZWFkOjp1cGRhdGVUZXh0dXJlQ29udGVudHNJ
Zk5lZWRlZCgpCiAgICAgICAgIGdsVGV4UGFyYW1ldGVyZihHTF9URVhUVVJFXzJELCBHTF9URVhU
VVJFX01BR19GSUxURVIsIEdMX0xJTkVBUik7CiAgICAgICAgIGdsVGV4UGFyYW1ldGVyZihHTF9U
RVhUVVJFXzJELCBHTF9URVhUVVJFX1dSQVBfUywgR0xfQ0xBTVBfVE9fRURHRSk7CiAgICAgICAg
IGdsVGV4UGFyYW1ldGVyZihHTF9URVhUVVJFXzJELCBHTF9URVhUVVJFX1dSQVBfVCwgR0xfQ0xB
TVBfVE9fRURHRSk7Ci0gICAgICAgIGdsVGV4SW1hZ2UyRChHTF9URVhUVVJFXzJELCAwLCBHTF9S
R0JBLCBtX2NhbnZhcy0+d2lkdGgoKSwgbV9jYW52YXMtPmhlaWdodCgpLCAwLCBHTF9SR0JBLCBH
TF9VTlNJR05FRF9CWVRFLCAwKTsKKyAgICAgICAgZ2xUZXhJbWFnZTJEKEdMX1RFWFRVUkVfMkQs
IDAsIEdMX1JHQkEsIG1fZGV2aWNlLT53aWR0aCgpLCBtX2RldmljZS0+aGVpZ2h0KCksIDAsIEdM
X1JHQkEsIEdMX1VOU0lHTkVEX0JZVEUsIDApOwogCiAgICAgICAgIGNyZWF0ZUZyb250QnVmZmVy
TG9jaygpOwogICAgIH0KIAogICAgIHB0aHJlYWRfbXV0ZXhfbG9jayhtX2Zyb250QnVmZmVyTG9j
ayk7CiAgICAgZ2xCaW5kVGV4dHVyZShHTF9URVhUVVJFXzJELCBtX3RleElEKTsKLSAgICBnbENv
cHlUZXhJbWFnZTJEKEdMX1RFWFRVUkVfMkQsIDAsIEdMX1JHQkEsIDAsIDAsIG1fdGV4V2lkdGgs
IG1fdGV4SGVpZ2h0LCAwKTsKKyAgICBnbENvcHlUZXhJbWFnZTJEKEdMX1RFWFRVUkVfMkQsIDAs
IEdMX1JHQkEsIDAsIDAsIG1fZGV2aWNlLT53aWR0aCgpLCBtX2RldmljZS0+aGVpZ2h0KCksIDAp
OwogICAgIGdsQmluZFRleHR1cmUoR0xfVEVYVFVSRV8yRCwgcHJldmlvdXNUZXh0dXJlKTsKICAg
ICBwdGhyZWFkX211dGV4X3VubG9jayhtX2Zyb250QnVmZmVyTG9jayk7CiB9CiAKIH0KIAotI2Vu
ZGlmIC8vIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykgJiYgRU5BQkxFKFNLSUFfR1BVX0NB
TlZBUykKKyNlbmRpZiAvLyBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpICYmIEVOQUJMRShB
Q0NFTEVSQVRFRF8yRF9DQU5WQVMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9ibGFja2JlcnJ5L0NhbnZhc0xheWVyV2ViS2l0VGhyZWFkLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L0NhbnZhc0xheWVyV2ViS2l0VGhy
ZWFkLmgKaW5kZXggOWE3MzFjZS4uZWFjNmI4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9DYW52YXNMYXllcldlYktpdFRocmVhZC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvQ2FudmFzTGF5
ZXJXZWJLaXRUaHJlYWQuaApAQCAtMTksMjQgKzE5LDI2IEBACiAjaWZuZGVmIENhbnZhc0xheWVy
V2ViS2l0VGhyZWFkX2gKICNkZWZpbmUgQ2FudmFzTGF5ZXJXZWJLaXRUaHJlYWRfaAogCi0jaWYg
VVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKSAmJiBFTkFCTEUoU0tJQV9HUFVfQ0FOVkFTKQor
I2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykgJiYgRU5BQkxFKEFDQ0VMRVJBVEVEXzJE
X0NBTlZBUykKIAogI2luY2x1ZGUgIkxheWVyV2ViS2l0VGhyZWFkLmgiCiAKK2NsYXNzIFNrR3B1
RGV2aWNlOworCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEhUTUxDYW52YXNFbGVtZW50
OwogCiBjbGFzcyBDYW52YXNMYXllcldlYktpdFRocmVhZCA6IHB1YmxpYyBMYXllcldlYktpdFRo
cmVhZCB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8Q2FudmFzTGF5ZXJXZWJLaXRU
aHJlYWQ+IGNyZWF0ZShIVE1MQ2FudmFzRWxlbWVudCogY2FudmFzKQorICAgIHN0YXRpYyBQYXNz
UmVmUHRyPENhbnZhc0xheWVyV2ViS2l0VGhyZWFkPiBjcmVhdGUoU2tHcHVEZXZpY2UqIGRldmlj
ZSkKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgQ2FudmFzTGF5ZXJXZWJLaXRU
aHJlYWQoY2FudmFzKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgQ2FudmFzTGF5ZXJX
ZWJLaXRUaHJlYWQoZGV2aWNlKSk7CiAgICAgfQogCiAgICAgdmlydHVhbCB+Q2FudmFzTGF5ZXJX
ZWJLaXRUaHJlYWQoKTsKIAotICAgIHZvaWQgc2V0Q2FudmFzKEhUTUxDYW52YXNFbGVtZW50Kik7
CisgICAgdm9pZCBzZXREZXZpY2UoU2tHcHVEZXZpY2UqKTsKIAogICAgIHZpcnR1YWwgdm9pZCBz
ZXROZWVkc0Rpc3BsYXkoKTsKIApAQCAtNDQsMTIgKzQ2LDEzIEBAIHByb3RlY3RlZDoKICAgICB2
aXJ0dWFsIHZvaWQgdXBkYXRlVGV4dHVyZUNvbnRlbnRzSWZOZWVkZWQoKTsKIAogcHJpdmF0ZToK
LSAgICBDYW52YXNMYXllcldlYktpdFRocmVhZChIVE1MQ2FudmFzRWxlbWVudCopOworICAgIENh
bnZhc0xheWVyV2ViS2l0VGhyZWFkKFNrR3B1RGV2aWNlKik7CiAgICAgYm9vbCBtX25lZWRzRGlz
cGxheTsKKyAgICBTa0dwdURldmljZSogbV9kZXZpY2U7CiB9OwogCiB9CiAKLSNlbmRpZiAvLyBV
U0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpICYmIEVOQUJMRShTS0lBX0dQVV9DQU5WQVMpCisj
ZW5kaWYgLy8gVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKSAmJiBFTkFCTEUoQUNDRUxFUkFU
RURfMkRfQ0FOVkFTKQogCiAjZW5kaWYgLy8gQ2FudmFzTGF5ZXJXZWJLaXRUaHJlYWRfaApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9HcmFw
aGljc0NvbnRleHQzREJsYWNrQmVycnkuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYmxhY2tiZXJyeS9HcmFwaGljc0NvbnRleHQzREJsYWNrQmVycnkuY3BwCmluZGV4IDJi
NDEwMTUuLmE5Y2E1ZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2JsYWNrYmVycnkvR3JhcGhpY3NDb250ZXh0M0RCbGFja0JlcnJ5LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L0dyYXBoaWNzQ29udGV4dDNE
QmxhY2tCZXJyeS5jcHAKQEAgLTE5NSwxNSArMTk1LDE2IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0
M0Q6OnBhaW50VG9DYW52YXMoY29uc3QgdW5zaWduZWQgY2hhciogaW1hZ2VQaXhlbHMsIGludCBp
bWFnCiAKICAgICBjYW52YXNCaXRtYXAuc2V0Q29uZmlnKFNrQml0bWFwOjprQVJHQl84ODg4X0Nv
bmZpZywgY2FudmFzV2lkdGgsIGNhbnZhc0hlaWdodCk7CiAgICAgY2FudmFzQml0bWFwLmFsbG9j
UGl4ZWxzKDAsIDApOwotICAgIGJvb2wgcmMgPSBjYW52YXNCaXRtYXAuY29weVBpeGVsc0Zyb20o
c3RhdGljX2Nhc3Q8dm9pZCo+KGNvbnN0X2Nhc3Q8dW5zaWduZWQgY2hhcio+KHRlbXBQaXhlbHMp
KSwgaW1hZ2VXaWR0aCAqIGltYWdlSGVpZ2h0ICogNCk7CisgICAgY2FudmFzQml0bWFwLmxvY2tQ
aXhlbHMoKTsKKyAgICBtZW1jcHkoY2FudmFzQml0bWFwLmdldFBpeGVscygpLCB0ZW1wUGl4ZWxz
LCBpbWFnZVdpZHRoICogaW1hZ2VIZWlnaHQgKiA0KTsKKyAgICBjYW52YXNCaXRtYXAudW5sb2Nr
UGl4ZWxzKCk7CiAgICAgZGVsZXRlIFtdIHRlbXBQaXhlbHM7CiAKICAgICBGbG9hdFJlY3Qgc3Jj
KDAsIDAsIGNhbnZhc1dpZHRoLCBjYW52YXNIZWlnaHQpOwogICAgIEZsb2F0UmVjdCBkc3QoMCwg
MCwgaW1hZ2VXaWR0aCwgaW1hZ2VIZWlnaHQpOwogCiAgICAgUmVmUHRyPEJpdG1hcEltYWdlU2lu
Z2xlRnJhbWVTa2lhPiBiaXRtYXBJbWFnZSA9IEJpdG1hcEltYWdlU2luZ2xlRnJhbWVTa2lhOjpj
cmVhdGUoY2FudmFzQml0bWFwLCBmYWxzZSk7IC8vIFRPRE86IFNob3VsZCB3ZSBjb3B5IHBpeGVs
cz8KLSAgICBpZiAocmMpCi0gICAgICAgIGNvbnRleHQtPmRyYXdJbWFnZShiaXRtYXBJbWFnZS5n
ZXQoKSwgQ29sb3JTcGFjZURldmljZVJHQiwgZHN0LCBzcmMsIENvbXBvc2l0ZUNvcHksIGZhbHNl
KTsKKyAgICBjb250ZXh0LT5kcmF3SW1hZ2UoYml0bWFwSW1hZ2UuZ2V0KCksIENvbG9yU3BhY2VE
ZXZpY2VSR0IsIGRzdCwgc3JjLCBDb21wb3NpdGVDb3B5LCBmYWxzZSk7CiB9CiAKIHZvaWQgR3Jh
cGhpY3NDb250ZXh0M0Q6OnNldENvbnRleHRMb3N0Q2FsbGJhY2soUGFzc093blB0cjxDb250ZXh0
TG9zdENhbGxiYWNrPikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2JsYWNrYmVycnkvSW5zdHJ1bWVudGVkUGxhdGZvcm1DYW52YXMuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvSW5zdHJ1bWVudGVkUGxhdGZvcm1DYW52
YXMuaAppbmRleCAxNjI5ZmYxLi43ODBiYzAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L0luc3RydW1lbnRlZFBsYXRmb3JtQ2FudmFzLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9JbnN0cnVt
ZW50ZWRQbGF0Zm9ybUNhbnZhcy5oCkBAIC0zNCwxNCArMzQsMTQgQEAKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCi1jbGFzcyBJbnN0cnVtZW50ZWRQbGF0Zm9ybUNhbnZhcyA6IHB1YmxpYyBza2lh
OjpQbGF0Zm9ybUNhbnZhcyB7CitjbGFzcyBJbnN0cnVtZW50ZWRQbGF0Zm9ybUNhbnZhcyA6IHB1
YmxpYyBTa0NhbnZhcyB7CiBwdWJsaWM6Ci0gICAgSW5zdHJ1bWVudGVkUGxhdGZvcm1DYW52YXMo
aW50IHdpZHRoLCBpbnQgaGVpZ2h0LCBib29sIGlzX29wYXF1ZSwgU2tEZXZpY2VGYWN0b3J5KiBm
YWN0b3J5KQotICAgICAgICA6IHNraWE6OlBsYXRmb3JtQ2FudmFzKHdpZHRoLCBoZWlnaHQsIGlz
X29wYXF1ZSwgZmFjdG9yeSkKLSAgICAgICAgLCBtX3NpemUod2lkdGgsIGhlaWdodCkKKyAgICBJ
bnN0cnVtZW50ZWRQbGF0Zm9ybUNhbnZhcyhpbnQgd2lkdGgsIGludCBoZWlnaHQpCisgICAgICAg
IDogbV9zaXplKHdpZHRoLCBoZWlnaHQpCiAgICAgICAgICwgbV9pc1NvbGlkQ29sb3IodHJ1ZSkK
ICAgICAgICAgLCBtX3NvbGlkQ29sb3IoMCwgMCwgMCwgMCkKICAgICB7CisgICAgICAgIHNldERl
dmljZShuZXcgU2tEZXZpY2UoU2tCaXRtYXA6OmtBUkdCXzg4ODhfQ29uZmlnLCB3aWR0aCwgaGVp
Z2h0KSktPnVucmVmKCk7CiAgICAgfQogCiAgICAgdmlydHVhbCB+SW5zdHJ1bWVudGVkUGxhdGZv
cm1DYW52YXMoKSB7IH0KQEAgLTUzLDc2ICs1Myw3NiBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBp
bnQgc2F2ZShTYXZlRmxhZ3MgZmxhZ3MpCiAgICAgewogICAgICAgICBXUkFQQ0FOVkFTX0xPR19F
TlRSWSgiIik7Ci0gICAgICAgIHJldHVybiBza2lhOjpQbGF0Zm9ybUNhbnZhczo6c2F2ZShmbGFn
cyk7CisgICAgICAgIHJldHVybiBTa0NhbnZhczo6c2F2ZShmbGFncyk7CiAgICAgfQogCiAgICAg
dmlydHVhbCBpbnQgc2F2ZUxheWVyKGNvbnN0IFNrUmVjdCogYm91bmRzLCBjb25zdCBTa1BhaW50
KiBwYWludCwgU2F2ZUZsYWdzIGZsYWdzKQogICAgIHsKICAgICAgICAgV1JBUENBTlZBU19MT0df
RU5UUlkoIiIpOwogICAgICAgICBtX2lzU29saWRDb2xvciA9IGZhbHNlOwotICAgICAgICByZXR1
cm4gc2tpYTo6UGxhdGZvcm1DYW52YXM6OnNhdmVMYXllcihib3VuZHMsIHBhaW50LCBmbGFncyk7
CisgICAgICAgIHJldHVybiBTa0NhbnZhczo6c2F2ZUxheWVyKGJvdW5kcywgcGFpbnQsIGZsYWdz
KTsKICAgICB9CiAKICAgICB2aXJ0dWFsIHZvaWQgcmVzdG9yZSgpCiAgICAgewogICAgICAgICBX
UkFQQ0FOVkFTX0xPR19FTlRSWSgiIik7Ci0gICAgICAgIHNraWE6OlBsYXRmb3JtQ2FudmFzOjpy
ZXN0b3JlKCk7CisgICAgICAgIFNrQ2FudmFzOjpyZXN0b3JlKCk7CiAgICAgfQogCiAgICAgdmly
dHVhbCBib29sIHRyYW5zbGF0ZShTa1NjYWxhciBkeCwgU2tTY2FsYXIgZHkpCiAgICAgewogICAg
ICAgICBXUkFQQ0FOVkFTX0xPR19FTlRSWSgiIik7Ci0gICAgICAgIHJldHVybiBza2lhOjpQbGF0
Zm9ybUNhbnZhczo6dHJhbnNsYXRlKGR4LCBkeSk7CisgICAgICAgIHJldHVybiBTa0NhbnZhczo6
dHJhbnNsYXRlKGR4LCBkeSk7CiAgICAgfQogCiAgICAgdmlydHVhbCBib29sIHNjYWxlKFNrU2Nh
bGFyIHN4LCBTa1NjYWxhciBzeSkKICAgICB7CiAgICAgICAgIFdSQVBDQU5WQVNfTE9HX0VOVFJZ
KCIiKTsKLSAgICAgICAgcmV0dXJuIHNraWE6OlBsYXRmb3JtQ2FudmFzOjpzY2FsZShzeCwgc3kp
OworICAgICAgICByZXR1cm4gU2tDYW52YXM6OnNjYWxlKHN4LCBzeSk7CiAgICAgfQogCiAgICAg
dmlydHVhbCBib29sIHJvdGF0ZShTa1NjYWxhciBkZWdyZWVzKQogICAgIHsKICAgICAgICAgV1JB
UENBTlZBU19MT0dfRU5UUlkoIiIpOwotICAgICAgICByZXR1cm4gc2tpYTo6UGxhdGZvcm1DYW52
YXM6OnJvdGF0ZShkZWdyZWVzKTsKKyAgICAgICAgcmV0dXJuIFNrQ2FudmFzOjpyb3RhdGUoZGVn
cmVlcyk7CiAgICAgfQogCiAgICAgdmlydHVhbCBib29sIHNrZXcoU2tTY2FsYXIgc3gsIFNrU2Nh
bGFyIHN5KQogICAgIHsKICAgICAgICAgV1JBUENBTlZBU19MT0dfRU5UUlkoIiIpOwotICAgICAg
ICByZXR1cm4gc2tpYTo6UGxhdGZvcm1DYW52YXM6OnNrZXcoc3gsIHN5KTsKKyAgICAgICAgcmV0
dXJuIFNrQ2FudmFzOjpza2V3KHN4LCBzeSk7CiAgICAgfQogCiAgICAgdmlydHVhbCBib29sIGNv
bmNhdChjb25zdCBTa01hdHJpeCYgbWF0cml4KQogICAgIHsKICAgICAgICAgV1JBUENBTlZBU19M
T0dfRU5UUlkoIiIpOwotICAgICAgICByZXR1cm4gc2tpYTo6UGxhdGZvcm1DYW52YXM6OmNvbmNh
dChtYXRyaXgpOworICAgICAgICByZXR1cm4gU2tDYW52YXM6OmNvbmNhdChtYXRyaXgpOwogICAg
IH0KIAogICAgIHZpcnR1YWwgdm9pZCBzZXRNYXRyaXgoY29uc3QgU2tNYXRyaXgmIG1hdHJpeCkK
ICAgICB7CiAgICAgICAgIFdSQVBDQU5WQVNfTE9HX0VOVFJZKCIiKTsKLSAgICAgICAgc2tpYTo6
UGxhdGZvcm1DYW52YXM6OnNldE1hdHJpeChtYXRyaXgpOworICAgICAgICBTa0NhbnZhczo6c2V0
TWF0cml4KG1hdHJpeCk7CiAgICAgfQogCiAgICAgdmlydHVhbCBib29sIGNsaXBSZWN0KGNvbnN0
IFNrUmVjdCYgcmVjdCwgU2tSZWdpb246Ok9wIG9wKQogICAgIHsKICAgICAgICAgV1JBUENBTlZB
U19MT0dfRU5UUlkoIiIpOwotICAgICAgICByZXR1cm4gc2tpYTo6UGxhdGZvcm1DYW52YXM6OmNs
aXBSZWN0KHJlY3QsIG9wKTsKKyAgICAgICAgcmV0dXJuIFNrQ2FudmFzOjpjbGlwUmVjdChyZWN0
LCBvcCk7CiAgICAgfQogCiAgICAgdmlydHVhbCBib29sIGNsaXBQYXRoKGNvbnN0IFNrUGF0aCYg
cGF0aCwgU2tSZWdpb246Ok9wIG9wKSAKICAgICB7CiAgICAgICAgIFdSQVBDQU5WQVNfTE9HX0VO
VFJZKCIiKTsKICAgICAgICAgbV9pc1NvbGlkQ29sb3IgPSBmYWxzZTsKLSAgICAgICAgcmV0dXJu
IHNraWE6OlBsYXRmb3JtQ2FudmFzOjpjbGlwUGF0aChwYXRoLCBvcCk7CisgICAgICAgIHJldHVy
biBTa0NhbnZhczo6Y2xpcFBhdGgocGF0aCwgb3ApOwogICAgIH0KIAogICAgIHZpcnR1YWwgYm9v
bCBjbGlwUmVnaW9uKGNvbnN0IFNrUmVnaW9uJiByZWdpb24sIFNrUmVnaW9uOjpPcCBvcCkKICAg
ICB7CiAgICAgICAgIFdSQVBDQU5WQVNfTE9HX0VOVFJZKCIiKTsKICAgICAgICAgbV9pc1NvbGlk
Q29sb3IgPSBmYWxzZTsKLSAgICAgICAgcmV0dXJuIHNraWE6OlBsYXRmb3JtQ2FudmFzOjpjbGlw
UmVnaW9uKHJlZ2lvbiwgb3ApOworICAgICAgICByZXR1cm4gU2tDYW52YXM6OmNsaXBSZWdpb24o
cmVnaW9uLCBvcCk7CiAgICAgfQogCiAgICAgdmlydHVhbCB2b2lkIGNsZWFyKFNrQ29sb3IgY29s
b3IpCkBAIC0xMzAsMTQgKzEzMCwxNCBAQCBwdWJsaWM6CiAgICAgICAgIFdSQVBDQU5WQVNfTE9H
X0VOVFJZKCIiKTsKICAgICAgICAgbV9pc1NvbGlkQ29sb3IgPSB0cnVlOwogICAgICAgICBtX3Nv
bGlkQ29sb3IgPSBDb2xvcihjb2xvcik7Ci0gICAgICAgIHNraWE6OlBsYXRmb3JtQ2FudmFzOjpj
bGVhcihjb2xvcik7CisgICAgICAgIFNrQ2FudmFzOjpjbGVhcihjb2xvcik7CiAgICAgfQogCiAg
ICAgdmlydHVhbCB2b2lkIGRyYXdQYWludChjb25zdCBTa1BhaW50JiBwYWludCkKICAgICB7CiAg
ICAgICAgIFdSQVBDQU5WQVNfTE9HX0VOVFJZKCIiKTsKICAgICAgICAgbV9pc1NvbGlkQ29sb3Ig
PSBmYWxzZTsKLSAgICAgICAgc2tpYTo6UGxhdGZvcm1DYW52YXM6OmRyYXdQYWludChwYWludCk7
CisgICAgICAgIFNrQ2FudmFzOjpkcmF3UGFpbnQocGFpbnQpOwogICAgIH0KIAogICAgIHZpcnR1
YWwgdm9pZCBkcmF3UG9pbnRzKFBvaW50TW9kZSBtb2RlLCBzaXplX3QgY291bnQsIGNvbnN0IFNr
UG9pbnQgcHRzW10sCkBAIC0xNDUsNyArMTQ1LDcgQEAgcHVibGljOgogICAgIHsKICAgICAgICAg
V1JBUENBTlZBU19MT0dfRU5UUlkoIiIpOwogICAgICAgICBtX2lzU29saWRDb2xvciA9IGZhbHNl
OwotICAgICAgICBza2lhOjpQbGF0Zm9ybUNhbnZhczo6ZHJhd1BvaW50cyhtb2RlLCBjb3VudCwg
cHRzLCBwYWludCk7CisgICAgICAgIFNrQ2FudmFzOjpkcmF3UG9pbnRzKG1vZGUsIGNvdW50LCBw
dHMsIHBhaW50KTsKICAgICB9CiAKICAgICB2aXJ0dWFsIHZvaWQgZHJhd1JlY3QoY29uc3QgU2tS
ZWN0JiByZWN0LCBjb25zdCBTa1BhaW50JiBwYWludCkKQEAgLTE2NSwxNCArMTY1LDE0IEBAIHB1
YmxpYzoKICAgICAgICAgICAgICAgICAgbV9pc1NvbGlkQ29sb3IgPSBmYWxzZTsKICAgICAgICAg
fSBlbHNlCiAgICAgICAgICAgICBtX2lzU29saWRDb2xvciA9IGZhbHNlOwotICAgICAgICBza2lh
OjpQbGF0Zm9ybUNhbnZhczo6ZHJhd1JlY3QocmVjdCwgcGFpbnQpOworICAgICAgICBTa0NhbnZh
czo6ZHJhd1JlY3QocmVjdCwgcGFpbnQpOwogICAgIH0KIAogICAgIHZpcnR1YWwgdm9pZCBkcmF3
UGF0aChjb25zdCBTa1BhdGgmIHBhdGgsIGNvbnN0IFNrUGFpbnQmIHBhaW50KQogICAgIHsKICAg
ICAgICAgV1JBUENBTlZBU19MT0dfRU5UUlkoIiIpOwogICAgICAgICBtX2lzU29saWRDb2xvciA9
IGZhbHNlOwotICAgICAgICBza2lhOjpQbGF0Zm9ybUNhbnZhczo6ZHJhd1BhdGgocGF0aCwgcGFp
bnQpOworICAgICAgICBTa0NhbnZhczo6ZHJhd1BhdGgocGF0aCwgcGFpbnQpOwogICAgIH0KIAog
ICAgIHZpcnR1YWwgdm9pZCBkcmF3Qml0bWFwKGNvbnN0IFNrQml0bWFwJiBiaXRtYXAsIFNrU2Nh
bGFyIGxlZnQsCkBAIC0xODAsNyArMTgwLDcgQEAgcHVibGljOgogICAgIHsKICAgICAgICAgV1JB
UENBTlZBU19MT0dfRU5UUlkoIiIpOwogICAgICAgICBtX2lzU29saWRDb2xvciA9IGZhbHNlOwot
ICAgICAgICBza2lhOjpQbGF0Zm9ybUNhbnZhczo6ZHJhd0JpdG1hcChiaXRtYXAsIGxlZnQsIHRv
cCwgcGFpbnQpOworICAgICAgICBTa0NhbnZhczo6ZHJhd0JpdG1hcChiaXRtYXAsIGxlZnQsIHRv
cCwgcGFpbnQpOwogICAgIH0KIAogICAgIHZpcnR1YWwgdm9pZCBkcmF3Qml0bWFwUmVjdChjb25z
dCBTa0JpdG1hcCYgYml0bWFwLCBjb25zdCBTa0lSZWN0KiBzcmMsCkBAIC0xODgsNyArMTg4LDcg
QEAgcHVibGljOgogICAgIHsKICAgICAgICAgV1JBUENBTlZBU19MT0dfRU5UUlkoIiIpOwogICAg
ICAgICBtX2lzU29saWRDb2xvciA9IGZhbHNlOwotICAgICAgICBza2lhOjpQbGF0Zm9ybUNhbnZh
czo6ZHJhd0JpdG1hcFJlY3QoYml0bWFwLCBzcmMsIGRzdCwgcGFpbnQpOworICAgICAgICBTa0Nh
bnZhczo6ZHJhd0JpdG1hcFJlY3QoYml0bWFwLCBzcmMsIGRzdCwgcGFpbnQpOwogICAgIH0KIAog
ICAgIHZpcnR1YWwgdm9pZCBkcmF3Qml0bWFwTWF0cml4KGNvbnN0IFNrQml0bWFwJiBiaXRtYXAs
CkBAIC0xOTYsNyArMTk2LDcgQEAgcHVibGljOgogICAgIHsKICAgICAgICAgV1JBUENBTlZBU19M
T0dfRU5UUlkoIiIpOwogICAgICAgICBtX2lzU29saWRDb2xvciA9IGZhbHNlOwotICAgICAgICBz
a2lhOjpQbGF0Zm9ybUNhbnZhczo6ZHJhd0JpdG1hcE1hdHJpeChiaXRtYXAsIG1hdHJpeCwgcGFp
bnQpOworICAgICAgICBTa0NhbnZhczo6ZHJhd0JpdG1hcE1hdHJpeChiaXRtYXAsIG1hdHJpeCwg
cGFpbnQpOwogICAgIH0KIAogICAgIHZpcnR1YWwgdm9pZCBkcmF3U3ByaXRlKGNvbnN0IFNrQml0
bWFwJiBiaXRtYXAsIGludCBsZWZ0LCBpbnQgdG9wLApAQCAtMjA0LDcgKzIwNCw3IEBAIHB1Ymxp
YzoKICAgICB7CiAgICAgICAgIFdSQVBDQU5WQVNfTE9HX0VOVFJZKCIiKTsKICAgICAgICAgbV9p
c1NvbGlkQ29sb3IgPSBmYWxzZTsKLSAgICAgICAgc2tpYTo6UGxhdGZvcm1DYW52YXM6OmRyYXdT
cHJpdGUoYml0bWFwLCBsZWZ0LCB0b3AsIHBhaW50KTsKKyAgICAgICAgU2tDYW52YXM6OmRyYXdT
cHJpdGUoYml0bWFwLCBsZWZ0LCB0b3AsIHBhaW50KTsKICAgICB9CiAKICAgICB2aXJ0dWFsIHZv
aWQgZHJhd1RleHQoY29uc3Qgdm9pZCogdGV4dCwgc2l6ZV90IGJ5dGVMZW5ndGgsIFNrU2NhbGFy
IHgsCkBAIC0yMTIsNyArMjEyLDcgQEAgcHVibGljOgogICAgIHsKICAgICAgICAgV1JBUENBTlZB
U19MT0dfRU5UUlkoIiIpOwogICAgICAgICBtX2lzU29saWRDb2xvciA9IGZhbHNlOwotICAgICAg
ICBza2lhOjpQbGF0Zm9ybUNhbnZhczo6ZHJhd1RleHQodGV4dCwgYnl0ZUxlbmd0aCwgeCwgeSwg
cGFpbnQpOworICAgICAgICBTa0NhbnZhczo6ZHJhd1RleHQodGV4dCwgYnl0ZUxlbmd0aCwgeCwg
eSwgcGFpbnQpOwogICAgIH0KIAogICAgIHZpcnR1YWwgdm9pZCBkcmF3UG9zVGV4dChjb25zdCB2
b2lkKiB0ZXh0LCBzaXplX3QgYnl0ZUxlbmd0aCwKQEAgLTIyMCw3ICsyMjAsNyBAQCBwdWJsaWM6
CiAgICAgewogICAgICAgICBXUkFQQ0FOVkFTX0xPR19FTlRSWSgiIik7CiAgICAgICAgIG1faXNT
b2xpZENvbG9yID0gZmFsc2U7Ci0gICAgICAgIHNraWE6OlBsYXRmb3JtQ2FudmFzOjpkcmF3UG9z
VGV4dCh0ZXh0LCBieXRlTGVuZ3RoLCBwb3MsIHBhaW50KTsKKyAgICAgICAgU2tDYW52YXM6OmRy
YXdQb3NUZXh0KHRleHQsIGJ5dGVMZW5ndGgsIHBvcywgcGFpbnQpOwogICAgIH0KIAogICAgIHZp
cnR1YWwgdm9pZCBkcmF3UG9zVGV4dEgoY29uc3Qgdm9pZCogdGV4dCwgc2l6ZV90IGJ5dGVMZW5n
dGgsCkBAIC0yMjgsNyArMjI4LDcgQEAgcHVibGljOgogICAgIHsKICAgICAgICAgV1JBUENBTlZB
U19MT0dfRU5UUlkoIiIpOwogICAgICAgICBtX2lzU29saWRDb2xvciA9IGZhbHNlOwotICAgICAg
ICBza2lhOjpQbGF0Zm9ybUNhbnZhczo6ZHJhd1Bvc1RleHRIKHRleHQsIGJ5dGVMZW5ndGgsIHhw
b3MsIGNvbnN0WSwgcGFpbnQpOworICAgICAgICBTa0NhbnZhczo6ZHJhd1Bvc1RleHRIKHRleHQs
IGJ5dGVMZW5ndGgsIHhwb3MsIGNvbnN0WSwgcGFpbnQpOwogICAgIH0KIAogICAgIHZpcnR1YWwg
dm9pZCBkcmF3VGV4dE9uUGF0aChjb25zdCB2b2lkKiB0ZXh0LCBzaXplX3QgYnl0ZUxlbmd0aCwK
QEAgLTIzNiwxNCArMjM2LDE0IEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIFdSQVBDQU5WQVNf
TE9HX0VOVFJZKCIiKTsKICAgICAgICAgbV9pc1NvbGlkQ29sb3IgPSBmYWxzZTsKLSAgICAgICAg
c2tpYTo6UGxhdGZvcm1DYW52YXM6OmRyYXdUZXh0T25QYXRoKHRleHQsIGJ5dGVMZW5ndGgsIHBh
dGgsIG1hdHJpeCwgcGFpbnQpOworICAgICAgICBTa0NhbnZhczo6ZHJhd1RleHRPblBhdGgodGV4
dCwgYnl0ZUxlbmd0aCwgcGF0aCwgbWF0cml4LCBwYWludCk7CiAgICAgfQogCiAgICAgdmlydHVh
bCB2b2lkIGRyYXdQaWN0dXJlKFNrUGljdHVyZSYgcGljdHVyZSkKICAgICB7CiAgICAgICAgIFdS
QVBDQU5WQVNfTE9HX0VOVFJZKCIiKTsKICAgICAgICAgbV9pc1NvbGlkQ29sb3IgPSBmYWxzZTsK
LSAgICAgICAgc2tpYTo6UGxhdGZvcm1DYW52YXM6OmRyYXdQaWN0dXJlKHBpY3R1cmUpOworICAg
ICAgICBTa0NhbnZhczo6ZHJhd1BpY3R1cmUocGljdHVyZSk7CiAgICAgfQogCiAgICAgdmlydHVh
bCB2b2lkIGRyYXdWZXJ0aWNlcyhWZXJ0ZXhNb2RlIG1vZGUsIGludCB2ZXJ0ZXhDb3VudCwKQEAg
LTI1MywxNCArMjUzLDE0IEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIFdSQVBDQU5WQVNfTE9H
X0VOVFJZKCIiKTsKICAgICAgICAgbV9pc1NvbGlkQ29sb3IgPSBmYWxzZTsKLSAgICAgICAgc2tp
YTo6UGxhdGZvcm1DYW52YXM6OmRyYXdWZXJ0aWNlcyhtb2RlLCB2ZXJ0ZXhDb3VudCwgdmVydGlj
ZXMsIHRleHMsIGNvbG9ycywgeGZlcm1vZGUsIGluZGljZXMsIGluZGV4Q291bnQsIHBhaW50KTsK
KyAgICAgICAgU2tDYW52YXM6OmRyYXdWZXJ0aWNlcyhtb2RlLCB2ZXJ0ZXhDb3VudCwgdmVydGlj
ZXMsIHRleHMsIGNvbG9ycywgeGZlcm1vZGUsIGluZGljZXMsIGluZGV4Q291bnQsIHBhaW50KTsK
ICAgICB9CiAKICAgICB2aXJ0dWFsIHZvaWQgZHJhd0RhdGEoY29uc3Qgdm9pZCogZGF0YSwgc2l6
ZV90IHNpemUpCiAgICAgewogICAgICAgICBXUkFQQ0FOVkFTX0xPR19FTlRSWSgiIik7CiAgICAg
ICAgIG1faXNTb2xpZENvbG9yID0gZmFsc2U7Ci0gICAgICAgIHNraWE6OlBsYXRmb3JtQ2FudmFz
OjpkcmF3RGF0YShkYXRhLCBzaXplKTsKKyAgICAgICAgU2tDYW52YXM6OmRyYXdEYXRhKGRhdGEs
IHNpemUpOwogICAgIH0KIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvTGF5ZXJEYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L0xheWVyRGF0YS5oCmluZGV4IDU3NzQ2ZmEuLjg1
NzU3ODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2JsYWNr
YmVycnkvTGF5ZXJEYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YmxhY2tiZXJyeS9MYXllckRhdGEuaApAQCAtNTQsNyArNTQsNyBAQCBjbGFzcyBNZWRpYVBsYXll
cjsKIAogY2xhc3MgTGF5ZXJEYXRhIHsKIHB1YmxpYzoKLSAgICBlbnVtIExheWVyVHlwZSB7IExh
eWVyLCBUcmFuc2Zvcm1MYXllciwgV2ViR0xMYXllciB9OworICAgIGVudW0gTGF5ZXJUeXBlIHsg
TGF5ZXIsIFRyYW5zZm9ybUxheWVyLCBXZWJHTExheWVyLCBDYW52YXNMYXllciB9OwogICAgIGVu
dW0gRmlsdGVyVHlwZSB7IExpbmVhciwgTmVhcmVzdCwgVHJpbGluZWFyLCBMYW5jem9zIH07CiAg
ICAgZW51bSBMYXllclByb2dyYW1TaGFkZXIgeyBMYXllclByb2dyYW1TaGFkZXJSR0JBID0gMCwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExheWVyUHJvZ3JhbVNoYWRlckJHUkEsCkBA
IC03NCw5ICs3NCw2IEBAIHB1YmxpYzoKICAgICAgICAgLCBtX21lZGlhUGxheWVyKDApCiAjZW5k
aWYKICAgICAgICAgLCBtX3RleElEKDApCi0gICAgICAgICwgbV90ZXhXaWR0aCgwKQotICAgICAg
ICAsIG1fdGV4SGVpZ2h0KDApCi0gICAgICAgICwgbV9jYW52YXMoMCkKICAgICAgICAgLCBtX2Zy
b250QnVmZmVyTG9jaygwKQogICAgICAgICAsIG1fc3VzcGVuZFRpbWUoMCkKICAgICAgICAgLCBt
X2RvdWJsZVNpZGVkKHRydWUpCkBAIC0xMzAsNyArMTI3LDcgQEAgcHVibGljOgogICAgIHVuc2ln
bmVkIGdldFRleHR1cmVJRCgpIGNvbnN0IHsgcmV0dXJuIG1fdGV4SUQ7IH0KICAgICB2b2lkIHNl
dFRleHR1cmVJRCh1bnNpZ25lZCBpbnQgdmFsdWUpIHsgbV90ZXhJRCA9IHZhbHVlOyB9CiAKLSAg
ICBib29sIG5lZWRzVGV4dHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fbGF5ZXJUeXBlID09IFdlYkdM
TGF5ZXIgPyB0cnVlIDogbV9uZWVkc1RleHR1cmU7IH0KKyAgICBib29sIG5lZWRzVGV4dHVyZSgp
IGNvbnN0IHsgcmV0dXJuIG1fbGF5ZXJUeXBlID09IFdlYkdMTGF5ZXIgfHwgbV9sYXllclR5cGUg
PT0gQ2FudmFzTGF5ZXIgfHwgbV9uZWVkc1RleHR1cmU7IH0KIAogICAgIExheWVyUHJvZ3JhbVNo
YWRlciBsYXllclByb2dyYW1TaGFkZXIoKSBjb25zdCB7IHJldHVybiBtX2xheWVyUHJvZ3JhbVNo
YWRlcjsgfQogCkBAIC0xNDcsOCArMTQ0LDYgQEAgcHVibGljOgogICAgIE1lZGlhUGxheWVyKiBt
ZWRpYVBsYXllcigpIGNvbnN0IHsgcmV0dXJuIG1fbWVkaWFQbGF5ZXI7IH0KICNlbmRpZgogCi0g
ICAgSFRNTENhbnZhc0VsZW1lbnQqIGNhbnZhcygpIGNvbnN0IHsgcmV0dXJuIG1fY2FudmFzOyB9
Ci0KICAgICB2b2lkIHJlcGxpY2F0ZShMYXllckRhdGEgKnRvKSBjb25zdCB7ICp0byA9ICp0aGlz
OyB9CiAKICAgICBMYXllclR5cGUgbGF5ZXJUeXBlKCkgY29uc3QgeyByZXR1cm4gbV9sYXllclR5
cGU7IH0KQEAgLTE5MywxMCArMTg4LDYgQEAgcHJvdGVjdGVkOgogICAgIEludFJlY3QgbV9ob2xl
UHVuY2hSZWN0OwogCiAgICAgdW5zaWduZWQgbV90ZXhJRDsKLSAgICB1bnNpZ25lZCBtX3RleFdp
ZHRoOwotICAgIHVuc2lnbmVkIG1fdGV4SGVpZ2h0OwotCi0gICAgSFRNTENhbnZhc0VsZW1lbnQq
IG1fY2FudmFzOwogCiAgICAgcHRocmVhZF9tdXRleF90KiBtX2Zyb250QnVmZmVyTG9jazsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9M
YXllclRpbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVy
cnkvTGF5ZXJUaWxlci5jcHAKaW5kZXggOGUzYjFmZS4uMDJmOGU0YSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9MYXllclRpbGVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L0xheWVyVGls
ZXIuY3BwCkBAIC0xNjgsNyArMTY4LDcgQEAgdm9pZCBMYXllclRpbGVyOjp1cGRhdGVUZXh0dXJl
Q29udGVudHNJZk5lZWRlZChkb3VibGUgc2NhbGUpCiAgICAgICAgICAgICBpZiAoaW1hZ2UtPmlz
Qml0bWFwSW1hZ2UoKSkKICAgICAgICAgICAgICAgICBpc09wYXF1ZSA9ICFzdGF0aWNfY2FzdDxC
aXRtYXBJbWFnZSo+KGltYWdlKS0+Y3VycmVudEZyYW1lSGFzQWxwaGEoKTsKICAgICAgICAgICAg
IGlmIChOYXRpdmVJbWFnZVB0ciBuYXRpdmVJbWFnZSA9IGltYWdlLT5uYXRpdmVJbWFnZUZvckN1
cnJlbnRGcmFtZSgpKSB7Ci0gICAgICAgICAgICAgICAgU2tCaXRtYXAgYml0bWFwID0gU2tCaXRt
YXAoKm5hdGl2ZUltYWdlKTsKKyAgICAgICAgICAgICAgICBTa0JpdG1hcCBiaXRtYXAgPSBTa0Jp
dG1hcChuYXRpdmVJbWFnZS0+Yml0bWFwKCkpOwogICAgICAgICAgICAgICAgIGFkZFRleHR1cmVK
b2IoVGV4dHVyZUpvYjo6c2V0Q29udGVudHMoYml0bWFwLCBpc09wYXF1ZSkpOwogICAgICAgICAg
ICAgfQogICAgICAgICB9IGVsc2UgewpAQCAtMjIyLDcgKzIyMiw3IEBAIHZvaWQgTGF5ZXJUaWxl
cjo6dXBkYXRlVGV4dHVyZUNvbnRlbnRzSWZOZWVkZWQoZG91YmxlIHNjYWxlKQogICAgICAgICAv
LyBObyBwb2ludCBpbiB0aWxpbmcgYW4gaW1hZ2UgbGF5ZXIsIHRoZSBpbWFnZSBpcyBhbHJlYWR5
IHN0b3JlZCBhcyBhbiBTa0JpdG1hcAogICAgICAgICBOYXRpdmVJbWFnZVB0ciBuYXRpdmVJbWFn
ZSA9IG1fbGF5ZXItPmNvbnRlbnRzKCktPm5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCk7CiAg
ICAgICAgIGlmIChuYXRpdmVJbWFnZSkgewotICAgICAgICAgICAgU2tCaXRtYXAgYml0bWFwID0g
U2tCaXRtYXAoKm5hdGl2ZUltYWdlKTsKKyAgICAgICAgICAgIFNrQml0bWFwIGJpdG1hcCA9IFNr
Qml0bWFwKG5hdGl2ZUltYWdlLT5iaXRtYXAoKSk7CiAgICAgICAgICAgICBhZGRUZXh0dXJlSm9i
KFRleHR1cmVKb2I6OnNldENvbnRlbnRzKGJpdG1hcCwgaXNPcGFxdWUpKTsKICAgICAgICAgfQog
ICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9ibGFja2JlcnJ5L0xheWVyV2ViS2l0VGhyZWFkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvTGF5ZXJXZWJLaXRUaHJlYWQuY3BwCmluZGV4IDZj
YWRmMzUuLjk5ZDdhMDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2JsYWNrYmVycnkvTGF5ZXJXZWJLaXRUaHJlYWQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvTGF5ZXJXZWJLaXRUaHJlYWQuY3BwCkBAIC0x
MDgsNyArMTA4LDcgQEAgU2tCaXRtYXAgTGF5ZXJXZWJLaXRUaHJlYWQ6OnBhaW50Q29udGVudHMo
Y29uc3QgSW50UmVjdCYgY29udGVudHNSZWN0LCBkb3VibGUgc2MKICAgICBpZiAoZHJhd3NDb250
ZW50KCkpIHsgLy8gTGF5ZXIgY29udGVudHMgbXVzdCBiZSBkcmF3biBpbnRvIGEgY2FudmFzLgog
ICAgICAgICBJbnRSZWN0IHVudHJhbnNmb3JtZWRDb250ZW50c1JlY3QgPSBjb250ZW50c1JlY3Q7
CiAKLSAgICAgICAgY2FudmFzID0gYWRvcHRQdHIobmV3IEluc3RydW1lbnRlZFBsYXRmb3JtQ2Fu
dmFzKGNvbnRlbnRzUmVjdC53aWR0aCgpLCBjb250ZW50c1JlY3QuaGVpZ2h0KCksIGZhbHNlLCAw
KSk7CisgICAgICAgIGNhbnZhcyA9IGFkb3B0UHRyKG5ldyBJbnN0cnVtZW50ZWRQbGF0Zm9ybUNh
bnZhcyhjb250ZW50c1JlY3Qud2lkdGgoKSwgY29udGVudHNSZWN0LmhlaWdodCgpKSk7CiAgICAg
ICAgIFBsYXRmb3JtQ29udGV4dFNraWEgc2tpYUNvbnRleHQoY2FudmFzLmdldCgpKTsKIAogICAg
ICAgICBHcmFwaGljc0NvbnRleHQgZ3JhcGhpY3NDb250ZXh0KCZza2lhQ29udGV4dCk7CkBAIC0x
OTEsNyArMTkxLDcgQEAgdm9pZCBMYXllcldlYktpdFRocmVhZDo6c2V0RHJhd2FibGUoYm9vbCBp
c0RyYXdhYmxlKQogCiAgICAgbV9pc0RyYXdhYmxlID0gaXNEcmF3YWJsZTsKIAotICAgIHNldE5l
ZWRzVGV4dHVyZShtX2lzRHJhd2FibGUgJiYgKGRyYXdzQ29udGVudCgpIHx8IGNvbnRlbnRzKCkg
fHwgcGx1Z2luVmlldygpIHx8IG1lZGlhUGxheWVyKCkgfHwgY2FudmFzKCkpKTsKKyAgICBzZXRO
ZWVkc1RleHR1cmUobV9pc0RyYXdhYmxlICYmIChkcmF3c0NvbnRlbnQoKSB8fCBjb250ZW50cygp
IHx8IHBsdWdpblZpZXcoKSB8fCBtZWRpYVBsYXllcigpIHx8IG1fdGV4SUQpKTsKICAgICBzZXRO
ZWVkc0NvbW1pdCgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9ibGFja2JlcnJ5L01lZGlhUGxheWVyUHJpdmF0ZUJsYWNrQmVycnkuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9NZWRpYVBsYXllclByaXZh
dGVCbGFja0JlcnJ5LmNwcAppbmRleCAxZDhiZDNhLi4wYWI5ODc4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L01lZGlhUGxheWVyUHJpdmF0
ZUJsYWNrQmVycnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Js
YWNrYmVycnkvTWVkaWFQbGF5ZXJQcml2YXRlQmxhY2tCZXJyeS5jcHAKQEAgLTcwOSwxNSArNzA5
LDE1IEBAIHN0YXRpYyB2b2lkIGxvYWRCdWZmZXJpbmdJbWFnZURhdGEoKQogICAgICAgICAgICAg
cmV0dXJuOwogCiAgICAgICAgIGxvYWRlZCA9IHRydWU7Ci0gICAgICAgIG5hdGl2ZUltYWdlLT5s
b2NrUGl4ZWxzKCk7CisgICAgICAgIG5hdGl2ZUltYWdlLT5iaXRtYXAoKS5sb2NrUGl4ZWxzKCk7
CiAKLSAgICAgICAgaW50IGJ1ZlNpemUgPSBuYXRpdmVJbWFnZS0+d2lkdGgoKSAqIG5hdGl2ZUlt
YWdlLT5oZWlnaHQoKSAqIDQ7Ci0gICAgICAgIHNfYnVmZmVyaW5nSW1hZ2VXaWR0aCA9IG5hdGl2
ZUltYWdlLT53aWR0aCgpOwotICAgICAgICBzX2J1ZmZlcmluZ0ltYWdlSGVpZ2h0ID0gbmF0aXZl
SW1hZ2UtPmhlaWdodCgpOworICAgICAgICBpbnQgYnVmU2l6ZSA9IG5hdGl2ZUltYWdlLT5iaXRt
YXAoKS53aWR0aCgpICogbmF0aXZlSW1hZ2UtPmJpdG1hcCgpLmhlaWdodCgpICogNDsKKyAgICAg
ICAgc19idWZmZXJpbmdJbWFnZVdpZHRoID0gbmF0aXZlSW1hZ2UtPmJpdG1hcCgpLndpZHRoKCk7
CisgICAgICAgIHNfYnVmZmVyaW5nSW1hZ2VIZWlnaHQgPSBuYXRpdmVJbWFnZS0+Yml0bWFwKCku
aGVpZ2h0KCk7CiAgICAgICAgIHNfYnVmZmVyaW5nSW1hZ2VEYXRhID0gc3RhdGljX2Nhc3Q8Y2hh
cio+KG1hbGxvYyhidWZTaXplKSk7Ci0gICAgICAgIG1lbWNweShzX2J1ZmZlcmluZ0ltYWdlRGF0
YSwgbmF0aXZlSW1hZ2UtPmdldFBpeGVscygpLCBidWZTaXplKTsKKyAgICAgICAgbWVtY3B5KHNf
YnVmZmVyaW5nSW1hZ2VEYXRhLCBuYXRpdmVJbWFnZS0+Yml0bWFwKCkuZ2V0UGl4ZWxzKCksIGJ1
ZlNpemUpOwogCi0gICAgICAgIG5hdGl2ZUltYWdlLT51bmxvY2tQaXhlbHMoKTsKKyAgICAgICAg
bmF0aXZlSW1hZ2UtPmJpdG1hcCgpLnVubG9ja1BpeGVscygpOwogICAgICAgICBidWZmZXJpbmdJ
Y29uLT5kZXJlZigpOwogICAgIH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvc2tpYS9JbWFnZUJ1ZmZlckRhdGEuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvc2tpYS9JbWFnZUJ1ZmZlckRhdGEu
aApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDA5MTk3ZS4uMDAwMDAwMAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L3NraWEvSW1hZ2VCdWZm
ZXJEYXRhLmgKKysrIC9kZXYvbnVsbApAQCAtMSw1MyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0
IChjKSAyMDA4LCAyMDA5LCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogQ29w
eXJpZ2h0IChjKSAyMDExLCBSZXNlYXJjaCBJbiBNb3Rpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQu
Ci0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0gKiBtZXQ6Ci0gKgotICogICAg
ICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSAqIGluIHRoZSBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSAq
IGRpc3RyaWJ1dGlvbi4KLSAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4g
bm9yIHRoZSBuYW1lcyBvZiBpdHMKLSAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRv
cnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0gKiB0aGlzIHNvZnR3YXJlIHdp
dGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRP
UlMKLSAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSAqIEEgUEFSVElDVUxBUiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0gKiBPV05F
UiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwKLSAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotICogREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0g
KiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lm
bmRlZiBJbWFnZUJ1ZmZlckRhdGFfaAotI2RlZmluZSBJbWFnZUJ1ZmZlckRhdGFfaAotCi0jaW5j
bHVkZSAiQmxhY2tCZXJyeVBsYXRmb3JtR3JhcGhpY3MuaCIKLSNpbmNsdWRlICJQbGF0Zm9ybUNv
bnRleHRTa2lhLmgiCi0KLSNpbmNsdWRlICJza2lhL2V4dC9wbGF0Zm9ybV9jYW52YXMuaCIKLQot
bmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBJbWFnZUJ1ZmZlckRhdGEgewotcHVibGljOgot
ICAgIEltYWdlQnVmZmVyRGF0YShjb25zdCBJbnRTaXplJik7Ci0KLSAgICBPd25QdHI8U2tDYW52
YXM+IG1fY2FudmFzOwotICAgIFBsYXRmb3JtQ29udGV4dFNraWEgbV9wbGF0Zm9ybUNvbnRleHQ7
Ci0gICAgQmxhY2tCZXJyeTo6UGxhdGZvcm06OkdyYXBoaWNzOjpCdWZmZXIqIG1fYnVmZmVyOwot
fTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gSW1hZ2VCdWZmZXJEYXRh
X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVy
cnkvc2tpYS9JbWFnZUJ1ZmZlckRhdGFTa2lhLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9ibGFja2JlcnJ5L3NraWEvSW1hZ2VCdWZmZXJEYXRhU2tpYS5oCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjUzODlhOTEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L3NraWEvSW1hZ2VCdWZmZXJE
YXRhU2tpYS5oCkBAIC0wLDAgKzEsNTMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKGMpIDIwMDgsIDIw
MDksIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKGMpIDIw
MTEsIFJlc2VhcmNoIEluIE1vdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9u
LgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVz
IG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90
ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZp
YyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElT
IiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICog
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIEltYWdlQnVm
ZmVyRGF0YV9oCisjZGVmaW5lIEltYWdlQnVmZmVyRGF0YV9oCisKKyNpbmNsdWRlICJCbGFja0Jl
cnJ5UGxhdGZvcm1HcmFwaGljcy5oIgorI2luY2x1ZGUgIlBsYXRmb3JtQ29udGV4dFNraWEuaCIK
KyNpbmNsdWRlICJMYXllcldlYktpdFRocmVhZC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisK
K2NsYXNzIEltYWdlQnVmZmVyRGF0YSB7CitwdWJsaWM6CisgICAgSW1hZ2VCdWZmZXJEYXRhKGNv
bnN0IEludFNpemUmKTsKKworICAgIE93blB0cjxTa0NhbnZhcz4gbV9jYW52YXM7CisgICAgUGxh
dGZvcm1Db250ZXh0U2tpYSBtX3BsYXRmb3JtQ29udGV4dDsKKyAgICBCbGFja0JlcnJ5OjpQbGF0
Zm9ybTo6R3JhcGhpY3M6OkJ1ZmZlciogbV9idWZmZXI7CisgICAgUmVmUHRyPExheWVyV2ViS2l0
VGhyZWFkPiBtX3BsYXRmb3JtTGF5ZXI7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisK
KyNlbmRpZiAvLyBJbWFnZUJ1ZmZlckRhdGFfaAo=
</data>
<flag name="review"
          id="137507"
          type_id="1"
          status="-"
          setter="rwlbuis"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>133817</attachid>
            <date>2012-03-26 08:23:26 -0700</date>
            <delta_ts>2012-03-26 09:49:34 -0700</delta_ts>
            <desc>Now with changelog</desc>
            <filename>up.diff</filename>
            <type>text/plain</type>
            <size>29476</size>
            <attacher name="Filip Spacek">fspacek</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCAyNzdjMTNmLi5iYjA2M2IzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNjMg
QEAKKzIwMTItMDMtMjYgIEZpbGlwIFNwYWNlayAgPGZzcGFjZWtAcmltLmNvbT4KKworICAgICAg
ICBbQmxhY2tCZXJyeV0gQWNjZWxlcmF0ZWQgY29tcG9zaXRpbmcgdXBkYXRlcworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODIwNTgKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2JsYWNrYmVycnkvQ2FudmFzTGF5ZXJXZWJLaXRUaHJlYWQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Q2FudmFzTGF5ZXJXZWJLaXRUaHJlYWQ6OkNhbnZhc0xheWVyV2ViS2l0VGhyZWFkKToKKyAg
ICAgICAgKFdlYkNvcmU6OkNhbnZhc0xheWVyV2ViS2l0VGhyZWFkOjp+Q2FudmFzTGF5ZXJXZWJL
aXRUaHJlYWQpOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzTGF5ZXJXZWJLaXRUaHJlYWQ6OnNl
dERldmljZSk6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNMYXllcldlYktpdFRocmVhZDo6dXBk
YXRlVGV4dHVyZUNvbnRlbnRzSWZOZWVkZWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2JsYWNrYmVycnkvQ2FudmFzTGF5ZXJXZWJLaXRUaHJlYWQuaDoKKyAgICAgICAgKFdlYkNvcmU6
OkNhbnZhc0xheWVyV2ViS2l0VGhyZWFkOjpjcmVhdGUpOgorICAgICAgICAoQ2FudmFzTGF5ZXJX
ZWJLaXRUaHJlYWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvSW5z
dHJ1bWVudGVkUGxhdGZvcm1DYW52YXMuaDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3RydW1lbnRl
ZFBsYXRmb3JtQ2FudmFzOjpJbnN0cnVtZW50ZWRQbGF0Zm9ybUNhbnZhcyk6CisgICAgICAgIChX
ZWJDb3JlOjpJbnN0cnVtZW50ZWRQbGF0Zm9ybUNhbnZhczo6c2F2ZSk6CisgICAgICAgIChXZWJD
b3JlOjpJbnN0cnVtZW50ZWRQbGF0Zm9ybUNhbnZhczo6c2F2ZUxheWVyKToKKyAgICAgICAgKFdl
YkNvcmU6Okluc3RydW1lbnRlZFBsYXRmb3JtQ2FudmFzOjpyZXN0b3JlKToKKyAgICAgICAgKFdl
YkNvcmU6Okluc3RydW1lbnRlZFBsYXRmb3JtQ2FudmFzOjp0cmFuc2xhdGUpOgorICAgICAgICAo
V2ViQ29yZTo6SW5zdHJ1bWVudGVkUGxhdGZvcm1DYW52YXM6OnNjYWxlKToKKyAgICAgICAgKFdl
YkNvcmU6Okluc3RydW1lbnRlZFBsYXRmb3JtQ2FudmFzOjpyb3RhdGUpOgorICAgICAgICAoV2Vi
Q29yZTo6SW5zdHJ1bWVudGVkUGxhdGZvcm1DYW52YXM6OnNrZXcpOgorICAgICAgICAoV2ViQ29y
ZTo6SW5zdHJ1bWVudGVkUGxhdGZvcm1DYW52YXM6OmNvbmNhdCk6CisgICAgICAgIChXZWJDb3Jl
OjpJbnN0cnVtZW50ZWRQbGF0Zm9ybUNhbnZhczo6c2V0TWF0cml4KToKKyAgICAgICAgKFdlYkNv
cmU6Okluc3RydW1lbnRlZFBsYXRmb3JtQ2FudmFzOjpjbGlwUmVjdCk6CisgICAgICAgIChXZWJD
b3JlOjpJbnN0cnVtZW50ZWRQbGF0Zm9ybUNhbnZhczo6Y2xpcFBhdGgpOgorICAgICAgICAoV2Vi
Q29yZTo6SW5zdHJ1bWVudGVkUGxhdGZvcm1DYW52YXM6OmNsaXBSZWdpb24pOgorICAgICAgICAo
V2ViQ29yZTo6SW5zdHJ1bWVudGVkUGxhdGZvcm1DYW52YXM6OmNsZWFyKToKKyAgICAgICAgKFdl
YkNvcmU6Okluc3RydW1lbnRlZFBsYXRmb3JtQ2FudmFzOjpkcmF3UGFpbnQpOgorICAgICAgICAo
V2ViQ29yZTo6SW5zdHJ1bWVudGVkUGxhdGZvcm1DYW52YXM6OmRyYXdQb2ludHMpOgorICAgICAg
ICAoV2ViQ29yZTo6SW5zdHJ1bWVudGVkUGxhdGZvcm1DYW52YXM6OmRyYXdSZWN0KToKKyAgICAg
ICAgKFdlYkNvcmU6Okluc3RydW1lbnRlZFBsYXRmb3JtQ2FudmFzOjpkcmF3UGF0aCk6CisgICAg
ICAgIChXZWJDb3JlOjpJbnN0cnVtZW50ZWRQbGF0Zm9ybUNhbnZhczo6ZHJhd0JpdG1hcCk6Cisg
ICAgICAgIChXZWJDb3JlOjpJbnN0cnVtZW50ZWRQbGF0Zm9ybUNhbnZhczo6ZHJhd0JpdG1hcFJl
Y3QpOgorICAgICAgICAoV2ViQ29yZTo6SW5zdHJ1bWVudGVkUGxhdGZvcm1DYW52YXM6OmRyYXdC
aXRtYXBNYXRyaXgpOgorICAgICAgICAoV2ViQ29yZTo6SW5zdHJ1bWVudGVkUGxhdGZvcm1DYW52
YXM6OmRyYXdTcHJpdGUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zdHJ1bWVudGVkUGxhdGZvcm1D
YW52YXM6OmRyYXdUZXh0KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3RydW1lbnRlZFBsYXRmb3Jt
Q2FudmFzOjpkcmF3UG9zVGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpJbnN0cnVtZW50ZWRQbGF0
Zm9ybUNhbnZhczo6ZHJhd1Bvc1RleHRIKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3RydW1lbnRl
ZFBsYXRmb3JtQ2FudmFzOjpkcmF3VGV4dE9uUGF0aCk6CisgICAgICAgIChXZWJDb3JlOjpJbnN0
cnVtZW50ZWRQbGF0Zm9ybUNhbnZhczo6ZHJhd1BpY3R1cmUpOgorICAgICAgICAoV2ViQ29yZTo6
SW5zdHJ1bWVudGVkUGxhdGZvcm1DYW52YXM6OmRyYXdWZXJ0aWNlcyk6CisgICAgICAgIChXZWJD
b3JlOjpJbnN0cnVtZW50ZWRQbGF0Zm9ybUNhbnZhczo6ZHJhd0RhdGEpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvTGF5ZXJEYXRhLmg6CisgICAgICAgIChXZWJDb3Jl
OjpMYXllckRhdGE6OkxheWVyRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpMYXllckRhdGE6Om5l
ZWRzVGV4dHVyZSk6CisgICAgICAgIChMYXllckRhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2JsYWNrYmVycnkvTGF5ZXJUaWxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMYXll
clRpbGVyOjp1cGRhdGVUZXh0dXJlQ29udGVudHNJZk5lZWRlZCk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9MYXllcldlYktpdFRocmVhZC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpMYXllcldlYktpdFRocmVhZDo6cGFpbnRDb250ZW50cyk6CisgICAgICAgIChXZWJD
b3JlOjpMYXllcldlYktpdFRocmVhZDo6c2V0RHJhd2FibGUpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2JsYWNrYmVycnkvTWVkaWFQbGF5ZXJQcml2YXRlQmxhY2tCZXJyeS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpsb2FkQnVmZmVyaW5nSW1hZ2VEYXRhKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L3NraWEvSW1hZ2VCdWZmZXJEYXRhU2tpYS5oOiBSZW5h
bWVkIGZyb20gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9za2lh
L0ltYWdlQnVmZmVyRGF0YS5oLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChJbWFnZUJ1
ZmZlckRhdGEpOgorCiAyMDEyLTAzLTIyICBKb25hdGhhbiBEb25nICA8am9uYXRoYW4uZG9uZ0B0
b3JjaG1vYmlsZS5jb20uY24+CiAKICAgICAgICAgW0JsYWNrQmVycnldIGh0dHAgYXV0aGVudGlj
YXRlIGRpYWxvZyBwb3B1cCBvbmx5IG9uY2Ugbm8gbWF0dGVyIGF1dGhlbnRpY2F0aW9uIHBhc3Mg
b3IgZmFpbApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYmxh
Y2tiZXJyeS9DYW52YXNMYXllcldlYktpdFRocmVhZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L0NhbnZhc0xheWVyV2ViS2l0VGhyZWFkLmNwcAppbmRl
eCA0ZDIwMzI2Li41ZjZhNDg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9ibGFja2JlcnJ5L0NhbnZhc0xheWVyV2ViS2l0VGhyZWFkLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L0NhbnZhc0xheWVyV2ViS2l0
VGhyZWFkLmNwcApAQCAtMTksMzYgKzE5LDMxIEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5j
bHVkZSAiQ2FudmFzTGF5ZXJXZWJLaXRUaHJlYWQuaCIKIAotI2lmIFVTRShBQ0NFTEVSQVRFRF9D
T01QT1NJVElORykgJiYgRU5BQkxFKFNLSUFfR1BVX0NBTlZBUykKKyNpZiBVU0UoQUNDRUxFUkFU
RURfQ09NUE9TSVRJTkcpICYmIEVOQUJMRShBQ0NFTEVSQVRFRF8yRF9DQU5WQVMpCiAKLSNpbmNs
dWRlICJIVE1MQ2FudmFzRWxlbWVudC5oIgotI2luY2x1ZGUgIlBsYXRmb3JtQ29udGV4dFNraWEu
aCIKLQotI2luY2x1ZGUgPEJsYWNrQmVycnlQbGF0Zm9ybUdyYXBoaWNzLmg+CisjaW5jbHVkZSAi
U2hhcmVkR3JhcGhpY3NDb250ZXh0M0QuaCIKICNpbmNsdWRlIDxHTEVTMi9nbDIuaD4KLSNpbmNs
dWRlIDxHckdMVGV4dHVyZS5oPgogI2luY2x1ZGUgPFNrR3B1RGV2aWNlLmg+CiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAotQ2FudmFzTGF5ZXJXZWJLaXRUaHJlYWQ6OkNhbnZhc0xheWVyV2ViS2l0
VGhyZWFkKEhUTUxDYW52YXNFbGVtZW50KiBjYW52YXMpCi0gICAgOiBMYXllcldlYktpdFRocmVh
ZChMYXllciwgMCkKK0NhbnZhc0xheWVyV2ViS2l0VGhyZWFkOjpDYW52YXNMYXllcldlYktpdFRo
cmVhZChTa0dwdURldmljZSogZGV2aWNlKQorICAgIDogTGF5ZXJXZWJLaXRUaHJlYWQoQ2FudmFz
TGF5ZXIsIDApCiB7Ci0gICAgc2V0Q2FudmFzKGNhbnZhcyk7CisgICAgc2V0RGV2aWNlKGRldmlj
ZSk7CiB9CiAKIENhbnZhc0xheWVyV2ViS2l0VGhyZWFkOjp+Q2FudmFzTGF5ZXJXZWJLaXRUaHJl
YWQoKQogewogICAgIGlmIChtX3RleElEKSB7Ci0gICAgICAgIEJsYWNrQmVycnk6OlBsYXRmb3Jt
OjpHcmFwaGljczo6bWFrZVNoYXJlZFJlc291cmNlQ29udGV4dEN1cnJlbnQoQmxhY2tCZXJyeTo6
UGxhdGZvcm06OkdyYXBoaWNzOjpHTEVTMik7CisgICAgICAgIFNoYXJlZEdyYXBoaWNzQ29udGV4
dDNEOjpnZXQoKS0+bWFrZUNvbnRleHRDdXJyZW50KCk7CiAgICAgICAgIGdsRGVsZXRlVGV4dHVy
ZXMoMSwgJm1fdGV4SUQpOwogICAgIH0KIH0KIAotdm9pZCBDYW52YXNMYXllcldlYktpdFRocmVh
ZDo6c2V0Q2FudmFzKEhUTUxDYW52YXNFbGVtZW50KiBjYW52YXMpCit2b2lkIENhbnZhc0xheWVy
V2ViS2l0VGhyZWFkOjpzZXREZXZpY2UoU2tHcHVEZXZpY2UqIGRldmljZSkKIHsKLSAgICBtX2Nh
bnZhcyA9IGNhbnZhczsKLSAgICBzZXROZWVkc1RleHR1cmUoaXNEcmF3YWJsZSgpICYmIGNhbnZh
cyk7CisgICAgbV9kZXZpY2UgPSBkZXZpY2U7CiAgICAgc2V0TGF5ZXJQcm9ncmFtU2hhZGVyKExh
eWVyUHJvZ3JhbVNoYWRlclJHQkEpOwogICAgIHNldE5lZWRzRGlzcGxheSgpOwogfQpAQCAtNjEs
MjEgKzU2LDExIEBAIHZvaWQgQ2FudmFzTGF5ZXJXZWJLaXRUaHJlYWQ6OnNldE5lZWRzRGlzcGxh
eSgpCiAKIHZvaWQgQ2FudmFzTGF5ZXJXZWJLaXRUaHJlYWQ6OnVwZGF0ZVRleHR1cmVDb250ZW50
c0lmTmVlZGVkKCkKIHsKLSAgICBpZiAoIW1fbmVlZHNEaXNwbGF5KQorICAgIGlmICghbV9uZWVk
c0Rpc3BsYXkgfHwgIW1fZGV2aWNlKQogICAgICAgICByZXR1cm47CiAKICAgICBtX25lZWRzRGlz
cGxheSA9IGZhbHNlOwotCi0gICAgaWYgKCFtX2NhbnZhcyB8fCAhbV9jYW52YXMtPmRyYXdpbmdD
b250ZXh0KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIFNrR3B1RGV2aWNlKiBncHVEZXZpY2Ug
PSBzdGF0aWNfY2FzdDxTa0dwdURldmljZSo+KG1fY2FudmFzLT5kcmF3aW5nQ29udGV4dCgpLT5w
bGF0Zm9ybUNvbnRleHQoKS0+Y2FudmFzKCktPmdldERldmljZSgpKTsKLSAgICBncHVEZXZpY2Ut
Pm1ha2VSZW5kZXJUYXJnZXRDdXJyZW50KCk7Ci0gICAgLy8gV2Uga25vdyB0aGlzIGlzIGEgR3JH
TFRleHR1cmUKLSAgICBpZiAoR3JHTFRleHR1cmUqIGRldmljZVRleHR1cmUgPSAoR3JHTFRleHR1
cmUqKWdwdURldmljZS0+YWNjZXNzVGV4dHVyZSgpKSB7Ci0gICAgICAgIG1fdGV4V2lkdGggPSBk
ZXZpY2VUZXh0dXJlLT5hbGxvY1dpZHRoKCk7Ci0gICAgICAgIG1fdGV4SGVpZ2h0ID0gZGV2aWNl
VGV4dHVyZS0+YWxsb2NIZWlnaHQoKTsKLSAgICB9CisgICAgbV9kZXZpY2UtPm1ha2VSZW5kZXJU
YXJnZXRDdXJyZW50KCk7CiAKICAgICBHTGludCBwcmV2aW91c1RleHR1cmU7CiAgICAgZ2xHZXRJ
bnRlZ2VydihHTF9URVhUVVJFX0JJTkRJTkdfMkQsICZwcmV2aW91c1RleHR1cmUpOwpAQCAtODcs
MTggKzcyLDE4IEBAIHZvaWQgQ2FudmFzTGF5ZXJXZWJLaXRUaHJlYWQ6OnVwZGF0ZVRleHR1cmVD
b250ZW50c0lmTmVlZGVkKCkKICAgICAgICAgZ2xUZXhQYXJhbWV0ZXJmKEdMX1RFWFRVUkVfMkQs
IEdMX1RFWFRVUkVfTUFHX0ZJTFRFUiwgR0xfTElORUFSKTsKICAgICAgICAgZ2xUZXhQYXJhbWV0
ZXJmKEdMX1RFWFRVUkVfMkQsIEdMX1RFWFRVUkVfV1JBUF9TLCBHTF9DTEFNUF9UT19FREdFKTsK
ICAgICAgICAgZ2xUZXhQYXJhbWV0ZXJmKEdMX1RFWFRVUkVfMkQsIEdMX1RFWFRVUkVfV1JBUF9U
LCBHTF9DTEFNUF9UT19FREdFKTsKLSAgICAgICAgZ2xUZXhJbWFnZTJEKEdMX1RFWFRVUkVfMkQs
IDAsIEdMX1JHQkEsIG1fY2FudmFzLT53aWR0aCgpLCBtX2NhbnZhcy0+aGVpZ2h0KCksIDAsIEdM
X1JHQkEsIEdMX1VOU0lHTkVEX0JZVEUsIDApOworICAgICAgICBnbFRleEltYWdlMkQoR0xfVEVY
VFVSRV8yRCwgMCwgR0xfUkdCQSwgbV9kZXZpY2UtPndpZHRoKCksIG1fZGV2aWNlLT5oZWlnaHQo
KSwgMCwgR0xfUkdCQSwgR0xfVU5TSUdORURfQllURSwgMCk7CiAKICAgICAgICAgY3JlYXRlRnJv
bnRCdWZmZXJMb2NrKCk7CiAgICAgfQogCiAgICAgcHRocmVhZF9tdXRleF9sb2NrKG1fZnJvbnRC
dWZmZXJMb2NrKTsKICAgICBnbEJpbmRUZXh0dXJlKEdMX1RFWFRVUkVfMkQsIG1fdGV4SUQpOwot
ICAgIGdsQ29weVRleEltYWdlMkQoR0xfVEVYVFVSRV8yRCwgMCwgR0xfUkdCQSwgMCwgMCwgbV90
ZXhXaWR0aCwgbV90ZXhIZWlnaHQsIDApOworICAgIGdsQ29weVRleEltYWdlMkQoR0xfVEVYVFVS
RV8yRCwgMCwgR0xfUkdCQSwgMCwgMCwgbV9kZXZpY2UtPndpZHRoKCksIG1fZGV2aWNlLT5oZWln
aHQoKSwgMCk7CiAgICAgZ2xCaW5kVGV4dHVyZShHTF9URVhUVVJFXzJELCBwcmV2aW91c1RleHR1
cmUpOwogICAgIHB0aHJlYWRfbXV0ZXhfdW5sb2NrKG1fZnJvbnRCdWZmZXJMb2NrKTsKIH0KIAog
fQogCi0jZW5kaWYgLy8gVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKSAmJiBFTkFCTEUoU0tJ
QV9HUFVfQ0FOVkFTKQorI2VuZGlmIC8vIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykgJiYg
RU5BQkxFKEFDQ0VMRVJBVEVEXzJEX0NBTlZBUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvQ2FudmFzTGF5ZXJXZWJLaXRUaHJlYWQuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvQ2FudmFzTGF5ZXJX
ZWJLaXRUaHJlYWQuaAppbmRleCA5YTczMWNlLi5lYWM2YjgyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L0NhbnZhc0xheWVyV2ViS2l0VGhy
ZWFkLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9D
YW52YXNMYXllcldlYktpdFRocmVhZC5oCkBAIC0xOSwyNCArMTksMjYgQEAKICNpZm5kZWYgQ2Fu
dmFzTGF5ZXJXZWJLaXRUaHJlYWRfaAogI2RlZmluZSBDYW52YXNMYXllcldlYktpdFRocmVhZF9o
CiAKLSNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpICYmIEVOQUJMRShTS0lBX0dQVV9D
QU5WQVMpCisjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKSAmJiBFTkFCTEUoQUNDRUxF
UkFURURfMkRfQ0FOVkFTKQogCiAjaW5jbHVkZSAiTGF5ZXJXZWJLaXRUaHJlYWQuaCIKIAorY2xh
c3MgU2tHcHVEZXZpY2U7CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgSFRNTENhbnZh
c0VsZW1lbnQ7CiAKIGNsYXNzIENhbnZhc0xheWVyV2ViS2l0VGhyZWFkIDogcHVibGljIExheWVy
V2ViS2l0VGhyZWFkIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxDYW52YXNMYXll
cldlYktpdFRocmVhZD4gY3JlYXRlKEhUTUxDYW52YXNFbGVtZW50KiBjYW52YXMpCisgICAgc3Rh
dGljIFBhc3NSZWZQdHI8Q2FudmFzTGF5ZXJXZWJLaXRUaHJlYWQ+IGNyZWF0ZShTa0dwdURldmlj
ZSogZGV2aWNlKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBDYW52YXNMYXll
cldlYktpdFRocmVhZChjYW52YXMpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBDYW52
YXNMYXllcldlYktpdFRocmVhZChkZXZpY2UpKTsKICAgICB9CiAKICAgICB2aXJ0dWFsIH5DYW52
YXNMYXllcldlYktpdFRocmVhZCgpOwogCi0gICAgdm9pZCBzZXRDYW52YXMoSFRNTENhbnZhc0Vs
ZW1lbnQqKTsKKyAgICB2b2lkIHNldERldmljZShTa0dwdURldmljZSopOwogCiAgICAgdmlydHVh
bCB2b2lkIHNldE5lZWRzRGlzcGxheSgpOwogCkBAIC00NCwxMiArNDYsMTMgQEAgcHJvdGVjdGVk
OgogICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVUZXh0dXJlQ29udGVudHNJZk5lZWRlZCgpOwogCiBw
cml2YXRlOgotICAgIENhbnZhc0xheWVyV2ViS2l0VGhyZWFkKEhUTUxDYW52YXNFbGVtZW50Kik7
CisgICAgQ2FudmFzTGF5ZXJXZWJLaXRUaHJlYWQoU2tHcHVEZXZpY2UqKTsKICAgICBib29sIG1f
bmVlZHNEaXNwbGF5OworICAgIFNrR3B1RGV2aWNlKiBtX2RldmljZTsKIH07CiAKIH0KIAotI2Vu
ZGlmIC8vIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykgJiYgRU5BQkxFKFNLSUFfR1BVX0NB
TlZBUykKKyNlbmRpZiAvLyBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpICYmIEVOQUJMRShB
Q0NFTEVSQVRFRF8yRF9DQU5WQVMpCiAKICNlbmRpZiAvLyBDYW52YXNMYXllcldlYktpdFRocmVh
ZF9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFja2Jl
cnJ5L0dyYXBoaWNzQ29udGV4dDNEQmxhY2tCZXJyeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L0dyYXBoaWNzQ29udGV4dDNEQmxhY2tCZXJyeS5jcHAK
aW5kZXggMmI0MTAxNS4uYTljYTVkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9HcmFwaGljc0NvbnRleHQzREJsYWNrQmVycnkuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvR3JhcGhpY3ND
b250ZXh0M0RCbGFja0JlcnJ5LmNwcApAQCAtMTk1LDE1ICsxOTUsMTYgQEAgdm9pZCBHcmFwaGlj
c0NvbnRleHQzRDo6cGFpbnRUb0NhbnZhcyhjb25zdCB1bnNpZ25lZCBjaGFyKiBpbWFnZVBpeGVs
cywgaW50IGltYWcKIAogICAgIGNhbnZhc0JpdG1hcC5zZXRDb25maWcoU2tCaXRtYXA6OmtBUkdC
Xzg4ODhfQ29uZmlnLCBjYW52YXNXaWR0aCwgY2FudmFzSGVpZ2h0KTsKICAgICBjYW52YXNCaXRt
YXAuYWxsb2NQaXhlbHMoMCwgMCk7Ci0gICAgYm9vbCByYyA9IGNhbnZhc0JpdG1hcC5jb3B5UGl4
ZWxzRnJvbShzdGF0aWNfY2FzdDx2b2lkKj4oY29uc3RfY2FzdDx1bnNpZ25lZCBjaGFyKj4odGVt
cFBpeGVscykpLCBpbWFnZVdpZHRoICogaW1hZ2VIZWlnaHQgKiA0KTsKKyAgICBjYW52YXNCaXRt
YXAubG9ja1BpeGVscygpOworICAgIG1lbWNweShjYW52YXNCaXRtYXAuZ2V0UGl4ZWxzKCksIHRl
bXBQaXhlbHMsIGltYWdlV2lkdGggKiBpbWFnZUhlaWdodCAqIDQpOworICAgIGNhbnZhc0JpdG1h
cC51bmxvY2tQaXhlbHMoKTsKICAgICBkZWxldGUgW10gdGVtcFBpeGVsczsKIAogICAgIEZsb2F0
UmVjdCBzcmMoMCwgMCwgY2FudmFzV2lkdGgsIGNhbnZhc0hlaWdodCk7CiAgICAgRmxvYXRSZWN0
IGRzdCgwLCAwLCBpbWFnZVdpZHRoLCBpbWFnZUhlaWdodCk7CiAKICAgICBSZWZQdHI8Qml0bWFw
SW1hZ2VTaW5nbGVGcmFtZVNraWE+IGJpdG1hcEltYWdlID0gQml0bWFwSW1hZ2VTaW5nbGVGcmFt
ZVNraWE6OmNyZWF0ZShjYW52YXNCaXRtYXAsIGZhbHNlKTsgLy8gVE9ETzogU2hvdWxkIHdlIGNv
cHkgcGl4ZWxzPwotICAgIGlmIChyYykKLSAgICAgICAgY29udGV4dC0+ZHJhd0ltYWdlKGJpdG1h
cEltYWdlLmdldCgpLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBkc3QsIHNyYywgQ29tcG9zaXRlQ29w
eSwgZmFsc2UpOworICAgIGNvbnRleHQtPmRyYXdJbWFnZShiaXRtYXBJbWFnZS5nZXQoKSwgQ29s
b3JTcGFjZURldmljZVJHQiwgZHN0LCBzcmMsIENvbXBvc2l0ZUNvcHksIGZhbHNlKTsKIH0KIAog
dm9pZCBHcmFwaGljc0NvbnRleHQzRDo6c2V0Q29udGV4dExvc3RDYWxsYmFjayhQYXNzT3duUHRy
PENvbnRleHRMb3N0Q2FsbGJhY2s+KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9JbnN0cnVtZW50ZWRQbGF0Zm9ybUNhbnZhcy5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9JbnN0cnVtZW50ZWRQbGF0
Zm9ybUNhbnZhcy5oCmluZGV4IDE2MjlmZjEuLjc4MGJjMDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvSW5zdHJ1bWVudGVkUGxhdGZvcm1D
YW52YXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5
L0luc3RydW1lbnRlZFBsYXRmb3JtQ2FudmFzLmgKQEAgLTM0LDE0ICszNCwxNCBAQAogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIEluc3RydW1lbnRlZFBsYXRmb3JtQ2FudmFzIDogcHVi
bGljIHNraWE6OlBsYXRmb3JtQ2FudmFzIHsKK2NsYXNzIEluc3RydW1lbnRlZFBsYXRmb3JtQ2Fu
dmFzIDogcHVibGljIFNrQ2FudmFzIHsKIHB1YmxpYzoKLSAgICBJbnN0cnVtZW50ZWRQbGF0Zm9y
bUNhbnZhcyhpbnQgd2lkdGgsIGludCBoZWlnaHQsIGJvb2wgaXNfb3BhcXVlLCBTa0RldmljZUZh
Y3RvcnkqIGZhY3RvcnkpCi0gICAgICAgIDogc2tpYTo6UGxhdGZvcm1DYW52YXMod2lkdGgsIGhl
aWdodCwgaXNfb3BhcXVlLCBmYWN0b3J5KQotICAgICAgICAsIG1fc2l6ZSh3aWR0aCwgaGVpZ2h0
KQorICAgIEluc3RydW1lbnRlZFBsYXRmb3JtQ2FudmFzKGludCB3aWR0aCwgaW50IGhlaWdodCkK
KyAgICAgICAgOiBtX3NpemUod2lkdGgsIGhlaWdodCkKICAgICAgICAgLCBtX2lzU29saWRDb2xv
cih0cnVlKQogICAgICAgICAsIG1fc29saWRDb2xvcigwLCAwLCAwLCAwKQogICAgIHsKKyAgICAg
ICAgc2V0RGV2aWNlKG5ldyBTa0RldmljZShTa0JpdG1hcDo6a0FSR0JfODg4OF9Db25maWcsIHdp
ZHRoLCBoZWlnaHQpKS0+dW5yZWYoKTsKICAgICB9CiAKICAgICB2aXJ0dWFsIH5JbnN0cnVtZW50
ZWRQbGF0Zm9ybUNhbnZhcygpIHsgfQpAQCAtNTMsNzYgKzUzLDc2IEBAIHB1YmxpYzoKICAgICB2
aXJ0dWFsIGludCBzYXZlKFNhdmVGbGFncyBmbGFncykKICAgICB7CiAgICAgICAgIFdSQVBDQU5W
QVNfTE9HX0VOVFJZKCIiKTsKLSAgICAgICAgcmV0dXJuIHNraWE6OlBsYXRmb3JtQ2FudmFzOjpz
YXZlKGZsYWdzKTsKKyAgICAgICAgcmV0dXJuIFNrQ2FudmFzOjpzYXZlKGZsYWdzKTsKICAgICB9
CiAKICAgICB2aXJ0dWFsIGludCBzYXZlTGF5ZXIoY29uc3QgU2tSZWN0KiBib3VuZHMsIGNvbnN0
IFNrUGFpbnQqIHBhaW50LCBTYXZlRmxhZ3MgZmxhZ3MpCiAgICAgewogICAgICAgICBXUkFQQ0FO
VkFTX0xPR19FTlRSWSgiIik7CiAgICAgICAgIG1faXNTb2xpZENvbG9yID0gZmFsc2U7Ci0gICAg
ICAgIHJldHVybiBza2lhOjpQbGF0Zm9ybUNhbnZhczo6c2F2ZUxheWVyKGJvdW5kcywgcGFpbnQs
IGZsYWdzKTsKKyAgICAgICAgcmV0dXJuIFNrQ2FudmFzOjpzYXZlTGF5ZXIoYm91bmRzLCBwYWlu
dCwgZmxhZ3MpOwogICAgIH0KIAogICAgIHZpcnR1YWwgdm9pZCByZXN0b3JlKCkKICAgICB7CiAg
ICAgICAgIFdSQVBDQU5WQVNfTE9HX0VOVFJZKCIiKTsKLSAgICAgICAgc2tpYTo6UGxhdGZvcm1D
YW52YXM6OnJlc3RvcmUoKTsKKyAgICAgICAgU2tDYW52YXM6OnJlc3RvcmUoKTsKICAgICB9CiAK
ICAgICB2aXJ0dWFsIGJvb2wgdHJhbnNsYXRlKFNrU2NhbGFyIGR4LCBTa1NjYWxhciBkeSkKICAg
ICB7CiAgICAgICAgIFdSQVBDQU5WQVNfTE9HX0VOVFJZKCIiKTsKLSAgICAgICAgcmV0dXJuIHNr
aWE6OlBsYXRmb3JtQ2FudmFzOjp0cmFuc2xhdGUoZHgsIGR5KTsKKyAgICAgICAgcmV0dXJuIFNr
Q2FudmFzOjp0cmFuc2xhdGUoZHgsIGR5KTsKICAgICB9CiAKICAgICB2aXJ0dWFsIGJvb2wgc2Nh
bGUoU2tTY2FsYXIgc3gsIFNrU2NhbGFyIHN5KQogICAgIHsKICAgICAgICAgV1JBUENBTlZBU19M
T0dfRU5UUlkoIiIpOwotICAgICAgICByZXR1cm4gc2tpYTo6UGxhdGZvcm1DYW52YXM6OnNjYWxl
KHN4LCBzeSk7CisgICAgICAgIHJldHVybiBTa0NhbnZhczo6c2NhbGUoc3gsIHN5KTsKICAgICB9
CiAKICAgICB2aXJ0dWFsIGJvb2wgcm90YXRlKFNrU2NhbGFyIGRlZ3JlZXMpCiAgICAgewogICAg
ICAgICBXUkFQQ0FOVkFTX0xPR19FTlRSWSgiIik7Ci0gICAgICAgIHJldHVybiBza2lhOjpQbGF0
Zm9ybUNhbnZhczo6cm90YXRlKGRlZ3JlZXMpOworICAgICAgICByZXR1cm4gU2tDYW52YXM6OnJv
dGF0ZShkZWdyZWVzKTsKICAgICB9CiAKICAgICB2aXJ0dWFsIGJvb2wgc2tldyhTa1NjYWxhciBz
eCwgU2tTY2FsYXIgc3kpCiAgICAgewogICAgICAgICBXUkFQQ0FOVkFTX0xPR19FTlRSWSgiIik7
Ci0gICAgICAgIHJldHVybiBza2lhOjpQbGF0Zm9ybUNhbnZhczo6c2tldyhzeCwgc3kpOworICAg
ICAgICByZXR1cm4gU2tDYW52YXM6OnNrZXcoc3gsIHN5KTsKICAgICB9CiAKICAgICB2aXJ0dWFs
IGJvb2wgY29uY2F0KGNvbnN0IFNrTWF0cml4JiBtYXRyaXgpCiAgICAgewogICAgICAgICBXUkFQ
Q0FOVkFTX0xPR19FTlRSWSgiIik7Ci0gICAgICAgIHJldHVybiBza2lhOjpQbGF0Zm9ybUNhbnZh
czo6Y29uY2F0KG1hdHJpeCk7CisgICAgICAgIHJldHVybiBTa0NhbnZhczo6Y29uY2F0KG1hdHJp
eCk7CiAgICAgfQogCiAgICAgdmlydHVhbCB2b2lkIHNldE1hdHJpeChjb25zdCBTa01hdHJpeCYg
bWF0cml4KQogICAgIHsKICAgICAgICAgV1JBUENBTlZBU19MT0dfRU5UUlkoIiIpOwotICAgICAg
ICBza2lhOjpQbGF0Zm9ybUNhbnZhczo6c2V0TWF0cml4KG1hdHJpeCk7CisgICAgICAgIFNrQ2Fu
dmFzOjpzZXRNYXRyaXgobWF0cml4KTsKICAgICB9CiAKICAgICB2aXJ0dWFsIGJvb2wgY2xpcFJl
Y3QoY29uc3QgU2tSZWN0JiByZWN0LCBTa1JlZ2lvbjo6T3Agb3ApCiAgICAgewogICAgICAgICBX
UkFQQ0FOVkFTX0xPR19FTlRSWSgiIik7Ci0gICAgICAgIHJldHVybiBza2lhOjpQbGF0Zm9ybUNh
bnZhczo6Y2xpcFJlY3QocmVjdCwgb3ApOworICAgICAgICByZXR1cm4gU2tDYW52YXM6OmNsaXBS
ZWN0KHJlY3QsIG9wKTsKICAgICB9CiAKICAgICB2aXJ0dWFsIGJvb2wgY2xpcFBhdGgoY29uc3Qg
U2tQYXRoJiBwYXRoLCBTa1JlZ2lvbjo6T3Agb3ApIAogICAgIHsKICAgICAgICAgV1JBUENBTlZB
U19MT0dfRU5UUlkoIiIpOwogICAgICAgICBtX2lzU29saWRDb2xvciA9IGZhbHNlOwotICAgICAg
ICByZXR1cm4gc2tpYTo6UGxhdGZvcm1DYW52YXM6OmNsaXBQYXRoKHBhdGgsIG9wKTsKKyAgICAg
ICAgcmV0dXJuIFNrQ2FudmFzOjpjbGlwUGF0aChwYXRoLCBvcCk7CiAgICAgfQogCiAgICAgdmly
dHVhbCBib29sIGNsaXBSZWdpb24oY29uc3QgU2tSZWdpb24mIHJlZ2lvbiwgU2tSZWdpb246Ok9w
IG9wKQogICAgIHsKICAgICAgICAgV1JBUENBTlZBU19MT0dfRU5UUlkoIiIpOwogICAgICAgICBt
X2lzU29saWRDb2xvciA9IGZhbHNlOwotICAgICAgICByZXR1cm4gc2tpYTo6UGxhdGZvcm1DYW52
YXM6OmNsaXBSZWdpb24ocmVnaW9uLCBvcCk7CisgICAgICAgIHJldHVybiBTa0NhbnZhczo6Y2xp
cFJlZ2lvbihyZWdpb24sIG9wKTsKICAgICB9CiAKICAgICB2aXJ0dWFsIHZvaWQgY2xlYXIoU2tD
b2xvciBjb2xvcikKQEAgLTEzMCwxNCArMTMwLDE0IEBAIHB1YmxpYzoKICAgICAgICAgV1JBUENB
TlZBU19MT0dfRU5UUlkoIiIpOwogICAgICAgICBtX2lzU29saWRDb2xvciA9IHRydWU7CiAgICAg
ICAgIG1fc29saWRDb2xvciA9IENvbG9yKGNvbG9yKTsKLSAgICAgICAgc2tpYTo6UGxhdGZvcm1D
YW52YXM6OmNsZWFyKGNvbG9yKTsKKyAgICAgICAgU2tDYW52YXM6OmNsZWFyKGNvbG9yKTsKICAg
ICB9CiAKICAgICB2aXJ0dWFsIHZvaWQgZHJhd1BhaW50KGNvbnN0IFNrUGFpbnQmIHBhaW50KQog
ICAgIHsKICAgICAgICAgV1JBUENBTlZBU19MT0dfRU5UUlkoIiIpOwogICAgICAgICBtX2lzU29s
aWRDb2xvciA9IGZhbHNlOwotICAgICAgICBza2lhOjpQbGF0Zm9ybUNhbnZhczo6ZHJhd1BhaW50
KHBhaW50KTsKKyAgICAgICAgU2tDYW52YXM6OmRyYXdQYWludChwYWludCk7CiAgICAgfQogCiAg
ICAgdmlydHVhbCB2b2lkIGRyYXdQb2ludHMoUG9pbnRNb2RlIG1vZGUsIHNpemVfdCBjb3VudCwg
Y29uc3QgU2tQb2ludCBwdHNbXSwKQEAgLTE0NSw3ICsxNDUsNyBAQCBwdWJsaWM6CiAgICAgewog
ICAgICAgICBXUkFQQ0FOVkFTX0xPR19FTlRSWSgiIik7CiAgICAgICAgIG1faXNTb2xpZENvbG9y
ID0gZmFsc2U7Ci0gICAgICAgIHNraWE6OlBsYXRmb3JtQ2FudmFzOjpkcmF3UG9pbnRzKG1vZGUs
IGNvdW50LCBwdHMsIHBhaW50KTsKKyAgICAgICAgU2tDYW52YXM6OmRyYXdQb2ludHMobW9kZSwg
Y291bnQsIHB0cywgcGFpbnQpOwogICAgIH0KIAogICAgIHZpcnR1YWwgdm9pZCBkcmF3UmVjdChj
b25zdCBTa1JlY3QmIHJlY3QsIGNvbnN0IFNrUGFpbnQmIHBhaW50KQpAQCAtMTY1LDE0ICsxNjUs
MTQgQEAgcHVibGljOgogICAgICAgICAgICAgICAgICBtX2lzU29saWRDb2xvciA9IGZhbHNlOwog
ICAgICAgICB9IGVsc2UKICAgICAgICAgICAgIG1faXNTb2xpZENvbG9yID0gZmFsc2U7Ci0gICAg
ICAgIHNraWE6OlBsYXRmb3JtQ2FudmFzOjpkcmF3UmVjdChyZWN0LCBwYWludCk7CisgICAgICAg
IFNrQ2FudmFzOjpkcmF3UmVjdChyZWN0LCBwYWludCk7CiAgICAgfQogCiAgICAgdmlydHVhbCB2
b2lkIGRyYXdQYXRoKGNvbnN0IFNrUGF0aCYgcGF0aCwgY29uc3QgU2tQYWludCYgcGFpbnQpCiAg
ICAgewogICAgICAgICBXUkFQQ0FOVkFTX0xPR19FTlRSWSgiIik7CiAgICAgICAgIG1faXNTb2xp
ZENvbG9yID0gZmFsc2U7Ci0gICAgICAgIHNraWE6OlBsYXRmb3JtQ2FudmFzOjpkcmF3UGF0aChw
YXRoLCBwYWludCk7CisgICAgICAgIFNrQ2FudmFzOjpkcmF3UGF0aChwYXRoLCBwYWludCk7CiAg
ICAgfQogCiAgICAgdmlydHVhbCB2b2lkIGRyYXdCaXRtYXAoY29uc3QgU2tCaXRtYXAmIGJpdG1h
cCwgU2tTY2FsYXIgbGVmdCwKQEAgLTE4MCw3ICsxODAsNyBAQCBwdWJsaWM6CiAgICAgewogICAg
ICAgICBXUkFQQ0FOVkFTX0xPR19FTlRSWSgiIik7CiAgICAgICAgIG1faXNTb2xpZENvbG9yID0g
ZmFsc2U7Ci0gICAgICAgIHNraWE6OlBsYXRmb3JtQ2FudmFzOjpkcmF3Qml0bWFwKGJpdG1hcCwg
bGVmdCwgdG9wLCBwYWludCk7CisgICAgICAgIFNrQ2FudmFzOjpkcmF3Qml0bWFwKGJpdG1hcCwg
bGVmdCwgdG9wLCBwYWludCk7CiAgICAgfQogCiAgICAgdmlydHVhbCB2b2lkIGRyYXdCaXRtYXBS
ZWN0KGNvbnN0IFNrQml0bWFwJiBiaXRtYXAsIGNvbnN0IFNrSVJlY3QqIHNyYywKQEAgLTE4OCw3
ICsxODgsNyBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICBXUkFQQ0FOVkFTX0xPR19FTlRSWSgi
Iik7CiAgICAgICAgIG1faXNTb2xpZENvbG9yID0gZmFsc2U7Ci0gICAgICAgIHNraWE6OlBsYXRm
b3JtQ2FudmFzOjpkcmF3Qml0bWFwUmVjdChiaXRtYXAsIHNyYywgZHN0LCBwYWludCk7CisgICAg
ICAgIFNrQ2FudmFzOjpkcmF3Qml0bWFwUmVjdChiaXRtYXAsIHNyYywgZHN0LCBwYWludCk7CiAg
ICAgfQogCiAgICAgdmlydHVhbCB2b2lkIGRyYXdCaXRtYXBNYXRyaXgoY29uc3QgU2tCaXRtYXAm
IGJpdG1hcCwKQEAgLTE5Niw3ICsxOTYsNyBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICBXUkFQ
Q0FOVkFTX0xPR19FTlRSWSgiIik7CiAgICAgICAgIG1faXNTb2xpZENvbG9yID0gZmFsc2U7Ci0g
ICAgICAgIHNraWE6OlBsYXRmb3JtQ2FudmFzOjpkcmF3Qml0bWFwTWF0cml4KGJpdG1hcCwgbWF0
cml4LCBwYWludCk7CisgICAgICAgIFNrQ2FudmFzOjpkcmF3Qml0bWFwTWF0cml4KGJpdG1hcCwg
bWF0cml4LCBwYWludCk7CiAgICAgfQogCiAgICAgdmlydHVhbCB2b2lkIGRyYXdTcHJpdGUoY29u
c3QgU2tCaXRtYXAmIGJpdG1hcCwgaW50IGxlZnQsIGludCB0b3AsCkBAIC0yMDQsNyArMjA0LDcg
QEAgcHVibGljOgogICAgIHsKICAgICAgICAgV1JBUENBTlZBU19MT0dfRU5UUlkoIiIpOwogICAg
ICAgICBtX2lzU29saWRDb2xvciA9IGZhbHNlOwotICAgICAgICBza2lhOjpQbGF0Zm9ybUNhbnZh
czo6ZHJhd1Nwcml0ZShiaXRtYXAsIGxlZnQsIHRvcCwgcGFpbnQpOworICAgICAgICBTa0NhbnZh
czo6ZHJhd1Nwcml0ZShiaXRtYXAsIGxlZnQsIHRvcCwgcGFpbnQpOwogICAgIH0KIAogICAgIHZp
cnR1YWwgdm9pZCBkcmF3VGV4dChjb25zdCB2b2lkKiB0ZXh0LCBzaXplX3QgYnl0ZUxlbmd0aCwg
U2tTY2FsYXIgeCwKQEAgLTIxMiw3ICsyMTIsNyBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICBX
UkFQQ0FOVkFTX0xPR19FTlRSWSgiIik7CiAgICAgICAgIG1faXNTb2xpZENvbG9yID0gZmFsc2U7
Ci0gICAgICAgIHNraWE6OlBsYXRmb3JtQ2FudmFzOjpkcmF3VGV4dCh0ZXh0LCBieXRlTGVuZ3Ro
LCB4LCB5LCBwYWludCk7CisgICAgICAgIFNrQ2FudmFzOjpkcmF3VGV4dCh0ZXh0LCBieXRlTGVu
Z3RoLCB4LCB5LCBwYWludCk7CiAgICAgfQogCiAgICAgdmlydHVhbCB2b2lkIGRyYXdQb3NUZXh0
KGNvbnN0IHZvaWQqIHRleHQsIHNpemVfdCBieXRlTGVuZ3RoLApAQCAtMjIwLDcgKzIyMCw3IEBA
IHB1YmxpYzoKICAgICB7CiAgICAgICAgIFdSQVBDQU5WQVNfTE9HX0VOVFJZKCIiKTsKICAgICAg
ICAgbV9pc1NvbGlkQ29sb3IgPSBmYWxzZTsKLSAgICAgICAgc2tpYTo6UGxhdGZvcm1DYW52YXM6
OmRyYXdQb3NUZXh0KHRleHQsIGJ5dGVMZW5ndGgsIHBvcywgcGFpbnQpOworICAgICAgICBTa0Nh
bnZhczo6ZHJhd1Bvc1RleHQodGV4dCwgYnl0ZUxlbmd0aCwgcG9zLCBwYWludCk7CiAgICAgfQog
CiAgICAgdmlydHVhbCB2b2lkIGRyYXdQb3NUZXh0SChjb25zdCB2b2lkKiB0ZXh0LCBzaXplX3Qg
Ynl0ZUxlbmd0aCwKQEAgLTIyOCw3ICsyMjgsNyBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICBX
UkFQQ0FOVkFTX0xPR19FTlRSWSgiIik7CiAgICAgICAgIG1faXNTb2xpZENvbG9yID0gZmFsc2U7
Ci0gICAgICAgIHNraWE6OlBsYXRmb3JtQ2FudmFzOjpkcmF3UG9zVGV4dEgodGV4dCwgYnl0ZUxl
bmd0aCwgeHBvcywgY29uc3RZLCBwYWludCk7CisgICAgICAgIFNrQ2FudmFzOjpkcmF3UG9zVGV4
dEgodGV4dCwgYnl0ZUxlbmd0aCwgeHBvcywgY29uc3RZLCBwYWludCk7CiAgICAgfQogCiAgICAg
dmlydHVhbCB2b2lkIGRyYXdUZXh0T25QYXRoKGNvbnN0IHZvaWQqIHRleHQsIHNpemVfdCBieXRl
TGVuZ3RoLApAQCAtMjM2LDE0ICsyMzYsMTQgQEAgcHVibGljOgogICAgIHsKICAgICAgICAgV1JB
UENBTlZBU19MT0dfRU5UUlkoIiIpOwogICAgICAgICBtX2lzU29saWRDb2xvciA9IGZhbHNlOwot
ICAgICAgICBza2lhOjpQbGF0Zm9ybUNhbnZhczo6ZHJhd1RleHRPblBhdGgodGV4dCwgYnl0ZUxl
bmd0aCwgcGF0aCwgbWF0cml4LCBwYWludCk7CisgICAgICAgIFNrQ2FudmFzOjpkcmF3VGV4dE9u
UGF0aCh0ZXh0LCBieXRlTGVuZ3RoLCBwYXRoLCBtYXRyaXgsIHBhaW50KTsKICAgICB9CiAKICAg
ICB2aXJ0dWFsIHZvaWQgZHJhd1BpY3R1cmUoU2tQaWN0dXJlJiBwaWN0dXJlKQogICAgIHsKICAg
ICAgICAgV1JBUENBTlZBU19MT0dfRU5UUlkoIiIpOwogICAgICAgICBtX2lzU29saWRDb2xvciA9
IGZhbHNlOwotICAgICAgICBza2lhOjpQbGF0Zm9ybUNhbnZhczo6ZHJhd1BpY3R1cmUocGljdHVy
ZSk7CisgICAgICAgIFNrQ2FudmFzOjpkcmF3UGljdHVyZShwaWN0dXJlKTsKICAgICB9CiAKICAg
ICB2aXJ0dWFsIHZvaWQgZHJhd1ZlcnRpY2VzKFZlcnRleE1vZGUgbW9kZSwgaW50IHZlcnRleENv
dW50LApAQCAtMjUzLDE0ICsyNTMsMTQgQEAgcHVibGljOgogICAgIHsKICAgICAgICAgV1JBUENB
TlZBU19MT0dfRU5UUlkoIiIpOwogICAgICAgICBtX2lzU29saWRDb2xvciA9IGZhbHNlOwotICAg
ICAgICBza2lhOjpQbGF0Zm9ybUNhbnZhczo6ZHJhd1ZlcnRpY2VzKG1vZGUsIHZlcnRleENvdW50
LCB2ZXJ0aWNlcywgdGV4cywgY29sb3JzLCB4ZmVybW9kZSwgaW5kaWNlcywgaW5kZXhDb3VudCwg
cGFpbnQpOworICAgICAgICBTa0NhbnZhczo6ZHJhd1ZlcnRpY2VzKG1vZGUsIHZlcnRleENvdW50
LCB2ZXJ0aWNlcywgdGV4cywgY29sb3JzLCB4ZmVybW9kZSwgaW5kaWNlcywgaW5kZXhDb3VudCwg
cGFpbnQpOwogICAgIH0KIAogICAgIHZpcnR1YWwgdm9pZCBkcmF3RGF0YShjb25zdCB2b2lkKiBk
YXRhLCBzaXplX3Qgc2l6ZSkKICAgICB7CiAgICAgICAgIFdSQVBDQU5WQVNfTE9HX0VOVFJZKCIi
KTsKICAgICAgICAgbV9pc1NvbGlkQ29sb3IgPSBmYWxzZTsKLSAgICAgICAgc2tpYTo6UGxhdGZv
cm1DYW52YXM6OmRyYXdEYXRhKGRhdGEsIHNpemUpOworICAgICAgICBTa0NhbnZhczo6ZHJhd0Rh
dGEoZGF0YSwgc2l6ZSk7CiAgICAgfQogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9MYXllckRhdGEuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvTGF5ZXJEYXRhLmgKaW5kZXggNTc3
NDZmYS4uODU3NTc4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYmxhY2tiZXJyeS9MYXllckRhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9ibGFja2JlcnJ5L0xheWVyRGF0YS5oCkBAIC01NCw3ICs1NCw3IEBAIGNsYXNzIE1l
ZGlhUGxheWVyOwogCiBjbGFzcyBMYXllckRhdGEgewogcHVibGljOgotICAgIGVudW0gTGF5ZXJU
eXBlIHsgTGF5ZXIsIFRyYW5zZm9ybUxheWVyLCBXZWJHTExheWVyIH07CisgICAgZW51bSBMYXll
clR5cGUgeyBMYXllciwgVHJhbnNmb3JtTGF5ZXIsIFdlYkdMTGF5ZXIsIENhbnZhc0xheWVyIH07
CiAgICAgZW51bSBGaWx0ZXJUeXBlIHsgTGluZWFyLCBOZWFyZXN0LCBUcmlsaW5lYXIsIExhbmN6
b3MgfTsKICAgICBlbnVtIExheWVyUHJvZ3JhbVNoYWRlciB7IExheWVyUHJvZ3JhbVNoYWRlclJH
QkEgPSAwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGF5ZXJQcm9ncmFtU2hhZGVy
QkdSQSwKQEAgLTc0LDkgKzc0LDYgQEAgcHVibGljOgogICAgICAgICAsIG1fbWVkaWFQbGF5ZXIo
MCkKICNlbmRpZgogICAgICAgICAsIG1fdGV4SUQoMCkKLSAgICAgICAgLCBtX3RleFdpZHRoKDAp
Ci0gICAgICAgICwgbV90ZXhIZWlnaHQoMCkKLSAgICAgICAgLCBtX2NhbnZhcygwKQogICAgICAg
ICAsIG1fZnJvbnRCdWZmZXJMb2NrKDApCiAgICAgICAgICwgbV9zdXNwZW5kVGltZSgwKQogICAg
ICAgICAsIG1fZG91YmxlU2lkZWQodHJ1ZSkKQEAgLTEzMCw3ICsxMjcsNyBAQCBwdWJsaWM6CiAg
ICAgdW5zaWduZWQgZ2V0VGV4dHVyZUlEKCkgY29uc3QgeyByZXR1cm4gbV90ZXhJRDsgfQogICAg
IHZvaWQgc2V0VGV4dHVyZUlEKHVuc2lnbmVkIGludCB2YWx1ZSkgeyBtX3RleElEID0gdmFsdWU7
IH0KIAotICAgIGJvb2wgbmVlZHNUZXh0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9sYXllclR5cGUg
PT0gV2ViR0xMYXllciA/IHRydWUgOiBtX25lZWRzVGV4dHVyZTsgfQorICAgIGJvb2wgbmVlZHNU
ZXh0dXJlKCkgY29uc3QgeyByZXR1cm4gbV9sYXllclR5cGUgPT0gV2ViR0xMYXllciB8fCBtX2xh
eWVyVHlwZSA9PSBDYW52YXNMYXllciB8fCBtX25lZWRzVGV4dHVyZTsgfQogCiAgICAgTGF5ZXJQ
cm9ncmFtU2hhZGVyIGxheWVyUHJvZ3JhbVNoYWRlcigpIGNvbnN0IHsgcmV0dXJuIG1fbGF5ZXJQ
cm9ncmFtU2hhZGVyOyB9CiAKQEAgLTE0Nyw4ICsxNDQsNiBAQCBwdWJsaWM6CiAgICAgTWVkaWFQ
bGF5ZXIqIG1lZGlhUGxheWVyKCkgY29uc3QgeyByZXR1cm4gbV9tZWRpYVBsYXllcjsgfQogI2Vu
ZGlmCiAKLSAgICBIVE1MQ2FudmFzRWxlbWVudCogY2FudmFzKCkgY29uc3QgeyByZXR1cm4gbV9j
YW52YXM7IH0KLQogICAgIHZvaWQgcmVwbGljYXRlKExheWVyRGF0YSAqdG8pIGNvbnN0IHsgKnRv
ID0gKnRoaXM7IH0KIAogICAgIExheWVyVHlwZSBsYXllclR5cGUoKSBjb25zdCB7IHJldHVybiBt
X2xheWVyVHlwZTsgfQpAQCAtMTkzLDEwICsxODgsNiBAQCBwcm90ZWN0ZWQ6CiAgICAgSW50UmVj
dCBtX2hvbGVQdW5jaFJlY3Q7CiAKICAgICB1bnNpZ25lZCBtX3RleElEOwotICAgIHVuc2lnbmVk
IG1fdGV4V2lkdGg7Ci0gICAgdW5zaWduZWQgbV90ZXhIZWlnaHQ7Ci0KLSAgICBIVE1MQ2FudmFz
RWxlbWVudCogbV9jYW52YXM7CiAKICAgICBwdGhyZWFkX211dGV4X3QqIG1fZnJvbnRCdWZmZXJM
b2NrOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFj
a2JlcnJ5L0xheWVyVGlsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YmxhY2tiZXJyeS9MYXllclRpbGVyLmNwcAppbmRleCA4ZTNiMWZlLi4wMmY4ZTRhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L0xheWVyVGls
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkv
TGF5ZXJUaWxlci5jcHAKQEAgLTE2OCw3ICsxNjgsNyBAQCB2b2lkIExheWVyVGlsZXI6OnVwZGF0
ZVRleHR1cmVDb250ZW50c0lmTmVlZGVkKGRvdWJsZSBzY2FsZSkKICAgICAgICAgICAgIGlmIChp
bWFnZS0+aXNCaXRtYXBJbWFnZSgpKQogICAgICAgICAgICAgICAgIGlzT3BhcXVlID0gIXN0YXRp
Y19jYXN0PEJpdG1hcEltYWdlKj4oaW1hZ2UpLT5jdXJyZW50RnJhbWVIYXNBbHBoYSgpOwogICAg
ICAgICAgICAgaWYgKE5hdGl2ZUltYWdlUHRyIG5hdGl2ZUltYWdlID0gaW1hZ2UtPm5hdGl2ZUlt
YWdlRm9yQ3VycmVudEZyYW1lKCkpIHsKLSAgICAgICAgICAgICAgICBTa0JpdG1hcCBiaXRtYXAg
PSBTa0JpdG1hcCgqbmF0aXZlSW1hZ2UpOworICAgICAgICAgICAgICAgIFNrQml0bWFwIGJpdG1h
cCA9IFNrQml0bWFwKG5hdGl2ZUltYWdlLT5iaXRtYXAoKSk7CiAgICAgICAgICAgICAgICAgYWRk
VGV4dHVyZUpvYihUZXh0dXJlSm9iOjpzZXRDb250ZW50cyhiaXRtYXAsIGlzT3BhcXVlKSk7CiAg
ICAgICAgICAgICB9CiAgICAgICAgIH0gZWxzZSB7CkBAIC0yMjIsNyArMjIyLDcgQEAgdm9pZCBM
YXllclRpbGVyOjp1cGRhdGVUZXh0dXJlQ29udGVudHNJZk5lZWRlZChkb3VibGUgc2NhbGUpCiAg
ICAgICAgIC8vIE5vIHBvaW50IGluIHRpbGluZyBhbiBpbWFnZSBsYXllciwgdGhlIGltYWdlIGlz
IGFscmVhZHkgc3RvcmVkIGFzIGFuIFNrQml0bWFwCiAgICAgICAgIE5hdGl2ZUltYWdlUHRyIG5h
dGl2ZUltYWdlID0gbV9sYXllci0+Y29udGVudHMoKS0+bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJh
bWUoKTsKICAgICAgICAgaWYgKG5hdGl2ZUltYWdlKSB7Ci0gICAgICAgICAgICBTa0JpdG1hcCBi
aXRtYXAgPSBTa0JpdG1hcCgqbmF0aXZlSW1hZ2UpOworICAgICAgICAgICAgU2tCaXRtYXAgYml0
bWFwID0gU2tCaXRtYXAobmF0aXZlSW1hZ2UtPmJpdG1hcCgpKTsKICAgICAgICAgICAgIGFkZFRl
eHR1cmVKb2IoVGV4dHVyZUpvYjo6c2V0Q29udGVudHMoYml0bWFwLCBpc09wYXF1ZSkpOwogICAg
ICAgICB9CiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvTGF5ZXJXZWJLaXRUaHJlYWQuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9MYXllcldlYktpdFRocmVhZC5jcHAK
aW5kZXggNmNhZGYzNS4uOTlkN2EwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9MYXllcldlYktpdFRocmVhZC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9MYXllcldlYktpdFRocmVhZC5j
cHAKQEAgLTEwOCw3ICsxMDgsNyBAQCBTa0JpdG1hcCBMYXllcldlYktpdFRocmVhZDo6cGFpbnRD
b250ZW50cyhjb25zdCBJbnRSZWN0JiBjb250ZW50c1JlY3QsIGRvdWJsZSBzYwogICAgIGlmIChk
cmF3c0NvbnRlbnQoKSkgeyAvLyBMYXllciBjb250ZW50cyBtdXN0IGJlIGRyYXduIGludG8gYSBj
YW52YXMuCiAgICAgICAgIEludFJlY3QgdW50cmFuc2Zvcm1lZENvbnRlbnRzUmVjdCA9IGNvbnRl
bnRzUmVjdDsKIAotICAgICAgICBjYW52YXMgPSBhZG9wdFB0cihuZXcgSW5zdHJ1bWVudGVkUGxh
dGZvcm1DYW52YXMoY29udGVudHNSZWN0LndpZHRoKCksIGNvbnRlbnRzUmVjdC5oZWlnaHQoKSwg
ZmFsc2UsIDApKTsKKyAgICAgICAgY2FudmFzID0gYWRvcHRQdHIobmV3IEluc3RydW1lbnRlZFBs
YXRmb3JtQ2FudmFzKGNvbnRlbnRzUmVjdC53aWR0aCgpLCBjb250ZW50c1JlY3QuaGVpZ2h0KCkp
KTsKICAgICAgICAgUGxhdGZvcm1Db250ZXh0U2tpYSBza2lhQ29udGV4dChjYW52YXMuZ2V0KCkp
OwogCiAgICAgICAgIEdyYXBoaWNzQ29udGV4dCBncmFwaGljc0NvbnRleHQoJnNraWFDb250ZXh0
KTsKQEAgLTE5MSw3ICsxOTEsNyBAQCB2b2lkIExheWVyV2ViS2l0VGhyZWFkOjpzZXREcmF3YWJs
ZShib29sIGlzRHJhd2FibGUpCiAKICAgICBtX2lzRHJhd2FibGUgPSBpc0RyYXdhYmxlOwogCi0g
ICAgc2V0TmVlZHNUZXh0dXJlKG1faXNEcmF3YWJsZSAmJiAoZHJhd3NDb250ZW50KCkgfHwgY29u
dGVudHMoKSB8fCBwbHVnaW5WaWV3KCkgfHwgbWVkaWFQbGF5ZXIoKSB8fCBjYW52YXMoKSkpOwor
ICAgIHNldE5lZWRzVGV4dHVyZShtX2lzRHJhd2FibGUgJiYgKGRyYXdzQ29udGVudCgpIHx8IGNv
bnRlbnRzKCkgfHwgcGx1Z2luVmlldygpIHx8IG1lZGlhUGxheWVyKCkgfHwgbV90ZXhJRCkpOwog
ICAgIHNldE5lZWRzQ29tbWl0KCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvTWVkaWFQbGF5ZXJQcml2YXRlQmxhY2tCZXJyeS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L01lZGlhUGxh
eWVyUHJpdmF0ZUJsYWNrQmVycnkuY3BwCmluZGV4IDFkOGJkM2EuLjBhYjk4NzggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvTWVkaWFQbGF5
ZXJQcml2YXRlQmxhY2tCZXJyeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYmxhY2tiZXJyeS9NZWRpYVBsYXllclByaXZhdGVCbGFja0JlcnJ5LmNwcApAQCAtNzA5
LDE1ICs3MDksMTUgQEAgc3RhdGljIHZvaWQgbG9hZEJ1ZmZlcmluZ0ltYWdlRGF0YSgpCiAgICAg
ICAgICAgICByZXR1cm47CiAKICAgICAgICAgbG9hZGVkID0gdHJ1ZTsKLSAgICAgICAgbmF0aXZl
SW1hZ2UtPmxvY2tQaXhlbHMoKTsKKyAgICAgICAgbmF0aXZlSW1hZ2UtPmJpdG1hcCgpLmxvY2tQ
aXhlbHMoKTsKIAotICAgICAgICBpbnQgYnVmU2l6ZSA9IG5hdGl2ZUltYWdlLT53aWR0aCgpICog
bmF0aXZlSW1hZ2UtPmhlaWdodCgpICogNDsKLSAgICAgICAgc19idWZmZXJpbmdJbWFnZVdpZHRo
ID0gbmF0aXZlSW1hZ2UtPndpZHRoKCk7Ci0gICAgICAgIHNfYnVmZmVyaW5nSW1hZ2VIZWlnaHQg
PSBuYXRpdmVJbWFnZS0+aGVpZ2h0KCk7CisgICAgICAgIGludCBidWZTaXplID0gbmF0aXZlSW1h
Z2UtPmJpdG1hcCgpLndpZHRoKCkgKiBuYXRpdmVJbWFnZS0+Yml0bWFwKCkuaGVpZ2h0KCkgKiA0
OworICAgICAgICBzX2J1ZmZlcmluZ0ltYWdlV2lkdGggPSBuYXRpdmVJbWFnZS0+Yml0bWFwKCku
d2lkdGgoKTsKKyAgICAgICAgc19idWZmZXJpbmdJbWFnZUhlaWdodCA9IG5hdGl2ZUltYWdlLT5i
aXRtYXAoKS5oZWlnaHQoKTsKICAgICAgICAgc19idWZmZXJpbmdJbWFnZURhdGEgPSBzdGF0aWNf
Y2FzdDxjaGFyKj4obWFsbG9jKGJ1ZlNpemUpKTsKLSAgICAgICAgbWVtY3B5KHNfYnVmZmVyaW5n
SW1hZ2VEYXRhLCBuYXRpdmVJbWFnZS0+Z2V0UGl4ZWxzKCksIGJ1ZlNpemUpOworICAgICAgICBt
ZW1jcHkoc19idWZmZXJpbmdJbWFnZURhdGEsIG5hdGl2ZUltYWdlLT5iaXRtYXAoKS5nZXRQaXhl
bHMoKSwgYnVmU2l6ZSk7CiAKLSAgICAgICAgbmF0aXZlSW1hZ2UtPnVubG9ja1BpeGVscygpOwor
ICAgICAgICBuYXRpdmVJbWFnZS0+Yml0bWFwKCkudW5sb2NrUGl4ZWxzKCk7CiAgICAgICAgIGJ1
ZmZlcmluZ0ljb24tPmRlcmVmKCk7CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9za2lhL0ltYWdlQnVmZmVyRGF0YS5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9za2lhL0ltYWdlQnVm
ZmVyRGF0YS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0MDkxOTdlLi4wMDAwMDAw
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvc2tpYS9J
bWFnZUJ1ZmZlckRhdGEuaAorKysgL2Rldi9udWxsCkBAIC0xLDUzICswLDAgQEAKLS8qCi0gKiBD
b3B5cmlnaHQgKGMpIDIwMDgsIDIwMDksIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
Ci0gKiBDb3B5cmlnaHQgKGMpIDIwMTEsIFJlc2VhcmNoIEluIE1vdGlvbi4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSAqIG1ldDoKLSAq
Ci0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAotICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotICogY29weXJpZ2h0IG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotICog
aW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZQotICogZGlzdHJpYnV0aW9uLgotICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29n
bGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotICogY29udHJpYnV0b3JzIG1heSBiZSB1c2Vk
IHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSAqIHRoaXMgc29m
dHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKgotICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENP
TlRSSUJVVE9SUwotICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotICogQSBQQVJUSUNVTEFS
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQK
LSAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLAotICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0gKiBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAq
LwotCi0jaWZuZGVmIEltYWdlQnVmZmVyRGF0YV9oCi0jZGVmaW5lIEltYWdlQnVmZmVyRGF0YV9o
Ci0KLSNpbmNsdWRlICJCbGFja0JlcnJ5UGxhdGZvcm1HcmFwaGljcy5oIgotI2luY2x1ZGUgIlBs
YXRmb3JtQ29udGV4dFNraWEuaCIKLQotI2luY2x1ZGUgInNraWEvZXh0L3BsYXRmb3JtX2NhbnZh
cy5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIEltYWdlQnVmZmVyRGF0YSB7Ci1w
dWJsaWM6Ci0gICAgSW1hZ2VCdWZmZXJEYXRhKGNvbnN0IEludFNpemUmKTsKLQotICAgIE93blB0
cjxTa0NhbnZhcz4gbV9jYW52YXM7Ci0gICAgUGxhdGZvcm1Db250ZXh0U2tpYSBtX3BsYXRmb3Jt
Q29udGV4dDsKLSAgICBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6R3JhcGhpY3M6OkJ1ZmZlciogbV9i
dWZmZXI7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBJbWFnZUJ1
ZmZlckRhdGFfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YmxhY2tiZXJyeS9za2lhL0ltYWdlQnVmZmVyRGF0YVNraWEuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvc2tpYS9JbWFnZUJ1ZmZlckRhdGFTa2lhLmgKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTM4OWE5MQotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvc2tpYS9JbWFn
ZUJ1ZmZlckRhdGFTa2lhLmgKQEAgLTAsMCArMSw1NyBAQAorLyoKKyAqIENvcHlyaWdodCAoYykg
MjAwOCwgMjAwOSwgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdo
dCAoYykgMjAxMSwgUmVzZWFyY2ggSW4gTW90aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0
cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0
aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBv
ciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0
IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisg
KiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1Ig
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYg
SW1hZ2VCdWZmZXJEYXRhX2gKKyNkZWZpbmUgSW1hZ2VCdWZmZXJEYXRhX2gKKworI2luY2x1ZGUg
IkJsYWNrQmVycnlQbGF0Zm9ybUdyYXBoaWNzLmgiCisjaW5jbHVkZSAiUGxhdGZvcm1Db250ZXh0
U2tpYS5oIgorI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKKyNpbmNsdWRlICJMYXll
cldlYktpdFRocmVhZC5oIgorI2VuZGlmCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3Mg
SW1hZ2VCdWZmZXJEYXRhIHsKK3B1YmxpYzoKKyAgICBJbWFnZUJ1ZmZlckRhdGEoY29uc3QgSW50
U2l6ZSYpOworCisgICAgT3duUHRyPFNrQ2FudmFzPiBtX2NhbnZhczsKKyAgICBQbGF0Zm9ybUNv
bnRleHRTa2lhIG1fcGxhdGZvcm1Db250ZXh0OworICAgIEJsYWNrQmVycnk6OlBsYXRmb3JtOjpH
cmFwaGljczo6QnVmZmVyKiBtX2J1ZmZlcjsKKyNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJ
TkcpCisgICAgUmVmUHRyPExheWVyV2ViS2l0VGhyZWFkPiBtX3BsYXRmb3JtTGF5ZXI7CisjZW5k
aWYKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEltYWdlQnVmZmVy
RGF0YV9oCg==
</data>
<flag name="review"
          id="137915"
          type_id="1"
          status="+"
          setter="rwlbuis"
    />
    <flag name="commit-queue"
          id="137916"
          type_id="3"
          status="-"
          setter="webkit.review.bot"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>133838</attachid>
            <date>2012-03-26 09:49:34 -0700</date>
            <delta_ts>2012-03-26 09:59:37 -0700</delta_ts>
            <desc>Fixed patch</desc>
            <filename>up.diff</filename>
            <type>text/plain</type>
            <size>29444</size>
            <attacher name="Filip Spacek">fspacek</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCAyNzdjMTNmLi5iYjA2M2IzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNjMg
QEAKKzIwMTItMDMtMjYgIEZpbGlwIFNwYWNlayAgPGZzcGFjZWtAcmltLmNvbT4KKworICAgICAg
ICBbQmxhY2tCZXJyeV0gQWNjZWxlcmF0ZWQgY29tcG9zaXRpbmcgdXBkYXRlcworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODIwNTgKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2JsYWNrYmVycnkvQ2FudmFzTGF5ZXJXZWJLaXRUaHJlYWQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Q2FudmFzTGF5ZXJXZWJLaXRUaHJlYWQ6OkNhbnZhc0xheWVyV2ViS2l0VGhyZWFkKToKKyAg
ICAgICAgKFdlYkNvcmU6OkNhbnZhc0xheWVyV2ViS2l0VGhyZWFkOjp+Q2FudmFzTGF5ZXJXZWJL
aXRUaHJlYWQpOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzTGF5ZXJXZWJLaXRUaHJlYWQ6OnNl
dERldmljZSk6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNMYXllcldlYktpdFRocmVhZDo6dXBk
YXRlVGV4dHVyZUNvbnRlbnRzSWZOZWVkZWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2JsYWNrYmVycnkvQ2FudmFzTGF5ZXJXZWJLaXRUaHJlYWQuaDoKKyAgICAgICAgKFdlYkNvcmU6
OkNhbnZhc0xheWVyV2ViS2l0VGhyZWFkOjpjcmVhdGUpOgorICAgICAgICAoQ2FudmFzTGF5ZXJX
ZWJLaXRUaHJlYWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvSW5z
dHJ1bWVudGVkUGxhdGZvcm1DYW52YXMuaDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3RydW1lbnRl
ZFBsYXRmb3JtQ2FudmFzOjpJbnN0cnVtZW50ZWRQbGF0Zm9ybUNhbnZhcyk6CisgICAgICAgIChX
ZWJDb3JlOjpJbnN0cnVtZW50ZWRQbGF0Zm9ybUNhbnZhczo6c2F2ZSk6CisgICAgICAgIChXZWJD
b3JlOjpJbnN0cnVtZW50ZWRQbGF0Zm9ybUNhbnZhczo6c2F2ZUxheWVyKToKKyAgICAgICAgKFdl
YkNvcmU6Okluc3RydW1lbnRlZFBsYXRmb3JtQ2FudmFzOjpyZXN0b3JlKToKKyAgICAgICAgKFdl
YkNvcmU6Okluc3RydW1lbnRlZFBsYXRmb3JtQ2FudmFzOjp0cmFuc2xhdGUpOgorICAgICAgICAo
V2ViQ29yZTo6SW5zdHJ1bWVudGVkUGxhdGZvcm1DYW52YXM6OnNjYWxlKToKKyAgICAgICAgKFdl
YkNvcmU6Okluc3RydW1lbnRlZFBsYXRmb3JtQ2FudmFzOjpyb3RhdGUpOgorICAgICAgICAoV2Vi
Q29yZTo6SW5zdHJ1bWVudGVkUGxhdGZvcm1DYW52YXM6OnNrZXcpOgorICAgICAgICAoV2ViQ29y
ZTo6SW5zdHJ1bWVudGVkUGxhdGZvcm1DYW52YXM6OmNvbmNhdCk6CisgICAgICAgIChXZWJDb3Jl
OjpJbnN0cnVtZW50ZWRQbGF0Zm9ybUNhbnZhczo6c2V0TWF0cml4KToKKyAgICAgICAgKFdlYkNv
cmU6Okluc3RydW1lbnRlZFBsYXRmb3JtQ2FudmFzOjpjbGlwUmVjdCk6CisgICAgICAgIChXZWJD
b3JlOjpJbnN0cnVtZW50ZWRQbGF0Zm9ybUNhbnZhczo6Y2xpcFBhdGgpOgorICAgICAgICAoV2Vi
Q29yZTo6SW5zdHJ1bWVudGVkUGxhdGZvcm1DYW52YXM6OmNsaXBSZWdpb24pOgorICAgICAgICAo
V2ViQ29yZTo6SW5zdHJ1bWVudGVkUGxhdGZvcm1DYW52YXM6OmNsZWFyKToKKyAgICAgICAgKFdl
YkNvcmU6Okluc3RydW1lbnRlZFBsYXRmb3JtQ2FudmFzOjpkcmF3UGFpbnQpOgorICAgICAgICAo
V2ViQ29yZTo6SW5zdHJ1bWVudGVkUGxhdGZvcm1DYW52YXM6OmRyYXdQb2ludHMpOgorICAgICAg
ICAoV2ViQ29yZTo6SW5zdHJ1bWVudGVkUGxhdGZvcm1DYW52YXM6OmRyYXdSZWN0KToKKyAgICAg
ICAgKFdlYkNvcmU6Okluc3RydW1lbnRlZFBsYXRmb3JtQ2FudmFzOjpkcmF3UGF0aCk6CisgICAg
ICAgIChXZWJDb3JlOjpJbnN0cnVtZW50ZWRQbGF0Zm9ybUNhbnZhczo6ZHJhd0JpdG1hcCk6Cisg
ICAgICAgIChXZWJDb3JlOjpJbnN0cnVtZW50ZWRQbGF0Zm9ybUNhbnZhczo6ZHJhd0JpdG1hcFJl
Y3QpOgorICAgICAgICAoV2ViQ29yZTo6SW5zdHJ1bWVudGVkUGxhdGZvcm1DYW52YXM6OmRyYXdC
aXRtYXBNYXRyaXgpOgorICAgICAgICAoV2ViQ29yZTo6SW5zdHJ1bWVudGVkUGxhdGZvcm1DYW52
YXM6OmRyYXdTcHJpdGUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zdHJ1bWVudGVkUGxhdGZvcm1D
YW52YXM6OmRyYXdUZXh0KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3RydW1lbnRlZFBsYXRmb3Jt
Q2FudmFzOjpkcmF3UG9zVGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpJbnN0cnVtZW50ZWRQbGF0
Zm9ybUNhbnZhczo6ZHJhd1Bvc1RleHRIKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3RydW1lbnRl
ZFBsYXRmb3JtQ2FudmFzOjpkcmF3VGV4dE9uUGF0aCk6CisgICAgICAgIChXZWJDb3JlOjpJbnN0
cnVtZW50ZWRQbGF0Zm9ybUNhbnZhczo6ZHJhd1BpY3R1cmUpOgorICAgICAgICAoV2ViQ29yZTo6
SW5zdHJ1bWVudGVkUGxhdGZvcm1DYW52YXM6OmRyYXdWZXJ0aWNlcyk6CisgICAgICAgIChXZWJD
b3JlOjpJbnN0cnVtZW50ZWRQbGF0Zm9ybUNhbnZhczo6ZHJhd0RhdGEpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvTGF5ZXJEYXRhLmg6CisgICAgICAgIChXZWJDb3Jl
OjpMYXllckRhdGE6OkxheWVyRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpMYXllckRhdGE6Om5l
ZWRzVGV4dHVyZSk6CisgICAgICAgIChMYXllckRhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2JsYWNrYmVycnkvTGF5ZXJUaWxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMYXll
clRpbGVyOjp1cGRhdGVUZXh0dXJlQ29udGVudHNJZk5lZWRlZCk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9MYXllcldlYktpdFRocmVhZC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpMYXllcldlYktpdFRocmVhZDo6cGFpbnRDb250ZW50cyk6CisgICAgICAgIChXZWJD
b3JlOjpMYXllcldlYktpdFRocmVhZDo6c2V0RHJhd2FibGUpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2JsYWNrYmVycnkvTWVkaWFQbGF5ZXJQcml2YXRlQmxhY2tCZXJyeS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpsb2FkQnVmZmVyaW5nSW1hZ2VEYXRhKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L3NraWEvSW1hZ2VCdWZmZXJEYXRhU2tpYS5oOiBSZW5h
bWVkIGZyb20gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9za2lh
L0ltYWdlQnVmZmVyRGF0YS5oLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChJbWFnZUJ1
ZmZlckRhdGEpOgorCiAyMDEyLTAzLTIyICBKb25hdGhhbiBEb25nICA8am9uYXRoYW4uZG9uZ0B0
b3JjaG1vYmlsZS5jb20uY24+CiAKICAgICAgICAgW0JsYWNrQmVycnldIGh0dHAgYXV0aGVudGlj
YXRlIGRpYWxvZyBwb3B1cCBvbmx5IG9uY2Ugbm8gbWF0dGVyIGF1dGhlbnRpY2F0aW9uIHBhc3Mg
b3IgZmFpbApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYmxh
Y2tiZXJyeS9DYW52YXNMYXllcldlYktpdFRocmVhZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L0NhbnZhc0xheWVyV2ViS2l0VGhyZWFkLmNwcAppbmRl
eCA0ZDIwMzI2Li41ZjZhNDg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9ibGFja2JlcnJ5L0NhbnZhc0xheWVyV2ViS2l0VGhyZWFkLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L0NhbnZhc0xheWVyV2ViS2l0
VGhyZWFkLmNwcApAQCAtMTksMzYgKzE5LDMxIEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5j
bHVkZSAiQ2FudmFzTGF5ZXJXZWJLaXRUaHJlYWQuaCIKIAotI2lmIFVTRShBQ0NFTEVSQVRFRF9D
T01QT1NJVElORykgJiYgRU5BQkxFKFNLSUFfR1BVX0NBTlZBUykKKyNpZiBVU0UoQUNDRUxFUkFU
RURfQ09NUE9TSVRJTkcpICYmIEVOQUJMRShBQ0NFTEVSQVRFRF8yRF9DQU5WQVMpCiAKLSNpbmNs
dWRlICJIVE1MQ2FudmFzRWxlbWVudC5oIgotI2luY2x1ZGUgIlBsYXRmb3JtQ29udGV4dFNraWEu
aCIKLQotI2luY2x1ZGUgPEJsYWNrQmVycnlQbGF0Zm9ybUdyYXBoaWNzLmg+CisjaW5jbHVkZSAi
U2hhcmVkR3JhcGhpY3NDb250ZXh0M0QuaCIKICNpbmNsdWRlIDxHTEVTMi9nbDIuaD4KLSNpbmNs
dWRlIDxHckdMVGV4dHVyZS5oPgogI2luY2x1ZGUgPFNrR3B1RGV2aWNlLmg+CiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAotQ2FudmFzTGF5ZXJXZWJLaXRUaHJlYWQ6OkNhbnZhc0xheWVyV2ViS2l0
VGhyZWFkKEhUTUxDYW52YXNFbGVtZW50KiBjYW52YXMpCi0gICAgOiBMYXllcldlYktpdFRocmVh
ZChMYXllciwgMCkKK0NhbnZhc0xheWVyV2ViS2l0VGhyZWFkOjpDYW52YXNMYXllcldlYktpdFRo
cmVhZChTa0dwdURldmljZSogZGV2aWNlKQorICAgIDogTGF5ZXJXZWJLaXRUaHJlYWQoQ2FudmFz
TGF5ZXIsIDApCiB7Ci0gICAgc2V0Q2FudmFzKGNhbnZhcyk7CisgICAgc2V0RGV2aWNlKGRldmlj
ZSk7CiB9CiAKIENhbnZhc0xheWVyV2ViS2l0VGhyZWFkOjp+Q2FudmFzTGF5ZXJXZWJLaXRUaHJl
YWQoKQogewogICAgIGlmIChtX3RleElEKSB7Ci0gICAgICAgIEJsYWNrQmVycnk6OlBsYXRmb3Jt
OjpHcmFwaGljczo6bWFrZVNoYXJlZFJlc291cmNlQ29udGV4dEN1cnJlbnQoQmxhY2tCZXJyeTo6
UGxhdGZvcm06OkdyYXBoaWNzOjpHTEVTMik7CisgICAgICAgIFNoYXJlZEdyYXBoaWNzQ29udGV4
dDNEOjpnZXQoKS0+bWFrZUNvbnRleHRDdXJyZW50KCk7CiAgICAgICAgIGdsRGVsZXRlVGV4dHVy
ZXMoMSwgJm1fdGV4SUQpOwogICAgIH0KIH0KIAotdm9pZCBDYW52YXNMYXllcldlYktpdFRocmVh
ZDo6c2V0Q2FudmFzKEhUTUxDYW52YXNFbGVtZW50KiBjYW52YXMpCit2b2lkIENhbnZhc0xheWVy
V2ViS2l0VGhyZWFkOjpzZXREZXZpY2UoU2tHcHVEZXZpY2UqIGRldmljZSkKIHsKLSAgICBtX2Nh
bnZhcyA9IGNhbnZhczsKLSAgICBzZXROZWVkc1RleHR1cmUoaXNEcmF3YWJsZSgpICYmIGNhbnZh
cyk7CisgICAgbV9kZXZpY2UgPSBkZXZpY2U7CiAgICAgc2V0TGF5ZXJQcm9ncmFtU2hhZGVyKExh
eWVyUHJvZ3JhbVNoYWRlclJHQkEpOwogICAgIHNldE5lZWRzRGlzcGxheSgpOwogfQpAQCAtNjEs
MjEgKzU2LDExIEBAIHZvaWQgQ2FudmFzTGF5ZXJXZWJLaXRUaHJlYWQ6OnNldE5lZWRzRGlzcGxh
eSgpCiAKIHZvaWQgQ2FudmFzTGF5ZXJXZWJLaXRUaHJlYWQ6OnVwZGF0ZVRleHR1cmVDb250ZW50
c0lmTmVlZGVkKCkKIHsKLSAgICBpZiAoIW1fbmVlZHNEaXNwbGF5KQorICAgIGlmICghbV9uZWVk
c0Rpc3BsYXkgfHwgIW1fZGV2aWNlKQogICAgICAgICByZXR1cm47CiAKICAgICBtX25lZWRzRGlz
cGxheSA9IGZhbHNlOwotCi0gICAgaWYgKCFtX2NhbnZhcyB8fCAhbV9jYW52YXMtPmRyYXdpbmdD
b250ZXh0KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIFNrR3B1RGV2aWNlKiBncHVEZXZpY2Ug
PSBzdGF0aWNfY2FzdDxTa0dwdURldmljZSo+KG1fY2FudmFzLT5kcmF3aW5nQ29udGV4dCgpLT5w
bGF0Zm9ybUNvbnRleHQoKS0+Y2FudmFzKCktPmdldERldmljZSgpKTsKLSAgICBncHVEZXZpY2Ut
Pm1ha2VSZW5kZXJUYXJnZXRDdXJyZW50KCk7Ci0gICAgLy8gV2Uga25vdyB0aGlzIGlzIGEgR3JH
TFRleHR1cmUKLSAgICBpZiAoR3JHTFRleHR1cmUqIGRldmljZVRleHR1cmUgPSAoR3JHTFRleHR1
cmUqKWdwdURldmljZS0+YWNjZXNzVGV4dHVyZSgpKSB7Ci0gICAgICAgIG1fdGV4V2lkdGggPSBk
ZXZpY2VUZXh0dXJlLT5hbGxvY1dpZHRoKCk7Ci0gICAgICAgIG1fdGV4SGVpZ2h0ID0gZGV2aWNl
VGV4dHVyZS0+YWxsb2NIZWlnaHQoKTsKLSAgICB9CisgICAgbV9kZXZpY2UtPm1ha2VSZW5kZXJU
YXJnZXRDdXJyZW50KCk7CiAKICAgICBHTGludCBwcmV2aW91c1RleHR1cmU7CiAgICAgZ2xHZXRJ
bnRlZ2VydihHTF9URVhUVVJFX0JJTkRJTkdfMkQsICZwcmV2aW91c1RleHR1cmUpOwpAQCAtODcs
MTggKzcyLDE4IEBAIHZvaWQgQ2FudmFzTGF5ZXJXZWJLaXRUaHJlYWQ6OnVwZGF0ZVRleHR1cmVD
b250ZW50c0lmTmVlZGVkKCkKICAgICAgICAgZ2xUZXhQYXJhbWV0ZXJmKEdMX1RFWFRVUkVfMkQs
IEdMX1RFWFRVUkVfTUFHX0ZJTFRFUiwgR0xfTElORUFSKTsKICAgICAgICAgZ2xUZXhQYXJhbWV0
ZXJmKEdMX1RFWFRVUkVfMkQsIEdMX1RFWFRVUkVfV1JBUF9TLCBHTF9DTEFNUF9UT19FREdFKTsK
ICAgICAgICAgZ2xUZXhQYXJhbWV0ZXJmKEdMX1RFWFRVUkVfMkQsIEdMX1RFWFRVUkVfV1JBUF9U
LCBHTF9DTEFNUF9UT19FREdFKTsKLSAgICAgICAgZ2xUZXhJbWFnZTJEKEdMX1RFWFRVUkVfMkQs
IDAsIEdMX1JHQkEsIG1fY2FudmFzLT53aWR0aCgpLCBtX2NhbnZhcy0+aGVpZ2h0KCksIDAsIEdM
X1JHQkEsIEdMX1VOU0lHTkVEX0JZVEUsIDApOworICAgICAgICBnbFRleEltYWdlMkQoR0xfVEVY
VFVSRV8yRCwgMCwgR0xfUkdCQSwgbV9kZXZpY2UtPndpZHRoKCksIG1fZGV2aWNlLT5oZWlnaHQo
KSwgMCwgR0xfUkdCQSwgR0xfVU5TSUdORURfQllURSwgMCk7CiAKICAgICAgICAgY3JlYXRlRnJv
bnRCdWZmZXJMb2NrKCk7CiAgICAgfQogCiAgICAgcHRocmVhZF9tdXRleF9sb2NrKG1fZnJvbnRC
dWZmZXJMb2NrKTsKICAgICBnbEJpbmRUZXh0dXJlKEdMX1RFWFRVUkVfMkQsIG1fdGV4SUQpOwot
ICAgIGdsQ29weVRleEltYWdlMkQoR0xfVEVYVFVSRV8yRCwgMCwgR0xfUkdCQSwgMCwgMCwgbV90
ZXhXaWR0aCwgbV90ZXhIZWlnaHQsIDApOworICAgIGdsQ29weVRleEltYWdlMkQoR0xfVEVYVFVS
RV8yRCwgMCwgR0xfUkdCQSwgMCwgMCwgbV9kZXZpY2UtPndpZHRoKCksIG1fZGV2aWNlLT5oZWln
aHQoKSwgMCk7CiAgICAgZ2xCaW5kVGV4dHVyZShHTF9URVhUVVJFXzJELCBwcmV2aW91c1RleHR1
cmUpOwogICAgIHB0aHJlYWRfbXV0ZXhfdW5sb2NrKG1fZnJvbnRCdWZmZXJMb2NrKTsKIH0KIAog
fQogCi0jZW5kaWYgLy8gVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKSAmJiBFTkFCTEUoU0tJ
QV9HUFVfQ0FOVkFTKQorI2VuZGlmIC8vIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykgJiYg
RU5BQkxFKEFDQ0VMRVJBVEVEXzJEX0NBTlZBUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvQ2FudmFzTGF5ZXJXZWJLaXRUaHJlYWQuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvQ2FudmFzTGF5ZXJX
ZWJLaXRUaHJlYWQuaAppbmRleCA5YTczMWNlLi5lYWM2YjgyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L0NhbnZhc0xheWVyV2ViS2l0VGhy
ZWFkLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9D
YW52YXNMYXllcldlYktpdFRocmVhZC5oCkBAIC0xOSwyNCArMTksMjYgQEAKICNpZm5kZWYgQ2Fu
dmFzTGF5ZXJXZWJLaXRUaHJlYWRfaAogI2RlZmluZSBDYW52YXNMYXllcldlYktpdFRocmVhZF9o
CiAKLSNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpICYmIEVOQUJMRShTS0lBX0dQVV9D
QU5WQVMpCisjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKSAmJiBFTkFCTEUoQUNDRUxF
UkFURURfMkRfQ0FOVkFTKQogCiAjaW5jbHVkZSAiTGF5ZXJXZWJLaXRUaHJlYWQuaCIKIAorY2xh
c3MgU2tHcHVEZXZpY2U7CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgSFRNTENhbnZh
c0VsZW1lbnQ7CiAKIGNsYXNzIENhbnZhc0xheWVyV2ViS2l0VGhyZWFkIDogcHVibGljIExheWVy
V2ViS2l0VGhyZWFkIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxDYW52YXNMYXll
cldlYktpdFRocmVhZD4gY3JlYXRlKEhUTUxDYW52YXNFbGVtZW50KiBjYW52YXMpCisgICAgc3Rh
dGljIFBhc3NSZWZQdHI8Q2FudmFzTGF5ZXJXZWJLaXRUaHJlYWQ+IGNyZWF0ZShTa0dwdURldmlj
ZSogZGV2aWNlKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBDYW52YXNMYXll
cldlYktpdFRocmVhZChjYW52YXMpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBDYW52
YXNMYXllcldlYktpdFRocmVhZChkZXZpY2UpKTsKICAgICB9CiAKICAgICB2aXJ0dWFsIH5DYW52
YXNMYXllcldlYktpdFRocmVhZCgpOwogCi0gICAgdm9pZCBzZXRDYW52YXMoSFRNTENhbnZhc0Vs
ZW1lbnQqKTsKKyAgICB2b2lkIHNldERldmljZShTa0dwdURldmljZSopOwogCiAgICAgdmlydHVh
bCB2b2lkIHNldE5lZWRzRGlzcGxheSgpOwogCkBAIC00NCwxMiArNDYsMTMgQEAgcHJvdGVjdGVk
OgogICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVUZXh0dXJlQ29udGVudHNJZk5lZWRlZCgpOwogCiBw
cml2YXRlOgotICAgIENhbnZhc0xheWVyV2ViS2l0VGhyZWFkKEhUTUxDYW52YXNFbGVtZW50Kik7
CisgICAgQ2FudmFzTGF5ZXJXZWJLaXRUaHJlYWQoU2tHcHVEZXZpY2UqKTsKICAgICBib29sIG1f
bmVlZHNEaXNwbGF5OworICAgIFNrR3B1RGV2aWNlKiBtX2RldmljZTsKIH07CiAKIH0KIAotI2Vu
ZGlmIC8vIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykgJiYgRU5BQkxFKFNLSUFfR1BVX0NB
TlZBUykKKyNlbmRpZiAvLyBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpICYmIEVOQUJMRShB
Q0NFTEVSQVRFRF8yRF9DQU5WQVMpCiAKICNlbmRpZiAvLyBDYW52YXNMYXllcldlYktpdFRocmVh
ZF9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFja2Jl
cnJ5L0dyYXBoaWNzQ29udGV4dDNEQmxhY2tCZXJyeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L0dyYXBoaWNzQ29udGV4dDNEQmxhY2tCZXJyeS5jcHAK
aW5kZXggMmI0MTAxNS4uYTljYTVkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9HcmFwaGljc0NvbnRleHQzREJsYWNrQmVycnkuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvR3JhcGhpY3ND
b250ZXh0M0RCbGFja0JlcnJ5LmNwcApAQCAtMTk1LDE1ICsxOTUsMTYgQEAgdm9pZCBHcmFwaGlj
c0NvbnRleHQzRDo6cGFpbnRUb0NhbnZhcyhjb25zdCB1bnNpZ25lZCBjaGFyKiBpbWFnZVBpeGVs
cywgaW50IGltYWcKIAogICAgIGNhbnZhc0JpdG1hcC5zZXRDb25maWcoU2tCaXRtYXA6OmtBUkdC
Xzg4ODhfQ29uZmlnLCBjYW52YXNXaWR0aCwgY2FudmFzSGVpZ2h0KTsKICAgICBjYW52YXNCaXRt
YXAuYWxsb2NQaXhlbHMoMCwgMCk7Ci0gICAgYm9vbCByYyA9IGNhbnZhc0JpdG1hcC5jb3B5UGl4
ZWxzRnJvbShzdGF0aWNfY2FzdDx2b2lkKj4oY29uc3RfY2FzdDx1bnNpZ25lZCBjaGFyKj4odGVt
cFBpeGVscykpLCBpbWFnZVdpZHRoICogaW1hZ2VIZWlnaHQgKiA0KTsKKyAgICBjYW52YXNCaXRt
YXAubG9ja1BpeGVscygpOworICAgIG1lbWNweShjYW52YXNCaXRtYXAuZ2V0UGl4ZWxzKCksIHRl
bXBQaXhlbHMsIGltYWdlV2lkdGggKiBpbWFnZUhlaWdodCAqIDQpOworICAgIGNhbnZhc0JpdG1h
cC51bmxvY2tQaXhlbHMoKTsKICAgICBkZWxldGUgW10gdGVtcFBpeGVsczsKIAogICAgIEZsb2F0
UmVjdCBzcmMoMCwgMCwgY2FudmFzV2lkdGgsIGNhbnZhc0hlaWdodCk7CiAgICAgRmxvYXRSZWN0
IGRzdCgwLCAwLCBpbWFnZVdpZHRoLCBpbWFnZUhlaWdodCk7CiAKICAgICBSZWZQdHI8Qml0bWFw
SW1hZ2VTaW5nbGVGcmFtZVNraWE+IGJpdG1hcEltYWdlID0gQml0bWFwSW1hZ2VTaW5nbGVGcmFt
ZVNraWE6OmNyZWF0ZShjYW52YXNCaXRtYXAsIGZhbHNlKTsKLSAgICBpZiAocmMpCi0gICAgICAg
IGNvbnRleHQtPmRyYXdJbWFnZShiaXRtYXBJbWFnZS5nZXQoKSwgQ29sb3JTcGFjZURldmljZVJH
QiwgZHN0LCBzcmMsIENvbXBvc2l0ZUNvcHksIGZhbHNlKTsKKyAgICBjb250ZXh0LT5kcmF3SW1h
Z2UoYml0bWFwSW1hZ2UuZ2V0KCksIENvbG9yU3BhY2VEZXZpY2VSR0IsIGRzdCwgc3JjLCBDb21w
b3NpdGVDb3B5LCBmYWxzZSk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnNldENvbnRl
eHRMb3N0Q2FsbGJhY2soUGFzc093blB0cjxDb250ZXh0TG9zdENhbGxiYWNrPikKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvSW5zdHJ1bWVu
dGVkUGxhdGZvcm1DYW52YXMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Js
YWNrYmVycnkvSW5zdHJ1bWVudGVkUGxhdGZvcm1DYW52YXMuaAppbmRleCAxNjI5ZmYxLi43ODBi
YzAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFja2Jl
cnJ5L0luc3RydW1lbnRlZFBsYXRmb3JtQ2FudmFzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9JbnN0cnVtZW50ZWRQbGF0Zm9ybUNhbnZhcy5oCkBA
IC0zNCwxNCArMzQsMTQgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBJbnN0cnVt
ZW50ZWRQbGF0Zm9ybUNhbnZhcyA6IHB1YmxpYyBza2lhOjpQbGF0Zm9ybUNhbnZhcyB7CitjbGFz
cyBJbnN0cnVtZW50ZWRQbGF0Zm9ybUNhbnZhcyA6IHB1YmxpYyBTa0NhbnZhcyB7CiBwdWJsaWM6
Ci0gICAgSW5zdHJ1bWVudGVkUGxhdGZvcm1DYW52YXMoaW50IHdpZHRoLCBpbnQgaGVpZ2h0LCBi
b29sIGlzX29wYXF1ZSwgU2tEZXZpY2VGYWN0b3J5KiBmYWN0b3J5KQotICAgICAgICA6IHNraWE6
OlBsYXRmb3JtQ2FudmFzKHdpZHRoLCBoZWlnaHQsIGlzX29wYXF1ZSwgZmFjdG9yeSkKLSAgICAg
ICAgLCBtX3NpemUod2lkdGgsIGhlaWdodCkKKyAgICBJbnN0cnVtZW50ZWRQbGF0Zm9ybUNhbnZh
cyhpbnQgd2lkdGgsIGludCBoZWlnaHQpCisgICAgICAgIDogbV9zaXplKHdpZHRoLCBoZWlnaHQp
CiAgICAgICAgICwgbV9pc1NvbGlkQ29sb3IodHJ1ZSkKICAgICAgICAgLCBtX3NvbGlkQ29sb3Io
MCwgMCwgMCwgMCkKICAgICB7CisgICAgICAgIHNldERldmljZShuZXcgU2tEZXZpY2UoU2tCaXRt
YXA6OmtBUkdCXzg4ODhfQ29uZmlnLCB3aWR0aCwgaGVpZ2h0KSktPnVucmVmKCk7CiAgICAgfQog
CiAgICAgdmlydHVhbCB+SW5zdHJ1bWVudGVkUGxhdGZvcm1DYW52YXMoKSB7IH0KQEAgLTUzLDc2
ICs1Myw3NiBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBpbnQgc2F2ZShTYXZlRmxhZ3MgZmxhZ3Mp
CiAgICAgewogICAgICAgICBXUkFQQ0FOVkFTX0xPR19FTlRSWSgiIik7Ci0gICAgICAgIHJldHVy
biBza2lhOjpQbGF0Zm9ybUNhbnZhczo6c2F2ZShmbGFncyk7CisgICAgICAgIHJldHVybiBTa0Nh
bnZhczo6c2F2ZShmbGFncyk7CiAgICAgfQogCiAgICAgdmlydHVhbCBpbnQgc2F2ZUxheWVyKGNv
bnN0IFNrUmVjdCogYm91bmRzLCBjb25zdCBTa1BhaW50KiBwYWludCwgU2F2ZUZsYWdzIGZsYWdz
KQogICAgIHsKICAgICAgICAgV1JBUENBTlZBU19MT0dfRU5UUlkoIiIpOwogICAgICAgICBtX2lz
U29saWRDb2xvciA9IGZhbHNlOwotICAgICAgICByZXR1cm4gc2tpYTo6UGxhdGZvcm1DYW52YXM6
OnNhdmVMYXllcihib3VuZHMsIHBhaW50LCBmbGFncyk7CisgICAgICAgIHJldHVybiBTa0NhbnZh
czo6c2F2ZUxheWVyKGJvdW5kcywgcGFpbnQsIGZsYWdzKTsKICAgICB9CiAKICAgICB2aXJ0dWFs
IHZvaWQgcmVzdG9yZSgpCiAgICAgewogICAgICAgICBXUkFQQ0FOVkFTX0xPR19FTlRSWSgiIik7
Ci0gICAgICAgIHNraWE6OlBsYXRmb3JtQ2FudmFzOjpyZXN0b3JlKCk7CisgICAgICAgIFNrQ2Fu
dmFzOjpyZXN0b3JlKCk7CiAgICAgfQogCiAgICAgdmlydHVhbCBib29sIHRyYW5zbGF0ZShTa1Nj
YWxhciBkeCwgU2tTY2FsYXIgZHkpCiAgICAgewogICAgICAgICBXUkFQQ0FOVkFTX0xPR19FTlRS
WSgiIik7Ci0gICAgICAgIHJldHVybiBza2lhOjpQbGF0Zm9ybUNhbnZhczo6dHJhbnNsYXRlKGR4
LCBkeSk7CisgICAgICAgIHJldHVybiBTa0NhbnZhczo6dHJhbnNsYXRlKGR4LCBkeSk7CiAgICAg
fQogCiAgICAgdmlydHVhbCBib29sIHNjYWxlKFNrU2NhbGFyIHN4LCBTa1NjYWxhciBzeSkKICAg
ICB7CiAgICAgICAgIFdSQVBDQU5WQVNfTE9HX0VOVFJZKCIiKTsKLSAgICAgICAgcmV0dXJuIHNr
aWE6OlBsYXRmb3JtQ2FudmFzOjpzY2FsZShzeCwgc3kpOworICAgICAgICByZXR1cm4gU2tDYW52
YXM6OnNjYWxlKHN4LCBzeSk7CiAgICAgfQogCiAgICAgdmlydHVhbCBib29sIHJvdGF0ZShTa1Nj
YWxhciBkZWdyZWVzKQogICAgIHsKICAgICAgICAgV1JBUENBTlZBU19MT0dfRU5UUlkoIiIpOwot
ICAgICAgICByZXR1cm4gc2tpYTo6UGxhdGZvcm1DYW52YXM6OnJvdGF0ZShkZWdyZWVzKTsKKyAg
ICAgICAgcmV0dXJuIFNrQ2FudmFzOjpyb3RhdGUoZGVncmVlcyk7CiAgICAgfQogCiAgICAgdmly
dHVhbCBib29sIHNrZXcoU2tTY2FsYXIgc3gsIFNrU2NhbGFyIHN5KQogICAgIHsKICAgICAgICAg
V1JBUENBTlZBU19MT0dfRU5UUlkoIiIpOwotICAgICAgICByZXR1cm4gc2tpYTo6UGxhdGZvcm1D
YW52YXM6OnNrZXcoc3gsIHN5KTsKKyAgICAgICAgcmV0dXJuIFNrQ2FudmFzOjpza2V3KHN4LCBz
eSk7CiAgICAgfQogCiAgICAgdmlydHVhbCBib29sIGNvbmNhdChjb25zdCBTa01hdHJpeCYgbWF0
cml4KQogICAgIHsKICAgICAgICAgV1JBUENBTlZBU19MT0dfRU5UUlkoIiIpOwotICAgICAgICBy
ZXR1cm4gc2tpYTo6UGxhdGZvcm1DYW52YXM6OmNvbmNhdChtYXRyaXgpOworICAgICAgICByZXR1
cm4gU2tDYW52YXM6OmNvbmNhdChtYXRyaXgpOwogICAgIH0KIAogICAgIHZpcnR1YWwgdm9pZCBz
ZXRNYXRyaXgoY29uc3QgU2tNYXRyaXgmIG1hdHJpeCkKICAgICB7CiAgICAgICAgIFdSQVBDQU5W
QVNfTE9HX0VOVFJZKCIiKTsKLSAgICAgICAgc2tpYTo6UGxhdGZvcm1DYW52YXM6OnNldE1hdHJp
eChtYXRyaXgpOworICAgICAgICBTa0NhbnZhczo6c2V0TWF0cml4KG1hdHJpeCk7CiAgICAgfQog
CiAgICAgdmlydHVhbCBib29sIGNsaXBSZWN0KGNvbnN0IFNrUmVjdCYgcmVjdCwgU2tSZWdpb246
Ok9wIG9wKQogICAgIHsKICAgICAgICAgV1JBUENBTlZBU19MT0dfRU5UUlkoIiIpOwotICAgICAg
ICByZXR1cm4gc2tpYTo6UGxhdGZvcm1DYW52YXM6OmNsaXBSZWN0KHJlY3QsIG9wKTsKKyAgICAg
ICAgcmV0dXJuIFNrQ2FudmFzOjpjbGlwUmVjdChyZWN0LCBvcCk7CiAgICAgfQogCiAgICAgdmly
dHVhbCBib29sIGNsaXBQYXRoKGNvbnN0IFNrUGF0aCYgcGF0aCwgU2tSZWdpb246Ok9wIG9wKSAK
ICAgICB7CiAgICAgICAgIFdSQVBDQU5WQVNfTE9HX0VOVFJZKCIiKTsKICAgICAgICAgbV9pc1Nv
bGlkQ29sb3IgPSBmYWxzZTsKLSAgICAgICAgcmV0dXJuIHNraWE6OlBsYXRmb3JtQ2FudmFzOjpj
bGlwUGF0aChwYXRoLCBvcCk7CisgICAgICAgIHJldHVybiBTa0NhbnZhczo6Y2xpcFBhdGgocGF0
aCwgb3ApOwogICAgIH0KIAogICAgIHZpcnR1YWwgYm9vbCBjbGlwUmVnaW9uKGNvbnN0IFNrUmVn
aW9uJiByZWdpb24sIFNrUmVnaW9uOjpPcCBvcCkKICAgICB7CiAgICAgICAgIFdSQVBDQU5WQVNf
TE9HX0VOVFJZKCIiKTsKICAgICAgICAgbV9pc1NvbGlkQ29sb3IgPSBmYWxzZTsKLSAgICAgICAg
cmV0dXJuIHNraWE6OlBsYXRmb3JtQ2FudmFzOjpjbGlwUmVnaW9uKHJlZ2lvbiwgb3ApOworICAg
ICAgICByZXR1cm4gU2tDYW52YXM6OmNsaXBSZWdpb24ocmVnaW9uLCBvcCk7CiAgICAgfQogCiAg
ICAgdmlydHVhbCB2b2lkIGNsZWFyKFNrQ29sb3IgY29sb3IpCkBAIC0xMzAsMTQgKzEzMCwxNCBA
QCBwdWJsaWM6CiAgICAgICAgIFdSQVBDQU5WQVNfTE9HX0VOVFJZKCIiKTsKICAgICAgICAgbV9p
c1NvbGlkQ29sb3IgPSB0cnVlOwogICAgICAgICBtX3NvbGlkQ29sb3IgPSBDb2xvcihjb2xvcik7
Ci0gICAgICAgIHNraWE6OlBsYXRmb3JtQ2FudmFzOjpjbGVhcihjb2xvcik7CisgICAgICAgIFNr
Q2FudmFzOjpjbGVhcihjb2xvcik7CiAgICAgfQogCiAgICAgdmlydHVhbCB2b2lkIGRyYXdQYWlu
dChjb25zdCBTa1BhaW50JiBwYWludCkKICAgICB7CiAgICAgICAgIFdSQVBDQU5WQVNfTE9HX0VO
VFJZKCIiKTsKICAgICAgICAgbV9pc1NvbGlkQ29sb3IgPSBmYWxzZTsKLSAgICAgICAgc2tpYTo6
UGxhdGZvcm1DYW52YXM6OmRyYXdQYWludChwYWludCk7CisgICAgICAgIFNrQ2FudmFzOjpkcmF3
UGFpbnQocGFpbnQpOwogICAgIH0KIAogICAgIHZpcnR1YWwgdm9pZCBkcmF3UG9pbnRzKFBvaW50
TW9kZSBtb2RlLCBzaXplX3QgY291bnQsIGNvbnN0IFNrUG9pbnQgcHRzW10sCkBAIC0xNDUsNyAr
MTQ1LDcgQEAgcHVibGljOgogICAgIHsKICAgICAgICAgV1JBUENBTlZBU19MT0dfRU5UUlkoIiIp
OwogICAgICAgICBtX2lzU29saWRDb2xvciA9IGZhbHNlOwotICAgICAgICBza2lhOjpQbGF0Zm9y
bUNhbnZhczo6ZHJhd1BvaW50cyhtb2RlLCBjb3VudCwgcHRzLCBwYWludCk7CisgICAgICAgIFNr
Q2FudmFzOjpkcmF3UG9pbnRzKG1vZGUsIGNvdW50LCBwdHMsIHBhaW50KTsKICAgICB9CiAKICAg
ICB2aXJ0dWFsIHZvaWQgZHJhd1JlY3QoY29uc3QgU2tSZWN0JiByZWN0LCBjb25zdCBTa1BhaW50
JiBwYWludCkKQEAgLTE2NSwxNCArMTY1LDE0IEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICAg
bV9pc1NvbGlkQ29sb3IgPSBmYWxzZTsKICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICBtX2lz
U29saWRDb2xvciA9IGZhbHNlOwotICAgICAgICBza2lhOjpQbGF0Zm9ybUNhbnZhczo6ZHJhd1Jl
Y3QocmVjdCwgcGFpbnQpOworICAgICAgICBTa0NhbnZhczo6ZHJhd1JlY3QocmVjdCwgcGFpbnQp
OwogICAgIH0KIAogICAgIHZpcnR1YWwgdm9pZCBkcmF3UGF0aChjb25zdCBTa1BhdGgmIHBhdGgs
IGNvbnN0IFNrUGFpbnQmIHBhaW50KQogICAgIHsKICAgICAgICAgV1JBUENBTlZBU19MT0dfRU5U
UlkoIiIpOwogICAgICAgICBtX2lzU29saWRDb2xvciA9IGZhbHNlOwotICAgICAgICBza2lhOjpQ
bGF0Zm9ybUNhbnZhczo6ZHJhd1BhdGgocGF0aCwgcGFpbnQpOworICAgICAgICBTa0NhbnZhczo6
ZHJhd1BhdGgocGF0aCwgcGFpbnQpOwogICAgIH0KIAogICAgIHZpcnR1YWwgdm9pZCBkcmF3Qml0
bWFwKGNvbnN0IFNrQml0bWFwJiBiaXRtYXAsIFNrU2NhbGFyIGxlZnQsCkBAIC0xODAsNyArMTgw
LDcgQEAgcHVibGljOgogICAgIHsKICAgICAgICAgV1JBUENBTlZBU19MT0dfRU5UUlkoIiIpOwog
ICAgICAgICBtX2lzU29saWRDb2xvciA9IGZhbHNlOwotICAgICAgICBza2lhOjpQbGF0Zm9ybUNh
bnZhczo6ZHJhd0JpdG1hcChiaXRtYXAsIGxlZnQsIHRvcCwgcGFpbnQpOworICAgICAgICBTa0Nh
bnZhczo6ZHJhd0JpdG1hcChiaXRtYXAsIGxlZnQsIHRvcCwgcGFpbnQpOwogICAgIH0KIAogICAg
IHZpcnR1YWwgdm9pZCBkcmF3Qml0bWFwUmVjdChjb25zdCBTa0JpdG1hcCYgYml0bWFwLCBjb25z
dCBTa0lSZWN0KiBzcmMsCkBAIC0xODgsNyArMTg4LDcgQEAgcHVibGljOgogICAgIHsKICAgICAg
ICAgV1JBUENBTlZBU19MT0dfRU5UUlkoIiIpOwogICAgICAgICBtX2lzU29saWRDb2xvciA9IGZh
bHNlOwotICAgICAgICBza2lhOjpQbGF0Zm9ybUNhbnZhczo6ZHJhd0JpdG1hcFJlY3QoYml0bWFw
LCBzcmMsIGRzdCwgcGFpbnQpOworICAgICAgICBTa0NhbnZhczo6ZHJhd0JpdG1hcFJlY3QoYml0
bWFwLCBzcmMsIGRzdCwgcGFpbnQpOwogICAgIH0KIAogICAgIHZpcnR1YWwgdm9pZCBkcmF3Qml0
bWFwTWF0cml4KGNvbnN0IFNrQml0bWFwJiBiaXRtYXAsCkBAIC0xOTYsNyArMTk2LDcgQEAgcHVi
bGljOgogICAgIHsKICAgICAgICAgV1JBUENBTlZBU19MT0dfRU5UUlkoIiIpOwogICAgICAgICBt
X2lzU29saWRDb2xvciA9IGZhbHNlOwotICAgICAgICBza2lhOjpQbGF0Zm9ybUNhbnZhczo6ZHJh
d0JpdG1hcE1hdHJpeChiaXRtYXAsIG1hdHJpeCwgcGFpbnQpOworICAgICAgICBTa0NhbnZhczo6
ZHJhd0JpdG1hcE1hdHJpeChiaXRtYXAsIG1hdHJpeCwgcGFpbnQpOwogICAgIH0KIAogICAgIHZp
cnR1YWwgdm9pZCBkcmF3U3ByaXRlKGNvbnN0IFNrQml0bWFwJiBiaXRtYXAsIGludCBsZWZ0LCBp
bnQgdG9wLApAQCAtMjA0LDcgKzIwNCw3IEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIFdSQVBD
QU5WQVNfTE9HX0VOVFJZKCIiKTsKICAgICAgICAgbV9pc1NvbGlkQ29sb3IgPSBmYWxzZTsKLSAg
ICAgICAgc2tpYTo6UGxhdGZvcm1DYW52YXM6OmRyYXdTcHJpdGUoYml0bWFwLCBsZWZ0LCB0b3As
IHBhaW50KTsKKyAgICAgICAgU2tDYW52YXM6OmRyYXdTcHJpdGUoYml0bWFwLCBsZWZ0LCB0b3As
IHBhaW50KTsKICAgICB9CiAKICAgICB2aXJ0dWFsIHZvaWQgZHJhd1RleHQoY29uc3Qgdm9pZCog
dGV4dCwgc2l6ZV90IGJ5dGVMZW5ndGgsIFNrU2NhbGFyIHgsCkBAIC0yMTIsNyArMjEyLDcgQEAg
cHVibGljOgogICAgIHsKICAgICAgICAgV1JBUENBTlZBU19MT0dfRU5UUlkoIiIpOwogICAgICAg
ICBtX2lzU29saWRDb2xvciA9IGZhbHNlOwotICAgICAgICBza2lhOjpQbGF0Zm9ybUNhbnZhczo6
ZHJhd1RleHQodGV4dCwgYnl0ZUxlbmd0aCwgeCwgeSwgcGFpbnQpOworICAgICAgICBTa0NhbnZh
czo6ZHJhd1RleHQodGV4dCwgYnl0ZUxlbmd0aCwgeCwgeSwgcGFpbnQpOwogICAgIH0KIAogICAg
IHZpcnR1YWwgdm9pZCBkcmF3UG9zVGV4dChjb25zdCB2b2lkKiB0ZXh0LCBzaXplX3QgYnl0ZUxl
bmd0aCwKQEAgLTIyMCw3ICsyMjAsNyBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICBXUkFQQ0FO
VkFTX0xPR19FTlRSWSgiIik7CiAgICAgICAgIG1faXNTb2xpZENvbG9yID0gZmFsc2U7Ci0gICAg
ICAgIHNraWE6OlBsYXRmb3JtQ2FudmFzOjpkcmF3UG9zVGV4dCh0ZXh0LCBieXRlTGVuZ3RoLCBw
b3MsIHBhaW50KTsKKyAgICAgICAgU2tDYW52YXM6OmRyYXdQb3NUZXh0KHRleHQsIGJ5dGVMZW5n
dGgsIHBvcywgcGFpbnQpOwogICAgIH0KIAogICAgIHZpcnR1YWwgdm9pZCBkcmF3UG9zVGV4dEgo
Y29uc3Qgdm9pZCogdGV4dCwgc2l6ZV90IGJ5dGVMZW5ndGgsCkBAIC0yMjgsNyArMjI4LDcgQEAg
cHVibGljOgogICAgIHsKICAgICAgICAgV1JBUENBTlZBU19MT0dfRU5UUlkoIiIpOwogICAgICAg
ICBtX2lzU29saWRDb2xvciA9IGZhbHNlOwotICAgICAgICBza2lhOjpQbGF0Zm9ybUNhbnZhczo6
ZHJhd1Bvc1RleHRIKHRleHQsIGJ5dGVMZW5ndGgsIHhwb3MsIGNvbnN0WSwgcGFpbnQpOworICAg
ICAgICBTa0NhbnZhczo6ZHJhd1Bvc1RleHRIKHRleHQsIGJ5dGVMZW5ndGgsIHhwb3MsIGNvbnN0
WSwgcGFpbnQpOwogICAgIH0KIAogICAgIHZpcnR1YWwgdm9pZCBkcmF3VGV4dE9uUGF0aChjb25z
dCB2b2lkKiB0ZXh0LCBzaXplX3QgYnl0ZUxlbmd0aCwKQEAgLTIzNiwxNCArMjM2LDE0IEBAIHB1
YmxpYzoKICAgICB7CiAgICAgICAgIFdSQVBDQU5WQVNfTE9HX0VOVFJZKCIiKTsKICAgICAgICAg
bV9pc1NvbGlkQ29sb3IgPSBmYWxzZTsKLSAgICAgICAgc2tpYTo6UGxhdGZvcm1DYW52YXM6OmRy
YXdUZXh0T25QYXRoKHRleHQsIGJ5dGVMZW5ndGgsIHBhdGgsIG1hdHJpeCwgcGFpbnQpOworICAg
ICAgICBTa0NhbnZhczo6ZHJhd1RleHRPblBhdGgodGV4dCwgYnl0ZUxlbmd0aCwgcGF0aCwgbWF0
cml4LCBwYWludCk7CiAgICAgfQogCiAgICAgdmlydHVhbCB2b2lkIGRyYXdQaWN0dXJlKFNrUGlj
dHVyZSYgcGljdHVyZSkKICAgICB7CiAgICAgICAgIFdSQVBDQU5WQVNfTE9HX0VOVFJZKCIiKTsK
ICAgICAgICAgbV9pc1NvbGlkQ29sb3IgPSBmYWxzZTsKLSAgICAgICAgc2tpYTo6UGxhdGZvcm1D
YW52YXM6OmRyYXdQaWN0dXJlKHBpY3R1cmUpOworICAgICAgICBTa0NhbnZhczo6ZHJhd1BpY3R1
cmUocGljdHVyZSk7CiAgICAgfQogCiAgICAgdmlydHVhbCB2b2lkIGRyYXdWZXJ0aWNlcyhWZXJ0
ZXhNb2RlIG1vZGUsIGludCB2ZXJ0ZXhDb3VudCwKQEAgLTI1MywxNCArMjUzLDE0IEBAIHB1Ymxp
YzoKICAgICB7CiAgICAgICAgIFdSQVBDQU5WQVNfTE9HX0VOVFJZKCIiKTsKICAgICAgICAgbV9p
c1NvbGlkQ29sb3IgPSBmYWxzZTsKLSAgICAgICAgc2tpYTo6UGxhdGZvcm1DYW52YXM6OmRyYXdW
ZXJ0aWNlcyhtb2RlLCB2ZXJ0ZXhDb3VudCwgdmVydGljZXMsIHRleHMsIGNvbG9ycywgeGZlcm1v
ZGUsIGluZGljZXMsIGluZGV4Q291bnQsIHBhaW50KTsKKyAgICAgICAgU2tDYW52YXM6OmRyYXdW
ZXJ0aWNlcyhtb2RlLCB2ZXJ0ZXhDb3VudCwgdmVydGljZXMsIHRleHMsIGNvbG9ycywgeGZlcm1v
ZGUsIGluZGljZXMsIGluZGV4Q291bnQsIHBhaW50KTsKICAgICB9CiAKICAgICB2aXJ0dWFsIHZv
aWQgZHJhd0RhdGEoY29uc3Qgdm9pZCogZGF0YSwgc2l6ZV90IHNpemUpCiAgICAgewogICAgICAg
ICBXUkFQQ0FOVkFTX0xPR19FTlRSWSgiIik7CiAgICAgICAgIG1faXNTb2xpZENvbG9yID0gZmFs
c2U7Ci0gICAgICAgIHNraWE6OlBsYXRmb3JtQ2FudmFzOjpkcmF3RGF0YShkYXRhLCBzaXplKTsK
KyAgICAgICAgU2tDYW52YXM6OmRyYXdEYXRhKGRhdGEsIHNpemUpOwogICAgIH0KIAogcHJpdmF0
ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVy
cnkvTGF5ZXJEYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFja2Jl
cnJ5L0xheWVyRGF0YS5oCmluZGV4IDU3NzQ2ZmEuLjg1NzU3ODYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvTGF5ZXJEYXRhLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9MYXllckRhdGEuaApA
QCAtNTQsNyArNTQsNyBAQCBjbGFzcyBNZWRpYVBsYXllcjsKIAogY2xhc3MgTGF5ZXJEYXRhIHsK
IHB1YmxpYzoKLSAgICBlbnVtIExheWVyVHlwZSB7IExheWVyLCBUcmFuc2Zvcm1MYXllciwgV2Vi
R0xMYXllciB9OworICAgIGVudW0gTGF5ZXJUeXBlIHsgTGF5ZXIsIFRyYW5zZm9ybUxheWVyLCBX
ZWJHTExheWVyLCBDYW52YXNMYXllciB9OwogICAgIGVudW0gRmlsdGVyVHlwZSB7IExpbmVhciwg
TmVhcmVzdCwgVHJpbGluZWFyLCBMYW5jem9zIH07CiAgICAgZW51bSBMYXllclByb2dyYW1TaGFk
ZXIgeyBMYXllclByb2dyYW1TaGFkZXJSR0JBID0gMCwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIExheWVyUHJvZ3JhbVNoYWRlckJHUkEsCkBAIC03NCw5ICs3NCw2IEBAIHB1YmxpYzoK
ICAgICAgICAgLCBtX21lZGlhUGxheWVyKDApCiAjZW5kaWYKICAgICAgICAgLCBtX3RleElEKDAp
Ci0gICAgICAgICwgbV90ZXhXaWR0aCgwKQotICAgICAgICAsIG1fdGV4SGVpZ2h0KDApCi0gICAg
ICAgICwgbV9jYW52YXMoMCkKICAgICAgICAgLCBtX2Zyb250QnVmZmVyTG9jaygwKQogICAgICAg
ICAsIG1fc3VzcGVuZFRpbWUoMCkKICAgICAgICAgLCBtX2RvdWJsZVNpZGVkKHRydWUpCkBAIC0x
MzAsNyArMTI3LDcgQEAgcHVibGljOgogICAgIHVuc2lnbmVkIGdldFRleHR1cmVJRCgpIGNvbnN0
IHsgcmV0dXJuIG1fdGV4SUQ7IH0KICAgICB2b2lkIHNldFRleHR1cmVJRCh1bnNpZ25lZCBpbnQg
dmFsdWUpIHsgbV90ZXhJRCA9IHZhbHVlOyB9CiAKLSAgICBib29sIG5lZWRzVGV4dHVyZSgpIGNv
bnN0IHsgcmV0dXJuIG1fbGF5ZXJUeXBlID09IFdlYkdMTGF5ZXIgPyB0cnVlIDogbV9uZWVkc1Rl
eHR1cmU7IH0KKyAgICBib29sIG5lZWRzVGV4dHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fbGF5ZXJU
eXBlID09IFdlYkdMTGF5ZXIgfHwgbV9sYXllclR5cGUgPT0gQ2FudmFzTGF5ZXIgfHwgbV9uZWVk
c1RleHR1cmU7IH0KIAogICAgIExheWVyUHJvZ3JhbVNoYWRlciBsYXllclByb2dyYW1TaGFkZXIo
KSBjb25zdCB7IHJldHVybiBtX2xheWVyUHJvZ3JhbVNoYWRlcjsgfQogCkBAIC0xNDcsOCArMTQ0
LDYgQEAgcHVibGljOgogICAgIE1lZGlhUGxheWVyKiBtZWRpYVBsYXllcigpIGNvbnN0IHsgcmV0
dXJuIG1fbWVkaWFQbGF5ZXI7IH0KICNlbmRpZgogCi0gICAgSFRNTENhbnZhc0VsZW1lbnQqIGNh
bnZhcygpIGNvbnN0IHsgcmV0dXJuIG1fY2FudmFzOyB9Ci0KICAgICB2b2lkIHJlcGxpY2F0ZShM
YXllckRhdGEgKnRvKSBjb25zdCB7ICp0byA9ICp0aGlzOyB9CiAKICAgICBMYXllclR5cGUgbGF5
ZXJUeXBlKCkgY29uc3QgeyByZXR1cm4gbV9sYXllclR5cGU7IH0KQEAgLTE5MywxMCArMTg4LDYg
QEAgcHJvdGVjdGVkOgogICAgIEludFJlY3QgbV9ob2xlUHVuY2hSZWN0OwogCiAgICAgdW5zaWdu
ZWQgbV90ZXhJRDsKLSAgICB1bnNpZ25lZCBtX3RleFdpZHRoOwotICAgIHVuc2lnbmVkIG1fdGV4
SGVpZ2h0OwotCi0gICAgSFRNTENhbnZhc0VsZW1lbnQqIG1fY2FudmFzOwogCiAgICAgcHRocmVh
ZF9tdXRleF90KiBtX2Zyb250QnVmZmVyTG9jazsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9MYXllclRpbGVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvTGF5ZXJUaWxlci5jcHAKaW5kZXgg
OGUzYjFmZS4uMDJmOGU0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYmxhY2tiZXJyeS9MYXllclRpbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L0xheWVyVGlsZXIuY3BwCkBAIC0xNjgsNyArMTY4LDcg
QEAgdm9pZCBMYXllclRpbGVyOjp1cGRhdGVUZXh0dXJlQ29udGVudHNJZk5lZWRlZChkb3VibGUg
c2NhbGUpCiAgICAgICAgICAgICBpZiAoaW1hZ2UtPmlzQml0bWFwSW1hZ2UoKSkKICAgICAgICAg
ICAgICAgICBpc09wYXF1ZSA9ICFzdGF0aWNfY2FzdDxCaXRtYXBJbWFnZSo+KGltYWdlKS0+Y3Vy
cmVudEZyYW1lSGFzQWxwaGEoKTsKICAgICAgICAgICAgIGlmIChOYXRpdmVJbWFnZVB0ciBuYXRp
dmVJbWFnZSA9IGltYWdlLT5uYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpKSB7Ci0gICAgICAg
ICAgICAgICAgU2tCaXRtYXAgYml0bWFwID0gU2tCaXRtYXAoKm5hdGl2ZUltYWdlKTsKKyAgICAg
ICAgICAgICAgICBTa0JpdG1hcCBiaXRtYXAgPSBTa0JpdG1hcChuYXRpdmVJbWFnZS0+Yml0bWFw
KCkpOwogICAgICAgICAgICAgICAgIGFkZFRleHR1cmVKb2IoVGV4dHVyZUpvYjo6c2V0Q29udGVu
dHMoYml0bWFwLCBpc09wYXF1ZSkpOwogICAgICAgICAgICAgfQogICAgICAgICB9IGVsc2UgewpA
QCAtMjIyLDcgKzIyMiw3IEBAIHZvaWQgTGF5ZXJUaWxlcjo6dXBkYXRlVGV4dHVyZUNvbnRlbnRz
SWZOZWVkZWQoZG91YmxlIHNjYWxlKQogICAgICAgICAvLyBObyBwb2ludCBpbiB0aWxpbmcgYW4g
aW1hZ2UgbGF5ZXIsIHRoZSBpbWFnZSBpcyBhbHJlYWR5IHN0b3JlZCBhcyBhbiBTa0JpdG1hcAog
ICAgICAgICBOYXRpdmVJbWFnZVB0ciBuYXRpdmVJbWFnZSA9IG1fbGF5ZXItPmNvbnRlbnRzKCkt
Pm5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCk7CiAgICAgICAgIGlmIChuYXRpdmVJbWFnZSkg
ewotICAgICAgICAgICAgU2tCaXRtYXAgYml0bWFwID0gU2tCaXRtYXAoKm5hdGl2ZUltYWdlKTsK
KyAgICAgICAgICAgIFNrQml0bWFwIGJpdG1hcCA9IFNrQml0bWFwKG5hdGl2ZUltYWdlLT5iaXRt
YXAoKSk7CiAgICAgICAgICAgICBhZGRUZXh0dXJlSm9iKFRleHR1cmVKb2I6OnNldENvbnRlbnRz
KGJpdG1hcCwgaXNPcGFxdWUpKTsKICAgICAgICAgfQogICAgICAgICByZXR1cm47CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L0xheWVyV2Vi
S2l0VGhyZWFkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVy
cnkvTGF5ZXJXZWJLaXRUaHJlYWQuY3BwCmluZGV4IDZjYWRmMzUuLjk5ZDdhMDcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvTGF5ZXJXZWJL
aXRUaHJlYWQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2JsYWNr
YmVycnkvTGF5ZXJXZWJLaXRUaHJlYWQuY3BwCkBAIC0xMDgsNyArMTA4LDcgQEAgU2tCaXRtYXAg
TGF5ZXJXZWJLaXRUaHJlYWQ6OnBhaW50Q29udGVudHMoY29uc3QgSW50UmVjdCYgY29udGVudHNS
ZWN0LCBkb3VibGUgc2MKICAgICBpZiAoZHJhd3NDb250ZW50KCkpIHsgLy8gTGF5ZXIgY29udGVu
dHMgbXVzdCBiZSBkcmF3biBpbnRvIGEgY2FudmFzLgogICAgICAgICBJbnRSZWN0IHVudHJhbnNm
b3JtZWRDb250ZW50c1JlY3QgPSBjb250ZW50c1JlY3Q7CiAKLSAgICAgICAgY2FudmFzID0gYWRv
cHRQdHIobmV3IEluc3RydW1lbnRlZFBsYXRmb3JtQ2FudmFzKGNvbnRlbnRzUmVjdC53aWR0aCgp
LCBjb250ZW50c1JlY3QuaGVpZ2h0KCksIGZhbHNlLCAwKSk7CisgICAgICAgIGNhbnZhcyA9IGFk
b3B0UHRyKG5ldyBJbnN0cnVtZW50ZWRQbGF0Zm9ybUNhbnZhcyhjb250ZW50c1JlY3Qud2lkdGgo
KSwgY29udGVudHNSZWN0LmhlaWdodCgpKSk7CiAgICAgICAgIFBsYXRmb3JtQ29udGV4dFNraWEg
c2tpYUNvbnRleHQoY2FudmFzLmdldCgpKTsKIAogICAgICAgICBHcmFwaGljc0NvbnRleHQgZ3Jh
cGhpY3NDb250ZXh0KCZza2lhQ29udGV4dCk7CkBAIC0xOTEsNyArMTkxLDcgQEAgdm9pZCBMYXll
cldlYktpdFRocmVhZDo6c2V0RHJhd2FibGUoYm9vbCBpc0RyYXdhYmxlKQogCiAgICAgbV9pc0Ry
YXdhYmxlID0gaXNEcmF3YWJsZTsKIAotICAgIHNldE5lZWRzVGV4dHVyZShtX2lzRHJhd2FibGUg
JiYgKGRyYXdzQ29udGVudCgpIHx8IGNvbnRlbnRzKCkgfHwgcGx1Z2luVmlldygpIHx8IG1lZGlh
UGxheWVyKCkgfHwgY2FudmFzKCkpKTsKKyAgICBzZXROZWVkc1RleHR1cmUobV9pc0RyYXdhYmxl
ICYmIChkcmF3c0NvbnRlbnQoKSB8fCBjb250ZW50cygpIHx8IHBsdWdpblZpZXcoKSB8fCBtZWRp
YVBsYXllcigpIHx8IG1fdGV4SUQpKTsKICAgICBzZXROZWVkc0NvbW1pdCgpOwogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L01lZGlh
UGxheWVyUHJpdmF0ZUJsYWNrQmVycnkuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYmxhY2tiZXJyeS9NZWRpYVBsYXllclByaXZhdGVCbGFja0JlcnJ5LmNwcAppbmRleCAx
ZDhiZDNhLi4wYWI5ODc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9ibGFja2JlcnJ5L01lZGlhUGxheWVyUHJpdmF0ZUJsYWNrQmVycnkuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvTWVkaWFQbGF5ZXJQcml2
YXRlQmxhY2tCZXJyeS5jcHAKQEAgLTcwOSwxNSArNzA5LDE1IEBAIHN0YXRpYyB2b2lkIGxvYWRC
dWZmZXJpbmdJbWFnZURhdGEoKQogICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIGxvYWRl
ZCA9IHRydWU7Ci0gICAgICAgIG5hdGl2ZUltYWdlLT5sb2NrUGl4ZWxzKCk7CisgICAgICAgIG5h
dGl2ZUltYWdlLT5iaXRtYXAoKS5sb2NrUGl4ZWxzKCk7CiAKLSAgICAgICAgaW50IGJ1ZlNpemUg
PSBuYXRpdmVJbWFnZS0+d2lkdGgoKSAqIG5hdGl2ZUltYWdlLT5oZWlnaHQoKSAqIDQ7Ci0gICAg
ICAgIHNfYnVmZmVyaW5nSW1hZ2VXaWR0aCA9IG5hdGl2ZUltYWdlLT53aWR0aCgpOwotICAgICAg
ICBzX2J1ZmZlcmluZ0ltYWdlSGVpZ2h0ID0gbmF0aXZlSW1hZ2UtPmhlaWdodCgpOworICAgICAg
ICBpbnQgYnVmU2l6ZSA9IG5hdGl2ZUltYWdlLT5iaXRtYXAoKS53aWR0aCgpICogbmF0aXZlSW1h
Z2UtPmJpdG1hcCgpLmhlaWdodCgpICogNDsKKyAgICAgICAgc19idWZmZXJpbmdJbWFnZVdpZHRo
ID0gbmF0aXZlSW1hZ2UtPmJpdG1hcCgpLndpZHRoKCk7CisgICAgICAgIHNfYnVmZmVyaW5nSW1h
Z2VIZWlnaHQgPSBuYXRpdmVJbWFnZS0+Yml0bWFwKCkuaGVpZ2h0KCk7CiAgICAgICAgIHNfYnVm
ZmVyaW5nSW1hZ2VEYXRhID0gc3RhdGljX2Nhc3Q8Y2hhcio+KG1hbGxvYyhidWZTaXplKSk7Ci0g
ICAgICAgIG1lbWNweShzX2J1ZmZlcmluZ0ltYWdlRGF0YSwgbmF0aXZlSW1hZ2UtPmdldFBpeGVs
cygpLCBidWZTaXplKTsKKyAgICAgICAgbWVtY3B5KHNfYnVmZmVyaW5nSW1hZ2VEYXRhLCBuYXRp
dmVJbWFnZS0+Yml0bWFwKCkuZ2V0UGl4ZWxzKCksIGJ1ZlNpemUpOwogCi0gICAgICAgIG5hdGl2
ZUltYWdlLT51bmxvY2tQaXhlbHMoKTsKKyAgICAgICAgbmF0aXZlSW1hZ2UtPmJpdG1hcCgpLnVu
bG9ja1BpeGVscygpOwogICAgICAgICBidWZmZXJpbmdJY29uLT5kZXJlZigpOwogICAgIH0KIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkv
c2tpYS9JbWFnZUJ1ZmZlckRhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2JsYWNrYmVycnkvc2tpYS9JbWFnZUJ1ZmZlckRhdGEuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggNDA5MTk3ZS4uMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9ibGFja2JlcnJ5L3NraWEvSW1hZ2VCdWZmZXJEYXRhLmgKKysrIC9kZXYvbnVsbApA
QCAtMSw1MyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChjKSAyMDA4LCAyMDA5LCBHb29nbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0IChjKSAyMDExLCBSZXNlYXJj
aCBJbiBNb3Rpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMgYXJlCi0gKiBtZXQ6Ci0gKgotICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqICAg
ICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUKLSAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIKLSAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSAqIGRpc3RyaWJ1dGlvbi4KLSAqICAgICAq
IE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSAq
IGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMg
ZGVyaXZlZCBmcm9tCi0gKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3Jp
dHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhF
IENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSAqICJBUyBJUyIgQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1J
VEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IKLSAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0gKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSAqIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSAq
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLAotICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0gKiBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBJbWFnZUJ1ZmZlckRhdGFfaAot
I2RlZmluZSBJbWFnZUJ1ZmZlckRhdGFfaAotCi0jaW5jbHVkZSAiQmxhY2tCZXJyeVBsYXRmb3Jt
R3JhcGhpY3MuaCIKLSNpbmNsdWRlICJQbGF0Zm9ybUNvbnRleHRTa2lhLmgiCi0KLSNpbmNsdWRl
ICJza2lhL2V4dC9wbGF0Zm9ybV9jYW52YXMuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1j
bGFzcyBJbWFnZUJ1ZmZlckRhdGEgewotcHVibGljOgotICAgIEltYWdlQnVmZmVyRGF0YShjb25z
dCBJbnRTaXplJik7Ci0KLSAgICBPd25QdHI8U2tDYW52YXM+IG1fY2FudmFzOwotICAgIFBsYXRm
b3JtQ29udGV4dFNraWEgbV9wbGF0Zm9ybUNvbnRleHQ7Ci0gICAgQmxhY2tCZXJyeTo6UGxhdGZv
cm06OkdyYXBoaWNzOjpCdWZmZXIqIG1fYnVmZmVyOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQotCi0jZW5kaWYgLy8gSW1hZ2VCdWZmZXJEYXRhX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvc2tpYS9JbWFnZUJ1ZmZlckRhdGFT
a2lhLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L3NraWEv
SW1hZ2VCdWZmZXJEYXRhU2tpYS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAu
LjUzODlhOTEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9ibGFja2JlcnJ5L3NraWEvSW1hZ2VCdWZmZXJEYXRhU2tpYS5oCkBAIC0wLDAgKzEsNTcg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKGMpIDIwMDgsIDIwMDksIEdvb2dsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKGMpIDIwMTEsIFJlc2VhcmNoIEluIE1vdGlvbi4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUK
KyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJp
Z2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUg
bmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3Jz
IG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20K
KyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Np
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhP
TERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICog
QSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRI
RSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
CisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaWZuZGVmIEltYWdlQnVmZmVyRGF0YV9oCisjZGVmaW5lIEltYWdl
QnVmZmVyRGF0YV9oCisKKyNpbmNsdWRlICJCbGFja0JlcnJ5UGxhdGZvcm1HcmFwaGljcy5oIgor
I2luY2x1ZGUgIlBsYXRmb3JtQ29udGV4dFNraWEuaCIKKyNpZiBVU0UoQUNDRUxFUkFURURfQ09N
UE9TSVRJTkcpCisjaW5jbHVkZSAiTGF5ZXJXZWJLaXRUaHJlYWQuaCIKKyNlbmRpZgorCituYW1l
c3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIEltYWdlQnVmZmVyRGF0YSB7CitwdWJsaWM6CisgICAg
SW1hZ2VCdWZmZXJEYXRhKGNvbnN0IEludFNpemUmKTsKKworICAgIE93blB0cjxTa0NhbnZhcz4g
bV9jYW52YXM7CisgICAgUGxhdGZvcm1Db250ZXh0U2tpYSBtX3BsYXRmb3JtQ29udGV4dDsKKyAg
ICBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6R3JhcGhpY3M6OkJ1ZmZlciogbV9idWZmZXI7CisjaWYg
VVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQorICAgIFJlZlB0cjxMYXllcldlYktpdFRocmVh
ZD4gbV9wbGF0Zm9ybUxheWVyOworI2VuZGlmCit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CisKKyNlbmRpZiAvLyBJbWFnZUJ1ZmZlckRhdGFfaAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>133839</attachid>
            <date>2012-03-26 09:59:37 -0700</date>
            <delta_ts>2012-03-26 10:43:20 -0700</delta_ts>
            <desc>Fixed style</desc>
            <filename>up.diff</filename>
            <type>text/plain</type>
            <size>29456</size>
            <attacher name="Filip Spacek">fspacek</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCAyNzdjMTNmLi5iYjA2M2IzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNjMg
QEAKKzIwMTItMDMtMjYgIEZpbGlwIFNwYWNlayAgPGZzcGFjZWtAcmltLmNvbT4KKworICAgICAg
ICBbQmxhY2tCZXJyeV0gQWNjZWxlcmF0ZWQgY29tcG9zaXRpbmcgdXBkYXRlcworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODIwNTgKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2JsYWNrYmVycnkvQ2FudmFzTGF5ZXJXZWJLaXRUaHJlYWQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Q2FudmFzTGF5ZXJXZWJLaXRUaHJlYWQ6OkNhbnZhc0xheWVyV2ViS2l0VGhyZWFkKToKKyAg
ICAgICAgKFdlYkNvcmU6OkNhbnZhc0xheWVyV2ViS2l0VGhyZWFkOjp+Q2FudmFzTGF5ZXJXZWJL
aXRUaHJlYWQpOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzTGF5ZXJXZWJLaXRUaHJlYWQ6OnNl
dERldmljZSk6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNMYXllcldlYktpdFRocmVhZDo6dXBk
YXRlVGV4dHVyZUNvbnRlbnRzSWZOZWVkZWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2JsYWNrYmVycnkvQ2FudmFzTGF5ZXJXZWJLaXRUaHJlYWQuaDoKKyAgICAgICAgKFdlYkNvcmU6
OkNhbnZhc0xheWVyV2ViS2l0VGhyZWFkOjpjcmVhdGUpOgorICAgICAgICAoQ2FudmFzTGF5ZXJX
ZWJLaXRUaHJlYWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvSW5z
dHJ1bWVudGVkUGxhdGZvcm1DYW52YXMuaDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3RydW1lbnRl
ZFBsYXRmb3JtQ2FudmFzOjpJbnN0cnVtZW50ZWRQbGF0Zm9ybUNhbnZhcyk6CisgICAgICAgIChX
ZWJDb3JlOjpJbnN0cnVtZW50ZWRQbGF0Zm9ybUNhbnZhczo6c2F2ZSk6CisgICAgICAgIChXZWJD
b3JlOjpJbnN0cnVtZW50ZWRQbGF0Zm9ybUNhbnZhczo6c2F2ZUxheWVyKToKKyAgICAgICAgKFdl
YkNvcmU6Okluc3RydW1lbnRlZFBsYXRmb3JtQ2FudmFzOjpyZXN0b3JlKToKKyAgICAgICAgKFdl
YkNvcmU6Okluc3RydW1lbnRlZFBsYXRmb3JtQ2FudmFzOjp0cmFuc2xhdGUpOgorICAgICAgICAo
V2ViQ29yZTo6SW5zdHJ1bWVudGVkUGxhdGZvcm1DYW52YXM6OnNjYWxlKToKKyAgICAgICAgKFdl
YkNvcmU6Okluc3RydW1lbnRlZFBsYXRmb3JtQ2FudmFzOjpyb3RhdGUpOgorICAgICAgICAoV2Vi
Q29yZTo6SW5zdHJ1bWVudGVkUGxhdGZvcm1DYW52YXM6OnNrZXcpOgorICAgICAgICAoV2ViQ29y
ZTo6SW5zdHJ1bWVudGVkUGxhdGZvcm1DYW52YXM6OmNvbmNhdCk6CisgICAgICAgIChXZWJDb3Jl
OjpJbnN0cnVtZW50ZWRQbGF0Zm9ybUNhbnZhczo6c2V0TWF0cml4KToKKyAgICAgICAgKFdlYkNv
cmU6Okluc3RydW1lbnRlZFBsYXRmb3JtQ2FudmFzOjpjbGlwUmVjdCk6CisgICAgICAgIChXZWJD
b3JlOjpJbnN0cnVtZW50ZWRQbGF0Zm9ybUNhbnZhczo6Y2xpcFBhdGgpOgorICAgICAgICAoV2Vi
Q29yZTo6SW5zdHJ1bWVudGVkUGxhdGZvcm1DYW52YXM6OmNsaXBSZWdpb24pOgorICAgICAgICAo
V2ViQ29yZTo6SW5zdHJ1bWVudGVkUGxhdGZvcm1DYW52YXM6OmNsZWFyKToKKyAgICAgICAgKFdl
YkNvcmU6Okluc3RydW1lbnRlZFBsYXRmb3JtQ2FudmFzOjpkcmF3UGFpbnQpOgorICAgICAgICAo
V2ViQ29yZTo6SW5zdHJ1bWVudGVkUGxhdGZvcm1DYW52YXM6OmRyYXdQb2ludHMpOgorICAgICAg
ICAoV2ViQ29yZTo6SW5zdHJ1bWVudGVkUGxhdGZvcm1DYW52YXM6OmRyYXdSZWN0KToKKyAgICAg
ICAgKFdlYkNvcmU6Okluc3RydW1lbnRlZFBsYXRmb3JtQ2FudmFzOjpkcmF3UGF0aCk6CisgICAg
ICAgIChXZWJDb3JlOjpJbnN0cnVtZW50ZWRQbGF0Zm9ybUNhbnZhczo6ZHJhd0JpdG1hcCk6Cisg
ICAgICAgIChXZWJDb3JlOjpJbnN0cnVtZW50ZWRQbGF0Zm9ybUNhbnZhczo6ZHJhd0JpdG1hcFJl
Y3QpOgorICAgICAgICAoV2ViQ29yZTo6SW5zdHJ1bWVudGVkUGxhdGZvcm1DYW52YXM6OmRyYXdC
aXRtYXBNYXRyaXgpOgorICAgICAgICAoV2ViQ29yZTo6SW5zdHJ1bWVudGVkUGxhdGZvcm1DYW52
YXM6OmRyYXdTcHJpdGUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zdHJ1bWVudGVkUGxhdGZvcm1D
YW52YXM6OmRyYXdUZXh0KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3RydW1lbnRlZFBsYXRmb3Jt
Q2FudmFzOjpkcmF3UG9zVGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpJbnN0cnVtZW50ZWRQbGF0
Zm9ybUNhbnZhczo6ZHJhd1Bvc1RleHRIKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3RydW1lbnRl
ZFBsYXRmb3JtQ2FudmFzOjpkcmF3VGV4dE9uUGF0aCk6CisgICAgICAgIChXZWJDb3JlOjpJbnN0
cnVtZW50ZWRQbGF0Zm9ybUNhbnZhczo6ZHJhd1BpY3R1cmUpOgorICAgICAgICAoV2ViQ29yZTo6
SW5zdHJ1bWVudGVkUGxhdGZvcm1DYW52YXM6OmRyYXdWZXJ0aWNlcyk6CisgICAgICAgIChXZWJD
b3JlOjpJbnN0cnVtZW50ZWRQbGF0Zm9ybUNhbnZhczo6ZHJhd0RhdGEpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvTGF5ZXJEYXRhLmg6CisgICAgICAgIChXZWJDb3Jl
OjpMYXllckRhdGE6OkxheWVyRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpMYXllckRhdGE6Om5l
ZWRzVGV4dHVyZSk6CisgICAgICAgIChMYXllckRhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2JsYWNrYmVycnkvTGF5ZXJUaWxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMYXll
clRpbGVyOjp1cGRhdGVUZXh0dXJlQ29udGVudHNJZk5lZWRlZCk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9MYXllcldlYktpdFRocmVhZC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpMYXllcldlYktpdFRocmVhZDo6cGFpbnRDb250ZW50cyk6CisgICAgICAgIChXZWJD
b3JlOjpMYXllcldlYktpdFRocmVhZDo6c2V0RHJhd2FibGUpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2JsYWNrYmVycnkvTWVkaWFQbGF5ZXJQcml2YXRlQmxhY2tCZXJyeS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpsb2FkQnVmZmVyaW5nSW1hZ2VEYXRhKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L3NraWEvSW1hZ2VCdWZmZXJEYXRhU2tpYS5oOiBSZW5h
bWVkIGZyb20gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9za2lh
L0ltYWdlQnVmZmVyRGF0YS5oLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChJbWFnZUJ1
ZmZlckRhdGEpOgorCiAyMDEyLTAzLTIyICBKb25hdGhhbiBEb25nICA8am9uYXRoYW4uZG9uZ0B0
b3JjaG1vYmlsZS5jb20uY24+CiAKICAgICAgICAgW0JsYWNrQmVycnldIGh0dHAgYXV0aGVudGlj
YXRlIGRpYWxvZyBwb3B1cCBvbmx5IG9uY2Ugbm8gbWF0dGVyIGF1dGhlbnRpY2F0aW9uIHBhc3Mg
b3IgZmFpbApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYmxh
Y2tiZXJyeS9DYW52YXNMYXllcldlYktpdFRocmVhZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L0NhbnZhc0xheWVyV2ViS2l0VGhyZWFkLmNwcAppbmRl
eCA0ZDIwMzI2Li41ZjZhNDg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9ibGFja2JlcnJ5L0NhbnZhc0xheWVyV2ViS2l0VGhyZWFkLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L0NhbnZhc0xheWVyV2ViS2l0
VGhyZWFkLmNwcApAQCAtMTksMzYgKzE5LDMxIEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5j
bHVkZSAiQ2FudmFzTGF5ZXJXZWJLaXRUaHJlYWQuaCIKIAotI2lmIFVTRShBQ0NFTEVSQVRFRF9D
T01QT1NJVElORykgJiYgRU5BQkxFKFNLSUFfR1BVX0NBTlZBUykKKyNpZiBVU0UoQUNDRUxFUkFU
RURfQ09NUE9TSVRJTkcpICYmIEVOQUJMRShBQ0NFTEVSQVRFRF8yRF9DQU5WQVMpCiAKLSNpbmNs
dWRlICJIVE1MQ2FudmFzRWxlbWVudC5oIgotI2luY2x1ZGUgIlBsYXRmb3JtQ29udGV4dFNraWEu
aCIKLQotI2luY2x1ZGUgPEJsYWNrQmVycnlQbGF0Zm9ybUdyYXBoaWNzLmg+CisjaW5jbHVkZSAi
U2hhcmVkR3JhcGhpY3NDb250ZXh0M0QuaCIKICNpbmNsdWRlIDxHTEVTMi9nbDIuaD4KLSNpbmNs
dWRlIDxHckdMVGV4dHVyZS5oPgogI2luY2x1ZGUgPFNrR3B1RGV2aWNlLmg+CiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAotQ2FudmFzTGF5ZXJXZWJLaXRUaHJlYWQ6OkNhbnZhc0xheWVyV2ViS2l0
VGhyZWFkKEhUTUxDYW52YXNFbGVtZW50KiBjYW52YXMpCi0gICAgOiBMYXllcldlYktpdFRocmVh
ZChMYXllciwgMCkKK0NhbnZhc0xheWVyV2ViS2l0VGhyZWFkOjpDYW52YXNMYXllcldlYktpdFRo
cmVhZChTa0dwdURldmljZSogZGV2aWNlKQorICAgIDogTGF5ZXJXZWJLaXRUaHJlYWQoQ2FudmFz
TGF5ZXIsIDApCiB7Ci0gICAgc2V0Q2FudmFzKGNhbnZhcyk7CisgICAgc2V0RGV2aWNlKGRldmlj
ZSk7CiB9CiAKIENhbnZhc0xheWVyV2ViS2l0VGhyZWFkOjp+Q2FudmFzTGF5ZXJXZWJLaXRUaHJl
YWQoKQogewogICAgIGlmIChtX3RleElEKSB7Ci0gICAgICAgIEJsYWNrQmVycnk6OlBsYXRmb3Jt
OjpHcmFwaGljczo6bWFrZVNoYXJlZFJlc291cmNlQ29udGV4dEN1cnJlbnQoQmxhY2tCZXJyeTo6
UGxhdGZvcm06OkdyYXBoaWNzOjpHTEVTMik7CisgICAgICAgIFNoYXJlZEdyYXBoaWNzQ29udGV4
dDNEOjpnZXQoKS0+bWFrZUNvbnRleHRDdXJyZW50KCk7CiAgICAgICAgIGdsRGVsZXRlVGV4dHVy
ZXMoMSwgJm1fdGV4SUQpOwogICAgIH0KIH0KIAotdm9pZCBDYW52YXNMYXllcldlYktpdFRocmVh
ZDo6c2V0Q2FudmFzKEhUTUxDYW52YXNFbGVtZW50KiBjYW52YXMpCit2b2lkIENhbnZhc0xheWVy
V2ViS2l0VGhyZWFkOjpzZXREZXZpY2UoU2tHcHVEZXZpY2UqIGRldmljZSkKIHsKLSAgICBtX2Nh
bnZhcyA9IGNhbnZhczsKLSAgICBzZXROZWVkc1RleHR1cmUoaXNEcmF3YWJsZSgpICYmIGNhbnZh
cyk7CisgICAgbV9kZXZpY2UgPSBkZXZpY2U7CiAgICAgc2V0TGF5ZXJQcm9ncmFtU2hhZGVyKExh
eWVyUHJvZ3JhbVNoYWRlclJHQkEpOwogICAgIHNldE5lZWRzRGlzcGxheSgpOwogfQpAQCAtNjEs
MjEgKzU2LDExIEBAIHZvaWQgQ2FudmFzTGF5ZXJXZWJLaXRUaHJlYWQ6OnNldE5lZWRzRGlzcGxh
eSgpCiAKIHZvaWQgQ2FudmFzTGF5ZXJXZWJLaXRUaHJlYWQ6OnVwZGF0ZVRleHR1cmVDb250ZW50
c0lmTmVlZGVkKCkKIHsKLSAgICBpZiAoIW1fbmVlZHNEaXNwbGF5KQorICAgIGlmICghbV9uZWVk
c0Rpc3BsYXkgfHwgIW1fZGV2aWNlKQogICAgICAgICByZXR1cm47CiAKICAgICBtX25lZWRzRGlz
cGxheSA9IGZhbHNlOwotCi0gICAgaWYgKCFtX2NhbnZhcyB8fCAhbV9jYW52YXMtPmRyYXdpbmdD
b250ZXh0KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIFNrR3B1RGV2aWNlKiBncHVEZXZpY2Ug
PSBzdGF0aWNfY2FzdDxTa0dwdURldmljZSo+KG1fY2FudmFzLT5kcmF3aW5nQ29udGV4dCgpLT5w
bGF0Zm9ybUNvbnRleHQoKS0+Y2FudmFzKCktPmdldERldmljZSgpKTsKLSAgICBncHVEZXZpY2Ut
Pm1ha2VSZW5kZXJUYXJnZXRDdXJyZW50KCk7Ci0gICAgLy8gV2Uga25vdyB0aGlzIGlzIGEgR3JH
TFRleHR1cmUKLSAgICBpZiAoR3JHTFRleHR1cmUqIGRldmljZVRleHR1cmUgPSAoR3JHTFRleHR1
cmUqKWdwdURldmljZS0+YWNjZXNzVGV4dHVyZSgpKSB7Ci0gICAgICAgIG1fdGV4V2lkdGggPSBk
ZXZpY2VUZXh0dXJlLT5hbGxvY1dpZHRoKCk7Ci0gICAgICAgIG1fdGV4SGVpZ2h0ID0gZGV2aWNl
VGV4dHVyZS0+YWxsb2NIZWlnaHQoKTsKLSAgICB9CisgICAgbV9kZXZpY2UtPm1ha2VSZW5kZXJU
YXJnZXRDdXJyZW50KCk7CiAKICAgICBHTGludCBwcmV2aW91c1RleHR1cmU7CiAgICAgZ2xHZXRJ
bnRlZ2VydihHTF9URVhUVVJFX0JJTkRJTkdfMkQsICZwcmV2aW91c1RleHR1cmUpOwpAQCAtODcs
MTggKzcyLDE4IEBAIHZvaWQgQ2FudmFzTGF5ZXJXZWJLaXRUaHJlYWQ6OnVwZGF0ZVRleHR1cmVD
b250ZW50c0lmTmVlZGVkKCkKICAgICAgICAgZ2xUZXhQYXJhbWV0ZXJmKEdMX1RFWFRVUkVfMkQs
IEdMX1RFWFRVUkVfTUFHX0ZJTFRFUiwgR0xfTElORUFSKTsKICAgICAgICAgZ2xUZXhQYXJhbWV0
ZXJmKEdMX1RFWFRVUkVfMkQsIEdMX1RFWFRVUkVfV1JBUF9TLCBHTF9DTEFNUF9UT19FREdFKTsK
ICAgICAgICAgZ2xUZXhQYXJhbWV0ZXJmKEdMX1RFWFRVUkVfMkQsIEdMX1RFWFRVUkVfV1JBUF9U
LCBHTF9DTEFNUF9UT19FREdFKTsKLSAgICAgICAgZ2xUZXhJbWFnZTJEKEdMX1RFWFRVUkVfMkQs
IDAsIEdMX1JHQkEsIG1fY2FudmFzLT53aWR0aCgpLCBtX2NhbnZhcy0+aGVpZ2h0KCksIDAsIEdM
X1JHQkEsIEdMX1VOU0lHTkVEX0JZVEUsIDApOworICAgICAgICBnbFRleEltYWdlMkQoR0xfVEVY
VFVSRV8yRCwgMCwgR0xfUkdCQSwgbV9kZXZpY2UtPndpZHRoKCksIG1fZGV2aWNlLT5oZWlnaHQo
KSwgMCwgR0xfUkdCQSwgR0xfVU5TSUdORURfQllURSwgMCk7CiAKICAgICAgICAgY3JlYXRlRnJv
bnRCdWZmZXJMb2NrKCk7CiAgICAgfQogCiAgICAgcHRocmVhZF9tdXRleF9sb2NrKG1fZnJvbnRC
dWZmZXJMb2NrKTsKICAgICBnbEJpbmRUZXh0dXJlKEdMX1RFWFRVUkVfMkQsIG1fdGV4SUQpOwot
ICAgIGdsQ29weVRleEltYWdlMkQoR0xfVEVYVFVSRV8yRCwgMCwgR0xfUkdCQSwgMCwgMCwgbV90
ZXhXaWR0aCwgbV90ZXhIZWlnaHQsIDApOworICAgIGdsQ29weVRleEltYWdlMkQoR0xfVEVYVFVS
RV8yRCwgMCwgR0xfUkdCQSwgMCwgMCwgbV9kZXZpY2UtPndpZHRoKCksIG1fZGV2aWNlLT5oZWln
aHQoKSwgMCk7CiAgICAgZ2xCaW5kVGV4dHVyZShHTF9URVhUVVJFXzJELCBwcmV2aW91c1RleHR1
cmUpOwogICAgIHB0aHJlYWRfbXV0ZXhfdW5sb2NrKG1fZnJvbnRCdWZmZXJMb2NrKTsKIH0KIAog
fQogCi0jZW5kaWYgLy8gVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKSAmJiBFTkFCTEUoU0tJ
QV9HUFVfQ0FOVkFTKQorI2VuZGlmIC8vIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykgJiYg
RU5BQkxFKEFDQ0VMRVJBVEVEXzJEX0NBTlZBUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvQ2FudmFzTGF5ZXJXZWJLaXRUaHJlYWQuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvQ2FudmFzTGF5ZXJX
ZWJLaXRUaHJlYWQuaAppbmRleCA5YTczMWNlLi5lYWM2YjgyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L0NhbnZhc0xheWVyV2ViS2l0VGhy
ZWFkLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9D
YW52YXNMYXllcldlYktpdFRocmVhZC5oCkBAIC0xOSwyNCArMTksMjYgQEAKICNpZm5kZWYgQ2Fu
dmFzTGF5ZXJXZWJLaXRUaHJlYWRfaAogI2RlZmluZSBDYW52YXNMYXllcldlYktpdFRocmVhZF9o
CiAKLSNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpICYmIEVOQUJMRShTS0lBX0dQVV9D
QU5WQVMpCisjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKSAmJiBFTkFCTEUoQUNDRUxF
UkFURURfMkRfQ0FOVkFTKQogCiAjaW5jbHVkZSAiTGF5ZXJXZWJLaXRUaHJlYWQuaCIKIAorY2xh
c3MgU2tHcHVEZXZpY2U7CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgSFRNTENhbnZh
c0VsZW1lbnQ7CiAKIGNsYXNzIENhbnZhc0xheWVyV2ViS2l0VGhyZWFkIDogcHVibGljIExheWVy
V2ViS2l0VGhyZWFkIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxDYW52YXNMYXll
cldlYktpdFRocmVhZD4gY3JlYXRlKEhUTUxDYW52YXNFbGVtZW50KiBjYW52YXMpCisgICAgc3Rh
dGljIFBhc3NSZWZQdHI8Q2FudmFzTGF5ZXJXZWJLaXRUaHJlYWQ+IGNyZWF0ZShTa0dwdURldmlj
ZSogZGV2aWNlKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBDYW52YXNMYXll
cldlYktpdFRocmVhZChjYW52YXMpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBDYW52
YXNMYXllcldlYktpdFRocmVhZChkZXZpY2UpKTsKICAgICB9CiAKICAgICB2aXJ0dWFsIH5DYW52
YXNMYXllcldlYktpdFRocmVhZCgpOwogCi0gICAgdm9pZCBzZXRDYW52YXMoSFRNTENhbnZhc0Vs
ZW1lbnQqKTsKKyAgICB2b2lkIHNldERldmljZShTa0dwdURldmljZSopOwogCiAgICAgdmlydHVh
bCB2b2lkIHNldE5lZWRzRGlzcGxheSgpOwogCkBAIC00NCwxMiArNDYsMTMgQEAgcHJvdGVjdGVk
OgogICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVUZXh0dXJlQ29udGVudHNJZk5lZWRlZCgpOwogCiBw
cml2YXRlOgotICAgIENhbnZhc0xheWVyV2ViS2l0VGhyZWFkKEhUTUxDYW52YXNFbGVtZW50Kik7
CisgICAgQ2FudmFzTGF5ZXJXZWJLaXRUaHJlYWQoU2tHcHVEZXZpY2UqKTsKICAgICBib29sIG1f
bmVlZHNEaXNwbGF5OworICAgIFNrR3B1RGV2aWNlKiBtX2RldmljZTsKIH07CiAKIH0KIAotI2Vu
ZGlmIC8vIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykgJiYgRU5BQkxFKFNLSUFfR1BVX0NB
TlZBUykKKyNlbmRpZiAvLyBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpICYmIEVOQUJMRShB
Q0NFTEVSQVRFRF8yRF9DQU5WQVMpCiAKICNlbmRpZiAvLyBDYW52YXNMYXllcldlYktpdFRocmVh
ZF9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFja2Jl
cnJ5L0dyYXBoaWNzQ29udGV4dDNEQmxhY2tCZXJyeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L0dyYXBoaWNzQ29udGV4dDNEQmxhY2tCZXJyeS5jcHAK
aW5kZXggMmI0MTAxNS4uYTljYTVkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9HcmFwaGljc0NvbnRleHQzREJsYWNrQmVycnkuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvR3JhcGhpY3ND
b250ZXh0M0RCbGFja0JlcnJ5LmNwcApAQCAtMTk1LDE1ICsxOTUsMTYgQEAgdm9pZCBHcmFwaGlj
c0NvbnRleHQzRDo6cGFpbnRUb0NhbnZhcyhjb25zdCB1bnNpZ25lZCBjaGFyKiBpbWFnZVBpeGVs
cywgaW50IGltYWcKIAogICAgIGNhbnZhc0JpdG1hcC5zZXRDb25maWcoU2tCaXRtYXA6OmtBUkdC
Xzg4ODhfQ29uZmlnLCBjYW52YXNXaWR0aCwgY2FudmFzSGVpZ2h0KTsKICAgICBjYW52YXNCaXRt
YXAuYWxsb2NQaXhlbHMoMCwgMCk7Ci0gICAgYm9vbCByYyA9IGNhbnZhc0JpdG1hcC5jb3B5UGl4
ZWxzRnJvbShzdGF0aWNfY2FzdDx2b2lkKj4oY29uc3RfY2FzdDx1bnNpZ25lZCBjaGFyKj4odGVt
cFBpeGVscykpLCBpbWFnZVdpZHRoICogaW1hZ2VIZWlnaHQgKiA0KTsKKyAgICBjYW52YXNCaXRt
YXAubG9ja1BpeGVscygpOworICAgIG1lbWNweShjYW52YXNCaXRtYXAuZ2V0UGl4ZWxzKCksIHRl
bXBQaXhlbHMsIGltYWdlV2lkdGggKiBpbWFnZUhlaWdodCAqIDQpOworICAgIGNhbnZhc0JpdG1h
cC51bmxvY2tQaXhlbHMoKTsKICAgICBkZWxldGUgW10gdGVtcFBpeGVsczsKIAogICAgIEZsb2F0
UmVjdCBzcmMoMCwgMCwgY2FudmFzV2lkdGgsIGNhbnZhc0hlaWdodCk7CiAgICAgRmxvYXRSZWN0
IGRzdCgwLCAwLCBpbWFnZVdpZHRoLCBpbWFnZUhlaWdodCk7CiAKICAgICBSZWZQdHI8Qml0bWFw
SW1hZ2VTaW5nbGVGcmFtZVNraWE+IGJpdG1hcEltYWdlID0gQml0bWFwSW1hZ2VTaW5nbGVGcmFt
ZVNraWE6OmNyZWF0ZShjYW52YXNCaXRtYXAsIGZhbHNlKTsKLSAgICBpZiAocmMpCi0gICAgICAg
IGNvbnRleHQtPmRyYXdJbWFnZShiaXRtYXBJbWFnZS5nZXQoKSwgQ29sb3JTcGFjZURldmljZVJH
QiwgZHN0LCBzcmMsIENvbXBvc2l0ZUNvcHksIGZhbHNlKTsKKyAgICBjb250ZXh0LT5kcmF3SW1h
Z2UoYml0bWFwSW1hZ2UuZ2V0KCksIENvbG9yU3BhY2VEZXZpY2VSR0IsIGRzdCwgc3JjLCBDb21w
b3NpdGVDb3B5LCBmYWxzZSk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnNldENvbnRl
eHRMb3N0Q2FsbGJhY2soUGFzc093blB0cjxDb250ZXh0TG9zdENhbGxiYWNrPikKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvSW5zdHJ1bWVu
dGVkUGxhdGZvcm1DYW52YXMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Js
YWNrYmVycnkvSW5zdHJ1bWVudGVkUGxhdGZvcm1DYW52YXMuaAppbmRleCAxNjI5ZmYxLi43ODBi
YzAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFja2Jl
cnJ5L0luc3RydW1lbnRlZFBsYXRmb3JtQ2FudmFzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9JbnN0cnVtZW50ZWRQbGF0Zm9ybUNhbnZhcy5oCkBA
IC0zNCwxNCArMzQsMTQgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBJbnN0cnVt
ZW50ZWRQbGF0Zm9ybUNhbnZhcyA6IHB1YmxpYyBza2lhOjpQbGF0Zm9ybUNhbnZhcyB7CitjbGFz
cyBJbnN0cnVtZW50ZWRQbGF0Zm9ybUNhbnZhcyA6IHB1YmxpYyBTa0NhbnZhcyB7CiBwdWJsaWM6
Ci0gICAgSW5zdHJ1bWVudGVkUGxhdGZvcm1DYW52YXMoaW50IHdpZHRoLCBpbnQgaGVpZ2h0LCBi
b29sIGlzX29wYXF1ZSwgU2tEZXZpY2VGYWN0b3J5KiBmYWN0b3J5KQotICAgICAgICA6IHNraWE6
OlBsYXRmb3JtQ2FudmFzKHdpZHRoLCBoZWlnaHQsIGlzX29wYXF1ZSwgZmFjdG9yeSkKLSAgICAg
ICAgLCBtX3NpemUod2lkdGgsIGhlaWdodCkKKyAgICBJbnN0cnVtZW50ZWRQbGF0Zm9ybUNhbnZh
cyhpbnQgd2lkdGgsIGludCBoZWlnaHQpCisgICAgICAgIDogbV9zaXplKHdpZHRoLCBoZWlnaHQp
CiAgICAgICAgICwgbV9pc1NvbGlkQ29sb3IodHJ1ZSkKICAgICAgICAgLCBtX3NvbGlkQ29sb3Io
MCwgMCwgMCwgMCkKICAgICB7CisgICAgICAgIHNldERldmljZShuZXcgU2tEZXZpY2UoU2tCaXRt
YXA6OmtBUkdCXzg4ODhfQ29uZmlnLCB3aWR0aCwgaGVpZ2h0KSktPnVucmVmKCk7CiAgICAgfQog
CiAgICAgdmlydHVhbCB+SW5zdHJ1bWVudGVkUGxhdGZvcm1DYW52YXMoKSB7IH0KQEAgLTUzLDc2
ICs1Myw3NiBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBpbnQgc2F2ZShTYXZlRmxhZ3MgZmxhZ3Mp
CiAgICAgewogICAgICAgICBXUkFQQ0FOVkFTX0xPR19FTlRSWSgiIik7Ci0gICAgICAgIHJldHVy
biBza2lhOjpQbGF0Zm9ybUNhbnZhczo6c2F2ZShmbGFncyk7CisgICAgICAgIHJldHVybiBTa0Nh
bnZhczo6c2F2ZShmbGFncyk7CiAgICAgfQogCiAgICAgdmlydHVhbCBpbnQgc2F2ZUxheWVyKGNv
bnN0IFNrUmVjdCogYm91bmRzLCBjb25zdCBTa1BhaW50KiBwYWludCwgU2F2ZUZsYWdzIGZsYWdz
KQogICAgIHsKICAgICAgICAgV1JBUENBTlZBU19MT0dfRU5UUlkoIiIpOwogICAgICAgICBtX2lz
U29saWRDb2xvciA9IGZhbHNlOwotICAgICAgICByZXR1cm4gc2tpYTo6UGxhdGZvcm1DYW52YXM6
OnNhdmVMYXllcihib3VuZHMsIHBhaW50LCBmbGFncyk7CisgICAgICAgIHJldHVybiBTa0NhbnZh
czo6c2F2ZUxheWVyKGJvdW5kcywgcGFpbnQsIGZsYWdzKTsKICAgICB9CiAKICAgICB2aXJ0dWFs
IHZvaWQgcmVzdG9yZSgpCiAgICAgewogICAgICAgICBXUkFQQ0FOVkFTX0xPR19FTlRSWSgiIik7
Ci0gICAgICAgIHNraWE6OlBsYXRmb3JtQ2FudmFzOjpyZXN0b3JlKCk7CisgICAgICAgIFNrQ2Fu
dmFzOjpyZXN0b3JlKCk7CiAgICAgfQogCiAgICAgdmlydHVhbCBib29sIHRyYW5zbGF0ZShTa1Nj
YWxhciBkeCwgU2tTY2FsYXIgZHkpCiAgICAgewogICAgICAgICBXUkFQQ0FOVkFTX0xPR19FTlRS
WSgiIik7Ci0gICAgICAgIHJldHVybiBza2lhOjpQbGF0Zm9ybUNhbnZhczo6dHJhbnNsYXRlKGR4
LCBkeSk7CisgICAgICAgIHJldHVybiBTa0NhbnZhczo6dHJhbnNsYXRlKGR4LCBkeSk7CiAgICAg
fQogCiAgICAgdmlydHVhbCBib29sIHNjYWxlKFNrU2NhbGFyIHN4LCBTa1NjYWxhciBzeSkKICAg
ICB7CiAgICAgICAgIFdSQVBDQU5WQVNfTE9HX0VOVFJZKCIiKTsKLSAgICAgICAgcmV0dXJuIHNr
aWE6OlBsYXRmb3JtQ2FudmFzOjpzY2FsZShzeCwgc3kpOworICAgICAgICByZXR1cm4gU2tDYW52
YXM6OnNjYWxlKHN4LCBzeSk7CiAgICAgfQogCiAgICAgdmlydHVhbCBib29sIHJvdGF0ZShTa1Nj
YWxhciBkZWdyZWVzKQogICAgIHsKICAgICAgICAgV1JBUENBTlZBU19MT0dfRU5UUlkoIiIpOwot
ICAgICAgICByZXR1cm4gc2tpYTo6UGxhdGZvcm1DYW52YXM6OnJvdGF0ZShkZWdyZWVzKTsKKyAg
ICAgICAgcmV0dXJuIFNrQ2FudmFzOjpyb3RhdGUoZGVncmVlcyk7CiAgICAgfQogCiAgICAgdmly
dHVhbCBib29sIHNrZXcoU2tTY2FsYXIgc3gsIFNrU2NhbGFyIHN5KQogICAgIHsKICAgICAgICAg
V1JBUENBTlZBU19MT0dfRU5UUlkoIiIpOwotICAgICAgICByZXR1cm4gc2tpYTo6UGxhdGZvcm1D
YW52YXM6OnNrZXcoc3gsIHN5KTsKKyAgICAgICAgcmV0dXJuIFNrQ2FudmFzOjpza2V3KHN4LCBz
eSk7CiAgICAgfQogCiAgICAgdmlydHVhbCBib29sIGNvbmNhdChjb25zdCBTa01hdHJpeCYgbWF0
cml4KQogICAgIHsKICAgICAgICAgV1JBUENBTlZBU19MT0dfRU5UUlkoIiIpOwotICAgICAgICBy
ZXR1cm4gc2tpYTo6UGxhdGZvcm1DYW52YXM6OmNvbmNhdChtYXRyaXgpOworICAgICAgICByZXR1
cm4gU2tDYW52YXM6OmNvbmNhdChtYXRyaXgpOwogICAgIH0KIAogICAgIHZpcnR1YWwgdm9pZCBz
ZXRNYXRyaXgoY29uc3QgU2tNYXRyaXgmIG1hdHJpeCkKICAgICB7CiAgICAgICAgIFdSQVBDQU5W
QVNfTE9HX0VOVFJZKCIiKTsKLSAgICAgICAgc2tpYTo6UGxhdGZvcm1DYW52YXM6OnNldE1hdHJp
eChtYXRyaXgpOworICAgICAgICBTa0NhbnZhczo6c2V0TWF0cml4KG1hdHJpeCk7CiAgICAgfQog
CiAgICAgdmlydHVhbCBib29sIGNsaXBSZWN0KGNvbnN0IFNrUmVjdCYgcmVjdCwgU2tSZWdpb246
Ok9wIG9wKQogICAgIHsKICAgICAgICAgV1JBUENBTlZBU19MT0dfRU5UUlkoIiIpOwotICAgICAg
ICByZXR1cm4gc2tpYTo6UGxhdGZvcm1DYW52YXM6OmNsaXBSZWN0KHJlY3QsIG9wKTsKKyAgICAg
ICAgcmV0dXJuIFNrQ2FudmFzOjpjbGlwUmVjdChyZWN0LCBvcCk7CiAgICAgfQogCiAgICAgdmly
dHVhbCBib29sIGNsaXBQYXRoKGNvbnN0IFNrUGF0aCYgcGF0aCwgU2tSZWdpb246Ok9wIG9wKSAK
ICAgICB7CiAgICAgICAgIFdSQVBDQU5WQVNfTE9HX0VOVFJZKCIiKTsKICAgICAgICAgbV9pc1Nv
bGlkQ29sb3IgPSBmYWxzZTsKLSAgICAgICAgcmV0dXJuIHNraWE6OlBsYXRmb3JtQ2FudmFzOjpj
bGlwUGF0aChwYXRoLCBvcCk7CisgICAgICAgIHJldHVybiBTa0NhbnZhczo6Y2xpcFBhdGgocGF0
aCwgb3ApOwogICAgIH0KIAogICAgIHZpcnR1YWwgYm9vbCBjbGlwUmVnaW9uKGNvbnN0IFNrUmVn
aW9uJiByZWdpb24sIFNrUmVnaW9uOjpPcCBvcCkKICAgICB7CiAgICAgICAgIFdSQVBDQU5WQVNf
TE9HX0VOVFJZKCIiKTsKICAgICAgICAgbV9pc1NvbGlkQ29sb3IgPSBmYWxzZTsKLSAgICAgICAg
cmV0dXJuIHNraWE6OlBsYXRmb3JtQ2FudmFzOjpjbGlwUmVnaW9uKHJlZ2lvbiwgb3ApOworICAg
ICAgICByZXR1cm4gU2tDYW52YXM6OmNsaXBSZWdpb24ocmVnaW9uLCBvcCk7CiAgICAgfQogCiAg
ICAgdmlydHVhbCB2b2lkIGNsZWFyKFNrQ29sb3IgY29sb3IpCkBAIC0xMzAsMTQgKzEzMCwxNCBA
QCBwdWJsaWM6CiAgICAgICAgIFdSQVBDQU5WQVNfTE9HX0VOVFJZKCIiKTsKICAgICAgICAgbV9p
c1NvbGlkQ29sb3IgPSB0cnVlOwogICAgICAgICBtX3NvbGlkQ29sb3IgPSBDb2xvcihjb2xvcik7
Ci0gICAgICAgIHNraWE6OlBsYXRmb3JtQ2FudmFzOjpjbGVhcihjb2xvcik7CisgICAgICAgIFNr
Q2FudmFzOjpjbGVhcihjb2xvcik7CiAgICAgfQogCiAgICAgdmlydHVhbCB2b2lkIGRyYXdQYWlu
dChjb25zdCBTa1BhaW50JiBwYWludCkKICAgICB7CiAgICAgICAgIFdSQVBDQU5WQVNfTE9HX0VO
VFJZKCIiKTsKICAgICAgICAgbV9pc1NvbGlkQ29sb3IgPSBmYWxzZTsKLSAgICAgICAgc2tpYTo6
UGxhdGZvcm1DYW52YXM6OmRyYXdQYWludChwYWludCk7CisgICAgICAgIFNrQ2FudmFzOjpkcmF3
UGFpbnQocGFpbnQpOwogICAgIH0KIAogICAgIHZpcnR1YWwgdm9pZCBkcmF3UG9pbnRzKFBvaW50
TW9kZSBtb2RlLCBzaXplX3QgY291bnQsIGNvbnN0IFNrUG9pbnQgcHRzW10sCkBAIC0xNDUsNyAr
MTQ1LDcgQEAgcHVibGljOgogICAgIHsKICAgICAgICAgV1JBUENBTlZBU19MT0dfRU5UUlkoIiIp
OwogICAgICAgICBtX2lzU29saWRDb2xvciA9IGZhbHNlOwotICAgICAgICBza2lhOjpQbGF0Zm9y
bUNhbnZhczo6ZHJhd1BvaW50cyhtb2RlLCBjb3VudCwgcHRzLCBwYWludCk7CisgICAgICAgIFNr
Q2FudmFzOjpkcmF3UG9pbnRzKG1vZGUsIGNvdW50LCBwdHMsIHBhaW50KTsKICAgICB9CiAKICAg
ICB2aXJ0dWFsIHZvaWQgZHJhd1JlY3QoY29uc3QgU2tSZWN0JiByZWN0LCBjb25zdCBTa1BhaW50
JiBwYWludCkKQEAgLTE2NSwxNCArMTY1LDE0IEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICAg
bV9pc1NvbGlkQ29sb3IgPSBmYWxzZTsKICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICBtX2lz
U29saWRDb2xvciA9IGZhbHNlOwotICAgICAgICBza2lhOjpQbGF0Zm9ybUNhbnZhczo6ZHJhd1Jl
Y3QocmVjdCwgcGFpbnQpOworICAgICAgICBTa0NhbnZhczo6ZHJhd1JlY3QocmVjdCwgcGFpbnQp
OwogICAgIH0KIAogICAgIHZpcnR1YWwgdm9pZCBkcmF3UGF0aChjb25zdCBTa1BhdGgmIHBhdGgs
IGNvbnN0IFNrUGFpbnQmIHBhaW50KQogICAgIHsKICAgICAgICAgV1JBUENBTlZBU19MT0dfRU5U
UlkoIiIpOwogICAgICAgICBtX2lzU29saWRDb2xvciA9IGZhbHNlOwotICAgICAgICBza2lhOjpQ
bGF0Zm9ybUNhbnZhczo6ZHJhd1BhdGgocGF0aCwgcGFpbnQpOworICAgICAgICBTa0NhbnZhczo6
ZHJhd1BhdGgocGF0aCwgcGFpbnQpOwogICAgIH0KIAogICAgIHZpcnR1YWwgdm9pZCBkcmF3Qml0
bWFwKGNvbnN0IFNrQml0bWFwJiBiaXRtYXAsIFNrU2NhbGFyIGxlZnQsCkBAIC0xODAsNyArMTgw
LDcgQEAgcHVibGljOgogICAgIHsKICAgICAgICAgV1JBUENBTlZBU19MT0dfRU5UUlkoIiIpOwog
ICAgICAgICBtX2lzU29saWRDb2xvciA9IGZhbHNlOwotICAgICAgICBza2lhOjpQbGF0Zm9ybUNh
bnZhczo6ZHJhd0JpdG1hcChiaXRtYXAsIGxlZnQsIHRvcCwgcGFpbnQpOworICAgICAgICBTa0Nh
bnZhczo6ZHJhd0JpdG1hcChiaXRtYXAsIGxlZnQsIHRvcCwgcGFpbnQpOwogICAgIH0KIAogICAg
IHZpcnR1YWwgdm9pZCBkcmF3Qml0bWFwUmVjdChjb25zdCBTa0JpdG1hcCYgYml0bWFwLCBjb25z
dCBTa0lSZWN0KiBzcmMsCkBAIC0xODgsNyArMTg4LDcgQEAgcHVibGljOgogICAgIHsKICAgICAg
ICAgV1JBUENBTlZBU19MT0dfRU5UUlkoIiIpOwogICAgICAgICBtX2lzU29saWRDb2xvciA9IGZh
bHNlOwotICAgICAgICBza2lhOjpQbGF0Zm9ybUNhbnZhczo6ZHJhd0JpdG1hcFJlY3QoYml0bWFw
LCBzcmMsIGRzdCwgcGFpbnQpOworICAgICAgICBTa0NhbnZhczo6ZHJhd0JpdG1hcFJlY3QoYml0
bWFwLCBzcmMsIGRzdCwgcGFpbnQpOwogICAgIH0KIAogICAgIHZpcnR1YWwgdm9pZCBkcmF3Qml0
bWFwTWF0cml4KGNvbnN0IFNrQml0bWFwJiBiaXRtYXAsCkBAIC0xOTYsNyArMTk2LDcgQEAgcHVi
bGljOgogICAgIHsKICAgICAgICAgV1JBUENBTlZBU19MT0dfRU5UUlkoIiIpOwogICAgICAgICBt
X2lzU29saWRDb2xvciA9IGZhbHNlOwotICAgICAgICBza2lhOjpQbGF0Zm9ybUNhbnZhczo6ZHJh
d0JpdG1hcE1hdHJpeChiaXRtYXAsIG1hdHJpeCwgcGFpbnQpOworICAgICAgICBTa0NhbnZhczo6
ZHJhd0JpdG1hcE1hdHJpeChiaXRtYXAsIG1hdHJpeCwgcGFpbnQpOwogICAgIH0KIAogICAgIHZp
cnR1YWwgdm9pZCBkcmF3U3ByaXRlKGNvbnN0IFNrQml0bWFwJiBiaXRtYXAsIGludCBsZWZ0LCBp
bnQgdG9wLApAQCAtMjA0LDcgKzIwNCw3IEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIFdSQVBD
QU5WQVNfTE9HX0VOVFJZKCIiKTsKICAgICAgICAgbV9pc1NvbGlkQ29sb3IgPSBmYWxzZTsKLSAg
ICAgICAgc2tpYTo6UGxhdGZvcm1DYW52YXM6OmRyYXdTcHJpdGUoYml0bWFwLCBsZWZ0LCB0b3As
IHBhaW50KTsKKyAgICAgICAgU2tDYW52YXM6OmRyYXdTcHJpdGUoYml0bWFwLCBsZWZ0LCB0b3As
IHBhaW50KTsKICAgICB9CiAKICAgICB2aXJ0dWFsIHZvaWQgZHJhd1RleHQoY29uc3Qgdm9pZCog
dGV4dCwgc2l6ZV90IGJ5dGVMZW5ndGgsIFNrU2NhbGFyIHgsCkBAIC0yMTIsNyArMjEyLDcgQEAg
cHVibGljOgogICAgIHsKICAgICAgICAgV1JBUENBTlZBU19MT0dfRU5UUlkoIiIpOwogICAgICAg
ICBtX2lzU29saWRDb2xvciA9IGZhbHNlOwotICAgICAgICBza2lhOjpQbGF0Zm9ybUNhbnZhczo6
ZHJhd1RleHQodGV4dCwgYnl0ZUxlbmd0aCwgeCwgeSwgcGFpbnQpOworICAgICAgICBTa0NhbnZh
czo6ZHJhd1RleHQodGV4dCwgYnl0ZUxlbmd0aCwgeCwgeSwgcGFpbnQpOwogICAgIH0KIAogICAg
IHZpcnR1YWwgdm9pZCBkcmF3UG9zVGV4dChjb25zdCB2b2lkKiB0ZXh0LCBzaXplX3QgYnl0ZUxl
bmd0aCwKQEAgLTIyMCw3ICsyMjAsNyBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICBXUkFQQ0FO
VkFTX0xPR19FTlRSWSgiIik7CiAgICAgICAgIG1faXNTb2xpZENvbG9yID0gZmFsc2U7Ci0gICAg
ICAgIHNraWE6OlBsYXRmb3JtQ2FudmFzOjpkcmF3UG9zVGV4dCh0ZXh0LCBieXRlTGVuZ3RoLCBw
b3MsIHBhaW50KTsKKyAgICAgICAgU2tDYW52YXM6OmRyYXdQb3NUZXh0KHRleHQsIGJ5dGVMZW5n
dGgsIHBvcywgcGFpbnQpOwogICAgIH0KIAogICAgIHZpcnR1YWwgdm9pZCBkcmF3UG9zVGV4dEgo
Y29uc3Qgdm9pZCogdGV4dCwgc2l6ZV90IGJ5dGVMZW5ndGgsCkBAIC0yMjgsNyArMjI4LDcgQEAg
cHVibGljOgogICAgIHsKICAgICAgICAgV1JBUENBTlZBU19MT0dfRU5UUlkoIiIpOwogICAgICAg
ICBtX2lzU29saWRDb2xvciA9IGZhbHNlOwotICAgICAgICBza2lhOjpQbGF0Zm9ybUNhbnZhczo6
ZHJhd1Bvc1RleHRIKHRleHQsIGJ5dGVMZW5ndGgsIHhwb3MsIGNvbnN0WSwgcGFpbnQpOworICAg
ICAgICBTa0NhbnZhczo6ZHJhd1Bvc1RleHRIKHRleHQsIGJ5dGVMZW5ndGgsIHhwb3MsIGNvbnN0
WSwgcGFpbnQpOwogICAgIH0KIAogICAgIHZpcnR1YWwgdm9pZCBkcmF3VGV4dE9uUGF0aChjb25z
dCB2b2lkKiB0ZXh0LCBzaXplX3QgYnl0ZUxlbmd0aCwKQEAgLTIzNiwxNCArMjM2LDE0IEBAIHB1
YmxpYzoKICAgICB7CiAgICAgICAgIFdSQVBDQU5WQVNfTE9HX0VOVFJZKCIiKTsKICAgICAgICAg
bV9pc1NvbGlkQ29sb3IgPSBmYWxzZTsKLSAgICAgICAgc2tpYTo6UGxhdGZvcm1DYW52YXM6OmRy
YXdUZXh0T25QYXRoKHRleHQsIGJ5dGVMZW5ndGgsIHBhdGgsIG1hdHJpeCwgcGFpbnQpOworICAg
ICAgICBTa0NhbnZhczo6ZHJhd1RleHRPblBhdGgodGV4dCwgYnl0ZUxlbmd0aCwgcGF0aCwgbWF0
cml4LCBwYWludCk7CiAgICAgfQogCiAgICAgdmlydHVhbCB2b2lkIGRyYXdQaWN0dXJlKFNrUGlj
dHVyZSYgcGljdHVyZSkKICAgICB7CiAgICAgICAgIFdSQVBDQU5WQVNfTE9HX0VOVFJZKCIiKTsK
ICAgICAgICAgbV9pc1NvbGlkQ29sb3IgPSBmYWxzZTsKLSAgICAgICAgc2tpYTo6UGxhdGZvcm1D
YW52YXM6OmRyYXdQaWN0dXJlKHBpY3R1cmUpOworICAgICAgICBTa0NhbnZhczo6ZHJhd1BpY3R1
cmUocGljdHVyZSk7CiAgICAgfQogCiAgICAgdmlydHVhbCB2b2lkIGRyYXdWZXJ0aWNlcyhWZXJ0
ZXhNb2RlIG1vZGUsIGludCB2ZXJ0ZXhDb3VudCwKQEAgLTI1MywxNCArMjUzLDE0IEBAIHB1Ymxp
YzoKICAgICB7CiAgICAgICAgIFdSQVBDQU5WQVNfTE9HX0VOVFJZKCIiKTsKICAgICAgICAgbV9p
c1NvbGlkQ29sb3IgPSBmYWxzZTsKLSAgICAgICAgc2tpYTo6UGxhdGZvcm1DYW52YXM6OmRyYXdW
ZXJ0aWNlcyhtb2RlLCB2ZXJ0ZXhDb3VudCwgdmVydGljZXMsIHRleHMsIGNvbG9ycywgeGZlcm1v
ZGUsIGluZGljZXMsIGluZGV4Q291bnQsIHBhaW50KTsKKyAgICAgICAgU2tDYW52YXM6OmRyYXdW
ZXJ0aWNlcyhtb2RlLCB2ZXJ0ZXhDb3VudCwgdmVydGljZXMsIHRleHMsIGNvbG9ycywgeGZlcm1v
ZGUsIGluZGljZXMsIGluZGV4Q291bnQsIHBhaW50KTsKICAgICB9CiAKICAgICB2aXJ0dWFsIHZv
aWQgZHJhd0RhdGEoY29uc3Qgdm9pZCogZGF0YSwgc2l6ZV90IHNpemUpCiAgICAgewogICAgICAg
ICBXUkFQQ0FOVkFTX0xPR19FTlRSWSgiIik7CiAgICAgICAgIG1faXNTb2xpZENvbG9yID0gZmFs
c2U7Ci0gICAgICAgIHNraWE6OlBsYXRmb3JtQ2FudmFzOjpkcmF3RGF0YShkYXRhLCBzaXplKTsK
KyAgICAgICAgU2tDYW52YXM6OmRyYXdEYXRhKGRhdGEsIHNpemUpOwogICAgIH0KIAogcHJpdmF0
ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVy
cnkvTGF5ZXJEYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFja2Jl
cnJ5L0xheWVyRGF0YS5oCmluZGV4IDU3NzQ2ZmEuLjg1NzU3ODYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvTGF5ZXJEYXRhLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9MYXllckRhdGEuaApA
QCAtNTQsNyArNTQsNyBAQCBjbGFzcyBNZWRpYVBsYXllcjsKIAogY2xhc3MgTGF5ZXJEYXRhIHsK
IHB1YmxpYzoKLSAgICBlbnVtIExheWVyVHlwZSB7IExheWVyLCBUcmFuc2Zvcm1MYXllciwgV2Vi
R0xMYXllciB9OworICAgIGVudW0gTGF5ZXJUeXBlIHsgTGF5ZXIsIFRyYW5zZm9ybUxheWVyLCBX
ZWJHTExheWVyLCBDYW52YXNMYXllciB9OwogICAgIGVudW0gRmlsdGVyVHlwZSB7IExpbmVhciwg
TmVhcmVzdCwgVHJpbGluZWFyLCBMYW5jem9zIH07CiAgICAgZW51bSBMYXllclByb2dyYW1TaGFk
ZXIgeyBMYXllclByb2dyYW1TaGFkZXJSR0JBID0gMCwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIExheWVyUHJvZ3JhbVNoYWRlckJHUkEsCkBAIC03NCw5ICs3NCw2IEBAIHB1YmxpYzoK
ICAgICAgICAgLCBtX21lZGlhUGxheWVyKDApCiAjZW5kaWYKICAgICAgICAgLCBtX3RleElEKDAp
Ci0gICAgICAgICwgbV90ZXhXaWR0aCgwKQotICAgICAgICAsIG1fdGV4SGVpZ2h0KDApCi0gICAg
ICAgICwgbV9jYW52YXMoMCkKICAgICAgICAgLCBtX2Zyb250QnVmZmVyTG9jaygwKQogICAgICAg
ICAsIG1fc3VzcGVuZFRpbWUoMCkKICAgICAgICAgLCBtX2RvdWJsZVNpZGVkKHRydWUpCkBAIC0x
MzAsNyArMTI3LDcgQEAgcHVibGljOgogICAgIHVuc2lnbmVkIGdldFRleHR1cmVJRCgpIGNvbnN0
IHsgcmV0dXJuIG1fdGV4SUQ7IH0KICAgICB2b2lkIHNldFRleHR1cmVJRCh1bnNpZ25lZCBpbnQg
dmFsdWUpIHsgbV90ZXhJRCA9IHZhbHVlOyB9CiAKLSAgICBib29sIG5lZWRzVGV4dHVyZSgpIGNv
bnN0IHsgcmV0dXJuIG1fbGF5ZXJUeXBlID09IFdlYkdMTGF5ZXIgPyB0cnVlIDogbV9uZWVkc1Rl
eHR1cmU7IH0KKyAgICBib29sIG5lZWRzVGV4dHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fbGF5ZXJU
eXBlID09IFdlYkdMTGF5ZXIgfHwgbV9sYXllclR5cGUgPT0gQ2FudmFzTGF5ZXIgfHwgbV9uZWVk
c1RleHR1cmU7IH0KIAogICAgIExheWVyUHJvZ3JhbVNoYWRlciBsYXllclByb2dyYW1TaGFkZXIo
KSBjb25zdCB7IHJldHVybiBtX2xheWVyUHJvZ3JhbVNoYWRlcjsgfQogCkBAIC0xNDcsOCArMTQ0
LDYgQEAgcHVibGljOgogICAgIE1lZGlhUGxheWVyKiBtZWRpYVBsYXllcigpIGNvbnN0IHsgcmV0
dXJuIG1fbWVkaWFQbGF5ZXI7IH0KICNlbmRpZgogCi0gICAgSFRNTENhbnZhc0VsZW1lbnQqIGNh
bnZhcygpIGNvbnN0IHsgcmV0dXJuIG1fY2FudmFzOyB9Ci0KICAgICB2b2lkIHJlcGxpY2F0ZShM
YXllckRhdGEgKnRvKSBjb25zdCB7ICp0byA9ICp0aGlzOyB9CiAKICAgICBMYXllclR5cGUgbGF5
ZXJUeXBlKCkgY29uc3QgeyByZXR1cm4gbV9sYXllclR5cGU7IH0KQEAgLTE5MywxMCArMTg4LDYg
QEAgcHJvdGVjdGVkOgogICAgIEludFJlY3QgbV9ob2xlUHVuY2hSZWN0OwogCiAgICAgdW5zaWdu
ZWQgbV90ZXhJRDsKLSAgICB1bnNpZ25lZCBtX3RleFdpZHRoOwotICAgIHVuc2lnbmVkIG1fdGV4
SGVpZ2h0OwotCi0gICAgSFRNTENhbnZhc0VsZW1lbnQqIG1fY2FudmFzOwogCiAgICAgcHRocmVh
ZF9tdXRleF90KiBtX2Zyb250QnVmZmVyTG9jazsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9MYXllclRpbGVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvTGF5ZXJUaWxlci5jcHAKaW5kZXgg
OGUzYjFmZS4uMDJmOGU0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYmxhY2tiZXJyeS9MYXllclRpbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L0xheWVyVGlsZXIuY3BwCkBAIC0xNjgsNyArMTY4LDcg
QEAgdm9pZCBMYXllclRpbGVyOjp1cGRhdGVUZXh0dXJlQ29udGVudHNJZk5lZWRlZChkb3VibGUg
c2NhbGUpCiAgICAgICAgICAgICBpZiAoaW1hZ2UtPmlzQml0bWFwSW1hZ2UoKSkKICAgICAgICAg
ICAgICAgICBpc09wYXF1ZSA9ICFzdGF0aWNfY2FzdDxCaXRtYXBJbWFnZSo+KGltYWdlKS0+Y3Vy
cmVudEZyYW1lSGFzQWxwaGEoKTsKICAgICAgICAgICAgIGlmIChOYXRpdmVJbWFnZVB0ciBuYXRp
dmVJbWFnZSA9IGltYWdlLT5uYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpKSB7Ci0gICAgICAg
ICAgICAgICAgU2tCaXRtYXAgYml0bWFwID0gU2tCaXRtYXAoKm5hdGl2ZUltYWdlKTsKKyAgICAg
ICAgICAgICAgICBTa0JpdG1hcCBiaXRtYXAgPSBTa0JpdG1hcChuYXRpdmVJbWFnZS0+Yml0bWFw
KCkpOwogICAgICAgICAgICAgICAgIGFkZFRleHR1cmVKb2IoVGV4dHVyZUpvYjo6c2V0Q29udGVu
dHMoYml0bWFwLCBpc09wYXF1ZSkpOwogICAgICAgICAgICAgfQogICAgICAgICB9IGVsc2UgewpA
QCAtMjIyLDcgKzIyMiw3IEBAIHZvaWQgTGF5ZXJUaWxlcjo6dXBkYXRlVGV4dHVyZUNvbnRlbnRz
SWZOZWVkZWQoZG91YmxlIHNjYWxlKQogICAgICAgICAvLyBObyBwb2ludCBpbiB0aWxpbmcgYW4g
aW1hZ2UgbGF5ZXIsIHRoZSBpbWFnZSBpcyBhbHJlYWR5IHN0b3JlZCBhcyBhbiBTa0JpdG1hcAog
ICAgICAgICBOYXRpdmVJbWFnZVB0ciBuYXRpdmVJbWFnZSA9IG1fbGF5ZXItPmNvbnRlbnRzKCkt
Pm5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCk7CiAgICAgICAgIGlmIChuYXRpdmVJbWFnZSkg
ewotICAgICAgICAgICAgU2tCaXRtYXAgYml0bWFwID0gU2tCaXRtYXAoKm5hdGl2ZUltYWdlKTsK
KyAgICAgICAgICAgIFNrQml0bWFwIGJpdG1hcCA9IFNrQml0bWFwKG5hdGl2ZUltYWdlLT5iaXRt
YXAoKSk7CiAgICAgICAgICAgICBhZGRUZXh0dXJlSm9iKFRleHR1cmVKb2I6OnNldENvbnRlbnRz
KGJpdG1hcCwgaXNPcGFxdWUpKTsKICAgICAgICAgfQogICAgICAgICByZXR1cm47CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L0xheWVyV2Vi
S2l0VGhyZWFkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVy
cnkvTGF5ZXJXZWJLaXRUaHJlYWQuY3BwCmluZGV4IDZjYWRmMzUuLjk5ZDdhMDcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvTGF5ZXJXZWJL
aXRUaHJlYWQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2JsYWNr
YmVycnkvTGF5ZXJXZWJLaXRUaHJlYWQuY3BwCkBAIC0xMDgsNyArMTA4LDcgQEAgU2tCaXRtYXAg
TGF5ZXJXZWJLaXRUaHJlYWQ6OnBhaW50Q29udGVudHMoY29uc3QgSW50UmVjdCYgY29udGVudHNS
ZWN0LCBkb3VibGUgc2MKICAgICBpZiAoZHJhd3NDb250ZW50KCkpIHsgLy8gTGF5ZXIgY29udGVu
dHMgbXVzdCBiZSBkcmF3biBpbnRvIGEgY2FudmFzLgogICAgICAgICBJbnRSZWN0IHVudHJhbnNm
b3JtZWRDb250ZW50c1JlY3QgPSBjb250ZW50c1JlY3Q7CiAKLSAgICAgICAgY2FudmFzID0gYWRv
cHRQdHIobmV3IEluc3RydW1lbnRlZFBsYXRmb3JtQ2FudmFzKGNvbnRlbnRzUmVjdC53aWR0aCgp
LCBjb250ZW50c1JlY3QuaGVpZ2h0KCksIGZhbHNlLCAwKSk7CisgICAgICAgIGNhbnZhcyA9IGFk
b3B0UHRyKG5ldyBJbnN0cnVtZW50ZWRQbGF0Zm9ybUNhbnZhcyhjb250ZW50c1JlY3Qud2lkdGgo
KSwgY29udGVudHNSZWN0LmhlaWdodCgpKSk7CiAgICAgICAgIFBsYXRmb3JtQ29udGV4dFNraWEg
c2tpYUNvbnRleHQoY2FudmFzLmdldCgpKTsKIAogICAgICAgICBHcmFwaGljc0NvbnRleHQgZ3Jh
cGhpY3NDb250ZXh0KCZza2lhQ29udGV4dCk7CkBAIC0xOTEsNyArMTkxLDcgQEAgdm9pZCBMYXll
cldlYktpdFRocmVhZDo6c2V0RHJhd2FibGUoYm9vbCBpc0RyYXdhYmxlKQogCiAgICAgbV9pc0Ry
YXdhYmxlID0gaXNEcmF3YWJsZTsKIAotICAgIHNldE5lZWRzVGV4dHVyZShtX2lzRHJhd2FibGUg
JiYgKGRyYXdzQ29udGVudCgpIHx8IGNvbnRlbnRzKCkgfHwgcGx1Z2luVmlldygpIHx8IG1lZGlh
UGxheWVyKCkgfHwgY2FudmFzKCkpKTsKKyAgICBzZXROZWVkc1RleHR1cmUobV9pc0RyYXdhYmxl
ICYmIChkcmF3c0NvbnRlbnQoKSB8fCBjb250ZW50cygpIHx8IHBsdWdpblZpZXcoKSB8fCBtZWRp
YVBsYXllcigpIHx8IG1fdGV4SUQpKTsKICAgICBzZXROZWVkc0NvbW1pdCgpOwogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L01lZGlh
UGxheWVyUHJpdmF0ZUJsYWNrQmVycnkuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYmxhY2tiZXJyeS9NZWRpYVBsYXllclByaXZhdGVCbGFja0JlcnJ5LmNwcAppbmRleCAx
ZDhiZDNhLi4wYWI5ODc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9ibGFja2JlcnJ5L01lZGlhUGxheWVyUHJpdmF0ZUJsYWNrQmVycnkuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvTWVkaWFQbGF5ZXJQcml2
YXRlQmxhY2tCZXJyeS5jcHAKQEAgLTcwOSwxNSArNzA5LDE1IEBAIHN0YXRpYyB2b2lkIGxvYWRC
dWZmZXJpbmdJbWFnZURhdGEoKQogICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIGxvYWRl
ZCA9IHRydWU7Ci0gICAgICAgIG5hdGl2ZUltYWdlLT5sb2NrUGl4ZWxzKCk7CisgICAgICAgIG5h
dGl2ZUltYWdlLT5iaXRtYXAoKS5sb2NrUGl4ZWxzKCk7CiAKLSAgICAgICAgaW50IGJ1ZlNpemUg
PSBuYXRpdmVJbWFnZS0+d2lkdGgoKSAqIG5hdGl2ZUltYWdlLT5oZWlnaHQoKSAqIDQ7Ci0gICAg
ICAgIHNfYnVmZmVyaW5nSW1hZ2VXaWR0aCA9IG5hdGl2ZUltYWdlLT53aWR0aCgpOwotICAgICAg
ICBzX2J1ZmZlcmluZ0ltYWdlSGVpZ2h0ID0gbmF0aXZlSW1hZ2UtPmhlaWdodCgpOworICAgICAg
ICBpbnQgYnVmU2l6ZSA9IG5hdGl2ZUltYWdlLT5iaXRtYXAoKS53aWR0aCgpICogbmF0aXZlSW1h
Z2UtPmJpdG1hcCgpLmhlaWdodCgpICogNDsKKyAgICAgICAgc19idWZmZXJpbmdJbWFnZVdpZHRo
ID0gbmF0aXZlSW1hZ2UtPmJpdG1hcCgpLndpZHRoKCk7CisgICAgICAgIHNfYnVmZmVyaW5nSW1h
Z2VIZWlnaHQgPSBuYXRpdmVJbWFnZS0+Yml0bWFwKCkuaGVpZ2h0KCk7CiAgICAgICAgIHNfYnVm
ZmVyaW5nSW1hZ2VEYXRhID0gc3RhdGljX2Nhc3Q8Y2hhcio+KG1hbGxvYyhidWZTaXplKSk7Ci0g
ICAgICAgIG1lbWNweShzX2J1ZmZlcmluZ0ltYWdlRGF0YSwgbmF0aXZlSW1hZ2UtPmdldFBpeGVs
cygpLCBidWZTaXplKTsKKyAgICAgICAgbWVtY3B5KHNfYnVmZmVyaW5nSW1hZ2VEYXRhLCBuYXRp
dmVJbWFnZS0+Yml0bWFwKCkuZ2V0UGl4ZWxzKCksIGJ1ZlNpemUpOwogCi0gICAgICAgIG5hdGl2
ZUltYWdlLT51bmxvY2tQaXhlbHMoKTsKKyAgICAgICAgbmF0aXZlSW1hZ2UtPmJpdG1hcCgpLnVu
bG9ja1BpeGVscygpOwogICAgICAgICBidWZmZXJpbmdJY29uLT5kZXJlZigpOwogICAgIH0KIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkv
c2tpYS9JbWFnZUJ1ZmZlckRhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2JsYWNrYmVycnkvc2tpYS9JbWFnZUJ1ZmZlckRhdGEuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggNDA5MTk3ZS4uMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9ibGFja2JlcnJ5L3NraWEvSW1hZ2VCdWZmZXJEYXRhLmgKKysrIC9kZXYvbnVsbApA
QCAtMSw1MyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChjKSAyMDA4LCAyMDA5LCBHb29nbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0IChjKSAyMDExLCBSZXNlYXJj
aCBJbiBNb3Rpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMgYXJlCi0gKiBtZXQ6Ci0gKgotICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqICAg
ICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUKLSAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIKLSAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSAqIGRpc3RyaWJ1dGlvbi4KLSAqICAgICAq
IE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSAq
IGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMg
ZGVyaXZlZCBmcm9tCi0gKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3Jp
dHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhF
IENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSAqICJBUyBJUyIgQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1J
VEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IKLSAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0gKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSAqIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSAq
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLAotICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0gKiBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBJbWFnZUJ1ZmZlckRhdGFfaAot
I2RlZmluZSBJbWFnZUJ1ZmZlckRhdGFfaAotCi0jaW5jbHVkZSAiQmxhY2tCZXJyeVBsYXRmb3Jt
R3JhcGhpY3MuaCIKLSNpbmNsdWRlICJQbGF0Zm9ybUNvbnRleHRTa2lhLmgiCi0KLSNpbmNsdWRl
ICJza2lhL2V4dC9wbGF0Zm9ybV9jYW52YXMuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1j
bGFzcyBJbWFnZUJ1ZmZlckRhdGEgewotcHVibGljOgotICAgIEltYWdlQnVmZmVyRGF0YShjb25z
dCBJbnRTaXplJik7Ci0KLSAgICBPd25QdHI8U2tDYW52YXM+IG1fY2FudmFzOwotICAgIFBsYXRm
b3JtQ29udGV4dFNraWEgbV9wbGF0Zm9ybUNvbnRleHQ7Ci0gICAgQmxhY2tCZXJyeTo6UGxhdGZv
cm06OkdyYXBoaWNzOjpCdWZmZXIqIG1fYnVmZmVyOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQotCi0jZW5kaWYgLy8gSW1hZ2VCdWZmZXJEYXRhX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvc2tpYS9JbWFnZUJ1ZmZlckRhdGFT
a2lhLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L3NraWEv
SW1hZ2VCdWZmZXJEYXRhU2tpYS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAu
LjUzODlhOTEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9ibGFja2JlcnJ5L3NraWEvSW1hZ2VCdWZmZXJEYXRhU2tpYS5oCkBAIC0wLDAgKzEsNTcg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKGMpIDIwMDgsIDIwMDksIEdvb2dsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKGMpIDIwMTEsIFJlc2VhcmNoIEluIE1vdGlvbi4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUK
KyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJp
Z2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUg
bmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3Jz
IG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20K
KyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Np
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhP
TERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICog
QSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRI
RSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
CisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaWZuZGVmIEltYWdlQnVmZmVyRGF0YVNraWFfaAorI2RlZmluZSBJ
bWFnZUJ1ZmZlckRhdGFTa2lhX2gKKworI2luY2x1ZGUgIkJsYWNrQmVycnlQbGF0Zm9ybUdyYXBo
aWNzLmgiCisjaW5jbHVkZSAiUGxhdGZvcm1Db250ZXh0U2tpYS5oIgorI2lmIFVTRShBQ0NFTEVS
QVRFRF9DT01QT1NJVElORykKKyNpbmNsdWRlICJMYXllcldlYktpdFRocmVhZC5oIgorI2VuZGlm
CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgSW1hZ2VCdWZmZXJEYXRhIHsKK3B1Ymxp
YzoKKyAgICBJbWFnZUJ1ZmZlckRhdGEoY29uc3QgSW50U2l6ZSYpOworCisgICAgT3duUHRyPFNr
Q2FudmFzPiBtX2NhbnZhczsKKyAgICBQbGF0Zm9ybUNvbnRleHRTa2lhIG1fcGxhdGZvcm1Db250
ZXh0OworICAgIEJsYWNrQmVycnk6OlBsYXRmb3JtOjpHcmFwaGljczo6QnVmZmVyKiBtX2J1ZmZl
cjsKKyNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCisgICAgUmVmUHRyPExheWVyV2Vi
S2l0VGhyZWFkPiBtX3BsYXRmb3JtTGF5ZXI7CisjZW5kaWYKK307CisKK30gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKKworI2VuZGlmIC8vIEltYWdlQnVmZmVyRGF0YVNraWFfaAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>