<?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>61099</bug_id>
          
          <creation_ts>2011-05-18 17:53:16 -0700</creation_ts>
          <short_desc>[chromium] Fix ownership of PlatformImage for ImageLayerChromiums</short_desc>
          <delta_ts>2011-06-23 18:17:53 -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>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="James Robinson">jamesr</reporter>
          <assigned_to name="James Robinson">jamesr</assigned_to>
          <cc>alokp</cc>
    
    <cc>enne</cc>
    
    <cc>jamesr</cc>
    
    <cc>kbr</cc>
    
    <cc>senorblanco</cc>
    
    <cc>vangelis</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>406151</commentid>
    <comment_count>0</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2011-05-18 17:53:16 -0700</bug_when>
    <thetext>[chromium] Fix ownership of PlatformImage for ImageLayerChromiums</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>406155</commentid>
    <comment_count>1</comment_count>
      <attachid>94015</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2011-05-18 17:58:56 -0700</bug_when>
    <thetext>Created attachment 94015
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>406472</commentid>
    <comment_count>2</comment_count>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2011-05-19 10:03:47 -0700</bug_when>
    <thetext>Strawman proposal: if the lifetimes of the layer, tiler, and updater are too entangled, would it make sense to go ahead and move the ownership of the updater to the layer at this point?

That would be a world where the layer clearly owned both the updater and the tiler, and one where the updater owned the PlatformImage.  The tiler would then just take a pointer to an updater during the prepare and update functions, which would make it clear that it had no ownership.  You could then skip all the RefPtr changes and leave them as OwnPtr.

(I think there are plenty of use cases for RefPtr, but I&apos;m always reluctant to introduce more uses of it.  It makes it much harder to reason about and debug where and when destruction occurs.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>408084</commentid>
    <comment_count>3</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2011-05-23 11:06:47 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; Strawman proposal: if the lifetimes of the layer, tiler, and updater are too entangled, would it make sense to go ahead and move the ownership of the updater to the layer at this point?
&gt; 
&gt; That would be a world where the layer clearly owned both the updater and the tiler, and one where the updater owned the PlatformImage.  The tiler would then just take a pointer to an updater during the prepare and update functions, which would make it clear that it had no ownership.  You could then skip all the RefPtr changes and leave them as OwnPtr.
&gt; 
&gt; (I think there are plenty of use cases for RefPtr, but I&apos;m always reluctant to introduce more uses of it.  It makes it much harder to reason about and debug where and when destruction occurs.)

That does sound better.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>408561</commentid>
    <comment_count>4</comment_count>
      <attachid>94540</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2011-05-23 18:54:56 -0700</bug_when>
    <thetext>Created attachment 94540
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>408567</commentid>
    <comment_count>5</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2011-05-23 18:59:23 -0700</bug_when>
    <thetext>How about this?  I expect heavy conflicts with alokp&apos;s patch :)

This patch makes it more obvious that draw() depends on the texture updater, which is definitely a design issue.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>410137</commentid>
    <comment_count>6</comment_count>
      <attachid>94905</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2011-05-25 19:45:53 -0700</bug_when>
    <thetext>Created attachment 94905
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>410139</commentid>
    <comment_count>7</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2011-05-25 19:46:59 -0700</bug_when>
    <thetext>How &apos;bout now?  This should make it a lot easier to divide the responsibilities of LayerTilerChromium into main thread and compositor thread portions.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>410571</commentid>
    <comment_count>8</comment_count>
      <attachid>94905</attachid>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2011-05-26 10:18:39 -0700</bug_when>
    <thetext>Comment on attachment 94905
Patch

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

This looks great to me.

&gt; Source/WebCore/platform/graphics/chromium/ImageLayerChromium.cpp:141
&gt; +        ImageLayerTextureUpdater* imageTextureUpdater = static_cast&lt;ImageLayerTextureUpdater*&gt;(m_textureUpdater.get());

The static_cast makes me uncomfortable, but we can fix that when we finally divorce ImageLayerChromium from ContentLayerChromium and they each have their own OwnPtr to a derived texture updater class.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>410725</commentid>
    <comment_count>9</comment_count>
      <attachid>94905</attachid>
    <who name="Alok Priyadarshi">alokp</who>
    <bug_when>2011-05-26 12:23:53 -0700</bug_when>
    <thetext>Comment on attachment 94905
Patch

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

I think moving the ownership of texture-updater to the content-layers make the design more complicated.
- Now Image layers have to update both tiler and texture-updater and do it in correct order
- Pass texture-updater to the tiler in all calls (even draw) under the implicit understanding that the texture-updater instance remains the same for all these calls.

I think part of the complication is arising from the fact that ImageLayer derives from ContentLayer. Would it help if we divorce ImageLayers before making this change?

