<?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>143171</bug_id>
          
          <creation_ts>2015-03-27 18:44:38 -0700</creation_ts>
          <short_desc>Web Inspector: [ES6] Improve Type Profiler Support for Arrow Functions</short_desc>
          <delta_ts>2015-09-22 17:43:27 -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>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="Saam Barati">saam</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>graouts</cc>
    
    <cc>joepeck</cc>
    
    <cc>jonowells</cc>
    
    <cc>mattbaker</cc>
    
    <cc>nvasilyev</cc>
    
    <cc>saam</cc>
    
    <cc>timothy</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1080848</commentid>
    <comment_count>0</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2015-03-27 18:44:38 -0700</bug_when>
    <thetext>* SUMMARY
Improve Type Profiler Support for ES6 Syntax.

  • ScriptSyntaxTree should support ES6 syntax that Esprima produces
    - template strings
    - modules, packages (export/import)
    - arrow functions
    - binding patterns
    - comprehensions? (ES7?)

  • BasicBlockAnnotator for method syntax is a bit off
    - closing brace doesn&apos;t appear to be included</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1080849</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2015-03-27 18:45:09 -0700</bug_when>
    <thetext>&lt;rdar://problem/20335738&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1127778</commentid>
    <comment_count>2</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2015-09-21 15:31:30 -0700</bug_when>
    <thetext>Retitling to be specifically about Arrow Functions. I think we&apos;ve handled the rest for ES6, and Block Annotations is aa separate issue.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1128115</commentid>
    <comment_count>3</comment_count>
      <attachid>261768</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2015-09-22 15:08:23 -0700</bug_when>
    <thetext>Created attachment 261768
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1128116</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-09-22 15:10:53 -0700</bug_when>
    <thetext>Attachment 261768 did not pass style-queue:


ERROR: Source/JavaScriptCore/runtime/TypeProfiler.h:107:  This { should be at the end of the previous line  [whitespace/braces] [4]
Total errors found: 1 in 7 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1128121</commentid>
    <comment_count>5</comment_count>
      <attachid>261768</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2015-09-22 15:31:11 -0700</bug_when>
    <thetext>Comment on attachment 261768
patch

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

&gt; Source/JavaScriptCore/runtime/TypeProfiler.h:73
&gt; +    }
&gt; +    bool operator==(const QueryKey&amp; other) const

Style: Normally there are newlines between multi-line member functions.

&gt; Source/JavaScriptCore/tests/typeProfiler/arrow-functions.js:4
&gt; +let foo = (x) =&gt; x;
&gt; +let bar = abc =&gt; abc;

Might want to also test a case with {}s.

    let baz = x =&gt; { return x }

&gt; Source/WebInspectorUI/UserInterface/Models/ScriptSyntaxTree.js:152
&gt; +        console.assert( node.type === WebInspector.ScriptSyntaxTree.NodeType.FunctionDeclaration || node.type === WebInspector.ScriptSyntaxTree.NodeType.FunctionExpression || node.type === WebInspector.ScriptSyntaxTree.NodeType.MethodDefinition || node.type === WebInspector.ScriptSyntaxTree.NodeType.ArrowFunctionExpression); 

Style: Unnecessary leading space inside the assert(...).

&gt; Source/WebInspectorUI/UserInterface/Models/ScriptSyntaxTree.js:372
&gt; +        case WebInspector.ScriptSyntaxTree.NodeType.ArrowFunctionExpression:
&gt;              callback(node, state);
&gt;              this._recurse(node.id, callback, state);
&gt;              this._recurseArray(node.params, callback, state);

r- ArrowFunctionExpression has &quot;expression&quot; but FunctionExpression/FunctionDeclaration don&apos;t. We&apos;ll need to walk over that. Either a new case, or check `if (node.expression)`.

&gt; Source/WebInspectorUI/UserInterface/Models/ScriptSyntaxTree.js:955
&gt; +    ArrowFunctionExpression: Symbol(&quot;arrow-function-expression&quot;),

Nit: Alphabetical order (`sort`)

We should add a basic test for the frontend&apos;s new node type in:
LayoutTests/inspector/model/parse-script-syntax-tree.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1128122</commentid>
    <comment_count>6</comment_count>
      <attachid>261768</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2015-09-22 15:32:20 -0700</bug_when>
    <thetext>Comment on attachment 261768
patch

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

&gt;&gt; Source/JavaScriptCore/tests/typeProfiler/arrow-functions.js:4
&gt;&gt; +let bar = abc =&gt; abc;
&gt; 
&gt; Might want to also test a case with {}s.
&gt; 
&gt;     let baz = x =&gt; { return x }

And maybe even an empty case? () =&gt; {}</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1128172</commentid>
    <comment_count>7</comment_count>
      <attachid>261782</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2015-09-22 17:26:40 -0700</bug_when>
    <thetext>Created attachment 261782
patch

Fixed comments.
Also noted in comments that the &quot;expression&quot; field is just a boolean. Not an AST node.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1128174</commentid>
    <comment_count>8</comment_count>
      <attachid>261782</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2015-09-22 17:29:41 -0700</bug_when>
    <thetext>Comment on attachment 261782
patch

r=me!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1128180</commentid>
    <comment_count>9</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2015-09-22 17:39:47 -0700</bug_when>
    <thetext>landed in:
http://trac.webkit.org/changeset/190146</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>261768</attachid>
            <date>2015-09-22 15:08:23 -0700</date>
            <delta_ts>2015-09-22 17:26:40 -0700</delta_ts>
            <desc>patch</desc>
            <filename>c-backup.diff</filename>
            <type>text/plain</type>
            <size>14736</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTkwMTM1KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI4IEBA
