<?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>68096</bug_id>
          
          <creation_ts>2011-09-14 11:48:26 -0700</creation_ts>
          <short_desc>[Skia/Chrome] Cleanup unneeded code now that GrGLInterface is used to set GL ctx per GL call.</short_desc>
          <delta_ts>2011-09-15 08:12:27 -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>Canvas</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="Brian Salomon">bsalomon</reporter>
          <assigned_to name="Brian Salomon">bsalomon</assigned_to>
          <cc>jamesr</cc>
    
    <cc>kbr</cc>
    
    <cc>mdelaney7</cc>
    
    <cc>senorblanco</cc>
    
    <cc>twiz</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>467187</commentid>
    <comment_count>0</comment_count>
    <who name="Brian Salomon">bsalomon</who>
    <bug_when>2011-09-14 11:48:26 -0700</bug_when>
    <thetext>[Skia/Chrome] Cleanup unneeded code now that GrGLInterface is used to set GL ctx per GL call.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>467207</commentid>
    <comment_count>1</comment_count>
      <attachid>107366</attachid>
    <who name="Brian Salomon">bsalomon</who>
    <bug_when>2011-09-14 12:06:19 -0700</bug_when>
    <thetext>Created attachment 107366
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>467229</commentid>
    <comment_count>2</comment_count>
      <attachid>107372</attachid>
    <who name="Brian Salomon">bsalomon</who>
    <bug_when>2011-09-14 12:17:23 -0700</bug_when>
    <thetext>Created attachment 107372
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>467230</commentid>
    <comment_count>3</comment_count>
      <attachid>107372</attachid>
    <who name="Brian Salomon">bsalomon</who>
    <bug_when>2011-09-14 12:21:29 -0700</bug_when>
    <thetext>Comment on attachment 107372
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=107372&amp;action=review

&gt; Source/WebKit/chromium/src/WebGraphicsContext3D.cpp:-35
&gt; -#if GR_GL_PER_GL_FUNC_CALLBACK

These guards were here to perform a two-sided change. It should always defined to 1 now. If it isn&apos;t I&apos;d rather see the below code fail to compile than silently succeed without inserting the callback.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>467248</commentid>
    <comment_count>4</comment_count>
      <attachid>107372</attachid>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2011-09-14 12:35:01 -0700</bug_when>
    <thetext>Comment on attachment 107372
Patch

Thumbs up to code deletion as long as it&apos;s been tested.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>467279</commentid>
    <comment_count>5</comment_count>
      <attachid>107372</attachid>
    <who name="Stephen White">senorblanco</who>
    <bug_when>2011-09-14 13:17:22 -0700</bug_when>
    <thetext>Comment on attachment 107372
Patch

Me likey.

Hopefully it won&apos;t conflict with Jamesr&apos;s change (just landed).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>467565</commentid>
    <comment_count>6</comment_count>
      <attachid>107372</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-09-14 20:28:53 -0700</bug_when>
    <thetext>Comment on attachment 107372
Patch

Rejecting attachment 107372 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:
/platform/graphics/skia/SkiaFontWin.cpp
patching file Source/WebKit/chromium/ChangeLog
Hunk #1 succeeded at 1 with fuzz 3.
patching file Source/WebKit/chromium/public/WebGraphicsContext3D.h
patching file Source/WebKit/chromium/src/GraphicsContext3DChromium.cpp
Hunk #1 succeeded at 202 (offset 1 line).
patching file Source/WebKit/chromium/src/WebGraphicsContext3D.cpp

