<?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>38046</bug_id>
          
          <creation_ts>2010-04-23 08:49:26 -0700</creation_ts>
          <short_desc>Need borderAndPadding(Width|Height)</short_desc>
          <delta_ts>2010-04-23 10:33:35 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Shinichiro Hamaji">hamaji</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>216429</commentid>
    <comment_count>0</comment_count>
    <who name="Shinichiro Hamaji">hamaji</who>
    <bug_when>2010-04-23 08:49:26 -0700</bug_when>
    <thetext>We have many paddingTop()+paddingBottom()+borderTop()+borderBottom() in WebCore code. Let&apos;s add paddingAndBorder(Width|Height) and use it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>216430</commentid>
    <comment_count>1</comment_count>
      <attachid>54164</attachid>
    <who name="Shinichiro Hamaji">hamaji</who>
    <bug_when>2010-04-23 08:52:34 -0700</bug_when>
    <thetext>Created attachment 54164
Patch v1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>216431</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-04-23 08:57:30 -0700</bug_when>
    <thetext>Attachment 54164 did not pass style-queue:

Failed to run &quot;[&apos;WebKitTools/Scripts/check-webkit-style&apos;]&quot; exit_code: 1
WebCore/rendering/RenderBlock.cpp:589:  Boolean expressions that span multiple lines should have their operators on the left side of the line instead of the right side.  [whitespace/operators] [4]
WebCore/rendering/RenderBlock.cpp:589:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
Total errors found: 2 in 21 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>216434</commentid>
    <comment_count>3</comment_count>
      <attachid>54165</attachid>
    <who name="Shinichiro Hamaji">hamaji</who>
    <bug_when>2010-04-23 09:11:07 -0700</bug_when>
    <thetext>Created attachment 54165
Patch v2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>216442</commentid>
    <comment_count>4</comment_count>
      <attachid>54165</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-04-23 09:27:31 -0700</bug_when>
    <thetext>Comment on attachment 54165
Patch v2

Is there a better name for this without the word &quot;and&quot; in it? This is the difference between the content box size and the border box size. Why did &quot;padding&quot; come first in the name rather than &quot;border&quot;?

r=me as is -- I think there probably is not better name</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>216452</commentid>
    <comment_count>5</comment_count>
    <who name="Shinichiro Hamaji">hamaji</who>
    <bug_when>2010-04-23 09:54:22 -0700</bug_when>
    <thetext>Yeah, I don&apos;t know any word which means border+padding.

At first, I named it as borderAndPadding. However, I found a variable whose name is paddingAndBorder so I used paddingAndBorder. Maybe I should have changed the name of the variable to borderAndPadding. I&apos;ll change them before I land.

Thanks for your quick review!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>216464</commentid>
    <comment_count>6</comment_count>
    <who name="Shinichiro Hamaji">hamaji</who>
    <bug_when>2010-04-23 10:33:35 -0700</bug_when>
    <thetext>Committed r58177: &lt;http://trac.webkit.org/changeset/58177&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>54164</attachid>
            <date>2010-04-23 08:52:34 -0700</date>
            <delta_ts>2010-04-23 09:11:01 -0700</delta_ts>
            <desc>Patch v1</desc>
            <filename>bug-38046-20100423085232.patch</filename>
            <type>text/plain</type>
            <size>31460</size>
            <attacher name="Shinichiro Hamaji">hamaji</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
