<?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>111786</bug_id>
          
          <creation_ts>2013-03-07 15:37:30 -0800</creation_ts>
          <short_desc>Tighten up the type bounds for SVGPropertyInfo callback parameters</short_desc>
          <delta_ts>2013-03-14 11:34:44 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>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></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Florin Malita">fmalita</reporter>
          <assigned_to name="Florin Malita">fmalita</assigned_to>
          <cc>d-r</cc>
    
    <cc>inferno</cc>
    
    <cc>krit</cc>
    
    <cc>pdr</cc>
    
    <cc>rwlbuis</cc>
    
    <cc>schenney</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>zimmermann</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>850548</commentid>
    <comment_count>0</comment_count>
    <who name="Florin Malita">fmalita</who>
    <bug_when>2013-03-07 15:37:30 -0800</bug_when>
    <thetext>Currently, SVGPropertyInfo registers two callbacks with void* parameters: synchronizeProperty &amp; lookupOrCreateWrapperForAnimatedProperty.

We should investigate converting these to SVGElement* parameters to facilitate type checking for the numerous static_casts in handlers. For example:

PassRefPtr&lt;SVGAnimatedProperty&gt; SVGViewSpec::lookupOrCreateViewBoxWrapper(void* maskedOwnerType)
{
    ASSERT(maskedOwnerType);
    SVGViewSpec* ownerType = static_cast&lt;SVGViewSpec*&gt;(maskedOwnerType);


The conversion looks straightforward for the most part, with the noticeable exception of SVGViewSpec which is not a descendant of SVGElement.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>850554</commentid>
    <comment_count>1</comment_count>
    <who name="Philip Rogers">pdr</who>
    <bug_when>2013-03-07 15:41:18 -0800</bug_when>
    <thetext>*** Bug 111787 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>853485</commentid>
    <comment_count>2</comment_count>
    <who name="Florin Malita">fmalita</who>
    <bug_when>2013-03-12 08:21:30 -0700</bug_when>
    <thetext>Several ways to approach this:

1) introduce a dedicated interface for the SVGPropertyInfo callbacks to support minimal type checking

2) templetize SVGPropertyInfo and its users (SVGAttributeToPropertyMap, etc.)

3) change SVGPropertyInfo&apos;s callback signatures to use SVGElement* and drop the lookupOrCreateWrapperForAnimatedProperty callback for SVGViewSpec (since SVGViewSpec is not inheriting from SVGElement)


I&apos;m inclined to go with #3 because I don&apos;t think SVGPropertyInfo::lookupOrCreateWrapperForAnimatedProperty is used in the case of SVGViewSpec:

* AFAICT, the call graph for SVGPropertyInfo::lookupOrCreateWrapperForAnimatedProperty() is rooted in SVGAnimateElement: 
  SVGPropertyInfo::lookupOrCreateWrapperForAnimatedProperty() &lt;- SVGAttributeToPropertyMap::animatedProperty() &lt;- SVGAttributeToPropertyMap::animatedPropertiesForAttribute() &lt;- SVGAnimatedTypeAnimator::findAnimatedPropertiesForAttributeName() &lt;- SVGAnimateElement::resetAnimatedType()

* since SVGViewSpec is a synthetic construct with no corresponding DOM element, it cannot have an associated animator; an &lt;animate&gt; element would operate on the true viewport container (&lt;svg&gt;, etc.) and not on the viewspec itself.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>853630</commentid>
    <comment_count>3</comment_count>
    <who name="Philip Rogers">pdr</who>
    <bug_when>2013-03-12 11:06:33 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; I&apos;m inclined to go with #3 because I don&apos;t think SVGPropertyInfo::lookupOrCreateWrapperForAnimatedProperty is used in the case of SVGViewSpec:

This seems reasonable to me, especially given the support for this in other browsers. Dirk, can you weigh in here?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>853802</commentid>
    <comment_count>4</comment_count>
      <attachid>192815</attachid>
    <who name="Florin Malita">fmalita</who>
    <bug_when>2013-03-12 14:54:18 -0700</bug_when>
    <thetext>Created attachment 192815
Patch

First pass.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>853809</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-03-12 14:56:35 -0700</bug_when>
    <thetext>Attachment 192815 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCore/svg/SVGElement.cpp&apos;, u&apos;Source/WebCore/svg/SVGElement.h&apos;, u&apos;Source/WebCore/svg/SVGMarkerElement.cpp&apos;, u&apos;Source/WebCore/svg/SVGMarkerElement.h&apos;, u&apos;Source/WebCore/svg/SVGPathElement.cpp&apos;, u&apos;Source/WebCore/svg/SVGPathElement.h&apos;, u&apos;Source/WebCore/svg/SVGPolyElement.cpp&apos;, u&apos;Source/WebCore/svg/SVGPolyElement.h&apos;, u&apos;Source/WebCore/svg/SVGTextContentElement.cpp&apos;, u&apos;Source/WebCore/svg/SVGTextContentElement.h&apos;, u&apos;Source/WebCore/svg/SVGViewSpec.cpp&apos;, u&apos;Source/WebCore/svg/SVGViewSpec.h&apos;, u&apos;Source/WebCore/svg/properties/SVGAnimatedPropertyMacros.h&apos;, u&apos;Source/WebCore/svg/properties/SVGPropertyInfo.h&apos;]&quot; exit_code: 1
Source/WebCore/svg/SVGViewSpec.cpp:44:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebCore/svg/SVGViewSpec.cpp:58:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebCore/svg/SVGViewSpec.cpp:73:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Total errors found: 3 in 15 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>853811</commentid>
    <comment_count>6</comment_count>
    <who name="Florin Malita">fmalita</who>
    <bug_when>2013-03-12 14:57:38 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; Source/WebCore/svg/SVGViewSpec.cpp:44:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
&gt; Source/WebCore/svg/SVGViewSpec.cpp:58:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
&gt; Source/WebCore/svg/SVGViewSpec.cpp:73:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]

Preserving existing formatting.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>853822</commentid>
    <comment_count>7</comment_count>
      <attachid>192815</attachid>
    <who name="Philip Rogers">pdr</who>
    <bug_when>2013-03-12 15:07:05 -0700</bug_when>
    <thetext>Comment on attachment 192815
Patch

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

&gt; Source/WebCore/ChangeLog:20
&gt; +        No new tests, refactoring only.

Do we have any test coverage of viewSpec at all?

&gt; Source/WebCore/ChangeLog:22
&gt; +        * svg/SVGElement.cpp:

Please add some inline comments so we remember what was going on here 6 months from now.

&gt; Source/WebCore/svg/SVGMarkerElement.h:172
&gt; +    ASSERT_WITH_SECURITY_IMPLICATION(!element || element-&gt;hasTagName(SVGNames::markerTag));

This is slightly different from the pattern used elsewhere for toSVG* functions where we used virtual isSVG*Element functions. I think this is reasonable but do you mind explaining why you went this route?

&gt;&gt; Source/WebCore/svg/SVGViewSpec.cpp:44
&gt;&gt; +                                             0, 0);
&gt; 
&gt; Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]

Something is up here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>854274</commentid>
    <comment_count>8</comment_count>
    <who name="Florin Malita">fmalita</who>
    <bug_when>2013-03-13 07:03:43 -0700</bug_when>
    <thetext>Thanks Philip.

(In reply to comment #7)
&gt; (From update of attachment 192815 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=192815&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/ChangeLog:20
&gt; &gt; +        No new tests, refactoring only.
&gt; 
&gt; Do we have any test coverage of viewSpec at all?

Yes, there are quite a few tests targeting viewSpec.


&gt; &gt; Source/WebCore/ChangeLog:22
&gt; &gt; +        * svg/SVGElement.cpp:
&gt; 
&gt; Please add some inline comments so we remember what was going on here 6 months from now.

Will do.


&gt; &gt; Source/WebCore/svg/SVGMarkerElement.h:172
&gt; &gt; +    ASSERT_WITH_SECURITY_IMPLICATION(!element || element-&gt;hasTagName(SVGNames::markerTag));
&gt; 
&gt; This is slightly different from the pattern used elsewhere for toSVG* functions where we used virtual isSVG*Element functions. I think this is reasonable but do you mind explaining why you went this route?

Basically to avoid adding a bunch of isFooXXX() virtuals to SVGElement (and overrides in its descendants) for an ASSERT-time-only check. I think it makes sense to have real subtype markers if needed for other purposes, but for assert checking this seems to be a good compromise. I&apos;ll add a mention in the changelog also.


&gt; &gt;&gt; Source/WebCore/svg/SVGViewSpec.cpp:44
&gt; &gt;&gt; +                                             0, 0);
&gt; &gt; 
&gt; &gt; Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
&gt; 
&gt; Something is up here.

Pre-existing condition :P</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>854330</commentid>
    <comment_count>9</comment_count>
      <attachid>192929</attachid>
    <who name="Florin Malita">fmalita</who>
    <bug_when>2013-03-13 08:42:58 -0700</bug_when>
    <thetext>Created attachment 192929
Patch

Updated per comments.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>854331</commentid>
    <comment_count>10</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-03-13 08:44:27 -0700</bug_when>
    <thetext>Attachment 192929 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCore/svg/SVGElement.cpp&apos;, u&apos;Source/WebCore/svg/SVGElement.h&apos;, u&apos;Source/WebCore/svg/SVGMarkerElement.cpp&apos;, u&apos;Source/WebCore/svg/SVGMarkerElement.h&apos;, u&apos;Source/WebCore/svg/SVGPathElement.cpp&apos;, u&apos;Source/WebCore/svg/SVGPathElement.h&apos;, u&apos;Source/WebCore/svg/SVGPolyElement.cpp&apos;, u&apos;Source/WebCore/svg/SVGPolyElement.h&apos;, u&apos;Source/WebCore/svg/SVGTextContentElement.cpp&apos;, u&apos;Source/WebCore/svg/SVGTextContentElement.h&apos;, u&apos;Source/WebCore/svg/SVGViewSpec.cpp&apos;, u&apos;Source/WebCore/svg/SVGViewSpec.h&apos;, u&apos;Source/WebCore/svg/properties/SVGAnimatedPropertyMacros.h&apos;, u&apos;Source/WebCore/svg/properties/SVGPropertyInfo.h&apos;]&quot; exit_code: 1
Source/WebCore/svg/SVGViewSpec.cpp:44:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebCore/svg/SVGViewSpec.cpp:58:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebCore/svg/SVGViewSpec.cpp:73:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Total errors found: 3 in 15 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>854407</commentid>
    <comment_count>11</comment_count>
    <who name="Philip Rogers">pdr</who>
    <bug_when>2013-03-13 11:00:03 -0700</bug_when>
    <thetext>&gt; &gt; Something is up here.
&gt; 
&gt; Pre-existing condition :P

I mean that 0, 0); should appear on two lines.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>854707</commentid>
    <comment_count>12</comment_count>
      <attachid>192929</attachid>
    <who name="Philip Rogers">pdr</who>
    <bug_when>2013-03-13 15:25:05 -0700</bug_when>
    <thetext>Comment on attachment 192929
Patch

R=me with the updated style changes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>855362</commentid>
    <comment_count>13</comment_count>
    <who name="Florin Malita">fmalita</who>
    <bug_when>2013-03-14 11:34:44 -0700</bug_when>
    <thetext>Committed r145830: &lt;http://trac.webkit.org/changeset/145830&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>192815</attachid>
            <date>2013-03-12 14:54:18 -0700</date>
            <delta_ts>2013-03-13 08:42:55 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-111786-20130312175016.patch</filename>
            <type>text/plain</type>
            <size>24963</size>
            <attacher name="Florin Malita">fmalita</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ1NTM5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjdiOWIxZDU4NDczNjY1
