<?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>116616</bug_id>
          
          <creation_ts>2013-05-22 07:18:49 -0700</creation_ts>
          <short_desc>[BlackBerry] backface-visibility: hidden doesn&apos;t work properly with masks and filters</short_desc>
          <delta_ts>2013-05-28 10:28:26 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit BlackBerry</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>116604</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Arvid Nilsson">anilsson</reporter>
          <assigned_to name="Arvid Nilsson">anilsson</assigned_to>
          <cc>anilsson</cc>
    
    <cc>anlo</cc>
    
    <cc>cgarcia</cc>
    
    <cc>commit-queue</cc>
    
    <cc>jpetsovits</cc>
    
    <cc>rwlbuis</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>892280</commentid>
    <comment_count>0</comment_count>
    <who name="Arvid Nilsson">anilsson</who>
    <bug_when>2013-05-22 07:18:49 -0700</bug_when>
    <thetext>When we switched from Skia to BlackBerry::Platform::Graphics::GraphicsContext, we switched the winding order for culling, since the BB::P::G::GC uses clockwise geometry and requires glFrontFace(GL_CW). However, masks and filters still use counterclockwise geometry as we used to do with Skia. So they get erroneously culled out when -webkit-backface-visibility: hidden is applied.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>893257</commentid>
    <comment_count>1</comment_count>
    <who name="Arvid Nilsson">anilsson</who>
    <bug_when>2013-05-24 03:51:27 -0700</bug_when>
    <thetext>To further complicate matters, a right-side-up transform is used when rendering layers into surfaces, so if we switch the winding order of layer geometry, instead of erroneously culling the surface when drawn to the screen, it will cull the layer when it&apos;s drawn into the surface =D</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>893258</commentid>
    <comment_count>2</comment_count>
      <attachid>202800</attachid>
    <who name="Arvid Nilsson">anilsson</who>
    <bug_when>2013-05-24 04:11:34 -0700</bug_when>
    <thetext>Created attachment 202800
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>893259</commentid>
    <comment_count>3</comment_count>
      <attachid>202800</attachid>
    <who name="Arvid Nilsson">anilsson</who>
    <bug_when>2013-05-24 04:13:27 -0700</bug_when>
    <thetext>Comment on attachment 202800
Patch

Oops, I forgot to mention a PR number in the changelog.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>893261</commentid>
    <comment_count>4</comment_count>
      <attachid>202801</attachid>
    <who name="Arvid Nilsson">anilsson</who>
    <bug_when>2013-05-24 04:19:26 -0700</bug_when>
    <thetext>Created attachment 202801
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>893268</commentid>
    <comment_count>5</comment_count>
    <who name="Arvid Nilsson">anilsson</who>
    <bug_when>2013-05-24 04:44:26 -0700</bug_when>
    <thetext>I think an informal review from jpetso or someone else who knows this stuff is needed before an upstream reviewer can r+ it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>894031</commentid>
    <comment_count>6</comment_count>
      <attachid>202801</attachid>
    <who name="Rob Buis">rwlbuis</who>
    <bug_when>2013-05-27 08:09:29 -0700</bug_when>
    <thetext>Comment on attachment 202801
Patch

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

&gt; Source/WebCore/platform/graphics/blackberry/LayerCompositingThread.cpp:292
&gt; +        static float texcoords[4 * 2] = { 0, 0,  1, 0,  1, 1,  0, 1 };

We can probably make these global in the cpp, like in LayerFilterRenderer.cpp

&gt; Source/WebCore/platform/graphics/blackberry/LayerCompositingThread.h:165
&gt; +    FloatPoint origin() const { return FloatPoint(m_bounds.width() / 2.0f, m_bounds.height() / 2.0f); }

I wonder if FloatPoint::center would make sense...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>894046</commentid>
    <comment_count>7</comment_count>
      <attachid>202801</attachid>
    <who name="Jakob Petsovits">jpetsovits</who>
    <bug_when>2013-05-27 08:35:36 -0700</bug_when>
    <thetext>Comment on attachment 202801
Patch

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

The code looks good to me. Seconding Rob&apos;s comments.

&gt; Source/WebCore/platform/graphics/blackberry/LayerRenderer.cpp:336
&gt;      // If some layers should be drawed on temporary surfaces, we should do it first.
&gt; -    drawLayersOnSurfaces(surfaceLayers);
&gt; +    if (!surfaceLayers.isEmpty())
&gt; +        drawLayersOnSurfaces(surfaceLayers);

If you&apos;re changing this code, you might want to consider also correcting the grammatical mistake in the comment.

&gt; Source/WebCore/platform/graphics/blackberry/LayerRenderer.cpp:503
&gt;      // If there are layers drawed on surfaces, we need to switch to default framebuffer.
&gt;      // Otherwise, we just need to set viewport.