CisyMDE1LTA5LTIyICBTYWFtIGJhcmF0aSAgPHNiYXJhdGlAYXBwbGUuY29tPgorCisgICAgICAg
IFdlYiBJbnNwZWN0b3I6IFtFUzZdIEltcHJvdmUgVHlwZSBQcm9maWxlciBTdXBwb3J0IGZvciBB
cnJvdyBGdW5jdGlvbnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE0MzE3MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIFdlIG5vdyBuZWVkIHRvIHRha2UgaW50byBhY2NvdW50IFR5cGVQcm9maWxlclNlYXJj
aERlc2NyaXB0b3Igd2hlbgorICAgICAgICBoYXNoaW5nIHJlc3VsdHMgZm9yIHR5cGUgcHJvZmls
ZXIgcXVlcmllcy4gQmVmb3JlLCB3ZSd2ZSBnb3R0ZW4KKyAgICAgICAgYXdheSB3aXRoIG5vdCBk
b2luZyB0aGlzIGJlY2F1c2UgYmVmb3JlIHdlIHdvdWxkIG5ldmVyIGhhdmUgYSB0ZXh0IAorICAg
ICAgICBjb2xsaXNpb24gYmV0d2VlbiBhIHJldHVybiB0eXBlIHRleHQgb2Zmc2V0IGFuZCBhIG5v
cm1hbCBleHByZXNzaW9uIHRleHQKKyAgICAgICAgb2Zmc2V0LiBCdXQsIHdpdGggYXJyb3cgZnVu
Y3Rpb25zLCB3ZSB3aWxsIGhhdmUgY29sbGlzaW9ucyB3aGVuCisgICAgICAgIHRoZSBhcnJvdyBm
dW5jdGlvbiBkb2Vzbid0IGhhdmUgcGFyZW5zIGFyb3VuZCBpdHMgc2luZ2xlIHBhcmFtZXRlci4K
KyAgICAgICAgSS5lOiAicGFyYW0gPT4geyAuLi4gfTsiCisKKyAgICAgICAgKiBydW50aW1lL1R5
cGVQcm9maWxlci5jcHA6CisgICAgICAgIChKU0M6OlR5cGVQcm9maWxlcjo6ZmluZExvY2F0aW9u
KToKKyAgICAgICAgKiBydW50aW1lL1R5cGVQcm9maWxlci5oOgorICAgICAgICAoSlNDOjpRdWVy
eUtleTo6UXVlcnlLZXkpOgorICAgICAgICAoSlNDOjpRdWVyeUtleTo6aXNIYXNoVGFibGVEZWxl
dGVkVmFsdWUpOgorICAgICAgICAoSlNDOjpRdWVyeUtleTo6b3BlcmF0b3I9PSk6CisgICAgICAg
IChKU0M6OlF1ZXJ5S2V5OjpoYXNoKToKKyAgICAgICAgKiB0ZXN0cy90eXBlUHJvZmlsZXIvYXJy
b3ctZnVuY3Rpb25zLmpzOiBBZGRlZC4KKyAgICAgICAgKHdyYXBwZXIpOgorCiAyMDE1LTA5LTIy
ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CiAKICAgICAgICAgR2V0IHJpZCBvZiBF
TkFCTEUoUEFSQUxMRUxfR0MpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9U
eXBlUHJvZmlsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1R5cGVQcm9maWxlci5jcHAJKHJldmlzaW9uIDE5MDA5OCkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1R5cGVQcm9maWxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwOCw3
ICsxMDgsNyBAQCBTdHJpbmcgVHlwZVByb2ZpbGVyOjp0eXBlSW5mb3JtYXRpb25Gb3JFCiAKIFR5
cGVMb2NhdGlvbiogVHlwZVByb2ZpbGVyOjpmaW5kTG9jYXRpb24odW5zaWduZWQgZGl2b3QsIGlu
dHB0cl90IHNvdXJjZUlELCBUeXBlUHJvZmlsZXJTZWFyY2hEZXNjcmlwdG9yIGRlc2NyaXB0b3Is
IFZNJiB2bSkKIHsKLSAgICBRdWVyeUtleSBxdWVyeUtleShzb3VyY2VJRCwgZGl2b3QpOworICAg
IFF1ZXJ5S2V5IHF1ZXJ5S2V5KHNvdXJjZUlELCBkaXZvdCwgZGVzY3JpcHRvcik7CiAgICAgYXV0
byBpdGVyID0gbV9xdWVyeUNhY2hlLmZpbmQocXVlcnlLZXkpOwogICAgIGlmIChpdGVyICE9IG1f
cXVlcnlDYWNoZS5lbmQoKSkKICAgICAgICAgcmV0dXJuIGl0ZXItPnZhbHVlOwpAQCAtMTI5LDcg
KzEyOSw3IEBAIFR5cGVMb2NhdGlvbiogVHlwZVByb2ZpbGVyOjpmaW5kTG9jYXRpb24KICAgICAg
ICAgaWYgKGRlc2NyaXB0b3IgPT0gVHlwZVByb2ZpbGVyU2VhcmNoRGVzY3JpcHRvckZ1bmN0aW9u
UmV0dXJuICYmIGxvY2F0aW9uLT5tX2dsb2JhbFZhcmlhYmxlSUQgPT0gVHlwZVByb2ZpbGVyUmV0
dXJuU3RhdGVtZW50ICYmIGxvY2F0aW9uLT5tX2Rpdm90Rm9yRnVuY3Rpb25PZmZzZXRJZlJldHVy
blN0YXRlbWVudCA9PSBkaXZvdCkKICAgICAgICAgICAgIHJldHVybiBsb2NhdGlvbjsKIAotICAg
ICAgICBpZiAoZGVzY3JpcHRvciAhPSBUeXBlUHJvZmlsZXJTZWFyY2hEZXNjcmlwdG9yRnVuY3Rp
b25SZXR1cm4gJiYgbG9jYXRpb24tPm1fZGl2b3RTdGFydCA8PSBkaXZvdCAmJiBkaXZvdCA8PSBs
b2NhdGlvbi0+bV9kaXZvdEVuZCAmJiBsb2NhdGlvbi0+bV9kaXZvdEVuZCAtIGxvY2F0aW9uLT5t
X2Rpdm90U3RhcnQgPD0gZGlzdGFuY2UpIHsKKyAgICAgICAgaWYgKGRlc2NyaXB0b3IgIT0gVHlw
ZVByb2ZpbGVyU2VhcmNoRGVzY3JpcHRvckZ1bmN0aW9uUmV0dXJuICYmIGxvY2F0aW9uLT5tX2ds
b2JhbFZhcmlhYmxlSUQgIT0gVHlwZVByb2ZpbGVyUmV0dXJuU3RhdGVtZW50ICYmIGxvY2F0aW9u
LT5tX2Rpdm90U3RhcnQgPD0gZGl2b3QgJiYgZGl2b3QgPD0gbG9jYXRpb24tPm1fZGl2b3RFbmQg
JiYgbG9jYXRpb24tPm1fZGl2b3RFbmQgLSBsb2NhdGlvbi0+bV9kaXZvdFN0YXJ0IDw9IGRpc3Rh
bmNlKSB7CiAgICAgICAgICAgICBkaXN0YW5jZSA9IGxvY2F0aW9uLT5tX2Rpdm90RW5kIC0gbG9j
YXRpb24tPm1fZGl2b3RTdGFydDsKICAgICAgICAgICAgIGJlc3RNYXRjaCA9IGxvY2F0aW9uOwog
ICAgICAgICB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UeXBlUHJvZmls
ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UeXBlUHJv
ZmlsZXIuaAkocmV2aXNpb24gMTkwMDk4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvVHlwZVByb2ZpbGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTQwLDI4ICs0MCw1MSBAQCBjbGFz
cyBUeXBlRGVzY3JpcHRpb247CiAKIG5hbWVzcGFjZSBKU0MgewogCitlbnVtIFR5cGVQcm9maWxl
clNlYXJjaERlc2NyaXB0b3IgeworICAgIFR5cGVQcm9maWxlclNlYXJjaERlc2NyaXB0b3JOb3Jt
YWwgPSAxLAorICAgIFR5cGVQcm9maWxlclNlYXJjaERlc2NyaXB0b3JGdW5jdGlvblJldHVybiA9
IDIKK307CisKIHN0cnVjdCBRdWVyeUtleSB7CiAgICAgUXVlcnlLZXkoKQogICAgICAgICA6IG1f
c291cmNlSUQoMCkKICAgICAgICAgLCBtX2Rpdm90KDApCisgICAgICAgICwgbV9zZWFyY2hEZXNj
cmlwdG9yKFR5cGVQcm9maWxlclNlYXJjaERlc2NyaXB0b3JGdW5jdGlvblJldHVybikKICAgICB7
IH0KIAotICAgIFF1ZXJ5S2V5KGludHB0cl90IHNvdXJjZUlELCB1bnNpZ25lZCBkaXZvdCkKKyAg
ICBRdWVyeUtleShpbnRwdHJfdCBzb3VyY2VJRCwgdW5zaWduZWQgZGl2b3QsIFR5cGVQcm9maWxl
clNlYXJjaERlc2NyaXB0b3Igc2VhcmNoRGVzY3JpcHRvcikKICAgICAgICAgOiBtX3NvdXJjZUlE
KHNvdXJjZUlEKQogICAgICAgICAsIG1fZGl2b3QoZGl2b3QpCisgICAgICAgICwgbV9zZWFyY2hE
ZXNjcmlwdG9yKHNlYXJjaERlc2NyaXB0b3IpCiAgICAgeyB9CiAKICAgICBRdWVyeUtleShXVEY6
Okhhc2hUYWJsZURlbGV0ZWRWYWx1ZVR5cGUpCiAgICAgICAgIDogbV9zb3VyY2VJRChJTlRQVFJf
TUFYKQogICAgICAgICAsIG1fZGl2b3QoVUlOVF9NQVgpCisgICAgICAgICwgbV9zZWFyY2hEZXNj
cmlwdG9yKFR5cGVQcm9maWxlclNlYXJjaERlc2NyaXB0b3JGdW5jdGlvblJldHVybikKICAgICB7
IH0KIAotICAgIGJvb2wgaXNIYXNoVGFibGVEZWxldGVkVmFsdWUoKSBjb25zdCB7IHJldHVybiBt
X3NvdXJjZUlEID09IElOVFBUUl9NQVggJiYgbV9kaXZvdCA9PSBVSU5UX01BWDsgfQotICAgIGJv
b2wgb3BlcmF0b3I9PShjb25zdCBRdWVyeUtleSYgb3RoZXIpIGNvbnN0IHsgcmV0dXJuIG1fc291
cmNlSUQgPT0gb3RoZXIubV9zb3VyY2VJRCAmJiBtX2Rpdm90ID09IG90aGVyLm1fZGl2b3Q7IH0K
LSAgICB1bnNpZ25lZCBoYXNoKCkgY29uc3QgeyByZXR1cm4gbV9zb3VyY2VJRCArIG1fZGl2b3Q7
IH0KKyAgICBib29sIGlzSGFzaFRhYmxlRGVsZXRlZFZhbHVlKCkgY29uc3QgCisgICAgeyAKKyAg
ICAgICAgcmV0dXJuIG1fc291cmNlSUQgPT0gSU5UUFRSX01BWCAKKyAgICAgICAgICAgICYmIG1f
ZGl2b3QgPT0gVUlOVF9NQVgKKyAgICAgICAgICAgICYmIG1fc2VhcmNoRGVzY3JpcHRvciA9PSBU
eXBlUHJvZmlsZXJTZWFyY2hEZXNjcmlwdG9yRnVuY3Rpb25SZXR1cm47CisgICAgfQorICAgIGJv
b2wgb3BlcmF0b3I9PShjb25zdCBRdWVyeUtleSYgb3RoZXIpIGNvbnN0CisgICAgeworICAgICAg
ICByZXR1cm4gbV9zb3VyY2VJRCA9PSBvdGhlci5tX3NvdXJjZUlEIAorICAgICAgICAgICAgJiYg
bV9kaXZvdCA9PSBvdGhlci5tX2Rpdm90CisgICAgICAgICAgICAmJiBtX3NlYXJjaERlc2NyaXB0
b3IgPT0gb3RoZXIubV9zZWFyY2hEZXNjcmlwdG9yOworICAgIH0KKyAgICB1bnNpZ25lZCBoYXNo
KCkgY29uc3QgCisgICAgeyAKKyAgICAgICAgdW5zaWduZWQgaGFzaCA9IG1fc291cmNlSUQgKyBt
X2Rpdm90ICogbV9zZWFyY2hEZXNjcmlwdG9yOworICAgICAgICByZXR1cm4gaGFzaDsKKyAgICB9
CiAKICAgICBpbnRwdHJfdCBtX3NvdXJjZUlEOwogICAgIHVuc2lnbmVkIG1fZGl2b3Q7CisgICAg
VHlwZVByb2ZpbGVyU2VhcmNoRGVzY3JpcHRvciBtX3NlYXJjaERlc2NyaXB0b3I7CiB9OwogCiBz
dHJ1Y3QgUXVlcnlLZXlIYXNoIHsKQEAgLTgwLDcgKzEwMywxMCBAQCB0ZW1wbGF0ZTw+IHN0cnVj
dCBEZWZhdWx0SGFzaDxKU0M6OlF1ZXJ5CiB9OwogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1
Y3QgSGFzaFRyYWl0czsKLXRlbXBsYXRlPD4gc3RydWN0IEhhc2hUcmFpdHM8SlNDOjpRdWVyeUtl
eT4gOiBTaW1wbGVDbGFzc0hhc2hUcmFpdHM8SlNDOjpRdWVyeUtleT4geyB9OwordGVtcGxhdGU8
PiBzdHJ1Y3QgSGFzaFRyYWl0czxKU0M6OlF1ZXJ5S2V5PiA6IFNpbXBsZUNsYXNzSGFzaFRyYWl0
czxKU0M6OlF1ZXJ5S2V5PiAKK3sKKyAgICBzdGF0aWMgY29uc3QgYm9vbCBlbXB0eVZhbHVlSXNa
ZXJvID0gZmFsc2U7Cit9OwogCiB9IC8vIG5hbWVzcGFjZSBXVEYKIApAQCAtODgsMTEgKzExNCw2
IEBAIG5hbWVzcGFjZSBKU0MgewogCiBjbGFzcyBWTTsKIAotZW51bSBUeXBlUHJvZmlsZXJTZWFy
Y2hEZXNjcmlwdG9yIHsKLSAgICBUeXBlUHJvZmlsZXJTZWFyY2hEZXNjcmlwdG9yTm9ybWFsID0g
MSwKLSAgICBUeXBlUHJvZmlsZXJTZWFyY2hEZXNjcmlwdG9yRnVuY3Rpb25SZXR1cm4gPSAyCi19
OwotCiBjbGFzcyBUeXBlUHJvZmlsZXIgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwog
cHVibGljOgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3R5cGVQcm9maWxlci9h
cnJvdy1mdW5jdGlvbnMuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3Rl
c3RzL3R5cGVQcm9maWxlci9hcnJvdy1mdW5jdGlvbnMuanMJKHJldmlzaW9uIDApCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvdHlwZVByb2ZpbGVyL2Fycm93LWZ1bmN0aW9ucy5qcwko
d29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDI5IEBACitsb2FkKCIuL2RyaXZlci9kcml2ZXIuanMi
KTsKKworbGV0IGZvbyA9ICh4KSA9PiB4OworbGV0IGJhciA9IGFiYyA9PiBhYmM7CisKK2Z1bmN0
aW9uIHdyYXBwZXIoYikgeworICAgIGxldCBiYXogPSAoeCkgPT4geDsKKyAgICBiYXooYik7CisK
KyAgICBsZXQgZm9vID0geXl5ID0+IHl5eTsKKyAgICBmb28oYik7Cit9CisKKy8vID09PT09PSBF
bmQgdGVzdCBjYXNlcyA9PT09PT0KKworZm9vKDIwKTsKK3ZhciB0eXBlcyA9IHJldHVyblR5cGVG
b3IoZm9vKTsKK2Fzc2VydCh0eXBlcy5nbG9iYWxUeXBlU2V0LmRpc3BsYXlUeXBlTmFtZSA9PT0g
VC5JbnRlZ2VyLCAiRnVuY3Rpb24gJ2Zvbycgc2hvdWxkIHJldHVybiAnSW50ZWdlciciKTsKKwor
YmFyKCJoZWxsbyIpOwordHlwZXMgPSByZXR1cm5UeXBlRm9yKGJhcik7Cithc3NlcnQodHlwZXMu
Z2xvYmFsVHlwZVNldC5kaXNwbGF5VHlwZU5hbWUgPT09IFQuU3RyaW5nLCAiRnVuY3Rpb24gJ2Jh
cicgc2hvdWxkIHJldHVybiAnU3RyaW5nJyIpOworCit3cmFwcGVyKCJoZWxsbyIpOwordHlwZXMg
PSBmaW5kVHlwZUZvckV4cHJlc3Npb24od3JhcHBlciwgIngpIik7IAorYXNzZXJ0KHR5cGVzLmlu
c3RydWN0aW9uVHlwZVNldC5kaXNwbGF5VHlwZU5hbWUgPT09IFQuU3RyaW5nLCAiUGFyYW1ldGVy
ICd4JyBzaG91bGQgYmUgJ1N0cmluZyciKTsKKwordHlwZXMgPSBmaW5kVHlwZUZvckV4cHJlc3Np
b24od3JhcHBlciwgInl5eSA9PiIpOworYXNzZXJ0KHR5cGVzLmluc3RydWN0aW9uVHlwZVNldC5k
aXNwbGF5VHlwZU5hbWUgPT09IFQuU3RyaW5nLCAiUGFyYW1ldGVyICd5eXknIHNob3VsZCBiZSAn
U3RyaW5nJyIpOwpJbmRleDogU291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZwo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViSW5zcGVjdG9yVUkvQ2hhbmdlTG9nCShyZXZpc2lvbiAxOTAxMzUp
CisrKyBTb3VyY2UvV2ViSW5zcGVjdG9yVUkvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDMgKzEsMjYgQEAKKzIwMTUtMDktMjIgIFNhYW0gYmFyYXRpICA8c2JhcmF0aUBhcHBsZS5jb20+
CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogW0VTNl0gSW1wcm92ZSBUeXBlIFByb2ZpbGVyIFN1
cHBvcnQgZm9yIEFycm93IEZ1bmN0aW9ucworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTQzMTcxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgRXNwcmltYSBhbmQgSlNDIGJvdGggc3VwcG9ydCBhcnJvdyBmdW5j
dGlvbnMuIFdlIGp1c3QKKyAgICAgICAgbmVlZCB0byBzdXBwb3J0IGl0IGluIG91ciBBU1QgYW5k
IGRvIHRoZSByaWdodCB0aGluZ3MKKyAgICAgICAgdG8gaW5jbHVkZSBzdXBwb3J0IGluIHRoZSB0
eXBlIHByb2ZpbGVyIGJpdHMuCisKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJz
L1R5cGVUb2tlbkFubm90YXRvci5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5UeXBlVG9rZW5B
bm5vdGF0b3IucHJvdG90eXBlLl9pbnNlcnRUeXBlVG9rZW4pOgorICAgICAgICAoV2ViSW5zcGVj
dG9yLlR5cGVUb2tlbkFubm90YXRvci5wcm90b3R5cGUuX3RyYW5zbGF0ZVRvT2Zmc2V0QWZ0ZXJG
dW5jdGlvblBhcmFtZXRlckxpc3QuaXNMaW5lVGVybWluYXRvcik6CisgICAgICAgIChXZWJJbnNw
ZWN0b3IuVHlwZVRva2VuQW5ub3RhdG9yLnByb3RvdHlwZS5fdHJhbnNsYXRlVG9PZmZzZXRBZnRl
ckZ1bmN0aW9uUGFyYW1ldGVyTGlzdCk6CisgICAgICAgICogVXNlckludGVyZmFjZS9Nb2RlbHMv
U2NyaXB0U3ludGF4VHJlZS5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5TY3JpcHRTeW50YXhU
cmVlLnByb3RvdHlwZS5jb250YWluc05vbkVtcHR5UmV0dXJuU3RhdGVtZW50LnJlbW92ZUZ1bmN0
aW9uc0ZpbHRlcik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU2NyaXB0U3ludGF4VHJlZS5wcm90
b3R5cGUuY29udGFpbnNOb25FbXB0eVJldHVyblN0YXRlbWVudCk6CisgICAgICAgIChXZWJJbnNw
ZWN0b3IuU2NyaXB0U3ludGF4VHJlZS5mdW5jdGlvblJldHVybkRpdm90KToKKyAgICAgICAgKFdl
Ykluc3BlY3Rvci5TY3JpcHRTeW50YXhUcmVlLnByb3RvdHlwZS5fcmVjdXJzZSk6CisgICAgICAg
IChXZWJJbnNwZWN0b3IuU2NyaXB0U3ludGF4VHJlZS5wcm90b3R5cGUuX2NyZWF0ZUludGVybmFs
U3ludGF4VHJlZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU2NyaXB0U3ludGF4VHJlZSk6CisK
IDIwMTUtMDktMjIgIFNhYW0gYmFyYXRpICA8c2JhcmF0aUBhcHBsZS5jb20+CiAKICAgICAgICAg
V2ViIEluc3BlY3RvcjogdXBkYXRlIEVzcHJpbWEgdG8gbGF0ZXN0IHZlcnNpb24KSW5kZXg6IFNv
dXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL1R5cGVUb2tlbkFu
bm90YXRvci5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9Db250cm9sbGVycy9UeXBlVG9rZW5Bbm5vdGF0b3IuanMJKHJldmlzaW9uIDE5MDA5OCkK
KysrIFNvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL1R5cGVU
b2tlbkFubm90YXRvci5qcwkod29ya2luZyBjb3B5KQpAQCAtOTUsNyArOTUsNyBAQCBXZWJJbnNw
ZWN0b3IuVHlwZVRva2VuQW5ub3RhdG9yID0gY2xhc3MgCiAgICAgICAgICAgICByZXR1cm47CiAg
ICAgICAgIH0KIAotICAgICAgICBjb25zb2xlLmFzc2VydChub2RlLnR5cGUgPT09IFdlYkluc3Bl
Y3Rvci5TY3JpcHRTeW50YXhUcmVlLk5vZGVUeXBlLkZ1bmN0aW9uRGVjbGFyYXRpb24gfHwgbm9k
ZS50eXBlID09PSBXZWJJbnNwZWN0b3IuU2NyaXB0U3ludGF4VHJlZS5Ob2RlVHlwZS5GdW5jdGlv
bkV4cHJlc3Npb24pOworICAgICAgICBjb25zb2xlLmFzc2VydChub2RlLnR5cGUgPT09IFdlYklu
c3BlY3Rvci5TY3JpcHRTeW50YXhUcmVlLk5vZGVUeXBlLkZ1bmN0aW9uRGVjbGFyYXRpb24gfHwg
bm9kZS50eXBlID09PSBXZWJJbnNwZWN0b3IuU2NyaXB0U3ludGF4VHJlZS5Ob2RlVHlwZS5GdW5j
dGlvbkV4cHJlc3Npb24gfHwgbm9kZS50eXBlID09PSBXZWJJbnNwZWN0b3IuU2NyaXB0U3ludGF4
VHJlZS5Ob2RlVHlwZS5BcnJvd0Z1bmN0aW9uRXhwcmVzc2lvbik7CiAKICAgICAgICAgdmFyIGZ1
bmN0aW9uUmV0dXJuVHlwZSA9IG5vZGUuYXR0YWNobWVudHMucmV0dXJuVHlwZXM7CiAgICAgICAg
IGlmICghZnVuY3Rpb25SZXR1cm5UeXBlIHx8ICFmdW5jdGlvblJldHVyblR5cGUudmFsaWQpCkBA
IC0xNDgsNiArMTQ4LDcgQEAgV2ViSW5zcGVjdG9yLlR5cGVUb2tlbkFubm90YXRvciA9IGNsYXNz
IAogICAgICAgICB2YXIgaXNNdWx0aUxpbmVDb21tZW50ID0gZmFsc2U7CiAgICAgICAgIHZhciBp
c1NpbmdsZUxpbmVDb21tZW50ID0gZmFsc2U7CiAgICAgICAgIHZhciBzaG91bGRJZ25vcmUgPSBm
YWxzZTsKKyAgICAgICAgY29uc3QgaXNBcnJvd0Z1bmN0aW9uID0gbm9kZS50eXBlID09PSBXZWJJ
bnNwZWN0b3IuU2NyaXB0U3ludGF4VHJlZS5Ob2RlVHlwZS5BcnJvd0Z1bmN0aW9uRXhwcmVzc2lv
bjsKIAogICAgICAgICBmdW5jdGlvbiBpc0xpbmVUZXJtaW5hdG9yKGNoYXIpCiAgICAgICAgIHsK
QEAgLTE1Nyw3ICsxNTgsMTAgQEAgV2ViSW5zcGVjdG9yLlR5cGVUb2tlbkFubm90YXRvciA9IGNs
YXNzIAogICAgICAgICAgICAgcmV0dXJuIGNoYXIgPT09ICJcbiIgfHwgY2hhciA9PT0gIlxyIiB8
fCBjaGFyID09PSAiXHUyMDI4IiB8fCBjaGFyID09PSAiXHUyMDI5IjsKICAgICAgICAgfQogCi0g
ICAgICAgIHdoaWxlICgoc291cmNlU3RyaW5nW29mZnNldF0gIT09ICIpIiB8fCBzaG91bGRJZ25v
cmUpICYmIG9mZnNldCA8IHNvdXJjZVN0cmluZy5sZW5ndGgpIHsKKyAgICAgICAgd2hpbGUgKCgo
IWlzQXJyb3dGdW5jdGlvbiAmJiBzb3VyY2VTdHJpbmdbb2Zmc2V0XSAhPT0gIikiKQorICAgICAg
ICAgICAgICAgIHx8IChpc0Fycm93RnVuY3Rpb24gJiYgc291cmNlU3RyaW5nW29mZnNldF0gIT09
ICI+IikKKyAgICAgICAgICAgICAgICB8fCBzaG91bGRJZ25vcmUpCisgICAgICAgICAgICAgICAm
JiBvZmZzZXQgPCBzb3VyY2VTdHJpbmcubGVuZ3RoKSB7CiAgICAgICAgICAgICBpZiAoaXNTaW5n
bGVMaW5lQ29tbWVudCAmJiBpc0xpbmVUZXJtaW5hdG9yKHNvdXJjZVN0cmluZ1tvZmZzZXRdKSkg
ewogICAgICAgICAgICAgICAgIGlzU2luZ2xlTGluZUNvbW1lbnQgPSBmYWxzZTsKICAgICAgICAg
ICAgICAgICBzaG91bGRJZ25vcmUgPSBmYWxzZTsKSW5kZXg6IFNvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL01vZGVscy9TY3JpcHRTeW50YXhUcmVlLmpzCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9TY3JpcHRTeW50YXhU
cmVlLmpzCShyZXZpc2lvbiAxOTAxMTApCisrKyBTb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlcklu
dGVyZmFjZS9Nb2RlbHMvU2NyaXB0U3ludGF4VHJlZS5qcwkod29ya2luZyBjb3B5KQpAQCAtMTI4
LDcgKzEyOCw4IEBAIFdlYkluc3BlY3Rvci5TY3JpcHRTeW50YXhUcmVlID0gY2xhc3MgU2MKICAg
ICAgICAgZnVuY3Rpb24gcmVtb3ZlRnVuY3Rpb25zRmlsdGVyKG5vZGUpCiAgICAgICAgIHsKICAg
ICAgICAgICAgIHJldHVybiBub2RlLnR5cGUgIT09IFdlYkluc3BlY3Rvci5TY3JpcHRTeW50YXhU
cmVlLk5vZGVUeXBlLkZ1bmN0aW9uRXhwcmVzc2lvbgotICAgICAgICAgICAgICAgICYmIG5vZGUu
dHlwZSAhPT0gV2ViSW5zcGVjdG9yLlNjcmlwdFN5bnRheFRyZWUuTm9kZVR5cGUuRnVuY3Rpb25E
ZWNsYXJhdGlvbjsKKyAgICAgICAgICAgICAgICAmJiBub2RlLnR5cGUgIT09IFdlYkluc3BlY3Rv
ci5TY3JpcHRTeW50YXhUcmVlLk5vZGVUeXBlLkZ1bmN0aW9uRGVjbGFyYXRpb24KKyAgICAgICAg
ICAgICAgICAmJiBub2RlLnR5cGUgIT09IFdlYkluc3BlY3Rvci5TY3JpcHRTeW50YXhUcmVlLk5v
ZGVUeXBlLkFycm93RnVuY3Rpb25FeHByZXNzaW9uOwogICAgICAgICB9CiAKICAgICAgICAgdmFy
IG5vZGVzID0gdGhpcy5maWx0ZXIocmVtb3ZlRnVuY3Rpb25zRmlsdGVyLCBzdGFydE5vZGUpOwpA
QCAtMTQ4LDEwICsxNDksNyBAQCBXZWJJbnNwZWN0b3IuU2NyaXB0U3ludGF4VHJlZSA9IGNsYXNz
IFNjCiAKICAgICBzdGF0aWMgZnVuY3Rpb25SZXR1cm5EaXZvdChub2RlKQogICAgIHsKLSAgICAg
ICAgY29uc29sZS5hc3NlcnQoCi0gICAgICAgICAgICBub2RlLnR5cGUgPT09IFdlYkluc3BlY3Rv
ci5TY3JpcHRTeW50YXhUcmVlLk5vZGVUeXBlLkZ1bmN0aW9uRGVjbGFyYXRpb24gCi0gICAgICAg
ICAgICB8fCBub2RlLnR5cGUgPT09IFdlYkluc3BlY3Rvci5TY3JpcHRTeW50YXhUcmVlLk5vZGVU
eXBlLkZ1bmN0aW9uRXhwcmVzc2lvbiAKLSAgICAgICAgICAgIHx8IG5vZGUudHlwZSA9PT0gV2Vi
SW5zcGVjdG9yLlNjcmlwdFN5bnRheFRyZWUuTm9kZVR5cGUuTWV0aG9kRGVmaW5pdGlvbik7Cisg
ICAgICAgIGNvbnNvbGUuYXNzZXJ0KCBub2RlLnR5cGUgPT09IFdlYkluc3BlY3Rvci5TY3JpcHRT
eW50YXhUcmVlLk5vZGVUeXBlLkZ1bmN0aW9uRGVjbGFyYXRpb24gfHwgbm9kZS50eXBlID09PSBX
ZWJJbnNwZWN0b3IuU2NyaXB0U3ludGF4VHJlZS5Ob2RlVHlwZS5GdW5jdGlvbkV4cHJlc3Npb24g
fHwgbm9kZS50eXBlID09PSBXZWJJbnNwZWN0b3IuU2NyaXB0U3ludGF4VHJlZS5Ob2RlVHlwZS5N
ZXRob2REZWZpbml0aW9uIHx8IG5vZGUudHlwZSA9PT0gV2ViSW5zcGVjdG9yLlNjcmlwdFN5bnRh
eFRyZWUuTm9kZVR5cGUuQXJyb3dGdW5jdGlvbkV4cHJlc3Npb24pOyAKIAogICAgICAgICAvLyBD
T01QQVRJQklMSVRZIChpT1MgOSk6IExlZ2FjeSBCYWNrZW5kcyB2aWV3IHRoZSByZXR1cm4gdHlw
ZSBhcyBiZWluZyB0aGUgb3BlbmluZyAieyIgb2YgdGhlIGZ1bmN0aW9uIGJvZHkuIAogICAgICAg
ICAvLyBBZnRlciBpT1MgOSwgdGhpcyBpcyB0byBtb3ZlIHRvIHRoZSBzdGFydCBvZiB0aGUgZnVu
Y3Rpb24gc3RhdGVtZW50L2V4cHJlc3Npb24uIFNlZSBiZWxvdzoKQEAgLTE3OSw2ICsxNzcsNyBA
QCBXZWJJbnNwZWN0b3IuU2NyaXB0U3ludGF4VHJlZSA9IGNsYXNzIFNjCiAgICAgICAgICAgICBz
d2l0Y2ggKG5vZGUudHlwZSkgewogICAgICAgICAgICAgY2FzZSBXZWJJbnNwZWN0b3IuU2NyaXB0
U3ludGF4VHJlZS5Ob2RlVHlwZS5GdW5jdGlvbkRlY2xhcmF0aW9uOgogICAgICAgICAgICAgY2Fz
ZSBXZWJJbnNwZWN0b3IuU2NyaXB0U3ludGF4VHJlZS5Ob2RlVHlwZS5GdW5jdGlvbkV4cHJlc3Np
b246CisgICAgICAgICAgICBjYXNlIFdlYkluc3BlY3Rvci5TY3JpcHRTeW50YXhUcmVlLk5vZGVU
eXBlLkFycm93RnVuY3Rpb25FeHByZXNzaW9uOgogICAgICAgICAgICAgICAgIGZvciAodmFyIHBh
cmFtIG9mIG5vZGUucGFyYW1zKSB7CiAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGlkZW50
aWZpZXIgb2YgdGhpcy5fZ2F0aGVySWRlbnRpZmllcnNJbkRlY2xhcmF0aW9uKHBhcmFtKSkgewog
ICAgICAgICAgICAgICAgICAgICAgICAgYWxsUmVxdWVzdHMucHVzaCh7CkBAIC0xOTAsNyArMTg5
LDYgQEAgV2ViSW5zcGVjdG9yLlNjcmlwdFN5bnRheFRyZWUgPSBjbGFzcyBTYwogICAgICAgICAg
ICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgfQogCi0KICAgICAgICAgICAgICAgICBhbGxS
ZXF1ZXN0cy5wdXNoKHsKICAgICAgICAgICAgICAgICAgICAgdHlwZUluZm9ybWF0aW9uRGVzY3Jp
cHRvcjogV2ViSW5zcGVjdG9yLlNjcmlwdFN5bnRheFRyZWUuVHlwZVByb2ZpbGVyU2VhcmNoRGVz
Y3JpcHRvci5GdW5jdGlvblJldHVybiwKICAgICAgICAgICAgICAgICAgICAgc291cmNlSUQsCkBA
IC0zNjgsNiArMzY2LDcgQEAgV2ViSW5zcGVjdG9yLlNjcmlwdFN5bnRheFRyZWUgPSBjbGFzcyBT
YwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgV2ViSW5zcGVjdG9yLlNjcmlwdFN5
bnRheFRyZWUuTm9kZVR5cGUuRnVuY3Rpb25EZWNsYXJhdGlvbjoKICAgICAgICAgY2FzZSBXZWJJ
bnNwZWN0b3IuU2NyaXB0U3ludGF4VHJlZS5Ob2RlVHlwZS5GdW5jdGlvbkV4cHJlc3Npb246Cisg
ICAgICAgIGNhc2UgV2ViSW5zcGVjdG9yLlNjcmlwdFN5bnRheFRyZWUuTm9kZVR5cGUuQXJyb3dG
dW5jdGlvbkV4cHJlc3Npb246CiAgICAgICAgICAgICBjYWxsYmFjayhub2RlLCBzdGF0ZSk7CiAg
ICAgICAgICAgICB0aGlzLl9yZWN1cnNlKG5vZGUuaWQsIGNhbGxiYWNrLCBzdGF0ZSk7CiAgICAg
ICAgICAgICB0aGlzLl9yZWN1cnNlQXJyYXkobm9kZS5wYXJhbXMsIGNhbGxiYWNrLCBzdGF0ZSk7
CkBAIC01MjcsNiArNTI2LDE3IEBAIFdlYkluc3BlY3Rvci5TY3JpcHRTeW50YXhUcmVlID0gY2xh
c3MgU2MKIAogICAgICAgICB2YXIgcmVzdWx0ID0gbnVsbDsKICAgICAgICAgc3dpdGNoIChub2Rl
LnR5cGUpIHsKKyAgICAgICAgY2FzZSAiQXJyb3dGdW5jdGlvbkV4cHJlc3Npb24iOgorICAgICAg
ICAgICAgcmVzdWx0ID0geworICAgICAgICAgICAgICAgIHR5cGU6IFdlYkluc3BlY3Rvci5TY3Jp
cHRTeW50YXhUcmVlLk5vZGVUeXBlLkFycm93RnVuY3Rpb25FeHByZXNzaW9uLAorICAgICAgICAg
ICAgICAgIGlkOiB0aGlzLl9jcmVhdGVJbnRlcm5hbFN5bnRheFRyZWUobm9kZS5pZCksCisgICAg
ICAgICAgICAgICAgcGFyYW1zOiBub2RlLnBhcmFtcy5tYXAodGhpcy5fY3JlYXRlSW50ZXJuYWxT
eW50YXhUcmVlLmJpbmQodGhpcykpLAorICAgICAgICAgICAgICAgIGRlZmF1bHRzOiBub2RlLmRl
ZmF1bHRzLm1hcCh0aGlzLl9jcmVhdGVJbnRlcm5hbFN5bnRheFRyZWUuYmluZCh0aGlzKSksCisg
ICAgICAgICAgICAgICAgYm9keTogdGhpcy5fY3JlYXRlSW50ZXJuYWxTeW50YXhUcmVlKG5vZGUu
Ym9keSksCisgICAgICAgICAgICAgICAgZXhwcmVzc2lvbjogbm9kZS5leHByZXNzaW9uLCAvLyBJ
cyB0aGUgYm9keSBhIHNpbmdsZSBleHByZXNzaW9uIG9yIGlzIGl0IGEgYmxvY2sgc3RhdGVtZW50
LgorICAgICAgICAgICAgICAgIGlzR2V0dGVyT3JTZXR0ZXI6IGZhbHNlCisgICAgICAgICAgICB9
OworICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgIkFzc2lnbm1lbnRFeHByZXNzaW9u
IjoKICAgICAgICAgICAgIHJlc3VsdCA9IHsKICAgICAgICAgICAgICAgICB0eXBlOiBXZWJJbnNw
ZWN0b3IuU2NyaXB0U3ludGF4VHJlZS5Ob2RlVHlwZS5Bc3NpZ25tZW50RXhwcmVzc2lvbiwKQEAg
LTk0Miw2ICs5NTIsNyBAQCBXZWJJbnNwZWN0b3IuU2NyaXB0U3ludGF4VHJlZS5UeXBlUHJvZmls
CiBXZWJJbnNwZWN0b3IuU2NyaXB0U3ludGF4VHJlZS5Ob2RlVHlwZSA9IHsKICAgICBBcnJheUV4
cHJlc3Npb246IFN5bWJvbCgiYXJyYXktZXhwcmVzc2lvbiIpLAogICAgIEFycmF5UGF0dGVybjog
U3ltYm9sKCJhcnJheS1wYXR0ZXJuIiksCisgICAgQXJyb3dGdW5jdGlvbkV4cHJlc3Npb246IFN5
bWJvbCgiYXJyb3ctZnVuY3Rpb24tZXhwcmVzc2lvbiIpLAogICAgIEFzc2lnbm1lbnRFeHByZXNz
aW9uOiBTeW1ib2woImFzc2lnbm1lbnQtZXhwcmVzc2lvbiIpLAogICAgIEFzc2lnbm1lbnRQYXR0
ZXJuOiBTeW1ib2woImFzc2lnbm1lbnQtcGF0dGVybiIpLAogICAgIEJpbmFyeUV4cHJlc3Npb246
IFN5bWJvbCgiYmluYXJ5LWV4cHJlc3Npb24iKSwK
</data>
<flag name="review"
          id="286957"
          type_id="1"
          status="-"
          setter="joepeck"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>261782</attachid>
            <date>2015-09-22 17:26:40 -0700</date>
            <delta_ts>2015-09-22 17:29:41 -0700</delta_ts>
            <desc>patch</desc>
            <filename>c-backup.diff</filename>
            <type>text/plain</type>
            <size>19413</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTkwMTQzKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI3IEBA