MzMzNWQ3Yy4uYzZjODU1MyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw3NSBAQAorMjAxMC0wNC0yMyAgU2hpbmljaGlybyBI
YW1hamkgIDxoYW1hamlAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIE5lZWQgcGFkZGluZ0FuZEJvcmRlcihXaWR0aHxIZWlnaHQp
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zODA0Ngor
CisgICAgICAgIFJlZmFjdG9yaW5nIG9ubHksIHNvIG5vIG5ldyB0ZXN0cy4KKworICAgICAgICAq
IHJlbmRlcmluZy9JbmxpbmVCb3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lQm94Ojpo
ZWlnaHQpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJBcHBsZXQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyQXBwbGV0OjpjcmVhdGVXaWRnZXRJZk5lY2Vzc2FyeSk6CisgICAgICAg
ICogcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJs
b2NrOjppc1NlbGZDb2xsYXBzaW5nQmxvY2spOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxv
Y2s6OmNhbGNQcmVmV2lkdGhzKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQm94LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveDo6Y2FsY0JvcmRlckJveFdpZHRoKToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlckJveDo6Y2FsY0JvcmRlckJveEhlaWdodCk6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJCb3g6OmNhbGNDb250ZW50Qm94V2lkdGgpOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyQm94OjpjYWxjQ29udGVudEJveEhlaWdodCk6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJCb3g6OmNhbGNXaWR0aCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3g6OmNhbGNI
ZWlnaHQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94OjpjYWxjUGVyY2VudGFnZUhlaWdo
dCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3g6OmNhbGNSZXBsYWNlZEhlaWdodFVzaW5n
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveDo6YXZhaWxhYmxlSGVpZ2h0VXNpbmcpOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94OjpjYWxjQWJzb2x1dGVIb3Jpem9udGFsKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlckJveDo6Y2FsY0Fic29sdXRlVmVydGljYWwpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyQm94OjpjYWxjQWJzb2x1dGVIb3Jpem9udGFsUmVwbGFjZWQpOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94OjpjYWxjQWJzb2x1dGVWZXJ0aWNhbFJlcGxhY2Vk
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveDo6cG9zaXRpb25Gb3JQb2ludCk6CisgICAg
ICAgICogcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0Lmg6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJCb3hNb2RlbE9iamVjdDo6cGFkZGluZ0FuZEJvcmRlckhlaWdodCk6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJCb3hNb2RlbE9iamVjdDo6cGFkZGluZ0FuZEJvcmRlcldpZHRoKToK
KyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyRGF0YUdyaWQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyRGF0YUdyaWQ6OmNhbGNQcmVmV2lkdGhzKToKKyAgICAgICAgKiByZW5kZXJpbmcv
UmVuZGVyRmllbGRzZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRmllbGRzZXQ6OmNh
bGNQcmVmV2lkdGhzKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyRmlsZVVwbG9hZENvbnRy
b2wuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRmlsZVVwbG9hZENvbnRyb2w6OmNhbGNQ
cmVmV2lkdGhzKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyRmxleGlibGVCb3guY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRmxleGlibGVCb3g6OmNhbGNQcmVmV2lkdGhzKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlckZsZXhpYmxlQm94OjphbGxvd2VkQ2hpbGRGbGV4KToKKyAg
ICAgICAgKiByZW5kZXJpbmcvUmVuZGVySW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVySW1hZ2U6OmNhbGNQcmVmV2lkdGhzKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OnJlc2l6ZSk6CisgICAgICAg
ICogcmVuZGVyaW5nL1JlbmRlckxpc3RCb3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
TGlzdEJveDo6Y2FsY1ByZWZXaWR0aHMpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGlzdEJv
eDo6Y2FsY0hlaWdodCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlck1lbnVMaXN0LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck1lbnVMaXN0OjpjYWxjUHJlZldpZHRocyk6CisgICAg
ICAgICogcmVuZGVyaW5nL1JlbmRlclJlcGxhY2VkLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlclJlcGxhY2VkOjpjYWxjUHJlZldpZHRocyk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRl
clNWR1Jvb3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHUm9vdDo6Y2FsY1ByZWZX
aWR0aHMpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHUm9vdDo6bG9jYWxUb0JvcmRlckJv
eFRyYW5zZm9ybSk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclNsaWRlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJTbGlkZXI6OmNhbGNQcmVmV2lkdGhzKToKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlclNsaWRlcjo6bGF5b3V0KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVy
VGFibGVDZWxsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRhYmxlQ2VsbDo6c3R5bGVP
ckNvbFdpZHRoKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2wuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGV4dENvbnRyb2w6OnRleHRCbG9ja0hlaWdodCk6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJUZXh0Q29udHJvbDo6dGV4dEJsb2NrV2lkdGgpOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyVGV4dENvbnRyb2w6OmNhbGNIZWlnaHQpOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyVGV4dENvbnRyb2w6OmNhbGNQcmVmV2lkdGhzKToKKyAgICAgICAgKiBy
ZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5lLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlclRleHRDb250cm9sU2luZ2xlTGluZTo6bGF5b3V0KToKKyAgICAgICAgKiByZW5k
ZXJpbmcvUmVuZGVyV2lkZ2V0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlcldpZGdldDo6
dXBkYXRlV2lkZ2V0UG9zaXRpb24pOgorCiAyMDEwLTA0LTIzICBJbHlhIFRpa2hvbm92c2t5ICA8
bG9pc2xvQGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBZdXJ5IFNlbWlraGF0
c2t5LgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lQm94LmNwcCBiL1dlYkNv
cmUvcmVuZGVyaW5nL0lubGluZUJveC5jcHAKaW5kZXggMjU3NWZiNy4uNDNkZGY2OSAxMDA2NDQK
LS0tIGEvV2ViQ29yZS9yZW5kZXJpbmcvSW5saW5lQm94LmNwcAorKysgYi9XZWJDb3JlL3JlbmRl
cmluZy9JbmxpbmVCb3guY3BwCkBAIC0xMDIsNyArMTAyLDcgQEAgaW50IElubGluZUJveDo6aGVp
Z2h0KCkgY29uc3QKICAgICBjb25zdCBGb250JiBmb250ID0gcmVuZGVyZXIoKS0+c3R5bGUobV9m
aXJzdExpbmUpLT5mb250KCk7CiAgICAgaW50IHJlc3VsdCA9IGZvbnQuaGVpZ2h0KCk7CiAgICAg
aWYgKHBhcmVudCgpKQotICAgICAgICByZXN1bHQgKz0gZmxvd09iamVjdC0+Ym9yZGVyVG9wKCkg
KyBmbG93T2JqZWN0LT5wYWRkaW5nVG9wKCkgKyBmbG93T2JqZWN0LT5ib3JkZXJCb3R0b20oKSAr
IGZsb3dPYmplY3QtPnBhZGRpbmdCb3R0b20oKTsKKyAgICAgICAgcmVzdWx0ICs9IGZsb3dPYmpl
Y3QtPnBhZGRpbmdBbmRCb3JkZXJIZWlnaHQoKTsKICAgICByZXR1cm4gcmVzdWx0OwogfQogCmRp
ZmYgLS1naXQgYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJBcHBsZXQuY3BwIGIvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyQXBwbGV0LmNwcAppbmRleCAwNjI2NDFlLi5lODFmYTViIDEwMDY0NAot
LS0gYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJBcHBsZXQuY3BwCisrKyBiL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckFwcGxldC5jcHAKQEAgLTU5LDkgKzU5LDkgQEAgdm9pZCBSZW5kZXJBcHBs
ZXQ6OmNyZWF0ZVdpZGdldElmTmVjZXNzYXJ5KCkKICAgICAvLyB1c2UgZml4ZWQgd2lkdGhzL2hl
aWdodHMgZnJvbSB0aGUgc3R5bGUgc3lzdGVtIHdoZW4gd2UgY2FuLCBzaW5jZSB0aGUgd2lkZ2V0
IG1pZ2h0CiAgICAgLy8gbm90IGhhdmUgYW4gYWNjdXJhdGUgbV93aWR0aC9tX2hlaWdodC4KICAg
ICBpbnQgY29udGVudFdpZHRoID0gc3R5bGUoKS0+d2lkdGgoKS5pc0ZpeGVkKCkgPyBzdHlsZSgp
LT53aWR0aCgpLnZhbHVlKCkgOiAKLSAgICAgICAgd2lkdGgoKSAtIGJvcmRlckxlZnQoKSAtIGJv
cmRlclJpZ2h0KCkgLSBwYWRkaW5nTGVmdCgpIC0gcGFkZGluZ1JpZ2h0KCk7CisgICAgICAgIHdp
ZHRoKCkgLSBwYWRkaW5nQW5kQm9yZGVyV2lkdGgoKTsKICAgICBpbnQgY29udGVudEhlaWdodCA9
IHN0eWxlKCktPmhlaWdodCgpLmlzRml4ZWQoKSA/IHN0eWxlKCktPmhlaWdodCgpLnZhbHVlKCkg
OgotICAgICAgICBoZWlnaHQoKSAtIGJvcmRlclRvcCgpIC0gYm9yZGVyQm90dG9tKCkgLSBwYWRk
aW5nVG9wKCkgLSBwYWRkaW5nQm90dG9tKCk7CisgICAgICAgIGhlaWdodCgpIC0gcGFkZGluZ0Fu
ZEJvcmRlckhlaWdodCgpOwogICAgIGZvciAoTm9kZSogY2hpbGQgPSBlbGVtZW50LT5maXJzdENo
aWxkKCk7IGNoaWxkOyBjaGlsZCA9IGNoaWxkLT5uZXh0U2libGluZygpKSB7CiAgICAgICAgIGlm
IChjaGlsZC0+aGFzVGFnTmFtZShwYXJhbVRhZykpIHsKICAgICAgICAgICAgIEhUTUxQYXJhbUVs
ZW1lbnQqIHAgPSBzdGF0aWNfY2FzdDxIVE1MUGFyYW1FbGVtZW50Kj4oY2hpbGQpOwpkaWZmIC0t
Z2l0IGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwIGIvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyQmxvY2suY3BwCmluZGV4IGNlMzQ0NDQuLmU1YjI0M2QgMTAwNjQ0Ci0tLSBhL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcAorKysgYi9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJCbG9jay5jcHAKQEAgLTU4Niw3ICs1ODYsNyBAQCBib29sIFJlbmRlckJsb2NrOjppc1Nl
bGZDb2xsYXBzaW5nQmxvY2soKSBjb25zdAogICAgIC8vIChkKSBoYXZlIGEgbWluLWhlaWdodAog
ICAgIC8vIChlKSBoYXZlIHNwZWNpZmllZCB0aGF0IG9uZSBvZiBvdXIgbWFyZ2lucyBjYW4ndCBj
b2xsYXBzZSB1c2luZyBhIENTUyBleHRlbnNpb24KICAgICBpZiAoaGVpZ2h0KCkgPiAwIHx8Ci0g
ICAgICAgIGlzVGFibGUoKSB8fCAoYm9yZGVyQm90dG9tKCkgKyBwYWRkaW5nQm90dG9tKCkgKyBi
b3JkZXJUb3AoKSArIHBhZGRpbmdUb3AoKSkgIT0gMCB8fAorICAgICAgICBpc1RhYmxlKCkgfHwg
cGFkZGluZ0FuZEJvcmRlckhlaWdodCgpICE9IDAgfHwKICAgICAgICAgc3R5bGUoKS0+bWluSGVp
Z2h0KCkuaXNQb3NpdGl2ZSgpIHx8IAogICAgICAgICBzdHlsZSgpLT5tYXJnaW5Ub3BDb2xsYXBz
ZSgpID09IE1TRVBBUkFURSB8fCBzdHlsZSgpLT5tYXJnaW5Cb3R0b21Db2xsYXBzZSgpID09IE1T
RVBBUkFURSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMzk4OCw3ICszOTg4LDcgQEAgdm9p
ZCBSZW5kZXJCbG9jazo6Y2FsY1ByZWZXaWR0aHMoKQogICAgIH0KIAogICAgIGludCB0b0FkZCA9
IDA7Ci0gICAgdG9BZGQgPSBib3JkZXJMZWZ0KCkgKyBib3JkZXJSaWdodCgpICsgcGFkZGluZ0xl
ZnQoKSArIHBhZGRpbmdSaWdodCgpOworICAgIHRvQWRkID0gcGFkZGluZ0FuZEJvcmRlcldpZHRo
KCk7CiAKICAgICBpZiAoaGFzT3ZlcmZsb3dDbGlwKCkgJiYgc3R5bGUoKS0+b3ZlcmZsb3dZKCkg
PT0gT1NDUk9MTCkKICAgICAgICAgdG9BZGQgKz0gdmVydGljYWxTY3JvbGxiYXJXaWR0aCgpOwpk
aWZmIC0tZ2l0IGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNwcCBiL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckJveC5jcHAKaW5kZXggZGNlOTQ4ZC4uMDVkNjZjMSAxMDA2NDQKLS0tIGEv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNwcAorKysgYi9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJCb3guY3BwCkBAIC01MDgsNyArNTA4LDcgQEAgaW50IFJlbmRlckJveDo6b3ZlcnJpZGVI
ZWlnaHQoKSBjb25zdAogCiBpbnQgUmVuZGVyQm94OjpjYWxjQm9yZGVyQm94V2lkdGgoaW50IHdp
ZHRoKSBjb25zdAogewotICAgIGludCBib3JkZXJzUGx1c1BhZGRpbmcgPSBib3JkZXJMZWZ0KCkg
KyBib3JkZXJSaWdodCgpICsgcGFkZGluZ0xlZnQoKSArIHBhZGRpbmdSaWdodCgpOworICAgIGlu
dCBib3JkZXJzUGx1c1BhZGRpbmcgPSBwYWRkaW5nQW5kQm9yZGVyV2lkdGgoKTsKICAgICBpZiAo
c3R5bGUoKS0+Ym94U2l6aW5nKCkgPT0gQ09OVEVOVF9CT1gpCiAgICAgICAgIHJldHVybiB3aWR0
aCArIGJvcmRlcnNQbHVzUGFkZGluZzsKICAgICByZXR1cm4gbWF4KHdpZHRoLCBib3JkZXJzUGx1
c1BhZGRpbmcpOwpAQCAtNTE2LDcgKzUxNiw3IEBAIGludCBSZW5kZXJCb3g6OmNhbGNCb3JkZXJC
b3hXaWR0aChpbnQgd2lkdGgpIGNvbnN0CiAKIGludCBSZW5kZXJCb3g6OmNhbGNCb3JkZXJCb3hI
ZWlnaHQoaW50IGhlaWdodCkgY29uc3QKIHsKLSAgICBpbnQgYm9yZGVyc1BsdXNQYWRkaW5nID0g
Ym9yZGVyVG9wKCkgKyBib3JkZXJCb3R0b20oKSArIHBhZGRpbmdUb3AoKSArIHBhZGRpbmdCb3R0
b20oKTsKKyAgICBpbnQgYm9yZGVyc1BsdXNQYWRkaW5nID0gcGFkZGluZ0FuZEJvcmRlckhlaWdo
dCgpOwogICAgIGlmIChzdHlsZSgpLT5ib3hTaXppbmcoKSA9PSBDT05URU5UX0JPWCkKICAgICAg
ICAgcmV0dXJuIGhlaWdodCArIGJvcmRlcnNQbHVzUGFkZGluZzsKICAgICByZXR1cm4gbWF4KGhl
aWdodCwgYm9yZGVyc1BsdXNQYWRkaW5nKTsKQEAgLTUyNSwxNCArNTI1LDE0IEBAIGludCBSZW5k
ZXJCb3g6OmNhbGNCb3JkZXJCb3hIZWlnaHQoaW50IGhlaWdodCkgY29uc3QKIGludCBSZW5kZXJC
b3g6OmNhbGNDb250ZW50Qm94V2lkdGgoaW50IHdpZHRoKSBjb25zdAogewogICAgIGlmIChzdHls
ZSgpLT5ib3hTaXppbmcoKSA9PSBCT1JERVJfQk9YKQotICAgICAgICB3aWR0aCAtPSAoYm9yZGVy
TGVmdCgpICsgYm9yZGVyUmlnaHQoKSArIHBhZGRpbmdMZWZ0KCkgKyBwYWRkaW5nUmlnaHQoKSk7
CisgICAgICAgIHdpZHRoIC09IHBhZGRpbmdBbmRCb3JkZXJXaWR0aCgpOwogICAgIHJldHVybiBt
YXgoMCwgd2lkdGgpOwogfQogCiBpbnQgUmVuZGVyQm94OjpjYWxjQ29udGVudEJveEhlaWdodChp
bnQgaGVpZ2h0KSBjb25zdAogewogICAgIGlmIChzdHlsZSgpLT5ib3hTaXppbmcoKSA9PSBCT1JE
RVJfQk9YKQotICAgICAgICBoZWlnaHQgLT0gKGJvcmRlclRvcCgpICsgYm9yZGVyQm90dG9tKCkg
KyBwYWRkaW5nVG9wKCkgKyBwYWRkaW5nQm90dG9tKCkpOworICAgICAgICBoZWlnaHQgLT0gcGFk
ZGluZ0FuZEJvcmRlckhlaWdodCgpOwogICAgIHJldHVybiBtYXgoMCwgaGVpZ2h0KTsKIH0KIApA
QCAtMTI5OSwxNCArMTI5OSwxNCBAQCB2b2lkIFJlbmRlckJveDo6Y2FsY1dpZHRoKCkKICAgICAg
ICAgbV9tYXJnaW5MZWZ0ID0gbWFyZ2luTGVmdC5jYWxjTWluVmFsdWUoY29udGFpbmVyV2lkdGgp
OwogICAgICAgICBtX21hcmdpblJpZ2h0ID0gbWFyZ2luUmlnaHQuY2FsY01pblZhbHVlKGNvbnRh
aW5lcldpZHRoKTsKICAgICAgICAgaWYgKHRyZWF0QXNSZXBsYWNlZCkKLSAgICAgICAgICAgIHNl
dFdpZHRoKG1heCh3LnZhbHVlKCkgKyBib3JkZXJMZWZ0KCkgKyBib3JkZXJSaWdodCgpICsgcGFk
ZGluZ0xlZnQoKSArIHBhZGRpbmdSaWdodCgpLCBtaW5QcmVmV2lkdGgoKSkpOworICAgICAgICAg
ICAgc2V0V2lkdGgobWF4KHcudmFsdWUoKSArIHBhZGRpbmdBbmRCb3JkZXJXaWR0aCgpLCBtaW5Q
cmVmV2lkdGgoKSkpOwogCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICAvLyBXaWR0aCBj
YWxjdWxhdGlvbnMKICAgICBpZiAodHJlYXRBc1JlcGxhY2VkKQotICAgICAgICBzZXRXaWR0aCh3
LnZhbHVlKCkgKyBib3JkZXJMZWZ0KCkgKyBib3JkZXJSaWdodCgpICsgcGFkZGluZ0xlZnQoKSAr
IHBhZGRpbmdSaWdodCgpKTsKKyAgICAgICAgc2V0V2lkdGgody52YWx1ZSgpICsgcGFkZGluZ0Fu
ZEJvcmRlcldpZHRoKCkpOwogICAgIGVsc2UgewogICAgICAgICAvLyBDYWxjdWxhdGUgV2lkdGgK
ICAgICAgICAgc2V0V2lkdGgoY2FsY1dpZHRoVXNpbmcoV2lkdGgsIGNvbnRhaW5lcldpZHRoKSk7
CkBAIC0xNDYyLDcgKzE0NjIsNyBAQCB2b2lkIFJlbmRlckJveDo6Y2FsY0hlaWdodCgpCiAgICAg
ICAgIC8vIGdyYWIgb3VyIGNhY2hlZCBmbGV4aWJsZSBoZWlnaHQuCiAgICAgICAgIGlmIChoYXNP
dmVycmlkZVNpemUoKSAmJiBwYXJlbnQoKS0+aXNGbGV4aWJsZUJveCgpICYmIHBhcmVudCgpLT5z
dHlsZSgpLT5ib3hPcmllbnQoKSA9PSBWRVJUSUNBTAogICAgICAgICAgICAgICAgICYmIHBhcmVu
dCgpLT5pc0ZsZXhpbmdDaGlsZHJlbigpKQotICAgICAgICAgICAgaCA9IExlbmd0aChvdmVycmlk
ZVNpemUoKSAtIGJvcmRlclRvcCgpIC0gYm9yZGVyQm90dG9tKCkgLSBwYWRkaW5nVG9wKCkgLSBw
YWRkaW5nQm90dG9tKCksIEZpeGVkKTsKKyAgICAgICAgICAgIGggPSBMZW5ndGgob3ZlcnJpZGVT
aXplKCkgLSBwYWRkaW5nQW5kQm9yZGVySGVpZ2h0KCksIEZpeGVkKTsKICAgICAgICAgZWxzZSBp
ZiAodHJlYXRBc1JlcGxhY2VkKQogICAgICAgICAgICAgaCA9IExlbmd0aChjYWxjUmVwbGFjZWRI
ZWlnaHQoKSwgRml4ZWQpOwogICAgICAgICBlbHNlIHsKQEAgLTE0NzMsOCArMTQ3Myw3IEBAIHZv
aWQgUmVuZGVyQm94OjpjYWxjSGVpZ2h0KCkKICAgICAgICAgLy8gQmxvY2sgY2hpbGRyZW4gb2Yg
aG9yaXpvbnRhbCBmbGV4aWJsZSBib3hlcyBmaWxsIHRoZSBoZWlnaHQgb2YgdGhlIGJveC4KICAg
ICAgICAgaWYgKGguaXNBdXRvKCkgJiYgcGFyZW50KCktPmlzRmxleGlibGVCb3goKSAmJiBwYXJl
bnQoKS0+c3R5bGUoKS0+Ym94T3JpZW50KCkgPT0gSE9SSVpPTlRBTAogICAgICAgICAgICAgICAg
ICYmIHBhcmVudCgpLT5pc1N0cmV0Y2hpbmdDaGlsZHJlbigpKSB7Ci0gICAgICAgICAgICBoID0g
TGVuZ3RoKHBhcmVudEJveCgpLT5jb250ZW50SGVpZ2h0KCkgLSBtYXJnaW5Ub3AoKSAtIG1hcmdp
bkJvdHRvbSgpIC0KLSAgICAgICAgICAgICAgICAgICAgICAgYm9yZGVyVG9wKCkgLSBwYWRkaW5n
VG9wKCkgLSBib3JkZXJCb3R0b20oKSAtIHBhZGRpbmdCb3R0b20oKSwgRml4ZWQpOworICAgICAg
ICAgICAgaCA9IExlbmd0aChwYXJlbnRCb3goKS0+Y29udGVudEhlaWdodCgpIC0gbWFyZ2luVG9w
KCkgLSBtYXJnaW5Cb3R0b20oKSAtIHBhZGRpbmdBbmRCb3JkZXJIZWlnaHQoKSwgRml4ZWQpOwog
ICAgICAgICAgICAgY2hlY2tNaW5NYXhIZWlnaHQgPSBmYWxzZTsKICAgICAgICAgfQogCkBAIC0x
NDkzLDcgKzE0OTIsNyBAQCB2b2lkIFJlbmRlckJveDo6Y2FsY0hlaWdodCgpCiAgICAgICAgICAg
ICAvLyBUaGUgb25seSB0aW1lcyB3ZSBkb24ndCBjaGVjayBtaW4vbWF4IGhlaWdodCBhcmUgd2hl
biBhIGZpeGVkIGxlbmd0aCBoYXMKICAgICAgICAgICAgIC8vIGJlZW4gZ2l2ZW4gYXMgYW4gb3Zl
cnJpZGUuICBKdXN0IHVzZSB0aGF0LiAgVGhlIHZhbHVlIGhhcyBhbHJlYWR5IGJlZW4gYWRqdXN0
ZWQKICAgICAgICAgICAgIC8vIGZvciBib3gtc2l6aW5nLgotICAgICAgICAgICAgaGVpZ2h0UmVz
dWx0ID0gaC52YWx1ZSgpICsgYm9yZGVyVG9wKCkgKyBib3JkZXJCb3R0b20oKSArIHBhZGRpbmdU
b3AoKSArIHBhZGRpbmdCb3R0b20oKTsKKyAgICAgICAgICAgIGhlaWdodFJlc3VsdCA9IGgudmFs
dWUoKSArIHBhZGRpbmdBbmRCb3JkZXJIZWlnaHQoKTsKICAgICAgICAgfQogCiAgICAgICAgIHNl
dEhlaWdodChoZWlnaHRSZXN1bHQpOwpAQCAtMTUxMiw5ICsxNTExLDcgQEAgdm9pZCBSZW5kZXJC
b3g6OmNhbGNIZWlnaHQoKQogICAgICAgICBpZiAoaXNSb290KCkpCiAgICAgICAgICAgICBzZXRI
ZWlnaHQobWF4KGhlaWdodCgpLCB2aXNIZWlnaHQgLSBtYXJnaW5zKSk7CiAgICAgICAgIGVsc2Ug
ewotICAgICAgICAgICAgaW50IG1hcmdpbnNCb3JkZXJzUGFkZGluZyA9IG1hcmdpbnMgKyBwYXJl
bnRCb3goKS0+bWFyZ2luVG9wKCkgKyBwYXJlbnRCb3goKS0+bWFyZ2luQm90dG9tKCkKLSAgICAg
ICAgICAgICAgICArIHBhcmVudEJveCgpLT5ib3JkZXJUb3AoKSArIHBhcmVudEJveCgpLT5ib3Jk
ZXJCb3R0b20oKQotICAgICAgICAgICAgICAgICsgcGFyZW50Qm94KCktPnBhZGRpbmdUb3AoKSAr
IHBhcmVudEJveCgpLT5wYWRkaW5nQm90dG9tKCk7CisgICAgICAgICAgICBpbnQgbWFyZ2luc0Jv
cmRlcnNQYWRkaW5nID0gbWFyZ2lucyArIHBhcmVudEJveCgpLT5tYXJnaW5Ub3AoKSArIHBhcmVu
dEJveCgpLT5tYXJnaW5Cb3R0b20oKSArIHBhcmVudEJveCgpLT5wYWRkaW5nQW5kQm9yZGVySGVp
Z2h0KCk7CiAgICAgICAgICAgICBzZXRIZWlnaHQobWF4KGhlaWdodCgpLCB2aXNIZWlnaHQgLSBt
YXJnaW5zQm9yZGVyc1BhZGRpbmcpKTsKICAgICAgICAgfQogICAgIH0KQEAgLTE2MDgsNyArMTYw
NSw3IEBAIGludCBSZW5kZXJCb3g6OmNhbGNQZXJjZW50YWdlSGVpZ2h0KGNvbnN0IExlbmd0aCYg
aGVpZ2h0KQogICAgICAgICAgICAgLy8gSXQgaXMgbmVjZXNzYXJ5IHRvIHVzZSB0aGUgYm9yZGVy
LWJveCB0byBtYXRjaCBXaW5JRSdzIGJyb2tlbgogICAgICAgICAgICAgLy8gYm94IG1vZGVsLiAg
VGhpcyBpcyBlc3NlbnRpYWwgZm9yIHNpemluZyBpbnNpZGUKICAgICAgICAgICAgIC8vIHRhYmxl
IGNlbGxzIHVzaW5nIHBlcmNlbnRhZ2UgaGVpZ2h0cy4KLSAgICAgICAgICAgIHJlc3VsdCAtPSAo
Ym9yZGVyVG9wKCkgKyBwYWRkaW5nVG9wKCkgKyBib3JkZXJCb3R0b20oKSArIHBhZGRpbmdCb3R0
b20oKSk7CisgICAgICAgICAgICByZXN1bHQgLT0gcGFkZGluZ0FuZEJvcmRlckhlaWdodCgpOwog
ICAgICAgICAgICAgcmVzdWx0ID0gbWF4KDAsIHJlc3VsdCk7CiAgICAgICAgIH0KICAgICB9CkBA
IC0xNjgxLDggKzE2NzgsNyBAQCBpbnQgUmVuZGVyQm94OjpjYWxjUmVwbGFjZWRIZWlnaHRVc2lu
ZyhMZW5ndGggaGVpZ2h0KSBjb25zdAogICAgICAgICAgICAgICAgIC8vIERvbid0IGxldCB0YWJs
ZSBjZWxscyBzcXVlZXplIHBlcmNlbnQtaGVpZ2h0IHJlcGxhY2VkIGVsZW1lbnRzCiAgICAgICAg
ICAgICAgICAgLy8gPGh0dHA6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MzU5
PgogICAgICAgICAgICAgICAgIGF2YWlsYWJsZUhlaWdodCA9IG1heChhdmFpbGFibGVIZWlnaHQs
IGludHJpbnNpY1NpemUoKS5oZWlnaHQoKSk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGhlaWdo
dC5jYWxjVmFsdWUoYXZhaWxhYmxlSGVpZ2h0IC0gKGJvcmRlclRvcCgpICsgYm9yZGVyQm90dG9t
KCkKLSAgICAgICAgICAgICAgICAgICAgKyBwYWRkaW5nVG9wKCkgKyBwYWRkaW5nQm90dG9tKCkp
KTsKKyAgICAgICAgICAgICAgICByZXR1cm4gaGVpZ2h0LmNhbGNWYWx1ZShhdmFpbGFibGVIZWln
aHQgLSBwYWRkaW5nQW5kQm9yZGVySGVpZ2h0KCkpOwogICAgICAgICAgICAgfQogCiAgICAgICAg
ICAgICByZXR1cm4gY2FsY0NvbnRlbnRCb3hIZWlnaHQoaGVpZ2h0LmNhbGNWYWx1ZShhdmFpbGFi
bGVIZWlnaHQpKTsKQEAgLTE3MDksNyArMTcwNSw3IEBAIGludCBSZW5kZXJCb3g6OmF2YWlsYWJs
ZUhlaWdodFVzaW5nKGNvbnN0IExlbmd0aCYgaCkgY29uc3QKICAgICAvLyBhcnRpZmljaWFsbHku
ICBXZSdyZSBnb2luZyB0byByZWx5IG9uIHRoaXMgY2VsbCBnZXR0aW5nIGV4cGFuZGVkIHRvIHNv
bWUgbmV3CiAgICAgLy8gaGVpZ2h0LCBhbmQgdGhlbiB3aGVuIHdlIGxheSBvdXQgYWdhaW4gd2Un
bGwgdXNlIHRoZSBjYWxjdWxhdGlvbiBiZWxvdy4KICAgICBpZiAoaXNUYWJsZUNlbGwoKSAmJiAo
aC5pc0F1dG8oKSB8fCBoLmlzUGVyY2VudCgpKSkKLSAgICAgICAgcmV0dXJuIG92ZXJyaWRlU2l6
ZSgpIC0gKGJvcmRlckxlZnQoKSArIGJvcmRlclJpZ2h0KCkgKyBwYWRkaW5nTGVmdCgpICsgcGFk
ZGluZ1JpZ2h0KCkpOworICAgICAgICByZXR1cm4gb3ZlcnJpZGVTaXplKCkgLSBwYWRkaW5nQW5k
Qm9yZGVyV2lkdGgoKTsKIAogICAgIGlmIChoLmlzUGVyY2VudCgpKQogICAgICAgIHJldHVybiBj
YWxjQ29udGVudEJveEhlaWdodChoLmNhbGNWYWx1ZShjb250YWluaW5nQmxvY2soKS0+YXZhaWxh
YmxlSGVpZ2h0KCkpKTsKQEAgLTE4MjYsNyArMTgyMiw3IEBAIHZvaWQgUmVuZGVyQm94OjpjYWxj
QWJzb2x1dGVIb3Jpem9udGFsKCkKICAgICAvLyBpbnN0ZWFkIG9mIHRoZSB0aGUgY29udGFpbmVy
IGJsb2NrJ3MuCiAgICAgVGV4dERpcmVjdGlvbiBjb250YWluZXJEaXJlY3Rpb24gPSAoc3R5bGUo
KS0+aHRtbEhhY2tzKCkpID8gcGFyZW50KCktPnN0eWxlKCktPmRpcmVjdGlvbigpIDogY29udGFp
bmVyQmxvY2stPnN0eWxlKCktPmRpcmVjdGlvbigpOwogCi0gICAgY29uc3QgaW50IGJvcmRlcnNQ
bHVzUGFkZGluZyA9IGJvcmRlckxlZnQoKSArIGJvcmRlclJpZ2h0KCkgKyBwYWRkaW5nTGVmdCgp
ICsgcGFkZGluZ1JpZ2h0KCk7CisgICAgY29uc3QgaW50IGJvcmRlcnNQbHVzUGFkZGluZyA9IHBh
ZGRpbmdBbmRCb3JkZXJXaWR0aCgpOwogICAgIGNvbnN0IExlbmd0aCBtYXJnaW5MZWZ0ID0gc3R5
bGUoKS0+bWFyZ2luTGVmdCgpOwogICAgIGNvbnN0IExlbmd0aCBtYXJnaW5SaWdodCA9IHN0eWxl
KCktPm1hcmdpblJpZ2h0KCk7CiAgICAgTGVuZ3RoIGxlZnQgPSBzdHlsZSgpLT5sZWZ0KCk7CkBA
IC0yMTM1LDcgKzIxMzEsNyBAQCB2b2lkIFJlbmRlckJveDo6Y2FsY0Fic29sdXRlVmVydGljYWwo
KQogCiAgICAgY29uc3QgaW50IGNvbnRhaW5lckhlaWdodCA9IGNvbnRhaW5pbmdCbG9ja0hlaWdo
dEZvclBvc2l0aW9uZWQoY29udGFpbmVyQmxvY2spOwogCi0gICAgY29uc3QgaW50IGJvcmRlcnNQ
bHVzUGFkZGluZyA9IGJvcmRlclRvcCgpICsgYm9yZGVyQm90dG9tKCkgKyBwYWRkaW5nVG9wKCkg
KyBwYWRkaW5nQm90dG9tKCk7CisgICAgY29uc3QgaW50IGJvcmRlcnNQbHVzUGFkZGluZyA9IHBh
ZGRpbmdBbmRCb3JkZXJIZWlnaHQoKTsKICAgICBjb25zdCBMZW5ndGggbWFyZ2luVG9wID0gc3R5
bGUoKS0+bWFyZ2luVG9wKCk7CiAgICAgY29uc3QgTGVuZ3RoIG1hcmdpbkJvdHRvbSA9IHN0eWxl
KCktPm1hcmdpbkJvdHRvbSgpOwogICAgIExlbmd0aCB0b3AgPSBzdHlsZSgpLT50b3AoKTsKQEAg
LTIzNzYsNyArMjM3Miw3IEBAIHZvaWQgUmVuZGVyQm94OjpjYWxjQWJzb2x1dGVIb3Jpem9udGFs
UmVwbGFjZWQoKQogICAgIC8vIE5PVEU6IFRoaXMgdmFsdWUgb2Ygd2lkdGggaXMgRklOQUwgaW4g
dGhhdCB0aGUgbWluL21heCB3aWR0aCBjYWxjdWxhdGlvbnMKICAgICAvLyBhcmUgZGVhbHQgd2l0
aCBpbiBjYWxjUmVwbGFjZWRXaWR0aCgpLiAgVGhpcyBtZWFucyB0aGF0IHRoZSBzdGVwcyB0byBw
cm9kdWNlCiAgICAgLy8gY29ycmVjdCBtYXgvbWluIGluIHRoZSBub24tcmVwbGFjZWQgdmVyc2lv
biwgYXJlIG5vdCBuZWNlc3NhcnkuCi0gICAgc2V0V2lkdGgoY2FsY1JlcGxhY2VkV2lkdGgoKSAr
IGJvcmRlckxlZnQoKSArIGJvcmRlclJpZ2h0KCkgKyBwYWRkaW5nTGVmdCgpICsgcGFkZGluZ1Jp
Z2h0KCkpOworICAgIHNldFdpZHRoKGNhbGNSZXBsYWNlZFdpZHRoKCkgKyBwYWRkaW5nQW5kQm9y
ZGVyV2lkdGgoKSk7CiAgICAgY29uc3QgaW50IGF2YWlsYWJsZVNwYWNlID0gY29udGFpbmVyV2lk
dGggLSB3aWR0aCgpOwogCiAgICAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSpcCkBAIC0yNTQ5LDcgKzI1NDUs
NyBAQCB2b2lkIFJlbmRlckJveDo6Y2FsY0Fic29sdXRlVmVydGljYWxSZXBsYWNlZCgpCiAgICAg
Ly8gTk9URTogVGhpcyB2YWx1ZSBvZiBoZWlnaHQgaXMgRklOQUwgaW4gdGhhdCB0aGUgbWluL21h
eCBoZWlnaHQgY2FsY3VsYXRpb25zCiAgICAgLy8gYXJlIGRlYWx0IHdpdGggaW4gY2FsY1JlcGxh
Y2VkSGVpZ2h0KCkuICBUaGlzIG1lYW5zIHRoYXQgdGhlIHN0ZXBzIHRvIHByb2R1Y2UKICAgICAv
LyBjb3JyZWN0IG1heC9taW4gaW4gdGhlIG5vbi1yZXBsYWNlZCB2ZXJzaW9uLCBhcmUgbm90IG5l
Y2Vzc2FyeS4KLSAgICBzZXRIZWlnaHQoY2FsY1JlcGxhY2VkSGVpZ2h0KCkgKyBib3JkZXJUb3Ao
KSArIGJvcmRlckJvdHRvbSgpICsgcGFkZGluZ1RvcCgpICsgcGFkZGluZ0JvdHRvbSgpKTsKKyAg
ICBzZXRIZWlnaHQoY2FsY1JlcGxhY2VkSGVpZ2h0KCkgKyBwYWRkaW5nQW5kQm9yZGVySGVpZ2h0
KCkpOwogICAgIGNvbnN0IGludCBhdmFpbGFibGVTcGFjZSA9IGNvbnRhaW5lckhlaWdodCAtIGhl
aWdodCgpOwogCiAgICAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSpcCkBAIC0yNzM1LDggKzI3MzEsOCBAQCBW
aXNpYmxlUG9zaXRpb24gUmVuZGVyQm94Ojpwb3NpdGlvbkZvclBvaW50KGNvbnN0IEludFBvaW50
JiBwb2ludCkKICAgICBpbnQgeVBvcyA9IHBvaW50LnkoKTsKIAogICAgIGlmIChpc1RhYmxlKCkg
JiYgbm9kZSgpKSB7Ci0gICAgICAgIGludCByaWdodCA9IGNvbnRlbnRXaWR0aCgpICsgYm9yZGVy
UmlnaHQoKSArIHBhZGRpbmdSaWdodCgpICsgYm9yZGVyTGVmdCgpICsgcGFkZGluZ0xlZnQoKTsK
LSAgICAgICAgaW50IGJvdHRvbSA9IGNvbnRlbnRIZWlnaHQoKSArIGJvcmRlclRvcCgpICsgcGFk
ZGluZ1RvcCgpICsgYm9yZGVyQm90dG9tKCkgKyBwYWRkaW5nQm90dG9tKCk7CisgICAgICAgIGlu
dCByaWdodCA9IGNvbnRlbnRXaWR0aCgpICsgcGFkZGluZ0FuZEJvcmRlcldpZHRoKCk7CisgICAg
ICAgIGludCBib3R0b20gPSBjb250ZW50SGVpZ2h0KCkgKyBwYWRkaW5nQW5kQm9yZGVySGVpZ2h0
KCk7CiAgICAgICAgIAogICAgICAgICBpZiAoeFBvcyA8IDAgfHwgeFBvcyA+IHJpZ2h0IHx8IHlQ
b3MgPCAwIHx8IHlQb3MgPiBib3R0b20pIHsKICAgICAgICAgICAgIGlmICh4UG9zIDw9IHJpZ2h0
IC8gMikKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0
LmggYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5oCmluZGV4IGRiNzUz
OGQuLjZhNWFhMGQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVs
T2JqZWN0LmgKKysrIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuaApA
QCAtNzUsNiArNzUsOSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBpbnQgYm9yZGVyTGVmdCgpIGNv
bnN0IHsgcmV0dXJuIHN0eWxlKCktPmJvcmRlckxlZnRXaWR0aCgpOyB9CiAgICAgdmlydHVhbCBp
bnQgYm9yZGVyUmlnaHQoKSBjb25zdCB7IHJldHVybiBzdHlsZSgpLT5ib3JkZXJSaWdodFdpZHRo
KCk7IH0KIAorICAgIGludCBwYWRkaW5nQW5kQm9yZGVySGVpZ2h0KCkgY29uc3QgeyByZXR1cm4g
Ym9yZGVyVG9wKCkgKyBib3JkZXJCb3R0b20oKSArIHBhZGRpbmdUb3AoKSArIHBhZGRpbmdCb3R0
b20oKTsgfQorICAgIGludCBwYWRkaW5nQW5kQm9yZGVyV2lkdGgoKSBjb25zdCB7IHJldHVybiBi
b3JkZXJMZWZ0KCkgKyBib3JkZXJSaWdodCgpICsgcGFkZGluZ0xlZnQoKSArIHBhZGRpbmdSaWdo
dCgpOyB9CisKICAgICB2aXJ0dWFsIGludCBtYXJnaW5Ub3AoKSBjb25zdCA9IDA7CiAgICAgdmly
dHVhbCBpbnQgbWFyZ2luQm90dG9tKCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgaW50IG1hcmdp
bkxlZnQoKSBjb25zdCA9IDA7CmRpZmYgLS1naXQgYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJE
YXRhR3JpZC5jcHAgYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJEYXRhR3JpZC5jcHAKaW5kZXgg
YmRmNzIzZi4uMTY2MGJmNCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRGF0
YUdyaWQuY3BwCisrKyBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckRhdGFHcmlkLmNwcApAQCAt
MTExLDcgKzExMSw3IEBAIHZvaWQgUmVuZGVyRGF0YUdyaWQ6OmNhbGNQcmVmV2lkdGhzKCkKICAg
ICAgICAgbV9taW5QcmVmV2lkdGggPSBtaW4obV9taW5QcmVmV2lkdGgsIGNhbGNDb250ZW50Qm94
V2lkdGgoc3R5bGUoKS0+bWF4V2lkdGgoKS52YWx1ZSgpKSk7CiAgICAgfQogCi0gICAgaW50IHRv
QWRkID0gcGFkZGluZ0xlZnQoKSArIHBhZGRpbmdSaWdodCgpICsgYm9yZGVyTGVmdCgpICsgYm9y
ZGVyUmlnaHQoKTsKKyAgICBpbnQgdG9BZGQgPSBwYWRkaW5nQW5kQm9yZGVyV2lkdGgoKTsKICAg
ICBtX21pblByZWZXaWR0aCArPSB0b0FkZDsKICAgICBtX21heFByZWZXaWR0aCArPSB0b0FkZDsK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCmRpZmYgLS1naXQgYS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJGaWVsZHNldC5jcHAgYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGaWVs
ZHNldC5jcHAKaW5kZXggZDhjYmQwMC4uZGFkNGI1NCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyRmllbGRzZXQuY3BwCisrKyBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZp
ZWxkc2V0LmNwcApAQCAtNTksNyArNTksNyBAQCB2b2lkIFJlbmRlckZpZWxkc2V0OjpjYWxjUHJl
ZldpZHRocygpCiAgICAgICAgIGlmIChsZWdlbmRNYXJnaW5SaWdodC5pc0ZpeGVkKCkpCiAgICAg
ICAgICAgICBsZWdlbmRNaW5XaWR0aCArPSBsZWdlbmRNYXJnaW5SaWdodC52YWx1ZSgpOwogCi0g
ICAgICAgIG1fbWluUHJlZldpZHRoID0gbWF4KG1fbWluUHJlZldpZHRoLCBsZWdlbmRNaW5XaWR0
aCArIHBhZGRpbmdMZWZ0KCkgKyBwYWRkaW5nUmlnaHQoKSArIGJvcmRlckxlZnQoKSArIGJvcmRl
clJpZ2h0KCkpOworICAgICAgICBtX21pblByZWZXaWR0aCA9IG1heChtX21pblByZWZXaWR0aCwg
bGVnZW5kTWluV2lkdGggKyBwYWRkaW5nQW5kQm9yZGVyV2lkdGgoKSk7CiAgICAgfQogfQogCmRp
ZmYgLS1naXQgYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGaWxlVXBsb2FkQ29udHJvbC5jcHAg
Yi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGaWxlVXBsb2FkQ29udHJvbC5jcHAKaW5kZXggNmE1
YzFlMC4uOWZjZjJiNCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmlsZVVw
bG9hZENvbnRyb2wuY3BwCisrKyBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZpbGVVcGxvYWRD
b250cm9sLmNwcApAQCAtMjg1LDcgKzI4NSw3IEBAIHZvaWQgUmVuZGVyRmlsZVVwbG9hZENvbnRy
b2w6OmNhbGNQcmVmV2lkdGhzKCkKICAgICAgICAgbV9taW5QcmVmV2lkdGggPSBtaW4obV9taW5Q
cmVmV2lkdGgsIGNhbGNDb250ZW50Qm94V2lkdGgoc3R5bGUoKS0+bWF4V2lkdGgoKS52YWx1ZSgp
KSk7CiAgICAgfQogCi0gICAgaW50IHRvQWRkID0gcGFkZGluZ0xlZnQoKSArIHBhZGRpbmdSaWdo
dCgpICsgYm9yZGVyTGVmdCgpICsgYm9yZGVyUmlnaHQoKTsKKyAgICBpbnQgdG9BZGQgPSBwYWRk
aW5nQW5kQm9yZGVyV2lkdGgoKTsKICAgICBtX21pblByZWZXaWR0aCArPSB0b0FkZDsKICAgICBt
X21heFByZWZXaWR0aCArPSB0b0FkZDsKIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyRmxleGlibGVCb3guY3BwIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmxleGlibGVC
b3guY3BwCmluZGV4IDc5OTFiNjEuLjhiNDI0YzIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckZsZXhpYmxlQm94LmNwcAorKysgYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJG
bGV4aWJsZUJveC5jcHAKQEAgLTE5MCw3ICsxOTAsNyBAQCB2b2lkIFJlbmRlckZsZXhpYmxlQm94
OjpjYWxjUHJlZldpZHRocygpCiAgICAgICAgIG1fbWluUHJlZldpZHRoID0gbWluKG1fbWluUHJl
ZldpZHRoLCBjYWxjQ29udGVudEJveFdpZHRoKHN0eWxlKCktPm1heFdpZHRoKCkudmFsdWUoKSkp
OwogICAgIH0KIAotICAgIGludCB0b0FkZCA9IGJvcmRlckxlZnQoKSArIGJvcmRlclJpZ2h0KCkg
KyBwYWRkaW5nTGVmdCgpICsgcGFkZGluZ1JpZ2h0KCk7CisgICAgaW50IHRvQWRkID0gcGFkZGlu
Z0FuZEJvcmRlcldpZHRoKCk7CiAgICAgCiAgICAgaWYgKGhhc092ZXJmbG93Q2xpcCgpICYmIHN0
eWxlKCktPm92ZXJmbG93WSgpID09IE9TQ1JPTEwpCiAgICAgICAgIHRvQWRkICs9IHZlcnRpY2Fs
U2Nyb2xsYmFyV2lkdGgoKTsKQEAgLTEwMTksNyArMTAxOSw3IEBAIGludCBSZW5kZXJGbGV4aWJs
ZUJveDo6YWxsb3dlZENoaWxkRmxleChSZW5kZXJCb3gqIGNoaWxkLCBib29sIGV4cGFuZGluZywg
dW5zaWduCiAgICAgICAgIGlmIChpc0hvcml6b250YWwoKSkgewogICAgICAgICAgICAgLy8gRklY
TUU6IEZvciBub3cganVzdCBoYW5kbGUgZml4ZWQgdmFsdWVzLgogICAgICAgICAgICAgaW50IG1h
eFcgPSBJTlRfTUFYOwotICAgICAgICAgICAgaW50IHcgPSBjaGlsZC0+b3ZlcnJpZGVXaWR0aCgp
IC0gKGNoaWxkLT5ib3JkZXJMZWZ0KCkgKyBjaGlsZC0+Ym9yZGVyUmlnaHQoKSArIGNoaWxkLT5w
YWRkaW5nTGVmdCgpICsgY2hpbGQtPnBhZGRpbmdSaWdodCgpKTsKKyAgICAgICAgICAgIGludCB3
ID0gY2hpbGQtPm92ZXJyaWRlV2lkdGgoKSAtIGNoaWxkLT5wYWRkaW5nQW5kQm9yZGVyV2lkdGgo
KTsKICAgICAgICAgICAgIGlmICghY2hpbGQtPnN0eWxlKCktPm1heFdpZHRoKCkuaXNVbmRlZmlu
ZWQoKSAmJgogICAgICAgICAgICAgICAgIGNoaWxkLT5zdHlsZSgpLT5tYXhXaWR0aCgpLmlzRml4
ZWQoKSkKICAgICAgICAgICAgICAgICBtYXhXID0gY2hpbGQtPnN0eWxlKCktPm1heFdpZHRoKCku
dmFsdWUoKTsKQEAgLTEwMzMsNyArMTAzMyw3IEBAIGludCBSZW5kZXJGbGV4aWJsZUJveDo6YWxs
b3dlZENoaWxkRmxleChSZW5kZXJCb3gqIGNoaWxkLCBib29sIGV4cGFuZGluZywgdW5zaWduCiAg
ICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAvLyBGSVhNRTogRm9yIG5vdyBqdXN0IGhhbmRs
ZSBmaXhlZCB2YWx1ZXMuCiAgICAgICAgICAgICBpbnQgbWF4SCA9IElOVF9NQVg7Ci0gICAgICAg
ICAgICBpbnQgaCA9IGNoaWxkLT5vdmVycmlkZUhlaWdodCgpIC0gKGNoaWxkLT5ib3JkZXJUb3Ao
KSArIGNoaWxkLT5ib3JkZXJCb3R0b20oKSArIGNoaWxkLT5wYWRkaW5nVG9wKCkgKyBjaGlsZC0+
cGFkZGluZ0JvdHRvbSgpKTsKKyAgICAgICAgICAgIGludCBoID0gY2hpbGQtPm92ZXJyaWRlSGVp
Z2h0KCkgLSBjaGlsZC0+cGFkZGluZ0FuZEJvcmRlckhlaWdodCgpOwogICAgICAgICAgICAgaWYg
KCFjaGlsZC0+c3R5bGUoKS0+bWF4SGVpZ2h0KCkuaXNVbmRlZmluZWQoKSAmJgogICAgICAgICAg
ICAgICAgIGNoaWxkLT5zdHlsZSgpLT5tYXhIZWlnaHQoKS5pc0ZpeGVkKCkpCiAgICAgICAgICAg
ICAgICAgbWF4SCA9IGNoaWxkLT5zdHlsZSgpLT5tYXhIZWlnaHQoKS52YWx1ZSgpOwpAQCAtMTA0
Niw3ICsxMDQ2LDcgQEAgaW50IFJlbmRlckZsZXhpYmxlQm94OjphbGxvd2VkQ2hpbGRGbGV4KFJl
bmRlckJveCogY2hpbGQsIGJvb2wgZXhwYW5kaW5nLCB1bnNpZ24KICAgICAvLyBGSVhNRTogRm9y
IG5vdyBqdXN0IGhhbmRsZSBmaXhlZCB2YWx1ZXMuCiAgICAgaWYgKGlzSG9yaXpvbnRhbCgpKSB7
CiAgICAgICAgIGludCBtaW5XID0gY2hpbGQtPm1pblByZWZXaWR0aCgpOwotICAgICAgICBpbnQg
dyA9IGNoaWxkLT5vdmVycmlkZVdpZHRoKCkgLSAoY2hpbGQtPmJvcmRlckxlZnQoKSArIGNoaWxk
LT5ib3JkZXJSaWdodCgpICsgY2hpbGQtPnBhZGRpbmdMZWZ0KCkgKyBjaGlsZC0+cGFkZGluZ1Jp
Z2h0KCkpOworICAgICAgICBpbnQgdyA9IGNoaWxkLT5vdmVycmlkZVdpZHRoKCkgLSBjaGlsZC0+
cGFkZGluZ0FuZEJvcmRlcldpZHRoKCk7CiAgICAgICAgIGlmIChjaGlsZC0+c3R5bGUoKS0+bWlu
V2lkdGgoKS5pc0ZpeGVkKCkpCiAgICAgICAgICAgICBtaW5XID0gY2hpbGQtPnN0eWxlKCktPm1p
bldpZHRoKCkudmFsdWUoKTsKICAgICAgICAgZWxzZSBpZiAoY2hpbGQtPnN0eWxlKCktPm1pbldp
ZHRoKCkudHlwZSgpID09IEludHJpbnNpYykKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckltYWdlLmNwcCBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlLmNwcAppbmRl
eCBmNmZkMTM1Li5kZjc3Y2NiIDEwMDY0NAotLS0gYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJ
bWFnZS5jcHAKKysrIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2UuY3BwCkBAIC02Mzcs
NyArNjM3LDcgQEAgdm9pZCBSZW5kZXJJbWFnZTo6Y2FsY1ByZWZXaWR0aHMoKQogewogICAgIEFT
U0VSVChwcmVmV2lkdGhzRGlydHkoKSk7CiAKLSAgICBpbnQgcGFkZGluZ0FuZEJvcmRlcnMgPSBw
YWRkaW5nTGVmdCgpICsgcGFkZGluZ1JpZ2h0KCkgKyBib3JkZXJMZWZ0KCkgKyBib3JkZXJSaWdo
dCgpOworICAgIGludCBwYWRkaW5nQW5kQm9yZGVycyA9IHBhZGRpbmdBbmRCb3JkZXJXaWR0aCgp
OwogICAgIG1fbWF4UHJlZldpZHRoID0gY2FsY1JlcGxhY2VkV2lkdGgoZmFsc2UpICsgcGFkZGlu
Z0FuZEJvcmRlcnM7CiAKICAgICBpZiAoc3R5bGUoKS0+bWF4V2lkdGgoKS5pc0ZpeGVkKCkgJiYg
c3R5bGUoKS0+bWF4V2lkdGgoKS52YWx1ZSgpICE9IHVuZGVmaW5lZExlbmd0aCkKZGlmZiAtLWdp
dCBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcCBiL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckxheWVyLmNwcAppbmRleCBlYzA5ODg2Li5lNjM0NWFiIDEwMDY0NAotLS0gYS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAKKysrIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyTGF5ZXIuY3BwCkBAIC0xNTM4LDggKzE1MzgsNyBAQCB2b2lkIFJlbmRlckxheWVyOjpyZXNp
emUoY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JiBldnQsIGNvbnN0IEludFNpemUmIG9sZE9mZnNl
dAogICAgICAgICAgICAgc3R5bGUtPnNldFByb3BlcnR5KENTU1Byb3BlcnR5TWFyZ2luTGVmdCwg
U3RyaW5nOjpudW1iZXIocmVuZGVyZXItPm1hcmdpbkxlZnQoKSAvIHpvb21GYWN0b3IpICsgInB4
IiwgZmFsc2UsIGVjKTsKICAgICAgICAgICAgIHN0eWxlLT5zZXRQcm9wZXJ0eShDU1NQcm9wZXJ0
eU1hcmdpblJpZ2h0LCBTdHJpbmc6Om51bWJlcihyZW5kZXJlci0+bWFyZ2luUmlnaHQoKSAvIHpv
b21GYWN0b3IpICsgInB4IiwgZmFsc2UsIGVjKTsKICAgICAgICAgfQotICAgICAgICBpbnQgYmFz
ZVdpZHRoID0gcmVuZGVyZXItPndpZHRoKCkgLSAoaXNCb3hTaXppbmdCb3JkZXIgPyAwCi0gICAg
ICAgICAgICA6IHJlbmRlcmVyLT5ib3JkZXJMZWZ0KCkgKyByZW5kZXJlci0+cGFkZGluZ0xlZnQo
KSArIHJlbmRlcmVyLT5ib3JkZXJSaWdodCgpICsgcmVuZGVyZXItPnBhZGRpbmdSaWdodCgpKTsK
KyAgICAgICAgaW50IGJhc2VXaWR0aCA9IHJlbmRlcmVyLT53aWR0aCgpIC0gKGlzQm94U2l6aW5n
Qm9yZGVyID8gMCA6IHJlbmRlcmVyLT5wYWRkaW5nQW5kQm9yZGVyV2lkdGgoKSk7CiAgICAgICAg
IGJhc2VXaWR0aCA9IGJhc2VXaWR0aCAvIHpvb21GYWN0b3I7CiAgICAgICAgIHN0eWxlLT5zZXRQ
cm9wZXJ0eShDU1NQcm9wZXJ0eVdpZHRoLCBTdHJpbmc6Om51bWJlcihiYXNlV2lkdGggKyBkaWZm
ZXJlbmNlLndpZHRoKCkpICsgInB4IiwgZmFsc2UsIGVjKTsKICAgICB9CkBAIC0xNTUwLDggKzE1
NDksNyBAQCB2b2lkIFJlbmRlckxheWVyOjpyZXNpemUoY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50
JiBldnQsIGNvbnN0IEludFNpemUmIG9sZE9mZnNldAogICAgICAgICAgICAgc3R5bGUtPnNldFBy
b3BlcnR5KENTU1Byb3BlcnR5TWFyZ2luVG9wLCBTdHJpbmc6Om51bWJlcihyZW5kZXJlci0+bWFy
Z2luVG9wKCkgLyB6b29tRmFjdG9yKSArICJweCIsIGZhbHNlLCBlYyk7CiAgICAgICAgICAgICBz
dHlsZS0+c2V0UHJvcGVydHkoQ1NTUHJvcGVydHlNYXJnaW5Cb3R0b20sIFN0cmluZzo6bnVtYmVy
KHJlbmRlcmVyLT5tYXJnaW5Cb3R0b20oKSAvIHpvb21GYWN0b3IpICsgInB4IiwgZmFsc2UsIGVj
KTsKICAgICAgICAgfQotICAgICAgICBpbnQgYmFzZUhlaWdodCA9IHJlbmRlcmVyLT5oZWlnaHQo
KSAtIChpc0JveFNpemluZ0JvcmRlciA/IDAKLSAgICAgICAgICAgIDogcmVuZGVyZXItPmJvcmRl
clRvcCgpICsgcmVuZGVyZXItPnBhZGRpbmdUb3AoKSArIHJlbmRlcmVyLT5ib3JkZXJCb3R0b20o
KSArIHJlbmRlcmVyLT5wYWRkaW5nQm90dG9tKCkpOworICAgICAgICBpbnQgYmFzZUhlaWdodCA9
IHJlbmRlcmVyLT5oZWlnaHQoKSAtIChpc0JveFNpemluZ0JvcmRlciA/IDAgOiByZW5kZXJlci0+
cGFkZGluZ0FuZEJvcmRlckhlaWdodCgpKTsKICAgICAgICAgYmFzZUhlaWdodCA9IGJhc2VIZWln
aHQgLyB6b29tRmFjdG9yOwogICAgICAgICBzdHlsZS0+c2V0UHJvcGVydHkoQ1NTUHJvcGVydHlI
ZWlnaHQsIFN0cmluZzo6bnVtYmVyKGJhc2VIZWlnaHQgKyBkaWZmZXJlbmNlLmhlaWdodCgpKSAr
ICJweCIsIGZhbHNlLCBlYyk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyTGlzdEJveC5jcHAgYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0Qm94LmNwcApp
bmRleCAxNWM2NTJjLi4zZDViMGYwIDEwMDY0NAotLS0gYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJMaXN0Qm94LmNwcAorKysgYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0Qm94LmNwcApA
QCAtMTg4LDcgKzE4OCw3IEBAIHZvaWQgUmVuZGVyTGlzdEJveDo6Y2FsY1ByZWZXaWR0aHMoKQog
ICAgICAgICBtX21pblByZWZXaWR0aCA9IG1pbihtX21pblByZWZXaWR0aCwgY2FsY0NvbnRlbnRC
b3hXaWR0aChzdHlsZSgpLT5tYXhXaWR0aCgpLnZhbHVlKCkpKTsKICAgICB9CiAKLSAgICBpbnQg
dG9BZGQgPSBwYWRkaW5nTGVmdCgpICsgcGFkZGluZ1JpZ2h0KCkgKyBib3JkZXJMZWZ0KCkgKyBi
b3JkZXJSaWdodCgpOworICAgIGludCB0b0FkZCA9IHBhZGRpbmdBbmRCb3JkZXJXaWR0aCgpOwog
ICAgIG1fbWluUHJlZldpZHRoICs9IHRvQWRkOwogICAgIG1fbWF4UHJlZldpZHRoICs9IHRvQWRk
OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKQEAgLTIyMSw3ICsyMjEsNyBAQCBp
bnQgUmVuZGVyTGlzdEJveDo6bGlzdEhlaWdodCgpIGNvbnN0CiAKIHZvaWQgUmVuZGVyTGlzdEJv
eDo6Y2FsY0hlaWdodCgpCiB7Ci0gICAgaW50IHRvQWRkID0gcGFkZGluZ1RvcCgpICsgcGFkZGlu
Z0JvdHRvbSgpICsgYm9yZGVyVG9wKCkgKyBib3JkZXJCb3R0b20oKTsKKyAgICBpbnQgdG9BZGQg
PSBwYWRkaW5nQW5kQm9yZGVySGVpZ2h0KCk7CiAgCiAgICAgaW50IGl0ZW1IZWlnaHQgPSBSZW5k
ZXJMaXN0Qm94OjppdGVtSGVpZ2h0KCk7CiAgICAgc2V0SGVpZ2h0KGl0ZW1IZWlnaHQgKiBzaXpl
KCkgLSByb3dTcGFjaW5nICsgdG9BZGQpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyTWVudUxpc3QuY3BwIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTWVudUxpc3QuY3Bw
CmluZGV4IDUxODkyNWEuLjIxYWM1OGUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlck1lbnVMaXN0LmNwcAorKysgYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNZW51TGlzdC5j
cHAKQEAgLTI2Miw3ICsyNjIsNyBAQCB2b2lkIFJlbmRlck1lbnVMaXN0OjpjYWxjUHJlZldpZHRo
cygpCiAgICAgICAgIG1fbWluUHJlZldpZHRoID0gbWluKG1fbWluUHJlZldpZHRoLCBjYWxjQ29u
dGVudEJveFdpZHRoKHN0eWxlKCktPm1heFdpZHRoKCkudmFsdWUoKSkpOwogICAgIH0KIAotICAg
IGludCB0b0FkZCA9IHBhZGRpbmdMZWZ0KCkgKyBwYWRkaW5nUmlnaHQoKSArIGJvcmRlckxlZnQo
KSArIGJvcmRlclJpZ2h0KCk7CisgICAgaW50IHRvQWRkID0gcGFkZGluZ0FuZEJvcmRlcldpZHRo
KCk7CiAgICAgbV9taW5QcmVmV2lkdGggKz0gdG9BZGQ7CiAgICAgbV9tYXhQcmVmV2lkdGggKz0g
dG9BZGQ7CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJlcGxhY2VkLmNw
cCBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJlcGxhY2VkLmNwcAppbmRleCAwYmE5OWY1Li41
OGEwNDQ5IDEwMDY0NAotLS0gYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJSZXBsYWNlZC5jcHAK
KysrIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVwbGFjZWQuY3BwCkBAIC0xOTYsNyArMTk2
LDcgQEAgdm9pZCBSZW5kZXJSZXBsYWNlZDo6Y2FsY1ByZWZXaWR0aHMoKQogewogICAgIEFTU0VS
VChwcmVmV2lkdGhzRGlydHkoKSk7CiAKLSAgICBpbnQgcGFkZGluZ0FuZEJvcmRlcnMgPSBwYWRk
aW5nTGVmdCgpICsgcGFkZGluZ1JpZ2h0KCkgKyBib3JkZXJMZWZ0KCkgKyBib3JkZXJSaWdodCgp
OworICAgIGludCBwYWRkaW5nQW5kQm9yZGVycyA9IHBhZGRpbmdBbmRCb3JkZXJXaWR0aCgpOwog
ICAgIGludCB3aWR0aCA9IGNhbGNSZXBsYWNlZFdpZHRoKGZhbHNlKSArIHBhZGRpbmdBbmRCb3Jk
ZXJzOwogCiAgICAgaWYgKHN0eWxlKCktPm1heFdpZHRoKCkuaXNGaXhlZCgpICYmIHN0eWxlKCkt
Pm1heFdpZHRoKCkudmFsdWUoKSAhPSB1bmRlZmluZWRMZW5ndGgpCmRpZmYgLS1naXQgYS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJTVkdSb290LmNwcCBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
clNWR1Jvb3QuY3BwCmluZGV4IDVlZDA4NzEuLmI2ZDI0MGMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclNWR1Jvb3QuY3BwCisrKyBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
clNWR1Jvb3QuY3BwCkBAIC02Miw3ICs2Miw3IEBAIHZvaWQgUmVuZGVyU1ZHUm9vdDo6Y2FsY1By
ZWZXaWR0aHMoKQogewogICAgIEFTU0VSVChwcmVmV2lkdGhzRGlydHkoKSk7CiAKLSAgICBpbnQg
cGFkZGluZ0FuZEJvcmRlcnMgPSBwYWRkaW5nTGVmdCgpICsgcGFkZGluZ1JpZ2h0KCkgKyBib3Jk
ZXJMZWZ0KCkgKyBib3JkZXJSaWdodCgpOworICAgIGludCBwYWRkaW5nQW5kQm9yZGVycyA9IHBh
ZGRpbmdBbmRCb3JkZXJXaWR0aCgpOwogICAgIGludCB3aWR0aCA9IGNhbGNSZXBsYWNlZFdpZHRo
KGZhbHNlKSArIHBhZGRpbmdBbmRCb3JkZXJzOwogCiAgICAgaWYgKHN0eWxlKCktPm1heFdpZHRo
KCkuaXNGaXhlZCgpICYmIHN0eWxlKCktPm1heFdpZHRoKCkudmFsdWUoKSAhPSB1bmRlZmluZWRM
ZW5ndGgpCkBAIC0yMTgsMTEgKzIxOCwxMSBAQCB2b2lkIFJlbmRlclNWR1Jvb3Q6OmNhbGNWaWV3
cG9ydCgpCiAvLyByZWxhdGl2ZSB0byBvdXIgYm9yZGVyQm94IG9yaWdpbi4gIFRoaXMgbWV0aG9k
IGdpdmVzIHVzIGV4YWN0bHkgdGhhdC4KIEFmZmluZVRyYW5zZm9ybSBSZW5kZXJTVkdSb290Ojps
b2NhbFRvQm9yZGVyQm94VHJhbnNmb3JtKCkgY29uc3QKIHsKLSAgICBJbnRTaXplIGJvcmRlckFu
ZFBhZGRpbmcgPSBib3JkZXJPcmlnaW5Ub0NvbnRlbnRCb3goKTsKKyAgICBJbnRTaXplIHBhZGRp
bmdBbmRCb3JkZXIgPSBib3JkZXJPcmlnaW5Ub0NvbnRlbnRCb3goKTsKICAgICBTVkdTVkdFbGVt
ZW50KiBzdmcgPSBzdGF0aWNfY2FzdDxTVkdTVkdFbGVtZW50Kj4obm9kZSgpKTsKICAgICBmbG9h
dCBzY2FsZSA9IHN2Zy0+Y3VycmVudFNjYWxlKCk7CiAgICAgRmxvYXRQb2ludCB0cmFuc2xhdGUg
PSBzdmctPmN1cnJlbnRUcmFuc2xhdGUoKTsKLSAgICBBZmZpbmVUcmFuc2Zvcm0gY3RtKHNjYWxl
LCAwLCAwLCBzY2FsZSwgYm9yZGVyQW5kUGFkZGluZy53aWR0aCgpICsgdHJhbnNsYXRlLngoKSwg
Ym9yZGVyQW5kUGFkZGluZy5oZWlnaHQoKSArIHRyYW5zbGF0ZS55KCkpOworICAgIEFmZmluZVRy
YW5zZm9ybSBjdG0oc2NhbGUsIDAsIDAsIHNjYWxlLCBwYWRkaW5nQW5kQm9yZGVyLndpZHRoKCkg
KyB0cmFuc2xhdGUueCgpLCBib3JkZXJBbmRQYWRkaW5nLmhlaWdodCgpICsgdHJhbnNsYXRlLnko
KSk7CiAgICAgcmV0dXJuIHN2Zy0+dmlld0JveFRvVmlld1RyYW5zZm9ybSh3aWR0aCgpIC8gc2Nh
bGUsIGhlaWdodCgpIC8gc2NhbGUpICogY3RtOwogfQogCmRpZmYgLS1naXQgYS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJTbGlkZXIuY3BwIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2xpZGVy
LmNwcAppbmRleCA3MjlmZDE1Li4xYTdhN2M0IDEwMDY0NAotLS0gYS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJTbGlkZXIuY3BwCisrKyBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNsaWRlci5j
cHAKQEAgLTE4Miw3ICsxODIsNyBAQCB2b2lkIFJlbmRlclNsaWRlcjo6Y2FsY1ByZWZXaWR0aHMo
KQogICAgICAgICBtX21pblByZWZXaWR0aCA9IG1pbihtX21pblByZWZXaWR0aCwgY2FsY0NvbnRl
bnRCb3hXaWR0aChzdHlsZSgpLT5tYXhXaWR0aCgpLnZhbHVlKCkpKTsKICAgICB9CiAKLSAgICBp
bnQgdG9BZGQgPSBwYWRkaW5nTGVmdCgpICsgcGFkZGluZ1JpZ2h0KCkgKyBib3JkZXJMZWZ0KCkg
KyBib3JkZXJSaWdodCgpOworICAgIGludCB0b0FkZCA9IHBhZGRpbmdBbmRCb3JkZXJXaWR0aCgp
OwogICAgIG1fbWluUHJlZldpZHRoICs9IHRvQWRkOwogICAgIG1fbWF4UHJlZldpZHRoICs9IHRv
QWRkOwogCkBAIC0yNTYsOCArMjU2LDcgQEAgdm9pZCBSZW5kZXJTbGlkZXI6OmxheW91dCgpCiAK
ICAgICBSZW5kZXJCb3gqIHRodW1iID0gbV90aHVtYiA/IHRvUmVuZGVyQm94KG1fdGh1bWItPnJl
bmRlcmVyKCkpIDogMDsKIAotICAgIEludFNpemUgYmFzZVNpemUoYm9yZGVyTGVmdCgpICsgcGFk
ZGluZ0xlZnQoKSArIHBhZGRpbmdSaWdodCgpICsgYm9yZGVyUmlnaHQoKSwKLSAgICAgICAgYm9y
ZGVyVG9wKCkgKyBwYWRkaW5nVG9wKCkgKyBwYWRkaW5nQm90dG9tKCkgKyBib3JkZXJCb3R0b20o
KSk7CisgICAgSW50U2l6ZSBiYXNlU2l6ZShwYWRkaW5nQW5kQm9yZGVyV2lkdGgoKSwgcGFkZGlu
Z0FuZEJvcmRlckhlaWdodCgpKTsKIAogICAgIGlmICh0aHVtYikgewogICAgICAgICAvLyBBbGxv
dyB0aGUgdGhlbWUgdG8gc2V0IHRoZSBzaXplIG9mIHRoZSB0aHVtYi4KZGlmZiAtLWdpdCBhL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlQ2VsbC5jcHAgYi9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJUYWJsZUNlbGwuY3BwCmluZGV4IGIyODNhZTEuLmQ1M2MxN2EgMTAwNjQ0Ci0tLSBhL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlQ2VsbC5jcHAKKysrIGIvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyVGFibGVDZWxsLmNwcApAQCAtMTE1LDcgKzExNSw3IEBAIExlbmd0aCBSZW5kZXJU
YWJsZUNlbGw6OnN0eWxlT3JDb2xXaWR0aCgpIGNvbnN0CiAgICAgICAgIC8vIFBlcmNlbnRhZ2Vz
IGRvbid0IG5lZWQgdG8gYmUgaGFuZGxlZCBzaW5jZSB0aGV5J3JlIGFsd2F5cyB0cmVhdGVkIHRo
aXMgd2F5IChldmVuIHdoZW4gc3BlY2lmaWVkIG9uIHRoZSBjZWxscykuCiAgICAgICAgIC8vIFNl
ZSBCdWd6aWxsYSBidWcgODEyNiBmb3IgZGV0YWlscy4KICAgICAgICAgaWYgKGNvbFdpZHRoU3Vt
LmlzRml4ZWQoKSAmJiBjb2xXaWR0aFN1bS52YWx1ZSgpID4gMCkKLSAgICAgICAgICAgIGNvbFdp
ZHRoU3VtID0gTGVuZ3RoKG1heCgwLCBjb2xXaWR0aFN1bS52YWx1ZSgpIC0gYm9yZGVyTGVmdCgp
IC0gYm9yZGVyUmlnaHQoKSAtIHBhZGRpbmdMZWZ0KCkgLSBwYWRkaW5nUmlnaHQoKSksIEZpeGVk
KTsKKyAgICAgICAgICAgIGNvbFdpZHRoU3VtID0gTGVuZ3RoKG1heCgwLCBjb2xXaWR0aFN1bS52
YWx1ZSgpIC0gcGFkZGluZ0FuZEJvcmRlcldpZHRoKCkpLCBGaXhlZCk7CiAgICAgICAgIHJldHVy
biBjb2xXaWR0aFN1bTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlclRleHRDb250cm9sLmNwcCBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9s
LmNwcAppbmRleCA1ZTE5MzYyLi4wMTAwZjU5IDEwMDY0NAotLS0gYS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJUZXh0Q29udHJvbC5jcHAKKysrIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4
dENvbnRyb2wuY3BwCkBAIC0xNTEsMTMgKzE1MSwxMiBAQCB2b2lkIFJlbmRlclRleHRDb250cm9s
OjpjcmVhdGVTdWJ0cmVlSWZOZWVkZWQoVGV4dENvbnRyb2xJbm5lckVsZW1lbnQqIGlubmVyQmxv
YwogCiBpbnQgUmVuZGVyVGV4dENvbnRyb2w6OnRleHRCbG9ja0hlaWdodCgpIGNvbnN0CiB7Ci0g
ICAgcmV0dXJuIGhlaWdodCgpIC0gcGFkZGluZ1RvcCgpIC0gcGFkZGluZ0JvdHRvbSgpIC0gYm9y
ZGVyVG9wKCkgLSBib3JkZXJCb3R0b20oKTsKKyAgICByZXR1cm4gaGVpZ2h0KCkgLSBwYWRkaW5n
QW5kQm9yZGVySGVpZ2h0KCk7CiB9CiAKIGludCBSZW5kZXJUZXh0Q29udHJvbDo6dGV4dEJsb2Nr
V2lkdGgoKSBjb25zdAogewotICAgIHJldHVybiB3aWR0aCgpIC0gcGFkZGluZ0xlZnQoKSAtIHBh
ZGRpbmdSaWdodCgpIC0gYm9yZGVyTGVmdCgpIC0gYm9yZGVyUmlnaHQoKQotICAgICAgICAgICAt
IG1faW5uZXJUZXh0LT5yZW5kZXJCb3goKS0+cGFkZGluZ0xlZnQoKSAtIG1faW5uZXJUZXh0LT5y
ZW5kZXJCb3goKS0+cGFkZGluZ1JpZ2h0KCk7CisgICAgcmV0dXJuIHdpZHRoKCkgLSBwYWRkaW5n
QW5kQm9yZGVyV2lkdGgoKSAtIG1faW5uZXJUZXh0LT5yZW5kZXJCb3goKS0+cGFkZGluZ0xlZnQo
KSAtIG1faW5uZXJUZXh0LT5yZW5kZXJCb3goKS0+cGFkZGluZ1JpZ2h0KCk7CiB9CiAKIHZvaWQg
UmVuZGVyVGV4dENvbnRyb2w6OnVwZGF0ZUZyb21FbGVtZW50KCkKQEAgLTQxMCw3ICs0MDksNyBA
QCB2b2lkIFJlbmRlclRleHRDb250cm9sOjpjYWxjSGVpZ2h0KCkKICAgICAgICAgICAgICAgbV9p
bm5lclRleHQtPnJlbmRlckJveCgpLT5tYXJnaW5Ub3AoKSArIG1faW5uZXJUZXh0LT5yZW5kZXJC
b3goKS0+bWFyZ2luQm90dG9tKCkpOwogCiAgICAgYWRqdXN0Q29udHJvbEhlaWdodEJhc2VkT25M
aW5lSGVpZ2h0KG1faW5uZXJUZXh0LT5yZW5kZXJlcigpLT5saW5lSGVpZ2h0KHRydWUsIHRydWUp
KTsKLSAgICBzZXRIZWlnaHQoaGVpZ2h0KCkgKyBwYWRkaW5nVG9wKCkgKyBwYWRkaW5nQm90dG9t
KCkgKyBib3JkZXJUb3AoKSArIGJvcmRlckJvdHRvbSgpKTsKKyAgICBzZXRIZWlnaHQoaGVpZ2h0
KCkgKyBwYWRkaW5nQW5kQm9yZGVySGVpZ2h0KCkpOwogCiAgICAgLy8gV2UgYXJlIGFibGUgdG8g
aGF2ZSBhIGhvcml6b250YWwgc2Nyb2xsYmFyIGlmIHRoZSBvdmVyZmxvdyBzdHlsZSBpcyBzY3Jv
bGwsIG9yIGlmIGl0cyBhdXRvIGFuZCB0aGVyZSdzIG5vIHdvcmQgd3JhcC4KICAgICBpZiAoc3R5
bGUoKS0+b3ZlcmZsb3dYKCkgPT0gT1NDUk9MTCB8fCAgKHN0eWxlKCktPm92ZXJmbG93WCgpID09
IE9BVVRPICYmIG1faW5uZXJUZXh0LT5yZW5kZXJlcigpLT5zdHlsZSgpLT53b3JkV3JhcCgpID09
IE5vcm1hbFdvcmRXcmFwKSkKQEAgLTU0MSw3ICs1NDAsNyBAQCB2b2lkIFJlbmRlclRleHRDb250
cm9sOjpjYWxjUHJlZldpZHRocygpCiAgICAgICAgIG1fbWluUHJlZldpZHRoID0gbWluKG1fbWlu
UHJlZldpZHRoLCBjYWxjQ29udGVudEJveFdpZHRoKHN0eWxlKCktPm1heFdpZHRoKCkudmFsdWUo
KSkpOwogICAgIH0KIAotICAgIGludCB0b0FkZCA9IHBhZGRpbmdMZWZ0KCkgKyBwYWRkaW5nUmln
aHQoKSArIGJvcmRlckxlZnQoKSArIGJvcmRlclJpZ2h0KCk7CisgICAgaW50IHRvQWRkID0gcGFk
ZGluZ0FuZEJvcmRlcldpZHRoKCk7CiAKICAgICBtX21pblByZWZXaWR0aCArPSB0b0FkZDsKICAg
ICBtX21heFByZWZXaWR0aCArPSB0b0FkZDsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclRleHRDb250cm9sU2luZ2xlTGluZS5jcHAgYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJUZXh0Q29udHJvbFNpbmdsZUxpbmUuY3BwCmluZGV4IGE3NjJhYzUuLjk2YzE1ZTYgMTAwNjQ0
Ci0tLSBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sU2luZ2xlTGluZS5jcHAK
KysrIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5lLmNwcApA
QCAtMjIzLDcgKzIyMyw3IEBAIHZvaWQgUmVuZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5lOjpsYXlv
dXQoKQogICAgIGlubmVyVGV4dFJlbmRlcmVyLT5zdHlsZSgpLT5zZXRXaWR0aChMZW5ndGgoZGVz
aXJlZFdpZHRoLCBGaXhlZCkpOwogCiAgICAgaWYgKG1faW5uZXJCbG9jaykgewotICAgICAgICBp
bnQgaW5uZXJCbG9ja1dpZHRoID0gd2lkdGgoKSAtIHBhZGRpbmdMZWZ0KCkgLSBwYWRkaW5nUmln
aHQoKSAtIGJvcmRlckxlZnQoKSAtIGJvcmRlclJpZ2h0KCk7CisgICAgICAgIGludCBpbm5lckJs
b2NrV2lkdGggPSB3aWR0aCgpIC0gcGFkZGluZ0FuZEJvcmRlcldpZHRoKCk7CiAgICAgICAgIGlm
IChpbm5lckJsb2NrV2lkdGggIT0gaW5uZXJCbG9ja1JlbmRlcmVyLT53aWR0aCgpKQogICAgICAg
ICAgICAgcmVsYXlvdXRDaGlsZHJlbiA9IHRydWU7CiAgICAgICAgIGlubmVyQmxvY2tSZW5kZXJl
ci0+c3R5bGUoKS0+c2V0V2lkdGgoTGVuZ3RoKGlubmVyQmxvY2tXaWR0aCwgRml4ZWQpKTsKZGlm
ZiAtLWdpdCBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcldpZGdldC5jcHAgYi9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJXaWRnZXQuY3BwCmluZGV4IDk3YjMzYTUuLmQyNWYxMzggMTAwNjQ0Ci0t
LSBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcldpZGdldC5jcHAKKysrIGIvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyV2lkZ2V0LmNwcApAQCAtMzIwLDggKzMyMCw4IEBAIHZvaWQgUmVuZGVyV2lk
Z2V0Ojp1cGRhdGVXaWRnZXRQb3NpdGlvbigpCiAgICAgRmxvYXRQb2ludCBhYnNQb3MgPSBsb2Nh
bFRvQWJzb2x1dGUoKTsKICAgICBhYnNQb3MubW92ZShib3JkZXJMZWZ0KCkgKyBwYWRkaW5nTGVm
dCgpLCBib3JkZXJUb3AoKSArIHBhZGRpbmdUb3AoKSk7CiAKLSAgICBpbnQgdyA9IHdpZHRoKCkg
LSBib3JkZXJMZWZ0KCkgLSBib3JkZXJSaWdodCgpIC0gcGFkZGluZ0xlZnQoKSAtIHBhZGRpbmdS
aWdodCgpOwotICAgIGludCBoID0gaGVpZ2h0KCkgLSBib3JkZXJUb3AoKSAtIGJvcmRlckJvdHRv
bSgpIC0gcGFkZGluZ1RvcCgpIC0gcGFkZGluZ0JvdHRvbSgpOworICAgIGludCB3ID0gd2lkdGgo
KSAtIHBhZGRpbmdBbmRCb3JkZXJXaWR0aCgpOworICAgIGludCBoID0gaGVpZ2h0KCkgLSBwYWRk
aW5nQW5kQm9yZGVySGVpZ2h0KCk7CiAKICAgICBib29sIGJvdW5kc0NoYW5nZWQgPSBzZXRXaWRn
ZXRHZW9tZXRyeShJbnRSZWN0KGFic1Bvcy54KCksIGFic1Bvcy55KCksIHcsIGgpKTsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>54165</attachid>
            <date>2010-04-23 09:11:07 -0700</date>
            <delta_ts>2010-04-23 09:27:31 -0700</delta_ts>
            <desc>Patch v2</desc>
            <filename>bug-38046-20100423091105.patch</filename>
            <type>text/plain</type>
            <size>30830</size>
            <attacher name="Shinichiro Hamaji">hamaji</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