Failed to run &quot;[u&apos;/mnt/git/webkit-commit-queue/Tools/Scripts/svn-apply&apos;, u&apos;--reviewer&apos;, u&apos;Kenneth Russell&apos;, u&apos;--...&quot; exit_code: 1

Full output: http://queues.webkit.org/results/9676009</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>467763</commentid>
    <comment_count>7</comment_count>
      <attachid>107485</attachid>
    <who name="Brian Salomon">bsalomon</who>
    <bug_when>2011-09-15 06:13:46 -0700</bug_when>
    <thetext>Created attachment 107485
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>467770</commentid>
    <comment_count>8</comment_count>
    <who name="Brian Salomon">bsalomon</who>
    <bug_when>2011-09-15 06:46:47 -0700</bug_when>
    <thetext>It did conflict with James&apos;s patch and both ChangeLogs had conflicts. New patch, same as the old patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>467794</commentid>
    <comment_count>9</comment_count>
      <attachid>107485</attachid>
    <who name="Stephen White">senorblanco</who>
    <bug_when>2011-09-15 07:33:06 -0700</bug_when>
    <thetext>Comment on attachment 107485
Patch

Looks good.  r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>467812</commentid>
    <comment_count>10</comment_count>
      <attachid>107485</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-09-15 08:12:22 -0700</bug_when>
    <thetext>Comment on attachment 107485
Patch

Clearing flags on attachment: 107485

Committed r95192: &lt;http://trac.webkit.org/changeset/95192&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>467813</commentid>
    <comment_count>11</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-09-15 08:12:27 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>107366</attachid>
            <date>2011-09-14 12:06:19 -0700</date>
            <delta_ts>2011-09-14 12:17:19 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-68096-20110914150413.patch</filename>
            <type>text/plain</type>
            <size>20523</size>
            <attacher name="Brian Salomon">bsalomon</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDk1MTA3KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNTUgQEAKKzIwMTEtMDktMTQgIEJyaWFuIFNh
bG9tb24gIDxic2Fsb21vbkBnb29nbGUuY29tPgorCisgICAgICAgIFtTa2lhL0Nocm9tZV0gQ2xl
YW51cCB1bm5lZWRlZCBjb2RlIG5vdyB0aGF0IEdyR0xJbnRlcmZhY2UgaXMgdXNlZCB0byBzZXQg
R0wgY3R4IHBlciBHTCBjYWxsLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9NjgwOTYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBUaGlzIGNoYW5nZSByZW1vdmVzIHVubmVzc2FyeSBQbGF0Zm9ybUNvbnRleHRT
a2lhOjptYWtlR3JDb250ZXh0Q3VycmVudCBub3cgdGhhdCBHckdMSW50ZXJmYWNlIGlzIHVzZWQg
dG8gc2V0IHRoZSBjb250ZXh0IG9uIGV2ZXJ5IFNraWEgR0wgY2FsbC4KKworICAgICAgICBUZXN0
ZWQgYnkgZXZlcnkgY2FudmFzIGxheW91dCB0ZXN0LgorCisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vRm9udExpbnV4LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZvbnQ6OmRy
YXdHbHlwaHMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3NraWEvRm9udFNraWEuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Rm9udDo6ZHJhd0dseXBocyk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3Mvc2tpYS9HcmFwaGljc0NvbnRleHRTa2lhLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkdyYXBoaWNzQ29udGV4dDo6Y2xlYXJSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBo
aWNzQ29udGV4dDo6Y2xpcCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmRy
YXdDb252ZXhQb2x5Z29uKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6ZHJh
d0VsbGlwc2UpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpkcmF3Rm9jdXNS
aW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6ZHJhd0xpbmUpOgorICAg
ICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpkcmF3TGluZUZvclRleHRDaGVja2luZyk6
CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmRyYXdMaW5lRm9yVGV4dCk6Cisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmRyYXdSZWN0KToKKyAgICAgICAgKFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6ZmlsbFBhdGgpOgorICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0OjpmaWxsUmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHQ6OmZpbGxSb3VuZGVkUmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6
OnN0cm9rZUFyYyk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnN0cm9rZVBh
dGgpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpzdHJva2VSZWN0KToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9za2lhL0ltYWdlQnVmZmVyU2tpYS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6SW1hZ2VCdWZmZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6SW1hZ2VCdWZmZXI6On5JbWFnZUJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1
ZmZlcjo6Y29weUltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyOjpkcmF3KToK
KyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyOjpkcmF3UGF0dGVybik6CisgICAgICAgIChX
ZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6Z2V0VW5tdWx0aXBsaWVkSW1hZ2VEYXRhKToKKyAgICAgICAg
KFdlYkNvcmU6OkltYWdlQnVmZmVyOjpnZXRQcmVtdWx0aXBsaWVkSW1hZ2VEYXRhKToKKyAgICAg
ICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyOjpwdXRVbm11bHRpcGxpZWRJbWFnZURhdGEpOgorICAg
ICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXI6OnB1dFByZW11bHRpcGxpZWRJbWFnZURhdGEpOgor
ICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXI6OnRvRGF0YVVSTCk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3Mvc2tpYS9JbWFnZVNraWEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Qml0
bWFwSW1hZ2U6OmRyYXcpOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwSW1hZ2VTaW5nbGVGcmFt
ZVNraWE6OmRyYXcpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3NraWEvUGxhdGZvcm1D
b250ZXh0U2tpYS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybUNvbnRleHRTa2lhOjpj
bGlwUGF0aEFudGlBbGlhc2VkKToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtQ29udGV4dFNr
aWE6OnNldEdyYXBoaWNzQ29udGV4dDNEKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9z
a2lhL1BsYXRmb3JtQ29udGV4dFNraWEuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9z
a2lhL1NraWFGb250V2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnBhaW50U2tpYVRleHQpOgor
CiAyMDExLTA5LTEzICBFcmljIFNlaWRlbCAgPGVyaWNAd2Via2l0Lm9yZz4KIAogICAgICAgICBS
ZW1vdmUgRU5BQkxFX1NWR19VU0UgYXMgPHVzZT4gaXMgcmVxdWlyZWQgYnkgSFRNTDUKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ZvbnRMaW51eC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Rm9udExpbnV4LmNwcAkocmV2aXNpb24gOTUxMDIpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9Gb250TGludXguY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTAs
OCArMTEwLDYgQEAgdm9pZCBGb250OjpkcmF3R2x5cGhzKEdyYXBoaWNzQ29udGV4dCogZwogICAg
ICAgICB5ICs9IFNrRmxvYXRUb1NjYWxhcihhZHZbaV0uaGVpZ2h0KCkpOwogICAgIH0KIAotICAg
IGdjLT5wbGF0Zm9ybUNvbnRleHQoKS0+bWFrZUdyQ29udGV4dEN1cnJlbnQoKTsKLQogICAgIFNr
Q2FudmFzKiBjYW52YXMgPSBnYy0+cGxhdGZvcm1Db250ZXh0KCktPmNhbnZhcygpOwogICAgIFRl
eHREcmF3aW5nTW9kZUZsYWdzIHRleHRNb2RlID0gZ2MtPnBsYXRmb3JtQ29udGV4dCgpLT5nZXRU
ZXh0RHJhd2luZ01vZGUoKTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvc2tpYS9Gb250U2tpYS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvc2tpYS9Gb250U2tpYS5jcHAJKHJldmlzaW9uIDk1MTAyKQorKysgU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9Gb250U2tpYS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTEyNiw4ICsxMjYsNiBAQCB2b2lkIEZvbnQ6OmRyYXdHbHlwaHMoR3JhcGhpY3NDb250
ZXh0KiBnCiAgICAgICAgIHkgKz0gU2tGbG9hdFRvU2NhbGFyKGFkdltpXS5oZWlnaHQpOwogICAg
IH0KIAotICAgIGdjLT5wbGF0Zm9ybUNvbnRleHQoKS0+bWFrZUdyQ29udGV4dEN1cnJlbnQoKTsK
LQogICAgIFNrQ2FudmFzKiBjYW52YXMgPSBnYy0+cGxhdGZvcm1Db250ZXh0KCktPmNhbnZhcygp
OwogICAgIFRleHREcmF3aW5nTW9kZUZsYWdzIHRleHRNb2RlID0gZ2MtPnBsYXRmb3JtQ29udGV4
dCgpLT5nZXRUZXh0RHJhd2luZ01vZGUoKTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvc2tpYS9HcmFwaGljc0NvbnRleHRTa2lhLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9za2lhL0dyYXBoaWNzQ29udGV4dFNraWEu
Y3BwCShyZXZpc2lvbiA5NTEwMikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3NraWEvR3JhcGhpY3NDb250ZXh0U2tpYS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMzNSw4ICsz
MzUsNiBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6Y2xlYXJSZWN0KGNvbnN0IEZsCiAgICAgaWYg
KCFpc1JlY3RTa2lhU2FmZShnZXRDVE0oKSwgcikpCiAgICAgICAgIENsaXBSZWN0VG9DYW52YXMo
KnBsYXRmb3JtQ29udGV4dCgpLT5jYW52YXMoKSwgciwgJnIpOwogCi0gICAgcGxhdGZvcm1Db250
ZXh0KCktPm1ha2VHckNvbnRleHRDdXJyZW50KCk7Ci0KICAgICBTa1BhaW50IHBhaW50OwogICAg
IHBsYXRmb3JtQ29udGV4dCgpLT5zZXR1cFBhaW50Rm9yRmlsbGluZygmcGFpbnQpOwogICAgIHBh
aW50LnNldFhmZXJtb2RlTW9kZShTa1hmZXJtb2RlOjprQ2xlYXJfTW9kZSk7CkBAIC0zNTIsNyAr
MzUwLDYgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmNsaXAoY29uc3QgRmxvYXRSZQogICAgIGlm
ICghaXNSZWN0U2tpYVNhZmUoZ2V0Q1RNKCksIHIpKQogICAgICAgICByZXR1cm47CiAKLSAgICBw
bGF0Zm9ybUNvbnRleHQoKS0+bWFrZUdyQ29udGV4dEN1cnJlbnQoKTsKICAgICBwbGF0Zm9ybUNv
bnRleHQoKS0+Y2FudmFzKCktPmNsaXBSZWN0KHIpOwogfQogCkBAIC00NTYsOCArNDUzLDYgQEAg
dm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdDb252ZXhQb2x5Z29uKAogICAgIGlmIChudW1Qb2lu
dHMgPD0gMSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgcGxhdGZvcm1Db250ZXh0KCktPm1ha2VH
ckNvbnRleHRDdXJyZW50KCk7Ci0KICAgICBTa1BhdGggcGF0aDsKICAgICBzZXRQYXRoRnJvbUNv
bnZleFBvaW50cygmcGF0aCwgbnVtUG9pbnRzLCBwb2ludHMpOwogCkBAIC01MDUsNyArNTAwLDYg
QEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdFbGxpcHNlKGNvbnN0CiAgICAgaWYgKCFpc1Jl
Y3RTa2lhU2FmZShnZXRDVE0oKSwgcmVjdCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIHBsYXRm
b3JtQ29udGV4dCgpLT5tYWtlR3JDb250ZXh0Q3VycmVudCgpOwogICAgIFNrUGFpbnQgcGFpbnQ7
CiAgICAgcGxhdGZvcm1Db250ZXh0KCktPnNldHVwUGFpbnRGb3JGaWxsaW5nKCZwYWludCk7CiAg
ICAgcGxhdGZvcm1Db250ZXh0KCktPmNhbnZhcygpLT5kcmF3T3ZhbChyZWN0LCBwYWludCk7CkBA
IC01NjIsNyArNTU2LDYgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdGb2N1c1JpbmcoY29u
cwogICAgIGlmICghcmVjdENvdW50KQogICAgICAgICByZXR1cm47CiAKLSAgICBwbGF0Zm9ybUNv
bnRleHQoKS0+bWFrZUdyQ29udGV4dEN1cnJlbnQoKTsKICAgICBTa1JlZ2lvbiBmb2N1c1JpbmdS
ZWdpb247CiAgICAgY29uc3QgU2tTY2FsYXIgZm9jdXNSaW5nT3V0c2V0ID0gZ2V0Rm9jdXNSaW5n
T3V0c2V0KHdpZHRoKTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgcmVjdENvdW50OyBp
KyspIHsKQEAgLTU5Nyw4ICs1OTAsNiBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd0xpbmUo
Y29uc3QgSW50CiAgICAgaWYgKCFpc1BvaW50U2tpYVNhZmUoZ2V0Q1RNKCksIHBvaW50MSkgfHwg
IWlzUG9pbnRTa2lhU2FmZShnZXRDVE0oKSwgcG9pbnQyKSkKICAgICAgICAgcmV0dXJuOwogCi0g
ICAgcGxhdGZvcm1Db250ZXh0KCktPm1ha2VHckNvbnRleHRDdXJyZW50KCk7Ci0KICAgICBGbG9h
dFBvaW50IHAxID0gcG9pbnQxOwogICAgIEZsb2F0UG9pbnQgcDIgPSBwb2ludDI7CiAgICAgYm9v
bCBpc1ZlcnRpY2FsTGluZSA9IChwMS54KCkgPT0gcDIueCgpKTsKQEAgLTY0Myw4ICs2MzQsNiBA
QCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd0xpbmVGb3JUZXh0Q2hlCiAgICAgaWYgKHBhaW50
aW5nRGlzYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgcGxhdGZvcm1Db250ZXh0KCkt
Pm1ha2VHckNvbnRleHRDdXJyZW50KCk7Ci0KICAgICAvLyBDcmVhdGUgdGhlIHBhdHRlcm4gd2Un
bGwgdXNlIHRvIGRyYXcgdGhlIHVuZGVybGluZS4KICAgICBzdGF0aWMgU2tCaXRtYXAqIG1pc3Nw
ZWxsQml0bWFwID0gMDsKICAgICBpZiAoIW1pc3NwZWxsQml0bWFwKSB7CkBAIC03MjUsOCArNzE0
LDYgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdMaW5lRm9yVGV4dChjbwogICAgIGlmICh3
aWR0aCA8PSAwKQogICAgICAgICByZXR1cm47CiAKLSAgICBwbGF0Zm9ybUNvbnRleHQoKS0+bWFr
ZUdyQ29udGV4dEN1cnJlbnQoKTsKLQogICAgIGludCB0aGlja25lc3MgPSBTa01heDMyKHN0YXRp
Y19jYXN0PGludD4oc3Ryb2tlVGhpY2tuZXNzKCkpLCAxKTsKICAgICBTa1JlY3QgcjsKICAgICBy
LmZMZWZ0ID0gV2ViQ29yZUZsb2F0VG9Ta1NjYWxhcihwdC54KCkpOwpAQCAtNzQ3LDggKzczNCw2
IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3UmVjdChjb25zdCBJbnQKICAgICBpZiAocGFp
bnRpbmdEaXNhYmxlZCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBwbGF0Zm9ybUNvbnRleHQo
KS0+bWFrZUdyQ29udGV4dEN1cnJlbnQoKTsKLQogICAgIFNrUmVjdCByID0gcmVjdDsKICAgICBp
ZiAoIWlzUmVjdFNraWFTYWZlKGdldENUTSgpLCByKSkgewogICAgICAgICAvLyBTZWUgdGhlIGZp
bGxSZWN0IGJlbG93LgpAQCAtNzY3LDggKzc1Miw2IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0Ojpm
aWxsUGF0aChjb25zdCBQYXQKICAgICBpZiAoIWlzUGF0aFNraWFTYWZlKGdldENUTSgpLCBwYXRo
KSkKICAgICAgIHJldHVybjsKIAotICAgIHBsYXRmb3JtQ29udGV4dCgpLT5tYWtlR3JDb250ZXh0
Q3VycmVudCgpOwotCiAgICAgY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGUmIHN0YXRlID0gbV9z
dGF0ZTsKICAgICBwYXRoLnNldEZpbGxUeXBlKHN0YXRlLmZpbGxSdWxlID09IFJVTEVfRVZFTk9E
RCA/CiAgICAgICAgIFNrUGF0aDo6a0V2ZW5PZGRfRmlsbFR5cGUgOiBTa1BhdGg6OmtXaW5kaW5n
X0ZpbGxUeXBlKTsKQEAgLTc5Miw4ICs3NzUsNiBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6Zmls
bFJlY3QoY29uc3QgRmxvCiAKICAgICBwbGF0Zm9ybUNvbnRleHQoKS0+c2F2ZSgpOwogCi0gICAg
cGxhdGZvcm1Db250ZXh0KCktPm1ha2VHckNvbnRleHRDdXJyZW50KCk7Ci0KICAgICBTa1BhaW50
IHBhaW50OwogICAgIHBsYXRmb3JtQ29udGV4dCgpLT5zZXR1cFBhaW50Rm9yRmlsbGluZygmcGFp
bnQpOwogICAgIHBsYXRmb3JtQ29udGV4dCgpLT5jYW52YXMoKS0+ZHJhd1JlY3QociwgcGFpbnQp
OwpAQCAtODA2LDggKzc4Nyw2IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpmaWxsUmVjdChjb25z
dCBGbG8KICAgICBpZiAocGFpbnRpbmdEaXNhYmxlZCgpKQogICAgICAgICByZXR1cm47CiAKLSAg
ICBwbGF0Zm9ybUNvbnRleHQoKS0+bWFrZUdyQ29udGV4dEN1cnJlbnQoKTsKLQogICAgIFNrUmVj
dCByID0gcmVjdDsKICAgICBpZiAoIWlzUmVjdFNraWFTYWZlKGdldENUTSgpLCByKSkgewogICAg
ICAgICAvLyBTcGVjaWFsIGNhc2Ugd2hlbiB0aGUgcmVjdGFuZ2xlIG92ZXJmbG93cyBmaXhlZCBw
b2ludC4gVGhpcyBpcyBhCkBAIC04NDAsOCArODE5LDYgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6
OmZpbGxSb3VuZGVkUmVjdChjbwogICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkpCiAgICAgICAg
IHJldHVybjsKIAotICAgIHBsYXRmb3JtQ29udGV4dCgpLT5tYWtlR3JDb250ZXh0Q3VycmVudCgp
OwotCiAgICAgU2tSZWN0IHIgPSByZWN0OwogICAgIGlmICghaXNSZWN0U2tpYVNhZmUoZ2V0Q1RN
KCksIHIpKQogICAgICAgICAvLyBTZWUgZmlsbFJlY3QoKS4KQEAgLTExMjksOCArMTEwNiw2IEBA
IHZvaWQgR3JhcGhpY3NDb250ZXh0OjpzdHJva2VBcmMoY29uc3QgSW4KICAgICBpZiAocGFpbnRp
bmdEaXNhYmxlZCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBwbGF0Zm9ybUNvbnRleHQoKS0+
bWFrZUdyQ29udGV4dEN1cnJlbnQoKTsKLQogICAgIFNrUGFpbnQgcGFpbnQ7CiAgICAgU2tSZWN0
IG92YWwgPSByOwogICAgIGlmIChzdHJva2VTdHlsZSgpID09IE5vU3Ryb2tlKSB7CkBAIC0xMTYy
LDggKzExMzcsNiBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6c3Ryb2tlUGF0aChjb25zdCBQCiAg
ICAgaWYgKCFpc1BhdGhTa2lhU2FmZShnZXRDVE0oKSwgcGF0aCkpCiAgICAgICAgIHJldHVybjsK
IAotICAgIHBsYXRmb3JtQ29udGV4dCgpLT5tYWtlR3JDb250ZXh0Q3VycmVudCgpOwotCiAgICAg
U2tQYWludCBwYWludDsKICAgICBwbGF0Zm9ybUNvbnRleHQoKS0+c2V0dXBQYWludEZvclN0cm9r
aW5nKCZwYWludCwgMCwgMCk7CiAgICAgcGxhdGZvcm1Db250ZXh0KCktPmNhbnZhcygpLT5kcmF3
UGF0aChwYXRoLCBwYWludCk7CkBAIC0xMTc3LDggKzExNTAsNiBAQCB2b2lkIEdyYXBoaWNzQ29u
dGV4dDo6c3Ryb2tlUmVjdChjb25zdCBGCiAgICAgaWYgKCFpc1JlY3RTa2lhU2FmZShnZXRDVE0o
KSwgcmVjdCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIHBsYXRmb3JtQ29udGV4dCgpLT5tYWtl
R3JDb250ZXh0Q3VycmVudCgpOwotCiAgICAgU2tQYWludCBwYWludDsKICAgICBwbGF0Zm9ybUNv
bnRleHQoKS0+c2V0dXBQYWludEZvclN0cm9raW5nKCZwYWludCwgMCwgMCk7CiAgICAgcGFpbnQu
c2V0U3Ryb2tlV2lkdGgoV2ViQ29yZUZsb2F0VG9Ta1NjYWxhcihsaW5lV2lkdGgpKTsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3NraWEvSW1hZ2VCdWZmZXJTa2lhLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9za2lhL0lt
YWdlQnVmZmVyU2tpYS5jcHAJKHJldmlzaW9uIDk1MTAyKQorKysgU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvc2tpYS9JbWFnZUJ1ZmZlclNraWEuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC04Nyw3ICs4Nyw2IEBAIEltYWdlQnVmZmVyOjpJbWFnZUJ1ZmZlcihjb25zdCBJbnRTaXplJgog
ICAgIGlmIChyZW5kZXJpbmdNb2RlID09IEFjY2VsZXJhdGVkKSB7CiAgICAgICAgIEdyYXBoaWNz
Q29udGV4dDNEKiBjb250ZXh0M0QgPSBTaGFyZWRHcmFwaGljc0NvbnRleHQzRDo6Y3JlYXRlKDAp
OwogICAgICAgICBpZiAoY29udGV4dDNEKSB7Ci0gICAgICAgICAgICBjb250ZXh0M0QtPm1ha2VD
b250ZXh0Q3VycmVudCgpOwogICAgICAgICAgICAgR3JDb250ZXh0KiBnciA9IGNvbnRleHQzRC0+
Z3JDb250ZXh0KCk7CiAgICAgICAgICAgICBpZiAoZ3IpIHsKICAgICAgICAgICAgICAgICBnci0+
cmVzZXRDb250ZXh0KCk7CkBAIC0xMTYsMTAgKzExNSw2IEBAIEltYWdlQnVmZmVyOjpJbWFnZUJ1
ZmZlcihjb25zdCBJbnRTaXplJgogCiBJbWFnZUJ1ZmZlcjo6fkltYWdlQnVmZmVyKCkKIHsKLSAg
ICBpZiAobV9jb250ZXh0ICYmIG1fY29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCkpIHsKLSAgICAg
ICAgLy8gVGhpcyBpcyBzbyB0aGF0IHRoZSBTa0dwdURldmljZSBkZXN0cnVjdG9yIGhhcyB0aGUg
Y29ycmVjdCBjb250ZXh0LgotICAgICAgICBtX2NvbnRleHQtPnBsYXRmb3JtQ29udGV4dCgpLT5t
YWtlR3JDb250ZXh0Q3VycmVudCgpOwotICAgIH0KIH0KIAogR3JhcGhpY3NDb250ZXh0KiBJbWFn
ZUJ1ZmZlcjo6Y29udGV4dCgpIGNvbnN0CkBAIC0xMzUsNyArMTMwLDYgQEAgc2l6ZV90IEltYWdl
QnVmZmVyOjpkYXRhU2l6ZSgpIGNvbnN0CiBQYXNzUmVmUHRyPEltYWdlPiBJbWFnZUJ1ZmZlcjo6
Y29weUltYWdlKEJhY2tpbmdTdG9yZUNvcHkgY29weUJlaGF2aW9yKSBjb25zdAogewogICAgIEFT
U0VSVChjb3B5QmVoYXZpb3IgPT0gQ29weUJhY2tpbmdTdG9yZSk7Ci0gICAgbV9jb250ZXh0LT5w
bGF0Zm9ybUNvbnRleHQoKS0+bWFrZUdyQ29udGV4dEN1cnJlbnQoKTsKICAgICByZXR1cm4gQml0
bWFwSW1hZ2VTaW5nbGVGcmFtZVNraWE6OmNyZWF0ZSgqbV9kYXRhLm1fcGxhdGZvcm1Db250ZXh0
LmJpdG1hcCgpLCB0cnVlKTsKIH0KIApAQCAtMTUyLDE0ICsxNDYsNiBAQCB2b2lkIEltYWdlQnVm
ZmVyOjpjbGlwKEdyYXBoaWNzQ29udGV4dCoKIHZvaWQgSW1hZ2VCdWZmZXI6OmRyYXcoR3JhcGhp
Y3NDb250ZXh0KiBjb250ZXh0LCBDb2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgY29uc3QgRmxv
YXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LAogICAgICAgICAgICAg
ICAgICAgICAgICBDb21wb3NpdGVPcGVyYXRvciBvcCwgYm9vbCB1c2VMb3dRdWFsaXR5U2NhbGUp
CiB7Ci0gICAgLy8gU2V0IGJvdGggZ3JhcGhpY3MgY29udGV4dHMgY3VycmVudC4gVGhpcyBsb29r
cyBhIGxpdHRsZSB3ZWlyZCwgYnV0IGlzCi0gICAgLy8gbmVjZXNzYXJ5IHNpbmNlIHdlIG1heSBi
ZSBkcmF3aW5nIGZyb20gYW4gYWNjZWxlcmF0ZWQgdG8KLSAgICAvLyBub24tYWNjZWxlcmF0ZWQg
Y29udGV4dCAoZS5nLiwgcHJpbnRpbmcpLCBvciB2aWNlIHZlcnNhLiBOb3RlIHRoYXQgaXQKLSAg
ICAvLyBvbmx5IHdvcmtzIGJlY2F1c2UgdGhlIGNvbnRleHQgaXMgYWN0dWFsbHkgdGhlIHNhbWUg
dW5kZXJseWluZyBjb250ZXh0Ci0gICAgLy8gKG9yIG51bGwpLCBzaW5jZSB3ZSB1c2Ugb25lIGNv
bnRleHQgZm9yIGFjY2VsZXJhdGVkIGRyYXdpbmcuIElmIHRoYXQKLSAgICAvLyBhc3N1bXB0aW9u
IGNoYW5nZXMsIHdlJ2xsIGhhdmUgdG8gcmV2aXNpdCB0aGlzIGNvZGUuCi0gICAgY29udGV4dC0+
cGxhdGZvcm1Db250ZXh0KCktPm1ha2VHckNvbnRleHRDdXJyZW50KCk7Ci0gICAgbV9jb250ZXh0
LT5wbGF0Zm9ybUNvbnRleHQoKS0+bWFrZUdyQ29udGV4dEN1cnJlbnQoKTsKICAgICBSZWZQdHI8
SW1hZ2U+IGltYWdlID0gQml0bWFwSW1hZ2VTaW5nbGVGcmFtZVNraWE6OmNyZWF0ZSgqbV9kYXRh
Lm1fcGxhdGZvcm1Db250ZXh0LmJpdG1hcCgpLCBjb250ZXh0ID09IG1fY29udGV4dCk7CiAgICAg
Y29udGV4dC0+ZHJhd0ltYWdlKGltYWdlLmdldCgpLCBzdHlsZUNvbG9yU3BhY2UsIGRlc3RSZWN0
LCBzcmNSZWN0LCBvcCwgdXNlTG93UXVhbGl0eVNjYWxlKTsKIH0KQEAgLTE2Nyw3ICsxNTMsNiBA
QCB2b2lkIEltYWdlQnVmZmVyOjpkcmF3KEdyYXBoaWNzQ29udGV4dCoKIHZvaWQgSW1hZ2VCdWZm
ZXI6OmRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgRmxvYXRSZWN0
JiBzcmNSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0sCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgQ29sb3JT
cGFjZSBzdHlsZUNvbG9yU3BhY2UsIENvbXBvc2l0ZU9wZXJhdG9yIG9wLCBjb25zdCBGbG9hdFJl
Y3QmIGRlc3RSZWN0KQogewotICAgIGNvbnRleHQtPnBsYXRmb3JtQ29udGV4dCgpLT5tYWtlR3JD
b250ZXh0Q3VycmVudCgpOwogICAgIFJlZlB0cjxJbWFnZT4gaW1hZ2UgPSBCaXRtYXBJbWFnZVNp
bmdsZUZyYW1lU2tpYTo6Y3JlYXRlKCptX2RhdGEubV9wbGF0Zm9ybUNvbnRleHQuYml0bWFwKCks
IGNvbnRleHQgPT0gbV9jb250ZXh0KTsKICAgICBpbWFnZS0+ZHJhd1BhdHRlcm4oY29udGV4dCwg
c3JjUmVjdCwgcGF0dGVyblRyYW5zZm9ybSwgcGhhc2UsIHN0eWxlQ29sb3JTcGFjZSwgb3AsIGRl
c3RSZWN0KTsKIH0KQEAgLTI4NCwxMyArMjY5LDExIEBAIFBhc3NSZWZQdHI8Qnl0ZUFycmF5PiBn
ZXRJbWFnZURhdGEoY29uc3QKIAogUGFzc1JlZlB0cjxCeXRlQXJyYXk+IEltYWdlQnVmZmVyOjpn
ZXRVbm11bHRpcGxpZWRJbWFnZURhdGEoY29uc3QgSW50UmVjdCYgcmVjdCkgY29uc3QKIHsKLSAg
ICBtX2NvbnRleHQtPnBsYXRmb3JtQ29udGV4dCgpLT5tYWtlR3JDb250ZXh0Q3VycmVudCgpOwog
ICAgIHJldHVybiBnZXRJbWFnZURhdGE8VW5tdWx0aXBsaWVkPihyZWN0LCAqY29udGV4dCgpLT5w
bGF0Zm9ybUNvbnRleHQoKS0+Y2FudmFzKCktPmdldERldmljZSgpLCBtX3NpemUpOwogfQogCiBQ
YXNzUmVmUHRyPEJ5dGVBcnJheT4gSW1hZ2VCdWZmZXI6OmdldFByZW11bHRpcGxpZWRJbWFnZURh
dGEoY29uc3QgSW50UmVjdCYgcmVjdCkgY29uc3QKIHsKLSAgICBtX2NvbnRleHQtPnBsYXRmb3Jt
Q29udGV4dCgpLT5tYWtlR3JDb250ZXh0Q3VycmVudCgpOwogICAgIHJldHVybiBnZXRJbWFnZURh
dGE8UHJlbXVsdGlwbGllZD4ocmVjdCwgKmNvbnRleHQoKS0+cGxhdGZvcm1Db250ZXh0KCktPmNh
bnZhcygpLT5nZXREZXZpY2UoKSwgbV9zaXplKTsKIH0KIApAQCAtMzY1LDEzICszNDgsMTEgQEAg
dm9pZCBwdXRJbWFnZURhdGEoQnl0ZUFycmF5KiYgc291cmNlLCBjbwogCiB2b2lkIEltYWdlQnVm
ZmVyOjpwdXRVbm11bHRpcGxpZWRJbWFnZURhdGEoQnl0ZUFycmF5KiBzb3VyY2UsIGNvbnN0IElu
dFNpemUmIHNvdXJjZVNpemUsIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFBv
aW50JiBkZXN0UG9pbnQpCiB7Ci0gICAgbV9jb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKS0+bWFr
ZUdyQ29udGV4dEN1cnJlbnQoKTsKICAgICBwdXRJbWFnZURhdGE8VW5tdWx0aXBsaWVkPihzb3Vy
Y2UsIHNvdXJjZVNpemUsIHNvdXJjZVJlY3QsIGRlc3RQb2ludCwgY29udGV4dCgpLT5wbGF0Zm9y
bUNvbnRleHQoKS0+Y2FudmFzKCktPmdldERldmljZSgpLCBtX3NpemUpOwogfQogCiB2b2lkIElt
YWdlQnVmZmVyOjpwdXRQcmVtdWx0aXBsaWVkSW1hZ2VEYXRhKEJ5dGVBcnJheSogc291cmNlLCBj
b25zdCBJbnRTaXplJiBzb3VyY2VTaXplLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25z
dCBJbnRQb2ludCYgZGVzdFBvaW50KQogewotICAgIG1fY29udGV4dC0+cGxhdGZvcm1Db250ZXh0
KCktPm1ha2VHckNvbnRleHRDdXJyZW50KCk7CiAgICAgcHV0SW1hZ2VEYXRhPFByZW11bHRpcGxp
ZWQ+KHNvdXJjZSwgc291cmNlU2l6ZSwgc291cmNlUmVjdCwgZGVzdFBvaW50LCBjb250ZXh0KCkt
PnBsYXRmb3JtQ29udGV4dCgpLT5jYW52YXMoKS0+Z2V0RGV2aWNlKCksIG1fc2l6ZSk7CiB9CiAK
QEAgLTQwMSw3ICszODIsNiBAQCBzdGF0aWMgU3RyaW5nIEltYWdlVG9EYXRhVVJMKFQmIHNvdXJj
ZSwKIAogU3RyaW5nIEltYWdlQnVmZmVyOjp0b0RhdGFVUkwoY29uc3QgU3RyaW5nJiBtaW1lVHlw
ZSwgY29uc3QgZG91YmxlKiBxdWFsaXR5KSBjb25zdAogewotICAgIG1fY29udGV4dC0+cGxhdGZv
cm1Db250ZXh0KCktPm1ha2VHckNvbnRleHRDdXJyZW50KCk7CiAgICAgU2tEZXZpY2UqIGRldmlj
ZSA9IGNvbnRleHQoKS0+cGxhdGZvcm1Db250ZXh0KCktPmNhbnZhcygpLT5nZXREZXZpY2UoKTsK
ICAgICByZXR1cm4gSW1hZ2VUb0RhdGFVUkwoZGV2aWNlLT5hY2Nlc3NCaXRtYXAoZmFsc2UpLCBt
aW1lVHlwZSwgcXVhbGl0eSk7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9za2lhL0ltYWdlU2tpYS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvc2tpYS9JbWFnZVNraWEuY3BwCShyZXZpc2lvbiA5NTEwMikKKysrIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3NraWEvSW1hZ2VTa2lhLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNDIyLDggKzQyMiw2IEBAIHZvaWQgQml0bWFwSW1hZ2U6OmRyYXcoR3JhcGhp
Y3NDb250ZXh0KgogICAgIGlmIChub3JtU3JjUmVjdC5pc0VtcHR5KCkgfHwgbm9ybURzdFJlY3Qu
aXNFbXB0eSgpKQogICAgICAgICByZXR1cm47ICAvLyBOb3RoaW5nIHRvIGRyYXcuCiAKLSAgICBj
dHh0LT5wbGF0Zm9ybUNvbnRleHQoKS0+bWFrZUdyQ29udGV4dEN1cnJlbnQoKTsKLQogICAgIHBh
aW50U2tCaXRtYXAoY3R4dC0+cGxhdGZvcm1Db250ZXh0KCksCiAgICAgICAgICAgICAgICAgICAq
Ym0sCiAgICAgICAgICAgICAgICAgICBlbmNsb3NpbmdJbnRSZWN0KG5vcm1TcmNSZWN0KSwKQEAg
LTQ0OCw4ICs0NDYsNiBAQCB2b2lkIEJpdG1hcEltYWdlU2luZ2xlRnJhbWVTa2lhOjpkcmF3KEdy
CiAgICAgaWYgKG5vcm1TcmNSZWN0LmlzRW1wdHkoKSB8fCBub3JtRHN0UmVjdC5pc0VtcHR5KCkp
CiAgICAgICAgIHJldHVybjsgIC8vIE5vdGhpbmcgdG8gZHJhdy4KIAotICAgIGN0eHQtPnBsYXRm
b3JtQ29udGV4dCgpLT5tYWtlR3JDb250ZXh0Q3VycmVudCgpOwotCiAgICAgcGFpbnRTa0JpdG1h
cChjdHh0LT5wbGF0Zm9ybUNvbnRleHQoKSwKICAgICAgICAgICAgICAgICAgIG1fbmF0aXZlSW1h
Z2UsCiAgICAgICAgICAgICAgICAgICBlbmNsb3NpbmdJbnRSZWN0KG5vcm1TcmNSZWN0KSwKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3NraWEvUGxhdGZvcm1Db250ZXh0
U2tpYS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
c2tpYS9QbGF0Zm9ybUNvbnRleHRTa2lhLmNwcAkocmV2aXNpb24gOTUxMDIpCisrKyBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9za2lhL1BsYXRmb3JtQ29udGV4dFNraWEuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0yNjcsNyArMjY3LDYgQEAgdm9pZCBQbGF0Zm9ybUNvbnRleHRTa2lh
OjpiZWdpbkxheWVyQ2xpcAogCiB2b2lkIFBsYXRmb3JtQ29udGV4dFNraWE6OmNsaXBQYXRoQW50
aUFsaWFzZWQoY29uc3QgU2tQYXRoJiBjbGlwUGF0aCkKIHsKLSAgICBtYWtlR3JDb250ZXh0Q3Vy
cmVudCgpOwogICAgIGlmIChtX2NhbnZhcy0+Z2V0VG9wRGV2aWNlKCktPmdldERldmljZUNhcGFi
aWxpdGllcygpICYgU2tEZXZpY2U6OmtWZWN0b3JfQ2FwYWJpbGl0eSkgewogICAgICAgICAvLyBX
aGVuIHRoZSBvdXRwdXQgaXMgYSB2ZWN0b3IgZGV2aWNlLCBsaWtlIFBERiwgd2UgZG9uJ3QgbmVl
ZCBhbnRpYWxpYXNlZCBjbGlwcy4KICAgICAgICAgLy8gSXQncyB1cCB0byB0aGUgUERGIHJlbmRl
cmluZyBlbmdpbmUgdG8gZG8gdGhhdC4gV2UgY2FuIHNpbXBseSBkaXNhYmxlIHRoZQpAQCAtNjU2
LDEwICs2NTUsNCBAQCB2b2lkIFBsYXRmb3JtQ29udGV4dFNraWE6OnNldEdyYXBoaWNzQ29uCiAg
ICAgbV9ncHVDb250ZXh0ID0gY29udGV4dDsKIH0KIAotdm9pZCBQbGF0Zm9ybUNvbnRleHRTa2lh
OjptYWtlR3JDb250ZXh0Q3VycmVudCgpCi17Ci0gICAgaWYgKG1fZ3B1Q29udGV4dCkKLSAgICAg
ICAgbV9ncHVDb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKTsKLX0KLQogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9Q
bGF0Zm9ybUNvbnRleHRTa2lhLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvc2tpYS9QbGF0Zm9ybUNvbnRleHRTa2lhLmgJKHJldmlzaW9uIDk1MTAyKQor
KysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9QbGF0Zm9ybUNvbnRleHRT
a2lhLmgJKHdvcmtpbmcgY29weSkKQEAgLTE3NCw3ICsxNzQsNiBAQCBwdWJsaWM6CiAKICAgICBi
b29sIGlzQWNjZWxlcmF0ZWQoKSBjb25zdCB7IHJldHVybiBtX2dwdUNvbnRleHQ7IH0KICAgICB2
b2lkIHNldEdyYXBoaWNzQ29udGV4dDNEKEdyYXBoaWNzQ29udGV4dDNEKik7Ci0gICAgdm9pZCBt
YWtlR3JDb250ZXh0Q3VycmVudCgpOwogCiBwcml2YXRlOgogICAgIC8vIFVzZWQgd2hlbiByZXN0
b3JpbmcgYW5kIHRoZSBzdGF0ZSBoYXMgYW4gaW1hZ2UgY2xpcC4gT25seSBzaG93cyB0aGUgcGl4
ZWxzIGluCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9za2lhL1NraWFG
b250V2luLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9za2lhL1NraWFGb250V2luLmNwcAkocmV2aXNpb24gOTUxMDIpCisrKyBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9za2lhL1NraWFGb250V2luLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMTgzLDkgKzE4Myw2IEBAIHZvaWQgcGFpbnRTa2lhVGV4dChHcmFwaGljc0NvbnRleHQqIGNv
bnQKICAgICBTa0NhbnZhcyogY2FudmFzID0gcGxhdGZvcm1Db250ZXh0LT5jYW52YXMoKTsKICAg
ICBUZXh0RHJhd2luZ01vZGVGbGFncyB0ZXh0TW9kZSA9IHBsYXRmb3JtQ29udGV4dC0+Z2V0VGV4
dERyYXdpbmdNb2RlKCk7CiAKLSAgICAvLyBJZiBwbGF0Zm9ybUNvbnRleHQgaXMgR1BVLWJhY2tl
ZCBtYWtlIGl0cyBHTCBjb250ZXh0IGN1cnJlbnQuCi0gICAgcGxhdGZvcm1Db250ZXh0LT5tYWtl
R3JDb250ZXh0Q3VycmVudCgpOwotCiAgICAgLy8gRmlsbGluZyAoaWYgbmVjZXNzYXJ5KS4gVGhp
cyBpcyB0aGUgY29tbW9uIGNhc2UuCiAgICAgU2tQYWludCBwYWludDsKICAgICBwbGF0Zm9ybUNv
bnRleHQtPnNldHVwUGFpbnRGb3JGaWxsaW5nKCZwYWludCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0
L2Nocm9taXVtL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVt
L0NoYW5nZUxvZwkocmV2aXNpb24gOTUxMDcpCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL0No
YW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE4IEBACisyMDExLTA5LTE0ICBCcmlh
biBTYWxvbW9uICA8YnNhbG9tb25AZ29vZ2xlLmNvbT4KKworICAgICAgICBbU2tpYS9DaHJvbWVd
IAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjgwOTYK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIGNo
YW5nZSByZW1vdmVzIFdlYkdyYXBoaWNzQ29udGV4dDNEOjpnckdMSW50ZXJmYWNlKCkuIEl0IGhh
cyBiZWVuIHN1cGVyY2VkZWQgYnkgV2ViR3JhcGhpY3NDb250ZXh0M0Q6OmNyZWF0ZUdyR0xJbnRl
cmZhY2Ugd2hpY2ggc2V0cyB1cCB0aGUgcGVyLUdMIGNhbGwgY2FsbGJhY2sgdXNlZCB0byBzZXQg
dGhlIGNvcnJlY3QgY29udGV4dC4KKworICAgICAgICAqIHB1YmxpYy9XZWJHcmFwaGljc0NvbnRl
eHQzRC5oOgorICAgICAgICAqIHNyYy9HcmFwaGljc0NvbnRleHQzRENocm9taXVtLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6Z3JDb250ZXh0KToKKyAg
ICAgICAgKiBzcmMvV2ViR3JhcGhpY3NDb250ZXh0M0QuY3BwOgorICAgICAgICAoV2ViS2l0OjpX
ZWJHcmFwaGljc0NvbnRleHQzRDo6Y3JlYXRlR3JHTEludGVyZmFjZSk6CisKIDIwMTEtMDktMTMg
IEVyaWMgU2VpZGVsICA8ZXJpY0B3ZWJraXQub3JnPgogCiAgICAgICAgIFJlbW92ZSBFTkFCTEVf
U1ZHX1VTRSBhcyA8dXNlPiBpcyByZXF1aXJlZCBieSBIVE1MNQpJbmRleDogU291cmNlL1dlYktp
dC9jaHJvbWl1bS9wdWJsaWMvV2ViR3JhcGhpY3NDb250ZXh0M0QuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJHcmFwaGljc0NvbnRleHQzRC5oCShyZXZp
c2lvbiA5NTEwMikKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkdyYXBoaWNz
Q29udGV4dDNELmgJKHdvcmtpbmcgY29weSkKQEAgLTM2Niw5ICszNjYsNiBAQCBwdWJsaWM6CiAg
ICAgdmlydHVhbCBXR0MzRGVudW0gZ2V0R3JhcGhpY3NSZXNldFN0YXR1c0FSQigpIHsgcmV0dXJu
IDA7IC8qIEdMX05PX0VSUk9SICovIH0KIAogI2lmIFdFQktJVF9VU0lOR19TS0lBCi0gICAgLy8g
RklYTUU6IFRoaXMgZnVuY3Rpb24gaXMgc3VwZXJjZWRlZCBieSBvbkNyZWF0ZUdyR0xJbnRlcmZh
Y2UuIEl0IHNob3VsZCBiZSByZW1vdmVkIGFmdGVyIHN1YmNsYXNzIGltcGxlbWVudGF0aW9ucyBh
cmUgcmVtb3ZlZCBmcm9tIENocm9taXVtLgotICAgIHZpcnR1YWwgR3JHTEludGVyZmFjZSogZ3JH
TEludGVyZmFjZSgpIHsgcmV0dXJuIDA7IH0KLQogICAgIEdyR0xJbnRlcmZhY2UqIGNyZWF0ZUdy
R0xJbnRlcmZhY2UoKTsKICNlbmRpZgogCkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9HcmFwaGljc0NvbnRleHQzRENocm9taXVtLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3NyYy9HcmFwaGljc0NvbnRleHQzRENocm9taXVtLmNwcAkocmV2aXNpb24g
OTUxMDIpCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9HcmFwaGljc0NvbnRleHQzRENo
cm9taXVtLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjAxLDE1ICsyMDEsNiBAQCBHckNvbnRleHQq
IEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6Z3JDCiAKICAgICBpZiAoIW1fZ3JDb250ZXh0KSB7
CiAgICAgICAgIFNrQXV0b1RVbnJlZjxHckdMSW50ZXJmYWNlPiBpbnRlcmZhY2UobV9pbXBsLT5j
cmVhdGVHckdMSW50ZXJmYWNlKCkpOwotICAgICAgICAvLyBGSVhNRTogUmVtb3ZlIHRoaXMgYmxv
Y2sgYWZ0ZXIgdGhlIFdlYkdyYXBoaWNzQ29udGV4dDNEIHN1YmNsYXNzZXMgaW4gQ2hyb21pdW0g
bm8gbG9uZ2VyIG92ZXJyaWRlIGdyR0xJbnRlcmZhY2UoKS4KLSAgICAgICAgaWYgKCFpbnRlcmZh
Y2UuZ2V0KCkpIHsKLSAgICAgICAgICAgIEdyR0xJbnRlcmZhY2UqIGZhbGxiYWNrSW50ZXJmYWNl
ID0gbV9pbXBsLT5nckdMSW50ZXJmYWNlKCk7Ci0gICAgICAgICAgICBpZiAoZmFsbGJhY2tJbnRl
cmZhY2UpIHsKLSAgICAgICAgICAgICAgICBmYWxsYmFja0ludGVyZmFjZS0+cmVmKCk7IC8vIGJh
bGFuY2Ugb3V0IHRoZSBTa0F1dG9UVW5yZWYKLSAgICAgICAgICAgICAgICBpbnRlcmZhY2UucmVz
ZXQoZmFsbGJhY2tJbnRlcmZhY2UpOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAg
IC8vIFRoaXMgaXMgdGhlIGVuZCBvZiB0aGUgYmxvY2sgdG8gcmVtb3ZlLgogICAgICAgICBtX2dy
Q29udGV4dCA9IEdyQ29udGV4dDo6Q3JlYXRlKGtPcGVuR0xfU2hhZGVyc19HckVuZ2luZSwgcmVp
bnRlcnByZXRfY2FzdDxHclBsYXRmb3JtM0RDb250ZXh0PihpbnRlcmZhY2UuZ2V0KCkpKTsKICAg
ICAgICAgaWYgKG1fZ3JDb250ZXh0KQogICAgICAgICAgICAgbV9nckNvbnRleHQtPnNldFRleHR1
cmVDYWNoZUxpbWl0cyhtYXhUZXh0dXJlQ2FjaGVDb3VudCwgbWF4VGV4dHVyZUNhY2hlQnl0ZXMp
OwpJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViR3JhcGhpY3NDb250ZXh0M0Qu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkdyYXBoaWNz
Q29udGV4dDNELmNwcAkocmV2aXNpb24gOTUxMDIpCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3NyYy9XZWJHcmFwaGljc0NvbnRleHQzRC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMyLDI0ICsz
MiwyMCBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIAogI2lmIFdFQktJVF9VU0lOR19TS0lBCiAKLSNp
ZiBHUl9HTF9QRVJfR0xfRlVOQ19DQUxMQkFDSwogbmFtZXNwYWNlIHsKICAgICB2b2lkIGJpbmRX
ZWJHcmFwaGljc0NvbnRleHQzREdMQ29udGV4dENhbGxiYWNrKGNvbnN0IEdyR0xJbnRlcmZhY2Uq
IGludGVyZmFjZSkKICAgICB7CiAgICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8V2ViR3JhcGhpY3ND
b250ZXh0M0QqPihpbnRlcmZhY2UtPmZDYWxsYmFja0RhdGEpLT5tYWtlQ29udGV4dEN1cnJlbnQo
KTsKICAgICB9CiB9Ci0jZW5kaWYKIAogR3JHTEludGVyZmFjZSogV2ViR3JhcGhpY3NDb250ZXh0
M0Q6OmNyZWF0ZUdyR0xJbnRlcmZhY2UoKQogewogICAgIEdyR0xJbnRlcmZhY2UqIGludGVyZmFj
ZSA9IG9uQ3JlYXRlR3JHTEludGVyZmFjZSgpOwotI2lmIEdSX0dMX1BFUl9HTF9GVU5DX0NBTExC
QUNLCiAgICAgaWYgKGludGVyZmFjZSkgewogICAgICAgICBpbnRlcmZhY2UtPmZDYWxsYmFjayA9
IGJpbmRXZWJHcmFwaGljc0NvbnRleHQzREdMQ29udGV4dENhbGxiYWNrOwogICAgICAgICBpbnRl
cmZhY2UtPmZDYWxsYmFja0RhdGEgPSByZWludGVycHJldF9jYXN0PEdyR0xJbnRlcmZhY2VDYWxs
YmFja0RhdGE+KHRoaXMpOwogICAgIH0KLSNlbmRpZgogICAgIHJldHVybiBpbnRlcmZhY2U7CiB9
CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>107372</attachid>
            <date>2011-09-14 12:17:23 -0700</date>
            <delta_ts>2011-09-15 06:13:40 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-68096-20110914151517.patch</filename>
            <type>text/plain</type>
            <size>20540</size>
            <attacher name="Brian Salomon">bsalomon</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDk1MTA3KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNTYgQEAKKzIwMTEtMDktMTQgIEJyaWFuIFNh
bG9tb24gIDxic2Fsb21vbkBnb29nbGUuY29tPgorCisgICAgICAgIFtTa2lhL0Nocm9tZV0gQ2xl
YW51cCB1bm5lZWRlZCBjb2RlIG5vdyB0aGF0IEdyR0xJbnRlcmZhY2UgaXMgdXNlZCB0byBzZXQg
R0wgY3R4IHBlciBHTCBjYWxsLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9NjgwOTYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBUaGlzIGNoYW5nZSByZW1vdmVzIFBsYXRmb3JtQ29udGV4dFNraWE6Om1ha2VH
ckNvbnRleHRDdXJyZW50IG5vdyB0aGF0CisgICAgICAgIEdyR0xJbnRlcmZhY2UgaXMgdXNlZCB0
byBzZXQgdGhlIGNvbnRleHQgb24gZXZlcnkgU2tpYSBHTCBjYWxsLgorCisgICAgICAgIFRlc3Rl
ZCBieSBldmVyeSBjYW52YXMgbGF5b3V0IHRlc3QuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9Gb250TGludXguY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9udDo6ZHJh
d0dseXBocyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9Gb250U2tpYS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpGb250OjpkcmF3R2x5cGhzKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9za2lhL0dyYXBoaWNzQ29udGV4dFNraWEuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0OjpjbGVhclJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0OjpjbGlwKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6ZHJh
d0NvbnZleFBvbHlnb24pOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpkcmF3
RWxsaXBzZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmRyYXdGb2N1c1Jp
bmcpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpkcmF3TGluZSk6CisgICAg
ICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmRyYXdMaW5lRm9yVGV4dENoZWNraW5nKToK
KyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6ZHJhd0xpbmVGb3JUZXh0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6ZHJhd1JlY3QpOgorICAgICAgICAoV2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0OjpmaWxsUGF0aCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFw
aGljc0NvbnRleHQ6OmZpbGxSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dDo6ZmlsbFJvdW5kZWRSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6
c3Ryb2tlQXJjKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6c3Ryb2tlUGF0
aCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnN0cm9rZVJlY3QpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3NraWEvSW1hZ2VCdWZmZXJTa2lhLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyOjpJbWFnZUJ1ZmZlcik6CisgICAgICAgIChXZWJDb3Jl
OjpJbWFnZUJ1ZmZlcjo6fkltYWdlQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVm
ZmVyOjpjb3B5SW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXI6OmRyYXcpOgor
ICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXI6OmRyYXdQYXR0ZXJuKToKKyAgICAgICAgKFdl
YkNvcmU6OkltYWdlQnVmZmVyOjpnZXRVbm11bHRpcGxpZWRJbWFnZURhdGEpOgorICAgICAgICAo
V2ViQ29yZTo6SW1hZ2VCdWZmZXI6OmdldFByZW11bHRpcGxpZWRJbWFnZURhdGEpOgorICAgICAg
ICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXI6OnB1dFVubXVsdGlwbGllZEltYWdlRGF0YSk6CisgICAg
ICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6cHV0UHJlbXVsdGlwbGllZEltYWdlRGF0YSk6Cisg
ICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6dG9EYXRhVVJMKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9za2lhL0ltYWdlU2tpYS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpCaXRt
YXBJbWFnZTo6ZHJhdyk6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZVNpbmdsZUZyYW1l
U2tpYTo6ZHJhdyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9QbGF0Zm9ybUNv
bnRleHRTa2lhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtQ29udGV4dFNraWE6OmNs
aXBQYXRoQW50aUFsaWFzZWQpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1Db250ZXh0U2tp
YTo6c2V0R3JhcGhpY3NDb250ZXh0M0QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3Nr
aWEvUGxhdGZvcm1Db250ZXh0U2tpYS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3Nr
aWEvU2tpYUZvbnRXaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6cGFpbnRTa2lhVGV4dCk6CisK
IDIwMTEtMDktMTMgIEVyaWMgU2VpZGVsICA8ZXJpY0B3ZWJraXQub3JnPgogCiAgICAgICAgIFJl
bW92ZSBFTkFCTEVfU1ZHX1VTRSBhcyA8dXNlPiBpcyByZXF1aXJlZCBieSBIVE1MNQpJbmRleDog
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vRm9udExpbnV4LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9G
b250TGludXguY3BwCShyZXZpc2lvbiA5NTEwMikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL0ZvbnRMaW51eC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTExMCw4
ICsxMTAsNiBAQCB2b2lkIEZvbnQ6OmRyYXdHbHlwaHMoR3JhcGhpY3NDb250ZXh0KiBnCiAgICAg
ICAgIHkgKz0gU2tGbG9hdFRvU2NhbGFyKGFkdltpXS5oZWlnaHQoKSk7CiAgICAgfQogCi0gICAg
Z2MtPnBsYXRmb3JtQ29udGV4dCgpLT5tYWtlR3JDb250ZXh0Q3VycmVudCgpOwotCiAgICAgU2tD
YW52YXMqIGNhbnZhcyA9IGdjLT5wbGF0Zm9ybUNvbnRleHQoKS0+Y2FudmFzKCk7CiAgICAgVGV4
dERyYXdpbmdNb2RlRmxhZ3MgdGV4dE1vZGUgPSBnYy0+cGxhdGZvcm1Db250ZXh0KCktPmdldFRl
eHREcmF3aW5nTW9kZSgpOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9za2lhL0ZvbnRTa2lhLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9za2lhL0ZvbnRTa2lhLmNwcAkocmV2aXNpb24gOTUxMDIpCisrKyBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9za2lhL0ZvbnRTa2lhLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMTI2LDggKzEyNiw2IEBAIHZvaWQgRm9udDo6ZHJhd0dseXBocyhHcmFwaGljc0NvbnRl
eHQqIGcKICAgICAgICAgeSArPSBTa0Zsb2F0VG9TY2FsYXIoYWR2W2ldLmhlaWdodCk7CiAgICAg
fQogCi0gICAgZ2MtPnBsYXRmb3JtQ29udGV4dCgpLT5tYWtlR3JDb250ZXh0Q3VycmVudCgpOwot
CiAgICAgU2tDYW52YXMqIGNhbnZhcyA9IGdjLT5wbGF0Zm9ybUNvbnRleHQoKS0+Y2FudmFzKCk7
CiAgICAgVGV4dERyYXdpbmdNb2RlRmxhZ3MgdGV4dE1vZGUgPSBnYy0+cGxhdGZvcm1Db250ZXh0
KCktPmdldFRleHREcmF3aW5nTW9kZSgpOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9za2lhL0dyYXBoaWNzQ29udGV4dFNraWEuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3NraWEvR3JhcGhpY3NDb250ZXh0U2tpYS5j
cHAJKHJldmlzaW9uIDk1MTAyKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
c2tpYS9HcmFwaGljc0NvbnRleHRTa2lhLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzM1LDggKzMz
NSw2IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpjbGVhclJlY3QoY29uc3QgRmwKICAgICBpZiAo
IWlzUmVjdFNraWFTYWZlKGdldENUTSgpLCByKSkKICAgICAgICAgQ2xpcFJlY3RUb0NhbnZhcygq
cGxhdGZvcm1Db250ZXh0KCktPmNhbnZhcygpLCByLCAmcik7CiAKLSAgICBwbGF0Zm9ybUNvbnRl
eHQoKS0+bWFrZUdyQ29udGV4dEN1cnJlbnQoKTsKLQogICAgIFNrUGFpbnQgcGFpbnQ7CiAgICAg
cGxhdGZvcm1Db250ZXh0KCktPnNldHVwUGFpbnRGb3JGaWxsaW5nKCZwYWludCk7CiAgICAgcGFp
bnQuc2V0WGZlcm1vZGVNb2RlKFNrWGZlcm1vZGU6OmtDbGVhcl9Nb2RlKTsKQEAgLTM1Miw3ICsz
NTAsNiBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6Y2xpcChjb25zdCBGbG9hdFJlCiAgICAgaWYg
KCFpc1JlY3RTa2lhU2FmZShnZXRDVE0oKSwgcikpCiAgICAgICAgIHJldHVybjsKIAotICAgIHBs
YXRmb3JtQ29udGV4dCgpLT5tYWtlR3JDb250ZXh0Q3VycmVudCgpOwogICAgIHBsYXRmb3JtQ29u
dGV4dCgpLT5jYW52YXMoKS0+Y2xpcFJlY3Qocik7CiB9CiAKQEAgLTQ1Niw4ICs0NTMsNiBAQCB2
b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd0NvbnZleFBvbHlnb24oCiAgICAgaWYgKG51bVBvaW50
cyA8PSAxKQogICAgICAgICByZXR1cm47CiAKLSAgICBwbGF0Zm9ybUNvbnRleHQoKS0+bWFrZUdy
Q29udGV4dEN1cnJlbnQoKTsKLQogICAgIFNrUGF0aCBwYXRoOwogICAgIHNldFBhdGhGcm9tQ29u
dmV4UG9pbnRzKCZwYXRoLCBudW1Qb2ludHMsIHBvaW50cyk7CiAKQEAgLTUwNSw3ICs1MDAsNiBA
QCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd0VsbGlwc2UoY29uc3QKICAgICBpZiAoIWlzUmVj
dFNraWFTYWZlKGdldENUTSgpLCByZWN0KSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgcGxhdGZv
cm1Db250ZXh0KCktPm1ha2VHckNvbnRleHRDdXJyZW50KCk7CiAgICAgU2tQYWludCBwYWludDsK
ICAgICBwbGF0Zm9ybUNvbnRleHQoKS0+c2V0dXBQYWludEZvckZpbGxpbmcoJnBhaW50KTsKICAg
ICBwbGF0Zm9ybUNvbnRleHQoKS0+Y2FudmFzKCktPmRyYXdPdmFsKHJlY3QsIHBhaW50KTsKQEAg
LTU2Miw3ICs1NTYsNiBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd0ZvY3VzUmluZyhjb25z
CiAgICAgaWYgKCFyZWN0Q291bnQpCiAgICAgICAgIHJldHVybjsKIAotICAgIHBsYXRmb3JtQ29u
dGV4dCgpLT5tYWtlR3JDb250ZXh0Q3VycmVudCgpOwogICAgIFNrUmVnaW9uIGZvY3VzUmluZ1Jl
Z2lvbjsKICAgICBjb25zdCBTa1NjYWxhciBmb2N1c1JpbmdPdXRzZXQgPSBnZXRGb2N1c1JpbmdP
dXRzZXQod2lkdGgpOwogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCByZWN0Q291bnQ7IGkr
KykgewpAQCAtNTk3LDggKzU5MCw2IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3TGluZShj
b25zdCBJbnQKICAgICBpZiAoIWlzUG9pbnRTa2lhU2FmZShnZXRDVE0oKSwgcG9pbnQxKSB8fCAh
aXNQb2ludFNraWFTYWZlKGdldENUTSgpLCBwb2ludDIpKQogICAgICAgICByZXR1cm47CiAKLSAg
ICBwbGF0Zm9ybUNvbnRleHQoKS0+bWFrZUdyQ29udGV4dEN1cnJlbnQoKTsKLQogICAgIEZsb2F0
UG9pbnQgcDEgPSBwb2ludDE7CiAgICAgRmxvYXRQb2ludCBwMiA9IHBvaW50MjsKICAgICBib29s
IGlzVmVydGljYWxMaW5lID0gKHAxLngoKSA9PSBwMi54KCkpOwpAQCAtNjQzLDggKzYzNCw2IEBA
IHZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3TGluZUZvclRleHRDaGUKICAgICBpZiAocGFpbnRp
bmdEaXNhYmxlZCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBwbGF0Zm9ybUNvbnRleHQoKS0+
bWFrZUdyQ29udGV4dEN1cnJlbnQoKTsKLQogICAgIC8vIENyZWF0ZSB0aGUgcGF0dGVybiB3ZSds
bCB1c2UgdG8gZHJhdyB0aGUgdW5kZXJsaW5lLgogICAgIHN0YXRpYyBTa0JpdG1hcCogbWlzc3Bl
bGxCaXRtYXAgPSAwOwogICAgIGlmICghbWlzc3BlbGxCaXRtYXApIHsKQEAgLTcyNSw4ICs3MTQs
NiBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd0xpbmVGb3JUZXh0KGNvCiAgICAgaWYgKHdp
ZHRoIDw9IDApCiAgICAgICAgIHJldHVybjsKIAotICAgIHBsYXRmb3JtQ29udGV4dCgpLT5tYWtl
R3JDb250ZXh0Q3VycmVudCgpOwotCiAgICAgaW50IHRoaWNrbmVzcyA9IFNrTWF4MzIoc3RhdGlj
X2Nhc3Q8aW50PihzdHJva2VUaGlja25lc3MoKSksIDEpOwogICAgIFNrUmVjdCByOwogICAgIHIu
ZkxlZnQgPSBXZWJDb3JlRmxvYXRUb1NrU2NhbGFyKHB0LngoKSk7CkBAIC03NDcsOCArNzM0LDYg
QEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdSZWN0KGNvbnN0IEludAogICAgIGlmIChwYWlu
dGluZ0Rpc2FibGVkKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIHBsYXRmb3JtQ29udGV4dCgp
LT5tYWtlR3JDb250ZXh0Q3VycmVudCgpOwotCiAgICAgU2tSZWN0IHIgPSByZWN0OwogICAgIGlm
ICghaXNSZWN0U2tpYVNhZmUoZ2V0Q1RNKCksIHIpKSB7CiAgICAgICAgIC8vIFNlZSB0aGUgZmls
bFJlY3QgYmVsb3cuCkBAIC03NjcsOCArNzUyLDYgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmZp
bGxQYXRoKGNvbnN0IFBhdAogICAgIGlmICghaXNQYXRoU2tpYVNhZmUoZ2V0Q1RNKCksIHBhdGgp
KQogICAgICAgcmV0dXJuOwogCi0gICAgcGxhdGZvcm1Db250ZXh0KCktPm1ha2VHckNvbnRleHRD
dXJyZW50KCk7Ci0KICAgICBjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZSYgc3RhdGUgPSBtX3N0
YXRlOwogICAgIHBhdGguc2V0RmlsbFR5cGUoc3RhdGUuZmlsbFJ1bGUgPT0gUlVMRV9FVkVOT0RE
ID8KICAgICAgICAgU2tQYXRoOjprRXZlbk9kZF9GaWxsVHlwZSA6IFNrUGF0aDo6a1dpbmRpbmdf
RmlsbFR5cGUpOwpAQCAtNzkyLDggKzc3NSw2IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpmaWxs
UmVjdChjb25zdCBGbG8KIAogICAgIHBsYXRmb3JtQ29udGV4dCgpLT5zYXZlKCk7CiAKLSAgICBw
bGF0Zm9ybUNvbnRleHQoKS0+bWFrZUdyQ29udGV4dEN1cnJlbnQoKTsKLQogICAgIFNrUGFpbnQg
cGFpbnQ7CiAgICAgcGxhdGZvcm1Db250ZXh0KCktPnNldHVwUGFpbnRGb3JGaWxsaW5nKCZwYWlu
dCk7CiAgICAgcGxhdGZvcm1Db250ZXh0KCktPmNhbnZhcygpLT5kcmF3UmVjdChyLCBwYWludCk7
CkBAIC04MDYsOCArNzg3LDYgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmZpbGxSZWN0KGNvbnN0
IEZsbwogICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkpCiAgICAgICAgIHJldHVybjsKIAotICAg
IHBsYXRmb3JtQ29udGV4dCgpLT5tYWtlR3JDb250ZXh0Q3VycmVudCgpOwotCiAgICAgU2tSZWN0
IHIgPSByZWN0OwogICAgIGlmICghaXNSZWN0U2tpYVNhZmUoZ2V0Q1RNKCksIHIpKSB7CiAgICAg
ICAgIC8vIFNwZWNpYWwgY2FzZSB3aGVuIHRoZSByZWN0YW5nbGUgb3ZlcmZsb3dzIGZpeGVkIHBv
aW50LiBUaGlzIGlzIGEKQEAgLTg0MCw4ICs4MTksNiBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6
ZmlsbFJvdW5kZWRSZWN0KGNvCiAgICAgaWYgKHBhaW50aW5nRGlzYWJsZWQoKSkKICAgICAgICAg
cmV0dXJuOwogCi0gICAgcGxhdGZvcm1Db250ZXh0KCktPm1ha2VHckNvbnRleHRDdXJyZW50KCk7
Ci0KICAgICBTa1JlY3QgciA9IHJlY3Q7CiAgICAgaWYgKCFpc1JlY3RTa2lhU2FmZShnZXRDVE0o
KSwgcikpCiAgICAgICAgIC8vIFNlZSBmaWxsUmVjdCgpLgpAQCAtMTEyOSw4ICsxMTA2LDYgQEAg
dm9pZCBHcmFwaGljc0NvbnRleHQ6OnN0cm9rZUFyYyhjb25zdCBJbgogICAgIGlmIChwYWludGlu
Z0Rpc2FibGVkKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIHBsYXRmb3JtQ29udGV4dCgpLT5t
YWtlR3JDb250ZXh0Q3VycmVudCgpOwotCiAgICAgU2tQYWludCBwYWludDsKICAgICBTa1JlY3Qg
b3ZhbCA9IHI7CiAgICAgaWYgKHN0cm9rZVN0eWxlKCkgPT0gTm9TdHJva2UpIHsKQEAgLTExNjIs
OCArMTEzNyw2IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpzdHJva2VQYXRoKGNvbnN0IFAKICAg
ICBpZiAoIWlzUGF0aFNraWFTYWZlKGdldENUTSgpLCBwYXRoKSkKICAgICAgICAgcmV0dXJuOwog
Ci0gICAgcGxhdGZvcm1Db250ZXh0KCktPm1ha2VHckNvbnRleHRDdXJyZW50KCk7Ci0KICAgICBT
a1BhaW50IHBhaW50OwogICAgIHBsYXRmb3JtQ29udGV4dCgpLT5zZXR1cFBhaW50Rm9yU3Ryb2tp
bmcoJnBhaW50LCAwLCAwKTsKICAgICBwbGF0Zm9ybUNvbnRleHQoKS0+Y2FudmFzKCktPmRyYXdQ
YXRoKHBhdGgsIHBhaW50KTsKQEAgLTExNzcsOCArMTE1MCw2IEBAIHZvaWQgR3JhcGhpY3NDb250
ZXh0OjpzdHJva2VSZWN0KGNvbnN0IEYKICAgICBpZiAoIWlzUmVjdFNraWFTYWZlKGdldENUTSgp
LCByZWN0KSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgcGxhdGZvcm1Db250ZXh0KCktPm1ha2VH
ckNvbnRleHRDdXJyZW50KCk7Ci0KICAgICBTa1BhaW50IHBhaW50OwogICAgIHBsYXRmb3JtQ29u
dGV4dCgpLT5zZXR1cFBhaW50Rm9yU3Ryb2tpbmcoJnBhaW50LCAwLCAwKTsKICAgICBwYWludC5z
ZXRTdHJva2VXaWR0aChXZWJDb3JlRmxvYXRUb1NrU2NhbGFyKGxpbmVXaWR0aCkpOwpJbmRleDog
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9JbWFnZUJ1ZmZlclNraWEuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3NraWEvSW1h
Z2VCdWZmZXJTa2lhLmNwcAkocmV2aXNpb24gOTUxMDIpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9za2lhL0ltYWdlQnVmZmVyU2tpYS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTg3LDcgKzg3LDYgQEAgSW1hZ2VCdWZmZXI6OkltYWdlQnVmZmVyKGNvbnN0IEludFNpemUmCiAg
ICAgaWYgKHJlbmRlcmluZ01vZGUgPT0gQWNjZWxlcmF0ZWQpIHsKICAgICAgICAgR3JhcGhpY3ND
b250ZXh0M0QqIGNvbnRleHQzRCA9IFNoYXJlZEdyYXBoaWNzQ29udGV4dDNEOjpjcmVhdGUoMCk7
CiAgICAgICAgIGlmIChjb250ZXh0M0QpIHsKLSAgICAgICAgICAgIGNvbnRleHQzRC0+bWFrZUNv
bnRleHRDdXJyZW50KCk7CiAgICAgICAgICAgICBHckNvbnRleHQqIGdyID0gY29udGV4dDNELT5n
ckNvbnRleHQoKTsKICAgICAgICAgICAgIGlmIChncikgewogICAgICAgICAgICAgICAgIGdyLT5y
ZXNldENvbnRleHQoKTsKQEAgLTExNiwxMCArMTE1LDYgQEAgSW1hZ2VCdWZmZXI6OkltYWdlQnVm
ZmVyKGNvbnN0IEludFNpemUmCiAKIEltYWdlQnVmZmVyOjp+SW1hZ2VCdWZmZXIoKQogewotICAg
IGlmIChtX2NvbnRleHQgJiYgbV9jb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKSkgewotICAgICAg
ICAvLyBUaGlzIGlzIHNvIHRoYXQgdGhlIFNrR3B1RGV2aWNlIGRlc3RydWN0b3IgaGFzIHRoZSBj
b3JyZWN0IGNvbnRleHQuCi0gICAgICAgIG1fY29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCktPm1h
a2VHckNvbnRleHRDdXJyZW50KCk7Ci0gICAgfQogfQogCiBHcmFwaGljc0NvbnRleHQqIEltYWdl
QnVmZmVyOjpjb250ZXh0KCkgY29uc3QKQEAgLTEzNSw3ICsxMzAsNiBAQCBzaXplX3QgSW1hZ2VC
dWZmZXI6OmRhdGFTaXplKCkgY29uc3QKIFBhc3NSZWZQdHI8SW1hZ2U+IEltYWdlQnVmZmVyOjpj
b3B5SW1hZ2UoQmFja2luZ1N0b3JlQ29weSBjb3B5QmVoYXZpb3IpIGNvbnN0CiB7CiAgICAgQVNT
RVJUKGNvcHlCZWhhdmlvciA9PSBDb3B5QmFja2luZ1N0b3JlKTsKLSAgICBtX2NvbnRleHQtPnBs
YXRmb3JtQ29udGV4dCgpLT5tYWtlR3JDb250ZXh0Q3VycmVudCgpOwogICAgIHJldHVybiBCaXRt
YXBJbWFnZVNpbmdsZUZyYW1lU2tpYTo6Y3JlYXRlKCptX2RhdGEubV9wbGF0Zm9ybUNvbnRleHQu
Yml0bWFwKCksIHRydWUpOwogfQogCkBAIC0xNTIsMTQgKzE0Niw2IEBAIHZvaWQgSW1hZ2VCdWZm
ZXI6OmNsaXAoR3JhcGhpY3NDb250ZXh0Kgogdm9pZCBJbWFnZUJ1ZmZlcjo6ZHJhdyhHcmFwaGlj
c0NvbnRleHQqIGNvbnRleHQsIENvbG9yU3BhY2Ugc3R5bGVDb2xvclNwYWNlLCBjb25zdCBGbG9h
dFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsCiAgICAgICAgICAgICAg
ICAgICAgICAgIENvbXBvc2l0ZU9wZXJhdG9yIG9wLCBib29sIHVzZUxvd1F1YWxpdHlTY2FsZSkK
IHsKLSAgICAvLyBTZXQgYm90aCBncmFwaGljcyBjb250ZXh0cyBjdXJyZW50LiBUaGlzIGxvb2tz
IGEgbGl0dGxlIHdlaXJkLCBidXQgaXMKLSAgICAvLyBuZWNlc3Nhcnkgc2luY2Ugd2UgbWF5IGJl
IGRyYXdpbmcgZnJvbSBhbiBhY2NlbGVyYXRlZCB0bwotICAgIC8vIG5vbi1hY2NlbGVyYXRlZCBj
b250ZXh0IChlLmcuLCBwcmludGluZyksIG9yIHZpY2UgdmVyc2EuIE5vdGUgdGhhdCBpdAotICAg
IC8vIG9ubHkgd29ya3MgYmVjYXVzZSB0aGUgY29udGV4dCBpcyBhY3R1YWxseSB0aGUgc2FtZSB1
bmRlcmx5aW5nIGNvbnRleHQKLSAgICAvLyAob3IgbnVsbCksIHNpbmNlIHdlIHVzZSBvbmUgY29u
dGV4dCBmb3IgYWNjZWxlcmF0ZWQgZHJhd2luZy4gSWYgdGhhdAotICAgIC8vIGFzc3VtcHRpb24g
Y2hhbmdlcywgd2UnbGwgaGF2ZSB0byByZXZpc2l0IHRoaXMgY29kZS4KLSAgICBjb250ZXh0LT5w
bGF0Zm9ybUNvbnRleHQoKS0+bWFrZUdyQ29udGV4dEN1cnJlbnQoKTsKLSAgICBtX2NvbnRleHQt
PnBsYXRmb3JtQ29udGV4dCgpLT5tYWtlR3JDb250ZXh0Q3VycmVudCgpOwogICAgIFJlZlB0cjxJ
bWFnZT4gaW1hZ2UgPSBCaXRtYXBJbWFnZVNpbmdsZUZyYW1lU2tpYTo6Y3JlYXRlKCptX2RhdGEu
bV9wbGF0Zm9ybUNvbnRleHQuYml0bWFwKCksIGNvbnRleHQgPT0gbV9jb250ZXh0KTsKICAgICBj
b250ZXh0LT5kcmF3SW1hZ2UoaW1hZ2UuZ2V0KCksIHN0eWxlQ29sb3JTcGFjZSwgZGVzdFJlY3Qs
IHNyY1JlY3QsIG9wLCB1c2VMb3dRdWFsaXR5U2NhbGUpOwogfQpAQCAtMTY3LDcgKzE1Myw2IEBA
IHZvaWQgSW1hZ2VCdWZmZXI6OmRyYXcoR3JhcGhpY3NDb250ZXh0Kgogdm9pZCBJbWFnZUJ1ZmZl
cjo6ZHJhd1BhdHRlcm4oR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBGbG9hdFJlY3Qm
IHNyY1JlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5zZm9ybSwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBDb2xvclNw
YWNlIHN0eWxlQ29sb3JTcGFjZSwgQ29tcG9zaXRlT3BlcmF0b3Igb3AsIGNvbnN0IEZsb2F0UmVj
dCYgZGVzdFJlY3QpCiB7Ci0gICAgY29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCktPm1ha2VHckNv
bnRleHRDdXJyZW50KCk7CiAgICAgUmVmUHRyPEltYWdlPiBpbWFnZSA9IEJpdG1hcEltYWdlU2lu
Z2xlRnJhbWVTa2lhOjpjcmVhdGUoKm1fZGF0YS5tX3BsYXRmb3JtQ29udGV4dC5iaXRtYXAoKSwg
Y29udGV4dCA9PSBtX2NvbnRleHQpOwogICAgIGltYWdlLT5kcmF3UGF0dGVybihjb250ZXh0LCBz
cmNSZWN0LCBwYXR0ZXJuVHJhbnNmb3JtLCBwaGFzZSwgc3R5bGVDb2xvclNwYWNlLCBvcCwgZGVz
dFJlY3QpOwogfQpAQCAtMjg0LDEzICsyNjksMTEgQEAgUGFzc1JlZlB0cjxCeXRlQXJyYXk+IGdl
dEltYWdlRGF0YShjb25zdAogCiBQYXNzUmVmUHRyPEJ5dGVBcnJheT4gSW1hZ2VCdWZmZXI6Omdl
dFVubXVsdGlwbGllZEltYWdlRGF0YShjb25zdCBJbnRSZWN0JiByZWN0KSBjb25zdAogewotICAg
IG1fY29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCktPm1ha2VHckNvbnRleHRDdXJyZW50KCk7CiAg
ICAgcmV0dXJuIGdldEltYWdlRGF0YTxVbm11bHRpcGxpZWQ+KHJlY3QsICpjb250ZXh0KCktPnBs
YXRmb3JtQ29udGV4dCgpLT5jYW52YXMoKS0+Z2V0RGV2aWNlKCksIG1fc2l6ZSk7CiB9CiAKIFBh
c3NSZWZQdHI8Qnl0ZUFycmF5PiBJbWFnZUJ1ZmZlcjo6Z2V0UHJlbXVsdGlwbGllZEltYWdlRGF0
YShjb25zdCBJbnRSZWN0JiByZWN0KSBjb25zdAogewotICAgIG1fY29udGV4dC0+cGxhdGZvcm1D
b250ZXh0KCktPm1ha2VHckNvbnRleHRDdXJyZW50KCk7CiAgICAgcmV0dXJuIGdldEltYWdlRGF0
YTxQcmVtdWx0aXBsaWVkPihyZWN0LCAqY29udGV4dCgpLT5wbGF0Zm9ybUNvbnRleHQoKS0+Y2Fu
dmFzKCktPmdldERldmljZSgpLCBtX3NpemUpOwogfQogCkBAIC0zNjUsMTMgKzM0OCwxMSBAQCB2
b2lkIHB1dEltYWdlRGF0YShCeXRlQXJyYXkqJiBzb3VyY2UsIGNvCiAKIHZvaWQgSW1hZ2VCdWZm
ZXI6OnB1dFVubXVsdGlwbGllZEltYWdlRGF0YShCeXRlQXJyYXkqIHNvdXJjZSwgY29uc3QgSW50
U2l6ZSYgc291cmNlU2l6ZSwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50UG9p
bnQmIGRlc3RQb2ludCkKIHsKLSAgICBtX2NvbnRleHQtPnBsYXRmb3JtQ29udGV4dCgpLT5tYWtl
R3JDb250ZXh0Q3VycmVudCgpOwogICAgIHB1dEltYWdlRGF0YTxVbm11bHRpcGxpZWQ+KHNvdXJj
ZSwgc291cmNlU2l6ZSwgc291cmNlUmVjdCwgZGVzdFBvaW50LCBjb250ZXh0KCktPnBsYXRmb3Jt
Q29udGV4dCgpLT5jYW52YXMoKS0+Z2V0RGV2aWNlKCksIG1fc2l6ZSk7CiB9CiAKIHZvaWQgSW1h
Z2VCdWZmZXI6OnB1dFByZW11bHRpcGxpZWRJbWFnZURhdGEoQnl0ZUFycmF5KiBzb3VyY2UsIGNv
bnN0IEludFNpemUmIHNvdXJjZVNpemUsIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0
IEludFBvaW50JiBkZXN0UG9pbnQpCiB7Ci0gICAgbV9jb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQo
KS0+bWFrZUdyQ29udGV4dEN1cnJlbnQoKTsKICAgICBwdXRJbWFnZURhdGE8UHJlbXVsdGlwbGll
ZD4oc291cmNlLCBzb3VyY2VTaXplLCBzb3VyY2VSZWN0LCBkZXN0UG9pbnQsIGNvbnRleHQoKS0+
cGxhdGZvcm1Db250ZXh0KCktPmNhbnZhcygpLT5nZXREZXZpY2UoKSwgbV9zaXplKTsKIH0KIApA
QCAtNDAxLDcgKzM4Miw2IEBAIHN0YXRpYyBTdHJpbmcgSW1hZ2VUb0RhdGFVUkwoVCYgc291cmNl
LAogCiBTdHJpbmcgSW1hZ2VCdWZmZXI6OnRvRGF0YVVSTChjb25zdCBTdHJpbmcmIG1pbWVUeXBl
LCBjb25zdCBkb3VibGUqIHF1YWxpdHkpIGNvbnN0CiB7Ci0gICAgbV9jb250ZXh0LT5wbGF0Zm9y
bUNvbnRleHQoKS0+bWFrZUdyQ29udGV4dEN1cnJlbnQoKTsKICAgICBTa0RldmljZSogZGV2aWNl
ID0gY29udGV4dCgpLT5wbGF0Zm9ybUNvbnRleHQoKS0+Y2FudmFzKCktPmdldERldmljZSgpOwog
ICAgIHJldHVybiBJbWFnZVRvRGF0YVVSTChkZXZpY2UtPmFjY2Vzc0JpdG1hcChmYWxzZSksIG1p
bWVUeXBlLCBxdWFsaXR5KTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3NraWEvSW1hZ2VTa2lhLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9za2lhL0ltYWdlU2tpYS5jcHAJKHJldmlzaW9uIDk1MTAyKQorKysgU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9JbWFnZVNraWEuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC00MjIsOCArNDIyLDYgQEAgdm9pZCBCaXRtYXBJbWFnZTo6ZHJhdyhHcmFwaGlj
c0NvbnRleHQqCiAgICAgaWYgKG5vcm1TcmNSZWN0LmlzRW1wdHkoKSB8fCBub3JtRHN0UmVjdC5p
c0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsgIC8vIE5vdGhpbmcgdG8gZHJhdy4KIAotICAgIGN0
eHQtPnBsYXRmb3JtQ29udGV4dCgpLT5tYWtlR3JDb250ZXh0Q3VycmVudCgpOwotCiAgICAgcGFp
bnRTa0JpdG1hcChjdHh0LT5wbGF0Zm9ybUNvbnRleHQoKSwKICAgICAgICAgICAgICAgICAgICpi
bSwKICAgICAgICAgICAgICAgICAgIGVuY2xvc2luZ0ludFJlY3Qobm9ybVNyY1JlY3QpLApAQCAt
NDQ4LDggKzQ0Niw2IEBAIHZvaWQgQml0bWFwSW1hZ2VTaW5nbGVGcmFtZVNraWE6OmRyYXcoR3IK
ICAgICBpZiAobm9ybVNyY1JlY3QuaXNFbXB0eSgpIHx8IG5vcm1Ec3RSZWN0LmlzRW1wdHkoKSkK
ICAgICAgICAgcmV0dXJuOyAgLy8gTm90aGluZyB0byBkcmF3LgogCi0gICAgY3R4dC0+cGxhdGZv
cm1Db250ZXh0KCktPm1ha2VHckNvbnRleHRDdXJyZW50KCk7Ci0KICAgICBwYWludFNrQml0bWFw
KGN0eHQtPnBsYXRmb3JtQ29udGV4dCgpLAogICAgICAgICAgICAgICAgICAgbV9uYXRpdmVJbWFn
ZSwKICAgICAgICAgICAgICAgICAgIGVuY2xvc2luZ0ludFJlY3Qobm9ybVNyY1JlY3QpLApJbmRl
eDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9QbGF0Zm9ybUNvbnRleHRT
a2lhLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9z
a2lhL1BsYXRmb3JtQ29udGV4dFNraWEuY3BwCShyZXZpc2lvbiA5NTEwMikKKysrIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3NraWEvUGxhdGZvcm1Db250ZXh0U2tpYS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTI2Nyw3ICsyNjcsNiBAQCB2b2lkIFBsYXRmb3JtQ29udGV4dFNraWE6
OmJlZ2luTGF5ZXJDbGlwCiAKIHZvaWQgUGxhdGZvcm1Db250ZXh0U2tpYTo6Y2xpcFBhdGhBbnRp
QWxpYXNlZChjb25zdCBTa1BhdGgmIGNsaXBQYXRoKQogewotICAgIG1ha2VHckNvbnRleHRDdXJy
ZW50KCk7CiAgICAgaWYgKG1fY2FudmFzLT5nZXRUb3BEZXZpY2UoKS0+Z2V0RGV2aWNlQ2FwYWJp
bGl0aWVzKCkgJiBTa0RldmljZTo6a1ZlY3Rvcl9DYXBhYmlsaXR5KSB7CiAgICAgICAgIC8vIFdo
ZW4gdGhlIG91dHB1dCBpcyBhIHZlY3RvciBkZXZpY2UsIGxpa2UgUERGLCB3ZSBkb24ndCBuZWVk
IGFudGlhbGlhc2VkIGNsaXBzLgogICAgICAgICAvLyBJdCdzIHVwIHRvIHRoZSBQREYgcmVuZGVy
aW5nIGVuZ2luZSB0byBkbyB0aGF0LiBXZSBjYW4gc2ltcGx5IGRpc2FibGUgdGhlCkBAIC02NTYs
MTAgKzY1NSw0IEBAIHZvaWQgUGxhdGZvcm1Db250ZXh0U2tpYTo6c2V0R3JhcGhpY3NDb24KICAg
ICBtX2dwdUNvbnRleHQgPSBjb250ZXh0OwogfQogCi12b2lkIFBsYXRmb3JtQ29udGV4dFNraWE6
Om1ha2VHckNvbnRleHRDdXJyZW50KCkKLXsKLSAgICBpZiAobV9ncHVDb250ZXh0KQotICAgICAg
ICBtX2dwdUNvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpOwotfQotCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9za2lhL1Bs
YXRmb3JtQ29udGV4dFNraWEuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9za2lhL1BsYXRmb3JtQ29udGV4dFNraWEuaAkocmV2aXNpb24gOTUxMDIpCisr
KyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9za2lhL1BsYXRmb3JtQ29udGV4dFNr
aWEuaAkod29ya2luZyBjb3B5KQpAQCAtMTc0LDcgKzE3NCw2IEBAIHB1YmxpYzoKIAogICAgIGJv
b2wgaXNBY2NlbGVyYXRlZCgpIGNvbnN0IHsgcmV0dXJuIG1fZ3B1Q29udGV4dDsgfQogICAgIHZv
aWQgc2V0R3JhcGhpY3NDb250ZXh0M0QoR3JhcGhpY3NDb250ZXh0M0QqKTsKLSAgICB2b2lkIG1h
a2VHckNvbnRleHRDdXJyZW50KCk7CiAKIHByaXZhdGU6CiAgICAgLy8gVXNlZCB3aGVuIHJlc3Rv
cmluZyBhbmQgdGhlIHN0YXRlIGhhcyBhbiBpbWFnZSBjbGlwLiBPbmx5IHNob3dzIHRoZSBwaXhl
bHMgaW4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3NraWEvU2tpYUZv
bnRXaW4uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3NraWEvU2tpYUZvbnRXaW4uY3BwCShyZXZpc2lvbiA5NTEwMikKKysrIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3NraWEvU2tpYUZvbnRXaW4uY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0xODMsOSArMTgzLDYgQEAgdm9pZCBwYWludFNraWFUZXh0KEdyYXBoaWNzQ29udGV4dCogY29u
dAogICAgIFNrQ2FudmFzKiBjYW52YXMgPSBwbGF0Zm9ybUNvbnRleHQtPmNhbnZhcygpOwogICAg
IFRleHREcmF3aW5nTW9kZUZsYWdzIHRleHRNb2RlID0gcGxhdGZvcm1Db250ZXh0LT5nZXRUZXh0
RHJhd2luZ01vZGUoKTsKIAotICAgIC8vIElmIHBsYXRmb3JtQ29udGV4dCBpcyBHUFUtYmFja2Vk
IG1ha2UgaXRzIEdMIGNvbnRleHQgY3VycmVudC4KLSAgICBwbGF0Zm9ybUNvbnRleHQtPm1ha2VH
ckNvbnRleHRDdXJyZW50KCk7Ci0KICAgICAvLyBGaWxsaW5nIChpZiBuZWNlc3NhcnkpLiBUaGlz
IGlzIHRoZSBjb21tb24gY2FzZS4KICAgICBTa1BhaW50IHBhaW50OwogICAgIHBsYXRmb3JtQ29u
dGV4dC0+c2V0dXBQYWludEZvckZpbGxpbmcoJnBhaW50KTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0v
Q2hhbmdlTG9nCShyZXZpc2lvbiA5NTEwNykKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hh
bmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjAgQEAKKzIwMTEtMDktMTQgIEJyaWFu
IFNhbG9tb24gIDxic2Fsb21vbkBnb29nbGUuY29tPgorCisgICAgICAgIFtTa2lhL0Nocm9tZV0g
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02ODA5Ngor
CisgICAgICAgIFRoaXMgY2hhbmdlIHJlbW92ZXMgV2ViR3JhcGhpY3NDb250ZXh0M0Q6OmdyR0xJ
bnRlcmZhY2UoKS4gSXQgaGFzIGJlZW4KKyAgICAgICAgc3VwZXJjZWRlZCBieSBXZWJHcmFwaGlj
c0NvbnRleHQzRDo6Y3JlYXRlR3JHTEludGVyZmFjZSB3aGljaCBzZXRzIHVwCisgICAgICAgIHRo
ZSBwZXItR0wgY2FsbCBjYWxsYmFjayB1c2VkIHRvIHNldCB0aGUgY29ycmVjdCBjb250ZXh0Lgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogcHVibGlj
L1dlYkdyYXBoaWNzQ29udGV4dDNELmg6CisgICAgICAgICogc3JjL0dyYXBoaWNzQ29udGV4dDNE
Q2hyb21pdW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0RQcml2YXRl
OjpnckNvbnRleHQpOgorICAgICAgICAqIHNyYy9XZWJHcmFwaGljc0NvbnRleHQzRC5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OldlYkdyYXBoaWNzQ29udGV4dDNEOjpjcmVhdGVHckdMSW50ZXJmYWNl
KToKKwogMjAxMS0wOS0xMyAgRXJpYyBTZWlkZWwgIDxlcmljQHdlYmtpdC5vcmc+CiAKICAgICAg
ICAgUmVtb3ZlIEVOQUJMRV9TVkdfVVNFIGFzIDx1c2U+IGlzIHJlcXVpcmVkIGJ5IEhUTUw1Cklu
ZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJHcmFwaGljc0NvbnRleHQzRC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkdyYXBoaWNz
Q29udGV4dDNELmgJKHJldmlzaW9uIDk1MTAyKQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9w
dWJsaWMvV2ViR3JhcGhpY3NDb250ZXh0M0QuaAkod29ya2luZyBjb3B5KQpAQCAtMzY2LDkgKzM2
Niw2IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIFdHQzNEZW51bSBnZXRHcmFwaGljc1Jlc2V0U3Rh
dHVzQVJCKCkgeyByZXR1cm4gMDsgLyogR0xfTk9fRVJST1IgKi8gfQogCiAjaWYgV0VCS0lUX1VT
SU5HX1NLSUEKLSAgICAvLyBGSVhNRTogVGhpcyBmdW5jdGlvbiBpcyBzdXBlcmNlZGVkIGJ5IG9u
Q3JlYXRlR3JHTEludGVyZmFjZS4gSXQgc2hvdWxkIGJlIHJlbW92ZWQgYWZ0ZXIgc3ViY2xhc3Mg
aW1wbGVtZW50YXRpb25zIGFyZSByZW1vdmVkIGZyb20gQ2hyb21pdW0uCi0gICAgdmlydHVhbCBH
ckdMSW50ZXJmYWNlKiBnckdMSW50ZXJmYWNlKCkgeyByZXR1cm4gMDsgfQotCiAgICAgR3JHTElu
dGVyZmFjZSogY3JlYXRlR3JHTEludGVyZmFjZSgpOwogI2VuZGlmCiAKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL0dyYXBoaWNzQ29udGV4dDNEQ2hyb21pdW0uY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0dyYXBoaWNzQ29udGV4dDNEQ2hyb21p
dW0uY3BwCShyZXZpc2lvbiA5NTEwMikKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0dy
YXBoaWNzQ29udGV4dDNEQ2hyb21pdW0uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMDEsMTUgKzIw
MSw2IEBAIEdyQ29udGV4dCogR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpnckMKIAogICAgIGlm
ICghbV9nckNvbnRleHQpIHsKICAgICAgICAgU2tBdXRvVFVucmVmPEdyR0xJbnRlcmZhY2U+IGlu
dGVyZmFjZShtX2ltcGwtPmNyZWF0ZUdyR0xJbnRlcmZhY2UoKSk7Ci0gICAgICAgIC8vIEZJWE1F
OiBSZW1vdmUgdGhpcyBibG9jayBhZnRlciB0aGUgV2ViR3JhcGhpY3NDb250ZXh0M0Qgc3ViY2xh
c3NlcyBpbiBDaHJvbWl1bSBubyBsb25nZXIgb3ZlcnJpZGUgZ3JHTEludGVyZmFjZSgpLgotICAg
ICAgICBpZiAoIWludGVyZmFjZS5nZXQoKSkgewotICAgICAgICAgICAgR3JHTEludGVyZmFjZSog
ZmFsbGJhY2tJbnRlcmZhY2UgPSBtX2ltcGwtPmdyR0xJbnRlcmZhY2UoKTsKLSAgICAgICAgICAg
IGlmIChmYWxsYmFja0ludGVyZmFjZSkgewotICAgICAgICAgICAgICAgIGZhbGxiYWNrSW50ZXJm
YWNlLT5yZWYoKTsgLy8gYmFsYW5jZSBvdXQgdGhlIFNrQXV0b1RVbnJlZgotICAgICAgICAgICAg
ICAgIGludGVyZmFjZS5yZXNldChmYWxsYmFja0ludGVyZmFjZSk7Ci0gICAgICAgICAgICB9Ci0g
ICAgICAgIH0KLSAgICAgICAgLy8gVGhpcyBpcyB0aGUgZW5kIG9mIHRoZSBibG9jayB0byByZW1v
dmUuCiAgICAgICAgIG1fZ3JDb250ZXh0ID0gR3JDb250ZXh0OjpDcmVhdGUoa09wZW5HTF9TaGFk
ZXJzX0dyRW5naW5lLCByZWludGVycHJldF9jYXN0PEdyUGxhdGZvcm0zRENvbnRleHQ+KGludGVy
ZmFjZS5nZXQoKSkpOwogICAgICAgICBpZiAobV9nckNvbnRleHQpCiAgICAgICAgICAgICBtX2dy
Q29udGV4dC0+c2V0VGV4dHVyZUNhY2hlTGltaXRzKG1heFRleHR1cmVDYWNoZUNvdW50LCBtYXhU
ZXh0dXJlQ2FjaGVCeXRlcyk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJH
cmFwaGljc0NvbnRleHQzRC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1
bS9zcmMvV2ViR3JhcGhpY3NDb250ZXh0M0QuY3BwCShyZXZpc2lvbiA5NTEwMikKKysrIFNvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkdyYXBoaWNzQ29udGV4dDNELmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMzIsMjQgKzMyLDIwIEBAIG5hbWVzcGFjZSBXZWJLaXQgewogCiAjaWYgV0VCS0lU
X1VTSU5HX1NLSUEKIAotI2lmIEdSX0dMX1BFUl9HTF9GVU5DX0NBTExCQUNLCiBuYW1lc3BhY2Ug
ewogICAgIHZvaWQgYmluZFdlYkdyYXBoaWNzQ29udGV4dDNER0xDb250ZXh0Q2FsbGJhY2soY29u
c3QgR3JHTEludGVyZmFjZSogaW50ZXJmYWNlKQogICAgIHsKICAgICAgICAgcmVpbnRlcnByZXRf
Y2FzdDxXZWJHcmFwaGljc0NvbnRleHQzRCo+KGludGVyZmFjZS0+ZkNhbGxiYWNrRGF0YSktPm1h
a2VDb250ZXh0Q3VycmVudCgpOwogICAgIH0KIH0KLSNlbmRpZgogCiBHckdMSW50ZXJmYWNlKiBX
ZWJHcmFwaGljc0NvbnRleHQzRDo6Y3JlYXRlR3JHTEludGVyZmFjZSgpCiB7CiAgICAgR3JHTElu
dGVyZmFjZSogaW50ZXJmYWNlID0gb25DcmVhdGVHckdMSW50ZXJmYWNlKCk7Ci0jaWYgR1JfR0xf
UEVSX0dMX0ZVTkNfQ0FMTEJBQ0sKICAgICBpZiAoaW50ZXJmYWNlKSB7CiAgICAgICAgIGludGVy
ZmFjZS0+ZkNhbGxiYWNrID0gYmluZFdlYkdyYXBoaWNzQ29udGV4dDNER0xDb250ZXh0Q2FsbGJh
Y2s7CiAgICAgICAgIGludGVyZmFjZS0+ZkNhbGxiYWNrRGF0YSA9IHJlaW50ZXJwcmV0X2Nhc3Q8
R3JHTEludGVyZmFjZUNhbGxiYWNrRGF0YT4odGhpcyk7CiAgICAgfQotI2VuZGlmCiAgICAgcmV0
dXJuIGludGVyZmFjZTsKIH0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>107485</attachid>
            <date>2011-09-15 06:13:46 -0700</date>
            <delta_ts>2011-09-15 08:12:22 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-68096-20110915091139.patch</filename>
            <type>text/plain</type>
            <size>20598</size>
            <attacher name="Brian Salomon">bsalomon</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDk1MTg1KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNTYgQEAKKzIwMTEtMDktMTUgIEJyaWFuIFNh
bG9tb24gIDxic2Fsb21vbkBnb29nbGUuY29tPgorCisgICAgICAgIFtTa2lhL0Nocm9tZV0gQ2xl
YW51cCB1bm5lZWRlZCBjb2RlIG5vdyB0aGF0IEdyR0xJbnRlcmZhY2UgaXMgdXNlZCB0byBzZXQg
R0wgY3R4IHBlciBHTCBjYWxsLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9NjgwOTYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBUaGlzIGNoYW5nZSByZW1vdmVzIFBsYXRmb3JtQ29udGV4dFNraWE6Om1ha2VH
ckNvbnRleHRDdXJyZW50IG5vdyB0aGF0CisgICAgICAgIEdyR0xJbnRlcmZhY2UgaXMgdXNlZCB0
byBzZXQgdGhlIGNvbnRleHQgb24gZXZlcnkgU2tpYSBHTCBjYWxsLgorCisgICAgICAgIFRlc3Rl
ZCBieSBldmVyeSBjYW52YXMgbGF5b3V0IHRlc3QuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9Gb250TGludXguY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9udDo6ZHJh
d0dseXBocyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9Gb250U2tpYS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpGb250OjpkcmF3R2x5cGhzKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9za2lhL0dyYXBoaWNzQ29udGV4dFNraWEuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0OjpjbGVhclJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0OjpjbGlwKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6ZHJh
d0NvbnZleFBvbHlnb24pOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpkcmF3
RWxsaXBzZSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmRyYXdGb2N1c1Jp
bmcpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpkcmF3TGluZSk6CisgICAg
ICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmRyYXdMaW5lRm9yVGV4dENoZWNraW5nKToK
KyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6ZHJhd0xpbmVGb3JUZXh0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6ZHJhd1JlY3QpOgorICAgICAgICAoV2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0OjpmaWxsUGF0aCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFw
aGljc0NvbnRleHQ6OmZpbGxSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dDo6ZmlsbFJvdW5kZWRSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6
c3Ryb2tlQXJjKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6c3Ryb2tlUGF0
aCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnN0cm9rZVJlY3QpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3NraWEvSW1hZ2VCdWZmZXJTa2lhLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyOjpJbWFnZUJ1ZmZlcik6CisgICAgICAgIChXZWJDb3Jl
OjpJbWFnZUJ1ZmZlcjo6fkltYWdlQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVm
ZmVyOjpjb3B5SW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXI6OmRyYXcpOgor
ICAgICAgICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXI6OmRyYXdQYXR0ZXJuKToKKyAgICAgICAgKFdl
YkNvcmU6OkltYWdlQnVmZmVyOjpnZXRVbm11bHRpcGxpZWRJbWFnZURhdGEpOgorICAgICAgICAo
V2ViQ29yZTo6SW1hZ2VCdWZmZXI6OmdldFByZW11bHRpcGxpZWRJbWFnZURhdGEpOgorICAgICAg
ICAoV2ViQ29yZTo6SW1hZ2VCdWZmZXI6OnB1dFVubXVsdGlwbGllZEltYWdlRGF0YSk6CisgICAg
ICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6cHV0UHJlbXVsdGlwbGllZEltYWdlRGF0YSk6Cisg
ICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlcjo6dG9EYXRhVVJMKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9za2lhL0ltYWdlU2tpYS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpCaXRt
YXBJbWFnZTo6ZHJhdyk6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZVNpbmdsZUZyYW1l
U2tpYTo6ZHJhdyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9QbGF0Zm9ybUNv
bnRleHRTa2lhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtQ29udGV4dFNraWE6OmNs
aXBQYXRoQW50aUFsaWFzZWQpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1Db250ZXh0U2tp
YTo6c2V0R3JhcGhpY3NDb250ZXh0M0QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3Nr
aWEvUGxhdGZvcm1Db250ZXh0U2tpYS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3Nr
aWEvU2tpYUZvbnRXaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6cGFpbnRTa2lhVGV4dCk6CisK
IDIwMTEtMDktMTUgIFBldGVyIEJldmVybG9vICA8cGV0ZXJAY2hyb21pdW0ub3JnPgogCiAgICAg
ICAgIFtDaHJvbWl1bV0gTWFrZSBzdXJlIHRoYXQgdGhlIEFSTSBORU9OIGZpbGVzIGJ1aWxkIHdp
dGggLW1hcm0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L0ZvbnRMaW51eC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vRm9udExpbnV4LmNwcAkocmV2aXNpb24gOTUxODUpCisrKyBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Gb250TGludXguY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xMTAsOCArMTEwLDYgQEAgdm9pZCBGb250OjpkcmF3R2x5cGhzKEdyYXBoaWNz
Q29udGV4dCogZwogICAgICAgICB5ICs9IFNrRmxvYXRUb1NjYWxhcihhZHZbaV0uaGVpZ2h0KCkp
OwogICAgIH0KIAotICAgIGdjLT5wbGF0Zm9ybUNvbnRleHQoKS0+bWFrZUdyQ29udGV4dEN1cnJl
bnQoKTsKLQogICAgIFNrQ2FudmFzKiBjYW52YXMgPSBnYy0+cGxhdGZvcm1Db250ZXh0KCktPmNh
bnZhcygpOwogICAgIFRleHREcmF3aW5nTW9kZUZsYWdzIHRleHRNb2RlID0gZ2MtPnBsYXRmb3Jt
Q29udGV4dCgpLT5nZXRUZXh0RHJhd2luZ01vZGUoKTsKIApJbmRleDogU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9Gb250U2tpYS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9Gb250U2tpYS5jcHAJKHJldmlzaW9uIDk1
MTg1KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9Gb250U2tpYS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTEyNiw4ICsxMjYsNiBAQCB2b2lkIEZvbnQ6OmRyYXdHbHlw
aHMoR3JhcGhpY3NDb250ZXh0KiBnCiAgICAgICAgIHkgKz0gU2tGbG9hdFRvU2NhbGFyKGFkdltp
XS5oZWlnaHQpOwogICAgIH0KIAotICAgIGdjLT5wbGF0Zm9ybUNvbnRleHQoKS0+bWFrZUdyQ29u
dGV4dEN1cnJlbnQoKTsKLQogICAgIFNrQ2FudmFzKiBjYW52YXMgPSBnYy0+cGxhdGZvcm1Db250
ZXh0KCktPmNhbnZhcygpOwogICAgIFRleHREcmF3aW5nTW9kZUZsYWdzIHRleHRNb2RlID0gZ2Mt
PnBsYXRmb3JtQ29udGV4dCgpLT5nZXRUZXh0RHJhd2luZ01vZGUoKTsKIApJbmRleDogU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9HcmFwaGljc0NvbnRleHRTa2lhLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9za2lhL0dyYXBo
aWNzQ29udGV4dFNraWEuY3BwCShyZXZpc2lvbiA5NTE4NSkKKysrIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3NraWEvR3JhcGhpY3NDb250ZXh0U2tpYS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTMzNSw4ICszMzUsNiBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6Y2xlYXJSZWN0KGNv
bnN0IEZsCiAgICAgaWYgKCFpc1JlY3RTa2lhU2FmZShnZXRDVE0oKSwgcikpCiAgICAgICAgIENs
aXBSZWN0VG9DYW52YXMoKnBsYXRmb3JtQ29udGV4dCgpLT5jYW52YXMoKSwgciwgJnIpOwogCi0g
ICAgcGxhdGZvcm1Db250ZXh0KCktPm1ha2VHckNvbnRleHRDdXJyZW50KCk7Ci0KICAgICBTa1Bh
aW50IHBhaW50OwogICAgIHBsYXRmb3JtQ29udGV4dCgpLT5zZXR1cFBhaW50Rm9yRmlsbGluZygm
cGFpbnQpOwogICAgIHBhaW50LnNldFhmZXJtb2RlTW9kZShTa1hmZXJtb2RlOjprQ2xlYXJfTW9k
ZSk7CkBAIC0zNTIsNyArMzUwLDYgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmNsaXAoY29uc3Qg
RmxvYXRSZQogICAgIGlmICghaXNSZWN0U2tpYVNhZmUoZ2V0Q1RNKCksIHIpKQogICAgICAgICBy
ZXR1cm47CiAKLSAgICBwbGF0Zm9ybUNvbnRleHQoKS0+bWFrZUdyQ29udGV4dEN1cnJlbnQoKTsK
ICAgICBwbGF0Zm9ybUNvbnRleHQoKS0+Y2FudmFzKCktPmNsaXBSZWN0KHIpOwogfQogCkBAIC00
NTYsOCArNDUzLDYgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdDb252ZXhQb2x5Z29uKAog
ICAgIGlmIChudW1Qb2ludHMgPD0gMSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgcGxhdGZvcm1D
b250ZXh0KCktPm1ha2VHckNvbnRleHRDdXJyZW50KCk7Ci0KICAgICBTa1BhdGggcGF0aDsKICAg
ICBzZXRQYXRoRnJvbUNvbnZleFBvaW50cygmcGF0aCwgbnVtUG9pbnRzLCBwb2ludHMpOwogCkBA
IC01MDUsNyArNTAwLDYgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdFbGxpcHNlKGNvbnN0
CiAgICAgaWYgKCFpc1JlY3RTa2lhU2FmZShnZXRDVE0oKSwgcmVjdCkpCiAgICAgICAgIHJldHVy
bjsKIAotICAgIHBsYXRmb3JtQ29udGV4dCgpLT5tYWtlR3JDb250ZXh0Q3VycmVudCgpOwogICAg
IFNrUGFpbnQgcGFpbnQ7CiAgICAgcGxhdGZvcm1Db250ZXh0KCktPnNldHVwUGFpbnRGb3JGaWxs
aW5nKCZwYWludCk7CiAgICAgcGxhdGZvcm1Db250ZXh0KCktPmNhbnZhcygpLT5kcmF3T3ZhbChy
ZWN0LCBwYWludCk7CkBAIC01NjIsNyArNTU2LDYgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRy
YXdGb2N1c1JpbmcoY29ucwogICAgIGlmICghcmVjdENvdW50KQogICAgICAgICByZXR1cm47CiAK
LSAgICBwbGF0Zm9ybUNvbnRleHQoKS0+bWFrZUdyQ29udGV4dEN1cnJlbnQoKTsKICAgICBTa1Jl
Z2lvbiBmb2N1c1JpbmdSZWdpb247CiAgICAgY29uc3QgU2tTY2FsYXIgZm9jdXNSaW5nT3V0c2V0
ID0gZ2V0Rm9jdXNSaW5nT3V0c2V0KHdpZHRoKTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBp
IDwgcmVjdENvdW50OyBpKyspIHsKQEAgLTU5Nyw4ICs1OTAsNiBAQCB2b2lkIEdyYXBoaWNzQ29u
dGV4dDo6ZHJhd0xpbmUoY29uc3QgSW50CiAgICAgaWYgKCFpc1BvaW50U2tpYVNhZmUoZ2V0Q1RN
KCksIHBvaW50MSkgfHwgIWlzUG9pbnRTa2lhU2FmZShnZXRDVE0oKSwgcG9pbnQyKSkKICAgICAg
ICAgcmV0dXJuOwogCi0gICAgcGxhdGZvcm1Db250ZXh0KCktPm1ha2VHckNvbnRleHRDdXJyZW50
KCk7Ci0KICAgICBGbG9hdFBvaW50IHAxID0gcG9pbnQxOwogICAgIEZsb2F0UG9pbnQgcDIgPSBw
b2ludDI7CiAgICAgYm9vbCBpc1ZlcnRpY2FsTGluZSA9IChwMS54KCkgPT0gcDIueCgpKTsKQEAg
LTY0Myw4ICs2MzQsNiBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd0xpbmVGb3JUZXh0Q2hl
CiAgICAgaWYgKHBhaW50aW5nRGlzYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgcGxh
dGZvcm1Db250ZXh0KCktPm1ha2VHckNvbnRleHRDdXJyZW50KCk7Ci0KICAgICAvLyBDcmVhdGUg
dGhlIHBhdHRlcm4gd2UnbGwgdXNlIHRvIGRyYXcgdGhlIHVuZGVybGluZS4KICAgICBzdGF0aWMg
U2tCaXRtYXAqIG1pc3NwZWxsQml0bWFwID0gMDsKICAgICBpZiAoIW1pc3NwZWxsQml0bWFwKSB7
CkBAIC03MjUsOCArNzE0LDYgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmRyYXdMaW5lRm9yVGV4
dChjbwogICAgIGlmICh3aWR0aCA8PSAwKQogICAgICAgICByZXR1cm47CiAKLSAgICBwbGF0Zm9y
bUNvbnRleHQoKS0+bWFrZUdyQ29udGV4dEN1cnJlbnQoKTsKLQogICAgIGludCB0aGlja25lc3Mg
PSBTa01heDMyKHN0YXRpY19jYXN0PGludD4oc3Ryb2tlVGhpY2tuZXNzKCkpLCAxKTsKICAgICBT
a1JlY3QgcjsKICAgICByLmZMZWZ0ID0gV2ViQ29yZUZsb2F0VG9Ta1NjYWxhcihwdC54KCkpOwpA
QCAtNzQ3LDggKzczNCw2IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3UmVjdChjb25zdCBJ
bnQKICAgICBpZiAocGFpbnRpbmdEaXNhYmxlZCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBw
bGF0Zm9ybUNvbnRleHQoKS0+bWFrZUdyQ29udGV4dEN1cnJlbnQoKTsKLQogICAgIFNrUmVjdCBy
ID0gcmVjdDsKICAgICBpZiAoIWlzUmVjdFNraWFTYWZlKGdldENUTSgpLCByKSkgewogICAgICAg
ICAvLyBTZWUgdGhlIGZpbGxSZWN0IGJlbG93LgpAQCAtNzY3LDggKzc1Miw2IEBAIHZvaWQgR3Jh
cGhpY3NDb250ZXh0OjpmaWxsUGF0aChjb25zdCBQYXQKICAgICBpZiAoIWlzUGF0aFNraWFTYWZl
KGdldENUTSgpLCBwYXRoKSkKICAgICAgIHJldHVybjsKIAotICAgIHBsYXRmb3JtQ29udGV4dCgp
LT5tYWtlR3JDb250ZXh0Q3VycmVudCgpOwotCiAgICAgY29uc3QgR3JhcGhpY3NDb250ZXh0U3Rh
dGUmIHN0YXRlID0gbV9zdGF0ZTsKICAgICBwYXRoLnNldEZpbGxUeXBlKHN0YXRlLmZpbGxSdWxl
ID09IFJVTEVfRVZFTk9ERCA/CiAgICAgICAgIFNrUGF0aDo6a0V2ZW5PZGRfRmlsbFR5cGUgOiBT
a1BhdGg6OmtXaW5kaW5nX0ZpbGxUeXBlKTsKQEAgLTc5Miw4ICs3NzUsNiBAQCB2b2lkIEdyYXBo
aWNzQ29udGV4dDo6ZmlsbFJlY3QoY29uc3QgRmxvCiAKICAgICBwbGF0Zm9ybUNvbnRleHQoKS0+
c2F2ZSgpOwogCi0gICAgcGxhdGZvcm1Db250ZXh0KCktPm1ha2VHckNvbnRleHRDdXJyZW50KCk7
Ci0KICAgICBTa1BhaW50IHBhaW50OwogICAgIHBsYXRmb3JtQ29udGV4dCgpLT5zZXR1cFBhaW50
Rm9yRmlsbGluZygmcGFpbnQpOwogICAgIHBsYXRmb3JtQ29udGV4dCgpLT5jYW52YXMoKS0+ZHJh
d1JlY3QociwgcGFpbnQpOwpAQCAtODA2LDggKzc4Nyw2IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0
OjpmaWxsUmVjdChjb25zdCBGbG8KICAgICBpZiAocGFpbnRpbmdEaXNhYmxlZCgpKQogICAgICAg
ICByZXR1cm47CiAKLSAgICBwbGF0Zm9ybUNvbnRleHQoKS0+bWFrZUdyQ29udGV4dEN1cnJlbnQo
KTsKLQogICAgIFNrUmVjdCByID0gcmVjdDsKICAgICBpZiAoIWlzUmVjdFNraWFTYWZlKGdldENU
TSgpLCByKSkgewogICAgICAgICAvLyBTcGVjaWFsIGNhc2Ugd2hlbiB0aGUgcmVjdGFuZ2xlIG92
ZXJmbG93cyBmaXhlZCBwb2ludC4gVGhpcyBpcyBhCkBAIC04NDAsOCArODE5LDYgQEAgdm9pZCBH
cmFwaGljc0NvbnRleHQ6OmZpbGxSb3VuZGVkUmVjdChjbwogICAgIGlmIChwYWludGluZ0Rpc2Fi
bGVkKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIHBsYXRmb3JtQ29udGV4dCgpLT5tYWtlR3JD
b250ZXh0Q3VycmVudCgpOwotCiAgICAgU2tSZWN0IHIgPSByZWN0OwogICAgIGlmICghaXNSZWN0
U2tpYVNhZmUoZ2V0Q1RNKCksIHIpKQogICAgICAgICAvLyBTZWUgZmlsbFJlY3QoKS4KQEAgLTEx
MjksOCArMTEwNiw2IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpzdHJva2VBcmMoY29uc3QgSW4K
ICAgICBpZiAocGFpbnRpbmdEaXNhYmxlZCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBwbGF0
Zm9ybUNvbnRleHQoKS0+bWFrZUdyQ29udGV4dEN1cnJlbnQoKTsKLQogICAgIFNrUGFpbnQgcGFp
bnQ7CiAgICAgU2tSZWN0IG92YWwgPSByOwogICAgIGlmIChzdHJva2VTdHlsZSgpID09IE5vU3Ry
b2tlKSB7CkBAIC0xMTYyLDggKzExMzcsNiBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6c3Ryb2tl
UGF0aChjb25zdCBQCiAgICAgaWYgKCFpc1BhdGhTa2lhU2FmZShnZXRDVE0oKSwgcGF0aCkpCiAg
ICAgICAgIHJldHVybjsKIAotICAgIHBsYXRmb3JtQ29udGV4dCgpLT5tYWtlR3JDb250ZXh0Q3Vy
cmVudCgpOwotCiAgICAgU2tQYWludCBwYWludDsKICAgICBwbGF0Zm9ybUNvbnRleHQoKS0+c2V0
dXBQYWludEZvclN0cm9raW5nKCZwYWludCwgMCwgMCk7CiAgICAgcGxhdGZvcm1Db250ZXh0KCkt
PmNhbnZhcygpLT5kcmF3UGF0aChwYXRoLCBwYWludCk7CkBAIC0xMTc3LDggKzExNTAsNiBAQCB2
b2lkIEdyYXBoaWNzQ29udGV4dDo6c3Ryb2tlUmVjdChjb25zdCBGCiAgICAgaWYgKCFpc1JlY3RT
a2lhU2FmZShnZXRDVE0oKSwgcmVjdCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIHBsYXRmb3Jt
Q29udGV4dCgpLT5tYWtlR3JDb250ZXh0Q3VycmVudCgpOwotCiAgICAgU2tQYWludCBwYWludDsK
ICAgICBwbGF0Zm9ybUNvbnRleHQoKS0+c2V0dXBQYWludEZvclN0cm9raW5nKCZwYWludCwgMCwg
MCk7CiAgICAgcGFpbnQuc2V0U3Ryb2tlV2lkdGgoV2ViQ29yZUZsb2F0VG9Ta1NjYWxhcihsaW5l
V2lkdGgpKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3NraWEvSW1h
Z2VCdWZmZXJTa2lhLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9za2lhL0ltYWdlQnVmZmVyU2tpYS5jcHAJKHJldmlzaW9uIDk1MTg1KQorKysgU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9JbWFnZUJ1ZmZlclNraWEuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC04Niw3ICs4Niw2IEBAIEltYWdlQnVmZmVyOjpJbWFnZUJ1ZmZlcihj
b25zdCBJbnRTaXplJgogICAgIGlmIChyZW5kZXJpbmdNb2RlID09IEFjY2VsZXJhdGVkKSB7CiAg
ICAgICAgIEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0M0QgPSBTaGFyZWRHcmFwaGljc0NvbnRl
eHQzRDo6Y3JlYXRlKDApOwogICAgICAgICBpZiAoY29udGV4dDNEKSB7Ci0gICAgICAgICAgICBj
b250ZXh0M0QtPm1ha2VDb250ZXh0Q3VycmVudCgpOwogICAgICAgICAgICAgR3JDb250ZXh0KiBn
ciA9IGNvbnRleHQzRC0+Z3JDb250ZXh0KCk7CiAgICAgICAgICAgICBpZiAoZ3IpIHsKICAgICAg
ICAgICAgICAgICBnci0+cmVzZXRDb250ZXh0KCk7CkBAIC0xMTgsMTAgKzExNyw2IEBAIEltYWdl
QnVmZmVyOjp+SW1hZ2VCdWZmZXIoKQogICAgIGlmIChtX2RhdGEubV9wbGF0Zm9ybUxheWVyKQog
ICAgICAgICBtX2RhdGEubV9wbGF0Zm9ybUxheWVyLT5zZXRUZXh0dXJlSWQoMCk7CiAjZW5kaWYK
LSAgICBpZiAobV9jb250ZXh0ICYmIG1fY29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCkpIHsKLSAg
ICAgICAgLy8gVGhpcyBpcyBzbyB0aGF0IHRoZSBTa0dwdURldmljZSBkZXN0cnVjdG9yIGhhcyB0
aGUgY29ycmVjdCBjb250ZXh0LgotICAgICAgICBtX2NvbnRleHQtPnBsYXRmb3JtQ29udGV4dCgp
LT5tYWtlR3JDb250ZXh0Q3VycmVudCgpOwotICAgIH0KIH0KIAogR3JhcGhpY3NDb250ZXh0KiBJ
bWFnZUJ1ZmZlcjo6Y29udGV4dCgpIGNvbnN0CkBAIC0xMzcsNyArMTMyLDYgQEAgc2l6ZV90IElt
YWdlQnVmZmVyOjpkYXRhU2l6ZSgpIGNvbnN0CiBQYXNzUmVmUHRyPEltYWdlPiBJbWFnZUJ1ZmZl
cjo6Y29weUltYWdlKEJhY2tpbmdTdG9yZUNvcHkgY29weUJlaGF2aW9yKSBjb25zdAogewogICAg
IEFTU0VSVChjb3B5QmVoYXZpb3IgPT0gQ29weUJhY2tpbmdTdG9yZSk7Ci0gICAgbV9jb250ZXh0
LT5wbGF0Zm9ybUNvbnRleHQoKS0+bWFrZUdyQ29udGV4dEN1cnJlbnQoKTsKICAgICByZXR1cm4g
Qml0bWFwSW1hZ2VTaW5nbGVGcmFtZVNraWE6OmNyZWF0ZSgqbV9kYXRhLm1fcGxhdGZvcm1Db250
ZXh0LmJpdG1hcCgpLCB0cnVlKTsKIH0KIApAQCAtMTU0LDE0ICsxNDgsNiBAQCB2b2lkIEltYWdl
QnVmZmVyOjpjbGlwKEdyYXBoaWNzQ29udGV4dCoKIHZvaWQgSW1hZ2VCdWZmZXI6OmRyYXcoR3Jh
cGhpY3NDb250ZXh0KiBjb250ZXh0LCBDb2xvclNwYWNlIHN0eWxlQ29sb3JTcGFjZSwgY29uc3Qg
RmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LAogICAgICAgICAg
ICAgICAgICAgICAgICBDb21wb3NpdGVPcGVyYXRvciBvcCwgYm9vbCB1c2VMb3dRdWFsaXR5U2Nh
bGUpCiB7Ci0gICAgLy8gU2V0IGJvdGggZ3JhcGhpY3MgY29udGV4dHMgY3VycmVudC4gVGhpcyBs
b29rcyBhIGxpdHRsZSB3ZWlyZCwgYnV0IGlzCi0gICAgLy8gbmVjZXNzYXJ5IHNpbmNlIHdlIG1h
eSBiZSBkcmF3aW5nIGZyb20gYW4gYWNjZWxlcmF0ZWQgdG8KLSAgICAvLyBub24tYWNjZWxlcmF0
ZWQgY29udGV4dCAoZS5nLiwgcHJpbnRpbmcpLCBvciB2aWNlIHZlcnNhLiBOb3RlIHRoYXQgaXQK
LSAgICAvLyBvbmx5IHdvcmtzIGJlY2F1c2UgdGhlIGNvbnRleHQgaXMgYWN0dWFsbHkgdGhlIHNh
bWUgdW5kZXJseWluZyBjb250ZXh0Ci0gICAgLy8gKG9yIG51bGwpLCBzaW5jZSB3ZSB1c2Ugb25l
IGNvbnRleHQgZm9yIGFjY2VsZXJhdGVkIGRyYXdpbmcuIElmIHRoYXQKLSAgICAvLyBhc3N1bXB0
aW9uIGNoYW5nZXMsIHdlJ2xsIGhhdmUgdG8gcmV2aXNpdCB0aGlzIGNvZGUuCi0gICAgY29udGV4
dC0+cGxhdGZvcm1Db250ZXh0KCktPm1ha2VHckNvbnRleHRDdXJyZW50KCk7Ci0gICAgbV9jb250
ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKS0+bWFrZUdyQ29udGV4dEN1cnJlbnQoKTsKICAgICBSZWZQ
dHI8SW1hZ2U+IGltYWdlID0gQml0bWFwSW1hZ2VTaW5nbGVGcmFtZVNraWE6OmNyZWF0ZSgqbV9k
YXRhLm1fcGxhdGZvcm1Db250ZXh0LmJpdG1hcCgpLCBjb250ZXh0ID09IG1fY29udGV4dCk7CiAg
ICAgY29udGV4dC0+ZHJhd0ltYWdlKGltYWdlLmdldCgpLCBzdHlsZUNvbG9yU3BhY2UsIGRlc3RS
ZWN0LCBzcmNSZWN0LCBvcCwgdXNlTG93UXVhbGl0eVNjYWxlKTsKIH0KQEAgLTE2OSw3ICsxNTUs
NiBAQCB2b2lkIEltYWdlQnVmZmVyOjpkcmF3KEdyYXBoaWNzQ29udGV4dCoKIHZvaWQgSW1hZ2VC
dWZmZXI6OmRyYXdQYXR0ZXJuKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgRmxvYXRS
ZWN0JiBzcmNSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0sCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgQ29s
b3JTcGFjZSBzdHlsZUNvbG9yU3BhY2UsIENvbXBvc2l0ZU9wZXJhdG9yIG9wLCBjb25zdCBGbG9h
dFJlY3QmIGRlc3RSZWN0KQogewotICAgIGNvbnRleHQtPnBsYXRmb3JtQ29udGV4dCgpLT5tYWtl
R3JDb250ZXh0Q3VycmVudCgpOwogICAgIFJlZlB0cjxJbWFnZT4gaW1hZ2UgPSBCaXRtYXBJbWFn
ZVNpbmdsZUZyYW1lU2tpYTo6Y3JlYXRlKCptX2RhdGEubV9wbGF0Zm9ybUNvbnRleHQuYml0bWFw
KCksIGNvbnRleHQgPT0gbV9jb250ZXh0KTsKICAgICBpbWFnZS0+ZHJhd1BhdHRlcm4oY29udGV4
dCwgc3JjUmVjdCwgcGF0dGVyblRyYW5zZm9ybSwgcGhhc2UsIHN0eWxlQ29sb3JTcGFjZSwgb3As
IGRlc3RSZWN0KTsKIH0KQEAgLTI4NiwxMyArMjcxLDExIEBAIFBhc3NSZWZQdHI8Qnl0ZUFycmF5
PiBnZXRJbWFnZURhdGEoY29uc3QKIAogUGFzc1JlZlB0cjxCeXRlQXJyYXk+IEltYWdlQnVmZmVy
OjpnZXRVbm11bHRpcGxpZWRJbWFnZURhdGEoY29uc3QgSW50UmVjdCYgcmVjdCkgY29uc3QKIHsK
LSAgICBtX2NvbnRleHQtPnBsYXRmb3JtQ29udGV4dCgpLT5tYWtlR3JDb250ZXh0Q3VycmVudCgp
OwogICAgIHJldHVybiBnZXRJbWFnZURhdGE8VW5tdWx0aXBsaWVkPihyZWN0LCAqY29udGV4dCgp
LT5wbGF0Zm9ybUNvbnRleHQoKS0+Y2FudmFzKCktPmdldERldmljZSgpLCBtX3NpemUpOwogfQog
CiBQYXNzUmVmUHRyPEJ5dGVBcnJheT4gSW1hZ2VCdWZmZXI6OmdldFByZW11bHRpcGxpZWRJbWFn
ZURhdGEoY29uc3QgSW50UmVjdCYgcmVjdCkgY29uc3QKIHsKLSAgICBtX2NvbnRleHQtPnBsYXRm
b3JtQ29udGV4dCgpLT5tYWtlR3JDb250ZXh0Q3VycmVudCgpOwogICAgIHJldHVybiBnZXRJbWFn
ZURhdGE8UHJlbXVsdGlwbGllZD4ocmVjdCwgKmNvbnRleHQoKS0+cGxhdGZvcm1Db250ZXh0KCkt
PmNhbnZhcygpLT5nZXREZXZpY2UoKSwgbV9zaXplKTsKIH0KIApAQCAtMzY3LDEzICszNTAsMTEg
QEAgdm9pZCBwdXRJbWFnZURhdGEoQnl0ZUFycmF5KiYgc291cmNlLCBjbwogCiB2b2lkIEltYWdl
QnVmZmVyOjpwdXRVbm11bHRpcGxpZWRJbWFnZURhdGEoQnl0ZUFycmF5KiBzb3VyY2UsIGNvbnN0
IEludFNpemUmIHNvdXJjZVNpemUsIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IElu
dFBvaW50JiBkZXN0UG9pbnQpCiB7Ci0gICAgbV9jb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKS0+
bWFrZUdyQ29udGV4dEN1cnJlbnQoKTsKICAgICBwdXRJbWFnZURhdGE8VW5tdWx0aXBsaWVkPihz
b3VyY2UsIHNvdXJjZVNpemUsIHNvdXJjZVJlY3QsIGRlc3RQb2ludCwgY29udGV4dCgpLT5wbGF0
Zm9ybUNvbnRleHQoKS0+Y2FudmFzKCktPmdldERldmljZSgpLCBtX3NpemUpOwogfQogCiB2b2lk
IEltYWdlQnVmZmVyOjpwdXRQcmVtdWx0aXBsaWVkSW1hZ2VEYXRhKEJ5dGVBcnJheSogc291cmNl
LCBjb25zdCBJbnRTaXplJiBzb3VyY2VTaXplLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBj
b25zdCBJbnRQb2ludCYgZGVzdFBvaW50KQogewotICAgIG1fY29udGV4dC0+cGxhdGZvcm1Db250
ZXh0KCktPm1ha2VHckNvbnRleHRDdXJyZW50KCk7CiAgICAgcHV0SW1hZ2VEYXRhPFByZW11bHRp
cGxpZWQ+KHNvdXJjZSwgc291cmNlU2l6ZSwgc291cmNlUmVjdCwgZGVzdFBvaW50LCBjb250ZXh0
KCktPnBsYXRmb3JtQ29udGV4dCgpLT5jYW52YXMoKS0+Z2V0RGV2aWNlKCksIG1fc2l6ZSk7CiB9
CiAKQEAgLTQwMyw3ICszODQsNiBAQCBzdGF0aWMgU3RyaW5nIEltYWdlVG9EYXRhVVJMKFQmIHNv
dXJjZSwKIAogU3RyaW5nIEltYWdlQnVmZmVyOjp0b0RhdGFVUkwoY29uc3QgU3RyaW5nJiBtaW1l
VHlwZSwgY29uc3QgZG91YmxlKiBxdWFsaXR5KSBjb25zdAogewotICAgIG1fY29udGV4dC0+cGxh
dGZvcm1Db250ZXh0KCktPm1ha2VHckNvbnRleHRDdXJyZW50KCk7CiAgICAgU2tEZXZpY2UqIGRl
dmljZSA9IGNvbnRleHQoKS0+cGxhdGZvcm1Db250ZXh0KCktPmNhbnZhcygpLT5nZXREZXZpY2Uo
KTsKICAgICByZXR1cm4gSW1hZ2VUb0RhdGFVUkwoZGV2aWNlLT5hY2Nlc3NCaXRtYXAoZmFsc2Up
LCBtaW1lVHlwZSwgcXVhbGl0eSk7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9za2lhL0ltYWdlU2tpYS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9JbWFnZVNraWEuY3BwCShyZXZpc2lvbiA5NTE4NSkKKysr
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3NraWEvSW1hZ2VTa2lhLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNDIyLDggKzQyMiw2IEBAIHZvaWQgQml0bWFwSW1hZ2U6OmRyYXcoR3Jh
cGhpY3NDb250ZXh0KgogICAgIGlmIChub3JtU3JjUmVjdC5pc0VtcHR5KCkgfHwgbm9ybURzdFJl
Y3QuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm47ICAvLyBOb3RoaW5nIHRvIGRyYXcuCiAKLSAg
ICBjdHh0LT5wbGF0Zm9ybUNvbnRleHQoKS0+bWFrZUdyQ29udGV4dEN1cnJlbnQoKTsKLQogICAg
IHBhaW50U2tCaXRtYXAoY3R4dC0+cGxhdGZvcm1Db250ZXh0KCksCiAgICAgICAgICAgICAgICAg
ICAqYm0sCiAgICAgICAgICAgICAgICAgICBlbmNsb3NpbmdJbnRSZWN0KG5vcm1TcmNSZWN0KSwK
QEAgLTQ0OCw4ICs0NDYsNiBAQCB2b2lkIEJpdG1hcEltYWdlU2luZ2xlRnJhbWVTa2lhOjpkcmF3
KEdyCiAgICAgaWYgKG5vcm1TcmNSZWN0LmlzRW1wdHkoKSB8fCBub3JtRHN0UmVjdC5pc0VtcHR5
KCkpCiAgICAgICAgIHJldHVybjsgIC8vIE5vdGhpbmcgdG8gZHJhdy4KIAotICAgIGN0eHQtPnBs
YXRmb3JtQ29udGV4dCgpLT5tYWtlR3JDb250ZXh0Q3VycmVudCgpOwotCiAgICAgcGFpbnRTa0Jp
dG1hcChjdHh0LT5wbGF0Zm9ybUNvbnRleHQoKSwKICAgICAgICAgICAgICAgICAgIG1fbmF0aXZl
SW1hZ2UsCiAgICAgICAgICAgICAgICAgICBlbmNsb3NpbmdJbnRSZWN0KG5vcm1TcmNSZWN0KSwK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3NraWEvUGxhdGZvcm1Db250
ZXh0U2tpYS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvc2tpYS9QbGF0Zm9ybUNvbnRleHRTa2lhLmNwcAkocmV2aXNpb24gOTUxODUpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9za2lhL1BsYXRmb3JtQ29udGV4dFNraWEuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0yNjcsNyArMjY3LDYgQEAgdm9pZCBQbGF0Zm9ybUNvbnRleHRT
a2lhOjpiZWdpbkxheWVyQ2xpcAogCiB2b2lkIFBsYXRmb3JtQ29udGV4dFNraWE6OmNsaXBQYXRo
QW50aUFsaWFzZWQoY29uc3QgU2tQYXRoJiBjbGlwUGF0aCkKIHsKLSAgICBtYWtlR3JDb250ZXh0
Q3VycmVudCgpOwogICAgIGlmIChtX2NhbnZhcy0+Z2V0VG9wRGV2aWNlKCktPmdldERldmljZUNh
cGFiaWxpdGllcygpICYgU2tEZXZpY2U6OmtWZWN0b3JfQ2FwYWJpbGl0eSkgewogICAgICAgICAv
LyBXaGVuIHRoZSBvdXRwdXQgaXMgYSB2ZWN0b3IgZGV2aWNlLCBsaWtlIFBERiwgd2UgZG9uJ3Qg
bmVlZCBhbnRpYWxpYXNlZCBjbGlwcy4KICAgICAgICAgLy8gSXQncyB1cCB0byB0aGUgUERGIHJl
bmRlcmluZyBlbmdpbmUgdG8gZG8gdGhhdC4gV2UgY2FuIHNpbXBseSBkaXNhYmxlIHRoZQpAQCAt
NjU2LDEwICs2NTUsNCBAQCB2b2lkIFBsYXRmb3JtQ29udGV4dFNraWE6OnNldEdyYXBoaWNzQ29u
CiAgICAgbV9ncHVDb250ZXh0ID0gY29udGV4dDsKIH0KIAotdm9pZCBQbGF0Zm9ybUNvbnRleHRT
a2lhOjptYWtlR3JDb250ZXh0Q3VycmVudCgpCi17Ci0gICAgaWYgKG1fZ3B1Q29udGV4dCkKLSAg
ICAgICAgbV9ncHVDb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKTsKLX0KLQogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc2tp
YS9QbGF0Zm9ybUNvbnRleHRTa2lhLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvc2tpYS9QbGF0Zm9ybUNvbnRleHRTa2lhLmgJKHJldmlzaW9uIDk1MTg1
KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9QbGF0Zm9ybUNvbnRl
eHRTa2lhLmgJKHdvcmtpbmcgY29weSkKQEAgLTE3NCw3ICsxNzQsNiBAQCBwdWJsaWM6CiAKICAg
ICBib29sIGlzQWNjZWxlcmF0ZWQoKSBjb25zdCB7IHJldHVybiBtX2dwdUNvbnRleHQ7IH0KICAg
ICB2b2lkIHNldEdyYXBoaWNzQ29udGV4dDNEKEdyYXBoaWNzQ29udGV4dDNEKik7Ci0gICAgdm9p
ZCBtYWtlR3JDb250ZXh0Q3VycmVudCgpOwogCiBwcml2YXRlOgogICAgIC8vIFVzZWQgd2hlbiBy
ZXN0b3JpbmcgYW5kIHRoZSBzdGF0ZSBoYXMgYW4gaW1hZ2UgY2xpcC4gT25seSBzaG93cyB0aGUg
cGl4ZWxzIGluCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9za2lhL1Nr
aWFGb250V2luLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9za2lhL1NraWFGb250V2luLmNwcAkocmV2aXNpb24gOTUxODUpCisrKyBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9za2lhL1NraWFGb250V2luLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMTgzLDkgKzE4Myw2IEBAIHZvaWQgcGFpbnRTa2lhVGV4dChHcmFwaGljc0NvbnRleHQq
IGNvbnQKICAgICBTa0NhbnZhcyogY2FudmFzID0gcGxhdGZvcm1Db250ZXh0LT5jYW52YXMoKTsK
ICAgICBUZXh0RHJhd2luZ01vZGVGbGFncyB0ZXh0TW9kZSA9IHBsYXRmb3JtQ29udGV4dC0+Z2V0
VGV4dERyYXdpbmdNb2RlKCk7CiAKLSAgICAvLyBJZiBwbGF0Zm9ybUNvbnRleHQgaXMgR1BVLWJh
Y2tlZCBtYWtlIGl0cyBHTCBjb250ZXh0IGN1cnJlbnQuCi0gICAgcGxhdGZvcm1Db250ZXh0LT5t
YWtlR3JDb250ZXh0Q3VycmVudCgpOwotCiAgICAgLy8gRmlsbGluZyAoaWYgbmVjZXNzYXJ5KS4g
VGhpcyBpcyB0aGUgY29tbW9uIGNhc2UuCiAgICAgU2tQYWludCBwYWludDsKICAgICBwbGF0Zm9y
bUNvbnRleHQtPnNldHVwUGFpbnRGb3JGaWxsaW5nKCZwYWludCk7CkluZGV4OiBTb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL0NoYW5nZUxvZwkocmV2aXNpb24gOTUxODUpCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVt
L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIwIEBACisyMDExLTA5LTE1ICBC
cmlhbiBTYWxvbW9uICA8YnNhbG9tb25AZ29vZ2xlLmNvbT4KKworICAgICAgICBbU2tpYS9DaHJv
bWVdIAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Njgw
OTYKKworICAgICAgICBUaGlzIGNoYW5nZSByZW1vdmVzIFdlYkdyYXBoaWNzQ29udGV4dDNEOjpn
ckdMSW50ZXJmYWNlKCkuIEl0IGhhcyBiZWVuCisgICAgICAgIHN1cGVyY2VkZWQgYnkgV2ViR3Jh
cGhpY3NDb250ZXh0M0Q6OmNyZWF0ZUdyR0xJbnRlcmZhY2Ugd2hpY2ggc2V0cyB1cAorICAgICAg
ICB0aGUgcGVyLUdMIGNhbGwgY2FsbGJhY2sgdXNlZCB0byBzZXQgdGhlIGNvcnJlY3QgY29udGV4
dC4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHB1
YmxpYy9XZWJHcmFwaGljc0NvbnRleHQzRC5oOgorICAgICAgICAqIHNyYy9HcmFwaGljc0NvbnRl
eHQzRENocm9taXVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEUHJp
dmF0ZTo6Z3JDb250ZXh0KToKKyAgICAgICAgKiBzcmMvV2ViR3JhcGhpY3NDb250ZXh0M0QuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpXZWJHcmFwaGljc0NvbnRleHQzRDo6Y3JlYXRlR3JHTEludGVy
ZmFjZSk6CisKIDIwMTEtMDktMTQgIEhhbyBaaGVuZyAgPHpoZW5naGFvQGNocm9taXVtLm9yZz4K
IAogICAgICAgICBSZW1vdmUgc29tZSBkZXBlbmRlbmNpZXMgb2YgRFJUIGZvciBBbmRyb2lkLgpJ
bmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViR3JhcGhpY3NDb250ZXh0M0Qu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJHcmFwaGlj
c0NvbnRleHQzRC5oCShyZXZpc2lvbiA5NTE4NSkKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0v
cHVibGljL1dlYkdyYXBoaWNzQ29udGV4dDNELmgJKHdvcmtpbmcgY29weSkKQEAgLTM2Niw5ICsz
NjYsNiBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBXR0MzRGVudW0gZ2V0R3JhcGhpY3NSZXNldFN0
YXR1c0FSQigpIHsgcmV0dXJuIDA7IC8qIEdMX05PX0VSUk9SICovIH0KIAogI2lmIFdFQktJVF9V
U0lOR19TS0lBCi0gICAgLy8gRklYTUU6IFRoaXMgZnVuY3Rpb24gaXMgc3VwZXJjZWRlZCBieSBv
bkNyZWF0ZUdyR0xJbnRlcmZhY2UuIEl0IHNob3VsZCBiZSByZW1vdmVkIGFmdGVyIHN1YmNsYXNz
IGltcGxlbWVudGF0aW9ucyBhcmUgcmVtb3ZlZCBmcm9tIENocm9taXVtLgotICAgIHZpcnR1YWwg
R3JHTEludGVyZmFjZSogZ3JHTEludGVyZmFjZSgpIHsgcmV0dXJuIDA7IH0KLQogICAgIEdyR0xJ
bnRlcmZhY2UqIGNyZWF0ZUdyR0xJbnRlcmZhY2UoKTsKICNlbmRpZgogCkluZGV4OiBTb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9HcmFwaGljc0NvbnRleHQzRENocm9taXVtLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9HcmFwaGljc0NvbnRleHQzRENocm9t
aXVtLmNwcAkocmV2aXNpb24gOTUxODUpCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9H
cmFwaGljc0NvbnRleHQzRENocm9taXVtLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjAyLDE1ICsy
MDIsNiBAQCBHckNvbnRleHQqIEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6Z3JDCiAKICAgICBp
ZiAoIW1fZ3JDb250ZXh0KSB7CiAgICAgICAgIFNrQXV0b1RVbnJlZjxHckdMSW50ZXJmYWNlPiBp
bnRlcmZhY2UobV9pbXBsLT5jcmVhdGVHckdMSW50ZXJmYWNlKCkpOwotICAgICAgICAvLyBGSVhN
RTogUmVtb3ZlIHRoaXMgYmxvY2sgYWZ0ZXIgdGhlIFdlYkdyYXBoaWNzQ29udGV4dDNEIHN1YmNs
YXNzZXMgaW4gQ2hyb21pdW0gbm8gbG9uZ2VyIG92ZXJyaWRlIGdyR0xJbnRlcmZhY2UoKS4KLSAg
ICAgICAgaWYgKCFpbnRlcmZhY2UuZ2V0KCkpIHsKLSAgICAgICAgICAgIEdyR0xJbnRlcmZhY2Uq
IGZhbGxiYWNrSW50ZXJmYWNlID0gbV9pbXBsLT5nckdMSW50ZXJmYWNlKCk7Ci0gICAgICAgICAg
ICBpZiAoZmFsbGJhY2tJbnRlcmZhY2UpIHsKLSAgICAgICAgICAgICAgICBmYWxsYmFja0ludGVy
ZmFjZS0+cmVmKCk7IC8vIGJhbGFuY2Ugb3V0IHRoZSBTa0F1dG9UVW5yZWYKLSAgICAgICAgICAg
ICAgICBpbnRlcmZhY2UucmVzZXQoZmFsbGJhY2tJbnRlcmZhY2UpOwotICAgICAgICAgICAgfQot
ICAgICAgICB9Ci0gICAgICAgIC8vIFRoaXMgaXMgdGhlIGVuZCBvZiB0aGUgYmxvY2sgdG8gcmVt
b3ZlLgogICAgICAgICBtX2dyQ29udGV4dCA9IEdyQ29udGV4dDo6Q3JlYXRlKGtPcGVuR0xfU2hh
ZGVyc19HckVuZ2luZSwgcmVpbnRlcnByZXRfY2FzdDxHclBsYXRmb3JtM0RDb250ZXh0PihpbnRl
cmZhY2UuZ2V0KCkpKTsKICAgICAgICAgaWYgKG1fZ3JDb250ZXh0KQogICAgICAgICAgICAgbV9n
ckNvbnRleHQtPnNldFRleHR1cmVDYWNoZUxpbWl0cyhtYXhUZXh0dXJlQ2FjaGVDb3VudCwgbWF4
VGV4dHVyZUNhY2hlQnl0ZXMpOwpJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2Vi
R3JhcGhpY3NDb250ZXh0M0QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21p
dW0vc3JjL1dlYkdyYXBoaWNzQ29udGV4dDNELmNwcAkocmV2aXNpb24gOTUxODUpCisrKyBTb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJHcmFwaGljc0NvbnRleHQzRC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTMyLDI0ICszMiwyMCBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIAogI2lmIFdFQktJ
VF9VU0lOR19TS0lBCiAKLSNpZiBHUl9HTF9QRVJfR0xfRlVOQ19DQUxMQkFDSwogbmFtZXNwYWNl
IHsKICAgICB2b2lkIGJpbmRXZWJHcmFwaGljc0NvbnRleHQzREdMQ29udGV4dENhbGxiYWNrKGNv
bnN0IEdyR0xJbnRlcmZhY2UqIGludGVyZmFjZSkKICAgICB7CiAgICAgICAgIHJlaW50ZXJwcmV0
X2Nhc3Q8V2ViR3JhcGhpY3NDb250ZXh0M0QqPihpbnRlcmZhY2UtPmZDYWxsYmFja0RhdGEpLT5t
YWtlQ29udGV4dEN1cnJlbnQoKTsKICAgICB9CiB9Ci0jZW5kaWYKIAogR3JHTEludGVyZmFjZSog
V2ViR3JhcGhpY3NDb250ZXh0M0Q6OmNyZWF0ZUdyR0xJbnRlcmZhY2UoKQogewogICAgIEdyR0xJ
bnRlcmZhY2UqIGludGVyZmFjZSA9IG9uQ3JlYXRlR3JHTEludGVyZmFjZSgpOwotI2lmIEdSX0dM
X1BFUl9HTF9GVU5DX0NBTExCQUNLCiAgICAgaWYgKGludGVyZmFjZSkgewogICAgICAgICBpbnRl
cmZhY2UtPmZDYWxsYmFjayA9IGJpbmRXZWJHcmFwaGljc0NvbnRleHQzREdMQ29udGV4dENhbGxi
YWNrOwogICAgICAgICBpbnRlcmZhY2UtPmZDYWxsYmFja0RhdGEgPSByZWludGVycHJldF9jYXN0
PEdyR0xJbnRlcmZhY2VDYWxsYmFja0RhdGE+KHRoaXMpOwogICAgIH0KLSNlbmRpZgogICAgIHJl
dHVybiBpbnRlcmZhY2U7CiB9CiAK
</data>

          </attachment>
      

    </bug>

</bugzilla>