NGE0N2EzYWU5MjA3ODFiY2EzMjJlZGQyNy4uMDFiMTk0ZjUwZGFmNGRjZWE0NDFlZTg5ODEyN2E0
MDAyZjFiY2M5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDczIEBACisyMDEzLTAzLTEyICBGbG9y
aW4gTWFsaXRhICA8Zm1hbGl0YUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgVGlnaHRlbiB1cCB0
aGUgdHlwZSBib3VuZHMgZm9yIFNWR1Byb3BlcnR5SW5mbyBjYWxsYmFjayBwYXJhbWV0ZXJzCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTE3ODYKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVcGRhdGUgU1ZH
UHJvcGVydHlJbmZvJ3MgY2FsbGJhY2tzIHRvIHBhc3MgU1ZHRWxlbWVudCogcGFyYW1ldGVycyBp
bnN0ZWFkIG9mIHZvaWQqLiBUaGlzCisgICAgICAgIGFsbG93cyB1cyB0byBwZXJmb3JtIHNvbWUg
QVNTRVJULWJhc2VkIHR5cGUgY2hlY2tpbmcgYmVmb3JlIGRvd25jYXN0aW5nIGluIGltcGxlbWVu
dG9ycy4KKworICAgICAgICBUaGUgcGF0Y2ggaXMgYWxzbyByZW1vdmluZyB0aGUgbG9va3VwT3JD
cmVhdGVXcmFwcGVyRm9yQW5pbWF0ZWRQcm9wZXJ0eSgpIFNWR1Byb3BlcnR5SW5mbworICAgICAg
ICBjYWxsYmFjayBmb3IgU1ZHVmlld1NwZWMgcHJvcGVydGllcywgYmVjYXVzZQorCisgICAgICAg
ICAgYSkgaXQgZG9lc24ndCBhcHBlYXIgdG8gYmUgcmVhY2hhYmxlIChTVkdWaWV3U3BlYyBkb2Vz
bid0IGhhdmUgYSBiYWNraW5nIGVsZW1lbnQgYW5kCisgICAgICAgICAgdGh1cyBjYW5ub3QgaGF2
ZSBhbiBhc3NvY2lhdGVkIGFuaW1hdG9yKQorCisgICAgICAgICAgYikgaXQgaW50ZXJmZXJlcyB3
aXRoIHRoZSBwYXJhbWV0ZXIgc3BlY2lhbGl6YXRpb24gZGVzY3JpYmVkIGFib3ZlIChTVkdWaWV3
U3BlYyBkb2VzIG5vdAorICAgICAgICAgIGluaGVyaXQgZnJvbSBTVkdFbGVtZW50KQorCisgICAg
ICAgIE5vIG5ldyB0ZXN0cywgcmVmYWN0b3Jpbmcgb25seS4KKworICAgICAgICAqIHN2Zy9TVkdF
bGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0VsZW1lbnQ6OnN5bmNocm9uaXplUmVx
dWlyZWRGZWF0dXJlcyk6CisgICAgICAgIChXZWJDb3JlOjpTVkdFbGVtZW50OjpzeW5jaHJvbml6
ZVJlcXVpcmVkRXh0ZW5zaW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpTVkdFbGVtZW50OjpzeW5j
aHJvbml6ZVN5c3RlbUxhbmd1YWdlKToKKyAgICAgICAgKiBzdmcvU1ZHRWxlbWVudC5oOgorICAg
ICAgICAoU1ZHRWxlbWVudCk6CisgICAgICAgICogc3ZnL1NWR01hcmtlckVsZW1lbnQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6U1ZHTWFya2VyRWxlbWVudDo6c3luY2hyb25pemVPcmllbnRUeXBl
KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR01hcmtlckVsZW1lbnQ6Omxvb2t1cE9yQ3JlYXRlT3Jp
ZW50VHlwZVdyYXBwZXIpOgorICAgICAgICAqIHN2Zy9TVkdNYXJrZXJFbGVtZW50Lmg6CisgICAg
ICAgIChTVkdNYXJrZXJFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OnRvU1ZHTWFya2VyRWxl
bWVudCk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBzdmcvU1ZHUGF0aEVsZW1lbnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUGF0aEVsZW1lbnQ6Omxvb2t1cE9yQ3JlYXRlRFdy
YXBwZXIpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUGF0aEVsZW1lbnQ6OnN5bmNocm9uaXplRCk6
CisgICAgICAgICogc3ZnL1NWR1BhdGhFbGVtZW50Lmg6CisgICAgICAgIChTVkdQYXRoRWxlbWVu
dCk6CisgICAgICAgIChXZWJDb3JlOjp0b1NWR1BhdGhFbGVtZW50KToKKyAgICAgICAgKFdlYkNv
cmUpOgorICAgICAgICAqIHN2Zy9TVkdQb2x5RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpTVkdQb2x5RWxlbWVudDo6c3luY2hyb25pemVQb2ludHMpOgorICAgICAgICAoV2ViQ29yZTo6
U1ZHUG9seUVsZW1lbnQ6Omxvb2t1cE9yQ3JlYXRlUG9pbnRzV3JhcHBlcik6CisgICAgICAgICog
c3ZnL1NWR1BvbHlFbGVtZW50Lmg6CisgICAgICAgIChTVkdQb2x5RWxlbWVudCk6CisgICAgICAg
IChXZWJDb3JlOjp0b1NWR1BvbHlFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAg
ICAqIHN2Zy9TVkdUZXh0Q29udGVudEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZH
VGV4dENvbnRlbnRFbGVtZW50OjpzeW5jaHJvbml6ZVRleHRMZW5ndGgpOgorICAgICAgICAoV2Vi
Q29yZTo6U1ZHVGV4dENvbnRlbnRFbGVtZW50Ojpsb29rdXBPckNyZWF0ZVRleHRMZW5ndGhXcmFw
cGVyKToKKyAgICAgICAgKiBzdmcvU1ZHVGV4dENvbnRlbnRFbGVtZW50Lmg6CisgICAgICAgIChT
VkdUZXh0Q29udGVudEVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6dG9TVkdUZXh0Q29udGVu
dEVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICogc3ZnL1NWR1ZpZXdTcGVj
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1ZpZXdTcGVjOjp2aWV3Qm94UHJvcGVydHlJbmZv
KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1ZpZXdTcGVjOjpwcmVzZXJ2ZUFzcGVjdFJhdGlvUHJv
cGVydHlJbmZvKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1ZpZXdTcGVjOjp0cmFuc2Zvcm1Qcm9w
ZXJ0eUluZm8pOgorICAgICAgICAoV2ViQ29yZTo6U1ZHVmlld1NwZWM6Omxvb2t1cE9yQ3JlYXRl
Vmlld0JveFdyYXBwZXIpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHVmlld1NwZWM6Omxvb2t1cE9y
Q3JlYXRlUHJlc2VydmVBc3BlY3RSYXRpb1dyYXBwZXIpOgorICAgICAgICAoV2ViQ29yZTo6U1ZH
Vmlld1NwZWM6Omxvb2t1cE9yQ3JlYXRlVHJhbnNmb3JtV3JhcHBlcik6CisgICAgICAgICogc3Zn
L1NWR1ZpZXdTcGVjLmg6CisgICAgICAgIChTVkdWaWV3U3BlYyk6CisgICAgICAgICogc3ZnL3By
b3BlcnRpZXMvU1ZHQW5pbWF0ZWRQcm9wZXJ0eU1hY3Jvcy5oOgorICAgICAgICAoV2ViQ29yZSk6
CisgICAgICAgICogc3ZnL3Byb3BlcnRpZXMvU1ZHUHJvcGVydHlJbmZvLmg6CisgICAgICAgIChX
ZWJDb3JlKToKKyAgICAgICAgKFNWR1Byb3BlcnR5SW5mbyk6CisKIDIwMTMtMDMtMTIgIFZzZXZv
bG9kIFZsYXNvdiAgPHZzZXZpa0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgV2ViIEluc3BlY3Rv
cjogUmVzb3VyY2VTY3JpcHRGaWxlIGRpdmVyZ2VkIHN0YXRlIHNob3VsZCBiZSBjb3JyZWN0bHkg
cmVzZXQgYWZ0ZXIgZGVidWdnZXIgcmVzZXQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVudC5jcHAKaW5k
ZXggYmFiMGY5OTk0NWE5YWEzNDcxMzIwMzUwYjM4MGU1N2UxYmM4MTQxZi4uYjNiYzU3YTM1NDZj
M2VlNTRjODgxYjFhZjFhYjQ0NDQ5MTE5Mzk1OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50LmNw
cApAQCAtNTYyLDIyICs1NjIsMjIgQEAgU1ZHQXR0cmlidXRlVG9Qcm9wZXJ0eU1hcCYgU1ZHRWxl
bWVudDo6bG9jYWxBdHRyaWJ1dGVUb1Byb3BlcnR5TWFwKCkKICAgICByZXR1cm4gZW1wdHlNYXA7
CiB9CiAKLXZvaWQgU1ZHRWxlbWVudDo6c3luY2hyb25pemVSZXF1aXJlZEZlYXR1cmVzKHZvaWQq
IGNvbnRleHRFbGVtZW50KQordm9pZCBTVkdFbGVtZW50OjpzeW5jaHJvbml6ZVJlcXVpcmVkRmVh
dHVyZXMoU1ZHRWxlbWVudCogY29udGV4dEVsZW1lbnQpCiB7CiAgICAgQVNTRVJUKGNvbnRleHRF
bGVtZW50KTsKLSAgICBzdGF0aWNfY2FzdDxTVkdFbGVtZW50Kj4oY29udGV4dEVsZW1lbnQpLT5z
eW5jaHJvbml6ZVJlcXVpcmVkRmVhdHVyZXMoKTsKKyAgICBjb250ZXh0RWxlbWVudC0+c3luY2hy
b25pemVSZXF1aXJlZEZlYXR1cmVzKCk7CiB9CiAKLXZvaWQgU1ZHRWxlbWVudDo6c3luY2hyb25p
emVSZXF1aXJlZEV4dGVuc2lvbnModm9pZCogY29udGV4dEVsZW1lbnQpCit2b2lkIFNWR0VsZW1l
bnQ6OnN5bmNocm9uaXplUmVxdWlyZWRFeHRlbnNpb25zKFNWR0VsZW1lbnQqIGNvbnRleHRFbGVt
ZW50KQogewogICAgIEFTU0VSVChjb250ZXh0RWxlbWVudCk7Ci0gICAgc3RhdGljX2Nhc3Q8U1ZH
RWxlbWVudCo+KGNvbnRleHRFbGVtZW50KS0+c3luY2hyb25pemVSZXF1aXJlZEV4dGVuc2lvbnMo
KTsKKyAgICBjb250ZXh0RWxlbWVudC0+c3luY2hyb25pemVSZXF1aXJlZEV4dGVuc2lvbnMoKTsK
IH0KIAotdm9pZCBTVkdFbGVtZW50OjpzeW5jaHJvbml6ZVN5c3RlbUxhbmd1YWdlKHZvaWQqIGNv
bnRleHRFbGVtZW50KQordm9pZCBTVkdFbGVtZW50OjpzeW5jaHJvbml6ZVN5c3RlbUxhbmd1YWdl
KFNWR0VsZW1lbnQqIGNvbnRleHRFbGVtZW50KQogewogICAgIEFTU0VSVChjb250ZXh0RWxlbWVu
dCk7Ci0gICAgc3RhdGljX2Nhc3Q8U1ZHRWxlbWVudCo+KGNvbnRleHRFbGVtZW50KS0+c3luY2hy
b25pemVTeXN0ZW1MYW5ndWFnZSgpOworICAgIGNvbnRleHRFbGVtZW50LT5zeW5jaHJvbml6ZVN5
c3RlbUxhbmd1YWdlKCk7CiB9CiAKIFBhc3NSZWZQdHI8UmVuZGVyU3R5bGU+IFNWR0VsZW1lbnQ6
OmN1c3RvbVN0eWxlRm9yUmVuZGVyZXIoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0VsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50LmgKaW5kZXggMTRj
YWJiNzM2YzMwMmI4NDQ2YjUzOWMxYWY5YmJiYzM1OGNlOTE2Mi4uYmZmODNhOGQ4MzhhMDgxNWI3
YWUxZWNjNDk4MjBjOTZiNTI4MWQyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0VsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVudC5oCkBAIC05Nyw5
ICs5Nyw5IEBAIHB1YmxpYzoKICAKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8UmVuZGVyU3R5bGU+
IGN1c3RvbVN0eWxlRm9yUmVuZGVyZXIoKSBPVkVSUklERTsKIAotICAgIHN0YXRpYyB2b2lkIHN5
bmNocm9uaXplUmVxdWlyZWRGZWF0dXJlcyh2b2lkKiBjb250ZXh0RWxlbWVudCk7Ci0gICAgc3Rh
dGljIHZvaWQgc3luY2hyb25pemVSZXF1aXJlZEV4dGVuc2lvbnModm9pZCogY29udGV4dEVsZW1l
bnQpOwotICAgIHN0YXRpYyB2b2lkIHN5bmNocm9uaXplU3lzdGVtTGFuZ3VhZ2Uodm9pZCogY29u
dGV4dEVsZW1lbnQpOworICAgIHN0YXRpYyB2b2lkIHN5bmNocm9uaXplUmVxdWlyZWRGZWF0dXJl
cyhTVkdFbGVtZW50KiBjb250ZXh0RWxlbWVudCk7CisgICAgc3RhdGljIHZvaWQgc3luY2hyb25p
emVSZXF1aXJlZEV4dGVuc2lvbnMoU1ZHRWxlbWVudCogY29udGV4dEVsZW1lbnQpOworICAgIHN0
YXRpYyB2b2lkIHN5bmNocm9uaXplU3lzdGVtTGFuZ3VhZ2UoU1ZHRWxlbWVudCogY29udGV4dEVs
ZW1lbnQpOwogCiAgICAgdmlydHVhbCB2b2lkIHN5bmNocm9uaXplUmVxdWlyZWRGZWF0dXJlcygp
IHsgfQogICAgIHZpcnR1YWwgdm9pZCBzeW5jaHJvbml6ZVJlcXVpcmVkRXh0ZW5zaW9ucygpIHsg
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR01hcmtlckVsZW1lbnQuY3BwIGIv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR01hcmtlckVsZW1lbnQuY3BwCmluZGV4IDM0N2UzNzFiYWI2
NjQyOGMyYTM5MTU5OTExYjgwOWMxNjlmZjZkZDUuLmI1MDM2N2IzYzAyNTdjZjRlODYyYzViZDNm
MmFjZmEzNTVlZmJiNGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdNYXJrZXJF
bGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTWFya2VyRWxlbWVudC5jcHAK
QEAgLTIyNywxMCArMjI3LDEwIEBAIGJvb2wgU1ZHTWFya2VyRWxlbWVudDo6c2VsZkhhc1JlbGF0
aXZlTGVuZ3RocygpIGNvbnN0CiAgICAgICAgIHx8IG1hcmtlckhlaWdodCgpLmlzUmVsYXRpdmUo
KTsKIH0KIAotdm9pZCBTVkdNYXJrZXJFbGVtZW50OjpzeW5jaHJvbml6ZU9yaWVudFR5cGUodm9p
ZCogY29udGV4dEVsZW1lbnQpCit2b2lkIFNWR01hcmtlckVsZW1lbnQ6OnN5bmNocm9uaXplT3Jp
ZW50VHlwZShTVkdFbGVtZW50KiBjb250ZXh0RWxlbWVudCkKIHsKICAgICBBU1NFUlQoY29udGV4
dEVsZW1lbnQpOwotICAgIFNWR01hcmtlckVsZW1lbnQqIG93bmVyVHlwZSA9IHN0YXRpY19jYXN0
PFNWR01hcmtlckVsZW1lbnQqPihjb250ZXh0RWxlbWVudCk7CisgICAgU1ZHTWFya2VyRWxlbWVu
dCogb3duZXJUeXBlID0gdG9TVkdNYXJrZXJFbGVtZW50KGNvbnRleHRFbGVtZW50KTsKICAgICBp
ZiAoIW93bmVyVHlwZS0+bV9vcmllbnRUeXBlLnNob3VsZFN5bmNocm9uaXplKQogICAgICAgICBy
ZXR1cm47CiAKQEAgLTI0MiwxMCArMjQyLDEwIEBAIHZvaWQgU1ZHTWFya2VyRWxlbWVudDo6c3lu
Y2hyb25pemVPcmllbnRUeXBlKHZvaWQqIGNvbnRleHRFbGVtZW50KQogICAgIG93bmVyVHlwZS0+
bV9vcmllbnRUeXBlLnN5bmNocm9uaXplKG93bmVyVHlwZSwgb3JpZW50VHlwZVByb3BlcnR5SW5m
bygpLT5hdHRyaWJ1dGVOYW1lLCBhdXRvU3RyaW5nKTsKIH0KIAotUGFzc1JlZlB0cjxTVkdBbmlt
YXRlZFByb3BlcnR5PiBTVkdNYXJrZXJFbGVtZW50Ojpsb29rdXBPckNyZWF0ZU9yaWVudFR5cGVX
cmFwcGVyKHZvaWQqIGNvbnRleHRFbGVtZW50KQorUGFzc1JlZlB0cjxTVkdBbmltYXRlZFByb3Bl
cnR5PiBTVkdNYXJrZXJFbGVtZW50Ojpsb29rdXBPckNyZWF0ZU9yaWVudFR5cGVXcmFwcGVyKFNW
R0VsZW1lbnQqIGNvbnRleHRFbGVtZW50KQogewogICAgIEFTU0VSVChjb250ZXh0RWxlbWVudCk7
Ci0gICAgU1ZHTWFya2VyRWxlbWVudCogb3duZXJUeXBlID0gc3RhdGljX2Nhc3Q8U1ZHTWFya2Vy
RWxlbWVudCo+KGNvbnRleHRFbGVtZW50KTsKKyAgICBTVkdNYXJrZXJFbGVtZW50KiBvd25lclR5
cGUgPSB0b1NWR01hcmtlckVsZW1lbnQoY29udGV4dEVsZW1lbnQpOwogICAgIHJldHVybiBTVkdB
bmltYXRlZFByb3BlcnR5Ojpsb29rdXBPckNyZWF0ZVdyYXBwZXI8U1ZHTWFya2VyRWxlbWVudCwg
U1ZHQW5pbWF0ZWRFbnVtZXJhdGlvblByb3BlcnR5VGVhck9mZjxTVkdNYXJrZXJPcmllbnRUeXBl
PiwgU1ZHTWFya2VyT3JpZW50VHlwZT4KICAgICAgICAgICAgKG93bmVyVHlwZSwgb3JpZW50VHlw
ZVByb3BlcnR5SW5mbygpLCBvd25lclR5cGUtPm1fb3JpZW50VHlwZS52YWx1ZSk7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTWFya2VyRWxlbWVudC5oIGIvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR01hcmtlckVsZW1lbnQuaAppbmRleCA4NzNjNDgwODJhZmRiMzFiNzk3MGQ1
YWNjYWQzMTJkY2RiZmM2OGIwLi45NzJkZDY5YzkyNjY0ZDE4Y2Y4ZDk4ZGI0ZGU2YjU0ZWFhZDQ0
ZWQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTWFya2VyRWxlbWVudC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdNYXJrZXJFbGVtZW50LmgKQEAgLTE1Niw4ICsxNTYs
OCBAQCBwcml2YXRlOgogICAKIHB1YmxpYzoKICAgICAvLyBDdXN0b20gJ29yaWVudFR5cGUnIHBy
b3BlcnR5LgotICAgIHN0YXRpYyB2b2lkIHN5bmNocm9uaXplT3JpZW50VHlwZSh2b2lkKiBjb250
ZXh0RWxlbWVudCk7Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8U1ZHQW5pbWF0ZWRQcm9wZXJ0eT4g
bG9va3VwT3JDcmVhdGVPcmllbnRUeXBlV3JhcHBlcih2b2lkKiBjb250ZXh0RWxlbWVudCk7Cisg
ICAgc3RhdGljIHZvaWQgc3luY2hyb25pemVPcmllbnRUeXBlKFNWR0VsZW1lbnQqIGNvbnRleHRF
bGVtZW50KTsKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxTVkdBbmltYXRlZFByb3BlcnR5PiBsb29r
dXBPckNyZWF0ZU9yaWVudFR5cGVXcmFwcGVyKFNWR0VsZW1lbnQqIGNvbnRleHRFbGVtZW50KTsK
ICAgICBTVkdNYXJrZXJPcmllbnRUeXBlJiBvcmllbnRUeXBlKCkgY29uc3QgeyByZXR1cm4gbV9v
cmllbnRUeXBlLnZhbHVlOyB9CiAgICAgU1ZHTWFya2VyT3JpZW50VHlwZSYgb3JpZW50VHlwZUJh
c2VWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fb3JpZW50VHlwZS52YWx1ZTsgfQogICAgIHZvaWQg
c2V0T3JpZW50VHlwZUJhc2VWYWx1ZShjb25zdCBTVkdNYXJrZXJPcmllbnRUeXBlJiB0eXBlKSB7
IG1fb3JpZW50VHlwZS52YWx1ZSA9IHR5cGU7IH0KQEAgLTE2Nyw2ICsxNjcsMTIgQEAgcHJpdmF0
ZToKICAgICBtdXRhYmxlIFNWR1N5bmNocm9uaXphYmxlQW5pbWF0ZWRQcm9wZXJ0eTxTVkdNYXJr
ZXJPcmllbnRUeXBlPiBtX29yaWVudFR5cGU7CiB9OwogCitpbmxpbmUgU1ZHTWFya2VyRWxlbWVu
dCogdG9TVkdNYXJrZXJFbGVtZW50KFNWR0VsZW1lbnQqIGVsZW1lbnQpCit7CisgICAgQVNTRVJU
X1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT04oIWVsZW1lbnQgfHwgZWxlbWVudC0+aGFzVGFnTmFt
ZShTVkdOYW1lczo6bWFya2VyVGFnKSk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PFNWR01hcmtl
ckVsZW1lbnQqPihlbGVtZW50KTsKK30KKwogfQogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdQYXRoRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
UGF0aEVsZW1lbnQuY3BwCmluZGV4IDIyNzQwZGFhZDg4Nzk4MzhhZjgxMmQyZjllNGYzMzMyZWU2
ZWE4MmMuLmJiOGFhMWU2MmNhNDQ4NjhkYjdjYTNiM2U2NWJiMDk3NzhmODhjNDkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXRoRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR1BhdGhFbGVtZW50LmNwcApAQCAtMzE0LDEwICszMTQsMTAgQEAgU1ZHUGF0
aEJ5dGVTdHJlYW0qIFNWR1BhdGhFbGVtZW50OjpwYXRoQnl0ZVN0cmVhbSgpIGNvbnN0CiAgICAg
cmV0dXJuIHN0YXRpY19jYXN0PFNWR0FuaW1hdGVkUGF0aFNlZ0xpc3RQcm9wZXJ0eVRlYXJPZmYq
Pihwcm9wZXJ0eSktPmFuaW1hdGVkUGF0aEJ5dGVTdHJlYW0oKTsKIH0KIAotUGFzc1JlZlB0cjxT
VkdBbmltYXRlZFByb3BlcnR5PiBTVkdQYXRoRWxlbWVudDo6bG9va3VwT3JDcmVhdGVEV3JhcHBl
cih2b2lkKiBjb250ZXh0RWxlbWVudCkKK1Bhc3NSZWZQdHI8U1ZHQW5pbWF0ZWRQcm9wZXJ0eT4g
U1ZHUGF0aEVsZW1lbnQ6Omxvb2t1cE9yQ3JlYXRlRFdyYXBwZXIoU1ZHRWxlbWVudCogY29udGV4
dEVsZW1lbnQpCiB7CiAgICAgQVNTRVJUKGNvbnRleHRFbGVtZW50KTsKLSAgICBTVkdQYXRoRWxl
bWVudCogb3duZXJUeXBlID0gc3RhdGljX2Nhc3Q8U1ZHUGF0aEVsZW1lbnQqPihjb250ZXh0RWxl
bWVudCk7CisgICAgU1ZHUGF0aEVsZW1lbnQqIG93bmVyVHlwZSA9IHRvU1ZHUGF0aEVsZW1lbnQo
Y29udGV4dEVsZW1lbnQpOwogCiAgICAgaWYgKFNWR0FuaW1hdGVkUHJvcGVydHkqIHByb3BlcnR5
ID0gU1ZHQW5pbWF0ZWRQcm9wZXJ0eTo6bG9va3VwV3JhcHBlcjxTVkdQYXRoRWxlbWVudCwgU1ZH
QW5pbWF0ZWRQYXRoU2VnTGlzdFByb3BlcnR5VGVhck9mZj4ob3duZXJUeXBlLCBkUHJvcGVydHlJ
bmZvKCkpKQogICAgICAgICByZXR1cm4gcHJvcGVydHk7CkBAIC0zMjksMTAgKzMyOSwxMCBAQCBQ
YXNzUmVmUHRyPFNWR0FuaW1hdGVkUHJvcGVydHk+IFNWR1BhdGhFbGVtZW50Ojpsb29rdXBPckNy
ZWF0ZURXcmFwcGVyKHZvaWQqIGNvbgogICAgICAgICAgICAob3duZXJUeXBlLCBkUHJvcGVydHlJ
bmZvKCksIG93bmVyVHlwZS0+bV9wYXRoU2VnTGlzdC52YWx1ZSk7CiB9CiAKLXZvaWQgU1ZHUGF0
aEVsZW1lbnQ6OnN5bmNocm9uaXplRCh2b2lkKiBjb250ZXh0RWxlbWVudCkKK3ZvaWQgU1ZHUGF0
aEVsZW1lbnQ6OnN5bmNocm9uaXplRChTVkdFbGVtZW50KiBjb250ZXh0RWxlbWVudCkKIHsKICAg
ICBBU1NFUlQoY29udGV4dEVsZW1lbnQpOwotICAgIFNWR1BhdGhFbGVtZW50KiBvd25lclR5cGUg
PSBzdGF0aWNfY2FzdDxTVkdQYXRoRWxlbWVudCo+KGNvbnRleHRFbGVtZW50KTsKKyAgICBTVkdQ
YXRoRWxlbWVudCogb3duZXJUeXBlID0gdG9TVkdQYXRoRWxlbWVudChjb250ZXh0RWxlbWVudCk7
CiAgICAgaWYgKCFvd25lclR5cGUtPm1fcGF0aFNlZ0xpc3Quc2hvdWxkU3luY2hyb25pemUpCiAg
ICAgICAgIHJldHVybjsKICAgICBvd25lclR5cGUtPm1fcGF0aFNlZ0xpc3Quc3luY2hyb25pemUo
b3duZXJUeXBlLCBkUHJvcGVydHlJbmZvKCktPmF0dHJpYnV0ZU5hbWUsIG93bmVyVHlwZS0+bV9w
YXRoU2VnTGlzdC52YWx1ZS52YWx1ZUFzU3RyaW5nKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR1BhdGhFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0aEVs
ZW1lbnQuaAppbmRleCAxM2I1MTAwZmViNzMwZGE0Y2VhMjdhZDhhMGViYzMwNTRkMGMzMzM2Li40
ZTJiZTA3ZDkyYjk2MjMwODgxOWMyMjRlYTA0MmFjYWRkODc5OTQ0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHUGF0aEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHUGF0aEVsZW1lbnQuaApAQCAtMjYsNiArMjYsNyBAQAogI2luY2x1ZGUgIlNWR0FuaW1hdGVk
TnVtYmVyLmgiCiAjaW5jbHVkZSAiU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZC5oIgogI2lu
Y2x1ZGUgIlNWR0xhbmdTcGFjZS5oIgorI2luY2x1ZGUgIlNWR05hbWVzLmgiCiAjaW5jbHVkZSAi
U1ZHUGF0aEJ5dGVTdHJlYW0uaCIKICNpbmNsdWRlICJTVkdQYXRoU2VnTGlzdC5oIgogI2luY2x1
ZGUgIlNWR1N0eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50LmgiCkBAIC0xMTMsOCArMTE0LDggQEAg
cHJpdmF0ZToKICAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNNYXJrZXJzKCkgY29uc3QgeyByZXR1
cm4gdHJ1ZTsgfQogCiAgICAgLy8gQ3VzdG9tICdkJyBwcm9wZXJ0eQotICAgIHN0YXRpYyB2b2lk
IHN5bmNocm9uaXplRCh2b2lkKiBjb250ZXh0RWxlbWVudCk7Ci0gICAgc3RhdGljIFBhc3NSZWZQ
dHI8U1ZHQW5pbWF0ZWRQcm9wZXJ0eT4gbG9va3VwT3JDcmVhdGVEV3JhcHBlcih2b2lkKiBjb250
ZXh0RWxlbWVudCk7CisgICAgc3RhdGljIHZvaWQgc3luY2hyb25pemVEKFNWR0VsZW1lbnQqIGNv
bnRleHRFbGVtZW50KTsKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxTVkdBbmltYXRlZFByb3BlcnR5
PiBsb29rdXBPckNyZWF0ZURXcmFwcGVyKFNWR0VsZW1lbnQqIGNvbnRleHRFbGVtZW50KTsKIAog
ICAgIEJFR0lOX0RFQ0xBUkVfQU5JTUFURURfUFJPUEVSVElFUyhTVkdQYXRoRWxlbWVudCkKICAg
ICAgICAgREVDTEFSRV9BTklNQVRFRF9OVU1CRVIoUGF0aExlbmd0aCwgcGF0aExlbmd0aCkKQEAg
LTEzOSw2ICsxNDAsMTIgQEAgcHJpdmF0ZToKICAgICBib29sIG1faXNBbmltVmFsT2JzZXJ2ZWQ7
CiB9OwogCitpbmxpbmUgU1ZHUGF0aEVsZW1lbnQqIHRvU1ZHUGF0aEVsZW1lbnQoU1ZHRWxlbWVu
dCogZWxlbWVudCkKK3sKKyAgICBBU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTighZWxl
bWVudCB8fCBlbGVtZW50LT5oYXNUYWdOYW1lKFNWR05hbWVzOjpwYXRoVGFnKSk7CisgICAgcmV0
dXJuIHN0YXRpY19jYXN0PFNWR1BhdGhFbGVtZW50Kj4oZWxlbWVudCk7Cit9CisKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShTVkcpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHUG9seUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R1BvbHlFbGVtZW50LmNwcAppbmRleCA4ZTZjODMxYjBkODE3ZDE5YTZjNDdlNDIzZTM5NDYyOTQw
MDI3NTc4Li4zNzExZDk5MTIwZTY3YTY1MzdiMzRkOTlhY2RlY2EwZTdlZDlkN2FkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUG9seUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdQb2x5RWxlbWVudC5jcHAKQEAgLTEzNywxOSArMTM3LDE5IEBAIHZvaWQg
U1ZHUG9seUVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYg
YXR0ck5hbWUpCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CiAKLXZvaWQgU1ZHUG9seUVs
ZW1lbnQ6OnN5bmNocm9uaXplUG9pbnRzKHZvaWQqIGNvbnRleHRFbGVtZW50KQordm9pZCBTVkdQ
b2x5RWxlbWVudDo6c3luY2hyb25pemVQb2ludHMoU1ZHRWxlbWVudCogY29udGV4dEVsZW1lbnQp
CiB7CiAgICAgQVNTRVJUKGNvbnRleHRFbGVtZW50KTsKLSAgICBTVkdQb2x5RWxlbWVudCogb3du
ZXJUeXBlID0gc3RhdGljX2Nhc3Q8U1ZHUG9seUVsZW1lbnQqPihjb250ZXh0RWxlbWVudCk7Cisg
ICAgU1ZHUG9seUVsZW1lbnQqIG93bmVyVHlwZSA9IHRvU1ZHUG9seUVsZW1lbnQoY29udGV4dEVs
ZW1lbnQpOwogICAgIGlmICghb3duZXJUeXBlLT5tX3BvaW50cy5zaG91bGRTeW5jaHJvbml6ZSkK
ICAgICAgICAgcmV0dXJuOwogICAgIG93bmVyVHlwZS0+bV9wb2ludHMuc3luY2hyb25pemUob3du
ZXJUeXBlLCBwb2ludHNQcm9wZXJ0eUluZm8oKS0+YXR0cmlidXRlTmFtZSwgb3duZXJUeXBlLT5t
X3BvaW50cy52YWx1ZS52YWx1ZUFzU3RyaW5nKCkpOwogfQogCi1QYXNzUmVmUHRyPFNWR0FuaW1h
dGVkUHJvcGVydHk+IFNWR1BvbHlFbGVtZW50Ojpsb29rdXBPckNyZWF0ZVBvaW50c1dyYXBwZXIo
dm9pZCogY29udGV4dEVsZW1lbnQpCitQYXNzUmVmUHRyPFNWR0FuaW1hdGVkUHJvcGVydHk+IFNW
R1BvbHlFbGVtZW50Ojpsb29rdXBPckNyZWF0ZVBvaW50c1dyYXBwZXIoU1ZHRWxlbWVudCogY29u
dGV4dEVsZW1lbnQpCiB7CiAgICAgQVNTRVJUKGNvbnRleHRFbGVtZW50KTsKLSAgICBTVkdQb2x5
RWxlbWVudCogb3duZXJUeXBlID0gc3RhdGljX2Nhc3Q8U1ZHUG9seUVsZW1lbnQqPihjb250ZXh0
RWxlbWVudCk7CisgICAgU1ZHUG9seUVsZW1lbnQqIG93bmVyVHlwZSA9IHRvU1ZHUG9seUVsZW1l
bnQoY29udGV4dEVsZW1lbnQpOwogICAgIHJldHVybiBTVkdBbmltYXRlZFByb3BlcnR5Ojpsb29r
dXBPckNyZWF0ZVdyYXBwZXI8U1ZHUG9seUVsZW1lbnQsIFNWR0FuaW1hdGVkUG9pbnRMaXN0LCBT
VkdQb2ludExpc3Q+CiAgICAgICAgICAgIChvd25lclR5cGUsIHBvaW50c1Byb3BlcnR5SW5mbygp
LCBvd25lclR5cGUtPm1fcG9pbnRzLnZhbHVlKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdQb2x5RWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BvbHlFbGVt
ZW50LmgKaW5kZXggMmJlZDg0YjA0YzgyMjU2ZDdjMjE2MjEwZWZiMTFlNzkzMzQzYzI5Yi4uNTYy
NDg5Y2Y0ZjdlMzZkZWUzNjg5NGU3MDFjZjI3Yzc4ZTAwNDkzNSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR1BvbHlFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R1BvbHlFbGVtZW50LmgKQEAgLTI1LDYgKzI1LDcgQEAKICNpbmNsdWRlICJTVkdBbmltYXRlZEJv
b2xlYW4uaCIKICNpbmNsdWRlICJTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLmgiCiAjaW5j
bHVkZSAiU1ZHTGFuZ1NwYWNlLmgiCisjaW5jbHVkZSAiU1ZHTmFtZXMuaCIKICNpbmNsdWRlICJT
VkdQb2ludExpc3QuaCIKICNpbmNsdWRlICJTVkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVudC5o
IgogI2luY2x1ZGUgIlNWR1Rlc3RzLmgiCkBAIC01Nyw4ICs1OCw4IEBAIHByaXZhdGU6CiAgICAg
dmlydHVhbCBib29sIHN1cHBvcnRzTWFya2VycygpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KIAog
ICAgIC8vIEN1c3RvbSAncG9pbnRzJyBwcm9wZXJ0eQotICAgIHN0YXRpYyB2b2lkIHN5bmNocm9u
aXplUG9pbnRzKHZvaWQqIGNvbnRleHRFbGVtZW50KTsKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxT
VkdBbmltYXRlZFByb3BlcnR5PiBsb29rdXBPckNyZWF0ZVBvaW50c1dyYXBwZXIodm9pZCogY29u
dGV4dEVsZW1lbnQpOworICAgIHN0YXRpYyB2b2lkIHN5bmNocm9uaXplUG9pbnRzKFNWR0VsZW1l
bnQqIGNvbnRleHRFbGVtZW50KTsKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxTVkdBbmltYXRlZFBy
b3BlcnR5PiBsb29rdXBPckNyZWF0ZVBvaW50c1dyYXBwZXIoU1ZHRWxlbWVudCogY29udGV4dEVs
ZW1lbnQpOwogCiAgICAgQkVHSU5fREVDTEFSRV9BTklNQVRFRF9QUk9QRVJUSUVTKFNWR1BvbHlF
bGVtZW50KQogICAgICAgICBERUNMQVJFX0FOSU1BVEVEX0JPT0xFQU4oRXh0ZXJuYWxSZXNvdXJj
ZXNSZXF1aXJlZCwgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCkKQEAgLTczLDYgKzc0LDEyIEBA
IHByb3RlY3RlZDoKICAgICBtdXRhYmxlIFNWR1N5bmNocm9uaXphYmxlQW5pbWF0ZWRQcm9wZXJ0
eTxTVkdQb2ludExpc3Q+IG1fcG9pbnRzOwogfTsKIAoraW5saW5lIFNWR1BvbHlFbGVtZW50KiB0
b1NWR1BvbHlFbGVtZW50KFNWR0VsZW1lbnQqIGVsZW1lbnQpCit7CisgICAgQVNTRVJUX1dJVEhf
U0VDVVJJVFlfSU1QTElDQVRJT04oIWVsZW1lbnQgfHwgZWxlbWVudC0+aGFzVGFnTmFtZShTVkdO
YW1lczo6cG9seWdvblRhZykgfHwgZWxlbWVudC0+aGFzVGFnTmFtZShTVkdOYW1lczo6cG9seWxp
bmVUYWcpKTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8U1ZHUG9seUVsZW1lbnQqPihlbGVtZW50
KTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKFNWRykK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUZXh0Q29udGVudEVsZW1lbnQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RleHRDb250ZW50RWxlbWVudC5jcHAKaW5kZXggY2Y2
MmEyMWY0OTlmYzdmNzQ2MGU3ZmFmM2RmMmYwYzM1MmQyZmJhMy4uNjM1YzYzMjFlNjU0NGVjNWU5
OGU0NmRmN2RiYzQzOGJkZDU2ZjNhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R1RleHRDb250ZW50RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RleHRD
b250ZW50RWxlbWVudC5jcHAKQEAgLTc0LDIwICs3NCwyMCBAQCBTVkdUZXh0Q29udGVudEVsZW1l
bnQ6OlNWR1RleHRDb250ZW50RWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBE
b2N1bQogICAgIHJlZ2lzdGVyQW5pbWF0ZWRQcm9wZXJ0aWVzRm9yU1ZHVGV4dENvbnRlbnRFbGVt
ZW50KCk7CiB9CiAKLXZvaWQgU1ZHVGV4dENvbnRlbnRFbGVtZW50OjpzeW5jaHJvbml6ZVRleHRM
ZW5ndGgodm9pZCogY29udGV4dEVsZW1lbnQpCit2b2lkIFNWR1RleHRDb250ZW50RWxlbWVudDo6
c3luY2hyb25pemVUZXh0TGVuZ3RoKFNWR0VsZW1lbnQqIGNvbnRleHRFbGVtZW50KQogewogICAg
IEFTU0VSVChjb250ZXh0RWxlbWVudCk7Ci0gICAgU1ZHVGV4dENvbnRlbnRFbGVtZW50KiBvd25l
clR5cGUgPSBzdGF0aWNfY2FzdDxTVkdUZXh0Q29udGVudEVsZW1lbnQqPihjb250ZXh0RWxlbWVu
dCk7CisgICAgU1ZHVGV4dENvbnRlbnRFbGVtZW50KiBvd25lclR5cGUgPSB0b1NWR1RleHRDb250
ZW50RWxlbWVudChjb250ZXh0RWxlbWVudCk7CiAgICAgaWYgKCFvd25lclR5cGUtPm1fdGV4dExl
bmd0aC5zaG91bGRTeW5jaHJvbml6ZSkKICAgICAgICAgcmV0dXJuOwogICAgIEF0b21pY1N0cmlu
ZyB2YWx1ZShTVkdQcm9wZXJ0eVRyYWl0czxTVkdMZW5ndGg+Ojp0b1N0cmluZyhvd25lclR5cGUt
Pm1fc3BlY2lmaWVkVGV4dExlbmd0aCkpOwogICAgIG93bmVyVHlwZS0+bV90ZXh0TGVuZ3RoLnN5
bmNocm9uaXplKG93bmVyVHlwZSwgdGV4dExlbmd0aFByb3BlcnR5SW5mbygpLT5hdHRyaWJ1dGVO
YW1lLCB2YWx1ZSk7CiB9CiAKLVBhc3NSZWZQdHI8U1ZHQW5pbWF0ZWRQcm9wZXJ0eT4gU1ZHVGV4
dENvbnRlbnRFbGVtZW50Ojpsb29rdXBPckNyZWF0ZVRleHRMZW5ndGhXcmFwcGVyKHZvaWQqIGNv
bnRleHRFbGVtZW50KQorUGFzc1JlZlB0cjxTVkdBbmltYXRlZFByb3BlcnR5PiBTVkdUZXh0Q29u
dGVudEVsZW1lbnQ6Omxvb2t1cE9yQ3JlYXRlVGV4dExlbmd0aFdyYXBwZXIoU1ZHRWxlbWVudCog
Y29udGV4dEVsZW1lbnQpCiB7CiAgICAgQVNTRVJUKGNvbnRleHRFbGVtZW50KTsKLSAgICBTVkdU
ZXh0Q29udGVudEVsZW1lbnQqIG93bmVyVHlwZSA9IHN0YXRpY19jYXN0PFNWR1RleHRDb250ZW50
RWxlbWVudCo+KGNvbnRleHRFbGVtZW50KTsKKyAgICBTVkdUZXh0Q29udGVudEVsZW1lbnQqIG93
bmVyVHlwZSA9IHRvU1ZHVGV4dENvbnRlbnRFbGVtZW50KGNvbnRleHRFbGVtZW50KTsKICAgICBy
ZXR1cm4gU1ZHQW5pbWF0ZWRQcm9wZXJ0eTo6bG9va3VwT3JDcmVhdGVXcmFwcGVyPFNWR1RleHRD
b250ZW50RWxlbWVudCwgU1ZHQW5pbWF0ZWRMZW5ndGgsIFNWR0xlbmd0aD4KICAgICAgICAgICAg
KG93bmVyVHlwZSwgdGV4dExlbmd0aFByb3BlcnR5SW5mbygpLCBvd25lclR5cGUtPm1fdGV4dExl
bmd0aC52YWx1ZSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGV4dENv
bnRlbnRFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGV4dENvbnRlbnRFbGVtZW50
LmgKaW5kZXggMDVjYTYyYWNmMzc4NGU2N2FkODAzODYxMjllNDVmNTY4NmM1M2FkYy4uNzNkYzZi
OGYxYTRjMzdmZWQwMGE2ZTBhODc0YzIxZTE3MGEzNzZkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR1RleHRDb250ZW50RWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdUZXh0Q29udGVudEVsZW1lbnQuaApAQCAtMTE0LDggKzExNCw4IEBAIHByaXZhdGU6CiAg
ICAgdmlydHVhbCBib29sIGlzVGV4dENvbnRlbnQoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CiAK
ICAgICAvLyBDdXN0b20gJ3RleHRMZW5ndGgnIHByb3BlcnR5Ci0gICAgc3RhdGljIHZvaWQgc3lu
Y2hyb25pemVUZXh0TGVuZ3RoKHZvaWQqIGNvbnRleHRFbGVtZW50KTsKLSAgICBzdGF0aWMgUGFz
c1JlZlB0cjxTVkdBbmltYXRlZFByb3BlcnR5PiBsb29rdXBPckNyZWF0ZVRleHRMZW5ndGhXcmFw
cGVyKHZvaWQqIGNvbnRleHRFbGVtZW50KTsKKyAgICBzdGF0aWMgdm9pZCBzeW5jaHJvbml6ZVRl
eHRMZW5ndGgoU1ZHRWxlbWVudCogY29udGV4dEVsZW1lbnQpOworICAgIHN0YXRpYyBQYXNzUmVm
UHRyPFNWR0FuaW1hdGVkUHJvcGVydHk+IGxvb2t1cE9yQ3JlYXRlVGV4dExlbmd0aFdyYXBwZXIo
U1ZHRWxlbWVudCogY29udGV4dEVsZW1lbnQpOwogICAgIG11dGFibGUgU1ZHU3luY2hyb25pemFi
bGVBbmltYXRlZFByb3BlcnR5PFNWR0xlbmd0aD4gbV90ZXh0TGVuZ3RoOwogICAgIFNWR0xlbmd0
aCBtX3NwZWNpZmllZFRleHRMZW5ndGg7CiAgIApAQCAtMTMwLDYgKzEzMCwxMiBAQCBwcml2YXRl
OgogICAgIHZpcnR1YWwgdm9pZCBzeW5jaHJvbml6ZVN5c3RlbUxhbmd1YWdlKCkgeyBTVkdUZXN0
czo6c3luY2hyb25pemVTeXN0ZW1MYW5ndWFnZSh0aGlzKTsgfQogfTsKIAoraW5saW5lIFNWR1Rl
eHRDb250ZW50RWxlbWVudCogdG9TVkdUZXh0Q29udGVudEVsZW1lbnQoU1ZHRWxlbWVudCogZWxl
bWVudCkKK3sKKyAgICBBU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTighZWxlbWVudCB8
fCBlbGVtZW50LT5pc1RleHRDb250ZW50KCkpOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxTVkdU
ZXh0Q29udGVudEVsZW1lbnQqPihlbGVtZW50KTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQogCiAjZW5kaWYgLy8gRU5BQkxFKFNWRykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdWaWV3U3BlYy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVmlld1NwZWMuY3BwCmlu
ZGV4IDQ3OTllZGM0OGUzOWM3YjM2OWQyYWVhMTY3YTM2ZTFjNjhiNDgzZDguLmE3MDE5MWM5YzBj
MTc1NWM1MzdlYjMxY2U5NjUyMGQ4YzA4NGExY2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdWaWV3U3BlYy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1ZpZXdTcGVj
LmNwcApAQCAtNDEsOCArNDEsNyBAQCBjb25zdCBTVkdQcm9wZXJ0eUluZm8qIFNWR1ZpZXdTcGVj
Ojp2aWV3Qm94UHJvcGVydHlJbmZvKCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFByb3BlcnR5SXNSZWFkT25seSwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFNWR05hbWVzOjp2aWV3Qm94QXR0ciwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpZXdCb3hJZGVudGlmaWVyKCksCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJlNWR1ZpZXdTcGVjOjpsb29rdXBP
ckNyZWF0ZVZpZXdCb3hXcmFwcGVyKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDAsIDApOwogICAgIH0KICAgICByZXR1cm4gc19wcm9wZXJ0eUluZm87CiB9
CkBAIC01Niw4ICs1NSw3IEBAIGNvbnN0IFNWR1Byb3BlcnR5SW5mbyogU1ZHVmlld1NwZWM6OnBy
ZXNlcnZlQXNwZWN0UmF0aW9Qcm9wZXJ0eUluZm8oKQogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgUHJvcGVydHlJc1JlYWRPbmx5LAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU1ZHTmFtZXM6OnByZXNlcnZlQXNwZWN0UmF0
aW9BdHRyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJl
c2VydmVBc3BlY3RSYXRpb0lkZW50aWZpZXIoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAmU1ZHVmlld1NwZWM6Omxvb2t1cE9yQ3JlYXRlUHJlc2VydmVBc3BlY3RSYXRp
b1dyYXBwZXIpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
MCwgMCk7CiAgICAgfQogICAgIHJldHVybiBzX3Byb3BlcnR5SW5mbzsKIH0KQEAgLTcyLDggKzcw
LDcgQEAgY29uc3QgU1ZHUHJvcGVydHlJbmZvKiBTVkdWaWV3U3BlYzo6dHJhbnNmb3JtUHJvcGVy
dHlJbmZvKCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBy
b3BlcnR5SXNSZWFkT25seSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFNWR05hbWVzOjp0cmFuc2Zvcm1BdHRyLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgdHJhbnNmb3JtSWRlbnRpZmllcigpLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICZTVkdWaWV3U3BlYzo6bG9va3VwT3JDcmVhdGVUcmFu
c2Zvcm1XcmFwcGVyKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDAsIDApOwogICAgIH0KICAgICByZXR1cm4gc19wcm9wZXJ0eUluZm87CiB9CkBAIC0xNzAs
MjYgKzE2NywyMyBAQCBQYXNzUmVmUHRyPFNWR0FuaW1hdGVkUHJlc2VydmVBc3BlY3RSYXRpbz4g
U1ZHVmlld1NwZWM6OnByZXNlcnZlQXNwZWN0UmF0aW9BbmltYQogICAgIHJldHVybiBzdGF0aWNf
cG9pbnRlcl9jYXN0PFNWR0FuaW1hdGVkUHJlc2VydmVBc3BlY3RSYXRpbz4obG9va3VwT3JDcmVh
dGVQcmVzZXJ2ZUFzcGVjdFJhdGlvV3JhcHBlcih0aGlzKSk7CiB9CiAKLVBhc3NSZWZQdHI8U1ZH
QW5pbWF0ZWRQcm9wZXJ0eT4gU1ZHVmlld1NwZWM6Omxvb2t1cE9yQ3JlYXRlVmlld0JveFdyYXBw
ZXIodm9pZCogbWFza2VkT3duZXJUeXBlKQorUGFzc1JlZlB0cjxTVkdBbmltYXRlZFByb3BlcnR5
PiBTVkdWaWV3U3BlYzo6bG9va3VwT3JDcmVhdGVWaWV3Qm94V3JhcHBlcihTVkdWaWV3U3BlYyog
b3duZXJUeXBlKQogewotICAgIEFTU0VSVChtYXNrZWRPd25lclR5cGUpOwotICAgIFNWR1ZpZXdT
cGVjKiBvd25lclR5cGUgPSBzdGF0aWNfY2FzdDxTVkdWaWV3U3BlYyo+KG1hc2tlZE93bmVyVHlw
ZSk7CisgICAgQVNTRVJUKG93bmVyVHlwZSk7CiAgICAgQVNTRVJUKG93bmVyVHlwZS0+Y29udGV4
dEVsZW1lbnQoKSk7CiAgICAgcmV0dXJuIFNWR0FuaW1hdGVkUHJvcGVydHk6Omxvb2t1cE9yQ3Jl
YXRlV3JhcHBlcjxTVkdFbGVtZW50LCBTVkdBbmltYXRlZFJlY3QsIEZsb2F0UmVjdD4ob3duZXJU
eXBlLT5jb250ZXh0RWxlbWVudCgpLCB2aWV3Qm94UHJvcGVydHlJbmZvKCksIG93bmVyVHlwZS0+
bV92aWV3Qm94KTsKIH0KIAotUGFzc1JlZlB0cjxTVkdBbmltYXRlZFByb3BlcnR5PiBTVkdWaWV3
U3BlYzo6bG9va3VwT3JDcmVhdGVQcmVzZXJ2ZUFzcGVjdFJhdGlvV3JhcHBlcih2b2lkKiBtYXNr
ZWRPd25lclR5cGUpCitQYXNzUmVmUHRyPFNWR0FuaW1hdGVkUHJvcGVydHk+IFNWR1ZpZXdTcGVj
Ojpsb29rdXBPckNyZWF0ZVByZXNlcnZlQXNwZWN0UmF0aW9XcmFwcGVyKFNWR1ZpZXdTcGVjKiBv
d25lclR5cGUpCiB7Ci0gICAgQVNTRVJUKG1hc2tlZE93bmVyVHlwZSk7Ci0gICAgU1ZHVmlld1Nw
ZWMqIG93bmVyVHlwZSA9IHN0YXRpY19jYXN0PFNWR1ZpZXdTcGVjKj4obWFza2VkT3duZXJUeXBl
KTsKKyAgICBBU1NFUlQob3duZXJUeXBlKTsKICAgICBBU1NFUlQob3duZXJUeXBlLT5jb250ZXh0
RWxlbWVudCgpKTsKICAgICByZXR1cm4gU1ZHQW5pbWF0ZWRQcm9wZXJ0eTo6bG9va3VwT3JDcmVh
dGVXcmFwcGVyPFNWR0VsZW1lbnQsIFNWR0FuaW1hdGVkUHJlc2VydmVBc3BlY3RSYXRpbywgU1ZH
UHJlc2VydmVBc3BlY3RSYXRpbz4ob3duZXJUeXBlLT5jb250ZXh0RWxlbWVudCgpLCBwcmVzZXJ2
ZUFzcGVjdFJhdGlvUHJvcGVydHlJbmZvKCksIG93bmVyVHlwZS0+bV9wcmVzZXJ2ZUFzcGVjdFJh
dGlvKTsKIH0KIAotUGFzc1JlZlB0cjxTVkdBbmltYXRlZFByb3BlcnR5PiBTVkdWaWV3U3BlYzo6
bG9va3VwT3JDcmVhdGVUcmFuc2Zvcm1XcmFwcGVyKHZvaWQqIG1hc2tlZE93bmVyVHlwZSkKK1Bh
c3NSZWZQdHI8U1ZHQW5pbWF0ZWRQcm9wZXJ0eT4gU1ZHVmlld1NwZWM6Omxvb2t1cE9yQ3JlYXRl
VHJhbnNmb3JtV3JhcHBlcihTVkdWaWV3U3BlYyogb3duZXJUeXBlKQogewotICAgIEFTU0VSVCht
YXNrZWRPd25lclR5cGUpOwotICAgIFNWR1ZpZXdTcGVjKiBvd25lclR5cGUgPSBzdGF0aWNfY2Fz
dDxTVkdWaWV3U3BlYyo+KG1hc2tlZE93bmVyVHlwZSk7CisgICAgQVNTRVJUKG93bmVyVHlwZSk7
CiAgICAgQVNTRVJUKG93bmVyVHlwZS0+Y29udGV4dEVsZW1lbnQoKSk7CiAgICAgcmV0dXJuIFNW
R0FuaW1hdGVkUHJvcGVydHk6Omxvb2t1cE9yQ3JlYXRlV3JhcHBlcjxTVkdFbGVtZW50LCBTVkdB
bmltYXRlZFRyYW5zZm9ybUxpc3QsIFNWR1RyYW5zZm9ybUxpc3Q+KG93bmVyVHlwZS0+Y29udGV4
dEVsZW1lbnQoKSwgdHJhbnNmb3JtUHJvcGVydHlJbmZvKCksIG93bmVyVHlwZS0+bV90cmFuc2Zv
cm0pOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1ZpZXdTcGVjLmggYi9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHVmlld1NwZWMuaAppbmRleCBiYTM5NGU0ZDgwZjI5MjcyNjAw
Mzk3ZjgxMTNhMjFmNWVhZGNkNWY4Li5mODYzNGFmZDZlZWE4YzVmOTg4NmFiYjBiYjhkMmRmMWQ2
NjlkMzBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVmlld1NwZWMuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVmlld1NwZWMuaApAQCAtOTUsOSArOTUsOSBAQCBwcml2
YXRlOgogICAgIHN0YXRpYyBjb25zdCBBdG9taWNTdHJpbmcmIHZpZXdCb3hJZGVudGlmaWVyKCk7
CiAgICAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyYgcHJlc2VydmVBc3BlY3RSYXRpb0lkZW50
aWZpZXIoKTsKIAotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNWR0FuaW1hdGVkUHJvcGVydHk+IGxv
b2t1cE9yQ3JlYXRlVHJhbnNmb3JtV3JhcHBlcih2b2lkKiBjb250ZXh0RWxlbWVudCk7Ci0gICAg
c3RhdGljIFBhc3NSZWZQdHI8U1ZHQW5pbWF0ZWRQcm9wZXJ0eT4gbG9va3VwT3JDcmVhdGVWaWV3
Qm94V3JhcHBlcih2b2lkKiBjb250ZXh0RWxlbWVudCk7Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8
U1ZHQW5pbWF0ZWRQcm9wZXJ0eT4gbG9va3VwT3JDcmVhdGVQcmVzZXJ2ZUFzcGVjdFJhdGlvV3Jh
cHBlcih2b2lkKiBjb250ZXh0RWxlbWVudCk7CisgICAgc3RhdGljIFBhc3NSZWZQdHI8U1ZHQW5p
bWF0ZWRQcm9wZXJ0eT4gbG9va3VwT3JDcmVhdGVUcmFuc2Zvcm1XcmFwcGVyKFNWR1ZpZXdTcGVj
KiBjb250ZXh0RWxlbWVudCk7CisgICAgc3RhdGljIFBhc3NSZWZQdHI8U1ZHQW5pbWF0ZWRQcm9w
ZXJ0eT4gbG9va3VwT3JDcmVhdGVWaWV3Qm94V3JhcHBlcihTVkdWaWV3U3BlYyogY29udGV4dEVs
ZW1lbnQpOworICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNWR0FuaW1hdGVkUHJvcGVydHk+IGxvb2t1
cE9yQ3JlYXRlUHJlc2VydmVBc3BlY3RSYXRpb1dyYXBwZXIoU1ZHVmlld1NwZWMqIGNvbnRleHRF
bGVtZW50KTsKIAogICAgIFNWR0VsZW1lbnQqIG1fY29udGV4dEVsZW1lbnQ7CiAgICAgU1ZHWm9v
bUFuZFBhblR5cGUgbV96b29tQW5kUGFuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3Zn
L3Byb3BlcnRpZXMvU1ZHQW5pbWF0ZWRQcm9wZXJ0eU1hY3Jvcy5oIGIvU291cmNlL1dlYkNvcmUv
c3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0ZWRQcm9wZXJ0eU1hY3Jvcy5oCmluZGV4IGJiYmQ0NWIy
ZTEzMDNjZWYxMDliZmM3NDk3MDBlNDRkNTZiODIzMDMuLmRhMGRiMzUzM2UyMzc3MmFmODE2Mjc4
NDg0ZWI4MTEzYWY2MDk1ZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0
aWVzL1NWR0FuaW1hdGVkUHJvcGVydHlNYWNyb3MuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcv
cHJvcGVydGllcy9TVkdBbmltYXRlZFByb3BlcnR5TWFjcm9zLmgKQEAgLTE0NSwxNCArMTQ1LDE0
IEBAIHByaXZhdGU6IFwKICAgICAgICAgbV8jI0xvd2VyUHJvcGVydHkuc3luY2hyb25pemUodGhp
cywgTG93ZXJQcm9wZXJ0eSMjUHJvcGVydHlJbmZvKCktPmF0dHJpYnV0ZU5hbWUsIHZhbHVlKTsg
XAogICAgIH0gXAogXAotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNWR0FuaW1hdGVkUHJvcGVydHk+
IGxvb2t1cE9yQ3JlYXRlIyNVcHBlclByb3BlcnR5IyNXcmFwcGVyKHZvaWQqIG1hc2tlZE93bmVy
VHlwZSkgXAorICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNWR0FuaW1hdGVkUHJvcGVydHk+IGxvb2t1
cE9yQ3JlYXRlIyNVcHBlclByb3BlcnR5IyNXcmFwcGVyKFNWR0VsZW1lbnQqIG1hc2tlZE93bmVy
VHlwZSkgXAogICAgIHsgXAogICAgICAgICBBU1NFUlQobWFza2VkT3duZXJUeXBlKTsgXAogICAg
ICAgICBVc2VPd25lclR5cGUqIG93bmVyVHlwZSA9IHN0YXRpY19jYXN0PFVzZU93bmVyVHlwZSo+
KG1hc2tlZE93bmVyVHlwZSk7IFwKICAgICAgICAgcmV0dXJuIFNWR0FuaW1hdGVkUHJvcGVydHk6
Omxvb2t1cE9yQ3JlYXRlV3JhcHBlcjxVc2VPd25lclR5cGUsIFRlYXJPZmZUeXBlLCBQcm9wZXJ0
eVR5cGU+KG93bmVyVHlwZSwgTG93ZXJQcm9wZXJ0eSMjUHJvcGVydHlJbmZvKCksIG93bmVyVHlw
ZS0+bV8jI0xvd2VyUHJvcGVydHkudmFsdWUpOyBcCiAgICAgfSBcCiBcCi0gICAgc3RhdGljIHZv
aWQgc3luY2hyb25pemUjI1VwcGVyUHJvcGVydHkodm9pZCogbWFza2VkT3duZXJUeXBlKSBcCisg
ICAgc3RhdGljIHZvaWQgc3luY2hyb25pemUjI1VwcGVyUHJvcGVydHkoU1ZHRWxlbWVudCogbWFz
a2VkT3duZXJUeXBlKSBcCiAgICAgeyBcCiAgICAgICAgIEFTU0VSVChtYXNrZWRPd25lclR5cGUp
OyBcCiAgICAgICAgIFVzZU93bmVyVHlwZSogb3duZXJUeXBlID0gc3RhdGljX2Nhc3Q8VXNlT3du
ZXJUeXBlKj4obWFza2VkT3duZXJUeXBlKTsgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
c3ZnL3Byb3BlcnRpZXMvU1ZHUHJvcGVydHlJbmZvLmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJv
cGVydGllcy9TVkdQcm9wZXJ0eUluZm8uaAppbmRleCBiNjI5YWI4ZjZmZDUwY2MxZTU5MGYyZmNj
M2RjMmIzOTY0NWIyYWQwLi5hNThhZWVlNDdjMDNlMzZmODJmY2U0MWI4NjViNjNlMGM2ZmZiMjUz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdQcm9wZXJ0eUlu
Zm8uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdQcm9wZXJ0eUluZm8u
aApAQCAtMjcsNiArMjcsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBTVkdBbmlt
YXRlZFByb3BlcnR5OworY2xhc3MgU1ZHRWxlbWVudDsKIAogZW51bSBBbmltYXRlZFByb3BlcnR5
U3RhdGUgewogICAgIFByb3BlcnR5SXNSZWFkV3JpdGUsCkBAIC01Nyw4ICs1OCw4IEBAIGVudW0g
QW5pbWF0ZWRQcm9wZXJ0eVR5cGUgewogc3RydWN0IFNWR1Byb3BlcnR5SW5mbyB7CiAgICAgV1RG
X01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgdHlwZWRlZiB2b2lkICgqU3luY2hy
b25pemVQcm9wZXJ0eSkodm9pZCopOwotICAgIHR5cGVkZWYgUGFzc1JlZlB0cjxTVkdBbmltYXRl
ZFByb3BlcnR5PiAoKkxvb2t1cE9yQ3JlYXRlV3JhcHBlckZvckFuaW1hdGVkUHJvcGVydHkpKHZv
aWQqKTsKKyAgICB0eXBlZGVmIHZvaWQgKCpTeW5jaHJvbml6ZVByb3BlcnR5KShTVkdFbGVtZW50
Kik7CisgICAgdHlwZWRlZiBQYXNzUmVmUHRyPFNWR0FuaW1hdGVkUHJvcGVydHk+ICgqTG9va3Vw
T3JDcmVhdGVXcmFwcGVyRm9yQW5pbWF0ZWRQcm9wZXJ0eSkoU1ZHRWxlbWVudCopOwogCiAgICAg
U1ZHUHJvcGVydHlJbmZvKEFuaW1hdGVkUHJvcGVydHlUeXBlIG5ld1R5cGUsIEFuaW1hdGVkUHJv
cGVydHlTdGF0ZSBuZXdTdGF0ZSwgY29uc3QgUXVhbGlmaWVkTmFtZSYgbmV3QXR0cmlidXRlTmFt
ZSwKICAgICAgICAgICAgICAgICAgICAgY29uc3QgQXRvbWljU3RyaW5nJiBuZXdQcm9wZXJ0eUlk
ZW50aWZpZXIsIFN5bmNocm9uaXplUHJvcGVydHkgbmV3U3luY2hyb25pemVQcm9wZXJ0eSwK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>192929</attachid>
            <date>2013-03-13 08:42:58 -0700</date>
            <delta_ts>2013-03-13 15:25:05 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-111786-20130313113855.patch</filename>
            <type>text/plain</type>
            <size>25544</size>
            <attacher name="Florin Malita">fmalita</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ1NzA5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjA1MDE0YTYwNGVkYWFm