&gt; Source/WebCore/platform/graphics/chromium/ContentLayerChromium.cpp:135
&gt;  {

m_textureUpdater needs to be cleared in ContentLayerChromium::cleanupResources()</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>410796</commentid>
    <comment_count>10</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2011-05-26 13:54:38 -0700</bug_when>
    <thetext>Splitting Image/Content apart will definitely clear this up.  Right now the main reason they are entangled is to share the implementation of draw().  I&apos;d like to move the draw() logic in a CCTiledLayerImpl at which point it should be pretty easy to split the classes up completely.  In order to do that, however, I need to disentangle the uploading part of LayerTilerChromium from the rendering part which is where this patch comes in.

Logically I don&apos;t think that the LayerTilerChromium should be responsible for updating itself, it&apos;s up to the layer to manage passing contents in and the tiler should just take care of managing the textures, shaders, and rendering.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>425693</commentid>
    <comment_count>11</comment_count>
      <attachid>98256</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2011-06-22 15:57:40 -0700</bug_when>
    <thetext>Created attachment 98256
merged up to ToT</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>425766</commentid>
    <comment_count>12</comment_count>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2011-06-22 17:19:28 -0700</bug_when>
    <thetext>I&apos;ll be happy to r+ this if someone more familiar with the compositor can do the unofficial review.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>425835</commentid>
    <comment_count>13</comment_count>
      <attachid>98256</attachid>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2011-06-22 18:29:08 -0700</bug_when>
    <thetext>Comment on attachment 98256
merged up to ToT

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

Unofficially, this looks good to me, other than that one nit.

&gt; Source/WebCore/platform/graphics/chromium/ImageLayerChromium.cpp:141
&gt; +        ImageLayerTextureUpdater* imageTextureUpdater = static_cast&lt;ImageLayerTextureUpdater*&gt;(m_textureUpdater.get());

Could you maybe add a // FIXME here that this static_cast can be removed once ImageLayerChromium no longer derives from ContentLayerChromium? I really dislike static_cast, so I&apos;d feel better if it was explicit that it was temporary.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>426333</commentid>
    <comment_count>14</comment_count>
      <attachid>98256</attachid>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2011-06-23 11:53:29 -0700</bug_when>
    <thetext>Comment on attachment 98256
merged up to ToT

rs=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>426370</commentid>
    <comment_count>15</comment_count>
      <attachid>98256</attachid>
    <who name="Alok Priyadarshi">alokp</who>
    <bug_when>2011-06-23 12:38:27 -0700</bug_when>
    <thetext>Comment on attachment 98256
merged up to ToT

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

&gt; Source/WebCore/platform/graphics/chromium/LayerTilerChromium.h:49
&gt; +    static PassOwnPtr&lt;LayerTilerChromium&gt; create(LayerRendererChromium*, const IntSize&amp; tileSize, BorderTexelOption);

I think it is fine to move the ownership of LayerTextureUpdater from LayerTilerChromium to the layer itself. I do not quite like passing the updater in these functions - prepareToUpdate(), updateRect(), and most importantly draw(). This is based on an IMPLICIT assumption that LayerTextureUpdater does not change. Can we still keep a pointer to LayerTextureUpdater in the tiler but not own it. It is not super elegant, but at least clears the assumption.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>426376</commentid>
    <comment_count>16</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2011-06-23 12:47:19 -0700</bug_when>
    <thetext>That would be worse, not better. The real problem is that the draw() implementation needs the updater at all, which I&apos;ll fix shortly. One thing at a time</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>426394</commentid>
    <comment_count>17</comment_count>
    <who name="Alok Priyadarshi">alokp</who>
    <bug_when>2011-06-23 13:10:17 -0700</bug_when>
    <thetext>(In reply to comment #16)
&gt; That would be worse, not better. The real problem is that the draw() implementation needs the updater at all, which I&apos;ll fix shortly.

how are you planning to fix that?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>426423</commentid>
    <comment_count>18</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2011-06-23 13:48:16 -0700</bug_when>
    <thetext>the only think draw() needs the updater for is to check the orientation of the tile textures, which IMO should be state on the tiler anyway.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>426682</commentid>
    <comment_count>19</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2011-06-23 18:17:53 -0700</bug_when>
    <thetext>Committed r89647: &lt;http://trac.webkit.org/changeset/89647&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>94015</attachid>
            <date>2011-05-18 17:58:56 -0700</date>
            <delta_ts>2011-05-23 11:06:58 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-61099-20110518175855.patch</filename>
            <type>text/plain</type>
            <size>19074</size>
            <attacher name="James Robinson">jamesr</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODY4MDcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBjNDAzMGY5OWExZjkyZjQw
M2YzYTE5M2I3OTc5ODNmMWVmN2I3MWEwLi5lMWI1MjY1ZDE0M2E5M2NhMDcwYmVmNzI2NjU3ZDVm
M2Q1NzExNjdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDkgQEAKKzIwMTEtMDUtMTggIEphbWVz
IFJvYmluc29uICA8amFtZXNyQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBbY2hyb21pdW1dIEZpeCBvd25lcnNoaXAgb2YgUGxh
dGZvcm1JbWFnZSBmb3IgSW1hZ2VMYXllckNocm9taXVtcworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjEwOTkKKworICAgICAgICBGb3IgYSBjb21wb3Np
dGVkIGltYWdlLCBib3RoIHRoZSBJbWFnZUxheWVyQ2hyb21pdW0gYW5kIGl0cyBhc3NvY2lhdGVk
IExheWVyVGlsZXJDaHJvbWl1bSBuZWVkIGFjY2VzcyB0byBhCisgICAgICAgIFBsYXRmb3JtSW1h
Z2UgLSB0aGUgSW1hZ2VMYXllckNocm9taXVtIGhhcyB0byB1cGRhdGUgdGhlIFBsYXRmb3JtSW1h
Z2UncyBjb250ZW50cyBhbmQgdGhlIExheWVyVGlsZXJDaHJvbWl1bSBoYXMKKyAgICAgICAgdG8g
dXBsb2FkIHBpeGVscyBmcm9tIGl0LiAgVGhpcyBwYXRjaCBtYWtlcyB0aGUgSW1hZ2VMYXllclRl
eHR1cmVVcGRhdGVyIGhhdmUgZXhjbHVzaXZlIG93bmVyc2hpcCBvZiB0aGUKKyAgICAgICAgUGxh
dGZvcm1JbWFnZSwgbWFrZXMgaXQgcmVmY291bnRlZCwgYW5kIGdpdmVzIGJvdGggdGhlIEltYWdl
TGF5ZXJDaHJvbWl1bSBhbmQgTGF5ZXJUaWxlckNocm9taXVtIGEgcmVmZXJlbmNlLgorICAgICAg
ICBUaGUgbGlmZXRpbWUgb2YgdGhlIGxheWVyIGFuZCB0aGUgdGlsZXIgYXJlIHJlbGF0ZWQsIGJ1
dCB0aGUgcmVsYXRpb25zaGlwIGlzIG5vdCBvYnZpb3VzIHNvIEkgdGhpbmsgaGF2aW5nIGJvdGgK
KyAgICAgICAgaG9sZCBhbiBleHBsaWNpdCByZWZlcmVuY2UgaXMgc2ltcGxlciB0byBtYWludGFp
bi4KKworICAgICAgICBQYXRjaCBhbHNvIGZpeGVzIGEgbnVtYmVyIG9mIG1pbm9yIHN0eWxlIGlz
c3VlcyAobWlzc2luZyBleHBsaWNpdCBrZXl3b3JkIG9uIGNvbnN0cnVjdG9yLCBldGMpLgorCisg
ICAgICAgIFJlZmFjdG9yIG9ubHksIG5vIG5ldyB0ZXN0cy4KKworICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL0NvbnRlbnRMYXllckNocm9taXVtLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkNvbnRlbnRMYXllclBhaW50ZXI6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpD
b250ZW50TGF5ZXJQYWludGVyOjpDb250ZW50TGF5ZXJQYWludGVyKToKKyAgICAgICAgKFdlYkNv
cmU6OkNvbnRlbnRMYXllckNocm9taXVtOjpjcmVhdGVUZXh0dXJlVXBkYXRlcik6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ29udGVudExheWVyQ2hyb21pdW0uaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9JbWFnZUxheWVyQ2hyb21pdW0uY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VMYXllclRleHR1cmVVcGRhdGVyOjpjcmVhdGUpOgor
ICAgICAgICAoV2ViQ29yZTo6SW1hZ2VMYXllclRleHR1cmVVcGRhdGVyOjp1cGRhdGVGcm9tSW1h
Z2UpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VMYXllclRleHR1cmVVcGRhdGVyOjppbWFnZVNp
emUpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VMYXllclRleHR1cmVVcGRhdGVyOjpJbWFnZUxh
eWVyVGV4dHVyZVVwZGF0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VMYXllckNocm9taXVt
OjpwYWludENvbnRlbnRzSWZEaXJ0eSk6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUxheWVyQ2hy
b21pdW06OnNldExheWVyUmVuZGVyZXIpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VMYXllckNo
cm9taXVtOjpjcmVhdGVUZXh0dXJlVXBkYXRlcik6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUxh
eWVyQ2hyb21pdW06OmNyZWF0ZVRleHR1cmVVcGRhdGVySWZOZWVkZWQpOgorICAgICAgICAoV2Vi
Q29yZTo6SW1hZ2VMYXllckNocm9taXVtOjpsYXllckJvdW5kcyk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vSW1hZ2VMYXllckNocm9taXVtLmg6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6TGF5ZXJSZW5kZXJlckNocm9taXVt
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclRleHR1cmVVcGRh
dGVyLmg6CisgICAgICAgIChXZWJDb3JlOjpMYXllclRleHR1cmVVcGRhdGVyOjpMYXllclRleHR1
cmVVcGRhdGVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclRl
eHR1cmVVcGRhdGVyQ2FudmFzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyVGV4dHVyZVVw
ZGF0ZXJCaXRtYXA6OmNyZWF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vTGF5ZXJUZXh0dXJlVXBkYXRlckNhbnZhcy5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL0xheWVyVGlsZXJDaHJvbWl1bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpM
YXllclRpbGVyQ2hyb21pdW06OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpMYXllclRpbGVy
Q2hyb21pdW06OkxheWVyVGlsZXJDaHJvbWl1bSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vTGF5ZXJUaWxlckNocm9taXVtLmg6CisKIDIwMTEtMDUtMTggIEVtaWwgQSBF
a2x1bmQgIDxlYWVAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFk
bGVyLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vQ29udGVudExheWVyQ2hyb21pdW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vQ29udGVudExheWVyQ2hyb21pdW0uY3BwCmluZGV4IDk0YzcyZTgxMDMy
Y2IxMTg0ZWNiOGYwMDU3OTA5ZjViYmI2ZDM4MmYuLjNmODE4NGQ1ODdjYThkZmNkZTE0OTg0NTkw
ZjczNGQ1ZmEwMDIwMWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL0NvbnRlbnRMYXllckNocm9taXVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Db250ZW50TGF5ZXJDaHJvbWl1bS5jcHAKQEAg
LTU1LDEwICs1NSwxMSBAQCB1c2luZyBuYW1lc3BhY2Ugc3RkOwogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiBjbGFzcyBDb250ZW50TGF5ZXJQYWludGVyIDogcHVibGljIExheWVyUGFpbnRlckNocm9t
aXVtIHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShDb250ZW50TGF5ZXJQYWludGVyKTsKIHB1
YmxpYzoKLSAgICBleHBsaWNpdCBDb250ZW50TGF5ZXJQYWludGVyKEdyYXBoaWNzTGF5ZXJDaHJv
bWl1bSogb3duZXIpCi0gICAgICAgIDogbV9vd25lcihvd25lcikKKyAgICBzdGF0aWMgUGFzc093
blB0cjxDb250ZW50TGF5ZXJQYWludGVyPiBjcmVhdGUoR3JhcGhpY3NMYXllckNocm9taXVtKiBv
d25lcikKICAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFB0cihuZXcgQ29udGVudExheWVyUGFp
bnRlcihvd25lcikpOwogICAgIH0KIAogICAgIHZpcnR1YWwgdm9pZCBwYWludChHcmFwaGljc0Nv
bnRleHQmIGNvbnRleHQsIGNvbnN0IEludFJlY3QmIGNvbnRlbnRSZWN0KQpAQCAtNjgsNiArNjks
MTEgQEAgcHVibGljOgogICAgICAgICBtX293bmVyLT5wYWludEdyYXBoaWNzTGF5ZXJDb250ZW50
cyhjb250ZXh0LCBjb250ZW50UmVjdCk7CiAgICAgfQogcHJpdmF0ZToKKyAgICBleHBsaWNpdCBD
b250ZW50TGF5ZXJQYWludGVyKEdyYXBoaWNzTGF5ZXJDaHJvbWl1bSogb3duZXIpCisgICAgICAg
IDogbV9vd25lcihvd25lcikKKyAgICB7CisgICAgfQorCiAgICAgR3JhcGhpY3NMYXllckNocm9t
aXVtKiBtX293bmVyOwogfTsKIApAQCAtMTE4LDEwICsxMjQsOSBAQCB2b2lkIENvbnRlbnRMYXll
ckNocm9taXVtOjpzZXRMYXllclJlbmRlcmVyKExheWVyUmVuZGVyZXJDaHJvbWl1bSogbGF5ZXJS
ZW5kZXJlcgogICAgIGNyZWF0ZVRpbGVySWZOZWVkZWQoKTsKIH0KIAotUGFzc093blB0cjxMYXll
clRleHR1cmVVcGRhdGVyPiBDb250ZW50TGF5ZXJDaHJvbWl1bTo6Y3JlYXRlVGV4dHVyZVVwZGF0
ZXIoKQorUGFzc1JlZlB0cjxMYXllclRleHR1cmVVcGRhdGVyPiBDb250ZW50TGF5ZXJDaHJvbWl1
bTo6Y3JlYXRlVGV4dHVyZVVwZGF0ZXIoKQogewotICAgIE93blB0cjxMYXllclBhaW50ZXJDaHJv
bWl1bT4gcGFpbnRlciA9IGFkb3B0UHRyKG5ldyBDb250ZW50TGF5ZXJQYWludGVyKG1fb3duZXIp
KTsKLSAgICByZXR1cm4gYWRvcHRQdHIobmV3IExheWVyVGV4dHVyZVVwZGF0ZXJCaXRtYXAobGF5
ZXJSZW5kZXJlckNvbnRleHQoKSwgcGFpbnRlci5yZWxlYXNlKCksIGxheWVyUmVuZGVyZXIoKS0+
Y29udGV4dFN1cHBvcnRzTWFwU3ViKCkpKTsKKyAgICByZXR1cm4gTGF5ZXJUZXh0dXJlVXBkYXRl
ckJpdG1hcDo6Y3JlYXRlKGxheWVyUmVuZGVyZXJDb250ZXh0KCksIENvbnRlbnRMYXllclBhaW50
ZXI6OmNyZWF0ZShtX293bmVyKSwgbGF5ZXJSZW5kZXJlcigpLT5jb250ZXh0U3VwcG9ydHNNYXBT
dWIoKSk7CiB9CiAKIFRyYW5zZm9ybWF0aW9uTWF0cml4IENvbnRlbnRMYXllckNocm9taXVtOjp0
aWxpbmdUcmFuc2Zvcm0oKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vQ29udGVudExheWVyQ2hyb21pdW0uaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NvbnRlbnRMYXllckNocm9taXVtLmgKaW5kZXggY2Iy
ZTFmYjQyMTE1NWEyNzE4YjE2MGExM2E4NWNhNTY2ZGU0MWIzMi4uYzBmNDYxYzdkNWNhNDllYjU0
ZDI1YzdmOGQxMzI5Mjk4MmQ2OTkwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vQ29udGVudExheWVyQ2hyb21pdW0uaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Db250ZW50TGF5ZXJDaHJvbWl1bS5o
CkBAIC02OSw3ICs2OSw3IEBAIHByb3RlY3RlZDoKICAgICB2aXJ0dWFsIHZvaWQgY2xlYW51cFJl
c291cmNlcygpOwogICAgIHZpcnR1YWwgdm9pZCBzZXRMYXllclJlbmRlcmVyKExheWVyUmVuZGVy
ZXJDaHJvbWl1bSopOwogCi0gICAgdmlydHVhbCBQYXNzT3duUHRyPExheWVyVGV4dHVyZVVwZGF0
ZXI+IGNyZWF0ZVRleHR1cmVVcGRhdGVyKCk7CisgICAgdmlydHVhbCBQYXNzUmVmUHRyPExheWVy
VGV4dHVyZVVwZGF0ZXI+IGNyZWF0ZVRleHR1cmVVcGRhdGVyKCk7CiAKICAgICB2aXJ0dWFsIElu
dFJlY3QgbGF5ZXJCb3VuZHMoKSBjb25zdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vSW1hZ2VMYXllckNocm9taXVtLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ltYWdlTGF5ZXJDaHJvbWl1bS5j
cHAKaW5kZXggMWIzY2Y1MTRhNTc1ZTdkMTQwNWI5YzliMjVkZmY1NzZlNzc4ZGEzZC4uYjE5MWJm
MDc3M2EzYTY1NjNiMmEzMjg3NjIzMjM2MTU4ZTljZGViYSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vSW1hZ2VMYXllckNocm9taXVtLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9JbWFnZUxheWVy
Q2hyb21pdW0uY3BwCkBAIC00NSwxMiArNDUsMTEgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBj
bGFzcyBJbWFnZUxheWVyVGV4dHVyZVVwZGF0ZXIgOiBwdWJsaWMgTGF5ZXJUZXh0dXJlVXBkYXRl
ciB7CiBwdWJsaWM6Ci0gICAgSW1hZ2VMYXllclRleHR1cmVVcGRhdGVyKEdyYXBoaWNzQ29udGV4
dDNEKiBjb250ZXh0LCBjb25zdCBQbGF0Zm9ybUltYWdlJiBpbWFnZSwgYm9vbCB1c2VNYXBUZXhT
dWJJbWFnZSkKLSAgICAgICAgOiBMYXllclRleHR1cmVVcGRhdGVyKGNvbnRleHQpCi0gICAgICAg
ICwgbV9pbWFnZShpbWFnZSkKLSAgICAgICAgLCBtX3RleFN1YkltYWdlKHVzZU1hcFRleFN1Yklt
YWdlKQorICAgIHN0YXRpYyBQYXNzUmVmUHRyPEltYWdlTGF5ZXJUZXh0dXJlVXBkYXRlcj4gY3Jl
YXRlKEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCBib29sIHVzZU1hcFRleFN1YkltYWdlKQog
ICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBJbWFnZUxheWVyVGV4dHVyZVVwZGF0
ZXIoY29udGV4dCwgdXNlTWFwVGV4U3ViSW1hZ2UpKTsKICAgICB9CisKICAgICB2aXJ0dWFsIH5J
bWFnZUxheWVyVGV4dHVyZVVwZGF0ZXIoKSB7IH0KIAogICAgIHZpcnR1YWwgT3JpZW50YXRpb24g
b3JpZW50YXRpb24oKSB7IHJldHVybiBMYXllclRleHR1cmVVcGRhdGVyOjpCb3R0b21VcE9yaWVu
dGF0aW9uOyB9CkBAIC03NiwxNCArNzUsMjkgQEAgcHVibGljOgogICAgICAgICBtX3RleFN1Yklt
YWdlLnVwbG9hZChtX2ltYWdlLnBpeGVscygpLCBpbWFnZVJlY3QoKSwgY2xpcHBlZFNvdXJjZVJl
Y3QsIGNsaXBwZWREZXN0UmVjdCwgY29udGV4dCgpKTsKICAgICB9CiAKKyAgICB2b2lkIHVwZGF0
ZUZyb21JbWFnZShOYXRpdmVJbWFnZVB0ciBuYXRpdmVJbWFnZSkKKyAgICB7CisgICAgICAgIG1f
aW1hZ2UudXBkYXRlRnJvbUltYWdlKG5hdGl2ZUltYWdlKTsKKyAgICB9CisKKyAgICBJbnRTaXpl
IGltYWdlU2l6ZSgpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gbV9pbWFnZS5zaXplKCk7
CisgICAgfQorCiBwcml2YXRlOgorICAgIEltYWdlTGF5ZXJUZXh0dXJlVXBkYXRlcihHcmFwaGlj
c0NvbnRleHQzRCogY29udGV4dCwgYm9vbCB1c2VNYXBUZXhTdWJJbWFnZSkKKyAgICAgICAgOiBM
YXllclRleHR1cmVVcGRhdGVyKGNvbnRleHQpCisgICAgICAgICwgbV90ZXhTdWJJbWFnZSh1c2VN
YXBUZXhTdWJJbWFnZSkKKyAgICB7CisgICAgfQorCiAgICAgSW50UmVjdCBpbWFnZVJlY3QoKSBj
b25zdAogICAgIHsKICAgICAgICAgcmV0dXJuIEludFJlY3QoSW50UG9pbnQ6Onplcm8oKSwgbV9p
bWFnZS5zaXplKCkpOwogICAgIH0KIAotICAgIC8vIEZJWE1FOiBJbWFnZUxheWVyVGV4dHVyZVVw
ZGF0ZXIgc2hvdWxkIHJhdGhlciBvd24gYSBQbGF0Zm9ybUltYWdlIHJhdGhlciB0aGFuIGtlZXBp
bmcgYSByZWZlcmVuY2UuCi0gICAgY29uc3QgUGxhdGZvcm1JbWFnZSYgbV9pbWFnZTsKKyAgICBQ
bGF0Zm9ybUltYWdlIG1faW1hZ2U7CiAgICAgTGF5ZXJUZXh0dXJlU3ViSW1hZ2UgbV90ZXhTdWJJ
bWFnZTsKIH07CiAKQEAgLTExOSw5ICsxMzMsMTAgQEAgdm9pZCBJbWFnZUxheWVyQ2hyb21pdW06
OnBhaW50Q29udGVudHNJZkRpcnR5KGNvbnN0IEludFJlY3QmKQogICAgIEFTU0VSVChsYXllclJl
bmRlcmVyKCkpOwogCiAgICAgaWYgKCFtX2RpcnR5UmVjdC5pc0VtcHR5KCkpIHsKLSAgICAgICAg
bV9kZWNvZGVkSW1hZ2UudXBkYXRlRnJvbUltYWdlKG1fY29udGVudHMtPm5hdGl2ZUltYWdlRm9y
Q3VycmVudEZyYW1lKCkpOwotICAgICAgICB1cGRhdGVMYXllclNpemUobV9kZWNvZGVkSW1hZ2Uu
c2l6ZSgpKTsKLSAgICAgICAgSW50UmVjdCBwYWludFJlY3QoSW50UG9pbnQoMCwgMCksIG1fZGVj
b2RlZEltYWdlLnNpemUoKSk7CisgICAgICAgIGNyZWF0ZVRleHR1cmVVcGRhdGVySWZOZWVkZWQo
KTsKKyAgICAgICAgbV90ZXh0dXJlVXBkYXRlci0+dXBkYXRlRnJvbUltYWdlKG1fY29udGVudHMt
Pm5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCkpOworICAgICAgICB1cGRhdGVMYXllclNpemUo
bV90ZXh0dXJlVXBkYXRlci0+aW1hZ2VTaXplKCkpOworICAgICAgICBJbnRSZWN0IHBhaW50UmVj
dChJbnRQb2ludCgwLCAwKSwgbV90ZXh0dXJlVXBkYXRlci0+aW1hZ2VTaXplKCkpOwogICAgICAg
ICBpZiAoIW1fZGlydHlSZWN0LmlzRW1wdHkoKSkgewogICAgICAgICAgICAgbV90aWxlci0+aW52
YWxpZGF0ZVJlY3QocGFpbnRSZWN0KTsKICAgICAgICAgICAgIG1fZGlydHlSZWN0ID0gSW50UmVj
dCgpOwpAQCAtMTM1LDE0ICsxNTAsMzAgQEAgdm9pZCBJbWFnZUxheWVyQ2hyb21pdW06OnVwZGF0
ZUNvbXBvc2l0b3JSZXNvdXJjZXMoKQogICAgIG1fdGlsZXItPnVwZGF0ZVJlY3QoKTsKIH0KIAot
UGFzc093blB0cjxMYXllclRleHR1cmVVcGRhdGVyPiBJbWFnZUxheWVyQ2hyb21pdW06OmNyZWF0
ZVRleHR1cmVVcGRhdGVyKCkKK3ZvaWQgSW1hZ2VMYXllckNocm9taXVtOjpzZXRMYXllclJlbmRl
cmVyKExheWVyUmVuZGVyZXJDaHJvbWl1bSogbmV3TGF5ZXJSZW5kZXJlcikKK3sKKyAgICBpZiAo
bmV3TGF5ZXJSZW5kZXJlciAhPSBsYXllclJlbmRlcmVyKCkpCisgICAgICAgIG1fdGV4dHVyZVVw
ZGF0ZXIgPSAwOworICAgIENvbnRlbnRMYXllckNocm9taXVtOjpzZXRMYXllclJlbmRlcmVyKG5l
d0xheWVyUmVuZGVyZXIpOworfQorCitQYXNzUmVmUHRyPExheWVyVGV4dHVyZVVwZGF0ZXI+IElt
YWdlTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlVGV4dHVyZVVwZGF0ZXIoKQoreworICAgIGNyZWF0ZVRl
eHR1cmVVcGRhdGVySWZOZWVkZWQoKTsKKyAgICByZXR1cm4gbV90ZXh0dXJlVXBkYXRlcjsKK30K
Kwordm9pZCBJbWFnZUxheWVyQ2hyb21pdW06OmNyZWF0ZVRleHR1cmVVcGRhdGVySWZOZWVkZWQo
KQogewotICAgIHJldHVybiBhZG9wdFB0cihuZXcgSW1hZ2VMYXllclRleHR1cmVVcGRhdGVyKGxh
eWVyUmVuZGVyZXJDb250ZXh0KCksIG1fZGVjb2RlZEltYWdlLCBsYXllclJlbmRlcmVyKCktPmNv
bnRleHRTdXBwb3J0c01hcFN1YigpKSk7CisgICAgaWYgKCFtX3RleHR1cmVVcGRhdGVyKQorICAg
ICAgICBtX3RleHR1cmVVcGRhdGVyID0gSW1hZ2VMYXllclRleHR1cmVVcGRhdGVyOjpjcmVhdGUo
bGF5ZXJSZW5kZXJlckNvbnRleHQoKSwgbGF5ZXJSZW5kZXJlcigpLT5jb250ZXh0U3VwcG9ydHNN
YXBTdWIoKSk7CiB9CiAKIEludFJlY3QgSW1hZ2VMYXllckNocm9taXVtOjpsYXllckJvdW5kcygp
IGNvbnN0CiB7Ci0gICAgcmV0dXJuIEludFJlY3QoSW50UG9pbnQoMCwgMCksIG1fZGVjb2RlZElt
YWdlLnNpemUoKSk7CisgICAgaWYgKCFtX3RleHR1cmVVcGRhdGVyKQorICAgICAgICByZXR1cm4g
SW50UmVjdCgpOworICAgIHJldHVybiBJbnRSZWN0KEludFBvaW50KCksIG1fdGV4dHVyZVVwZGF0
ZXItPmltYWdlU2l6ZSgpKTsKIH0KIAogVHJhbnNmb3JtYXRpb25NYXRyaXggSW1hZ2VMYXllckNo
cm9taXVtOjp0aWxpbmdUcmFuc2Zvcm0oKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vSW1hZ2VMYXllckNocm9taXVtLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9JbWFnZUxheWVyQ2hyb21pdW0uaAppbmRl
eCAxM2QwOWMyYWM1NGI4MWJjYmFjN2ViZDZkYmMxZTBjMmQyN2I0MjQxLi4yNmQyMzg2YTZmOTEy
NGY5ZmYzMWQ1OGRjNTBlNWM1ZmE3YzFlZDkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9JbWFnZUxheWVyQ2hyb21pdW0uaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9JbWFnZUxheWVyQ2hyb21pdW0u
aApAQCAtNDQsNiArNDQsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBJbWFnZTsK
K2NsYXNzIEltYWdlTGF5ZXJUZXh0dXJlVXBkYXRlcjsKIAogLy8gQSBMYXllciB0aGF0IGNvbnRh
aW5zIG9ubHkgYW4gSW1hZ2UgZWxlbWVudC4KIGNsYXNzIEltYWdlTGF5ZXJDaHJvbWl1bSA6IHB1
YmxpYyBDb250ZW50TGF5ZXJDaHJvbWl1bSB7CkBAIC01OSwxNCArNjAsMTggQEAgcHVibGljOgog
cHJvdGVjdGVkOgogICAgIHZpcnR1YWwgY29uc3QgY2hhciogbGF5ZXJUeXBlQXNTdHJpbmcoKSBj
b25zdCB7IHJldHVybiAiSW1hZ2VMYXllciI7IH0KIAotICAgIHZpcnR1YWwgUGFzc093blB0cjxM
YXllclRleHR1cmVVcGRhdGVyPiBjcmVhdGVUZXh0dXJlVXBkYXRlcigpOworICAgIHZpcnR1YWwg
dm9pZCBzZXRMYXllclJlbmRlcmVyKExheWVyUmVuZGVyZXJDaHJvbWl1bSopOworCisgICAgdmly
dHVhbCBQYXNzUmVmUHRyPExheWVyVGV4dHVyZVVwZGF0ZXI+IGNyZWF0ZVRleHR1cmVVcGRhdGVy
KCk7CiAgICAgdmlydHVhbCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCB0aWxpbmdUcmFuc2Zvcm0oKTsK
ICAgICB2aXJ0dWFsIEludFJlY3QgbGF5ZXJCb3VuZHMoKSBjb25zdDsKIAogcHJpdmF0ZToKICAg
ICBJbWFnZUxheWVyQ2hyb21pdW0oR3JhcGhpY3NMYXllckNocm9taXVtKiBvd25lcik7CiAKLSAg
ICBQbGF0Zm9ybUltYWdlIG1fZGVjb2RlZEltYWdlOworICAgIHZvaWQgY3JlYXRlVGV4dHVyZVVw
ZGF0ZXJJZk5lZWRlZCgpOworCisgICAgUmVmUHRyPEltYWdlTGF5ZXJUZXh0dXJlVXBkYXRlcj4g
bV90ZXh0dXJlVXBkYXRlcjsKICAgICBOYXRpdmVJbWFnZVB0ciBtX2ltYWdlRm9yQ3VycmVudEZy
YW1lOwogICAgIFJlZlB0cjxJbWFnZT4gbV9jb250ZW50czsKIH07CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21p
dW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJS
ZW5kZXJlckNocm9taXVtLmNwcAppbmRleCA3M2EwZDg0NWU0MTU0ZWFiNDY1MTI4MmMwOTM4NmQz
ZDRmZTcxZjllLi5iNzU1NWQ5YWIwNTFlOWM4NGJlZjIyNTZjOWY1OGI3MjM1NzYxMDY3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJl
bmRlcmVyQ2hyb21pdW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5jcHAKQEAgLTEyOCw3ICsxMjgsNyBAQCBM
YXllclJlbmRlcmVyQ2hyb21pdW06OkxheWVyUmVuZGVyZXJDaHJvbWl1bShQYXNzUmVmUHRyPEdy
YXBoaWNzQ29udGV4dDNEPiBjb250ZQogICAgICAgICBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMo
KS0+ZW5zdXJlRW5hYmxlZCgiR0xfQ0hST01JVU1fbWFwX3N1YiIpOwogICAgIG1faGFyZHdhcmVD
b21wb3NpdGluZyA9IGluaXRpYWxpemVTaGFyZWRPYmplY3RzKCk7CiAKLSAgICBPd25QdHI8TGF5
ZXJUZXh0dXJlVXBkYXRlcj4gdGV4dHVyZVVwZGF0ZXIgPSBhZG9wdFB0cihuZXcgTGF5ZXJUZXh0
dXJlVXBkYXRlckJpdG1hcChtX2NvbnRleHQuZ2V0KCksIGNvbnRlbnRQYWludCwgbV9jb250ZXh0
U3VwcG9ydHNNYXBTdWIpKTsKKyAgICBSZWZQdHI8TGF5ZXJUZXh0dXJlVXBkYXRlcj4gdGV4dHVy
ZVVwZGF0ZXIgPSBMYXllclRleHR1cmVVcGRhdGVyQml0bWFwOjpjcmVhdGUobV9jb250ZXh0Lmdl
dCgpLCBjb250ZW50UGFpbnQsIG1fY29udGV4dFN1cHBvcnRzTWFwU3ViKTsKICAgICBtX3Jvb3RM
YXllckNvbnRlbnRUaWxlciA9IExheWVyVGlsZXJDaHJvbWl1bTo6Y3JlYXRlKHRoaXMsIHRleHR1
cmVVcGRhdGVyLnJlbGVhc2UoKSwgSW50U2l6ZSgyNTYsIDI1NiksIExheWVyVGlsZXJDaHJvbWl1
bTo6Tm9Cb3JkZXJUZXhlbHMpOwogICAgIEFTU0VSVChtX3Jvb3RMYXllckNvbnRlbnRUaWxlcik7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L0xheWVyVGV4dHVyZVVwZGF0ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL0xheWVyVGV4dHVyZVVwZGF0ZXIuaAppbmRleCBlNTk3M2RkNTZlNjk4ZmVkNWJm
NjRhM2E1ZjAxYWM3MGQ0YzhiZDk4Li5lYjcyYjUxMGI5MmI3NTEwY2RhNTk0MzI2MmE5YTExNzVk
YmY2MDJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9MYXllclRleHR1cmVVcGRhdGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJUZXh0dXJlVXBkYXRlci5oCkBAIC0yOSw2ICsyOSw4IEBA
CiAKICNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCiAKKyNpbmNsdWRlIDx3dGYvUmVm
Q291bnRlZC5oPgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEdyYXBoaWNzQ29udGV4
dDNEOwpAQCAtMzYsOSArMzgsOCBAQCBjbGFzcyBJbnRSZWN0OwogY2xhc3MgSW50U2l6ZTsKIGNs
YXNzIExheWVyVGV4dHVyZTsKIAotY2xhc3MgTGF5ZXJUZXh0dXJlVXBkYXRlciB7CitjbGFzcyBM
YXllclRleHR1cmVVcGRhdGVyIDogcHVibGljIFJlZkNvdW50ZWQ8TGF5ZXJUZXh0dXJlVXBkYXRl
cj4gewogcHVibGljOgotICAgIGV4cGxpY2l0IExheWVyVGV4dHVyZVVwZGF0ZXIoR3JhcGhpY3ND
b250ZXh0M0QqIGNvbnRleHQpIDogbV9jb250ZXh0KGNvbnRleHQpIHsgfQogICAgIHZpcnR1YWwg
fkxheWVyVGV4dHVyZVVwZGF0ZXIoKSB7IH0KIAogICAgIGVudW0gT3JpZW50YXRpb24gewpAQCAt
NTEsNiArNTIsOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZVRleHR1cmVSZWN0
KExheWVyVGV4dHVyZSosIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3Qm
IGRlc3RSZWN0KSA9IDA7CiAKIHByb3RlY3RlZDoKKyAgICBleHBsaWNpdCBMYXllclRleHR1cmVV
cGRhdGVyKEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0KSA6IG1fY29udGV4dChjb250ZXh0KSB7
IH0KKwogICAgIEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0KCkgY29uc3QgeyByZXR1cm4gbV9j
b250ZXh0OyB9CiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclRleHR1cmVVcGRhdGVyQ2FudmFzLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyVGV4dHVyZVVwZGF0ZXJD
YW52YXMuY3BwCmluZGV4IDQ1MjgwOTcwMmNmZWExMmJjNjE3ODhmMzcwODMwZWEwMWVlZWMxOGUu
LjBjOTllZmExYjU0ZTFjZDhkZWI1YjJmOTg0YmFkNjJmZmJiZTIyNjcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyVGV4dHVyZVVwZGF0
ZXJDYW52YXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL0xheWVyVGV4dHVyZVVwZGF0ZXJDYW52YXMuY3BwCkBAIC01Myw2ICs1MywxMSBAQCB2b2lk
IExheWVyVGV4dHVyZVVwZGF0ZXJDYW52YXM6OnBhaW50Q29udGVudHMoR3JhcGhpY3NDb250ZXh0
JiBjb250ZXh0LCBjb25zdCBJbgogICAgIG1fY29udGVudFJlY3QgPSBjb250ZW50UmVjdDsKIH0K
IAorUGFzc1JlZlB0cjxMYXllclRleHR1cmVVcGRhdGVyQml0bWFwPiBMYXllclRleHR1cmVVcGRh
dGVyQml0bWFwOjpjcmVhdGUoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQsIFBhc3NPd25QdHI8
TGF5ZXJQYWludGVyQ2hyb21pdW0+IHBhaW50ZXIsIGJvb2wgdXNlTWFwVGV4U3ViSW1hZ2UpCit7
CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBMYXllclRleHR1cmVVcGRhdGVyQml0bWFwKGNvbnRl
eHQsIHBhaW50ZXIsIHVzZU1hcFRleFN1YkltYWdlKSk7Cit9CisKIExheWVyVGV4dHVyZVVwZGF0
ZXJCaXRtYXA6OkxheWVyVGV4dHVyZVVwZGF0ZXJCaXRtYXAoR3JhcGhpY3NDb250ZXh0M0QqIGNv
bnRleHQsIFBhc3NPd25QdHI8TGF5ZXJQYWludGVyQ2hyb21pdW0+IHBhaW50ZXIsIGJvb2wgdXNl
TWFwVGV4U3ViSW1hZ2UpCiAgICAgOiBMYXllclRleHR1cmVVcGRhdGVyQ2FudmFzKGNvbnRleHQs
IHBhaW50ZXIpCiAgICAgLCBtX3RleFN1YkltYWdlKHVzZU1hcFRleFN1YkltYWdlKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJUZXh0
dXJlVXBkYXRlckNhbnZhcy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vTGF5ZXJUZXh0dXJlVXBkYXRlckNhbnZhcy5oCmluZGV4IGFlY2VmZDg5MGM3ZWU4Mzc2
ZTJmYzI2NjgyNmNiYjRlMzNhNzE5MDEuLmQ5ZmI2MDI1ZDBkODMyZmVhMjBjOGE0ZjA1MjE1ZDdh
YjZhY2M5YTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL0xheWVyVGV4dHVyZVVwZGF0ZXJDYW52YXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclRleHR1cmVVcGRhdGVyQ2FudmFzLmgKQEAg
LTQyLDE0ICs0MiwxNiBAQCBjbGFzcyBMYXllclBhaW50ZXJDaHJvbWl1bTsKIC8vIEEgTGF5ZXJU
ZXh0dXJlVXBkYXRlciB3aXRoIGFuIGludGVybmFsIGNhbnZhcy4KIGNsYXNzIExheWVyVGV4dHVy
ZVVwZGF0ZXJDYW52YXMgOiBwdWJsaWMgTGF5ZXJUZXh0dXJlVXBkYXRlciB7CiBwdWJsaWM6Ci0g
ICAgTGF5ZXJUZXh0dXJlVXBkYXRlckNhbnZhcyhHcmFwaGljc0NvbnRleHQzRCosIFBhc3NPd25Q
dHI8TGF5ZXJQYWludGVyQ2hyb21pdW0+KTsKICAgICB2aXJ0dWFsIH5MYXllclRleHR1cmVVcGRh
dGVyQ2FudmFzKCkgeyB9CiAKIHByb3RlY3RlZDoKKyAgICBMYXllclRleHR1cmVVcGRhdGVyQ2Fu
dmFzKEdyYXBoaWNzQ29udGV4dDNEKiwgUGFzc093blB0cjxMYXllclBhaW50ZXJDaHJvbWl1bT4p
OworCiAgICAgdm9pZCBwYWludENvbnRlbnRzKEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEludFJl
Y3QmIGNvbnRlbnRSZWN0KTsKICAgICBjb25zdCBJbnRSZWN0JiBjb250ZW50UmVjdCgpIGNvbnN0
IHsgcmV0dXJuIG1fY29udGVudFJlY3Q7IH0KIAogcHJpdmF0ZToKKwogICAgIEludFJlY3QgbV9j
b250ZW50UmVjdDsKICAgICBPd25QdHI8TGF5ZXJQYWludGVyQ2hyb21pdW0+IG1fcGFpbnRlcjsK
IH07CkBAIC01Nyw3ICs1OSw3IEBAIHByaXZhdGU6CiAvLyBBIExheWVyVGV4dHVyZVVwZGF0ZXIg
d2l0aCBhbiBpbnRlcm5hbCBiaXRtYXAgY2FudmFzLgogY2xhc3MgTGF5ZXJUZXh0dXJlVXBkYXRl
ckJpdG1hcCA6IHB1YmxpYyBMYXllclRleHR1cmVVcGRhdGVyQ2FudmFzIHsKIHB1YmxpYzoKLSAg
ICBMYXllclRleHR1cmVVcGRhdGVyQml0bWFwKEdyYXBoaWNzQ29udGV4dDNEKiwgUGFzc093blB0
cjxMYXllclBhaW50ZXJDaHJvbWl1bT4sIGJvb2wgdXNlTWFwVGV4U3ViSW1hZ2UpOworICAgIHN0
YXRpYyBQYXNzUmVmUHRyPExheWVyVGV4dHVyZVVwZGF0ZXJCaXRtYXA+IGNyZWF0ZShHcmFwaGlj
c0NvbnRleHQzRCosIFBhc3NPd25QdHI8TGF5ZXJQYWludGVyQ2hyb21pdW0+LCBib29sIHVzZU1h
cFRleFN1YkltYWdlKTsKICAgICB2aXJ0dWFsIH5MYXllclRleHR1cmVVcGRhdGVyQml0bWFwKCkg
eyB9CiAKICAgICB2aXJ0dWFsIE9yaWVudGF0aW9uIG9yaWVudGF0aW9uKCkgeyByZXR1cm4gTGF5
ZXJUZXh0dXJlVXBkYXRlcjo6Qm90dG9tVXBPcmllbnRhdGlvbjsgfQpAQCAtNjUsNiArNjcsNyBA
QCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZVRleHR1cmVSZWN0KExheWVyVGV4dHVy
ZSosIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0KTsK
IAogcHJpdmF0ZToKKyAgICBMYXllclRleHR1cmVVcGRhdGVyQml0bWFwKEdyYXBoaWNzQ29udGV4
dDNEKiwgUGFzc093blB0cjxMYXllclBhaW50ZXJDaHJvbWl1bT4sIGJvb2wgdXNlTWFwVGV4U3Vi
SW1hZ2UpOwogICAgIFBsYXRmb3JtQ2FudmFzIG1fY2FudmFzOwogICAgIExheWVyVGV4dHVyZVN1
YkltYWdlIG1fdGV4U3ViSW1hZ2U7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJUaWxlckNocm9taXVtLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyVGlsZXJDaHJvbWl1bS5jcHAK
aW5kZXggZjU5Y2U3YjgzNmZlMDg3NTczMzViYzI1MzU4ZDVhZjVhZjgzMDFkOS4uYjBkYTc5Y2U4
ZTU0NTczZjc1NmQzMmY5NmM3ZjIxNTk1OTQ1NmZmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJUaWxlckNocm9taXVtLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclRpbGVyQ2hy
b21pdW0uY3BwCkBAIC00Miw3ICs0Miw3IEBAIHVzaW5nIG5hbWVzcGFjZSBzdGQ7CiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAotUGFzc093blB0cjxMYXllclRpbGVyQ2hyb21pdW0+IExheWVyVGls
ZXJDaHJvbWl1bTo6Y3JlYXRlKExheWVyUmVuZGVyZXJDaHJvbWl1bSogbGF5ZXJSZW5kZXJlciwg
UGFzc093blB0cjxMYXllclRleHR1cmVVcGRhdGVyPiB0ZXh0dXJlVXBkYXRlciwgY29uc3QgSW50
U2l6ZSYgdGlsZVNpemUsIEJvcmRlclRleGVsT3B0aW9uIGJvcmRlcikKK1Bhc3NPd25QdHI8TGF5
ZXJUaWxlckNocm9taXVtPiBMYXllclRpbGVyQ2hyb21pdW06OmNyZWF0ZShMYXllclJlbmRlcmVy
Q2hyb21pdW0qIGxheWVyUmVuZGVyZXIsIFBhc3NSZWZQdHI8TGF5ZXJUZXh0dXJlVXBkYXRlcj4g
dGV4dHVyZVVwZGF0ZXIsIGNvbnN0IEludFNpemUmIHRpbGVTaXplLCBCb3JkZXJUZXhlbE9wdGlv
biBib3JkZXIpCiB7CiAgICAgaWYgKCFsYXllclJlbmRlcmVyIHx8IHRpbGVTaXplLmlzRW1wdHko
KSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC01MCw3ICs1MCw3IEBAIFBhc3NPd25QdHI8
TGF5ZXJUaWxlckNocm9taXVtPiBMYXllclRpbGVyQ2hyb21pdW06OmNyZWF0ZShMYXllclJlbmRl
cmVyQ2hyb21pdW0qCiAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBMYXllclRpbGVyQ2hyb21pdW0o
bGF5ZXJSZW5kZXJlciwgdGV4dHVyZVVwZGF0ZXIsIHRpbGVTaXplLCBib3JkZXIpKTsKIH0KIAot
TGF5ZXJUaWxlckNocm9taXVtOjpMYXllclRpbGVyQ2hyb21pdW0oTGF5ZXJSZW5kZXJlckNocm9t
aXVtKiBsYXllclJlbmRlcmVyLCBQYXNzT3duUHRyPExheWVyVGV4dHVyZVVwZGF0ZXI+IHRleHR1
cmVVcGRhdGVyLCBjb25zdCBJbnRTaXplJiB0aWxlU2l6ZSwgQm9yZGVyVGV4ZWxPcHRpb24gYm9y
ZGVyKQorTGF5ZXJUaWxlckNocm9taXVtOjpMYXllclRpbGVyQ2hyb21pdW0oTGF5ZXJSZW5kZXJl
ckNocm9taXVtKiBsYXllclJlbmRlcmVyLCBQYXNzUmVmUHRyPExheWVyVGV4dHVyZVVwZGF0ZXI+
IHRleHR1cmVVcGRhdGVyLCBjb25zdCBJbnRTaXplJiB0aWxlU2l6ZSwgQm9yZGVyVGV4ZWxPcHRp
b24gYm9yZGVyKQogICAgIDogbV9za2lwc0RyYXcoZmFsc2UpCiAgICAgLCBtX3RpbGluZ0RhdGEo
bWF4KHRpbGVTaXplLndpZHRoKCksIHRpbGVTaXplLmhlaWdodCgpKSwgMCwgMCwgYm9yZGVyID09
IEhhc0JvcmRlclRleGVscykKICAgICAsIG1fdGV4dHVyZVVwZGF0ZXIodGV4dHVyZVVwZGF0ZXIp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9M
YXllclRpbGVyQ2hyb21pdW0uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL0xheWVyVGlsZXJDaHJvbWl1bS5oCmluZGV4IDgwNTVhY2E1NGIyZmQ1MjQ1YjY2NGRj
NTdjYTExODg4ODVlYmY1NGQuLjgxMTJkZTBjY2MyODg4M2E2N2ZkNzhlZTAwNWJhY2YwZjQ4ZWNl
MWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L0xheWVyVGlsZXJDaHJvbWl1bS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL0xheWVyVGlsZXJDaHJvbWl1bS5oCkBAIC00Niw3ICs0Niw3IEBAIGNsYXNz
IExheWVyVGlsZXJDaHJvbWl1bSB7CiBwdWJsaWM6CiAgICAgZW51bSBCb3JkZXJUZXhlbE9wdGlv
biB7IEhhc0JvcmRlclRleGVscywgTm9Cb3JkZXJUZXhlbHMgfTsKIAotICAgIHN0YXRpYyBQYXNz
T3duUHRyPExheWVyVGlsZXJDaHJvbWl1bT4gY3JlYXRlKExheWVyUmVuZGVyZXJDaHJvbWl1bSos
IFBhc3NPd25QdHI8TGF5ZXJUZXh0dXJlVXBkYXRlcj4sIGNvbnN0IEludFNpemUmIHRpbGVTaXpl
LCBCb3JkZXJUZXhlbE9wdGlvbik7CisgICAgc3RhdGljIFBhc3NPd25QdHI8TGF5ZXJUaWxlckNo
cm9taXVtPiBjcmVhdGUoTGF5ZXJSZW5kZXJlckNocm9taXVtKiwgUGFzc1JlZlB0cjxMYXllclRl
eHR1cmVVcGRhdGVyPiwgY29uc3QgSW50U2l6ZSYgdGlsZVNpemUsIEJvcmRlclRleGVsT3B0aW9u
KTsKIAogICAgIH5MYXllclRpbGVyQ2hyb21pdW0oKTsKIApAQCAtNzQsNyArNzQsNyBAQCBwdWJs
aWM6CiAgICAgTGF5ZXJUZXh0dXJlKiBnZXRTaW5nbGVUZXh0dXJlKCk7CiAKIHByaXZhdGU6Ci0g
ICAgTGF5ZXJUaWxlckNocm9taXVtKExheWVyUmVuZGVyZXJDaHJvbWl1bSosIFBhc3NPd25QdHI8
TGF5ZXJUZXh0dXJlVXBkYXRlcj4sIGNvbnN0IEludFNpemUmIHRpbGVTaXplLCBCb3JkZXJUZXhl
bE9wdGlvbik7CisgICAgTGF5ZXJUaWxlckNocm9taXVtKExheWVyUmVuZGVyZXJDaHJvbWl1bSos
IFBhc3NSZWZQdHI8TGF5ZXJUZXh0dXJlVXBkYXRlcj4sIGNvbnN0IEludFNpemUmIHRpbGVTaXpl
LCBCb3JkZXJUZXhlbE9wdGlvbik7CiAKICAgICBjbGFzcyBUaWxlIDogcHVibGljIFJlZkNvdW50
ZWQ8VGlsZT4gewogICAgICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShUaWxlKTsKQEAgLTE1MCw3
ICsxNTAsNyBAQCBwcml2YXRlOgogCiAgICAgVGlsaW5nRGF0YSBtX3RpbGluZ0RhdGE7CiAKLSAg
ICBPd25QdHI8TGF5ZXJUZXh0dXJlVXBkYXRlcj4gbV90ZXh0dXJlVXBkYXRlcjsKKyAgICBSZWZQ
dHI8TGF5ZXJUZXh0dXJlVXBkYXRlcj4gbV90ZXh0dXJlVXBkYXRlcjsKICAgICBMYXllclJlbmRl
cmVyQ2hyb21pdW0qIG1fbGF5ZXJSZW5kZXJlcjsKIH07CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>94540</attachid>
            <date>2011-05-23 18:54:56 -0700</date>
            <delta_ts>2011-05-25 19:45:50 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-61099-20110523185455.patch</filename>
            <type>text/plain</type>
            <size>27549</size>
            <attacher name="James Robinson">jamesr</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODcxMTEKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA5ODliMWU4OGI0OTE4OGNj
NzQ2N2JjYjNiYjMwNWI4MTFjYmVlOGRhLi4zM2Y4YWY2NTZmODc0MTZiMzYzYTI4YmYxMDAyMGJi
ZTM1NzJmZThkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNjAgQEAKKzIwMTEtMDUtMjMgIEphbWVz
IFJvYmluc29uICA8amFtZXNyQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBbY2hyb21pdW1dIEZpeCBvd25lcnNoaXAgb2YgUGxh
dGZvcm1JbWFnZSBmb3IgSW1hZ2VMYXllckNocm9taXVtcworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjEwOTkKKworICAgICAgICBGb3IgYSBjb21wb3Np
dGVkIGltYWdlLCBib3RoIHRoZSBJbWFnZUxheWVyQ2hyb21pdW0gYW5kIGl0cyBhc3NvY2lhdGVk
IExheWVyVGlsZXJDaHJvbWl1bSBuZWVkIGFjY2VzcyB0byBhCisgICAgICAgIFBsYXRmb3JtSW1h
Z2UgLSB0aGUgSW1hZ2VMYXllckNocm9taXVtIGhhcyB0byB1cGRhdGUgdGhlIFBsYXRmb3JtSW1h
Z2UncyBjb250ZW50cyBhbmQgdGhlIExheWVyVGlsZXJDaHJvbWl1bSBoYXMKKyAgICAgICAgdG8g
dXBsb2FkIHBpeGVscyBmcm9tIGl0LiAgVGhpcyBwYXRjaCBtYWtlcyB0aGUgSW1hZ2VMYXllclRl
eHR1cmVVcGRhdGVyIGhhdmUgZXhjbHVzaXZlIG93bmVyc2hpcCBvZiB0aGUKKyAgICAgICAgUGxh
dGZvcm1JbWFnZSBhbmQgbW92ZXMgb3duZXJzaGlwIG9mIHRoZSBMYXllclRleHR1cmVVcGRhdGVy
IGZyb20gdGhlIExheWVyVGlsZXJDaHJvbWl1bSB0byB0aGUgb3duZXIgb2YgdGhlCisgICAgICAg
IHRpbGVyLiAgVGhlIHVwZGF0ZXIgaXMgcGFzc2VkIGluIGFzIGEgcGFyYW1ldGVyIHRvIHRoZSBy
ZWxldmFudCB0aWxlciBjYWxscy4KKworICAgICAgICBQYXRjaCBhbHNvIGZpeGVzIGEgbnVtYmVy
IG9mIG1pbm9yIHN0eWxlIGlzc3VlcyAobWlzc2luZyBleHBsaWNpdCBrZXl3b3JkIG9uIGNvbnN0
cnVjdG9yLCBldGMpLgorCisgICAgICAgIFJlZmFjdG9yIG9ubHksIG5vIG5ldyB0ZXN0cy4KKwor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NvbnRlbnRMYXllckNocm9taXVt
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRMYXllclBhaW50ZXI6OmNyZWF0ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpDb250ZW50TGF5ZXJQYWludGVyOjpDb250ZW50TGF5ZXJQYWludGVy
KToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRMYXllckNocm9taXVtOjpwYWludENvbnRlbnRz
SWZEaXJ0eSk6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50TGF5ZXJDaHJvbWl1bTo6Y3JlYXRl
VGV4dHVyZVVwZGF0ZXJJZk5lZWRlZCk6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50TGF5ZXJD
aHJvbWl1bTo6ZHJhdyk6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50TGF5ZXJDaHJvbWl1bTo6
Y3JlYXRlVGlsZXJJZk5lZWRlZCk6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50TGF5ZXJDaHJv
bWl1bTo6dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vQ29udGVudExheWVyQ2hyb21pdW0uaDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9JbWFnZUxheWVyQ2hyb21pdW0uY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SW1hZ2VMYXllclRleHR1cmVVcGRhdGVyOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29y
ZTo6SW1hZ2VMYXllclRleHR1cmVVcGRhdGVyOjp1cGRhdGVGcm9tSW1hZ2UpOgorICAgICAgICAo
V2ViQ29yZTo6SW1hZ2VMYXllclRleHR1cmVVcGRhdGVyOjppbWFnZVNpemUpOgorICAgICAgICAo
V2ViQ29yZTo6SW1hZ2VMYXllclRleHR1cmVVcGRhdGVyOjpJbWFnZUxheWVyVGV4dHVyZVVwZGF0
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VMYXllckNocm9taXVtOjp+SW1hZ2VMYXllckNo
cm9taXVtKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlTGF5ZXJDaHJvbWl1bTo6cGFpbnRDb250
ZW50c0lmRGlydHkpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VMYXllckNocm9taXVtOjp1cGRh
dGVDb21wb3NpdG9yUmVzb3VyY2VzKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlTGF5ZXJDaHJv
bWl1bTo6c2V0TGF5ZXJSZW5kZXJlcik6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUxheWVyQ2hy
b21pdW06OmNyZWF0ZVRleHR1cmVVcGRhdGVySWZOZWVkZWQpOgorICAgICAgICAoV2ViQ29yZTo6
SW1hZ2VMYXllckNocm9taXVtOjpsYXllckJvdW5kcyk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vSW1hZ2VMYXllckNocm9taXVtLmg6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6TGF5ZXJSZW5kZXJlckNocm9taXVtKToKKyAg
ICAgICAgKFdlYkNvcmU6OkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6dXBkYXRlUm9vdExheWVyQ29u
dGVudHMpOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJSZW5kZXJlckNocm9taXVtOjpkcmF3Um9v
dExheWVyKToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6dXBkYXRl
TGF5ZXJzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRl
cmVyQ2hyb21pdW0uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXll
clRleHR1cmVVcGRhdGVyLmg6CisgICAgICAgIChXZWJDb3JlOjpMYXllclRleHR1cmVVcGRhdGVy
OjpMYXllclRleHR1cmVVcGRhdGVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9MYXllclRleHR1cmVVcGRhdGVyQ2FudmFzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okxh
eWVyVGV4dHVyZVVwZGF0ZXJCaXRtYXA6OmNyZWF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vTGF5ZXJUZXh0dXJlVXBkYXRlckNhbnZhcy5oOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyVGlsZXJDaHJvbWl1bS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpMYXllclRpbGVyQ2hyb21pdW06OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpMYXllclRpbGVyQ2hyb21pdW06OkxheWVyVGlsZXJDaHJvbWl1bSk6CisgICAgICAgIChXZWJD
b3JlOjpMYXllclRpbGVyQ2hyb21pdW06OnByZXBhcmVUb1VwZGF0ZSk6CisgICAgICAgIChXZWJD
b3JlOjpMYXllclRpbGVyQ2hyb21pdW06OnVwZGF0ZVJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6
TGF5ZXJUaWxlckNocm9taXVtOjpkcmF3KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9MYXllclRpbGVyQ2hyb21pdW0uaDoKKwogMjAxMS0wNS0yMyAgQ2hyaXMgRmxlaXph
Y2ggIDxjZmxlaXphY2hAYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERhdmlkIEtp
bHplci4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL0NvbnRlbnRMYXllckNocm9taXVtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL0NvbnRlbnRMYXllckNocm9taXVtLmNwcAppbmRleCBhZTE4OTBlYzcx
MDgwOWUyODY2YWU1YWNiZTNhMDIxODA0NGFiZGVmLi5hZmQxNzZiY2I3M2FlNDVhZGYzODNmMDgz
MGQyZDE0ODYyZTM2MDQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9Db250ZW50TGF5ZXJDaHJvbWl1bS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ29udGVudExheWVyQ2hyb21pdW0uY3BwCkBA
IC01NywxMCArNTcsMTEgQEAgdXNpbmcgbmFtZXNwYWNlIHN0ZDsKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogY2xhc3MgQ29udGVudExheWVyUGFpbnRlciA6IHB1YmxpYyBMYXllclBhaW50ZXJDaHJv
bWl1bSB7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQ29udGVudExheWVyUGFpbnRlcik7CiBw
dWJsaWM6Ci0gICAgZXhwbGljaXQgQ29udGVudExheWVyUGFpbnRlcihHcmFwaGljc0xheWVyQ2hy
b21pdW0qIG93bmVyKQotICAgICAgICA6IG1fb3duZXIob3duZXIpCisgICAgc3RhdGljIFBhc3NP
d25QdHI8Q29udGVudExheWVyUGFpbnRlcj4gY3JlYXRlKEdyYXBoaWNzTGF5ZXJDaHJvbWl1bSog
b3duZXIpCiAgICAgeworICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3IENvbnRlbnRMYXllclBh
aW50ZXIob3duZXIpKTsKICAgICB9CiAKICAgICB2aXJ0dWFsIHZvaWQgcGFpbnQoR3JhcGhpY3ND
b250ZXh0JiBjb250ZXh0LCBjb25zdCBJbnRSZWN0JiBjb250ZW50UmVjdCkKQEAgLTc1LDYgKzc2
LDExIEBAIHB1YmxpYzoKICAgICAgICAgUGxhdGZvcm1CcmlkZ2U6Omhpc3RvZ3JhbUN1c3RvbUNv
dW50cygiUmVuZGVyZXI0LkFjY2VsQ29udGVudFBhaW50TWVnYXBpeFBlclNlY29uZCIsIHBpeGVs
c1BlclNlYyAvIDEwMDAwMDAsIDEwLCAyMTAsIDMwKTsKICAgICB9CiBwcml2YXRlOgorICAgIGV4
cGxpY2l0IENvbnRlbnRMYXllclBhaW50ZXIoR3JhcGhpY3NMYXllckNocm9taXVtKiBvd25lcikK
KyAgICAgICAgOiBtX293bmVyKG93bmVyKQorICAgIHsKKyAgICB9CisKICAgICBHcmFwaGljc0xh
eWVyQ2hyb21pdW0qIG1fb3duZXI7CiB9OwogCkBAIC0xMDksNyArMTE1LDcgQEAgdm9pZCBDb250
ZW50TGF5ZXJDaHJvbWl1bTo6cGFpbnRDb250ZW50c0lmRGlydHkoY29uc3QgSW50UmVjdCYgdGFy
Z2V0U3VyZmFjZVJlY3QKICAgICBkaXJ0eS5pbnRlcnNlY3QobGF5ZXJCb3VuZHMoKSk7CiAgICAg
bV90aWxlci0+aW52YWxpZGF0ZVJlY3QoZGlydHkpOwogCi0gICAgbV90aWxlci0+cHJlcGFyZVRv
VXBkYXRlKGxheWVyUmVjdCk7CisgICAgbV90aWxlci0+cHJlcGFyZVRvVXBkYXRlKGxheWVyUmVj
dCwgbV90ZXh0dXJlVXBkYXRlci5nZXQoKSk7CiAgICAgbV9kaXJ0eVJlY3QgPSBGbG9hdFJlY3Qo
KTsKIH0KIApAQCAtMTI1LDEwICsxMzEsMTAgQEAgdm9pZCBDb250ZW50TGF5ZXJDaHJvbWl1bTo6
c2V0TGF5ZXJSZW5kZXJlcihMYXllclJlbmRlcmVyQ2hyb21pdW0qIGxheWVyUmVuZGVyZXIKICAg
ICBjcmVhdGVUaWxlcklmTmVlZGVkKCk7CiB9CiAKLVBhc3NPd25QdHI8TGF5ZXJUZXh0dXJlVXBk
YXRlcj4gQ29udGVudExheWVyQ2hyb21pdW06OmNyZWF0ZVRleHR1cmVVcGRhdGVyKCkKK3ZvaWQg
Q29udGVudExheWVyQ2hyb21pdW06OmNyZWF0ZVRleHR1cmVVcGRhdGVySWZOZWVkZWQoKQogewot
ICAgIE93blB0cjxMYXllclBhaW50ZXJDaHJvbWl1bT4gcGFpbnRlciA9IGFkb3B0UHRyKG5ldyBD
b250ZW50TGF5ZXJQYWludGVyKG1fb3duZXIpKTsKLSAgICByZXR1cm4gYWRvcHRQdHIobmV3IExh
eWVyVGV4dHVyZVVwZGF0ZXJCaXRtYXAobGF5ZXJSZW5kZXJlckNvbnRleHQoKSwgcGFpbnRlci5y
ZWxlYXNlKCksIGxheWVyUmVuZGVyZXIoKS0+Y29udGV4dFN1cHBvcnRzTWFwU3ViKCkpKTsKKyAg
ICBpZiAoIW1fdGV4dHVyZVVwZGF0ZXIpCisgICAgICAgIG1fdGV4dHVyZVVwZGF0ZXIgPSBMYXll
clRleHR1cmVVcGRhdGVyQml0bWFwOjpjcmVhdGUobGF5ZXJSZW5kZXJlckNvbnRleHQoKSwgQ29u
dGVudExheWVyUGFpbnRlcjo6Y3JlYXRlKG1fb3duZXIpLCBsYXllclJlbmRlcmVyKCktPmNvbnRl
eHRTdXBwb3J0c01hcFN1YigpKTsKIH0KIAogVHJhbnNmb3JtYXRpb25NYXRyaXggQ29udGVudExh
eWVyQ2hyb21pdW06OnRpbGluZ1RyYW5zZm9ybSgpCkBAIC0yMDAsNyArMjA2LDcgQEAgdm9pZCBD
b250ZW50TGF5ZXJDaHJvbWl1bTo6ZHJhdyhjb25zdCBJbnRSZWN0JiB0YXJnZXRTdXJmYWNlUmVj
dCkKICAgICBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCB0cmFuc2Zvcm0gPSB0aWxpbmdUcmFu
c2Zvcm0oKTsKICAgICBJbnRSZWN0IGxheWVyUmVjdCA9IHZpc2libGVMYXllclJlY3QodGFyZ2V0
U3VyZmFjZVJlY3QpOwogICAgIGlmICghbGF5ZXJSZWN0LmlzRW1wdHkoKSkKLSAgICAgICAgbV90
aWxlci0+ZHJhdyhsYXllclJlY3QsIHRyYW5zZm9ybSwgY2NMYXllckltcGwoKS0+ZHJhd09wYWNp
dHkoKSk7CisgICAgICAgIG1fdGlsZXItPmRyYXcobGF5ZXJSZWN0LCB0cmFuc2Zvcm0sIGNjTGF5
ZXJJbXBsKCktPmRyYXdPcGFjaXR5KCksIG1fdGV4dHVyZVVwZGF0ZXIuZ2V0KCkpOwogfQogCiBi
b29sIENvbnRlbnRMYXllckNocm9taXVtOjpkcmF3c0NvbnRlbnQoKSBjb25zdApAQCAtMjEzLDE2
ICsyMTksMTcgQEAgdm9pZCBDb250ZW50TGF5ZXJDaHJvbWl1bTo6Y3JlYXRlVGlsZXJJZk5lZWRl
ZCgpCiAgICAgaWYgKG1fdGlsZXIpCiAgICAgICAgIHJldHVybjsKIAorICAgIGNyZWF0ZVRleHR1
cmVVcGRhdGVySWZOZWVkZWQoKTsKKwogICAgIG1fdGlsZXIgPSBMYXllclRpbGVyQ2hyb21pdW06
OmNyZWF0ZSgKICAgICAgICAgbGF5ZXJSZW5kZXJlcigpLAotICAgICAgICBjcmVhdGVUZXh0dXJl
VXBkYXRlcigpLAogICAgICAgICBJbnRTaXplKGRlZmF1bHRUaWxlU2l6ZSwgZGVmYXVsdFRpbGVT
aXplKSwKICAgICAgICAgTGF5ZXJUaWxlckNocm9taXVtOjpIYXNCb3JkZXJUZXhlbHMpOwogfQog
CiB2b2lkIENvbnRlbnRMYXllckNocm9taXVtOjp1cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKCkK
IHsKLSAgICBtX3RpbGVyLT51cGRhdGVSZWN0KCk7CisgICAgbV90aWxlci0+dXBkYXRlUmVjdCht
X3RleHR1cmVVcGRhdGVyLmdldCgpKTsKIH0KIAogdm9pZCBDb250ZW50TGF5ZXJDaHJvbWl1bTo6
c2V0VGlsaW5nT3B0aW9uKFRpbGluZ09wdGlvbiBvcHRpb24pCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Db250ZW50TGF5ZXJDaHJvbWl1bS5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ29udGVudExheWVy
Q2hyb21pdW0uaAppbmRleCBjYjJlMWZiNDIxMTU1YTI3MThiMTYwYTEzYTg1Y2E1NjZkZTQxYjMy
Li5hNWVlZTZjM2I4ZGQxNWRlMTA1M2RmZWI0M2ZhM2JjYTc3NjkwOGI2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Db250ZW50TGF5ZXJDaHJv
bWl1bS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0Nv
bnRlbnRMYXllckNocm9taXVtLmgKQEAgLTY5LDggKzY5LDYgQEAgcHJvdGVjdGVkOgogICAgIHZp
cnR1YWwgdm9pZCBjbGVhbnVwUmVzb3VyY2VzKCk7CiAgICAgdmlydHVhbCB2b2lkIHNldExheWVy
UmVuZGVyZXIoTGF5ZXJSZW5kZXJlckNocm9taXVtKik7CiAKLSAgICB2aXJ0dWFsIFBhc3NPd25Q
dHI8TGF5ZXJUZXh0dXJlVXBkYXRlcj4gY3JlYXRlVGV4dHVyZVVwZGF0ZXIoKTsKLQogICAgIHZp
cnR1YWwgSW50UmVjdCBsYXllckJvdW5kcygpIGNvbnN0OwogCiAgICAgdmlydHVhbCBUcmFuc2Zv
cm1hdGlvbk1hdHJpeCB0aWxpbmdUcmFuc2Zvcm0oKTsKQEAgLTgxLDggKzc5LDEwIEBAIHByb3Rl
Y3RlZDoKIAogICAgIHZvaWQgdXBkYXRlTGF5ZXJTaXplKGNvbnN0IEludFNpemUmKTsKICAgICB2
b2lkIGNyZWF0ZVRpbGVySWZOZWVkZWQoKTsKKyAgICB2aXJ0dWFsIHZvaWQgY3JlYXRlVGV4dHVy
ZVVwZGF0ZXJJZk5lZWRlZCgpOwogICAgIHZvaWQgc2V0VGlsaW5nT3B0aW9uKFRpbGluZ09wdGlv
bik7CiAKKyAgICBPd25QdHI8TGF5ZXJUZXh0dXJlVXBkYXRlcj4gbV90ZXh0dXJlVXBkYXRlcjsK
ICAgICBPd25QdHI8TGF5ZXJUaWxlckNocm9taXVtPiBtX3RpbGVyOwogICAgIFRpbGluZ09wdGlv
biBtX3RpbGluZ09wdGlvbjsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9JbWFnZUxheWVyQ2hyb21pdW0uY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vSW1hZ2VMYXllckNocm9taXVtLmNwcAppbmRl
eCBhMTc0Y2EzMjgyMTZjZmI0NTU1OGVjNjBiNjRjNDMzN2FkNDkyNDI0Li4wY2FmMGYzZWJhZTEy
YTFmNGIxYjMzODQ5ZWYzYzgyYzcxOWNmZTc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9JbWFnZUxheWVyQ2hyb21pdW0uY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ltYWdlTGF5ZXJDaHJvbWl1
bS5jcHAKQEAgLTQ0LDEzICs0NCwxMyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBJ
bWFnZUxheWVyVGV4dHVyZVVwZGF0ZXIgOiBwdWJsaWMgTGF5ZXJUZXh0dXJlVXBkYXRlciB7Cisg
ICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoSW1hZ2VMYXllclRleHR1cmVVcGRhdGVyKTsKIHB1Ymxp
YzoKLSAgICBJbWFnZUxheWVyVGV4dHVyZVVwZGF0ZXIoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRl
eHQsIGNvbnN0IFBsYXRmb3JtSW1hZ2UmIGltYWdlLCBib29sIHVzZU1hcFRleFN1YkltYWdlKQot
ICAgICAgICA6IExheWVyVGV4dHVyZVVwZGF0ZXIoY29udGV4dCkKLSAgICAgICAgLCBtX2ltYWdl
KGltYWdlKQotICAgICAgICAsIG1fdGV4U3ViSW1hZ2UodXNlTWFwVGV4U3ViSW1hZ2UpCisgICAg
c3RhdGljIFBhc3NPd25QdHI8SW1hZ2VMYXllclRleHR1cmVVcGRhdGVyPiBjcmVhdGUoR3JhcGhp
Y3NDb250ZXh0M0QqIGNvbnRleHQsIGJvb2wgdXNlTWFwVGV4U3ViSW1hZ2UpCiAgICAgeworICAg
ICAgICByZXR1cm4gYWRvcHRQdHIobmV3IEltYWdlTGF5ZXJUZXh0dXJlVXBkYXRlcihjb250ZXh0
LCB1c2VNYXBUZXhTdWJJbWFnZSkpOwogICAgIH0KKwogICAgIHZpcnR1YWwgfkltYWdlTGF5ZXJU
ZXh0dXJlVXBkYXRlcigpIHsgfQogCiAgICAgdmlydHVhbCBPcmllbnRhdGlvbiBvcmllbnRhdGlv
bigpIHsgcmV0dXJuIExheWVyVGV4dHVyZVVwZGF0ZXI6OkJvdHRvbVVwT3JpZW50YXRpb247IH0K
QEAgLTc2LDE0ICs3NiwyOSBAQCBwdWJsaWM6CiAgICAgICAgIG1fdGV4U3ViSW1hZ2UudXBsb2Fk
KG1faW1hZ2UucGl4ZWxzKCksIGltYWdlUmVjdCgpLCBjbGlwcGVkU291cmNlUmVjdCwgY2xpcHBl
ZERlc3RSZWN0LCBjb250ZXh0KCkpOwogICAgIH0KIAorICAgIHZvaWQgdXBkYXRlRnJvbUltYWdl
KE5hdGl2ZUltYWdlUHRyIG5hdGl2ZUltYWdlKQorICAgIHsKKyAgICAgICAgbV9pbWFnZS51cGRh
dGVGcm9tSW1hZ2UobmF0aXZlSW1hZ2UpOworICAgIH0KKworICAgIEludFNpemUgaW1hZ2VTaXpl
KCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX2ltYWdlLnNpemUoKTsKKyAgICB9CisK
IHByaXZhdGU6CisgICAgSW1hZ2VMYXllclRleHR1cmVVcGRhdGVyKEdyYXBoaWNzQ29udGV4dDNE
KiBjb250ZXh0LCBib29sIHVzZU1hcFRleFN1YkltYWdlKQorICAgICAgICA6IExheWVyVGV4dHVy
ZVVwZGF0ZXIoY29udGV4dCkKKyAgICAgICAgLCBtX3RleFN1YkltYWdlKHVzZU1hcFRleFN1Yklt
YWdlKQorICAgIHsKKyAgICB9CisKICAgICBJbnRSZWN0IGltYWdlUmVjdCgpIGNvbnN0CiAgICAg
ewogICAgICAgICByZXR1cm4gSW50UmVjdChJbnRQb2ludDo6emVybygpLCBtX2ltYWdlLnNpemUo
KSk7CiAgICAgfQogCi0gICAgLy8gRklYTUU6IEltYWdlTGF5ZXJUZXh0dXJlVXBkYXRlciBzaG91
bGQgcmF0aGVyIG93biBhIFBsYXRmb3JtSW1hZ2UgcmF0aGVyIHRoYW4ga2VlcGluZyBhIHJlZmVy
ZW5jZS4KLSAgICBjb25zdCBQbGF0Zm9ybUltYWdlJiBtX2ltYWdlOworICAgIFBsYXRmb3JtSW1h
Z2UgbV9pbWFnZTsKICAgICBMYXllclRleHR1cmVTdWJJbWFnZSBtX3RleFN1YkltYWdlOwogfTsK
IApAQCAtOTksNiArMTE0LDEwIEBAIEltYWdlTGF5ZXJDaHJvbWl1bTo6SW1hZ2VMYXllckNocm9t
aXVtKEdyYXBoaWNzTGF5ZXJDaHJvbWl1bSogb3duZXIpCiB7CiB9CiAKK0ltYWdlTGF5ZXJDaHJv
bWl1bTo6fkltYWdlTGF5ZXJDaHJvbWl1bSgpCit7Cit9CisKIHZvaWQgSW1hZ2VMYXllckNocm9t
aXVtOjpzZXRDb250ZW50cyhJbWFnZSogY29udGVudHMpCiB7CiAgICAgLy8gc2V0Q29udGVudHMo
KSBjdXJyZW50bHkgZ2V0cyBjYWxsZWQgd2hlbmV2ZXIgdGhlcmUgaXMgYW55CkBAIC0xMTksMzAg
KzEzOCw0MiBAQCB2b2lkIEltYWdlTGF5ZXJDaHJvbWl1bTo6cGFpbnRDb250ZW50c0lmRGlydHko
Y29uc3QgSW50UmVjdCYpCiAgICAgQVNTRVJUKGxheWVyUmVuZGVyZXIoKSk7CiAKICAgICBpZiAo
IW1fZGlydHlSZWN0LmlzRW1wdHkoKSkgewotICAgICAgICBtX2RlY29kZWRJbWFnZS51cGRhdGVG
cm9tSW1hZ2UobV9jb250ZW50cy0+bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKSk7Ci0gICAg
ICAgIHVwZGF0ZUxheWVyU2l6ZShtX2RlY29kZWRJbWFnZS5zaXplKCkpOwotICAgICAgICBJbnRS
ZWN0IHBhaW50UmVjdChJbnRQb2ludCgwLCAwKSwgbV9kZWNvZGVkSW1hZ2Uuc2l6ZSgpKTsKKyAg
ICAgICAgSW1hZ2VMYXllclRleHR1cmVVcGRhdGVyKiBpbWFnZVRleHR1cmVVcGRhdGVyID0gc3Rh
dGljX2Nhc3Q8SW1hZ2VMYXllclRleHR1cmVVcGRhdGVyKj4obV90ZXh0dXJlVXBkYXRlci5nZXQo
KSk7CisgICAgICAgIGltYWdlVGV4dHVyZVVwZGF0ZXItPnVwZGF0ZUZyb21JbWFnZShtX2NvbnRl
bnRzLT5uYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpKTsKKyAgICAgICAgdXBkYXRlTGF5ZXJT
aXplKGltYWdlVGV4dHVyZVVwZGF0ZXItPmltYWdlU2l6ZSgpKTsKKyAgICAgICAgSW50UmVjdCBw
YWludFJlY3QoSW50UG9pbnQoMCwgMCksIGltYWdlVGV4dHVyZVVwZGF0ZXItPmltYWdlU2l6ZSgp
KTsKICAgICAgICAgaWYgKCFtX2RpcnR5UmVjdC5pc0VtcHR5KCkpIHsKICAgICAgICAgICAgIG1f
dGlsZXItPmludmFsaWRhdGVSZWN0KHBhaW50UmVjdCk7CiAgICAgICAgICAgICBtX2RpcnR5UmVj
dCA9IEludFJlY3QoKTsKICAgICAgICAgfQotICAgICAgICBtX3RpbGVyLT5wcmVwYXJlVG9VcGRh
dGUocGFpbnRSZWN0KTsKKyAgICAgICAgbV90aWxlci0+cHJlcGFyZVRvVXBkYXRlKHBhaW50UmVj
dCwgbV90ZXh0dXJlVXBkYXRlci5nZXQoKSk7CiAgICAgfQogfQogCiB2b2lkIEltYWdlTGF5ZXJD
aHJvbWl1bTo6dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcygpCiB7Ci0gICAgbV90aWxlci0+dXBk
YXRlUmVjdCgpOworICAgIG1fdGlsZXItPnVwZGF0ZVJlY3QobV90ZXh0dXJlVXBkYXRlci5nZXQo
KSk7Cit9CisKK3ZvaWQgSW1hZ2VMYXllckNocm9taXVtOjpzZXRMYXllclJlbmRlcmVyKExheWVy
UmVuZGVyZXJDaHJvbWl1bSogbmV3TGF5ZXJSZW5kZXJlcikKK3sKKyAgICBpZiAobmV3TGF5ZXJS
ZW5kZXJlciAhPSBsYXllclJlbmRlcmVyKCkpCisgICAgICAgIG1fdGV4dHVyZVVwZGF0ZXIuY2xl
YXIoKTsKKyAgICBDb250ZW50TGF5ZXJDaHJvbWl1bTo6c2V0TGF5ZXJSZW5kZXJlcihuZXdMYXll
clJlbmRlcmVyKTsKIH0KIAotUGFzc093blB0cjxMYXllclRleHR1cmVVcGRhdGVyPiBJbWFnZUxh
eWVyQ2hyb21pdW06OmNyZWF0ZVRleHR1cmVVcGRhdGVyKCkKK3ZvaWQgSW1hZ2VMYXllckNocm9t
aXVtOjpjcmVhdGVUZXh0dXJlVXBkYXRlcklmTmVlZGVkKCkKIHsKLSAgICByZXR1cm4gYWRvcHRQ
dHIobmV3IEltYWdlTGF5ZXJUZXh0dXJlVXBkYXRlcihsYXllclJlbmRlcmVyQ29udGV4dCgpLCBt
X2RlY29kZWRJbWFnZSwgbGF5ZXJSZW5kZXJlcigpLT5jb250ZXh0U3VwcG9ydHNNYXBTdWIoKSkp
OworICAgIGlmICghbV90ZXh0dXJlVXBkYXRlcikKKyAgICAgICAgbV90ZXh0dXJlVXBkYXRlciA9
IEltYWdlTGF5ZXJUZXh0dXJlVXBkYXRlcjo6Y3JlYXRlKGxheWVyUmVuZGVyZXJDb250ZXh0KCks
IGxheWVyUmVuZGVyZXIoKS0+Y29udGV4dFN1cHBvcnRzTWFwU3ViKCkpOwogfQogCiBJbnRSZWN0
IEltYWdlTGF5ZXJDaHJvbWl1bTo6bGF5ZXJCb3VuZHMoKSBjb25zdAogewotICAgIHJldHVybiBJ
bnRSZWN0KEludFBvaW50KDAsIDApLCBtX2RlY29kZWRJbWFnZS5zaXplKCkpOworICAgIGlmICgh
bV90ZXh0dXJlVXBkYXRlcikKKyAgICAgICAgcmV0dXJuIEludFJlY3QoKTsKKyAgICBJbWFnZUxh
eWVyVGV4dHVyZVVwZGF0ZXIqIGltYWdlVGV4dHVyZVVwZGF0ZXIgPSBzdGF0aWNfY2FzdDxJbWFn
ZUxheWVyVGV4dHVyZVVwZGF0ZXIqPihtX3RleHR1cmVVcGRhdGVyLmdldCgpKTsKKyAgICByZXR1
cm4gSW50UmVjdChJbnRQb2ludCgpLCBpbWFnZVRleHR1cmVVcGRhdGVyLT5pbWFnZVNpemUoKSk7
CiB9CiAKIFRyYW5zZm9ybWF0aW9uTWF0cml4IEltYWdlTGF5ZXJDaHJvbWl1bTo6dGlsaW5nVHJh
bnNmb3JtKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL0ltYWdlTGF5ZXJDaHJvbWl1bS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vSW1hZ2VMYXllckNocm9taXVtLmgKaW5kZXggMTNkMDljMmFjNTRiODFi
Y2JhYzdlYmQ2ZGJjMWUwYzJkMjdiNDI0MS4uZGJhYjNjMWJhMmUwMDNlNzM0ODg3YzUxMWZiYjE1
MGMzOGY0ZDAzNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vSW1hZ2VMYXllckNocm9taXVtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vSW1hZ2VMYXllckNocm9taXVtLmgKQEAgLTQ0LDExICs0NCwx
MyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBJbWFnZTsKK2NsYXNzIEltYWdlTGF5
ZXJUZXh0dXJlVXBkYXRlcjsKIAogLy8gQSBMYXllciB0aGF0IGNvbnRhaW5zIG9ubHkgYW4gSW1h
Z2UgZWxlbWVudC4KIGNsYXNzIEltYWdlTGF5ZXJDaHJvbWl1bSA6IHB1YmxpYyBDb250ZW50TGF5
ZXJDaHJvbWl1bSB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8SW1hZ2VMYXllckNo
cm9taXVtPiBjcmVhdGUoR3JhcGhpY3NMYXllckNocm9taXVtKiBvd25lciA9IDApOworICAgIHZp
cnR1YWwgfkltYWdlTGF5ZXJDaHJvbWl1bSgpOwogCiAgICAgdmlydHVhbCB2b2lkIHBhaW50Q29u
dGVudHNJZkRpcnR5KGNvbnN0IEludFJlY3QmIHRhcmdldFN1cmZhY2VSZWN0KTsKICAgICB2aXJ0
dWFsIHZvaWQgdXBkYXRlQ29tcG9zaXRvclJlc291cmNlcygpOwpAQCAtNTksMTQgKzYxLDE2IEBA
IHB1YmxpYzoKIHByb3RlY3RlZDoKICAgICB2aXJ0dWFsIGNvbnN0IGNoYXIqIGxheWVyVHlwZUFz
U3RyaW5nKCkgY29uc3QgeyByZXR1cm4gIkltYWdlTGF5ZXIiOyB9CiAKLSAgICB2aXJ0dWFsIFBh
c3NPd25QdHI8TGF5ZXJUZXh0dXJlVXBkYXRlcj4gY3JlYXRlVGV4dHVyZVVwZGF0ZXIoKTsKKyAg
ICB2aXJ0dWFsIHZvaWQgc2V0TGF5ZXJSZW5kZXJlcihMYXllclJlbmRlcmVyQ2hyb21pdW0qKTsK
KwogICAgIHZpcnR1YWwgVHJhbnNmb3JtYXRpb25NYXRyaXggdGlsaW5nVHJhbnNmb3JtKCk7CiAg
ICAgdmlydHVhbCBJbnRSZWN0IGxheWVyQm91bmRzKCkgY29uc3Q7CiAKIHByaXZhdGU6CiAgICAg
SW1hZ2VMYXllckNocm9taXVtKEdyYXBoaWNzTGF5ZXJDaHJvbWl1bSogb3duZXIpOwogCi0gICAg
UGxhdGZvcm1JbWFnZSBtX2RlY29kZWRJbWFnZTsKKyAgICB2aXJ0dWFsIHZvaWQgY3JlYXRlVGV4
dHVyZVVwZGF0ZXJJZk5lZWRlZCgpOworCiAgICAgTmF0aXZlSW1hZ2VQdHIgbV9pbWFnZUZvckN1
cnJlbnRGcmFtZTsKICAgICBSZWZQdHI8SW1hZ2U+IG1fY29udGVudHM7CiB9OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJl
ckNocm9taXVtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L0xheWVyUmVuZGVyZXJDaHJvbWl1bS5jcHAKaW5kZXggMTQyNWJmZWEzMzgxYWRiOTk4MGMwNzJm
ZDk5MDNkODNmZjNkODJjYy4uMjJjMzk3N2IzZjNlMDNkY2JmZDdlZjMyNWM4ODIzZWJiZmJkMjRi
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
TGF5ZXJSZW5kZXJlckNocm9taXVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uY3BwCkBAIC0xMjcsOCArMTI3
LDggQEAgTGF5ZXJSZW5kZXJlckNocm9taXVtOjpMYXllclJlbmRlcmVyQ2hyb21pdW0oUGFzc1Jl
ZlB0cjxHcmFwaGljc0NvbnRleHQzRD4gY29udGUKICAgICAgICAgbV9jb250ZXh0LT5nZXRFeHRl
bnNpb25zKCktPmVuc3VyZUVuYWJsZWQoIkdMX0NIUk9NSVVNX21hcF9zdWIiKTsKICAgICBtX2hh
cmR3YXJlQ29tcG9zaXRpbmcgPSBpbml0aWFsaXplU2hhcmVkT2JqZWN0cygpOwogCi0gICAgT3du
UHRyPExheWVyVGV4dHVyZVVwZGF0ZXI+IHRleHR1cmVVcGRhdGVyID0gYWRvcHRQdHIobmV3IExh
eWVyVGV4dHVyZVVwZGF0ZXJCaXRtYXAobV9jb250ZXh0LmdldCgpLCBjb250ZW50UGFpbnQsIG1f
Y29udGV4dFN1cHBvcnRzTWFwU3ViKSk7Ci0gICAgbV9yb290TGF5ZXJDb250ZW50VGlsZXIgPSBM
YXllclRpbGVyQ2hyb21pdW06OmNyZWF0ZSh0aGlzLCB0ZXh0dXJlVXBkYXRlci5yZWxlYXNlKCks
IEludFNpemUoMjU2LCAyNTYpLCBMYXllclRpbGVyQ2hyb21pdW06Ok5vQm9yZGVyVGV4ZWxzKTsK
KyAgICBtX3Jvb3RMYXllclRleHR1cmVVcGRhdGVyID0gTGF5ZXJUZXh0dXJlVXBkYXRlckJpdG1h
cDo6Y3JlYXRlKG1fY29udGV4dC5nZXQoKSwgY29udGVudFBhaW50LCBtX2NvbnRleHRTdXBwb3J0
c01hcFN1Yik7CisgICAgbV9yb290TGF5ZXJDb250ZW50VGlsZXIgPSBMYXllclRpbGVyQ2hyb21p
dW06OmNyZWF0ZSh0aGlzLCBJbnRTaXplKDI1NiwgMjU2KSwgTGF5ZXJUaWxlckNocm9taXVtOjpO
b0JvcmRlclRleGVscyk7CiAgICAgQVNTRVJUKG1fcm9vdExheWVyQ29udGVudFRpbGVyKTsKIAog
ICAgIG1faGVhZHNVcERpc3BsYXkgPSBDQ0hlYWRzVXBEaXNwbGF5OjpjcmVhdGUodGhpcyk7CkBA
IC0xNjAsNyArMTYwLDcgQEAgdm9pZCBMYXllclJlbmRlcmVyQ2hyb21pdW06OmludmFsaWRhdGVS
b290TGF5ZXJSZWN0KGNvbnN0IEludFJlY3QmIGRpcnR5UmVjdCkKIHZvaWQgTGF5ZXJSZW5kZXJl
ckNocm9taXVtOjp1cGRhdGVSb290TGF5ZXJDb250ZW50cygpCiB7CiAgICAgVFJBQ0VfRVZFTlQo
IkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6dXBkYXRlUm9vdExheWVyQ29udGVudHMiLCB0aGlzLCAw
KTsKLSAgICBtX3Jvb3RMYXllckNvbnRlbnRUaWxlci0+cHJlcGFyZVRvVXBkYXRlKG1fdmlld3Bv
cnRWaXNpYmxlUmVjdCk7CisgICAgbV9yb290TGF5ZXJDb250ZW50VGlsZXItPnByZXBhcmVUb1Vw
ZGF0ZShtX3ZpZXdwb3J0VmlzaWJsZVJlY3QsIG1fcm9vdExheWVyVGV4dHVyZVVwZGF0ZXIuZ2V0
KCkpOwogfQogCiB2b2lkIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6ZHJhd1Jvb3RMYXllcigpCkBA
IC0xNjgsNyArMTY4LDcgQEAgdm9pZCBMYXllclJlbmRlcmVyQ2hyb21pdW06OmRyYXdSb290TGF5
ZXIoKQogICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IHNjcm9sbDsKICAgICBzY3JvbGwudHJhbnNs
YXRlKC1tX3ZpZXdwb3J0VmlzaWJsZVJlY3QueCgpLCAtbV92aWV3cG9ydFZpc2libGVSZWN0Lnko
KSk7CiAKLSAgICBtX3Jvb3RMYXllckNvbnRlbnRUaWxlci0+ZHJhdyhtX3ZpZXdwb3J0VmlzaWJs
ZVJlY3QsIHNjcm9sbCwgMS4wZik7CisgICAgbV9yb290TGF5ZXJDb250ZW50VGlsZXItPmRyYXco
bV92aWV3cG9ydFZpc2libGVSZWN0LCBzY3JvbGwsIDEuMGYsIG1fcm9vdExheWVyVGV4dHVyZVVw
ZGF0ZXIuZ2V0KCkpOwogfQogCiB2b2lkIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6c2V0Vmlld3Bv
cnQoY29uc3QgSW50UmVjdCYgdmlzaWJsZVJlY3QsIGNvbnN0IEludFJlY3QmIGNvbnRlbnRSZWN0
LCBjb25zdCBJbnRQb2ludCYgc2Nyb2xsUG9zaXRpb24pCkBAIC0zMTUsNyArMzE1LDcgQEAgdm9p
ZCBMYXllclJlbmRlcmVyQ2hyb21pdW06OnVwZGF0ZUxheWVycyhMYXllckxpc3QmIHJlbmRlclN1
cmZhY2VMYXllckxpc3QpCiAKICAgICB1cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzUmVjdXJzaXZl
KG1fcm9vdExheWVyLmdldCgpKTsKICAgICAvLyBVcGRhdGUgY29tcG9zaXRvciByZXNvdXJjZXMg
Zm9yIHJvb3QgbGF5ZXIuCi0gICAgbV9yb290TGF5ZXJDb250ZW50VGlsZXItPnVwZGF0ZVJlY3Qo
KTsKKyAgICBtX3Jvb3RMYXllckNvbnRlbnRUaWxlci0+dXBkYXRlUmVjdChtX3Jvb3RMYXllclRl
eHR1cmVVcGRhdGVyLmdldCgpKTsKIAogICAgIC8vIEFmdGVyIHVwZGF0ZUNvbXBvc2l0b3JSZXNv
dXJjZXNSZWN1cnNpdmUsIHNldC93YWl0IGxhdGNoZXMgZm9yIGFsbCBjaGlsZAogICAgIC8vIGNv
bnRleHRzLiBUaGlzIHdpbGwgcHJldmVudCB0aGUgY29tcG9zaXRvciBmcm9tIHVzaW5nIGFueSBv
ZiB0aGUgY2hpbGQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmgKaW5kZXggYjRhNmUz
YzAzMzI5NTU1OTZjYzk5OWRhNTMwYzY2OWMyZmE4MWFhZS4uNmNiZjc0ODkwYTNjZjM3MmNhZTBh
NmJkYTI3YTYxODI0NzE2OGRkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmgK
QEAgLTE5MCw2ICsxOTAsNyBAQCBwcml2YXRlOgogICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IG1f
cHJvamVjdGlvbk1hdHJpeDsKIAogICAgIFJlZlB0cjxMYXllckNocm9taXVtPiBtX3Jvb3RMYXll
cjsKKyAgICBPd25QdHI8TGF5ZXJUZXh0dXJlVXBkYXRlcj4gbV9yb290TGF5ZXJUZXh0dXJlVXBk
YXRlcjsKICAgICBPd25QdHI8TGF5ZXJUaWxlckNocm9taXVtPiBtX3Jvb3RMYXllckNvbnRlbnRU
aWxlcjsKIAogICAgIGJvb2wgbV9oYXJkd2FyZUNvbXBvc2l0aW5nOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJUZXh0dXJlVXBkYXRl
ci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJUZXh0
dXJlVXBkYXRlci5oCmluZGV4IGU1OTczZGQ1NmU2OThmZWQ1YmY2NGEzYTVmMDFhYzcwZDRjOGJk
OTguLjVjMzk0YmZjYTUyMTc2NWQ4NzgwNmIwZWYzYmY0NDhiY2I0NmNmMmMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyVGV4dHVyZVVw
ZGF0ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9M
YXllclRleHR1cmVVcGRhdGVyLmgKQEAgLTM3LDggKzM3LDggQEAgY2xhc3MgSW50U2l6ZTsKIGNs
YXNzIExheWVyVGV4dHVyZTsKIAogY2xhc3MgTGF5ZXJUZXh0dXJlVXBkYXRlciB7CisgICAgV1RG
X01BS0VfTk9OQ09QWUFCTEUoTGF5ZXJUZXh0dXJlVXBkYXRlcik7CiBwdWJsaWM6Ci0gICAgZXhw
bGljaXQgTGF5ZXJUZXh0dXJlVXBkYXRlcihHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCkgOiBt
X2NvbnRleHQoY29udGV4dCkgeyB9CiAgICAgdmlydHVhbCB+TGF5ZXJUZXh0dXJlVXBkYXRlcigp
IHsgfQogCiAgICAgZW51bSBPcmllbnRhdGlvbiB7CkBAIC01MSw2ICs1MSw4IEBAIHB1YmxpYzoK
ICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlVGV4dHVyZVJlY3QoTGF5ZXJUZXh0dXJlKiwgY29uc3Qg
SW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50UmVjdCYgZGVzdFJlY3QpID0gMDsKIAogcHJv
dGVjdGVkOgorICAgIGV4cGxpY2l0IExheWVyVGV4dHVyZVVwZGF0ZXIoR3JhcGhpY3NDb250ZXh0
M0QqIGNvbnRleHQpIDogbV9jb250ZXh0KGNvbnRleHQpIHsgfQorCiAgICAgR3JhcGhpY3NDb250
ZXh0M0QqIGNvbnRleHQoKSBjb25zdCB7IHJldHVybiBtX2NvbnRleHQ7IH0KIAogcHJpdmF0ZToK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xh
eWVyVGV4dHVyZVVwZGF0ZXJDYW52YXMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vTGF5ZXJUZXh0dXJlVXBkYXRlckNhbnZhcy5jcHAKaW5kZXggNDUyODA5
NzAyY2ZlYTEyYmM2MTc4OGYzNzA4MzBlYTAxZWVlYzE4ZS4uMjY3MTQyZjhlZmI2MWUyMTllMzdl
ODUwMDJlOGQ2NjVlYzYwNmVjNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJUZXh0dXJlVXBkYXRlckNhbnZhcy5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJUZXh0dXJlVXBkYXRl
ckNhbnZhcy5jcHAKQEAgLTUzLDYgKzUzLDExIEBAIHZvaWQgTGF5ZXJUZXh0dXJlVXBkYXRlckNh
bnZhczo6cGFpbnRDb250ZW50cyhHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEluCiAg
ICAgbV9jb250ZW50UmVjdCA9IGNvbnRlbnRSZWN0OwogfQogCitQYXNzT3duUHRyPExheWVyVGV4
dHVyZVVwZGF0ZXJCaXRtYXA+IExheWVyVGV4dHVyZVVwZGF0ZXJCaXRtYXA6OmNyZWF0ZShHcmFw
aGljc0NvbnRleHQzRCogY29udGV4dCwgUGFzc093blB0cjxMYXllclBhaW50ZXJDaHJvbWl1bT4g
cGFpbnRlciwgYm9vbCB1c2VNYXBUZXhTdWJJbWFnZSkKK3sKKyAgICByZXR1cm4gYWRvcHRQdHIo
bmV3IExheWVyVGV4dHVyZVVwZGF0ZXJCaXRtYXAoY29udGV4dCwgcGFpbnRlciwgdXNlTWFwVGV4
U3ViSW1hZ2UpKTsKK30KKwogTGF5ZXJUZXh0dXJlVXBkYXRlckJpdG1hcDo6TGF5ZXJUZXh0dXJl
VXBkYXRlckJpdG1hcChHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgUGFzc093blB0cjxMYXll
clBhaW50ZXJDaHJvbWl1bT4gcGFpbnRlciwgYm9vbCB1c2VNYXBUZXhTdWJJbWFnZSkKICAgICA6
IExheWVyVGV4dHVyZVVwZGF0ZXJDYW52YXMoY29udGV4dCwgcGFpbnRlcikKICAgICAsIG1fdGV4
U3ViSW1hZ2UodXNlTWFwVGV4U3ViSW1hZ2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclRleHR1cmVVcGRhdGVyQ2FudmFzLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclRleHR1cmVVcGRh
dGVyQ2FudmFzLmgKaW5kZXggYWVjZWZkODkwYzdlZTgzNzZlMmZjMjY2ODI2Y2JiNGUzM2E3MTkw
MS4uMjViNGVkMDJhY2EwMzI4Mzk3MTA5ZjRiOTIxODAyYzQ5ZmFiNWEzNiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJUZXh0dXJlVXBk
YXRlckNhbnZhcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL0xheWVyVGV4dHVyZVVwZGF0ZXJDYW52YXMuaApAQCAtNDEsMjMgKzQxLDI3IEBAIGNsYXNz
IExheWVyUGFpbnRlckNocm9taXVtOwogCiAvLyBBIExheWVyVGV4dHVyZVVwZGF0ZXIgd2l0aCBh
biBpbnRlcm5hbCBjYW52YXMuCiBjbGFzcyBMYXllclRleHR1cmVVcGRhdGVyQ2FudmFzIDogcHVi
bGljIExheWVyVGV4dHVyZVVwZGF0ZXIgeworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKExheWVy
VGV4dHVyZVVwZGF0ZXJDYW52YXMpOwogcHVibGljOgotICAgIExheWVyVGV4dHVyZVVwZGF0ZXJD
YW52YXMoR3JhcGhpY3NDb250ZXh0M0QqLCBQYXNzT3duUHRyPExheWVyUGFpbnRlckNocm9taXVt
Pik7CiAgICAgdmlydHVhbCB+TGF5ZXJUZXh0dXJlVXBkYXRlckNhbnZhcygpIHsgfQogCiBwcm90
ZWN0ZWQ6CisgICAgTGF5ZXJUZXh0dXJlVXBkYXRlckNhbnZhcyhHcmFwaGljc0NvbnRleHQzRCos
IFBhc3NPd25QdHI8TGF5ZXJQYWludGVyQ2hyb21pdW0+KTsKKwogICAgIHZvaWQgcGFpbnRDb250
ZW50cyhHcmFwaGljc0NvbnRleHQmLCBjb25zdCBJbnRSZWN0JiBjb250ZW50UmVjdCk7CiAgICAg
Y29uc3QgSW50UmVjdCYgY29udGVudFJlY3QoKSBjb25zdCB7IHJldHVybiBtX2NvbnRlbnRSZWN0
OyB9CiAKIHByaXZhdGU6CisKICAgICBJbnRSZWN0IG1fY29udGVudFJlY3Q7CiAgICAgT3duUHRy
PExheWVyUGFpbnRlckNocm9taXVtPiBtX3BhaW50ZXI7CiB9OwogCiAvLyBBIExheWVyVGV4dHVy
ZVVwZGF0ZXIgd2l0aCBhbiBpbnRlcm5hbCBiaXRtYXAgY2FudmFzLgogY2xhc3MgTGF5ZXJUZXh0
dXJlVXBkYXRlckJpdG1hcCA6IHB1YmxpYyBMYXllclRleHR1cmVVcGRhdGVyQ2FudmFzIHsKKyAg
ICBXVEZfTUFLRV9OT05DT1BZQUJMRShMYXllclRleHR1cmVVcGRhdGVyQml0bWFwKTsKIHB1Ymxp
YzoKLSAgICBMYXllclRleHR1cmVVcGRhdGVyQml0bWFwKEdyYXBoaWNzQ29udGV4dDNEKiwgUGFz
c093blB0cjxMYXllclBhaW50ZXJDaHJvbWl1bT4sIGJvb2wgdXNlTWFwVGV4U3ViSW1hZ2UpOwor
ICAgIHN0YXRpYyBQYXNzT3duUHRyPExheWVyVGV4dHVyZVVwZGF0ZXJCaXRtYXA+IGNyZWF0ZShH
cmFwaGljc0NvbnRleHQzRCosIFBhc3NPd25QdHI8TGF5ZXJQYWludGVyQ2hyb21pdW0+LCBib29s
IHVzZU1hcFRleFN1YkltYWdlKTsKICAgICB2aXJ0dWFsIH5MYXllclRleHR1cmVVcGRhdGVyQml0
bWFwKCkgeyB9CiAKICAgICB2aXJ0dWFsIE9yaWVudGF0aW9uIG9yaWVudGF0aW9uKCkgeyByZXR1
cm4gTGF5ZXJUZXh0dXJlVXBkYXRlcjo6Qm90dG9tVXBPcmllbnRhdGlvbjsgfQpAQCAtNjUsNiAr
NjksNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZVRleHR1cmVSZWN0KExheWVy
VGV4dHVyZSosIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3QmIGRlc3RS
ZWN0KTsKIAogcHJpdmF0ZToKKyAgICBMYXllclRleHR1cmVVcGRhdGVyQml0bWFwKEdyYXBoaWNz
Q29udGV4dDNEKiwgUGFzc093blB0cjxMYXllclBhaW50ZXJDaHJvbWl1bT4sIGJvb2wgdXNlTWFw
VGV4U3ViSW1hZ2UpOwogICAgIFBsYXRmb3JtQ2FudmFzIG1fY2FudmFzOwogICAgIExheWVyVGV4
dHVyZVN1YkltYWdlIG1fdGV4U3ViSW1hZ2U7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJUaWxlckNocm9taXVtLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyVGlsZXJDaHJvbWl1
bS5jcHAKaW5kZXggYmMzYjE0YmU3YWUyYjNmZTdlNmM4NWU1N2YzOTJjODIwNmNlYmRhOS4uZmFm
MGU5MDA5MTI5M2Y2NDQxMDY0OGI3NjY2NzM2Y2IwOThkMDk3MiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJUaWxlckNocm9taXVtLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclRp
bGVyQ2hyb21pdW0uY3BwCkBAIC00MiwxOCArNDIsMTcgQEAgdXNpbmcgbmFtZXNwYWNlIHN0ZDsK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1QYXNzT3duUHRyPExheWVyVGlsZXJDaHJvbWl1bT4g
TGF5ZXJUaWxlckNocm9taXVtOjpjcmVhdGUoTGF5ZXJSZW5kZXJlckNocm9taXVtKiBsYXllclJl
bmRlcmVyLCBQYXNzT3duUHRyPExheWVyVGV4dHVyZVVwZGF0ZXI+IHRleHR1cmVVcGRhdGVyLCBj
b25zdCBJbnRTaXplJiB0aWxlU2l6ZSwgQm9yZGVyVGV4ZWxPcHRpb24gYm9yZGVyKQorUGFzc093
blB0cjxMYXllclRpbGVyQ2hyb21pdW0+IExheWVyVGlsZXJDaHJvbWl1bTo6Y3JlYXRlKExheWVy
UmVuZGVyZXJDaHJvbWl1bSogbGF5ZXJSZW5kZXJlciwgY29uc3QgSW50U2l6ZSYgdGlsZVNpemUs
IEJvcmRlclRleGVsT3B0aW9uIGJvcmRlcikKIHsKICAgICBpZiAoIWxheWVyUmVuZGVyZXIgfHwg
dGlsZVNpemUuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIHJldHVy
biBhZG9wdFB0cihuZXcgTGF5ZXJUaWxlckNocm9taXVtKGxheWVyUmVuZGVyZXIsIHRleHR1cmVV
cGRhdGVyLCB0aWxlU2l6ZSwgYm9yZGVyKSk7CisgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBMYXll
clRpbGVyQ2hyb21pdW0obGF5ZXJSZW5kZXJlciwgdGlsZVNpemUsIGJvcmRlcikpOwogfQogCi1M
YXllclRpbGVyQ2hyb21pdW06OkxheWVyVGlsZXJDaHJvbWl1bShMYXllclJlbmRlcmVyQ2hyb21p
dW0qIGxheWVyUmVuZGVyZXIsIFBhc3NPd25QdHI8TGF5ZXJUZXh0dXJlVXBkYXRlcj4gdGV4dHVy
ZVVwZGF0ZXIsIGNvbnN0IEludFNpemUmIHRpbGVTaXplLCBCb3JkZXJUZXhlbE9wdGlvbiBib3Jk
ZXIpCitMYXllclRpbGVyQ2hyb21pdW06OkxheWVyVGlsZXJDaHJvbWl1bShMYXllclJlbmRlcmVy
Q2hyb21pdW0qIGxheWVyUmVuZGVyZXIsIGNvbnN0IEludFNpemUmIHRpbGVTaXplLCBCb3JkZXJU
ZXhlbE9wdGlvbiBib3JkZXIpCiAgICAgOiBtX3NraXBzRHJhdyhmYWxzZSkKICAgICAsIG1fdGls
aW5nRGF0YShtYXgodGlsZVNpemUud2lkdGgoKSwgdGlsZVNpemUuaGVpZ2h0KCkpLCAwLCAwLCBi
b3JkZXIgPT0gSGFzQm9yZGVyVGV4ZWxzKQotICAgICwgbV90ZXh0dXJlVXBkYXRlcih0ZXh0dXJl
VXBkYXRlcikKICAgICAsIG1fbGF5ZXJSZW5kZXJlcihsYXllclJlbmRlcmVyKQogewogICAgIHNl
dFRpbGVTaXplKHRpbGVTaXplKTsKQEAgLTIyMCw3ICsyMTksNyBAQCB2b2lkIExheWVyVGlsZXJD
aHJvbWl1bTo6aW52YWxpZGF0ZUVudGlyZUxheWVyKCkKICAgICBtX3RpbGluZ0RhdGEuc2V0VG90
YWxTaXplKDAsIDApOwogfQogCi12b2lkIExheWVyVGlsZXJDaHJvbWl1bTo6cHJlcGFyZVRvVXBk
YXRlKGNvbnN0IEludFJlY3QmIGNvbnRlbnRSZWN0KQordm9pZCBMYXllclRpbGVyQ2hyb21pdW06
OnByZXBhcmVUb1VwZGF0ZShjb25zdCBJbnRSZWN0JiBjb250ZW50UmVjdCwgTGF5ZXJUZXh0dXJl
VXBkYXRlciogdGV4dHVyZVVwZGF0ZXIpCiB7CiAgICAgaWYgKG1fc2tpcHNEcmF3KQogICAgICAg
ICByZXR1cm47CkBAIC0yNTcsMTAgKzI1NiwxMCBAQCB2b2lkIExheWVyVGlsZXJDaHJvbWl1bTo6
cHJlcGFyZVRvVXBkYXRlKGNvbnN0IEludFJlY3QmIGNvbnRlbnRSZWN0KQogICAgIGlmIChkaXJ0
eUxheWVyUmVjdC5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fdGV4dHVyZVVw
ZGF0ZXItPnByZXBhcmVUb1VwZGF0ZShtX3BhaW50UmVjdCwgbV90aWxlU2l6ZSwgbV90aWxpbmdE
YXRhLmJvcmRlclRleGVscygpKTsKKyAgICB0ZXh0dXJlVXBkYXRlci0+cHJlcGFyZVRvVXBkYXRl
KG1fcGFpbnRSZWN0LCBtX3RpbGVTaXplLCBtX3RpbGluZ0RhdGEuYm9yZGVyVGV4ZWxzKCkpOwog
fQogCi12b2lkIExheWVyVGlsZXJDaHJvbWl1bTo6dXBkYXRlUmVjdCgpCit2b2lkIExheWVyVGls
ZXJDaHJvbWl1bTo6dXBkYXRlUmVjdChMYXllclRleHR1cmVVcGRhdGVyKiB0ZXh0dXJlVXBkYXRl
cikKIHsKICAgICAvLyBQYWludGluZyBjb3VsZCBjYXVzZSBjb21wb3NpdGluZyB0byBnZXQgdHVy
bmVkIG9mZiwgd2hpY2ggbWF5IGNhdXNlIHRoZSB0aWxlciB0byBiZWNvbWUgaW52YWxpZGF0ZWQg
bWlkLXVwZGF0ZS4KICAgICBpZiAoIW1fdGlsaW5nRGF0YS50b3RhbFNpemVYKCkgfHwgIW1fdGls
aW5nRGF0YS50b3RhbFNpemVZKCkpCkBAIC0zMTksNyArMzE4LDcgQEAgdm9pZCBMYXllclRpbGVy
Q2hyb21pdW06OnVwZGF0ZVJlY3QoKQogICAgICAgICAgICAgR0xDKGNvbnRleHQsIGNvbnRleHQt
PnRleFBhcmFtZXRlcmkoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIEdyYXBoaWNzQ29u
dGV4dDNEOjpURVhUVVJFX01JTl9GSUxURVIsIGZpbHRlcikpOwogICAgICAgICAgICAgR0xDKGNv
bnRleHQsIGNvbnRleHQtPnRleFBhcmFtZXRlcmkoR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVf
MkQsIEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFX01BR19GSUxURVIsIGZpbHRlcikpOwogCi0g
ICAgICAgICAgICBtX3RleHR1cmVVcGRhdGVyLT51cGRhdGVUZXh0dXJlUmVjdCh0aWxlLT50ZXh0
dXJlKCksIHNvdXJjZVJlY3QsIGRlc3RSZWN0KTsKKyAgICAgICAgICAgIHRleHR1cmVVcGRhdGVy
LT51cGRhdGVUZXh0dXJlUmVjdCh0aWxlLT50ZXh0dXJlKCksIHNvdXJjZVJlY3QsIGRlc3RSZWN0
KTsKICAgICAgICAgICAgIHRpbGUtPmNsZWFyRGlydHkoKTsKICAgICAgICAgfQogICAgIH0KQEAg
LTMzMCw3ICszMjksNyBAQCB2b2lkIExheWVyVGlsZXJDaHJvbWl1bTo6c2V0TGF5ZXJQb3NpdGlv
bihjb25zdCBJbnRQb2ludCYgbGF5ZXJQb3NpdGlvbikKICAgICBtX2xheWVyUG9zaXRpb24gPSBs
YXllclBvc2l0aW9uOwogfQogCi12b2lkIExheWVyVGlsZXJDaHJvbWl1bTo6ZHJhdyhjb25zdCBJ
bnRSZWN0JiBjb250ZW50UmVjdCwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIGdsb2JhbFRy
YW5zZm9ybSwgZmxvYXQgb3BhY2l0eSkKK3ZvaWQgTGF5ZXJUaWxlckNocm9taXVtOjpkcmF3KGNv
bnN0IEludFJlY3QmIGNvbnRlbnRSZWN0LCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgZ2xv
YmFsVHJhbnNmb3JtLCBmbG9hdCBvcGFjaXR5LCBMYXllclRleHR1cmVVcGRhdGVyKiB0ZXh0dXJl
VXBkYXRlcikKIHsKICAgICBpZiAobV9za2lwc0RyYXcgfHwgIW1fdGlsZXMuc2l6ZSgpKQogICAg
ICAgICByZXR1cm47CkBAIC0zNjcsNyArMzY2LDcgQEAgdm9pZCBMYXllclRpbGVyQ2hyb21pdW06
OmRyYXcoY29uc3QgSW50UmVjdCYgY29udGVudFJlY3QsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWEK
ICAgICAgICAgICAgIGZsb2F0IHRleFNjYWxlWSA9IHRpbGVSZWN0LmhlaWdodCgpIC8gdGlsZUhl
aWdodDsKICAgICAgICAgICAgIC8vIE9wZW5HTCBjb29yZGluYXRlIHN5c3RlbSBpcyBib3R0b20t
dXAuCiAgICAgICAgICAgICAvLyBJZiB0aWxlIHRleHR1cmUgaXMgdG9wLWRvd24sIHdlIG5lZWQg
dG8gZmxpcCB0aGUgdGV4dHVyZSBjb29yZGluYXRlcy4KLSAgICAgICAgICAgIGlmIChtX3RleHR1
cmVVcGRhdGVyLT5vcmllbnRhdGlvbigpID09IExheWVyVGV4dHVyZVVwZGF0ZXI6OlRvcERvd25P
cmllbnRhdGlvbikgeworICAgICAgICAgICAgaWYgKHRleHR1cmVVcGRhdGVyLT5vcmllbnRhdGlv
bigpID09IExheWVyVGV4dHVyZVVwZGF0ZXI6OlRvcERvd25PcmllbnRhdGlvbikgewogICAgICAg
ICAgICAgICAgIHRleFRyYW5zbGF0ZVkgKz0gMS4wOwogICAgICAgICAgICAgICAgIHRleFNjYWxl
WSAqPSAtMS4wOwogICAgICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJUaWxlckNocm9taXVtLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclRpbGVyQ2hyb21pdW0uaAppbmRl
eCA4MDU1YWNhNTRiMmZkNTI0NWI2NjRkYzU3Y2ExMTg4ODg1ZWJmNTRkLi4zNGQ5Y2RmNjBkNmU1
MTQwMGJhMDY1NzY5ZmM3ZTdiNWQ5ODcwMWUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclRpbGVyQ2hyb21pdW0uaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclRpbGVyQ2hyb21pdW0u
aApAQCAtNDYsNyArNDYsNyBAQCBjbGFzcyBMYXllclRpbGVyQ2hyb21pdW0gewogcHVibGljOgog
ICAgIGVudW0gQm9yZGVyVGV4ZWxPcHRpb24geyBIYXNCb3JkZXJUZXhlbHMsIE5vQm9yZGVyVGV4
ZWxzIH07CiAKLSAgICBzdGF0aWMgUGFzc093blB0cjxMYXllclRpbGVyQ2hyb21pdW0+IGNyZWF0
ZShMYXllclJlbmRlcmVyQ2hyb21pdW0qLCBQYXNzT3duUHRyPExheWVyVGV4dHVyZVVwZGF0ZXI+
LCBjb25zdCBJbnRTaXplJiB0aWxlU2l6ZSwgQm9yZGVyVGV4ZWxPcHRpb24pOworICAgIHN0YXRp
YyBQYXNzT3duUHRyPExheWVyVGlsZXJDaHJvbWl1bT4gY3JlYXRlKExheWVyUmVuZGVyZXJDaHJv
bWl1bSosIGNvbnN0IEludFNpemUmIHRpbGVTaXplLCBCb3JkZXJUZXhlbE9wdGlvbik7CiAKICAg
ICB+TGF5ZXJUaWxlckNocm9taXVtKCk7CiAKQEAgLTU1LDExICs1NSwxMSBAQCBwdWJsaWM6CiAg
ICAgdm9pZCBpbnZhbGlkYXRlRW50aXJlTGF5ZXIoKTsKIAogICAgIC8vIFByZXBhcmUgZGF0YSBu
ZWVkZWQgdG8gdXBkYXRlIHRleHR1cmVzIHRoYXQgaW5zdGVyc2VjdCB3aXRoIGNvbnRlbnRSZWN0
LgotICAgIHZvaWQgcHJlcGFyZVRvVXBkYXRlKGNvbnN0IEludFJlY3QmIGNvbnRlbnRSZWN0KTsK
KyAgICB2b2lkIHByZXBhcmVUb1VwZGF0ZShjb25zdCBJbnRSZWN0JiBjb250ZW50UmVjdCwgTGF5
ZXJUZXh0dXJlVXBkYXRlciopOwogICAgIC8vIFVwZGF0ZSBpbnZhbGlkIHRleHR1cmVzIHRoYXQg
aW50ZXJzZWN0IHdpdGggY29udGVudFJlY3QgcHJvdmlkZWQgaW4gcHJlcGFyZVRvVXBkYXRlKCku
Ci0gICAgdm9pZCB1cGRhdGVSZWN0KCk7CisgICAgdm9pZCB1cGRhdGVSZWN0KExheWVyVGV4dHVy
ZVVwZGF0ZXIqKTsKICAgICAvLyBEcmF3IGFsbCB0aWxlcyB0aGF0IGludGVyc2VjdCB3aXRoIHRo
ZSBjb250ZW50IHJlY3QuCi0gICAgdm9pZCBkcmF3KGNvbnN0IEludFJlY3QmIGNvbnRlbnRSZWN0
LCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYsIGZsb2F0IG9wYWNpdHkpOworICAgIHZvaWQg
ZHJhdyhjb25zdCBJbnRSZWN0JiBjb250ZW50UmVjdCwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRy
aXgmLCBmbG9hdCBvcGFjaXR5LCBMYXllclRleHR1cmVVcGRhdGVyKik7CiAKICAgICAvLyBTZXQg
cG9zaXRpb24gb2YgdGhpcyB0aWxlZCBsYXllciBpbiBjb250ZW50IHNwYWNlLgogICAgIHZvaWQg
c2V0TGF5ZXJQb3NpdGlvbihjb25zdCBJbnRQb2ludCYgcG9zaXRpb24pOwpAQCAtNzQsNyArNzQs
NyBAQCBwdWJsaWM6CiAgICAgTGF5ZXJUZXh0dXJlKiBnZXRTaW5nbGVUZXh0dXJlKCk7CiAKIHBy
aXZhdGU6Ci0gICAgTGF5ZXJUaWxlckNocm9taXVtKExheWVyUmVuZGVyZXJDaHJvbWl1bSosIFBh
c3NPd25QdHI8TGF5ZXJUZXh0dXJlVXBkYXRlcj4sIGNvbnN0IEludFNpemUmIHRpbGVTaXplLCBC
b3JkZXJUZXhlbE9wdGlvbik7CisgICAgTGF5ZXJUaWxlckNocm9taXVtKExheWVyUmVuZGVyZXJD
aHJvbWl1bSosIGNvbnN0IEludFNpemUmIHRpbGVTaXplLCBCb3JkZXJUZXhlbE9wdGlvbik7CiAK
ICAgICBjbGFzcyBUaWxlIDogcHVibGljIFJlZkNvdW50ZWQ8VGlsZT4gewogICAgICAgICBXVEZf
TUFLRV9OT05DT1BZQUJMRShUaWxlKTsKQEAgLTE1MCw3ICsxNTAsNiBAQCBwcml2YXRlOgogCiAg
ICAgVGlsaW5nRGF0YSBtX3RpbGluZ0RhdGE7CiAKLSAgICBPd25QdHI8TGF5ZXJUZXh0dXJlVXBk
YXRlcj4gbV90ZXh0dXJlVXBkYXRlcjsKICAgICBMYXllclJlbmRlcmVyQ2hyb21pdW0qIG1fbGF5
ZXJSZW5kZXJlcjsKIH07CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>94905</attachid>
            <date>2011-05-25 19:45:53 -0700</date>
            <delta_ts>2011-06-22 15:57:37 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-61099-20110525194552.patch</filename>
            <type>text/plain</type>
            <size>30703</size>
            <attacher name="James Robinson">jamesr</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODczNDQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBmMDA3ZTNhM2FkNGU5ZTNj
NzA5ODk2M2VhODdkODA3ZThmMmNiYmJjLi42NWI3YzNhNjJkMDEyN2ZlOGI4ODFlYjJmY2NiZDQx
Mzg4NmM3MTI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsNjMgQEAKIDIwMTEtMDUtMjUgIEphbWVz
IFJvYmluc29uICA8amFtZXNyQGNocm9taXVtLm9yZz4KIAorICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBbY2hyb21pdW1dIEZpeCBvd25lcnNoaXAgb2YgUGxh
dGZvcm1JbWFnZSBmb3IgSW1hZ2VMYXllckNocm9taXVtcworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjEwOTkKKworICAgICAgICBGb3IgYSBjb21wb3Np
dGVkIGltYWdlLCBib3RoIHRoZSBJbWFnZUxheWVyQ2hyb21pdW0gYW5kIGl0cyBhc3NvY2lhdGVk
IExheWVyVGlsZXJDaHJvbWl1bSBuZWVkIGFjY2VzcyB0byBhCisgICAgICAgIFBsYXRmb3JtSW1h
Z2UgLSB0aGUgSW1hZ2VMYXllckNocm9taXVtIGhhcyB0byB1cGRhdGUgdGhlIFBsYXRmb3JtSW1h
Z2UncyBjb250ZW50cyBhbmQgdGhlIExheWVyVGlsZXJDaHJvbWl1bSBoYXMKKyAgICAgICAgdG8g
dXBsb2FkIHBpeGVscyBmcm9tIGl0LiAgVGhpcyBwYXRjaCBtYWtlcyB0aGUgSW1hZ2VMYXllclRl
eHR1cmVVcGRhdGVyIGhhdmUgZXhjbHVzaXZlIG93bmVyc2hpcCBvZiB0aGUKKyAgICAgICAgUGxh
dGZvcm1JbWFnZSBhbmQgbW92ZXMgb3duZXJzaGlwIG9mIHRoZSBMYXllclRleHR1cmVVcGRhdGVy
IGZyb20gdGhlIExheWVyVGlsZXJDaHJvbWl1bSB0byB0aGUgb3duZXIgb2YgdGhlCisgICAgICAg
IHRpbGVyLiAgVGhlIHVwZGF0ZXIgaXMgcGFzc2VkIGluIGFzIGEgcGFyYW1ldGVyIHRvIHRoZSBy
ZWxldmFudCB0aWxlciBjYWxscy4KKworICAgICAgICBQYXRjaCBhbHNvIGZpeGVzIGEgbnVtYmVy
IG9mIG1pbm9yIHN0eWxlIGlzc3VlcyAobWlzc2luZyBleHBsaWNpdCBrZXl3b3JkIG9uIGNvbnN0
cnVjdG9yLCBldGMpLgorCisgICAgICAgIFJlZmFjdG9yIG9ubHksIG5vIG5ldyB0ZXN0cy4KKwor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NvbnRlbnRMYXllckNocm9taXVt
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRMYXllclBhaW50ZXI6OmNyZWF0ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpDb250ZW50TGF5ZXJQYWludGVyOjpDb250ZW50TGF5ZXJQYWludGVy
KToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRMYXllckNocm9taXVtOjpwYWludENvbnRlbnRz
SWZEaXJ0eSk6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50TGF5ZXJDaHJvbWl1bTo6Y3JlYXRl
VGV4dHVyZVVwZGF0ZXJJZk5lZWRlZCk6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50TGF5ZXJD
aHJvbWl1bTo6ZHJhdyk6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50TGF5ZXJDaHJvbWl1bTo6
Y3JlYXRlVGlsZXJJZk5lZWRlZCk6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50TGF5ZXJDaHJv
bWl1bTo6dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vQ29udGVudExheWVyQ2hyb21pdW0uaDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9JbWFnZUxheWVyQ2hyb21pdW0uY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SW1hZ2VMYXllclRleHR1cmVVcGRhdGVyOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29y
ZTo6SW1hZ2VMYXllclRleHR1cmVVcGRhdGVyOjp1cGRhdGVGcm9tSW1hZ2UpOgorICAgICAgICAo
V2ViQ29yZTo6SW1hZ2VMYXllclRleHR1cmVVcGRhdGVyOjppbWFnZVNpemUpOgorICAgICAgICAo
V2ViQ29yZTo6SW1hZ2VMYXllclRleHR1cmVVcGRhdGVyOjpJbWFnZUxheWVyVGV4dHVyZVVwZGF0
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VMYXllckNocm9taXVtOjp+SW1hZ2VMYXllckNo
cm9taXVtKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlTGF5ZXJDaHJvbWl1bTo6cGFpbnRDb250
ZW50c0lmRGlydHkpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VMYXllckNocm9taXVtOjp1cGRh
dGVDb21wb3NpdG9yUmVzb3VyY2VzKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlTGF5ZXJDaHJv
bWl1bTo6c2V0TGF5ZXJSZW5kZXJlcik6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUxheWVyQ2hy
b21pdW06OmNyZWF0ZVRleHR1cmVVcGRhdGVySWZOZWVkZWQpOgorICAgICAgICAoV2ViQ29yZTo6
SW1hZ2VMYXllckNocm9taXVtOjpsYXllckJvdW5kcyk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vSW1hZ2VMYXllckNocm9taXVtLmg6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6TGF5ZXJSZW5kZXJlckNocm9taXVtKToKKyAg
ICAgICAgKFdlYkNvcmU6OkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6dXBkYXRlUm9vdExheWVyQ29u
dGVudHMpOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJSZW5kZXJlckNocm9taXVtOjpkcmF3Um9v
dExheWVyKToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6dXBkYXRl
TGF5ZXJzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRl
cmVyQ2hyb21pdW0uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXll
clRleHR1cmVVcGRhdGVyLmg6CisgICAgICAgIChXZWJDb3JlOjpMYXllclRleHR1cmVVcGRhdGVy
OjpMYXllclRleHR1cmVVcGRhdGVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9MYXllclRleHR1cmVVcGRhdGVyQ2FudmFzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okxh
eWVyVGV4dHVyZVVwZGF0ZXJCaXRtYXA6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpMYXll
clRleHR1cmVVcGRhdGVyU2tQaWN0dXJlOjpjcmVhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL0xheWVyVGV4dHVyZVVwZGF0ZXJDYW52YXMuaDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclRpbGVyQ2hyb21pdW0uY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6TGF5ZXJUaWxlckNocm9taXVtOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29y
ZTo6TGF5ZXJUaWxlckNocm9taXVtOjpMYXllclRpbGVyQ2hyb21pdW0pOgorICAgICAgICAoV2Vi
Q29yZTo6TGF5ZXJUaWxlckNocm9taXVtOjpwcmVwYXJlVG9VcGRhdGUpOgorICAgICAgICAoV2Vi
Q29yZTo6TGF5ZXJUaWxlckNocm9taXVtOjp1cGRhdGVSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6
OkxheWVyVGlsZXJDaHJvbWl1bTo6ZHJhdyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vTGF5ZXJUaWxlckNocm9taXVtLmg6CisKKzIwMTEtMDUtMjUgIEphbWVzIFJvYmlu
c29uICA8amFtZXNyQGNocm9taXVtLm9yZz4KKwogICAgICAgICBSZXZpZXdlZCBieSBHZW9mZnJl
eSBHYXJlbgogCiAgICAgICAgIENhY2hlZFJlc291cmNlIG92ZXJoZWFkIHNpemUgY2FsY3VsYXRp
b24gaWdub3JlcyB0aGUgYWN0dWFsIHNpemUgb2YgdGhlIFVSTApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ29udGVudExheWVyQ2hyb21pdW0u
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ29udGVudExh
eWVyQ2hyb21pdW0uY3BwCmluZGV4IDk2OGYxZWE0MTE3OWUyZDQxMTUxYmYzNjJhZDlkM2M3Yzg0
ZDRmYjcuLjY1YjFhZGNlMWEyNzBkOWI4MTMzZDM4ZTkwMTRlMjhhOWRkMzQxMGYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NvbnRlbnRMYXll
ckNocm9taXVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9Db250ZW50TGF5ZXJDaHJvbWl1bS5jcHAKQEAgLTU3LDEwICs1NywxMSBAQCB1c2luZyBu
YW1lc3BhY2Ugc3RkOwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBDb250ZW50TGF5ZXJQ
YWludGVyIDogcHVibGljIExheWVyUGFpbnRlckNocm9taXVtIHsKKyAgICBXVEZfTUFLRV9OT05D
T1BZQUJMRShDb250ZW50TGF5ZXJQYWludGVyKTsKIHB1YmxpYzoKLSAgICBleHBsaWNpdCBDb250
ZW50TGF5ZXJQYWludGVyKEdyYXBoaWNzTGF5ZXJDaHJvbWl1bSogb3duZXIpCi0gICAgICAgIDog
bV9vd25lcihvd25lcikKKyAgICBzdGF0aWMgUGFzc093blB0cjxDb250ZW50TGF5ZXJQYWludGVy
PiBjcmVhdGUoR3JhcGhpY3NMYXllckNocm9taXVtKiBvd25lcikKICAgICB7CisgICAgICAgIHJl
dHVybiBhZG9wdFB0cihuZXcgQ29udGVudExheWVyUGFpbnRlcihvd25lcikpOwogICAgIH0KIAog
ICAgIHZpcnR1YWwgdm9pZCBwYWludChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IElu
dFJlY3QmIGNvbnRlbnRSZWN0KQpAQCAtNzUsNiArNzYsMTEgQEAgcHVibGljOgogICAgICAgICBQ
bGF0Zm9ybUJyaWRnZTo6aGlzdG9ncmFtQ3VzdG9tQ291bnRzKCJSZW5kZXJlcjQuQWNjZWxDb250
ZW50UGFpbnRNZWdhcGl4UGVyU2Vjb25kIiwgcGl4ZWxzUGVyU2VjIC8gMTAwMDAwMCwgMTAsIDIx
MCwgMzApOwogICAgIH0KIHByaXZhdGU6CisgICAgZXhwbGljaXQgQ29udGVudExheWVyUGFpbnRl
cihHcmFwaGljc0xheWVyQ2hyb21pdW0qIG93bmVyKQorICAgICAgICA6IG1fb3duZXIob3duZXIp
CisgICAgeworICAgIH0KKwogICAgIEdyYXBoaWNzTGF5ZXJDaHJvbWl1bSogbV9vd25lcjsKIH07
CiAKQEAgLTEwOSw3ICsxMTUsNyBAQCB2b2lkIENvbnRlbnRMYXllckNocm9taXVtOjpwYWludENv
bnRlbnRzSWZEaXJ0eShjb25zdCBJbnRSZWN0JiB0YXJnZXRTdXJmYWNlUmVjdAogICAgIGRpcnR5
LmludGVyc2VjdChsYXllckJvdW5kcygpKTsKICAgICBtX3RpbGVyLT5pbnZhbGlkYXRlUmVjdChk
aXJ0eSk7CiAKLSAgICBtX3RpbGVyLT5wcmVwYXJlVG9VcGRhdGUobGF5ZXJSZWN0KTsKKyAgICBt
X3RpbGVyLT5wcmVwYXJlVG9VcGRhdGUobGF5ZXJSZWN0LCBtX3RleHR1cmVVcGRhdGVyLmdldCgp
KTsKICAgICBtX2RpcnR5UmVjdCA9IEZsb2F0UmVjdCgpOwogfQogCkBAIC0xMjUsMTQgKzEzMSwx
NyBAQCB2b2lkIENvbnRlbnRMYXllckNocm9taXVtOjpzZXRMYXllclJlbmRlcmVyKExheWVyUmVu
ZGVyZXJDaHJvbWl1bSogbGF5ZXJSZW5kZXJlcgogICAgIGNyZWF0ZVRpbGVySWZOZWVkZWQoKTsK
IH0KIAotUGFzc093blB0cjxMYXllclRleHR1cmVVcGRhdGVyPiBDb250ZW50TGF5ZXJDaHJvbWl1
bTo6Y3JlYXRlVGV4dHVyZVVwZGF0ZXIoKQordm9pZCBDb250ZW50TGF5ZXJDaHJvbWl1bTo6Y3Jl
YXRlVGV4dHVyZVVwZGF0ZXJJZk5lZWRlZCgpCiB7Ci0gICAgT3duUHRyPExheWVyUGFpbnRlckNo
cm9taXVtPiBwYWludGVyID0gYWRvcHRQdHIobmV3IENvbnRlbnRMYXllclBhaW50ZXIobV9vd25l
cikpOworICAgIGlmIChtX3RleHR1cmVVcGRhdGVyKQorICAgICAgICByZXR1cm47CiAjaWYgVVNF
KFNLSUEpCi0gICAgaWYgKGxheWVyUmVuZGVyZXIoKS0+YWNjZWxlcmF0ZURyYXdpbmcoKSkKLSAg
ICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBMYXllclRleHR1cmVVcGRhdGVyU2tQaWN0dXJlKGxh
eWVyUmVuZGVyZXJDb250ZXh0KCksIHBhaW50ZXIucmVsZWFzZSgpLCBsYXllclJlbmRlcmVyKCkt
PnNraWFDb250ZXh0KCkpKTsKKyAgICBpZiAobGF5ZXJSZW5kZXJlcigpLT5hY2NlbGVyYXRlRHJh
d2luZygpKSB7CisgICAgICAgIG1fdGV4dHVyZVVwZGF0ZXIgPSBMYXllclRleHR1cmVVcGRhdGVy
U2tQaWN0dXJlOjpjcmVhdGUobGF5ZXJSZW5kZXJlckNvbnRleHQoKSwgQ29udGVudExheWVyUGFp
bnRlcjo6Y3JlYXRlKG1fb3duZXIpLCBsYXllclJlbmRlcmVyKCktPnNraWFDb250ZXh0KCkpOwor
ICAgICAgICByZXR1cm47CisgICAgfQogI2VuZGlmCi0gICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBM
YXllclRleHR1cmVVcGRhdGVyQml0bWFwKGxheWVyUmVuZGVyZXJDb250ZXh0KCksIHBhaW50ZXIu
cmVsZWFzZSgpLCBsYXllclJlbmRlcmVyKCktPmNvbnRleHRTdXBwb3J0c01hcFN1YigpKSk7Cisg
ICAgbV90ZXh0dXJlVXBkYXRlciA9IExheWVyVGV4dHVyZVVwZGF0ZXJCaXRtYXA6OmNyZWF0ZShs
YXllclJlbmRlcmVyQ29udGV4dCgpLCBDb250ZW50TGF5ZXJQYWludGVyOjpjcmVhdGUobV9vd25l
ciksIGxheWVyUmVuZGVyZXIoKS0+Y29udGV4dFN1cHBvcnRzTWFwU3ViKCkpOwogfQogCiBUcmFu
c2Zvcm1hdGlvbk1hdHJpeCBDb250ZW50TGF5ZXJDaHJvbWl1bTo6dGlsaW5nVHJhbnNmb3JtKCkK
QEAgLTIwNCw3ICsyMTMsNyBAQCB2b2lkIENvbnRlbnRMYXllckNocm9taXVtOjpkcmF3KGNvbnN0
IEludFJlY3QmIHRhcmdldFN1cmZhY2VSZWN0KQogICAgIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0
cml4IHRyYW5zZm9ybSA9IHRpbGluZ1RyYW5zZm9ybSgpOwogICAgIEludFJlY3QgbGF5ZXJSZWN0
ID0gdmlzaWJsZUxheWVyUmVjdCh0YXJnZXRTdXJmYWNlUmVjdCk7CiAgICAgaWYgKCFsYXllclJl
Y3QuaXNFbXB0eSgpKQotICAgICAgICBtX3RpbGVyLT5kcmF3KGxheWVyUmVjdCwgdHJhbnNmb3Jt
LCBjY0xheWVySW1wbCgpLT5kcmF3T3BhY2l0eSgpKTsKKyAgICAgICAgbV90aWxlci0+ZHJhdyhs
YXllclJlY3QsIHRyYW5zZm9ybSwgY2NMYXllckltcGwoKS0+ZHJhd09wYWNpdHkoKSwgbV90ZXh0
dXJlVXBkYXRlci5nZXQoKSk7CiB9CiAKIGJvb2wgQ29udGVudExheWVyQ2hyb21pdW06OmRyYXdz
Q29udGVudCgpIGNvbnN0CkBAIC0yMTcsMTYgKzIyNiwxNyBAQCB2b2lkIENvbnRlbnRMYXllckNo
cm9taXVtOjpjcmVhdGVUaWxlcklmTmVlZGVkKCkKICAgICBpZiAobV90aWxlcikKICAgICAgICAg
cmV0dXJuOwogCisgICAgY3JlYXRlVGV4dHVyZVVwZGF0ZXJJZk5lZWRlZCgpOworCiAgICAgbV90
aWxlciA9IExheWVyVGlsZXJDaHJvbWl1bTo6Y3JlYXRlKAogICAgICAgICBsYXllclJlbmRlcmVy
KCksCi0gICAgICAgIGNyZWF0ZVRleHR1cmVVcGRhdGVyKCksCiAgICAgICAgIEludFNpemUoZGVm
YXVsdFRpbGVTaXplLCBkZWZhdWx0VGlsZVNpemUpLAogICAgICAgICBMYXllclRpbGVyQ2hyb21p
dW06Okhhc0JvcmRlclRleGVscyk7CiB9CiAKIHZvaWQgQ29udGVudExheWVyQ2hyb21pdW06OnVw
ZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoKQogewotICAgIG1fdGlsZXItPnVwZGF0ZVJlY3QoKTsK
KyAgICBtX3RpbGVyLT51cGRhdGVSZWN0KG1fdGV4dHVyZVVwZGF0ZXIuZ2V0KCkpOwogfQogCiB2
b2lkIENvbnRlbnRMYXllckNocm9taXVtOjpzZXRUaWxpbmdPcHRpb24oVGlsaW5nT3B0aW9uIG9w
dGlvbikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL0NvbnRlbnRMYXllckNocm9taXVtLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9Db250ZW50TGF5ZXJDaHJvbWl1bS5oCmluZGV4IGNiMmUxZmI0MjExNTVh
MjcxOGIxNjBhMTNhODVjYTU2NmRlNDFiMzIuLmE1ZWVlNmMzYjhkZDE1ZGUxMDUzZGZlYjQzZmEz
YmNhNzc2OTA4YjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL0NvbnRlbnRMYXllckNocm9taXVtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ29udGVudExheWVyQ2hyb21pdW0uaApAQCAtNjksOCAr
NjksNiBAQCBwcm90ZWN0ZWQ6CiAgICAgdmlydHVhbCB2b2lkIGNsZWFudXBSZXNvdXJjZXMoKTsK
ICAgICB2aXJ0dWFsIHZvaWQgc2V0TGF5ZXJSZW5kZXJlcihMYXllclJlbmRlcmVyQ2hyb21pdW0q
KTsKIAotICAgIHZpcnR1YWwgUGFzc093blB0cjxMYXllclRleHR1cmVVcGRhdGVyPiBjcmVhdGVU
ZXh0dXJlVXBkYXRlcigpOwotCiAgICAgdmlydHVhbCBJbnRSZWN0IGxheWVyQm91bmRzKCkgY29u
c3Q7CiAKICAgICB2aXJ0dWFsIFRyYW5zZm9ybWF0aW9uTWF0cml4IHRpbGluZ1RyYW5zZm9ybSgp
OwpAQCAtODEsOCArNzksMTAgQEAgcHJvdGVjdGVkOgogCiAgICAgdm9pZCB1cGRhdGVMYXllclNp
emUoY29uc3QgSW50U2l6ZSYpOwogICAgIHZvaWQgY3JlYXRlVGlsZXJJZk5lZWRlZCgpOworICAg
IHZpcnR1YWwgdm9pZCBjcmVhdGVUZXh0dXJlVXBkYXRlcklmTmVlZGVkKCk7CiAgICAgdm9pZCBz
ZXRUaWxpbmdPcHRpb24oVGlsaW5nT3B0aW9uKTsKIAorICAgIE93blB0cjxMYXllclRleHR1cmVV
cGRhdGVyPiBtX3RleHR1cmVVcGRhdGVyOwogICAgIE93blB0cjxMYXllclRpbGVyQ2hyb21pdW0+
IG1fdGlsZXI7CiAgICAgVGlsaW5nT3B0aW9uIG1fdGlsaW5nT3B0aW9uOwogfTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ltYWdlTGF5ZXJD
aHJvbWl1bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9J
bWFnZUxheWVyQ2hyb21pdW0uY3BwCmluZGV4IGExNzRjYTMyODIxNmNmYjQ1NTU4ZWM2MGI2NGM0
MzM3YWQ0OTI0MjQuLjBjYWYwZjNlYmFlMTJhMWY0YjFiMzM4NDllZjNjODJjNzE5Y2ZlNzUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ltYWdl
TGF5ZXJDaHJvbWl1bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vSW1hZ2VMYXllckNocm9taXVtLmNwcApAQCAtNDQsMTMgKzQ0LDEzIEBACiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEltYWdlTGF5ZXJUZXh0dXJlVXBkYXRlciA6IHB1Ymxp
YyBMYXllclRleHR1cmVVcGRhdGVyIHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShJbWFnZUxh
eWVyVGV4dHVyZVVwZGF0ZXIpOwogcHVibGljOgotICAgIEltYWdlTGF5ZXJUZXh0dXJlVXBkYXRl
cihHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgY29uc3QgUGxhdGZvcm1JbWFnZSYgaW1hZ2Us
IGJvb2wgdXNlTWFwVGV4U3ViSW1hZ2UpCi0gICAgICAgIDogTGF5ZXJUZXh0dXJlVXBkYXRlcihj
b250ZXh0KQotICAgICAgICAsIG1faW1hZ2UoaW1hZ2UpCi0gICAgICAgICwgbV90ZXhTdWJJbWFn
ZSh1c2VNYXBUZXhTdWJJbWFnZSkKKyAgICBzdGF0aWMgUGFzc093blB0cjxJbWFnZUxheWVyVGV4
dHVyZVVwZGF0ZXI+IGNyZWF0ZShHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgYm9vbCB1c2VN
YXBUZXhTdWJJbWFnZSkKICAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFB0cihuZXcgSW1hZ2VM
YXllclRleHR1cmVVcGRhdGVyKGNvbnRleHQsIHVzZU1hcFRleFN1YkltYWdlKSk7CiAgICAgfQor
CiAgICAgdmlydHVhbCB+SW1hZ2VMYXllclRleHR1cmVVcGRhdGVyKCkgeyB9CiAKICAgICB2aXJ0
dWFsIE9yaWVudGF0aW9uIG9yaWVudGF0aW9uKCkgeyByZXR1cm4gTGF5ZXJUZXh0dXJlVXBkYXRl
cjo6Qm90dG9tVXBPcmllbnRhdGlvbjsgfQpAQCAtNzYsMTQgKzc2LDI5IEBAIHB1YmxpYzoKICAg
ICAgICAgbV90ZXhTdWJJbWFnZS51cGxvYWQobV9pbWFnZS5waXhlbHMoKSwgaW1hZ2VSZWN0KCks
IGNsaXBwZWRTb3VyY2VSZWN0LCBjbGlwcGVkRGVzdFJlY3QsIGNvbnRleHQoKSk7CiAgICAgfQog
CisgICAgdm9pZCB1cGRhdGVGcm9tSW1hZ2UoTmF0aXZlSW1hZ2VQdHIgbmF0aXZlSW1hZ2UpCisg
ICAgeworICAgICAgICBtX2ltYWdlLnVwZGF0ZUZyb21JbWFnZShuYXRpdmVJbWFnZSk7CisgICAg
fQorCisgICAgSW50U2l6ZSBpbWFnZVNpemUoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJu
IG1faW1hZ2Uuc2l6ZSgpOworICAgIH0KKwogcHJpdmF0ZToKKyAgICBJbWFnZUxheWVyVGV4dHVy
ZVVwZGF0ZXIoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQsIGJvb2wgdXNlTWFwVGV4U3ViSW1h
Z2UpCisgICAgICAgIDogTGF5ZXJUZXh0dXJlVXBkYXRlcihjb250ZXh0KQorICAgICAgICAsIG1f
dGV4U3ViSW1hZ2UodXNlTWFwVGV4U3ViSW1hZ2UpCisgICAgeworICAgIH0KKwogICAgIEludFJl
Y3QgaW1hZ2VSZWN0KCkgY29uc3QKICAgICB7CiAgICAgICAgIHJldHVybiBJbnRSZWN0KEludFBv
aW50Ojp6ZXJvKCksIG1faW1hZ2Uuc2l6ZSgpKTsKICAgICB9CiAKLSAgICAvLyBGSVhNRTogSW1h
Z2VMYXllclRleHR1cmVVcGRhdGVyIHNob3VsZCByYXRoZXIgb3duIGEgUGxhdGZvcm1JbWFnZSBy
YXRoZXIgdGhhbiBrZWVwaW5nIGEgcmVmZXJlbmNlLgotICAgIGNvbnN0IFBsYXRmb3JtSW1hZ2Um
IG1faW1hZ2U7CisgICAgUGxhdGZvcm1JbWFnZSBtX2ltYWdlOwogICAgIExheWVyVGV4dHVyZVN1
YkltYWdlIG1fdGV4U3ViSW1hZ2U7CiB9OwogCkBAIC05OSw2ICsxMTQsMTAgQEAgSW1hZ2VMYXll
ckNocm9taXVtOjpJbWFnZUxheWVyQ2hyb21pdW0oR3JhcGhpY3NMYXllckNocm9taXVtKiBvd25l
cikKIHsKIH0KIAorSW1hZ2VMYXllckNocm9taXVtOjp+SW1hZ2VMYXllckNocm9taXVtKCkKK3sK
K30KKwogdm9pZCBJbWFnZUxheWVyQ2hyb21pdW06OnNldENvbnRlbnRzKEltYWdlKiBjb250ZW50
cykKIHsKICAgICAvLyBzZXRDb250ZW50cygpIGN1cnJlbnRseSBnZXRzIGNhbGxlZCB3aGVuZXZl
ciB0aGVyZSBpcyBhbnkKQEAgLTExOSwzMCArMTM4LDQyIEBAIHZvaWQgSW1hZ2VMYXllckNocm9t
aXVtOjpwYWludENvbnRlbnRzSWZEaXJ0eShjb25zdCBJbnRSZWN0JikKICAgICBBU1NFUlQobGF5
ZXJSZW5kZXJlcigpKTsKIAogICAgIGlmICghbV9kaXJ0eVJlY3QuaXNFbXB0eSgpKSB7Ci0gICAg
ICAgIG1fZGVjb2RlZEltYWdlLnVwZGF0ZUZyb21JbWFnZShtX2NvbnRlbnRzLT5uYXRpdmVJbWFn
ZUZvckN1cnJlbnRGcmFtZSgpKTsKLSAgICAgICAgdXBkYXRlTGF5ZXJTaXplKG1fZGVjb2RlZElt
YWdlLnNpemUoKSk7Ci0gICAgICAgIEludFJlY3QgcGFpbnRSZWN0KEludFBvaW50KDAsIDApLCBt
X2RlY29kZWRJbWFnZS5zaXplKCkpOworICAgICAgICBJbWFnZUxheWVyVGV4dHVyZVVwZGF0ZXIq
IGltYWdlVGV4dHVyZVVwZGF0ZXIgPSBzdGF0aWNfY2FzdDxJbWFnZUxheWVyVGV4dHVyZVVwZGF0
ZXIqPihtX3RleHR1cmVVcGRhdGVyLmdldCgpKTsKKyAgICAgICAgaW1hZ2VUZXh0dXJlVXBkYXRl
ci0+dXBkYXRlRnJvbUltYWdlKG1fY29udGVudHMtPm5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1l
KCkpOworICAgICAgICB1cGRhdGVMYXllclNpemUoaW1hZ2VUZXh0dXJlVXBkYXRlci0+aW1hZ2VT
aXplKCkpOworICAgICAgICBJbnRSZWN0IHBhaW50UmVjdChJbnRQb2ludCgwLCAwKSwgaW1hZ2VU
ZXh0dXJlVXBkYXRlci0+aW1hZ2VTaXplKCkpOwogICAgICAgICBpZiAoIW1fZGlydHlSZWN0Lmlz
RW1wdHkoKSkgewogICAgICAgICAgICAgbV90aWxlci0+aW52YWxpZGF0ZVJlY3QocGFpbnRSZWN0
KTsKICAgICAgICAgICAgIG1fZGlydHlSZWN0ID0gSW50UmVjdCgpOwogICAgICAgICB9Ci0gICAg
ICAgIG1fdGlsZXItPnByZXBhcmVUb1VwZGF0ZShwYWludFJlY3QpOworICAgICAgICBtX3RpbGVy
LT5wcmVwYXJlVG9VcGRhdGUocGFpbnRSZWN0LCBtX3RleHR1cmVVcGRhdGVyLmdldCgpKTsKICAg
ICB9CiB9CiAKIHZvaWQgSW1hZ2VMYXllckNocm9taXVtOjp1cGRhdGVDb21wb3NpdG9yUmVzb3Vy
Y2VzKCkKIHsKLSAgICBtX3RpbGVyLT51cGRhdGVSZWN0KCk7CisgICAgbV90aWxlci0+dXBkYXRl
UmVjdChtX3RleHR1cmVVcGRhdGVyLmdldCgpKTsKK30KKwordm9pZCBJbWFnZUxheWVyQ2hyb21p
dW06OnNldExheWVyUmVuZGVyZXIoTGF5ZXJSZW5kZXJlckNocm9taXVtKiBuZXdMYXllclJlbmRl
cmVyKQoreworICAgIGlmIChuZXdMYXllclJlbmRlcmVyICE9IGxheWVyUmVuZGVyZXIoKSkKKyAg
ICAgICAgbV90ZXh0dXJlVXBkYXRlci5jbGVhcigpOworICAgIENvbnRlbnRMYXllckNocm9taXVt
OjpzZXRMYXllclJlbmRlcmVyKG5ld0xheWVyUmVuZGVyZXIpOwogfQogCi1QYXNzT3duUHRyPExh
eWVyVGV4dHVyZVVwZGF0ZXI+IEltYWdlTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlVGV4dHVyZVVwZGF0
ZXIoKQordm9pZCBJbWFnZUxheWVyQ2hyb21pdW06OmNyZWF0ZVRleHR1cmVVcGRhdGVySWZOZWVk
ZWQoKQogewotICAgIHJldHVybiBhZG9wdFB0cihuZXcgSW1hZ2VMYXllclRleHR1cmVVcGRhdGVy
KGxheWVyUmVuZGVyZXJDb250ZXh0KCksIG1fZGVjb2RlZEltYWdlLCBsYXllclJlbmRlcmVyKCkt
PmNvbnRleHRTdXBwb3J0c01hcFN1YigpKSk7CisgICAgaWYgKCFtX3RleHR1cmVVcGRhdGVyKQor
ICAgICAgICBtX3RleHR1cmVVcGRhdGVyID0gSW1hZ2VMYXllclRleHR1cmVVcGRhdGVyOjpjcmVh
dGUobGF5ZXJSZW5kZXJlckNvbnRleHQoKSwgbGF5ZXJSZW5kZXJlcigpLT5jb250ZXh0U3VwcG9y
dHNNYXBTdWIoKSk7CiB9CiAKIEludFJlY3QgSW1hZ2VMYXllckNocm9taXVtOjpsYXllckJvdW5k
cygpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIEludFJlY3QoSW50UG9pbnQoMCwgMCksIG1fZGVjb2Rl
ZEltYWdlLnNpemUoKSk7CisgICAgaWYgKCFtX3RleHR1cmVVcGRhdGVyKQorICAgICAgICByZXR1
cm4gSW50UmVjdCgpOworICAgIEltYWdlTGF5ZXJUZXh0dXJlVXBkYXRlciogaW1hZ2VUZXh0dXJl
VXBkYXRlciA9IHN0YXRpY19jYXN0PEltYWdlTGF5ZXJUZXh0dXJlVXBkYXRlcio+KG1fdGV4dHVy
ZVVwZGF0ZXIuZ2V0KCkpOworICAgIHJldHVybiBJbnRSZWN0KEludFBvaW50KCksIGltYWdlVGV4
dHVyZVVwZGF0ZXItPmltYWdlU2l6ZSgpKTsKIH0KIAogVHJhbnNmb3JtYXRpb25NYXRyaXggSW1h
Z2VMYXllckNocm9taXVtOjp0aWxpbmdUcmFuc2Zvcm0oKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vSW1hZ2VMYXllckNocm9taXVtLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9JbWFnZUxheWVyQ2hyb21p
dW0uaAppbmRleCAxM2QwOWMyYWM1NGI4MWJjYmFjN2ViZDZkYmMxZTBjMmQyN2I0MjQxLi4zMzEz
YzE0ZTIwYmM1ZjYyMTI4NjA1NjBlMmZhOGFjYjMzYzc4ZTA4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9JbWFnZUxheWVyQ2hyb21pdW0uaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9JbWFnZUxheWVy
Q2hyb21pdW0uaApAQCAtNDksNiArNDksNyBAQCBjbGFzcyBJbWFnZTsKIGNsYXNzIEltYWdlTGF5
ZXJDaHJvbWl1bSA6IHB1YmxpYyBDb250ZW50TGF5ZXJDaHJvbWl1bSB7CiBwdWJsaWM6CiAgICAg
c3RhdGljIFBhc3NSZWZQdHI8SW1hZ2VMYXllckNocm9taXVtPiBjcmVhdGUoR3JhcGhpY3NMYXll
ckNocm9taXVtKiBvd25lciA9IDApOworICAgIHZpcnR1YWwgfkltYWdlTGF5ZXJDaHJvbWl1bSgp
OwogCiAgICAgdmlydHVhbCB2b2lkIHBhaW50Q29udGVudHNJZkRpcnR5KGNvbnN0IEludFJlY3Qm
IHRhcmdldFN1cmZhY2VSZWN0KTsKICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlQ29tcG9zaXRvclJl
c291cmNlcygpOwpAQCAtNTksMTQgKzYwLDE2IEBAIHB1YmxpYzoKIHByb3RlY3RlZDoKICAgICB2
aXJ0dWFsIGNvbnN0IGNoYXIqIGxheWVyVHlwZUFzU3RyaW5nKCkgY29uc3QgeyByZXR1cm4gIklt
YWdlTGF5ZXIiOyB9CiAKLSAgICB2aXJ0dWFsIFBhc3NPd25QdHI8TGF5ZXJUZXh0dXJlVXBkYXRl
cj4gY3JlYXRlVGV4dHVyZVVwZGF0ZXIoKTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0TGF5ZXJSZW5k
ZXJlcihMYXllclJlbmRlcmVyQ2hyb21pdW0qKTsKKwogICAgIHZpcnR1YWwgVHJhbnNmb3JtYXRp
b25NYXRyaXggdGlsaW5nVHJhbnNmb3JtKCk7CiAgICAgdmlydHVhbCBJbnRSZWN0IGxheWVyQm91
bmRzKCkgY29uc3Q7CiAKIHByaXZhdGU6CiAgICAgSW1hZ2VMYXllckNocm9taXVtKEdyYXBoaWNz
TGF5ZXJDaHJvbWl1bSogb3duZXIpOwogCi0gICAgUGxhdGZvcm1JbWFnZSBtX2RlY29kZWRJbWFn
ZTsKKyAgICB2aXJ0dWFsIHZvaWQgY3JlYXRlVGV4dHVyZVVwZGF0ZXJJZk5lZWRlZCgpOworCiAg
ICAgTmF0aXZlSW1hZ2VQdHIgbV9pbWFnZUZvckN1cnJlbnRGcmFtZTsKICAgICBSZWZQdHI8SW1h
Z2U+IG1fY29udGVudHM7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5jcHAK
aW5kZXggMzY1OTliYmNlOTNhN2VkYzZhYmY3YWUyNjM5MjRhNDI5MTQxYjk5NS4uODQ2M2QxNjM2
NzRlMWVlMTFhMzNiODExNTk1MTk4OTA5YzQwNDBlMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRl
cmVyQ2hyb21pdW0uY3BwCkBAIC0xMzEsNyArMTMxLDE0IEBAIExheWVyUmVuZGVyZXJDaHJvbWl1
bTo6TGF5ZXJSZW5kZXJlckNocm9taXVtKFBhc3NSZWZQdHI8R3JhcGhpY3NDb250ZXh0M0Q+IGNv
bnRlCiAgICAgICAgIG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLT5lbnN1cmVFbmFibGVkKCJH
TF9DSFJPTUlVTV9tYXBfc3ViIik7CiAgICAgbV9oYXJkd2FyZUNvbXBvc2l0aW5nID0gaW5pdGlh
bGl6ZVNoYXJlZE9iamVjdHMoKTsKIAotICAgIG1fcm9vdExheWVyQ29udGVudFRpbGVyID0gTGF5
ZXJUaWxlckNocm9taXVtOjpjcmVhdGUodGhpcywgY3JlYXRlUm9vdExheWVyVGV4dHVyZVVwZGF0
ZXIoY29udGVudFBhaW50KSwgSW50U2l6ZSgyNTYsIDI1NiksIExheWVyVGlsZXJDaHJvbWl1bTo6
Tm9Cb3JkZXJUZXhlbHMpOworI2lmIFVTRShTS0lBKQorICAgIGlmIChtX2FjY2VsZXJhdGVEcmF3
aW5nKQorICAgICAgICBtX3Jvb3RMYXllclRleHR1cmVVcGRhdGVyID0gTGF5ZXJUZXh0dXJlVXBk
YXRlclNrUGljdHVyZTo6Y3JlYXRlKG1fY29udGV4dC5nZXQoKSwgY29udGVudFBhaW50LCBza2lh
Q29udGV4dCgpKTsKKyAgICBlbHNlCisjZW5kaWYKKyAgICAgICAgbV9yb290TGF5ZXJUZXh0dXJl
VXBkYXRlciA9IExheWVyVGV4dHVyZVVwZGF0ZXJCaXRtYXA6OmNyZWF0ZShtX2NvbnRleHQuZ2V0
KCksIGNvbnRlbnRQYWludCwgbV9jb250ZXh0U3VwcG9ydHNNYXBTdWIpOworCisgICAgbV9yb290
TGF5ZXJDb250ZW50VGlsZXIgPSBMYXllclRpbGVyQ2hyb21pdW06OmNyZWF0ZSh0aGlzLCBJbnRT
aXplKDI1NiwgMjU2KSwgTGF5ZXJUaWxlckNocm9taXVtOjpOb0JvcmRlclRleGVscyk7CiAgICAg
QVNTRVJUKG1fcm9vdExheWVyQ29udGVudFRpbGVyKTsKIAogICAgIG1faGVhZHNVcERpc3BsYXkg
PSBDQ0hlYWRzVXBEaXNwbGF5OjpjcmVhdGUodGhpcyk7CkBAIC0xODIsNyArMTg5LDcgQEAgdm9p
ZCBMYXllclJlbmRlcmVyQ2hyb21pdW06OmludmFsaWRhdGVSb290TGF5ZXJSZWN0KGNvbnN0IElu
dFJlY3QmIGRpcnR5UmVjdCkKIHZvaWQgTGF5ZXJSZW5kZXJlckNocm9taXVtOjp1cGRhdGVSb290
TGF5ZXJDb250ZW50cygpCiB7CiAgICAgVFJBQ0VfRVZFTlQoIkxheWVyUmVuZGVyZXJDaHJvbWl1
bTo6dXBkYXRlUm9vdExheWVyQ29udGVudHMiLCB0aGlzLCAwKTsKLSAgICBtX3Jvb3RMYXllckNv
bnRlbnRUaWxlci0+cHJlcGFyZVRvVXBkYXRlKG1fdmlld3BvcnRWaXNpYmxlUmVjdCk7CisgICAg
bV9yb290TGF5ZXJDb250ZW50VGlsZXItPnByZXBhcmVUb1VwZGF0ZShtX3ZpZXdwb3J0VmlzaWJs
ZVJlY3QsIG1fcm9vdExheWVyVGV4dHVyZVVwZGF0ZXIuZ2V0KCkpOwogfQogCiB2b2lkIExheWVy
UmVuZGVyZXJDaHJvbWl1bTo6ZHJhd1Jvb3RMYXllcigpCkBAIC0xOTAsNyArMTk3LDcgQEAgdm9p
ZCBMYXllclJlbmRlcmVyQ2hyb21pdW06OmRyYXdSb290TGF5ZXIoKQogICAgIFRyYW5zZm9ybWF0
aW9uTWF0cml4IHNjcm9sbDsKICAgICBzY3JvbGwudHJhbnNsYXRlKC1tX3ZpZXdwb3J0VmlzaWJs
ZVJlY3QueCgpLCAtbV92aWV3cG9ydFZpc2libGVSZWN0LnkoKSk7CiAKLSAgICBtX3Jvb3RMYXll
ckNvbnRlbnRUaWxlci0+ZHJhdyhtX3ZpZXdwb3J0VmlzaWJsZVJlY3QsIHNjcm9sbCwgMS4wZik7
CisgICAgbV9yb290TGF5ZXJDb250ZW50VGlsZXItPmRyYXcobV92aWV3cG9ydFZpc2libGVSZWN0
LCBzY3JvbGwsIDEuMGYsIG1fcm9vdExheWVyVGV4dHVyZVVwZGF0ZXIuZ2V0KCkpOwogfQogCiB2
b2lkIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6c2V0Vmlld3BvcnQoY29uc3QgSW50UmVjdCYgdmlz
aWJsZVJlY3QsIGNvbnN0IEludFJlY3QmIGNvbnRlbnRSZWN0LCBjb25zdCBJbnRQb2ludCYgc2Ny
b2xsUG9zaXRpb24pCkBAIC0yODIsMTUgKzI4OSw2IEBAIHZvaWQgTGF5ZXJSZW5kZXJlckNocm9t
aXVtOjp1cGRhdGVBbmREcmF3TGF5ZXJzKCkKICAgICAgICAgY29weU9mZnNjcmVlblRleHR1cmVU
b0Rpc3BsYXkoKTsKIH0KIAotUGFzc093blB0cjxMYXllclRleHR1cmVVcGRhdGVyPiBMYXllclJl
bmRlcmVyQ2hyb21pdW06OmNyZWF0ZVJvb3RMYXllclRleHR1cmVVcGRhdGVyKFBhc3NPd25QdHI8
TGF5ZXJQYWludGVyQ2hyb21pdW0+IHBhaW50ZXIpCi17Ci0jaWYgVVNFKFNLSUEpCi0gICAgaWYg
KGFjY2VsZXJhdGVEcmF3aW5nKCkpCi0gICAgICAgIHJldHVybiBhZG9wdFB0cihuZXcgTGF5ZXJU
ZXh0dXJlVXBkYXRlclNrUGljdHVyZShjb250ZXh0KCksIHBhaW50ZXIsIHNraWFDb250ZXh0KCkp
KTsKLSNlbmRpZgotICAgIHJldHVybiBhZG9wdFB0cihuZXcgTGF5ZXJUZXh0dXJlVXBkYXRlckJp
dG1hcChjb250ZXh0KCksIHBhaW50ZXIsIGNvbnRleHRTdXBwb3J0c01hcFN1YigpKSk7Ci19Ci0K
IHZvaWQgTGF5ZXJSZW5kZXJlckNocm9taXVtOjp1cGRhdGVMYXllcnMoTGF5ZXJMaXN0JiByZW5k
ZXJTdXJmYWNlTGF5ZXJMaXN0KQogewogICAgIFRSQUNFX0VWRU5UKCJMYXllclJlbmRlcmVyQ2hy
b21pdW06OnVwZGF0ZUxheWVycyIsIHRoaXMsIDApOwpAQCAtMzQ2LDcgKzM0NCw3IEBAIHZvaWQg
TGF5ZXJSZW5kZXJlckNocm9taXVtOjp1cGRhdGVMYXllcnMoTGF5ZXJMaXN0JiByZW5kZXJTdXJm
YWNlTGF5ZXJMaXN0KQogCiAgICAgdXBkYXRlQ29tcG9zaXRvclJlc291cmNlc1JlY3Vyc2l2ZSht
X3Jvb3RMYXllci5nZXQoKSk7CiAgICAgLy8gVXBkYXRlIGNvbXBvc2l0b3IgcmVzb3VyY2VzIGZv
ciByb290IGxheWVyLgotICAgIG1fcm9vdExheWVyQ29udGVudFRpbGVyLT51cGRhdGVSZWN0KCk7
CisgICAgbV9yb290TGF5ZXJDb250ZW50VGlsZXItPnVwZGF0ZVJlY3QobV9yb290TGF5ZXJUZXh0
dXJlVXBkYXRlci5nZXQoKSk7CiAKICAgICAvLyBBZnRlciB1cGRhdGVDb21wb3NpdG9yUmVzb3Vy
Y2VzUmVjdXJzaXZlLCBzZXQvd2FpdCBsYXRjaGVzIGZvciBhbGwgY2hpbGQKICAgICAvLyBjb250
ZXh0cy4gVGhpcyB3aWxsIHByZXZlbnQgdGhlIGNvbXBvc2l0b3IgZnJvbSB1c2luZyBhbnkgb2Yg
dGhlIGNoaWxkCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5oCmluZGV4IDkxMzg5YWQ3
NGVmYWUyMzM3MDI1YjYwNjFhM2VjYjYzMTBmZmNmOTMuLjQ2NWMwNjg2YzFlZjNmNWJiYWVmOTY2
MDc5ZWY2YjNiZTZiMTk1YzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5oCkBA
IC0xNjAsOCArMTYwLDYgQEAgcHJpdmF0ZToKIAogICAgIExheWVyUmVuZGVyZXJDaHJvbWl1bShQ
YXNzUmVmUHRyPEdyYXBoaWNzQ29udGV4dDNEPiwgUGFzc093blB0cjxMYXllclBhaW50ZXJDaHJv
bWl1bT4gY29udGVudFBhaW50LCBib29sIGFjY2VsZXJhdGVEcmF3aW5nKTsKIAotICAgIFBhc3NP
d25QdHI8TGF5ZXJUZXh0dXJlVXBkYXRlcj4gY3JlYXRlUm9vdExheWVyVGV4dHVyZVVwZGF0ZXIo
UGFzc093blB0cjxMYXllclBhaW50ZXJDaHJvbWl1bT4pOwotCiAgICAgdm9pZCB1cGRhdGVMYXll
cnMoTGF5ZXJMaXN0JiByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0KTsKICAgICB2b2lkIHVwZGF0ZVJv
b3RMYXllckNvbnRlbnRzKCk7CiAgICAgdm9pZCB1cGRhdGVQcm9wZXJ0aWVzQW5kUmVuZGVyU3Vy
ZmFjZXMoQ0NMYXllckltcGwqLCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgcGFyZW50TWF0
cml4LCBMYXllckxpc3QmIHJlbmRlclN1cmZhY2VMYXllckxpc3QsIExheWVyTGlzdCYgbGF5ZXJz
KTsKQEAgLTIwMCw2ICsxOTgsNyBAQCBwcml2YXRlOgogICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4
IG1fcHJvamVjdGlvbk1hdHJpeDsKIAogICAgIFJlZlB0cjxMYXllckNocm9taXVtPiBtX3Jvb3RM
YXllcjsKKyAgICBPd25QdHI8TGF5ZXJUZXh0dXJlVXBkYXRlcj4gbV9yb290TGF5ZXJUZXh0dXJl
VXBkYXRlcjsKICAgICBPd25QdHI8TGF5ZXJUaWxlckNocm9taXVtPiBtX3Jvb3RMYXllckNvbnRl
bnRUaWxlcjsKIAogICAgIGJvb2wgbV9oYXJkd2FyZUNvbXBvc2l0aW5nOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJUZXh0dXJlVXBk
YXRlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJU
ZXh0dXJlVXBkYXRlci5oCmluZGV4IGU1OTczZGQ1NmU2OThmZWQ1YmY2NGEzYTVmMDFhYzcwZDRj
OGJkOTguLjVjMzk0YmZjYTUyMTc2NWQ4NzgwNmIwZWYzYmY0NDhiY2I0NmNmMmMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyVGV4dHVy
ZVVwZGF0ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9MYXllclRleHR1cmVVcGRhdGVyLmgKQEAgLTM3LDggKzM3LDggQEAgY2xhc3MgSW50U2l6ZTsK
IGNsYXNzIExheWVyVGV4dHVyZTsKIAogY2xhc3MgTGF5ZXJUZXh0dXJlVXBkYXRlciB7CisgICAg
V1RGX01BS0VfTk9OQ09QWUFCTEUoTGF5ZXJUZXh0dXJlVXBkYXRlcik7CiBwdWJsaWM6Ci0gICAg
ZXhwbGljaXQgTGF5ZXJUZXh0dXJlVXBkYXRlcihHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCkg
OiBtX2NvbnRleHQoY29udGV4dCkgeyB9CiAgICAgdmlydHVhbCB+TGF5ZXJUZXh0dXJlVXBkYXRl
cigpIHsgfQogCiAgICAgZW51bSBPcmllbnRhdGlvbiB7CkBAIC01MSw2ICs1MSw4IEBAIHB1Ymxp
YzoKICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlVGV4dHVyZVJlY3QoTGF5ZXJUZXh0dXJlKiwgY29u
c3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50UmVjdCYgZGVzdFJlY3QpID0gMDsKIAog
cHJvdGVjdGVkOgorICAgIGV4cGxpY2l0IExheWVyVGV4dHVyZVVwZGF0ZXIoR3JhcGhpY3NDb250
ZXh0M0QqIGNvbnRleHQpIDogbV9jb250ZXh0KGNvbnRleHQpIHsgfQorCiAgICAgR3JhcGhpY3ND
b250ZXh0M0QqIGNvbnRleHQoKSBjb25zdCB7IHJldHVybiBtX2NvbnRleHQ7IH0KIAogcHJpdmF0
ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L0xheWVyVGV4dHVyZVVwZGF0ZXJDYW52YXMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJUZXh0dXJlVXBkYXRlckNhbnZhcy5jcHAKaW5kZXggZGRk
ZWVmMjk1YzIxNGQ4NGI1NWYzYTRiNzc1NzgwYTVhZTVjYTVhZi4uNjk4NDVlMTU1MGJiZDI5YTE1
OTRiMzM4NjEyNTkwMmE5NjUxNTY1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJUZXh0dXJlVXBkYXRlckNhbnZhcy5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJUZXh0dXJlVXBk
YXRlckNhbnZhcy5jcHAKQEAgLTYxLDYgKzYxLDExIEBAIHZvaWQgTGF5ZXJUZXh0dXJlVXBkYXRl
ckNhbnZhczo6cGFpbnRDb250ZW50cyhHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IElu
CiAgICAgbV9jb250ZW50UmVjdCA9IGNvbnRlbnRSZWN0OwogfQogCitQYXNzT3duUHRyPExheWVy
VGV4dHVyZVVwZGF0ZXJCaXRtYXA+IExheWVyVGV4dHVyZVVwZGF0ZXJCaXRtYXA6OmNyZWF0ZShH
cmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgUGFzc093blB0cjxMYXllclBhaW50ZXJDaHJvbWl1
bT4gcGFpbnRlciwgYm9vbCB1c2VNYXBUZXhTdWJJbWFnZSkKK3sKKyAgICByZXR1cm4gYWRvcHRQ
dHIobmV3IExheWVyVGV4dHVyZVVwZGF0ZXJCaXRtYXAoY29udGV4dCwgcGFpbnRlciwgdXNlTWFw
VGV4U3ViSW1hZ2UpKTsKK30KKwogTGF5ZXJUZXh0dXJlVXBkYXRlckJpdG1hcDo6TGF5ZXJUZXh0
dXJlVXBkYXRlckJpdG1hcChHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgUGFzc093blB0cjxM
YXllclBhaW50ZXJDaHJvbWl1bT4gcGFpbnRlciwgYm9vbCB1c2VNYXBUZXhTdWJJbWFnZSkKICAg
ICA6IExheWVyVGV4dHVyZVVwZGF0ZXJDYW52YXMoY29udGV4dCwgcGFpbnRlcikKICAgICAsIG1f
dGV4U3ViSW1hZ2UodXNlTWFwVGV4U3ViSW1hZ2UpCkBAIC05MCw2ICs5NSwxMSBAQCB2b2lkIExh
eWVyVGV4dHVyZVVwZGF0ZXJCaXRtYXA6OnVwZGF0ZVRleHR1cmVSZWN0KExheWVyVGV4dHVyZSog
dGV4dHVyZSwgY29uc3QgSQogfQogCiAjaWYgVVNFKFNLSUEpCitQYXNzT3duUHRyPExheWVyVGV4
dHVyZVVwZGF0ZXJTa1BpY3R1cmU+IExheWVyVGV4dHVyZVVwZGF0ZXJTa1BpY3R1cmU6OmNyZWF0
ZShHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgUGFzc093blB0cjxMYXllclBhaW50ZXJDaHJv
bWl1bT4gcGFpbnRlciwgR3JDb250ZXh0KiBza2lhQ29udGV4dCkKK3sKKyAgICByZXR1cm4gYWRv
cHRQdHIobmV3IExheWVyVGV4dHVyZVVwZGF0ZXJTa1BpY3R1cmUoY29udGV4dCwgcGFpbnRlciwg
c2tpYUNvbnRleHQpKTsKK30KKwogTGF5ZXJUZXh0dXJlVXBkYXRlclNrUGljdHVyZTo6TGF5ZXJU
ZXh0dXJlVXBkYXRlclNrUGljdHVyZShHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgUGFzc093
blB0cjxMYXllclBhaW50ZXJDaHJvbWl1bT4gcGFpbnRlciwgR3JDb250ZXh0KiBza2lhQ29udGV4
dCkKICAgICA6IExheWVyVGV4dHVyZVVwZGF0ZXJDYW52YXMoY29udGV4dCwgcGFpbnRlcikKICAg
ICAsIG1fc2tpYUNvbnRleHQoc2tpYUNvbnRleHQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclRleHR1cmVVcGRhdGVyQ2FudmFzLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclRleHR1cmVV
cGRhdGVyQ2FudmFzLmgKaW5kZXggYmYxMzZkNzA0MTIxYzQyYmIxNTAwNjRiZmMxMjY2YTE1M2Vj
MmZhMC4uOTM4MjliMzRmZWQzNmRiNzc2ZDU4ZTJhYjI3YmVlNDRhOTE4MmIzNyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJUZXh0dXJl
VXBkYXRlckNhbnZhcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL0xheWVyVGV4dHVyZVVwZGF0ZXJDYW52YXMuaApAQCAtNTAsMjMgKzUwLDI3IEBAIGNs
YXNzIExheWVyUGFpbnRlckNocm9taXVtOwogCiAvLyBBIExheWVyVGV4dHVyZVVwZGF0ZXIgd2l0
aCBhbiBpbnRlcm5hbCBjYW52YXMuCiBjbGFzcyBMYXllclRleHR1cmVVcGRhdGVyQ2FudmFzIDog
cHVibGljIExheWVyVGV4dHVyZVVwZGF0ZXIgeworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKExh
eWVyVGV4dHVyZVVwZGF0ZXJDYW52YXMpOwogcHVibGljOgotICAgIExheWVyVGV4dHVyZVVwZGF0
ZXJDYW52YXMoR3JhcGhpY3NDb250ZXh0M0QqLCBQYXNzT3duUHRyPExheWVyUGFpbnRlckNocm9t
aXVtPik7CiAgICAgdmlydHVhbCB+TGF5ZXJUZXh0dXJlVXBkYXRlckNhbnZhcygpIHsgfQogCiBw
cm90ZWN0ZWQ6CisgICAgTGF5ZXJUZXh0dXJlVXBkYXRlckNhbnZhcyhHcmFwaGljc0NvbnRleHQz
RCosIFBhc3NPd25QdHI8TGF5ZXJQYWludGVyQ2hyb21pdW0+KTsKKwogICAgIHZvaWQgcGFpbnRD
b250ZW50cyhHcmFwaGljc0NvbnRleHQmLCBjb25zdCBJbnRSZWN0JiBjb250ZW50UmVjdCk7CiAg
ICAgY29uc3QgSW50UmVjdCYgY29udGVudFJlY3QoKSBjb25zdCB7IHJldHVybiBtX2NvbnRlbnRS
ZWN0OyB9CiAKIHByaXZhdGU6CisKICAgICBJbnRSZWN0IG1fY29udGVudFJlY3Q7CiAgICAgT3du
UHRyPExheWVyUGFpbnRlckNocm9taXVtPiBtX3BhaW50ZXI7CiB9OwogCiAvLyBBIExheWVyVGV4
dHVyZVVwZGF0ZXIgd2l0aCBhbiBpbnRlcm5hbCBiaXRtYXAgY2FudmFzLgogY2xhc3MgTGF5ZXJU
ZXh0dXJlVXBkYXRlckJpdG1hcCA6IHB1YmxpYyBMYXllclRleHR1cmVVcGRhdGVyQ2FudmFzIHsK
KyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShMYXllclRleHR1cmVVcGRhdGVyQml0bWFwKTsKIHB1
YmxpYzoKLSAgICBMYXllclRleHR1cmVVcGRhdGVyQml0bWFwKEdyYXBoaWNzQ29udGV4dDNEKiwg
UGFzc093blB0cjxMYXllclBhaW50ZXJDaHJvbWl1bT4sIGJvb2wgdXNlTWFwVGV4U3ViSW1hZ2Up
OworICAgIHN0YXRpYyBQYXNzT3duUHRyPExheWVyVGV4dHVyZVVwZGF0ZXJCaXRtYXA+IGNyZWF0
ZShHcmFwaGljc0NvbnRleHQzRCosIFBhc3NPd25QdHI8TGF5ZXJQYWludGVyQ2hyb21pdW0+LCBi
b29sIHVzZU1hcFRleFN1YkltYWdlKTsKICAgICB2aXJ0dWFsIH5MYXllclRleHR1cmVVcGRhdGVy
Qml0bWFwKCkgeyB9CiAKICAgICB2aXJ0dWFsIE9yaWVudGF0aW9uIG9yaWVudGF0aW9uKCkgeyBy
ZXR1cm4gTGF5ZXJUZXh0dXJlVXBkYXRlcjo6Qm90dG9tVXBPcmllbnRhdGlvbjsgfQpAQCAtNzQs
MTQgKzc4LDE2IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlVGV4dHVyZVJlY3Qo
TGF5ZXJUZXh0dXJlKiwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50UmVjdCYg
ZGVzdFJlY3QpOwogCiBwcml2YXRlOgorICAgIExheWVyVGV4dHVyZVVwZGF0ZXJCaXRtYXAoR3Jh
cGhpY3NDb250ZXh0M0QqLCBQYXNzT3duUHRyPExheWVyUGFpbnRlckNocm9taXVtPiwgYm9vbCB1
c2VNYXBUZXhTdWJJbWFnZSk7CiAgICAgUGxhdGZvcm1DYW52YXMgbV9jYW52YXM7CiAgICAgTGF5
ZXJUZXh0dXJlU3ViSW1hZ2UgbV90ZXhTdWJJbWFnZTsKIH07CiAKICNpZiBVU0UoU0tJQSkKIGNs
YXNzIExheWVyVGV4dHVyZVVwZGF0ZXJTa1BpY3R1cmUgOiBwdWJsaWMgTGF5ZXJUZXh0dXJlVXBk
YXRlckNhbnZhcyB7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoTGF5ZXJUZXh0dXJlVXBkYXRl
clNrUGljdHVyZSk7CiBwdWJsaWM6Ci0gICAgTGF5ZXJUZXh0dXJlVXBkYXRlclNrUGljdHVyZShH
cmFwaGljc0NvbnRleHQzRCosIFBhc3NPd25QdHI8TGF5ZXJQYWludGVyQ2hyb21pdW0+LCBHckNv
bnRleHQqKTsKKyAgICBzdGF0aWMgUGFzc093blB0cjxMYXllclRleHR1cmVVcGRhdGVyU2tQaWN0
dXJlPiBjcmVhdGUoR3JhcGhpY3NDb250ZXh0M0QqLCBQYXNzT3duUHRyPExheWVyUGFpbnRlckNo
cm9taXVtPiwgR3JDb250ZXh0Kik7CiAgICAgdmlydHVhbCB+TGF5ZXJUZXh0dXJlVXBkYXRlclNr
UGljdHVyZSgpOwogCiAgICAgdmlydHVhbCBPcmllbnRhdGlvbiBvcmllbnRhdGlvbigpIHsgcmV0
dXJuIExheWVyVGV4dHVyZVVwZGF0ZXI6OlRvcERvd25PcmllbnRhdGlvbjsgfQpAQCAtODksNiAr
OTUsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZVRleHR1cmVSZWN0KExheWVy
VGV4dHVyZSosIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3QmIGRlc3RS
ZWN0KTsKIAogcHJpdmF0ZToKKyAgICBMYXllclRleHR1cmVVcGRhdGVyU2tQaWN0dXJlKEdyYXBo
aWNzQ29udGV4dDNEKiwgUGFzc093blB0cjxMYXllclBhaW50ZXJDaHJvbWl1bT4sIEdyQ29udGV4
dCopOwogICAgIHZvaWQgZGVsZXRlRnJhbWVCdWZmZXIoKTsKICAgICBib29sIGNyZWF0ZUZyYW1l
QnVmZmVyKCk7CiAgICAgdm9pZCBjbGVhckZyYW1lQnVmZmVyKCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclRpbGVyQ2hyb21pdW0u
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJUaWxl
ckNocm9taXVtLmNwcAppbmRleCBkYjUzMWM1MGVkODgwNWUxY2ZhYmM4ZTdkODEwOTlmYThiZGE5
YjQzLi5iMGU1MDYwMmQ1ZDM4YTM4MDU1NDllYzA3Njk1MzAwZWYxNDU3YWY4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclRpbGVyQ2hy
b21pdW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L0xheWVyVGlsZXJDaHJvbWl1bS5jcHAKQEAgLTQyLDE4ICs0MiwxNyBAQCB1c2luZyBuYW1lc3Bh
Y2Ugc3RkOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVBhc3NPd25QdHI8TGF5ZXJUaWxlckNo
cm9taXVtPiBMYXllclRpbGVyQ2hyb21pdW06OmNyZWF0ZShMYXllclJlbmRlcmVyQ2hyb21pdW0q
IGxheWVyUmVuZGVyZXIsIFBhc3NPd25QdHI8TGF5ZXJUZXh0dXJlVXBkYXRlcj4gdGV4dHVyZVVw
ZGF0ZXIsIGNvbnN0IEludFNpemUmIHRpbGVTaXplLCBCb3JkZXJUZXhlbE9wdGlvbiBib3JkZXIp
CitQYXNzT3duUHRyPExheWVyVGlsZXJDaHJvbWl1bT4gTGF5ZXJUaWxlckNocm9taXVtOjpjcmVh
dGUoTGF5ZXJSZW5kZXJlckNocm9taXVtKiBsYXllclJlbmRlcmVyLCBjb25zdCBJbnRTaXplJiB0
aWxlU2l6ZSwgQm9yZGVyVGV4ZWxPcHRpb24gYm9yZGVyKQogewogICAgIGlmICghbGF5ZXJSZW5k
ZXJlciB8fCB0aWxlU2l6ZS5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0g
ICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBMYXllclRpbGVyQ2hyb21pdW0obGF5ZXJSZW5kZXJlciwg
dGV4dHVyZVVwZGF0ZXIsIHRpbGVTaXplLCBib3JkZXIpKTsKKyAgICByZXR1cm4gYWRvcHRQdHIo
bmV3IExheWVyVGlsZXJDaHJvbWl1bShsYXllclJlbmRlcmVyLCB0aWxlU2l6ZSwgYm9yZGVyKSk7
CiB9CiAKLUxheWVyVGlsZXJDaHJvbWl1bTo6TGF5ZXJUaWxlckNocm9taXVtKExheWVyUmVuZGVy
ZXJDaHJvbWl1bSogbGF5ZXJSZW5kZXJlciwgUGFzc093blB0cjxMYXllclRleHR1cmVVcGRhdGVy
PiB0ZXh0dXJlVXBkYXRlciwgY29uc3QgSW50U2l6ZSYgdGlsZVNpemUsIEJvcmRlclRleGVsT3B0
aW9uIGJvcmRlcikKK0xheWVyVGlsZXJDaHJvbWl1bTo6TGF5ZXJUaWxlckNocm9taXVtKExheWVy
UmVuZGVyZXJDaHJvbWl1bSogbGF5ZXJSZW5kZXJlciwgY29uc3QgSW50U2l6ZSYgdGlsZVNpemUs
IEJvcmRlclRleGVsT3B0aW9uIGJvcmRlcikKICAgICA6IG1fc2tpcHNEcmF3KGZhbHNlKQogICAg
ICwgbV90aWxpbmdEYXRhKG1heCh0aWxlU2l6ZS53aWR0aCgpLCB0aWxlU2l6ZS5oZWlnaHQoKSks
IDAsIDAsIGJvcmRlciA9PSBIYXNCb3JkZXJUZXhlbHMpCi0gICAgLCBtX3RleHR1cmVVcGRhdGVy
KHRleHR1cmVVcGRhdGVyKQogICAgICwgbV9sYXllclJlbmRlcmVyKGxheWVyUmVuZGVyZXIpCiB7
CiAgICAgc2V0VGlsZVNpemUodGlsZVNpemUpOwpAQCAtMjIwLDcgKzIxOSw3IEBAIHZvaWQgTGF5
ZXJUaWxlckNocm9taXVtOjppbnZhbGlkYXRlRW50aXJlTGF5ZXIoKQogICAgIG1fdGlsaW5nRGF0
YS5zZXRUb3RhbFNpemUoMCwgMCk7CiB9CiAKLXZvaWQgTGF5ZXJUaWxlckNocm9taXVtOjpwcmVw
YXJlVG9VcGRhdGUoY29uc3QgSW50UmVjdCYgY29udGVudFJlY3QpCit2b2lkIExheWVyVGlsZXJD
aHJvbWl1bTo6cHJlcGFyZVRvVXBkYXRlKGNvbnN0IEludFJlY3QmIGNvbnRlbnRSZWN0LCBMYXll
clRleHR1cmVVcGRhdGVyKiB0ZXh0dXJlVXBkYXRlcikKIHsKICAgICBpZiAobV9za2lwc0RyYXcp
CiAgICAgICAgIHJldHVybjsKQEAgLTI1NywxMCArMjU2LDEwIEBAIHZvaWQgTGF5ZXJUaWxlckNo
cm9taXVtOjpwcmVwYXJlVG9VcGRhdGUoY29uc3QgSW50UmVjdCYgY29udGVudFJlY3QpCiAgICAg
aWYgKGRpcnR5TGF5ZXJSZWN0LmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV90
ZXh0dXJlVXBkYXRlci0+cHJlcGFyZVRvVXBkYXRlKG1fcGFpbnRSZWN0LCBtX3RpbGVTaXplLCBt
X3RpbGluZ0RhdGEuYm9yZGVyVGV4ZWxzKCkpOworICAgIHRleHR1cmVVcGRhdGVyLT5wcmVwYXJl
VG9VcGRhdGUobV9wYWludFJlY3QsIG1fdGlsZVNpemUsIG1fdGlsaW5nRGF0YS5ib3JkZXJUZXhl
bHMoKSk7CiB9CiAKLXZvaWQgTGF5ZXJUaWxlckNocm9taXVtOjp1cGRhdGVSZWN0KCkKK3ZvaWQg
TGF5ZXJUaWxlckNocm9taXVtOjp1cGRhdGVSZWN0KExheWVyVGV4dHVyZVVwZGF0ZXIqIHRleHR1
cmVVcGRhdGVyKQogewogICAgIC8vIFBhaW50aW5nIGNvdWxkIGNhdXNlIGNvbXBvc2l0aW5nIHRv
IGdldCB0dXJuZWQgb2ZmLCB3aGljaCBtYXkgY2F1c2UgdGhlIHRpbGVyIHRvIGJlY29tZSBpbnZh
bGlkYXRlZCBtaWQtdXBkYXRlLgogICAgIGlmICghbV90aWxpbmdEYXRhLnRvdGFsU2l6ZVgoKSB8
fCAhbV90aWxpbmdEYXRhLnRvdGFsU2l6ZVkoKSkKQEAgLTMyMCw3ICszMTksNyBAQCB2b2lkIExh
eWVyVGlsZXJDaHJvbWl1bTo6dXBkYXRlUmVjdCgpCiAgICAgICAgICAgICBHTEMoY29udGV4dCwg
Y29udGV4dC0+dGV4UGFyYW1ldGVyaShHcmFwaGljc0NvbnRleHQzRDo6VEVYVFVSRV8yRCwgR3Jh
cGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfTUFHX0ZJTFRFUiwgZmlsdGVyKSk7CiAgICAgICAgICAg
ICBHTEMoY29udGV4dCwgY29udGV4dC0+YmluZFRleHR1cmUoR3JhcGhpY3NDb250ZXh0M0Q6OlRF
WFRVUkVfMkQsIDApKTsKIAotICAgICAgICAgICAgbV90ZXh0dXJlVXBkYXRlci0+dXBkYXRlVGV4
dHVyZVJlY3QodGlsZS0+dGV4dHVyZSgpLCBzb3VyY2VSZWN0LCBkZXN0UmVjdCk7CisgICAgICAg
ICAgICB0ZXh0dXJlVXBkYXRlci0+dXBkYXRlVGV4dHVyZVJlY3QodGlsZS0+dGV4dHVyZSgpLCBz
b3VyY2VSZWN0LCBkZXN0UmVjdCk7CiAgICAgICAgICAgICB0aWxlLT5jbGVhckRpcnR5KCk7CiAg
ICAgICAgIH0KICAgICB9CkBAIC0zMzEsNyArMzMwLDcgQEAgdm9pZCBMYXllclRpbGVyQ2hyb21p
dW06OnNldExheWVyUG9zaXRpb24oY29uc3QgSW50UG9pbnQmIGxheWVyUG9zaXRpb24pCiAgICAg
bV9sYXllclBvc2l0aW9uID0gbGF5ZXJQb3NpdGlvbjsKIH0KIAotdm9pZCBMYXllclRpbGVyQ2hy
b21pdW06OmRyYXcoY29uc3QgSW50UmVjdCYgY29udGVudFJlY3QsIGNvbnN0IFRyYW5zZm9ybWF0
aW9uTWF0cml4JiBnbG9iYWxUcmFuc2Zvcm0sIGZsb2F0IG9wYWNpdHkpCit2b2lkIExheWVyVGls
ZXJDaHJvbWl1bTo6ZHJhdyhjb25zdCBJbnRSZWN0JiBjb250ZW50UmVjdCwgY29uc3QgVHJhbnNm
b3JtYXRpb25NYXRyaXgmIGdsb2JhbFRyYW5zZm9ybSwgZmxvYXQgb3BhY2l0eSwgTGF5ZXJUZXh0
dXJlVXBkYXRlciogdGV4dHVyZVVwZGF0ZXIpCiB7CiAgICAgaWYgKG1fc2tpcHNEcmF3IHx8ICFt
X3RpbGVzLnNpemUoKSkKICAgICAgICAgcmV0dXJuOwpAQCAtMzY5LDcgKzM2OCw3IEBAIHZvaWQg
TGF5ZXJUaWxlckNocm9taXVtOjpkcmF3KGNvbnN0IEludFJlY3QmIGNvbnRlbnRSZWN0LCBjb25z
dCBUcmFuc2Zvcm1hdGlvbk1hCiAgICAgICAgICAgICBmbG9hdCB0ZXhTY2FsZVkgPSB0aWxlUmVj
dC5oZWlnaHQoKSAvIHRpbGVIZWlnaHQ7CiAgICAgICAgICAgICAvLyBPcGVuR0wgY29vcmRpbmF0
ZSBzeXN0ZW0gaXMgYm90dG9tLXVwLgogICAgICAgICAgICAgLy8gSWYgdGlsZSB0ZXh0dXJlIGlz
IHRvcC1kb3duLCB3ZSBuZWVkIHRvIGZsaXAgdGhlIHRleHR1cmUgY29vcmRpbmF0ZXMuCi0gICAg
ICAgICAgICBpZiAobV90ZXh0dXJlVXBkYXRlci0+b3JpZW50YXRpb24oKSA9PSBMYXllclRleHR1
cmVVcGRhdGVyOjpUb3BEb3duT3JpZW50YXRpb24pIHsKKyAgICAgICAgICAgIGlmICh0ZXh0dXJl
VXBkYXRlci0+b3JpZW50YXRpb24oKSA9PSBMYXllclRleHR1cmVVcGRhdGVyOjpUb3BEb3duT3Jp
ZW50YXRpb24pIHsKICAgICAgICAgICAgICAgICB0ZXhUcmFuc2xhdGVZICs9IDEuMDsKICAgICAg
ICAgICAgICAgICB0ZXhTY2FsZVkgKj0gLTEuMDsKICAgICAgICAgICAgIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyVGlsZXJDaHJv
bWl1bS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJU
aWxlckNocm9taXVtLmgKaW5kZXggODA1NWFjYTU0YjJmZDUyNDViNjY0ZGM1N2NhMTE4ODg4NWVi
ZjU0ZC4uMzRkOWNkZjYwZDZlNTE0MDBiYTA2NTc2OWZjN2U3YjVkOTg3MDFlMSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJUaWxlckNo
cm9taXVtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
TGF5ZXJUaWxlckNocm9taXVtLmgKQEAgLTQ2LDcgKzQ2LDcgQEAgY2xhc3MgTGF5ZXJUaWxlckNo
cm9taXVtIHsKIHB1YmxpYzoKICAgICBlbnVtIEJvcmRlclRleGVsT3B0aW9uIHsgSGFzQm9yZGVy
VGV4ZWxzLCBOb0JvcmRlclRleGVscyB9OwogCi0gICAgc3RhdGljIFBhc3NPd25QdHI8TGF5ZXJU
aWxlckNocm9taXVtPiBjcmVhdGUoTGF5ZXJSZW5kZXJlckNocm9taXVtKiwgUGFzc093blB0cjxM
YXllclRleHR1cmVVcGRhdGVyPiwgY29uc3QgSW50U2l6ZSYgdGlsZVNpemUsIEJvcmRlclRleGVs
T3B0aW9uKTsKKyAgICBzdGF0aWMgUGFzc093blB0cjxMYXllclRpbGVyQ2hyb21pdW0+IGNyZWF0
ZShMYXllclJlbmRlcmVyQ2hyb21pdW0qLCBjb25zdCBJbnRTaXplJiB0aWxlU2l6ZSwgQm9yZGVy
VGV4ZWxPcHRpb24pOwogCiAgICAgfkxheWVyVGlsZXJDaHJvbWl1bSgpOwogCkBAIC01NSwxMSAr
NTUsMTEgQEAgcHVibGljOgogICAgIHZvaWQgaW52YWxpZGF0ZUVudGlyZUxheWVyKCk7CiAKICAg
ICAvLyBQcmVwYXJlIGRhdGEgbmVlZGVkIHRvIHVwZGF0ZSB0ZXh0dXJlcyB0aGF0IGluc3RlcnNl
Y3Qgd2l0aCBjb250ZW50UmVjdC4KLSAgICB2b2lkIHByZXBhcmVUb1VwZGF0ZShjb25zdCBJbnRS
ZWN0JiBjb250ZW50UmVjdCk7CisgICAgdm9pZCBwcmVwYXJlVG9VcGRhdGUoY29uc3QgSW50UmVj
dCYgY29udGVudFJlY3QsIExheWVyVGV4dHVyZVVwZGF0ZXIqKTsKICAgICAvLyBVcGRhdGUgaW52
YWxpZCB0ZXh0dXJlcyB0aGF0IGludGVyc2VjdCB3aXRoIGNvbnRlbnRSZWN0IHByb3ZpZGVkIGlu
IHByZXBhcmVUb1VwZGF0ZSgpLgotICAgIHZvaWQgdXBkYXRlUmVjdCgpOworICAgIHZvaWQgdXBk
YXRlUmVjdChMYXllclRleHR1cmVVcGRhdGVyKik7CiAgICAgLy8gRHJhdyBhbGwgdGlsZXMgdGhh
dCBpbnRlcnNlY3Qgd2l0aCB0aGUgY29udGVudCByZWN0LgotICAgIHZvaWQgZHJhdyhjb25zdCBJ
bnRSZWN0JiBjb250ZW50UmVjdCwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmLCBmbG9hdCBv
cGFjaXR5KTsKKyAgICB2b2lkIGRyYXcoY29uc3QgSW50UmVjdCYgY29udGVudFJlY3QsIGNvbnN0
IFRyYW5zZm9ybWF0aW9uTWF0cml4JiwgZmxvYXQgb3BhY2l0eSwgTGF5ZXJUZXh0dXJlVXBkYXRl
ciopOwogCiAgICAgLy8gU2V0IHBvc2l0aW9uIG9mIHRoaXMgdGlsZWQgbGF5ZXIgaW4gY29udGVu
dCBzcGFjZS4KICAgICB2b2lkIHNldExheWVyUG9zaXRpb24oY29uc3QgSW50UG9pbnQmIHBvc2l0
aW9uKTsKQEAgLTc0LDcgKzc0LDcgQEAgcHVibGljOgogICAgIExheWVyVGV4dHVyZSogZ2V0U2lu
Z2xlVGV4dHVyZSgpOwogCiBwcml2YXRlOgotICAgIExheWVyVGlsZXJDaHJvbWl1bShMYXllclJl
bmRlcmVyQ2hyb21pdW0qLCBQYXNzT3duUHRyPExheWVyVGV4dHVyZVVwZGF0ZXI+LCBjb25zdCBJ
bnRTaXplJiB0aWxlU2l6ZSwgQm9yZGVyVGV4ZWxPcHRpb24pOworICAgIExheWVyVGlsZXJDaHJv
bWl1bShMYXllclJlbmRlcmVyQ2hyb21pdW0qLCBjb25zdCBJbnRTaXplJiB0aWxlU2l6ZSwgQm9y
ZGVyVGV4ZWxPcHRpb24pOwogCiAgICAgY2xhc3MgVGlsZSA6IHB1YmxpYyBSZWZDb3VudGVkPFRp
bGU+IHsKICAgICAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoVGlsZSk7CkBAIC0xNTAsNyArMTUw
LDYgQEAgcHJpdmF0ZToKIAogICAgIFRpbGluZ0RhdGEgbV90aWxpbmdEYXRhOwogCi0gICAgT3du
UHRyPExheWVyVGV4dHVyZVVwZGF0ZXI+IG1fdGV4dHVyZVVwZGF0ZXI7CiAgICAgTGF5ZXJSZW5k
ZXJlckNocm9taXVtKiBtX2xheWVyUmVuZGVyZXI7CiB9OwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>98256</attachid>
            <date>2011-06-22 15:57:40 -0700</date>
            <delta_ts>2011-06-23 12:38:27 -0700</delta_ts>
            <desc>merged up to ToT</desc>
            <filename>bug-61099-20110622155739.patch</filename>
            <type>text/plain</type>
            <size>30716</size>
            <attacher name="James Robinson">jamesr</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODk0ODgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBkMjQxYTFiY2NlNTYyMjcx
MTZiYTY2YmY1M2RlZDM2ZWYwNjU5ZjNiLi5mYzZkY2ViZTU2MjYyNmRkYmRjOWQ2ZDBhOTdmZWU1
MmJiM2VlNzViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNjEgQEAKKzIwMTEtMDUtMjUgIEphbWVz
IFJvYmluc29uICA8amFtZXNyQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBbY2hyb21pdW1dIEZpeCBvd25lcnNoaXAgb2YgUGxh
dGZvcm1JbWFnZSBmb3IgSW1hZ2VMYXllckNocm9taXVtcworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjEwOTkKKworICAgICAgICBGb3IgYSBjb21wb3Np
dGVkIGltYWdlLCBib3RoIHRoZSBJbWFnZUxheWVyQ2hyb21pdW0gYW5kIGl0cyBhc3NvY2lhdGVk
IExheWVyVGlsZXJDaHJvbWl1bSBuZWVkIGFjY2VzcyB0byBhCisgICAgICAgIFBsYXRmb3JtSW1h
Z2UgLSB0aGUgSW1hZ2VMYXllckNocm9taXVtIGhhcyB0byB1cGRhdGUgdGhlIFBsYXRmb3JtSW1h
Z2UncyBjb250ZW50cyBhbmQgdGhlIExheWVyVGlsZXJDaHJvbWl1bSBoYXMKKyAgICAgICAgdG8g
dXBsb2FkIHBpeGVscyBmcm9tIGl0LiAgVGhpcyBwYXRjaCBtYWtlcyB0aGUgSW1hZ2VMYXllclRl
eHR1cmVVcGRhdGVyIGhhdmUgZXhjbHVzaXZlIG93bmVyc2hpcCBvZiB0aGUKKyAgICAgICAgUGxh
dGZvcm1JbWFnZSBhbmQgbW92ZXMgb3duZXJzaGlwIG9mIHRoZSBMYXllclRleHR1cmVVcGRhdGVy
IGZyb20gdGhlIExheWVyVGlsZXJDaHJvbWl1bSB0byB0aGUgb3duZXIgb2YgdGhlCisgICAgICAg
IHRpbGVyLiAgVGhlIHVwZGF0ZXIgaXMgcGFzc2VkIGluIGFzIGEgcGFyYW1ldGVyIHRvIHRoZSBy
ZWxldmFudCB0aWxlciBjYWxscy4KKworICAgICAgICBQYXRjaCBhbHNvIGZpeGVzIGEgbnVtYmVy
IG9mIG1pbm9yIHN0eWxlIGlzc3VlcyAobWlzc2luZyBleHBsaWNpdCBrZXl3b3JkIG9uIGNvbnN0
cnVjdG9yLCBldGMpLgorCisgICAgICAgIFJlZmFjdG9yIG9ubHksIG5vIG5ldyB0ZXN0cy4KKwor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NvbnRlbnRMYXllckNocm9taXVt
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRMYXllclBhaW50ZXI6OmNyZWF0ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpDb250ZW50TGF5ZXJQYWludGVyOjpDb250ZW50TGF5ZXJQYWludGVy
KToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRlbnRMYXllckNocm9taXVtOjpwYWludENvbnRlbnRz
SWZEaXJ0eSk6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50TGF5ZXJDaHJvbWl1bTo6Y3JlYXRl
VGV4dHVyZVVwZGF0ZXJJZk5lZWRlZCk6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50TGF5ZXJD
aHJvbWl1bTo6ZHJhdyk6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50TGF5ZXJDaHJvbWl1bTo6
Y3JlYXRlVGlsZXJJZk5lZWRlZCk6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50TGF5ZXJDaHJv
bWl1bTo6dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcyk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vQ29udGVudExheWVyQ2hyb21pdW0uaDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9JbWFnZUxheWVyQ2hyb21pdW0uY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SW1hZ2VMYXllclRleHR1cmVVcGRhdGVyOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29y
ZTo6SW1hZ2VMYXllclRleHR1cmVVcGRhdGVyOjp1cGRhdGVGcm9tSW1hZ2UpOgorICAgICAgICAo
V2ViQ29yZTo6SW1hZ2VMYXllclRleHR1cmVVcGRhdGVyOjppbWFnZVNpemUpOgorICAgICAgICAo
V2ViQ29yZTo6SW1hZ2VMYXllclRleHR1cmVVcGRhdGVyOjpJbWFnZUxheWVyVGV4dHVyZVVwZGF0
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VMYXllckNocm9taXVtOjp+SW1hZ2VMYXllckNo
cm9taXVtKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlTGF5ZXJDaHJvbWl1bTo6cGFpbnRDb250
ZW50c0lmRGlydHkpOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VMYXllckNocm9taXVtOjp1cGRh
dGVDb21wb3NpdG9yUmVzb3VyY2VzKToKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlTGF5ZXJDaHJv
bWl1bTo6c2V0TGF5ZXJSZW5kZXJlcik6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUxheWVyQ2hy
b21pdW06OmNyZWF0ZVRleHR1cmVVcGRhdGVySWZOZWVkZWQpOgorICAgICAgICAoV2ViQ29yZTo6
SW1hZ2VMYXllckNocm9taXVtOjpsYXllckJvdW5kcyk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vSW1hZ2VMYXllckNocm9taXVtLmg6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6TGF5ZXJSZW5kZXJlckNocm9taXVtKToKKyAg
ICAgICAgKFdlYkNvcmU6OkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6dXBkYXRlUm9vdExheWVyQ29u
dGVudHMpOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJSZW5kZXJlckNocm9taXVtOjpkcmF3Um9v
dExheWVyKToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6dXBkYXRl
TGF5ZXJzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRl
cmVyQ2hyb21pdW0uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXll
clRleHR1cmVVcGRhdGVyLmg6CisgICAgICAgIChXZWJDb3JlOjpMYXllclRleHR1cmVVcGRhdGVy
OjpMYXllclRleHR1cmVVcGRhdGVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9MYXllclRleHR1cmVVcGRhdGVyQ2FudmFzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okxh
eWVyVGV4dHVyZVVwZGF0ZXJCaXRtYXA6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpMYXll
clRleHR1cmVVcGRhdGVyU2tQaWN0dXJlOjpjcmVhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL0xheWVyVGV4dHVyZVVwZGF0ZXJDYW52YXMuaDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclRpbGVyQ2hyb21pdW0uY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6TGF5ZXJUaWxlckNocm9taXVtOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29y
ZTo6TGF5ZXJUaWxlckNocm9taXVtOjpMYXllclRpbGVyQ2hyb21pdW0pOgorICAgICAgICAoV2Vi
Q29yZTo6TGF5ZXJUaWxlckNocm9taXVtOjpwcmVwYXJlVG9VcGRhdGUpOgorICAgICAgICAoV2Vi
Q29yZTo6TGF5ZXJUaWxlckNocm9taXVtOjp1cGRhdGVSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6
OkxheWVyVGlsZXJDaHJvbWl1bTo6ZHJhdyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vTGF5ZXJUaWxlckNocm9taXVtLmg6CisKIDIwMTEtMDYtMjIgIE1hcmsgUGlsZ3Jp
bSAgPHBpbGdyaW1AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEFkYW0gQmFy
dGguCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9Db250ZW50TGF5ZXJDaHJvbWl1bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9Db250ZW50TGF5ZXJDaHJvbWl1bS5jcHAKaW5kZXggZDE4Nzk3NjJiNzZk
YzhjMzA1MDBiZDQxMjdhMjU2Y2M5YmM4ZDIzNi4uNmUyMjVmZGU3ODkwMmEwODljZTQ3YWRmNmQ1
NGJjY2RmMzliZWJlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vQ29udGVudExheWVyQ2hyb21pdW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NvbnRlbnRMYXllckNocm9taXVtLmNwcApAQCAt
NTcsMTAgKzU3LDExIEBAIHVzaW5nIG5hbWVzcGFjZSBzdGQ7CiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKIGNsYXNzIENvbnRlbnRMYXllclBhaW50ZXIgOiBwdWJsaWMgTGF5ZXJQYWludGVyQ2hyb21p
dW0geworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKENvbnRlbnRMYXllclBhaW50ZXIpOwogcHVi
bGljOgotICAgIGV4cGxpY2l0IENvbnRlbnRMYXllclBhaW50ZXIoR3JhcGhpY3NMYXllckNocm9t
aXVtKiBvd25lcikKLSAgICAgICAgOiBtX293bmVyKG93bmVyKQorICAgIHN0YXRpYyBQYXNzT3du
UHRyPENvbnRlbnRMYXllclBhaW50ZXI+IGNyZWF0ZShHcmFwaGljc0xheWVyQ2hyb21pdW0qIG93
bmVyKQogICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBDb250ZW50TGF5ZXJQYWlu
dGVyKG93bmVyKSk7CiAgICAgfQogCiAgICAgdmlydHVhbCB2b2lkIHBhaW50KEdyYXBoaWNzQ29u
dGV4dCYgY29udGV4dCwgY29uc3QgSW50UmVjdCYgY29udGVudFJlY3QpCkBAIC03NSw2ICs3Niwx
MSBAQCBwdWJsaWM6CiAgICAgICAgIFBsYXRmb3JtQnJpZGdlOjpoaXN0b2dyYW1DdXN0b21Db3Vu
dHMoIlJlbmRlcmVyNC5BY2NlbENvbnRlbnRQYWludE1lZ2FwaXhQZXJTZWNvbmQiLCBwaXhlbHNQ
ZXJTZWMgLyAxMDAwMDAwLCAxMCwgMjEwLCAzMCk7CiAgICAgfQogcHJpdmF0ZToKKyAgICBleHBs
aWNpdCBDb250ZW50TGF5ZXJQYWludGVyKEdyYXBoaWNzTGF5ZXJDaHJvbWl1bSogb3duZXIpCisg
ICAgICAgIDogbV9vd25lcihvd25lcikKKyAgICB7CisgICAgfQorCiAgICAgR3JhcGhpY3NMYXll
ckNocm9taXVtKiBtX293bmVyOwogfTsKIApAQCAtMTEyLDEyICsxMTgsMTMgQEAgdm9pZCBDb250
ZW50TGF5ZXJDaHJvbWl1bTo6cGFpbnRDb250ZW50c0lmRGlydHkoY29uc3QgSW50UmVjdCYgdGFy
Z2V0U3VyZmFjZVJlY3QKICAgICBpZiAoIWRyYXdzQ29udGVudCgpKQogICAgICAgICByZXR1cm47
CiAKLSAgICBtX3RpbGVyLT5wcmVwYXJlVG9VcGRhdGUobGF5ZXJSZWN0KTsKKyAgICBtX3RpbGVy
LT5wcmVwYXJlVG9VcGRhdGUobGF5ZXJSZWN0LCBtX3RleHR1cmVVcGRhdGVyLmdldCgpKTsKICAg
ICBtX2RpcnR5UmVjdCA9IEZsb2F0UmVjdCgpOwogfQogCiB2b2lkIENvbnRlbnRMYXllckNocm9t
aXVtOjpjbGVhbnVwUmVzb3VyY2VzKCkKIHsKKyAgICBtX3RleHR1cmVVcGRhdGVyLmNsZWFyKCk7
CiAgICAgbV90aWxlci5jbGVhcigpOwogICAgIExheWVyQ2hyb21pdW06OmNsZWFudXBSZXNvdXJj
ZXMoKTsKIH0KQEAgLTEyOCwxNCArMTM1LDE3IEBAIHZvaWQgQ29udGVudExheWVyQ2hyb21pdW06
OnNldExheWVyUmVuZGVyZXIoTGF5ZXJSZW5kZXJlckNocm9taXVtKiBsYXllclJlbmRlcmVyCiAg
ICAgY3JlYXRlVGlsZXJJZk5lZWRlZCgpOwogfQogCi1QYXNzT3duUHRyPExheWVyVGV4dHVyZVVw
ZGF0ZXI+IENvbnRlbnRMYXllckNocm9taXVtOjpjcmVhdGVUZXh0dXJlVXBkYXRlcigpCit2b2lk
IENvbnRlbnRMYXllckNocm9taXVtOjpjcmVhdGVUZXh0dXJlVXBkYXRlcklmTmVlZGVkKCkKIHsK
LSAgICBPd25QdHI8TGF5ZXJQYWludGVyQ2hyb21pdW0+IHBhaW50ZXIgPSBhZG9wdFB0cihuZXcg
Q29udGVudExheWVyUGFpbnRlcihtX293bmVyKSk7CisgICAgaWYgKG1fdGV4dHVyZVVwZGF0ZXIp
CisgICAgICAgIHJldHVybjsKICNpZiBVU0UoU0tJQSkKLSAgICBpZiAobGF5ZXJSZW5kZXJlcigp
LT5hY2NlbGVyYXRlRHJhd2luZygpKQotICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3IExheWVy
VGV4dHVyZVVwZGF0ZXJTa1BpY3R1cmUobGF5ZXJSZW5kZXJlckNvbnRleHQoKSwgcGFpbnRlci5y
ZWxlYXNlKCksIGxheWVyUmVuZGVyZXIoKS0+c2tpYUNvbnRleHQoKSkpOworICAgIGlmIChsYXll
clJlbmRlcmVyKCktPmFjY2VsZXJhdGVEcmF3aW5nKCkpIHsKKyAgICAgICAgbV90ZXh0dXJlVXBk
YXRlciA9IExheWVyVGV4dHVyZVVwZGF0ZXJTa1BpY3R1cmU6OmNyZWF0ZShsYXllclJlbmRlcmVy
Q29udGV4dCgpLCBDb250ZW50TGF5ZXJQYWludGVyOjpjcmVhdGUobV9vd25lciksIGxheWVyUmVu
ZGVyZXIoKS0+c2tpYUNvbnRleHQoKSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CiAjZW5kaWYK
LSAgICByZXR1cm4gYWRvcHRQdHIobmV3IExheWVyVGV4dHVyZVVwZGF0ZXJCaXRtYXAobGF5ZXJS
ZW5kZXJlckNvbnRleHQoKSwgcGFpbnRlci5yZWxlYXNlKCksIGxheWVyUmVuZGVyZXIoKS0+Y29u
dGV4dFN1cHBvcnRzTWFwU3ViKCkpKTsKKyAgICBtX3RleHR1cmVVcGRhdGVyID0gTGF5ZXJUZXh0
dXJlVXBkYXRlckJpdG1hcDo6Y3JlYXRlKGxheWVyUmVuZGVyZXJDb250ZXh0KCksIENvbnRlbnRM
YXllclBhaW50ZXI6OmNyZWF0ZShtX293bmVyKSwgbGF5ZXJSZW5kZXJlcigpLT5jb250ZXh0U3Vw
cG9ydHNNYXBTdWIoKSk7CiB9CiAKIFRyYW5zZm9ybWF0aW9uTWF0cml4IENvbnRlbnRMYXllckNo
cm9taXVtOjp0aWxpbmdUcmFuc2Zvcm0oKQpAQCAtMjE2LDcgKzIyNiw3IEBAIHZvaWQgQ29udGVu
dExheWVyQ2hyb21pdW06OmRyYXcoY29uc3QgSW50UmVjdCYgdGFyZ2V0U3VyZmFjZVJlY3QpCiAg
ICAgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXggdHJhbnNmb3JtID0gdGlsaW5nVHJhbnNmb3Jt
KCk7CiAgICAgSW50UmVjdCBsYXllclJlY3QgPSB2aXNpYmxlTGF5ZXJSZWN0KHRhcmdldFN1cmZh
Y2VSZWN0KTsKICAgICBpZiAoIWxheWVyUmVjdC5pc0VtcHR5KCkpCi0gICAgICAgIG1fdGlsZXIt
PmRyYXcobGF5ZXJSZWN0LCB0cmFuc2Zvcm0sIGNjTGF5ZXJJbXBsKCktPmRyYXdPcGFjaXR5KCkp
OworICAgICAgICBtX3RpbGVyLT5kcmF3KGxheWVyUmVjdCwgdHJhbnNmb3JtLCBjY0xheWVySW1w
bCgpLT5kcmF3T3BhY2l0eSgpLCBtX3RleHR1cmVVcGRhdGVyLmdldCgpKTsKIH0KIAogYm9vbCBD
b250ZW50TGF5ZXJDaHJvbWl1bTo6ZHJhd3NDb250ZW50KCkgY29uc3QKQEAgLTIzOCwxNiArMjQ4
LDE3IEBAIHZvaWQgQ29udGVudExheWVyQ2hyb21pdW06OmNyZWF0ZVRpbGVySWZOZWVkZWQoKQog
ICAgIGlmIChtX3RpbGVyKQogICAgICAgICByZXR1cm47CiAKKyAgICBjcmVhdGVUZXh0dXJlVXBk
YXRlcklmTmVlZGVkKCk7CisKICAgICBtX3RpbGVyID0gTGF5ZXJUaWxlckNocm9taXVtOjpjcmVh
dGUoCiAgICAgICAgIGxheWVyUmVuZGVyZXIoKSwKLSAgICAgICAgY3JlYXRlVGV4dHVyZVVwZGF0
ZXIoKSwKICAgICAgICAgSW50U2l6ZShkZWZhdWx0VGlsZVNpemUsIGRlZmF1bHRUaWxlU2l6ZSks
CiAgICAgICAgIExheWVyVGlsZXJDaHJvbWl1bTo6SGFzQm9yZGVyVGV4ZWxzKTsKIH0KIAogdm9p
ZCBDb250ZW50TGF5ZXJDaHJvbWl1bTo6dXBkYXRlQ29tcG9zaXRvclJlc291cmNlcygpCiB7Ci0g
ICAgbV90aWxlci0+dXBkYXRlUmVjdCgpOworICAgIG1fdGlsZXItPnVwZGF0ZVJlY3QobV90ZXh0
dXJlVXBkYXRlci5nZXQoKSk7CiB9CiAKIHZvaWQgQ29udGVudExheWVyQ2hyb21pdW06OnNldFRp
bGluZ09wdGlvbihUaWxpbmdPcHRpb24gb3B0aW9uKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ29udGVudExheWVyQ2hyb21pdW0uaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NvbnRlbnRMYXllckNocm9t
aXVtLmgKaW5kZXggY2IyZTFmYjQyMTE1NWEyNzE4YjE2MGExM2E4NWNhNTY2ZGU0MWIzMi4uYTVl
ZWU2YzNiOGRkMTVkZTEwNTNkZmViNDNmYTNiY2E3NzY5MDhiNiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ29udGVudExheWVyQ2hyb21pdW0u
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Db250ZW50
TGF5ZXJDaHJvbWl1bS5oCkBAIC02OSw4ICs2OSw2IEBAIHByb3RlY3RlZDoKICAgICB2aXJ0dWFs
IHZvaWQgY2xlYW51cFJlc291cmNlcygpOwogICAgIHZpcnR1YWwgdm9pZCBzZXRMYXllclJlbmRl
cmVyKExheWVyUmVuZGVyZXJDaHJvbWl1bSopOwogCi0gICAgdmlydHVhbCBQYXNzT3duUHRyPExh
eWVyVGV4dHVyZVVwZGF0ZXI+IGNyZWF0ZVRleHR1cmVVcGRhdGVyKCk7Ci0KICAgICB2aXJ0dWFs
IEludFJlY3QgbGF5ZXJCb3VuZHMoKSBjb25zdDsKIAogICAgIHZpcnR1YWwgVHJhbnNmb3JtYXRp
b25NYXRyaXggdGlsaW5nVHJhbnNmb3JtKCk7CkBAIC04MSw4ICs3OSwxMCBAQCBwcm90ZWN0ZWQ6
CiAKICAgICB2b2lkIHVwZGF0ZUxheWVyU2l6ZShjb25zdCBJbnRTaXplJik7CiAgICAgdm9pZCBj
cmVhdGVUaWxlcklmTmVlZGVkKCk7CisgICAgdmlydHVhbCB2b2lkIGNyZWF0ZVRleHR1cmVVcGRh
dGVySWZOZWVkZWQoKTsKICAgICB2b2lkIHNldFRpbGluZ09wdGlvbihUaWxpbmdPcHRpb24pOwog
CisgICAgT3duUHRyPExheWVyVGV4dHVyZVVwZGF0ZXI+IG1fdGV4dHVyZVVwZGF0ZXI7CiAgICAg
T3duUHRyPExheWVyVGlsZXJDaHJvbWl1bT4gbV90aWxlcjsKICAgICBUaWxpbmdPcHRpb24gbV90
aWxpbmdPcHRpb247CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vSW1hZ2VMYXllckNocm9taXVtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ltYWdlTGF5ZXJDaHJvbWl1bS5jcHAKaW5kZXggYTE3
NGNhMzI4MjE2Y2ZiNDU1NThlYzYwYjY0YzQzMzdhZDQ5MjQyNC4uMGNhZjBmM2ViYWUxMmExZjRi
MWIzMzg0OWVmM2M4MmM3MTljZmU3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vSW1hZ2VMYXllckNocm9taXVtLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9JbWFnZUxheWVyQ2hyb21pdW0uY3Bw
CkBAIC00NCwxMyArNDQsMTMgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgSW1hZ2VM
YXllclRleHR1cmVVcGRhdGVyIDogcHVibGljIExheWVyVGV4dHVyZVVwZGF0ZXIgeworICAgIFdU
Rl9NQUtFX05PTkNPUFlBQkxFKEltYWdlTGF5ZXJUZXh0dXJlVXBkYXRlcik7CiBwdWJsaWM6Ci0g
ICAgSW1hZ2VMYXllclRleHR1cmVVcGRhdGVyKEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCBj
b25zdCBQbGF0Zm9ybUltYWdlJiBpbWFnZSwgYm9vbCB1c2VNYXBUZXhTdWJJbWFnZSkKLSAgICAg
ICAgOiBMYXllclRleHR1cmVVcGRhdGVyKGNvbnRleHQpCi0gICAgICAgICwgbV9pbWFnZShpbWFn
ZSkKLSAgICAgICAgLCBtX3RleFN1YkltYWdlKHVzZU1hcFRleFN1YkltYWdlKQorICAgIHN0YXRp
YyBQYXNzT3duUHRyPEltYWdlTGF5ZXJUZXh0dXJlVXBkYXRlcj4gY3JlYXRlKEdyYXBoaWNzQ29u
dGV4dDNEKiBjb250ZXh0LCBib29sIHVzZU1hcFRleFN1YkltYWdlKQogICAgIHsKKyAgICAgICAg
cmV0dXJuIGFkb3B0UHRyKG5ldyBJbWFnZUxheWVyVGV4dHVyZVVwZGF0ZXIoY29udGV4dCwgdXNl
TWFwVGV4U3ViSW1hZ2UpKTsKICAgICB9CisKICAgICB2aXJ0dWFsIH5JbWFnZUxheWVyVGV4dHVy
ZVVwZGF0ZXIoKSB7IH0KIAogICAgIHZpcnR1YWwgT3JpZW50YXRpb24gb3JpZW50YXRpb24oKSB7
IHJldHVybiBMYXllclRleHR1cmVVcGRhdGVyOjpCb3R0b21VcE9yaWVudGF0aW9uOyB9CkBAIC03
NiwxNCArNzYsMjkgQEAgcHVibGljOgogICAgICAgICBtX3RleFN1YkltYWdlLnVwbG9hZChtX2lt
YWdlLnBpeGVscygpLCBpbWFnZVJlY3QoKSwgY2xpcHBlZFNvdXJjZVJlY3QsIGNsaXBwZWREZXN0
UmVjdCwgY29udGV4dCgpKTsKICAgICB9CiAKKyAgICB2b2lkIHVwZGF0ZUZyb21JbWFnZShOYXRp
dmVJbWFnZVB0ciBuYXRpdmVJbWFnZSkKKyAgICB7CisgICAgICAgIG1faW1hZ2UudXBkYXRlRnJv
bUltYWdlKG5hdGl2ZUltYWdlKTsKKyAgICB9CisKKyAgICBJbnRTaXplIGltYWdlU2l6ZSgpIGNv
bnN0CisgICAgeworICAgICAgICByZXR1cm4gbV9pbWFnZS5zaXplKCk7CisgICAgfQorCiBwcml2
YXRlOgorICAgIEltYWdlTGF5ZXJUZXh0dXJlVXBkYXRlcihHcmFwaGljc0NvbnRleHQzRCogY29u
dGV4dCwgYm9vbCB1c2VNYXBUZXhTdWJJbWFnZSkKKyAgICAgICAgOiBMYXllclRleHR1cmVVcGRh
dGVyKGNvbnRleHQpCisgICAgICAgICwgbV90ZXhTdWJJbWFnZSh1c2VNYXBUZXhTdWJJbWFnZSkK
KyAgICB7CisgICAgfQorCiAgICAgSW50UmVjdCBpbWFnZVJlY3QoKSBjb25zdAogICAgIHsKICAg
ICAgICAgcmV0dXJuIEludFJlY3QoSW50UG9pbnQ6Onplcm8oKSwgbV9pbWFnZS5zaXplKCkpOwog
ICAgIH0KIAotICAgIC8vIEZJWE1FOiBJbWFnZUxheWVyVGV4dHVyZVVwZGF0ZXIgc2hvdWxkIHJh
dGhlciBvd24gYSBQbGF0Zm9ybUltYWdlIHJhdGhlciB0aGFuIGtlZXBpbmcgYSByZWZlcmVuY2Uu
Ci0gICAgY29uc3QgUGxhdGZvcm1JbWFnZSYgbV9pbWFnZTsKKyAgICBQbGF0Zm9ybUltYWdlIG1f
aW1hZ2U7CiAgICAgTGF5ZXJUZXh0dXJlU3ViSW1hZ2UgbV90ZXhTdWJJbWFnZTsKIH07CiAKQEAg
LTk5LDYgKzExNCwxMCBAQCBJbWFnZUxheWVyQ2hyb21pdW06OkltYWdlTGF5ZXJDaHJvbWl1bShH
cmFwaGljc0xheWVyQ2hyb21pdW0qIG93bmVyKQogewogfQogCitJbWFnZUxheWVyQ2hyb21pdW06
On5JbWFnZUxheWVyQ2hyb21pdW0oKQoreworfQorCiB2b2lkIEltYWdlTGF5ZXJDaHJvbWl1bTo6
c2V0Q29udGVudHMoSW1hZ2UqIGNvbnRlbnRzKQogewogICAgIC8vIHNldENvbnRlbnRzKCkgY3Vy
cmVudGx5IGdldHMgY2FsbGVkIHdoZW5ldmVyIHRoZXJlIGlzIGFueQpAQCAtMTE5LDMwICsxMzgs
NDIgQEAgdm9pZCBJbWFnZUxheWVyQ2hyb21pdW06OnBhaW50Q29udGVudHNJZkRpcnR5KGNvbnN0
IEludFJlY3QmKQogICAgIEFTU0VSVChsYXllclJlbmRlcmVyKCkpOwogCiAgICAgaWYgKCFtX2Rp
cnR5UmVjdC5pc0VtcHR5KCkpIHsKLSAgICAgICAgbV9kZWNvZGVkSW1hZ2UudXBkYXRlRnJvbUlt
YWdlKG1fY29udGVudHMtPm5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCkpOwotICAgICAgICB1
cGRhdGVMYXllclNpemUobV9kZWNvZGVkSW1hZ2Uuc2l6ZSgpKTsKLSAgICAgICAgSW50UmVjdCBw
YWludFJlY3QoSW50UG9pbnQoMCwgMCksIG1fZGVjb2RlZEltYWdlLnNpemUoKSk7CisgICAgICAg
IEltYWdlTGF5ZXJUZXh0dXJlVXBkYXRlciogaW1hZ2VUZXh0dXJlVXBkYXRlciA9IHN0YXRpY19j
YXN0PEltYWdlTGF5ZXJUZXh0dXJlVXBkYXRlcio+KG1fdGV4dHVyZVVwZGF0ZXIuZ2V0KCkpOwor
ICAgICAgICBpbWFnZVRleHR1cmVVcGRhdGVyLT51cGRhdGVGcm9tSW1hZ2UobV9jb250ZW50cy0+
bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKSk7CisgICAgICAgIHVwZGF0ZUxheWVyU2l6ZShp
bWFnZVRleHR1cmVVcGRhdGVyLT5pbWFnZVNpemUoKSk7CisgICAgICAgIEludFJlY3QgcGFpbnRS
ZWN0KEludFBvaW50KDAsIDApLCBpbWFnZVRleHR1cmVVcGRhdGVyLT5pbWFnZVNpemUoKSk7CiAg
ICAgICAgIGlmICghbV9kaXJ0eVJlY3QuaXNFbXB0eSgpKSB7CiAgICAgICAgICAgICBtX3RpbGVy
LT5pbnZhbGlkYXRlUmVjdChwYWludFJlY3QpOwogICAgICAgICAgICAgbV9kaXJ0eVJlY3QgPSBJ
bnRSZWN0KCk7CiAgICAgICAgIH0KLSAgICAgICAgbV90aWxlci0+cHJlcGFyZVRvVXBkYXRlKHBh
aW50UmVjdCk7CisgICAgICAgIG1fdGlsZXItPnByZXBhcmVUb1VwZGF0ZShwYWludFJlY3QsIG1f
dGV4dHVyZVVwZGF0ZXIuZ2V0KCkpOwogICAgIH0KIH0KIAogdm9pZCBJbWFnZUxheWVyQ2hyb21p
dW06OnVwZGF0ZUNvbXBvc2l0b3JSZXNvdXJjZXMoKQogewotICAgIG1fdGlsZXItPnVwZGF0ZVJl
Y3QoKTsKKyAgICBtX3RpbGVyLT51cGRhdGVSZWN0KG1fdGV4dHVyZVVwZGF0ZXIuZ2V0KCkpOwor
fQorCit2b2lkIEltYWdlTGF5ZXJDaHJvbWl1bTo6c2V0TGF5ZXJSZW5kZXJlcihMYXllclJlbmRl
cmVyQ2hyb21pdW0qIG5ld0xheWVyUmVuZGVyZXIpCit7CisgICAgaWYgKG5ld0xheWVyUmVuZGVy
ZXIgIT0gbGF5ZXJSZW5kZXJlcigpKQorICAgICAgICBtX3RleHR1cmVVcGRhdGVyLmNsZWFyKCk7
CisgICAgQ29udGVudExheWVyQ2hyb21pdW06OnNldExheWVyUmVuZGVyZXIobmV3TGF5ZXJSZW5k
ZXJlcik7CiB9CiAKLVBhc3NPd25QdHI8TGF5ZXJUZXh0dXJlVXBkYXRlcj4gSW1hZ2VMYXllckNo
cm9taXVtOjpjcmVhdGVUZXh0dXJlVXBkYXRlcigpCit2b2lkIEltYWdlTGF5ZXJDaHJvbWl1bTo6
Y3JlYXRlVGV4dHVyZVVwZGF0ZXJJZk5lZWRlZCgpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UHRyKG5l
dyBJbWFnZUxheWVyVGV4dHVyZVVwZGF0ZXIobGF5ZXJSZW5kZXJlckNvbnRleHQoKSwgbV9kZWNv
ZGVkSW1hZ2UsIGxheWVyUmVuZGVyZXIoKS0+Y29udGV4dFN1cHBvcnRzTWFwU3ViKCkpKTsKKyAg
ICBpZiAoIW1fdGV4dHVyZVVwZGF0ZXIpCisgICAgICAgIG1fdGV4dHVyZVVwZGF0ZXIgPSBJbWFn
ZUxheWVyVGV4dHVyZVVwZGF0ZXI6OmNyZWF0ZShsYXllclJlbmRlcmVyQ29udGV4dCgpLCBsYXll
clJlbmRlcmVyKCktPmNvbnRleHRTdXBwb3J0c01hcFN1YigpKTsKIH0KIAogSW50UmVjdCBJbWFn
ZUxheWVyQ2hyb21pdW06OmxheWVyQm91bmRzKCkgY29uc3QKIHsKLSAgICByZXR1cm4gSW50UmVj
dChJbnRQb2ludCgwLCAwKSwgbV9kZWNvZGVkSW1hZ2Uuc2l6ZSgpKTsKKyAgICBpZiAoIW1fdGV4
dHVyZVVwZGF0ZXIpCisgICAgICAgIHJldHVybiBJbnRSZWN0KCk7CisgICAgSW1hZ2VMYXllclRl
eHR1cmVVcGRhdGVyKiBpbWFnZVRleHR1cmVVcGRhdGVyID0gc3RhdGljX2Nhc3Q8SW1hZ2VMYXll
clRleHR1cmVVcGRhdGVyKj4obV90ZXh0dXJlVXBkYXRlci5nZXQoKSk7CisgICAgcmV0dXJuIElu
dFJlY3QoSW50UG9pbnQoKSwgaW1hZ2VUZXh0dXJlVXBkYXRlci0+aW1hZ2VTaXplKCkpOwogfQog
CiBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBJbWFnZUxheWVyQ2hyb21pdW06OnRpbGluZ1RyYW5zZm9y
bSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9JbWFnZUxheWVyQ2hyb21pdW0uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL0ltYWdlTGF5ZXJDaHJvbWl1bS5oCmluZGV4IDEzZDA5YzJhYzU0YjgxYmNiYWM3
ZWJkNmRiYzFlMGMyZDI3YjQyNDEuLjMzMTNjMTRlMjBiYzVmNjIxMjg2MDU2MGUyZmE4YWNiMzNj
NzhlMDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL0ltYWdlTGF5ZXJDaHJvbWl1bS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL0ltYWdlTGF5ZXJDaHJvbWl1bS5oCkBAIC00OSw2ICs0OSw3IEBAIGNs
YXNzIEltYWdlOwogY2xhc3MgSW1hZ2VMYXllckNocm9taXVtIDogcHVibGljIENvbnRlbnRMYXll
ckNocm9taXVtIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxJbWFnZUxheWVyQ2hy
b21pdW0+IGNyZWF0ZShHcmFwaGljc0xheWVyQ2hyb21pdW0qIG93bmVyID0gMCk7CisgICAgdmly
dHVhbCB+SW1hZ2VMYXllckNocm9taXVtKCk7CiAKICAgICB2aXJ0dWFsIHZvaWQgcGFpbnRDb250
ZW50c0lmRGlydHkoY29uc3QgSW50UmVjdCYgdGFyZ2V0U3VyZmFjZVJlY3QpOwogICAgIHZpcnR1
YWwgdm9pZCB1cGRhdGVDb21wb3NpdG9yUmVzb3VyY2VzKCk7CkBAIC01OSwxNCArNjAsMTYgQEAg
cHVibGljOgogcHJvdGVjdGVkOgogICAgIHZpcnR1YWwgY29uc3QgY2hhciogbGF5ZXJUeXBlQXNT
dHJpbmcoKSBjb25zdCB7IHJldHVybiAiSW1hZ2VMYXllciI7IH0KIAotICAgIHZpcnR1YWwgUGFz
c093blB0cjxMYXllclRleHR1cmVVcGRhdGVyPiBjcmVhdGVUZXh0dXJlVXBkYXRlcigpOworICAg
IHZpcnR1YWwgdm9pZCBzZXRMYXllclJlbmRlcmVyKExheWVyUmVuZGVyZXJDaHJvbWl1bSopOwor
CiAgICAgdmlydHVhbCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCB0aWxpbmdUcmFuc2Zvcm0oKTsKICAg
ICB2aXJ0dWFsIEludFJlY3QgbGF5ZXJCb3VuZHMoKSBjb25zdDsKIAogcHJpdmF0ZToKICAgICBJ
bWFnZUxheWVyQ2hyb21pdW0oR3JhcGhpY3NMYXllckNocm9taXVtKiBvd25lcik7CiAKLSAgICBQ
bGF0Zm9ybUltYWdlIG1fZGVjb2RlZEltYWdlOworICAgIHZpcnR1YWwgdm9pZCBjcmVhdGVUZXh0
dXJlVXBkYXRlcklmTmVlZGVkKCk7CisKICAgICBOYXRpdmVJbWFnZVB0ciBtX2ltYWdlRm9yQ3Vy
cmVudEZyYW1lOwogICAgIFJlZlB0cjxJbWFnZT4gbV9jb250ZW50czsKIH07CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVy
Q2hyb21pdW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
TGF5ZXJSZW5kZXJlckNocm9taXVtLmNwcAppbmRleCBkMzNiZjg0N2ZlMGEwMjVlOGJiNGUzMjc5
Mzg1MzgxZmI1Mzc4N2YyLi5lOTA4YTg4NzgyZTc2NmU3MzExZTZlZmQwNWZjZTI3MWNiN2I0YWFi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9M
YXllclJlbmRlcmVyQ2hyb21pdW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5jcHAKQEAgLTEzMSw3ICsxMzEs
MTQgQEAgTGF5ZXJSZW5kZXJlckNocm9taXVtOjpMYXllclJlbmRlcmVyQ2hyb21pdW0oUGFzc1Jl
ZlB0cjxHcmFwaGljc0NvbnRleHQzRD4gY29udGUKICAgICAgICAgbV9jb250ZXh0LT5nZXRFeHRl
bnNpb25zKCktPmVuc3VyZUVuYWJsZWQoIkdMX0NIUk9NSVVNX21hcF9zdWIiKTsKICAgICBtX2hh
cmR3YXJlQ29tcG9zaXRpbmcgPSBpbml0aWFsaXplU2hhcmVkT2JqZWN0cygpOwogCi0gICAgbV9y
b290TGF5ZXJDb250ZW50VGlsZXIgPSBMYXllclRpbGVyQ2hyb21pdW06OmNyZWF0ZSh0aGlzLCBj
cmVhdGVSb290TGF5ZXJUZXh0dXJlVXBkYXRlcihjb250ZW50UGFpbnQpLCBJbnRTaXplKDI1Niwg
MjU2KSwgTGF5ZXJUaWxlckNocm9taXVtOjpOb0JvcmRlclRleGVscyk7CisjaWYgVVNFKFNLSUEp
CisgICAgaWYgKG1fYWNjZWxlcmF0ZURyYXdpbmcpCisgICAgICAgIG1fcm9vdExheWVyVGV4dHVy
ZVVwZGF0ZXIgPSBMYXllclRleHR1cmVVcGRhdGVyU2tQaWN0dXJlOjpjcmVhdGUobV9jb250ZXh0
LmdldCgpLCBjb250ZW50UGFpbnQsIHNraWFDb250ZXh0KCkpOworICAgIGVsc2UKKyNlbmRpZgor
ICAgICAgICBtX3Jvb3RMYXllclRleHR1cmVVcGRhdGVyID0gTGF5ZXJUZXh0dXJlVXBkYXRlckJp
dG1hcDo6Y3JlYXRlKG1fY29udGV4dC5nZXQoKSwgY29udGVudFBhaW50LCBtX2NvbnRleHRTdXBw
b3J0c01hcFN1Yik7CisKKyAgICBtX3Jvb3RMYXllckNvbnRlbnRUaWxlciA9IExheWVyVGlsZXJD
aHJvbWl1bTo6Y3JlYXRlKHRoaXMsIEludFNpemUoMjU2LCAyNTYpLCBMYXllclRpbGVyQ2hyb21p
dW06Ok5vQm9yZGVyVGV4ZWxzKTsKICAgICBBU1NFUlQobV9yb290TGF5ZXJDb250ZW50VGlsZXIp
OwogCiAgICAgbV9oZWFkc1VwRGlzcGxheSA9IENDSGVhZHNVcERpc3BsYXk6OmNyZWF0ZSh0aGlz
KTsKQEAgLTE4Miw3ICsxODksNyBAQCB2b2lkIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6aW52YWxp
ZGF0ZVJvb3RMYXllclJlY3QoY29uc3QgSW50UmVjdCYgZGlydHlSZWN0KQogdm9pZCBMYXllclJl
bmRlcmVyQ2hyb21pdW06OnVwZGF0ZVJvb3RMYXllckNvbnRlbnRzKCkKIHsKICAgICBUUkFDRV9F
VkVOVCgiTGF5ZXJSZW5kZXJlckNocm9taXVtOjp1cGRhdGVSb290TGF5ZXJDb250ZW50cyIsIHRo
aXMsIDApOwotICAgIG1fcm9vdExheWVyQ29udGVudFRpbGVyLT5wcmVwYXJlVG9VcGRhdGUobV92
aWV3cG9ydFZpc2libGVSZWN0KTsKKyAgICBtX3Jvb3RMYXllckNvbnRlbnRUaWxlci0+cHJlcGFy
ZVRvVXBkYXRlKG1fdmlld3BvcnRWaXNpYmxlUmVjdCwgbV9yb290TGF5ZXJUZXh0dXJlVXBkYXRl
ci5nZXQoKSk7CiB9CiAKIHZvaWQgTGF5ZXJSZW5kZXJlckNocm9taXVtOjpkcmF3Um9vdExheWVy
KCkKQEAgLTE5MCw3ICsxOTcsNyBAQCB2b2lkIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6ZHJhd1Jv
b3RMYXllcigpCiAgICAgVHJhbnNmb3JtYXRpb25NYXRyaXggc2Nyb2xsOwogICAgIHNjcm9sbC50
cmFuc2xhdGUoLW1fdmlld3BvcnRWaXNpYmxlUmVjdC54KCksIC1tX3ZpZXdwb3J0VmlzaWJsZVJl
Y3QueSgpKTsKIAotICAgIG1fcm9vdExheWVyQ29udGVudFRpbGVyLT5kcmF3KG1fdmlld3BvcnRW
aXNpYmxlUmVjdCwgc2Nyb2xsLCAxLjBmKTsKKyAgICBtX3Jvb3RMYXllckNvbnRlbnRUaWxlci0+
ZHJhdyhtX3ZpZXdwb3J0VmlzaWJsZVJlY3QsIHNjcm9sbCwgMS4wZiwgbV9yb290TGF5ZXJUZXh0
dXJlVXBkYXRlci5nZXQoKSk7CiB9CiAKIHZvaWQgTGF5ZXJSZW5kZXJlckNocm9taXVtOjpzZXRW
aWV3cG9ydChjb25zdCBJbnRSZWN0JiB2aXNpYmxlUmVjdCwgY29uc3QgSW50UmVjdCYgY29udGVu
dFJlY3QsIGNvbnN0IEludFBvaW50JiBzY3JvbGxQb3NpdGlvbikKQEAgLTI4NSwxNSArMjkyLDYg
QEAgdm9pZCBMYXllclJlbmRlcmVyQ2hyb21pdW06OnVwZGF0ZUFuZERyYXdMYXllcnMoKQogICAg
ICAgICBjb3B5T2Zmc2NyZWVuVGV4dHVyZVRvRGlzcGxheSgpOwogfQogCi1QYXNzT3duUHRyPExh
eWVyVGV4dHVyZVVwZGF0ZXI+IExheWVyUmVuZGVyZXJDaHJvbWl1bTo6Y3JlYXRlUm9vdExheWVy
VGV4dHVyZVVwZGF0ZXIoUGFzc093blB0cjxMYXllclBhaW50ZXJDaHJvbWl1bT4gcGFpbnRlcikK
LXsKLSNpZiBVU0UoU0tJQSkKLSAgICBpZiAoYWNjZWxlcmF0ZURyYXdpbmcoKSkKLSAgICAgICAg
cmV0dXJuIGFkb3B0UHRyKG5ldyBMYXllclRleHR1cmVVcGRhdGVyU2tQaWN0dXJlKGNvbnRleHQo
KSwgcGFpbnRlciwgc2tpYUNvbnRleHQoKSkpOwotI2VuZGlmCi0gICAgcmV0dXJuIGFkb3B0UHRy
KG5ldyBMYXllclRleHR1cmVVcGRhdGVyQml0bWFwKGNvbnRleHQoKSwgcGFpbnRlciwgY29udGV4
dFN1cHBvcnRzTWFwU3ViKCkpKTsKLX0KLQogdm9pZCBMYXllclJlbmRlcmVyQ2hyb21pdW06OnVw
ZGF0ZUxheWVycyhMYXllckxpc3QmIHJlbmRlclN1cmZhY2VMYXllckxpc3QpCiB7CiAgICAgVFJB
Q0VfRVZFTlQoIkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6dXBkYXRlTGF5ZXJzIiwgdGhpcywgMCk7
CkBAIC0zNTEsNyArMzQ5LDcgQEAgdm9pZCBMYXllclJlbmRlcmVyQ2hyb21pdW06OnVwZGF0ZUxh
eWVycyhMYXllckxpc3QmIHJlbmRlclN1cmZhY2VMYXllckxpc3QpCiAgICAgLy8gVXBkYXRlIGNv
bXBvc2l0b3IgcmVzb3VyY2VzIGZvciByb290IGxheWVyLgogICAgIHsKICAgICAgICAgVFJBQ0Vf
RVZFTlQoIkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6dXBkYXRlTGF5ZXI6OnVwZGF0ZVJvb3QiLCB0
aGlzLCAwKTsKLSAgICAgICAgbV9yb290TGF5ZXJDb250ZW50VGlsZXItPnVwZGF0ZVJlY3QoKTsK
KyAgICAgICAgbV9yb290TGF5ZXJDb250ZW50VGlsZXItPnVwZGF0ZVJlY3QobV9yb290TGF5ZXJU
ZXh0dXJlVXBkYXRlci5nZXQoKSk7CiAgICAgfQogCiAgICAgLy8gQWZ0ZXIgdXBkYXRlQ29tcG9z
aXRvclJlc291cmNlcywgc2V0L3dhaXQgbGF0Y2hlcyBmb3IgYWxsIGNoaWxkCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVy
Q2hyb21pdW0uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xh
eWVyUmVuZGVyZXJDaHJvbWl1bS5oCmluZGV4IGRiNmZmM2VkNDBhM2JkY2FjZTI1YTc4ODBjZjBk
ZWIzM2MzYTJkN2MuLjk5M2U1MmI1ZjAyNTE3N2IxMTBiZTE0YTQ3MWRhZDUxZWJkMThkYzIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVy
UmVuZGVyZXJDaHJvbWl1bS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5oCkBAIC0xNjEsOCArMTYxLDYgQEAgcHJp
dmF0ZToKIAogICAgIExheWVyUmVuZGVyZXJDaHJvbWl1bShQYXNzUmVmUHRyPEdyYXBoaWNzQ29u
dGV4dDNEPiwgUGFzc093blB0cjxMYXllclBhaW50ZXJDaHJvbWl1bT4gY29udGVudFBhaW50LCBi
b29sIGFjY2VsZXJhdGVEcmF3aW5nKTsKIAotICAgIFBhc3NPd25QdHI8TGF5ZXJUZXh0dXJlVXBk
YXRlcj4gY3JlYXRlUm9vdExheWVyVGV4dHVyZVVwZGF0ZXIoUGFzc093blB0cjxMYXllclBhaW50
ZXJDaHJvbWl1bT4pOwotCiAgICAgdm9pZCB1cGRhdGVMYXllcnMoTGF5ZXJMaXN0JiByZW5kZXJT
dXJmYWNlTGF5ZXJMaXN0KTsKICAgICB2b2lkIHVwZGF0ZVJvb3RMYXllckNvbnRlbnRzKCk7CiAg
ICAgdm9pZCB1cGRhdGVQcm9wZXJ0aWVzQW5kUmVuZGVyU3VyZmFjZXMoQ0NMYXllckltcGwqLCBj
b25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgcGFyZW50TWF0cml4LCBMYXllckxpc3QmIHJlbmRl
clN1cmZhY2VMYXllckxpc3QsIExheWVyTGlzdCYgbGF5ZXJzKTsKQEAgLTIwMiw2ICsyMDAsNyBA
QCBwcml2YXRlOgogICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IG1fcHJvamVjdGlvbk1hdHJpeDsK
IAogICAgIFJlZlB0cjxMYXllckNocm9taXVtPiBtX3Jvb3RMYXllcjsKKyAgICBPd25QdHI8TGF5
ZXJUZXh0dXJlVXBkYXRlcj4gbV9yb290TGF5ZXJUZXh0dXJlVXBkYXRlcjsKICAgICBPd25QdHI8
TGF5ZXJUaWxlckNocm9taXVtPiBtX3Jvb3RMYXllckNvbnRlbnRUaWxlcjsKIAogICAgIGJvb2wg
bV9oYXJkd2FyZUNvbXBvc2l0aW5nOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJUZXh0dXJlVXBkYXRlci5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJUZXh0dXJlVXBkYXRlci5oCmluZGV4
IGU1OTczZGQ1NmU2OThmZWQ1YmY2NGEzYTVmMDFhYzcwZDRjOGJkOTguLjVjMzk0YmZjYTUyMTc2
NWQ4NzgwNmIwZWYzYmY0NDhiY2I0NmNmMmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyVGV4dHVyZVVwZGF0ZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclRleHR1cmVVcGRhdGVy
LmgKQEAgLTM3LDggKzM3LDggQEAgY2xhc3MgSW50U2l6ZTsKIGNsYXNzIExheWVyVGV4dHVyZTsK
IAogY2xhc3MgTGF5ZXJUZXh0dXJlVXBkYXRlciB7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUo
TGF5ZXJUZXh0dXJlVXBkYXRlcik7CiBwdWJsaWM6Ci0gICAgZXhwbGljaXQgTGF5ZXJUZXh0dXJl
VXBkYXRlcihHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCkgOiBtX2NvbnRleHQoY29udGV4dCkg
eyB9CiAgICAgdmlydHVhbCB+TGF5ZXJUZXh0dXJlVXBkYXRlcigpIHsgfQogCiAgICAgZW51bSBP
cmllbnRhdGlvbiB7CkBAIC01MSw2ICs1MSw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQg
dXBkYXRlVGV4dHVyZVJlY3QoTGF5ZXJUZXh0dXJlKiwgY29uc3QgSW50UmVjdCYgc291cmNlUmVj
dCwgY29uc3QgSW50UmVjdCYgZGVzdFJlY3QpID0gMDsKIAogcHJvdGVjdGVkOgorICAgIGV4cGxp
Y2l0IExheWVyVGV4dHVyZVVwZGF0ZXIoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQpIDogbV9j
b250ZXh0KGNvbnRleHQpIHsgfQorCiAgICAgR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQoKSBj
b25zdCB7IHJldHVybiBtX2NvbnRleHQ7IH0KIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyVGV4dHVyZVVwZGF0ZXJD
YW52YXMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5
ZXJUZXh0dXJlVXBkYXRlckNhbnZhcy5jcHAKaW5kZXggZGJmYmIwZmU4MzZjYzc4NGI5YTAzNDE4
MGRkYjVlZWYwMzAwODUxMi4uMTVmNzQ5MDVjNGQyYzNiZmU2ZDcxM2E2YzM4Yzk4MTEwNzc2YmU2
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
TGF5ZXJUZXh0dXJlVXBkYXRlckNhbnZhcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJUZXh0dXJlVXBkYXRlckNhbnZhcy5jcHAKQEAgLTYy
LDYgKzYyLDExIEBAIHZvaWQgTGF5ZXJUZXh0dXJlVXBkYXRlckNhbnZhczo6cGFpbnRDb250ZW50
cyhHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEluCiAgICAgbV9jb250ZW50UmVjdCA9
IGNvbnRlbnRSZWN0OwogfQogCitQYXNzT3duUHRyPExheWVyVGV4dHVyZVVwZGF0ZXJCaXRtYXA+
IExheWVyVGV4dHVyZVVwZGF0ZXJCaXRtYXA6OmNyZWF0ZShHcmFwaGljc0NvbnRleHQzRCogY29u
dGV4dCwgUGFzc093blB0cjxMYXllclBhaW50ZXJDaHJvbWl1bT4gcGFpbnRlciwgYm9vbCB1c2VN
YXBUZXhTdWJJbWFnZSkKK3sKKyAgICByZXR1cm4gYWRvcHRQdHIobmV3IExheWVyVGV4dHVyZVVw
ZGF0ZXJCaXRtYXAoY29udGV4dCwgcGFpbnRlciwgdXNlTWFwVGV4U3ViSW1hZ2UpKTsKK30KKwog
TGF5ZXJUZXh0dXJlVXBkYXRlckJpdG1hcDo6TGF5ZXJUZXh0dXJlVXBkYXRlckJpdG1hcChHcmFw
aGljc0NvbnRleHQzRCogY29udGV4dCwgUGFzc093blB0cjxMYXllclBhaW50ZXJDaHJvbWl1bT4g
cGFpbnRlciwgYm9vbCB1c2VNYXBUZXhTdWJJbWFnZSkKICAgICA6IExheWVyVGV4dHVyZVVwZGF0
ZXJDYW52YXMoY29udGV4dCwgcGFpbnRlcikKICAgICAsIG1fdGV4U3ViSW1hZ2UodXNlTWFwVGV4
U3ViSW1hZ2UpCkBAIC05MSw2ICs5NiwxMSBAQCB2b2lkIExheWVyVGV4dHVyZVVwZGF0ZXJCaXRt
YXA6OnVwZGF0ZVRleHR1cmVSZWN0KExheWVyVGV4dHVyZSogdGV4dHVyZSwgY29uc3QgSQogfQog
CiAjaWYgVVNFKFNLSUEpCitQYXNzT3duUHRyPExheWVyVGV4dHVyZVVwZGF0ZXJTa1BpY3R1cmU+
IExheWVyVGV4dHVyZVVwZGF0ZXJTa1BpY3R1cmU6OmNyZWF0ZShHcmFwaGljc0NvbnRleHQzRCog
Y29udGV4dCwgUGFzc093blB0cjxMYXllclBhaW50ZXJDaHJvbWl1bT4gcGFpbnRlciwgR3JDb250
ZXh0KiBza2lhQ29udGV4dCkKK3sKKyAgICByZXR1cm4gYWRvcHRQdHIobmV3IExheWVyVGV4dHVy
ZVVwZGF0ZXJTa1BpY3R1cmUoY29udGV4dCwgcGFpbnRlciwgc2tpYUNvbnRleHQpKTsKK30KKwog
TGF5ZXJUZXh0dXJlVXBkYXRlclNrUGljdHVyZTo6TGF5ZXJUZXh0dXJlVXBkYXRlclNrUGljdHVy
ZShHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgUGFzc093blB0cjxMYXllclBhaW50ZXJDaHJv
bWl1bT4gcGFpbnRlciwgR3JDb250ZXh0KiBza2lhQ29udGV4dCkKICAgICA6IExheWVyVGV4dHVy
ZVVwZGF0ZXJDYW52YXMoY29udGV4dCwgcGFpbnRlcikKICAgICAsIG1fc2tpYUNvbnRleHQoc2tp
YUNvbnRleHQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9MYXllclRleHR1cmVVcGRhdGVyQ2FudmFzLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclRleHR1cmVVcGRhdGVyQ2FudmFzLmgKaW5kZXgg
MzMzOTYzNmI1YjYyMzk5ODE3YmUwMzg3ODMxMGRmNjgxODQ4N2MyZS4uNTIzNGU5NjI4MDQ4Yjhl
M2NkMmM2OTA3ZmRhNWYzMWI4ODNkMjQ3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJUZXh0dXJlVXBkYXRlckNhbnZhcy5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyVGV4dHVyZVVw
ZGF0ZXJDYW52YXMuaApAQCAtNTAsMjMgKzUwLDI3IEBAIGNsYXNzIExheWVyUGFpbnRlckNocm9t
aXVtOwogCiAvLyBBIExheWVyVGV4dHVyZVVwZGF0ZXIgd2l0aCBhbiBpbnRlcm5hbCBjYW52YXMu
CiBjbGFzcyBMYXllclRleHR1cmVVcGRhdGVyQ2FudmFzIDogcHVibGljIExheWVyVGV4dHVyZVVw
ZGF0ZXIgeworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKExheWVyVGV4dHVyZVVwZGF0ZXJDYW52
YXMpOwogcHVibGljOgotICAgIExheWVyVGV4dHVyZVVwZGF0ZXJDYW52YXMoR3JhcGhpY3NDb250
ZXh0M0QqLCBQYXNzT3duUHRyPExheWVyUGFpbnRlckNocm9taXVtPik7CiAgICAgdmlydHVhbCB+
TGF5ZXJUZXh0dXJlVXBkYXRlckNhbnZhcygpIHsgfQogCiBwcm90ZWN0ZWQ6CisgICAgTGF5ZXJU
ZXh0dXJlVXBkYXRlckNhbnZhcyhHcmFwaGljc0NvbnRleHQzRCosIFBhc3NPd25QdHI8TGF5ZXJQ
YWludGVyQ2hyb21pdW0+KTsKKwogICAgIHZvaWQgcGFpbnRDb250ZW50cyhHcmFwaGljc0NvbnRl
eHQmLCBjb25zdCBJbnRSZWN0JiBjb250ZW50UmVjdCk7CiAgICAgY29uc3QgSW50UmVjdCYgY29u
dGVudFJlY3QoKSBjb25zdCB7IHJldHVybiBtX2NvbnRlbnRSZWN0OyB9CiAKIHByaXZhdGU6CisK
ICAgICBJbnRSZWN0IG1fY29udGVudFJlY3Q7CiAgICAgT3duUHRyPExheWVyUGFpbnRlckNocm9t
aXVtPiBtX3BhaW50ZXI7CiB9OwogCiAvLyBBIExheWVyVGV4dHVyZVVwZGF0ZXIgd2l0aCBhbiBp
bnRlcm5hbCBiaXRtYXAgY2FudmFzLgogY2xhc3MgTGF5ZXJUZXh0dXJlVXBkYXRlckJpdG1hcCA6
IHB1YmxpYyBMYXllclRleHR1cmVVcGRhdGVyQ2FudmFzIHsKKyAgICBXVEZfTUFLRV9OT05DT1BZ
QUJMRShMYXllclRleHR1cmVVcGRhdGVyQml0bWFwKTsKIHB1YmxpYzoKLSAgICBMYXllclRleHR1
cmVVcGRhdGVyQml0bWFwKEdyYXBoaWNzQ29udGV4dDNEKiwgUGFzc093blB0cjxMYXllclBhaW50
ZXJDaHJvbWl1bT4sIGJvb2wgdXNlTWFwVGV4U3ViSW1hZ2UpOworICAgIHN0YXRpYyBQYXNzT3du
UHRyPExheWVyVGV4dHVyZVVwZGF0ZXJCaXRtYXA+IGNyZWF0ZShHcmFwaGljc0NvbnRleHQzRCos
IFBhc3NPd25QdHI8TGF5ZXJQYWludGVyQ2hyb21pdW0+LCBib29sIHVzZU1hcFRleFN1YkltYWdl
KTsKICAgICB2aXJ0dWFsIH5MYXllclRleHR1cmVVcGRhdGVyQml0bWFwKCkgeyB9CiAKICAgICB2
aXJ0dWFsIE9yaWVudGF0aW9uIG9yaWVudGF0aW9uKCkgeyByZXR1cm4gTGF5ZXJUZXh0dXJlVXBk
YXRlcjo6Qm90dG9tVXBPcmllbnRhdGlvbjsgfQpAQCAtNzQsMTQgKzc4LDE2IEBAIHB1YmxpYzoK
ICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlVGV4dHVyZVJlY3QoTGF5ZXJUZXh0dXJlKiwgY29uc3Qg
SW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50UmVjdCYgZGVzdFJlY3QpOwogCiBwcml2YXRl
OgorICAgIExheWVyVGV4dHVyZVVwZGF0ZXJCaXRtYXAoR3JhcGhpY3NDb250ZXh0M0QqLCBQYXNz
T3duUHRyPExheWVyUGFpbnRlckNocm9taXVtPiwgYm9vbCB1c2VNYXBUZXhTdWJJbWFnZSk7CiAg
ICAgUGxhdGZvcm1DYW52YXMgbV9jYW52YXM7CiAgICAgTGF5ZXJUZXh0dXJlU3ViSW1hZ2UgbV90
ZXhTdWJJbWFnZTsKIH07CiAKICNpZiBVU0UoU0tJQSkKIGNsYXNzIExheWVyVGV4dHVyZVVwZGF0
ZXJTa1BpY3R1cmUgOiBwdWJsaWMgTGF5ZXJUZXh0dXJlVXBkYXRlckNhbnZhcyB7CisgICAgV1RG
X01BS0VfTk9OQ09QWUFCTEUoTGF5ZXJUZXh0dXJlVXBkYXRlclNrUGljdHVyZSk7CiBwdWJsaWM6
Ci0gICAgTGF5ZXJUZXh0dXJlVXBkYXRlclNrUGljdHVyZShHcmFwaGljc0NvbnRleHQzRCosIFBh
c3NPd25QdHI8TGF5ZXJQYWludGVyQ2hyb21pdW0+LCBHckNvbnRleHQqKTsKKyAgICBzdGF0aWMg
UGFzc093blB0cjxMYXllclRleHR1cmVVcGRhdGVyU2tQaWN0dXJlPiBjcmVhdGUoR3JhcGhpY3ND
b250ZXh0M0QqLCBQYXNzT3duUHRyPExheWVyUGFpbnRlckNocm9taXVtPiwgR3JDb250ZXh0Kik7
CiAgICAgdmlydHVhbCB+TGF5ZXJUZXh0dXJlVXBkYXRlclNrUGljdHVyZSgpOwogCiAgICAgdmly
dHVhbCBPcmllbnRhdGlvbiBvcmllbnRhdGlvbigpIHsgcmV0dXJuIExheWVyVGV4dHVyZVVwZGF0
ZXI6OlRvcERvd25PcmllbnRhdGlvbjsgfQpAQCAtODksNiArOTUsNyBAQCBwdWJsaWM6CiAgICAg
dmlydHVhbCB2b2lkIHVwZGF0ZVRleHR1cmVSZWN0KExheWVyVGV4dHVyZSosIGNvbnN0IEludFJl
Y3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0KTsKIAogcHJpdmF0ZToKKyAg
ICBMYXllclRleHR1cmVVcGRhdGVyU2tQaWN0dXJlKEdyYXBoaWNzQ29udGV4dDNEKiwgUGFzc093
blB0cjxMYXllclBhaW50ZXJDaHJvbWl1bT4sIEdyQ29udGV4dCopOwogICAgIHZvaWQgZGVsZXRl
RnJhbWVCdWZmZXIoKTsKICAgICBib29sIGNyZWF0ZUZyYW1lQnVmZmVyKCk7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyVGlsZXJD
aHJvbWl1bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9M
YXllclRpbGVyQ2hyb21pdW0uY3BwCmluZGV4IGRlMjE3MDRjMzRhYWUyY2NkZTFkNTMzOWVhMmQ2
ZGVjYjIwMzczMmUuLjkyNzFjNjdhOGRhYzJhNjJiOWM3MDVlMmQ3NTNjZDNmOGUxNTI5NjYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVy
VGlsZXJDaHJvbWl1bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vTGF5ZXJUaWxlckNocm9taXVtLmNwcApAQCAtNDIsMTggKzQyLDE3IEBAIHVzaW5n
IG5hbWVzcGFjZSBzdGQ7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUGFzc093blB0cjxMYXll
clRpbGVyQ2hyb21pdW0+IExheWVyVGlsZXJDaHJvbWl1bTo6Y3JlYXRlKExheWVyUmVuZGVyZXJD
aHJvbWl1bSogbGF5ZXJSZW5kZXJlciwgUGFzc093blB0cjxMYXllclRleHR1cmVVcGRhdGVyPiB0
ZXh0dXJlVXBkYXRlciwgY29uc3QgSW50U2l6ZSYgdGlsZVNpemUsIEJvcmRlclRleGVsT3B0aW9u
IGJvcmRlcikKK1Bhc3NPd25QdHI8TGF5ZXJUaWxlckNocm9taXVtPiBMYXllclRpbGVyQ2hyb21p
dW06OmNyZWF0ZShMYXllclJlbmRlcmVyQ2hyb21pdW0qIGxheWVyUmVuZGVyZXIsIGNvbnN0IElu
dFNpemUmIHRpbGVTaXplLCBCb3JkZXJUZXhlbE9wdGlvbiBib3JkZXIpCiB7CiAgICAgaWYgKCFs
YXllclJlbmRlcmVyIHx8IHRpbGVTaXplLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIG51bGxw
dHI7CiAKLSAgICByZXR1cm4gYWRvcHRQdHIobmV3IExheWVyVGlsZXJDaHJvbWl1bShsYXllclJl
bmRlcmVyLCB0ZXh0dXJlVXBkYXRlciwgdGlsZVNpemUsIGJvcmRlcikpOworICAgIHJldHVybiBh
ZG9wdFB0cihuZXcgTGF5ZXJUaWxlckNocm9taXVtKGxheWVyUmVuZGVyZXIsIHRpbGVTaXplLCBi
b3JkZXIpKTsKIH0KIAotTGF5ZXJUaWxlckNocm9taXVtOjpMYXllclRpbGVyQ2hyb21pdW0oTGF5
ZXJSZW5kZXJlckNocm9taXVtKiBsYXllclJlbmRlcmVyLCBQYXNzT3duUHRyPExheWVyVGV4dHVy
ZVVwZGF0ZXI+IHRleHR1cmVVcGRhdGVyLCBjb25zdCBJbnRTaXplJiB0aWxlU2l6ZSwgQm9yZGVy
VGV4ZWxPcHRpb24gYm9yZGVyKQorTGF5ZXJUaWxlckNocm9taXVtOjpMYXllclRpbGVyQ2hyb21p
dW0oTGF5ZXJSZW5kZXJlckNocm9taXVtKiBsYXllclJlbmRlcmVyLCBjb25zdCBJbnRTaXplJiB0
aWxlU2l6ZSwgQm9yZGVyVGV4ZWxPcHRpb24gYm9yZGVyKQogICAgIDogbV9za2lwc0RyYXcoZmFs
c2UpCiAgICAgLCBtX3RpbGluZ0RhdGEobWF4KHRpbGVTaXplLndpZHRoKCksIHRpbGVTaXplLmhl
aWdodCgpKSwgMCwgMCwgYm9yZGVyID09IEhhc0JvcmRlclRleGVscykKLSAgICAsIG1fdGV4dHVy
ZVVwZGF0ZXIodGV4dHVyZVVwZGF0ZXIpCiAgICAgLCBtX2xheWVyUmVuZGVyZXIobGF5ZXJSZW5k
ZXJlcikKIHsKICAgICBzZXRUaWxlU2l6ZSh0aWxlU2l6ZSk7CkBAIC0yMjMsNyArMjIyLDcgQEAg
dm9pZCBMYXllclRpbGVyQ2hyb21pdW06OmludmFsaWRhdGVFbnRpcmVMYXllcigpCiAgICAgbV90
aWxpbmdEYXRhLnNldFRvdGFsU2l6ZSgwLCAwKTsKIH0KIAotdm9pZCBMYXllclRpbGVyQ2hyb21p
dW06OnByZXBhcmVUb1VwZGF0ZShjb25zdCBJbnRSZWN0JiBjb250ZW50UmVjdCkKK3ZvaWQgTGF5
ZXJUaWxlckNocm9taXVtOjpwcmVwYXJlVG9VcGRhdGUoY29uc3QgSW50UmVjdCYgY29udGVudFJl
Y3QsIExheWVyVGV4dHVyZVVwZGF0ZXIqIHRleHR1cmVVcGRhdGVyKQogewogICAgIGlmIChtX3Nr
aXBzRHJhdyB8fCBjb250ZW50UmVjdC5pc0VtcHR5KCkpIHsKICAgICAgICAgbV91cGRhdGVSZWN0
ID0gSW50UmVjdCgpOwpAQCAtMjYyLDEwICsyNjEsMTAgQEAgdm9pZCBMYXllclRpbGVyQ2hyb21p
dW06OnByZXBhcmVUb1VwZGF0ZShjb25zdCBJbnRSZWN0JiBjb250ZW50UmVjdCkKICAgICBpZiAo
ZGlydHlMYXllclJlY3QuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBtX3RleHR1
cmVVcGRhdGVyLT5wcmVwYXJlVG9VcGRhdGUobV9wYWludFJlY3QsIG1fdGlsZVNpemUsIG1fdGls
aW5nRGF0YS5ib3JkZXJUZXhlbHMoKSk7CisgICAgdGV4dHVyZVVwZGF0ZXItPnByZXBhcmVUb1Vw
ZGF0ZShtX3BhaW50UmVjdCwgbV90aWxlU2l6ZSwgbV90aWxpbmdEYXRhLmJvcmRlclRleGVscygp
KTsKIH0KIAotdm9pZCBMYXllclRpbGVyQ2hyb21pdW06OnVwZGF0ZVJlY3QoKQordm9pZCBMYXll
clRpbGVyQ2hyb21pdW06OnVwZGF0ZVJlY3QoTGF5ZXJUZXh0dXJlVXBkYXRlciogdGV4dHVyZVVw
ZGF0ZXIpCiB7CiAgICAgLy8gUGFpbnRpbmcgY291bGQgY2F1c2UgY29tcG9zaXRpbmcgdG8gZ2V0
IHR1cm5lZCBvZmYsIHdoaWNoIG1heSBjYXVzZSB0aGUgdGlsZXIgdG8gYmVjb21lIGludmFsaWRh
dGVkIG1pZC11cGRhdGUuCiAgICAgaWYgKCFtX3RpbGluZ0RhdGEudG90YWxTaXplWCgpIHx8ICFt
X3RpbGluZ0RhdGEudG90YWxTaXplWSgpIHx8IG1fdXBkYXRlUmVjdC5pc0VtcHR5KCkpCkBAIC0z
MjUsNyArMzI0LDcgQEAgdm9pZCBMYXllclRpbGVyQ2hyb21pdW06OnVwZGF0ZVJlY3QoKQogICAg
ICAgICAgICAgR0xDKGNvbnRleHQsIGNvbnRleHQtPnRleFBhcmFtZXRlcmkoR3JhcGhpY3NDb250
ZXh0M0Q6OlRFWFRVUkVfMkQsIEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFX01BR19GSUxURVIs
IGZpbHRlcikpOwogICAgICAgICAgICAgR0xDKGNvbnRleHQsIGNvbnRleHQtPmJpbmRUZXh0dXJl
KEdyYXBoaWNzQ29udGV4dDNEOjpURVhUVVJFXzJELCAwKSk7CiAKLSAgICAgICAgICAgIG1fdGV4
dHVyZVVwZGF0ZXItPnVwZGF0ZVRleHR1cmVSZWN0KHRpbGUtPnRleHR1cmUoKSwgc291cmNlUmVj
dCwgZGVzdFJlY3QpOworICAgICAgICAgICAgdGV4dHVyZVVwZGF0ZXItPnVwZGF0ZVRleHR1cmVS
ZWN0KHRpbGUtPnRleHR1cmUoKSwgc291cmNlUmVjdCwgZGVzdFJlY3QpOwogICAgICAgICAgICAg
dGlsZS0+Y2xlYXJEaXJ0eSgpOwogICAgICAgICB9CiAgICAgfQpAQCAtMzM2LDcgKzMzNSw3IEBA
IHZvaWQgTGF5ZXJUaWxlckNocm9taXVtOjpzZXRMYXllclBvc2l0aW9uKGNvbnN0IEludFBvaW50
JiBsYXllclBvc2l0aW9uKQogICAgIG1fbGF5ZXJQb3NpdGlvbiA9IGxheWVyUG9zaXRpb247CiB9
CiAKLXZvaWQgTGF5ZXJUaWxlckNocm9taXVtOjpkcmF3KGNvbnN0IEludFJlY3QmIGNvbnRlbnRS
ZWN0LCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgZ2xvYmFsVHJhbnNmb3JtLCBmbG9hdCBv
cGFjaXR5KQordm9pZCBMYXllclRpbGVyQ2hyb21pdW06OmRyYXcoY29uc3QgSW50UmVjdCYgY29u
dGVudFJlY3QsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBnbG9iYWxUcmFuc2Zvcm0sIGZs
b2F0IG9wYWNpdHksIExheWVyVGV4dHVyZVVwZGF0ZXIqIHRleHR1cmVVcGRhdGVyKQogewogICAg
IGlmIChtX3NraXBzRHJhdyB8fCAhbV90aWxlcy5zaXplKCkgfHwgY29udGVudFJlY3QuaXNFbXB0
eSgpKQogICAgICAgICByZXR1cm47CkBAIC0zODAsNyArMzc5LDcgQEAgdm9pZCBMYXllclRpbGVy
Q2hyb21pdW06OmRyYXcoY29uc3QgSW50UmVjdCYgY29udGVudFJlY3QsIGNvbnN0IFRyYW5zZm9y
bWF0aW9uTWEKICAgICAgICAgICAgIGZsb2F0IHRleFNjYWxlWSA9IHRpbGVSZWN0LmhlaWdodCgp
IC8gdGlsZUhlaWdodDsKICAgICAgICAgICAgIC8vIE9wZW5HTCBjb29yZGluYXRlIHN5c3RlbSBp
cyBib3R0b20tdXAuCiAgICAgICAgICAgICAvLyBJZiB0aWxlIHRleHR1cmUgaXMgdG9wLWRvd24s
IHdlIG5lZWQgdG8gZmxpcCB0aGUgdGV4dHVyZSBjb29yZGluYXRlcy4KLSAgICAgICAgICAgIGlm
IChtX3RleHR1cmVVcGRhdGVyLT5vcmllbnRhdGlvbigpID09IExheWVyVGV4dHVyZVVwZGF0ZXI6
OlRvcERvd25PcmllbnRhdGlvbikgeworICAgICAgICAgICAgaWYgKHRleHR1cmVVcGRhdGVyLT5v
cmllbnRhdGlvbigpID09IExheWVyVGV4dHVyZVVwZGF0ZXI6OlRvcERvd25PcmllbnRhdGlvbikg
ewogICAgICAgICAgICAgICAgIHRleFRyYW5zbGF0ZVkgPSAxLjAgLSB0ZXhUcmFuc2xhdGVZOwog
ICAgICAgICAgICAgICAgIHRleFNjYWxlWSAqPSAtMS4wOwogICAgICAgICAgICAgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJUaWxl
ckNocm9taXVtLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9M
YXllclRpbGVyQ2hyb21pdW0uaAppbmRleCA4NzNiMTU5YTJiNTcxOThiMzE2Nzg2MzFjMzA0MjUw
Y2U5MGJkYzM4Li5mMGJmZWQ5YTIxMjA3MTA2NGE3MzI1OTgzMDc4NmY2MzNhNGEyOGI0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclRp
bGVyQ2hyb21pdW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9MYXllclRpbGVyQ2hyb21pdW0uaApAQCAtNDYsNyArNDYsNyBAQCBjbGFzcyBMYXllclRp
bGVyQ2hyb21pdW0gewogcHVibGljOgogICAgIGVudW0gQm9yZGVyVGV4ZWxPcHRpb24geyBIYXNC
b3JkZXJUZXhlbHMsIE5vQm9yZGVyVGV4ZWxzIH07CiAKLSAgICBzdGF0aWMgUGFzc093blB0cjxM
YXllclRpbGVyQ2hyb21pdW0+IGNyZWF0ZShMYXllclJlbmRlcmVyQ2hyb21pdW0qLCBQYXNzT3du
UHRyPExheWVyVGV4dHVyZVVwZGF0ZXI+LCBjb25zdCBJbnRTaXplJiB0aWxlU2l6ZSwgQm9yZGVy
VGV4ZWxPcHRpb24pOworICAgIHN0YXRpYyBQYXNzT3duUHRyPExheWVyVGlsZXJDaHJvbWl1bT4g
Y3JlYXRlKExheWVyUmVuZGVyZXJDaHJvbWl1bSosIGNvbnN0IEludFNpemUmIHRpbGVTaXplLCBC
b3JkZXJUZXhlbE9wdGlvbik7CiAKICAgICB+TGF5ZXJUaWxlckNocm9taXVtKCk7CiAKQEAgLTU1
LDExICs1NSwxMSBAQCBwdWJsaWM6CiAgICAgdm9pZCBpbnZhbGlkYXRlRW50aXJlTGF5ZXIoKTsK
IAogICAgIC8vIFByZXBhcmUgZGF0YSBuZWVkZWQgdG8gdXBkYXRlIHRleHR1cmVzIHRoYXQgaW5z
dGVyc2VjdCB3aXRoIGNvbnRlbnRSZWN0LgotICAgIHZvaWQgcHJlcGFyZVRvVXBkYXRlKGNvbnN0
IEludFJlY3QmIGNvbnRlbnRSZWN0KTsKKyAgICB2b2lkIHByZXBhcmVUb1VwZGF0ZShjb25zdCBJ
bnRSZWN0JiBjb250ZW50UmVjdCwgTGF5ZXJUZXh0dXJlVXBkYXRlciopOwogICAgIC8vIFVwZGF0
ZSBpbnZhbGlkIHRleHR1cmVzIHRoYXQgaW50ZXJzZWN0IHdpdGggY29udGVudFJlY3QgcHJvdmlk
ZWQgaW4gcHJlcGFyZVRvVXBkYXRlKCkuCi0gICAgdm9pZCB1cGRhdGVSZWN0KCk7CisgICAgdm9p
ZCB1cGRhdGVSZWN0KExheWVyVGV4dHVyZVVwZGF0ZXIqKTsKICAgICAvLyBEcmF3IGFsbCB0aWxl
cyB0aGF0IGludGVyc2VjdCB3aXRoIHRoZSBjb250ZW50IHJlY3QuCi0gICAgdm9pZCBkcmF3KGNv
bnN0IEludFJlY3QmIGNvbnRlbnRSZWN0LCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYsIGZs
b2F0IG9wYWNpdHkpOworICAgIHZvaWQgZHJhdyhjb25zdCBJbnRSZWN0JiBjb250ZW50UmVjdCwg
Y29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmLCBmbG9hdCBvcGFjaXR5LCBMYXllclRleHR1cmVV
cGRhdGVyKik7CiAKICAgICBpbnQgbnVtVGlsZXMoKSBjb25zdCB7IHJldHVybiBtX3RpbGluZ0Rh
dGEubnVtVGlsZXMoKTsgfQogCkBAIC03Niw3ICs3Niw3IEBAIHB1YmxpYzoKICAgICBMYXllclRl
eHR1cmUqIGdldFNpbmdsZVRleHR1cmUoKTsKIAogcHJpdmF0ZToKLSAgICBMYXllclRpbGVyQ2hy
b21pdW0oTGF5ZXJSZW5kZXJlckNocm9taXVtKiwgUGFzc093blB0cjxMYXllclRleHR1cmVVcGRh
dGVyPiwgY29uc3QgSW50U2l6ZSYgdGlsZVNpemUsIEJvcmRlclRleGVsT3B0aW9uKTsKKyAgICBM
YXllclRpbGVyQ2hyb21pdW0oTGF5ZXJSZW5kZXJlckNocm9taXVtKiwgY29uc3QgSW50U2l6ZSYg
dGlsZVNpemUsIEJvcmRlclRleGVsT3B0aW9uKTsKIAogICAgIGNsYXNzIFRpbGUgOiBwdWJsaWMg
UmVmQ291bnRlZDxUaWxlPiB7CiAgICAgICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFRpbGUpOwpA
QCAtMTUyLDcgKzE1Miw2IEBAIHByaXZhdGU6CiAKICAgICBUaWxpbmdEYXRhIG1fdGlsaW5nRGF0
YTsKIAotICAgIE93blB0cjxMYXllclRleHR1cmVVcGRhdGVyPiBtX3RleHR1cmVVcGRhdGVyOwog
ICAgIExheWVyUmVuZGVyZXJDaHJvbWl1bSogbV9sYXllclJlbmRlcmVyOwogfTsKIAo=
</data>
<flag name="review"
          id="92423"
          type_id="1"
          status="+"
          setter="kbr"
    />
          </attachment>
      

    </bug>

</bugzilla>