<?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>93623</bug_id>
          
          <creation_ts>2012-08-09 09:50:35 -0700</creation_ts>
          <short_desc>[CSS Shaders] Add blend mode and composite op to compiled program cache key</short_desc>
          <delta_ts>2012-08-10 15:16:11 -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>Layout and Rendering</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>85086</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Max Vujovic">mvujovic</reporter>
          <assigned_to name="Max Vujovic">mvujovic</assigned_to>
          <cc>achicu</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>691519</commentid>
    <comment_count>0</comment_count>
    <who name="Max Vujovic">mvujovic</who>
    <bug_when>2012-08-09 09:50:35 -0700</bug_when>
    <thetext>Right now, only the vertex shader string and the fragment shader string are hashed to create a key for the compiled program. However, when authors use the mix function to specify a blend mode and/or composite op for a fragment shader, WebKit will rewrite the fragment shader based on the blend mode and composite op. This means the unique key for a compiled program is (original vertex shader string, original fragment shader string, blend mode, composite operator). This patch will include blend mode and composite operator in the hash for the key.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>691539</commentid>
    <comment_count>1</comment_count>
      <attachid>157477</attachid>
    <who name="Max Vujovic">mvujovic</who>
    <bug_when>2012-08-09 10:13:47 -0700</bug_when>
    <thetext>Created attachment 157477
Patch

Alex, could you take a look at this patch? Especially the hash computation in CustomFilterProgramInfo::hash(). I was debating between a bunch of ways we could do the hash- I want your opinion on it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>691739</commentid>
    <comment_count>2</comment_count>
      <attachid>157477</attachid>
    <who name="Alexandru Chiculita">achicu</who>
    <bug_when>2012-08-09 13:17:49 -0700</bug_when>
    <thetext>Comment on attachment 157477
Patch

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

Looks good. Just a few comments.

&gt; Source/WebCore/platform/graphics/CustomFilterProgramMixSettings.h:43
&gt; +    , compositeOperator(CompositeSourceOver)

nit: Identation here.

&gt; Source/WebCore/platform/graphics/CustomFilterProgramMixSettings.h:49
&gt; +        return enabled == o.enabled

I think enabled == o.enabled &amp;&amp; enabled == false should ignore the other two properties. Right?

&gt; Source/WebCore/platform/graphics/CustomFilterProgramMixSettings.h:57
&gt; +} CustomFilterProgramMixSettings;

Why do you need this instance?

&gt; Source/WebCore/platform/graphics/filters/CustomFilterProgramInfo.cpp:72
&gt; +CustomFilterProgramInfo::CustomFilterProgramInfo(const String&amp; vertexShader, const String&amp; fragmentShader, CustomFilterProgramMixSettings mixSettings)

I would pass a const ref here.

&gt; Source/WebCore/platform/graphics/filters/CustomFilterProgramInfo.cpp:86
&gt; +    unsigned hash = hashPossiblyNullString(m_vertexShaderString);

This would look better if you encapsulated it into a separate class:

HashBuilder hash;
hash.append(m_vertexShaderString);
hash.append(m_fragmentShaderString);
...

hash.toUnsigned();

&gt; Source/WebCore/platform/graphics/filters/CustomFilterProgramInfo.h:46
&gt; +    CustomFilterProgramInfo(const String&amp;, const String&amp;, CustomFilterProgramMixSettings);

const&amp; in here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>692001</commentid>
    <comment_count>3</comment_count>
      <attachid>157583</attachid>
    <who name="Max Vujovic">mvujovic</who>
    <bug_when>2012-08-09 17:00:55 -0700</bug_when>
    <thetext>Created attachment 157583
Patch

Updated patch based on Alex&apos;s comments.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>692012</commentid>
    <comment_count>4</comment_count>
      <attachid>157477</attachid>
    <who name="Max Vujovic">mvujovic</who>
    <bug_when>2012-08-09 17:05:23 -0700</bug_when>
    <thetext>Comment on attachment 157477
Patch

Thanks for the review, Alex. Responses inline:

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

&gt;&gt; Source/WebCore/platform/graphics/CustomFilterProgramMixSettings.h:43
&gt;&gt; +    , compositeOperator(CompositeSourceOver)
&gt; 
&gt; nit: Identation here.

Thanks. Done.

&gt;&gt; Source/WebCore/platform/graphics/CustomFilterProgramMixSettings.h:49
&gt;&gt; +        return enabled == o.enabled
&gt; 
&gt; I think enabled == o.enabled &amp;&amp; enabled == false should ignore the other two properties. Right?

Yeah, that would be more robust. Done.

&gt;&gt; Source/WebCore/platform/graphics/CustomFilterProgramMixSettings.h:57
&gt;&gt; +} CustomFilterProgramMixSettings;
&gt; 
&gt; Why do you need this instance?

It&apos;s a typedef, but I removed it now. (It&apos;s old C habit of mine to typedef structs.)

&gt;&gt; Source/WebCore/platform/graphics/filters/CustomFilterProgramInfo.cpp:72
&gt;&gt; +CustomFilterProgramInfo::CustomFilterProgramInfo(const String&amp; vertexShader, const String&amp; fragmentShader, CustomFilterProgramMixSettings mixSettings)
&gt; 
&gt; I would pass a const ref here.

Done.

&gt;&gt; Source/WebCore/platform/graphics/filters/CustomFilterProgramInfo.cpp:86
&gt;&gt; +    unsigned hash = hashPossiblyNullString(m_vertexShaderString);
&gt; 
&gt; This would look better if you encapsulated it into a separate class:
&gt; 
&gt; HashBuilder hash;
&gt; hash.append(m_vertexShaderString);
&gt; hash.append(m_fragmentShaderString);
&gt; ...
&gt; 
&gt; hash.toUnsigned();

I found something similar to a HashBuilder in StringHasher::hashMemory. I use that instead now, so it should look a lot better.

&gt;&gt; Source/WebCore/platform/graphics/filters/CustomFilterProgramInfo.h:46
&gt;&gt; +    CustomFilterProgramInfo(const String&amp;, const String&amp;, CustomFilterProgramMixSettings);
&gt; 
&gt; const&amp; in here.

Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>692615</commentid>
    <comment_count>5</comment_count>
      <attachid>157583</attachid>
    <who name="Max Vujovic">mvujovic</who>
    <bug_when>2012-08-10 09:36:41 -0700</bug_when>
    <thetext>Comment on attachment 157583
Patch

Bots are green. Setting r?, cq?.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>692665</commentid>
    <comment_count>6</comment_count>
      <attachid>157583</attachid>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2012-08-10 10:43:39 -0700</bug_when>
    <thetext>Comment on attachment 157583
Patch

Do you need to create a new header for this struct? Can&apos;t you put it into CustomFilterProgramInfo.h? Other than that the patch looks fine.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>692757</commentid>
    <comment_count>7</comment_count>
      <attachid>157779</attachid>
    <who name="Max Vujovic">mvujovic</who>
    <bug_when>2012-08-10 11:46:16 -0700</bug_when>
    <thetext>Created attachment 157779
Patch