CisyMDE1LTA5LTIyICBTYWFtIGJhcmF0aSAgPHNiYXJhdGlAYXBwbGUuY29tPgorCisgICAgICAg
IFdlYiBJbnNwZWN0b3I6IFtFUzZdIEltcHJvdmUgVHlwZSBQcm9maWxlciBTdXBwb3J0IGZvciBB
cnJvdyBGdW5jdGlvbnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE0MzE3MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIFdlIG5vdyBuZWVkIHRvIHRha2UgaW50byBhY2NvdW50IFR5cGVQcm9maWxlclNlYXJj
aERlc2NyaXB0b3Igd2hlbgorICAgICAgICBoYXNoaW5nIHJlc3VsdHMgZm9yIHR5cGUgcHJvZmls
ZXIgcXVlcmllcy4gQmVmb3JlLCB3ZSd2ZSBnb3R0ZW4KKyAgICAgICAgYXdheSB3aXRoIG5vdCBk
b2luZyB0aGlzIGJlY2F1c2UgYmVmb3JlIHdlIHdvdWxkIG5ldmVyIGhhdmUgYSB0ZXh0IAorICAg
ICAgICBjb2xsaXNpb24gYmV0d2VlbiBhIHJldHVybiB0eXBlIHRleHQgb2Zmc2V0IGFuZCBhIG5v
cm1hbCBleHByZXNzaW9uIHRleHQKKyAgICAgICAgb2Zmc2V0LiBCdXQsIHdpdGggYXJyb3cgZnVu
Y3Rpb25zLCB3ZSB3aWxsIGhhdmUgY29sbGlzaW9ucyB3aGVuCisgICAgICAgIHRoZSBhcnJvdyBm
dW5jdGlvbiBkb2Vzbid0IGhhdmUgcGFyZW5zIGFyb3VuZCBpdHMgc2luZ2xlIHBhcmFtZXRlci4K
KyAgICAgICAgSS5lOiAicGFyYW0gPT4geyAuLi4gfTsiCisKKyAgICAgICAgKiBydW50aW1lL1R5
cGVQcm9maWxlci5jcHA6CisgICAgICAgIChKU0M6OlR5cGVQcm9maWxlcjo6ZmluZExvY2F0aW9u
KToKKyAgICAgICAgKiBydW50aW1lL1R5cGVQcm9maWxlci5oOgorICAgICAgICAoSlNDOjpRdWVy
eUtleTo6UXVlcnlLZXkpOgorICAgICAgICAoSlNDOjpRdWVyeUtleTo6aXNIYXNoVGFibGVEZWxl
dGVkVmFsdWUpOgorICAgICAgICAoSlNDOjpRdWVyeUtleTo6b3BlcmF0b3I9PSk6CisgICAgICAg
IChKU0M6OlF1ZXJ5S2V5OjpoYXNoKToKKyAgICAgICAgKiB0ZXN0cy90eXBlUHJvZmlsZXIvYXJy
b3ctZnVuY3Rpb25zLmpzOiBBZGRlZC4KKwogMjAxNS0wOS0yMiAgRmlsaXAgUGl6bG8gIDxmcGl6
bG9AYXBwbGUuY29tPgogCiAgICAgICAgIEdldCByaWQgb2YgRU5BQkxFKFBBUkFMTEVMX0dDKQpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVHlwZVByb2ZpbGVyLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UeXBlUHJvZmlsZXIuY3Bw
CShyZXZpc2lvbiAxOTAxMzcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UeXBl
UHJvZmlsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDgsNyArMTA4LDcgQEAgU3RyaW5nIFR5
cGVQcm9maWxlcjo6dHlwZUluZm9ybWF0aW9uRm9yRQogCiBUeXBlTG9jYXRpb24qIFR5cGVQcm9m
aWxlcjo6ZmluZExvY2F0aW9uKHVuc2lnbmVkIGRpdm90LCBpbnRwdHJfdCBzb3VyY2VJRCwgVHlw
ZVByb2ZpbGVyU2VhcmNoRGVzY3JpcHRvciBkZXNjcmlwdG9yLCBWTSYgdm0pCiB7Ci0gICAgUXVl
cnlLZXkgcXVlcnlLZXkoc291cmNlSUQsIGRpdm90KTsKKyAgICBRdWVyeUtleSBxdWVyeUtleShz
b3VyY2VJRCwgZGl2b3QsIGRlc2NyaXB0b3IpOwogICAgIGF1dG8gaXRlciA9IG1fcXVlcnlDYWNo
ZS5maW5kKHF1ZXJ5S2V5KTsKICAgICBpZiAoaXRlciAhPSBtX3F1ZXJ5Q2FjaGUuZW5kKCkpCiAg
ICAgICAgIHJldHVybiBpdGVyLT52YWx1ZTsKQEAgLTEyOSw3ICsxMjksNyBAQCBUeXBlTG9jYXRp
b24qIFR5cGVQcm9maWxlcjo6ZmluZExvY2F0aW9uCiAgICAgICAgIGlmIChkZXNjcmlwdG9yID09
IFR5cGVQcm9maWxlclNlYXJjaERlc2NyaXB0b3JGdW5jdGlvblJldHVybiAmJiBsb2NhdGlvbi0+
bV9nbG9iYWxWYXJpYWJsZUlEID09IFR5cGVQcm9maWxlclJldHVyblN0YXRlbWVudCAmJiBsb2Nh
dGlvbi0+bV9kaXZvdEZvckZ1bmN0aW9uT2Zmc2V0SWZSZXR1cm5TdGF0ZW1lbnQgPT0gZGl2b3Qp
CiAgICAgICAgICAgICByZXR1cm4gbG9jYXRpb247CiAKLSAgICAgICAgaWYgKGRlc2NyaXB0b3Ig
IT0gVHlwZVByb2ZpbGVyU2VhcmNoRGVzY3JpcHRvckZ1bmN0aW9uUmV0dXJuICYmIGxvY2F0aW9u
LT5tX2Rpdm90U3RhcnQgPD0gZGl2b3QgJiYgZGl2b3QgPD0gbG9jYXRpb24tPm1fZGl2b3RFbmQg
JiYgbG9jYXRpb24tPm1fZGl2b3RFbmQgLSBsb2NhdGlvbi0+bV9kaXZvdFN0YXJ0IDw9IGRpc3Rh
bmNlKSB7CisgICAgICAgIGlmIChkZXNjcmlwdG9yICE9IFR5cGVQcm9maWxlclNlYXJjaERlc2Ny
aXB0b3JGdW5jdGlvblJldHVybiAmJiBsb2NhdGlvbi0+bV9nbG9iYWxWYXJpYWJsZUlEICE9IFR5
cGVQcm9maWxlclJldHVyblN0YXRlbWVudCAmJiBsb2NhdGlvbi0+bV9kaXZvdFN0YXJ0IDw9IGRp
dm90ICYmIGRpdm90IDw9IGxvY2F0aW9uLT5tX2Rpdm90RW5kICYmIGxvY2F0aW9uLT5tX2Rpdm90
RW5kIC0gbG9jYXRpb24tPm1fZGl2b3RTdGFydCA8PSBkaXN0YW5jZSkgewogICAgICAgICAgICAg
ZGlzdGFuY2UgPSBsb2NhdGlvbi0+bV9kaXZvdEVuZCAtIGxvY2F0aW9uLT5tX2Rpdm90U3RhcnQ7
CiAgICAgICAgICAgICBiZXN0TWF0Y2ggPSBsb2NhdGlvbjsKICAgICAgICAgfQpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVHlwZVByb2ZpbGVyLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVHlwZVByb2ZpbGVyLmgJKHJldmlzaW9uIDE5
MDEzNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1R5cGVQcm9maWxlci5oCSh3
b3JraW5nIGNvcHkpCkBAIC00MCwyOCArNDAsNTMgQEAgY2xhc3MgVHlwZURlc2NyaXB0aW9uOwog
CiBuYW1lc3BhY2UgSlNDIHsKIAorZW51bSBUeXBlUHJvZmlsZXJTZWFyY2hEZXNjcmlwdG9yIHsK
KyAgICBUeXBlUHJvZmlsZXJTZWFyY2hEZXNjcmlwdG9yTm9ybWFsID0gMSwKKyAgICBUeXBlUHJv
ZmlsZXJTZWFyY2hEZXNjcmlwdG9yRnVuY3Rpb25SZXR1cm4gPSAyCit9OworCiBzdHJ1Y3QgUXVl
cnlLZXkgewogICAgIFF1ZXJ5S2V5KCkKICAgICAgICAgOiBtX3NvdXJjZUlEKDApCiAgICAgICAg
ICwgbV9kaXZvdCgwKQorICAgICAgICAsIG1fc2VhcmNoRGVzY3JpcHRvcihUeXBlUHJvZmlsZXJT
ZWFyY2hEZXNjcmlwdG9yRnVuY3Rpb25SZXR1cm4pCiAgICAgeyB9CiAKLSAgICBRdWVyeUtleShp
bnRwdHJfdCBzb3VyY2VJRCwgdW5zaWduZWQgZGl2b3QpCisgICAgUXVlcnlLZXkoaW50cHRyX3Qg
c291cmNlSUQsIHVuc2lnbmVkIGRpdm90LCBUeXBlUHJvZmlsZXJTZWFyY2hEZXNjcmlwdG9yIHNl
YXJjaERlc2NyaXB0b3IpCiAgICAgICAgIDogbV9zb3VyY2VJRChzb3VyY2VJRCkKICAgICAgICAg
LCBtX2Rpdm90KGRpdm90KQorICAgICAgICAsIG1fc2VhcmNoRGVzY3JpcHRvcihzZWFyY2hEZXNj
cmlwdG9yKQogICAgIHsgfQogCiAgICAgUXVlcnlLZXkoV1RGOjpIYXNoVGFibGVEZWxldGVkVmFs
dWVUeXBlKQogICAgICAgICA6IG1fc291cmNlSUQoSU5UUFRSX01BWCkKICAgICAgICAgLCBtX2Rp
dm90KFVJTlRfTUFYKQorICAgICAgICAsIG1fc2VhcmNoRGVzY3JpcHRvcihUeXBlUHJvZmlsZXJT
ZWFyY2hEZXNjcmlwdG9yRnVuY3Rpb25SZXR1cm4pCiAgICAgeyB9CiAKLSAgICBib29sIGlzSGFz
aFRhYmxlRGVsZXRlZFZhbHVlKCkgY29uc3QgeyByZXR1cm4gbV9zb3VyY2VJRCA9PSBJTlRQVFJf
TUFYICYmIG1fZGl2b3QgPT0gVUlOVF9NQVg7IH0KLSAgICBib29sIG9wZXJhdG9yPT0oY29uc3Qg
UXVlcnlLZXkmIG90aGVyKSBjb25zdCB7IHJldHVybiBtX3NvdXJjZUlEID09IG90aGVyLm1fc291
cmNlSUQgJiYgbV9kaXZvdCA9PSBvdGhlci5tX2Rpdm90OyB9Ci0gICAgdW5zaWduZWQgaGFzaCgp
IGNvbnN0IHsgcmV0dXJuIG1fc291cmNlSUQgKyBtX2Rpdm90OyB9CisgICAgYm9vbCBpc0hhc2hU
YWJsZURlbGV0ZWRWYWx1ZSgpIGNvbnN0IAorICAgIHsgCisgICAgICAgIHJldHVybiBtX3NvdXJj
ZUlEID09IElOVFBUUl9NQVggCisgICAgICAgICAgICAmJiBtX2Rpdm90ID09IFVJTlRfTUFYCisg
ICAgICAgICAgICAmJiBtX3NlYXJjaERlc2NyaXB0b3IgPT0gVHlwZVByb2ZpbGVyU2VhcmNoRGVz
Y3JpcHRvckZ1bmN0aW9uUmV0dXJuOworICAgIH0KKworICAgIGJvb2wgb3BlcmF0b3I9PShjb25z
dCBRdWVyeUtleSYgb3RoZXIpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gbV9zb3VyY2VJ
RCA9PSBvdGhlci5tX3NvdXJjZUlEIAorICAgICAgICAgICAgJiYgbV9kaXZvdCA9PSBvdGhlci5t
X2Rpdm90CisgICAgICAgICAgICAmJiBtX3NlYXJjaERlc2NyaXB0b3IgPT0gb3RoZXIubV9zZWFy
Y2hEZXNjcmlwdG9yOworICAgIH0KKworICAgIHVuc2lnbmVkIGhhc2goKSBjb25zdCAKKyAgICB7
IAorICAgICAgICB1bnNpZ25lZCBoYXNoID0gbV9zb3VyY2VJRCArIG1fZGl2b3QgKiBtX3NlYXJj
aERlc2NyaXB0b3I7CisgICAgICAgIHJldHVybiBoYXNoOworICAgIH0KIAogICAgIGludHB0cl90
IG1fc291cmNlSUQ7CiAgICAgdW5zaWduZWQgbV9kaXZvdDsKKyAgICBUeXBlUHJvZmlsZXJTZWFy
Y2hEZXNjcmlwdG9yIG1fc2VhcmNoRGVzY3JpcHRvcjsKIH07CiAKIHN0cnVjdCBRdWVyeUtleUhh
c2ggewpAQCAtODAsNyArMTA1LDkgQEAgdGVtcGxhdGU8PiBzdHJ1Y3QgRGVmYXVsdEhhc2g8SlND
OjpRdWVyeQogfTsKIAogdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IEhhc2hUcmFpdHM7Ci10
ZW1wbGF0ZTw+IHN0cnVjdCBIYXNoVHJhaXRzPEpTQzo6UXVlcnlLZXk+IDogU2ltcGxlQ2xhc3NI
YXNoVHJhaXRzPEpTQzo6UXVlcnlLZXk+IHsgfTsKK3RlbXBsYXRlPD4gc3RydWN0IEhhc2hUcmFp
dHM8SlNDOjpRdWVyeUtleT4gOiBTaW1wbGVDbGFzc0hhc2hUcmFpdHM8SlNDOjpRdWVyeUtleT4g
eworICAgIHN0YXRpYyBjb25zdCBib29sIGVtcHR5VmFsdWVJc1plcm8gPSBmYWxzZTsKK307CiAK
IH0gLy8gbmFtZXNwYWNlIFdURgogCkBAIC04OCwxMSArMTE1LDYgQEAgbmFtZXNwYWNlIEpTQyB7
CiAKIGNsYXNzIFZNOwogCi1lbnVtIFR5cGVQcm9maWxlclNlYXJjaERlc2NyaXB0b3IgewotICAg
IFR5cGVQcm9maWxlclNlYXJjaERlc2NyaXB0b3JOb3JtYWwgPSAxLAotICAgIFR5cGVQcm9maWxl
clNlYXJjaERlc2NyaXB0b3JGdW5jdGlvblJldHVybiA9IDIKLX07Ci0KIGNsYXNzIFR5cGVQcm9m
aWxlciB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvdHlwZVByb2ZpbGVyL2Fycm93LWZ1bmN0aW9ucy5qcwo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvdHlwZVByb2ZpbGVyL2Fy
cm93LWZ1bmN0aW9ucy5qcwkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS90
ZXN0cy90eXBlUHJvZmlsZXIvYXJyb3ctZnVuY3Rpb25zLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0w
LDAgKzEsMzkgQEAKK2xvYWQoIi4vZHJpdmVyL2RyaXZlci5qcyIpOworCitsZXQgZm9vID0gKHgp
ID0+IHg7CitsZXQgYmFyID0gYWJjID0+IGFiYzsKK2xldCBiYXogPSBhYmMgPT4geyByZXR1cm4g
YWJjOyB9OworbGV0IGpheiA9IGFiYyA9PiB7IH07CisKK2Z1bmN0aW9uIHdyYXBwZXIoYikgewor
ICAgIGxldCBiYXogPSAoeCkgPT4geDsKKyAgICBiYXooYik7CisKKyAgICBsZXQgZm9vID0geXl5
ID0+IHl5eTsKKyAgICBmb28oYik7Cit9CisKKy8vID09PT09PSBFbmQgdGVzdCBjYXNlcyA9PT09
PT0KKworZm9vKDIwKTsKK3ZhciB0eXBlcyA9IHJldHVyblR5cGVGb3IoZm9vKTsKK2Fzc2VydCh0
eXBlcy5nbG9iYWxUeXBlU2V0LmRpc3BsYXlUeXBlTmFtZSA9PT0gVC5JbnRlZ2VyLCAiRnVuY3Rp
b24gJ2Zvbycgc2hvdWxkIHJldHVybiAnSW50ZWdlciciKTsKKworYmFyKCJoZWxsbyIpOwordHlw
ZXMgPSByZXR1cm5UeXBlRm9yKGJhcik7Cithc3NlcnQodHlwZXMuZ2xvYmFsVHlwZVNldC5kaXNw
bGF5VHlwZU5hbWUgPT09IFQuU3RyaW5nLCAiRnVuY3Rpb24gJ2Jhcicgc2hvdWxkIHJldHVybiAn
U3RyaW5nJyIpOworCitiYXooImhlbGxvIik7Cit0eXBlcyA9IHJldHVyblR5cGVGb3IoYmF6KTsK
K2Fzc2VydCh0eXBlcy5nbG9iYWxUeXBlU2V0LmRpc3BsYXlUeXBlTmFtZSA9PT0gVC5TdHJpbmcs
ICJGdW5jdGlvbiAnYmF6JyBzaG91bGQgcmV0dXJuICdTdHJpbmcnIik7CisKK2pheigiaGVsbG8i
KTsKK3R5cGVzID0gcmV0dXJuVHlwZUZvcihqYXopOworYXNzZXJ0KHR5cGVzLmdsb2JhbFR5cGVT
ZXQuZGlzcGxheVR5cGVOYW1lID09PSBULlVuZGVmaW5lZCwgIkZ1bmN0aW9uICdqYXonIHNob3Vs
ZCByZXR1cm4gJ1VuZGVmaW5lZCciKTsKKword3JhcHBlcigiaGVsbG8iKTsKK3R5cGVzID0gZmlu
ZFR5cGVGb3JFeHByZXNzaW9uKHdyYXBwZXIsICJ4KSIpOyAKK2Fzc2VydCh0eXBlcy5pbnN0cnVj
dGlvblR5cGVTZXQuZGlzcGxheVR5cGVOYW1lID09PSBULlN0cmluZywgIlBhcmFtZXRlciAneCcg
c2hvdWxkIGJlICdTdHJpbmcnIik7CisKK3R5cGVzID0gZmluZFR5cGVGb3JFeHByZXNzaW9uKHdy
YXBwZXIsICJ5eXkgPT4iKTsKK2Fzc2VydCh0eXBlcy5pbnN0cnVjdGlvblR5cGVTZXQuZGlzcGxh
eVR5cGVOYW1lID09PSBULlN0cmluZywgIlBhcmFtZXRlciAneXl5JyBzaG91bGQgYmUgJ1N0cmlu
ZyciKTsKSW5kZXg6IFNvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZwkocmV2aXNpb24gMTkwMTQzKQorKysg
U291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsx
LDI2IEBACisyMDE1LTA5LTIyICBTYWFtIGJhcmF0aSAgPHNiYXJhdGlAYXBwbGUuY29tPgorCisg
ICAgICAgIFdlYiBJbnNwZWN0b3I6IFtFUzZdIEltcHJvdmUgVHlwZSBQcm9maWxlciBTdXBwb3J0
IGZvciBBcnJvdyBGdW5jdGlvbnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE0MzE3MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIEVzcHJpbWEgYW5kIEpTQyBib3RoIHN1cHBvcnQgYXJyb3cgZnVuY3Rpb25z
LiBXZSBqdXN0CisgICAgICAgIG5lZWQgdG8gc3VwcG9ydCBpdCBpbiBvdXIgQVNUIGFuZCBkbyB0
aGUgcmlnaHQgdGhpbmdzCisgICAgICAgIHRvIGluY2x1ZGUgc3VwcG9ydCBpbiB0aGUgdHlwZSBw
cm9maWxlciBiaXRzLgorCisgICAgICAgICogVXNlckludGVyZmFjZS9Db250cm9sbGVycy9UeXBl
VG9rZW5Bbm5vdGF0b3IuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVHlwZVRva2VuQW5ub3Rh
dG9yLnByb3RvdHlwZS5faW5zZXJ0VHlwZVRva2VuKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5U
eXBlVG9rZW5Bbm5vdGF0b3IucHJvdG90eXBlLl90cmFuc2xhdGVUb09mZnNldEFmdGVyRnVuY3Rp
b25QYXJhbWV0ZXJMaXN0LmlzTGluZVRlcm1pbmF0b3IpOgorICAgICAgICAoV2ViSW5zcGVjdG9y
LlR5cGVUb2tlbkFubm90YXRvci5wcm90b3R5cGUuX3RyYW5zbGF0ZVRvT2Zmc2V0QWZ0ZXJGdW5j
dGlvblBhcmFtZXRlckxpc3QpOgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvTW9kZWxzL1Njcmlw
dFN5bnRheFRyZWUuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU2NyaXB0U3ludGF4VHJlZS5w
cm90b3R5cGUuY29udGFpbnNOb25FbXB0eVJldHVyblN0YXRlbWVudC5yZW1vdmVGdW5jdGlvbnNG
aWx0ZXIpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNjcmlwdFN5bnRheFRyZWUucHJvdG90eXBl
LmNvbnRhaW5zTm9uRW1wdHlSZXR1cm5TdGF0ZW1lbnQpOgorICAgICAgICAoV2ViSW5zcGVjdG9y
LlNjcmlwdFN5bnRheFRyZWUuZnVuY3Rpb25SZXR1cm5EaXZvdCk6CisgICAgICAgIChXZWJJbnNw
ZWN0b3IuU2NyaXB0U3ludGF4VHJlZS5wcm90b3R5cGUuX3JlY3Vyc2UpOgorICAgICAgICAoV2Vi
SW5zcGVjdG9yLlNjcmlwdFN5bnRheFRyZWUucHJvdG90eXBlLl9jcmVhdGVJbnRlcm5hbFN5bnRh
eFRyZWUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNjcmlwdFN5bnRheFRyZWUpOgorCiAyMDE1
LTA5LTIyICBTYWFtIGJhcmF0aSAgPHNiYXJhdGlAYXBwbGUuY29tPgogCiAgICAgICAgIFdlYiBJ
bnNwZWN0b3I6IHVwZGF0ZSBFc3ByaW1hIHRvIGxhdGVzdCB2ZXJzaW9uCkluZGV4OiBTb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250cm9sbGVycy9UeXBlVG9rZW5Bbm5vdGF0
b3IuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2Uv
Q29udHJvbGxlcnMvVHlwZVRva2VuQW5ub3RhdG9yLmpzCShyZXZpc2lvbiAxOTAxMzcpCisrKyBT
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250cm9sbGVycy9UeXBlVG9rZW5B
bm5vdGF0b3IuanMJKHdvcmtpbmcgY29weSkKQEAgLTk1LDcgKzk1LDcgQEAgV2ViSW5zcGVjdG9y
LlR5cGVUb2tlbkFubm90YXRvciA9IGNsYXNzIAogICAgICAgICAgICAgcmV0dXJuOwogICAgICAg
ICB9CiAKLSAgICAgICAgY29uc29sZS5hc3NlcnQobm9kZS50eXBlID09PSBXZWJJbnNwZWN0b3Iu
U2NyaXB0U3ludGF4VHJlZS5Ob2RlVHlwZS5GdW5jdGlvbkRlY2xhcmF0aW9uIHx8IG5vZGUudHlw
ZSA9PT0gV2ViSW5zcGVjdG9yLlNjcmlwdFN5bnRheFRyZWUuTm9kZVR5cGUuRnVuY3Rpb25FeHBy
ZXNzaW9uKTsKKyAgICAgICAgY29uc29sZS5hc3NlcnQobm9kZS50eXBlID09PSBXZWJJbnNwZWN0
b3IuU2NyaXB0U3ludGF4VHJlZS5Ob2RlVHlwZS5GdW5jdGlvbkRlY2xhcmF0aW9uIHx8IG5vZGUu
dHlwZSA9PT0gV2ViSW5zcGVjdG9yLlNjcmlwdFN5bnRheFRyZWUuTm9kZVR5cGUuRnVuY3Rpb25F
eHByZXNzaW9uIHx8IG5vZGUudHlwZSA9PT0gV2ViSW5zcGVjdG9yLlNjcmlwdFN5bnRheFRyZWUu
Tm9kZVR5cGUuQXJyb3dGdW5jdGlvbkV4cHJlc3Npb24pOwogCiAgICAgICAgIHZhciBmdW5jdGlv
blJldHVyblR5cGUgPSBub2RlLmF0dGFjaG1lbnRzLnJldHVyblR5cGVzOwogICAgICAgICBpZiAo
IWZ1bmN0aW9uUmV0dXJuVHlwZSB8fCAhZnVuY3Rpb25SZXR1cm5UeXBlLnZhbGlkKQpAQCAtMTQ4
LDYgKzE0OCw3IEBAIFdlYkluc3BlY3Rvci5UeXBlVG9rZW5Bbm5vdGF0b3IgPSBjbGFzcyAKICAg
ICAgICAgdmFyIGlzTXVsdGlMaW5lQ29tbWVudCA9IGZhbHNlOwogICAgICAgICB2YXIgaXNTaW5n
bGVMaW5lQ29tbWVudCA9IGZhbHNlOwogICAgICAgICB2YXIgc2hvdWxkSWdub3JlID0gZmFsc2U7
CisgICAgICAgIGNvbnN0IGlzQXJyb3dGdW5jdGlvbiA9IG5vZGUudHlwZSA9PT0gV2ViSW5zcGVj
dG9yLlNjcmlwdFN5bnRheFRyZWUuTm9kZVR5cGUuQXJyb3dGdW5jdGlvbkV4cHJlc3Npb247CiAK
ICAgICAgICAgZnVuY3Rpb24gaXNMaW5lVGVybWluYXRvcihjaGFyKQogICAgICAgICB7CkBAIC0x
NTcsNyArMTU4LDEwIEBAIFdlYkluc3BlY3Rvci5UeXBlVG9rZW5Bbm5vdGF0b3IgPSBjbGFzcyAK
ICAgICAgICAgICAgIHJldHVybiBjaGFyID09PSAiXG4iIHx8IGNoYXIgPT09ICJcciIgfHwgY2hh
ciA9PT0gIlx1MjAyOCIgfHwgY2hhciA9PT0gIlx1MjAyOSI7CiAgICAgICAgIH0KIAotICAgICAg
ICB3aGlsZSAoKHNvdXJjZVN0cmluZ1tvZmZzZXRdICE9PSAiKSIgfHwgc2hvdWxkSWdub3JlKSAm
JiBvZmZzZXQgPCBzb3VyY2VTdHJpbmcubGVuZ3RoKSB7CisgICAgICAgIHdoaWxlICgoKCFpc0Fy
cm93RnVuY3Rpb24gJiYgc291cmNlU3RyaW5nW29mZnNldF0gIT09ICIpIikKKyAgICAgICAgICAg
ICAgICB8fCAoaXNBcnJvd0Z1bmN0aW9uICYmIHNvdXJjZVN0cmluZ1tvZmZzZXRdICE9PSAiPiIp
CisgICAgICAgICAgICAgICAgfHwgc2hvdWxkSWdub3JlKQorICAgICAgICAgICAgICAgJiYgb2Zm
c2V0IDwgc291cmNlU3RyaW5nLmxlbmd0aCkgewogICAgICAgICAgICAgaWYgKGlzU2luZ2xlTGlu
ZUNvbW1lbnQgJiYgaXNMaW5lVGVybWluYXRvcihzb3VyY2VTdHJpbmdbb2Zmc2V0XSkpIHsKICAg
ICAgICAgICAgICAgICBpc1NpbmdsZUxpbmVDb21tZW50ID0gZmFsc2U7CiAgICAgICAgICAgICAg
ICAgc2hvdWxkSWdub3JlID0gZmFsc2U7CkluZGV4OiBTb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNl
ckludGVyZmFjZS9Nb2RlbHMvU2NyaXB0U3ludGF4VHJlZS5qcwo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvU2NyaXB0U3ludGF4VHJlZS5q
cwkocmV2aXNpb24gMTkwMTM3KQorKysgU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvTW9kZWxzL1NjcmlwdFN5bnRheFRyZWUuanMJKHdvcmtpbmcgY29weSkKQEAgLTEyOCw3ICsx
MjgsOCBAQCBXZWJJbnNwZWN0b3IuU2NyaXB0U3ludGF4VHJlZSA9IGNsYXNzIFNjCiAgICAgICAg
IGZ1bmN0aW9uIHJlbW92ZUZ1bmN0aW9uc0ZpbHRlcihub2RlKQogICAgICAgICB7CiAgICAgICAg
ICAgICByZXR1cm4gbm9kZS50eXBlICE9PSBXZWJJbnNwZWN0b3IuU2NyaXB0U3ludGF4VHJlZS5O
b2RlVHlwZS5GdW5jdGlvbkV4cHJlc3Npb24KLSAgICAgICAgICAgICAgICAmJiBub2RlLnR5cGUg
IT09IFdlYkluc3BlY3Rvci5TY3JpcHRTeW50YXhUcmVlLk5vZGVUeXBlLkZ1bmN0aW9uRGVjbGFy
YXRpb247CisgICAgICAgICAgICAgICAgJiYgbm9kZS50eXBlICE9PSBXZWJJbnNwZWN0b3IuU2Ny
aXB0U3ludGF4VHJlZS5Ob2RlVHlwZS5GdW5jdGlvbkRlY2xhcmF0aW9uCisgICAgICAgICAgICAg
ICAgJiYgbm9kZS50eXBlICE9PSBXZWJJbnNwZWN0b3IuU2NyaXB0U3ludGF4VHJlZS5Ob2RlVHlw
ZS5BcnJvd0Z1bmN0aW9uRXhwcmVzc2lvbjsKICAgICAgICAgfQogCiAgICAgICAgIHZhciBub2Rl
cyA9IHRoaXMuZmlsdGVyKHJlbW92ZUZ1bmN0aW9uc0ZpbHRlciwgc3RhcnROb2RlKTsKQEAgLTE0
OCwxMCArMTQ5LDcgQEAgV2ViSW5zcGVjdG9yLlNjcmlwdFN5bnRheFRyZWUgPSBjbGFzcyBTYwog
CiAgICAgc3RhdGljIGZ1bmN0aW9uUmV0dXJuRGl2b3Qobm9kZSkKICAgICB7Ci0gICAgICAgIGNv
bnNvbGUuYXNzZXJ0KAotICAgICAgICAgICAgbm9kZS50eXBlID09PSBXZWJJbnNwZWN0b3IuU2Ny
aXB0U3ludGF4VHJlZS5Ob2RlVHlwZS5GdW5jdGlvbkRlY2xhcmF0aW9uIAotICAgICAgICAgICAg
fHwgbm9kZS50eXBlID09PSBXZWJJbnNwZWN0b3IuU2NyaXB0U3ludGF4VHJlZS5Ob2RlVHlwZS5G
dW5jdGlvbkV4cHJlc3Npb24gCi0gICAgICAgICAgICB8fCBub2RlLnR5cGUgPT09IFdlYkluc3Bl
Y3Rvci5TY3JpcHRTeW50YXhUcmVlLk5vZGVUeXBlLk1ldGhvZERlZmluaXRpb24pOworICAgICAg
ICBjb25zb2xlLmFzc2VydChub2RlLnR5cGUgPT09IFdlYkluc3BlY3Rvci5TY3JpcHRTeW50YXhU
cmVlLk5vZGVUeXBlLkZ1bmN0aW9uRGVjbGFyYXRpb24gfHwgbm9kZS50eXBlID09PSBXZWJJbnNw
ZWN0b3IuU2NyaXB0U3ludGF4VHJlZS5Ob2RlVHlwZS5GdW5jdGlvbkV4cHJlc3Npb24gfHwgbm9k
ZS50eXBlID09PSBXZWJJbnNwZWN0b3IuU2NyaXB0U3ludGF4VHJlZS5Ob2RlVHlwZS5NZXRob2RE
ZWZpbml0aW9uIHx8IG5vZGUudHlwZSA9PT0gV2ViSW5zcGVjdG9yLlNjcmlwdFN5bnRheFRyZWUu
Tm9kZVR5cGUuQXJyb3dGdW5jdGlvbkV4cHJlc3Npb24pOyAKIAogICAgICAgICAvLyBDT01QQVRJ
QklMSVRZIChpT1MgOSk6IExlZ2FjeSBCYWNrZW5kcyB2aWV3IHRoZSByZXR1cm4gdHlwZSBhcyBi
ZWluZyB0aGUgb3BlbmluZyAieyIgb2YgdGhlIGZ1bmN0aW9uIGJvZHkuIAogICAgICAgICAvLyBB
ZnRlciBpT1MgOSwgdGhpcyBpcyB0byBtb3ZlIHRvIHRoZSBzdGFydCBvZiB0aGUgZnVuY3Rpb24g
c3RhdGVtZW50L2V4cHJlc3Npb24uIFNlZSBiZWxvdzoKQEAgLTE3OSw2ICsxNzcsNyBAQCBXZWJJ
bnNwZWN0b3IuU2NyaXB0U3ludGF4VHJlZSA9IGNsYXNzIFNjCiAgICAgICAgICAgICBzd2l0Y2gg
KG5vZGUudHlwZSkgewogICAgICAgICAgICAgY2FzZSBXZWJJbnNwZWN0b3IuU2NyaXB0U3ludGF4
VHJlZS5Ob2RlVHlwZS5GdW5jdGlvbkRlY2xhcmF0aW9uOgogICAgICAgICAgICAgY2FzZSBXZWJJ
bnNwZWN0b3IuU2NyaXB0U3ludGF4VHJlZS5Ob2RlVHlwZS5GdW5jdGlvbkV4cHJlc3Npb246Cisg
ICAgICAgICAgICBjYXNlIFdlYkluc3BlY3Rvci5TY3JpcHRTeW50YXhUcmVlLk5vZGVUeXBlLkFy
cm93RnVuY3Rpb25FeHByZXNzaW9uOgogICAgICAgICAgICAgICAgIGZvciAodmFyIHBhcmFtIG9m
IG5vZGUucGFyYW1zKSB7CiAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGlkZW50aWZpZXIg
b2YgdGhpcy5fZ2F0aGVySWRlbnRpZmllcnNJbkRlY2xhcmF0aW9uKHBhcmFtKSkgewogICAgICAg
ICAgICAgICAgICAgICAgICAgYWxsUmVxdWVzdHMucHVzaCh7CkBAIC0xOTAsNyArMTg5LDYgQEAg
V2ViSW5zcGVjdG9yLlNjcmlwdFN5bnRheFRyZWUgPSBjbGFzcyBTYwogICAgICAgICAgICAgICAg
ICAgICB9CiAgICAgICAgICAgICAgICAgfQogCi0KICAgICAgICAgICAgICAgICBhbGxSZXF1ZXN0
cy5wdXNoKHsKICAgICAgICAgICAgICAgICAgICAgdHlwZUluZm9ybWF0aW9uRGVzY3JpcHRvcjog
V2ViSW5zcGVjdG9yLlNjcmlwdFN5bnRheFRyZWUuVHlwZVByb2ZpbGVyU2VhcmNoRGVzY3JpcHRv
ci5GdW5jdGlvblJldHVybiwKICAgICAgICAgICAgICAgICAgICAgc291cmNlSUQsCkBAIC0zNjgs
NiArMzY2LDcgQEAgV2ViSW5zcGVjdG9yLlNjcmlwdFN5bnRheFRyZWUgPSBjbGFzcyBTYwogICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgV2ViSW5zcGVjdG9yLlNjcmlwdFN5bnRheFRy
ZWUuTm9kZVR5cGUuRnVuY3Rpb25EZWNsYXJhdGlvbjoKICAgICAgICAgY2FzZSBXZWJJbnNwZWN0
b3IuU2NyaXB0U3ludGF4VHJlZS5Ob2RlVHlwZS5GdW5jdGlvbkV4cHJlc3Npb246CisgICAgICAg
IGNhc2UgV2ViSW5zcGVjdG9yLlNjcmlwdFN5bnRheFRyZWUuTm9kZVR5cGUuQXJyb3dGdW5jdGlv
bkV4cHJlc3Npb246CiAgICAgICAgICAgICBjYWxsYmFjayhub2RlLCBzdGF0ZSk7CiAgICAgICAg
ICAgICB0aGlzLl9yZWN1cnNlKG5vZGUuaWQsIGNhbGxiYWNrLCBzdGF0ZSk7CiAgICAgICAgICAg
ICB0aGlzLl9yZWN1cnNlQXJyYXkobm9kZS5wYXJhbXMsIGNhbGxiYWNrLCBzdGF0ZSk7CkBAIC01
MjcsNiArNTI2LDI5IEBAIFdlYkluc3BlY3Rvci5TY3JpcHRTeW50YXhUcmVlID0gY2xhc3MgU2MK
IAogICAgICAgICB2YXIgcmVzdWx0ID0gbnVsbDsKICAgICAgICAgc3dpdGNoIChub2RlLnR5cGUp
IHsKKyAgICAgICAgY2FzZSAiQXJyYXlFeHByZXNzaW9uIjoKKyAgICAgICAgICAgIHJlc3VsdCA9
IHsKKyAgICAgICAgICAgICAgICB0eXBlOiBXZWJJbnNwZWN0b3IuU2NyaXB0U3ludGF4VHJlZS5O
b2RlVHlwZS5BcnJheUV4cHJlc3Npb24sCisgICAgICAgICAgICAgICAgZWxlbWVudHM6IG5vZGUu
ZWxlbWVudHMubWFwKHRoaXMuX2NyZWF0ZUludGVybmFsU3ludGF4VHJlZS5iaW5kKHRoaXMpKQor
ICAgICAgICAgICAgfTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlICJBcnJheVBh
dHRlcm4iOgorICAgICAgICAgICAgcmVzdWx0ID0geworICAgICAgICAgICAgICAgIHR5cGU6IFdl
Ykluc3BlY3Rvci5TY3JpcHRTeW50YXhUcmVlLk5vZGVUeXBlLkFycmF5UGF0dGVybiwKKyAgICAg
ICAgICAgICAgICBlbGVtZW50czogbm9kZS5lbGVtZW50cy5tYXAodGhpcy5fY3JlYXRlSW50ZXJu
YWxTeW50YXhUcmVlLmJpbmQodGhpcykpCisgICAgICAgICAgICB9OworICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgIGNhc2UgIkFycm93RnVuY3Rpb25FeHByZXNzaW9uIjoKKyAgICAgICAgICAg
IHJlc3VsdCA9IHsKKyAgICAgICAgICAgICAgICB0eXBlOiBXZWJJbnNwZWN0b3IuU2NyaXB0U3lu
dGF4VHJlZS5Ob2RlVHlwZS5BcnJvd0Z1bmN0aW9uRXhwcmVzc2lvbiwKKyAgICAgICAgICAgICAg
ICBpZDogdGhpcy5fY3JlYXRlSW50ZXJuYWxTeW50YXhUcmVlKG5vZGUuaWQpLAorICAgICAgICAg
ICAgICAgIHBhcmFtczogbm9kZS5wYXJhbXMubWFwKHRoaXMuX2NyZWF0ZUludGVybmFsU3ludGF4
VHJlZS5iaW5kKHRoaXMpKSwKKyAgICAgICAgICAgICAgICBkZWZhdWx0czogbm9kZS5kZWZhdWx0
cy5tYXAodGhpcy5fY3JlYXRlSW50ZXJuYWxTeW50YXhUcmVlLmJpbmQodGhpcykpLAorICAgICAg
ICAgICAgICAgIGJvZHk6IHRoaXMuX2NyZWF0ZUludGVybmFsU3ludGF4VHJlZShub2RlLmJvZHkp
LAorICAgICAgICAgICAgICAgIGV4cHJlc3Npb246IG5vZGUuZXhwcmVzc2lvbiwgLy8gQm9vbGVh
biBpbmRpY2F0aW5nIGlmIHRoZSBib2R5IGEgc2luZ2xlIGV4cHJlc3Npb24gb3IgYSBibG9jayBz
dGF0ZW1lbnQuCisgICAgICAgICAgICAgICAgaXNHZXR0ZXJPclNldHRlcjogZmFsc2UKKyAgICAg
ICAgICAgIH07CisgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSAiQXNzaWdubWVudEV4
cHJlc3Npb24iOgogICAgICAgICAgICAgcmVzdWx0ID0gewogICAgICAgICAgICAgICAgIHR5cGU6
IFdlYkluc3BlY3Rvci5TY3JpcHRTeW50YXhUcmVlLk5vZGVUeXBlLkFzc2lnbm1lbnRFeHByZXNz
aW9uLApAQCAtNTQyLDE4ICs1NjQsNiBAQCBXZWJJbnNwZWN0b3IuU2NyaXB0U3ludGF4VHJlZSA9
IGNsYXNzIFNjCiAgICAgICAgICAgICAgICAgcmlnaHQ6IHRoaXMuX2NyZWF0ZUludGVybmFsU3lu
dGF4VHJlZShub2RlLnJpZ2h0KSwKICAgICAgICAgICAgIH07CiAgICAgICAgICAgICBicmVhazsK
LSAgICAgICAgY2FzZSAiQXJyYXlFeHByZXNzaW9uIjoKLSAgICAgICAgICAgIHJlc3VsdCA9IHsK
LSAgICAgICAgICAgICAgICB0eXBlOiBXZWJJbnNwZWN0b3IuU2NyaXB0U3ludGF4VHJlZS5Ob2Rl
VHlwZS5BcnJheUV4cHJlc3Npb24sCi0gICAgICAgICAgICAgICAgZWxlbWVudHM6IG5vZGUuZWxl
bWVudHMubWFwKHRoaXMuX2NyZWF0ZUludGVybmFsU3ludGF4VHJlZS5iaW5kKHRoaXMpKQotICAg
ICAgICAgICAgfTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlICJBcnJheVBhdHRl
cm4iOgotICAgICAgICAgICAgcmVzdWx0ID0gewotICAgICAgICAgICAgICAgIHR5cGU6IFdlYklu
c3BlY3Rvci5TY3JpcHRTeW50YXhUcmVlLk5vZGVUeXBlLkFycmF5UGF0dGVybiwKLSAgICAgICAg
ICAgICAgICBlbGVtZW50czogbm9kZS5lbGVtZW50cy5tYXAodGhpcy5fY3JlYXRlSW50ZXJuYWxT
eW50YXhUcmVlLmJpbmQodGhpcykpCi0gICAgICAgICAgICB9OwotICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgIGNhc2UgIkJsb2NrU3RhdGVtZW50IjoKICAgICAgICAgICAgIHJlc3VsdCA9IHsK
ICAgICAgICAgICAgICAgICB0eXBlOiBXZWJJbnNwZWN0b3IuU2NyaXB0U3ludGF4VHJlZS5Ob2Rl
VHlwZS5CbG9ja1N0YXRlbWVudCwKQEAgLTk0Miw2ICs5NTIsNyBAQCBXZWJJbnNwZWN0b3IuU2Ny
aXB0U3ludGF4VHJlZS5UeXBlUHJvZmlsCiBXZWJJbnNwZWN0b3IuU2NyaXB0U3ludGF4VHJlZS5O
b2RlVHlwZSA9IHsKICAgICBBcnJheUV4cHJlc3Npb246IFN5bWJvbCgiYXJyYXktZXhwcmVzc2lv
biIpLAogICAgIEFycmF5UGF0dGVybjogU3ltYm9sKCJhcnJheS1wYXR0ZXJuIiksCisgICAgQXJy
b3dGdW5jdGlvbkV4cHJlc3Npb246IFN5bWJvbCgiYXJyb3ctZnVuY3Rpb24tZXhwcmVzc2lvbiIp
LAogICAgIEFzc2lnbm1lbnRFeHByZXNzaW9uOiBTeW1ib2woImFzc2lnbm1lbnQtZXhwcmVzc2lv
biIpLAogICAgIEFzc2lnbm1lbnRQYXR0ZXJuOiBTeW1ib2woImFzc2lnbm1lbnQtcGF0dGVybiIp
LAogICAgIEJpbmFyeUV4cHJlc3Npb246IFN5bWJvbCgiYmluYXJ5LWV4cHJlc3Npb24iKSwKSW5k
ZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFu
Z2VMb2cJKHJldmlzaW9uIDE5MDE0MykKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDEzIEBACisyMDE1LTA5LTIyICBTYWFtIGJhcmF0aSAgPHNiYXJh
dGlAYXBwbGUuY29tPgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IFtFUzZdIEltcHJvdmUgVHlw
ZSBQcm9maWxlciBTdXBwb3J0IGZvciBBcnJvdyBGdW5jdGlvbnMKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0MzE3MQorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogaW5zcGVjdG9yL21vZGVsL3BhcnNlLXNj
cmlwdC1zeW50YXgtdHJlZS1leHBlY3RlZC50eHQ6CisgICAgICAgICogaW5zcGVjdG9yL21vZGVs
L3BhcnNlLXNjcmlwdC1zeW50YXgtdHJlZS5odG1sOgorCiAyMDE1LTA5LTIyICBDb21taXQgUXVl
dWUgIDxjb21taXQtcXVldWVAd2Via2l0Lm9yZz4KIAogICAgICAgICBVbnJldmlld2VkLCByb2xs
aW5nIG91dCByMTkwMTM0LgpJbmRleDogTGF5b3V0VGVzdHMvaW5zcGVjdG9yL21vZGVsL3BhcnNl
LXNjcmlwdC1zeW50YXgtdHJlZS1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvaW5zcGVjdG9yL21vZGVsL3BhcnNlLXNjcmlwdC1zeW50YXgtdHJlZS1leHBlY3RlZC50eHQJ
KHJldmlzaW9uIDE5MDEzNykKKysrIExheW91dFRlc3RzL2luc3BlY3Rvci9tb2RlbC9wYXJzZS1z
Y3JpcHQtc3ludGF4LXRyZWUtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC00MCw1ICs0
MCw2IEBAIHBhc3NlZCBXaGlsZVN0YXRlbWVudAogcGFzc2VkIFdpdGhTdGF0ZW1lbnQKIHBhc3Nl
ZCBDbGFzc1N0YXRlbWVudCwgU3VwZXIsIE1ldGFQcm9wZXJ0eQogcGFzc2VkIEFzc2lnbm1lbnRQ
YXR0ZXJuCitwYXNzZWQgQXJyb3dGdW5jdGlvbkV4cHJlc3Npb24KIHBhc3NlZCBBTEwgVEVTVFMK
IApJbmRleDogTGF5b3V0VGVzdHMvaW5zcGVjdG9yL21vZGVsL3BhcnNlLXNjcmlwdC1zeW50YXgt
dHJlZS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2luc3BlY3Rvci9tb2RlbC9wYXJz
ZS1zY3JpcHQtc3ludGF4LXRyZWUuaHRtbAkocmV2aXNpb24gMTkwMTM3KQorKysgTGF5b3V0VGVz
dHMvaW5zcGVjdG9yL21vZGVsL3BhcnNlLXNjcmlwdC1zeW50YXgtdHJlZS5odG1sCSh3b3JraW5n
IGNvcHkpCkBAIC00NzYsNiArNDc2LDI2IEBAIGZ1bmN0aW9uIHRlc3QoKQogICAgIEluc3BlY3Rv
clRlc3QuYXNzZXJ0KG5vZGUuZGVjbGFyYXRpb25zWzBdLmlkLmVsZW1lbnRzWzBdLnJpZ2h0LnZh
bHVlID09PSAyMCk7CiAgICAgSW5zcGVjdG9yVGVzdC5sb2coInBhc3NlZCBBc3NpZ25tZW50UGF0
dGVybiIpOwogCisgICAgbm9kZSA9IG1ha2VOb2RlKCIoeCkgPT4geDsiLCB0cnVlKTsKKyAgICBJ
bnNwZWN0b3JUZXN0LmFzc2VydChub2RlLnR5cGUgPT09IFdlYkluc3BlY3Rvci5TY3JpcHRTeW50
YXhUcmVlLk5vZGVUeXBlLkFycm93RnVuY3Rpb25FeHByZXNzaW9uKTsKKyAgICBJbnNwZWN0b3JU
ZXN0LmFzc2VydChub2RlLnBhcmFtcy5sZW5ndGggPT09IDEpOworICAgIEluc3BlY3RvclRlc3Qu
YXNzZXJ0KG5vZGUucGFyYW1zWzBdLnR5cGUgPT09IFdlYkluc3BlY3Rvci5TY3JpcHRTeW50YXhU
cmVlLk5vZGVUeXBlLklkZW50aWZpZXIpOworICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0KG5vZGUu
cGFyYW1zWzBdLm5hbWUgPT09ICJ4Iik7CisgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnQobm9kZS5l
eHByZXNzaW9uID09PSB0cnVlKTsKKyAgICBJbnNwZWN0b3JUZXN0LmFzc2VydChub2RlLmRlZmF1
bHRzLmxlbmd0aCA9PT0gMCk7CisgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnQobm9kZS5ib2R5LnR5
cGUgPT09IFdlYkluc3BlY3Rvci5TY3JpcHRTeW50YXhUcmVlLk5vZGVUeXBlLklkZW50aWZpZXIp
OworCisgICAgbm9kZSA9IG1ha2VOb2RlKCIoeCA9IDIwKSA9PiB7IHJldHVybiB4OyB9OyIsIHRy
dWUpOworICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0KG5vZGUudHlwZSA9PT0gV2ViSW5zcGVjdG9y
LlNjcmlwdFN5bnRheFRyZWUuTm9kZVR5cGUuQXJyb3dGdW5jdGlvbkV4cHJlc3Npb24pOworICAg
IEluc3BlY3RvclRlc3QuYXNzZXJ0KG5vZGUucGFyYW1zLmxlbmd0aCA9PT0gMSk7CisgICAgSW5z
cGVjdG9yVGVzdC5hc3NlcnQobm9kZS5wYXJhbXNbMF0udHlwZSA9PT0gV2ViSW5zcGVjdG9yLlNj
cmlwdFN5bnRheFRyZWUuTm9kZVR5cGUuSWRlbnRpZmllcik7CisgICAgSW5zcGVjdG9yVGVzdC5h
c3NlcnQobm9kZS5wYXJhbXNbMF0ubmFtZSA9PT0gIngiKTsKKyAgICBJbnNwZWN0b3JUZXN0LmFz
c2VydChub2RlLmV4cHJlc3Npb24gPT09IGZhbHNlKTsKKyAgICBJbnNwZWN0b3JUZXN0LmFzc2Vy
dChub2RlLmRlZmF1bHRzLmxlbmd0aCA9PT0gMSk7CisgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnQo
bm9kZS5kZWZhdWx0c1swXS50eXBlID09PSBXZWJJbnNwZWN0b3IuU2NyaXB0U3ludGF4VHJlZS5O
b2RlVHlwZS5MaXRlcmFsKTsKKyAgICBJbnNwZWN0b3JUZXN0LmFzc2VydChub2RlLmJvZHkudHlw
ZSA9PT0gV2ViSW5zcGVjdG9yLlNjcmlwdFN5bnRheFRyZWUuTm9kZVR5cGUuQmxvY2tTdGF0ZW1l
bnQpOworICAgIEluc3BlY3RvclRlc3QubG9nKCJwYXNzZWQgQXJyb3dGdW5jdGlvbkV4cHJlc3Np
b24iKTsKKwogICAgIEluc3BlY3RvclRlc3QubG9nKCJwYXNzZWQgQUxMIFRFU1RTIik7CiAgICAg
SW5zcGVjdG9yVGVzdC5jb21wbGV0ZVRlc3QoKTsKIH0K
</data>
<flag name="review"
          id="286970"
          type_id="1"
          status="+"
          setter="joepeck"
    />
          </attachment>
      

    </bug>

</bugzilla>