<?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>73842</bug_id>
          
          <creation_ts>2011-12-05 10:32:10 -0800</creation_ts>
          <short_desc>Allow the ImageBuffers used by SVG filters to be accelerated</short_desc>
          <delta_ts>2022-01-19 12:49:12 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>SVG</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=235376</see_also>
          <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="Stephen White">senorblanco</reporter>
          <assigned_to name="Stephen White">senorblanco</assigned_to>
          <cc>dino</cc>
    
    <cc>fishd</cc>
    
    <cc>jamesr</cc>
    
    <cc>kbr</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>zherczeg</cc>
    
    <cc>zimmermann</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>515173</commentid>
    <comment_count>0</comment_count>
    <who name="Stephen White">senorblanco</who>
    <bug_when>2011-12-05 10:32:10 -0800</bug_when>
    <thetext>There should be a Setting to enable the ImageBuffers created for SVG filters to be created in Accelerated mode.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>515178</commentid>
    <comment_count>1</comment_count>
      <attachid>117898</attachid>
    <who name="Stephen White">senorblanco</who>
    <bug_when>2011-12-05 10:38:39 -0800</bug_when>
    <thetext>Created attachment 117898
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>515195</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-12-05 10:48:24 -0800</bug_when>
    <thetext>Please wait for approval from fishd@chromium.org before submitting because this patch contains changes to the Chromium public API.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>515208</commentid>
    <comment_count>3</comment_count>
      <attachid>117898</attachid>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2011-12-05 11:03:21 -0800</bug_when>
    <thetext>Comment on attachment 117898
Patch

WebKit API changes LGTM</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>515219</commentid>
    <comment_count>4</comment_count>
      <attachid>117903</attachid>
    <who name="Stephen White">senorblanco</who>
    <bug_when>2011-12-05 11:10:05 -0800</bug_when>
    <thetext>Created attachment 117903
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>515328</commentid>
    <comment_count>5</comment_count>
    <who name="Zoltan Herczeg">zherczeg</who>
    <bug_when>2011-12-05 13:01:06 -0800</bug_when>
    <thetext>What does this change exactly accelerate? It just sets a bool value...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>515344</commentid>
    <comment_count>6</comment_count>
    <who name="Stephen White">senorblanco</who>
    <bug_when>2011-12-05 13:26:36 -0800</bug_when>
    <thetext>reply to comment #5)
&gt; What does this change exactly accelerate? It just sets a bool value...

That bool value is used inside ImageBuffer in order to create GPU-based backing stores, and to do all draw operations using the GPU (on some ports).  This means the drawing of the initial SVG primitive is accelerated, as well as a number of FilterEffect nodes which use only GraphicsContext calls for drawing.

It also puts the infrastructure in place for acceleration of subsequent FE nodes, through additions to the GraphicsContext API.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>515428</commentid>
    <comment_count>7</comment_count>
      <attachid>117903</attachid>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2011-12-05 15:01:41 -0800</bug_when>
    <thetext>Comment on attachment 117903
Patch