(In reply to comment #6)
&gt; (From update of attachment 157583 [details])
&gt; Do you need to create a new header for this struct? Can&apos;t you put it into CustomFilterProgramInfo.h? Other than that the patch looks fine.

It doesn&apos;t need a new header file. I&apos;ve updated the patch and moved it to CustomFilterProgramInfo.h.

I&apos;ve also made one other change since the last patch. I&apos;ve added m_mixSettings.enabled to the hash because I realized the following (a) and (b) were hashing to the same value without it:

(a)
m_mixSettings.enabled=1
m_mixSettings.blendMode=0
m_mixSettings.compositeOperator=0

(b)
m_mixSettings.enabled=0
m_mixSettings.blendMode=anything
m_mixSettings.compositeOperator=anything</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>692871</commentid>
    <comment_count>8</comment_count>
      <attachid>157779</attachid>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2012-08-10 14:09:03 -0700</bug_when>
    <thetext>Comment on attachment 157779
Patch

LGTM. r=me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>692907</commentid>
    <comment_count>9</comment_count>
      <attachid>157779</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-08-10 15:16:08 -0700</bug_when>
    <thetext>Comment on attachment 157779
Patch

Clearing flags on attachment: 157779

Committed r125331: &lt;http://trac.webkit.org/changeset/125331&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>692908</commentid>
    <comment_count>10</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-08-10 15:16:11 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>157477</attachid>
            <date>2012-08-09 10:13:47 -0700</date>
            <delta_ts>2012-08-09 17:05:23 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>93623.patch</filename>
            <type>text/plain</type>
            <size>14361</size>
            <attacher name="Max Vujovic">mvujovic</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCAxZTBlYmQwLi4wYTVkNDE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDEg
QEAKKzIwMTItMDgtMDkgIE1heCBWdWpvdmljICA8bXZ1am92aWNAYWRvYmUuY29tPgorCisgICAg
ICAgIFtDU1MgU2hhZGVyc10gQWRkIGJsZW5kIG1vZGUgYW5kIGNvbXBvc2l0ZSBvcCB0byBjb21w
aWxlZCBwcm9ncmFtIGNhY2hlIGtleQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9OTM2MjMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBSaWdodCBub3csIG9ubHkgdGhlIHZlcnRleCBzaGFkZXIgc3RyaW5nIGFu
ZCB0aGUgZnJhZ21lbnQgc2hhZGVyIHN0cmluZyBhcmUgaGFzaGVkIHRvIGNyZWF0ZQorICAgICAg
ICBhIGtleSBmb3IgdGhlIGNvbXBpbGVkIHByb2dyYW0uIEhvd2V2ZXIsIGluIGEgZnV0dXJlIHBh
dGNoLCBXZWJLaXQgd2lsbCByZXdyaXRlIHRoZSBmcmFnbWVudAorICAgICAgICBzaGFkZXIgYmFz
ZWQgb24gdGhlIGJsZW5kIG1vZGUgYW5kIGNvbXBvc2l0ZSBvcCBzcGVjaWZpZWQgYnkgdGhlIGF1
dGhvci4gVGhpcyBtZWFucyB0aGF0IHRoZQorICAgICAgICB1bmlxdWUga2V5IGZvciBhIGNvbXBp
bGVkIHByb2dyYW0gaXMgKG9yaWdpbmFsIHZlcnRleCBzaGFkZXIgc3RyaW5nLCBvcmlnaW5hbCBm
cmFnbWVudCAKKyAgICAgICAgc2hhZGVyIHN0cmluZywgYmxlbmQgbW9kZSwgY29tcG9zaXRlIG9w
ZXJhdG9yKS4gVGhpcyBwYXRjaCBhZGRzIGJsZW5kIG1vZGUgYW5kIGNvbXBvc2l0ZQorICAgICAg
ICBvcGVyYXRvciBpbiB0aGUgaGFzaCBmb3IgdGhlIGtleS4KKworICAgICAgICBObyBuZXcgdGVz
dHMuIFRoZSBzdGF0ZSBvZiB0aGUgY29tcGlsZWQgcHJvZ3JhbSBjYWNoZSBpcyBub3QgZXhwb3Nl
ZCB0byBhIHdlYiBwYWdlLgorICAgICAgICBFeGlzdGluZyB0ZXN0cyBzaG91bGQgZW5zdXJlIHRo
aXMgY2hhbmdlIGRvZXNuJ3QgYnJlYWsgY3VycmVudCBmdW5jdGlvbmFsaXR5LiBBZGRpdGlvbmFs
CisgICAgICAgIHRlc3RzIHdpbGwgYmUgYWRkZWQgaW4gYSBmdXR1cmUgcGF0Y2ggdGhhdCBpbXBs
ZW1lbnRzIHNoYWRlciByZXdyaXRpbmcgYmFzZWQgb24gYmxlbmQgbW9kZQorICAgICAgICBhbmQg
Y29tcG9zaXRlIG9wLgorCisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0N1c3RvbUZpbHRlclByb2dyYW1NaXhT
ZXR0aW5ncy5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6
Q3VzdG9tRmlsdGVyUHJvZ3JhbU1peFNldHRpbmdzOjpDdXN0b21GaWx0ZXJQcm9ncmFtTWl4U2V0
dGluZ3MpOgorICAgICAgICAoQ3VzdG9tRmlsdGVyUHJvZ3JhbU1peFNldHRpbmdzKToKKyAgICAg
ICAgKFdlYkNvcmU6OkN1c3RvbUZpbHRlclByb2dyYW1NaXhTZXR0aW5nczo6b3BlcmF0b3I9PSk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21GaWx0ZXJQcm9ncmFt
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkN1c3RvbUZpbHRlclByb2dyYW06OnByb2dyYW1JbmZv
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0N1c3RvbUZpbHRlclByb2dy
YW0uaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Zp
bHRlcnMvQ3VzdG9tRmlsdGVyUHJvZ3JhbUluZm8uY3BwOgorICAgICAgICAoV2ViQ29yZTo6cmVo
YXNoV2l0aEFkZGl0aW9uYWxWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdl
YkNvcmU6OkN1c3RvbUZpbHRlclByb2dyYW1JbmZvOjpDdXN0b21GaWx0ZXJQcm9ncmFtSW5mbyk6
CisgICAgICAgIChXZWJDb3JlOjpDdXN0b21GaWx0ZXJQcm9ncmFtSW5mbzo6aGFzaCk6CisgICAg
ICAgIChXZWJDb3JlOjpDdXN0b21GaWx0ZXJQcm9ncmFtSW5mbzo6b3BlcmF0b3I9PSk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21GaWx0ZXJQcm9ncmFtSW5mby5o
OgorICAgICAgICAoQ3VzdG9tRmlsdGVyUHJvZ3JhbUluZm8pOgorCiAyMDEyLTA4LTA5ICBQYXZl
bCBGZWxkbWFuICA8cGZlbGRtYW5AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFdlYiBJbnNwZWN0
b3I6IGdlbmVyYXRlIHByZXZpZXcgZm9yIHRoZSBvYmplY3RzIGR1bXBlZCBpbnRvIHRoZSBjb25z
b2xlIHVwb24gbG9nZ2luZy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagppbmRleCBiYTc5NWUxLi4xNTc3ZDViIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0zNzQ2LDYgKzM3
NDYsNyBAQAogCQlBMUUxMTU0ODEzMDE1QzVEMDA1NEFDOEMgLyogU3BvdExpZ2h0U291cmNlLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExRTExNTQ3
MTMwMTVDNUQwMDU0QUM4QyAvKiBTcG90TGlnaHRTb3VyY2UuY3BwICovOyB9OwogCQlBMjRCRjc3
QjE1Q0MzQkFGMDAzMTkxRjIgLyogV2ViS2l0Q1NTTWl4RnVuY3Rpb25WYWx1ZS5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTI0QkY3NzkxNUNDM0JBRjAw
MzE5MUYyIC8qIFdlYktpdENTU01peEZ1bmN0aW9uVmFsdWUuaCAqLzsgfTsKIAkJQTI0QkY3N0Mx
NUNDM0JBRjAwMzE5MUYyIC8qIFdlYktpdENTU01peEZ1bmN0aW9uVmFsdWUuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTI0QkY3N0ExNUNDM0JBRjAw
MzE5MUYyIC8qIFdlYktpdENTU01peEZ1bmN0aW9uVmFsdWUuY3BwICovOyB9OworCQlBMjZCMENF
MDE1RDMwMTU4MDA0QjY2RkMgLyogQ3VzdG9tRmlsdGVyUHJvZ3JhbU1peFNldHRpbmdzLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBMjZCMENERjE1RDMw
MTU4MDA0QjY2RkMgLyogQ3VzdG9tRmlsdGVyUHJvZ3JhbU1peFNldHRpbmdzLmggKi87IH07CiAJ
CUEzQkI1OUYzMTQ1N0E0MEQwMEFDNTZGRSAvKiBEb2N1bWVudEV2ZW50UXVldWUuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTNCQjU5RjExNDU3QTQw
RDAwQUM1NkZFIC8qIERvY3VtZW50RXZlbnRRdWV1ZS5jcHAgKi87IH07CiAJCUEzQkI1OUY0MTQ1
N0E0MEQwMEFDNTZGRSAvKiBEb2N1bWVudEV2ZW50UXVldWUuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEEzQkI1OUYyMTQ1N0E0MEQwMEFDNTZGRSAvKiBE
b2N1bWVudEV2ZW50UXVldWUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQlBM0UyNjQzMDE0NzQ4OTkxMDA1QTg1ODggLyogV29ya2VyRXZlbnRRdWV1
ZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBM0Uy
NjQyRTE0NzQ4OTkxMDA1QTg1ODggLyogV29ya2VyRXZlbnRRdWV1ZS5jcHAgKi87IH07CkBAIC0x
MDkzMiw2ICsxMDkzMyw3IEBACiAJCUExRTExNTQ3MTMwMTVDNUQwMDU0QUM4QyAvKiBTcG90TGln
aHRTb3VyY2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gU3BvdExp
Z2h0U291cmNlLmNwcDsgcGF0aCA9IGZpbHRlcnMvU3BvdExpZ2h0U291cmNlLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTI0QkY3NzkxNUNDM0JBRjAwMzE5MUYyIC8qIFdlYktp
dENTU01peEZ1bmN0aW9uVmFsdWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
V2ViS2l0Q1NTTWl4RnVuY3Rpb25WYWx1ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlBMjRCRjc3QTE1Q0MzQkFGMDAzMTkxRjIgLyogV2ViS2l0Q1NTTWl4RnVuY3Rpb25WYWx1ZS5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJLaXRDU1NNaXhGdW5j
dGlvblZhbHVlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTI2QjBDREYxNUQz
MDE1ODAwNEI2NkZDIC8qIEN1c3RvbUZpbHRlclByb2dyYW1NaXhTZXR0aW5ncy5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDdXN0b21GaWx0ZXJQcm9ncmFtTWl4U2V0dGluZ3Mu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTNCQjU5RjExNDU3QTQwRDAwQUM1NkZF
IC8qIERvY3VtZW50RXZlbnRRdWV1ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBEb2N1bWVudEV2ZW50UXVldWUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlBM0JCNTlGMjE0NTdBNDBEMDBBQzU2RkUgLyogRG9jdW1lbnRFdmVudFF1ZXVlLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERvY3VtZW50RXZlbnRRdWV1ZS5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBM0UyNjQyRTE0NzQ4OTkxMDA1QTg1ODggLyogV29y
a2VyRXZlbnRRdWV1ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBX
b3JrZXJFdmVudFF1ZXVlLmNwcDsgcGF0aCA9IHdvcmtlcnMvV29ya2VyRXZlbnRRdWV1ZS5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xODA4NCw2ICsxODA4Niw3IEBACiAJCQkJ
NTA5ODdDMjUxNTdENjc2RDAwQkRBODM1IC8qIEN1c3RvbUZpbHRlckdsb2JhbENvbnRleHQuaCAq
LywKIAkJCQk1MEQ0MDVGNzE0N0QzMUYzMDBEMzBCQjUgLyogQ3VzdG9tRmlsdGVyTWVzaC5jcHAg
Ki8sCiAJCQkJNTBENDA1RjgxNDdEMzFGMzAwRDMwQkI1IC8qIEN1c3RvbUZpbHRlck1lc2guaCAq
LywKKwkJCQlBMjZCMENERjE1RDMwMTU4MDA0QjY2RkMgLyogQ3VzdG9tRmlsdGVyUHJvZ3JhbU1p
eFNldHRpbmdzLmggKi8sCiAJCQkJNTBDQzA4OTkxNEM2RTk5QzAwMTdBQjUxIC8qIEN1c3RvbUZp
bHRlck51bWJlclBhcmFtZXRlci5oICovLAogCQkJCTUwQ0MwQTM4MTRDNkY1QjEwMDE3QUI1MSAv
KiBDdXN0b21GaWx0ZXJPcGVyYXRpb24uY3BwICovLAogCQkJCTUwQUNFMkNBMTRCNUQ3OTMwMDQ0
NjY2NiAvKiBDdXN0b21GaWx0ZXJPcGVyYXRpb24uaCAqLywKQEAgLTI1Mzk1LDYgKzI1Mzk4LDcg
QEAKIAkJCQlBMjRCRjc3QjE1Q0MzQkFGMDAzMTkxRjIgLyogV2ViS2l0Q1NTTWl4RnVuY3Rpb25W
YWx1ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTBEODhDQjYxNUJERkRBQTAwMTgwOUY0IC8qIEN1
c3RvbUZpbHRlclByb2dyYW1JbmZvLmggaW4gSGVhZGVycyAqLywKIAkJCQkzMTlGQkQ1RjE1RDJG
NDY0MDA5NjQwQTYgLyogQ2FjaGVkSW1hZ2VDbGllbnQuaCBpbiBIZWFkZXJzICovLAorCQkJCUEy
NkIwQ0UwMTVEMzAxNTgwMDRCNjZGQyAvKiBDdXN0b21GaWx0ZXJQcm9ncmFtTWl4U2V0dGluZ3Mu
aCBpbiBIZWFkZXJzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nl
c3NpbmcgPSAwOwogCQl9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvQ3VzdG9tRmlsdGVyUHJvZ3JhbU1peFNldHRpbmdzLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9DdXN0b21GaWx0ZXJQcm9ncmFtTWl4U2V0dGluZ3MuaApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41M2Y2N2ZkCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ3VzdG9tRmlsdGVyUHJvZ3JhbU1peFNl
dHRpbmdzLmgKQEAgLTAsMCArMSw2MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBZG9i
ZSBTeXN0ZW1zIEluY29ycG9yYXRlZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlCisgKiAgICBjb3B5cmlnaHQg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZworICogICAg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUKKyAqICAgIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nCisgKiAgICBkaXNjbGFpbWVyIGluIHRoZSBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMKKyAqICAgIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBD
T1BZUklHSFQgSE9MREVSIOKAnEFTIElT4oCdIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBD
T1BZUklHSFQgSE9MREVSIEJFCisgKiBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksCisgKiBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkK
KyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SCisgKiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YKKyAqIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRgorICogU1VDSCBEQU1BR0UuCisgKi8K
KworI2lmbmRlZiBDdXN0b21GaWx0ZXJQcm9ncmFtTWl4U2V0dGluZ3NfaAorI2RlZmluZSBDdXN0
b21GaWx0ZXJQcm9ncmFtTWl4U2V0dGluZ3NfaAorCisjaWYgRU5BQkxFKENTU19TSEFERVJTKQor
CisjaW5jbHVkZSAiR3JhcGhpY3NUeXBlcy5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3R5
cGVkZWYgc3RydWN0IEN1c3RvbUZpbHRlclByb2dyYW1NaXhTZXR0aW5ncyB7CisgICAgQ3VzdG9t
RmlsdGVyUHJvZ3JhbU1peFNldHRpbmdzKCkKKyAgICAgICAgOiBlbmFibGVkKGZhbHNlKQorICAg
ICAgICAsIGJsZW5kTW9kZShCbGVuZE1vZGVOb3JtYWwpCisgICAgLCBjb21wb3NpdGVPcGVyYXRv
cihDb21wb3NpdGVTb3VyY2VPdmVyKQorICAgIHsKKyAgICB9CisKKyAgICBib29sIG9wZXJhdG9y
PT0oY29uc3QgQ3VzdG9tRmlsdGVyUHJvZ3JhbU1peFNldHRpbmdzJiBvKSBjb25zdAorICAgIHsK
KyAgICAgICAgcmV0dXJuIGVuYWJsZWQgPT0gby5lbmFibGVkCisgICAgICAgICAgICAmJiBibGVu
ZE1vZGUgPT0gby5ibGVuZE1vZGUKKyAgICAgICAgICAgICYmIGNvbXBvc2l0ZU9wZXJhdG9yID09
IG8uY29tcG9zaXRlT3BlcmF0b3I7CisgICAgfQorCisgICAgYm9vbCBlbmFibGVkOworICAgIEJs
ZW5kTW9kZSBibGVuZE1vZGU7CisgICAgQ29tcG9zaXRlT3BlcmF0b3IgY29tcG9zaXRlT3BlcmF0
b3I7Cit9IEN1c3RvbUZpbHRlclByb2dyYW1NaXhTZXR0aW5nczsKKworfQorCisjZW5kaWYgLy8g
RU5BQkxFKENTU19TSEFERVJTKQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVyUHJvZ3JhbS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0N1c3RvbUZpbHRlclByb2dyYW0u
Y3BwCmluZGV4IDg1M2U1MTMuLmQxY2Y2MTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVyUHJvZ3JhbS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21GaWx0ZXJQcm9ncmFt
LmNwcApAQCAtODEsNyArODEsNyBAQCB2b2lkIEN1c3RvbUZpbHRlclByb2dyYW06Om5vdGlmeUNs
aWVudHMoKQogQ3VzdG9tRmlsdGVyUHJvZ3JhbUluZm8gQ3VzdG9tRmlsdGVyUHJvZ3JhbTo6cHJv
Z3JhbUluZm8oKSBjb25zdAogewogICAgIEFTU0VSVChpc0xvYWRlZCgpKTsKLSAgICByZXR1cm4g
Q3VzdG9tRmlsdGVyUHJvZ3JhbUluZm8odmVydGV4U2hhZGVyU3RyaW5nKCksIGZyYWdtZW50U2hh
ZGVyU3RyaW5nKCkpOworICAgIHJldHVybiBDdXN0b21GaWx0ZXJQcm9ncmFtSW5mbyh2ZXJ0ZXhT
aGFkZXJTdHJpbmcoKSwgZnJhZ21lbnRTaGFkZXJTdHJpbmcoKSwgbV9taXhTZXR0aW5ncyk7CiB9
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVyUHJvZ3JhbS5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21GaWx0ZXJQcm9ncmFtLmgKaW5k
ZXggZjdkYTE4OC4uNzhhODkzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZmlsdGVycy9DdXN0b21GaWx0ZXJQcm9ncmFtLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21GaWx0ZXJQcm9ncmFtLmgKQEAgLTMy
LDcgKzMyLDcgQEAKIAogI2lmIEVOQUJMRShDU1NfU0hBREVSUykKIAotI2luY2x1ZGUgIkdyYXBo
aWNzVHlwZXMuaCIKKyNpbmNsdWRlICJDdXN0b21GaWx0ZXJQcm9ncmFtTWl4U2V0dGluZ3MuaCIK
IAogI2luY2x1ZGUgPHd0Zi9IYXNoQ291bnRlZFNldC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3Vu
dGVkLmg+CkBAIC00NSwxOSArNDUsNiBAQCBjbGFzcyBDdXN0b21GaWx0ZXJDb21waWxlZFByb2dy
YW07CiBjbGFzcyBDdXN0b21GaWx0ZXJQcm9ncmFtQ2xpZW50OwogY2xhc3MgQ3VzdG9tRmlsdGVy
UHJvZ3JhbUluZm87CiAKLXR5cGVkZWYgc3RydWN0IEN1c3RvbUZpbHRlclByb2dyYW1NaXhTZXR0
aW5ncyB7Ci0gICAgQ3VzdG9tRmlsdGVyUHJvZ3JhbU1peFNldHRpbmdzKCkKLSAgICAgICAgOiBl
bmFibGVkKGZhbHNlKQotICAgICAgICAsIGJsZW5kTW9kZShCbGVuZE1vZGVOb3JtYWwpCi0gICAg
ICAgICwgY29tcG9zaXRlT3BlcmF0b3IoQ29tcG9zaXRlU291cmNlT3ZlcikKLSAgICB7Ci0gICAg
fQotICAgIAotICAgIGJvb2wgZW5hYmxlZDsKLSAgICBCbGVuZE1vZGUgYmxlbmRNb2RlOwotICAg
IENvbXBvc2l0ZU9wZXJhdG9yIGNvbXBvc2l0ZU9wZXJhdG9yOwotfSBDdXN0b21GaWx0ZXJQcm9n
cmFtTWl4U2V0dGluZ3M7Ci0KIC8vIFRoaXMgaXMgdGhlIGJhc2UgY2xhc3MgZm9yIHRoZSBTdHls
ZUN1c3RvbUZpbHRlclByb2dyYW0gY2xhc3Mgd2hpY2gga25vd3MgaG93IHRvIGtlZXAKIC8vIHJl
ZmVyZW5jZXMgdG8gdGhlIGNhY2hlZCBzaGFkZXJzLgogY2xhc3MgQ3VzdG9tRmlsdGVyUHJvZ3Jh
bTogcHVibGljIFJlZkNvdW50ZWQ8Q3VzdG9tRmlsdGVyUHJvZ3JhbT4gewpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21GaWx0ZXJQcm9n
cmFtSW5mby5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0N1
c3RvbUZpbHRlclByb2dyYW1JbmZvLmNwcAppbmRleCBiYzdjOWU5Li5iY2UzZmFlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0N1c3RvbUZpbHRl
clByb2dyYW1JbmZvLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9m
aWx0ZXJzL0N1c3RvbUZpbHRlclByb2dyYW1JbmZvLmNwcApAQCAtNDIsNiArNDIsMTEgQEAgc3Rh
dGljIHVuc2lnbmVkIGhhc2hQb3NzaWJseU51bGxTdHJpbmcoY29uc3QgU3RyaW5nJiBzdHJpbmcp
CiAgICAgcmV0dXJuIHN0cmluZy5pc051bGwoKSA/IDAgOiBEZWZhdWx0SGFzaDxTdHJpbmc+OjpI
YXNoOjpoYXNoKHN0cmluZyk7CiB9CiAKK3N0YXRpYyB2b2lkIHJlaGFzaFdpdGhBZGRpdGlvbmFs
VmFsdWUodW5zaWduZWQmIGhhc2gsIHVuc2lnbmVkIHZhbHVlKQoreworICAgIGhhc2ggPSBXVEY6
OmludEhhc2goc3RhdGljX2Nhc3Q8dWludDY0X3Q+KGhhc2gpIDw8IDMyIHwgdmFsdWUpOworfQor
CiBDdXN0b21GaWx0ZXJQcm9ncmFtSW5mbzo6Q3VzdG9tRmlsdGVyUHJvZ3JhbUluZm8oKQogewog
fQpAQCAtNjQsMTkgKzY5LDI3IEBAIGJvb2wgQ3VzdG9tRmlsdGVyUHJvZ3JhbUluZm86OmlzSGFz
aFRhYmxlRGVsZXRlZFZhbHVlKCkgY29uc3QKICAgICAgICAgJiYgbV9mcmFnbWVudFNoYWRlclN0
cmluZy5pc0hhc2hUYWJsZURlbGV0ZWRWYWx1ZSgpOwogfQogCi1DdXN0b21GaWx0ZXJQcm9ncmFt
SW5mbzo6Q3VzdG9tRmlsdGVyUHJvZ3JhbUluZm8oY29uc3QgU3RyaW5nJiB2ZXJ0ZXhTaGFkZXIs
IGNvbnN0IFN0cmluZyYgZnJhZ21lbnRTaGFkZXIpCitDdXN0b21GaWx0ZXJQcm9ncmFtSW5mbzo6
Q3VzdG9tRmlsdGVyUHJvZ3JhbUluZm8oY29uc3QgU3RyaW5nJiB2ZXJ0ZXhTaGFkZXIsIGNvbnN0
IFN0cmluZyYgZnJhZ21lbnRTaGFkZXIsIEN1c3RvbUZpbHRlclByb2dyYW1NaXhTZXR0aW5ncyBt
aXhTZXR0aW5ncykKICAgICA6IG1fdmVydGV4U2hhZGVyU3RyaW5nKHZlcnRleFNoYWRlcikKICAg
ICAsIG1fZnJhZ21lbnRTaGFkZXJTdHJpbmcoZnJhZ21lbnRTaGFkZXIpCisgICAgLCBtX21peFNl
dHRpbmdzKG1peFNldHRpbmdzKQogewogICAgIC8vIEF0IGxlYXN0IG9uZSBvZiB0aGUgc2hhZGVy
cyBuZWVkcyB0byBiZSBub24tbnVsbC4KICAgICBBU1NFUlQoIW1fdmVydGV4U2hhZGVyU3RyaW5n
LmlzTnVsbCgpIHx8ICFtX2ZyYWdtZW50U2hhZGVyU3RyaW5nLmlzTnVsbCgpKTsKIH0KIAotdW5z
aWduZWQgQ3VzdG9tRmlsdGVyUHJvZ3JhbUluZm86Omhhc2goKSBjb25zdCAKK3Vuc2lnbmVkIEN1
c3RvbUZpbHRlclByb2dyYW1JbmZvOjpoYXNoKCkgY29uc3QKIHsKICAgICAvLyBBdCBsZWFzdCBv
bmUgb2YgdGhlIHNoYWRlcnMgbmVlZHMgdG8gYmUgbm9uLW51bGwuCiAgICAgQVNTRVJUKCFtX3Zl
cnRleFNoYWRlclN0cmluZy5pc051bGwoKSB8fCAhbV9mcmFnbWVudFNoYWRlclN0cmluZy5pc051
bGwoKSk7Ci0gICAgcmV0dXJuIFdURjo6aW50SGFzaCgoc3RhdGljX2Nhc3Q8dWludDY0X3Q+KGhh
c2hQb3NzaWJseU51bGxTdHJpbmcobV92ZXJ0ZXhTaGFkZXJTdHJpbmcpKSA8PCAzMiB8IGhhc2hQ
b3NzaWJseU51bGxTdHJpbmcobV9mcmFnbWVudFNoYWRlclN0cmluZykpKTsKKworICAgIHVuc2ln
bmVkIGhhc2ggPSBoYXNoUG9zc2libHlOdWxsU3RyaW5nKG1fdmVydGV4U2hhZGVyU3RyaW5nKTsK
KyAgICByZWhhc2hXaXRoQWRkaXRpb25hbFZhbHVlKGhhc2gsIGhhc2hQb3NzaWJseU51bGxTdHJp
bmcobV9mcmFnbWVudFNoYWRlclN0cmluZykpOworICAgIGlmIChtX21peFNldHRpbmdzLmVuYWJs
ZWQpIHsKKyAgICAgICAgcmVoYXNoV2l0aEFkZGl0aW9uYWxWYWx1ZShoYXNoLCBtX21peFNldHRp
bmdzLmJsZW5kTW9kZSk7CisgICAgICAgIHJlaGFzaFdpdGhBZGRpdGlvbmFsVmFsdWUoaGFzaCwg
bV9taXhTZXR0aW5ncy5jb21wb3NpdGVPcGVyYXRvcik7CisgICAgfQorICAgIHJldHVybiBoYXNo
OwogfQogCiBib29sIEN1c3RvbUZpbHRlclByb2dyYW1JbmZvOjpvcGVyYXRvcj09KGNvbnN0IEN1
c3RvbUZpbHRlclByb2dyYW1JbmZvJiBvKSBjb25zdCAKQEAgLTg0LDcgKzk3LDggQEAgYm9vbCBD
dXN0b21GaWx0ZXJQcm9ncmFtSW5mbzo6b3BlcmF0b3I9PShjb25zdCBDdXN0b21GaWx0ZXJQcm9n
cmFtSW5mbyYgbykgY29uc3QKICAgICBBU1NFUlQoIWlzSGFzaFRhYmxlRGVsZXRlZFZhbHVlKCkp
OwogICAgIEFTU0VSVCghby5pc0hhc2hUYWJsZURlbGV0ZWRWYWx1ZSgpKTsKICAgICByZXR1cm4g
bV92ZXJ0ZXhTaGFkZXJTdHJpbmcgPT0gby5tX3ZlcnRleFNoYWRlclN0cmluZwotICAgICAgICAm
JiBtX2ZyYWdtZW50U2hhZGVyU3RyaW5nID09IG8ubV9mcmFnbWVudFNoYWRlclN0cmluZzsKKyAg
ICAgICAgJiYgbV9mcmFnbWVudFNoYWRlclN0cmluZyA9PSBvLm1fZnJhZ21lbnRTaGFkZXJTdHJp
bmcKKyAgICAgICAgJiYgbV9taXhTZXR0aW5ncyA9PSBvLm1fbWl4U2V0dGluZ3M7CiB9CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVyUHJvZ3JhbUluZm8uaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVyUHJvZ3JhbUluZm8uaApp
bmRleCBlODllOWY1Li44OGUxYjdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9maWx0ZXJzL0N1c3RvbUZpbHRlclByb2dyYW1JbmZvLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21GaWx0ZXJQcm9ncmFtSW5m
by5oCkBAIC0zMSw2ICszMSw4IEBACiAjZGVmaW5lIEN1c3RvbUZpbHRlclByb2dyYW1JbmZvX2gK
IAogI2lmIEVOQUJMRShDU1NfU0hBREVSUykKKyNpbmNsdWRlICJDdXN0b21GaWx0ZXJQcm9ncmFt
TWl4U2V0dGluZ3MuaCIKKwogI2luY2x1ZGUgPHd0Zi9IYXNoVHJhaXRzLmg+CiAjaW5jbHVkZSA8
d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKQEAgLTQxLDcgKzQzLDcgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogLy8gTnVsbCBzdHJpbmdzIGFyZSBwbGFjZWhvbGRlcnMgZm9yIHRoZSBkZWZhdWx0IHNo
YWRlci4KIGNsYXNzIEN1c3RvbUZpbHRlclByb2dyYW1JbmZvIHsKIHB1YmxpYzoKLSAgICBDdXN0
b21GaWx0ZXJQcm9ncmFtSW5mbyhjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmKTsKKyAgICBD
dXN0b21GaWx0ZXJQcm9ncmFtSW5mbyhjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBDdXN0
b21GaWx0ZXJQcm9ncmFtTWl4U2V0dGluZ3MpOwogCiAgICAgQ3VzdG9tRmlsdGVyUHJvZ3JhbUlu
Zm8oKTsKICAgICBib29sIGlzRW1wdHlWYWx1ZSgpIGNvbnN0OwpAQCAtNTcsOSArNTksNyBAQCBw
dWJsaWM6CiBwcml2YXRlOgogICAgIFN0cmluZyBtX3ZlcnRleFNoYWRlclN0cmluZzsKICAgICBT
dHJpbmcgbV9mcmFnbWVudFNoYWRlclN0cmluZzsKLQotICAgIC8vIEZJWE1FOiBBbHBoYSBjb21w
b3NpdGluZyBhbmQgYmxlbmRpbmcgd2lsbCBjb21lIGhlcmUgYWZ0ZXIgbWl4KCkgZnVuY3Rpb24g
cGFyc2luZyB3aWxsIGxhbmQuCi0gICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTkwMTAxCisgICAgQ3VzdG9tRmlsdGVyUHJvZ3JhbU1peFNldHRpbmdzIG1fbWl4
U2V0dGluZ3M7CiB9OwogCiBzdHJ1Y3QgQ3VzdG9tRmlsdGVyUHJvZ3JhbUluZm9IYXNoIHsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>157583</attachid>
            <date>2012-08-09 17:00:55 -0700</date>
            <delta_ts>2012-08-10 11:46:16 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>93623-2.patch</filename>
            <type>text/plain</type>
            <size>16417</size>
            <attacher name="Max Vujovic">mvujovic</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCAyNzM5ZGJjLi42YzJiNDAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDAg
QEAKKzIwMTItMDgtMDkgIE1heCBWdWpvdmljICA8bXZ1am92aWNAYWRvYmUuY29tPgorCisgICAg
ICAgIFtDU1MgU2hhZGVyc10gQWRkIGJsZW5kIG1vZGUgYW5kIGNvbXBvc2l0ZSBvcCB0byBjb21w
aWxlZCBwcm9ncmFtIGNhY2hlIGtleQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9OTM2MjMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBSaWdodCBub3csIG9ubHkgdGhlIHZlcnRleCBzaGFkZXIgc3RyaW5nIGFu
ZCB0aGUgZnJhZ21lbnQgc2hhZGVyIHN0cmluZyBhcmUgaGFzaGVkIHRvIGNyZWF0ZQorICAgICAg
ICBhIGtleSBmb3IgdGhlIGNvbXBpbGVkIHByb2dyYW0uIEhvd2V2ZXIsIGluIGEgZnV0dXJlIHBh
dGNoLCBXZWJLaXQgd2lsbCByZXdyaXRlIHRoZSBmcmFnbWVudAorICAgICAgICBzaGFkZXIgYmFz
ZWQgb24gdGhlIGJsZW5kIG1vZGUgYW5kIGNvbXBvc2l0ZSBvcCBzcGVjaWZpZWQgYnkgdGhlIGF1
dGhvci4gVGhpcyBtZWFucyB0aGF0IHRoZQorICAgICAgICB1bmlxdWUga2V5IGZvciBhIGNvbXBp
bGVkIHByb2dyYW0gaXMgKG9yaWdpbmFsIHZlcnRleCBzaGFkZXIgc3RyaW5nLCBvcmlnaW5hbCBm
cmFnbWVudCAKKyAgICAgICAgc2hhZGVyIHN0cmluZywgYmxlbmQgbW9kZSwgY29tcG9zaXRlIG9w
ZXJhdG9yKS4gVGhpcyBwYXRjaCBhZGRzIGJsZW5kIG1vZGUgYW5kIGNvbXBvc2l0ZQorICAgICAg
ICBvcGVyYXRvciBpbiB0aGUgaGFzaCBmb3IgdGhlIGtleS4KKworICAgICAgICBObyBuZXcgdGVz
dHMuIFRoZSBzdGF0ZSBvZiB0aGUgY29tcGlsZWQgcHJvZ3JhbSBjYWNoZSBpcyBub3QgZXhwb3Nl
ZCB0byBhIHdlYiBwYWdlLgorICAgICAgICBFeGlzdGluZyB0ZXN0cyBzaG91bGQgZW5zdXJlIHRo
aXMgY2hhbmdlIGRvZXNuJ3QgYnJlYWsgY3VycmVudCBmdW5jdGlvbmFsaXR5LiBBZGRpdGlvbmFs
CisgICAgICAgIHRlc3RzIHdpbGwgYmUgYWRkZWQgaW4gYSBmdXR1cmUgcGF0Y2ggdGhhdCBpbXBs
ZW1lbnRzIHNoYWRlciByZXdyaXRpbmcgYmFzZWQgb24gYmxlbmQgbW9kZQorICAgICAgICBhbmQg
Y29tcG9zaXRlIG9wLgorCisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0N1c3RvbUZpbHRlclByb2dyYW1NaXhT
ZXR0aW5ncy5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6
Q3VzdG9tRmlsdGVyUHJvZ3JhbU1peFNldHRpbmdzOjpDdXN0b21GaWx0ZXJQcm9ncmFtTWl4U2V0
dGluZ3MpOgorICAgICAgICAoQ3VzdG9tRmlsdGVyUHJvZ3JhbU1peFNldHRpbmdzKToKKyAgICAg
ICAgKFdlYkNvcmU6OkN1c3RvbUZpbHRlclByb2dyYW1NaXhTZXR0aW5nczo6b3BlcmF0b3I9PSk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21GaWx0ZXJQcm9ncmFt
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkN1c3RvbUZpbHRlclByb2dyYW06OnByb2dyYW1JbmZv
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0N1c3RvbUZpbHRlclByb2dy
YW0uaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Zp
bHRlcnMvQ3VzdG9tRmlsdGVyUHJvZ3JhbUluZm8uY3BwOgorICAgICAgICAoV2ViQ29yZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpDdXN0b21GaWx0ZXJQcm9ncmFtSW5mbzo6Q3VzdG9tRmlsdGVyUHJv
Z3JhbUluZm8pOgorICAgICAgICAoV2ViQ29yZTo6Q3VzdG9tRmlsdGVyUHJvZ3JhbUluZm86Omhh
c2gpOgorICAgICAgICAoV2ViQ29yZTo6Q3VzdG9tRmlsdGVyUHJvZ3JhbUluZm86Om9wZXJhdG9y
PT0pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVyUHJv
Z3JhbUluZm8uaDoKKyAgICAgICAgKEN1c3RvbUZpbHRlclByb2dyYW1JbmZvKToKKwogMjAxMi0w
OC0wOSAgQmVuamFtaW4gUG91bGFpbiAgPGJwb3VsYWluQGFwcGxlLmNvbT4KIAogICAgICAgICBB
cHBlbmQgdGhlIHVuaXQgaW4gcGxhY2Ugd2hlbiBnZW5lcmF0aW5nIHRoZSB0ZXh0IHZhbHVlIG9m
IGEgQ1NTUHJpbWl0aXZlVmFsdWUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2Vm
aWxlLmxpc3QuYW0gYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCmluZGV4IDc4
MDNhN2MuLmYxMTRmMTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxp
c3QuYW0KKysrIGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQpAQCAtMzI3OCw2
ICszMjc4LDcgQEAgd2ViY29yZV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9maWx0ZXJzL0N1c3RvbUZpbHRlclByb2dyYW0uaCBcCiAJU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21GaWx0ZXJQcm9ncmFtSW5mby5jcHAg
XAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVy
UHJvZ3JhbUluZm8uaCBcCisJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVy
cy9DdXN0b21GaWx0ZXJQcm9ncmFtTWl4U2V0dGluZ3MuaCBcCiAJU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21GaWx0ZXJDb21waWxlZFByb2dyYW0uY3BwIFwK
IAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0N1c3RvbUZpbHRlckNv
bXBpbGVkUHJvZ3JhbS5oIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0
ZXJzL0Rpc3RhbnRMaWdodFNvdXJjZS5jcHAgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
VGFyZ2V0LnByaSBiL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkKaW5kZXggZjQzMTc1ZC4uMjJk
YmJkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9UYXJnZXQucHJpCkBAIC0yMDI4LDYgKzIwMjgsNyBAQCBIRUFERVJTICs9IFwKICAg
ICBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0N1c3RvbUZpbHRlck9wZXJhdGlvbi5oIFwKICAg
ICBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0N1c3RvbUZpbHRlclBhcmFtZXRlci5oIFwKICAg
ICBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0N1c3RvbUZpbHRlclByb2dyYW0uaCBcCisgICAg
cGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21GaWx0ZXJQcm9ncmFtTWl4U2V0dGluZ3Mu
aCBcCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUJsZW5kLmggXAogICAgIHBsYXRm
b3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb2xvck1hdHJpeC5oIFwKICAgICBwbGF0Zm9ybS9ncmFw
aGljcy9maWx0ZXJzL0ZFQ29tcG9uZW50VHJhbnNmZXIuaCBcCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLmd5cGkgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKaW5kZXgg
YjQ5YzMyMC4uMmMxNjQ3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBp
CisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQpAQCAtMzY4Niw2ICszNjg2LDcgQEAK
ICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0N1c3RvbUZpbHRlclByb2dy
YW0uaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21GaWx0
ZXJQcm9ncmFtSW5mby5jcHAnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRl
cnMvQ3VzdG9tRmlsdGVyUHJvZ3JhbUluZm8uaCcsCisgICAgICAgICAgICAncGxhdGZvcm0vZ3Jh
cGhpY3MvZmlsdGVycy9DdXN0b21GaWx0ZXJQcm9ncmFtTWl4U2V0dGluZ3MuaCcsCiAgICAgICAg
ICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21GaWx0ZXJDb21waWxlZFByb2dy
YW0uY3BwJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0N1c3RvbUZp
bHRlckNvbXBpbGVkUHJvZ3JhbS5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9m
aWx0ZXJzL0N1c3RvbUZpbHRlck1lc2guY3BwJywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52
Y3Byb2ovV2ViQ29yZS52Y3Byb2oKaW5kZXggYzE3NzkyMi4uMWM2OTI5MSAxMDA3NTUKLS0tIGEv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKKysrIGIvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKQEAgLTMxNzA1LDYgKzMxNzA1
LDEwIEBACiAJCQkJCQk+CiAJCQkJCTwvRmlsZT4KIAkJCQkJPEZpbGUKKwkJCQkJCVJlbGF0aXZl
UGF0aD0iLi5ccGxhdGZvcm1cZ3JhcGhpY3NcZmlsdGVyc1xDdXN0b21GaWx0ZXJQcm9ncmFtTWl4
U2V0dGluZ3MuaCIKKwkJCQkJCT4KKwkJCQkJPC9GaWxlPgorCQkJCQk8RmlsZQogCQkJCQkJUmVs
YXRpdmVQYXRoPSIuLlxwbGF0Zm9ybVxncmFwaGljc1xmaWx0ZXJzXEN1c3RvbUZpbHRlckNvbXBp
bGVkUHJvZ3JhbS5jcHAiCiAJCQkJCQk+CiAJCQkJCTwvRmlsZT4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA0ZGRlNmEzLi4wMjg4
NGFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCkBAIC0zNzQ2LDYgKzM3NDYsNyBAQAogCQlBMUUxMTU0ODEzMDE1QzVEMDA1NEFDOEMg
LyogU3BvdExpZ2h0U291cmNlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEExRTExNTQ3MTMwMTVDNUQwMDU0QUM4QyAvKiBTcG90TGlnaHRTb3VyY2Uu
Y3BwICovOyB9OwogCQlBMjRCRjc3QjE1Q0MzQkFGMDAzMTkxRjIgLyogV2ViS2l0Q1NTTWl4RnVu
Y3Rpb25WYWx1ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQTI0QkY3NzkxNUNDM0JBRjAwMzE5MUYyIC8qIFdlYktpdENTU01peEZ1bmN0aW9uVmFsdWUu
aCAqLzsgfTsKIAkJQTI0QkY3N0MxNUNDM0JBRjAwMzE5MUYyIC8qIFdlYktpdENTU01peEZ1bmN0
aW9uVmFsdWUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQTI0QkY3N0ExNUNDM0JBRjAwMzE5MUYyIC8qIFdlYktpdENTU01peEZ1bmN0aW9uVmFsdWUu
Y3BwICovOyB9OworCQlBMjZCMENFMDE1RDMwMTU4MDA0QjY2RkMgLyogQ3VzdG9tRmlsdGVyUHJv
Z3JhbU1peFNldHRpbmdzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBBMjZCMENERjE1RDMwMTU4MDA0QjY2RkMgLyogQ3VzdG9tRmlsdGVyUHJvZ3JhbU1p
eFNldHRpbmdzLmggKi87IH07CiAJCUEzQkI1OUYzMTQ1N0E0MEQwMEFDNTZGRSAvKiBEb2N1bWVu
dEV2ZW50UXVldWUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQTNCQjU5RjExNDU3QTQwRDAwQUM1NkZFIC8qIERvY3VtZW50RXZlbnRRdWV1ZS5jcHAg
Ki87IH07CiAJCUEzQkI1OUY0MTQ1N0E0MEQwMEFDNTZGRSAvKiBEb2N1bWVudEV2ZW50UXVldWUu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEEzQkI1OUYy
MTQ1N0E0MEQwMEFDNTZGRSAvKiBEb2N1bWVudEV2ZW50UXVldWUuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlBM0UyNjQzMDE0NzQ4OTkxMDA1QTg1
ODggLyogV29ya2VyRXZlbnRRdWV1ZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBBM0UyNjQyRTE0NzQ4OTkxMDA1QTg1ODggLyogV29ya2VyRXZlbnRR
dWV1ZS5jcHAgKi87IH07CkBAIC0xMDkzMyw2ICsxMDkzNCw3IEBACiAJCUExRTExNTQ3MTMwMTVD
NUQwMDU0QUM4QyAvKiBTcG90TGlnaHRTb3VyY2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBuYW1lID0gU3BvdExpZ2h0U291cmNlLmNwcDsgcGF0aCA9IGZpbHRlcnMvU3BvdExp
Z2h0U291cmNlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTI0QkY3NzkxNUND
M0JBRjAwMzE5MUYyIC8qIFdlYktpdENTU01peEZ1bmN0aW9uVmFsdWUuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViS2l0Q1NTTWl4RnVuY3Rpb25WYWx1ZS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlBMjRCRjc3QTE1Q0MzQkFGMDAzMTkxRjIgLyogV2ViS2l0
Q1NTTWl4RnVuY3Rpb25WYWx1ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBXZWJLaXRDU1NNaXhGdW5jdGlvblZhbHVlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJQTI2QjBDREYxNUQzMDE1ODAwNEI2NkZDIC8qIEN1c3RvbUZpbHRlclByb2dyYW1N
aXhTZXR0aW5ncy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDdXN0b21GaWx0
ZXJQcm9ncmFtTWl4U2V0dGluZ3MuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTNC
QjU5RjExNDU3QTQwRDAwQUM1NkZFIC8qIERvY3VtZW50RXZlbnRRdWV1ZS5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBEb2N1bWVudEV2ZW50UXVldWUuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBM0JCNTlGMjE0NTdBNDBEMDBBQzU2RkUgLyogRG9j
dW1lbnRFdmVudFF1ZXVlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERvY3Vt
ZW50RXZlbnRRdWV1ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBM0UyNjQyRTE0
NzQ4OTkxMDA1QTg1ODggLyogV29ya2VyRXZlbnRRdWV1ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IG5hbWUgPSBXb3JrZXJFdmVudFF1ZXVlLmNwcDsgcGF0aCA9IHdvcmtlcnMv
V29ya2VyRXZlbnRRdWV1ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xODA5
Myw2ICsxODA5NSw3IEBACiAJCQkJNTAzRDBDQTcxNEI1QjA4NzAwRjMyRjU3IC8qIEN1c3RvbUZp
bHRlclByb2dyYW0uY3BwICovLAogCQkJCTUwM0QwQ0E4MTRCNUIwODcwMEYzMkY1NyAvKiBDdXN0
b21GaWx0ZXJQcm9ncmFtLmggKi8sCiAJCQkJNTAzRDBDQTkxNEI1QjA4NzAwRjMyRjU3IC8qIEN1
c3RvbUZpbHRlclByb2dyYW1DbGllbnQuaCAqLywKKwkJCQlBMjZCMENERjE1RDMwMTU4MDA0QjY2
RkMgLyogQ3VzdG9tRmlsdGVyUHJvZ3JhbU1peFNldHRpbmdzLmggKi8sCiAJCQkJQTFFMTE1NDMx
MzAxNUMzRDAwNTRBQzhDIC8qIERpc3RhbnRMaWdodFNvdXJjZS5jcHAgKi8sCiAJCQkJODQ3MzBE
NUExMjQ4RjBCMzAwRDNBOUM5IC8qIERpc3RhbnRMaWdodFNvdXJjZS5oICovLAogCQkJCUE3NUU4
QjgwMEUxREUyRDYwMDdGMjQ4MSAvKiBGRUJsZW5kLmNwcCAqLywKQEAgLTI1Mzk5LDYgKzI1NDAy
LDcgQEAKIAkJCQlBMjRCRjc3QjE1Q0MzQkFGMDAzMTkxRjIgLyogV2ViS2l0Q1NTTWl4RnVuY3Rp
b25WYWx1ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTBEODhDQjYxNUJERkRBQTAwMTgwOUY0IC8q
IEN1c3RvbUZpbHRlclByb2dyYW1JbmZvLmggaW4gSGVhZGVycyAqLywKIAkJCQkzMTlGQkQ1RjE1
RDJGNDY0MDA5NjQwQTYgLyogQ2FjaGVkSW1hZ2VDbGllbnQuaCBpbiBIZWFkZXJzICovLAorCQkJ
CUEyNkIwQ0UwMTVEMzAxNTgwMDRCNjZGQyAvKiBDdXN0b21GaWx0ZXJQcm9ncmFtTWl4U2V0dGlu
Z3MuaCBpbiBIZWFkZXJzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHBy
b2Nlc3NpbmcgPSAwOwogCQl9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvQ3VzdG9tRmlsdGVyUHJvZ3JhbU1peFNldHRpbmdzLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9DdXN0b21GaWx0ZXJQcm9ncmFtTWl4U2V0dGluZ3MuaApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lOTY4OTkwCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ3VzdG9tRmlsdGVyUHJvZ3JhbU1p
eFNldHRpbmdzLmgKQEAgLTAsMCArMSw2MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBB
ZG9iZSBTeXN0ZW1zIEluY29ycG9yYXRlZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlCisgKiAgICBjb3B5cmln
aHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZworICog
ICAgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqICAgIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nCisgKiAgICBkaXNjbGFpbWVyIGluIHRoZSBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMKKyAqICAgIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRI
RSBDT1BZUklHSFQgSE9MREVSIOKAnEFTIElT4oCdIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRI
RSBDT1BZUklHSFQgSE9MREVSIEJFCisgKiBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksCisgKiBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SCisgKiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YKKyAqIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRgorICogU1VDSCBEQU1BR0UuCisg
Ki8KKworI2lmbmRlZiBDdXN0b21GaWx0ZXJQcm9ncmFtTWl4U2V0dGluZ3NfaAorI2RlZmluZSBD
dXN0b21GaWx0ZXJQcm9ncmFtTWl4U2V0dGluZ3NfaAorCisjaWYgRU5BQkxFKENTU19TSEFERVJT
KQorCisjaW5jbHVkZSAiR3JhcGhpY3NUeXBlcy5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisK
K3N0cnVjdCBDdXN0b21GaWx0ZXJQcm9ncmFtTWl4U2V0dGluZ3MgeworICAgIEN1c3RvbUZpbHRl
clByb2dyYW1NaXhTZXR0aW5ncygpCisgICAgICAgIDogZW5hYmxlZChmYWxzZSkKKyAgICAgICAg
LCBibGVuZE1vZGUoQmxlbmRNb2RlTm9ybWFsKQorICAgICAgICAsIGNvbXBvc2l0ZU9wZXJhdG9y
KENvbXBvc2l0ZVNvdXJjZU92ZXIpCisgICAgeworICAgIH0KKworICAgIGJvb2wgb3BlcmF0b3I9
PShjb25zdCBDdXN0b21GaWx0ZXJQcm9ncmFtTWl4U2V0dGluZ3MmIG8pIGNvbnN0CisgICAgewor
ICAgICAgICByZXR1cm4gKCFlbmFibGVkICYmICFvLmVuYWJsZWQpCisgICAgICAgICAgICB8fCAo
YmxlbmRNb2RlID09IG8uYmxlbmRNb2RlICYmIGNvbXBvc2l0ZU9wZXJhdG9yID09IG8uY29tcG9z
aXRlT3BlcmF0b3IpOworICAgIH0KKworICAgIGJvb2wgZW5hYmxlZDsKKyAgICBCbGVuZE1vZGUg
YmxlbmRNb2RlOworICAgIENvbXBvc2l0ZU9wZXJhdG9yIGNvbXBvc2l0ZU9wZXJhdG9yOworfTsK
KworfQorCisjZW5kaWYgLy8gRU5BQkxFKENTU19TSEFERVJTKQorCisjZW5kaWYKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVy
UHJvZ3JhbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0N1
c3RvbUZpbHRlclByb2dyYW0uY3BwCmluZGV4IDg1M2U1MTMuLmQxY2Y2MTMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVyUHJv
Z3JhbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9D
dXN0b21GaWx0ZXJQcm9ncmFtLmNwcApAQCAtODEsNyArODEsNyBAQCB2b2lkIEN1c3RvbUZpbHRl
clByb2dyYW06Om5vdGlmeUNsaWVudHMoKQogQ3VzdG9tRmlsdGVyUHJvZ3JhbUluZm8gQ3VzdG9t
RmlsdGVyUHJvZ3JhbTo6cHJvZ3JhbUluZm8oKSBjb25zdAogewogICAgIEFTU0VSVChpc0xvYWRl
ZCgpKTsKLSAgICByZXR1cm4gQ3VzdG9tRmlsdGVyUHJvZ3JhbUluZm8odmVydGV4U2hhZGVyU3Ry
aW5nKCksIGZyYWdtZW50U2hhZGVyU3RyaW5nKCkpOworICAgIHJldHVybiBDdXN0b21GaWx0ZXJQ
cm9ncmFtSW5mbyh2ZXJ0ZXhTaGFkZXJTdHJpbmcoKSwgZnJhZ21lbnRTaGFkZXJTdHJpbmcoKSwg
bV9taXhTZXR0aW5ncyk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVyUHJv
Z3JhbS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21G
aWx0ZXJQcm9ncmFtLmgKaW5kZXggZjdkYTE4OC4uNzhhODkzNSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21GaWx0ZXJQcm9ncmFtLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21GaWx0
ZXJQcm9ncmFtLmgKQEAgLTMyLDcgKzMyLDcgQEAKIAogI2lmIEVOQUJMRShDU1NfU0hBREVSUykK
IAotI2luY2x1ZGUgIkdyYXBoaWNzVHlwZXMuaCIKKyNpbmNsdWRlICJDdXN0b21GaWx0ZXJQcm9n
cmFtTWl4U2V0dGluZ3MuaCIKIAogI2luY2x1ZGUgPHd0Zi9IYXNoQ291bnRlZFNldC5oPgogI2lu
Y2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CkBAIC00NSwxOSArNDUsNiBAQCBjbGFzcyBDdXN0b21G
aWx0ZXJDb21waWxlZFByb2dyYW07CiBjbGFzcyBDdXN0b21GaWx0ZXJQcm9ncmFtQ2xpZW50Owog
Y2xhc3MgQ3VzdG9tRmlsdGVyUHJvZ3JhbUluZm87CiAKLXR5cGVkZWYgc3RydWN0IEN1c3RvbUZp
bHRlclByb2dyYW1NaXhTZXR0aW5ncyB7Ci0gICAgQ3VzdG9tRmlsdGVyUHJvZ3JhbU1peFNldHRp
bmdzKCkKLSAgICAgICAgOiBlbmFibGVkKGZhbHNlKQotICAgICAgICAsIGJsZW5kTW9kZShCbGVu
ZE1vZGVOb3JtYWwpCi0gICAgICAgICwgY29tcG9zaXRlT3BlcmF0b3IoQ29tcG9zaXRlU291cmNl
T3ZlcikKLSAgICB7Ci0gICAgfQotICAgIAotICAgIGJvb2wgZW5hYmxlZDsKLSAgICBCbGVuZE1v
ZGUgYmxlbmRNb2RlOwotICAgIENvbXBvc2l0ZU9wZXJhdG9yIGNvbXBvc2l0ZU9wZXJhdG9yOwot
fSBDdXN0b21GaWx0ZXJQcm9ncmFtTWl4U2V0dGluZ3M7Ci0KIC8vIFRoaXMgaXMgdGhlIGJhc2Ug
Y2xhc3MgZm9yIHRoZSBTdHlsZUN1c3RvbUZpbHRlclByb2dyYW0gY2xhc3Mgd2hpY2gga25vd3Mg
aG93IHRvIGtlZXAKIC8vIHJlZmVyZW5jZXMgdG8gdGhlIGNhY2hlZCBzaGFkZXJzLgogY2xhc3Mg
Q3VzdG9tRmlsdGVyUHJvZ3JhbTogcHVibGljIFJlZkNvdW50ZWQ8Q3VzdG9tRmlsdGVyUHJvZ3Jh
bT4gewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVy
cy9DdXN0b21GaWx0ZXJQcm9ncmFtSW5mby5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9maWx0ZXJzL0N1c3RvbUZpbHRlclByb2dyYW1JbmZvLmNwcAppbmRleCBiYzdjOWU5
Li40MzZkM2NlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9m
aWx0ZXJzL0N1c3RvbUZpbHRlclByb2dyYW1JbmZvLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0N1c3RvbUZpbHRlclByb2dyYW1JbmZvLmNwcApAQCAt
NjQsMTkgKzY0LDI2IEBAIGJvb2wgQ3VzdG9tRmlsdGVyUHJvZ3JhbUluZm86OmlzSGFzaFRhYmxl
RGVsZXRlZFZhbHVlKCkgY29uc3QKICAgICAgICAgJiYgbV9mcmFnbWVudFNoYWRlclN0cmluZy5p
c0hhc2hUYWJsZURlbGV0ZWRWYWx1ZSgpOwogfQogCi1DdXN0b21GaWx0ZXJQcm9ncmFtSW5mbzo6
Q3VzdG9tRmlsdGVyUHJvZ3JhbUluZm8oY29uc3QgU3RyaW5nJiB2ZXJ0ZXhTaGFkZXIsIGNvbnN0
IFN0cmluZyYgZnJhZ21lbnRTaGFkZXIpCitDdXN0b21GaWx0ZXJQcm9ncmFtSW5mbzo6Q3VzdG9t
RmlsdGVyUHJvZ3JhbUluZm8oY29uc3QgU3RyaW5nJiB2ZXJ0ZXhTaGFkZXIsIGNvbnN0IFN0cmlu
ZyYgZnJhZ21lbnRTaGFkZXIsIGNvbnN0IEN1c3RvbUZpbHRlclByb2dyYW1NaXhTZXR0aW5ncyYg
bWl4U2V0dGluZ3MpCiAgICAgOiBtX3ZlcnRleFNoYWRlclN0cmluZyh2ZXJ0ZXhTaGFkZXIpCiAg
ICAgLCBtX2ZyYWdtZW50U2hhZGVyU3RyaW5nKGZyYWdtZW50U2hhZGVyKQorICAgICwgbV9taXhT
ZXR0aW5ncyhtaXhTZXR0aW5ncykKIHsKICAgICAvLyBBdCBsZWFzdCBvbmUgb2YgdGhlIHNoYWRl
cnMgbmVlZHMgdG8gYmUgbm9uLW51bGwuCiAgICAgQVNTRVJUKCFtX3ZlcnRleFNoYWRlclN0cmlu
Zy5pc051bGwoKSB8fCAhbV9mcmFnbWVudFNoYWRlclN0cmluZy5pc051bGwoKSk7CiB9CiAKLXVu
c2lnbmVkIEN1c3RvbUZpbHRlclByb2dyYW1JbmZvOjpoYXNoKCkgY29uc3QgCit1bnNpZ25lZCBD
dXN0b21GaWx0ZXJQcm9ncmFtSW5mbzo6aGFzaCgpIGNvbnN0CiB7CiAgICAgLy8gQXQgbGVhc3Qg
b25lIG9mIHRoZSBzaGFkZXJzIG5lZWRzIHRvIGJlIG5vbi1udWxsLgogICAgIEFTU0VSVCghbV92
ZXJ0ZXhTaGFkZXJTdHJpbmcuaXNOdWxsKCkgfHwgIW1fZnJhZ21lbnRTaGFkZXJTdHJpbmcuaXNO
dWxsKCkpOwotICAgIHJldHVybiBXVEY6OmludEhhc2goKHN0YXRpY19jYXN0PHVpbnQ2NF90Piho
YXNoUG9zc2libHlOdWxsU3RyaW5nKG1fdmVydGV4U2hhZGVyU3RyaW5nKSkgPDwgMzIgfCBoYXNo
UG9zc2libHlOdWxsU3RyaW5nKG1fZnJhZ21lbnRTaGFkZXJTdHJpbmcpKSk7CisgICAgdWludHB0
cl90IGhhc2hDb2Rlc1s0XSA9IHsKKyAgICAgICAgaGFzaFBvc3NpYmx5TnVsbFN0cmluZyhtX3Zl
cnRleFNoYWRlclN0cmluZyksCisgICAgICAgIGhhc2hQb3NzaWJseU51bGxTdHJpbmcobV9mcmFn
bWVudFNoYWRlclN0cmluZyksCisgICAgICAgIG1fbWl4U2V0dGluZ3MuZW5hYmxlZCA/IG1fbWl4
U2V0dGluZ3MuYmxlbmRNb2RlIDogMCwKKyAgICAgICAgbV9taXhTZXR0aW5ncy5lbmFibGVkID8g
bV9taXhTZXR0aW5ncy5jb21wb3NpdGVPcGVyYXRvciA6IDAKKyAgICB9OworICAgIHJldHVybiBT
dHJpbmdIYXNoZXI6Omhhc2hNZW1vcnk8c2l6ZW9mKGhhc2hDb2Rlcyk+KCZoYXNoQ29kZXMpOwog
fQogCiBib29sIEN1c3RvbUZpbHRlclByb2dyYW1JbmZvOjpvcGVyYXRvcj09KGNvbnN0IEN1c3Rv
bUZpbHRlclByb2dyYW1JbmZvJiBvKSBjb25zdCAKQEAgLTg0LDcgKzkxLDggQEAgYm9vbCBDdXN0
b21GaWx0ZXJQcm9ncmFtSW5mbzo6b3BlcmF0b3I9PShjb25zdCBDdXN0b21GaWx0ZXJQcm9ncmFt
SW5mbyYgbykgY29uc3QKICAgICBBU1NFUlQoIWlzSGFzaFRhYmxlRGVsZXRlZFZhbHVlKCkpOwog
ICAgIEFTU0VSVCghby5pc0hhc2hUYWJsZURlbGV0ZWRWYWx1ZSgpKTsKICAgICByZXR1cm4gbV92
ZXJ0ZXhTaGFkZXJTdHJpbmcgPT0gby5tX3ZlcnRleFNoYWRlclN0cmluZwotICAgICAgICAmJiBt
X2ZyYWdtZW50U2hhZGVyU3RyaW5nID09IG8ubV9mcmFnbWVudFNoYWRlclN0cmluZzsKKyAgICAg
ICAgJiYgbV9mcmFnbWVudFNoYWRlclN0cmluZyA9PSBvLm1fZnJhZ21lbnRTaGFkZXJTdHJpbmcK
KyAgICAgICAgJiYgbV9taXhTZXR0aW5ncyA9PSBvLm1fbWl4U2V0dGluZ3M7CiB9CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVyUHJvZ3JhbUluZm8uaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVyUHJvZ3JhbUluZm8uaAppbmRl
eCBlODllOWY1Li4yNmU2YmIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9maWx0ZXJzL0N1c3RvbUZpbHRlclByb2dyYW1JbmZvLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21GaWx0ZXJQcm9ncmFtSW5mby5o
CkBAIC0zMSw2ICszMSw4IEBACiAjZGVmaW5lIEN1c3RvbUZpbHRlclByb2dyYW1JbmZvX2gKIAog
I2lmIEVOQUJMRShDU1NfU0hBREVSUykKKyNpbmNsdWRlICJDdXN0b21GaWx0ZXJQcm9ncmFtTWl4
U2V0dGluZ3MuaCIKKwogI2luY2x1ZGUgPHd0Zi9IYXNoVHJhaXRzLmg+CiAjaW5jbHVkZSA8d3Rm
L3RleHQvV1RGU3RyaW5nLmg+CiAKQEAgLTQxLDcgKzQzLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogLy8gTnVsbCBzdHJpbmdzIGFyZSBwbGFjZWhvbGRlcnMgZm9yIHRoZSBkZWZhdWx0IHNoYWRl
ci4KIGNsYXNzIEN1c3RvbUZpbHRlclByb2dyYW1JbmZvIHsKIHB1YmxpYzoKLSAgICBDdXN0b21G
aWx0ZXJQcm9ncmFtSW5mbyhjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmKTsKKyAgICBDdXN0
b21GaWx0ZXJQcm9ncmFtSW5mbyhjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBjb25zdCBD
dXN0b21GaWx0ZXJQcm9ncmFtTWl4U2V0dGluZ3MmKTsKIAogICAgIEN1c3RvbUZpbHRlclByb2dy
YW1JbmZvKCk7CiAgICAgYm9vbCBpc0VtcHR5VmFsdWUoKSBjb25zdDsKQEAgLTU3LDkgKzU5LDcg
QEAgcHVibGljOgogcHJpdmF0ZToKICAgICBTdHJpbmcgbV92ZXJ0ZXhTaGFkZXJTdHJpbmc7CiAg
ICAgU3RyaW5nIG1fZnJhZ21lbnRTaGFkZXJTdHJpbmc7Ci0KLSAgICAvLyBGSVhNRTogQWxwaGEg
Y29tcG9zaXRpbmcgYW5kIGJsZW5kaW5nIHdpbGwgY29tZSBoZXJlIGFmdGVyIG1peCgpIGZ1bmN0
aW9uIHBhcnNpbmcgd2lsbCBsYW5kLgotICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD05MDEwMQorICAgIEN1c3RvbUZpbHRlclByb2dyYW1NaXhTZXR0aW5ncyBt
X21peFNldHRpbmdzOwogfTsKIAogc3RydWN0IEN1c3RvbUZpbHRlclByb2dyYW1JbmZvSGFzaCB7
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>157779</attachid>
            <date>2012-08-10 11:46:16 -0700</date>
            <delta_ts>2012-08-10 15:16:08 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>93623-3.patch</filename>
            <type>text/plain</type>
            <size>8263</size>
            <attacher name="Max Vujovic">mvujovic</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA2ZjAwOTg4Li40OGY2ZmNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzgg
QEAKKzIwMTItMDgtMTAgIE1heCBWdWpvdmljICA8bXZ1am92aWNAYWRvYmUuY29tPgorCisgICAg
ICAgIFtDU1MgU2hhZGVyc10gQWRkIGJsZW5kIG1vZGUgYW5kIGNvbXBvc2l0ZSBvcCB0byBjb21w
aWxlZCBwcm9ncmFtIGNhY2hlIGtleQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9OTM2MjMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBSaWdodCBub3csIG9ubHkgdGhlIHZlcnRleCBzaGFkZXIgc3RyaW5nIGFu
ZCB0aGUgZnJhZ21lbnQgc2hhZGVyIHN0cmluZyBhcmUgaGFzaGVkCisgICAgICAgIHRvIGNyZWF0
ZSBhIGtleSBmb3IgdGhlIGNvbXBpbGVkIHByb2dyYW0uIEhvd2V2ZXIsIGluIGEgZnV0dXJlIHBh
dGNoLCBXZWJLaXQgd2lsbAorICAgICAgICByZXdyaXRlIHRoZSBmcmFnbWVudCBzaGFkZXIgYmFz
ZWQgb24gdGhlIGJsZW5kIG1vZGUgYW5kIGNvbXBvc2l0ZSBvcCBzcGVjaWZpZWQgYnkKKyAgICAg
ICAgdGhlIGF1dGhvci4gVGhpcyBtZWFucyB0aGF0IHRoZSB1bmlxdWUga2V5IGZvciBhIGNvbXBp
bGVkIHByb2dyYW0gaXMgKG9yaWdpbmFsCisgICAgICAgIHZlcnRleCBzaGFkZXIgc3RyaW5nLCBv
cmlnaW5hbCBmcmFnbWVudCBzaGFkZXIgc3RyaW5nLCBibGVuZCBtb2RlLCBjb21wb3NpdGUKKyAg
ICAgICAgb3BlcmF0b3IpLiBUaGlzIHBhdGNoIGFkZHMgYmxlbmQgbW9kZSBhbmQgY29tcG9zaXRl
IG9wZXJhdG9yIGluIHRoZSBoYXNoIGZvciB0aGUKKyAgICAgICAga2V5LgorCisgICAgICAgIE5v
IG5ldyB0ZXN0cy4gVGhlIHN0YXRlIG9mIHRoZSBjb21waWxlZCBwcm9ncmFtIGNhY2hlIGlzIG5v
dCBleHBvc2VkIHRvIGEgd2ViCisgICAgICAgIHBhZ2UuIEV4aXN0aW5nIHRlc3RzIHNob3VsZCBl
bnN1cmUgdGhpcyBjaGFuZ2UgZG9lc24ndCBicmVhayBjdXJyZW50CisgICAgICAgIGZ1bmN0aW9u
YWxpdHkuIEFkZGl0aW9uYWwgdGVzdHMgd2lsbCBiZSBhZGRlZCBpbiBhIGZ1dHVyZSBwYXRjaCB0
aGF0IGltcGxlbWVudHMKKyAgICAgICAgc2hhZGVyIHJld3JpdGluZyBiYXNlZCBvbiBibGVuZCBt
b2RlIGFuZCBjb21wb3NpdGUgb3AuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0
ZXJzL0N1c3RvbUZpbHRlclByb2dyYW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q3VzdG9tRmls
dGVyUHJvZ3JhbTo6cHJvZ3JhbUluZm8pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Zp
bHRlcnMvQ3VzdG9tRmlsdGVyUHJvZ3JhbS5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21GaWx0ZXJQcm9ncmFtSW5mby5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpDdXN0b21GaWx0ZXJQcm9ncmFtSW5mbzo6Q3VzdG9tRmlsdGVy
UHJvZ3JhbUluZm8pOgorICAgICAgICAoV2ViQ29yZTo6Q3VzdG9tRmlsdGVyUHJvZ3JhbUluZm86
Omhhc2gpOgorICAgICAgICAoV2ViQ29yZTo6Q3VzdG9tRmlsdGVyUHJvZ3JhbUluZm86Om9wZXJh
dG9yPT0pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVy
UHJvZ3JhbUluZm8uaDoKKyAgICAgICAgKFdlYkNvcmU6OkN1c3RvbUZpbHRlclByb2dyYW1NaXhT
ZXR0aW5nczo6Q3VzdG9tRmlsdGVyUHJvZ3JhbU1peFNldHRpbmdzKToKKyAgICAgICAgKEN1c3Rv
bUZpbHRlclByb2dyYW1NaXhTZXR0aW5ncyk6CisgICAgICAgIChXZWJDb3JlOjpDdXN0b21GaWx0
ZXJQcm9ncmFtTWl4U2V0dGluZ3M6Om9wZXJhdG9yPT0pOgorICAgICAgICAoV2ViQ29yZSk6Cisg
ICAgICAgIChDdXN0b21GaWx0ZXJQcm9ncmFtSW5mbyk6CisKIDIwMTItMDgtMTAgIERhbiBCZXJu
c3RlaW4gIDxtaXR6QGFwcGxlLmNvbT4KIAogICAgICAgICBSZW5hbWVkIHRoZSDigJxNb2R1bGVz
L3dlYmF1ZGlv4oCdIGdyb3VwIGluIHRoZSBYY29kZSBwcm9qZWN0IHRvIOKAnHdlYmF1ZGlv4oCd
IGFuZCBtb3ZlZCBpdCBpbnRvCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9maWx0ZXJzL0N1c3RvbUZpbHRlclByb2dyYW0uY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21GaWx0ZXJQcm9ncmFtLmNwcAppbmRleCA4
NTNlNTEzLi5kMWNmNjEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9maWx0ZXJzL0N1c3RvbUZpbHRlclByb2dyYW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVyUHJvZ3JhbS5jcHAKQEAgLTgx
LDcgKzgxLDcgQEAgdm9pZCBDdXN0b21GaWx0ZXJQcm9ncmFtOjpub3RpZnlDbGllbnRzKCkKIEN1
c3RvbUZpbHRlclByb2dyYW1JbmZvIEN1c3RvbUZpbHRlclByb2dyYW06OnByb2dyYW1JbmZvKCkg
Y29uc3QKIHsKICAgICBBU1NFUlQoaXNMb2FkZWQoKSk7Ci0gICAgcmV0dXJuIEN1c3RvbUZpbHRl
clByb2dyYW1JbmZvKHZlcnRleFNoYWRlclN0cmluZygpLCBmcmFnbWVudFNoYWRlclN0cmluZygp
KTsKKyAgICByZXR1cm4gQ3VzdG9tRmlsdGVyUHJvZ3JhbUluZm8odmVydGV4U2hhZGVyU3RyaW5n
KCksIGZyYWdtZW50U2hhZGVyU3RyaW5nKCksIG1fbWl4U2V0dGluZ3MpOwogfQogCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9maWx0ZXJzL0N1c3RvbUZpbHRlclByb2dyYW0uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVyUHJvZ3JhbS5oCmluZGV4IGY3ZGExODgu
LmVmMTlkZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Zp
bHRlcnMvQ3VzdG9tRmlsdGVyUHJvZ3JhbS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVyUHJvZ3JhbS5oCkBAIC0zMiw3ICszMiw3IEBA
CiAKICNpZiBFTkFCTEUoQ1NTX1NIQURFUlMpCiAKLSNpbmNsdWRlICJHcmFwaGljc1R5cGVzLmgi
CisjaW5jbHVkZSAiQ3VzdG9tRmlsdGVyUHJvZ3JhbUluZm8uaCIKIAogI2luY2x1ZGUgPHd0Zi9I
YXNoQ291bnRlZFNldC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CkBAIC00MywyMCAr
NDMsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBHcmFwaGljc0NvbnRleHQzRDsKIGNs
YXNzIEN1c3RvbUZpbHRlckNvbXBpbGVkUHJvZ3JhbTsKIGNsYXNzIEN1c3RvbUZpbHRlclByb2dy
YW1DbGllbnQ7Ci1jbGFzcyBDdXN0b21GaWx0ZXJQcm9ncmFtSW5mbzsKLQotdHlwZWRlZiBzdHJ1
Y3QgQ3VzdG9tRmlsdGVyUHJvZ3JhbU1peFNldHRpbmdzIHsKLSAgICBDdXN0b21GaWx0ZXJQcm9n
cmFtTWl4U2V0dGluZ3MoKQotICAgICAgICA6IGVuYWJsZWQoZmFsc2UpCi0gICAgICAgICwgYmxl
bmRNb2RlKEJsZW5kTW9kZU5vcm1hbCkKLSAgICAgICAgLCBjb21wb3NpdGVPcGVyYXRvcihDb21w
b3NpdGVTb3VyY2VPdmVyKQotICAgIHsKLSAgICB9Ci0gICAgCi0gICAgYm9vbCBlbmFibGVkOwot
ICAgIEJsZW5kTW9kZSBibGVuZE1vZGU7Ci0gICAgQ29tcG9zaXRlT3BlcmF0b3IgY29tcG9zaXRl
T3BlcmF0b3I7Ci19IEN1c3RvbUZpbHRlclByb2dyYW1NaXhTZXR0aW5nczsKIAogLy8gVGhpcyBp
cyB0aGUgYmFzZSBjbGFzcyBmb3IgdGhlIFN0eWxlQ3VzdG9tRmlsdGVyUHJvZ3JhbSBjbGFzcyB3
aGljaCBrbm93cyBob3cgdG8ga2VlcAogLy8gcmVmZXJlbmNlcyB0byB0aGUgY2FjaGVkIHNoYWRl
cnMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJz
L0N1c3RvbUZpbHRlclByb2dyYW1JbmZvLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVyUHJvZ3JhbUluZm8uY3BwCmluZGV4IGJjN2M5ZTku
LjFiZjZhOTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Zp
bHRlcnMvQ3VzdG9tRmlsdGVyUHJvZ3JhbUluZm8uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVyUHJvZ3JhbUluZm8uY3BwCkBAIC02
NCwxOSArNjQsMjcgQEAgYm9vbCBDdXN0b21GaWx0ZXJQcm9ncmFtSW5mbzo6aXNIYXNoVGFibGVE
ZWxldGVkVmFsdWUoKSBjb25zdAogICAgICAgICAmJiBtX2ZyYWdtZW50U2hhZGVyU3RyaW5nLmlz
SGFzaFRhYmxlRGVsZXRlZFZhbHVlKCk7CiB9CiAKLUN1c3RvbUZpbHRlclByb2dyYW1JbmZvOjpD
dXN0b21GaWx0ZXJQcm9ncmFtSW5mbyhjb25zdCBTdHJpbmcmIHZlcnRleFNoYWRlciwgY29uc3Qg
U3RyaW5nJiBmcmFnbWVudFNoYWRlcikKK0N1c3RvbUZpbHRlclByb2dyYW1JbmZvOjpDdXN0b21G
aWx0ZXJQcm9ncmFtSW5mbyhjb25zdCBTdHJpbmcmIHZlcnRleFNoYWRlciwgY29uc3QgU3RyaW5n
JiBmcmFnbWVudFNoYWRlciwgY29uc3QgQ3VzdG9tRmlsdGVyUHJvZ3JhbU1peFNldHRpbmdzJiBt
aXhTZXR0aW5ncykKICAgICA6IG1fdmVydGV4U2hhZGVyU3RyaW5nKHZlcnRleFNoYWRlcikKICAg
ICAsIG1fZnJhZ21lbnRTaGFkZXJTdHJpbmcoZnJhZ21lbnRTaGFkZXIpCisgICAgLCBtX21peFNl
dHRpbmdzKG1peFNldHRpbmdzKQogewogICAgIC8vIEF0IGxlYXN0IG9uZSBvZiB0aGUgc2hhZGVy
cyBuZWVkcyB0byBiZSBub24tbnVsbC4KICAgICBBU1NFUlQoIW1fdmVydGV4U2hhZGVyU3RyaW5n
LmlzTnVsbCgpIHx8ICFtX2ZyYWdtZW50U2hhZGVyU3RyaW5nLmlzTnVsbCgpKTsKIH0KIAotdW5z
aWduZWQgQ3VzdG9tRmlsdGVyUHJvZ3JhbUluZm86Omhhc2goKSBjb25zdCAKK3Vuc2lnbmVkIEN1
c3RvbUZpbHRlclByb2dyYW1JbmZvOjpoYXNoKCkgY29uc3QKIHsKICAgICAvLyBBdCBsZWFzdCBv
bmUgb2YgdGhlIHNoYWRlcnMgbmVlZHMgdG8gYmUgbm9uLW51bGwuCiAgICAgQVNTRVJUKCFtX3Zl
cnRleFNoYWRlclN0cmluZy5pc051bGwoKSB8fCAhbV9mcmFnbWVudFNoYWRlclN0cmluZy5pc051
bGwoKSk7Ci0gICAgcmV0dXJuIFdURjo6aW50SGFzaCgoc3RhdGljX2Nhc3Q8dWludDY0X3Q+KGhh
c2hQb3NzaWJseU51bGxTdHJpbmcobV92ZXJ0ZXhTaGFkZXJTdHJpbmcpKSA8PCAzMiB8IGhhc2hQ
b3NzaWJseU51bGxTdHJpbmcobV9mcmFnbWVudFNoYWRlclN0cmluZykpKTsKKyAgICB1aW50cHRy
X3QgaGFzaENvZGVzWzVdID0geworICAgICAgICBoYXNoUG9zc2libHlOdWxsU3RyaW5nKG1fdmVy
dGV4U2hhZGVyU3RyaW5nKSwKKyAgICAgICAgaGFzaFBvc3NpYmx5TnVsbFN0cmluZyhtX2ZyYWdt
ZW50U2hhZGVyU3RyaW5nKSwKKyAgICAgICAgbV9taXhTZXR0aW5ncy5lbmFibGVkLAorICAgICAg
ICBtX21peFNldHRpbmdzLmVuYWJsZWQgPyBtX21peFNldHRpbmdzLmJsZW5kTW9kZSA6IDAsCisg
ICAgICAgIG1fbWl4U2V0dGluZ3MuZW5hYmxlZCA/IG1fbWl4U2V0dGluZ3MuY29tcG9zaXRlT3Bl
cmF0b3IgOiAwCisgICAgfTsKKyAgICByZXR1cm4gU3RyaW5nSGFzaGVyOjpoYXNoTWVtb3J5PHNp
emVvZihoYXNoQ29kZXMpPigmaGFzaENvZGVzKTsKIH0KIAogYm9vbCBDdXN0b21GaWx0ZXJQcm9n
cmFtSW5mbzo6b3BlcmF0b3I9PShjb25zdCBDdXN0b21GaWx0ZXJQcm9ncmFtSW5mbyYgbykgY29u
c3QgCkBAIC04NCw3ICs5Miw4IEBAIGJvb2wgQ3VzdG9tRmlsdGVyUHJvZ3JhbUluZm86Om9wZXJh
dG9yPT0oY29uc3QgQ3VzdG9tRmlsdGVyUHJvZ3JhbUluZm8mIG8pIGNvbnN0CiAgICAgQVNTRVJU
KCFpc0hhc2hUYWJsZURlbGV0ZWRWYWx1ZSgpKTsKICAgICBBU1NFUlQoIW8uaXNIYXNoVGFibGVE
ZWxldGVkVmFsdWUoKSk7CiAgICAgcmV0dXJuIG1fdmVydGV4U2hhZGVyU3RyaW5nID09IG8ubV92
ZXJ0ZXhTaGFkZXJTdHJpbmcKLSAgICAgICAgJiYgbV9mcmFnbWVudFNoYWRlclN0cmluZyA9PSBv
Lm1fZnJhZ21lbnRTaGFkZXJTdHJpbmc7CisgICAgICAgICYmIG1fZnJhZ21lbnRTaGFkZXJTdHJp
bmcgPT0gby5tX2ZyYWdtZW50U2hhZGVyU3RyaW5nCisgICAgICAgICYmIG1fbWl4U2V0dGluZ3Mg
PT0gby5tX21peFNldHRpbmdzOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0N1c3RvbUZpbHRl
clByb2dyYW1JbmZvLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJz
L0N1c3RvbUZpbHRlclByb2dyYW1JbmZvLmgKaW5kZXggZTg5ZTlmNS4uZTFmNDU1OSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21GaWx0
ZXJQcm9ncmFtSW5mby5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Zp
bHRlcnMvQ3VzdG9tRmlsdGVyUHJvZ3JhbUluZm8uaApAQCAtMzEsMTcgKzMxLDM4IEBACiAjZGVm
aW5lIEN1c3RvbUZpbHRlclByb2dyYW1JbmZvX2gKIAogI2lmIEVOQUJMRShDU1NfU0hBREVSUykK
KyNpbmNsdWRlICJHcmFwaGljc1R5cGVzLmgiCisKICNpbmNsdWRlIDx3dGYvSGFzaFRyYWl0cy5o
PgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKK3N0cnVjdCBDdXN0b21GaWx0ZXJQcm9ncmFtTWl4U2V0dGluZ3MgeworICAgIEN1c3RvbUZp
bHRlclByb2dyYW1NaXhTZXR0aW5ncygpCisgICAgICAgIDogZW5hYmxlZChmYWxzZSkKKyAgICAg
ICAgLCBibGVuZE1vZGUoQmxlbmRNb2RlTm9ybWFsKQorICAgICAgICAsIGNvbXBvc2l0ZU9wZXJh
dG9yKENvbXBvc2l0ZVNvdXJjZU92ZXIpCisgICAgeworICAgIH0KKyAgICAKKyAgICBib29sIG9w
ZXJhdG9yPT0oY29uc3QgQ3VzdG9tRmlsdGVyUHJvZ3JhbU1peFNldHRpbmdzJiBvKSBjb25zdAor
ICAgIHsKKyAgICAgICAgcmV0dXJuICghZW5hYmxlZCAmJiAhby5lbmFibGVkKQorICAgICAgICAg
ICAgfHwgKGJsZW5kTW9kZSA9PSBvLmJsZW5kTW9kZSAmJiBjb21wb3NpdGVPcGVyYXRvciA9PSBv
LmNvbXBvc2l0ZU9wZXJhdG9yKTsKKyAgICB9CisgICAgCisgICAgYm9vbCBlbmFibGVkOworICAg
IEJsZW5kTW9kZSBibGVuZE1vZGU7CisgICAgQ29tcG9zaXRlT3BlcmF0b3IgY29tcG9zaXRlT3Bl
cmF0b3I7Cit9OworCiAvLyBDdXN0b21GaWx0ZXJQcm9ncmFtSW5mbyBpcyB0aGUga2V5IHVzZWQg
dG8gbGluayBDdXN0b21GaWx0ZXJQcm9ncmFtIHdpdGggQ3VzdG9tRmlsdGVyQ29tcGlsZWRQcm9n
cmFtLgogLy8gSXQgY2FuIGJlIHVzZWQgYXMgYSBrZXkgaW4gYSBIYXNoTWFwLCB3aXRoIHRoZSBu
b3RlIHRoYXQgYXQgbGVhc3Qgb25lIG9mIFN0cmluZ3MgbmVlZHMgdG8gYmUgbm9uLW51bGwuIAog
Ly8gTnVsbCBzdHJpbmdzIGFyZSBwbGFjZWhvbGRlcnMgZm9yIHRoZSBkZWZhdWx0IHNoYWRlci4K
IGNsYXNzIEN1c3RvbUZpbHRlclByb2dyYW1JbmZvIHsKIHB1YmxpYzoKLSAgICBDdXN0b21GaWx0
ZXJQcm9ncmFtSW5mbyhjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmKTsKKyAgICBDdXN0b21G
aWx0ZXJQcm9ncmFtSW5mbyhjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBjb25zdCBDdXN0
b21GaWx0ZXJQcm9ncmFtTWl4U2V0dGluZ3MmKTsKIAogICAgIEN1c3RvbUZpbHRlclByb2dyYW1J
bmZvKCk7CiAgICAgYm9vbCBpc0VtcHR5VmFsdWUoKSBjb25zdDsKQEAgLTU3LDkgKzc4LDcgQEAg
cHVibGljOgogcHJpdmF0ZToKICAgICBTdHJpbmcgbV92ZXJ0ZXhTaGFkZXJTdHJpbmc7CiAgICAg
U3RyaW5nIG1fZnJhZ21lbnRTaGFkZXJTdHJpbmc7Ci0KLSAgICAvLyBGSVhNRTogQWxwaGEgY29t
cG9zaXRpbmcgYW5kIGJsZW5kaW5nIHdpbGwgY29tZSBoZXJlIGFmdGVyIG1peCgpIGZ1bmN0aW9u
IHBhcnNpbmcgd2lsbCBsYW5kLgotICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD05MDEwMQorICAgIEN1c3RvbUZpbHRlclByb2dyYW1NaXhTZXR0aW5ncyBtX21p
eFNldHRpbmdzOwogfTsKIAogc3RydWN0IEN1c3RvbUZpbHRlclByb2dyYW1JbmZvSGFzaCB7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>