<?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>33361</bug_id>
          
          <creation_ts>2010-01-07 20:38:02 -0800</creation_ts>
          <short_desc>WebGL canvas paints background color twice</short_desc>
          <delta_ts>2010-01-08 20:08:21 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Layout and Rendering</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Simon Fraser (smfr)">simon.fraser</reporter>
          <assigned_to name="Simon Fraser (smfr)">simon.fraser</assigned_to>
          <cc>cmarrin</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>178505</commentid>
    <comment_count>0</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2010-01-07 20:38:02 -0800</bug_when>
    <thetext>A WebGL canvas with a CSS background color with alpha will render that background color twice. If the canvas has rounded corners, one layer of background color will show through at the corners.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>178782</commentid>
    <comment_count>1</comment_count>
      <attachid>46157</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2010-01-08 13:48:46 -0800</bug_when>
    <thetext>Created attachment 46157
Testcase</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>178784</commentid>
    <comment_count>2</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2010-01-08 13:50:46 -0800</bug_when>
    <thetext>Reopening, since this will be an issue once the patch in bug 33361 is landed.

The issue is that, for a directly composited WebGL layer, HTMLCanvasElement::paint() may never be called, so the beginPaint()/reshape()/endPaint() calls will never be called on the WebGLRenderingContext.

Now, some style change can happen that requires that the canvas&apos;s layer gets backing store and paints (say, a border is added). Then this method will call WebGLRenderingContext::reshape(), which causes the canvas to be cleared.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>178786</commentid>
    <comment_count>3</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2010-01-08 13:51:41 -0800</bug_when>
    <thetext>That last comment was meant for bug 33392.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>178905</commentid>
    <comment_count>4</comment_count>
      <attachid>46185</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2010-01-08 17:56:49 -0800</bug_when>
    <thetext>Created attachment 46185
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>178919</commentid>
    <comment_count>5</comment_count>
      <attachid>46185</attachid>
    <who name="">mitz</who>
    <bug_when>2010-01-08 18:35:49 -0800</bug_when>
    <thetext>Comment on attachment 46185
Patch

&gt; +        * rendering/RenderLayerBacking.h:
&gt; +        * rendering/RenderLayerBacking.cpp:
&gt; +        (WebCore::is3DCanvas):
&gt; +        (WebCore::RenderLayerBacking::RenderLayerBacking):
&gt; +        (WebCore::RenderLayerBacking::updateGraphicsLayerConfiguration):
&gt; +        (WebCore::RenderLayerBacking::updateGraphicsLayerGeometry):
&gt; +        (WebCore::hasBoxDecorationsOrBackgroundImage):
&gt; +        (WebCore::RenderLayerBacking::isSimpleContainerCompositingLayer):
&gt; +        (WebCore::RenderLayerBacking::hasNonCompositingContent):
&gt; +        (WebCore::RenderLayerBacking::hasPaintedContent):
&gt; +        (WebCore::RenderLayerBacking::isDirectlyCompositedImage):
&gt; +        (WebCore::RenderLayerBacking::rendererContentChanged):

Per-function change log comments are encouraged.

&gt;  static bool hasBoxDecorations(const RenderStyle*);
&gt; -static bool hasBoxDecorationsWithBackgroundImage(const RenderStyle*);
&gt; +static bool hasBoxDecorationsOrBackgroundImage(const RenderStyle*);

The naming here is really unfortunate, because it gives “box decoration” conflicting meanings. In hasBoxDecorations(), a background color counts as “box decoration”, but in hasBoxDecorationsOrBackgroundImage() it doesn’t. Your rename doesn’t make things better, just different.

&gt; +// An image can be directly compositing if it&apos;s the sole content fo the layer, and has no box decorations

Typo: “fo”

&gt; +    // Returns true if this layer has content that needs to be rendered by painting into the backing store.
&gt; +    bool hasPaintedContent() const;

Not a fan of this name (sounds like this function tells you whether the layer has painted its content already), but I don’t have an alternative suggestion.

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>178936</commentid>
    <comment_count>6</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2010-01-08 20:08:21 -0800</bug_when>
    <thetext>Landed in http://trac.webkit.org/changeset/53034 with naming cleanup.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>46157</attachid>
            <date>2010-01-08 13:48:46 -0800</date>
            <delta_ts>2010-01-08 13:48:46 -0800</delta_ts>
            <desc>Testcase</desc>
            <filename>webgl-background-color.html</filename>
            <type>text/html</type>
            <size>5753</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">PCFET0NUWVBFIGh0bWw+CjxodG1sPgogIDxoZWFkPgogICAgPHNjcmlwdCBpZD0idnNoYWRlciIg
