<?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>141729</bug_id>
          
          <creation_ts>2015-02-17 15:05:58 -0800</creation_ts>
          <short_desc>Drawing an SVG image into a canvas using drawImage() ignores globalAlpha.</short_desc>
          <delta_ts>2015-02-23 12:31:27 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>SVG</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>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>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Said Abou-Hallawa">sabouhallawa</reporter>
          <assigned_to name="Said Abou-Hallawa">sabouhallawa</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>dino</cc>
    
    <cc>peavo</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>zalan</cc>
    
    <cc>zimmermann</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1069963</commentid>
    <comment_count>0</comment_count>
      <attachid>246772</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2015-02-17 15:05:58 -0800</bug_when>
    <thetext>Created attachment 246772
Test case

Open the attached test case.  It has a canvas on which two objects are drawn after setting the globalAlpha to 0.2. The first one is a solid red rectangle and the second is an SVG. The SVG simply draws a solid red rectangle also.

Result: The globalAlpha is applied to the rectangle but it is not applied to the SVG.
Expected: Drawing the SVG image should take into account the globalAlpha.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1069966</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2015-02-17 15:06:53 -0800</bug_when>
    <thetext>&lt;rdar://problem/19866858&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1070471</commentid>
    <comment_count>2</comment_count>
      <attachid>246902</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2015-02-19 12:16:01 -0800</bug_when>
    <thetext>Created attachment 246902
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1070497</commentid>
    <comment_count>3</comment_count>
      <attachid>246913</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2015-02-19 13:26:14 -0800</bug_when>
    <thetext>Created attachment 246913
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1070584</commentid>
    <comment_count>4</comment_count>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2015-02-19 18:34:23 -0800</bug_when>
    <thetext>The fix is to force rendering the SVG image to be though a transparent layer if the global alpha is less than 1. Few comments about this fix is necessary:

-- We can check whether the SVG image is drawn on with transparency or not by checking the alpha value set to the graphics context.

-- setAlpha() does not stack the alpha value unless the drawing happens on transparent layer which can be nested as well.

-- The reason for this bug to happen is setAlpha() has to be called before drawing any SVG element since the opacity is part of the element style. So if the graphics context is not set to render on a transparent layer, we end up setting the global alpha of the context and the drawing can be fully opaque if opacity is set to be 1.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1070585</commentid>
    <comment_count>5</comment_count>
      <attachid>246932</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2015-02-19 18:35:12 -0800</bug_when>
    <thetext>Created attachment 246932
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1070593</commentid>
    <comment_count>6</comment_count>
      <attachid>246932</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2015-02-19 18:57:46 -0800</bug_when>
    <thetext>Comment on attachment 246932
Patch

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

&gt; Source/WebCore/svg/graphics/SVGImage.cpp:236
&gt; -        context-&gt;beginTransparencyLayer(1);
&gt; +        context-&gt;beginTransparencyLayer(alpha);

