<?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>96448</bug_id>
          
          <creation_ts>2012-09-11 16:34:25 -0700</creation_ts>
          <short_desc>[CSS Shaders] Add CustomFilterProgramType to CustomFilterProgramInfo</short_desc>
          <delta_ts>2012-10-15 14:24:00 -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>71392</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Max Vujovic">mvujovic</reporter>
          <assigned_to name="Michelangelo De Simone">michelangelo</assigned_to>
          <cc>achicu</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>dino</cc>
    
    <cc>eric</cc>
    
    <cc>jchaffraix</cc>
    
    <cc>kenneth</cc>
    
    <cc>kling</cc>
    
    <cc>macpherson</cc>
    
    <cc>menard</cc>
    
    <cc>michelangelo</cc>
    
    <cc>mvujovic</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>717712</commentid>
    <comment_count>0</comment_count>
    <who name="Max Vujovic">mvujovic</who>
    <bug_when>2012-09-11 16:34:25 -0700</bug_when>
    <thetext>In the CSS Shaders implementation, we frequently make a decision based on programInfo.mixSettings.enabled. It would be nice if we used a CustomFilterProgramType enum in CustomFilterProgramInfo instead. Then, we could remove mixSettings.enabled. The enum would look something like:

enum CustomFilterProgramType {
    PROGRAM_TYPE_NO_ELEMENT_TEXTURE,
    PROGRAM_TYPE_BLENDS_ELEMENT_TEXTURE
}</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>739365</commentid>
    <comment_count>1</comment_count>
      <attachid>168083</attachid>
    <who name="Michelangelo De Simone">michelangelo</who>
    <bug_when>2012-10-10 16:08:23 -0700</bug_when>
    <thetext>Created attachment 168083
Not for review</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>739398</commentid>
    <comment_count>2</comment_count>
      <attachid>168083</attachid>
    <who name="Max Vujovic">mvujovic</who>
    <bug_when>2012-10-10 16:48:14 -0700</bug_when>
    <thetext>Comment on attachment 168083
Not for review

Looks good! Here&apos;s my informal review- just a couple of nits.

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

&gt; Source/WebCore/ChangeLog:8
&gt; +        Refactor of CustomFilterProgramInfo: MixSettings and related program type

Can you be more specific? For example:
Remove CustomFilterProgramMixSettings.enabled and check against CustomFilterProgram.programType() instead. Add m_programType to CustomFilterProgram and CustomFilterProgramInfo.

