<?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>140209</bug_id>
          
          <creation_ts>2015-01-07 14:20:22 -0800</creation_ts>
          <short_desc>Web Inspector: Type check NSArray&apos;s in ObjC Interfaces have the right object types</short_desc>
          <delta_ts>2015-01-08 13:05:07 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Web Inspector</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Joseph Pecoraro">joepeck</reporter>
          <assigned_to name="Joseph Pecoraro">joepeck</assigned_to>
          <cc>burg</cc>
    
    <cc>commit-queue</cc>
    
    <cc>graouts</cc>
    
    <cc>joepeck</cc>
    
    <cc>jonowells</cc>
    
    <cc>mattbaker</cc>
    
    <cc>nvasilyev</cc>
    
    <cc>timothy</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1059532</commentid>
    <comment_count>0</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2015-01-07 14:20:22 -0800</bug_when>
    <thetext>* SUMMARY
Lacking generics, we should type check NSArray&apos;s contain the right object types.

For example:

    @protocol RWIProtocolCSSDomainHandler &lt;NSObject&gt;
    - (void)getMatchedStylesForNodeWithErrorCallback:(void(^)(NSString *error))errorCallback successCallback:(void(^)(NSArray/*&lt;RWIProtocolCSSRuleMatch&gt;*/ **matchedCSSRules, NSArray/*&lt;RWIProtocolCSSPseudoIdMatches&gt;*/ **pseudoElements, NSArray/*&lt;RWIProtocolCSSInheritedStyleEntry&gt;*/ **inherited))successCallback nodeId:(int)nodeId includePseudo:(BOOL *)includePseudo includeInherited:(BOOL *)includeInherited;
    @end

We should type check in the successCallback that &quot;matchedCSSRules&quot; really has RWIProtocolCSSRuleMatch objects and not RWIProtocolCSSRule objects.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1059533</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2015-01-07 14:20:56 -0800</bug_when>
    <thetext>&lt;rdar://problem/19403787&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1059667</commentid>
    <comment_count>2</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2015-01-07 17:58:50 -0800</bug_when>
    <thetext>These are the macros being added, to be used by this patch:

#define THROW_EXCEPTION_FOR_BAD_TYPE_IN_ARRAY(arrayExpr, classExpr, typeName) \
    for (id arrayObject in (arrayExpr)) {                                                                                                                   \
        if (![arrayObject isKindOfClass:(classExpr)])                                                                                                       \
            [NSException raise:NSInvalidArgumentException format:@&quot;array should contain objects of type &apos;%@&apos;, found bad value: %@&quot;, typeName, arrayObject]; \
    }

#define THROW_EXCEPTION_FOR_BAD_TYPE_IN_OPTIONAL_ARRAY(arrayExpr, classExpr, typeName) \
    if (arrayExpr) {                                                                                                                                            \
        for (id arrayObject in (*arrayExpr)) {                                                                                                                  \
            if (![arrayObject isKindOfClass:(classExpr)])                                                                                                       \
                [NSException raise:NSInvalidArgumentException format:@&quot;array should contain objects of type &apos;%@&apos;, found bad value: %@&quot;, typeName, arrayObject]; \
        }                                                                                                                                                       \
    }

Here is an example exception:

2015-01-07 17:55:12.977 JSContextWithDomains[98468:6148319] array should contain objects of type &apos;NSString&apos;, found bad value: 1
2015-01-07 17:55:12.979 JSContextWithDomains[98468:6148319] (
	0   CoreFoundation                      0x00007fff95d9d58c __exceptionPreprocess + 172
	1   libobjc.A.dylib                     0x00007fff8ee2376e objc_exception_throw + 43
	2   CoreFoundation                      0x00007fff95d9d43d +[NSException raise:format:] + 205
	3   WebInspector                        0x0000000100085129 -[RWIProtocolDOMNode setAttributes:] + 285
        ...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1059672</commentid>
    <comment_count>3</comment_count>
      <attachid>244231</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2015-01-07 17:59:47 -0800</bug_when>
    <thetext>Created attachment 244231
[PATCH] Proposed Fix

Needs to correspond with an internal patch adding the macros.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1059674</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-01-07 18:01:31 -0800</bug_when>
    <thetext>This patch modifies the inspector protocol generator. Please ensure that you have rebaselined any generator test results (i.e., by running `Tools/Scripts/run-inspector-generator-tests --reset-results`)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1059771</commentid>
    <comment_count>5</comment_count>
      <attachid>244231</attachid>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2015-01-08 03:08:09 -0800</bug_when>
    <thetext>Comment on attachment 244231
[PATCH] Proposed Fix

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

&gt; Source/JavaScriptCore/inspector/scripts/codegen/generate_objc_backend_dispatcher_implementation.py:122
&gt; +                    lines.append(&apos;        THROW_EXCEPTION_FOR_BAD_TYPE_IN_ARRAY(%s, [%s class], @&quot;%s&quot;);&apos; % (var_name, objc_array_class, objc_array_class))

I suggested using NSStringFromClass in the macro, which would eliminate the type name string param.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1059925</commentid>
    <comment_count>6</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2015-01-08 13:05:07 -0800</bug_when>
    <thetext>Modified this before landing (getting a quick review of the changes). Only type check for Objects, since all other types are already type checked in the ObjC &lt;-&gt; C++ conversion helpers.

http://trac.webkit.org/changeset/178127</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>244231</attachid>
            <date>2015-01-07 17:59:47 -0800</date>
            <delta_ts>2015-01-08 03:08:09 -0800</delta_ts>
            <desc>[PATCH] Proposed Fix</desc>
            <filename>type-check.patch</filename>
            <type>text/plain</type>
            <size>18970</size>
            <attacher name="Joseph Pecoraro">joepeck</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IGVjYTg1YjcuLmRkMTUxNGYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDMxIEBACiAyMDE1LTAxLTA3ICBKb3NlcGggUGVjb3Jh
cm8gIDxwZWNvcmFyb0BhcHBsZS5jb20+CiAKKyAgICAgICAgV2ViIEluc3BlY3RvcjogVHlwZSBj
aGVjayBOU0FycmF5J3MgaW4gT2JqQyBJbnRlcmZhY2VzIGhhdmUgdGhlIHJpZ2h0IG9iamVjdCB0
eXBlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQw
MjA5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQ2hl
Y2sgdGhlIHR5cGVzIG9mIG9iamVjdHMgaW4gTlNBcnJheXMgZm9yIGFsbCBpbnRlcmZhY2VzIChj
b21tYW5kcywgZXZlbnRzLCB0eXBlcykKKyAgICAgICAgd2hlbiB0aGUgdXNlciBjYW4gc2V0IGFu
IGFycmF5IG9mIG9iamVjdHMuCisKKyAgICAgICAgKiBpbnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2Vu
L2dlbmVyYXRlX29iamNfYmFja2VuZF9kaXNwYXRjaGVyX2ltcGxlbWVudGF0aW9uLnB5OgorICAg
ICAgICAoT2JqQ0NvbmZpZ3VyYXRpb25JbXBsZW1lbnRhdGlvbkdlbmVyYXRvci5fZ2VuZXJhdGVf
c3VjY2Vzc19ibG9ja19mb3JfY29tbWFuZCk6CisgICAgICAgICogaW5zcGVjdG9yL3NjcmlwdHMv
Y29kZWdlbi9nZW5lcmF0ZV9vYmpjX2Zyb250ZW5kX2Rpc3BhdGNoZXJfaW1wbGVtZW50YXRpb24u
cHk6CisgICAgICAgIChPYmpDRnJvbnRlbmREaXNwYXRjaGVySW1wbGVtZW50YXRpb25HZW5lcmF0
b3IuX2dlbmVyYXRlX2V2ZW50KToKKyAgICAgICAgKiBpbnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2Vu
L2dlbmVyYXRlX29iamNfcHJvdG9jb2xfdHlwZXNfaW1wbGVtZW50YXRpb24ucHk6CisgICAgICAg
IChPYmpDUHJvdG9jb2xUeXBlc0ltcGxlbWVudGF0aW9uR2VuZXJhdG9yLl9nZW5lcmF0ZV9pbml0
X21ldGhvZF9mb3JfcmVxdWlyZWRfbWVtYmVycyk6CisgICAgICAgIChPYmpDUHJvdG9jb2xUeXBl
c0ltcGxlbWVudGF0aW9uR2VuZXJhdG9yLl9nZW5lcmF0ZV9zZXR0ZXJfZm9yX21lbWJlcik6Cisg
ICAgICAgICogaW5zcGVjdG9yL3NjcmlwdHMvY29kZWdlbi9vYmpjX2dlbmVyYXRvci5weToKKyAg
ICAgICAgKE9iakNHZW5lcmF0b3Iub2JqY19jbGFzc19mb3JfYXJyYXlfdHlwZSk6CisgICAgICAg
IChPYmpDR2VuZXJhdG9yKToKKyAgICAgICAgKiBpbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBl
Y3RlZC9jb21tYW5kcy13aXRoLWFzeW5jLWF0dHJpYnV0ZS5qc29uLXJlc3VsdDoKKyAgICAgICAg
KiBpbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC9jb21tYW5kcy13aXRoLW9wdGlvbmFs
LWNhbGwtcmV0dXJuLXBhcmFtZXRlcnMuanNvbi1yZXN1bHQ6CisgICAgICAgICogaW5zcGVjdG9y
L3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvZXZlbnRzLXdpdGgtb3B0aW9uYWwtcGFyYW1ldGVycy5q
c29uLXJlc3VsdDoKKyAgICAgICAgKiBpbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC9z
aGFkb3dlZC1vcHRpb25hbC10eXBlLXNldHRlcnMuanNvbi1yZXN1bHQ6CisgICAgICAgICogaW5z
cGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvdHlwZS1kZWNsYXJhdGlvbi1vYmplY3QtdHlw
ZS5qc29uLXJlc3VsdDoKKworMjAxNS0wMS0wNyAgSm9zZXBoIFBlY29yYXJvICA8cGVjb3Jhcm9A
YXBwbGUuY29tPgorCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IE9iakMgR2VuZXJhdGUgdHlwZXMg
ZnJvbSB0aGUgR2VuZXJpY1R5cGVzIGRvbWFpbgogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQwMjI5CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL2dlbmVyYXRlX29iamNfYmFja2VuZF9k
aXNwYXRjaGVyX2ltcGxlbWVudGF0aW9uLnB5IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3Bl
Y3Rvci9zY3JpcHRzL2NvZGVnZW4vZ2VuZXJhdGVfb2JqY19iYWNrZW5kX2Rpc3BhdGNoZXJfaW1w
bGVtZW50YXRpb24ucHkKaW5kZXggZDhlNjEyNC4uYmM2YzUxOCAxMDA3NTUKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4vZ2VuZXJhdGVfb2JqY19i
YWNrZW5kX2Rpc3BhdGNoZXJfaW1wbGVtZW50YXRpb24ucHkKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4vZ2VuZXJhdGVfb2JqY19iYWNrZW5kX2Rp
c3BhdGNoZXJfaW1wbGVtZW50YXRpb24ucHkKQEAgLTExNywxMSArMTE3LDE3IEBAIGNsYXNzIE9i
akNDb25maWd1cmF0aW9uSW1wbGVtZW50YXRpb25HZW5lcmF0b3IoR2VuZXJhdG9yKToKICAgICAg
ICAgICAgIGZvciBwYXJhbWV0ZXIgaW4gcmVxdWlyZWRfcG9pbnRlcl9wYXJhbWV0ZXJzOgogICAg
ICAgICAgICAgICAgIHZhcl9uYW1lID0gT2JqQ0dlbmVyYXRvci5pZGVudGlmaWVyX3RvX29iamNf
aWRlbnRpZmllcihwYXJhbWV0ZXIucGFyYW1ldGVyX25hbWUpCiAgICAgICAgICAgICAgICAgbGlu
ZXMuYXBwZW5kKCcgICAgICAgIFRIUk9XX0VYQ0VQVElPTl9GT1JfUkVRVUlSRURfUEFSQU1FVEVS
KCVzLCBAIiVzIik7JyAlICh2YXJfbmFtZSwgdmFyX25hbWUpKQorICAgICAgICAgICAgICAgIG9i
amNfYXJyYXlfY2xhc3MgPSBPYmpDR2VuZXJhdG9yLm9iamNfY2xhc3NfZm9yX2FycmF5X3R5cGUo
cGFyYW1ldGVyLnR5cGUpCisgICAgICAgICAgICAgICAgaWYgb2JqY19hcnJheV9jbGFzczoKKyAg
ICAgICAgICAgICAgICAgICAgbGluZXMuYXBwZW5kKCcgICAgICAgIFRIUk9XX0VYQ0VQVElPTl9G
T1JfQkFEX1RZUEVfSU5fQVJSQVkoJXMsIFslcyBjbGFzc10sIEAiJXMiKTsnICUgKHZhcl9uYW1l
LCBvYmpjX2FycmF5X2NsYXNzLCBvYmpjX2FycmF5X2NsYXNzKSkKIAogICAgICAgICAgICAgb3B0
aW9uYWxfcG9pbnRlcl9wYXJhbWV0ZXJzID0gZmlsdGVyKGxhbWJkYSBwYXJhbWV0ZXI6IHBhcmFt
ZXRlci5pc19vcHRpb25hbCBhbmQgT2JqQ0dlbmVyYXRvci5pc190eXBlX29iamNfcG9pbnRlcl90
eXBlKHBhcmFtZXRlci50eXBlKSwgY29tbWFuZC5yZXR1cm5fcGFyYW1ldGVycykKICAgICAgICAg
ICAgIGZvciBwYXJhbWV0ZXIgaW4gb3B0aW9uYWxfcG9pbnRlcl9wYXJhbWV0ZXJzOgogICAgICAg
ICAgICAgICAgIHZhcl9uYW1lID0gT2JqQ0dlbmVyYXRvci5pZGVudGlmaWVyX3RvX29iamNfaWRl
bnRpZmllcihwYXJhbWV0ZXIucGFyYW1ldGVyX25hbWUpCiAgICAgICAgICAgICAgICAgbGluZXMu
YXBwZW5kKCcgICAgICAgIFRIUk9XX0VYQ0VQVElPTl9GT1JfQkFEX09QVElPTkFMX1BBUkFNRVRF
UiglcywgQCIlcyIpOycgJSAodmFyX25hbWUsIHZhcl9uYW1lKSkKKyAgICAgICAgICAgICAgICBv
YmpjX2FycmF5X2NsYXNzID0gT2JqQ0dlbmVyYXRvci5vYmpjX2NsYXNzX2Zvcl9hcnJheV90eXBl
KHBhcmFtZXRlci50eXBlKQorICAgICAgICAgICAgICAgIGlmIG9iamNfYXJyYXlfY2xhc3M6Cisg
ICAgICAgICAgICAgICAgICAgIGxpbmVzLmFwcGVuZCgnICAgICAgICBUSFJPV19FWENFUFRJT05f
Rk9SX0JBRF9UWVBFX0lOX09QVElPTkFMX0FSUkFZKCVzLCBbJXMgY2xhc3NdLCBAIiVzIik7JyAl
ICh2YXJfbmFtZSwgb2JqY19hcnJheV9jbGFzcywgb2JqY19hcnJheV9jbGFzcykpCiAKICAgICAg
ICAgICAgIGZvciBwYXJhbWV0ZXIgaW4gY29tbWFuZC5yZXR1cm5fcGFyYW1ldGVyczoKICAgICAg
ICAgICAgICAgICBrZXllZF9zZXRfbWV0aG9kID0gQ3BwR2VuZXJhdG9yLmNwcF9zZXR0ZXJfbWV0
aG9kX2Zvcl90eXBlKHBhcmFtZXRlci50eXBlKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4vZ2VuZXJhdGVfb2JqY19mcm9udGVuZF9k
aXNwYXRjaGVyX2ltcGxlbWVudGF0aW9uLnB5IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3Bl
Y3Rvci9zY3JpcHRzL2NvZGVnZW4vZ2VuZXJhdGVfb2JqY19mcm9udGVuZF9kaXNwYXRjaGVyX2lt
cGxlbWVudGF0aW9uLnB5CmluZGV4IGUwZGRhMWQuLmY4YmVlY2EgMTAwNzU1Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL2dlbmVyYXRlX29iamNf
ZnJvbnRlbmRfZGlzcGF0Y2hlcl9pbXBsZW1lbnRhdGlvbi5weQorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvY29kZWdlbi9nZW5lcmF0ZV9vYmpjX2Zyb250ZW5k
X2Rpc3BhdGNoZXJfaW1wbGVtZW50YXRpb24ucHkKQEAgLTEwNywxMSArMTA3LDE3IEBAIGNsYXNz
IE9iakNGcm9udGVuZERpc3BhdGNoZXJJbXBsZW1lbnRhdGlvbkdlbmVyYXRvcihHZW5lcmF0b3Ip
OgogICAgICAgICBmb3IgcGFyYW1ldGVyIGluIHJlcXVpcmVkX3BvaW50ZXJfcGFyYW1ldGVyczoK
ICAgICAgICAgICAgIHZhcl9uYW1lID0gT2JqQ0dlbmVyYXRvci5pZGVudGlmaWVyX3RvX29iamNf
aWRlbnRpZmllcihwYXJhbWV0ZXIucGFyYW1ldGVyX25hbWUpCiAgICAgICAgICAgICBsaW5lcy5h
cHBlbmQoJyAgICBUSFJPV19FWENFUFRJT05fRk9SX1JFUVVJUkVEX1BBUkFNRVRFUiglcywgQCIl
cyIpOycgJSAodmFyX25hbWUsIHZhcl9uYW1lKSkKKyAgICAgICAgICAgIG9iamNfYXJyYXlfY2xh
c3MgPSBPYmpDR2VuZXJhdG9yLm9iamNfY2xhc3NfZm9yX2FycmF5X3R5cGUocGFyYW1ldGVyLnR5
cGUpCisgICAgICAgICAgICBpZiBvYmpjX2FycmF5X2NsYXNzOgorICAgICAgICAgICAgICAgIGxp
bmVzLmFwcGVuZCgnICAgIFRIUk9XX0VYQ0VQVElPTl9GT1JfQkFEX1RZUEVfSU5fQVJSQVkoJXMs
IFslcyBjbGFzc10sIEAiJXMiKTsnICUgKHZhcl9uYW1lLCBvYmpjX2FycmF5X2NsYXNzLCBvYmpj
X2FycmF5X2NsYXNzKSkKIAogICAgICAgICBvcHRpb25hbF9wb2ludGVyX3BhcmFtZXRlcnMgPSBm
aWx0ZXIobGFtYmRhIHBhcmFtZXRlcjogcGFyYW1ldGVyLmlzX29wdGlvbmFsIGFuZCBPYmpDR2Vu
ZXJhdG9yLmlzX3R5cGVfb2JqY19wb2ludGVyX3R5cGUocGFyYW1ldGVyLnR5cGUpLCBldmVudC5l
dmVudF9wYXJhbWV0ZXJzKQogICAgICAgICBmb3IgcGFyYW1ldGVyIGluIG9wdGlvbmFsX3BvaW50
ZXJfcGFyYW1ldGVyczoKICAgICAgICAgICAgIHZhcl9uYW1lID0gT2JqQ0dlbmVyYXRvci5pZGVu
dGlmaWVyX3RvX29iamNfaWRlbnRpZmllcihwYXJhbWV0ZXIucGFyYW1ldGVyX25hbWUpCiAgICAg
ICAgICAgICBsaW5lcy5hcHBlbmQoJyAgICBUSFJPV19FWENFUFRJT05fRk9SX0JBRF9PUFRJT05B
TF9QQVJBTUVURVIoJXMsIEAiJXMiKTsnICUgKHZhcl9uYW1lLCB2YXJfbmFtZSkpCisgICAgICAg
ICAgICBvYmpjX2FycmF5X2NsYXNzID0gT2JqQ0dlbmVyYXRvci5vYmpjX2NsYXNzX2Zvcl9hcnJh
eV90eXBlKHBhcmFtZXRlci50eXBlKQorICAgICAgICAgICAgaWYgb2JqY19hcnJheV9jbGFzczoK
KyAgICAgICAgICAgICAgICBsaW5lcy5hcHBlbmQoJyAgICBUSFJPV19FWENFUFRJT05fRk9SX0JB
RF9UWVBFX0lOX09QVElPTkFMX0FSUkFZKCVzLCBbJXMgY2xhc3NdLCBAIiVzIik7JyAlICh2YXJf
bmFtZSwgb2JqY19hcnJheV9jbGFzcywgb2JqY19hcnJheV9jbGFzcykpCiAKICAgICAgICAgaWYg
cmVxdWlyZWRfcG9pbnRlcl9wYXJhbWV0ZXJzIG9yIG9wdGlvbmFsX3BvaW50ZXJfcGFyYW1ldGVy
czoKICAgICAgICAgICAgIGxpbmVzLmFwcGVuZCgnJykKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL2dlbmVyYXRlX29iamNfcHJvdG9j
b2xfdHlwZXNfaW1wbGVtZW50YXRpb24ucHkgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVj
dG9yL3NjcmlwdHMvY29kZWdlbi9nZW5lcmF0ZV9vYmpjX3Byb3RvY29sX3R5cGVzX2ltcGxlbWVu
dGF0aW9uLnB5CmluZGV4IDQ3MzEwMGIuLmE0ZjI1ZjEgMTAwNzU1Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL2dlbmVyYXRlX29iamNfcHJvdG9j
b2xfdHlwZXNfaW1wbGVtZW50YXRpb24ucHkKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2lu
c3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4vZ2VuZXJhdGVfb2JqY19wcm90b2NvbF90eXBlc19pbXBs
ZW1lbnRhdGlvbi5weQpAQCAtMTE3LDYgKzExNyw5IEBAIGNsYXNzIE9iakNQcm90b2NvbFR5cGVz
SW1wbGVtZW50YXRpb25HZW5lcmF0b3IoR2VuZXJhdG9yKToKICAgICAgICAgICAgIGZvciBtZW1i
ZXIgaW4gcmVxdWlyZWRfcG9pbnRlcl9tZW1iZXJzOgogICAgICAgICAgICAgICAgIHZhcl9uYW1l
ID0gT2JqQ0dlbmVyYXRvci5pZGVudGlmaWVyX3RvX29iamNfaWRlbnRpZmllcihtZW1iZXIubWVt
YmVyX25hbWUpCiAgICAgICAgICAgICAgICAgbGluZXMuYXBwZW5kKCcgICAgVEhST1dfRVhDRVBU
SU9OX0ZPUl9SRVFVSVJFRF9QUk9QRVJUWSglcywgQCIlcyIpOycgJSAodmFyX25hbWUsIHZhcl9u
YW1lKSkKKyAgICAgICAgICAgICAgICBvYmpjX2FycmF5X2NsYXNzID0gT2JqQ0dlbmVyYXRvci5v
YmpjX2NsYXNzX2Zvcl9hcnJheV90eXBlKG1lbWJlci50eXBlKQorICAgICAgICAgICAgICAgIGlm
IG9iamNfYXJyYXlfY2xhc3M6CisgICAgICAgICAgICAgICAgICAgIGxpbmVzLmFwcGVuZCgnICAg
IFRIUk9XX0VYQ0VQVElPTl9GT1JfQkFEX1RZUEVfSU5fQVJSQVkoJXMsIFslcyBjbGFzc10sIEAi
JXMiKTsnICUgKHZhcl9uYW1lLCBvYmpjX2FycmF5X2NsYXNzLCBvYmpjX2FycmF5X2NsYXNzKSkK
ICAgICAgICAgICAgIGxpbmVzLmFwcGVuZCgnJykKIAogICAgICAgICBmb3IgbWVtYmVyIGluIHJl
cXVpcmVkX21lbWJlcnM6CkBAIC0xMzYsNiArMTM5LDkgQEAgY2xhc3MgT2JqQ1Byb3RvY29sVHlw
ZXNJbXBsZW1lbnRhdGlvbkdlbmVyYXRvcihHZW5lcmF0b3IpOgogICAgICAgICBsaW5lcyA9IFtd
CiAgICAgICAgIGxpbmVzLmFwcGVuZCgnLSAodm9pZClzZXQlczooJXMpJXMnICUgKHVjZmlyc3Qo
dmFyX25hbWUpLCBvYmpjX3R5cGUsIHZhcl9uYW1lKSkKICAgICAgICAgbGluZXMuYXBwZW5kKCd7
JykKKyAgICAgICAgb2JqY19hcnJheV9jbGFzcyA9IE9iakNHZW5lcmF0b3Iub2JqY19jbGFzc19m
b3JfYXJyYXlfdHlwZShtZW1iZXIudHlwZSkKKyAgICAgICAgaWYgb2JqY19hcnJheV9jbGFzczoK
KyAgICAgICAgICAgIGxpbmVzLmFwcGVuZCgnICAgIFRIUk9XX0VYQ0VQVElPTl9GT1JfQkFEX1RZ
UEVfSU5fQVJSQVkoJXMsIFslcyBjbGFzc10sIEAiJXMiKTsnICUgKHZhcl9uYW1lLCBvYmpjX2Fy
cmF5X2NsYXNzLCBvYmpjX2FycmF5X2NsYXNzKSkKICAgICAgICAgbGluZXMuYXBwZW5kKCcgICAg
W3N1cGVyICVzOiVzIGZvcktleTpAIiVzIl07JyAlIChzZXR0ZXJfbWV0aG9kLCBjb252ZXJzaW9u
X2V4cHJlc3Npb24sIG1lbWJlci5tZW1iZXJfbmFtZSkpCiAgICAgICAgIGxpbmVzLmFwcGVuZCgn
fScpCiAgICAgICAgIHJldHVybiAnXG4nLmpvaW4obGluZXMpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvY29kZWdlbi9vYmpjX2dlbmVyYXRvci5w
eSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL29iamNf
Z2VuZXJhdG9yLnB5CmluZGV4IGYzODMwOGJjLi5mNmRkMDNjIDEwMDc1NQotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvY29kZWdlbi9vYmpjX2dlbmVyYXRvci5w
eQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvY29kZWdlbi9v
YmpjX2dlbmVyYXRvci5weQpAQCAtMjc5LDYgKzI3OSwxNCBAQCBjbGFzcyBPYmpDR2VuZXJhdG9y
OgogICAgICAgICByZXR1cm4gTm9uZQogCiAgICAgQHN0YXRpY21ldGhvZAorICAgIGRlZiBvYmpj
X2NsYXNzX2Zvcl9hcnJheV90eXBlKF90eXBlKToKKyAgICAgICAgaWYgaXNpbnN0YW5jZShfdHlw
ZSwgQWxpYXNlZFR5cGUpOgorICAgICAgICAgICAgX3R5cGUgPSBfdHlwZS5hbGlhc2VkX3R5cGUK
KyAgICAgICAgaWYgaXNpbnN0YW5jZShfdHlwZSwgQXJyYXlUeXBlKToKKyAgICAgICAgICAgIHJl
dHVybiBPYmpDR2VuZXJhdG9yLm9iamNfY2xhc3NfZm9yX3R5cGUoX3R5cGUuZWxlbWVudF90eXBl
KQorICAgICAgICByZXR1cm4gTm9uZQorCisgICAgQHN0YXRpY21ldGhvZAogICAgIGRlZiBvYmpj
X2FjY2Vzc29yX3R5cGVfZm9yX21lbWJlcihtZW1iZXIpOgogICAgICAgICByZXR1cm4gT2JqQ0dl
bmVyYXRvci5vYmpjX2FjY2Vzc29yX3R5cGVfZm9yX21lbWJlcl9pbnRlcm5hbChtZW1iZXIudHlw
ZSkKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRz
L3Rlc3RzL2V4cGVjdGVkL2NvbW1hbmRzLXdpdGgtYXN5bmMtYXR0cmlidXRlLmpzb24tcmVzdWx0
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVk
L2NvbW1hbmRzLXdpdGgtYXN5bmMtYXR0cmlidXRlLmpzb24tcmVzdWx0CmluZGV4IGMzNjQxNTgu
LjBmMTVkZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2Ny
aXB0cy90ZXN0cy9leHBlY3RlZC9jb21tYW5kcy13aXRoLWFzeW5jLWF0dHJpYnV0ZS5qc29uLXJl
c3VsdAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMv
ZXhwZWN0ZWQvY29tbWFuZHMtd2l0aC1hc3luYy1hdHRyaWJ1dGUuanNvbi1yZXN1bHQKQEAgLTEw
NTcsNiArMTA1Nyw3IEBAIHZvaWQgT2JqQ0luc3BlY3RvckRhdGFiYXNlQmFja2VuZERpc3BhdGNo
ZXI6OmV4ZWN1dGVTUUxTeW5jT3B0aW9uYWxSZXR1cm5WYWx1ZXMoCiAgICAgaWQgc3VjY2Vzc0Nh
bGxiYWNrID0gXihOU0FycmF5Lyo8TlNTdHJpbmc+Ki8gKipjb2x1bW5OYW1lcywgTlNTdHJpbmcg
Kipub3RlcywgZG91YmxlICp0aW1lc3RhbXAsIFJXSVByb3RvY29sSlNPTk9iamVjdCAqKnZhbHVl
cywgUldJUHJvdG9jb2xKU09OT2JqZWN0ICoqcGF5bG9hZCwgaW50ICpkYXRhYmFzZUlkLCBSV0lQ
cm90b2NvbERhdGFiYXNlRXJyb3IgKipzcWxFcnJvciwgUldJUHJvdG9jb2xEYXRhYmFzZVByaW1h
cnlDb2xvcnMgKnNjcmVlbkNvbG9yLCBSV0lQcm90b2NvbERhdGFiYXNlRXhlY3V0ZVNRTFN5bmNP
cHRpb25hbFJldHVyblZhbHVlc1ByaW50Q29sb3IgKnByaW50Q29sb3IpIHsKICAgICAgICAgUmVm
PEluc3BlY3Rvck9iamVjdD4gcmVzdWx0T2JqZWN0ID0gSW5zcGVjdG9yT2JqZWN0OjpjcmVhdGUo
KTsKICAgICAgICAgVEhST1dfRVhDRVBUSU9OX0ZPUl9CQURfT1BUSU9OQUxfUEFSQU1FVEVSKGNv
bHVtbk5hbWVzLCBAImNvbHVtbk5hbWVzIik7CisgICAgICAgIFRIUk9XX0VYQ0VQVElPTl9GT1Jf
QkFEX1RZUEVfSU5fT1BUSU9OQUxfQVJSQVkoY29sdW1uTmFtZXMsIFtOU1N0cmluZyBjbGFzc10s
IEAiTlNTdHJpbmciKTsKICAgICAgICAgVEhST1dfRVhDRVBUSU9OX0ZPUl9CQURfT1BUSU9OQUxf
UEFSQU1FVEVSKG5vdGVzLCBAIm5vdGVzIik7CiAgICAgICAgIFRIUk9XX0VYQ0VQVElPTl9GT1Jf
QkFEX09QVElPTkFMX1BBUkFNRVRFUih2YWx1ZXMsIEAidmFsdWVzIik7CiAgICAgICAgIFRIUk9X
X0VYQ0VQVElPTl9GT1JfQkFEX09QVElPTkFMX1BBUkFNRVRFUihwYXlsb2FkLCBAInBheWxvYWQi
KTsKQEAgLTEwOTcsNiArMTA5OCw3IEBAIHZvaWQgT2JqQ0luc3BlY3RvckRhdGFiYXNlQmFja2Vu
ZERpc3BhdGNoZXI6OmV4ZWN1dGVTUUxBc3luY09wdGlvbmFsUmV0dXJuVmFsdWVzCiAgICAgaWQg
c3VjY2Vzc0NhbGxiYWNrID0gXihOU0FycmF5Lyo8TlNTdHJpbmc+Ki8gKipjb2x1bW5OYW1lcywg
TlNTdHJpbmcgKipub3RlcywgZG91YmxlICp0aW1lc3RhbXAsIFJXSVByb3RvY29sSlNPTk9iamVj
dCAqKnZhbHVlcywgUldJUHJvdG9jb2xKU09OT2JqZWN0ICoqcGF5bG9hZCwgaW50ICpkYXRhYmFz
ZUlkLCBSV0lQcm90b2NvbERhdGFiYXNlRXJyb3IgKipzcWxFcnJvciwgUldJUHJvdG9jb2xEYXRh
YmFzZVByaW1hcnlDb2xvcnMgKnNjcmVlbkNvbG9yLCBSV0lQcm90b2NvbERhdGFiYXNlRXhlY3V0
ZVNRTEFzeW5jT3B0aW9uYWxSZXR1cm5WYWx1ZXNQcmludENvbG9yICpwcmludENvbG9yKSB7CiAg
ICAgICAgIFJlZjxJbnNwZWN0b3JPYmplY3Q+IHJlc3VsdE9iamVjdCA9IEluc3BlY3Rvck9iamVj
dDo6Y3JlYXRlKCk7CiAgICAgICAgIFRIUk9XX0VYQ0VQVElPTl9GT1JfQkFEX09QVElPTkFMX1BB
UkFNRVRFUihjb2x1bW5OYW1lcywgQCJjb2x1bW5OYW1lcyIpOworICAgICAgICBUSFJPV19FWENF
UFRJT05fRk9SX0JBRF9UWVBFX0lOX09QVElPTkFMX0FSUkFZKGNvbHVtbk5hbWVzLCBbTlNTdHJp
bmcgY2xhc3NdLCBAIk5TU3RyaW5nIik7CiAgICAgICAgIFRIUk9XX0VYQ0VQVElPTl9GT1JfQkFE
X09QVElPTkFMX1BBUkFNRVRFUihub3RlcywgQCJub3RlcyIpOwogICAgICAgICBUSFJPV19FWENF
UFRJT05fRk9SX0JBRF9PUFRJT05BTF9QQVJBTUVURVIodmFsdWVzLCBAInZhbHVlcyIpOwogICAg
ICAgICBUSFJPV19FWENFUFRJT05fRk9SX0JBRF9PUFRJT05BTF9QQVJBTUVURVIocGF5bG9hZCwg
QCJwYXlsb2FkIik7CkBAIC0xMTM3LDYgKzExMzksNyBAQCB2b2lkIE9iakNJbnNwZWN0b3JEYXRh
YmFzZUJhY2tlbmREaXNwYXRjaGVyOjpleGVjdXRlU1FMU3luYyhsb25nIGNhbGxJZCwgaW50IGlu
XwogICAgIGlkIHN1Y2Nlc3NDYWxsYmFjayA9IF4oTlNBcnJheS8qPE5TU3RyaW5nPiovICpjb2x1
bW5OYW1lcywgTlNTdHJpbmcgKm5vdGVzLCBkb3VibGUgdGltZXN0YW1wLCBSV0lQcm90b2NvbEpT
T05PYmplY3QgKnZhbHVlcywgUldJUHJvdG9jb2xKU09OT2JqZWN0ICpwYXlsb2FkLCBpbnQgZGF0
YWJhc2VJZCwgUldJUHJvdG9jb2xEYXRhYmFzZUVycm9yICpzcWxFcnJvciwgUldJUHJvdG9jb2xE
YXRhYmFzZVByaW1hcnlDb2xvcnMgc2NyZWVuQ29sb3IsIFJXSVByb3RvY29sRGF0YWJhc2VFeGVj
dXRlU1FMU3luY1ByaW50Q29sb3IgcHJpbnRDb2xvcikgewogICAgICAgICBSZWY8SW5zcGVjdG9y
T2JqZWN0PiByZXN1bHRPYmplY3QgPSBJbnNwZWN0b3JPYmplY3Q6OmNyZWF0ZSgpOwogICAgICAg
ICBUSFJPV19FWENFUFRJT05fRk9SX1JFUVVJUkVEX1BBUkFNRVRFUihjb2x1bW5OYW1lcywgQCJj
b2x1bW5OYW1lcyIpOworICAgICAgICBUSFJPV19FWENFUFRJT05fRk9SX0JBRF9UWVBFX0lOX0FS
UkFZKGNvbHVtbk5hbWVzLCBbTlNTdHJpbmcgY2xhc3NdLCBAIk5TU3RyaW5nIik7CiAgICAgICAg
IFRIUk9XX0VYQ0VQVElPTl9GT1JfUkVRVUlSRURfUEFSQU1FVEVSKG5vdGVzLCBAIm5vdGVzIik7
CiAgICAgICAgIFRIUk9XX0VYQ0VQVElPTl9GT1JfUkVRVUlSRURfUEFSQU1FVEVSKHZhbHVlcywg
QCJ2YWx1ZXMiKTsKICAgICAgICAgVEhST1dfRVhDRVBUSU9OX0ZPUl9SRVFVSVJFRF9QQVJBTUVU
RVIocGF5bG9hZCwgQCJwYXlsb2FkIik7CkBAIC0xMTY4LDYgKzExNzEsNyBAQCB2b2lkIE9iakNJ
bnNwZWN0b3JEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVyOjpleGVjdXRlU1FMQXN5bmMobG9uZyBj
YWxsSWQsIGludCBpbgogICAgIGlkIHN1Y2Nlc3NDYWxsYmFjayA9IF4oTlNBcnJheS8qPE5TU3Ry
aW5nPiovICpjb2x1bW5OYW1lcywgTlNTdHJpbmcgKm5vdGVzLCBkb3VibGUgdGltZXN0YW1wLCBS
V0lQcm90b2NvbEpTT05PYmplY3QgKnZhbHVlcywgUldJUHJvdG9jb2xKU09OT2JqZWN0ICpwYXls
b2FkLCBpbnQgZGF0YWJhc2VJZCwgUldJUHJvdG9jb2xEYXRhYmFzZUVycm9yICpzcWxFcnJvciwg
UldJUHJvdG9jb2xEYXRhYmFzZVByaW1hcnlDb2xvcnMgc2NyZWVuQ29sb3IsIFJXSVByb3RvY29s
RGF0YWJhc2VFeGVjdXRlU1FMQXN5bmNQcmludENvbG9yIHByaW50Q29sb3IpIHsKICAgICAgICAg
UmVmPEluc3BlY3Rvck9iamVjdD4gcmVzdWx0T2JqZWN0ID0gSW5zcGVjdG9yT2JqZWN0OjpjcmVh
dGUoKTsKICAgICAgICAgVEhST1dfRVhDRVBUSU9OX0ZPUl9SRVFVSVJFRF9QQVJBTUVURVIoY29s
dW1uTmFtZXMsIEAiY29sdW1uTmFtZXMiKTsKKyAgICAgICAgVEhST1dfRVhDRVBUSU9OX0ZPUl9C
QURfVFlQRV9JTl9BUlJBWShjb2x1bW5OYW1lcywgW05TU3RyaW5nIGNsYXNzXSwgQCJOU1N0cmlu
ZyIpOwogICAgICAgICBUSFJPV19FWENFUFRJT05fRk9SX1JFUVVJUkVEX1BBUkFNRVRFUihub3Rl
cywgQCJub3RlcyIpOwogICAgICAgICBUSFJPV19FWENFUFRJT05fRk9SX1JFUVVJUkVEX1BBUkFN
RVRFUih2YWx1ZXMsIEAidmFsdWVzIik7CiAgICAgICAgIFRIUk9XX0VYQ0VQVElPTl9GT1JfUkVR
VUlSRURfUEFSQU1FVEVSKHBheWxvYWQsIEAicGF5bG9hZCIpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL2NvbW1hbmRz
LXdpdGgtb3B0aW9uYWwtY2FsbC1yZXR1cm4tcGFyYW1ldGVycy5qc29uLXJlc3VsdCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC9jb21tYW5k
cy13aXRoLW9wdGlvbmFsLWNhbGwtcmV0dXJuLXBhcmFtZXRlcnMuanNvbi1yZXN1bHQKaW5kZXgg
MjBjMTAyYy4uMzdkNjNjNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3Bl
Y3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL2NvbW1hbmRzLXdpdGgtb3B0aW9uYWwtY2FsbC1y
ZXR1cm4tcGFyYW1ldGVycy5qc29uLXJlc3VsdAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvY29tbWFuZHMtd2l0aC1vcHRpb25hbC1j
YWxsLXJldHVybi1wYXJhbWV0ZXJzLmpzb24tcmVzdWx0CkBAIC05NDgsNiArOTQ4LDcgQEAgdm9p
ZCBPYmpDSW5zcGVjdG9yRGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlcjo6ZXhlY3V0ZUFsbE9wdGlv
bmFsUGFyYW1ldGVycyhsb25nIGMKICAgICBpZCBzdWNjZXNzQ2FsbGJhY2sgPSBeKE5TQXJyYXkv
KjxOU1N0cmluZz4qLyAqKmNvbHVtbk5hbWVzLCBOU1N0cmluZyAqKm5vdGVzLCBkb3VibGUgKnRp
bWVzdGFtcCwgUldJUHJvdG9jb2xKU09OT2JqZWN0ICoqdmFsdWVzLCBSV0lQcm90b2NvbEpTT05P
YmplY3QgKipwYXlsb2FkLCBpbnQgKmRhdGFiYXNlSWQsIFJXSVByb3RvY29sRGF0YWJhc2VFcnJv
ciAqKnNxbEVycm9yLCBSV0lQcm90b2NvbERhdGFiYXNlUHJpbWFyeUNvbG9ycyAqc2NyZWVuQ29s
b3IsIFJXSVByb3RvY29sRGF0YWJhc2VFeGVjdXRlQWxsT3B0aW9uYWxQYXJhbWV0ZXJzUHJpbnRD
b2xvciAqcHJpbnRDb2xvcikgewogICAgICAgICBSZWY8SW5zcGVjdG9yT2JqZWN0PiByZXN1bHRP
YmplY3QgPSBJbnNwZWN0b3JPYmplY3Q6OmNyZWF0ZSgpOwogICAgICAgICBUSFJPV19FWENFUFRJ
T05fRk9SX0JBRF9PUFRJT05BTF9QQVJBTUVURVIoY29sdW1uTmFtZXMsIEAiY29sdW1uTmFtZXMi
KTsKKyAgICAgICAgVEhST1dfRVhDRVBUSU9OX0ZPUl9CQURfVFlQRV9JTl9PUFRJT05BTF9BUlJB
WShjb2x1bW5OYW1lcywgW05TU3RyaW5nIGNsYXNzXSwgQCJOU1N0cmluZyIpOwogICAgICAgICBU
SFJPV19FWENFUFRJT05fRk9SX0JBRF9PUFRJT05BTF9QQVJBTUVURVIobm90ZXMsIEAibm90ZXMi
KTsKICAgICAgICAgVEhST1dfRVhDRVBUSU9OX0ZPUl9CQURfT1BUSU9OQUxfUEFSQU1FVEVSKHZh
bHVlcywgQCJ2YWx1ZXMiKTsKICAgICAgICAgVEhST1dfRVhDRVBUSU9OX0ZPUl9CQURfT1BUSU9O
QUxfUEFSQU1FVEVSKHBheWxvYWQsIEAicGF5bG9hZCIpOwpAQCAtMTAxMyw2ICsxMDE0LDcgQEAg
dm9pZCBPYmpDSW5zcGVjdG9yRGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlcjo6ZXhlY3V0ZU5vT3B0
aW9uYWxQYXJhbWV0ZXJzKGxvbmcgY2EKICAgICBpZCBzdWNjZXNzQ2FsbGJhY2sgPSBeKE5TQXJy
YXkvKjxOU1N0cmluZz4qLyAqY29sdW1uTmFtZXMsIE5TU3RyaW5nICpub3RlcywgZG91YmxlIHRp
bWVzdGFtcCwgUldJUHJvdG9jb2xKU09OT2JqZWN0ICp2YWx1ZXMsIFJXSVByb3RvY29sSlNPTk9i
amVjdCAqcGF5bG9hZCwgaW50IGRhdGFiYXNlSWQsIFJXSVByb3RvY29sRGF0YWJhc2VFcnJvciAq
c3FsRXJyb3IsIFJXSVByb3RvY29sRGF0YWJhc2VQcmltYXJ5Q29sb3JzIHNjcmVlbkNvbG9yLCBS
V0lQcm90b2NvbERhdGFiYXNlRXhlY3V0ZU5vT3B0aW9uYWxQYXJhbWV0ZXJzUHJpbnRDb2xvciBw
cmludENvbG9yKSB7CiAgICAgICAgIFJlZjxJbnNwZWN0b3JPYmplY3Q+IHJlc3VsdE9iamVjdCA9
IEluc3BlY3Rvck9iamVjdDo6Y3JlYXRlKCk7CiAgICAgICAgIFRIUk9XX0VYQ0VQVElPTl9GT1Jf
UkVRVUlSRURfUEFSQU1FVEVSKGNvbHVtbk5hbWVzLCBAImNvbHVtbk5hbWVzIik7CisgICAgICAg
IFRIUk9XX0VYQ0VQVElPTl9GT1JfQkFEX1RZUEVfSU5fQVJSQVkoY29sdW1uTmFtZXMsIFtOU1N0
cmluZyBjbGFzc10sIEAiTlNTdHJpbmciKTsKICAgICAgICAgVEhST1dfRVhDRVBUSU9OX0ZPUl9S
RVFVSVJFRF9QQVJBTUVURVIobm90ZXMsIEAibm90ZXMiKTsKICAgICAgICAgVEhST1dfRVhDRVBU
SU9OX0ZPUl9SRVFVSVJFRF9QQVJBTUVURVIodmFsdWVzLCBAInZhbHVlcyIpOwogICAgICAgICBU
SFJPV19FWENFUFRJT05fRk9SX1JFUVVJUkVEX1BBUkFNRVRFUihwYXlsb2FkLCBAInBheWxvYWQi
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90
ZXN0cy9leHBlY3RlZC9ldmVudHMtd2l0aC1vcHRpb25hbC1wYXJhbWV0ZXJzLmpzb24tcmVzdWx0
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVk
L2V2ZW50cy13aXRoLW9wdGlvbmFsLXBhcmFtZXRlcnMuanNvbi1yZXN1bHQKaW5kZXggZTQ2ZTIy
Ni4uOTEyYzk3OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9z
Y3JpcHRzL3Rlc3RzL2V4cGVjdGVkL2V2ZW50cy13aXRoLW9wdGlvbmFsLXBhcmFtZXRlcnMuanNv
bi1yZXN1bHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rl
c3RzL2V4cGVjdGVkL2V2ZW50cy13aXRoLW9wdGlvbmFsLXBhcmFtZXRlcnMuanNvbi1yZXN1bHQK
QEAgLTg3NSw2ICs4NzUsNyBAQCB1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwogICAgICAgICBy
ZXR1cm47CiAKICAgICBUSFJPV19FWENFUFRJT05fRk9SX0JBRF9PUFRJT05BTF9QQVJBTUVURVIo
Y29sdW1uTmFtZXMsIEAiY29sdW1uTmFtZXMiKTsKKyAgICBUSFJPV19FWENFUFRJT05fRk9SX0JB
RF9UWVBFX0lOX09QVElPTkFMX0FSUkFZKGNvbHVtbk5hbWVzLCBbTlNTdHJpbmcgY2xhc3NdLCBA
Ik5TU3RyaW5nIik7CiAgICAgVEhST1dfRVhDRVBUSU9OX0ZPUl9CQURfT1BUSU9OQUxfUEFSQU1F
VEVSKG5vdGVzLCBAIm5vdGVzIik7CiAgICAgVEhST1dfRVhDRVBUSU9OX0ZPUl9CQURfT1BUSU9O
QUxfUEFSQU1FVEVSKHZhbHVlcywgQCJ2YWx1ZXMiKTsKICAgICBUSFJPV19FWENFUFRJT05fRk9S
X0JBRF9PUFRJT05BTF9QQVJBTUVURVIocGF5bG9hZCwgQCJwYXlsb2FkIik7CkBAIC05MTIsNiAr
OTEzLDcgQEAgdXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKICAgICAgICAgcmV0dXJuOwogCiAg
ICAgVEhST1dfRVhDRVBUSU9OX0ZPUl9SRVFVSVJFRF9QQVJBTUVURVIoY29sdW1uTmFtZXMsIEAi
Y29sdW1uTmFtZXMiKTsKKyAgICBUSFJPV19FWENFUFRJT05fRk9SX0JBRF9UWVBFX0lOX0FSUkFZ
KGNvbHVtbk5hbWVzLCBbTlNTdHJpbmcgY2xhc3NdLCBAIk5TU3RyaW5nIik7CiAgICAgVEhST1df
RVhDRVBUSU9OX0ZPUl9SRVFVSVJFRF9QQVJBTUVURVIobm90ZXMsIEAibm90ZXMiKTsKICAgICBU
SFJPV19FWENFUFRJT05fRk9SX1JFUVVJUkVEX1BBUkFNRVRFUih2YWx1ZXMsIEAidmFsdWVzIik7
CiAgICAgVEhST1dfRVhDRVBUSU9OX0ZPUl9SRVFVSVJFRF9QQVJBTUVURVIocGF5bG9hZCwgQCJw
YXlsb2FkIik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Nj
cmlwdHMvdGVzdHMvZXhwZWN0ZWQvc2hhZG93ZWQtb3B0aW9uYWwtdHlwZS1zZXR0ZXJzLmpzb24t
cmVzdWx0IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4
cGVjdGVkL3NoYWRvd2VkLW9wdGlvbmFsLXR5cGUtc2V0dGVycy5qc29uLXJlc3VsdAppbmRleCBl
NTJhMzdkLi4xNWIyMGI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVj
dG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvc2hhZG93ZWQtb3B0aW9uYWwtdHlwZS1zZXR0ZXJz
Lmpzb24tcmVzdWx0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0
cy90ZXN0cy9leHBlY3RlZC9zaGFkb3dlZC1vcHRpb25hbC10eXBlLXNldHRlcnMuanNvbi1yZXN1
bHQKQEAgLTk1Myw2ICs5NTMsNyBAQCB1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwogCiAtICh2
b2lkKXNldEFycmF5OihOU0FycmF5Lyo8TlNTdHJpbmc+Ki8gKilhcnJheQogeworICAgIFRIUk9X
X0VYQ0VQVElPTl9GT1JfQkFEX1RZUEVfSU5fQVJSQVkoYXJyYXksIFtOU1N0cmluZyBjbGFzc10s
IEAiTlNTdHJpbmciKTsKICAgICBbc3VwZXIgc2V0SW5zcGVjdG9yQXJyYXk6aW5zcGVjdG9yU3Ry
aW5nQXJyYXkoYXJyYXkpIGZvcktleTpAImFycmF5Il07CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC90eXBlLWRl
Y2xhcmF0aW9uLW9iamVjdC10eXBlLmpzb24tcmVzdWx0IGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL3R5cGUtZGVjbGFyYXRpb24tb2JqZWN0
LXR5cGUuanNvbi1yZXN1bHQKaW5kZXggYzc3NDAzNC4uYTBhY2U2ZSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL3R5cGUt
ZGVjbGFyYXRpb24tb2JqZWN0LXR5cGUuanNvbi1yZXN1bHQKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL3R5cGUtZGVjbGFyYXRpb24t
b2JqZWN0LXR5cGUuanNvbi1yZXN1bHQKQEAgLTEzNTgsNiArMTM1OCw3IEBAIHVzaW5nIG5hbWVz
cGFjZSBJbnNwZWN0b3I7CiAKIC0gKHZvaWQpc2V0Q29sdW1uTmFtZXM6KE5TQXJyYXkvKjxOU1N0
cmluZz4qLyAqKWNvbHVtbk5hbWVzCiB7CisgICAgVEhST1dfRVhDRVBUSU9OX0ZPUl9CQURfVFlQ
RV9JTl9BUlJBWShjb2x1bW5OYW1lcywgW05TU3RyaW5nIGNsYXNzXSwgQCJOU1N0cmluZyIpOwog
ICAgIFtzdXBlciBzZXRJbnNwZWN0b3JBcnJheTppbnNwZWN0b3JTdHJpbmdBcnJheShjb2x1bW5O
YW1lcykgZm9yS2V5OkAiY29sdW1uTmFtZXMiXTsKIH0KIApAQCAtMTQyNyw2ICsxNDI4LDcgQEAg
dXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKICAgICAgICAgcmV0dXJuIG5pbDsKIAogICAgIFRI
Uk9XX0VYQ0VQVElPTl9GT1JfUkVRVUlSRURfUFJPUEVSVFkoY29sdW1uTmFtZXMsIEAiY29sdW1u
TmFtZXMiKTsKKyAgICBUSFJPV19FWENFUFRJT05fRk9SX0JBRF9UWVBFX0lOX0FSUkFZKGNvbHVt
bk5hbWVzLCBbTlNTdHJpbmcgY2xhc3NdLCBAIk5TU3RyaW5nIik7CiAgICAgVEhST1dfRVhDRVBU
SU9OX0ZPUl9SRVFVSVJFRF9QUk9QRVJUWShub3RlcywgQCJub3RlcyIpOwogICAgIFRIUk9XX0VY
Q0VQVElPTl9GT1JfUkVRVUlSRURfUFJPUEVSVFkodmFsdWVzLCBAInZhbHVlcyIpOwogICAgIFRI
Uk9XX0VYQ0VQVElPTl9GT1JfUkVRVUlSRURfUFJPUEVSVFkocGF5bG9hZCwgQCJwYXlsb2FkIik7
CkBAIC0xNDQ0LDYgKzE0NDYsNyBAQCB1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwogCiAtICh2
b2lkKXNldENvbHVtbk5hbWVzOihOU0FycmF5Lyo8TlNTdHJpbmc+Ki8gKiljb2x1bW5OYW1lcwog
eworICAgIFRIUk9XX0VYQ0VQVElPTl9GT1JfQkFEX1RZUEVfSU5fQVJSQVkoY29sdW1uTmFtZXMs
IFtOU1N0cmluZyBjbGFzc10sIEAiTlNTdHJpbmciKTsKICAgICBbc3VwZXIgc2V0SW5zcGVjdG9y
QXJyYXk6aW5zcGVjdG9yU3RyaW5nQXJyYXkoY29sdW1uTmFtZXMpIGZvcktleTpAImNvbHVtbk5h
bWVzIl07CiB9CiAKQEAgLTE1OTMsNiArMTU5Niw3IEBAIHVzaW5nIG5hbWVzcGFjZSBJbnNwZWN0
b3I7CiAgICAgICAgIHJldHVybiBuaWw7CiAKICAgICBUSFJPV19FWENFUFRJT05fRk9SX1JFUVVJ
UkVEX1BST1BFUlRZKGNvbHVtbk5hbWVzLCBAImNvbHVtbk5hbWVzIik7CisgICAgVEhST1dfRVhD
RVBUSU9OX0ZPUl9CQURfVFlQRV9JTl9BUlJBWShjb2x1bW5OYW1lcywgW05TU3RyaW5nIGNsYXNz
XSwgQCJOU1N0cmluZyIpOwogICAgIFRIUk9XX0VYQ0VQVElPTl9GT1JfUkVRVUlSRURfUFJPUEVS
VFkobm90ZXMsIEAibm90ZXMiKTsKICAgICBUSFJPV19FWENFUFRJT05fRk9SX1JFUVVJUkVEX1BS
T1BFUlRZKHZhbHVlcywgQCJ2YWx1ZXMiKTsKICAgICBUSFJPV19FWENFUFRJT05fRk9SX1JFUVVJ
UkVEX1BST1BFUlRZKHBheWxvYWQsIEAicGF5bG9hZCIpOwpAQCAtMTYxMCw2ICsxNjE0LDcgQEAg
dXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKIAogLSAodm9pZClzZXRDb2x1bW5OYW1lczooTlNB
cnJheS8qPE5TU3RyaW5nPiovICopY29sdW1uTmFtZXMKIHsKKyAgICBUSFJPV19FWENFUFRJT05f
Rk9SX0JBRF9UWVBFX0lOX0FSUkFZKGNvbHVtbk5hbWVzLCBbTlNTdHJpbmcgY2xhc3NdLCBAIk5T
U3RyaW5nIik7CiAgICAgW3N1cGVyIHNldEluc3BlY3RvckFycmF5Omluc3BlY3RvclN0cmluZ0Fy
cmF5KGNvbHVtbk5hbWVzKSBmb3JLZXk6QCJjb2x1bW5OYW1lcyJdOwogfQogCg==
</data>
<flag name="review"
          id="269148"
          type_id="1"
          status="+"
          setter="timothy"
    />
    <flag name="commit-queue"
          id="269149"
          type_id="3"
          status="-"
          setter="joepeck"
    />
          </attachment>
      

    </bug>

</bugzilla>