This looks fine to me. One question: since the flag is exposed on a per-page basis, is there any issue with wanting finer grained control of acceleration? For example, GPU accelerating some filters but not others?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>515451</commentid>
    <comment_count>8</comment_count>
    <who name="Stephen White">senorblanco</who>
    <bug_when>2011-12-05 15:31:40 -0800</bug_when>
    <thetext>(In reply to comment #7)
&gt; (From update of attachment 117903 [details])
&gt; This looks fine to me. One question: since the flag is exposed on a per-page basis, is there any issue with wanting finer grained control of acceleration? For example, GPU accelerating some filters but not others?

Right now, the accelerated filters &quot;play well&quot; with the unaccelerated ones, in that a readback or upload is triggered as necessary, while consecutive accelerated filters will all stay on the GPU.  That said, as we accelerate more filters, we eliminate those readbacks, so I don&apos;t really see much benefit in allowing a port to re-introduce them selectively.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>515452</commentid>
    <comment_count>9</comment_count>
      <attachid>117903</attachid>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2011-12-05 15:34:11 -0800</bug_when>
    <thetext>Comment on attachment 117903
Patch

OK, this seems reasonable. r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>515519</commentid>
    <comment_count>10</comment_count>
    <who name="Dean Jackson">dino</who>
    <bug_when>2011-12-05 17:12:10 -0800</bug_when>
    <thetext>We&apos;ll (Apple&apos;ll) need to expose this via WebPreferences.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>515615</commentid>
    <comment_count>11</comment_count>
      <attachid>117903</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-12-05 20:16:46 -0800</bug_when>
    <thetext>Comment on attachment 117903
Patch

Clearing flags on attachment: 117903

Committed r102088: &lt;http://trac.webkit.org/changeset/102088&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>515616</commentid>
    <comment_count>12</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-12-05 20:16:51 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>117898</attachid>
            <date>2011-12-05 10:38:39 -0800</date>
            <delta_ts>2011-12-05 11:10:00 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-73842-20111205133838.patch</filename>
            <type>text/plain</type>
            <size>19941</size>
            <attacher name="Stephen White">senorblanco</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEwMjAxMCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ1IEBACisyMDExLTEyLTA1ICBTdGVwaGVu
IFdoaXRlICA8c2Vub3JibGFuY29AY2hyb21pdW0ub3JnPgorCisgICAgICAgIEFsbG93IHRoZSBJ
bWFnZUJ1ZmZlcnMgdXNlZCBieSBTVkcgZmlsdGVycyB0byBiZSBhY2NlbGVyYXRlZAorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzM4NDIKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZWdyZXNzaW9ucyBjb3Zl
cmVkIGJ5IGV4aXN0aW5nIFNWRyB0ZXN0czsgbmV3IGZ1bmN0aW9uYWxpdHkgdG8gYmUKKyAgICAg
ICAgdGVzdGVkIGJ5IHRoZSBBUEkgZXhwb3NlZCBvbiBJbnRlcm5hbHMuCisKKyAgICAgICAgKiBw
YWdlL1NldHRpbmdzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNldHRpbmdzOjpTZXR0aW5ncyk6
CisgICAgICAgICogcGFnZS9TZXR0aW5ncy5oOgorICAgICAgICAoV2ViQ29yZTo6U2V0dGluZ3M6
OnNldEFjY2VsZXJhdGVkRmlsdGVyc0VuYWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6U2V0dGlu
Z3M6OmFjY2VsZXJhdGVkRmlsdGVyc0VuYWJsZWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2ZpbHRlcnMvRkVUaWxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZFVGlsZTo6cGxhdGZv
cm1BcHBseVNvZnR3YXJlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0Zp
bHRlci5oOgorICAgICAgICAoV2ViQ29yZTo6RmlsdGVyOjpGaWx0ZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6RmlsdGVyOjpyZW5kZXJpbmdNb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OkZpbHRlcjo6
c2V0UmVuZGVyaW5nTW9kZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9G
aWx0ZXJFZmZlY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RmlsdGVyRWZmZWN0Ojphc0ltYWdl
QnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkZpbHRlckVmZmVjdDo6Y3JlYXRlSW1hZ2VCdWZm
ZXJSZXN1bHQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3NraWEvSW1hZ2VCdWZmZXJT
a2lhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyOjpwbGF0Zm9ybVRyYW5zZm9y
bUNvbG9yU3BhY2UpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VD
bGlwcGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1Jlc291cmNlQ2xpcHBlcjo6
YXBwbHlDbGlwcGluZ1RvQ29udGV4dCk6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJT
VkdSZXNvdXJjZUZpbHRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdSZXNvdXJj
ZUZpbHRlcjo6YXBwbHlSZXNvdXJjZSk6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJT
VkdSZXNvdXJjZU1hc2tlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdSZXNvdXJj
ZU1hc2tlcjo6YXBwbHlSZXNvdXJjZSk6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJT
VkdSZXNvdXJjZVBhdHRlcm4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHUmVzb3Vy
Y2VQYXR0ZXJuOjpjcmVhdGVUaWxlSW1hZ2UpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvU1ZH
SW1hZ2VCdWZmZXJUb29scy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdJbWFnZUJ1ZmZlclRv
b2xzOjpjcmVhdGVJbWFnZUJ1ZmZlcik6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9TVkdJbWFn
ZUJ1ZmZlclRvb2xzLmg6CisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SW50ZXJuYWxzOjpzZXRBY2NlbGVyYXRlZEZpbHRlcnNFbmFibGVkKToKKyAg
ICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5oOgorICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxz
LmlkbDoKKwogMjAxMS0xMi0wNSAgTWlraGFpbCBOYWdhbm92ICA8bW5hZ2Fub3ZAY2hyb21pdW0u
b3JnPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IFtDaHJvbWl1bV0gSGVhcCBwcm9maWxlciBz
aG91bGQgZGVzaWduYXRlIHdlYWsgcmVmZXJlbmNlcy4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Bh
Z2UvU2V0dGluZ3MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGlu
Z3MuY3BwCShyZXZpc2lvbiAxMDIwMDQpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdz
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTcwLDYgKzE3MCw3IEBAIFNldHRpbmdzOjpTZXR0aW5n
cyhQYWdlKiBwYWdlKQogICAgICwgbV9hbGxvd1NjcmlwdHNUb0Nsb3NlV2luZG93cyhmYWxzZSkK
ICAgICAsIG1fY2FudmFzVXNlc0FjY2VsZXJhdGVkRHJhd2luZyhmYWxzZSkKICAgICAsIG1fYWNj
ZWxlcmF0ZWREcmF3aW5nRW5hYmxlZChmYWxzZSkKKyAgICAsIG1fYWNjZWxlcmF0ZWRGaWx0ZXJz
RW5hYmxlZChmYWxzZSkKICAgICAvLyBGSVhNRTogVGhpcyBzaG91bGQgcmVhbGx5IGJlIGRpc2Fi
bGVkIGJ5IGRlZmF1bHQgYXMgaXQgbWFrZXMgcGxhdGZvcm1zIHRoYXQgZG9uJ3Qgc3VwcG9ydCB0
aGUgZmVhdHVyZSBkb3dubG9hZCBmaWxlcwogICAgIC8vIHRoZXkgY2FuJ3QgdXNlIGJ5LiBMZWF2
aW5nIGVuYWJsZWQgZm9yIG5vdyB0byBub3QgY2hhbmdlIGV4aXN0aW5nIGJlaGF2aW9yLgogICAg
ICwgbV9kb3dubG9hZGFibGVCaW5hcnlGb250c0VuYWJsZWQodHJ1ZSkKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3BhZ2UvU2V0dGluZ3MuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdl
L1NldHRpbmdzLmgJKHJldmlzaW9uIDEwMjAwNCkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0
dGluZ3MuaAkod29ya2luZyBjb3B5KQpAQCAtMzAxLDYgKzMwMSw5IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKICAgICAgICAgdm9pZCBzZXRBY2NlbGVyYXRlZERyYXdpbmdFbmFibGVkKGJvb2wgZW5h
YmxlZCkgeyBtX2FjY2VsZXJhdGVkRHJhd2luZ0VuYWJsZWQgPSBlbmFibGVkOyB9CiAgICAgICAg
IGJvb2wgYWNjZWxlcmF0ZWREcmF3aW5nRW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1fYWNjZWxl
cmF0ZWREcmF3aW5nRW5hYmxlZDsgfQogCisgICAgICAgIHZvaWQgc2V0QWNjZWxlcmF0ZWRGaWx0
ZXJzRW5hYmxlZChib29sIGVuYWJsZWQpIHsgbV9hY2NlbGVyYXRlZEZpbHRlcnNFbmFibGVkID0g
ZW5hYmxlZDsgfQorICAgICAgICBib29sIGFjY2VsZXJhdGVkRmlsdGVyc0VuYWJsZWQoKSBjb25z
dCB7IHJldHVybiBtX2FjY2VsZXJhdGVkRmlsdGVyc0VuYWJsZWQ7IH0KKwogICAgICAgICB2b2lk
IHNldEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdFbmFibGVkKGJvb2wpOwogICAgICAgICBib29sIGFj
Y2VsZXJhdGVkQ29tcG9zaXRpbmdFbmFibGVkKCkgY29uc3QgeyByZXR1cm4gbV9hY2NlbGVyYXRl
ZENvbXBvc2l0aW5nRW5hYmxlZDsgfQogCkBAIC01NzMsNiArNTc2LDcgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogICAgICAgICBib29sIG1fYWxsb3dTY3JpcHRzVG9DbG9zZVdpbmRvd3MgOiAxOwog
ICAgICAgICBib29sIG1fY2FudmFzVXNlc0FjY2VsZXJhdGVkRHJhd2luZyA6IDE7CiAgICAgICAg
IGJvb2wgbV9hY2NlbGVyYXRlZERyYXdpbmdFbmFibGVkIDogMTsKKyAgICAgICAgYm9vbCBtX2Fj
Y2VsZXJhdGVkRmlsdGVyc0VuYWJsZWQgOiAxOwogICAgICAgICBib29sIG1fZG93bmxvYWRhYmxl
QmluYXJ5Rm9udHNFbmFibGVkIDogMTsKICAgICAgICAgYm9vbCBtX3hzc0F1ZGl0b3JFbmFibGVk
IDogMTsKICAgICAgICAgYm9vbCBtX2FjY2VsZXJhdGVkQ29tcG9zaXRpbmdFbmFibGVkIDogMTsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVUaWxlLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJz
L0ZFVGlsZS5jcHAJKHJldmlzaW9uIDEwMjAwNCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2ZpbHRlcnMvRkVUaWxlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjcsNyArNjcs
NyBAQCB2b2lkIEZFVGlsZTo6cGxhdGZvcm1BcHBseVNvZnR3YXJlKCkKICAgICB9CiAKICAgICBP
d25QdHI8SW1hZ2VCdWZmZXI+IHRpbGVJbWFnZTsKLSAgICBpZiAoIVNWR0ltYWdlQnVmZmVyVG9v
bHM6OmNyZWF0ZUltYWdlQnVmZmVyKHRpbGVSZWN0LCB0aWxlUmVjdCwgdGlsZUltYWdlLCBDb2xv
clNwYWNlRGV2aWNlUkdCKSkKKyAgICBpZiAoIVNWR0ltYWdlQnVmZmVyVG9vbHM6OmNyZWF0ZUlt
YWdlQnVmZmVyKHRpbGVSZWN0LCB0aWxlUmVjdCwgdGlsZUltYWdlLCBDb2xvclNwYWNlRGV2aWNl
UkdCLCBmaWx0ZXIoKS0+cmVuZGVyaW5nTW9kZSgpKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAg
R3JhcGhpY3NDb250ZXh0KiB0aWxlSW1hZ2VDb250ZXh0ID0gdGlsZUltYWdlLT5jb250ZXh0KCk7
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlci5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMv
RmlsdGVyLmgJKHJldmlzaW9uIDEwMjAwNCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2ZpbHRlcnMvRmlsdGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTMyLDYgKzMyLDcgQEAg
Y2xhc3MgRmlsdGVyRWZmZWN0OwogCiBjbGFzcyBGaWx0ZXIgOiBwdWJsaWMgUmVmQ291bnRlZDxG
aWx0ZXI+IHsKIHB1YmxpYzoKKyAgICBGaWx0ZXIoKSA6IG1fcmVuZGVyaW5nTW9kZShVbmFjY2Vs
ZXJhdGVkKSB7IH0KICAgICB2aXJ0dWFsIH5GaWx0ZXIoKSB7IH0KIAogICAgIHZvaWQgc2V0U291
cmNlSW1hZ2UoUGFzc093blB0cjxJbWFnZUJ1ZmZlcj4gc291cmNlSW1hZ2UpIHsgbV9zb3VyY2VJ
bWFnZSA9IHNvdXJjZUltYWdlOyB9CkBAIC00MCw2ICs0MSw5IEBAIHB1YmxpYzoKICAgICBGbG9h
dFNpemUgZmlsdGVyUmVzb2x1dGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fZmlsdGVyUmVzb2x1dGlv
bjsgfQogICAgIHZvaWQgc2V0RmlsdGVyUmVzb2x1dGlvbihjb25zdCBGbG9hdFNpemUmIGZpbHRl
clJlc29sdXRpb24pIHsgbV9maWx0ZXJSZXNvbHV0aW9uID0gZmlsdGVyUmVzb2x1dGlvbjsgfQog
CisgICAgUmVuZGVyaW5nTW9kZSByZW5kZXJpbmdNb2RlKCkgY29uc3QgeyByZXR1cm4gbV9yZW5k
ZXJpbmdNb2RlOyB9CisgICAgdm9pZCBzZXRSZW5kZXJpbmdNb2RlKFJlbmRlcmluZ01vZGUgcmVu
ZGVyaW5nTW9kZSkgeyBtX3JlbmRlcmluZ01vZGUgPSByZW5kZXJpbmdNb2RlOyB9CisKICAgICB2
aXJ0dWFsIGZsb2F0IGFwcGx5SG9yaXpvbnRhbFNjYWxlKGZsb2F0IHZhbHVlKSBjb25zdCB7IHJl
dHVybiB2YWx1ZSAqIG1fZmlsdGVyUmVzb2x1dGlvbi53aWR0aCgpOyB9CiAgICAgdmlydHVhbCBm
bG9hdCBhcHBseVZlcnRpY2FsU2NhbGUoZmxvYXQgdmFsdWUpIGNvbnN0IHsgcmV0dXJuIHZhbHVl
ICogbV9maWx0ZXJSZXNvbHV0aW9uLmhlaWdodCgpOyB9CiAgICAgCkBAIC01MSw2ICs1NSw3IEBA
IHB1YmxpYzoKIHByaXZhdGU6CiAgICAgT3duUHRyPEltYWdlQnVmZmVyPiBtX3NvdXJjZUltYWdl
OwogICAgIEZsb2F0U2l6ZSBtX2ZpbHRlclJlc29sdXRpb247CisgICAgUmVuZGVyaW5nTW9kZSBt
X3JlbmRlcmluZ01vZGU7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlckVmZmVjdC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0
ZXJFZmZlY3QuY3BwCShyZXZpc2lvbiAxMDIwMDQpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlckVmZmVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEx
OCw3ICsxMTgsNyBAQCBJbWFnZUJ1ZmZlciogRmlsdGVyRWZmZWN0Ojphc0ltYWdlQnVmZmVyCiAg
ICAgICAgIHJldHVybiAwOwogICAgIGlmIChtX2ltYWdlQnVmZmVyUmVzdWx0KQogICAgICAgICBy
ZXR1cm4gbV9pbWFnZUJ1ZmZlclJlc3VsdC5nZXQoKTsKLSAgICBtX2ltYWdlQnVmZmVyUmVzdWx0
ID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShtX2Fic29sdXRlUGFpbnRSZWN0LnNpemUoKSwgQ29sb3JT
cGFjZUxpbmVhclJHQik7CisgICAgbV9pbWFnZUJ1ZmZlclJlc3VsdCA9IEltYWdlQnVmZmVyOjpj
cmVhdGUobV9hYnNvbHV0ZVBhaW50UmVjdC5zaXplKCksIENvbG9yU3BhY2VMaW5lYXJSR0IsIG1f
ZmlsdGVyLT5yZW5kZXJpbmdNb2RlKCkpOwogICAgIEludFJlY3QgZGVzdGluYXRpb25SZWN0KElu
dFBvaW50KCksIG1fYWJzb2x1dGVQYWludFJlY3Quc2l6ZSgpKTsKICAgICBpZiAobV9wcmVtdWx0
aXBsaWVkSW1hZ2VSZXN1bHQpCiAgICAgICAgIG1faW1hZ2VCdWZmZXJSZXN1bHQtPnB1dFByZW11
bHRpcGxpZWRJbWFnZURhdGEobV9wcmVtdWx0aXBsaWVkSW1hZ2VSZXN1bHQuZ2V0KCksIGRlc3Rp
bmF0aW9uUmVjdC5zaXplKCksIGRlc3RpbmF0aW9uUmVjdCwgSW50UG9pbnQoKSk7CkBAIC0yNTUs
NyArMjU1LDcgQEAgSW1hZ2VCdWZmZXIqIEZpbHRlckVmZmVjdDo6Y3JlYXRlSW1hZ2VCdQogICAg
IEFTU0VSVCghaGFzUmVzdWx0KCkpOwogICAgIGlmIChtX2Fic29sdXRlUGFpbnRSZWN0LmlzRW1w
dHkoKSkKICAgICAgICAgcmV0dXJuIDA7Ci0gICAgbV9pbWFnZUJ1ZmZlclJlc3VsdCA9IEltYWdl
QnVmZmVyOjpjcmVhdGUobV9hYnNvbHV0ZVBhaW50UmVjdC5zaXplKCksIENvbG9yU3BhY2VMaW5l
YXJSR0IpOworICAgIG1faW1hZ2VCdWZmZXJSZXN1bHQgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKG1f
YWJzb2x1dGVQYWludFJlY3Quc2l6ZSgpLCBDb2xvclNwYWNlTGluZWFyUkdCLCBtX2ZpbHRlci0+
cmVuZGVyaW5nTW9kZSgpKTsKICAgICBpZiAoIW1faW1hZ2VCdWZmZXJSZXN1bHQpCiAgICAgICAg
IHJldHVybiAwOwogICAgIEFTU0VSVChtX2ltYWdlQnVmZmVyUmVzdWx0LT5jb250ZXh0KCkpOwpJ
bmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9JbWFnZUJ1ZmZlclNr
aWEuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3Nr
aWEvSW1hZ2VCdWZmZXJTa2lhLmNwcAkocmV2aXNpb24gMTAyMDA0KQorKysgU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9JbWFnZUJ1ZmZlclNraWEuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xNzgsNiArMTc4LDEwIEBAIHZvaWQgSW1hZ2VCdWZmZXI6OmRyYXdQYXR0ZXJuKEdy
YXBoaWNzQ28KIAogdm9pZCBJbWFnZUJ1ZmZlcjo6cGxhdGZvcm1UcmFuc2Zvcm1Db2xvclNwYWNl
KGNvbnN0IFZlY3RvcjxpbnQ+JiBsb29rVXBUYWJsZSkKIHsKKyAgICAvLyBGSVhNRTogRGlzYWJs
ZSBjb2xvciBzcGFjZSBjb252ZXJzaW9ucyBvbiBhY2NlbGVyYXRlZCBjYW52YXNlcyAoZm9yIG5v
dykuCisgICAgaWYgKG1fZGF0YS5tX3BsYXRmb3JtQ29udGV4dC5pc0FjY2VsZXJhdGVkKCkpIAor
ICAgICAgICByZXR1cm47CisKICAgICBjb25zdCBTa0JpdG1hcCYgYml0bWFwID0gKmNvbnRleHQo
KS0+cGxhdGZvcm1Db250ZXh0KCktPmJpdG1hcCgpOwogICAgIGlmIChiaXRtYXAuaXNOdWxsKCkp
CiAgICAgICAgIHJldHVybjsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVu
ZGVyU1ZHUmVzb3VyY2VDbGlwcGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlQ2xpcHBlci5jcHAJKHJldmlzaW9uIDEwMjAw
NCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VDbGlw
cGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTc5LDcgKzE3OSw3IEBAIGJvb2wgUmVuZGVyU1ZH
UmVzb3VyY2VDbGlwcGVyOjphcHBseUNsaXAKICAgICBGbG9hdFJlY3QgY2xhbXBlZEFic29sdXRl
VGFyZ2V0UmVjdCA9IFNWR0ltYWdlQnVmZmVyVG9vbHM6OmNsYW1wZWRBYnNvbHV0ZVRhcmdldFJl
Y3QoYWJzb2x1dGVUYXJnZXRSZWN0KTsKIAogICAgIGlmIChzaG91bGRDcmVhdGVDbGlwRGF0YSAm
JiAhY2xhbXBlZEFic29sdXRlVGFyZ2V0UmVjdC5pc0VtcHR5KCkpIHsKLSAgICAgICAgaWYgKCFT
VkdJbWFnZUJ1ZmZlclRvb2xzOjpjcmVhdGVJbWFnZUJ1ZmZlcihhYnNvbHV0ZVRhcmdldFJlY3Qs
IGNsYW1wZWRBYnNvbHV0ZVRhcmdldFJlY3QsIGNsaXBwZXJEYXRhLT5jbGlwTWFza0ltYWdlLCBD
b2xvclNwYWNlRGV2aWNlUkdCKSkKKyAgICAgICAgaWYgKCFTVkdJbWFnZUJ1ZmZlclRvb2xzOjpj
cmVhdGVJbWFnZUJ1ZmZlcihhYnNvbHV0ZVRhcmdldFJlY3QsIGNsYW1wZWRBYnNvbHV0ZVRhcmdl
dFJlY3QsIGNsaXBwZXJEYXRhLT5jbGlwTWFza0ltYWdlLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBV
bmFjY2VsZXJhdGVkKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgICAgICBHcmFw
aGljc0NvbnRleHQqIG1hc2tDb250ZXh0ID0gY2xpcHBlckRhdGEtPmNsaXBNYXNrSW1hZ2UtPmNv
bnRleHQoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVz
b3VyY2VGaWx0ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dmcvUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXIuY3BwCShyZXZpc2lvbiAxMDIwMDQpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlRmlsdGVyLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMzUsOCArMzUsMTAgQEAKICNpbmNsdWRlICJJbWFnZUJ1ZmZlci5oIgog
I2luY2x1ZGUgIkltYWdlRGF0YS5oIgogI2luY2x1ZGUgIkludFJlY3QuaCIKKyNpbmNsdWRlICJQ
YWdlLmgiCiAjaW5jbHVkZSAiUmVuZGVyU1ZHUmVzb3VyY2UuaCIKICNpbmNsdWRlICJSZW5kZXJT
VkdSZXNvdXJjZUZpbHRlclByaW1pdGl2ZS5oIgorI2luY2x1ZGUgIlNldHRpbmdzLmgiCiAjaW5j
bHVkZSAiU1ZHRWxlbWVudC5oIgogI2luY2x1ZGUgIlNWR0ZpbHRlci5oIgogI2luY2x1ZGUgIlNW
R0ZpbHRlckVsZW1lbnQuaCIKQEAgLTIyOSwxMyArMjMxLDE3IEBAIGJvb2wgUmVuZGVyU1ZHUmVz
b3VyY2VGaWx0ZXI6OmFwcGx5UmVzb3UKICAgICBhYnNvbHV0ZURyYXdpbmdSZWdpb24uc2NhbGUo
c2NhbGUud2lkdGgoKSwgc2NhbGUuaGVpZ2h0KCkpOwogCiAgICAgT3duUHRyPEltYWdlQnVmZmVy
PiBzb3VyY2VHcmFwaGljOwotICAgIGlmICghU1ZHSW1hZ2VCdWZmZXJUb29sczo6Y3JlYXRlSW1h
Z2VCdWZmZXIoYWJzb2x1dGVEcmF3aW5nUmVnaW9uLCBhYnNvbHV0ZURyYXdpbmdSZWdpb24sIHNv
dXJjZUdyYXBoaWMsIENvbG9yU3BhY2VMaW5lYXJSR0IpKSB7CisgICAgUmVuZGVyaW5nTW9kZSBy
ZW5kZXJpbmdNb2RlID0gb2JqZWN0LT5kb2N1bWVudCgpLT5wYWdlKCktPnNldHRpbmdzKCktPmFj
Y2VsZXJhdGVkRmlsdGVyc0VuYWJsZWQoKSA/IEFjY2VsZXJhdGVkIDogVW5hY2NlbGVyYXRlZDsK
KyAgICBpZiAoIVNWR0ltYWdlQnVmZmVyVG9vbHM6OmNyZWF0ZUltYWdlQnVmZmVyKGFic29sdXRl
RHJhd2luZ1JlZ2lvbiwgYWJzb2x1dGVEcmF3aW5nUmVnaW9uLCBzb3VyY2VHcmFwaGljLCBDb2xv
clNwYWNlTGluZWFyUkdCLCByZW5kZXJpbmdNb2RlKSkgewogICAgICAgICBBU1NFUlQoIW1fZmls
dGVyLmNvbnRhaW5zKG9iamVjdCkpOwogICAgICAgICBmaWx0ZXJEYXRhLT5zYXZlZENvbnRleHQg
PSBjb250ZXh0OwogICAgICAgICBtX2ZpbHRlci5zZXQob2JqZWN0LCBmaWx0ZXJEYXRhLmxlYWtQ
dHIoKSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAgICAgCisgICAgLy8gU2V0IHRo
ZSByZW5kZXJpbmcgbW9kZSBmcm9tIHRoZSBwYWdlJ3Mgc2V0dGluZ3MuCisgICAgZmlsdGVyRGF0
YS0+ZmlsdGVyLT5zZXRSZW5kZXJpbmdNb2RlKHJlbmRlcmluZ01vZGUpOworCiAgICAgR3JhcGhp
Y3NDb250ZXh0KiBzb3VyY2VHcmFwaGljQ29udGV4dCA9IHNvdXJjZUdyYXBoaWMtPmNvbnRleHQo
KTsKICAgICBBU1NFUlQoc291cmNlR3JhcGhpY0NvbnRleHQpOwogICAKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VNYXNrZXIuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VNYXNr
ZXIuY3BwCShyZXZpc2lvbiAxMDIwMDQpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3Zn
L1JlbmRlclNWR1Jlc291cmNlTWFza2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTA2LDcgKzEw
Niw3IEBAIGJvb2wgUmVuZGVyU1ZHUmVzb3VyY2VNYXNrZXI6OmFwcGx5UmVzb3UKICAgICAgICAg
Y29uc3QgU1ZHUmVuZGVyU3R5bGUqIHN2Z1N0eWxlID0gc3R5bGUoKS0+c3ZnU3R5bGUoKTsKICAg
ICAgICAgQVNTRVJUKHN2Z1N0eWxlKTsKICAgICAgICAgQ29sb3JTcGFjZSBjb2xvclNwYWNlID0g
c3ZnU3R5bGUtPmNvbG9ySW50ZXJwb2xhdGlvbigpID09IENJX0xJTkVBUlJHQiA/IENvbG9yU3Bh
Y2VMaW5lYXJSR0IgOiBDb2xvclNwYWNlRGV2aWNlUkdCOwotICAgICAgICBpZiAoIVNWR0ltYWdl
QnVmZmVyVG9vbHM6OmNyZWF0ZUltYWdlQnVmZmVyKGFic29sdXRlVGFyZ2V0UmVjdCwgY2xhbXBl
ZEFic29sdXRlVGFyZ2V0UmVjdCwgbWFza2VyRGF0YS0+bWFza0ltYWdlLCBjb2xvclNwYWNlKSkK
KyAgICAgICAgaWYgKCFTVkdJbWFnZUJ1ZmZlclRvb2xzOjpjcmVhdGVJbWFnZUJ1ZmZlcihhYnNv
bHV0ZVRhcmdldFJlY3QsIGNsYW1wZWRBYnNvbHV0ZVRhcmdldFJlY3QsIG1hc2tlckRhdGEtPm1h
c2tJbWFnZSwgY29sb3JTcGFjZSwgVW5hY2NlbGVyYXRlZCkpCiAgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CiAKICAgICAgICAgR3JhcGhpY3NDb250ZXh0KiBtYXNrSW1hZ2VDb250ZXh0ID0gbWFz
a2VyRGF0YS0+bWFza0ltYWdlLT5jb250ZXh0KCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlUGF0dGVybi5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZVBhdHRlcm4uY3BwCShy
ZXZpc2lvbiAxMDIwMDQpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNW
R1Jlc291cmNlUGF0dGVybi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI1Miw3ICsyNTIsNyBAQCBQ
YXNzT3duUHRyPEltYWdlQnVmZmVyPiBSZW5kZXJTVkdSZXNvdXJjCiAKICAgICBPd25QdHI8SW1h
Z2VCdWZmZXI+IHRpbGVJbWFnZTsKIAotICAgIGlmICghU1ZHSW1hZ2VCdWZmZXJUb29sczo6Y3Jl
YXRlSW1hZ2VCdWZmZXIoYWJzb2x1dGVUaWxlQm91bmRhcmllcywgY2xhbXBlZEFic29sdXRlVGls
ZUJvdW5kYXJpZXMsIHRpbGVJbWFnZSwgQ29sb3JTcGFjZURldmljZVJHQikpCisgICAgaWYgKCFT
VkdJbWFnZUJ1ZmZlclRvb2xzOjpjcmVhdGVJbWFnZUJ1ZmZlcihhYnNvbHV0ZVRpbGVCb3VuZGFy
aWVzLCBjbGFtcGVkQWJzb2x1dGVUaWxlQm91bmRhcmllcywgdGlsZUltYWdlLCBDb2xvclNwYWNl
RGV2aWNlUkdCLCBVbmFjY2VsZXJhdGVkKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAg
ICBHcmFwaGljc0NvbnRleHQqIHRpbGVJbWFnZUNvbnRleHQgPSB0aWxlSW1hZ2UtPmNvbnRleHQo
KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHSW1hZ2VCdWZmZXJUb29s
cy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdJbWFn
ZUJ1ZmZlclRvb2xzLmNwcAkocmV2aXNpb24gMTAyMDA0KQorKysgU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N2Zy9TVkdJbWFnZUJ1ZmZlclRvb2xzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTIs
NyArNTIsNyBAQCB2b2lkIFNWR0ltYWdlQnVmZmVyVG9vbHM6OmNhbGN1bGF0ZVRyYW5zCiAgICAg
fQogfQogCi1ib29sIFNWR0ltYWdlQnVmZmVyVG9vbHM6OmNyZWF0ZUltYWdlQnVmZmVyKGNvbnN0
IEZsb2F0UmVjdCYgYWJzb2x1dGVUYXJnZXRSZWN0LCBjb25zdCBGbG9hdFJlY3QmIGNsYW1wZWRB
YnNvbHV0ZVRhcmdldFJlY3QsIE93blB0cjxJbWFnZUJ1ZmZlcj4mIGltYWdlQnVmZmVyLCBDb2xv
clNwYWNlIGNvbG9yU3BhY2UpCitib29sIFNWR0ltYWdlQnVmZmVyVG9vbHM6OmNyZWF0ZUltYWdl
QnVmZmVyKGNvbnN0IEZsb2F0UmVjdCYgYWJzb2x1dGVUYXJnZXRSZWN0LCBjb25zdCBGbG9hdFJl
Y3QmIGNsYW1wZWRBYnNvbHV0ZVRhcmdldFJlY3QsIE93blB0cjxJbWFnZUJ1ZmZlcj4mIGltYWdl
QnVmZmVyLCBDb2xvclNwYWNlIGNvbG9yU3BhY2UsIFJlbmRlcmluZ01vZGUgcmVuZGVyaW5nTW9k
ZSkKIHsKICAgICBJbnRTaXplIGltYWdlU2l6ZShyb3VuZGVkSW1hZ2VCdWZmZXJTaXplKGNsYW1w
ZWRBYnNvbHV0ZVRhcmdldFJlY3Quc2l6ZSgpKSk7CiAgICAgSW50U2l6ZSB1bmNsYW1wZWRJbWFn
ZVNpemUoU1ZHSW1hZ2VCdWZmZXJUb29sczo6cm91bmRlZEltYWdlQnVmZmVyU2l6ZShhYnNvbHV0
ZVRhcmdldFJlY3Quc2l6ZSgpKSk7CkBAIC02MSw3ICs2MSw3IEBAIGJvb2wgU1ZHSW1hZ2VCdWZm
ZXJUb29sczo6Y3JlYXRlSW1hZ2VCdWYKICAgICBpZiAoaW1hZ2VTaXplLmlzRW1wdHkoKSkKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgT3duUHRyPEltYWdlQnVmZmVyPiBpbWFnZSA9IElt
YWdlQnVmZmVyOjpjcmVhdGUoaW1hZ2VTaXplLCBjb2xvclNwYWNlKTsKKyAgICBPd25QdHI8SW1h
Z2VCdWZmZXI+IGltYWdlID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShpbWFnZVNpemUsIGNvbG9yU3Bh
Y2UsIHJlbmRlcmluZ01vZGUpOwogICAgIGlmICghaW1hZ2UpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdJbWFnZUJ1ZmZlclRv
b2xzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdJbWFn
ZUJ1ZmZlclRvb2xzLmgJKHJldmlzaW9uIDEwMjAwNCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdmcvU1ZHSW1hZ2VCdWZmZXJUb29scy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNSw3ICsz
NSw3IEBAIGNsYXNzIFJlbmRlck9iamVjdDsKIGNsYXNzIFNWR0ltYWdlQnVmZmVyVG9vbHMgewog
ICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFNWR0ltYWdlQnVmZmVyVG9vbHMpOwogcHVibGljOgot
ICAgIHN0YXRpYyBib29sIGNyZWF0ZUltYWdlQnVmZmVyKGNvbnN0IEZsb2F0UmVjdCYgYWJzb2x1
dGVUYXJnZXRSZWN0LCBjb25zdCBGbG9hdFJlY3QmIGNsYW1wZWRBYnNvbHV0ZVRhcmdldFJlY3Qs
IE93blB0cjxJbWFnZUJ1ZmZlcj4mLCBDb2xvclNwYWNlKTsKKyAgICBzdGF0aWMgYm9vbCBjcmVh
dGVJbWFnZUJ1ZmZlcihjb25zdCBGbG9hdFJlY3QmIGFic29sdXRlVGFyZ2V0UmVjdCwgY29uc3Qg
RmxvYXRSZWN0JiBjbGFtcGVkQWJzb2x1dGVUYXJnZXRSZWN0LCBPd25QdHI8SW1hZ2VCdWZmZXI+
JiwgQ29sb3JTcGFjZSwgUmVuZGVyaW5nTW9kZSk7CiAgICAgc3RhdGljIHZvaWQgcmVuZGVyU3Vi
dHJlZVRvSW1hZ2VCdWZmZXIoSW1hZ2VCdWZmZXIqLCBSZW5kZXJPYmplY3QqLCBjb25zdCBBZmZp
bmVUcmFuc2Zvcm0mKTsKICAgICBzdGF0aWMgdm9pZCBjbGlwVG9JbWFnZUJ1ZmZlcihHcmFwaGlj
c0NvbnRleHQqLCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIGFic29sdXRlVHJhbnNmb3JtLCBjb25z
dCBGbG9hdFJlY3QmIGNsYW1wZWRBYnNvbHV0ZVRhcmdldFJlY3QsIE93blB0cjxJbWFnZUJ1ZmZl
cj4mKTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAkocmV2aXNpb24g
MTAyMDA0KQorKysgU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0zMTQsNiArMzE0LDE2IEBAIHZvaWQgSW50ZXJuYWxzOjpzZXRBY2NlbGVyYXRl
ZERyYXdpbmdFbmEKICAgICBkb2N1bWVudC0+c2V0dGluZ3MoKS0+c2V0QWNjZWxlcmF0ZWREcmF3
aW5nRW5hYmxlZChlbmFibGVkKTsKIH0KIAordm9pZCBJbnRlcm5hbHM6OnNldEFjY2VsZXJhdGVk
RmlsdGVyc0VuYWJsZWQoRG9jdW1lbnQqIGRvY3VtZW50LCBib29sIGVuYWJsZWQsIEV4Y2VwdGlv
bkNvZGUmIGVjKQoreworICAgIGlmICghZG9jdW1lbnQgfHwgIWRvY3VtZW50LT5zZXR0aW5ncygp
KSB7CisgICAgICAgIGVjID0gSU5WQUxJRF9BQ0NFU1NfRVJSOworICAgICAgICByZXR1cm47Cisg
ICAgfQorCisgICAgZG9jdW1lbnQtPnNldHRpbmdzKCktPnNldEFjY2VsZXJhdGVkRmlsdGVyc0Vu
YWJsZWQoZW5hYmxlZCk7Cit9CisKIHZvaWQgSW50ZXJuYWxzOjpzZXRFbmFibGVTY3JvbGxBbmlt
YXRvcihEb2N1bWVudCogZG9jdW1lbnQsIGJvb2wgZW5hYmxlZCwgRXhjZXB0aW9uQ29kZSYgZWMp
CiB7CiAgICAgaWYgKCFkb2N1bWVudCB8fCAhZG9jdW1lbnQtPnNldHRpbmdzKCkpIHsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaAkocmV2aXNpb24gMTAyMDA0KQorKysgU291cmNl
L1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaAkod29ya2luZyBjb3B5KQpAQCAtNzksNiArNzks
NyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRFbmFibGVDb21wb3NpdGluZ0ZvckZpeGVkUG9zaXRp
b24oRG9jdW1lbnQqLCBib29sIGVuYWJsZWQsIEV4Y2VwdGlvbkNvZGUmKTsKICAgICB2b2lkIHNl
dEVuYWJsZUNvbXBvc2l0aW5nRm9yU2Nyb2xsYWJsZUZyYW1lcyhEb2N1bWVudCosIGJvb2wgZW5h
YmxlZCwgRXhjZXB0aW9uQ29kZSYpOwogICAgIHZvaWQgc2V0QWNjZWxlcmF0ZWREcmF3aW5nRW5h
YmxlZChEb2N1bWVudCosIGJvb2wgZW5hYmxlZCwgRXhjZXB0aW9uQ29kZSYpOworICAgIHZvaWQg
c2V0QWNjZWxlcmF0ZWRGaWx0ZXJzRW5hYmxlZChEb2N1bWVudCosIGJvb2wgZW5hYmxlZCwgRXhj
ZXB0aW9uQ29kZSYpOwogCiAgICAgdm9pZCBzZXRFbmFibGVTY3JvbGxBbmltYXRvcihEb2N1bWVu
dCosIGJvb2wgZW5hYmxlZCwgRXhjZXB0aW9uQ29kZSYpOwogICAgIHZvaWQgc2V0Wm9vbUFuaW1h
dG9yVHJhbnNmb3JtKERvY3VtZW50KiwgZmxvYXQgc2NhbGUsIGZsb2F0IHR4LCBmbG9hdCB0eSwg
RXhjZXB0aW9uQ29kZSYpOwpJbmRleDogU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMu
aWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbAko
cmV2aXNpb24gMTAyMDA0KQorKysgU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRs
CSh3b3JraW5nIGNvcHkpCkBAIC01Miw2ICs1Miw3IEBAIG1vZHVsZSB3aW5kb3cgewogICAgICAg
ICB2b2lkIHNldEVuYWJsZUNvbXBvc2l0aW5nRm9yRml4ZWRQb3NpdGlvbihpbiBEb2N1bWVudCBk
b2N1bWVudCwgaW4gYm9vbGVhbiBlbmFibGVkKSByYWlzZXMoRE9NRXhjZXB0aW9uKTsKICAgICAg
ICAgdm9pZCBzZXRFbmFibGVDb21wb3NpdGluZ0ZvclNjcm9sbGFibGVGcmFtZXMoaW4gRG9jdW1l
bnQgZG9jdW1lbnQsIGluIGJvb2xlYW4gZW5hYmxlZCkgcmFpc2VzKERPTUV4Y2VwdGlvbik7CiAg
ICAgICAgIHZvaWQgc2V0QWNjZWxlcmF0ZWREcmF3aW5nRW5hYmxlZChpbiBEb2N1bWVudCBkb2N1
bWVudCwgaW4gYm9vbGVhbiBlbmFibGVkKSByYWlzZXMoRE9NRXhjZXB0aW9uKTsKKyAgICAgICAg
dm9pZCBzZXRBY2NlbGVyYXRlZEZpbHRlcnNFbmFibGVkKGluIERvY3VtZW50IGRvY3VtZW50LCBp
biBib29sZWFuIGVuYWJsZWQpIHJhaXNlcyhET01FeGNlcHRpb24pOwogICAgICAgICB2b2lkIHNl
dEVuYWJsZVNjcm9sbEFuaW1hdG9yKGluIERvY3VtZW50IGRvY3VtZW50LCBpbiBib29sZWFuIGVu
YWJsZWQpIHJhaXNlcyhET01FeGNlcHRpb24pOwogICAgICAgICB2b2lkIHNldFpvb21BbmltYXRv
clRyYW5zZm9ybShpbiBEb2N1bWVudCBkb2N1bWVudCwgaW4gZmxvYXQgc2NhbGUsIGluIGZsb2F0
IHR4LCBpbiBmbG9hdCB0eSkgcmFpc2VzKERPTUV4Y2VwdGlvbik7CiAgICAgICAgIGZsb2F0IGdl
dFBhZ2VTY2FsZUZhY3RvcihpbiBEb2N1bWVudCBkb2N1bWVudCkgcmFpc2VzKERPTUV4Y2VwdGlv
bik7CkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwkocmV2aXNpb24gMTAyMDEwKQorKysg
U291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyAr
MSwxNSBAQAorMjAxMS0xMi0wNSAgU3RlcGhlbiBXaGl0ZSAgPHNlbm9yYmxhbmNvQGNocm9taXVt
Lm9yZz4KKworICAgICAgICBBbGxvdyB0aGUgSW1hZ2VCdWZmZXJzIHVzZWQgYnkgU1ZHIGZpbHRl
cnMgdG8gYmUgYWNjZWxlcmF0ZWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTczODQyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgKiBwdWJsaWMvV2ViU2V0dGluZ3MuaDoKKyAgICAgICAgKiBzcmMvV2ViU2V0
dGluZ3NJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViU2V0dGluZ3NJbXBsOjpzZXRBY2Nl
bGVyYXRlZEZpbHRlcnNFbmFibGVkKToKKyAgICAgICAgKiBzcmMvV2ViU2V0dGluZ3NJbXBsLmg6
CisKIDIwMTEtMTItMDUgIFZzZXZvbG9kIFZsYXNvdiAgPHZzZXZpa0BjaHJvbWl1bS5vcmc+CiAK
ICAgICAgICAgVW5yZXZpZXdlZCwgZml4ZWQgY2hyb21pdW0gREVQUyBzeW50YXguCkluZGV4OiBT
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJTZXR0aW5ncy5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlNldHRpbmdzLmgJKHJldmlzaW9uIDEw
MjAwNCkKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlNldHRpbmdzLmgJKHdv
cmtpbmcgY29weSkKQEAgLTExNyw2ICsxMTcsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lk
IHNldExlZ2FjeUFjY2VsZXJhdGVkMmRDYW52YXNFbmFibGVkKGJvb2wpID0gMDsKICAgICB2aXJ0
dWFsIHZvaWQgc2V0TWluaW11bUFjY2VsZXJhdGVkMmRDYW52YXNTaXplKGludCkgPSAwOwogICAg
IHZpcnR1YWwgdm9pZCBzZXRBY2NlbGVyYXRlZERyYXdpbmdFbmFibGVkKGJvb2wpID0gMDsKKyAg
ICB2aXJ0dWFsIHZvaWQgc2V0QWNjZWxlcmF0ZWRGaWx0ZXJzRW5hYmxlZChib29sKSA9IDA7CiAg
ICAgdmlydHVhbCB2b2lkIHNldE1lbW9yeUluZm9FbmFibGVkKGJvb2wpID0gMDsKICAgICB2aXJ0
dWFsIHZvaWQgc2V0SHlwZXJsaW5rQXVkaXRpbmdFbmFibGVkKGJvb2wpID0gMDsKICAgICB2aXJ0
dWFsIHZvaWQgc2V0QXN5bmNocm9ub3VzU3BlbGxDaGVja2luZ0VuYWJsZWQoYm9vbCkgPSAwOwpJ
bmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU2V0dGluZ3NJbXBsLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJTZXR0aW5nc0ltcGwuY3Bw
CShyZXZpc2lvbiAxMDIwMDQpCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJTZXR0
aW5nc0ltcGwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNTgsNiArMzU4LDExIEBAIHZvaWQgV2Vi
U2V0dGluZ3NJbXBsOjpzZXRBY2NlbGVyYXRlZERyYXcKICAgICBtX3NldHRpbmdzLT5zZXRBY2Nl
bGVyYXRlZERyYXdpbmdFbmFibGVkKGVuYWJsZWQpOwogfQogCit2b2lkIFdlYlNldHRpbmdzSW1w
bDo6c2V0QWNjZWxlcmF0ZWRGaWx0ZXJzRW5hYmxlZChib29sIGVuYWJsZWQpCit7CisgICAgbV9z
ZXR0aW5ncy0+c2V0QWNjZWxlcmF0ZWRGaWx0ZXJzRW5hYmxlZChlbmFibGVkKTsKK30KKwogdm9p
ZCBXZWJTZXR0aW5nc0ltcGw6OnNldEFjY2VsZXJhdGVkMmRDYW52YXNFbmFibGVkKGJvb2wgZW5h
YmxlZCkKIHsKICAgICBtX3NldHRpbmdzLT5zZXRBY2NlbGVyYXRlZDJkQ2FudmFzRW5hYmxlZChl
bmFibGVkKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNldHRpbmdzSW1w
bC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNldHRpbmdz
SW1wbC5oCShyZXZpc2lvbiAxMDIwMDQpCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9X
ZWJTZXR0aW5nc0ltcGwuaAkod29ya2luZyBjb3B5KQpAQCAtMTA5LDYgKzEwOSw3IEBAIHB1Ymxp
YzoKICAgICB2aXJ0dWFsIHZvaWQgc2V0TGVnYWN5QWNjZWxlcmF0ZWQyZENhbnZhc0VuYWJsZWQo
Ym9vbCk7CiAgICAgdmlydHVhbCB2b2lkIHNldE1pbmltdW1BY2NlbGVyYXRlZDJkQ2FudmFzU2l6
ZShpbnQpOwogICAgIHZpcnR1YWwgdm9pZCBzZXRBY2NlbGVyYXRlZERyYXdpbmdFbmFibGVkKGJv
b2wpOworICAgIHZpcnR1YWwgdm9pZCBzZXRBY2NlbGVyYXRlZEZpbHRlcnNFbmFibGVkKGJvb2wp
OwogICAgIHZpcnR1YWwgdm9pZCBzZXRNZW1vcnlJbmZvRW5hYmxlZChib29sKTsKICAgICB2aXJ0
dWFsIHZvaWQgc2V0SHlwZXJsaW5rQXVkaXRpbmdFbmFibGVkKGJvb2wpOwogICAgIHZpcnR1YWwg
dm9pZCBzZXRBc3luY2hyb25vdXNTcGVsbENoZWNraW5nRW5hYmxlZChib29sKTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>117903</attachid>
            <date>2011-12-05 11:10:05 -0800</date>
            <delta_ts>2011-12-05 20:16:46 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-73842-20111205141004.patch</filename>
            <type>text/plain</type>
            <size>20715</size>
            <attacher name="Stephen White">senorblanco</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEwMjAxMCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ1IEBACisyMDExLTEyLTA1ICBTdGVwaGVu
IFdoaXRlICA8c2Vub3JibGFuY29AY2hyb21pdW0ub3JnPgorCisgICAgICAgIEFsbG93IHRoZSBJ
bWFnZUJ1ZmZlcnMgdXNlZCBieSBTVkcgZmlsdGVycyB0byBiZSBhY2NlbGVyYXRlZAorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzM4NDIKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZWdyZXNzaW9ucyBjb3Zl
cmVkIGJ5IGV4aXN0aW5nIFNWRyB0ZXN0czsgbmV3IGZ1bmN0aW9uYWxpdHkgdG8gYmUKKyAgICAg
ICAgdGVzdGVkIGJ5IHRoZSBBUEkgZXhwb3NlZCBvbiBJbnRlcm5hbHMuCisKKyAgICAgICAgKiBw
YWdlL1NldHRpbmdzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNldHRpbmdzOjpTZXR0aW5ncyk6
CisgICAgICAgICogcGFnZS9TZXR0aW5ncy5oOgorICAgICAgICAoV2ViQ29yZTo6U2V0dGluZ3M6
OnNldEFjY2VsZXJhdGVkRmlsdGVyc0VuYWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6U2V0dGlu
Z3M6OmFjY2VsZXJhdGVkRmlsdGVyc0VuYWJsZWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2ZpbHRlcnMvRkVUaWxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZFVGlsZTo6cGxhdGZv
cm1BcHBseVNvZnR3YXJlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0Zp
bHRlci5oOgorICAgICAgICAoV2ViQ29yZTo6RmlsdGVyOjpGaWx0ZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6RmlsdGVyOjpyZW5kZXJpbmdNb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OkZpbHRlcjo6
c2V0UmVuZGVyaW5nTW9kZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9G
aWx0ZXJFZmZlY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RmlsdGVyRWZmZWN0Ojphc0ltYWdl
QnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkZpbHRlckVmZmVjdDo6Y3JlYXRlSW1hZ2VCdWZm
ZXJSZXN1bHQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3NraWEvSW1hZ2VCdWZmZXJT
a2lhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyOjpwbGF0Zm9ybVRyYW5zZm9y
bUNvbG9yU3BhY2UpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VD
bGlwcGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1Jlc291cmNlQ2xpcHBlcjo6
YXBwbHlDbGlwcGluZ1RvQ29udGV4dCk6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJT
VkdSZXNvdXJjZUZpbHRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdSZXNvdXJj
ZUZpbHRlcjo6YXBwbHlSZXNvdXJjZSk6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJT
VkdSZXNvdXJjZU1hc2tlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdSZXNvdXJj
ZU1hc2tlcjo6YXBwbHlSZXNvdXJjZSk6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJT
VkdSZXNvdXJjZVBhdHRlcm4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHUmVzb3Vy
Y2VQYXR0ZXJuOjpjcmVhdGVUaWxlSW1hZ2UpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvU1ZH
SW1hZ2VCdWZmZXJUb29scy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdJbWFnZUJ1ZmZlclRv
b2xzOjpjcmVhdGVJbWFnZUJ1ZmZlcik6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9TVkdJbWFn
ZUJ1ZmZlclRvb2xzLmg6CisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SW50ZXJuYWxzOjpzZXRBY2NlbGVyYXRlZEZpbHRlcnNFbmFibGVkKToKKyAg
ICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5oOgorICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxz
LmlkbDoKKwogMjAxMS0xMi0wNSAgTWlraGFpbCBOYWdhbm92ICA8bW5hZ2Fub3ZAY2hyb21pdW0u
b3JnPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IFtDaHJvbWl1bV0gSGVhcCBwcm9maWxlciBz
aG91bGQgZGVzaWduYXRlIHdlYWsgcmVmZXJlbmNlcy4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Bh
Z2UvU2V0dGluZ3MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGlu
Z3MuY3BwCShyZXZpc2lvbiAxMDIwMDQpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdz
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTcwLDYgKzE3MCw3IEBAIFNldHRpbmdzOjpTZXR0aW5n
cyhQYWdlKiBwYWdlKQogICAgICwgbV9hbGxvd1NjcmlwdHNUb0Nsb3NlV2luZG93cyhmYWxzZSkK
ICAgICAsIG1fY2FudmFzVXNlc0FjY2VsZXJhdGVkRHJhd2luZyhmYWxzZSkKICAgICAsIG1fYWNj
ZWxlcmF0ZWREcmF3aW5nRW5hYmxlZChmYWxzZSkKKyAgICAsIG1fYWNjZWxlcmF0ZWRGaWx0ZXJz
RW5hYmxlZChmYWxzZSkKICAgICAvLyBGSVhNRTogVGhpcyBzaG91bGQgcmVhbGx5IGJlIGRpc2Fi
bGVkIGJ5IGRlZmF1bHQgYXMgaXQgbWFrZXMgcGxhdGZvcm1zIHRoYXQgZG9uJ3Qgc3VwcG9ydCB0
aGUgZmVhdHVyZSBkb3dubG9hZCBmaWxlcwogICAgIC8vIHRoZXkgY2FuJ3QgdXNlIGJ5LiBMZWF2
aW5nIGVuYWJsZWQgZm9yIG5vdyB0byBub3QgY2hhbmdlIGV4aXN0aW5nIGJlaGF2aW9yLgogICAg
ICwgbV9kb3dubG9hZGFibGVCaW5hcnlGb250c0VuYWJsZWQodHJ1ZSkKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3BhZ2UvU2V0dGluZ3MuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdl
L1NldHRpbmdzLmgJKHJldmlzaW9uIDEwMjAwNCkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0
dGluZ3MuaAkod29ya2luZyBjb3B5KQpAQCAtMzAxLDYgKzMwMSw5IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKICAgICAgICAgdm9pZCBzZXRBY2NlbGVyYXRlZERyYXdpbmdFbmFibGVkKGJvb2wgZW5h
YmxlZCkgeyBtX2FjY2VsZXJhdGVkRHJhd2luZ0VuYWJsZWQgPSBlbmFibGVkOyB9CiAgICAgICAg
IGJvb2wgYWNjZWxlcmF0ZWREcmF3aW5nRW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1fYWNjZWxl
cmF0ZWREcmF3aW5nRW5hYmxlZDsgfQogCisgICAgICAgIHZvaWQgc2V0QWNjZWxlcmF0ZWRGaWx0
ZXJzRW5hYmxlZChib29sIGVuYWJsZWQpIHsgbV9hY2NlbGVyYXRlZEZpbHRlcnNFbmFibGVkID0g
ZW5hYmxlZDsgfQorICAgICAgICBib29sIGFjY2VsZXJhdGVkRmlsdGVyc0VuYWJsZWQoKSBjb25z
dCB7IHJldHVybiBtX2FjY2VsZXJhdGVkRmlsdGVyc0VuYWJsZWQ7IH0KKwogICAgICAgICB2b2lk
IHNldEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdFbmFibGVkKGJvb2wpOwogICAgICAgICBib29sIGFj
Y2VsZXJhdGVkQ29tcG9zaXRpbmdFbmFibGVkKCkgY29uc3QgeyByZXR1cm4gbV9hY2NlbGVyYXRl
ZENvbXBvc2l0aW5nRW5hYmxlZDsgfQogCkBAIC01NzMsNiArNTc2LDcgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogICAgICAgICBib29sIG1fYWxsb3dTY3JpcHRzVG9DbG9zZVdpbmRvd3MgOiAxOwog
ICAgICAgICBib29sIG1fY2FudmFzVXNlc0FjY2VsZXJhdGVkRHJhd2luZyA6IDE7CiAgICAgICAg
IGJvb2wgbV9hY2NlbGVyYXRlZERyYXdpbmdFbmFibGVkIDogMTsKKyAgICAgICAgYm9vbCBtX2Fj
Y2VsZXJhdGVkRmlsdGVyc0VuYWJsZWQgOiAxOwogICAgICAgICBib29sIG1fZG93bmxvYWRhYmxl
QmluYXJ5Rm9udHNFbmFibGVkIDogMTsKICAgICAgICAgYm9vbCBtX3hzc0F1ZGl0b3JFbmFibGVk
IDogMTsKICAgICAgICAgYm9vbCBtX2FjY2VsZXJhdGVkQ29tcG9zaXRpbmdFbmFibGVkIDogMTsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVUaWxlLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJz
L0ZFVGlsZS5jcHAJKHJldmlzaW9uIDEwMjAwNCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2ZpbHRlcnMvRkVUaWxlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjcsNyArNjcs
NyBAQCB2b2lkIEZFVGlsZTo6cGxhdGZvcm1BcHBseVNvZnR3YXJlKCkKICAgICB9CiAKICAgICBP
d25QdHI8SW1hZ2VCdWZmZXI+IHRpbGVJbWFnZTsKLSAgICBpZiAoIVNWR0ltYWdlQnVmZmVyVG9v
bHM6OmNyZWF0ZUltYWdlQnVmZmVyKHRpbGVSZWN0LCB0aWxlUmVjdCwgdGlsZUltYWdlLCBDb2xv
clNwYWNlRGV2aWNlUkdCKSkKKyAgICBpZiAoIVNWR0ltYWdlQnVmZmVyVG9vbHM6OmNyZWF0ZUlt
YWdlQnVmZmVyKHRpbGVSZWN0LCB0aWxlUmVjdCwgdGlsZUltYWdlLCBDb2xvclNwYWNlRGV2aWNl
UkdCLCBmaWx0ZXIoKS0+cmVuZGVyaW5nTW9kZSgpKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAg
R3JhcGhpY3NDb250ZXh0KiB0aWxlSW1hZ2VDb250ZXh0ID0gdGlsZUltYWdlLT5jb250ZXh0KCk7
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlci5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMv
RmlsdGVyLmgJKHJldmlzaW9uIDEwMjAwNCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2ZpbHRlcnMvRmlsdGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTMyLDYgKzMyLDcgQEAg
Y2xhc3MgRmlsdGVyRWZmZWN0OwogCiBjbGFzcyBGaWx0ZXIgOiBwdWJsaWMgUmVmQ291bnRlZDxG
aWx0ZXI+IHsKIHB1YmxpYzoKKyAgICBGaWx0ZXIoKSA6IG1fcmVuZGVyaW5nTW9kZShVbmFjY2Vs
ZXJhdGVkKSB7IH0KICAgICB2aXJ0dWFsIH5GaWx0ZXIoKSB7IH0KIAogICAgIHZvaWQgc2V0U291
cmNlSW1hZ2UoUGFzc093blB0cjxJbWFnZUJ1ZmZlcj4gc291cmNlSW1hZ2UpIHsgbV9zb3VyY2VJ
bWFnZSA9IHNvdXJjZUltYWdlOyB9CkBAIC00MCw2ICs0MSw5IEBAIHB1YmxpYzoKICAgICBGbG9h
dFNpemUgZmlsdGVyUmVzb2x1dGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fZmlsdGVyUmVzb2x1dGlv
bjsgfQogICAgIHZvaWQgc2V0RmlsdGVyUmVzb2x1dGlvbihjb25zdCBGbG9hdFNpemUmIGZpbHRl
clJlc29sdXRpb24pIHsgbV9maWx0ZXJSZXNvbHV0aW9uID0gZmlsdGVyUmVzb2x1dGlvbjsgfQog
CisgICAgUmVuZGVyaW5nTW9kZSByZW5kZXJpbmdNb2RlKCkgY29uc3QgeyByZXR1cm4gbV9yZW5k
ZXJpbmdNb2RlOyB9CisgICAgdm9pZCBzZXRSZW5kZXJpbmdNb2RlKFJlbmRlcmluZ01vZGUgcmVu
ZGVyaW5nTW9kZSkgeyBtX3JlbmRlcmluZ01vZGUgPSByZW5kZXJpbmdNb2RlOyB9CisKICAgICB2
aXJ0dWFsIGZsb2F0IGFwcGx5SG9yaXpvbnRhbFNjYWxlKGZsb2F0IHZhbHVlKSBjb25zdCB7IHJl
dHVybiB2YWx1ZSAqIG1fZmlsdGVyUmVzb2x1dGlvbi53aWR0aCgpOyB9CiAgICAgdmlydHVhbCBm
bG9hdCBhcHBseVZlcnRpY2FsU2NhbGUoZmxvYXQgdmFsdWUpIGNvbnN0IHsgcmV0dXJuIHZhbHVl
ICogbV9maWx0ZXJSZXNvbHV0aW9uLmhlaWdodCgpOyB9CiAgICAgCkBAIC01MSw2ICs1NSw3IEBA
IHB1YmxpYzoKIHByaXZhdGU6CiAgICAgT3duUHRyPEltYWdlQnVmZmVyPiBtX3NvdXJjZUltYWdl
OwogICAgIEZsb2F0U2l6ZSBtX2ZpbHRlclJlc29sdXRpb247CisgICAgUmVuZGVyaW5nTW9kZSBt
X3JlbmRlcmluZ01vZGU7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlckVmZmVjdC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0
ZXJFZmZlY3QuY3BwCShyZXZpc2lvbiAxMDIwMDQpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlckVmZmVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEx
OCw3ICsxMTgsNyBAQCBJbWFnZUJ1ZmZlciogRmlsdGVyRWZmZWN0Ojphc0ltYWdlQnVmZmVyCiAg
ICAgICAgIHJldHVybiAwOwogICAgIGlmIChtX2ltYWdlQnVmZmVyUmVzdWx0KQogICAgICAgICBy
ZXR1cm4gbV9pbWFnZUJ1ZmZlclJlc3VsdC5nZXQoKTsKLSAgICBtX2ltYWdlQnVmZmVyUmVzdWx0
ID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShtX2Fic29sdXRlUGFpbnRSZWN0LnNpemUoKSwgQ29sb3JT
cGFjZUxpbmVhclJHQik7CisgICAgbV9pbWFnZUJ1ZmZlclJlc3VsdCA9IEltYWdlQnVmZmVyOjpj
cmVhdGUobV9hYnNvbHV0ZVBhaW50UmVjdC5zaXplKCksIENvbG9yU3BhY2VMaW5lYXJSR0IsIG1f
ZmlsdGVyLT5yZW5kZXJpbmdNb2RlKCkpOwogICAgIEludFJlY3QgZGVzdGluYXRpb25SZWN0KElu
dFBvaW50KCksIG1fYWJzb2x1dGVQYWludFJlY3Quc2l6ZSgpKTsKICAgICBpZiAobV9wcmVtdWx0
aXBsaWVkSW1hZ2VSZXN1bHQpCiAgICAgICAgIG1faW1hZ2VCdWZmZXJSZXN1bHQtPnB1dFByZW11
bHRpcGxpZWRJbWFnZURhdGEobV9wcmVtdWx0aXBsaWVkSW1hZ2VSZXN1bHQuZ2V0KCksIGRlc3Rp
bmF0aW9uUmVjdC5zaXplKCksIGRlc3RpbmF0aW9uUmVjdCwgSW50UG9pbnQoKSk7CkBAIC0yNTUs
NyArMjU1LDcgQEAgSW1hZ2VCdWZmZXIqIEZpbHRlckVmZmVjdDo6Y3JlYXRlSW1hZ2VCdQogICAg
IEFTU0VSVCghaGFzUmVzdWx0KCkpOwogICAgIGlmIChtX2Fic29sdXRlUGFpbnRSZWN0LmlzRW1w
dHkoKSkKICAgICAgICAgcmV0dXJuIDA7Ci0gICAgbV9pbWFnZUJ1ZmZlclJlc3VsdCA9IEltYWdl
QnVmZmVyOjpjcmVhdGUobV9hYnNvbHV0ZVBhaW50UmVjdC5zaXplKCksIENvbG9yU3BhY2VMaW5l
YXJSR0IpOworICAgIG1faW1hZ2VCdWZmZXJSZXN1bHQgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKG1f
YWJzb2x1dGVQYWludFJlY3Quc2l6ZSgpLCBDb2xvclNwYWNlTGluZWFyUkdCLCBtX2ZpbHRlci0+
cmVuZGVyaW5nTW9kZSgpKTsKICAgICBpZiAoIW1faW1hZ2VCdWZmZXJSZXN1bHQpCiAgICAgICAg
IHJldHVybiAwOwogICAgIEFTU0VSVChtX2ltYWdlQnVmZmVyUmVzdWx0LT5jb250ZXh0KCkpOwpJ
bmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9JbWFnZUJ1ZmZlclNr
aWEuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3Nr
aWEvSW1hZ2VCdWZmZXJTa2lhLmNwcAkocmV2aXNpb24gMTAyMDA0KQorKysgU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9JbWFnZUJ1ZmZlclNraWEuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xNzgsNiArMTc4LDEwIEBAIHZvaWQgSW1hZ2VCdWZmZXI6OmRyYXdQYXR0ZXJuKEdy
YXBoaWNzQ28KIAogdm9pZCBJbWFnZUJ1ZmZlcjo6cGxhdGZvcm1UcmFuc2Zvcm1Db2xvclNwYWNl
KGNvbnN0IFZlY3RvcjxpbnQ+JiBsb29rVXBUYWJsZSkKIHsKKyAgICAvLyBGSVhNRTogRGlzYWJs
ZSBjb2xvciBzcGFjZSBjb252ZXJzaW9ucyBvbiBhY2NlbGVyYXRlZCBjYW52YXNlcyAoZm9yIG5v
dykuCisgICAgaWYgKG1fZGF0YS5tX3BsYXRmb3JtQ29udGV4dC5pc0FjY2VsZXJhdGVkKCkpIAor
ICAgICAgICByZXR1cm47CisKICAgICBjb25zdCBTa0JpdG1hcCYgYml0bWFwID0gKmNvbnRleHQo
KS0+cGxhdGZvcm1Db250ZXh0KCktPmJpdG1hcCgpOwogICAgIGlmIChiaXRtYXAuaXNOdWxsKCkp
CiAgICAgICAgIHJldHVybjsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVu
ZGVyU1ZHUmVzb3VyY2VDbGlwcGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlQ2xpcHBlci5jcHAJKHJldmlzaW9uIDEwMjAw
NCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VDbGlw
cGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTc5LDcgKzE3OSw3IEBAIGJvb2wgUmVuZGVyU1ZH
UmVzb3VyY2VDbGlwcGVyOjphcHBseUNsaXAKICAgICBGbG9hdFJlY3QgY2xhbXBlZEFic29sdXRl
VGFyZ2V0UmVjdCA9IFNWR0ltYWdlQnVmZmVyVG9vbHM6OmNsYW1wZWRBYnNvbHV0ZVRhcmdldFJl
Y3QoYWJzb2x1dGVUYXJnZXRSZWN0KTsKIAogICAgIGlmIChzaG91bGRDcmVhdGVDbGlwRGF0YSAm
JiAhY2xhbXBlZEFic29sdXRlVGFyZ2V0UmVjdC5pc0VtcHR5KCkpIHsKLSAgICAgICAgaWYgKCFT
VkdJbWFnZUJ1ZmZlclRvb2xzOjpjcmVhdGVJbWFnZUJ1ZmZlcihhYnNvbHV0ZVRhcmdldFJlY3Qs
IGNsYW1wZWRBYnNvbHV0ZVRhcmdldFJlY3QsIGNsaXBwZXJEYXRhLT5jbGlwTWFza0ltYWdlLCBD
b2xvclNwYWNlRGV2aWNlUkdCKSkKKyAgICAgICAgaWYgKCFTVkdJbWFnZUJ1ZmZlclRvb2xzOjpj
cmVhdGVJbWFnZUJ1ZmZlcihhYnNvbHV0ZVRhcmdldFJlY3QsIGNsYW1wZWRBYnNvbHV0ZVRhcmdl
dFJlY3QsIGNsaXBwZXJEYXRhLT5jbGlwTWFza0ltYWdlLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBV
bmFjY2VsZXJhdGVkKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgICAgICBHcmFw
aGljc0NvbnRleHQqIG1hc2tDb250ZXh0ID0gY2xpcHBlckRhdGEtPmNsaXBNYXNrSW1hZ2UtPmNv
bnRleHQoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVz
b3VyY2VGaWx0ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dmcvUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXIuY3BwCShyZXZpc2lvbiAxMDIwMDQpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlRmlsdGVyLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMzUsOCArMzUsMTAgQEAKICNpbmNsdWRlICJJbWFnZUJ1ZmZlci5oIgog
I2luY2x1ZGUgIkltYWdlRGF0YS5oIgogI2luY2x1ZGUgIkludFJlY3QuaCIKKyNpbmNsdWRlICJQ
YWdlLmgiCiAjaW5jbHVkZSAiUmVuZGVyU1ZHUmVzb3VyY2UuaCIKICNpbmNsdWRlICJSZW5kZXJT
VkdSZXNvdXJjZUZpbHRlclByaW1pdGl2ZS5oIgorI2luY2x1ZGUgIlNldHRpbmdzLmgiCiAjaW5j
bHVkZSAiU1ZHRWxlbWVudC5oIgogI2luY2x1ZGUgIlNWR0ZpbHRlci5oIgogI2luY2x1ZGUgIlNW
R0ZpbHRlckVsZW1lbnQuaCIKQEAgLTIyOSwxMyArMjMxLDE3IEBAIGJvb2wgUmVuZGVyU1ZHUmVz
b3VyY2VGaWx0ZXI6OmFwcGx5UmVzb3UKICAgICBhYnNvbHV0ZURyYXdpbmdSZWdpb24uc2NhbGUo
c2NhbGUud2lkdGgoKSwgc2NhbGUuaGVpZ2h0KCkpOwogCiAgICAgT3duUHRyPEltYWdlQnVmZmVy
PiBzb3VyY2VHcmFwaGljOwotICAgIGlmICghU1ZHSW1hZ2VCdWZmZXJUb29sczo6Y3JlYXRlSW1h
Z2VCdWZmZXIoYWJzb2x1dGVEcmF3aW5nUmVnaW9uLCBhYnNvbHV0ZURyYXdpbmdSZWdpb24sIHNv
dXJjZUdyYXBoaWMsIENvbG9yU3BhY2VMaW5lYXJSR0IpKSB7CisgICAgUmVuZGVyaW5nTW9kZSBy
ZW5kZXJpbmdNb2RlID0gb2JqZWN0LT5kb2N1bWVudCgpLT5wYWdlKCktPnNldHRpbmdzKCktPmFj
Y2VsZXJhdGVkRmlsdGVyc0VuYWJsZWQoKSA/IEFjY2VsZXJhdGVkIDogVW5hY2NlbGVyYXRlZDsK
KyAgICBpZiAoIVNWR0ltYWdlQnVmZmVyVG9vbHM6OmNyZWF0ZUltYWdlQnVmZmVyKGFic29sdXRl
RHJhd2luZ1JlZ2lvbiwgYWJzb2x1dGVEcmF3aW5nUmVnaW9uLCBzb3VyY2VHcmFwaGljLCBDb2xv
clNwYWNlTGluZWFyUkdCLCByZW5kZXJpbmdNb2RlKSkgewogICAgICAgICBBU1NFUlQoIW1fZmls
dGVyLmNvbnRhaW5zKG9iamVjdCkpOwogICAgICAgICBmaWx0ZXJEYXRhLT5zYXZlZENvbnRleHQg
PSBjb250ZXh0OwogICAgICAgICBtX2ZpbHRlci5zZXQob2JqZWN0LCBmaWx0ZXJEYXRhLmxlYWtQ
dHIoKSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAgICAgCisgICAgLy8gU2V0IHRo
ZSByZW5kZXJpbmcgbW9kZSBmcm9tIHRoZSBwYWdlJ3Mgc2V0dGluZ3MuCisgICAgZmlsdGVyRGF0
YS0+ZmlsdGVyLT5zZXRSZW5kZXJpbmdNb2RlKHJlbmRlcmluZ01vZGUpOworCiAgICAgR3JhcGhp
Y3NDb250ZXh0KiBzb3VyY2VHcmFwaGljQ29udGV4dCA9IHNvdXJjZUdyYXBoaWMtPmNvbnRleHQo
KTsKICAgICBBU1NFUlQoc291cmNlR3JhcGhpY0NvbnRleHQpOwogICAKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VHcmFkaWVudC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUdy
YWRpZW50LmNwcAkocmV2aXNpb24gMTAyMDA0KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUdyYWRpZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTIs
NyArOTIsNyBAQCBzdGF0aWMgaW5saW5lIGJvb2wgY3JlYXRlTWFza0FuZFN3YXBDb250CiAgICAg
ICAgIHJldHVybiBmYWxzZTsKIAogICAgIE93blB0cjxJbWFnZUJ1ZmZlcj4gbWFza0ltYWdlOwot
ICAgIGlmICghU1ZHSW1hZ2VCdWZmZXJUb29sczo6Y3JlYXRlSW1hZ2VCdWZmZXIoYWJzb2x1dGVU
YXJnZXRSZWN0LCBjbGFtcGVkQWJzb2x1dGVUYXJnZXRSZWN0LCBtYXNrSW1hZ2UsIENvbG9yU3Bh
Y2VEZXZpY2VSR0IpKQorICAgIGlmICghU1ZHSW1hZ2VCdWZmZXJUb29sczo6Y3JlYXRlSW1hZ2VC
dWZmZXIoYWJzb2x1dGVUYXJnZXRSZWN0LCBjbGFtcGVkQWJzb2x1dGVUYXJnZXRSZWN0LCBtYXNr
SW1hZ2UsIENvbG9yU3BhY2VEZXZpY2VSR0IsIFVuYWNjZWxlcmF0ZWQpKQogICAgICAgICByZXR1
cm4gZmFsc2U7CiAKICAgICBHcmFwaGljc0NvbnRleHQqIG1hc2tJbWFnZUNvbnRleHQgPSBtYXNr
SW1hZ2UtPmNvbnRleHQoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVu
ZGVyU1ZHUmVzb3VyY2VNYXNrZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VNYXNrZXIuY3BwCShyZXZpc2lvbiAxMDIwMDQp
CisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlTWFza2Vy
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTA2LDcgKzEwNiw3IEBAIGJvb2wgUmVuZGVyU1ZHUmVz
b3VyY2VNYXNrZXI6OmFwcGx5UmVzb3UKICAgICAgICAgY29uc3QgU1ZHUmVuZGVyU3R5bGUqIHN2
Z1N0eWxlID0gc3R5bGUoKS0+c3ZnU3R5bGUoKTsKICAgICAgICAgQVNTRVJUKHN2Z1N0eWxlKTsK
ICAgICAgICAgQ29sb3JTcGFjZSBjb2xvclNwYWNlID0gc3ZnU3R5bGUtPmNvbG9ySW50ZXJwb2xh
dGlvbigpID09IENJX0xJTkVBUlJHQiA/IENvbG9yU3BhY2VMaW5lYXJSR0IgOiBDb2xvclNwYWNl
RGV2aWNlUkdCOwotICAgICAgICBpZiAoIVNWR0ltYWdlQnVmZmVyVG9vbHM6OmNyZWF0ZUltYWdl
QnVmZmVyKGFic29sdXRlVGFyZ2V0UmVjdCwgY2xhbXBlZEFic29sdXRlVGFyZ2V0UmVjdCwgbWFz
a2VyRGF0YS0+bWFza0ltYWdlLCBjb2xvclNwYWNlKSkKKyAgICAgICAgaWYgKCFTVkdJbWFnZUJ1
ZmZlclRvb2xzOjpjcmVhdGVJbWFnZUJ1ZmZlcihhYnNvbHV0ZVRhcmdldFJlY3QsIGNsYW1wZWRB
YnNvbHV0ZVRhcmdldFJlY3QsIG1hc2tlckRhdGEtPm1hc2tJbWFnZSwgY29sb3JTcGFjZSwgVW5h
Y2NlbGVyYXRlZCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICAgICAgR3JhcGhp
Y3NDb250ZXh0KiBtYXNrSW1hZ2VDb250ZXh0ID0gbWFza2VyRGF0YS0+bWFza0ltYWdlLT5jb250
ZXh0KCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291
cmNlUGF0dGVybi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2
Zy9SZW5kZXJTVkdSZXNvdXJjZVBhdHRlcm4uY3BwCShyZXZpc2lvbiAxMDIwMDQpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlUGF0dGVybi5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTI1Miw3ICsyNTIsNyBAQCBQYXNzT3duUHRyPEltYWdlQnVmZmVyPiBS
ZW5kZXJTVkdSZXNvdXJjCiAKICAgICBPd25QdHI8SW1hZ2VCdWZmZXI+IHRpbGVJbWFnZTsKIAot
ICAgIGlmICghU1ZHSW1hZ2VCdWZmZXJUb29sczo6Y3JlYXRlSW1hZ2VCdWZmZXIoYWJzb2x1dGVU
aWxlQm91bmRhcmllcywgY2xhbXBlZEFic29sdXRlVGlsZUJvdW5kYXJpZXMsIHRpbGVJbWFnZSwg
Q29sb3JTcGFjZURldmljZVJHQikpCisgICAgaWYgKCFTVkdJbWFnZUJ1ZmZlclRvb2xzOjpjcmVh
dGVJbWFnZUJ1ZmZlcihhYnNvbHV0ZVRpbGVCb3VuZGFyaWVzLCBjbGFtcGVkQWJzb2x1dGVUaWxl
Qm91bmRhcmllcywgdGlsZUltYWdlLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBVbmFjY2VsZXJhdGVk
KSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBHcmFwaGljc0NvbnRleHQqIHRpbGVJ
bWFnZUNvbnRleHQgPSB0aWxlSW1hZ2UtPmNvbnRleHQoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdmcvU1ZHSW1hZ2VCdWZmZXJUb29scy5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdJbWFnZUJ1ZmZlclRvb2xzLmNwcAkocmV2aXNp
b24gMTAyMDA0KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdJbWFnZUJ1ZmZl
clRvb2xzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTIsNyArNTIsNyBAQCB2b2lkIFNWR0ltYWdl
QnVmZmVyVG9vbHM6OmNhbGN1bGF0ZVRyYW5zCiAgICAgfQogfQogCi1ib29sIFNWR0ltYWdlQnVm
ZmVyVG9vbHM6OmNyZWF0ZUltYWdlQnVmZmVyKGNvbnN0IEZsb2F0UmVjdCYgYWJzb2x1dGVUYXJn
ZXRSZWN0LCBjb25zdCBGbG9hdFJlY3QmIGNsYW1wZWRBYnNvbHV0ZVRhcmdldFJlY3QsIE93blB0
cjxJbWFnZUJ1ZmZlcj4mIGltYWdlQnVmZmVyLCBDb2xvclNwYWNlIGNvbG9yU3BhY2UpCitib29s
IFNWR0ltYWdlQnVmZmVyVG9vbHM6OmNyZWF0ZUltYWdlQnVmZmVyKGNvbnN0IEZsb2F0UmVjdCYg
YWJzb2x1dGVUYXJnZXRSZWN0LCBjb25zdCBGbG9hdFJlY3QmIGNsYW1wZWRBYnNvbHV0ZVRhcmdl
dFJlY3QsIE93blB0cjxJbWFnZUJ1ZmZlcj4mIGltYWdlQnVmZmVyLCBDb2xvclNwYWNlIGNvbG9y
U3BhY2UsIFJlbmRlcmluZ01vZGUgcmVuZGVyaW5nTW9kZSkKIHsKICAgICBJbnRTaXplIGltYWdl
U2l6ZShyb3VuZGVkSW1hZ2VCdWZmZXJTaXplKGNsYW1wZWRBYnNvbHV0ZVRhcmdldFJlY3Quc2l6
ZSgpKSk7CiAgICAgSW50U2l6ZSB1bmNsYW1wZWRJbWFnZVNpemUoU1ZHSW1hZ2VCdWZmZXJUb29s
czo6cm91bmRlZEltYWdlQnVmZmVyU2l6ZShhYnNvbHV0ZVRhcmdldFJlY3Quc2l6ZSgpKSk7CkBA
IC02MSw3ICs2MSw3IEBAIGJvb2wgU1ZHSW1hZ2VCdWZmZXJUb29sczo6Y3JlYXRlSW1hZ2VCdWYK
ICAgICBpZiAoaW1hZ2VTaXplLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0g
ICAgT3duUHRyPEltYWdlQnVmZmVyPiBpbWFnZSA9IEltYWdlQnVmZmVyOjpjcmVhdGUoaW1hZ2VT
aXplLCBjb2xvclNwYWNlKTsKKyAgICBPd25QdHI8SW1hZ2VCdWZmZXI+IGltYWdlID0gSW1hZ2VC
dWZmZXI6OmNyZWF0ZShpbWFnZVNpemUsIGNvbG9yU3BhY2UsIHJlbmRlcmluZ01vZGUpOwogICAg
IGlmICghaW1hZ2UpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIApJbmRleDogU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N2Zy9TVkdJbWFnZUJ1ZmZlclRvb2xzLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdJbWFnZUJ1ZmZlclRvb2xzLmgJKHJldmlzaW9u
IDEwMjAwNCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHSW1hZ2VCdWZmZXJU
b29scy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNSw3ICszNSw3IEBAIGNsYXNzIFJlbmRlck9iamVj
dDsKIGNsYXNzIFNWR0ltYWdlQnVmZmVyVG9vbHMgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxF
KFNWR0ltYWdlQnVmZmVyVG9vbHMpOwogcHVibGljOgotICAgIHN0YXRpYyBib29sIGNyZWF0ZUlt
YWdlQnVmZmVyKGNvbnN0IEZsb2F0UmVjdCYgYWJzb2x1dGVUYXJnZXRSZWN0LCBjb25zdCBGbG9h
dFJlY3QmIGNsYW1wZWRBYnNvbHV0ZVRhcmdldFJlY3QsIE93blB0cjxJbWFnZUJ1ZmZlcj4mLCBD
b2xvclNwYWNlKTsKKyAgICBzdGF0aWMgYm9vbCBjcmVhdGVJbWFnZUJ1ZmZlcihjb25zdCBGbG9h
dFJlY3QmIGFic29sdXRlVGFyZ2V0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBjbGFtcGVkQWJzb2x1
dGVUYXJnZXRSZWN0LCBPd25QdHI8SW1hZ2VCdWZmZXI+JiwgQ29sb3JTcGFjZSwgUmVuZGVyaW5n
TW9kZSk7CiAgICAgc3RhdGljIHZvaWQgcmVuZGVyU3VidHJlZVRvSW1hZ2VCdWZmZXIoSW1hZ2VC
dWZmZXIqLCBSZW5kZXJPYmplY3QqLCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mKTsKICAgICBzdGF0
aWMgdm9pZCBjbGlwVG9JbWFnZUJ1ZmZlcihHcmFwaGljc0NvbnRleHQqLCBjb25zdCBBZmZpbmVU
cmFuc2Zvcm0mIGFic29sdXRlVHJhbnNmb3JtLCBjb25zdCBGbG9hdFJlY3QmIGNsYW1wZWRBYnNv
bHV0ZVRhcmdldFJlY3QsIE93blB0cjxJbWFnZUJ1ZmZlcj4mKTsKIApJbmRleDogU291cmNlL1dl
YkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAkocmV2aXNpb24gMTAyMDA0KQorKysgU291cmNlL1dlYkNv
cmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMTQsNiArMzE0LDE2
IEBAIHZvaWQgSW50ZXJuYWxzOjpzZXRBY2NlbGVyYXRlZERyYXdpbmdFbmEKICAgICBkb2N1bWVu
dC0+c2V0dGluZ3MoKS0+c2V0QWNjZWxlcmF0ZWREcmF3aW5nRW5hYmxlZChlbmFibGVkKTsKIH0K
IAordm9pZCBJbnRlcm5hbHM6OnNldEFjY2VsZXJhdGVkRmlsdGVyc0VuYWJsZWQoRG9jdW1lbnQq
IGRvY3VtZW50LCBib29sIGVuYWJsZWQsIEV4Y2VwdGlvbkNvZGUmIGVjKQoreworICAgIGlmICgh
ZG9jdW1lbnQgfHwgIWRvY3VtZW50LT5zZXR0aW5ncygpKSB7CisgICAgICAgIGVjID0gSU5WQUxJ
RF9BQ0NFU1NfRVJSOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgZG9jdW1lbnQtPnNl
dHRpbmdzKCktPnNldEFjY2VsZXJhdGVkRmlsdGVyc0VuYWJsZWQoZW5hYmxlZCk7Cit9CisKIHZv
aWQgSW50ZXJuYWxzOjpzZXRFbmFibGVTY3JvbGxBbmltYXRvcihEb2N1bWVudCogZG9jdW1lbnQs
IGJvb2wgZW5hYmxlZCwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgaWYgKCFkb2N1bWVudCB8
fCAhZG9jdW1lbnQtPnNldHRpbmdzKCkpIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Rlc3Rpbmcv
SW50ZXJuYWxzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5h
bHMuaAkocmV2aXNpb24gMTAyMDA0KQorKysgU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5h
bHMuaAkod29ya2luZyBjb3B5KQpAQCAtNzksNiArNzksNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBz
ZXRFbmFibGVDb21wb3NpdGluZ0ZvckZpeGVkUG9zaXRpb24oRG9jdW1lbnQqLCBib29sIGVuYWJs
ZWQsIEV4Y2VwdGlvbkNvZGUmKTsKICAgICB2b2lkIHNldEVuYWJsZUNvbXBvc2l0aW5nRm9yU2Ny
b2xsYWJsZUZyYW1lcyhEb2N1bWVudCosIGJvb2wgZW5hYmxlZCwgRXhjZXB0aW9uQ29kZSYpOwog
ICAgIHZvaWQgc2V0QWNjZWxlcmF0ZWREcmF3aW5nRW5hYmxlZChEb2N1bWVudCosIGJvb2wgZW5h
YmxlZCwgRXhjZXB0aW9uQ29kZSYpOworICAgIHZvaWQgc2V0QWNjZWxlcmF0ZWRGaWx0ZXJzRW5h
YmxlZChEb2N1bWVudCosIGJvb2wgZW5hYmxlZCwgRXhjZXB0aW9uQ29kZSYpOwogCiAgICAgdm9p
ZCBzZXRFbmFibGVTY3JvbGxBbmltYXRvcihEb2N1bWVudCosIGJvb2wgZW5hYmxlZCwgRXhjZXB0
aW9uQ29kZSYpOwogICAgIHZvaWQgc2V0Wm9vbUFuaW1hdG9yVHJhbnNmb3JtKERvY3VtZW50Kiwg
ZmxvYXQgc2NhbGUsIGZsb2F0IHR4LCBmbG9hdCB0eSwgRXhjZXB0aW9uQ29kZSYpOwpJbmRleDog
U291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbAkocmV2aXNpb24gMTAyMDA0KQorKysgU291
cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC01Miw2
ICs1Miw3IEBAIG1vZHVsZSB3aW5kb3cgewogICAgICAgICB2b2lkIHNldEVuYWJsZUNvbXBvc2l0
aW5nRm9yRml4ZWRQb3NpdGlvbihpbiBEb2N1bWVudCBkb2N1bWVudCwgaW4gYm9vbGVhbiBlbmFi
bGVkKSByYWlzZXMoRE9NRXhjZXB0aW9uKTsKICAgICAgICAgdm9pZCBzZXRFbmFibGVDb21wb3Np
dGluZ0ZvclNjcm9sbGFibGVGcmFtZXMoaW4gRG9jdW1lbnQgZG9jdW1lbnQsIGluIGJvb2xlYW4g
ZW5hYmxlZCkgcmFpc2VzKERPTUV4Y2VwdGlvbik7CiAgICAgICAgIHZvaWQgc2V0QWNjZWxlcmF0
ZWREcmF3aW5nRW5hYmxlZChpbiBEb2N1bWVudCBkb2N1bWVudCwgaW4gYm9vbGVhbiBlbmFibGVk
KSByYWlzZXMoRE9NRXhjZXB0aW9uKTsKKyAgICAgICAgdm9pZCBzZXRBY2NlbGVyYXRlZEZpbHRl
cnNFbmFibGVkKGluIERvY3VtZW50IGRvY3VtZW50LCBpbiBib29sZWFuIGVuYWJsZWQpIHJhaXNl
cyhET01FeGNlcHRpb24pOwogICAgICAgICB2b2lkIHNldEVuYWJsZVNjcm9sbEFuaW1hdG9yKGlu
IERvY3VtZW50IGRvY3VtZW50LCBpbiBib29sZWFuIGVuYWJsZWQpIHJhaXNlcyhET01FeGNlcHRp
b24pOwogICAgICAgICB2b2lkIHNldFpvb21BbmltYXRvclRyYW5zZm9ybShpbiBEb2N1bWVudCBk
b2N1bWVudCwgaW4gZmxvYXQgc2NhbGUsIGluIGZsb2F0IHR4LCBpbiBmbG9hdCB0eSkgcmFpc2Vz
KERPTUV4Y2VwdGlvbik7CiAgICAgICAgIGZsb2F0IGdldFBhZ2VTY2FsZUZhY3RvcihpbiBEb2N1
bWVudCBkb2N1bWVudCkgcmFpc2VzKERPTUV4Y2VwdGlvbik7CkluZGV4OiBTb3VyY2UvV2ViS2l0
L2Nocm9taXVtL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVt
L0NoYW5nZUxvZwkocmV2aXNpb24gMTAyMDEwKQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9D
aGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNSBAQAorMjAxMS0xMi0wNSAgU3Rl
cGhlbiBXaGl0ZSAgPHNlbm9yYmxhbmNvQGNocm9taXVtLm9yZz4KKworICAgICAgICBBbGxvdyB0
aGUgSW1hZ2VCdWZmZXJzIHVzZWQgYnkgU1ZHIGZpbHRlcnMgdG8gYmUgYWNjZWxlcmF0ZWQKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTczODQyCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBwdWJsaWMvV2Vi
U2V0dGluZ3MuaDoKKyAgICAgICAgKiBzcmMvV2ViU2V0dGluZ3NJbXBsLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6V2ViU2V0dGluZ3NJbXBsOjpzZXRBY2NlbGVyYXRlZEZpbHRlcnNFbmFibGVkKToK
KyAgICAgICAgKiBzcmMvV2ViU2V0dGluZ3NJbXBsLmg6CisKIDIwMTEtMTItMDUgIFZzZXZvbG9k
IFZsYXNvdiAgPHZzZXZpa0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgZml4
ZWQgY2hyb21pdW0gREVQUyBzeW50YXguCkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1
YmxpYy9XZWJTZXR0aW5ncy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0v
cHVibGljL1dlYlNldHRpbmdzLmgJKHJldmlzaW9uIDEwMjAwNCkKKysrIFNvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vcHVibGljL1dlYlNldHRpbmdzLmgJKHdvcmtpbmcgY29weSkKQEAgLTExNyw2ICsx
MTcsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHNldExlZ2FjeUFjY2VsZXJhdGVkMmRD
YW52YXNFbmFibGVkKGJvb2wpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc2V0TWluaW11bUFjY2Vs
ZXJhdGVkMmRDYW52YXNTaXplKGludCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBzZXRBY2NlbGVy
YXRlZERyYXdpbmdFbmFibGVkKGJvb2wpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0QWNjZWxl
cmF0ZWRGaWx0ZXJzRW5hYmxlZChib29sKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHNldE1lbW9y
eUluZm9FbmFibGVkKGJvb2wpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc2V0SHlwZXJsaW5rQXVk
aXRpbmdFbmFibGVkKGJvb2wpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc2V0QXN5bmNocm9ub3Vz
U3BlbGxDaGVja2luZ0VuYWJsZWQoYm9vbCkgPSAwOwpJbmRleDogU291cmNlL1dlYktpdC9jaHJv
bWl1bS9zcmMvV2ViU2V0dGluZ3NJbXBsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3NyYy9XZWJTZXR0aW5nc0ltcGwuY3BwCShyZXZpc2lvbiAxMDIwMDQpCisrKyBT
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJTZXR0aW5nc0ltcGwuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0zNTgsNiArMzU4LDExIEBAIHZvaWQgV2ViU2V0dGluZ3NJbXBsOjpzZXRBY2NlbGVy
YXRlZERyYXcKICAgICBtX3NldHRpbmdzLT5zZXRBY2NlbGVyYXRlZERyYXdpbmdFbmFibGVkKGVu
YWJsZWQpOwogfQogCit2b2lkIFdlYlNldHRpbmdzSW1wbDo6c2V0QWNjZWxlcmF0ZWRGaWx0ZXJz
RW5hYmxlZChib29sIGVuYWJsZWQpCit7CisgICAgbV9zZXR0aW5ncy0+c2V0QWNjZWxlcmF0ZWRG
aWx0ZXJzRW5hYmxlZChlbmFibGVkKTsKK30KKwogdm9pZCBXZWJTZXR0aW5nc0ltcGw6OnNldEFj
Y2VsZXJhdGVkMmRDYW52YXNFbmFibGVkKGJvb2wgZW5hYmxlZCkKIHsKICAgICBtX3NldHRpbmdz
LT5zZXRBY2NlbGVyYXRlZDJkQ2FudmFzRW5hYmxlZChlbmFibGVkKTsKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNldHRpbmdzSW1wbC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNldHRpbmdzSW1wbC5oCShyZXZpc2lvbiAxMDIwMDQp
CisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJTZXR0aW5nc0ltcGwuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMTA5LDYgKzEwOSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgc2V0
TGVnYWN5QWNjZWxlcmF0ZWQyZENhbnZhc0VuYWJsZWQoYm9vbCk7CiAgICAgdmlydHVhbCB2b2lk
IHNldE1pbmltdW1BY2NlbGVyYXRlZDJkQ2FudmFzU2l6ZShpbnQpOwogICAgIHZpcnR1YWwgdm9p
ZCBzZXRBY2NlbGVyYXRlZERyYXdpbmdFbmFibGVkKGJvb2wpOworICAgIHZpcnR1YWwgdm9pZCBz
ZXRBY2NlbGVyYXRlZEZpbHRlcnNFbmFibGVkKGJvb2wpOwogICAgIHZpcnR1YWwgdm9pZCBzZXRN
ZW1vcnlJbmZvRW5hYmxlZChib29sKTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0SHlwZXJsaW5rQXVk
aXRpbmdFbmFibGVkKGJvb2wpOwogICAgIHZpcnR1YWwgdm9pZCBzZXRBc3luY2hyb25vdXNTcGVs
bENoZWNraW5nRW5hYmxlZChib29sKTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>