&gt; Source/WebCore/css/CSSComputedStyleDeclaration.cpp:925
&gt; +            if (isMixEnabled) {

I would put the boolean expression in here without the extra variable.

&gt; Source/WebCore/platform/graphics/filters/CustomFilterProgram.cpp:41
&gt; +CustomFilterProgram::CustomFilterProgram(CustomFilterProgramType programType, CustomFilterProgramMixSettings mixSettings)

While you&apos;re touching this line, can you make CustomFilterProgramMixSettings a const reference?

&gt; Source/WebCore/platform/graphics/filters/CustomFilterProgram.h:78
&gt; +    CustomFilterProgram(CustomFilterProgramType, CustomFilterProgramMixSettings);

Ditto.

&gt; Source/WebCore/platform/graphics/filters/CustomFilterProgramInfo.cpp:84
&gt; +        m_programType == PROGRAM_TYPE_BLENDS_ELEMENT_TEXTURE,

Can you factor out this expression as a local boolean since we check it multiple times? Maybe like this:
bool blendsElementTexture = (m_programType == PROGRAM_TYPE_BLENDS_ELEMENT_TEXTURE);

&gt; Source/WebCore/platform/graphics/filters/CustomFilterProgramInfo.cpp:98
&gt;          &amp;&amp; m_mixSettings == o.m_mixSettings;

We should only check m_mixSettings for equality if m_programType is PROGRAM_TYPE_BLENDS_ELEMENT_TEXTURE.

&gt; Source/WebCore/platform/graphics/filters/CustomFilterValidatedProgram.cpp:86
&gt; +    bool isMixEnabled = programInfo.programType() == PROGRAM_TYPE_BLENDS_ELEMENT_TEXTURE;

Instead of &quot;isMixEnabled&quot;, can we call this boolean &quot;blendsElementTexture&quot;?

&gt; Source/WebCore/rendering/style/StyleCustomFilterProgram.h:48
&gt; +    static PassRefPtr&lt;StyleCustomFilterProgram&gt; create(PassRefPtr&lt;StyleShader&gt; vertexShader, PassRefPtr&lt;StyleShader&gt; fragmentShader, CustomFilterProgramType programType, CustomFilterProgramMixSettings mixSettings)

const CustomFilterProgramMixSettings&amp;

&gt; Source/WebCore/rendering/style/StyleCustomFilterProgram.h:129
&gt; +    StyleCustomFilterProgram(PassRefPtr&lt;StyleShader&gt; vertexShader, PassRefPtr&lt;StyleShader&gt; fragmentShader, CustomFilterProgramType programType, CustomFilterProgramMixSettings mixSettings)

const CustomFilterProgramMixSettings&amp;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>740369</commentid>
    <comment_count>3</comment_count>
      <attachid>168304</attachid>
    <who name="Michelangelo De Simone">michelangelo</who>
    <bug_when>2012-10-11 16:09:34 -0700</bug_when>
    <thetext>Created attachment 168304
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>740381</commentid>
    <comment_count>4</comment_count>
      <attachid>168304</attachid>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2012-10-11 16:14:35 -0700</bug_when>
    <thetext>Comment on attachment 168304
Patch

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

&gt; Source/WebCore/ChangeLog:11
&gt; +        CustomFilterProgramInfo has been refactored to decouple the CustomFilterProgramType from
&gt; +        the CustomFilterProgramMixSettings, therefore CustomFilterProgramSettings.enabled has been
&gt; +        removed, now we explicitely check for the programType(). m_program has also been added to
&gt; +        CustomFilterProgram (and CustomFilterProgramInfo).

would be good if you told why, and why this is an improvement, instead of what you just did

&gt; Source/WebCore/ChangeLog:13
&gt; +        No test necessary. 

Why? covered by existing tests? Just refactoring?

&gt; Source/WebCore/ChangeLog:38
&gt; +        * css/CSSComputedStyleDeclaration.cpp:
&gt; +        (WebCore::CSSComputedStyleDeclaration::valueForFilter):
&gt; +        * css/StyleResolver.cpp:
&gt; +        (WebCore::StyleResolver::createCustomFilterOperation):
&gt; +        * platform/graphics/filters/CustomFilterProgram.cpp:
&gt; +        (WebCore::CustomFilterProgram::CustomFilterProgram):
&gt; +        (WebCore::CustomFilterProgram::programInfo):
&gt; +        * platform/graphics/filters/CustomFilterProgram.h:
&gt; +        * platform/graphics/filters/CustomFilterProgramInfo.cpp:
&gt; +        (WebCore::CustomFilterProgramInfo::CustomFilterProgramInfo):
&gt; +        (WebCore::CustomFilterProgramInfo::hash):
&gt; +        (WebCore::CustomFilterProgramInfo::operator==):
&gt; +        * platform/graphics/filters/CustomFilterProgramInfo.h:
&gt; +        (WebCore::CustomFilterProgramMixSettings::CustomFilterProgramMixSettings):
&gt; +        (WebCore::CustomFilterProgramMixSettings::operator==):
&gt; +        (CustomFilterProgramInfo):
&gt; +        (WebCore::CustomFilterProgramInfo::programType):
&gt; +        * platform/graphics/filters/CustomFilterValidatedProgram.cpp:
&gt; +        (WebCore::CustomFilterValidatedProgram::CustomFilterValidatedProgram):
&gt; +        (WebCore::CustomFilterValidatedProgram::rewriteMixVertexShader):
&gt; +        (WebCore::CustomFilterValidatedProgram::rewriteMixFragmentShader):
&gt; +        * rendering/style/StyleCustomFilterProgram.h:
&gt; +        (WebCore::StyleCustomFilterProgram::create):
&gt; +        (WebCore::StyleCustomFilterProgram::StyleCustomFilterProgram):

Some times it can be good adding more detailed comments here</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>740394</commentid>
    <comment_count>5</comment_count>
      <attachid>168304</attachid>
    <who name="Max Vujovic">mvujovic</who>
    <bug_when>2012-10-11 16:29:07 -0700</bug_when>
    <thetext>Comment on attachment 168304
Patch

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

&gt; Source/WebCore/ChangeLog:10
&gt; +        removed, now we explicitely check for the programType(). m_program has also been added to

Nit: I think you meant &quot;m_programType&quot;, not &quot;m_program&quot;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>741270</commentid>
    <comment_count>6</comment_count>
      <attachid>168498</attachid>
    <who name="Michelangelo De Simone">michelangelo</who>
    <bug_when>2012-10-12 15:34:25 -0700</bug_when>
    <thetext>Created attachment 168498
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>741871</commentid>
    <comment_count>7</comment_count>
      <attachid>168498</attachid>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2012-10-15 02:15:08 -0700</bug_when>
    <thetext>Comment on attachment 168498
Patch

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

LGTM but others might have comments

&gt; Source/WebCore/ChangeLog:23
&gt; +        reflect the need of setting the program type explicitely.

spelling

&gt; Source/WebCore/ChangeLog:25
&gt; +        type explicitely.

explicitly*

&gt; Source/WebCore/ChangeLog:30
&gt; +        (WebCore::CustomFilterProgramInfo::operator==): MixSetings&apos; equality check is being performed only whether

Settings*</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>742112</commentid>
    <comment_count>8</comment_count>
    <who name="Michelangelo De Simone">michelangelo</who>
    <bug_when>2012-10-15 09:37:38 -0700</bug_when>
    <thetext>(In reply to comment #7)

&gt; LGTM but others might have comments

Cool, thanks a lot!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>742115</commentid>
    <comment_count>9</comment_count>
      <attachid>168729</attachid>
    <who name="Michelangelo De Simone">michelangelo</who>
    <bug_when>2012-10-15 09:39:40 -0700</bug_when>
    <thetext>Created attachment 168729
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>742447</commentid>
    <comment_count>10</comment_count>
      <attachid>168729</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-10-15 14:23:56 -0700</bug_when>
    <thetext>Comment on attachment 168729
Patch for landing

Clearing flags on attachment: 168729

Committed r131357: &lt;http://trac.webkit.org/changeset/131357&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>742448</commentid>
    <comment_count>11</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-10-15 14:24:00 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>168083</attachid>
            <date>2012-10-10 16:08:23 -0700</date>
            <delta_ts>2012-10-11 16:09:32 -0700</delta_ts>
            <desc>Not for review</desc>
            <filename>bug-96448-20121010160722.patch</filename>
            <type>text/plain</type>
            <size>16319</size>
            <attacher name="Michelangelo De Simone">michelangelo</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMwOTc1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTgyMzA2YjZlOWY2OGQx
NGU4ZjY5YWY1OWMxOWIwYTc0MWJhNDhkYS4uMWNjY2JjNWEzZDVkMjA0ZmVkNDY5OWJiOGEyMzIy
ZDhjMDUxZmY4MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQwIEBACisyMDEyLTEwLTEwICBNaWNo
ZWxhbmdlbG8gRGUgU2ltb25lICA8bWljaGVsYW5nZWxvQHdlYmtpdC5vcmc+CisKKyAgICAgICAg
W0NTUyBTaGFkZXJzXSBBZGQgQ3VzdG9tRmlsdGVyUHJvZ3JhbVR5cGUgdG8gQ3VzdG9tRmlsdGVy
UHJvZ3JhbUluZm8KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTk2NDQ4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgUmVmYWN0b3Igb2YgQ3VzdG9tRmlsdGVyUHJvZ3JhbUluZm86IE1peFNldHRpbmdzIGFuZCBy
ZWxhdGVkIHByb2dyYW0gdHlwZQorICAgICAgICBoYXZlIGJlZW4gZGVjb3VwbGVkLgorCisgICAg
ICAgIE5vIHRlc3QgbmVjZXNzYXJ5LiAKKworICAgICAgICAqIGNzcy9DU1NDb21wdXRlZFN0eWxl
RGVjbGFyYXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTQ29tcHV0ZWRTdHlsZURlY2xh
cmF0aW9uOjp2YWx1ZUZvckZpbHRlcik6CisgICAgICAgICogY3NzL1N0eWxlUmVzb2x2ZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVSZXNvbHZlcjo6Y3JlYXRlQ3VzdG9tRmlsdGVyT3Bl
cmF0aW9uKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0N1c3RvbUZpbHRl
clByb2dyYW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q3VzdG9tRmlsdGVyUHJvZ3JhbTo6Q3Vz
dG9tRmlsdGVyUHJvZ3JhbSk6CisgICAgICAgIChXZWJDb3JlOjpDdXN0b21GaWx0ZXJQcm9ncmFt
Ojpwcm9ncmFtSW5mbyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0
b21GaWx0ZXJQcm9ncmFtLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9D
dXN0b21GaWx0ZXJQcm9ncmFtSW5mby5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDdXN0b21GaWx0
ZXJQcm9ncmFtSW5mbzo6Q3VzdG9tRmlsdGVyUHJvZ3JhbUluZm8pOgorICAgICAgICAoV2ViQ29y
ZTo6Q3VzdG9tRmlsdGVyUHJvZ3JhbUluZm86Omhhc2gpOgorICAgICAgICAoV2ViQ29yZTo6Q3Vz
dG9tRmlsdGVyUHJvZ3JhbUluZm86Om9wZXJhdG9yPT0pOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVyUHJvZ3JhbUluZm8uaDoKKyAgICAgICAgKFdlYkNv
cmU6OkN1c3RvbUZpbHRlclByb2dyYW1NaXhTZXR0aW5nczo6Q3VzdG9tRmlsdGVyUHJvZ3JhbU1p
eFNldHRpbmdzKToKKyAgICAgICAgKFdlYkNvcmU6OkN1c3RvbUZpbHRlclByb2dyYW1NaXhTZXR0
aW5nczo6b3BlcmF0b3I9PSk6CisgICAgICAgIChDdXN0b21GaWx0ZXJQcm9ncmFtSW5mbyk6Cisg
ICAgICAgIChXZWJDb3JlOjpDdXN0b21GaWx0ZXJQcm9ncmFtSW5mbzo6cHJvZ3JhbVR5cGUpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVyVmFsaWRhdGVk
UHJvZ3JhbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDdXN0b21GaWx0ZXJWYWxpZGF0ZWRQcm9n
cmFtOjpDdXN0b21GaWx0ZXJWYWxpZGF0ZWRQcm9ncmFtKToKKyAgICAgICAgKFdlYkNvcmU6OkN1
c3RvbUZpbHRlclZhbGlkYXRlZFByb2dyYW06OnJld3JpdGVNaXhWZXJ0ZXhTaGFkZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6Q3VzdG9tRmlsdGVyVmFsaWRhdGVkUHJvZ3JhbTo6cmV3cml0ZU1peEZy
YWdtZW50U2hhZGVyKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvU3R5bGVDdXN0b21GaWx0
ZXJQcm9ncmFtLmg6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZUN1c3RvbUZpbHRlclByb2dyYW06
OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZUN1c3RvbUZpbHRlclByb2dyYW06OlN0
eWxlQ3VzdG9tRmlsdGVyUHJvZ3JhbSk6CisKIDIwMTItMTAtMTAgIEtlbmljaGkgSXNoaWJhc2hp
ICA8YmFzaGlAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIEZvbnRWZXJ0aWNhbERhdGFDYWNoZSBz
aG91bGQgYWxsb3cgemVybyBhcyBhIGtleSB2YWx1ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcAppbmRleCBhYWI4YWNiOTgzMWE0NjFl
MmJhNWM5MzgxNjZkMzU2ZTNjZWIxMTIyLi44NWJkZTAwNjQxYWQzNTE0YzM2ZGUzOWE3NDJkYzlk
YWNiMzY3MDdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ29tcHV0ZWRTdHls
ZURlY2xhcmF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ29tcHV0ZWRTdHls
ZURlY2xhcmF0aW9uLmNwcApAQCAtOTIwLDggKzkyMCw5IEBAIFBhc3NSZWZQdHI8Q1NTVmFsdWU+
IENTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbjo6dmFsdWVGb3JGaWx0ZXIoY29uc3QgUmVuZGVy
T2JqCiAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgc2hhZGVyc0xpc3QtPmFwcGVu
ZChjc3NWYWx1ZVBvb2woKS5jcmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NTVmFsdWVOb25lKSk7CiAK
KyAgICAgICAgICAgIGJvb2wgaXNNaXhFbmFibGVkID0gcHJvZ3JhbS0+cHJvZ3JhbUluZm8oKS5w
cm9ncmFtVHlwZSgpID09IFBST0dSQU1fVFlQRV9CTEVORFNfRUxFTUVOVF9URVhUVVJFOwogICAg
ICAgICAgICAgY29uc3QgQ3VzdG9tRmlsdGVyUHJvZ3JhbU1peFNldHRpbmdzIG1peFNldHRpbmdz
ID0gcHJvZ3JhbS0+bWl4U2V0dGluZ3MoKTsKLSAgICAgICAgICAgIGlmIChtaXhTZXR0aW5ncy5l
bmFibGVkKSB7CisgICAgICAgICAgICBpZiAoaXNNaXhFbmFibGVkKSB7CiAgICAgICAgICAgICAg
ICAgUmVmUHRyPFdlYktpdENTU01peEZ1bmN0aW9uVmFsdWU+IG1peEZ1bmN0aW9uID0gV2ViS2l0
Q1NTTWl4RnVuY3Rpb25WYWx1ZTo6Y3JlYXRlKCk7CiAgICAgICAgICAgICAgICAgbWl4RnVuY3Rp
b24tPmFwcGVuZChwcm9ncmFtLT5mcmFnbWVudFNoYWRlcigpLT5jc3NWYWx1ZSgpKTsKICAgICAg
ICAgICAgICAgICBtaXhGdW5jdGlvbi0+YXBwZW5kKGNzc1ZhbHVlUG9vbCgpLmNyZWF0ZVZhbHVl
KG1peFNldHRpbmdzLmJsZW5kTW9kZSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3Nz
L1N0eWxlUmVzb2x2ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuY3Bw
CmluZGV4IDJkOWNjZDU5ZGE1YzJkNTRiNmEyNGFmYzcyMWFlMmMwODliZDdlNmMuLjhiZjEyYzli
NTM0N2FiNjVlNmI4YWNhMDBmMDEzOGI5MzQ0OGQwYzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2Nzcy9TdHlsZVJlc29sdmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVS
ZXNvbHZlci5jcHAKQEAgLTQ3ODQsMTEgKzQ3ODQsMTIgQEAgUGFzc1JlZlB0cjxDdXN0b21GaWx0
ZXJPcGVyYXRpb24+IFN0eWxlUmVzb2x2ZXI6OmNyZWF0ZUN1c3RvbUZpbHRlck9wZXJhdGlvbihX
ZWIKICAgICBSZWZQdHI8U3R5bGVTaGFkZXI+IHZlcnRleFNoYWRlciA9IHN0eWxlU2hhZGVyKHNo
YWRlcnNMaXN0LT5pdGVtV2l0aG91dEJvdW5kc0NoZWNrKDApKTsKIAogICAgIFJlZlB0cjxTdHls
ZVNoYWRlcj4gZnJhZ21lbnRTaGFkZXI7CisgICAgQ3VzdG9tRmlsdGVyUHJvZ3JhbVR5cGUgcHJv
Z3JhbVR5cGUgPSBQUk9HUkFNX1RZUEVfTk9fRUxFTUVOVF9URVhUVVJFOwogICAgIEN1c3RvbUZp
bHRlclByb2dyYW1NaXhTZXR0aW5ncyBtaXhTZXR0aW5nczsKICAgICBpZiAoc2hhZGVyc0xpc3Qt
Pmxlbmd0aCgpID4gMSkgewogICAgICAgICBDU1NWYWx1ZSogZnJhZ21lbnRTaGFkZXJPck1peEZ1
bmN0aW9uID0gc2hhZGVyc0xpc3QtPml0ZW1XaXRob3V0Qm91bmRzQ2hlY2soMSk7CiAgICAgICAg
IGlmIChmcmFnbWVudFNoYWRlck9yTWl4RnVuY3Rpb24tPmlzV2ViS2l0Q1NTTWl4RnVuY3Rpb25W
YWx1ZSgpKSB7Ci0gICAgICAgICAgICBtaXhTZXR0aW5ncy5lbmFibGVkID0gdHJ1ZTsKKyAgICAg
ICAgICAgIHByb2dyYW1UeXBlID0gUFJPR1JBTV9UWVBFX0JMRU5EU19FTEVNRU5UX1RFWFRVUkU7
CiAgICAgICAgICAgICBXZWJLaXRDU1NNaXhGdW5jdGlvblZhbHVlKiBtaXhGdW5jdGlvbiA9IHN0
YXRpY19jYXN0PFdlYktpdENTU01peEZ1bmN0aW9uVmFsdWUqPihmcmFnbWVudFNoYWRlck9yTWl4
RnVuY3Rpb24pOwogICAgICAgICAgICAgQ1NTVmFsdWVMaXN0SXRlcmF0b3IgaXRlcmF0b3IobWl4
RnVuY3Rpb24pOwogCkBAIC00ODc4LDcgKzQ4NzksNyBAQCBQYXNzUmVmUHRyPEN1c3RvbUZpbHRl
ck9wZXJhdGlvbj4gU3R5bGVSZXNvbHZlcjo6Y3JlYXRlQ3VzdG9tRmlsdGVyT3BlcmF0aW9uKFdl
YgogICAgIGlmIChwYXJhbWV0ZXJzVmFsdWUgJiYgIXBhcnNlQ3VzdG9tRmlsdGVyUGFyYW1ldGVy
TGlzdChwYXJhbWV0ZXJzVmFsdWUsIHBhcmFtZXRlckxpc3QpKQogICAgICAgICByZXR1cm4gMDsK
ICAgICAKLSAgICBSZWZQdHI8U3R5bGVDdXN0b21GaWx0ZXJQcm9ncmFtPiBwcm9ncmFtID0gU3R5
bGVDdXN0b21GaWx0ZXJQcm9ncmFtOjpjcmVhdGUodmVydGV4U2hhZGVyLnJlbGVhc2UoKSwgZnJh
Z21lbnRTaGFkZXIucmVsZWFzZSgpLCBtaXhTZXR0aW5ncyk7CisgICAgUmVmUHRyPFN0eWxlQ3Vz
dG9tRmlsdGVyUHJvZ3JhbT4gcHJvZ3JhbSA9IFN0eWxlQ3VzdG9tRmlsdGVyUHJvZ3JhbTo6Y3Jl
YXRlKHZlcnRleFNoYWRlci5yZWxlYXNlKCksIGZyYWdtZW50U2hhZGVyLnJlbGVhc2UoKSwgcHJv
Z3JhbVR5cGUsIG1peFNldHRpbmdzKTsKICAgICByZXR1cm4gQ3VzdG9tRmlsdGVyT3BlcmF0aW9u
OjpjcmVhdGUocHJvZ3JhbS5yZWxlYXNlKCksIHBhcmFtZXRlckxpc3QsIG1lc2hSb3dzLCBtZXNo
Q29sdW1ucywgbWVzaEJveFR5cGUsIG1lc2hUeXBlKTsKIH0KICNlbmRpZgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21GaWx0ZXJQcm9n
cmFtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9t
RmlsdGVyUHJvZ3JhbS5jcHAKaW5kZXggOTRlODNkZjliODNiMmI1YjU0ZmU3NDdhN2UyYWZjYjQy
MjVlOWNmZC4uMjhiY2I4OTMzNzE1OWYzOWExZmRkMjIyODljMTJiOTMwNGJmMTEwNyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21GaWx0
ZXJQcm9ncmFtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0
ZXJzL0N1c3RvbUZpbHRlclByb2dyYW0uY3BwCkBAIC0zOCw4ICszOCw5IEBACiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAotQ3VzdG9tRmlsdGVyUHJvZ3JhbTo6Q3VzdG9tRmlsdGVyUHJvZ3JhbShD
dXN0b21GaWx0ZXJQcm9ncmFtTWl4U2V0dGluZ3MgbWl4U2V0dGluZ3MpCi0gICAgOiBtX21peFNl
dHRpbmdzKG1peFNldHRpbmdzKQorQ3VzdG9tRmlsdGVyUHJvZ3JhbTo6Q3VzdG9tRmlsdGVyUHJv
Z3JhbShDdXN0b21GaWx0ZXJQcm9ncmFtVHlwZSBwcm9ncmFtVHlwZSwgQ3VzdG9tRmlsdGVyUHJv
Z3JhbU1peFNldHRpbmdzIG1peFNldHRpbmdzKQorICAgIDogbV9wcm9ncmFtVHlwZShwcm9ncmFt
VHlwZSkKKyAgICAsIG1fbWl4U2V0dGluZ3MobWl4U2V0dGluZ3MpCiB7CiAgICAgLy8gS2VlcCB0
aGUgY29uc3RydWN0b3IgcHJvdGVjdGVkIHRvIHByZXZlbnQgY3JlYXRpbmcgdGhpcyBvYmplY3Qg
ZGlyZWN0bHkuCiB9CkBAIC04MSw3ICs4Miw3IEBAIHZvaWQgQ3VzdG9tRmlsdGVyUHJvZ3JhbTo6
bm90aWZ5Q2xpZW50cygpCiBDdXN0b21GaWx0ZXJQcm9ncmFtSW5mbyBDdXN0b21GaWx0ZXJQcm9n
cmFtOjpwcm9ncmFtSW5mbygpIGNvbnN0CiB7CiAgICAgQVNTRVJUKGlzTG9hZGVkKCkpOwotICAg
IHJldHVybiBDdXN0b21GaWx0ZXJQcm9ncmFtSW5mbyh2ZXJ0ZXhTaGFkZXJTdHJpbmcoKSwgZnJh
Z21lbnRTaGFkZXJTdHJpbmcoKSwgbV9taXhTZXR0aW5ncyk7CisgICAgcmV0dXJuIEN1c3RvbUZp
bHRlclByb2dyYW1JbmZvKHZlcnRleFNoYWRlclN0cmluZygpLCBmcmFnbWVudFNoYWRlclN0cmlu
ZygpLCBtX3Byb2dyYW1UeXBlLCBtX21peFNldHRpbmdzKTsKIH0KIAogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmls
dGVycy9DdXN0b21GaWx0ZXJQcm9ncmFtLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9maWx0ZXJzL0N1c3RvbUZpbHRlclByb2dyYW0uaAppbmRleCBlZjE5ZGZiODMwMmJjYzQ4
YTNmNmFhNTEyNWQzN2I4YTI2OWJkZDM3Li4wZmIxMDRiMTFmN2M0OTExNDEyNTFkMDQ4OGMxYjIz
ZWFlMzUxMDMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9m
aWx0ZXJzL0N1c3RvbUZpbHRlclByb2dyYW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9maWx0ZXJzL0N1c3RvbUZpbHRlclByb2dyYW0uaApAQCAtNzUsMTEgKzc1LDEy
IEBAIHByb3RlY3RlZDoKICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVtb3ZlTGFzdENsaWVudCgpID0g
MDsKIAogICAgIC8vIEtlZXAgdGhlIGNvbnN0cnVjdG9yIHByb3RlY3RlZCB0byBwcmV2ZW50IGNy
ZWF0aW5nIHRoaXMgb2JqZWN0IGRpcmVjdGx5LgotICAgIEN1c3RvbUZpbHRlclByb2dyYW0oQ3Vz
dG9tRmlsdGVyUHJvZ3JhbU1peFNldHRpbmdzKTsKKyAgICBDdXN0b21GaWx0ZXJQcm9ncmFtKEN1
c3RvbUZpbHRlclByb2dyYW1UeXBlLCBDdXN0b21GaWx0ZXJQcm9ncmFtTWl4U2V0dGluZ3MpOwog
CiBwcml2YXRlOgogICAgIHR5cGVkZWYgSGFzaENvdW50ZWRTZXQ8Q3VzdG9tRmlsdGVyUHJvZ3Jh
bUNsaWVudCo+IEN1c3RvbUZpbHRlclByb2dyYW1DbGllbnRMaXN0OwogICAgIEN1c3RvbUZpbHRl
clByb2dyYW1DbGllbnRMaXN0IG1fY2xpZW50czsKKyAgICBDdXN0b21GaWx0ZXJQcm9ncmFtVHlw
ZSBtX3Byb2dyYW1UeXBlOwogICAgIEN1c3RvbUZpbHRlclByb2dyYW1NaXhTZXR0aW5ncyBtX21p
eFNldHRpbmdzOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZmlsdGVycy9DdXN0b21GaWx0ZXJQcm9ncmFtSW5mby5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0N1c3RvbUZpbHRlclByb2dyYW1JbmZvLmNwcApp
bmRleCAxYmY2YTkxZjBkMmY2NjUzZGFiOGVhN2EyZGU1YjVhYTIwYmY4NGViLi42MGEwMzc2MGVj
NWZkZjMwOTY1MDNjODI0MjQwMDk0YmE3MDQ4MjBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0N1c3RvbUZpbHRlclByb2dyYW1JbmZvLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0N1c3RvbUZpbHRl
clByb2dyYW1JbmZvLmNwcApAQCAtNjQsOSArNjQsMTAgQEAgYm9vbCBDdXN0b21GaWx0ZXJQcm9n
cmFtSW5mbzo6aXNIYXNoVGFibGVEZWxldGVkVmFsdWUoKSBjb25zdAogICAgICAgICAmJiBtX2Zy
YWdtZW50U2hhZGVyU3RyaW5nLmlzSGFzaFRhYmxlRGVsZXRlZFZhbHVlKCk7CiB9CiAKLUN1c3Rv
bUZpbHRlclByb2dyYW1JbmZvOjpDdXN0b21GaWx0ZXJQcm9ncmFtSW5mbyhjb25zdCBTdHJpbmcm
IHZlcnRleFNoYWRlciwgY29uc3QgU3RyaW5nJiBmcmFnbWVudFNoYWRlciwgY29uc3QgQ3VzdG9t
RmlsdGVyUHJvZ3JhbU1peFNldHRpbmdzJiBtaXhTZXR0aW5ncykKK0N1c3RvbUZpbHRlclByb2dy
YW1JbmZvOjpDdXN0b21GaWx0ZXJQcm9ncmFtSW5mbyhjb25zdCBTdHJpbmcmIHZlcnRleFNoYWRl
ciwgY29uc3QgU3RyaW5nJiBmcmFnbWVudFNoYWRlciwgQ3VzdG9tRmlsdGVyUHJvZ3JhbVR5cGUg
cHJvZ3JhbVR5cGUsIGNvbnN0IEN1c3RvbUZpbHRlclByb2dyYW1NaXhTZXR0aW5ncyYgbWl4U2V0
dGluZ3MpCiAgICAgOiBtX3ZlcnRleFNoYWRlclN0cmluZyh2ZXJ0ZXhTaGFkZXIpCiAgICAgLCBt
X2ZyYWdtZW50U2hhZGVyU3RyaW5nKGZyYWdtZW50U2hhZGVyKQorICAgICwgbV9wcm9ncmFtVHlw
ZShwcm9ncmFtVHlwZSkKICAgICAsIG1fbWl4U2V0dGluZ3MobWl4U2V0dGluZ3MpCiB7CiAgICAg
Ly8gQXQgbGVhc3Qgb25lIG9mIHRoZSBzaGFkZXJzIG5lZWRzIHRvIGJlIG5vbi1udWxsLgpAQCAt
ODAsOSArODEsOSBAQCB1bnNpZ25lZCBDdXN0b21GaWx0ZXJQcm9ncmFtSW5mbzo6aGFzaCgpIGNv
bnN0CiAgICAgdWludHB0cl90IGhhc2hDb2Rlc1s1XSA9IHsKICAgICAgICAgaGFzaFBvc3NpYmx5
TnVsbFN0cmluZyhtX3ZlcnRleFNoYWRlclN0cmluZyksCiAgICAgICAgIGhhc2hQb3NzaWJseU51
bGxTdHJpbmcobV9mcmFnbWVudFNoYWRlclN0cmluZyksCi0gICAgICAgIG1fbWl4U2V0dGluZ3Mu
ZW5hYmxlZCwKLSAgICAgICAgbV9taXhTZXR0aW5ncy5lbmFibGVkID8gbV9taXhTZXR0aW5ncy5i
bGVuZE1vZGUgOiAwLAotICAgICAgICBtX21peFNldHRpbmdzLmVuYWJsZWQgPyBtX21peFNldHRp
bmdzLmNvbXBvc2l0ZU9wZXJhdG9yIDogMAorICAgICAgICBtX3Byb2dyYW1UeXBlID09IFBST0dS
QU1fVFlQRV9CTEVORFNfRUxFTUVOVF9URVhUVVJFLAorICAgICAgICBtX3Byb2dyYW1UeXBlID09
IFBST0dSQU1fVFlQRV9CTEVORFNfRUxFTUVOVF9URVhUVVJFID8gbV9taXhTZXR0aW5ncy5ibGVu
ZE1vZGUgOiAwLAorICAgICAgICBtX3Byb2dyYW1UeXBlID09IFBST0dSQU1fVFlQRV9CTEVORFNf
RUxFTUVOVF9URVhUVVJFID8gbV9taXhTZXR0aW5ncy5jb21wb3NpdGVPcGVyYXRvciA6IDAKICAg
ICB9OwogICAgIHJldHVybiBTdHJpbmdIYXNoZXI6Omhhc2hNZW1vcnk8c2l6ZW9mKGhhc2hDb2Rl
cyk+KCZoYXNoQ29kZXMpOwogfQpAQCAtOTMsNiArOTQsNyBAQCBib29sIEN1c3RvbUZpbHRlclBy
b2dyYW1JbmZvOjpvcGVyYXRvcj09KGNvbnN0IEN1c3RvbUZpbHRlclByb2dyYW1JbmZvJiBvKSBj
b25zdAogICAgIEFTU0VSVCghby5pc0hhc2hUYWJsZURlbGV0ZWRWYWx1ZSgpKTsKICAgICByZXR1
cm4gbV92ZXJ0ZXhTaGFkZXJTdHJpbmcgPT0gby5tX3ZlcnRleFNoYWRlclN0cmluZwogICAgICAg
ICAmJiBtX2ZyYWdtZW50U2hhZGVyU3RyaW5nID09IG8ubV9mcmFnbWVudFNoYWRlclN0cmluZwor
ICAgICAgICAmJiBtX3Byb2dyYW1UeXBlID09IG8ubV9wcm9ncmFtVHlwZQogICAgICAgICAmJiBt
X21peFNldHRpbmdzID09IG8ubV9taXhTZXR0aW5nczsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21GaWx0ZXJQcm9ncmFtSW5m
by5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21GaWx0
ZXJQcm9ncmFtSW5mby5oCmluZGV4IDUyZmU3NzE1NzBmM2RiMDc3MzA0OTkyMDE3ZjY4OGQ2ZWQ0
NWFiYjYuLjNiNTQ0YzVhZDkzNjFmMjhkMGIyZTdhYzg1OWZmZTMwZjRjNzg0YmIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVy
UHJvZ3JhbUluZm8uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0
ZXJzL0N1c3RvbUZpbHRlclByb2dyYW1JbmZvLmgKQEAgLTQ1LDE5ICs0NSwxNiBAQCBlbnVtIEN1
c3RvbUZpbHRlclByb2dyYW1UeXBlIHsKIAogc3RydWN0IEN1c3RvbUZpbHRlclByb2dyYW1NaXhT
ZXR0aW5ncyB7CiAgICAgQ3VzdG9tRmlsdGVyUHJvZ3JhbU1peFNldHRpbmdzKCkKLSAgICAgICAg
OiBlbmFibGVkKGZhbHNlKQotICAgICAgICAsIGJsZW5kTW9kZShCbGVuZE1vZGVOb3JtYWwpCisg
ICAgICAgIDogYmxlbmRNb2RlKEJsZW5kTW9kZU5vcm1hbCkKICAgICAgICAgLCBjb21wb3NpdGVP
cGVyYXRvcihDb21wb3NpdGVTb3VyY2VPdmVyKQogICAgIHsKICAgICB9CiAgICAgCiAgICAgYm9v
bCBvcGVyYXRvcj09KGNvbnN0IEN1c3RvbUZpbHRlclByb2dyYW1NaXhTZXR0aW5ncyYgbykgY29u
c3QKICAgICB7Ci0gICAgICAgIHJldHVybiAoIWVuYWJsZWQgJiYgIW8uZW5hYmxlZCkKLSAgICAg
ICAgICAgIHx8IChibGVuZE1vZGUgPT0gby5ibGVuZE1vZGUgJiYgY29tcG9zaXRlT3BlcmF0b3Ig
PT0gby5jb21wb3NpdGVPcGVyYXRvcik7CisgICAgICAgIHJldHVybiBibGVuZE1vZGUgPT0gby5i
bGVuZE1vZGUgJiYgY29tcG9zaXRlT3BlcmF0b3IgPT0gby5jb21wb3NpdGVPcGVyYXRvcjsKICAg
ICB9CiAgICAgCi0gICAgYm9vbCBlbmFibGVkOwogICAgIEJsZW5kTW9kZSBibGVuZE1vZGU7CiAg
ICAgQ29tcG9zaXRlT3BlcmF0b3IgY29tcG9zaXRlT3BlcmF0b3I7CiB9OwpAQCAtNjcsNyArNjQs
NyBAQCBzdHJ1Y3QgQ3VzdG9tRmlsdGVyUHJvZ3JhbU1peFNldHRpbmdzIHsKIC8vIE51bGwgc3Ry
aW5ncyBhcmUgcGxhY2Vob2xkZXJzIGZvciB0aGUgZGVmYXVsdCBzaGFkZXIuCiBjbGFzcyBDdXN0
b21GaWx0ZXJQcm9ncmFtSW5mbyB7CiBwdWJsaWM6Ci0gICAgQ3VzdG9tRmlsdGVyUHJvZ3JhbUlu
Zm8oY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgY29uc3QgQ3VzdG9tRmlsdGVyUHJvZ3Jh
bU1peFNldHRpbmdzJik7CisgICAgQ3VzdG9tRmlsdGVyUHJvZ3JhbUluZm8oY29uc3QgU3RyaW5n
JiwgY29uc3QgU3RyaW5nJiwgQ3VzdG9tRmlsdGVyUHJvZ3JhbVR5cGUsIGNvbnN0IEN1c3RvbUZp
bHRlclByb2dyYW1NaXhTZXR0aW5ncyYpOwogCiAgICAgQ3VzdG9tRmlsdGVyUHJvZ3JhbUluZm8o
KTsKICAgICBib29sIGlzRW1wdHlWYWx1ZSgpIGNvbnN0OwpAQCAtODAsMTMgKzc3LDEyIEBAIHB1
YmxpYzoKIAogICAgIGNvbnN0IFN0cmluZyYgdmVydGV4U2hhZGVyU3RyaW5nKCkgY29uc3QgeyBy
ZXR1cm4gbV92ZXJ0ZXhTaGFkZXJTdHJpbmc7IH0KICAgICBjb25zdCBTdHJpbmcmIGZyYWdtZW50
U2hhZGVyU3RyaW5nKCkgY29uc3QgeyByZXR1cm4gbV9mcmFnbWVudFNoYWRlclN0cmluZzsgfQot
ICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgYWRkIEN1c3RvbUZpbHRlclByb2dyYW1UeXBlIHRvIEN1
c3RvbUZpbHRlclByb2dyYW1JbmZvIGFuZCByZW1vdmUgbWl4U2V0dGluZ3MuZW5hYmxlZC4KLSAg
ICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTY0NDgKLSAgICBD
dXN0b21GaWx0ZXJQcm9ncmFtVHlwZSBwcm9ncmFtVHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fbWl4
U2V0dGluZ3MuZW5hYmxlZCA/IFBST0dSQU1fVFlQRV9CTEVORFNfRUxFTUVOVF9URVhUVVJFIDog
UFJPR1JBTV9UWVBFX05PX0VMRU1FTlRfVEVYVFVSRTsgfQorICAgIEN1c3RvbUZpbHRlclByb2dy
YW1UeXBlIHByb2dyYW1UeXBlKCkgY29uc3QgeyByZXR1cm4gbV9wcm9ncmFtVHlwZTsgfQogICAg
IGNvbnN0IEN1c3RvbUZpbHRlclByb2dyYW1NaXhTZXR0aW5ncyYgbWl4U2V0dGluZ3MoKSBjb25z
dCB7IHJldHVybiBtX21peFNldHRpbmdzOyB9CiBwcml2YXRlOgogICAgIFN0cmluZyBtX3ZlcnRl
eFNoYWRlclN0cmluZzsKICAgICBTdHJpbmcgbV9mcmFnbWVudFNoYWRlclN0cmluZzsKKyAgICBD
dXN0b21GaWx0ZXJQcm9ncmFtVHlwZSBtX3Byb2dyYW1UeXBlOwogICAgIEN1c3RvbUZpbHRlclBy
b2dyYW1NaXhTZXR0aW5ncyBtX21peFNldHRpbmdzOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21GaWx0ZXJWYWxpZGF0ZWRQ
cm9ncmFtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvQ3Vz
dG9tRmlsdGVyVmFsaWRhdGVkUHJvZ3JhbS5jcHAKaW5kZXggOWRhNWI1YTE1MzlmMTUzNDVhMGMy
MjE2YzUyM2IyZTRhMDUzZDIyYS4uNWM3ZDIwMzk3MGQwMDg3ZDcwOTc3NDkzOGUwNjVmOTZmZTNh
MGY5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVy
cy9DdXN0b21GaWx0ZXJWYWxpZGF0ZWRQcm9ncmFtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0N1c3RvbUZpbHRlclZhbGlkYXRlZFByb2dyYW0uY3Bw
CkBAIC04Myw3ICs4Myw4IEBAIEN1c3RvbUZpbHRlclZhbGlkYXRlZFByb2dyYW06OkN1c3RvbUZp
bHRlclZhbGlkYXRlZFByb2dyYW0oQ3VzdG9tRmlsdGVyR2xvYmFsQ29uCiAgICAgICAgIG9yaWdp
bmFsRnJhZ21lbnRTaGFkZXIgPSBkZWZhdWx0RnJhZ21lbnRTaGFkZXJTdHJpbmcoKTsKIAogICAg
IC8vIFNoYWRlcnMgcmVmZXJlbmNlZCBmcm9tIHRoZSBDU1MgbWl4IGZ1bmN0aW9uIHVzZSBhIGRp
ZmZlcmVudCB2YWxpZGF0b3IgdGhhbiByZWd1bGFyIFdlYkdMIHNoYWRlcnMuIFNlZSBDdXN0b21G
aWx0ZXJHbG9iYWxDb250ZXh0LmggZm9yIG1vcmUgZGV0YWlscy4KLSAgICBBTkdMRVdlYktpdEJy
aWRnZSogdmFsaWRhdG9yID0gcHJvZ3JhbUluZm8ubWl4U2V0dGluZ3MoKS5lbmFibGVkID8gbV9n
bG9iYWxDb250ZXh0LT5taXhTaGFkZXJWYWxpZGF0b3IoKSA6IG1fZ2xvYmFsQ29udGV4dC0+d2Vi
Z2xTaGFkZXJWYWxpZGF0b3IoKTsKKyAgICBib29sIGlzTWl4RW5hYmxlZCA9IHByb2dyYW1JbmZv
LnByb2dyYW1UeXBlKCkgPT0gUFJPR1JBTV9UWVBFX0JMRU5EU19FTEVNRU5UX1RFWFRVUkU7Cisg
ICAgQU5HTEVXZWJLaXRCcmlkZ2UqIHZhbGlkYXRvciA9IGlzTWl4RW5hYmxlZCA/IG1fZ2xvYmFs
Q29udGV4dC0+bWl4U2hhZGVyVmFsaWRhdG9yKCkgOiBtX2dsb2JhbENvbnRleHQtPndlYmdsU2hh
ZGVyVmFsaWRhdG9yKCk7CiAgICAgU3RyaW5nIHZlcnRleFNoYWRlckxvZywgZnJhZ21lbnRTaGFk
ZXJMb2c7CiAgICAgVmVjdG9yPEFOR0xFU2hhZGVyU3ltYm9sPiBzeW1ib2xzOwogICAgIGJvb2wg
dmVydGV4U2hhZGVyVmFsaWQgPSB2YWxpZGF0b3ItPmNvbXBpbGVTaGFkZXJTb3VyY2Uob3JpZ2lu
YWxWZXJ0ZXhTaGFkZXIudXRmOCgpLmRhdGEoKSwgU0hBREVSX1RZUEVfVkVSVEVYLCBtX3ZhbGlk
YXRlZFZlcnRleFNoYWRlciwgdmVydGV4U2hhZGVyTG9nLCBzeW1ib2xzKTsKQEAgLTEwNyw3ICsx
MDgsNyBAQCBDdXN0b21GaWx0ZXJWYWxpZGF0ZWRQcm9ncmFtOjpDdXN0b21GaWx0ZXJWYWxpZGF0
ZWRQcm9ncmFtKEN1c3RvbUZpbHRlckdsb2JhbENvbgogICAgIH0KIAogICAgIC8vIFdlIG5lZWQg
dG8gYWRkIHRleHR1cmUgYWNjZXNzLCBibGVuZGluZywgYW5kIGNvbXBvc2l0aW5nIGNvZGUgdG8g
c2hhZGVycyB0aGF0IGFyZSByZWZlcmVuY2VkIGZyb20gdGhlIENTUyBtaXggZnVuY3Rpb24uCi0g
ICAgaWYgKHByb2dyYW1JbmZvLm1peFNldHRpbmdzKCkuZW5hYmxlZCkgeworICAgIGlmIChpc01p
eEVuYWJsZWQpIHsKICAgICAgICAgcmV3cml0ZU1peFZlcnRleFNoYWRlcigpOwogICAgICAgICBy
ZXdyaXRlTWl4RnJhZ21lbnRTaGFkZXIoKTsKICAgICB9CkBAIC0xMjUsNyArMTI2LDcgQEAgUGFz
c1JlZlB0cjxDdXN0b21GaWx0ZXJDb21waWxlZFByb2dyYW0+IEN1c3RvbUZpbHRlclZhbGlkYXRl
ZFByb2dyYW06OmNvbXBpbGVkUHIKIAogdm9pZCBDdXN0b21GaWx0ZXJWYWxpZGF0ZWRQcm9ncmFt
OjpyZXdyaXRlTWl4VmVydGV4U2hhZGVyKCkKIHsKLSAgICBBU1NFUlQobV9wcm9ncmFtSW5mby5t
aXhTZXR0aW5ncygpLmVuYWJsZWQpOworICAgIEFTU0VSVChtX3Byb2dyYW1JbmZvLnByb2dyYW1U
eXBlKCkgPT0gUFJPR1JBTV9UWVBFX0JMRU5EU19FTEVNRU5UX1RFWFRVUkUpOwogCiAgICAgLy8g
RHVyaW5nIHZhbGlkYXRpb24sIEFOR0xFIHJlbmFtZWQgdGhlIGF1dGhvcidzICJtYWluIiBmdW5j
dGlvbiB0byAiY3NzX21haW4iLgogICAgIC8vIFdlIHdyaXRlIG91ciBvd24gIm1haW4iIGZ1bmN0
aW9uIGFuZCBjYWxsICJjc3NfbWFpbiIgZnJvbSBpdC4KQEAgLTE0NCw3ICsxNDUsNyBAQCB2b2lk
IEN1c3RvbUZpbHRlclZhbGlkYXRlZFByb2dyYW06OnJld3JpdGVNaXhWZXJ0ZXhTaGFkZXIoKQog
CiB2b2lkIEN1c3RvbUZpbHRlclZhbGlkYXRlZFByb2dyYW06OnJld3JpdGVNaXhGcmFnbWVudFNo
YWRlcigpCiB7Ci0gICAgQVNTRVJUKG1fcHJvZ3JhbUluZm8ubWl4U2V0dGluZ3MoKS5lbmFibGVk
KTsKKyAgICBBU1NFUlQobV9wcm9ncmFtSW5mby5wcm9ncmFtVHlwZSgpID09IFBST0dSQU1fVFlQ
RV9CTEVORFNfRUxFTUVOVF9URVhUVVJFKTsKIAogICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRlcjsK
ICAgICAvLyBBTkdMRSBjb25zaWRlcmVkIHRoZXNlIHN5bWJvbHMgYXMgYnVpbHQtaW5zIGR1cmlu
ZyB2YWxpZGF0aW9uIHVuZGVyIHRoZSBTSF9DU1NfU0hBREVSU19TUEVDIGZsYWcuCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVDdXN0b21GaWx0ZXJQcm9n
cmFtLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVDdXN0b21GaWx0ZXJQ
cm9ncmFtLmgKaW5kZXggMWNiZTAxZDM1ZjA2NzNkMjJhMmUwZGNiN2QxOGJlMTMwMmFiMmZkNS4u
NzM4NTgwNmIyMzgzNTc2ZjZjMzgxOTIwMjMzMmM0NWMyZWQ2Zjk1MSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlQ3VzdG9tRmlsdGVyUHJvZ3JhbS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZUN1c3RvbUZpbHRlclByb2dy
YW0uaApAQCAtNDUsOSArNDUsOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBTdHlsZUN1
c3RvbUZpbHRlclByb2dyYW0gOiBwdWJsaWMgQ3VzdG9tRmlsdGVyUHJvZ3JhbSwgcHVibGljIENh
Y2hlZFJlc291cmNlQ2xpZW50IHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1Ymxp
YzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxTdHlsZUN1c3RvbUZpbHRlclByb2dyYW0+IGNyZWF0
ZShQYXNzUmVmUHRyPFN0eWxlU2hhZGVyPiB2ZXJ0ZXhTaGFkZXIsIFBhc3NSZWZQdHI8U3R5bGVT
aGFkZXI+IGZyYWdtZW50U2hhZGVyLCBDdXN0b21GaWx0ZXJQcm9ncmFtTWl4U2V0dGluZ3MgbWl4
U2V0dGluZ3MpCisgICAgc3RhdGljIFBhc3NSZWZQdHI8U3R5bGVDdXN0b21GaWx0ZXJQcm9ncmFt
PiBjcmVhdGUoUGFzc1JlZlB0cjxTdHlsZVNoYWRlcj4gdmVydGV4U2hhZGVyLCBQYXNzUmVmUHRy
PFN0eWxlU2hhZGVyPiBmcmFnbWVudFNoYWRlciwgQ3VzdG9tRmlsdGVyUHJvZ3JhbVR5cGUgcHJv
Z3JhbVR5cGUsIEN1c3RvbUZpbHRlclByb2dyYW1NaXhTZXR0aW5ncyBtaXhTZXR0aW5ncykKICAg
ICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgU3R5bGVDdXN0b21GaWx0ZXJQcm9ncmFt
KHZlcnRleFNoYWRlciwgZnJhZ21lbnRTaGFkZXIsIG1peFNldHRpbmdzKSk7CisgICAgICAgIHJl
dHVybiBhZG9wdFJlZihuZXcgU3R5bGVDdXN0b21GaWx0ZXJQcm9ncmFtKHZlcnRleFNoYWRlciwg
ZnJhZ21lbnRTaGFkZXIsIHByb2dyYW1UeXBlLCBtaXhTZXR0aW5ncykpOwogICAgIH0KICAgICAK
ICAgICB2b2lkIHNldFZlcnRleFNoYWRlcihQYXNzUmVmUHRyPFN0eWxlU2hhZGVyPiBzaGFkZXIp
IHsgbV92ZXJ0ZXhTaGFkZXIgPSBzaGFkZXI7IH0KQEAgLTEyNiw4ICsxMjYsOCBAQCBwdWJsaWM6
CiAgICAgfQogCiBwcml2YXRlOgotICAgIFN0eWxlQ3VzdG9tRmlsdGVyUHJvZ3JhbShQYXNzUmVm
UHRyPFN0eWxlU2hhZGVyPiB2ZXJ0ZXhTaGFkZXIsIFBhc3NSZWZQdHI8U3R5bGVTaGFkZXI+IGZy
YWdtZW50U2hhZGVyLCBDdXN0b21GaWx0ZXJQcm9ncmFtTWl4U2V0dGluZ3MgbWl4U2V0dGluZ3Mp
Ci0gICAgICAgIDogQ3VzdG9tRmlsdGVyUHJvZ3JhbShtaXhTZXR0aW5ncykKKyAgICBTdHlsZUN1
c3RvbUZpbHRlclByb2dyYW0oUGFzc1JlZlB0cjxTdHlsZVNoYWRlcj4gdmVydGV4U2hhZGVyLCBQ
YXNzUmVmUHRyPFN0eWxlU2hhZGVyPiBmcmFnbWVudFNoYWRlciwgQ3VzdG9tRmlsdGVyUHJvZ3Jh
bVR5cGUgcHJvZ3JhbVR5cGUsIEN1c3RvbUZpbHRlclByb2dyYW1NaXhTZXR0aW5ncyBtaXhTZXR0
aW5ncykKKyAgICAgICAgOiBDdXN0b21GaWx0ZXJQcm9ncmFtKHByb2dyYW1UeXBlLCBtaXhTZXR0
aW5ncykKICAgICAgICAgLCBtX3ZlcnRleFNoYWRlcih2ZXJ0ZXhTaGFkZXIpCiAgICAgICAgICwg
bV9mcmFnbWVudFNoYWRlcihmcmFnbWVudFNoYWRlcikKICAgICAgICAgLCBtX2lzVmVydGV4U2hh
ZGVyTG9hZGVkKGZhbHNlKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>168304</attachid>
            <date>2012-10-11 16:09:34 -0700</date>
            <delta_ts>2012-10-12 15:34:22 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-96448-20121011160831.patch</filename>
            <type>text/plain</type>
            <size>17413</size>
            <attacher name="Michelangelo De Simone">michelangelo</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMxMTA1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNmUyZDA2ZTI3NmE1NGJh
MzQ2NTYyNTAzOTZlMWFkMmE2ODI2ZDljYy4uOTA1ODJjNWMyM2JiODIwMDNjMmRiNmJjZjYxOTM4
ZDk1ZGY2NWM4MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQyIEBACisyMDEyLTEwLTEwICBNaWNo
ZWxhbmdlbG8gRGUgU2ltb25lICA8bWljaGVsYW5nZWxvQHdlYmtpdC5vcmc+CisKKyAgICAgICAg
W0NTUyBTaGFkZXJzXSBBZGQgQ3VzdG9tRmlsdGVyUHJvZ3JhbVR5cGUgdG8gQ3VzdG9tRmlsdGVy
UHJvZ3JhbUluZm8KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTk2NDQ4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgQ3VzdG9tRmlsdGVyUHJvZ3JhbUluZm8gaGFzIGJlZW4gcmVmYWN0b3JlZCB0byBkZWNvdXBs
ZSB0aGUgQ3VzdG9tRmlsdGVyUHJvZ3JhbVR5cGUgZnJvbQorICAgICAgICB0aGUgQ3VzdG9tRmls
dGVyUHJvZ3JhbU1peFNldHRpbmdzLCB0aGVyZWZvcmUgQ3VzdG9tRmlsdGVyUHJvZ3JhbVNldHRp
bmdzLmVuYWJsZWQgaGFzIGJlZW4KKyAgICAgICAgcmVtb3ZlZCwgbm93IHdlIGV4cGxpY2l0ZWx5
IGNoZWNrIGZvciB0aGUgcHJvZ3JhbVR5cGUoKS4gbV9wcm9ncmFtIGhhcyBhbHNvIGJlZW4gYWRk
ZWQgdG8KKyAgICAgICAgQ3VzdG9tRmlsdGVyUHJvZ3JhbSAoYW5kIEN1c3RvbUZpbHRlclByb2dy
YW1JbmZvKS4KKworICAgICAgICBObyB0ZXN0IG5lY2Vzc2FyeS4gCisKKyAgICAgICAgKiBjc3Mv
Q1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU0Nv
bXB1dGVkU3R5bGVEZWNsYXJhdGlvbjo6dmFsdWVGb3JGaWx0ZXIpOgorICAgICAgICAqIGNzcy9T
dHlsZVJlc29sdmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUmVzb2x2ZXI6OmNyZWF0
ZUN1c3RvbUZpbHRlck9wZXJhdGlvbik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmls
dGVycy9DdXN0b21GaWx0ZXJQcm9ncmFtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkN1c3RvbUZp
bHRlclByb2dyYW06OkN1c3RvbUZpbHRlclByb2dyYW0pOgorICAgICAgICAoV2ViQ29yZTo6Q3Vz
dG9tRmlsdGVyUHJvZ3JhbTo6cHJvZ3JhbUluZm8pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVyUHJvZ3JhbS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVyUHJvZ3JhbUluZm8uY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Q3VzdG9tRmlsdGVyUHJvZ3JhbUluZm86OkN1c3RvbUZpbHRlclByb2dyYW1JbmZvKToK
KyAgICAgICAgKFdlYkNvcmU6OkN1c3RvbUZpbHRlclByb2dyYW1JbmZvOjpoYXNoKToKKyAgICAg
ICAgKFdlYkNvcmU6OkN1c3RvbUZpbHRlclByb2dyYW1JbmZvOjpvcGVyYXRvcj09KToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0N1c3RvbUZpbHRlclByb2dyYW1JbmZvLmg6
CisgICAgICAgIChXZWJDb3JlOjpDdXN0b21GaWx0ZXJQcm9ncmFtTWl4U2V0dGluZ3M6OkN1c3Rv
bUZpbHRlclByb2dyYW1NaXhTZXR0aW5ncyk6CisgICAgICAgIChXZWJDb3JlOjpDdXN0b21GaWx0
ZXJQcm9ncmFtTWl4U2V0dGluZ3M6Om9wZXJhdG9yPT0pOgorICAgICAgICAoQ3VzdG9tRmlsdGVy
UHJvZ3JhbUluZm8pOgorICAgICAgICAoV2ViQ29yZTo6Q3VzdG9tRmlsdGVyUHJvZ3JhbUluZm86
OnByb2dyYW1UeXBlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0N1c3Rv
bUZpbHRlclZhbGlkYXRlZFByb2dyYW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q3VzdG9tRmls
dGVyVmFsaWRhdGVkUHJvZ3JhbTo6Q3VzdG9tRmlsdGVyVmFsaWRhdGVkUHJvZ3JhbSk6CisgICAg
ICAgIChXZWJDb3JlOjpDdXN0b21GaWx0ZXJWYWxpZGF0ZWRQcm9ncmFtOjpyZXdyaXRlTWl4VmVy
dGV4U2hhZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkN1c3RvbUZpbHRlclZhbGlkYXRlZFByb2dy
YW06OnJld3JpdGVNaXhGcmFnbWVudFNoYWRlcik6CisgICAgICAgICogcmVuZGVyaW5nL3N0eWxl
L1N0eWxlQ3VzdG9tRmlsdGVyUHJvZ3JhbS5oOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVDdXN0
b21GaWx0ZXJQcm9ncmFtOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVDdXN0b21G
aWx0ZXJQcm9ncmFtOjpTdHlsZUN1c3RvbUZpbHRlclByb2dyYW0pOgorCiAyMDEyLTEwLTExICBS
b2dlciBGb25nICA8cm9nZXJfZm9uZ0BhcHBsZS5jb20+CiAKICAgICAgICAgW1dlYkdMXSBbTWFj
XSBvbmx5IHRoZSBtYXBwZWQgc3ltYm9sIGZvciB0aGUgZmlyc3QgZWxlbWVudCBvZiBhIHVuaWZv
cm0vYXR0cmlidXRlIGFycmF5IGlzIHN0b3JlZC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHAKaW5kZXggYWFiOGFjYjk4MzFhNDYxZTJi
YTVjOTM4MTY2ZDM1NmUzY2ViMTEyMi4uNjRjNWQwNDA0ZWExNTI1NDc5YmRmNTlkODg4YjRlMGNi
NmEyNThiNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5bGVE
ZWNsYXJhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5bGVE
ZWNsYXJhdGlvbi5jcHAKQEAgLTkyMSw3ICs5MjEsNyBAQCBQYXNzUmVmUHRyPENTU1ZhbHVlPiBD
U1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb246OnZhbHVlRm9yRmlsdGVyKGNvbnN0IFJlbmRlck9i
agogICAgICAgICAgICAgICAgIHNoYWRlcnNMaXN0LT5hcHBlbmQoY3NzVmFsdWVQb29sKCkuY3Jl
YXRlSWRlbnRpZmllclZhbHVlKENTU1ZhbHVlTm9uZSkpOwogCiAgICAgICAgICAgICBjb25zdCBD
dXN0b21GaWx0ZXJQcm9ncmFtTWl4U2V0dGluZ3MgbWl4U2V0dGluZ3MgPSBwcm9ncmFtLT5taXhT
ZXR0aW5ncygpOwotICAgICAgICAgICAgaWYgKG1peFNldHRpbmdzLmVuYWJsZWQpIHsKKyAgICAg
ICAgICAgIGlmIChwcm9ncmFtLT5wcm9ncmFtVHlwZSgpID09IFBST0dSQU1fVFlQRV9CTEVORFNf
RUxFTUVOVF9URVhUVVJFKSB7CiAgICAgICAgICAgICAgICAgUmVmUHRyPFdlYktpdENTU01peEZ1
bmN0aW9uVmFsdWU+IG1peEZ1bmN0aW9uID0gV2ViS2l0Q1NTTWl4RnVuY3Rpb25WYWx1ZTo6Y3Jl
YXRlKCk7CiAgICAgICAgICAgICAgICAgbWl4RnVuY3Rpb24tPmFwcGVuZChwcm9ncmFtLT5mcmFn
bWVudFNoYWRlcigpLT5jc3NWYWx1ZSgpKTsKICAgICAgICAgICAgICAgICBtaXhGdW5jdGlvbi0+
YXBwZW5kKGNzc1ZhbHVlUG9vbCgpLmNyZWF0ZVZhbHVlKG1peFNldHRpbmdzLmJsZW5kTW9kZSkp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuY3BwCmluZGV4IGZiYWQwOGMwODcxODMyODFj
MDU1ZTAwOWY3MGE0OGJmNWY4NTc5ZDUuLmQ2YmQ4ZjllMzRhODE5Y2MyZGJlMmNlMDI2OWFmYzkx
NmRiNWJhNTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5jcHAKQEAgLTQ3NzgsMTEg
KzQ3NzgsMTIgQEAgUGFzc1JlZlB0cjxDdXN0b21GaWx0ZXJPcGVyYXRpb24+IFN0eWxlUmVzb2x2
ZXI6OmNyZWF0ZUN1c3RvbUZpbHRlck9wZXJhdGlvbihXZWIKICAgICBSZWZQdHI8U3R5bGVTaGFk
ZXI+IHZlcnRleFNoYWRlciA9IHN0eWxlU2hhZGVyKHNoYWRlcnNMaXN0LT5pdGVtV2l0aG91dEJv
dW5kc0NoZWNrKDApKTsKIAogICAgIFJlZlB0cjxTdHlsZVNoYWRlcj4gZnJhZ21lbnRTaGFkZXI7
CisgICAgQ3VzdG9tRmlsdGVyUHJvZ3JhbVR5cGUgcHJvZ3JhbVR5cGUgPSBQUk9HUkFNX1RZUEVf
Tk9fRUxFTUVOVF9URVhUVVJFOwogICAgIEN1c3RvbUZpbHRlclByb2dyYW1NaXhTZXR0aW5ncyBt
aXhTZXR0aW5nczsKICAgICBpZiAoc2hhZGVyc0xpc3QtPmxlbmd0aCgpID4gMSkgewogICAgICAg
ICBDU1NWYWx1ZSogZnJhZ21lbnRTaGFkZXJPck1peEZ1bmN0aW9uID0gc2hhZGVyc0xpc3QtPml0
ZW1XaXRob3V0Qm91bmRzQ2hlY2soMSk7CiAgICAgICAgIGlmIChmcmFnbWVudFNoYWRlck9yTWl4
RnVuY3Rpb24tPmlzV2ViS2l0Q1NTTWl4RnVuY3Rpb25WYWx1ZSgpKSB7Ci0gICAgICAgICAgICBt
aXhTZXR0aW5ncy5lbmFibGVkID0gdHJ1ZTsKKyAgICAgICAgICAgIHByb2dyYW1UeXBlID0gUFJP
R1JBTV9UWVBFX0JMRU5EU19FTEVNRU5UX1RFWFRVUkU7CiAgICAgICAgICAgICBXZWJLaXRDU1NN
aXhGdW5jdGlvblZhbHVlKiBtaXhGdW5jdGlvbiA9IHN0YXRpY19jYXN0PFdlYktpdENTU01peEZ1
bmN0aW9uVmFsdWUqPihmcmFnbWVudFNoYWRlck9yTWl4RnVuY3Rpb24pOwogICAgICAgICAgICAg
Q1NTVmFsdWVMaXN0SXRlcmF0b3IgaXRlcmF0b3IobWl4RnVuY3Rpb24pOwogCkBAIC00ODcyLDcg
KzQ4NzMsNyBAQCBQYXNzUmVmUHRyPEN1c3RvbUZpbHRlck9wZXJhdGlvbj4gU3R5bGVSZXNvbHZl
cjo6Y3JlYXRlQ3VzdG9tRmlsdGVyT3BlcmF0aW9uKFdlYgogICAgIGlmIChwYXJhbWV0ZXJzVmFs
dWUgJiYgIXBhcnNlQ3VzdG9tRmlsdGVyUGFyYW1ldGVyTGlzdChwYXJhbWV0ZXJzVmFsdWUsIHBh
cmFtZXRlckxpc3QpKQogICAgICAgICByZXR1cm4gMDsKICAgICAKLSAgICBSZWZQdHI8U3R5bGVD
dXN0b21GaWx0ZXJQcm9ncmFtPiBwcm9ncmFtID0gU3R5bGVDdXN0b21GaWx0ZXJQcm9ncmFtOjpj
cmVhdGUodmVydGV4U2hhZGVyLnJlbGVhc2UoKSwgZnJhZ21lbnRTaGFkZXIucmVsZWFzZSgpLCBt
aXhTZXR0aW5ncyk7CisgICAgUmVmUHRyPFN0eWxlQ3VzdG9tRmlsdGVyUHJvZ3JhbT4gcHJvZ3Jh
bSA9IFN0eWxlQ3VzdG9tRmlsdGVyUHJvZ3JhbTo6Y3JlYXRlKHZlcnRleFNoYWRlci5yZWxlYXNl
KCksIGZyYWdtZW50U2hhZGVyLnJlbGVhc2UoKSwgcHJvZ3JhbVR5cGUsIG1peFNldHRpbmdzKTsK
ICAgICByZXR1cm4gQ3VzdG9tRmlsdGVyT3BlcmF0aW9uOjpjcmVhdGUocHJvZ3JhbS5yZWxlYXNl
KCksIHBhcmFtZXRlckxpc3QsIG1lc2hSb3dzLCBtZXNoQ29sdW1ucywgbWVzaEJveFR5cGUsIG1l
c2hUeXBlKTsKIH0KICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZmlsdGVycy9DdXN0b21GaWx0ZXJQcm9ncmFtLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVyUHJvZ3JhbS5jcHAKaW5kZXgg
OTRlODNkZjliODNiMmI1YjU0ZmU3NDdhN2UyYWZjYjQyMjVlOWNmZC4uYzk5OTBkOThkYzMwNmM1
NmMzZGYwNTFlZmI3OWE0ZDhmNDI5MjYxNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21GaWx0ZXJQcm9ncmFtLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0N1c3RvbUZpbHRlclByb2dyYW0u
Y3BwCkBAIC0zOCw4ICszOCw5IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotQ3VzdG9tRmls
dGVyUHJvZ3JhbTo6Q3VzdG9tRmlsdGVyUHJvZ3JhbShDdXN0b21GaWx0ZXJQcm9ncmFtTWl4U2V0
dGluZ3MgbWl4U2V0dGluZ3MpCi0gICAgOiBtX21peFNldHRpbmdzKG1peFNldHRpbmdzKQorQ3Vz
dG9tRmlsdGVyUHJvZ3JhbTo6Q3VzdG9tRmlsdGVyUHJvZ3JhbShDdXN0b21GaWx0ZXJQcm9ncmFt
VHlwZSBwcm9ncmFtVHlwZSwgY29uc3QgQ3VzdG9tRmlsdGVyUHJvZ3JhbU1peFNldHRpbmdzJiBt
aXhTZXR0aW5ncykKKyAgICA6IG1fcHJvZ3JhbVR5cGUocHJvZ3JhbVR5cGUpCisgICAgLCBtX21p
eFNldHRpbmdzKG1peFNldHRpbmdzKQogewogICAgIC8vIEtlZXAgdGhlIGNvbnN0cnVjdG9yIHBy
b3RlY3RlZCB0byBwcmV2ZW50IGNyZWF0aW5nIHRoaXMgb2JqZWN0IGRpcmVjdGx5LgogfQpAQCAt
ODEsNyArODIsNyBAQCB2b2lkIEN1c3RvbUZpbHRlclByb2dyYW06Om5vdGlmeUNsaWVudHMoKQog
Q3VzdG9tRmlsdGVyUHJvZ3JhbUluZm8gQ3VzdG9tRmlsdGVyUHJvZ3JhbTo6cHJvZ3JhbUluZm8o
KSBjb25zdAogewogICAgIEFTU0VSVChpc0xvYWRlZCgpKTsKLSAgICByZXR1cm4gQ3VzdG9tRmls
dGVyUHJvZ3JhbUluZm8odmVydGV4U2hhZGVyU3RyaW5nKCksIGZyYWdtZW50U2hhZGVyU3RyaW5n
KCksIG1fbWl4U2V0dGluZ3MpOworICAgIHJldHVybiBDdXN0b21GaWx0ZXJQcm9ncmFtSW5mbyh2
ZXJ0ZXhTaGFkZXJTdHJpbmcoKSwgZnJhZ21lbnRTaGFkZXJTdHJpbmcoKSwgbV9wcm9ncmFtVHlw
ZSwgbV9taXhTZXR0aW5ncyk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVy
UHJvZ3JhbS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0
b21GaWx0ZXJQcm9ncmFtLmgKaW5kZXggZWYxOWRmYjgzMDJiY2M0OGEzZjZhYTUxMjVkMzdiOGEy
NjliZGQzNy4uMDQ5MmQ0NzZkOThlZGZjNjRmM2M0MzUwM2M3N2JjNDM5ODIzM2I4OCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21GaWx0
ZXJQcm9ncmFtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVy
cy9DdXN0b21GaWx0ZXJQcm9ncmFtLmgKQEAgLTU4LDYgKzU4LDcgQEAgcHVibGljOgogICAgIHZv
aWQgcmVtb3ZlQ2xpZW50KEN1c3RvbUZpbHRlclByb2dyYW1DbGllbnQqKTsKICAgICAKICAgICBD
dXN0b21GaWx0ZXJQcm9ncmFtSW5mbyBwcm9ncmFtSW5mbygpIGNvbnN0OworICAgIEN1c3RvbUZp
bHRlclByb2dyYW1UeXBlIHByb2dyYW1UeXBlKCkgY29uc3QgeyByZXR1cm4gbV9wcm9ncmFtVHlw
ZTsgfQogCiAgICAgLy8gU3R5bGVDdXN0b21GaWx0ZXJQcm9ncmFtIGhhcyB0aGUgb25seSBpbXBs
ZW1lbnRhdGlvbiBmb3IgdGhlIGZvbGxvd2luZyBtZXRob2QuIFRoYXQgbWVhbnMsIGl0IGNhc3Rz
IHRvIFN0eWxlQ3VzdG9tRmlsdGVyUHJvZ3JhbQogICAgIC8vIHdpdGhvdXRoIGNoZWNraW5nIHRo
ZSB0eXBlLiBJZiB5b3UgYWRkIGFub3RoZXIgaW1wbGVtZW50YXRpb24sIGFsc28gYWRkIGEgbWVj
aGFuaXNtIHRvIGNoZWNrIGZvciB0aGUgY29ycmVjdCB0eXBlLgpAQCAtNzUsMTEgKzc2LDEyIEBA
IHByb3RlY3RlZDoKICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVtb3ZlTGFzdENsaWVudCgpID0gMDsK
IAogICAgIC8vIEtlZXAgdGhlIGNvbnN0cnVjdG9yIHByb3RlY3RlZCB0byBwcmV2ZW50IGNyZWF0
aW5nIHRoaXMgb2JqZWN0IGRpcmVjdGx5LgotICAgIEN1c3RvbUZpbHRlclByb2dyYW0oQ3VzdG9t
RmlsdGVyUHJvZ3JhbU1peFNldHRpbmdzKTsKKyAgICBDdXN0b21GaWx0ZXJQcm9ncmFtKEN1c3Rv
bUZpbHRlclByb2dyYW1UeXBlLCBjb25zdCBDdXN0b21GaWx0ZXJQcm9ncmFtTWl4U2V0dGluZ3Mm
KTsKIAogcHJpdmF0ZToKICAgICB0eXBlZGVmIEhhc2hDb3VudGVkU2V0PEN1c3RvbUZpbHRlclBy
b2dyYW1DbGllbnQqPiBDdXN0b21GaWx0ZXJQcm9ncmFtQ2xpZW50TGlzdDsKICAgICBDdXN0b21G
aWx0ZXJQcm9ncmFtQ2xpZW50TGlzdCBtX2NsaWVudHM7CisgICAgQ3VzdG9tRmlsdGVyUHJvZ3Jh
bVR5cGUgbV9wcm9ncmFtVHlwZTsKICAgICBDdXN0b21GaWx0ZXJQcm9ncmFtTWl4U2V0dGluZ3Mg
bV9taXhTZXR0aW5nczsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVyUHJvZ3JhbUluZm8uY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21GaWx0ZXJQcm9ncmFtSW5mby5j
cHAKaW5kZXggMWJmNmE5MWYwZDJmNjY1M2RhYjhlYTdhMmRlNWI1YWEyMGJmODRlYi4uYmMxNDk0
ZmFmMTIwZTE3YTgxZTI4NmUyNDMwN2I2ZmExYTY4MjlkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21GaWx0ZXJQcm9ncmFtSW5mby5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21G
aWx0ZXJQcm9ncmFtSW5mby5jcHAKQEAgLTY0LDkgKzY0LDEwIEBAIGJvb2wgQ3VzdG9tRmlsdGVy
UHJvZ3JhbUluZm86OmlzSGFzaFRhYmxlRGVsZXRlZFZhbHVlKCkgY29uc3QKICAgICAgICAgJiYg
bV9mcmFnbWVudFNoYWRlclN0cmluZy5pc0hhc2hUYWJsZURlbGV0ZWRWYWx1ZSgpOwogfQogCi1D
dXN0b21GaWx0ZXJQcm9ncmFtSW5mbzo6Q3VzdG9tRmlsdGVyUHJvZ3JhbUluZm8oY29uc3QgU3Ry
aW5nJiB2ZXJ0ZXhTaGFkZXIsIGNvbnN0IFN0cmluZyYgZnJhZ21lbnRTaGFkZXIsIGNvbnN0IEN1
c3RvbUZpbHRlclByb2dyYW1NaXhTZXR0aW5ncyYgbWl4U2V0dGluZ3MpCitDdXN0b21GaWx0ZXJQ
cm9ncmFtSW5mbzo6Q3VzdG9tRmlsdGVyUHJvZ3JhbUluZm8oY29uc3QgU3RyaW5nJiB2ZXJ0ZXhT
aGFkZXIsIGNvbnN0IFN0cmluZyYgZnJhZ21lbnRTaGFkZXIsIEN1c3RvbUZpbHRlclByb2dyYW1U
eXBlIHByb2dyYW1UeXBlLCBjb25zdCBDdXN0b21GaWx0ZXJQcm9ncmFtTWl4U2V0dGluZ3MmIG1p
eFNldHRpbmdzKQogICAgIDogbV92ZXJ0ZXhTaGFkZXJTdHJpbmcodmVydGV4U2hhZGVyKQogICAg
ICwgbV9mcmFnbWVudFNoYWRlclN0cmluZyhmcmFnbWVudFNoYWRlcikKKyAgICAsIG1fcHJvZ3Jh
bVR5cGUocHJvZ3JhbVR5cGUpCiAgICAgLCBtX21peFNldHRpbmdzKG1peFNldHRpbmdzKQogewog
ICAgIC8vIEF0IGxlYXN0IG9uZSBvZiB0aGUgc2hhZGVycyBuZWVkcyB0byBiZSBub24tbnVsbC4K
QEAgLTgwLDkgKzgxLDkgQEAgdW5zaWduZWQgQ3VzdG9tRmlsdGVyUHJvZ3JhbUluZm86Omhhc2go
KSBjb25zdAogICAgIHVpbnRwdHJfdCBoYXNoQ29kZXNbNV0gPSB7CiAgICAgICAgIGhhc2hQb3Nz
aWJseU51bGxTdHJpbmcobV92ZXJ0ZXhTaGFkZXJTdHJpbmcpLAogICAgICAgICBoYXNoUG9zc2li
bHlOdWxsU3RyaW5nKG1fZnJhZ21lbnRTaGFkZXJTdHJpbmcpLAotICAgICAgICBtX21peFNldHRp
bmdzLmVuYWJsZWQsCi0gICAgICAgIG1fbWl4U2V0dGluZ3MuZW5hYmxlZCA/IG1fbWl4U2V0dGlu
Z3MuYmxlbmRNb2RlIDogMCwKLSAgICAgICAgbV9taXhTZXR0aW5ncy5lbmFibGVkID8gbV9taXhT
ZXR0aW5ncy5jb21wb3NpdGVPcGVyYXRvciA6IDAKKyAgICAgICAgbV9wcm9ncmFtVHlwZSA9PSBQ
Uk9HUkFNX1RZUEVfQkxFTkRTX0VMRU1FTlRfVEVYVFVSRSwKKyAgICAgICAgbV9wcm9ncmFtVHlw
ZSA9PSBQUk9HUkFNX1RZUEVfQkxFTkRTX0VMRU1FTlRfVEVYVFVSRSA/IG1fbWl4U2V0dGluZ3Mu
YmxlbmRNb2RlIDogMCwKKyAgICAgICAgbV9wcm9ncmFtVHlwZSA9PSBQUk9HUkFNX1RZUEVfQkxF
TkRTX0VMRU1FTlRfVEVYVFVSRSA/IG1fbWl4U2V0dGluZ3MuY29tcG9zaXRlT3BlcmF0b3IgOiAw
CiAgICAgfTsKICAgICByZXR1cm4gU3RyaW5nSGFzaGVyOjpoYXNoTWVtb3J5PHNpemVvZihoYXNo
Q29kZXMpPigmaGFzaENvZGVzKTsKIH0KQEAgLTkxLDkgKzkyLDE2IEBAIGJvb2wgQ3VzdG9tRmls
dGVyUHJvZ3JhbUluZm86Om9wZXJhdG9yPT0oY29uc3QgQ3VzdG9tRmlsdGVyUHJvZ3JhbUluZm8m
IG8pIGNvbnN0CiB7CiAgICAgQVNTRVJUKCFpc0hhc2hUYWJsZURlbGV0ZWRWYWx1ZSgpKTsKICAg
ICBBU1NFUlQoIW8uaXNIYXNoVGFibGVEZWxldGVkVmFsdWUoKSk7CisKKyAgICBpZiAobV9wcm9n
cmFtVHlwZSA9PSBQUk9HUkFNX1RZUEVfQkxFTkRTX0VMRU1FTlRfVEVYVFVSRSkKKyAgICAgICAg
cmV0dXJuIG1fdmVydGV4U2hhZGVyU3RyaW5nID09IG8ubV92ZXJ0ZXhTaGFkZXJTdHJpbmcKKyAg
ICAgICAgICAgICYmIG1fZnJhZ21lbnRTaGFkZXJTdHJpbmcgPT0gby5tX2ZyYWdtZW50U2hhZGVy
U3RyaW5nCisgICAgICAgICAgICAmJiBtX3Byb2dyYW1UeXBlID09IG8ubV9wcm9ncmFtVHlwZQor
ICAgICAgICAgICAgJiYgbV9taXhTZXR0aW5ncyA9PSBvLm1fbWl4U2V0dGluZ3M7CisKICAgICBy
ZXR1cm4gbV92ZXJ0ZXhTaGFkZXJTdHJpbmcgPT0gby5tX3ZlcnRleFNoYWRlclN0cmluZwogICAg
ICAgICAmJiBtX2ZyYWdtZW50U2hhZGVyU3RyaW5nID09IG8ubV9mcmFnbWVudFNoYWRlclN0cmlu
ZwotICAgICAgICAmJiBtX21peFNldHRpbmdzID09IG8ubV9taXhTZXR0aW5nczsKKyAgICAgICAg
JiYgbV9wcm9ncmFtVHlwZSA9PSBvLm1fcHJvZ3JhbVR5cGU7CiB9CiAKIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Zp
bHRlcnMvQ3VzdG9tRmlsdGVyUHJvZ3JhbUluZm8uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVyUHJvZ3JhbUluZm8uaAppbmRleCA1MmZlNzcx
NTcwZjNkYjA3NzMwNDk5MjAxN2Y2ODhkNmVkNDVhYmI2Li4zYjU0NGM1YWQ5MzYxZjI4ZDBiMmU3
YWM4NTlmZmUzMGY0Yzc4NGJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9maWx0ZXJzL0N1c3RvbUZpbHRlclByb2dyYW1JbmZvLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21GaWx0ZXJQcm9ncmFtSW5mby5o
CkBAIC00NSwxOSArNDUsMTYgQEAgZW51bSBDdXN0b21GaWx0ZXJQcm9ncmFtVHlwZSB7CiAKIHN0
cnVjdCBDdXN0b21GaWx0ZXJQcm9ncmFtTWl4U2V0dGluZ3MgewogICAgIEN1c3RvbUZpbHRlclBy
b2dyYW1NaXhTZXR0aW5ncygpCi0gICAgICAgIDogZW5hYmxlZChmYWxzZSkKLSAgICAgICAgLCBi
bGVuZE1vZGUoQmxlbmRNb2RlTm9ybWFsKQorICAgICAgICA6IGJsZW5kTW9kZShCbGVuZE1vZGVO
b3JtYWwpCiAgICAgICAgICwgY29tcG9zaXRlT3BlcmF0b3IoQ29tcG9zaXRlU291cmNlT3ZlcikK
ICAgICB7CiAgICAgfQogICAgIAogICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBDdXN0b21GaWx0
ZXJQcm9ncmFtTWl4U2V0dGluZ3MmIG8pIGNvbnN0CiAgICAgewotICAgICAgICByZXR1cm4gKCFl
bmFibGVkICYmICFvLmVuYWJsZWQpCi0gICAgICAgICAgICB8fCAoYmxlbmRNb2RlID09IG8uYmxl
bmRNb2RlICYmIGNvbXBvc2l0ZU9wZXJhdG9yID09IG8uY29tcG9zaXRlT3BlcmF0b3IpOworICAg
ICAgICByZXR1cm4gYmxlbmRNb2RlID09IG8uYmxlbmRNb2RlICYmIGNvbXBvc2l0ZU9wZXJhdG9y
ID09IG8uY29tcG9zaXRlT3BlcmF0b3I7CiAgICAgfQogICAgIAotICAgIGJvb2wgZW5hYmxlZDsK
ICAgICBCbGVuZE1vZGUgYmxlbmRNb2RlOwogICAgIENvbXBvc2l0ZU9wZXJhdG9yIGNvbXBvc2l0
ZU9wZXJhdG9yOwogfTsKQEAgLTY3LDcgKzY0LDcgQEAgc3RydWN0IEN1c3RvbUZpbHRlclByb2dy
YW1NaXhTZXR0aW5ncyB7CiAvLyBOdWxsIHN0cmluZ3MgYXJlIHBsYWNlaG9sZGVycyBmb3IgdGhl
IGRlZmF1bHQgc2hhZGVyLgogY2xhc3MgQ3VzdG9tRmlsdGVyUHJvZ3JhbUluZm8gewogcHVibGlj
OgotICAgIEN1c3RvbUZpbHRlclByb2dyYW1JbmZvKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmlu
ZyYsIGNvbnN0IEN1c3RvbUZpbHRlclByb2dyYW1NaXhTZXR0aW5ncyYpOworICAgIEN1c3RvbUZp
bHRlclByb2dyYW1JbmZvKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIEN1c3RvbUZpbHRl
clByb2dyYW1UeXBlLCBjb25zdCBDdXN0b21GaWx0ZXJQcm9ncmFtTWl4U2V0dGluZ3MmKTsKIAog
ICAgIEN1c3RvbUZpbHRlclByb2dyYW1JbmZvKCk7CiAgICAgYm9vbCBpc0VtcHR5VmFsdWUoKSBj
b25zdDsKQEAgLTgwLDEzICs3NywxMiBAQCBwdWJsaWM6CiAKICAgICBjb25zdCBTdHJpbmcmIHZl
cnRleFNoYWRlclN0cmluZygpIGNvbnN0IHsgcmV0dXJuIG1fdmVydGV4U2hhZGVyU3RyaW5nOyB9
CiAgICAgY29uc3QgU3RyaW5nJiBmcmFnbWVudFNoYWRlclN0cmluZygpIGNvbnN0IHsgcmV0dXJu
IG1fZnJhZ21lbnRTaGFkZXJTdHJpbmc7IH0KLSAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIGFkZCBD
dXN0b21GaWx0ZXJQcm9ncmFtVHlwZSB0byBDdXN0b21GaWx0ZXJQcm9ncmFtSW5mbyBhbmQgcmVt
b3ZlIG1peFNldHRpbmdzLmVuYWJsZWQuCi0gICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTk2NDQ4Ci0gICAgQ3VzdG9tRmlsdGVyUHJvZ3JhbVR5cGUgcHJvZ3Jh
bVR5cGUoKSBjb25zdCB7IHJldHVybiBtX21peFNldHRpbmdzLmVuYWJsZWQgPyBQUk9HUkFNX1RZ
UEVfQkxFTkRTX0VMRU1FTlRfVEVYVFVSRSA6IFBST0dSQU1fVFlQRV9OT19FTEVNRU5UX1RFWFRV
UkU7IH0KKyAgICBDdXN0b21GaWx0ZXJQcm9ncmFtVHlwZSBwcm9ncmFtVHlwZSgpIGNvbnN0IHsg
cmV0dXJuIG1fcHJvZ3JhbVR5cGU7IH0KICAgICBjb25zdCBDdXN0b21GaWx0ZXJQcm9ncmFtTWl4
U2V0dGluZ3MmIG1peFNldHRpbmdzKCkgY29uc3QgeyByZXR1cm4gbV9taXhTZXR0aW5nczsgfQog
cHJpdmF0ZToKICAgICBTdHJpbmcgbV92ZXJ0ZXhTaGFkZXJTdHJpbmc7CiAgICAgU3RyaW5nIG1f
ZnJhZ21lbnRTaGFkZXJTdHJpbmc7CisgICAgQ3VzdG9tRmlsdGVyUHJvZ3JhbVR5cGUgbV9wcm9n
cmFtVHlwZTsKICAgICBDdXN0b21GaWx0ZXJQcm9ncmFtTWl4U2V0dGluZ3MgbV9taXhTZXR0aW5n
czsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Zp
bHRlcnMvQ3VzdG9tRmlsdGVyVmFsaWRhdGVkUHJvZ3JhbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0N1c3RvbUZpbHRlclZhbGlkYXRlZFByb2dyYW0uY3Bw
CmluZGV4IGExMzc5ZGY2NmMyZGU4MjY4N2NjNTQ2MmRmMWVkMjM2ZDEzYzM0ZTMuLjIzZWUxNTA0
ZjI3NmFlNDI4MWQ0MjhjMTE0N2M0NWI4ZDg3MGU2MDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVyVmFsaWRhdGVkUHJvZ3Jh
bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0
b21GaWx0ZXJWYWxpZGF0ZWRQcm9ncmFtLmNwcApAQCAtODMsNyArODMsOCBAQCBDdXN0b21GaWx0
ZXJWYWxpZGF0ZWRQcm9ncmFtOjpDdXN0b21GaWx0ZXJWYWxpZGF0ZWRQcm9ncmFtKEN1c3RvbUZp
bHRlckdsb2JhbENvbgogICAgICAgICBvcmlnaW5hbEZyYWdtZW50U2hhZGVyID0gZGVmYXVsdEZy
YWdtZW50U2hhZGVyU3RyaW5nKCk7CiAKICAgICAvLyBTaGFkZXJzIHJlZmVyZW5jZWQgZnJvbSB0
aGUgQ1NTIG1peCBmdW5jdGlvbiB1c2UgYSBkaWZmZXJlbnQgdmFsaWRhdG9yIHRoYW4gcmVndWxh
ciBXZWJHTCBzaGFkZXJzLiBTZWUgQ3VzdG9tRmlsdGVyR2xvYmFsQ29udGV4dC5oIGZvciBtb3Jl
IGRldGFpbHMuCi0gICAgQU5HTEVXZWJLaXRCcmlkZ2UqIHZhbGlkYXRvciA9IHByb2dyYW1JbmZv
Lm1peFNldHRpbmdzKCkuZW5hYmxlZCA/IG1fZ2xvYmFsQ29udGV4dC0+bWl4U2hhZGVyVmFsaWRh
dG9yKCkgOiBtX2dsb2JhbENvbnRleHQtPndlYmdsU2hhZGVyVmFsaWRhdG9yKCk7CisgICAgYm9v
bCBibGVuZHNFbGVtZW50VGV4dHVyZSA9IChwcm9ncmFtSW5mby5wcm9ncmFtVHlwZSgpID09IFBS
T0dSQU1fVFlQRV9CTEVORFNfRUxFTUVOVF9URVhUVVJFKTsKKyAgICBBTkdMRVdlYktpdEJyaWRn
ZSogdmFsaWRhdG9yID0gYmxlbmRzRWxlbWVudFRleHR1cmUgPyBtX2dsb2JhbENvbnRleHQtPm1p
eFNoYWRlclZhbGlkYXRvcigpIDogbV9nbG9iYWxDb250ZXh0LT53ZWJnbFNoYWRlclZhbGlkYXRv
cigpOwogICAgIFN0cmluZyB2ZXJ0ZXhTaGFkZXJMb2csIGZyYWdtZW50U2hhZGVyTG9nOwogICAg
IFZlY3RvcjxBTkdMRVNoYWRlclN5bWJvbD4gc3ltYm9sczsKICAgICBib29sIHZlcnRleFNoYWRl
clZhbGlkID0gdmFsaWRhdG9yLT5jb21waWxlU2hhZGVyU291cmNlKG9yaWdpbmFsVmVydGV4U2hh
ZGVyLnV0ZjgoKS5kYXRhKCksIFNIQURFUl9UWVBFX1ZFUlRFWCwgbV92YWxpZGF0ZWRWZXJ0ZXhT
aGFkZXIsIHZlcnRleFNoYWRlckxvZywgc3ltYm9scyk7CkBAIC0xMDcsNyArMTA4LDcgQEAgQ3Vz
dG9tRmlsdGVyVmFsaWRhdGVkUHJvZ3JhbTo6Q3VzdG9tRmlsdGVyVmFsaWRhdGVkUHJvZ3JhbShD
dXN0b21GaWx0ZXJHbG9iYWxDb24KICAgICB9CiAKICAgICAvLyBXZSBuZWVkIHRvIGFkZCB0ZXh0
dXJlIGFjY2VzcywgYmxlbmRpbmcsIGFuZCBjb21wb3NpdGluZyBjb2RlIHRvIHNoYWRlcnMgdGhh
dCBhcmUgcmVmZXJlbmNlZCBmcm9tIHRoZSBDU1MgbWl4IGZ1bmN0aW9uLgotICAgIGlmIChwcm9n
cmFtSW5mby5taXhTZXR0aW5ncygpLmVuYWJsZWQpIHsKKyAgICBpZiAoYmxlbmRzRWxlbWVudFRl
eHR1cmUpIHsKICAgICAgICAgcmV3cml0ZU1peFZlcnRleFNoYWRlcigpOwogICAgICAgICByZXdy
aXRlTWl4RnJhZ21lbnRTaGFkZXIoKTsKICAgICB9CkBAIC0xMjUsNyArMTI2LDcgQEAgUGFzc1Jl
ZlB0cjxDdXN0b21GaWx0ZXJDb21waWxlZFByb2dyYW0+IEN1c3RvbUZpbHRlclZhbGlkYXRlZFBy
b2dyYW06OmNvbXBpbGVkUHIKIAogdm9pZCBDdXN0b21GaWx0ZXJWYWxpZGF0ZWRQcm9ncmFtOjpy
ZXdyaXRlTWl4VmVydGV4U2hhZGVyKCkKIHsKLSAgICBBU1NFUlQobV9wcm9ncmFtSW5mby5taXhT
ZXR0aW5ncygpLmVuYWJsZWQpOworICAgIEFTU0VSVChtX3Byb2dyYW1JbmZvLnByb2dyYW1UeXBl
KCkgPT0gUFJPR1JBTV9UWVBFX0JMRU5EU19FTEVNRU5UX1RFWFRVUkUpOwogCiAgICAgLy8gRHVy
aW5nIHZhbGlkYXRpb24sIEFOR0xFIHJlbmFtZWQgdGhlIGF1dGhvcidzICJtYWluIiBmdW5jdGlv
biB0byAiY3NzX21haW4iLgogICAgIC8vIFdlIHdyaXRlIG91ciBvd24gIm1haW4iIGZ1bmN0aW9u
IGFuZCBjYWxsICJjc3NfbWFpbiIgZnJvbSBpdC4KQEAgLTE0NCw3ICsxNDUsNyBAQCB2b2lkIEN1
c3RvbUZpbHRlclZhbGlkYXRlZFByb2dyYW06OnJld3JpdGVNaXhWZXJ0ZXhTaGFkZXIoKQogCiB2
b2lkIEN1c3RvbUZpbHRlclZhbGlkYXRlZFByb2dyYW06OnJld3JpdGVNaXhGcmFnbWVudFNoYWRl
cigpCiB7Ci0gICAgQVNTRVJUKG1fcHJvZ3JhbUluZm8ubWl4U2V0dGluZ3MoKS5lbmFibGVkKTsK
KyAgICBBU1NFUlQobV9wcm9ncmFtSW5mby5wcm9ncmFtVHlwZSgpID09IFBST0dSQU1fVFlQRV9C
TEVORFNfRUxFTUVOVF9URVhUVVJFKTsKIAogICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRlcjsKICAg
ICAvLyBBTkdMRSBjb25zaWRlcmVkIHRoZXNlIHN5bWJvbHMgYXMgYnVpbHQtaW5zIGR1cmluZyB2
YWxpZGF0aW9uIHVuZGVyIHRoZSBTSF9DU1NfU0hBREVSU19TUEVDIGZsYWcuCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVDdXN0b21GaWx0ZXJQcm9ncmFt
LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVDdXN0b21GaWx0ZXJQcm9n
cmFtLmgKaW5kZXggMWNiZTAxZDM1ZjA2NzNkMjJhMmUwZGNiN2QxOGJlMTMwMmFiMmZkNS4uOTc0
MDI0YTk1YjQ4OThlOTkyNGMwNTE3NTk0ODY4MjE3ZDljNmFmMCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlQ3VzdG9tRmlsdGVyUHJvZ3JhbS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZUN1c3RvbUZpbHRlclByb2dyYW0u
aApAQCAtNDUsOSArNDUsOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBTdHlsZUN1c3Rv
bUZpbHRlclByb2dyYW0gOiBwdWJsaWMgQ3VzdG9tRmlsdGVyUHJvZ3JhbSwgcHVibGljIENhY2hl
ZFJlc291cmNlQ2xpZW50IHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoK
LSAgICBzdGF0aWMgUGFzc1JlZlB0cjxTdHlsZUN1c3RvbUZpbHRlclByb2dyYW0+IGNyZWF0ZShQ
YXNzUmVmUHRyPFN0eWxlU2hhZGVyPiB2ZXJ0ZXhTaGFkZXIsIFBhc3NSZWZQdHI8U3R5bGVTaGFk
ZXI+IGZyYWdtZW50U2hhZGVyLCBDdXN0b21GaWx0ZXJQcm9ncmFtTWl4U2V0dGluZ3MgbWl4U2V0
dGluZ3MpCisgICAgc3RhdGljIFBhc3NSZWZQdHI8U3R5bGVDdXN0b21GaWx0ZXJQcm9ncmFtPiBj
cmVhdGUoUGFzc1JlZlB0cjxTdHlsZVNoYWRlcj4gdmVydGV4U2hhZGVyLCBQYXNzUmVmUHRyPFN0
eWxlU2hhZGVyPiBmcmFnbWVudFNoYWRlciwgQ3VzdG9tRmlsdGVyUHJvZ3JhbVR5cGUgcHJvZ3Jh
bVR5cGUsIGNvbnN0IEN1c3RvbUZpbHRlclByb2dyYW1NaXhTZXR0aW5ncyYgbWl4U2V0dGluZ3Mp
CiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFN0eWxlQ3VzdG9tRmlsdGVyUHJv
Z3JhbSh2ZXJ0ZXhTaGFkZXIsIGZyYWdtZW50U2hhZGVyLCBtaXhTZXR0aW5ncykpOworICAgICAg
ICByZXR1cm4gYWRvcHRSZWYobmV3IFN0eWxlQ3VzdG9tRmlsdGVyUHJvZ3JhbSh2ZXJ0ZXhTaGFk
ZXIsIGZyYWdtZW50U2hhZGVyLCBwcm9ncmFtVHlwZSwgbWl4U2V0dGluZ3MpKTsKICAgICB9CiAg
ICAgCiAgICAgdm9pZCBzZXRWZXJ0ZXhTaGFkZXIoUGFzc1JlZlB0cjxTdHlsZVNoYWRlcj4gc2hh
ZGVyKSB7IG1fdmVydGV4U2hhZGVyID0gc2hhZGVyOyB9CkBAIC0xMjYsOCArMTI2LDggQEAgcHVi
bGljOgogICAgIH0KIAogcHJpdmF0ZToKLSAgICBTdHlsZUN1c3RvbUZpbHRlclByb2dyYW0oUGFz
c1JlZlB0cjxTdHlsZVNoYWRlcj4gdmVydGV4U2hhZGVyLCBQYXNzUmVmUHRyPFN0eWxlU2hhZGVy
PiBmcmFnbWVudFNoYWRlciwgQ3VzdG9tRmlsdGVyUHJvZ3JhbU1peFNldHRpbmdzIG1peFNldHRp
bmdzKQotICAgICAgICA6IEN1c3RvbUZpbHRlclByb2dyYW0obWl4U2V0dGluZ3MpCisgICAgU3R5
bGVDdXN0b21GaWx0ZXJQcm9ncmFtKFBhc3NSZWZQdHI8U3R5bGVTaGFkZXI+IHZlcnRleFNoYWRl
ciwgUGFzc1JlZlB0cjxTdHlsZVNoYWRlcj4gZnJhZ21lbnRTaGFkZXIsIEN1c3RvbUZpbHRlclBy
b2dyYW1UeXBlIHByb2dyYW1UeXBlLCBjb25zdCBDdXN0b21GaWx0ZXJQcm9ncmFtTWl4U2V0dGlu
Z3MmIG1peFNldHRpbmdzKQorICAgICAgICA6IEN1c3RvbUZpbHRlclByb2dyYW0ocHJvZ3JhbVR5
cGUsIG1peFNldHRpbmdzKQogICAgICAgICAsIG1fdmVydGV4U2hhZGVyKHZlcnRleFNoYWRlcikK
ICAgICAgICAgLCBtX2ZyYWdtZW50U2hhZGVyKGZyYWdtZW50U2hhZGVyKQogICAgICAgICAsIG1f
aXNWZXJ0ZXhTaGFkZXJMb2FkZWQoZmFsc2UpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>168498</attachid>
            <date>2012-10-12 15:34:25 -0700</date>
            <delta_ts>2012-10-15 09:39:36 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-96448-20121012153321.patch</filename>
            <type>text/plain</type>
            <size>18335</size>
            <attacher name="Michelangelo De Simone">michelangelo</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMxMTA1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNmUyZDA2ZTI3NmE1NGJh
MzQ2NTYyNTAzOTZlMWFkMmE2ODI2ZDljYy4uNTkzYWMyNmZjNDA2YTdkNWNkNmViM2JmZjc0MTlj
Njg0MDkzMDUwMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ5IEBACisyMDEyLTEwLTEwICBNaWNo
ZWxhbmdlbG8gRGUgU2ltb25lICA8bWljaGVsYW5nZWxvQHdlYmtpdC5vcmc+CisKKyAgICAgICAg
W0NTUyBTaGFkZXJzXSBBZGQgQ3VzdG9tRmlsdGVyUHJvZ3JhbVR5cGUgdG8gQ3VzdG9tRmlsdGVy
UHJvZ3JhbUluZm8KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTk2NDQ4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgQ3VzdG9tRmlsdGVyUHJvZ3JhbUluZm8gaGFzIGJlZW4gcmVmYWN0b3JlZCB0byBkZWNvdXBs
ZSB0aGUgQ3VzdG9tRmlsdGVyUHJvZ3JhbVR5cGUgZnJvbQorICAgICAgICB0aGUgQ3VzdG9tRmls
dGVyUHJvZ3JhbU1peFNldHRpbmc6IG1fbWl4U2V0dGluZ3MuZW5hYmxlZCB3YXMgcmVkdW5kYW50
IGluIGxpZ2h0IG9mIHRoZSBmYWN0CisgICAgICAgIHRoYXQgbV9wcm9ncmFtVHlwZSBlbmNvZGVk
IHRoZSB2ZXJ5IHNhbWUgaW5mb3JtYXRpb24uIERlcGVuZGVuY2llcyBoYXZlIGJlZW4gdXBkYXRl
ZCB0byByZWZsZWN0CisgICAgICAgIHRoaXMgY2hhbmdlLgorCisgICAgICAgIEN1cnJlbnQgdGVz
dHMgYWxyZWFkeSBjb3ZlciB0aGlzIGNvZGUuCisKKyAgICAgICAgKiBjc3MvQ1NTQ29tcHV0ZWRT
dHlsZURlY2xhcmF0aW9uLmNwcDogCisgICAgICAgIChXZWJDb3JlOjpDU1NDb21wdXRlZFN0eWxl
RGVjbGFyYXRpb246OnZhbHVlRm9yRmlsdGVyKTogVGhlIGNoZWNrIGZvciBtaXhTZXR0aW5ncy5l
bmFibGVkIGhhcyBiZWVuIHJlcGxhY2VkCisgICAgICAgIGJ5IGFuIGV4cGxpY2l0IGNoZWNrIGZv
ciBQUk9HUkFNX1RZUEVfQkxFTkRTX0VMRU1FTlRfVEVYVFVSRSBwcm9ncmFtIHR5cGUuCisgICAg
ICAgICogY3NzL1N0eWxlUmVzb2x2ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVSZXNv
bHZlcjo6Y3JlYXRlQ3VzdG9tRmlsdGVyT3BlcmF0aW9uKTogU2V0dGluZyB0aGUgcHJvZ3JhbSB0
eXBlIGV4cGxpY2l0ZWx5IHdoaWxlIGNyZWF0aW5nIGEKKyAgICAgICAgbmV3IGZpbHRlciBwcm9n
cmFtLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVyUHJv
Z3JhbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDdXN0b21GaWx0ZXJQcm9ncmFtOjpDdXN0b21G
aWx0ZXJQcm9ncmFtKTogQ3VzdG9tRmlsdGVyUHJvZ3JhbSdzIGNvbnN0cnVjdG9yIGhhcyBiZWVu
IHVwZGF0ZWQgdG8KKyAgICAgICAgcmVmbGVjdCB0aGUgbmVlZCBvZiBzZXR0aW5nIHRoZSBwcm9n
cmFtIHR5cGUgZXhwbGljaXRlbHkuCisgICAgICAgIChXZWJDb3JlOjpDdXN0b21GaWx0ZXJQcm9n
cmFtOjpwcm9ncmFtSW5mbyk6IFVwZGF0ZWQgdG8gY3JlYXRlIG5ldyBDdXN0b21GaWx0ZXJQcm9n
cmFtSW5mbyBzZXR0aW5nIHRoZSBwcm9ncmFtCisgICAgICAgIHR5cGUgZXhwbGljaXRlbHkuCisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21GaWx0ZXJQcm9ncmFtLmg6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21GaWx0ZXJQcm9ncmFt
SW5mby5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDdXN0b21GaWx0ZXJQcm9ncmFtSW5mbzo6Q3Vz
dG9tRmlsdGVyUHJvZ3JhbUluZm8pOiBBZGRlZCBtX3Byb2dyYW1UeXBlIGFuZCB1ZHBhdGVkIHRo
ZSByZWxhdGVkIGdldHRlci4KKyAgICAgICAgKFdlYkNvcmU6OkN1c3RvbUZpbHRlclByb2dyYW1J
bmZvOjpoYXNoKTogZGl0dG8KKyAgICAgICAgKFdlYkNvcmU6OkN1c3RvbUZpbHRlclByb2dyYW1J
bmZvOjpvcGVyYXRvcj09KTogTWl4U2V0aW5ncycgZXF1YWxpdHkgY2hlY2sgaXMgYmVpbmcgcGVy
Zm9ybWVkIG9ubHkgd2hldGhlcgorICAgICAgICB0aGUgQ3VzdG9tRmlsdGVyUHJvZ3JhbUluZm8n
cyBwcm9ncmFtIHR5cGUgaXMgUFJPR1JBTV9UWVBFX0JMRU5EU19FTEVNRU5UX1RFWFRVUkUuCisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21GaWx0ZXJQcm9ncmFtSW5m
by5oOgorICAgICAgICAoV2ViQ29yZTo6Q3VzdG9tRmlsdGVyUHJvZ3JhbU1peFNldHRpbmdzOjpD
dXN0b21GaWx0ZXJQcm9ncmFtTWl4U2V0dGluZ3MpOiBHb3QgcmlkIG9mIHRoZSByZWR1bmRhbnQg
ZW5hYmxlZCBmbGFnLgorICAgICAgICAoV2ViQ29yZTo6Q3VzdG9tRmlsdGVyUHJvZ3JhbU1peFNl
dHRpbmdzOjpvcGVyYXRvcj09KTogZGl0dG8KKyAgICAgICAgKEN1c3RvbUZpbHRlclByb2dyYW1J
bmZvKToKKyAgICAgICAgKFdlYkNvcmU6OkN1c3RvbUZpbHRlclByb2dyYW1JbmZvOjpwcm9ncmFt
VHlwZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21GaWx0ZXJW
YWxpZGF0ZWRQcm9ncmFtLmNwcDogVGhlIHJpZ2h0IHNoYWRlciB2YWxpZGF0b3IgaXMgbm93IGJl
aW5nCisgICAgICAgIGNyZWF0ZWQgYWNjb3JkaW5nIHRvIHRoZSBwcm9ncmFtIHR5cGUuCisgICAg
ICAgIChXZWJDb3JlOjpDdXN0b21GaWx0ZXJWYWxpZGF0ZWRQcm9ncmFtOjpDdXN0b21GaWx0ZXJW
YWxpZGF0ZWRQcm9ncmFtKToKKyAgICAgICAgKFdlYkNvcmU6OkN1c3RvbUZpbHRlclZhbGlkYXRl
ZFByb2dyYW06OnJld3JpdGVNaXhWZXJ0ZXhTaGFkZXIpOiBUaGUgcmVmZXJlbmNlIHRvIE1peFNl
dHRpbmdzJyBlbmFibGVkIGZsYWcKKyAgICAgICAgaGFzIGJlZW4gcmVwbGFjZWQgd2l0aCBhIGNo
ZWNrIGZvciB0aGUgcHJvZ3JhbSB0eXBlLgorICAgICAgICAoV2ViQ29yZTo6Q3VzdG9tRmlsdGVy
VmFsaWRhdGVkUHJvZ3JhbTo6cmV3cml0ZU1peEZyYWdtZW50U2hhZGVyKTogZGl0dG8KKyAgICAg
ICAgKiByZW5kZXJpbmcvc3R5bGUvU3R5bGVDdXN0b21GaWx0ZXJQcm9ncmFtLmg6CisgICAgICAg
IChXZWJDb3JlOjpTdHlsZUN1c3RvbUZpbHRlclByb2dyYW06OmNyZWF0ZSk6IFVwZGF0ZWQgdG8g
YmUgYXdhcmUgb2YgdGhlIHByb2dyYW0gdHlwZS4KKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlQ3Vz
dG9tRmlsdGVyUHJvZ3JhbTo6U3R5bGVDdXN0b21GaWx0ZXJQcm9ncmFtKTogZGl0dG8KKwogMjAx
Mi0xMC0xMSAgUm9nZXIgRm9uZyAgPHJvZ2VyX2ZvbmdAYXBwbGUuY29tPgogCiAgICAgICAgIFtX
ZWJHTF0gW01hY10gb25seSB0aGUgbWFwcGVkIHN5bWJvbCBmb3IgdGhlIGZpcnN0IGVsZW1lbnQg
b2YgYSB1bmlmb3JtL2F0dHJpYnV0ZSBhcnJheSBpcyBzdG9yZWQuCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwCmluZGV4IGFhYjhhY2I5
ODMxYTQ2MWUyYmE1YzkzODE2NmQzNTZlM2NlYjExMjIuLjY0YzVkMDQwNGVhMTUyNTQ3OWJkZjU5
ZDg4OGI0ZTBjYjZhMjU4YjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDb21w
dXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDb21w
dXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwCkBAIC05MjEsNyArOTIxLDcgQEAgUGFzc1JlZlB0cjxD
U1NWYWx1ZT4gQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uOjp2YWx1ZUZvckZpbHRlcihjb25z
dCBSZW5kZXJPYmoKICAgICAgICAgICAgICAgICBzaGFkZXJzTGlzdC0+YXBwZW5kKGNzc1ZhbHVl
UG9vbCgpLmNyZWF0ZUlkZW50aWZpZXJWYWx1ZShDU1NWYWx1ZU5vbmUpKTsKIAogICAgICAgICAg
ICAgY29uc3QgQ3VzdG9tRmlsdGVyUHJvZ3JhbU1peFNldHRpbmdzIG1peFNldHRpbmdzID0gcHJv
Z3JhbS0+bWl4U2V0dGluZ3MoKTsKLSAgICAgICAgICAgIGlmIChtaXhTZXR0aW5ncy5lbmFibGVk
KSB7CisgICAgICAgICAgICBpZiAocHJvZ3JhbS0+cHJvZ3JhbVR5cGUoKSA9PSBQUk9HUkFNX1RZ
UEVfQkxFTkRTX0VMRU1FTlRfVEVYVFVSRSkgewogICAgICAgICAgICAgICAgIFJlZlB0cjxXZWJL
aXRDU1NNaXhGdW5jdGlvblZhbHVlPiBtaXhGdW5jdGlvbiA9IFdlYktpdENTU01peEZ1bmN0aW9u
VmFsdWU6OmNyZWF0ZSgpOwogICAgICAgICAgICAgICAgIG1peEZ1bmN0aW9uLT5hcHBlbmQocHJv
Z3JhbS0+ZnJhZ21lbnRTaGFkZXIoKS0+Y3NzVmFsdWUoKSk7CiAgICAgICAgICAgICAgICAgbWl4
RnVuY3Rpb24tPmFwcGVuZChjc3NWYWx1ZVBvb2woKS5jcmVhdGVWYWx1ZShtaXhTZXR0aW5ncy5i
bGVuZE1vZGUpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmNwcAppbmRleCBmYmFkMDhj
MDg3MTgzMjgxYzA1NWUwMDlmNzBhNDhiZjVmODU3OWQ1Li5kNmJkOGY5ZTM0YTgxOWNjMmRiZTJj
ZTAyNjlhZmM5MTZkYjViYTU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVS
ZXNvbHZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuY3BwCkBA
IC00Nzc4LDExICs0Nzc4LDEyIEBAIFBhc3NSZWZQdHI8Q3VzdG9tRmlsdGVyT3BlcmF0aW9uPiBT
dHlsZVJlc29sdmVyOjpjcmVhdGVDdXN0b21GaWx0ZXJPcGVyYXRpb24oV2ViCiAgICAgUmVmUHRy
PFN0eWxlU2hhZGVyPiB2ZXJ0ZXhTaGFkZXIgPSBzdHlsZVNoYWRlcihzaGFkZXJzTGlzdC0+aXRl
bVdpdGhvdXRCb3VuZHNDaGVjaygwKSk7CiAKICAgICBSZWZQdHI8U3R5bGVTaGFkZXI+IGZyYWdt
ZW50U2hhZGVyOworICAgIEN1c3RvbUZpbHRlclByb2dyYW1UeXBlIHByb2dyYW1UeXBlID0gUFJP
R1JBTV9UWVBFX05PX0VMRU1FTlRfVEVYVFVSRTsKICAgICBDdXN0b21GaWx0ZXJQcm9ncmFtTWl4
U2V0dGluZ3MgbWl4U2V0dGluZ3M7CiAgICAgaWYgKHNoYWRlcnNMaXN0LT5sZW5ndGgoKSA+IDEp
IHsKICAgICAgICAgQ1NTVmFsdWUqIGZyYWdtZW50U2hhZGVyT3JNaXhGdW5jdGlvbiA9IHNoYWRl
cnNMaXN0LT5pdGVtV2l0aG91dEJvdW5kc0NoZWNrKDEpOwogICAgICAgICBpZiAoZnJhZ21lbnRT
aGFkZXJPck1peEZ1bmN0aW9uLT5pc1dlYktpdENTU01peEZ1bmN0aW9uVmFsdWUoKSkgewotICAg
ICAgICAgICAgbWl4U2V0dGluZ3MuZW5hYmxlZCA9IHRydWU7CisgICAgICAgICAgICBwcm9ncmFt
VHlwZSA9IFBST0dSQU1fVFlQRV9CTEVORFNfRUxFTUVOVF9URVhUVVJFOwogICAgICAgICAgICAg
V2ViS2l0Q1NTTWl4RnVuY3Rpb25WYWx1ZSogbWl4RnVuY3Rpb24gPSBzdGF0aWNfY2FzdDxXZWJL
aXRDU1NNaXhGdW5jdGlvblZhbHVlKj4oZnJhZ21lbnRTaGFkZXJPck1peEZ1bmN0aW9uKTsKICAg
ICAgICAgICAgIENTU1ZhbHVlTGlzdEl0ZXJhdG9yIGl0ZXJhdG9yKG1peEZ1bmN0aW9uKTsKIApA
QCAtNDg3Miw3ICs0ODczLDcgQEAgUGFzc1JlZlB0cjxDdXN0b21GaWx0ZXJPcGVyYXRpb24+IFN0
eWxlUmVzb2x2ZXI6OmNyZWF0ZUN1c3RvbUZpbHRlck9wZXJhdGlvbihXZWIKICAgICBpZiAocGFy
YW1ldGVyc1ZhbHVlICYmICFwYXJzZUN1c3RvbUZpbHRlclBhcmFtZXRlckxpc3QocGFyYW1ldGVy
c1ZhbHVlLCBwYXJhbWV0ZXJMaXN0KSkKICAgICAgICAgcmV0dXJuIDA7CiAgICAgCi0gICAgUmVm
UHRyPFN0eWxlQ3VzdG9tRmlsdGVyUHJvZ3JhbT4gcHJvZ3JhbSA9IFN0eWxlQ3VzdG9tRmlsdGVy
UHJvZ3JhbTo6Y3JlYXRlKHZlcnRleFNoYWRlci5yZWxlYXNlKCksIGZyYWdtZW50U2hhZGVyLnJl
bGVhc2UoKSwgbWl4U2V0dGluZ3MpOworICAgIFJlZlB0cjxTdHlsZUN1c3RvbUZpbHRlclByb2dy
YW0+IHByb2dyYW0gPSBTdHlsZUN1c3RvbUZpbHRlclByb2dyYW06OmNyZWF0ZSh2ZXJ0ZXhTaGFk
ZXIucmVsZWFzZSgpLCBmcmFnbWVudFNoYWRlci5yZWxlYXNlKCksIHByb2dyYW1UeXBlLCBtaXhT
ZXR0aW5ncyk7CiAgICAgcmV0dXJuIEN1c3RvbUZpbHRlck9wZXJhdGlvbjo6Y3JlYXRlKHByb2dy
YW0ucmVsZWFzZSgpLCBwYXJhbWV0ZXJMaXN0LCBtZXNoUm93cywgbWVzaENvbHVtbnMsIG1lc2hC
b3hUeXBlLCBtZXNoVHlwZSk7CiB9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVyUHJvZ3JhbS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0N1c3RvbUZpbHRlclByb2dyYW0u
Y3BwCmluZGV4IDk0ZTgzZGY5YjgzYjJiNWI1NGZlNzQ3YTdlMmFmY2I0MjI1ZTljZmQuLmM5OTkw
ZDk4ZGMzMDZjNTZjM2RmMDUxZWZiNzlhNGQ4ZjQyOTI2MTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVyUHJvZ3JhbS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21GaWx0
ZXJQcm9ncmFtLmNwcApAQCAtMzgsOCArMzgsOSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
LUN1c3RvbUZpbHRlclByb2dyYW06OkN1c3RvbUZpbHRlclByb2dyYW0oQ3VzdG9tRmlsdGVyUHJv
Z3JhbU1peFNldHRpbmdzIG1peFNldHRpbmdzKQotICAgIDogbV9taXhTZXR0aW5ncyhtaXhTZXR0
aW5ncykKK0N1c3RvbUZpbHRlclByb2dyYW06OkN1c3RvbUZpbHRlclByb2dyYW0oQ3VzdG9tRmls
dGVyUHJvZ3JhbVR5cGUgcHJvZ3JhbVR5cGUsIGNvbnN0IEN1c3RvbUZpbHRlclByb2dyYW1NaXhT
ZXR0aW5ncyYgbWl4U2V0dGluZ3MpCisgICAgOiBtX3Byb2dyYW1UeXBlKHByb2dyYW1UeXBlKQor
ICAgICwgbV9taXhTZXR0aW5ncyhtaXhTZXR0aW5ncykKIHsKICAgICAvLyBLZWVwIHRoZSBjb25z
dHJ1Y3RvciBwcm90ZWN0ZWQgdG8gcHJldmVudCBjcmVhdGluZyB0aGlzIG9iamVjdCBkaXJlY3Rs
eS4KIH0KQEAgLTgxLDcgKzgyLDcgQEAgdm9pZCBDdXN0b21GaWx0ZXJQcm9ncmFtOjpub3RpZnlD
bGllbnRzKCkKIEN1c3RvbUZpbHRlclByb2dyYW1JbmZvIEN1c3RvbUZpbHRlclByb2dyYW06OnBy
b2dyYW1JbmZvKCkgY29uc3QKIHsKICAgICBBU1NFUlQoaXNMb2FkZWQoKSk7Ci0gICAgcmV0dXJu
IEN1c3RvbUZpbHRlclByb2dyYW1JbmZvKHZlcnRleFNoYWRlclN0cmluZygpLCBmcmFnbWVudFNo
YWRlclN0cmluZygpLCBtX21peFNldHRpbmdzKTsKKyAgICByZXR1cm4gQ3VzdG9tRmlsdGVyUHJv
Z3JhbUluZm8odmVydGV4U2hhZGVyU3RyaW5nKCksIGZyYWdtZW50U2hhZGVyU3RyaW5nKCksIG1f
cHJvZ3JhbVR5cGUsIG1fbWl4U2V0dGluZ3MpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0N1
c3RvbUZpbHRlclByb2dyYW0uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Zp
bHRlcnMvQ3VzdG9tRmlsdGVyUHJvZ3JhbS5oCmluZGV4IGVmMTlkZmI4MzAyYmNjNDhhM2Y2YWE1
MTI1ZDM3YjhhMjY5YmRkMzcuLjA0OTJkNDc2ZDk4ZWRmYzY0ZjNjNDM1MDNjNzdiYzQzOTgyMzNi
ODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMv
Q3VzdG9tRmlsdGVyUHJvZ3JhbS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVyUHJvZ3JhbS5oCkBAIC01OCw2ICs1OCw3IEBAIHB1Ymxp
YzoKICAgICB2b2lkIHJlbW92ZUNsaWVudChDdXN0b21GaWx0ZXJQcm9ncmFtQ2xpZW50Kik7CiAg
ICAgCiAgICAgQ3VzdG9tRmlsdGVyUHJvZ3JhbUluZm8gcHJvZ3JhbUluZm8oKSBjb25zdDsKKyAg
ICBDdXN0b21GaWx0ZXJQcm9ncmFtVHlwZSBwcm9ncmFtVHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1f
cHJvZ3JhbVR5cGU7IH0KIAogICAgIC8vIFN0eWxlQ3VzdG9tRmlsdGVyUHJvZ3JhbSBoYXMgdGhl
IG9ubHkgaW1wbGVtZW50YXRpb24gZm9yIHRoZSBmb2xsb3dpbmcgbWV0aG9kLiBUaGF0IG1lYW5z
LCBpdCBjYXN0cyB0byBTdHlsZUN1c3RvbUZpbHRlclByb2dyYW0KICAgICAvLyB3aXRob3V0aCBj
aGVja2luZyB0aGUgdHlwZS4gSWYgeW91IGFkZCBhbm90aGVyIGltcGxlbWVudGF0aW9uLCBhbHNv
IGFkZCBhIG1lY2hhbmlzbSB0byBjaGVjayBmb3IgdGhlIGNvcnJlY3QgdHlwZS4KQEAgLTc1LDEx
ICs3NiwxMiBAQCBwcm90ZWN0ZWQ6CiAgICAgdmlydHVhbCB2b2lkIGRpZFJlbW92ZUxhc3RDbGll
bnQoKSA9IDA7CiAKICAgICAvLyBLZWVwIHRoZSBjb25zdHJ1Y3RvciBwcm90ZWN0ZWQgdG8gcHJl
dmVudCBjcmVhdGluZyB0aGlzIG9iamVjdCBkaXJlY3RseS4KLSAgICBDdXN0b21GaWx0ZXJQcm9n
cmFtKEN1c3RvbUZpbHRlclByb2dyYW1NaXhTZXR0aW5ncyk7CisgICAgQ3VzdG9tRmlsdGVyUHJv
Z3JhbShDdXN0b21GaWx0ZXJQcm9ncmFtVHlwZSwgY29uc3QgQ3VzdG9tRmlsdGVyUHJvZ3JhbU1p
eFNldHRpbmdzJik7CiAKIHByaXZhdGU6CiAgICAgdHlwZWRlZiBIYXNoQ291bnRlZFNldDxDdXN0
b21GaWx0ZXJQcm9ncmFtQ2xpZW50Kj4gQ3VzdG9tRmlsdGVyUHJvZ3JhbUNsaWVudExpc3Q7CiAg
ICAgQ3VzdG9tRmlsdGVyUHJvZ3JhbUNsaWVudExpc3QgbV9jbGllbnRzOworICAgIEN1c3RvbUZp
bHRlclByb2dyYW1UeXBlIG1fcHJvZ3JhbVR5cGU7CiAgICAgQ3VzdG9tRmlsdGVyUHJvZ3JhbU1p
eFNldHRpbmdzIG1fbWl4U2V0dGluZ3M7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0N1c3RvbUZpbHRlclByb2dyYW1JbmZvLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVyUHJv
Z3JhbUluZm8uY3BwCmluZGV4IDFiZjZhOTFmMGQyZjY2NTNkYWI4ZWE3YTJkZTViNWFhMjBiZjg0
ZWIuLmJjMTQ5NGZhZjEyMGUxN2E4MWUyODZlMjQzMDdiNmZhMWE2ODI5ZDEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVyUHJv
Z3JhbUluZm8uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRl
cnMvQ3VzdG9tRmlsdGVyUHJvZ3JhbUluZm8uY3BwCkBAIC02NCw5ICs2NCwxMCBAQCBib29sIEN1
c3RvbUZpbHRlclByb2dyYW1JbmZvOjppc0hhc2hUYWJsZURlbGV0ZWRWYWx1ZSgpIGNvbnN0CiAg
ICAgICAgICYmIG1fZnJhZ21lbnRTaGFkZXJTdHJpbmcuaXNIYXNoVGFibGVEZWxldGVkVmFsdWUo
KTsKIH0KIAotQ3VzdG9tRmlsdGVyUHJvZ3JhbUluZm86OkN1c3RvbUZpbHRlclByb2dyYW1JbmZv
KGNvbnN0IFN0cmluZyYgdmVydGV4U2hhZGVyLCBjb25zdCBTdHJpbmcmIGZyYWdtZW50U2hhZGVy
LCBjb25zdCBDdXN0b21GaWx0ZXJQcm9ncmFtTWl4U2V0dGluZ3MmIG1peFNldHRpbmdzKQorQ3Vz
dG9tRmlsdGVyUHJvZ3JhbUluZm86OkN1c3RvbUZpbHRlclByb2dyYW1JbmZvKGNvbnN0IFN0cmlu
ZyYgdmVydGV4U2hhZGVyLCBjb25zdCBTdHJpbmcmIGZyYWdtZW50U2hhZGVyLCBDdXN0b21GaWx0
ZXJQcm9ncmFtVHlwZSBwcm9ncmFtVHlwZSwgY29uc3QgQ3VzdG9tRmlsdGVyUHJvZ3JhbU1peFNl
dHRpbmdzJiBtaXhTZXR0aW5ncykKICAgICA6IG1fdmVydGV4U2hhZGVyU3RyaW5nKHZlcnRleFNo
YWRlcikKICAgICAsIG1fZnJhZ21lbnRTaGFkZXJTdHJpbmcoZnJhZ21lbnRTaGFkZXIpCisgICAg
LCBtX3Byb2dyYW1UeXBlKHByb2dyYW1UeXBlKQogICAgICwgbV9taXhTZXR0aW5ncyhtaXhTZXR0
aW5ncykKIHsKICAgICAvLyBBdCBsZWFzdCBvbmUgb2YgdGhlIHNoYWRlcnMgbmVlZHMgdG8gYmUg
bm9uLW51bGwuCkBAIC04MCw5ICs4MSw5IEBAIHVuc2lnbmVkIEN1c3RvbUZpbHRlclByb2dyYW1J
bmZvOjpoYXNoKCkgY29uc3QKICAgICB1aW50cHRyX3QgaGFzaENvZGVzWzVdID0gewogICAgICAg
ICBoYXNoUG9zc2libHlOdWxsU3RyaW5nKG1fdmVydGV4U2hhZGVyU3RyaW5nKSwKICAgICAgICAg
aGFzaFBvc3NpYmx5TnVsbFN0cmluZyhtX2ZyYWdtZW50U2hhZGVyU3RyaW5nKSwKLSAgICAgICAg
bV9taXhTZXR0aW5ncy5lbmFibGVkLAotICAgICAgICBtX21peFNldHRpbmdzLmVuYWJsZWQgPyBt
X21peFNldHRpbmdzLmJsZW5kTW9kZSA6IDAsCi0gICAgICAgIG1fbWl4U2V0dGluZ3MuZW5hYmxl
ZCA/IG1fbWl4U2V0dGluZ3MuY29tcG9zaXRlT3BlcmF0b3IgOiAwCisgICAgICAgIG1fcHJvZ3Jh
bVR5cGUgPT0gUFJPR1JBTV9UWVBFX0JMRU5EU19FTEVNRU5UX1RFWFRVUkUsCisgICAgICAgIG1f
cHJvZ3JhbVR5cGUgPT0gUFJPR1JBTV9UWVBFX0JMRU5EU19FTEVNRU5UX1RFWFRVUkUgPyBtX21p
eFNldHRpbmdzLmJsZW5kTW9kZSA6IDAsCisgICAgICAgIG1fcHJvZ3JhbVR5cGUgPT0gUFJPR1JB
TV9UWVBFX0JMRU5EU19FTEVNRU5UX1RFWFRVUkUgPyBtX21peFNldHRpbmdzLmNvbXBvc2l0ZU9w
ZXJhdG9yIDogMAogICAgIH07CiAgICAgcmV0dXJuIFN0cmluZ0hhc2hlcjo6aGFzaE1lbW9yeTxz
aXplb2YoaGFzaENvZGVzKT4oJmhhc2hDb2Rlcyk7CiB9CkBAIC05MSw5ICs5MiwxNiBAQCBib29s
IEN1c3RvbUZpbHRlclByb2dyYW1JbmZvOjpvcGVyYXRvcj09KGNvbnN0IEN1c3RvbUZpbHRlclBy
b2dyYW1JbmZvJiBvKSBjb25zdAogewogICAgIEFTU0VSVCghaXNIYXNoVGFibGVEZWxldGVkVmFs
dWUoKSk7CiAgICAgQVNTRVJUKCFvLmlzSGFzaFRhYmxlRGVsZXRlZFZhbHVlKCkpOworCisgICAg
aWYgKG1fcHJvZ3JhbVR5cGUgPT0gUFJPR1JBTV9UWVBFX0JMRU5EU19FTEVNRU5UX1RFWFRVUkUp
CisgICAgICAgIHJldHVybiBtX3ZlcnRleFNoYWRlclN0cmluZyA9PSBvLm1fdmVydGV4U2hhZGVy
U3RyaW5nCisgICAgICAgICAgICAmJiBtX2ZyYWdtZW50U2hhZGVyU3RyaW5nID09IG8ubV9mcmFn
bWVudFNoYWRlclN0cmluZworICAgICAgICAgICAgJiYgbV9wcm9ncmFtVHlwZSA9PSBvLm1fcHJv
Z3JhbVR5cGUKKyAgICAgICAgICAgICYmIG1fbWl4U2V0dGluZ3MgPT0gby5tX21peFNldHRpbmdz
OworCiAgICAgcmV0dXJuIG1fdmVydGV4U2hhZGVyU3RyaW5nID09IG8ubV92ZXJ0ZXhTaGFkZXJT
dHJpbmcKICAgICAgICAgJiYgbV9mcmFnbWVudFNoYWRlclN0cmluZyA9PSBvLm1fZnJhZ21lbnRT
aGFkZXJTdHJpbmcKLSAgICAgICAgJiYgbV9taXhTZXR0aW5ncyA9PSBvLm1fbWl4U2V0dGluZ3M7
CisgICAgICAgICYmIG1fcHJvZ3JhbVR5cGUgPT0gby5tX3Byb2dyYW1UeXBlOwogfQogCiB9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9maWx0ZXJzL0N1c3RvbUZpbHRlclByb2dyYW1JbmZvLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0N1c3RvbUZpbHRlclByb2dyYW1JbmZvLmgKaW5k
ZXggNTJmZTc3MTU3MGYzZGIwNzczMDQ5OTIwMTdmNjg4ZDZlZDQ1YWJiNi4uM2I1NDRjNWFkOTM2
MWYyOGQwYjJlN2FjODU5ZmZlMzBmNGM3ODRiYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21GaWx0ZXJQcm9ncmFtSW5mby5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVyUHJv
Z3JhbUluZm8uaApAQCAtNDUsMTkgKzQ1LDE2IEBAIGVudW0gQ3VzdG9tRmlsdGVyUHJvZ3JhbVR5
cGUgewogCiBzdHJ1Y3QgQ3VzdG9tRmlsdGVyUHJvZ3JhbU1peFNldHRpbmdzIHsKICAgICBDdXN0
b21GaWx0ZXJQcm9ncmFtTWl4U2V0dGluZ3MoKQotICAgICAgICA6IGVuYWJsZWQoZmFsc2UpCi0g
ICAgICAgICwgYmxlbmRNb2RlKEJsZW5kTW9kZU5vcm1hbCkKKyAgICAgICAgOiBibGVuZE1vZGUo
QmxlbmRNb2RlTm9ybWFsKQogICAgICAgICAsIGNvbXBvc2l0ZU9wZXJhdG9yKENvbXBvc2l0ZVNv
dXJjZU92ZXIpCiAgICAgewogICAgIH0KICAgICAKICAgICBib29sIG9wZXJhdG9yPT0oY29uc3Qg
Q3VzdG9tRmlsdGVyUHJvZ3JhbU1peFNldHRpbmdzJiBvKSBjb25zdAogICAgIHsKLSAgICAgICAg
cmV0dXJuICghZW5hYmxlZCAmJiAhby5lbmFibGVkKQotICAgICAgICAgICAgfHwgKGJsZW5kTW9k
ZSA9PSBvLmJsZW5kTW9kZSAmJiBjb21wb3NpdGVPcGVyYXRvciA9PSBvLmNvbXBvc2l0ZU9wZXJh
dG9yKTsKKyAgICAgICAgcmV0dXJuIGJsZW5kTW9kZSA9PSBvLmJsZW5kTW9kZSAmJiBjb21wb3Np
dGVPcGVyYXRvciA9PSBvLmNvbXBvc2l0ZU9wZXJhdG9yOwogICAgIH0KICAgICAKLSAgICBib29s
IGVuYWJsZWQ7CiAgICAgQmxlbmRNb2RlIGJsZW5kTW9kZTsKICAgICBDb21wb3NpdGVPcGVyYXRv
ciBjb21wb3NpdGVPcGVyYXRvcjsKIH07CkBAIC02Nyw3ICs2NCw3IEBAIHN0cnVjdCBDdXN0b21G
aWx0ZXJQcm9ncmFtTWl4U2V0dGluZ3MgewogLy8gTnVsbCBzdHJpbmdzIGFyZSBwbGFjZWhvbGRl
cnMgZm9yIHRoZSBkZWZhdWx0IHNoYWRlci4KIGNsYXNzIEN1c3RvbUZpbHRlclByb2dyYW1JbmZv
IHsKIHB1YmxpYzoKLSAgICBDdXN0b21GaWx0ZXJQcm9ncmFtSW5mbyhjb25zdCBTdHJpbmcmLCBj
b25zdCBTdHJpbmcmLCBjb25zdCBDdXN0b21GaWx0ZXJQcm9ncmFtTWl4U2V0dGluZ3MmKTsKKyAg
ICBDdXN0b21GaWx0ZXJQcm9ncmFtSW5mbyhjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBD
dXN0b21GaWx0ZXJQcm9ncmFtVHlwZSwgY29uc3QgQ3VzdG9tRmlsdGVyUHJvZ3JhbU1peFNldHRp
bmdzJik7CiAKICAgICBDdXN0b21GaWx0ZXJQcm9ncmFtSW5mbygpOwogICAgIGJvb2wgaXNFbXB0
eVZhbHVlKCkgY29uc3Q7CkBAIC04MCwxMyArNzcsMTIgQEAgcHVibGljOgogCiAgICAgY29uc3Qg
U3RyaW5nJiB2ZXJ0ZXhTaGFkZXJTdHJpbmcoKSBjb25zdCB7IHJldHVybiBtX3ZlcnRleFNoYWRl
clN0cmluZzsgfQogICAgIGNvbnN0IFN0cmluZyYgZnJhZ21lbnRTaGFkZXJTdHJpbmcoKSBjb25z
dCB7IHJldHVybiBtX2ZyYWdtZW50U2hhZGVyU3RyaW5nOyB9Ci0gICAgLy8gRklYTUU6IFdlIHNo
b3VsZCBhZGQgQ3VzdG9tRmlsdGVyUHJvZ3JhbVR5cGUgdG8gQ3VzdG9tRmlsdGVyUHJvZ3JhbUlu
Zm8gYW5kIHJlbW92ZSBtaXhTZXR0aW5ncy5lbmFibGVkLgotICAgIC8vIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NjQ0OAotICAgIEN1c3RvbUZpbHRlclByb2dyYW1U
eXBlIHByb2dyYW1UeXBlKCkgY29uc3QgeyByZXR1cm4gbV9taXhTZXR0aW5ncy5lbmFibGVkID8g
UFJPR1JBTV9UWVBFX0JMRU5EU19FTEVNRU5UX1RFWFRVUkUgOiBQUk9HUkFNX1RZUEVfTk9fRUxF
TUVOVF9URVhUVVJFOyB9CisgICAgQ3VzdG9tRmlsdGVyUHJvZ3JhbVR5cGUgcHJvZ3JhbVR5cGUo
KSBjb25zdCB7IHJldHVybiBtX3Byb2dyYW1UeXBlOyB9CiAgICAgY29uc3QgQ3VzdG9tRmlsdGVy
UHJvZ3JhbU1peFNldHRpbmdzJiBtaXhTZXR0aW5ncygpIGNvbnN0IHsgcmV0dXJuIG1fbWl4U2V0
dGluZ3M7IH0KIHByaXZhdGU6CiAgICAgU3RyaW5nIG1fdmVydGV4U2hhZGVyU3RyaW5nOwogICAg
IFN0cmluZyBtX2ZyYWdtZW50U2hhZGVyU3RyaW5nOworICAgIEN1c3RvbUZpbHRlclByb2dyYW1U
eXBlIG1fcHJvZ3JhbVR5cGU7CiAgICAgQ3VzdG9tRmlsdGVyUHJvZ3JhbU1peFNldHRpbmdzIG1f
bWl4U2V0dGluZ3M7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9maWx0ZXJzL0N1c3RvbUZpbHRlclZhbGlkYXRlZFByb2dyYW0uY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21GaWx0ZXJWYWxpZGF0ZWRQ
cm9ncmFtLmNwcAppbmRleCBhMTM3OWRmNjZjMmRlODI2ODdjYzU0NjJkZjFlZDIzNmQxM2MzNGUz
Li4yM2VlMTUwNGYyNzZhZTQyODFkNDI4YzExNDdjNDViOGQ4NzBlNjAwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0N1c3RvbUZpbHRlclZhbGlk
YXRlZFByb2dyYW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Zp
bHRlcnMvQ3VzdG9tRmlsdGVyVmFsaWRhdGVkUHJvZ3JhbS5jcHAKQEAgLTgzLDcgKzgzLDggQEAg
Q3VzdG9tRmlsdGVyVmFsaWRhdGVkUHJvZ3JhbTo6Q3VzdG9tRmlsdGVyVmFsaWRhdGVkUHJvZ3Jh
bShDdXN0b21GaWx0ZXJHbG9iYWxDb24KICAgICAgICAgb3JpZ2luYWxGcmFnbWVudFNoYWRlciA9
IGRlZmF1bHRGcmFnbWVudFNoYWRlclN0cmluZygpOwogCiAgICAgLy8gU2hhZGVycyByZWZlcmVu
Y2VkIGZyb20gdGhlIENTUyBtaXggZnVuY3Rpb24gdXNlIGEgZGlmZmVyZW50IHZhbGlkYXRvciB0
aGFuIHJlZ3VsYXIgV2ViR0wgc2hhZGVycy4gU2VlIEN1c3RvbUZpbHRlckdsb2JhbENvbnRleHQu
aCBmb3IgbW9yZSBkZXRhaWxzLgotICAgIEFOR0xFV2ViS2l0QnJpZGdlKiB2YWxpZGF0b3IgPSBw
cm9ncmFtSW5mby5taXhTZXR0aW5ncygpLmVuYWJsZWQgPyBtX2dsb2JhbENvbnRleHQtPm1peFNo
YWRlclZhbGlkYXRvcigpIDogbV9nbG9iYWxDb250ZXh0LT53ZWJnbFNoYWRlclZhbGlkYXRvcigp
OworICAgIGJvb2wgYmxlbmRzRWxlbWVudFRleHR1cmUgPSAocHJvZ3JhbUluZm8ucHJvZ3JhbVR5
cGUoKSA9PSBQUk9HUkFNX1RZUEVfQkxFTkRTX0VMRU1FTlRfVEVYVFVSRSk7CisgICAgQU5HTEVX
ZWJLaXRCcmlkZ2UqIHZhbGlkYXRvciA9IGJsZW5kc0VsZW1lbnRUZXh0dXJlID8gbV9nbG9iYWxD
b250ZXh0LT5taXhTaGFkZXJWYWxpZGF0b3IoKSA6IG1fZ2xvYmFsQ29udGV4dC0+d2ViZ2xTaGFk
ZXJWYWxpZGF0b3IoKTsKICAgICBTdHJpbmcgdmVydGV4U2hhZGVyTG9nLCBmcmFnbWVudFNoYWRl
ckxvZzsKICAgICBWZWN0b3I8QU5HTEVTaGFkZXJTeW1ib2w+IHN5bWJvbHM7CiAgICAgYm9vbCB2
ZXJ0ZXhTaGFkZXJWYWxpZCA9IHZhbGlkYXRvci0+Y29tcGlsZVNoYWRlclNvdXJjZShvcmlnaW5h
bFZlcnRleFNoYWRlci51dGY4KCkuZGF0YSgpLCBTSEFERVJfVFlQRV9WRVJURVgsIG1fdmFsaWRh
dGVkVmVydGV4U2hhZGVyLCB2ZXJ0ZXhTaGFkZXJMb2csIHN5bWJvbHMpOwpAQCAtMTA3LDcgKzEw
OCw3IEBAIEN1c3RvbUZpbHRlclZhbGlkYXRlZFByb2dyYW06OkN1c3RvbUZpbHRlclZhbGlkYXRl
ZFByb2dyYW0oQ3VzdG9tRmlsdGVyR2xvYmFsQ29uCiAgICAgfQogCiAgICAgLy8gV2UgbmVlZCB0
byBhZGQgdGV4dHVyZSBhY2Nlc3MsIGJsZW5kaW5nLCBhbmQgY29tcG9zaXRpbmcgY29kZSB0byBz
aGFkZXJzIHRoYXQgYXJlIHJlZmVyZW5jZWQgZnJvbSB0aGUgQ1NTIG1peCBmdW5jdGlvbi4KLSAg
ICBpZiAocHJvZ3JhbUluZm8ubWl4U2V0dGluZ3MoKS5lbmFibGVkKSB7CisgICAgaWYgKGJsZW5k
c0VsZW1lbnRUZXh0dXJlKSB7CiAgICAgICAgIHJld3JpdGVNaXhWZXJ0ZXhTaGFkZXIoKTsKICAg
ICAgICAgcmV3cml0ZU1peEZyYWdtZW50U2hhZGVyKCk7CiAgICAgfQpAQCAtMTI1LDcgKzEyNiw3
IEBAIFBhc3NSZWZQdHI8Q3VzdG9tRmlsdGVyQ29tcGlsZWRQcm9ncmFtPiBDdXN0b21GaWx0ZXJW
YWxpZGF0ZWRQcm9ncmFtOjpjb21waWxlZFByCiAKIHZvaWQgQ3VzdG9tRmlsdGVyVmFsaWRhdGVk
UHJvZ3JhbTo6cmV3cml0ZU1peFZlcnRleFNoYWRlcigpCiB7Ci0gICAgQVNTRVJUKG1fcHJvZ3Jh
bUluZm8ubWl4U2V0dGluZ3MoKS5lbmFibGVkKTsKKyAgICBBU1NFUlQobV9wcm9ncmFtSW5mby5w
cm9ncmFtVHlwZSgpID09IFBST0dSQU1fVFlQRV9CTEVORFNfRUxFTUVOVF9URVhUVVJFKTsKIAog
ICAgIC8vIER1cmluZyB2YWxpZGF0aW9uLCBBTkdMRSByZW5hbWVkIHRoZSBhdXRob3IncyAibWFp
biIgZnVuY3Rpb24gdG8gImNzc19tYWluIi4KICAgICAvLyBXZSB3cml0ZSBvdXIgb3duICJtYWlu
IiBmdW5jdGlvbiBhbmQgY2FsbCAiY3NzX21haW4iIGZyb20gaXQuCkBAIC0xNDQsNyArMTQ1LDcg
QEAgdm9pZCBDdXN0b21GaWx0ZXJWYWxpZGF0ZWRQcm9ncmFtOjpyZXdyaXRlTWl4VmVydGV4U2hh
ZGVyKCkKIAogdm9pZCBDdXN0b21GaWx0ZXJWYWxpZGF0ZWRQcm9ncmFtOjpyZXdyaXRlTWl4RnJh
Z21lbnRTaGFkZXIoKQogewotICAgIEFTU0VSVChtX3Byb2dyYW1JbmZvLm1peFNldHRpbmdzKCku
ZW5hYmxlZCk7CisgICAgQVNTRVJUKG1fcHJvZ3JhbUluZm8ucHJvZ3JhbVR5cGUoKSA9PSBQUk9H
UkFNX1RZUEVfQkxFTkRTX0VMRU1FTlRfVEVYVFVSRSk7CiAKICAgICBTdHJpbmdCdWlsZGVyIGJ1
aWxkZXI7CiAgICAgLy8gQU5HTEUgY29uc2lkZXJlZCB0aGVzZSBzeW1ib2xzIGFzIGJ1aWx0LWlu
cyBkdXJpbmcgdmFsaWRhdGlvbiB1bmRlciB0aGUgU0hfQ1NTX1NIQURFUlNfU1BFQyBmbGFnLgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlQ3VzdG9tRmls
dGVyUHJvZ3JhbS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlQ3VzdG9t
RmlsdGVyUHJvZ3JhbS5oCmluZGV4IDFjYmUwMWQzNWYwNjczZDIyYTJlMGRjYjdkMThiZTEzMDJh
YjJmZDUuLjk3NDAyNGE5NWI0ODk4ZTk5MjRjMDUxNzU5NDg2ODIxN2Q5YzZhZjAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZUN1c3RvbUZpbHRlclByb2dy
YW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVDdXN0b21GaWx0
ZXJQcm9ncmFtLmgKQEAgLTQ1LDkgKzQ1LDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3Mg
U3R5bGVDdXN0b21GaWx0ZXJQcm9ncmFtIDogcHVibGljIEN1c3RvbUZpbHRlclByb2dyYW0sIHB1
YmxpYyBDYWNoZWRSZXNvdXJjZUNsaWVudCB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7
CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8U3R5bGVDdXN0b21GaWx0ZXJQcm9ncmFt
PiBjcmVhdGUoUGFzc1JlZlB0cjxTdHlsZVNoYWRlcj4gdmVydGV4U2hhZGVyLCBQYXNzUmVmUHRy
PFN0eWxlU2hhZGVyPiBmcmFnbWVudFNoYWRlciwgQ3VzdG9tRmlsdGVyUHJvZ3JhbU1peFNldHRp
bmdzIG1peFNldHRpbmdzKQorICAgIHN0YXRpYyBQYXNzUmVmUHRyPFN0eWxlQ3VzdG9tRmlsdGVy
UHJvZ3JhbT4gY3JlYXRlKFBhc3NSZWZQdHI8U3R5bGVTaGFkZXI+IHZlcnRleFNoYWRlciwgUGFz
c1JlZlB0cjxTdHlsZVNoYWRlcj4gZnJhZ21lbnRTaGFkZXIsIEN1c3RvbUZpbHRlclByb2dyYW1U
eXBlIHByb2dyYW1UeXBlLCBjb25zdCBDdXN0b21GaWx0ZXJQcm9ncmFtTWl4U2V0dGluZ3MmIG1p
eFNldHRpbmdzKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBTdHlsZUN1c3Rv
bUZpbHRlclByb2dyYW0odmVydGV4U2hhZGVyLCBmcmFnbWVudFNoYWRlciwgbWl4U2V0dGluZ3Mp
KTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBTdHlsZUN1c3RvbUZpbHRlclByb2dyYW0o
dmVydGV4U2hhZGVyLCBmcmFnbWVudFNoYWRlciwgcHJvZ3JhbVR5cGUsIG1peFNldHRpbmdzKSk7
CiAgICAgfQogICAgIAogICAgIHZvaWQgc2V0VmVydGV4U2hhZGVyKFBhc3NSZWZQdHI8U3R5bGVT
aGFkZXI+IHNoYWRlcikgeyBtX3ZlcnRleFNoYWRlciA9IHNoYWRlcjsgfQpAQCAtMTI2LDggKzEy
Niw4IEBAIHB1YmxpYzoKICAgICB9CiAKIHByaXZhdGU6Ci0gICAgU3R5bGVDdXN0b21GaWx0ZXJQ
cm9ncmFtKFBhc3NSZWZQdHI8U3R5bGVTaGFkZXI+IHZlcnRleFNoYWRlciwgUGFzc1JlZlB0cjxT
dHlsZVNoYWRlcj4gZnJhZ21lbnRTaGFkZXIsIEN1c3RvbUZpbHRlclByb2dyYW1NaXhTZXR0aW5n
cyBtaXhTZXR0aW5ncykKLSAgICAgICAgOiBDdXN0b21GaWx0ZXJQcm9ncmFtKG1peFNldHRpbmdz
KQorICAgIFN0eWxlQ3VzdG9tRmlsdGVyUHJvZ3JhbShQYXNzUmVmUHRyPFN0eWxlU2hhZGVyPiB2
ZXJ0ZXhTaGFkZXIsIFBhc3NSZWZQdHI8U3R5bGVTaGFkZXI+IGZyYWdtZW50U2hhZGVyLCBDdXN0
b21GaWx0ZXJQcm9ncmFtVHlwZSBwcm9ncmFtVHlwZSwgY29uc3QgQ3VzdG9tRmlsdGVyUHJvZ3Jh
bU1peFNldHRpbmdzJiBtaXhTZXR0aW5ncykKKyAgICAgICAgOiBDdXN0b21GaWx0ZXJQcm9ncmFt
KHByb2dyYW1UeXBlLCBtaXhTZXR0aW5ncykKICAgICAgICAgLCBtX3ZlcnRleFNoYWRlcih2ZXJ0
ZXhTaGFkZXIpCiAgICAgICAgICwgbV9mcmFnbWVudFNoYWRlcihmcmFnbWVudFNoYWRlcikKICAg
ICAgICAgLCBtX2lzVmVydGV4U2hhZGVyTG9hZGVkKGZhbHNlKQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>168729</attachid>
            <date>2012-10-15 09:39:40 -0700</date>
            <delta_ts>2012-10-15 14:23:56 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-96448-20121015093830.patch</filename>
            <type>text/plain</type>
            <size>18345</size>
            <attacher name="Michelangelo De Simone">michelangelo</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMxMTA1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNmUyZDA2ZTI3NmE1NGJh
MzQ2NTYyNTAzOTZlMWFkMmE2ODI2ZDljYy4uN2ZiMDAxYmI4NjZhZWJmYTY4MGE2YThkMTVjZGFi
ZDgxMGVkMjdmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ5IEBACisyMDEyLTEwLTEwICBNaWNo
ZWxhbmdlbG8gRGUgU2ltb25lICA8bWljaGVsYW5nZWxvQHdlYmtpdC5vcmc+CisKKyAgICAgICAg
W0NTUyBTaGFkZXJzXSBBZGQgQ3VzdG9tRmlsdGVyUHJvZ3JhbVR5cGUgdG8gQ3VzdG9tRmlsdGVy
UHJvZ3JhbUluZm8KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTk2NDQ4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgS2VubmV0aCBSb2hkZSBDaHJpc3RpYW5z
ZW4uCisKKyAgICAgICAgQ3VzdG9tRmlsdGVyUHJvZ3JhbUluZm8gaGFzIGJlZW4gcmVmYWN0b3Jl
ZCB0byBkZWNvdXBsZSB0aGUgQ3VzdG9tRmlsdGVyUHJvZ3JhbVR5cGUgZnJvbQorICAgICAgICB0
aGUgQ3VzdG9tRmlsdGVyUHJvZ3JhbU1peFNldHRpbmc6IG1fbWl4U2V0dGluZ3MuZW5hYmxlZCB3
YXMgcmVkdW5kYW50IGluIGxpZ2h0IG9mIHRoZSBmYWN0CisgICAgICAgIHRoYXQgbV9wcm9ncmFt
VHlwZSBlbmNvZGVkIHRoZSB2ZXJ5IHNhbWUgaW5mb3JtYXRpb24uIERlcGVuZGVuY2llcyBoYXZl
IGJlZW4gdXBkYXRlZCB0byByZWZsZWN0CisgICAgICAgIHRoaXMgY2hhbmdlLgorCisgICAgICAg
IEN1cnJlbnQgdGVzdHMgYWxyZWFkeSBjb3ZlciB0aGlzIGNvZGUuCisKKyAgICAgICAgKiBjc3Mv
Q1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcDogCisgICAgICAgIChXZWJDb3JlOjpDU1ND
b21wdXRlZFN0eWxlRGVjbGFyYXRpb246OnZhbHVlRm9yRmlsdGVyKTogVGhlIGNoZWNrIGZvciBt
aXhTZXR0aW5ncy5lbmFibGVkIGhhcyBiZWVuIHJlcGxhY2VkCisgICAgICAgIGJ5IGFuIGV4cGxp
Y2l0IGNoZWNrIGZvciBQUk9HUkFNX1RZUEVfQkxFTkRTX0VMRU1FTlRfVEVYVFVSRSBwcm9ncmFt
IHR5cGUuCisgICAgICAgICogY3NzL1N0eWxlUmVzb2x2ZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6U3R5bGVSZXNvbHZlcjo6Y3JlYXRlQ3VzdG9tRmlsdGVyT3BlcmF0aW9uKTogU2V0dGluZyB0
aGUgcHJvZ3JhbSB0eXBlIGV4cGxpY2l0bHkgd2hpbGUgY3JlYXRpbmcgYQorICAgICAgICBuZXcg
ZmlsdGVyIHByb2dyYW0uCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0
b21GaWx0ZXJQcm9ncmFtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkN1c3RvbUZpbHRlclByb2dy
YW06OkN1c3RvbUZpbHRlclByb2dyYW0pOiBDdXN0b21GaWx0ZXJQcm9ncmFtJ3MgY29uc3RydWN0
b3IgaGFzIGJlZW4gdXBkYXRlZCB0bworICAgICAgICByZWZsZWN0IHRoZSBuZWVkIG9mIHNldHRp
bmcgdGhlIHByb2dyYW0gdHlwZSBleHBsaWNpdGx5LgorICAgICAgICAoV2ViQ29yZTo6Q3VzdG9t
RmlsdGVyUHJvZ3JhbTo6cHJvZ3JhbUluZm8pOiBVcGRhdGVkIHRvIGNyZWF0ZSBuZXcgQ3VzdG9t
RmlsdGVyUHJvZ3JhbUluZm8gc2V0dGluZyB0aGUgcHJvZ3JhbQorICAgICAgICB0eXBlIGV4cGxp
Y2l0bHkuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21GaWx0ZXJQ
cm9ncmFtLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21GaWx0
ZXJQcm9ncmFtSW5mby5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDdXN0b21GaWx0ZXJQcm9ncmFt
SW5mbzo6Q3VzdG9tRmlsdGVyUHJvZ3JhbUluZm8pOiBBZGRlZCBtX3Byb2dyYW1UeXBlIGFuZCB1
ZHBhdGVkIHRoZSByZWxhdGVkIGdldHRlci4KKyAgICAgICAgKFdlYkNvcmU6OkN1c3RvbUZpbHRl
clByb2dyYW1JbmZvOjpoYXNoKTogZGl0dG8KKyAgICAgICAgKFdlYkNvcmU6OkN1c3RvbUZpbHRl
clByb2dyYW1JbmZvOjpvcGVyYXRvcj09KTogTWl4U2V0dGluZ3MnIGVxdWFsaXR5IGNoZWNrIGlz
IGJlaW5nIHBlcmZvcm1lZCBvbmx5IHdoZXRoZXIKKyAgICAgICAgdGhlIEN1c3RvbUZpbHRlclBy
b2dyYW1JbmZvJ3MgcHJvZ3JhbSB0eXBlIGlzIFBST0dSQU1fVFlQRV9CTEVORFNfRUxFTUVOVF9U
RVhUVVJFLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVy
UHJvZ3JhbUluZm8uaDoKKyAgICAgICAgKFdlYkNvcmU6OkN1c3RvbUZpbHRlclByb2dyYW1NaXhT
ZXR0aW5nczo6Q3VzdG9tRmlsdGVyUHJvZ3JhbU1peFNldHRpbmdzKTogR290IHJpZCBvZiB0aGUg
cmVkdW5kYW50IGVuYWJsZWQgZmxhZy4KKyAgICAgICAgKFdlYkNvcmU6OkN1c3RvbUZpbHRlclBy
b2dyYW1NaXhTZXR0aW5nczo6b3BlcmF0b3I9PSk6IGRpdHRvCisgICAgICAgIChDdXN0b21GaWx0
ZXJQcm9ncmFtSW5mbyk6CisgICAgICAgIChXZWJDb3JlOjpDdXN0b21GaWx0ZXJQcm9ncmFtSW5m
bzo6cHJvZ3JhbVR5cGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvQ3Vz
dG9tRmlsdGVyVmFsaWRhdGVkUHJvZ3JhbS5jcHA6IFRoZSByaWdodCBzaGFkZXIgdmFsaWRhdG9y
IGlzIG5vdyBiZWluZworICAgICAgICBjcmVhdGVkIGFjY29yZGluZyB0byB0aGUgcHJvZ3JhbSB0
eXBlLgorICAgICAgICAoV2ViQ29yZTo6Q3VzdG9tRmlsdGVyVmFsaWRhdGVkUHJvZ3JhbTo6Q3Vz
dG9tRmlsdGVyVmFsaWRhdGVkUHJvZ3JhbSk6CisgICAgICAgIChXZWJDb3JlOjpDdXN0b21GaWx0
ZXJWYWxpZGF0ZWRQcm9ncmFtOjpyZXdyaXRlTWl4VmVydGV4U2hhZGVyKTogVGhlIHJlZmVyZW5j
ZSB0byBNaXhTZXR0aW5ncycgZW5hYmxlZCBmbGFnCisgICAgICAgIGhhcyBiZWVuIHJlcGxhY2Vk
IHdpdGggYSBjaGVjayBmb3IgdGhlIHByb2dyYW0gdHlwZS4KKyAgICAgICAgKFdlYkNvcmU6OkN1
c3RvbUZpbHRlclZhbGlkYXRlZFByb2dyYW06OnJld3JpdGVNaXhGcmFnbWVudFNoYWRlcik6IGRp
dHRvCisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL1N0eWxlQ3VzdG9tRmlsdGVyUHJvZ3JhbS5o
OgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVDdXN0b21GaWx0ZXJQcm9ncmFtOjpjcmVhdGUpOiBV
cGRhdGVkIHRvIGJlIGF3YXJlIG9mIHRoZSBwcm9ncmFtIHR5cGUuCisgICAgICAgIChXZWJDb3Jl
OjpTdHlsZUN1c3RvbUZpbHRlclByb2dyYW06OlN0eWxlQ3VzdG9tRmlsdGVyUHJvZ3JhbSk6IGRp
dHRvCisKIDIwMTItMTAtMTEgIFJvZ2VyIEZvbmcgIDxyb2dlcl9mb25nQGFwcGxlLmNvbT4KIAog
ICAgICAgICBbV2ViR0xdIFtNYWNdIG9ubHkgdGhlIG1hcHBlZCBzeW1ib2wgZm9yIHRoZSBmaXJz
dCBlbGVtZW50IG9mIGEgdW5pZm9ybS9hdHRyaWJ1dGUgYXJyYXkgaXMgc3RvcmVkLgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcAppbmRl
eCBhYWI4YWNiOTgzMWE0NjFlMmJhNWM5MzgxNjZkMzU2ZTNjZWIxMTIyLi42NGM1ZDA0MDRlYTE1
MjU0NzliZGY1OWQ4ODhiNGUwY2I2YTI1OGI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcApAQCAtOTIxLDcgKzkyMSw3IEBAIFBh
c3NSZWZQdHI8Q1NTVmFsdWU+IENTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbjo6dmFsdWVGb3JG
aWx0ZXIoY29uc3QgUmVuZGVyT2JqCiAgICAgICAgICAgICAgICAgc2hhZGVyc0xpc3QtPmFwcGVu
ZChjc3NWYWx1ZVBvb2woKS5jcmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NTVmFsdWVOb25lKSk7CiAK
ICAgICAgICAgICAgIGNvbnN0IEN1c3RvbUZpbHRlclByb2dyYW1NaXhTZXR0aW5ncyBtaXhTZXR0
aW5ncyA9IHByb2dyYW0tPm1peFNldHRpbmdzKCk7Ci0gICAgICAgICAgICBpZiAobWl4U2V0dGlu
Z3MuZW5hYmxlZCkgeworICAgICAgICAgICAgaWYgKHByb2dyYW0tPnByb2dyYW1UeXBlKCkgPT0g
UFJPR1JBTV9UWVBFX0JMRU5EU19FTEVNRU5UX1RFWFRVUkUpIHsKICAgICAgICAgICAgICAgICBS
ZWZQdHI8V2ViS2l0Q1NTTWl4RnVuY3Rpb25WYWx1ZT4gbWl4RnVuY3Rpb24gPSBXZWJLaXRDU1NN
aXhGdW5jdGlvblZhbHVlOjpjcmVhdGUoKTsKICAgICAgICAgICAgICAgICBtaXhGdW5jdGlvbi0+
YXBwZW5kKHByb2dyYW0tPmZyYWdtZW50U2hhZGVyKCktPmNzc1ZhbHVlKCkpOwogICAgICAgICAg
ICAgICAgIG1peEZ1bmN0aW9uLT5hcHBlbmQoY3NzVmFsdWVQb29sKCkuY3JlYXRlVmFsdWUobWl4
U2V0dGluZ3MuYmxlbmRNb2RlKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5
bGVSZXNvbHZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5jcHAKaW5k
ZXggZmJhZDA4YzA4NzE4MzI4MWMwNTVlMDA5ZjcwYTQ4YmY1Zjg1NzlkNS4uZDZiZDhmOWUzNGE4
MTljYzJkYmUyY2UwMjY5YWZjOTE2ZGI1YmE1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
Y3NzL1N0eWxlUmVzb2x2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29s
dmVyLmNwcApAQCAtNDc3OCwxMSArNDc3OCwxMiBAQCBQYXNzUmVmUHRyPEN1c3RvbUZpbHRlck9w
ZXJhdGlvbj4gU3R5bGVSZXNvbHZlcjo6Y3JlYXRlQ3VzdG9tRmlsdGVyT3BlcmF0aW9uKFdlYgog
ICAgIFJlZlB0cjxTdHlsZVNoYWRlcj4gdmVydGV4U2hhZGVyID0gc3R5bGVTaGFkZXIoc2hhZGVy
c0xpc3QtPml0ZW1XaXRob3V0Qm91bmRzQ2hlY2soMCkpOwogCiAgICAgUmVmUHRyPFN0eWxlU2hh
ZGVyPiBmcmFnbWVudFNoYWRlcjsKKyAgICBDdXN0b21GaWx0ZXJQcm9ncmFtVHlwZSBwcm9ncmFt
VHlwZSA9IFBST0dSQU1fVFlQRV9OT19FTEVNRU5UX1RFWFRVUkU7CiAgICAgQ3VzdG9tRmlsdGVy
UHJvZ3JhbU1peFNldHRpbmdzIG1peFNldHRpbmdzOwogICAgIGlmIChzaGFkZXJzTGlzdC0+bGVu
Z3RoKCkgPiAxKSB7CiAgICAgICAgIENTU1ZhbHVlKiBmcmFnbWVudFNoYWRlck9yTWl4RnVuY3Rp
b24gPSBzaGFkZXJzTGlzdC0+aXRlbVdpdGhvdXRCb3VuZHNDaGVjaygxKTsKICAgICAgICAgaWYg
KGZyYWdtZW50U2hhZGVyT3JNaXhGdW5jdGlvbi0+aXNXZWJLaXRDU1NNaXhGdW5jdGlvblZhbHVl
KCkpIHsKLSAgICAgICAgICAgIG1peFNldHRpbmdzLmVuYWJsZWQgPSB0cnVlOworICAgICAgICAg
ICAgcHJvZ3JhbVR5cGUgPSBQUk9HUkFNX1RZUEVfQkxFTkRTX0VMRU1FTlRfVEVYVFVSRTsKICAg
ICAgICAgICAgIFdlYktpdENTU01peEZ1bmN0aW9uVmFsdWUqIG1peEZ1bmN0aW9uID0gc3RhdGlj
X2Nhc3Q8V2ViS2l0Q1NTTWl4RnVuY3Rpb25WYWx1ZSo+KGZyYWdtZW50U2hhZGVyT3JNaXhGdW5j
dGlvbik7CiAgICAgICAgICAgICBDU1NWYWx1ZUxpc3RJdGVyYXRvciBpdGVyYXRvcihtaXhGdW5j
dGlvbik7CiAKQEAgLTQ4NzIsNyArNDg3Myw3IEBAIFBhc3NSZWZQdHI8Q3VzdG9tRmlsdGVyT3Bl
cmF0aW9uPiBTdHlsZVJlc29sdmVyOjpjcmVhdGVDdXN0b21GaWx0ZXJPcGVyYXRpb24oV2ViCiAg
ICAgaWYgKHBhcmFtZXRlcnNWYWx1ZSAmJiAhcGFyc2VDdXN0b21GaWx0ZXJQYXJhbWV0ZXJMaXN0
KHBhcmFtZXRlcnNWYWx1ZSwgcGFyYW1ldGVyTGlzdCkpCiAgICAgICAgIHJldHVybiAwOwogICAg
IAotICAgIFJlZlB0cjxTdHlsZUN1c3RvbUZpbHRlclByb2dyYW0+IHByb2dyYW0gPSBTdHlsZUN1
c3RvbUZpbHRlclByb2dyYW06OmNyZWF0ZSh2ZXJ0ZXhTaGFkZXIucmVsZWFzZSgpLCBmcmFnbWVu
dFNoYWRlci5yZWxlYXNlKCksIG1peFNldHRpbmdzKTsKKyAgICBSZWZQdHI8U3R5bGVDdXN0b21G
aWx0ZXJQcm9ncmFtPiBwcm9ncmFtID0gU3R5bGVDdXN0b21GaWx0ZXJQcm9ncmFtOjpjcmVhdGUo
dmVydGV4U2hhZGVyLnJlbGVhc2UoKSwgZnJhZ21lbnRTaGFkZXIucmVsZWFzZSgpLCBwcm9ncmFt
VHlwZSwgbWl4U2V0dGluZ3MpOwogICAgIHJldHVybiBDdXN0b21GaWx0ZXJPcGVyYXRpb246OmNy
ZWF0ZShwcm9ncmFtLnJlbGVhc2UoKSwgcGFyYW1ldGVyTGlzdCwgbWVzaFJvd3MsIG1lc2hDb2x1
bW5zLCBtZXNoQm94VHlwZSwgbWVzaFR5cGUpOwogfQogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0N1c3RvbUZpbHRlclByb2dyYW0u
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21GaWx0
ZXJQcm9ncmFtLmNwcAppbmRleCA5NGU4M2RmOWI4M2IyYjViNTRmZTc0N2E3ZTJhZmNiNDIyNWU5
Y2ZkLi5jOTk5MGQ5OGRjMzA2YzU2YzNkZjA1MWVmYjc5YTRkOGY0MjkyNjE3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0N1c3RvbUZpbHRlclBy
b2dyYW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMv
Q3VzdG9tRmlsdGVyUHJvZ3JhbS5jcHAKQEAgLTM4LDggKzM4LDkgQEAKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCi1DdXN0b21GaWx0ZXJQcm9ncmFtOjpDdXN0b21GaWx0ZXJQcm9ncmFtKEN1c3Rv
bUZpbHRlclByb2dyYW1NaXhTZXR0aW5ncyBtaXhTZXR0aW5ncykKLSAgICA6IG1fbWl4U2V0dGlu
Z3MobWl4U2V0dGluZ3MpCitDdXN0b21GaWx0ZXJQcm9ncmFtOjpDdXN0b21GaWx0ZXJQcm9ncmFt
KEN1c3RvbUZpbHRlclByb2dyYW1UeXBlIHByb2dyYW1UeXBlLCBjb25zdCBDdXN0b21GaWx0ZXJQ
cm9ncmFtTWl4U2V0dGluZ3MmIG1peFNldHRpbmdzKQorICAgIDogbV9wcm9ncmFtVHlwZShwcm9n
cmFtVHlwZSkKKyAgICAsIG1fbWl4U2V0dGluZ3MobWl4U2V0dGluZ3MpCiB7CiAgICAgLy8gS2Vl
cCB0aGUgY29uc3RydWN0b3IgcHJvdGVjdGVkIHRvIHByZXZlbnQgY3JlYXRpbmcgdGhpcyBvYmpl
Y3QgZGlyZWN0bHkuCiB9CkBAIC04MSw3ICs4Miw3IEBAIHZvaWQgQ3VzdG9tRmlsdGVyUHJvZ3Jh
bTo6bm90aWZ5Q2xpZW50cygpCiBDdXN0b21GaWx0ZXJQcm9ncmFtSW5mbyBDdXN0b21GaWx0ZXJQ
cm9ncmFtOjpwcm9ncmFtSW5mbygpIGNvbnN0CiB7CiAgICAgQVNTRVJUKGlzTG9hZGVkKCkpOwot
ICAgIHJldHVybiBDdXN0b21GaWx0ZXJQcm9ncmFtSW5mbyh2ZXJ0ZXhTaGFkZXJTdHJpbmcoKSwg
ZnJhZ21lbnRTaGFkZXJTdHJpbmcoKSwgbV9taXhTZXR0aW5ncyk7CisgICAgcmV0dXJuIEN1c3Rv
bUZpbHRlclByb2dyYW1JbmZvKHZlcnRleFNoYWRlclN0cmluZygpLCBmcmFnbWVudFNoYWRlclN0
cmluZygpLCBtX3Byb2dyYW1UeXBlLCBtX21peFNldHRpbmdzKTsKIH0KIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZmlsdGVycy9DdXN0b21GaWx0ZXJQcm9ncmFtLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9maWx0ZXJzL0N1c3RvbUZpbHRlclByb2dyYW0uaAppbmRleCBlZjE5ZGZiODMwMmJj
YzQ4YTNmNmFhNTEyNWQzN2I4YTI2OWJkZDM3Li4wNDkyZDQ3NmQ5OGVkZmM2NGYzYzQzNTAzYzc3
YmM0Mzk4MjMzYjg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9maWx0ZXJzL0N1c3RvbUZpbHRlclByb2dyYW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0N1c3RvbUZpbHRlclByb2dyYW0uaApAQCAtNTgsNiArNTgs
NyBAQCBwdWJsaWM6CiAgICAgdm9pZCByZW1vdmVDbGllbnQoQ3VzdG9tRmlsdGVyUHJvZ3JhbUNs
aWVudCopOwogICAgIAogICAgIEN1c3RvbUZpbHRlclByb2dyYW1JbmZvIHByb2dyYW1JbmZvKCkg
Y29uc3Q7CisgICAgQ3VzdG9tRmlsdGVyUHJvZ3JhbVR5cGUgcHJvZ3JhbVR5cGUoKSBjb25zdCB7
IHJldHVybiBtX3Byb2dyYW1UeXBlOyB9CiAKICAgICAvLyBTdHlsZUN1c3RvbUZpbHRlclByb2dy
YW0gaGFzIHRoZSBvbmx5IGltcGxlbWVudGF0aW9uIGZvciB0aGUgZm9sbG93aW5nIG1ldGhvZC4g
VGhhdCBtZWFucywgaXQgY2FzdHMgdG8gU3R5bGVDdXN0b21GaWx0ZXJQcm9ncmFtCiAgICAgLy8g
d2l0aG91dGggY2hlY2tpbmcgdGhlIHR5cGUuIElmIHlvdSBhZGQgYW5vdGhlciBpbXBsZW1lbnRh
dGlvbiwgYWxzbyBhZGQgYSBtZWNoYW5pc20gdG8gY2hlY2sgZm9yIHRoZSBjb3JyZWN0IHR5cGUu
CkBAIC03NSwxMSArNzYsMTIgQEAgcHJvdGVjdGVkOgogICAgIHZpcnR1YWwgdm9pZCBkaWRSZW1v
dmVMYXN0Q2xpZW50KCkgPSAwOwogCiAgICAgLy8gS2VlcCB0aGUgY29uc3RydWN0b3IgcHJvdGVj
dGVkIHRvIHByZXZlbnQgY3JlYXRpbmcgdGhpcyBvYmplY3QgZGlyZWN0bHkuCi0gICAgQ3VzdG9t
RmlsdGVyUHJvZ3JhbShDdXN0b21GaWx0ZXJQcm9ncmFtTWl4U2V0dGluZ3MpOworICAgIEN1c3Rv
bUZpbHRlclByb2dyYW0oQ3VzdG9tRmlsdGVyUHJvZ3JhbVR5cGUsIGNvbnN0IEN1c3RvbUZpbHRl
clByb2dyYW1NaXhTZXR0aW5ncyYpOwogCiBwcml2YXRlOgogICAgIHR5cGVkZWYgSGFzaENvdW50
ZWRTZXQ8Q3VzdG9tRmlsdGVyUHJvZ3JhbUNsaWVudCo+IEN1c3RvbUZpbHRlclByb2dyYW1DbGll
bnRMaXN0OwogICAgIEN1c3RvbUZpbHRlclByb2dyYW1DbGllbnRMaXN0IG1fY2xpZW50czsKKyAg
ICBDdXN0b21GaWx0ZXJQcm9ncmFtVHlwZSBtX3Byb2dyYW1UeXBlOwogICAgIEN1c3RvbUZpbHRl
clByb2dyYW1NaXhTZXR0aW5ncyBtX21peFNldHRpbmdzOwogfTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21GaWx0ZXJQcm9ncmFt
SW5mby5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0N1c3Rv
bUZpbHRlclByb2dyYW1JbmZvLmNwcAppbmRleCAxYmY2YTkxZjBkMmY2NjUzZGFiOGVhN2EyZGU1
YjVhYTIwYmY4NGViLi5iYzE0OTRmYWYxMjBlMTdhODFlMjg2ZTI0MzA3YjZmYTFhNjgyOWQxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0N1c3Rv
bUZpbHRlclByb2dyYW1JbmZvLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9maWx0ZXJzL0N1c3RvbUZpbHRlclByb2dyYW1JbmZvLmNwcApAQCAtNjQsOSArNjQsMTAg
QEAgYm9vbCBDdXN0b21GaWx0ZXJQcm9ncmFtSW5mbzo6aXNIYXNoVGFibGVEZWxldGVkVmFsdWUo
KSBjb25zdAogICAgICAgICAmJiBtX2ZyYWdtZW50U2hhZGVyU3RyaW5nLmlzSGFzaFRhYmxlRGVs
ZXRlZFZhbHVlKCk7CiB9CiAKLUN1c3RvbUZpbHRlclByb2dyYW1JbmZvOjpDdXN0b21GaWx0ZXJQ
cm9ncmFtSW5mbyhjb25zdCBTdHJpbmcmIHZlcnRleFNoYWRlciwgY29uc3QgU3RyaW5nJiBmcmFn
bWVudFNoYWRlciwgY29uc3QgQ3VzdG9tRmlsdGVyUHJvZ3JhbU1peFNldHRpbmdzJiBtaXhTZXR0
aW5ncykKK0N1c3RvbUZpbHRlclByb2dyYW1JbmZvOjpDdXN0b21GaWx0ZXJQcm9ncmFtSW5mbyhj
b25zdCBTdHJpbmcmIHZlcnRleFNoYWRlciwgY29uc3QgU3RyaW5nJiBmcmFnbWVudFNoYWRlciwg
Q3VzdG9tRmlsdGVyUHJvZ3JhbVR5cGUgcHJvZ3JhbVR5cGUsIGNvbnN0IEN1c3RvbUZpbHRlclBy
b2dyYW1NaXhTZXR0aW5ncyYgbWl4U2V0dGluZ3MpCiAgICAgOiBtX3ZlcnRleFNoYWRlclN0cmlu
Zyh2ZXJ0ZXhTaGFkZXIpCiAgICAgLCBtX2ZyYWdtZW50U2hhZGVyU3RyaW5nKGZyYWdtZW50U2hh
ZGVyKQorICAgICwgbV9wcm9ncmFtVHlwZShwcm9ncmFtVHlwZSkKICAgICAsIG1fbWl4U2V0dGlu
Z3MobWl4U2V0dGluZ3MpCiB7CiAgICAgLy8gQXQgbGVhc3Qgb25lIG9mIHRoZSBzaGFkZXJzIG5l
ZWRzIHRvIGJlIG5vbi1udWxsLgpAQCAtODAsOSArODEsOSBAQCB1bnNpZ25lZCBDdXN0b21GaWx0
ZXJQcm9ncmFtSW5mbzo6aGFzaCgpIGNvbnN0CiAgICAgdWludHB0cl90IGhhc2hDb2Rlc1s1XSA9
IHsKICAgICAgICAgaGFzaFBvc3NpYmx5TnVsbFN0cmluZyhtX3ZlcnRleFNoYWRlclN0cmluZyks
CiAgICAgICAgIGhhc2hQb3NzaWJseU51bGxTdHJpbmcobV9mcmFnbWVudFNoYWRlclN0cmluZyks
Ci0gICAgICAgIG1fbWl4U2V0dGluZ3MuZW5hYmxlZCwKLSAgICAgICAgbV9taXhTZXR0aW5ncy5l
bmFibGVkID8gbV9taXhTZXR0aW5ncy5ibGVuZE1vZGUgOiAwLAotICAgICAgICBtX21peFNldHRp
bmdzLmVuYWJsZWQgPyBtX21peFNldHRpbmdzLmNvbXBvc2l0ZU9wZXJhdG9yIDogMAorICAgICAg
ICBtX3Byb2dyYW1UeXBlID09IFBST0dSQU1fVFlQRV9CTEVORFNfRUxFTUVOVF9URVhUVVJFLAor
ICAgICAgICBtX3Byb2dyYW1UeXBlID09IFBST0dSQU1fVFlQRV9CTEVORFNfRUxFTUVOVF9URVhU
VVJFID8gbV9taXhTZXR0aW5ncy5ibGVuZE1vZGUgOiAwLAorICAgICAgICBtX3Byb2dyYW1UeXBl
ID09IFBST0dSQU1fVFlQRV9CTEVORFNfRUxFTUVOVF9URVhUVVJFID8gbV9taXhTZXR0aW5ncy5j
b21wb3NpdGVPcGVyYXRvciA6IDAKICAgICB9OwogICAgIHJldHVybiBTdHJpbmdIYXNoZXI6Omhh
c2hNZW1vcnk8c2l6ZW9mKGhhc2hDb2Rlcyk+KCZoYXNoQ29kZXMpOwogfQpAQCAtOTEsOSArOTIs
MTYgQEAgYm9vbCBDdXN0b21GaWx0ZXJQcm9ncmFtSW5mbzo6b3BlcmF0b3I9PShjb25zdCBDdXN0
b21GaWx0ZXJQcm9ncmFtSW5mbyYgbykgY29uc3QKIHsKICAgICBBU1NFUlQoIWlzSGFzaFRhYmxl
RGVsZXRlZFZhbHVlKCkpOwogICAgIEFTU0VSVCghby5pc0hhc2hUYWJsZURlbGV0ZWRWYWx1ZSgp
KTsKKworICAgIGlmIChtX3Byb2dyYW1UeXBlID09IFBST0dSQU1fVFlQRV9CTEVORFNfRUxFTUVO
VF9URVhUVVJFKQorICAgICAgICByZXR1cm4gbV92ZXJ0ZXhTaGFkZXJTdHJpbmcgPT0gby5tX3Zl
cnRleFNoYWRlclN0cmluZworICAgICAgICAgICAgJiYgbV9mcmFnbWVudFNoYWRlclN0cmluZyA9
PSBvLm1fZnJhZ21lbnRTaGFkZXJTdHJpbmcKKyAgICAgICAgICAgICYmIG1fcHJvZ3JhbVR5cGUg
PT0gby5tX3Byb2dyYW1UeXBlCisgICAgICAgICAgICAmJiBtX21peFNldHRpbmdzID09IG8ubV9t
aXhTZXR0aW5nczsKKwogICAgIHJldHVybiBtX3ZlcnRleFNoYWRlclN0cmluZyA9PSBvLm1fdmVy
dGV4U2hhZGVyU3RyaW5nCiAgICAgICAgICYmIG1fZnJhZ21lbnRTaGFkZXJTdHJpbmcgPT0gby5t
X2ZyYWdtZW50U2hhZGVyU3RyaW5nCi0gICAgICAgICYmIG1fbWl4U2V0dGluZ3MgPT0gby5tX21p
eFNldHRpbmdzOworICAgICAgICAmJiBtX3Byb2dyYW1UeXBlID09IG8ubV9wcm9ncmFtVHlwZTsK
IH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21GaWx0ZXJQcm9ncmFtSW5mby5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21GaWx0ZXJQcm9ncmFt
SW5mby5oCmluZGV4IDUyZmU3NzE1NzBmM2RiMDc3MzA0OTkyMDE3ZjY4OGQ2ZWQ0NWFiYjYuLjNi
NTQ0YzVhZDkzNjFmMjhkMGIyZTdhYzg1OWZmZTMwZjRjNzg0YmIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVyUHJvZ3JhbUlu
Zm8uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0N1c3Rv
bUZpbHRlclByb2dyYW1JbmZvLmgKQEAgLTQ1LDE5ICs0NSwxNiBAQCBlbnVtIEN1c3RvbUZpbHRl
clByb2dyYW1UeXBlIHsKIAogc3RydWN0IEN1c3RvbUZpbHRlclByb2dyYW1NaXhTZXR0aW5ncyB7
CiAgICAgQ3VzdG9tRmlsdGVyUHJvZ3JhbU1peFNldHRpbmdzKCkKLSAgICAgICAgOiBlbmFibGVk
KGZhbHNlKQotICAgICAgICAsIGJsZW5kTW9kZShCbGVuZE1vZGVOb3JtYWwpCisgICAgICAgIDog
YmxlbmRNb2RlKEJsZW5kTW9kZU5vcm1hbCkKICAgICAgICAgLCBjb21wb3NpdGVPcGVyYXRvcihD
b21wb3NpdGVTb3VyY2VPdmVyKQogICAgIHsKICAgICB9CiAgICAgCiAgICAgYm9vbCBvcGVyYXRv
cj09KGNvbnN0IEN1c3RvbUZpbHRlclByb2dyYW1NaXhTZXR0aW5ncyYgbykgY29uc3QKICAgICB7
Ci0gICAgICAgIHJldHVybiAoIWVuYWJsZWQgJiYgIW8uZW5hYmxlZCkKLSAgICAgICAgICAgIHx8
IChibGVuZE1vZGUgPT0gby5ibGVuZE1vZGUgJiYgY29tcG9zaXRlT3BlcmF0b3IgPT0gby5jb21w
b3NpdGVPcGVyYXRvcik7CisgICAgICAgIHJldHVybiBibGVuZE1vZGUgPT0gby5ibGVuZE1vZGUg
JiYgY29tcG9zaXRlT3BlcmF0b3IgPT0gby5jb21wb3NpdGVPcGVyYXRvcjsKICAgICB9CiAgICAg
Ci0gICAgYm9vbCBlbmFibGVkOwogICAgIEJsZW5kTW9kZSBibGVuZE1vZGU7CiAgICAgQ29tcG9z
aXRlT3BlcmF0b3IgY29tcG9zaXRlT3BlcmF0b3I7CiB9OwpAQCAtNjcsNyArNjQsNyBAQCBzdHJ1
Y3QgQ3VzdG9tRmlsdGVyUHJvZ3JhbU1peFNldHRpbmdzIHsKIC8vIE51bGwgc3RyaW5ncyBhcmUg
cGxhY2Vob2xkZXJzIGZvciB0aGUgZGVmYXVsdCBzaGFkZXIuCiBjbGFzcyBDdXN0b21GaWx0ZXJQ
cm9ncmFtSW5mbyB7CiBwdWJsaWM6Ci0gICAgQ3VzdG9tRmlsdGVyUHJvZ3JhbUluZm8oY29uc3Qg
U3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgY29uc3QgQ3VzdG9tRmlsdGVyUHJvZ3JhbU1peFNldHRp
bmdzJik7CisgICAgQ3VzdG9tRmlsdGVyUHJvZ3JhbUluZm8oY29uc3QgU3RyaW5nJiwgY29uc3Qg
U3RyaW5nJiwgQ3VzdG9tRmlsdGVyUHJvZ3JhbVR5cGUsIGNvbnN0IEN1c3RvbUZpbHRlclByb2dy
YW1NaXhTZXR0aW5ncyYpOwogCiAgICAgQ3VzdG9tRmlsdGVyUHJvZ3JhbUluZm8oKTsKICAgICBi
b29sIGlzRW1wdHlWYWx1ZSgpIGNvbnN0OwpAQCAtODAsMTMgKzc3LDEyIEBAIHB1YmxpYzoKIAog
ICAgIGNvbnN0IFN0cmluZyYgdmVydGV4U2hhZGVyU3RyaW5nKCkgY29uc3QgeyByZXR1cm4gbV92
ZXJ0ZXhTaGFkZXJTdHJpbmc7IH0KICAgICBjb25zdCBTdHJpbmcmIGZyYWdtZW50U2hhZGVyU3Ry
aW5nKCkgY29uc3QgeyByZXR1cm4gbV9mcmFnbWVudFNoYWRlclN0cmluZzsgfQotICAgIC8vIEZJ
WE1FOiBXZSBzaG91bGQgYWRkIEN1c3RvbUZpbHRlclByb2dyYW1UeXBlIHRvIEN1c3RvbUZpbHRl
clByb2dyYW1JbmZvIGFuZCByZW1vdmUgbWl4U2V0dGluZ3MuZW5hYmxlZC4KLSAgICAvLyBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTY0NDgKLSAgICBDdXN0b21GaWx0
ZXJQcm9ncmFtVHlwZSBwcm9ncmFtVHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fbWl4U2V0dGluZ3Mu
ZW5hYmxlZCA/IFBST0dSQU1fVFlQRV9CTEVORFNfRUxFTUVOVF9URVhUVVJFIDogUFJPR1JBTV9U
WVBFX05PX0VMRU1FTlRfVEVYVFVSRTsgfQorICAgIEN1c3RvbUZpbHRlclByb2dyYW1UeXBlIHBy
b2dyYW1UeXBlKCkgY29uc3QgeyByZXR1cm4gbV9wcm9ncmFtVHlwZTsgfQogICAgIGNvbnN0IEN1
c3RvbUZpbHRlclByb2dyYW1NaXhTZXR0aW5ncyYgbWl4U2V0dGluZ3MoKSBjb25zdCB7IHJldHVy
biBtX21peFNldHRpbmdzOyB9CiBwcml2YXRlOgogICAgIFN0cmluZyBtX3ZlcnRleFNoYWRlclN0
cmluZzsKICAgICBTdHJpbmcgbV9mcmFnbWVudFNoYWRlclN0cmluZzsKKyAgICBDdXN0b21GaWx0
ZXJQcm9ncmFtVHlwZSBtX3Byb2dyYW1UeXBlOwogICAgIEN1c3RvbUZpbHRlclByb2dyYW1NaXhT
ZXR0aW5ncyBtX21peFNldHRpbmdzOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21GaWx0ZXJWYWxpZGF0ZWRQcm9ncmFtLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvQ3VzdG9tRmlsdGVy
VmFsaWRhdGVkUHJvZ3JhbS5jcHAKaW5kZXggYTEzNzlkZjY2YzJkZTgyNjg3Y2M1NDYyZGYxZWQy
MzZkMTNjMzRlMy4uMjNlZTE1MDRmMjc2YWU0MjgxZDQyOGMxMTQ3YzQ1YjhkODcwZTYwMCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9DdXN0b21G
aWx0ZXJWYWxpZGF0ZWRQcm9ncmFtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9maWx0ZXJzL0N1c3RvbUZpbHRlclZhbGlkYXRlZFByb2dyYW0uY3BwCkBAIC04Myw3
ICs4Myw4IEBAIEN1c3RvbUZpbHRlclZhbGlkYXRlZFByb2dyYW06OkN1c3RvbUZpbHRlclZhbGlk
YXRlZFByb2dyYW0oQ3VzdG9tRmlsdGVyR2xvYmFsQ29uCiAgICAgICAgIG9yaWdpbmFsRnJhZ21l
bnRTaGFkZXIgPSBkZWZhdWx0RnJhZ21lbnRTaGFkZXJTdHJpbmcoKTsKIAogICAgIC8vIFNoYWRl
cnMgcmVmZXJlbmNlZCBmcm9tIHRoZSBDU1MgbWl4IGZ1bmN0aW9uIHVzZSBhIGRpZmZlcmVudCB2
YWxpZGF0b3IgdGhhbiByZWd1bGFyIFdlYkdMIHNoYWRlcnMuIFNlZSBDdXN0b21GaWx0ZXJHbG9i
YWxDb250ZXh0LmggZm9yIG1vcmUgZGV0YWlscy4KLSAgICBBTkdMRVdlYktpdEJyaWRnZSogdmFs
aWRhdG9yID0gcHJvZ3JhbUluZm8ubWl4U2V0dGluZ3MoKS5lbmFibGVkID8gbV9nbG9iYWxDb250
ZXh0LT5taXhTaGFkZXJWYWxpZGF0b3IoKSA6IG1fZ2xvYmFsQ29udGV4dC0+d2ViZ2xTaGFkZXJW
YWxpZGF0b3IoKTsKKyAgICBib29sIGJsZW5kc0VsZW1lbnRUZXh0dXJlID0gKHByb2dyYW1JbmZv
LnByb2dyYW1UeXBlKCkgPT0gUFJPR1JBTV9UWVBFX0JMRU5EU19FTEVNRU5UX1RFWFRVUkUpOwor
ICAgIEFOR0xFV2ViS2l0QnJpZGdlKiB2YWxpZGF0b3IgPSBibGVuZHNFbGVtZW50VGV4dHVyZSA/
IG1fZ2xvYmFsQ29udGV4dC0+bWl4U2hhZGVyVmFsaWRhdG9yKCkgOiBtX2dsb2JhbENvbnRleHQt
PndlYmdsU2hhZGVyVmFsaWRhdG9yKCk7CiAgICAgU3RyaW5nIHZlcnRleFNoYWRlckxvZywgZnJh
Z21lbnRTaGFkZXJMb2c7CiAgICAgVmVjdG9yPEFOR0xFU2hhZGVyU3ltYm9sPiBzeW1ib2xzOwog
ICAgIGJvb2wgdmVydGV4U2hhZGVyVmFsaWQgPSB2YWxpZGF0b3ItPmNvbXBpbGVTaGFkZXJTb3Vy
Y2Uob3JpZ2luYWxWZXJ0ZXhTaGFkZXIudXRmOCgpLmRhdGEoKSwgU0hBREVSX1RZUEVfVkVSVEVY
LCBtX3ZhbGlkYXRlZFZlcnRleFNoYWRlciwgdmVydGV4U2hhZGVyTG9nLCBzeW1ib2xzKTsKQEAg
LTEwNyw3ICsxMDgsNyBAQCBDdXN0b21GaWx0ZXJWYWxpZGF0ZWRQcm9ncmFtOjpDdXN0b21GaWx0
ZXJWYWxpZGF0ZWRQcm9ncmFtKEN1c3RvbUZpbHRlckdsb2JhbENvbgogICAgIH0KIAogICAgIC8v
IFdlIG5lZWQgdG8gYWRkIHRleHR1cmUgYWNjZXNzLCBibGVuZGluZywgYW5kIGNvbXBvc2l0aW5n
IGNvZGUgdG8gc2hhZGVycyB0aGF0IGFyZSByZWZlcmVuY2VkIGZyb20gdGhlIENTUyBtaXggZnVu
Y3Rpb24uCi0gICAgaWYgKHByb2dyYW1JbmZvLm1peFNldHRpbmdzKCkuZW5hYmxlZCkgeworICAg
IGlmIChibGVuZHNFbGVtZW50VGV4dHVyZSkgewogICAgICAgICByZXdyaXRlTWl4VmVydGV4U2hh
ZGVyKCk7CiAgICAgICAgIHJld3JpdGVNaXhGcmFnbWVudFNoYWRlcigpOwogICAgIH0KQEAgLTEy
NSw3ICsxMjYsNyBAQCBQYXNzUmVmUHRyPEN1c3RvbUZpbHRlckNvbXBpbGVkUHJvZ3JhbT4gQ3Vz
dG9tRmlsdGVyVmFsaWRhdGVkUHJvZ3JhbTo6Y29tcGlsZWRQcgogCiB2b2lkIEN1c3RvbUZpbHRl
clZhbGlkYXRlZFByb2dyYW06OnJld3JpdGVNaXhWZXJ0ZXhTaGFkZXIoKQogewotICAgIEFTU0VS
VChtX3Byb2dyYW1JbmZvLm1peFNldHRpbmdzKCkuZW5hYmxlZCk7CisgICAgQVNTRVJUKG1fcHJv
Z3JhbUluZm8ucHJvZ3JhbVR5cGUoKSA9PSBQUk9HUkFNX1RZUEVfQkxFTkRTX0VMRU1FTlRfVEVY
VFVSRSk7CiAKICAgICAvLyBEdXJpbmcgdmFsaWRhdGlvbiwgQU5HTEUgcmVuYW1lZCB0aGUgYXV0
aG9yJ3MgIm1haW4iIGZ1bmN0aW9uIHRvICJjc3NfbWFpbiIuCiAgICAgLy8gV2Ugd3JpdGUgb3Vy
IG93biAibWFpbiIgZnVuY3Rpb24gYW5kIGNhbGwgImNzc19tYWluIiBmcm9tIGl0LgpAQCAtMTQ0
LDcgKzE0NSw3IEBAIHZvaWQgQ3VzdG9tRmlsdGVyVmFsaWRhdGVkUHJvZ3JhbTo6cmV3cml0ZU1p
eFZlcnRleFNoYWRlcigpCiAKIHZvaWQgQ3VzdG9tRmlsdGVyVmFsaWRhdGVkUHJvZ3JhbTo6cmV3
cml0ZU1peEZyYWdtZW50U2hhZGVyKCkKIHsKLSAgICBBU1NFUlQobV9wcm9ncmFtSW5mby5taXhT
ZXR0aW5ncygpLmVuYWJsZWQpOworICAgIEFTU0VSVChtX3Byb2dyYW1JbmZvLnByb2dyYW1UeXBl
KCkgPT0gUFJPR1JBTV9UWVBFX0JMRU5EU19FTEVNRU5UX1RFWFRVUkUpOwogCiAgICAgU3RyaW5n
QnVpbGRlciBidWlsZGVyOwogICAgIC8vIEFOR0xFIGNvbnNpZGVyZWQgdGhlc2Ugc3ltYm9scyBh
cyBidWlsdC1pbnMgZHVyaW5nIHZhbGlkYXRpb24gdW5kZXIgdGhlIFNIX0NTU19TSEFERVJTX1NQ
RUMgZmxhZy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHls
ZUN1c3RvbUZpbHRlclByb2dyYW0uaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9T
dHlsZUN1c3RvbUZpbHRlclByb2dyYW0uaAppbmRleCAxY2JlMDFkMzVmMDY3M2QyMmEyZTBkY2I3
ZDE4YmUxMzAyYWIyZmQ1Li45NzQwMjRhOTViNDg5OGU5OTI0YzA1MTc1OTQ4NjgyMTdkOWM2YWYw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVDdXN0b21G
aWx0ZXJQcm9ncmFtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxl
Q3VzdG9tRmlsdGVyUHJvZ3JhbS5oCkBAIC00NSw5ICs0NSw5IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIGNsYXNzIFN0eWxlQ3VzdG9tRmlsdGVyUHJvZ3JhbSA6IHB1YmxpYyBDdXN0b21GaWx0ZXJQ
cm9ncmFtLCBwdWJsaWMgQ2FjaGVkUmVzb3VyY2VDbGllbnQgewogICAgIFdURl9NQUtFX0ZBU1Rf
QUxMT0NBVEVEOwogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFN0eWxlQ3VzdG9tRmls
dGVyUHJvZ3JhbT4gY3JlYXRlKFBhc3NSZWZQdHI8U3R5bGVTaGFkZXI+IHZlcnRleFNoYWRlciwg
UGFzc1JlZlB0cjxTdHlsZVNoYWRlcj4gZnJhZ21lbnRTaGFkZXIsIEN1c3RvbUZpbHRlclByb2dy
YW1NaXhTZXR0aW5ncyBtaXhTZXR0aW5ncykKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxTdHlsZUN1
c3RvbUZpbHRlclByb2dyYW0+IGNyZWF0ZShQYXNzUmVmUHRyPFN0eWxlU2hhZGVyPiB2ZXJ0ZXhT
aGFkZXIsIFBhc3NSZWZQdHI8U3R5bGVTaGFkZXI+IGZyYWdtZW50U2hhZGVyLCBDdXN0b21GaWx0
ZXJQcm9ncmFtVHlwZSBwcm9ncmFtVHlwZSwgY29uc3QgQ3VzdG9tRmlsdGVyUHJvZ3JhbU1peFNl
dHRpbmdzJiBtaXhTZXR0aW5ncykKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcg
U3R5bGVDdXN0b21GaWx0ZXJQcm9ncmFtKHZlcnRleFNoYWRlciwgZnJhZ21lbnRTaGFkZXIsIG1p
eFNldHRpbmdzKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgU3R5bGVDdXN0b21GaWx0
ZXJQcm9ncmFtKHZlcnRleFNoYWRlciwgZnJhZ21lbnRTaGFkZXIsIHByb2dyYW1UeXBlLCBtaXhT
ZXR0aW5ncykpOwogICAgIH0KICAgICAKICAgICB2b2lkIHNldFZlcnRleFNoYWRlcihQYXNzUmVm
UHRyPFN0eWxlU2hhZGVyPiBzaGFkZXIpIHsgbV92ZXJ0ZXhTaGFkZXIgPSBzaGFkZXI7IH0KQEAg
LTEyNiw4ICsxMjYsOCBAQCBwdWJsaWM6CiAgICAgfQogCiBwcml2YXRlOgotICAgIFN0eWxlQ3Vz
dG9tRmlsdGVyUHJvZ3JhbShQYXNzUmVmUHRyPFN0eWxlU2hhZGVyPiB2ZXJ0ZXhTaGFkZXIsIFBh
c3NSZWZQdHI8U3R5bGVTaGFkZXI+IGZyYWdtZW50U2hhZGVyLCBDdXN0b21GaWx0ZXJQcm9ncmFt
TWl4U2V0dGluZ3MgbWl4U2V0dGluZ3MpCi0gICAgICAgIDogQ3VzdG9tRmlsdGVyUHJvZ3JhbSht
aXhTZXR0aW5ncykKKyAgICBTdHlsZUN1c3RvbUZpbHRlclByb2dyYW0oUGFzc1JlZlB0cjxTdHls
ZVNoYWRlcj4gdmVydGV4U2hhZGVyLCBQYXNzUmVmUHRyPFN0eWxlU2hhZGVyPiBmcmFnbWVudFNo
YWRlciwgQ3VzdG9tRmlsdGVyUHJvZ3JhbVR5cGUgcHJvZ3JhbVR5cGUsIGNvbnN0IEN1c3RvbUZp
bHRlclByb2dyYW1NaXhTZXR0aW5ncyYgbWl4U2V0dGluZ3MpCisgICAgICAgIDogQ3VzdG9tRmls
dGVyUHJvZ3JhbShwcm9ncmFtVHlwZSwgbWl4U2V0dGluZ3MpCiAgICAgICAgICwgbV92ZXJ0ZXhT
aGFkZXIodmVydGV4U2hhZGVyKQogICAgICAgICAsIG1fZnJhZ21lbnRTaGFkZXIoZnJhZ21lbnRT
aGFkZXIpCiAgICAgICAgICwgbV9pc1ZlcnRleFNoYWRlckxvYWRlZChmYWxzZSkK
</data>

          </attachment>
      

    </bug>

</bugzilla>