If I understand CG correctly, you don&apos;t need this. Ending the transparency layer should use the context alpha.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1070594</commentid>
    <comment_count>7</comment_count>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2015-02-19 19:06:47 -0800</bug_when>
    <thetext>(In reply to comment #6)
&gt; Comment on attachment 246932 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=246932&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/svg/graphics/SVGImage.cpp:236
&gt; &gt; -        context-&gt;beginTransparencyLayer(1);
&gt; &gt; +        context-&gt;beginTransparencyLayer(alpha);
&gt; 
&gt; If I understand CG correctly, you don&apos;t need this. Ending the transparency
&gt; layer should use the context alpha.

GraphicsContext::beginTransparencyLayer() calls GraphicsContext::beginPlatformTransparencyLayer() which is the following:

void GraphicsContext::beginPlatformTransparencyLayer(float opacity)
{
    if (paintingDisabled())
        return;

    save();

    CGContextRef context = platformContext();
    CGContextSetAlpha(context, opacity);
    CGContextBeginTransparencyLayer(context, 0);
    m_data-&gt;m_userToDeviceTransformKnownToBeIdentity = false;
}

The first thing it does is setting the global alpha. If I keep passing 1 to context-&gt;beginTransparencyLayer(1), the global alpha of the context will change before calling CGContextBeginTransparencyLayer(). The last alpha set to the context will be the one that is used when CGContextEndTransparencyLayer() gets called.

If you want to make beginTransparencyLayer() takes no parameter, this would be a bigger change since this function is used in many places and I can see some callers rely on it to set the global alpha.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1070595</commentid>
    <comment_count>8</comment_count>
      <attachid>246932</attachid>
    <who name="alan">zalan</who>
    <bug_when>2015-02-19 19:27:53 -0800</bug_when>
    <thetext>Comment on attachment 246932
Patch

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

&gt; Source/WebCore/platform/graphics/GraphicsContext.cpp:691
&gt; +void GraphicsContext::setAlpha(float alpha)
&gt; +{
&gt; +    m_state.alpha = alpha;
&gt; +    setPlatformAlpha(alpha);
&gt; +}
&gt; +
&gt; +float GraphicsContext::alpha() const
&gt; +{
&gt; +    return m_state.alpha;
&gt; +}

These could go to the .h

&gt; Source/WebCore/platform/graphics/GraphicsContext.h:126
&gt; +            , alpha(1)

Use in-class member initialization, please.
(and it&apos;d be great If you could fix the rest of the initializers too)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1070913</commentid>
    <comment_count>9</comment_count>
      <attachid>247027</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2015-02-20 18:01:10 -0800</bug_when>
    <thetext>Created attachment 247027
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1070914</commentid>
    <comment_count>10</comment_count>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2015-02-20 18:02:21 -0800</bug_when>
    <thetext>(In reply to comment #8)
&gt; Comment on attachment 246932 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=246932&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/GraphicsContext.cpp:691
&gt; &gt; +void GraphicsContext::setAlpha(float alpha)
&gt; &gt; +{
&gt; &gt; +    m_state.alpha = alpha;
&gt; &gt; +    setPlatformAlpha(alpha);
&gt; &gt; +}
&gt; &gt; +
&gt; &gt; +float GraphicsContext::alpha() const
&gt; &gt; +{
&gt; &gt; +    return m_state.alpha;
&gt; &gt; +}
&gt; 
&gt; These could go to the .h
&gt; 

I moved all the single lines getter/setters to the header file.

&gt; &gt; Source/WebCore/platform/graphics/GraphicsContext.h:126
&gt; &gt; +            , alpha(1)
&gt; 
&gt; Use in-class member initialization, please.
&gt; (and it&apos;d be great If you could fix the rest of the initializers too)

Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1070948</commentid>
    <comment_count>11</comment_count>
      <attachid>247027</attachid>
    <who name="alan">zalan</who>
    <bug_when>2015-02-20 21:21:06 -0800</bug_when>
    <thetext>Comment on attachment 247027
Patch

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

&gt; Source/WebCore/platform/graphics/GraphicsContext.h:138
&gt; +        float strokeThickness = 0;

Please use { 0 }; syntax instead.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1070952</commentid>
    <comment_count>12</comment_count>
      <attachid>247040</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2015-02-20 21:51:17 -0800</bug_when>
    <thetext>Created attachment 247040
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1071287</commentid>
    <comment_count>13</comment_count>
      <attachid>247040</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-02-23 12:31:21 -0800</bug_when>
    <thetext>Comment on attachment 247040
Patch

Clearing flags on attachment: 247040

Committed r180511: &lt;http://trac.webkit.org/changeset/180511&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1071288</commentid>
    <comment_count>14</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-02-23 12:31:27 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>246772</attachid>
            <date>2015-02-17 15:05:58 -0800</date>
            <delta_ts>2015-02-17 15:05:58 -0800</delta_ts>
            <desc>Test case</desc>
            <filename>test060.html</filename>
            <type>text/html</type>
            <size>667</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">PCFET0NUWVBFIGh0bWw+CjxodG1sPgo8Ym9keT4KICA8Y2FudmFzIGlkPSJjYW52YXMiPjwvY2Fu
dmFzPgogIDxzY3JpcHQ+CiAgICB2YXIgY29udGV4dCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCJjYW52YXMiKS5nZXRDb250ZXh0KCIyZCIpOwogICAgY29udGV4dC5nbG9iYWxBbHBoYSA9IC4y
OyAvLyB3ZSBzZXQgZ2xvYmFsQWxwaGEgdG8gYSBsb3cgdmFsdWUKCiAgICBjb250ZXh0LmZpbGxT
dHlsZT0icmVkIjsKICAgIGNvbnRleHQuZmlsbFJlY3QoMCwwLDEwMCwxMDApOwogICAgCiAgICAv
LyBEcmF3IHRoZSB0ZXN0IFNWRyBvbiB0aGUgbGVmdAogICAgdmFyIHN2Z0ltYWdlID0gbmV3IElt
YWdlKCk7CiAgICBzdmdJbWFnZS5vbmxvYWQgPSBmdW5jdGlvbigpIHsKCSAgY29udGV4dC5kcmF3
SW1hZ2Uoc3ZnSW1hZ2UsIDExMCwgMCk7CiAgICB9OwogICAgCiAgICBzdmdJbWFnZS5zcmMgPSAi
ZGF0YTppbWFnZS9zdmcreG1sO3V0ZjgsIFwKICAgICAgPHN2ZyB4bWxucz0naHR0cDovL3d3dy53
My5vcmcvMjAwMC9zdmcnIHdpZHRoPScxMDAnIGhlaWdodD0nMTAwJz4gXAogICAgICAgIDxyZWN0
IHg9JzAnIHk9JzAnIHdpZHRoPScxMDAlJyBoZWlnaHQ9JzEwMCUnIGZpbGw9J3JlZCcvPiBcCiAg
ICAgIDwvc3ZnPiI7CiAgPC9zY3JpcHQ+CjwvYm9keT4KPC9odG1sPg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>246902</attachid>
            <date>2015-02-19 12:16:01 -0800</date>
            <delta_ts>2015-02-19 13:26:11 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-141729-20150219121553.patch</filename>
            <type>text/plain</type>
            <size>5622</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE4MDM1NCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI0IEBACisyMDE1LTAyLTE5ICBTYWlkIEFi
b3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CisKKyAgICAgICAgRHJhd2luZyBh
biBTVkcgaW1hZ2UgaW50byBhIGNhbnZhcyB1c2luZyBkcmF3SW1hZ2UoKSBpZ25vcmVzIGdsb2Jh
bEFscGhhLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTQxNzI5LgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorICAgICAgICAK
KyAgICAgICAgV2hlbiBkcmF3aW5nIGFuIFNWRyBpbWFnZSBhbmQgdGhlIGRyYXdpbmcgY29udGV4
dCBpcyBzZXQgdG8gYmUgdHJhbnNwYXJlbnQsCisgICAgICAgIG1ha2Ugc3VyZSB0aGlzIHRyYW5z
cGFyZW5jeSBpcyBhcHBsaWVkIHRvIHRoZSBjb21wb3NpdGluZyBsYXllci4KKworICAgICAgICBU
ZXN0OiBzdmcvY2FudmFzL2NhbnZhcy1nbG9iYWwtYWxwaGEtc3ZnLmh0bWwKKworICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dENHLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dDo6YWxwaGEpOiBBIGZ1bmN0aW9uIHRvIHJldHVybiB0aGUgYWxwaGEgY2hh
bm5lbAorICAgICAgICB2YWx1ZSBvZiB0aGUgZ3JhcGhpY3MgY29udGV4dC4KKyAgICAgICAgCisg
ICAgICAgICogc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNW
R0ltYWdlOjpkcmF3KTogSWYgdGhlIGRyYXdpbmcgY29udGV4dCBpcyB0cmFuc3BhcmVudCwgYXBw
bHkgaXRzCisgICAgICAgIGFscGhhIGNoYW5uZWwgdmFsdWUgdG8gdGhlIGNvbXBvc2l0aW5nIGxh
eWVyLgorCiAyMDE1LTAyLTE5ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAg
ICAgICAgW2lPU10gRml4IGluZWZmaWNpZW5jaWVzIGluIFJlc291cmNlUmVzcG9uc2U6OnBsYXRm
b3JtTGF6eUluaXQoKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3Jh
cGhpY3NDb250ZXh0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvR3JhcGhpY3NDb250ZXh0LmgJKHJldmlzaW9uIDE4MDI3MykKKysrIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oCSh3b3JraW5nIGNvcHkpCkBA
IC00MDMsNiArNDAzLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2b2lkIHNldE1p
dGVyTGltaXQoZmxvYXQpOwogCiAgICAgICAgIHZvaWQgc2V0QWxwaGEoZmxvYXQpOworICAgICAg
ICBmbG9hdCBhbHBoYSgpIGNvbnN0OwogCiAgICAgICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0
Q29tcG9zaXRlT3BlcmF0aW9uKENvbXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGUgPSBCbGVuZE1v
ZGVOb3JtYWwpOwogICAgICAgICBDb21wb3NpdGVPcGVyYXRvciBjb21wb3NpdGVPcGVyYXRpb24o
KSBjb25zdDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBo
aWNzQ29udGV4dENHLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRDRy5jcHAJKHJldmlzaW9uIDE4MDI3MykKKysrIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dENHLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMTAwMyw2ICsxMDAzLDEzIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0
OjpzZXRBbHBoYShmbG9hdCBhbHAKICAgICBDR0NvbnRleHRTZXRBbHBoYShwbGF0Zm9ybUNvbnRl
eHQoKSwgYWxwaGEpOwogfQogCitmbG9hdCBHcmFwaGljc0NvbnRleHQ6OmFscGhhKCkgY29uc3QK
K3sKKyAgICBpZiAocGFpbnRpbmdEaXNhYmxlZCgpKQorICAgICAgICByZXR1cm4gMTsKKyAgICBy
ZXR1cm4gQ0dDb250ZXh0R2V0QWxwaGEocGxhdGZvcm1Db250ZXh0KCkpOworfQorCiB2b2lkIEdy
YXBoaWNzQ29udGV4dDo6Y2xlYXJSZWN0KGNvbnN0IEZsb2F0UmVjdCYgcikKIHsKICAgICBpZiAo
cGFpbnRpbmdEaXNhYmxlZCgpKQpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NW
R0ltYWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZH
SW1hZ2UuY3BwCShyZXZpc2lvbiAxODAyNzMpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhp
Y3MvU1ZHSW1hZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMjksOSArMjI5LDExIEBAIHZvaWQg
U1ZHSW1hZ2U6OmRyYXcoR3JhcGhpY3NDb250ZXh0KiBjb24KICAgICBHcmFwaGljc0NvbnRleHRT
dGF0ZVNhdmVyIHN0YXRlU2F2ZXIoKmNvbnRleHQpOwogICAgIGNvbnRleHQtPnNldENvbXBvc2l0
ZU9wZXJhdGlvbihjb21wb3NpdGVPcCwgYmxlbmRNb2RlKTsKICAgICBjb250ZXh0LT5jbGlwKGVu
Y2xvc2luZ0ludFJlY3QoZHN0UmVjdCkpOwotICAgIGJvb2wgY29tcG9zaXRpbmdSZXF1aXJlc1Ry
YW5zcGFyZW5jeUxheWVyID0gY29tcG9zaXRlT3AgIT0gQ29tcG9zaXRlU291cmNlT3ZlciB8fCBi
bGVuZE1vZGUgIT0gQmxlbmRNb2RlTm9ybWFsOworCisgICAgZmxvYXQgYWxwaGEgPSBjb250ZXh0
LT5hbHBoYSgpOworICAgIGJvb2wgY29tcG9zaXRpbmdSZXF1aXJlc1RyYW5zcGFyZW5jeUxheWVy
ID0gY29tcG9zaXRlT3AgIT0gQ29tcG9zaXRlU291cmNlT3ZlciB8fCBibGVuZE1vZGUgIT0gQmxl
bmRNb2RlTm9ybWFsIHx8IGFscGhhIDwgMTsKICAgICBpZiAoY29tcG9zaXRpbmdSZXF1aXJlc1Ry
YW5zcGFyZW5jeUxheWVyKSB7Ci0gICAgICAgIGNvbnRleHQtPmJlZ2luVHJhbnNwYXJlbmN5TGF5
ZXIoMSk7CisgICAgICAgIGNvbnRleHQtPmJlZ2luVHJhbnNwYXJlbmN5TGF5ZXIoYWxwaGEpOwog
ICAgICAgICBjb250ZXh0LT5zZXRDb21wb3NpdGVPcGVyYXRpb24oQ29tcG9zaXRlU291cmNlT3Zl
ciwgQmxlbmRNb2RlTm9ybWFsKTsKICAgICB9CiAKSW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxv
Zwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDE4MDM1NCkK
KysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE2IEBA
CisyMDE1LTAyLTE5ICBTYWlkIEFib3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+
CisKKyAgICAgICAgRHJhd2luZyBhbiBTVkcgaW1hZ2UgaW50byBhIGNhbnZhcyB1c2luZyBkcmF3
SW1hZ2UoKSBpZ25vcmVzIGdsb2JhbEFscGhhLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQxNzI5LgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIEFkZCBhIG5ldyB0ZXN0IHdoaWNoIGRyYXdzIGFuIFNWRyBp
bWFnZSBvbiBhIGNhbnZhcyBhZnRlciBzZXR0aW5nIGl0cyAKKyAgICAgICAgZ2xvYmFsQWxwaGEg
dG8gYSB2YWx1ZSBsZXNzIHRoYW4gMS4KKworICAgICAgICAqIHN2Zy9jYW52YXMvY2FudmFzLWds
b2JhbC1hbHBoYS1zdmctZXhwZWN0ZWQuaHRtbDogQWRkZWQuCisgICAgICAgICogc3ZnL2NhbnZh
cy9jYW52YXMtZ2xvYmFsLWFscGhhLXN2Zy5odG1sOiBBZGRlZC4KKwogMjAxNS0wMi0xOSAgQnJl
bnQgRnVsZ2hhbSAgPGJmdWxnaGFtQGFwcGxlLmNvbT4KIAogICAgICAgICBbV2luXSBEaXNhYmxl
IG1lZGlhIHRlc3RzIGR1ZSB0byBib3QgZmFpbHVyZXMuCkluZGV4OiBMYXlvdXRUZXN0cy9zdmcv
Y2FudmFzL2NhbnZhcy1nbG9iYWwtYWxwaGEtc3ZnLWV4cGVjdGVkLmh0bWwKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvc3ZnL2NhbnZhcy9jYW52YXMtZ2xvYmFsLWFscGhhLXN2Zy1leHBlY3Rl
ZC5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvc3ZnL2NhbnZhcy9jYW52YXMtZ2xv
YmFsLWFscGhhLXN2Zy1leHBlY3RlZC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTYg
QEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKyAgPHN0eWxlPgorICAgIGRpdiB7
CisgICAgICB3aWR0aDogMjAwcHg7CisgICAgICBoZWlnaHQ6IDEwMHB4OworICAgICAgYmFja2dy
b3VuZC1jb2xvcjogcmVkOworICAgICAgb3BhY2l0eTogMC4yOworICAgIH0KKyAgPC9zdHlsZT4K
KzwvaGVhZD4KKzxib2R5PgorICA8ZGl2PjwvZGl2PgorPC9ib2R5PgorPC9odG1sPgpJbmRleDog
TGF5b3V0VGVzdHMvc3ZnL2NhbnZhcy9jYW52YXMtZ2xvYmFsLWFscGhhLXN2Zy5odG1sCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL3N2Zy9jYW52YXMvY2FudmFzLWdsb2JhbC1hbHBoYS1zdmcu
aHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL3N2Zy9jYW52YXMvY2FudmFzLWdsb2Jh
bC1hbHBoYS1zdmcuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDIzIEBACis8IURPQ1RZ
UEUgaHRtbD4KKzxodG1sPgorPGJvZHk+CisgIDxjYW52YXMgaWQ9ImNhbnZhcyI+PC9jYW52YXM+
CisgIDxzY3JpcHQ+CisgICAgdmFyIGNvbnRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgi
Y2FudmFzIikuZ2V0Q29udGV4dCgiMmQiKTsKKyAgICBjb250ZXh0Lmdsb2JhbEFscGhhID0gMC4y
OworCisgICAgY29udGV4dC5maWxsU3R5bGU9InJlZCI7CisgICAgY29udGV4dC5maWxsUmVjdCgw
LDAsMTAwLDEwMCk7CisKKyAgICB2YXIgc3ZnSW1hZ2UgPSBuZXcgSW1hZ2UoKTsKKyAgICBzdmdJ
bWFnZS5vbmxvYWQgPSBmdW5jdGlvbigpIHsKKwkgIGNvbnRleHQuZHJhd0ltYWdlKHN2Z0ltYWdl
LCAxMDAsIDApOworICAgIH07CisgICAgCisgICAgc3ZnSW1hZ2Uuc3JjID0gImRhdGE6aW1hZ2Uv
c3ZnK3htbDt1dGY4LCBcCisgICAgICA8c3ZnIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8yMDAw
L3N2Zycgd2lkdGg9JzEwMCcgaGVpZ2h0PScxMDAnPiBcCisgICAgICAgIDxyZWN0IHg9JzAnIHk9
JzAnIHdpZHRoPScxMDAlJyBoZWlnaHQ9JzEwMCUnIGZpbGw9J3JlZCcvPiBcCisgICAgICA8L3N2
Zz4iOworICA8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>246913</attachid>
            <date>2015-02-19 13:26:14 -0800</date>
            <delta_ts>2015-02-19 18:35:08 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-141729-20150219132606.patch</filename>
            <type>text/plain</type>
            <size>8404</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE4MDM1OSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM4IEBACisyMDE1LTAyLTE5ICBTYWlkIEFi
b3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CisKKyAgICAgICAgRHJhd2luZyBh
biBTVkcgaW1hZ2UgaW50byBhIGNhbnZhcyB1c2luZyBkcmF3SW1hZ2UoKSBpZ25vcmVzIGdsb2Jh
bEFscGhhLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTQxNzI5LgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFdoZW4gZHJhd2luZyBhbiBTVkcgaW1hZ2UgYW5kIHRoZSBkcmF3aW5nIGNvbnRleHQgaXMgc2V0
IHRvIGJlIHRyYW5zcGFyZW50LAorICAgICAgICBtYWtlIHN1cmUgdGhpcyB0cmFuc3BhcmVuY3kg
aXMgYXBwbGllZCB0byB0aGUgY29tcG9zaXRpbmcgbGF5ZXIuCisKKyAgICAgICAgVGVzdDogc3Zn
L2NhbnZhcy9jYW52YXMtZ2xvYmFsLWFscGhhLXN2Zy5odG1sCisKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0OjpzZXRBbHBoYSk6IE1ha2Ugc2V0QWxwaGEoKSBjYWxscyB0aGUgcGxhdGZvcm0K
KyAgICAgICAgZnVuY3Rpb24gYW5kIHNldHMgJ21fc3RhdGUuYWxwaGEnIHRvIHRoZSBpbnB1dCB2
YWx1ZS4KKyAgICAgICAgCisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmFscGhh
KTogQWRkIGEgbmV3IGZ1bmN0aW9uICdhbHBoYSgpJyB3aGljaAorICAgICAgICByZXR1cm5zIHRo
ZSBhbHBoYSBjaGFubmVsIHZhbHVlLgorICAgICAgICAKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9HcmFwaGljc0NvbnRleHQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dFN0YXRlOjpHcmFwaGljc0NvbnRleHRTdGF0ZSk6IEFkZCBhIG5ldyBtZW1iZXIKKyAgICAgICAg
J2FscGhhJyB0byB0aGUgY29udGV4dCBzdGF0ZSBzaW5jZSB0aGUgZ2V0dGVyIGZ1bmN0aW9uIENH
Q29udGV4dEdldEFscGhhCisgICAgICAgIGlzIGRlZmluZWQgb25seSBpbiBhIHByaXZhdGUgaGVh
ZGVyIGZpbGUuCisgICAgCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3ND
b250ZXh0Q0cuY3BwOiAgICAKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6c2V0
UGxhdGZvcm1BbHBoYSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnNldEFs
cGhhKTogRGVsZXRlZC4KKyAgICAgICAgQ2hhbmdlIHNldEFscGhhKCkgdG8gYmUgc2V0UGxhdGZv
cm1BbHBoYSgpIGluIHRoaXMgZmlsZS4gc2V0QWxwaGEoKSBpcyBub3cgaW4KKyAgICAgICAgR3Jh
cGhpY3NDb250ZXh0LmNwcCB3aGljaCBjYWxscyB0aGUgbmV3IHBsYXRmb3JtIG9uZSBhbmQgc2V0
cyAnbV9zdGF0ZS5hbHBoYScKKyAgICAgICAgYXMgd2VsbC4KKyAgICAKKyAgICAgICAgKiBzdmcv
Z3JhcGhpY3MvU1ZHSW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHSW1hZ2U6OmRyYXcp
OiBJZiB0aGUgZHJhd2luZyBjb250ZXh0IGlzIHRyYW5zcGFyZW50LCBhcHBseSBpdHMKKyAgICAg
ICAgYWxwaGEgY2hhbm5lbCB2YWx1ZSB0byB0aGUgY29tcG9zaXRpbmcgbGF5ZXIuCisKIDIwMTUt
MDItMTkgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBbaU9TXSBG
aXggaW5lZmZpY2llbmNpZXMgaW4gUmVzb3VyY2VSZXNwb25zZTo6cGxhdGZvcm1MYXp5SW5pdCgp
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBo
aWNzQ29udGV4dC5jcHAJKHJldmlzaW9uIDE4MDI3MykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY3OSw2
ICs2NzksMTcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmZpbGxSZWN0V2l0aFJvdW5kZQogfQog
I2VuZGlmCiAKK3ZvaWQgR3JhcGhpY3NDb250ZXh0OjpzZXRBbHBoYShmbG9hdCBhbHBoYSkKK3sK
KyAgICBtX3N0YXRlLmFscGhhID0gYWxwaGE7CisgICAgc2V0UGxhdGZvcm1BbHBoYShhbHBoYSk7
Cit9CisKK2Zsb2F0IEdyYXBoaWNzQ29udGV4dDo6YWxwaGEoKSBjb25zdAoreworICAgIHJldHVy
biBtX3N0YXRlLmFscGhhOworfQorCiB2b2lkIEdyYXBoaWNzQ29udGV4dDo6c2V0Q29tcG9zaXRl
T3BlcmF0aW9uKENvbXBvc2l0ZU9wZXJhdG9yIGNvbXBvc2l0ZU9wZXJhdGlvbiwgQmxlbmRNb2Rl
IGJsZW5kTW9kZSkKIHsKICAgICBtX3N0YXRlLmNvbXBvc2l0ZU9wZXJhdG9yID0gY29tcG9zaXRl
T3BlcmF0aW9uOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhp
Y3NDb250ZXh0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvR3JhcGhpY3NDb250ZXh0LmgJKHJldmlzaW9uIDE4MDI3MykKKysrIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oCSh3b3JraW5nIGNvcHkpCkBAIC0x
MjMsNiArMTIzLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICAgICAgLCBzdHJva2VD
b2xvclNwYWNlKENvbG9yU3BhY2VEZXZpY2VSR0IpCiAgICAgICAgICAgICAsIGZpbGxDb2xvclNw
YWNlKENvbG9yU3BhY2VEZXZpY2VSR0IpCiAgICAgICAgICAgICAsIHNoYWRvd0NvbG9yU3BhY2Uo
Q29sb3JTcGFjZURldmljZVJHQikKKyAgICAgICAgICAgICwgYWxwaGEoMSkKICAgICAgICAgICAg
ICwgY29tcG9zaXRlT3BlcmF0b3IoQ29tcG9zaXRlU291cmNlT3ZlcikKICAgICAgICAgICAgICwg
YmxlbmRNb2RlKEJsZW5kTW9kZU5vcm1hbCkKICAgICAgICAgICAgICwgc2hvdWxkQW50aWFsaWFz
KHRydWUpCkBAIC0xNjMsNiArMTY0LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBD
b2xvclNwYWNlIGZpbGxDb2xvclNwYWNlOwogICAgICAgICBDb2xvclNwYWNlIHNoYWRvd0NvbG9y
U3BhY2U7CiAKKyAgICAgICAgZmxvYXQgYWxwaGE7CiAgICAgICAgIENvbXBvc2l0ZU9wZXJhdG9y
IGNvbXBvc2l0ZU9wZXJhdG9yOwogICAgICAgICBCbGVuZE1vZGUgYmxlbmRNb2RlOwogCkBAIC00
MDMsNiArNDA1LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2b2lkIHNldE1pdGVy
TGltaXQoZmxvYXQpOwogCiAgICAgICAgIHZvaWQgc2V0QWxwaGEoZmxvYXQpOworICAgICAgICBm
bG9hdCBhbHBoYSgpIGNvbnN0OwogCiAgICAgICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0Q29t
cG9zaXRlT3BlcmF0aW9uKENvbXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGUgPSBCbGVuZE1vZGVO
b3JtYWwpOwogICAgICAgICBDb21wb3NpdGVPcGVyYXRvciBjb21wb3NpdGVPcGVyYXRpb24oKSBj
b25zdDsKQEAgLTU0MCw2ICs1NDMsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZv
aWQgc2V0UGxhdGZvcm1TaGFkb3coY29uc3QgRmxvYXRTaXplJiwgZmxvYXQgYmx1ciwgY29uc3Qg
Q29sb3ImLCBDb2xvclNwYWNlKTsKICAgICAgICAgdm9pZCBjbGVhclBsYXRmb3JtU2hhZG93KCk7
CiAKKyAgICAgICAgdm9pZCBzZXRQbGF0Zm9ybUFscGhhKGZsb2F0KTsKICAgICAgICAgdm9pZCBz
ZXRQbGF0Zm9ybUNvbXBvc2l0ZU9wZXJhdGlvbihDb21wb3NpdGVPcGVyYXRvciwgQmxlbmRNb2Rl
ID0gQmxlbmRNb2RlTm9ybWFsKTsKIAogICAgICAgICB2b2lkIGJlZ2luUGxhdGZvcm1UcmFuc3Bh
cmVuY3lMYXllcihmbG9hdCBvcGFjaXR5KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dENHLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRDRy5jcHAJKHJldmlz
aW9uIDE4MDI3MykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBo
aWNzQ29udGV4dENHLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTk2LDEzICs5OTYsNiBAQCB2b2lk
IEdyYXBoaWNzQ29udGV4dDo6c2V0TWl0ZXJMaW1pdChmbG9hCiAgICAgQ0dDb250ZXh0U2V0TWl0
ZXJMaW1pdChwbGF0Zm9ybUNvbnRleHQoKSwgbGltaXQpOwogfQogCi12b2lkIEdyYXBoaWNzQ29u
dGV4dDo6c2V0QWxwaGEoZmxvYXQgYWxwaGEpCi17Ci0gICAgaWYgKHBhaW50aW5nRGlzYWJsZWQo
KSkKLSAgICAgICAgcmV0dXJuOwotICAgIENHQ29udGV4dFNldEFscGhhKHBsYXRmb3JtQ29udGV4
dCgpLCBhbHBoYSk7Ci19Ci0KIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpjbGVhclJlY3QoY29uc3Qg
RmxvYXRSZWN0JiByKQogewogICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkpCkBAIC0xNDgxLDYg
KzE0NzQsMTMgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OnNldFBsYXRmb3JtU2hvdWxkUwogICAg
IENHQ29udGV4dFNldFNob3VsZFNtb290aEZvbnRzKHBsYXRmb3JtQ29udGV4dCgpLCBlbmFibGUp
OwogfQogCit2b2lkIEdyYXBoaWNzQ29udGV4dDo6c2V0UGxhdGZvcm1BbHBoYShmbG9hdCBhbHBo
YSkKK3sKKyAgICBpZiAocGFpbnRpbmdEaXNhYmxlZCgpKQorICAgICAgICByZXR1cm47CisgICAg
Q0dDb250ZXh0U2V0QWxwaGEocGxhdGZvcm1Db250ZXh0KCksIGFscGhhKTsKK30KKwogdm9pZCBH
cmFwaGljc0NvbnRleHQ6OnNldFBsYXRmb3JtQ29tcG9zaXRlT3BlcmF0aW9uKENvbXBvc2l0ZU9w
ZXJhdG9yIG1vZGUsIEJsZW5kTW9kZSBibGVuZE1vZGUpCiB7CiAgICAgaWYgKHBhaW50aW5nRGlz
YWJsZWQoKSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmNwcAko
cmV2aXNpb24gMTgwMjczKQorKysgU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdl
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjI5LDkgKzIyOSwxMSBAQCB2b2lkIFNWR0ltYWdlOjpk
cmF3KEdyYXBoaWNzQ29udGV4dCogY29uCiAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBz
dGF0ZVNhdmVyKCpjb250ZXh0KTsKICAgICBjb250ZXh0LT5zZXRDb21wb3NpdGVPcGVyYXRpb24o
Y29tcG9zaXRlT3AsIGJsZW5kTW9kZSk7CiAgICAgY29udGV4dC0+Y2xpcChlbmNsb3NpbmdJbnRS
ZWN0KGRzdFJlY3QpKTsKLSAgICBib29sIGNvbXBvc2l0aW5nUmVxdWlyZXNUcmFuc3BhcmVuY3lM
YXllciA9IGNvbXBvc2l0ZU9wICE9IENvbXBvc2l0ZVNvdXJjZU92ZXIgfHwgYmxlbmRNb2RlICE9
IEJsZW5kTW9kZU5vcm1hbDsKKworICAgIGZsb2F0IGFscGhhID0gY29udGV4dC0+YWxwaGEoKTsK
KyAgICBib29sIGNvbXBvc2l0aW5nUmVxdWlyZXNUcmFuc3BhcmVuY3lMYXllciA9IGNvbXBvc2l0
ZU9wICE9IENvbXBvc2l0ZVNvdXJjZU92ZXIgfHwgYmxlbmRNb2RlICE9IEJsZW5kTW9kZU5vcm1h
bCB8fCBhbHBoYSA8IDE7CiAgICAgaWYgKGNvbXBvc2l0aW5nUmVxdWlyZXNUcmFuc3BhcmVuY3lM
YXllcikgewotICAgICAgICBjb250ZXh0LT5iZWdpblRyYW5zcGFyZW5jeUxheWVyKDEpOworICAg
ICAgICBjb250ZXh0LT5iZWdpblRyYW5zcGFyZW5jeUxheWVyKGFscGhhKTsKICAgICAgICAgY29u
dGV4dC0+c2V0Q29tcG9zaXRlT3BlcmF0aW9uKENvbXBvc2l0ZVNvdXJjZU92ZXIsIEJsZW5kTW9k
ZU5vcm1hbCk7CiAgICAgfQogCkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAxODAzNTQpCisrKyBMYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNiBAQAorMjAxNS0wMi0x
OSAgU2FpZCBBYm91LUhhbGxhd2EgIDxzYWJvdWhhbGxhd2FAYXBwbGUuY29tPgorCisgICAgICAg
IERyYXdpbmcgYW4gU1ZHIGltYWdlIGludG8gYSBjYW52YXMgdXNpbmcgZHJhd0ltYWdlKCkgaWdu
b3JlcyBnbG9iYWxBbHBoYS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE0MTcyOS4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBBZGQgYSBuZXcgdGVzdCB3aGljaCBkcmF3cyBhbiBTVkcgaW1hZ2Ugb24gYSBj
YW52YXMgYWZ0ZXIgc2V0dGluZyBpdHMgCisgICAgICAgIGdsb2JhbEFscGhhIHRvIGEgdmFsdWUg
bGVzcyB0aGFuIDEuCisKKyAgICAgICAgKiBzdmcvY2FudmFzL2NhbnZhcy1nbG9iYWwtYWxwaGEt
c3ZnLWV4cGVjdGVkLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHN2Zy9jYW52YXMvY2FudmFzLWds
b2JhbC1hbHBoYS1zdmcuaHRtbDogQWRkZWQuCisKIDIwMTUtMDItMTkgIEJyZW50IEZ1bGdoYW0g
IDxiZnVsZ2hhbUBhcHBsZS5jb20+CiAKICAgICAgICAgW1dpbl0gRGlzYWJsZSBtZWRpYSB0ZXN0
cyBkdWUgdG8gYm90IGZhaWx1cmVzLgpJbmRleDogTGF5b3V0VGVzdHMvc3ZnL2NhbnZhcy9jYW52
YXMtZ2xvYmFsLWFscGhhLXN2Zy1leHBlY3RlZC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRl
c3RzL3N2Zy9jYW52YXMvY2FudmFzLWdsb2JhbC1hbHBoYS1zdmctZXhwZWN0ZWQuaHRtbAkocmV2
aXNpb24gMCkKKysrIExheW91dFRlc3RzL3N2Zy9jYW52YXMvY2FudmFzLWdsb2JhbC1hbHBoYS1z
dmctZXhwZWN0ZWQuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDE2IEBACis8IURPQ1RZ
UEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+CisgIDxzdHlsZT4KKyAgICBkaXYgeworICAgICAgd2lk
dGg6IDIwMHB4OworICAgICAgaGVpZ2h0OiAxMDBweDsKKyAgICAgIGJhY2tncm91bmQtY29sb3I6
IHJlZDsKKyAgICAgIG9wYWNpdHk6IDAuMjsKKyAgICB9CisgIDwvc3R5bGU+Cis8L2hlYWQ+Cis8
Ym9keT4KKyAgPGRpdj48L2Rpdj4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3Rz
L3N2Zy9jYW52YXMvY2FudmFzLWdsb2JhbC1hbHBoYS1zdmcuaHRtbAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9zdmcvY2FudmFzL2NhbnZhcy1nbG9iYWwtYWxwaGEtc3ZnLmh0bWwJKHJldmlz
aW9uIDApCisrKyBMYXlvdXRUZXN0cy9zdmcvY2FudmFzL2NhbnZhcy1nbG9iYWwtYWxwaGEtc3Zn
Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwyMyBAQAorPCFET0NUWVBFIGh0bWw+Cis8
aHRtbD4KKzxib2R5PgorICA8Y2FudmFzIGlkPSJjYW52YXMiPjwvY2FudmFzPgorICA8c2NyaXB0
PgorICAgIHZhciBjb250ZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNhbnZhcyIpLmdl
dENvbnRleHQoIjJkIik7CisgICAgY29udGV4dC5nbG9iYWxBbHBoYSA9IDAuMjsKKworICAgIGNv
bnRleHQuZmlsbFN0eWxlPSJyZWQiOworICAgIGNvbnRleHQuZmlsbFJlY3QoMCwwLDEwMCwxMDAp
OworCisgICAgdmFyIHN2Z0ltYWdlID0gbmV3IEltYWdlKCk7CisgICAgc3ZnSW1hZ2Uub25sb2Fk
ID0gZnVuY3Rpb24oKSB7CisJICBjb250ZXh0LmRyYXdJbWFnZShzdmdJbWFnZSwgMTAwLCAwKTsK
KyAgICB9OworICAgIAorICAgIHN2Z0ltYWdlLnNyYyA9ICJkYXRhOmltYWdlL3N2Zyt4bWw7dXRm
OCwgXAorICAgICAgPHN2ZyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnIHdpZHRo
PScxMDAnIGhlaWdodD0nMTAwJz4gXAorICAgICAgICA8cmVjdCB4PScwJyB5PScwJyB3aWR0aD0n
MTAwJScgaGVpZ2h0PScxMDAlJyBmaWxsPSdyZWQnLz4gXAorICAgICAgPC9zdmc+IjsKKyAgPC9z
Y3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>246932</attachid>
            <date>2015-02-19 18:35:12 -0800</date>
            <delta_ts>2015-02-20 18:00:54 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-141729-20150219183504.patch</filename>
            <type>text/plain</type>
            <size>8974</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE4MDM1OSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM4IEBACisyMDE1LTAyLTE5ICBTYWlkIEFi
b3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CisKKyAgICAgICAgRHJhd2luZyBh
biBTVkcgaW1hZ2UgaW50byBhIGNhbnZhcyB1c2luZyBkcmF3SW1hZ2UoKSBpZ25vcmVzIGdsb2Jh
bEFscGhhLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTQxNzI5LgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFdoZW4gZHJhd2luZyBhbiBTVkcgaW1hZ2UgYW5kIHRoZSBkcmF3aW5nIGNvbnRleHQgaXMgc2V0
IHRvIGJlIHRyYW5zcGFyZW50LAorICAgICAgICBtYWtlIHN1cmUgdGhpcyB0cmFuc3BhcmVuY3kg
aXMgYXBwbGllZCB0byB0aGUgY29tcG9zaXRpbmcgbGF5ZXIuCisKKyAgICAgICAgVGVzdDogc3Zn
L2NhbnZhcy9jYW52YXMtZ2xvYmFsLWFscGhhLXN2Zy5odG1sCisKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0OjpzZXRBbHBoYSk6IE1ha2Ugc2V0QWxwaGEoKSBjYWxscyB0aGUgcGxhdGZvcm0K
KyAgICAgICAgZnVuY3Rpb24gYW5kIHNldHMgJ21fc3RhdGUuYWxwaGEnIHRvIHRoZSBpbnB1dCB2
YWx1ZS4KKyAgICAgICAgCisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmFscGhh
KTogQWRkIGEgbmV3IGZ1bmN0aW9uICdhbHBoYSgpJyB3aGljaAorICAgICAgICByZXR1cm5zIHRo
ZSBhbHBoYSBjaGFubmVsIHZhbHVlLgorICAgICAgICAKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9HcmFwaGljc0NvbnRleHQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dFN0YXRlOjpHcmFwaGljc0NvbnRleHRTdGF0ZSk6IEFkZCBhIG5ldyBtZW1iZXIKKyAgICAgICAg
J2FscGhhJyB0byB0aGUgY29udGV4dCBzdGF0ZSBzaW5jZSB0aGUgZ2V0dGVyIGZ1bmN0aW9uIENH
Q29udGV4dEdldEFscGhhCisgICAgICAgIGlzIGRlZmluZWQgb25seSBpbiBhIHByaXZhdGUgaGVh
ZGVyIGZpbGUuCisgICAgCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3ND
b250ZXh0Q0cuY3BwOiAgICAKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6c2V0
UGxhdGZvcm1BbHBoYSk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnNldEFs
cGhhKTogRGVsZXRlZC4KKyAgICAgICAgQ2hhbmdlIHNldEFscGhhKCkgdG8gYmUgc2V0UGxhdGZv
cm1BbHBoYSgpIGluIHRoaXMgZmlsZS4gc2V0QWxwaGEoKSBpcyBub3cgaW4KKyAgICAgICAgR3Jh
cGhpY3NDb250ZXh0LmNwcCB3aGljaCBjYWxscyB0aGUgbmV3IHBsYXRmb3JtIG9uZSBhbmQgc2V0
cyAnbV9zdGF0ZS5hbHBoYScKKyAgICAgICAgYXMgd2VsbC4KKyAgICAKKyAgICAgICAgKiBzdmcv
Z3JhcGhpY3MvU1ZHSW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHSW1hZ2U6OmRyYXcp
OiBJZiB0aGUgZHJhd2luZyBjb250ZXh0IGlzIHRyYW5zcGFyZW50LCBhcHBseSBpdHMKKyAgICAg
ICAgYWxwaGEgY2hhbm5lbCB2YWx1ZSB0byB0aGUgY29tcG9zaXRpbmcgbGF5ZXIuCisKIDIwMTUt
MDItMTkgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBbaU9TXSBG
aXggaW5lZmZpY2llbmNpZXMgaW4gUmVzb3VyY2VSZXNwb25zZTo6cGxhdGZvcm1MYXp5SW5pdCgp
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBo
aWNzQ29udGV4dC5jcHAJKHJldmlzaW9uIDE4MDI3MykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY3OSw2
ICs2NzksMTcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmZpbGxSZWN0V2l0aFJvdW5kZQogfQog
I2VuZGlmCiAKK3ZvaWQgR3JhcGhpY3NDb250ZXh0OjpzZXRBbHBoYShmbG9hdCBhbHBoYSkKK3sK
KyAgICBtX3N0YXRlLmFscGhhID0gYWxwaGE7CisgICAgc2V0UGxhdGZvcm1BbHBoYShhbHBoYSk7
Cit9CisKK2Zsb2F0IEdyYXBoaWNzQ29udGV4dDo6YWxwaGEoKSBjb25zdAoreworICAgIHJldHVy
biBtX3N0YXRlLmFscGhhOworfQorCiB2b2lkIEdyYXBoaWNzQ29udGV4dDo6c2V0Q29tcG9zaXRl
T3BlcmF0aW9uKENvbXBvc2l0ZU9wZXJhdG9yIGNvbXBvc2l0ZU9wZXJhdGlvbiwgQmxlbmRNb2Rl
IGJsZW5kTW9kZSkKIHsKICAgICBtX3N0YXRlLmNvbXBvc2l0ZU9wZXJhdG9yID0gY29tcG9zaXRl
T3BlcmF0aW9uOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhp
Y3NDb250ZXh0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvR3JhcGhpY3NDb250ZXh0LmgJKHJldmlzaW9uIDE4MDI3MykKKysrIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oCSh3b3JraW5nIGNvcHkpCkBAIC0x
MjMsNiArMTIzLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICAgICAgLCBzdHJva2VD
b2xvclNwYWNlKENvbG9yU3BhY2VEZXZpY2VSR0IpCiAgICAgICAgICAgICAsIGZpbGxDb2xvclNw
YWNlKENvbG9yU3BhY2VEZXZpY2VSR0IpCiAgICAgICAgICAgICAsIHNoYWRvd0NvbG9yU3BhY2Uo
Q29sb3JTcGFjZURldmljZVJHQikKKyAgICAgICAgICAgICwgYWxwaGEoMSkKICAgICAgICAgICAg
ICwgY29tcG9zaXRlT3BlcmF0b3IoQ29tcG9zaXRlU291cmNlT3ZlcikKICAgICAgICAgICAgICwg
YmxlbmRNb2RlKEJsZW5kTW9kZU5vcm1hbCkKICAgICAgICAgICAgICwgc2hvdWxkQW50aWFsaWFz
KHRydWUpCkBAIC0xNjMsNiArMTY0LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBD
b2xvclNwYWNlIGZpbGxDb2xvclNwYWNlOwogICAgICAgICBDb2xvclNwYWNlIHNoYWRvd0NvbG9y
U3BhY2U7CiAKKyAgICAgICAgZmxvYXQgYWxwaGE7CiAgICAgICAgIENvbXBvc2l0ZU9wZXJhdG9y
IGNvbXBvc2l0ZU9wZXJhdG9yOwogICAgICAgICBCbGVuZE1vZGUgYmxlbmRNb2RlOwogCkBAIC00
MDMsNiArNDA1LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2b2lkIHNldE1pdGVy
TGltaXQoZmxvYXQpOwogCiAgICAgICAgIHZvaWQgc2V0QWxwaGEoZmxvYXQpOworICAgICAgICBm
bG9hdCBhbHBoYSgpIGNvbnN0OwogCiAgICAgICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0Q29t
cG9zaXRlT3BlcmF0aW9uKENvbXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGUgPSBCbGVuZE1vZGVO
b3JtYWwpOwogICAgICAgICBDb21wb3NpdGVPcGVyYXRvciBjb21wb3NpdGVPcGVyYXRpb24oKSBj
b25zdDsKQEAgLTU0MCw2ICs1NDMsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZv
aWQgc2V0UGxhdGZvcm1TaGFkb3coY29uc3QgRmxvYXRTaXplJiwgZmxvYXQgYmx1ciwgY29uc3Qg
Q29sb3ImLCBDb2xvclNwYWNlKTsKICAgICAgICAgdm9pZCBjbGVhclBsYXRmb3JtU2hhZG93KCk7
CiAKKyAgICAgICAgdm9pZCBzZXRQbGF0Zm9ybUFscGhhKGZsb2F0KTsKICAgICAgICAgdm9pZCBz
ZXRQbGF0Zm9ybUNvbXBvc2l0ZU9wZXJhdGlvbihDb21wb3NpdGVPcGVyYXRvciwgQmxlbmRNb2Rl
ID0gQmxlbmRNb2RlTm9ybWFsKTsKIAogICAgICAgICB2b2lkIGJlZ2luUGxhdGZvcm1UcmFuc3Bh
cmVuY3lMYXllcihmbG9hdCBvcGFjaXR5KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dENHLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRDRy5jcHAJKHJldmlz
aW9uIDE4MDI3MykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBo
aWNzQ29udGV4dENHLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTk2LDEzICs5OTYsNiBAQCB2b2lk
IEdyYXBoaWNzQ29udGV4dDo6c2V0TWl0ZXJMaW1pdChmbG9hCiAgICAgQ0dDb250ZXh0U2V0TWl0
ZXJMaW1pdChwbGF0Zm9ybUNvbnRleHQoKSwgbGltaXQpOwogfQogCi12b2lkIEdyYXBoaWNzQ29u
dGV4dDo6c2V0QWxwaGEoZmxvYXQgYWxwaGEpCi17Ci0gICAgaWYgKHBhaW50aW5nRGlzYWJsZWQo
KSkKLSAgICAgICAgcmV0dXJuOwotICAgIENHQ29udGV4dFNldEFscGhhKHBsYXRmb3JtQ29udGV4
dCgpLCBhbHBoYSk7Ci19Ci0KIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpjbGVhclJlY3QoY29uc3Qg
RmxvYXRSZWN0JiByKQogewogICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkpCkBAIC0xNDgxLDYg
KzE0NzQsMTMgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OnNldFBsYXRmb3JtU2hvdWxkUwogICAg
IENHQ29udGV4dFNldFNob3VsZFNtb290aEZvbnRzKHBsYXRmb3JtQ29udGV4dCgpLCBlbmFibGUp
OwogfQogCit2b2lkIEdyYXBoaWNzQ29udGV4dDo6c2V0UGxhdGZvcm1BbHBoYShmbG9hdCBhbHBo
YSkKK3sKKyAgICBpZiAocGFpbnRpbmdEaXNhYmxlZCgpKQorICAgICAgICByZXR1cm47CisgICAg
Q0dDb250ZXh0U2V0QWxwaGEocGxhdGZvcm1Db250ZXh0KCksIGFscGhhKTsKK30KKwogdm9pZCBH
cmFwaGljc0NvbnRleHQ6OnNldFBsYXRmb3JtQ29tcG9zaXRlT3BlcmF0aW9uKENvbXBvc2l0ZU9w
ZXJhdG9yIG1vZGUsIEJsZW5kTW9kZSBibGVuZE1vZGUpCiB7CiAgICAgaWYgKHBhaW50aW5nRGlz
YWJsZWQoKSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmNwcAko
cmV2aXNpb24gMTgwMjczKQorKysgU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdl
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjI5LDkgKzIyOSwxMSBAQCB2b2lkIFNWR0ltYWdlOjpk
cmF3KEdyYXBoaWNzQ29udGV4dCogY29uCiAgICAgR3JhcGhpY3NDb250ZXh0U3RhdGVTYXZlciBz
dGF0ZVNhdmVyKCpjb250ZXh0KTsKICAgICBjb250ZXh0LT5zZXRDb21wb3NpdGVPcGVyYXRpb24o
Y29tcG9zaXRlT3AsIGJsZW5kTW9kZSk7CiAgICAgY29udGV4dC0+Y2xpcChlbmNsb3NpbmdJbnRS
ZWN0KGRzdFJlY3QpKTsKLSAgICBib29sIGNvbXBvc2l0aW5nUmVxdWlyZXNUcmFuc3BhcmVuY3lM
YXllciA9IGNvbXBvc2l0ZU9wICE9IENvbXBvc2l0ZVNvdXJjZU92ZXIgfHwgYmxlbmRNb2RlICE9
IEJsZW5kTW9kZU5vcm1hbDsKKworICAgIGZsb2F0IGFscGhhID0gY29udGV4dC0+YWxwaGEoKTsK
KyAgICBib29sIGNvbXBvc2l0aW5nUmVxdWlyZXNUcmFuc3BhcmVuY3lMYXllciA9IGNvbXBvc2l0
ZU9wICE9IENvbXBvc2l0ZVNvdXJjZU92ZXIgfHwgYmxlbmRNb2RlICE9IEJsZW5kTW9kZU5vcm1h
bCB8fCBhbHBoYSA8IDE7CiAgICAgaWYgKGNvbXBvc2l0aW5nUmVxdWlyZXNUcmFuc3BhcmVuY3lM
YXllcikgewotICAgICAgICBjb250ZXh0LT5iZWdpblRyYW5zcGFyZW5jeUxheWVyKDEpOworICAg
ICAgICBjb250ZXh0LT5iZWdpblRyYW5zcGFyZW5jeUxheWVyKGFscGhhKTsKICAgICAgICAgY29u
dGV4dC0+c2V0Q29tcG9zaXRlT3BlcmF0aW9uKENvbXBvc2l0ZVNvdXJjZU92ZXIsIEJsZW5kTW9k
ZU5vcm1hbCk7CiAgICAgfQogCkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAxODAzNTQpCisrKyBMYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNiBAQAorMjAxNS0wMi0x
OSAgU2FpZCBBYm91LUhhbGxhd2EgIDxzYWJvdWhhbGxhd2FAYXBwbGUuY29tPgorCisgICAgICAg
IERyYXdpbmcgYW4gU1ZHIGltYWdlIGludG8gYSBjYW52YXMgdXNpbmcgZHJhd0ltYWdlKCkgaWdu
b3JlcyBnbG9iYWxBbHBoYS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE0MTcyOS4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBBZGQgYSBuZXcgdGVzdCB3aGljaCBkcmF3cyBhbiBTVkcgaW1hZ2Ugb24gYSBj
YW52YXMgYWZ0ZXIgc2V0dGluZyBpdHMgCisgICAgICAgIGdsb2JhbEFscGhhIHRvIGEgdmFsdWUg
bGVzcyB0aGFuIDEuCisKKyAgICAgICAgKiBzdmcvY2FudmFzL2NhbnZhcy1nbG9iYWwtYWxwaGEt
c3ZnLWV4cGVjdGVkLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHN2Zy9jYW52YXMvY2FudmFzLWds
b2JhbC1hbHBoYS1zdmcuaHRtbDogQWRkZWQuCisKIDIwMTUtMDItMTkgIEJyZW50IEZ1bGdoYW0g
IDxiZnVsZ2hhbUBhcHBsZS5jb20+CiAKICAgICAgICAgW1dpbl0gRGlzYWJsZSBtZWRpYSB0ZXN0
cyBkdWUgdG8gYm90IGZhaWx1cmVzLgpJbmRleDogTGF5b3V0VGVzdHMvc3ZnL2NhbnZhcy9jYW52
YXMtZ2xvYmFsLWFscGhhLXN2Zy1leHBlY3RlZC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRl
c3RzL3N2Zy9jYW52YXMvY2FudmFzLWdsb2JhbC1hbHBoYS1zdmctZXhwZWN0ZWQuaHRtbAkocmV2
aXNpb24gMCkKKysrIExheW91dFRlc3RzL3N2Zy9jYW52YXMvY2FudmFzLWdsb2JhbC1hbHBoYS1z
dmctZXhwZWN0ZWQuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDM0IEBACis8IURPQ1RZ
UEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+CisgIDxzdHlsZT4KKyAgICBkaXYgeworICAgICAgYm9y
ZGVyLXdpZHRoOiAyNXB4OworICAgICAgYm9yZGVyLXN0eWxlOiBzb2xpZDsKKyAgICAgIGJvcmRl
ci1jb2xvcjogZ3JlZW47CisgICAgfQorICAgIC5tYWluIHsKKyAgICAgIHdpZHRoOiAxMDBweDsK
KyAgICAgIGhlaWdodDogMTAwcHg7CisgICAgfQorICAgIC5zdWIgeworICAgICAgd2lkdGg6IDUw
cHg7CisgICAgICBoZWlnaHQ6IDUwcHg7CisgICAgfQorICAgIC5zdWItc3ViIHsKKyAgICAgIHdp
ZHRoOiAwcHg7CisgICAgICBoZWlnaHQ6IDBweDsKKyAgICB9CisgICAgLmxvdy1vcGFjaXR5IHsK
KyAgICAgIG9wYWNpdHk6IDAuMjsgICAKKyAgICB9CisgIDwvc3R5bGU+Cis8L2hlYWQ+Cis8Ym9k
eT4KKyAgPGRpdiBjbGFzcz0ibWFpbiI+CisgICAgPGRpdiBjbGFzcz0ic3ViIGxvdy1vcGFjaXR5
Ij4KKyAgICAgIDxkaXYgY2xhc3M9InN1Yi1zdWIgbG93LW9wYWNpdHkiPjwvZGl2PgorICAgIDwv
ZGl2PgorICA8L2Rpdj4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL3N2Zy9j
YW52YXMvY2FudmFzLWdsb2JhbC1hbHBoYS1zdmcuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9zdmcvY2FudmFzL2NhbnZhcy1nbG9iYWwtYWxwaGEtc3ZnLmh0bWwJKHJldmlzaW9uIDAp
CisrKyBMYXlvdXRUZXN0cy9zdmcvY2FudmFzL2NhbnZhcy1nbG9iYWwtYWxwaGEtc3ZnLmh0bWwJ
KHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwyOCBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4K
Kzxib2R5PgorICA8Y2FudmFzIGlkPSJjYW52YXMiPjwvY2FudmFzPgorICA8c2NyaXB0PgorICAg
IHZhciBjYW52YXMgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY2FudmFzIik7CisgICAgY2Fu
dmFzLndpZHRoICA9IDE1MDsKKyAgICBjYW52YXMuaGVpZ2h0ID0gMTUwOworICAgIAorICAgIHZh
ciBjb250ZXh0ID0gY2FudmFzLmdldENvbnRleHQoIjJkIik7ICAgIAorICAgIGNvbnRleHQuc3Ry
b2tlU3R5bGUgPSAiZ3JlZW4iOworICAgIGNvbnRleHQubGluZVdpZHRoID0gNTA7CisgICAgY29u
dGV4dC5zdHJva2VSZWN0KDAsMCwxNTAsMTUwKTsKKworICAgIHZhciBzdmdJbWFnZSA9IG5ldyBJ
bWFnZSgpOworICAgIHN2Z0ltYWdlLm9ubG9hZCA9IGZ1bmN0aW9uKCkgeworICAgICAgY29udGV4
dC5nbG9iYWxBbHBoYSA9IDAuMjsKKwkgIGNvbnRleHQuZHJhd0ltYWdlKHN2Z0ltYWdlLCAyNSwg
MjUpOworICAgIH07CisgICAgCisgICAgc3ZnSW1hZ2Uuc3JjID0gImRhdGE6aW1hZ2Uvc3ZnK3ht
bDt1dGY4LCBcCisgICAgPHN2ZyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnIHdp
ZHRoPScxMDAnIGhlaWdodD0nMTAwJz4gXAorICAgICAgPHJlY3Qgd2lkdGg9JzEwMCUnIGhlaWdo
dD0nMTAwJScgc3R5bGU9J2ZpbGw6bm9uZTtzdHJva2U6Z3JlZW47c3Ryb2tlLXdpZHRoOjUwOycv
PiBcCisgICAgICA8cmVjdCB4PScyNSUnIHk9JzI1JScgd2lkdGg9JzUwJScgaGVpZ2h0PSc1MCUn
IGZpbGw9J2dyZWVuJyBmaWxsLW9wYWNpdHk9JzAuMicvPiBcCisgICAgPC9zdmc+IjsKKyAgPC9z
Y3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>247027</attachid>
            <date>2015-02-20 18:01:10 -0800</date>
            <delta_ts>2015-02-20 21:51:12 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-141729-20150220180101.patch</filename>
            <type>text/plain</type>
            <size>23370</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE4MDQ0NCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQyIEBACisyMDE1LTAyLTIwICBTYWlkIEFi
b3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CisKKyAgICAgICAgRHJhd2luZyBh
biBTVkcgaW1hZ2UgaW50byBhIGNhbnZhcyB1c2luZyBkcmF3SW1hZ2UoKSBpZ25vcmVzIGdsb2Jh
bEFscGhhLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTQxNzI5LgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFdoZW4gZHJhd2luZyBhbiBTVkcgaW1hZ2UgYW5kIHRoZSBkcmF3aW5nIGNvbnRleHQgaXMgc2V0
IHRvIGJlIHRyYW5zcGFyZW50LAorICAgICAgICBtYWtlIHN1cmUgdGhpcyB0cmFuc3BhcmVuY3kg
aXMgYXBwbGllZCB0byB0aGUgY29tcG9zaXRpbmcgbGF5ZXIuCisKKyAgICAgICAgVGVzdDogc3Zn
L2NhbnZhcy9jYW52YXMtZ2xvYmFsLWFscGhhLXN2Zy5odG1sCisKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0OjpzZXRBbHBoYSk6IE1ha2Ugc2V0QWxwaGEoKSBjYWxscyB0aGUgcGxhdGZvcm0K
KyAgICAgICAgZnVuY3Rpb24gYW5kIHNldHMgJ21fc3RhdGUuYWxwaGEnIHRvIHRoZSBpbnB1dCB2
YWx1ZS4KKworICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjphbHBoYSk6IEFkZCBh
IG5ldyBmdW5jdGlvbiAnYWxwaGEoKScgd2hpY2gKKyAgICAgICAgcmV0dXJucyB0aGUgdmFsdWUg
b2YgdGhlIGdsb2JhbCBhbHBoYS4KKyAgICAgICAgCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvR3JhcGhpY3NDb250ZXh0Lmg6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRT
dGF0ZTo6R3JhcGhpY3NDb250ZXh0U3RhdGUpOiBBZGQgYSBuZXcgbWVtYmVyCisgICAgICAgICdh
bHBoYScgdG8gdGhlIGNvbnRleHQgc3RhdGUgc2luY2UgdGhlIGdldHRlciBmdW5jdGlvbiBDR0Nv
bnRleHRHZXRBbHBoYQorICAgICAgICBpcyBkZWZpbmVkIG9ubHkgaW4gYSBwcml2YXRlIGhlYWRl
ciBmaWxlLiBBbHNvIG1vdmUgc2luZ2xlIGxpbmUgZnVuY3Rpb25zCisgICAgICAgIGZyb20gdGhl
IHNvdXJjZSBmaWxlIHRvIHRoZSBoZWFkZXIgZmlsZS4KKyAgICAKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRDYWlyby5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpHcmFwaGljc0NvbnRleHQ6OnNldFBsYXRmb3JtQWxwaGEpOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0OjpzZXRBbHBoYSk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0OjpzZXRQbGF0Zm9ybUFscGhhKToKKyAgICAgICAgKFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dDo6c2V0QWxwaGEpOiBEZWxldGVkLgorICAgICAgICBSZW5hbWUgc2V0QWxw
aGEoKSB0byBzZXRQbGF0Zm9ybUFscGhhKCkgaW4gdGhlIHBsYXRmb3JtIGZpbGVzLiBBZGQgc2V0
QWxwaGEoKQorICAgICAgICB0byB0aGUgY29yZSBmaWxlLiBzZXRBbHBoYSgpIHdpbGwgc2V0IHRo
ZSB2YWx1ZSBvZiAnbV9zdGF0ZS5hbHBoYScgYW5kIGNhbGwKKyAgICAgICAgc2V0UGxhdGZvcm1B
bHBoYSgpLgorICAgIAorICAgICAgICAqIHN2Zy9ncmFwaGljcy9TVkdJbWFnZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpTVkdJbWFnZTo6ZHJhdyk6IElmIHRoZSBkcmF3aW5nIGNvbnRleHQgaXMg
dHJhbnNwYXJlbnQsIGFwcGx5IGl0cworICAgICAgICBnbG9iYWwgYWxwaGEgdmFsdWUgdG8gdGhl
IGNvbXBvc2l0aW5nIGxheWVyLgorICAgICAgICAKIDIwMTUtMDItMjAgIEFsZXhleSBQcm9za3Vy
eWFrb3YgIDxhcEBhcHBsZS5jb20+CiAKICAgICAgICAgUmVtb3ZlIHN2bjprZXl3b3JkcyBwcm9w
ZXJ0eS4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29u
dGV4dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
R3JhcGhpY3NDb250ZXh0LmNwcAkocmV2aXNpb24gMTgwNDQ0KQorKysgU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MjA4LDEyICsyMDgsNiBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6Y2xlYXJTaGFkb3coKQogICAg
IGNsZWFyUGxhdGZvcm1TaGFkb3coKTsKIH0KIAotYm9vbCBHcmFwaGljc0NvbnRleHQ6Omhhc1No
YWRvdygpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fc3RhdGUuc2hhZG93Q29sb3IuaXNWYWxpZCgp
ICYmIG1fc3RhdGUuc2hhZG93Q29sb3IuYWxwaGEoKQotICAgICAgICAgICAmJiAobV9zdGF0ZS5z
aGFkb3dCbHVyIHx8IG1fc3RhdGUuc2hhZG93T2Zmc2V0LndpZHRoKCkgfHwgbV9zdGF0ZS5zaGFk
b3dPZmZzZXQuaGVpZ2h0KCkpOwotfQotCiBib29sIEdyYXBoaWNzQ29udGV4dDo6Z2V0U2hhZG93
KEZsb2F0U2l6ZSYgb2Zmc2V0LCBmbG9hdCYgYmx1ciwgQ29sb3ImIGNvbG9yLCBDb2xvclNwYWNl
JiBjb2xvclNwYWNlKSBjb25zdAogewogICAgIG9mZnNldCA9IG1fc3RhdGUuc2hhZG93T2Zmc2V0
OwpAQCAtMjI0LDExICsyMTgsNiBAQCBib29sIEdyYXBoaWNzQ29udGV4dDo6Z2V0U2hhZG93KEZs
b2F0U2l6CiAgICAgcmV0dXJuIGhhc1NoYWRvdygpOwogfQogCi1ib29sIEdyYXBoaWNzQ29udGV4
dDo6aGFzQmx1cnJlZFNoYWRvdygpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fc3RhdGUuc2hhZG93
Q29sb3IuaXNWYWxpZCgpICYmIG1fc3RhdGUuc2hhZG93Q29sb3IuYWxwaGEoKSAmJiBtX3N0YXRl
LnNoYWRvd0JsdXI7Ci19Ci0KICNpZiBVU0UoQ0FJUk8pCiBib29sIEdyYXBoaWNzQ29udGV4dDo6
bXVzdFVzZVNoYWRvd0JsdXIoKSBjb25zdAogewpAQCAtMjQ3LDM2ICsyMzYsNiBAQCBib29sIEdy
YXBoaWNzQ29udGV4dDo6bXVzdFVzZVNoYWRvd0JsdXIoCiB9CiAjZW5kaWYKIAotZmxvYXQgR3Jh
cGhpY3NDb250ZXh0OjpzdHJva2VUaGlja25lc3MoKSBjb25zdAotewotICAgIHJldHVybiBtX3N0
YXRlLnN0cm9rZVRoaWNrbmVzczsKLX0KLQotU3Ryb2tlU3R5bGUgR3JhcGhpY3NDb250ZXh0Ojpz
dHJva2VTdHlsZSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fc3RhdGUuc3Ryb2tlU3R5bGU7Ci19
Ci0KLUNvbG9yIEdyYXBoaWNzQ29udGV4dDo6c3Ryb2tlQ29sb3IoKSBjb25zdAotewotICAgIHJl
dHVybiBtX3N0YXRlLnN0cm9rZUNvbG9yOwotfQotCi1Db2xvclNwYWNlIEdyYXBoaWNzQ29udGV4
dDo6c3Ryb2tlQ29sb3JTcGFjZSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fc3RhdGUuc3Ryb2tl
Q29sb3JTcGFjZTsKLX0KLQotV2luZFJ1bGUgR3JhcGhpY3NDb250ZXh0OjpmaWxsUnVsZSgpIGNv
bnN0Ci17Ci0gICAgcmV0dXJuIG1fc3RhdGUuZmlsbFJ1bGU7Ci19Ci0KLXZvaWQgR3JhcGhpY3ND
b250ZXh0OjpzZXRGaWxsUnVsZShXaW5kUnVsZSBmaWxsUnVsZSkKLXsKLSAgICBtX3N0YXRlLmZp
bGxSdWxlID0gZmlsbFJ1bGU7Ci19Ci0KIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpzZXRGaWxsQ29s
b3IoY29uc3QgQ29sb3ImIGNvbG9yLCBDb2xvclNwYWNlIGNvbG9yU3BhY2UpCiB7CiAgICAgbV9z
dGF0ZS5maWxsQ29sb3IgPSBjb2xvcjsKQEAgLTI4Niw1MSArMjQ1LDE2IEBAIHZvaWQgR3JhcGhp
Y3NDb250ZXh0OjpzZXRGaWxsQ29sb3IoY29uc3QKICAgICBzZXRQbGF0Zm9ybUZpbGxDb2xvcihj
b2xvciwgY29sb3JTcGFjZSk7CiB9CiAKLUNvbG9yIEdyYXBoaWNzQ29udGV4dDo6ZmlsbENvbG9y
KCkgY29uc3QKK3ZvaWQgR3JhcGhpY3NDb250ZXh0OjpzZXRTaG91bGRBbnRpYWxpYXMoYm9vbCBz
aG91bGRBbnRpYWxpYXMpCiB7Ci0gICAgcmV0dXJuIG1fc3RhdGUuZmlsbENvbG9yOworICAgIG1f
c3RhdGUuc2hvdWxkQW50aWFsaWFzID0gc2hvdWxkQW50aWFsaWFzOworICAgIHNldFBsYXRmb3Jt
U2hvdWxkQW50aWFsaWFzKHNob3VsZEFudGlhbGlhcyk7CiB9CiAKLUNvbG9yU3BhY2UgR3JhcGhp
Y3NDb250ZXh0OjpmaWxsQ29sb3JTcGFjZSgpIGNvbnN0Cit2b2lkIEdyYXBoaWNzQ29udGV4dDo6
c2V0U2hvdWxkU21vb3RoRm9udHMoYm9vbCBzaG91bGRTbW9vdGhGb250cykKIHsKLSAgICByZXR1
cm4gbV9zdGF0ZS5maWxsQ29sb3JTcGFjZTsKLX0KLQotdm9pZCBHcmFwaGljc0NvbnRleHQ6OnNl
dFNob3VsZEFudGlhbGlhcyhib29sIGIpCi17Ci0gICAgbV9zdGF0ZS5zaG91bGRBbnRpYWxpYXMg
PSBiOwotICAgIHNldFBsYXRmb3JtU2hvdWxkQW50aWFsaWFzKGIpOwotfQotCi1ib29sIEdyYXBo
aWNzQ29udGV4dDo6c2hvdWxkQW50aWFsaWFzKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9zdGF0
ZS5zaG91bGRBbnRpYWxpYXM7Ci19Ci0KLXZvaWQgR3JhcGhpY3NDb250ZXh0OjpzZXRTaG91bGRT
bW9vdGhGb250cyhib29sIGIpCi17Ci0gICAgbV9zdGF0ZS5zaG91bGRTbW9vdGhGb250cyA9IGI7
Ci0gICAgc2V0UGxhdGZvcm1TaG91bGRTbW9vdGhGb250cyhiKTsKLX0KLQotYm9vbCBHcmFwaGlj
c0NvbnRleHQ6OnNob3VsZFNtb290aEZvbnRzKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9zdGF0
ZS5zaG91bGRTbW9vdGhGb250czsKLX0KLQotdm9pZCBHcmFwaGljc0NvbnRleHQ6OnNldFNob3Vs
ZFN1YnBpeGVsUXVhbnRpemVGb250cyhib29sIGIpCi17Ci0gICAgbV9zdGF0ZS5zaG91bGRTdWJw
aXhlbFF1YW50aXplRm9udHMgPSBiOwotfQotCi1ib29sIEdyYXBoaWNzQ29udGV4dDo6c2hvdWxk
U3VicGl4ZWxRdWFudGl6ZUZvbnRzKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9zdGF0ZS5zaG91
bGRTdWJwaXhlbFF1YW50aXplRm9udHM7Ci19Ci0KLWNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRl
JiBHcmFwaGljc0NvbnRleHQ6OnN0YXRlKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9zdGF0ZTsK
KyAgICBtX3N0YXRlLnNob3VsZFNtb290aEZvbnRzID0gc2hvdWxkU21vb3RoRm9udHM7CisgICAg
c2V0UGxhdGZvcm1TaG91bGRTbW9vdGhGb250cyhzaG91bGRTbW9vdGhGb250cyk7CiB9CiAKIHZv
aWQgR3JhcGhpY3NDb250ZXh0OjpzZXRTdHJva2VQYXR0ZXJuKFJlZjxQYXR0ZXJuPiYmIHBhdHRl
cm4pCkBAIC0zNTcsMzYgKzI4MSw2IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpzZXRGaWxsR3Jh
ZGllbnQoUmUKICAgICBtX3N0YXRlLmZpbGxQYXR0ZXJuLmNsZWFyKCk7CiB9CiAKLUdyYWRpZW50
KiBHcmFwaGljc0NvbnRleHQ6OmZpbGxHcmFkaWVudCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1f
c3RhdGUuZmlsbEdyYWRpZW50LmdldCgpOwotfQotCi1HcmFkaWVudCogR3JhcGhpY3NDb250ZXh0
OjpzdHJva2VHcmFkaWVudCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fc3RhdGUuc3Ryb2tlR3Jh
ZGllbnQuZ2V0KCk7Ci19Ci0KLVBhdHRlcm4qIEdyYXBoaWNzQ29udGV4dDo6ZmlsbFBhdHRlcm4o
KSBjb25zdAotewotICAgIHJldHVybiBtX3N0YXRlLmZpbGxQYXR0ZXJuLmdldCgpOwotfQotCi1Q
YXR0ZXJuKiBHcmFwaGljc0NvbnRleHQ6OnN0cm9rZVBhdHRlcm4oKSBjb25zdAotewotICAgIHJl
dHVybiBtX3N0YXRlLnN0cm9rZVBhdHRlcm4uZ2V0KCk7Ci19Ci0KLXZvaWQgR3JhcGhpY3NDb250
ZXh0OjpzZXRTaGFkb3dzSWdub3JlVHJhbnNmb3Jtcyhib29sIGlnbm9yZVRyYW5zZm9ybXMpCi17
Ci0gICAgbV9zdGF0ZS5zaGFkb3dzSWdub3JlVHJhbnNmb3JtcyA9IGlnbm9yZVRyYW5zZm9ybXM7
Ci19Ci0KLWJvb2wgR3JhcGhpY3NDb250ZXh0OjpzaGFkb3dzSWdub3JlVHJhbnNmb3JtcygpIGNv
bnN0Ci17Ci0gICAgcmV0dXJuIG1fc3RhdGUuc2hhZG93c0lnbm9yZVRyYW5zZm9ybXM7Ci19Ci0K
IHZvaWQgR3JhcGhpY3NDb250ZXh0OjpiZWdpblRyYW5zcGFyZW5jeUxheWVyKGZsb2F0IG9wYWNp
dHkpCiB7CiAgICAgYmVnaW5QbGF0Zm9ybVRyYW5zcGFyZW5jeUxheWVyKG9wYWNpdHkpOwpAQCAt
NDAwLDMyICsyOTQsMTIgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmVuZFRyYW5zcGFyZW5jeUxh
eQogICAgIC0tbV90cmFuc3BhcmVuY3lDb3VudDsKIH0KIAotYm9vbCBHcmFwaGljc0NvbnRleHQ6
OmlzSW5UcmFuc3BhcmVuY3lMYXllcigpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIChtX3RyYW5zcGFy
ZW5jeUNvdW50ID4gMCkgJiYgc3VwcG9ydHNUcmFuc3BhcmVuY3lMYXllcnMoKTsKLX0KLQotYm9v
bCBHcmFwaGljc0NvbnRleHQ6OnVwZGF0aW5nQ29udHJvbFRpbnRzKCkgY29uc3QKLXsKLSAgICBy
ZXR1cm4gbV91cGRhdGluZ0NvbnRyb2xUaW50czsKLX0KLQogdm9pZCBHcmFwaGljc0NvbnRleHQ6
OnNldFVwZGF0aW5nQ29udHJvbFRpbnRzKGJvb2wgYikKIHsKICAgICBzZXRQYWludGluZ0Rpc2Fi
bGVkKGIpOwogICAgIG1fdXBkYXRpbmdDb250cm9sVGludHMgPSBiOwogfQogCi12b2lkIEdyYXBo
aWNzQ29udGV4dDo6c2V0UGFpbnRpbmdEaXNhYmxlZChib29sIGYpCi17Ci0gICAgbV9zdGF0ZS5w
YWludGluZ0Rpc2FibGVkID0gZjsKLX0KLQotYm9vbCBHcmFwaGljc0NvbnRleHQ6OnBhaW50aW5n
RGlzYWJsZWQoKSBjb25zdAotewotICAgIHJldHVybiBtX3N0YXRlLnBhaW50aW5nRGlzYWJsZWQ7
Ci19Ci0KIGZsb2F0IEdyYXBoaWNzQ29udGV4dDo6ZHJhd1RleHQoY29uc3QgRm9udENhc2NhZGUm
IGZvbnQsIGNvbnN0IFRleHRSdW4mIHJ1biwgY29uc3QgRmxvYXRQb2ludCYgcG9pbnQsIGludCBm
cm9tLCBpbnQgdG8pCiB7CiAgICAgaWYgKHBhaW50aW5nRGlzYWJsZWQoKSkKQEAgLTYxMCwxMSAr
NDg0LDYgQEAgSW50UmVjdCBHcmFwaGljc0NvbnRleHQ6OmNsaXBCb3VuZHMoKSBjbwogfQogI2Vu
ZGlmCiAKLVRleHREcmF3aW5nTW9kZUZsYWdzIEdyYXBoaWNzQ29udGV4dDo6dGV4dERyYXdpbmdN
b2RlKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9zdGF0ZS50ZXh0RHJhd2luZ01vZGU7Ci19Ci0K
IHZvaWQgR3JhcGhpY3NDb250ZXh0OjpzZXRUZXh0RHJhd2luZ01vZGUoVGV4dERyYXdpbmdNb2Rl
RmxhZ3MgbW9kZSkKIHsKICAgICBtX3N0YXRlLnRleHREcmF3aW5nTW9kZSA9IG1vZGU7CkBAIC02
NzksNiArNTQ4LDEyIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpmaWxsUmVjdFdpdGhSb3VuZGUK
IH0KICNlbmRpZgogCit2b2lkIEdyYXBoaWNzQ29udGV4dDo6c2V0QWxwaGEoZmxvYXQgYWxwaGEp
Cit7CisgICAgbV9zdGF0ZS5hbHBoYSA9IGFscGhhOworICAgIHNldFBsYXRmb3JtQWxwaGEoYWxw
aGEpOworfQorCiB2b2lkIEdyYXBoaWNzQ29udGV4dDo6c2V0Q29tcG9zaXRlT3BlcmF0aW9uKENv
bXBvc2l0ZU9wZXJhdG9yIGNvbXBvc2l0ZU9wZXJhdGlvbiwgQmxlbmRNb2RlIGJsZW5kTW9kZSkK
IHsKICAgICBtX3N0YXRlLmNvbXBvc2l0ZU9wZXJhdG9yID0gY29tcG9zaXRlT3BlcmF0aW9uOwpA
QCAtNjg2LDI2ICs1NjEsNiBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6c2V0Q29tcG9zaXRlT3Bl
cmF0CiAgICAgc2V0UGxhdGZvcm1Db21wb3NpdGVPcGVyYXRpb24oY29tcG9zaXRlT3BlcmF0aW9u
LCBibGVuZE1vZGUpOwogfQogCi1Db21wb3NpdGVPcGVyYXRvciBHcmFwaGljc0NvbnRleHQ6OmNv
bXBvc2l0ZU9wZXJhdGlvbigpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fc3RhdGUuY29tcG9zaXRl
T3BlcmF0b3I7Ci19Ci0KLUJsZW5kTW9kZSBHcmFwaGljc0NvbnRleHQ6OmJsZW5kTW9kZU9wZXJh
dGlvbigpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fc3RhdGUuYmxlbmRNb2RlOwotfQotCi12b2lk
IEdyYXBoaWNzQ29udGV4dDo6c2V0RHJhd0x1bWluYW5jZU1hc2soYm9vbCBkcmF3THVtaW5hbmNl
TWFzaykKLXsKLSAgICBtX3N0YXRlLmRyYXdMdW1pbmFuY2VNYXNrID0gZHJhd0x1bWluYW5jZU1h
c2s7Ci19Ci0KLWJvb2wgR3JhcGhpY3NDb250ZXh0OjpkcmF3THVtaW5hbmNlTWFzaygpIGNvbnN0
Ci17Ci0gICAgcmV0dXJuIG1fc3RhdGUuZHJhd0x1bWluYW5jZU1hc2s7Ci19Ci0KICNpZiAhVVNF
KENHKQogLy8gSW1wbGVtZW50IHRoaXMgaWYgeW91IHdhbnQgdG8gZ28gYWhlYWQgYW5kIHB1c2gg
dGhlIGRyYXdpbmcgbW9kZSBpbnRvIHlvdXIgbmF0aXZlIGNvbnRleHQKIC8vIGltbWVkaWF0ZWx5
LgpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhp
Y3NDb250ZXh0LmgJKHJldmlzaW9uIDE4MDQ0NCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMTMsMTkgKzEx
Myw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgIHN0cnVjdCBHcmFwaGljc0NvbnRleHRT
dGF0ZSB7CiAgICAgICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlKCkKLSAgICAgICAgICAgIDogc3Ry
b2tlVGhpY2tuZXNzKDApCi0gICAgICAgICAgICAsIHNoYWRvd0JsdXIoMCkKLSAgICAgICAgICAg
ICwgdGV4dERyYXdpbmdNb2RlKFRleHRNb2RlRmlsbCkKLSAgICAgICAgICAgICwgc3Ryb2tlQ29s
b3IoQ29sb3I6OmJsYWNrKQotICAgICAgICAgICAgLCBmaWxsQ29sb3IoQ29sb3I6OmJsYWNrKQot
ICAgICAgICAgICAgLCBzdHJva2VTdHlsZShTb2xpZFN0cm9rZSkKLSAgICAgICAgICAgICwgZmls
bFJ1bGUoUlVMRV9OT05aRVJPKQotICAgICAgICAgICAgLCBzdHJva2VDb2xvclNwYWNlKENvbG9y
U3BhY2VEZXZpY2VSR0IpCi0gICAgICAgICAgICAsIGZpbGxDb2xvclNwYWNlKENvbG9yU3BhY2VE
ZXZpY2VSR0IpCi0gICAgICAgICAgICAsIHNoYWRvd0NvbG9yU3BhY2UoQ29sb3JTcGFjZURldmlj
ZVJHQikKLSAgICAgICAgICAgICwgY29tcG9zaXRlT3BlcmF0b3IoQ29tcG9zaXRlU291cmNlT3Zl
cikKLSAgICAgICAgICAgICwgYmxlbmRNb2RlKEJsZW5kTW9kZU5vcm1hbCkKLSAgICAgICAgICAg
ICwgc2hvdWxkQW50aWFsaWFzKHRydWUpCisgICAgICAgICAgICA6IHNob3VsZEFudGlhbGlhcyh0
cnVlKQogICAgICAgICAgICAgLCBzaG91bGRTbW9vdGhGb250cyh0cnVlKQogICAgICAgICAgICAg
LCBzaG91bGRTdWJwaXhlbFF1YW50aXplRm9udHModHJ1ZSkKICAgICAgICAgICAgICwgcGFpbnRp
bmdEaXNhYmxlZChmYWxzZSkKQEAgLTE0NywyNCArMTM1LDI1IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogICAgICAgICBGbG9hdFNpemUgc2hhZG93T2Zmc2V0OwogCi0gICAgICAgIGZsb2F0IHN0
cm9rZVRoaWNrbmVzczsKLSAgICAgICAgZmxvYXQgc2hhZG93Qmx1cjsKKyAgICAgICAgZmxvYXQg
c3Ryb2tlVGhpY2tuZXNzID0gMDsKKyAgICAgICAgZmxvYXQgc2hhZG93Qmx1ciA9IDA7CiAKLSAg
ICAgICAgVGV4dERyYXdpbmdNb2RlRmxhZ3MgdGV4dERyYXdpbmdNb2RlOworICAgICAgICBUZXh0
RHJhd2luZ01vZGVGbGFncyB0ZXh0RHJhd2luZ01vZGUgPSBUZXh0TW9kZUZpbGw7CiAKLSAgICAg
ICAgQ29sb3Igc3Ryb2tlQ29sb3I7Ci0gICAgICAgIENvbG9yIGZpbGxDb2xvcjsKKyAgICAgICAg
Q29sb3Igc3Ryb2tlQ29sb3IgPSBDb2xvcjo6YmxhY2s7CisgICAgICAgIENvbG9yIGZpbGxDb2xv
ciA9IENvbG9yOjpibGFjazsKICAgICAgICAgQ29sb3Igc2hhZG93Q29sb3I7CiAKLSAgICAgICAg
U3Ryb2tlU3R5bGUgc3Ryb2tlU3R5bGU7Ci0gICAgICAgIFdpbmRSdWxlIGZpbGxSdWxlOworICAg
ICAgICBTdHJva2VTdHlsZSBzdHJva2VTdHlsZSA9IFNvbGlkU3Ryb2tlOworICAgICAgICBXaW5k
UnVsZSBmaWxsUnVsZSA9IFJVTEVfTk9OWkVSTzsKIAotICAgICAgICBDb2xvclNwYWNlIHN0cm9r
ZUNvbG9yU3BhY2U7Ci0gICAgICAgIENvbG9yU3BhY2UgZmlsbENvbG9yU3BhY2U7Ci0gICAgICAg
IENvbG9yU3BhY2Ugc2hhZG93Q29sb3JTcGFjZTsKLQotICAgICAgICBDb21wb3NpdGVPcGVyYXRv
ciBjb21wb3NpdGVPcGVyYXRvcjsKLSAgICAgICAgQmxlbmRNb2RlIGJsZW5kTW9kZTsKKyAgICAg
ICAgQ29sb3JTcGFjZSBzdHJva2VDb2xvclNwYWNlID0gQ29sb3JTcGFjZURldmljZVJHQjsKKyAg
ICAgICAgQ29sb3JTcGFjZSBmaWxsQ29sb3JTcGFjZSA9IENvbG9yU3BhY2VEZXZpY2VSR0I7Cisg
ICAgICAgIENvbG9yU3BhY2Ugc2hhZG93Q29sb3JTcGFjZSA9IENvbG9yU3BhY2VEZXZpY2VSR0I7
CisKKyAgICAgICAgZmxvYXQgYWxwaGEgPSAxOworICAgICAgICBDb21wb3NpdGVPcGVyYXRvciBj
b21wb3NpdGVPcGVyYXRvciA9IENvbXBvc2l0ZVNvdXJjZU92ZXI7CisgICAgICAgIEJsZW5kTW9k
ZSBibGVuZE1vZGUgPSBCbGVuZE1vZGVOb3JtYWw7CiAKICAgICAgICAgYm9vbCBzaG91bGRBbnRp
YWxpYXMgOiAxOwogICAgICAgICBib29sIHNob3VsZFNtb290aEZvbnRzIDogMTsKQEAgLTIxNiw0
NyArMjA1LDUwIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgICAgICBXRUJDT1JFX0VYUE9S
VCBQbGF0Zm9ybUdyYXBoaWNzQ29udGV4dCogcGxhdGZvcm1Db250ZXh0KCkgY29uc3Q7CiAKLSAg
ICAgICAgZmxvYXQgc3Ryb2tlVGhpY2tuZXNzKCkgY29uc3Q7CiAgICAgICAgIHZvaWQgc2V0U3Ry
b2tlVGhpY2tuZXNzKGZsb2F0KTsKLSAgICAgICAgU3Ryb2tlU3R5bGUgc3Ryb2tlU3R5bGUoKSBj
b25zdDsKKyAgICAgICAgZmxvYXQgc3Ryb2tlVGhpY2tuZXNzKCkgY29uc3QgeyByZXR1cm4gbV9z
dGF0ZS5zdHJva2VUaGlja25lc3M7IH0KKwogICAgICAgICB2b2lkIHNldFN0cm9rZVN0eWxlKFN0
cm9rZVN0eWxlKTsKLSAgICAgICAgQ29sb3Igc3Ryb2tlQ29sb3IoKSBjb25zdDsKLSAgICAgICAg
Q29sb3JTcGFjZSBzdHJva2VDb2xvclNwYWNlKCkgY29uc3Q7CisgICAgICAgIFN0cm9rZVN0eWxl
IHN0cm9rZVN0eWxlKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0ZS5zdHJva2VTdHlsZTsgfQorCiAg
ICAgICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0U3Ryb2tlQ29sb3IoY29uc3QgQ29sb3ImLCBD
b2xvclNwYWNlKTsKKyAgICAgICAgQ29sb3Igc3Ryb2tlQ29sb3IoKSBjb25zdCB7IHJldHVybiBt
X3N0YXRlLnN0cm9rZUNvbG9yOyB9CisgICAgICAgIENvbG9yU3BhY2Ugc3Ryb2tlQ29sb3JTcGFj
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGUuc3Ryb2tlQ29sb3JTcGFjZTsgfQogCiAgICAgICAg
IHZvaWQgc2V0U3Ryb2tlUGF0dGVybihSZWY8UGF0dGVybj4mJik7Ci0gICAgICAgIFBhdHRlcm4q
IHN0cm9rZVBhdHRlcm4oKSBjb25zdDsKKyAgICAgICAgUGF0dGVybiogc3Ryb2tlUGF0dGVybigp
IGNvbnN0IHsgcmV0dXJuIG1fc3RhdGUuc3Ryb2tlUGF0dGVybi5nZXQoKTsgfQogCiAgICAgICAg
IHZvaWQgc2V0U3Ryb2tlR3JhZGllbnQoUmVmPEdyYWRpZW50PiYmKTsKLSAgICAgICAgR3JhZGll
bnQqIHN0cm9rZUdyYWRpZW50KCkgY29uc3Q7CisgICAgICAgIEdyYWRpZW50KiBzdHJva2VHcmFk
aWVudCgpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGUuc3Ryb2tlR3JhZGllbnQuZ2V0KCk7IH0KIAot
ICAgICAgICBXaW5kUnVsZSBmaWxsUnVsZSgpIGNvbnN0OwotICAgICAgICB2b2lkIHNldEZpbGxS
dWxlKFdpbmRSdWxlKTsKLSAgICAgICAgQ29sb3IgZmlsbENvbG9yKCkgY29uc3Q7Ci0gICAgICAg
IENvbG9yU3BhY2UgZmlsbENvbG9yU3BhY2UoKSBjb25zdDsKKyAgICAgICAgdm9pZCBzZXRGaWxs
UnVsZShXaW5kUnVsZSBmaWxsUnVsZSkgeyBtX3N0YXRlLmZpbGxSdWxlID0gZmlsbFJ1bGU7IH0K
KyAgICAgICAgV2luZFJ1bGUgZmlsbFJ1bGUoKSBjb25zdCB7IHJldHVybiBtX3N0YXRlLmZpbGxS
dWxlOyB9CisgICAgCiAgICAgICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0RmlsbENvbG9yKGNv
bnN0IENvbG9yJiwgQ29sb3JTcGFjZSk7CisgICAgICAgIENvbG9yIGZpbGxDb2xvcigpIGNvbnN0
IHsgcmV0dXJuIG1fc3RhdGUuZmlsbENvbG9yOyB9CisgICAgICAgIENvbG9yU3BhY2UgZmlsbENv
bG9yU3BhY2UoKSBjb25zdCB7IHJldHVybiBtX3N0YXRlLmZpbGxDb2xvclNwYWNlOyB9CiAKICAg
ICAgICAgdm9pZCBzZXRGaWxsUGF0dGVybihSZWY8UGF0dGVybj4mJik7Ci0gICAgICAgIFBhdHRl
cm4qIGZpbGxQYXR0ZXJuKCkgY29uc3Q7CisgICAgICAgIFBhdHRlcm4qIGZpbGxQYXR0ZXJuKCkg
Y29uc3QgeyByZXR1cm4gbV9zdGF0ZS5maWxsUGF0dGVybi5nZXQoKTsgfQogCiAgICAgICAgIFdF
QkNPUkVfRVhQT1JUIHZvaWQgc2V0RmlsbEdyYWRpZW50KFJlZjxHcmFkaWVudD4mJik7Ci0gICAg
ICAgIEdyYWRpZW50KiBmaWxsR3JhZGllbnQoKSBjb25zdDsKKyAgICAgICAgR3JhZGllbnQqIGZp
bGxHcmFkaWVudCgpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGUuZmlsbEdyYWRpZW50LmdldCgpOyB9
CiAKLSAgICAgICAgdm9pZCBzZXRTaGFkb3dzSWdub3JlVHJhbnNmb3Jtcyhib29sKTsKLSAgICAg
ICAgYm9vbCBzaGFkb3dzSWdub3JlVHJhbnNmb3JtcygpIGNvbnN0OworICAgICAgICB2b2lkIHNl
dFNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zKGJvb2wgc2hhZG93c0lnbm9yZVRyYW5zZm9ybXMpIHsg
bV9zdGF0ZS5zaGFkb3dzSWdub3JlVHJhbnNmb3JtcyA9IHNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1z
OyB9CisgICAgICAgIGJvb2wgc2hhZG93c0lnbm9yZVRyYW5zZm9ybXMoKSBjb25zdCB7IHJldHVy
biBtX3N0YXRlLnNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1zOyB9CiAKICAgICAgICAgV0VCQ09SRV9F
WFBPUlQgdm9pZCBzZXRTaG91bGRBbnRpYWxpYXMoYm9vbCk7Ci0gICAgICAgIGJvb2wgc2hvdWxk
QW50aWFsaWFzKCkgY29uc3Q7CisgICAgICAgIGJvb2wgc2hvdWxkQW50aWFsaWFzKCkgY29uc3Qg
eyByZXR1cm4gbV9zdGF0ZS5zaG91bGRBbnRpYWxpYXM7IH0KIAogICAgICAgICBXRUJDT1JFX0VY
UE9SVCB2b2lkIHNldFNob3VsZFNtb290aEZvbnRzKGJvb2wpOwotICAgICAgICBib29sIHNob3Vs
ZFNtb290aEZvbnRzKCkgY29uc3Q7CisgICAgICAgIGJvb2wgc2hvdWxkU21vb3RoRm9udHMoKSBj
b25zdCB7IHJldHVybiBtX3N0YXRlLnNob3VsZFNtb290aEZvbnRzOyB9CiAKICAgICAgICAgLy8g
Tm9ybWFsbHkgQ0cgZW5hYmxlcyBzdWJwaXhlbC1xdWFudGl6YXRpb24gYmVjYXVzZSBpdCBpbXBy
b3ZlcyB0aGUgcGVyZm9ybWFuY2Ugb2YgYWxpZ25pbmcgZ2x5cGhzLgogICAgICAgICAvLyBJbiBz
b21lIGNhc2VzIHdlIGhhdmUgdG8gZGlzYWJsZSB0byB0byBlbnN1cmUgYSBoaWdoLXF1YWxpdHkg
b3V0cHV0IG9mIHRoZSBnbHlwaHMuCi0gICAgICAgIHZvaWQgc2V0U2hvdWxkU3VicGl4ZWxRdWFu
dGl6ZUZvbnRzKGJvb2wpOwotICAgICAgICBib29sIHNob3VsZFN1YnBpeGVsUXVhbnRpemVGb250
cygpIGNvbnN0OworICAgICAgICB2b2lkIHNldFNob3VsZFN1YnBpeGVsUXVhbnRpemVGb250cyhi
b29sIHNob3VsZFN1YnBpeGVsUXVhbnRpemVGb250cykgeyBtX3N0YXRlLnNob3VsZFN1YnBpeGVs
UXVhbnRpemVGb250cyA9IHNob3VsZFN1YnBpeGVsUXVhbnRpemVGb250czsgfQorICAgICAgICBi
b29sIHNob3VsZFN1YnBpeGVsUXVhbnRpemVGb250cygpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGUu
c2hvdWxkU3VicGl4ZWxRdWFudGl6ZUZvbnRzOyB9CiAKLSAgICAgICAgY29uc3QgR3JhcGhpY3ND
b250ZXh0U3RhdGUmIHN0YXRlKCkgY29uc3Q7CisgICAgICAgIGNvbnN0IEdyYXBoaWNzQ29udGV4
dFN0YXRlJiBzdGF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGU7IH0KIAogI2lmIFVTRShDRykK
ICAgICAgICAgdm9pZCBhcHBseVN0cm9rZVBhdHRlcm4oKTsKQEAgLTMzOCw5ICszMzAsOSBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIAogICAgICAgICBJbnRSZWN0IGNsaXBCb3VuZHMo
KSBjb25zdDsKIAotICAgICAgICBUZXh0RHJhd2luZ01vZGVGbGFncyB0ZXh0RHJhd2luZ01vZGUo
KSBjb25zdDsKICAgICAgICAgdm9pZCBzZXRUZXh0RHJhd2luZ01vZGUoVGV4dERyYXdpbmdNb2Rl
RmxhZ3MpOwotICAgICAgICAKKyAgICAgICAgVGV4dERyYXdpbmdNb2RlRmxhZ3MgdGV4dERyYXdp
bmdNb2RlKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0ZS50ZXh0RHJhd2luZ01vZGU7IH0KKwogICAg
ICAgICBmbG9hdCBkcmF3VGV4dChjb25zdCBGb250Q2FzY2FkZSYsIGNvbnN0IFRleHRSdW4mLCBj
b25zdCBGbG9hdFBvaW50JiwgaW50IGZyb20gPSAwLCBpbnQgdG8gPSAtMSk7CiAgICAgICAgIHZv
aWQgZHJhd0dseXBocyhjb25zdCBGb250Q2FzY2FkZSYsIGNvbnN0IEZvbnQmLCBjb25zdCBHbHlw
aEJ1ZmZlciYsIGludCBmcm9tLCBpbnQgbnVtR2x5cGhzLCBjb25zdCBGbG9hdFBvaW50Jik7CiAg
ICAgICAgIHZvaWQgZHJhd0VtcGhhc2lzTWFya3MoY29uc3QgRm9udENhc2NhZGUmLCBjb25zdCBU
ZXh0UnVuJiAsIGNvbnN0IEF0b21pY1N0cmluZyYgbWFyaywgY29uc3QgRmxvYXRQb2ludCYsIGlu
dCBmcm9tID0gMCwgaW50IHRvID0gLTEpOwpAQCAtMzY3LDI2ICszNTksMjggQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogICAgICAgICBzdGF0aWMgdm9pZCB1cGRhdGVEb2N1bWVudE1hcmtlclJlc291
cmNlcygpOwogICAgICAgICB2b2lkIGRyYXdMaW5lRm9yRG9jdW1lbnRNYXJrZXIoY29uc3QgRmxv
YXRQb2ludCYsIGZsb2F0IHdpZHRoLCBEb2N1bWVudE1hcmtlckxpbmVTdHlsZSk7CiAKLSAgICAg
ICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBwYWludGluZ0Rpc2FibGVkKCkgY29uc3Q7Ci0gICAgICAg
IHZvaWQgc2V0UGFpbnRpbmdEaXNhYmxlZChib29sKTsKKyAgICAgICAgdm9pZCBzZXRQYWludGlu
Z0Rpc2FibGVkKGJvb2wgcGFpbnRpbmdEaXNhYmxlZCkgeyBtX3N0YXRlLnBhaW50aW5nRGlzYWJs
ZWQgPSBwYWludGluZ0Rpc2FibGVkOyB9CisgICAgICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgcGFp
bnRpbmdEaXNhYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGUucGFpbnRpbmdEaXNhYmxlZDsg
fQogCi0gICAgICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgdXBkYXRpbmdDb250cm9sVGludHMoKSBj
b25zdDsKICAgICAgICAgdm9pZCBzZXRVcGRhdGluZ0NvbnRyb2xUaW50cyhib29sKTsKKyAgICAg
ICAgV0VCQ09SRV9FWFBPUlQgYm9vbCB1cGRhdGluZ0NvbnRyb2xUaW50cygpIGNvbnN0IHsgcmV0
dXJuIG1fdXBkYXRpbmdDb250cm9sVGludHM7IH0KIAogICAgICAgICBXRUJDT1JFX0VYUE9SVCB2
b2lkIGJlZ2luVHJhbnNwYXJlbmN5TGF5ZXIoZmxvYXQgb3BhY2l0eSk7CiAgICAgICAgIFdFQkNP
UkVfRVhQT1JUIHZvaWQgZW5kVHJhbnNwYXJlbmN5TGF5ZXIoKTsKLSAgICAgICAgYm9vbCBpc0lu
VHJhbnNwYXJlbmN5TGF5ZXIoKSBjb25zdDsKKyAgICAgICAgYm9vbCBpc0luVHJhbnNwYXJlbmN5
TGF5ZXIoKSBjb25zdCB7IHJldHVybiAobV90cmFuc3BhcmVuY3lDb3VudCA+IDApICYmIHN1cHBv
cnRzVHJhbnNwYXJlbmN5TGF5ZXJzKCk7IH0KIAotICAgICAgICBib29sIGhhc1NoYWRvdygpIGNv
bnN0OwogICAgICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFNoYWRvdyhjb25zdCBGbG9hdFNp
emUmLCBmbG9hdCBibHVyLCBjb25zdCBDb2xvciYsIENvbG9yU3BhY2UpOwogICAgICAgICAvLyBM
ZWdhY3kgc2hhZG93IGJsdXIgcmFkaXVzIGlzIHVzZWQgZm9yIGNhbnZhcywgYW5kIC13ZWJraXQt
Ym94LXNoYWRvdy4KICAgICAgICAgLy8gSXQgaGFzIGRpZmZlcmVudCB0cmVhdG1lbnQgb2YgcmFk
aWkgPiA4cHguCiAgICAgICAgIHZvaWQgc2V0TGVnYWN5U2hhZG93KGNvbnN0IEZsb2F0U2l6ZSYs
IGZsb2F0IGJsdXIsIGNvbnN0IENvbG9yJiwgQ29sb3JTcGFjZSk7CiAKLSAgICAgICAgYm9vbCBn
ZXRTaGFkb3coRmxvYXRTaXplJiwgZmxvYXQmLCBDb2xvciYsIENvbG9yU3BhY2UmKSBjb25zdDsK
ICAgICAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBjbGVhclNoYWRvdygpOworICAgICAgICBib29s
IGdldFNoYWRvdyhGbG9hdFNpemUmLCBmbG9hdCYsIENvbG9yJiwgQ29sb3JTcGFjZSYpIGNvbnN0
OworCisgICAgICAgIGJvb2wgaGFzVmlzaWJsZVNoYWRvdygpIGNvbnN0IHsgcmV0dXJuIG1fc3Rh
dGUuc2hhZG93Q29sb3IuaXNWYWxpZCgpICYmIG1fc3RhdGUuc2hhZG93Q29sb3IuYWxwaGEoKTsg
fQorICAgICAgICBib29sIGhhc1NoYWRvdygpIGNvbnN0IHsgcmV0dXJuIGhhc1Zpc2libGVTaGFk
b3coKSAmJiAobV9zdGF0ZS5zaGFkb3dCbHVyIHx8IG1fc3RhdGUuc2hhZG93T2Zmc2V0LndpZHRo
KCkgfHwgbV9zdGF0ZS5zaGFkb3dPZmZzZXQuaGVpZ2h0KCkpOyB9CisgICAgICAgIGJvb2wgaGFz
Qmx1cnJlZFNoYWRvdygpIGNvbnN0IHsgcmV0dXJuIGhhc1Zpc2libGVTaGFkb3coKSAmJiBtX3N0
YXRlLnNoYWRvd0JsdXI7IH0KIAotICAgICAgICBib29sIGhhc0JsdXJyZWRTaGFkb3coKSBjb25z
dDsKICNpZiBVU0UoQ0FJUk8pCiAgICAgICAgIGJvb2wgbXVzdFVzZVNoYWRvd0JsdXIoKSBjb25z
dDsKICNlbmRpZgpAQCAtNDAzLDEzICszOTcsMTQgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAg
ICAgICB2b2lkIHNldE1pdGVyTGltaXQoZmxvYXQpOwogCiAgICAgICAgIHZvaWQgc2V0QWxwaGEo
ZmxvYXQpOworICAgICAgICBmbG9hdCBhbHBoYSgpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGUuYWxw
aGE7IH0KIAogICAgICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldENvbXBvc2l0ZU9wZXJhdGlv
bihDb21wb3NpdGVPcGVyYXRvciwgQmxlbmRNb2RlID0gQmxlbmRNb2RlTm9ybWFsKTsKLSAgICAg
ICAgQ29tcG9zaXRlT3BlcmF0b3IgY29tcG9zaXRlT3BlcmF0aW9uKCkgY29uc3Q7Ci0gICAgICAg
IEJsZW5kTW9kZSBibGVuZE1vZGVPcGVyYXRpb24oKSBjb25zdDsKKyAgICAgICAgQ29tcG9zaXRl
T3BlcmF0b3IgY29tcG9zaXRlT3BlcmF0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0ZS5jb21w
b3NpdGVPcGVyYXRvcjsgfQorICAgICAgICBCbGVuZE1vZGUgYmxlbmRNb2RlT3BlcmF0aW9uKCkg
Y29uc3QgeyByZXR1cm4gbV9zdGF0ZS5ibGVuZE1vZGU7IH0KIAotICAgICAgICB2b2lkIHNldERy
YXdMdW1pbmFuY2VNYXNrKGJvb2wpOwotICAgICAgICBib29sIGRyYXdMdW1pbmFuY2VNYXNrKCkg
Y29uc3Q7CisgICAgICAgIHZvaWQgc2V0RHJhd0x1bWluYW5jZU1hc2soYm9vbCBkcmF3THVtaW5h
bmNlTWFzaykgeyBtX3N0YXRlLmRyYXdMdW1pbmFuY2VNYXNrID0gZHJhd0x1bWluYW5jZU1hc2s7
IH0KKyAgICAgICAgYm9vbCBkcmF3THVtaW5hbmNlTWFzaygpIGNvbnN0IHsgcmV0dXJuIG1fc3Rh
dGUuZHJhd0x1bWluYW5jZU1hc2s7IH0KIAogICAgICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNs
aXAoY29uc3QgUGF0aCYsIFdpbmRSdWxlID0gUlVMRV9FVkVOT0REKTsKIApAQCAtNTQwLDYgKzUz
NSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdm9pZCBzZXRQbGF0Zm9ybVNoYWRv
dyhjb25zdCBGbG9hdFNpemUmLCBmbG9hdCBibHVyLCBjb25zdCBDb2xvciYsIENvbG9yU3BhY2Up
OwogICAgICAgICB2b2lkIGNsZWFyUGxhdGZvcm1TaGFkb3coKTsKIAorICAgICAgICB2b2lkIHNl
dFBsYXRmb3JtQWxwaGEoZmxvYXQpOwogICAgICAgICB2b2lkIHNldFBsYXRmb3JtQ29tcG9zaXRl
T3BlcmF0aW9uKENvbXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGUgPSBCbGVuZE1vZGVOb3JtYWwp
OwogCiAgICAgICAgIHZvaWQgYmVnaW5QbGF0Zm9ybVRyYW5zcGFyZW5jeUxheWVyKGZsb2F0IG9w
YWNpdHkpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3Jh
cGhpY3NDb250ZXh0Q2Fpcm8uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dENhaXJvLmNwcAkocmV2aXNpb24gMTgw
NDQ0KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3ND
b250ZXh0Q2Fpcm8uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05MjgsNyArOTI4LDcgQEAgdm9pZCBH
cmFwaGljc0NvbnRleHQ6OnNldE1pdGVyTGltaXQoZmxvYQogICAgIGNhaXJvX3NldF9taXRlcl9s
aW1pdChwbGF0Zm9ybUNvbnRleHQoKS0+Y3IoKSwgbWl0ZXIpOwogfQogCi12b2lkIEdyYXBoaWNz
Q29udGV4dDo6c2V0QWxwaGEoZmxvYXQgYWxwaGEpCit2b2lkIEdyYXBoaWNzQ29udGV4dDo6c2V0
UGxhdGZvcm1BbHBoYShmbG9hdCBhbHBoYSkKIHsKICAgICBwbGF0Zm9ybUNvbnRleHQoKS0+c2V0
R2xvYmFsQWxwaGEoYWxwaGEpOwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dENHLmNwcAkocmV2aXNpb24g
MTgwNDQ0KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3ND
b250ZXh0Q0cuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05OTYsMTMgKzk5Niw2IEBAIHZvaWQgR3Jh
cGhpY3NDb250ZXh0OjpzZXRNaXRlckxpbWl0KGZsb2EKICAgICBDR0NvbnRleHRTZXRNaXRlckxp
bWl0KHBsYXRmb3JtQ29udGV4dCgpLCBsaW1pdCk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0
OjpzZXRBbHBoYShmbG9hdCBhbHBoYSkKLXsKLSAgICBpZiAocGFpbnRpbmdEaXNhYmxlZCgpKQot
ICAgICAgICByZXR1cm47Ci0gICAgQ0dDb250ZXh0U2V0QWxwaGEocGxhdGZvcm1Db250ZXh0KCks
IGFscGhhKTsKLX0KLQogdm9pZCBHcmFwaGljc0NvbnRleHQ6OmNsZWFyUmVjdChjb25zdCBGbG9h
dFJlY3QmIHIpCiB7CiAgICAgaWYgKHBhaW50aW5nRGlzYWJsZWQoKSkKQEAgLTE0ODEsNiArMTQ3
NCwxMyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6c2V0UGxhdGZvcm1TaG91bGRTCiAgICAgQ0dD
b250ZXh0U2V0U2hvdWxkU21vb3RoRm9udHMocGxhdGZvcm1Db250ZXh0KCksIGVuYWJsZSk7CiB9
CiAKK3ZvaWQgR3JhcGhpY3NDb250ZXh0OjpzZXRQbGF0Zm9ybUFscGhhKGZsb2F0IGFscGhhKQor
eworICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkpCisgICAgICAgIHJldHVybjsKKyAgICBDR0Nv
bnRleHRTZXRBbHBoYShwbGF0Zm9ybUNvbnRleHQoKSwgYWxwaGEpOworfQorCiB2b2lkIEdyYXBo
aWNzQ29udGV4dDo6c2V0UGxhdGZvcm1Db21wb3NpdGVPcGVyYXRpb24oQ29tcG9zaXRlT3BlcmF0
b3IgbW9kZSwgQmxlbmRNb2RlIGJsZW5kTW9kZSkKIHsKICAgICBpZiAocGFpbnRpbmdEaXNhYmxl
ZCgpKQpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuY3BwCShyZXZp
c2lvbiAxODA0NDQpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0yMjksOSArMjI5LDExIEBAIHZvaWQgU1ZHSW1hZ2U6OmRyYXco
R3JhcGhpY3NDb250ZXh0KiBjb24KICAgICBHcmFwaGljc0NvbnRleHRTdGF0ZVNhdmVyIHN0YXRl
U2F2ZXIoKmNvbnRleHQpOwogICAgIGNvbnRleHQtPnNldENvbXBvc2l0ZU9wZXJhdGlvbihjb21w
b3NpdGVPcCwgYmxlbmRNb2RlKTsKICAgICBjb250ZXh0LT5jbGlwKGVuY2xvc2luZ0ludFJlY3Qo
ZHN0UmVjdCkpOwotICAgIGJvb2wgY29tcG9zaXRpbmdSZXF1aXJlc1RyYW5zcGFyZW5jeUxheWVy
ID0gY29tcG9zaXRlT3AgIT0gQ29tcG9zaXRlU291cmNlT3ZlciB8fCBibGVuZE1vZGUgIT0gQmxl
bmRNb2RlTm9ybWFsOworCisgICAgZmxvYXQgYWxwaGEgPSBjb250ZXh0LT5hbHBoYSgpOworICAg
IGJvb2wgY29tcG9zaXRpbmdSZXF1aXJlc1RyYW5zcGFyZW5jeUxheWVyID0gY29tcG9zaXRlT3Ag
IT0gQ29tcG9zaXRlU291cmNlT3ZlciB8fCBibGVuZE1vZGUgIT0gQmxlbmRNb2RlTm9ybWFsIHx8
IGFscGhhIDwgMTsKICAgICBpZiAoY29tcG9zaXRpbmdSZXF1aXJlc1RyYW5zcGFyZW5jeUxheWVy
KSB7Ci0gICAgICAgIGNvbnRleHQtPmJlZ2luVHJhbnNwYXJlbmN5TGF5ZXIoMSk7CisgICAgICAg
IGNvbnRleHQtPmJlZ2luVHJhbnNwYXJlbmN5TGF5ZXIoYWxwaGEpOwogICAgICAgICBjb250ZXh0
LT5zZXRDb21wb3NpdGVPcGVyYXRpb24oQ29tcG9zaXRlU291cmNlT3ZlciwgQmxlbmRNb2RlTm9y
bWFsKTsKICAgICB9CiAKSW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDE4MDQ0NCkKKysrIExheW91dFRlc3Rz
L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE2IEBACisyMDE1LTAyLTIwICBT
YWlkIEFib3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CisKKyAgICAgICAgRHJh
d2luZyBhbiBTVkcgaW1hZ2UgaW50byBhIGNhbnZhcyB1c2luZyBkcmF3SW1hZ2UoKSBpZ25vcmVz
IGdsb2JhbEFscGhhLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTQxNzI5LgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIEFkZCBhIG5ldyB0ZXN0IHdoaWNoIGRyYXdzIGFuIFNWRyBpbWFnZSBvbiBhIGNhbnZh
cyBhZnRlciBzZXR0aW5nIGl0cyAKKyAgICAgICAgZ2xvYmFsQWxwaGEgdG8gYSB2YWx1ZSBsZXNz
IHRoYW4gMS4KKworICAgICAgICAqIHN2Zy9jYW52YXMvY2FudmFzLWdsb2JhbC1hbHBoYS1zdmct
ZXhwZWN0ZWQuaHRtbDogQWRkZWQuCisgICAgICAgICogc3ZnL2NhbnZhcy9jYW52YXMtZ2xvYmFs
LWFscGhhLXN2Zy5odG1sOiBBZGRlZC4KKwogMjAxNS0wMi0yMCAgQWxleGV5IFByb3NrdXJ5YWtv
diAgPGFwQGFwcGxlLmNvbT4KIAogICAgICAgICBSZW1vdmUgc3ZuOmtleXdvcmRzIHByb3BlcnR5
LgpJbmRleDogTGF5b3V0VGVzdHMvc3ZnL2NhbnZhcy9jYW52YXMtZ2xvYmFsLWFscGhhLXN2Zy1l
eHBlY3RlZC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3N2Zy9jYW52YXMvY2FudmFz
LWdsb2JhbC1hbHBoYS1zdmctZXhwZWN0ZWQuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRl
c3RzL3N2Zy9jYW52YXMvY2FudmFzLWdsb2JhbC1hbHBoYS1zdmctZXhwZWN0ZWQuaHRtbAkod29y
a2luZyBjb3B5KQpAQCAtMCwwICsxLDM0IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhl
YWQ+CisgIDxzdHlsZT4KKyAgICBkaXYgeworICAgICAgYm9yZGVyLXdpZHRoOiAyNXB4OworICAg
ICAgYm9yZGVyLXN0eWxlOiBzb2xpZDsKKyAgICAgIGJvcmRlci1jb2xvcjogZ3JlZW47CisgICAg
fQorICAgIC5tYWluIHsKKyAgICAgIHdpZHRoOiAxMDBweDsKKyAgICAgIGhlaWdodDogMTAwcHg7
CisgICAgfQorICAgIC5zdWIgeworICAgICAgd2lkdGg6IDUwcHg7CisgICAgICBoZWlnaHQ6IDUw
cHg7CisgICAgfQorICAgIC5zdWItc3ViIHsKKyAgICAgIHdpZHRoOiAwcHg7CisgICAgICBoZWln
aHQ6IDBweDsKKyAgICB9CisgICAgLmxvdy1vcGFjaXR5IHsKKyAgICAgIG9wYWNpdHk6IDAuMjsg
ICAKKyAgICB9CisgIDwvc3R5bGU+Cis8L2hlYWQ+Cis8Ym9keT4KKyAgPGRpdiBjbGFzcz0ibWFp
biI+CisgICAgPGRpdiBjbGFzcz0ic3ViIGxvdy1vcGFjaXR5Ij4KKyAgICAgIDxkaXYgY2xhc3M9
InN1Yi1zdWIgbG93LW9wYWNpdHkiPjwvZGl2PgorICAgIDwvZGl2PgorICA8L2Rpdj4KKzwvYm9k
eT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL3N2Zy9jYW52YXMvY2FudmFzLWdsb2JhbC1h
bHBoYS1zdmcuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9zdmcvY2FudmFzL2NhbnZh
cy1nbG9iYWwtYWxwaGEtc3ZnLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9zdmcv
Y2FudmFzL2NhbnZhcy1nbG9iYWwtYWxwaGEtc3ZnLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTAs
MCArMSwyOCBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxib2R5PgorICA8Y2FudmFzIGlk
PSJjYW52YXMiPjwvY2FudmFzPgorICA8c2NyaXB0PgorICAgIHZhciBjYW52YXMgPSBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgiY2FudmFzIik7CisgICAgY2FudmFzLndpZHRoICA9IDE1MDsKKyAg
ICBjYW52YXMuaGVpZ2h0ID0gMTUwOworICAgIAorICAgIHZhciBjb250ZXh0ID0gY2FudmFzLmdl
dENvbnRleHQoIjJkIik7ICAgIAorICAgIGNvbnRleHQuc3Ryb2tlU3R5bGUgPSAiZ3JlZW4iOwor
ICAgIGNvbnRleHQubGluZVdpZHRoID0gNTA7CisgICAgY29udGV4dC5zdHJva2VSZWN0KDAsMCwx
NTAsMTUwKTsKKworICAgIHZhciBzdmdJbWFnZSA9IG5ldyBJbWFnZSgpOworICAgIHN2Z0ltYWdl
Lm9ubG9hZCA9IGZ1bmN0aW9uKCkgeworICAgICAgY29udGV4dC5nbG9iYWxBbHBoYSA9IDAuMjsK
KwkgIGNvbnRleHQuZHJhd0ltYWdlKHN2Z0ltYWdlLCAyNSwgMjUpOworICAgIH07CisgICAgCisg
ICAgc3ZnSW1hZ2Uuc3JjID0gImRhdGE6aW1hZ2Uvc3ZnK3htbCwgXAorICAgIDxzdmcgeG1sbnM9
J2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJyB3aWR0aD0nMTAwJyBoZWlnaHQ9JzEwMCc+IFwK
KyAgICAgIDxyZWN0IHdpZHRoPScxMDAlJyBoZWlnaHQ9JzEwMCUnIHN0eWxlPSdmaWxsOm5vbmU7
c3Ryb2tlOmdyZWVuO3N0cm9rZS13aWR0aDo1MCU7Jy8+IFwKKyAgICAgIDxyZWN0IHg9JzI1JScg
eT0nMjUlJyB3aWR0aD0nNTAlJyBoZWlnaHQ9JzUwJScgZmlsbD0nZ3JlZW4nIGZpbGwtb3BhY2l0
eT0nMC4yJy8+IFwKKyAgICA8L3N2Zz4iOworICA8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>247040</attachid>
            <date>2015-02-20 21:51:17 -0800</date>
            <delta_ts>2015-02-23 12:31:21 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-141729-20150220215108.patch</filename>
            <type>text/plain</type>
            <size>23396</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE4MDQ0NCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQyIEBACisyMDE1LTAyLTIwICBTYWlkIEFi
b3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CisKKyAgICAgICAgRHJhd2luZyBh
biBTVkcgaW1hZ2UgaW50byBhIGNhbnZhcyB1c2luZyBkcmF3SW1hZ2UoKSBpZ25vcmVzIGdsb2Jh
bEFscGhhLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTQxNzI5LgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFdoZW4gZHJhd2luZyBhbiBTVkcgaW1hZ2UgYW5kIHRoZSBkcmF3aW5nIGNvbnRleHQgaXMgc2V0
IHRvIGJlIHRyYW5zcGFyZW50LAorICAgICAgICBtYWtlIHN1cmUgdGhpcyB0cmFuc3BhcmVuY3kg
aXMgYXBwbGllZCB0byB0aGUgY29tcG9zaXRpbmcgbGF5ZXIuCisKKyAgICAgICAgVGVzdDogc3Zn
L2NhbnZhcy9jYW52YXMtZ2xvYmFsLWFscGhhLXN2Zy5odG1sCisKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0OjpzZXRBbHBoYSk6IE1ha2Ugc2V0QWxwaGEoKSBjYWxscyB0aGUgcGxhdGZvcm0K
KyAgICAgICAgZnVuY3Rpb24gYW5kIHNldHMgJ21fc3RhdGUuYWxwaGEnIHRvIHRoZSBpbnB1dCB2
YWx1ZS4KKworICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjphbHBoYSk6IEFkZCBh
IG5ldyBmdW5jdGlvbiAnYWxwaGEoKScgd2hpY2gKKyAgICAgICAgcmV0dXJucyB0aGUgdmFsdWUg
b2YgdGhlIGdsb2JhbCBhbHBoYS4KKyAgICAgICAgCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvR3JhcGhpY3NDb250ZXh0Lmg6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRT
dGF0ZTo6R3JhcGhpY3NDb250ZXh0U3RhdGUpOiBBZGQgYSBuZXcgbWVtYmVyCisgICAgICAgICdh
bHBoYScgdG8gdGhlIGNvbnRleHQgc3RhdGUgc2luY2UgdGhlIGdldHRlciBmdW5jdGlvbiBDR0Nv
bnRleHRHZXRBbHBoYQorICAgICAgICBpcyBkZWZpbmVkIG9ubHkgaW4gYSBwcml2YXRlIGhlYWRl
ciBmaWxlLiBBbHNvIG1vdmUgc2luZ2xlIGxpbmUgZnVuY3Rpb25zCisgICAgICAgIGZyb20gdGhl
IHNvdXJjZSBmaWxlIHRvIHRoZSBoZWFkZXIgZmlsZS4KKyAgICAKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRDYWlyby5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpHcmFwaGljc0NvbnRleHQ6OnNldFBsYXRmb3JtQWxwaGEpOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0OjpzZXRBbHBoYSk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0OjpzZXRQbGF0Zm9ybUFscGhhKToKKyAgICAgICAgKFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dDo6c2V0QWxwaGEpOiBEZWxldGVkLgorICAgICAgICBSZW5hbWUgc2V0QWxw
aGEoKSB0byBzZXRQbGF0Zm9ybUFscGhhKCkgaW4gdGhlIHBsYXRmb3JtIGZpbGVzLiBBZGQgc2V0
QWxwaGEoKQorICAgICAgICB0byB0aGUgY29yZSBmaWxlLiBzZXRBbHBoYSgpIHdpbGwgc2V0IHRo
ZSB2YWx1ZSBvZiAnbV9zdGF0ZS5hbHBoYScgYW5kIGNhbGwKKyAgICAgICAgc2V0UGxhdGZvcm1B
bHBoYSgpLgorICAgIAorICAgICAgICAqIHN2Zy9ncmFwaGljcy9TVkdJbWFnZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpTVkdJbWFnZTo6ZHJhdyk6IElmIHRoZSBkcmF3aW5nIGNvbnRleHQgaXMg
dHJhbnNwYXJlbnQsIGFwcGx5IGl0cworICAgICAgICBnbG9iYWwgYWxwaGEgdmFsdWUgdG8gdGhl
IGNvbXBvc2l0aW5nIGxheWVyLgorICAgICAgICAKIDIwMTUtMDItMjAgIEFsZXhleSBQcm9za3Vy
eWFrb3YgIDxhcEBhcHBsZS5jb20+CiAKICAgICAgICAgUmVtb3ZlIHN2bjprZXl3b3JkcyBwcm9w
ZXJ0eS4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29u
dGV4dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
R3JhcGhpY3NDb250ZXh0LmNwcAkocmV2aXNpb24gMTgwNDQ0KQorKysgU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MjA4LDEyICsyMDgsNiBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6Y2xlYXJTaGFkb3coKQogICAg
IGNsZWFyUGxhdGZvcm1TaGFkb3coKTsKIH0KIAotYm9vbCBHcmFwaGljc0NvbnRleHQ6Omhhc1No
YWRvdygpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fc3RhdGUuc2hhZG93Q29sb3IuaXNWYWxpZCgp
ICYmIG1fc3RhdGUuc2hhZG93Q29sb3IuYWxwaGEoKQotICAgICAgICAgICAmJiAobV9zdGF0ZS5z
aGFkb3dCbHVyIHx8IG1fc3RhdGUuc2hhZG93T2Zmc2V0LndpZHRoKCkgfHwgbV9zdGF0ZS5zaGFk
b3dPZmZzZXQuaGVpZ2h0KCkpOwotfQotCiBib29sIEdyYXBoaWNzQ29udGV4dDo6Z2V0U2hhZG93
KEZsb2F0U2l6ZSYgb2Zmc2V0LCBmbG9hdCYgYmx1ciwgQ29sb3ImIGNvbG9yLCBDb2xvclNwYWNl
JiBjb2xvclNwYWNlKSBjb25zdAogewogICAgIG9mZnNldCA9IG1fc3RhdGUuc2hhZG93T2Zmc2V0
OwpAQCAtMjI0LDExICsyMTgsNiBAQCBib29sIEdyYXBoaWNzQ29udGV4dDo6Z2V0U2hhZG93KEZs
b2F0U2l6CiAgICAgcmV0dXJuIGhhc1NoYWRvdygpOwogfQogCi1ib29sIEdyYXBoaWNzQ29udGV4
dDo6aGFzQmx1cnJlZFNoYWRvdygpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fc3RhdGUuc2hhZG93
Q29sb3IuaXNWYWxpZCgpICYmIG1fc3RhdGUuc2hhZG93Q29sb3IuYWxwaGEoKSAmJiBtX3N0YXRl
LnNoYWRvd0JsdXI7Ci19Ci0KICNpZiBVU0UoQ0FJUk8pCiBib29sIEdyYXBoaWNzQ29udGV4dDo6
bXVzdFVzZVNoYWRvd0JsdXIoKSBjb25zdAogewpAQCAtMjQ3LDM2ICsyMzYsNiBAQCBib29sIEdy
YXBoaWNzQ29udGV4dDo6bXVzdFVzZVNoYWRvd0JsdXIoCiB9CiAjZW5kaWYKIAotZmxvYXQgR3Jh
cGhpY3NDb250ZXh0OjpzdHJva2VUaGlja25lc3MoKSBjb25zdAotewotICAgIHJldHVybiBtX3N0
YXRlLnN0cm9rZVRoaWNrbmVzczsKLX0KLQotU3Ryb2tlU3R5bGUgR3JhcGhpY3NDb250ZXh0Ojpz
dHJva2VTdHlsZSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fc3RhdGUuc3Ryb2tlU3R5bGU7Ci19
Ci0KLUNvbG9yIEdyYXBoaWNzQ29udGV4dDo6c3Ryb2tlQ29sb3IoKSBjb25zdAotewotICAgIHJl
dHVybiBtX3N0YXRlLnN0cm9rZUNvbG9yOwotfQotCi1Db2xvclNwYWNlIEdyYXBoaWNzQ29udGV4
dDo6c3Ryb2tlQ29sb3JTcGFjZSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fc3RhdGUuc3Ryb2tl
Q29sb3JTcGFjZTsKLX0KLQotV2luZFJ1bGUgR3JhcGhpY3NDb250ZXh0OjpmaWxsUnVsZSgpIGNv
bnN0Ci17Ci0gICAgcmV0dXJuIG1fc3RhdGUuZmlsbFJ1bGU7Ci19Ci0KLXZvaWQgR3JhcGhpY3ND
b250ZXh0OjpzZXRGaWxsUnVsZShXaW5kUnVsZSBmaWxsUnVsZSkKLXsKLSAgICBtX3N0YXRlLmZp
bGxSdWxlID0gZmlsbFJ1bGU7Ci19Ci0KIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpzZXRGaWxsQ29s
b3IoY29uc3QgQ29sb3ImIGNvbG9yLCBDb2xvclNwYWNlIGNvbG9yU3BhY2UpCiB7CiAgICAgbV9z
dGF0ZS5maWxsQ29sb3IgPSBjb2xvcjsKQEAgLTI4Niw1MSArMjQ1LDE2IEBAIHZvaWQgR3JhcGhp
Y3NDb250ZXh0OjpzZXRGaWxsQ29sb3IoY29uc3QKICAgICBzZXRQbGF0Zm9ybUZpbGxDb2xvcihj
b2xvciwgY29sb3JTcGFjZSk7CiB9CiAKLUNvbG9yIEdyYXBoaWNzQ29udGV4dDo6ZmlsbENvbG9y
KCkgY29uc3QKK3ZvaWQgR3JhcGhpY3NDb250ZXh0OjpzZXRTaG91bGRBbnRpYWxpYXMoYm9vbCBz
aG91bGRBbnRpYWxpYXMpCiB7Ci0gICAgcmV0dXJuIG1fc3RhdGUuZmlsbENvbG9yOworICAgIG1f
c3RhdGUuc2hvdWxkQW50aWFsaWFzID0gc2hvdWxkQW50aWFsaWFzOworICAgIHNldFBsYXRmb3Jt
U2hvdWxkQW50aWFsaWFzKHNob3VsZEFudGlhbGlhcyk7CiB9CiAKLUNvbG9yU3BhY2UgR3JhcGhp
Y3NDb250ZXh0OjpmaWxsQ29sb3JTcGFjZSgpIGNvbnN0Cit2b2lkIEdyYXBoaWNzQ29udGV4dDo6
c2V0U2hvdWxkU21vb3RoRm9udHMoYm9vbCBzaG91bGRTbW9vdGhGb250cykKIHsKLSAgICByZXR1
cm4gbV9zdGF0ZS5maWxsQ29sb3JTcGFjZTsKLX0KLQotdm9pZCBHcmFwaGljc0NvbnRleHQ6OnNl
dFNob3VsZEFudGlhbGlhcyhib29sIGIpCi17Ci0gICAgbV9zdGF0ZS5zaG91bGRBbnRpYWxpYXMg
PSBiOwotICAgIHNldFBsYXRmb3JtU2hvdWxkQW50aWFsaWFzKGIpOwotfQotCi1ib29sIEdyYXBo
aWNzQ29udGV4dDo6c2hvdWxkQW50aWFsaWFzKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9zdGF0
ZS5zaG91bGRBbnRpYWxpYXM7Ci19Ci0KLXZvaWQgR3JhcGhpY3NDb250ZXh0OjpzZXRTaG91bGRT
bW9vdGhGb250cyhib29sIGIpCi17Ci0gICAgbV9zdGF0ZS5zaG91bGRTbW9vdGhGb250cyA9IGI7
Ci0gICAgc2V0UGxhdGZvcm1TaG91bGRTbW9vdGhGb250cyhiKTsKLX0KLQotYm9vbCBHcmFwaGlj
c0NvbnRleHQ6OnNob3VsZFNtb290aEZvbnRzKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9zdGF0
ZS5zaG91bGRTbW9vdGhGb250czsKLX0KLQotdm9pZCBHcmFwaGljc0NvbnRleHQ6OnNldFNob3Vs
ZFN1YnBpeGVsUXVhbnRpemVGb250cyhib29sIGIpCi17Ci0gICAgbV9zdGF0ZS5zaG91bGRTdWJw
aXhlbFF1YW50aXplRm9udHMgPSBiOwotfQotCi1ib29sIEdyYXBoaWNzQ29udGV4dDo6c2hvdWxk
U3VicGl4ZWxRdWFudGl6ZUZvbnRzKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9zdGF0ZS5zaG91
bGRTdWJwaXhlbFF1YW50aXplRm9udHM7Ci19Ci0KLWNvbnN0IEdyYXBoaWNzQ29udGV4dFN0YXRl
JiBHcmFwaGljc0NvbnRleHQ6OnN0YXRlKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9zdGF0ZTsK
KyAgICBtX3N0YXRlLnNob3VsZFNtb290aEZvbnRzID0gc2hvdWxkU21vb3RoRm9udHM7CisgICAg
c2V0UGxhdGZvcm1TaG91bGRTbW9vdGhGb250cyhzaG91bGRTbW9vdGhGb250cyk7CiB9CiAKIHZv
aWQgR3JhcGhpY3NDb250ZXh0OjpzZXRTdHJva2VQYXR0ZXJuKFJlZjxQYXR0ZXJuPiYmIHBhdHRl
cm4pCkBAIC0zNTcsMzYgKzI4MSw2IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpzZXRGaWxsR3Jh
ZGllbnQoUmUKICAgICBtX3N0YXRlLmZpbGxQYXR0ZXJuLmNsZWFyKCk7CiB9CiAKLUdyYWRpZW50
KiBHcmFwaGljc0NvbnRleHQ6OmZpbGxHcmFkaWVudCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1f
c3RhdGUuZmlsbEdyYWRpZW50LmdldCgpOwotfQotCi1HcmFkaWVudCogR3JhcGhpY3NDb250ZXh0
OjpzdHJva2VHcmFkaWVudCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fc3RhdGUuc3Ryb2tlR3Jh
ZGllbnQuZ2V0KCk7Ci19Ci0KLVBhdHRlcm4qIEdyYXBoaWNzQ29udGV4dDo6ZmlsbFBhdHRlcm4o
KSBjb25zdAotewotICAgIHJldHVybiBtX3N0YXRlLmZpbGxQYXR0ZXJuLmdldCgpOwotfQotCi1Q
YXR0ZXJuKiBHcmFwaGljc0NvbnRleHQ6OnN0cm9rZVBhdHRlcm4oKSBjb25zdAotewotICAgIHJl
dHVybiBtX3N0YXRlLnN0cm9rZVBhdHRlcm4uZ2V0KCk7Ci19Ci0KLXZvaWQgR3JhcGhpY3NDb250
ZXh0OjpzZXRTaGFkb3dzSWdub3JlVHJhbnNmb3Jtcyhib29sIGlnbm9yZVRyYW5zZm9ybXMpCi17
Ci0gICAgbV9zdGF0ZS5zaGFkb3dzSWdub3JlVHJhbnNmb3JtcyA9IGlnbm9yZVRyYW5zZm9ybXM7
Ci19Ci0KLWJvb2wgR3JhcGhpY3NDb250ZXh0OjpzaGFkb3dzSWdub3JlVHJhbnNmb3JtcygpIGNv
bnN0Ci17Ci0gICAgcmV0dXJuIG1fc3RhdGUuc2hhZG93c0lnbm9yZVRyYW5zZm9ybXM7Ci19Ci0K
IHZvaWQgR3JhcGhpY3NDb250ZXh0OjpiZWdpblRyYW5zcGFyZW5jeUxheWVyKGZsb2F0IG9wYWNp
dHkpCiB7CiAgICAgYmVnaW5QbGF0Zm9ybVRyYW5zcGFyZW5jeUxheWVyKG9wYWNpdHkpOwpAQCAt
NDAwLDMyICsyOTQsMTIgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmVuZFRyYW5zcGFyZW5jeUxh
eQogICAgIC0tbV90cmFuc3BhcmVuY3lDb3VudDsKIH0KIAotYm9vbCBHcmFwaGljc0NvbnRleHQ6
OmlzSW5UcmFuc3BhcmVuY3lMYXllcigpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIChtX3RyYW5zcGFy
ZW5jeUNvdW50ID4gMCkgJiYgc3VwcG9ydHNUcmFuc3BhcmVuY3lMYXllcnMoKTsKLX0KLQotYm9v
bCBHcmFwaGljc0NvbnRleHQ6OnVwZGF0aW5nQ29udHJvbFRpbnRzKCkgY29uc3QKLXsKLSAgICBy
ZXR1cm4gbV91cGRhdGluZ0NvbnRyb2xUaW50czsKLX0KLQogdm9pZCBHcmFwaGljc0NvbnRleHQ6
OnNldFVwZGF0aW5nQ29udHJvbFRpbnRzKGJvb2wgYikKIHsKICAgICBzZXRQYWludGluZ0Rpc2Fi
bGVkKGIpOwogICAgIG1fdXBkYXRpbmdDb250cm9sVGludHMgPSBiOwogfQogCi12b2lkIEdyYXBo
aWNzQ29udGV4dDo6c2V0UGFpbnRpbmdEaXNhYmxlZChib29sIGYpCi17Ci0gICAgbV9zdGF0ZS5w
YWludGluZ0Rpc2FibGVkID0gZjsKLX0KLQotYm9vbCBHcmFwaGljc0NvbnRleHQ6OnBhaW50aW5n
RGlzYWJsZWQoKSBjb25zdAotewotICAgIHJldHVybiBtX3N0YXRlLnBhaW50aW5nRGlzYWJsZWQ7
Ci19Ci0KIGZsb2F0IEdyYXBoaWNzQ29udGV4dDo6ZHJhd1RleHQoY29uc3QgRm9udENhc2NhZGUm
IGZvbnQsIGNvbnN0IFRleHRSdW4mIHJ1biwgY29uc3QgRmxvYXRQb2ludCYgcG9pbnQsIGludCBm
cm9tLCBpbnQgdG8pCiB7CiAgICAgaWYgKHBhaW50aW5nRGlzYWJsZWQoKSkKQEAgLTYxMCwxMSAr
NDg0LDYgQEAgSW50UmVjdCBHcmFwaGljc0NvbnRleHQ6OmNsaXBCb3VuZHMoKSBjbwogfQogI2Vu
ZGlmCiAKLVRleHREcmF3aW5nTW9kZUZsYWdzIEdyYXBoaWNzQ29udGV4dDo6dGV4dERyYXdpbmdN
b2RlKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9zdGF0ZS50ZXh0RHJhd2luZ01vZGU7Ci19Ci0K
IHZvaWQgR3JhcGhpY3NDb250ZXh0OjpzZXRUZXh0RHJhd2luZ01vZGUoVGV4dERyYXdpbmdNb2Rl
RmxhZ3MgbW9kZSkKIHsKICAgICBtX3N0YXRlLnRleHREcmF3aW5nTW9kZSA9IG1vZGU7CkBAIC02
NzksNiArNTQ4LDEyIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpmaWxsUmVjdFdpdGhSb3VuZGUK
IH0KICNlbmRpZgogCit2b2lkIEdyYXBoaWNzQ29udGV4dDo6c2V0QWxwaGEoZmxvYXQgYWxwaGEp
Cit7CisgICAgbV9zdGF0ZS5hbHBoYSA9IGFscGhhOworICAgIHNldFBsYXRmb3JtQWxwaGEoYWxw
aGEpOworfQorCiB2b2lkIEdyYXBoaWNzQ29udGV4dDo6c2V0Q29tcG9zaXRlT3BlcmF0aW9uKENv
bXBvc2l0ZU9wZXJhdG9yIGNvbXBvc2l0ZU9wZXJhdGlvbiwgQmxlbmRNb2RlIGJsZW5kTW9kZSkK
IHsKICAgICBtX3N0YXRlLmNvbXBvc2l0ZU9wZXJhdG9yID0gY29tcG9zaXRlT3BlcmF0aW9uOwpA
QCAtNjg2LDI2ICs1NjEsNiBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6c2V0Q29tcG9zaXRlT3Bl
cmF0CiAgICAgc2V0UGxhdGZvcm1Db21wb3NpdGVPcGVyYXRpb24oY29tcG9zaXRlT3BlcmF0aW9u
LCBibGVuZE1vZGUpOwogfQogCi1Db21wb3NpdGVPcGVyYXRvciBHcmFwaGljc0NvbnRleHQ6OmNv
bXBvc2l0ZU9wZXJhdGlvbigpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fc3RhdGUuY29tcG9zaXRl
T3BlcmF0b3I7Ci19Ci0KLUJsZW5kTW9kZSBHcmFwaGljc0NvbnRleHQ6OmJsZW5kTW9kZU9wZXJh
dGlvbigpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fc3RhdGUuYmxlbmRNb2RlOwotfQotCi12b2lk
IEdyYXBoaWNzQ29udGV4dDo6c2V0RHJhd0x1bWluYW5jZU1hc2soYm9vbCBkcmF3THVtaW5hbmNl
TWFzaykKLXsKLSAgICBtX3N0YXRlLmRyYXdMdW1pbmFuY2VNYXNrID0gZHJhd0x1bWluYW5jZU1h
c2s7Ci19Ci0KLWJvb2wgR3JhcGhpY3NDb250ZXh0OjpkcmF3THVtaW5hbmNlTWFzaygpIGNvbnN0
Ci17Ci0gICAgcmV0dXJuIG1fc3RhdGUuZHJhd0x1bWluYW5jZU1hc2s7Ci19Ci0KICNpZiAhVVNF
KENHKQogLy8gSW1wbGVtZW50IHRoaXMgaWYgeW91IHdhbnQgdG8gZ28gYWhlYWQgYW5kIHB1c2gg
dGhlIGRyYXdpbmcgbW9kZSBpbnRvIHlvdXIgbmF0aXZlIGNvbnRleHQKIC8vIGltbWVkaWF0ZWx5
LgpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhp
Y3NDb250ZXh0LmgJKHJldmlzaW9uIDE4MDQ0NCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMTMsMTkgKzEx
Myw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgIHN0cnVjdCBHcmFwaGljc0NvbnRleHRT
dGF0ZSB7CiAgICAgICAgIEdyYXBoaWNzQ29udGV4dFN0YXRlKCkKLSAgICAgICAgICAgIDogc3Ry
b2tlVGhpY2tuZXNzKDApCi0gICAgICAgICAgICAsIHNoYWRvd0JsdXIoMCkKLSAgICAgICAgICAg
ICwgdGV4dERyYXdpbmdNb2RlKFRleHRNb2RlRmlsbCkKLSAgICAgICAgICAgICwgc3Ryb2tlQ29s
b3IoQ29sb3I6OmJsYWNrKQotICAgICAgICAgICAgLCBmaWxsQ29sb3IoQ29sb3I6OmJsYWNrKQot
ICAgICAgICAgICAgLCBzdHJva2VTdHlsZShTb2xpZFN0cm9rZSkKLSAgICAgICAgICAgICwgZmls
bFJ1bGUoUlVMRV9OT05aRVJPKQotICAgICAgICAgICAgLCBzdHJva2VDb2xvclNwYWNlKENvbG9y
U3BhY2VEZXZpY2VSR0IpCi0gICAgICAgICAgICAsIGZpbGxDb2xvclNwYWNlKENvbG9yU3BhY2VE
ZXZpY2VSR0IpCi0gICAgICAgICAgICAsIHNoYWRvd0NvbG9yU3BhY2UoQ29sb3JTcGFjZURldmlj
ZVJHQikKLSAgICAgICAgICAgICwgY29tcG9zaXRlT3BlcmF0b3IoQ29tcG9zaXRlU291cmNlT3Zl
cikKLSAgICAgICAgICAgICwgYmxlbmRNb2RlKEJsZW5kTW9kZU5vcm1hbCkKLSAgICAgICAgICAg
ICwgc2hvdWxkQW50aWFsaWFzKHRydWUpCisgICAgICAgICAgICA6IHNob3VsZEFudGlhbGlhcyh0
cnVlKQogICAgICAgICAgICAgLCBzaG91bGRTbW9vdGhGb250cyh0cnVlKQogICAgICAgICAgICAg
LCBzaG91bGRTdWJwaXhlbFF1YW50aXplRm9udHModHJ1ZSkKICAgICAgICAgICAgICwgcGFpbnRp
bmdEaXNhYmxlZChmYWxzZSkKQEAgLTE0NywyNCArMTM1LDI1IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogICAgICAgICBGbG9hdFNpemUgc2hhZG93T2Zmc2V0OwogCi0gICAgICAgIGZsb2F0IHN0
cm9rZVRoaWNrbmVzczsKLSAgICAgICAgZmxvYXQgc2hhZG93Qmx1cjsKKyAgICAgICAgZmxvYXQg
c3Ryb2tlVGhpY2tuZXNzIHsgMCB9OworICAgICAgICBmbG9hdCBzaGFkb3dCbHVyIHsgMCB9Owog
Ci0gICAgICAgIFRleHREcmF3aW5nTW9kZUZsYWdzIHRleHREcmF3aW5nTW9kZTsKKyAgICAgICAg
VGV4dERyYXdpbmdNb2RlRmxhZ3MgdGV4dERyYXdpbmdNb2RlIHsgVGV4dE1vZGVGaWxsIH07CiAK
LSAgICAgICAgQ29sb3Igc3Ryb2tlQ29sb3I7Ci0gICAgICAgIENvbG9yIGZpbGxDb2xvcjsKKyAg
ICAgICAgQ29sb3Igc3Ryb2tlQ29sb3IgeyBDb2xvcjo6YmxhY2sgfTsKKyAgICAgICAgQ29sb3Ig
ZmlsbENvbG9yIHsgQ29sb3I6OmJsYWNrIH07CiAgICAgICAgIENvbG9yIHNoYWRvd0NvbG9yOwog
Ci0gICAgICAgIFN0cm9rZVN0eWxlIHN0cm9rZVN0eWxlOwotICAgICAgICBXaW5kUnVsZSBmaWxs
UnVsZTsKKyAgICAgICAgU3Ryb2tlU3R5bGUgc3Ryb2tlU3R5bGUgeyBTb2xpZFN0cm9rZSB9Owor
ICAgICAgICBXaW5kUnVsZSBmaWxsUnVsZSB7IFJVTEVfTk9OWkVSTyB9OwogCi0gICAgICAgIENv
bG9yU3BhY2Ugc3Ryb2tlQ29sb3JTcGFjZTsKLSAgICAgICAgQ29sb3JTcGFjZSBmaWxsQ29sb3JT
cGFjZTsKLSAgICAgICAgQ29sb3JTcGFjZSBzaGFkb3dDb2xvclNwYWNlOwotCi0gICAgICAgIENv
bXBvc2l0ZU9wZXJhdG9yIGNvbXBvc2l0ZU9wZXJhdG9yOwotICAgICAgICBCbGVuZE1vZGUgYmxl
bmRNb2RlOworICAgICAgICBDb2xvclNwYWNlIHN0cm9rZUNvbG9yU3BhY2UgeyBDb2xvclNwYWNl
RGV2aWNlUkdCIH07CisgICAgICAgIENvbG9yU3BhY2UgZmlsbENvbG9yU3BhY2UgeyBDb2xvclNw
YWNlRGV2aWNlUkdCIH07CisgICAgICAgIENvbG9yU3BhY2Ugc2hhZG93Q29sb3JTcGFjZSB7IENv
bG9yU3BhY2VEZXZpY2VSR0IgfTsKKworICAgICAgICBmbG9hdCBhbHBoYSB7IDEgfTsKKyAgICAg
ICAgQ29tcG9zaXRlT3BlcmF0b3IgY29tcG9zaXRlT3BlcmF0b3IgeyBDb21wb3NpdGVTb3VyY2VP
dmVyIH07CisgICAgICAgIEJsZW5kTW9kZSBibGVuZE1vZGUgeyBCbGVuZE1vZGVOb3JtYWwgfTsK
IAogICAgICAgICBib29sIHNob3VsZEFudGlhbGlhcyA6IDE7CiAgICAgICAgIGJvb2wgc2hvdWxk
U21vb3RoRm9udHMgOiAxOwpAQCAtMjE2LDQ3ICsyMDUsNTAgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiAgICAgICAgIFdFQkNPUkVfRVhQT1JUIFBsYXRmb3JtR3JhcGhpY3NDb250ZXh0KiBwbGF0
Zm9ybUNvbnRleHQoKSBjb25zdDsKIAotICAgICAgICBmbG9hdCBzdHJva2VUaGlja25lc3MoKSBj
b25zdDsKICAgICAgICAgdm9pZCBzZXRTdHJva2VUaGlja25lc3MoZmxvYXQpOwotICAgICAgICBT
dHJva2VTdHlsZSBzdHJva2VTdHlsZSgpIGNvbnN0OworICAgICAgICBmbG9hdCBzdHJva2VUaGlj
a25lc3MoKSBjb25zdCB7IHJldHVybiBtX3N0YXRlLnN0cm9rZVRoaWNrbmVzczsgfQorCiAgICAg
ICAgIHZvaWQgc2V0U3Ryb2tlU3R5bGUoU3Ryb2tlU3R5bGUpOwotICAgICAgICBDb2xvciBzdHJv
a2VDb2xvcigpIGNvbnN0OwotICAgICAgICBDb2xvclNwYWNlIHN0cm9rZUNvbG9yU3BhY2UoKSBj
b25zdDsKKyAgICAgICAgU3Ryb2tlU3R5bGUgc3Ryb2tlU3R5bGUoKSBjb25zdCB7IHJldHVybiBt
X3N0YXRlLnN0cm9rZVN0eWxlOyB9CisKICAgICAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRT
dHJva2VDb2xvcihjb25zdCBDb2xvciYsIENvbG9yU3BhY2UpOworICAgICAgICBDb2xvciBzdHJv
a2VDb2xvcigpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGUuc3Ryb2tlQ29sb3I7IH0KKyAgICAgICAg
Q29sb3JTcGFjZSBzdHJva2VDb2xvclNwYWNlKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0ZS5zdHJv
a2VDb2xvclNwYWNlOyB9CiAKICAgICAgICAgdm9pZCBzZXRTdHJva2VQYXR0ZXJuKFJlZjxQYXR0
ZXJuPiYmKTsKLSAgICAgICAgUGF0dGVybiogc3Ryb2tlUGF0dGVybigpIGNvbnN0OworICAgICAg
ICBQYXR0ZXJuKiBzdHJva2VQYXR0ZXJuKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0ZS5zdHJva2VQ
YXR0ZXJuLmdldCgpOyB9CiAKICAgICAgICAgdm9pZCBzZXRTdHJva2VHcmFkaWVudChSZWY8R3Jh
ZGllbnQ+JiYpOwotICAgICAgICBHcmFkaWVudCogc3Ryb2tlR3JhZGllbnQoKSBjb25zdDsKKyAg
ICAgICAgR3JhZGllbnQqIHN0cm9rZUdyYWRpZW50KCkgY29uc3QgeyByZXR1cm4gbV9zdGF0ZS5z
dHJva2VHcmFkaWVudC5nZXQoKTsgfQogCi0gICAgICAgIFdpbmRSdWxlIGZpbGxSdWxlKCkgY29u
c3Q7Ci0gICAgICAgIHZvaWQgc2V0RmlsbFJ1bGUoV2luZFJ1bGUpOwotICAgICAgICBDb2xvciBm
aWxsQ29sb3IoKSBjb25zdDsKLSAgICAgICAgQ29sb3JTcGFjZSBmaWxsQ29sb3JTcGFjZSgpIGNv
bnN0OworICAgICAgICB2b2lkIHNldEZpbGxSdWxlKFdpbmRSdWxlIGZpbGxSdWxlKSB7IG1fc3Rh
dGUuZmlsbFJ1bGUgPSBmaWxsUnVsZTsgfQorICAgICAgICBXaW5kUnVsZSBmaWxsUnVsZSgpIGNv
bnN0IHsgcmV0dXJuIG1fc3RhdGUuZmlsbFJ1bGU7IH0KKyAgICAKICAgICAgICAgV0VCQ09SRV9F
WFBPUlQgdm9pZCBzZXRGaWxsQ29sb3IoY29uc3QgQ29sb3ImLCBDb2xvclNwYWNlKTsKKyAgICAg
ICAgQ29sb3IgZmlsbENvbG9yKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0ZS5maWxsQ29sb3I7IH0K
KyAgICAgICAgQ29sb3JTcGFjZSBmaWxsQ29sb3JTcGFjZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3Rh
dGUuZmlsbENvbG9yU3BhY2U7IH0KIAogICAgICAgICB2b2lkIHNldEZpbGxQYXR0ZXJuKFJlZjxQ
YXR0ZXJuPiYmKTsKLSAgICAgICAgUGF0dGVybiogZmlsbFBhdHRlcm4oKSBjb25zdDsKKyAgICAg
ICAgUGF0dGVybiogZmlsbFBhdHRlcm4oKSBjb25zdCB7IHJldHVybiBtX3N0YXRlLmZpbGxQYXR0
ZXJuLmdldCgpOyB9CiAKICAgICAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRGaWxsR3JhZGll
bnQoUmVmPEdyYWRpZW50PiYmKTsKLSAgICAgICAgR3JhZGllbnQqIGZpbGxHcmFkaWVudCgpIGNv
bnN0OworICAgICAgICBHcmFkaWVudCogZmlsbEdyYWRpZW50KCkgY29uc3QgeyByZXR1cm4gbV9z
dGF0ZS5maWxsR3JhZGllbnQuZ2V0KCk7IH0KIAotICAgICAgICB2b2lkIHNldFNoYWRvd3NJZ25v
cmVUcmFuc2Zvcm1zKGJvb2wpOwotICAgICAgICBib29sIHNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1z
KCkgY29uc3Q7CisgICAgICAgIHZvaWQgc2V0U2hhZG93c0lnbm9yZVRyYW5zZm9ybXMoYm9vbCBz
aGFkb3dzSWdub3JlVHJhbnNmb3JtcykgeyBtX3N0YXRlLnNoYWRvd3NJZ25vcmVUcmFuc2Zvcm1z
ID0gc2hhZG93c0lnbm9yZVRyYW5zZm9ybXM7IH0KKyAgICAgICAgYm9vbCBzaGFkb3dzSWdub3Jl
VHJhbnNmb3JtcygpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGUuc2hhZG93c0lnbm9yZVRyYW5zZm9y
bXM7IH0KIAogICAgICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFNob3VsZEFudGlhbGlhcyhi
b29sKTsKLSAgICAgICAgYm9vbCBzaG91bGRBbnRpYWxpYXMoKSBjb25zdDsKKyAgICAgICAgYm9v
bCBzaG91bGRBbnRpYWxpYXMoKSBjb25zdCB7IHJldHVybiBtX3N0YXRlLnNob3VsZEFudGlhbGlh
czsgfQogCiAgICAgICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0U2hvdWxkU21vb3RoRm9udHMo
Ym9vbCk7Ci0gICAgICAgIGJvb2wgc2hvdWxkU21vb3RoRm9udHMoKSBjb25zdDsKKyAgICAgICAg
Ym9vbCBzaG91bGRTbW9vdGhGb250cygpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGUuc2hvdWxkU21v
b3RoRm9udHM7IH0KIAogICAgICAgICAvLyBOb3JtYWxseSBDRyBlbmFibGVzIHN1YnBpeGVsLXF1
YW50aXphdGlvbiBiZWNhdXNlIGl0IGltcHJvdmVzIHRoZSBwZXJmb3JtYW5jZSBvZiBhbGlnbmlu
ZyBnbHlwaHMuCiAgICAgICAgIC8vIEluIHNvbWUgY2FzZXMgd2UgaGF2ZSB0byBkaXNhYmxlIHRv
IHRvIGVuc3VyZSBhIGhpZ2gtcXVhbGl0eSBvdXRwdXQgb2YgdGhlIGdseXBocy4KLSAgICAgICAg
dm9pZCBzZXRTaG91bGRTdWJwaXhlbFF1YW50aXplRm9udHMoYm9vbCk7Ci0gICAgICAgIGJvb2wg
c2hvdWxkU3VicGl4ZWxRdWFudGl6ZUZvbnRzKCkgY29uc3Q7CisgICAgICAgIHZvaWQgc2V0U2hv
dWxkU3VicGl4ZWxRdWFudGl6ZUZvbnRzKGJvb2wgc2hvdWxkU3VicGl4ZWxRdWFudGl6ZUZvbnRz
KSB7IG1fc3RhdGUuc2hvdWxkU3VicGl4ZWxRdWFudGl6ZUZvbnRzID0gc2hvdWxkU3VicGl4ZWxR
dWFudGl6ZUZvbnRzOyB9CisgICAgICAgIGJvb2wgc2hvdWxkU3VicGl4ZWxRdWFudGl6ZUZvbnRz
KCkgY29uc3QgeyByZXR1cm4gbV9zdGF0ZS5zaG91bGRTdWJwaXhlbFF1YW50aXplRm9udHM7IH0K
IAotICAgICAgICBjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZSYgc3RhdGUoKSBjb25zdDsKKyAg
ICAgICAgY29uc3QgR3JhcGhpY3NDb250ZXh0U3RhdGUmIHN0YXRlKCkgY29uc3QgeyByZXR1cm4g
bV9zdGF0ZTsgfQogCiAjaWYgVVNFKENHKQogICAgICAgICB2b2lkIGFwcGx5U3Ryb2tlUGF0dGVy
bigpOwpAQCAtMzM4LDkgKzMzMCw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgCiAg
ICAgICAgIEludFJlY3QgY2xpcEJvdW5kcygpIGNvbnN0OwogCi0gICAgICAgIFRleHREcmF3aW5n
TW9kZUZsYWdzIHRleHREcmF3aW5nTW9kZSgpIGNvbnN0OwogICAgICAgICB2b2lkIHNldFRleHRE
cmF3aW5nTW9kZShUZXh0RHJhd2luZ01vZGVGbGFncyk7Ci0gICAgICAgIAorICAgICAgICBUZXh0
RHJhd2luZ01vZGVGbGFncyB0ZXh0RHJhd2luZ01vZGUoKSBjb25zdCB7IHJldHVybiBtX3N0YXRl
LnRleHREcmF3aW5nTW9kZTsgfQorCiAgICAgICAgIGZsb2F0IGRyYXdUZXh0KGNvbnN0IEZvbnRD
YXNjYWRlJiwgY29uc3QgVGV4dFJ1biYsIGNvbnN0IEZsb2F0UG9pbnQmLCBpbnQgZnJvbSA9IDAs
IGludCB0byA9IC0xKTsKICAgICAgICAgdm9pZCBkcmF3R2x5cGhzKGNvbnN0IEZvbnRDYXNjYWRl
JiwgY29uc3QgRm9udCYsIGNvbnN0IEdseXBoQnVmZmVyJiwgaW50IGZyb20sIGludCBudW1HbHlw
aHMsIGNvbnN0IEZsb2F0UG9pbnQmKTsKICAgICAgICAgdm9pZCBkcmF3RW1waGFzaXNNYXJrcyhj
b25zdCBGb250Q2FzY2FkZSYsIGNvbnN0IFRleHRSdW4mICwgY29uc3QgQXRvbWljU3RyaW5nJiBt
YXJrLCBjb25zdCBGbG9hdFBvaW50JiwgaW50IGZyb20gPSAwLCBpbnQgdG8gPSAtMSk7CkBAIC0z
NjcsMjYgKzM1OSwyOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHN0YXRpYyB2b2lk
IHVwZGF0ZURvY3VtZW50TWFya2VyUmVzb3VyY2VzKCk7CiAgICAgICAgIHZvaWQgZHJhd0xpbmVG
b3JEb2N1bWVudE1hcmtlcihjb25zdCBGbG9hdFBvaW50JiwgZmxvYXQgd2lkdGgsIERvY3VtZW50
TWFya2VyTGluZVN0eWxlKTsKIAotICAgICAgICBXRUJDT1JFX0VYUE9SVCBib29sIHBhaW50aW5n
RGlzYWJsZWQoKSBjb25zdDsKLSAgICAgICAgdm9pZCBzZXRQYWludGluZ0Rpc2FibGVkKGJvb2wp
OworICAgICAgICB2b2lkIHNldFBhaW50aW5nRGlzYWJsZWQoYm9vbCBwYWludGluZ0Rpc2FibGVk
KSB7IG1fc3RhdGUucGFpbnRpbmdEaXNhYmxlZCA9IHBhaW50aW5nRGlzYWJsZWQ7IH0KKyAgICAg
ICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBwYWludGluZ0Rpc2FibGVkKCkgY29uc3QgeyByZXR1cm4g
bV9zdGF0ZS5wYWludGluZ0Rpc2FibGVkOyB9CiAKLSAgICAgICAgV0VCQ09SRV9FWFBPUlQgYm9v
bCB1cGRhdGluZ0NvbnRyb2xUaW50cygpIGNvbnN0OwogICAgICAgICB2b2lkIHNldFVwZGF0aW5n
Q29udHJvbFRpbnRzKGJvb2wpOworICAgICAgICBXRUJDT1JFX0VYUE9SVCBib29sIHVwZGF0aW5n
Q29udHJvbFRpbnRzKCkgY29uc3QgeyByZXR1cm4gbV91cGRhdGluZ0NvbnRyb2xUaW50czsgfQog
CiAgICAgICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYmVnaW5UcmFuc3BhcmVuY3lMYXllcihmbG9h
dCBvcGFjaXR5KTsKICAgICAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBlbmRUcmFuc3BhcmVuY3lM
YXllcigpOwotICAgICAgICBib29sIGlzSW5UcmFuc3BhcmVuY3lMYXllcigpIGNvbnN0OworICAg
ICAgICBib29sIGlzSW5UcmFuc3BhcmVuY3lMYXllcigpIGNvbnN0IHsgcmV0dXJuIChtX3RyYW5z
cGFyZW5jeUNvdW50ID4gMCkgJiYgc3VwcG9ydHNUcmFuc3BhcmVuY3lMYXllcnMoKTsgfQogCi0g
ICAgICAgIGJvb2wgaGFzU2hhZG93KCkgY29uc3Q7CiAgICAgICAgIFdFQkNPUkVfRVhQT1JUIHZv
aWQgc2V0U2hhZG93KGNvbnN0IEZsb2F0U2l6ZSYsIGZsb2F0IGJsdXIsIGNvbnN0IENvbG9yJiwg
Q29sb3JTcGFjZSk7CiAgICAgICAgIC8vIExlZ2FjeSBzaGFkb3cgYmx1ciByYWRpdXMgaXMgdXNl
ZCBmb3IgY2FudmFzLCBhbmQgLXdlYmtpdC1ib3gtc2hhZG93LgogICAgICAgICAvLyBJdCBoYXMg
ZGlmZmVyZW50IHRyZWF0bWVudCBvZiByYWRpaSA+IDhweC4KICAgICAgICAgdm9pZCBzZXRMZWdh
Y3lTaGFkb3coY29uc3QgRmxvYXRTaXplJiwgZmxvYXQgYmx1ciwgY29uc3QgQ29sb3ImLCBDb2xv
clNwYWNlKTsKIAotICAgICAgICBib29sIGdldFNoYWRvdyhGbG9hdFNpemUmLCBmbG9hdCYsIENv
bG9yJiwgQ29sb3JTcGFjZSYpIGNvbnN0OwogICAgICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNs
ZWFyU2hhZG93KCk7CisgICAgICAgIGJvb2wgZ2V0U2hhZG93KEZsb2F0U2l6ZSYsIGZsb2F0Jiwg
Q29sb3ImLCBDb2xvclNwYWNlJikgY29uc3Q7CisKKyAgICAgICAgYm9vbCBoYXNWaXNpYmxlU2hh
ZG93KCkgY29uc3QgeyByZXR1cm4gbV9zdGF0ZS5zaGFkb3dDb2xvci5pc1ZhbGlkKCkgJiYgbV9z
dGF0ZS5zaGFkb3dDb2xvci5hbHBoYSgpOyB9CisgICAgICAgIGJvb2wgaGFzU2hhZG93KCkgY29u
c3QgeyByZXR1cm4gaGFzVmlzaWJsZVNoYWRvdygpICYmIChtX3N0YXRlLnNoYWRvd0JsdXIgfHwg
bV9zdGF0ZS5zaGFkb3dPZmZzZXQud2lkdGgoKSB8fCBtX3N0YXRlLnNoYWRvd09mZnNldC5oZWln
aHQoKSk7IH0KKyAgICAgICAgYm9vbCBoYXNCbHVycmVkU2hhZG93KCkgY29uc3QgeyByZXR1cm4g
aGFzVmlzaWJsZVNoYWRvdygpICYmIG1fc3RhdGUuc2hhZG93Qmx1cjsgfQogCi0gICAgICAgIGJv
b2wgaGFzQmx1cnJlZFNoYWRvdygpIGNvbnN0OwogI2lmIFVTRShDQUlSTykKICAgICAgICAgYm9v
bCBtdXN0VXNlU2hhZG93Qmx1cigpIGNvbnN0OwogI2VuZGlmCkBAIC00MDMsMTMgKzM5NywxNCBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZvaWQgc2V0TWl0ZXJMaW1pdChmbG9hdCk7
CiAKICAgICAgICAgdm9pZCBzZXRBbHBoYShmbG9hdCk7CisgICAgICAgIGZsb2F0IGFscGhhKCkg
Y29uc3QgeyByZXR1cm4gbV9zdGF0ZS5hbHBoYTsgfQogCiAgICAgICAgIFdFQkNPUkVfRVhQT1JU
IHZvaWQgc2V0Q29tcG9zaXRlT3BlcmF0aW9uKENvbXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGUg
PSBCbGVuZE1vZGVOb3JtYWwpOwotICAgICAgICBDb21wb3NpdGVPcGVyYXRvciBjb21wb3NpdGVP
cGVyYXRpb24oKSBjb25zdDsKLSAgICAgICAgQmxlbmRNb2RlIGJsZW5kTW9kZU9wZXJhdGlvbigp
IGNvbnN0OworICAgICAgICBDb21wb3NpdGVPcGVyYXRvciBjb21wb3NpdGVPcGVyYXRpb24oKSBj
b25zdCB7IHJldHVybiBtX3N0YXRlLmNvbXBvc2l0ZU9wZXJhdG9yOyB9CisgICAgICAgIEJsZW5k
TW9kZSBibGVuZE1vZGVPcGVyYXRpb24oKSBjb25zdCB7IHJldHVybiBtX3N0YXRlLmJsZW5kTW9k
ZTsgfQogCi0gICAgICAgIHZvaWQgc2V0RHJhd0x1bWluYW5jZU1hc2soYm9vbCk7Ci0gICAgICAg
IGJvb2wgZHJhd0x1bWluYW5jZU1hc2soKSBjb25zdDsKKyAgICAgICAgdm9pZCBzZXREcmF3THVt
aW5hbmNlTWFzayhib29sIGRyYXdMdW1pbmFuY2VNYXNrKSB7IG1fc3RhdGUuZHJhd0x1bWluYW5j
ZU1hc2sgPSBkcmF3THVtaW5hbmNlTWFzazsgfQorICAgICAgICBib29sIGRyYXdMdW1pbmFuY2VN
YXNrKCkgY29uc3QgeyByZXR1cm4gbV9zdGF0ZS5kcmF3THVtaW5hbmNlTWFzazsgfQogCiAgICAg
ICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgY2xpcChjb25zdCBQYXRoJiwgV2luZFJ1bGUgPSBSVUxF
X0VWRU5PREQpOwogCkBAIC01NDAsNiArNTM1LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAg
ICAgICB2b2lkIHNldFBsYXRmb3JtU2hhZG93KGNvbnN0IEZsb2F0U2l6ZSYsIGZsb2F0IGJsdXIs
IGNvbnN0IENvbG9yJiwgQ29sb3JTcGFjZSk7CiAgICAgICAgIHZvaWQgY2xlYXJQbGF0Zm9ybVNo
YWRvdygpOwogCisgICAgICAgIHZvaWQgc2V0UGxhdGZvcm1BbHBoYShmbG9hdCk7CiAgICAgICAg
IHZvaWQgc2V0UGxhdGZvcm1Db21wb3NpdGVPcGVyYXRpb24oQ29tcG9zaXRlT3BlcmF0b3IsIEJs
ZW5kTW9kZSA9IEJsZW5kTW9kZU5vcm1hbCk7CiAKICAgICAgICAgdm9pZCBiZWdpblBsYXRmb3Jt
VHJhbnNwYXJlbmN5TGF5ZXIoZmxvYXQgb3BhY2l0eSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRDYWlyby5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250
ZXh0Q2Fpcm8uY3BwCShyZXZpc2lvbiAxODA0NDQpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRDYWlyby5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTkyOCw3ICs5MjgsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6c2V0TWl0ZXJMaW1pdChm
bG9hCiAgICAgY2Fpcm9fc2V0X21pdGVyX2xpbWl0KHBsYXRmb3JtQ29udGV4dCgpLT5jcigpLCBt
aXRlcik7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0OjpzZXRBbHBoYShmbG9hdCBhbHBoYSkK
K3ZvaWQgR3JhcGhpY3NDb250ZXh0OjpzZXRQbGF0Zm9ybUFscGhhKGZsb2F0IGFscGhhKQogewog
ICAgIHBsYXRmb3JtQ29udGV4dCgpLT5zZXRHbG9iYWxBbHBoYShhbHBoYSk7CiB9CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRDRy5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhp
Y3NDb250ZXh0Q0cuY3BwCShyZXZpc2lvbiAxODA0NDQpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHRDRy5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTk5NiwxMyArOTk2LDYgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OnNldE1pdGVyTGltaXQoZmxv
YQogICAgIENHQ29udGV4dFNldE1pdGVyTGltaXQocGxhdGZvcm1Db250ZXh0KCksIGxpbWl0KTsK
IH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHQ6OnNldEFscGhhKGZsb2F0IGFscGhhKQotewotICAg
IGlmIChwYWludGluZ0Rpc2FibGVkKCkpCi0gICAgICAgIHJldHVybjsKLSAgICBDR0NvbnRleHRT
ZXRBbHBoYShwbGF0Zm9ybUNvbnRleHQoKSwgYWxwaGEpOwotfQotCiB2b2lkIEdyYXBoaWNzQ29u
dGV4dDo6Y2xlYXJSZWN0KGNvbnN0IEZsb2F0UmVjdCYgcikKIHsKICAgICBpZiAocGFpbnRpbmdE
aXNhYmxlZCgpKQpAQCAtMTQ4MSw2ICsxNDc0LDEzIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0Ojpz
ZXRQbGF0Zm9ybVNob3VsZFMKICAgICBDR0NvbnRleHRTZXRTaG91bGRTbW9vdGhGb250cyhwbGF0
Zm9ybUNvbnRleHQoKSwgZW5hYmxlKTsKIH0KIAordm9pZCBHcmFwaGljc0NvbnRleHQ6OnNldFBs
YXRmb3JtQWxwaGEoZmxvYXQgYWxwaGEpCit7CisgICAgaWYgKHBhaW50aW5nRGlzYWJsZWQoKSkK
KyAgICAgICAgcmV0dXJuOworICAgIENHQ29udGV4dFNldEFscGhhKHBsYXRmb3JtQ29udGV4dCgp
LCBhbHBoYSk7Cit9CisKIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpzZXRQbGF0Zm9ybUNvbXBvc2l0
ZU9wZXJhdGlvbihDb21wb3NpdGVPcGVyYXRvciBtb2RlLCBCbGVuZE1vZGUgYmxlbmRNb2RlKQog
ewogICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcv
Z3JhcGhpY3MvU1ZHSW1hZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9n
cmFwaGljcy9TVkdJbWFnZS5jcHAJKHJldmlzaW9uIDE4MDQ0NCkKKysrIFNvdXJjZS9XZWJDb3Jl
L3N2Zy9ncmFwaGljcy9TVkdJbWFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIyOSw5ICsyMjks
MTEgQEAgdm9pZCBTVkdJbWFnZTo6ZHJhdyhHcmFwaGljc0NvbnRleHQqIGNvbgogICAgIEdyYXBo
aWNzQ29udGV4dFN0YXRlU2F2ZXIgc3RhdGVTYXZlcigqY29udGV4dCk7CiAgICAgY29udGV4dC0+
c2V0Q29tcG9zaXRlT3BlcmF0aW9uKGNvbXBvc2l0ZU9wLCBibGVuZE1vZGUpOwogICAgIGNvbnRl
eHQtPmNsaXAoZW5jbG9zaW5nSW50UmVjdChkc3RSZWN0KSk7Ci0gICAgYm9vbCBjb21wb3NpdGlu
Z1JlcXVpcmVzVHJhbnNwYXJlbmN5TGF5ZXIgPSBjb21wb3NpdGVPcCAhPSBDb21wb3NpdGVTb3Vy
Y2VPdmVyIHx8IGJsZW5kTW9kZSAhPSBCbGVuZE1vZGVOb3JtYWw7CisKKyAgICBmbG9hdCBhbHBo
YSA9IGNvbnRleHQtPmFscGhhKCk7CisgICAgYm9vbCBjb21wb3NpdGluZ1JlcXVpcmVzVHJhbnNw
YXJlbmN5TGF5ZXIgPSBjb21wb3NpdGVPcCAhPSBDb21wb3NpdGVTb3VyY2VPdmVyIHx8IGJsZW5k
TW9kZSAhPSBCbGVuZE1vZGVOb3JtYWwgfHwgYWxwaGEgPCAxOwogICAgIGlmIChjb21wb3NpdGlu
Z1JlcXVpcmVzVHJhbnNwYXJlbmN5TGF5ZXIpIHsKLSAgICAgICAgY29udGV4dC0+YmVnaW5UcmFu
c3BhcmVuY3lMYXllcigxKTsKKyAgICAgICAgY29udGV4dC0+YmVnaW5UcmFuc3BhcmVuY3lMYXll
cihhbHBoYSk7CiAgICAgICAgIGNvbnRleHQtPnNldENvbXBvc2l0ZU9wZXJhdGlvbihDb21wb3Np
dGVTb3VyY2VPdmVyLCBCbGVuZE1vZGVOb3JtYWwpOwogICAgIH0KIApJbmRleDogTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNp
b24gMTgwNDQ0KQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDMgKzEsMTYgQEAKKzIwMTUtMDItMjAgIFNhaWQgQWJvdS1IYWxsYXdhICA8c2Fib3VoYWxsYXdh
QGFwcGxlLmNvbT4KKworICAgICAgICBEcmF3aW5nIGFuIFNWRyBpbWFnZSBpbnRvIGEgY2FudmFz
IHVzaW5nIGRyYXdJbWFnZSgpIGlnbm9yZXMgZ2xvYmFsQWxwaGEuCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDE3MjkuCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIGEgbmV3IHRlc3Qgd2hpY2ggZHJh
d3MgYW4gU1ZHIGltYWdlIG9uIGEgY2FudmFzIGFmdGVyIHNldHRpbmcgaXRzIAorICAgICAgICBn
bG9iYWxBbHBoYSB0byBhIHZhbHVlIGxlc3MgdGhhbiAxLgorCisgICAgICAgICogc3ZnL2NhbnZh
cy9jYW52YXMtZ2xvYmFsLWFscGhhLXN2Zy1leHBlY3RlZC5odG1sOiBBZGRlZC4KKyAgICAgICAg
KiBzdmcvY2FudmFzL2NhbnZhcy1nbG9iYWwtYWxwaGEtc3ZnLmh0bWw6IEFkZGVkLgorCiAyMDE1
LTAyLTIwICBBbGV4ZXkgUHJvc2t1cnlha292ICA8YXBAYXBwbGUuY29tPgogCiAgICAgICAgIFJl
bW92ZSBzdm46a2V5d29yZHMgcHJvcGVydHkuCkluZGV4OiBMYXlvdXRUZXN0cy9zdmcvY2FudmFz
L2NhbnZhcy1nbG9iYWwtYWxwaGEtc3ZnLWV4cGVjdGVkLmh0bWwKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvc3ZnL2NhbnZhcy9jYW52YXMtZ2xvYmFsLWFscGhhLXN2Zy1leHBlY3RlZC5odG1s
CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvc3ZnL2NhbnZhcy9jYW52YXMtZ2xvYmFsLWFs
cGhhLXN2Zy1leHBlY3RlZC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMzQgQEAKKzwh
RE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKyAgPHN0eWxlPgorICAgIGRpdiB7CisgICAg
ICBib3JkZXItd2lkdGg6IDI1cHg7CisgICAgICBib3JkZXItc3R5bGU6IHNvbGlkOworICAgICAg
Ym9yZGVyLWNvbG9yOiBncmVlbjsKKyAgICB9CisgICAgLm1haW4geworICAgICAgd2lkdGg6IDEw
MHB4OworICAgICAgaGVpZ2h0OiAxMDBweDsKKyAgICB9CisgICAgLnN1YiB7CisgICAgICB3aWR0
aDogNTBweDsKKyAgICAgIGhlaWdodDogNTBweDsKKyAgICB9CisgICAgLnN1Yi1zdWIgeworICAg
ICAgd2lkdGg6IDBweDsKKyAgICAgIGhlaWdodDogMHB4OworICAgIH0KKyAgICAubG93LW9wYWNp
dHkgeworICAgICAgb3BhY2l0eTogMC4yOyAgIAorICAgIH0KKyAgPC9zdHlsZT4KKzwvaGVhZD4K
Kzxib2R5PgorICA8ZGl2IGNsYXNzPSJtYWluIj4KKyAgICA8ZGl2IGNsYXNzPSJzdWIgbG93LW9w
YWNpdHkiPgorICAgICAgPGRpdiBjbGFzcz0ic3ViLXN1YiBsb3ctb3BhY2l0eSI+PC9kaXY+Cisg
ICAgPC9kaXY+CisgIDwvZGl2PgorPC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMv
c3ZnL2NhbnZhcy9jYW52YXMtZ2xvYmFsLWFscGhhLXN2Zy5odG1sCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL3N2Zy9jYW52YXMvY2FudmFzLWdsb2JhbC1hbHBoYS1zdmcuaHRtbAkocmV2aXNp
b24gMCkKKysrIExheW91dFRlc3RzL3N2Zy9jYW52YXMvY2FudmFzLWdsb2JhbC1hbHBoYS1zdmcu
aHRtbAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDI4IEBACis8IURPQ1RZUEUgaHRtbD4KKzxo
dG1sPgorPGJvZHk+CisgIDxjYW52YXMgaWQ9ImNhbnZhcyI+PC9jYW52YXM+CisgIDxzY3JpcHQ+
CisgICAgdmFyIGNhbnZhcyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjYW52YXMiKTsKKyAg
ICBjYW52YXMud2lkdGggID0gMTUwOworICAgIGNhbnZhcy5oZWlnaHQgPSAxNTA7CisgICAgCisg
ICAgdmFyIGNvbnRleHQgPSBjYW52YXMuZ2V0Q29udGV4dCgiMmQiKTsgICAgCisgICAgY29udGV4
dC5zdHJva2VTdHlsZSA9ICJncmVlbiI7CisgICAgY29udGV4dC5saW5lV2lkdGggPSA1MDsKKyAg
ICBjb250ZXh0LnN0cm9rZVJlY3QoMCwwLDE1MCwxNTApOworCisgICAgdmFyIHN2Z0ltYWdlID0g
bmV3IEltYWdlKCk7CisgICAgc3ZnSW1hZ2Uub25sb2FkID0gZnVuY3Rpb24oKSB7CisgICAgICBj
b250ZXh0Lmdsb2JhbEFscGhhID0gMC4yOworCSAgY29udGV4dC5kcmF3SW1hZ2Uoc3ZnSW1hZ2Us
IDI1LCAyNSk7CisgICAgfTsKKyAgICAKKyAgICBzdmdJbWFnZS5zcmMgPSAiZGF0YTppbWFnZS9z
dmcreG1sLCBcCisgICAgPHN2ZyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnIHdp
ZHRoPScxMDAnIGhlaWdodD0nMTAwJz4gXAorICAgICAgPHJlY3Qgd2lkdGg9JzEwMCUnIGhlaWdo
dD0nMTAwJScgc3R5bGU9J2ZpbGw6bm9uZTtzdHJva2U6Z3JlZW47c3Ryb2tlLXdpZHRoOjUwJTsn
Lz4gXAorICAgICAgPHJlY3QgeD0nMjUlJyB5PScyNSUnIHdpZHRoPSc1MCUnIGhlaWdodD0nNTAl
JyBmaWxsPSdncmVlbicgZmlsbC1vcGFjaXR5PScwLjInLz4gXAorICAgIDwvc3ZnPiI7CisgIDwv
c2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>