dHlwZT0ieC1zaGFkZXIveC12ZXJ0ZXgiPgogICAgICAgIGF0dHJpYnV0ZSB2ZWM0IHZQb3NpdGlv
bjsKICAgICAgICB2b2lkIG1haW4oKQogICAgICAgIHsKICAgICAgICAgICAgZ2xfUG9zaXRpb24g
PSB2UG9zaXRpb247CiAgICAgICAgfQogICAgPC9zY3JpcHQ+CgogICAgPHNjcmlwdCBpZD0iZnNo
YWRlciIgdHlwZT0ieC1zaGFkZXIveC1mcmFnbWVudCI+CiAgICAgICAgdm9pZCBtYWluKCkKICAg
ICAgICB7CiAgICAgICAgICAgIGdsX0ZyYWdDb2xvciA9IHZlYzQoMS4wLCAxLjAsIDEuMCwgMSk7
CiAgICAgICAgfQogICAgPC9zY3JpcHQ+CgogICAgPHNjcmlwdD4KICAgICAgICBmdW5jdGlvbiBp
bml0V2ViR0woY2FudmFzTmFtZSwgdnNoYWRlciwgZnNoYWRlciwgYXR0cmlicywgY2xlYXJDb2xv
ciwgY2xlYXJEZXB0aCkKICAgICAgICB7CiAgICAgICAgICAgIHZhciBjYW52YXMgPSBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZChjYW52YXNOYW1lKTsKICAgICAgICAgICAgdmFyIGdsID0gY2FudmFz
LmdldENvbnRleHQoImV4cGVyaW1lbnRhbC13ZWJnbCIpOwogICAgICAgICAgICBpZiAoIWdsKSB7
CiAgICAgICAgICAgICAgICBhbGVydCgiTm8gV2ViR0wgY29udGV4dCBmb3VuZCIpOwogICAgICAg
ICAgICAgICAgcmV0dXJuIG51bGw7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIC8vIEFkZCBh
IGNvbnNvbGUKICAgICAgICAgICAgZ2wuY29uc29sZSA9ICgiY29uc29sZSIgaW4gd2luZG93KSA/
IHdpbmRvdy5jb25zb2xlIDogeyBsb2c6IGZ1bmN0aW9uKCkgeyB9IH07CgogICAgICAgICAgICAv
LyBjcmVhdGUgb3VyIHNoYWRlcnMKICAgICAgICAgICAgdmFyIHZlcnRleFNoYWRlciA9IGxvYWRT
aGFkZXIoZ2wsIHZzaGFkZXIpOwogICAgICAgICAgICB2YXIgZnJhZ21lbnRTaGFkZXIgPSBsb2Fk
U2hhZGVyKGdsLCBmc2hhZGVyKTsKCiAgICAgICAgICAgIGlmICghdmVydGV4U2hhZGVyIHx8ICFm
cmFnbWVudFNoYWRlcikKICAgICAgICAgICAgICAgIHJldHVybiBudWxsOwoKICAgICAgICAgICAg
Ly8gQ3JlYXRlIHRoZSBwcm9ncmFtIG9iamVjdAogICAgICAgICAgICBnbC5wcm9ncmFtID0gZ2wu
Y3JlYXRlUHJvZ3JhbSgpOwoKICAgICAgICAgICAgaWYgKCFnbC5wcm9ncmFtKQogICAgICAgICAg
ICAgICAgcmV0dXJuIG51bGw7CgogICAgICAgICAgICAvLyBBdHRhY2ggb3VyIHR3byBzaGFkZXJz
IHRvIHRoZSBwcm9ncmFtCiAgICAgICAgICAgIGdsLmF0dGFjaFNoYWRlciAoZ2wucHJvZ3JhbSwg
dmVydGV4U2hhZGVyKTsKICAgICAgICAgICAgZ2wuYXR0YWNoU2hhZGVyIChnbC5wcm9ncmFtLCBm
cmFnbWVudFNoYWRlcik7CgogICAgICAgICAgICAvLyBCaW5kIGF0dHJpYnV0ZXMKICAgICAgICAg
ICAgZm9yICh2YXIgaSBpbiBhdHRyaWJzKQogICAgICAgICAgICAgICAgZ2wuYmluZEF0dHJpYkxv
Y2F0aW9uIChnbC5wcm9ncmFtLCBpLCBhdHRyaWJzW2ldKTsKCiAgICAgICAgICAgIC8vIExpbmsg
dGhlIHByb2dyYW0KICAgICAgICAgICAgZ2wubGlua1Byb2dyYW0oZ2wucHJvZ3JhbSk7CgogICAg
ICAgICAgICAvLyBDaGVjayB0aGUgbGluayBzdGF0dXMKICAgICAgICAgICAgdmFyIGxpbmtlZCA9
IGdsLmdldFByb2dyYW1QYXJhbWV0ZXIoZ2wucHJvZ3JhbSwgZ2wuTElOS19TVEFUVVMpOwogICAg
ICAgICAgICBpZiAoIWxpbmtlZCkgewogICAgICAgICAgICAgICAgLy8gc29tZXRoaW5nIHdlbnQg
d3Jvbmcgd2l0aCB0aGUgbGluawogICAgICAgICAgICAgICAgdmFyIGVycm9yID0gZ2wuZ2V0UHJv
Z3JhbUluZm9Mb2cgKGdsLnByb2dyYW0pOwogICAgICAgICAgICAgICAgZ2wuY29uc29sZS5sb2co
IkVycm9yIGluIHByb2dyYW0gbGlua2luZzoiK2Vycm9yKTsKCiAgICAgICAgICAgICAgICBnbC5k
ZWxldGVQcm9ncmFtKGdsLnByb2dyYW0pOwogICAgICAgICAgICAgICAgZ2wuZGVsZXRlUHJvZ3Jh
bShmcmFnbWVudFNoYWRlcik7CiAgICAgICAgICAgICAgICBnbC5kZWxldGVQcm9ncmFtKHZlcnRl
eFNoYWRlcik7CgogICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7CiAgICAgICAgICAgIH0KCiAg
ICAgICAgICAgIGdsLnVzZVByb2dyYW0oZ2wucHJvZ3JhbSk7CgogICAgICAgICAgICBnbC5jbGVh
ckNvbG9yKGNsZWFyQ29sb3JbMF0sIGNsZWFyQ29sb3JbMV0sIGNsZWFyQ29sb3JbMl0sIGNsZWFy
Q29sb3JbM10pOwogICAgICAgICAgICBnbC5jbGVhckRlcHRoKGNsZWFyRGVwdGgpOwoKICAgICAg
ICAgICAgZ2wuZW5hYmxlKGdsLkRFUFRIX1RFU1QpOwogICAgICAgICAgICBnbC5lbmFibGUoZ2wu
QkxFTkQpOwogICAgICAgICAgICBnbC5ibGVuZEZ1bmMoZ2wuU1JDX0FMUEhBLCBnbC5PTkUpOwoK
ICAgICAgICAgICAgcmV0dXJuIGdsOwogICAgICAgIH0KCiAgICAgICAgLy8KICAgICAgICAvLyBs
b2FkU2hhZGVyCiAgICAgICAgLy8KICAgICAgICAvLyAnc2hhZGVySWQnIGlzIHRoZSBpZCBvZiBh
IDxzY3JpcHQ+IGVsZW1lbnQgY29udGFpbmluZyB0aGUgc2hhZGVyIHNvdXJjZSBzdHJpbmcuCiAg
ICAgICAgLy8gTG9hZCB0aGlzIHNoYWRlciBhbmQgcmV0dXJuIHRoZSBXZWJHTFNoYWRlciBvYmpl
Y3QgY29ycmVzcG9uZGluZyB0byBpdC4KICAgICAgICAvLwogICAgICAgIGZ1bmN0aW9uIGxvYWRT
aGFkZXIoY3R4LCBzaGFkZXJJZCkKICAgICAgICB7CiAgICAgICAgICAgIHZhciBzaGFkZXJTY3Jp
cHQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChzaGFkZXJJZCk7CiAgICAgICAgICAgIGlmICgh
c2hhZGVyU2NyaXB0KSB7CiAgICAgICAgICAgICAgICBjdHguY29uc29sZS5sb2coIioqKiBFcnJv
cjogc2hhZGVyIHNjcmlwdCAnIitzaGFkZXJJZCsiJyBub3QgZm91bmQiKTsKICAgICAgICAgICAg
ICAgIHJldHVybiBudWxsOwogICAgICAgICAgICB9CgogICAgICAgICAgICBpZiAoc2hhZGVyU2Ny
aXB0LnR5cGUgPT0gIngtc2hhZGVyL3gtdmVydGV4IikKICAgICAgICAgICAgICAgIHZhciBzaGFk
ZXJUeXBlID0gY3R4LlZFUlRFWF9TSEFERVI7CiAgICAgICAgICAgIGVsc2UgaWYgKHNoYWRlclNj
cmlwdC50eXBlID09ICJ4LXNoYWRlci94LWZyYWdtZW50IikKICAgICAgICAgICAgICAgIHZhciBz
aGFkZXJUeXBlID0gY3R4LkZSQUdNRU5UX1NIQURFUjsKICAgICAgICAgICAgZWxzZSB7CiAgICAg
ICAgICAgICAgICBjdHguY29uc29sZS5sb2coIioqKiBFcnJvcjogc2hhZGVyIHNjcmlwdCAnIitz
aGFkZXJJZCsiJyBvZiB1bmRlZmluZWQgdHlwZSAnIitzaGFkZXJTY3JpcHQudHlwZSsiJyIpOwog
ICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIC8v
IENyZWF0ZSB0aGUgc2hhZGVyIG9iamVjdAogICAgICAgICAgICB2YXIgc2hhZGVyID0gY3R4LmNy
ZWF0ZVNoYWRlcihzaGFkZXJUeXBlKTsKICAgICAgICAgICAgaWYgKHNoYWRlciA9PSBudWxsKSB7
CiAgICAgICAgICAgICAgICBjdHguY29uc29sZS5sb2coIioqKiBFcnJvcjogdW5hYmxlIHRvIGNy
ZWF0ZSBzaGFkZXIgJyIrc2hhZGVySWQrIiciKTsgICAgICAgCiAgICAgICAgICAgICAgICByZXR1
cm4gbnVsbDsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgLy8gTG9hZCB0aGUgc2hhZGVyIHNv
dXJjZQogICAgICAgICAgICBjdHguc2hhZGVyU291cmNlKHNoYWRlciwgc2hhZGVyU2NyaXB0LnRl
eHQpOwoKICAgICAgICAgICAgLy8gQ29tcGlsZSB0aGUgc2hhZGVyCiAgICAgICAgICAgIGN0eC5j
b21waWxlU2hhZGVyKHNoYWRlcik7CgogICAgICAgICAgICAvLyBDaGVjayB0aGUgY29tcGlsZSBz
dGF0dXMKICAgICAgICAgICAgdmFyIGNvbXBpbGVkID0gY3R4LmdldFNoYWRlclBhcmFtZXRlcihz
aGFkZXIsIGN0eC5DT01QSUxFX1NUQVRVUyk7CiAgICAgICAgICAgIGlmICghY29tcGlsZWQpIHsK
ICAgICAgICAgICAgICAgIC8vIFNvbWV0aGluZyB3ZW50IHdyb25nIGR1cmluZyBjb21waWxhdGlv
bjsgZ2V0IHRoZSBlcnJvcgogICAgICAgICAgICAgICAgdmFyIGVycm9yID0gY3R4LmdldFNoYWRl
ckluZm9Mb2coc2hhZGVyKTsKICAgICAgICAgICAgICAgIGN0eC5jb25zb2xlLmxvZygiKioqIEVy
cm9yIGNvbXBpbGluZyBzaGFkZXIgJyIrc2hhZGVySWQrIic6IitlcnJvcik7CiAgICAgICAgICAg
ICAgICBjdHguZGVsZXRlU2hhZGVyKHNoYWRlcik7CiAgICAgICAgICAgICAgICByZXR1cm4gbnVs
bDsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgcmV0dXJuIHNoYWRlcjsKICAgICAgICB9CiAg
ICAKICAgICAgICBmdW5jdGlvbiBkcmF3Q2FudmFzKGNhbnZhc0lEKQogICAgICAgIHsKICAgICAg
ICAgIHZhciBnbCA9IGluaXRXZWJHTChjYW52YXNJRCwgInZzaGFkZXIiLCAiZnNoYWRlciIsIFsg
InZQb3NpdGlvbiJdLCBbIDAsIDAsIDAsIDAgXSwgMSk7CiAgICAgICAgICBnbC52aWV3cG9ydCgw
LCAwLCAyMDAsIDIwMCk7CiAgICAgICAgICBnbC5jbGVhcihnbC5DT0xPUl9CVUZGRVJfQklUIHwg
Z2wuREVQVEhfQlVGRkVSX0JJVCk7CiAgICAgICAgICAKICAgICAgICAgIHZhciB2ZXJ0ZXhPYmpl
Y3QgPSBnbC5jcmVhdGVCdWZmZXIoKTsKICAgICAgICAgIGdsLmJpbmRCdWZmZXIoZ2wuQVJSQVlf
QlVGRkVSLCB2ZXJ0ZXhPYmplY3QpOwogICAgICAgICAgZ2wuYnVmZmVyRGF0YShnbC5BUlJBWV9C
VUZGRVIsIG5ldyBXZWJHTEZsb2F0QXJyYXkoWyAwLDAuNSwwLCAtMC41LC0wLjUsMCwgMC41LC0w
LjUsMCBdKSwgZ2wuU1RBVElDX0RSQVcpOwogICAgICAgICAgZ2wuZW5hYmxlVmVydGV4QXR0cmli
QXJyYXkoMCk7CiAgICAgICAgICBnbC52ZXJ0ZXhBdHRyaWJQb2ludGVyKDAsIDMsIGdsLkZMT0FU
LCBmYWxzZSwgMCwgMCk7CiAgICAgICAgICAKICAgICAgICAgIGdsLmNsZWFyKGdsLkNPTE9SX0JV
RkZFUl9CSVQgfCBnbC5ERVBUSF9CVUZGRVJfQklUKTsKICAgICAgICAgIGdsLmRyYXdBcnJheXMo
Z2wuVFJJQU5HTEVTLCAwLCAzKTsKICAgICAgICB9CgogICAgICAgIGZ1bmN0aW9uIGluaXQoKQog
ICAgICAgIHsKICAgICAgICAgIHdpbmRvdy5zZXRJbnRlcnZhbChmdW5jdGlvbigpIHsKICAgICAg
ICAgICAgZHJhd0NhbnZhcygnbGVmdCcpOwogICAgICAgICAgfSwgMTAwKTsKCiAgICAgICAgICBk
cmF3Q2FudmFzKCdsZWZ0Jyk7CiAgICAgICB9CiAgICA8L3NjcmlwdD4KICAgIDxzdHlsZSB0eXBl
PSJ0ZXh0L2NzcyIgbWVkaWE9InNjcmVlbiI+CgogICAgICBjYW52YXMgewogICAgICAgIHBvc2l0
aW9uOiBhYnNvbHV0ZTsKICAgICAgICB0b3A6IDIwcHg7CiAgICAgICAgbWFyZ2luOiAyMHB4Owog
ICAgICAgIHdpZHRoOiAyMDBweDsKICAgICAgICBoZWlnaHQ6IDIwMHB4OwogICAgICAgIHBhZGRp
bmc6IDAgMjBweDsKICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDEyOCwgMCwgMTI4LCAw
LjUpOwogICAgICAgIC13ZWJraXQtYm9yZGVyLXJhZGl1czogNTBweDsKICAgICAgICAtbW96LWJv
cmRlci1yYWRpdXM6IDUwcHg7CiAgICAgICAgYm9yZGVyOiAycHggc29saWQgYmxhY2s7CiAgICAg
IH0KICAgICAgCiAgICAgIGNhbnZhczpob3ZlciB7CiAgICAgICAgYm9yZGVyOiAxcHggc29saWQg
Ymx1ZTsKICAgICAgfQogICAgICAKICAgIDwvc3R5bGU+CiAgPC9oZWFkPgogIDxib2R5IG9ubG9h
ZD0iaW5pdCgpIj4KICAgCiAgICA8Y2FudmFzIGlkPSJsZWZ0IiBzdHlsZT0ibGVmdDogMjBweCIg
d2lkdGg9IjIwMCIgaGVpZ2h0PSIyMDAiPjwvY2FudmFzPgogIDwvYm9keT4KPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>46185</attachid>
            <date>2010-01-08 17:56:49 -0800</date>
            <delta_ts>2010-01-08 18:35:49 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>33361_patch.txt</filename>
            <type>text/plain</type>
            <size>27913</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA5NmZhZGVhLi5hMzM2ZDAyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzQgQEAKKzIwMTAtMDEt
MDggIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBsZS5jb20+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2ViR0wgY2FudmFzIHBhaW50cyBi
YWNrZ3JvdW5kIGNvbG9yIHR3aWNlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0zMzM2MQorICAgICAgICAKKyAgICAgICAgTmV3IHRlc3RjYXNlcyBmb3Ig
dmFyaW91cyBraW5kcyBvZiAiZGlyZWN0bHkgY29tcG9zaXRlZCIgZWxlbWVudHM6IGltYWdlcywg
dmlkZW8sIFdlYkdMLAorICAgICAgICB3aXRoIGJhY2tncm91bmQgY29sb3JzLgorCisgICAgICAg
ICogY29tcG9zaXRpbmcvaW1hZ2VzL2RpcmVjdC1pbWFnZS1iYWNrZ3JvdW5kLWNvbG9yLmh0bWw6
IEFkZGVkLgorICAgICAgICAqIGNvbXBvc2l0aW5nL3JlZmxlY3Rpb25zL3NpbXBsZS1jb21wb3Np
dGVkLXJlZmxlY3Rpb25zLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGNvbXBvc2l0aW5nL3Jlc291
cmNlcy9hbHBoYS1ncmFkaWVudC1zbWFsbC5tb3Y6IEFkZGVkLgorICAgICAgICAqIGNvbXBvc2l0
aW5nL3Jlc291cmNlcy9hbHBoYS1ncmFkaWVudC1zbWFsbC5wbmc6IEFkZGVkLgorICAgICAgICAq
IGNvbXBvc2l0aW5nL3Jlc291cmNlcy9hbHBoYS1wbmcubW92OiBBZGRlZC4KKyAgICAgICAgKiBj
b21wb3NpdGluZy9yZXNvdXJjZXMvdGhpc3dheXVwLnBuZzogQWRkZWQuCisgICAgICAgICogY29t
cG9zaXRpbmcvdmlkZW8vdmlkZW8tYmFja2dyb3VuZC1jb2xvci5odG1sOiBBZGRlZC4KKyAgICAg
ICAgKiBjb21wb3NpdGluZy93ZWJnbC93ZWJnbC1iYWNrZ3JvdW5kLWNvbG9yLmh0bWw6IEFkZGVk
LgorICAgICAgICAqIHBsYXRmb3JtL21hYy9jb21wb3NpdGluZy9pbWFnZXMvZGlyZWN0LWltYWdl
LWJhY2tncm91bmQtY29sb3ItZXhwZWN0ZWQuY2hlY2tzdW06IEFkZGVkLgorICAgICAgICAqIHBs
YXRmb3JtL21hYy9jb21wb3NpdGluZy9pbWFnZXMvZGlyZWN0LWltYWdlLWJhY2tncm91bmQtY29s
b3ItZXhwZWN0ZWQucG5nOiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvY29tcG9zaXRp
bmcvaW1hZ2VzL2RpcmVjdC1pbWFnZS1iYWNrZ3JvdW5kLWNvbG9yLWV4cGVjdGVkLnR4dDogQWRk
ZWQuCisgICAgICAgICogcGxhdGZvcm0vbWFjL2NvbXBvc2l0aW5nL3JlZmxlY3Rpb25zL3NpbXBs
ZS1jb21wb3NpdGVkLXJlZmxlY3Rpb25zLWV4cGVjdGVkLmNoZWNrc3VtOiBBZGRlZC4KKyAgICAg
ICAgKiBwbGF0Zm9ybS9tYWMvY29tcG9zaXRpbmcvcmVmbGVjdGlvbnMvc2ltcGxlLWNvbXBvc2l0
ZWQtcmVmbGVjdGlvbnMtZXhwZWN0ZWQucG5nOiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9t
YWMvY29tcG9zaXRpbmcvcmVmbGVjdGlvbnMvc2ltcGxlLWNvbXBvc2l0ZWQtcmVmbGVjdGlvbnMt
ZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvY29tcG9zaXRpbmcv
dmlkZW8vdmlkZW8tYmFja2dyb3VuZC1jb2xvci1leHBlY3RlZC5jaGVja3N1bTogQWRkZWQuCisg
ICAgICAgICogcGxhdGZvcm0vbWFjL2NvbXBvc2l0aW5nL3ZpZGVvL3ZpZGVvLWJhY2tncm91bmQt
Y29sb3ItZXhwZWN0ZWQucG5nOiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvY29tcG9z
aXRpbmcvdmlkZW8vdmlkZW8tYmFja2dyb3VuZC1jb2xvci1leHBlY3RlZC50eHQ6IEFkZGVkLgor
ICAgICAgICAqIHBsYXRmb3JtL21hYy9jb21wb3NpdGluZy93ZWJnbC93ZWJnbC1iYWNrZ3JvdW5k
LWNvbG9yLWV4cGVjdGVkLmNoZWNrc3VtOiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMv
Y29tcG9zaXRpbmcvd2ViZ2wvd2ViZ2wtYmFja2dyb3VuZC1jb2xvci1leHBlY3RlZC5wbmc6IEFk
ZGVkLgorICAgICAgICAqIHBsYXRmb3JtL21hYy9jb21wb3NpdGluZy93ZWJnbC93ZWJnbC1iYWNr
Z3JvdW5kLWNvbG9yLWV4cGVjdGVkLnR4dDogQWRkZWQuCisKIDIwMTAtMDEtMDggIENocmlzIEZs
ZWl6YWNoICA8Y2ZsZWl6YWNoQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBFcmlj
IFNlaWRlbC4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2NvbXBvc2l0aW5nL2ltYWdlcy9kaXJl
Y3QtaW1hZ2UtYmFja2dyb3VuZC1jb2xvci5odG1sIGIvTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcv
aW1hZ2VzL2RpcmVjdC1pbWFnZS1iYWNrZ3JvdW5kLWNvbG9yLmh0bWwKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMC4uZDRiYWZjYgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2NvbXBvc2l0aW5nL2ltYWdlcy9kaXJlY3QtaW1hZ2UtYmFja2dyb3VuZC1jb2xvci5odG1s
CkBAIC0wLDAgKzEsMzMgQEAKKzwhRE9DVFlQRT4KKworPGh0bWw+Cis8aGVhZD4KKyAgPHRpdGxl
PkRpcmVjdGx5IGNvbXBvc2l0ZWQgaW1hZ2VzIHdpdGggYmFja2dyb3VuZCBjb2xvcjwvdGl0bGU+
CisgIDxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyIgbWVkaWE9InNjcmVlbiI+CisgICAgYm9keSB7Cisg
ICAgICBvdXRsaW5lOiAxMHB4IHNvbGlkIHRyYW5zcGFyZW50OyAvKiBhZmZlY3RzIGxheWVyIHNp
emVzICovCisgICAgfQorCisgICAgaW1nIHsKKyAgICAgIGRpc3BsYXk6IGJsb2NrOworICAgICAg
bWFyZ2luOiAyMHB4OworICAgICAgaGVpZ2h0OiAxODBweDsKKyAgICAgIHdpZHRoOiAyNjBweDsK
KyAgICAgIHBhZGRpbmc6IDEwcHg7CisgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDAsIDAs
IDEyOCwgMC41KTsKKyAgICB9CisgICAgCisgICAgLmNvbXBvc2l0ZWQgeworICAgICAgLXdlYmtp
dC10cmFuc2Zvcm06IHRyYW5zbGF0ZVooMCk7CisgICAgfQorICA8L3N0eWxlPgorPC9oZWFkPgor
PGJvZHk+CisKKyAgPGltZyBzcmM9Ii4uL3Jlc291cmNlcy9hbHBoYS1ncmFkaWVudC1zbWFsbC5w
bmciPgorICA8aW1nIGNsYXNzPSJjb21wb3NpdGVkIiBzcmM9Ii4uL3Jlc291cmNlcy9hbHBoYS1n
cmFkaWVudC1zbWFsbC5wbmciPgorCisgIDxwPlRvcCBhbmQgYm90dG9tIHNob3VsZCBsb29rIHRo
ZSBzYW1lLjwvcD4KKworPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
Y29tcG9zaXRpbmcvcmVmbGVjdGlvbnMvc2ltcGxlLWNvbXBvc2l0ZWQtcmVmbGVjdGlvbnMuaHRt
bCBiL0xheW91dFRlc3RzL2NvbXBvc2l0aW5nL3JlZmxlY3Rpb25zL3NpbXBsZS1jb21wb3NpdGVk
LXJlZmxlY3Rpb25zLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDAw
ZTE1NwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2NvbXBvc2l0aW5nL3JlZmxlY3Rp
b25zL3NpbXBsZS1jb21wb3NpdGVkLXJlZmxlY3Rpb25zLmh0bWwKQEAgLTAsMCArMSwyOSBAQAor
PCFET0NUWVBFPgorCis8aHRtbD4KKzxoZWFkPgorICA8dGl0bGU+U2ltcGxlIGNvbXBvc2l0ZWQg
cmVmbGVjdGlvbnM8L3RpdGxlPgorICA8c3R5bGUgdHlwZT0idGV4dC9jc3MiIG1lZGlhPSJzY3Jl
ZW4iPgorCisgICAgICBpbWcgeworICAgICAgICBtYXJnaW46IDIwcHg7CisgICAgICB9CisKKyAg
ICAgIC5jb21wb3NpdGluZyB7CisgICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVa
KDApOworICAgICAgfQorCisgICAgICAucmVmbGVjdGVkIHsKKyAgICAgICAgLXdlYmtpdC1ib3gt
cmVmbGVjdDogYmVsb3cgMTBweDsKKyAgICAgIH0KKworICA8L3N0eWxlPgorPC9oZWFkPgorPGJv
ZHk+CisKKyAgPHA+VGVzdGluZyByZWZsZWN0aW9ucyBvbiBkaXJlY3RseSBjb21wb3NpdGVkIGlt
YWdlcy4gTGVmdCBhbmQgcmlnaHQgc2lkZXMgc2hvdWxkIGxvb2sgdGhlIHNhbWUuPC9wPgorICA8
aW1nIGNsYXNzPSJyZWZsZWN0ZWQiIHNyYz0iLi4vcmVzb3VyY2VzL3RoaXN3YXl1cC5wbmciIHdp
ZHRoPSIxODQiIGhlaWdodD0iMTI0Ij4KKyAgPGltZyBjbGFzcz0iY29tcG9zaXRpbmcgcmVmbGVj
dGVkIiBzcmM9Ii4uL3Jlc291cmNlcy90aGlzd2F5dXAucG5nIiB3aWR0aD0iMTg0IiBoZWlnaHQ9
IjEyNCI+CisKKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2NvbXBv
c2l0aW5nL3Jlc291cmNlcy9hbHBoYS1ncmFkaWVudC1zbWFsbC5tb3YgYi9MYXlvdXRUZXN0cy9j
b21wb3NpdGluZy9yZXNvdXJjZXMvYWxwaGEtZ3JhZGllbnQtc21hbGwubW92Cm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFiNDUzYTQKQmluYXJ5IGZpbGVzIC9kZXYvbnVsbCBh
bmQgYi9MYXlvdXRUZXN0cy9jb21wb3NpdGluZy9yZXNvdXJjZXMvYWxwaGEtZ3JhZGllbnQtc21h
bGwubW92IGRpZmZlcgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvcmVzb3Vy
Y2VzL2FscGhhLWdyYWRpZW50LXNtYWxsLnBuZyBiL0xheW91dFRlc3RzL2NvbXBvc2l0aW5nL3Jl
c291cmNlcy9hbHBoYS1ncmFkaWVudC1zbWFsbC5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMC4uYzU0OTQyZgpCaW5hcnkgZmlsZXMgL2Rldi9udWxsIGFuZCBiL0xheW91dFRl
c3RzL2NvbXBvc2l0aW5nL3Jlc291cmNlcy9hbHBoYS1ncmFkaWVudC1zbWFsbC5wbmcgZGlmZmVy
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9jb21wb3NpdGluZy9yZXNvdXJjZXMvYWxwaGEtcG5n
Lm1vdiBiL0xheW91dFRlc3RzL2NvbXBvc2l0aW5nL3Jlc291cmNlcy9hbHBoYS1wbmcubW92Cm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM5N2E5ZGQKQmluYXJ5IGZpbGVzIC9k
ZXYvbnVsbCBhbmQgYi9MYXlvdXRUZXN0cy9jb21wb3NpdGluZy9yZXNvdXJjZXMvYWxwaGEtcG5n
Lm1vdiBkaWZmZXIKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2NvbXBvc2l0aW5nL3Jlc291cmNl
cy90aGlzd2F5dXAucG5nIGIvTGF5b3V0VGVzdHMvY29tcG9zaXRpbmcvcmVzb3VyY2VzL3RoaXN3
YXl1cC5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2Y3MzVmMQpCaW5h
cnkgZmlsZXMgL2Rldi9udWxsIGFuZCBiL0xheW91dFRlc3RzL2NvbXBvc2l0aW5nL3Jlc291cmNl
cy90aGlzd2F5dXAucG5nIGRpZmZlcgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvY29tcG9zaXRp
bmcvdmlkZW8vdmlkZW8tYmFja2dyb3VuZC1jb2xvci5odG1sIGIvTGF5b3V0VGVzdHMvY29tcG9z
aXRpbmcvdmlkZW8vdmlkZW8tYmFja2dyb3VuZC1jb2xvci5odG1sCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAuLjQzZjBhMTkKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9jb21wb3NpdGluZy92aWRlby92aWRlby1iYWNrZ3JvdW5kLWNvbG9yLmh0bWwKQEAgLTAsMCAr
MSw0NiBAQAorPCFET0NUWVBFPgorCis8aHRtbD4KKzxoZWFkPgorICA8dGl0bGU+VmlkZW8gd2l0
aCBiYWNrZ3JvdW5kIGNvbG9yPC90aXRsZT4KKyAgPHN0eWxlIHR5cGU9InRleHQvY3NzIiBtZWRp
YT0ic2NyZWVuIj4KKyAgICBib2R5IHsKKyAgICAgIG91dGxpbmU6IDEwcHggc29saWQgdHJhbnNw
YXJlbnQ7IC8qIGFmZmVjdHMgbGF5ZXIgc2l6ZXMgKi8KKyAgICB9CisgICAgdmlkZW8sIC53cmFw
cGVyIHsKKyAgICAgIGRpc3BsYXk6IGJsb2NrOworICAgICAgbWFyZ2luOiAyMHB4OworICAgICAg
aGVpZ2h0OiAxODBweDsKKyAgICAgIHdpZHRoOiAyNjBweDsKKyAgICAgIGJhY2tncm91bmQtY29s
b3I6IHJnYmEoMCwgMCwgMTI4LCAwLjUpOworICAgIH0KKyAgCisgICAgLndyYXBwZXIgPiBpbWcg
eworICAgICAgcG9zaXRpb246IHJlbGF0aXZlOworICAgICAgbGVmdDogMzBweDsKKyAgICB9Cisg
IDwvc3R5bGU+CisgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBjaGFyc2V0PSJ1dGYt
OCI+CisgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICAgIGxheW91dFRl
c3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKKyAgPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9k
eT4KKworICA8ZGl2IGNsYXNzPSJ3cmFwcGVyIj4KKyAgICA8aW1nIHNyYz0iLi4vcmVzb3VyY2Vz
L2FscGhhLWdyYWRpZW50LXNtYWxsLnBuZyI+CisgIDwvZGl2PgorICA8dmlkZW8gc3JjPSIuLi9y
ZXNvdXJjZXMvYWxwaGEtZ3JhZGllbnQtc21hbGwubW92IiBhdXRvcGxheSBsb29wPjwvdmlkZW8+
CisKKyAgPHA+VG9wIGFuZCBib3R0b20gc2hvdWxkIGxvb2sgdGhlIHNhbWUuPC9wPgorCisgIDxz
Y3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBjaGFyc2V0PSJ1dGYtOCI+CisgICAgdmFyIHZp
ZGVvID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ3ZpZGVvJylbMF07CisgICAgdmlk
ZW8uYWRkRXZlbnRMaXN0ZW5lcignY2FucGxheXRocm91Z2gnLCBmdW5jdGlvbigpIHsKKyAgICAg
IGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgICAgIGxheW91dFRlc3RDb250
cm9sbGVyLm5vdGlmeURvbmUoKTsKKyAgICB9LCBmYWxzZSk7CisgIDwvc2NyaXB0PgorCis8L2Jv
ZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9jb21wb3NpdGluZy93ZWJnbC93
ZWJnbC1iYWNrZ3JvdW5kLWNvbG9yLmh0bWwgYi9MYXlvdXRUZXN0cy9jb21wb3NpdGluZy93ZWJn
bC93ZWJnbC1iYWNrZ3JvdW5kLWNvbG9yLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMC4uM2M2M2EwYgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2NvbXBvc2l0
aW5nL3dlYmdsL3dlYmdsLWJhY2tncm91bmQtY29sb3IuaHRtbApAQCAtMCwwICsxLDY0IEBACis8
IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorICA8aGVhZD4KKyAgICA8c3R5bGUgdHlwZT0idGV4dC9j
c3MiIG1lZGlhPSJzY3JlZW4iPgorICAgICAgYm9keSB7CisgICAgICAgIG91dGxpbmU6IDEwcHgg
c29saWQgdHJhbnNwYXJlbnQ7IC8qIGFmZmVjdHMgbGF5ZXIgc2l6ZXMgKi8KKyAgICAgIH0KKyAg
ICAgIGNhbnZhcyB7CisgICAgICAgIG1hcmdpbjogMjBweDsKKyAgICAgICAgd2lkdGg6IDIwMHB4
OworICAgICAgICBoZWlnaHQ6IDIwMHB4OworICAgICAgICBwYWRkaW5nOiAwIDIwcHg7CisgICAg
ICAgIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMCwgMCwgMTI4LCAwLjUpOworICAgICAgfQorICAg
IAorICAgICAgLmNvbXBhcmUgeworICAgICAgICBtYXJnaW46IDIwcHg7CisgICAgICAgIHdpZHRo
OiAyMDBweDsKKyAgICAgICAgaGVpZ2h0OiAyMDBweDsKKyAgICAgICAgcGFkZGluZzogMCAyMHB4
OworICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDAsIDAsIDEyOCwgMC41KTsKKyAgICAg
IH0KKyAgICA8L3N0eWxlPgorICAgIDxzY3JpcHQ+CisgICAgICAgIGZ1bmN0aW9uIGluaXRXZWJH
TChjYW52YXNOYW1lLCB2c2hhZGVyLCBmc2hhZGVyLCBhdHRyaWJzLCBjbGVhckNvbG9yLCBjbGVh
ckRlcHRoKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgY2FudmFzID0gZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoY2FudmFzTmFtZSk7CisgICAgICAgICAgICB2YXIgZ2wgPSBjYW52YXMuZ2V0
Q29udGV4dCgiZXhwZXJpbWVudGFsLXdlYmdsIik7CisgICAgICAgICAgICBpZiAoIWdsKSB7Cisg
ICAgICAgICAgICAgICAgYWxlcnQoIk5vIFdlYkdMIGNvbnRleHQgZm91bmQiKTsKKyAgICAgICAg
ICAgICAgICByZXR1cm4gbnVsbDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgZ2wuY2xl
YXJDb2xvcihjbGVhckNvbG9yWzBdLCBjbGVhckNvbG9yWzFdLCBjbGVhckNvbG9yWzJdLCBjbGVh
ckNvbG9yWzNdKTsKKyAgICAgICAgICAgIGdsLmNsZWFyRGVwdGgoY2xlYXJEZXB0aCk7CisKKyAg
ICAgICAgICAgIGdsLmVuYWJsZShnbC5ERVBUSF9URVNUKTsKKyAgICAgICAgICAgIGdsLmVuYWJs
ZShnbC5CTEVORCk7CisgICAgICAgICAgICBnbC5ibGVuZEZ1bmMoZ2wuU1JDX0FMUEhBLCBnbC5P
TkUpOworCisgICAgICAgICAgICByZXR1cm4gZ2w7CisgICAgICAgIH0KKworICAgICAgICBmdW5j
dGlvbiBkcmF3Q2FudmFzKGNhbnZhc0lEKQorICAgICAgICB7CisgICAgICAgICAgdmFyIGdsID0g
aW5pdFdlYkdMKGNhbnZhc0lELCAiIiwgIiIsIFtdLCBbIDAsIDAsIDAsIDAgXSwgMSk7CisgICAg
ICAgICAgZ2wudmlld3BvcnQoMCwgMCwgMjAwLCAyMDApOworICAgICAgICAgIGdsLmNsZWFyKGds
LkNPTE9SX0JVRkZFUl9CSVQgfCBnbC5ERVBUSF9CVUZGRVJfQklUKTsKKyAgICAgICAgfQorCisg
ICAgICAgIGZ1bmN0aW9uIGluaXQoKQorICAgICAgICB7CisgICAgICAgICAgZHJhd0NhbnZhcygn
Y2FudmFzJyk7CisgICAgICAgfQorICAgIDwvc2NyaXB0PgorICA8L2hlYWQ+CisgIDxib2R5IG9u
bG9hZD0iaW5pdCgpIj4KKyAgIAorICAgIDxkaXYgY2xhc3M9ImNvbXBhcmUiPjwvZGl2PgorICAg
IDxjYW52YXMgaWQ9ImNhbnZhcyIgc3R5bGU9ImxlZnQ6IDIwcHgiIHdpZHRoPSIyMDAiIGhlaWdo
dD0iMjAwIj48L2NhbnZhcz4KKworICAgIDxwPlRvcCBhbmQgYm90dG9tIHNob3VsZCBsb29rIHRo
ZSBzYW1lLjwvcD4KKyAgPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
cGxhdGZvcm0vbWFjL2NvbXBvc2l0aW5nL2ltYWdlcy9kaXJlY3QtaW1hZ2UtYmFja2dyb3VuZC1j
b2xvci1leHBlY3RlZC5jaGVja3N1bSBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9jb21wb3Np
dGluZy9pbWFnZXMvZGlyZWN0LWltYWdlLWJhY2tncm91bmQtY29sb3ItZXhwZWN0ZWQuY2hlY2tz
dW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzQ0MzUwMwotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9jb21wb3NpdGluZy9pbWFnZXMvZGly
ZWN0LWltYWdlLWJhY2tncm91bmQtY29sb3ItZXhwZWN0ZWQuY2hlY2tzdW0KQEAgLTAsMCArMSBA
QAorZjhjMDBiYzE0MDU2MmNiOWJhN2YzMTVjNjBjYTAwZTQKXCBObyBuZXdsaW5lIGF0IGVuZCBv
ZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvY29tcG9zaXRpbmcv
aW1hZ2VzL2RpcmVjdC1pbWFnZS1iYWNrZ3JvdW5kLWNvbG9yLWV4cGVjdGVkLnBuZyBiL0xheW91
dFRlc3RzL3BsYXRmb3JtL21hYy9jb21wb3NpdGluZy9pbWFnZXMvZGlyZWN0LWltYWdlLWJhY2tn
cm91bmQtY29sb3ItZXhwZWN0ZWQucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAuLmQ4N2MzOGQKQmluYXJ5IGZpbGVzIC9kZXYvbnVsbCBhbmQgYi9MYXlvdXRUZXN0cy9wbGF0
Zm9ybS9tYWMvY29tcG9zaXRpbmcvaW1hZ2VzL2RpcmVjdC1pbWFnZS1iYWNrZ3JvdW5kLWNvbG9y
LWV4cGVjdGVkLnBuZyBkaWZmZXIKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21h
Yy9jb21wb3NpdGluZy9pbWFnZXMvZGlyZWN0LWltYWdlLWJhY2tncm91bmQtY29sb3ItZXhwZWN0
ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2NvbXBvc2l0aW5nL2ltYWdlcy9kaXJl
Y3QtaW1hZ2UtYmFja2dyb3VuZC1jb2xvci1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMC4uODVjZTMwOAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L3BsYXRmb3JtL21hYy9jb21wb3NpdGluZy9pbWFnZXMvZGlyZWN0LWltYWdlLWJhY2tncm91bmQt
Y29sb3ItZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTEgQEAKK2xheWVyIGF0ICgwLDApIHNpemUg
ODAweDYwMAorICBSZW5kZXJWaWV3IGF0ICgwLDApIHNpemUgODAweDYwMAorbGF5ZXIgYXQgKDAs
MCkgc2l6ZSA4MDB4NjAwCisgIFJlbmRlckJsb2NrIHtIVE1MfSBhdCAoMCwwKSBzaXplIDgwMHg2
MDAKKyAgICBSZW5kZXJCb2R5IHtCT0RZfSBhdCAoOCwyMCkgc2l6ZSA3ODR4NTY0CisgICAgICBS
ZW5kZXJJbWFnZSB7SU1HfSBhdCAoMjAsMCkgc2l6ZSAyODB4MjAwIFtiZ2NvbG9yPSMwMDAwODA3
Rl0KKyAgICAgIFJlbmRlckJsb2NrIHtQfSBhdCAoMCw0NDApIHNpemUgNzg0eDE4CisgICAgICAg
IFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMCwwKSBzaXplIDI0MngxOAorICAgICAgICAgIHRleHQg
cnVuIGF0ICgwLDApIHdpZHRoIDI0MjogIlRvcCBhbmQgYm90dG9tIHNob3VsZCBsb29rIHRoZSBz
YW1lLiIKK2xheWVyIGF0ICgyOCwyNDApIHNpemUgMjgweDIwMAorICBSZW5kZXJJbWFnZSB7SU1H
fSBhdCAoMjAsMjIwKSBzaXplIDI4MHgyMDAgW2JnY29sb3I9IzAwMDA4MDdGXQpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2NvbXBvc2l0aW5nL3JlZmxlY3Rpb25zL3NpbXBs
ZS1jb21wb3NpdGVkLXJlZmxlY3Rpb25zLWV4cGVjdGVkLmNoZWNrc3VtIGIvTGF5b3V0VGVzdHMv
cGxhdGZvcm0vbWFjL2NvbXBvc2l0aW5nL3JlZmxlY3Rpb25zL3NpbXBsZS1jb21wb3NpdGVkLXJl
ZmxlY3Rpb25zLWV4cGVjdGVkLmNoZWNrc3VtCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAuLmRiM2JmNjYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9t
YWMvY29tcG9zaXRpbmcvcmVmbGVjdGlvbnMvc2ltcGxlLWNvbXBvc2l0ZWQtcmVmbGVjdGlvbnMt
ZXhwZWN0ZWQuY2hlY2tzdW0KQEAgLTAsMCArMSBAQAorYTI1ZmNmMjA4MGZlMzYzOWEwNWE4ZTJk
ZjdiYmYyNjEKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9wbGF0Zm9ybS9tYWMvY29tcG9zaXRpbmcvcmVmbGVjdGlvbnMvc2ltcGxlLWNvbXBvc2l0
ZWQtcmVmbGVjdGlvbnMtZXhwZWN0ZWQucG5nIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2Nv
bXBvc2l0aW5nL3JlZmxlY3Rpb25zL3NpbXBsZS1jb21wb3NpdGVkLXJlZmxlY3Rpb25zLWV4cGVj
dGVkLnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iOGJiNjBjCkJpbmFy
eSBmaWxlcyAvZGV2L251bGwgYW5kIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2NvbXBvc2l0
aW5nL3JlZmxlY3Rpb25zL3NpbXBsZS1jb21wb3NpdGVkLXJlZmxlY3Rpb25zLWV4cGVjdGVkLnBu
ZyBkaWZmZXIKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9jb21wb3NpdGlu
Zy9yZWZsZWN0aW9ucy9zaW1wbGUtY29tcG9zaXRlZC1yZWZsZWN0aW9ucy1leHBlY3RlZC50eHQg
Yi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvY29tcG9zaXRpbmcvcmVmbGVjdGlvbnMvc2ltcGxl
LWNvbXBvc2l0ZWQtcmVmbGVjdGlvbnMtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAuLmI1NDBkMmIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9w
bGF0Zm9ybS9tYWMvY29tcG9zaXRpbmcvcmVmbGVjdGlvbnMvc2ltcGxlLWNvbXBvc2l0ZWQtcmVm
bGVjdGlvbnMtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTggQEAKK2xheWVyIGF0ICgwLDApIHNp
emUgODAweDYwMAorICBSZW5kZXJWaWV3IGF0ICgwLDApIHNpemUgODAweDYwMAorbGF5ZXIgYXQg
KDAsMCkgc2l6ZSA4MDB4NjAwCisgIFJlbmRlckJsb2NrIHtIVE1MfSBhdCAoMCwwKSBzaXplIDgw
MHg2MDAKKyAgICBSZW5kZXJCb2R5IHtCT0RZfSBhdCAoOCw4KSBzaXplIDc4NHg1ODQKKyAgICAg
IFJlbmRlckJsb2NrIHtQfSBhdCAoMCwwKSBzaXplIDc4NHgxOAorICAgICAgICBSZW5kZXJUZXh0
IHsjdGV4dH0gYXQgKDAsMCkgc2l6ZSA1ODF4MTgKKyAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCww
KSB3aWR0aCA1ODE6ICJUZXN0aW5nIHJlZmxlY3Rpb25zIG9uIGRpcmVjdGx5IGNvbXBvc2l0ZWQg
aW1hZ2VzLiBMZWZ0IGFuZCByaWdodCBzaWRlcyBzaG91bGQgbG9vayB0aGUgc2FtZS4iCisgICAg
ICBSZW5kZXJCbG9jayAoYW5vbnltb3VzKSBhdCAoMCwzNCkgc2l6ZSA3ODR4MTY4CisgICAgICAg
IFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMjI0LDE1MCkgc2l6ZSA0eDE4CisgICAgICAgICAgdGV4
dCBydW4gYXQgKDIyNCwxNTApIHdpZHRoIDQ6ICIgIgorICAgICAgICBSZW5kZXJUZXh0IHsjdGV4
dH0gYXQgKDAsMCkgc2l6ZSAweDAKKyAgICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgwLDAp
IHNpemUgMHgwCisgICAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMCwwKSBzaXplIDB4MAor
bGF5ZXIgYXQgKDI4LDYyKSBzaXplIDE4NHgxMjQKKyAgUmVuZGVySW1hZ2Uge0lNR30gYXQgKDIw
LDIwKSBzaXplIDE4NHgxMjQKK2xheWVyIGF0ICgyNTYsNjIpIHNpemUgMTg0eDEyNAorICBSZW5k
ZXJJbWFnZSB7SU1HfSBhdCAoMjQ4LDIwKSBzaXplIDE4NHgxMjQKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL3BsYXRmb3JtL21hYy9jb21wb3NpdGluZy92aWRlby92aWRlby1iYWNrZ3JvdW5kLWNv
bG9yLWV4cGVjdGVkLmNoZWNrc3VtIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2NvbXBvc2l0
aW5nL3ZpZGVvL3ZpZGVvLWJhY2tncm91bmQtY29sb3ItZXhwZWN0ZWQuY2hlY2tzdW0KbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTM4OWFmMAotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9jb21wb3NpdGluZy92aWRlby92aWRlby1iYWNrZ3Jv
dW5kLWNvbG9yLWV4cGVjdGVkLmNoZWNrc3VtCkBAIC0wLDAgKzEgQEAKK2U2ZTRkOTk1YmI1YmYw
Y2EzZjllMTk1YTMxN2IyZmUzClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2NvbXBvc2l0aW5nL3ZpZGVvL3ZpZGVvLWJhY2tn
cm91bmQtY29sb3ItZXhwZWN0ZWQucG5nIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2NvbXBv
c2l0aW5nL3ZpZGVvL3ZpZGVvLWJhY2tncm91bmQtY29sb3ItZXhwZWN0ZWQucG5nCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE2MGNlNmQKQmluYXJ5IGZpbGVzIC9kZXYvbnVs
bCBhbmQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvY29tcG9zaXRpbmcvdmlkZW8vdmlkZW8t
YmFja2dyb3VuZC1jb2xvci1leHBlY3RlZC5wbmcgZGlmZmVyCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9wbGF0Zm9ybS9tYWMvY29tcG9zaXRpbmcvdmlkZW8vdmlkZW8tYmFja2dyb3VuZC1jb2xv
ci1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvY29tcG9zaXRpbmcvdmlk
ZW8vdmlkZW8tYmFja2dyb3VuZC1jb2xvci1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMC4uMTA1NzNhNgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L3BsYXRmb3JtL21hYy9jb21wb3NpdGluZy92aWRlby92aWRlby1iYWNrZ3JvdW5kLWNvbG9yLWV4
cGVjdGVkLnR4dApAQCAtMCwwICsxLDE0IEBACitsYXllciBhdCAoMCwwKSBzaXplIDgwMHg2MDAK
KyAgUmVuZGVyVmlldyBhdCAoMCwwKSBzaXplIDgwMHg2MDAKK2xheWVyIGF0ICgwLDApIHNpemUg
ODAweDYwMAorICBSZW5kZXJCbG9jayB7SFRNTH0gYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCisgICAg
UmVuZGVyQm9keSB7Qk9EWX0gYXQgKDgsMjApIHNpemUgNzg0eDU2NAorICAgICAgUmVuZGVyQmxv
Y2sge0RJVn0gYXQgKDIwLDApIHNpemUgMjYweDE4MCBbYmdjb2xvcj0jMDAwMDgwN0ZdCisgICAg
ICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMCwwKSBzaXplIDB4MAorICAgICAgUmVuZGVyQmxv
Y2sge1B9IGF0ICgwLDQwMCkgc2l6ZSA3ODR4MTgKKyAgICAgICAgUmVuZGVyVGV4dCB7I3RleHR9
IGF0ICgwLDApIHNpemUgMjQyeDE4CisgICAgICAgICAgdGV4dCBydW4gYXQgKDAsMCkgd2lkdGgg
MjQyOiAiVG9wIGFuZCBib3R0b20gc2hvdWxkIGxvb2sgdGhlIHNhbWUuIgorbGF5ZXIgYXQgKDI4
LDIyMCkgc2l6ZSAyNjB4MTgwCisgIFJlbmRlclZpZGVvIHtWSURFT30gYXQgKDIwLDIwMCkgc2l6
ZSAyNjB4MTgwIFtiZ2NvbG9yPSMwMDAwODA3Rl0KK2xheWVyIGF0ICg1OCwyMCkgc2l6ZSAyMDB4
MTgwCisgIFJlbmRlckltYWdlIHtJTUd9IGF0ICgwLDApIHNpemUgMjAweDE4MApkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2NvbXBvc2l0aW5nL3dlYmdsL3dlYmdsLWJhY2tn
cm91bmQtY29sb3ItZXhwZWN0ZWQuY2hlY2tzdW0gYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMv
Y29tcG9zaXRpbmcvd2ViZ2wvd2ViZ2wtYmFja2dyb3VuZC1jb2xvci1leHBlY3RlZC5jaGVja3N1
bQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kMWQ4Zjg4Ci0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2NvbXBvc2l0aW5nL3dlYmdsL3dlYmds
LWJhY2tncm91bmQtY29sb3ItZXhwZWN0ZWQuY2hlY2tzdW0KQEAgLTAsMCArMSBAQAorNDE4MDM2
YzA4MTQ5MTk2OWU2OTQ0YmUzYTgwMmFkMmEKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvY29tcG9zaXRpbmcvd2ViZ2wvd2Vi
Z2wtYmFja2dyb3VuZC1jb2xvci1leHBlY3RlZC5wbmcgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9t
YWMvY29tcG9zaXRpbmcvd2ViZ2wvd2ViZ2wtYmFja2dyb3VuZC1jb2xvci1leHBlY3RlZC5wbmcK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjI2MDUwMwpCaW5hcnkgZmlsZXMg
L2Rldi9udWxsIGFuZCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9jb21wb3NpdGluZy93ZWJn
bC93ZWJnbC1iYWNrZ3JvdW5kLWNvbG9yLWV4cGVjdGVkLnBuZyBkaWZmZXIKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9jb21wb3NpdGluZy93ZWJnbC93ZWJnbC1iYWNrZ3Jv
dW5kLWNvbG9yLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9jb21wb3Np
dGluZy93ZWJnbC93ZWJnbC1iYWNrZ3JvdW5kLWNvbG9yLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mOGEyZDY2Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2NvbXBvc2l0aW5nL3dlYmdsL3dlYmdsLWJhY2tncm91bmQt
Y29sb3ItZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTMgQEAKK2xheWVyIGF0ICgwLDApIHNpemUg
ODAweDYwMAorICBSZW5kZXJWaWV3IGF0ICgwLDApIHNpemUgODAweDYwMAorbGF5ZXIgYXQgKDAs
MCkgc2l6ZSA4MDB4NTM0CisgIFJlbmRlckJsb2NrIHtIVE1MfSBhdCAoMCwwKSBzaXplIDgwMHg1
MzQKKyAgICBSZW5kZXJCb2R5IHtCT0RZfSBhdCAoOCwyMCkgc2l6ZSA3ODR4NDk4CisgICAgICBS
ZW5kZXJCbG9jayB7RElWfSBhdCAoMjAsMCkgc2l6ZSAyNDB4MjAwIFtiZ2NvbG9yPSMwMDAwODA3
Rl0KKyAgICAgIFJlbmRlckJsb2NrIChhbm9ueW1vdXMpIGF0ICgwLDIyMCkgc2l6ZSA3ODR4MjQ0
CisgICAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMCwwKSBzaXplIDB4MAorICAgICAgUmVu
ZGVyQmxvY2sge1B9IGF0ICgwLDQ4MCkgc2l6ZSA3ODR4MTgKKyAgICAgICAgUmVuZGVyVGV4dCB7
I3RleHR9IGF0ICgwLDApIHNpemUgMjQyeDE4CisgICAgICAgICAgdGV4dCBydW4gYXQgKDAsMCkg
d2lkdGggMjQyOiAiVG9wIGFuZCBib3R0b20gc2hvdWxkIGxvb2sgdGhlIHNhbWUuIgorbGF5ZXIg
YXQgKDI4LDI2MCkgc2l6ZSAyNDB4MjAwCisgIFJlbmRlckhUTUxDYW52YXMge0NBTlZBU30gYXQg
KDIwLDIwKSBzaXplIDI0MHgyMDAgW2JnY29sb3I9IzAwMDA4MDdGXQpkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS9DaGFuZ2VMb2cgYi9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBlYjdhNGMzLi5jOWUwOGJm
IDEwMDY0NAotLS0gYS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9XZWJDb3JlL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDM4IEBACisyMDEwLTAxLTA4ICBTaW1vbiBGcmFzZXIgIDxzaW1vbi5mcmFzZXJA
YXBwbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIFdlYkdMIGNhbnZhcyBwYWludHMgYmFja2dyb3VuZCBjb2xvciB0d2ljZQorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzMzNjEKKyAgICAgICAgCisg
ICAgICAgIENsZWFuIHVwIHNvbWUgbG9naWMgYXJvdW5kICJkaXJlY3RseSBjb21wb3NpdGVkIiBj
b250ZW50OiBzb21lIGltYWdlcywgdmlkZW8sIGFuZCBXZWJHTC4KKworICAgICAgICBXZSBwcmV2
aW91c2x5IHNldCB0aGUgR3JhcGhpY3NMYXllciBiYWNrZ3JvdW5kIGNvbG9yIHRvIHRoZSBDU1Mg
YmFja2dyb3VuZCBjb2xvcgorICAgICAgICBpbiBzb21lIGNhc2VzIHdoZXJlIHRoZSBib3ggaGFz
IG5vIG90aGVyIGRlY29yYXRpb25zLiBIb3dldmVyLCB0aGUgY29udGVudCAKKyAgICAgICAgbGF5
ZXIncyBib3VuZHMgZG8gbm90IGNvcnJlc3BvbmQgd2l0aCB0aGUgYmFja2dyb3VuZCBib3ggaW4g
bWFueSBjYXNlcywKKyAgICAgICAgYW5kIHdlIGNvdWxkIGVuZCB1cCBib3RoIHBhaW50aW5nIHRo
ZSBiYWNrZ3JvdW5kIGNvbG9yLCBhbmQgc2V0dGluZyBpdCBvbiB0aGUgbGF5ZXIuCisgICAgICAg
IAorICAgICAgICBTaW1wbGlmeSB0aGlzIGxvZ2ljIHRvIG5ldmVyIHVzZSBsYXllciBiYWNrZ3Jv
dW5kIGNvbG9ycywgYW5kIHRodXMgc2tpcCBhbGxvY2F0aW5nCisgICAgICAgIGJhY2tpbmcgc3Rv
cmUgb25seSB3aGVuIHRoZSBlbGVtZW50IGhhcyBubyB2aXNpYmxlIGJveCBkZWNvcmF0aW9ucy4K
KworICAgICAgICBUZXN0czogY29tcG9zaXRpbmcvaW1hZ2VzL2RpcmVjdC1pbWFnZS1iYWNrZ3Jv
dW5kLWNvbG9yLmh0bWwKKyAgICAgICAgICAgICAgIGNvbXBvc2l0aW5nL3JlZmxlY3Rpb25zL3Np
bXBsZS1jb21wb3NpdGVkLXJlZmxlY3Rpb25zLmh0bWwKKyAgICAgICAgICAgICAgIGNvbXBvc2l0
aW5nL3ZpZGVvL3ZpZGVvLWJhY2tncm91bmQtY29sb3IuaHRtbAorICAgICAgICAgICAgICAgY29t
cG9zaXRpbmcvd2ViZ2wvd2ViZ2wtYmFja2dyb3VuZC1jb2xvci5odG1sCisKKyAgICAgICAgKiBy
ZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmg6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRl
ckxheWVyQmFja2luZy5jcHA6CisgICAgICAgIChXZWJDb3JlOjppczNEQ2FudmFzKToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQmFja2luZzo6UmVuZGVyTGF5ZXJCYWNraW5nKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQmFja2luZzo6dXBkYXRlR3JhcGhpY3NMYXllckNv
bmZpZ3VyYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJCYWNraW5nOjp1cGRh
dGVHcmFwaGljc0xheWVyR2VvbWV0cnkpOgorICAgICAgICAoV2ViQ29yZTo6aGFzQm94RGVjb3Jh
dGlvbnNPckJhY2tncm91bmRJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllckJh
Y2tpbmc6OmlzU2ltcGxlQ29udGFpbmVyQ29tcG9zaXRpbmdMYXllcik6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJMYXllckJhY2tpbmc6Omhhc05vbkNvbXBvc2l0aW5nQ29udGVudCk6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJMYXllckJhY2tpbmc6Omhhc1BhaW50ZWRDb250ZW50KToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQmFja2luZzo6aXNEaXJlY3RseUNvbXBvc2l0ZWRJ
bWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllckJhY2tpbmc6OnJlbmRlcmVyQ29u
dGVudENoYW5nZWQpOgorCiAyMDEwLTAxLTA4ICBCcmVudCBGdWxnaGFtICA8YmZ1bGdoYW1Ad2Vi
a2l0Lm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBBZGFtIFJvYmVuLgpkaWZmIC0tZ2l0IGEv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcCBiL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckxheWVyQmFja2luZy5jcHAKaW5kZXggZjAyMmQ2Ny4uNTg3YWY3ZCAxMDA2NDQK
LS0tIGEvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcAorKysgYi9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwCkBAIC01OCwxMSArNTgsMTkgQEAg
dXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKIAogc3RhdGljIGJvb2wgaGFzQm9yZGVyT3V0bGlu
ZU9yU2hhZG93KGNvbnN0IFJlbmRlclN0eWxlKik7CiBzdGF0aWMgYm9vbCBoYXNCb3hEZWNvcmF0
aW9ucyhjb25zdCBSZW5kZXJTdHlsZSopOwotc3RhdGljIGJvb2wgaGFzQm94RGVjb3JhdGlvbnNX
aXRoQmFja2dyb3VuZEltYWdlKGNvbnN0IFJlbmRlclN0eWxlKik7CitzdGF0aWMgYm9vbCBoYXNC
b3hEZWNvcmF0aW9uc09yQmFja2dyb3VuZEltYWdlKGNvbnN0IFJlbmRlclN0eWxlKik7CisKK3N0
YXRpYyBpbmxpbmUgYm9vbCBpczNEQ2FudmFzKFJlbmRlck9iamVjdCogcmVuZGVyZXIpCit7Cisj
aWYgRU5BQkxFKDNEX0NBTlZBUykgICAgCisgICAgaWYgKHJlbmRlcmVyLT5pc0NhbnZhcygpKQor
ICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8SFRNTENhbnZhc0VsZW1lbnQqPihyZW5kZXJlci0+
bm9kZSgpKS0+aXMzRCgpOworI2VuZGlmCisgICAgcmV0dXJuIGZhbHNlOworfQogCiBSZW5kZXJM
YXllckJhY2tpbmc6OlJlbmRlckxheWVyQmFja2luZyhSZW5kZXJMYXllciogbGF5ZXIpCiAgICAg
OiBtX293bmluZ0xheWVyKGxheWVyKQotICAgICwgbV9oYXNEaXJlY3RseUNvbXBvc2l0ZWRDb250
ZW50KGZhbHNlKQogICAgICwgbV9hcnRpZmljaWFsbHlJbmZsYXRlZEJvdW5kcyhmYWxzZSkKIHsK
ICAgICBjcmVhdGVHcmFwaGljc0xheWVyKCk7CkBAIC0xODYsMjkgKzE5NCwxNyBAQCBib29sIFJl
bmRlckxheWVyQmFja2luZzo6dXBkYXRlR3JhcGhpY3NMYXllckNvbmZpZ3VyYXRpb24oKQogICAg
IGlmICh1cGRhdGVNYXNrTGF5ZXIobV9vd25pbmdMYXllci0+cmVuZGVyZXIoKS0+aGFzTWFzaygp
KSkKICAgICAgICAgbV9ncmFwaGljc0xheWVyLT5zZXRNYXNrTGF5ZXIobV9tYXNrTGF5ZXIuZ2V0
KCkpOwogCi0gICAgbV9oYXNEaXJlY3RseUNvbXBvc2l0ZWRDb250ZW50ID0gZmFsc2U7Ci0gICAg
aWYgKGNhblVzZURpcmVjdENvbXBvc2l0aW5nKCkpIHsKLSAgICAgICAgaWYgKHJlbmRlcmVyKCkt
PmlzSW1hZ2UoKSkgewotICAgICAgICAgICAgdXBkYXRlSW1hZ2VDb250ZW50cygpOwotICAgICAg
ICAgICAgbV9oYXNEaXJlY3RseUNvbXBvc2l0ZWRDb250ZW50ID0gdHJ1ZTsKLSAgICAgICAgICAg
IG1fZ3JhcGhpY3NMYXllci0+c2V0RHJhd3NDb250ZW50KGZhbHNlKTsKLSAgICAgICAgfQotI2lm
IEVOQUJMRSgzRF9DQU5WQVMpICAgIAotICAgICAgICBlbHNlIGlmIChyZW5kZXJlcigpLT5pc0Nh
bnZhcygpKSB7Ci0gICAgICAgICAgICBIVE1MQ2FudmFzRWxlbWVudCogY2FudmFzID0gc3RhdGlj
X2Nhc3Q8SFRNTENhbnZhc0VsZW1lbnQqPihyZW5kZXJlcigpLT5ub2RlKCkpOwotICAgICAgICAg
ICAgaWYgKGNhbnZhcy0+aXMzRCgpKSB7Ci0gICAgICAgICAgICAgICAgV2ViR0xSZW5kZXJpbmdD
b250ZXh0KiBjb250ZXh0ID0gc3RhdGljX2Nhc3Q8V2ViR0xSZW5kZXJpbmdDb250ZXh0Kj4oY2Fu
dmFzLT5yZW5kZXJpbmdDb250ZXh0KCkpOwotICAgICAgICAgICAgICAgIGlmIChjb250ZXh0LT5n
cmFwaGljc0NvbnRleHQzRCgpLT5wbGF0Zm9ybUdyYXBoaWNzQ29udGV4dDNEKCkpCi0gICAgICAg
ICAgICAgICAgICAgIG1fZ3JhcGhpY3NMYXllci0+c2V0Q29udGVudHNUb0dyYXBoaWNzQ29udGV4
dDNEKGNvbnRleHQtPmdyYXBoaWNzQ29udGV4dDNEKCkpOwotICAgICAgICAgICAgfQotICAgICAg
ICB9Ci0jZW5kaWYKKyAgICBpZiAoaXNEaXJlY3RseUNvbXBvc2l0ZWRJbWFnZSgpKQorICAgICAg
ICB1cGRhdGVJbWFnZUNvbnRlbnRzKCk7CiAKLSAgICAgICAgaWYgKHJlbmRlcmVySGFzQmFja2dy
b3VuZCgpKQotICAgICAgICAgICAgbV9ncmFwaGljc0xheWVyLT5zZXRCYWNrZ3JvdW5kQ29sb3Io
cmVuZGVyZXJCYWNrZ3JvdW5kQ29sb3IoKSk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIG1f
Z3JhcGhpY3NMYXllci0+Y2xlYXJCYWNrZ3JvdW5kQ29sb3IoKTsKKyNpZiBFTkFCTEUoM0RfQ0FO
VkFTKSAgICAKKyAgICBpZiAoaXMzRENhbnZhcyhyZW5kZXJlcigpKSkgeworICAgICAgICBIVE1M
Q2FudmFzRWxlbWVudCogY2FudmFzID0gc3RhdGljX2Nhc3Q8SFRNTENhbnZhc0VsZW1lbnQqPihy
ZW5kZXJlcigpLT5ub2RlKCkpOworICAgICAgICBXZWJHTFJlbmRlcmluZ0NvbnRleHQqIGNvbnRl
eHQgPSBzdGF0aWNfY2FzdDxXZWJHTFJlbmRlcmluZ0NvbnRleHQqPihjYW52YXMtPnJlbmRlcmlu
Z0NvbnRleHQoKSk7CisgICAgICAgIGlmIChjb250ZXh0LT5ncmFwaGljc0NvbnRleHQzRCgpLT5w
bGF0Zm9ybUdyYXBoaWNzQ29udGV4dDNEKCkpCisgICAgICAgICAgICBtX2dyYXBoaWNzTGF5ZXIt
PnNldENvbnRlbnRzVG9HcmFwaGljc0NvbnRleHQzRChjb250ZXh0LT5ncmFwaGljc0NvbnRleHQz
RCgpKTsKICAgICB9CisjZW5kaWYKIAogICAgIHJldHVybiBsYXllckNvbmZpZ0NoYW5nZWQ7CiB9
CkBAIC0zNTEsOCArMzQ3LDcgQEAgdm9pZCBSZW5kZXJMYXllckJhY2tpbmc6OnVwZGF0ZUdyYXBo
aWNzTGF5ZXJHZW9tZXRyeSgpCiAgICAgfQogCiAgICAgbV9ncmFwaGljc0xheWVyLT5zZXRDb250
ZW50c1JlY3QoY29udGVudHNCb3goKSk7Ci0gICAgaWYgKCFtX2hhc0RpcmVjdGx5Q29tcG9zaXRl
ZENvbnRlbnQpCi0gICAgICAgIG1fZ3JhcGhpY3NMYXllci0+c2V0RHJhd3NDb250ZW50KCFpc1Np
bXBsZUNvbnRhaW5lckNvbXBvc2l0aW5nTGF5ZXIoKSAmJiAhcGFpbnRpbmdHb2VzVG9XaW5kb3co
KSAmJiAhbV9hcnRpZmljaWFsbHlJbmZsYXRlZEJvdW5kcyk7CisgICAgbV9ncmFwaGljc0xheWVy
LT5zZXREcmF3c0NvbnRlbnQoaGFzUGFpbnRlZENvbnRlbnQoKSk7CiB9CiAKIHZvaWQgUmVuZGVy
TGF5ZXJCYWNraW5nOjp1cGRhdGVJbnRlcm5hbEhpZXJhcmNoeSgpCkBAIC01MDMsNyArNDk4LDcg
QEAgc3RhdGljIGJvb2wgaGFzQm94RGVjb3JhdGlvbnMoY29uc3QgUmVuZGVyU3R5bGUqIHN0eWxl
KQogICAgIHJldHVybiBoYXNCb3JkZXJPdXRsaW5lT3JTaGFkb3coc3R5bGUpIHx8IHN0eWxlLT5o
YXNCYWNrZ3JvdW5kKCk7CiB9CiAKLXN0YXRpYyBib29sIGhhc0JveERlY29yYXRpb25zV2l0aEJh
Y2tncm91bmRJbWFnZShjb25zdCBSZW5kZXJTdHlsZSogc3R5bGUpCitzdGF0aWMgYm9vbCBoYXNC
b3hEZWNvcmF0aW9uc09yQmFja2dyb3VuZEltYWdlKGNvbnN0IFJlbmRlclN0eWxlKiBzdHlsZSkK
IHsKICAgICByZXR1cm4gaGFzQm9yZGVyT3V0bGluZU9yU2hhZG93KHN0eWxlKSB8fCBzdHlsZS0+
aGFzQmFja2dyb3VuZEltYWdlKCk7CiB9CkBAIC01NjYsMTAgKzU2MSw2IEBAIGJvb2wgUmVuZGVy
TGF5ZXJCYWNraW5nOjppc1NpbXBsZUNvbnRhaW5lckNvbXBvc2l0aW5nTGF5ZXIoKSBjb25zdAog
ICAgIGlmIChoYXNCb3hEZWNvcmF0aW9ucyhzdHlsZSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
IAotICAgIC8vIElmIHdlIGhhdmUgc2Nyb2xsYmFycyBvciBhIHJlc2l6ZXIsIG5lZWQgYmFja2lu
ZyBzdG9yZSB0byBwYWludCB0aGVtIGludG8uCi0gICAgaWYgKG1fb3duaW5nTGF5ZXItPmhhc092
ZXJmbG93Q29udHJvbHMoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIAogICAgIC8vIElm
IHdlIGhhdmUgZ290IHRoaXMgZmFyIGFuZCB0aGUgcmVuZGVyZXIgaGFzIG5vIGNoaWxkcmVuLCB0
aGVuIHdlJ3JlIG9rLgogICAgIGlmICghcmVuZGVyT2JqZWN0LT5maXJzdENoaWxkKCkpCiAgICAg
ICAgIHJldHVybiB0cnVlOwpAQCAtNTg0LDcgKzU3NSw3IEBAIGJvb2wgUmVuZGVyTGF5ZXJCYWNr
aW5nOjppc1NpbXBsZUNvbnRhaW5lckNvbXBvc2l0aW5nTGF5ZXIoKSBjb25zdAogICAgICAgICAK
ICAgICAgICAgLy8gUmVqZWN0IGFueXRoaW5nIHRoYXQgaGFzIGEgYm9yZGVyLCBhIGJvcmRlci1y
YWRpdXMgb3Igb3V0bGluZSwKICAgICAgICAgLy8gb3IgaXMgbm90IGEgc2ltcGxlIGJhY2tncm91
bmQgKG5vIGJhY2tncm91bmQsIG9yIHNvbGlkIGNvbG9yKS4KLSAgICAgICAgaWYgKGhhc0JveERl
Y29yYXRpb25zV2l0aEJhY2tncm91bmRJbWFnZShzdHlsZSkpCisgICAgICAgIGlmIChoYXNCb3hE
ZWNvcmF0aW9uc09yQmFja2dyb3VuZEltYWdlKHN0eWxlKSkKICAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKICAgICAgICAgCiAgICAgICAgIC8vIE5vdyBsb29rIGF0IHRoZSBib2R5J3MgcmVuZGVy
ZXIuCkBAIC01OTUsNyArNTg2LDcgQEAgYm9vbCBSZW5kZXJMYXllckJhY2tpbmc6OmlzU2ltcGxl
Q29udGFpbmVyQ29tcG9zaXRpbmdMYXllcigpIGNvbnN0CiAgICAgICAgIAogICAgICAgICBzdHls
ZSA9IGJvZHlPYmplY3QtPnN0eWxlKCk7CiAgICAgICAgIAotICAgICAgICBpZiAoaGFzQm94RGVj
b3JhdGlvbnNXaXRoQmFja2dyb3VuZEltYWdlKHN0eWxlKSkKKyAgICAgICAgaWYgKGhhc0JveERl
Y29yYXRpb25zT3JCYWNrZ3JvdW5kSW1hZ2Uoc3R5bGUpKQogICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOwogCiAgICAgICAgIC8vIENlY2sgdG8gc2VlIGlmIGFsbCB0aGUgYm9keSdzIGNoaWxkcmVu
IGFyZSBjb21wb3NpdGluZyBsYXllcnMuCkBAIC02MTIsOSArNjAzLDExIEBAIGJvb2wgUmVuZGVy
TGF5ZXJCYWNraW5nOjppc1NpbXBsZUNvbnRhaW5lckNvbXBvc2l0aW5nTGF5ZXIoKSBjb25zdAog
ICAgIHJldHVybiB0cnVlOwogfQogCisvLyBDb25zZXJ2YXRpdmUgdGVzdCBmb3IgaGF2aW5nIG5v
IHJlbmRlcmVkIGNoaWxkcmVuLgogYm9vbCBSZW5kZXJMYXllckJhY2tpbmc6Omhhc05vbkNvbXBv
c2l0aW5nQ29udGVudCgpIGNvbnN0CiB7Ci0gICAgLy8gQ29uc2VydmF0aXZlIHRlc3QgZm9yIGhh
dmluZyBubyByZW5kZXJlZCBjaGlsZHJlbi4KKyAgICBpZiAobV9vd25pbmdMYXllci0+aGFzT3Zl
cmZsb3dDb250cm9scygpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAKICAgICAvLyBTb21l
IEhUTUwgY2FuIGNhdXNlIHdoaXRlc3BhY2UgdGV4dCBub2RlcyB0byBoYXZlIHJlbmRlcmVycywg
bGlrZToKICAgICAvLyA8ZGl2PgpAQCAtNjMxLDcgKzYyNCw2IEBAIGJvb2wgUmVuZGVyTGF5ZXJC
YWNraW5nOjpoYXNOb25Db21wb3NpdGluZ0NvbnRlbnQoKSBjb25zdAogICAgICAgICB9CiAgICAg
fQogCi0gICAgLy8gRklYTUU6IHRlc3QgZm9yIG92ZXJmbG93IGNvbnRyb2xzLgogICAgIGlmICht
X293bmluZ0xheWVyLT5pc1N0YWNraW5nQ29udGV4dCgpKSB7CiAgICAgICAgIC8vIFVzZSB0aGUg
bV9oYXNDb21wb3NpdGluZ0Rlc2NlbmRhbnQgYml0IHRvIG9wdGltaXplPwogICAgICAgICBpZiAo
VmVjdG9yPFJlbmRlckxheWVyKj4qIG5lZ1pPcmRlckxpc3QgPSBtX293bmluZ0xheWVyLT5uZWda
T3JkZXJMaXN0KCkpIHsKQEAgLTY2NSw1MSArNjU3LDQ1IEBAIGJvb2wgUmVuZGVyTGF5ZXJCYWNr
aW5nOjpoYXNOb25Db21wb3NpdGluZ0NvbnRlbnQoKSBjb25zdAogICAgIHJldHVybiBmYWxzZTsK
IH0KIAotLy8gQSBsYXllciBjYW4gdXNlIGRpcmVjdCBjb21wb3NpdGluZyBpZiB0aGUgcmVuZGVy
IGxheWVyJ3Mgb2JqZWN0IGlzIGEgcmVwbGFjZWQgb2JqZWN0IGFuZCBoYXMgbm8gY2hpbGRyZW4u
Ci0vLyBUaGlzIGFsbG93cyB0aGUgR3JhcGhpY3NMYXllciB0byBkaXNwbGF5IHRoZSBSZW5kZXJM
YXllciBjb250ZW50cyBkaXJlY3RseTsgaXQncyB1c2VkIGZvciBpbWFnZXMuCi1ib29sIFJlbmRl
ckxheWVyQmFja2luZzo6Y2FuVXNlRGlyZWN0Q29tcG9zaXRpbmcoKSBjb25zdAorYm9vbCBSZW5k
ZXJMYXllckJhY2tpbmc6Omhhc1BhaW50ZWRDb250ZW50KCkgY29uc3QKIHsKLSAgICBSZW5kZXJP
YmplY3QqIHJlbmRlck9iamVjdCA9IHJlbmRlcmVyKCk7Ci0gICAgCi0gICAgLy8gQ2FudmFzM0Qg
aXMgYWx3YXlzIGRpcmVjdCBjb21wb3NpdGVkCi0jaWYgRU5BQkxFKDNEX0NBTlZBUykgICAgCi0g
ICAgaWYgKHJlbmRlcmVyKCktPmlzQ2FudmFzKCkpIHsKLSAgICAgICAgSFRNTENhbnZhc0VsZW1l
bnQqIGNhbnZhcyA9IHN0YXRpY19jYXN0PEhUTUxDYW52YXNFbGVtZW50Kj4ocmVuZGVyZXIoKS0+
bm9kZSgpKTsKLSAgICAgICAgcmV0dXJuIGNhbnZhcy0+aXMzRCgpOwotICAgIH0KLSNlbmRpZgot
Ci0gICAgLy8gUmVqZWN0IGFueXRoaW5nIHRoYXQgaXNuJ3QgYW4gaW1hZ2UKLSAgICBpZiAoIXJl
bmRlck9iamVjdC0+aXNJbWFnZSgpICYmICFyZW5kZXJPYmplY3QtPmlzVmlkZW8oKSkKKyAgICBp
ZiAoaXNTaW1wbGVDb250YWluZXJDb21wb3NpdGluZ0xheWVyKCkgfHwgcGFpbnRpbmdHb2VzVG9X
aW5kb3coKSB8fCBtX2FydGlmaWNpYWxseUluZmxhdGVkQm91bmRzKQogICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0gICAgCi0gICAgaWYgKHJlbmRlck9iamVjdC0+aGFzTWFzaygpIHx8IHJlbmRlck9i
amVjdC0+aGFzUmVmbGVjdGlvbigpKQorCisgICAgaWYgKGlzRGlyZWN0bHlDb21wb3NpdGVkSW1h
Z2UoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgLy8gVmlkZW8gY2FuIHVzZSBhbiBp
bm5lciBsYXllciBldmVuIGlmIGl0IGhhcyBib3ggZGVjb3JhdGlvbnM7IHdlIGRyYXcgdGhvc2Ug
aW50byBhbm90aGVyIGxheWVyLgotICAgIGlmIChyZW5kZXJPYmplY3QtPmlzVmlkZW8oKSkKLSAg
ICAgICAgcmV0dXJuIHRydWU7Ci0gICAgCi0gICAgLy8gUmVqZWN0IGFueXRoaW5nIHRoYXQgd291
bGQgcmVxdWlyZSB0aGUgaW1hZ2UgdG8gYmUgZHJhd24gdmlhIHRoZSBHcmFwaGljc0NvbnRleHQs
Ci0gICAgLy8gbGlrZSBib3JkZXIsIHNoYWRvd3MgZXRjLiBTb2xpZCBiYWNrZ3JvdW5kIGNvbG9y
IGlzIE9LLgotICAgIHJldHVybiAhaGFzQm94RGVjb3JhdGlvbnNXaXRoQmFja2dyb3VuZEltYWdl
KHJlbmRlck9iamVjdC0+c3R5bGUoKSk7CisgICAgLy8gRklYTUU6IHdlIGNvdWxkIG9wdGltaXpl
IGNhc2VzIHdoZXJlIHRoZSBpbWFnZSwgdmlkZW8gb3IgY2FudmFzIGlzIGtub3duIHRvIGZpbGwg
dGhlIGJvcmRlciBib3ggZW50aXJlbHksCisgICAgLy8gYW5kIHNldCBiYWNrZ3JvdW5kIGNvbG9y
IG9uIHRoZSBsYXllciBpbiB0aGF0IGNhc2UsIGluc3RlYWQgb2YgYWxsb2NhdGluZyBiYWNraW5n
IHN0b3JlIGFuZCBwYWludGluZy4KKyAgICBpZiAocmVuZGVyZXIoKS0+aXNWaWRlbygpIHx8IGlz
M0RDYW52YXMocmVuZGVyZXIoKSkpCisgICAgICAgIHJldHVybiBoYXNCb3hEZWNvcmF0aW9ucyhy
ZW5kZXJlcigpLT5zdHlsZSgpKTsKKworICAgIHJldHVybiB0cnVlOwogfQotICAgIAorCisvLyBB
biBpbWFnZSBjYW4gYmUgZGlyZWN0bHkgY29tcG9zaXRpbmcgaWYgaXQncyB0aGUgc29sZSBjb250
ZW50IGZvIHRoZSBsYXllciwgYW5kIGhhcyBubyBib3ggZGVjb3JhdGlvbnMKKy8vIHRoYXQgcmVx
dWlyZSBwYWludGluZy4gRGlyZWN0IGNvbXBvc2l0aW5nIHNhdmVzIGJhY2tpbmcgc3RvcmUuCiti
b29sIFJlbmRlckxheWVyQmFja2luZzo6aXNEaXJlY3RseUNvbXBvc2l0ZWRJbWFnZSgpIGNvbnN0
Cit7CisgICAgUmVuZGVyT2JqZWN0KiByZW5kZXJPYmplY3QgPSByZW5kZXJlcigpOworICAgIHJl
dHVybiByZW5kZXJPYmplY3QtPmlzSW1hZ2UoKQorICAgICAgICAgICAgJiYgIXJlbmRlck9iamVj
dC0+aGFzTWFzaygpICYmICFyZW5kZXJPYmplY3QtPmhhc1JlZmxlY3Rpb24oKQorICAgICAgICAg
ICAgJiYgIWhhc0JveERlY29yYXRpb25zKHJlbmRlck9iamVjdC0+c3R5bGUoKSk7Cit9CisKIHZv
aWQgUmVuZGVyTGF5ZXJCYWNraW5nOjpyZW5kZXJlckNvbnRlbnRDaGFuZ2VkKCkKIHsKLSAgICBp
ZiAoY2FuVXNlRGlyZWN0Q29tcG9zaXRpbmcoKSkgewotICAgICAgICBpZiAocmVuZGVyZXIoKS0+
aXNJbWFnZSgpKQotICAgICAgICAgICAgdXBkYXRlSW1hZ2VDb250ZW50cygpOwotICAgICAgICBl
bHNlIHsKKyAgICBpZiAoaXNEaXJlY3RseUNvbXBvc2l0ZWRJbWFnZSgpKSB7CisgICAgICAgIHVw
ZGF0ZUltYWdlQ29udGVudHMoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwogI2lmIEVOQUJM
RSgzRF9DQU5WQVMpICAgIAotICAgICAgICAgICAgaWYgKHJlbmRlcmVyKCktPmlzQ2FudmFzKCkp
IHsKLSAgICAgICAgICAgICAgICBIVE1MQ2FudmFzRWxlbWVudCogY2FudmFzID0gc3RhdGljX2Nh
c3Q8SFRNTENhbnZhc0VsZW1lbnQqPihyZW5kZXJlcigpLT5ub2RlKCkpOwotICAgICAgICAgICAg
ICAgIGlmIChjYW52YXMtPmlzM0QoKSkKLSAgICAgICAgICAgICAgICAgICAgbV9ncmFwaGljc0xh
eWVyLT5zZXRHcmFwaGljc0NvbnRleHQzRE5lZWRzRGlzcGxheSgpOwotICAgICAgICAgICAgfQot
I2VuZGlmCi0gICAgICAgIH0KKyAgICBpZiAoaXMzRENhbnZhcyhyZW5kZXJlcigpKSkgeworICAg
ICAgICBtX2dyYXBoaWNzTGF5ZXItPnNldEdyYXBoaWNzQ29udGV4dDNETmVlZHNEaXNwbGF5KCk7
CisgICAgICAgIHJldHVybjsKICAgICB9CisjZW5kaWYKIH0KIAogdm9pZCBSZW5kZXJMYXllckJh
Y2tpbmc6OnVwZGF0ZUltYWdlQ29udGVudHMoKQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyTGF5ZXJCYWNraW5nLmggYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJh
Y2tpbmcuaAppbmRleCBjYjgwMjU1Li5hNTM2Y2M5IDEwMDY0NAotLS0gYS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJMYXllckJhY2tpbmcuaAorKysgYi9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJM
YXllckJhY2tpbmcuaApAQCAtMTQ5LDEyICsxNDksMTIgQEAgcHJpdmF0ZToKICAgICAvLyBSZXR1
cm4gdGhlIG9wYWNpdHkgdmFsdWUgdGhhdCB0aGlzIGxheWVyIHNob3VsZCB1c2UgZm9yIGNvbXBv
c2l0aW5nLgogICAgIGZsb2F0IGNvbXBvc2l0aW5nT3BhY2l0eShmbG9hdCByZW5kZXJlck9wYWNp
dHkpIGNvbnN0OwogICAgIAotICAgIC8vIFJldHVybnMgdHJ1ZSBpZiB0aGlzIFJlbmRlckxheWVy
IG9ubHkgaGFzIGNvbnRlbnQgdGhhdCBjYW4gYmUgcmVuZGVyZWQgZGlyZWN0bHkKLSAgICAvLyBi
eSB0aGUgY29tcG9zaXRpbmcgbGF5ZXIsIHdpdGhvdXQgZHJhd2luZyAoZS5nLiBzb2xpZCBiYWNr
Z3JvdW5kIGNvbG9yKS4KKyAgICAvLyBSZXR1cm5zIHRydWUgaWYgdGhpcyBjb21wb3NpdGluZyBs
YXllciBoYXMgbm8gdmlzaWJsZSBjb250ZW50LgogICAgIGJvb2wgaXNTaW1wbGVDb250YWluZXJD
b21wb3NpdGluZ0xheWVyKCkgY29uc3Q7Ci0gICAgLy8gUmV0dXJucyB0cnVlIGlmIHdlIGNhbiBv
cHRpbWl6ZSB0aGUgUmVuZGVyTGF5ZXIgdG8gZHJhdyB0aGUgcmVwbGFjZWQgY29udGVudAotICAg
IC8vIGRpcmVjdGx5IGludG8gYSBjb21wb3NpdGluZyBidWZmZXIKLSAgICBib29sIGNhblVzZURp
cmVjdENvbXBvc2l0aW5nKCkgY29uc3Q7CisgICAgLy8gUmV0dXJucyB0cnVlIGlmIHRoaXMgbGF5
ZXIgaGFzIGNvbnRlbnQgdGhhdCBuZWVkcyB0byBiZSByZW5kZXJlZCBieSBwYWludGluZyBpbnRv
IHRoZSBiYWNraW5nIHN0b3JlLgorICAgIGJvb2wgaGFzUGFpbnRlZENvbnRlbnQoKSBjb25zdDsK
KyAgICAvLyBSZXR1cm5zIHRydWUgaWYgdGhlIFJlbmRlckxheWVyIGp1c3QgY29udGFpbnMgYW4g
aW1hZ2UgdGhhdCB3ZSBjYW4gY29tcG9zaXRlIGRpcmVjdGx5LgorICAgIGJvb2wgaXNEaXJlY3Rs
eUNvbXBvc2l0ZWRJbWFnZSgpIGNvbnN0OwogICAgIHZvaWQgdXBkYXRlSW1hZ2VDb250ZW50cygp
OwogCiAgICAgYm9vbCByZW5kZXJlckhhc0JhY2tncm91bmQoKSBjb25zdDsKQEAgLTE3OSw3ICsx
NzksNiBAQCBwcml2YXRlOgogCiAgICAgSW50UmVjdCBtX2NvbXBvc2l0ZWRCb3VuZHM7CiAKLSAg
ICBib29sIG1faGFzRGlyZWN0bHlDb21wb3NpdGVkQ29udGVudDsKICAgICBib29sIG1fYXJ0aWZp
Y2lhbGx5SW5mbGF0ZWRCb3VuZHM7ICAgICAgLy8gYm91bmRzIGhhZCB0byBiZSBtYWRlIG5vbi16
ZXJvIHRvIG1ha2UgdHJhbnNmb3JtLW9yaWdpbiB3b3JrCiB9OwogCg==
</data>
<flag name="review"
          id="28406"
          type_id="1"
          status="+"
          setter="mitz"
    />
          </attachment>
      

    </bug>

</bugzilla>