More &quot;drawed&quot; that could be drawn instead. Maybe the comment should now be rephrased anyway though, because we switch back to the default framebuffer unconditionally if the function is called at all.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>894070</commentid>
    <comment_count>8</comment_count>
    <who name="Arvid Nilsson">anilsson</who>
    <bug_when>2013-05-27 09:07:02 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; (From update of attachment 202801 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=202801&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/blackberry/LayerCompositingThread.cpp:292
&gt; &gt; +        static float texcoords[4 * 2] = { 0, 0,  1, 0,  1, 1,  0, 1 };
&gt; 
&gt; We can probably make these global in the cpp, like in LayerFilterRenderer.cpp


The texture coordinates will depend on the geometry after clipping in a future patch, so there&apos;s no point in moving this declaration around right now. There will be a LayerCompositingThread::textureCoordinates() accessor that replaces this code later in the week.

&gt; 
&gt; &gt; Source/WebCore/platform/graphics/blackberry/LayerCompositingThread.h:165
&gt; &gt; +    FloatPoint origin() const { return FloatPoint(m_bounds.width() / 2.0f, m_bounds.height() / 2.0f); }
&gt; 
&gt; I wonder if FloatPoint::center would make sense...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>894268</commentid>
    <comment_count>9</comment_count>
    <who name="Arvid Nilsson">anilsson</who>
    <bug_when>2013-05-28 02:32:48 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; (From update of attachment 202801 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=202801&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/blackberry/LayerCompositingThread.cpp:292
&gt; &gt; +        static float texcoords[4 * 2] = { 0, 0,  1, 0,  1, 1,  0, 1 };
&gt; 
&gt; We can probably make these global in the cpp, like in LayerFilterRenderer.cpp
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/blackberry/LayerCompositingThread.h:165
&gt; &gt; +    FloatPoint origin() const { return FloatPoint(m_bounds.width() / 2.0f, m_bounds.height() / 2.0f); }
&gt; 
&gt; I wonder if FloatPoint::center would make sense...

Apparently there is no FloatPoint::center method, I don&apos;t think this patch is the right time to add one.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>894270</commentid>
    <comment_count>10</comment_count>
      <attachid>203032</attachid>
    <who name="Arvid Nilsson">anilsson</who>
    <bug_when>2013-05-28 02:36:51 -0700</bug_when>
    <thetext>Created attachment 203032
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>894284</commentid>
    <comment_count>11</comment_count>
      <attachid>203034</attachid>
    <who name="Arvid Nilsson">anilsson</who>
    <bug_when>2013-05-28 03:29:05 -0700</bug_when>
    <thetext>Created attachment 203034
Patch

Remove one redundant instance of 1.0 in favor of 1. In other places, the .0f is required to force floating point math, and is thus allowed according to style guidelines</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>894285</commentid>
    <comment_count>12</comment_count>
    <who name="Arvid Nilsson">anilsson</who>
    <bug_when>2013-05-28 03:29:29 -0700</bug_when>
    <thetext>(In reply to comment #11)
&gt; Created an attachment (id=203034) [details]
&gt; Patch
&gt; 
&gt; Remove one redundant instance of 1.0 in favor of 1. In other places, the .0f is required to force floating point math, and is thus allowed according to style guidelines

Thanks to cagarcia for spotting this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>894402</commentid>
    <comment_count>13</comment_count>
      <attachid>203034</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2013-05-28 10:06:07 -0700</bug_when>
    <thetext>Comment on attachment 203034
Patch

Looks a lot cleaner!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>894413</commentid>
    <comment_count>14</comment_count>
      <attachid>203034</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-05-28 10:28:23 -0700</bug_when>
    <thetext>Comment on attachment 203034
Patch

Clearing flags on attachment: 203034

Committed r150809: &lt;http://trac.webkit.org/changeset/150809&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>894414</commentid>
    <comment_count>15</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-05-28 10:28:26 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>202800</attachid>
            <date>2013-05-24 04:11:34 -0700</date>
            <delta_ts>2013-05-24 04:19:20 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-116616-20130524131015.patch</filename>
            <type>text/plain</type>
            <size>17632</size>
            <attacher name="Arvid Nilsson">anilsson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ3MzkyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODFlMWM0NDc3YTcwNjU2
MGIxZDc3ZDYwMGVjZmVmMjg5YmRhZTVlZC4uYjY0MTZjN2ZiNGE1ZGFjNDYxYzAwOWFlYjQ3ZDY5
MTU4ZDUxN2YzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU5IEBACisyMDEzLTA1LTI0ICBBcnZp
ZCBOaWxzc29uICA8YW5pbHNzb25AcmltLmNvbT4KKworICAgICAgICBbQmxhY2tCZXJyeV0gYmFj
a2ZhY2UtdmlzaWJpbGl0eTogaGlkZGVuIGRvZXNuJ3Qgd29yayBwcm9wZXJseSB3aXRoIG1hc2tz
IGFuZCBmaWx0ZXJzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xMTY2MTYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBUaGUgQmxhY2tCZXJyeTo6UGxhdGZvcm06OkdyYXBoaWNzOjpHcmFwaGljc0NvbnRleHQg
Z2VuZXJhdGVzIGdlb21ldHJ5CisgICAgICAgIHdpdGggYSBkaWZmZXJlbnQgd2luZGluZyBvcmRl
ciB0aGFuIHRoZSBhY2NlbGVyYXRlZCBjb21wb3NpdGluZyBiYWNrZW5kCisgICAgICAgIG9mIHRo
ZSBCbGFja0JlcnJ5IHBvcnQuIFNvLCB3aGVuIHdlIHN3aXRjaGVkIGZyb20gU2tpYSB0byB0aGlz
IG5ldworICAgICAgICByZW5kZXJpbmcgZW5naW5lLCB3ZSBzd2l0Y2hlZCBmcm9tIGdsRnJvbnRG
YWNlKEdMX0NDVykgdG8KKyAgICAgICAgZ2xGcm9udEZhY2UoR0xfQ1cpLCBhbmQgYWxsIHdhcyB3
ZWxsIHdoZW4gZHJhd2luZyBkaXNwbGF5IGxpc3RzLgorICAgICAgICBIb3dldmVyLCB3ZSBmb3Jn
b3QgdG8gdXBkYXRlIHRoZSB3aW5kaW5nIG9yZGVyIG9mIGdlb21ldHJ5IGdlbmVyYXRlZAorICAg
ICAgICB3aXRoaW4gdGhlIGFjY2VsZXJhdGVkIGNvbXBvc2l0aW5nIGJhY2tlbmQsIHdoaWNoIGlz
IHVzZWQgZm9yIG1hc2tzIGFuZAorICAgICAgICBmaWx0ZXJzLCBzbyB0aGV5IHdlcmUgZ2V0dGlu
ZyBlcnJvbmVvdXNseSBjdWxsZWQgb3V0IHdoZW4KKyAgICAgICAgYmFja2ZhY2UtdmlzaWJpbGl0
eTogaGlkZGVuIHdhcyBhcHBsaWVkIHRvIHRoZW0uIEZpeGVkIGJ5IHN3aXRjaGluZyB0aGUKKyAg
ICAgICAgd2luZGluZyBvcmRlciBvZiBhbGwgZ2VvbWV0cnkgZ2VuZXJhdGVkIHVwIGhlcmUsIHdo
aWNoIGhhcyB0aGUgYWRkZWQKKyAgICAgICAgYmVuZWZpdCBvZiBlbmFibGluZyB1cyB0byB1c2Ug
VHJhbnNmb3JtYXRpb25NYXRyaXg6Om1hcFF1YWQgaW5zdGVhZCBvZgorICAgICAgICB0cmFuc2Zv
cm1pbmcgcG9pbnQtYnktcG9pbnQuCisKKyAgICAgICAgVG8gZnVydGhlciBjb21wbGljYXRlIG1h
dHRlcnMsIGEgcmlnaHQtc2lkZSB1cCB0cmFuc2Zvcm0gaXMgdXNlZCB3aGVuCisgICAgICAgIGRy
YXdpbmcgbGF5ZXJzIGludG8gc3VyZmFjZXMsIHJldmVyc2luZyB0aGUgd2luZGluZyBvcmRlciBh
bmQgcmVxdWlyaW5nCisgICAgICAgIHVzIHRvIHN3aXRjaCBiYWNrIHRvIGdsRnJvbnRGYWNlKEdM
X0NDVykgdGVtcG9yYXJpbHksIHdoZW4gZHJhd2luZworICAgICAgICBsYXllcnMgdG8gc3VyZmFj
ZXMsIG9yIHRoZSBsYXllcnMgd2lsbCBnZXQgY3VsbGVkIG91dCBpbnNpZGUgdGhlCisgICAgICAg
IHN1cmZhY2UuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCB0aGlzIGlzIG9ubHkgZGV0ZWN0YWJs
ZSBieSBwaXhlbCB0ZXN0cywgd2hpY2ggdGhlCisgICAgICAgIEJsYWNrQmVycnkgcG9ydCBjdXJy
ZW50bHkgZG9lc24ndCBzdXBwb3J0LgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYmxh
Y2tiZXJyeS9FR0xJbWFnZUxheWVyQ29tcG9zaXRpbmdUaHJlYWRDbGllbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6RUdMSW1hZ2VMYXllckNvbXBvc2l0aW5nVGhyZWFkQ2xpZW50OjpkcmF3VGV4
dHVyZXMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvTGF5ZXJDb21w
b3NpdGluZ1RocmVhZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMYXllckNvbXBvc2l0aW5nVGhy
ZWFkOjpzZXREcmF3VHJhbnNmb3JtKToKKyAgICAgICAgKFdlYkNvcmU6OmdldFRyYW5zZm9ybWVk
UmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpMYXllckNvbXBvc2l0aW5nVGhyZWFkOjpkcmF3VGV4
dHVyZXMpOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJDb21wb3NpdGluZ1RocmVhZDo6ZHJhd1N1
cmZhY2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvTGF5ZXJDb21w
b3NpdGluZ1RocmVhZC5oOgorICAgICAgICAoTGF5ZXJDb21wb3NpdGluZ1RocmVhZCk6CisgICAg
ICAgIChXZWJDb3JlOjpMYXllckNvbXBvc2l0aW5nVGhyZWFkOjpvcmlnaW4pOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvTGF5ZXJGaWx0ZXJSZW5kZXJlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5
L0xheWVyUmVuZGVyZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJSZW5kZXJlcjo6Y29t
cG9zaXRlTGF5ZXJzKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6TGF5
ZXJSZW5kZXJlcjo6ZHJhd0xheWVyc09uU3VyZmFjZXMpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2JsYWNrYmVycnkvTGF5ZXJSZW5kZXJlclN1cmZhY2UuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6TGF5ZXJSZW5kZXJlclN1cmZhY2U6OmRyYXdSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6
OkxheWVyUmVuZGVyZXJTdXJmYWNlOjp0cmFuc2Zvcm1lZEJvdW5kcyk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9MYXllclJlbmRlcmVyU3VyZmFjZS5oOgorICAgICAg
ICAoV2ViQ29yZTo6TGF5ZXJSZW5kZXJlclN1cmZhY2U6Om9yaWdpbik6CisgICAgICAgIChMYXll
clJlbmRlcmVyU3VyZmFjZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJy
eS9NZWRpYVBsYXllclByaXZhdGVCbGFja0JlcnJ5LmNwcDoKKyAgICAgICAgKFdlYkNvcmUpOgor
ICAgICAgICAoV2ViQ29yZTo6bG9hZEJ1ZmZlcmluZ0ltYWdlRGF0YSk6CisgICAgICAgIChXZWJD
b3JlOjpNZWRpYVBsYXllclByaXZhdGU6OmRyYXdCdWZmZXJpbmdBbmltYXRpb24pOgorCiAyMDEz
LTA1LTE2ICBHb3Jkb24gU3VuICA8Z29zdW5AYmxhY2tiZXJyeS5jb20+CiAKICAgICAgICAgQ3Jh
c2ggaW4gSW1hZ2UgRGVjb2RlciBkdWUgdG8gbGFyZ2UgZ2lmcy4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvRUdMSW1hZ2VMYXllckNvbXBv
c2l0aW5nVGhyZWFkQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2JsYWNrYmVycnkvRUdMSW1hZ2VMYXllckNvbXBvc2l0aW5nVGhyZWFkQ2xpZW50LmNwcAppbmRl
eCAzZTQ4YzI5MzVlY2EyZThlMzU1ZDRhZTdhZjNhMDVkYzdlMjQ5NjkxLi4yODI3ZTQzZTFjMGM2
OWQwNTQxYWM5ZjczNGMwMGIxNWIwM2UwZDA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L0VHTEltYWdlTGF5ZXJDb21wb3NpdGluZ1RocmVh
ZENsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2ti
ZXJyeS9FR0xJbWFnZUxheWVyQ29tcG9zaXRpbmdUaHJlYWRDbGllbnQuY3BwCkBAIC00Nyw3ICs0
Nyw3IEBAIHZvaWQgRUdMSW1hZ2VMYXllckNvbXBvc2l0aW5nVGhyZWFkQ2xpZW50Ojp1cGxvYWRU
ZXh0dXJlc0lmTmVlZGVkKExheWVyQ29tcG9zaXRpCiAKIHZvaWQgRUdMSW1hZ2VMYXllckNvbXBv
c2l0aW5nVGhyZWFkQ2xpZW50OjpkcmF3VGV4dHVyZXMoTGF5ZXJDb21wb3NpdGluZ1RocmVhZCog
bGF5ZXIsIGRvdWJsZSAvKnNjYWxlKi8sIGNvbnN0IEdMRVMyUHJvZ3JhbSYgcHJvZ3JhbSkKIHsK
LSAgICBzdGF0aWMgZmxvYXQgdXBzaWRlRG93bls0ICogMl0gPSB7IDAsIDEsICAwLCAwLCAgMSwg
MCwgIDEsIDEgfTsKKyAgICBzdGF0aWMgZmxvYXQgdXBzaWRlRG93bls0ICogMl0gPSB7IDAsIDEs
ICAxLCAxLCAgMSwgMCwgIDAsIDAgfTsKIAogICAgIGlmICghbV90ZXh0dXJlQWNjZXNzb3IgfHwg
IW1fdGV4dHVyZUFjY2Vzc29yLT50ZXh0dXJlSUQoKSkKICAgICAgICAgcmV0dXJuOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9MYXllckNv
bXBvc2l0aW5nVGhyZWFkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Js
YWNrYmVycnkvTGF5ZXJDb21wb3NpdGluZ1RocmVhZC5jcHAKaW5kZXggYmQyMjlhOGRhODhmZmE3
MzI5ZjFjYmFkMzg3ZjE1MDM4MDAxOTMyMC4uZWZiNzEzZjY0MjhjNjI4NjM5YjAzOGJlOWFhMzI3
ZWFjYzk5MDExMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YmxhY2tiZXJyeS9MYXllckNvbXBvc2l0aW5nVGhyZWFkLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L0xheWVyQ29tcG9zaXRpbmdUaHJlYWQuY3Bw
CkBAIC0xMzMsMzUgKzEzMywyMSBAQCB2b2lkIExheWVyQ29tcG9zaXRpbmdUaHJlYWQ6OnNldERy
YXdUcmFuc2Zvcm0oZG91YmxlIHNjYWxlLCBjb25zdCBUcmFuc2Zvcm1hdGlvbgogewogICAgIG1f
ZHJhd1RyYW5zZm9ybSA9IG1hdHJpeDsKIAotICAgIGZsb2F0IGJ4ID0gbV9ib3VuZHMud2lkdGgo
KSAvIDIuMDsKLSAgICBmbG9hdCBieSA9IG1fYm91bmRzLmhlaWdodCgpIC8gMi4wOworICAgIEZs
b2F0UmVjdCBib3VuZHNSZWN0KC1vcmlnaW4oKSwgYm91bmRzKCkpOwogCi0gICAgaWYgKHNpemVJ
c1NjYWxlSW52YXJpYW50KCkpIHsKLSAgICAgICAgYnggLz0gc2NhbGU7Ci0gICAgICAgIGJ5IC89
IHNjYWxlOwotICAgIH0KLQotICAgIG1fdHJhbnNmb3JtZWRCb3VuZHMuc2V0UDEobWF0cml4Lm1h
cFBvaW50KEZsb2F0UG9pbnQoLWJ4LCAtYnkpKSk7Ci0gICAgbV90cmFuc2Zvcm1lZEJvdW5kcy5z
ZXRQMihtYXRyaXgubWFwUG9pbnQoRmxvYXRQb2ludCgtYngsIGJ5KSkpOwotICAgIG1fdHJhbnNm
b3JtZWRCb3VuZHMuc2V0UDMobWF0cml4Lm1hcFBvaW50KEZsb2F0UG9pbnQoYngsIGJ5KSkpOwot
ICAgIG1fdHJhbnNmb3JtZWRCb3VuZHMuc2V0UDQobWF0cml4Lm1hcFBvaW50KEZsb2F0UG9pbnQo
YngsIC1ieSkpKTsKKyAgICBpZiAoc2l6ZUlzU2NhbGVJbnZhcmlhbnQoKSkKKyAgICAgICAgYm91
bmRzUmVjdC5zY2FsZSgxLjAgLyBzY2FsZSk7CiAKKyAgICBtX3RyYW5zZm9ybWVkQm91bmRzID0g
bWF0cml4Lm1hcFF1YWQoYm91bmRzUmVjdCk7CiAgICAgbV9kcmF3UmVjdCA9IG1fdHJhbnNmb3Jt
ZWRCb3VuZHMuYm91bmRpbmdCb3goKTsKIH0KIAogc3RhdGljIEZsb2F0UXVhZCBnZXRUcmFuc2Zv
cm1lZFJlY3QoY29uc3QgSW50U2l6ZSYgYm91bmRzLCBjb25zdCBJbnRSZWN0JiByZWN0LCBjb25z
dCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgZHJhd1RyYW5zZm9ybSkKIHsKLSAgICBmbG9hdCB4ID0g
LWJvdW5kcy53aWR0aCgpIC8gMi4wICsgcmVjdC54KCk7Ci0gICAgZmxvYXQgeSA9IC1ib3VuZHMu
aGVpZ2h0KCkgLyAyLjAgKyByZWN0LnkoKTsKLSAgICBmbG9hdCB3ID0gcmVjdC53aWR0aCgpOwot
ICAgIGZsb2F0IGggPSByZWN0LmhlaWdodCgpOwotICAgIEZsb2F0UXVhZCByZXN1bHQ7Ci0gICAg
cmVzdWx0LnNldFAxKGRyYXdUcmFuc2Zvcm0ubWFwUG9pbnQoRmxvYXRQb2ludCh4LCB5KSkpOwot
ICAgIHJlc3VsdC5zZXRQMihkcmF3VHJhbnNmb3JtLm1hcFBvaW50KEZsb2F0UG9pbnQoeCwgeSAr
IGgpKSk7Ci0gICAgcmVzdWx0LnNldFAzKGRyYXdUcmFuc2Zvcm0ubWFwUG9pbnQoRmxvYXRQb2lu
dCh4ICsgdywgeSArIGgpKSk7Ci0gICAgcmVzdWx0LnNldFA0KGRyYXdUcmFuc2Zvcm0ubWFwUG9p
bnQoRmxvYXRQb2ludCh4ICsgdywgeSkpKTsKLQotICAgIHJldHVybiByZXN1bHQ7CisgICAgRmxv
YXRQb2ludCBvcmlnaW4oYm91bmRzLndpZHRoKCkgLyAyLjBmLCBib3VuZHMuaGVpZ2h0KCkgLyAy
LjBmKTsKKyAgICBGbG9hdFJlY3QgbGF5ZXJSZWN0KHJlY3QpOworICAgIGxheWVyUmVjdC5tb3Zl
QnkoLW9yaWdpbik7CisgICAgcmV0dXJuIGRyYXdUcmFuc2Zvcm0ubWFwUXVhZChsYXllclJlY3Qp
OwogfQogCiAKQEAgLTIxMyw3ICsxOTksNyBAQCBGbG9hdFF1YWQgTGF5ZXJDb21wb3NpdGluZ1Ro
cmVhZDo6Z2V0VHJhbnNmb3JtZWRIb2xlUHVuY2hSZWN0KCkgY29uc3QKIAogdm9pZCBMYXllckNv
bXBvc2l0aW5nVGhyZWFkOjpkcmF3VGV4dHVyZXMoZG91YmxlIHNjYWxlLCBjb25zdCBHTEVTMlBy
b2dyYW0mIHByb2dyYW0sIGNvbnN0IEZsb2F0UmVjdCYgdmlzaWJsZVJlY3QpCiB7Ci0gICAgc3Rh
dGljIGZsb2F0IHRleGNvb3Jkc1s0ICogMl0gPSB7IDAsIDAsICAwLCAxLCAgMSwgMSwgIDEsIDAg
fTsKKyAgICBzdGF0aWMgZmxvYXQgdGV4Y29vcmRzWzQgKiAyXSA9IHsgMCwgMCwgIDEsIDAsICAx
LCAxLCAgMCwgMSB9OwogCiAgICAgaWYgKG1fcGx1Z2luVmlldykgewogICAgICAgICBpZiAobV9p
c1Zpc2libGUpIHsKQEAgLTMwMyw3ICsyODksNyBAQCB2b2lkIExheWVyQ29tcG9zaXRpbmdUaHJl
YWQ6OmRyYXdTdXJmYWNlKGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBkcmF3VHJhbnNmbwog
ICAgICAgICBnbFVuaWZvcm0xZihwcm9ncmFtLm9wYWNpdHlMb2NhdGlvbigpLCBsYXllclJlbmRl
cmVyU3VyZmFjZSgpLT5kcmF3T3BhY2l0eSgpKTsKICAgICAgICAgZ2xWZXJ0ZXhBdHRyaWJQb2lu
dGVyKHByb2dyYW0ucG9zaXRpb25Mb2NhdGlvbigpLCAyLCBHTF9GTE9BVCwgR0xfRkFMU0UsIDAs
ICZzdXJmYWNlUXVhZCk7CiAKLSAgICAgICAgc3RhdGljIGZsb2F0IHRleGNvb3Jkc1s0ICogMl0g
PSB7IDAsIDAsICAwLCAxLCAgMSwgMSwgIDEsIDAgfTsKKyAgICAgICAgc3RhdGljIGZsb2F0IHRl
eGNvb3Jkc1s0ICogMl0gPSB7IDAsIDAsICAxLCAwLCAgMSwgMSwgIDAsIDEgfTsKICAgICAgICAg
Z2xWZXJ0ZXhBdHRyaWJQb2ludGVyKHByb2dyYW0udGV4Q29vcmRMb2NhdGlvbigpLCAyLCBHTF9G
TE9BVCwgR0xfRkFMU0UsIDAsIHRleGNvb3Jkcyk7CiAgICAgICAgIGdsRHJhd0FycmF5cyhHTF9U
UklBTkdMRV9GQU4sIDAsIDQpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvTGF5ZXJDb21wb3NpdGluZ1RocmVhZC5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9MYXllckNvbXBvc2l0aW5n
VGhyZWFkLmgKaW5kZXggMGIyMDJjYWU0NWNlYTdiNjJlMzZlZTQ2NGIwNGI3ZWI1MTAwNmU1NS4u
YzhjMGVkYzcyMzI1YjhjOGEyZTlmYzU0NjA3MWMzNzEwMTM3OThiMiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9MYXllckNvbXBvc2l0aW5n
VGhyZWFkLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJy
eS9MYXllckNvbXBvc2l0aW5nVGhyZWFkLmgKQEAgLTE2MSw2ICsxNjEsOSBAQCBwdWJsaWM6CiAg
ICAgTGF5ZXJSZW5kZXJlciogbGF5ZXJSZW5kZXJlcigpIGNvbnN0IHsgcmV0dXJuIG1fbGF5ZXJS
ZW5kZXJlcjsgfQogICAgIHZvaWQgc2V0TGF5ZXJSZW5kZXJlcihMYXllclJlbmRlcmVyKik7CiAK
KyAgICAvLyBUaGUgZHJhdyB0cmFuc2Zvcm0gZXhwZWN0cyB0aGUgb3JpZ2luIHRvIGJlIGxvY2F0
ZWQgYXQgdGhlIGNlbnRlciBvZiB0aGUgbGF5ZXIuCisgICAgRmxvYXRQb2ludCBvcmlnaW4oKSBj
b25zdCB7IHJldHVybiBGbG9hdFBvaW50KG1fYm91bmRzLndpZHRoKCkgLyAyLjBmLCBtX2JvdW5k
cy5oZWlnaHQoKSAvIDIuMGYpOyB9CisKICAgICB2b2lkIHNldERyYXdUcmFuc2Zvcm0oZG91Ymxl
IHNjYWxlLCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYpOwogICAgIGNvbnN0IFRyYW5zZm9y
bWF0aW9uTWF0cml4JiBkcmF3VHJhbnNmb3JtKCkgY29uc3QgeyByZXR1cm4gbV9kcmF3VHJhbnNm
b3JtOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Js
YWNrYmVycnkvTGF5ZXJGaWx0ZXJSZW5kZXJlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9ibGFja2JlcnJ5L0xheWVyRmlsdGVyUmVuZGVyZXIuY3BwCmluZGV4IDZjZTdh
ZWJkZGY1Y2RlOWMyY2RmY2QwZTcxZjA3OTc0MzE3NTkzOGEuLmZhNGNhOWU1ZGVhNTFmYWZmYzFh
Nzc0YzVlODcyN2UxZTVlMmExZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2JsYWNrYmVycnkvTGF5ZXJGaWx0ZXJSZW5kZXJlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9MYXllckZpbHRlclJlbmRlcmVy
LmNwcApAQCAtNjgyLDcgKzY4Miw3IEBAIFZlY3RvcjxSZWZQdHI8TGF5ZXJGaWx0ZXJSZW5kZXJl
ckFjdGlvbj4gPiBMYXllckZpbHRlclJlbmRlcmVyOjphY3Rpb25zRm9yT3BlcmF0CiAgICAgcmV0
dXJuIHJldDsKIH0KIAotc3RhdGljIGZsb2F0IHRleGNvb3Jkc1s0ICogMl0gPSB7IDAsIDAsICAw
LCAxLCAgMSwgMSwgIDEsIDAgfTsKK3N0YXRpYyBmbG9hdCB0ZXhjb29yZHNbNCAqIDJdID0geyAw
LCAwLCAgMSwgMCwgIDEsIDEsICAwLCAxIH07CiAKIHZvaWQgTGF5ZXJGaWx0ZXJSZW5kZXJlcjo6
YXBwbHlBY3Rpb25zKHVuc2lnbmVkJiBmYm8sIExheWVyQ29tcG9zaXRpbmdUaHJlYWQqIGxheWVy
LCBWZWN0b3I8UmVmUHRyPExheWVyRmlsdGVyUmVuZGVyZXJBY3Rpb24+ID4gYWN0aW9ucykKIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkv
TGF5ZXJSZW5kZXJlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFj
a2JlcnJ5L0xheWVyUmVuZGVyZXIuY3BwCmluZGV4IGQ3ZmIwYzEzOWYxMjU2NTZhMjBiNmRkNTkw
NTk5M2M1ZmI3YTgyODYuLmU5YjRlM2JhYTFmMGYzMmVjMWY1ODg5YjQ1MGJmZDM2N2M3Njc3MzQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkv
TGF5ZXJSZW5kZXJlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YmxhY2tiZXJyeS9MYXllclJlbmRlcmVyLmNwcApAQCAtMzMyLDcgKzMzMiw4IEBAIHZvaWQgTGF5
ZXJSZW5kZXJlcjo6Y29tcG9zaXRlTGF5ZXJzKGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBt
YXRyaXgsIExheWVyQ29tCiAgICAgICAgIHJldHVybjsKIAogICAgIC8vIElmIHNvbWUgbGF5ZXJz
IHNob3VsZCBiZSBkcmF3ZWQgb24gdGVtcG9yYXJ5IHN1cmZhY2VzLCB3ZSBzaG91bGQgZG8gaXQg
Zmlyc3QuCi0gICAgZHJhd0xheWVyc09uU3VyZmFjZXMoc3VyZmFjZUxheWVycyk7CisgICAgaWYg
KCFzdXJmYWNlTGF5ZXJzLmlzRW1wdHkoKSkKKyAgICAgICAgZHJhd0xheWVyc09uU3VyZmFjZXMo
c3VyZmFjZUxheWVycyk7CiAKICAgICAvLyBEb24ndCByZW5kZXIgdGhlIHJvb3QgbGF5ZXIsIHRo
ZSBCbGFja0JlcnJ5IHBvcnQgdXNlcyB0aGUgQmFja2luZ1N0b3JlIHRvIGRyYXcgdGhlCiAgICAg
Ly8gcm9vdCBsYXllci4KQEAgLTM3Miw3ICszNzMsNyBAQCB2b2lkIExheWVyUmVuZGVyZXI6OmNv
bXBvc2l0ZUxheWVycyhjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgbWF0cml4LCBMYXllckNv
bQogICAgIHRleHR1cmVDYWNoZUNvbXBvc2l0aW5nVGhyZWFkKCktPmNvbGxlY3RHYXJiYWdlKCk7
CiB9CiAKLXN0YXRpYyBmbG9hdCB0ZXhjb29yZHNbNCAqIDJdID0geyAwLCAwLCAgMCwgMSwgIDEs
IDEsICAxLCAwIH07CitzdGF0aWMgZmxvYXQgdGV4Y29vcmRzWzQgKiAyXSA9IHsgMCwgMCwgIDEs
IDAsICAxLCAxLCAgMCwgMSB9OwogCiB2b2lkIExheWVyUmVuZGVyZXI6OmNvbXBvc2l0ZUJ1ZmZl
cihjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgdHJhbnNmb3JtLCBjb25zdCBGbG9hdFJlY3Qm
IGNvbnRlbnRzLCBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6R3JhcGhpY3M6OkJ1ZmZlciogYnVmZmVy
LCBib29sIGNvbnRlbnRzT3BhcXVlLCBmbG9hdCBvcGFjaXR5KQogewpAQCAtNDY1LDYgKzQ2Niwx
MSBAQCBib29sIExheWVyUmVuZGVyZXI6OnVzZVN1cmZhY2UoTGF5ZXJSZW5kZXJlclN1cmZhY2Uq
IHN1cmZhY2UpCiAKIHZvaWQgTGF5ZXJSZW5kZXJlcjo6ZHJhd0xheWVyc09uU3VyZmFjZXMoY29u
c3QgVmVjdG9yPFJlZlB0cjxMYXllckNvbXBvc2l0aW5nVGhyZWFkPiA+JiBzdXJmYWNlTGF5ZXJz
KQogeworICAgIC8vIE5vcm1hbGx5LCBhbiB1cHNpZGUtZG93biB0cmFuc2Zvcm0gaXMgdXNlZCwg
YXMgaXMgdGhlIEdMIGN1c3RvbS4gSG93ZXZlciwgd2hlbiBkcmF3aW5nCisgICAgLy8gbGF5ZXJz
IHRvIHN1cmZhY2VzLCBhIHJpZ2h0LXNpZGUtdXAgdHJhbnNmb3JtIGlzIHVzZWQsIHNvIHdlIG5l
ZWQgdG8gc3dpdGNoIHRoZSB3aW5kaW5nIG9yZGVyCisgICAgLy8gZm9yIGN1bGxpbmcuCisgICAg
Z2xGcm9udEZhY2UoR0xfQ0NXKTsKKwogICAgIGZvciAoaW50IGkgPSBzdXJmYWNlTGF5ZXJzLnNp
emUoKSAtIDE7IGkgPj0gMDsgaS0tKSB7CiAgICAgICAgIExheWVyQ29tcG9zaXRpbmdUaHJlYWQq
IGxheWVyID0gc3VyZmFjZUxheWVyc1tpXS5nZXQoKTsKICAgICAgICAgTGF5ZXJSZW5kZXJlclN1
cmZhY2UqIHN1cmZhY2UgPSBsYXllci0+bGF5ZXJSZW5kZXJlclN1cmZhY2UoKTsKQEAgLTQ5MSwx
MyArNDk3LDEzIEBAIHZvaWQgTGF5ZXJSZW5kZXJlcjo6ZHJhd0xheWVyc09uU3VyZmFjZXMoY29u
c3QgVmVjdG9yPFJlZlB0cjxMYXllckNvbXBvc2l0aW5nVGhyCiAjZW5kaWYKICAgICB9CiAKKyAg
ICBnbEZyb250RmFjZShHTF9DVyk7CisKICAgICAvLyBJZiB0aGVyZSBhcmUgbGF5ZXJzIGRyYXdl
ZCBvbiBzdXJmYWNlcywgd2UgbmVlZCB0byBzd2l0Y2ggdG8gZGVmYXVsdCBmcmFtZWJ1ZmZlci4K
ICAgICAvLyBPdGhlcndpc2UsIHdlIGp1c3QgbmVlZCB0byBzZXQgdmlld3BvcnQuCi0gICAgaWYg
KHN1cmZhY2VMYXllcnMuc2l6ZSgpKSB7Ci0gICAgICAgIHVzZVN1cmZhY2UoMCk7Ci0gICAgICAg
IGdsRW5hYmxlKEdMX1NDSVNTT1JfVEVTVCk7Ci0gICAgICAgIGdsU2Npc3NvcihtX3NjaXNzb3JS
ZWN0LngoKSwgbV9zY2lzc29yUmVjdC55KCksIG1fc2Npc3NvclJlY3Qud2lkdGgoKSwgbV9zY2lz
c29yUmVjdC5oZWlnaHQoKSk7Ci0gICAgfQorICAgIHVzZVN1cmZhY2UoMCk7CisgICAgZ2xFbmFi
bGUoR0xfU0NJU1NPUl9URVNUKTsKKyAgICBnbFNjaXNzb3IobV9zY2lzc29yUmVjdC54KCksIG1f
c2Npc3NvclJlY3QueSgpLCBtX3NjaXNzb3JSZWN0LndpZHRoKCksIG1fc2Npc3NvclJlY3QuaGVp
Z2h0KCkpOwogfQogCiB2b2lkIExheWVyUmVuZGVyZXI6OmFkZExheWVyKExheWVyQ29tcG9zaXRp
bmdUaHJlYWQqIGxheWVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYmxhY2tiZXJyeS9MYXllclJlbmRlcmVyU3VyZmFjZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L0xheWVyUmVuZGVyZXJTdXJmYWNlLmNwcApp
bmRleCAzZmYwNzhhZDc1YmE4MGFiYjBmOWM1YTA1NDNhYzQ5NGFmMzVlMDQ2Li41YWY2OGRhY2Yy
ZGEwMDI0Yzc0NzM1NTYyOTE2YTU2MDhmMmZlN2FjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L0xheWVyUmVuZGVyZXJTdXJmYWNlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L0xheWVyUmVu
ZGVyZXJTdXJmYWNlLmNwcApAQCAtNDcsMzUgKzQ3LDE3IEBAIHZvaWQgTGF5ZXJSZW5kZXJlclN1
cmZhY2U6OnNldENvbnRlbnRSZWN0KGNvbnN0IEludFJlY3QmIGNvbnRlbnRSZWN0KQogCiBGbG9h
dFJlY3QgTGF5ZXJSZW5kZXJlclN1cmZhY2U6OmRyYXdSZWN0KCkgY29uc3QKIHsKLSAgICBmbG9h
dCBieCA9IG1fc2l6ZS53aWR0aCgpIC8gMi4wOwotICAgIGZsb2F0IGJ5ID0gbV9zaXplLmhlaWdo
dCgpIC8gMi4wOwotCiAgICAgRmxvYXRSZWN0IHJlY3QgPSB0cmFuc2Zvcm1lZEJvdW5kcygpLmJv
dW5kaW5nQm94KCk7CiAKLSAgICBpZiAobV9vd25lckxheWVyLT5yZXBsaWNhTGF5ZXIoKSkgewot
ICAgICAgICBGbG9hdFF1YWQgYm91bmRzOwotICAgICAgICBib3VuZHMuc2V0UDEobV9yZXBsaWNh
RHJhd1RyYW5zZm9ybS5tYXBQb2ludChGbG9hdFBvaW50KC1ieCwgLWJ5KSkpOwotICAgICAgICBi
b3VuZHMuc2V0UDIobV9yZXBsaWNhRHJhd1RyYW5zZm9ybS5tYXBQb2ludChGbG9hdFBvaW50KC1i
eCwgYnkpKSk7Ci0gICAgICAgIGJvdW5kcy5zZXRQMyhtX3JlcGxpY2FEcmF3VHJhbnNmb3JtLm1h
cFBvaW50KEZsb2F0UG9pbnQoYngsIGJ5KSkpOwotICAgICAgICBib3VuZHMuc2V0UDQobV9yZXBs
aWNhRHJhd1RyYW5zZm9ybS5tYXBQb2ludChGbG9hdFBvaW50KGJ4LCAtYnkpKSk7Ci0gICAgICAg
IHJlY3QudW5pdGUoYm91bmRzLmJvdW5kaW5nQm94KCkpOwotICAgIH0KKyAgICBpZiAobV9vd25l
ckxheWVyLT5yZXBsaWNhTGF5ZXIoKSkKKyAgICAgICAgcmVjdC51bml0ZShtX3JlcGxpY2FEcmF3
VHJhbnNmb3JtLm1hcFF1YWQoRmxvYXRSZWN0KC1vcmlnaW4oKSwgc2l6ZSgpKSkuYm91bmRpbmdC
b3goKSk7CiAKICAgICByZXR1cm4gcmVjdDsKIH0KIAogRmxvYXRRdWFkIExheWVyUmVuZGVyZXJT
dXJmYWNlOjp0cmFuc2Zvcm1lZEJvdW5kcygpIGNvbnN0CiB7Ci0gICAgZmxvYXQgYnggPSBtX3Np
emUud2lkdGgoKSAvIDIuMDsKLSAgICBmbG9hdCBieSA9IG1fc2l6ZS5oZWlnaHQoKSAvIDIuMDsK
LQotICAgIEZsb2F0UXVhZCBib3VuZHM7Ci0gICAgYm91bmRzLnNldFAxKG1fZHJhd1RyYW5zZm9y
bS5tYXBQb2ludChGbG9hdFBvaW50KC1ieCwgLWJ5KSkpOwotICAgIGJvdW5kcy5zZXRQMihtX2Ry
YXdUcmFuc2Zvcm0ubWFwUG9pbnQoRmxvYXRQb2ludCgtYngsIGJ5KSkpOwotICAgIGJvdW5kcy5z
ZXRQMyhtX2RyYXdUcmFuc2Zvcm0ubWFwUG9pbnQoRmxvYXRQb2ludChieCwgYnkpKSk7Ci0gICAg
Ym91bmRzLnNldFA0KG1fZHJhd1RyYW5zZm9ybS5tYXBQb2ludChGbG9hdFBvaW50KGJ4LCAtYnkp
KSk7Ci0KLSAgICByZXR1cm4gYm91bmRzOworICAgIHJldHVybiBtX2RyYXdUcmFuc2Zvcm0ubWFw
UXVhZChGbG9hdFJlY3QoLW9yaWdpbigpLCBzaXplKCkpKTsKIH0KIAogYm9vbCBMYXllclJlbmRl
cmVyU3VyZmFjZTo6ZW5zdXJlVGV4dHVyZSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L0xheWVyUmVuZGVyZXJTdXJmYWNlLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L0xheWVyUmVuZGVyZXJTdXJm
YWNlLmgKaW5kZXggZTg5Njk1NTFhODc0MjhkZDJiOTU4NzhmNGE5ZTU0MzBlM2Y2ZTAyOS4uNTdm
Zjg2ODNiYjBiZTY3Y2M0YTcwMjhhMWM3MWE2YTFkYWE5YjRmOSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9MYXllclJlbmRlcmVyU3VyZmFj
ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvTGF5
ZXJSZW5kZXJlclN1cmZhY2UuaApAQCAtNDUsNiArNDUsOCBAQCBwdWJsaWM6CiAgICAgRmxvYXRS
ZWN0IGNsaXBSZWN0KCkgY29uc3QgeyByZXR1cm4gbV9jbGlwUmVjdDsgfQogICAgIHZvaWQgc2V0
Q2xpcFJlY3QoY29uc3QgRmxvYXRSZWN0JiByZWN0KSB7IG1fY2xpcFJlY3QgPSByZWN0OyB9CiAK
KyAgICBGbG9hdFBvaW50IG9yaWdpbigpIGNvbnN0IHsgcmV0dXJuIEZsb2F0UG9pbnQobV9zaXpl
LndpZHRoKCkgLyAyLjBmLCBtX3NpemUuaGVpZ2h0KCkgLyAyLjBmKTsgfQorCiAgICAgdm9pZCBz
ZXREcmF3VHJhbnNmb3JtKGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBtYXRyaXgpIHsgbV9k
cmF3VHJhbnNmb3JtID0gbWF0cml4OyB9CiAgICAgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgm
IGRyYXdUcmFuc2Zvcm0oKSBjb25zdCB7IHJldHVybiBtX2RyYXdUcmFuc2Zvcm07IH0KICAgICB2
b2lkIHNldFJlcGxpY2FEcmF3VHJhbnNmb3JtKGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBt
YXRyaXgpIHsgbV9yZXBsaWNhRHJhd1RyYW5zZm9ybSA9IG1hdHJpeDsgfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9NZWRpYVBsYXllclBy
aXZhdGVCbGFja0JlcnJ5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Js
YWNrYmVycnkvTWVkaWFQbGF5ZXJQcml2YXRlQmxhY2tCZXJyeS5jcHAKaW5kZXggOGVjZDg5MjAy
YWRmZmJmY2NkMDhkMDIzNDhmNjQyN2NkYzI1MjMyNS4uNGU2ZGJiNTA2NmVkYjkxZGZiNjM1MDRm
MTdlM2NmOGIxY2JhMDA1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYmxhY2tiZXJyeS9NZWRpYVBsYXllclByaXZhdGVCbGFja0JlcnJ5LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L01lZGlhUGxheWVyUHJp
dmF0ZUJsYWNrQmVycnkuY3BwCkBAIC04ODgsOCArODg4LDcgQEAgYm9vbCBNZWRpYVBsYXllclBy
aXZhdGU6OnN1cHBvcnRzQWNjZWxlcmF0ZWRSZW5kZXJpbmcoKSBjb25zdAogI2lmIFVTRShBQ0NF
TEVSQVRFRF9DT01QT1NJVElORykKIHN0YXRpYyBjb25zdCBkb3VibGUgQnVmZmVyaW5nQW5pbWF0
aW9uRGVsYXkgPSAxLjAgLyAyNDsKIHN0YXRpYyB1bnNpZ25lZCogc19idWZmZXJpbmdJbWFnZURh
dGEgPSAwOwotc3RhdGljIGludCBzX2J1ZmZlcmluZ0ltYWdlV2lkdGggPSAwOwotc3RhdGljIGlu
dCBzX2J1ZmZlcmluZ0ltYWdlSGVpZ2h0ID0gMDsKK3N0YXRpYyBJbnRTaXplIHNfYnVmZmVyaW5n
SW1hZ2VTaXplOwogCiBQbGF0Zm9ybU1lZGlhIE1lZGlhUGxheWVyUHJpdmF0ZTo6cGxhdGZvcm1N
ZWRpYSgpIGNvbnN0CiB7CkBAIC05MTcsMTIgKzkxNiwxMSBAQCBzdGF0aWMgdm9pZCBsb2FkQnVm
ZmVyaW5nSW1hZ2VEYXRhKCkKICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAgICBsb2FkZWQg
PSB0cnVlOwotICAgICAgICBzX2J1ZmZlcmluZ0ltYWdlV2lkdGggPSBidWZmZXJpbmdJY29uLT53
aWR0aCgpOwotICAgICAgICBzX2J1ZmZlcmluZ0ltYWdlSGVpZ2h0ID0gYnVmZmVyaW5nSWNvbi0+
aGVpZ2h0KCk7CisgICAgICAgIHNfYnVmZmVyaW5nSW1hZ2VTaXplID0gYnVmZmVyaW5nSWNvbi0+
c2l6ZSgpOwogICAgICAgICBpbnQgYnVmU2l6ZSA9IGJ1ZmZlcmluZ0ljb24tPmRlY29kZWRTaXpl
KCk7CiAgICAgICAgIHNfYnVmZmVyaW5nSW1hZ2VEYXRhID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQq
PihtYWxsb2MoYnVmU2l6ZSkpOwogCi0gICAgICAgIG5hdGl2ZUltYWdlLT5yZWFkUGl4ZWxzKHNf
YnVmZmVyaW5nSW1hZ2VEYXRhLCBzX2J1ZmZlcmluZ0ltYWdlV2lkdGggKiBzX2J1ZmZlcmluZ0lt
YWdlSGVpZ2h0KTsKKyAgICAgICAgbmF0aXZlSW1hZ2UtPnJlYWRQaXhlbHMoc19idWZmZXJpbmdJ
bWFnZURhdGEsIHNfYnVmZmVyaW5nSW1hZ2VTaXplLndpZHRoKCkgKiBzX2J1ZmZlcmluZ0ltYWdl
U2l6ZS5oZWlnaHQoKSk7CiAKICAgICAgICAgYnVmZmVyaW5nSWNvbi0+ZGVyZWYoKTsKICAgICB9
CkBAIC05ODQsMjQgKzk4MiwxOSBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZTo6ZHJhd0J1ZmZl
cmluZ0FuaW1hdGlvbihjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgbWF0cgogICAgICAgICBn
bEJpbmRUZXh0dXJlKEdMX1RFWFRVUkVfMkQsIHRleElkKTsKICAgICAgICAgaWYgKCFpbml0aWFs
aXplZCkgewogICAgICAgICAgICAgaW5pdGlhbGl6ZWQgPSB0cnVlOwotICAgICAgICAgICAgZ2xU
ZXhJbWFnZTJEKEdMX1RFWFRVUkVfMkQsIDAsIEdMX1JHQkEsIHNfYnVmZmVyaW5nSW1hZ2VXaWR0
aCwgc19idWZmZXJpbmdJbWFnZUhlaWdodCwKKyAgICAgICAgICAgIGdsVGV4SW1hZ2UyRChHTF9U
RVhUVVJFXzJELCAwLCBHTF9SR0JBLCBzX2J1ZmZlcmluZ0ltYWdlU2l6ZS53aWR0aCgpLCBzX2J1
ZmZlcmluZ0ltYWdlU2l6ZS5oZWlnaHQoKSwKICAgICAgICAgICAgICAgICAwLCBHTF9SR0JBLCBH
TF9VTlNJR05FRF9CWVRFLCBzX2J1ZmZlcmluZ0ltYWdlRGF0YSk7CiAgICAgICAgICAgICBmcmVl
KHNfYnVmZmVyaW5nSW1hZ2VEYXRhKTsKICAgICAgICAgfQogCi0gICAgICAgIGZsb2F0IHRleGNv
b3Jkc1tdID0geyAwLCAwLCAgMCwgMSwgIDEsIDEsICAxLCAwIH07Ci0gICAgICAgIEZsb2F0UG9p
bnQgdmVydGljZXNbNF07Ci0gICAgICAgIGZsb2F0IGJ4ID0gc19idWZmZXJpbmdJbWFnZVdpZHRo
IC8gMi4wOwotICAgICAgICBmbG9hdCBieSA9IHNfYnVmZmVyaW5nSW1hZ2VIZWlnaHQgLyAyLjA7
Ci0gICAgICAgIHZlcnRpY2VzWzBdID0gcmVuZGVyTWF0cml4Lm1hcFBvaW50KEZsb2F0UG9pbnQo
LWJ4LCAtYnkpKTsKLSAgICAgICAgdmVydGljZXNbMV0gPSByZW5kZXJNYXRyaXgubWFwUG9pbnQo
RmxvYXRQb2ludCgtYngsIGJ5KSk7Ci0gICAgICAgIHZlcnRpY2VzWzJdID0gcmVuZGVyTWF0cml4
Lm1hcFBvaW50KEZsb2F0UG9pbnQoYngsIGJ5KSk7Ci0gICAgICAgIHZlcnRpY2VzWzNdID0gcmVu
ZGVyTWF0cml4Lm1hcFBvaW50KEZsb2F0UG9pbnQoYngsIC1ieSkpOworICAgICAgICBmbG9hdCB0
ZXhjb29yZHNbXSA9IHsgMCwgMCwgIDEsIDAsICAxLCAxLCAgMCwgMSB9OworICAgICAgICBGbG9h
dFJlY3QgYnVmZmVyaW5nSW1hZ2VSZWN0KEZsb2F0UG9pbnQoLXNfYnVmZmVyaW5nSW1hZ2VTaXpl
LndpZHRoKCkgLyAyLjAsIC1zX2J1ZmZlcmluZ0ltYWdlU2l6ZS5oZWlnaHQoKSAvIDIuMCksIHNf
YnVmZmVyaW5nSW1hZ2VTaXplKTsKKyAgICAgICAgRmxvYXRRdWFkIHRyYW5zZm9ybWVkUXVhZCA9
IHJlbmRlck1hdHJpeC5tYXBRdWFkKGJ1ZmZlcmluZ0ltYWdlUmVjdCk7CiAKICAgICAgICAgZ2xF
bmFibGUoR0xfQkxFTkQpOwogICAgICAgICBnbEJsZW5kRnVuYyhHTF9PTkUsIEdMX09ORV9NSU5V
U19TUkNfQUxQSEEpOwogICAgICAgICBnbFVuaWZvcm0xZihwcm9ncmFtLm9wYWNpdHlMb2NhdGlv
bigpLCAxLjApOwotICAgICAgICBnbFZlcnRleEF0dHJpYlBvaW50ZXIocHJvZ3JhbS5wb3NpdGlv
bkxvY2F0aW9uKCksIDIsIEdMX0ZMT0FULCBHTF9GQUxTRSwgMCwgdmVydGljZXMpOworICAgICAg
ICBnbFZlcnRleEF0dHJpYlBvaW50ZXIocHJvZ3JhbS5wb3NpdGlvbkxvY2F0aW9uKCksIDIsIEdM
X0ZMT0FULCBHTF9GQUxTRSwgMCwgJnRyYW5zZm9ybWVkUXVhZCk7CiAgICAgICAgIGdsVmVydGV4
QXR0cmliUG9pbnRlcihwcm9ncmFtLnRleENvb3JkTG9jYXRpb24oKSwgMiwgR0xfRkxPQVQsIEdM
X0ZBTFNFLCAwLCB0ZXhjb29yZHMpOwogICAgICAgICBnbERyYXdBcnJheXMoR0xfVFJJQU5HTEVf
RkFOLCAwLCA0KTsKICAgICB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>202801</attachid>
            <date>2013-05-24 04:19:26 -0700</date>
            <delta_ts>2013-05-28 02:36:45 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-116616-20130524131807.patch</filename>
            <type>text/plain</type>
            <size>17654</size>
            <attacher name="Arvid Nilsson">anilsson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ3MzkyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODFlMWM0NDc3YTcwNjU2
MGIxZDc3ZDYwMGVjZmVmMjg5YmRhZTVlZC4uNTFjMDMyNzMzZmYxNmI2YzBmNjdlYTVlMzQwMWRj
ZmFhNTZlZjNiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYxIEBACisyMDEzLTA1LTI0ICBBcnZp
ZCBOaWxzc29uICA8YW5pbHNzb25AcmltLmNvbT4KKworICAgICAgICBbQmxhY2tCZXJyeV0gYmFj
a2ZhY2UtdmlzaWJpbGl0eTogaGlkZGVuIGRvZXNuJ3Qgd29yayBwcm9wZXJseSB3aXRoIG1hc2tz
IGFuZCBmaWx0ZXJzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xMTY2MTYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBUaGUgQmxhY2tCZXJyeTo6UGxhdGZvcm06OkdyYXBoaWNzOjpHcmFwaGljc0NvbnRleHQg
Z2VuZXJhdGVzIGdlb21ldHJ5CisgICAgICAgIHdpdGggYSBkaWZmZXJlbnQgd2luZGluZyBvcmRl
ciB0aGFuIHRoZSBhY2NlbGVyYXRlZCBjb21wb3NpdGluZyBiYWNrZW5kCisgICAgICAgIG9mIHRo
ZSBCbGFja0JlcnJ5IHBvcnQuIFNvLCB3aGVuIHdlIHN3aXRjaGVkIGZyb20gU2tpYSB0byB0aGlz
IG5ldworICAgICAgICByZW5kZXJpbmcgZW5naW5lLCB3ZSBzd2l0Y2hlZCBmcm9tIGdsRnJvbnRG
YWNlKEdMX0NDVykgdG8KKyAgICAgICAgZ2xGcm9udEZhY2UoR0xfQ1cpLCBhbmQgYWxsIHdhcyB3
ZWxsIHdoZW4gZHJhd2luZyBkaXNwbGF5IGxpc3RzLgorICAgICAgICBIb3dldmVyLCB3ZSBmb3Jn
b3QgdG8gdXBkYXRlIHRoZSB3aW5kaW5nIG9yZGVyIG9mIGdlb21ldHJ5IGdlbmVyYXRlZAorICAg
ICAgICB3aXRoaW4gdGhlIGFjY2VsZXJhdGVkIGNvbXBvc2l0aW5nIGJhY2tlbmQsIHdoaWNoIGlz
IHVzZWQgZm9yIG1hc2tzIGFuZAorICAgICAgICBmaWx0ZXJzLCBzbyB0aGV5IHdlcmUgZ2V0dGlu
ZyBlcnJvbmVvdXNseSBjdWxsZWQgb3V0IHdoZW4KKyAgICAgICAgYmFja2ZhY2UtdmlzaWJpbGl0
eTogaGlkZGVuIHdhcyBhcHBsaWVkIHRvIHRoZW0uIEZpeGVkIGJ5IHN3aXRjaGluZyB0aGUKKyAg
ICAgICAgd2luZGluZyBvcmRlciBvZiBhbGwgZ2VvbWV0cnkgZ2VuZXJhdGVkIHVwIGhlcmUsIHdo
aWNoIGhhcyB0aGUgYWRkZWQKKyAgICAgICAgYmVuZWZpdCBvZiBlbmFibGluZyB1cyB0byB1c2Ug
VHJhbnNmb3JtYXRpb25NYXRyaXg6Om1hcFF1YWQgaW5zdGVhZCBvZgorICAgICAgICB0cmFuc2Zv
cm1pbmcgcG9pbnQtYnktcG9pbnQuCisKKyAgICAgICAgVG8gZnVydGhlciBjb21wbGljYXRlIG1h
dHRlcnMsIGEgcmlnaHQtc2lkZSB1cCB0cmFuc2Zvcm0gaXMgdXNlZCB3aGVuCisgICAgICAgIGRy
YXdpbmcgbGF5ZXJzIGludG8gc3VyZmFjZXMsIHJldmVyc2luZyB0aGUgd2luZGluZyBvcmRlciBh
bmQgcmVxdWlyaW5nCisgICAgICAgIHVzIHRvIHN3aXRjaCBiYWNrIHRvIGdsRnJvbnRGYWNlKEdM
X0NDVykgdGVtcG9yYXJpbHksIHdoZW4gZHJhd2luZworICAgICAgICBsYXllcnMgdG8gc3VyZmFj
ZXMsIG9yIHRoZSBsYXllcnMgd2lsbCBnZXQgY3VsbGVkIG91dCBpbnNpZGUgdGhlCisgICAgICAg
IHN1cmZhY2UuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCB0aGlzIGlzIG9ubHkgZGV0ZWN0YWJs
ZSBieSBwaXhlbCB0ZXN0cywgd2hpY2ggdGhlCisgICAgICAgIEJsYWNrQmVycnkgcG9ydCBjdXJy
ZW50bHkgZG9lc24ndCBzdXBwb3J0LgorCisgICAgICAgIFBSIDM0MTk0NS4KKworICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvRUdMSW1hZ2VMYXllckNvbXBvc2l0aW5nVGhy
ZWFkQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVHTEltYWdlTGF5ZXJDb21wb3NpdGlu
Z1RocmVhZENsaWVudDo6ZHJhd1RleHR1cmVzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9ibGFja2JlcnJ5L0xheWVyQ29tcG9zaXRpbmdUaHJlYWQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6TGF5ZXJDb21wb3NpdGluZ1RocmVhZDo6c2V0RHJhd1RyYW5zZm9ybSk6CisgICAgICAgIChX
ZWJDb3JlOjpnZXRUcmFuc2Zvcm1lZFJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJDb21w
b3NpdGluZ1RocmVhZDo6ZHJhd1RleHR1cmVzKToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyQ29t
cG9zaXRpbmdUaHJlYWQ6OmRyYXdTdXJmYWNlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9ibGFja2JlcnJ5L0xheWVyQ29tcG9zaXRpbmdUaHJlYWQuaDoKKyAgICAgICAgKExheWVyQ29t
cG9zaXRpbmdUaHJlYWQpOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJDb21wb3NpdGluZ1RocmVh
ZDo6b3JpZ2luKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L0xheWVy
RmlsdGVyUmVuZGVyZXIuY3BwOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9MYXllclJlbmRlcmVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkxheWVyUmVuZGVyZXI6OmNvbXBvc2l0ZUxheWVycyk6CisgICAgICAgIChXZWJDb3JlKToK
KyAgICAgICAgKFdlYkNvcmU6OkxheWVyUmVuZGVyZXI6OmRyYXdMYXllcnNPblN1cmZhY2VzKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L0xheWVyUmVuZGVyZXJTdXJm
YWNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyUmVuZGVyZXJTdXJmYWNlOjpkcmF3UmVj
dCk6CisgICAgICAgIChXZWJDb3JlOjpMYXllclJlbmRlcmVyU3VyZmFjZTo6dHJhbnNmb3JtZWRC
b3VuZHMpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvTGF5ZXJSZW5k
ZXJlclN1cmZhY2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyUmVuZGVyZXJTdXJmYWNlOjpv
cmlnaW4pOgorICAgICAgICAoTGF5ZXJSZW5kZXJlclN1cmZhY2UpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvTWVkaWFQbGF5ZXJQcml2YXRlQmxhY2tCZXJyeS5jcHA6
CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OmxvYWRCdWZmZXJpbmdJbWFn
ZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlOjpkcmF3QnVmZmVy
aW5nQW5pbWF0aW9uKToKKwogMjAxMy0wNS0xNiAgR29yZG9uIFN1biAgPGdvc3VuQGJsYWNrYmVy
cnkuY29tPgogCiAgICAgICAgIENyYXNoIGluIEltYWdlIERlY29kZXIgZHVlIHRvIGxhcmdlIGdp
ZnMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFja2Jl
cnJ5L0VHTEltYWdlTGF5ZXJDb21wb3NpdGluZ1RocmVhZENsaWVudC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L0VHTEltYWdlTGF5ZXJDb21wb3NpdGlu
Z1RocmVhZENsaWVudC5jcHAKaW5kZXggM2U0OGMyOTM1ZWNhMmU4ZTM1NWQ0YWU3YWYzYTA1ZGM3
ZTI0OTY5MS4uMjgyN2U0M2UxYzBjNjlkMDU0MWFjOWY3MzRjMDBiMTViMDNlMGQwNCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9FR0xJbWFn
ZUxheWVyQ29tcG9zaXRpbmdUaHJlYWRDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvRUdMSW1hZ2VMYXllckNvbXBvc2l0aW5nVGhyZWFk
Q2xpZW50LmNwcApAQCAtNDcsNyArNDcsNyBAQCB2b2lkIEVHTEltYWdlTGF5ZXJDb21wb3NpdGlu
Z1RocmVhZENsaWVudDo6dXBsb2FkVGV4dHVyZXNJZk5lZWRlZChMYXllckNvbXBvc2l0aQogCiB2
b2lkIEVHTEltYWdlTGF5ZXJDb21wb3NpdGluZ1RocmVhZENsaWVudDo6ZHJhd1RleHR1cmVzKExh
eWVyQ29tcG9zaXRpbmdUaHJlYWQqIGxheWVyLCBkb3VibGUgLypzY2FsZSovLCBjb25zdCBHTEVT
MlByb2dyYW0mIHByb2dyYW0pCiB7Ci0gICAgc3RhdGljIGZsb2F0IHVwc2lkZURvd25bNCAqIDJd
ID0geyAwLCAxLCAgMCwgMCwgIDEsIDAsICAxLCAxIH07CisgICAgc3RhdGljIGZsb2F0IHVwc2lk
ZURvd25bNCAqIDJdID0geyAwLCAxLCAgMSwgMSwgIDEsIDAsICAwLCAwIH07CiAKICAgICBpZiAo
IW1fdGV4dHVyZUFjY2Vzc29yIHx8ICFtX3RleHR1cmVBY2Nlc3Nvci0+dGV4dHVyZUlEKCkpCiAg
ICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2JsYWNrYmVycnkvTGF5ZXJDb21wb3NpdGluZ1RocmVhZC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L0xheWVyQ29tcG9zaXRpbmdUaHJlYWQuY3Bw
CmluZGV4IGJkMjI5YThkYTg4ZmZhNzMyOWYxY2JhZDM4N2YxNTAzODAwMTkzMjAuLmVmYjcxM2Y2
NDI4YzYyODYzOWIwMzhiZTlhYTMyN2VhY2M5OTAxMTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvTGF5ZXJDb21wb3NpdGluZ1RocmVhZC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9MYXll
ckNvbXBvc2l0aW5nVGhyZWFkLmNwcApAQCAtMTMzLDM1ICsxMzMsMjEgQEAgdm9pZCBMYXllckNv
bXBvc2l0aW5nVGhyZWFkOjpzZXREcmF3VHJhbnNmb3JtKGRvdWJsZSBzY2FsZSwgY29uc3QgVHJh
bnNmb3JtYXRpb24KIHsKICAgICBtX2RyYXdUcmFuc2Zvcm0gPSBtYXRyaXg7CiAKLSAgICBmbG9h
dCBieCA9IG1fYm91bmRzLndpZHRoKCkgLyAyLjA7Ci0gICAgZmxvYXQgYnkgPSBtX2JvdW5kcy5o
ZWlnaHQoKSAvIDIuMDsKKyAgICBGbG9hdFJlY3QgYm91bmRzUmVjdCgtb3JpZ2luKCksIGJvdW5k
cygpKTsKIAotICAgIGlmIChzaXplSXNTY2FsZUludmFyaWFudCgpKSB7Ci0gICAgICAgIGJ4IC89
IHNjYWxlOwotICAgICAgICBieSAvPSBzY2FsZTsKLSAgICB9Ci0KLSAgICBtX3RyYW5zZm9ybWVk
Qm91bmRzLnNldFAxKG1hdHJpeC5tYXBQb2ludChGbG9hdFBvaW50KC1ieCwgLWJ5KSkpOwotICAg
IG1fdHJhbnNmb3JtZWRCb3VuZHMuc2V0UDIobWF0cml4Lm1hcFBvaW50KEZsb2F0UG9pbnQoLWJ4
LCBieSkpKTsKLSAgICBtX3RyYW5zZm9ybWVkQm91bmRzLnNldFAzKG1hdHJpeC5tYXBQb2ludChG
bG9hdFBvaW50KGJ4LCBieSkpKTsKLSAgICBtX3RyYW5zZm9ybWVkQm91bmRzLnNldFA0KG1hdHJp
eC5tYXBQb2ludChGbG9hdFBvaW50KGJ4LCAtYnkpKSk7CisgICAgaWYgKHNpemVJc1NjYWxlSW52
YXJpYW50KCkpCisgICAgICAgIGJvdW5kc1JlY3Quc2NhbGUoMS4wIC8gc2NhbGUpOwogCisgICAg
bV90cmFuc2Zvcm1lZEJvdW5kcyA9IG1hdHJpeC5tYXBRdWFkKGJvdW5kc1JlY3QpOwogICAgIG1f
ZHJhd1JlY3QgPSBtX3RyYW5zZm9ybWVkQm91bmRzLmJvdW5kaW5nQm94KCk7CiB9CiAKIHN0YXRp
YyBGbG9hdFF1YWQgZ2V0VHJhbnNmb3JtZWRSZWN0KGNvbnN0IEludFNpemUmIGJvdW5kcywgY29u
c3QgSW50UmVjdCYgcmVjdCwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIGRyYXdUcmFuc2Zv
cm0pCiB7Ci0gICAgZmxvYXQgeCA9IC1ib3VuZHMud2lkdGgoKSAvIDIuMCArIHJlY3QueCgpOwot
ICAgIGZsb2F0IHkgPSAtYm91bmRzLmhlaWdodCgpIC8gMi4wICsgcmVjdC55KCk7Ci0gICAgZmxv
YXQgdyA9IHJlY3Qud2lkdGgoKTsKLSAgICBmbG9hdCBoID0gcmVjdC5oZWlnaHQoKTsKLSAgICBG
bG9hdFF1YWQgcmVzdWx0OwotICAgIHJlc3VsdC5zZXRQMShkcmF3VHJhbnNmb3JtLm1hcFBvaW50
KEZsb2F0UG9pbnQoeCwgeSkpKTsKLSAgICByZXN1bHQuc2V0UDIoZHJhd1RyYW5zZm9ybS5tYXBQ
b2ludChGbG9hdFBvaW50KHgsIHkgKyBoKSkpOwotICAgIHJlc3VsdC5zZXRQMyhkcmF3VHJhbnNm
b3JtLm1hcFBvaW50KEZsb2F0UG9pbnQoeCArIHcsIHkgKyBoKSkpOwotICAgIHJlc3VsdC5zZXRQ
NChkcmF3VHJhbnNmb3JtLm1hcFBvaW50KEZsb2F0UG9pbnQoeCArIHcsIHkpKSk7Ci0KLSAgICBy
ZXR1cm4gcmVzdWx0OworICAgIEZsb2F0UG9pbnQgb3JpZ2luKGJvdW5kcy53aWR0aCgpIC8gMi4w
ZiwgYm91bmRzLmhlaWdodCgpIC8gMi4wZik7CisgICAgRmxvYXRSZWN0IGxheWVyUmVjdChyZWN0
KTsKKyAgICBsYXllclJlY3QubW92ZUJ5KC1vcmlnaW4pOworICAgIHJldHVybiBkcmF3VHJhbnNm
b3JtLm1hcFF1YWQobGF5ZXJSZWN0KTsKIH0KIAogCkBAIC0yMTMsNyArMTk5LDcgQEAgRmxvYXRR
dWFkIExheWVyQ29tcG9zaXRpbmdUaHJlYWQ6OmdldFRyYW5zZm9ybWVkSG9sZVB1bmNoUmVjdCgp
IGNvbnN0CiAKIHZvaWQgTGF5ZXJDb21wb3NpdGluZ1RocmVhZDo6ZHJhd1RleHR1cmVzKGRvdWJs
ZSBzY2FsZSwgY29uc3QgR0xFUzJQcm9ncmFtJiBwcm9ncmFtLCBjb25zdCBGbG9hdFJlY3QmIHZp
c2libGVSZWN0KQogewotICAgIHN0YXRpYyBmbG9hdCB0ZXhjb29yZHNbNCAqIDJdID0geyAwLCAw
LCAgMCwgMSwgIDEsIDEsICAxLCAwIH07CisgICAgc3RhdGljIGZsb2F0IHRleGNvb3Jkc1s0ICog
Ml0gPSB7IDAsIDAsICAxLCAwLCAgMSwgMSwgIDAsIDEgfTsKIAogICAgIGlmIChtX3BsdWdpblZp
ZXcpIHsKICAgICAgICAgaWYgKG1faXNWaXNpYmxlKSB7CkBAIC0zMDMsNyArMjg5LDcgQEAgdm9p
ZCBMYXllckNvbXBvc2l0aW5nVGhyZWFkOjpkcmF3U3VyZmFjZShjb25zdCBUcmFuc2Zvcm1hdGlv
bk1hdHJpeCYgZHJhd1RyYW5zZm8KICAgICAgICAgZ2xVbmlmb3JtMWYocHJvZ3JhbS5vcGFjaXR5
TG9jYXRpb24oKSwgbGF5ZXJSZW5kZXJlclN1cmZhY2UoKS0+ZHJhd09wYWNpdHkoKSk7CiAgICAg
ICAgIGdsVmVydGV4QXR0cmliUG9pbnRlcihwcm9ncmFtLnBvc2l0aW9uTG9jYXRpb24oKSwgMiwg
R0xfRkxPQVQsIEdMX0ZBTFNFLCAwLCAmc3VyZmFjZVF1YWQpOwogCi0gICAgICAgIHN0YXRpYyBm
bG9hdCB0ZXhjb29yZHNbNCAqIDJdID0geyAwLCAwLCAgMCwgMSwgIDEsIDEsICAxLCAwIH07Cisg
ICAgICAgIHN0YXRpYyBmbG9hdCB0ZXhjb29yZHNbNCAqIDJdID0geyAwLCAwLCAgMSwgMCwgIDEs
IDEsICAwLCAxIH07CiAgICAgICAgIGdsVmVydGV4QXR0cmliUG9pbnRlcihwcm9ncmFtLnRleENv
b3JkTG9jYXRpb24oKSwgMiwgR0xfRkxPQVQsIEdMX0ZBTFNFLCAwLCB0ZXhjb29yZHMpOwogICAg
ICAgICBnbERyYXdBcnJheXMoR0xfVFJJQU5HTEVfRkFOLCAwLCA0KTsKICAgICB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L0xheWVyQ29t
cG9zaXRpbmdUaHJlYWQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2JsYWNr
YmVycnkvTGF5ZXJDb21wb3NpdGluZ1RocmVhZC5oCmluZGV4IDBiMjAyY2FlNDVjZWE3YjYyZTM2
ZWU0NjRiMDRiN2ViNTEwMDZlNTUuLmM4YzBlZGM3MjMyNWI4YzhhMmU5ZmM1NDYwNzFjMzcxMDEz
Nzk4YjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2JsYWNr
YmVycnkvTGF5ZXJDb21wb3NpdGluZ1RocmVhZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvTGF5ZXJDb21wb3NpdGluZ1RocmVhZC5oCkBAIC0xNjEs
NiArMTYxLDkgQEAgcHVibGljOgogICAgIExheWVyUmVuZGVyZXIqIGxheWVyUmVuZGVyZXIoKSBj
b25zdCB7IHJldHVybiBtX2xheWVyUmVuZGVyZXI7IH0KICAgICB2b2lkIHNldExheWVyUmVuZGVy
ZXIoTGF5ZXJSZW5kZXJlciopOwogCisgICAgLy8gVGhlIGRyYXcgdHJhbnNmb3JtIGV4cGVjdHMg
dGhlIG9yaWdpbiB0byBiZSBsb2NhdGVkIGF0IHRoZSBjZW50ZXIgb2YgdGhlIGxheWVyLgorICAg
IEZsb2F0UG9pbnQgb3JpZ2luKCkgY29uc3QgeyByZXR1cm4gRmxvYXRQb2ludChtX2JvdW5kcy53
aWR0aCgpIC8gMi4wZiwgbV9ib3VuZHMuaGVpZ2h0KCkgLyAyLjBmKTsgfQorCiAgICAgdm9pZCBz
ZXREcmF3VHJhbnNmb3JtKGRvdWJsZSBzY2FsZSwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgm
KTsKICAgICBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgZHJhd1RyYW5zZm9ybSgpIGNvbnN0
IHsgcmV0dXJuIG1fZHJhd1RyYW5zZm9ybTsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L0xheWVyRmlsdGVyUmVuZGVyZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9MYXllckZpbHRlclJl
bmRlcmVyLmNwcAppbmRleCA2Y2U3YWViZGRmNWNkZTljMmNkZmNkMGU3MWYwNzk3NDMxNzU5Mzhh
Li5mYTRjYTllNWRlYTUxZmFmZmMxYTc3NGM1ZTg3MjdlMWU1ZTJhMWY2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L0xheWVyRmlsdGVyUmVu
ZGVyZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVy
cnkvTGF5ZXJGaWx0ZXJSZW5kZXJlci5jcHAKQEAgLTY4Miw3ICs2ODIsNyBAQCBWZWN0b3I8UmVm
UHRyPExheWVyRmlsdGVyUmVuZGVyZXJBY3Rpb24+ID4gTGF5ZXJGaWx0ZXJSZW5kZXJlcjo6YWN0
aW9uc0Zvck9wZXJhdAogICAgIHJldHVybiByZXQ7CiB9CiAKLXN0YXRpYyBmbG9hdCB0ZXhjb29y
ZHNbNCAqIDJdID0geyAwLCAwLCAgMCwgMSwgIDEsIDEsICAxLCAwIH07CitzdGF0aWMgZmxvYXQg
dGV4Y29vcmRzWzQgKiAyXSA9IHsgMCwgMCwgIDEsIDAsICAxLCAxLCAgMCwgMSB9OwogCiB2b2lk
IExheWVyRmlsdGVyUmVuZGVyZXI6OmFwcGx5QWN0aW9ucyh1bnNpZ25lZCYgZmJvLCBMYXllckNv
bXBvc2l0aW5nVGhyZWFkKiBsYXllciwgVmVjdG9yPFJlZlB0cjxMYXllckZpbHRlclJlbmRlcmVy
QWN0aW9uPiA+IGFjdGlvbnMpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9ibGFja2JlcnJ5L0xheWVyUmVuZGVyZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9MYXllclJlbmRlcmVyLmNwcAppbmRleCBkN2Zi
MGMxMzlmMTI1NjU2YTIwYjZkZDU5MDU5OTNjNWZiN2E4Mjg2Li5lOWI0ZTNiYWExZjBmMzJlYzFm
NTg4OWI0NTBiZmQzNjdjNzY3NzM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9ibGFja2JlcnJ5L0xheWVyUmVuZGVyZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvTGF5ZXJSZW5kZXJlci5jcHAKQEAgLTMz
Miw3ICszMzIsOCBAQCB2b2lkIExheWVyUmVuZGVyZXI6OmNvbXBvc2l0ZUxheWVycyhjb25zdCBU
cmFuc2Zvcm1hdGlvbk1hdHJpeCYgbWF0cml4LCBMYXllckNvbQogICAgICAgICByZXR1cm47CiAK
ICAgICAvLyBJZiBzb21lIGxheWVycyBzaG91bGQgYmUgZHJhd2VkIG9uIHRlbXBvcmFyeSBzdXJm
YWNlcywgd2Ugc2hvdWxkIGRvIGl0IGZpcnN0LgotICAgIGRyYXdMYXllcnNPblN1cmZhY2VzKHN1
cmZhY2VMYXllcnMpOworICAgIGlmICghc3VyZmFjZUxheWVycy5pc0VtcHR5KCkpCisgICAgICAg
IGRyYXdMYXllcnNPblN1cmZhY2VzKHN1cmZhY2VMYXllcnMpOwogCiAgICAgLy8gRG9uJ3QgcmVu
ZGVyIHRoZSByb290IGxheWVyLCB0aGUgQmxhY2tCZXJyeSBwb3J0IHVzZXMgdGhlIEJhY2tpbmdT
dG9yZSB0byBkcmF3IHRoZQogICAgIC8vIHJvb3QgbGF5ZXIuCkBAIC0zNzIsNyArMzczLDcgQEAg
dm9pZCBMYXllclJlbmRlcmVyOjpjb21wb3NpdGVMYXllcnMoY29uc3QgVHJhbnNmb3JtYXRpb25N
YXRyaXgmIG1hdHJpeCwgTGF5ZXJDb20KICAgICB0ZXh0dXJlQ2FjaGVDb21wb3NpdGluZ1RocmVh
ZCgpLT5jb2xsZWN0R2FyYmFnZSgpOwogfQogCi1zdGF0aWMgZmxvYXQgdGV4Y29vcmRzWzQgKiAy
XSA9IHsgMCwgMCwgIDAsIDEsICAxLCAxLCAgMSwgMCB9Oworc3RhdGljIGZsb2F0IHRleGNvb3Jk
c1s0ICogMl0gPSB7IDAsIDAsICAxLCAwLCAgMSwgMSwgIDAsIDEgfTsKIAogdm9pZCBMYXllclJl
bmRlcmVyOjpjb21wb3NpdGVCdWZmZXIoY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIHRyYW5z
Zm9ybSwgY29uc3QgRmxvYXRSZWN0JiBjb250ZW50cywgQmxhY2tCZXJyeTo6UGxhdGZvcm06Okdy
YXBoaWNzOjpCdWZmZXIqIGJ1ZmZlciwgYm9vbCBjb250ZW50c09wYXF1ZSwgZmxvYXQgb3BhY2l0
eSkKIHsKQEAgLTQ2NSw2ICs0NjYsMTEgQEAgYm9vbCBMYXllclJlbmRlcmVyOjp1c2VTdXJmYWNl
KExheWVyUmVuZGVyZXJTdXJmYWNlKiBzdXJmYWNlKQogCiB2b2lkIExheWVyUmVuZGVyZXI6OmRy
YXdMYXllcnNPblN1cmZhY2VzKGNvbnN0IFZlY3RvcjxSZWZQdHI8TGF5ZXJDb21wb3NpdGluZ1Ro
cmVhZD4gPiYgc3VyZmFjZUxheWVycykKIHsKKyAgICAvLyBOb3JtYWxseSwgYW4gdXBzaWRlLWRv
d24gdHJhbnNmb3JtIGlzIHVzZWQsIGFzIGlzIHRoZSBHTCBjdXN0b20uIEhvd2V2ZXIsIHdoZW4g
ZHJhd2luZworICAgIC8vIGxheWVycyB0byBzdXJmYWNlcywgYSByaWdodC1zaWRlLXVwIHRyYW5z
Zm9ybSBpcyB1c2VkLCBzbyB3ZSBuZWVkIHRvIHN3aXRjaCB0aGUgd2luZGluZyBvcmRlcgorICAg
IC8vIGZvciBjdWxsaW5nLgorICAgIGdsRnJvbnRGYWNlKEdMX0NDVyk7CisKICAgICBmb3IgKGlu
dCBpID0gc3VyZmFjZUxheWVycy5zaXplKCkgLSAxOyBpID49IDA7IGktLSkgewogICAgICAgICBM
YXllckNvbXBvc2l0aW5nVGhyZWFkKiBsYXllciA9IHN1cmZhY2VMYXllcnNbaV0uZ2V0KCk7CiAg
ICAgICAgIExheWVyUmVuZGVyZXJTdXJmYWNlKiBzdXJmYWNlID0gbGF5ZXItPmxheWVyUmVuZGVy
ZXJTdXJmYWNlKCk7CkBAIC00OTEsMTMgKzQ5NywxMyBAQCB2b2lkIExheWVyUmVuZGVyZXI6OmRy
YXdMYXllcnNPblN1cmZhY2VzKGNvbnN0IFZlY3RvcjxSZWZQdHI8TGF5ZXJDb21wb3NpdGluZ1Ro
cgogI2VuZGlmCiAgICAgfQogCisgICAgZ2xGcm9udEZhY2UoR0xfQ1cpOworCiAgICAgLy8gSWYg
dGhlcmUgYXJlIGxheWVycyBkcmF3ZWQgb24gc3VyZmFjZXMsIHdlIG5lZWQgdG8gc3dpdGNoIHRv
IGRlZmF1bHQgZnJhbWVidWZmZXIuCiAgICAgLy8gT3RoZXJ3aXNlLCB3ZSBqdXN0IG5lZWQgdG8g
c2V0IHZpZXdwb3J0LgotICAgIGlmIChzdXJmYWNlTGF5ZXJzLnNpemUoKSkgewotICAgICAgICB1
c2VTdXJmYWNlKDApOwotICAgICAgICBnbEVuYWJsZShHTF9TQ0lTU09SX1RFU1QpOwotICAgICAg
ICBnbFNjaXNzb3IobV9zY2lzc29yUmVjdC54KCksIG1fc2Npc3NvclJlY3QueSgpLCBtX3NjaXNz
b3JSZWN0LndpZHRoKCksIG1fc2Npc3NvclJlY3QuaGVpZ2h0KCkpOwotICAgIH0KKyAgICB1c2VT
dXJmYWNlKDApOworICAgIGdsRW5hYmxlKEdMX1NDSVNTT1JfVEVTVCk7CisgICAgZ2xTY2lzc29y
KG1fc2Npc3NvclJlY3QueCgpLCBtX3NjaXNzb3JSZWN0LnkoKSwgbV9zY2lzc29yUmVjdC53aWR0
aCgpLCBtX3NjaXNzb3JSZWN0LmhlaWdodCgpKTsKIH0KIAogdm9pZCBMYXllclJlbmRlcmVyOjph
ZGRMYXllcihMYXllckNvbXBvc2l0aW5nVGhyZWFkKiBsYXllcikKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvTGF5ZXJSZW5kZXJlclN1cmZh
Y2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9MYXll
clJlbmRlcmVyU3VyZmFjZS5jcHAKaW5kZXggM2ZmMDc4YWQ3NWJhODBhYmIwZjljNWEwNTQzYWM0
OTRhZjM1ZTA0Ni4uNWFmNjhkYWNmMmRhMDAyNGM3NDczNTU2MjkxNmE1NjA4ZjJmZTdhYyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9MYXll
clJlbmRlcmVyU3VyZmFjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYmxhY2tiZXJyeS9MYXllclJlbmRlcmVyU3VyZmFjZS5jcHAKQEAgLTQ3LDM1ICs0NywxNyBA
QCB2b2lkIExheWVyUmVuZGVyZXJTdXJmYWNlOjpzZXRDb250ZW50UmVjdChjb25zdCBJbnRSZWN0
JiBjb250ZW50UmVjdCkKIAogRmxvYXRSZWN0IExheWVyUmVuZGVyZXJTdXJmYWNlOjpkcmF3UmVj
dCgpIGNvbnN0CiB7Ci0gICAgZmxvYXQgYnggPSBtX3NpemUud2lkdGgoKSAvIDIuMDsKLSAgICBm
bG9hdCBieSA9IG1fc2l6ZS5oZWlnaHQoKSAvIDIuMDsKLQogICAgIEZsb2F0UmVjdCByZWN0ID0g
dHJhbnNmb3JtZWRCb3VuZHMoKS5ib3VuZGluZ0JveCgpOwogCi0gICAgaWYgKG1fb3duZXJMYXll
ci0+cmVwbGljYUxheWVyKCkpIHsKLSAgICAgICAgRmxvYXRRdWFkIGJvdW5kczsKLSAgICAgICAg
Ym91bmRzLnNldFAxKG1fcmVwbGljYURyYXdUcmFuc2Zvcm0ubWFwUG9pbnQoRmxvYXRQb2ludCgt
YngsIC1ieSkpKTsKLSAgICAgICAgYm91bmRzLnNldFAyKG1fcmVwbGljYURyYXdUcmFuc2Zvcm0u
bWFwUG9pbnQoRmxvYXRQb2ludCgtYngsIGJ5KSkpOwotICAgICAgICBib3VuZHMuc2V0UDMobV9y
ZXBsaWNhRHJhd1RyYW5zZm9ybS5tYXBQb2ludChGbG9hdFBvaW50KGJ4LCBieSkpKTsKLSAgICAg
ICAgYm91bmRzLnNldFA0KG1fcmVwbGljYURyYXdUcmFuc2Zvcm0ubWFwUG9pbnQoRmxvYXRQb2lu
dChieCwgLWJ5KSkpOwotICAgICAgICByZWN0LnVuaXRlKGJvdW5kcy5ib3VuZGluZ0JveCgpKTsK
LSAgICB9CisgICAgaWYgKG1fb3duZXJMYXllci0+cmVwbGljYUxheWVyKCkpCisgICAgICAgIHJl
Y3QudW5pdGUobV9yZXBsaWNhRHJhd1RyYW5zZm9ybS5tYXBRdWFkKEZsb2F0UmVjdCgtb3JpZ2lu
KCksIHNpemUoKSkpLmJvdW5kaW5nQm94KCkpOwogCiAgICAgcmV0dXJuIHJlY3Q7CiB9CiAKIEZs
b2F0UXVhZCBMYXllclJlbmRlcmVyU3VyZmFjZTo6dHJhbnNmb3JtZWRCb3VuZHMoKSBjb25zdAog
ewotICAgIGZsb2F0IGJ4ID0gbV9zaXplLndpZHRoKCkgLyAyLjA7Ci0gICAgZmxvYXQgYnkgPSBt
X3NpemUuaGVpZ2h0KCkgLyAyLjA7Ci0KLSAgICBGbG9hdFF1YWQgYm91bmRzOwotICAgIGJvdW5k
cy5zZXRQMShtX2RyYXdUcmFuc2Zvcm0ubWFwUG9pbnQoRmxvYXRQb2ludCgtYngsIC1ieSkpKTsK
LSAgICBib3VuZHMuc2V0UDIobV9kcmF3VHJhbnNmb3JtLm1hcFBvaW50KEZsb2F0UG9pbnQoLWJ4
LCBieSkpKTsKLSAgICBib3VuZHMuc2V0UDMobV9kcmF3VHJhbnNmb3JtLm1hcFBvaW50KEZsb2F0
UG9pbnQoYngsIGJ5KSkpOwotICAgIGJvdW5kcy5zZXRQNChtX2RyYXdUcmFuc2Zvcm0ubWFwUG9p
bnQoRmxvYXRQb2ludChieCwgLWJ5KSkpOwotCi0gICAgcmV0dXJuIGJvdW5kczsKKyAgICByZXR1
cm4gbV9kcmF3VHJhbnNmb3JtLm1hcFF1YWQoRmxvYXRSZWN0KC1vcmlnaW4oKSwgc2l6ZSgpKSk7
CiB9CiAKIGJvb2wgTGF5ZXJSZW5kZXJlclN1cmZhY2U6OmVuc3VyZVRleHR1cmUoKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9MYXllclJl
bmRlcmVyU3VyZmFjZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2ti
ZXJyeS9MYXllclJlbmRlcmVyU3VyZmFjZS5oCmluZGV4IGU4OTY5NTUxYTg3NDI4ZGQyYjk1ODc4
ZjRhOWU1NDMwZTNmNmUwMjkuLjU3ZmY4NjgzYmIwYmU2N2NjNGE3MDI4YTFjNzFhNmExZGFhOWI0
ZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVy
cnkvTGF5ZXJSZW5kZXJlclN1cmZhY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9ibGFja2JlcnJ5L0xheWVyUmVuZGVyZXJTdXJmYWNlLmgKQEAgLTQ1LDYgKzQ1LDgg
QEAgcHVibGljOgogICAgIEZsb2F0UmVjdCBjbGlwUmVjdCgpIGNvbnN0IHsgcmV0dXJuIG1fY2xp
cFJlY3Q7IH0KICAgICB2b2lkIHNldENsaXBSZWN0KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCkgeyBt
X2NsaXBSZWN0ID0gcmVjdDsgfQogCisgICAgRmxvYXRQb2ludCBvcmlnaW4oKSBjb25zdCB7IHJl
dHVybiBGbG9hdFBvaW50KG1fc2l6ZS53aWR0aCgpIC8gMi4wZiwgbV9zaXplLmhlaWdodCgpIC8g
Mi4wZik7IH0KKwogICAgIHZvaWQgc2V0RHJhd1RyYW5zZm9ybShjb25zdCBUcmFuc2Zvcm1hdGlv
bk1hdHJpeCYgbWF0cml4KSB7IG1fZHJhd1RyYW5zZm9ybSA9IG1hdHJpeDsgfQogICAgIGNvbnN0
IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBkcmF3VHJhbnNmb3JtKCkgY29uc3QgeyByZXR1cm4gbV9k
cmF3VHJhbnNmb3JtOyB9CiAgICAgdm9pZCBzZXRSZXBsaWNhRHJhd1RyYW5zZm9ybShjb25zdCBU
cmFuc2Zvcm1hdGlvbk1hdHJpeCYgbWF0cml4KSB7IG1fcmVwbGljYURyYXdUcmFuc2Zvcm0gPSBt
YXRyaXg7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Js
YWNrYmVycnkvTWVkaWFQbGF5ZXJQcml2YXRlQmxhY2tCZXJyeS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L01lZGlhUGxheWVyUHJpdmF0ZUJsYWNrQmVy
cnkuY3BwCmluZGV4IDhlY2Q4OTIwMmFkZmZiZmNjZDA4ZDAyMzQ4ZjY0MjdjZGMyNTIzMjUuLjRl
NmRiYjUwNjZlZGI5MWRmYjYzNTA0ZjE3ZTNjZjhiMWNiYTAwNWIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvTWVkaWFQbGF5ZXJQcml2YXRl
QmxhY2tCZXJyeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYmxh
Y2tiZXJyeS9NZWRpYVBsYXllclByaXZhdGVCbGFja0JlcnJ5LmNwcApAQCAtODg4LDggKzg4OCw3
IEBAIGJvb2wgTWVkaWFQbGF5ZXJQcml2YXRlOjpzdXBwb3J0c0FjY2VsZXJhdGVkUmVuZGVyaW5n
KCkgY29uc3QKICNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCiBzdGF0aWMgY29uc3Qg
ZG91YmxlIEJ1ZmZlcmluZ0FuaW1hdGlvbkRlbGF5ID0gMS4wIC8gMjQ7CiBzdGF0aWMgdW5zaWdu
ZWQqIHNfYnVmZmVyaW5nSW1hZ2VEYXRhID0gMDsKLXN0YXRpYyBpbnQgc19idWZmZXJpbmdJbWFn
ZVdpZHRoID0gMDsKLXN0YXRpYyBpbnQgc19idWZmZXJpbmdJbWFnZUhlaWdodCA9IDA7CitzdGF0
aWMgSW50U2l6ZSBzX2J1ZmZlcmluZ0ltYWdlU2l6ZTsKIAogUGxhdGZvcm1NZWRpYSBNZWRpYVBs
YXllclByaXZhdGU6OnBsYXRmb3JtTWVkaWEoKSBjb25zdAogewpAQCAtOTE3LDEyICs5MTYsMTEg
QEAgc3RhdGljIHZvaWQgbG9hZEJ1ZmZlcmluZ0ltYWdlRGF0YSgpCiAgICAgICAgICAgICByZXR1
cm47CiAKICAgICAgICAgbG9hZGVkID0gdHJ1ZTsKLSAgICAgICAgc19idWZmZXJpbmdJbWFnZVdp
ZHRoID0gYnVmZmVyaW5nSWNvbi0+d2lkdGgoKTsKLSAgICAgICAgc19idWZmZXJpbmdJbWFnZUhl
aWdodCA9IGJ1ZmZlcmluZ0ljb24tPmhlaWdodCgpOworICAgICAgICBzX2J1ZmZlcmluZ0ltYWdl
U2l6ZSA9IGJ1ZmZlcmluZ0ljb24tPnNpemUoKTsKICAgICAgICAgaW50IGJ1ZlNpemUgPSBidWZm
ZXJpbmdJY29uLT5kZWNvZGVkU2l6ZSgpOwogICAgICAgICBzX2J1ZmZlcmluZ0ltYWdlRGF0YSA9
IHN0YXRpY19jYXN0PHVuc2lnbmVkKj4obWFsbG9jKGJ1ZlNpemUpKTsKIAotICAgICAgICBuYXRp
dmVJbWFnZS0+cmVhZFBpeGVscyhzX2J1ZmZlcmluZ0ltYWdlRGF0YSwgc19idWZmZXJpbmdJbWFn
ZVdpZHRoICogc19idWZmZXJpbmdJbWFnZUhlaWdodCk7CisgICAgICAgIG5hdGl2ZUltYWdlLT5y
ZWFkUGl4ZWxzKHNfYnVmZmVyaW5nSW1hZ2VEYXRhLCBzX2J1ZmZlcmluZ0ltYWdlU2l6ZS53aWR0
aCgpICogc19idWZmZXJpbmdJbWFnZVNpemUuaGVpZ2h0KCkpOwogCiAgICAgICAgIGJ1ZmZlcmlu
Z0ljb24tPmRlcmVmKCk7CiAgICAgfQpAQCAtOTg0LDI0ICs5ODIsMTkgQEAgdm9pZCBNZWRpYVBs
YXllclByaXZhdGU6OmRyYXdCdWZmZXJpbmdBbmltYXRpb24oY29uc3QgVHJhbnNmb3JtYXRpb25N
YXRyaXgmIG1hdHIKICAgICAgICAgZ2xCaW5kVGV4dHVyZShHTF9URVhUVVJFXzJELCB0ZXhJZCk7
CiAgICAgICAgIGlmICghaW5pdGlhbGl6ZWQpIHsKICAgICAgICAgICAgIGluaXRpYWxpemVkID0g
dHJ1ZTsKLSAgICAgICAgICAgIGdsVGV4SW1hZ2UyRChHTF9URVhUVVJFXzJELCAwLCBHTF9SR0JB
LCBzX2J1ZmZlcmluZ0ltYWdlV2lkdGgsIHNfYnVmZmVyaW5nSW1hZ2VIZWlnaHQsCisgICAgICAg
ICAgICBnbFRleEltYWdlMkQoR0xfVEVYVFVSRV8yRCwgMCwgR0xfUkdCQSwgc19idWZmZXJpbmdJ
bWFnZVNpemUud2lkdGgoKSwgc19idWZmZXJpbmdJbWFnZVNpemUuaGVpZ2h0KCksCiAgICAgICAg
ICAgICAgICAgMCwgR0xfUkdCQSwgR0xfVU5TSUdORURfQllURSwgc19idWZmZXJpbmdJbWFnZURh
dGEpOwogICAgICAgICAgICAgZnJlZShzX2J1ZmZlcmluZ0ltYWdlRGF0YSk7CiAgICAgICAgIH0K
IAotICAgICAgICBmbG9hdCB0ZXhjb29yZHNbXSA9IHsgMCwgMCwgIDAsIDEsICAxLCAxLCAgMSwg
MCB9OwotICAgICAgICBGbG9hdFBvaW50IHZlcnRpY2VzWzRdOwotICAgICAgICBmbG9hdCBieCA9
IHNfYnVmZmVyaW5nSW1hZ2VXaWR0aCAvIDIuMDsKLSAgICAgICAgZmxvYXQgYnkgPSBzX2J1ZmZl
cmluZ0ltYWdlSGVpZ2h0IC8gMi4wOwotICAgICAgICB2ZXJ0aWNlc1swXSA9IHJlbmRlck1hdHJp
eC5tYXBQb2ludChGbG9hdFBvaW50KC1ieCwgLWJ5KSk7Ci0gICAgICAgIHZlcnRpY2VzWzFdID0g
cmVuZGVyTWF0cml4Lm1hcFBvaW50KEZsb2F0UG9pbnQoLWJ4LCBieSkpOwotICAgICAgICB2ZXJ0
aWNlc1syXSA9IHJlbmRlck1hdHJpeC5tYXBQb2ludChGbG9hdFBvaW50KGJ4LCBieSkpOwotICAg
ICAgICB2ZXJ0aWNlc1szXSA9IHJlbmRlck1hdHJpeC5tYXBQb2ludChGbG9hdFBvaW50KGJ4LCAt
YnkpKTsKKyAgICAgICAgZmxvYXQgdGV4Y29vcmRzW10gPSB7IDAsIDAsICAxLCAwLCAgMSwgMSwg
IDAsIDEgfTsKKyAgICAgICAgRmxvYXRSZWN0IGJ1ZmZlcmluZ0ltYWdlUmVjdChGbG9hdFBvaW50
KC1zX2J1ZmZlcmluZ0ltYWdlU2l6ZS53aWR0aCgpIC8gMi4wLCAtc19idWZmZXJpbmdJbWFnZVNp
emUuaGVpZ2h0KCkgLyAyLjApLCBzX2J1ZmZlcmluZ0ltYWdlU2l6ZSk7CisgICAgICAgIEZsb2F0
UXVhZCB0cmFuc2Zvcm1lZFF1YWQgPSByZW5kZXJNYXRyaXgubWFwUXVhZChidWZmZXJpbmdJbWFn
ZVJlY3QpOwogCiAgICAgICAgIGdsRW5hYmxlKEdMX0JMRU5EKTsKICAgICAgICAgZ2xCbGVuZEZ1
bmMoR0xfT05FLCBHTF9PTkVfTUlOVVNfU1JDX0FMUEhBKTsKICAgICAgICAgZ2xVbmlmb3JtMWYo
cHJvZ3JhbS5vcGFjaXR5TG9jYXRpb24oKSwgMS4wKTsKLSAgICAgICAgZ2xWZXJ0ZXhBdHRyaWJQ
b2ludGVyKHByb2dyYW0ucG9zaXRpb25Mb2NhdGlvbigpLCAyLCBHTF9GTE9BVCwgR0xfRkFMU0Us
IDAsIHZlcnRpY2VzKTsKKyAgICAgICAgZ2xWZXJ0ZXhBdHRyaWJQb2ludGVyKHByb2dyYW0ucG9z
aXRpb25Mb2NhdGlvbigpLCAyLCBHTF9GTE9BVCwgR0xfRkFMU0UsIDAsICZ0cmFuc2Zvcm1lZFF1
YWQpOwogICAgICAgICBnbFZlcnRleEF0dHJpYlBvaW50ZXIocHJvZ3JhbS50ZXhDb29yZExvY2F0
aW9uKCksIDIsIEdMX0ZMT0FULCBHTF9GQUxTRSwgMCwgdGV4Y29vcmRzKTsKICAgICAgICAgZ2xE
cmF3QXJyYXlzKEdMX1RSSUFOR0xFX0ZBTiwgMCwgNCk7CiAgICAgfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>203032</attachid>
            <date>2013-05-28 02:36:51 -0700</date>
            <delta_ts>2013-05-28 03:28:59 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-116616-20130528113525.patch</filename>
            <type>text/plain</type>
            <size>18445</size>
            <attacher name="Arvid Nilsson">anilsson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ3MzkyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODFlMWM0NDc3YTcwNjU2
MGIxZDc3ZDYwMGVjZmVmMjg5YmRhZTVlZC4uZjI0ZDg2YTNlMzhmYTcwMDFiNTBkZmMyNGRlYjM4
OGY2YTBjMzZkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYzIEBACisyMDEzLTA1LTI0ICBBcnZp
ZCBOaWxzc29uICA8YW5pbHNzb25AcmltLmNvbT4KKworICAgICAgICBbQmxhY2tCZXJyeV0gYmFj
a2ZhY2UtdmlzaWJpbGl0eTogaGlkZGVuIGRvZXNuJ3Qgd29yayBwcm9wZXJseSB3aXRoIG1hc2tz
IGFuZCBmaWx0ZXJzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xMTY2MTYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBUaGUgQmxhY2tCZXJyeTo6UGxhdGZvcm06OkdyYXBoaWNzOjpHcmFwaGljc0NvbnRleHQg
Z2VuZXJhdGVzIGdlb21ldHJ5CisgICAgICAgIHdpdGggYSBkaWZmZXJlbnQgd2luZGluZyBvcmRl
ciB0aGFuIHRoZSBhY2NlbGVyYXRlZCBjb21wb3NpdGluZyBiYWNrZW5kCisgICAgICAgIG9mIHRo
ZSBCbGFja0JlcnJ5IHBvcnQuIFNvLCB3aGVuIHdlIHN3aXRjaGVkIGZyb20gU2tpYSB0byB0aGlz
IG5ldworICAgICAgICByZW5kZXJpbmcgZW5naW5lLCB3ZSBzd2l0Y2hlZCBmcm9tIGdsRnJvbnRG
YWNlKEdMX0NDVykgdG8KKyAgICAgICAgZ2xGcm9udEZhY2UoR0xfQ1cpLCBhbmQgYWxsIHdhcyB3
ZWxsIHdoZW4gZHJhd2luZyBkaXNwbGF5IGxpc3RzLgorICAgICAgICBIb3dldmVyLCB3ZSBmb3Jn
b3QgdG8gdXBkYXRlIHRoZSB3aW5kaW5nIG9yZGVyIG9mIGdlb21ldHJ5IGdlbmVyYXRlZAorICAg
ICAgICB3aXRoaW4gdGhlIGFjY2VsZXJhdGVkIGNvbXBvc2l0aW5nIGJhY2tlbmQsIHdoaWNoIGlz
IHVzZWQgZm9yIG1hc2tzIGFuZAorICAgICAgICBmaWx0ZXJzLCBzbyB0aGV5IHdlcmUgZ2V0dGlu
ZyBlcnJvbmVvdXNseSBjdWxsZWQgb3V0IHdoZW4KKyAgICAgICAgYmFja2ZhY2UtdmlzaWJpbGl0
eTogaGlkZGVuIHdhcyBhcHBsaWVkIHRvIHRoZW0uIEZpeGVkIGJ5IHN3aXRjaGluZyB0aGUKKyAg
ICAgICAgd2luZGluZyBvcmRlciBvZiBhbGwgZ2VvbWV0cnkgZ2VuZXJhdGVkIHVwIGhlcmUsIHdo
aWNoIGhhcyB0aGUgYWRkZWQKKyAgICAgICAgYmVuZWZpdCBvZiBlbmFibGluZyB1cyB0byB1c2Ug
VHJhbnNmb3JtYXRpb25NYXRyaXg6Om1hcFF1YWQgaW5zdGVhZCBvZgorICAgICAgICB0cmFuc2Zv
cm1pbmcgcG9pbnQtYnktcG9pbnQuCisKKyAgICAgICAgVG8gZnVydGhlciBjb21wbGljYXRlIG1h
dHRlcnMsIGEgcmlnaHQtc2lkZSB1cCB0cmFuc2Zvcm0gaXMgdXNlZCB3aGVuCisgICAgICAgIGRy
YXdpbmcgbGF5ZXJzIGludG8gc3VyZmFjZXMsIHJldmVyc2luZyB0aGUgd2luZGluZyBvcmRlciBh
bmQgcmVxdWlyaW5nCisgICAgICAgIHVzIHRvIHN3aXRjaCBiYWNrIHRvIGdsRnJvbnRGYWNlKEdM
X0NDVykgdGVtcG9yYXJpbHksIHdoZW4gZHJhd2luZworICAgICAgICBsYXllcnMgdG8gc3VyZmFj
ZXMsIG9yIHRoZSBsYXllcnMgd2lsbCBnZXQgY3VsbGVkIG91dCBpbnNpZGUgdGhlCisgICAgICAg
IHN1cmZhY2UuCisKKyAgICAgICAgQWxzbyBmaXggc3BlbGxpbmcgZXJyb3IsICJkcmF3ZWQiIHNo
b3VsZCBiZSAiZHJhd24iLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cywgdGhpcyBpcyBvbmx5IGRl
dGVjdGFibGUgYnkgcGl4ZWwgdGVzdHMsIHdoaWNoIHRoZQorICAgICAgICBCbGFja0JlcnJ5IHBv
cnQgY3VycmVudGx5IGRvZXNuJ3Qgc3VwcG9ydC4KKworICAgICAgICBQUiAzNDE5NDUuCisKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L0VHTEltYWdlTGF5ZXJDb21wb3Np
dGluZ1RocmVhZENsaWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFR0xJbWFnZUxheWVyQ29t
cG9zaXRpbmdUaHJlYWRDbGllbnQ6OmRyYXdUZXh0dXJlcyk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvYmxhY2tiZXJyeS9MYXllckNvbXBvc2l0aW5nVGhyZWFkLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkxheWVyQ29tcG9zaXRpbmdUaHJlYWQ6OnNldERyYXdUcmFuc2Zvcm0pOgorICAg
ICAgICAoV2ViQ29yZTo6Z2V0VHJhbnNmb3JtZWRSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6Okxh
eWVyQ29tcG9zaXRpbmdUaHJlYWQ6OmRyYXdUZXh0dXJlcyk6CisgICAgICAgIChXZWJDb3JlOjpM
YXllckNvbXBvc2l0aW5nVGhyZWFkOjpkcmF3U3VyZmFjZSk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvYmxhY2tiZXJyeS9MYXllckNvbXBvc2l0aW5nVGhyZWFkLmg6CisgICAgICAgIChM
YXllckNvbXBvc2l0aW5nVGhyZWFkKToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyQ29tcG9zaXRp
bmdUaHJlYWQ6Om9yaWdpbik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJy
eS9MYXllckZpbHRlclJlbmRlcmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvTGF5ZXJSZW5kZXJlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpMYXllclJlbmRlcmVyOjpjb21wb3NpdGVMYXllcnMpOgorICAgICAgICAoV2Vi
Q29yZSk6CisgICAgICAgIChXZWJDb3JlOjpMYXllclJlbmRlcmVyOjpkcmF3TGF5ZXJzT25TdXJm
YWNlcyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9MYXllclJlbmRl
cmVyU3VyZmFjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMYXllclJlbmRlcmVyU3VyZmFjZTo6
ZHJhd1JlY3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJSZW5kZXJlclN1cmZhY2U6OnRyYW5z
Zm9ybWVkQm91bmRzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L0xh
eWVyUmVuZGVyZXJTdXJmYWNlLmg6CisgICAgICAgIChXZWJDb3JlOjpMYXllclJlbmRlcmVyU3Vy
ZmFjZTo6b3JpZ2luKToKKyAgICAgICAgKExheWVyUmVuZGVyZXJTdXJmYWNlKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L01lZGlhUGxheWVyUHJpdmF0ZUJsYWNrQmVy
cnkuY3BwOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpsb2FkQnVmZmVy
aW5nSW1hZ2VEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZTo6ZHJh
d0J1ZmZlcmluZ0FuaW1hdGlvbik6CisKIDIwMTMtMDUtMTYgIEdvcmRvbiBTdW4gIDxnb3N1bkBi
bGFja2JlcnJ5LmNvbT4KIAogICAgICAgICBDcmFzaCBpbiBJbWFnZSBEZWNvZGVyIGR1ZSB0byBs
YXJnZSBnaWZzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YmxhY2tiZXJyeS9FR0xJbWFnZUxheWVyQ29tcG9zaXRpbmdUaHJlYWRDbGllbnQuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9FR0xJbWFnZUxheWVyQ29t
cG9zaXRpbmdUaHJlYWRDbGllbnQuY3BwCmluZGV4IDNlNDhjMjkzNWVjYTJlOGUzNTVkNGFlN2Fm
M2EwNWRjN2UyNDk2OTEuLjI4MjdlNDNlMWMwYzY5ZDA1NDFhYzlmNzM0YzAwYjE1YjAzZTBkMDQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkv
RUdMSW1hZ2VMYXllckNvbXBvc2l0aW5nVGhyZWFkQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L0VHTEltYWdlTGF5ZXJDb21wb3NpdGlu
Z1RocmVhZENsaWVudC5jcHAKQEAgLTQ3LDcgKzQ3LDcgQEAgdm9pZCBFR0xJbWFnZUxheWVyQ29t
cG9zaXRpbmdUaHJlYWRDbGllbnQ6OnVwbG9hZFRleHR1cmVzSWZOZWVkZWQoTGF5ZXJDb21wb3Np
dGkKIAogdm9pZCBFR0xJbWFnZUxheWVyQ29tcG9zaXRpbmdUaHJlYWRDbGllbnQ6OmRyYXdUZXh0
dXJlcyhMYXllckNvbXBvc2l0aW5nVGhyZWFkKiBsYXllciwgZG91YmxlIC8qc2NhbGUqLywgY29u
c3QgR0xFUzJQcm9ncmFtJiBwcm9ncmFtKQogewotICAgIHN0YXRpYyBmbG9hdCB1cHNpZGVEb3du
WzQgKiAyXSA9IHsgMCwgMSwgIDAsIDAsICAxLCAwLCAgMSwgMSB9OworICAgIHN0YXRpYyBmbG9h
dCB1cHNpZGVEb3duWzQgKiAyXSA9IHsgMCwgMSwgIDEsIDEsICAxLCAwLCAgMCwgMCB9OwogCiAg
ICAgaWYgKCFtX3RleHR1cmVBY2Nlc3NvciB8fCAhbV90ZXh0dXJlQWNjZXNzb3ItPnRleHR1cmVJ
RCgpKQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9ibGFja2JlcnJ5L0xheWVyQ29tcG9zaXRpbmdUaHJlYWQuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9MYXllckNvbXBvc2l0aW5nVGhy
ZWFkLmNwcAppbmRleCBiZDIyOWE4ZGE4OGZmYTczMjlmMWNiYWQzODdmMTUwMzgwMDE5MzIwLi5l
ZmI3MTNmNjQyOGM2Mjg2MzliMDM4YmU5YWEzMjdlYWNjOTkwMTEyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L0xheWVyQ29tcG9zaXRpbmdU
aHJlYWQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVy
cnkvTGF5ZXJDb21wb3NpdGluZ1RocmVhZC5jcHAKQEAgLTEzMywzNSArMTMzLDIxIEBAIHZvaWQg
TGF5ZXJDb21wb3NpdGluZ1RocmVhZDo6c2V0RHJhd1RyYW5zZm9ybShkb3VibGUgc2NhbGUsIGNv
bnN0IFRyYW5zZm9ybWF0aW9uCiB7CiAgICAgbV9kcmF3VHJhbnNmb3JtID0gbWF0cml4OwogCi0g
ICAgZmxvYXQgYnggPSBtX2JvdW5kcy53aWR0aCgpIC8gMi4wOwotICAgIGZsb2F0IGJ5ID0gbV9i
b3VuZHMuaGVpZ2h0KCkgLyAyLjA7CisgICAgRmxvYXRSZWN0IGJvdW5kc1JlY3QoLW9yaWdpbigp
LCBib3VuZHMoKSk7CiAKLSAgICBpZiAoc2l6ZUlzU2NhbGVJbnZhcmlhbnQoKSkgewotICAgICAg
ICBieCAvPSBzY2FsZTsKLSAgICAgICAgYnkgLz0gc2NhbGU7Ci0gICAgfQotCi0gICAgbV90cmFu
c2Zvcm1lZEJvdW5kcy5zZXRQMShtYXRyaXgubWFwUG9pbnQoRmxvYXRQb2ludCgtYngsIC1ieSkp
KTsKLSAgICBtX3RyYW5zZm9ybWVkQm91bmRzLnNldFAyKG1hdHJpeC5tYXBQb2ludChGbG9hdFBv
aW50KC1ieCwgYnkpKSk7Ci0gICAgbV90cmFuc2Zvcm1lZEJvdW5kcy5zZXRQMyhtYXRyaXgubWFw
UG9pbnQoRmxvYXRQb2ludChieCwgYnkpKSk7Ci0gICAgbV90cmFuc2Zvcm1lZEJvdW5kcy5zZXRQ
NChtYXRyaXgubWFwUG9pbnQoRmxvYXRQb2ludChieCwgLWJ5KSkpOworICAgIGlmIChzaXplSXNT
Y2FsZUludmFyaWFudCgpKQorICAgICAgICBib3VuZHNSZWN0LnNjYWxlKDEuMCAvIHNjYWxlKTsK
IAorICAgIG1fdHJhbnNmb3JtZWRCb3VuZHMgPSBtYXRyaXgubWFwUXVhZChib3VuZHNSZWN0KTsK
ICAgICBtX2RyYXdSZWN0ID0gbV90cmFuc2Zvcm1lZEJvdW5kcy5ib3VuZGluZ0JveCgpOwogfQog
CiBzdGF0aWMgRmxvYXRRdWFkIGdldFRyYW5zZm9ybWVkUmVjdChjb25zdCBJbnRTaXplJiBib3Vu
ZHMsIGNvbnN0IEludFJlY3QmIHJlY3QsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBkcmF3
VHJhbnNmb3JtKQogewotICAgIGZsb2F0IHggPSAtYm91bmRzLndpZHRoKCkgLyAyLjAgKyByZWN0
LngoKTsKLSAgICBmbG9hdCB5ID0gLWJvdW5kcy5oZWlnaHQoKSAvIDIuMCArIHJlY3QueSgpOwot
ICAgIGZsb2F0IHcgPSByZWN0LndpZHRoKCk7Ci0gICAgZmxvYXQgaCA9IHJlY3QuaGVpZ2h0KCk7
Ci0gICAgRmxvYXRRdWFkIHJlc3VsdDsKLSAgICByZXN1bHQuc2V0UDEoZHJhd1RyYW5zZm9ybS5t
YXBQb2ludChGbG9hdFBvaW50KHgsIHkpKSk7Ci0gICAgcmVzdWx0LnNldFAyKGRyYXdUcmFuc2Zv
cm0ubWFwUG9pbnQoRmxvYXRQb2ludCh4LCB5ICsgaCkpKTsKLSAgICByZXN1bHQuc2V0UDMoZHJh
d1RyYW5zZm9ybS5tYXBQb2ludChGbG9hdFBvaW50KHggKyB3LCB5ICsgaCkpKTsKLSAgICByZXN1
bHQuc2V0UDQoZHJhd1RyYW5zZm9ybS5tYXBQb2ludChGbG9hdFBvaW50KHggKyB3LCB5KSkpOwot
Ci0gICAgcmV0dXJuIHJlc3VsdDsKKyAgICBGbG9hdFBvaW50IG9yaWdpbihib3VuZHMud2lkdGgo
KSAvIDIuMGYsIGJvdW5kcy5oZWlnaHQoKSAvIDIuMGYpOworICAgIEZsb2F0UmVjdCBsYXllclJl
Y3QocmVjdCk7CisgICAgbGF5ZXJSZWN0Lm1vdmVCeSgtb3JpZ2luKTsKKyAgICByZXR1cm4gZHJh
d1RyYW5zZm9ybS5tYXBRdWFkKGxheWVyUmVjdCk7CiB9CiAKIApAQCAtMjEzLDcgKzE5OSw3IEBA
IEZsb2F0UXVhZCBMYXllckNvbXBvc2l0aW5nVGhyZWFkOjpnZXRUcmFuc2Zvcm1lZEhvbGVQdW5j
aFJlY3QoKSBjb25zdAogCiB2b2lkIExheWVyQ29tcG9zaXRpbmdUaHJlYWQ6OmRyYXdUZXh0dXJl
cyhkb3VibGUgc2NhbGUsIGNvbnN0IEdMRVMyUHJvZ3JhbSYgcHJvZ3JhbSwgY29uc3QgRmxvYXRS
ZWN0JiB2aXNpYmxlUmVjdCkKIHsKLSAgICBzdGF0aWMgZmxvYXQgdGV4Y29vcmRzWzQgKiAyXSA9
IHsgMCwgMCwgIDAsIDEsICAxLCAxLCAgMSwgMCB9OworICAgIHN0YXRpYyBmbG9hdCB0ZXhjb29y
ZHNbNCAqIDJdID0geyAwLCAwLCAgMSwgMCwgIDEsIDEsICAwLCAxIH07CiAKICAgICBpZiAobV9w
bHVnaW5WaWV3KSB7CiAgICAgICAgIGlmIChtX2lzVmlzaWJsZSkgewpAQCAtMzAzLDcgKzI4OSw3
IEBAIHZvaWQgTGF5ZXJDb21wb3NpdGluZ1RocmVhZDo6ZHJhd1N1cmZhY2UoY29uc3QgVHJhbnNm
b3JtYXRpb25NYXRyaXgmIGRyYXdUcmFuc2ZvCiAgICAgICAgIGdsVW5pZm9ybTFmKHByb2dyYW0u
b3BhY2l0eUxvY2F0aW9uKCksIGxheWVyUmVuZGVyZXJTdXJmYWNlKCktPmRyYXdPcGFjaXR5KCkp
OwogICAgICAgICBnbFZlcnRleEF0dHJpYlBvaW50ZXIocHJvZ3JhbS5wb3NpdGlvbkxvY2F0aW9u
KCksIDIsIEdMX0ZMT0FULCBHTF9GQUxTRSwgMCwgJnN1cmZhY2VRdWFkKTsKIAotICAgICAgICBz
dGF0aWMgZmxvYXQgdGV4Y29vcmRzWzQgKiAyXSA9IHsgMCwgMCwgIDAsIDEsICAxLCAxLCAgMSwg
MCB9OworICAgICAgICBzdGF0aWMgZmxvYXQgdGV4Y29vcmRzWzQgKiAyXSA9IHsgMCwgMCwgIDEs
IDAsICAxLCAxLCAgMCwgMSB9OwogICAgICAgICBnbFZlcnRleEF0dHJpYlBvaW50ZXIocHJvZ3Jh
bS50ZXhDb29yZExvY2F0aW9uKCksIDIsIEdMX0ZMT0FULCBHTF9GQUxTRSwgMCwgdGV4Y29vcmRz
KTsKICAgICAgICAgZ2xEcmF3QXJyYXlzKEdMX1RSSUFOR0xFX0ZBTiwgMCwgNCk7CiAgICAgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9M
YXllckNvbXBvc2l0aW5nVGhyZWFkLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9ibGFja2JlcnJ5L0xheWVyQ29tcG9zaXRpbmdUaHJlYWQuaAppbmRleCAwYjIwMmNhZTQ1Y2Vh
N2I2MmUzNmVlNDY0YjA0YjdlYjUxMDA2ZTU1Li5jOGMwZWRjNzIzMjViOGM4YTJlOWZjNTQ2MDcx
YzM3MTAxMzc5OGIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9ibGFja2JlcnJ5L0xheWVyQ29tcG9zaXRpbmdUaHJlYWQuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L0xheWVyQ29tcG9zaXRpbmdUaHJlYWQuaApA
QCAtMTYxLDYgKzE2MSw5IEBAIHB1YmxpYzoKICAgICBMYXllclJlbmRlcmVyKiBsYXllclJlbmRl
cmVyKCkgY29uc3QgeyByZXR1cm4gbV9sYXllclJlbmRlcmVyOyB9CiAgICAgdm9pZCBzZXRMYXll
clJlbmRlcmVyKExheWVyUmVuZGVyZXIqKTsKIAorICAgIC8vIFRoZSBkcmF3IHRyYW5zZm9ybSBl
eHBlY3RzIHRoZSBvcmlnaW4gdG8gYmUgbG9jYXRlZCBhdCB0aGUgY2VudGVyIG9mIHRoZSBsYXll
ci4KKyAgICBGbG9hdFBvaW50IG9yaWdpbigpIGNvbnN0IHsgcmV0dXJuIEZsb2F0UG9pbnQobV9i
b3VuZHMud2lkdGgoKSAvIDIuMGYsIG1fYm91bmRzLmhlaWdodCgpIC8gMi4wZik7IH0KKwogICAg
IHZvaWQgc2V0RHJhd1RyYW5zZm9ybShkb3VibGUgc2NhbGUsIGNvbnN0IFRyYW5zZm9ybWF0aW9u
TWF0cml4Jik7CiAgICAgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIGRyYXdUcmFuc2Zvcm0o
KSBjb25zdCB7IHJldHVybiBtX2RyYXdUcmFuc2Zvcm07IH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9MYXllckZpbHRlclJlbmRlcmVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvTGF5ZXJG
aWx0ZXJSZW5kZXJlci5jcHAKaW5kZXggNmNlN2FlYmRkZjVjZGU5YzJjZGZjZDBlNzFmMDc5NzQz
MTc1OTM4YS4uZmE0Y2E5ZTVkZWE1MWZhZmZjMWE3NzRjNWU4NzI3ZTFlNWUyYTFmNiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9MYXllckZp
bHRlclJlbmRlcmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9i
bGFja2JlcnJ5L0xheWVyRmlsdGVyUmVuZGVyZXIuY3BwCkBAIC02ODIsNyArNjgyLDcgQEAgVmVj
dG9yPFJlZlB0cjxMYXllckZpbHRlclJlbmRlcmVyQWN0aW9uPiA+IExheWVyRmlsdGVyUmVuZGVy
ZXI6OmFjdGlvbnNGb3JPcGVyYXQKICAgICByZXR1cm4gcmV0OwogfQogCi1zdGF0aWMgZmxvYXQg
dGV4Y29vcmRzWzQgKiAyXSA9IHsgMCwgMCwgIDAsIDEsICAxLCAxLCAgMSwgMCB9Oworc3RhdGlj
IGZsb2F0IHRleGNvb3Jkc1s0ICogMl0gPSB7IDAsIDAsICAxLCAwLCAgMSwgMSwgIDAsIDEgfTsK
IAogdm9pZCBMYXllckZpbHRlclJlbmRlcmVyOjphcHBseUFjdGlvbnModW5zaWduZWQmIGZibywg
TGF5ZXJDb21wb3NpdGluZ1RocmVhZCogbGF5ZXIsIFZlY3RvcjxSZWZQdHI8TGF5ZXJGaWx0ZXJS
ZW5kZXJlckFjdGlvbj4gPiBhY3Rpb25zKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9MYXllclJlbmRlcmVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvTGF5ZXJSZW5kZXJlci5jcHAKaW5k
ZXggZDdmYjBjMTM5ZjEyNTY1NmEyMGI2ZGQ1OTA1OTkzYzVmYjdhODI4Ni4uZDBlNGExNTdhZTdl
ZTY3YjMwNzRkOTA4ZDU5Y2Q2ZWVmOGUxZjliNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9MYXllclJlbmRlcmVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L0xheWVyUmVuZGVyZXIuY3Bw
CkBAIC0zMzEsOCArMzMxLDkgQEAgdm9pZCBMYXllclJlbmRlcmVyOjpjb21wb3NpdGVMYXllcnMo
Y29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIG1hdHJpeCwgTGF5ZXJDb20KICAgICBpZiAoIW1h
a2VDb250ZXh0Q3VycmVudCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICAvLyBJZiBzb21lIGxh
eWVycyBzaG91bGQgYmUgZHJhd2VkIG9uIHRlbXBvcmFyeSBzdXJmYWNlcywgd2Ugc2hvdWxkIGRv
IGl0IGZpcnN0LgotICAgIGRyYXdMYXllcnNPblN1cmZhY2VzKHN1cmZhY2VMYXllcnMpOworICAg
IC8vIElmIHNvbWUgbGF5ZXJzIHNob3VsZCBiZSBkcmF3biBvbiB0ZW1wb3Jhcnkgc3VyZmFjZXMs
IHdlIHNob3VsZCBkbyBpdCBmaXJzdC4KKyAgICBpZiAoIXN1cmZhY2VMYXllcnMuaXNFbXB0eSgp
KQorICAgICAgICBkcmF3TGF5ZXJzT25TdXJmYWNlcyhzdXJmYWNlTGF5ZXJzKTsKIAogICAgIC8v
IERvbid0IHJlbmRlciB0aGUgcm9vdCBsYXllciwgdGhlIEJsYWNrQmVycnkgcG9ydCB1c2VzIHRo
ZSBCYWNraW5nU3RvcmUgdG8gZHJhdyB0aGUKICAgICAvLyByb290IGxheWVyLgpAQCAtMzcyLDcg
KzM3Myw3IEBAIHZvaWQgTGF5ZXJSZW5kZXJlcjo6Y29tcG9zaXRlTGF5ZXJzKGNvbnN0IFRyYW5z
Zm9ybWF0aW9uTWF0cml4JiBtYXRyaXgsIExheWVyQ29tCiAgICAgdGV4dHVyZUNhY2hlQ29tcG9z
aXRpbmdUaHJlYWQoKS0+Y29sbGVjdEdhcmJhZ2UoKTsKIH0KIAotc3RhdGljIGZsb2F0IHRleGNv
b3Jkc1s0ICogMl0gPSB7IDAsIDAsICAwLCAxLCAgMSwgMSwgIDEsIDAgfTsKK3N0YXRpYyBmbG9h
dCB0ZXhjb29yZHNbNCAqIDJdID0geyAwLCAwLCAgMSwgMCwgIDEsIDEsICAwLCAxIH07CiAKIHZv
aWQgTGF5ZXJSZW5kZXJlcjo6Y29tcG9zaXRlQnVmZmVyKGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0
cml4JiB0cmFuc2Zvcm0sIGNvbnN0IEZsb2F0UmVjdCYgY29udGVudHMsIEJsYWNrQmVycnk6OlBs
YXRmb3JtOjpHcmFwaGljczo6QnVmZmVyKiBidWZmZXIsIGJvb2wgY29udGVudHNPcGFxdWUsIGZs
b2F0IG9wYWNpdHkpCiB7CkBAIC00NjUsNiArNDY2LDExIEBAIGJvb2wgTGF5ZXJSZW5kZXJlcjo6
dXNlU3VyZmFjZShMYXllclJlbmRlcmVyU3VyZmFjZSogc3VyZmFjZSkKIAogdm9pZCBMYXllclJl
bmRlcmVyOjpkcmF3TGF5ZXJzT25TdXJmYWNlcyhjb25zdCBWZWN0b3I8UmVmUHRyPExheWVyQ29t
cG9zaXRpbmdUaHJlYWQ+ID4mIHN1cmZhY2VMYXllcnMpCiB7CisgICAgLy8gTm9ybWFsbHksIGFu
IHVwc2lkZS1kb3duIHRyYW5zZm9ybSBpcyB1c2VkLCBhcyBpcyB0aGUgR0wgY3VzdG9tLiBIb3dl
dmVyLCB3aGVuIGRyYXdpbmcKKyAgICAvLyBsYXllcnMgdG8gc3VyZmFjZXMsIGEgcmlnaHQtc2lk
ZS11cCB0cmFuc2Zvcm0gaXMgdXNlZCwgc28gd2UgbmVlZCB0byBzd2l0Y2ggdGhlIHdpbmRpbmcg
b3JkZXIKKyAgICAvLyBmb3IgY3VsbGluZy4KKyAgICBnbEZyb250RmFjZShHTF9DQ1cpOworCiAg
ICAgZm9yIChpbnQgaSA9IHN1cmZhY2VMYXllcnMuc2l6ZSgpIC0gMTsgaSA+PSAwOyBpLS0pIHsK
ICAgICAgICAgTGF5ZXJDb21wb3NpdGluZ1RocmVhZCogbGF5ZXIgPSBzdXJmYWNlTGF5ZXJzW2ld
LmdldCgpOwogICAgICAgICBMYXllclJlbmRlcmVyU3VyZmFjZSogc3VyZmFjZSA9IGxheWVyLT5s
YXllclJlbmRlcmVyU3VyZmFjZSgpOwpAQCAtNDkxLDEzICs0OTcsMTMgQEAgdm9pZCBMYXllclJl
bmRlcmVyOjpkcmF3TGF5ZXJzT25TdXJmYWNlcyhjb25zdCBWZWN0b3I8UmVmUHRyPExheWVyQ29t
cG9zaXRpbmdUaHIKICNlbmRpZgogICAgIH0KIAotICAgIC8vIElmIHRoZXJlIGFyZSBsYXllcnMg
ZHJhd2VkIG9uIHN1cmZhY2VzLCB3ZSBuZWVkIHRvIHN3aXRjaCB0byBkZWZhdWx0IGZyYW1lYnVm
ZmVyLgorICAgIGdsRnJvbnRGYWNlKEdMX0NXKTsKKworICAgIC8vIElmIHRoZXJlIGFyZSBsYXll
cnMgZHJhd24gb24gc3VyZmFjZXMsIHdlIG5lZWQgdG8gc3dpdGNoIHRvIGRlZmF1bHQgZnJhbWVi
dWZmZXIuCiAgICAgLy8gT3RoZXJ3aXNlLCB3ZSBqdXN0IG5lZWQgdG8gc2V0IHZpZXdwb3J0Lgot
ICAgIGlmIChzdXJmYWNlTGF5ZXJzLnNpemUoKSkgewotICAgICAgICB1c2VTdXJmYWNlKDApOwot
ICAgICAgICBnbEVuYWJsZShHTF9TQ0lTU09SX1RFU1QpOwotICAgICAgICBnbFNjaXNzb3IobV9z
Y2lzc29yUmVjdC54KCksIG1fc2Npc3NvclJlY3QueSgpLCBtX3NjaXNzb3JSZWN0LndpZHRoKCks
IG1fc2Npc3NvclJlY3QuaGVpZ2h0KCkpOwotICAgIH0KKyAgICB1c2VTdXJmYWNlKDApOworICAg
IGdsRW5hYmxlKEdMX1NDSVNTT1JfVEVTVCk7CisgICAgZ2xTY2lzc29yKG1fc2Npc3NvclJlY3Qu
eCgpLCBtX3NjaXNzb3JSZWN0LnkoKSwgbV9zY2lzc29yUmVjdC53aWR0aCgpLCBtX3NjaXNzb3JS
ZWN0LmhlaWdodCgpKTsKIH0KIAogdm9pZCBMYXllclJlbmRlcmVyOjphZGRMYXllcihMYXllckNv
bXBvc2l0aW5nVGhyZWFkKiBsYXllcikKQEAgLTkzNCw3ICs5NDAsNyBAQCB2b2lkIExheWVyUmVu
ZGVyZXI6OmNvbXBvc2l0ZUxheWVyc1JlY3Vyc2l2ZShMYXllckNvbXBvc2l0aW5nVGhyZWFkKiBs
YXllciwgaW50CiAgICAgLy8gRHJhdyB0aGUgZGVidWcgYm9yZGVyIGlmIHRoZXJlIGlzIG9uZS4K
ICAgICBkcmF3RGVidWdCb3JkZXIobGF5ZXIpOwogCi0gICAgLy8gVGhlIHRleHR1cmUgZm9yIHRo
ZSBMYXllclJlbmRlcmVyU3VyZmFjZSBjYW4gYmUgcmVsZWFzZWQgYWZ0ZXIgdGhlIHN1cmZhY2Ug
d2FzIGRyYXdlZCBvbiBhbm90aGVyIHN1cmZhY2UuCisgICAgLy8gVGhlIHRleHR1cmUgZm9yIHRo
ZSBMYXllclJlbmRlcmVyU3VyZmFjZSBjYW4gYmUgcmVsZWFzZWQgYWZ0ZXIgdGhlIHN1cmZhY2Ug
d2FzIGRyYXduIG9uIGFub3RoZXIgc3VyZmFjZS4KICAgICBpZiAobGF5ZXJBbHJlYWR5T25TdXJm
YWNlKGxheWVyKSkgewogICAgICAgICBsYXllci0+bGF5ZXJSZW5kZXJlclN1cmZhY2UoKS0+cmVs
ZWFzZVRleHR1cmUoKTsKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9MYXllclJlbmRlcmVyU3VyZmFjZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L0xheWVyUmVuZGVy
ZXJTdXJmYWNlLmNwcAppbmRleCAzZmYwNzhhZDc1YmE4MGFiYjBmOWM1YTA1NDNhYzQ5NGFmMzVl
MDQ2Li41YWY2OGRhY2YyZGEwMDI0Yzc0NzM1NTYyOTE2YTU2MDhmMmZlN2FjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L0xheWVyUmVuZGVy
ZXJTdXJmYWNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFj
a2JlcnJ5L0xheWVyUmVuZGVyZXJTdXJmYWNlLmNwcApAQCAtNDcsMzUgKzQ3LDE3IEBAIHZvaWQg
TGF5ZXJSZW5kZXJlclN1cmZhY2U6OnNldENvbnRlbnRSZWN0KGNvbnN0IEludFJlY3QmIGNvbnRl
bnRSZWN0KQogCiBGbG9hdFJlY3QgTGF5ZXJSZW5kZXJlclN1cmZhY2U6OmRyYXdSZWN0KCkgY29u
c3QKIHsKLSAgICBmbG9hdCBieCA9IG1fc2l6ZS53aWR0aCgpIC8gMi4wOwotICAgIGZsb2F0IGJ5
ID0gbV9zaXplLmhlaWdodCgpIC8gMi4wOwotCiAgICAgRmxvYXRSZWN0IHJlY3QgPSB0cmFuc2Zv
cm1lZEJvdW5kcygpLmJvdW5kaW5nQm94KCk7CiAKLSAgICBpZiAobV9vd25lckxheWVyLT5yZXBs
aWNhTGF5ZXIoKSkgewotICAgICAgICBGbG9hdFF1YWQgYm91bmRzOwotICAgICAgICBib3VuZHMu
c2V0UDEobV9yZXBsaWNhRHJhd1RyYW5zZm9ybS5tYXBQb2ludChGbG9hdFBvaW50KC1ieCwgLWJ5
KSkpOwotICAgICAgICBib3VuZHMuc2V0UDIobV9yZXBsaWNhRHJhd1RyYW5zZm9ybS5tYXBQb2lu
dChGbG9hdFBvaW50KC1ieCwgYnkpKSk7Ci0gICAgICAgIGJvdW5kcy5zZXRQMyhtX3JlcGxpY2FE
cmF3VHJhbnNmb3JtLm1hcFBvaW50KEZsb2F0UG9pbnQoYngsIGJ5KSkpOwotICAgICAgICBib3Vu
ZHMuc2V0UDQobV9yZXBsaWNhRHJhd1RyYW5zZm9ybS5tYXBQb2ludChGbG9hdFBvaW50KGJ4LCAt
YnkpKSk7Ci0gICAgICAgIHJlY3QudW5pdGUoYm91bmRzLmJvdW5kaW5nQm94KCkpOwotICAgIH0K
KyAgICBpZiAobV9vd25lckxheWVyLT5yZXBsaWNhTGF5ZXIoKSkKKyAgICAgICAgcmVjdC51bml0
ZShtX3JlcGxpY2FEcmF3VHJhbnNmb3JtLm1hcFF1YWQoRmxvYXRSZWN0KC1vcmlnaW4oKSwgc2l6
ZSgpKSkuYm91bmRpbmdCb3goKSk7CiAKICAgICByZXR1cm4gcmVjdDsKIH0KIAogRmxvYXRRdWFk
IExheWVyUmVuZGVyZXJTdXJmYWNlOjp0cmFuc2Zvcm1lZEJvdW5kcygpIGNvbnN0CiB7Ci0gICAg
ZmxvYXQgYnggPSBtX3NpemUud2lkdGgoKSAvIDIuMDsKLSAgICBmbG9hdCBieSA9IG1fc2l6ZS5o
ZWlnaHQoKSAvIDIuMDsKLQotICAgIEZsb2F0UXVhZCBib3VuZHM7Ci0gICAgYm91bmRzLnNldFAx
KG1fZHJhd1RyYW5zZm9ybS5tYXBQb2ludChGbG9hdFBvaW50KC1ieCwgLWJ5KSkpOwotICAgIGJv
dW5kcy5zZXRQMihtX2RyYXdUcmFuc2Zvcm0ubWFwUG9pbnQoRmxvYXRQb2ludCgtYngsIGJ5KSkp
OwotICAgIGJvdW5kcy5zZXRQMyhtX2RyYXdUcmFuc2Zvcm0ubWFwUG9pbnQoRmxvYXRQb2ludChi
eCwgYnkpKSk7Ci0gICAgYm91bmRzLnNldFA0KG1fZHJhd1RyYW5zZm9ybS5tYXBQb2ludChGbG9h
dFBvaW50KGJ4LCAtYnkpKSk7Ci0KLSAgICByZXR1cm4gYm91bmRzOworICAgIHJldHVybiBtX2Ry
YXdUcmFuc2Zvcm0ubWFwUXVhZChGbG9hdFJlY3QoLW9yaWdpbigpLCBzaXplKCkpKTsKIH0KIAog
Ym9vbCBMYXllclJlbmRlcmVyU3VyZmFjZTo6ZW5zdXJlVGV4dHVyZSgpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L0xheWVyUmVuZGVyZXJT
dXJmYWNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L0xh
eWVyUmVuZGVyZXJTdXJmYWNlLmgKaW5kZXggZTg5Njk1NTFhODc0MjhkZDJiOTU4NzhmNGE5ZTU0
MzBlM2Y2ZTAyOS4uNTdmZjg2ODNiYjBiZTY3Y2M0YTcwMjhhMWM3MWE2YTFkYWE5YjRmOSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9MYXll
clJlbmRlcmVyU3VyZmFjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2JsYWNrYmVycnkvTGF5ZXJSZW5kZXJlclN1cmZhY2UuaApAQCAtNDUsNiArNDUsOCBAQCBwdWJs
aWM6CiAgICAgRmxvYXRSZWN0IGNsaXBSZWN0KCkgY29uc3QgeyByZXR1cm4gbV9jbGlwUmVjdDsg
fQogICAgIHZvaWQgc2V0Q2xpcFJlY3QoY29uc3QgRmxvYXRSZWN0JiByZWN0KSB7IG1fY2xpcFJl
Y3QgPSByZWN0OyB9CiAKKyAgICBGbG9hdFBvaW50IG9yaWdpbigpIGNvbnN0IHsgcmV0dXJuIEZs
b2F0UG9pbnQobV9zaXplLndpZHRoKCkgLyAyLjBmLCBtX3NpemUuaGVpZ2h0KCkgLyAyLjBmKTsg
fQorCiAgICAgdm9pZCBzZXREcmF3VHJhbnNmb3JtKGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4
JiBtYXRyaXgpIHsgbV9kcmF3VHJhbnNmb3JtID0gbWF0cml4OyB9CiAgICAgY29uc3QgVHJhbnNm
b3JtYXRpb25NYXRyaXgmIGRyYXdUcmFuc2Zvcm0oKSBjb25zdCB7IHJldHVybiBtX2RyYXdUcmFu
c2Zvcm07IH0KICAgICB2b2lkIHNldFJlcGxpY2FEcmF3VHJhbnNmb3JtKGNvbnN0IFRyYW5zZm9y
bWF0aW9uTWF0cml4JiBtYXRyaXgpIHsgbV9yZXBsaWNhRHJhd1RyYW5zZm9ybSA9IG1hdHJpeDsg
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJy
eS9NZWRpYVBsYXllclByaXZhdGVCbGFja0JlcnJ5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvTWVkaWFQbGF5ZXJQcml2YXRlQmxhY2tCZXJyeS5jcHAK
aW5kZXggOGVjZDg5MjAyYWRmZmJmY2NkMDhkMDIzNDhmNjQyN2NkYzI1MjMyNS4uNGU2ZGJiNTA2
NmVkYjkxZGZiNjM1MDRmMTdlM2NmOGIxY2JhMDA1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9NZWRpYVBsYXllclByaXZhdGVCbGFja0Jl
cnJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5
L01lZGlhUGxheWVyUHJpdmF0ZUJsYWNrQmVycnkuY3BwCkBAIC04ODgsOCArODg4LDcgQEAgYm9v
bCBNZWRpYVBsYXllclByaXZhdGU6OnN1cHBvcnRzQWNjZWxlcmF0ZWRSZW5kZXJpbmcoKSBjb25z
dAogI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKIHN0YXRpYyBjb25zdCBkb3VibGUg
QnVmZmVyaW5nQW5pbWF0aW9uRGVsYXkgPSAxLjAgLyAyNDsKIHN0YXRpYyB1bnNpZ25lZCogc19i
dWZmZXJpbmdJbWFnZURhdGEgPSAwOwotc3RhdGljIGludCBzX2J1ZmZlcmluZ0ltYWdlV2lkdGgg
PSAwOwotc3RhdGljIGludCBzX2J1ZmZlcmluZ0ltYWdlSGVpZ2h0ID0gMDsKK3N0YXRpYyBJbnRT
aXplIHNfYnVmZmVyaW5nSW1hZ2VTaXplOwogCiBQbGF0Zm9ybU1lZGlhIE1lZGlhUGxheWVyUHJp
dmF0ZTo6cGxhdGZvcm1NZWRpYSgpIGNvbnN0CiB7CkBAIC05MTcsMTIgKzkxNiwxMSBAQCBzdGF0
aWMgdm9pZCBsb2FkQnVmZmVyaW5nSW1hZ2VEYXRhKCkKICAgICAgICAgICAgIHJldHVybjsKIAog
ICAgICAgICBsb2FkZWQgPSB0cnVlOwotICAgICAgICBzX2J1ZmZlcmluZ0ltYWdlV2lkdGggPSBi
dWZmZXJpbmdJY29uLT53aWR0aCgpOwotICAgICAgICBzX2J1ZmZlcmluZ0ltYWdlSGVpZ2h0ID0g
YnVmZmVyaW5nSWNvbi0+aGVpZ2h0KCk7CisgICAgICAgIHNfYnVmZmVyaW5nSW1hZ2VTaXplID0g
YnVmZmVyaW5nSWNvbi0+c2l6ZSgpOwogICAgICAgICBpbnQgYnVmU2l6ZSA9IGJ1ZmZlcmluZ0lj
b24tPmRlY29kZWRTaXplKCk7CiAgICAgICAgIHNfYnVmZmVyaW5nSW1hZ2VEYXRhID0gc3RhdGlj
X2Nhc3Q8dW5zaWduZWQqPihtYWxsb2MoYnVmU2l6ZSkpOwogCi0gICAgICAgIG5hdGl2ZUltYWdl
LT5yZWFkUGl4ZWxzKHNfYnVmZmVyaW5nSW1hZ2VEYXRhLCBzX2J1ZmZlcmluZ0ltYWdlV2lkdGgg
KiBzX2J1ZmZlcmluZ0ltYWdlSGVpZ2h0KTsKKyAgICAgICAgbmF0aXZlSW1hZ2UtPnJlYWRQaXhl
bHMoc19idWZmZXJpbmdJbWFnZURhdGEsIHNfYnVmZmVyaW5nSW1hZ2VTaXplLndpZHRoKCkgKiBz
X2J1ZmZlcmluZ0ltYWdlU2l6ZS5oZWlnaHQoKSk7CiAKICAgICAgICAgYnVmZmVyaW5nSWNvbi0+
ZGVyZWYoKTsKICAgICB9CkBAIC05ODQsMjQgKzk4MiwxOSBAQCB2b2lkIE1lZGlhUGxheWVyUHJp
dmF0ZTo6ZHJhd0J1ZmZlcmluZ0FuaW1hdGlvbihjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYg
bWF0cgogICAgICAgICBnbEJpbmRUZXh0dXJlKEdMX1RFWFRVUkVfMkQsIHRleElkKTsKICAgICAg
ICAgaWYgKCFpbml0aWFsaXplZCkgewogICAgICAgICAgICAgaW5pdGlhbGl6ZWQgPSB0cnVlOwot
ICAgICAgICAgICAgZ2xUZXhJbWFnZTJEKEdMX1RFWFRVUkVfMkQsIDAsIEdMX1JHQkEsIHNfYnVm
ZmVyaW5nSW1hZ2VXaWR0aCwgc19idWZmZXJpbmdJbWFnZUhlaWdodCwKKyAgICAgICAgICAgIGds
VGV4SW1hZ2UyRChHTF9URVhUVVJFXzJELCAwLCBHTF9SR0JBLCBzX2J1ZmZlcmluZ0ltYWdlU2l6
ZS53aWR0aCgpLCBzX2J1ZmZlcmluZ0ltYWdlU2l6ZS5oZWlnaHQoKSwKICAgICAgICAgICAgICAg
ICAwLCBHTF9SR0JBLCBHTF9VTlNJR05FRF9CWVRFLCBzX2J1ZmZlcmluZ0ltYWdlRGF0YSk7CiAg
ICAgICAgICAgICBmcmVlKHNfYnVmZmVyaW5nSW1hZ2VEYXRhKTsKICAgICAgICAgfQogCi0gICAg
ICAgIGZsb2F0IHRleGNvb3Jkc1tdID0geyAwLCAwLCAgMCwgMSwgIDEsIDEsICAxLCAwIH07Ci0g
ICAgICAgIEZsb2F0UG9pbnQgdmVydGljZXNbNF07Ci0gICAgICAgIGZsb2F0IGJ4ID0gc19idWZm
ZXJpbmdJbWFnZVdpZHRoIC8gMi4wOwotICAgICAgICBmbG9hdCBieSA9IHNfYnVmZmVyaW5nSW1h
Z2VIZWlnaHQgLyAyLjA7Ci0gICAgICAgIHZlcnRpY2VzWzBdID0gcmVuZGVyTWF0cml4Lm1hcFBv
aW50KEZsb2F0UG9pbnQoLWJ4LCAtYnkpKTsKLSAgICAgICAgdmVydGljZXNbMV0gPSByZW5kZXJN
YXRyaXgubWFwUG9pbnQoRmxvYXRQb2ludCgtYngsIGJ5KSk7Ci0gICAgICAgIHZlcnRpY2VzWzJd
ID0gcmVuZGVyTWF0cml4Lm1hcFBvaW50KEZsb2F0UG9pbnQoYngsIGJ5KSk7Ci0gICAgICAgIHZl
cnRpY2VzWzNdID0gcmVuZGVyTWF0cml4Lm1hcFBvaW50KEZsb2F0UG9pbnQoYngsIC1ieSkpOwor
ICAgICAgICBmbG9hdCB0ZXhjb29yZHNbXSA9IHsgMCwgMCwgIDEsIDAsICAxLCAxLCAgMCwgMSB9
OworICAgICAgICBGbG9hdFJlY3QgYnVmZmVyaW5nSW1hZ2VSZWN0KEZsb2F0UG9pbnQoLXNfYnVm
ZmVyaW5nSW1hZ2VTaXplLndpZHRoKCkgLyAyLjAsIC1zX2J1ZmZlcmluZ0ltYWdlU2l6ZS5oZWln
aHQoKSAvIDIuMCksIHNfYnVmZmVyaW5nSW1hZ2VTaXplKTsKKyAgICAgICAgRmxvYXRRdWFkIHRy
YW5zZm9ybWVkUXVhZCA9IHJlbmRlck1hdHJpeC5tYXBRdWFkKGJ1ZmZlcmluZ0ltYWdlUmVjdCk7
CiAKICAgICAgICAgZ2xFbmFibGUoR0xfQkxFTkQpOwogICAgICAgICBnbEJsZW5kRnVuYyhHTF9P
TkUsIEdMX09ORV9NSU5VU19TUkNfQUxQSEEpOwogICAgICAgICBnbFVuaWZvcm0xZihwcm9ncmFt
Lm9wYWNpdHlMb2NhdGlvbigpLCAxLjApOwotICAgICAgICBnbFZlcnRleEF0dHJpYlBvaW50ZXIo
cHJvZ3JhbS5wb3NpdGlvbkxvY2F0aW9uKCksIDIsIEdMX0ZMT0FULCBHTF9GQUxTRSwgMCwgdmVy
dGljZXMpOworICAgICAgICBnbFZlcnRleEF0dHJpYlBvaW50ZXIocHJvZ3JhbS5wb3NpdGlvbkxv
Y2F0aW9uKCksIDIsIEdMX0ZMT0FULCBHTF9GQUxTRSwgMCwgJnRyYW5zZm9ybWVkUXVhZCk7CiAg
ICAgICAgIGdsVmVydGV4QXR0cmliUG9pbnRlcihwcm9ncmFtLnRleENvb3JkTG9jYXRpb24oKSwg
MiwgR0xfRkxPQVQsIEdMX0ZBTFNFLCAwLCB0ZXhjb29yZHMpOwogICAgICAgICBnbERyYXdBcnJh
eXMoR0xfVFJJQU5HTEVfRkFOLCAwLCA0KTsKICAgICB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>203034</attachid>
            <date>2013-05-28 03:29:05 -0700</date>
            <delta_ts>2013-05-28 10:28:23 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-116616-20130528122739.patch</filename>
            <type>text/plain</type>
            <size>18445</size>
            <attacher name="Arvid Nilsson">anilsson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ3MzkyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODFlMWM0NDc3YTcwNjU2
MGIxZDc3ZDYwMGVjZmVmMjg5YmRhZTVlZC4uZjI0ZDg2YTNlMzhmYTcwMDFiNTBkZmMyNGRlYjM4
OGY2YTBjMzZkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYzIEBACisyMDEzLTA1LTI0ICBBcnZp
ZCBOaWxzc29uICA8YW5pbHNzb25AcmltLmNvbT4KKworICAgICAgICBbQmxhY2tCZXJyeV0gYmFj
a2ZhY2UtdmlzaWJpbGl0eTogaGlkZGVuIGRvZXNuJ3Qgd29yayBwcm9wZXJseSB3aXRoIG1hc2tz
IGFuZCBmaWx0ZXJzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xMTY2MTYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBUaGUgQmxhY2tCZXJyeTo6UGxhdGZvcm06OkdyYXBoaWNzOjpHcmFwaGljc0NvbnRleHQg
Z2VuZXJhdGVzIGdlb21ldHJ5CisgICAgICAgIHdpdGggYSBkaWZmZXJlbnQgd2luZGluZyBvcmRl
ciB0aGFuIHRoZSBhY2NlbGVyYXRlZCBjb21wb3NpdGluZyBiYWNrZW5kCisgICAgICAgIG9mIHRo
ZSBCbGFja0JlcnJ5IHBvcnQuIFNvLCB3aGVuIHdlIHN3aXRjaGVkIGZyb20gU2tpYSB0byB0aGlz
IG5ldworICAgICAgICByZW5kZXJpbmcgZW5naW5lLCB3ZSBzd2l0Y2hlZCBmcm9tIGdsRnJvbnRG
YWNlKEdMX0NDVykgdG8KKyAgICAgICAgZ2xGcm9udEZhY2UoR0xfQ1cpLCBhbmQgYWxsIHdhcyB3
ZWxsIHdoZW4gZHJhd2luZyBkaXNwbGF5IGxpc3RzLgorICAgICAgICBIb3dldmVyLCB3ZSBmb3Jn
b3QgdG8gdXBkYXRlIHRoZSB3aW5kaW5nIG9yZGVyIG9mIGdlb21ldHJ5IGdlbmVyYXRlZAorICAg
ICAgICB3aXRoaW4gdGhlIGFjY2VsZXJhdGVkIGNvbXBvc2l0aW5nIGJhY2tlbmQsIHdoaWNoIGlz
IHVzZWQgZm9yIG1hc2tzIGFuZAorICAgICAgICBmaWx0ZXJzLCBzbyB0aGV5IHdlcmUgZ2V0dGlu
ZyBlcnJvbmVvdXNseSBjdWxsZWQgb3V0IHdoZW4KKyAgICAgICAgYmFja2ZhY2UtdmlzaWJpbGl0
eTogaGlkZGVuIHdhcyBhcHBsaWVkIHRvIHRoZW0uIEZpeGVkIGJ5IHN3aXRjaGluZyB0aGUKKyAg
ICAgICAgd2luZGluZyBvcmRlciBvZiBhbGwgZ2VvbWV0cnkgZ2VuZXJhdGVkIHVwIGhlcmUsIHdo
aWNoIGhhcyB0aGUgYWRkZWQKKyAgICAgICAgYmVuZWZpdCBvZiBlbmFibGluZyB1cyB0byB1c2Ug
VHJhbnNmb3JtYXRpb25NYXRyaXg6Om1hcFF1YWQgaW5zdGVhZCBvZgorICAgICAgICB0cmFuc2Zv
cm1pbmcgcG9pbnQtYnktcG9pbnQuCisKKyAgICAgICAgVG8gZnVydGhlciBjb21wbGljYXRlIG1h
dHRlcnMsIGEgcmlnaHQtc2lkZSB1cCB0cmFuc2Zvcm0gaXMgdXNlZCB3aGVuCisgICAgICAgIGRy
YXdpbmcgbGF5ZXJzIGludG8gc3VyZmFjZXMsIHJldmVyc2luZyB0aGUgd2luZGluZyBvcmRlciBh
bmQgcmVxdWlyaW5nCisgICAgICAgIHVzIHRvIHN3aXRjaCBiYWNrIHRvIGdsRnJvbnRGYWNlKEdM
X0NDVykgdGVtcG9yYXJpbHksIHdoZW4gZHJhd2luZworICAgICAgICBsYXllcnMgdG8gc3VyZmFj
ZXMsIG9yIHRoZSBsYXllcnMgd2lsbCBnZXQgY3VsbGVkIG91dCBpbnNpZGUgdGhlCisgICAgICAg
IHN1cmZhY2UuCisKKyAgICAgICAgQWxzbyBmaXggc3BlbGxpbmcgZXJyb3IsICJkcmF3ZWQiIHNo
b3VsZCBiZSAiZHJhd24iLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cywgdGhpcyBpcyBvbmx5IGRl
dGVjdGFibGUgYnkgcGl4ZWwgdGVzdHMsIHdoaWNoIHRoZQorICAgICAgICBCbGFja0JlcnJ5IHBv
cnQgY3VycmVudGx5IGRvZXNuJ3Qgc3VwcG9ydC4KKworICAgICAgICBQUiAzNDE5NDUuCisKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L0VHTEltYWdlTGF5ZXJDb21wb3Np
dGluZ1RocmVhZENsaWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFR0xJbWFnZUxheWVyQ29t
cG9zaXRpbmdUaHJlYWRDbGllbnQ6OmRyYXdUZXh0dXJlcyk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvYmxhY2tiZXJyeS9MYXllckNvbXBvc2l0aW5nVGhyZWFkLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkxheWVyQ29tcG9zaXRpbmdUaHJlYWQ6OnNldERyYXdUcmFuc2Zvcm0pOgorICAg
ICAgICAoV2ViQ29yZTo6Z2V0VHJhbnNmb3JtZWRSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6Okxh
eWVyQ29tcG9zaXRpbmdUaHJlYWQ6OmRyYXdUZXh0dXJlcyk6CisgICAgICAgIChXZWJDb3JlOjpM
YXllckNvbXBvc2l0aW5nVGhyZWFkOjpkcmF3U3VyZmFjZSk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvYmxhY2tiZXJyeS9MYXllckNvbXBvc2l0aW5nVGhyZWFkLmg6CisgICAgICAgIChM
YXllckNvbXBvc2l0aW5nVGhyZWFkKToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyQ29tcG9zaXRp
bmdUaHJlYWQ6Om9yaWdpbik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJy
eS9MYXllckZpbHRlclJlbmRlcmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvTGF5ZXJSZW5kZXJlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpMYXllclJlbmRlcmVyOjpjb21wb3NpdGVMYXllcnMpOgorICAgICAgICAoV2Vi
Q29yZSk6CisgICAgICAgIChXZWJDb3JlOjpMYXllclJlbmRlcmVyOjpkcmF3TGF5ZXJzT25TdXJm
YWNlcyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9MYXllclJlbmRl
cmVyU3VyZmFjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMYXllclJlbmRlcmVyU3VyZmFjZTo6
ZHJhd1JlY3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJSZW5kZXJlclN1cmZhY2U6OnRyYW5z
Zm9ybWVkQm91bmRzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L0xh
eWVyUmVuZGVyZXJTdXJmYWNlLmg6CisgICAgICAgIChXZWJDb3JlOjpMYXllclJlbmRlcmVyU3Vy
ZmFjZTo6b3JpZ2luKToKKyAgICAgICAgKExheWVyUmVuZGVyZXJTdXJmYWNlKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L01lZGlhUGxheWVyUHJpdmF0ZUJsYWNrQmVy
cnkuY3BwOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpsb2FkQnVmZmVy
aW5nSW1hZ2VEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZTo6ZHJh
d0J1ZmZlcmluZ0FuaW1hdGlvbik6CisKIDIwMTMtMDUtMTYgIEdvcmRvbiBTdW4gIDxnb3N1bkBi
bGFja2JlcnJ5LmNvbT4KIAogICAgICAgICBDcmFzaCBpbiBJbWFnZSBEZWNvZGVyIGR1ZSB0byBs
YXJnZSBnaWZzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YmxhY2tiZXJyeS9FR0xJbWFnZUxheWVyQ29tcG9zaXRpbmdUaHJlYWRDbGllbnQuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9FR0xJbWFnZUxheWVyQ29t
cG9zaXRpbmdUaHJlYWRDbGllbnQuY3BwCmluZGV4IDNlNDhjMjkzNWVjYTJlOGUzNTVkNGFlN2Fm
M2EwNWRjN2UyNDk2OTEuLjI4MjdlNDNlMWMwYzY5ZDA1NDFhYzlmNzM0YzAwYjE1YjAzZTBkMDQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkv
RUdMSW1hZ2VMYXllckNvbXBvc2l0aW5nVGhyZWFkQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L0VHTEltYWdlTGF5ZXJDb21wb3NpdGlu
Z1RocmVhZENsaWVudC5jcHAKQEAgLTQ3LDcgKzQ3LDcgQEAgdm9pZCBFR0xJbWFnZUxheWVyQ29t
cG9zaXRpbmdUaHJlYWRDbGllbnQ6OnVwbG9hZFRleHR1cmVzSWZOZWVkZWQoTGF5ZXJDb21wb3Np
dGkKIAogdm9pZCBFR0xJbWFnZUxheWVyQ29tcG9zaXRpbmdUaHJlYWRDbGllbnQ6OmRyYXdUZXh0
dXJlcyhMYXllckNvbXBvc2l0aW5nVGhyZWFkKiBsYXllciwgZG91YmxlIC8qc2NhbGUqLywgY29u
c3QgR0xFUzJQcm9ncmFtJiBwcm9ncmFtKQogewotICAgIHN0YXRpYyBmbG9hdCB1cHNpZGVEb3du
WzQgKiAyXSA9IHsgMCwgMSwgIDAsIDAsICAxLCAwLCAgMSwgMSB9OworICAgIHN0YXRpYyBmbG9h
dCB1cHNpZGVEb3duWzQgKiAyXSA9IHsgMCwgMSwgIDEsIDEsICAxLCAwLCAgMCwgMCB9OwogCiAg
ICAgaWYgKCFtX3RleHR1cmVBY2Nlc3NvciB8fCAhbV90ZXh0dXJlQWNjZXNzb3ItPnRleHR1cmVJ
RCgpKQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9ibGFja2JlcnJ5L0xheWVyQ29tcG9zaXRpbmdUaHJlYWQuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9MYXllckNvbXBvc2l0aW5nVGhy
ZWFkLmNwcAppbmRleCBiZDIyOWE4ZGE4OGZmYTczMjlmMWNiYWQzODdmMTUwMzgwMDE5MzIwLi5i
OGZmNmYxNWMzNjRkNTMwY2RlM2QxZDZlZjM1NjA5NGVjZTliMzYyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L0xheWVyQ29tcG9zaXRpbmdU
aHJlYWQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVy
cnkvTGF5ZXJDb21wb3NpdGluZ1RocmVhZC5jcHAKQEAgLTEzMywzNSArMTMzLDIxIEBAIHZvaWQg
TGF5ZXJDb21wb3NpdGluZ1RocmVhZDo6c2V0RHJhd1RyYW5zZm9ybShkb3VibGUgc2NhbGUsIGNv
bnN0IFRyYW5zZm9ybWF0aW9uCiB7CiAgICAgbV9kcmF3VHJhbnNmb3JtID0gbWF0cml4OwogCi0g
ICAgZmxvYXQgYnggPSBtX2JvdW5kcy53aWR0aCgpIC8gMi4wOwotICAgIGZsb2F0IGJ5ID0gbV9i
b3VuZHMuaGVpZ2h0KCkgLyAyLjA7CisgICAgRmxvYXRSZWN0IGJvdW5kc1JlY3QoLW9yaWdpbigp
LCBib3VuZHMoKSk7CiAKLSAgICBpZiAoc2l6ZUlzU2NhbGVJbnZhcmlhbnQoKSkgewotICAgICAg
ICBieCAvPSBzY2FsZTsKLSAgICAgICAgYnkgLz0gc2NhbGU7Ci0gICAgfQotCi0gICAgbV90cmFu
c2Zvcm1lZEJvdW5kcy5zZXRQMShtYXRyaXgubWFwUG9pbnQoRmxvYXRQb2ludCgtYngsIC1ieSkp
KTsKLSAgICBtX3RyYW5zZm9ybWVkQm91bmRzLnNldFAyKG1hdHJpeC5tYXBQb2ludChGbG9hdFBv
aW50KC1ieCwgYnkpKSk7Ci0gICAgbV90cmFuc2Zvcm1lZEJvdW5kcy5zZXRQMyhtYXRyaXgubWFw
UG9pbnQoRmxvYXRQb2ludChieCwgYnkpKSk7Ci0gICAgbV90cmFuc2Zvcm1lZEJvdW5kcy5zZXRQ
NChtYXRyaXgubWFwUG9pbnQoRmxvYXRQb2ludChieCwgLWJ5KSkpOworICAgIGlmIChzaXplSXNT
Y2FsZUludmFyaWFudCgpKQorICAgICAgICBib3VuZHNSZWN0LnNjYWxlKDEgLyBzY2FsZSk7CiAK
KyAgICBtX3RyYW5zZm9ybWVkQm91bmRzID0gbWF0cml4Lm1hcFF1YWQoYm91bmRzUmVjdCk7CiAg
ICAgbV9kcmF3UmVjdCA9IG1fdHJhbnNmb3JtZWRCb3VuZHMuYm91bmRpbmdCb3goKTsKIH0KIAog
c3RhdGljIEZsb2F0UXVhZCBnZXRUcmFuc2Zvcm1lZFJlY3QoY29uc3QgSW50U2l6ZSYgYm91bmRz
LCBjb25zdCBJbnRSZWN0JiByZWN0LCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgZHJhd1Ry
YW5zZm9ybSkKIHsKLSAgICBmbG9hdCB4ID0gLWJvdW5kcy53aWR0aCgpIC8gMi4wICsgcmVjdC54
KCk7Ci0gICAgZmxvYXQgeSA9IC1ib3VuZHMuaGVpZ2h0KCkgLyAyLjAgKyByZWN0LnkoKTsKLSAg
ICBmbG9hdCB3ID0gcmVjdC53aWR0aCgpOwotICAgIGZsb2F0IGggPSByZWN0LmhlaWdodCgpOwot
ICAgIEZsb2F0UXVhZCByZXN1bHQ7Ci0gICAgcmVzdWx0LnNldFAxKGRyYXdUcmFuc2Zvcm0ubWFw
UG9pbnQoRmxvYXRQb2ludCh4LCB5KSkpOwotICAgIHJlc3VsdC5zZXRQMihkcmF3VHJhbnNmb3Jt
Lm1hcFBvaW50KEZsb2F0UG9pbnQoeCwgeSArIGgpKSk7Ci0gICAgcmVzdWx0LnNldFAzKGRyYXdU
cmFuc2Zvcm0ubWFwUG9pbnQoRmxvYXRQb2ludCh4ICsgdywgeSArIGgpKSk7Ci0gICAgcmVzdWx0
LnNldFA0KGRyYXdUcmFuc2Zvcm0ubWFwUG9pbnQoRmxvYXRQb2ludCh4ICsgdywgeSkpKTsKLQot
ICAgIHJldHVybiByZXN1bHQ7CisgICAgRmxvYXRQb2ludCBvcmlnaW4oYm91bmRzLndpZHRoKCkg
LyAyLjBmLCBib3VuZHMuaGVpZ2h0KCkgLyAyLjBmKTsKKyAgICBGbG9hdFJlY3QgbGF5ZXJSZWN0
KHJlY3QpOworICAgIGxheWVyUmVjdC5tb3ZlQnkoLW9yaWdpbik7CisgICAgcmV0dXJuIGRyYXdU
cmFuc2Zvcm0ubWFwUXVhZChsYXllclJlY3QpOwogfQogCiAKQEAgLTIxMyw3ICsxOTksNyBAQCBG
bG9hdFF1YWQgTGF5ZXJDb21wb3NpdGluZ1RocmVhZDo6Z2V0VHJhbnNmb3JtZWRIb2xlUHVuY2hS
ZWN0KCkgY29uc3QKIAogdm9pZCBMYXllckNvbXBvc2l0aW5nVGhyZWFkOjpkcmF3VGV4dHVyZXMo
ZG91YmxlIHNjYWxlLCBjb25zdCBHTEVTMlByb2dyYW0mIHByb2dyYW0sIGNvbnN0IEZsb2F0UmVj
dCYgdmlzaWJsZVJlY3QpCiB7Ci0gICAgc3RhdGljIGZsb2F0IHRleGNvb3Jkc1s0ICogMl0gPSB7
IDAsIDAsICAwLCAxLCAgMSwgMSwgIDEsIDAgfTsKKyAgICBzdGF0aWMgZmxvYXQgdGV4Y29vcmRz
WzQgKiAyXSA9IHsgMCwgMCwgIDEsIDAsICAxLCAxLCAgMCwgMSB9OwogCiAgICAgaWYgKG1fcGx1
Z2luVmlldykgewogICAgICAgICBpZiAobV9pc1Zpc2libGUpIHsKQEAgLTMwMyw3ICsyODksNyBA
QCB2b2lkIExheWVyQ29tcG9zaXRpbmdUaHJlYWQ6OmRyYXdTdXJmYWNlKGNvbnN0IFRyYW5zZm9y
bWF0aW9uTWF0cml4JiBkcmF3VHJhbnNmbwogICAgICAgICBnbFVuaWZvcm0xZihwcm9ncmFtLm9w
YWNpdHlMb2NhdGlvbigpLCBsYXllclJlbmRlcmVyU3VyZmFjZSgpLT5kcmF3T3BhY2l0eSgpKTsK
ICAgICAgICAgZ2xWZXJ0ZXhBdHRyaWJQb2ludGVyKHByb2dyYW0ucG9zaXRpb25Mb2NhdGlvbigp
LCAyLCBHTF9GTE9BVCwgR0xfRkFMU0UsIDAsICZzdXJmYWNlUXVhZCk7CiAKLSAgICAgICAgc3Rh
dGljIGZsb2F0IHRleGNvb3Jkc1s0ICogMl0gPSB7IDAsIDAsICAwLCAxLCAgMSwgMSwgIDEsIDAg
fTsKKyAgICAgICAgc3RhdGljIGZsb2F0IHRleGNvb3Jkc1s0ICogMl0gPSB7IDAsIDAsICAxLCAw
LCAgMSwgMSwgIDAsIDEgfTsKICAgICAgICAgZ2xWZXJ0ZXhBdHRyaWJQb2ludGVyKHByb2dyYW0u
dGV4Q29vcmRMb2NhdGlvbigpLCAyLCBHTF9GTE9BVCwgR0xfRkFMU0UsIDAsIHRleGNvb3Jkcyk7
CiAgICAgICAgIGdsRHJhd0FycmF5cyhHTF9UUklBTkdMRV9GQU4sIDAsIDQpOwogICAgIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvTGF5
ZXJDb21wb3NpdGluZ1RocmVhZC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YmxhY2tiZXJyeS9MYXllckNvbXBvc2l0aW5nVGhyZWFkLmgKaW5kZXggMGIyMDJjYWU0NWNlYTdi
NjJlMzZlZTQ2NGIwNGI3ZWI1MTAwNmU1NS4uYzhjMGVkYzcyMzI1YjhjOGEyZTlmYzU0NjA3MWMz
NzEwMTM3OThiMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YmxhY2tiZXJyeS9MYXllckNvbXBvc2l0aW5nVGhyZWFkLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9MYXllckNvbXBvc2l0aW5nVGhyZWFkLmgKQEAg
LTE2MSw2ICsxNjEsOSBAQCBwdWJsaWM6CiAgICAgTGF5ZXJSZW5kZXJlciogbGF5ZXJSZW5kZXJl
cigpIGNvbnN0IHsgcmV0dXJuIG1fbGF5ZXJSZW5kZXJlcjsgfQogICAgIHZvaWQgc2V0TGF5ZXJS
ZW5kZXJlcihMYXllclJlbmRlcmVyKik7CiAKKyAgICAvLyBUaGUgZHJhdyB0cmFuc2Zvcm0gZXhw
ZWN0cyB0aGUgb3JpZ2luIHRvIGJlIGxvY2F0ZWQgYXQgdGhlIGNlbnRlciBvZiB0aGUgbGF5ZXIu
CisgICAgRmxvYXRQb2ludCBvcmlnaW4oKSBjb25zdCB7IHJldHVybiBGbG9hdFBvaW50KG1fYm91
bmRzLndpZHRoKCkgLyAyLjBmLCBtX2JvdW5kcy5oZWlnaHQoKSAvIDIuMGYpOyB9CisKICAgICB2
b2lkIHNldERyYXdUcmFuc2Zvcm0oZG91YmxlIHNjYWxlLCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1h
dHJpeCYpOwogICAgIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBkcmF3VHJhbnNmb3JtKCkg
Y29uc3QgeyByZXR1cm4gbV9kcmF3VHJhbnNmb3JtOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvTGF5ZXJGaWx0ZXJSZW5kZXJlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L0xheWVyRmls
dGVyUmVuZGVyZXIuY3BwCmluZGV4IDZjZTdhZWJkZGY1Y2RlOWMyY2RmY2QwZTcxZjA3OTc0MzE3
NTkzOGEuLmZhNGNhOWU1ZGVhNTFmYWZmYzFhNzc0YzVlODcyN2UxZTVlMmExZjYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvTGF5ZXJGaWx0
ZXJSZW5kZXJlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYmxh
Y2tiZXJyeS9MYXllckZpbHRlclJlbmRlcmVyLmNwcApAQCAtNjgyLDcgKzY4Miw3IEBAIFZlY3Rv
cjxSZWZQdHI8TGF5ZXJGaWx0ZXJSZW5kZXJlckFjdGlvbj4gPiBMYXllckZpbHRlclJlbmRlcmVy
OjphY3Rpb25zRm9yT3BlcmF0CiAgICAgcmV0dXJuIHJldDsKIH0KIAotc3RhdGljIGZsb2F0IHRl
eGNvb3Jkc1s0ICogMl0gPSB7IDAsIDAsICAwLCAxLCAgMSwgMSwgIDEsIDAgfTsKK3N0YXRpYyBm
bG9hdCB0ZXhjb29yZHNbNCAqIDJdID0geyAwLCAwLCAgMSwgMCwgIDEsIDEsICAwLCAxIH07CiAK
IHZvaWQgTGF5ZXJGaWx0ZXJSZW5kZXJlcjo6YXBwbHlBY3Rpb25zKHVuc2lnbmVkJiBmYm8sIExh
eWVyQ29tcG9zaXRpbmdUaHJlYWQqIGxheWVyLCBWZWN0b3I8UmVmUHRyPExheWVyRmlsdGVyUmVu
ZGVyZXJBY3Rpb24+ID4gYWN0aW9ucykKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvTGF5ZXJSZW5kZXJlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L0xheWVyUmVuZGVyZXIuY3BwCmluZGV4
IGQ3ZmIwYzEzOWYxMjU2NTZhMjBiNmRkNTkwNTk5M2M1ZmI3YTgyODYuLmQwZTRhMTU3YWU3ZWU2
N2IzMDc0ZDkwOGQ1OWNkNmVlZjhlMWY5YjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvTGF5ZXJSZW5kZXJlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9MYXllclJlbmRlcmVyLmNwcApA
QCAtMzMxLDggKzMzMSw5IEBAIHZvaWQgTGF5ZXJSZW5kZXJlcjo6Y29tcG9zaXRlTGF5ZXJzKGNv
bnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBtYXRyaXgsIExheWVyQ29tCiAgICAgaWYgKCFtYWtl
Q29udGV4dEN1cnJlbnQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgLy8gSWYgc29tZSBsYXll
cnMgc2hvdWxkIGJlIGRyYXdlZCBvbiB0ZW1wb3Jhcnkgc3VyZmFjZXMsIHdlIHNob3VsZCBkbyBp
dCBmaXJzdC4KLSAgICBkcmF3TGF5ZXJzT25TdXJmYWNlcyhzdXJmYWNlTGF5ZXJzKTsKKyAgICAv
LyBJZiBzb21lIGxheWVycyBzaG91bGQgYmUgZHJhd24gb24gdGVtcG9yYXJ5IHN1cmZhY2VzLCB3
ZSBzaG91bGQgZG8gaXQgZmlyc3QuCisgICAgaWYgKCFzdXJmYWNlTGF5ZXJzLmlzRW1wdHkoKSkK
KyAgICAgICAgZHJhd0xheWVyc09uU3VyZmFjZXMoc3VyZmFjZUxheWVycyk7CiAKICAgICAvLyBE
b24ndCByZW5kZXIgdGhlIHJvb3QgbGF5ZXIsIHRoZSBCbGFja0JlcnJ5IHBvcnQgdXNlcyB0aGUg
QmFja2luZ1N0b3JlIHRvIGRyYXcgdGhlCiAgICAgLy8gcm9vdCBsYXllci4KQEAgLTM3Miw3ICsz
NzMsNyBAQCB2b2lkIExheWVyUmVuZGVyZXI6OmNvbXBvc2l0ZUxheWVycyhjb25zdCBUcmFuc2Zv
cm1hdGlvbk1hdHJpeCYgbWF0cml4LCBMYXllckNvbQogICAgIHRleHR1cmVDYWNoZUNvbXBvc2l0
aW5nVGhyZWFkKCktPmNvbGxlY3RHYXJiYWdlKCk7CiB9CiAKLXN0YXRpYyBmbG9hdCB0ZXhjb29y
ZHNbNCAqIDJdID0geyAwLCAwLCAgMCwgMSwgIDEsIDEsICAxLCAwIH07CitzdGF0aWMgZmxvYXQg
dGV4Y29vcmRzWzQgKiAyXSA9IHsgMCwgMCwgIDEsIDAsICAxLCAxLCAgMCwgMSB9OwogCiB2b2lk
IExheWVyUmVuZGVyZXI6OmNvbXBvc2l0ZUJ1ZmZlcihjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJp
eCYgdHJhbnNmb3JtLCBjb25zdCBGbG9hdFJlY3QmIGNvbnRlbnRzLCBCbGFja0JlcnJ5OjpQbGF0
Zm9ybTo6R3JhcGhpY3M6OkJ1ZmZlciogYnVmZmVyLCBib29sIGNvbnRlbnRzT3BhcXVlLCBmbG9h
dCBvcGFjaXR5KQogewpAQCAtNDY1LDYgKzQ2NiwxMSBAQCBib29sIExheWVyUmVuZGVyZXI6OnVz
ZVN1cmZhY2UoTGF5ZXJSZW5kZXJlclN1cmZhY2UqIHN1cmZhY2UpCiAKIHZvaWQgTGF5ZXJSZW5k
ZXJlcjo6ZHJhd0xheWVyc09uU3VyZmFjZXMoY29uc3QgVmVjdG9yPFJlZlB0cjxMYXllckNvbXBv
c2l0aW5nVGhyZWFkPiA+JiBzdXJmYWNlTGF5ZXJzKQogeworICAgIC8vIE5vcm1hbGx5LCBhbiB1
cHNpZGUtZG93biB0cmFuc2Zvcm0gaXMgdXNlZCwgYXMgaXMgdGhlIEdMIGN1c3RvbS4gSG93ZXZl
ciwgd2hlbiBkcmF3aW5nCisgICAgLy8gbGF5ZXJzIHRvIHN1cmZhY2VzLCBhIHJpZ2h0LXNpZGUt
dXAgdHJhbnNmb3JtIGlzIHVzZWQsIHNvIHdlIG5lZWQgdG8gc3dpdGNoIHRoZSB3aW5kaW5nIG9y
ZGVyCisgICAgLy8gZm9yIGN1bGxpbmcuCisgICAgZ2xGcm9udEZhY2UoR0xfQ0NXKTsKKwogICAg
IGZvciAoaW50IGkgPSBzdXJmYWNlTGF5ZXJzLnNpemUoKSAtIDE7IGkgPj0gMDsgaS0tKSB7CiAg
ICAgICAgIExheWVyQ29tcG9zaXRpbmdUaHJlYWQqIGxheWVyID0gc3VyZmFjZUxheWVyc1tpXS5n
ZXQoKTsKICAgICAgICAgTGF5ZXJSZW5kZXJlclN1cmZhY2UqIHN1cmZhY2UgPSBsYXllci0+bGF5
ZXJSZW5kZXJlclN1cmZhY2UoKTsKQEAgLTQ5MSwxMyArNDk3LDEzIEBAIHZvaWQgTGF5ZXJSZW5k
ZXJlcjo6ZHJhd0xheWVyc09uU3VyZmFjZXMoY29uc3QgVmVjdG9yPFJlZlB0cjxMYXllckNvbXBv
c2l0aW5nVGhyCiAjZW5kaWYKICAgICB9CiAKLSAgICAvLyBJZiB0aGVyZSBhcmUgbGF5ZXJzIGRy
YXdlZCBvbiBzdXJmYWNlcywgd2UgbmVlZCB0byBzd2l0Y2ggdG8gZGVmYXVsdCBmcmFtZWJ1ZmZl
ci4KKyAgICBnbEZyb250RmFjZShHTF9DVyk7CisKKyAgICAvLyBJZiB0aGVyZSBhcmUgbGF5ZXJz
IGRyYXduIG9uIHN1cmZhY2VzLCB3ZSBuZWVkIHRvIHN3aXRjaCB0byBkZWZhdWx0IGZyYW1lYnVm
ZmVyLgogICAgIC8vIE90aGVyd2lzZSwgd2UganVzdCBuZWVkIHRvIHNldCB2aWV3cG9ydC4KLSAg
ICBpZiAoc3VyZmFjZUxheWVycy5zaXplKCkpIHsKLSAgICAgICAgdXNlU3VyZmFjZSgwKTsKLSAg
ICAgICAgZ2xFbmFibGUoR0xfU0NJU1NPUl9URVNUKTsKLSAgICAgICAgZ2xTY2lzc29yKG1fc2Np
c3NvclJlY3QueCgpLCBtX3NjaXNzb3JSZWN0LnkoKSwgbV9zY2lzc29yUmVjdC53aWR0aCgpLCBt
X3NjaXNzb3JSZWN0LmhlaWdodCgpKTsKLSAgICB9CisgICAgdXNlU3VyZmFjZSgwKTsKKyAgICBn
bEVuYWJsZShHTF9TQ0lTU09SX1RFU1QpOworICAgIGdsU2Npc3NvcihtX3NjaXNzb3JSZWN0Lngo
KSwgbV9zY2lzc29yUmVjdC55KCksIG1fc2Npc3NvclJlY3Qud2lkdGgoKSwgbV9zY2lzc29yUmVj
dC5oZWlnaHQoKSk7CiB9CiAKIHZvaWQgTGF5ZXJSZW5kZXJlcjo6YWRkTGF5ZXIoTGF5ZXJDb21w
b3NpdGluZ1RocmVhZCogbGF5ZXIpCkBAIC05MzQsNyArOTQwLDcgQEAgdm9pZCBMYXllclJlbmRl
cmVyOjpjb21wb3NpdGVMYXllcnNSZWN1cnNpdmUoTGF5ZXJDb21wb3NpdGluZ1RocmVhZCogbGF5
ZXIsIGludAogICAgIC8vIERyYXcgdGhlIGRlYnVnIGJvcmRlciBpZiB0aGVyZSBpcyBvbmUuCiAg
ICAgZHJhd0RlYnVnQm9yZGVyKGxheWVyKTsKIAotICAgIC8vIFRoZSB0ZXh0dXJlIGZvciB0aGUg
TGF5ZXJSZW5kZXJlclN1cmZhY2UgY2FuIGJlIHJlbGVhc2VkIGFmdGVyIHRoZSBzdXJmYWNlIHdh
cyBkcmF3ZWQgb24gYW5vdGhlciBzdXJmYWNlLgorICAgIC8vIFRoZSB0ZXh0dXJlIGZvciB0aGUg
TGF5ZXJSZW5kZXJlclN1cmZhY2UgY2FuIGJlIHJlbGVhc2VkIGFmdGVyIHRoZSBzdXJmYWNlIHdh
cyBkcmF3biBvbiBhbm90aGVyIHN1cmZhY2UuCiAgICAgaWYgKGxheWVyQWxyZWFkeU9uU3VyZmFj
ZShsYXllcikpIHsKICAgICAgICAgbGF5ZXItPmxheWVyUmVuZGVyZXJTdXJmYWNlKCktPnJlbGVh
c2VUZXh0dXJlKCk7CiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvTGF5ZXJSZW5kZXJlclN1cmZhY2UuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9MYXllclJlbmRlcmVy
U3VyZmFjZS5jcHAKaW5kZXggM2ZmMDc4YWQ3NWJhODBhYmIwZjljNWEwNTQzYWM0OTRhZjM1ZTA0
Ni4uNWFmNjhkYWNmMmRhMDAyNGM3NDczNTU2MjkxNmE1NjA4ZjJmZTdhYyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9MYXllclJlbmRlcmVy
U3VyZmFjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2ti
ZXJyeS9MYXllclJlbmRlcmVyU3VyZmFjZS5jcHAKQEAgLTQ3LDM1ICs0NywxNyBAQCB2b2lkIExh
eWVyUmVuZGVyZXJTdXJmYWNlOjpzZXRDb250ZW50UmVjdChjb25zdCBJbnRSZWN0JiBjb250ZW50
UmVjdCkKIAogRmxvYXRSZWN0IExheWVyUmVuZGVyZXJTdXJmYWNlOjpkcmF3UmVjdCgpIGNvbnN0
CiB7Ci0gICAgZmxvYXQgYnggPSBtX3NpemUud2lkdGgoKSAvIDIuMDsKLSAgICBmbG9hdCBieSA9
IG1fc2l6ZS5oZWlnaHQoKSAvIDIuMDsKLQogICAgIEZsb2F0UmVjdCByZWN0ID0gdHJhbnNmb3Jt
ZWRCb3VuZHMoKS5ib3VuZGluZ0JveCgpOwogCi0gICAgaWYgKG1fb3duZXJMYXllci0+cmVwbGlj
YUxheWVyKCkpIHsKLSAgICAgICAgRmxvYXRRdWFkIGJvdW5kczsKLSAgICAgICAgYm91bmRzLnNl
dFAxKG1fcmVwbGljYURyYXdUcmFuc2Zvcm0ubWFwUG9pbnQoRmxvYXRQb2ludCgtYngsIC1ieSkp
KTsKLSAgICAgICAgYm91bmRzLnNldFAyKG1fcmVwbGljYURyYXdUcmFuc2Zvcm0ubWFwUG9pbnQo
RmxvYXRQb2ludCgtYngsIGJ5KSkpOwotICAgICAgICBib3VuZHMuc2V0UDMobV9yZXBsaWNhRHJh
d1RyYW5zZm9ybS5tYXBQb2ludChGbG9hdFBvaW50KGJ4LCBieSkpKTsKLSAgICAgICAgYm91bmRz
LnNldFA0KG1fcmVwbGljYURyYXdUcmFuc2Zvcm0ubWFwUG9pbnQoRmxvYXRQb2ludChieCwgLWJ5
KSkpOwotICAgICAgICByZWN0LnVuaXRlKGJvdW5kcy5ib3VuZGluZ0JveCgpKTsKLSAgICB9Cisg
ICAgaWYgKG1fb3duZXJMYXllci0+cmVwbGljYUxheWVyKCkpCisgICAgICAgIHJlY3QudW5pdGUo
bV9yZXBsaWNhRHJhd1RyYW5zZm9ybS5tYXBRdWFkKEZsb2F0UmVjdCgtb3JpZ2luKCksIHNpemUo
KSkpLmJvdW5kaW5nQm94KCkpOwogCiAgICAgcmV0dXJuIHJlY3Q7CiB9CiAKIEZsb2F0UXVhZCBM
YXllclJlbmRlcmVyU3VyZmFjZTo6dHJhbnNmb3JtZWRCb3VuZHMoKSBjb25zdAogewotICAgIGZs
b2F0IGJ4ID0gbV9zaXplLndpZHRoKCkgLyAyLjA7Ci0gICAgZmxvYXQgYnkgPSBtX3NpemUuaGVp
Z2h0KCkgLyAyLjA7Ci0KLSAgICBGbG9hdFF1YWQgYm91bmRzOwotICAgIGJvdW5kcy5zZXRQMSht
X2RyYXdUcmFuc2Zvcm0ubWFwUG9pbnQoRmxvYXRQb2ludCgtYngsIC1ieSkpKTsKLSAgICBib3Vu
ZHMuc2V0UDIobV9kcmF3VHJhbnNmb3JtLm1hcFBvaW50KEZsb2F0UG9pbnQoLWJ4LCBieSkpKTsK
LSAgICBib3VuZHMuc2V0UDMobV9kcmF3VHJhbnNmb3JtLm1hcFBvaW50KEZsb2F0UG9pbnQoYngs
IGJ5KSkpOwotICAgIGJvdW5kcy5zZXRQNChtX2RyYXdUcmFuc2Zvcm0ubWFwUG9pbnQoRmxvYXRQ
b2ludChieCwgLWJ5KSkpOwotCi0gICAgcmV0dXJuIGJvdW5kczsKKyAgICByZXR1cm4gbV9kcmF3
VHJhbnNmb3JtLm1hcFF1YWQoRmxvYXRSZWN0KC1vcmlnaW4oKSwgc2l6ZSgpKSk7CiB9CiAKIGJv
b2wgTGF5ZXJSZW5kZXJlclN1cmZhY2U6OmVuc3VyZVRleHR1cmUoKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9MYXllclJlbmRlcmVyU3Vy
ZmFjZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9MYXll
clJlbmRlcmVyU3VyZmFjZS5oCmluZGV4IGU4OTY5NTUxYTg3NDI4ZGQyYjk1ODc4ZjRhOWU1NDMw
ZTNmNmUwMjkuLjU3ZmY4NjgzYmIwYmU2N2NjNGE3MDI4YTFjNzFhNmExZGFhOWI0ZjkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvTGF5ZXJS
ZW5kZXJlclN1cmZhY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9i
bGFja2JlcnJ5L0xheWVyUmVuZGVyZXJTdXJmYWNlLmgKQEAgLTQ1LDYgKzQ1LDggQEAgcHVibGlj
OgogICAgIEZsb2F0UmVjdCBjbGlwUmVjdCgpIGNvbnN0IHsgcmV0dXJuIG1fY2xpcFJlY3Q7IH0K
ICAgICB2b2lkIHNldENsaXBSZWN0KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCkgeyBtX2NsaXBSZWN0
ID0gcmVjdDsgfQogCisgICAgRmxvYXRQb2ludCBvcmlnaW4oKSBjb25zdCB7IHJldHVybiBGbG9h
dFBvaW50KG1fc2l6ZS53aWR0aCgpIC8gMi4wZiwgbV9zaXplLmhlaWdodCgpIC8gMi4wZik7IH0K
KwogICAgIHZvaWQgc2V0RHJhd1RyYW5zZm9ybShjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYg
bWF0cml4KSB7IG1fZHJhd1RyYW5zZm9ybSA9IG1hdHJpeDsgfQogICAgIGNvbnN0IFRyYW5zZm9y
bWF0aW9uTWF0cml4JiBkcmF3VHJhbnNmb3JtKCkgY29uc3QgeyByZXR1cm4gbV9kcmF3VHJhbnNm
b3JtOyB9CiAgICAgdm9pZCBzZXRSZXBsaWNhRHJhd1RyYW5zZm9ybShjb25zdCBUcmFuc2Zvcm1h
dGlvbk1hdHJpeCYgbWF0cml4KSB7IG1fcmVwbGljYURyYXdUcmFuc2Zvcm0gPSBtYXRyaXg7IH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkv
TWVkaWFQbGF5ZXJQcml2YXRlQmxhY2tCZXJyeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9ibGFja2JlcnJ5L01lZGlhUGxheWVyUHJpdmF0ZUJsYWNrQmVycnkuY3BwCmlu
ZGV4IDhlY2Q4OTIwMmFkZmZiZmNjZDA4ZDAyMzQ4ZjY0MjdjZGMyNTIzMjUuLmI3MGY4Zjk2Yjk2
M2Q2YmVkZjU2NmE3MDE3MTM0MDUxYTg0NjQ4ZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvTWVkaWFQbGF5ZXJQcml2YXRlQmxhY2tCZXJy
eS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9N
ZWRpYVBsYXllclByaXZhdGVCbGFja0JlcnJ5LmNwcApAQCAtODg4LDggKzg4OCw3IEBAIGJvb2wg
TWVkaWFQbGF5ZXJQcml2YXRlOjpzdXBwb3J0c0FjY2VsZXJhdGVkUmVuZGVyaW5nKCkgY29uc3QK
ICNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCiBzdGF0aWMgY29uc3QgZG91YmxlIEJ1
ZmZlcmluZ0FuaW1hdGlvbkRlbGF5ID0gMS4wIC8gMjQ7CiBzdGF0aWMgdW5zaWduZWQqIHNfYnVm
ZmVyaW5nSW1hZ2VEYXRhID0gMDsKLXN0YXRpYyBpbnQgc19idWZmZXJpbmdJbWFnZVdpZHRoID0g
MDsKLXN0YXRpYyBpbnQgc19idWZmZXJpbmdJbWFnZUhlaWdodCA9IDA7CitzdGF0aWMgSW50U2l6
ZSBzX2J1ZmZlcmluZ0ltYWdlU2l6ZTsKIAogUGxhdGZvcm1NZWRpYSBNZWRpYVBsYXllclByaXZh
dGU6OnBsYXRmb3JtTWVkaWEoKSBjb25zdAogewpAQCAtOTE3LDEyICs5MTYsMTEgQEAgc3RhdGlj
IHZvaWQgbG9hZEJ1ZmZlcmluZ0ltYWdlRGF0YSgpCiAgICAgICAgICAgICByZXR1cm47CiAKICAg
ICAgICAgbG9hZGVkID0gdHJ1ZTsKLSAgICAgICAgc19idWZmZXJpbmdJbWFnZVdpZHRoID0gYnVm
ZmVyaW5nSWNvbi0+d2lkdGgoKTsKLSAgICAgICAgc19idWZmZXJpbmdJbWFnZUhlaWdodCA9IGJ1
ZmZlcmluZ0ljb24tPmhlaWdodCgpOworICAgICAgICBzX2J1ZmZlcmluZ0ltYWdlU2l6ZSA9IGJ1
ZmZlcmluZ0ljb24tPnNpemUoKTsKICAgICAgICAgaW50IGJ1ZlNpemUgPSBidWZmZXJpbmdJY29u
LT5kZWNvZGVkU2l6ZSgpOwogICAgICAgICBzX2J1ZmZlcmluZ0ltYWdlRGF0YSA9IHN0YXRpY19j
YXN0PHVuc2lnbmVkKj4obWFsbG9jKGJ1ZlNpemUpKTsKIAotICAgICAgICBuYXRpdmVJbWFnZS0+
cmVhZFBpeGVscyhzX2J1ZmZlcmluZ0ltYWdlRGF0YSwgc19idWZmZXJpbmdJbWFnZVdpZHRoICog
c19idWZmZXJpbmdJbWFnZUhlaWdodCk7CisgICAgICAgIG5hdGl2ZUltYWdlLT5yZWFkUGl4ZWxz
KHNfYnVmZmVyaW5nSW1hZ2VEYXRhLCBzX2J1ZmZlcmluZ0ltYWdlU2l6ZS53aWR0aCgpICogc19i
dWZmZXJpbmdJbWFnZVNpemUuaGVpZ2h0KCkpOwogCiAgICAgICAgIGJ1ZmZlcmluZ0ljb24tPmRl
cmVmKCk7CiAgICAgfQpAQCAtOTg0LDI0ICs5ODIsMTkgQEAgdm9pZCBNZWRpYVBsYXllclByaXZh
dGU6OmRyYXdCdWZmZXJpbmdBbmltYXRpb24oY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIG1h
dHIKICAgICAgICAgZ2xCaW5kVGV4dHVyZShHTF9URVhUVVJFXzJELCB0ZXhJZCk7CiAgICAgICAg
IGlmICghaW5pdGlhbGl6ZWQpIHsKICAgICAgICAgICAgIGluaXRpYWxpemVkID0gdHJ1ZTsKLSAg
ICAgICAgICAgIGdsVGV4SW1hZ2UyRChHTF9URVhUVVJFXzJELCAwLCBHTF9SR0JBLCBzX2J1ZmZl
cmluZ0ltYWdlV2lkdGgsIHNfYnVmZmVyaW5nSW1hZ2VIZWlnaHQsCisgICAgICAgICAgICBnbFRl
eEltYWdlMkQoR0xfVEVYVFVSRV8yRCwgMCwgR0xfUkdCQSwgc19idWZmZXJpbmdJbWFnZVNpemUu
d2lkdGgoKSwgc19idWZmZXJpbmdJbWFnZVNpemUuaGVpZ2h0KCksCiAgICAgICAgICAgICAgICAg
MCwgR0xfUkdCQSwgR0xfVU5TSUdORURfQllURSwgc19idWZmZXJpbmdJbWFnZURhdGEpOwogICAg
ICAgICAgICAgZnJlZShzX2J1ZmZlcmluZ0ltYWdlRGF0YSk7CiAgICAgICAgIH0KIAotICAgICAg
ICBmbG9hdCB0ZXhjb29yZHNbXSA9IHsgMCwgMCwgIDAsIDEsICAxLCAxLCAgMSwgMCB9OwotICAg
ICAgICBGbG9hdFBvaW50IHZlcnRpY2VzWzRdOwotICAgICAgICBmbG9hdCBieCA9IHNfYnVmZmVy
aW5nSW1hZ2VXaWR0aCAvIDIuMDsKLSAgICAgICAgZmxvYXQgYnkgPSBzX2J1ZmZlcmluZ0ltYWdl
SGVpZ2h0IC8gMi4wOwotICAgICAgICB2ZXJ0aWNlc1swXSA9IHJlbmRlck1hdHJpeC5tYXBQb2lu
dChGbG9hdFBvaW50KC1ieCwgLWJ5KSk7Ci0gICAgICAgIHZlcnRpY2VzWzFdID0gcmVuZGVyTWF0
cml4Lm1hcFBvaW50KEZsb2F0UG9pbnQoLWJ4LCBieSkpOwotICAgICAgICB2ZXJ0aWNlc1syXSA9
IHJlbmRlck1hdHJpeC5tYXBQb2ludChGbG9hdFBvaW50KGJ4LCBieSkpOwotICAgICAgICB2ZXJ0
aWNlc1szXSA9IHJlbmRlck1hdHJpeC5tYXBQb2ludChGbG9hdFBvaW50KGJ4LCAtYnkpKTsKKyAg
ICAgICAgZmxvYXQgdGV4Y29vcmRzW10gPSB7IDAsIDAsICAxLCAwLCAgMSwgMSwgIDAsIDEgfTsK
KyAgICAgICAgRmxvYXRSZWN0IGJ1ZmZlcmluZ0ltYWdlUmVjdChGbG9hdFBvaW50KC1zX2J1ZmZl
cmluZ0ltYWdlU2l6ZS53aWR0aCgpIC8gMi4wZiwgLXNfYnVmZmVyaW5nSW1hZ2VTaXplLmhlaWdo
dCgpIC8gMi4wZiksIHNfYnVmZmVyaW5nSW1hZ2VTaXplKTsKKyAgICAgICAgRmxvYXRRdWFkIHRy
YW5zZm9ybWVkUXVhZCA9IHJlbmRlck1hdHJpeC5tYXBRdWFkKGJ1ZmZlcmluZ0ltYWdlUmVjdCk7
CiAKICAgICAgICAgZ2xFbmFibGUoR0xfQkxFTkQpOwogICAgICAgICBnbEJsZW5kRnVuYyhHTF9P
TkUsIEdMX09ORV9NSU5VU19TUkNfQUxQSEEpOwogICAgICAgICBnbFVuaWZvcm0xZihwcm9ncmFt
Lm9wYWNpdHlMb2NhdGlvbigpLCAxLjApOwotICAgICAgICBnbFZlcnRleEF0dHJpYlBvaW50ZXIo
cHJvZ3JhbS5wb3NpdGlvbkxvY2F0aW9uKCksIDIsIEdMX0ZMT0FULCBHTF9GQUxTRSwgMCwgdmVy
dGljZXMpOworICAgICAgICBnbFZlcnRleEF0dHJpYlBvaW50ZXIocHJvZ3JhbS5wb3NpdGlvbkxv
Y2F0aW9uKCksIDIsIEdMX0ZMT0FULCBHTF9GQUxTRSwgMCwgJnRyYW5zZm9ybWVkUXVhZCk7CiAg
ICAgICAgIGdsVmVydGV4QXR0cmliUG9pbnRlcihwcm9ncmFtLnRleENvb3JkTG9jYXRpb24oKSwg
MiwgR0xfRkxPQVQsIEdMX0ZBTFNFLCAwLCB0ZXhjb29yZHMpOwogICAgICAgICBnbERyYXdBcnJh
eXMoR0xfVFJJQU5HTEVfRkFOLCAwLCA0KTsKICAgICB9Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>