MzMzNWQ3Yy4uOTgzMzE0ZSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw3NCBAQAorMjAxMC0wNC0yMyAgU2hpbmljaGlybyBI
YW1hamkgIDxoYW1hamlAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIE5lZWQgcGFkZGluZ0FuZEJvcmRlcihXaWR0aHxIZWlnaHQp
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zODA0Ngor
CisgICAgICAgIFJlZmFjdG9yaW5nIG9ubHksIHNvIG5vIG5ldyB0ZXN0cy4KKworICAgICAgICAq
IHJlbmRlcmluZy9JbmxpbmVCb3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5saW5lQm94Ojpo
ZWlnaHQpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJBcHBsZXQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyQXBwbGV0OjpjcmVhdGVXaWRnZXRJZk5lY2Vzc2FyeSk6CisgICAgICAg
ICogcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJs
b2NrOjppc1NlbGZDb2xsYXBzaW5nQmxvY2spOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxv
Y2s6OmNhbGNQcmVmV2lkdGhzKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQm94LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveDo6Y2FsY0JvcmRlckJveFdpZHRoKToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlckJveDo6Y2FsY0JvcmRlckJveEhlaWdodCk6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJCb3g6OmNhbGNDb250ZW50Qm94V2lkdGgpOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyQm94OjpjYWxjQ29udGVudEJveEhlaWdodCk6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJCb3g6OmNhbGNXaWR0aCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3g6OmNhbGNI
ZWlnaHQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94OjpjYWxjUGVyY2VudGFnZUhlaWdo
dCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3g6OmNhbGNSZXBsYWNlZEhlaWdodFVzaW5n
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveDo6YXZhaWxhYmxlSGVpZ2h0VXNpbmcpOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94OjpjYWxjQWJzb2x1dGVIb3Jpem9udGFsKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlckJveDo6Y2FsY0Fic29sdXRlVmVydGljYWwpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyQm94OjpjYWxjQWJzb2x1dGVIb3Jpem9udGFsUmVwbGFjZWQpOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94OjpjYWxjQWJzb2x1dGVWZXJ0aWNhbFJlcGxhY2Vk
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveDo6cG9zaXRpb25Gb3JQb2ludCk6CisgICAg
ICAgICogcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0Lmg6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJCb3hNb2RlbE9iamVjdDo6cGFkZGluZ0FuZEJvcmRlckhlaWdodCk6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJCb3hNb2RlbE9iamVjdDo6cGFkZGluZ0FuZEJvcmRlcldpZHRoKToK
KyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyRGF0YUdyaWQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyRGF0YUdyaWQ6OmNhbGNQcmVmV2lkdGhzKToKKyAgICAgICAgKiByZW5kZXJpbmcv
UmVuZGVyRmllbGRzZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRmllbGRzZXQ6OmNh
bGNQcmVmV2lkdGhzKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyRmlsZVVwbG9hZENvbnRy
b2wuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRmlsZVVwbG9hZENvbnRyb2w6OmNhbGNQ
cmVmV2lkdGhzKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyRmxleGlibGVCb3guY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRmxleGlibGVCb3g6OmNhbGNQcmVmV2lkdGhzKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlckZsZXhpYmxlQm94OjphbGxvd2VkQ2hpbGRGbGV4KToKKyAg
ICAgICAgKiByZW5kZXJpbmcvUmVuZGVySW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVySW1hZ2U6OmNhbGNQcmVmV2lkdGhzKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OnJlc2l6ZSk6CisgICAgICAg
ICogcmVuZGVyaW5nL1JlbmRlckxpc3RCb3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
TGlzdEJveDo6Y2FsY1ByZWZXaWR0aHMpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGlzdEJv
eDo6Y2FsY0hlaWdodCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlck1lbnVMaXN0LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck1lbnVMaXN0OjpjYWxjUHJlZldpZHRocyk6CisgICAg
ICAgICogcmVuZGVyaW5nL1JlbmRlclJlcGxhY2VkLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlclJlcGxhY2VkOjpjYWxjUHJlZldpZHRocyk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRl
clNWR1Jvb3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHUm9vdDo6Y2FsY1ByZWZX
aWR0aHMpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJTbGlkZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyU2xpZGVyOjpjYWxjUHJlZldpZHRocyk6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJTbGlkZXI6OmxheW91dCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRhYmxl
Q2VsbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUYWJsZUNlbGw6OnN0eWxlT3JDb2xX
aWR0aCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlclRleHRDb250cm9sOjp0ZXh0QmxvY2tIZWlnaHQpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyVGV4dENvbnRyb2w6OnRleHRCbG9ja1dpZHRoKToKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlclRleHRDb250cm9sOjpjYWxjSGVpZ2h0KToKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlclRleHRDb250cm9sOjpjYWxjUHJlZldpZHRocyk6CisgICAgICAgICogcmVuZGVy
aW5nL1JlbmRlclRleHRDb250cm9sU2luZ2xlTGluZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJUZXh0Q29udHJvbFNpbmdsZUxpbmU6OmxheW91dCk6CisgICAgICAgICogcmVuZGVyaW5n
L1JlbmRlcldpZGdldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJXaWRnZXQ6OnVwZGF0
ZVdpZGdldFBvc2l0aW9uKToKKwogMjAxMC0wNC0yMyAgSWx5YSBUaWtob25vdnNreSAgPGxvaXNs
b0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgWXVyeSBTZW1pa2hhdHNreS4K
ZGlmZiAtLWdpdCBhL1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZUJveC5jcHAgYi9XZWJDb3JlL3Jl
bmRlcmluZy9JbmxpbmVCb3guY3BwCmluZGV4IDI1NzVmYjcuLjQzZGRmNjkgMTAwNjQ0Ci0tLSBh
L1dlYkNvcmUvcmVuZGVyaW5nL0lubGluZUJveC5jcHAKKysrIGIvV2ViQ29yZS9yZW5kZXJpbmcv
SW5saW5lQm94LmNwcApAQCAtMTAyLDcgKzEwMiw3IEBAIGludCBJbmxpbmVCb3g6OmhlaWdodCgp
IGNvbnN0CiAgICAgY29uc3QgRm9udCYgZm9udCA9IHJlbmRlcmVyKCktPnN0eWxlKG1fZmlyc3RM
aW5lKS0+Zm9udCgpOwogICAgIGludCByZXN1bHQgPSBmb250LmhlaWdodCgpOwogICAgIGlmIChw
YXJlbnQoKSkKLSAgICAgICAgcmVzdWx0ICs9IGZsb3dPYmplY3QtPmJvcmRlclRvcCgpICsgZmxv
d09iamVjdC0+cGFkZGluZ1RvcCgpICsgZmxvd09iamVjdC0+Ym9yZGVyQm90dG9tKCkgKyBmbG93
T2JqZWN0LT5wYWRkaW5nQm90dG9tKCk7CisgICAgICAgIHJlc3VsdCArPSBmbG93T2JqZWN0LT5w
YWRkaW5nQW5kQm9yZGVySGVpZ2h0KCk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIApkaWZmIC0t
Z2l0IGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQXBwbGV0LmNwcCBiL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckFwcGxldC5jcHAKaW5kZXggMDYyNjQxZS4uZTgxZmE1YiAxMDA2NDQKLS0tIGEv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQXBwbGV0LmNwcAorKysgYi9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJBcHBsZXQuY3BwCkBAIC01OSw5ICs1OSw5IEBAIHZvaWQgUmVuZGVyQXBwbGV0Ojpj
cmVhdGVXaWRnZXRJZk5lY2Vzc2FyeSgpCiAgICAgLy8gdXNlIGZpeGVkIHdpZHRocy9oZWlnaHRz
IGZyb20gdGhlIHN0eWxlIHN5c3RlbSB3aGVuIHdlIGNhbiwgc2luY2UgdGhlIHdpZGdldCBtaWdo
dAogICAgIC8vIG5vdCBoYXZlIGFuIGFjY3VyYXRlIG1fd2lkdGgvbV9oZWlnaHQuCiAgICAgaW50
IGNvbnRlbnRXaWR0aCA9IHN0eWxlKCktPndpZHRoKCkuaXNGaXhlZCgpID8gc3R5bGUoKS0+d2lk
dGgoKS52YWx1ZSgpIDogCi0gICAgICAgIHdpZHRoKCkgLSBib3JkZXJMZWZ0KCkgLSBib3JkZXJS
aWdodCgpIC0gcGFkZGluZ0xlZnQoKSAtIHBhZGRpbmdSaWdodCgpOworICAgICAgICB3aWR0aCgp
IC0gcGFkZGluZ0FuZEJvcmRlcldpZHRoKCk7CiAgICAgaW50IGNvbnRlbnRIZWlnaHQgPSBzdHls
ZSgpLT5oZWlnaHQoKS5pc0ZpeGVkKCkgPyBzdHlsZSgpLT5oZWlnaHQoKS52YWx1ZSgpIDoKLSAg
ICAgICAgaGVpZ2h0KCkgLSBib3JkZXJUb3AoKSAtIGJvcmRlckJvdHRvbSgpIC0gcGFkZGluZ1Rv
cCgpIC0gcGFkZGluZ0JvdHRvbSgpOworICAgICAgICBoZWlnaHQoKSAtIHBhZGRpbmdBbmRCb3Jk
ZXJIZWlnaHQoKTsKICAgICBmb3IgKE5vZGUqIGNoaWxkID0gZWxlbWVudC0+Zmlyc3RDaGlsZCgp
OyBjaGlsZDsgY2hpbGQgPSBjaGlsZC0+bmV4dFNpYmxpbmcoKSkgewogICAgICAgICBpZiAoY2hp
bGQtPmhhc1RhZ05hbWUocGFyYW1UYWcpKSB7CiAgICAgICAgICAgICBIVE1MUGFyYW1FbGVtZW50
KiBwID0gc3RhdGljX2Nhc3Q8SFRNTFBhcmFtRWxlbWVudCo+KGNoaWxkKTsKZGlmZiAtLWdpdCBh
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcCBiL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckJsb2NrLmNwcAppbmRleCBjZTM0NDQ0Li5lNDVkM2Y4IDEwMDY0NAotLS0gYS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAKKysrIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
QmxvY2suY3BwCkBAIC01ODUsMTAgKzU4NSwxMCBAQCBib29sIFJlbmRlckJsb2NrOjppc1NlbGZD
b2xsYXBzaW5nQmxvY2soKSBjb25zdAogICAgIC8vIChjKSBoYXZlIGJvcmRlci9wYWRkaW5nLAog
ICAgIC8vIChkKSBoYXZlIGEgbWluLWhlaWdodAogICAgIC8vIChlKSBoYXZlIHNwZWNpZmllZCB0
aGF0IG9uZSBvZiBvdXIgbWFyZ2lucyBjYW4ndCBjb2xsYXBzZSB1c2luZyBhIENTUyBleHRlbnNp
b24KLSAgICBpZiAoaGVpZ2h0KCkgPiAwIHx8Ci0gICAgICAgIGlzVGFibGUoKSB8fCAoYm9yZGVy
Qm90dG9tKCkgKyBwYWRkaW5nQm90dG9tKCkgKyBib3JkZXJUb3AoKSArIHBhZGRpbmdUb3AoKSkg
IT0gMCB8fAotICAgICAgICBzdHlsZSgpLT5taW5IZWlnaHQoKS5pc1Bvc2l0aXZlKCkgfHwgCi0g
ICAgICAgIHN0eWxlKCktPm1hcmdpblRvcENvbGxhcHNlKCkgPT0gTVNFUEFSQVRFIHx8IHN0eWxl
KCktPm1hcmdpbkJvdHRvbUNvbGxhcHNlKCkgPT0gTVNFUEFSQVRFKQorICAgIGlmIChoZWlnaHQo
KSA+IDAKKyAgICAgICAgfHwgaXNUYWJsZSgpIHx8IHBhZGRpbmdBbmRCb3JkZXJIZWlnaHQoKQor
ICAgICAgICB8fCBzdHlsZSgpLT5taW5IZWlnaHQoKS5pc1Bvc2l0aXZlKCkKKyAgICAgICAgfHwg
c3R5bGUoKS0+bWFyZ2luVG9wQ29sbGFwc2UoKSA9PSBNU0VQQVJBVEUgfHwgc3R5bGUoKS0+bWFy
Z2luQm90dG9tQ29sbGFwc2UoKSA9PSBNU0VQQVJBVEUpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
IAogICAgIGJvb2wgaGFzQXV0b0hlaWdodCA9IHN0eWxlKCktPmhlaWdodCgpLmlzQXV0bygpOwpA
QCAtMzk4OCw3ICszOTg4LDcgQEAgdm9pZCBSZW5kZXJCbG9jazo6Y2FsY1ByZWZXaWR0aHMoKQog
ICAgIH0KIAogICAgIGludCB0b0FkZCA9IDA7Ci0gICAgdG9BZGQgPSBib3JkZXJMZWZ0KCkgKyBi
b3JkZXJSaWdodCgpICsgcGFkZGluZ0xlZnQoKSArIHBhZGRpbmdSaWdodCgpOworICAgIHRvQWRk
ID0gcGFkZGluZ0FuZEJvcmRlcldpZHRoKCk7CiAKICAgICBpZiAoaGFzT3ZlcmZsb3dDbGlwKCkg
JiYgc3R5bGUoKS0+b3ZlcmZsb3dZKCkgPT0gT1NDUk9MTCkKICAgICAgICAgdG9BZGQgKz0gdmVy
dGljYWxTY3JvbGxiYXJXaWR0aCgpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyQm94LmNwcCBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAKaW5kZXggZGNlOTQ4
ZC4uMDVkNjZjMSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNwcAor
KysgYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3BwCkBAIC01MDgsNyArNTA4LDcgQEAg
aW50IFJlbmRlckJveDo6b3ZlcnJpZGVIZWlnaHQoKSBjb25zdAogCiBpbnQgUmVuZGVyQm94Ojpj
YWxjQm9yZGVyQm94V2lkdGgoaW50IHdpZHRoKSBjb25zdAogewotICAgIGludCBib3JkZXJzUGx1
c1BhZGRpbmcgPSBib3JkZXJMZWZ0KCkgKyBib3JkZXJSaWdodCgpICsgcGFkZGluZ0xlZnQoKSAr
IHBhZGRpbmdSaWdodCgpOworICAgIGludCBib3JkZXJzUGx1c1BhZGRpbmcgPSBwYWRkaW5nQW5k
Qm9yZGVyV2lkdGgoKTsKICAgICBpZiAoc3R5bGUoKS0+Ym94U2l6aW5nKCkgPT0gQ09OVEVOVF9C
T1gpCiAgICAgICAgIHJldHVybiB3aWR0aCArIGJvcmRlcnNQbHVzUGFkZGluZzsKICAgICByZXR1
cm4gbWF4KHdpZHRoLCBib3JkZXJzUGx1c1BhZGRpbmcpOwpAQCAtNTE2LDcgKzUxNiw3IEBAIGlu
dCBSZW5kZXJCb3g6OmNhbGNCb3JkZXJCb3hXaWR0aChpbnQgd2lkdGgpIGNvbnN0CiAKIGludCBS
ZW5kZXJCb3g6OmNhbGNCb3JkZXJCb3hIZWlnaHQoaW50IGhlaWdodCkgY29uc3QKIHsKLSAgICBp
bnQgYm9yZGVyc1BsdXNQYWRkaW5nID0gYm9yZGVyVG9wKCkgKyBib3JkZXJCb3R0b20oKSArIHBh
ZGRpbmdUb3AoKSArIHBhZGRpbmdCb3R0b20oKTsKKyAgICBpbnQgYm9yZGVyc1BsdXNQYWRkaW5n
ID0gcGFkZGluZ0FuZEJvcmRlckhlaWdodCgpOwogICAgIGlmIChzdHlsZSgpLT5ib3hTaXppbmco
KSA9PSBDT05URU5UX0JPWCkKICAgICAgICAgcmV0dXJuIGhlaWdodCArIGJvcmRlcnNQbHVzUGFk
ZGluZzsKICAgICByZXR1cm4gbWF4KGhlaWdodCwgYm9yZGVyc1BsdXNQYWRkaW5nKTsKQEAgLTUy
NSwxNCArNTI1LDE0IEBAIGludCBSZW5kZXJCb3g6OmNhbGNCb3JkZXJCb3hIZWlnaHQoaW50IGhl
aWdodCkgY29uc3QKIGludCBSZW5kZXJCb3g6OmNhbGNDb250ZW50Qm94V2lkdGgoaW50IHdpZHRo
KSBjb25zdAogewogICAgIGlmIChzdHlsZSgpLT5ib3hTaXppbmcoKSA9PSBCT1JERVJfQk9YKQot
ICAgICAgICB3aWR0aCAtPSAoYm9yZGVyTGVmdCgpICsgYm9yZGVyUmlnaHQoKSArIHBhZGRpbmdM
ZWZ0KCkgKyBwYWRkaW5nUmlnaHQoKSk7CisgICAgICAgIHdpZHRoIC09IHBhZGRpbmdBbmRCb3Jk
ZXJXaWR0aCgpOwogICAgIHJldHVybiBtYXgoMCwgd2lkdGgpOwogfQogCiBpbnQgUmVuZGVyQm94
OjpjYWxjQ29udGVudEJveEhlaWdodChpbnQgaGVpZ2h0KSBjb25zdAogewogICAgIGlmIChzdHls
ZSgpLT5ib3hTaXppbmcoKSA9PSBCT1JERVJfQk9YKQotICAgICAgICBoZWlnaHQgLT0gKGJvcmRl
clRvcCgpICsgYm9yZGVyQm90dG9tKCkgKyBwYWRkaW5nVG9wKCkgKyBwYWRkaW5nQm90dG9tKCkp
OworICAgICAgICBoZWlnaHQgLT0gcGFkZGluZ0FuZEJvcmRlckhlaWdodCgpOwogICAgIHJldHVy
biBtYXgoMCwgaGVpZ2h0KTsKIH0KIApAQCAtMTI5OSwxNCArMTI5OSwxNCBAQCB2b2lkIFJlbmRl
ckJveDo6Y2FsY1dpZHRoKCkKICAgICAgICAgbV9tYXJnaW5MZWZ0ID0gbWFyZ2luTGVmdC5jYWxj
TWluVmFsdWUoY29udGFpbmVyV2lkdGgpOwogICAgICAgICBtX21hcmdpblJpZ2h0ID0gbWFyZ2lu
UmlnaHQuY2FsY01pblZhbHVlKGNvbnRhaW5lcldpZHRoKTsKICAgICAgICAgaWYgKHRyZWF0QXNS
ZXBsYWNlZCkKLSAgICAgICAgICAgIHNldFdpZHRoKG1heCh3LnZhbHVlKCkgKyBib3JkZXJMZWZ0
KCkgKyBib3JkZXJSaWdodCgpICsgcGFkZGluZ0xlZnQoKSArIHBhZGRpbmdSaWdodCgpLCBtaW5Q
cmVmV2lkdGgoKSkpOworICAgICAgICAgICAgc2V0V2lkdGgobWF4KHcudmFsdWUoKSArIHBhZGRp
bmdBbmRCb3JkZXJXaWR0aCgpLCBtaW5QcmVmV2lkdGgoKSkpOwogCiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAKICAgICAvLyBXaWR0aCBjYWxjdWxhdGlvbnMKICAgICBpZiAodHJlYXRBc1JlcGxh
Y2VkKQotICAgICAgICBzZXRXaWR0aCh3LnZhbHVlKCkgKyBib3JkZXJMZWZ0KCkgKyBib3JkZXJS
aWdodCgpICsgcGFkZGluZ0xlZnQoKSArIHBhZGRpbmdSaWdodCgpKTsKKyAgICAgICAgc2V0V2lk
dGgody52YWx1ZSgpICsgcGFkZGluZ0FuZEJvcmRlcldpZHRoKCkpOwogICAgIGVsc2UgewogICAg
ICAgICAvLyBDYWxjdWxhdGUgV2lkdGgKICAgICAgICAgc2V0V2lkdGgoY2FsY1dpZHRoVXNpbmco
V2lkdGgsIGNvbnRhaW5lcldpZHRoKSk7CkBAIC0xNDYyLDcgKzE0NjIsNyBAQCB2b2lkIFJlbmRl
ckJveDo6Y2FsY0hlaWdodCgpCiAgICAgICAgIC8vIGdyYWIgb3VyIGNhY2hlZCBmbGV4aWJsZSBo
ZWlnaHQuCiAgICAgICAgIGlmIChoYXNPdmVycmlkZVNpemUoKSAmJiBwYXJlbnQoKS0+aXNGbGV4
aWJsZUJveCgpICYmIHBhcmVudCgpLT5zdHlsZSgpLT5ib3hPcmllbnQoKSA9PSBWRVJUSUNBTAog
ICAgICAgICAgICAgICAgICYmIHBhcmVudCgpLT5pc0ZsZXhpbmdDaGlsZHJlbigpKQotICAgICAg
ICAgICAgaCA9IExlbmd0aChvdmVycmlkZVNpemUoKSAtIGJvcmRlclRvcCgpIC0gYm9yZGVyQm90
dG9tKCkgLSBwYWRkaW5nVG9wKCkgLSBwYWRkaW5nQm90dG9tKCksIEZpeGVkKTsKKyAgICAgICAg
ICAgIGggPSBMZW5ndGgob3ZlcnJpZGVTaXplKCkgLSBwYWRkaW5nQW5kQm9yZGVySGVpZ2h0KCks
IEZpeGVkKTsKICAgICAgICAgZWxzZSBpZiAodHJlYXRBc1JlcGxhY2VkKQogICAgICAgICAgICAg
aCA9IExlbmd0aChjYWxjUmVwbGFjZWRIZWlnaHQoKSwgRml4ZWQpOwogICAgICAgICBlbHNlIHsK
QEAgLTE0NzMsOCArMTQ3Myw3IEBAIHZvaWQgUmVuZGVyQm94OjpjYWxjSGVpZ2h0KCkKICAgICAg
ICAgLy8gQmxvY2sgY2hpbGRyZW4gb2YgaG9yaXpvbnRhbCBmbGV4aWJsZSBib3hlcyBmaWxsIHRo
ZSBoZWlnaHQgb2YgdGhlIGJveC4KICAgICAgICAgaWYgKGguaXNBdXRvKCkgJiYgcGFyZW50KCkt
PmlzRmxleGlibGVCb3goKSAmJiBwYXJlbnQoKS0+c3R5bGUoKS0+Ym94T3JpZW50KCkgPT0gSE9S
SVpPTlRBTAogICAgICAgICAgICAgICAgICYmIHBhcmVudCgpLT5pc1N0cmV0Y2hpbmdDaGlsZHJl
bigpKSB7Ci0gICAgICAgICAgICBoID0gTGVuZ3RoKHBhcmVudEJveCgpLT5jb250ZW50SGVpZ2h0
KCkgLSBtYXJnaW5Ub3AoKSAtIG1hcmdpbkJvdHRvbSgpIC0KLSAgICAgICAgICAgICAgICAgICAg
ICAgYm9yZGVyVG9wKCkgLSBwYWRkaW5nVG9wKCkgLSBib3JkZXJCb3R0b20oKSAtIHBhZGRpbmdC
b3R0b20oKSwgRml4ZWQpOworICAgICAgICAgICAgaCA9IExlbmd0aChwYXJlbnRCb3goKS0+Y29u
dGVudEhlaWdodCgpIC0gbWFyZ2luVG9wKCkgLSBtYXJnaW5Cb3R0b20oKSAtIHBhZGRpbmdBbmRC
b3JkZXJIZWlnaHQoKSwgRml4ZWQpOwogICAgICAgICAgICAgY2hlY2tNaW5NYXhIZWlnaHQgPSBm
YWxzZTsKICAgICAgICAgfQogCkBAIC0xNDkzLDcgKzE0OTIsNyBAQCB2b2lkIFJlbmRlckJveDo6
Y2FsY0hlaWdodCgpCiAgICAgICAgICAgICAvLyBUaGUgb25seSB0aW1lcyB3ZSBkb24ndCBjaGVj
ayBtaW4vbWF4IGhlaWdodCBhcmUgd2hlbiBhIGZpeGVkIGxlbmd0aCBoYXMKICAgICAgICAgICAg
IC8vIGJlZW4gZ2l2ZW4gYXMgYW4gb3ZlcnJpZGUuICBKdXN0IHVzZSB0aGF0LiAgVGhlIHZhbHVl
IGhhcyBhbHJlYWR5IGJlZW4gYWRqdXN0ZWQKICAgICAgICAgICAgIC8vIGZvciBib3gtc2l6aW5n
LgotICAgICAgICAgICAgaGVpZ2h0UmVzdWx0ID0gaC52YWx1ZSgpICsgYm9yZGVyVG9wKCkgKyBi
b3JkZXJCb3R0b20oKSArIHBhZGRpbmdUb3AoKSArIHBhZGRpbmdCb3R0b20oKTsKKyAgICAgICAg
ICAgIGhlaWdodFJlc3VsdCA9IGgudmFsdWUoKSArIHBhZGRpbmdBbmRCb3JkZXJIZWlnaHQoKTsK
ICAgICAgICAgfQogCiAgICAgICAgIHNldEhlaWdodChoZWlnaHRSZXN1bHQpOwpAQCAtMTUxMiw5
ICsxNTExLDcgQEAgdm9pZCBSZW5kZXJCb3g6OmNhbGNIZWlnaHQoKQogICAgICAgICBpZiAoaXNS
b290KCkpCiAgICAgICAgICAgICBzZXRIZWlnaHQobWF4KGhlaWdodCgpLCB2aXNIZWlnaHQgLSBt
YXJnaW5zKSk7CiAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgaW50IG1hcmdpbnNCb3JkZXJz
UGFkZGluZyA9IG1hcmdpbnMgKyBwYXJlbnRCb3goKS0+bWFyZ2luVG9wKCkgKyBwYXJlbnRCb3go
KS0+bWFyZ2luQm90dG9tKCkKLSAgICAgICAgICAgICAgICArIHBhcmVudEJveCgpLT5ib3JkZXJU
b3AoKSArIHBhcmVudEJveCgpLT5ib3JkZXJCb3R0b20oKQotICAgICAgICAgICAgICAgICsgcGFy
ZW50Qm94KCktPnBhZGRpbmdUb3AoKSArIHBhcmVudEJveCgpLT5wYWRkaW5nQm90dG9tKCk7Cisg
ICAgICAgICAgICBpbnQgbWFyZ2luc0JvcmRlcnNQYWRkaW5nID0gbWFyZ2lucyArIHBhcmVudEJv
eCgpLT5tYXJnaW5Ub3AoKSArIHBhcmVudEJveCgpLT5tYXJnaW5Cb3R0b20oKSArIHBhcmVudEJv
eCgpLT5wYWRkaW5nQW5kQm9yZGVySGVpZ2h0KCk7CiAgICAgICAgICAgICBzZXRIZWlnaHQobWF4
KGhlaWdodCgpLCB2aXNIZWlnaHQgLSBtYXJnaW5zQm9yZGVyc1BhZGRpbmcpKTsKICAgICAgICAg
fQogICAgIH0KQEAgLTE2MDgsNyArMTYwNSw3IEBAIGludCBSZW5kZXJCb3g6OmNhbGNQZXJjZW50
YWdlSGVpZ2h0KGNvbnN0IExlbmd0aCYgaGVpZ2h0KQogICAgICAgICAgICAgLy8gSXQgaXMgbmVj
ZXNzYXJ5IHRvIHVzZSB0aGUgYm9yZGVyLWJveCB0byBtYXRjaCBXaW5JRSdzIGJyb2tlbgogICAg
ICAgICAgICAgLy8gYm94IG1vZGVsLiAgVGhpcyBpcyBlc3NlbnRpYWwgZm9yIHNpemluZyBpbnNp
ZGUKICAgICAgICAgICAgIC8vIHRhYmxlIGNlbGxzIHVzaW5nIHBlcmNlbnRhZ2UgaGVpZ2h0cy4K
LSAgICAgICAgICAgIHJlc3VsdCAtPSAoYm9yZGVyVG9wKCkgKyBwYWRkaW5nVG9wKCkgKyBib3Jk
ZXJCb3R0b20oKSArIHBhZGRpbmdCb3R0b20oKSk7CisgICAgICAgICAgICByZXN1bHQgLT0gcGFk
ZGluZ0FuZEJvcmRlckhlaWdodCgpOwogICAgICAgICAgICAgcmVzdWx0ID0gbWF4KDAsIHJlc3Vs
dCk7CiAgICAgICAgIH0KICAgICB9CkBAIC0xNjgxLDggKzE2NzgsNyBAQCBpbnQgUmVuZGVyQm94
OjpjYWxjUmVwbGFjZWRIZWlnaHRVc2luZyhMZW5ndGggaGVpZ2h0KSBjb25zdAogICAgICAgICAg
ICAgICAgIC8vIERvbid0IGxldCB0YWJsZSBjZWxscyBzcXVlZXplIHBlcmNlbnQtaGVpZ2h0IHJl
cGxhY2VkIGVsZW1lbnRzCiAgICAgICAgICAgICAgICAgLy8gPGh0dHA6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE1MzU5PgogICAgICAgICAgICAgICAgIGF2YWlsYWJsZUhlaWdo
dCA9IG1heChhdmFpbGFibGVIZWlnaHQsIGludHJpbnNpY1NpemUoKS5oZWlnaHQoKSk7Ci0gICAg
ICAgICAgICAgICAgcmV0dXJuIGhlaWdodC5jYWxjVmFsdWUoYXZhaWxhYmxlSGVpZ2h0IC0gKGJv
cmRlclRvcCgpICsgYm9yZGVyQm90dG9tKCkKLSAgICAgICAgICAgICAgICAgICAgKyBwYWRkaW5n
VG9wKCkgKyBwYWRkaW5nQm90dG9tKCkpKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gaGVpZ2h0
LmNhbGNWYWx1ZShhdmFpbGFibGVIZWlnaHQgLSBwYWRkaW5nQW5kQm9yZGVySGVpZ2h0KCkpOwog
ICAgICAgICAgICAgfQogCiAgICAgICAgICAgICByZXR1cm4gY2FsY0NvbnRlbnRCb3hIZWlnaHQo
aGVpZ2h0LmNhbGNWYWx1ZShhdmFpbGFibGVIZWlnaHQpKTsKQEAgLTE3MDksNyArMTcwNSw3IEBA
IGludCBSZW5kZXJCb3g6OmF2YWlsYWJsZUhlaWdodFVzaW5nKGNvbnN0IExlbmd0aCYgaCkgY29u
c3QKICAgICAvLyBhcnRpZmljaWFsbHkuICBXZSdyZSBnb2luZyB0byByZWx5IG9uIHRoaXMgY2Vs
bCBnZXR0aW5nIGV4cGFuZGVkIHRvIHNvbWUgbmV3CiAgICAgLy8gaGVpZ2h0LCBhbmQgdGhlbiB3
aGVuIHdlIGxheSBvdXQgYWdhaW4gd2UnbGwgdXNlIHRoZSBjYWxjdWxhdGlvbiBiZWxvdy4KICAg
ICBpZiAoaXNUYWJsZUNlbGwoKSAmJiAoaC5pc0F1dG8oKSB8fCBoLmlzUGVyY2VudCgpKSkKLSAg
ICAgICAgcmV0dXJuIG92ZXJyaWRlU2l6ZSgpIC0gKGJvcmRlckxlZnQoKSArIGJvcmRlclJpZ2h0
KCkgKyBwYWRkaW5nTGVmdCgpICsgcGFkZGluZ1JpZ2h0KCkpOworICAgICAgICByZXR1cm4gb3Zl
cnJpZGVTaXplKCkgLSBwYWRkaW5nQW5kQm9yZGVyV2lkdGgoKTsKIAogICAgIGlmIChoLmlzUGVy
Y2VudCgpKQogICAgICAgIHJldHVybiBjYWxjQ29udGVudEJveEhlaWdodChoLmNhbGNWYWx1ZShj
b250YWluaW5nQmxvY2soKS0+YXZhaWxhYmxlSGVpZ2h0KCkpKTsKQEAgLTE4MjYsNyArMTgyMiw3
IEBAIHZvaWQgUmVuZGVyQm94OjpjYWxjQWJzb2x1dGVIb3Jpem9udGFsKCkKICAgICAvLyBpbnN0
ZWFkIG9mIHRoZSB0aGUgY29udGFpbmVyIGJsb2NrJ3MuCiAgICAgVGV4dERpcmVjdGlvbiBjb250
YWluZXJEaXJlY3Rpb24gPSAoc3R5bGUoKS0+aHRtbEhhY2tzKCkpID8gcGFyZW50KCktPnN0eWxl
KCktPmRpcmVjdGlvbigpIDogY29udGFpbmVyQmxvY2stPnN0eWxlKCktPmRpcmVjdGlvbigpOwog
Ci0gICAgY29uc3QgaW50IGJvcmRlcnNQbHVzUGFkZGluZyA9IGJvcmRlckxlZnQoKSArIGJvcmRl
clJpZ2h0KCkgKyBwYWRkaW5nTGVmdCgpICsgcGFkZGluZ1JpZ2h0KCk7CisgICAgY29uc3QgaW50
IGJvcmRlcnNQbHVzUGFkZGluZyA9IHBhZGRpbmdBbmRCb3JkZXJXaWR0aCgpOwogICAgIGNvbnN0
IExlbmd0aCBtYXJnaW5MZWZ0ID0gc3R5bGUoKS0+bWFyZ2luTGVmdCgpOwogICAgIGNvbnN0IExl
bmd0aCBtYXJnaW5SaWdodCA9IHN0eWxlKCktPm1hcmdpblJpZ2h0KCk7CiAgICAgTGVuZ3RoIGxl
ZnQgPSBzdHlsZSgpLT5sZWZ0KCk7CkBAIC0yMTM1LDcgKzIxMzEsNyBAQCB2b2lkIFJlbmRlckJv
eDo6Y2FsY0Fic29sdXRlVmVydGljYWwoKQogCiAgICAgY29uc3QgaW50IGNvbnRhaW5lckhlaWdo
dCA9IGNvbnRhaW5pbmdCbG9ja0hlaWdodEZvclBvc2l0aW9uZWQoY29udGFpbmVyQmxvY2spOwog
Ci0gICAgY29uc3QgaW50IGJvcmRlcnNQbHVzUGFkZGluZyA9IGJvcmRlclRvcCgpICsgYm9yZGVy
Qm90dG9tKCkgKyBwYWRkaW5nVG9wKCkgKyBwYWRkaW5nQm90dG9tKCk7CisgICAgY29uc3QgaW50
IGJvcmRlcnNQbHVzUGFkZGluZyA9IHBhZGRpbmdBbmRCb3JkZXJIZWlnaHQoKTsKICAgICBjb25z
dCBMZW5ndGggbWFyZ2luVG9wID0gc3R5bGUoKS0+bWFyZ2luVG9wKCk7CiAgICAgY29uc3QgTGVu
Z3RoIG1hcmdpbkJvdHRvbSA9IHN0eWxlKCktPm1hcmdpbkJvdHRvbSgpOwogICAgIExlbmd0aCB0
b3AgPSBzdHlsZSgpLT50b3AoKTsKQEAgLTIzNzYsNyArMjM3Miw3IEBAIHZvaWQgUmVuZGVyQm94
OjpjYWxjQWJzb2x1dGVIb3Jpem9udGFsUmVwbGFjZWQoKQogICAgIC8vIE5PVEU6IFRoaXMgdmFs
dWUgb2Ygd2lkdGggaXMgRklOQUwgaW4gdGhhdCB0aGUgbWluL21heCB3aWR0aCBjYWxjdWxhdGlv
bnMKICAgICAvLyBhcmUgZGVhbHQgd2l0aCBpbiBjYWxjUmVwbGFjZWRXaWR0aCgpLiAgVGhpcyBt
ZWFucyB0aGF0IHRoZSBzdGVwcyB0byBwcm9kdWNlCiAgICAgLy8gY29ycmVjdCBtYXgvbWluIGlu
IHRoZSBub24tcmVwbGFjZWQgdmVyc2lvbiwgYXJlIG5vdCBuZWNlc3NhcnkuCi0gICAgc2V0V2lk
dGgoY2FsY1JlcGxhY2VkV2lkdGgoKSArIGJvcmRlckxlZnQoKSArIGJvcmRlclJpZ2h0KCkgKyBw
YWRkaW5nTGVmdCgpICsgcGFkZGluZ1JpZ2h0KCkpOworICAgIHNldFdpZHRoKGNhbGNSZXBsYWNl
ZFdpZHRoKCkgKyBwYWRkaW5nQW5kQm9yZGVyV2lkdGgoKSk7CiAgICAgY29uc3QgaW50IGF2YWls
YWJsZVNwYWNlID0gY29udGFpbmVyV2lkdGggLSB3aWR0aCgpOwogCiAgICAgLyotLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLSpcCkBAIC0yNTQ5LDcgKzI1NDUsNyBAQCB2b2lkIFJlbmRlckJveDo6Y2FsY0Fic29sdXRl
VmVydGljYWxSZXBsYWNlZCgpCiAgICAgLy8gTk9URTogVGhpcyB2YWx1ZSBvZiBoZWlnaHQgaXMg
RklOQUwgaW4gdGhhdCB0aGUgbWluL21heCBoZWlnaHQgY2FsY3VsYXRpb25zCiAgICAgLy8gYXJl
IGRlYWx0IHdpdGggaW4gY2FsY1JlcGxhY2VkSGVpZ2h0KCkuICBUaGlzIG1lYW5zIHRoYXQgdGhl
IHN0ZXBzIHRvIHByb2R1Y2UKICAgICAvLyBjb3JyZWN0IG1heC9taW4gaW4gdGhlIG5vbi1yZXBs
YWNlZCB2ZXJzaW9uLCBhcmUgbm90IG5lY2Vzc2FyeS4KLSAgICBzZXRIZWlnaHQoY2FsY1JlcGxh
Y2VkSGVpZ2h0KCkgKyBib3JkZXJUb3AoKSArIGJvcmRlckJvdHRvbSgpICsgcGFkZGluZ1RvcCgp
ICsgcGFkZGluZ0JvdHRvbSgpKTsKKyAgICBzZXRIZWlnaHQoY2FsY1JlcGxhY2VkSGVpZ2h0KCkg
KyBwYWRkaW5nQW5kQm9yZGVySGVpZ2h0KCkpOwogICAgIGNvbnN0IGludCBhdmFpbGFibGVTcGFj
ZSA9IGNvbnRhaW5lckhlaWdodCAtIGhlaWdodCgpOwogCiAgICAgLyotLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSpc
CkBAIC0yNzM1LDggKzI3MzEsOCBAQCBWaXNpYmxlUG9zaXRpb24gUmVuZGVyQm94Ojpwb3NpdGlv
bkZvclBvaW50KGNvbnN0IEludFBvaW50JiBwb2ludCkKICAgICBpbnQgeVBvcyA9IHBvaW50Lnko
KTsKIAogICAgIGlmIChpc1RhYmxlKCkgJiYgbm9kZSgpKSB7Ci0gICAgICAgIGludCByaWdodCA9
IGNvbnRlbnRXaWR0aCgpICsgYm9yZGVyUmlnaHQoKSArIHBhZGRpbmdSaWdodCgpICsgYm9yZGVy
TGVmdCgpICsgcGFkZGluZ0xlZnQoKTsKLSAgICAgICAgaW50IGJvdHRvbSA9IGNvbnRlbnRIZWln
aHQoKSArIGJvcmRlclRvcCgpICsgcGFkZGluZ1RvcCgpICsgYm9yZGVyQm90dG9tKCkgKyBwYWRk
aW5nQm90dG9tKCk7CisgICAgICAgIGludCByaWdodCA9IGNvbnRlbnRXaWR0aCgpICsgcGFkZGlu
Z0FuZEJvcmRlcldpZHRoKCk7CisgICAgICAgIGludCBib3R0b20gPSBjb250ZW50SGVpZ2h0KCkg
KyBwYWRkaW5nQW5kQm9yZGVySGVpZ2h0KCk7CiAgICAgICAgIAogICAgICAgICBpZiAoeFBvcyA8
IDAgfHwgeFBvcyA+IHJpZ2h0IHx8IHlQb3MgPCAwIHx8IHlQb3MgPiBib3R0b20pIHsKICAgICAg
ICAgICAgIGlmICh4UG9zIDw9IHJpZ2h0IC8gMikKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmggYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hN
b2RlbE9iamVjdC5oCmluZGV4IGRiNzUzOGQuLjZhNWFhMGQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmgKKysrIGIvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyQm94TW9kZWxPYmplY3QuaApAQCAtNzUsNiArNzUsOSBAQCBwdWJsaWM6CiAgICAgdmly
dHVhbCBpbnQgYm9yZGVyTGVmdCgpIGNvbnN0IHsgcmV0dXJuIHN0eWxlKCktPmJvcmRlckxlZnRX
aWR0aCgpOyB9CiAgICAgdmlydHVhbCBpbnQgYm9yZGVyUmlnaHQoKSBjb25zdCB7IHJldHVybiBz
dHlsZSgpLT5ib3JkZXJSaWdodFdpZHRoKCk7IH0KIAorICAgIGludCBwYWRkaW5nQW5kQm9yZGVy
SGVpZ2h0KCkgY29uc3QgeyByZXR1cm4gYm9yZGVyVG9wKCkgKyBib3JkZXJCb3R0b20oKSArIHBh
ZGRpbmdUb3AoKSArIHBhZGRpbmdCb3R0b20oKTsgfQorICAgIGludCBwYWRkaW5nQW5kQm9yZGVy
V2lkdGgoKSBjb25zdCB7IHJldHVybiBib3JkZXJMZWZ0KCkgKyBib3JkZXJSaWdodCgpICsgcGFk
ZGluZ0xlZnQoKSArIHBhZGRpbmdSaWdodCgpOyB9CisKICAgICB2aXJ0dWFsIGludCBtYXJnaW5U
b3AoKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCBpbnQgbWFyZ2luQm90dG9tKCkgY29uc3QgPSAw
OwogICAgIHZpcnR1YWwgaW50IG1hcmdpbkxlZnQoKSBjb25zdCA9IDA7CmRpZmYgLS1naXQgYS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJEYXRhR3JpZC5jcHAgYi9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJEYXRhR3JpZC5jcHAKaW5kZXggYmRmNzIzZi4uMTY2MGJmNCAxMDA2NDQKLS0tIGEvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyRGF0YUdyaWQuY3BwCisrKyBiL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckRhdGFHcmlkLmNwcApAQCAtMTExLDcgKzExMSw3IEBAIHZvaWQgUmVuZGVyRGF0YUdy
aWQ6OmNhbGNQcmVmV2lkdGhzKCkKICAgICAgICAgbV9taW5QcmVmV2lkdGggPSBtaW4obV9taW5Q
cmVmV2lkdGgsIGNhbGNDb250ZW50Qm94V2lkdGgoc3R5bGUoKS0+bWF4V2lkdGgoKS52YWx1ZSgp
KSk7CiAgICAgfQogCi0gICAgaW50IHRvQWRkID0gcGFkZGluZ0xlZnQoKSArIHBhZGRpbmdSaWdo
dCgpICsgYm9yZGVyTGVmdCgpICsgYm9yZGVyUmlnaHQoKTsKKyAgICBpbnQgdG9BZGQgPSBwYWRk
aW5nQW5kQm9yZGVyV2lkdGgoKTsKICAgICBtX21pblByZWZXaWR0aCArPSB0b0FkZDsKICAgICBt
X21heFByZWZXaWR0aCArPSB0b0FkZDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
CmRpZmYgLS1naXQgYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGaWVsZHNldC5jcHAgYi9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJGaWVsZHNldC5jcHAKaW5kZXggZDhjYmQwMC4uZGFkNGI1NCAx
MDA2NDQKLS0tIGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmllbGRzZXQuY3BwCisrKyBiL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckZpZWxkc2V0LmNwcApAQCAtNTksNyArNTksNyBAQCB2b2lk
IFJlbmRlckZpZWxkc2V0OjpjYWxjUHJlZldpZHRocygpCiAgICAgICAgIGlmIChsZWdlbmRNYXJn
aW5SaWdodC5pc0ZpeGVkKCkpCiAgICAgICAgICAgICBsZWdlbmRNaW5XaWR0aCArPSBsZWdlbmRN
YXJnaW5SaWdodC52YWx1ZSgpOwogCi0gICAgICAgIG1fbWluUHJlZldpZHRoID0gbWF4KG1fbWlu
UHJlZldpZHRoLCBsZWdlbmRNaW5XaWR0aCArIHBhZGRpbmdMZWZ0KCkgKyBwYWRkaW5nUmlnaHQo
KSArIGJvcmRlckxlZnQoKSArIGJvcmRlclJpZ2h0KCkpOworICAgICAgICBtX21pblByZWZXaWR0
aCA9IG1heChtX21pblByZWZXaWR0aCwgbGVnZW5kTWluV2lkdGggKyBwYWRkaW5nQW5kQm9yZGVy
V2lkdGgoKSk7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJGaWxlVXBsb2FkQ29udHJvbC5jcHAgYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGaWxlVXBs
b2FkQ29udHJvbC5jcHAKaW5kZXggNmE1YzFlMC4uOWZjZjJiNCAxMDA2NDQKLS0tIGEvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyRmlsZVVwbG9hZENvbnRyb2wuY3BwCisrKyBiL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckZpbGVVcGxvYWRDb250cm9sLmNwcApAQCAtMjg1LDcgKzI4NSw3IEBAIHZv
aWQgUmVuZGVyRmlsZVVwbG9hZENvbnRyb2w6OmNhbGNQcmVmV2lkdGhzKCkKICAgICAgICAgbV9t
aW5QcmVmV2lkdGggPSBtaW4obV9taW5QcmVmV2lkdGgsIGNhbGNDb250ZW50Qm94V2lkdGgoc3R5
bGUoKS0+bWF4V2lkdGgoKS52YWx1ZSgpKSk7CiAgICAgfQogCi0gICAgaW50IHRvQWRkID0gcGFk
ZGluZ0xlZnQoKSArIHBhZGRpbmdSaWdodCgpICsgYm9yZGVyTGVmdCgpICsgYm9yZGVyUmlnaHQo
KTsKKyAgICBpbnQgdG9BZGQgPSBwYWRkaW5nQW5kQm9yZGVyV2lkdGgoKTsKICAgICBtX21pblBy
ZWZXaWR0aCArPSB0b0FkZDsKICAgICBtX21heFByZWZXaWR0aCArPSB0b0FkZDsKIApkaWZmIC0t
Z2l0IGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmxleGlibGVCb3guY3BwIGIvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyRmxleGlibGVCb3guY3BwCmluZGV4IDc5OTFiNjEuLjhiNDI0YzIgMTAw
NjQ0Ci0tLSBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZsZXhpYmxlQm94LmNwcAorKysgYi9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGbGV4aWJsZUJveC5jcHAKQEAgLTE5MCw3ICsxOTAsNyBA
QCB2b2lkIFJlbmRlckZsZXhpYmxlQm94OjpjYWxjUHJlZldpZHRocygpCiAgICAgICAgIG1fbWlu
UHJlZldpZHRoID0gbWluKG1fbWluUHJlZldpZHRoLCBjYWxjQ29udGVudEJveFdpZHRoKHN0eWxl
KCktPm1heFdpZHRoKCkudmFsdWUoKSkpOwogICAgIH0KIAotICAgIGludCB0b0FkZCA9IGJvcmRl
ckxlZnQoKSArIGJvcmRlclJpZ2h0KCkgKyBwYWRkaW5nTGVmdCgpICsgcGFkZGluZ1JpZ2h0KCk7
CisgICAgaW50IHRvQWRkID0gcGFkZGluZ0FuZEJvcmRlcldpZHRoKCk7CiAgICAgCiAgICAgaWYg
KGhhc092ZXJmbG93Q2xpcCgpICYmIHN0eWxlKCktPm92ZXJmbG93WSgpID09IE9TQ1JPTEwpCiAg
ICAgICAgIHRvQWRkICs9IHZlcnRpY2FsU2Nyb2xsYmFyV2lkdGgoKTsKQEAgLTEwMTksNyArMTAx
OSw3IEBAIGludCBSZW5kZXJGbGV4aWJsZUJveDo6YWxsb3dlZENoaWxkRmxleChSZW5kZXJCb3gq
IGNoaWxkLCBib29sIGV4cGFuZGluZywgdW5zaWduCiAgICAgICAgIGlmIChpc0hvcml6b250YWwo
KSkgewogICAgICAgICAgICAgLy8gRklYTUU6IEZvciBub3cganVzdCBoYW5kbGUgZml4ZWQgdmFs
dWVzLgogICAgICAgICAgICAgaW50IG1heFcgPSBJTlRfTUFYOwotICAgICAgICAgICAgaW50IHcg
PSBjaGlsZC0+b3ZlcnJpZGVXaWR0aCgpIC0gKGNoaWxkLT5ib3JkZXJMZWZ0KCkgKyBjaGlsZC0+
Ym9yZGVyUmlnaHQoKSArIGNoaWxkLT5wYWRkaW5nTGVmdCgpICsgY2hpbGQtPnBhZGRpbmdSaWdo
dCgpKTsKKyAgICAgICAgICAgIGludCB3ID0gY2hpbGQtPm92ZXJyaWRlV2lkdGgoKSAtIGNoaWxk
LT5wYWRkaW5nQW5kQm9yZGVyV2lkdGgoKTsKICAgICAgICAgICAgIGlmICghY2hpbGQtPnN0eWxl
KCktPm1heFdpZHRoKCkuaXNVbmRlZmluZWQoKSAmJgogICAgICAgICAgICAgICAgIGNoaWxkLT5z
dHlsZSgpLT5tYXhXaWR0aCgpLmlzRml4ZWQoKSkKICAgICAgICAgICAgICAgICBtYXhXID0gY2hp
bGQtPnN0eWxlKCktPm1heFdpZHRoKCkudmFsdWUoKTsKQEAgLTEwMzMsNyArMTAzMyw3IEBAIGlu
dCBSZW5kZXJGbGV4aWJsZUJveDo6YWxsb3dlZENoaWxkRmxleChSZW5kZXJCb3gqIGNoaWxkLCBi
b29sIGV4cGFuZGluZywgdW5zaWduCiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAvLyBG
SVhNRTogRm9yIG5vdyBqdXN0IGhhbmRsZSBmaXhlZCB2YWx1ZXMuCiAgICAgICAgICAgICBpbnQg
bWF4SCA9IElOVF9NQVg7Ci0gICAgICAgICAgICBpbnQgaCA9IGNoaWxkLT5vdmVycmlkZUhlaWdo
dCgpIC0gKGNoaWxkLT5ib3JkZXJUb3AoKSArIGNoaWxkLT5ib3JkZXJCb3R0b20oKSArIGNoaWxk
LT5wYWRkaW5nVG9wKCkgKyBjaGlsZC0+cGFkZGluZ0JvdHRvbSgpKTsKKyAgICAgICAgICAgIGlu
dCBoID0gY2hpbGQtPm92ZXJyaWRlSGVpZ2h0KCkgLSBjaGlsZC0+cGFkZGluZ0FuZEJvcmRlckhl
aWdodCgpOwogICAgICAgICAgICAgaWYgKCFjaGlsZC0+c3R5bGUoKS0+bWF4SGVpZ2h0KCkuaXNV
bmRlZmluZWQoKSAmJgogICAgICAgICAgICAgICAgIGNoaWxkLT5zdHlsZSgpLT5tYXhIZWlnaHQo
KS5pc0ZpeGVkKCkpCiAgICAgICAgICAgICAgICAgbWF4SCA9IGNoaWxkLT5zdHlsZSgpLT5tYXhI
ZWlnaHQoKS52YWx1ZSgpOwpAQCAtMTA0Niw3ICsxMDQ2LDcgQEAgaW50IFJlbmRlckZsZXhpYmxl
Qm94OjphbGxvd2VkQ2hpbGRGbGV4KFJlbmRlckJveCogY2hpbGQsIGJvb2wgZXhwYW5kaW5nLCB1
bnNpZ24KICAgICAvLyBGSVhNRTogRm9yIG5vdyBqdXN0IGhhbmRsZSBmaXhlZCB2YWx1ZXMuCiAg
ICAgaWYgKGlzSG9yaXpvbnRhbCgpKSB7CiAgICAgICAgIGludCBtaW5XID0gY2hpbGQtPm1pblBy
ZWZXaWR0aCgpOwotICAgICAgICBpbnQgdyA9IGNoaWxkLT5vdmVycmlkZVdpZHRoKCkgLSAoY2hp
bGQtPmJvcmRlckxlZnQoKSArIGNoaWxkLT5ib3JkZXJSaWdodCgpICsgY2hpbGQtPnBhZGRpbmdM
ZWZ0KCkgKyBjaGlsZC0+cGFkZGluZ1JpZ2h0KCkpOworICAgICAgICBpbnQgdyA9IGNoaWxkLT5v
dmVycmlkZVdpZHRoKCkgLSBjaGlsZC0+cGFkZGluZ0FuZEJvcmRlcldpZHRoKCk7CiAgICAgICAg
IGlmIChjaGlsZC0+c3R5bGUoKS0+bWluV2lkdGgoKS5pc0ZpeGVkKCkpCiAgICAgICAgICAgICBt
aW5XID0gY2hpbGQtPnN0eWxlKCktPm1pbldpZHRoKCkudmFsdWUoKTsKICAgICAgICAgZWxzZSBp
ZiAoY2hpbGQtPnN0eWxlKCktPm1pbldpZHRoKCkudHlwZSgpID09IEludHJpbnNpYykKZGlmZiAt
LWdpdCBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlLmNwcCBiL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckltYWdlLmNwcAppbmRleCBmNmZkMTM1Li5kZjc3Y2NiIDEwMDY0NAotLS0gYS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZS5jcHAKKysrIGIvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVySW1hZ2UuY3BwCkBAIC02MzcsNyArNjM3LDcgQEAgdm9pZCBSZW5kZXJJbWFnZTo6Y2Fs
Y1ByZWZXaWR0aHMoKQogewogICAgIEFTU0VSVChwcmVmV2lkdGhzRGlydHkoKSk7CiAKLSAgICBp
bnQgcGFkZGluZ0FuZEJvcmRlcnMgPSBwYWRkaW5nTGVmdCgpICsgcGFkZGluZ1JpZ2h0KCkgKyBi
b3JkZXJMZWZ0KCkgKyBib3JkZXJSaWdodCgpOworICAgIGludCBwYWRkaW5nQW5kQm9yZGVycyA9
IHBhZGRpbmdBbmRCb3JkZXJXaWR0aCgpOwogICAgIG1fbWF4UHJlZldpZHRoID0gY2FsY1JlcGxh
Y2VkV2lkdGgoZmFsc2UpICsgcGFkZGluZ0FuZEJvcmRlcnM7CiAKICAgICBpZiAoc3R5bGUoKS0+
bWF4V2lkdGgoKS5pc0ZpeGVkKCkgJiYgc3R5bGUoKS0+bWF4V2lkdGgoKS52YWx1ZSgpICE9IHVu
ZGVmaW5lZExlbmd0aCkKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVy
LmNwcCBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcAppbmRleCBlYzA5ODg2Li5l
NjM0NWFiIDEwMDY0NAotLS0gYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAKKysr
IGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCkBAIC0xNTM4LDggKzE1MzgsNyBA
QCB2b2lkIFJlbmRlckxheWVyOjpyZXNpemUoY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JiBldnQs
IGNvbnN0IEludFNpemUmIG9sZE9mZnNldAogICAgICAgICAgICAgc3R5bGUtPnNldFByb3BlcnR5
KENTU1Byb3BlcnR5TWFyZ2luTGVmdCwgU3RyaW5nOjpudW1iZXIocmVuZGVyZXItPm1hcmdpbkxl
ZnQoKSAvIHpvb21GYWN0b3IpICsgInB4IiwgZmFsc2UsIGVjKTsKICAgICAgICAgICAgIHN0eWxl
LT5zZXRQcm9wZXJ0eShDU1NQcm9wZXJ0eU1hcmdpblJpZ2h0LCBTdHJpbmc6Om51bWJlcihyZW5k
ZXJlci0+bWFyZ2luUmlnaHQoKSAvIHpvb21GYWN0b3IpICsgInB4IiwgZmFsc2UsIGVjKTsKICAg
ICAgICAgfQotICAgICAgICBpbnQgYmFzZVdpZHRoID0gcmVuZGVyZXItPndpZHRoKCkgLSAoaXNC
b3hTaXppbmdCb3JkZXIgPyAwCi0gICAgICAgICAgICA6IHJlbmRlcmVyLT5ib3JkZXJMZWZ0KCkg
KyByZW5kZXJlci0+cGFkZGluZ0xlZnQoKSArIHJlbmRlcmVyLT5ib3JkZXJSaWdodCgpICsgcmVu
ZGVyZXItPnBhZGRpbmdSaWdodCgpKTsKKyAgICAgICAgaW50IGJhc2VXaWR0aCA9IHJlbmRlcmVy
LT53aWR0aCgpIC0gKGlzQm94U2l6aW5nQm9yZGVyID8gMCA6IHJlbmRlcmVyLT5wYWRkaW5nQW5k
Qm9yZGVyV2lkdGgoKSk7CiAgICAgICAgIGJhc2VXaWR0aCA9IGJhc2VXaWR0aCAvIHpvb21GYWN0
b3I7CiAgICAgICAgIHN0eWxlLT5zZXRQcm9wZXJ0eShDU1NQcm9wZXJ0eVdpZHRoLCBTdHJpbmc6
Om51bWJlcihiYXNlV2lkdGggKyBkaWZmZXJlbmNlLndpZHRoKCkpICsgInB4IiwgZmFsc2UsIGVj
KTsKICAgICB9CkBAIC0xNTUwLDggKzE1NDksNyBAQCB2b2lkIFJlbmRlckxheWVyOjpyZXNpemUo
Y29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JiBldnQsIGNvbnN0IEludFNpemUmIG9sZE9mZnNldAog
ICAgICAgICAgICAgc3R5bGUtPnNldFByb3BlcnR5KENTU1Byb3BlcnR5TWFyZ2luVG9wLCBTdHJp
bmc6Om51bWJlcihyZW5kZXJlci0+bWFyZ2luVG9wKCkgLyB6b29tRmFjdG9yKSArICJweCIsIGZh
bHNlLCBlYyk7CiAgICAgICAgICAgICBzdHlsZS0+c2V0UHJvcGVydHkoQ1NTUHJvcGVydHlNYXJn
aW5Cb3R0b20sIFN0cmluZzo6bnVtYmVyKHJlbmRlcmVyLT5tYXJnaW5Cb3R0b20oKSAvIHpvb21G
YWN0b3IpICsgInB4IiwgZmFsc2UsIGVjKTsKICAgICAgICAgfQotICAgICAgICBpbnQgYmFzZUhl
aWdodCA9IHJlbmRlcmVyLT5oZWlnaHQoKSAtIChpc0JveFNpemluZ0JvcmRlciA/IDAKLSAgICAg
ICAgICAgIDogcmVuZGVyZXItPmJvcmRlclRvcCgpICsgcmVuZGVyZXItPnBhZGRpbmdUb3AoKSAr
IHJlbmRlcmVyLT5ib3JkZXJCb3R0b20oKSArIHJlbmRlcmVyLT5wYWRkaW5nQm90dG9tKCkpOwor
ICAgICAgICBpbnQgYmFzZUhlaWdodCA9IHJlbmRlcmVyLT5oZWlnaHQoKSAtIChpc0JveFNpemlu
Z0JvcmRlciA/IDAgOiByZW5kZXJlci0+cGFkZGluZ0FuZEJvcmRlckhlaWdodCgpKTsKICAgICAg
ICAgYmFzZUhlaWdodCA9IGJhc2VIZWlnaHQgLyB6b29tRmFjdG9yOwogICAgICAgICBzdHlsZS0+
c2V0UHJvcGVydHkoQ1NTUHJvcGVydHlIZWlnaHQsIFN0cmluZzo6bnVtYmVyKGJhc2VIZWlnaHQg
KyBkaWZmZXJlbmNlLmhlaWdodCgpKSArICJweCIsIGZhbHNlLCBlYyk7CiAgICAgfQpkaWZmIC0t
Z2l0IGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGlzdEJveC5jcHAgYi9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJMaXN0Qm94LmNwcAppbmRleCAxNWM2NTJjLi4zZDViMGYwIDEwMDY0NAotLS0g
YS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMaXN0Qm94LmNwcAorKysgYi9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJMaXN0Qm94LmNwcApAQCAtMTg4LDcgKzE4OCw3IEBAIHZvaWQgUmVuZGVyTGlz
dEJveDo6Y2FsY1ByZWZXaWR0aHMoKQogICAgICAgICBtX21pblByZWZXaWR0aCA9IG1pbihtX21p
blByZWZXaWR0aCwgY2FsY0NvbnRlbnRCb3hXaWR0aChzdHlsZSgpLT5tYXhXaWR0aCgpLnZhbHVl
KCkpKTsKICAgICB9CiAKLSAgICBpbnQgdG9BZGQgPSBwYWRkaW5nTGVmdCgpICsgcGFkZGluZ1Jp
Z2h0KCkgKyBib3JkZXJMZWZ0KCkgKyBib3JkZXJSaWdodCgpOworICAgIGludCB0b0FkZCA9IHBh
ZGRpbmdBbmRCb3JkZXJXaWR0aCgpOwogICAgIG1fbWluUHJlZldpZHRoICs9IHRvQWRkOwogICAg
IG1fbWF4UHJlZldpZHRoICs9IHRvQWRkOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAKQEAgLTIyMSw3ICsyMjEsNyBAQCBpbnQgUmVuZGVyTGlzdEJveDo6bGlzdEhlaWdodCgpIGNv
bnN0CiAKIHZvaWQgUmVuZGVyTGlzdEJveDo6Y2FsY0hlaWdodCgpCiB7Ci0gICAgaW50IHRvQWRk
ID0gcGFkZGluZ1RvcCgpICsgcGFkZGluZ0JvdHRvbSgpICsgYm9yZGVyVG9wKCkgKyBib3JkZXJC
b3R0b20oKTsKKyAgICBpbnQgdG9BZGQgPSBwYWRkaW5nQW5kQm9yZGVySGVpZ2h0KCk7CiAgCiAg
ICAgaW50IGl0ZW1IZWlnaHQgPSBSZW5kZXJMaXN0Qm94OjppdGVtSGVpZ2h0KCk7CiAgICAgc2V0
SGVpZ2h0KGl0ZW1IZWlnaHQgKiBzaXplKCkgLSByb3dTcGFjaW5nICsgdG9BZGQpOwpkaWZmIC0t
Z2l0IGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTWVudUxpc3QuY3BwIGIvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyTWVudUxpc3QuY3BwCmluZGV4IDUxODkyNWEuLjIxYWM1OGUgMTAwNjQ0Ci0t
LSBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck1lbnVMaXN0LmNwcAorKysgYi9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJNZW51TGlzdC5jcHAKQEAgLTI2Miw3ICsyNjIsNyBAQCB2b2lkIFJlbmRl
ck1lbnVMaXN0OjpjYWxjUHJlZldpZHRocygpCiAgICAgICAgIG1fbWluUHJlZldpZHRoID0gbWlu
KG1fbWluUHJlZldpZHRoLCBjYWxjQ29udGVudEJveFdpZHRoKHN0eWxlKCktPm1heFdpZHRoKCku
dmFsdWUoKSkpOwogICAgIH0KIAotICAgIGludCB0b0FkZCA9IHBhZGRpbmdMZWZ0KCkgKyBwYWRk
aW5nUmlnaHQoKSArIGJvcmRlckxlZnQoKSArIGJvcmRlclJpZ2h0KCk7CisgICAgaW50IHRvQWRk
ID0gcGFkZGluZ0FuZEJvcmRlcldpZHRoKCk7CiAgICAgbV9taW5QcmVmV2lkdGggKz0gdG9BZGQ7
CiAgICAgbV9tYXhQcmVmV2lkdGggKz0gdG9BZGQ7CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclJlcGxhY2VkLmNwcCBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclJlcGxh
Y2VkLmNwcAppbmRleCAwYmE5OWY1Li41OGEwNDQ5IDEwMDY0NAotLS0gYS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJSZXBsYWNlZC5jcHAKKysrIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyUmVw
bGFjZWQuY3BwCkBAIC0xOTYsNyArMTk2LDcgQEAgdm9pZCBSZW5kZXJSZXBsYWNlZDo6Y2FsY1By
ZWZXaWR0aHMoKQogewogICAgIEFTU0VSVChwcmVmV2lkdGhzRGlydHkoKSk7CiAKLSAgICBpbnQg
cGFkZGluZ0FuZEJvcmRlcnMgPSBwYWRkaW5nTGVmdCgpICsgcGFkZGluZ1JpZ2h0KCkgKyBib3Jk
ZXJMZWZ0KCkgKyBib3JkZXJSaWdodCgpOworICAgIGludCBwYWRkaW5nQW5kQm9yZGVycyA9IHBh
ZGRpbmdBbmRCb3JkZXJXaWR0aCgpOwogICAgIGludCB3aWR0aCA9IGNhbGNSZXBsYWNlZFdpZHRo
KGZhbHNlKSArIHBhZGRpbmdBbmRCb3JkZXJzOwogCiAgICAgaWYgKHN0eWxlKCktPm1heFdpZHRo
KCkuaXNGaXhlZCgpICYmIHN0eWxlKCktPm1heFdpZHRoKCkudmFsdWUoKSAhPSB1bmRlZmluZWRM
ZW5ndGgpCmRpZmYgLS1naXQgYS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTVkdSb290LmNwcCBi
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNWR1Jvb3QuY3BwCmluZGV4IDVlZDA4NzEuLmRiNmU1
YTEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNWR1Jvb3QuY3BwCisrKyBi
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNWR1Jvb3QuY3BwCkBAIC02Miw3ICs2Miw3IEBAIHZv
aWQgUmVuZGVyU1ZHUm9vdDo6Y2FsY1ByZWZXaWR0aHMoKQogewogICAgIEFTU0VSVChwcmVmV2lk
dGhzRGlydHkoKSk7CiAKLSAgICBpbnQgcGFkZGluZ0FuZEJvcmRlcnMgPSBwYWRkaW5nTGVmdCgp
ICsgcGFkZGluZ1JpZ2h0KCkgKyBib3JkZXJMZWZ0KCkgKyBib3JkZXJSaWdodCgpOworICAgIGlu
dCBwYWRkaW5nQW5kQm9yZGVycyA9IHBhZGRpbmdBbmRCb3JkZXJXaWR0aCgpOwogICAgIGludCB3
aWR0aCA9IGNhbGNSZXBsYWNlZFdpZHRoKGZhbHNlKSArIHBhZGRpbmdBbmRCb3JkZXJzOwogCiAg
ICAgaWYgKHN0eWxlKCktPm1heFdpZHRoKCkuaXNGaXhlZCgpICYmIHN0eWxlKCktPm1heFdpZHRo
KCkudmFsdWUoKSAhPSB1bmRlZmluZWRMZW5ndGgpCmRpZmYgLS1naXQgYS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJTbGlkZXIuY3BwIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2xpZGVyLmNw
cAppbmRleCA3MjlmZDE1Li4xYTdhN2M0IDEwMDY0NAotLS0gYS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJTbGlkZXIuY3BwCisrKyBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNsaWRlci5jcHAK
QEAgLTE4Miw3ICsxODIsNyBAQCB2b2lkIFJlbmRlclNsaWRlcjo6Y2FsY1ByZWZXaWR0aHMoKQog
ICAgICAgICBtX21pblByZWZXaWR0aCA9IG1pbihtX21pblByZWZXaWR0aCwgY2FsY0NvbnRlbnRC
b3hXaWR0aChzdHlsZSgpLT5tYXhXaWR0aCgpLnZhbHVlKCkpKTsKICAgICB9CiAKLSAgICBpbnQg
dG9BZGQgPSBwYWRkaW5nTGVmdCgpICsgcGFkZGluZ1JpZ2h0KCkgKyBib3JkZXJMZWZ0KCkgKyBi
b3JkZXJSaWdodCgpOworICAgIGludCB0b0FkZCA9IHBhZGRpbmdBbmRCb3JkZXJXaWR0aCgpOwog
ICAgIG1fbWluUHJlZldpZHRoICs9IHRvQWRkOwogICAgIG1fbWF4UHJlZldpZHRoICs9IHRvQWRk
OwogCkBAIC0yNTYsOCArMjU2LDcgQEAgdm9pZCBSZW5kZXJTbGlkZXI6OmxheW91dCgpCiAKICAg
ICBSZW5kZXJCb3gqIHRodW1iID0gbV90aHVtYiA/IHRvUmVuZGVyQm94KG1fdGh1bWItPnJlbmRl
cmVyKCkpIDogMDsKIAotICAgIEludFNpemUgYmFzZVNpemUoYm9yZGVyTGVmdCgpICsgcGFkZGlu
Z0xlZnQoKSArIHBhZGRpbmdSaWdodCgpICsgYm9yZGVyUmlnaHQoKSwKLSAgICAgICAgYm9yZGVy
VG9wKCkgKyBwYWRkaW5nVG9wKCkgKyBwYWRkaW5nQm90dG9tKCkgKyBib3JkZXJCb3R0b20oKSk7
CisgICAgSW50U2l6ZSBiYXNlU2l6ZShwYWRkaW5nQW5kQm9yZGVyV2lkdGgoKSwgcGFkZGluZ0Fu
ZEJvcmRlckhlaWdodCgpKTsKIAogICAgIGlmICh0aHVtYikgewogICAgICAgICAvLyBBbGxvdyB0
aGUgdGhlbWUgdG8gc2V0IHRoZSBzaXplIG9mIHRoZSB0aHVtYi4KZGlmZiAtLWdpdCBhL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlQ2VsbC5jcHAgYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJUYWJsZUNlbGwuY3BwCmluZGV4IGIyODNhZTEuLmQ1M2MxN2EgMTAwNjQ0Ci0tLSBhL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlQ2VsbC5jcHAKKysrIGIvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyVGFibGVDZWxsLmNwcApAQCAtMTE1LDcgKzExNSw3IEBAIExlbmd0aCBSZW5kZXJUYWJs
ZUNlbGw6OnN0eWxlT3JDb2xXaWR0aCgpIGNvbnN0CiAgICAgICAgIC8vIFBlcmNlbnRhZ2VzIGRv
bid0IG5lZWQgdG8gYmUgaGFuZGxlZCBzaW5jZSB0aGV5J3JlIGFsd2F5cyB0cmVhdGVkIHRoaXMg
d2F5IChldmVuIHdoZW4gc3BlY2lmaWVkIG9uIHRoZSBjZWxscykuCiAgICAgICAgIC8vIFNlZSBC
dWd6aWxsYSBidWcgODEyNiBmb3IgZGV0YWlscy4KICAgICAgICAgaWYgKGNvbFdpZHRoU3VtLmlz
Rml4ZWQoKSAmJiBjb2xXaWR0aFN1bS52YWx1ZSgpID4gMCkKLSAgICAgICAgICAgIGNvbFdpZHRo
U3VtID0gTGVuZ3RoKG1heCgwLCBjb2xXaWR0aFN1bS52YWx1ZSgpIC0gYm9yZGVyTGVmdCgpIC0g
Ym9yZGVyUmlnaHQoKSAtIHBhZGRpbmdMZWZ0KCkgLSBwYWRkaW5nUmlnaHQoKSksIEZpeGVkKTsK
KyAgICAgICAgICAgIGNvbFdpZHRoU3VtID0gTGVuZ3RoKG1heCgwLCBjb2xXaWR0aFN1bS52YWx1
ZSgpIC0gcGFkZGluZ0FuZEJvcmRlcldpZHRoKCkpLCBGaXhlZCk7CiAgICAgICAgIHJldHVybiBj
b2xXaWR0aFN1bTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
clRleHRDb250cm9sLmNwcCBiL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sLmNw
cAppbmRleCA1ZTE5MzYyLi4wMTAwZjU5IDEwMDY0NAotLS0gYS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJUZXh0Q29udHJvbC5jcHAKKysrIGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENv
bnRyb2wuY3BwCkBAIC0xNTEsMTMgKzE1MSwxMiBAQCB2b2lkIFJlbmRlclRleHRDb250cm9sOjpj
cmVhdGVTdWJ0cmVlSWZOZWVkZWQoVGV4dENvbnRyb2xJbm5lckVsZW1lbnQqIGlubmVyQmxvYwog
CiBpbnQgUmVuZGVyVGV4dENvbnRyb2w6OnRleHRCbG9ja0hlaWdodCgpIGNvbnN0CiB7Ci0gICAg
cmV0dXJuIGhlaWdodCgpIC0gcGFkZGluZ1RvcCgpIC0gcGFkZGluZ0JvdHRvbSgpIC0gYm9yZGVy
VG9wKCkgLSBib3JkZXJCb3R0b20oKTsKKyAgICByZXR1cm4gaGVpZ2h0KCkgLSBwYWRkaW5nQW5k
Qm9yZGVySGVpZ2h0KCk7CiB9CiAKIGludCBSZW5kZXJUZXh0Q29udHJvbDo6dGV4dEJsb2NrV2lk
dGgoKSBjb25zdAogewotICAgIHJldHVybiB3aWR0aCgpIC0gcGFkZGluZ0xlZnQoKSAtIHBhZGRp
bmdSaWdodCgpIC0gYm9yZGVyTGVmdCgpIC0gYm9yZGVyUmlnaHQoKQotICAgICAgICAgICAtIG1f
aW5uZXJUZXh0LT5yZW5kZXJCb3goKS0+cGFkZGluZ0xlZnQoKSAtIG1faW5uZXJUZXh0LT5yZW5k
ZXJCb3goKS0+cGFkZGluZ1JpZ2h0KCk7CisgICAgcmV0dXJuIHdpZHRoKCkgLSBwYWRkaW5nQW5k
Qm9yZGVyV2lkdGgoKSAtIG1faW5uZXJUZXh0LT5yZW5kZXJCb3goKS0+cGFkZGluZ0xlZnQoKSAt
IG1faW5uZXJUZXh0LT5yZW5kZXJCb3goKS0+cGFkZGluZ1JpZ2h0KCk7CiB9CiAKIHZvaWQgUmVu
ZGVyVGV4dENvbnRyb2w6OnVwZGF0ZUZyb21FbGVtZW50KCkKQEAgLTQxMCw3ICs0MDksNyBAQCB2
b2lkIFJlbmRlclRleHRDb250cm9sOjpjYWxjSGVpZ2h0KCkKICAgICAgICAgICAgICAgbV9pbm5l
clRleHQtPnJlbmRlckJveCgpLT5tYXJnaW5Ub3AoKSArIG1faW5uZXJUZXh0LT5yZW5kZXJCb3go
KS0+bWFyZ2luQm90dG9tKCkpOwogCiAgICAgYWRqdXN0Q29udHJvbEhlaWdodEJhc2VkT25MaW5l
SGVpZ2h0KG1faW5uZXJUZXh0LT5yZW5kZXJlcigpLT5saW5lSGVpZ2h0KHRydWUsIHRydWUpKTsK
LSAgICBzZXRIZWlnaHQoaGVpZ2h0KCkgKyBwYWRkaW5nVG9wKCkgKyBwYWRkaW5nQm90dG9tKCkg
KyBib3JkZXJUb3AoKSArIGJvcmRlckJvdHRvbSgpKTsKKyAgICBzZXRIZWlnaHQoaGVpZ2h0KCkg
KyBwYWRkaW5nQW5kQm9yZGVySGVpZ2h0KCkpOwogCiAgICAgLy8gV2UgYXJlIGFibGUgdG8gaGF2
ZSBhIGhvcml6b250YWwgc2Nyb2xsYmFyIGlmIHRoZSBvdmVyZmxvdyBzdHlsZSBpcyBzY3JvbGws
IG9yIGlmIGl0cyBhdXRvIGFuZCB0aGVyZSdzIG5vIHdvcmQgd3JhcC4KICAgICBpZiAoc3R5bGUo
KS0+b3ZlcmZsb3dYKCkgPT0gT1NDUk9MTCB8fCAgKHN0eWxlKCktPm92ZXJmbG93WCgpID09IE9B
VVRPICYmIG1faW5uZXJUZXh0LT5yZW5kZXJlcigpLT5zdHlsZSgpLT53b3JkV3JhcCgpID09IE5v
cm1hbFdvcmRXcmFwKSkKQEAgLTU0MSw3ICs1NDAsNyBAQCB2b2lkIFJlbmRlclRleHRDb250cm9s
OjpjYWxjUHJlZldpZHRocygpCiAgICAgICAgIG1fbWluUHJlZldpZHRoID0gbWluKG1fbWluUHJl
ZldpZHRoLCBjYWxjQ29udGVudEJveFdpZHRoKHN0eWxlKCktPm1heFdpZHRoKCkudmFsdWUoKSkp
OwogICAgIH0KIAotICAgIGludCB0b0FkZCA9IHBhZGRpbmdMZWZ0KCkgKyBwYWRkaW5nUmlnaHQo
KSArIGJvcmRlckxlZnQoKSArIGJvcmRlclJpZ2h0KCk7CisgICAgaW50IHRvQWRkID0gcGFkZGlu
Z0FuZEJvcmRlcldpZHRoKCk7CiAKICAgICBtX21pblByZWZXaWR0aCArPSB0b0FkZDsKICAgICBt
X21heFByZWZXaWR0aCArPSB0b0FkZDsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlclRleHRDb250cm9sU2luZ2xlTGluZS5jcHAgYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJU
ZXh0Q29udHJvbFNpbmdsZUxpbmUuY3BwCmluZGV4IGE3NjJhYzUuLjk2YzE1ZTYgMTAwNjQ0Ci0t
LSBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sU2luZ2xlTGluZS5jcHAKKysr
IGIvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5lLmNwcApAQCAt
MjIzLDcgKzIyMyw3IEBAIHZvaWQgUmVuZGVyVGV4dENvbnRyb2xTaW5nbGVMaW5lOjpsYXlvdXQo
KQogICAgIGlubmVyVGV4dFJlbmRlcmVyLT5zdHlsZSgpLT5zZXRXaWR0aChMZW5ndGgoZGVzaXJl
ZFdpZHRoLCBGaXhlZCkpOwogCiAgICAgaWYgKG1faW5uZXJCbG9jaykgewotICAgICAgICBpbnQg
aW5uZXJCbG9ja1dpZHRoID0gd2lkdGgoKSAtIHBhZGRpbmdMZWZ0KCkgLSBwYWRkaW5nUmlnaHQo
KSAtIGJvcmRlckxlZnQoKSAtIGJvcmRlclJpZ2h0KCk7CisgICAgICAgIGludCBpbm5lckJsb2Nr
V2lkdGggPSB3aWR0aCgpIC0gcGFkZGluZ0FuZEJvcmRlcldpZHRoKCk7CiAgICAgICAgIGlmIChp
bm5lckJsb2NrV2lkdGggIT0gaW5uZXJCbG9ja1JlbmRlcmVyLT53aWR0aCgpKQogICAgICAgICAg
ICAgcmVsYXlvdXRDaGlsZHJlbiA9IHRydWU7CiAgICAgICAgIGlubmVyQmxvY2tSZW5kZXJlci0+
c3R5bGUoKS0+c2V0V2lkdGgoTGVuZ3RoKGlubmVyQmxvY2tXaWR0aCwgRml4ZWQpKTsKZGlmZiAt
LWdpdCBhL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcldpZGdldC5jcHAgYi9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJXaWRnZXQuY3BwCmluZGV4IDk3YjMzYTUuLmQyNWYxMzggMTAwNjQ0Ci0tLSBh
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcldpZGdldC5jcHAKKysrIGIvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyV2lkZ2V0LmNwcApAQCAtMzIwLDggKzMyMCw4IEBAIHZvaWQgUmVuZGVyV2lkZ2V0
Ojp1cGRhdGVXaWRnZXRQb3NpdGlvbigpCiAgICAgRmxvYXRQb2ludCBhYnNQb3MgPSBsb2NhbFRv
QWJzb2x1dGUoKTsKICAgICBhYnNQb3MubW92ZShib3JkZXJMZWZ0KCkgKyBwYWRkaW5nTGVmdCgp
LCBib3JkZXJUb3AoKSArIHBhZGRpbmdUb3AoKSk7CiAKLSAgICBpbnQgdyA9IHdpZHRoKCkgLSBi
b3JkZXJMZWZ0KCkgLSBib3JkZXJSaWdodCgpIC0gcGFkZGluZ0xlZnQoKSAtIHBhZGRpbmdSaWdo
dCgpOwotICAgIGludCBoID0gaGVpZ2h0KCkgLSBib3JkZXJUb3AoKSAtIGJvcmRlckJvdHRvbSgp
IC0gcGFkZGluZ1RvcCgpIC0gcGFkZGluZ0JvdHRvbSgpOworICAgIGludCB3ID0gd2lkdGgoKSAt
IHBhZGRpbmdBbmRCb3JkZXJXaWR0aCgpOworICAgIGludCBoID0gaGVpZ2h0KCkgLSBwYWRkaW5n
QW5kQm9yZGVySGVpZ2h0KCk7CiAKICAgICBib29sIGJvdW5kc0NoYW5nZWQgPSBzZXRXaWRnZXRH
ZW9tZXRyeShJbnRSZWN0KGFic1Bvcy54KCksIGFic1Bvcy55KCksIHcsIGgpKTsKIAo=
</data>
<flag name="review"
          id="38065"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
      

    </bug>

</bugzilla>