YmJlMDAwZmJjOWJkNGQzYjU1NmRhYWY5ZC4uZmMyNWQ1NmZlOTQyNGJlZjA4NjA5NjVkMjAxYTky
ZWZjMDI2MmRmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDg0IEBACisyMDEzLTAzLTEyICBGbG9y
aW4gTWFsaXRhICA8Zm1hbGl0YUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgVGlnaHRlbiB1cCB0
aGUgdHlwZSBib3VuZHMgZm9yIFNWR1Byb3BlcnR5SW5mbyBjYWxsYmFjayBwYXJhbWV0ZXJzCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTE3ODYKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVcGRhdGUgU1ZH
UHJvcGVydHlJbmZvJ3MgY2FsbGJhY2tzIHRvIHBhc3MgU1ZHRWxlbWVudCogcGFyYW1ldGVycyBp
bnN0ZWFkIG9mIHZvaWQqLiBUaGlzCisgICAgICAgIGFsbG93cyB1cyB0byBwZXJmb3JtIHNvbWUg
QVNTRVJULWJhc2VkIHR5cGUgY2hlY2tpbmcgYmVmb3JlIGRvd25jYXN0aW5nIGluIGltcGxlbWVu
dG9ycy4KKworICAgICAgICBUbyBhdm9pZCBhZGRpbmcgdmlydHVhbCBtZXRob2RzIHVudXNlZCBp
biByZWxlYXNlIGJ1aWxkcyB0byB0aGUgYmFzZSBjbGFzcyAoYW5kIG92ZXJyaWRlcworICAgICAg
ICBpbiBkZXNjZW5kYW50cyksIGZvciBzdWJ0eXBlcyBsYWNraW5nIHBvbHltb3JwaGljIHR5cGUg
bWFya2VycyAoaXNYWFgoKSkgdGhlIGNoZWNrIGlzCisgICAgICAgIHBlcmZvcm1lZCB1c2luZyBo
YXNUYWdOYW1lKCkgaW5zdGVhZC4KKworICAgICAgICBUaGUgcGF0Y2ggaXMgYWxzbyByZW1vdmlu
ZyB0aGUgbG9va3VwT3JDcmVhdGVXcmFwcGVyRm9yQW5pbWF0ZWRQcm9wZXJ0eSgpIFNWR1Byb3Bl
cnR5SW5mbworICAgICAgICBjYWxsYmFjayBmb3IgU1ZHVmlld1NwZWMgcHJvcGVydGllcywgYmVj
YXVzZQorCisgICAgICAgICAgYSkgaXQgZG9lc24ndCBhcHBlYXIgdG8gYmUgcmVhY2hhYmxlIChT
VkdWaWV3U3BlYyBkb2Vzbid0IGhhdmUgYSBiYWNraW5nIGVsZW1lbnQgYW5kCisgICAgICAgICAg
dGh1cyBjYW5ub3QgaGF2ZSBhbiBhc3NvY2lhdGVkIGFuaW1hdG9yKQorCisgICAgICAgICAgYikg
aXQgaW50ZXJmZXJlcyB3aXRoIHRoZSBwYXJhbWV0ZXIgc3BlY2lhbGl6YXRpb24gZGVzY3JpYmVk
IGFib3ZlIChTVkdWaWV3U3BlYyBkb2VzIG5vdAorICAgICAgICAgIGluaGVyaXQgZnJvbSBTVkdF
bGVtZW50KQorCisgICAgICAgIE5vIG5ldyB0ZXN0cywgcmVmYWN0b3Jpbmcgb25seS4KKworICAg
ICAgICAqIHN2Zy9TVkdFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0VsZW1lbnQ6
OnN5bmNocm9uaXplUmVxdWlyZWRGZWF0dXJlcyk6CisgICAgICAgIChXZWJDb3JlOjpTVkdFbGVt
ZW50OjpzeW5jaHJvbml6ZVJlcXVpcmVkRXh0ZW5zaW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpT
VkdFbGVtZW50OjpzeW5jaHJvbml6ZVN5c3RlbUxhbmd1YWdlKToKKyAgICAgICAgKiBzdmcvU1ZH
RWxlbWVudC5oOgorICAgICAgICAoU1ZHRWxlbWVudCk6CisgICAgICAgICogc3ZnL1NWR01hcmtl
ckVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHTWFya2VyRWxlbWVudDo6c3luY2hy
b25pemVPcmllbnRUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR01hcmtlckVsZW1lbnQ6Omxv
b2t1cE9yQ3JlYXRlT3JpZW50VHlwZVdyYXBwZXIpOgorICAgICAgICAqIHN2Zy9TVkdNYXJrZXJF
bGVtZW50Lmg6CisgICAgICAgIChTVkdNYXJrZXJFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6
OnRvU1ZHTWFya2VyRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBzdmcv
U1ZHUGF0aEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUGF0aEVsZW1lbnQ6Omxv
b2t1cE9yQ3JlYXRlRFdyYXBwZXIpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUGF0aEVsZW1lbnQ6
OnN5bmNocm9uaXplRCk6CisgICAgICAgICogc3ZnL1NWR1BhdGhFbGVtZW50Lmg6CisgICAgICAg
IChTVkdQYXRoRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjp0b1NWR1BhdGhFbGVtZW50KToK
KyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIHN2Zy9TVkdQb2x5RWxlbWVudC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpTVkdQb2x5RWxlbWVudDo6c3luY2hyb25pemVQb2ludHMpOgorICAg
ICAgICAoV2ViQ29yZTo6U1ZHUG9seUVsZW1lbnQ6Omxvb2t1cE9yQ3JlYXRlUG9pbnRzV3JhcHBl
cik6CisgICAgICAgICogc3ZnL1NWR1BvbHlFbGVtZW50Lmg6CisgICAgICAgIChTVkdQb2x5RWxl
bWVudCk6CisgICAgICAgIChXZWJDb3JlOjp0b1NWR1BvbHlFbGVtZW50KToKKyAgICAgICAgKFdl
YkNvcmUpOgorICAgICAgICAqIHN2Zy9TVkdUZXh0Q29udGVudEVsZW1lbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6U1ZHVGV4dENvbnRlbnRFbGVtZW50OjpzeW5jaHJvbml6ZVRleHRMZW5ndGgp
OgorICAgICAgICAoV2ViQ29yZTo6U1ZHVGV4dENvbnRlbnRFbGVtZW50Ojpsb29rdXBPckNyZWF0
ZVRleHRMZW5ndGhXcmFwcGVyKToKKyAgICAgICAgKiBzdmcvU1ZHVGV4dENvbnRlbnRFbGVtZW50
Lmg6CisgICAgICAgIChTVkdUZXh0Q29udGVudEVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6
dG9TVkdUZXh0Q29udGVudEVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIENo
YW5nZSBTVkdQcm9wZXJ0eUluZm8gY2FsbGJhY2sgcGFyYW1zIHRvIFNWR0VsZW1lbnQqIGFuZCBy
ZXBsYWNlIHN0YXRpYyBjYXN0cyB3aXRoCisgICAgICAgIGNvbnZlcnNpb24gd3JhcHBlcnMuIElt
cGxlbWVudCBjb252ZXJzaW9uIHdyYXBwZXJzIHdoZXJlIG5lZWRlZC4KKworICAgICAgICAqIHN2
Zy9TVkdWaWV3U3BlYy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdWaWV3U3BlYzo6dmlld0Jv
eFByb3BlcnR5SW5mbyk6CisgICAgICAgIChXZWJDb3JlOjpTVkdWaWV3U3BlYzo6cHJlc2VydmVB
c3BlY3RSYXRpb1Byb3BlcnR5SW5mbyk6CisgICAgICAgIChXZWJDb3JlOjpTVkdWaWV3U3BlYzo6
dHJhbnNmb3JtUHJvcGVydHlJbmZvKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1ZpZXdTcGVjOjps
b29rdXBPckNyZWF0ZVZpZXdCb3hXcmFwcGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1ZpZXdT
cGVjOjpsb29rdXBPckNyZWF0ZVByZXNlcnZlQXNwZWN0UmF0aW9XcmFwcGVyKToKKyAgICAgICAg
KFdlYkNvcmU6OlNWR1ZpZXdTcGVjOjpsb29rdXBPckNyZWF0ZVRyYW5zZm9ybVdyYXBwZXIpOgor
ICAgICAgICAqIHN2Zy9TVkdWaWV3U3BlYy5oOgorICAgICAgICAoU1ZHVmlld1NwZWMpOgorICAg
ICAgICBSZW1vdmUgU1ZHUHJvcGVydHlJbmZvLWJhc2VkIGxvb2t1cE9yQ3JlYXRlKiBjYWxsYmFj
a3MgYW5kIHVwZGF0ZWQgdGhlIG1ldGhvZHMnIHBhcmFtZXRlcnMKKyAgICAgICAgdG8gU1ZHVmll
d1NwZWMqLiBSZW1vdmUgbm93LXVubmVlZGVkIGNhc3RzLgorCisgICAgICAgICogc3ZnL3Byb3Bl
cnRpZXMvU1ZHQW5pbWF0ZWRQcm9wZXJ0eU1hY3Jvcy5oOgorICAgICAgICAoV2ViQ29yZSk6Cisg
ICAgICAgICogc3ZnL3Byb3BlcnRpZXMvU1ZHUHJvcGVydHlJbmZvLmg6CisgICAgICAgIChXZWJD
b3JlKToKKyAgICAgICAgKFNWR1Byb3BlcnR5SW5mbyk6CisgICAgICAgIFVwZGF0ZSBjYWxsYmFj
ayBkZWNsYXJhdGlvbnMuCisKIDIwMTMtMDMtMTMgIEFuZHJleSBMdXNobmlrb3YgIDxsdXNobmlr
b3ZAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IFtDb2RlTWlycm9yXSB0
b2tlbiBoaWdobGlnaHQgc3RpbGwgaGFzIHNvbWUgcHJvYmxlbXMKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVt
ZW50LmNwcAppbmRleCBkODU4NDVjYmU1MjQwMzUzMThjMzJmOWFmMzY2Y2ViMDFiMDkwYjlkLi41
MGVlOTZhMDAwZWU2ODQzZDc3YjJkN2Q2MjdkYjlkNjBjNDAwMzFhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0VsZW1lbnQuY3BwCkBAIC01NjIsMjIgKzU2MiwyMiBAQCBTVkdBdHRyaWJ1dGVUb1Byb3BlcnR5
TWFwJiBTVkdFbGVtZW50Ojpsb2NhbEF0dHJpYnV0ZVRvUHJvcGVydHlNYXAoKQogICAgIHJldHVy
biBlbXB0eU1hcDsKIH0KIAotdm9pZCBTVkdFbGVtZW50OjpzeW5jaHJvbml6ZVJlcXVpcmVkRmVh
dHVyZXModm9pZCogY29udGV4dEVsZW1lbnQpCit2b2lkIFNWR0VsZW1lbnQ6OnN5bmNocm9uaXpl
UmVxdWlyZWRGZWF0dXJlcyhTVkdFbGVtZW50KiBjb250ZXh0RWxlbWVudCkKIHsKICAgICBBU1NF
UlQoY29udGV4dEVsZW1lbnQpOwotICAgIHN0YXRpY19jYXN0PFNWR0VsZW1lbnQqPihjb250ZXh0
RWxlbWVudCktPnN5bmNocm9uaXplUmVxdWlyZWRGZWF0dXJlcygpOworICAgIGNvbnRleHRFbGVt
ZW50LT5zeW5jaHJvbml6ZVJlcXVpcmVkRmVhdHVyZXMoKTsKIH0KIAotdm9pZCBTVkdFbGVtZW50
OjpzeW5jaHJvbml6ZVJlcXVpcmVkRXh0ZW5zaW9ucyh2b2lkKiBjb250ZXh0RWxlbWVudCkKK3Zv
aWQgU1ZHRWxlbWVudDo6c3luY2hyb25pemVSZXF1aXJlZEV4dGVuc2lvbnMoU1ZHRWxlbWVudCog
Y29udGV4dEVsZW1lbnQpCiB7CiAgICAgQVNTRVJUKGNvbnRleHRFbGVtZW50KTsKLSAgICBzdGF0
aWNfY2FzdDxTVkdFbGVtZW50Kj4oY29udGV4dEVsZW1lbnQpLT5zeW5jaHJvbml6ZVJlcXVpcmVk
RXh0ZW5zaW9ucygpOworICAgIGNvbnRleHRFbGVtZW50LT5zeW5jaHJvbml6ZVJlcXVpcmVkRXh0
ZW5zaW9ucygpOwogfQogCi12b2lkIFNWR0VsZW1lbnQ6OnN5bmNocm9uaXplU3lzdGVtTGFuZ3Vh
Z2Uodm9pZCogY29udGV4dEVsZW1lbnQpCit2b2lkIFNWR0VsZW1lbnQ6OnN5bmNocm9uaXplU3lz
dGVtTGFuZ3VhZ2UoU1ZHRWxlbWVudCogY29udGV4dEVsZW1lbnQpCiB7CiAgICAgQVNTRVJUKGNv
bnRleHRFbGVtZW50KTsKLSAgICBzdGF0aWNfY2FzdDxTVkdFbGVtZW50Kj4oY29udGV4dEVsZW1l
bnQpLT5zeW5jaHJvbml6ZVN5c3RlbUxhbmd1YWdlKCk7CisgICAgY29udGV4dEVsZW1lbnQtPnN5
bmNocm9uaXplU3lzdGVtTGFuZ3VhZ2UoKTsKIH0KIAogUGFzc1JlZlB0cjxSZW5kZXJTdHlsZT4g
U1ZHRWxlbWVudDo6Y3VzdG9tU3R5bGVGb3JSZW5kZXJlcigpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQu
aAppbmRleCAxNGNhYmI3MzZjMzAyYjg0NDZiNTM5YzFhZjliYmJjMzU4Y2U5MTYyLi5iZmY4M2E4
ZDgzOGEwODE1YjdhZTFlY2M0OTgyMGM5NmI1MjgxZDJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50
LmgKQEAgLTk3LDkgKzk3LDkgQEAgcHVibGljOgogIAogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxS
ZW5kZXJTdHlsZT4gY3VzdG9tU3R5bGVGb3JSZW5kZXJlcigpIE9WRVJSSURFOwogCi0gICAgc3Rh
dGljIHZvaWQgc3luY2hyb25pemVSZXF1aXJlZEZlYXR1cmVzKHZvaWQqIGNvbnRleHRFbGVtZW50
KTsKLSAgICBzdGF0aWMgdm9pZCBzeW5jaHJvbml6ZVJlcXVpcmVkRXh0ZW5zaW9ucyh2b2lkKiBj
b250ZXh0RWxlbWVudCk7Ci0gICAgc3RhdGljIHZvaWQgc3luY2hyb25pemVTeXN0ZW1MYW5ndWFn
ZSh2b2lkKiBjb250ZXh0RWxlbWVudCk7CisgICAgc3RhdGljIHZvaWQgc3luY2hyb25pemVSZXF1
aXJlZEZlYXR1cmVzKFNWR0VsZW1lbnQqIGNvbnRleHRFbGVtZW50KTsKKyAgICBzdGF0aWMgdm9p
ZCBzeW5jaHJvbml6ZVJlcXVpcmVkRXh0ZW5zaW9ucyhTVkdFbGVtZW50KiBjb250ZXh0RWxlbWVu
dCk7CisgICAgc3RhdGljIHZvaWQgc3luY2hyb25pemVTeXN0ZW1MYW5ndWFnZShTVkdFbGVtZW50
KiBjb250ZXh0RWxlbWVudCk7CiAKICAgICB2aXJ0dWFsIHZvaWQgc3luY2hyb25pemVSZXF1aXJl
ZEZlYXR1cmVzKCkgeyB9CiAgICAgdmlydHVhbCB2b2lkIHN5bmNocm9uaXplUmVxdWlyZWRFeHRl
bnNpb25zKCkgeyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTWFya2VyRWxl
bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTWFya2VyRWxlbWVudC5jcHAKaW5kZXgg
MzQ3ZTM3MWJhYjY2NDI4YzJhMzkxNTk5MTFiODA5YzE2OWZmNmRkNS4uYjUwMzY3YjNjMDI1N2Nm
NGU4NjJjNWJkM2YyYWNmYTM1NWVmYmI0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR01hcmtlckVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdNYXJrZXJF
bGVtZW50LmNwcApAQCAtMjI3LDEwICsyMjcsMTAgQEAgYm9vbCBTVkdNYXJrZXJFbGVtZW50Ojpz
ZWxmSGFzUmVsYXRpdmVMZW5ndGhzKCkgY29uc3QKICAgICAgICAgfHwgbWFya2VySGVpZ2h0KCku
aXNSZWxhdGl2ZSgpOwogfQogCi12b2lkIFNWR01hcmtlckVsZW1lbnQ6OnN5bmNocm9uaXplT3Jp
ZW50VHlwZSh2b2lkKiBjb250ZXh0RWxlbWVudCkKK3ZvaWQgU1ZHTWFya2VyRWxlbWVudDo6c3lu
Y2hyb25pemVPcmllbnRUeXBlKFNWR0VsZW1lbnQqIGNvbnRleHRFbGVtZW50KQogewogICAgIEFT
U0VSVChjb250ZXh0RWxlbWVudCk7Ci0gICAgU1ZHTWFya2VyRWxlbWVudCogb3duZXJUeXBlID0g
c3RhdGljX2Nhc3Q8U1ZHTWFya2VyRWxlbWVudCo+KGNvbnRleHRFbGVtZW50KTsKKyAgICBTVkdN
YXJrZXJFbGVtZW50KiBvd25lclR5cGUgPSB0b1NWR01hcmtlckVsZW1lbnQoY29udGV4dEVsZW1l
bnQpOwogICAgIGlmICghb3duZXJUeXBlLT5tX29yaWVudFR5cGUuc2hvdWxkU3luY2hyb25pemUp
CiAgICAgICAgIHJldHVybjsKIApAQCAtMjQyLDEwICsyNDIsMTAgQEAgdm9pZCBTVkdNYXJrZXJF
bGVtZW50OjpzeW5jaHJvbml6ZU9yaWVudFR5cGUodm9pZCogY29udGV4dEVsZW1lbnQpCiAgICAg
b3duZXJUeXBlLT5tX29yaWVudFR5cGUuc3luY2hyb25pemUob3duZXJUeXBlLCBvcmllbnRUeXBl
UHJvcGVydHlJbmZvKCktPmF0dHJpYnV0ZU5hbWUsIGF1dG9TdHJpbmcpOwogfQogCi1QYXNzUmVm
UHRyPFNWR0FuaW1hdGVkUHJvcGVydHk+IFNWR01hcmtlckVsZW1lbnQ6Omxvb2t1cE9yQ3JlYXRl
T3JpZW50VHlwZVdyYXBwZXIodm9pZCogY29udGV4dEVsZW1lbnQpCitQYXNzUmVmUHRyPFNWR0Fu
aW1hdGVkUHJvcGVydHk+IFNWR01hcmtlckVsZW1lbnQ6Omxvb2t1cE9yQ3JlYXRlT3JpZW50VHlw
ZVdyYXBwZXIoU1ZHRWxlbWVudCogY29udGV4dEVsZW1lbnQpCiB7CiAgICAgQVNTRVJUKGNvbnRl
eHRFbGVtZW50KTsKLSAgICBTVkdNYXJrZXJFbGVtZW50KiBvd25lclR5cGUgPSBzdGF0aWNfY2Fz
dDxTVkdNYXJrZXJFbGVtZW50Kj4oY29udGV4dEVsZW1lbnQpOworICAgIFNWR01hcmtlckVsZW1l
bnQqIG93bmVyVHlwZSA9IHRvU1ZHTWFya2VyRWxlbWVudChjb250ZXh0RWxlbWVudCk7CiAgICAg
cmV0dXJuIFNWR0FuaW1hdGVkUHJvcGVydHk6Omxvb2t1cE9yQ3JlYXRlV3JhcHBlcjxTVkdNYXJr
ZXJFbGVtZW50LCBTVkdBbmltYXRlZEVudW1lcmF0aW9uUHJvcGVydHlUZWFyT2ZmPFNWR01hcmtl
ck9yaWVudFR5cGU+LCBTVkdNYXJrZXJPcmllbnRUeXBlPgogICAgICAgICAgICAob3duZXJUeXBl
LCBvcmllbnRUeXBlUHJvcGVydHlJbmZvKCksIG93bmVyVHlwZS0+bV9vcmllbnRUeXBlLnZhbHVl
KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdNYXJrZXJFbGVtZW50Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTWFya2VyRWxlbWVudC5oCmluZGV4IDg3M2M0ODA4MmFm
ZGIzMWI3OTcwZDVhY2NhZDMxMmRjZGJmYzY4YjAuLjk3MmRkNjljOTI2NjRkMThjZjhkOThkYjRk
ZTZiNTRlYWFkNDRlZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdNYXJrZXJF
bGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR01hcmtlckVsZW1lbnQuaApAQCAt
MTU2LDggKzE1Niw4IEBAIHByaXZhdGU6CiAgIAogcHVibGljOgogICAgIC8vIEN1c3RvbSAnb3Jp
ZW50VHlwZScgcHJvcGVydHkuCi0gICAgc3RhdGljIHZvaWQgc3luY2hyb25pemVPcmllbnRUeXBl
KHZvaWQqIGNvbnRleHRFbGVtZW50KTsKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxTVkdBbmltYXRl
ZFByb3BlcnR5PiBsb29rdXBPckNyZWF0ZU9yaWVudFR5cGVXcmFwcGVyKHZvaWQqIGNvbnRleHRF
bGVtZW50KTsKKyAgICBzdGF0aWMgdm9pZCBzeW5jaHJvbml6ZU9yaWVudFR5cGUoU1ZHRWxlbWVu
dCogY29udGV4dEVsZW1lbnQpOworICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNWR0FuaW1hdGVkUHJv
cGVydHk+IGxvb2t1cE9yQ3JlYXRlT3JpZW50VHlwZVdyYXBwZXIoU1ZHRWxlbWVudCogY29udGV4
dEVsZW1lbnQpOwogICAgIFNWR01hcmtlck9yaWVudFR5cGUmIG9yaWVudFR5cGUoKSBjb25zdCB7
IHJldHVybiBtX29yaWVudFR5cGUudmFsdWU7IH0KICAgICBTVkdNYXJrZXJPcmllbnRUeXBlJiBv
cmllbnRUeXBlQmFzZVZhbHVlKCkgY29uc3QgeyByZXR1cm4gbV9vcmllbnRUeXBlLnZhbHVlOyB9
CiAgICAgdm9pZCBzZXRPcmllbnRUeXBlQmFzZVZhbHVlKGNvbnN0IFNWR01hcmtlck9yaWVudFR5
cGUmIHR5cGUpIHsgbV9vcmllbnRUeXBlLnZhbHVlID0gdHlwZTsgfQpAQCAtMTY3LDYgKzE2Nywx
MiBAQCBwcml2YXRlOgogICAgIG11dGFibGUgU1ZHU3luY2hyb25pemFibGVBbmltYXRlZFByb3Bl
cnR5PFNWR01hcmtlck9yaWVudFR5cGU+IG1fb3JpZW50VHlwZTsKIH07CiAKK2lubGluZSBTVkdN
YXJrZXJFbGVtZW50KiB0b1NWR01hcmtlckVsZW1lbnQoU1ZHRWxlbWVudCogZWxlbWVudCkKK3sK
KyAgICBBU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTighZWxlbWVudCB8fCBlbGVtZW50
LT5oYXNUYWdOYW1lKFNWR05hbWVzOjptYXJrZXJUYWcpKTsKKyAgICByZXR1cm4gc3RhdGljX2Nh
c3Q8U1ZHTWFya2VyRWxlbWVudCo+KGVsZW1lbnQpOworfQorCiB9CiAKICNlbmRpZgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdGhFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdQYXRoRWxlbWVudC5jcHAKaW5kZXggMjI3NDBkYWFkODg3OTgzOGFmODEyZDJm
OWU0ZjMzMzJlZTZlYTgyYy4uYmI4YWExZTYyY2E0NDg2OGRiN2NhM2IzZTY1YmIwOTc3OGY4OGM0
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdGhFbGVtZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0aEVsZW1lbnQuY3BwCkBAIC0zMTQsMTAgKzMxNCwx
MCBAQCBTVkdQYXRoQnl0ZVN0cmVhbSogU1ZHUGF0aEVsZW1lbnQ6OnBhdGhCeXRlU3RyZWFtKCkg
Y29uc3QKICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8U1ZHQW5pbWF0ZWRQYXRoU2VnTGlzdFByb3Bl
cnR5VGVhck9mZio+KHByb3BlcnR5KS0+YW5pbWF0ZWRQYXRoQnl0ZVN0cmVhbSgpOwogfQogCi1Q
YXNzUmVmUHRyPFNWR0FuaW1hdGVkUHJvcGVydHk+IFNWR1BhdGhFbGVtZW50Ojpsb29rdXBPckNy
ZWF0ZURXcmFwcGVyKHZvaWQqIGNvbnRleHRFbGVtZW50KQorUGFzc1JlZlB0cjxTVkdBbmltYXRl
ZFByb3BlcnR5PiBTVkdQYXRoRWxlbWVudDo6bG9va3VwT3JDcmVhdGVEV3JhcHBlcihTVkdFbGVt
ZW50KiBjb250ZXh0RWxlbWVudCkKIHsKICAgICBBU1NFUlQoY29udGV4dEVsZW1lbnQpOwotICAg
IFNWR1BhdGhFbGVtZW50KiBvd25lclR5cGUgPSBzdGF0aWNfY2FzdDxTVkdQYXRoRWxlbWVudCo+
KGNvbnRleHRFbGVtZW50KTsKKyAgICBTVkdQYXRoRWxlbWVudCogb3duZXJUeXBlID0gdG9TVkdQ
YXRoRWxlbWVudChjb250ZXh0RWxlbWVudCk7CiAKICAgICBpZiAoU1ZHQW5pbWF0ZWRQcm9wZXJ0
eSogcHJvcGVydHkgPSBTVkdBbmltYXRlZFByb3BlcnR5Ojpsb29rdXBXcmFwcGVyPFNWR1BhdGhF
bGVtZW50LCBTVkdBbmltYXRlZFBhdGhTZWdMaXN0UHJvcGVydHlUZWFyT2ZmPihvd25lclR5cGUs
IGRQcm9wZXJ0eUluZm8oKSkpCiAgICAgICAgIHJldHVybiBwcm9wZXJ0eTsKQEAgLTMyOSwxMCAr
MzI5LDEwIEBAIFBhc3NSZWZQdHI8U1ZHQW5pbWF0ZWRQcm9wZXJ0eT4gU1ZHUGF0aEVsZW1lbnQ6
Omxvb2t1cE9yQ3JlYXRlRFdyYXBwZXIodm9pZCogY29uCiAgICAgICAgICAgIChvd25lclR5cGUs
IGRQcm9wZXJ0eUluZm8oKSwgb3duZXJUeXBlLT5tX3BhdGhTZWdMaXN0LnZhbHVlKTsKIH0KIAot
dm9pZCBTVkdQYXRoRWxlbWVudDo6c3luY2hyb25pemVEKHZvaWQqIGNvbnRleHRFbGVtZW50KQor
dm9pZCBTVkdQYXRoRWxlbWVudDo6c3luY2hyb25pemVEKFNWR0VsZW1lbnQqIGNvbnRleHRFbGVt
ZW50KQogewogICAgIEFTU0VSVChjb250ZXh0RWxlbWVudCk7Ci0gICAgU1ZHUGF0aEVsZW1lbnQq
IG93bmVyVHlwZSA9IHN0YXRpY19jYXN0PFNWR1BhdGhFbGVtZW50Kj4oY29udGV4dEVsZW1lbnQp
OworICAgIFNWR1BhdGhFbGVtZW50KiBvd25lclR5cGUgPSB0b1NWR1BhdGhFbGVtZW50KGNvbnRl
eHRFbGVtZW50KTsKICAgICBpZiAoIW93bmVyVHlwZS0+bV9wYXRoU2VnTGlzdC5zaG91bGRTeW5j
aHJvbml6ZSkKICAgICAgICAgcmV0dXJuOwogICAgIG93bmVyVHlwZS0+bV9wYXRoU2VnTGlzdC5z
eW5jaHJvbml6ZShvd25lclR5cGUsIGRQcm9wZXJ0eUluZm8oKS0+YXR0cmlidXRlTmFtZSwgb3du
ZXJUeXBlLT5tX3BhdGhTZWdMaXN0LnZhbHVlLnZhbHVlQXNTdHJpbmcoKSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0aEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdQYXRoRWxlbWVudC5oCmluZGV4IDEzYjUxMDBmZWI3MzBkYTRjZWEyN2FkOGEwZWJjMzA1
NGQwYzMzMzYuLjRlMmJlMDdkOTJiOTYyMzA4ODE5YzIyNGVhMDQyYWNhZGQ4Nzk5NDQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXRoRWxlbWVudC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdQYXRoRWxlbWVudC5oCkBAIC0yNiw2ICsyNiw3IEBACiAjaW5jbHVkZSAi
U1ZHQW5pbWF0ZWROdW1iZXIuaCIKICNpbmNsdWRlICJTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVp
cmVkLmgiCiAjaW5jbHVkZSAiU1ZHTGFuZ1NwYWNlLmgiCisjaW5jbHVkZSAiU1ZHTmFtZXMuaCIK
ICNpbmNsdWRlICJTVkdQYXRoQnl0ZVN0cmVhbS5oIgogI2luY2x1ZGUgIlNWR1BhdGhTZWdMaXN0
LmgiCiAjaW5jbHVkZSAiU1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnQuaCIKQEAgLTExMyw4
ICsxMTQsOCBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c01hcmtlcnMoKSBj
b25zdCB7IHJldHVybiB0cnVlOyB9CiAKICAgICAvLyBDdXN0b20gJ2QnIHByb3BlcnR5Ci0gICAg
c3RhdGljIHZvaWQgc3luY2hyb25pemVEKHZvaWQqIGNvbnRleHRFbGVtZW50KTsKLSAgICBzdGF0
aWMgUGFzc1JlZlB0cjxTVkdBbmltYXRlZFByb3BlcnR5PiBsb29rdXBPckNyZWF0ZURXcmFwcGVy
KHZvaWQqIGNvbnRleHRFbGVtZW50KTsKKyAgICBzdGF0aWMgdm9pZCBzeW5jaHJvbml6ZUQoU1ZH
RWxlbWVudCogY29udGV4dEVsZW1lbnQpOworICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNWR0FuaW1h
dGVkUHJvcGVydHk+IGxvb2t1cE9yQ3JlYXRlRFdyYXBwZXIoU1ZHRWxlbWVudCogY29udGV4dEVs
ZW1lbnQpOwogCiAgICAgQkVHSU5fREVDTEFSRV9BTklNQVRFRF9QUk9QRVJUSUVTKFNWR1BhdGhF
bGVtZW50KQogICAgICAgICBERUNMQVJFX0FOSU1BVEVEX05VTUJFUihQYXRoTGVuZ3RoLCBwYXRo
TGVuZ3RoKQpAQCAtMTM5LDYgKzE0MCwxMiBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9pc0FuaW1W
YWxPYnNlcnZlZDsKIH07CiAKK2lubGluZSBTVkdQYXRoRWxlbWVudCogdG9TVkdQYXRoRWxlbWVu
dChTVkdFbGVtZW50KiBlbGVtZW50KQoreworICAgIEFTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJ
Q0FUSU9OKCFlbGVtZW50IHx8IGVsZW1lbnQtPmhhc1RhZ05hbWUoU1ZHTmFtZXM6OnBhdGhUYWcp
KTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8U1ZHUGF0aEVsZW1lbnQqPihlbGVtZW50KTsKK30K
KwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKFNWRykKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQb2x5RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHUG9seUVsZW1lbnQuY3BwCmluZGV4IDhlNmM4MzFiMGQ4MTdkMTlhNmM0N2U0
MjNlMzk0NjI5NDAwMjc1NzguLjM3MTFkOTkxMjBlNjdhNjUzN2IzNGQ5OWFjZGVjYTBlN2VkOWQ3
YWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQb2x5RWxlbWVudC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BvbHlFbGVtZW50LmNwcApAQCAtMTM3LDE5ICsxMzcs
MTkgQEAgdm9pZCBTVkdQb2x5RWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFs
aWZpZWROYW1lJiBhdHRyTmFtZSkKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKIH0KIAotdm9p
ZCBTVkdQb2x5RWxlbWVudDo6c3luY2hyb25pemVQb2ludHModm9pZCogY29udGV4dEVsZW1lbnQp
Cit2b2lkIFNWR1BvbHlFbGVtZW50OjpzeW5jaHJvbml6ZVBvaW50cyhTVkdFbGVtZW50KiBjb250
ZXh0RWxlbWVudCkKIHsKICAgICBBU1NFUlQoY29udGV4dEVsZW1lbnQpOwotICAgIFNWR1BvbHlF
bGVtZW50KiBvd25lclR5cGUgPSBzdGF0aWNfY2FzdDxTVkdQb2x5RWxlbWVudCo+KGNvbnRleHRF
bGVtZW50KTsKKyAgICBTVkdQb2x5RWxlbWVudCogb3duZXJUeXBlID0gdG9TVkdQb2x5RWxlbWVu
dChjb250ZXh0RWxlbWVudCk7CiAgICAgaWYgKCFvd25lclR5cGUtPm1fcG9pbnRzLnNob3VsZFN5
bmNocm9uaXplKQogICAgICAgICByZXR1cm47CiAgICAgb3duZXJUeXBlLT5tX3BvaW50cy5zeW5j
aHJvbml6ZShvd25lclR5cGUsIHBvaW50c1Byb3BlcnR5SW5mbygpLT5hdHRyaWJ1dGVOYW1lLCBv
d25lclR5cGUtPm1fcG9pbnRzLnZhbHVlLnZhbHVlQXNTdHJpbmcoKSk7CiB9CiAKLVBhc3NSZWZQ
dHI8U1ZHQW5pbWF0ZWRQcm9wZXJ0eT4gU1ZHUG9seUVsZW1lbnQ6Omxvb2t1cE9yQ3JlYXRlUG9p
bnRzV3JhcHBlcih2b2lkKiBjb250ZXh0RWxlbWVudCkKK1Bhc3NSZWZQdHI8U1ZHQW5pbWF0ZWRQ
cm9wZXJ0eT4gU1ZHUG9seUVsZW1lbnQ6Omxvb2t1cE9yQ3JlYXRlUG9pbnRzV3JhcHBlcihTVkdF
bGVtZW50KiBjb250ZXh0RWxlbWVudCkKIHsKICAgICBBU1NFUlQoY29udGV4dEVsZW1lbnQpOwot
ICAgIFNWR1BvbHlFbGVtZW50KiBvd25lclR5cGUgPSBzdGF0aWNfY2FzdDxTVkdQb2x5RWxlbWVu
dCo+KGNvbnRleHRFbGVtZW50KTsKKyAgICBTVkdQb2x5RWxlbWVudCogb3duZXJUeXBlID0gdG9T
VkdQb2x5RWxlbWVudChjb250ZXh0RWxlbWVudCk7CiAgICAgcmV0dXJuIFNWR0FuaW1hdGVkUHJv
cGVydHk6Omxvb2t1cE9yQ3JlYXRlV3JhcHBlcjxTVkdQb2x5RWxlbWVudCwgU1ZHQW5pbWF0ZWRQ
b2ludExpc3QsIFNWR1BvaW50TGlzdD4KICAgICAgICAgICAgKG93bmVyVHlwZSwgcG9pbnRzUHJv
cGVydHlJbmZvKCksIG93bmVyVHlwZS0+bV9wb2ludHMudmFsdWUpOwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR1BvbHlFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHUG9seUVsZW1lbnQuaAppbmRleCAyYmVkODRiMDRjODIyNTZkN2MyMTYyMTBlZmIxMWU3OTMz
NDNjMjliLi41NjI0ODljZjRmN2UzNmRlZTM2ODk0ZTcwMWNmMjdjNzhlMDA0OTM1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUG9seUVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHUG9seUVsZW1lbnQuaApAQCAtMjUsNiArMjUsNyBAQAogI2luY2x1ZGUgIlNW
R0FuaW1hdGVkQm9vbGVhbi5oIgogI2luY2x1ZGUgIlNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWly
ZWQuaCIKICNpbmNsdWRlICJTVkdMYW5nU3BhY2UuaCIKKyNpbmNsdWRlICJTVkdOYW1lcy5oIgog
I2luY2x1ZGUgIlNWR1BvaW50TGlzdC5oIgogI2luY2x1ZGUgIlNWR1N0eWxlZFRyYW5zZm9ybWFi
bGVFbGVtZW50LmgiCiAjaW5jbHVkZSAiU1ZHVGVzdHMuaCIKQEAgLTU3LDggKzU4LDggQEAgcHJp
dmF0ZToKICAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNNYXJrZXJzKCkgY29uc3QgeyByZXR1cm4g
dHJ1ZTsgfQogCiAgICAgLy8gQ3VzdG9tICdwb2ludHMnIHByb3BlcnR5Ci0gICAgc3RhdGljIHZv
aWQgc3luY2hyb25pemVQb2ludHModm9pZCogY29udGV4dEVsZW1lbnQpOwotICAgIHN0YXRpYyBQ
YXNzUmVmUHRyPFNWR0FuaW1hdGVkUHJvcGVydHk+IGxvb2t1cE9yQ3JlYXRlUG9pbnRzV3JhcHBl
cih2b2lkKiBjb250ZXh0RWxlbWVudCk7CisgICAgc3RhdGljIHZvaWQgc3luY2hyb25pemVQb2lu
dHMoU1ZHRWxlbWVudCogY29udGV4dEVsZW1lbnQpOworICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNW
R0FuaW1hdGVkUHJvcGVydHk+IGxvb2t1cE9yQ3JlYXRlUG9pbnRzV3JhcHBlcihTVkdFbGVtZW50
KiBjb250ZXh0RWxlbWVudCk7CiAKICAgICBCRUdJTl9ERUNMQVJFX0FOSU1BVEVEX1BST1BFUlRJ
RVMoU1ZHUG9seUVsZW1lbnQpCiAgICAgICAgIERFQ0xBUkVfQU5JTUFURURfQk9PTEVBTihFeHRl
cm5hbFJlc291cmNlc1JlcXVpcmVkLCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKQpAQCAtNzMs
NiArNzQsMTIgQEAgcHJvdGVjdGVkOgogICAgIG11dGFibGUgU1ZHU3luY2hyb25pemFibGVBbmlt
YXRlZFByb3BlcnR5PFNWR1BvaW50TGlzdD4gbV9wb2ludHM7CiB9OwogCitpbmxpbmUgU1ZHUG9s
eUVsZW1lbnQqIHRvU1ZHUG9seUVsZW1lbnQoU1ZHRWxlbWVudCogZWxlbWVudCkKK3sKKyAgICBB
U1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTighZWxlbWVudCB8fCBlbGVtZW50LT5oYXNU
YWdOYW1lKFNWR05hbWVzOjpwb2x5Z29uVGFnKSB8fCBlbGVtZW50LT5oYXNUYWdOYW1lKFNWR05h
bWVzOjpwb2x5bGluZVRhZykpOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxTVkdQb2x5RWxlbWVu
dCo+KGVsZW1lbnQpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBF
TkFCTEUoU1ZHKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RleHRDb250ZW50
RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGV4dENvbnRlbnRFbGVtZW50LmNw
cAppbmRleCBjZjYyYTIxZjQ5OWZjN2Y3NDYwZTdmYWYzZGYyZjBjMzUyZDJmYmEzLi42MzVjNjMy
MWU2NTQ0ZWM1ZTk4ZTQ2ZGY3ZGJjNDM4YmRkNTZmM2E3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHVGV4dENvbnRlbnRFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHVGV4dENvbnRlbnRFbGVtZW50LmNwcApAQCAtNzQsMjAgKzc0LDIwIEBAIFNWR1RleHRD
b250ZW50RWxlbWVudDo6U1ZHVGV4dENvbnRlbnRFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUm
IHRhZ05hbWUsIERvY3VtCiAgICAgcmVnaXN0ZXJBbmltYXRlZFByb3BlcnRpZXNGb3JTVkdUZXh0
Q29udGVudEVsZW1lbnQoKTsKIH0KIAotdm9pZCBTVkdUZXh0Q29udGVudEVsZW1lbnQ6OnN5bmNo
cm9uaXplVGV4dExlbmd0aCh2b2lkKiBjb250ZXh0RWxlbWVudCkKK3ZvaWQgU1ZHVGV4dENvbnRl
bnRFbGVtZW50OjpzeW5jaHJvbml6ZVRleHRMZW5ndGgoU1ZHRWxlbWVudCogY29udGV4dEVsZW1l
bnQpCiB7CiAgICAgQVNTRVJUKGNvbnRleHRFbGVtZW50KTsKLSAgICBTVkdUZXh0Q29udGVudEVs
ZW1lbnQqIG93bmVyVHlwZSA9IHN0YXRpY19jYXN0PFNWR1RleHRDb250ZW50RWxlbWVudCo+KGNv
bnRleHRFbGVtZW50KTsKKyAgICBTVkdUZXh0Q29udGVudEVsZW1lbnQqIG93bmVyVHlwZSA9IHRv
U1ZHVGV4dENvbnRlbnRFbGVtZW50KGNvbnRleHRFbGVtZW50KTsKICAgICBpZiAoIW93bmVyVHlw
ZS0+bV90ZXh0TGVuZ3RoLnNob3VsZFN5bmNocm9uaXplKQogICAgICAgICByZXR1cm47CiAgICAg
QXRvbWljU3RyaW5nIHZhbHVlKFNWR1Byb3BlcnR5VHJhaXRzPFNWR0xlbmd0aD46OnRvU3RyaW5n
KG93bmVyVHlwZS0+bV9zcGVjaWZpZWRUZXh0TGVuZ3RoKSk7CiAgICAgb3duZXJUeXBlLT5tX3Rl
eHRMZW5ndGguc3luY2hyb25pemUob3duZXJUeXBlLCB0ZXh0TGVuZ3RoUHJvcGVydHlJbmZvKCkt
PmF0dHJpYnV0ZU5hbWUsIHZhbHVlKTsKIH0KIAotUGFzc1JlZlB0cjxTVkdBbmltYXRlZFByb3Bl
cnR5PiBTVkdUZXh0Q29udGVudEVsZW1lbnQ6Omxvb2t1cE9yQ3JlYXRlVGV4dExlbmd0aFdyYXBw
ZXIodm9pZCogY29udGV4dEVsZW1lbnQpCitQYXNzUmVmUHRyPFNWR0FuaW1hdGVkUHJvcGVydHk+
IFNWR1RleHRDb250ZW50RWxlbWVudDo6bG9va3VwT3JDcmVhdGVUZXh0TGVuZ3RoV3JhcHBlcihT
VkdFbGVtZW50KiBjb250ZXh0RWxlbWVudCkKIHsKICAgICBBU1NFUlQoY29udGV4dEVsZW1lbnQp
OwotICAgIFNWR1RleHRDb250ZW50RWxlbWVudCogb3duZXJUeXBlID0gc3RhdGljX2Nhc3Q8U1ZH
VGV4dENvbnRlbnRFbGVtZW50Kj4oY29udGV4dEVsZW1lbnQpOworICAgIFNWR1RleHRDb250ZW50
RWxlbWVudCogb3duZXJUeXBlID0gdG9TVkdUZXh0Q29udGVudEVsZW1lbnQoY29udGV4dEVsZW1l
bnQpOwogICAgIHJldHVybiBTVkdBbmltYXRlZFByb3BlcnR5Ojpsb29rdXBPckNyZWF0ZVdyYXBw
ZXI8U1ZHVGV4dENvbnRlbnRFbGVtZW50LCBTVkdBbmltYXRlZExlbmd0aCwgU1ZHTGVuZ3RoPgog
ICAgICAgICAgICAob3duZXJUeXBlLCB0ZXh0TGVuZ3RoUHJvcGVydHlJbmZvKCksIG93bmVyVHlw
ZS0+bV90ZXh0TGVuZ3RoLnZhbHVlKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdUZXh0Q29udGVudEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUZXh0Q29u
dGVudEVsZW1lbnQuaAppbmRleCAwNWNhNjJhY2YzNzg0ZTY3YWQ4MDM4NjEyOWU0NWY1Njg2YzUz
YWRjLi43M2RjNmI4ZjFhNGMzN2ZlZDAwYTZlMGE4NzRjMjFlMTcwYTM3NmQ4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGV4dENvbnRlbnRFbGVtZW50LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR1RleHRDb250ZW50RWxlbWVudC5oCkBAIC0xMTQsOCArMTE0LDggQEAg
cHJpdmF0ZToKICAgICB2aXJ0dWFsIGJvb2wgaXNUZXh0Q29udGVudCgpIGNvbnN0IHsgcmV0dXJu
IHRydWU7IH0KIAogICAgIC8vIEN1c3RvbSAndGV4dExlbmd0aCcgcHJvcGVydHkKLSAgICBzdGF0
aWMgdm9pZCBzeW5jaHJvbml6ZVRleHRMZW5ndGgodm9pZCogY29udGV4dEVsZW1lbnQpOwotICAg
IHN0YXRpYyBQYXNzUmVmUHRyPFNWR0FuaW1hdGVkUHJvcGVydHk+IGxvb2t1cE9yQ3JlYXRlVGV4
dExlbmd0aFdyYXBwZXIodm9pZCogY29udGV4dEVsZW1lbnQpOworICAgIHN0YXRpYyB2b2lkIHN5
bmNocm9uaXplVGV4dExlbmd0aChTVkdFbGVtZW50KiBjb250ZXh0RWxlbWVudCk7CisgICAgc3Rh
dGljIFBhc3NSZWZQdHI8U1ZHQW5pbWF0ZWRQcm9wZXJ0eT4gbG9va3VwT3JDcmVhdGVUZXh0TGVu
Z3RoV3JhcHBlcihTVkdFbGVtZW50KiBjb250ZXh0RWxlbWVudCk7CiAgICAgbXV0YWJsZSBTVkdT
eW5jaHJvbml6YWJsZUFuaW1hdGVkUHJvcGVydHk8U1ZHTGVuZ3RoPiBtX3RleHRMZW5ndGg7CiAg
ICAgU1ZHTGVuZ3RoIG1fc3BlY2lmaWVkVGV4dExlbmd0aDsKICAgCkBAIC0xMzAsNiArMTMwLDEy
IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIHN5bmNocm9uaXplU3lzdGVtTGFuZ3VhZ2Uo
KSB7IFNWR1Rlc3RzOjpzeW5jaHJvbml6ZVN5c3RlbUxhbmd1YWdlKHRoaXMpOyB9CiB9OwogCitp
bmxpbmUgU1ZHVGV4dENvbnRlbnRFbGVtZW50KiB0b1NWR1RleHRDb250ZW50RWxlbWVudChTVkdF
bGVtZW50KiBlbGVtZW50KQoreworICAgIEFTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9O
KCFlbGVtZW50IHx8IGVsZW1lbnQtPmlzVGV4dENvbnRlbnQoKSk7CisgICAgcmV0dXJuIHN0YXRp
Y19jYXN0PFNWR1RleHRDb250ZW50RWxlbWVudCo+KGVsZW1lbnQpOworfQorCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoU1ZHKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR1ZpZXdTcGVjLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdWaWV3
U3BlYy5jcHAKaW5kZXggNDc5OWVkYzQ4ZTM5YzdiMzY5ZDJhZWExNjdhMzZlMWM2OGI0ODNkOC4u
YTcwMTkxYzljMGMxNzU1YzUzN2ViMzFjZTk2NTIwZDhjMDg0YTFjYyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR1ZpZXdTcGVjLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHVmlld1NwZWMuY3BwCkBAIC00MSw4ICs0MSw3IEBAIGNvbnN0IFNWR1Byb3BlcnR5SW5mbyog
U1ZHVmlld1NwZWM6OnZpZXdCb3hQcm9wZXJ0eUluZm8oKQogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgUHJvcGVydHlJc1JlYWRPbmx5LAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU1ZHTmFtZXM6OnZpZXdCb3hBdHRyLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlld0JveElkZW50
aWZpZXIoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmU1ZHVmlld1Nw
ZWM6Omxvb2t1cE9yQ3JlYXRlVmlld0JveFdyYXBwZXIpOworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgMCwgMCk7CiAgICAgfQogICAgIHJldHVybiBzX3Byb3Bl
cnR5SW5mbzsKIH0KQEAgLTU2LDggKzU1LDcgQEAgY29uc3QgU1ZHUHJvcGVydHlJbmZvKiBTVkdW
aWV3U3BlYzo6cHJlc2VydmVBc3BlY3RSYXRpb1Byb3BlcnR5SW5mbygpCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQcm9wZXJ0eUlzUmVhZE9ubHksCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTVkdOYW1lczo6cHJlc2Vy
dmVBc3BlY3RSYXRpb0F0dHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBwcmVzZXJ2ZUFzcGVjdFJhdGlvSWRlbnRpZmllcigpLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICZTVkdWaWV3U3BlYzo6bG9va3VwT3JDcmVhdGVQcmVzZXJ2
ZUFzcGVjdFJhdGlvV3JhcHBlcik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAwLCAwKTsKICAgICB9CiAgICAgcmV0dXJuIHNfcHJvcGVydHlJbmZvOwogfQpA
QCAtNzIsOCArNzAsNyBAQCBjb25zdCBTVkdQcm9wZXJ0eUluZm8qIFNWR1ZpZXdTcGVjOjp0cmFu
c2Zvcm1Qcm9wZXJ0eUluZm8oKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgUHJvcGVydHlJc1JlYWRPbmx5LAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgU1ZHTmFtZXM6OnRyYW5zZm9ybUF0dHIsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFuc2Zvcm1JZGVudGlmaWVyKCksCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJlNWR1ZpZXdTcGVjOjpsb29rdXBP
ckNyZWF0ZVRyYW5zZm9ybVdyYXBwZXIpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgMCwgMCk7CiAgICAgfQogICAgIHJldHVybiBzX3Byb3BlcnR5SW5mbzsK
IH0KQEAgLTE3MCwyNiArMTY3LDIzIEBAIFBhc3NSZWZQdHI8U1ZHQW5pbWF0ZWRQcmVzZXJ2ZUFz
cGVjdFJhdGlvPiBTVkdWaWV3U3BlYzo6cHJlc2VydmVBc3BlY3RSYXRpb0FuaW1hCiAgICAgcmV0
dXJuIHN0YXRpY19wb2ludGVyX2Nhc3Q8U1ZHQW5pbWF0ZWRQcmVzZXJ2ZUFzcGVjdFJhdGlvPihs
b29rdXBPckNyZWF0ZVByZXNlcnZlQXNwZWN0UmF0aW9XcmFwcGVyKHRoaXMpKTsKIH0KIAotUGFz
c1JlZlB0cjxTVkdBbmltYXRlZFByb3BlcnR5PiBTVkdWaWV3U3BlYzo6bG9va3VwT3JDcmVhdGVW
aWV3Qm94V3JhcHBlcih2b2lkKiBtYXNrZWRPd25lclR5cGUpCitQYXNzUmVmUHRyPFNWR0FuaW1h
dGVkUHJvcGVydHk+IFNWR1ZpZXdTcGVjOjpsb29rdXBPckNyZWF0ZVZpZXdCb3hXcmFwcGVyKFNW
R1ZpZXdTcGVjKiBvd25lclR5cGUpCiB7Ci0gICAgQVNTRVJUKG1hc2tlZE93bmVyVHlwZSk7Ci0g
ICAgU1ZHVmlld1NwZWMqIG93bmVyVHlwZSA9IHN0YXRpY19jYXN0PFNWR1ZpZXdTcGVjKj4obWFz
a2VkT3duZXJUeXBlKTsKKyAgICBBU1NFUlQob3duZXJUeXBlKTsKICAgICBBU1NFUlQob3duZXJU
eXBlLT5jb250ZXh0RWxlbWVudCgpKTsKICAgICByZXR1cm4gU1ZHQW5pbWF0ZWRQcm9wZXJ0eTo6
bG9va3VwT3JDcmVhdGVXcmFwcGVyPFNWR0VsZW1lbnQsIFNWR0FuaW1hdGVkUmVjdCwgRmxvYXRS
ZWN0Pihvd25lclR5cGUtPmNvbnRleHRFbGVtZW50KCksIHZpZXdCb3hQcm9wZXJ0eUluZm8oKSwg
b3duZXJUeXBlLT5tX3ZpZXdCb3gpOwogfQogCi1QYXNzUmVmUHRyPFNWR0FuaW1hdGVkUHJvcGVy
dHk+IFNWR1ZpZXdTcGVjOjpsb29rdXBPckNyZWF0ZVByZXNlcnZlQXNwZWN0UmF0aW9XcmFwcGVy
KHZvaWQqIG1hc2tlZE93bmVyVHlwZSkKK1Bhc3NSZWZQdHI8U1ZHQW5pbWF0ZWRQcm9wZXJ0eT4g
U1ZHVmlld1NwZWM6Omxvb2t1cE9yQ3JlYXRlUHJlc2VydmVBc3BlY3RSYXRpb1dyYXBwZXIoU1ZH
Vmlld1NwZWMqIG93bmVyVHlwZSkKIHsKLSAgICBBU1NFUlQobWFza2VkT3duZXJUeXBlKTsKLSAg
ICBTVkdWaWV3U3BlYyogb3duZXJUeXBlID0gc3RhdGljX2Nhc3Q8U1ZHVmlld1NwZWMqPihtYXNr
ZWRPd25lclR5cGUpOworICAgIEFTU0VSVChvd25lclR5cGUpOwogICAgIEFTU0VSVChvd25lclR5
cGUtPmNvbnRleHRFbGVtZW50KCkpOwogICAgIHJldHVybiBTVkdBbmltYXRlZFByb3BlcnR5Ojps
b29rdXBPckNyZWF0ZVdyYXBwZXI8U1ZHRWxlbWVudCwgU1ZHQW5pbWF0ZWRQcmVzZXJ2ZUFzcGVj
dFJhdGlvLCBTVkdQcmVzZXJ2ZUFzcGVjdFJhdGlvPihvd25lclR5cGUtPmNvbnRleHRFbGVtZW50
KCksIHByZXNlcnZlQXNwZWN0UmF0aW9Qcm9wZXJ0eUluZm8oKSwgb3duZXJUeXBlLT5tX3ByZXNl
cnZlQXNwZWN0UmF0aW8pOwogfQogCi1QYXNzUmVmUHRyPFNWR0FuaW1hdGVkUHJvcGVydHk+IFNW
R1ZpZXdTcGVjOjpsb29rdXBPckNyZWF0ZVRyYW5zZm9ybVdyYXBwZXIodm9pZCogbWFza2VkT3du
ZXJUeXBlKQorUGFzc1JlZlB0cjxTVkdBbmltYXRlZFByb3BlcnR5PiBTVkdWaWV3U3BlYzo6bG9v
a3VwT3JDcmVhdGVUcmFuc2Zvcm1XcmFwcGVyKFNWR1ZpZXdTcGVjKiBvd25lclR5cGUpCiB7Ci0g
ICAgQVNTRVJUKG1hc2tlZE93bmVyVHlwZSk7Ci0gICAgU1ZHVmlld1NwZWMqIG93bmVyVHlwZSA9
IHN0YXRpY19jYXN0PFNWR1ZpZXdTcGVjKj4obWFza2VkT3duZXJUeXBlKTsKKyAgICBBU1NFUlQo
b3duZXJUeXBlKTsKICAgICBBU1NFUlQob3duZXJUeXBlLT5jb250ZXh0RWxlbWVudCgpKTsKICAg
ICByZXR1cm4gU1ZHQW5pbWF0ZWRQcm9wZXJ0eTo6bG9va3VwT3JDcmVhdGVXcmFwcGVyPFNWR0Vs
ZW1lbnQsIFNWR0FuaW1hdGVkVHJhbnNmb3JtTGlzdCwgU1ZHVHJhbnNmb3JtTGlzdD4ob3duZXJU
eXBlLT5jb250ZXh0RWxlbWVudCgpLCB0cmFuc2Zvcm1Qcm9wZXJ0eUluZm8oKSwgb3duZXJUeXBl
LT5tX3RyYW5zZm9ybSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVmll
d1NwZWMuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdWaWV3U3BlYy5oCmluZGV4IGJhMzk0ZTRk
ODBmMjkyNzI2MDAzOTdmODExM2EyMWY1ZWFkY2Q1ZjguLmY4NjM0YWZkNmVlYThjNWY5ODg2YWJi
MGJiOGQyZGYxZDY2OWQzMGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdWaWV3
U3BlYy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdWaWV3U3BlYy5oCkBAIC05NSw5ICs5
NSw5IEBAIHByaXZhdGU6CiAgICAgc3RhdGljIGNvbnN0IEF0b21pY1N0cmluZyYgdmlld0JveElk
ZW50aWZpZXIoKTsKICAgICBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiBwcmVzZXJ2ZUFzcGVj
dFJhdGlvSWRlbnRpZmllcigpOwogCi0gICAgc3RhdGljIFBhc3NSZWZQdHI8U1ZHQW5pbWF0ZWRQ
cm9wZXJ0eT4gbG9va3VwT3JDcmVhdGVUcmFuc2Zvcm1XcmFwcGVyKHZvaWQqIGNvbnRleHRFbGVt
ZW50KTsKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxTVkdBbmltYXRlZFByb3BlcnR5PiBsb29rdXBP
ckNyZWF0ZVZpZXdCb3hXcmFwcGVyKHZvaWQqIGNvbnRleHRFbGVtZW50KTsKLSAgICBzdGF0aWMg
UGFzc1JlZlB0cjxTVkdBbmltYXRlZFByb3BlcnR5PiBsb29rdXBPckNyZWF0ZVByZXNlcnZlQXNw
ZWN0UmF0aW9XcmFwcGVyKHZvaWQqIGNvbnRleHRFbGVtZW50KTsKKyAgICBzdGF0aWMgUGFzc1Jl
ZlB0cjxTVkdBbmltYXRlZFByb3BlcnR5PiBsb29rdXBPckNyZWF0ZVRyYW5zZm9ybVdyYXBwZXIo
U1ZHVmlld1NwZWMqIGNvbnRleHRFbGVtZW50KTsKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxTVkdB
bmltYXRlZFByb3BlcnR5PiBsb29rdXBPckNyZWF0ZVZpZXdCb3hXcmFwcGVyKFNWR1ZpZXdTcGVj
KiBjb250ZXh0RWxlbWVudCk7CisgICAgc3RhdGljIFBhc3NSZWZQdHI8U1ZHQW5pbWF0ZWRQcm9w
ZXJ0eT4gbG9va3VwT3JDcmVhdGVQcmVzZXJ2ZUFzcGVjdFJhdGlvV3JhcHBlcihTVkdWaWV3U3Bl
YyogY29udGV4dEVsZW1lbnQpOwogCiAgICAgU1ZHRWxlbWVudCogbV9jb250ZXh0RWxlbWVudDsK
ICAgICBTVkdab29tQW5kUGFuVHlwZSBtX3pvb21BbmRQYW47CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdBbmltYXRlZFByb3BlcnR5TWFjcm9zLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdBbmltYXRlZFByb3BlcnR5TWFjcm9zLmgKaW5k
ZXggYmJiZDQ1YjJlMTMwM2NlZjEwOWJmYzc0OTcwMGU0NGQ1NmI4MjMwMy4uZGEwZGIzNTMzZTIz
NzcyYWY4MTYyNzg0ODRlYjgxMTNhZjYwOTVkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
c3ZnL3Byb3BlcnRpZXMvU1ZHQW5pbWF0ZWRQcm9wZXJ0eU1hY3Jvcy5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGVkUHJvcGVydHlNYWNyb3MuaApAQCAtMTQ1
LDE0ICsxNDUsMTQgQEAgcHJpdmF0ZTogXAogICAgICAgICBtXyMjTG93ZXJQcm9wZXJ0eS5zeW5j
aHJvbml6ZSh0aGlzLCBMb3dlclByb3BlcnR5IyNQcm9wZXJ0eUluZm8oKS0+YXR0cmlidXRlTmFt
ZSwgdmFsdWUpOyBcCiAgICAgfSBcCiBcCi0gICAgc3RhdGljIFBhc3NSZWZQdHI8U1ZHQW5pbWF0
ZWRQcm9wZXJ0eT4gbG9va3VwT3JDcmVhdGUjI1VwcGVyUHJvcGVydHkjI1dyYXBwZXIodm9pZCog
bWFza2VkT3duZXJUeXBlKSBcCisgICAgc3RhdGljIFBhc3NSZWZQdHI8U1ZHQW5pbWF0ZWRQcm9w
ZXJ0eT4gbG9va3VwT3JDcmVhdGUjI1VwcGVyUHJvcGVydHkjI1dyYXBwZXIoU1ZHRWxlbWVudCog
bWFza2VkT3duZXJUeXBlKSBcCiAgICAgeyBcCiAgICAgICAgIEFTU0VSVChtYXNrZWRPd25lclR5
cGUpOyBcCiAgICAgICAgIFVzZU93bmVyVHlwZSogb3duZXJUeXBlID0gc3RhdGljX2Nhc3Q8VXNl
T3duZXJUeXBlKj4obWFza2VkT3duZXJUeXBlKTsgXAogICAgICAgICByZXR1cm4gU1ZHQW5pbWF0
ZWRQcm9wZXJ0eTo6bG9va3VwT3JDcmVhdGVXcmFwcGVyPFVzZU93bmVyVHlwZSwgVGVhck9mZlR5
cGUsIFByb3BlcnR5VHlwZT4ob3duZXJUeXBlLCBMb3dlclByb3BlcnR5IyNQcm9wZXJ0eUluZm8o
KSwgb3duZXJUeXBlLT5tXyMjTG93ZXJQcm9wZXJ0eS52YWx1ZSk7IFwKICAgICB9IFwKIFwKLSAg
ICBzdGF0aWMgdm9pZCBzeW5jaHJvbml6ZSMjVXBwZXJQcm9wZXJ0eSh2b2lkKiBtYXNrZWRPd25l
clR5cGUpIFwKKyAgICBzdGF0aWMgdm9pZCBzeW5jaHJvbml6ZSMjVXBwZXJQcm9wZXJ0eShTVkdF
bGVtZW50KiBtYXNrZWRPd25lclR5cGUpIFwKICAgICB7IFwKICAgICAgICAgQVNTRVJUKG1hc2tl
ZE93bmVyVHlwZSk7IFwKICAgICAgICAgVXNlT3duZXJUeXBlKiBvd25lclR5cGUgPSBzdGF0aWNf
Y2FzdDxVc2VPd25lclR5cGUqPihtYXNrZWRPd25lclR5cGUpOyBcCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdQcm9wZXJ0eUluZm8uaCBiL1NvdXJjZS9XZWJD
b3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR1Byb3BlcnR5SW5mby5oCmluZGV4IGI2MjlhYjhmNmZkNTBj
YzFlNTkwZjJmY2MzZGMyYjM5NjQ1YjJhZDAuLmE1OGFlZWU0N2MwM2UzNmY4MmZjZTQxYjg2NWI2
M2UwYzZmZmIyNTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NW
R1Byb3BlcnR5SW5mby5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR1By
b3BlcnR5SW5mby5oCkBAIC0yNyw2ICsyNyw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNs
YXNzIFNWR0FuaW1hdGVkUHJvcGVydHk7CitjbGFzcyBTVkdFbGVtZW50OwogCiBlbnVtIEFuaW1h
dGVkUHJvcGVydHlTdGF0ZSB7CiAgICAgUHJvcGVydHlJc1JlYWRXcml0ZSwKQEAgLTU3LDggKzU4
LDggQEAgZW51bSBBbmltYXRlZFByb3BlcnR5VHlwZSB7CiBzdHJ1Y3QgU1ZHUHJvcGVydHlJbmZv
IHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICB0eXBlZGVmIHZv
aWQgKCpTeW5jaHJvbml6ZVByb3BlcnR5KSh2b2lkKik7Ci0gICAgdHlwZWRlZiBQYXNzUmVmUHRy
PFNWR0FuaW1hdGVkUHJvcGVydHk+ICgqTG9va3VwT3JDcmVhdGVXcmFwcGVyRm9yQW5pbWF0ZWRQ
cm9wZXJ0eSkodm9pZCopOworICAgIHR5cGVkZWYgdm9pZCAoKlN5bmNocm9uaXplUHJvcGVydHkp
KFNWR0VsZW1lbnQqKTsKKyAgICB0eXBlZGVmIFBhc3NSZWZQdHI8U1ZHQW5pbWF0ZWRQcm9wZXJ0
eT4gKCpMb29rdXBPckNyZWF0ZVdyYXBwZXJGb3JBbmltYXRlZFByb3BlcnR5KShTVkdFbGVtZW50
Kik7CiAKICAgICBTVkdQcm9wZXJ0eUluZm8oQW5pbWF0ZWRQcm9wZXJ0eVR5cGUgbmV3VHlwZSwg
QW5pbWF0ZWRQcm9wZXJ0eVN0YXRlIG5ld1N0YXRlLCBjb25zdCBRdWFsaWZpZWROYW1lJiBuZXdB
dHRyaWJ1dGVOYW1lLAogICAgICAgICAgICAgICAgICAgICBjb25zdCBBdG9taWNTdHJpbmcmIG5l
d1Byb3BlcnR5SWRlbnRpZmllciwgU3luY2hyb25pemVQcm9wZXJ0eSBuZXdTeW5jaHJvbml6ZVBy
b3BlcnR5LAo=
</data>
<flag name="review"
          id="214312"
          type_id="1"
          status="+"
          setter="pdr"
    />
          </attachment>
      

    </bug>

</bugzilla>