<?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>41845</bug_id>
          
          <creation_ts>2010-07-08 03:05:30 -0700</creation_ts>
          <short_desc>refactor identifier parsing in lexer</short_desc>
          <delta_ts>2010-08-06 04:08:06 -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>JavaScriptCore</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Zoltan Herczeg">zherczeg</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>eric</cc>
    
    <cc>oliver</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>248119</commentid>
    <comment_count>0</comment_count>
    <who name="Zoltan Herczeg">zherczeg</who>
    <bug_when>2010-07-08 03:05:30 -0700</bug_when>
    <thetext>SS --parse-only: no change

TEST                           COMPARISON            FROM                 TO             DETAILS

=============================================================================

** TOTAL **:                   ??                31.3ms +/- 1.9%   31.4ms +/- 1.6%     not conclusive: might be *1.003x as slow*

=============================================================================

  jquery:                      -                  5.0ms +/- 0.0%    5.0ms +/- 0.0%
    1.3.2:                     -                  5.0ms +/- 0.0%    5.0ms +/- 0.0%

  mootools:                    -                  5.0ms +/- 0.0%    5.0ms +/- 0.0%
    1.2.2-core-nc:             -                  5.0ms +/- 0.0%    5.0ms +/- 0.0%

  prototype:                   ??                 5.8ms +/- 5.2%    5.9ms +/- 3.8%     not conclusive: might be *1.017x as slow*
    1.6.0.3:                   ??                 5.8ms +/- 5.2%    5.9ms +/- 3.8%     not conclusive: might be *1.017x as slow*

  concat:                      -                 15.5ms +/- 2.4%   15.5ms +/- 2.4%
    jquery-mootools-prototype: -                 15.5ms +/- 2.4%   15.5ms +/- 2.4%

SS: no change as well</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>248123</commentid>
    <comment_count>1</comment_count>
      <attachid>60862</attachid>
    <who name="Zoltan Herczeg">zherczeg</who>
    <bug_when>2010-07-08 03:19:54 -0700</bug_when>
    <thetext>Created attachment 60862
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>249478</commentid>
    <comment_count>2</comment_count>
    <who name="Zoltan Herczeg">zherczeg</who>
    <bug_when>2010-07-09 23:39:35 -0700</bug_when>
    <thetext>remove the r? from the patch until conflicts are resolved.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>249762</commentid>
    <comment_count>3</comment_count>
      <attachid>61209</attachid>
    <who name="Zoltan Herczeg">zherczeg</who>
    <bug_when>2010-07-12 04:58:34 -0700</bug_when>
    <thetext>Created attachment 61209
updated patch

Although there is nothing new in the patch compared to the previous one (except the merge), it causes 8% slowdown on --parse-only now. Not worth to set r?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>250458</commentid>
    <comment_count>4</comment_count>
      <attachid>61361</attachid>
    <who name="Zoltan Herczeg">zherczeg</who>
    <bug_when>2010-07-13 05:55:55 -0700</bug_when>
    <thetext>Created attachment 61361
style patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>250613</commentid>
    <comment_count>5</comment_count>
      <attachid>61361</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-07-13 10:41:31 -0700</bug_when>
    <thetext>Comment on attachment 61361
style patch

Looks good.

&gt; +    // The first free types are fixed, and also used for
&gt; +    // identifying ascii alpha and alphanumeric characters

I think you mean the first *three* types. This comment should have a period, and ASCII should be in all capitals.

&gt;  // 128 ascii codes

ASCII.

&gt; -static unsigned short AsciiCharacters[128] = {
&gt; +static unsigned short asciiCharacters[128] = {

Can this be static const?

The name of this array is not great. It&apos;s called asciiCharacters, but it&apos;s not an array of ASCII characters. It&apos;s actually an array of the character type of each ASCII character. So its name should be asciiCharacterTypes or typesOfASCIICharacters or something like that.

Also, the CharacterTypes enum has a strange name. A value of this enum type is a single character type, so the type name should be CharacterType. Just as &quot;int&quot; is not named &quot;ints&quot;.

&gt;  static inline bool isIdentStart(int c)
&gt;  {
&gt; -    return isASCII(c) ? isASCIIAlpha(c) || c == &apos;$&apos; || c == &apos;_&apos; : isNonASCIIIdentStart(c);
&gt; +    return isASCII(c) ? asciiCharacters[c] == CharacterAlpha : isNonASCIIIdentStart(c);
&gt;  }

CharacterAlpha seems like the wrong name for something that includes &quot;$&quot; and &quot;_&quot;. Is this a term from the ECMAScript specification? If not, then I suggest that we don&apos;t call this CharacterAlpha, and instead call it CharacterIdentifierStart or something along those lines.

&gt;  static inline bool isIdentPart(int c)
&gt;  {
&gt; -    return isASCII(c) ? isASCIIAlphanumeric(c) || c == &apos;$&apos; || c == &apos;_&apos; : isNonASCIIIdentPart(c);
&gt; +    return isASCII(c) ? asciiCharacters[c] &lt;= CharacterNumber : isNonASCIIIdentPart(c);
&gt;  }

Needs a comment to explain why &quot;&lt;=&quot; is correct here.

&gt; +    // temporary contains an ascii representation of the code
&gt; +    // helps to avoid code duplication

It&apos;s not clear to me what &quot;temporary&quot; is. Maybe you mean the local variable named &quot;asciiCharacter&quot;. Comment should be sentence style. &quot;ascii&quot; should be &quot;ASCII&quot;.

I don&apos;t think this comment says anything more clearly than the code. Saying &quot;avoid code duplication&quot; is too vague to add much clarity. I suggest omitting this comment entirely.

&gt; +        if (isNonASCIIIdentStart(m_current))
&gt; +            asciiCharacter = &apos;a&apos;;

This code, however, does need a comment. The comment needs to say why it&apos;s OK to set the local variable to the letter &quot;a&quot;. Comments are most valuable when they explain &quot;why&quot; rather than &quot;what&quot; -- the code itself makes it clear &quot;what&quot;. In this case, we set asciiCharacter to any legal identifier starting character so we can get the right result from the code below, but the actual character is not used for anything else.

I don&apos;t think the code needs to work this confusing way. Instead the local variable could just be a CharacterTypes value.

    CharacterType type;
    if (LIKELY(isASCII(m_current))
        type = typesOfASCIICharacters[m_current];
    else {
        if (isNonASCIIIdentStart(m_current))
            type = CharacterIdentifierStart;
        else
            type = CharacterLineTerminator;
    }
    switch (type) {


That code seems clear enough that you don&apos;t even need comments for it, and no less efficient than the code we have in the patch.

Can you separate the indentation change of the giant switch statement from the rest of the patch somehow? The diff is hard to read because of that.

I&apos;m going to say review- because I think this change is unnecessarily oblique and it&apos;s easy to make it better. You could also consider some of my naming suggestions to make the code easier to understand.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>250624</commentid>
    <comment_count>6</comment_count>
    <who name="Zoltan Herczeg">zherczeg</who>
    <bug_when>2010-07-13 10:57:56 -0700</bug_when>
    <thetext>I like your comments. Really makes things better.

&gt; Can you separate the indentation change of the giant switch statement from the rest of the patch somehow? The diff is hard to read because of that.

You mean create a patch, which change only the indentation, and explain in the ChangeLog that the followup patch will use this indentation change?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>251009</commentid>
    <comment_count>7</comment_count>
      <attachid>61478</attachid>
    <who name="Zoltan Herczeg">zherczeg</who>
    <bug_when>2010-07-14 00:44:56 -0700</bug_when>
    <thetext>Created attachment 61478
indentation patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>251057</commentid>
    <comment_count>8</comment_count>
      <attachid>61492</attachid>
    <who name="Zoltan Herczeg">zherczeg</who>
    <bug_when>2010-07-14 02:22:01 -0700</bug_when>
    <thetext>Created attachment 61492
the second part</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>251191</commentid>
    <comment_count>9</comment_count>
      <attachid>61492</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-07-14 08:06:16 -0700</bug_when>
    <thetext>Comment on attachment 61492
the second part

&gt; +        (JSC::):

You should delete tis line in the ChangeLog, created because of a bug in the prepare-ChangeLog script.

&gt; +    // Character types are divided into two groups depending they can be part of an identifier or not.
&gt; +    // Those, whose type value is less or equal than CharacterNumber, can be part of an identifier.
&gt; +    // (see the CharacterType defintion for more details)

A few small mistakes here. One is &quot;depending they&quot;, which should be &quot;depending on whether they&quot;. The two commas are not needed or helpful in the second sentence. The sentence in parentheses should have a capital letter and a period.

Patch otherwise looks good.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>251196</commentid>
    <comment_count>10</comment_count>
      <attachid>61478</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-07-14 08:21:14 -0700</bug_when>
    <thetext>Comment on attachment 61478
indentation patch

Clearing flags on attachment: 61478

Committed r63322: &lt;http://trac.webkit.org/changeset/63322&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>251197</commentid>
    <comment_count>11</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-07-14 08:21:19 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>251745</commentid>
    <comment_count>12</comment_count>
      <attachid>61619</attachid>
    <who name="Zoltan Herczeg">zherczeg</who>
    <bug_when>2010-07-15 02:17:18 -0700</bug_when>
    <thetext>Created attachment 61619
the second part again</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>251838</commentid>
    <comment_count>13</comment_count>
      <attachid>61619</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-07-15 06:34:34 -0700</bug_when>
    <thetext>Comment on attachment 61619
the second part again

JavaScriptCore/parser/Lexer.cpp:353
 +      // part of an identifier. (See the CharacterType defintion for more details.)
Typo here: &quot;defintion&quot;.

JavaScriptCore/parser/Lexer.cpp:465
 +          if (UNLIKELY(((static_cast&lt;unsigned&gt;(m_current) - 0xE) &amp; 0x2000))) {
The tricky expression here should be inside a named inline function to document what it does. Even if we don&apos;t want to do that, at the very least it needs a comment because its non-obvious. That’s not new in this patch, though.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>251864</commentid>
    <comment_count>14</comment_count>
    <who name="Zoltan Herczeg">zherczeg</who>
    <bug_when>2010-07-15 07:24:06 -0700</bug_when>
    <thetext>&quot;the second part again&quot; Landed in http://trac.webkit.org/changeset/63423

The work is still not finished.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>260569</commentid>
    <comment_count>15</comment_count>
      <attachid>63582</attachid>
    <who name="Zoltan Herczeg">zherczeg</who>
    <bug_when>2010-08-05 06:28:53 -0700</bug_when>
    <thetext>Created attachment 63582
identifier parsing patch

This patch reaches the speed of the old code with gotos.

SunSpider --parse-only:
TEST                           COMPARISON            FROM                 TO             DETAILS

=============================================================================

** TOTAL **:                   -                 34.0ms +/- 2.2%   33.6ms +/- 1.5%

=============================================================================

  jquery:                      -                  5.2ms +/- 5.8%    5.1ms +/- 4.4%
    1.3.2:                     -                  5.2ms +/- 5.8%    5.1ms +/- 4.4%

  mootools:                    -                  5.7ms +/- 6.1%    5.4ms +/- 6.8%
    1.2.2-core-nc:             -                  5.7ms +/- 6.1%    5.4ms +/- 6.8%

  prototype:                   -                  6.5ms +/- 5.8%    6.4ms +/- 5.8%
    1.6.0.3:                   -                  6.5ms +/- 5.8%    6.4ms +/- 5.8%

  concat:                      ??                16.6ms +/- 2.2%   16.7ms +/- 2.1%     not conclusive: might be *1.006x as slow*
    jquery-mootools-prototype: ??                16.6ms +/- 2.2%   16.7ms +/- 2.1%     not conclusive: might be *1.006x as slow*

Normal SunSpider reports no change.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>260575</commentid>
    <comment_count>16</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-08-05 06:42:36 -0700</bug_when>
    <thetext>Attachment 63582 did not build on mac:
Build output: http://queues.webkit.org/results/3559933</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>260577</commentid>
    <comment_count>17</comment_count>
      <attachid>63583</attachid>
    <who name="Zoltan Herczeg">zherczeg</who>
    <bug_when>2010-08-05 06:52:13 -0700</bug_when>
    <thetext>Created attachment 63583
 identifier parsing patch (v2)

removed the unused variable</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>260621</commentid>
    <comment_count>18</comment_count>
      <attachid>63583</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-08-05 08:21:48 -0700</bug_when>
    <thetext>Comment on attachment 63583
 identifier parsing patch (v2)

Thanks. This looks good.

&gt; +ALWAYS_INLINE JSTokenType Lexer::parseIdent(JSTokenData* lvalp, LexType lexType)

Since this is identifier parsing, how about naming it parseIdentifier? I know the file sometimes does abbreviate to &quot;ident&quot;, but I find the full word easier to read as I almost always do in code in general.

&gt; +    while (true) {
&gt; +        if (LIKELY(isIdentPart(m_current)))
&gt; +            shift();
&gt; +        else if (LIKELY(m_current != &apos;\\&apos;))
&gt; +            break;
&gt; +        else {
&gt; +            // \uXXXX unicode characters
&gt; +            bufferRequired = true;
&gt; +            if (identifierStart != currentCharacter())
&gt; +                m_buffer16.append(identifierStart, currentCharacter() - identifierStart);
&gt; +            shift();
&gt; +            if (UNLIKELY(m_current != &apos;u&apos;))
&gt; +                return ERRORTOK;
&gt; +            shift();
&gt; +            int character = getUnicodeCharacter();
&gt; +            if (UNLIKELY(character == -1))
&gt; +                return ERRORTOK;
&gt; +            if (UNLIKELY(m_buffer16.size() ? !isIdentPart(character) : !isIdentStart(character)))
&gt; +                return ERRORTOK;
&gt; +            record16(character);
&gt; +            identifierStart = currentCharacter();
&gt; +        }
&gt; +    }

I prefer the &quot;early return&quot; style, so if it gives you the same efficiency I&apos;d like this to be written as follows:

    if (LIKELY(isIdentPart(m_current))) {
        shift();
        continue;
    }
    if (LIKELY(m_current != &apos;\\&apos;))
        break;
    ...

With the rest of the loop body not indented.

&gt; +        // keywords are not checked if there was an \uXXXX in the identifier

This is a confusing comment. I think what we mean to say is that keywords must not be recognized in such cases. Saying keywords &quot;are not checked&quot; leaves it ambiguous whether we are describing a bug or a feature.

Also WebKit preferred style is to capitalize comments and end with a period. Especially a comment like this one that is a full sentence.

&gt; +        // Continue to the next case

Would be better to have a period and use the terminology &quot;Fall through&quot; as we do in other similar comments.

&gt; +        ALWAYS_INLINE JSTokenType parseIdent(JSTokenData* lvalp, LexType lexType);

No need for the argument names lvavlp and lexType here. The types of the arguments speak for themselves without argument names and in such cases we omit the argument names in WebKit code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>261179</commentid>
    <comment_count>19</comment_count>
    <who name="Zoltan Herczeg">zherczeg</who>
    <bug_when>2010-08-06 04:07:52 -0700</bug_when>
    <thetext>Did the requested changes and landed in http://trac.webkit.org/changeset/64827

Thank you Darin.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>60862</attachid>
            <date>2010-07-08 03:19:54 -0700</date>
            <delta_ts>2010-07-12 04:58:34 -0700</delta_ts>
            <desc>patch</desc>
            <filename>0001-ident-parsing.patch</filename>
            <type>text/plain</type>
            <size>22788</size>
            <attacher name="Zoltan Herczeg">zherczeg</attacher>
            
              <data encoding="base64">RnJvbSA5NzYwMTAxZDdmOTUwNWRlY2Y4YWEzNzJmZWMwZGUwM2ZkNWRjODQwIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBab2x0YW4gSGVyY3plZyA8emhlcmN6ZWdAaW5mLnUtc3plZ2Vk
Lmh1PgpEYXRlOiBUaHUsIDggSnVsIDIwMTAgMTI6MTc6NDAgKzAyMDAKU3ViamVjdDogW1BBVENI
XSBpZGVudCBwYXJzaW5nCgpTaWduZWQtb2ZmLWJ5OiBab2x0YW4gSGVyY3plZyA8emhlcmN6ZWdA
aW5mLnUtc3plZ2VkLmh1PgotLS0KIEphdmFTY3JpcHRDb3JlL0NoYW5nZUxvZyAgICAgICAgfCAg
IDI0ICsrCiBKYXZhU2NyaXB0Q29yZS9wYXJzZXIvTGV4ZXIuY3BwIHwgIDU3NCArKysrKysrKysr
KysrKysrKysrLS0tLS0tLS0tLS0tLS0tLS0tLS0KIEphdmFTY3JpcHRDb3JlL3BhcnNlci9MZXhl
ci5oICAgfCAgICAyICsKIDMgZmlsZXMgY2hhbmdlZCwgMzA5IGluc2VydGlvbnMoKyksIDI5MSBk
ZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgYi9KYXZh
U2NyaXB0Q29yZS9DaGFuZ2VMb2cKaW5kZXggN2ZjNzc5OS4uODliYTAzOSAxMDA2NDQKLS0tIGEv
SmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCisrKyBiL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDI3IEBACisyMDEwLTA3LTA4ICBab2x0YW4gSGVyY3plZyAgPHpoZXJjemVnQHdl
YmtpdC5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgUmVmYWN0b3JlZCBpZGVudGlmaWVyIHBhcnNpbmcgaW5zaWRlIHRoZSBsZXhlcgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDE4NDUKKworICAgICAg
ICBCb3RoIFN1blNwaWRlciBhbmQgU3VuU3BpZGVyIC0tcGFyc2Utb25seSBiZW5jaG1hcmtzCisg
ICAgICAgIHJlcG9ydHMgbm8gY2hhbmdlcy4gVGhlIHBhdGNoIGNvbnRhaW5zIHNvbWUgb3B0aW1p
emF0aW9ucworICAgICAgICBjb21wYXJlZCB0byB0aGUgb3JpZ2luYWwsIGxpa2UgdXNlcyB0aGUg
YXNjaWlDaGFyYWN0ZXJzCisgICAgICAgIGFycmF5IHRvIGRldGVjdCBjaGFyYWN0ZXJzLiBGdXJ0
aGVybW9yZSB0aGUgbWFpbiBsZXhlciBzd2l0Y2gKKyAgICAgICAgaXMgaW1wcm92ZWQgYSBiaXQg
YnkgcmVtb3ZpbmcgY29kZSBkdXBsaWNhdGlvbnMsIGFuZAorICAgICAgICBtdWx0aSBsaW5lIGNv
bW1lbnQgcGFyc2luZyBpcyBtb3ZlZCB0byBhIGZ1bmN0aW9uLgorCisgICAgICAgICogcGFyc2Vy
L0xleGVyLmNwcDoKKyAgICAgICAgKEpTQzo6KToKKyAgICAgICAgKEpTQzo6aXNJZGVudFN0YXJ0
KToKKyAgICAgICAgKEpTQzo6aXNJZGVudFBhcnQpOgorICAgICAgICAoSlNDOjpMZXhlcjo6cGFy
c2VNdWx0aUxpbmVDb21tZW50KToKKyAgICAgICAgKEpTQzo6TGV4ZXI6OnBhcnNlSWRlbnQpOgor
ICAgICAgICAoSlNDOjpMZXhlcjo6cGFyc2VTdHJpbmcpOgorICAgICAgICAoSlNDOjpMZXhlcjo6
bGV4KToKKyAgICAgICAgKiBwYXJzZXIvTGV4ZXIuaDoKKwogMjAxMC0wNy0wNyAgWm9sdGFuIEhl
cmN6ZWcgIDx6aGVyY3plZ0B3ZWJraXQub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IE9saXZl
ciBIdW50LgpkaWZmIC0tZ2l0IGEvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0xleGVyLmNwcCBiL0ph
dmFTY3JpcHRDb3JlL3BhcnNlci9MZXhlci5jcHAKaW5kZXggOGNkZTVlMS4uN2E1YzI3NiAxMDA2
NDQKLS0tIGEvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0xleGVyLmNwcAorKysgYi9KYXZhU2NyaXB0
Q29yZS9wYXJzZXIvTGV4ZXIuY3BwCkBAIC00NSwxNSArNDUsMTYgQEAgdXNpbmcgbmFtZXNwYWNl
IFVuaWNvZGU7CiAKIG5hbWVzcGFjZSBKU0MgewogCi0KIGVudW0gQ2hhcmFjdGVyVHlwZXMgewog
ICAgIC8vIFR5cGVzIGZvciB0aGUgbWFpbiBzd2l0Y2gKLSAgICBDaGFyYWN0ZXJJbnZhbGlkLAog
Ci0gICAgQ2hhcmFjdGVyQWxwaGEsCi0gICAgQ2hhcmFjdGVyWmVybywKLSAgICBDaGFyYWN0ZXJO
dW1iZXIsCisgICAgLy8gVGhlIGZpcnN0IGZyZWUgdHlwZXMgYXJlIGZpeGVkLCBhbmQgYWxzbyB1
c2VkIGZvcgorICAgIC8vIGlkZW50aWZ5aW5nIGFzY2lpIGFscGhhIGFuZCBhbHBoYW51bWVyaWMg
Y2hhcmFjdGVycworICAgIENoYXJhY3RlckFscGhhID0gMCwKKyAgICBDaGFyYWN0ZXJaZXJvID0g
MSwKKyAgICBDaGFyYWN0ZXJOdW1iZXIgPSAyLAogCisgICAgQ2hhcmFjdGVySW52YWxpZCA9IDMs
CiAgICAgQ2hhcmFjdGVyTGluZVRlcm1pbmF0b3IsCiAgICAgQ2hhcmFjdGVyRXhjbGFtYXRpb25N
YXJrLAogICAgIENoYXJhY3RlclNpbXBsZSwKQEAgLTgxLDcgKzgyLDcgQEAgZW51bSBDaGFyYWN0
ZXJUeXBlcyB7CiB9OwogCiAvLyAxMjggYXNjaWkgY29kZXMKLXN0YXRpYyB1bnNpZ25lZCBjaGFy
IEFzY2lpQ2hhcmFjdGVyc1sxMjhdID0geworc3RhdGljIHVuc2lnbmVkIGNoYXIgYXNjaWlDaGFy
YWN0ZXJzWzEyOF0gPSB7CiAvKiAgIDAgLSBOdWxsICAgICAgICAgICAgICAgKi8gQ2hhcmFjdGVy
SW52YWxpZCwKIC8qICAgMSAtIFN0YXJ0IG9mIEhlYWRpbmcgICAqLyBDaGFyYWN0ZXJJbnZhbGlk
LAogLyogICAyIC0gU3RhcnQgb2YgVGV4dCAgICAgICovIENoYXJhY3RlckludmFsaWQsCkBAIC0z
MjgsNyArMzI5LDcgQEAgc3RhdGljIE5FVkVSX0lOTElORSBib29sIGlzTm9uQVNDSUlJZGVudFN0
YXJ0KGludCBjKQogCiBzdGF0aWMgaW5saW5lIGJvb2wgaXNJZGVudFN0YXJ0KGludCBjKQogewot
ICAgIHJldHVybiBpc0FTQ0lJKGMpID8gaXNBU0NJSUFscGhhKGMpIHx8IGMgPT0gJyQnIHx8IGMg
PT0gJ18nIDogaXNOb25BU0NJSUlkZW50U3RhcnQoYyk7CisgICAgcmV0dXJuIGlzQVNDSUkoYykg
PyBhc2NpaUNoYXJhY3RlcnNbY10gPT0gQ2hhcmFjdGVyQWxwaGEgOiBpc05vbkFTQ0lJSWRlbnRT
dGFydChjKTsKIH0KIAogc3RhdGljIE5FVkVSX0lOTElORSBib29sIGlzTm9uQVNDSUlJZGVudFBh
cnQoaW50IGMpCkBAIC0zMzksNyArMzQwLDcgQEAgc3RhdGljIE5FVkVSX0lOTElORSBib29sIGlz
Tm9uQVNDSUlJZGVudFBhcnQoaW50IGMpCiAKIHN0YXRpYyBpbmxpbmUgYm9vbCBpc0lkZW50UGFy
dChpbnQgYykKIHsKLSAgICByZXR1cm4gaXNBU0NJSShjKSA/IGlzQVNDSUlBbHBoYW51bWVyaWMo
YykgfHwgYyA9PSAnJCcgfHwgYyA9PSAnXycgOiBpc05vbkFTQ0lJSWRlbnRQYXJ0KGMpOworICAg
IHJldHVybiBpc0FTQ0lJKGMpID8gYXNjaWlDaGFyYWN0ZXJzW2NdIDw9IENoYXJhY3Rlck51bWJl
ciA6IGlzTm9uQVNDSUlJZGVudFBhcnQoYyk7CiB9CiAKIHN0YXRpYyBpbmxpbmUgaW50IHNpbmds
ZUVzY2FwZShpbnQgYykKQEAgLTM4Nyw2ICszODgsODMgQEAgaW5saW5lIHZvaWQgTGV4ZXI6OnJl
Y29yZDE2KGludCBjKQogICAgIHJlY29yZDE2KFVDaGFyKHN0YXRpY19jYXN0PHVuc2lnbmVkIHNo
b3J0PihjKSkpOwogfQogCitBTFdBWVNfSU5MSU5FIGJvb2wgTGV4ZXI6OnBhcnNlTXVsdGlMaW5l
Q29tbWVudCgpCit7CisgICAgd2hpbGUgKHRydWUpIHsKKyAgICAgICAgaWYgKFVOTElLRUxZKG1f
Y3VycmVudCA9PSAnKicpKSB7CisgICAgICAgICAgICBzaGlmdCgpOworICAgICAgICAgICAgaWYg
KG1fY3VycmVudCA9PSAnLycpCisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBp
ZiAobV9jdXJyZW50ID09ICcqJykKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAg
fQorCisgICAgICAgIGlmIChVTkxJS0VMWShtX2N1cnJlbnQgPT0gLTEpKQorICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOworCisgICAgICAgIGlmIChpc0xpbmVUZXJtaW5hdG9yKG1fY3VycmVudCkp
CisgICAgICAgICAgICBzaGlmdExpbmVUZXJtaW5hdG9yKCk7CisgICAgICAgIGVsc2UKKyAgICAg
ICAgICAgIHNoaWZ0KCk7CisgICAgfQorICAgIHNoaWZ0KCk7CisgICAgbV9hdExpbmVTdGFydCA9
IGZhbHNlOworICAgIHJldHVybiB0cnVlOworfQorCitBTFdBWVNfSU5MSU5FIGludCBMZXhlcjo6
cGFyc2VJZGVudCh2b2lkKiBsdmFscCkKK3sKKyAgICBib29sIGJ1ZmZlclJlcXVpcmVkID0gZmFs
c2U7CisgICAgY29uc3QgVUNoYXIqIGlkZW50aWZpZXJTdGFydCA9IGN1cnJlbnRDaGFyYWN0ZXIo
KTsKKworICAgIHdoaWxlICh0cnVlKSB7CisgICAgICAgIGlmIChpc0lkZW50UGFydChtX2N1cnJl
bnQpKQorICAgICAgICAgICAgc2hpZnQoKTsKKyAgICAgICAgZWxzZSBpZiAobV9jdXJyZW50ICE9
ICdcXCcpCisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAv
LyBcdVhYWFggdW5pY29kZSBjaGFyYWN0ZXJzCisgICAgICAgICAgICBidWZmZXJSZXF1aXJlZCA9
IHRydWU7CisgICAgICAgICAgICBpZiAoaWRlbnRpZmllclN0YXJ0ICE9IGN1cnJlbnRDaGFyYWN0
ZXIoKSkKKyAgICAgICAgICAgICAgICBtX2J1ZmZlcjE2LmFwcGVuZChpZGVudGlmaWVyU3RhcnQs
IGN1cnJlbnRDaGFyYWN0ZXIoKSAtIGlkZW50aWZpZXJTdGFydCk7CisgICAgICAgICAgICBzaGlm
dCgpOworICAgICAgICAgICAgaWYgKFVOTElLRUxZKG1fY3VycmVudCAhPSAndScpKQorICAgICAg
ICAgICAgICAgIHJldHVybiAwOworICAgICAgICAgICAgc2hpZnQoKTsKKyAgICAgICAgICAgIGlu
dCBjaGFyYWN0ZXIgPSBnZXRVbmljb2RlQ2hhcmFjdGVyKCk7CisgICAgICAgICAgICBpZiAoVU5M
SUtFTFkoY2hhcmFjdGVyID09IC0xKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAg
ICAgICAgIGlmIChVTkxJS0VMWShtX2J1ZmZlcjE2LnNpemUoKSA/ICFpc0lkZW50UGFydChjaGFy
YWN0ZXIpIDogIWlzSWRlbnRTdGFydChjaGFyYWN0ZXIpKSkKKyAgICAgICAgICAgICAgICByZXR1
cm4gMDsKKyAgICAgICAgICAgIHJlY29yZDE2KGNoYXJhY3Rlcik7CisgICAgICAgICAgICBpZGVu
dGlmaWVyU3RhcnQgPSBjdXJyZW50Q2hhcmFjdGVyKCk7CisgICAgICAgIH0KKyAgICB9CisKKyAg
ICBpbnQgaWRlbnRpZmllckxlbmd0aDsKKyAgICBpZiAoIWJ1ZmZlclJlcXVpcmVkKQorICAgICAg
ICBpZGVudGlmaWVyTGVuZ3RoID0gY3VycmVudENoYXJhY3RlcigpIC0gaWRlbnRpZmllclN0YXJ0
OworICAgIGVsc2UgeworICAgICAgICBpZiAoaWRlbnRpZmllclN0YXJ0ICE9IGN1cnJlbnRDaGFy
YWN0ZXIoKSkKKyAgICAgICAgICAgIG1fYnVmZmVyMTYuYXBwZW5kKGlkZW50aWZpZXJTdGFydCwg
Y3VycmVudENoYXJhY3RlcigpIC0gaWRlbnRpZmllclN0YXJ0KTsKKyAgICAgICAgaWRlbnRpZmll
clN0YXJ0ID0gbV9idWZmZXIxNi5kYXRhKCk7CisgICAgICAgIGlkZW50aWZpZXJMZW5ndGggPSBt
X2J1ZmZlcjE2LnNpemUoKTsKKyAgICB9CisKKyAgICBjb25zdCBJZGVudGlmaWVyKiBpZGVudCA9
IG1ha2VJZGVudGlmaWVyKGlkZW50aWZpZXJTdGFydCwgaWRlbnRpZmllckxlbmd0aCk7CisgICAg
cmVpbnRlcnByZXRfY2FzdDxZWVNUWVBFKj4obHZhbHApLT5pZGVudCA9IGlkZW50OworICAgIG1f
ZGVsaW1pdGVkID0gZmFsc2U7CisKKyAgICBpZiAoIWJ1ZmZlclJlcXVpcmVkKSB7CisgICAgICAg
IC8vIGtleXdvcmRzIGFyZSBub3QgY2hlY2tlZCBpZiB0aGVyZSB3YXMgYW4gXHVYWFhYIGluIHRo
ZSBpZGVudGlmaWVyCisgICAgICAgIGNvbnN0IEhhc2hFbnRyeSogZW50cnkgPSBtX2tleXdvcmRU
YWJsZS5lbnRyeShtX2dsb2JhbERhdGEsICppZGVudCk7CisgICAgICAgIHJldHVybiBlbnRyeSA/
IGVudHJ5LT5sZXhlclZhbHVlKCkgOiBzdGF0aWNfY2FzdDxpbnQ+KElERU5UKTsKKyAgICB9CisK
KyAgICBtX2J1ZmZlcjE2LnJlc2l6ZSgwKTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8aW50PihJ
REVOVCk7Cit9CisKIEFMV0FZU19JTkxJTkUgYm9vbCBMZXhlcjo6cGFyc2VTdHJpbmcodm9pZCog
bHZhbHApCiB7CiAgICAgaW50IHN0cmluZ1F1b3RlQ2hhcmFjdGVyID0gbV9jdXJyZW50OwpAQCAt
NDQ5LDcgKzUyNyw4IEBAIEFMV0FZU19JTkxJTkUgYm9vbCBMZXhlcjo6cGFyc2VTdHJpbmcodm9p
ZCogbHZhbHApCiAKICAgICAgICAgICAgIHN0cmluZ1N0YXJ0ID0gY3VycmVudENoYXJhY3Rlcigp
OwogICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIH0gZWxzZSBpZiAoVU5MSUtFTFkoKChz
dGF0aWNfY2FzdDx1bnNpZ25lZD4obV9jdXJyZW50KSAtIDB4RSkgJiAweDIwMDApKSkgeworICAg
ICAgICB9CisgICAgICAgIGlmIChVTkxJS0VMWSgoKHN0YXRpY19jYXN0PHVuc2lnbmVkPihtX2N1
cnJlbnQpIC0gMHhFKSAmIDB4MjAwMCkpKSB7CiAgICAgICAgICAgICAvLyBOZXctbGluZSBvciBl
bmQgb2YgaW5wdXQgaXMgbm90IGFsbG93ZWQKICAgICAgICAgICAgIGlmIChVTkxJS0VMWShpc0xp
bmVUZXJtaW5hdG9yKG1fY3VycmVudCkpIHx8IFVOTElLRUxZKG1fY3VycmVudCA9PSAtMSkpCiAg
ICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtNDkyLDMxOSArNTcxLDI3MiBAQCBzdGFy
dDoKIAogICAgIG1fZGVsaW1pdGVkID0gZmFsc2U7CiAKLSAgICBpZiAoaXNBU0NJSShtX2N1cnJl
bnQpKSB7Ci0gICAgICAgIEFTU0VSVChtX2N1cnJlbnQgPj0gMCAmJiBtX2N1cnJlbnQgPCAxMjgp
OworICAgIC8vIHRlbXBvcmFyeSBjb250YWlucyBhbiBhc2NpaSByZXByZXNlbnRhdGlvbiBvZiB0
aGUgY29kZQorICAgIC8vIGhlbHBzIHRvIGF2b2lkIGNvZGUgZHVwbGljYXRpb24KKyAgICBpbnQg
YXNjaWlDaGFyYWN0ZXI7CisgICAgaWYgKGlzQVNDSUkobV9jdXJyZW50KSkKKyAgICAgICAgYXNj
aWlDaGFyYWN0ZXIgPSBtX2N1cnJlbnQ7CisgICAgZWxzZSB7CisgICAgICAgIGlmIChpc05vbkFT
Q0lJSWRlbnRTdGFydChtX2N1cnJlbnQpKQorICAgICAgICAgICAgYXNjaWlDaGFyYWN0ZXIgPSAn
YSc7CisgICAgICAgIGVsc2UgaWYgKGlzTGluZVRlcm1pbmF0b3IobV9jdXJyZW50KSkKKyAgICAg
ICAgICAgIGFzY2lpQ2hhcmFjdGVyID0gJ1xuJzsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAg
Z290byByZXR1cm5FcnJvcjsKKyAgICB9CiAKLSAgICAgICAgc3dpdGNoIChBc2NpaUNoYXJhY3Rl
cnNbbV9jdXJyZW50XSkgewotICAgICAgICBjYXNlIENoYXJhY3RlckdyZWF0ZXI6CisgICAgc3dp
dGNoIChhc2NpaUNoYXJhY3RlcnNbYXNjaWlDaGFyYWN0ZXJdKSB7CisgICAgY2FzZSBDaGFyYWN0
ZXJHcmVhdGVyOgorICAgICAgICBzaGlmdCgpOworICAgICAgICBpZiAobV9jdXJyZW50ID09ICc+
JykgewogICAgICAgICAgICAgc2hpZnQoKTsKICAgICAgICAgICAgIGlmIChtX2N1cnJlbnQgPT0g
Jz4nKSB7CiAgICAgICAgICAgICAgICAgc2hpZnQoKTsKLSAgICAgICAgICAgICAgICBpZiAobV9j
dXJyZW50ID09ICc+JykgewotICAgICAgICAgICAgICAgICAgICBzaGlmdCgpOwotICAgICAgICAg
ICAgICAgICAgICBpZiAobV9jdXJyZW50ID09ICc9JykgewotICAgICAgICAgICAgICAgICAgICAg
ICAgc2hpZnQoKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHRva2VuID0gVVJTSElGVEVRVUFM
OwotICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgIH0K
LSAgICAgICAgICAgICAgICAgICAgdG9rZW4gPSBVUlNISUZUOwotICAgICAgICAgICAgICAgICAg
ICBicmVhazsKLSAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgaWYgKG1fY3VycmVu
dCA9PSAnPScpIHsKICAgICAgICAgICAgICAgICAgICAgc2hpZnQoKTsKLSAgICAgICAgICAgICAg
ICAgICAgdG9rZW4gPSBSU0hJRlRFUVVBTDsKKyAgICAgICAgICAgICAgICAgICAgdG9rZW4gPSBV
UlNISUZURVFVQUw7CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAg
IH0KLSAgICAgICAgICAgICAgICB0b2tlbiA9IFJTSElGVDsKKyAgICAgICAgICAgICAgICB0b2tl
biA9IFVSU0hJRlQ7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICBpZiAobV9jdXJyZW50ID09ICc9JykgewogICAgICAgICAgICAgICAgIHNoaWZ0KCk7
Ci0gICAgICAgICAgICAgICAgdG9rZW4gPSBHRTsKKyAgICAgICAgICAgICAgICB0b2tlbiA9IFJT
SElGVEVRVUFMOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQotICAgICAg
ICAgICAgdG9rZW4gPSAnPic7CisgICAgICAgICAgICB0b2tlbiA9IFJTSElGVDsKICAgICAgICAg
ICAgIGJyZWFrOwotICAgICAgICBjYXNlIENoYXJhY3RlckVxdWFsOgorICAgICAgICB9CisgICAg
ICAgIGlmIChtX2N1cnJlbnQgPT0gJz0nKSB7CiAgICAgICAgICAgICBzaGlmdCgpOwotICAgICAg
ICAgICAgaWYgKG1fY3VycmVudCA9PSAnPScpIHsKLSAgICAgICAgICAgICAgICBzaGlmdCgpOwot
ICAgICAgICAgICAgICAgIGlmIChtX2N1cnJlbnQgPT0gJz0nKSB7Ci0gICAgICAgICAgICAgICAg
ICAgIHNoaWZ0KCk7Ci0gICAgICAgICAgICAgICAgICAgIHRva2VuID0gU1RSRVE7Ci0gICAgICAg
ICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB0
b2tlbiA9IEVRRVE7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9Ci0gICAg
ICAgICAgICB0b2tlbiA9ICc9JzsKKyAgICAgICAgICAgIHRva2VuID0gR0U7CiAgICAgICAgICAg
ICBicmVhazsKLSAgICAgICAgY2FzZSBDaGFyYWN0ZXJMZXNzOgorICAgICAgICB9CisgICAgICAg
IHRva2VuID0gJz4nOworICAgICAgICBicmVhazsKKyAgICBjYXNlIENoYXJhY3RlckVxdWFsOgor
ICAgICAgICBzaGlmdCgpOworICAgICAgICBpZiAobV9jdXJyZW50ID09ICc9JykgewogICAgICAg
ICAgICAgc2hpZnQoKTsKLSAgICAgICAgICAgIGlmIChtX2N1cnJlbnQgPT0gJyEnICYmIHBlZWso
MSkgPT0gJy0nICYmIHBlZWsoMikgPT0gJy0nKSB7Ci0gICAgICAgICAgICAgICAgLy8gPCEtLSBt
YXJrcyB0aGUgYmVnaW5uaW5nIG9mIGEgbGluZSBjb21tZW50IChmb3Igd3d3IHVzYWdlKQotICAg
ICAgICAgICAgICAgIGdvdG8gaW5TaW5nbGVMaW5lQ29tbWVudDsKLSAgICAgICAgICAgIH0KLSAg
ICAgICAgICAgIGlmIChtX2N1cnJlbnQgPT0gJzwnKSB7Ci0gICAgICAgICAgICAgICAgc2hpZnQo
KTsKLSAgICAgICAgICAgICAgICBpZiAobV9jdXJyZW50ID09ICc9JykgewotICAgICAgICAgICAg
ICAgICAgICBzaGlmdCgpOwotICAgICAgICAgICAgICAgICAgICB0b2tlbiA9IExTSElGVEVRVUFM
OwotICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAg
ICAgICAgICAgdG9rZW4gPSBMU0hJRlQ7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAg
ICAgICB9CiAgICAgICAgICAgICBpZiAobV9jdXJyZW50ID09ICc9JykgewogICAgICAgICAgICAg
ICAgIHNoaWZ0KCk7Ci0gICAgICAgICAgICAgICAgdG9rZW4gPSBMRTsKKyAgICAgICAgICAgICAg
ICB0b2tlbiA9IFNUUkVROwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQot
ICAgICAgICAgICAgdG9rZW4gPSAnPCc7CisgICAgICAgICAgICB0b2tlbiA9IEVRRVE7CiAgICAg
ICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBDaGFyYWN0ZXJFeGNsYW1hdGlvbk1hcms6Cisg
ICAgICAgIH0KKyAgICAgICAgdG9rZW4gPSAnPSc7CisgICAgICAgIGJyZWFrOworICAgIGNhc2Ug
Q2hhcmFjdGVyTGVzczoKKyAgICAgICAgc2hpZnQoKTsKKyAgICAgICAgaWYgKG1fY3VycmVudCA9
PSAnIScgJiYgcGVlaygxKSA9PSAnLScgJiYgcGVlaygyKSA9PSAnLScpIHsKKyAgICAgICAgICAg
IC8vIDwhLS0gbWFya3MgdGhlIGJlZ2lubmluZyBvZiBhIGxpbmUgY29tbWVudCAoZm9yIHd3dyB1
c2FnZSkKKyAgICAgICAgICAgIGdvdG8gaW5TaW5nbGVMaW5lQ29tbWVudDsKKyAgICAgICAgfQor
ICAgICAgICBpZiAobV9jdXJyZW50ID09ICc8JykgewogICAgICAgICAgICAgc2hpZnQoKTsKICAg
ICAgICAgICAgIGlmIChtX2N1cnJlbnQgPT0gJz0nKSB7CiAgICAgICAgICAgICAgICAgc2hpZnQo
KTsKLSAgICAgICAgICAgICAgICBpZiAobV9jdXJyZW50ID09ICc9JykgewotICAgICAgICAgICAg
ICAgICAgICBzaGlmdCgpOwotICAgICAgICAgICAgICAgICAgICB0b2tlbiA9IFNUUk5FUTsKLSAg
ICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAg
ICAgIHRva2VuID0gTkU7CisgICAgICAgICAgICAgICAgdG9rZW4gPSBMU0hJRlRFUVVBTDsKICAg
ICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHRva2VuID0g
JyEnOworICAgICAgICAgICAgdG9rZW4gPSBMU0hJRlQ7CiAgICAgICAgICAgICBicmVhazsKLSAg
ICAgICAgY2FzZSBDaGFyYWN0ZXJBZGQ6CisgICAgICAgIH0KKyAgICAgICAgaWYgKG1fY3VycmVu
dCA9PSAnPScpIHsKICAgICAgICAgICAgIHNoaWZ0KCk7Ci0gICAgICAgICAgICBpZiAobV9jdXJy
ZW50ID09ICcrJykgewotICAgICAgICAgICAgICAgIHNoaWZ0KCk7Ci0gICAgICAgICAgICAgICAg
dG9rZW4gPSAoIW1fdGVybWluYXRvcikgPyBQTFVTUExVUyA6IEFVVE9QTFVTUExVUzsKLSAgICAg
ICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmIChtX2N1cnJl
bnQgPT0gJz0nKSB7Ci0gICAgICAgICAgICAgICAgc2hpZnQoKTsKLSAgICAgICAgICAgICAgICB0
b2tlbiA9IFBMVVNFUVVBTDsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIH0K
LSAgICAgICAgICAgIHRva2VuID0gJysnOworICAgICAgICAgICAgdG9rZW4gPSBMRTsKICAgICAg
ICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIENoYXJhY3RlclN1YjoKKyAgICAgICAgfQorICAg
ICAgICB0b2tlbiA9ICc8JzsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBDaGFyYWN0ZXJFeGNs
YW1hdGlvbk1hcms6CisgICAgICAgIHNoaWZ0KCk7CisgICAgICAgIGlmIChtX2N1cnJlbnQgPT0g
Jz0nKSB7CiAgICAgICAgICAgICBzaGlmdCgpOwotICAgICAgICAgICAgaWYgKG1fY3VycmVudCA9
PSAnLScpIHsKLSAgICAgICAgICAgICAgICBzaGlmdCgpOwotICAgICAgICAgICAgICAgIGlmICht
X2F0TGluZVN0YXJ0ICYmIG1fY3VycmVudCA9PSAnPicpIHsKLSAgICAgICAgICAgICAgICAgICAg
c2hpZnQoKTsKLSAgICAgICAgICAgICAgICAgICAgZ290byBpblNpbmdsZUxpbmVDb21tZW50Owot
ICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB0b2tlbiA9ICghbV90ZXJtaW5hdG9y
KSA/IE1JTlVTTUlOVVMgOiBBVVRPTUlOVVNNSU5VUzsKLSAgICAgICAgICAgICAgICBicmVhazsK
LSAgICAgICAgICAgIH0KICAgICAgICAgICAgIGlmIChtX2N1cnJlbnQgPT0gJz0nKSB7CiAgICAg
ICAgICAgICAgICAgc2hpZnQoKTsKLSAgICAgICAgICAgICAgICB0b2tlbiA9IE1JTlVTRVFVQUw7
CisgICAgICAgICAgICAgICAgdG9rZW4gPSBTVFJORVE7CiAgICAgICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB0b2tlbiA9ICctJzsKKyAgICAgICAgICAgIHRv
a2VuID0gTkU7CiAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBDaGFyYWN0ZXJNdWx0
aXBseToKKyAgICAgICAgfQorICAgICAgICB0b2tlbiA9ICchJzsKKyAgICAgICAgYnJlYWs7Cisg
ICAgY2FzZSBDaGFyYWN0ZXJBZGQ6CisgICAgICAgIHNoaWZ0KCk7CisgICAgICAgIGlmIChtX2N1
cnJlbnQgPT0gJysnKSB7CiAgICAgICAgICAgICBzaGlmdCgpOwotICAgICAgICAgICAgaWYgKG1f
Y3VycmVudCA9PSAnPScpIHsKLSAgICAgICAgICAgICAgICBzaGlmdCgpOwotICAgICAgICAgICAg
ICAgIHRva2VuID0gTVVMVEVRVUFMOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAg
ICAgfQotICAgICAgICAgICAgdG9rZW4gPSAnKic7CisgICAgICAgICAgICB0b2tlbiA9ICghbV90
ZXJtaW5hdG9yKSA/IFBMVVNQTFVTIDogQVVUT1BMVVNQTFVTOwogICAgICAgICAgICAgYnJlYWs7
Ci0gICAgICAgIGNhc2UgQ2hhcmFjdGVyU2xhc2g6CisgICAgICAgIH0KKyAgICAgICAgaWYgKG1f
Y3VycmVudCA9PSAnPScpIHsKICAgICAgICAgICAgIHNoaWZ0KCk7Ci0gICAgICAgICAgICBpZiAo
bV9jdXJyZW50ID09ICcvJykgewotICAgICAgICAgICAgICAgIHNoaWZ0KCk7Ci0gICAgICAgICAg
ICAgICAgZ290byBpblNpbmdsZUxpbmVDb21tZW50OwotICAgICAgICAgICAgfQotICAgICAgICAg
ICAgaWYgKG1fY3VycmVudCA9PSAnKicpIHsKLSAgICAgICAgICAgICAgICBzaGlmdCgpOwotICAg
ICAgICAgICAgICAgIGdvdG8gaW5NdWx0aUxpbmVDb21tZW50OwotICAgICAgICAgICAgfQotICAg
ICAgICAgICAgaWYgKG1fY3VycmVudCA9PSAnPScpIHsKLSAgICAgICAgICAgICAgICBzaGlmdCgp
OwotICAgICAgICAgICAgICAgIHRva2VuID0gRElWRVFVQUw7Ci0gICAgICAgICAgICAgICAgYnJl
YWs7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICB0b2tlbiA9ICcvJzsKKyAgICAgICAgICAg
IHRva2VuID0gUExVU0VRVUFMOwogICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgQ2hh
cmFjdGVyQW5kOgorICAgICAgICB9CisgICAgICAgIHRva2VuID0gJysnOworICAgICAgICBicmVh
azsKKyAgICBjYXNlIENoYXJhY3RlclN1YjoKKyAgICAgICAgc2hpZnQoKTsKKyAgICAgICAgaWYg
KG1fY3VycmVudCA9PSAnLScpIHsKICAgICAgICAgICAgIHNoaWZ0KCk7Ci0gICAgICAgICAgICBp
ZiAobV9jdXJyZW50ID09ICcmJykgewotICAgICAgICAgICAgICAgIHNoaWZ0KCk7Ci0gICAgICAg
ICAgICAgICAgdG9rZW4gPSBBTkQ7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAg
ICB9Ci0gICAgICAgICAgICBpZiAobV9jdXJyZW50ID09ICc9JykgeworICAgICAgICAgICAgaWYg
KG1fYXRMaW5lU3RhcnQgJiYgbV9jdXJyZW50ID09ICc+JykgewogICAgICAgICAgICAgICAgIHNo
aWZ0KCk7Ci0gICAgICAgICAgICAgICAgdG9rZW4gPSBBTkRFUVVBTDsKLSAgICAgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgICAgICAgICBnb3RvIGluU2luZ2xlTGluZUNvbW1lbnQ7CiAgICAg
ICAgICAgICB9Ci0gICAgICAgICAgICB0b2tlbiA9ICcmJzsKKyAgICAgICAgICAgIHRva2VuID0g
KCFtX3Rlcm1pbmF0b3IpID8gTUlOVVNNSU5VUyA6IEFVVE9NSU5VU01JTlVTOwogICAgICAgICAg
ICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgQ2hhcmFjdGVyWG9yOgorICAgICAgICB9CisgICAgICAg
IGlmIChtX2N1cnJlbnQgPT0gJz0nKSB7CiAgICAgICAgICAgICBzaGlmdCgpOwotICAgICAgICAg
ICAgaWYgKG1fY3VycmVudCA9PSAnPScpIHsKLSAgICAgICAgICAgICAgICBzaGlmdCgpOwotICAg
ICAgICAgICAgICAgIHRva2VuID0gWE9SRVFVQUw7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0g
ICAgICAgICAgICB9Ci0gICAgICAgICAgICB0b2tlbiA9ICdeJzsKKyAgICAgICAgICAgIHRva2Vu
ID0gTUlOVVNFUVVBTDsKICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIENoYXJhY3Rl
ck1vZHVsbzoKKyAgICAgICAgfQorICAgICAgICB0b2tlbiA9ICctJzsKKyAgICAgICAgYnJlYWs7
CisgICAgY2FzZSBDaGFyYWN0ZXJNdWx0aXBseToKKyAgICAgICAgc2hpZnQoKTsKKyAgICAgICAg
aWYgKG1fY3VycmVudCA9PSAnPScpIHsKICAgICAgICAgICAgIHNoaWZ0KCk7Ci0gICAgICAgICAg
ICBpZiAobV9jdXJyZW50ID09ICc9JykgewotICAgICAgICAgICAgICAgIHNoaWZ0KCk7Ci0gICAg
ICAgICAgICAgICAgdG9rZW4gPSBNT0RFUVVBTDsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAg
ICAgICAgICAgIH0KLSAgICAgICAgICAgIHRva2VuID0gJyUnOworICAgICAgICAgICAgdG9rZW4g
PSBNVUxURVFVQUw7CiAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBDaGFyYWN0ZXJP
cjoKKyAgICAgICAgfQorICAgICAgICB0b2tlbiA9ICcqJzsKKyAgICAgICAgYnJlYWs7CisgICAg
Y2FzZSBDaGFyYWN0ZXJTbGFzaDoKKyAgICAgICAgc2hpZnQoKTsKKyAgICAgICAgaWYgKG1fY3Vy
cmVudCA9PSAnLycpIHsKICAgICAgICAgICAgIHNoaWZ0KCk7Ci0gICAgICAgICAgICBpZiAobV9j
dXJyZW50ID09ICc9JykgewotICAgICAgICAgICAgICAgIHNoaWZ0KCk7Ci0gICAgICAgICAgICAg
ICAgdG9rZW4gPSBPUkVRVUFMOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAg
fQotICAgICAgICAgICAgaWYgKG1fY3VycmVudCA9PSAnfCcpIHsKLSAgICAgICAgICAgICAgICBz
aGlmdCgpOwotICAgICAgICAgICAgICAgIHRva2VuID0gT1I7Ci0gICAgICAgICAgICAgICAgYnJl
YWs7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICB0b2tlbiA9ICd8JzsKKyAgICAgICAgICAg
IGdvdG8gaW5TaW5nbGVMaW5lQ29tbWVudDsKKyAgICAgICAgfQorICAgICAgICBpZiAobV9jdXJy
ZW50ID09ICcqJykgeworICAgICAgICAgICAgc2hpZnQoKTsKKyAgICAgICAgICAgIGlmIChwYXJz
ZU11bHRpTGluZUNvbW1lbnQoKSkKKyAgICAgICAgICAgICAgICBnb3RvIHN0YXJ0OworICAgICAg
ICAgICAgZ290byByZXR1cm5FcnJvcjsKKyAgICAgICAgfQorICAgICAgICBpZiAobV9jdXJyZW50
ID09ICc9JykgeworICAgICAgICAgICAgc2hpZnQoKTsKKyAgICAgICAgICAgIHRva2VuID0gRElW
RVFVQUw7CiAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBDaGFyYWN0ZXJEb3Q6Cisg
ICAgICAgIH0KKyAgICAgICAgdG9rZW4gPSAnLyc7CisgICAgICAgIGJyZWFrOworICAgIGNhc2Ug
Q2hhcmFjdGVyQW5kOgorICAgICAgICBzaGlmdCgpOworICAgICAgICBpZiAobV9jdXJyZW50ID09
ICcmJykgewogICAgICAgICAgICAgc2hpZnQoKTsKLSAgICAgICAgICAgIGlmIChpc0FTQ0lJRGln
aXQobV9jdXJyZW50KSkgewotICAgICAgICAgICAgICAgIHJlY29yZDgoJy4nKTsKLSAgICAgICAg
ICAgICAgICBnb3RvIGluTnVtYmVyQWZ0ZXJEZWNpbWFsUG9pbnQ7Ci0gICAgICAgICAgICB9Ci0g
ICAgICAgICAgICB0b2tlbiA9ICcuJzsKKyAgICAgICAgICAgIHRva2VuID0gQU5EOwogICAgICAg
ICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgQ2hhcmFjdGVyU2ltcGxlOgotICAgICAgICAgICAg
dG9rZW4gPSBtX2N1cnJlbnQ7CisgICAgICAgIH0KKyAgICAgICAgaWYgKG1fY3VycmVudCA9PSAn
PScpIHsKICAgICAgICAgICAgIHNoaWZ0KCk7CisgICAgICAgICAgICB0b2tlbiA9IEFOREVRVUFM
OwogICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgQ2hhcmFjdGVyU2VtaWNvbG9uOgot
ICAgICAgICAgICAgbV9kZWxpbWl0ZWQgPSB0cnVlOworICAgICAgICB9CisgICAgICAgIHRva2Vu
ID0gJyYnOworICAgICAgICBicmVhazsKKyAgICBjYXNlIENoYXJhY3RlclhvcjoKKyAgICAgICAg
c2hpZnQoKTsKKyAgICAgICAgaWYgKG1fY3VycmVudCA9PSAnPScpIHsKICAgICAgICAgICAgIHNo
aWZ0KCk7Ci0gICAgICAgICAgICB0b2tlbiA9ICc7JzsKKyAgICAgICAgICAgIHRva2VuID0gWE9S
RVFVQUw7CiAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBDaGFyYWN0ZXJPcGVuQnJh
Y2U6Ci0gICAgICAgICAgICBsdmFscC0+aW50VmFsdWUgPSBjdXJyZW50T2Zmc2V0KCk7CisgICAg
ICAgIH0KKyAgICAgICAgdG9rZW4gPSAnXic7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQ2hh
cmFjdGVyTW9kdWxvOgorICAgICAgICBzaGlmdCgpOworICAgICAgICBpZiAobV9jdXJyZW50ID09
ICc9JykgewogICAgICAgICAgICAgc2hpZnQoKTsKLSAgICAgICAgICAgIHRva2VuID0gT1BFTkJS
QUNFOworICAgICAgICAgICAgdG9rZW4gPSBNT0RFUVVBTDsKICAgICAgICAgICAgIGJyZWFrOwot
ICAgICAgICBjYXNlIENoYXJhY3RlckNsb3NlQnJhY2U6Ci0gICAgICAgICAgICBsdmFscC0+aW50
VmFsdWUgPSBjdXJyZW50T2Zmc2V0KCk7Ci0gICAgICAgICAgICBtX2RlbGltaXRlZCA9IHRydWU7
CisgICAgICAgIH0KKyAgICAgICAgdG9rZW4gPSAnJSc7CisgICAgICAgIGJyZWFrOworICAgIGNh
c2UgQ2hhcmFjdGVyT3I6CisgICAgICAgIHNoaWZ0KCk7CisgICAgICAgIGlmIChtX2N1cnJlbnQg
PT0gJz0nKSB7CiAgICAgICAgICAgICBzaGlmdCgpOwotICAgICAgICAgICAgdG9rZW4gPSBDTE9T
RUJSQUNFOworICAgICAgICAgICAgdG9rZW4gPSBPUkVRVUFMOwogICAgICAgICAgICAgYnJlYWs7
Ci0gICAgICAgIGNhc2UgQ2hhcmFjdGVyQmFja1NsYXNoOgotICAgICAgICAgICAgZ290byBzdGFy
dElkZW50aWZpZXJXaXRoQmFja3NsYXNoOwotICAgICAgICBjYXNlIENoYXJhY3Rlclplcm86Ci0g
ICAgICAgICAgICBnb3RvIHN0YXJ0TnVtYmVyV2l0aFplcm9EaWdpdDsKLSAgICAgICAgY2FzZSBD
aGFyYWN0ZXJOdW1iZXI6Ci0gICAgICAgICAgICBnb3RvIHN0YXJ0TnVtYmVyOwotICAgICAgICBj
YXNlIENoYXJhY3RlclF1b3RlOgotICAgICAgICAgICAgaWYgKFVOTElLRUxZKCFwYXJzZVN0cmlu
ZyhsdmFscCkpKQotICAgICAgICAgICAgICAgIGdvdG8gcmV0dXJuRXJyb3I7CisgICAgICAgIH0K
KyAgICAgICAgaWYgKG1fY3VycmVudCA9PSAnfCcpIHsKICAgICAgICAgICAgIHNoaWZ0KCk7Ci0g
ICAgICAgICAgICBtX2RlbGltaXRlZCA9IGZhbHNlOwotICAgICAgICAgICAgdG9rZW4gPSBTVFJJ
Tkc7CisgICAgICAgICAgICB0b2tlbiA9IE9SOwogICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAg
IGNhc2UgQ2hhcmFjdGVyQWxwaGE6Ci0gICAgICAgICAgICBBU1NFUlQoaXNJZGVudFN0YXJ0KG1f
Y3VycmVudCkpOwotICAgICAgICAgICAgZ290byBzdGFydElkZW50aWZpZXJPcktleXdvcmQ7Ci0g
ICAgICAgIGNhc2UgQ2hhcmFjdGVyTGluZVRlcm1pbmF0b3I6Ci0gICAgICAgICAgICBBU1NFUlQo
aXNMaW5lVGVybWluYXRvcihtX2N1cnJlbnQpKTsKLSAgICAgICAgICAgIHNoaWZ0TGluZVRlcm1p
bmF0b3IoKTsKLSAgICAgICAgICAgIG1fYXRMaW5lU3RhcnQgPSB0cnVlOwotICAgICAgICAgICAg
bV90ZXJtaW5hdG9yID0gdHJ1ZTsKLSAgICAgICAgICAgIGlmIChsYXN0VG9rZW5XYXNSZXN0cktl
eXdvcmQoKSkgewotICAgICAgICAgICAgICAgIHRva2VuID0gJzsnOwotICAgICAgICAgICAgICAg
IGdvdG8gZG9uZVNlbWljb2xvbjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGdvdG8gc3Rh
cnQ7Ci0gICAgICAgIGNhc2UgQ2hhcmFjdGVySW52YWxpZDoKLSAgICAgICAgICAgIGdvdG8gcmV0
dXJuRXJyb3I7Ci0gICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKLSAgICAgICAgICAgIGdvdG8gcmV0dXJuRXJyb3I7CiAgICAgICAgIH0KLSAgICB9IGVs
c2UgewotICAgICAgICAvLyBSYXJlIGNoYXJhY3RlcnMKLQotICAgICAgICBpZiAoaXNOb25BU0NJ
SUlkZW50U3RhcnQobV9jdXJyZW50KSkKLSAgICAgICAgICAgIGdvdG8gc3RhcnRJZGVudGlmaWVy
T3JLZXl3b3JkOwotICAgICAgICBpZiAoaXNMaW5lVGVybWluYXRvcihtX2N1cnJlbnQpKSB7Ci0g
ICAgICAgICAgICBzaGlmdExpbmVUZXJtaW5hdG9yKCk7Ci0gICAgICAgICAgICBtX2F0TGluZVN0
YXJ0ID0gdHJ1ZTsKLSAgICAgICAgICAgIG1fdGVybWluYXRvciA9IHRydWU7Ci0gICAgICAgICAg
ICBpZiAobGFzdFRva2VuV2FzUmVzdHJLZXl3b3JkKCkpCi0gICAgICAgICAgICAgICAgZ290byBk
b25lU2VtaWNvbG9uOwotICAgICAgICAgICAgZ290byBzdGFydDsKKyAgICAgICAgdG9rZW4gPSAn
fCc7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQ2hhcmFjdGVyRG90OgorICAgICAgICBzaGlm
dCgpOworICAgICAgICBpZiAoaXNBU0NJSURpZ2l0KG1fY3VycmVudCkpIHsKKyAgICAgICAgICAg
IHJlY29yZDgoJy4nKTsKKyAgICAgICAgICAgIGdvdG8gaW5OdW1iZXJBZnRlckRlY2ltYWxQb2lu
dDsKICAgICAgICAgfQotICAgICAgICBnb3RvIHJldHVybkVycm9yOwotICAgIH0KLQotICAgIG1f
YXRMaW5lU3RhcnQgPSBmYWxzZTsKLSAgICBnb3RvIHJldHVyblRva2VuOwotCi1zdGFydElkZW50
aWZpZXJXaXRoQmFja3NsYXNoOiB7Ci0gICAgc2hpZnQoKTsKLSAgICBpZiAoVU5MSUtFTFkobV9j
dXJyZW50ICE9ICd1JykpCi0gICAgICAgIGdvdG8gcmV0dXJuRXJyb3I7Ci0gICAgc2hpZnQoKTsK
LQotICAgIHRva2VuID0gZ2V0VW5pY29kZUNoYXJhY3RlcigpOwotICAgIGlmIChVTkxJS0VMWSh0
b2tlbiA9PSAtMSkpCi0gICAgICAgIGdvdG8gcmV0dXJuRXJyb3I7Ci0gICAgaWYgKFVOTElLRUxZ
KCFpc0lkZW50U3RhcnQodG9rZW4pKSkKLSAgICAgICAgZ290byByZXR1cm5FcnJvcjsKLSAgICBn
b3RvIGluSWRlbnRpZmllckFmdGVyQ2hhcmFjdGVyQ2hlY2s7Ci19Ci0KLXN0YXJ0SWRlbnRpZmll
ck9yS2V5d29yZDogewotICAgIGNvbnN0IFVDaGFyKiBpZGVudGlmaWVyU3RhcnQgPSBjdXJyZW50
Q2hhcmFjdGVyKCk7Ci0gICAgc2hpZnQoKTsKLSAgICB3aGlsZSAoaXNJZGVudFBhcnQobV9jdXJy
ZW50KSkKKyAgICAgICAgdG9rZW4gPSAnLic7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQ2hh
cmFjdGVyU2ltcGxlOgorICAgICAgICB0b2tlbiA9IG1fY3VycmVudDsKICAgICAgICAgc2hpZnQo
KTsKLSAgICBpZiAoTElLRUxZKG1fY3VycmVudCAhPSAnXFwnKSkgewotICAgICAgICAvLyBGYXN0
IGNhc2UgZm9yIGlkZW50cyB3aGljaCBkb2VzIG5vdCBjb250YWluIFx1Q0NDQyBjaGFyYWN0ZXJz
Ci0gICAgICAgIGx2YWxwLT5pZGVudCA9IG1ha2VJZGVudGlmaWVyKGlkZW50aWZpZXJTdGFydCwg
Y3VycmVudENoYXJhY3RlcigpIC0gaWRlbnRpZmllclN0YXJ0KTsKLSAgICAgICAgZ290byBkb25l
SWRlbnRpZmllck9yS2V5d29yZDsKLSAgICB9Ci0gICAgbV9idWZmZXIxNi5hcHBlbmQoaWRlbnRp
ZmllclN0YXJ0LCBjdXJyZW50Q2hhcmFjdGVyKCkgLSBpZGVudGlmaWVyU3RhcnQpOwotfQotCi0g
ICAgZG8geworICAgICAgICBicmVhazsKKyAgICBjYXNlIENoYXJhY3RlclNlbWljb2xvbjoKKyAg
ICAgICAgbV9kZWxpbWl0ZWQgPSB0cnVlOwogICAgICAgICBzaGlmdCgpOwotICAgICAgICBpZiAo
VU5MSUtFTFkobV9jdXJyZW50ICE9ICd1JykpCi0gICAgICAgICAgICBnb3RvIHJldHVybkVycm9y
OworICAgICAgICB0b2tlbiA9ICc7JzsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBDaGFyYWN0
ZXJPcGVuQnJhY2U6CisgICAgICAgIGx2YWxwLT5pbnRWYWx1ZSA9IGN1cnJlbnRPZmZzZXQoKTsK
ICAgICAgICAgc2hpZnQoKTsKLSAgICAgICAgdG9rZW4gPSBnZXRVbmljb2RlQ2hhcmFjdGVyKCk7
Ci0gICAgICAgIGlmIChVTkxJS0VMWSh0b2tlbiA9PSAtMSkpCisgICAgICAgIHRva2VuID0gT1BF
TkJSQUNFOworICAgICAgICBicmVhazsKKyAgICBjYXNlIENoYXJhY3RlckNsb3NlQnJhY2U6Cisg
ICAgICAgIGx2YWxwLT5pbnRWYWx1ZSA9IGN1cnJlbnRPZmZzZXQoKTsKKyAgICAgICAgbV9kZWxp
bWl0ZWQgPSB0cnVlOworICAgICAgICBzaGlmdCgpOworICAgICAgICB0b2tlbiA9IENMT1NFQlJB
Q0U7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQ2hhcmFjdGVyWmVybzoKKyAgICAgICAgZ290
byBzdGFydE51bWJlcldpdGhaZXJvRGlnaXQ7CisgICAgY2FzZSBDaGFyYWN0ZXJOdW1iZXI6Cisg
ICAgICAgIGdvdG8gc3RhcnROdW1iZXI7CisgICAgY2FzZSBDaGFyYWN0ZXJRdW90ZToKKyAgICAg
ICAgaWYgKFVOTElLRUxZKCFwYXJzZVN0cmluZyhsdmFscCkpKQogICAgICAgICAgICAgZ290byBy
ZXR1cm5FcnJvcjsKLSAgICAgICAgaWYgKFVOTElLRUxZKCFpc0lkZW50UGFydCh0b2tlbikpKQor
ICAgICAgICBzaGlmdCgpOworICAgICAgICBtX2RlbGltaXRlZCA9IGZhbHNlOworICAgICAgICB0
b2tlbiA9IFNUUklORzsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBDaGFyYWN0ZXJCYWNrU2xh
c2g6CisgICAgY2FzZSBDaGFyYWN0ZXJBbHBoYToKKyAgICAgICAgQVNTRVJUKGlzSWRlbnRTdGFy
dChtX2N1cnJlbnQpIHx8IG1fY3VycmVudCA9PSAnXFwnKTsKKyAgICAgICAgdG9rZW4gPSBwYXJz
ZUlkZW50KGx2YWxwKTsKKyAgICAgICAgaWYgKFVOTElLRUxZKCF0b2tlbikpCiAgICAgICAgICAg
ICBnb3RvIHJldHVybkVycm9yOwotaW5JZGVudGlmaWVyQWZ0ZXJDaGFyYWN0ZXJDaGVjazoKLSAg
ICAgICAgcmVjb3JkMTYodG9rZW4pOwotCi0gICAgICAgIHdoaWxlIChpc0lkZW50UGFydChtX2N1
cnJlbnQpKSB7Ci0gICAgICAgICAgICByZWNvcmQxNihtX2N1cnJlbnQpOwotICAgICAgICAgICAg
c2hpZnQoKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBDaGFyYWN0ZXJMaW5lVGVybWluYXRv
cjoKKyAgICAgICAgQVNTRVJUKGlzTGluZVRlcm1pbmF0b3IobV9jdXJyZW50KSk7CisgICAgICAg
IHNoaWZ0TGluZVRlcm1pbmF0b3IoKTsKKyAgICAgICAgbV9hdExpbmVTdGFydCA9IHRydWU7Cisg
ICAgICAgIG1fdGVybWluYXRvciA9IHRydWU7CisgICAgICAgIGlmIChsYXN0VG9rZW5XYXNSZXN0
cktleXdvcmQoKSkgeworICAgICAgICAgICAgdG9rZW4gPSAnOyc7CisgICAgICAgICAgICBnb3Rv
IGRvbmVTZW1pY29sb247CiAgICAgICAgIH0KLSAgICB9IHdoaWxlIChVTkxJS0VMWShtX2N1cnJl
bnQgPT0gJ1xcJykpOwotICAgIGdvdG8gZG9uZUlkZW50aWZpZXI7CisgICAgICAgIGdvdG8gc3Rh
cnQ7CisgICAgY2FzZSBDaGFyYWN0ZXJJbnZhbGlkOgorICAgICAgICBnb3RvIHJldHVybkVycm9y
OworICAgIGRlZmF1bHQ6CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICBn
b3RvIHJldHVybkVycm9yOworICAgIH0KKworICAgIG1fYXRMaW5lU3RhcnQgPSBmYWxzZTsKKyAg
ICBnb3RvIHJldHVyblRva2VuOwogCiBpblNpbmdsZUxpbmVDb21tZW50OgogICAgIHdoaWxlICgh
aXNMaW5lVGVybWluYXRvcihtX2N1cnJlbnQpKSB7CkBAIC04MTksMjggKzg1MSw2IEBAIGluU2lu
Z2xlTGluZUNvbW1lbnQ6CiAgICAgICAgIGdvdG8gZG9uZVNlbWljb2xvbjsKICAgICBnb3RvIHN0
YXJ0OwogCi1pbk11bHRpTGluZUNvbW1lbnQ6Ci0gICAgd2hpbGUgKHRydWUpIHsKLSAgICAgICAg
aWYgKFVOTElLRUxZKG1fY3VycmVudCA9PSAnKicpKSB7Ci0gICAgICAgICAgICBzaGlmdCgpOwot
ICAgICAgICAgICAgaWYgKG1fY3VycmVudCA9PSAnLycpCi0gICAgICAgICAgICAgICAgYnJlYWs7
Ci0gICAgICAgICAgICBpZiAobV9jdXJyZW50ID09ICcqJykKLSAgICAgICAgICAgICAgICBjb250
aW51ZTsKLSAgICAgICAgfQotCi0gICAgICAgIGlmIChVTkxJS0VMWShtX2N1cnJlbnQgPT0gLTEp
KQotICAgICAgICAgICAgZ290byByZXR1cm5FcnJvcjsKLQotICAgICAgICBpZiAoaXNMaW5lVGVy
bWluYXRvcihtX2N1cnJlbnQpKQotICAgICAgICAgICAgc2hpZnRMaW5lVGVybWluYXRvcigpOwot
ICAgICAgICBlbHNlCi0gICAgICAgICAgICBzaGlmdCgpOwotICAgIH0KLSAgICBzaGlmdCgpOwot
ICAgIG1fYXRMaW5lU3RhcnQgPSBmYWxzZTsKLSAgICBnb3RvIHN0YXJ0OwotCiBzdGFydE51bWJl
cldpdGhaZXJvRGlnaXQ6CiAgICAgc2hpZnQoKTsKICAgICBpZiAoKG1fY3VycmVudCB8IDB4MjAp
ID09ICd4JyAmJiBpc0FTQ0lJSGV4RGlnaXQocGVlaygxKSkpIHsKQEAgLTk3OCwyNSArOTg4LDcg
QEAgZG9uZU51bWVyaWM6CiBkb25lU2VtaWNvbG9uOgogICAgIHRva2VuID0gJzsnOwogICAgIG1f
ZGVsaW1pdGVkID0gdHJ1ZTsKLSAgICBnb3RvIHJldHVyblRva2VuOwotCi1kb25lSWRlbnRpZmll
cjoKLSAgICBtX2F0TGluZVN0YXJ0ID0gZmFsc2U7Ci0gICAgbV9kZWxpbWl0ZWQgPSBmYWxzZTsK
LSAgICBsdmFscC0+aWRlbnQgPSBtYWtlSWRlbnRpZmllcihtX2J1ZmZlcjE2LmRhdGEoKSwgbV9i
dWZmZXIxNi5zaXplKCkpOwotICAgIG1fYnVmZmVyMTYucmVzaXplKDApOwotICAgIHRva2VuID0g
SURFTlQ7Ci0gICAgZ290byByZXR1cm5Ub2tlbjsKLQotZG9uZUlkZW50aWZpZXJPcktleXdvcmQ6
IHsKLSAgICBtX2F0TGluZVN0YXJ0ID0gZmFsc2U7Ci0gICAgbV9kZWxpbWl0ZWQgPSBmYWxzZTsK
LSAgICBtX2J1ZmZlcjE2LnJlc2l6ZSgwKTsKLSAgICBjb25zdCBIYXNoRW50cnkqIGVudHJ5ID0g
bV9rZXl3b3JkVGFibGUuZW50cnkobV9nbG9iYWxEYXRhLCAqbHZhbHAtPmlkZW50KTsKLSAgICB0
b2tlbiA9IGVudHJ5ID8gZW50cnktPmxleGVyVmFsdWUoKSA6IHN0YXRpY19jYXN0PGludD4oSURF
TlQpOwotCiAgICAgLy8gRmFsbCB0aHJvdWdoIGludG8gcmV0dXJuVG9rZW4uCi19CiAKIHJldHVy
blRva2VuOiB7CiAgICAgaW50IGxpbmVOdW1iZXIgPSBtX2xpbmVOdW1iZXI7CmRpZmYgLS1naXQg
YS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTGV4ZXIuaCBiL0phdmFTY3JpcHRDb3JlL3BhcnNlci9M
ZXhlci5oCmluZGV4IGU3YWFiYzAuLmNkZGI4MWQgMTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRDb3Jl
L3BhcnNlci9MZXhlci5oCisrKyBiL0phdmFTY3JpcHRDb3JlL3BhcnNlci9MZXhlci5oCkBAIC04
Niw2ICs4Niw4IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAgIEFMV0FZU19JTkxJTkUgYm9v
bCBsYXN0VG9rZW5XYXNSZXN0cktleXdvcmQoKSBjb25zdDsKIAorICAgICAgICBBTFdBWVNfSU5M
SU5FIGJvb2wgcGFyc2VNdWx0aUxpbmVDb21tZW50KCk7CisgICAgICAgIEFMV0FZU19JTkxJTkUg
aW50IHBhcnNlSWRlbnQodm9pZCogbHZhbHApOwogICAgICAgICBBTFdBWVNfSU5MSU5FIGJvb2wg
cGFyc2VTdHJpbmcodm9pZCogbHZhbHApOwogCiAgICAgICAgIHN0YXRpYyBjb25zdCBzaXplX3Qg
aW5pdGlhbFJlYWRCdWZmZXJDYXBhY2l0eSA9IDMyOwotLSAKMS42LjAuNAoK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>61209</attachid>
            <date>2010-07-12 04:58:34 -0700</date>
            <delta_ts>2010-07-12 04:58:34 -0700</delta_ts>
            <desc>updated patch</desc>
            <filename>0001-ident-parsing.patch</filename>
            <type>text/plain</type>
            <size>24146</size>
            <attacher name="Zoltan Herczeg">zherczeg</attacher>
            
              <data encoding="base64">RnJvbSBjYjJjNzYyNWI2ODQxN2JmZmU2NGI3NGVmY2I3MGE1ZDkyZjRlZGYyIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBab2x0YW4gSGVyY3plZyA8emhlcmN6ZWdAaW5mLnUtc3plZ2Vk
Lmh1PgpEYXRlOiBNb24sIDEyIEp1bCAyMDEwIDEwOjQ5OjE3ICswMjAwClN1YmplY3Q6IFtQQVRD
SF0gaWRlbnQgcGFyc2luZwoKU2lnbmVkLW9mZi1ieTogWm9sdGFuIEhlcmN6ZWcgPHpoZXJjemVn
QGluZi51LXN6ZWdlZC5odT4KLS0tCiBKYXZhU2NyaXB0Q29yZS9wYXJzZXIvTGV4ZXIuY3BwIHwg
IDY2NiArKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLS0tLS0KIEphdmFTY3JpcHRD
b3JlL3BhcnNlci9MZXhlci5oICAgfCAgICAyICsKIDIgZmlsZXMgY2hhbmdlZCwgMzMxIGluc2Vy
dGlvbnMoKyksIDMzNyBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9KYXZhU2NyaXB0Q29yZS9w
YXJzZXIvTGV4ZXIuY3BwIGIvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0xleGVyLmNwcAppbmRleCA0
NWZlMDA3Li5kN2QwZTYwIDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTGV4ZXIu
Y3BwCisrKyBiL0phdmFTY3JpcHRDb3JlL3BhcnNlci9MZXhlci5jcHAKQEAgLTQ4LDEyICs0OCwx
NCBAQCBuYW1lc3BhY2UgSlNDIHsKIAogZW51bSBDaGFyYWN0ZXJUeXBlcyB7CiAgICAgLy8gVHlw
ZXMgZm9yIHRoZSBtYWluIHN3aXRjaAotICAgIENoYXJhY3RlckludmFsaWQsCiAKLSAgICBDaGFy
YWN0ZXJBbHBoYSwKLSAgICBDaGFyYWN0ZXJaZXJvLAotICAgIENoYXJhY3Rlck51bWJlciwKKyAg
ICAvLyBUaGUgZmlyc3QgZnJlZSB0eXBlcyBhcmUgZml4ZWQsIGFuZCBhbHNvIHVzZWQgZm9yCisg
ICAgLy8gaWRlbnRpZnlpbmcgYXNjaWkgYWxwaGEgYW5kIGFscGhhbnVtZXJpYyBjaGFyYWN0ZXJz
CisgICAgQ2hhcmFjdGVyQWxwaGEgPSAwLAorICAgIENoYXJhY3Rlclplcm8gPSAxLAorICAgIENo
YXJhY3Rlck51bWJlciA9IDIsCiAKKyAgICBDaGFyYWN0ZXJJbnZhbGlkID0gMywKICAgICBDaGFy
YWN0ZXJMaW5lVGVybWluYXRvciwKICAgICBDaGFyYWN0ZXJFeGNsYW1hdGlvbk1hcmssCiAgICAg
Q2hhcmFjdGVyT3BlblBhcmVuLApAQCAtODgsNyArOTAsNyBAQCBlbnVtIENoYXJhY3RlclR5cGVz
IHsKIH07CiAKIC8vIDEyOCBhc2NpaSBjb2Rlcwotc3RhdGljIHVuc2lnbmVkIHNob3J0IEFzY2lp
Q2hhcmFjdGVyc1sxMjhdID0geworc3RhdGljIHVuc2lnbmVkIHNob3J0IGFzY2lpQ2hhcmFjdGVy
c1sxMjhdID0gewogLyogICAwIC0gTnVsbCAgICAgICAgICAgICAgICovIENoYXJhY3RlckludmFs
aWQsCiAvKiAgIDEgLSBTdGFydCBvZiBIZWFkaW5nICAgKi8gQ2hhcmFjdGVySW52YWxpZCwKIC8q
ICAgMiAtIFN0YXJ0IG9mIFRleHQgICAgICAqLyBDaGFyYWN0ZXJJbnZhbGlkLApAQCAtMzM1LDcg
KzMzNyw3IEBAIHN0YXRpYyBORVZFUl9JTkxJTkUgYm9vbCBpc05vbkFTQ0lJSWRlbnRTdGFydChp
bnQgYykKIAogc3RhdGljIGlubGluZSBib29sIGlzSWRlbnRTdGFydChpbnQgYykKIHsKLSAgICBy
ZXR1cm4gaXNBU0NJSShjKSA/IGlzQVNDSUlBbHBoYShjKSB8fCBjID09ICckJyB8fCBjID09ICdf
JyA6IGlzTm9uQVNDSUlJZGVudFN0YXJ0KGMpOworICAgIHJldHVybiBpc0FTQ0lJKGMpID8gYXNj
aWlDaGFyYWN0ZXJzW2NdID09IENoYXJhY3RlckFscGhhIDogaXNOb25BU0NJSUlkZW50U3RhcnQo
Yyk7CiB9CiAKIHN0YXRpYyBORVZFUl9JTkxJTkUgYm9vbCBpc05vbkFTQ0lJSWRlbnRQYXJ0KGlu
dCBjKQpAQCAtMzQ2LDMyICszNDgsMzIgQEAgc3RhdGljIE5FVkVSX0lOTElORSBib29sIGlzTm9u
QVNDSUlJZGVudFBhcnQoaW50IGMpCiAKIHN0YXRpYyBpbmxpbmUgYm9vbCBpc0lkZW50UGFydChp
bnQgYykKIHsKLSAgICByZXR1cm4gaXNBU0NJSShjKSA/IGlzQVNDSUlBbHBoYW51bWVyaWMoYykg
fHwgYyA9PSAnJCcgfHwgYyA9PSAnXycgOiBpc05vbkFTQ0lJSWRlbnRQYXJ0KGMpOworICAgIHJl
dHVybiBpc0FTQ0lJKGMpID8gYXNjaWlDaGFyYWN0ZXJzW2NdIDw9IENoYXJhY3Rlck51bWJlciA6
IGlzTm9uQVNDSUlJZGVudFBhcnQoYyk7CiB9CiAKIHN0YXRpYyBpbmxpbmUgaW50IHNpbmdsZUVz
Y2FwZShpbnQgYykKIHsKICAgICBzd2l0Y2ggKGMpIHsKLSAgICAgICAgY2FzZSAnYic6Ci0gICAg
ICAgICAgICByZXR1cm4gMHgwODsKLSAgICAgICAgY2FzZSAndCc6Ci0gICAgICAgICAgICByZXR1
cm4gMHgwOTsKLSAgICAgICAgY2FzZSAnbic6Ci0gICAgICAgICAgICByZXR1cm4gMHgwQTsKLSAg
ICAgICAgY2FzZSAndic6Ci0gICAgICAgICAgICByZXR1cm4gMHgwQjsKLSAgICAgICAgY2FzZSAn
Zic6Ci0gICAgICAgICAgICByZXR1cm4gMHgwQzsKLSAgICAgICAgY2FzZSAncic6Ci0gICAgICAg
ICAgICByZXR1cm4gMHgwRDsKLSAgICAgICAgY2FzZSAnXFwnOgotICAgICAgICAgICAgcmV0dXJu
ICdcXCc7Ci0gICAgICAgIGNhc2UgJ1wnJzoKLSAgICAgICAgICAgIHJldHVybiAnXCcnOwotICAg
ICAgICBjYXNlICciJzoKLSAgICAgICAgICAgIHJldHVybiAnIic7Ci0gICAgICAgIGRlZmF1bHQ6
Ci0gICAgICAgICAgICByZXR1cm4gMDsKKyAgICBjYXNlICdiJzoKKyAgICAgICAgcmV0dXJuIDB4
MDg7CisgICAgY2FzZSAndCc6CisgICAgICAgIHJldHVybiAweDA5OworICAgIGNhc2UgJ24nOgor
ICAgICAgICByZXR1cm4gMHgwQTsKKyAgICBjYXNlICd2JzoKKyAgICAgICAgcmV0dXJuIDB4MEI7
CisgICAgY2FzZSAnZic6CisgICAgICAgIHJldHVybiAweDBDOworICAgIGNhc2UgJ3InOgorICAg
ICAgICByZXR1cm4gMHgwRDsKKyAgICBjYXNlICdcXCc6CisgICAgICAgIHJldHVybiAnXFwnOwor
ICAgIGNhc2UgJ1wnJzoKKyAgICAgICAgcmV0dXJuICdcJyc7CisgICAgY2FzZSAnIic6CisgICAg
ICAgIHJldHVybiAnIic7CisgICAgZGVmYXVsdDoKKyAgICAgICAgcmV0dXJuIDA7CiAgICAgfQog
fQogCkBAIC0zOTQsNiArMzk2LDgzIEBAIGlubGluZSB2b2lkIExleGVyOjpyZWNvcmQxNihpbnQg
YykKICAgICByZWNvcmQxNihVQ2hhcihzdGF0aWNfY2FzdDx1bnNpZ25lZCBzaG9ydD4oYykpKTsK
IH0KIAorQUxXQVlTX0lOTElORSBib29sIExleGVyOjpwYXJzZU11bHRpTGluZUNvbW1lbnQoKQor
eworICAgIHdoaWxlICh0cnVlKSB7CisgICAgICAgIGlmIChVTkxJS0VMWShtX2N1cnJlbnQgPT0g
JyonKSkgeworICAgICAgICAgICAgc2hpZnQoKTsKKyAgICAgICAgICAgIGlmIChtX2N1cnJlbnQg
PT0gJy8nKQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgaWYgKG1fY3VycmVu
dCA9PSAnKicpCisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIH0KKworICAgICAg
ICBpZiAoVU5MSUtFTFkobV9jdXJyZW50ID09IC0xKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKKworICAgICAgICBpZiAoaXNMaW5lVGVybWluYXRvcihtX2N1cnJlbnQpKQorICAgICAgICAg
ICAgc2hpZnRMaW5lVGVybWluYXRvcigpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBzaGlm
dCgpOworICAgIH0KKyAgICBzaGlmdCgpOworICAgIG1fYXRMaW5lU3RhcnQgPSBmYWxzZTsKKyAg
ICByZXR1cm4gdHJ1ZTsKK30KKworQUxXQVlTX0lOTElORSBKU1Rva2VuVHlwZSBMZXhlcjo6cGFy
c2VJZGVudChKU1Rva2VuRGF0YSogbHZhbHApCit7CisgICAgYm9vbCBidWZmZXJSZXF1aXJlZCA9
IGZhbHNlOworICAgIGNvbnN0IFVDaGFyKiBpZGVudGlmaWVyU3RhcnQgPSBjdXJyZW50Q2hhcmFj
dGVyKCk7CisgICAgaW50IGlkZW50aWZpZXJMZW5ndGg7CisKKyAgICB3aGlsZSAodHJ1ZSkgewor
ICAgICAgICBpZiAoaXNJZGVudFBhcnQobV9jdXJyZW50KSkKKyAgICAgICAgICAgIHNoaWZ0KCk7
CisgICAgICAgIGVsc2UgaWYgKG1fY3VycmVudCAhPSAnXFwnKQorICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgLy8gXHVYWFhYIHVuaWNvZGUgY2hhcmFjdGVy
cworICAgICAgICAgICAgYnVmZmVyUmVxdWlyZWQgPSB0cnVlOworICAgICAgICAgICAgaWYgKGlk
ZW50aWZpZXJTdGFydCAhPSBjdXJyZW50Q2hhcmFjdGVyKCkpCisgICAgICAgICAgICAgICAgbV9i
dWZmZXIxNi5hcHBlbmQoaWRlbnRpZmllclN0YXJ0LCBjdXJyZW50Q2hhcmFjdGVyKCkgLSBpZGVu
dGlmaWVyU3RhcnQpOworICAgICAgICAgICAgc2hpZnQoKTsKKyAgICAgICAgICAgIGlmIChVTkxJ
S0VMWShtX2N1cnJlbnQgIT0gJ3UnKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gRVJST1JUT0s7
CisgICAgICAgICAgICBzaGlmdCgpOworICAgICAgICAgICAgaW50IGNoYXJhY3RlciA9IGdldFVu
aWNvZGVDaGFyYWN0ZXIoKTsKKyAgICAgICAgICAgIGlmIChVTkxJS0VMWShjaGFyYWN0ZXIgPT0g
LTEpKQorICAgICAgICAgICAgICAgIHJldHVybiBFUlJPUlRPSzsKKyAgICAgICAgICAgIGlmIChV
TkxJS0VMWShtX2J1ZmZlcjE2LnNpemUoKSA/ICFpc0lkZW50UGFydChjaGFyYWN0ZXIpIDogIWlz
SWRlbnRTdGFydChjaGFyYWN0ZXIpKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gRVJST1JUT0s7
CisgICAgICAgICAgICByZWNvcmQxNihjaGFyYWN0ZXIpOworICAgICAgICAgICAgaWRlbnRpZmll
clN0YXJ0ID0gY3VycmVudENoYXJhY3RlcigpOworICAgICAgICB9CisgICAgfQorCisgICAgaWYg
KCFidWZmZXJSZXF1aXJlZCkKKyAgICAgICAgaWRlbnRpZmllckxlbmd0aCA9IGN1cnJlbnRDaGFy
YWN0ZXIoKSAtIGlkZW50aWZpZXJTdGFydDsKKyAgICBlbHNlIHsKKyAgICAgICAgaWYgKGlkZW50
aWZpZXJTdGFydCAhPSBjdXJyZW50Q2hhcmFjdGVyKCkpCisgICAgICAgICAgICBtX2J1ZmZlcjE2
LmFwcGVuZChpZGVudGlmaWVyU3RhcnQsIGN1cnJlbnRDaGFyYWN0ZXIoKSAtIGlkZW50aWZpZXJT
dGFydCk7CisgICAgICAgIGlkZW50aWZpZXJTdGFydCA9IG1fYnVmZmVyMTYuZGF0YSgpOworICAg
ICAgICBpZGVudGlmaWVyTGVuZ3RoID0gbV9idWZmZXIxNi5zaXplKCk7CisgICAgfQorCisgICAg
Y29uc3QgSWRlbnRpZmllciogaWRlbnQgPSBtYWtlSWRlbnRpZmllcihpZGVudGlmaWVyU3RhcnQs
IGlkZW50aWZpZXJMZW5ndGgpOworICAgIGx2YWxwLT5pZGVudCA9IGlkZW50OworICAgIG1fZGVs
aW1pdGVkID0gZmFsc2U7CisKKyAgICBpZiAoIWJ1ZmZlclJlcXVpcmVkKSB7CisgICAgICAgIC8v
IGtleXdvcmRzIGFyZSBub3QgY2hlY2tlZCBpZiB0aGVyZSB3YXMgYW4gXHVYWFhYIGluIHRoZSBp
ZGVudGlmaWVyCisgICAgICAgIGNvbnN0IEhhc2hFbnRyeSogZW50cnkgPSBtX2tleXdvcmRUYWJs
ZS5lbnRyeShtX2dsb2JhbERhdGEsICppZGVudCk7CisgICAgICAgIHJldHVybiBlbnRyeSA/IHN0
YXRpY19jYXN0PEpTVG9rZW5UeXBlPihlbnRyeS0+bGV4ZXJWYWx1ZSgpKSA6IElERU5UOworICAg
IH0KKworICAgIG1fYnVmZmVyMTYucmVzaXplKDApOworICAgIHJldHVybiBJREVOVDsKK30KKwog
QUxXQVlTX0lOTElORSBib29sIExleGVyOjpwYXJzZVN0cmluZyhKU1Rva2VuRGF0YSogbHZhbHAp
CiB7CiAgICAgaW50IHN0cmluZ1F1b3RlQ2hhcmFjdGVyID0gbV9jdXJyZW50OwpAQCAtNDU2LDcg
KzUzNSw4IEBAIEFMV0FZU19JTkxJTkUgYm9vbCBMZXhlcjo6cGFyc2VTdHJpbmcoSlNUb2tlbkRh
dGEqIGx2YWxwKQogCiAgICAgICAgICAgICBzdHJpbmdTdGFydCA9IGN1cnJlbnRDaGFyYWN0ZXIo
KTsKICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICB9IGVsc2UgaWYgKFVOTElLRUxZKCgo
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG1fY3VycmVudCkgLSAweEUpICYgMHgyMDAwKSkpIHsKKyAg
ICAgICAgfQorICAgICAgICBpZiAoVU5MSUtFTFkoKChzdGF0aWNfY2FzdDx1bnNpZ25lZD4obV9j
dXJyZW50KSAtIDB4RSkgJiAweDIwMDApKSkgewogICAgICAgICAgICAgLy8gTmV3LWxpbmUgb3Ig
ZW5kIG9mIGlucHV0IGlzIG5vdCBhbGxvd2VkCiAgICAgICAgICAgICBpZiAoVU5MSUtFTFkoaXNM
aW5lVGVybWluYXRvcihtX2N1cnJlbnQpKSB8fCBVTkxJS0VMWShtX2N1cnJlbnQgPT0gLTEpKQog
ICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTQ3OSw3ICs1NTksNiBAQCBKU1Rva2Vu
VHlwZSBMZXhlcjo6bGV4KEpTVG9rZW5EYXRhKiBsdmFscCwgSlNUb2tlbkluZm8qIGxsb2NwKQog
ICAgIEFTU0VSVChtX2J1ZmZlcjE2LmlzRW1wdHkoKSk7CiAKICAgICBKU1Rva2VuVHlwZSB0b2tl
biA9IEVSUk9SVE9LOwotICAgIGludCBpZGVudENoYXIgPSAwOwogICAgIG1fdGVybWluYXRvciA9
IGZhbHNlOwogCiBzdGFydDoKQEAgLTQ5MywzNDcgKzU3MiwzMDAgQEAgc3RhcnQ6CiAKICAgICBt
X2RlbGltaXRlZCA9IGZhbHNlOwogCi0gICAgaWYgKGlzQVNDSUkobV9jdXJyZW50KSkgewotICAg
ICAgICBBU1NFUlQobV9jdXJyZW50ID49IDAgJiYgbV9jdXJyZW50IDwgMTI4KTsKKyAgICAvLyB0
ZW1wb3JhcnkgY29udGFpbnMgYW4gYXNjaWkgcmVwcmVzZW50YXRpb24gb2YgdGhlIGNvZGUKKyAg
ICAvLyBoZWxwcyB0byBhdm9pZCBjb2RlIGR1cGxpY2F0aW9uCisgICAgaW50IGFzY2lpQ2hhcmFj
dGVyOworICAgIGlmIChpc0FTQ0lJKG1fY3VycmVudCkpCisgICAgICAgIGFzY2lpQ2hhcmFjdGVy
ID0gbV9jdXJyZW50OworICAgIGVsc2UgeworICAgICAgICBpZiAoaXNOb25BU0NJSUlkZW50U3Rh
cnQobV9jdXJyZW50KSkKKyAgICAgICAgICAgIGFzY2lpQ2hhcmFjdGVyID0gJ2EnOworICAgICAg
ICBlbHNlIGlmIChpc0xpbmVUZXJtaW5hdG9yKG1fY3VycmVudCkpCisgICAgICAgICAgICBhc2Np
aUNoYXJhY3RlciA9ICdcbic7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGdvdG8gcmV0dXJu
RXJyb3I7CisgICAgfQogCi0gICAgICAgIHN3aXRjaCAoQXNjaWlDaGFyYWN0ZXJzW21fY3VycmVu
dF0pIHsKLSAgICAgICAgY2FzZSBDaGFyYWN0ZXJHcmVhdGVyOgorICAgIHN3aXRjaCAoYXNjaWlD
aGFyYWN0ZXJzW2FzY2lpQ2hhcmFjdGVyXSkgeworICAgIGNhc2UgQ2hhcmFjdGVyR3JlYXRlcjoK
KyAgICAgICAgc2hpZnQoKTsKKyAgICAgICAgaWYgKG1fY3VycmVudCA9PSAnPicpIHsKICAgICAg
ICAgICAgIHNoaWZ0KCk7CiAgICAgICAgICAgICBpZiAobV9jdXJyZW50ID09ICc+JykgewogICAg
ICAgICAgICAgICAgIHNoaWZ0KCk7Ci0gICAgICAgICAgICAgICAgaWYgKG1fY3VycmVudCA9PSAn
PicpIHsKLSAgICAgICAgICAgICAgICAgICAgc2hpZnQoKTsKLSAgICAgICAgICAgICAgICAgICAg
aWYgKG1fY3VycmVudCA9PSAnPScpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHNoaWZ0KCk7
Ci0gICAgICAgICAgICAgICAgICAgICAgICB0b2tlbiA9IFVSU0hJRlRFUVVBTDsKLSAgICAgICAg
ICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAg
ICAgICAgICAgIHRva2VuID0gVVJTSElGVDsKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0g
ICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIGlmIChtX2N1cnJlbnQgPT0gJz0nKSB7
CiAgICAgICAgICAgICAgICAgICAgIHNoaWZ0KCk7Ci0gICAgICAgICAgICAgICAgICAgIHRva2Vu
ID0gUlNISUZURVFVQUw7CisgICAgICAgICAgICAgICAgICAgIHRva2VuID0gVVJTSElGVEVRVUFM
OwogICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICB9Ci0gICAgICAg
ICAgICAgICAgdG9rZW4gPSBSU0hJRlQ7CisgICAgICAgICAgICAgICAgdG9rZW4gPSBVUlNISUZU
OwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgaWYg
KG1fY3VycmVudCA9PSAnPScpIHsKICAgICAgICAgICAgICAgICBzaGlmdCgpOwotICAgICAgICAg
ICAgICAgIHRva2VuID0gR0U7CisgICAgICAgICAgICAgICAgdG9rZW4gPSBSU0hJRlRFUVVBTDsK
ICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHRva2Vu
ID0gR1Q7CisgICAgICAgICAgICB0b2tlbiA9IFJTSElGVDsKICAgICAgICAgICAgIGJyZWFrOwot
ICAgICAgICBjYXNlIENoYXJhY3RlckVxdWFsOgotICAgICAgICAgICAgc2hpZnQoKTsKLSAgICAg
ICAgICAgIGlmIChtX2N1cnJlbnQgPT0gJz0nKSB7Ci0gICAgICAgICAgICAgICAgc2hpZnQoKTsK
LSAgICAgICAgICAgICAgICBpZiAobV9jdXJyZW50ID09ICc9JykgewotICAgICAgICAgICAgICAg
ICAgICBzaGlmdCgpOwotICAgICAgICAgICAgICAgICAgICB0b2tlbiA9IFNUUkVROwotICAgICAg
ICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAg
dG9rZW4gPSBFUUVROwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfQotICAg
ICAgICAgICAgdG9rZW4gPSBFUVVBTDsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNl
IENoYXJhY3Rlckxlc3M6Ci0gICAgICAgICAgICBzaGlmdCgpOwotICAgICAgICAgICAgaWYgKG1f
Y3VycmVudCA9PSAnIScgJiYgcGVlaygxKSA9PSAnLScgJiYgcGVlaygyKSA9PSAnLScpIHsKLSAg
ICAgICAgICAgICAgICAvLyA8IS0tIG1hcmtzIHRoZSBiZWdpbm5pbmcgb2YgYSBsaW5lIGNvbW1l
bnQgKGZvciB3d3cgdXNhZ2UpCi0gICAgICAgICAgICAgICAgZ290byBpblNpbmdsZUxpbmVDb21t
ZW50OwotICAgICAgICAgICAgfQotICAgICAgICAgICAgaWYgKG1fY3VycmVudCA9PSAnPCcpIHsK
LSAgICAgICAgICAgICAgICBzaGlmdCgpOwotICAgICAgICAgICAgICAgIGlmIChtX2N1cnJlbnQg
PT0gJz0nKSB7Ci0gICAgICAgICAgICAgICAgICAgIHNoaWZ0KCk7Ci0gICAgICAgICAgICAgICAg
ICAgIHRva2VuID0gTFNISUZURVFVQUw7Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAg
ICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB0b2tlbiA9IExTSElGVDsKLSAgICAgICAg
ICAgICAgICBicmVhazsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmIChtX2N1cnJlbnQg
PT0gJz0nKSB7Ci0gICAgICAgICAgICAgICAgc2hpZnQoKTsKLSAgICAgICAgICAgICAgICB0b2tl
biA9IExFOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfQotICAgICAgICAg
ICAgdG9rZW4gPSBMVDsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIENoYXJhY3Rl
ckV4Y2xhbWF0aW9uTWFyazoKLSAgICAgICAgICAgIHNoaWZ0KCk7Ci0gICAgICAgICAgICBpZiAo
bV9jdXJyZW50ID09ICc9JykgewotICAgICAgICAgICAgICAgIHNoaWZ0KCk7Ci0gICAgICAgICAg
ICAgICAgaWYgKG1fY3VycmVudCA9PSAnPScpIHsKLSAgICAgICAgICAgICAgICAgICAgc2hpZnQo
KTsKLSAgICAgICAgICAgICAgICAgICAgdG9rZW4gPSBTVFJORVE7Ci0gICAgICAgICAgICAgICAg
ICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB0b2tlbiA9IE5F
OwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgdG9r
ZW4gPSBFWENMQU1BVElPTjsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIENoYXJh
Y3RlckFkZDoKKyAgICAgICAgfQorICAgICAgICBpZiAobV9jdXJyZW50ID09ICc9JykgewogICAg
ICAgICAgICAgc2hpZnQoKTsKLSAgICAgICAgICAgIGlmIChtX2N1cnJlbnQgPT0gJysnKSB7Ci0g
ICAgICAgICAgICAgICAgc2hpZnQoKTsKLSAgICAgICAgICAgICAgICB0b2tlbiA9ICghbV90ZXJt
aW5hdG9yKSA/IFBMVVNQTFVTIDogQVVUT1BMVVNQTFVTOwotICAgICAgICAgICAgICAgIGJyZWFr
OwotICAgICAgICAgICAgfQotICAgICAgICAgICAgaWYgKG1fY3VycmVudCA9PSAnPScpIHsKLSAg
ICAgICAgICAgICAgICBzaGlmdCgpOwotICAgICAgICAgICAgICAgIHRva2VuID0gUExVU0VRVUFM
OwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgdG9r
ZW4gPSBQTFVTOworICAgICAgICAgICAgdG9rZW4gPSBHRTsKICAgICAgICAgICAgIGJyZWFrOwot
ICAgICAgICBjYXNlIENoYXJhY3RlclN1YjoKKyAgICAgICAgfQorICAgICAgICB0b2tlbiA9IEdU
OworICAgICAgICBicmVhazsKKyAgICBjYXNlIENoYXJhY3RlckVxdWFsOgorICAgICAgICBzaGlm
dCgpOworICAgICAgICBpZiAobV9jdXJyZW50ID09ICc9JykgewogICAgICAgICAgICAgc2hpZnQo
KTsKLSAgICAgICAgICAgIGlmIChtX2N1cnJlbnQgPT0gJy0nKSB7Ci0gICAgICAgICAgICAgICAg
c2hpZnQoKTsKLSAgICAgICAgICAgICAgICBpZiAobV9hdExpbmVTdGFydCAmJiBtX2N1cnJlbnQg
PT0gJz4nKSB7Ci0gICAgICAgICAgICAgICAgICAgIHNoaWZ0KCk7Ci0gICAgICAgICAgICAgICAg
ICAgIGdvdG8gaW5TaW5nbGVMaW5lQ29tbWVudDsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAg
ICAgICAgICAgdG9rZW4gPSAoIW1fdGVybWluYXRvcikgPyBNSU5VU01JTlVTIDogQVVUT01JTlVT
TUlOVVM7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9CiAgICAgICAgICAg
ICBpZiAobV9jdXJyZW50ID09ICc9JykgewogICAgICAgICAgICAgICAgIHNoaWZ0KCk7Ci0gICAg
ICAgICAgICAgICAgdG9rZW4gPSBNSU5VU0VRVUFMOworICAgICAgICAgICAgICAgIHRva2VuID0g
U1RSRVE7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAg
ICB0b2tlbiA9IE1JTlVTOworICAgICAgICAgICAgdG9rZW4gPSBFUUVROwogICAgICAgICAgICAg
YnJlYWs7Ci0gICAgICAgIGNhc2UgQ2hhcmFjdGVyTXVsdGlwbHk6CisgICAgICAgIH0KKyAgICAg
ICAgdG9rZW4gPSBFUVVBTDsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBDaGFyYWN0ZXJMZXNz
OgorICAgICAgICBzaGlmdCgpOworICAgICAgICBpZiAobV9jdXJyZW50ID09ICchJyAmJiBwZWVr
KDEpID09ICctJyAmJiBwZWVrKDIpID09ICctJykgeworICAgICAgICAgICAgLy8gPCEtLSBtYXJr
cyB0aGUgYmVnaW5uaW5nIG9mIGEgbGluZSBjb21tZW50IChmb3Igd3d3IHVzYWdlKQorICAgICAg
ICAgICAgZ290byBpblNpbmdsZUxpbmVDb21tZW50OworICAgICAgICB9CisgICAgICAgIGlmICht
X2N1cnJlbnQgPT0gJzwnKSB7CiAgICAgICAgICAgICBzaGlmdCgpOwogICAgICAgICAgICAgaWYg
KG1fY3VycmVudCA9PSAnPScpIHsKICAgICAgICAgICAgICAgICBzaGlmdCgpOwotICAgICAgICAg
ICAgICAgIHRva2VuID0gTVVMVEVRVUFMOworICAgICAgICAgICAgICAgIHRva2VuID0gTFNISUZU
RVFVQUw7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAg
ICB0b2tlbiA9IFRJTUVTOworICAgICAgICAgICAgdG9rZW4gPSBMU0hJRlQ7CiAgICAgICAgICAg
ICBicmVhazsKLSAgICAgICAgY2FzZSBDaGFyYWN0ZXJTbGFzaDoKKyAgICAgICAgfQorICAgICAg
ICBpZiAobV9jdXJyZW50ID09ICc9JykgewogICAgICAgICAgICAgc2hpZnQoKTsKLSAgICAgICAg
ICAgIGlmIChtX2N1cnJlbnQgPT0gJy8nKSB7Ci0gICAgICAgICAgICAgICAgc2hpZnQoKTsKLSAg
ICAgICAgICAgICAgICBnb3RvIGluU2luZ2xlTGluZUNvbW1lbnQ7Ci0gICAgICAgICAgICB9Ci0g
ICAgICAgICAgICBpZiAobV9jdXJyZW50ID09ICcqJykgewotICAgICAgICAgICAgICAgIHNoaWZ0
KCk7Ci0gICAgICAgICAgICAgICAgZ290byBpbk11bHRpTGluZUNvbW1lbnQ7Ci0gICAgICAgICAg
ICB9Ci0gICAgICAgICAgICBpZiAobV9jdXJyZW50ID09ICc9JykgewotICAgICAgICAgICAgICAg
IHNoaWZ0KCk7Ci0gICAgICAgICAgICAgICAgdG9rZW4gPSBESVZFUVVBTDsKLSAgICAgICAgICAg
ICAgICBicmVhazsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHRva2VuID0gRElWSURFOwor
ICAgICAgICAgICAgdG9rZW4gPSBMRTsKICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNl
IENoYXJhY3RlckFuZDoKKyAgICAgICAgfQorICAgICAgICB0b2tlbiA9IExUOworICAgICAgICBi
cmVhazsKKyAgICBjYXNlIENoYXJhY3RlckV4Y2xhbWF0aW9uTWFyazoKKyAgICAgICAgc2hpZnQo
KTsKKyAgICAgICAgaWYgKG1fY3VycmVudCA9PSAnPScpIHsKICAgICAgICAgICAgIHNoaWZ0KCk7
Ci0gICAgICAgICAgICBpZiAobV9jdXJyZW50ID09ICcmJykgewotICAgICAgICAgICAgICAgIHNo
aWZ0KCk7Ci0gICAgICAgICAgICAgICAgdG9rZW4gPSBBTkQ7Ci0gICAgICAgICAgICAgICAgYnJl
YWs7Ci0gICAgICAgICAgICB9CiAgICAgICAgICAgICBpZiAobV9jdXJyZW50ID09ICc9Jykgewog
ICAgICAgICAgICAgICAgIHNoaWZ0KCk7Ci0gICAgICAgICAgICAgICAgdG9rZW4gPSBBTkRFUVVB
TDsKKyAgICAgICAgICAgICAgICB0b2tlbiA9IFNUUk5FUTsKICAgICAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHRva2VuID0gQklUQU5EOworICAgICAgICAg
ICAgdG9rZW4gPSBORTsKICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIENoYXJhY3Rl
clhvcjoKKyAgICAgICAgfQorICAgICAgICB0b2tlbiA9IEVYQ0xBTUFUSU9OOworICAgICAgICBi
cmVhazsKKyAgICBjYXNlIENoYXJhY3RlckFkZDoKKyAgICAgICAgc2hpZnQoKTsKKyAgICAgICAg
aWYgKG1fY3VycmVudCA9PSAnKycpIHsKICAgICAgICAgICAgIHNoaWZ0KCk7Ci0gICAgICAgICAg
ICBpZiAobV9jdXJyZW50ID09ICc9JykgewotICAgICAgICAgICAgICAgIHNoaWZ0KCk7Ci0gICAg
ICAgICAgICAgICAgdG9rZW4gPSBYT1JFUVVBTDsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAg
ICAgICAgICAgIH0KLSAgICAgICAgICAgIHRva2VuID0gQklUWE9SOworICAgICAgICAgICAgdG9r
ZW4gPSAoIW1fdGVybWluYXRvcikgPyBQTFVTUExVUyA6IEFVVE9QTFVTUExVUzsKICAgICAgICAg
ICAgIGJyZWFrOwotICAgICAgICBjYXNlIENoYXJhY3Rlck1vZHVsbzoKKyAgICAgICAgfQorICAg
ICAgICBpZiAobV9jdXJyZW50ID09ICc9JykgewogICAgICAgICAgICAgc2hpZnQoKTsKLSAgICAg
ICAgICAgIGlmIChtX2N1cnJlbnQgPT0gJz0nKSB7Ci0gICAgICAgICAgICAgICAgc2hpZnQoKTsK
LSAgICAgICAgICAgICAgICB0b2tlbiA9IE1PREVRVUFMOwotICAgICAgICAgICAgICAgIGJyZWFr
OwotICAgICAgICAgICAgfQotICAgICAgICAgICAgdG9rZW4gPSBNT0Q7CisgICAgICAgICAgICB0
b2tlbiA9IFBMVVNFUVVBTDsKICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIENoYXJh
Y3Rlck9yOgorICAgICAgICB9CisgICAgICAgIHRva2VuID0gUExVUzsKKyAgICAgICAgYnJlYWs7
CisgICAgY2FzZSBDaGFyYWN0ZXJTdWI6CisgICAgICAgIHNoaWZ0KCk7CisgICAgICAgIGlmICht
X2N1cnJlbnQgPT0gJy0nKSB7CiAgICAgICAgICAgICBzaGlmdCgpOwotICAgICAgICAgICAgaWYg
KG1fY3VycmVudCA9PSAnPScpIHsKLSAgICAgICAgICAgICAgICBzaGlmdCgpOwotICAgICAgICAg
ICAgICAgIHRva2VuID0gT1JFUVVBTDsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAg
ICAgIH0KLSAgICAgICAgICAgIGlmIChtX2N1cnJlbnQgPT0gJ3wnKSB7CisgICAgICAgICAgICBp
ZiAobV9hdExpbmVTdGFydCAmJiBtX2N1cnJlbnQgPT0gJz4nKSB7CiAgICAgICAgICAgICAgICAg
c2hpZnQoKTsKLSAgICAgICAgICAgICAgICB0b2tlbiA9IE9SOwotICAgICAgICAgICAgICAgIGJy
ZWFrOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgdG9rZW4gPSBCSVRPUjsKLSAgICAgICAg
ICAgIGJyZWFrOwotICAgICAgICBjYXNlIENoYXJhY3RlckRvdDoKLSAgICAgICAgICAgIHNoaWZ0
KCk7Ci0gICAgICAgICAgICBpZiAoaXNBU0NJSURpZ2l0KG1fY3VycmVudCkpIHsKLSAgICAgICAg
ICAgICAgICByZWNvcmQ4KCcuJyk7Ci0gICAgICAgICAgICAgICAgZ290byBpbk51bWJlckFmdGVy
RGVjaW1hbFBvaW50OworICAgICAgICAgICAgICAgIGdvdG8gaW5TaW5nbGVMaW5lQ29tbWVudDsK
ICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHRva2VuID0gRE9UOwotICAgICAgICAgICAgYnJl
YWs7Ci0gICAgICAgIGNhc2UgQ2hhcmFjdGVyT3BlblBhcmVuOgotICAgICAgICAgICAgdG9rZW4g
PSBPUEVOUEFSRU47Ci0gICAgICAgICAgICBzaGlmdCgpOworICAgICAgICAgICAgdG9rZW4gPSAo
IW1fdGVybWluYXRvcikgPyBNSU5VU01JTlVTIDogQVVUT01JTlVTTUlOVVM7CiAgICAgICAgICAg
ICBicmVhazsKLSAgICAgICAgY2FzZSBDaGFyYWN0ZXJDbG9zZVBhcmVuOgotICAgICAgICAgICAg
dG9rZW4gPSBDTE9TRVBBUkVOOworICAgICAgICB9CisgICAgICAgIGlmIChtX2N1cnJlbnQgPT0g
Jz0nKSB7CiAgICAgICAgICAgICBzaGlmdCgpOworICAgICAgICAgICAgdG9rZW4gPSBNSU5VU0VR
VUFMOwogICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgQ2hhcmFjdGVyT3BlbkJyYWNr
ZXQ6Ci0gICAgICAgICAgICB0b2tlbiA9IE9QRU5CUkFDS0VUOworICAgICAgICB9CisgICAgICAg
IHRva2VuID0gTUlOVVM7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQ2hhcmFjdGVyTXVsdGlw
bHk6CisgICAgICAgIHNoaWZ0KCk7CisgICAgICAgIGlmIChtX2N1cnJlbnQgPT0gJz0nKSB7CiAg
ICAgICAgICAgICBzaGlmdCgpOworICAgICAgICAgICAgdG9rZW4gPSBNVUxURVFVQUw7CiAgICAg
ICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBDaGFyYWN0ZXJDbG9zZUJyYWNrZXQ6Ci0gICAg
ICAgICAgICB0b2tlbiA9IENMT1NFQlJBQ0tFVDsKKyAgICAgICAgfQorICAgICAgICB0b2tlbiA9
IFRJTUVTOworICAgICAgICBicmVhazsKKyAgICBjYXNlIENoYXJhY3RlclNsYXNoOgorICAgICAg
ICBzaGlmdCgpOworICAgICAgICBpZiAobV9jdXJyZW50ID09ICcvJykgewogICAgICAgICAgICAg
c2hpZnQoKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIENoYXJhY3RlckNvbW1h
OgotICAgICAgICAgICAgdG9rZW4gPSBDT01NQTsKKyAgICAgICAgICAgIGdvdG8gaW5TaW5nbGVM
aW5lQ29tbWVudDsKKyAgICAgICAgfQorICAgICAgICBpZiAobV9jdXJyZW50ID09ICcqJykgewog
ICAgICAgICAgICAgc2hpZnQoKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIENo
YXJhY3RlckNvbG9uOgotICAgICAgICAgICAgdG9rZW4gPSBDT0xPTjsKKyAgICAgICAgICAgIGlm
IChwYXJzZU11bHRpTGluZUNvbW1lbnQoKSkKKyAgICAgICAgICAgICAgICBnb3RvIHN0YXJ0Owor
ICAgICAgICAgICAgZ290byByZXR1cm5FcnJvcjsKKyAgICAgICAgfQorICAgICAgICBpZiAobV9j
dXJyZW50ID09ICc9JykgewogICAgICAgICAgICAgc2hpZnQoKTsKKyAgICAgICAgICAgIHRva2Vu
ID0gRElWRVFVQUw7CiAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBDaGFyYWN0ZXJR
dWVzdGlvbjoKLSAgICAgICAgICAgIHRva2VuID0gUVVFU1RJT047CisgICAgICAgIH0KKyAgICAg
ICAgdG9rZW4gPSBESVZJREU7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQ2hhcmFjdGVyQW5k
OgorICAgICAgICBzaGlmdCgpOworICAgICAgICBpZiAobV9jdXJyZW50ID09ICcmJykgewogICAg
ICAgICAgICAgc2hpZnQoKTsKKyAgICAgICAgICAgIHRva2VuID0gQU5EOwogICAgICAgICAgICAg
YnJlYWs7Ci0gICAgICAgIGNhc2UgQ2hhcmFjdGVyVGlsZGU6Ci0gICAgICAgICAgICB0b2tlbiA9
IFRJTERFOworICAgICAgICB9CisgICAgICAgIGlmIChtX2N1cnJlbnQgPT0gJz0nKSB7CiAgICAg
ICAgICAgICBzaGlmdCgpOworICAgICAgICAgICAgdG9rZW4gPSBBTkRFUVVBTDsKICAgICAgICAg
ICAgIGJyZWFrOwotICAgICAgICBjYXNlIENoYXJhY3RlclNlbWljb2xvbjoKLSAgICAgICAgICAg
IG1fZGVsaW1pdGVkID0gdHJ1ZTsKKyAgICAgICAgfQorICAgICAgICB0b2tlbiA9IEJJVEFORDsK
KyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBDaGFyYWN0ZXJYb3I6CisgICAgICAgIHNoaWZ0KCk7
CisgICAgICAgIGlmIChtX2N1cnJlbnQgPT0gJz0nKSB7CiAgICAgICAgICAgICBzaGlmdCgpOwot
ICAgICAgICAgICAgdG9rZW4gPSBTRU1JQ09MT047CisgICAgICAgICAgICB0b2tlbiA9IFhPUkVR
VUFMOwogICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgQ2hhcmFjdGVyT3BlbkJyYWNl
OgotICAgICAgICAgICAgbHZhbHAtPmludFZhbHVlID0gY3VycmVudE9mZnNldCgpOworICAgICAg
ICB9CisgICAgICAgIHRva2VuID0gQklUWE9SOworICAgICAgICBicmVhazsKKyAgICBjYXNlIENo
YXJhY3Rlck1vZHVsbzoKKyAgICAgICAgc2hpZnQoKTsKKyAgICAgICAgaWYgKG1fY3VycmVudCA9
PSAnPScpIHsKICAgICAgICAgICAgIHNoaWZ0KCk7Ci0gICAgICAgICAgICB0b2tlbiA9IE9QRU5C
UkFDRTsKKyAgICAgICAgICAgIHRva2VuID0gTU9ERVFVQUw7CiAgICAgICAgICAgICBicmVhazsK
LSAgICAgICAgY2FzZSBDaGFyYWN0ZXJDbG9zZUJyYWNlOgotICAgICAgICAgICAgbHZhbHAtPmlu
dFZhbHVlID0gY3VycmVudE9mZnNldCgpOwotICAgICAgICAgICAgbV9kZWxpbWl0ZWQgPSB0cnVl
OworICAgICAgICB9CisgICAgICAgIHRva2VuID0gTU9EOworICAgICAgICBicmVhazsKKyAgICBj
YXNlIENoYXJhY3Rlck9yOgorICAgICAgICBzaGlmdCgpOworICAgICAgICBpZiAobV9jdXJyZW50
ID09ICc9JykgewogICAgICAgICAgICAgc2hpZnQoKTsKLSAgICAgICAgICAgIHRva2VuID0gQ0xP
U0VCUkFDRTsKKyAgICAgICAgICAgIHRva2VuID0gT1JFUVVBTDsKICAgICAgICAgICAgIGJyZWFr
OwotICAgICAgICBjYXNlIENoYXJhY3RlckJhY2tTbGFzaDoKLSAgICAgICAgICAgIGdvdG8gc3Rh
cnRJZGVudGlmaWVyV2l0aEJhY2tzbGFzaDsKLSAgICAgICAgY2FzZSBDaGFyYWN0ZXJaZXJvOgot
ICAgICAgICAgICAgZ290byBzdGFydE51bWJlcldpdGhaZXJvRGlnaXQ7Ci0gICAgICAgIGNhc2Ug
Q2hhcmFjdGVyTnVtYmVyOgotICAgICAgICAgICAgZ290byBzdGFydE51bWJlcjsKLSAgICAgICAg
Y2FzZSBDaGFyYWN0ZXJRdW90ZToKLSAgICAgICAgICAgIGlmIChVTkxJS0VMWSghcGFyc2VTdHJp
bmcobHZhbHApKSkKLSAgICAgICAgICAgICAgICBnb3RvIHJldHVybkVycm9yOworICAgICAgICB9
CisgICAgICAgIGlmIChtX2N1cnJlbnQgPT0gJ3wnKSB7CiAgICAgICAgICAgICBzaGlmdCgpOwot
ICAgICAgICAgICAgbV9kZWxpbWl0ZWQgPSBmYWxzZTsKLSAgICAgICAgICAgIHRva2VuID0gU1RS
SU5HOworICAgICAgICAgICAgdG9rZW4gPSBPUjsKICAgICAgICAgICAgIGJyZWFrOwotICAgICAg
ICBjYXNlIENoYXJhY3RlckFscGhhOgotICAgICAgICAgICAgQVNTRVJUKGlzSWRlbnRTdGFydCht
X2N1cnJlbnQpKTsKLSAgICAgICAgICAgIGdvdG8gc3RhcnRJZGVudGlmaWVyT3JLZXl3b3JkOwot
ICAgICAgICBjYXNlIENoYXJhY3RlckxpbmVUZXJtaW5hdG9yOgotICAgICAgICAgICAgQVNTRVJU
KGlzTGluZVRlcm1pbmF0b3IobV9jdXJyZW50KSk7Ci0gICAgICAgICAgICBzaGlmdExpbmVUZXJt
aW5hdG9yKCk7Ci0gICAgICAgICAgICBtX2F0TGluZVN0YXJ0ID0gdHJ1ZTsKLSAgICAgICAgICAg
IG1fdGVybWluYXRvciA9IHRydWU7Ci0gICAgICAgICAgICBpZiAobGFzdFRva2VuV2FzUmVzdHJL
ZXl3b3JkKCkpIHsKLSAgICAgICAgICAgICAgICB0b2tlbiA9IFNFTUlDT0xPTjsKLSAgICAgICAg
ICAgICAgICBnb3RvIGRvbmVTZW1pY29sb247Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBn
b3RvIHN0YXJ0OwotICAgICAgICBjYXNlIENoYXJhY3RlckludmFsaWQ6Ci0gICAgICAgICAgICBn
b3RvIHJldHVybkVycm9yOwotICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7Ci0gICAgICAgICAgICBnb3RvIHJldHVybkVycm9yOwogICAgICAgICB9Ci0g
ICAgfSBlbHNlIHsKLSAgICAgICAgLy8gUmFyZSBjaGFyYWN0ZXJzCi0KLSAgICAgICAgaWYgKGlz
Tm9uQVNDSUlJZGVudFN0YXJ0KG1fY3VycmVudCkpCi0gICAgICAgICAgICBnb3RvIHN0YXJ0SWRl
bnRpZmllck9yS2V5d29yZDsKLSAgICAgICAgaWYgKGlzTGluZVRlcm1pbmF0b3IobV9jdXJyZW50
KSkgewotICAgICAgICAgICAgc2hpZnRMaW5lVGVybWluYXRvcigpOwotICAgICAgICAgICAgbV9h
dExpbmVTdGFydCA9IHRydWU7Ci0gICAgICAgICAgICBtX3Rlcm1pbmF0b3IgPSB0cnVlOwotICAg
ICAgICAgICAgaWYgKGxhc3RUb2tlbldhc1Jlc3RyS2V5d29yZCgpKQotICAgICAgICAgICAgICAg
IGdvdG8gZG9uZVNlbWljb2xvbjsKLSAgICAgICAgICAgIGdvdG8gc3RhcnQ7CisgICAgICAgIHRv
a2VuID0gQklUT1I7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQ2hhcmFjdGVyRG90OgorICAg
ICAgICBzaGlmdCgpOworICAgICAgICBpZiAoaXNBU0NJSURpZ2l0KG1fY3VycmVudCkpIHsKKyAg
ICAgICAgICAgIHJlY29yZDgoJy4nKTsKKyAgICAgICAgICAgIGdvdG8gaW5OdW1iZXJBZnRlckRl
Y2ltYWxQb2ludDsKICAgICAgICAgfQotICAgICAgICBnb3RvIHJldHVybkVycm9yOwotICAgIH0K
LQotICAgIG1fYXRMaW5lU3RhcnQgPSBmYWxzZTsKLSAgICBnb3RvIHJldHVyblRva2VuOwotCi1z
dGFydElkZW50aWZpZXJXaXRoQmFja3NsYXNoOiB7Ci0gICAgc2hpZnQoKTsKLSAgICBpZiAoVU5M
SUtFTFkobV9jdXJyZW50ICE9ICd1JykpCi0gICAgICAgIGdvdG8gcmV0dXJuRXJyb3I7Ci0gICAg
c2hpZnQoKTsKLQotICAgIGlkZW50Q2hhciA9IGdldFVuaWNvZGVDaGFyYWN0ZXIoKTsKLSAgICBp
ZiAoVU5MSUtFTFkoaWRlbnRDaGFyID09IC0xKSkKLSAgICAgICAgZ290byByZXR1cm5FcnJvcjsK
LSAgICBpZiAoVU5MSUtFTFkoIWlzSWRlbnRTdGFydChpZGVudENoYXIpKSkKLSAgICAgICAgZ290
byByZXR1cm5FcnJvcjsKLSAgICBnb3RvIGluSWRlbnRpZmllckFmdGVyQ2hhcmFjdGVyQ2hlY2s7
Ci19Ci0KLXN0YXJ0SWRlbnRpZmllck9yS2V5d29yZDogewotICAgIGNvbnN0IFVDaGFyKiBpZGVu
dGlmaWVyU3RhcnQgPSBjdXJyZW50Q2hhcmFjdGVyKCk7Ci0gICAgc2hpZnQoKTsKLSAgICB3aGls
ZSAoaXNJZGVudFBhcnQobV9jdXJyZW50KSkKKyAgICAgICAgdG9rZW4gPSBET1Q7CisgICAgICAg
IGJyZWFrOworICAgIGNhc2UgQ2hhcmFjdGVyT3BlblBhcmVuOgorICAgICAgICB0b2tlbiA9IE9Q
RU5QQVJFTjsKICAgICAgICAgc2hpZnQoKTsKLSAgICBpZiAoTElLRUxZKG1fY3VycmVudCAhPSAn
XFwnKSkgewotICAgICAgICAvLyBGYXN0IGNhc2UgZm9yIGlkZW50cyB3aGljaCBkb2VzIG5vdCBj
b250YWluIFx1Q0NDQyBjaGFyYWN0ZXJzCi0gICAgICAgIGx2YWxwLT5pZGVudCA9IG1ha2VJZGVu
dGlmaWVyKGlkZW50aWZpZXJTdGFydCwgY3VycmVudENoYXJhY3RlcigpIC0gaWRlbnRpZmllclN0
YXJ0KTsKLSAgICAgICAgZ290byBkb25lSWRlbnRpZmllck9yS2V5d29yZDsKLSAgICB9Ci0gICAg
bV9idWZmZXIxNi5hcHBlbmQoaWRlbnRpZmllclN0YXJ0LCBjdXJyZW50Q2hhcmFjdGVyKCkgLSBp
ZGVudGlmaWVyU3RhcnQpOwotfQotCi0gICAgZG8geworICAgICAgICBicmVhazsKKyAgICBjYXNl
IENoYXJhY3RlckNsb3NlUGFyZW46CisgICAgICAgIHRva2VuID0gQ0xPU0VQQVJFTjsKICAgICAg
ICAgc2hpZnQoKTsKLSAgICAgICAgaWYgKFVOTElLRUxZKG1fY3VycmVudCAhPSAndScpKQotICAg
ICAgICAgICAgZ290byByZXR1cm5FcnJvcjsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBDaGFy
YWN0ZXJPcGVuQnJhY2tldDoKKyAgICAgICAgdG9rZW4gPSBPUEVOQlJBQ0tFVDsKKyAgICAgICAg
c2hpZnQoKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBDaGFyYWN0ZXJDbG9zZUJyYWNrZXQ6
CisgICAgICAgIHRva2VuID0gQ0xPU0VCUkFDS0VUOworICAgICAgICBzaGlmdCgpOworICAgICAg
ICBicmVhazsKKyAgICBjYXNlIENoYXJhY3RlckNvbW1hOgorICAgICAgICB0b2tlbiA9IENPTU1B
OworICAgICAgICBzaGlmdCgpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIENoYXJhY3RlckNv
bG9uOgorICAgICAgICB0b2tlbiA9IENPTE9OOworICAgICAgICBzaGlmdCgpOworICAgICAgICBi
cmVhazsKKyAgICBjYXNlIENoYXJhY3RlclF1ZXN0aW9uOgorICAgICAgICB0b2tlbiA9IFFVRVNU
SU9OOworICAgICAgICBzaGlmdCgpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIENoYXJhY3Rl
clRpbGRlOgorICAgICAgICB0b2tlbiA9IFRJTERFOworICAgICAgICBzaGlmdCgpOworICAgICAg
ICBicmVhazsKKyAgICBjYXNlIENoYXJhY3RlclNlbWljb2xvbjoKKyAgICAgICAgbV9kZWxpbWl0
ZWQgPSB0cnVlOworICAgICAgICBzaGlmdCgpOworICAgICAgICB0b2tlbiA9IFNFTUlDT0xPTjsK
KyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBDaGFyYWN0ZXJPcGVuQnJhY2U6CisgICAgICAgIGx2
YWxwLT5pbnRWYWx1ZSA9IGN1cnJlbnRPZmZzZXQoKTsKICAgICAgICAgc2hpZnQoKTsKLSAgICAg
ICAgaWRlbnRDaGFyID0gZ2V0VW5pY29kZUNoYXJhY3RlcigpOwotICAgICAgICBpZiAoVU5MSUtF
TFkoaWRlbnRDaGFyID09IC0xKSkKKyAgICAgICAgdG9rZW4gPSBPUEVOQlJBQ0U7CisgICAgICAg
IGJyZWFrOworICAgIGNhc2UgQ2hhcmFjdGVyQ2xvc2VCcmFjZToKKyAgICAgICAgbHZhbHAtPmlu
dFZhbHVlID0gY3VycmVudE9mZnNldCgpOworICAgICAgICBtX2RlbGltaXRlZCA9IHRydWU7Cisg
ICAgICAgIHNoaWZ0KCk7CisgICAgICAgIHRva2VuID0gQ0xPU0VCUkFDRTsKKyAgICAgICAgYnJl
YWs7CisgICAgY2FzZSBDaGFyYWN0ZXJaZXJvOgorICAgICAgICBnb3RvIHN0YXJ0TnVtYmVyV2l0
aFplcm9EaWdpdDsKKyAgICBjYXNlIENoYXJhY3Rlck51bWJlcjoKKyAgICAgICAgZ290byBzdGFy
dE51bWJlcjsKKyAgICBjYXNlIENoYXJhY3RlclF1b3RlOgorICAgICAgICBpZiAoVU5MSUtFTFko
IXBhcnNlU3RyaW5nKGx2YWxwKSkpCiAgICAgICAgICAgICBnb3RvIHJldHVybkVycm9yOwotICAg
ICAgICBpZiAoVU5MSUtFTFkoIWlzSWRlbnRQYXJ0KGlkZW50Q2hhcikpKQorICAgICAgICBzaGlm
dCgpOworICAgICAgICBtX2RlbGltaXRlZCA9IGZhbHNlOworICAgICAgICB0b2tlbiA9IFNUUklO
RzsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBDaGFyYWN0ZXJCYWNrU2xhc2g6CisgICAgY2Fz
ZSBDaGFyYWN0ZXJBbHBoYToKKyAgICAgICAgQVNTRVJUKGlzSWRlbnRTdGFydChtX2N1cnJlbnQp
IHx8IG1fY3VycmVudCA9PSAnXFwnKTsKKyAgICAgICAgdG9rZW4gPSBwYXJzZUlkZW50KGx2YWxw
KTsKKyAgICAgICAgaWYgKFVOTElLRUxZKHRva2VuID09IEVSUk9SVE9LKSkKICAgICAgICAgICAg
IGdvdG8gcmV0dXJuRXJyb3I7Ci1pbklkZW50aWZpZXJBZnRlckNoYXJhY3RlckNoZWNrOgotICAg
ICAgICByZWNvcmQxNihpZGVudENoYXIpOwotCi0gICAgICAgIHdoaWxlIChpc0lkZW50UGFydCht
X2N1cnJlbnQpKSB7Ci0gICAgICAgICAgICByZWNvcmQxNihtX2N1cnJlbnQpOwotICAgICAgICAg
ICAgc2hpZnQoKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBDaGFyYWN0ZXJMaW5lVGVybWlu
YXRvcjoKKyAgICAgICAgQVNTRVJUKGlzTGluZVRlcm1pbmF0b3IobV9jdXJyZW50KSk7CisgICAg
ICAgIHNoaWZ0TGluZVRlcm1pbmF0b3IoKTsKKyAgICAgICAgbV9hdExpbmVTdGFydCA9IHRydWU7
CisgICAgICAgIG1fdGVybWluYXRvciA9IHRydWU7CisgICAgICAgIGlmIChsYXN0VG9rZW5XYXNS
ZXN0cktleXdvcmQoKSkgeworICAgICAgICAgICAgdG9rZW4gPSBTRU1JQ09MT047CisgICAgICAg
ICAgICBnb3RvIGRvbmVTZW1pY29sb247CiAgICAgICAgIH0KLSAgICB9IHdoaWxlIChVTkxJS0VM
WShtX2N1cnJlbnQgPT0gJ1xcJykpOwotICAgIGdvdG8gZG9uZUlkZW50aWZpZXI7CisgICAgICAg
IGdvdG8gc3RhcnQ7CisgICAgY2FzZSBDaGFyYWN0ZXJJbnZhbGlkOgorICAgICAgICBnb3RvIHJl
dHVybkVycm9yOworICAgIGRlZmF1bHQ6CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwor
ICAgICAgICBnb3RvIHJldHVybkVycm9yOworICAgIH0KKworICAgIG1fYXRMaW5lU3RhcnQgPSBm
YWxzZTsKKyAgICBnb3RvIHJldHVyblRva2VuOwogCiBpblNpbmdsZUxpbmVDb21tZW50OgogICAg
IHdoaWxlICghaXNMaW5lVGVybWluYXRvcihtX2N1cnJlbnQpKSB7CkBAIC04NDgsMjggKzg4MCw2
IEBAIGluU2luZ2xlTGluZUNvbW1lbnQ6CiAgICAgICAgIGdvdG8gZG9uZVNlbWljb2xvbjsKICAg
ICBnb3RvIHN0YXJ0OwogCi1pbk11bHRpTGluZUNvbW1lbnQ6Ci0gICAgd2hpbGUgKHRydWUpIHsK
LSAgICAgICAgaWYgKFVOTElLRUxZKG1fY3VycmVudCA9PSAnKicpKSB7Ci0gICAgICAgICAgICBz
aGlmdCgpOwotICAgICAgICAgICAgaWYgKG1fY3VycmVudCA9PSAnLycpCi0gICAgICAgICAgICAg
ICAgYnJlYWs7Ci0gICAgICAgICAgICBpZiAobV9jdXJyZW50ID09ICcqJykKLSAgICAgICAgICAg
ICAgICBjb250aW51ZTsKLSAgICAgICAgfQotCi0gICAgICAgIGlmIChVTkxJS0VMWShtX2N1cnJl
bnQgPT0gLTEpKQotICAgICAgICAgICAgZ290byByZXR1cm5FcnJvcjsKLQotICAgICAgICBpZiAo
aXNMaW5lVGVybWluYXRvcihtX2N1cnJlbnQpKQotICAgICAgICAgICAgc2hpZnRMaW5lVGVybWlu
YXRvcigpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBzaGlmdCgpOwotICAgIH0KLSAgICBz
aGlmdCgpOwotICAgIG1fYXRMaW5lU3RhcnQgPSBmYWxzZTsKLSAgICBnb3RvIHN0YXJ0OwotCiBz
dGFydE51bWJlcldpdGhaZXJvRGlnaXQ6CiAgICAgc2hpZnQoKTsKICAgICBpZiAoKG1fY3VycmVu
dCB8IDB4MjApID09ICd4JyAmJiBpc0FTQ0lJSGV4RGlnaXQocGVlaygxKSkpIHsKQEAgLTEwMDcs
MjUgKzEwMTcsNyBAQCBkb25lTnVtZXJpYzoKIGRvbmVTZW1pY29sb246CiAgICAgdG9rZW4gPSBT
RU1JQ09MT047CiAgICAgbV9kZWxpbWl0ZWQgPSB0cnVlOwotICAgIGdvdG8gcmV0dXJuVG9rZW47
Ci0KLWRvbmVJZGVudGlmaWVyOgotICAgIG1fYXRMaW5lU3RhcnQgPSBmYWxzZTsKLSAgICBtX2Rl
bGltaXRlZCA9IGZhbHNlOwotICAgIGx2YWxwLT5pZGVudCA9IG1ha2VJZGVudGlmaWVyKG1fYnVm
ZmVyMTYuZGF0YSgpLCBtX2J1ZmZlcjE2LnNpemUoKSk7Ci0gICAgbV9idWZmZXIxNi5yZXNpemUo
MCk7Ci0gICAgdG9rZW4gPSBJREVOVDsKLSAgICBnb3RvIHJldHVyblRva2VuOwotCi1kb25lSWRl
bnRpZmllck9yS2V5d29yZDogewotICAgIG1fYXRMaW5lU3RhcnQgPSBmYWxzZTsKLSAgICBtX2Rl
bGltaXRlZCA9IGZhbHNlOwotICAgIG1fYnVmZmVyMTYucmVzaXplKDApOwotICAgIGNvbnN0IEhh
c2hFbnRyeSogZW50cnkgPSBtX2tleXdvcmRUYWJsZS5lbnRyeShtX2dsb2JhbERhdGEsICpsdmFs
cC0+aWRlbnQpOwotICAgIHRva2VuID0gZW50cnkgPyBzdGF0aWNfY2FzdDxKU1Rva2VuVHlwZT4o
ZW50cnktPmxleGVyVmFsdWUoKSkgOiBJREVOVDsKLQogICAgIC8vIEZhbGwgdGhyb3VnaCBpbnRv
IHJldHVyblRva2VuLgotfQogCiByZXR1cm5Ub2tlbjogewogICAgIGludCBsaW5lTnVtYmVyID0g
bV9saW5lTnVtYmVyOwpkaWZmIC0tZ2l0IGEvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0xleGVyLmgg
Yi9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTGV4ZXIuaAppbmRleCA1YWI3YWQ3Li5mMDQzMDk2IDEw
MDY0NAotLS0gYS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTGV4ZXIuaAorKysgYi9KYXZhU2NyaXB0
Q29yZS9wYXJzZXIvTGV4ZXIuaApAQCAtOTMsNiArOTMsOCBAQCBuYW1lc3BhY2UgSlNDIHsKIAog
ICAgICAgICBBTFdBWVNfSU5MSU5FIGJvb2wgbGFzdFRva2VuV2FzUmVzdHJLZXl3b3JkKCkgY29u
c3Q7CiAKKyAgICAgICAgQUxXQVlTX0lOTElORSBib29sIHBhcnNlTXVsdGlMaW5lQ29tbWVudCgp
OworICAgICAgICBBTFdBWVNfSU5MSU5FIEpTVG9rZW5UeXBlIHBhcnNlSWRlbnQoSlNUb2tlbkRh
dGEqIGx2YWxwKTsKICAgICAgICAgQUxXQVlTX0lOTElORSBib29sIHBhcnNlU3RyaW5nKEpTVG9r
ZW5EYXRhKiBsdmFscCk7CiAKICAgICAgICAgc3RhdGljIGNvbnN0IHNpemVfdCBpbml0aWFsUmVh
ZEJ1ZmZlckNhcGFjaXR5ID0gMzI7Ci0tIAoxLjYuMC40Cgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>61361</attachid>
            <date>2010-07-13 05:55:55 -0700</date>
            <delta_ts>2010-07-14 00:44:56 -0700</delta_ts>
            <desc>style patch</desc>
            <filename>0001-lexer-stlye.patch</filename>
            <type>text/plain</type>
            <size>18906</size>
            <attacher name="Zoltan Herczeg">zherczeg</attacher>
            
              <data encoding="base64">RnJvbSAwM2ZmMzE4MmI4OWVkNzQ0NjI3OThiY2ZjYmZhMzk1YTNiMTk1NmFjIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBab2x0YW4gSGVyY3plZyA8emhlcmN6ZWdAaW5mLnUtc3plZ2Vk
Lmh1PgpEYXRlOiBUdWUsIDEzIEp1bCAyMDEwIDE0OjUyOjU3ICswMjAwClN1YmplY3Q6IFtQQVRD
SF0gbGV4ZXItc3RseWUKClNpZ25lZC1vZmYtYnk6IFpvbHRhbiBIZXJjemVnIDx6aGVyY3plZ0Bp
bmYudS1zemVnZWQuaHU+Ci0tLQogSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nICAgICAgICB8ICAg
MjMgKysKIEphdmFTY3JpcHRDb3JlL3BhcnNlci9MZXhlci5jcHAgfCAgNDkzICsrKysrKysrKysr
KysrKysrKystLS0tLS0tLS0tLS0tLS0tLS0tLQogMiBmaWxlcyBjaGFuZ2VkLCAyNjkgaW5zZXJ0
aW9ucygrKSwgMjQ3IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL0No
YW5nZUxvZyBiL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAwYWNjY2M4Li45OTliZTJj
IDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKKysrIGIvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjYgQEAKKzIwMTAtMDctMTMgIFpvbHRhbiBIZXJjemVn
ICA8emhlcmN6ZWdAd2Via2l0Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBSZWZhY3RvcmluZyBzb21lIHBhcnRzIG9mIHRoZSBsZXhlcgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDE4NDUKKworICAg
ICAgICBUaGlzIHBhdGNoIGlzIGEgcGVyY3Vyc29yIG9mIHJlZmFjdG9yaW5nIHRoZSBpZGVudGlm
aWVyCisgICAgICAgIHBhcnNpbmcsIHdoaWNoIGN1cnJlbnRseSBzbG93cyBkb3duIHRoZSBsZXhl
ciwgYW5kIG5vdAorICAgICAgICByZWFkeSBmb3IgbGFuZGluZy4gVGhpcyBwYXRjaCBjb250YWlu
cyB0aG9zZSBzb3VyY2VzLAorICAgICAgICB3aGljaCBkb2VzIG5vdCBzbG93IGRvd24gdGhlIGxl
eGVyIChtYWlubHkgc3R5bGUgY2hhbmdlcykuCisKKyAgICAgICAgU3VuU3BpZGVyOiBubyBjaGFu
Z2UgKDUyOS40bXMgdG8gNTI4LjdtcykKKyAgICAgICAgLS1wYXJzZS1vbmx5OiBubyBjaGFuZ2Ug
KDMxLjBtcyB0byAzMS4ybXMpCisKKyAgICAgICAgKiBwYXJzZXIvTGV4ZXIuY3BwOgorICAgICAg
ICAoSlNDOjopOgorICAgICAgICAoSlNDOjppc0lkZW50U3RhcnQpOiB1c2luZyBhc2NpaUNoYXJh
Y3RlcnMgYXJyYXkgZm9yIHR5cGUgY2hlY2tpbmcKKyAgICAgICAgKEpTQzo6aXNJZGVudFBhcnQp
OiB1c2luZyBhc2NpaUNoYXJhY3RlcnMgYXJyYXkgZm9yIHR5cGUgY2hlY2tpbmcKKyAgICAgICAg
KEpTQzo6c2luZ2xlRXNjYXBlKTogc3R5bGUgZXJyb3IKKyAgICAgICAgKEpTQzo6TGV4ZXI6OnBh
cnNlU3RyaW5nKTogc3R5bGUgZXJyb3IKKyAgICAgICAgKEpTQzo6TGV4ZXI6OmxleCk6IHJlbW92
aW5nIHRoZSBlbHNlIHRvIGF2b2lkIGNvZGUgZHVwbGljYXRpb24KKwogMjAxMC0wNy0wOSAgRGFy
aW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgR2VvZmZy
ZXkgR2FyZW4uCmRpZmYgLS1naXQgYS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTGV4ZXIuY3BwIGIv
SmF2YVNjcmlwdENvcmUvcGFyc2VyL0xleGVyLmNwcAppbmRleCA0NWZlMDA3Li5hMDBmNTBiIDEw
MDY0NAotLS0gYS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTGV4ZXIuY3BwCisrKyBiL0phdmFTY3Jp
cHRDb3JlL3BhcnNlci9MZXhlci5jcHAKQEAgLTQ4LDEyICs0OCwxNCBAQCBuYW1lc3BhY2UgSlND
IHsKIAogZW51bSBDaGFyYWN0ZXJUeXBlcyB7CiAgICAgLy8gVHlwZXMgZm9yIHRoZSBtYWluIHN3
aXRjaAotICAgIENoYXJhY3RlckludmFsaWQsCiAKKyAgICAvLyBUaGUgZmlyc3QgZnJlZSB0eXBl
cyBhcmUgZml4ZWQsIGFuZCBhbHNvIHVzZWQgZm9yCisgICAgLy8gaWRlbnRpZnlpbmcgYXNjaWkg
YWxwaGEgYW5kIGFscGhhbnVtZXJpYyBjaGFyYWN0ZXJzCiAgICAgQ2hhcmFjdGVyQWxwaGEsCiAg
ICAgQ2hhcmFjdGVyWmVybywKICAgICBDaGFyYWN0ZXJOdW1iZXIsCiAKKyAgICBDaGFyYWN0ZXJJ
bnZhbGlkLAogICAgIENoYXJhY3RlckxpbmVUZXJtaW5hdG9yLAogICAgIENoYXJhY3RlckV4Y2xh
bWF0aW9uTWFyaywKICAgICBDaGFyYWN0ZXJPcGVuUGFyZW4sCkBAIC04OCw3ICs5MCw3IEBAIGVu
dW0gQ2hhcmFjdGVyVHlwZXMgewogfTsKIAogLy8gMTI4IGFzY2lpIGNvZGVzCi1zdGF0aWMgdW5z
aWduZWQgc2hvcnQgQXNjaWlDaGFyYWN0ZXJzWzEyOF0gPSB7CitzdGF0aWMgdW5zaWduZWQgc2hv
cnQgYXNjaWlDaGFyYWN0ZXJzWzEyOF0gPSB7CiAvKiAgIDAgLSBOdWxsICAgICAgICAgICAgICAg
Ki8gQ2hhcmFjdGVySW52YWxpZCwKIC8qICAgMSAtIFN0YXJ0IG9mIEhlYWRpbmcgICAqLyBDaGFy
YWN0ZXJJbnZhbGlkLAogLyogICAyIC0gU3RhcnQgb2YgVGV4dCAgICAgICovIENoYXJhY3Rlcklu
dmFsaWQsCkBAIC0zMzUsNyArMzM3LDcgQEAgc3RhdGljIE5FVkVSX0lOTElORSBib29sIGlzTm9u
QVNDSUlJZGVudFN0YXJ0KGludCBjKQogCiBzdGF0aWMgaW5saW5lIGJvb2wgaXNJZGVudFN0YXJ0
KGludCBjKQogewotICAgIHJldHVybiBpc0FTQ0lJKGMpID8gaXNBU0NJSUFscGhhKGMpIHx8IGMg
PT0gJyQnIHx8IGMgPT0gJ18nIDogaXNOb25BU0NJSUlkZW50U3RhcnQoYyk7CisgICAgcmV0dXJu
IGlzQVNDSUkoYykgPyBhc2NpaUNoYXJhY3RlcnNbY10gPT0gQ2hhcmFjdGVyQWxwaGEgOiBpc05v
bkFTQ0lJSWRlbnRTdGFydChjKTsKIH0KIAogc3RhdGljIE5FVkVSX0lOTElORSBib29sIGlzTm9u
QVNDSUlJZGVudFBhcnQoaW50IGMpCkBAIC0zNDYsMzIgKzM0OCwzMiBAQCBzdGF0aWMgTkVWRVJf
SU5MSU5FIGJvb2wgaXNOb25BU0NJSUlkZW50UGFydChpbnQgYykKIAogc3RhdGljIGlubGluZSBi
b29sIGlzSWRlbnRQYXJ0KGludCBjKQogewotICAgIHJldHVybiBpc0FTQ0lJKGMpID8gaXNBU0NJ
SUFscGhhbnVtZXJpYyhjKSB8fCBjID09ICckJyB8fCBjID09ICdfJyA6IGlzTm9uQVNDSUlJZGVu
dFBhcnQoYyk7CisgICAgcmV0dXJuIGlzQVNDSUkoYykgPyBhc2NpaUNoYXJhY3RlcnNbY10gPD0g
Q2hhcmFjdGVyTnVtYmVyIDogaXNOb25BU0NJSUlkZW50UGFydChjKTsKIH0KIAogc3RhdGljIGlu
bGluZSBpbnQgc2luZ2xlRXNjYXBlKGludCBjKQogewogICAgIHN3aXRjaCAoYykgewotICAgICAg
ICBjYXNlICdiJzoKLSAgICAgICAgICAgIHJldHVybiAweDA4OwotICAgICAgICBjYXNlICd0JzoK
LSAgICAgICAgICAgIHJldHVybiAweDA5OwotICAgICAgICBjYXNlICduJzoKLSAgICAgICAgICAg
IHJldHVybiAweDBBOwotICAgICAgICBjYXNlICd2JzoKLSAgICAgICAgICAgIHJldHVybiAweDBC
OwotICAgICAgICBjYXNlICdmJzoKLSAgICAgICAgICAgIHJldHVybiAweDBDOwotICAgICAgICBj
YXNlICdyJzoKLSAgICAgICAgICAgIHJldHVybiAweDBEOwotICAgICAgICBjYXNlICdcXCc6Ci0g
ICAgICAgICAgICByZXR1cm4gJ1xcJzsKLSAgICAgICAgY2FzZSAnXCcnOgotICAgICAgICAgICAg
cmV0dXJuICdcJyc7Ci0gICAgICAgIGNhc2UgJyInOgotICAgICAgICAgICAgcmV0dXJuICciJzsK
LSAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIHJldHVybiAwOworICAgIGNhc2UgJ2InOgor
ICAgICAgICByZXR1cm4gMHgwODsKKyAgICBjYXNlICd0JzoKKyAgICAgICAgcmV0dXJuIDB4MDk7
CisgICAgY2FzZSAnbic6CisgICAgICAgIHJldHVybiAweDBBOworICAgIGNhc2UgJ3YnOgorICAg
ICAgICByZXR1cm4gMHgwQjsKKyAgICBjYXNlICdmJzoKKyAgICAgICAgcmV0dXJuIDB4MEM7Cisg
ICAgY2FzZSAncic6CisgICAgICAgIHJldHVybiAweDBEOworICAgIGNhc2UgJ1xcJzoKKyAgICAg
ICAgcmV0dXJuICdcXCc7CisgICAgY2FzZSAnXCcnOgorICAgICAgICByZXR1cm4gJ1wnJzsKKyAg
ICBjYXNlICciJzoKKyAgICAgICAgcmV0dXJuICciJzsKKyAgICBkZWZhdWx0OgorICAgICAgICBy
ZXR1cm4gMDsKICAgICB9CiB9CiAKQEAgLTQ1Niw3ICs0NTgsOCBAQCBBTFdBWVNfSU5MSU5FIGJv
b2wgTGV4ZXI6OnBhcnNlU3RyaW5nKEpTVG9rZW5EYXRhKiBsdmFscCkKIAogICAgICAgICAgICAg
c3RyaW5nU3RhcnQgPSBjdXJyZW50Q2hhcmFjdGVyKCk7CiAgICAgICAgICAgICBjb250aW51ZTsK
LSAgICAgICAgfSBlbHNlIGlmIChVTkxJS0VMWSgoKHN0YXRpY19jYXN0PHVuc2lnbmVkPihtX2N1
cnJlbnQpIC0gMHhFKSAmIDB4MjAwMCkpKSB7CisgICAgICAgIH0KKyAgICAgICAgaWYgKFVOTElL
RUxZKCgoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG1fY3VycmVudCkgLSAweEUpICYgMHgyMDAwKSkp
IHsKICAgICAgICAgICAgIC8vIE5ldy1saW5lIG9yIGVuZCBvZiBpbnB1dCBpcyBub3QgYWxsb3dl
ZAogICAgICAgICAgICAgaWYgKFVOTElLRUxZKGlzTGluZVRlcm1pbmF0b3IobV9jdXJyZW50KSkg
fHwgVU5MSUtFTFkobV9jdXJyZW50ID09IC0xKSkKICAgICAgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CkBAIC00OTMsMjk1ICs0OTYsMjkxIEBAIHN0YXJ0OgogCiAgICAgbV9kZWxpbWl0ZWQgPSBm
YWxzZTsKIAotICAgIGlmIChpc0FTQ0lJKG1fY3VycmVudCkpIHsKLSAgICAgICAgQVNTRVJUKG1f
Y3VycmVudCA+PSAwICYmIG1fY3VycmVudCA8IDEyOCk7CisgICAgLy8gdGVtcG9yYXJ5IGNvbnRh
aW5zIGFuIGFzY2lpIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBjb2RlCisgICAgLy8gaGVscHMgdG8g
YXZvaWQgY29kZSBkdXBsaWNhdGlvbgorICAgIGludCBhc2NpaUNoYXJhY3RlcjsKKyAgICBpZiAo
TElLRUxZKGlzQVNDSUkobV9jdXJyZW50KSkpCisgICAgICAgIGFzY2lpQ2hhcmFjdGVyID0gbV9j
dXJyZW50OworICAgIGVsc2UgeworICAgICAgICBpZiAoaXNOb25BU0NJSUlkZW50U3RhcnQobV9j
dXJyZW50KSkKKyAgICAgICAgICAgIGFzY2lpQ2hhcmFjdGVyID0gJ2EnOworICAgICAgICBlbHNl
IGlmIChpc0xpbmVUZXJtaW5hdG9yKG1fY3VycmVudCkpCisgICAgICAgICAgICBhc2NpaUNoYXJh
Y3RlciA9ICdcbic7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGdvdG8gcmV0dXJuRXJyb3I7
CisgICAgfQogCi0gICAgICAgIHN3aXRjaCAoQXNjaWlDaGFyYWN0ZXJzW21fY3VycmVudF0pIHsK
LSAgICAgICAgY2FzZSBDaGFyYWN0ZXJHcmVhdGVyOgorICAgIHN3aXRjaCAoYXNjaWlDaGFyYWN0
ZXJzW2FzY2lpQ2hhcmFjdGVyXSkgeworICAgIGNhc2UgQ2hhcmFjdGVyR3JlYXRlcjoKKyAgICAg
ICAgc2hpZnQoKTsKKyAgICAgICAgaWYgKG1fY3VycmVudCA9PSAnPicpIHsKICAgICAgICAgICAg
IHNoaWZ0KCk7CiAgICAgICAgICAgICBpZiAobV9jdXJyZW50ID09ICc+JykgewogICAgICAgICAg
ICAgICAgIHNoaWZ0KCk7Ci0gICAgICAgICAgICAgICAgaWYgKG1fY3VycmVudCA9PSAnPicpIHsK
LSAgICAgICAgICAgICAgICAgICAgc2hpZnQoKTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKG1f
Y3VycmVudCA9PSAnPScpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHNoaWZ0KCk7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICB0b2tlbiA9IFVSU0hJRlRFUVVBTDsKLSAgICAgICAgICAgICAg
ICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAg
ICAgIHRva2VuID0gVVJTSElGVDsKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAg
ICAgICAgICAgfQotICAgICAgICAgICAgICAgIGlmIChtX2N1cnJlbnQgPT0gJz0nKSB7Ci0gICAg
ICAgICAgICAgICAgICAgIHNoaWZ0KCk7Ci0gICAgICAgICAgICAgICAgICAgIHRva2VuID0gUlNI
SUZURVFVQUw7Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIH0K
LSAgICAgICAgICAgICAgICB0b2tlbiA9IFJTSElGVDsKLSAgICAgICAgICAgICAgICBicmVhazsK
LSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmIChtX2N1cnJlbnQgPT0gJz0nKSB7Ci0gICAg
ICAgICAgICAgICAgc2hpZnQoKTsKLSAgICAgICAgICAgICAgICB0b2tlbiA9IEdFOwotICAgICAg
ICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgdG9rZW4gPSBHVDsK
LSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIENoYXJhY3RlckVxdWFsOgotICAgICAg
ICAgICAgc2hpZnQoKTsKLSAgICAgICAgICAgIGlmIChtX2N1cnJlbnQgPT0gJz0nKSB7Ci0gICAg
ICAgICAgICAgICAgc2hpZnQoKTsKLSAgICAgICAgICAgICAgICBpZiAobV9jdXJyZW50ID09ICc9
JykgewotICAgICAgICAgICAgICAgICAgICBzaGlmdCgpOwotICAgICAgICAgICAgICAgICAgICB0
b2tlbiA9IFNUUkVROwotICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAg
ICB9Ci0gICAgICAgICAgICAgICAgdG9rZW4gPSBFUUVROwotICAgICAgICAgICAgICAgIGJyZWFr
OwotICAgICAgICAgICAgfQotICAgICAgICAgICAgdG9rZW4gPSBFUVVBTDsKLSAgICAgICAgICAg
IGJyZWFrOwotICAgICAgICBjYXNlIENoYXJhY3Rlckxlc3M6Ci0gICAgICAgICAgICBzaGlmdCgp
OwotICAgICAgICAgICAgaWYgKG1fY3VycmVudCA9PSAnIScgJiYgcGVlaygxKSA9PSAnLScgJiYg
cGVlaygyKSA9PSAnLScpIHsKLSAgICAgICAgICAgICAgICAvLyA8IS0tIG1hcmtzIHRoZSBiZWdp
bm5pbmcgb2YgYSBsaW5lIGNvbW1lbnQgKGZvciB3d3cgdXNhZ2UpCi0gICAgICAgICAgICAgICAg
Z290byBpblNpbmdsZUxpbmVDb21tZW50OwotICAgICAgICAgICAgfQotICAgICAgICAgICAgaWYg
KG1fY3VycmVudCA9PSAnPCcpIHsKLSAgICAgICAgICAgICAgICBzaGlmdCgpOwogICAgICAgICAg
ICAgICAgIGlmIChtX2N1cnJlbnQgPT0gJz0nKSB7CiAgICAgICAgICAgICAgICAgICAgIHNoaWZ0
KCk7Ci0gICAgICAgICAgICAgICAgICAgIHRva2VuID0gTFNISUZURVFVQUw7CisgICAgICAgICAg
ICAgICAgICAgIHRva2VuID0gVVJTSElGVEVRVUFMOwogICAgICAgICAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgdG9rZW4gPSBMU0hJRlQ7Cisg
ICAgICAgICAgICAgICAgdG9rZW4gPSBVUlNISUZUOwogICAgICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICAgICAgfQogICAgICAgICAgICAgaWYgKG1fY3VycmVudCA9PSAnPScpIHsKICAgICAg
ICAgICAgICAgICBzaGlmdCgpOwotICAgICAgICAgICAgICAgIHRva2VuID0gTEU7CisgICAgICAg
ICAgICAgICAgdG9rZW4gPSBSU0hJRlRFUVVBTDsKICAgICAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgICAgIH0KLSAgICAgICAgICAgIHRva2VuID0gTFQ7CisgICAgICAgICAgICB0b2tlbiA9
IFJTSElGVDsKICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIENoYXJhY3RlckV4Y2xh
bWF0aW9uTWFyazoKLSAgICAgICAgICAgIHNoaWZ0KCk7Ci0gICAgICAgICAgICBpZiAobV9jdXJy
ZW50ID09ICc9JykgewotICAgICAgICAgICAgICAgIHNoaWZ0KCk7Ci0gICAgICAgICAgICAgICAg
aWYgKG1fY3VycmVudCA9PSAnPScpIHsKLSAgICAgICAgICAgICAgICAgICAgc2hpZnQoKTsKLSAg
ICAgICAgICAgICAgICAgICAgdG9rZW4gPSBTVFJORVE7Ci0gICAgICAgICAgICAgICAgICAgIGJy
ZWFrOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB0b2tlbiA9IE5FOwotICAg
ICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgdG9rZW4gPSBF
WENMQU1BVElPTjsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIENoYXJhY3RlckFk
ZDoKKyAgICAgICAgfQorICAgICAgICBpZiAobV9jdXJyZW50ID09ICc9JykgewogICAgICAgICAg
ICAgc2hpZnQoKTsKLSAgICAgICAgICAgIGlmIChtX2N1cnJlbnQgPT0gJysnKSB7Ci0gICAgICAg
ICAgICAgICAgc2hpZnQoKTsKLSAgICAgICAgICAgICAgICB0b2tlbiA9ICghbV90ZXJtaW5hdG9y
KSA/IFBMVVNQTFVTIDogQVVUT1BMVVNQTFVTOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAg
ICAgICAgICAgfQotICAgICAgICAgICAgaWYgKG1fY3VycmVudCA9PSAnPScpIHsKLSAgICAgICAg
ICAgICAgICBzaGlmdCgpOwotICAgICAgICAgICAgICAgIHRva2VuID0gUExVU0VRVUFMOwotICAg
ICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgdG9rZW4gPSBQ
TFVTOworICAgICAgICAgICAgdG9rZW4gPSBHRTsKICAgICAgICAgICAgIGJyZWFrOwotICAgICAg
ICBjYXNlIENoYXJhY3RlclN1YjoKKyAgICAgICAgfQorICAgICAgICB0b2tlbiA9IEdUOworICAg
ICAgICBicmVhazsKKyAgICBjYXNlIENoYXJhY3RlckVxdWFsOgorICAgICAgICBzaGlmdCgpOwor
ICAgICAgICBpZiAobV9jdXJyZW50ID09ICc9JykgewogICAgICAgICAgICAgc2hpZnQoKTsKLSAg
ICAgICAgICAgIGlmIChtX2N1cnJlbnQgPT0gJy0nKSB7Ci0gICAgICAgICAgICAgICAgc2hpZnQo
KTsKLSAgICAgICAgICAgICAgICBpZiAobV9hdExpbmVTdGFydCAmJiBtX2N1cnJlbnQgPT0gJz4n
KSB7Ci0gICAgICAgICAgICAgICAgICAgIHNoaWZ0KCk7Ci0gICAgICAgICAgICAgICAgICAgIGdv
dG8gaW5TaW5nbGVMaW5lQ29tbWVudDsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAg
ICAgdG9rZW4gPSAoIW1fdGVybWluYXRvcikgPyBNSU5VU01JTlVTIDogQVVUT01JTlVTTUlOVVM7
Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9CiAgICAgICAgICAgICBpZiAo
bV9jdXJyZW50ID09ICc9JykgewogICAgICAgICAgICAgICAgIHNoaWZ0KCk7Ci0gICAgICAgICAg
ICAgICAgdG9rZW4gPSBNSU5VU0VRVUFMOworICAgICAgICAgICAgICAgIHRva2VuID0gU1RSRVE7
CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB0b2tl
biA9IE1JTlVTOworICAgICAgICAgICAgdG9rZW4gPSBFUUVROwogICAgICAgICAgICAgYnJlYWs7
Ci0gICAgICAgIGNhc2UgQ2hhcmFjdGVyTXVsdGlwbHk6CisgICAgICAgIH0KKyAgICAgICAgdG9r
ZW4gPSBFUVVBTDsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBDaGFyYWN0ZXJMZXNzOgorICAg
ICAgICBzaGlmdCgpOworICAgICAgICBpZiAobV9jdXJyZW50ID09ICchJyAmJiBwZWVrKDEpID09
ICctJyAmJiBwZWVrKDIpID09ICctJykgeworICAgICAgICAgICAgLy8gPCEtLSBtYXJrcyB0aGUg
YmVnaW5uaW5nIG9mIGEgbGluZSBjb21tZW50IChmb3Igd3d3IHVzYWdlKQorICAgICAgICAgICAg
Z290byBpblNpbmdsZUxpbmVDb21tZW50OworICAgICAgICB9CisgICAgICAgIGlmIChtX2N1cnJl
bnQgPT0gJzwnKSB7CiAgICAgICAgICAgICBzaGlmdCgpOwogICAgICAgICAgICAgaWYgKG1fY3Vy
cmVudCA9PSAnPScpIHsKICAgICAgICAgICAgICAgICBzaGlmdCgpOwotICAgICAgICAgICAgICAg
IHRva2VuID0gTVVMVEVRVUFMOworICAgICAgICAgICAgICAgIHRva2VuID0gTFNISUZURVFVQUw7
CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB0b2tl
biA9IFRJTUVTOworICAgICAgICAgICAgdG9rZW4gPSBMU0hJRlQ7CiAgICAgICAgICAgICBicmVh
azsKLSAgICAgICAgY2FzZSBDaGFyYWN0ZXJTbGFzaDoKKyAgICAgICAgfQorICAgICAgICBpZiAo
bV9jdXJyZW50ID09ICc9JykgewogICAgICAgICAgICAgc2hpZnQoKTsKLSAgICAgICAgICAgIGlm
IChtX2N1cnJlbnQgPT0gJy8nKSB7Ci0gICAgICAgICAgICAgICAgc2hpZnQoKTsKLSAgICAgICAg
ICAgICAgICBnb3RvIGluU2luZ2xlTGluZUNvbW1lbnQ7Ci0gICAgICAgICAgICB9Ci0gICAgICAg
ICAgICBpZiAobV9jdXJyZW50ID09ICcqJykgewotICAgICAgICAgICAgICAgIHNoaWZ0KCk7Ci0g
ICAgICAgICAgICAgICAgZ290byBpbk11bHRpTGluZUNvbW1lbnQ7Ci0gICAgICAgICAgICB9Ci0g
ICAgICAgICAgICBpZiAobV9jdXJyZW50ID09ICc9JykgewotICAgICAgICAgICAgICAgIHNoaWZ0
KCk7Ci0gICAgICAgICAgICAgICAgdG9rZW4gPSBESVZFUVVBTDsKLSAgICAgICAgICAgICAgICBi
cmVhazsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHRva2VuID0gRElWSURFOworICAgICAg
ICAgICAgdG9rZW4gPSBMRTsKICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIENoYXJh
Y3RlckFuZDoKKyAgICAgICAgfQorICAgICAgICB0b2tlbiA9IExUOworICAgICAgICBicmVhazsK
KyAgICBjYXNlIENoYXJhY3RlckV4Y2xhbWF0aW9uTWFyazoKKyAgICAgICAgc2hpZnQoKTsKKyAg
ICAgICAgaWYgKG1fY3VycmVudCA9PSAnPScpIHsKICAgICAgICAgICAgIHNoaWZ0KCk7Ci0gICAg
ICAgICAgICBpZiAobV9jdXJyZW50ID09ICcmJykgewotICAgICAgICAgICAgICAgIHNoaWZ0KCk7
Ci0gICAgICAgICAgICAgICAgdG9rZW4gPSBBTkQ7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0g
ICAgICAgICAgICB9CiAgICAgICAgICAgICBpZiAobV9jdXJyZW50ID09ICc9JykgewogICAgICAg
ICAgICAgICAgIHNoaWZ0KCk7Ci0gICAgICAgICAgICAgICAgdG9rZW4gPSBBTkRFUVVBTDsKKyAg
ICAgICAgICAgICAgICB0b2tlbiA9IFNUUk5FUTsKICAgICAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgICAgIH0KLSAgICAgICAgICAgIHRva2VuID0gQklUQU5EOworICAgICAgICAgICAgdG9r
ZW4gPSBORTsKICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIENoYXJhY3RlclhvcjoK
KyAgICAgICAgfQorICAgICAgICB0b2tlbiA9IEVYQ0xBTUFUSU9OOworICAgICAgICBicmVhazsK
KyAgICBjYXNlIENoYXJhY3RlckFkZDoKKyAgICAgICAgc2hpZnQoKTsKKyAgICAgICAgaWYgKG1f
Y3VycmVudCA9PSAnKycpIHsKICAgICAgICAgICAgIHNoaWZ0KCk7Ci0gICAgICAgICAgICBpZiAo
bV9jdXJyZW50ID09ICc9JykgewotICAgICAgICAgICAgICAgIHNoaWZ0KCk7Ci0gICAgICAgICAg
ICAgICAgdG9rZW4gPSBYT1JFUVVBTDsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAg
ICAgIH0KLSAgICAgICAgICAgIHRva2VuID0gQklUWE9SOworICAgICAgICAgICAgdG9rZW4gPSAo
IW1fdGVybWluYXRvcikgPyBQTFVTUExVUyA6IEFVVE9QTFVTUExVUzsKICAgICAgICAgICAgIGJy
ZWFrOwotICAgICAgICBjYXNlIENoYXJhY3Rlck1vZHVsbzoKKyAgICAgICAgfQorICAgICAgICBp
ZiAobV9jdXJyZW50ID09ICc9JykgewogICAgICAgICAgICAgc2hpZnQoKTsKLSAgICAgICAgICAg
IGlmIChtX2N1cnJlbnQgPT0gJz0nKSB7Ci0gICAgICAgICAgICAgICAgc2hpZnQoKTsKLSAgICAg
ICAgICAgICAgICB0b2tlbiA9IE1PREVRVUFMOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAg
ICAgICAgICAgfQotICAgICAgICAgICAgdG9rZW4gPSBNT0Q7CisgICAgICAgICAgICB0b2tlbiA9
IFBMVVNFUVVBTDsKICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIENoYXJhY3Rlck9y
OgorICAgICAgICB9CisgICAgICAgIHRva2VuID0gUExVUzsKKyAgICAgICAgYnJlYWs7CisgICAg
Y2FzZSBDaGFyYWN0ZXJTdWI6CisgICAgICAgIHNoaWZ0KCk7CisgICAgICAgIGlmIChtX2N1cnJl
bnQgPT0gJy0nKSB7CiAgICAgICAgICAgICBzaGlmdCgpOwotICAgICAgICAgICAgaWYgKG1fY3Vy
cmVudCA9PSAnPScpIHsKKyAgICAgICAgICAgIGlmIChtX2F0TGluZVN0YXJ0ICYmIG1fY3VycmVu
dCA9PSAnPicpIHsKICAgICAgICAgICAgICAgICBzaGlmdCgpOwotICAgICAgICAgICAgICAgIHRv
a2VuID0gT1JFUVVBTDsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIH0KLSAg
ICAgICAgICAgIGlmIChtX2N1cnJlbnQgPT0gJ3wnKSB7Ci0gICAgICAgICAgICAgICAgc2hpZnQo
KTsKLSAgICAgICAgICAgICAgICB0b2tlbiA9IE9SOwotICAgICAgICAgICAgICAgIGJyZWFrOwot
ICAgICAgICAgICAgfQotICAgICAgICAgICAgdG9rZW4gPSBCSVRPUjsKLSAgICAgICAgICAgIGJy
ZWFrOwotICAgICAgICBjYXNlIENoYXJhY3RlckRvdDoKLSAgICAgICAgICAgIHNoaWZ0KCk7Ci0g
ICAgICAgICAgICBpZiAoaXNBU0NJSURpZ2l0KG1fY3VycmVudCkpIHsKLSAgICAgICAgICAgICAg
ICByZWNvcmQ4KCcuJyk7Ci0gICAgICAgICAgICAgICAgZ290byBpbk51bWJlckFmdGVyRGVjaW1h
bFBvaW50OworICAgICAgICAgICAgICAgIGdvdG8gaW5TaW5nbGVMaW5lQ29tbWVudDsKICAgICAg
ICAgICAgIH0KLSAgICAgICAgICAgIHRva2VuID0gRE9UOworICAgICAgICAgICAgdG9rZW4gPSAo
IW1fdGVybWluYXRvcikgPyBNSU5VU01JTlVTIDogQVVUT01JTlVTTUlOVVM7CiAgICAgICAgICAg
ICBicmVhazsKLSAgICAgICAgY2FzZSBDaGFyYWN0ZXJPcGVuUGFyZW46Ci0gICAgICAgICAgICB0
b2tlbiA9IE9QRU5QQVJFTjsKLSAgICAgICAgICAgIHNoaWZ0KCk7Ci0gICAgICAgICAgICBicmVh
azsKLSAgICAgICAgY2FzZSBDaGFyYWN0ZXJDbG9zZVBhcmVuOgotICAgICAgICAgICAgdG9rZW4g
PSBDTE9TRVBBUkVOOworICAgICAgICB9CisgICAgICAgIGlmIChtX2N1cnJlbnQgPT0gJz0nKSB7
CiAgICAgICAgICAgICBzaGlmdCgpOworICAgICAgICAgICAgdG9rZW4gPSBNSU5VU0VRVUFMOwog
ICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgQ2hhcmFjdGVyT3BlbkJyYWNrZXQ6Ci0g
ICAgICAgICAgICB0b2tlbiA9IE9QRU5CUkFDS0VUOworICAgICAgICB9CisgICAgICAgIHRva2Vu
ID0gTUlOVVM7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQ2hhcmFjdGVyTXVsdGlwbHk6Cisg
ICAgICAgIHNoaWZ0KCk7CisgICAgICAgIGlmIChtX2N1cnJlbnQgPT0gJz0nKSB7CiAgICAgICAg
ICAgICBzaGlmdCgpOworICAgICAgICAgICAgdG9rZW4gPSBNVUxURVFVQUw7CiAgICAgICAgICAg
ICBicmVhazsKLSAgICAgICAgY2FzZSBDaGFyYWN0ZXJDbG9zZUJyYWNrZXQ6Ci0gICAgICAgICAg
ICB0b2tlbiA9IENMT1NFQlJBQ0tFVDsKKyAgICAgICAgfQorICAgICAgICB0b2tlbiA9IFRJTUVT
OworICAgICAgICBicmVhazsKKyAgICBjYXNlIENoYXJhY3RlclNsYXNoOgorICAgICAgICBzaGlm
dCgpOworICAgICAgICBpZiAobV9jdXJyZW50ID09ICcvJykgewogICAgICAgICAgICAgc2hpZnQo
KTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIENoYXJhY3RlckNvbW1hOgotICAg
ICAgICAgICAgdG9rZW4gPSBDT01NQTsKKyAgICAgICAgICAgIGdvdG8gaW5TaW5nbGVMaW5lQ29t
bWVudDsKKyAgICAgICAgfQorICAgICAgICBpZiAobV9jdXJyZW50ID09ICcqJykgewogICAgICAg
ICAgICAgc2hpZnQoKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIENoYXJhY3Rl
ckNvbG9uOgotICAgICAgICAgICAgdG9rZW4gPSBDT0xPTjsKKyAgICAgICAgICAgIGdvdG8gaW5N
dWx0aUxpbmVDb21tZW50OworICAgICAgICB9CisgICAgICAgIGlmIChtX2N1cnJlbnQgPT0gJz0n
KSB7CiAgICAgICAgICAgICBzaGlmdCgpOworICAgICAgICAgICAgdG9rZW4gPSBESVZFUVVBTDsK
ICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIENoYXJhY3RlclF1ZXN0aW9uOgotICAg
ICAgICAgICAgdG9rZW4gPSBRVUVTVElPTjsKKyAgICAgICAgfQorICAgICAgICB0b2tlbiA9IERJ
VklERTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBDaGFyYWN0ZXJBbmQ6CisgICAgICAgIHNo
aWZ0KCk7CisgICAgICAgIGlmIChtX2N1cnJlbnQgPT0gJyYnKSB7CiAgICAgICAgICAgICBzaGlm
dCgpOworICAgICAgICAgICAgdG9rZW4gPSBBTkQ7CiAgICAgICAgICAgICBicmVhazsKLSAgICAg
ICAgY2FzZSBDaGFyYWN0ZXJUaWxkZToKLSAgICAgICAgICAgIHRva2VuID0gVElMREU7CisgICAg
ICAgIH0KKyAgICAgICAgaWYgKG1fY3VycmVudCA9PSAnPScpIHsKICAgICAgICAgICAgIHNoaWZ0
KCk7CisgICAgICAgICAgICB0b2tlbiA9IEFOREVRVUFMOwogICAgICAgICAgICAgYnJlYWs7Ci0g
ICAgICAgIGNhc2UgQ2hhcmFjdGVyU2VtaWNvbG9uOgotICAgICAgICAgICAgbV9kZWxpbWl0ZWQg
PSB0cnVlOworICAgICAgICB9CisgICAgICAgIHRva2VuID0gQklUQU5EOworICAgICAgICBicmVh
azsKKyAgICBjYXNlIENoYXJhY3RlclhvcjoKKyAgICAgICAgc2hpZnQoKTsKKyAgICAgICAgaWYg
KG1fY3VycmVudCA9PSAnPScpIHsKICAgICAgICAgICAgIHNoaWZ0KCk7Ci0gICAgICAgICAgICB0
b2tlbiA9IFNFTUlDT0xPTjsKKyAgICAgICAgICAgIHRva2VuID0gWE9SRVFVQUw7CiAgICAgICAg
ICAgICBicmVhazsKLSAgICAgICAgY2FzZSBDaGFyYWN0ZXJPcGVuQnJhY2U6Ci0gICAgICAgICAg
ICBsdmFscC0+aW50VmFsdWUgPSBjdXJyZW50T2Zmc2V0KCk7CisgICAgICAgIH0KKyAgICAgICAg
dG9rZW4gPSBCSVRYT1I7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQ2hhcmFjdGVyTW9kdWxv
OgorICAgICAgICBzaGlmdCgpOworICAgICAgICBpZiAobV9jdXJyZW50ID09ICc9JykgewogICAg
ICAgICAgICAgc2hpZnQoKTsKLSAgICAgICAgICAgIHRva2VuID0gT1BFTkJSQUNFOworICAgICAg
ICAgICAgdG9rZW4gPSBNT0RFUVVBTDsKICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNl
IENoYXJhY3RlckNsb3NlQnJhY2U6Ci0gICAgICAgICAgICBsdmFscC0+aW50VmFsdWUgPSBjdXJy
ZW50T2Zmc2V0KCk7Ci0gICAgICAgICAgICBtX2RlbGltaXRlZCA9IHRydWU7CisgICAgICAgIH0K
KyAgICAgICAgdG9rZW4gPSBNT0Q7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQ2hhcmFjdGVy
T3I6CisgICAgICAgIHNoaWZ0KCk7CisgICAgICAgIGlmIChtX2N1cnJlbnQgPT0gJz0nKSB7CiAg
ICAgICAgICAgICBzaGlmdCgpOwotICAgICAgICAgICAgdG9rZW4gPSBDTE9TRUJSQUNFOworICAg
ICAgICAgICAgdG9rZW4gPSBPUkVRVUFMOwogICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNh
c2UgQ2hhcmFjdGVyQmFja1NsYXNoOgotICAgICAgICAgICAgZ290byBzdGFydElkZW50aWZpZXJX
aXRoQmFja3NsYXNoOwotICAgICAgICBjYXNlIENoYXJhY3Rlclplcm86Ci0gICAgICAgICAgICBn
b3RvIHN0YXJ0TnVtYmVyV2l0aFplcm9EaWdpdDsKLSAgICAgICAgY2FzZSBDaGFyYWN0ZXJOdW1i
ZXI6Ci0gICAgICAgICAgICBnb3RvIHN0YXJ0TnVtYmVyOwotICAgICAgICBjYXNlIENoYXJhY3Rl
clF1b3RlOgotICAgICAgICAgICAgaWYgKFVOTElLRUxZKCFwYXJzZVN0cmluZyhsdmFscCkpKQot
ICAgICAgICAgICAgICAgIGdvdG8gcmV0dXJuRXJyb3I7CisgICAgICAgIH0KKyAgICAgICAgaWYg
KG1fY3VycmVudCA9PSAnfCcpIHsKICAgICAgICAgICAgIHNoaWZ0KCk7Ci0gICAgICAgICAgICBt
X2RlbGltaXRlZCA9IGZhbHNlOwotICAgICAgICAgICAgdG9rZW4gPSBTVFJJTkc7CisgICAgICAg
ICAgICB0b2tlbiA9IE9SOwogICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgQ2hhcmFj
dGVyQWxwaGE6Ci0gICAgICAgICAgICBBU1NFUlQoaXNJZGVudFN0YXJ0KG1fY3VycmVudCkpOwot
ICAgICAgICAgICAgZ290byBzdGFydElkZW50aWZpZXJPcktleXdvcmQ7Ci0gICAgICAgIGNhc2Ug
Q2hhcmFjdGVyTGluZVRlcm1pbmF0b3I6Ci0gICAgICAgICAgICBBU1NFUlQoaXNMaW5lVGVybWlu
YXRvcihtX2N1cnJlbnQpKTsKLSAgICAgICAgICAgIHNoaWZ0TGluZVRlcm1pbmF0b3IoKTsKLSAg
ICAgICAgICAgIG1fYXRMaW5lU3RhcnQgPSB0cnVlOwotICAgICAgICAgICAgbV90ZXJtaW5hdG9y
ID0gdHJ1ZTsKLSAgICAgICAgICAgIGlmIChsYXN0VG9rZW5XYXNSZXN0cktleXdvcmQoKSkgewot
ICAgICAgICAgICAgICAgIHRva2VuID0gU0VNSUNPTE9OOwotICAgICAgICAgICAgICAgIGdvdG8g
ZG9uZVNlbWljb2xvbjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGdvdG8gc3RhcnQ7Ci0g
ICAgICAgIGNhc2UgQ2hhcmFjdGVySW52YWxpZDoKLSAgICAgICAgICAgIGdvdG8gcmV0dXJuRXJy
b3I7Ci0gICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
LSAgICAgICAgICAgIGdvdG8gcmV0dXJuRXJyb3I7CiAgICAgICAgIH0KLSAgICB9IGVsc2Ugewot
ICAgICAgICAvLyBSYXJlIGNoYXJhY3RlcnMKLQotICAgICAgICBpZiAoaXNOb25BU0NJSUlkZW50
U3RhcnQobV9jdXJyZW50KSkKLSAgICAgICAgICAgIGdvdG8gc3RhcnRJZGVudGlmaWVyT3JLZXl3
b3JkOwotICAgICAgICBpZiAoaXNMaW5lVGVybWluYXRvcihtX2N1cnJlbnQpKSB7Ci0gICAgICAg
ICAgICBzaGlmdExpbmVUZXJtaW5hdG9yKCk7Ci0gICAgICAgICAgICBtX2F0TGluZVN0YXJ0ID0g
dHJ1ZTsKLSAgICAgICAgICAgIG1fdGVybWluYXRvciA9IHRydWU7Ci0gICAgICAgICAgICBpZiAo
bGFzdFRva2VuV2FzUmVzdHJLZXl3b3JkKCkpCi0gICAgICAgICAgICAgICAgZ290byBkb25lU2Vt
aWNvbG9uOwotICAgICAgICAgICAgZ290byBzdGFydDsKKyAgICAgICAgdG9rZW4gPSBCSVRPUjsK
KyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBDaGFyYWN0ZXJEb3Q6CisgICAgICAgIHNoaWZ0KCk7
CisgICAgICAgIGlmIChpc0FTQ0lJRGlnaXQobV9jdXJyZW50KSkgeworICAgICAgICAgICAgcmVj
b3JkOCgnLicpOworICAgICAgICAgICAgZ290byBpbk51bWJlckFmdGVyRGVjaW1hbFBvaW50Owor
ICAgICAgICB9CisgICAgICAgIHRva2VuID0gRE9UOworICAgICAgICBicmVhazsKKyAgICBjYXNl
IENoYXJhY3Rlck9wZW5QYXJlbjoKKyAgICAgICAgdG9rZW4gPSBPUEVOUEFSRU47CisgICAgICAg
IHNoaWZ0KCk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQ2hhcmFjdGVyQ2xvc2VQYXJlbjoK
KyAgICAgICAgdG9rZW4gPSBDTE9TRVBBUkVOOworICAgICAgICBzaGlmdCgpOworICAgICAgICBi
cmVhazsKKyAgICBjYXNlIENoYXJhY3Rlck9wZW5CcmFja2V0OgorICAgICAgICB0b2tlbiA9IE9Q
RU5CUkFDS0VUOworICAgICAgICBzaGlmdCgpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIENo
YXJhY3RlckNsb3NlQnJhY2tldDoKKyAgICAgICAgdG9rZW4gPSBDTE9TRUJSQUNLRVQ7CisgICAg
ICAgIHNoaWZ0KCk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQ2hhcmFjdGVyQ29tbWE6Cisg
ICAgICAgIHRva2VuID0gQ09NTUE7CisgICAgICAgIHNoaWZ0KCk7CisgICAgICAgIGJyZWFrOwor
ICAgIGNhc2UgQ2hhcmFjdGVyQ29sb246CisgICAgICAgIHRva2VuID0gQ09MT047CisgICAgICAg
IHNoaWZ0KCk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQ2hhcmFjdGVyUXVlc3Rpb246Cisg
ICAgICAgIHRva2VuID0gUVVFU1RJT047CisgICAgICAgIHNoaWZ0KCk7CisgICAgICAgIGJyZWFr
OworICAgIGNhc2UgQ2hhcmFjdGVyVGlsZGU6CisgICAgICAgIHRva2VuID0gVElMREU7CisgICAg
ICAgIHNoaWZ0KCk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQ2hhcmFjdGVyU2VtaWNvbG9u
OgorICAgICAgICBtX2RlbGltaXRlZCA9IHRydWU7CisgICAgICAgIHNoaWZ0KCk7CisgICAgICAg
IHRva2VuID0gU0VNSUNPTE9OOworICAgICAgICBicmVhazsKKyAgICBjYXNlIENoYXJhY3Rlck9w
ZW5CcmFjZToKKyAgICAgICAgbHZhbHAtPmludFZhbHVlID0gY3VycmVudE9mZnNldCgpOworICAg
ICAgICBzaGlmdCgpOworICAgICAgICB0b2tlbiA9IE9QRU5CUkFDRTsKKyAgICAgICAgYnJlYWs7
CisgICAgY2FzZSBDaGFyYWN0ZXJDbG9zZUJyYWNlOgorICAgICAgICBsdmFscC0+aW50VmFsdWUg
PSBjdXJyZW50T2Zmc2V0KCk7CisgICAgICAgIG1fZGVsaW1pdGVkID0gdHJ1ZTsKKyAgICAgICAg
c2hpZnQoKTsKKyAgICAgICAgdG9rZW4gPSBDTE9TRUJSQUNFOworICAgICAgICBicmVhazsKKyAg
ICBjYXNlIENoYXJhY3RlckJhY2tTbGFzaDoKKyAgICAgICAgZ290byBzdGFydElkZW50aWZpZXJX
aXRoQmFja3NsYXNoOworICAgIGNhc2UgQ2hhcmFjdGVyWmVybzoKKyAgICAgICAgZ290byBzdGFy
dE51bWJlcldpdGhaZXJvRGlnaXQ7CisgICAgY2FzZSBDaGFyYWN0ZXJOdW1iZXI6CisgICAgICAg
IGdvdG8gc3RhcnROdW1iZXI7CisgICAgY2FzZSBDaGFyYWN0ZXJRdW90ZToKKyAgICAgICAgaWYg
KFVOTElLRUxZKCFwYXJzZVN0cmluZyhsdmFscCkpKQorICAgICAgICAgICAgZ290byByZXR1cm5F
cnJvcjsKKyAgICAgICAgc2hpZnQoKTsKKyAgICAgICAgbV9kZWxpbWl0ZWQgPSBmYWxzZTsKKyAg
ICAgICAgdG9rZW4gPSBTVFJJTkc7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQ2hhcmFjdGVy
QWxwaGE6CisgICAgICAgIEFTU0VSVChpc0lkZW50U3RhcnQobV9jdXJyZW50KSk7CisgICAgICAg
IGdvdG8gc3RhcnRJZGVudGlmaWVyT3JLZXl3b3JkOworICAgIGNhc2UgQ2hhcmFjdGVyTGluZVRl
cm1pbmF0b3I6CisgICAgICAgIEFTU0VSVChpc0xpbmVUZXJtaW5hdG9yKG1fY3VycmVudCkpOwor
ICAgICAgICBzaGlmdExpbmVUZXJtaW5hdG9yKCk7CisgICAgICAgIG1fYXRMaW5lU3RhcnQgPSB0
cnVlOworICAgICAgICBtX3Rlcm1pbmF0b3IgPSB0cnVlOworICAgICAgICBpZiAobGFzdFRva2Vu
V2FzUmVzdHJLZXl3b3JkKCkpIHsKKyAgICAgICAgICAgIHRva2VuID0gU0VNSUNPTE9OOworICAg
ICAgICAgICAgZ290byBkb25lU2VtaWNvbG9uOwogICAgICAgICB9CisgICAgICAgIGdvdG8gc3Rh
cnQ7CisgICAgY2FzZSBDaGFyYWN0ZXJJbnZhbGlkOgorICAgICAgICBnb3RvIHJldHVybkVycm9y
OworICAgIGRlZmF1bHQ6CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICBn
b3RvIHJldHVybkVycm9yOwogICAgIH0KIAotLSAKMS42LjAuNAoK
</data>
<flag name="review"
          id="49372"
          type_id="1"
          status="-"
          setter="darin"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>61478</attachid>
            <date>2010-07-14 00:44:56 -0700</date>
            <delta_ts>2010-07-14 08:21:13 -0700</delta_ts>
            <desc>indentation patch</desc>
            <filename>0001-lexer-indent.patch</filename>
            <type>text/plain</type>
            <size>15961</size>
            <attacher name="Zoltan Herczeg">zherczeg</attacher>
            
              <data encoding="base64">RnJvbSBiOGM3Zjk3OTIwODI4NGM4ZTc0OWU1ZDg3NWQ2MTJhZTZlNDhiNjdhIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBab2x0YW4gSGVyY3plZyA8emhlcmN6ZWdAaW5mLnUtc3plZ2Vk
Lmh1PgpEYXRlOiBXZWQsIDE0IEp1bCAyMDEwIDA5OjM5OjMyICswMjAwClN1YmplY3Q6IFtQQVRD
SF0gbGV4ZXItaW5kZW50CgpTaWduZWQtb2ZmLWJ5OiBab2x0YW4gSGVyY3plZyA8emhlcmN6ZWdA
aW5mLnUtc3plZ2VkLmh1PgotLS0KIEphdmFTY3JpcHRDb3JlL0NoYW5nZUxvZyAgICAgICAgfCAg
IDE5ICsrCiBKYXZhU2NyaXB0Q29yZS9wYXJzZXIvTGV4ZXIuY3BwIHwgIDQ1NCArKysrKysrKysr
KysrKysrKysrLS0tLS0tLS0tLS0tLS0tLS0tLQogMiBmaWxlcyBjaGFuZ2VkLCAyNDYgaW5zZXJ0
aW9ucygrKSwgMjI3IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL0No
YW5nZUxvZyBiL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBiYWQ0OGQ4Li5kNTVlNjMy
IDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKKysrIGIvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjIgQEAKKzIwMTAtMDctMTQgIFpvbHRhbiBIZXJjemVn
ICA8emhlcmN6ZWdAd2Via2l0Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBDaGFuZ2UgaW5kZW50YXRpb25zIGluIHRoZSBsZXhlcgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDE4NDUKKworICAgICAg
ICBUaGlzIHBhdGNoIGZpeGVzIGFuIG9sZCwgaW5kZW50YXRpb24gZXJyb3IgY29tZXMgZnJvbSBr
anMsCisgICAgICAgIGFzIHdlYmtpdCBoYXMgYSBkaWZmZXJlbnQgc3R5bGUgcnVsZSBmb3Igc3dp
dGNoZXMsIGFuZCBjaGFuZ2UKKyAgICAgICAgdGhlIGluZGVudGF0aW9uIG9mIHRoZSBtYWluIHN3
aXRjaCwgd2hpY2ggaXMgYSB0ZW1wb3JhcnkKKyAgICAgICAgc3R5bGUgZXJyb3IuIFRoaXMgY2hh
bmdlIG1ha2VzIGVhc2llciB0byBzZWUgdGhlIGJlaGF2aW91cmFsCisgICAgICAgIGNoYW5nZXMg
aW4gdGhlIGZvbGxvdy11cCBwYXRjaC4KKworICAgICAgICBObyBiZWhhdmlvdXJhbCBjaGFuZ2Vz
LgorCisgICAgICAgICogcGFyc2VyL0xleGVyLmNwcDoKKyAgICAgICAgKEpTQzo6c2luZ2xlRXNj
YXBlKToKKyAgICAgICAgKEpTQzo6TGV4ZXI6OmxleCk6CisKIDIwMTAtMDctMTMgIFNoZXJpZmYg
Qm90ICA8d2Via2l0LnJldmlldy5ib3RAZ21haWwuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQs
IHJvbGxpbmcgb3V0IHI2MzI2Mi4KZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL3BhcnNlci9M
ZXhlci5jcHAgYi9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTGV4ZXIuY3BwCmluZGV4IDkxYTg3ZTYu
LjhhMGEzZjQgMTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRDb3JlL3BhcnNlci9MZXhlci5jcHAKKysr
IGIvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0xleGVyLmNwcApAQCAtMzUyLDI2ICszNTIsMjYgQEAg
c3RhdGljIGlubGluZSBib29sIGlzSWRlbnRQYXJ0KGludCBjKQogc3RhdGljIGlubGluZSBpbnQg
c2luZ2xlRXNjYXBlKGludCBjKQogewogICAgIHN3aXRjaCAoYykgewotICAgICAgICBjYXNlICdi
JzoKLSAgICAgICAgICAgIHJldHVybiAweDA4OwotICAgICAgICBjYXNlICd0JzoKLSAgICAgICAg
ICAgIHJldHVybiAweDA5OwotICAgICAgICBjYXNlICduJzoKLSAgICAgICAgICAgIHJldHVybiAw
eDBBOwotICAgICAgICBjYXNlICd2JzoKLSAgICAgICAgICAgIHJldHVybiAweDBCOwotICAgICAg
ICBjYXNlICdmJzoKLSAgICAgICAgICAgIHJldHVybiAweDBDOwotICAgICAgICBjYXNlICdyJzoK
LSAgICAgICAgICAgIHJldHVybiAweDBEOwotICAgICAgICBjYXNlICdcXCc6Ci0gICAgICAgICAg
ICByZXR1cm4gJ1xcJzsKLSAgICAgICAgY2FzZSAnXCcnOgotICAgICAgICAgICAgcmV0dXJuICdc
Jyc7Ci0gICAgICAgIGNhc2UgJyInOgotICAgICAgICAgICAgcmV0dXJuICciJzsKLSAgICAgICAg
ZGVmYXVsdDoKLSAgICAgICAgICAgIHJldHVybiAwOworICAgIGNhc2UgJ2InOgorICAgICAgICBy
ZXR1cm4gMHgwODsKKyAgICBjYXNlICd0JzoKKyAgICAgICAgcmV0dXJuIDB4MDk7CisgICAgY2Fz
ZSAnbic6CisgICAgICAgIHJldHVybiAweDBBOworICAgIGNhc2UgJ3YnOgorICAgICAgICByZXR1
cm4gMHgwQjsKKyAgICBjYXNlICdmJzoKKyAgICAgICAgcmV0dXJuIDB4MEM7CisgICAgY2FzZSAn
cic6CisgICAgICAgIHJldHVybiAweDBEOworICAgIGNhc2UgJ1xcJzoKKyAgICAgICAgcmV0dXJu
ICdcXCc7CisgICAgY2FzZSAnXCcnOgorICAgICAgICByZXR1cm4gJ1wnJzsKKyAgICBjYXNlICci
JzoKKyAgICAgICAgcmV0dXJuICciJzsKKyAgICBkZWZhdWx0OgorICAgICAgICByZXR1cm4gMDsK
ICAgICB9CiB9CiAKQEAgLTQ5NiwyNzkgKzQ5NiwyNzkgQEAgc3RhcnQ6CiAgICAgaWYgKGlzQVND
SUkobV9jdXJyZW50KSkgewogICAgICAgICBBU1NFUlQobV9jdXJyZW50ID49IDAgJiYgbV9jdXJy
ZW50IDwgMTI4KTsKIAotICAgICAgICBzd2l0Y2ggKEFzY2lpQ2hhcmFjdGVyc1ttX2N1cnJlbnRd
KSB7Ci0gICAgICAgIGNhc2UgQ2hhcmFjdGVyR3JlYXRlcjoKKyAgICBzd2l0Y2ggKEFzY2lpQ2hh
cmFjdGVyc1ttX2N1cnJlbnRdKSB7CisgICAgY2FzZSBDaGFyYWN0ZXJHcmVhdGVyOgorICAgICAg
ICBzaGlmdCgpOworICAgICAgICBpZiAobV9jdXJyZW50ID09ICc+JykgewogICAgICAgICAgICAg
c2hpZnQoKTsKICAgICAgICAgICAgIGlmIChtX2N1cnJlbnQgPT0gJz4nKSB7CiAgICAgICAgICAg
ICAgICAgc2hpZnQoKTsKLSAgICAgICAgICAgICAgICBpZiAobV9jdXJyZW50ID09ICc+Jykgewot
ICAgICAgICAgICAgICAgICAgICBzaGlmdCgpOwotICAgICAgICAgICAgICAgICAgICBpZiAobV9j
dXJyZW50ID09ICc9JykgewotICAgICAgICAgICAgICAgICAgICAgICAgc2hpZnQoKTsKLSAgICAg
ICAgICAgICAgICAgICAgICAgIHRva2VuID0gVVJTSElGVEVRVUFMOwotICAgICAgICAgICAgICAg
ICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAg
ICAgdG9rZW4gPSBVUlNISUZUOwotICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAg
ICAgICAgICB9CiAgICAgICAgICAgICAgICAgaWYgKG1fY3VycmVudCA9PSAnPScpIHsKICAgICAg
ICAgICAgICAgICAgICAgc2hpZnQoKTsKLSAgICAgICAgICAgICAgICAgICAgdG9rZW4gPSBSU0hJ
RlRFUVVBTDsKKyAgICAgICAgICAgICAgICAgICAgdG9rZW4gPSBVUlNISUZURVFVQUw7CiAgICAg
ICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAg
ICB0b2tlbiA9IFJTSElGVDsKKyAgICAgICAgICAgICAgICB0b2tlbiA9IFVSU0hJRlQ7CiAgICAg
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBpZiAobV9jdXJy
ZW50ID09ICc9JykgewogICAgICAgICAgICAgICAgIHNoaWZ0KCk7Ci0gICAgICAgICAgICAgICAg
dG9rZW4gPSBHRTsKKyAgICAgICAgICAgICAgICB0b2tlbiA9IFJTSElGVEVRVUFMOwogICAgICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgdG9rZW4gPSBHVDsK
KyAgICAgICAgICAgIHRva2VuID0gUlNISUZUOwogICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAg
IGNhc2UgQ2hhcmFjdGVyRXF1YWw6Ci0gICAgICAgICAgICBzaGlmdCgpOwotICAgICAgICAgICAg
aWYgKG1fY3VycmVudCA9PSAnPScpIHsKLSAgICAgICAgICAgICAgICBzaGlmdCgpOwotICAgICAg
ICAgICAgICAgIGlmIChtX2N1cnJlbnQgPT0gJz0nKSB7Ci0gICAgICAgICAgICAgICAgICAgIHNo
aWZ0KCk7Ci0gICAgICAgICAgICAgICAgICAgIHRva2VuID0gU1RSRVE7Ci0gICAgICAgICAgICAg
ICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB0b2tlbiA9
IEVRRVE7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAg
ICB0b2tlbiA9IEVRVUFMOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgQ2hhcmFj
dGVyTGVzczoKLSAgICAgICAgICAgIHNoaWZ0KCk7Ci0gICAgICAgICAgICBpZiAobV9jdXJyZW50
ID09ICchJyAmJiBwZWVrKDEpID09ICctJyAmJiBwZWVrKDIpID09ICctJykgewotICAgICAgICAg
ICAgICAgIC8vIDwhLS0gbWFya3MgdGhlIGJlZ2lubmluZyBvZiBhIGxpbmUgY29tbWVudCAoZm9y
IHd3dyB1c2FnZSkKLSAgICAgICAgICAgICAgICBnb3RvIGluU2luZ2xlTGluZUNvbW1lbnQ7Ci0g
ICAgICAgICAgICB9Ci0gICAgICAgICAgICBpZiAobV9jdXJyZW50ID09ICc8JykgewotICAgICAg
ICAgICAgICAgIHNoaWZ0KCk7Ci0gICAgICAgICAgICAgICAgaWYgKG1fY3VycmVudCA9PSAnPScp
IHsKLSAgICAgICAgICAgICAgICAgICAgc2hpZnQoKTsKLSAgICAgICAgICAgICAgICAgICAgdG9r
ZW4gPSBMU0hJRlRFUVVBTDsKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAg
ICAgICAgfQotICAgICAgICAgICAgICAgIHRva2VuID0gTFNISUZUOwotICAgICAgICAgICAgICAg
IGJyZWFrOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgaWYgKG1fY3VycmVudCA9PSAnPScp
IHsKLSAgICAgICAgICAgICAgICBzaGlmdCgpOwotICAgICAgICAgICAgICAgIHRva2VuID0gTEU7
Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICB0b2tl
biA9IExUOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgQ2hhcmFjdGVyRXhjbGFt
YXRpb25NYXJrOgotICAgICAgICAgICAgc2hpZnQoKTsKLSAgICAgICAgICAgIGlmIChtX2N1cnJl
bnQgPT0gJz0nKSB7Ci0gICAgICAgICAgICAgICAgc2hpZnQoKTsKLSAgICAgICAgICAgICAgICBp
ZiAobV9jdXJyZW50ID09ICc9JykgewotICAgICAgICAgICAgICAgICAgICBzaGlmdCgpOwotICAg
ICAgICAgICAgICAgICAgICB0b2tlbiA9IFNUUk5FUTsKLSAgICAgICAgICAgICAgICAgICAgYnJl
YWs7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIHRva2VuID0gTkU7Ci0gICAg
ICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICB0b2tlbiA9IEVY
Q0xBTUFUSU9OOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgQ2hhcmFjdGVyQWRk
OgorICAgICAgICB9CisgICAgICAgIGlmIChtX2N1cnJlbnQgPT0gJz0nKSB7CiAgICAgICAgICAg
ICBzaGlmdCgpOwotICAgICAgICAgICAgaWYgKG1fY3VycmVudCA9PSAnKycpIHsKLSAgICAgICAg
ICAgICAgICBzaGlmdCgpOwotICAgICAgICAgICAgICAgIHRva2VuID0gKCFtX3Rlcm1pbmF0b3Ip
ID8gUExVU1BMVVMgOiBBVVRPUExVU1BMVVM7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAg
ICAgICAgICB9Ci0gICAgICAgICAgICBpZiAobV9jdXJyZW50ID09ICc9JykgewotICAgICAgICAg
ICAgICAgIHNoaWZ0KCk7Ci0gICAgICAgICAgICAgICAgdG9rZW4gPSBQTFVTRVFVQUw7Ci0gICAg
ICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICB0b2tlbiA9IFBM
VVM7CisgICAgICAgICAgICB0b2tlbiA9IEdFOwogICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAg
IGNhc2UgQ2hhcmFjdGVyU3ViOgorICAgICAgICB9CisgICAgICAgIHRva2VuID0gR1Q7CisgICAg
ICAgIGJyZWFrOworICAgIGNhc2UgQ2hhcmFjdGVyRXF1YWw6CisgICAgICAgIHNoaWZ0KCk7Cisg
ICAgICAgIGlmIChtX2N1cnJlbnQgPT0gJz0nKSB7CiAgICAgICAgICAgICBzaGlmdCgpOwotICAg
ICAgICAgICAgaWYgKG1fY3VycmVudCA9PSAnLScpIHsKLSAgICAgICAgICAgICAgICBzaGlmdCgp
OwotICAgICAgICAgICAgICAgIGlmIChtX2F0TGluZVN0YXJ0ICYmIG1fY3VycmVudCA9PSAnPicp
IHsKLSAgICAgICAgICAgICAgICAgICAgc2hpZnQoKTsKLSAgICAgICAgICAgICAgICAgICAgZ290
byBpblNpbmdsZUxpbmVDb21tZW50OwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAg
ICB0b2tlbiA9ICghbV90ZXJtaW5hdG9yKSA/IE1JTlVTTUlOVVMgOiBBVVRPTUlOVVNNSU5VUzsK
LSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIH0KICAgICAgICAgICAgIGlmICht
X2N1cnJlbnQgPT0gJz0nKSB7CiAgICAgICAgICAgICAgICAgc2hpZnQoKTsKLSAgICAgICAgICAg
ICAgICB0b2tlbiA9IE1JTlVTRVFVQUw7CisgICAgICAgICAgICAgICAgdG9rZW4gPSBTVFJFUTsK
ICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHRva2Vu
ID0gTUlOVVM7CisgICAgICAgICAgICB0b2tlbiA9IEVRRVE7CiAgICAgICAgICAgICBicmVhazsK
LSAgICAgICAgY2FzZSBDaGFyYWN0ZXJNdWx0aXBseToKKyAgICAgICAgfQorICAgICAgICB0b2tl
biA9IEVRVUFMOworICAgICAgICBicmVhazsKKyAgICBjYXNlIENoYXJhY3Rlckxlc3M6CisgICAg
ICAgIHNoaWZ0KCk7CisgICAgICAgIGlmIChtX2N1cnJlbnQgPT0gJyEnICYmIHBlZWsoMSkgPT0g
Jy0nICYmIHBlZWsoMikgPT0gJy0nKSB7CisgICAgICAgICAgICAvLyA8IS0tIG1hcmtzIHRoZSBi
ZWdpbm5pbmcgb2YgYSBsaW5lIGNvbW1lbnQgKGZvciB3d3cgdXNhZ2UpCisgICAgICAgICAgICBn
b3RvIGluU2luZ2xlTGluZUNvbW1lbnQ7CisgICAgICAgIH0KKyAgICAgICAgaWYgKG1fY3VycmVu
dCA9PSAnPCcpIHsKICAgICAgICAgICAgIHNoaWZ0KCk7CiAgICAgICAgICAgICBpZiAobV9jdXJy
ZW50ID09ICc9JykgewogICAgICAgICAgICAgICAgIHNoaWZ0KCk7Ci0gICAgICAgICAgICAgICAg
dG9rZW4gPSBNVUxURVFVQUw7CisgICAgICAgICAgICAgICAgdG9rZW4gPSBMU0hJRlRFUVVBTDsK
ICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHRva2Vu
ID0gVElNRVM7CisgICAgICAgICAgICB0b2tlbiA9IExTSElGVDsKICAgICAgICAgICAgIGJyZWFr
OwotICAgICAgICBjYXNlIENoYXJhY3RlclNsYXNoOgorICAgICAgICB9CisgICAgICAgIGlmICht
X2N1cnJlbnQgPT0gJz0nKSB7CiAgICAgICAgICAgICBzaGlmdCgpOwotICAgICAgICAgICAgaWYg
KG1fY3VycmVudCA9PSAnLycpIHsKLSAgICAgICAgICAgICAgICBzaGlmdCgpOwotICAgICAgICAg
ICAgICAgIGdvdG8gaW5TaW5nbGVMaW5lQ29tbWVudDsKLSAgICAgICAgICAgIH0KLSAgICAgICAg
ICAgIGlmIChtX2N1cnJlbnQgPT0gJyonKSB7Ci0gICAgICAgICAgICAgICAgc2hpZnQoKTsKLSAg
ICAgICAgICAgICAgICBnb3RvIGluTXVsdGlMaW5lQ29tbWVudDsKLSAgICAgICAgICAgIH0KLSAg
ICAgICAgICAgIGlmIChtX2N1cnJlbnQgPT0gJz0nKSB7Ci0gICAgICAgICAgICAgICAgc2hpZnQo
KTsKLSAgICAgICAgICAgICAgICB0b2tlbiA9IERJVkVRVUFMOwotICAgICAgICAgICAgICAgIGJy
ZWFrOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgdG9rZW4gPSBESVZJREU7CisgICAgICAg
ICAgICB0b2tlbiA9IExFOwogICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgQ2hhcmFj
dGVyQW5kOgorICAgICAgICB9CisgICAgICAgIHRva2VuID0gTFQ7CisgICAgICAgIGJyZWFrOwor
ICAgIGNhc2UgQ2hhcmFjdGVyRXhjbGFtYXRpb25NYXJrOgorICAgICAgICBzaGlmdCgpOworICAg
ICAgICBpZiAobV9jdXJyZW50ID09ICc9JykgewogICAgICAgICAgICAgc2hpZnQoKTsKLSAgICAg
ICAgICAgIGlmIChtX2N1cnJlbnQgPT0gJyYnKSB7Ci0gICAgICAgICAgICAgICAgc2hpZnQoKTsK
LSAgICAgICAgICAgICAgICB0b2tlbiA9IEFORDsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAg
ICAgICAgICAgIH0KICAgICAgICAgICAgIGlmIChtX2N1cnJlbnQgPT0gJz0nKSB7CiAgICAgICAg
ICAgICAgICAgc2hpZnQoKTsKLSAgICAgICAgICAgICAgICB0b2tlbiA9IEFOREVRVUFMOworICAg
ICAgICAgICAgICAgIHRva2VuID0gU1RSTkVROwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICAgICAgfQotICAgICAgICAgICAgdG9rZW4gPSBCSVRBTkQ7CisgICAgICAgICAgICB0b2tl
biA9IE5FOwogICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgQ2hhcmFjdGVyWG9yOgor
ICAgICAgICB9CisgICAgICAgIHRva2VuID0gRVhDTEFNQVRJT047CisgICAgICAgIGJyZWFrOwor
ICAgIGNhc2UgQ2hhcmFjdGVyQWRkOgorICAgICAgICBzaGlmdCgpOworICAgICAgICBpZiAobV9j
dXJyZW50ID09ICcrJykgewogICAgICAgICAgICAgc2hpZnQoKTsKLSAgICAgICAgICAgIGlmICht
X2N1cnJlbnQgPT0gJz0nKSB7Ci0gICAgICAgICAgICAgICAgc2hpZnQoKTsKLSAgICAgICAgICAg
ICAgICB0b2tlbiA9IFhPUkVRVUFMOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAg
ICAgfQotICAgICAgICAgICAgdG9rZW4gPSBCSVRYT1I7CisgICAgICAgICAgICB0b2tlbiA9ICgh
bV90ZXJtaW5hdG9yKSA/IFBMVVNQTFVTIDogQVVUT1BMVVNQTFVTOwogICAgICAgICAgICAgYnJl
YWs7Ci0gICAgICAgIGNhc2UgQ2hhcmFjdGVyTW9kdWxvOgorICAgICAgICB9CisgICAgICAgIGlm
IChtX2N1cnJlbnQgPT0gJz0nKSB7CiAgICAgICAgICAgICBzaGlmdCgpOwotICAgICAgICAgICAg
aWYgKG1fY3VycmVudCA9PSAnPScpIHsKLSAgICAgICAgICAgICAgICBzaGlmdCgpOwotICAgICAg
ICAgICAgICAgIHRva2VuID0gTU9ERVFVQUw7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAg
ICAgICAgICB9Ci0gICAgICAgICAgICB0b2tlbiA9IE1PRDsKKyAgICAgICAgICAgIHRva2VuID0g
UExVU0VRVUFMOwogICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgQ2hhcmFjdGVyT3I6
CisgICAgICAgIH0KKyAgICAgICAgdG9rZW4gPSBQTFVTOworICAgICAgICBicmVhazsKKyAgICBj
YXNlIENoYXJhY3RlclN1YjoKKyAgICAgICAgc2hpZnQoKTsKKyAgICAgICAgaWYgKG1fY3VycmVu
dCA9PSAnLScpIHsKICAgICAgICAgICAgIHNoaWZ0KCk7Ci0gICAgICAgICAgICBpZiAobV9jdXJy
ZW50ID09ICc9JykgeworICAgICAgICAgICAgaWYgKG1fYXRMaW5lU3RhcnQgJiYgbV9jdXJyZW50
ID09ICc+JykgewogICAgICAgICAgICAgICAgIHNoaWZ0KCk7Ci0gICAgICAgICAgICAgICAgdG9r
ZW4gPSBPUkVRVUFMOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfQotICAg
ICAgICAgICAgaWYgKG1fY3VycmVudCA9PSAnfCcpIHsKLSAgICAgICAgICAgICAgICBzaGlmdCgp
OwotICAgICAgICAgICAgICAgIHRva2VuID0gT1I7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0g
ICAgICAgICAgICB9Ci0gICAgICAgICAgICB0b2tlbiA9IEJJVE9SOwotICAgICAgICAgICAgYnJl
YWs7Ci0gICAgICAgIGNhc2UgQ2hhcmFjdGVyRG90OgotICAgICAgICAgICAgc2hpZnQoKTsKLSAg
ICAgICAgICAgIGlmIChpc0FTQ0lJRGlnaXQobV9jdXJyZW50KSkgewotICAgICAgICAgICAgICAg
IHJlY29yZDgoJy4nKTsKLSAgICAgICAgICAgICAgICBnb3RvIGluTnVtYmVyQWZ0ZXJEZWNpbWFs
UG9pbnQ7CisgICAgICAgICAgICAgICAgZ290byBpblNpbmdsZUxpbmVDb21tZW50OwogICAgICAg
ICAgICAgfQotICAgICAgICAgICAgdG9rZW4gPSBET1Q7CisgICAgICAgICAgICB0b2tlbiA9ICgh
bV90ZXJtaW5hdG9yKSA/IE1JTlVTTUlOVVMgOiBBVVRPTUlOVVNNSU5VUzsKICAgICAgICAgICAg
IGJyZWFrOwotICAgICAgICBjYXNlIENoYXJhY3Rlck9wZW5QYXJlbjoKLSAgICAgICAgICAgIHRv
a2VuID0gT1BFTlBBUkVOOwotICAgICAgICAgICAgc2hpZnQoKTsKLSAgICAgICAgICAgIGJyZWFr
OwotICAgICAgICBjYXNlIENoYXJhY3RlckNsb3NlUGFyZW46Ci0gICAgICAgICAgICB0b2tlbiA9
IENMT1NFUEFSRU47CisgICAgICAgIH0KKyAgICAgICAgaWYgKG1fY3VycmVudCA9PSAnPScpIHsK
ICAgICAgICAgICAgIHNoaWZ0KCk7CisgICAgICAgICAgICB0b2tlbiA9IE1JTlVTRVFVQUw7CiAg
ICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBDaGFyYWN0ZXJPcGVuQnJhY2tldDoKLSAg
ICAgICAgICAgIHRva2VuID0gT1BFTkJSQUNLRVQ7CisgICAgICAgIH0KKyAgICAgICAgdG9rZW4g
PSBNSU5VUzsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBDaGFyYWN0ZXJNdWx0aXBseToKKyAg
ICAgICAgc2hpZnQoKTsKKyAgICAgICAgaWYgKG1fY3VycmVudCA9PSAnPScpIHsKICAgICAgICAg
ICAgIHNoaWZ0KCk7CisgICAgICAgICAgICB0b2tlbiA9IE1VTFRFUVVBTDsKICAgICAgICAgICAg
IGJyZWFrOwotICAgICAgICBjYXNlIENoYXJhY3RlckNsb3NlQnJhY2tldDoKLSAgICAgICAgICAg
IHRva2VuID0gQ0xPU0VCUkFDS0VUOworICAgICAgICB9CisgICAgICAgIHRva2VuID0gVElNRVM7
CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQ2hhcmFjdGVyU2xhc2g6CisgICAgICAgIHNoaWZ0
KCk7CisgICAgICAgIGlmIChtX2N1cnJlbnQgPT0gJy8nKSB7CiAgICAgICAgICAgICBzaGlmdCgp
OwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgQ2hhcmFjdGVyQ29tbWE6Ci0gICAg
ICAgICAgICB0b2tlbiA9IENPTU1BOworICAgICAgICAgICAgZ290byBpblNpbmdsZUxpbmVDb21t
ZW50OworICAgICAgICB9CisgICAgICAgIGlmIChtX2N1cnJlbnQgPT0gJyonKSB7CiAgICAgICAg
ICAgICBzaGlmdCgpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgQ2hhcmFjdGVy
Q29sb246Ci0gICAgICAgICAgICB0b2tlbiA9IENPTE9OOworICAgICAgICAgICAgZ290byBpbk11
bHRpTGluZUNvbW1lbnQ7CisgICAgICAgIH0KKyAgICAgICAgaWYgKG1fY3VycmVudCA9PSAnPScp
IHsKICAgICAgICAgICAgIHNoaWZ0KCk7CisgICAgICAgICAgICB0b2tlbiA9IERJVkVRVUFMOwog
ICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgQ2hhcmFjdGVyUXVlc3Rpb246Ci0gICAg
ICAgICAgICB0b2tlbiA9IFFVRVNUSU9OOworICAgICAgICB9CisgICAgICAgIHRva2VuID0gRElW
SURFOworICAgICAgICBicmVhazsKKyAgICBjYXNlIENoYXJhY3RlckFuZDoKKyAgICAgICAgc2hp
ZnQoKTsKKyAgICAgICAgaWYgKG1fY3VycmVudCA9PSAnJicpIHsKICAgICAgICAgICAgIHNoaWZ0
KCk7CisgICAgICAgICAgICB0b2tlbiA9IEFORDsKICAgICAgICAgICAgIGJyZWFrOwotICAgICAg
ICBjYXNlIENoYXJhY3RlclRpbGRlOgotICAgICAgICAgICAgdG9rZW4gPSBUSUxERTsKKyAgICAg
ICAgfQorICAgICAgICBpZiAobV9jdXJyZW50ID09ICc9JykgewogICAgICAgICAgICAgc2hpZnQo
KTsKKyAgICAgICAgICAgIHRva2VuID0gQU5ERVFVQUw7CiAgICAgICAgICAgICBicmVhazsKLSAg
ICAgICAgY2FzZSBDaGFyYWN0ZXJTZW1pY29sb246Ci0gICAgICAgICAgICBtX2RlbGltaXRlZCA9
IHRydWU7CisgICAgICAgIH0KKyAgICAgICAgdG9rZW4gPSBCSVRBTkQ7CisgICAgICAgIGJyZWFr
OworICAgIGNhc2UgQ2hhcmFjdGVyWG9yOgorICAgICAgICBzaGlmdCgpOworICAgICAgICBpZiAo
bV9jdXJyZW50ID09ICc9JykgewogICAgICAgICAgICAgc2hpZnQoKTsKLSAgICAgICAgICAgIHRv
a2VuID0gU0VNSUNPTE9OOworICAgICAgICAgICAgdG9rZW4gPSBYT1JFUVVBTDsKICAgICAgICAg
ICAgIGJyZWFrOwotICAgICAgICBjYXNlIENoYXJhY3Rlck9wZW5CcmFjZToKLSAgICAgICAgICAg
IGx2YWxwLT5pbnRWYWx1ZSA9IGN1cnJlbnRPZmZzZXQoKTsKKyAgICAgICAgfQorICAgICAgICB0
b2tlbiA9IEJJVFhPUjsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBDaGFyYWN0ZXJNb2R1bG86
CisgICAgICAgIHNoaWZ0KCk7CisgICAgICAgIGlmIChtX2N1cnJlbnQgPT0gJz0nKSB7CiAgICAg
ICAgICAgICBzaGlmdCgpOwotICAgICAgICAgICAgdG9rZW4gPSBPUEVOQlJBQ0U7CisgICAgICAg
ICAgICB0b2tlbiA9IE1PREVRVUFMOwogICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2Ug
Q2hhcmFjdGVyQ2xvc2VCcmFjZToKLSAgICAgICAgICAgIGx2YWxwLT5pbnRWYWx1ZSA9IGN1cnJl
bnRPZmZzZXQoKTsKLSAgICAgICAgICAgIG1fZGVsaW1pdGVkID0gdHJ1ZTsKKyAgICAgICAgfQor
ICAgICAgICB0b2tlbiA9IE1PRDsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBDaGFyYWN0ZXJP
cjoKKyAgICAgICAgc2hpZnQoKTsKKyAgICAgICAgaWYgKG1fY3VycmVudCA9PSAnPScpIHsKICAg
ICAgICAgICAgIHNoaWZ0KCk7Ci0gICAgICAgICAgICB0b2tlbiA9IENMT1NFQlJBQ0U7CisgICAg
ICAgICAgICB0b2tlbiA9IE9SRVFVQUw7CiAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2Fz
ZSBDaGFyYWN0ZXJCYWNrU2xhc2g6Ci0gICAgICAgICAgICBnb3RvIHN0YXJ0SWRlbnRpZmllcldp
dGhCYWNrc2xhc2g7Ci0gICAgICAgIGNhc2UgQ2hhcmFjdGVyWmVybzoKLSAgICAgICAgICAgIGdv
dG8gc3RhcnROdW1iZXJXaXRoWmVyb0RpZ2l0OwotICAgICAgICBjYXNlIENoYXJhY3Rlck51bWJl
cjoKLSAgICAgICAgICAgIGdvdG8gc3RhcnROdW1iZXI7Ci0gICAgICAgIGNhc2UgQ2hhcmFjdGVy
UXVvdGU6Ci0gICAgICAgICAgICBpZiAoVU5MSUtFTFkoIXBhcnNlU3RyaW5nKGx2YWxwKSkpCi0g
ICAgICAgICAgICAgICAgZ290byByZXR1cm5FcnJvcjsKKyAgICAgICAgfQorICAgICAgICBpZiAo
bV9jdXJyZW50ID09ICd8JykgewogICAgICAgICAgICAgc2hpZnQoKTsKLSAgICAgICAgICAgIG1f
ZGVsaW1pdGVkID0gZmFsc2U7Ci0gICAgICAgICAgICB0b2tlbiA9IFNUUklORzsKKyAgICAgICAg
ICAgIHRva2VuID0gT1I7CiAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBDaGFyYWN0
ZXJBbHBoYToKLSAgICAgICAgICAgIEFTU0VSVChpc0lkZW50U3RhcnQobV9jdXJyZW50KSk7Ci0g
ICAgICAgICAgICBnb3RvIHN0YXJ0SWRlbnRpZmllck9yS2V5d29yZDsKLSAgICAgICAgY2FzZSBD
aGFyYWN0ZXJMaW5lVGVybWluYXRvcjoKLSAgICAgICAgICAgIEFTU0VSVChpc0xpbmVUZXJtaW5h
dG9yKG1fY3VycmVudCkpOwotICAgICAgICAgICAgc2hpZnRMaW5lVGVybWluYXRvcigpOwotICAg
ICAgICAgICAgbV9hdExpbmVTdGFydCA9IHRydWU7Ci0gICAgICAgICAgICBtX3Rlcm1pbmF0b3Ig
PSB0cnVlOwotICAgICAgICAgICAgaWYgKGxhc3RUb2tlbldhc1Jlc3RyS2V5d29yZCgpKSB7Ci0g
ICAgICAgICAgICAgICAgdG9rZW4gPSBTRU1JQ09MT047Ci0gICAgICAgICAgICAgICAgZ290byBk
b25lU2VtaWNvbG9uOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgZ290byBzdGFydDsKLSAg
ICAgICAgY2FzZSBDaGFyYWN0ZXJJbnZhbGlkOgotICAgICAgICAgICAgZ290byByZXR1cm5FcnJv
cjsKLSAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwor
ICAgICAgICB9CisgICAgICAgIHRva2VuID0gQklUT1I7CisgICAgICAgIGJyZWFrOworICAgIGNh
c2UgQ2hhcmFjdGVyRG90OgorICAgICAgICBzaGlmdCgpOworICAgICAgICBpZiAoaXNBU0NJSURp
Z2l0KG1fY3VycmVudCkpIHsKKyAgICAgICAgICAgIHJlY29yZDgoJy4nKTsKKyAgICAgICAgICAg
IGdvdG8gaW5OdW1iZXJBZnRlckRlY2ltYWxQb2ludDsKKyAgICAgICAgfQorICAgICAgICB0b2tl
biA9IERPVDsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBDaGFyYWN0ZXJPcGVuUGFyZW46Cisg
ICAgICAgIHRva2VuID0gT1BFTlBBUkVOOworICAgICAgICBzaGlmdCgpOworICAgICAgICBicmVh
azsKKyAgICBjYXNlIENoYXJhY3RlckNsb3NlUGFyZW46CisgICAgICAgIHRva2VuID0gQ0xPU0VQ
QVJFTjsKKyAgICAgICAgc2hpZnQoKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBDaGFyYWN0
ZXJPcGVuQnJhY2tldDoKKyAgICAgICAgdG9rZW4gPSBPUEVOQlJBQ0tFVDsKKyAgICAgICAgc2hp
ZnQoKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBDaGFyYWN0ZXJDbG9zZUJyYWNrZXQ6Cisg
ICAgICAgIHRva2VuID0gQ0xPU0VCUkFDS0VUOworICAgICAgICBzaGlmdCgpOworICAgICAgICBi
cmVhazsKKyAgICBjYXNlIENoYXJhY3RlckNvbW1hOgorICAgICAgICB0b2tlbiA9IENPTU1BOwor
ICAgICAgICBzaGlmdCgpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIENoYXJhY3RlckNvbG9u
OgorICAgICAgICB0b2tlbiA9IENPTE9OOworICAgICAgICBzaGlmdCgpOworICAgICAgICBicmVh
azsKKyAgICBjYXNlIENoYXJhY3RlclF1ZXN0aW9uOgorICAgICAgICB0b2tlbiA9IFFVRVNUSU9O
OworICAgICAgICBzaGlmdCgpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIENoYXJhY3RlclRp
bGRlOgorICAgICAgICB0b2tlbiA9IFRJTERFOworICAgICAgICBzaGlmdCgpOworICAgICAgICBi
cmVhazsKKyAgICBjYXNlIENoYXJhY3RlclNlbWljb2xvbjoKKyAgICAgICAgbV9kZWxpbWl0ZWQg
PSB0cnVlOworICAgICAgICBzaGlmdCgpOworICAgICAgICB0b2tlbiA9IFNFTUlDT0xPTjsKKyAg
ICAgICAgYnJlYWs7CisgICAgY2FzZSBDaGFyYWN0ZXJPcGVuQnJhY2U6CisgICAgICAgIGx2YWxw
LT5pbnRWYWx1ZSA9IGN1cnJlbnRPZmZzZXQoKTsKKyAgICAgICAgc2hpZnQoKTsKKyAgICAgICAg
dG9rZW4gPSBPUEVOQlJBQ0U7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQ2hhcmFjdGVyQ2xv
c2VCcmFjZToKKyAgICAgICAgbHZhbHAtPmludFZhbHVlID0gY3VycmVudE9mZnNldCgpOworICAg
ICAgICBtX2RlbGltaXRlZCA9IHRydWU7CisgICAgICAgIHNoaWZ0KCk7CisgICAgICAgIHRva2Vu
ID0gQ0xPU0VCUkFDRTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBDaGFyYWN0ZXJCYWNrU2xh
c2g6CisgICAgICAgIGdvdG8gc3RhcnRJZGVudGlmaWVyV2l0aEJhY2tzbGFzaDsKKyAgICBjYXNl
IENoYXJhY3Rlclplcm86CisgICAgICAgIGdvdG8gc3RhcnROdW1iZXJXaXRoWmVyb0RpZ2l0Owor
ICAgIGNhc2UgQ2hhcmFjdGVyTnVtYmVyOgorICAgICAgICBnb3RvIHN0YXJ0TnVtYmVyOworICAg
IGNhc2UgQ2hhcmFjdGVyUXVvdGU6CisgICAgICAgIGlmIChVTkxJS0VMWSghcGFyc2VTdHJpbmco
bHZhbHApKSkKICAgICAgICAgICAgIGdvdG8gcmV0dXJuRXJyb3I7CisgICAgICAgIHNoaWZ0KCk7
CisgICAgICAgIG1fZGVsaW1pdGVkID0gZmFsc2U7CisgICAgICAgIHRva2VuID0gU1RSSU5HOwor
ICAgICAgICBicmVhazsKKyAgICBjYXNlIENoYXJhY3RlckFscGhhOgorICAgICAgICBBU1NFUlQo
aXNJZGVudFN0YXJ0KG1fY3VycmVudCkpOworICAgICAgICBnb3RvIHN0YXJ0SWRlbnRpZmllck9y
S2V5d29yZDsKKyAgICBjYXNlIENoYXJhY3RlckxpbmVUZXJtaW5hdG9yOgorICAgICAgICBBU1NF
UlQoaXNMaW5lVGVybWluYXRvcihtX2N1cnJlbnQpKTsKKyAgICAgICAgc2hpZnRMaW5lVGVybWlu
YXRvcigpOworICAgICAgICBtX2F0TGluZVN0YXJ0ID0gdHJ1ZTsKKyAgICAgICAgbV90ZXJtaW5h
dG9yID0gdHJ1ZTsKKyAgICAgICAgaWYgKGxhc3RUb2tlbldhc1Jlc3RyS2V5d29yZCgpKSB7Cisg
ICAgICAgICAgICB0b2tlbiA9IFNFTUlDT0xPTjsKKyAgICAgICAgICAgIGdvdG8gZG9uZVNlbWlj
b2xvbjsKICAgICAgICAgfQorICAgICAgICBnb3RvIHN0YXJ0OworICAgIGNhc2UgQ2hhcmFjdGVy
SW52YWxpZDoKKyAgICAgICAgZ290byByZXR1cm5FcnJvcjsKKyAgICBkZWZhdWx0OgorICAgICAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgZ290byByZXR1cm5FcnJvcjsKKyAgICB9
CiAgICAgfSBlbHNlIHsKICAgICAgICAgLy8gUmFyZSBjaGFyYWN0ZXJzCiAKLS0gCjEuNi4wLjQK
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>61492</attachid>
            <date>2010-07-14 02:22:01 -0700</date>
            <delta_ts>2010-07-15 02:17:18 -0700</delta_ts>
            <desc>the second part</desc>
            <filename>0001-lexer-style.patch</filename>
            <type>text/plain</type>
            <size>12595</size>
            <attacher name="Zoltan Herczeg">zherczeg</attacher>
            
              <data encoding="base64">RnJvbSAxY2UxNjlmYTU3NGU2Y2M5N2QyZGU4YjMzYWU3NTJjNWE0OGZiZGVhIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBab2x0YW4gSGVyY3plZyA8emhlcmN6ZWdAaW5mLnUtc3plZ2Vk
Lmh1PgpEYXRlOiBXZWQsIDE0IEp1bCAyMDEwIDExOjE5OjA0ICswMjAwClN1YmplY3Q6IFtQQVRD
SF0gbGV4ZXItc3R5bGUKClNpZ25lZC1vZmYtYnk6IFpvbHRhbiBIZXJjemVnIDx6aGVyY3plZ0Bp
bmYudS1zemVnZWQuaHU+Ci0tLQogSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nICAgICAgICB8ICAg
MjUgKysrKysrCiBKYXZhU2NyaXB0Q29yZS9wYXJzZXIvTGV4ZXIuY3BwIHwgIDE2MCArKysrKysr
KysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLS0tLS0KIDIgZmlsZXMgY2hhbmdlZCwgMTA0IGlu
c2VydGlvbnMoKyksIDgxIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3Jl
L0NoYW5nZUxvZyBiL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBkNTVlNjMyLi41ODBl
Zjc4IDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKKysrIGIvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nCkBAIC0yLDYgKzIsMzEgQEAKIAogICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KIAorICAgICAgICBSZWZhY3RvcmluZyBzb21lIHBhcnRzIG9mIHRoZSBs
ZXhlcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDE4
NDUKKworICAgICAgICBUaGlzIHBhdGNoIGlzIGEgcHJlY3Vyc29yIG9mIHJlZmFjdG9yaW5nIHRo
ZSBpZGVudGlmaWVyCisgICAgICAgIHBhcnNpbmcsIHdoaWNoIGN1cnJlbnRseSBzbG93cyBkb3du
IHRoZSBsZXhlciwgYW5kIG5vdAorICAgICAgICByZWFkeSBmb3IgbGFuZGluZy4gVGhpcyBwYXRj
aCBjb250YWlucyB0aG9zZSBzb3VyY2VzLAorICAgICAgICB3aGljaCBkb2VzIG5vdCBzbG93IGRv
d24gdGhlIGxleGVyIChtYWlubHkgc3R5bGUgY2hhbmdlcykuCisKKyAgICAgICAgU3VuU3BpZGVy
OiBubyBjaGFuZ2UgKDUyOS40bXMgdG8gNTI4LjdtcykKKyAgICAgICAgLS1wYXJzZS1vbmx5OiBu
byBjaGFuZ2UgKDMxLjBtcyB0byAzMS4ybXMpCisKKyAgICAgICAgKiBwYXJzZXIvTGV4ZXIuY3Bw
OgorICAgICAgICAoSlNDOjopOgorICAgICAgICAoSlNDOjppc0lkZW50U3RhcnQpOiB1c2luZyB0
eXBlc09mQVNDSUlDaGFyYWN0ZXJzIHRvIGRldGVybWluZQorICAgICAgICAgICAgIHdoZXRoZXIg
dGhlIGN1cnJlbnQgY2hhcmFjdGVyIGlzIGluIGlkZW50aWZpZXIgc3RhcnQKKyAgICAgICAgKEpT
Qzo6aXNJZGVudFBhcnQpOiB1c2luZyB0eXBlc09mQVNDSUlDaGFyYWN0ZXJzIHRvIGRldGVybWlu
ZQorICAgICAgICAgICAgIHdoZXRoZXIgdGhlIGN1cnJlbnQgY2hhcmFjdGVyIGlzIGluIGlkZW50
aWZpZXIgcGFydAorICAgICAgICAoSlNDOjpMZXhlcjo6cGFyc2VTdHJpbmcpOiBzdHlsZSBmaXgK
KyAgICAgICAgKEpTQzo6TGV4ZXI6OmxleCk6IHJlbW92aW5nIHRoZSBlbHNlIGFmdGVyIHRoZSBt
YWluIHdoaWNoCisgICAgICAgICAgICAgd2hpY2ggcmVkdWNlcyBjb2RlIGR1cGxpY2F0aW9uCisK
KzIwMTAtMDctMTQgIFpvbHRhbiBIZXJjemVnICA8emhlcmN6ZWdAd2Via2l0Lm9yZz4KKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwogICAgICAgICBDaGFuZ2UgaW5kZW50
YXRpb25zIGluIHRoZSBsZXhlcgogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9NDE4NDUKIApkaWZmIC0tZ2l0IGEvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0xl
eGVyLmNwcCBiL0phdmFTY3JpcHRDb3JlL3BhcnNlci9MZXhlci5jcHAKaW5kZXggOGEwYTNmNC4u
NjQ1N2IxOCAxMDA2NDQKLS0tIGEvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0xleGVyLmNwcAorKysg
Yi9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTGV4ZXIuY3BwCkBAIC00NiwxNCArNDYsMTYgQEAgdXNp
bmcgbmFtZXNwYWNlIFVuaWNvZGU7CiBuYW1lc3BhY2UgSlNDIHsKIAogCi1lbnVtIENoYXJhY3Rl
clR5cGVzIHsKK2VudW0gQ2hhcmFjdGVyVHlwZSB7CiAgICAgLy8gVHlwZXMgZm9yIHRoZSBtYWlu
IHN3aXRjaAotICAgIENoYXJhY3RlckludmFsaWQsCiAKLSAgICBDaGFyYWN0ZXJBbHBoYSwKKyAg
ICAvLyBUaGUgZmlyc3QgdGhyZWUgdHlwZXMgYXJlIGZpeGVkLCBhbmQgYWxzbyB1c2VkIGZvciBp
ZGVudGlmeWluZworICAgIC8vIEFTQ0lJIGFscGhhIGFuZCBhbHBoYW51bWVyaWMgY2hhcmFjdGVy
cyAoc2VlIGlzSWRlbnRTdGFydCBhbmQgaXNJZGVudFBhcnQpLgorICAgIENoYXJhY3RlcklkZW50
aWZpZXJTdGFydCwKICAgICBDaGFyYWN0ZXJaZXJvLAogICAgIENoYXJhY3Rlck51bWJlciwKIAor
ICAgIENoYXJhY3RlckludmFsaWQsCiAgICAgQ2hhcmFjdGVyTGluZVRlcm1pbmF0b3IsCiAgICAg
Q2hhcmFjdGVyRXhjbGFtYXRpb25NYXJrLAogICAgIENoYXJhY3Rlck9wZW5QYXJlbiwKQEAgLTg3
LDggKzg5LDggQEAgZW51bSBDaGFyYWN0ZXJUeXBlcyB7CiAgICAgQ2hhcmFjdGVyV2hpdGVTcGFj
ZSwKIH07CiAKLS8vIDEyOCBhc2NpaSBjb2Rlcwotc3RhdGljIHVuc2lnbmVkIHNob3J0IEFzY2lp
Q2hhcmFjdGVyc1sxMjhdID0geworLy8gMTI4IEFTQ0lJIGNvZGVzCitzdGF0aWMgY29uc3QgdW5z
aWduZWQgc2hvcnQgdHlwZXNPZkFTQ0lJQ2hhcmFjdGVyc1sxMjhdID0gewogLyogICAwIC0gTnVs
bCAgICAgICAgICAgICAgICovIENoYXJhY3RlckludmFsaWQsCiAvKiAgIDEgLSBTdGFydCBvZiBI
ZWFkaW5nICAgKi8gQ2hhcmFjdGVySW52YWxpZCwKIC8qICAgMiAtIFN0YXJ0IG9mIFRleHQgICAg
ICAqLyBDaGFyYWN0ZXJJbnZhbGlkLApAQCAtMTI1LDcgKzEyNyw3IEBAIHN0YXRpYyB1bnNpZ25l
ZCBzaG9ydCBBc2NpaUNoYXJhY3RlcnNbMTI4XSA9IHsKIC8qICAzMyAtICEgICAgICAgICAgICAg
ICAgICAqLyBDaGFyYWN0ZXJFeGNsYW1hdGlvbk1hcmssCiAvKiAgMzQgLSAiICAgICAgICAgICAg
ICAgICAgKi8gQ2hhcmFjdGVyUXVvdGUsCiAvKiAgMzUgLSAjICAgICAgICAgICAgICAgICAgKi8g
Q2hhcmFjdGVySW52YWxpZCwKLS8qICAzNiAtICQgICAgICAgICAgICAgICAgICAqLyBDaGFyYWN0
ZXJBbHBoYSwKKy8qICAzNiAtICQgICAgICAgICAgICAgICAgICAqLyBDaGFyYWN0ZXJJZGVudGlm
aWVyU3RhcnQsCiAvKiAgMzcgLSAlICAgICAgICAgICAgICAgICAgKi8gQ2hhcmFjdGVyTW9kdWxv
LAogLyogIDM4IC0gJiAgICAgICAgICAgICAgICAgICovIENoYXJhY3RlckFuZCwKIC8qICAzOSAt
ICcgICAgICAgICAgICAgICAgICAqLyBDaGFyYWN0ZXJRdW90ZSwKQEAgLTE1NCw2NCArMTU2LDY0
IEBAIHN0YXRpYyB1bnNpZ25lZCBzaG9ydCBBc2NpaUNoYXJhY3RlcnNbMTI4XSA9IHsKIC8qICA2
MiAtID4gICAgICAgICAgICAgICAgICAqLyBDaGFyYWN0ZXJHcmVhdGVyLAogLyogIDYzIC0gPyAg
ICAgICAgICAgICAgICAgICovIENoYXJhY3RlclF1ZXN0aW9uLAogLyogIDY0IC0gQCAgICAgICAg
ICAgICAgICAgICovIENoYXJhY3RlckludmFsaWQsCi0vKiAgNjUgLSBBICAgICAgICAgICAgICAg
ICAgKi8gQ2hhcmFjdGVyQWxwaGEsCi0vKiAgNjYgLSBCICAgICAgICAgICAgICAgICAgKi8gQ2hh
cmFjdGVyQWxwaGEsCi0vKiAgNjcgLSBDICAgICAgICAgICAgICAgICAgKi8gQ2hhcmFjdGVyQWxw
aGEsCi0vKiAgNjggLSBEICAgICAgICAgICAgICAgICAgKi8gQ2hhcmFjdGVyQWxwaGEsCi0vKiAg
NjkgLSBFICAgICAgICAgICAgICAgICAgKi8gQ2hhcmFjdGVyQWxwaGEsCi0vKiAgNzAgLSBGICAg
ICAgICAgICAgICAgICAgKi8gQ2hhcmFjdGVyQWxwaGEsCi0vKiAgNzEgLSBHICAgICAgICAgICAg
ICAgICAgKi8gQ2hhcmFjdGVyQWxwaGEsCi0vKiAgNzIgLSBIICAgICAgICAgICAgICAgICAgKi8g
Q2hhcmFjdGVyQWxwaGEsCi0vKiAgNzMgLSBJICAgICAgICAgICAgICAgICAgKi8gQ2hhcmFjdGVy
QWxwaGEsCi0vKiAgNzQgLSBKICAgICAgICAgICAgICAgICAgKi8gQ2hhcmFjdGVyQWxwaGEsCi0v
KiAgNzUgLSBLICAgICAgICAgICAgICAgICAgKi8gQ2hhcmFjdGVyQWxwaGEsCi0vKiAgNzYgLSBM
ICAgICAgICAgICAgICAgICAgKi8gQ2hhcmFjdGVyQWxwaGEsCi0vKiAgNzcgLSBNICAgICAgICAg
ICAgICAgICAgKi8gQ2hhcmFjdGVyQWxwaGEsCi0vKiAgNzggLSBOICAgICAgICAgICAgICAgICAg
Ki8gQ2hhcmFjdGVyQWxwaGEsCi0vKiAgNzkgLSBPICAgICAgICAgICAgICAgICAgKi8gQ2hhcmFj
dGVyQWxwaGEsCi0vKiAgODAgLSBQICAgICAgICAgICAgICAgICAgKi8gQ2hhcmFjdGVyQWxwaGEs
Ci0vKiAgODEgLSBRICAgICAgICAgICAgICAgICAgKi8gQ2hhcmFjdGVyQWxwaGEsCi0vKiAgODIg
LSBSICAgICAgICAgICAgICAgICAgKi8gQ2hhcmFjdGVyQWxwaGEsCi0vKiAgODMgLSBTICAgICAg
ICAgICAgICAgICAgKi8gQ2hhcmFjdGVyQWxwaGEsCi0vKiAgODQgLSBUICAgICAgICAgICAgICAg
ICAgKi8gQ2hhcmFjdGVyQWxwaGEsCi0vKiAgODUgLSBVICAgICAgICAgICAgICAgICAgKi8gQ2hh
cmFjdGVyQWxwaGEsCi0vKiAgODYgLSBWICAgICAgICAgICAgICAgICAgKi8gQ2hhcmFjdGVyQWxw
aGEsCi0vKiAgODcgLSBXICAgICAgICAgICAgICAgICAgKi8gQ2hhcmFjdGVyQWxwaGEsCi0vKiAg
ODggLSBYICAgICAgICAgICAgICAgICAgKi8gQ2hhcmFjdGVyQWxwaGEsCi0vKiAgODkgLSBZICAg
ICAgICAgICAgICAgICAgKi8gQ2hhcmFjdGVyQWxwaGEsCi0vKiAgOTAgLSBaICAgICAgICAgICAg
ICAgICAgKi8gQ2hhcmFjdGVyQWxwaGEsCisvKiAgNjUgLSBBICAgICAgICAgICAgICAgICAgKi8g
Q2hhcmFjdGVySWRlbnRpZmllclN0YXJ0LAorLyogIDY2IC0gQiAgICAgICAgICAgICAgICAgICov
IENoYXJhY3RlcklkZW50aWZpZXJTdGFydCwKKy8qICA2NyAtIEMgICAgICAgICAgICAgICAgICAq
LyBDaGFyYWN0ZXJJZGVudGlmaWVyU3RhcnQsCisvKiAgNjggLSBEICAgICAgICAgICAgICAgICAg
Ki8gQ2hhcmFjdGVySWRlbnRpZmllclN0YXJ0LAorLyogIDY5IC0gRSAgICAgICAgICAgICAgICAg
ICovIENoYXJhY3RlcklkZW50aWZpZXJTdGFydCwKKy8qICA3MCAtIEYgICAgICAgICAgICAgICAg
ICAqLyBDaGFyYWN0ZXJJZGVudGlmaWVyU3RhcnQsCisvKiAgNzEgLSBHICAgICAgICAgICAgICAg
ICAgKi8gQ2hhcmFjdGVySWRlbnRpZmllclN0YXJ0LAorLyogIDcyIC0gSCAgICAgICAgICAgICAg
ICAgICovIENoYXJhY3RlcklkZW50aWZpZXJTdGFydCwKKy8qICA3MyAtIEkgICAgICAgICAgICAg
ICAgICAqLyBDaGFyYWN0ZXJJZGVudGlmaWVyU3RhcnQsCisvKiAgNzQgLSBKICAgICAgICAgICAg
ICAgICAgKi8gQ2hhcmFjdGVySWRlbnRpZmllclN0YXJ0LAorLyogIDc1IC0gSyAgICAgICAgICAg
ICAgICAgICovIENoYXJhY3RlcklkZW50aWZpZXJTdGFydCwKKy8qICA3NiAtIEwgICAgICAgICAg
ICAgICAgICAqLyBDaGFyYWN0ZXJJZGVudGlmaWVyU3RhcnQsCisvKiAgNzcgLSBNICAgICAgICAg
ICAgICAgICAgKi8gQ2hhcmFjdGVySWRlbnRpZmllclN0YXJ0LAorLyogIDc4IC0gTiAgICAgICAg
ICAgICAgICAgICovIENoYXJhY3RlcklkZW50aWZpZXJTdGFydCwKKy8qICA3OSAtIE8gICAgICAg
ICAgICAgICAgICAqLyBDaGFyYWN0ZXJJZGVudGlmaWVyU3RhcnQsCisvKiAgODAgLSBQICAgICAg
ICAgICAgICAgICAgKi8gQ2hhcmFjdGVySWRlbnRpZmllclN0YXJ0LAorLyogIDgxIC0gUSAgICAg
ICAgICAgICAgICAgICovIENoYXJhY3RlcklkZW50aWZpZXJTdGFydCwKKy8qICA4MiAtIFIgICAg
ICAgICAgICAgICAgICAqLyBDaGFyYWN0ZXJJZGVudGlmaWVyU3RhcnQsCisvKiAgODMgLSBTICAg
ICAgICAgICAgICAgICAgKi8gQ2hhcmFjdGVySWRlbnRpZmllclN0YXJ0LAorLyogIDg0IC0gVCAg
ICAgICAgICAgICAgICAgICovIENoYXJhY3RlcklkZW50aWZpZXJTdGFydCwKKy8qICA4NSAtIFUg
ICAgICAgICAgICAgICAgICAqLyBDaGFyYWN0ZXJJZGVudGlmaWVyU3RhcnQsCisvKiAgODYgLSBW
ICAgICAgICAgICAgICAgICAgKi8gQ2hhcmFjdGVySWRlbnRpZmllclN0YXJ0LAorLyogIDg3IC0g
VyAgICAgICAgICAgICAgICAgICovIENoYXJhY3RlcklkZW50aWZpZXJTdGFydCwKKy8qICA4OCAt
IFggICAgICAgICAgICAgICAgICAqLyBDaGFyYWN0ZXJJZGVudGlmaWVyU3RhcnQsCisvKiAgODkg
LSBZICAgICAgICAgICAgICAgICAgKi8gQ2hhcmFjdGVySWRlbnRpZmllclN0YXJ0LAorLyogIDkw
IC0gWiAgICAgICAgICAgICAgICAgICovIENoYXJhY3RlcklkZW50aWZpZXJTdGFydCwKIC8qICA5
MSAtIFsgICAgICAgICAgICAgICAgICAqLyBDaGFyYWN0ZXJPcGVuQnJhY2tldCwKIC8qICA5MiAt
IFwgICAgICAgICAgICAgICAgICAqLyBDaGFyYWN0ZXJCYWNrU2xhc2gsCiAvKiAgOTMgLSBdICAg
ICAgICAgICAgICAgICAgKi8gQ2hhcmFjdGVyQ2xvc2VCcmFja2V0LAogLyogIDk0IC0gXiAgICAg
ICAgICAgICAgICAgICovIENoYXJhY3RlclhvciwKLS8qICA5NSAtIF8gICAgICAgICAgICAgICAg
ICAqLyBDaGFyYWN0ZXJBbHBoYSwKKy8qICA5NSAtIF8gICAgICAgICAgICAgICAgICAqLyBDaGFy
YWN0ZXJJZGVudGlmaWVyU3RhcnQsCiAvKiAgOTYgLSBgICAgICAgICAgICAgICAgICAgKi8gQ2hh
cmFjdGVySW52YWxpZCwKLS8qICA5NyAtIGEgICAgICAgICAgICAgICAgICAqLyBDaGFyYWN0ZXJB
bHBoYSwKLS8qICA5OCAtIGIgICAgICAgICAgICAgICAgICAqLyBDaGFyYWN0ZXJBbHBoYSwKLS8q
ICA5OSAtIGMgICAgICAgICAgICAgICAgICAqLyBDaGFyYWN0ZXJBbHBoYSwKLS8qIDEwMCAtIGQg
ICAgICAgICAgICAgICAgICAqLyBDaGFyYWN0ZXJBbHBoYSwKLS8qIDEwMSAtIGUgICAgICAgICAg
ICAgICAgICAqLyBDaGFyYWN0ZXJBbHBoYSwKLS8qIDEwMiAtIGYgICAgICAgICAgICAgICAgICAq
LyBDaGFyYWN0ZXJBbHBoYSwKLS8qIDEwMyAtIGcgICAgICAgICAgICAgICAgICAqLyBDaGFyYWN0
ZXJBbHBoYSwKLS8qIDEwNCAtIGggICAgICAgICAgICAgICAgICAqLyBDaGFyYWN0ZXJBbHBoYSwK
LS8qIDEwNSAtIGkgICAgICAgICAgICAgICAgICAqLyBDaGFyYWN0ZXJBbHBoYSwKLS8qIDEwNiAt
IGogICAgICAgICAgICAgICAgICAqLyBDaGFyYWN0ZXJBbHBoYSwKLS8qIDEwNyAtIGsgICAgICAg
ICAgICAgICAgICAqLyBDaGFyYWN0ZXJBbHBoYSwKLS8qIDEwOCAtIGwgICAgICAgICAgICAgICAg
ICAqLyBDaGFyYWN0ZXJBbHBoYSwKLS8qIDEwOSAtIG0gICAgICAgICAgICAgICAgICAqLyBDaGFy
YWN0ZXJBbHBoYSwKLS8qIDExMCAtIG4gICAgICAgICAgICAgICAgICAqLyBDaGFyYWN0ZXJBbHBo
YSwKLS8qIDExMSAtIG8gICAgICAgICAgICAgICAgICAqLyBDaGFyYWN0ZXJBbHBoYSwKLS8qIDEx
MiAtIHAgICAgICAgICAgICAgICAgICAqLyBDaGFyYWN0ZXJBbHBoYSwKLS8qIDExMyAtIHEgICAg
ICAgICAgICAgICAgICAqLyBDaGFyYWN0ZXJBbHBoYSwKLS8qIDExNCAtIHIgICAgICAgICAgICAg
ICAgICAqLyBDaGFyYWN0ZXJBbHBoYSwKLS8qIDExNSAtIHMgICAgICAgICAgICAgICAgICAqLyBD
aGFyYWN0ZXJBbHBoYSwKLS8qIDExNiAtIHQgICAgICAgICAgICAgICAgICAqLyBDaGFyYWN0ZXJB
bHBoYSwKLS8qIDExNyAtIHUgICAgICAgICAgICAgICAgICAqLyBDaGFyYWN0ZXJBbHBoYSwKLS8q
IDExOCAtIHYgICAgICAgICAgICAgICAgICAqLyBDaGFyYWN0ZXJBbHBoYSwKLS8qIDExOSAtIHcg
ICAgICAgICAgICAgICAgICAqLyBDaGFyYWN0ZXJBbHBoYSwKLS8qIDEyMCAtIHggICAgICAgICAg
ICAgICAgICAqLyBDaGFyYWN0ZXJBbHBoYSwKLS8qIDEyMSAtIHkgICAgICAgICAgICAgICAgICAq
LyBDaGFyYWN0ZXJBbHBoYSwKLS8qIDEyMiAtIHogICAgICAgICAgICAgICAgICAqLyBDaGFyYWN0
ZXJBbHBoYSwKKy8qICA5NyAtIGEgICAgICAgICAgICAgICAgICAqLyBDaGFyYWN0ZXJJZGVudGlm
aWVyU3RhcnQsCisvKiAgOTggLSBiICAgICAgICAgICAgICAgICAgKi8gQ2hhcmFjdGVySWRlbnRp
ZmllclN0YXJ0LAorLyogIDk5IC0gYyAgICAgICAgICAgICAgICAgICovIENoYXJhY3RlcklkZW50
aWZpZXJTdGFydCwKKy8qIDEwMCAtIGQgICAgICAgICAgICAgICAgICAqLyBDaGFyYWN0ZXJJZGVu
dGlmaWVyU3RhcnQsCisvKiAxMDEgLSBlICAgICAgICAgICAgICAgICAgKi8gQ2hhcmFjdGVySWRl
bnRpZmllclN0YXJ0LAorLyogMTAyIC0gZiAgICAgICAgICAgICAgICAgICovIENoYXJhY3Rlcklk
ZW50aWZpZXJTdGFydCwKKy8qIDEwMyAtIGcgICAgICAgICAgICAgICAgICAqLyBDaGFyYWN0ZXJJ
ZGVudGlmaWVyU3RhcnQsCisvKiAxMDQgLSBoICAgICAgICAgICAgICAgICAgKi8gQ2hhcmFjdGVy
SWRlbnRpZmllclN0YXJ0LAorLyogMTA1IC0gaSAgICAgICAgICAgICAgICAgICovIENoYXJhY3Rl
cklkZW50aWZpZXJTdGFydCwKKy8qIDEwNiAtIGogICAgICAgICAgICAgICAgICAqLyBDaGFyYWN0
ZXJJZGVudGlmaWVyU3RhcnQsCisvKiAxMDcgLSBrICAgICAgICAgICAgICAgICAgKi8gQ2hhcmFj
dGVySWRlbnRpZmllclN0YXJ0LAorLyogMTA4IC0gbCAgICAgICAgICAgICAgICAgICovIENoYXJh
Y3RlcklkZW50aWZpZXJTdGFydCwKKy8qIDEwOSAtIG0gICAgICAgICAgICAgICAgICAqLyBDaGFy
YWN0ZXJJZGVudGlmaWVyU3RhcnQsCisvKiAxMTAgLSBuICAgICAgICAgICAgICAgICAgKi8gQ2hh
cmFjdGVySWRlbnRpZmllclN0YXJ0LAorLyogMTExIC0gbyAgICAgICAgICAgICAgICAgICovIENo
YXJhY3RlcklkZW50aWZpZXJTdGFydCwKKy8qIDExMiAtIHAgICAgICAgICAgICAgICAgICAqLyBD
aGFyYWN0ZXJJZGVudGlmaWVyU3RhcnQsCisvKiAxMTMgLSBxICAgICAgICAgICAgICAgICAgKi8g
Q2hhcmFjdGVySWRlbnRpZmllclN0YXJ0LAorLyogMTE0IC0gciAgICAgICAgICAgICAgICAgICov
IENoYXJhY3RlcklkZW50aWZpZXJTdGFydCwKKy8qIDExNSAtIHMgICAgICAgICAgICAgICAgICAq
LyBDaGFyYWN0ZXJJZGVudGlmaWVyU3RhcnQsCisvKiAxMTYgLSB0ICAgICAgICAgICAgICAgICAg
Ki8gQ2hhcmFjdGVySWRlbnRpZmllclN0YXJ0LAorLyogMTE3IC0gdSAgICAgICAgICAgICAgICAg
ICovIENoYXJhY3RlcklkZW50aWZpZXJTdGFydCwKKy8qIDExOCAtIHYgICAgICAgICAgICAgICAg
ICAqLyBDaGFyYWN0ZXJJZGVudGlmaWVyU3RhcnQsCisvKiAxMTkgLSB3ICAgICAgICAgICAgICAg
ICAgKi8gQ2hhcmFjdGVySWRlbnRpZmllclN0YXJ0LAorLyogMTIwIC0geCAgICAgICAgICAgICAg
ICAgICovIENoYXJhY3RlcklkZW50aWZpZXJTdGFydCwKKy8qIDEyMSAtIHkgICAgICAgICAgICAg
ICAgICAqLyBDaGFyYWN0ZXJJZGVudGlmaWVyU3RhcnQsCisvKiAxMjIgLSB6ICAgICAgICAgICAg
ICAgICAgKi8gQ2hhcmFjdGVySWRlbnRpZmllclN0YXJ0LAogLyogMTIzIC0geyAgICAgICAgICAg
ICAgICAgICovIENoYXJhY3Rlck9wZW5CcmFjZSwKIC8qIDEyNCAtIHwgICAgICAgICAgICAgICAg
ICAqLyBDaGFyYWN0ZXJPciwKIC8qIDEyNSAtIH0gICAgICAgICAgICAgICAgICAqLyBDaGFyYWN0
ZXJDbG9zZUJyYWNlLApAQCAtMzM1LDcgKzMzNyw3IEBAIHN0YXRpYyBORVZFUl9JTkxJTkUgYm9v
bCBpc05vbkFTQ0lJSWRlbnRTdGFydChpbnQgYykKIAogc3RhdGljIGlubGluZSBib29sIGlzSWRl
bnRTdGFydChpbnQgYykKIHsKLSAgICByZXR1cm4gaXNBU0NJSShjKSA/IGlzQVNDSUlBbHBoYShj
KSB8fCBjID09ICckJyB8fCBjID09ICdfJyA6IGlzTm9uQVNDSUlJZGVudFN0YXJ0KGMpOworICAg
IHJldHVybiBpc0FTQ0lJKGMpID8gdHlwZXNPZkFTQ0lJQ2hhcmFjdGVyc1tjXSA9PSBDaGFyYWN0
ZXJJZGVudGlmaWVyU3RhcnQgOiBpc05vbkFTQ0lJSWRlbnRTdGFydChjKTsKIH0KIAogc3RhdGlj
IE5FVkVSX0lOTElORSBib29sIGlzTm9uQVNDSUlJZGVudFBhcnQoaW50IGMpCkBAIC0zNDYsNyAr
MzQ4LDEwIEBAIHN0YXRpYyBORVZFUl9JTkxJTkUgYm9vbCBpc05vbkFTQ0lJSWRlbnRQYXJ0KGlu
dCBjKQogCiBzdGF0aWMgaW5saW5lIGJvb2wgaXNJZGVudFBhcnQoaW50IGMpCiB7Ci0gICAgcmV0
dXJuIGlzQVNDSUkoYykgPyBpc0FTQ0lJQWxwaGFudW1lcmljKGMpIHx8IGMgPT0gJyQnIHx8IGMg
PT0gJ18nIDogaXNOb25BU0NJSUlkZW50UGFydChjKTsKKyAgICAvLyBDaGFyYWN0ZXIgdHlwZXMg
YXJlIGRpdmlkZWQgaW50byB0d28gZ3JvdXBzIGRlcGVuZGluZyB0aGV5IGNhbiBiZSBwYXJ0IG9m
IGFuIGlkZW50aWZpZXIgb3Igbm90LgorICAgIC8vIFRob3NlLCB3aG9zZSB0eXBlIHZhbHVlIGlz
IGxlc3Mgb3IgZXF1YWwgdGhhbiBDaGFyYWN0ZXJOdW1iZXIsIGNhbiBiZSBwYXJ0IG9mIGFuIGlk
ZW50aWZpZXIuCisgICAgLy8gKHNlZSB0aGUgQ2hhcmFjdGVyVHlwZSBkZWZpbnRpb24gZm9yIG1v
cmUgZGV0YWlscykKKyAgICByZXR1cm4gaXNBU0NJSShjKSA/IHR5cGVzT2ZBU0NJSUNoYXJhY3Rl
cnNbY10gPD0gQ2hhcmFjdGVyTnVtYmVyIDogaXNOb25BU0NJSUlkZW50UGFydChjKTsKIH0KIAog
c3RhdGljIGlubGluZSBpbnQgc2luZ2xlRXNjYXBlKGludCBjKQpAQCAtNDU2LDcgKzQ2MSw4IEBA
IEFMV0FZU19JTkxJTkUgYm9vbCBMZXhlcjo6cGFyc2VTdHJpbmcoSlNUb2tlbkRhdGEqIGx2YWxw
KQogCiAgICAgICAgICAgICBzdHJpbmdTdGFydCA9IGN1cnJlbnRDaGFyYWN0ZXIoKTsKICAgICAg
ICAgICAgIGNvbnRpbnVlOwotICAgICAgICB9IGVsc2UgaWYgKFVOTElLRUxZKCgoc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KG1fY3VycmVudCkgLSAweEUpICYgMHgyMDAwKSkpIHsKKyAgICAgICAgfQor
ICAgICAgICBpZiAoVU5MSUtFTFkoKChzdGF0aWNfY2FzdDx1bnNpZ25lZD4obV9jdXJyZW50KSAt
IDB4RSkgJiAweDIwMDApKSkgewogICAgICAgICAgICAgLy8gTmV3LWxpbmUgb3IgZW5kIG9mIGlu
cHV0IGlzIG5vdCBhbGxvd2VkCiAgICAgICAgICAgICBpZiAoVU5MSUtFTFkoaXNMaW5lVGVybWlu
YXRvcihtX2N1cnJlbnQpKSB8fCBVTkxJS0VMWShtX2N1cnJlbnQgPT0gLTEpKQogICAgICAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTQ5MywxMCArNDk5LDE3IEBAIHN0YXJ0OgogCiAgICAg
bV9kZWxpbWl0ZWQgPSBmYWxzZTsKIAotICAgIGlmIChpc0FTQ0lJKG1fY3VycmVudCkpIHsKLSAg
ICAgICAgQVNTRVJUKG1fY3VycmVudCA+PSAwICYmIG1fY3VycmVudCA8IDEyOCk7CisgICAgQ2hh
cmFjdGVyVHlwZSB0eXBlOworICAgIGlmIChMSUtFTFkoaXNBU0NJSShtX2N1cnJlbnQpKSkKKyAg
ICAgICAgdHlwZSA9IHN0YXRpY19jYXN0PENoYXJhY3RlclR5cGU+KHR5cGVzT2ZBU0NJSUNoYXJh
Y3RlcnNbbV9jdXJyZW50XSk7CisgICAgZWxzZSBpZiAoaXNOb25BU0NJSUlkZW50U3RhcnQobV9j
dXJyZW50KSkKKyAgICAgICAgdHlwZSA9IENoYXJhY3RlcklkZW50aWZpZXJTdGFydDsKKyAgICBl
bHNlIGlmIChpc0xpbmVUZXJtaW5hdG9yKG1fY3VycmVudCkpCisgICAgICAgIHR5cGUgPSBDaGFy
YWN0ZXJMaW5lVGVybWluYXRvcjsKKyAgICBlbHNlCisgICAgICAgIHR5cGUgPSBDaGFyYWN0ZXJJ
bnZhbGlkOwogCi0gICAgc3dpdGNoIChBc2NpaUNoYXJhY3RlcnNbbV9jdXJyZW50XSkgeworICAg
IHN3aXRjaCAodHlwZSkgewogICAgIGNhc2UgQ2hhcmFjdGVyR3JlYXRlcjoKICAgICAgICAgc2hp
ZnQoKTsKICAgICAgICAgaWYgKG1fY3VycmVudCA9PSAnPicpIHsKQEAgLTc1MCw3ICs3NjMsNyBA
QCBzdGFydDoKICAgICAgICAgbV9kZWxpbWl0ZWQgPSBmYWxzZTsKICAgICAgICAgdG9rZW4gPSBT
VFJJTkc7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgQ2hhcmFjdGVyQWxwaGE6CisgICAgY2Fz
ZSBDaGFyYWN0ZXJJZGVudGlmaWVyU3RhcnQ6CiAgICAgICAgIEFTU0VSVChpc0lkZW50U3RhcnQo
bV9jdXJyZW50KSk7CiAgICAgICAgIGdvdG8gc3RhcnRJZGVudGlmaWVyT3JLZXl3b3JkOwogICAg
IGNhc2UgQ2hhcmFjdGVyTGluZVRlcm1pbmF0b3I6CkBAIC03NjksMjEgKzc4Miw2IEBAIHN0YXJ0
OgogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgZ290byByZXR1cm5FcnJv
cjsKICAgICB9Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgLy8gUmFyZSBjaGFyYWN0ZXJzCi0KLSAg
ICAgICAgaWYgKGlzTm9uQVNDSUlJZGVudFN0YXJ0KG1fY3VycmVudCkpCi0gICAgICAgICAgICBn
b3RvIHN0YXJ0SWRlbnRpZmllck9yS2V5d29yZDsKLSAgICAgICAgaWYgKGlzTGluZVRlcm1pbmF0
b3IobV9jdXJyZW50KSkgewotICAgICAgICAgICAgc2hpZnRMaW5lVGVybWluYXRvcigpOwotICAg
ICAgICAgICAgbV9hdExpbmVTdGFydCA9IHRydWU7Ci0gICAgICAgICAgICBtX3Rlcm1pbmF0b3Ig
PSB0cnVlOwotICAgICAgICAgICAgaWYgKGxhc3RUb2tlbldhc1Jlc3RyS2V5d29yZCgpKQotICAg
ICAgICAgICAgICAgIGdvdG8gZG9uZVNlbWljb2xvbjsKLSAgICAgICAgICAgIGdvdG8gc3RhcnQ7
Ci0gICAgICAgIH0KLSAgICAgICAgZ290byByZXR1cm5FcnJvcjsKLSAgICB9CiAKICAgICBtX2F0
TGluZVN0YXJ0ID0gZmFsc2U7CiAgICAgZ290byByZXR1cm5Ub2tlbjsKLS0gCjEuNi4wLjQKCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>61619</attachid>
            <date>2010-07-15 02:17:18 -0700</date>
            <delta_ts>2010-07-15 07:24:18 -0700</delta_ts>
            <desc>the second part again</desc>
            <filename>0001-lexer-style.patch</filename>
            <type>text/plain</type>
            <size>12534</size>
            <attacher name="Zoltan Herczeg">zherczeg</attacher>
            
              <data encoding="base64">RnJvbSA1MTY1YjVmZjQwNjc2N2U3NzNhYmNmMDY4YmI1YTRkZjA3OWYxOTA0IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBab2x0YW4gSGVyY3plZyA8emhlcmN6ZWdAaW5mLnUtc3plZ2Vk
Lmh1PgpEYXRlOiBUaHUsIDE1IEp1bCAyMDEwIDEwOjQ1OjEzICswMjAwClN1YmplY3Q6IFtQQVRD
SF0gbGV4ZXIgc3R5bGUKClNpZ25lZC1vZmYtYnk6IFpvbHRhbiBIZXJjemVnIDx6aGVyY3plZ0Bp
bmYudS1zemVnZWQuaHU+Ci0tLQogSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nICAgICAgICB8ICAg
MjQgKysrKysrCiBKYXZhU2NyaXB0Q29yZS9wYXJzZXIvTGV4ZXIuY3BwIHwgIDE2MCArKysrKysr
KysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLS0tLS0KIDIgZmlsZXMgY2hhbmdlZCwgMTAzIGlu
c2VydGlvbnMoKyksIDgxIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3Jl
L0NoYW5nZUxvZyBiL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAwYjQ5ZWQ0Li4wZmM5
YzMyIDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKKysrIGIvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjcgQEAKKzIwMTAtMDctMTUgIFpvbHRhbiBIZXJj
emVnICA8emhlcmN6ZWdAd2Via2l0Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBSZWZhY3RvcmluZyBzb21lIHBhcnRzIG9mIHRoZSBsZXhlcgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDE4NDUKKwor
ICAgICAgICBUaGlzIHBhdGNoIGlzIGEgcHJlY3Vyc29yIG9mIHJlZmFjdG9yaW5nIHRoZSBpZGVu
dGlmaWVyCisgICAgICAgIHBhcnNpbmcsIHdoaWNoIGN1cnJlbnRseSBzbG93cyBkb3duIHRoZSBs
ZXhlciwgYW5kIG5vdAorICAgICAgICByZWFkeSBmb3IgbGFuZGluZy4gVGhpcyBwYXRjaCBjb250
YWlucyB0aG9zZSBzb3VyY2VzLAorICAgICAgICB3aGljaCBkb2VzIG5vdCBzbG93IGRvd24gdGhl
IGxleGVyIChtYWlubHkgc3R5bGUgY2hhbmdlcykuCisKKyAgICAgICAgU3VuU3BpZGVyOiBubyBj
aGFuZ2UgKDUyOS40bXMgdG8gNTI4LjdtcykKKyAgICAgICAgLS1wYXJzZS1vbmx5OiBubyBjaGFu
Z2UgKDMxLjBtcyB0byAzMS4ybXMpCisKKyAgICAgICAgKiBwYXJzZXIvTGV4ZXIuY3BwOgorICAg
ICAgICAoSlNDOjppc0lkZW50U3RhcnQpOiB1c2luZyB0eXBlc09mQVNDSUlDaGFyYWN0ZXJzIHRv
IGRldGVybWluZQorICAgICAgICAgICAgIHdoZXRoZXIgdGhlIGN1cnJlbnQgY2hhcmFjdGVyIGlz
IGluIGlkZW50aWZpZXIgc3RhcnQKKyAgICAgICAgKEpTQzo6aXNJZGVudFBhcnQpOiB1c2luZyB0
eXBlc09mQVNDSUlDaGFyYWN0ZXJzIHRvIGRldGVybWluZQorICAgICAgICAgICAgIHdoZXRoZXIg
dGhlIGN1cnJlbnQgY2hhcmFjdGVyIGlzIGluIGlkZW50aWZpZXIgcGFydAorICAgICAgICAoSlND
OjpMZXhlcjo6cGFyc2VTdHJpbmcpOiBzdHlsZSBmaXgKKyAgICAgICAgKEpTQzo6TGV4ZXI6Omxl
eCk6IHJlbW92aW5nIHRoZSBlbHNlIGFmdGVyIHRoZSBtYWluIHdoaWNoCisgICAgICAgICAgICAg
d2hpY2ggcmVkdWNlcyBjb2RlIGR1cGxpY2F0aW9uCisKIDIwMTAtMDctMTQgIE9saXZlciBIdW50
ICA8b2xpdmVyQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBHYXZpbiBCYXJyYWNs
b3VnaC4KZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL3BhcnNlci9MZXhlci5jcHAgYi9KYXZh
U2NyaXB0Q29yZS9wYXJzZXIvTGV4ZXIuY3BwCmluZGV4IDhhMGEzZjQuLmE1N2Y4YzcgMTAwNjQ0
Ci0tLSBhL0phdmFTY3JpcHRDb3JlL3BhcnNlci9MZXhlci5jcHAKKysrIGIvSmF2YVNjcmlwdENv
cmUvcGFyc2VyL0xleGVyLmNwcApAQCAtNDYsMTQgKzQ2LDE2IEBAIHVzaW5nIG5hbWVzcGFjZSBV
bmljb2RlOwogbmFtZXNwYWNlIEpTQyB7CiAKIAotZW51bSBDaGFyYWN0ZXJUeXBlcyB7CitlbnVt
IENoYXJhY3RlclR5cGUgewogICAgIC8vIFR5cGVzIGZvciB0aGUgbWFpbiBzd2l0Y2gKLSAgICBD
aGFyYWN0ZXJJbnZhbGlkLAogCi0gICAgQ2hhcmFjdGVyQWxwaGEsCisgICAgLy8gVGhlIGZpcnN0
IHRocmVlIHR5cGVzIGFyZSBmaXhlZCwgYW5kIGFsc28gdXNlZCBmb3IgaWRlbnRpZnlpbmcKKyAg
ICAvLyBBU0NJSSBhbHBoYSBhbmQgYWxwaGFudW1lcmljIGNoYXJhY3RlcnMgKHNlZSBpc0lkZW50
U3RhcnQgYW5kIGlzSWRlbnRQYXJ0KS4KKyAgICBDaGFyYWN0ZXJJZGVudGlmaWVyU3RhcnQsCiAg
ICAgQ2hhcmFjdGVyWmVybywKICAgICBDaGFyYWN0ZXJOdW1iZXIsCiAKKyAgICBDaGFyYWN0ZXJJ
bnZhbGlkLAogICAgIENoYXJhY3RlckxpbmVUZXJtaW5hdG9yLAogICAgIENoYXJhY3RlckV4Y2xh
bWF0aW9uTWFyaywKICAgICBDaGFyYWN0ZXJPcGVuUGFyZW4sCkBAIC04Nyw4ICs4OSw4IEBAIGVu
dW0gQ2hhcmFjdGVyVHlwZXMgewogICAgIENoYXJhY3RlcldoaXRlU3BhY2UsCiB9OwogCi0vLyAx
MjggYXNjaWkgY29kZXMKLXN0YXRpYyB1bnNpZ25lZCBzaG9ydCBBc2NpaUNoYXJhY3RlcnNbMTI4
XSA9IHsKKy8vIDEyOCBBU0NJSSBjb2Rlcworc3RhdGljIGNvbnN0IHVuc2lnbmVkIHNob3J0IHR5
cGVzT2ZBU0NJSUNoYXJhY3RlcnNbMTI4XSA9IHsKIC8qICAgMCAtIE51bGwgICAgICAgICAgICAg
ICAqLyBDaGFyYWN0ZXJJbnZhbGlkLAogLyogICAxIC0gU3RhcnQgb2YgSGVhZGluZyAgICovIENo
YXJhY3RlckludmFsaWQsCiAvKiAgIDIgLSBTdGFydCBvZiBUZXh0ICAgICAgKi8gQ2hhcmFjdGVy
SW52YWxpZCwKQEAgLTEyNSw3ICsxMjcsNyBAQCBzdGF0aWMgdW5zaWduZWQgc2hvcnQgQXNjaWlD
aGFyYWN0ZXJzWzEyOF0gPSB7CiAvKiAgMzMgLSAhICAgICAgICAgICAgICAgICAgKi8gQ2hhcmFj
dGVyRXhjbGFtYXRpb25NYXJrLAogLyogIDM0IC0gIiAgICAgICAgICAgICAgICAgICovIENoYXJh
Y3RlclF1b3RlLAogLyogIDM1IC0gIyAgICAgICAgICAgICAgICAgICovIENoYXJhY3RlckludmFs
aWQsCi0vKiAgMzYgLSAkICAgICAgICAgICAgICAgICAgKi8gQ2hhcmFjdGVyQWxwaGEsCisvKiAg
MzYgLSAkICAgICAgICAgICAgICAgICAgKi8gQ2hhcmFjdGVySWRlbnRpZmllclN0YXJ0LAogLyog
IDM3IC0gJSAgICAgICAgICAgICAgICAgICovIENoYXJhY3Rlck1vZHVsbywKIC8qICAzOCAtICYg
ICAgICAgICAgICAgICAgICAqLyBDaGFyYWN0ZXJBbmQsCiAvKiAgMzkgLSAnICAgICAgICAgICAg
ICAgICAgKi8gQ2hhcmFjdGVyUXVvdGUsCkBAIC0xNTQsNjQgKzE1Niw2NCBAQCBzdGF0aWMgdW5z
aWduZWQgc2hvcnQgQXNjaWlDaGFyYWN0ZXJzWzEyOF0gPSB7CiAvKiAgNjIgLSA+ICAgICAgICAg
ICAgICAgICAgKi8gQ2hhcmFjdGVyR3JlYXRlciwKIC8qICA2MyAtID8gICAgICAgICAgICAgICAg
ICAqLyBDaGFyYWN0ZXJRdWVzdGlvbiwKIC8qICA2NCAtIEAgICAgICAgICAgICAgICAgICAqLyBD
aGFyYWN0ZXJJbnZhbGlkLAotLyogIDY1IC0gQSAgICAgICAgICAgICAgICAgICovIENoYXJhY3Rl
ckFscGhhLAotLyogIDY2IC0gQiAgICAgICAgICAgICAgICAgICovIENoYXJhY3RlckFscGhhLAot
LyogIDY3IC0gQyAgICAgICAgICAgICAgICAgICovIENoYXJhY3RlckFscGhhLAotLyogIDY4IC0g
RCAgICAgICAgICAgICAgICAgICovIENoYXJhY3RlckFscGhhLAotLyogIDY5IC0gRSAgICAgICAg
ICAgICAgICAgICovIENoYXJhY3RlckFscGhhLAotLyogIDcwIC0gRiAgICAgICAgICAgICAgICAg
ICovIENoYXJhY3RlckFscGhhLAotLyogIDcxIC0gRyAgICAgICAgICAgICAgICAgICovIENoYXJh
Y3RlckFscGhhLAotLyogIDcyIC0gSCAgICAgICAgICAgICAgICAgICovIENoYXJhY3RlckFscGhh
LAotLyogIDczIC0gSSAgICAgICAgICAgICAgICAgICovIENoYXJhY3RlckFscGhhLAotLyogIDc0
IC0gSiAgICAgICAgICAgICAgICAgICovIENoYXJhY3RlckFscGhhLAotLyogIDc1IC0gSyAgICAg
ICAgICAgICAgICAgICovIENoYXJhY3RlckFscGhhLAotLyogIDc2IC0gTCAgICAgICAgICAgICAg
ICAgICovIENoYXJhY3RlckFscGhhLAotLyogIDc3IC0gTSAgICAgICAgICAgICAgICAgICovIENo
YXJhY3RlckFscGhhLAotLyogIDc4IC0gTiAgICAgICAgICAgICAgICAgICovIENoYXJhY3RlckFs
cGhhLAotLyogIDc5IC0gTyAgICAgICAgICAgICAgICAgICovIENoYXJhY3RlckFscGhhLAotLyog
IDgwIC0gUCAgICAgICAgICAgICAgICAgICovIENoYXJhY3RlckFscGhhLAotLyogIDgxIC0gUSAg
ICAgICAgICAgICAgICAgICovIENoYXJhY3RlckFscGhhLAotLyogIDgyIC0gUiAgICAgICAgICAg
ICAgICAgICovIENoYXJhY3RlckFscGhhLAotLyogIDgzIC0gUyAgICAgICAgICAgICAgICAgICov
IENoYXJhY3RlckFscGhhLAotLyogIDg0IC0gVCAgICAgICAgICAgICAgICAgICovIENoYXJhY3Rl
ckFscGhhLAotLyogIDg1IC0gVSAgICAgICAgICAgICAgICAgICovIENoYXJhY3RlckFscGhhLAot
LyogIDg2IC0gViAgICAgICAgICAgICAgICAgICovIENoYXJhY3RlckFscGhhLAotLyogIDg3IC0g
VyAgICAgICAgICAgICAgICAgICovIENoYXJhY3RlckFscGhhLAotLyogIDg4IC0gWCAgICAgICAg
ICAgICAgICAgICovIENoYXJhY3RlckFscGhhLAotLyogIDg5IC0gWSAgICAgICAgICAgICAgICAg
ICovIENoYXJhY3RlckFscGhhLAotLyogIDkwIC0gWiAgICAgICAgICAgICAgICAgICovIENoYXJh
Y3RlckFscGhhLAorLyogIDY1IC0gQSAgICAgICAgICAgICAgICAgICovIENoYXJhY3RlcklkZW50
aWZpZXJTdGFydCwKKy8qICA2NiAtIEIgICAgICAgICAgICAgICAgICAqLyBDaGFyYWN0ZXJJZGVu
dGlmaWVyU3RhcnQsCisvKiAgNjcgLSBDICAgICAgICAgICAgICAgICAgKi8gQ2hhcmFjdGVySWRl
bnRpZmllclN0YXJ0LAorLyogIDY4IC0gRCAgICAgICAgICAgICAgICAgICovIENoYXJhY3Rlcklk
ZW50aWZpZXJTdGFydCwKKy8qICA2OSAtIEUgICAgICAgICAgICAgICAgICAqLyBDaGFyYWN0ZXJJ
ZGVudGlmaWVyU3RhcnQsCisvKiAgNzAgLSBGICAgICAgICAgICAgICAgICAgKi8gQ2hhcmFjdGVy
SWRlbnRpZmllclN0YXJ0LAorLyogIDcxIC0gRyAgICAgICAgICAgICAgICAgICovIENoYXJhY3Rl
cklkZW50aWZpZXJTdGFydCwKKy8qICA3MiAtIEggICAgICAgICAgICAgICAgICAqLyBDaGFyYWN0
ZXJJZGVudGlmaWVyU3RhcnQsCisvKiAgNzMgLSBJICAgICAgICAgICAgICAgICAgKi8gQ2hhcmFj
dGVySWRlbnRpZmllclN0YXJ0LAorLyogIDc0IC0gSiAgICAgICAgICAgICAgICAgICovIENoYXJh
Y3RlcklkZW50aWZpZXJTdGFydCwKKy8qICA3NSAtIEsgICAgICAgICAgICAgICAgICAqLyBDaGFy
YWN0ZXJJZGVudGlmaWVyU3RhcnQsCisvKiAgNzYgLSBMICAgICAgICAgICAgICAgICAgKi8gQ2hh
cmFjdGVySWRlbnRpZmllclN0YXJ0LAorLyogIDc3IC0gTSAgICAgICAgICAgICAgICAgICovIENo
YXJhY3RlcklkZW50aWZpZXJTdGFydCwKKy8qICA3OCAtIE4gICAgICAgICAgICAgICAgICAqLyBD
aGFyYWN0ZXJJZGVudGlmaWVyU3RhcnQsCisvKiAgNzkgLSBPICAgICAgICAgICAgICAgICAgKi8g
Q2hhcmFjdGVySWRlbnRpZmllclN0YXJ0LAorLyogIDgwIC0gUCAgICAgICAgICAgICAgICAgICov
IENoYXJhY3RlcklkZW50aWZpZXJTdGFydCwKKy8qICA4MSAtIFEgICAgICAgICAgICAgICAgICAq
LyBDaGFyYWN0ZXJJZGVudGlmaWVyU3RhcnQsCisvKiAgODIgLSBSICAgICAgICAgICAgICAgICAg
Ki8gQ2hhcmFjdGVySWRlbnRpZmllclN0YXJ0LAorLyogIDgzIC0gUyAgICAgICAgICAgICAgICAg
ICovIENoYXJhY3RlcklkZW50aWZpZXJTdGFydCwKKy8qICA4NCAtIFQgICAgICAgICAgICAgICAg
ICAqLyBDaGFyYWN0ZXJJZGVudGlmaWVyU3RhcnQsCisvKiAgODUgLSBVICAgICAgICAgICAgICAg
ICAgKi8gQ2hhcmFjdGVySWRlbnRpZmllclN0YXJ0LAorLyogIDg2IC0gViAgICAgICAgICAgICAg
ICAgICovIENoYXJhY3RlcklkZW50aWZpZXJTdGFydCwKKy8qICA4NyAtIFcgICAgICAgICAgICAg
ICAgICAqLyBDaGFyYWN0ZXJJZGVudGlmaWVyU3RhcnQsCisvKiAgODggLSBYICAgICAgICAgICAg
ICAgICAgKi8gQ2hhcmFjdGVySWRlbnRpZmllclN0YXJ0LAorLyogIDg5IC0gWSAgICAgICAgICAg
ICAgICAgICovIENoYXJhY3RlcklkZW50aWZpZXJTdGFydCwKKy8qICA5MCAtIFogICAgICAgICAg
ICAgICAgICAqLyBDaGFyYWN0ZXJJZGVudGlmaWVyU3RhcnQsCiAvKiAgOTEgLSBbICAgICAgICAg
ICAgICAgICAgKi8gQ2hhcmFjdGVyT3BlbkJyYWNrZXQsCiAvKiAgOTIgLSBcICAgICAgICAgICAg
ICAgICAgKi8gQ2hhcmFjdGVyQmFja1NsYXNoLAogLyogIDkzIC0gXSAgICAgICAgICAgICAgICAg
ICovIENoYXJhY3RlckNsb3NlQnJhY2tldCwKIC8qICA5NCAtIF4gICAgICAgICAgICAgICAgICAq
LyBDaGFyYWN0ZXJYb3IsCi0vKiAgOTUgLSBfICAgICAgICAgICAgICAgICAgKi8gQ2hhcmFjdGVy
QWxwaGEsCisvKiAgOTUgLSBfICAgICAgICAgICAgICAgICAgKi8gQ2hhcmFjdGVySWRlbnRpZmll
clN0YXJ0LAogLyogIDk2IC0gYCAgICAgICAgICAgICAgICAgICovIENoYXJhY3RlckludmFsaWQs
Ci0vKiAgOTcgLSBhICAgICAgICAgICAgICAgICAgKi8gQ2hhcmFjdGVyQWxwaGEsCi0vKiAgOTgg
LSBiICAgICAgICAgICAgICAgICAgKi8gQ2hhcmFjdGVyQWxwaGEsCi0vKiAgOTkgLSBjICAgICAg
ICAgICAgICAgICAgKi8gQ2hhcmFjdGVyQWxwaGEsCi0vKiAxMDAgLSBkICAgICAgICAgICAgICAg
ICAgKi8gQ2hhcmFjdGVyQWxwaGEsCi0vKiAxMDEgLSBlICAgICAgICAgICAgICAgICAgKi8gQ2hh
cmFjdGVyQWxwaGEsCi0vKiAxMDIgLSBmICAgICAgICAgICAgICAgICAgKi8gQ2hhcmFjdGVyQWxw
aGEsCi0vKiAxMDMgLSBnICAgICAgICAgICAgICAgICAgKi8gQ2hhcmFjdGVyQWxwaGEsCi0vKiAx
MDQgLSBoICAgICAgICAgICAgICAgICAgKi8gQ2hhcmFjdGVyQWxwaGEsCi0vKiAxMDUgLSBpICAg
ICAgICAgICAgICAgICAgKi8gQ2hhcmFjdGVyQWxwaGEsCi0vKiAxMDYgLSBqICAgICAgICAgICAg
ICAgICAgKi8gQ2hhcmFjdGVyQWxwaGEsCi0vKiAxMDcgLSBrICAgICAgICAgICAgICAgICAgKi8g
Q2hhcmFjdGVyQWxwaGEsCi0vKiAxMDggLSBsICAgICAgICAgICAgICAgICAgKi8gQ2hhcmFjdGVy
QWxwaGEsCi0vKiAxMDkgLSBtICAgICAgICAgICAgICAgICAgKi8gQ2hhcmFjdGVyQWxwaGEsCi0v
KiAxMTAgLSBuICAgICAgICAgICAgICAgICAgKi8gQ2hhcmFjdGVyQWxwaGEsCi0vKiAxMTEgLSBv
ICAgICAgICAgICAgICAgICAgKi8gQ2hhcmFjdGVyQWxwaGEsCi0vKiAxMTIgLSBwICAgICAgICAg
ICAgICAgICAgKi8gQ2hhcmFjdGVyQWxwaGEsCi0vKiAxMTMgLSBxICAgICAgICAgICAgICAgICAg
Ki8gQ2hhcmFjdGVyQWxwaGEsCi0vKiAxMTQgLSByICAgICAgICAgICAgICAgICAgKi8gQ2hhcmFj
dGVyQWxwaGEsCi0vKiAxMTUgLSBzICAgICAgICAgICAgICAgICAgKi8gQ2hhcmFjdGVyQWxwaGEs
Ci0vKiAxMTYgLSB0ICAgICAgICAgICAgICAgICAgKi8gQ2hhcmFjdGVyQWxwaGEsCi0vKiAxMTcg
LSB1ICAgICAgICAgICAgICAgICAgKi8gQ2hhcmFjdGVyQWxwaGEsCi0vKiAxMTggLSB2ICAgICAg
ICAgICAgICAgICAgKi8gQ2hhcmFjdGVyQWxwaGEsCi0vKiAxMTkgLSB3ICAgICAgICAgICAgICAg
ICAgKi8gQ2hhcmFjdGVyQWxwaGEsCi0vKiAxMjAgLSB4ICAgICAgICAgICAgICAgICAgKi8gQ2hh
cmFjdGVyQWxwaGEsCi0vKiAxMjEgLSB5ICAgICAgICAgICAgICAgICAgKi8gQ2hhcmFjdGVyQWxw
aGEsCi0vKiAxMjIgLSB6ICAgICAgICAgICAgICAgICAgKi8gQ2hhcmFjdGVyQWxwaGEsCisvKiAg
OTcgLSBhICAgICAgICAgICAgICAgICAgKi8gQ2hhcmFjdGVySWRlbnRpZmllclN0YXJ0LAorLyog
IDk4IC0gYiAgICAgICAgICAgICAgICAgICovIENoYXJhY3RlcklkZW50aWZpZXJTdGFydCwKKy8q
ICA5OSAtIGMgICAgICAgICAgICAgICAgICAqLyBDaGFyYWN0ZXJJZGVudGlmaWVyU3RhcnQsCisv
KiAxMDAgLSBkICAgICAgICAgICAgICAgICAgKi8gQ2hhcmFjdGVySWRlbnRpZmllclN0YXJ0LAor
LyogMTAxIC0gZSAgICAgICAgICAgICAgICAgICovIENoYXJhY3RlcklkZW50aWZpZXJTdGFydCwK
Ky8qIDEwMiAtIGYgICAgICAgICAgICAgICAgICAqLyBDaGFyYWN0ZXJJZGVudGlmaWVyU3RhcnQs
CisvKiAxMDMgLSBnICAgICAgICAgICAgICAgICAgKi8gQ2hhcmFjdGVySWRlbnRpZmllclN0YXJ0
LAorLyogMTA0IC0gaCAgICAgICAgICAgICAgICAgICovIENoYXJhY3RlcklkZW50aWZpZXJTdGFy
dCwKKy8qIDEwNSAtIGkgICAgICAgICAgICAgICAgICAqLyBDaGFyYWN0ZXJJZGVudGlmaWVyU3Rh
cnQsCisvKiAxMDYgLSBqICAgICAgICAgICAgICAgICAgKi8gQ2hhcmFjdGVySWRlbnRpZmllclN0
YXJ0LAorLyogMTA3IC0gayAgICAgICAgICAgICAgICAgICovIENoYXJhY3RlcklkZW50aWZpZXJT
dGFydCwKKy8qIDEwOCAtIGwgICAgICAgICAgICAgICAgICAqLyBDaGFyYWN0ZXJJZGVudGlmaWVy
U3RhcnQsCisvKiAxMDkgLSBtICAgICAgICAgICAgICAgICAgKi8gQ2hhcmFjdGVySWRlbnRpZmll
clN0YXJ0LAorLyogMTEwIC0gbiAgICAgICAgICAgICAgICAgICovIENoYXJhY3RlcklkZW50aWZp
ZXJTdGFydCwKKy8qIDExMSAtIG8gICAgICAgICAgICAgICAgICAqLyBDaGFyYWN0ZXJJZGVudGlm
aWVyU3RhcnQsCisvKiAxMTIgLSBwICAgICAgICAgICAgICAgICAgKi8gQ2hhcmFjdGVySWRlbnRp
ZmllclN0YXJ0LAorLyogMTEzIC0gcSAgICAgICAgICAgICAgICAgICovIENoYXJhY3RlcklkZW50
aWZpZXJTdGFydCwKKy8qIDExNCAtIHIgICAgICAgICAgICAgICAgICAqLyBDaGFyYWN0ZXJJZGVu
dGlmaWVyU3RhcnQsCisvKiAxMTUgLSBzICAgICAgICAgICAgICAgICAgKi8gQ2hhcmFjdGVySWRl
bnRpZmllclN0YXJ0LAorLyogMTE2IC0gdCAgICAgICAgICAgICAgICAgICovIENoYXJhY3Rlcklk
ZW50aWZpZXJTdGFydCwKKy8qIDExNyAtIHUgICAgICAgICAgICAgICAgICAqLyBDaGFyYWN0ZXJJ
ZGVudGlmaWVyU3RhcnQsCisvKiAxMTggLSB2ICAgICAgICAgICAgICAgICAgKi8gQ2hhcmFjdGVy
SWRlbnRpZmllclN0YXJ0LAorLyogMTE5IC0gdyAgICAgICAgICAgICAgICAgICovIENoYXJhY3Rl
cklkZW50aWZpZXJTdGFydCwKKy8qIDEyMCAtIHggICAgICAgICAgICAgICAgICAqLyBDaGFyYWN0
ZXJJZGVudGlmaWVyU3RhcnQsCisvKiAxMjEgLSB5ICAgICAgICAgICAgICAgICAgKi8gQ2hhcmFj
dGVySWRlbnRpZmllclN0YXJ0LAorLyogMTIyIC0geiAgICAgICAgICAgICAgICAgICovIENoYXJh
Y3RlcklkZW50aWZpZXJTdGFydCwKIC8qIDEyMyAtIHsgICAgICAgICAgICAgICAgICAqLyBDaGFy
YWN0ZXJPcGVuQnJhY2UsCiAvKiAxMjQgLSB8ICAgICAgICAgICAgICAgICAgKi8gQ2hhcmFjdGVy
T3IsCiAvKiAxMjUgLSB9ICAgICAgICAgICAgICAgICAgKi8gQ2hhcmFjdGVyQ2xvc2VCcmFjZSwK
QEAgLTMzNSw3ICszMzcsNyBAQCBzdGF0aWMgTkVWRVJfSU5MSU5FIGJvb2wgaXNOb25BU0NJSUlk
ZW50U3RhcnQoaW50IGMpCiAKIHN0YXRpYyBpbmxpbmUgYm9vbCBpc0lkZW50U3RhcnQoaW50IGMp
CiB7Ci0gICAgcmV0dXJuIGlzQVNDSUkoYykgPyBpc0FTQ0lJQWxwaGEoYykgfHwgYyA9PSAnJCcg
fHwgYyA9PSAnXycgOiBpc05vbkFTQ0lJSWRlbnRTdGFydChjKTsKKyAgICByZXR1cm4gaXNBU0NJ
SShjKSA/IHR5cGVzT2ZBU0NJSUNoYXJhY3RlcnNbY10gPT0gQ2hhcmFjdGVySWRlbnRpZmllclN0
YXJ0IDogaXNOb25BU0NJSUlkZW50U3RhcnQoYyk7CiB9CiAKIHN0YXRpYyBORVZFUl9JTkxJTkUg
Ym9vbCBpc05vbkFTQ0lJSWRlbnRQYXJ0KGludCBjKQpAQCAtMzQ2LDcgKzM0OCwxMCBAQCBzdGF0
aWMgTkVWRVJfSU5MSU5FIGJvb2wgaXNOb25BU0NJSUlkZW50UGFydChpbnQgYykKIAogc3RhdGlj
IGlubGluZSBib29sIGlzSWRlbnRQYXJ0KGludCBjKQogewotICAgIHJldHVybiBpc0FTQ0lJKGMp
ID8gaXNBU0NJSUFscGhhbnVtZXJpYyhjKSB8fCBjID09ICckJyB8fCBjID09ICdfJyA6IGlzTm9u
QVNDSUlJZGVudFBhcnQoYyk7CisgICAgLy8gQ2hhcmFjdGVyIHR5cGVzIGFyZSBkaXZpZGVkIGlu
dG8gdHdvIGdyb3VwcyBkZXBlbmRpbmcgb24gd2hldGhlciB0aGV5IGNhbiBiZSBwYXJ0IG9mIGFu
CisgICAgLy8gaWRlbnRpZmllciBvciBub3QuIFRob3NlIHdob3NlIHR5cGUgdmFsdWUgaXMgbGVz
cyBvciBlcXVhbCB0aGFuIENoYXJhY3Rlck51bWJlciBjYW4gYmUKKyAgICAvLyBwYXJ0IG9mIGFu
IGlkZW50aWZpZXIuIChTZWUgdGhlIENoYXJhY3RlclR5cGUgZGVmaW50aW9uIGZvciBtb3JlIGRl
dGFpbHMuKQorICAgIHJldHVybiBpc0FTQ0lJKGMpID8gdHlwZXNPZkFTQ0lJQ2hhcmFjdGVyc1tj
XSA8PSBDaGFyYWN0ZXJOdW1iZXIgOiBpc05vbkFTQ0lJSWRlbnRQYXJ0KGMpOwogfQogCiBzdGF0
aWMgaW5saW5lIGludCBzaW5nbGVFc2NhcGUoaW50IGMpCkBAIC00NTYsNyArNDYxLDggQEAgQUxX
QVlTX0lOTElORSBib29sIExleGVyOjpwYXJzZVN0cmluZyhKU1Rva2VuRGF0YSogbHZhbHApCiAK
ICAgICAgICAgICAgIHN0cmluZ1N0YXJ0ID0gY3VycmVudENoYXJhY3RlcigpOwogICAgICAgICAg
ICAgY29udGludWU7Ci0gICAgICAgIH0gZWxzZSBpZiAoVU5MSUtFTFkoKChzdGF0aWNfY2FzdDx1
bnNpZ25lZD4obV9jdXJyZW50KSAtIDB4RSkgJiAweDIwMDApKSkgeworICAgICAgICB9CisgICAg
ICAgIGlmIChVTkxJS0VMWSgoKHN0YXRpY19jYXN0PHVuc2lnbmVkPihtX2N1cnJlbnQpIC0gMHhF
KSAmIDB4MjAwMCkpKSB7CiAgICAgICAgICAgICAvLyBOZXctbGluZSBvciBlbmQgb2YgaW5wdXQg
aXMgbm90IGFsbG93ZWQKICAgICAgICAgICAgIGlmIChVTkxJS0VMWShpc0xpbmVUZXJtaW5hdG9y
KG1fY3VycmVudCkpIHx8IFVOTElLRUxZKG1fY3VycmVudCA9PSAtMSkpCiAgICAgICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOwpAQCAtNDkzLDEwICs0OTksMTcgQEAgc3RhcnQ6CiAKICAgICBtX2Rl
bGltaXRlZCA9IGZhbHNlOwogCi0gICAgaWYgKGlzQVNDSUkobV9jdXJyZW50KSkgewotICAgICAg
ICBBU1NFUlQobV9jdXJyZW50ID49IDAgJiYgbV9jdXJyZW50IDwgMTI4KTsKKyAgICBDaGFyYWN0
ZXJUeXBlIHR5cGU7CisgICAgaWYgKExJS0VMWShpc0FTQ0lJKG1fY3VycmVudCkpKQorICAgICAg
ICB0eXBlID0gc3RhdGljX2Nhc3Q8Q2hhcmFjdGVyVHlwZT4odHlwZXNPZkFTQ0lJQ2hhcmFjdGVy
c1ttX2N1cnJlbnRdKTsKKyAgICBlbHNlIGlmIChpc05vbkFTQ0lJSWRlbnRTdGFydChtX2N1cnJl
bnQpKQorICAgICAgICB0eXBlID0gQ2hhcmFjdGVySWRlbnRpZmllclN0YXJ0OworICAgIGVsc2Ug
aWYgKGlzTGluZVRlcm1pbmF0b3IobV9jdXJyZW50KSkKKyAgICAgICAgdHlwZSA9IENoYXJhY3Rl
ckxpbmVUZXJtaW5hdG9yOworICAgIGVsc2UKKyAgICAgICAgdHlwZSA9IENoYXJhY3RlckludmFs
aWQ7CiAKLSAgICBzd2l0Y2ggKEFzY2lpQ2hhcmFjdGVyc1ttX2N1cnJlbnRdKSB7CisgICAgc3dp
dGNoICh0eXBlKSB7CiAgICAgY2FzZSBDaGFyYWN0ZXJHcmVhdGVyOgogICAgICAgICBzaGlmdCgp
OwogICAgICAgICBpZiAobV9jdXJyZW50ID09ICc+JykgewpAQCAtNzUwLDcgKzc2Myw3IEBAIHN0
YXJ0OgogICAgICAgICBtX2RlbGltaXRlZCA9IGZhbHNlOwogICAgICAgICB0b2tlbiA9IFNUUklO
RzsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBDaGFyYWN0ZXJBbHBoYToKKyAgICBjYXNlIENo
YXJhY3RlcklkZW50aWZpZXJTdGFydDoKICAgICAgICAgQVNTRVJUKGlzSWRlbnRTdGFydChtX2N1
cnJlbnQpKTsKICAgICAgICAgZ290byBzdGFydElkZW50aWZpZXJPcktleXdvcmQ7CiAgICAgY2Fz
ZSBDaGFyYWN0ZXJMaW5lVGVybWluYXRvcjoKQEAgLTc2OSwyMSArNzgyLDYgQEAgc3RhcnQ6CiAg
ICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICBnb3RvIHJldHVybkVycm9yOwog
ICAgIH0KLSAgICB9IGVsc2UgewotICAgICAgICAvLyBSYXJlIGNoYXJhY3RlcnMKLQotICAgICAg
ICBpZiAoaXNOb25BU0NJSUlkZW50U3RhcnQobV9jdXJyZW50KSkKLSAgICAgICAgICAgIGdvdG8g
c3RhcnRJZGVudGlmaWVyT3JLZXl3b3JkOwotICAgICAgICBpZiAoaXNMaW5lVGVybWluYXRvciht
X2N1cnJlbnQpKSB7Ci0gICAgICAgICAgICBzaGlmdExpbmVUZXJtaW5hdG9yKCk7Ci0gICAgICAg
ICAgICBtX2F0TGluZVN0YXJ0ID0gdHJ1ZTsKLSAgICAgICAgICAgIG1fdGVybWluYXRvciA9IHRy
dWU7Ci0gICAgICAgICAgICBpZiAobGFzdFRva2VuV2FzUmVzdHJLZXl3b3JkKCkpCi0gICAgICAg
ICAgICAgICAgZ290byBkb25lU2VtaWNvbG9uOwotICAgICAgICAgICAgZ290byBzdGFydDsKLSAg
ICAgICAgfQotICAgICAgICBnb3RvIHJldHVybkVycm9yOwotICAgIH0KIAogICAgIG1fYXRMaW5l
U3RhcnQgPSBmYWxzZTsKICAgICBnb3RvIHJldHVyblRva2VuOwotLSAKMS42LjAuNAoK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>63582</attachid>
            <date>2010-08-05 06:28:53 -0700</date>
            <delta_ts>2010-08-05 06:52:13 -0700</delta_ts>
            <desc>identifier parsing patch</desc>
            <filename>0001-ident.patch</filename>
            <type>text/plain</type>
            <size>7169</size>
            <attacher name="Zoltan Herczeg">zherczeg</attacher>
            
              <data encoding="base64">RnJvbSA3MTAwZGE3ZjZlMDliYmYwYTk5MjVmYjE2MzY2OTkwODZkMTliOGU3IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBab2x0YW4gSGVyY3plZyA8emhlcmN6ZWdAaW5mLnUtc3plZ2Vk
Lmh1PgpEYXRlOiBUaHUsIDUgQXVnIDIwMTAgMTU6MjQ6NTYgKzAyMDAKU3ViamVjdDogW1BBVENI
XSBpZGVudAoKU2lnbmVkLW9mZi1ieTogWm9sdGFuIEhlcmN6ZWcgPHpoZXJjemVnQGluZi51LXN6
ZWdlZC5odT4KLS0tCiBKYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgICAgICAgIHwgICAxOCArKysr
KysKIEphdmFTY3JpcHRDb3JlL3BhcnNlci9MZXhlci5jcHAgfCAgMTI3ICsrKysrKysrKysrKysr
KysrLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiBKYXZhU2NyaXB0Q29yZS9wYXJzZXIvTGV4ZXIuaCAg
IHwgICAgMSArCiAzIGZpbGVzIGNoYW5nZWQsIDc2IGluc2VydGlvbnMoKyksIDcwIGRlbGV0aW9u
cygtKQoKZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZyBiL0phdmFTY3JpcHRD
b3JlL0NoYW5nZUxvZwppbmRleCAwOTlmMzBiLi4xMGE0ODQyIDEwMDY0NAotLS0gYS9KYXZhU2Ny
aXB0Q29yZS9DaGFuZ2VMb2cKKysrIGIvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMjEgQEAKKzIwMTAtMDgtMDUgIFpvbHRhbiBIZXJjemVnICA8emhlcmN6ZWdAd2Via2l0Lm9y
Zz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZWZh
Y3RvciBpZGVudGlmaWVyIHBhcnNpbmcgaW4gbGV4ZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQxODQ1CisKKyAgICAgICAgVGhlIGNvZGUgaXMgcmVm
YWN0b3JlZCB0byBhdm9pZCBnb3Rvcy4gVGhlIG5ldyBjb2RlCisgICAgICAgIGhhcyB0aGUgc2Ft
ZSBwZXJmb3JtYW5jZSBhcyB0aGUgb2xkIG9uZS4KKworICAgICAgICBTdW5TcGlkZXIgLS1wYXJz
ZS1vbmx5OiBubyBjaGFuZ2UgKGZyb20gMzQuMG1zIHRvIDMzLjZtcykKKyAgICAgICAgU3VuU3Bp
ZGVyOiBubyBjaGFuZ2UgKGZyb20gNTIzLjJtcyB0byA1MjMuNW1zKQorCisgICAgICAgICogcGFy
c2VyL0xleGVyLmNwcDoKKyAgICAgICAgKEpTQzo6TGV4ZXI6OnBhcnNlSWRlbnQpOgorICAgICAg
ICAoSlNDOjpMZXhlcjo6bGV4KToKKyAgICAgICAgKiBwYXJzZXIvTGV4ZXIuaDoKKwogMjAxMC0w
OC0wMyAgR2VvZmZyZXkgR2FyZW4gIDxnZ2FyZW5AYXBwbGUuY29tPgogCiAgICAgICAgIFJldmll
d2VkIGJ5IE9saXZlciBIdW50IGFuZCBCZXRoIERha2luLgpkaWZmIC0tZ2l0IGEvSmF2YVNjcmlw
dENvcmUvcGFyc2VyL0xleGVyLmNwcCBiL0phdmFTY3JpcHRDb3JlL3BhcnNlci9MZXhlci5jcHAK
aW5kZXggZDdhMTIyZS4uODhjZjA0MiAxMDA2NDQKLS0tIGEvSmF2YVNjcmlwdENvcmUvcGFyc2Vy
L0xleGVyLmNwcAorKysgYi9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTGV4ZXIuY3BwCkBAIC0zOTks
NiArMzk5LDU5IEBAIGlubGluZSB2b2lkIExleGVyOjpyZWNvcmQxNihpbnQgYykKICAgICByZWNv
cmQxNihVQ2hhcihzdGF0aWNfY2FzdDx1bnNpZ25lZCBzaG9ydD4oYykpKTsKIH0KIAorQUxXQVlT
X0lOTElORSBKU1Rva2VuVHlwZSBMZXhlcjo6cGFyc2VJZGVudChKU1Rva2VuRGF0YSogbHZhbHAs
IExleFR5cGUgbGV4VHlwZSkKK3sKKyAgICBib29sIGJ1ZmZlclJlcXVpcmVkID0gZmFsc2U7Cisg
ICAgY29uc3QgVUNoYXIqIGlkZW50aWZpZXJTdGFydCA9IGN1cnJlbnRDaGFyYWN0ZXIoKTsKKyAg
ICBpbnQgaWRlbnRpZmllckxlbmd0aDsKKworICAgIHdoaWxlICh0cnVlKSB7CisgICAgICAgIGlm
IChMSUtFTFkoaXNJZGVudFBhcnQobV9jdXJyZW50KSkpCisgICAgICAgICAgICBzaGlmdCgpOwor
ICAgICAgICBlbHNlIGlmIChMSUtFTFkobV9jdXJyZW50ICE9ICdcXCcpKQorICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgLy8gXHVYWFhYIHVuaWNvZGUgY2hh
cmFjdGVycworICAgICAgICAgICAgYnVmZmVyUmVxdWlyZWQgPSB0cnVlOworICAgICAgICAgICAg
aWYgKGlkZW50aWZpZXJTdGFydCAhPSBjdXJyZW50Q2hhcmFjdGVyKCkpCisgICAgICAgICAgICAg
ICAgbV9idWZmZXIxNi5hcHBlbmQoaWRlbnRpZmllclN0YXJ0LCBjdXJyZW50Q2hhcmFjdGVyKCkg
LSBpZGVudGlmaWVyU3RhcnQpOworICAgICAgICAgICAgc2hpZnQoKTsKKyAgICAgICAgICAgIGlm
IChVTkxJS0VMWShtX2N1cnJlbnQgIT0gJ3UnKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gRVJS
T1JUT0s7CisgICAgICAgICAgICBzaGlmdCgpOworICAgICAgICAgICAgaW50IGNoYXJhY3RlciA9
IGdldFVuaWNvZGVDaGFyYWN0ZXIoKTsKKyAgICAgICAgICAgIGlmIChVTkxJS0VMWShjaGFyYWN0
ZXIgPT0gLTEpKQorICAgICAgICAgICAgICAgIHJldHVybiBFUlJPUlRPSzsKKyAgICAgICAgICAg
IGlmIChVTkxJS0VMWShtX2J1ZmZlcjE2LnNpemUoKSA/ICFpc0lkZW50UGFydChjaGFyYWN0ZXIp
IDogIWlzSWRlbnRTdGFydChjaGFyYWN0ZXIpKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gRVJS
T1JUT0s7CisgICAgICAgICAgICByZWNvcmQxNihjaGFyYWN0ZXIpOworICAgICAgICAgICAgaWRl
bnRpZmllclN0YXJ0ID0gY3VycmVudENoYXJhY3RlcigpOworICAgICAgICB9CisgICAgfQorCisg
ICAgaWYgKCFidWZmZXJSZXF1aXJlZCkKKyAgICAgICAgaWRlbnRpZmllckxlbmd0aCA9IGN1cnJl
bnRDaGFyYWN0ZXIoKSAtIGlkZW50aWZpZXJTdGFydDsKKyAgICBlbHNlIHsKKyAgICAgICAgaWYg
KGlkZW50aWZpZXJTdGFydCAhPSBjdXJyZW50Q2hhcmFjdGVyKCkpCisgICAgICAgICAgICBtX2J1
ZmZlcjE2LmFwcGVuZChpZGVudGlmaWVyU3RhcnQsIGN1cnJlbnRDaGFyYWN0ZXIoKSAtIGlkZW50
aWZpZXJTdGFydCk7CisgICAgICAgIGlkZW50aWZpZXJTdGFydCA9IG1fYnVmZmVyMTYuZGF0YSgp
OworICAgICAgICBpZGVudGlmaWVyTGVuZ3RoID0gbV9idWZmZXIxNi5zaXplKCk7CisgICAgfQor
CisgICAgY29uc3QgSWRlbnRpZmllciogaWRlbnQgPSBtYWtlSWRlbnRpZmllcihpZGVudGlmaWVy
U3RhcnQsIGlkZW50aWZpZXJMZW5ndGgpOworICAgIGx2YWxwLT5pZGVudCA9IGlkZW50OworICAg
IG1fZGVsaW1pdGVkID0gZmFsc2U7CisKKyAgICBpZiAoTElLRUxZKCFidWZmZXJSZXF1aXJlZCAm
JiBsZXhUeXBlID09IElkZW50aWZ5UmVzZXJ2ZWRXb3JkcykpIHsKKyAgICAgICAgLy8ga2V5d29y
ZHMgYXJlIG5vdCBjaGVja2VkIGlmIHRoZXJlIHdhcyBhbiBcdVhYWFggaW4gdGhlIGlkZW50aWZp
ZXIKKyAgICAgICAgY29uc3QgSGFzaEVudHJ5KiBlbnRyeSA9IG1fa2V5d29yZFRhYmxlLmVudHJ5
KG1fZ2xvYmFsRGF0YSwgKmlkZW50KTsKKyAgICAgICAgcmV0dXJuIGVudHJ5ID8gc3RhdGljX2Nh
c3Q8SlNUb2tlblR5cGU+KGVudHJ5LT5sZXhlclZhbHVlKCkpIDogSURFTlQ7CisgICAgfQorCisg
ICAgbV9idWZmZXIxNi5yZXNpemUoMCk7CisgICAgcmV0dXJuIElERU5UOworfQorCiBBTFdBWVNf
SU5MSU5FIGJvb2wgTGV4ZXI6OnBhcnNlU3RyaW5nKEpTVG9rZW5EYXRhKiBsdmFscCkKIHsKICAg
ICBpbnQgc3RyaW5nUXVvdGVDaGFyYWN0ZXIgPSBtX2N1cnJlbnQ7CkBAIC03NTMsOCArODA2LDYg
QEAgc3RhcnQ6CiAgICAgICAgIHNoaWZ0KCk7CiAgICAgICAgIHRva2VuID0gQ0xPU0VCUkFDRTsK
ICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBDaGFyYWN0ZXJCYWNrU2xhc2g6Ci0gICAgICAgIGdv
dG8gc3RhcnRJZGVudGlmaWVyV2l0aEJhY2tzbGFzaDsKICAgICBjYXNlIENoYXJhY3Rlclplcm86
CiAgICAgICAgIGdvdG8gc3RhcnROdW1iZXJXaXRoWmVyb0RpZ2l0OwogICAgIGNhc2UgQ2hhcmFj
dGVyTnVtYmVyOgpAQCAtNzY4LDcgKzgxOSwxMCBAQCBzdGFydDoKICAgICAgICAgYnJlYWs7CiAg
ICAgY2FzZSBDaGFyYWN0ZXJJZGVudGlmaWVyU3RhcnQ6CiAgICAgICAgIEFTU0VSVChpc0lkZW50
U3RhcnQobV9jdXJyZW50KSk7Ci0gICAgICAgIGdvdG8gc3RhcnRJZGVudGlmaWVyT3JLZXl3b3Jk
OworICAgICAgICAvLyBDb250aW51ZSB0byB0aGUgbmV4dCBjYXNlCisgICAgY2FzZSBDaGFyYWN0
ZXJCYWNrU2xhc2g6CisgICAgICAgIHRva2VuID0gcGFyc2VJZGVudChsdmFscCwgbGV4VHlwZSk7
CisgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQ2hhcmFjdGVyTGluZVRlcm1pbmF0b3I6CiAgICAg
ICAgIEFTU0VSVChpc0xpbmVUZXJtaW5hdG9yKG1fY3VycmVudCkpOwogICAgICAgICBzaGlmdExp
bmVUZXJtaW5hdG9yKCk7CkBAIC03ODksNTMgKzg0Myw2IEBAIHN0YXJ0OgogICAgIG1fYXRMaW5l
U3RhcnQgPSBmYWxzZTsKICAgICBnb3RvIHJldHVyblRva2VuOwogCi1zdGFydElkZW50aWZpZXJX
aXRoQmFja3NsYXNoOiB7Ci0gICAgc2hpZnQoKTsKLSAgICBpZiAoVU5MSUtFTFkobV9jdXJyZW50
ICE9ICd1JykpCi0gICAgICAgIGdvdG8gcmV0dXJuRXJyb3I7Ci0gICAgc2hpZnQoKTsKLQotICAg
IGlkZW50Q2hhciA9IGdldFVuaWNvZGVDaGFyYWN0ZXIoKTsKLSAgICBpZiAoVU5MSUtFTFkoaWRl
bnRDaGFyID09IC0xKSkKLSAgICAgICAgZ290byByZXR1cm5FcnJvcjsKLSAgICBpZiAoVU5MSUtF
TFkoIWlzSWRlbnRTdGFydChpZGVudENoYXIpKSkKLSAgICAgICAgZ290byByZXR1cm5FcnJvcjsK
LSAgICBnb3RvIGluSWRlbnRpZmllckFmdGVyQ2hhcmFjdGVyQ2hlY2s7Ci19Ci0KLXN0YXJ0SWRl
bnRpZmllck9yS2V5d29yZDogewotICAgIGNvbnN0IFVDaGFyKiBpZGVudGlmaWVyU3RhcnQgPSBj
dXJyZW50Q2hhcmFjdGVyKCk7Ci0gICAgc2hpZnQoKTsKLSAgICB3aGlsZSAoaXNJZGVudFBhcnQo
bV9jdXJyZW50KSkKLSAgICAgICAgc2hpZnQoKTsKLSAgICBpZiAoTElLRUxZKG1fY3VycmVudCAh
PSAnXFwnKSkgewotICAgICAgICAvLyBGYXN0IGNhc2UgZm9yIGlkZW50cyB3aGljaCBkb2VzIG5v
dCBjb250YWluIFx1Q0NDQyBjaGFyYWN0ZXJzCi0gICAgICAgIGx2YWxwLT5pZGVudCA9IG1ha2VJ
ZGVudGlmaWVyKGlkZW50aWZpZXJTdGFydCwgY3VycmVudENoYXJhY3RlcigpIC0gaWRlbnRpZmll
clN0YXJ0KTsKLSAgICAgICAgZ290byBkb25lSWRlbnRpZmllck9yS2V5d29yZDsKLSAgICB9Ci0g
ICAgbV9idWZmZXIxNi5hcHBlbmQoaWRlbnRpZmllclN0YXJ0LCBjdXJyZW50Q2hhcmFjdGVyKCkg
LSBpZGVudGlmaWVyU3RhcnQpOwotfQotCi0gICAgZG8gewotICAgICAgICBzaGlmdCgpOwotICAg
ICAgICBpZiAoVU5MSUtFTFkobV9jdXJyZW50ICE9ICd1JykpCi0gICAgICAgICAgICBnb3RvIHJl
dHVybkVycm9yOwotICAgICAgICBzaGlmdCgpOwotICAgICAgICBpZGVudENoYXIgPSBnZXRVbmlj
b2RlQ2hhcmFjdGVyKCk7Ci0gICAgICAgIGlmIChVTkxJS0VMWShpZGVudENoYXIgPT0gLTEpKQot
ICAgICAgICAgICAgZ290byByZXR1cm5FcnJvcjsKLSAgICAgICAgaWYgKFVOTElLRUxZKCFpc0lk
ZW50UGFydChpZGVudENoYXIpKSkKLSAgICAgICAgICAgIGdvdG8gcmV0dXJuRXJyb3I7Ci1pbklk
ZW50aWZpZXJBZnRlckNoYXJhY3RlckNoZWNrOgotICAgICAgICByZWNvcmQxNihpZGVudENoYXIp
OwotCi0gICAgICAgIHdoaWxlIChpc0lkZW50UGFydChtX2N1cnJlbnQpKSB7Ci0gICAgICAgICAg
ICByZWNvcmQxNihtX2N1cnJlbnQpOwotICAgICAgICAgICAgc2hpZnQoKTsKLSAgICAgICAgfQot
ICAgIH0gd2hpbGUgKFVOTElLRUxZKG1fY3VycmVudCA9PSAnXFwnKSk7Ci0gICAgZ290byBkb25l
SWRlbnRpZmllcjsKLQogaW5TaW5nbGVMaW5lQ29tbWVudDoKICAgICB3aGlsZSAoIWlzTGluZVRl
cm1pbmF0b3IobV9jdXJyZW50KSkgewogICAgICAgICBpZiAoVU5MSUtFTFkobV9jdXJyZW50ID09
IC0xKSkKQEAgLTEwMDgsMjcgKzEwMTUsNyBAQCBkb25lTnVtZXJpYzoKIGRvbmVTZW1pY29sb246
CiAgICAgdG9rZW4gPSBTRU1JQ09MT047CiAgICAgbV9kZWxpbWl0ZWQgPSB0cnVlOwotICAgIGdv
dG8gcmV0dXJuVG9rZW47Ci0KLWRvbmVJZGVudGlmaWVyOgotICAgIG1fYXRMaW5lU3RhcnQgPSBm
YWxzZTsKLSAgICBtX2RlbGltaXRlZCA9IGZhbHNlOwotICAgIGx2YWxwLT5pZGVudCA9IG1ha2VJ
ZGVudGlmaWVyKG1fYnVmZmVyMTYuZGF0YSgpLCBtX2J1ZmZlcjE2LnNpemUoKSk7Ci0gICAgbV9i
dWZmZXIxNi5yZXNpemUoMCk7Ci0gICAgdG9rZW4gPSBJREVOVDsKLSAgICBnb3RvIHJldHVyblRv
a2VuOwotCi1kb25lSWRlbnRpZmllck9yS2V5d29yZDogewotICAgIG1fYXRMaW5lU3RhcnQgPSBm
YWxzZTsKLSAgICBtX2RlbGltaXRlZCA9IGZhbHNlOwotICAgIG1fYnVmZmVyMTYucmVzaXplKDAp
OwotICAgIGlmIChsZXhUeXBlID09IElkZW50aWZ5UmVzZXJ2ZWRXb3JkcykgewotICAgICAgICBj
b25zdCBIYXNoRW50cnkqIGVudHJ5ID0gbV9rZXl3b3JkVGFibGUuZW50cnkobV9nbG9iYWxEYXRh
LCAqbHZhbHAtPmlkZW50KTsKLSAgICAgICAgdG9rZW4gPSBlbnRyeSA/IHN0YXRpY19jYXN0PEpT
VG9rZW5UeXBlPihlbnRyeS0+bGV4ZXJWYWx1ZSgpKSA6IElERU5UOwotICAgIH0gZWxzZQotICAg
ICAgICB0b2tlbiA9IElERU5UOwogICAgIC8vIEZhbGwgdGhyb3VnaCBpbnRvIHJldHVyblRva2Vu
LgotfQogCiByZXR1cm5Ub2tlbjogewogICAgIGludCBsaW5lTnVtYmVyID0gbV9saW5lTnVtYmVy
OwpkaWZmIC0tZ2l0IGEvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0xleGVyLmggYi9KYXZhU2NyaXB0
Q29yZS9wYXJzZXIvTGV4ZXIuaAppbmRleCA0ZjdhZjQ0Li4xZjNjNGM0IDEwMDY0NAotLS0gYS9K
YXZhU2NyaXB0Q29yZS9wYXJzZXIvTGV4ZXIuaAorKysgYi9KYXZhU2NyaXB0Q29yZS9wYXJzZXIv
TGV4ZXIuaApAQCAtOTQsNiArOTQsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICBBTFdB
WVNfSU5MSU5FIGJvb2wgbGFzdFRva2VuV2FzUmVzdHJLZXl3b3JkKCkgY29uc3Q7CiAKKyAgICAg
ICAgQUxXQVlTX0lOTElORSBKU1Rva2VuVHlwZSBwYXJzZUlkZW50KEpTVG9rZW5EYXRhKiBsdmFs
cCwgTGV4VHlwZSBsZXhUeXBlKTsKICAgICAgICAgQUxXQVlTX0lOTElORSBib29sIHBhcnNlU3Ry
aW5nKEpTVG9rZW5EYXRhKiBsdmFscCk7CiAKICAgICAgICAgc3RhdGljIGNvbnN0IHNpemVfdCBp
bml0aWFsUmVhZEJ1ZmZlckNhcGFjaXR5ID0gMzI7Ci0tIAoxLjYuMC40Cgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>63583</attachid>
            <date>2010-08-05 06:52:13 -0700</date>
            <delta_ts>2010-08-06 04:08:06 -0700</delta_ts>
            <desc> identifier parsing patch (v2)</desc>
            <filename>0001-ident.patch</filename>
            <type>text/plain</type>
            <size>7402</size>
            <attacher name="Zoltan Herczeg">zherczeg</attacher>
            
              <data encoding="base64">RnJvbSA1Y2I2YjM2YmUxYzQyODVmZGVjM2MyOWZlY2RkMmRjYWMyNDA5ODJkIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBab2x0YW4gSGVyY3plZyA8emhlcmN6ZWdAaW5mLnUtc3plZ2Vk
Lmh1PgpEYXRlOiBUaHUsIDUgQXVnIDIwMTAgMTU6NTA6MzUgKzAyMDAKU3ViamVjdDogW1BBVENI
XSBpZGVudAoKU2lnbmVkLW9mZi1ieTogWm9sdGFuIEhlcmN6ZWcgPHpoZXJjemVnQGluZi51LXN6
ZWdlZC5odT4KLS0tCiBKYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgICAgICAgIHwgICAxOCArKysr
KysKIEphdmFTY3JpcHRDb3JlL3BhcnNlci9MZXhlci5jcHAgfCAgMTI4ICsrKysrKysrKysrKysr
KysrLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiBKYXZhU2NyaXB0Q29yZS9wYXJzZXIvTGV4ZXIuaCAg
IHwgICAgMSArCiAzIGZpbGVzIGNoYW5nZWQsIDc2IGluc2VydGlvbnMoKyksIDcxIGRlbGV0aW9u
cygtKQoKZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZyBiL0phdmFTY3JpcHRD
b3JlL0NoYW5nZUxvZwppbmRleCAwOTlmMzBiLi4xMGE0ODQyIDEwMDY0NAotLS0gYS9KYXZhU2Ny
aXB0Q29yZS9DaGFuZ2VMb2cKKysrIGIvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMjEgQEAKKzIwMTAtMDgtMDUgIFpvbHRhbiBIZXJjemVnICA8emhlcmN6ZWdAd2Via2l0Lm9y
Zz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZWZh
Y3RvciBpZGVudGlmaWVyIHBhcnNpbmcgaW4gbGV4ZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQxODQ1CisKKyAgICAgICAgVGhlIGNvZGUgaXMgcmVm
YWN0b3JlZCB0byBhdm9pZCBnb3Rvcy4gVGhlIG5ldyBjb2RlCisgICAgICAgIGhhcyB0aGUgc2Ft
ZSBwZXJmb3JtYW5jZSBhcyB0aGUgb2xkIG9uZS4KKworICAgICAgICBTdW5TcGlkZXIgLS1wYXJz
ZS1vbmx5OiBubyBjaGFuZ2UgKGZyb20gMzQuMG1zIHRvIDMzLjZtcykKKyAgICAgICAgU3VuU3Bp
ZGVyOiBubyBjaGFuZ2UgKGZyb20gNTIzLjJtcyB0byA1MjMuNW1zKQorCisgICAgICAgICogcGFy
c2VyL0xleGVyLmNwcDoKKyAgICAgICAgKEpTQzo6TGV4ZXI6OnBhcnNlSWRlbnQpOgorICAgICAg
ICAoSlNDOjpMZXhlcjo6bGV4KToKKyAgICAgICAgKiBwYXJzZXIvTGV4ZXIuaDoKKwogMjAxMC0w
OC0wMyAgR2VvZmZyZXkgR2FyZW4gIDxnZ2FyZW5AYXBwbGUuY29tPgogCiAgICAgICAgIFJldmll
d2VkIGJ5IE9saXZlciBIdW50IGFuZCBCZXRoIERha2luLgpkaWZmIC0tZ2l0IGEvSmF2YVNjcmlw
dENvcmUvcGFyc2VyL0xleGVyLmNwcCBiL0phdmFTY3JpcHRDb3JlL3BhcnNlci9MZXhlci5jcHAK
aW5kZXggZDdhMTIyZS4uZGFjNmFmNSAxMDA2NDQKLS0tIGEvSmF2YVNjcmlwdENvcmUvcGFyc2Vy
L0xleGVyLmNwcAorKysgYi9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTGV4ZXIuY3BwCkBAIC0zOTks
NiArMzk5LDU5IEBAIGlubGluZSB2b2lkIExleGVyOjpyZWNvcmQxNihpbnQgYykKICAgICByZWNv
cmQxNihVQ2hhcihzdGF0aWNfY2FzdDx1bnNpZ25lZCBzaG9ydD4oYykpKTsKIH0KIAorQUxXQVlT
X0lOTElORSBKU1Rva2VuVHlwZSBMZXhlcjo6cGFyc2VJZGVudChKU1Rva2VuRGF0YSogbHZhbHAs
IExleFR5cGUgbGV4VHlwZSkKK3sKKyAgICBib29sIGJ1ZmZlclJlcXVpcmVkID0gZmFsc2U7Cisg
ICAgY29uc3QgVUNoYXIqIGlkZW50aWZpZXJTdGFydCA9IGN1cnJlbnRDaGFyYWN0ZXIoKTsKKyAg
ICBpbnQgaWRlbnRpZmllckxlbmd0aDsKKworICAgIHdoaWxlICh0cnVlKSB7CisgICAgICAgIGlm
IChMSUtFTFkoaXNJZGVudFBhcnQobV9jdXJyZW50KSkpCisgICAgICAgICAgICBzaGlmdCgpOwor
ICAgICAgICBlbHNlIGlmIChMSUtFTFkobV9jdXJyZW50ICE9ICdcXCcpKQorICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgLy8gXHVYWFhYIHVuaWNvZGUgY2hh
cmFjdGVycworICAgICAgICAgICAgYnVmZmVyUmVxdWlyZWQgPSB0cnVlOworICAgICAgICAgICAg
aWYgKGlkZW50aWZpZXJTdGFydCAhPSBjdXJyZW50Q2hhcmFjdGVyKCkpCisgICAgICAgICAgICAg
ICAgbV9idWZmZXIxNi5hcHBlbmQoaWRlbnRpZmllclN0YXJ0LCBjdXJyZW50Q2hhcmFjdGVyKCkg
LSBpZGVudGlmaWVyU3RhcnQpOworICAgICAgICAgICAgc2hpZnQoKTsKKyAgICAgICAgICAgIGlm
IChVTkxJS0VMWShtX2N1cnJlbnQgIT0gJ3UnKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gRVJS
T1JUT0s7CisgICAgICAgICAgICBzaGlmdCgpOworICAgICAgICAgICAgaW50IGNoYXJhY3RlciA9
IGdldFVuaWNvZGVDaGFyYWN0ZXIoKTsKKyAgICAgICAgICAgIGlmIChVTkxJS0VMWShjaGFyYWN0
ZXIgPT0gLTEpKQorICAgICAgICAgICAgICAgIHJldHVybiBFUlJPUlRPSzsKKyAgICAgICAgICAg
IGlmIChVTkxJS0VMWShtX2J1ZmZlcjE2LnNpemUoKSA/ICFpc0lkZW50UGFydChjaGFyYWN0ZXIp
IDogIWlzSWRlbnRTdGFydChjaGFyYWN0ZXIpKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gRVJS
T1JUT0s7CisgICAgICAgICAgICByZWNvcmQxNihjaGFyYWN0ZXIpOworICAgICAgICAgICAgaWRl
bnRpZmllclN0YXJ0ID0gY3VycmVudENoYXJhY3RlcigpOworICAgICAgICB9CisgICAgfQorCisg
ICAgaWYgKCFidWZmZXJSZXF1aXJlZCkKKyAgICAgICAgaWRlbnRpZmllckxlbmd0aCA9IGN1cnJl
bnRDaGFyYWN0ZXIoKSAtIGlkZW50aWZpZXJTdGFydDsKKyAgICBlbHNlIHsKKyAgICAgICAgaWYg
KGlkZW50aWZpZXJTdGFydCAhPSBjdXJyZW50Q2hhcmFjdGVyKCkpCisgICAgICAgICAgICBtX2J1
ZmZlcjE2LmFwcGVuZChpZGVudGlmaWVyU3RhcnQsIGN1cnJlbnRDaGFyYWN0ZXIoKSAtIGlkZW50
aWZpZXJTdGFydCk7CisgICAgICAgIGlkZW50aWZpZXJTdGFydCA9IG1fYnVmZmVyMTYuZGF0YSgp
OworICAgICAgICBpZGVudGlmaWVyTGVuZ3RoID0gbV9idWZmZXIxNi5zaXplKCk7CisgICAgfQor
CisgICAgY29uc3QgSWRlbnRpZmllciogaWRlbnQgPSBtYWtlSWRlbnRpZmllcihpZGVudGlmaWVy
U3RhcnQsIGlkZW50aWZpZXJMZW5ndGgpOworICAgIGx2YWxwLT5pZGVudCA9IGlkZW50OworICAg
IG1fZGVsaW1pdGVkID0gZmFsc2U7CisKKyAgICBpZiAoTElLRUxZKCFidWZmZXJSZXF1aXJlZCAm
JiBsZXhUeXBlID09IElkZW50aWZ5UmVzZXJ2ZWRXb3JkcykpIHsKKyAgICAgICAgLy8ga2V5d29y
ZHMgYXJlIG5vdCBjaGVja2VkIGlmIHRoZXJlIHdhcyBhbiBcdVhYWFggaW4gdGhlIGlkZW50aWZp
ZXIKKyAgICAgICAgY29uc3QgSGFzaEVudHJ5KiBlbnRyeSA9IG1fa2V5d29yZFRhYmxlLmVudHJ5
KG1fZ2xvYmFsRGF0YSwgKmlkZW50KTsKKyAgICAgICAgcmV0dXJuIGVudHJ5ID8gc3RhdGljX2Nh
c3Q8SlNUb2tlblR5cGU+KGVudHJ5LT5sZXhlclZhbHVlKCkpIDogSURFTlQ7CisgICAgfQorCisg
ICAgbV9idWZmZXIxNi5yZXNpemUoMCk7CisgICAgcmV0dXJuIElERU5UOworfQorCiBBTFdBWVNf
SU5MSU5FIGJvb2wgTGV4ZXI6OnBhcnNlU3RyaW5nKEpTVG9rZW5EYXRhKiBsdmFscCkKIHsKICAg
ICBpbnQgc3RyaW5nUXVvdGVDaGFyYWN0ZXIgPSBtX2N1cnJlbnQ7CkBAIC00ODgsNyArNTQxLDYg
QEAgSlNUb2tlblR5cGUgTGV4ZXI6OmxleChKU1Rva2VuRGF0YSogbHZhbHAsIEpTVG9rZW5JbmZv
KiBsbG9jcCwgTGV4VHlwZSBsZXhUeXBlKQogICAgIEFTU0VSVChtX2J1ZmZlcjE2LmlzRW1wdHko
KSk7CiAKICAgICBKU1Rva2VuVHlwZSB0b2tlbiA9IEVSUk9SVE9LOwotICAgIGludCBpZGVudENo
YXIgPSAwOwogICAgIG1fdGVybWluYXRvciA9IGZhbHNlOwogCiBzdGFydDoKQEAgLTc1Myw4ICs4
MDUsNiBAQCBzdGFydDoKICAgICAgICAgc2hpZnQoKTsKICAgICAgICAgdG9rZW4gPSBDTE9TRUJS
QUNFOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIENoYXJhY3RlckJhY2tTbGFzaDoKLSAgICAg
ICAgZ290byBzdGFydElkZW50aWZpZXJXaXRoQmFja3NsYXNoOwogICAgIGNhc2UgQ2hhcmFjdGVy
WmVybzoKICAgICAgICAgZ290byBzdGFydE51bWJlcldpdGhaZXJvRGlnaXQ7CiAgICAgY2FzZSBD
aGFyYWN0ZXJOdW1iZXI6CkBAIC03NjgsNyArODE4LDEwIEBAIHN0YXJ0OgogICAgICAgICBicmVh
azsKICAgICBjYXNlIENoYXJhY3RlcklkZW50aWZpZXJTdGFydDoKICAgICAgICAgQVNTRVJUKGlz
SWRlbnRTdGFydChtX2N1cnJlbnQpKTsKLSAgICAgICAgZ290byBzdGFydElkZW50aWZpZXJPcktl
eXdvcmQ7CisgICAgICAgIC8vIENvbnRpbnVlIHRvIHRoZSBuZXh0IGNhc2UKKyAgICBjYXNlIENo
YXJhY3RlckJhY2tTbGFzaDoKKyAgICAgICAgdG9rZW4gPSBwYXJzZUlkZW50KGx2YWxwLCBsZXhU
eXBlKTsKKyAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBDaGFyYWN0ZXJMaW5lVGVybWluYXRvcjoK
ICAgICAgICAgQVNTRVJUKGlzTGluZVRlcm1pbmF0b3IobV9jdXJyZW50KSk7CiAgICAgICAgIHNo
aWZ0TGluZVRlcm1pbmF0b3IoKTsKQEAgLTc4OSw1MyArODQyLDYgQEAgc3RhcnQ6CiAgICAgbV9h
dExpbmVTdGFydCA9IGZhbHNlOwogICAgIGdvdG8gcmV0dXJuVG9rZW47CiAKLXN0YXJ0SWRlbnRp
ZmllcldpdGhCYWNrc2xhc2g6IHsKLSAgICBzaGlmdCgpOwotICAgIGlmIChVTkxJS0VMWShtX2N1
cnJlbnQgIT0gJ3UnKSkKLSAgICAgICAgZ290byByZXR1cm5FcnJvcjsKLSAgICBzaGlmdCgpOwot
Ci0gICAgaWRlbnRDaGFyID0gZ2V0VW5pY29kZUNoYXJhY3RlcigpOwotICAgIGlmIChVTkxJS0VM
WShpZGVudENoYXIgPT0gLTEpKQotICAgICAgICBnb3RvIHJldHVybkVycm9yOwotICAgIGlmIChV
TkxJS0VMWSghaXNJZGVudFN0YXJ0KGlkZW50Q2hhcikpKQotICAgICAgICBnb3RvIHJldHVybkVy
cm9yOwotICAgIGdvdG8gaW5JZGVudGlmaWVyQWZ0ZXJDaGFyYWN0ZXJDaGVjazsKLX0KLQotc3Rh
cnRJZGVudGlmaWVyT3JLZXl3b3JkOiB7Ci0gICAgY29uc3QgVUNoYXIqIGlkZW50aWZpZXJTdGFy
dCA9IGN1cnJlbnRDaGFyYWN0ZXIoKTsKLSAgICBzaGlmdCgpOwotICAgIHdoaWxlIChpc0lkZW50
UGFydChtX2N1cnJlbnQpKQotICAgICAgICBzaGlmdCgpOwotICAgIGlmIChMSUtFTFkobV9jdXJy
ZW50ICE9ICdcXCcpKSB7Ci0gICAgICAgIC8vIEZhc3QgY2FzZSBmb3IgaWRlbnRzIHdoaWNoIGRv
ZXMgbm90IGNvbnRhaW4gXHVDQ0NDIGNoYXJhY3RlcnMKLSAgICAgICAgbHZhbHAtPmlkZW50ID0g
bWFrZUlkZW50aWZpZXIoaWRlbnRpZmllclN0YXJ0LCBjdXJyZW50Q2hhcmFjdGVyKCkgLSBpZGVu
dGlmaWVyU3RhcnQpOwotICAgICAgICBnb3RvIGRvbmVJZGVudGlmaWVyT3JLZXl3b3JkOwotICAg
IH0KLSAgICBtX2J1ZmZlcjE2LmFwcGVuZChpZGVudGlmaWVyU3RhcnQsIGN1cnJlbnRDaGFyYWN0
ZXIoKSAtIGlkZW50aWZpZXJTdGFydCk7Ci19Ci0KLSAgICBkbyB7Ci0gICAgICAgIHNoaWZ0KCk7
Ci0gICAgICAgIGlmIChVTkxJS0VMWShtX2N1cnJlbnQgIT0gJ3UnKSkKLSAgICAgICAgICAgIGdv
dG8gcmV0dXJuRXJyb3I7Ci0gICAgICAgIHNoaWZ0KCk7Ci0gICAgICAgIGlkZW50Q2hhciA9IGdl
dFVuaWNvZGVDaGFyYWN0ZXIoKTsKLSAgICAgICAgaWYgKFVOTElLRUxZKGlkZW50Q2hhciA9PSAt
MSkpCi0gICAgICAgICAgICBnb3RvIHJldHVybkVycm9yOwotICAgICAgICBpZiAoVU5MSUtFTFko
IWlzSWRlbnRQYXJ0KGlkZW50Q2hhcikpKQotICAgICAgICAgICAgZ290byByZXR1cm5FcnJvcjsK
LWluSWRlbnRpZmllckFmdGVyQ2hhcmFjdGVyQ2hlY2s6Ci0gICAgICAgIHJlY29yZDE2KGlkZW50
Q2hhcik7Ci0KLSAgICAgICAgd2hpbGUgKGlzSWRlbnRQYXJ0KG1fY3VycmVudCkpIHsKLSAgICAg
ICAgICAgIHJlY29yZDE2KG1fY3VycmVudCk7Ci0gICAgICAgICAgICBzaGlmdCgpOwotICAgICAg
ICB9Ci0gICAgfSB3aGlsZSAoVU5MSUtFTFkobV9jdXJyZW50ID09ICdcXCcpKTsKLSAgICBnb3Rv
IGRvbmVJZGVudGlmaWVyOwotCiBpblNpbmdsZUxpbmVDb21tZW50OgogICAgIHdoaWxlICghaXNM
aW5lVGVybWluYXRvcihtX2N1cnJlbnQpKSB7CiAgICAgICAgIGlmIChVTkxJS0VMWShtX2N1cnJl
bnQgPT0gLTEpKQpAQCAtMTAwOCwyNyArMTAxNCw3IEBAIGRvbmVOdW1lcmljOgogZG9uZVNlbWlj
b2xvbjoKICAgICB0b2tlbiA9IFNFTUlDT0xPTjsKICAgICBtX2RlbGltaXRlZCA9IHRydWU7Ci0g
ICAgZ290byByZXR1cm5Ub2tlbjsKLQotZG9uZUlkZW50aWZpZXI6Ci0gICAgbV9hdExpbmVTdGFy
dCA9IGZhbHNlOwotICAgIG1fZGVsaW1pdGVkID0gZmFsc2U7Ci0gICAgbHZhbHAtPmlkZW50ID0g
bWFrZUlkZW50aWZpZXIobV9idWZmZXIxNi5kYXRhKCksIG1fYnVmZmVyMTYuc2l6ZSgpKTsKLSAg
ICBtX2J1ZmZlcjE2LnJlc2l6ZSgwKTsKLSAgICB0b2tlbiA9IElERU5UOwotICAgIGdvdG8gcmV0
dXJuVG9rZW47Ci0KLWRvbmVJZGVudGlmaWVyT3JLZXl3b3JkOiB7Ci0gICAgbV9hdExpbmVTdGFy
dCA9IGZhbHNlOwotICAgIG1fZGVsaW1pdGVkID0gZmFsc2U7Ci0gICAgbV9idWZmZXIxNi5yZXNp
emUoMCk7Ci0gICAgaWYgKGxleFR5cGUgPT0gSWRlbnRpZnlSZXNlcnZlZFdvcmRzKSB7Ci0gICAg
ICAgIGNvbnN0IEhhc2hFbnRyeSogZW50cnkgPSBtX2tleXdvcmRUYWJsZS5lbnRyeShtX2dsb2Jh
bERhdGEsICpsdmFscC0+aWRlbnQpOwotICAgICAgICB0b2tlbiA9IGVudHJ5ID8gc3RhdGljX2Nh
c3Q8SlNUb2tlblR5cGU+KGVudHJ5LT5sZXhlclZhbHVlKCkpIDogSURFTlQ7Ci0gICAgfSBlbHNl
Ci0gICAgICAgIHRva2VuID0gSURFTlQ7CiAgICAgLy8gRmFsbCB0aHJvdWdoIGludG8gcmV0dXJu
VG9rZW4uCi19CiAKIHJldHVyblRva2VuOiB7CiAgICAgaW50IGxpbmVOdW1iZXIgPSBtX2xpbmVO
dW1iZXI7CmRpZmYgLS1naXQgYS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTGV4ZXIuaCBiL0phdmFT
Y3JpcHRDb3JlL3BhcnNlci9MZXhlci5oCmluZGV4IDRmN2FmNDQuLjFmM2M0YzQgMTAwNjQ0Ci0t
LSBhL0phdmFTY3JpcHRDb3JlL3BhcnNlci9MZXhlci5oCisrKyBiL0phdmFTY3JpcHRDb3JlL3Bh
cnNlci9MZXhlci5oCkBAIC05NCw2ICs5NCw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAg
IEFMV0FZU19JTkxJTkUgYm9vbCBsYXN0VG9rZW5XYXNSZXN0cktleXdvcmQoKSBjb25zdDsKIAor
ICAgICAgICBBTFdBWVNfSU5MSU5FIEpTVG9rZW5UeXBlIHBhcnNlSWRlbnQoSlNUb2tlbkRhdGEq
IGx2YWxwLCBMZXhUeXBlIGxleFR5cGUpOwogICAgICAgICBBTFdBWVNfSU5MSU5FIGJvb2wgcGFy
c2VTdHJpbmcoSlNUb2tlbkRhdGEqIGx2YWxwKTsKIAogICAgICAgICBzdGF0aWMgY29uc3Qgc2l6
ZV90IGluaXRpYWxSZWFkQnVmZmVyQ2FwYWNpdHkgPSAzMjsKLS0gCjEuNi4wLjQKCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>