# Bazaar revision bundle v0.9
#
# message:
#   Add a NEWS entry for the changes.
#   
# committer: James Westby <jw+debian@jameswestby.net>
# date: Mon 2007-05-14 21:45:16.555999994 +0100

=== modified file NEWS
--- NEWS
+++ NEWS
@@ -1,5 +1,11 @@
 IN DEVELOPMENT
 
+  IMPROVEMENTS:
+  
+    * There are two new help topics, working-trees and repositories that
+      attempt to explain these concepts. (James Westby, John Arbash Meinel,
+      Aaron Bentley)
+
   BUGFIXES:
 
     * ``bzr push`` should only connect to the remote location one time.

=== modified file bzrlib/builtins.py // last-changed:jw+debian@jameswestby.net-
... 20070514204247-mcxwep2on9g5p30w
--- bzrlib/builtins.py
+++ bzrlib/builtins.py
@@ -249,7 +249,7 @@
 
     To re-create the working tree, use "bzr checkout".
     """
-    _see_also = ['checkout']
+    _see_also = ['checkout', 'working-trees']
 
     takes_args = ['location?']
 
@@ -669,7 +669,7 @@
     location can be accessed.
     """
 
-    _see_also = ['pull', 'update']
+    _see_also = ['pull', 'update', 'working-trees']
     takes_options = ['remember', 'overwrite', 'verbose',
         Option('create-prefix',
                help='Create the path leading up to the branch '
@@ -812,8 +812,9 @@
                 try:
                     tree_to = dir_to.open_workingtree()
                 except errors.NotLocalUrl:
-                    warning('This transport does not update the working '
-                            'tree of: %s' % (br_to.base,))
+                    warning("This transport does not update the working " 
+                            "tree of: %s. See 'bzr help working-trees' for "
+                            "more information." % br_to.base)
                     push_result = br_from.push(br_to, overwrite)
                 except errors.NoWorkingTree:
                     push_result = br_from.push(br_to, overwrite)
@@ -1017,7 +1018,7 @@
     'bzr revert' instead of 'bzr commit' after the update.
     """
 
-    _see_also = ['pull']
+    _see_also = ['pull', 'working-trees']
     takes_args = ['dir?']
     aliases = ['up']
 
@@ -1061,7 +1062,7 @@
 
     Branches and working trees will also report any missing revisions.
     """
-    _see_also = ['revno']
+    _see_also = ['revno', 'working-trees', 'repositories']
     takes_args = ['location?']
     takes_options = ['verbose']
 
@@ -1312,8 +1313,11 @@
 class cmd_init_repository(Command):
     """Create a shared repository to hold branches.
 
-    New branches created under the repository directory will store their revisions
-    in the repository, not in the branch directory.
+    New branches created under the repository directory will store their
+    revisions in the repository, not in the branch directory.
+
+    If the --no-trees option is used then the branches in the repository
+    will not have working trees by default.
 
     example:
         bzr init-repo --no-trees repo
@@ -1321,6 +1325,8 @@
         bzr checkout --lightweight repo/trunk trunk-checkout
         cd trunk-checkout
         (add files here)
+
+    See 'bzr help repositories' for more information.
     """
 
     _see_also = ['init', 'branch', 'checkout']

=== modified file bzrlib/help_topics.py // last-changed:jw+debian@jameswestby.n
... et-20070514204247-mcxwep2on9g5p30w
--- bzrlib/help_topics.py
+++ bzrlib/help_topics.py
@@ -276,6 +276,82 @@
               commits are only made locally
 """
 
+_repositories = \
+"""Repositories
+
+Repositories in Bazaar are where committed information is stored. It is
+possible to create a shared repository which allows multiple branches to
+share their information in the same location. When a new branch is
+created it will first look to see if there is a containing repository it
+can share.
+
+When two branches of the same project share a repository, there is
+generally a large space saving. For some operations (e.g. branching
+within the repository) this translates in to a large time saving.
+
+To create a shared repository use the init-repository command (or the alias
+init-repo). This command takes the location of the repository to create. This
+means that 'bzr init-repository repo' will create a directory named 'repo',
+which contains a shared repository. Any new branches that are created in this
+directory will then use it for storage.
+
+It is a good idea to create a repository whenever you might create more
+than one branch of a project. This is true for both working areas where you
+are doing the development, and any server areas that you use for hosting
+projects. In the latter case, it is common to want branches without working
+trees. Since the files in the branch will not be edited directly there is no
+need to use up disk space for a working tree. To create a repository in which
+the branches will not have working trees pass the '--no-trees' option to
+'init-repository'.
+
+Related commands:
+
+  init-repository   Create a shared repository. Use --no-trees to create one
+                    in which new branches won't get a working tree.
+"""
+
+
+_working_trees = \
+"""Working Trees
+
+A working tree is the contents of a branch placed on disk so that you can
+see the files and edit them. The working tree is where you make changes to a
+branch, and when you commit the current state of the working tree is the
+snapshot that is recorded in the commit.
+
+When you push a branch to a remote system, a working tree will not be
+created. If one is already present the files will not be updated. The
+branch information will be updated and the working tree will be marked
+as out-of-date. Updating a working tree remotely is difficult, as there
+may be uncommitted changes or the update may cause content conflicts that are
+difficult to deal with remotely.
+
+If you have a branch with no working tree you can use the 'checkout' command
+to create a working tree. If you run 'bzr checkout .' from the branch it will
+create the working tree. If the branch is updated remotely, you can update the
+working tree by running 'bzr update' in that directory.
+
+If you have a branch with a working tree that you do not want the 'remove-tree'
+command will remove the tree if it is safe. This can be done to avoid the
+warning about the remote working tree not being updated when pushing to the
+branch. It can also be useful when working with a '--no-trees' repository
+(see 'bzr help repositories').
+
+If you want to have a working tree on a remote machine that you push to you
+can either run 'bzr update' in the remote branch after each push, or use some
+other method to update the tree during the push. There is an 'rspush' plugin
+that will update the working tree using rsync as well as doing a push. There
+is also a 'push-and-update' plugin that automates running 'bzr update' via SSH
+after each push.
+
+Useful commands:
+
+  checkout     Create a working tree when a branch does not have one.
+  remove-tree  Removes the working tree from a branch when it is safe to do so.
+  update       When a working tree is out of sync with it's associated branch
+               this will update the tree to match the branch.
+"""
+
 
 topic_registry.register("revisionspec", _help_on_revisionspec,
                         "Explain how to use --revision")
@@ -295,6 +371,10 @@
     from bzrlib import bugtracker
     return bugtracker.tracker_registry.help_topic(topic)
 topic_registry.register('bugs', get_bugs_topic, 'Bug tracker support')
+topic_registry.register('repositories', _repositories,
+                        'Basic information on shared repositories.')
+topic_registry.register('working-trees', _working_trees,
+                        'Information on working trees')
 
 
 class HelpTopicIndex(object):
@@ -355,3 +435,4 @@
     def get_help_topic(self):
         """Return the help topic this can be found under."""
         return self.topic
+

=== modified file bzrlib/tests/blackbox/test_help.py // last-changed:jw+debian@
... jameswestby.net-20070514204247-mcxwep2on9g5p30w
--- bzrlib/tests/blackbox/test_help.py
+++ bzrlib/tests/blackbox/test_help.py
@@ -19,6 +19,7 @@
 """
 
 
+import bzrlib
 from bzrlib.tests.blackbox import ExternalBase
 
 
@@ -69,6 +70,16 @@
         self.assertContainsRe(out, 'https://')
         self.assertContainsRe(out, 'sftp://')
 
+    def test_help_repositories(self):
+        """Smoke test for 'bzr help repositories'"""
+        out, err = self.runbzr('help repositories')
+        self.assertEqual(bzrlib.help_topics._repositories, out)
+
+    def test_help_working_trees(self):
+        """Smoke test for 'bzr help working-trees'"""
+        out, err = self.runbzr('help working-trees')
+        self.assertEqual(bzrlib.help_topics._working_trees, out)
+
     def test_help_commands(self):
         dash_help  = self.runbzr('--help commands')[0]
         commands   = self.runbzr('help commands')[0]

=== modified directory  // last-changed:jw+debian@jameswestby.net-2007051420451
... 6-6bnkhae4x3cx3z1k
# revision id: jw+debian@jameswestby.net-20070514204516-6bnkhae4x3cx3z1k
# sha1: 8207f400b8835ab7a0fa7621f10db876824961ab
# inventory sha1: 0e32c08870f31b0a7f9e09d091ee1c4d224462b8
# parent ids:
#   jw+debian@jameswestby.net-20070514204247-mcxwep2on9g5p30w
# base id: pqm@pqm.ubuntu.com-20070510055501-w262sk5hl33vmd19
# properties:
#   branch-nick: bzr.repohelp

# message:
#   Update with comments from review, thanks to John and Aaron.
#   
# committer: James Westby <jw+debian@jameswestby.net>
# date: Mon 2007-05-14 21:42:47.290999889 +0100

=== modified file bzrlib/builtins.py // encoding:base64
LS0tIGJ6cmxpYi9idWlsdGlucy5weQorKysgYnpybGliL2J1aWx0aW5zLnB5CkBAIC0yNDksNyAr
MjQ5LDcgQEAKIAogICAgIFRvIHJlLWNyZWF0ZSB0aGUgd29ya2luZyB0cmVlLCB1c2UgImJ6ciBj
aGVja291dCIuCiAgICAgIiIiCi0gICAgX3NlZV9hbHNvID0gWydjaGVja291dCddCisgICAgX3Nl
ZV9hbHNvID0gWydjaGVja291dCcsICd3b3JraW5nLXRyZWVzJ10KIAogICAgIHRha2VzX2FyZ3Mg
PSBbJ2xvY2F0aW9uPyddCiAKQEAgLTY2OSw3ICs2NjksNyBAQAogICAgIGxvY2F0aW9uIGNhbiBi
ZSBhY2Nlc3NlZC4KICAgICAiIiIKIAotICAgIF9zZWVfYWxzbyA9IFsncHVsbCcsICd1cGRhdGUn
XQorICAgIF9zZWVfYWxzbyA9IFsncHVsbCcsICd1cGRhdGUnLCAnd29ya2luZy10cmVlcyddCiAg
ICAgdGFrZXNfb3B0aW9ucyA9IFsncmVtZW1iZXInLCAnb3ZlcndyaXRlJywgJ3ZlcmJvc2UnLAog
ICAgICAgICBPcHRpb24oJ2NyZWF0ZS1wcmVmaXgnLAogICAgICAgICAgICAgICAgaGVscD0nQ3Jl
YXRlIHRoZSBwYXRoIGxlYWRpbmcgdXAgdG8gdGhlIGJyYW5jaCAnCkBAIC04MTIsOSArODEyLDkg
QEAKICAgICAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgICAgIHRyZWVfdG8gPSBk
aXJfdG8ub3Blbl93b3JraW5ndHJlZSgpCiAgICAgICAgICAgICAgICAgZXhjZXB0IGVycm9ycy5O
b3RMb2NhbFVybDoKLSAgICAgICAgICAgICAgICAgICAgd2FybmluZygnVGhpcyB0cmFuc3BvcnQg
ZG9lcyBub3QgdXBkYXRlIHRoZSB3b3JraW5nICcgCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgJ3RyZWUgb2Y6ICVzLiBTZWUgXCdienIgaGVscCAnICUgYnJfdG8uYmFzZSArIFwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAnd29ya2luZy10cmVlc1wnIGZvciBtb3JlIGluZm9ybWF0
aW9uLicpCisgICAgICAgICAgICAgICAgICAgIHdhcm5pbmcoIlRoaXMgdHJhbnNwb3J0IGRvZXMg
bm90IHVwZGF0ZSB0aGUgd29ya2luZyAiIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ0
cmVlIG9mOiAlcy4gU2VlICdienIgaGVscCB3b3JraW5nLXRyZWVzJyBmb3IgIgorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICJtb3JlIGluZm9ybWF0aW9uLiIgJSBicl90by5iYXNlKQogICAg
ICAgICAgICAgICAgICAgICBwdXNoX3Jlc3VsdCA9IGJyX2Zyb20ucHVzaChicl90bywgb3Zlcndy
aXRlKQogICAgICAgICAgICAgICAgIGV4Y2VwdCBlcnJvcnMuTm9Xb3JraW5nVHJlZToKICAgICAg
ICAgICAgICAgICAgICAgcHVzaF9yZXN1bHQgPSBicl9mcm9tLnB1c2goYnJfdG8sIG92ZXJ3cml0
ZSkKQEAgLTEwMTgsNyArMTAxOCw3IEBACiAgICAgJ2J6ciByZXZlcnQnIGluc3RlYWQgb2YgJ2J6
ciBjb21taXQnIGFmdGVyIHRoZSB1cGRhdGUuCiAgICAgIiIiCiAKLSAgICBfc2VlX2Fsc28gPSBb
J3B1bGwnXQorICAgIF9zZWVfYWxzbyA9IFsncHVsbCcsICd3b3JraW5nLXRyZWVzJ10KICAgICB0
YWtlc19hcmdzID0gWydkaXI/J10KICAgICBhbGlhc2VzID0gWyd1cCddCiAKQEAgLTEwNjIsNyAr
MTA2Miw3IEBACiAKICAgICBCcmFuY2hlcyBhbmQgd29ya2luZyB0cmVlcyB3aWxsIGFsc28gcmVw
b3J0IGFueSBtaXNzaW5nIHJldmlzaW9ucy4KICAgICAiIiIKLSAgICBfc2VlX2Fsc28gPSBbJ3Jl
dm5vJ10KKyAgICBfc2VlX2Fsc28gPSBbJ3Jldm5vJywgJ3dvcmtpbmctdHJlZXMnLCAncmVwb3Np
dG9yaWVzJ10KICAgICB0YWtlc19hcmdzID0gWydsb2NhdGlvbj8nXQogICAgIHRha2VzX29wdGlv
bnMgPSBbJ3ZlcmJvc2UnXQogCkBAIC0xMzEzLDE5ICsxMzEzLDE4IEBACiBjbGFzcyBjbWRfaW5p
dF9yZXBvc2l0b3J5KENvbW1hbmQpOgogICAgICIiIkNyZWF0ZSBhIHNoYXJlZCByZXBvc2l0b3J5
IHRvIGhvbGQgYnJhbmNoZXMuCiAKLSAgICBOZXcgYnJhbmNoZXMgY3JlYXRlZCB1bmRlciB0aGUg
cmVwb3NpdG9yeSBkaXJlY3Rvcnkgd2lsbCBzdG9yZSB0aGVpciByZXZpc2lvbnMKLSAgICBpbiB0
aGUgcmVwb3NpdG9yeSwgbm90IGluIHRoZSBicmFuY2ggZGlyZWN0b3J5LgorICAgIE5ldyBicmFu
Y2hlcyBjcmVhdGVkIHVuZGVyIHRoZSByZXBvc2l0b3J5IGRpcmVjdG9yeSB3aWxsIHN0b3JlIHRo
ZWlyCisgICAgcmV2aXNpb25zIGluIHRoZSByZXBvc2l0b3J5LCBub3QgaW4gdGhlIGJyYW5jaCBk
aXJlY3RvcnkuCisKKyAgICBJZiB0aGUgLS1uby10cmVlcyBvcHRpb24gaXMgdXNlZCB0aGVuIHRo
ZSBicmFuY2hlcyBpbiB0aGUgcmVwb3NpdG9yeQorICAgIHdpbGwgbm90IGhhdmUgd29ya2luZyB0
cmVlcyBieSBkZWZhdWx0LgogCiAgICAgZXhhbXBsZToKLSAgICAgICAgYnpyIGluaXQtcmVwbyBy
ZXBvCisgICAgICAgIGJ6ciBpbml0LXJlcG8gLS1uby10cmVlcyByZXBvCiAgICAgICAgIGJ6ciBp
bml0IHJlcG8vdHJ1bmsKICAgICAgICAgYnpyIGNoZWNrb3V0IC0tbGlnaHR3ZWlnaHQgcmVwby90
cnVuayB0cnVuay1jaGVja291dAogICAgICAgICBjZCB0cnVuay1jaGVja291dAogICAgICAgICAo
YWRkIGZpbGVzIGhlcmUpCi0gICAgb3I6Ci0gICAgICAgIGJ6ciBpbml0LXJlcG8gLS1uby10cmVl
cyByZXBvCi0gICAgYXMgdGhlIGZpcnN0IHN0ZXAgdG8gZ2V0IGEgcmVwb3NpdG9yeSB3aGVyZSB0
aGUgYnJhbmNoZXMgaW5zaWRlIHdpbGwgbm90Ci0gICAgaGF2ZSB3b3JraW5nIHRyZWVzLgogCiAg
ICAgU2VlICdienIgaGVscCByZXBvc2l0b3JpZXMnIGZvciBtb3JlIGluZm9ybWF0aW9uLgogICAg
ICIiIgoK

=== modified file bzrlib/help_topics.py // encoding:base64
LS0tIGJ6cmxpYi9oZWxwX3RvcGljcy5weQorKysgYnpybGliL2hlbHBfdG9waWNzLnB5CkBAIC0y
NzksNTUgKzI3OSw1NyBAQAogX3JlcG9zaXRvcmllcyA9IFwKICIiIlJlcG9zaXRvcmllcwogCi1S
ZXBvc2l0b3JpZXMgaW4gQmF6YWFyIGFyZSBhIHdheSBvZiBzaGFyaW5nIHN0b3JhZ2UgYmV0d2Vl
biBkaWZmZXJlbnQgYnJhbmNoZXMuCi1JZiBhIGJyYW5jaCBpcyBjcmVhdGVkIHdpdGhpbiBhIHNo
YXJlZCByZXBvc2l0b3J5IHRoZW4gaXQgd2lsbCBwbGFjZSB0aGUKLXJldmlzaW9ucyB3aXRoaW4g
aXQuIFRoZW4gd2hlbiBhbnkgb3RoZXIgYnJhbmNoZXMgYXJlIGNyZWF0ZWQgd2l0aGluIHRoZSBz
YW1lCi1yZXBvc2l0b3J5IHRoZXkgd2lsbCB1c2UgdGhlIHNhbWUgcmV2aXNpb25zIHdoZXJlIHRo
ZXkgYXJlIGNvbW1vbiB0byBib3RoCi1icmFuY2hlcy4gVGhpcyBoYXMgbGl0dGxlIGVmZmVjdCBm
b3IgZGlzdGluY3QgcHJvamVjdHMsIGJ1dCB3aGVyZSB0aGUgYnJhbmNoZXMKLXNoYXJlIHNvbWUg
aGlzdG9yeSB0aGVyZSB3aWxsIGJlIGEgbGFyZ2Ugc3BhY2Ugc2F2aW5nLiBUaGUgc3BhY2Ugc2F2
aW5ncyBjYW4KLWFsc28gYmVjb21lIGxhcmdlIHRpbWUgc2F2aW5ncyBhcyB3ZWxsLCBmb3IgaW5z
dGFuY2Ugd2hlbiBicmFuY2hpbmcgd2l0aGluCi1hIHNoYXJlZCByZXBvc2l0b3JpZXMuCitSZXBv
c2l0b3JpZXMgaW4gQmF6YWFyIGFyZSB3aGVyZSBjb21taXR0ZWQgaW5mb3JtYXRpb24gaXMgc3Rv
cmVkLiBJdCBpcworcG9zc2libGUgdG8gY3JlYXRlIGEgc2hhcmVkIHJlcG9zaXRvcnkgd2hpY2gg
YWxsb3dzIG11bHRpcGxlIGJyYW5jaGVzIHRvCitzaGFyZSB0aGVpciBpbmZvcm1hdGlvbiBpbiB0
aGUgc2FtZSBsb2NhdGlvbi4gV2hlbiBhIG5ldyBicmFuY2ggaXMKK2NyZWF0ZWQgaXQgd2lsbCBm
aXJzdCBsb29rIHRvIHNlZSBpZiB0aGVyZSBpcyBhIGNvbnRhaW5pbmcgcmVwb3NpdG9yeSBpdAor
Y2FuIHNoYXJlLgorCitXaGVuIHR3byBicmFuY2hlcyBvZiB0aGUgc2FtZSBwcm9qZWN0IHNoYXJl
IGEgcmVwb3NpdG9yeSwgdGhlcmUgaXMKK2dlbmVyYWxseSBhIGxhcmdlIHNwYWNlIHNhdmluZy4g
Rm9yIHNvbWUgb3BlcmF0aW9ucyAoZS5nLiBicmFuY2hpbmcKK3dpdGhpbiB0aGUgcmVwb3NpdG9y
eSkgdGhpcyB0cmFuc2xhdGVzIGluIHRvIGEgbGFyZ2UgdGltZSBzYXZpbmcuCiAKIFRvIGNyZWF0
ZSBhIHNoYXJlZCByZXBvc2l0b3J5IHVzZSB0aGUgaW5pdC1yZXBvc2l0b3J5IGNvbW1hbmQgKG9y
IHRoZSBhbGlhcwotaW5pdC1yZXBvKS4gVGhpcyBjb21tYW5kIHRha2VzIGFzIGFuIGFyZ3VtZW50
IHRoZSBsb2NhdGlvbiBvZiB0aGUgcmVwb3NpdG9yeQotdG8gY3JlYXRlLiBUaGlzIG1lYW5zIHRo
YXQgJ2J6ciBpbml0LXJlcG9zaXRvcnkgcmVwbycgd2lsbCBjcmVhdGUgYSBkaXJlY3RvcnkKLW5h
bWVkICdyZXBvJywgd2hpY2ggY29udGFpbnMgYSBzaGFyZWQgcmVwb3NpdG9yeS4gQW55IG5ldyBi
cmFuY2hlcyB0aGF0IGFyZQotY3JlYXRlZCBpbiB0aGlzIGRpcmVjdG9yeSB3aWxsIHRoZW4gYmUg
J2luJyB0aGUgcmVwb3NpdG9yeSwgYW5kIHVzZSBpdCBmb3IKLXN0b3JhZ2UuCitpbml0LXJlcG8p
LiBUaGlzIGNvbW1hbmQgdGFrZXMgdGhlIGxvY2F0aW9uIG9mIHRoZSByZXBvc2l0b3J5IHRvIGNy
ZWF0ZS4gVGhpcworbWVhbnMgdGhhdCAnYnpyIGluaXQtcmVwb3NpdG9yeSByZXBvJyB3aWxsIGNy
ZWF0ZSBhIGRpcmVjdG9yeSBuYW1lZCAncmVwbycsCit3aGljaCBjb250YWlucyBhIHNoYXJlZCBy
ZXBvc2l0b3J5LiBBbnkgbmV3IGJyYW5jaGVzIHRoYXQgYXJlIGNyZWF0ZWQgaW4gdGhpcworZGly
ZWN0b3J5IHdpbGwgdGhlbiB1c2UgaXQgZm9yIHN0b3JhZ2UuCiAKIEl0IGlzIGEgZ29vZCBpZGVh
IHRvIGNyZWF0ZSBhIHJlcG9zaXRvcnkgd2hlbmV2ZXIgeW91IG1pZ2h0IGNyZWF0ZSBtb3JlCiB0
aGFuIG9uZSBicmFuY2ggb2YgYSBwcm9qZWN0LiBUaGlzIGlzIHRydWUgZm9yIGJvdGggd29ya2lu
ZyBhcmVhcyB3aGVyZSB5b3UKIGFyZSBkb2luZyB0aGUgZGV2ZWxvcG1lbnQsIGFuZCBhbnkgc2Vy
dmVyIGFyZWFzIHRoYXQgeW91IHVzZSBmb3IgaG9zdGluZwotcHJvamVjdHMuIEluIHRoZSBsYXR0
ZXIgY2FzZSwgaWYgeW91IGRvIG5vdCB3YW50IHRvIGRvIHdvcmsgZGlyZWN0bHkgdGhlcmUKLXlv
dSBtYXkgd2lzaCB0byBub3QgaGF2ZSB0aGUgYnJhbmNoZXMgaGF2ZSB3b3JraW5nIHRyZWVzLiBJ
ZiB0aGUgd29ya2luZyB0cmVlcwotYXJlIG5vdCBwcmVzZW50IHRoZW4gdGhlcmUgd2lsbCBiZSBs
ZXNzIGRpc2sgc3BhY2UgdXNlZCwgYW5kIGEgbG90IG9mCi1vcGVyYXRpb25zIHdpbGwgYmUgc3Bl
ZCB1cC4gVG8gY3JlYXRlIGEgcmVwb3NpdG9yeSBpbiB3aGljaCB0aGUgYnJhbmNoZXMgd2lsbAot
bm90IGhhdmUgd29ya2luZyB0cmVlcyBwYXNzIHRoZSAnLS1uby10cmVlcycgb3B0aW9uIHRvICdp
bml0LXJlcG9zaXRvcnknLgorcHJvamVjdHMuIEluIHRoZSBsYXR0ZXIgY2FzZSwgaXQgaXMgY29t
bW9uIHRvIHdhbnQgYnJhbmNoZXMgd2l0aG91dCB3b3JraW5nCit0cmVlcy4gU2luY2UgdGhlIGZp
bGVzIGluIHRoZSBicmFuY2ggd2lsbCBub3QgYmUgZWRpdGVkIGRpcmVjdGx5IHRoZXJlIGlzIG5v
CituZWVkIHRvIHVzZSB1cCBkaXNrIHNwYWNlIGZvciBhIHdvcmtpbmcgdHJlZS4gVG8gY3JlYXRl
IGEgcmVwb3NpdG9yeSBpbiB3aGljaAordGhlIGJyYW5jaGVzIHdpbGwgbm90IGhhdmUgd29ya2lu
ZyB0cmVlcyBwYXNzIHRoZSAnLS1uby10cmVlcycgb3B0aW9uIHRvCisnaW5pdC1yZXBvc2l0b3J5
Jy4KIAogUmVsYXRlZCBjb21tYW5kczoKIAogICBpbml0LXJlcG9zaXRvcnkgICBDcmVhdGUgYSBz
aGFyZWQgcmVwb3NpdG9yeS4gVXNlIC0tbm8tdHJlZXMgdG8gY3JlYXRlIG9uZQotICAgICAgICAg
ICAgICAgICAgICBpbiB3aGljaCBuZXcgYnJhbmNoZXMgd29udCBnZXQgYSB3b3JraW5nIHRyZWUu
CisgICAgICAgICAgICAgICAgICAgIGluIHdoaWNoIG5ldyBicmFuY2hlcyB3b24ndCBnZXQgYSB3
b3JraW5nIHRyZWUuCiAiIiIKIAorCiBfd29ya2luZ190cmVlcyA9IFwKICIiIldvcmtpbmcgVHJl
ZXMKIAotQSB3b3JraW5nIHRyZWUgaXMgdGhlIGNvbnRlbnRzIG9mIGEgYnJhbmNoIGNoZWNrZWQg
b3V0IG9uIGRpc2sgc28gdGhhdCB5b3UgY2FuCitBIHdvcmtpbmcgdHJlZSBpcyB0aGUgY29udGVu
dHMgb2YgYSBicmFuY2ggcGxhY2VkIG9uIGRpc2sgc28gdGhhdCB5b3UgY2FuCiBzZWUgdGhlIGZp
bGVzIGFuZCBlZGl0IHRoZW0uIFRoZSB3b3JraW5nIHRyZWUgaXMgd2hlcmUgeW91IG1ha2UgY2hh
bmdlcyB0byBhCiBicmFuY2gsIGFuZCB3aGVuIHlvdSBjb21taXQgdGhlIGN1cnJlbnQgc3RhdGUg
b2YgdGhlIHdvcmtpbmcgdHJlZSBpcyB0aGUKIHNuYXBzaG90IHRoYXQgaXMgcmVjb3JkZWQgaW4g
dGhlIGNvbW1pdC4KIAotV2hlbiB5b3UgcHVzaCBhIGJyYW5jaCB0byBhIHJlbW90ZSBzeXN0ZW0g
dGhlbiBhIHdvcmtpbmcgdHJlZSB3aWxsIG5vdCBiZQotY3JlYXRlZCwgb3IgaWYgdGhlcmUgaXMg
YWxyZWFkeSBvbmUgdGhlcmUgaXQgd2lsbCBub3QgYmUgdXBkYXRlZC4gVGhpcyBpcwotYmVjYXVz
ZSBhbiB1cGRhdGUgdG8gdGhlIHdvcmtpbmcgdHJlZSBjYW4gY2F1c2UgY29uZmxpY3RzLCBhbmQg
dGhhdCBpcwotaGFyZCB0byBkZWFsIHdpdGggcmVtb3RlbHkuCitXaGVuIHlvdSBwdXNoIGEgYnJh
bmNoIHRvIGEgcmVtb3RlIHN5c3RlbSwgYSB3b3JraW5nIHRyZWUgd2lsbCBub3QgYmUKK2NyZWF0
ZWQuIElmIG9uZSBpcyBhbHJlYWR5IHByZXNlbnQgdGhlIGZpbGVzIHdpbGwgbm90IGJlIHVwZGF0
ZWQuIFRoZQorYnJhbmNoIGluZm9ybWF0aW9uIHdpbGwgYmUgdXBkYXRlZCBhbmQgdGhlIHdvcmtp
bmcgdHJlZSB3aWxsIGJlIG1hcmtlZAorYXMgb3V0LW9mLWRhdGUuIFVwZGF0aW5nIGEgd29ya2lu
ZyB0cmVlIHJlbW90ZWx5IGlzIGRpZmZpY3VsdCwgYXMgdGhlcmUKK21heSBiZSB1bmNvbW1pdHRl
ZCBjaGFuZ2VzIG9yIHRoZSB1cGRhdGUgbWF5IGNhdXNlIGNvbnRlbnQgY29uZmxpY3RzIHRoYXQg
YXJlCitkaWZmaWN1bHQgdG8gZGVhbCB3aXRoIHJlbW90ZWx5LgogCiBJZiB5b3UgaGF2ZSBhIGJy
YW5jaCB3aXRoIG5vIHdvcmtpbmcgdHJlZSB5b3UgY2FuIHVzZSB0aGUgJ2NoZWNrb3V0JyBjb21t
YW5kCiB0byBjcmVhdGUgYSB3b3JraW5nIHRyZWUuIElmIHlvdSBydW4gJ2J6ciBjaGVja291dCAu
JyBmcm9tIHRoZSBicmFuY2ggaXQgd2lsbAotY3JlYXRlIHRoZSB3b3JraW5nIHRyZWUuIElmIGEg
c3Vic2VxdWVudCBwdXNoIGZyb20gYSByZW1vdGUgc3lzdGVtIHVwZGF0ZXMgdGhlCi1icmFuY2gg
eW91IGNhbiB1cGRhdGUgdGhlIHdvcmtpbmcgdHJlZSB0byBtYXRjaCB0aGUgYnJhbmNoIGJ5IHJ1
bm5pbmcgJ2J6cgotdXBkYXRlJyBpbiB0aGUgYnJhbmNoLgorY3JlYXRlIHRoZSB3b3JraW5nIHRy
ZWUuIElmIHRoZSBicmFuY2ggaXMgdXBkYXRlZCByZW1vdGVseSwgeW91IGNhbiB1cGRhdGUgdGhl
Cit3b3JraW5nIHRyZWUgYnkgcnVubmluZyAnYnpyIHVwZGF0ZScgaW4gdGhhdCBkaXJlY3Rvcnku
CiAKIElmIHlvdSBoYXZlIGEgYnJhbmNoIHdpdGggYSB3b3JraW5nIHRyZWUgdGhhdCB5b3UgZG8g
bm90IHdhbnQgdGhlICdyZW1vdmUtdHJlZScKIGNvbW1hbmQgd2lsbCByZW1vdmUgdGhlIHRyZWUg
aWYgaXQgaXMgc2FmZS4gVGhpcyBjYW4gYmUgZG9uZSB0byBhdm9pZCB0aGUKCg==

=== modified file bzrlib/tests/blackbox/test_help.py // encoding:base64
LS0tIGJ6cmxpYi90ZXN0cy9ibGFja2JveC90ZXN0X2hlbHAucHkKKysrIGJ6cmxpYi90ZXN0cy9i
bGFja2JveC90ZXN0X2hlbHAucHkKQEAgLTE5LDYgKzE5LDcgQEAKICIiIgogCiAKK2ltcG9ydCBi
enJsaWIKIGZyb20gYnpybGliLnRlc3RzLmJsYWNrYm94IGltcG9ydCBFeHRlcm5hbEJhc2UKIAog
CkBAIC03MiwxOCArNzMsMTIgQEAKICAgICBkZWYgdGVzdF9oZWxwX3JlcG9zaXRvcmllcyhzZWxm
KToKICAgICAgICAgIiIiU21va2UgdGVzdCBmb3IgJ2J6ciBoZWxwIHJlcG9zaXRvcmllcyciIiIK
ICAgICAgICAgb3V0LCBlcnIgPSBzZWxmLnJ1bmJ6cignaGVscCByZXBvc2l0b3JpZXMnKQotICAg
ICAgICBzZWxmLmFzc2VydENvbnRhaW5zUmUob3V0LCAncmVwb3NpdG9yeScpCi0gICAgICAgIHNl
bGYuYXNzZXJ0Q29udGFpbnNSZShvdXQsICctLW5vLXRyZWVzJykKLSAgICAgICAgc2VsZi5hc3Nl
cnRDb250YWluc1JlKG91dCwgJ2luaXQtcmVwb3NpdG9yeScpCisgICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwoYnpybGliLmhlbHBfdG9waWNzLl9yZXBvc2l0b3JpZXMsIG91dCkKIAogICAgIGRlZiB0
ZXN0X2hlbHBfd29ya2luZ190cmVlcyhzZWxmKToKICAgICAgICAgIiIiU21va2UgdGVzdCBmb3Ig
J2J6ciBoZWxwIHdvcmtpbmctdHJlZXMnIiIiCiAgICAgICAgIG91dCwgZXJyID0gc2VsZi5ydW5i
enIoJ2hlbHAgd29ya2luZy10cmVlcycpCi0gICAgICAgIHNlbGYuYXNzZXJ0Q29udGFpbnNSZShv
dXQsICdyZXBvc2l0b3J5JykKLSAgICAgICAgc2VsZi5hc3NlcnRDb250YWluc1JlKG91dCwgJ3Jl
bW90ZScpCi0gICAgICAgIHNlbGYuYXNzZXJ0Q29udGFpbnNSZShvdXQsICdjaGVja291dCcpCi0g
ICAgICAgIHNlbGYuYXNzZXJ0Q29udGFpbnNSZShvdXQsICd1cGRhdGUnKQotICAgICAgICBzZWxm
LmFzc2VydENvbnRhaW5zUmUob3V0LCAncmVtb3ZlLXRyZWUnKQorICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKGJ6cmxpYi5oZWxwX3RvcGljcy5fd29ya2luZ190cmVlcywgb3V0KQogCiAgICAgZGVm
IHRlc3RfaGVscF9jb21tYW5kcyhzZWxmKToKICAgICAgICAgZGFzaF9oZWxwICA9IHNlbGYucnVu
YnpyKCctLWhlbHAgY29tbWFuZHMnKVswXQoK

=== modified directory  // last-changed:jw+debian@jameswestby.net-2007051420424
... 7-mcxwep2on9g5p30w
# revision id: jw+debian@jameswestby.net-20070514204247-mcxwep2on9g5p30w
# sha1: 80f20d935c312447dce8f49223310a23c5df0a19
# inventory sha1: 50538479ac02d4dc1a0c87b833e5b614f66f2b87
# parent ids:
#   jw+debian@jameswestby.net-20070514193026-3itaozap05k3vuxp
# properties:
#   branch-nick: bzr.repohelp

# message:
#   Update the help topics to the latest bzr.dev.
#   
# committer: James Westby <jw+debian@jameswestby.net>
# date: Mon 2007-05-14 20:30:26.180000067 +0100

=== removed file build-api
=== removed file bzrlib/tests/test_doc_generate.py
=== added file bzrlib/breakin.py // file-id:breakin.py-20070417043829-so46nevf9
... 78u713k-1 // last-changed:bialix@ukr.net-20070425044607-qbl5oce7jygaxat2 //
...  encoding:base64
LS0tIC9kZXYvbnVsbAorKysgYnpybGliL2JyZWFraW4ucHkKQEAgLTAsMCArMSw0MSBAQAorIyBD
b3B5cmlnaHQgKEMpIDIwMDYsIDIwMDcgQ2Fub25pY2FsIEx0ZAorIworIyBUaGlzIHByb2dyYW0g
aXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQor
IyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFz
IHB1Ymxpc2hlZCBieQorIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVy
c2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgorIyAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2
ZXJzaW9uLgorIworIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhh
dCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0
IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorIyBHTlUgR2VuZXJhbCBQdWJs
aWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorIworIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2
ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorIyBhbG9uZyB3aXRo
IHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorIyBGb3Vu
ZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAgMDIx
MTEtMTMwNyAgVVNBCisKK2ltcG9ydCBvcworaW1wb3J0IHNpZ25hbAorCitkZWYgX2RlYnVnKHNp
Z25hbF9udW1iZXIsIGludGVycnVwdGVkX2ZyYW1lKToKKyAgICBpbXBvcnQgcGRiCisgICAgaW1w
b3J0IHN5cworICAgIHN5cy5zdGRlcnIud3JpdGUoIioqIFNJR1FVSVQgcmVjZWl2ZWQsIGVudGVy
aW5nIGRlYnVnZ2VyXG4iCisgICAgICAgICAgICAiKiogVHlwZSAnYycgdG8gY29udGludWUgb3Ig
J3EnIHRvIHN0b3AgdGhlIHByb2Nlc3NcbiIKKyAgICAgICAgICAgICIqKiBPciBTSUdRVUlUIGFn
YWluIHRvIHF1aXQgKGFuZCBwb3NzaWJseSBkdW1wIGNvcmUpXG4iCisgICAgICAgICAgICApCisg
ICAgIyByZXN0b3JlIGRlZmF1bHQgbWVhbmluZyBzbyB0aGF0IHlvdSBjYW4ga2lsbCB0aGUgcHJv
Y2VzcyBieSBoaXR0aW5nIGl0CisgICAgIyB0d2ljZQorICAgIHNpZ25hbC5zaWduYWwoc2lnbmFs
LlNJR1FVSVQsIHNpZ25hbC5TSUdfREZMKQorICAgIHRyeToKKyAgICAgICAgcGRiLnNldF90cmFj
ZSgpCisgICAgZmluYWxseToKKyAgICAgICAgc2lnbmFsLnNpZ25hbChzaWduYWwuU0lHUVVJVCwg
X2RlYnVnKQorCisKK2RlZiBob29rX3NpZ3F1aXQoKToKKyAgICAjIHdoZW4gc2lncXVpdCAoQy1c
KSBpcyByZWNlaXZlZCBnbyBpbnRvIHBkYgorICAgIGlmIChvcy5lbnZpcm9uLmdldCgnQlpSX1NJ
R1FVSVRfUERCJywgJzEnKSA9PSAnMCcKKyAgICAgICAgb3IgZ2V0YXR0cihzaWduYWwsICdTSUdR
VUlUJywgTm9uZSkgaXMgTm9uZSk6CisgICAgICAgIHJldHVybgorICAgIHNpZ25hbC5zaWduYWwo
c2lnbmFsLlNJR1FVSVQsIF9kZWJ1ZykKCg==

=== added file bzrlib/bugtracker.py // file-id:bugtracker.py-20070410073305-vu1
... vu1qosjurg8kb-1 // last-changed:jml@canonical.com-20070423055929-chgdr92da6
... 3lhcri // encoding:base64
LS0tIC9kZXYvbnVsbAorKysgYnpybGliL2J1Z3RyYWNrZXIucHkKQEAgLTAsMCArMSwxNzMgQEAK
KyMgQ29weXJpZ2h0IChDKSAyMDA3IENhbm9uaWNhbCBMdGQKKyMKKyMgVGhpcyBwcm9ncmFtIGlz
IGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyMg
aXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBw
dWJsaXNoZWQgYnkKKyMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNp
b24gMiBvZiB0aGUgTGljZW5zZSwgb3IKKyMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVy
c2lvbi4KKyMKKyMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQg
aXQgd2lsbCBiZSB1c2VmdWwsCisjIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBl
dmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisjIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyMgR05VIEdlbmVyYWwgUHVibGlj
IExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyMKKyMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVk
IGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyMgYWxvbmcgd2l0aCB0
aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyMgRm91bmRh
dGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgIDAyMTEx
LTEzMDcgIFVTQQorCitpbXBvcnQgdGV4dHdyYXAKKworZnJvbSBienJsaWIgaW1wb3J0IHJlZ2lz
dHJ5LCBoZWxwX3RvcGljcworZnJvbSBienJsaWIubGF6eV9pbXBvcnQgaW1wb3J0IGxhenlfaW1w
b3J0CitsYXp5X2ltcG9ydChnbG9iYWxzKCksICIiIgorZnJvbSBienJsaWIgaW1wb3J0IGVycm9y
cywgdXJsdXRpbHMKKyIiIikKKworCisiIiJQcm92aWRlcyBhIHNob3J0aGFuZCBmb3IgcmVmZXJy
aW5nIHRvIGJ1Z3Mgb24gYSB2YXJpZXR5IG9mIGJ1ZyB0cmFja2Vycy4KKworJ2NvbW1pdCAtLWZp
eGVzJyBzdG9yZXMgcmVmZXJlbmNlcyB0byBidWdzIGFzIGEgPGJ1Z191cmw+IC0+IDxidWdfc3Rh
dHVzPgorbWFwcGluZyBpbiB0aGUgcHJvcGVydGllcyBmb3IgdGhhdCByZXZpc2lvbi4KKworSG93
ZXZlciwgaXQncyBpbmNvbnZlbmllbnQgdG8gdHlwZSBvdXQgZnVsbCBVUkxzIGZvciBidWdzIG9u
IHRoZSBjb21tYW5kIGxpbmUsCitwYXJ0aWN1bGFybHkgZ2l2ZW4gdGhhdCBtYW55IHVzZXJzIHdp
bGwgYmUgdXNpbmcgb25seSBhIHNpbmdsZSBidWcgdHJhY2tlciBwZXIKK2JyYW5jaC4KKworVGh1
cywgdGhpcyBtb2R1bGUgcHJvdmlkZXMgYSByZWdpc3RyeSBvZiB0eXBlcyBvZiBidWcgdHJhY2tl
ciAoZS5nLiBMYXVuY2hwYWQsCitUcmFjKS4gR2l2ZW4gYW4gYWJicmV2aWF0ZWQgbmFtZSAoZS5n
LiAnbHAnLCAndHdpc3RlZCcpIGFuZCBhIGJyYW5jaCB3aXRoCitjb25maWd1cmF0aW9uIGluZm9y
bWF0aW9uLCB0aGVzZSB0cmFja2VyIHR5cGVzIGNhbiByZXR1cm4gYW4gaW5zdGFuY2UgY2FwYWJs
ZQorb2YgY29udmVydGluZyBidWcgSURzIGludG8gVVJMcy4KKyIiIgorCisKK2RlZiBnZXRfYnVn
X3VybChhYmJyZXZpYXRlZF9idWd0cmFja2VyX25hbWUsIGJyYW5jaCwgYnVnX2lkKToKKyAgICAi
IiJSZXR1cm4gYSBVUkwgcG9pbnRpbmcgdG8gdGhlIGNhbm9uaWNhbCB3ZWIgcGFnZSBvZiB0aGUg
YnVnIGlkZW50aWZpZWQgYnkKKyAgICAnYnVnX2lkJy4KKyAgICAiIiIKKyAgICB0cmFja2VyID0g
dHJhY2tlcl9yZWdpc3RyeS5nZXRfdHJhY2tlcihhYmJyZXZpYXRlZF9idWd0cmFja2VyX25hbWUs
IGJyYW5jaCkKKyAgICByZXR1cm4gdHJhY2tlci5nZXRfYnVnX3VybChidWdfaWQpCisKKworY2xh
c3MgVHJhY2tlclJlZ2lzdHJ5KHJlZ2lzdHJ5LlJlZ2lzdHJ5KToKKyAgICAiIiJSZWdpc3RyeSBv
ZiBidWcgdHJhY2tlciB0eXBlcy4iIiIKKworICAgIGRlZiBnZXRfdHJhY2tlcihzZWxmLCBhYmJy
ZXZpYXRlZF9idWd0cmFja2VyX25hbWUsIGJyYW5jaCk6CisgICAgICAgICIiIlJldHVybiB0aGUg
Zmlyc3QgcmVnaXN0ZXJlZCB0cmFja2VyIHRoYXQgdW5kZXJzdGFuZHMKKyAgICAgICAgJ2FiYnJl
dmlhdGVkX2J1Z3RyYWNrZXJfbmFtZScuCisKKyAgICAgICAgSWYgbm8gc3VjaCB0cmFja2VyIGlz
IGZvdW5kLCByYWlzZSBLZXlFcnJvci4KKyAgICAgICAgIiIiCisgICAgICAgIGZvciB0cmFja2Vy
X25hbWUgaW4gc2VsZi5rZXlzKCk6CisgICAgICAgICAgICB0cmFja2VyX3R5cGUgPSBzZWxmLmdl
dCh0cmFja2VyX25hbWUpCisgICAgICAgICAgICB0cmFja2VyID0gdHJhY2tlcl90eXBlLmdldChh
YmJyZXZpYXRlZF9idWd0cmFja2VyX25hbWUsIGJyYW5jaCkKKyAgICAgICAgICAgIGlmIHRyYWNr
ZXIgaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgcmV0dXJuIHRyYWNrZXIKKyAgICAgICAg
cmFpc2UgZXJyb3JzLlVua25vd25CdWdUcmFja2VyQWJicmV2aWF0aW9uKGFiYnJldmlhdGVkX2J1
Z3RyYWNrZXJfbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGJyYW5jaCkKKworICAgIGRlZiBoZWxwX3RvcGljKHNlbGYsIHRvcGljKToKKyAg
ICAgICAgcmV0dXJuIHRleHR3cmFwLmRlZGVudCgiIiJcCisgICAgICAgIEJhemFhciBwcm92aWRl
cyB0aGUgYWJpbGl0eSB0byBzdG9yZSBpbmZvcm1hdGlvbiBhYm91dCBidWdzIGJlaW5nIGZpeGVk
CisgICAgICAgIGFzIG1ldGFkYXRhIG9uIGEgcmV2aXNpb24uCisKKyAgICAgICAgRm9yIGVhY2gg
YnVnIG1hcmtlZCBhcyBmaXhlZCwgYW4gZW50cnkgaXMgaW5jbHVkZWQgaW4gdGhlICdidWdzJwor
ICAgICAgICByZXZpc2lvbiBwcm9wZXJ0eSBzdGF0aW5nICc8dXJsPiA8c3RhdHVzPicuCisgICAg
ICAgICIiIikKKworCit0cmFja2VyX3JlZ2lzdHJ5ID0gVHJhY2tlclJlZ2lzdHJ5KCkKKyIiIlJl
Z2lzdHJ5IG9mIGJ1ZyB0cmFja2Vycy4iIiIKKworCitjbGFzcyBCdWdUcmFja2VyKG9iamVjdCk6
CisgICAgIiIiQmFzZSBjbGFzcyBmb3IgYnVnIHRyYWNrZXJzLiIiIgorCisgICAgZGVmIGNoZWNr
X2J1Z19pZChzZWxmLCBidWdfaWQpOgorICAgICAgICAiIiJDaGVjayB0aGF0IHRoZSBidWdfaWQg
aXMgdmFsaWQuCisKKyAgICAgICAgVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gYXNzdW1lcyB0aGF0
IGFsbCBidWdfaWRzIGFyZSB2YWxpZC4KKyAgICAgICAgIiIiCisKKyAgICBkZWYgZ2V0X2J1Z191
cmwoc2VsZiwgYnVnX2lkKToKKyAgICAgICAgIiIiUmV0dXJuIHRoZSBVUkwgZm9yIGJ1Z19pZC4g
UmFpc2UgYW4gZXJyb3IgaWYgYnVnIElEIGlzIG1hbGZvcm1lZC4iIiIKKyAgICAgICAgc2VsZi5j
aGVja19idWdfaWQoYnVnX2lkKQorICAgICAgICByZXR1cm4gc2VsZi5fZ2V0X2J1Z191cmwoYnVn
X2lkKQorCisgICAgZGVmIF9nZXRfYnVnX3VybChzZWxmLCBidWdfaWQpOgorICAgICAgICAiIiJH
aXZlbiBhIHZhbGlkYXRlZCBidWdfaWQsIHJldHVybiB0aGUgYnVnJ3Mgd2ViIHBhZ2UncyBVUkwu
IiIiCisKKworY2xhc3MgSW50ZWdlckJ1Z1RyYWNrZXIoQnVnVHJhY2tlcik6CisgICAgIiIiQSBi
dWcgdHJhY2tlciB0aGF0IG9ubHkgYWxsb3dzIGludGVnZXIgYnVnIElEcy4iIiIKKworICAgIGRl
ZiBjaGVja19idWdfaWQoc2VsZiwgYnVnX2lkKToKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAg
aW50KGJ1Z19pZCkKKyAgICAgICAgZXhjZXB0IFZhbHVlRXJyb3I6CisgICAgICAgICAgICByYWlz
ZSBlcnJvcnMuTWFsZm9ybWVkQnVnSWRlbnRpZmllcihidWdfaWQsICJNdXN0IGJlIGFuIGludGVn
ZXIiKQorCisKK2NsYXNzIFVuaXF1ZUludGVnZXJCdWdUcmFja2VyKEludGVnZXJCdWdUcmFja2Vy
KToKKyAgICAiIiJBIHN0eWxlIG9mIGJ1ZyB0cmFja2VyIHRoYXQgZXhpc3RzIGluIG9uZSBwbGFj
ZSBvbmx5LCBzdWNoIGFzIExhdW5jaHBhZC4KKworICAgIElmIHlvdSBoYXZlIG9uZSBvZiB0aGVz
ZSB0cmFja2VycyB0aGVuIHJlZ2lzdGVyIGFuIGluc3RhbmNlIHBhc3NpbmcgaW4gYW4KKyAgICBh
YmJyZXZpYXRlZCBuYW1lIGZvciB0aGUgYnVnIHRyYWNrZXIgYW5kIGEgYmFzZSBVUkwuCisgICAg
IiIiCisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgYWJicmV2aWF0ZWRfYnVndHJhY2tlcl9uYW1l
LCBiYXNlX3VybCk6CisgICAgICAgIHNlbGYuYWJicmV2aWF0aW9uID0gYWJicmV2aWF0ZWRfYnVn
dHJhY2tlcl9uYW1lCisgICAgICAgIHNlbGYuYmFzZV91cmwgPSBiYXNlX3VybAorCisgICAgZGVm
IGdldChzZWxmLCBhYmJyZXZpYXRlZF9idWd0cmFja2VyX25hbWUsIGJyYW5jaCk6CisgICAgICAg
ICIiIlJldHVybnMgdGhlIHRyYWNrZXIgaWYgdGhlIGFiYnJldmlhdGlvbiBtYXRjaGVzLiBSZXR1
cm5zIE5vbmUKKyAgICAgICAgb3RoZXJ3aXNlLiIiIgorICAgICAgICBpZiBhYmJyZXZpYXRlZF9i
dWd0cmFja2VyX25hbWUgIT0gc2VsZi5hYmJyZXZpYXRpb246CisgICAgICAgICAgICByZXR1cm4g
Tm9uZQorICAgICAgICByZXR1cm4gc2VsZgorCisgICAgZGVmIF9nZXRfYnVnX3VybChzZWxmLCBi
dWdfaWQpOgorICAgICAgICAiIiJSZXR1cm4gdGhlIFVSTCBmb3IgYnVnX2lkLiIiIgorICAgICAg
ICByZXR1cm4gdXJsdXRpbHMuam9pbihzZWxmLmJhc2VfdXJsLCBidWdfaWQpCisKKwordHJhY2tl
cl9yZWdpc3RyeS5yZWdpc3RlcigKKyAgICAnbGF1bmNocGFkJywgVW5pcXVlSW50ZWdlckJ1Z1Ry
YWNrZXIoJ2xwJywgJ2h0dHBzOi8vbGF1bmNocGFkLm5ldC9idWdzLycpKQorCisKK3RyYWNrZXJf
cmVnaXN0cnkucmVnaXN0ZXIoCisgICAgJ2RlYmlhbicsIFVuaXF1ZUludGVnZXJCdWdUcmFja2Vy
KCdkZWInLCAnaHR0cDovL2J1Z3MuZGViaWFuLm9yZy8nKSkKKworCitjbGFzcyBVUkxQYXJhbWV0
cml6ZWRJbnRlZ2VyQnVnVHJhY2tlcihJbnRlZ2VyQnVnVHJhY2tlcik6CisgICAgIiIiQSB0eXBl
IG9mIGJ1ZyB0cmFja2VyIHRoYXQgY2FuIGJlIGZvdW5kIG9uIGEgdmFyaWV0eSBvZiBkaWZmZXJl
bnQgc2l0ZXMsCisgICAgYW5kIHRodXMgbmVlZHMgdG8gaGF2ZSB0aGUgYmFzZSBVUkwgY29uZmln
dXJlZC4KKworICAgIExvb2tzIGZvciBhIGNvbmZpZyBzZXR0aW5nIGluIHRoZSBmb3JtICc8dHlw
ZV9uYW1lPl88YWJicmV2aWF0aW9uPl91cmwnLgorICAgIGB0eXBlX25hbWVgIGlzIHRoZSBuYW1l
IG9mIHRoZSB0eXBlIG9mIHRyYWNrZXIgKGUuZy4gJ2J1Z3ppbGxhJyBvciAndHJhYycpCisgICAg
YW5kIGBhYmJyZXZpYXRpb25gIGlzIGEgc2hvcnQgbmFtZSBmb3IgdGhlIHBhcnRpY3VsYXIgaW5z
dGFuY2UgKGUuZy4KKyAgICAnc3F1aWQnIG9yICdhcGFjaGUnKS4KKyAgICAiIiIKKworICAgIGRl
ZiBnZXQoc2VsZiwgYWJicmV2aWF0aW9uLCBicmFuY2gpOgorICAgICAgICBjb25maWcgPSBicmFu
Y2guZ2V0X2NvbmZpZygpCisgICAgICAgIHVybCA9IGNvbmZpZy5nZXRfdXNlcl9vcHRpb24oCisg
ICAgICAgICAgICAiJXNfJXNfdXJsIiAlIChzZWxmLnR5cGVfbmFtZSwgYWJicmV2aWF0aW9uKSkK
KyAgICAgICAgaWYgdXJsIGlzIE5vbmU6CisgICAgICAgICAgICByZXR1cm4gTm9uZQorICAgICAg
ICBzZWxmLl9iYXNlX3VybCA9IHVybAorICAgICAgICByZXR1cm4gc2VsZgorCisgICAgZGVmIF9f
aW5pdF9fKHNlbGYsIHR5cGVfbmFtZSwgYnVnX2FyZWEpOgorICAgICAgICBzZWxmLnR5cGVfbmFt
ZSA9IHR5cGVfbmFtZQorICAgICAgICBzZWxmLl9idWdfYXJlYSA9IGJ1Z19hcmVhCisKKyAgICBk
ZWYgX2dldF9idWdfdXJsKHNlbGYsIGJ1Z19pZCk6CisgICAgICAgICIiIlJldHVybiBhIFVSTCBm
b3IgYSBidWcgb24gdGhpcyBUcmFjIGluc3RhbmNlLiIiIgorICAgICAgICByZXR1cm4gdXJsdXRp
bHMuam9pbihzZWxmLl9iYXNlX3VybCwgc2VsZi5fYnVnX2FyZWEpICsgc3RyKGJ1Z19pZCkKKwor
Cit0cmFja2VyX3JlZ2lzdHJ5LnJlZ2lzdGVyKAorICAgICd0cmFjJywgVVJMUGFyYW1ldHJpemVk
SW50ZWdlckJ1Z1RyYWNrZXIoJ3RyYWMnLCAndGlja2V0LycpKQorCit0cmFja2VyX3JlZ2lzdHJ5
LnJlZ2lzdGVyKAorICAgICdidWd6aWxsYScsCisgICAgVVJMUGFyYW1ldHJpemVkSW50ZWdlckJ1
Z1RyYWNrZXIoJ2J1Z3ppbGxhJywgJ3Nob3dfYnVnLmNnaT9pZD0nKSkKCg==

=== added file bzrlib/remote.py // file-id:remote.py-20060720103555-yeeg2x51vn0
... rbtdp-1 // last-changed:mbp@sourcefrog.net-20070507120314-a2h78bjezemwyl17 
... // encoding:base64
LS0tIC9kZXYvbnVsbAorKysgYnpybGliL3JlbW90ZS5weQpAQCAtMCwwICsxLDEwNjYgQEAKKyMg
Q29weXJpZ2h0IChDKSAyMDA2LCAyMDA3IENhbm9uaWNhbCBMdGQKKyMKKyMgVGhpcyBwcm9ncmFt
IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkK
KyMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBh
cyBwdWJsaXNoZWQgYnkKKyMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZl
cnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKKyMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIg
dmVyc2lvbi4KKyMKKyMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRo
YXQgaXQgd2lsbCBiZSB1c2VmdWwsCisjIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91
dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisjIE1FUkNIQU5UQUJJTElUWSBvciBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyMgR05VIEdlbmVyYWwgUHVi
bGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyMKKyMgWW91IHNob3VsZCBoYXZlIHJlY2Vp
dmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyMgYWxvbmcgd2l0
aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyMgRm91
bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgIDAy
MTExLTEzMDcgIFVTQQorCisjIFRPRE86IEF0IHNvbWUgcG9pbnQsIGhhbmRsZSB1cGdyYWRlcyBi
eSBqdXN0IHBhc3NpbmcgdGhlIHdob2xlIHJlcXVlc3QKKyMgYWNyb3NzIHRvIHJ1biBvbiB0aGUg
c2VydmVyLgorCitmcm9tIGNTdHJpbmdJTyBpbXBvcnQgU3RyaW5nSU8KKworZnJvbSBienJsaWIg
aW1wb3J0IGJyYW5jaCwgZXJyb3JzLCBsb2NrZGlyLCByZXBvc2l0b3J5Citmcm9tIGJ6cmxpYi5i
cmFuY2ggaW1wb3J0IEJyYW5jaCwgQnJhbmNoUmVmZXJlbmNlRm9ybWF0Citmcm9tIGJ6cmxpYi5i
enJkaXIgaW1wb3J0IEJ6ckRpciwgUmVtb3RlQnpyRGlyRm9ybWF0Citmcm9tIGJ6cmxpYi5jb25m
aWcgaW1wb3J0IEJyYW5jaENvbmZpZywgVHJlZUNvbmZpZworZnJvbSBienJsaWIuZGVjb3JhdG9y
cyBpbXBvcnQgbmVlZHNfcmVhZF9sb2NrLCBuZWVkc193cml0ZV9sb2NrCitmcm9tIGJ6cmxpYi5l
cnJvcnMgaW1wb3J0IE5vU3VjaFJldmlzaW9uCitmcm9tIGJ6cmxpYi5sb2NrYWJsZV9maWxlcyBp
bXBvcnQgTG9ja2FibGVGaWxlcworZnJvbSBienJsaWIucmV2aXNpb24gaW1wb3J0IE5VTExfUkVW
SVNJT04KK2Zyb20gYnpybGliLnNtYXJ0IGltcG9ydCBjbGllbnQsIHZmcworZnJvbSBienJsaWIu
dHJhY2UgaW1wb3J0IG5vdGUKKworIyBOb3RlOiBSZW1vdGVCenJEaXJGb3JtYXQgaXMgaW4gYnpy
ZGlyLnB5CisKK2NsYXNzIFJlbW90ZUJ6ckRpcihCenJEaXIpOgorICAgICIiIkNvbnRyb2wgZGly
ZWN0b3J5IG9uIGEgcmVtb3RlIHNlcnZlciwgYWNjZXNzZWQgdmlhIGJ6cjovLyBvciBzaW1pbGFy
LiIiIgorCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIHRyYW5zcG9ydCwgX2NsaWVudD1Ob25lKToK
KyAgICAgICAgIiIiQ29uc3RydWN0IGEgUmVtb3RlQnpyRGlyLgorCisgICAgICAgIDpwYXJhbSBf
Y2xpZW50OiBQcml2YXRlIHBhcmFtZXRlciBmb3IgdGVzdGluZy4gRGlzYWJsZXMgcHJvYmluZyBh
bmQgdGhlCisgICAgICAgICAgICB1c2Ugb2YgYSByZWFsIGJ6cmRpci4KKyAgICAgICAgIiIiCisg
ICAgICAgIEJ6ckRpci5fX2luaXRfXyhzZWxmLCB0cmFuc3BvcnQsIFJlbW90ZUJ6ckRpckZvcm1h
dCgpKQorICAgICAgICAjIHRoaXMgb2JqZWN0IGhvbGRzIGEgZGVsZWdhdGVkIGJ6cmRpciB0aGF0
IHVzZXMgZmlsZS1sZXZlbCBvcGVyYXRpb25zCisgICAgICAgICMgdG8gdGFsayB0byB0aGUgb3Ro
ZXIgc2lkZQorICAgICAgICBzZWxmLl9yZWFsX2J6cmRpciA9IE5vbmUKKworICAgICAgICBpZiBf
Y2xpZW50IGlzIE5vbmU6CisgICAgICAgICAgICBzZWxmLl9tZWRpdW0gPSB0cmFuc3BvcnQuZ2V0
X3NtYXJ0X2NsaWVudCgpCisgICAgICAgICAgICBzZWxmLl9jbGllbnQgPSBjbGllbnQuX1NtYXJ0
Q2xpZW50KHNlbGYuX21lZGl1bSkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNlbGYuX2Ns
aWVudCA9IF9jbGllbnQKKyAgICAgICAgICAgIHNlbGYuX21lZGl1bSA9IE5vbmUKKyAgICAgICAg
ICAgIHJldHVybgorCisgICAgICAgIHBhdGggPSBzZWxmLl9wYXRoX2Zvcl9yZW1vdGVfY2FsbChz
ZWxmLl9jbGllbnQpCisgICAgICAgIHJlc3BvbnNlID0gc2VsZi5fY2xpZW50LmNhbGwoJ0J6ckRp
ci5vcGVuJywgcGF0aCkKKyAgICAgICAgaWYgcmVzcG9uc2Ugbm90IGluIFsoJ3llcycsKSwgKCdu
bycsKV06CisgICAgICAgICAgICByYWlzZSBlcnJvcnMuVW5leHBlY3RlZFNtYXJ0U2VydmVyUmVz
cG9uc2UocmVzcG9uc2UpCisgICAgICAgIGlmIHJlc3BvbnNlID09ICgnbm8nLCk6CisgICAgICAg
ICAgICByYWlzZSBlcnJvcnMuTm90QnJhbmNoRXJyb3IocGF0aD10cmFuc3BvcnQuYmFzZSkKKwor
ICAgIGRlZiBfZW5zdXJlX3JlYWwoc2VsZik6CisgICAgICAgICIiIkVuc3VyZSB0aGF0IHRoZXJl
IGlzIGEgX3JlYWxfYnpyZGlyIHNldC4KKworICAgICAgICBVc2VkIGJlZm9yZSBjYWxscyB0byBz
ZWxmLl9yZWFsX2J6cmRpci4KKyAgICAgICAgIiIiCisgICAgICAgIGlmIG5vdCBzZWxmLl9yZWFs
X2J6cmRpcjoKKyAgICAgICAgICAgIHNlbGYuX3JlYWxfYnpyZGlyID0gQnpyRGlyLm9wZW5fZnJv
bV90cmFuc3BvcnQoCisgICAgICAgICAgICAgICAgc2VsZi5yb290X3RyYW5zcG9ydCwgX3NlcnZl
cl9mb3JtYXRzPUZhbHNlKQorCisgICAgZGVmIGNyZWF0ZV9yZXBvc2l0b3J5KHNlbGYsIHNoYXJl
ZD1GYWxzZSk6CisgICAgICAgIHNlbGYuX2Vuc3VyZV9yZWFsKCkKKyAgICAgICAgc2VsZi5fcmVh
bF9ienJkaXIuY3JlYXRlX3JlcG9zaXRvcnkoc2hhcmVkPXNoYXJlZCkKKyAgICAgICAgcmV0dXJu
IHNlbGYub3Blbl9yZXBvc2l0b3J5KCkKKworICAgIGRlZiBjcmVhdGVfYnJhbmNoKHNlbGYpOgor
ICAgICAgICBzZWxmLl9lbnN1cmVfcmVhbCgpCisgICAgICAgIHJlYWxfYnJhbmNoID0gc2VsZi5f
cmVhbF9ienJkaXIuY3JlYXRlX2JyYW5jaCgpCisgICAgICAgIHJldHVybiBSZW1vdGVCcmFuY2go
c2VsZiwgc2VsZi5maW5kX3JlcG9zaXRvcnkoKSwgcmVhbF9icmFuY2gpCisKKyAgICBkZWYgY3Jl
YXRlX3dvcmtpbmd0cmVlKHNlbGYsIHJldmlzaW9uX2lkPU5vbmUpOgorICAgICAgICByYWlzZSBl
cnJvcnMuTm90TG9jYWxVcmwoc2VsZi50cmFuc3BvcnQuYmFzZSkKKworICAgIGRlZiBmaW5kX2Jy
YW5jaF9mb3JtYXQoc2VsZik6CisgICAgICAgICIiIkZpbmQgdGhlIGJyYW5jaCAnZm9ybWF0JyBm
b3IgdGhpcyBienJkaXIuCisKKyAgICAgICAgVGhpcyBtaWdodCBiZSBhIHN5bnRoZXRpYyBvYmpl
Y3QgZm9yIGUuZy4gUmVtb3RlQnJhbmNoIGFuZCBTVk4uCisgICAgICAgICIiIgorICAgICAgICBi
ID0gc2VsZi5vcGVuX2JyYW5jaCgpCisgICAgICAgIHJldHVybiBiLl9mb3JtYXQKKworICAgIGRl
ZiBnZXRfYnJhbmNoX3JlZmVyZW5jZShzZWxmKToKKyAgICAgICAgIiIiU2VlIEJ6ckRpci5nZXRf
YnJhbmNoX3JlZmVyZW5jZSgpLiIiIgorICAgICAgICBwYXRoID0gc2VsZi5fcGF0aF9mb3JfcmVt
b3RlX2NhbGwoc2VsZi5fY2xpZW50KQorICAgICAgICByZXNwb25zZSA9IHNlbGYuX2NsaWVudC5j
YWxsKCdCenJEaXIub3Blbl9icmFuY2gnLCBwYXRoKQorICAgICAgICBpZiByZXNwb25zZVswXSA9
PSAnb2snOgorICAgICAgICAgICAgaWYgcmVzcG9uc2VbMV0gPT0gJyc6CisgICAgICAgICAgICAg
ICAgIyBicmFuY2ggYXQgdGhpcyBsb2NhdGlvbi4KKyAgICAgICAgICAgICAgICByZXR1cm4gTm9u
ZQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAjIGEgYnJhbmNoIHJlZmVyZW5j
ZSwgdXNlIHRoZSBleGlzdGluZyBCcmFuY2hSZWZlcmVuY2UgbG9naWMuCisgICAgICAgICAgICAg
ICAgcmV0dXJuIHJlc3BvbnNlWzFdCisgICAgICAgIGVsaWYgcmVzcG9uc2UgPT0gKCdub2JyYW5j
aCcsKToKKyAgICAgICAgICAgIHJhaXNlIGVycm9ycy5Ob3RCcmFuY2hFcnJvcihwYXRoPXNlbGYu
cm9vdF90cmFuc3BvcnQuYmFzZSkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGFzc2VydCBG
YWxzZSwgJ3VuZXhwZWN0ZWQgcmVzcG9uc2UgY29kZSAlcicgJSAocmVzcG9uc2UsKQorCisgICAg
ZGVmIG9wZW5fYnJhbmNoKHNlbGYsIF91bnN1cHBvcnRlZD1GYWxzZSk6CisgICAgICAgIGFzc2Vy
dCBfdW5zdXBwb3J0ZWQgPT0gRmFsc2UsICd1bnN1cHBvcnRlZCBmbGFnIHN1cHBvcnQgbm90IGlt
cGxlbWVudGVkIHlldC4nCisgICAgICAgIHJlZmVyZW5jZV91cmwgPSBzZWxmLmdldF9icmFuY2hf
cmVmZXJlbmNlKCkKKyAgICAgICAgaWYgcmVmZXJlbmNlX3VybCBpcyBOb25lOgorICAgICAgICAg
ICAgIyBicmFuY2ggYXQgdGhpcyBsb2NhdGlvbi4KKyAgICAgICAgICAgIHJldHVybiBSZW1vdGVC
cmFuY2goc2VsZiwgc2VsZi5maW5kX3JlcG9zaXRvcnkoKSkKKyAgICAgICAgZWxzZToKKyAgICAg
ICAgICAgICMgYSBicmFuY2ggcmVmZXJlbmNlLCB1c2UgdGhlIGV4aXN0aW5nIEJyYW5jaFJlZmVy
ZW5jZSBsb2dpYy4KKyAgICAgICAgICAgIGZvcm1hdCA9IEJyYW5jaFJlZmVyZW5jZUZvcm1hdCgp
CisgICAgICAgICAgICByZXR1cm4gZm9ybWF0Lm9wZW4oc2VsZiwgX2ZvdW5kPVRydWUsIGxvY2F0
aW9uPXJlZmVyZW5jZV91cmwpCisgICAgICAgICAgICAgICAgCisgICAgZGVmIG9wZW5fcmVwb3Np
dG9yeShzZWxmKToKKyAgICAgICAgcGF0aCA9IHNlbGYuX3BhdGhfZm9yX3JlbW90ZV9jYWxsKHNl
bGYuX2NsaWVudCkKKyAgICAgICAgcmVzcG9uc2UgPSBzZWxmLl9jbGllbnQuY2FsbCgnQnpyRGly
LmZpbmRfcmVwb3NpdG9yeScsIHBhdGgpCisgICAgICAgIGFzc2VydCByZXNwb25zZVswXSBpbiAo
J29rJywgJ25vcmVwb3NpdG9yeScpLCBcCisgICAgICAgICAgICAndW5leHBlY3RlZCByZXNwb25z
ZSBjb2RlICVzJyAlIChyZXNwb25zZSwpCisgICAgICAgIGlmIHJlc3BvbnNlWzBdID09ICdub3Jl
cG9zaXRvcnknOgorICAgICAgICAgICAgcmFpc2UgZXJyb3JzLk5vUmVwb3NpdG9yeVByZXNlbnQo
c2VsZikKKyAgICAgICAgYXNzZXJ0IGxlbihyZXNwb25zZSkgPT0gNCwgJ2luY29ycmVjdCByZXNw
b25zZSBsZW5ndGggJXMnICUgKHJlc3BvbnNlLCkKKyAgICAgICAgaWYgcmVzcG9uc2VbMV0gPT0g
Jyc6CisgICAgICAgICAgICBmb3JtYXQgPSBSZW1vdGVSZXBvc2l0b3J5Rm9ybWF0KCkKKyAgICAg
ICAgICAgIGZvcm1hdC5yaWNoX3Jvb3RfZGF0YSA9IChyZXNwb25zZVsyXSA9PSAneWVzJykKKyAg
ICAgICAgICAgIGZvcm1hdC5zdXBwb3J0c190cmVlX3JlZmVyZW5jZSA9IChyZXNwb25zZVszXSA9
PSAneWVzJykKKyAgICAgICAgICAgIHJldHVybiBSZW1vdGVSZXBvc2l0b3J5KHNlbGYsIGZvcm1h
dCkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHJhaXNlIGVycm9ycy5Ob1JlcG9zaXRvcnlQ
cmVzZW50KHNlbGYpCisKKyAgICBkZWYgb3Blbl93b3JraW5ndHJlZShzZWxmLCByZWNvbW1lbmRf
dXBncmFkZT1UcnVlKToKKyAgICAgICAgc2VsZi5fZW5zdXJlX3JlYWwoKQorICAgICAgICBpZiBz
ZWxmLl9yZWFsX2J6cmRpci5oYXNfd29ya2luZ3RyZWUoKToKKyAgICAgICAgICAgIHJhaXNlIGVy
cm9ycy5Ob3RMb2NhbFVybChzZWxmLnJvb3RfdHJhbnNwb3J0KQorICAgICAgICBlbHNlOgorICAg
ICAgICAgICAgcmFpc2UgZXJyb3JzLk5vV29ya2luZ1RyZWUoc2VsZi5yb290X3RyYW5zcG9ydC5i
YXNlKQorCisgICAgZGVmIF9wYXRoX2Zvcl9yZW1vdGVfY2FsbChzZWxmLCBjbGllbnQpOgorICAg
ICAgICAiIiJSZXR1cm4gdGhlIHBhdGggdG8gYmUgdXNlZCBmb3IgdGhpcyBienJkaXIgaW4gYSBy
ZW1vdGUgY2FsbC4iIiIKKyAgICAgICAgcmV0dXJuIGNsaWVudC5yZW1vdGVfcGF0aF9mcm9tX3Ry
YW5zcG9ydChzZWxmLnJvb3RfdHJhbnNwb3J0KQorCisgICAgZGVmIGdldF9icmFuY2hfdHJhbnNw
b3J0KHNlbGYsIGJyYW5jaF9mb3JtYXQpOgorICAgICAgICBzZWxmLl9lbnN1cmVfcmVhbCgpCisg
ICAgICAgIHJldHVybiBzZWxmLl9yZWFsX2J6cmRpci5nZXRfYnJhbmNoX3RyYW5zcG9ydChicmFu
Y2hfZm9ybWF0KQorCisgICAgZGVmIGdldF9yZXBvc2l0b3J5X3RyYW5zcG9ydChzZWxmLCByZXBv
c2l0b3J5X2Zvcm1hdCk6CisgICAgICAgIHNlbGYuX2Vuc3VyZV9yZWFsKCkKKyAgICAgICAgcmV0
dXJuIHNlbGYuX3JlYWxfYnpyZGlyLmdldF9yZXBvc2l0b3J5X3RyYW5zcG9ydChyZXBvc2l0b3J5
X2Zvcm1hdCkKKworICAgIGRlZiBnZXRfd29ya2luZ3RyZWVfdHJhbnNwb3J0KHNlbGYsIHdvcmtp
bmd0cmVlX2Zvcm1hdCk6CisgICAgICAgIHNlbGYuX2Vuc3VyZV9yZWFsKCkKKyAgICAgICAgcmV0
dXJuIHNlbGYuX3JlYWxfYnpyZGlyLmdldF93b3JraW5ndHJlZV90cmFuc3BvcnQod29ya2luZ3Ry
ZWVfZm9ybWF0KQorCisgICAgZGVmIGNhbl9jb252ZXJ0X2Zvcm1hdChzZWxmKToKKyAgICAgICAg
IiIiVXBncmFkaW5nIG9mIHJlbW90ZSBienJkaXJzIGlzIG5vdCBzdXBwb3J0ZWQgeWV0LiIiIgor
ICAgICAgICByZXR1cm4gRmFsc2UKKworICAgIGRlZiBuZWVkc19mb3JtYXRfY29udmVyc2lvbihz
ZWxmLCBmb3JtYXQ9Tm9uZSk6CisgICAgICAgICIiIlVwZ3JhZGluZyBvZiByZW1vdGUgYnpyZGly
cyBpcyBub3Qgc3VwcG9ydGVkIHlldC4iIiIKKyAgICAgICAgcmV0dXJuIEZhbHNlCisKKyAgICBk
ZWYgY2xvbmUoc2VsZiwgdXJsLCByZXZpc2lvbl9pZD1Ob25lLCBmb3JjZV9uZXdfcmVwbz1GYWxz
ZSk6CisgICAgICAgIHNlbGYuX2Vuc3VyZV9yZWFsKCkKKyAgICAgICAgcmV0dXJuIHNlbGYuX3Jl
YWxfYnpyZGlyLmNsb25lKHVybCwgcmV2aXNpb25faWQ9cmV2aXNpb25faWQsCisgICAgICAgICAg
ICBmb3JjZV9uZXdfcmVwbz1mb3JjZV9uZXdfcmVwbykKKworCitjbGFzcyBSZW1vdGVSZXBvc2l0
b3J5Rm9ybWF0KHJlcG9zaXRvcnkuUmVwb3NpdG9yeUZvcm1hdCk6CisgICAgIiIiRm9ybWF0IGZv
ciByZXBvc2l0b3JpZXMgYWNjZXNzZWQgb3ZlciBhIF9TbWFydENsaWVudC4KKworICAgIEluc3Rh
bmNlcyBvZiB0aGlzIHJlcG9zaXRvcnkgYXJlIHJlcHJlc2VudGVkIGJ5IFJlbW90ZVJlcG9zaXRv
cnkKKyAgICBpbnN0YW5jZXMuCisKKyAgICBUaGUgUmVtb3RlUmVwb3NpdG9yeUZvcm1hdCBpcyBw
YXJhbWV0ZXJpc2VkIGR1cmluZyBjb25zdHJ1Y3Rpb24KKyAgICB0byByZWZsZWN0IHRoZSBjYXBh
YmlsaXRpZXMgb2YgdGhlIHJlYWwsIHJlbW90ZSBmb3JtYXQuIFNwZWNpZmljYWxseQorICAgIHRo
ZSBhdHRyaWJ1dGVzIHJpY2hfcm9vdF9kYXRhIGFuZCBzdXBwb3J0c190cmVlX3JlZmVyZW5jZSBh
cmUgc2V0CisgICAgb24gYSBwZXIgaW5zdGFuY2UgYmFzaXMsIGFuZCBhcmUgbm90IHNldCAoYW5k
IHNob3VsZCBub3QgYmUpIGF0CisgICAgdGhlIGNsYXNzIGxldmVsLgorICAgICIiIgorCisgICAg
X21hdGNoaW5nYnpyZGlyID0gUmVtb3RlQnpyRGlyRm9ybWF0CisKKyAgICBkZWYgaW5pdGlhbGl6
ZShzZWxmLCBhX2J6cmRpciwgc2hhcmVkPUZhbHNlKToKKyAgICAgICAgYXNzZXJ0IGlzaW5zdGFu
Y2UoYV9ienJkaXIsIFJlbW90ZUJ6ckRpciksIFwKKyAgICAgICAgICAgICclciBpcyBub3QgYSBS
ZW1vdGVCenJEaXInICUgKGFfYnpyZGlyLCkKKyAgICAgICAgcmV0dXJuIGFfYnpyZGlyLmNyZWF0
ZV9yZXBvc2l0b3J5KHNoYXJlZD1zaGFyZWQpCisgICAgCisgICAgZGVmIG9wZW4oc2VsZiwgYV9i
enJkaXIpOgorICAgICAgICBhc3NlcnQgaXNpbnN0YW5jZShhX2J6cmRpciwgUmVtb3RlQnpyRGly
KQorICAgICAgICByZXR1cm4gYV9ienJkaXIub3Blbl9yZXBvc2l0b3J5KCkKKworICAgIGRlZiBn
ZXRfZm9ybWF0X2Rlc2NyaXB0aW9uKHNlbGYpOgorICAgICAgICByZXR1cm4gJ2J6ciByZW1vdGUg
cmVwb3NpdG9yeScKKworICAgIGRlZiBfX2VxX18oc2VsZiwgb3RoZXIpOgorICAgICAgICByZXR1
cm4gc2VsZi5fX2NsYXNzX18gPT0gb3RoZXIuX19jbGFzc19fCisKKyAgICBkZWYgY2hlY2tfY29u
dmVyc2lvbl90YXJnZXQoc2VsZiwgdGFyZ2V0X2Zvcm1hdCk6CisgICAgICAgIGlmIHNlbGYucmlj
aF9yb290X2RhdGEgYW5kIG5vdCB0YXJnZXRfZm9ybWF0LnJpY2hfcm9vdF9kYXRhOgorICAgICAg
ICAgICAgcmFpc2UgZXJyb3JzLkJhZENvbnZlcnNpb25UYXJnZXQoCisgICAgICAgICAgICAgICAg
J0RvZXMgbm90IHN1cHBvcnQgcmljaCByb290IGRhdGEuJywgdGFyZ2V0X2Zvcm1hdCkKKyAgICAg
ICAgaWYgKHNlbGYuc3VwcG9ydHNfdHJlZV9yZWZlcmVuY2UgYW5kCisgICAgICAgICAgICBub3Qg
Z2V0YXR0cih0YXJnZXRfZm9ybWF0LCAnc3VwcG9ydHNfdHJlZV9yZWZlcmVuY2UnLCBGYWxzZSkp
OgorICAgICAgICAgICAgcmFpc2UgZXJyb3JzLkJhZENvbnZlcnNpb25UYXJnZXQoCisgICAgICAg
ICAgICAgICAgJ0RvZXMgbm90IHN1cHBvcnQgbmVzdGVkIHRyZWVzJywgdGFyZ2V0X2Zvcm1hdCkK
KworCitjbGFzcyBSZW1vdGVSZXBvc2l0b3J5KG9iamVjdCk6CisgICAgIiIiUmVwb3NpdG9yeSBh
Y2Nlc3NlZCBvdmVyIHJwYy4KKworICAgIEZvciB0aGUgbW9tZW50IG1vc3Qgb3BlcmF0aW9ucyBh
cmUgcGVyZm9ybWVkIHVzaW5nIGxvY2FsIHRyYW5zcG9ydC1iYWNrZWQKKyAgICBSZXBvc2l0b3J5
IG9iamVjdHMuCisgICAgIiIiCisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgcmVtb3RlX2J6cmRp
ciwgZm9ybWF0LCByZWFsX3JlcG9zaXRvcnk9Tm9uZSwgX2NsaWVudD1Ob25lKToKKyAgICAgICAg
IiIiQ3JlYXRlIGEgUmVtb3RlUmVwb3NpdG9yeSBpbnN0YW5jZS4KKyAgICAgICAgCisgICAgICAg
IDpwYXJhbSByZW1vdGVfYnpyZGlyOiBUaGUgYnpyZGlyIGhvc3RpbmcgdGhpcyByZXBvc2l0b3J5
LgorICAgICAgICA6cGFyYW0gZm9ybWF0OiBUaGUgUmVtb3RlRm9ybWF0IG9iamVjdCB0byB1c2Uu
CisgICAgICAgIDpwYXJhbSByZWFsX3JlcG9zaXRvcnk6IElmIG5vdCBOb25lLCBhIGxvY2FsIGlt
cGxlbWVudGF0aW9uIG9mIHRoZQorICAgICAgICAgICAgcmVwb3NpdG9yeSBsb2dpYyBmb3IgdGhl
IHJlcG9zaXRvcnksIHVzdWFsbHkgYWNjZXNzaW5nIHRoZSBkYXRhCisgICAgICAgICAgICB2aWEg
dGhlIFZGUy4KKyAgICAgICAgOnBhcmFtIF9jbGllbnQ6IFByaXZhdGUgdGVzdGluZyBwYXJhbWV0
ZXIgLSBvdmVycmlkZSB0aGUgc21hcnQgY2xpZW50CisgICAgICAgICAgICB0byBiZSB1c2VkIGJ5
IHRoZSByZXBvc2l0b3J5LgorICAgICAgICAiIiIKKyAgICAgICAgaWYgcmVhbF9yZXBvc2l0b3J5
OgorICAgICAgICAgICAgc2VsZi5fcmVhbF9yZXBvc2l0b3J5ID0gcmVhbF9yZXBvc2l0b3J5Cisg
ICAgICAgIGVsc2U6CisgICAgICAgICAgICBzZWxmLl9yZWFsX3JlcG9zaXRvcnkgPSBOb25lCisg
ICAgICAgIHNlbGYuYnpyZGlyID0gcmVtb3RlX2J6cmRpcgorICAgICAgICBpZiBfY2xpZW50IGlz
IE5vbmU6CisgICAgICAgICAgICBzZWxmLl9jbGllbnQgPSBjbGllbnQuX1NtYXJ0Q2xpZW50KHNl
bGYuYnpyZGlyLl9tZWRpdW0pCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzZWxmLl9jbGll
bnQgPSBfY2xpZW50CisgICAgICAgIHNlbGYuX2Zvcm1hdCA9IGZvcm1hdAorICAgICAgICBzZWxm
Ll9sb2NrX21vZGUgPSBOb25lCisgICAgICAgIHNlbGYuX2xvY2tfdG9rZW4gPSBOb25lCisgICAg
ICAgIHNlbGYuX2xvY2tfY291bnQgPSAwCisgICAgICAgIHNlbGYuX2xlYXZlX2xvY2sgPSBGYWxz
ZQorCisgICAgZGVmIF9lbnN1cmVfcmVhbChzZWxmKToKKyAgICAgICAgIiIiRW5zdXJlIHRoYXQg
dGhlcmUgaXMgYSBfcmVhbF9yZXBvc2l0b3J5IHNldC4KKworICAgICAgICBVc2VkIGJlZm9yZSBj
YWxscyB0byBzZWxmLl9yZWFsX3JlcG9zaXRvcnkuCisgICAgICAgICIiIgorICAgICAgICBpZiBu
b3Qgc2VsZi5fcmVhbF9yZXBvc2l0b3J5OgorICAgICAgICAgICAgc2VsZi5ienJkaXIuX2Vuc3Vy
ZV9yZWFsKCkKKyAgICAgICAgICAgICNzZWxmLl9yZWFsX3JlcG9zaXRvcnkgPSBzZWxmLmJ6cmRp
ci5fcmVhbF9ienJkaXIub3Blbl9yZXBvc2l0b3J5KCkKKyAgICAgICAgICAgIHNlbGYuX3NldF9y
ZWFsX3JlcG9zaXRvcnkoc2VsZi5ienJkaXIuX3JlYWxfYnpyZGlyLm9wZW5fcmVwb3NpdG9yeSgp
KQorCisgICAgZGVmIGdldF9yZXZpc2lvbl9ncmFwaChzZWxmLCByZXZpc2lvbl9pZD1Ob25lKToK
KyAgICAgICAgIiIiU2VlIFJlcG9zaXRvcnkuZ2V0X3JldmlzaW9uX2dyYXBoKCkuIiIiCisgICAg
ICAgIGlmIHJldmlzaW9uX2lkIGlzIE5vbmU6CisgICAgICAgICAgICByZXZpc2lvbl9pZCA9ICcn
CisgICAgICAgIGVsaWYgcmV2aXNpb25faWQgPT0gTlVMTF9SRVZJU0lPTjoKKyAgICAgICAgICAg
IHJldHVybiB7fQorCisgICAgICAgIHBhdGggPSBzZWxmLmJ6cmRpci5fcGF0aF9mb3JfcmVtb3Rl
X2NhbGwoc2VsZi5fY2xpZW50KQorICAgICAgICBhc3NlcnQgdHlwZShyZXZpc2lvbl9pZCkgaXMg
c3RyCisgICAgICAgIHJlc3BvbnNlID0gc2VsZi5fY2xpZW50LmNhbGxfZXhwZWN0aW5nX2JvZHko
CisgICAgICAgICAgICAnUmVwb3NpdG9yeS5nZXRfcmV2aXNpb25fZ3JhcGgnLCBwYXRoLCByZXZp
c2lvbl9pZCkKKyAgICAgICAgaWYgcmVzcG9uc2VbMF1bMF0gbm90IGluIFsnb2snLCAnbm9zdWNo
cmV2aXNpb24nXToKKyAgICAgICAgICAgIHJhaXNlIGVycm9ycy5VbmV4cGVjdGVkU21hcnRTZXJ2
ZXJSZXNwb25zZShyZXNwb25zZVswXSkKKyAgICAgICAgaWYgcmVzcG9uc2VbMF1bMF0gPT0gJ29r
JzoKKyAgICAgICAgICAgIGNvZGVkID0gcmVzcG9uc2VbMV0ucmVhZF9ib2R5X2J5dGVzKCkKKyAg
ICAgICAgICAgIGlmIGNvZGVkID09ICcnOgorICAgICAgICAgICAgICAgICMgbm8gcmV2aXNpb25z
IGluIHRoaXMgcmVwb3NpdG9yeSEKKyAgICAgICAgICAgICAgICByZXR1cm4ge30KKyAgICAgICAg
ICAgIGxpbmVzID0gY29kZWQuc3BsaXQoJ1xuJykKKyAgICAgICAgICAgIHJldmlzaW9uX2dyYXBo
ID0ge30KKyAgICAgICAgICAgIGZvciBsaW5lIGluIGxpbmVzOgorICAgICAgICAgICAgICAgIGQg
PSBsaXN0KGxpbmUuc3BsaXQoKSkKKyAgICAgICAgICAgICAgICByZXZpc2lvbl9ncmFwaFtkWzBd
XSA9IGRbMTpdCisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICByZXR1cm4gcmV2aXNpb25f
Z3JhcGgKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHJlc3BvbnNlX2JvZHkgPSByZXNwb25z
ZVsxXS5yZWFkX2JvZHlfYnl0ZXMoKQorICAgICAgICAgICAgYXNzZXJ0IHJlc3BvbnNlX2JvZHkg
PT0gJycKKyAgICAgICAgICAgIHJhaXNlIE5vU3VjaFJldmlzaW9uKHNlbGYsIHJldmlzaW9uX2lk
KQorCisgICAgZGVmIGhhc19yZXZpc2lvbihzZWxmLCByZXZpc2lvbl9pZCk6CisgICAgICAgICIi
IlNlZSBSZXBvc2l0b3J5Lmhhc19yZXZpc2lvbigpLiIiIgorICAgICAgICBpZiByZXZpc2lvbl9p
ZCBpcyBOb25lOgorICAgICAgICAgICAgIyBUaGUgbnVsbCByZXZpc2lvbiBpcyBhbHdheXMgcHJl
c2VudC4KKyAgICAgICAgICAgIHJldHVybiBUcnVlCisgICAgICAgIHBhdGggPSBzZWxmLmJ6cmRp
ci5fcGF0aF9mb3JfcmVtb3RlX2NhbGwoc2VsZi5fY2xpZW50KQorICAgICAgICByZXNwb25zZSA9
IHNlbGYuX2NsaWVudC5jYWxsKCdSZXBvc2l0b3J5Lmhhc19yZXZpc2lvbicsIHBhdGgsIHJldmlz
aW9uX2lkKQorICAgICAgICBhc3NlcnQgcmVzcG9uc2VbMF0gaW4gKCd5ZXMnLCAnbm8nKSwgJ3Vu
ZXhwZWN0ZWQgcmVzcG9uc2UgY29kZSAlcycgJSAocmVzcG9uc2UsKQorICAgICAgICByZXR1cm4g
cmVzcG9uc2VbMF0gPT0gJ3llcycKKworICAgIGRlZiBnYXRoZXJfc3RhdHMoc2VsZiwgcmV2aWQ9
Tm9uZSwgY29tbWl0dGVycz1Ob25lKToKKyAgICAgICAgIiIiU2VlIFJlcG9zaXRvcnkuZ2F0aGVy
X3N0YXRzKCkuIiIiCisgICAgICAgIHBhdGggPSBzZWxmLmJ6cmRpci5fcGF0aF9mb3JfcmVtb3Rl
X2NhbGwoc2VsZi5fY2xpZW50KQorICAgICAgICBpZiByZXZpZCBpbiAoTm9uZSwgTlVMTF9SRVZJ
U0lPTik6CisgICAgICAgICAgICBmbXRfcmV2aWQgPSAnJworICAgICAgICBlbHNlOgorICAgICAg
ICAgICAgZm10X3JldmlkID0gcmV2aWQKKyAgICAgICAgaWYgY29tbWl0dGVycyBpcyBOb25lIG9y
IG5vdCBjb21taXR0ZXJzOgorICAgICAgICAgICAgZm10X2NvbW1pdHRlcnMgPSAnbm8nCisgICAg
ICAgIGVsc2U6CisgICAgICAgICAgICBmbXRfY29tbWl0dGVycyA9ICd5ZXMnCisgICAgICAgIHJl
c3BvbnNlID0gc2VsZi5fY2xpZW50LmNhbGxfZXhwZWN0aW5nX2JvZHkoCisgICAgICAgICAgICAn
UmVwb3NpdG9yeS5nYXRoZXJfc3RhdHMnLCBwYXRoLCBmbXRfcmV2aWQsIGZtdF9jb21taXR0ZXJz
KQorICAgICAgICBhc3NlcnQgcmVzcG9uc2VbMF1bMF0gPT0gJ29rJywgXAorICAgICAgICAgICAg
J3VuZXhwZWN0ZWQgcmVzcG9uc2UgY29kZSAlcycgJSAocmVzcG9uc2VbMF0sKQorCisgICAgICAg
IGJvZHkgPSByZXNwb25zZVsxXS5yZWFkX2JvZHlfYnl0ZXMoKQorICAgICAgICByZXN1bHQgPSB7
fQorICAgICAgICBmb3IgbGluZSBpbiBib2R5LnNwbGl0KCdcbicpOgorICAgICAgICAgICAgaWYg
bm90IGxpbmU6CisgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgIGtleSwgdmFs
X3RleHQgPSBsaW5lLnNwbGl0KCc6JykKKyAgICAgICAgICAgIGlmIGtleSBpbiAoJ3JldmlzaW9u
cycsICdzaXplJywgJ2NvbW1pdHRlcnMnKToKKyAgICAgICAgICAgICAgICByZXN1bHRba2V5XSA9
IGludCh2YWxfdGV4dCkKKyAgICAgICAgICAgIGVsaWYga2V5IGluICgnZmlyc3RyZXYnLCAnbGF0
ZXN0cmV2Jyk6CisgICAgICAgICAgICAgICAgdmFsdWVzID0gdmFsX3RleHQuc3BsaXQoJyAnKVsx
Ol0KKyAgICAgICAgICAgICAgICByZXN1bHRba2V5XSA9IChmbG9hdCh2YWx1ZXNbMF0pLCBsb25n
KHZhbHVlc1sxXSkpCisKKyAgICAgICAgcmV0dXJuIHJlc3VsdAorCisgICAgZGVmIGdldF9waHlz
aWNhbF9sb2NrX3N0YXR1cyhzZWxmKToKKyAgICAgICAgIiIiU2VlIFJlcG9zaXRvcnkuZ2V0X3Bo
eXNpY2FsX2xvY2tfc3RhdHVzKCkuIiIiCisgICAgICAgIHJldHVybiBGYWxzZQorCisgICAgZGVm
IGlzX3NoYXJlZChzZWxmKToKKyAgICAgICAgIiIiU2VlIFJlcG9zaXRvcnkuaXNfc2hhcmVkKCku
IiIiCisgICAgICAgIHBhdGggPSBzZWxmLmJ6cmRpci5fcGF0aF9mb3JfcmVtb3RlX2NhbGwoc2Vs
Zi5fY2xpZW50KQorICAgICAgICByZXNwb25zZSA9IHNlbGYuX2NsaWVudC5jYWxsKCdSZXBvc2l0
b3J5LmlzX3NoYXJlZCcsIHBhdGgpCisgICAgICAgIGFzc2VydCByZXNwb25zZVswXSBpbiAoJ3ll
cycsICdubycpLCAndW5leHBlY3RlZCByZXNwb25zZSBjb2RlICVzJyAlIChyZXNwb25zZSwpCisg
ICAgICAgIHJldHVybiByZXNwb25zZVswXSA9PSAneWVzJworCisgICAgZGVmIGxvY2tfcmVhZChz
ZWxmKToKKyAgICAgICAgIyB3cm9uZyBldmVudHVhbGx5IC0gd2FudCBhIGxvY2FsIGxvY2sgY2Fj
aGUgY29udGV4dAorICAgICAgICBpZiBub3Qgc2VsZi5fbG9ja19tb2RlOgorICAgICAgICAgICAg
c2VsZi5fbG9ja19tb2RlID0gJ3InCisgICAgICAgICAgICBzZWxmLl9sb2NrX2NvdW50ID0gMQor
ICAgICAgICAgICAgaWYgc2VsZi5fcmVhbF9yZXBvc2l0b3J5IGlzIG5vdCBOb25lOgorICAgICAg
ICAgICAgICAgIHNlbGYuX3JlYWxfcmVwb3NpdG9yeS5sb2NrX3JlYWQoKQorICAgICAgICBlbHNl
OgorICAgICAgICAgICAgc2VsZi5fbG9ja19jb3VudCArPSAxCisKKyAgICBkZWYgX3JlbW90ZV9s
b2NrX3dyaXRlKHNlbGYsIHRva2VuKToKKyAgICAgICAgcGF0aCA9IHNlbGYuYnpyZGlyLl9wYXRo
X2Zvcl9yZW1vdGVfY2FsbChzZWxmLl9jbGllbnQpCisgICAgICAgIGlmIHRva2VuIGlzIE5vbmU6
CisgICAgICAgICAgICB0b2tlbiA9ICcnCisgICAgICAgIHJlc3BvbnNlID0gc2VsZi5fY2xpZW50
LmNhbGwoJ1JlcG9zaXRvcnkubG9ja193cml0ZScsIHBhdGgsIHRva2VuKQorICAgICAgICBpZiBy
ZXNwb25zZVswXSA9PSAnb2snOgorICAgICAgICAgICAgb2ssIHRva2VuID0gcmVzcG9uc2UKKyAg
ICAgICAgICAgIHJldHVybiB0b2tlbgorICAgICAgICBlbGlmIHJlc3BvbnNlWzBdID09ICdMb2Nr
Q29udGVudGlvbic6CisgICAgICAgICAgICByYWlzZSBlcnJvcnMuTG9ja0NvbnRlbnRpb24oJyhy
ZW1vdGUgbG9jayknKQorICAgICAgICBlbGlmIHJlc3BvbnNlWzBdID09ICdVbmxvY2thYmxlVHJh
bnNwb3J0JzoKKyAgICAgICAgICAgIHJhaXNlIGVycm9ycy5VbmxvY2thYmxlVHJhbnNwb3J0KHNl
bGYuYnpyZGlyLnJvb3RfdHJhbnNwb3J0KQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgYXNz
ZXJ0IEZhbHNlLCAndW5leHBlY3RlZCByZXNwb25zZSBjb2RlICVzJyAlIChyZXNwb25zZSwpCisK
KyAgICBkZWYgbG9ja193cml0ZShzZWxmLCB0b2tlbj1Ob25lKToKKyAgICAgICAgaWYgbm90IHNl
bGYuX2xvY2tfbW9kZToKKyAgICAgICAgICAgIHNlbGYuX2xvY2tfdG9rZW4gPSBzZWxmLl9yZW1v
dGVfbG9ja193cml0ZSh0b2tlbikKKyAgICAgICAgICAgIGFzc2VydCBzZWxmLl9sb2NrX3Rva2Vu
LCAnUmVtb3RlIHNlcnZlciBkaWQgbm90IHJldHVybiBhIHRva2VuIScKKyAgICAgICAgICAgIGlm
IHNlbGYuX3JlYWxfcmVwb3NpdG9yeSBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICBzZWxm
Ll9yZWFsX3JlcG9zaXRvcnkubG9ja193cml0ZSh0b2tlbj1zZWxmLl9sb2NrX3Rva2VuKQorICAg
ICAgICAgICAgaWYgdG9rZW4gaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgc2VsZi5fbGVh
dmVfbG9jayA9IFRydWUKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgc2VsZi5f
bGVhdmVfbG9jayA9IEZhbHNlCisgICAgICAgICAgICBzZWxmLl9sb2NrX21vZGUgPSAndycKKyAg
ICAgICAgICAgIHNlbGYuX2xvY2tfY291bnQgPSAxCisgICAgICAgIGVsaWYgc2VsZi5fbG9ja19t
b2RlID09ICdyJzoKKyAgICAgICAgICAgIHJhaXNlIGVycm9ycy5SZWFkT25seUVycm9yKHNlbGYp
CisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzZWxmLl9sb2NrX2NvdW50ICs9IDEKKyAgICAg
ICAgcmV0dXJuIHNlbGYuX2xvY2tfdG9rZW4KKworICAgIGRlZiBsZWF2ZV9sb2NrX2luX3BsYWNl
KHNlbGYpOgorICAgICAgICBzZWxmLl9sZWF2ZV9sb2NrID0gVHJ1ZQorCisgICAgZGVmIGRvbnRf
bGVhdmVfbG9ja19pbl9wbGFjZShzZWxmKToKKyAgICAgICAgc2VsZi5fbGVhdmVfbG9jayA9IEZh
bHNlCisKKyAgICBkZWYgX3NldF9yZWFsX3JlcG9zaXRvcnkoc2VsZiwgcmVwb3NpdG9yeSk6Cisg
ICAgICAgICIiIlNldCB0aGUgX3JlYWxfcmVwb3NpdG9yeSBmb3IgdGhpcyByZXBvc2l0b3J5Lgor
CisgICAgICAgIDpwYXJhbSByZXBvc2l0b3J5OiBUaGUgcmVwb3NpdG9yeSB0byBmYWxsYmFjayB0
byBmb3Igbm9uLWhwc3MKKyAgICAgICAgICAgIGltcGxlbWVudGVkIG9wZXJhdGlvbnMuCisgICAg
ICAgICIiIgorICAgICAgICBhc3NlcnQgbm90IGlzaW5zdGFuY2UocmVwb3NpdG9yeSwgUmVtb3Rl
UmVwb3NpdG9yeSkKKyAgICAgICAgc2VsZi5fcmVhbF9yZXBvc2l0b3J5ID0gcmVwb3NpdG9yeQor
ICAgICAgICBpZiBzZWxmLl9sb2NrX21vZGUgPT0gJ3cnOgorICAgICAgICAgICAgIyBpZiB3ZSBh
cmUgYWxyZWFkeSBsb2NrZWQsIHRoZSByZWFsIHJlcG9zaXRvcnkgbXVzdCBiZSBhYmxlIHRvCisg
ICAgICAgICAgICAjIGFjcXVpcmUgdGhlIGxvY2sgd2l0aCBvdXIgdG9rZW4uCisgICAgICAgICAg
ICBzZWxmLl9yZWFsX3JlcG9zaXRvcnkubG9ja193cml0ZShzZWxmLl9sb2NrX3Rva2VuKQorICAg
ICAgICBlbGlmIHNlbGYuX2xvY2tfbW9kZSA9PSAncic6CisgICAgICAgICAgICBzZWxmLl9yZWFs
X3JlcG9zaXRvcnkubG9ja19yZWFkKCkKKworICAgIGRlZiBfdW5sb2NrKHNlbGYsIHRva2VuKToK
KyAgICAgICAgcGF0aCA9IHNlbGYuYnpyZGlyLl9wYXRoX2Zvcl9yZW1vdGVfY2FsbChzZWxmLl9j
bGllbnQpCisgICAgICAgIHJlc3BvbnNlID0gc2VsZi5fY2xpZW50LmNhbGwoJ1JlcG9zaXRvcnku
dW5sb2NrJywgcGF0aCwgdG9rZW4pCisgICAgICAgIGlmIHJlc3BvbnNlID09ICgnb2snLCk6Cisg
ICAgICAgICAgICByZXR1cm4KKyAgICAgICAgZWxpZiByZXNwb25zZVswXSA9PSAnVG9rZW5NaXNt
YXRjaCc6CisgICAgICAgICAgICByYWlzZSBlcnJvcnMuVG9rZW5NaXNtYXRjaCh0b2tlbiwgJyhy
ZW1vdGUgdG9rZW4pJykKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGFzc2VydCBGYWxzZSwg
J3VuZXhwZWN0ZWQgcmVzcG9uc2UgY29kZSAlcycgJSAocmVzcG9uc2UsKQorCisgICAgZGVmIHVu
bG9jayhzZWxmKToKKyAgICAgICAgc2VsZi5fbG9ja19jb3VudCAtPSAxCisgICAgICAgIGlmIG5v
dCBzZWxmLl9sb2NrX2NvdW50OgorICAgICAgICAgICAgbW9kZSA9IHNlbGYuX2xvY2tfbW9kZQor
ICAgICAgICAgICAgc2VsZi5fbG9ja19tb2RlID0gTm9uZQorICAgICAgICAgICAgaWYgc2VsZi5f
cmVhbF9yZXBvc2l0b3J5IGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgIHNlbGYuX3JlYWxf
cmVwb3NpdG9yeS51bmxvY2soKQorICAgICAgICAgICAgaWYgbW9kZSAhPSAndyc6CisgICAgICAg
ICAgICAgICAgIyBPbmx5IHdyaXRlLWxvY2tlZCByZXBvc2l0b3JpZXMgbmVlZCB0byBtYWtlIGEg
cmVtb3RlIG1ldGhvZAorICAgICAgICAgICAgICAgICMgY2FsbCB0byBwZXJmb20gdGhlIHVubG9j
ay4KKyAgICAgICAgICAgICAgICByZXR1cm4KKyAgICAgICAgICAgIGFzc2VydCBzZWxmLl9sb2Nr
X3Rva2VuLCAnTG9ja2VkLCBidXQgbm8gdG9rZW4hJworICAgICAgICAgICAgdG9rZW4gPSBzZWxm
Ll9sb2NrX3Rva2VuCisgICAgICAgICAgICBzZWxmLl9sb2NrX3Rva2VuID0gTm9uZQorICAgICAg
ICAgICAgaWYgbm90IHNlbGYuX2xlYXZlX2xvY2s6CisgICAgICAgICAgICAgICAgc2VsZi5fdW5s
b2NrKHRva2VuKQorCisgICAgZGVmIGJyZWFrX2xvY2soc2VsZik6CisgICAgICAgICMgc2hvdWxk
IGhhbmQgb2ZmIHRvIHRoZSBuZXR3b3JrCisgICAgICAgIHNlbGYuX2Vuc3VyZV9yZWFsKCkKKyAg
ICAgICAgcmV0dXJuIHNlbGYuX3JlYWxfcmVwb3NpdG9yeS5icmVha19sb2NrKCkKKworICAgIGRl
ZiBfZ2V0X3RhcmJhbGwoc2VsZiwgY29tcHJlc3Npb24pOgorICAgICAgICAiIiJSZXR1cm4gYSBU
ZW1wb3JhcnlGaWxlIGNvbnRhaW5pbmcgYSByZXBvc2l0b3J5IHRhcmJhbGwiIiIKKyAgICAgICAg
aW1wb3J0IHRlbXBmaWxlCisgICAgICAgIHBhdGggPSBzZWxmLmJ6cmRpci5fcGF0aF9mb3JfcmVt
b3RlX2NhbGwoc2VsZi5fY2xpZW50KQorICAgICAgICByZXNwb25zZSwgcHJvdG9jb2wgPSBzZWxm
Ll9jbGllbnQuY2FsbF9leHBlY3RpbmdfYm9keSgKKyAgICAgICAgICAgICdSZXBvc2l0b3J5LnRh
cmJhbGwnLCBwYXRoLCBjb21wcmVzc2lvbikKKyAgICAgICAgYXNzZXJ0IHJlc3BvbnNlWzBdIGlu
ICgnb2snLCAnZmFpbHVyZScpLCBcCisgICAgICAgICAgICAndW5leHBlY3RlZCByZXNwb25zZSBj
b2RlICVzJyAlIChyZXNwb25zZSwpCisgICAgICAgIGlmIHJlc3BvbnNlWzBdID09ICdvayc6Cisg
ICAgICAgICAgICAjIEV4dHJhY3QgdGhlIHRhcmJhbGwgYW5kIHJldHVybiBpdAorICAgICAgICAg
ICAgdCA9IHRlbXBmaWxlLk5hbWVkVGVtcG9yYXJ5RmlsZSgpCisgICAgICAgICAgICAjIFRPRE86
IHJwYyBsYXllciBzaG91bGQgcmVhZCBkaXJlY3RseSBpbnRvIGl0Li4uCisgICAgICAgICAgICB0
LndyaXRlKHByb3RvY29sLnJlYWRfYm9keV9ieXRlcygpKQorICAgICAgICAgICAgdC5zZWVrKDAp
CisgICAgICAgICAgICByZXR1cm4gdAorICAgICAgICBlbHNlOgorICAgICAgICAgICAgcmFpc2Ug
ZXJyb3JzLlNtYXJ0U2VydmVyRXJyb3IoZXJyb3JfY29kZT1yZXNwb25zZSkKKworICAgIGRlZiBz
cHJvdXQoc2VsZiwgdG9fYnpyZGlyLCByZXZpc2lvbl9pZD1Ob25lKToKKyAgICAgICAgIyBUT0RP
OiBPcHRpb24gdG8gY29udHJvbCB3aGF0IGZvcm1hdCBpcyBjcmVhdGVkPworICAgICAgICB0b19y
ZXBvID0gdG9fYnpyZGlyLmNyZWF0ZV9yZXBvc2l0b3J5KCkKKyAgICAgICAgc2VsZi5fY29weV9y
ZXBvc2l0b3J5X3RhcmJhbGwodG9fcmVwbywgcmV2aXNpb25faWQpCisgICAgICAgIHJldHVybiB0
b19yZXBvCisKKyAgICAjIyMgVGhlc2UgbWV0aG9kcyBhcmUganVzdCB0aGluIHNoaW1zIHRvIHRo
ZSBWRlMgb2JqZWN0IGZvciBub3cuCisKKyAgICBkZWYgcmV2aXNpb25fdHJlZShzZWxmLCByZXZp
c2lvbl9pZCk6CisgICAgICAgIHNlbGYuX2Vuc3VyZV9yZWFsKCkKKyAgICAgICAgcmV0dXJuIHNl
bGYuX3JlYWxfcmVwb3NpdG9yeS5yZXZpc2lvbl90cmVlKHJldmlzaW9uX2lkKQorCisgICAgZGVm
IGdldF9jb21taXRfYnVpbGRlcihzZWxmLCBicmFuY2gsIHBhcmVudHMsIGNvbmZpZywgdGltZXN0
YW1wPU5vbmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICB0aW1lem9uZT1Ob25lLCBjb21t
aXR0ZXI9Tm9uZSwgcmV2cHJvcHM9Tm9uZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHJl
dmlzaW9uX2lkPU5vbmUpOgorICAgICAgICAjIEZJWE1FOiBJdCBvdWdodCB0byBiZSBwb3NzaWJs
ZSB0byBjYWxsIHRoaXMgd2l0aG91dCBpbW1lZGlhdGVseQorICAgICAgICAjIHRyaWdnZXJpbmcg
X2Vuc3VyZV9yZWFsLiAgRm9yIG5vdyBpdCdzIHRoZSBlYXNpZXN0IHRoaW5nIHRvIGRvLgorICAg
ICAgICBzZWxmLl9lbnN1cmVfcmVhbCgpCisgICAgICAgIGJ1aWxkZXIgPSBzZWxmLl9yZWFsX3Jl
cG9zaXRvcnkuZ2V0X2NvbW1pdF9idWlsZGVyKGJyYW5jaCwgcGFyZW50cywKKyAgICAgICAgICAg
ICAgICBjb25maWcsIHRpbWVzdGFtcD10aW1lc3RhbXAsIHRpbWV6b25lPXRpbWV6b25lLAorICAg
ICAgICAgICAgICAgIGNvbW1pdHRlcj1jb21taXR0ZXIsIHJldnByb3BzPXJldnByb3BzLCByZXZp
c2lvbl9pZD1yZXZpc2lvbl9pZCkKKyAgICAgICAgIyBNYWtlIHRoZSBidWlsZGVyIHVzZSB0aGlz
IFJlbW90ZVJlcG9zaXRvcnkgcmF0aGVyIHRoYW4gdGhlIHJlYWwgb25lLgorICAgICAgICBidWls
ZGVyLnJlcG9zaXRvcnkgPSBzZWxmCisgICAgICAgIHJldHVybiBidWlsZGVyCisKKyAgICBAbmVl
ZHNfd3JpdGVfbG9jaworICAgIGRlZiBhZGRfaW52ZW50b3J5KHNlbGYsIHJldmlkLCBpbnYsIHBh
cmVudHMpOgorICAgICAgICBzZWxmLl9lbnN1cmVfcmVhbCgpCisgICAgICAgIHJldHVybiBzZWxm
Ll9yZWFsX3JlcG9zaXRvcnkuYWRkX2ludmVudG9yeShyZXZpZCwgaW52LCBwYXJlbnRzKQorCisg
ICAgQG5lZWRzX3dyaXRlX2xvY2sKKyAgICBkZWYgYWRkX3JldmlzaW9uKHNlbGYsIHJldl9pZCwg
cmV2LCBpbnY9Tm9uZSwgY29uZmlnPU5vbmUpOgorICAgICAgICBzZWxmLl9lbnN1cmVfcmVhbCgp
CisgICAgICAgIHJldHVybiBzZWxmLl9yZWFsX3JlcG9zaXRvcnkuYWRkX3JldmlzaW9uKAorICAg
ICAgICAgICAgcmV2X2lkLCByZXYsIGludj1pbnYsIGNvbmZpZz1jb25maWcpCisKKyAgICBAbmVl
ZHNfcmVhZF9sb2NrCisgICAgZGVmIGdldF9pbnZlbnRvcnkoc2VsZiwgcmV2aXNpb25faWQpOgor
ICAgICAgICBzZWxmLl9lbnN1cmVfcmVhbCgpCisgICAgICAgIHJldHVybiBzZWxmLl9yZWFsX3Jl
cG9zaXRvcnkuZ2V0X2ludmVudG9yeShyZXZpc2lvbl9pZCkKKworICAgIEBuZWVkc19yZWFkX2xv
Y2sKKyAgICBkZWYgZ2V0X3JldmlzaW9uKHNlbGYsIHJldmlzaW9uX2lkKToKKyAgICAgICAgc2Vs
Zi5fZW5zdXJlX3JlYWwoKQorICAgICAgICByZXR1cm4gc2VsZi5fcmVhbF9yZXBvc2l0b3J5Lmdl
dF9yZXZpc2lvbihyZXZpc2lvbl9pZCkKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiB3ZWF2ZV9z
dG9yZShzZWxmKToKKyAgICAgICAgc2VsZi5fZW5zdXJlX3JlYWwoKQorICAgICAgICByZXR1cm4g
c2VsZi5fcmVhbF9yZXBvc2l0b3J5LndlYXZlX3N0b3JlCisKKyAgICBkZWYgZ2V0X3RyYW5zYWN0
aW9uKHNlbGYpOgorICAgICAgICBzZWxmLl9lbnN1cmVfcmVhbCgpCisgICAgICAgIHJldHVybiBz
ZWxmLl9yZWFsX3JlcG9zaXRvcnkuZ2V0X3RyYW5zYWN0aW9uKCkKKworICAgIEBuZWVkc19yZWFk
X2xvY2sKKyAgICBkZWYgY2xvbmUoc2VsZiwgYV9ienJkaXIsIHJldmlzaW9uX2lkPU5vbmUpOgor
ICAgICAgICBzZWxmLl9lbnN1cmVfcmVhbCgpCisgICAgICAgIHJldHVybiBzZWxmLl9yZWFsX3Jl
cG9zaXRvcnkuY2xvbmUoYV9ienJkaXIsIHJldmlzaW9uX2lkPXJldmlzaW9uX2lkKQorCisgICAg
ZGVmIG1ha2Vfd29ya2luZ190cmVlcyhzZWxmKToKKyAgICAgICAgIiIiUmVtb3RlUmVwb3NpdG9y
aWVzIG5ldmVyIGNyZWF0ZSB3b3JraW5nIHRyZWVzIGJ5IGRlZmF1bHQuIiIiCisgICAgICAgIHJl
dHVybiBGYWxzZQorCisgICAgZGVmIGZldGNoKHNlbGYsIHNvdXJjZSwgcmV2aXNpb25faWQ9Tm9u
ZSwgcGI9Tm9uZSk6CisgICAgICAgIHNlbGYuX2Vuc3VyZV9yZWFsKCkKKyAgICAgICAgcmV0dXJu
IHNlbGYuX3JlYWxfcmVwb3NpdG9yeS5mZXRjaCgKKyAgICAgICAgICAgIHNvdXJjZSwgcmV2aXNp
b25faWQ9cmV2aXNpb25faWQsIHBiPXBiKQorCisgICAgQHByb3BlcnR5CisgICAgZGVmIGNvbnRy
b2xfd2VhdmVzKHNlbGYpOgorICAgICAgICBzZWxmLl9lbnN1cmVfcmVhbCgpCisgICAgICAgIHJl
dHVybiBzZWxmLl9yZWFsX3JlcG9zaXRvcnkuY29udHJvbF93ZWF2ZXMKKworICAgIEBuZWVkc19y
ZWFkX2xvY2sKKyAgICBkZWYgZ2V0X2FuY2VzdHJ5KHNlbGYsIHJldmlzaW9uX2lkKToKKyAgICAg
ICAgc2VsZi5fZW5zdXJlX3JlYWwoKQorICAgICAgICByZXR1cm4gc2VsZi5fcmVhbF9yZXBvc2l0
b3J5LmdldF9hbmNlc3RyeShyZXZpc2lvbl9pZCkKKworICAgIEBuZWVkc19yZWFkX2xvY2sKKyAg
ICBkZWYgZ2V0X2ludmVudG9yeV93ZWF2ZShzZWxmKToKKyAgICAgICAgc2VsZi5fZW5zdXJlX3Jl
YWwoKQorICAgICAgICByZXR1cm4gc2VsZi5fcmVhbF9yZXBvc2l0b3J5LmdldF9pbnZlbnRvcnlf
d2VhdmUoKQorCisgICAgZGVmIGZpbGVpZHNfYWx0ZXJlZF9ieV9yZXZpc2lvbl9pZHMoc2VsZiwg
cmV2aXNpb25faWRzKToKKyAgICAgICAgc2VsZi5fZW5zdXJlX3JlYWwoKQorICAgICAgICByZXR1
cm4gc2VsZi5fcmVhbF9yZXBvc2l0b3J5LmZpbGVpZHNfYWx0ZXJlZF9ieV9yZXZpc2lvbl9pZHMo
cmV2aXNpb25faWRzKQorCisgICAgQG5lZWRzX3JlYWRfbG9jaworICAgIGRlZiBnZXRfc2lnbmF0
dXJlX3RleHQoc2VsZiwgcmV2aXNpb25faWQpOgorICAgICAgICBzZWxmLl9lbnN1cmVfcmVhbCgp
CisgICAgICAgIHJldHVybiBzZWxmLl9yZWFsX3JlcG9zaXRvcnkuZ2V0X3NpZ25hdHVyZV90ZXh0
KHJldmlzaW9uX2lkKQorCisgICAgQG5lZWRzX3JlYWRfbG9jaworICAgIGRlZiBnZXRfcmV2aXNp
b25fZ3JhcGhfd2l0aF9naG9zdHMoc2VsZiwgcmV2aXNpb25faWRzPU5vbmUpOgorICAgICAgICBz
ZWxmLl9lbnN1cmVfcmVhbCgpCisgICAgICAgIHJldHVybiBzZWxmLl9yZWFsX3JlcG9zaXRvcnku
Z2V0X3JldmlzaW9uX2dyYXBoX3dpdGhfZ2hvc3RzKAorICAgICAgICAgICAgcmV2aXNpb25faWRz
PXJldmlzaW9uX2lkcykKKworICAgIEBuZWVkc19yZWFkX2xvY2sKKyAgICBkZWYgZ2V0X2ludmVu
dG9yeV94bWwoc2VsZiwgcmV2aXNpb25faWQpOgorICAgICAgICBzZWxmLl9lbnN1cmVfcmVhbCgp
CisgICAgICAgIHJldHVybiBzZWxmLl9yZWFsX3JlcG9zaXRvcnkuZ2V0X2ludmVudG9yeV94bWwo
cmV2aXNpb25faWQpCisKKyAgICBkZWYgZGVzZXJpYWxpc2VfaW52ZW50b3J5KHNlbGYsIHJldmlz
aW9uX2lkLCB4bWwpOgorICAgICAgICBzZWxmLl9lbnN1cmVfcmVhbCgpCisgICAgICAgIHJldHVy
biBzZWxmLl9yZWFsX3JlcG9zaXRvcnkuZGVzZXJpYWxpc2VfaW52ZW50b3J5KHJldmlzaW9uX2lk
LCB4bWwpCisKKyAgICBkZWYgcmVjb25jaWxlKHNlbGYsIG90aGVyPU5vbmUsIHRob3JvdWdoPUZh
bHNlKToKKyAgICAgICAgc2VsZi5fZW5zdXJlX3JlYWwoKQorICAgICAgICByZXR1cm4gc2VsZi5f
cmVhbF9yZXBvc2l0b3J5LnJlY29uY2lsZShvdGhlcj1vdGhlciwgdGhvcm91Z2g9dGhvcm91Z2gp
CisgICAgICAgIAorICAgIGRlZiBhbGxfcmV2aXNpb25faWRzKHNlbGYpOgorICAgICAgICBzZWxm
Ll9lbnN1cmVfcmVhbCgpCisgICAgICAgIHJldHVybiBzZWxmLl9yZWFsX3JlcG9zaXRvcnkuYWxs
X3JldmlzaW9uX2lkcygpCisgICAgCisgICAgQG5lZWRzX3JlYWRfbG9jaworICAgIGRlZiBnZXRf
ZGVsdGFzX2Zvcl9yZXZpc2lvbnMoc2VsZiwgcmV2aXNpb25zKToKKyAgICAgICAgc2VsZi5fZW5z
dXJlX3JlYWwoKQorICAgICAgICByZXR1cm4gc2VsZi5fcmVhbF9yZXBvc2l0b3J5LmdldF9kZWx0
YXNfZm9yX3JldmlzaW9ucyhyZXZpc2lvbnMpCisKKyAgICBAbmVlZHNfcmVhZF9sb2NrCisgICAg
ZGVmIGdldF9yZXZpc2lvbl9kZWx0YShzZWxmLCByZXZpc2lvbl9pZCk6CisgICAgICAgIHNlbGYu
X2Vuc3VyZV9yZWFsKCkKKyAgICAgICAgcmV0dXJuIHNlbGYuX3JlYWxfcmVwb3NpdG9yeS5nZXRf
cmV2aXNpb25fZGVsdGEocmV2aXNpb25faWQpCisKKyAgICBAbmVlZHNfcmVhZF9sb2NrCisgICAg
ZGVmIHJldmlzaW9uX3RyZWVzKHNlbGYsIHJldmlzaW9uX2lkcyk6CisgICAgICAgIHNlbGYuX2Vu
c3VyZV9yZWFsKCkKKyAgICAgICAgcmV0dXJuIHNlbGYuX3JlYWxfcmVwb3NpdG9yeS5yZXZpc2lv
bl90cmVlcyhyZXZpc2lvbl9pZHMpCisKKyAgICBAbmVlZHNfcmVhZF9sb2NrCisgICAgZGVmIGdl
dF9yZXZpc2lvbl9yZWNvbmNpbGUoc2VsZiwgcmV2aXNpb25faWQpOgorICAgICAgICBzZWxmLl9l
bnN1cmVfcmVhbCgpCisgICAgICAgIHJldHVybiBzZWxmLl9yZWFsX3JlcG9zaXRvcnkuZ2V0X3Jl
dmlzaW9uX3JlY29uY2lsZShyZXZpc2lvbl9pZCkKKworICAgIEBuZWVkc19yZWFkX2xvY2sKKyAg
ICBkZWYgY2hlY2soc2VsZiwgcmV2aXNpb25faWRzKToKKyAgICAgICAgc2VsZi5fZW5zdXJlX3Jl
YWwoKQorICAgICAgICByZXR1cm4gc2VsZi5fcmVhbF9yZXBvc2l0b3J5LmNoZWNrKHJldmlzaW9u
X2lkcykKKworICAgIGRlZiBjb3B5X2NvbnRlbnRfaW50byhzZWxmLCBkZXN0aW5hdGlvbiwgcmV2
aXNpb25faWQ9Tm9uZSk6CisgICAgICAgIHNlbGYuX2Vuc3VyZV9yZWFsKCkKKyAgICAgICAgcmV0
dXJuIHNlbGYuX3JlYWxfcmVwb3NpdG9yeS5jb3B5X2NvbnRlbnRfaW50bygKKyAgICAgICAgICAg
IGRlc3RpbmF0aW9uLCByZXZpc2lvbl9pZD1yZXZpc2lvbl9pZCkKKworICAgIGRlZiBfY29weV9y
ZXBvc2l0b3J5X3RhcmJhbGwoc2VsZiwgZGVzdGluYXRpb24sIHJldmlzaW9uX2lkPU5vbmUpOgor
ICAgICAgICAjIGdldCBhIHRhcmJhbGwgb2YgdGhlIHJlbW90ZSByZXBvc2l0b3J5LCBhbmQgY29w
eSBmcm9tIHRoYXQgaW50byB0aGUKKyAgICAgICAgIyBkZXN0aW5hdGlvbgorICAgICAgICBmcm9t
IGJ6cmxpYiBpbXBvcnQgb3N1dGlscworICAgICAgICBpbXBvcnQgdGFyZmlsZQorICAgICAgICBp
bXBvcnQgdGVtcGZpbGUKKyAgICAgICAgZnJvbSBTdHJpbmdJTyBpbXBvcnQgU3RyaW5nSU8KKyAg
ICAgICAgIyBUT0RPOiBNYXliZSBhIHByb2dyZXNzIGJhciB3aGlsZSBzdHJlYW1pbmcgdGhlIHRh
cmJhbGw/CisgICAgICAgIG5vdGUoIkNvcHlpbmcgcmVwb3NpdG9yeSBjb250ZW50IGFzIHRhcmJh
bGwuLi4iKQorICAgICAgICB0YXJfZmlsZSA9IHNlbGYuX2dldF90YXJiYWxsKCdiejInKQorICAg
ICAgICB0cnk6CisgICAgICAgICAgICB0YXIgPSB0YXJmaWxlLm9wZW4oJ3JlcG9zaXRvcnknLCBm
aWxlb2JqPXRhcl9maWxlLAorICAgICAgICAgICAgICAgIG1vZGU9J3J8YnoyJykKKyAgICAgICAg
ICAgIHRtcGRpciA9IHRlbXBmaWxlLm1rZHRlbXAoKQorICAgICAgICAgICAgdHJ5OgorICAgICAg
ICAgICAgICAgIF9leHRyYWN0X3Rhcih0YXIsIHRtcGRpcikKKyAgICAgICAgICAgICAgICB0bXBf
YnpyZGlyID0gQnpyRGlyLm9wZW4odG1wZGlyKQorICAgICAgICAgICAgICAgIHRtcF9yZXBvID0g
dG1wX2J6cmRpci5vcGVuX3JlcG9zaXRvcnkoKQorICAgICAgICAgICAgICAgIHRtcF9yZXBvLmNv
cHlfY29udGVudF9pbnRvKGRlc3RpbmF0aW9uLCByZXZpc2lvbl9pZCkKKyAgICAgICAgICAgIGZp
bmFsbHk6CisgICAgICAgICAgICAgICAgb3N1dGlscy5ybXRyZWUodG1wZGlyKQorICAgICAgICBm
aW5hbGx5OgorICAgICAgICAgICAgdGFyX2ZpbGUuY2xvc2UoKQorICAgICAgICAjIFRPRE86IGlm
IHRoZSBzZXJ2ZXIgZG9lc24ndCBzdXBwb3J0IHRoaXMgb3BlcmF0aW9uLCBtYXliZSBkbyBpdCB0
aGUKKyAgICAgICAgIyBzbG93IHdheSB1c2luZyB0aGUgX3JlYWxfcmVwb3NpdG9yeT8KKyAgICAg
ICAgIworICAgICAgICAjIFRPRE86IFN1Z2dlc3Rpb24gZnJvbSBqb2huOiB1c2luZyBleHRlcm5h
bCB0YXIgaXMgbXVjaCBmYXN0ZXIgdGhhbgorICAgICAgICAjIHB5dGhvbidzIHRhcmZpbGUgbGli
cmFyeSwgYnV0IGl0IG1heSBub3Qgd29yayBvbiB3aW5kb3dzLgorCisgICAgZGVmIHNldF9tYWtl
X3dvcmtpbmdfdHJlZXMoc2VsZiwgbmV3X3ZhbHVlKToKKyAgICAgICAgcmFpc2UgTm90SW1wbGVt
ZW50ZWRFcnJvcihzZWxmLnNldF9tYWtlX3dvcmtpbmdfdHJlZXMpCisKKyAgICBAbmVlZHNfd3Jp
dGVfbG9jaworICAgIGRlZiBzaWduX3JldmlzaW9uKHNlbGYsIHJldmlzaW9uX2lkLCBncGdfc3Ry
YXRlZ3kpOgorICAgICAgICBzZWxmLl9lbnN1cmVfcmVhbCgpCisgICAgICAgIHJldHVybiBzZWxm
Ll9yZWFsX3JlcG9zaXRvcnkuc2lnbl9yZXZpc2lvbihyZXZpc2lvbl9pZCwgZ3BnX3N0cmF0ZWd5
KQorCisgICAgQG5lZWRzX3JlYWRfbG9jaworICAgIGRlZiBnZXRfcmV2aXNpb25zKHNlbGYsIHJl
dmlzaW9uX2lkcyk6CisgICAgICAgIHNlbGYuX2Vuc3VyZV9yZWFsKCkKKyAgICAgICAgcmV0dXJu
IHNlbGYuX3JlYWxfcmVwb3NpdG9yeS5nZXRfcmV2aXNpb25zKHJldmlzaW9uX2lkcykKKworICAg
IGRlZiBzdXBwb3J0c19yaWNoX3Jvb3Qoc2VsZik6CisgICAgICAgIHNlbGYuX2Vuc3VyZV9yZWFs
KCkKKyAgICAgICAgcmV0dXJuIHNlbGYuX3JlYWxfcmVwb3NpdG9yeS5zdXBwb3J0c19yaWNoX3Jv
b3QoKQorCisgICAgZGVmIGl0ZXJfcmV2ZXJzZV9yZXZpc2lvbl9oaXN0b3J5KHNlbGYsIHJldmlz
aW9uX2lkKToKKyAgICAgICAgc2VsZi5fZW5zdXJlX3JlYWwoKQorICAgICAgICByZXR1cm4gc2Vs
Zi5fcmVhbF9yZXBvc2l0b3J5Lml0ZXJfcmV2ZXJzZV9yZXZpc2lvbl9oaXN0b3J5KHJldmlzaW9u
X2lkKQorCisgICAgQHByb3BlcnR5CisgICAgZGVmIF9zZXJpYWxpemVyKHNlbGYpOgorICAgICAg
ICBzZWxmLl9lbnN1cmVfcmVhbCgpCisgICAgICAgIHJldHVybiBzZWxmLl9yZWFsX3JlcG9zaXRv
cnkuX3NlcmlhbGl6ZXIKKworICAgIGRlZiBzdG9yZV9yZXZpc2lvbl9zaWduYXR1cmUoc2VsZiwg
Z3BnX3N0cmF0ZWd5LCBwbGFpbnRleHQsIHJldmlzaW9uX2lkKToKKyAgICAgICAgc2VsZi5fZW5z
dXJlX3JlYWwoKQorICAgICAgICByZXR1cm4gc2VsZi5fcmVhbF9yZXBvc2l0b3J5LnN0b3JlX3Jl
dmlzaW9uX3NpZ25hdHVyZSgKKyAgICAgICAgICAgIGdwZ19zdHJhdGVneSwgcGxhaW50ZXh0LCBy
ZXZpc2lvbl9pZCkKKworICAgIGRlZiBoYXNfc2lnbmF0dXJlX2Zvcl9yZXZpc2lvbl9pZChzZWxm
LCByZXZpc2lvbl9pZCk6CisgICAgICAgIHNlbGYuX2Vuc3VyZV9yZWFsKCkKKyAgICAgICAgcmV0
dXJuIHNlbGYuX3JlYWxfcmVwb3NpdG9yeS5oYXNfc2lnbmF0dXJlX2Zvcl9yZXZpc2lvbl9pZChy
ZXZpc2lvbl9pZCkKKworCitjbGFzcyBSZW1vdGVCcmFuY2hMb2NrYWJsZUZpbGVzKExvY2thYmxl
RmlsZXMpOgorICAgICIiIkEgJ0xvY2thYmxlRmlsZXMnIGltcGxlbWVudGF0aW9uIHRoYXQgdGFs
a3MgdG8gYSBzbWFydCBzZXJ2ZXIuCisgICAgCisgICAgVGhpcyBpcyBub3QgYSBwdWJsaWMgaW50
ZXJmYWNlIGNsYXNzLgorICAgICIiIgorCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGJ6cmRpciwg
X2NsaWVudCk6CisgICAgICAgIHNlbGYuYnpyZGlyID0gYnpyZGlyCisgICAgICAgIHNlbGYuX2Ns
aWVudCA9IF9jbGllbnQKKyAgICAgICAgc2VsZi5fbmVlZF9maW5kX21vZGVzID0gVHJ1ZQorICAg
ICAgICBMb2NrYWJsZUZpbGVzLl9faW5pdF9fKAorICAgICAgICAgICAgc2VsZiwgYnpyZGlyLmdl
dF9icmFuY2hfdHJhbnNwb3J0KE5vbmUpLAorICAgICAgICAgICAgJ2xvY2snLCBsb2NrZGlyLkxv
Y2tEaXIpCisKKyAgICBkZWYgX2ZpbmRfbW9kZXMoc2VsZik6CisgICAgICAgICMgUmVtb3RlQnJh
bmNoZXMgZG9uJ3QgbGV0IHRoZSBjbGllbnQgc2V0IHRoZSBtb2RlIG9mIGNvbnRyb2wgZmlsZXMu
CisgICAgICAgIHNlbGYuX2Rpcl9tb2RlID0gTm9uZQorICAgICAgICBzZWxmLl9maWxlX21vZGUg
PSBOb25lCisKKyAgICBkZWYgZ2V0KHNlbGYsIHBhdGgpOgorICAgICAgICAiIiInZ2V0JyBhIHJl
bW90ZSBwYXRoIGFzIHBlciB0aGUgTG9ja2FibGVGaWxlcyBpbnRlcmZhY2UuCisKKyAgICAgICAg
OnBhcmFtIHBhdGg6IHRoZSBmaWxlIHRvICdnZXQnLiBJZiB0aGlzIGlzICdicmFuY2guY29uZics
IHdlIGRvIG5vdAorICAgICAgICAgICAgIGp1c3QgcmV0cmlldmUgYSBmaWxlLCBpbnN0ZWFkIHdl
IGFzayB0aGUgc21hcnQgc2VydmVyIHRvIGdlbmVyYXRlCisgICAgICAgICAgICAgYSBjb25maWd1
cmF0aW9uIGZvciB1cyAtIHdoaWNoIGlzIHJldHJpZXZlZCBhcyBhbiBJTkkgZmlsZS4KKyAgICAg
ICAgIiIiCisgICAgICAgIGlmIHBhdGggPT0gJ2JyYW5jaC5jb25mJzoKKyAgICAgICAgICAgIHBh
dGggPSBzZWxmLmJ6cmRpci5fcGF0aF9mb3JfcmVtb3RlX2NhbGwoc2VsZi5fY2xpZW50KQorICAg
ICAgICAgICAgcmVzcG9uc2UgPSBzZWxmLl9jbGllbnQuY2FsbF9leHBlY3RpbmdfYm9keSgKKyAg
ICAgICAgICAgICAgICAnQnJhbmNoLmdldF9jb25maWdfZmlsZScsIHBhdGgpCisgICAgICAgICAg
ICBhc3NlcnQgcmVzcG9uc2VbMF1bMF0gPT0gJ29rJywgXAorICAgICAgICAgICAgICAgICd1bmV4
cGVjdGVkIHJlc3BvbnNlIGNvZGUgJXMnICUgKHJlc3BvbnNlWzBdLCkKKyAgICAgICAgICAgIHJl
dHVybiBTdHJpbmdJTyhyZXNwb25zZVsxXS5yZWFkX2JvZHlfYnl0ZXMoKSkKKyAgICAgICAgZWxz
ZToKKyAgICAgICAgICAgICMgVkZTIGZhbGxiYWNrLgorICAgICAgICAgICAgcmV0dXJuIExvY2th
YmxlRmlsZXMuZ2V0KHNlbGYsIHBhdGgpCisKKworY2xhc3MgUmVtb3RlQnJhbmNoRm9ybWF0KGJy
YW5jaC5CcmFuY2hGb3JtYXQpOgorCisgICAgZGVmIF9fZXFfXyhzZWxmLCBvdGhlcik6CisgICAg
ICAgIHJldHVybiAoaXNpbnN0YW5jZShvdGhlciwgUmVtb3RlQnJhbmNoRm9ybWF0KSBhbmQgCisg
ICAgICAgICAgICBzZWxmLl9fZGljdF9fID09IG90aGVyLl9fZGljdF9fKQorCisgICAgZGVmIGdl
dF9mb3JtYXRfZGVzY3JpcHRpb24oc2VsZik6CisgICAgICAgIHJldHVybiAnUmVtb3RlIEJaUiBC
cmFuY2gnCisKKyAgICBkZWYgZ2V0X2Zvcm1hdF9zdHJpbmcoc2VsZik6CisgICAgICAgIHJldHVy
biAnUmVtb3RlIEJaUiBCcmFuY2gnCisKKyAgICBkZWYgb3BlbihzZWxmLCBhX2J6cmRpcik6Cisg
ICAgICAgIGFzc2VydCBpc2luc3RhbmNlKGFfYnpyZGlyLCBSZW1vdGVCenJEaXIpCisgICAgICAg
IHJldHVybiBhX2J6cmRpci5vcGVuX2JyYW5jaCgpCisKKyAgICBkZWYgaW5pdGlhbGl6ZShzZWxm
LCBhX2J6cmRpcik6CisgICAgICAgIGFzc2VydCBpc2luc3RhbmNlKGFfYnpyZGlyLCBSZW1vdGVC
enJEaXIpCisgICAgICAgIHJldHVybiBhX2J6cmRpci5jcmVhdGVfYnJhbmNoKCkKKworCitjbGFz
cyBSZW1vdGVCcmFuY2goYnJhbmNoLkJyYW5jaCk6CisgICAgIiIiQnJhbmNoIHN0b3JlZCBvbiBh
IHNlcnZlciBhY2Nlc3NlZCBieSBIUFNTIFJQQy4KKworICAgIEF0IHRoZSBtb21lbnQgbW9zdCBv
cGVyYXRpb25zIGFyZSBtYXBwZWQgZG93biB0byBzaW1wbGUgZmlsZSBvcGVyYXRpb25zLgorICAg
ICIiIgorCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIHJlbW90ZV9ienJkaXIsIHJlbW90ZV9yZXBv
c2l0b3J5LCByZWFsX2JyYW5jaD1Ob25lLAorICAgICAgICBfY2xpZW50PU5vbmUpOgorICAgICAg
ICAiIiJDcmVhdGUgYSBSZW1vdGVCcmFuY2ggaW5zdGFuY2UuCisKKyAgICAgICAgOnBhcmFtIHJl
YWxfYnJhbmNoOiBBbiBvcHRpb25hbCBsb2NhbCBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgYnJhbmNo
CisgICAgICAgICAgICBmb3JtYXQsIHVzdWFsbHkgYWNjZXNzaW5nIHRoZSBkYXRhIHZpYSB0aGUg
VkZTLgorICAgICAgICA6cGFyYW0gX2NsaWVudDogUHJpdmF0ZSBwYXJhbWV0ZXIgZm9yIHRlc3Rp
bmcuCisgICAgICAgICIiIgorICAgICAgICAjIFdlIGludGVudGlvbmFsbHkgZG9uJ3QgY2FsbCB0
aGUgcGFyZW50IGNsYXNzJ3MgX19pbml0X18sIGJlY2F1c2UgaXQKKyAgICAgICAgIyB3aWxsIHRy
eSB0byBhc3NpZ24gdG8gc2VsZi50YWdzLCB3aGljaCBpcyBhIHByb3BlcnR5IGluIHRoaXMgc3Vi
Y2xhc3MuCisgICAgICAgICMgQW5kIHRoZSBwYXJlbnQncyBfX2luaXRfXyBkb2Vzbid0IGRvIG11
Y2ggYW55d2F5LgorICAgICAgICBzZWxmLl9yZXZpc2lvbl9oaXN0b3J5X2NhY2hlID0gTm9uZQor
ICAgICAgICBzZWxmLmJ6cmRpciA9IHJlbW90ZV9ienJkaXIKKyAgICAgICAgaWYgX2NsaWVudCBp
cyBub3QgTm9uZToKKyAgICAgICAgICAgIHNlbGYuX2NsaWVudCA9IF9jbGllbnQKKyAgICAgICAg
ZWxzZToKKyAgICAgICAgICAgIHNlbGYuX2NsaWVudCA9IGNsaWVudC5fU21hcnRDbGllbnQoc2Vs
Zi5ienJkaXIuX21lZGl1bSkKKyAgICAgICAgc2VsZi5yZXBvc2l0b3J5ID0gcmVtb3RlX3JlcG9z
aXRvcnkKKyAgICAgICAgaWYgcmVhbF9icmFuY2ggaXMgbm90IE5vbmU6CisgICAgICAgICAgICBz
ZWxmLl9yZWFsX2JyYW5jaCA9IHJlYWxfYnJhbmNoCisgICAgICAgICAgICAjIEdpdmUgdGhlIHJl
bW90ZSByZXBvc2l0b3J5IHRoZSBtYXRjaGluZyByZWFsIHJlcG8uCisgICAgICAgICAgICByZWFs
X3JlcG8gPSBzZWxmLl9yZWFsX2JyYW5jaC5yZXBvc2l0b3J5CisgICAgICAgICAgICBpZiBpc2lu
c3RhbmNlKHJlYWxfcmVwbywgUmVtb3RlUmVwb3NpdG9yeSk6CisgICAgICAgICAgICAgICAgcmVh
bF9yZXBvLl9lbnN1cmVfcmVhbCgpCisgICAgICAgICAgICAgICAgcmVhbF9yZXBvID0gcmVhbF9y
ZXBvLl9yZWFsX3JlcG9zaXRvcnkKKyAgICAgICAgICAgIHNlbGYucmVwb3NpdG9yeS5fc2V0X3Jl
YWxfcmVwb3NpdG9yeShyZWFsX3JlcG8pCisgICAgICAgICAgICAjIEdpdmUgdGhlIGJyYW5jaCB0
aGUgcmVtb3RlIHJlcG9zaXRvcnkgdG8gbGV0IGZhc3QtcGF0aGluZyBoYXBwZW4uCisgICAgICAg
ICAgICBzZWxmLl9yZWFsX2JyYW5jaC5yZXBvc2l0b3J5ID0gc2VsZi5yZXBvc2l0b3J5CisgICAg
ICAgIGVsc2U6CisgICAgICAgICAgICBzZWxmLl9yZWFsX2JyYW5jaCA9IE5vbmUKKyAgICAgICAg
IyBGaWxsIG91dCBleHBlY3RlZCBhdHRyaWJ1dGVzIG9mIGJyYW5jaCBmb3IgYnpybGliIGFwaSB1
c2Vycy4KKyAgICAgICAgc2VsZi5fZm9ybWF0ID0gUmVtb3RlQnJhbmNoRm9ybWF0KCkKKyAgICAg
ICAgc2VsZi5iYXNlID0gc2VsZi5ienJkaXIucm9vdF90cmFuc3BvcnQuYmFzZQorICAgICAgICBz
ZWxmLl9jb250cm9sX2ZpbGVzID0gTm9uZQorICAgICAgICBzZWxmLl9sb2NrX21vZGUgPSBOb25l
CisgICAgICAgIHNlbGYuX2xvY2tfdG9rZW4gPSBOb25lCisgICAgICAgIHNlbGYuX2xvY2tfY291
bnQgPSAwCisgICAgICAgIHNlbGYuX2xlYXZlX2xvY2sgPSBGYWxzZQorCisgICAgZGVmIF9fc3Ry
X18oc2VsZik6CisgICAgICAgIHJldHVybiAiJXMoJXMpIiAlIChzZWxmLl9fY2xhc3NfXy5fX25h
bWVfXywgc2VsZi5iYXNlKQorCisgICAgX19yZXByX18gPSBfX3N0cl9fCisKKyAgICBkZWYgX2Vu
c3VyZV9yZWFsKHNlbGYpOgorICAgICAgICAiIiJFbnN1cmUgdGhhdCB0aGVyZSBpcyBhIF9yZWFs
X2JyYW5jaCBzZXQuCisKKyAgICAgICAgVXNlZCBiZWZvcmUgY2FsbHMgdG8gc2VsZi5fcmVhbF9i
cmFuY2guCisgICAgICAgICIiIgorICAgICAgICBpZiBub3Qgc2VsZi5fcmVhbF9icmFuY2g6Cisg
ICAgICAgICAgICBhc3NlcnQgdmZzLnZmc19lbmFibGVkKCkKKyAgICAgICAgICAgIHNlbGYuYnpy
ZGlyLl9lbnN1cmVfcmVhbCgpCisgICAgICAgICAgICBzZWxmLl9yZWFsX2JyYW5jaCA9IHNlbGYu
YnpyZGlyLl9yZWFsX2J6cmRpci5vcGVuX2JyYW5jaCgpCisgICAgICAgICAgICAjIEdpdmUgdGhl
IHJlbW90ZSByZXBvc2l0b3J5IHRoZSBtYXRjaGluZyByZWFsIHJlcG8uCisgICAgICAgICAgICBy
ZWFsX3JlcG8gPSBzZWxmLl9yZWFsX2JyYW5jaC5yZXBvc2l0b3J5CisgICAgICAgICAgICBpZiBp
c2luc3RhbmNlKHJlYWxfcmVwbywgUmVtb3RlUmVwb3NpdG9yeSk6CisgICAgICAgICAgICAgICAg
cmVhbF9yZXBvLl9lbnN1cmVfcmVhbCgpCisgICAgICAgICAgICAgICAgcmVhbF9yZXBvID0gcmVh
bF9yZXBvLl9yZWFsX3JlcG9zaXRvcnkKKyAgICAgICAgICAgIHNlbGYucmVwb3NpdG9yeS5fc2V0
X3JlYWxfcmVwb3NpdG9yeShyZWFsX3JlcG8pCisgICAgICAgICAgICAjIEdpdmUgdGhlIGJyYW5j
aCB0aGUgcmVtb3RlIHJlcG9zaXRvcnkgdG8gbGV0IGZhc3QtcGF0aGluZyBoYXBwZW4uCisgICAg
ICAgICAgICBzZWxmLl9yZWFsX2JyYW5jaC5yZXBvc2l0b3J5ID0gc2VsZi5yZXBvc2l0b3J5Cisg
ICAgICAgICAgICAjIFhYWDogZGVhbCB3aXRoIF9sb2NrX21vZGUgPT0gJ3cnCisgICAgICAgICAg
ICBpZiBzZWxmLl9sb2NrX21vZGUgPT0gJ3InOgorICAgICAgICAgICAgICAgIHNlbGYuX3JlYWxf
YnJhbmNoLmxvY2tfcmVhZCgpCisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgY29udHJvbF9maWxl
cyhzZWxmKToKKyAgICAgICAgIyBEZWZlciBhY3R1YWxseSBjcmVhdGluZyBSZW1vdGVCcmFuY2hM
b2NrYWJsZUZpbGVzIHVudGlsIGl0cyBuZWVkZWQsCisgICAgICAgICMgYmVjYXVzZSBpdCB0cmln
Z2VycyBhbiBfZW5zdXJlX3JlYWwgdGhhdCB3ZSBvdGhlcndpc2UgbWlnaHQgbm90IG5lZWQuCisg
ICAgICAgIGlmIHNlbGYuX2NvbnRyb2xfZmlsZXMgaXMgTm9uZToKKyAgICAgICAgICAgIHNlbGYu
X2NvbnRyb2xfZmlsZXMgPSBSZW1vdGVCcmFuY2hMb2NrYWJsZUZpbGVzKAorICAgICAgICAgICAg
ICAgIHNlbGYuYnpyZGlyLCBzZWxmLl9jbGllbnQpCisgICAgICAgIHJldHVybiBzZWxmLl9jb250
cm9sX2ZpbGVzCisKKyAgICBkZWYgX2dldF9jaGVja291dF9mb3JtYXQoc2VsZik6CisgICAgICAg
IHNlbGYuX2Vuc3VyZV9yZWFsKCkKKyAgICAgICAgcmV0dXJuIHNlbGYuX3JlYWxfYnJhbmNoLl9n
ZXRfY2hlY2tvdXRfZm9ybWF0KCkKKworICAgIGRlZiBnZXRfcGh5c2ljYWxfbG9ja19zdGF0dXMo
c2VsZik6CisgICAgICAgICIiIlNlZSBCcmFuY2guZ2V0X3BoeXNpY2FsX2xvY2tfc3RhdHVzKCku
IiIiCisgICAgICAgICMgc2hvdWxkIGJlIGFuIEFQSSBjYWxsIHRvIHRoZSBzZXJ2ZXIsIGFzIGJy
YW5jaGVzIG11c3QgYmUgbG9ja2FibGUuCisgICAgICAgIHNlbGYuX2Vuc3VyZV9yZWFsKCkKKyAg
ICAgICAgcmV0dXJuIHNlbGYuX3JlYWxfYnJhbmNoLmdldF9waHlzaWNhbF9sb2NrX3N0YXR1cygp
CisKKyAgICBkZWYgbG9ja19yZWFkKHNlbGYpOgorICAgICAgICBpZiBub3Qgc2VsZi5fbG9ja19t
b2RlOgorICAgICAgICAgICAgc2VsZi5fbG9ja19tb2RlID0gJ3InCisgICAgICAgICAgICBzZWxm
Ll9sb2NrX2NvdW50ID0gMQorICAgICAgICAgICAgaWYgc2VsZi5fcmVhbF9icmFuY2ggaXMgbm90
IE5vbmU6CisgICAgICAgICAgICAgICAgc2VsZi5fcmVhbF9icmFuY2gubG9ja19yZWFkKCkKKyAg
ICAgICAgZWxzZToKKyAgICAgICAgICAgIHNlbGYuX2xvY2tfY291bnQgKz0gMQorCisgICAgZGVm
IF9yZW1vdGVfbG9ja193cml0ZShzZWxmLCB0b2tlbik6CisgICAgICAgIGlmIHRva2VuIGlzIE5v
bmU6CisgICAgICAgICAgICBicmFuY2hfdG9rZW4gPSByZXBvX3Rva2VuID0gJycKKyAgICAgICAg
ZWxzZToKKyAgICAgICAgICAgIGJyYW5jaF90b2tlbiA9IHRva2VuCisgICAgICAgICAgICByZXBv
X3Rva2VuID0gc2VsZi5yZXBvc2l0b3J5LmxvY2tfd3JpdGUoKQorICAgICAgICAgICAgc2VsZi5y
ZXBvc2l0b3J5LnVubG9jaygpCisgICAgICAgIHBhdGggPSBzZWxmLmJ6cmRpci5fcGF0aF9mb3Jf
cmVtb3RlX2NhbGwoc2VsZi5fY2xpZW50KQorICAgICAgICByZXNwb25zZSA9IHNlbGYuX2NsaWVu
dC5jYWxsKCdCcmFuY2gubG9ja193cml0ZScsIHBhdGgsIGJyYW5jaF90b2tlbiwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXBvX3Rva2VuKQorICAgICAgICBpZiByZXNw
b25zZVswXSA9PSAnb2snOgorICAgICAgICAgICAgb2ssIGJyYW5jaF90b2tlbiwgcmVwb190b2tl
biA9IHJlc3BvbnNlCisgICAgICAgICAgICByZXR1cm4gYnJhbmNoX3Rva2VuLCByZXBvX3Rva2Vu
CisgICAgICAgIGVsaWYgcmVzcG9uc2VbMF0gPT0gJ0xvY2tDb250ZW50aW9uJzoKKyAgICAgICAg
ICAgIHJhaXNlIGVycm9ycy5Mb2NrQ29udGVudGlvbignKHJlbW90ZSBsb2NrKScpCisgICAgICAg
IGVsaWYgcmVzcG9uc2VbMF0gPT0gJ1Rva2VuTWlzbWF0Y2gnOgorICAgICAgICAgICAgcmFpc2Ug
ZXJyb3JzLlRva2VuTWlzbWF0Y2godG9rZW4sICcocmVtb3RlIHRva2VuKScpCisgICAgICAgIGVs
aWYgcmVzcG9uc2VbMF0gPT0gJ1VubG9ja2FibGVUcmFuc3BvcnQnOgorICAgICAgICAgICAgcmFp
c2UgZXJyb3JzLlVubG9ja2FibGVUcmFuc3BvcnQoc2VsZi5ienJkaXIucm9vdF90cmFuc3BvcnQp
CisgICAgICAgIGVsaWYgcmVzcG9uc2VbMF0gPT0gJ1JlYWRPbmx5RXJyb3InOgorICAgICAgICAg
ICAgcmFpc2UgZXJyb3JzLlJlYWRPbmx5RXJyb3Ioc2VsZikKKyAgICAgICAgZWxzZToKKyAgICAg
ICAgICAgIGFzc2VydCBGYWxzZSwgJ3VuZXhwZWN0ZWQgcmVzcG9uc2UgY29kZSAlcicgJSAocmVz
cG9uc2UsKQorICAgICAgICAgICAgCisgICAgZGVmIGxvY2tfd3JpdGUoc2VsZiwgdG9rZW49Tm9u
ZSk6CisgICAgICAgIGlmIG5vdCBzZWxmLl9sb2NrX21vZGU6CisgICAgICAgICAgICByZW1vdGVf
dG9rZW5zID0gc2VsZi5fcmVtb3RlX2xvY2tfd3JpdGUodG9rZW4pCisgICAgICAgICAgICBzZWxm
Ll9sb2NrX3Rva2VuLCBzZWxmLl9yZXBvX2xvY2tfdG9rZW4gPSByZW1vdGVfdG9rZW5zCisgICAg
ICAgICAgICBhc3NlcnQgc2VsZi5fbG9ja190b2tlbiwgJ1JlbW90ZSBzZXJ2ZXIgZGlkIG5vdCBy
ZXR1cm4gYSB0b2tlbiEnCisgICAgICAgICAgICAjIFRPRE86IFdlIHJlYWxseSwgcmVhbGx5LCBy
ZWFsbHkgZG9uJ3Qgd2FudCB0byBjYWxsIF9lbnN1cmVfcmVhbAorICAgICAgICAgICAgIyBoZXJl
LCBidXQgaXQncyB0aGUgZWFzaWVzdCB3YXkgdG8gZW5zdXJlIGNvaGVyZW5jeSBiZXR3ZWVuIHRo
ZQorICAgICAgICAgICAgIyBzdGF0ZSBvZiB0aGUgUmVtb3RlQnJhbmNoIGFuZCBSZW1vdGVSZXBv
c2l0b3J5IG9iamVjdHMgYW5kIHRoZQorICAgICAgICAgICAgIyBwaHlzaWNhbCBsb2Nrcy4gIElm
IHdlIGRvbid0IG1hdGVyaWFsaXNlIHRoZSByZWFsIG9iamVjdHMgaGVyZSwKKyAgICAgICAgICAg
ICMgdGhlbiBnZXR0aW5nIGV2ZXJ5dGhpbmcgaW4gdGhlIHJpZ2h0IHN0YXRlIGxhdGVyIGlzIGNv
bXBsZXgsIHNvCisgICAgICAgICAgICAjIGZvciBub3cgd2UganVzdCBkbyBpdCB0aGUgbGF6eSB3
YXkuCisgICAgICAgICAgICAjICAgLS0gQW5kcmV3IEJlbm5ldHRzLCAyMDA3LTAyLTIyLgorICAg
ICAgICAgICAgc2VsZi5fZW5zdXJlX3JlYWwoKQorICAgICAgICAgICAgaWYgc2VsZi5fcmVhbF9i
cmFuY2ggaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgc2VsZi5fcmVhbF9icmFuY2gucmVw
b3NpdG9yeS5sb2NrX3dyaXRlKAorICAgICAgICAgICAgICAgICAgICB0b2tlbj1zZWxmLl9yZXBv
X2xvY2tfdG9rZW4pCisgICAgICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgICAgICBz
ZWxmLl9yZWFsX2JyYW5jaC5sb2NrX3dyaXRlKHRva2VuPXNlbGYuX2xvY2tfdG9rZW4pCisgICAg
ICAgICAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5fcmVhbF9icmFu
Y2gucmVwb3NpdG9yeS51bmxvY2soKQorICAgICAgICAgICAgaWYgdG9rZW4gaXMgbm90IE5vbmU6
CisgICAgICAgICAgICAgICAgc2VsZi5fbGVhdmVfbG9jayA9IFRydWUKKyAgICAgICAgICAgIGVs
c2U6CisgICAgICAgICAgICAgICAgIyBYWFg6IHRoaXMgY2FzZSBzZWVtcyB0byBiZSB1bnJlYWNo
YWJsZTsgdG9rZW4gY2Fubm90IGJlIE5vbmUuCisgICAgICAgICAgICAgICAgc2VsZi5fbGVhdmVf
bG9jayA9IEZhbHNlCisgICAgICAgICAgICBzZWxmLl9sb2NrX21vZGUgPSAndycKKyAgICAgICAg
ICAgIHNlbGYuX2xvY2tfY291bnQgPSAxCisgICAgICAgIGVsaWYgc2VsZi5fbG9ja19tb2RlID09
ICdyJzoKKyAgICAgICAgICAgIHJhaXNlIGVycm9ycy5SZWFkT25seVRyYW5zYWN0aW9uCisgICAg
ICAgIGVsc2U6CisgICAgICAgICAgICBpZiB0b2tlbiBpcyBub3QgTm9uZToKKyAgICAgICAgICAg
ICAgICAjIEEgdG9rZW4gd2FzIGdpdmVuIHRvIGxvY2tfd3JpdGUsIGFuZCB3ZSdyZSByZWxvY2tp
bmcsIHNvIGNoZWNrCisgICAgICAgICAgICAgICAgIyB0aGF0IHRoZSBnaXZlbiB0b2tlbiBhY3R1
YWxseSBtYXRjaGVzIHRoZSBvbmUgd2UgYWxyZWFkeSBoYXZlLgorICAgICAgICAgICAgICAgIGlm
IHRva2VuICE9IHNlbGYuX2xvY2tfdG9rZW46CisgICAgICAgICAgICAgICAgICAgIHJhaXNlIGVy
cm9ycy5Ub2tlbk1pc21hdGNoKHRva2VuLCBzZWxmLl9sb2NrX3Rva2VuKQorICAgICAgICAgICAg
c2VsZi5fbG9ja19jb3VudCArPSAxCisgICAgICAgIHJldHVybiBzZWxmLl9sb2NrX3Rva2VuCisK
KyAgICBkZWYgX3VubG9jayhzZWxmLCBicmFuY2hfdG9rZW4sIHJlcG9fdG9rZW4pOgorICAgICAg
ICBwYXRoID0gc2VsZi5ienJkaXIuX3BhdGhfZm9yX3JlbW90ZV9jYWxsKHNlbGYuX2NsaWVudCkK
KyAgICAgICAgcmVzcG9uc2UgPSBzZWxmLl9jbGllbnQuY2FsbCgnQnJhbmNoLnVubG9jaycsIHBh
dGgsIGJyYW5jaF90b2tlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBy
ZXBvX3Rva2VuKQorICAgICAgICBpZiByZXNwb25zZSA9PSAoJ29rJywpOgorICAgICAgICAgICAg
cmV0dXJuCisgICAgICAgIGVsaWYgcmVzcG9uc2VbMF0gPT0gJ1Rva2VuTWlzbWF0Y2gnOgorICAg
ICAgICAgICAgcmFpc2UgZXJyb3JzLlRva2VuTWlzbWF0Y2goCisgICAgICAgICAgICAgICAgc3Ry
KChicmFuY2hfdG9rZW4sIHJlcG9fdG9rZW4pKSwgJyhyZW1vdGUgdG9rZW5zKScpCisgICAgICAg
IGVsc2U6CisgICAgICAgICAgICBhc3NlcnQgRmFsc2UsICd1bmV4cGVjdGVkIHJlc3BvbnNlIGNv
ZGUgJXMnICUgKHJlc3BvbnNlLCkKKworICAgIGRlZiB1bmxvY2soc2VsZik6CisgICAgICAgIHNl
bGYuX2xvY2tfY291bnQgLT0gMQorICAgICAgICBpZiBub3Qgc2VsZi5fbG9ja19jb3VudDoKKyAg
ICAgICAgICAgIHNlbGYuX2NsZWFyX2NhY2hlZF9zdGF0ZSgpCisgICAgICAgICAgICBtb2RlID0g
c2VsZi5fbG9ja19tb2RlCisgICAgICAgICAgICBzZWxmLl9sb2NrX21vZGUgPSBOb25lCisgICAg
ICAgICAgICBpZiBzZWxmLl9yZWFsX2JyYW5jaCBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAg
ICBpZiBub3Qgc2VsZi5fbGVhdmVfbG9jazoKKyAgICAgICAgICAgICAgICAgICAgIyBJZiB0aGlz
IFJlbW90ZUJyYW5jaCB3aWxsIHJlbW92ZSB0aGUgcGh5c2ljYWwgbG9jayBmb3IgdGhlCisgICAg
ICAgICAgICAgICAgICAgICMgcmVwb3NpdG9yeSwgbWFrZSBzdXJlIHRoZSBfcmVhbF9icmFuY2gg
ZG9lc24ndCBkbyBpdAorICAgICAgICAgICAgICAgICAgICAjIGZpcnN0LiAgKEJlY2F1c2UgdGhl
IF9yZWFsX2JyYW5jaCdzIHJlcG9zaXRvcnkgaXMgc2V0IHRvCisgICAgICAgICAgICAgICAgICAg
ICMgYmUgdGhlIFJlbW90ZVJlcG9zaXRvcnkuKQorICAgICAgICAgICAgICAgICAgICBzZWxmLl9y
ZWFsX2JyYW5jaC5yZXBvc2l0b3J5LmxlYXZlX2xvY2tfaW5fcGxhY2UoKQorICAgICAgICAgICAg
ICAgIHNlbGYuX3JlYWxfYnJhbmNoLnVubG9jaygpCisgICAgICAgICAgICBpZiBtb2RlICE9ICd3
JzoKKyAgICAgICAgICAgICAgICAjIE9ubHkgd3JpdGUtbG9ja2VkIGJyYW5jaGVkIG5lZWQgdG8g
bWFrZSBhIHJlbW90ZSBtZXRob2QgY2FsbAorICAgICAgICAgICAgICAgICMgdG8gcGVyZm9tIHRo
ZSB1bmxvY2suCisgICAgICAgICAgICAgICAgcmV0dXJuCisgICAgICAgICAgICBhc3NlcnQgc2Vs
Zi5fbG9ja190b2tlbiwgJ0xvY2tlZCwgYnV0IG5vIHRva2VuIScKKyAgICAgICAgICAgIGJyYW5j
aF90b2tlbiA9IHNlbGYuX2xvY2tfdG9rZW4KKyAgICAgICAgICAgIHJlcG9fdG9rZW4gPSBzZWxm
Ll9yZXBvX2xvY2tfdG9rZW4KKyAgICAgICAgICAgIHNlbGYuX2xvY2tfdG9rZW4gPSBOb25lCisg
ICAgICAgICAgICBzZWxmLl9yZXBvX2xvY2tfdG9rZW4gPSBOb25lCisgICAgICAgICAgICBpZiBu
b3Qgc2VsZi5fbGVhdmVfbG9jazoKKyAgICAgICAgICAgICAgICBzZWxmLl91bmxvY2soYnJhbmNo
X3Rva2VuLCByZXBvX3Rva2VuKQorCisgICAgZGVmIGJyZWFrX2xvY2soc2VsZik6CisgICAgICAg
IHNlbGYuX2Vuc3VyZV9yZWFsKCkKKyAgICAgICAgcmV0dXJuIHNlbGYuX3JlYWxfYnJhbmNoLmJy
ZWFrX2xvY2soKQorCisgICAgZGVmIGxlYXZlX2xvY2tfaW5fcGxhY2Uoc2VsZik6CisgICAgICAg
IHNlbGYuX2xlYXZlX2xvY2sgPSBUcnVlCisKKyAgICBkZWYgZG9udF9sZWF2ZV9sb2NrX2luX3Bs
YWNlKHNlbGYpOgorICAgICAgICBzZWxmLl9sZWF2ZV9sb2NrID0gRmFsc2UKKworICAgIGRlZiBs
YXN0X3JldmlzaW9uX2luZm8oc2VsZik6CisgICAgICAgICIiIlNlZSBCcmFuY2gubGFzdF9yZXZp
c2lvbl9pbmZvKCkuIiIiCisgICAgICAgIHBhdGggPSBzZWxmLmJ6cmRpci5fcGF0aF9mb3JfcmVt
b3RlX2NhbGwoc2VsZi5fY2xpZW50KQorICAgICAgICByZXNwb25zZSA9IHNlbGYuX2NsaWVudC5j
YWxsKCdCcmFuY2gubGFzdF9yZXZpc2lvbl9pbmZvJywgcGF0aCkKKyAgICAgICAgYXNzZXJ0IHJl
c3BvbnNlWzBdID09ICdvaycsICd1bmV4cGVjdGVkIHJlc3BvbnNlIGNvZGUgJXMnICUgKHJlc3Bv
bnNlLCkKKyAgICAgICAgcmV2bm8gPSBpbnQocmVzcG9uc2VbMV0pCisgICAgICAgIGxhc3RfcmV2
aXNpb24gPSByZXNwb25zZVsyXQorICAgICAgICByZXR1cm4gKHJldm5vLCBsYXN0X3JldmlzaW9u
KQorCisgICAgZGVmIF9nZW5fcmV2aXNpb25faGlzdG9yeShzZWxmKToKKyAgICAgICAgIiIiU2Vl
IEJyYW5jaC5fZ2VuX3JldmlzaW9uX2hpc3RvcnkoKS4iIiIKKyAgICAgICAgcGF0aCA9IHNlbGYu
YnpyZGlyLl9wYXRoX2Zvcl9yZW1vdGVfY2FsbChzZWxmLl9jbGllbnQpCisgICAgICAgIHJlc3Bv
bnNlID0gc2VsZi5fY2xpZW50LmNhbGxfZXhwZWN0aW5nX2JvZHkoCisgICAgICAgICAgICAnQnJh
bmNoLnJldmlzaW9uX2hpc3RvcnknLCBwYXRoKQorICAgICAgICBhc3NlcnQgcmVzcG9uc2VbMF1b
MF0gPT0gJ29rJywgKCd1bmV4cGVjdGVkIHJlc3BvbnNlIGNvZGUgJXMnCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgJSAocmVzcG9uc2VbMF0sKSkKKyAgICAgICAgcmVz
dWx0ID0gcmVzcG9uc2VbMV0ucmVhZF9ib2R5X2J5dGVzKCkuc3BsaXQoJ1x4MDAnKQorICAgICAg
ICBpZiByZXN1bHQgPT0gWycnXToKKyAgICAgICAgICAgIHJldHVybiBbXQorICAgICAgICByZXR1
cm4gcmVzdWx0CisKKyAgICBAbmVlZHNfd3JpdGVfbG9jaworICAgIGRlZiBzZXRfcmV2aXNpb25f
aGlzdG9yeShzZWxmLCByZXZfaGlzdG9yeSk6CisgICAgICAgICMgU2VuZCBqdXN0IHRoZSB0aXAg
cmV2aXNpb24gb2YgdGhlIGhpc3Rvcnk7IHRoZSBzZXJ2ZXIgd2lsbCBnZW5lcmF0ZQorICAgICAg
ICAjIHRoZSBmdWxsIGhpc3RvcnkgZnJvbSB0aGF0LiAgSWYgdGhlIHJldmlzaW9uIGRvZXNuJ3Qg
ZXhpc3QgaW4gdGhpcworICAgICAgICAjIGJyYW5jaCwgTm9TdWNoUmV2aXNpb24gd2lsbCBiZSBy
YWlzZWQuCisgICAgICAgIHBhdGggPSBzZWxmLmJ6cmRpci5fcGF0aF9mb3JfcmVtb3RlX2NhbGwo
c2VsZi5fY2xpZW50KQorICAgICAgICBpZiByZXZfaGlzdG9yeSA9PSBbXToKKyAgICAgICAgICAg
IHJldl9pZCA9ICdudWxsOicKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHJldl9pZCA9IHJl
dl9oaXN0b3J5Wy0xXQorICAgICAgICBzZWxmLl9jbGVhcl9jYWNoZWRfc3RhdGUoKQorICAgICAg
ICByZXNwb25zZSA9IHNlbGYuX2NsaWVudC5jYWxsKCdCcmFuY2guc2V0X2xhc3RfcmV2aXNpb24n
LAorICAgICAgICAgICAgcGF0aCwgc2VsZi5fbG9ja190b2tlbiwgc2VsZi5fcmVwb19sb2NrX3Rv
a2VuLCByZXZfaWQpCisgICAgICAgIGlmIHJlc3BvbnNlWzBdID09ICdOb1N1Y2hSZXZpc2lvbic6
CisgICAgICAgICAgICByYWlzZSBOb1N1Y2hSZXZpc2lvbihzZWxmLCByZXZfaWQpCisgICAgICAg
IGVsc2U6CisgICAgICAgICAgICBhc3NlcnQgcmVzcG9uc2UgPT0gKCdvaycsKSwgKAorICAgICAg
ICAgICAgICAgICd1bmV4cGVjdGVkIHJlc3BvbnNlIGNvZGUgJXInICUgKHJlc3BvbnNlLCkpCisg
ICAgICAgIHNlbGYuX2NhY2hlX3JldmlzaW9uX2hpc3RvcnkocmV2X2hpc3RvcnkpCisKKyAgICBk
ZWYgZ2V0X3BhcmVudChzZWxmKToKKyAgICAgICAgc2VsZi5fZW5zdXJlX3JlYWwoKQorICAgICAg
ICByZXR1cm4gc2VsZi5fcmVhbF9icmFuY2guZ2V0X3BhcmVudCgpCisgICAgICAgIAorICAgIGRl
ZiBzZXRfcGFyZW50KHNlbGYsIHVybCk6CisgICAgICAgIHNlbGYuX2Vuc3VyZV9yZWFsKCkKKyAg
ICAgICAgcmV0dXJuIHNlbGYuX3JlYWxfYnJhbmNoLnNldF9wYXJlbnQodXJsKQorICAgICAgICAK
KyAgICBkZWYgZ2V0X2NvbmZpZyhzZWxmKToKKyAgICAgICAgcmV0dXJuIFJlbW90ZUJyYW5jaENv
bmZpZyhzZWxmKQorCisgICAgZGVmIHNwcm91dChzZWxmLCB0b19ienJkaXIsIHJldmlzaW9uX2lk
PU5vbmUpOgorICAgICAgICAjIExpa2UgQnJhbmNoLnNwcm91dCwgZXhjZXB0IHRoYXQgaXQgc3By
b3V0cyBhIGJyYW5jaCBpbiB0aGUgZGVmYXVsdAorICAgICAgICAjIGZvcm1hdCwgYmVjYXVzZSBS
ZW1vdGVCcmFuY2hlcyBjYW4ndCBiZSBjcmVhdGVkIGF0IGFyYml0cmFyeSBVUkxzLgorICAgICAg
ICAjIFhYWDogaWYgdG9fYnpyZGlyIGlzIGEgUmVtb3RlQnJhbmNoLCB0aGlzIHNob3VsZCBwZXJo
YXBzIGRvCisgICAgICAgICMgdG9fYnpyZGlyLmNyZWF0ZV9icmFuY2guLi4KKyAgICAgICAgcmVz
dWx0ID0gYnJhbmNoLkJyYW5jaEZvcm1hdC5nZXRfZGVmYXVsdF9mb3JtYXQoKS5pbml0aWFsaXpl
KHRvX2J6cmRpcikKKyAgICAgICAgc2VsZi5jb3B5X2NvbnRlbnRfaW50byhyZXN1bHQsIHJldmlz
aW9uX2lkPXJldmlzaW9uX2lkKQorICAgICAgICByZXN1bHQuc2V0X3BhcmVudChzZWxmLmJ6cmRp
ci5yb290X3RyYW5zcG9ydC5iYXNlKQorICAgICAgICByZXR1cm4gcmVzdWx0CisKKyAgICBAbmVl
ZHNfd3JpdGVfbG9jaworICAgIGRlZiBhcHBlbmRfcmV2aXNpb24oc2VsZiwgKnJldmlzaW9uX2lk
cyk6CisgICAgICAgIHNlbGYuX2Vuc3VyZV9yZWFsKCkKKyAgICAgICAgcmV0dXJuIHNlbGYuX3Jl
YWxfYnJhbmNoLmFwcGVuZF9yZXZpc2lvbigqcmV2aXNpb25faWRzKQorCisgICAgQG5lZWRzX3dy
aXRlX2xvY2sKKyAgICBkZWYgcHVsbChzZWxmLCBzb3VyY2UsIG92ZXJ3cml0ZT1GYWxzZSwgc3Rv
cF9yZXZpc2lvbj1Ob25lLAorICAgICAgICAgICAgICoqa3dhcmdzKToKKyAgICAgICAgIyBGSVhN
RTogVGhpcyBhc2tzIHRoZSByZWFsIGJyYW5jaCB0byBydW4gdGhlIGhvb2tzLCB3aGljaCBtZWFu
cworICAgICAgICAjIHRoZXkncmUgY2FsbGVkIHdpdGggdGhlIHdyb25nIHRhcmdldCBicmFuY2gg
cGFyYW1ldGVyLiAKKyAgICAgICAgIyBUaGUgdGVzdCBzdWl0ZSBzcGVjaWZpY2FsbHkgYWxsb3dz
IHRoaXMgYXQgcHJlc2VudCBidXQgaXQgc2hvdWxkIGJlCisgICAgICAgICMgZml4ZWQuICBJdCBz
aG91bGQgZ2V0IGEgX292ZXJyaWRlX2hvb2tfdGFyZ2V0IGJyYW5jaCwKKyAgICAgICAgIyBhcyBw
dXNoIGRvZXMuICAtLSBtYnAgMjAwNzA0MDUKKyAgICAgICAgc2VsZi5fZW5zdXJlX3JlYWwoKQor
ICAgICAgICBzZWxmLl9yZWFsX2JyYW5jaC5wdWxsKAorICAgICAgICAgICAgc291cmNlLCBvdmVy
d3JpdGU9b3ZlcndyaXRlLCBzdG9wX3JldmlzaW9uPXN0b3BfcmV2aXNpb24sCisgICAgICAgICAg
ICAqKmt3YXJncykKKworICAgIEBuZWVkc19yZWFkX2xvY2sKKyAgICBkZWYgcHVzaChzZWxmLCB0
YXJnZXQsIG92ZXJ3cml0ZT1GYWxzZSwgc3RvcF9yZXZpc2lvbj1Ob25lKToKKyAgICAgICAgc2Vs
Zi5fZW5zdXJlX3JlYWwoKQorICAgICAgICByZXR1cm4gc2VsZi5fcmVhbF9icmFuY2gucHVzaCgK
KyAgICAgICAgICAgIHRhcmdldCwgb3ZlcndyaXRlPW92ZXJ3cml0ZSwgc3RvcF9yZXZpc2lvbj1z
dG9wX3JldmlzaW9uLAorICAgICAgICAgICAgX292ZXJyaWRlX2hvb2tfc291cmNlX2JyYW5jaD1z
ZWxmKQorCisgICAgZGVmIGlzX2xvY2tlZChzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYuX2xv
Y2tfY291bnQgPj0gMQorCisgICAgZGVmIHNldF9sYXN0X3JldmlzaW9uX2luZm8oc2VsZiwgcmV2
bm8sIHJldmlzaW9uX2lkKToKKyAgICAgICAgc2VsZi5fZW5zdXJlX3JlYWwoKQorICAgICAgICBz
ZWxmLl9jbGVhcl9jYWNoZWRfc3RhdGUoKQorICAgICAgICByZXR1cm4gc2VsZi5fcmVhbF9icmFu
Y2guc2V0X2xhc3RfcmV2aXNpb25faW5mbyhyZXZubywgcmV2aXNpb25faWQpCisKKyAgICBkZWYg
Z2VuZXJhdGVfcmV2aXNpb25faGlzdG9yeShzZWxmLCByZXZpc2lvbl9pZCwgbGFzdF9yZXY9Tm9u
ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdGhlcl9icmFuY2g9Tm9uZSk6
CisgICAgICAgIHNlbGYuX2Vuc3VyZV9yZWFsKCkKKyAgICAgICAgcmV0dXJuIHNlbGYuX3JlYWxf
YnJhbmNoLmdlbmVyYXRlX3JldmlzaW9uX2hpc3RvcnkoCisgICAgICAgICAgICByZXZpc2lvbl9p
ZCwgbGFzdF9yZXY9bGFzdF9yZXYsIG90aGVyX2JyYW5jaD1vdGhlcl9icmFuY2gpCisKKyAgICBA
cHJvcGVydHkKKyAgICBkZWYgdGFncyhzZWxmKToKKyAgICAgICAgc2VsZi5fZW5zdXJlX3JlYWwo
KQorICAgICAgICByZXR1cm4gc2VsZi5fcmVhbF9icmFuY2gudGFncworCisgICAgZGVmIHNldF9w
dXNoX2xvY2F0aW9uKHNlbGYsIGxvY2F0aW9uKToKKyAgICAgICAgc2VsZi5fZW5zdXJlX3JlYWwo
KQorICAgICAgICByZXR1cm4gc2VsZi5fcmVhbF9icmFuY2guc2V0X3B1c2hfbG9jYXRpb24obG9j
YXRpb24pCisKKyAgICBkZWYgdXBkYXRlX3JldmlzaW9ucyhzZWxmLCBvdGhlciwgc3RvcF9yZXZp
c2lvbj1Ob25lKToKKyAgICAgICAgc2VsZi5fZW5zdXJlX3JlYWwoKQorICAgICAgICByZXR1cm4g
c2VsZi5fcmVhbF9icmFuY2gudXBkYXRlX3JldmlzaW9ucygKKyAgICAgICAgICAgIG90aGVyLCBz
dG9wX3JldmlzaW9uPXN0b3BfcmV2aXNpb24pCisKKworY2xhc3MgUmVtb3RlQnJhbmNoQ29uZmln
KEJyYW5jaENvbmZpZyk6CisKKyAgICBkZWYgdXNlcm5hbWUoc2VsZik6CisgICAgICAgIHNlbGYu
YnJhbmNoLl9lbnN1cmVfcmVhbCgpCisgICAgICAgIHJldHVybiBzZWxmLmJyYW5jaC5fcmVhbF9i
cmFuY2guZ2V0X2NvbmZpZygpLnVzZXJuYW1lKCkKKworICAgIGRlZiBfZ2V0X2JyYW5jaF9kYXRh
X2NvbmZpZyhzZWxmKToKKyAgICAgICAgc2VsZi5icmFuY2guX2Vuc3VyZV9yZWFsKCkKKyAgICAg
ICAgaWYgc2VsZi5fYnJhbmNoX2RhdGFfY29uZmlnIGlzIE5vbmU6CisgICAgICAgICAgICBzZWxm
Ll9icmFuY2hfZGF0YV9jb25maWcgPSBUcmVlQ29uZmlnKHNlbGYuYnJhbmNoLl9yZWFsX2JyYW5j
aCkKKyAgICAgICAgcmV0dXJuIHNlbGYuX2JyYW5jaF9kYXRhX2NvbmZpZworCisKK2RlZiBfZXh0
cmFjdF90YXIodGFyLCB0b19kaXIpOgorICAgICIiIkV4dHJhY3QgYWxsIHRoZSBjb250ZW50cyBv
ZiBhIHRhcmZpbGUgb2JqZWN0LgorCisgICAgQSByZXBsYWNlbWVudCBmb3IgZXh0cmFjdGFsbCwg
d2hpY2ggaXMgbm90IHByZXNlbnQgaW4gcHl0aG9uMi40CisgICAgIiIiCisgICAgZm9yIHRhcmlu
Zm8gaW4gdGFyOgorICAgICAgICB0YXIuZXh0cmFjdCh0YXJpbmZvLCB0b19kaXIpCgo=

=== added directory bzrlib/smart // file-id:smart-20061101100241-u0wzhkl4sjwmuz
... hd-1 // last-changed:andrew.bennetts@canonical.com-20070410155415-hyzlzwevu
... 3ud0dny
=== added file bzrlib/smart/__init__.py // file-id:__init__.py-20061101100249-8
... jwwl0d3jr080zim-1 // last-changed:andrew.bennetts@canonical.com-20070426043
... 244-l1gtjevl8f98jbnk // encoding:base64
LS0tIC9kZXYvbnVsbAorKysgYnpybGliL3NtYXJ0L19faW5pdF9fLnB5CkBAIC0wLDAgKzEsMjQ4
IEBACisjIENvcHlyaWdodCAoQykgMjAwNiBDYW5vbmljYWwgTHRkCisjCisjIFRoaXMgcHJvZ3Jh
bSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5
CisjIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2Ug
YXMgcHVibGlzaGVkIGJ5CisjIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2
ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCisjIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVy
IHZlcnNpb24uCisjCisjIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0
aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhv
dXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisjIEdOVSBHZW5lcmFsIFB1
YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisjCisjIFlvdSBzaG91bGQgaGF2ZSByZWNl
aXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisjIGFsb25nIHdp
dGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisjIEZv
dW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BICAw
MjExMS0xMzA3ICBVU0EKKworIiIiU21hcnQtc2VydmVyIHByb3RvY29sLCBjbGllbnQgYW5kIHNl
cnZlci4KKworVGhpcyBjb2RlIGlzIGZhaXJseSBjb21wbGV4LCBzbyBpdCBoYXMgYmVlbiBzcGxp
dCB1cCBpbnRvIGEgcGFja2FnZSBvZiBtb2R1bGVzLAorcmF0aGVyIHRoYW4gYmVpbmcgYSBzaW5n
bGUgbGFyZ2UgbW9kdWxlLiAgUmVmZXIgdG8gdGhlIGluZGl2aWR1YWwgbW9kdWxlCitkb2NzdHJp
bmdzIGZvciBkZXRhaWxzLgorCitPdmVydmlldworPT09PT09PT0KKworVGhlIHNtYXJ0IHByb3Rv
Y29sIHByb3ZpZGVzIGEgd2F5IHRvIHNlbmQgYSByZXF1ZXN0cyBhbmQgY29ycmVzcG9uZGluZwor
cmVzcG9uc2VzIHRvIGNvbW11bmljYXRlIHdpdGggYSByZW1vdGUgYnpyIHByb2Nlc3MuCisKK0xh
eWVyaW5nCis9PT09PT09PQorCitNZWRpdW0KKy0tLS0tLQorCitBdCB0aGUgYm90dG9tIGxldmVs
IHRoZXJlIGlzIGVpdGhlciBhIHNvY2tldCwgcGlwZXMsIG9yIGFuIEhUVFAKK3JlcXVlc3QvcmVz
cG9uc2UuICBXZSBjYWxsIHRoaXMgbGF5ZXIgdGhlICptZWRpdW0qLiAgSXQgaXMgcmVzcG9uc2li
bGUgZm9yCitjYXJyeWluZyBieXRlcyBiZXR3ZWVuIGEgY2xpZW50IGFuZCBzZXJ2ZXIuICBGb3Ig
c29ja2V0cywgd2UgaGF2ZSB0aGUKK2lkZWEgdGhhdCB5b3UgaGF2ZSBtdWx0aXBsZSByZXF1ZXN0
cyBhbmQgZ2V0IGEgcmVhZCBlcnJvciBiZWNhdXNlIHRoZSBvdGhlciBzaWRlCitkaWQgc2h1dGRv
d24uICBGb3IgcGlwZXMgd2UgaGF2ZSByZWFkIHBpcGUgd2hpY2ggd2lsbCBoYXZlIGEgemVybyBy
ZWFkIHdoaWNoCittYXJrcyBlbmQtb2YtZmlsZS4gIEZvciBIVFRQIHNlcnZlciBlbnZpcm9ubWVu
dCB0aGVyZSBpcyBubyBlbmQtb2Ytc3RyZWFtCitiZWNhdXNlIGVhY2ggcmVxdWVzdCBjb21pbmcg
aW50byB0aGUgc2VydmVyIGlzIGluZGVwZW5kZW50LgorCitTbyB3ZSBuZWVkIGEgd3JhcHBlciBh
cm91bmQgcGlwZXMgYW5kIHNvY2tldHMgdG8gc2VwZXJhdGUgb3V0IHJlcXVlc3RzIGZyb20KK3N1
YnN0cmF0ZSBhbmQgdGhpcyB3aWxsIGdpdmUgdXMgYSBzaW5nbGUgbW9kZWwgd2hpY2ggaXMgY29u
c2lzdGVudCBmb3IgSFRUUCwKK3NvY2tldHMgYW5kIHBpcGVzLgorCitQcm90b2NvbAorLS0tLS0t
LS0KKworT24gdG9wIG9mIHRoZSBtZWRpdW0gaXMgdGhlICpwcm90b2NvbCouICBUaGlzIGlzIHRo
ZSBsYXllciB0aGF0IGRlc2VyaWFsaXNlcworYnl0ZXMgaW50byB0aGUgc3RydWN0dXJlZCBkYXRh
IHRoYXQgcmVxdWVzdHMgYW5kIHJlc3BvbnNlcyBjb25zaXN0IG9mLgorCitWZXJzaW9uIG9uZSBv
ZiB0aGUgcHJvdG9jb2wgKGZvciByZXF1ZXN0cyBhbmQgcmVzcG9uc2VzKSBpcyBkZXNjcmliZWQg
Ynk6OgorCisgIFJFUVVFU1QgOj0gTUVTU0FHRV9WMQorICBSRVNQT05TRSA6PSBNRVNTQUdFX1Yx
CisgIE1FU1NBR0VfVjEgOj0gQVJHUyBCT0RZCisKKyAgQVJHUyA6PSBBUkcgW01PUkVfQVJHU10g
TkVXTElORQorICBNT1JFX0FSR1MgOj0gU0VQIEFSRyBbTU9SRV9BUkdTXQorICBTRVAgOj0gMHgw
MQorCisgIEJPRFkgOj0gTEVOR1RIIE5FV0xJTkUgQk9EWV9CWVRFUyBUUkFJTEVSCisgIExFTkdU
SCA6PSBkZWNpbWFsIGludGVnZXIKKyAgVFJBSUxFUiA6PSAiZG9uZSIgTkVXTElORQorCitUaGF0
IGlzLCBhIHR1cGxlIG9mIGFyZ3VtZW50cyBzZXBhcmF0ZWQgYnkgQ3RybC1BIGFuZCB0ZXJtaW5h
dGVkIHdpdGggYSBuZXdsaW5lLAorZm9sbG93ZWQgYnkgbGVuZ3RoIHByZWZpeGVkIGJvZHkgd2l0
aCBhIGNvbnN0YW50IHRyYWlsZXIuICBOb3RlIHRoYXQgYWx0aG91Z2gKK2FyZ3VtZW50cyBhcmUg
bm90IDgtYml0IHNhZmUgKHRoZXkgY2Fubm90IGluY2x1ZGUgMHgwMSBvciAweDBhIGJ5dGVzIHdp
dGhvdXQKK2JyZWFraW5nIHRoZSBwcm90b2NvbCBlbmNvZGluZyksIHRoZSBib2R5IGlzLgorCitW
ZXJzaW9uIHR3byBvZiB0aGUgcmVxdWVzdCBwcm90b2NvbCBpczo6CisKKyAgUkVRVUVTVF9WMiA6
PSAiYnpyIHJlcXVlc3QgMiIgTkVXTElORSBNRVNTQUdFX1YxCisKK1ZlcnNpb24gdHdvIG9mIHRo
ZSByZXNwb25zZSBwcm90b2NvbCBpczo6CisKKyAgUkVTUE9OU0VfVjIgOj0gImJ6ciByZXF1ZXN0
IDIiIE5FV0xJTkUgTUVTU0FHRV9WMQorCitGdXR1cmUgdmVyc2lvbnMgc2hvdWxkIGZvbGxvdyB0
aGlzIHN0cnVjdHVyZSwgbGlrZSB2ZXJzaW9uIHR3byBkb2VzOjoKKworICBGVVRVUkVfTUVTU0FH
RSA6PSBWRVJTSU9OX1NUUklORyBORVdMSU5FIFJFU1RfT0ZfTUVTU0FHRQorCitUaGlzIGlzIHRo
YXQgY2xpZW50cyBhbmQgc2VydmVycyBjYW4gcmVhZCBieXRlcyB1cCB0byB0aGUgZmlyc3QgbmV3
bGluZSBieXRlIHRvCitkZXRlcm1pbmUgd2hhdCB2ZXJzaW9uIGEgbWVzc2FnZSBpcy4KKworRm9y
IGNvbXBhdGliaWxpdHkgd2lsbCBhbGwgdmVyc2lvbnMgKHBhc3QgYW5kIGZ1dHVyZSkgb2YgYnpy
IGNsaWVudHMsIHNlcnZlcnMKK3RoYXQgcmVjZWl2ZSBhIHJlcXVlc3QgaW4gYW4gdW5rbm93biBw
cm90b2NvbCB2ZXJzaW9uIHNob3VsZCByZXNwb25kIHdpdGggYQorc2luZ2xlLWxpbmUgZXJyb3Ig
dGVybWluYXRlZCB3aXRoIDB4MGEgKE5FV0xJTkUpLCByYXRoZXIgdGhhbiBzdHJ1Y3R1cmVkCity
ZXNwb25zZSBwcmVmaXhlZCB3aXRoIGEgdmVyc2lvbiBzdHJpbmcuCisKK1JlcXVlc3QvUmVzcG9u
c2UgcHJvY2Vzc2luZworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK09uIHRvcCBvZiB0
aGUgcHJvdG9jb2wgaXMgdGhlIGxvZ2ljIGZvciBwcm9jZXNzaW5nIHJlcXVlc3RzIChvbiB0aGUg
c2VydmVyKSBvcgorcmVzcG9uc2VzIChvbiB0aGUgY2xpZW50KS4KKworU2VydmVyLXNpZGUKKy0t
LS0tLS0tLS0tCisKK1NrZXRjaDo6CisKKyBNRURJVU0gIChmYWN0b3J5IGZvciBwcm90b2NvbCwg
cmVhZHMgYnl0ZXMgJiBwdXNoZXMgdG8gcHJvdG9jb2wsCisgICAgICAgICAgdXNlcyBwcm90b2Nv
bCB0byBkZXRlY3QgZW5kLW9mLXJlcXVlc3QsIHNlbmRzIHdyaXR0ZW4KKyAgICAgICAgICBieXRl
cyB0byBjbGllbnQpIGUuZy4gc29ja2V0LCBwaXBlLCBIVFRQIHJlcXVlc3QgaGFuZGxlci4KKyAg
XgorICB8IGJ5dGVzLgorICB2CisKKyBQUk9UT0NPTChzZXJpYWxpemF0aW9uLCBkZXNlcmlhbGl6
YXRpb24pICBhY2NlcHRzIGJ5dGVzIGZvciBvbmUKKyAgICAgICAgICByZXF1ZXN0LCBkZWNvZGVz
IGFjY29yZGluZyB0byBpbnRlcm5hbCBzdGF0ZSwgcHVzaGVzCisgICAgICAgICAgc3RydWN0dXJl
ZCBkYXRhIHRvIGhhbmRsZXIuICBhY2NlcHRzIHN0cnVjdHVyZWQgZGF0YSBmcm9tCisgICAgICAg
ICAgaGFuZGxlciBhbmQgZW5jb2RlcyBhbmQgd3JpdGVzIHRvIHRoZSBtZWRpdW0uICBmYWN0b3J5
IGZvcgorICAgICAgICAgIGhhbmRsZXIuCisgIF4KKyAgfCBzdHJ1Y3R1cmVkIGRhdGEKKyAgdgor
CisgSEFORExFUiAgKGRvbWFpbiBsb2dpYykgYWNjZXB0cyBzdHJ1Y3R1cmVkIGRhdGEsIG9wZXJh
dGVzIHN0YXRlCisgICAgICAgICAgbWFjaGluZSB1bnRpbCB0aGUgcmVxdWVzdCBjYW4gYmUgc2F0
aXNmaWVkLAorICAgICAgICAgIHNlbmRzIHN0cnVjdHVyZWQgZGF0YSB0byB0aGUgcHJvdG9jb2wu
CisKK1JlcXVlc3QgaGFuZGxlcnMgYXJlIHJlZ2lzdGVyZWQgaW4gYGJ6cmxpYi5zbWFydC5yZXF1
ZXN0YC4KKworCitDbGllbnQtc2lkZQorLS0tLS0tLS0tLS0KKworU2tldGNoOjoKKworIENMSUVO
VCAgIGRvbWFpbiBsb2dpYywgYWNjZXB0cyBkb21haW4gcmVxdWVzdHMsIGdlbmVyYXRlZCBzdHJ1
Y3R1cmVkCisgICAgICAgICAgZGF0YSwgcmVhZHMgc3RydWN0dXJlZCBkYXRhIGZyb20gcmVzcG9u
c2VzIGFuZCB0dXJucyBpbnRvCisgICAgICAgICAgZG9tYWluIGRhdGEuICBTZW5kcyBzdHJ1Y3R1
cmVkIGRhdGEgdG8gdGhlIHByb3RvY29sLgorICAgICAgICAgIE9wZXJhdGVzIHN0YXRlIG1hY2hp
bmVzIHVudGlsIHRoZSByZXF1ZXN0IGNhbiBiZSBkZWxpdmVyZWQKKyAgICAgICAgICAoZS5nLiBy
ZWFkaW5nIGZyb20gYSBidW5kbGUgZ2VuZXJhdGVkIGluIGJ6cmxpYiB0byBkZWxpdmVyIGEKKyAg
ICAgICAgICBjb21wbGV0ZSByZXF1ZXN0KS4KKworICAgICAgICAgIFBvc3NpYmx5IHRoaXMgc2hv
dWxkIGp1c3QgYmUgUmVtb3RlQnpyRGlyLCBSZW1vdGVUcmFuc3BvcnQsCisgICAgICAgICAgLi4u
CisgIF4KKyAgfCBzdHJ1Y3R1cmVkIGRhdGEKKyAgdgorCitQUk9UT0NPTCAgKHNlcmlhbGl6YXRp
b24sIGRlc2VyaWFsaXphdGlvbikgIGFjY2VwdHMgc3RydWN0dXJlZCBkYXRhIGZvciBvbmUKKyAg
ICAgICAgICByZXF1ZXN0LCBlbmNvZGVzIGFuZCB3cml0ZXMgdG8gdGhlIG1lZGl1bS4gIFJlYWRz
IGJ5dGVzIGZyb20gdGhlCisgICAgICAgICAgbWVkaXVtLCBkZWNvZGVzIGFuZCBhbGxvd3MgdGhl
IGNsaWVudCB0byByZWFkIHN0cnVjdHVyZWQgZGF0YS4KKyAgXgorICB8IGJ5dGVzLgorICB2CisK
KyBNRURJVU0gIChhY2NlcHRzIGJ5dGVzIGZyb20gdGhlIHByb3RvY29sICYgZGVsaXZlcnMgdG8g
dGhlIHJlbW90ZSBzZXJ2ZXIuCisgICAgICAgICAgQWxsb3dzIHRoZSBwb3RvY29sIHRvIHJlYWQg
Ynl0ZXMgZS5nLiBzb2NrZXQsIHBpcGUsIEhUVFAgcmVxdWVzdC4KKworVGhlIGRvbWFpbiBsb2dp
YyBpcyBpbiBgYnpybGliLnJlbW90ZWA6IGBSZW1vdGVCenJEaXJgLCBgUmVtb3RlQnJhbmNoYCwg
YW5kIHNvCitvbi4KKworVGhlcmUgaXMgYWxzbyBhbiBwbGFpbiBmaWxlLWxldmVsIHRyYW5zcG9y
dCB0aGF0IGNhbGxzIHJlbW90ZSBtZXRob2RzIHRvCittYW5pcHVsYXRlIGZpbGVzIG9uIHRoZSBz
ZXJ2ZXIgaW4gYGJ6cmxpYi50cmFuc3BvcnQucmVtb3RlYC4KKworUGF0aHMKKz09PT09CisKK1Bh
dGhzIGFyZSBwYXNzZWQgYWNyb3NzIHRoZSBuZXR3b3JrLiAgVGhlIGNsaWVudCBuZWVkcyB0byBz
ZWUgYSBuYW1lc3BhY2UgdGhhdAoraW5jbHVkZXMgYW55IHJlcG9zaXRvcnkgdGhhdCBtaWdodCBu
ZWVkIHRvIGJlIHJlZmVyZW5jZWQsIGFuZCB0aGUgY2xpZW50IG5lZWRzCit0byBrbm93IGFib3V0
IGEgcm9vdCBkaXJlY3RvcnkgYmV5b25kIHdoaWNoIGl0IGNhbm5vdCBhc2NlbmQuCisKK1NlcnZl
cnMgcnVuIG92ZXIgc3NoIHdpbGwgdHlwaWNhbGx5IHdhbnQgdG8gYmUgYWJsZSB0byBhY2Nlc3Mg
YW55IHBhdGggdGhlIHVzZXIKK2NhbiBhY2Nlc3MuICBQdWJsaWMgc2VydmVycyBvbiB0aGUgb3Ro
ZXIgaGFuZCAod2hpY2ggbWlnaHQgYmUgb3ZlciBodHRwLCBzc2gKK29yIHRjcCkgd2lsbCB0eXBp
Y2FsbHkgd2FudCB0byByZXN0cmljdCBhY2Nlc3MgdG8gb25seSBhIHBhcnRpY3VsYXIgZGlyZWN0
b3J5CithbmQgaXRzIGNoaWxkcmVuLCBzbyB3aWxsIHdhbnQgdG8gZG8gYSBzb2Z0d2FyZSB2aXJ0
dWFsIHJvb3QgYXQgdGhhdCBsZXZlbC4KK0luIG90aGVyIHdvcmRzIHRoZXknbGwgd2FudCB0byBy
ZXdyaXRlIGluY29taW5nIHBhdGhzIHRvIGJlIHVuZGVyIHRoYXQgbGV2ZWwKKyhhbmQgcHJldmVu
dCBlc2NhcGluZyB1c2luZyAuLi8gdHJpY2tzLikKKworVVJMcyB0aGF0IGluY2x1ZGUgfiBzaG91
bGQgcHJvYmFibHkgYmUgcGFzc2VkIGFjcm9zcyB0byB0aGUgc2VydmVyIHZlcmJhdGltCithbmQg
dGhlIHNlcnZlciBjYW4gZXhwYW5kIHRoZW0uICBUaGlzIHdpbGwgcHJvYWJseSBub3QgYmUgbWVh
bmluZ2Z1bCB3aGVuCitsaW1pdGVkIHRvIGEgZGlyZWN0b3J5PworIiIiCisKKyMgVE9ETzogX3Ry
YW5zbGF0ZV9lcnJvciBzaG91bGQgYmUgb24gdGhlIGNsaWVudCwgbm90IHRoZSB0cmFuc3BvcnQg
YmVjYXVzZQorIyAgICAgZXJyb3IgY29kaW5nIGlzIHdpcmUgcHJvdG9jb2wgc3BlY2lmaWMuCisK
KyMgVE9ETzogQSBwbGFpbiBpbnRlZ2VyIGZyb20gcXVlcnlfdmVyc2lvbiBpcyB0b28gc2ltcGxl
OyBzaG91bGQgZ2l2ZSBzb21lCisjIGNhcGFiaWxpdGllcyB0b28/CisKKyMgVE9ETzogU2VydmVy
IHNob3VsZCBwcm9iYWJseSBjYXRjaCBleGNlcHRpb25zIHdpdGhpbiBpdHNlbGYgYW5kIHNlbmQg
dGhlbQorIyBiYWNrIGFjcm9zcyB0aGUgbmV0d29yay4gIChCdXQgc2hvdWxkbid0IGNhdGNoIEtl
eWJvYXJkSW50ZXJydXB0IGV0YykKKyMgQWxzbyBuZWVkcyB0byBzb21laG93IHJlcG9ydCBwcm90
b2NvbCBlcnJvcnMgbGlrZSBiYWQgcmVxdWVzdHMuICBOZWVkIHRvCisjIGNvbnNpZGVyIGhvdyB3
ZSdsbCBoYW5kbGUgZXJyb3IgcmVwb3J0aW5nLCBlLmcuIGlmIHdlIGdldCBoYWxmd2F5IHRocm91
Z2ggYQorIyBidWxrIHRyYW5zZmVyIGFuZCB0aGVuIHNvbWV0aGluZyBnb2VzIHdyb25nLgorCisj
IFRPRE86IE1ha2UgZWFjaCByZXF1ZXN0IGFuZCByZXNwb25zZSBzZWxmLXZhbGlkYXRhYmxlLCBl
LmcuIHdpdGggY2hlY2tzdW1zLgorIworIyBUT0RPOiBnZXQvcHV0IG9iamVjdHMgY291bGQgYmUg
Y2hhbmdlZCB0byBncmFkdWFsbHkgcmVhZCBiYWNrIHRoZSBkYXRhIGFzIGl0CisjIGNvbWVzIGFj
cm9zcyB0aGUgbmV0d29yaworIworIyBUT0RPOiBXaGF0IHNob3VsZCB0aGUgc2VydmVyIGRvIGlm
IGl0IGhpdHMgYW4gZXJyb3IgYW5kIGhhcyB0byB0ZXJtaW5hdGU/CisjCisjIFRPRE86IGlzIGl0
IHVzZWZ1bCB0byBhbGxvdyBtdWx0aXBsZSBjaHVua3MgaW4gdGhlIGJ1bGsgZGF0YT8KKyMKKyMg
VE9ETzogSWYgd2UgZ2V0IGFuIGV4Y2VwdGlvbiBkdXJpbmcgdHJhbnNtaXNzaW9uIG9mIGJ1bGsg
ZGF0YSB3ZSBjYW4ndCBqdXN0CisjIGVtaXQgdGhlIGV4Y2VwdGlvbiBiZWNhdXNlIGl0IHdvbid0
IGJlIHNlZW4uCisjICAgSm9obiBwcm9wb3NlczogIEkgdGhpbmsgaXQgd291bGQgYmUgd29ydGh3
aGlsZSB0byBoYXZlIGEgaGVhZGVyIG9uIGVhY2gKKyMgICBjaHVuaywgdGhhdCBpbmRpY2F0ZXMg
aXQgaXMgYW5vdGhlciBjaHVuay4gVGhlbiB5b3UgY2FuIHNlbmQgYW4gJ2Vycm9yJworIyAgIGNo
dW5rIGFzIGxvbmcgYXMgeW91IGZpbmlzaCB0aGUgcHJldmlvdXMgY2h1bmsuCisjCisjIFRPRE86
IENsb25lIG1ldGhvZCBvbiBUcmFuc3BvcnQ7IHNob3VsZCB3b3JrIHVwIHRvd2FyZHMgcGFyZW50
IGRpcmVjdG9yeTsKKyMgdW5jbGVhciBob3cgdGhpcyBzaG91bGQgYmUgc3RvcmVkIG9yIGNvbW11
bmljYXRlZCB0byB0aGUgc2VydmVyLi4uIG1heWJlCisjIGp1c3QgcGFzcyBpdCBvbiBhbGwgcmVs
ZXZhbnQgcmVxdWVzdHM/CisjCisjIFRPRE86IEJldHRlciBuYW1lIHRoYW4gY2xvbmUoKSBmb3Ig
Y2hhbmdpbmcgYmV0d2VlbiBkaXJlY3Rvcmllcy4gIEhvdyBhYm91dAorIyBvcGVuX2RpciBvciBj
aGFuZ2VfZGlyIG9yIGNoZGlyPworIworIyBUT0RPOiBJcyBpdCByZWFsbHkgZ29vZCB0byBoYXZl
IHRoZSBub3Rpb24gb2YgY3VycmVudCBkaXJlY3Rvcnkgd2l0aGluIHRoZQorIyBjb25uZWN0aW9u
PyAgUGVyaGFwcyBhbGwgVHJhbnNwb3J0cyBzaG91bGQgZmFjdG9yIG91dCBhIGNvbW1vbiBjb25u
ZWN0aW9uCisjIGZyb20gdGhlIHRoaW5nIHRoYXQgaGFzIHRoZSBkaXJlY3RvcnkgY29udGV4dD8K
KyMKKyMgVE9ETzogVGhlIHNlcnZlciB0aGF0IG1hbmFnZXMgYSBjb25uZWN0aW9uIHNob3VsZCBi
ZSBxdWl0ZSBzbWFsbCBhbmQgcmV0YWluCisjIG1pbmltdW0gc3RhdGUgYmVjYXVzZSBlYWNoIG9m
IHRoZSByZXF1ZXN0cyBhcmUgc3VwcG9zZWQgdG8gYmUgc3RhdGVsZXNzLgorIyBUaGVuIHdlIGNh
biB3cml0ZSBhbm90aGVyIGltcGxlbWVudGF0aW9uIHRoYXQgbWFwcyB0byBodHRwLgorIworIyBU
T0RPOiBXaGF0IHRvIGRvIHdoZW4gYSBjbGllbnQgY29ubmVjdGlvbiBpcyBnYXJiYWdlIGNvbGxl
Y3RlZD8gIE1heWJlIGp1c3QKKyMgYWJydXB0bHkgZHJvcCB0aGUgY29ubmVjdGlvbj8KKyMKKyMg
VE9ETzogU2VydmVyIGluIHNvbWUgY2FzZXMgd2lsbCBuZWVkIHRvIHJlc3RyaWN0IGFjY2VzcyB0
byBmaWxlcyBvdXRzaWRlIG9mCisjIGEgcGFydGljdWxhciByb290IGRpcmVjdG9yeS4gIExvY2Fs
VHJhbnNwb3J0IGRvZXNuJ3QgZG8gYW55dGhpbmcgdG8gc3RvcCB5b3UKKyMgYXNjZW5kaW5nIGFi
b3ZlIHRoZSBiYXNlIGRpcmVjdG9yeSwgc28gd2UgbmVlZCB0byBwcmV2ZW50IHBhdGhzCisjIGNv
bnRhaW5pbmcgJy4uJyBpbiBlaXRoZXIgdGhlIHNlcnZlciBvciB0cmFuc3BvcnQgbGF5ZXJzLiAg
KEFsc28gbmVlZCB0bworIyBjb25zaWRlciB3aGF0IGhhcHBlbnMgaWYgc29tZW9uZSBjcmVhdGVz
IGEgc3ltbGluayBwb2ludGluZyBvdXRzaWRlIHRoZSAKKyMgZGlyZWN0b3J5IHRyZWUuLi4pCisj
CisjIFRPRE86IFNlcnZlciBzaG91bGQgcmViYXNlIGFic29sdXRlIHBhdGhzIGNvbWluZyBhY3Jv
c3MgdGhlIG5ldHdvcmsgdG8gcHV0CisjIHRoZW0gdW5kZXIgdGhlIHZpcnR1YWwgcm9vdCwgaWYg
b25lIGlzIGluIHVzZS4gIExvY2FsVHJhbnNwb3J0IGN1cnJlbnRseQorIyBkb2Vzbid0IGRvIHRo
YXQ7IGlmIHlvdSBnaXZlIGl0IGFuIGFic29sdXRlIHBhdGggaXQganVzdCB1c2VzIGl0LgorIyAK
KyMgWFhYOiBBcmd1bWVudHMgY2FuJ3QgY29udGFpbiBuZXdsaW5lcyBvciBhc2NpaTsgcG9zc2li
bHkgd2Ugc2hvdWxkIGUuZy4KKyMgdXJsZXNjYXBlIHRoZW0gaW5zdGVhZC4gIEluZGVlZCBwb3Nz
aWJseSB0aGlzIHNob3VsZCBqdXN0IGxpdGVyYWxseSBiZQorIyBodHRwLW92ZXItc3NoLgorIwor
IyBUT0RPOiBQcm9iYWJseSB3YW50IHNvbWUgd2F5IGZvciBzZXJ2ZXIgY29tbWFuZHMgdG8gZ3Jh
ZHVhbGx5IHByb2R1Y2UgYm9keQorIyBkYXRhIHJhdGhlciB0aGFuIHBhc3NpbmcgaXQgYXMgYSBz
dHJpbmc7IHRoZXkgY291bGQgcGVyaGFwcyBwYXNzIGFuCisjIGl0ZXJhdG9yLWxpa2UgY2FsbGJh
Y2sgdGhhdCB3aWxsIGdyYWR1YWxseSB5aWVsZCBkYXRhOyBpdCBwcm9iYWJseSBuZWVkcyBhCisj
IGNsb3NlKCkgbWV0aG9kIHRoYXQgd2lsbCBhbHdheXMgYmUgY2xvc2VkIHRvIGRvIGFueSBuZWNl
c3NhcnkgY2xlYW51cC4KKworCisjIFByb21vdGUgc29tZSBhdHRyaWJ1dGVzIGZyb20gc3VibW9k
dWxlcyBpbnRvIHRoaXMgbmFtZXNwYWNlCitmcm9tIGJ6cmxpYi5zbWFydC5yZXF1ZXN0IGltcG9y
dCBTbWFydFNlcnZlclJlcXVlc3RIYW5kbGVyCisKKwoK

=== added file bzrlib/smart/branch.py // file-id:branch.py-20061124031907-mzh3p
... la28r83r97f-1 // last-changed:robertc@lifelesswks.robertcollins.net-2007042
... 4122009-8bb4dede6a298d93 // encoding:base64
LS0tIC9kZXYvbnVsbAorKysgYnpybGliL3NtYXJ0L2JyYW5jaC5weQpAQCAtMCwwICsxLDE1OSBA
QAorIyBDb3B5cmlnaHQgKEMpIDIwMDYgQ2Fub25pY2FsIEx0ZAorIworIyBUaGlzIHByb2dyYW0g
aXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQor
IyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFz
IHB1Ymxpc2hlZCBieQorIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVy
c2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgorIyAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2
ZXJzaW9uLgorIworIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhh
dCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0
IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorIyBHTlUgR2VuZXJhbCBQdWJs
aWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorIworIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2
ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorIyBhbG9uZyB3aXRo
IHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorIyBGb3Vu
ZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAgMDIx
MTEtMTMwNyAgVVNBCisKKyIiIlNlcnZlci1zaWRlIGJyYW5jaCByZWxhdGVkIHJlcXVlc3QgaW1w
bG1lbnRhdGlvbnMuIiIiCisKKworZnJvbSBienJsaWIgaW1wb3J0IGVycm9ycworZnJvbSBienJs
aWIuYnpyZGlyIGltcG9ydCBCenJEaXIKK2Zyb20gYnpybGliLnNtYXJ0LnJlcXVlc3QgaW1wb3J0
ICgKKyAgICBGYWlsZWRTbWFydFNlcnZlclJlc3BvbnNlLAorICAgIFNtYXJ0U2VydmVyUmVxdWVz
dCwKKyAgICBTdWNjZXNzZnVsU21hcnRTZXJ2ZXJSZXNwb25zZSwKKyAgICApCisKKworY2xhc3Mg
U21hcnRTZXJ2ZXJCcmFuY2hSZXF1ZXN0KFNtYXJ0U2VydmVyUmVxdWVzdCk6CisgICAgIiIiQmFz
ZSBjbGFzcyBmb3IgaGFuZGxpbmcgY29tbW9uIGJyYW5jaCByZXF1ZXN0IGxvZ2ljLiIiIgorCisg
ICAgZGVmIGRvKHNlbGYsIHBhdGgsICphcmdzKToKKyAgICAgICAgIiIiRXhlY3V0ZSBhIHJlcXVl
c3QgZm9yIGEgYnJhbmNoIGF0IHBhdGguCisKKyAgICAgICAgSWYgdGhlIGJyYW5jaCBpcyBhIGJy
YW5jaCByZWZlcmVuY2UsIE5vdEJyYW5jaEVycm9yIGlzIHJhaXNlZC4KKyAgICAgICAgIiIiCisg
ICAgICAgIHRyYW5zcG9ydCA9IHNlbGYuX2JhY2tpbmdfdHJhbnNwb3J0LmNsb25lKHBhdGgpCisg
ICAgICAgIGJ6cmRpciA9IEJ6ckRpci5vcGVuX2Zyb21fdHJhbnNwb3J0KHRyYW5zcG9ydCkKKyAg
ICAgICAgaWYgYnpyZGlyLmdldF9icmFuY2hfcmVmZXJlbmNlKCkgaXMgbm90IE5vbmU6CisgICAg
ICAgICAgICByYWlzZSBlcnJvcnMuTm90QnJhbmNoRXJyb3IodHJhbnNwb3J0LmJhc2UpCisgICAg
ICAgIGJyYW5jaCA9IGJ6cmRpci5vcGVuX2JyYW5jaCgpCisgICAgICAgIHJldHVybiBzZWxmLmRv
X3dpdGhfYnJhbmNoKGJyYW5jaCwgKmFyZ3MpCisKKworY2xhc3MgU21hcnRTZXJ2ZXJMb2NrZWRC
cmFuY2hSZXF1ZXN0KFNtYXJ0U2VydmVyQnJhbmNoUmVxdWVzdCk6CisgICAgIiIiQmFzZSBjbGFz
cyBmb3IgaGFuZGxpbmcgY29tbW9uIGJyYW5jaCByZXF1ZXN0IGxvZ2ljIGZvciByZXF1ZXN0cyB0
aGF0CisgICAgbmVlZCBhIHdyaXRlIGxvY2suCisgICAgIiIiCisKKyAgICBkZWYgZG9fd2l0aF9i
cmFuY2goc2VsZiwgYnJhbmNoLCBicmFuY2hfdG9rZW4sIHJlcG9fdG9rZW4sICphcmdzKToKKyAg
ICAgICAgIiIiRXhlY3V0ZSBhIHJlcXVlc3QgZm9yIGEgYnJhbmNoLgorCisgICAgICAgIEEgd3Jp
dGUgbG9jayB3aWxsIGJlIGFjcXVpcmVkIHdpdGggdGhlIGdpdmVuIHRva2VucyBmb3IgdGhlIGJy
YW5jaCBhbmQKKyAgICAgICAgcmVwb3NpdG9yeSBsb2Nrcy4gIFRoZSBsb2NrIHdpbGwgYmUgcmVs
ZWFzZWQgb25jZSB0aGUgcmVxdWVzdCBpcworICAgICAgICBwcm9jZXNzZWQuICBUaGUgcGh5c2lj
YWwgbG9jayBzdGF0ZSB3b24ndCBiZSBjaGFuZ2VkLgorICAgICAgICAiIiIKKyAgICAgICAgIyBY
WFg6IHdyaXRlIGEgdGVzdCBmb3IgTG9ja0NvbnRlbnRpb24KKyAgICAgICAgYnJhbmNoLnJlcG9z
aXRvcnkubG9ja193cml0ZSh0b2tlbj1yZXBvX3Rva2VuKQorICAgICAgICB0cnk6CisgICAgICAg
ICAgICBicmFuY2gubG9ja193cml0ZSh0b2tlbj1icmFuY2hfdG9rZW4pCisgICAgICAgICAgICB0
cnk6CisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuZG9fd2l0aF9sb2NrZWRfYnJhbmNoKGJy
YW5jaCwgKmFyZ3MpCisgICAgICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgICAgIGJyYW5j
aC51bmxvY2soKQorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgYnJhbmNoLnJlcG9zaXRv
cnkudW5sb2NrKCkKKworCitjbGFzcyBTbWFydFNlcnZlckJyYW5jaEdldENvbmZpZ0ZpbGUoU21h
cnRTZXJ2ZXJCcmFuY2hSZXF1ZXN0KToKKyAgICAKKyAgICBkZWYgZG9fd2l0aF9icmFuY2goc2Vs
ZiwgYnJhbmNoKToKKyAgICAgICAgIiIiUmV0dXJuIHRoZSBjb250ZW50IG9mIGJyYW5jaC5jb250
cm9sX2ZpbGVzLmdldCgnYnJhbmNoLmNvbmYnKS4KKyAgICAgICAgCisgICAgICAgIFRoZSBib2R5
IGlzIG5vdCB1dGY4IGRlY29kZWQgLSBpdHMgdGhlIGxpdGVyYWwgYnl0ZXN0cmVhbSBmcm9tIGRp
c2suCisgICAgICAgICIiIgorICAgICAgICB0cnk6CisgICAgICAgICAgICBjb250ZW50ID0gYnJh
bmNoLmNvbnRyb2xfZmlsZXMuZ2V0KCdicmFuY2guY29uZicpLnJlYWQoKQorICAgICAgICBleGNl
cHQgZXJyb3JzLk5vU3VjaEZpbGU6CisgICAgICAgICAgICBjb250ZW50ID0gJycKKyAgICAgICAg
cmV0dXJuIFN1Y2Nlc3NmdWxTbWFydFNlcnZlclJlc3BvbnNlKCAoJ29rJywgKSwgY29udGVudCkK
KworCitjbGFzcyBTbWFydFNlcnZlclJlcXVlc3RSZXZpc2lvbkhpc3RvcnkoU21hcnRTZXJ2ZXJC
cmFuY2hSZXF1ZXN0KToKKworICAgIGRlZiBkb193aXRoX2JyYW5jaChzZWxmLCBicmFuY2gpOgor
ICAgICAgICAiIiJHZXQgdGhlIHJldmlzaW9uIGhpc3RvcnkgZm9yIHRoZSBicmFuY2guCisKKyAg
ICAgICAgVGhlIHJldmlzaW9uIGxpc3QgaXMgcmV0dXJuZWQgYXMgdGhlIGJvZHkgY29udGVudCwK
KyAgICAgICAgd2l0aCBlYWNoIHJldmlzaW9uIHV0ZjggZW5jb2RlZCBhbmQgXHgwMCBqb2luZWQu
CisgICAgICAgICIiIgorICAgICAgICByZXR1cm4gU3VjY2Vzc2Z1bFNtYXJ0U2VydmVyUmVzcG9u
c2UoCisgICAgICAgICAgICAoJ29rJywgKSwgKCdceDAwJy5qb2luKGJyYW5jaC5yZXZpc2lvbl9o
aXN0b3J5KCkpKSkKKworCitjbGFzcyBTbWFydFNlcnZlckJyYW5jaFJlcXVlc3RMYXN0UmV2aXNp
b25JbmZvKFNtYXJ0U2VydmVyQnJhbmNoUmVxdWVzdCk6CisgICAgCisgICAgZGVmIGRvX3dpdGhf
YnJhbmNoKHNlbGYsIGJyYW5jaCk6CisgICAgICAgICIiIlJldHVybiBicmFuY2gubGFzdF9yZXZp
c2lvbl9pbmZvKCkuCisgICAgICAgIAorICAgICAgICBUaGUgcmV2bm8gaXMgZW5jb2RlZCBpbiBk
ZWNpbWFsLCB0aGUgcmV2aXNpb25faWQgaXMgZW5jb2RlZCBhcyB1dGY4LgorICAgICAgICAiIiIK
KyAgICAgICAgcmV2bm8sIGxhc3RfcmV2aXNpb24gPSBicmFuY2gubGFzdF9yZXZpc2lvbl9pbmZv
KCkKKyAgICAgICAgcmV0dXJuIFN1Y2Nlc3NmdWxTbWFydFNlcnZlclJlc3BvbnNlKCgnb2snLCBz
dHIocmV2bm8pLCBsYXN0X3JldmlzaW9uKSkKKworCitjbGFzcyBTbWFydFNlcnZlckJyYW5jaFJl
cXVlc3RTZXRMYXN0UmV2aXNpb24oU21hcnRTZXJ2ZXJMb2NrZWRCcmFuY2hSZXF1ZXN0KToKKyAg
ICAKKyAgICBkZWYgZG9fd2l0aF9sb2NrZWRfYnJhbmNoKHNlbGYsIGJyYW5jaCwgbmV3X2xhc3Rf
cmV2aXNpb25faWQpOgorICAgICAgICBpZiBuZXdfbGFzdF9yZXZpc2lvbl9pZCA9PSAnbnVsbDon
OgorICAgICAgICAgICAgYnJhbmNoLnNldF9yZXZpc2lvbl9oaXN0b3J5KFtdKQorICAgICAgICBl
bHNlOgorICAgICAgICAgICAgaWYgbm90IGJyYW5jaC5yZXBvc2l0b3J5Lmhhc19yZXZpc2lvbihu
ZXdfbGFzdF9yZXZpc2lvbl9pZCk6CisgICAgICAgICAgICAgICAgcmV0dXJuIEZhaWxlZFNtYXJ0
U2VydmVyUmVzcG9uc2UoCisgICAgICAgICAgICAgICAgICAgICgnTm9TdWNoUmV2aXNpb24nLCBu
ZXdfbGFzdF9yZXZpc2lvbl9pZCkpCisgICAgICAgICAgICBicmFuY2guZ2VuZXJhdGVfcmV2aXNp
b25faGlzdG9yeShuZXdfbGFzdF9yZXZpc2lvbl9pZCkKKyAgICAgICAgcmV0dXJuIFN1Y2Nlc3Nm
dWxTbWFydFNlcnZlclJlc3BvbnNlKCgnb2snLCkpCisKKworY2xhc3MgU21hcnRTZXJ2ZXJCcmFu
Y2hSZXF1ZXN0TG9ja1dyaXRlKFNtYXJ0U2VydmVyQnJhbmNoUmVxdWVzdCk6CisgICAgCisgICAg
ZGVmIGRvX3dpdGhfYnJhbmNoKHNlbGYsIGJyYW5jaCwgYnJhbmNoX3Rva2VuPScnLCByZXBvX3Rv
a2VuPScnKToKKyAgICAgICAgaWYgYnJhbmNoX3Rva2VuID09ICcnOgorICAgICAgICAgICAgYnJh
bmNoX3Rva2VuID0gTm9uZQorICAgICAgICBpZiByZXBvX3Rva2VuID09ICcnOgorICAgICAgICAg
ICAgcmVwb190b2tlbiA9IE5vbmUKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgcmVwb190b2tl
biA9IGJyYW5jaC5yZXBvc2l0b3J5LmxvY2tfd3JpdGUodG9rZW49cmVwb190b2tlbikKKyAgICAg
ICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBicmFuY2hfdG9rZW4gPSBicmFuY2gubG9ja193
cml0ZSh0b2tlbj1icmFuY2hfdG9rZW4pCisgICAgICAgICAgICBmaW5hbGx5OgorICAgICAgICAg
ICAgICAgIGJyYW5jaC5yZXBvc2l0b3J5LnVubG9jaygpCisgICAgICAgIGV4Y2VwdCBlcnJvcnMu
TG9ja0NvbnRlbnRpb246CisgICAgICAgICAgICByZXR1cm4gRmFpbGVkU21hcnRTZXJ2ZXJSZXNw
b25zZSgoJ0xvY2tDb250ZW50aW9uJywpKQorICAgICAgICBleGNlcHQgZXJyb3JzLlRva2VuTWlz
bWF0Y2g6CisgICAgICAgICAgICByZXR1cm4gRmFpbGVkU21hcnRTZXJ2ZXJSZXNwb25zZSgoJ1Rv
a2VuTWlzbWF0Y2gnLCkpCisgICAgICAgIGV4Y2VwdCBlcnJvcnMuVW5sb2NrYWJsZVRyYW5zcG9y
dDoKKyAgICAgICAgICAgIHJldHVybiBGYWlsZWRTbWFydFNlcnZlclJlc3BvbnNlKCgnVW5sb2Nr
YWJsZVRyYW5zcG9ydCcsKSkKKyAgICAgICAgYnJhbmNoLnJlcG9zaXRvcnkubGVhdmVfbG9ja19p
bl9wbGFjZSgpCisgICAgICAgIGJyYW5jaC5sZWF2ZV9sb2NrX2luX3BsYWNlKCkKKyAgICAgICAg
YnJhbmNoLnVubG9jaygpCisgICAgICAgIHJldHVybiBTdWNjZXNzZnVsU21hcnRTZXJ2ZXJSZXNw
b25zZSgoJ29rJywgYnJhbmNoX3Rva2VuLCByZXBvX3Rva2VuKSkKKworCitjbGFzcyBTbWFydFNl
cnZlckJyYW5jaFJlcXVlc3RVbmxvY2soU21hcnRTZXJ2ZXJCcmFuY2hSZXF1ZXN0KToKKworICAg
IGRlZiBkb193aXRoX2JyYW5jaChzZWxmLCBicmFuY2gsIGJyYW5jaF90b2tlbiwgcmVwb190b2tl
bik6CisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGJyYW5jaC5yZXBvc2l0b3J5LmxvY2tfd3Jp
dGUodG9rZW49cmVwb190b2tlbikKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBi
cmFuY2gubG9ja193cml0ZSh0b2tlbj1icmFuY2hfdG9rZW4pCisgICAgICAgICAgICBmaW5hbGx5
OgorICAgICAgICAgICAgICAgIGJyYW5jaC5yZXBvc2l0b3J5LnVubG9jaygpCisgICAgICAgIGV4
Y2VwdCBlcnJvcnMuVG9rZW5NaXNtYXRjaDoKKyAgICAgICAgICAgIHJldHVybiBGYWlsZWRTbWFy
dFNlcnZlclJlc3BvbnNlKCgnVG9rZW5NaXNtYXRjaCcsKSkKKyAgICAgICAgYnJhbmNoLnJlcG9z
aXRvcnkuZG9udF9sZWF2ZV9sb2NrX2luX3BsYWNlKCkKKyAgICAgICAgYnJhbmNoLmRvbnRfbGVh
dmVfbG9ja19pbl9wbGFjZSgpCisgICAgICAgIGJyYW5jaC51bmxvY2soKQorICAgICAgICByZXR1
cm4gU3VjY2Vzc2Z1bFNtYXJ0U2VydmVyUmVzcG9uc2UoKCdvaycsKSkKKyAgICAgICAgCgo=

=== added file bzrlib/smart/bzrdir.py // file-id:bzrdir.py-20061122024551-ol0l0
... o0oofsu9b3t-1 // last-changed:robertc@lifelesswks.robertcollins.net-2007042
... 4122009-8bb4dede6a298d93 // encoding:base64
LS0tIC9kZXYvbnVsbAorKysgYnpybGliL3NtYXJ0L2J6cmRpci5weQpAQCAtMCwwICsxLDEwOSBA
QAorIyBDb3B5cmlnaHQgKEMpIDIwMDYgQ2Fub25pY2FsIEx0ZAorIworIyBUaGlzIHByb2dyYW0g
aXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQor
IyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFz
IHB1Ymxpc2hlZCBieQorIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVy
c2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgorIyAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2
ZXJzaW9uLgorIworIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhh
dCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0
IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorIyBHTlUgR2VuZXJhbCBQdWJs
aWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorIworIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2
ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorIyBhbG9uZyB3aXRo
IHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorIyBGb3Vu
ZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAgMDIx
MTEtMTMwNyAgVVNBCisKKyIiIlNlcnZlci1zaWRlIGJ6cmRpciByZWxhdGVkIHJlcXVlc3QgaW1w
bG1lbnRhdGlvbnMuIiIiCisKKworZnJvbSBienJsaWIgaW1wb3J0IGVycm9ycworZnJvbSBienJs
aWIuYnpyZGlyIGltcG9ydCBCenJEaXIsIEJ6ckRpckZvcm1hdAorZnJvbSBienJsaWIuc21hcnQu
cmVxdWVzdCBpbXBvcnQgKAorICAgIEZhaWxlZFNtYXJ0U2VydmVyUmVzcG9uc2UsCisgICAgU21h
cnRTZXJ2ZXJSZXF1ZXN0LAorICAgIFN1Y2Nlc3NmdWxTbWFydFNlcnZlclJlc3BvbnNlLAorICAg
ICkKKworCitjbGFzcyBTbWFydFNlcnZlclJlcXVlc3RPcGVuQnpyRGlyKFNtYXJ0U2VydmVyUmVx
dWVzdCk6CisKKyAgICBkZWYgZG8oc2VsZiwgcGF0aCk6CisgICAgICAgIGZyb20gYnpybGliLmJ6
cmRpciBpbXBvcnQgQnpyRGlyRm9ybWF0CisgICAgICAgIHQgPSBzZWxmLl9iYWNraW5nX3RyYW5z
cG9ydC5jbG9uZShwYXRoKQorICAgICAgICBkZWZhdWx0X2Zvcm1hdCA9IEJ6ckRpckZvcm1hdC5n
ZXRfZGVmYXVsdF9mb3JtYXQoKQorICAgICAgICByZWFsX2J6cmRpciA9IGRlZmF1bHRfZm9ybWF0
Lm9wZW4odCwgX2ZvdW5kPVRydWUpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHJlYWxfYnpy
ZGlyLl9mb3JtYXQucHJvYmVfdHJhbnNwb3J0KHQpCisgICAgICAgIGV4Y2VwdCAoZXJyb3JzLk5v
dEJyYW5jaEVycm9yLCBlcnJvcnMuVW5rbm93bkZvcm1hdEVycm9yKToKKyAgICAgICAgICAgIGFu
c3dlciA9ICdubycKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGFuc3dlciA9ICd5ZXMnCisg
ICAgICAgIHJldHVybiBTdWNjZXNzZnVsU21hcnRTZXJ2ZXJSZXNwb25zZSgoYW5zd2VyLCkpCisK
KworY2xhc3MgU21hcnRTZXJ2ZXJSZXF1ZXN0RmluZFJlcG9zaXRvcnkoU21hcnRTZXJ2ZXJSZXF1
ZXN0KToKKworICAgIGRlZiBkbyhzZWxmLCBwYXRoKToKKyAgICAgICAgIiIidHJ5IHRvIGZpbmQg
YSByZXBvc2l0b3J5IGZyb20gcGF0aCB1cHdhcmRzCisgICAgICAgIAorICAgICAgICBUaGlzIG9w
ZXJhdGVzIHByZWNpc2VseSBsaWtlICdienJkaXIuZmluZF9yZXBvc2l0b3J5Jy4KKyAgICAgICAg
CisgICAgICAgIElmIGEgYnpyZGlyIGlzIG5vdCBwcmVzZW50LCBhbiBleGNlcHRpb24gaXMgcHJv
cG9nYXRlZAorICAgICAgICByYXRoZXIgdGhhbiAnbm8gYnJhbmNoJyBiZWNhdXNlIHRoZXNlIGFy
ZSBkaWZmZXJlbnQgY29uZGl0aW9ucy4KKworICAgICAgICA6cmV0dXJuOiBub3JlcG9zaXRvcnkg
b3Igb2ssIHJlbHBhdGguCisgICAgICAgICIiIgorICAgICAgICBienJkaXIgPSBCenJEaXIub3Bl
bl9mcm9tX3RyYW5zcG9ydChzZWxmLl9iYWNraW5nX3RyYW5zcG9ydC5jbG9uZShwYXRoKSkKKyAg
ICAgICAgdHJ5OgorICAgICAgICAgICAgcmVwb3NpdG9yeSA9IGJ6cmRpci5maW5kX3JlcG9zaXRv
cnkoKQorICAgICAgICAgICAgIyB0aGUgcmVscGF0aCBvZiB0aGUgYnpyZGlyIGluIHRoZSBmb3Vu
ZCByZXBvc2l0b3J5IGdpdmVzIHVzIHRoZSAKKyAgICAgICAgICAgICMgcGF0aCBzZWdtZW50cyB0
byBwb3Atb3V0LgorICAgICAgICAgICAgcmVscGF0aCA9IHJlcG9zaXRvcnkuYnpyZGlyLnJvb3Rf
dHJhbnNwb3J0LnJlbHBhdGgoYnpyZGlyLnJvb3RfdHJhbnNwb3J0LmJhc2UpCisgICAgICAgICAg
ICBpZiBsZW4ocmVscGF0aCk6CisgICAgICAgICAgICAgICAgc2VnbWVudHMgPSBbJy4uJ10gKiBs
ZW4ocmVscGF0aC5zcGxpdCgnLycpKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAg
ICBzZWdtZW50cyA9IFtdCisgICAgICAgICAgICBpZiByZXBvc2l0b3J5LnN1cHBvcnRzX3JpY2hf
cm9vdCgpOgorICAgICAgICAgICAgICAgIHJpY2hfcm9vdCA9ICd5ZXMnCisgICAgICAgICAgICBl
bHNlOgorICAgICAgICAgICAgICAgIHJpY2hfcm9vdCA9ICdubycKKyAgICAgICAgICAgIGlmIHJl
cG9zaXRvcnkuX2Zvcm1hdC5zdXBwb3J0c190cmVlX3JlZmVyZW5jZToKKyAgICAgICAgICAgICAg
ICB0cmVlX3JlZiA9ICd5ZXMnCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHRy
ZWVfcmVmID0gJ25vJworICAgICAgICAgICAgcmV0dXJuIFN1Y2Nlc3NmdWxTbWFydFNlcnZlclJl
c3BvbnNlKCgnb2snLCAnLycuam9pbihzZWdtZW50cyksIHJpY2hfcm9vdCwgdHJlZV9yZWYpKQor
ICAgICAgICBleGNlcHQgZXJyb3JzLk5vUmVwb3NpdG9yeVByZXNlbnQ6CisgICAgICAgICAgICBy
ZXR1cm4gRmFpbGVkU21hcnRTZXJ2ZXJSZXNwb25zZSgoJ25vcmVwb3NpdG9yeScsICkpCisKKwor
Y2xhc3MgU21hcnRTZXJ2ZXJSZXF1ZXN0SW5pdGlhbGl6ZUJ6ckRpcihTbWFydFNlcnZlclJlcXVl
c3QpOgorCisgICAgZGVmIGRvKHNlbGYsIHBhdGgpOgorICAgICAgICAiIiJJbml0aWFsaXplIGEg
YnpyZGlyIGF0IHBhdGguCisKKyAgICAgICAgVGhlIGRlZmF1bHQgZm9ybWF0IG9mIHRoZSBzZXJ2
ZXIgaXMgdXNlZC4KKyAgICAgICAgOnJldHVybjogU21hcnRTZXJ2ZXJSZXNwb25zZSgoJ29rJywg
KSkKKyAgICAgICAgIiIiCisgICAgICAgIHRhcmdldF90cmFuc3BvcnQgPSBzZWxmLl9iYWNraW5n
X3RyYW5zcG9ydC5jbG9uZShwYXRoKQorICAgICAgICBCenJEaXJGb3JtYXQuZ2V0X2RlZmF1bHRf
Zm9ybWF0KCkuaW5pdGlhbGl6ZV9vbl90cmFuc3BvcnQodGFyZ2V0X3RyYW5zcG9ydCkKKyAgICAg
ICAgcmV0dXJuIFN1Y2Nlc3NmdWxTbWFydFNlcnZlclJlc3BvbnNlKCgnb2snLCApKQorCisKK2Ns
YXNzIFNtYXJ0U2VydmVyUmVxdWVzdE9wZW5CcmFuY2goU21hcnRTZXJ2ZXJSZXF1ZXN0KToKKwor
ICAgIGRlZiBkbyhzZWxmLCBwYXRoKToKKyAgICAgICAgIiIidHJ5IHRvIG9wZW4gYSBicmFuY2gg
YXQgcGF0aCBhbmQgcmV0dXJuIG9rL25vYnJhbmNoLgorICAgICAgICAKKyAgICAgICAgSWYgYSBi
enJkaXIgaXMgbm90IHByZXNlbnQsIGFuIGV4Y2VwdGlvbiBpcyBwcm9wb2dhdGVkCisgICAgICAg
IHJhdGhlciB0aGFuICdubyBicmFuY2gnIGJlY2F1c2UgdGhlc2UgYXJlIGRpZmZlcmVudCBjb25k
aXRpb25zLgorICAgICAgICAiIiIKKyAgICAgICAgYnpyZGlyID0gQnpyRGlyLm9wZW5fZnJvbV90
cmFuc3BvcnQoc2VsZi5fYmFja2luZ190cmFuc3BvcnQuY2xvbmUocGF0aCkpCisgICAgICAgIHRy
eToKKyAgICAgICAgICAgIHJlZmVyZW5jZV91cmwgPSBienJkaXIuZ2V0X2JyYW5jaF9yZWZlcmVu
Y2UoKQorICAgICAgICAgICAgaWYgcmVmZXJlbmNlX3VybCBpcyBOb25lOgorICAgICAgICAgICAg
ICAgIHJldHVybiBTdWNjZXNzZnVsU21hcnRTZXJ2ZXJSZXNwb25zZSgoJ29rJywgJycpKQorICAg
ICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICByZXR1cm4gU3VjY2Vzc2Z1bFNtYXJ0U2Vy
dmVyUmVzcG9uc2UoKCdvaycsIHJlZmVyZW5jZV91cmwpKQorICAgICAgICBleGNlcHQgZXJyb3Jz
Lk5vdEJyYW5jaEVycm9yOgorICAgICAgICAgICAgcmV0dXJuIEZhaWxlZFNtYXJ0U2VydmVyUmVz
cG9uc2UoKCdub2JyYW5jaCcsICkpCgo=

=== added file bzrlib/smart/client.py // file-id:client.py-20061116014825-2k6ad
... a6xgulslami-1 // last-changed:mbp@sourcefrog.net-20070423050344-7r4w0fvmjbe
... vcn0r // encoding:base64
LS0tIC9kZXYvbnVsbAorKysgYnpybGliL3NtYXJ0L2NsaWVudC5weQpAQCAtMCwwICsxLDY4IEBA
CisjIENvcHlyaWdodCAoQykgMjAwNiBDYW5vbmljYWwgTHRkCisjCisjIFRoaXMgcHJvZ3JhbSBp
cyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Cisj
IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMg
cHVibGlzaGVkIGJ5CisjIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJz
aW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCisjIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZl
cnNpb24uCisjCisjIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0
IGl0IHdpbGwgYmUgdXNlZnVsLAorIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQg
ZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisjIEdOVSBHZW5lcmFsIFB1Ymxp
YyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisjCisjIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZl
ZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisjIGFsb25nIHdpdGgg
dGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisjIEZvdW5k
YXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BICAwMjEx
MS0xMzA3ICBVU0EKKworZnJvbSB1cmxwYXJzZSBpbXBvcnQgdXJscGFyc2UKKworZnJvbSBienJs
aWIuc21hcnQgaW1wb3J0IHByb3RvY29sCitmcm9tIGJ6cmxpYi51cmx1dGlscyBpbXBvcnQgdW5l
c2NhcGUKKworCitjbGFzcyBfU21hcnRDbGllbnQob2JqZWN0KToKKworICAgIGRlZiBfX2luaXRf
XyhzZWxmLCBtZWRpdW0pOgorICAgICAgICBzZWxmLl9tZWRpdW0gPSBtZWRpdW0KKworICAgIGRl
ZiBjYWxsKHNlbGYsIG1ldGhvZCwgKmFyZ3MpOgorICAgICAgICAiIiJDYWxsIGEgbWV0aG9kIG9u
IHRoZSByZW1vdGUgc2VydmVyLiIiIgorICAgICAgICByZXN1bHQsIHByb3RvY29sID0gc2VsZi5j
YWxsX2V4cGVjdGluZ19ib2R5KG1ldGhvZCwgKmFyZ3MpCisgICAgICAgIHByb3RvY29sLmNhbmNl
bF9yZWFkX2JvZHkoKQorICAgICAgICByZXR1cm4gcmVzdWx0CisKKyAgICBkZWYgY2FsbF9leHBl
Y3RpbmdfYm9keShzZWxmLCBtZXRob2QsICphcmdzKToKKyAgICAgICAgIiIiQ2FsbCBhIG1ldGhv
ZCBhbmQgcmV0dXJuIHRoZSByZXN1bHQgYW5kIHRoZSBwcm90b2NvbCBvYmplY3QuCisgICAgICAg
IAorICAgICAgICBUaGUgYm9keSBjYW4gYmUgcmVhZCBsaWtlIHNvOjoKKworICAgICAgICAgICAg
cmVzdWx0LCBzbWFydF9wcm90b2NvbCA9IHNtYXJ0X2NsaWVudC5jYWxsX2V4cGVjdGluZ19ib2R5
KC4uLikKKyAgICAgICAgICAgIGJvZHkgPSBzbWFydF9wcm90b2NvbC5yZWFkX2JvZHlfYnl0ZXMo
KQorICAgICAgICAiIiIKKyAgICAgICAgcmVxdWVzdCA9IHNlbGYuX21lZGl1bS5nZXRfcmVxdWVz
dCgpCisgICAgICAgIHNtYXJ0X3Byb3RvY29sID0gcHJvdG9jb2wuU21hcnRDbGllbnRSZXF1ZXN0
UHJvdG9jb2xPbmUocmVxdWVzdCkKKyAgICAgICAgc21hcnRfcHJvdG9jb2wuY2FsbChtZXRob2Qs
ICphcmdzKQorICAgICAgICByZXR1cm4gc21hcnRfcHJvdG9jb2wucmVhZF9yZXNwb25zZV90dXBs
ZShleHBlY3RfYm9keT1UcnVlKSwgc21hcnRfcHJvdG9jb2wKKworICAgIGRlZiBjYWxsX3dpdGhf
Ym9keV9ieXRlcyhzZWxmLCBtZXRob2QsIGFyZ3MsIGJvZHkpOgorICAgICAgICAiIiJDYWxsIGEg
bWV0aG9kIG9uIHRoZSByZW1vdGUgc2VydmVyIHdpdGggYm9keSBieXRlcy4iIiIKKyAgICAgICAg
aWYgdHlwZShtZXRob2QpIGlzIG5vdCBzdHI6CisgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3Io
J21ldGhvZCBtdXN0IGJlIGEgYnl0ZSBzdHJpbmcsIG5vdCAlcicgJSAobWV0aG9kLCkpCisgICAg
ICAgIGZvciBhcmcgaW4gYXJnczoKKyAgICAgICAgICAgIGlmIHR5cGUoYXJnKSBpcyBub3Qgc3Ry
OgorICAgICAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcignYXJncyBtdXN0IGJlIGJ5dGUgc3Ry
aW5ncywgbm90ICVyJyAlIChhcmdzLCkpCisgICAgICAgIGlmIHR5cGUoYm9keSkgaXMgbm90IHN0
cjoKKyAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcignYm9keSBtdXN0IGJlIGJ5dGUgc3RyaW5n
LCBub3QgJXInICUgKGJvZHksKSkKKyAgICAgICAgcmVxdWVzdCA9IHNlbGYuX21lZGl1bS5nZXRf
cmVxdWVzdCgpCisgICAgICAgIHNtYXJ0X3Byb3RvY29sID0gcHJvdG9jb2wuU21hcnRDbGllbnRS
ZXF1ZXN0UHJvdG9jb2xPbmUocmVxdWVzdCkKKyAgICAgICAgc21hcnRfcHJvdG9jb2wuY2FsbF93
aXRoX2JvZHlfYnl0ZXMoKG1ldGhvZCwgKSArIGFyZ3MsIGJvZHkpCisgICAgICAgIHJldHVybiBz
bWFydF9wcm90b2NvbC5yZWFkX3Jlc3BvbnNlX3R1cGxlKCkKKworICAgIGRlZiByZW1vdGVfcGF0
aF9mcm9tX3RyYW5zcG9ydChzZWxmLCB0cmFuc3BvcnQpOgorICAgICAgICAiIiJDb252ZXJ0IHRy
YW5zcG9ydCBpbnRvIGEgcGF0aCBzdWl0YWJsZSBmb3IgdXNpbmcgaW4gYSByZXF1ZXN0LgorICAg
ICAgICAKKyAgICAgICAgTm90ZSB0aGF0IHRoZSByZXN1bHRpbmcgcmVtb3RlIHBhdGggZG9lc24n
dCBlbmNvZGUgdGhlIGhvc3QgbmFtZSBvcgorICAgICAgICBhbnl0aGluZyBidXQgcGF0aCwgc28g
aXQgaXMgb25seSBzYWZlIHRvIHVzZSBpdCBpbiByZXF1ZXN0cyBzZW50IG92ZXIKKyAgICAgICAg
dGhlIG1lZGl1bSBmcm9tIHRoZSBtYXRjaGluZyB0cmFuc3BvcnQuCisgICAgICAgICIiIgorICAg
ICAgICByZXR1cm4gdW5lc2NhcGUodXJscGFyc2UodHJhbnNwb3J0LmJhc2UpWzJdKS5lbmNvZGUo
J3V0ZjgnKQoK

=== added file bzrlib/smart/medium.py // file-id:medium.py-20061103051856-rgu2h
... uy59fkz902q-1 // last-changed:andrew.bennetts@canonical.com-20070425054002-
... 08sj7lxphtpb6ewm // encoding:base64
LS0tIC9kZXYvbnVsbAorKysgYnpybGliL3NtYXJ0L21lZGl1bS5weQpAQCAtMCwwICsxLDYwMCBA
QAorIyBDb3B5cmlnaHQgKEMpIDIwMDYgQ2Fub25pY2FsIEx0ZAorIworIyBUaGlzIHByb2dyYW0g
aXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQor
IyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFz
IHB1Ymxpc2hlZCBieQorIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVy
c2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgorIyAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2
ZXJzaW9uLgorIworIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhh
dCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0
IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorIyBHTlUgR2VuZXJhbCBQdWJs
aWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorIworIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2
ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorIyBhbG9uZyB3aXRo
IHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorIyBGb3Vu
ZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAgMDIx
MTEtMTMwNyAgVVNBCisKKyIiIlRoZSAnbWVkaXVtJyBsYXllciBmb3IgdGhlIHNtYXJ0IHNlcnZl
cnMgYW5kIGNsaWVudHMuCisKKyJNZWRpdW0iIGhlcmUgaXMgdGhlIG5vdW4gbWVhbmluZyAiYSBt
ZWFucyBvZiB0cmFuc21pc3Npb24iLCBub3QgdGhlIGFkamVjdGl2ZQorZm9yICJ0aGUgcXVhbGl0
eSBiZXR3ZWVuIGJpZyBhbmQgc21hbGwuIgorCitNZWRpYSBjYXJyeSB0aGUgYnl0ZXMgb2YgdGhl
IHJlcXVlc3RzIHNvbWVob3cgKGUuZy4gdmlhIFRDUCwgd3JhcHBlZCBpbiBIVFRQLCBvcgorb3Zl
ciBTU0gpLCBhbmQgcGFzcyB0aGVtIHRvIGFuZCBmcm9tIHRoZSBwcm90b2NvbCBsb2dpYy4gIFNl
ZSB0aGUgb3ZlcnZpZXcgaW4KK2J6cmxpYi90cmFuc3BvcnQvc21hcnQvX19pbml0X18ucHkuCisi
IiIKKworaW1wb3J0IG9zCitpbXBvcnQgc29ja2V0CitpbXBvcnQgc3lzCisKK2Zyb20gYnpybGli
IGltcG9ydCBlcnJvcnMKK2Zyb20gYnpybGliLnNtYXJ0LnByb3RvY29sIGltcG9ydCAoCisgICAg
UkVRVUVTVF9WRVJTSU9OX1RXTywKKyAgICBTbWFydFNlcnZlclJlcXVlc3RQcm90b2NvbE9uZSwK
KyAgICBTbWFydFNlcnZlclJlcXVlc3RQcm90b2NvbFR3bywKKyAgICApCisKK3RyeToKKyAgICBm
cm9tIGJ6cmxpYi50cmFuc3BvcnQgaW1wb3J0IHNzaAorZXhjZXB0IGVycm9ycy5QYXJhbWlrb05v
dFByZXNlbnQ6CisgICAgIyBubyBwYXJhbWlrby4gIFNtYXJ0U1NIQ2xpZW50TWVkaXVtIHdpbGwg
YnJlYWsuCisgICAgcGFzcworCisKK2NsYXNzIFNtYXJ0U2VydmVyU3RyZWFtTWVkaXVtKG9iamVj
dCk6CisgICAgIiIiSGFuZGxlcyBzbWFydCBjb21tYW5kcyBjb21pbmcgb3ZlciBhIHN0cmVhbS4K
KworICAgIFRoZSBzdHJlYW0gbWF5IGJlIGEgcGlwZSBjb25uZWN0ZWQgdG8gc3NoZCwgb3IgYSB0
Y3Agc29ja2V0LCBvciBhbgorICAgIGluLXByb2Nlc3MgZmlmbyBmb3IgdGVzdGluZy4KKworICAg
IE9uZSBpbnN0YW5jZSBpcyBjcmVhdGVkIGZvciBlYWNoIGNvbm5lY3RlZCBjbGllbnQ7IGl0IGNh
biBzZXJ2ZSBtdWx0aXBsZQorICAgIHJlcXVlc3RzIGluIHRoZSBsaWZldGltZSBvZiB0aGUgY29u
bmVjdGlvbi4KKworICAgIFRoZSBzZXJ2ZXIgcGFzc2VzIHJlcXVlc3RzIHRocm91Z2ggdG8gYW4g
dW5kZXJseWluZyBiYWNraW5nIHRyYW5zcG9ydCwgCisgICAgd2hpY2ggd2lsbCB0eXBpY2FsbHkg
YmUgYSBMb2NhbFRyYW5zcG9ydCBsb29raW5nIGF0IHRoZSBzZXJ2ZXIncyBmaWxlc3lzdGVtLgor
ICAgICIiIgorCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGJhY2tpbmdfdHJhbnNwb3J0KToKKyAg
ICAgICAgIiIiQ29uc3RydWN0IG5ldyBzZXJ2ZXIuCisKKyAgICAgICAgOnBhcmFtIGJhY2tpbmdf
dHJhbnNwb3J0OiBUcmFuc3BvcnQgZm9yIHRoZSBkaXJlY3Rvcnkgc2VydmVkLgorICAgICAgICAi
IiIKKyAgICAgICAgIyBiYWNraW5nX3RyYW5zcG9ydCBjb3VsZCBiZSBwYXNzZWQgdG8gc2VydmUg
aW5zdGVhZCBvZiBfX2luaXRfXworICAgICAgICBzZWxmLmJhY2tpbmdfdHJhbnNwb3J0ID0gYmFj
a2luZ190cmFuc3BvcnQKKyAgICAgICAgc2VsZi5maW5pc2hlZCA9IEZhbHNlCisKKyAgICBkZWYg
c2VydmUoc2VsZik6CisgICAgICAgICIiIlNlcnZlIHJlcXVlc3RzIHVudGlsIHRoZSBjbGllbnQg
ZGlzY29ubmVjdHMuIiIiCisgICAgICAgICMgS2VlcCBhIHJlZmVyZW5jZSB0byBzdGRlcnIgYmVj
YXVzZSB0aGUgc3lzIG1vZHVsZSdzIGdsb2JhbHMgZ2V0IHNldCB0bworICAgICAgICAjIE5vbmUg
ZHVyaW5nIGludGVycHJldGVyIHNodXRkb3duLgorICAgICAgICBmcm9tIHN5cyBpbXBvcnQgc3Rk
ZXJyCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHdoaWxlIG5vdCBzZWxmLmZpbmlzaGVkOgor
ICAgICAgICAgICAgICAgIHNlcnZlcl9wcm90b2NvbCA9IHNlbGYuX2J1aWxkX3Byb3RvY29sKCkK
KyAgICAgICAgICAgICAgICBzZWxmLl9zZXJ2ZV9vbmVfcmVxdWVzdChzZXJ2ZXJfcHJvdG9jb2wp
CisgICAgICAgIGV4Y2VwdCBFeGNlcHRpb24sIGU6CisgICAgICAgICAgICBzdGRlcnIud3JpdGUo
IiVzIHRlcm1pbmF0aW5nIG9uIGV4Y2VwdGlvbiAlc1xuIiAlIChzZWxmLCBlKSkKKyAgICAgICAg
ICAgIHJhaXNlCisKKyAgICBkZWYgX2J1aWxkX3Byb3RvY29sKHNlbGYpOgorICAgICAgICAiIiJJ
ZGVudGlmaWVzIHRoZSB2ZXJzaW9uIG9mIHRoZSBpbmNvbWluZyByZXF1ZXN0LCBhbmQgcmV0dXJu
cyBhbgorICAgICAgICBhIHByb3RvY29sIG9iamVjdCB0aGF0IGNhbiBpbnRlcnByZXQgaXQuCisK
KyAgICAgICAgSWYgbW9yZSBieXRlcyB0aGFuIHRoZSB2ZXJzaW9uIHByZWZpeCBvZiB0aGUgcmVx
dWVzdCBhcmUgcmVhZCwgdGhleSB3aWxsCisgICAgICAgIGJlIGZlZCBpbnRvIHRoZSBwcm90b2Nv
bCBiZWZvcmUgaXQgaXMgcmV0dXJuZWQuCisKKyAgICAgICAgOnJldHVybnM6IGEgU21hcnRTZXJ2
ZXJSZXF1ZXN0UHJvdG9jb2wuCisgICAgICAgICIiIgorICAgICAgICAjIElkZW50aWZ5IHRoZSBw
cm90b2NvbCB2ZXJzaW9uLgorICAgICAgICBieXRlcyA9IHNlbGYuX2dldF9saW5lKCkKKyAgICAg
ICAgaWYgYnl0ZXMuc3RhcnRzd2l0aChSRVFVRVNUX1ZFUlNJT05fVFdPKToKKyAgICAgICAgICAg
IHByb3RvY29sX2NsYXNzID0gU21hcnRTZXJ2ZXJSZXF1ZXN0UHJvdG9jb2xUd28KKyAgICAgICAg
ICAgIGJ5dGVzID0gYnl0ZXNbbGVuKFJFUVVFU1RfVkVSU0lPTl9UV08pOl0KKyAgICAgICAgZWxz
ZToKKyAgICAgICAgICAgIHByb3RvY29sX2NsYXNzID0gU21hcnRTZXJ2ZXJSZXF1ZXN0UHJvdG9j
b2xPbmUKKyAgICAgICAgcHJvdG9jb2wgPSBwcm90b2NvbF9jbGFzcyhzZWxmLmJhY2tpbmdfdHJh
bnNwb3J0LCBzZWxmLl93cml0ZV9vdXQpCisgICAgICAgIHByb3RvY29sLmFjY2VwdF9ieXRlcyhi
eXRlcykKKyAgICAgICAgcmV0dXJuIHByb3RvY29sCisKKyAgICBkZWYgX3NlcnZlX29uZV9yZXF1
ZXN0KHNlbGYsIHByb3RvY29sKToKKyAgICAgICAgIiIiUmVhZCBvbmUgcmVxdWVzdCBmcm9tIGlu
cHV0LCBwcm9jZXNzLCBzZW5kIGJhY2sgYSByZXNwb25zZS4KKyAgICAgICAgCisgICAgICAgIDpw
YXJhbSBwcm90b2NvbDogYSBTbWFydFNlcnZlclJlcXVlc3RQcm90b2NvbC4KKyAgICAgICAgIiIi
CisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHNlbGYuX3NlcnZlX29uZV9yZXF1ZXN0X3VuZ3Vh
cmRlZChwcm90b2NvbCkKKyAgICAgICAgZXhjZXB0IEtleWJvYXJkSW50ZXJydXB0OgorICAgICAg
ICAgICAgcmFpc2UKKyAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiwgZToKKyAgICAgICAgICAgIHNl
bGYudGVybWluYXRlX2R1ZV90b19lcnJvcigpCisKKyAgICBkZWYgdGVybWluYXRlX2R1ZV90b19l
cnJvcihzZWxmKToKKyAgICAgICAgIiIiQ2FsbGVkIHdoZW4gYW4gdW5oYW5kbGVkIGV4Y2VwdGlv
biBmcm9tIHRoZSBwcm90b2NvbCBvY2N1cnMuIiIiCisgICAgICAgIHJhaXNlIE5vdEltcGxlbWVu
dGVkRXJyb3Ioc2VsZi50ZXJtaW5hdGVfZHVlX3RvX2Vycm9yKQorCisgICAgZGVmIF9nZXRfYnl0
ZXMoc2VsZiwgZGVzaXJlZF9jb3VudCk6CisgICAgICAgICIiIkdldCBzb21lIGJ5dGVzIGZyb20g
dGhlIG1lZGl1bS4KKworICAgICAgICA6cGFyYW0gZGVzaXJlZF9jb3VudDogbnVtYmVyIG9mIGJ5
dGVzIHdlIHdhbnQgdG8gcmVhZC4KKyAgICAgICAgIiIiCisgICAgICAgIHJhaXNlIE5vdEltcGxl
bWVudGVkRXJyb3Ioc2VsZi5fZ2V0X2J5dGVzKQorCisgICAgZGVmIF9nZXRfbGluZShzZWxmKToK
KyAgICAgICAgIiIiUmVhZCBieXRlcyBmcm9tIHRoaXMgcmVxdWVzdCdzIHJlc3BvbnNlIHVudGls
IGEgbmV3bGluZSBieXRlLgorICAgICAgICAKKyAgICAgICAgVGhpcyBpc24ndCBwYXJ0aWN1bGFy
bHkgZWZmaWNpZW50LCBzbyBzaG91bGQgb25seSBiZSB1c2VkIHdoZW4gdGhlCisgICAgICAgIGV4
cGVjdGVkIHNpemUgb2YgdGhlIGxpbmUgaXMgcXVpdGUgc2hvcnQuCisKKyAgICAgICAgOnJldHVy
bnM6IGEgc3RyaW5nIG9mIGJ5dGVzIGVuZGluZyBpbiBhIG5ld2xpbmUgKGJ5dGUgMHgwQSkuCisg
ICAgICAgICIiIgorICAgICAgICAjIFhYWDogdGhpcyBkdXBsaWNhdGVzIFNtYXJ0Q2xpZW50UmVx
dWVzdFByb3RvY29sT25lLl9yZWN2X3R1cGxlCisgICAgICAgIGxpbmUgPSAnJworICAgICAgICB3
aGlsZSBub3QgbGluZSBvciBsaW5lWy0xXSAhPSAnXG4nOgorICAgICAgICAgICAgbmV3X2NoYXIg
PSBzZWxmLl9nZXRfYnl0ZXMoMSkKKyAgICAgICAgICAgIGxpbmUgKz0gbmV3X2NoYXIKKyAgICAg
ICAgICAgIGlmIG5ld19jaGFyID09ICcnOgorICAgICAgICAgICAgICAgICMgUmFuIG91dCBvZiBi
eXRlcyBiZWZvcmUgcmVjZWl2aW5nIGEgY29tcGxldGUgbGluZS4KKyAgICAgICAgICAgICAgICBi
cmVhaworICAgICAgICByZXR1cm4gbGluZQorCisKK2NsYXNzIFNtYXJ0U2VydmVyU29ja2V0U3Ry
ZWFtTWVkaXVtKFNtYXJ0U2VydmVyU3RyZWFtTWVkaXVtKToKKworICAgIGRlZiBfX2luaXRfXyhz
ZWxmLCBzb2NrLCBiYWNraW5nX3RyYW5zcG9ydCk6CisgICAgICAgICIiIkNvbnN0cnVjdG9yLgor
CisgICAgICAgIDpwYXJhbSBzb2NrOiB0aGUgc29ja2V0IHRoZSBzZXJ2ZXIgd2lsbCByZWFkIGZy
b20uICBJdCB3aWxsIGJlIHB1dAorICAgICAgICAgICAgaW50byBibG9ja2luZyBtb2RlLgorICAg
ICAgICAiIiIKKyAgICAgICAgU21hcnRTZXJ2ZXJTdHJlYW1NZWRpdW0uX19pbml0X18oc2VsZiwg
YmFja2luZ190cmFuc3BvcnQpCisgICAgICAgIHNlbGYucHVzaF9iYWNrID0gJycKKyAgICAgICAg
c29jay5zZXRibG9ja2luZyhUcnVlKQorICAgICAgICBzZWxmLnNvY2tldCA9IHNvY2sKKworICAg
IGRlZiBfc2VydmVfb25lX3JlcXVlc3RfdW5ndWFyZGVkKHNlbGYsIHByb3RvY29sKToKKyAgICAg
ICAgd2hpbGUgcHJvdG9jb2wubmV4dF9yZWFkX3NpemUoKToKKyAgICAgICAgICAgIGlmIHNlbGYu
cHVzaF9iYWNrOgorICAgICAgICAgICAgICAgIHByb3RvY29sLmFjY2VwdF9ieXRlcyhzZWxmLnB1
c2hfYmFjaykKKyAgICAgICAgICAgICAgICBzZWxmLnB1c2hfYmFjayA9ICcnCisgICAgICAgICAg
ICBlbHNlOgorICAgICAgICAgICAgICAgIGJ5dGVzID0gc2VsZi5fZ2V0X2J5dGVzKDQwOTYpCisg
ICAgICAgICAgICAgICAgaWYgYnl0ZXMgPT0gJyc6CisgICAgICAgICAgICAgICAgICAgIHNlbGYu
ZmluaXNoZWQgPSBUcnVlCisgICAgICAgICAgICAgICAgICAgIHJldHVybgorICAgICAgICAgICAg
ICAgIHByb3RvY29sLmFjY2VwdF9ieXRlcyhieXRlcykKKyAgICAgICAgCisgICAgICAgIHNlbGYu
cHVzaF9iYWNrID0gcHJvdG9jb2wuZXhjZXNzX2J1ZmZlcgorCisgICAgZGVmIF9nZXRfYnl0ZXMo
c2VsZiwgZGVzaXJlZF9jb3VudCk6CisgICAgICAgICMgV2UgaWdub3JlIHRoZSBkZXNpcmVkX2Nv
dW50IGJlY2F1c2Ugb24gc29ja2V0cyBpdCdzIG1vcmUgZWZmaWNpZW50IHRvCisgICAgICAgICMg
cmVhZCA0ayBhdCBhIHRpbWUuCisgICAgICAgIHJldHVybiBzZWxmLnNvY2tldC5yZWN2KDQwOTYp
CisgICAgCisgICAgZGVmIHRlcm1pbmF0ZV9kdWVfdG9fZXJyb3Ioc2VsZik6CisgICAgICAgICIi
IkNhbGxlZCB3aGVuIGFuIHVuaGFuZGxlZCBleGNlcHRpb24gZnJvbSB0aGUgcHJvdG9jb2wgb2Nj
dXJzLiIiIgorICAgICAgICAjIFRPRE86IFRoaXMgc2hvdWxkIGxvZyB0byBhIHNlcnZlciBsb2cg
ZmlsZSwgYnV0IG5vIHN1Y2ggdGhpbmcKKyAgICAgICAgIyBleGlzdHMgeWV0LiAgQW5kcmV3IEJl
bm5ldHRzIDIwMDYtMDktMjkuCisgICAgICAgIHNlbGYuc29ja2V0LmNsb3NlKCkKKyAgICAgICAg
c2VsZi5maW5pc2hlZCA9IFRydWUKKworICAgIGRlZiBfd3JpdGVfb3V0KHNlbGYsIGJ5dGVzKToK
KyAgICAgICAgc2VsZi5zb2NrZXQuc2VuZGFsbChieXRlcykKKworCitjbGFzcyBTbWFydFNlcnZl
clBpcGVTdHJlYW1NZWRpdW0oU21hcnRTZXJ2ZXJTdHJlYW1NZWRpdW0pOgorCisgICAgZGVmIF9f
aW5pdF9fKHNlbGYsIGluX2ZpbGUsIG91dF9maWxlLCBiYWNraW5nX3RyYW5zcG9ydCk6CisgICAg
ICAgICIiIkNvbnN0cnVjdCBuZXcgc2VydmVyLgorCisgICAgICAgIDpwYXJhbSBpbl9maWxlOiBQ
eXRob24gZmlsZSBmcm9tIHdoaWNoIHJlcXVlc3RzIGNhbiBiZSByZWFkLgorICAgICAgICA6cGFy
YW0gb3V0X2ZpbGU6IFB5dGhvbiBmaWxlIHRvIHdyaXRlIHJlc3BvbnNlcy4KKyAgICAgICAgOnBh
cmFtIGJhY2tpbmdfdHJhbnNwb3J0OiBUcmFuc3BvcnQgZm9yIHRoZSBkaXJlY3Rvcnkgc2VydmVk
LgorICAgICAgICAiIiIKKyAgICAgICAgU21hcnRTZXJ2ZXJTdHJlYW1NZWRpdW0uX19pbml0X18o
c2VsZiwgYmFja2luZ190cmFuc3BvcnQpCisgICAgICAgIGlmIHN5cy5wbGF0Zm9ybSA9PSAnd2lu
MzInOgorICAgICAgICAgICAgIyBmb3JjZSBiaW5hcnkgbW9kZSBmb3IgZmlsZXMKKyAgICAgICAg
ICAgIGltcG9ydCBtc3ZjcnQKKyAgICAgICAgICAgIGZvciBmIGluIChpbl9maWxlLCBvdXRfZmls
ZSk6CisgICAgICAgICAgICAgICAgZmlsZW5vID0gZ2V0YXR0cihmLCAnZmlsZW5vJywgTm9uZSkK
KyAgICAgICAgICAgICAgICBpZiBmaWxlbm86CisgICAgICAgICAgICAgICAgICAgIG1zdmNydC5z
ZXRtb2RlKGZpbGVubygpLCBvcy5PX0JJTkFSWSkKKyAgICAgICAgc2VsZi5faW4gPSBpbl9maWxl
CisgICAgICAgIHNlbGYuX291dCA9IG91dF9maWxlCisKKyAgICBkZWYgX3NlcnZlX29uZV9yZXF1
ZXN0X3VuZ3VhcmRlZChzZWxmLCBwcm90b2NvbCk6CisgICAgICAgIHdoaWxlIFRydWU6CisgICAg
ICAgICAgICBieXRlc190b19yZWFkID0gcHJvdG9jb2wubmV4dF9yZWFkX3NpemUoKQorICAgICAg
ICAgICAgaWYgYnl0ZXNfdG9fcmVhZCA9PSAwOgorICAgICAgICAgICAgICAgICMgRmluaXNoZWQg
c2VydmluZyB0aGlzIHJlcXVlc3QuCisgICAgICAgICAgICAgICAgc2VsZi5fb3V0LmZsdXNoKCkK
KyAgICAgICAgICAgICAgICByZXR1cm4KKyAgICAgICAgICAgIGJ5dGVzID0gc2VsZi5fZ2V0X2J5
dGVzKGJ5dGVzX3RvX3JlYWQpCisgICAgICAgICAgICBpZiBieXRlcyA9PSAnJzoKKyAgICAgICAg
ICAgICAgICAjIENvbm5lY3Rpb24gaGFzIGJlZW4gY2xvc2VkLgorICAgICAgICAgICAgICAgIHNl
bGYuZmluaXNoZWQgPSBUcnVlCisgICAgICAgICAgICAgICAgc2VsZi5fb3V0LmZsdXNoKCkKKyAg
ICAgICAgICAgICAgICByZXR1cm4KKyAgICAgICAgICAgIHByb3RvY29sLmFjY2VwdF9ieXRlcyhi
eXRlcykKKworICAgIGRlZiBfZ2V0X2J5dGVzKHNlbGYsIGRlc2lyZWRfY291bnQpOgorICAgICAg
ICByZXR1cm4gc2VsZi5faW4ucmVhZChkZXNpcmVkX2NvdW50KQorCisgICAgZGVmIHRlcm1pbmF0
ZV9kdWVfdG9fZXJyb3Ioc2VsZik6CisgICAgICAgICMgVE9ETzogVGhpcyBzaG91bGQgbG9nIHRv
IGEgc2VydmVyIGxvZyBmaWxlLCBidXQgbm8gc3VjaCB0aGluZworICAgICAgICAjIGV4aXN0cyB5
ZXQuICBBbmRyZXcgQmVubmV0dHMgMjAwNi0wOS0yOS4KKyAgICAgICAgc2VsZi5fb3V0LmNsb3Nl
KCkKKyAgICAgICAgc2VsZi5maW5pc2hlZCA9IFRydWUKKworICAgIGRlZiBfd3JpdGVfb3V0KHNl
bGYsIGJ5dGVzKToKKyAgICAgICAgc2VsZi5fb3V0LndyaXRlKGJ5dGVzKQorCisKK2NsYXNzIFNt
YXJ0Q2xpZW50TWVkaXVtUmVxdWVzdChvYmplY3QpOgorICAgICIiIkEgcmVxdWVzdCBvbiBhIFNt
YXJ0Q2xpZW50TWVkaXVtLgorCisgICAgRWFjaCByZXF1ZXN0IGFsbG93cyBieXRlcyB0byBiZSBw
cm92aWRlZCB0byBpdCB2aWEgYWNjZXB0X2J5dGVzLCBhbmQgdGhlbgorICAgIHRoZSByZXNwb25z
ZSBieXRlcyB0byBiZSByZWFkIHZpYSByZWFkX2J5dGVzLgorCisgICAgRm9yIGluc3RhbmNlOgor
ICAgIHJlcXVlc3QuYWNjZXB0X2J5dGVzKCcxMjMnKQorICAgIHJlcXVlc3QuZmluaXNoZWRfd3Jp
dGluZygpCisgICAgcmVzdWx0ID0gcmVxdWVzdC5yZWFkX2J5dGVzKDMpCisgICAgcmVxdWVzdC5m
aW5pc2hlZF9yZWFkaW5nKCkKKworICAgIEl0IGlzIHVwIHRvIHRoZSBpbmRpdmlkdWFsIFNtYXJ0
Q2xpZW50TWVkaXVtIHdoZXRoZXIgbXVsdGlwbGUgY29uY3VycmVudAorICAgIHJlcXVlc3RzIGNh
biBleGlzdC4gU2VlIFNtYXJ0Q2xpZW50TWVkaXVtLmdldF9yZXF1ZXN0IHRvIG9idGFpbiBpbnN0
YW5jZXMgCisgICAgb2YgU21hcnRDbGllbnRNZWRpdW1SZXF1ZXN0LCBhbmQgdGhlIGNvbmNyZXRl
IE1lZGl1bSB5b3UgYXJlIHVzaW5nIGZvciAKKyAgICBkZXRhaWxzIG9uIGNvbmN1cnJlbmN5IGFu
ZCBwaXBlbGluaW5nLgorICAgICIiIgorCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIG1lZGl1bSk6
CisgICAgICAgICIiIkNvbnN0cnVjdCBhIFNtYXJ0Q2xpZW50TWVkaXVtUmVxdWVzdCBmb3IgdGhl
IG1lZGl1bSBtZWRpdW0uIiIiCisgICAgICAgIHNlbGYuX21lZGl1bSA9IG1lZGl1bQorICAgICAg
ICAjIHdlIHRyYWNrIHN0YXRlIGJ5IGNvbnN0YW50cyAtIHdlIG1heSB3YW50IHRvIHVzZSB0aGUg
c2FtZQorICAgICAgICAjIHBhdHRlcm4gYXMgQm9keVJlYWRlciBpZiBpdCBnZXRzIG1vcmUgY29t
cGxleC4KKyAgICAgICAgIyB2YWxpZCBzdGF0ZXMgYXJlOiAid3JpdGluZyIsICJyZWFkaW5nIiwg
ImRvbmUiCisgICAgICAgIHNlbGYuX3N0YXRlID0gIndyaXRpbmciCisKKyAgICBkZWYgYWNjZXB0
X2J5dGVzKHNlbGYsIGJ5dGVzKToKKyAgICAgICAgIiIiQWNjZXB0IGJ5dGVzIGZvciBpbmNsdXNp
b24gaW4gdGhpcyByZXF1ZXN0LgorCisgICAgICAgIFRoaXMgbWV0aG9kIG1heSBub3QgYmUgYmUg
Y2FsbGVkIGFmdGVyIGZpbmlzaGVkX3dyaXRpbmcoKSBoYXMgYmVlbgorICAgICAgICBjYWxsZWQu
ICBJdCBkZXBlbmRzIHVwb24gdGhlIE1lZGl1bSB3aGV0aGVyIG9yIG5vdCB0aGUgYnl0ZXMgd2ls
bCBiZQorICAgICAgICBpbW1lZGlhdGVseSB0cmFuc21pdHRlZC4gTWVzc2FnZSBiYXNlZCBNZWRp
dW1zIHdpbGwgdGVuZCB0byBidWZmZXIgdGhlCisgICAgICAgIGJ5dGVzIHVudGlsIGZpbmlzaGVk
X3dyaXRpbmcoKSBpcyBjYWxsZWQuCisKKyAgICAgICAgOnBhcmFtIGJ5dGVzOiBBIGJ5dGVzdHJp
bmcuCisgICAgICAgICIiIgorICAgICAgICBpZiBzZWxmLl9zdGF0ZSAhPSAid3JpdGluZyI6Cisg
ICAgICAgICAgICByYWlzZSBlcnJvcnMuV3JpdGluZ0NvbXBsZXRlZChzZWxmKQorICAgICAgICBz
ZWxmLl9hY2NlcHRfYnl0ZXMoYnl0ZXMpCisKKyAgICBkZWYgX2FjY2VwdF9ieXRlcyhzZWxmLCBi
eXRlcyk6CisgICAgICAgICIiIkhlbHBlciBmb3IgYWNjZXB0X2J5dGVzLgorCisgICAgICAgIEFj
Y2VwdF9ieXRlcyBjaGVja3MgdGhlIHN0YXRlIG9mIHRoZSByZXF1ZXN0IHRvIGRldGVybWluZyBp
ZiBieXRlcworICAgICAgICBzaG91bGQgYmUgYWNjZXB0ZWQuIEFmdGVyIHRoYXQgaXQgaGFuZHMg
b2ZmIHRvIF9hY2NlcHRfYnl0ZXMgdG8gZG8gdGhlCisgICAgICAgIGFjdHVhbCBhY2NlcHRhbmNl
LgorICAgICAgICAiIiIKKyAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcihzZWxmLl9h
Y2NlcHRfYnl0ZXMpCisKKyAgICBkZWYgZmluaXNoZWRfcmVhZGluZyhzZWxmKToKKyAgICAgICAg
IiIiSW5mb3JtIHRoZSByZXF1ZXN0IHRoYXQgYWxsIGRlc2lyZWQgZGF0YSBoYXMgYmVlbiByZWFk
LgorCisgICAgICAgIFRoaXMgd2lsbCByZW1vdmUgdGhlIHJlcXVlc3QgZnJvbSB0aGUgcGlwZWxp
bmUgZm9yIGl0cyBtZWRpdW0gKGlmIHRoZQorICAgICAgICBtZWRpdW0gc3VwcG9ydHMgcGlwZWxp
bmluZykgYW5kIGFueSBmdXJ0aGVyIGNhbGxzIHRvIG1ldGhvZHMgb24gdGhlCisgICAgICAgIHJl
cXVlc3Qgd2lsbCByYWlzZSBSZWFkaW5nQ29tcGxldGVkLgorICAgICAgICAiIiIKKyAgICAgICAg
aWYgc2VsZi5fc3RhdGUgPT0gIndyaXRpbmciOgorICAgICAgICAgICAgcmFpc2UgZXJyb3JzLldy
aXRpbmdOb3RDb21wbGV0ZShzZWxmKQorICAgICAgICBpZiBzZWxmLl9zdGF0ZSAhPSAicmVhZGlu
ZyI6CisgICAgICAgICAgICByYWlzZSBlcnJvcnMuUmVhZGluZ0NvbXBsZXRlZChzZWxmKQorICAg
ICAgICBzZWxmLl9zdGF0ZSA9ICJkb25lIgorICAgICAgICBzZWxmLl9maW5pc2hlZF9yZWFkaW5n
KCkKKworICAgIGRlZiBfZmluaXNoZWRfcmVhZGluZyhzZWxmKToKKyAgICAgICAgIiIiSGVscGVy
IGZvciBmaW5pc2hlZF9yZWFkaW5nLgorCisgICAgICAgIGZpbmlzaGVkX3JlYWRpbmcgY2hlY2tz
IHRoZSBzdGF0ZSBvZiB0aGUgcmVxdWVzdCB0byBkZXRlcm1pbmUgaWYgCisgICAgICAgIGZpbmlz
aGVkX3JlYWRpbmcgaXMgYWxsb3dlZCwgYW5kIGlmIGl0IGlzIGhhbmRzIG9mZiB0byBfZmluaXNo
ZWRfcmVhZGluZworICAgICAgICB0byBwZXJmb3JtIHRoZSBhY3Rpb24uCisgICAgICAgICIiIgor
ICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yKHNlbGYuX2ZpbmlzaGVkX3JlYWRpbmcp
CisKKyAgICBkZWYgZmluaXNoZWRfd3JpdGluZyhzZWxmKToKKyAgICAgICAgIiIiRmluaXNoIHRo
ZSB3cml0aW5nIHBoYXNlIG9mIHRoaXMgcmVxdWVzdC4KKworICAgICAgICBUaGlzIHdpbGwgZmx1
c2ggYWxsIHBlbmRpbmcgZGF0YSBmb3IgdGhpcyByZXF1ZXN0IGFsb25nIHRoZSBtZWRpdW0uCisg
ICAgICAgIEFmdGVyIGNhbGxpbmcgZmluaXNoZWRfd3JpdGluZywgeW91IG1heSBub3QgY2FsbCBh
Y2NlcHRfYnl0ZXMgYW55bW9yZS4KKyAgICAgICAgIiIiCisgICAgICAgIGlmIHNlbGYuX3N0YXRl
ICE9ICJ3cml0aW5nIjoKKyAgICAgICAgICAgIHJhaXNlIGVycm9ycy5Xcml0aW5nQ29tcGxldGVk
KHNlbGYpCisgICAgICAgIHNlbGYuX3N0YXRlID0gInJlYWRpbmciCisgICAgICAgIHNlbGYuX2Zp
bmlzaGVkX3dyaXRpbmcoKQorCisgICAgZGVmIF9maW5pc2hlZF93cml0aW5nKHNlbGYpOgorICAg
ICAgICAiIiJIZWxwZXIgZm9yIGZpbmlzaGVkX3dyaXRpbmcuCisKKyAgICAgICAgZmluaXNoZWRf
d3JpdGluZyBjaGVja3MgdGhlIHN0YXRlIG9mIHRoZSByZXF1ZXN0IHRvIGRldGVybWluZSBpZiAK
KyAgICAgICAgZmluaXNoZWRfd3JpdGluZyBpcyBhbGxvd2VkLCBhbmQgaWYgaXQgaXMgaGFuZHMg
b2ZmIHRvIF9maW5pc2hlZF93cml0aW5nCisgICAgICAgIHRvIHBlcmZvcm0gdGhlIGFjdGlvbi4K
KyAgICAgICAgIiIiCisgICAgICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3Ioc2VsZi5fZmlu
aXNoZWRfd3JpdGluZykKKworICAgIGRlZiByZWFkX2J5dGVzKHNlbGYsIGNvdW50KToKKyAgICAg
ICAgIiIiUmVhZCBieXRlcyBmcm9tIHRoaXMgcmVxdWVzdHMgcmVzcG9uc2UuCisKKyAgICAgICAg
VGhpcyBtZXRob2Qgd2lsbCBibG9jayBhbmQgd2FpdCBmb3IgY291bnQgYnl0ZXMgdG8gYmUgcmVh
ZC4gSXQgbWF5IG5vdAorICAgICAgICBiZSBpbnZva2VkIHVudGlsIGZpbmlzaGVkX3dyaXRpbmco
KSBoYXMgYmVlbiBjYWxsZWQgLSB0aGlzIGlzIHRvIGVuc3VyZQorICAgICAgICBhIG1lc3NhZ2Ut
YmFzZWQgYXBwcm9hY2ggdG8gcmVxdWVzdHMsIGZvciBjb21wYXRpYmlsaXR5IHdpdGggbWVzc2Fn
ZQorICAgICAgICBiYXNlZCBtZWRpdW1zIGxpa2UgSFRUUC4KKyAgICAgICAgIiIiCisgICAgICAg
IGlmIHNlbGYuX3N0YXRlID09ICJ3cml0aW5nIjoKKyAgICAgICAgICAgIHJhaXNlIGVycm9ycy5X
cml0aW5nTm90Q29tcGxldGUoc2VsZikKKyAgICAgICAgaWYgc2VsZi5fc3RhdGUgIT0gInJlYWRp
bmciOgorICAgICAgICAgICAgcmFpc2UgZXJyb3JzLlJlYWRpbmdDb21wbGV0ZWQoc2VsZikKKyAg
ICAgICAgcmV0dXJuIHNlbGYuX3JlYWRfYnl0ZXMoY291bnQpCisKKyAgICBkZWYgX3JlYWRfYnl0
ZXMoc2VsZiwgY291bnQpOgorICAgICAgICAiIiJIZWxwZXIgZm9yIHJlYWRfYnl0ZXMuCisKKyAg
ICAgICAgcmVhZF9ieXRlcyBjaGVja3MgdGhlIHN0YXRlIG9mIHRoZSByZXF1ZXN0IHRvIGRldGVy
bWluZyBpZiBieXRlcworICAgICAgICBzaG91bGQgYmUgcmVhZC4gQWZ0ZXIgdGhhdCBpdCBoYW5k
cyBvZmYgdG8gX3JlYWRfYnl0ZXMgdG8gZG8gdGhlCisgICAgICAgIGFjdHVhbCByZWFkLgorICAg
ICAgICAiIiIKKyAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcihzZWxmLl9yZWFkX2J5
dGVzKQorCisgICAgZGVmIHJlYWRfbGluZShzZWxmKToKKyAgICAgICAgIiIiUmVhZCBieXRlcyBm
cm9tIHRoaXMgcmVxdWVzdCdzIHJlc3BvbnNlIHVudGlsIGEgbmV3bGluZSBieXRlLgorICAgICAg
ICAKKyAgICAgICAgVGhpcyBpc24ndCBwYXJ0aWN1bGFybHkgZWZmaWNpZW50LCBzbyBzaG91bGQg
b25seSBiZSB1c2VkIHdoZW4gdGhlCisgICAgICAgIGV4cGVjdGVkIHNpemUgb2YgdGhlIGxpbmUg
aXMgcXVpdGUgc2hvcnQuCisKKyAgICAgICAgOnJldHVybnM6IGEgc3RyaW5nIG9mIGJ5dGVzIGVu
ZGluZyBpbiBhIG5ld2xpbmUgKGJ5dGUgMHgwQSkuCisgICAgICAgICIiIgorICAgICAgICAjIFhY
WDogdGhpcyBkdXBsaWNhdGVzIFNtYXJ0Q2xpZW50UmVxdWVzdFByb3RvY29sT25lLl9yZWN2X3R1
cGxlCisgICAgICAgIGxpbmUgPSAnJworICAgICAgICB3aGlsZSBub3QgbGluZSBvciBsaW5lWy0x
XSAhPSAnXG4nOgorICAgICAgICAgICAgbmV3X2NoYXIgPSBzZWxmLnJlYWRfYnl0ZXMoMSkKKyAg
ICAgICAgICAgIGxpbmUgKz0gbmV3X2NoYXIKKyAgICAgICAgICAgIGlmIG5ld19jaGFyID09ICcn
OgorICAgICAgICAgICAgICAgIHJhaXNlIGVycm9ycy5TbWFydFByb3RvY29sRXJyb3IoCisgICAg
ICAgICAgICAgICAgICAgICd1bmV4cGVjdGVkIGVuZCBvZiBmaWxlIHJlYWRpbmcgZnJvbSBzZXJ2
ZXInKQorICAgICAgICByZXR1cm4gbGluZQorCisKK2NsYXNzIFNtYXJ0Q2xpZW50TWVkaXVtKG9i
amVjdCk6CisgICAgIiIiU21hcnQgY2xpZW50IGlzIGEgbWVkaXVtIGZvciBzZW5kaW5nIHNtYXJ0
IHByb3RvY29sIHJlcXVlc3RzIG92ZXIuIiIiCisKKyAgICBkZWYgZGlzY29ubmVjdChzZWxmKToK
KyAgICAgICAgIiIiSWYgdGhpcyBtZWRpdW0gbWFpbnRhaW5zIGEgcGVyc2lzdGVudCBjb25uZWN0
aW9uLCBjbG9zZSBpdC4KKyAgICAgICAgCisgICAgICAgIFRoZSBkZWZhdWx0IGltcGxlbWVudGF0
aW9uIGRvZXMgbm90aGluZy4KKyAgICAgICAgIiIiCisgICAgICAgIAorCitjbGFzcyBTbWFydENs
aWVudFN0cmVhbU1lZGl1bShTbWFydENsaWVudE1lZGl1bSk6CisgICAgIiIiU3RyZWFtIGJhc2Vk
IG1lZGl1bSBjb21tb24gY2xhc3MuCisKKyAgICBTbWFydENsaWVudFN0cmVhbU1lZGl1bXMgb3Bl
cmF0ZSBvbiBhIHN0cmVhbS4gQWxsIHN1YmNsYXNzZXMgdXNlIGEgY29tbW9uCisgICAgU21hcnRD
bGllbnRTdHJlYW1NZWRpdW1SZXF1ZXN0IGZvciB0aGVpciByZXF1ZXN0cywgYW5kIHNob3VsZCBp
bXBsZW1lbnQKKyAgICBfYWNjZXB0X2J5dGVzIGFuZCBfcmVhZF9ieXRlcyB0byBhbGxvdyB0aGUg
cmVxdWVzdCBvYmplY3RzIHRvIHNlbmQgYW5kCisgICAgcmVjZWl2ZSBieXRlcy4KKyAgICAiIiIK
KworICAgIGRlZiBfX2luaXRfXyhzZWxmKToKKyAgICAgICAgc2VsZi5fY3VycmVudF9yZXF1ZXN0
ID0gTm9uZQorCisgICAgZGVmIGFjY2VwdF9ieXRlcyhzZWxmLCBieXRlcyk6CisgICAgICAgIHNl
bGYuX2FjY2VwdF9ieXRlcyhieXRlcykKKworICAgIGRlZiBfX2RlbF9fKHNlbGYpOgorICAgICAg
ICAiIiJUaGUgU21hcnRDbGllbnRTdHJlYW1NZWRpdW0ga25vd3MgaG93IHRvIGNsb3NlIHRoZSBz
dHJlYW0gd2hlbiBpdCBpcworICAgICAgICBmaW5pc2hlZCB3aXRoIGl0LgorICAgICAgICAiIiIK
KyAgICAgICAgc2VsZi5kaXNjb25uZWN0KCkKKworICAgIGRlZiBfZmx1c2goc2VsZik6CisgICAg
ICAgICIiIkZsdXNoIHRoZSBvdXRwdXQgc3RyZWFtLgorICAgICAgICAKKyAgICAgICAgVGhpcyBt
ZXRob2QgaXMgdXNlZCBieSB0aGUgU21hcnRDbGllbnRTdHJlYW1NZWRpdW1SZXF1ZXN0IHRvIGVu
c3VyZSB0aGF0CisgICAgICAgIGFsbCBkYXRhIGZvciBhIHJlcXVlc3QgaXMgc2VudCwgdG8gYXZv
aWQgbG9uZyB0aW1lb3V0cyBvciBkZWFkbG9ja3MuCisgICAgICAgICIiIgorICAgICAgICByYWlz
ZSBOb3RJbXBsZW1lbnRlZEVycm9yKHNlbGYuX2ZsdXNoKQorCisgICAgZGVmIGdldF9yZXF1ZXN0
KHNlbGYpOgorICAgICAgICAiIiJTZWUgU21hcnRDbGllbnRNZWRpdW0uZ2V0X3JlcXVlc3QoKS4K
KworICAgICAgICBTbWFydENsaWVudFN0cmVhbU1lZGl1bSBhbHdheXMgcmV0dXJucyBhIFNtYXJ0
Q2xpZW50U3RyZWFtTWVkaXVtUmVxdWVzdAorICAgICAgICBmb3IgZ2V0X3JlcXVlc3QuCisgICAg
ICAgICIiIgorICAgICAgICByZXR1cm4gU21hcnRDbGllbnRTdHJlYW1NZWRpdW1SZXF1ZXN0KHNl
bGYpCisKKyAgICBkZWYgcmVhZF9ieXRlcyhzZWxmLCBjb3VudCk6CisgICAgICAgIHJldHVybiBz
ZWxmLl9yZWFkX2J5dGVzKGNvdW50KQorCisKK2NsYXNzIFNtYXJ0U2ltcGxlUGlwZXNDbGllbnRN
ZWRpdW0oU21hcnRDbGllbnRTdHJlYW1NZWRpdW0pOgorICAgICIiIkEgY2xpZW50IG1lZGl1bSB1
c2luZyBzaW1wbGUgcGlwZXMuCisgICAgCisgICAgVGhpcyBjbGllbnQgZG9lcyBub3QgbWFuYWdl
IHRoZSBwaXBlczogaXQgYXNzdW1lcyB0aGV5IHdpbGwgYWx3YXlzIGJlIG9wZW4uCisgICAgIiIi
CisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgcmVhZGFibGVfcGlwZSwgd3JpdGVhYmxlX3BpcGUp
OgorICAgICAgICBTbWFydENsaWVudFN0cmVhbU1lZGl1bS5fX2luaXRfXyhzZWxmKQorICAgICAg
ICBzZWxmLl9yZWFkYWJsZV9waXBlID0gcmVhZGFibGVfcGlwZQorICAgICAgICBzZWxmLl93cml0
ZWFibGVfcGlwZSA9IHdyaXRlYWJsZV9waXBlCisKKyAgICBkZWYgX2FjY2VwdF9ieXRlcyhzZWxm
LCBieXRlcyk6CisgICAgICAgICIiIlNlZSBTbWFydENsaWVudFN0cmVhbU1lZGl1bS5hY2NlcHRf
Ynl0ZXMuIiIiCisgICAgICAgIHNlbGYuX3dyaXRlYWJsZV9waXBlLndyaXRlKGJ5dGVzKQorCisg
ICAgZGVmIF9mbHVzaChzZWxmKToKKyAgICAgICAgIiIiU2VlIFNtYXJ0Q2xpZW50U3RyZWFtTWVk
aXVtLl9mbHVzaCgpLiIiIgorICAgICAgICBzZWxmLl93cml0ZWFibGVfcGlwZS5mbHVzaCgpCisK
KyAgICBkZWYgX3JlYWRfYnl0ZXMoc2VsZiwgY291bnQpOgorICAgICAgICAiIiJTZWUgU21hcnRD
bGllbnRTdHJlYW1NZWRpdW0uX3JlYWRfYnl0ZXMuIiIiCisgICAgICAgIHJldHVybiBzZWxmLl9y
ZWFkYWJsZV9waXBlLnJlYWQoY291bnQpCisKKworY2xhc3MgU21hcnRTU0hDbGllbnRNZWRpdW0o
U21hcnRDbGllbnRTdHJlYW1NZWRpdW0pOgorICAgICIiIkEgY2xpZW50IG1lZGl1bSB1c2luZyBT
U0guIiIiCisgICAgCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGhvc3QsIHBvcnQ9Tm9uZSwgdXNl
cm5hbWU9Tm9uZSwgcGFzc3dvcmQ9Tm9uZSwKKyAgICAgICAgICAgIHZlbmRvcj1Ob25lKToKKyAg
ICAgICAgIiIiQ3JlYXRlcyBhIGNsaWVudCB0aGF0IHdpbGwgY29ubmVjdCBvbiB0aGUgZmlyc3Qg
dXNlLgorICAgICAgICAKKyAgICAgICAgOnBhcmFtIHZlbmRvcjogQW4gb3B0aW9uYWwgb3ZlcnJp
ZGUgZm9yIHRoZSBzc2ggdmVuZG9yIHRvIHVzZS4gU2VlCisgICAgICAgICAgICBienJsaWIudHJh
bnNwb3J0LnNzaCBmb3IgZGV0YWlscyBvbiBzc2ggdmVuZG9ycy4KKyAgICAgICAgIiIiCisgICAg
ICAgIFNtYXJ0Q2xpZW50U3RyZWFtTWVkaXVtLl9faW5pdF9fKHNlbGYpCisgICAgICAgIHNlbGYu
X2Nvbm5lY3RlZCA9IEZhbHNlCisgICAgICAgIHNlbGYuX2hvc3QgPSBob3N0CisgICAgICAgIHNl
bGYuX3Bhc3N3b3JkID0gcGFzc3dvcmQKKyAgICAgICAgc2VsZi5fcG9ydCA9IHBvcnQKKyAgICAg
ICAgc2VsZi5fdXNlcm5hbWUgPSB1c2VybmFtZQorICAgICAgICBzZWxmLl9yZWFkX2Zyb20gPSBO
b25lCisgICAgICAgIHNlbGYuX3NzaF9jb25uZWN0aW9uID0gTm9uZQorICAgICAgICBzZWxmLl92
ZW5kb3IgPSB2ZW5kb3IKKyAgICAgICAgc2VsZi5fd3JpdGVfdG8gPSBOb25lCisKKyAgICBkZWYg
X2FjY2VwdF9ieXRlcyhzZWxmLCBieXRlcyk6CisgICAgICAgICIiIlNlZSBTbWFydENsaWVudFN0
cmVhbU1lZGl1bS5hY2NlcHRfYnl0ZXMuIiIiCisgICAgICAgIHNlbGYuX2Vuc3VyZV9jb25uZWN0
aW9uKCkKKyAgICAgICAgc2VsZi5fd3JpdGVfdG8ud3JpdGUoYnl0ZXMpCisKKyAgICBkZWYgZGlz
Y29ubmVjdChzZWxmKToKKyAgICAgICAgIiIiU2VlIFNtYXJ0Q2xpZW50TWVkaXVtLmRpc2Nvbm5l
Y3QoKS4iIiIKKyAgICAgICAgaWYgbm90IHNlbGYuX2Nvbm5lY3RlZDoKKyAgICAgICAgICAgIHJl
dHVybgorICAgICAgICBzZWxmLl9yZWFkX2Zyb20uY2xvc2UoKQorICAgICAgICBzZWxmLl93cml0
ZV90by5jbG9zZSgpCisgICAgICAgIHNlbGYuX3NzaF9jb25uZWN0aW9uLmNsb3NlKCkKKyAgICAg
ICAgc2VsZi5fY29ubmVjdGVkID0gRmFsc2UKKworICAgIGRlZiBfZW5zdXJlX2Nvbm5lY3Rpb24o
c2VsZik6CisgICAgICAgICIiIkNvbm5lY3QgdGhpcyBtZWRpdW0gaWYgbm90IGFscmVhZHkgY29u
bmVjdGVkLiIiIgorICAgICAgICBpZiBzZWxmLl9jb25uZWN0ZWQ6CisgICAgICAgICAgICByZXR1
cm4KKyAgICAgICAgZXhlY3V0YWJsZSA9IG9zLmVudmlyb24uZ2V0KCdCWlJfUkVNT1RFX1BBVEgn
LCAnYnpyJykKKyAgICAgICAgaWYgc2VsZi5fdmVuZG9yIGlzIE5vbmU6CisgICAgICAgICAgICB2
ZW5kb3IgPSBzc2guX2dldF9zc2hfdmVuZG9yKCkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAg
IHZlbmRvciA9IHNlbGYuX3ZlbmRvcgorICAgICAgICBzZWxmLl9zc2hfY29ubmVjdGlvbiA9IHZl
bmRvci5jb25uZWN0X3NzaChzZWxmLl91c2VybmFtZSwKKyAgICAgICAgICAgICAgICBzZWxmLl9w
YXNzd29yZCwgc2VsZi5faG9zdCwgc2VsZi5fcG9ydCwKKyAgICAgICAgICAgICAgICBjb21tYW5k
PVtleGVjdXRhYmxlLCAnc2VydmUnLCAnLS1pbmV0JywgJy0tZGlyZWN0b3J5PS8nLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICctLWFsbG93LXdyaXRlcyddKQorICAgICAgICBzZWxmLl9yZWFk
X2Zyb20sIHNlbGYuX3dyaXRlX3RvID0gXAorICAgICAgICAgICAgc2VsZi5fc3NoX2Nvbm5lY3Rp
b24uZ2V0X2ZpbGVsaWtlX2NoYW5uZWxzKCkKKyAgICAgICAgc2VsZi5fY29ubmVjdGVkID0gVHJ1
ZQorCisgICAgZGVmIF9mbHVzaChzZWxmKToKKyAgICAgICAgIiIiU2VlIFNtYXJ0Q2xpZW50U3Ry
ZWFtTWVkaXVtLl9mbHVzaCgpLiIiIgorICAgICAgICBzZWxmLl93cml0ZV90by5mbHVzaCgpCisK
KyAgICBkZWYgX3JlYWRfYnl0ZXMoc2VsZiwgY291bnQpOgorICAgICAgICAiIiJTZWUgU21hcnRD
bGllbnRTdHJlYW1NZWRpdW0ucmVhZF9ieXRlcy4iIiIKKyAgICAgICAgaWYgbm90IHNlbGYuX2Nv
bm5lY3RlZDoKKyAgICAgICAgICAgIHJhaXNlIGVycm9ycy5NZWRpdW1Ob3RDb25uZWN0ZWQoc2Vs
ZikKKyAgICAgICAgcmV0dXJuIHNlbGYuX3JlYWRfZnJvbS5yZWFkKGNvdW50KQorCisKK2NsYXNz
IFNtYXJ0VENQQ2xpZW50TWVkaXVtKFNtYXJ0Q2xpZW50U3RyZWFtTWVkaXVtKToKKyAgICAiIiJB
IGNsaWVudCBtZWRpdW0gdXNpbmcgVENQLiIiIgorICAgIAorICAgIGRlZiBfX2luaXRfXyhzZWxm
LCBob3N0LCBwb3J0KToKKyAgICAgICAgIiIiQ3JlYXRlcyBhIGNsaWVudCB0aGF0IHdpbGwgY29u
bmVjdCBvbiB0aGUgZmlyc3QgdXNlLiIiIgorICAgICAgICBTbWFydENsaWVudFN0cmVhbU1lZGl1
bS5fX2luaXRfXyhzZWxmKQorICAgICAgICBzZWxmLl9jb25uZWN0ZWQgPSBGYWxzZQorICAgICAg
ICBzZWxmLl9ob3N0ID0gaG9zdAorICAgICAgICBzZWxmLl9wb3J0ID0gcG9ydAorICAgICAgICBz
ZWxmLl9zb2NrZXQgPSBOb25lCisKKyAgICBkZWYgX2FjY2VwdF9ieXRlcyhzZWxmLCBieXRlcyk6
CisgICAgICAgICIiIlNlZSBTbWFydENsaWVudE1lZGl1bS5hY2NlcHRfYnl0ZXMuIiIiCisgICAg
ICAgIHNlbGYuX2Vuc3VyZV9jb25uZWN0aW9uKCkKKyAgICAgICAgc2VsZi5fc29ja2V0LnNlbmRh
bGwoYnl0ZXMpCisKKyAgICBkZWYgZGlzY29ubmVjdChzZWxmKToKKyAgICAgICAgIiIiU2VlIFNt
YXJ0Q2xpZW50TWVkaXVtLmRpc2Nvbm5lY3QoKS4iIiIKKyAgICAgICAgaWYgbm90IHNlbGYuX2Nv
bm5lY3RlZDoKKyAgICAgICAgICAgIHJldHVybgorICAgICAgICBzZWxmLl9zb2NrZXQuY2xvc2Uo
KQorICAgICAgICBzZWxmLl9zb2NrZXQgPSBOb25lCisgICAgICAgIHNlbGYuX2Nvbm5lY3RlZCA9
IEZhbHNlCisKKyAgICBkZWYgX2Vuc3VyZV9jb25uZWN0aW9uKHNlbGYpOgorICAgICAgICAiIiJD
b25uZWN0IHRoaXMgbWVkaXVtIGlmIG5vdCBhbHJlYWR5IGNvbm5lY3RlZC4iIiIKKyAgICAgICAg
aWYgc2VsZi5fY29ubmVjdGVkOgorICAgICAgICAgICAgcmV0dXJuCisgICAgICAgIHNlbGYuX3Nv
Y2tldCA9IHNvY2tldC5zb2NrZXQoKQorICAgICAgICBzZWxmLl9zb2NrZXQuc2V0c29ja29wdChz
b2NrZXQuSVBQUk9UT19UQ1AsIHNvY2tldC5UQ1BfTk9ERUxBWSwgMSkKKyAgICAgICAgcmVzdWx0
ID0gc2VsZi5fc29ja2V0LmNvbm5lY3RfZXgoKHNlbGYuX2hvc3QsIGludChzZWxmLl9wb3J0KSkp
CisgICAgICAgIGlmIHJlc3VsdDoKKyAgICAgICAgICAgIHJhaXNlIGVycm9ycy5Db25uZWN0aW9u
RXJyb3IoImZhaWxlZCB0byBjb25uZWN0IHRvICVzOiVkOiAlcyIgJQorICAgICAgICAgICAgICAg
ICAgICAoc2VsZi5faG9zdCwgc2VsZi5fcG9ydCwgb3Muc3RyZXJyb3IocmVzdWx0KSkpCisgICAg
ICAgIHNlbGYuX2Nvbm5lY3RlZCA9IFRydWUKKworICAgIGRlZiBfZmx1c2goc2VsZik6CisgICAg
ICAgICIiIlNlZSBTbWFydENsaWVudFN0cmVhbU1lZGl1bS5fZmx1c2goKS4KKyAgICAgICAgCisg
ICAgICAgIEZvciBUQ1Agd2UgZG8gbm8gZmx1c2hpbmcuIFdlIG1heSB3YW50IHRvIHR1cm4gb2Zm
IFRDUF9OT0RFTEFZIGFuZCAKKyAgICAgICAgYWRkIGEgbWVhbnMgdG8gZG8gYSBmbHVzaCwgYnV0
IHRoYXQgY2FuIGJlIGRvbmUgaW4gdGhlIGZ1dHVyZS4KKyAgICAgICAgIiIiCisKKyAgICBkZWYg
X3JlYWRfYnl0ZXMoc2VsZiwgY291bnQpOgorICAgICAgICAiIiJTZWUgU21hcnRDbGllbnRNZWRp
dW0ucmVhZF9ieXRlcy4iIiIKKyAgICAgICAgaWYgbm90IHNlbGYuX2Nvbm5lY3RlZDoKKyAgICAg
ICAgICAgIHJhaXNlIGVycm9ycy5NZWRpdW1Ob3RDb25uZWN0ZWQoc2VsZikKKyAgICAgICAgcmV0
dXJuIHNlbGYuX3NvY2tldC5yZWN2KGNvdW50KQorCisKK2NsYXNzIFNtYXJ0Q2xpZW50U3RyZWFt
TWVkaXVtUmVxdWVzdChTbWFydENsaWVudE1lZGl1bVJlcXVlc3QpOgorICAgICIiIkEgU21hcnRD
bGllbnRNZWRpdW1SZXF1ZXN0IHRoYXQgd29ya3Mgd2l0aCBhbiBTbWFydENsaWVudFN0cmVhbU1l
ZGl1bS4iIiIKKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCBtZWRpdW0pOgorICAgICAgICBTbWFy
dENsaWVudE1lZGl1bVJlcXVlc3QuX19pbml0X18oc2VsZiwgbWVkaXVtKQorICAgICAgICAjIGNo
ZWNrIHRoYXQgd2UgYXJlIHNhZmUgY29uY3VycmVuY3kgd2lzZS4gSWYgc29tZSBzdHJlYW1zIHN0
YXJ0CisgICAgICAgICMgYWxsb3dpbmcgY29uY3VycmVudCByZXF1ZXN0cyAtIGkuZS4gdmlhIG11
bHRpcGxleGluZyAtIHRoZW4gdGhpcworICAgICAgICAjIGFzc2VydCBzaG91bGQgYmUgbW92ZWQg
dG8gU21hcnRDbGllbnRTdHJlYW1NZWRpdW0uZ2V0X3JlcXVlc3QsCisgICAgICAgICMgYW5kIHRo
ZSBzZXR0aW5nL3Vuc2V0dGluZyBvZiBfY3VycmVudF9yZXF1ZXN0IGxpa2V3aXNlIG1vdmVkIGlu
dG8KKyAgICAgICAgIyB0aGF0IGNsYXNzIDogYnV0IGl0cyB1bm5lZWRlZCBvdmVyaGVhZCBmb3Ig
bm93LiBSQkMgMjAwNjA5MjIKKyAgICAgICAgaWYgc2VsZi5fbWVkaXVtLl9jdXJyZW50X3JlcXVl
c3QgaXMgbm90IE5vbmU6CisgICAgICAgICAgICByYWlzZSBlcnJvcnMuVG9vTWFueUNvbmN1cnJl
bnRSZXF1ZXN0cyhzZWxmLl9tZWRpdW0pCisgICAgICAgIHNlbGYuX21lZGl1bS5fY3VycmVudF9y
ZXF1ZXN0ID0gc2VsZgorCisgICAgZGVmIF9hY2NlcHRfYnl0ZXMoc2VsZiwgYnl0ZXMpOgorICAg
ICAgICAiIiJTZWUgU21hcnRDbGllbnRNZWRpdW1SZXF1ZXN0Ll9hY2NlcHRfYnl0ZXMuCisgICAg
ICAgIAorICAgICAgICBUaGlzIGZvcndhcmRzIHRvIHNlbGYuX21lZGl1bS5fYWNjZXB0X2J5dGVz
IGJlY2F1c2Ugd2UgYXJlIG9wZXJhdGluZworICAgICAgICBvbiB0aGUgbWVkaXVtcyBzdHJlYW0u
CisgICAgICAgICIiIgorICAgICAgICBzZWxmLl9tZWRpdW0uX2FjY2VwdF9ieXRlcyhieXRlcykK
KworICAgIGRlZiBfZmluaXNoZWRfcmVhZGluZyhzZWxmKToKKyAgICAgICAgIiIiU2VlIFNtYXJ0
Q2xpZW50TWVkaXVtUmVxdWVzdC5fZmluaXNoZWRfcmVhZGluZy4KKworICAgICAgICBUaGlzIGNs
ZWFycyB0aGUgX2N1cnJlbnRfcmVxdWVzdCBvbiBzZWxmLl9tZWRpdW0gdG8gYWxsb3cgYSBuZXcg
CisgICAgICAgIHJlcXVlc3QgdG8gYmUgY3JlYXRlZC4KKyAgICAgICAgIiIiCisgICAgICAgIGFz
c2VydCBzZWxmLl9tZWRpdW0uX2N1cnJlbnRfcmVxdWVzdCBpcyBzZWxmCisgICAgICAgIHNlbGYu
X21lZGl1bS5fY3VycmVudF9yZXF1ZXN0ID0gTm9uZQorICAgICAgICAKKyAgICBkZWYgX2Zpbmlz
aGVkX3dyaXRpbmcoc2VsZik6CisgICAgICAgICIiIlNlZSBTbWFydENsaWVudE1lZGl1bVJlcXVl
c3QuX2ZpbmlzaGVkX3dyaXRpbmcuCisKKyAgICAgICAgVGhpcyBpbnZva2VzIHNlbGYuX21lZGl1
bS5fZmx1c2ggdG8gZW5zdXJlIGFsbCBieXRlcyBhcmUgdHJhbnNtaXR0ZWQuCisgICAgICAgICIi
IgorICAgICAgICBzZWxmLl9tZWRpdW0uX2ZsdXNoKCkKKworICAgIGRlZiBfcmVhZF9ieXRlcyhz
ZWxmLCBjb3VudCk6CisgICAgICAgICIiIlNlZSBTbWFydENsaWVudE1lZGl1bVJlcXVlc3QuX3Jl
YWRfYnl0ZXMuCisgICAgICAgIAorICAgICAgICBUaGlzIGZvcndhcmRzIHRvIHNlbGYuX21lZGl1
bS5fcmVhZF9ieXRlcyBiZWNhdXNlIHdlIGFyZSBvcGVyYXRpbmcKKyAgICAgICAgb24gdGhlIG1l
ZGl1bXMgc3RyZWFtLgorICAgICAgICAiIiIKKyAgICAgICAgcmV0dXJuIHNlbGYuX21lZGl1bS5f
cmVhZF9ieXRlcyhjb3VudCkKKwoK

=== added file bzrlib/smart/protocol.py // file-id:protocol.py-20061108035435-o
... t0lstk2590yqhzr-1 // last-changed:andrew.bennetts@canonical.com-20070426060
... 131-zaumabdzwl8nrlux // encoding:base64
LS0tIC9kZXYvbnVsbAorKysgYnpybGliL3NtYXJ0L3Byb3RvY29sLnB5CkBAIC0wLDAgKzEsNDI5
IEBACisjIENvcHlyaWdodCAoQykgMjAwNiwgMjAwNyBDYW5vbmljYWwgTHRkCisjCisjIFRoaXMg
cHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3Ig
bW9kaWZ5CisjIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExp
Y2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisjIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVp
dGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCisjIChhdCB5b3VyIG9wdGlvbikgYW55
IGxhdGVyIHZlcnNpb24uCisjCisjIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUg
aG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7
IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorIyBNRVJDSEFOVEFCSUxJVFkg
b3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisjIEdOVSBHZW5l
cmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisjCisjIFlvdSBzaG91bGQgaGF2
ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisjIGFs
b25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJl
CisjIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24s
IE1BICAwMjExMS0xMzA3ICBVU0EKKworIiIiV2lyZS1sZXZlbCBlbmNvZGluZyBhbmQgZGVjb2Rp
bmcgb2YgcmVxdWVzdHMgYW5kIHJlc3BvbnNlcyBmb3IgdGhlIHNtYXJ0CitjbGllbnQgYW5kIHNl
cnZlci4KKyIiIgorCisKK2Zyb20gY1N0cmluZ0lPIGltcG9ydCBTdHJpbmdJTworCitmcm9tIGJ6
cmxpYiBpbXBvcnQgZXJyb3JzCitmcm9tIGJ6cmxpYi5zbWFydCBpbXBvcnQgcmVxdWVzdAorCisK
KyMgUHJvdG9jb2wgdmVyc2lvbiBzdHJpbmdzLiAgVGhlc2UgYXJlIHNlbnQgYXMgcHJlZml4ZXMg
b2YgYnpyIHJlcXVlc3RzIGFuZAorIyByZXNwb25zZXMgdG8gaWRlbnRpZnkgdGhlIHByb3RvY29s
IHZlcnNpb24gYmVpbmcgdXNlZC4gKFRoZXJlIGFyZSBubyB2ZXJzaW9uCisjIG9uZSBzdHJpbmdz
IGJlY2F1c2UgdGhhdCB2ZXJzaW9uIGRvZXNuJ3Qgc2VuZCBhbnkpLgorUkVRVUVTVF9WRVJTSU9O
X1RXTyA9ICdienIgcmVxdWVzdCAyXG4nCitSRVNQT05TRV9WRVJTSU9OX1RXTyA9ICdienIgcmVz
cG9uc2UgMlxuJworCisKK2RlZiBfcmVjdl90dXBsZShmcm9tX2ZpbGUpOgorICAgIHJlcV9saW5l
ID0gZnJvbV9maWxlLnJlYWRsaW5lKCkKKyAgICByZXR1cm4gX2RlY29kZV90dXBsZShyZXFfbGlu
ZSkKKworCitkZWYgX2RlY29kZV90dXBsZShyZXFfbGluZSk6CisgICAgaWYgcmVxX2xpbmUgPT0g
Tm9uZSBvciByZXFfbGluZSA9PSAnJzoKKyAgICAgICAgcmV0dXJuIE5vbmUKKyAgICBpZiByZXFf
bGluZVstMV0gIT0gJ1xuJzoKKyAgICAgICAgcmFpc2UgZXJyb3JzLlNtYXJ0UHJvdG9jb2xFcnJv
cigicmVxdWVzdCAlciBub3QgdGVybWluYXRlZCIgJSByZXFfbGluZSkKKyAgICByZXR1cm4gdHVw
bGUocmVxX2xpbmVbOi0xXS5zcGxpdCgnXHgwMScpKQorCisKK2RlZiBfZW5jb2RlX3R1cGxlKGFy
Z3MpOgorICAgICIiIkVuY29kZSB0aGUgdHVwbGUgYXJncyB0byBhIGJ5dGVzdHJlYW0uIiIiCisg
ICAgcmV0dXJuICdceDAxJy5qb2luKGFyZ3MpICsgJ1xuJworCisKK2NsYXNzIFNtYXJ0UHJvdG9j
b2xCYXNlKG9iamVjdCk6CisgICAgIiIiTWV0aG9kcyBjb21tb24gdG8gY2xpZW50IGFuZCBzZXJ2
ZXIiIiIKKworICAgICMgVE9ETzogdGhpcyBvbmx5IGFjdHVhbGx5IGFjY29tb2RhdGVzIGEgc2lu
Z2xlIGJsb2NrOyBwb3NzaWJseSBzaG91bGQKKyAgICAjIHN1cHBvcnQgbXVsdGlwbGUgY2h1bmtz
PworICAgIGRlZiBfZW5jb2RlX2J1bGtfZGF0YShzZWxmLCBib2R5KToKKyAgICAgICAgIiIiRW5j
b2RlIGJvZHkgYXMgYSBidWxrIGRhdGEgY2h1bmsuIiIiCisgICAgICAgIHJldHVybiAnJy5qb2lu
KCgnJWRcbicgJSBsZW4oYm9keSksIGJvZHksICdkb25lXG4nKSkKKworICAgIGRlZiBfc2VyaWFs
aXNlX29mZnNldHMoc2VsZiwgb2Zmc2V0cyk6CisgICAgICAgICIiIlNlcmlhbGlzZSBhIHJlYWR2
IG9mZnNldCBsaXN0LiIiIgorICAgICAgICB0eHQgPSBbXQorICAgICAgICBmb3Igc3RhcnQsIGxl
bmd0aCBpbiBvZmZzZXRzOgorICAgICAgICAgICAgdHh0LmFwcGVuZCgnJWQsJWQnICUgKHN0YXJ0
LCBsZW5ndGgpKQorICAgICAgICByZXR1cm4gJ1xuJy5qb2luKHR4dCkKKyAgICAgICAgCisKK2Ns
YXNzIFNtYXJ0U2VydmVyUmVxdWVzdFByb3RvY29sT25lKFNtYXJ0UHJvdG9jb2xCYXNlKToKKyAg
ICAiIiJTZXJ2ZXItc2lkZSBlbmNvZGluZyBhbmQgZGVjb2RpbmcgbG9naWMgZm9yIHNtYXJ0IHZl
cnNpb24gMS4iIiIKKyAgICAKKyAgICBkZWYgX19pbml0X18oc2VsZiwgYmFja2luZ190cmFuc3Bv
cnQsIHdyaXRlX2Z1bmMpOgorICAgICAgICBzZWxmLl9iYWNraW5nX3RyYW5zcG9ydCA9IGJhY2tp
bmdfdHJhbnNwb3J0CisgICAgICAgIHNlbGYuZXhjZXNzX2J1ZmZlciA9ICcnCisgICAgICAgIHNl
bGYuX2ZpbmlzaGVkID0gRmFsc2UKKyAgICAgICAgc2VsZi5pbl9idWZmZXIgPSAnJworICAgICAg
ICBzZWxmLmhhc19kaXNwYXRjaGVkID0gRmFsc2UKKyAgICAgICAgc2VsZi5yZXF1ZXN0ID0gTm9u
ZQorICAgICAgICBzZWxmLl9ib2R5X2RlY29kZXIgPSBOb25lCisgICAgICAgIHNlbGYuX3dyaXRl
X2Z1bmMgPSB3cml0ZV9mdW5jCisKKyAgICBkZWYgYWNjZXB0X2J5dGVzKHNlbGYsIGJ5dGVzKToK
KyAgICAgICAgIiIiVGFrZSBieXRlcywgYW5kIGFkdmFuY2UgdGhlIGludGVybmFsIHN0YXRlIG1h
Y2hpbmUgYXBwcm9wcmlhdGVseS4KKyAgICAgICAgCisgICAgICAgIDpwYXJhbSBieXRlczogbXVz
dCBiZSBhIGJ5dGUgc3RyaW5nCisgICAgICAgICIiIgorICAgICAgICBhc3NlcnQgaXNpbnN0YW5j
ZShieXRlcywgc3RyKQorICAgICAgICBzZWxmLmluX2J1ZmZlciArPSBieXRlcworICAgICAgICBp
ZiBub3Qgc2VsZi5oYXNfZGlzcGF0Y2hlZDoKKyAgICAgICAgICAgIGlmICdcbicgbm90IGluIHNl
bGYuaW5fYnVmZmVyOgorICAgICAgICAgICAgICAgICMgbm8gY29tbWFuZCBsaW5lIHlldAorICAg
ICAgICAgICAgICAgIHJldHVybgorICAgICAgICAgICAgc2VsZi5oYXNfZGlzcGF0Y2hlZCA9IFRy
dWUKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBmaXJzdF9saW5lLCBzZWxmLmlu
X2J1ZmZlciA9IHNlbGYuaW5fYnVmZmVyLnNwbGl0KCdcbicsIDEpCisgICAgICAgICAgICAgICAg
Zmlyc3RfbGluZSArPSAnXG4nCisgICAgICAgICAgICAgICAgcmVxX2FyZ3MgPSBfZGVjb2RlX3R1
cGxlKGZpcnN0X2xpbmUpCisgICAgICAgICAgICAgICAgc2VsZi5yZXF1ZXN0ID0gcmVxdWVzdC5T
bWFydFNlcnZlclJlcXVlc3RIYW5kbGVyKAorICAgICAgICAgICAgICAgICAgICBzZWxmLl9iYWNr
aW5nX3RyYW5zcG9ydCwgY29tbWFuZHM9cmVxdWVzdC5yZXF1ZXN0X2hhbmRsZXJzKQorICAgICAg
ICAgICAgICAgIHNlbGYucmVxdWVzdC5kaXNwYXRjaF9jb21tYW5kKHJlcV9hcmdzWzBdLCByZXFf
YXJnc1sxOl0pCisgICAgICAgICAgICAgICAgaWYgc2VsZi5yZXF1ZXN0LmZpbmlzaGVkX3JlYWRp
bmc6CisgICAgICAgICAgICAgICAgICAgICMgdHJpdmlhbCByZXF1ZXN0CisgICAgICAgICAgICAg
ICAgICAgIHNlbGYuZXhjZXNzX2J1ZmZlciA9IHNlbGYuaW5fYnVmZmVyCisgICAgICAgICAgICAg
ICAgICAgIHNlbGYuaW5fYnVmZmVyID0gJycKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5fc2Vu
ZF9yZXNwb25zZShzZWxmLnJlcXVlc3QucmVzcG9uc2UpCisgICAgICAgICAgICBleGNlcHQgS2V5
Ym9hcmRJbnRlcnJ1cHQ6CisgICAgICAgICAgICAgICAgcmFpc2UKKyAgICAgICAgICAgIGV4Y2Vw
dCBFeGNlcHRpb24sIGV4Y2VwdGlvbjoKKyAgICAgICAgICAgICAgICAjIGV2ZXJ5dGhpbmcgZWxz
ZTogcGFzcyB0byBjbGllbnQsIGZsdXNoLCBhbmQgcXVpdAorICAgICAgICAgICAgICAgIHNlbGYu
X3NlbmRfcmVzcG9uc2UocmVxdWVzdC5GYWlsZWRTbWFydFNlcnZlclJlc3BvbnNlKAorICAgICAg
ICAgICAgICAgICAgICAoJ2Vycm9yJywgc3RyKGV4Y2VwdGlvbikpKSkKKyAgICAgICAgICAgICAg
ICByZXR1cm4KKworICAgICAgICBpZiBzZWxmLmhhc19kaXNwYXRjaGVkOgorICAgICAgICAgICAg
aWYgc2VsZi5fZmluaXNoZWQ6CisgICAgICAgICAgICAgICAgIyBub3RoaW5nIHRvIGRvLlhYWDog
dGhpcyByb3V0aW5lIHNob3VsZCBiZSBhIHNpbmdsZSBzdGF0ZSAKKyAgICAgICAgICAgICAgICAj
IG1hY2hpbmUgdG9vLgorICAgICAgICAgICAgICAgIHNlbGYuZXhjZXNzX2J1ZmZlciArPSBzZWxm
LmluX2J1ZmZlcgorICAgICAgICAgICAgICAgIHNlbGYuaW5fYnVmZmVyID0gJycKKyAgICAgICAg
ICAgICAgICByZXR1cm4KKyAgICAgICAgICAgIGlmIHNlbGYuX2JvZHlfZGVjb2RlciBpcyBOb25l
OgorICAgICAgICAgICAgICAgIHNlbGYuX2JvZHlfZGVjb2RlciA9IExlbmd0aFByZWZpeGVkQm9k
eURlY29kZXIoKQorICAgICAgICAgICAgc2VsZi5fYm9keV9kZWNvZGVyLmFjY2VwdF9ieXRlcyhz
ZWxmLmluX2J1ZmZlcikKKyAgICAgICAgICAgIHNlbGYuaW5fYnVmZmVyID0gc2VsZi5fYm9keV9k
ZWNvZGVyLnVudXNlZF9kYXRhCisgICAgICAgICAgICBib2R5X2RhdGEgPSBzZWxmLl9ib2R5X2Rl
Y29kZXIucmVhZF9wZW5kaW5nX2RhdGEoKQorICAgICAgICAgICAgc2VsZi5yZXF1ZXN0LmFjY2Vw
dF9ib2R5KGJvZHlfZGF0YSkKKyAgICAgICAgICAgIGlmIHNlbGYuX2JvZHlfZGVjb2Rlci5maW5p
c2hlZF9yZWFkaW5nOgorICAgICAgICAgICAgICAgIHNlbGYucmVxdWVzdC5lbmRfb2ZfYm9keSgp
CisgICAgICAgICAgICAgICAgYXNzZXJ0IHNlbGYucmVxdWVzdC5maW5pc2hlZF9yZWFkaW5nLCBc
CisgICAgICAgICAgICAgICAgICAgICJubyBtb3JlIGJvZHksIHJlcXVlc3Qgbm90IGZpbmlzaGVk
IgorICAgICAgICAgICAgaWYgc2VsZi5yZXF1ZXN0LnJlc3BvbnNlIGlzIG5vdCBOb25lOgorICAg
ICAgICAgICAgICAgIHNlbGYuX3NlbmRfcmVzcG9uc2Uoc2VsZi5yZXF1ZXN0LnJlc3BvbnNlKQor
ICAgICAgICAgICAgICAgIHNlbGYuZXhjZXNzX2J1ZmZlciA9IHNlbGYuaW5fYnVmZmVyCisgICAg
ICAgICAgICAgICAgc2VsZi5pbl9idWZmZXIgPSAnJworICAgICAgICAgICAgZWxzZToKKyAgICAg
ICAgICAgICAgICBhc3NlcnQgbm90IHNlbGYucmVxdWVzdC5maW5pc2hlZF9yZWFkaW5nLCBcCisg
ICAgICAgICAgICAgICAgICAgICJubyByZXNwb25zZSBhbmQgd2UgaGF2ZSBmaW5pc2hlZCByZWFk
aW5nLiIKKworICAgIGRlZiBfc2VuZF9yZXNwb25zZShzZWxmLCByZXNwb25zZSk6CisgICAgICAg
ICIiIlNlbmQgYSBzbWFydCBzZXJ2ZXIgcmVzcG9uc2UgZG93biB0aGUgb3V0cHV0IHN0cmVhbS4i
IiIKKyAgICAgICAgYXNzZXJ0IG5vdCBzZWxmLl9maW5pc2hlZCwgJ3Jlc3BvbnNlIGFscmVhZHkg
c2VudCcKKyAgICAgICAgYXJncyA9IHJlc3BvbnNlLmFyZ3MKKyAgICAgICAgYm9keSA9IHJlc3Bv
bnNlLmJvZHkKKyAgICAgICAgc2VsZi5fZmluaXNoZWQgPSBUcnVlCisgICAgICAgIHNlbGYuX3dy
aXRlX3Byb3RvY29sX3ZlcnNpb24oKQorICAgICAgICBzZWxmLl93cml0ZV9zdWNjZXNzX29yX2Zh
aWx1cmVfcHJlZml4KHJlc3BvbnNlKQorICAgICAgICBzZWxmLl93cml0ZV9mdW5jKF9lbmNvZGVf
dHVwbGUoYXJncykpCisgICAgICAgIGlmIGJvZHkgaXMgbm90IE5vbmU6CisgICAgICAgICAgICBh
c3NlcnQgaXNpbnN0YW5jZShib2R5LCBzdHIpLCAnYm9keSBtdXN0IGJlIGEgc3RyJworICAgICAg
ICAgICAgYnl0ZXMgPSBzZWxmLl9lbmNvZGVfYnVsa19kYXRhKGJvZHkpCisgICAgICAgICAgICBz
ZWxmLl93cml0ZV9mdW5jKGJ5dGVzKQorCisgICAgZGVmIF93cml0ZV9wcm90b2NvbF92ZXJzaW9u
KHNlbGYpOgorICAgICAgICAiIiJXcml0ZSBhbnkgcHJlZml4ZXMgdGhpcyBwcm90b2NvbCByZXF1
aXJlcy4KKyAgICAgICAgCisgICAgICAgIFZlcnNpb24gb25lIGRvZXNuJ3Qgc2VuZCBwcm90b2Nv
bCB2ZXJzaW9ucy4KKyAgICAgICAgIiIiCisKKyAgICBkZWYgX3dyaXRlX3N1Y2Nlc3Nfb3JfZmFp
bHVyZV9wcmVmaXgoc2VsZiwgcmVzcG9uc2UpOgorICAgICAgICAiIiJXcml0ZSB0aGUgcHJvdG9j
b2wgc3BlY2lmaWMgc3VjY2Vzcy9mYWlsdXJlIHByZWZpeC4KKworICAgICAgICBGb3IgU21hcnRT
ZXJ2ZXJSZXF1ZXN0UHJvdG9jb2xPbmUgdGhpcyBpcyBvbWl0dGVkIGJ1dCB3ZQorICAgICAgICBj
YWxsIGlzX3N1Y2Nlc3NmdWwgdG8gZW5zdXJlIHRoYXQgdGhlIHJlc3BvbnNlIGlzIHZhbGlkLgor
ICAgICAgICAiIiIKKyAgICAgICAgcmVzcG9uc2UuaXNfc3VjY2Vzc2Z1bCgpCisKKyAgICBkZWYg
bmV4dF9yZWFkX3NpemUoc2VsZik6CisgICAgICAgIGlmIHNlbGYuX2ZpbmlzaGVkOgorICAgICAg
ICAgICAgcmV0dXJuIDAKKyAgICAgICAgaWYgc2VsZi5fYm9keV9kZWNvZGVyIGlzIE5vbmU6Cisg
ICAgICAgICAgICByZXR1cm4gMQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgcmV0dXJuIHNl
bGYuX2JvZHlfZGVjb2Rlci5uZXh0X3JlYWRfc2l6ZSgpCisKKworY2xhc3MgU21hcnRTZXJ2ZXJS
ZXF1ZXN0UHJvdG9jb2xUd28oU21hcnRTZXJ2ZXJSZXF1ZXN0UHJvdG9jb2xPbmUpOgorICAgIHIi
IiJWZXJzaW9uIHR3byBvZiB0aGUgc2VydmVyIHNpZGUgb2YgdGhlIHNtYXJ0IHByb3RvY29sLgor
ICAgCisgICAgVGhpcyBwcmVmaXhlcyByZXNwb25zZXMgd2l0aCB0aGUgdmFsdWUgb2YgUkVTUE9O
U0VfVkVSU0lPTl9UV08uCisgICAgIiIiCisKKyAgICBkZWYgX3dyaXRlX3N1Y2Nlc3Nfb3JfZmFp
bHVyZV9wcmVmaXgoc2VsZiwgcmVzcG9uc2UpOgorICAgICAgICAiIiJXcml0ZSB0aGUgcHJvdG9j
b2wgc3BlY2lmaWMgc3VjY2Vzcy9mYWlsdXJlIHByZWZpeC4iIiIKKyAgICAgICAgaWYgcmVzcG9u
c2UuaXNfc3VjY2Vzc2Z1bCgpOgorICAgICAgICAgICAgc2VsZi5fd3JpdGVfZnVuYygnc3VjY2Vz
c1xuJykKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNlbGYuX3dyaXRlX2Z1bmMoJ2ZhaWxl
ZFxuJykKKworICAgIGRlZiBfd3JpdGVfcHJvdG9jb2xfdmVyc2lvbihzZWxmKToKKyAgICAgICAg
ciIiIldyaXRlIGFueSBwcmVmaXhlcyB0aGlzIHByb3RvY29sIHJlcXVpcmVzLgorICAgICAgICAK
KyAgICAgICAgVmVyc2lvbiB0d28gc2VuZHMgdGhlIHZhbHVlIG9mIFJFU1BPTlNFX1ZFUlNJT05f
VFdPLgorICAgICAgICAiIiIKKyAgICAgICAgc2VsZi5fd3JpdGVfZnVuYyhSRVNQT05TRV9WRVJT
SU9OX1RXTykKKworCitjbGFzcyBMZW5ndGhQcmVmaXhlZEJvZHlEZWNvZGVyKG9iamVjdCk6Cisg
ICAgIiIiRGVjb2RlcyB0aGUgbGVuZ3RoLXByZWZpeGVkIGJ1bGsgZGF0YS4iIiIKKyAgICAKKyAg
ICBkZWYgX19pbml0X18oc2VsZik6CisgICAgICAgIHNlbGYuYnl0ZXNfbGVmdCA9IE5vbmUKKyAg
ICAgICAgc2VsZi5maW5pc2hlZF9yZWFkaW5nID0gRmFsc2UKKyAgICAgICAgc2VsZi51bnVzZWRf
ZGF0YSA9ICcnCisgICAgICAgIHNlbGYuc3RhdGVfYWNjZXB0ID0gc2VsZi5fc3RhdGVfYWNjZXB0
X2V4cGVjdGluZ19sZW5ndGgKKyAgICAgICAgc2VsZi5zdGF0ZV9yZWFkID0gc2VsZi5fc3RhdGVf
cmVhZF9ub19kYXRhCisgICAgICAgIHNlbGYuX2luX2J1ZmZlciA9ICcnCisgICAgICAgIHNlbGYu
X3RyYWlsZXJfYnVmZmVyID0gJycKKyAgICAKKyAgICBkZWYgYWNjZXB0X2J5dGVzKHNlbGYsIGJ5
dGVzKToKKyAgICAgICAgIiIiRGVjb2RlIGFzIG11Y2ggb2YgYnl0ZXMgYXMgcG9zc2libGUuCisK
KyAgICAgICAgSWYgJ2J5dGVzJyBjb250YWlucyB0b28gbXVjaCBkYXRhIGl0IHdpbGwgYmUgYXBw
ZW5kZWQgdG8KKyAgICAgICAgc2VsZi51bnVzZWRfZGF0YS4KKworICAgICAgICBmaW5pc2hlZF9y
ZWFkaW5nIHdpbGwgYmUgc2V0IHdoZW4gbm8gbW9yZSBkYXRhIGlzIHJlcXVpcmVkLiAgRnVydGhl
cgorICAgICAgICBkYXRhIHdpbGwgYmUgYXBwZW5kZWQgdG8gc2VsZi51bnVzZWRfZGF0YS4KKyAg
ICAgICAgIiIiCisgICAgICAgICMgYWNjZXB0X2J5dGVzIGlzIGFsbG93ZWQgdG8gY2hhbmdlIHRo
ZSBzdGF0ZQorICAgICAgICBjdXJyZW50X3N0YXRlID0gc2VsZi5zdGF0ZV9hY2NlcHQKKyAgICAg
ICAgc2VsZi5zdGF0ZV9hY2NlcHQoYnl0ZXMpCisgICAgICAgIHdoaWxlIGN1cnJlbnRfc3RhdGUg
IT0gc2VsZi5zdGF0ZV9hY2NlcHQ6CisgICAgICAgICAgICBjdXJyZW50X3N0YXRlID0gc2VsZi5z
dGF0ZV9hY2NlcHQKKyAgICAgICAgICAgIHNlbGYuc3RhdGVfYWNjZXB0KCcnKQorCisgICAgZGVm
IG5leHRfcmVhZF9zaXplKHNlbGYpOgorICAgICAgICBpZiBzZWxmLmJ5dGVzX2xlZnQgaXMgbm90
IE5vbmU6CisgICAgICAgICAgICAjIElkZWFsbHkgd2Ugd2FudCB0byByZWFkIGFsbCB0aGUgcmVt
YWluZGVyIG9mIHRoZSBib2R5IGFuZCB0aGUKKyAgICAgICAgICAgICMgdHJhaWxlciBpbiBvbmUg
Z28uCisgICAgICAgICAgICByZXR1cm4gc2VsZi5ieXRlc19sZWZ0ICsgNQorICAgICAgICBlbGlm
IHNlbGYuc3RhdGVfYWNjZXB0ID09IHNlbGYuX3N0YXRlX2FjY2VwdF9yZWFkaW5nX3RyYWlsZXI6
CisgICAgICAgICAgICAjIEp1c3QgdGhlIHRyYWlsZXIgbGVmdAorICAgICAgICAgICAgcmV0dXJu
IDUgLSBsZW4oc2VsZi5fdHJhaWxlcl9idWZmZXIpCisgICAgICAgIGVsaWYgc2VsZi5zdGF0ZV9h
Y2NlcHQgPT0gc2VsZi5fc3RhdGVfYWNjZXB0X2V4cGVjdGluZ19sZW5ndGg6CisgICAgICAgICAg
ICAjIFRoZXJlJ3Mgc3RpbGwgYXQgbGVhc3QgNiBieXRlcyBsZWZ0ICgnXG4nIHRvIGVuZCB0aGUg
bGVuZ3RoLCBwbHVzCisgICAgICAgICAgICAjICdkb25lXG4nKS4KKyAgICAgICAgICAgIHJldHVy
biA2CisgICAgICAgIGVsc2U6CisgICAgICAgICAgICAjIFJlYWRpbmcgZXhjZXNzIGRhdGEuICBF
aXRoZXIgd2F5LCAxIGJ5dGUgYXQgYSB0aW1lIGlzIGZpbmUuCisgICAgICAgICAgICByZXR1cm4g
MQorICAgICAgICAKKyAgICBkZWYgcmVhZF9wZW5kaW5nX2RhdGEoc2VsZik6CisgICAgICAgICIi
IlJldHVybiBhbnkgcGVuZGluZyBkYXRhIHRoYXQgaGFzIGJlZW4gZGVjb2RlZC4iIiIKKyAgICAg
ICAgcmV0dXJuIHNlbGYuc3RhdGVfcmVhZCgpCisKKyAgICBkZWYgX3N0YXRlX2FjY2VwdF9leHBl
Y3RpbmdfbGVuZ3RoKHNlbGYsIGJ5dGVzKToKKyAgICAgICAgc2VsZi5faW5fYnVmZmVyICs9IGJ5
dGVzCisgICAgICAgIHBvcyA9IHNlbGYuX2luX2J1ZmZlci5maW5kKCdcbicpCisgICAgICAgIGlm
IHBvcyA9PSAtMToKKyAgICAgICAgICAgIHJldHVybgorICAgICAgICBzZWxmLmJ5dGVzX2xlZnQg
PSBpbnQoc2VsZi5faW5fYnVmZmVyWzpwb3NdKQorICAgICAgICBzZWxmLl9pbl9idWZmZXIgPSBz
ZWxmLl9pbl9idWZmZXJbcG9zKzE6XQorICAgICAgICBzZWxmLmJ5dGVzX2xlZnQgLT0gbGVuKHNl
bGYuX2luX2J1ZmZlcikKKyAgICAgICAgc2VsZi5zdGF0ZV9hY2NlcHQgPSBzZWxmLl9zdGF0ZV9h
Y2NlcHRfcmVhZGluZ19ib2R5CisgICAgICAgIHNlbGYuc3RhdGVfcmVhZCA9IHNlbGYuX3N0YXRl
X3JlYWRfaW5fYnVmZmVyCisKKyAgICBkZWYgX3N0YXRlX2FjY2VwdF9yZWFkaW5nX2JvZHkoc2Vs
ZiwgYnl0ZXMpOgorICAgICAgICBzZWxmLl9pbl9idWZmZXIgKz0gYnl0ZXMKKyAgICAgICAgc2Vs
Zi5ieXRlc19sZWZ0IC09IGxlbihieXRlcykKKyAgICAgICAgaWYgc2VsZi5ieXRlc19sZWZ0IDw9
IDA6CisgICAgICAgICAgICAjIEZpbmlzaGVkIHdpdGggYm9keQorICAgICAgICAgICAgaWYgc2Vs
Zi5ieXRlc19sZWZ0ICE9IDA6CisgICAgICAgICAgICAgICAgc2VsZi5fdHJhaWxlcl9idWZmZXIg
PSBzZWxmLl9pbl9idWZmZXJbc2VsZi5ieXRlc19sZWZ0Ol0KKyAgICAgICAgICAgICAgICBzZWxm
Ll9pbl9idWZmZXIgPSBzZWxmLl9pbl9idWZmZXJbOnNlbGYuYnl0ZXNfbGVmdF0KKyAgICAgICAg
ICAgIHNlbGYuYnl0ZXNfbGVmdCA9IE5vbmUKKyAgICAgICAgICAgIHNlbGYuc3RhdGVfYWNjZXB0
ID0gc2VsZi5fc3RhdGVfYWNjZXB0X3JlYWRpbmdfdHJhaWxlcgorICAgICAgICAKKyAgICBkZWYg
X3N0YXRlX2FjY2VwdF9yZWFkaW5nX3RyYWlsZXIoc2VsZiwgYnl0ZXMpOgorICAgICAgICBzZWxm
Ll90cmFpbGVyX2J1ZmZlciArPSBieXRlcworICAgICAgICAjIFRPRE86IHdoYXQgaWYgdGhlIHRy
YWlsZXIgZG9lcyBub3QgbWF0Y2ggImRvbmVcbiI/ICBTaG91bGQgdGhpcyByYWlzZQorICAgICAg
ICAjIGEgUHJvdG9jb2xWaW9sYXRpb24gZXhjZXB0aW9uPworICAgICAgICBpZiBzZWxmLl90cmFp
bGVyX2J1ZmZlci5zdGFydHN3aXRoKCdkb25lXG4nKToKKyAgICAgICAgICAgIHNlbGYudW51c2Vk
X2RhdGEgPSBzZWxmLl90cmFpbGVyX2J1ZmZlcltsZW4oJ2RvbmVcbicpOl0KKyAgICAgICAgICAg
IHNlbGYuc3RhdGVfYWNjZXB0ID0gc2VsZi5fc3RhdGVfYWNjZXB0X3JlYWRpbmdfdW51c2VkCisg
ICAgICAgICAgICBzZWxmLmZpbmlzaGVkX3JlYWRpbmcgPSBUcnVlCisgICAgCisgICAgZGVmIF9z
dGF0ZV9hY2NlcHRfcmVhZGluZ191bnVzZWQoc2VsZiwgYnl0ZXMpOgorICAgICAgICBzZWxmLnVu
dXNlZF9kYXRhICs9IGJ5dGVzCisKKyAgICBkZWYgX3N0YXRlX3JlYWRfbm9fZGF0YShzZWxmKToK
KyAgICAgICAgcmV0dXJuICcnCisKKyAgICBkZWYgX3N0YXRlX3JlYWRfaW5fYnVmZmVyKHNlbGYp
OgorICAgICAgICByZXN1bHQgPSBzZWxmLl9pbl9idWZmZXIKKyAgICAgICAgc2VsZi5faW5fYnVm
ZmVyID0gJycKKyAgICAgICAgcmV0dXJuIHJlc3VsdAorCisKK2NsYXNzIFNtYXJ0Q2xpZW50UmVx
dWVzdFByb3RvY29sT25lKFNtYXJ0UHJvdG9jb2xCYXNlKToKKyAgICAiIiJUaGUgY2xpZW50LXNp
ZGUgcHJvdG9jb2wgZm9yIHNtYXJ0IHZlcnNpb24gMS4iIiIKKworICAgIGRlZiBfX2luaXRfXyhz
ZWxmLCByZXF1ZXN0KToKKyAgICAgICAgIiIiQ29uc3RydWN0IGEgU21hcnRDbGllbnRSZXF1ZXN0
UHJvdG9jb2xPbmUuCisKKyAgICAgICAgOnBhcmFtIHJlcXVlc3Q6IEEgU21hcnRDbGllbnRNZWRp
dW1SZXF1ZXN0IHRvIHNlcmlhbGlzZSBvbnRvIGFuZAorICAgICAgICAgICAgZGVzZXJpYWxpc2Ug
ZnJvbS4KKyAgICAgICAgIiIiCisgICAgICAgIHNlbGYuX3JlcXVlc3QgPSByZXF1ZXN0CisgICAg
ICAgIHNlbGYuX2JvZHlfYnVmZmVyID0gTm9uZQorCisgICAgZGVmIGNhbGwoc2VsZiwgKmFyZ3Mp
OgorICAgICAgICBzZWxmLl93cml0ZV9hcmdzKGFyZ3MpCisgICAgICAgIHNlbGYuX3JlcXVlc3Qu
ZmluaXNoZWRfd3JpdGluZygpCisKKyAgICBkZWYgY2FsbF93aXRoX2JvZHlfYnl0ZXMoc2VsZiwg
YXJncywgYm9keSk6CisgICAgICAgICIiIk1ha2UgYSByZW1vdGUgY2FsbCBvZiBhcmdzIHdpdGgg
Ym9keSBieXRlcyAnYm9keScuCisKKyAgICAgICAgQWZ0ZXIgY2FsbGluZyB0aGlzLCBjYWxsIHJl
YWRfcmVzcG9uc2VfdHVwbGUgdG8gZmluZCB0aGUgcmVzdWx0IG91dC4KKyAgICAgICAgIiIiCisg
ICAgICAgIHNlbGYuX3dyaXRlX2FyZ3MoYXJncykKKyAgICAgICAgYnl0ZXMgPSBzZWxmLl9lbmNv
ZGVfYnVsa19kYXRhKGJvZHkpCisgICAgICAgIHNlbGYuX3JlcXVlc3QuYWNjZXB0X2J5dGVzKGJ5
dGVzKQorICAgICAgICBzZWxmLl9yZXF1ZXN0LmZpbmlzaGVkX3dyaXRpbmcoKQorCisgICAgZGVm
IGNhbGxfd2l0aF9ib2R5X3JlYWR2X2FycmF5KHNlbGYsIGFyZ3MsIGJvZHkpOgorICAgICAgICAi
IiJNYWtlIGEgcmVtb3RlIGNhbGwgd2l0aCBhIHJlYWR2IGFycmF5LgorCisgICAgICAgIFRoZSBi
b2R5IGlzIGVuY29kZWQgd2l0aCBvbmUgbGluZSBwZXIgcmVhZHYgb2Zmc2V0IHBhaXIuIFRoZSBu
dW1iZXJzIGluCisgICAgICAgIGVhY2ggcGFpciBhcmUgc2VwYXJhdGVkIGJ5IGEgY29tbWEsIGFu
ZCBubyB0cmFpbGluZyBcbiBpcyBlbWl0dGVkLgorICAgICAgICAiIiIKKyAgICAgICAgc2VsZi5f
d3JpdGVfYXJncyhhcmdzKQorICAgICAgICByZWFkdl9ieXRlcyA9IHNlbGYuX3NlcmlhbGlzZV9v
ZmZzZXRzKGJvZHkpCisgICAgICAgIGJ5dGVzID0gc2VsZi5fZW5jb2RlX2J1bGtfZGF0YShyZWFk
dl9ieXRlcykKKyAgICAgICAgc2VsZi5fcmVxdWVzdC5hY2NlcHRfYnl0ZXMoYnl0ZXMpCisgICAg
ICAgIHNlbGYuX3JlcXVlc3QuZmluaXNoZWRfd3JpdGluZygpCisKKyAgICBkZWYgY2FuY2VsX3Jl
YWRfYm9keShzZWxmKToKKyAgICAgICAgIiIiQWZ0ZXIgZXhwZWN0aW5nIGEgYm9keSwgYSByZXNw
b25zZSBjb2RlIG1heSBpbmRpY2F0ZSBvbmUgb3RoZXJ3aXNlLgorCisgICAgICAgIFRoaXMgbWV0
aG9kIGxldHMgdGhlIGRvbWFpbiBjbGllbnQgaW5mb3JtIHRoZSBwcm90b2NvbCB0aGF0IG5vIGJv
ZHkKKyAgICAgICAgd2lsbCBiZSB0cmFuc21pdHRlZC4gVGhpcyBpcyBhIHRlcm1pbmFsIG1ldGhv
ZDogYWZ0ZXIgY2FsbGluZyBpdCB0aGUKKyAgICAgICAgcHJvdG9jb2wgaXMgbm90IGFibGUgdG8g
YmUgdXNlZCBmdXJ0aGVyLgorICAgICAgICAiIiIKKyAgICAgICAgc2VsZi5fcmVxdWVzdC5maW5p
c2hlZF9yZWFkaW5nKCkKKworICAgIGRlZiByZWFkX3Jlc3BvbnNlX3R1cGxlKHNlbGYsIGV4cGVj
dF9ib2R5PUZhbHNlKToKKyAgICAgICAgIiIiUmVhZCBhIHJlc3BvbnNlIHR1cGxlIGZyb20gdGhl
IHdpcmUuCisKKyAgICAgICAgVGhpcyBzaG91bGQgb25seSBiZSBjYWxsZWQgb25jZS4KKyAgICAg
ICAgIiIiCisgICAgICAgIHJlc3VsdCA9IHNlbGYuX3JlY3ZfdHVwbGUoKQorICAgICAgICBpZiBu
b3QgZXhwZWN0X2JvZHk6CisgICAgICAgICAgICBzZWxmLl9yZXF1ZXN0LmZpbmlzaGVkX3JlYWRp
bmcoKQorICAgICAgICByZXR1cm4gcmVzdWx0CisKKyAgICBkZWYgcmVhZF9ib2R5X2J5dGVzKHNl
bGYsIGNvdW50PS0xKToKKyAgICAgICAgIiIiUmVhZCBieXRlcyBmcm9tIHRoZSBib2R5LCBkZWNv
ZGluZyBpbnRvIGEgYnl0ZSBzdHJlYW0uCisgICAgICAgIAorICAgICAgICBXZSByZWFkIGFsbCBi
eXRlcyBhdCBvbmNlIHRvIGVuc3VyZSB3ZSd2ZSBjaGVja2VkIHRoZSB0cmFpbGVyIGZvciAKKyAg
ICAgICAgZXJyb3JzLCBhbmQgdGhlbiBmZWVkIHRoZSBidWZmZXIgYmFjayBhcyByZWFkX2JvZHlf
Ynl0ZXMgaXMgY2FsbGVkLgorICAgICAgICAiIiIKKyAgICAgICAgaWYgc2VsZi5fYm9keV9idWZm
ZXIgaXMgbm90IE5vbmU6CisgICAgICAgICAgICByZXR1cm4gc2VsZi5fYm9keV9idWZmZXIucmVh
ZChjb3VudCkKKyAgICAgICAgX2JvZHlfZGVjb2RlciA9IExlbmd0aFByZWZpeGVkQm9keURlY29k
ZXIoKQorCisgICAgICAgIHdoaWxlIG5vdCBfYm9keV9kZWNvZGVyLmZpbmlzaGVkX3JlYWRpbmc6
CisgICAgICAgICAgICBieXRlc193YW50ZWQgPSBfYm9keV9kZWNvZGVyLm5leHRfcmVhZF9zaXpl
KCkKKyAgICAgICAgICAgIGJ5dGVzID0gc2VsZi5fcmVxdWVzdC5yZWFkX2J5dGVzKGJ5dGVzX3dh
bnRlZCkKKyAgICAgICAgICAgIF9ib2R5X2RlY29kZXIuYWNjZXB0X2J5dGVzKGJ5dGVzKQorICAg
ICAgICBzZWxmLl9yZXF1ZXN0LmZpbmlzaGVkX3JlYWRpbmcoKQorICAgICAgICBzZWxmLl9ib2R5
X2J1ZmZlciA9IFN0cmluZ0lPKF9ib2R5X2RlY29kZXIucmVhZF9wZW5kaW5nX2RhdGEoKSkKKyAg
ICAgICAgIyBYWFg6IFRPRE8gY2hlY2sgdGhlIHRyYWlsZXIgcmVzdWx0LgorICAgICAgICByZXR1
cm4gc2VsZi5fYm9keV9idWZmZXIucmVhZChjb3VudCkKKworICAgIGRlZiBfcmVjdl90dXBsZShz
ZWxmKToKKyAgICAgICAgIiIiUmVjZWl2ZSBhIHR1cGxlIGZyb20gdGhlIG1lZGl1bSByZXF1ZXN0
LiIiIgorICAgICAgICByZXR1cm4gX2RlY29kZV90dXBsZShzZWxmLl9yZWN2X2xpbmUoKSkKKwor
ICAgIGRlZiBfcmVjdl9saW5lKHNlbGYpOgorICAgICAgICAiIiJSZWFkIGFuIGVudGlyZSBsaW5l
IGZyb20gdGhlIG1lZGl1bSByZXF1ZXN0LiIiIgorICAgICAgICBsaW5lID0gJycKKyAgICAgICAg
d2hpbGUgbm90IGxpbmUgb3IgbGluZVstMV0gIT0gJ1xuJzoKKyAgICAgICAgICAgICMgVE9ETzog
dGhpcyBpcyBpbmVmZmljaWVudCAtIGJ1dCB0dXBsZXMgYXJlIHNob3J0LgorICAgICAgICAgICAg
bmV3X2NoYXIgPSBzZWxmLl9yZXF1ZXN0LnJlYWRfYnl0ZXMoMSkKKyAgICAgICAgICAgIGxpbmUg
Kz0gbmV3X2NoYXIKKyAgICAgICAgICAgIGFzc2VydCBuZXdfY2hhciAhPSAnJywgImVuZCBvZiBm
aWxlIHJlYWRpbmcgZnJvbSBzZXJ2ZXIuIgorICAgICAgICByZXR1cm4gbGluZQorCisgICAgZGVm
IHF1ZXJ5X3ZlcnNpb24oc2VsZik6CisgICAgICAgICIiIlJldHVybiBwcm90b2NvbCB2ZXJzaW9u
IG51bWJlciBvZiB0aGUgc2VydmVyLiIiIgorICAgICAgICBzZWxmLmNhbGwoJ2hlbGxvJykKKyAg
ICAgICAgcmVzcCA9IHNlbGYucmVhZF9yZXNwb25zZV90dXBsZSgpCisgICAgICAgIGlmIHJlc3Ag
PT0gKCdvaycsICcxJyk6CisgICAgICAgICAgICByZXR1cm4gMQorICAgICAgICBlbGlmIHJlc3Ag
PT0gKCdvaycsICcyJyk6CisgICAgICAgICAgICByZXR1cm4gMgorICAgICAgICBlbHNlOgorICAg
ICAgICAgICAgcmFpc2UgZXJyb3JzLlNtYXJ0UHJvdG9jb2xFcnJvcigiYmFkIHJlc3BvbnNlICVy
IiAlIChyZXNwLCkpCisKKyAgICBkZWYgX3dyaXRlX2FyZ3Moc2VsZiwgYXJncyk6CisgICAgICAg
IHNlbGYuX3dyaXRlX3Byb3RvY29sX3ZlcnNpb24oKQorICAgICAgICBieXRlcyA9IF9lbmNvZGVf
dHVwbGUoYXJncykKKyAgICAgICAgc2VsZi5fcmVxdWVzdC5hY2NlcHRfYnl0ZXMoYnl0ZXMpCisK
KyAgICBkZWYgX3dyaXRlX3Byb3RvY29sX3ZlcnNpb24oc2VsZik6CisgICAgICAgICIiIldyaXRl
IGFueSBwcmVmaXhlcyB0aGlzIHByb3RvY29sIHJlcXVpcmVzLgorICAgICAgICAKKyAgICAgICAg
VmVyc2lvbiBvbmUgZG9lc24ndCBzZW5kIHByb3RvY29sIHZlcnNpb25zLgorICAgICAgICAiIiIK
KworCitjbGFzcyBTbWFydENsaWVudFJlcXVlc3RQcm90b2NvbFR3byhTbWFydENsaWVudFJlcXVl
c3RQcm90b2NvbE9uZSk6CisgICAgIiIiVmVyc2lvbiB0d28gb2YgdGhlIGNsaWVudCBzaWRlIG9m
IHRoZSBzbWFydCBwcm90b2NvbC4KKyAgICAKKyAgICBUaGlzIHByZWZpeGVzIHRoZSByZXF1ZXN0
IHdpdGggdGhlIHZhbHVlIG9mIFJFUVVFU1RfVkVSU0lPTl9UV08uCisgICAgIiIiCisKKyAgICBk
ZWYgcmVhZF9yZXNwb25zZV90dXBsZShzZWxmLCBleHBlY3RfYm9keT1GYWxzZSk6CisgICAgICAg
ICIiIlJlYWQgYSByZXNwb25zZSB0dXBsZSBmcm9tIHRoZSB3aXJlLgorCisgICAgICAgIFRoaXMg
c2hvdWxkIG9ubHkgYmUgY2FsbGVkIG9uY2UuCisgICAgICAgICIiIgorICAgICAgICB2ZXJzaW9u
ID0gc2VsZi5fcmVxdWVzdC5yZWFkX2xpbmUoKQorICAgICAgICBpZiB2ZXJzaW9uICE9IFJFU1BP
TlNFX1ZFUlNJT05fVFdPOgorICAgICAgICAgICAgcmFpc2UgZXJyb3JzLlNtYXJ0UHJvdG9jb2xF
cnJvcignYmFkIHByb3RvY29sIG1hcmtlciAlcicgJSB2ZXJzaW9uKQorICAgICAgICByZXNwb25z
ZV9zdGF0dXMgPSBzZWxmLl9yZWN2X2xpbmUoKQorICAgICAgICBpZiByZXNwb25zZV9zdGF0dXMg
bm90IGluICgnc3VjY2Vzc1xuJywgJ2ZhaWxlZFxuJyk6CisgICAgICAgICAgICByYWlzZSBlcnJv
cnMuU21hcnRQcm90b2NvbEVycm9yKAorICAgICAgICAgICAgICAgICdiYWQgcHJvdG9jb2wgc3Rh
dHVzICVyJyAlIHJlc3BvbnNlX3N0YXR1cykKKyAgICAgICAgc2VsZi5yZXNwb25zZV9zdGF0dXMg
PSByZXNwb25zZV9zdGF0dXMgPT0gJ3N1Y2Nlc3NcbicKKyAgICAgICAgcmV0dXJuIFNtYXJ0Q2xp
ZW50UmVxdWVzdFByb3RvY29sT25lLnJlYWRfcmVzcG9uc2VfdHVwbGUoc2VsZiwgZXhwZWN0X2Jv
ZHkpCisKKyAgICBkZWYgX3dyaXRlX3Byb3RvY29sX3ZlcnNpb24oc2VsZik6CisgICAgICAgIHIi
IiJXcml0ZSBhbnkgcHJlZml4ZXMgdGhpcyBwcm90b2NvbCByZXF1aXJlcy4KKyAgICAgICAgCisg
ICAgICAgIFZlcnNpb24gdHdvIHNlbmRzIHRoZSB2YWx1ZSBvZiBSRVFVRVNUX1ZFUlNJT05fVFdP
LgorICAgICAgICAiIiIKKyAgICAgICAgc2VsZi5fcmVxdWVzdC5hY2NlcHRfYnl0ZXMoUkVRVUVT
VF9WRVJTSU9OX1RXTykKKwoK

=== added file bzrlib/smart/repository.py // file-id:repository.py-200611280220
... 38-vr5wy5bubyb8xttk-1 // last-changed:andrew.bennetts@canonical.com-2007042
... 6081540-36glj2kouoldc866 // encoding:base64
LS0tIC9kZXYvbnVsbAorKysgYnpybGliL3NtYXJ0L3JlcG9zaXRvcnkucHkKQEAgLTAsMCArMSwy
MzggQEAKKyMgQ29weXJpZ2h0IChDKSAyMDA2LCAyMDA3IENhbm9uaWNhbCBMdGQKKyMKKyMgVGhp
cyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9v
ciBtb2RpZnkKKyMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMg
TGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKyMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsg
ZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKKyMgKGF0IHlvdXIgb3B0aW9uKSBh
bnkgbGF0ZXIgdmVyc2lvbi4KKyMKKyMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRo
ZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisjIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5U
WTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisjIE1FUkNIQU5UQUJJTElU
WSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyMgR05VIEdl
bmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyMKKyMgWW91IHNob3VsZCBo
YXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyMg
YWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdh
cmUKKyMgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3Rv
biwgTUEgIDAyMTExLTEzMDcgIFVTQQorCisiIiJTZXJ2ZXItc2lkZSByZXBvc2l0b3J5IHJlbGF0
ZWQgcmVxdWVzdCBpbXBsbWVudGF0aW9ucy4iIiIKKworaW1wb3J0IHN5cworaW1wb3J0IHRlbXBm
aWxlCitpbXBvcnQgdGFyZmlsZQorCitmcm9tIGJ6cmxpYiBpbXBvcnQgZXJyb3JzCitmcm9tIGJ6
cmxpYi5ienJkaXIgaW1wb3J0IEJ6ckRpcgorZnJvbSBienJsaWIuc21hcnQucmVxdWVzdCBpbXBv
cnQgKAorICAgIEZhaWxlZFNtYXJ0U2VydmVyUmVzcG9uc2UsCisgICAgU21hcnRTZXJ2ZXJSZXF1
ZXN0LAorICAgIFN1Y2Nlc3NmdWxTbWFydFNlcnZlclJlc3BvbnNlLAorICAgICkKKworCitjbGFz
cyBTbWFydFNlcnZlclJlcG9zaXRvcnlSZXF1ZXN0KFNtYXJ0U2VydmVyUmVxdWVzdCk6CisgICAg
IiIiQ29tbW9uIGJhc2UgY2xhc3MgZm9yIFJlcG9zaXRvcnkgcmVxdWVzdHMuIiIiCisKKyAgICBk
ZWYgZG8oc2VsZiwgcGF0aCwgKmFyZ3MpOgorICAgICAgICAiIiJFeGVjdXRlIGEgcmVwb3NpdG9y
eSByZXF1ZXN0LgorICAgICAgICAKKyAgICAgICAgVGhlIHJlcG9zaXRvcnkgbXVzdCBiZSBhdCB0
aGUgZXhhY3QgcGF0aCAtIG5vIHNlYXJjaGluZyBpcyBkb25lLgorCisgICAgICAgIFRoZSBhY3R1
YWwgbG9naWMgaXMgZGVsZWdhdGVkIHRvIHNlbGYuZG9fcmVwb3NpdG9yeV9yZXF1ZXN0LgorCisg
ICAgICAgIDpwYXJhbSBwYXRoOiBUaGUgcGF0aCBmb3IgdGhlIHJlcG9zaXRvcnkuCisgICAgICAg
IDpyZXR1cm46IEEgc21hcnQgc2VydmVyIGZyb20gc2VsZi5kb19yZXBvc2l0b3J5X3JlcXVlc3Qo
KS4KKyAgICAgICAgIiIiCisgICAgICAgIHRyYW5zcG9ydCA9IHNlbGYuX2JhY2tpbmdfdHJhbnNw
b3J0LmNsb25lKHBhdGgpCisgICAgICAgIGJ6cmRpciA9IEJ6ckRpci5vcGVuX2Zyb21fdHJhbnNw
b3J0KHRyYW5zcG9ydCkKKyAgICAgICAgcmVwb3NpdG9yeSA9IGJ6cmRpci5vcGVuX3JlcG9zaXRv
cnkoKQorICAgICAgICByZXR1cm4gc2VsZi5kb19yZXBvc2l0b3J5X3JlcXVlc3QocmVwb3NpdG9y
eSwgKmFyZ3MpCisKKworY2xhc3MgU21hcnRTZXJ2ZXJSZXBvc2l0b3J5R2V0UmV2aXNpb25HcmFw
aChTbWFydFNlcnZlclJlcG9zaXRvcnlSZXF1ZXN0KToKKyAgICAKKyAgICBkZWYgZG9fcmVwb3Np
dG9yeV9yZXF1ZXN0KHNlbGYsIHJlcG9zaXRvcnksIHJldmlzaW9uX2lkKToKKyAgICAgICAgIiIi
UmV0dXJuIHRoZSByZXN1bHQgb2YgcmVwb3NpdG9yeS5nZXRfcmV2aXNpb25fZ3JhcGgocmV2aXNp
b25faWQpLgorICAgICAgICAKKyAgICAgICAgOnBhcmFtIHJlcG9zaXRvcnk6IFRoZSByZXBvc2l0
b3J5IHRvIHF1ZXJ5IGluLgorICAgICAgICA6cGFyYW0gcmV2aXNpb25faWQ6IFRoZSB1dGY4IGVu
Y29kZWQgcmV2aXNpb25faWQgdG8gZ2V0IGEgZ3JhcGggZnJvbS4KKyAgICAgICAgOnJldHVybjog
QSBzbWFydCBzZXJ2ZXIgcmVzcG9uc2Ugd2hlcmUgdGhlIGJvZHkgY29udGFpbnMgYW4gdXRmOAor
ICAgICAgICAgICAgZW5jb2RlZCBmbGF0dGVuZWQgbGlzdCBvZiB0aGUgcmV2aXNpb24gZ3JhcGgu
CisgICAgICAgICIiIgorICAgICAgICBpZiBub3QgcmV2aXNpb25faWQ6CisgICAgICAgICAgICBy
ZXZpc2lvbl9pZCA9IE5vbmUKKworICAgICAgICBsaW5lcyA9IFtdCisgICAgICAgIHRyeToKKyAg
ICAgICAgICAgIHJldmlzaW9uX2dyYXBoID0gcmVwb3NpdG9yeS5nZXRfcmV2aXNpb25fZ3JhcGgo
cmV2aXNpb25faWQpCisgICAgICAgIGV4Y2VwdCBlcnJvcnMuTm9TdWNoUmV2aXNpb246CisgICAg
ICAgICAgICAjIE5vdGUgdGhhdCB3ZSByZXR1cm4gYW4gZW1wdHkgYm9keSwgcmF0aGVyIHRoYW4g
b21pdHRpbmcgdGhlIGJvZHkuCisgICAgICAgICAgICAjIFRoaXMgd2F5IHRoZSBjbGllbnQga25v
d3MgdGhhdCBpdCBjYW4gYWx3YXlzIGV4cGVjdCB0byBmaW5kIGEgYm9keQorICAgICAgICAgICAg
IyBpbiB0aGUgcmVzcG9uc2UgZm9yIHRoaXMgbWV0aG9kLCBldmVuIGluIHRoZSBlcnJvciBjYXNl
LgorICAgICAgICAgICAgcmV0dXJuIEZhaWxlZFNtYXJ0U2VydmVyUmVzcG9uc2UoKCdub3N1Y2hy
ZXZpc2lvbicsIHJldmlzaW9uX2lkKSwgJycpCisKKyAgICAgICAgZm9yIHJldmlzaW9uLCBwYXJl
bnRzIGluIHJldmlzaW9uX2dyYXBoLml0ZW1zKCk6CisgICAgICAgICAgICBsaW5lcy5hcHBlbmQo
JyAnLmpvaW4oW3JldmlzaW9uLF0gKyBwYXJlbnRzKSkKKworICAgICAgICByZXR1cm4gU3VjY2Vz
c2Z1bFNtYXJ0U2VydmVyUmVzcG9uc2UoKCdvaycsICksICdcbicuam9pbihsaW5lcykpCisKKwor
Y2xhc3MgU21hcnRTZXJ2ZXJSZXF1ZXN0SGFzUmV2aXNpb24oU21hcnRTZXJ2ZXJSZXBvc2l0b3J5
UmVxdWVzdCk6CisKKyAgICBkZWYgZG9fcmVwb3NpdG9yeV9yZXF1ZXN0KHNlbGYsIHJlcG9zaXRv
cnksIHJldmlzaW9uX2lkKToKKyAgICAgICAgIiIiUmV0dXJuIG9rIGlmIGEgc3BlY2lmaWMgcmV2
aXNpb24gaXMgaW4gdGhlIHJlcG9zaXRvcnkgYXQgcGF0aC4KKworICAgICAgICA6cGFyYW0gcmVw
b3NpdG9yeTogVGhlIHJlcG9zaXRvcnkgdG8gcXVlcnkgaW4uCisgICAgICAgIDpwYXJhbSByZXZp
c2lvbl9pZDogVGhlIHV0ZjggZW5jb2RlZCByZXZpc2lvbl9pZCB0byBsb29rdXAuCisgICAgICAg
IDpyZXR1cm46IEEgc21hcnQgc2VydmVyIHJlc3BvbnNlIG9mICgnb2snLCApIGlmIHRoZSByZXZp
c2lvbiBpcworICAgICAgICAgICAgcHJlc2VudC4KKyAgICAgICAgIiIiCisgICAgICAgIGlmIHJl
cG9zaXRvcnkuaGFzX3JldmlzaW9uKHJldmlzaW9uX2lkKToKKyAgICAgICAgICAgIHJldHVybiBT
dWNjZXNzZnVsU21hcnRTZXJ2ZXJSZXNwb25zZSgoJ3llcycsICkpCisgICAgICAgIGVsc2U6Cisg
ICAgICAgICAgICByZXR1cm4gU3VjY2Vzc2Z1bFNtYXJ0U2VydmVyUmVzcG9uc2UoKCdubycsICkp
CisKKworY2xhc3MgU21hcnRTZXJ2ZXJSZXBvc2l0b3J5R2F0aGVyU3RhdHMoU21hcnRTZXJ2ZXJS
ZXBvc2l0b3J5UmVxdWVzdCk6CisKKyAgICBkZWYgZG9fcmVwb3NpdG9yeV9yZXF1ZXN0KHNlbGYs
IHJlcG9zaXRvcnksIHJldmlkLCBjb21taXR0ZXJzKToKKyAgICAgICAgIiIiUmV0dXJuIHRoZSBy
ZXN1bHQgb2YgcmVwb3NpdG9yeS5nYXRoZXJfc3RhdHMoKS4KKworICAgICAgICA6cGFyYW0gcmVw
b3NpdG9yeTogVGhlIHJlcG9zaXRvcnkgdG8gcXVlcnkgaW4uCisgICAgICAgIDpwYXJhbSByZXZp
ZDogdXRmOCBlbmNvZGVkIHJldiBpZCBvciBhbiBlbXB0eSBzdHJpbmcgdG8gaW5kaWNhdGUgTm9u
ZQorICAgICAgICA6cGFyYW0gY29tbWl0dGVyczogJ3llcycgb3IgJ25vJy4KKworICAgICAgICA6
cmV0dXJuOiBBIFNtYXJ0U2VydmVyUmVzcG9uc2UgKCdvaycsKSwgYSBlbmNvZGVkIGJvZHkgbG9v
a2luZyBsaWtlCisgICAgICAgICAgICAgIGNvbW1pdHRlcnM6IDEKKyAgICAgICAgICAgICAgZmly
c3RyZXY6IDEyMzQuMjMwIDAKKyAgICAgICAgICAgICAgbGF0ZXN0cmV2OiAzNDUuNzAwIDM2MDAK
KyAgICAgICAgICAgICAgcmV2aXNpb25zOiAyCisgICAgICAgICAgICAgIHNpemU6NDUKKworICAg
ICAgICAgICAgICBCdXQgY29udGFpbmluZyBvbmx5IGZpZWxkcyByZXR1cm5lZCBieSB0aGUgZ2F0
aGVyX3N0YXRzKCkgY2FsbAorICAgICAgICAiIiIKKyAgICAgICAgaWYgcmV2aWQgPT0gJyc6Cisg
ICAgICAgICAgICBkZWNvZGVkX3JldmlzaW9uX2lkID0gTm9uZQorICAgICAgICBlbHNlOgorICAg
ICAgICAgICAgZGVjb2RlZF9yZXZpc2lvbl9pZCA9IHJldmlkCisgICAgICAgIGlmIGNvbW1pdHRl
cnMgPT0gJ3llcyc6CisgICAgICAgICAgICBkZWNvZGVkX2NvbW1pdHRlcnMgPSBUcnVlCisgICAg
ICAgIGVsc2U6CisgICAgICAgICAgICBkZWNvZGVkX2NvbW1pdHRlcnMgPSBOb25lCisgICAgICAg
IHN0YXRzID0gcmVwb3NpdG9yeS5nYXRoZXJfc3RhdHMoZGVjb2RlZF9yZXZpc2lvbl9pZCwgZGVj
b2RlZF9jb21taXR0ZXJzKQorCisgICAgICAgIGJvZHkgPSAnJworICAgICAgICBpZiBzdGF0cy5o
YXNfa2V5KCdjb21taXR0ZXJzJyk6CisgICAgICAgICAgICBib2R5ICs9ICdjb21taXR0ZXJzOiAl
ZFxuJyAlIHN0YXRzWydjb21taXR0ZXJzJ10KKyAgICAgICAgaWYgc3RhdHMuaGFzX2tleSgnZmly
c3RyZXYnKToKKyAgICAgICAgICAgIGJvZHkgKz0gJ2ZpcnN0cmV2OiAlLjNmICVkXG4nICUgc3Rh
dHNbJ2ZpcnN0cmV2J10KKyAgICAgICAgaWYgc3RhdHMuaGFzX2tleSgnbGF0ZXN0cmV2Jyk6Cisg
ICAgICAgICAgICAgYm9keSArPSAnbGF0ZXN0cmV2OiAlLjNmICVkXG4nICUgc3RhdHNbJ2xhdGVz
dHJldiddCisgICAgICAgIGlmIHN0YXRzLmhhc19rZXkoJ3JldmlzaW9ucycpOgorICAgICAgICAg
ICAgYm9keSArPSAncmV2aXNpb25zOiAlZFxuJyAlIHN0YXRzWydyZXZpc2lvbnMnXQorICAgICAg
ICBpZiBzdGF0cy5oYXNfa2V5KCdzaXplJyk6CisgICAgICAgICAgICBib2R5ICs9ICdzaXplOiAl
ZFxuJyAlIHN0YXRzWydzaXplJ10KKworICAgICAgICByZXR1cm4gU3VjY2Vzc2Z1bFNtYXJ0U2Vy
dmVyUmVzcG9uc2UoKCdvaycsICksIGJvZHkpCisKKworY2xhc3MgU21hcnRTZXJ2ZXJSZXBvc2l0
b3J5SXNTaGFyZWQoU21hcnRTZXJ2ZXJSZXBvc2l0b3J5UmVxdWVzdCk6CisKKyAgICBkZWYgZG9f
cmVwb3NpdG9yeV9yZXF1ZXN0KHNlbGYsIHJlcG9zaXRvcnkpOgorICAgICAgICAiIiJSZXR1cm4g
dGhlIHJlc3VsdCBvZiByZXBvc2l0b3J5LmlzX3NoYXJlZCgpLgorCisgICAgICAgIDpwYXJhbSBy
ZXBvc2l0b3J5OiBUaGUgcmVwb3NpdG9yeSB0byBxdWVyeSBpbi4KKyAgICAgICAgOnJldHVybjog
QSBzbWFydCBzZXJ2ZXIgcmVzcG9uc2Ugb2YgKCd5ZXMnLCApIGlmIHRoZSByZXBvc2l0b3J5IGlz
CisgICAgICAgICAgICBzaGFyZWQsIGFuZCAoJ25vJywgKSBpZiBpdCBpcyBub3QuCisgICAgICAg
ICIiIgorICAgICAgICBpZiByZXBvc2l0b3J5LmlzX3NoYXJlZCgpOgorICAgICAgICAgICAgcmV0
dXJuIFN1Y2Nlc3NmdWxTbWFydFNlcnZlclJlc3BvbnNlKCgneWVzJywgKSkKKyAgICAgICAgZWxz
ZToKKyAgICAgICAgICAgIHJldHVybiBTdWNjZXNzZnVsU21hcnRTZXJ2ZXJSZXNwb25zZSgoJ25v
JywgKSkKKworCitjbGFzcyBTbWFydFNlcnZlclJlcG9zaXRvcnlMb2NrV3JpdGUoU21hcnRTZXJ2
ZXJSZXBvc2l0b3J5UmVxdWVzdCk6CisKKyAgICBkZWYgZG9fcmVwb3NpdG9yeV9yZXF1ZXN0KHNl
bGYsIHJlcG9zaXRvcnksIHRva2VuPScnKToKKyAgICAgICAgIyBYWFg6IHRoaXMgcHJvYmFibHkg
c2hvdWxkIG5vdCBoYXZlIGEgdG9rZW4uCisgICAgICAgIGlmIHRva2VuID09ICcnOgorICAgICAg
ICAgICAgdG9rZW4gPSBOb25lCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHRva2VuID0gcmVw
b3NpdG9yeS5sb2NrX3dyaXRlKHRva2VuPXRva2VuKQorICAgICAgICBleGNlcHQgZXJyb3JzLkxv
Y2tDb250ZW50aW9uLCBlOgorICAgICAgICAgICAgcmV0dXJuIEZhaWxlZFNtYXJ0U2VydmVyUmVz
cG9uc2UoKCdMb2NrQ29udGVudGlvbicsKSkKKyAgICAgICAgZXhjZXB0IGVycm9ycy5VbmxvY2th
YmxlVHJhbnNwb3J0OgorICAgICAgICAgICAgcmV0dXJuIEZhaWxlZFNtYXJ0U2VydmVyUmVzcG9u
c2UoKCdVbmxvY2thYmxlVHJhbnNwb3J0JywpKQorICAgICAgICByZXBvc2l0b3J5LmxlYXZlX2xv
Y2tfaW5fcGxhY2UoKQorICAgICAgICByZXBvc2l0b3J5LnVubG9jaygpCisgICAgICAgIGlmIHRv
a2VuIGlzIE5vbmU6CisgICAgICAgICAgICB0b2tlbiA9ICcnCisgICAgICAgIHJldHVybiBTdWNj
ZXNzZnVsU21hcnRTZXJ2ZXJSZXNwb25zZSgoJ29rJywgdG9rZW4pKQorCisKK2NsYXNzIFNtYXJ0
U2VydmVyUmVwb3NpdG9yeVVubG9jayhTbWFydFNlcnZlclJlcG9zaXRvcnlSZXF1ZXN0KToKKwor
ICAgIGRlZiBkb19yZXBvc2l0b3J5X3JlcXVlc3Qoc2VsZiwgcmVwb3NpdG9yeSwgdG9rZW4pOgor
ICAgICAgICB0cnk6CisgICAgICAgICAgICByZXBvc2l0b3J5LmxvY2tfd3JpdGUodG9rZW49dG9r
ZW4pCisgICAgICAgIGV4Y2VwdCBlcnJvcnMuVG9rZW5NaXNtYXRjaCwgZToKKyAgICAgICAgICAg
IHJldHVybiBGYWlsZWRTbWFydFNlcnZlclJlc3BvbnNlKCgnVG9rZW5NaXNtYXRjaCcsKSkKKyAg
ICAgICAgcmVwb3NpdG9yeS5kb250X2xlYXZlX2xvY2tfaW5fcGxhY2UoKQorICAgICAgICByZXBv
c2l0b3J5LnVubG9jaygpCisgICAgICAgIHJldHVybiBTdWNjZXNzZnVsU21hcnRTZXJ2ZXJSZXNw
b25zZSgoJ29rJywpKQorCisKK2NsYXNzIFNtYXJ0U2VydmVyUmVwb3NpdG9yeVRhcmJhbGwoU21h
cnRTZXJ2ZXJSZXBvc2l0b3J5UmVxdWVzdCk6CisgICAgIiIiR2V0IHRoZSByYXcgcmVwb3NpdG9y
eSBmaWxlcyBhcyBhIHRhcmJhbGwuCisKKyAgICBUaGUgcmV0dXJuZWQgdGFyYmFsbCBjb250YWlu
cyBhIC5ienIgY29udHJvbCBkaXJlY3Rvcnkgd2hpY2ggaW4gdHVybgorICAgIGNvbnRhaW5zIGEg
cmVwb3NpdG9yeS4KKyAgICAKKyAgICBUaGlzIHRha2VzIG9uZSBwYXJhbWV0ZXIsIGNvbXByZXNz
aW9uLCB3aGljaCBjdXJyZW50bHkgbXVzdCBiZSAKKyAgICAiIiwgImd6Iiwgb3IgImJ6MiIuCisK
KyAgICBUaGlzIGlzIHVzZWQgdG8gaW1wbGVtZW50IHRoZSBSZXBvc2l0b3J5LmNvcHlfY29udGVu
dF9pbnRvIG9wZXJhdGlvbi4KKyAgICAiIiIKKworICAgIGRlZiBkb19yZXBvc2l0b3J5X3JlcXVl
c3Qoc2VsZiwgcmVwb3NpdG9yeSwgY29tcHJlc3Npb24pOgorICAgICAgICBmcm9tIGJ6cmxpYiBp
bXBvcnQgb3N1dGlscworICAgICAgICByZXBvX3RyYW5zcG9ydCA9IHJlcG9zaXRvcnkuY29udHJv
bF9maWxlcy5fdHJhbnNwb3J0CisgICAgICAgIHRtcF9kaXJuYW1lLCB0bXBfcmVwbyA9IHNlbGYu
X2NvcHlfdG9fdGVtcGRpcihyZXBvc2l0b3J5KQorICAgICAgICB0cnk6CisgICAgICAgICAgICBj
b250cm9sZGlyX25hbWUgPSB0bXBfZGlybmFtZSArICcvLmJ6cicKKyAgICAgICAgICAgIHJldHVy
biBzZWxmLl90YXJmaWxlX3Jlc3BvbnNlKGNvbnRyb2xkaXJfbmFtZSwgY29tcHJlc3Npb24pCisg
ICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICBvc3V0aWxzLnJtdHJlZSh0bXBfZGlybmFtZSkK
KworICAgIGRlZiBfY29weV90b190ZW1wZGlyKHNlbGYsIGZyb21fcmVwbyk6CisgICAgICAgIHRt
cF9kaXJuYW1lID0gdGVtcGZpbGUubWtkdGVtcChwcmVmaXg9J3RtcGJ6cmNsb25lJykKKyAgICAg
ICAgdG1wX2J6cmRpciA9IGZyb21fcmVwby5ienJkaXIuX2Zvcm1hdC5pbml0aWFsaXplKHRtcF9k
aXJuYW1lKQorICAgICAgICB0bXBfcmVwbyA9IGZyb21fcmVwby5fZm9ybWF0LmluaXRpYWxpemUo
dG1wX2J6cmRpcikKKyAgICAgICAgZnJvbV9yZXBvLmNvcHlfY29udGVudF9pbnRvKHRtcF9yZXBv
KQorICAgICAgICByZXR1cm4gdG1wX2Rpcm5hbWUsIHRtcF9yZXBvCisKKyAgICBkZWYgX3RhcmZp
bGVfcmVzcG9uc2Uoc2VsZiwgdG1wX2Rpcm5hbWUsIGNvbXByZXNzaW9uKToKKyAgICAgICAgdGVt
cCA9IHRlbXBmaWxlLk5hbWVkVGVtcG9yYXJ5RmlsZSgpCisgICAgICAgIHRyeToKKyAgICAgICAg
ICAgIHNlbGYuX3RhcmJhbGxfb2ZfZGlyKHRtcF9kaXJuYW1lLCBjb21wcmVzc2lvbiwgdGVtcC5u
YW1lKQorICAgICAgICAgICAgIyBhbGwgZmluaXNoZWQ7IHdyaXRlIHRoZSB0ZW1wZmlsZSBvdXQg
dG8gdGhlIG5ldHdvcmsKKyAgICAgICAgICAgIHRlbXAuc2VlaygwKQorICAgICAgICAgICAgcmV0
dXJuIFN1Y2Nlc3NmdWxTbWFydFNlcnZlclJlc3BvbnNlKCgnb2snLCksIHRlbXAucmVhZCgpKQor
ICAgICAgICAgICAgIyBGSVhNRTogRG9uJ3QgcmVhZCB0aGUgd2hvbGUgdGhpbmcgaW50byBtZW1v
cnkgaGVyZTsgcmF0aGVyIHN0cmVhbSBpdAorICAgICAgICAgICAgIyBvdXQgZnJvbSB0aGUgZmls
ZSBvbnRvIHRoZSBuZXR3b3JrLiBtYnAgMjAwNzA0MTEKKyAgICAgICAgZmluYWxseToKKyAgICAg
ICAgICAgIHRlbXAuY2xvc2UoKQorCisgICAgZGVmIF90YXJiYWxsX29mX2RpcihzZWxmLCBkaXJu
YW1lLCBjb21wcmVzc2lvbiwgdGFyZmlsZV9uYW1lKToKKyAgICAgICAgdGFyYmFsbCA9IHRhcmZp
bGUub3Blbih0YXJmaWxlX25hbWUsIG1vZGU9J3c6JyArIGNvbXByZXNzaW9uKQorICAgICAgICB0
cnk6CisgICAgICAgICAgICAjIFRoZSB0YXJiYWxsIG1vZHVsZSBvbmx5IGFjY2VwdHMgYXNjaWkg
bmFtZXMsIGFuZCAoaSBndWVzcykKKyAgICAgICAgICAgICMgcGFja3MgdGhlbSB3aXRoIHRoZWly
IDhiaXQgbmFtZXMuICBXZSBrbm93IGFsbCB0aGUgZmlsZXMKKyAgICAgICAgICAgICMgd2l0aGlu
IHRoZSByZXBvc2l0b3J5IGhhdmUgQVNDSUkgbmFtZXMgc28gdGhlIHNob3VsZCBiZSBzYWZlCisg
ICAgICAgICAgICAjIHRvIHBhY2sgaW4uCisgICAgICAgICAgICBkaXJuYW1lID0gZGlybmFtZS5l
bmNvZGUoc3lzLmdldGZpbGVzeXN0ZW1lbmNvZGluZygpKQorICAgICAgICAgICAgIyBweXRob24n
cyB0YXJiYWxsIG1vZHVsZSBpbmNsdWRlcyB0aGUgd2hvbGUgcGF0aCBieSBkZWZhdWx0IHNvCisg
ICAgICAgICAgICAjIG92ZXJyaWRlIGl0CisgICAgICAgICAgICBhc3NlcnQgZGlybmFtZS5lbmRz
d2l0aCgnLmJ6cicpCisgICAgICAgICAgICB0YXJiYWxsLmFkZChkaXJuYW1lLCAnLmJ6cicpICMg
cmVjdXJzaXZlIGJ5IGRlZmF1bHQKKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgIHRhcmJh
bGwuY2xvc2UoKQoK

=== added file bzrlib/smart/request.py // file-id:request.py-20061108095550-gun
... adhxmzkdjfeek-1 // last-changed:v.ladeuil+lp@free.fr-20070426090738-3n4pmuh
... uwqxr05fj // encoding:base64
LS0tIC9kZXYvbnVsbAorKysgYnpybGliL3NtYXJ0L3JlcXVlc3QucHkKQEAgLTAsMCArMSwzMjgg
QEAKKyMgQ29weXJpZ2h0IChDKSAyMDA2LCAyMDA3IENhbm9uaWNhbCBMdGQKKyMKKyMgVGhpcyBw
cm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBt
b2RpZnkKKyMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGlj
ZW5zZSBhcyBwdWJsaXNoZWQgYnkKKyMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0
aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKKyMgKGF0IHlvdXIgb3B0aW9uKSBhbnkg
bGF0ZXIgdmVyc2lvbi4KKyMKKyMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBo
b3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisjIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsg
d2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisjIE1FUkNIQU5UQUJJTElUWSBv
ciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyMgR05VIEdlbmVy
YWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyMKKyMgWW91IHNob3VsZCBoYXZl
IHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyMgYWxv
bmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUK
KyMgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3Rvbiwg
TUEgIDAyMTExLTEzMDcgIFVTQQorCisiIiJCYXNpYyBzZXJ2ZXItc2lkZSBsb2dpYyBmb3IgZGVh
bGluZyB3aXRoIHJlcXVlc3RzLiIiIgorCisKK2ltcG9ydCB0ZW1wZmlsZQorCitmcm9tIGJ6cmxp
YiBpbXBvcnQgKAorICAgIGJ6cmRpciwKKyAgICBlcnJvcnMsCisgICAgcmVnaXN0cnksCisgICAg
cmV2aXNpb24sCisgICAgKQorZnJvbSBienJsaWIuYnVuZGxlLnNlcmlhbGl6ZXIgaW1wb3J0IHdy
aXRlX2J1bmRsZQorCisKK2NsYXNzIFNtYXJ0U2VydmVyUmVxdWVzdChvYmplY3QpOgorICAgICIi
IkJhc2UgY2xhc3MgZm9yIHJlcXVlc3QgaGFuZGxlcnMuIiIiCisKKyAgICBkZWYgX19pbml0X18o
c2VsZiwgYmFja2luZ190cmFuc3BvcnQpOgorICAgICAgICAiIiJDb25zdHJ1Y3Rvci4KKworICAg
ICAgICA6cGFyYW0gYmFja2luZ190cmFuc3BvcnQ6IHRoZSBiYXNlIHRyYW5zcG9ydCB0byBiZSB1
c2VkIHdoZW4gcGVyZm9ybWluZworICAgICAgICAgICAgdGhpcyByZXF1ZXN0LgorICAgICAgICAi
IiIKKyAgICAgICAgc2VsZi5fYmFja2luZ190cmFuc3BvcnQgPSBiYWNraW5nX3RyYW5zcG9ydAor
CisgICAgZGVmIF9jaGVja19lbmFibGVkKHNlbGYpOgorICAgICAgICAiIiJSYWlzZXMgRGlzYWJs
ZWRNZXRob2QgaWYgdGhpcyBtZXRob2QgaXMgZGlzYWJsZWQuIiIiCisgICAgICAgIHBhc3MKKwor
ICAgIGRlZiBkbyhzZWxmLCAqYXJncyk6CisgICAgICAgICIiIk1hbmRhdG9yeSBleHRlbnNpb24g
cG9pbnQgZm9yIFNtYXJ0U2VydmVyUmVxdWVzdCBzdWJjbGFzc2VzLgorICAgICAgICAKKyAgICAg
ICAgU3ViY2xhc3NlcyBtdXN0IGltcGxlbWVudCB0aGlzLgorICAgICAgICAKKyAgICAgICAgVGhp
cyBzaG91bGQgcmV0dXJuIGEgU21hcnRTZXJ2ZXJSZXNwb25zZSBpZiB0aGlzIGNvbW1hbmQgZXhw
ZWN0cyB0bworICAgICAgICByZWNlaXZlIG5vIGJvZHkuCisgICAgICAgICIiIgorICAgICAgICBy
YWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yKHNlbGYuZG8pCisKKyAgICBkZWYgZXhlY3V0ZShzZWxm
LCAqYXJncyk6CisgICAgICAgICIiIlB1YmxpYyBlbnRyeSBwb2ludCB0byBleGVjdXRlIHRoaXMg
cmVxdWVzdC4KKworICAgICAgICBJdCB3aWxsIHJldHVybiBhIFNtYXJ0U2VydmVyUmVzcG9uc2Ug
aWYgdGhlIGNvbW1hbmQgZG9lcyBub3QgZXhwZWN0IGEKKyAgICAgICAgYm9keS4KKworICAgICAg
ICA6cGFyYW0gKmFyZ3M6IHRoZSBhcmd1bWVudHMgb2YgdGhlIHJlcXVlc3QuCisgICAgICAgICIi
IgorICAgICAgICBzZWxmLl9jaGVja19lbmFibGVkKCkKKyAgICAgICAgcmV0dXJuIHNlbGYuZG8o
KmFyZ3MpCisKKyAgICBkZWYgZG9fYm9keShzZWxmLCBib2R5X2J5dGVzKToKKyAgICAgICAgIiIi
Q2FsbGVkIGlmIHRoZSBjbGllbnQgc2VuZHMgYSBib2R5IHdpdGggdGhlIHJlcXVlc3QuCisgICAg
ICAgIAorICAgICAgICBNdXN0IHJldHVybiBhIFNtYXJ0U2VydmVyUmVzcG9uc2UuCisgICAgICAg
ICIiIgorICAgICAgICAjIFRPRE86IGlmIGEgY2xpZW50IGVycm9uZW91c2x5IHNlbmRzIGEgcmVx
dWVzdCB0aGF0IHNob3VsZG4ndCBoYXZlIGEKKyAgICAgICAgIyBib2R5LCB3aGF0IHRvIGRvPyAg
UHJvYmFibHkgU21hcnRTZXJ2ZXJSZXF1ZXN0SGFuZGxlciBzaG91bGQgY2F0Y2gKKyAgICAgICAg
IyB0aGlzIE5vdEltcGxlbWVudGVkRXJyb3IgYW5kIHRyYW5zbGF0ZSBpdCBpbnRvIGEgJ2JhZCBy
ZXF1ZXN0JyBlcnJvcgorICAgICAgICAjIHRvIHNlbmQgdG8gdGhlIGNsaWVudC4KKyAgICAgICAg
cmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcihzZWxmLmRvX2JvZHkpCisKKworY2xhc3MgU21hcnRT
ZXJ2ZXJSZXNwb25zZShvYmplY3QpOgorICAgICIiIkEgcmVzcG9uc2UgdG8gYSBjbGllbnQgcmVx
dWVzdC4KKyAgICAKKyAgICBUaGlzIGJhc2UgY2xhc3Mgc2hvdWxkIG5vdCBiZSB1c2VkLiBJbnN0
ZWFkIHVzZQorICAgIFN1Y2Nlc3NmdWxTbWFydFNlcnZlclJlc3BvbnNlIGFuZCBGYWlsZWRTbWFy
dFNlcnZlclJlc3BvbnNlIGFzIGFwcHJvcHJpYXRlLgorICAgICIiIgorCisgICAgZGVmIF9faW5p
dF9fKHNlbGYsIGFyZ3MsIGJvZHk9Tm9uZSk6CisgICAgICAgIHNlbGYuYXJncyA9IGFyZ3MKKyAg
ICAgICAgc2VsZi5ib2R5ID0gYm9keQorCisgICAgZGVmIF9fZXFfXyhzZWxmLCBvdGhlcik6Cisg
ICAgICAgIGlmIG90aGVyIGlzIE5vbmU6CisgICAgICAgICAgICByZXR1cm4gRmFsc2UKKyAgICAg
ICAgcmV0dXJuIG90aGVyLmFyZ3MgPT0gc2VsZi5hcmdzIGFuZCBvdGhlci5ib2R5ID09IHNlbGYu
Ym9keQorCisgICAgZGVmIF9fcmVwcl9fKHNlbGYpOgorICAgICAgICByZXR1cm4gIjxTbWFydFNl
cnZlclJlc3BvbnNlIGFyZ3M9JXIgYm9keT0lcj4iICUgKHNlbGYuaXNfc3VjY2Vzc2Z1bCgpLCAK
KyAgICAgICAgICAgIHNlbGYuYXJncywgc2VsZi5ib2R5KQorCisKK2NsYXNzIEZhaWxlZFNtYXJ0
U2VydmVyUmVzcG9uc2UoU21hcnRTZXJ2ZXJSZXNwb25zZSk6CisgICAgIiIiQSBTbWFydFNlcnZl
clJlc3BvbnNlIGZvciBhIHJlcXVlc3Qgd2hpY2ggZmFpbGVkLiIiIgorCisgICAgZGVmIGlzX3N1
Y2Nlc3NmdWwoc2VsZik6CisgICAgICAgICIiIkZhaWxlZFNtYXJ0U2VydmVyUmVzcG9uc2UgYXJl
IG5vdCBzdWNjZXNzZnVsLiIiIgorICAgICAgICByZXR1cm4gRmFsc2UKKworCitjbGFzcyBTdWNj
ZXNzZnVsU21hcnRTZXJ2ZXJSZXNwb25zZShTbWFydFNlcnZlclJlc3BvbnNlKToKKyAgICAiIiJB
IFNtYXJ0U2VydmVyUmVzcG9uc2UgZm9yIGEgc3VjY2Vzc2Z1bGx5IGNvbXBsZXRlZCByZXF1ZXN0
LiIiIgorCisgICAgZGVmIGlzX3N1Y2Nlc3NmdWwoc2VsZik6CisgICAgICAgICIiIlN1Y2Nlc3Nm
dWxTbWFydFNlcnZlclJlc3BvbnNlIGFyZSBzdWNjZXNzZnVsLiIiIgorICAgICAgICByZXR1cm4g
VHJ1ZQorCisKK2NsYXNzIFNtYXJ0U2VydmVyUmVxdWVzdEhhbmRsZXIob2JqZWN0KToKKyAgICAi
IiJQcm90b2NvbCBsb2dpYyBmb3Igc21hcnQgc2VydmVyLgorICAgIAorICAgIFRoaXMgZG9lc24n
dCBoYW5kbGUgc2VyaWFsaXphdGlvbiBhdCBhbGwsIGl0IGp1c3QgcHJvY2Vzc2VzIHJlcXVlc3Rz
IGFuZAorICAgIGNyZWF0ZXMgcmVzcG9uc2VzLgorICAgICIiIgorCisgICAgIyBJTVBPUlRBTlQg
Rk9SIElNUExFTUVOVE9SUzogSXQgaXMgaW1wb3J0YW50IHRoYXQgU21hcnRTZXJ2ZXJSZXF1ZXN0
SGFuZGxlcgorICAgICMgbm90IGNvbnRhaW4gZW5jb2Rpbmcgb3IgZGVjb2RpbmcgbG9naWMgdG8g
YWxsb3cgdGhlIHdpcmUgcHJvdG9jb2wgdG8gdmFyeQorICAgICMgZnJvbSB0aGUgb2JqZWN0IHBy
b3RvY29sOiB3ZSB3aWxsIHdhbnQgdG8gdHdlYWsgdGhlIHdpcmUgcHJvdG9jb2wgc2VwYXJhdGUK
KyAgICAjIGZyb20gdGhlIG9iamVjdCBtb2RlbCwgYW5kIGlkZWFsbHkgd2Ugd2lsbCBiZSBhYmxl
IHRvIGRvIHRoYXQgd2l0aG91dAorICAgICMgaGF2aW5nIGEgU21hcnRTZXJ2ZXJSZXF1ZXN0SGFu
ZGxlciBzdWJjbGFzcyBmb3IgZWFjaCB3aXJlIHByb3RvY29sLCByYXRoZXIKKyAgICAjIGp1c3Qg
YSBQcm90b2NvbCBzdWJjbGFzcy4KKworICAgICMgVE9ETzogQmV0dGVyIHdheSBvZiByZXByZXNl
bnRpbmcgdGhlIGJvZHkgZm9yIGNvbW1hbmRzIHRoYXQgdGFrZSBpdCwKKyAgICAjIGFuZCBhbGxv
dyBpdCB0byBiZSBzdHJlYW1lZCBpbnRvIHRoZSBzZXJ2ZXIuCisKKyAgICBkZWYgX19pbml0X18o
c2VsZiwgYmFja2luZ190cmFuc3BvcnQsIGNvbW1hbmRzKToKKyAgICAgICAgIiIiQ29uc3RydWN0
b3IuCisKKyAgICAgICAgOnBhcmFtIGJhY2tpbmdfdHJhbnNwb3J0OiBhIFRyYW5zcG9ydCB0byBo
YW5kbGUgcmVxdWVzdHMgZm9yLgorICAgICAgICA6cGFyYW0gY29tbWFuZHM6IGEgcmVnaXN0cnkg
bWFwcGluZyBjb21tYW5kIG5hbWVzIHRvIFNtYXJ0U2VydmVyUmVxdWVzdAorICAgICAgICAgICAg
c3ViY2xhc3Nlcy4gZS5nLiBienJsaWIudHJhbnNwb3J0LnNtYXJ0LnZmcy52ZnNfY29tbWFuZHMu
CisgICAgICAgICIiIgorICAgICAgICBzZWxmLl9iYWNraW5nX3RyYW5zcG9ydCA9IGJhY2tpbmdf
dHJhbnNwb3J0CisgICAgICAgIHNlbGYuX2NvbW1hbmRzID0gY29tbWFuZHMKKyAgICAgICAgc2Vs
Zi5fYm9keV9ieXRlcyA9ICcnCisgICAgICAgIHNlbGYucmVzcG9uc2UgPSBOb25lCisgICAgICAg
IHNlbGYuZmluaXNoZWRfcmVhZGluZyA9IEZhbHNlCisgICAgICAgIHNlbGYuX2NvbW1hbmQgPSBO
b25lCisKKyAgICBkZWYgYWNjZXB0X2JvZHkoc2VsZiwgYnl0ZXMpOgorICAgICAgICAiIiJBY2Nl
cHQgYm9keSBkYXRhLiIiIgorCisgICAgICAgICMgVE9ETzogVGhpcyBzaG91bGQgYmUgb3ZlcnJp
ZGVuIGZvciBlYWNoIGNvbW1hbmQgdGhhdCBkZXNpcmVkIGJvZHkgZGF0YQorICAgICAgICAjIHRv
IGhhbmRsZSB0aGUgcmlnaHQgZm9ybWF0IG9mIHRoYXQgZGF0YSwgaS5lLiBwbGFpbiBieXRlcywg
YSBidW5kbGUsCisgICAgICAgICMgZXRjLiAgVGhlIGRlc2VyaWFsaXNhdGlvbiBpbnRvIHRoYXQg
Zm9ybWF0IHNob3VsZCBiZSBkb25lIGluIHRoZQorICAgICAgICAjIFByb3RvY29sIG9iamVjdC4K
KworICAgICAgICAjIGRlZmF1bHQgZmFsbGJhY2sgaXMgdG8gYWNjdW11bGF0ZSBieXRlcy4KKyAg
ICAgICAgc2VsZi5fYm9keV9ieXRlcyArPSBieXRlcworICAgICAgICAKKyAgICBkZWYgZW5kX29m
X2JvZHkoc2VsZik6CisgICAgICAgICIiIk5vIG1vcmUgYm9keSBkYXRhIHdpbGwgYmUgcmVjZWl2
ZWQuIiIiCisgICAgICAgIHNlbGYuX3J1bl9oYW5kbGVyX2NvZGUoc2VsZi5fY29tbWFuZC5kb19i
b2R5LCAoc2VsZi5fYm9keV9ieXRlcywpLCB7fSkKKyAgICAgICAgIyBjYW5ub3QgcmVhZCBhZnRl
ciB0aGlzLgorICAgICAgICBzZWxmLmZpbmlzaGVkX3JlYWRpbmcgPSBUcnVlCisKKyAgICBkZWYg
ZGlzcGF0Y2hfY29tbWFuZChzZWxmLCBjbWQsIGFyZ3MpOgorICAgICAgICAiIiJEZXByZWNhdGVk
IGNvbXBhdGliaWxpdHkgbWV0aG9kLiIiIiAjIFhYWCBYWFgKKyAgICAgICAgdHJ5OgorICAgICAg
ICAgICAgY29tbWFuZCA9IHNlbGYuX2NvbW1hbmRzLmdldChjbWQpCisgICAgICAgIGV4Y2VwdCBM
b29rdXBFcnJvcjoKKyAgICAgICAgICAgIHJhaXNlIGVycm9ycy5TbWFydFByb3RvY29sRXJyb3Io
ImJhZCByZXF1ZXN0ICVyIiAlIChjbWQsKSkKKyAgICAgICAgc2VsZi5fY29tbWFuZCA9IGNvbW1h
bmQoc2VsZi5fYmFja2luZ190cmFuc3BvcnQpCisgICAgICAgIHNlbGYuX3J1bl9oYW5kbGVyX2Nv
ZGUoc2VsZi5fY29tbWFuZC5leGVjdXRlLCBhcmdzLCB7fSkKKworICAgIGRlZiBfcnVuX2hhbmRs
ZXJfY29kZShzZWxmLCBjYWxsYWJsZSwgYXJncywga3dhcmdzKToKKyAgICAgICAgIiIiUnVuIHNv
bWUgaGFuZGxlciBzcGVjaWZpYyBjb2RlICdjYWxsYWJsZScuCisKKyAgICAgICAgSWYgYSByZXN1
bHQgaXMgcmV0dXJuZWQsIGl0IGlzIGNvbnNpZGVyZWQgdG8gYmUgdGhlIGNvbW1hbmRzIHJlc3Bv
bnNlLAorICAgICAgICBhbmQgZmluaXNoZWRfcmVhZGluZyBpcyBzZXQgdHJ1ZSwgYW5kIGl0cyBh
c3NpZ25lZCB0byBzZWxmLnJlc3BvbnNlLgorCisgICAgICAgIEFueSBleGNlcHRpb25zIGNhdWdo
dCBhcmUgdHJhbnNsYXRlZCBhbmQgYSByZXNwb25zZSBvYmplY3QgY3JlYXRlZAorICAgICAgICBm
cm9tIHRoZW0uCisgICAgICAgICIiIgorICAgICAgICByZXN1bHQgPSBzZWxmLl9jYWxsX2NvbnZl
cnRpbmdfZXJyb3JzKGNhbGxhYmxlLCBhcmdzLCBrd2FyZ3MpCisKKyAgICAgICAgaWYgcmVzdWx0
IGlzIG5vdCBOb25lOgorICAgICAgICAgICAgc2VsZi5yZXNwb25zZSA9IHJlc3VsdAorICAgICAg
ICAgICAgc2VsZi5maW5pc2hlZF9yZWFkaW5nID0gVHJ1ZQorCisgICAgZGVmIF9jYWxsX2NvbnZl
cnRpbmdfZXJyb3JzKHNlbGYsIGNhbGxhYmxlLCBhcmdzLCBrd2FyZ3MpOgorICAgICAgICAiIiJD
YWxsIGNhbGxhYmxlIGNvbnZlcnRpbmcgZXJyb3JzIHRvIFJlc3BvbnNlIG9iamVjdHMuIiIiCisg
ICAgICAgICMgWFhYOiBtb3N0IG9mIHRoaXMgZXJyb3IgY29udmVyc2lvbiBpcyBWRlMtcmVsYXRl
ZCwgYW5kIHRodXMgb3VnaHQgdG8KKyAgICAgICAgIyBiZSBpbiBTbWFydFNlcnZlclZGU1JlcXVl
c3RIYW5kbGVyIHNvbWV3aGVyZS4KKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgcmV0dXJuIGNh
bGxhYmxlKCphcmdzLCAqKmt3YXJncykKKyAgICAgICAgZXhjZXB0IGVycm9ycy5Ob1N1Y2hGaWxl
LCBlOgorICAgICAgICAgICAgcmV0dXJuIEZhaWxlZFNtYXJ0U2VydmVyUmVzcG9uc2UoKCdOb1N1
Y2hGaWxlJywgZS5wYXRoKSkKKyAgICAgICAgZXhjZXB0IGVycm9ycy5GaWxlRXhpc3RzLCBlOgor
ICAgICAgICAgICAgcmV0dXJuIEZhaWxlZFNtYXJ0U2VydmVyUmVzcG9uc2UoKCdGaWxlRXhpc3Rz
JywgZS5wYXRoKSkKKyAgICAgICAgZXhjZXB0IGVycm9ycy5EaXJlY3RvcnlOb3RFbXB0eSwgZToK
KyAgICAgICAgICAgIHJldHVybiBGYWlsZWRTbWFydFNlcnZlclJlc3BvbnNlKCgnRGlyZWN0b3J5
Tm90RW1wdHknLCBlLnBhdGgpKQorICAgICAgICBleGNlcHQgZXJyb3JzLlNob3J0UmVhZHZFcnJv
ciwgZToKKyAgICAgICAgICAgIHJldHVybiBGYWlsZWRTbWFydFNlcnZlclJlc3BvbnNlKCgnU2hv
cnRSZWFkdkVycm9yJywKKyAgICAgICAgICAgICAgICBlLnBhdGgsIHN0cihlLm9mZnNldCksIHN0
cihlLmxlbmd0aCksIHN0cihlLmFjdHVhbCkpKQorICAgICAgICBleGNlcHQgVW5pY29kZUVycm9y
LCBlOgorICAgICAgICAgICAgIyBJZiBpdCBpcyBhIERlY29kZUVycm9yLCB0aGFuIG1vc3QgbGlr
ZWx5IHdlIGFyZSBzdGFydGluZworICAgICAgICAgICAgIyB3aXRoIGEgcGxhaW4gc3RyaW5nCisg
ICAgICAgICAgICBzdHJfb3JfdW5pY29kZSA9IGUub2JqZWN0CisgICAgICAgICAgICBpZiBpc2lu
c3RhbmNlKHN0cl9vcl91bmljb2RlLCB1bmljb2RlKToKKyAgICAgICAgICAgICAgICAjIFhYWDog
VVRGLTggbWlnaHQgaGF2ZSBceDAxIChvdXIgc2VwZXJhdG9yIGJ5dGUpIGluIGl0LiAgV2UKKyAg
ICAgICAgICAgICAgICAjIHNob3VsZCBlc2NhcGUgaXQgc29tZWhvdy4KKyAgICAgICAgICAgICAg
ICB2YWwgPSAndTonICsgc3RyX29yX3VuaWNvZGUuZW5jb2RlKCd1dGYtOCcpCisgICAgICAgICAg
ICBlbHNlOgorICAgICAgICAgICAgICAgIHZhbCA9ICdzOicgKyBzdHJfb3JfdW5pY29kZS5lbmNv
ZGUoJ2Jhc2U2NCcpCisgICAgICAgICAgICAjIFRoaXMgaGFuZGxlcyBVbmljb2RlRW5jb2RlRXJy
b3Igb3IgVW5pY29kZURlY29kZUVycm9yCisgICAgICAgICAgICByZXR1cm4gRmFpbGVkU21hcnRT
ZXJ2ZXJSZXNwb25zZSgoZS5fX2NsYXNzX18uX19uYW1lX18sCisgICAgICAgICAgICAgICAgICAg
IGUuZW5jb2RpbmcsIHZhbCwgc3RyKGUuc3RhcnQpLCBzdHIoZS5lbmQpLCBlLnJlYXNvbikpCisg
ICAgICAgIGV4Y2VwdCBlcnJvcnMuVHJhbnNwb3J0Tm90UG9zc2libGUsIGU6CisgICAgICAgICAg
ICBpZiBlLm1zZyA9PSAicmVhZG9ubHkgdHJhbnNwb3J0IjoKKyAgICAgICAgICAgICAgICByZXR1
cm4gRmFpbGVkU21hcnRTZXJ2ZXJSZXNwb25zZSgoJ1JlYWRPbmx5RXJyb3InLCApKQorICAgICAg
ICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICByYWlzZQorCisKK2NsYXNzIEhlbGxvUmVxdWVz
dChTbWFydFNlcnZlclJlcXVlc3QpOgorICAgICIiIkFuc3dlciBhIHZlcnNpb24gcmVxdWVzdCB3
aXRoIHRoZSBoaWdoZXN0IHByb3RvY29sIHZlcnNpb24gdGhpcyBzZXJ2ZXIKKyAgICBzdXBwb3J0
cy4KKyAgICAiIiIKKworICAgIGRlZiBkbyhzZWxmKToKKyAgICAgICAgcmV0dXJuIFN1Y2Nlc3Nm
dWxTbWFydFNlcnZlclJlc3BvbnNlKCgnb2snLCAnMicpKQorCisKK2NsYXNzIEdldEJ1bmRsZVJl
cXVlc3QoU21hcnRTZXJ2ZXJSZXF1ZXN0KToKKyAgICAiIiJHZXQgYSBidW5kbGUgb2YgZnJvbSB0
aGUgbnVsbCByZXZpc2lvbiB0byB0aGUgc3BlY2lmaWVkIHJldmlzaW9uLiIiIgorCisgICAgZGVm
IGRvKHNlbGYsIHBhdGgsIHJldmlzaW9uX2lkKToKKyAgICAgICAgIyBvcGVuIHRyYW5zcG9ydCBy
ZWxhdGl2ZSB0byBvdXIgYmFzZQorICAgICAgICB0ID0gc2VsZi5fYmFja2luZ190cmFuc3BvcnQu
Y2xvbmUocGF0aCkKKyAgICAgICAgY29udHJvbCwgZXh0cmFfcGF0aCA9IGJ6cmRpci5CenJEaXIu
b3Blbl9jb250YWluaW5nX2Zyb21fdHJhbnNwb3J0KHQpCisgICAgICAgIHJlcG8gPSBjb250cm9s
Lm9wZW5fcmVwb3NpdG9yeSgpCisgICAgICAgIHRtcGYgPSB0ZW1wZmlsZS5UZW1wb3JhcnlGaWxl
KCkKKyAgICAgICAgYmFzZV9yZXZpc2lvbiA9IHJldmlzaW9uLk5VTExfUkVWSVNJT04KKyAgICAg
ICAgd3JpdGVfYnVuZGxlKHJlcG8sIHJldmlzaW9uX2lkLCBiYXNlX3JldmlzaW9uLCB0bXBmKQor
ICAgICAgICB0bXBmLnNlZWsoMCkKKyAgICAgICAgcmV0dXJuIFN1Y2Nlc3NmdWxTbWFydFNlcnZl
clJlc3BvbnNlKCgpLCB0bXBmLnJlYWQoKSkKKworCitjbGFzcyBTbWFydFNlcnZlcklzUmVhZG9u
bHkoU21hcnRTZXJ2ZXJSZXF1ZXN0KToKKyAgICAjIFhYWDogdGhpcyByZXF1ZXN0IG1ldGhvZCBi
ZWxvbmdzIHNvbWV3aGVyZSBlbHNlLgorCisgICAgZGVmIGRvKHNlbGYpOgorICAgICAgICBpZiBz
ZWxmLl9iYWNraW5nX3RyYW5zcG9ydC5pc19yZWFkb25seSgpOgorICAgICAgICAgICAgYW5zd2Vy
ID0gJ3llcycKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGFuc3dlciA9ICdubycKKyAgICAg
ICAgcmV0dXJuIFN1Y2Nlc3NmdWxTbWFydFNlcnZlclJlc3BvbnNlKChhbnN3ZXIsKSkKKworCity
ZXF1ZXN0X2hhbmRsZXJzID0gcmVnaXN0cnkuUmVnaXN0cnkoKQorcmVxdWVzdF9oYW5kbGVycy5y
ZWdpc3Rlcl9sYXp5KAorICAgICdhcHBlbmQnLCAnYnpybGliLnNtYXJ0LnZmcycsICdBcHBlbmRS
ZXF1ZXN0JykKK3JlcXVlc3RfaGFuZGxlcnMucmVnaXN0ZXJfbGF6eSgKKyAgICAnQnJhbmNoLmdl
dF9jb25maWdfZmlsZScsICdienJsaWIuc21hcnQuYnJhbmNoJywgJ1NtYXJ0U2VydmVyQnJhbmNo
R2V0Q29uZmlnRmlsZScpCityZXF1ZXN0X2hhbmRsZXJzLnJlZ2lzdGVyX2xhenkoCisgICAgJ0Jy
YW5jaC5sYXN0X3JldmlzaW9uX2luZm8nLCAnYnpybGliLnNtYXJ0LmJyYW5jaCcsICdTbWFydFNl
cnZlckJyYW5jaFJlcXVlc3RMYXN0UmV2aXNpb25JbmZvJykKK3JlcXVlc3RfaGFuZGxlcnMucmVn
aXN0ZXJfbGF6eSgKKyAgICAnQnJhbmNoLmxvY2tfd3JpdGUnLCAnYnpybGliLnNtYXJ0LmJyYW5j
aCcsICdTbWFydFNlcnZlckJyYW5jaFJlcXVlc3RMb2NrV3JpdGUnKQorcmVxdWVzdF9oYW5kbGVy
cy5yZWdpc3Rlcl9sYXp5KAorICAgICdCcmFuY2gucmV2aXNpb25faGlzdG9yeScsICdienJsaWIu
c21hcnQuYnJhbmNoJywgJ1NtYXJ0U2VydmVyUmVxdWVzdFJldmlzaW9uSGlzdG9yeScpCityZXF1
ZXN0X2hhbmRsZXJzLnJlZ2lzdGVyX2xhenkoCisgICAgJ0JyYW5jaC5zZXRfbGFzdF9yZXZpc2lv
bicsICdienJsaWIuc21hcnQuYnJhbmNoJywgJ1NtYXJ0U2VydmVyQnJhbmNoUmVxdWVzdFNldExh
c3RSZXZpc2lvbicpCityZXF1ZXN0X2hhbmRsZXJzLnJlZ2lzdGVyX2xhenkoCisgICAgJ0JyYW5j
aC51bmxvY2snLCAnYnpybGliLnNtYXJ0LmJyYW5jaCcsICdTbWFydFNlcnZlckJyYW5jaFJlcXVl
c3RVbmxvY2snKQorcmVxdWVzdF9oYW5kbGVycy5yZWdpc3Rlcl9sYXp5KAorICAgICdCenJEaXIu
ZmluZF9yZXBvc2l0b3J5JywgJ2J6cmxpYi5zbWFydC5ienJkaXInLCAnU21hcnRTZXJ2ZXJSZXF1
ZXN0RmluZFJlcG9zaXRvcnknKQorcmVxdWVzdF9oYW5kbGVycy5yZWdpc3Rlcl9sYXp5KAorICAg
ICdCenJEaXJGb3JtYXQuaW5pdGlhbGl6ZScsICdienJsaWIuc21hcnQuYnpyZGlyJywgJ1NtYXJ0
U2VydmVyUmVxdWVzdEluaXRpYWxpemVCenJEaXInKQorcmVxdWVzdF9oYW5kbGVycy5yZWdpc3Rl
cl9sYXp5KAorICAgICdCenJEaXIub3Blbl9icmFuY2gnLCAnYnpybGliLnNtYXJ0LmJ6cmRpcics
ICdTbWFydFNlcnZlclJlcXVlc3RPcGVuQnJhbmNoJykKK3JlcXVlc3RfaGFuZGxlcnMucmVnaXN0
ZXJfbGF6eSgKKyAgICAnZGVsZXRlJywgJ2J6cmxpYi5zbWFydC52ZnMnLCAnRGVsZXRlUmVxdWVz
dCcpCityZXF1ZXN0X2hhbmRsZXJzLnJlZ2lzdGVyX2xhenkoCisgICAgJ2dldCcsICdienJsaWIu
c21hcnQudmZzJywgJ0dldFJlcXVlc3QnKQorcmVxdWVzdF9oYW5kbGVycy5yZWdpc3Rlcl9sYXp5
KAorICAgICdnZXRfYnVuZGxlJywgJ2J6cmxpYi5zbWFydC5yZXF1ZXN0JywgJ0dldEJ1bmRsZVJl
cXVlc3QnKQorcmVxdWVzdF9oYW5kbGVycy5yZWdpc3Rlcl9sYXp5KAorICAgICdoYXMnLCAnYnpy
bGliLnNtYXJ0LnZmcycsICdIYXNSZXF1ZXN0JykKK3JlcXVlc3RfaGFuZGxlcnMucmVnaXN0ZXJf
bGF6eSgKKyAgICAnaGVsbG8nLCAnYnpybGliLnNtYXJ0LnJlcXVlc3QnLCAnSGVsbG9SZXF1ZXN0
JykKK3JlcXVlc3RfaGFuZGxlcnMucmVnaXN0ZXJfbGF6eSgKKyAgICAnaXRlcl9maWxlc19yZWN1
cnNpdmUnLCAnYnpybGliLnNtYXJ0LnZmcycsICdJdGVyRmlsZXNSZWN1cnNpdmVSZXF1ZXN0JykK
K3JlcXVlc3RfaGFuZGxlcnMucmVnaXN0ZXJfbGF6eSgKKyAgICAnbGlzdF9kaXInLCAnYnpybGli
LnNtYXJ0LnZmcycsICdMaXN0RGlyUmVxdWVzdCcpCityZXF1ZXN0X2hhbmRsZXJzLnJlZ2lzdGVy
X2xhenkoCisgICAgJ21rZGlyJywgJ2J6cmxpYi5zbWFydC52ZnMnLCAnTWtkaXJSZXF1ZXN0JykK
K3JlcXVlc3RfaGFuZGxlcnMucmVnaXN0ZXJfbGF6eSgKKyAgICAnbW92ZScsICdienJsaWIuc21h
cnQudmZzJywgJ01vdmVSZXF1ZXN0JykKK3JlcXVlc3RfaGFuZGxlcnMucmVnaXN0ZXJfbGF6eSgK
KyAgICAncHV0JywgJ2J6cmxpYi5zbWFydC52ZnMnLCAnUHV0UmVxdWVzdCcpCityZXF1ZXN0X2hh
bmRsZXJzLnJlZ2lzdGVyX2xhenkoCisgICAgJ3B1dF9ub25fYXRvbWljJywgJ2J6cmxpYi5zbWFy
dC52ZnMnLCAnUHV0Tm9uQXRvbWljUmVxdWVzdCcpCityZXF1ZXN0X2hhbmRsZXJzLnJlZ2lzdGVy
X2xhenkoCisgICAgJ3JlYWR2JywgJ2J6cmxpYi5zbWFydC52ZnMnLCAnUmVhZHZSZXF1ZXN0JykK
K3JlcXVlc3RfaGFuZGxlcnMucmVnaXN0ZXJfbGF6eSgKKyAgICAncmVuYW1lJywgJ2J6cmxpYi5z
bWFydC52ZnMnLCAnUmVuYW1lUmVxdWVzdCcpCityZXF1ZXN0X2hhbmRsZXJzLnJlZ2lzdGVyX2xh
enkoJ1JlcG9zaXRvcnkuZ2F0aGVyX3N0YXRzJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAnYnpybGliLnNtYXJ0LnJlcG9zaXRvcnknLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICdTbWFydFNlcnZlclJlcG9zaXRvcnlHYXRoZXJTdGF0cycpCityZXF1ZXN0X2hhbmRs
ZXJzLnJlZ2lzdGVyX2xhenkoCisgICAgJ1JlcG9zaXRvcnkuZ2V0X3JldmlzaW9uX2dyYXBoJywg
J2J6cmxpYi5zbWFydC5yZXBvc2l0b3J5JywgJ1NtYXJ0U2VydmVyUmVwb3NpdG9yeUdldFJldmlz
aW9uR3JhcGgnKQorcmVxdWVzdF9oYW5kbGVycy5yZWdpc3Rlcl9sYXp5KAorICAgICdSZXBvc2l0
b3J5Lmhhc19yZXZpc2lvbicsICdienJsaWIuc21hcnQucmVwb3NpdG9yeScsICdTbWFydFNlcnZl
clJlcXVlc3RIYXNSZXZpc2lvbicpCityZXF1ZXN0X2hhbmRsZXJzLnJlZ2lzdGVyX2xhenkoCisg
ICAgJ1JlcG9zaXRvcnkuaXNfc2hhcmVkJywgJ2J6cmxpYi5zbWFydC5yZXBvc2l0b3J5JywgJ1Nt
YXJ0U2VydmVyUmVwb3NpdG9yeUlzU2hhcmVkJykKK3JlcXVlc3RfaGFuZGxlcnMucmVnaXN0ZXJf
bGF6eSgKKyAgICAnUmVwb3NpdG9yeS5sb2NrX3dyaXRlJywgJ2J6cmxpYi5zbWFydC5yZXBvc2l0
b3J5JywgJ1NtYXJ0U2VydmVyUmVwb3NpdG9yeUxvY2tXcml0ZScpCityZXF1ZXN0X2hhbmRsZXJz
LnJlZ2lzdGVyX2xhenkoCisgICAgJ1JlcG9zaXRvcnkudW5sb2NrJywgJ2J6cmxpYi5zbWFydC5y
ZXBvc2l0b3J5JywgJ1NtYXJ0U2VydmVyUmVwb3NpdG9yeVVubG9jaycpCityZXF1ZXN0X2hhbmRs
ZXJzLnJlZ2lzdGVyX2xhenkoCisgICAgJ1JlcG9zaXRvcnkudGFyYmFsbCcsICdienJsaWIuc21h
cnQucmVwb3NpdG9yeScsCisgICAgJ1NtYXJ0U2VydmVyUmVwb3NpdG9yeVRhcmJhbGwnKQorcmVx
dWVzdF9oYW5kbGVycy5yZWdpc3Rlcl9sYXp5KAorICAgICdybWRpcicsICdienJsaWIuc21hcnQu
dmZzJywgJ1JtZGlyUmVxdWVzdCcpCityZXF1ZXN0X2hhbmRsZXJzLnJlZ2lzdGVyX2xhenkoCisg
ICAgJ3N0YXQnLCAnYnpybGliLnNtYXJ0LnZmcycsICdTdGF0UmVxdWVzdCcpCityZXF1ZXN0X2hh
bmRsZXJzLnJlZ2lzdGVyX2xhenkoCisgICAgJ1RyYW5zcG9ydC5pc19yZWFkb25seScsICdienJs
aWIuc21hcnQucmVxdWVzdCcsICdTbWFydFNlcnZlcklzUmVhZG9ubHknKQorcmVxdWVzdF9oYW5k
bGVycy5yZWdpc3Rlcl9sYXp5KAorICAgICdCenJEaXIub3BlbicsICdienJsaWIuc21hcnQuYnpy
ZGlyJywgJ1NtYXJ0U2VydmVyUmVxdWVzdE9wZW5CenJEaXInKQoK

=== added file bzrlib/smart/server.py // file-id:server.py-20061110062051-chzu1
... 0y32vx8gvur-1 // last-changed:andrew.bennetts@canonical.com-20070420051146-
... m7pn8rgwfh1c8umz // encoding:base64
LS0tIC9kZXYvbnVsbAorKysgYnpybGliL3NtYXJ0L3NlcnZlci5weQpAQCAtMCwwICsxLDIxOCBA
QAorIyBDb3B5cmlnaHQgKEMpIDIwMDYsIDIwMDcgQ2Fub25pY2FsIEx0ZAorIworIyBUaGlzIHBy
b2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1v
ZGlmeQorIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNl
bnNlIGFzIHB1Ymxpc2hlZCBieQorIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRo
ZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgorIyAoYXQgeW91ciBvcHRpb24pIGFueSBs
YXRlciB2ZXJzaW9uLgorIworIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhv
cGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3
aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyMgTUVSQ0hBTlRBQklMSVRZIG9y
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorIyBHTlUgR2VuZXJh
bCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorIworIyBZb3Ugc2hvdWxkIGhhdmUg
cmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorIyBhbG9u
ZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQor
IyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBN
QSAgMDIxMTEtMTMwNyAgVVNBCisKKyIiIlNlcnZlciBmb3Igc21hcnQtc2VydmVyIHByb3RvY29s
LiIiIgorCitpbXBvcnQgZXJybm8KK2ltcG9ydCBzb2NrZXQKK2ltcG9ydCB0aHJlYWRpbmcKKwor
ZnJvbSBienJsaWIuaG9va3MgaW1wb3J0IEhvb2tzCitmcm9tIGJ6cmxpYiBpbXBvcnQgKAorICAg
IHRyYWNlLAorICAgIHRyYW5zcG9ydCwKKykKK2Zyb20gYnpybGliLnNtYXJ0Lm1lZGl1bSBpbXBv
cnQgU21hcnRTZXJ2ZXJTb2NrZXRTdHJlYW1NZWRpdW0KKworCitjbGFzcyBTbWFydFRDUFNlcnZl
cihvYmplY3QpOgorICAgICIiIkxpc3RlbnMgb24gYSBUQ1Agc29ja2V0IGFuZCBhY2NlcHRzIGNv
bm5lY3Rpb25zIGZyb20gc21hcnQgY2xpZW50cy4KKworICAgIEVhY2ggY29ubmVjdGlvbiB3aWxs
IGJlIHNlcnZlZCBieSBhIFNtYXJ0U2VydmVyU29ja2V0U3RyZWFtTWVkaXVtIHJ1bm5pbmcgaW4K
KyAgICBhIHRocmVhZC4KKworICAgIGhvb2tzOiBBbiBpbnN0YW5jZSBvZiBTbWFydFNlcnZlckhv
b2tzLgorICAgICIiIgorCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGJhY2tpbmdfdHJhbnNwb3J0
LCBob3N0PScxMjcuMC4wLjEnLCBwb3J0PTApOgorICAgICAgICAiIiJDb25zdHJ1Y3QgYSBuZXcg
c2VydmVyLgorCisgICAgICAgIFRvIGFjdHVhbGx5IHN0YXJ0IGl0IHJ1bm5pbmcsIGNhbGwgZWl0
aGVyIHN0YXJ0X2JhY2tncm91bmRfdGhyZWFkIG9yCisgICAgICAgIHNlcnZlLgorCisgICAgICAg
IDpwYXJhbSBob3N0OiBOYW1lIG9mIHRoZSBpbnRlcmZhY2UgdG8gbGlzdGVuIG9uLgorICAgICAg
ICA6cGFyYW0gcG9ydDogVENQIHBvcnQgdG8gbGlzdGVuIG9uLCBvciAwIHRvIGFsbG9jYXRlIGEg
dHJhbnNpZW50IHBvcnQuCisgICAgICAgICIiIgorICAgICAgICAjIGxldCBjb25uZWN0aW9ucyB0
aW1lb3V0IHNvIHRoYXQgd2UgZ2V0IGEgY2hhbmNlIHRvIHRlcm1pbmF0ZQorICAgICAgICAjIEtl
ZXAgYSByZWZlcmVuY2UgdG8gdGhlIGV4Y2VwdGlvbnMgd2Ugd2FudCB0byBjYXRjaCBiZWNhdXNl
IHRoZSBzb2NrZXQKKyAgICAgICAgIyBtb2R1bGUncyBnbG9iYWxzIGdldCBzZXQgdG8gTm9uZSBk
dXJpbmcgaW50ZXJwcmV0ZXIgc2h1dGRvd24uCisgICAgICAgIGZyb20gc29ja2V0IGltcG9ydCB0
aW1lb3V0IGFzIHNvY2tldF90aW1lb3V0CisgICAgICAgIGZyb20gc29ja2V0IGltcG9ydCBlcnJv
ciBhcyBzb2NrZXRfZXJyb3IKKyAgICAgICAgc2VsZi5fc29ja2V0X2Vycm9yID0gc29ja2V0X2Vy
cm9yCisgICAgICAgIHNlbGYuX3NvY2tldF90aW1lb3V0ID0gc29ja2V0X3RpbWVvdXQKKyAgICAg
ICAgc2VsZi5fc2VydmVyX3NvY2tldCA9IHNvY2tldC5zb2NrZXQoKQorICAgICAgICBzZWxmLl9z
ZXJ2ZXJfc29ja2V0LmJpbmQoKGhvc3QsIHBvcnQpKQorICAgICAgICBzZWxmLl9zb2NrbmFtZSA9
IHNlbGYuX3NlcnZlcl9zb2NrZXQuZ2V0c29ja25hbWUoKQorICAgICAgICBzZWxmLnBvcnQgPSBz
ZWxmLl9zb2NrbmFtZVsxXQorICAgICAgICBzZWxmLl9zZXJ2ZXJfc29ja2V0Lmxpc3RlbigxKQor
ICAgICAgICBzZWxmLl9zZXJ2ZXJfc29ja2V0LnNldHRpbWVvdXQoMSkKKyAgICAgICAgc2VsZi5i
YWNraW5nX3RyYW5zcG9ydCA9IGJhY2tpbmdfdHJhbnNwb3J0CisgICAgICAgIHNlbGYuX3N0YXJ0
ZWQgPSB0aHJlYWRpbmcuRXZlbnQoKQorICAgICAgICBzZWxmLl9zdG9wcGVkID0gdGhyZWFkaW5n
LkV2ZW50KCkKKworICAgIGRlZiBzZXJ2ZShzZWxmKToKKyAgICAgICAgc2VsZi5fc2hvdWxkX3Rl
cm1pbmF0ZSA9IEZhbHNlCisgICAgICAgIGZvciBob29rIGluIFNtYXJ0VENQU2VydmVyLmhvb2tz
WydzZXJ2ZXJfc3RhcnRlZCddOgorICAgICAgICAgICAgaG9vayhzZWxmLmJhY2tpbmdfdHJhbnNw
b3J0LmJhc2UsIHNlbGYuZ2V0X3VybCgpKQorICAgICAgICBzZWxmLl9zdGFydGVkLnNldCgpCisg
ICAgICAgIHRyeToKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICB3aGlsZSBub3Qg
c2VsZi5fc2hvdWxkX3Rlcm1pbmF0ZToKKyAgICAgICAgICAgICAgICAgICAgdHJ5OgorICAgICAg
ICAgICAgICAgICAgICAgICAgY29ubiwgY2xpZW50X2FkZHIgPSBzZWxmLl9zZXJ2ZXJfc29ja2V0
LmFjY2VwdCgpCisgICAgICAgICAgICAgICAgICAgIGV4Y2VwdCBzZWxmLl9zb2NrZXRfdGltZW91
dDoKKyAgICAgICAgICAgICAgICAgICAgICAgICMganVzdCBjaGVjayBpZiB3ZSdyZSBhc2tlZCB0
byBzdG9wCisgICAgICAgICAgICAgICAgICAgICAgICBwYXNzCisgICAgICAgICAgICAgICAgICAg
IGV4Y2VwdCBzZWxmLl9zb2NrZXRfZXJyb3IsIGU6CisgICAgICAgICAgICAgICAgICAgICAgICAj
IGlmIHRoZSBzb2NrZXQgaXMgY2xvc2VkIGJ5IHN0b3BfYmFja2dyb3VuZF90aHJlYWQKKyAgICAg
ICAgICAgICAgICAgICAgICAgICMgd2UgbWlnaHQgZ2V0IGEgRUJBREYgaGVyZSwgYW55IG90aGVy
IHNvY2tldCBlcnJvcnMKKyAgICAgICAgICAgICAgICAgICAgICAgICMgc2hvdWxkIGdldCBsb2dn
ZWQuCisgICAgICAgICAgICAgICAgICAgICAgICBpZiBlLmFyZ3NbMF0gIT0gZXJybm8uRUJBREY6
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhY2Uud2FybmluZygibGlzdGVuaW5nIHNv
Y2tldCBlcnJvcjogJXMiLCBlKQorICAgICAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAg
ICAgICAgICAgICAgICAgc2VsZi5zZXJ2ZV9jb25uKGNvbm4pCisgICAgICAgICAgICBleGNlcHQg
S2V5Ym9hcmRJbnRlcnJ1cHQ6CisgICAgICAgICAgICAgICAgIyBkb250IGxvZyB3aGVuIENUUkwt
QydkLgorICAgICAgICAgICAgICAgIHJhaXNlCisgICAgICAgICAgICBleGNlcHQgRXhjZXB0aW9u
LCBlOgorICAgICAgICAgICAgICAgIHRyYWNlLmVycm9yKCJVbmhhbmRsZWQgc21hcnQgc2VydmVy
IGVycm9yLiIpCisgICAgICAgICAgICAgICAgdHJhY2UubG9nX2V4Y2VwdGlvbl9xdWlldGx5KCkK
KyAgICAgICAgICAgICAgICByYWlzZQorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgc2Vs
Zi5fc3RvcHBlZC5zZXQoKQorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgICMgZW5z
dXJlIHRoZSBzZXJ2ZXIgc29ja2V0IGlzIGNsb3NlZC4KKyAgICAgICAgICAgICAgICBzZWxmLl9z
ZXJ2ZXJfc29ja2V0LmNsb3NlKCkKKyAgICAgICAgICAgIGV4Y2VwdCBzZWxmLl9zb2NrZXRfZXJy
b3I6CisgICAgICAgICAgICAgICAgIyBpZ25vcmUgZXJyb3JzIG9uIGNsb3NlCisgICAgICAgICAg
ICAgICAgcGFzcworICAgICAgICAgICAgZm9yIGhvb2sgaW4gU21hcnRUQ1BTZXJ2ZXIuaG9va3Nb
J3NlcnZlcl9zdG9wcGVkJ106CisgICAgICAgICAgICAgICAgaG9vayhzZWxmLmJhY2tpbmdfdHJh
bnNwb3J0LmJhc2UsIHNlbGYuZ2V0X3VybCgpKQorCisgICAgZGVmIGdldF91cmwoc2VsZik6Cisg
ICAgICAgICIiIlJldHVybiB0aGUgdXJsIG9mIHRoZSBzZXJ2ZXIiIiIKKyAgICAgICAgcmV0dXJu
ICJienI6Ly8lczolZC8iICUgc2VsZi5fc29ja25hbWUKKworICAgIGRlZiBzZXJ2ZV9jb25uKHNl
bGYsIGNvbm4pOgorICAgICAgICAjIEZvciBXSU4zMiwgd2hlcmUgdGhlIHRpbWVvdXQgdmFsdWUg
ZnJvbSB0aGUgbGlzdGVuaW5nIHNvY2tldAorICAgICAgICAjIHByb3BvZ2F0ZXMgdG8gdGhlIG5l
d2x5IGFjY2VwdGVkIHNvY2tldC4KKyAgICAgICAgY29ubi5zZXRibG9ja2luZyhUcnVlKQorICAg
ICAgICBjb25uLnNldHNvY2tvcHQoc29ja2V0LklQUFJPVE9fVENQLCBzb2NrZXQuVENQX05PREVM
QVksIDEpCisgICAgICAgIGhhbmRsZXIgPSBTbWFydFNlcnZlclNvY2tldFN0cmVhbU1lZGl1bShj
b25uLCBzZWxmLmJhY2tpbmdfdHJhbnNwb3J0KQorICAgICAgICBjb25uZWN0aW9uX3RocmVhZCA9
IHRocmVhZGluZy5UaHJlYWQoTm9uZSwgaGFuZGxlci5zZXJ2ZSwgbmFtZT0nc21hcnQtc2VydmVy
LWNoaWxkJykKKyAgICAgICAgY29ubmVjdGlvbl90aHJlYWQuc2V0RGFlbW9uKFRydWUpCisgICAg
ICAgIGNvbm5lY3Rpb25fdGhyZWFkLnN0YXJ0KCkKKworICAgIGRlZiBzdGFydF9iYWNrZ3JvdW5k
X3RocmVhZChzZWxmKToKKyAgICAgICAgc2VsZi5fc3RhcnRlZC5jbGVhcigpCisgICAgICAgIHNl
bGYuX3NlcnZlcl90aHJlYWQgPSB0aHJlYWRpbmcuVGhyZWFkKE5vbmUsCisgICAgICAgICAgICAg
ICAgc2VsZi5zZXJ2ZSwKKyAgICAgICAgICAgICAgICBuYW1lPSdzZXJ2ZXItJyArIHNlbGYuZ2V0
X3VybCgpKQorICAgICAgICBzZWxmLl9zZXJ2ZXJfdGhyZWFkLnNldERhZW1vbihUcnVlKQorICAg
ICAgICBzZWxmLl9zZXJ2ZXJfdGhyZWFkLnN0YXJ0KCkKKyAgICAgICAgc2VsZi5fc3RhcnRlZC53
YWl0KCkKKworICAgIGRlZiBzdG9wX2JhY2tncm91bmRfdGhyZWFkKHNlbGYpOgorICAgICAgICBz
ZWxmLl9zdG9wcGVkLmNsZWFyKCkKKyAgICAgICAgIyB0ZWxsIHRoZSBtYWluIGxvb3AgdG8gcXVp
dCBvbiB0aGUgbmV4dCBpdGVyYXRpb24uCisgICAgICAgIHNlbGYuX3Nob3VsZF90ZXJtaW5hdGUg
PSBUcnVlCisgICAgICAgICMgY2xvc2UgdGhlIHNvY2tldCAtIGdpdmVzIGVycm9yIHRvIGNvbm5l
Y3Rpb25zIGZyb20gaGVyZSBvbiBpbiwKKyAgICAgICAgIyByYXRoZXIgdGhhbiBhIGNvbm5lY3Rp
b24gcmVzZXQgZXJyb3IgdG8gY29ubmVjdGlvbnMgbWFkZSBkdXJpbmcKKyAgICAgICAgIyB0aGUg
cGVyaW9kIGJldHdlZW4gc2V0dGluZyBfc2hvdWxkX3Rlcm1pbmF0ZSA9IFRydWUgYW5kIAorICAg
ICAgICAjIHRoZSBjdXJyZW50IHJlcXVlc3QgY29tcGxldGluZy9hYm9ydGluZy4gSXQgbWF5IGFs
c28gYnJlYWsgb3V0IHRoZQorICAgICAgICAjIG1haW4gbG9vcCBpZiBpdCB3YXMgY3VycmVudGx5
IGluIGFjY2VwdCgpIChvbiBzb21lIHBsYXRmb3JtcykuCisgICAgICAgIHRyeToKKyAgICAgICAg
ICAgIHNlbGYuX3NlcnZlcl9zb2NrZXQuY2xvc2UoKQorICAgICAgICBleGNlcHQgc2VsZi5fc29j
a2V0X2Vycm9yOgorICAgICAgICAgICAgIyBpZ25vcmUgZXJyb3JzIG9uIGNsb3NlCisgICAgICAg
ICAgICBwYXNzCisgICAgICAgIGlmIG5vdCBzZWxmLl9zdG9wcGVkLmlzU2V0KCk6CisgICAgICAg
ICAgICAjIHNlcnZlciBoYXMgbm90IHN0b3BwZWQgKHRob3VnaCBpdCBtYXkgYmUgc3RvcHBpbmcp
CisgICAgICAgICAgICAjIGl0cyBsaWtlbHkgaW4gYWNjZXB0KCksIHNvIGdpdmUgaXQgYSBjb25u
ZWN0aW9uCisgICAgICAgICAgICB0ZW1wX3NvY2tldCA9IHNvY2tldC5zb2NrZXQoKQorICAgICAg
ICAgICAgdGVtcF9zb2NrZXQuc2V0c29ja29wdChzb2NrZXQuSVBQUk9UT19UQ1AsIHNvY2tldC5U
Q1BfTk9ERUxBWSwgMSkKKyAgICAgICAgICAgIGlmIG5vdCB0ZW1wX3NvY2tldC5jb25uZWN0X2V4
KHNlbGYuX3NvY2tuYW1lKToKKyAgICAgICAgICAgICAgICAjIGFuZCBjbG9zZSBpdCBpbW1lZGlh
dGVseTogd2UgZG9udCBjaG9vc2UgdG8gc2VuZCBhbnkgcmVxdWVzdHMuCisgICAgICAgICAgICAg
ICAgdGVtcF9zb2NrZXQuY2xvc2UoKQorICAgICAgICBzZWxmLl9zdG9wcGVkLndhaXQoKQorICAg
ICAgICBzZWxmLl9zZXJ2ZXJfdGhyZWFkLmpvaW4oKQorCisKK2NsYXNzIFNtYXJ0U2VydmVySG9v
a3MoSG9va3MpOgorICAgICIiIkhvb2tzIGZvciB0aGUgc21hcnQgc2VydmVyLiIiIgorCisgICAg
ZGVmIF9faW5pdF9fKHNlbGYpOgorICAgICAgICAiIiJDcmVhdGUgdGhlIGRlZmF1bHQgaG9va3Mu
CisKKyAgICAgICAgVGhlc2UgYXJlIGFsbCBlbXB0eSBpbml0aWFsbHksIGJlY2F1c2UgYnkgZGVm
YXVsdCBub3RoaW5nIHNob3VsZCBnZXQKKyAgICAgICAgbm90aWZpZWQuCisgICAgICAgICIiIgor
ICAgICAgICBIb29rcy5fX2luaXRfXyhzZWxmKQorICAgICAgICAjIEludHJvZHVjZWQgaW4gMC4x
NjoKKyAgICAgICAgIyBpbnZva2VkIHdoZW5ldmVyIHRoZSBzZXJ2ZXIgc3RhcnRzIHNlcnZpbmcg
YSBkaXJlY3RvcnkuCisgICAgICAgICMgVGhlIGFwaSBzaWduYXR1cmUgaXMgKGJhY2tpbmcgdXJs
LCBwdWJsaWMgdXJsKS4KKyAgICAgICAgc2VsZlsnc2VydmVyX3N0YXJ0ZWQnXSA9IFtdCisgICAg
ICAgICMgSW50cm9kdWNlZCBpbiAwLjE2OgorICAgICAgICAjIGludm9rZWQgd2hlbmV2ZXIgdGhl
IHNlcnZlciBzdG9wcyBzZXJ2aW5nIGEgZGlyZWN0b3J5LgorICAgICAgICAjIFRoZSBhcGkgc2ln
bmF0dXJlIGlzIChiYWNraW5nIHVybCwgcHVibGljIHVybCkuCisgICAgICAgIHNlbGZbJ3NlcnZl
cl9zdG9wcGVkJ10gPSBbXQorCitTbWFydFRDUFNlcnZlci5ob29rcyA9IFNtYXJ0U2VydmVySG9v
a3MoKQorCisKK2NsYXNzIFNtYXJ0VENQU2VydmVyX2Zvcl90ZXN0aW5nKFNtYXJ0VENQU2VydmVy
KToKKyAgICAiIiJTZXJ2ZXIgc3VpdGFibGUgZm9yIHVzZSBieSB0cmFuc3BvcnQgdGVzdHMuCisg
ICAgCisgICAgVGhpcyBzZXJ2ZXIgaXMgYmFja2VkIGJ5IHRoZSBwcm9jZXNzJ3MgY3dkLgorICAg
ICIiIgorCisgICAgZGVmIF9faW5pdF9fKHNlbGYpOgorICAgICAgICBTbWFydFRDUFNlcnZlci5f
X2luaXRfXyhzZWxmLCBOb25lKQorICAgICAgICAKKyAgICBkZWYgZ2V0X2JhY2tpbmdfdHJhbnNw
b3J0KHNlbGYsIGJhY2tpbmdfdHJhbnNwb3J0X3NlcnZlcik6CisgICAgICAgICIiIkdldCBhIGJh
Y2tpbmcgdHJhbnNwb3J0IGZyb20gYSBzZXJ2ZXIgd2UgYXJlIGRlY29yYXRpbmcuIiIiCisgICAg
ICAgIHJldHVybiB0cmFuc3BvcnQuZ2V0X3RyYW5zcG9ydChiYWNraW5nX3RyYW5zcG9ydF9zZXJ2
ZXIuZ2V0X3VybCgpKQorCisgICAgZGVmIHNldFVwKHNlbGYsIGJhY2tpbmdfdHJhbnNwb3J0X3Nl
cnZlcj1Ob25lKToKKyAgICAgICAgIiIiU2V0IHVwIHNlcnZlciBmb3IgdGVzdGluZyIiIgorICAg
ICAgICBmcm9tIGJ6cmxpYi50cmFuc3BvcnQuY2hyb290IGltcG9ydCBDaHJvb3RTZXJ2ZXIKKyAg
ICAgICAgaWYgYmFja2luZ190cmFuc3BvcnRfc2VydmVyIGlzIE5vbmU6CisgICAgICAgICAgICBm
cm9tIGJ6cmxpYi50cmFuc3BvcnQubG9jYWwgaW1wb3J0IExvY2FsVVJMU2VydmVyCisgICAgICAg
ICAgICBiYWNraW5nX3RyYW5zcG9ydF9zZXJ2ZXIgPSBMb2NhbFVSTFNlcnZlcigpCisgICAgICAg
IHNlbGYuY2hyb290X3NlcnZlciA9IENocm9vdFNlcnZlcigKKyAgICAgICAgICAgIHNlbGYuZ2V0
X2JhY2tpbmdfdHJhbnNwb3J0KGJhY2tpbmdfdHJhbnNwb3J0X3NlcnZlcikpCisgICAgICAgIHNl
bGYuY2hyb290X3NlcnZlci5zZXRVcCgpCisgICAgICAgIHNlbGYuYmFja2luZ190cmFuc3BvcnQg
PSB0cmFuc3BvcnQuZ2V0X3RyYW5zcG9ydCgKKyAgICAgICAgICAgIHNlbGYuY2hyb290X3NlcnZl
ci5nZXRfdXJsKCkpCisgICAgICAgIHNlbGYuc3RhcnRfYmFja2dyb3VuZF90aHJlYWQoKQorCisg
ICAgZGVmIHRlYXJEb3duKHNlbGYpOgorICAgICAgICBzZWxmLnN0b3BfYmFja2dyb3VuZF90aHJl
YWQoKQorICAgICAgICBzZWxmLmNocm9vdF9zZXJ2ZXIudGVhckRvd24oKQorCisgICAgZGVmIGdl
dF9ib2d1c191cmwoc2VsZik6CisgICAgICAgICIiIlJldHVybiBhIFVSTCB3aGljaCB3aWxsIGZh
aWwgdG8gY29ubmVjdCIiIgorICAgICAgICByZXR1cm4gJ2J6cjovLzEyNy4wLjAuMToxLycKKwor
CitjbGFzcyBSZWFkb25seVNtYXJ0VENQU2VydmVyX2Zvcl90ZXN0aW5nKFNtYXJ0VENQU2VydmVy
X2Zvcl90ZXN0aW5nKToKKyAgICAiIiJHZXQgYSByZWFkb25seSBzZXJ2ZXIgZm9yIHRlc3Rpbmcu
IiIiCisKKyAgICBkZWYgZ2V0X2JhY2tpbmdfdHJhbnNwb3J0KHNlbGYsIGJhY2tpbmdfdHJhbnNw
b3J0X3NlcnZlcik6CisgICAgICAgICIiIkdldCBhIGJhY2tpbmcgdHJhbnNwb3J0IGZyb20gYSBz
ZXJ2ZXIgd2UgYXJlIGRlY29yYXRpbmcuIiIiCisgICAgICAgIHVybCA9ICdyZWFkb25seSsnICsg
YmFja2luZ190cmFuc3BvcnRfc2VydmVyLmdldF91cmwoKQorICAgICAgICByZXR1cm4gdHJhbnNw
b3J0LmdldF90cmFuc3BvcnQodXJsKQorCgo=

=== added file bzrlib/smart/vfs.py // file-id:vfs.py-20061108095550-gunadhxmzkd
... jfeek-2 // last-changed:robertc@lifelesswks.robertcollins.net-2007042412200
... 9-8bb4dede6a298d93 // encoding:base64
LS0tIC9kZXYvbnVsbAorKysgYnpybGliL3NtYXJ0L3Zmcy5weQpAQCAtMCwwICsxLDE5OCBAQAor
IyBDb3B5cmlnaHQgKEMpIDIwMDYsIDIwMDcgQ2Fub25pY2FsIEx0ZAorIworIyBUaGlzIHByb2dy
YW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlm
eQorIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl
IGFzIHB1Ymxpc2hlZCBieQorIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIg
dmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgorIyAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRl
ciB2ZXJzaW9uLgorIworIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUg
dGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRo
b3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorIyBHTlUgR2VuZXJhbCBQ
dWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorIworIyBZb3Ugc2hvdWxkIGhhdmUgcmVj
ZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorIyBhbG9uZyB3
aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorIyBG
b3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAg
MDIxMTEtMTMwNyAgVVNBCisKKyIiIlZGUyBvcGVyYXRpb25zIGZvciB0aGUgc21hcnQgc2VydmVy
LgorCitUaGlzIG1vZHVsZSBkZWZpbmVzIHRoZSBzbWFydCBzZXJ2ZXIgbWV0aG9kcyB0aGF0IGFy
ZSBsb3ctbGV2ZWwgZmlsZSBvcGVyYXRpb25zCistLSBpLmUuIG1ldGhvZHMgdGhhdCBvcGVyYXRl
IGRpcmVjdGx5IG9uIGZpbGVzIGFuZCBkaXJlY3RvcmllcywgcmF0aGVyIHRoYW4KK2hpZ2hlci1s
ZXZlbCBjb25jZXB0cyBsaWtlIGJyYW5jaGVzIGFuZCByZXZpc2lvbnMuCisKK1RoZXNlIG1ldGhv
ZHMsIHBsdXMgJ2hlbGxvJyBhbmQgJ2dldF9idW5kbGUnLCBhcmUgdmVyc2lvbiAxIG9mIHRoZSBz
bWFydCBzZXJ2ZXIKK3Byb3RvY29sLCBhcyBpbXBsZW1lbnRlZCBpbiBienIgMC4xMSBhbmQgbGF0
ZXIuCisiIiIKKworaW1wb3J0IG9zCisKK2Zyb20gYnpybGliIGltcG9ydCBlcnJvcnMKK2Zyb20g
YnpybGliLnNtYXJ0IGltcG9ydCByZXF1ZXN0CisKKworZGVmIF9kZXNlcmlhbGlzZV9vcHRpb25h
bF9tb2RlKG1vZGUpOgorICAgICMgWFhYOiBGSVhNRSB0aGlzIHNob3VsZCBiZSBvbiB0aGUgcHJv
dG9jb2wgb2JqZWN0LiAgTGF0ZXIgcHJvdG9jb2wgdmVyc2lvbnMKKyAgICAjIG1pZ2h0IHNlcmlh
bGlzZSBtb2RlcyBkaWZmZXJlbnRseS4KKyAgICBpZiBtb2RlID09ICcnOgorICAgICAgICByZXR1
cm4gTm9uZQorICAgIGVsc2U6CisgICAgICAgIHJldHVybiBpbnQobW9kZSkKKworCitkZWYgdmZz
X2VuYWJsZWQoKToKKyAgICAiIiJJcyB0aGUgVkZTIGVuYWJsZWQgPworCisgICAgdGhlIFZGUyBp
cyBkaXNhYmxlZCB3aGVuIHRoZSBCWlJfTk9fU01BUlRfVkZTIGVudmlyb25tZW50IHZhcmlhYmxl
IGlzIHNldC4KKworICAgIDpyZXR1cm46IFRydWUgaWYgaXQgaXMgZW5hYmxlZC4KKyAgICAiIiIK
KyAgICByZXR1cm4gbm90ICdCWlJfTk9fU01BUlRfVkZTJyBpbiBvcy5lbnZpcm9uCisKKworY2xh
c3MgVmZzUmVxdWVzdChyZXF1ZXN0LlNtYXJ0U2VydmVyUmVxdWVzdCk6CisgICAgIiIiQmFzZSBj
bGFzcyBmb3IgVkZTIHJlcXVlc3RzLgorICAgIAorICAgIFZGUyByZXF1ZXN0cyBhcmUgZGlzYWJs
ZWQgaWYgdmZzX2VuYWJsZWQoKSByZXR1cm5zIEZhbHNlLgorICAgICIiIgorCisgICAgZGVmIF9j
aGVja19lbmFibGVkKHNlbGYpOgorICAgICAgICBpZiBub3QgdmZzX2VuYWJsZWQoKToKKyAgICAg
ICAgICAgIHJhaXNlIGVycm9ycy5EaXNhYmxlZE1ldGhvZChzZWxmLl9fY2xhc3NfXy5fX25hbWVf
XykKKworCitjbGFzcyBIYXNSZXF1ZXN0KFZmc1JlcXVlc3QpOgorCisgICAgZGVmIGRvKHNlbGYs
IHJlbHBhdGgpOgorICAgICAgICByID0gc2VsZi5fYmFja2luZ190cmFuc3BvcnQuaGFzKHJlbHBh
dGgpIGFuZCAneWVzJyBvciAnbm8nCisgICAgICAgIHJldHVybiByZXF1ZXN0LlN1Y2Nlc3NmdWxT
bWFydFNlcnZlclJlc3BvbnNlKChyLCkpCisKKworY2xhc3MgR2V0UmVxdWVzdChWZnNSZXF1ZXN0
KToKKworICAgIGRlZiBkbyhzZWxmLCByZWxwYXRoKToKKyAgICAgICAgYmFja2luZ19ieXRlcyA9
IHNlbGYuX2JhY2tpbmdfdHJhbnNwb3J0LmdldF9ieXRlcyhyZWxwYXRoKQorICAgICAgICByZXR1
cm4gcmVxdWVzdC5TdWNjZXNzZnVsU21hcnRTZXJ2ZXJSZXNwb25zZSgoJ29rJywpLCBiYWNraW5n
X2J5dGVzKQorCisKK2NsYXNzIEFwcGVuZFJlcXVlc3QoVmZzUmVxdWVzdCk6CisKKyAgICBkZWYg
ZG8oc2VsZiwgcmVscGF0aCwgbW9kZSk6CisgICAgICAgIHNlbGYuX3JlbHBhdGggPSByZWxwYXRo
CisgICAgICAgIHNlbGYuX21vZGUgPSBfZGVzZXJpYWxpc2Vfb3B0aW9uYWxfbW9kZShtb2RlKQor
ICAgIAorICAgIGRlZiBkb19ib2R5KHNlbGYsIGJvZHlfYnl0ZXMpOgorICAgICAgICBvbGRfbGVu
Z3RoID0gc2VsZi5fYmFja2luZ190cmFuc3BvcnQuYXBwZW5kX2J5dGVzKAorICAgICAgICAgICAg
c2VsZi5fcmVscGF0aCwgYm9keV9ieXRlcywgc2VsZi5fbW9kZSkKKyAgICAgICAgcmV0dXJuIHJl
cXVlc3QuU3VjY2Vzc2Z1bFNtYXJ0U2VydmVyUmVzcG9uc2UoKCdhcHBlbmRlZCcsICclZCcgJSBv
bGRfbGVuZ3RoKSkKKworCitjbGFzcyBEZWxldGVSZXF1ZXN0KFZmc1JlcXVlc3QpOgorCisgICAg
ZGVmIGRvKHNlbGYsIHJlbHBhdGgpOgorICAgICAgICBzZWxmLl9iYWNraW5nX3RyYW5zcG9ydC5k
ZWxldGUocmVscGF0aCkKKyAgICAgICAgcmV0dXJuIHJlcXVlc3QuU3VjY2Vzc2Z1bFNtYXJ0U2Vy
dmVyUmVzcG9uc2UoKCdvaycsICkpCisKKworY2xhc3MgSXRlckZpbGVzUmVjdXJzaXZlUmVxdWVz
dChWZnNSZXF1ZXN0KToKKworICAgIGRlZiBkbyhzZWxmLCByZWxwYXRoKToKKyAgICAgICAgdHJh
bnNwb3J0ID0gc2VsZi5fYmFja2luZ190cmFuc3BvcnQuY2xvbmUocmVscGF0aCkKKyAgICAgICAg
ZmlsZW5hbWVzID0gdHJhbnNwb3J0Lml0ZXJfZmlsZXNfcmVjdXJzaXZlKCkKKyAgICAgICAgcmV0
dXJuIHJlcXVlc3QuU3VjY2Vzc2Z1bFNtYXJ0U2VydmVyUmVzcG9uc2UoKCduYW1lcycsKSArIHR1
cGxlKGZpbGVuYW1lcykpCisKKworY2xhc3MgTGlzdERpclJlcXVlc3QoVmZzUmVxdWVzdCk6CisK
KyAgICBkZWYgZG8oc2VsZiwgcmVscGF0aCk6CisgICAgICAgIGZpbGVuYW1lcyA9IHNlbGYuX2Jh
Y2tpbmdfdHJhbnNwb3J0Lmxpc3RfZGlyKHJlbHBhdGgpCisgICAgICAgIHJldHVybiByZXF1ZXN0
LlN1Y2Nlc3NmdWxTbWFydFNlcnZlclJlc3BvbnNlKCgnbmFtZXMnLCkgKyB0dXBsZShmaWxlbmFt
ZXMpKQorCisKK2NsYXNzIE1rZGlyUmVxdWVzdChWZnNSZXF1ZXN0KToKKworICAgIGRlZiBkbyhz
ZWxmLCByZWxwYXRoLCBtb2RlKToKKyAgICAgICAgc2VsZi5fYmFja2luZ190cmFuc3BvcnQubWtk
aXIocmVscGF0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX2Rlc2Vy
aWFsaXNlX29wdGlvbmFsX21vZGUobW9kZSkpCisgICAgICAgIHJldHVybiByZXF1ZXN0LlN1Y2Nl
c3NmdWxTbWFydFNlcnZlclJlc3BvbnNlKCgnb2snLCkpCisKKworY2xhc3MgTW92ZVJlcXVlc3Qo
VmZzUmVxdWVzdCk6CisKKyAgICBkZWYgZG8oc2VsZiwgcmVsX2Zyb20sIHJlbF90byk6CisgICAg
ICAgIHNlbGYuX2JhY2tpbmdfdHJhbnNwb3J0Lm1vdmUocmVsX2Zyb20sIHJlbF90bykKKyAgICAg
ICAgcmV0dXJuIHJlcXVlc3QuU3VjY2Vzc2Z1bFNtYXJ0U2VydmVyUmVzcG9uc2UoKCdvaycsKSkK
KworCitjbGFzcyBQdXRSZXF1ZXN0KFZmc1JlcXVlc3QpOgorCisgICAgZGVmIGRvKHNlbGYsIHJl
bHBhdGgsIG1vZGUpOgorICAgICAgICBzZWxmLl9yZWxwYXRoID0gcmVscGF0aAorICAgICAgICBz
ZWxmLl9tb2RlID0gX2Rlc2VyaWFsaXNlX29wdGlvbmFsX21vZGUobW9kZSkKKworICAgIGRlZiBk
b19ib2R5KHNlbGYsIGJvZHlfYnl0ZXMpOgorICAgICAgICBzZWxmLl9iYWNraW5nX3RyYW5zcG9y
dC5wdXRfYnl0ZXMoc2VsZi5fcmVscGF0aCwgYm9keV9ieXRlcywgc2VsZi5fbW9kZSkKKyAgICAg
ICAgcmV0dXJuIHJlcXVlc3QuU3VjY2Vzc2Z1bFNtYXJ0U2VydmVyUmVzcG9uc2UoKCdvaycsKSkK
KworCitjbGFzcyBQdXROb25BdG9taWNSZXF1ZXN0KFZmc1JlcXVlc3QpOgorCisgICAgZGVmIGRv
KHNlbGYsIHJlbHBhdGgsIG1vZGUsIGNyZWF0ZV9wYXJlbnQsIGRpcl9tb2RlKToKKyAgICAgICAg
c2VsZi5fcmVscGF0aCA9IHJlbHBhdGgKKyAgICAgICAgc2VsZi5fZGlyX21vZGUgPSBfZGVzZXJp
YWxpc2Vfb3B0aW9uYWxfbW9kZShkaXJfbW9kZSkKKyAgICAgICAgc2VsZi5fbW9kZSA9IF9kZXNl
cmlhbGlzZV9vcHRpb25hbF9tb2RlKG1vZGUpCisgICAgICAgICMgYSBib29sZWFuIHdvdWxkIGJl
IG5pY2VyIFhYWAorICAgICAgICBzZWxmLl9jcmVhdGVfcGFyZW50ID0gKGNyZWF0ZV9wYXJlbnQg
PT0gJ1QnKQorCisgICAgZGVmIGRvX2JvZHkoc2VsZiwgYm9keV9ieXRlcyk6CisgICAgICAgIHNl
bGYuX2JhY2tpbmdfdHJhbnNwb3J0LnB1dF9ieXRlc19ub25fYXRvbWljKHNlbGYuX3JlbHBhdGgs
CisgICAgICAgICAgICAgICAgYm9keV9ieXRlcywKKyAgICAgICAgICAgICAgICBtb2RlPXNlbGYu
X21vZGUsCisgICAgICAgICAgICAgICAgY3JlYXRlX3BhcmVudF9kaXI9c2VsZi5fY3JlYXRlX3Bh
cmVudCwKKyAgICAgICAgICAgICAgICBkaXJfbW9kZT1zZWxmLl9kaXJfbW9kZSkKKyAgICAgICAg
cmV0dXJuIHJlcXVlc3QuU3VjY2Vzc2Z1bFNtYXJ0U2VydmVyUmVzcG9uc2UoKCdvaycsKSkKKwor
CitjbGFzcyBSZWFkdlJlcXVlc3QoVmZzUmVxdWVzdCk6CisKKyAgICBkZWYgZG8oc2VsZiwgcmVs
cGF0aCk6CisgICAgICAgIHNlbGYuX3JlbHBhdGggPSByZWxwYXRoCisKKyAgICBkZWYgZG9fYm9k
eShzZWxmLCBib2R5X2J5dGVzKToKKyAgICAgICAgIiIiYWNjZXB0IG9mZnNldHMgZm9yIGEgcmVh
ZHYgcmVxdWVzdC4iIiIKKyAgICAgICAgb2Zmc2V0cyA9IHNlbGYuX2Rlc2VyaWFsaXNlX29mZnNl
dHMoYm9keV9ieXRlcykKKyAgICAgICAgYmFja2luZ19ieXRlcyA9ICcnLmpvaW4oYnl0ZXMgZm9y
IG9mZnNldCwgYnl0ZXMgaW4KKyAgICAgICAgICAgIHNlbGYuX2JhY2tpbmdfdHJhbnNwb3J0LnJl
YWR2KHNlbGYuX3JlbHBhdGgsIG9mZnNldHMpKQorICAgICAgICByZXR1cm4gcmVxdWVzdC5TdWNj
ZXNzZnVsU21hcnRTZXJ2ZXJSZXNwb25zZSgoJ3JlYWR2JywpLCBiYWNraW5nX2J5dGVzKQorCisg
ICAgZGVmIF9kZXNlcmlhbGlzZV9vZmZzZXRzKHNlbGYsIHRleHQpOgorICAgICAgICAjIFhYWDog
RklYTUUgdGhpcyBzaG91bGQgYmUgb24gdGhlIHByb3RvY29sIG9iamVjdC4KKyAgICAgICAgb2Zm
c2V0cyA9IFtdCisgICAgICAgIGZvciBsaW5lIGluIHRleHQuc3BsaXQoJ1xuJyk6CisgICAgICAg
ICAgICBpZiBub3QgbGluZToKKyAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAg
c3RhcnQsIGxlbmd0aCA9IGxpbmUuc3BsaXQoJywnKQorICAgICAgICAgICAgb2Zmc2V0cy5hcHBl
bmQoKGludChzdGFydCksIGludChsZW5ndGgpKSkKKyAgICAgICAgcmV0dXJuIG9mZnNldHMKKwor
CitjbGFzcyBSZW5hbWVSZXF1ZXN0KFZmc1JlcXVlc3QpOgorCisgICAgZGVmIGRvKHNlbGYsIHJl
bF9mcm9tLCByZWxfdG8pOgorICAgICAgICBzZWxmLl9iYWNraW5nX3RyYW5zcG9ydC5yZW5hbWUo
cmVsX2Zyb20sIHJlbF90bykKKyAgICAgICAgcmV0dXJuIHJlcXVlc3QuU3VjY2Vzc2Z1bFNtYXJ0
U2VydmVyUmVzcG9uc2UoKCdvaycsICkpCisKKworY2xhc3MgUm1kaXJSZXF1ZXN0KFZmc1JlcXVl
c3QpOgorCisgICAgZGVmIGRvKHNlbGYsIHJlbHBhdGgpOgorICAgICAgICBzZWxmLl9iYWNraW5n
X3RyYW5zcG9ydC5ybWRpcihyZWxwYXRoKQorICAgICAgICByZXR1cm4gcmVxdWVzdC5TdWNjZXNz
ZnVsU21hcnRTZXJ2ZXJSZXNwb25zZSgoJ29rJywgKSkKKworCitjbGFzcyBTdGF0UmVxdWVzdChW
ZnNSZXF1ZXN0KToKKworICAgIGRlZiBkbyhzZWxmLCByZWxwYXRoKToKKyAgICAgICAgc3RhdCA9
IHNlbGYuX2JhY2tpbmdfdHJhbnNwb3J0LnN0YXQocmVscGF0aCkKKyAgICAgICAgcmV0dXJuIHJl
cXVlc3QuU3VjY2Vzc2Z1bFNtYXJ0U2VydmVyUmVzcG9uc2UoCisgICAgICAgICAgICAoJ3N0YXQn
LCBzdHIoc3RhdC5zdF9zaXplKSwgb2N0KHN0YXQuc3RfbW9kZSkpKQorCgo=

=== added file bzrlib/tests/blackbox/test_breakin.py // file-id:test_breakin.py
... -20070424043903-qyy6zm4pj3h4sbp3-1 // last-changed:mbp@sourcefrog.net-20070
... 424045131-gyjo7l8oa99ndyrv // encoding:base64
LS0tIC9kZXYvbnVsbAorKysgYnpybGliL3Rlc3RzL2JsYWNrYm94L3Rlc3RfYnJlYWtpbi5weQpA
QCAtMCwwICsxLDc0IEBACisjIENvcHlyaWdodCAoQykgMjAwNiwgMjAwNyBDYW5vbmljYWwgTHRk
CisjCisjIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0
ZSBpdCBhbmQvb3IgbW9kaWZ5CisjIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVy
YWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisjIHRoZSBGcmVlIFNvZnR3YXJlIEZv
dW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCisjIChhdCB5b3Vy
IG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisjCisjIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmli
dXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorIyBidXQgV0lUSE9VVCBB
TlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorIyBNRVJD
SEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhl
CisjIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisjCisjIFlv
dSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBM
aWNlbnNlCisjIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBG
cmVlIFNvZnR3YXJlCisjIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUg
MzMwLCBCb3N0b24sIE1BICAwMjExMS0xMzA3ICBVU0EKKworIiIiQmxhY2tib3ggdGVzdHMgZm9y
IGRlYnVnZ2VyIGJyZWFraW4iIiIKKworaW1wb3J0IG9zCitpbXBvcnQgc2lnbmFsCitpbXBvcnQg
c3VicHJvY2VzcworaW1wb3J0IHN5cworaW1wb3J0IHRpbWUKKworZnJvbSBienJsaWIudGVzdHMg
aW1wb3J0IFRlc3RDYXNlLCBUZXN0U2tpcHBlZAorCisKK2NsYXNzIFRlc3RCcmVha2luKFRlc3RD
YXNlKToKKyAgICAjIEZJWE1FOiBJZiBzb21ldGhpbmcgaXMgYnJva2VuLCB0aGVzZSB0ZXN0cyBt
YXkganVzdCBoYW5nIGluZGVmaW5pdGVseSBpbgorICAgICMgd2FpdCgpIHdhaXRpbmcgZm9yIHRo
ZSBjaGlsZCB0byBleGl0IHdoZW4gaXQncyBub3QgZ29pbmcgdG8uCisKKyAgICBkZWYgc2V0VXAo
c2VsZik6CisgICAgICAgIGlmIHN5cy5wbGF0Zm9ybSA9PSAnd2luMzInOgorICAgICAgICAgICAg
cmFpc2UgVGVzdFNraXBwZWQoJ2JyZWFraW4gc2lnbmFsIG5vdCB0ZXN0ZWQgb24gd2luMzInKQor
ICAgICAgICBzdXBlcihUZXN0QnJlYWtpbiwgc2VsZikuc2V0VXAoKQorCisgICAgIyBwb3J0IDAg
bWVhbnMgdG8gYWxsb2NhdGUgYW55IHBvcnQKKyAgICBfdGVzdF9wcm9jZXNzX2FyZ3MgPSBbJ3Nl
cnZlJywgJy0tcG9ydCcsICdsb2NhbGhvc3Q6MCddCisKKyAgICBkZWYgdGVzdF9icmVha2luKHNl
bGYpOgorICAgICAgICAjIEJyZWFrIGluIHRvIGEgZGVidWdnZXIgd2hpbGUgYnpyIGlzIHJ1bm5p
bmcKKyAgICAgICAgIyB3ZSBuZWVkIHRvIHRlc3QgYWdhaW5zdCBhIGNvbW1hbmQgdGhhdCB3aWxs
IHdhaXQgZm9yIAorICAgICAgICAjIGEgd2hpbGUgLS0gYnpyIHNlcnZlIHNob3VsZCBkbworICAg
ICAgICBwcm9jID0gc2VsZi5zdGFydF9ienJfc3VicHJvY2VzcyhzZWxmLl90ZXN0X3Byb2Nlc3Nf
YXJncywKKyAgICAgICAgICAgICAgICBlbnZfY2hhbmdlcz1kaWN0KEJaUl9TSUdRVUlUX1BEQj1O
b25lKSkKKyAgICAgICAgIyB3YWl0IGZvciBpdCB0byBnZXQgc3RhcnRlZCwgYW5kIHByaW50IHRo
ZSAnbGlzdGVuaW5nJyBsaW5lCisgICAgICAgIHByb2Muc3Rkb3V0LnJlYWRsaW5lKCkKKyAgICAg
ICAgIyBmaXJzdCBzaWdxdWl0IHBvcHMgaW50byBkZWJ1Z2dlcgorICAgICAgICBvcy5raWxsKHBy
b2MucGlkLCBzaWduYWwuU0lHUVVJVCkKKyAgICAgICAgcHJvYy5zdGRpbi53cml0ZSgicVxuIikK
KyAgICAgICAgdGltZS5zbGVlcCguNSkKKyAgICAgICAgZXJyID0gcHJvYy5zdGRlcnIucmVhZGxp
bmUoKQorICAgICAgICBzZWxmLmFzc2VydENvbnRhaW5zUmUoZXJyLCByJ2VudGVyaW5nIGRlYnVn
Z2VyJykKKworICAgIGRlZiB0ZXN0X2JyZWFraW5faGFyZGVyKHNlbGYpOgorICAgICAgICBwcm9j
ID0gc2VsZi5zdGFydF9ienJfc3VicHJvY2VzcyhzZWxmLl90ZXN0X3Byb2Nlc3NfYXJncywKKyAg
ICAgICAgICAgICAgICBlbnZfY2hhbmdlcz1kaWN0KEJaUl9TSUdRVUlUX1BEQj1Ob25lKSkKKyAg
ICAgICAgIyB3YWl0IGZvciBpdCB0byBnZXQgc3RhcnRlZCwgYW5kIHByaW50IHRoZSAnbGlzdGVu
aW5nJyBsaW5lCisgICAgICAgIHByb2Muc3Rkb3V0LnJlYWRsaW5lKCkKKyAgICAgICAgIyBhbm90
aGVyIGhpdCBnaXZlcyB0aGUgZGVmYXVsdCBiZWhhdmlvdXIgb2YgdGVybWluYXRpbmcgaXQKKyAg
ICAgICAgb3Mua2lsbChwcm9jLnBpZCwgc2lnbmFsLlNJR1FVSVQpCisgICAgICAgICMgd2FpdCBm
b3IgaXQgdG8gZ28gaW50byBwZGIKKyAgICAgICAgdGltZS5zbGVlcCguNSkKKyAgICAgICAgb3Mu
a2lsbChwcm9jLnBpZCwgc2lnbmFsLlNJR1FVSVQpCisgICAgICAgIHByb2Mud2FpdCgpCisKKyAg
ICBkZWYgdGVzdF9icmVha2luX2Rpc2FibGVkKHNlbGYpOgorICAgICAgICBwcm9jID0gc2VsZi5z
dGFydF9ienJfc3VicHJvY2VzcyhzZWxmLl90ZXN0X3Byb2Nlc3NfYXJncywKKyAgICAgICAgICAg
ICAgICBlbnZfY2hhbmdlcz1kaWN0KEJaUl9TSUdRVUlUX1BEQj0nMCcpKQorICAgICAgICAjIHdh
aXQgZm9yIGl0IHRvIGdldCBzdGFydGVkLCBhbmQgcHJpbnQgdGhlICdsaXN0ZW5pbmcnIGxpbmUK
KyAgICAgICAgcHJvYy5zdGRvdXQucmVhZGxpbmUoKQorICAgICAgICAjIGZpcnN0IGhpdCBzaG91
bGQganVzdCBraWxsIGl0CisgICAgICAgIG9zLmtpbGwocHJvYy5waWQsIHNpZ25hbC5TSUdRVUlU
KQorICAgICAgICBwcm9jLndhaXQoKQoK

=== added file bzrlib/tests/blackbox/test_cat_revision.py // file-id:test_cat_r
... evision.py-20070410204634-fq8mnld5l5aza9e2-1 // last-changed:aaron.bentley@
... utoronto.ca-20070411041259-pfl82a4kg9q5j3n2 // encoding:base64
LS0tIC9kZXYvbnVsbAorKysgYnpybGliL3Rlc3RzL2JsYWNrYm94L3Rlc3RfY2F0X3JldmlzaW9u
LnB5CkBAIC0wLDAgKzEsNTUgQEAKKyMgQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA3IENh
bm9uaWNhbCBMdGQKKyMKKyMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4g
cmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRo
ZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKyMgdGhlIEZyZWUg
U29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IK
KyMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyMKKyMgVGhpcyBwcm9ncmFt
IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisjIGJ1
dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5
IG9mCisjIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RS4gIFNlZSB0aGUKKyMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWls
cy4KKyMKKyMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVy
YWwgUHVibGljIExpY2Vuc2UKKyMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3Jp
dGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyMgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBs
YWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgIDAyMTExLTEzMDcgIFVTQQorCitmcm9tIGJ6cmxp
Yi50ZXN0cyBpbXBvcnQgYmxhY2tib3gKKworCitjbGFzcyBUZXN0Q2F0UmV2aXNpb24oYmxhY2ti
b3guRXh0ZXJuYWxCYXNlKToKKworICAgIGRlZiB0ZXN0X2NhdF91bmljb2RlX3JldmlzaW9uKHNl
bGYpOgorICAgICAgICB0cmVlID0gc2VsZi5tYWtlX2JyYW5jaF9hbmRfdHJlZSgnLicpCisgICAg
ICAgIHRyZWUuY29tbWl0KCdUaGlzIHJldmlzaW9uJywgcmV2X2lkPSdhYmNkJykKKyAgICAgICAg
b3V0cHV0LCBlcnJvcnMgPSBzZWxmLnJ1bl9ienIoJ2NhdC1yZXZpc2lvbicsIHUnYWJjZCcpCisg
ICAgICAgIHNlbGYuYXNzZXJ0Q29udGFpbnNSZShvdXRwdXQsICdUaGlzIHJldmlzaW9uJykKKyAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnJywgZXJyb3JzKQorCisgICAgZGVmIHRlc3RfY2F0X3Jl
dmlzaW9uKHNlbGYpOgorICAgICAgICAiIiJUZXN0IGJ6ciBjYXQtcmV2aXNpb24uCisgICAgICAg
ICIiIgorICAgICAgICB3dCA9IHNlbGYubWFrZV9icmFuY2hfYW5kX3RyZWUoJy4nKQorICAgICAg
ICByID0gd3QuYnJhbmNoLnJlcG9zaXRvcnkKKworICAgICAgICB3dC5jb21taXQoJ0NvbW1pdCBv
bmUnLCByZXZfaWQ9J2FAci0wLTEnKQorICAgICAgICB3dC5jb21taXQoJ0NvbW1pdCB0d28nLCBy
ZXZfaWQ9J2FAci0wLTInKQorICAgICAgICB3dC5jb21taXQoJ0NvbW1pdCB0aHJlZScsIHJldl9p
ZD0nYUByLTAtMycpCisKKyAgICAgICAgcmV2cyA9IHsKKyAgICAgICAgICAgIDE6ci5nZXRfcmV2
aXNpb25feG1sKCdhQHItMC0xJyksCisgICAgICAgICAgICAyOnIuZ2V0X3JldmlzaW9uX3htbCgn
YUByLTAtMicpLAorICAgICAgICAgICAgMzpyLmdldF9yZXZpc2lvbl94bWwoJ2FAci0wLTMnKSwK
KyAgICAgICAgfQorCisgICAgICAgIHNlbGYuY2hlY2tfb3V0cHV0KHJldnNbMV0sICdjYXQtcmV2
aXNpb24nLCAnYUByLTAtMScpCisgICAgICAgIHNlbGYuY2hlY2tfb3V0cHV0KHJldnNbMl0sICdj
YXQtcmV2aXNpb24nLCAnYUByLTAtMicpCisgICAgICAgIHNlbGYuY2hlY2tfb3V0cHV0KHJldnNb
M10sICdjYXQtcmV2aXNpb24nLCAnYUByLTAtMycpCisKKyAgICAgICAgc2VsZi5jaGVja19vdXRw
dXQocmV2c1sxXSwgJ2NhdC1yZXZpc2lvbicsICctcicsICcxJykKKyAgICAgICAgc2VsZi5jaGVj
a19vdXRwdXQocmV2c1syXSwgJ2NhdC1yZXZpc2lvbicsICctcicsICcyJykKKyAgICAgICAgc2Vs
Zi5jaGVja19vdXRwdXQocmV2c1szXSwgJ2NhdC1yZXZpc2lvbicsICctcicsICczJykKKworICAg
ICAgICBzZWxmLmNoZWNrX291dHB1dChyZXZzWzFdLCAnY2F0LXJldmlzaW9uJywgJy1yJywgJ3Jl
dmlkOmFAci0wLTEnKQorICAgICAgICBzZWxmLmNoZWNrX291dHB1dChyZXZzWzJdLCAnY2F0LXJl
dmlzaW9uJywgJy1yJywgJ3JldmlkOmFAci0wLTInKQorICAgICAgICBzZWxmLmNoZWNrX291dHB1
dChyZXZzWzNdLCAnY2F0LXJldmlzaW9uJywgJy1yJywgJ3JldmlkOmFAci0wLTMnKQoK

=== added file bzrlib/tests/branch_implementations/test_get_revision_id_to_revn
... o_map.py // file-id:test_get_revision_id-20070417211641-6kcoj1c704gqqopn-1 
... // last-changed:john@arbash-meinel.com-20070424194309-nt3sxw7x4sqwnykh // e
... ncoding:base64
LS0tIC9kZXYvbnVsbAorKysgYnpybGliL3Rlc3RzL2JyYW5jaF9pbXBsZW1lbnRhdGlvbnMvdGVz
dF9nZXRfcmV2aXNpb25faWRfdG9fcmV2bm9fbWFwLnB5CkBAIC0wLDAgKzEsMTE4IEBACisjIENv
cHlyaWdodCAoQykgMjAwNyBDYW5vbmljYWwgTHRkCisjCisjIFRoaXMgcHJvZ3JhbSBpcyBmcmVl
IHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisjIGl0IHVu
ZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlz
aGVkIGJ5CisjIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIg
b2YgdGhlIExpY2Vuc2UsIG9yCisjIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24u
CisjCisjIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdp
bGwgYmUgdXNlZnVsLAorIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0
aGUgaW1wbGllZCB3YXJyYW50eSBvZgorIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisjIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNl
bnNlIGZvciBtb3JlIGRldGFpbHMuCisjCisjIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNv
cHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisjIGFsb25nIHdpdGggdGhpcyBw
cm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisjIEZvdW5kYXRpb24s
IEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BICAwMjExMS0xMzA3
ICBVU0EKKworIiIiVGVzdHMgZm9yIEJyYW5jaC5nZXRfcmV2aXNpb25faWRfdG9fcmV2bm9fbWFw
KCkiIiIKKworZnJvbSBienJsaWIgaW1wb3J0ICgKKyAgICBlcnJvcnMsCisgICAgcmV2aXNpb24s
CisgICAgKQorCitmcm9tIGJ6cmxpYi50ZXN0cy5icmFuY2hfaW1wbGVtZW50YXRpb25zIGltcG9y
dCBUZXN0Q2FzZVdpdGhCcmFuY2gKKworCitjbGFzcyBUZXN0UmV2aXNpb25JZFRvRG90dGVkUmV2
bm8oVGVzdENhc2VXaXRoQnJhbmNoKToKKworICAgIGRlZiB0ZXN0X3NpbXBsZV9yZXZubyhzZWxm
KToKKyAgICAgICAgdHJlZSA9IHNlbGYuY3JlYXRlX3RyZWVfd2l0aF9tZXJnZSgpCisgICAgICAg
IHRoZV9icmFuY2ggPSB0cmVlLmJyYW5jaAorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoeydy
ZXYtMSc6KDEsKSwgJ3Jldi0yJzooMiwpLCAncmV2LTMnOigzLCksCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICdyZXYtMS4xLjEnOigxLDEsMSkKKyAgICAgICAgICAgICAgICAgICAgICAgICB9
LCB0cmVlLmJyYW5jaC5nZXRfcmV2aXNpb25faWRfdG9fcmV2bm9fbWFwKCkpCisKKworY2xhc3Mg
VGVzdENhY2hpbmcoVGVzdENhc2VXaXRoQnJhbmNoKToKKyAgICAiIiJUZXN0cyBmb3IgdGhlIGNh
Y2hpbmcgb2YgYnJhbmNoZXMnIGRvdHRlZCByZXZubyBnZW5lcmF0aW9uLgorCisgICAgV2hlbiBs
b2NrZWQsIGJyYW5jaGVzIHNob3VsZCBhdm9pZCByZWdlbmVyYXRpbmcgcmV2aXNpb25faWQ9PmRv
dHRlZCByZXZubworICAgIG1hcHBpbmcuCisKKyAgICBXaGVuIG5vdCBsb2NrZWQsIG9idmlvdXNs
eSB0aGUgcmV2aXNpb25faWQgPT4gZG90dGVkIHJldm5vIHdpbGwgbmVlZCB0byBiZQorICAgIHJl
Z2VuZXJhdGVkIG9yIHJlcmVhZCBlYWNoIHRpbWUuCisKKyAgICBXZSB0ZXN0IGlmIHJldmlzaW9u
X2hpc3RvcnkgaXMgdXNpbmcgdGhlIGNhY2hlIGJ5IGluc3RydW1lbnRpbmcgdGhlIGJyYW5jaCdz
CisgICAgX2dlbl9yZXZub19tYXAgbWV0aG9kLCB3aGljaCBpcyBjYWxsZWQgYnkgZ2V0X3Jldmlz
aW9uX2lkX3RvX3Jldm5vX21hcC4KKyAgICAiIiIKKworICAgIGRlZiBnZXRfaW5zdHJ1bWVudGVk
X2JyYW5jaChzZWxmKToKKyAgICAgICAgIiIiR2V0IGEgYnJhbmNoIGFuZCBtb25rZXkgcGF0Y2gg
aXQgdG8gbG9nIGNhbGxzIHRvIF9nZW5fcmV2bm9fbWFwLgorCisgICAgICAgIDpyZXR1cm5zOiBh
IHR1cGxlIG9mICh0aGUgYnJhbmNoLCBsaXN0IHRoYXQgY2FsbHMgd2lsbCBiZSBsb2dnZWQgdG8p
CisgICAgICAgICIiIgorICAgICAgICB0cmVlID0gc2VsZi5jcmVhdGVfdHJlZV93aXRoX21lcmdl
KCkKKyAgICAgICAgY2FsbHMgPSBbXQorICAgICAgICByZWFsX2Z1bmMgPSB0cmVlLmJyYW5jaC5f
Z2VuX3Jldm5vX21hcAorICAgICAgICBkZWYgd3JhcHBlcigpOgorICAgICAgICAgICAgY2FsbHMu
YXBwZW5kKCdfZ2VuX3Jldm5vX21hcCcpCisgICAgICAgICAgICByZXR1cm4gcmVhbF9mdW5jKCkK
KyAgICAgICAgdHJlZS5icmFuY2guX2dlbl9yZXZub19tYXAgPSB3cmFwcGVyCisgICAgICAgIHJl
dHVybiB0cmVlLmJyYW5jaCwgY2FsbHMKKworICAgIGRlZiB0ZXN0X3VubG9ja2VkKHNlbGYpOgor
ICAgICAgICAiIiJSZXBlYXRlZCBjYWxscyB3aWxsIGNhbGwgX2dlbl9yZXZub19tYXAgZWFjaCB0
aW1lLiIiIgorICAgICAgICBicmFuY2gsIGNhbGxzID0gc2VsZi5nZXRfaW5zdHJ1bWVudGVkX2Jy
YW5jaCgpCisgICAgICAgICMgUmVwZWF0ZWRseSBjYWxsIHJldmlzaW9uX2hpc3RvcnkuCisgICAg
ICAgIGJyYW5jaC5nZXRfcmV2aXNpb25faWRfdG9fcmV2bm9fbWFwKCkKKyAgICAgICAgYnJhbmNo
LmdldF9yZXZpc2lvbl9pZF90b19yZXZub19tYXAoKQorICAgICAgICBicmFuY2guZ2V0X3Jldmlz
aW9uX2lkX3RvX3Jldm5vX21hcCgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoWydfZ2VuX3Jl
dm5vX21hcCddKjMsIGNhbGxzKQorCisgICAgZGVmIHRlc3RfbG9ja2VkKHNlbGYpOgorICAgICAg
ICAiIiJSZXBlYXRlZCBjYWxscyB3aWxsIG9ubHkgY2FsbCBfZ2VuX3Jldm5vX21hcCBvbmNlLgor
ICAgICAgICAiIiIKKyAgICAgICAgYnJhbmNoLCBjYWxscyA9IHNlbGYuZ2V0X2luc3RydW1lbnRl
ZF9icmFuY2goKQorICAgICAgICAjIExvY2sgdGhlIGJyYW5jaCwgdGhlbiByZXBlYXRlZGx5IGNh
bGwgcmV2aXNpb25faGlzdG9yeS4KKyAgICAgICAgYnJhbmNoLmxvY2tfcmVhZCgpCisgICAgICAg
IHRyeToKKyAgICAgICAgICAgIGJyYW5jaC5nZXRfcmV2aXNpb25faWRfdG9fcmV2bm9fbWFwKCkK
KyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoWydfZ2VuX3Jldm5vX21hcCddLCBjYWxscykK
KyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgIGJyYW5jaC51bmxvY2soKQorCisgICAgZGVm
IHRlc3Rfc2V0X3JldmlzaW9uX2hpc3Rvcnlfd2hlbl9sb2NrZWQoc2VsZik6CisgICAgICAgICIi
IkNhbGxpbmcgc2V0X3JldmlzaW9uX2hpc3Rvcnkgc2hvdWxkIHJlc2V0IHRoZSBjYWNoZS4iIiIK
KyAgICAgICAgYnJhbmNoLCBjYWxscyA9IHNlbGYuZ2V0X2luc3RydW1lbnRlZF9icmFuY2goKQor
ICAgICAgICBicmFuY2gubG9ja193cml0ZSgpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwoeydyZXYtMSc6KDEsKSwgJ3Jldi0yJzooMiwpLCAncmV2LTMnOigzLCks
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAncmV2LTEuMS4xJzooMSwxLDEpCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIH0sIGJyYW5jaC5nZXRfcmV2aXNpb25faWRfdG9fcmV2
bm9fbWFwKCkpCisgICAgICAgICAgICBicmFuY2guc2V0X3JldmlzaW9uX2hpc3RvcnkoWydyZXYt
MScsICdyZXYtMiddKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh7J3Jldi0xJzooMSwp
LCAncmV2LTInOigyLCl9LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmFuY2guZ2V0
X3JldmlzaW9uX2lkX3RvX3Jldm5vX21hcCgpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bCh7J3Jldi0xJzooMSwpLCAncmV2LTInOigyLCl9LAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBicmFuY2guZ2V0X3JldmlzaW9uX2lkX3RvX3Jldm5vX21hcCgpKQorICAgICAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbChbJ19nZW5fcmV2bm9fbWFwJ10qMiwgY2FsbHMpCisgICAgICAgIGZp
bmFsbHk6CisgICAgICAgICAgICBicmFuY2gudW5sb2NrKCkKKworICAgIGRlZiB0ZXN0X3NldF9s
YXN0X3JldmlzaW9uX2luZm9fd2hlbl9sb2NrZWQoc2VsZik6CisgICAgICAgICIiIkNhbGxpbmcg
c2V0X2xhc3RfcmV2aXNpb25faW5mbyBzaG91bGQgcmVzZXQgdGhlIGNhY2hlLiIiIgorICAgICAg
ICBicmFuY2gsIGNhbGxzID0gc2VsZi5nZXRfaW5zdHJ1bWVudGVkX2JyYW5jaCgpCisgICAgICAg
IGJyYW5jaC5sb2NrX3dyaXRlKCkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbCh7J3Jldi0xJzooMSwpLCAncmV2LTInOigyLCksICdyZXYtMyc6KDMsKSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICdyZXYtMS4xLjEnOigxLDEsMSkKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgfSwgYnJhbmNoLmdldF9yZXZpc2lvbl9pZF90b19yZXZub19tYXAo
KSkKKyAgICAgICAgICAgIGJyYW5jaC5zZXRfbGFzdF9yZXZpc2lvbl9pbmZvKDIsICdyZXYtMicp
CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHsncmV2LTEnOigxLCksICdyZXYtMic6KDIs
KX0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyYW5jaC5nZXRfcmV2aXNpb25faWRf
dG9fcmV2bm9fbWFwKCkpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHsncmV2LTEnOigx
LCksICdyZXYtMic6KDIsKX0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyYW5jaC5n
ZXRfcmV2aXNpb25faWRfdG9fcmV2bm9fbWFwKCkpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKFsnX2dlbl9yZXZub19tYXAnXSoyLCBjYWxscykKKyAgICAgICAgZmluYWxseToKKyAgICAg
ICAgICAgIGJyYW5jaC51bmxvY2soKQoK

=== added file bzrlib/tests/branch_implementations/test_revision_id_to_revno.py
...  // file-id:test_revision_id_to_-20070417200738-lo776wkqikhe5goo-1 // last-
... changed:john@arbash-meinel.com-20070417202335-0cc0thlj5sy28m9m // encoding:
... base64
LS0tIC9kZXYvbnVsbAorKysgYnpybGliL3Rlc3RzL2JyYW5jaF9pbXBsZW1lbnRhdGlvbnMvdGVz
dF9yZXZpc2lvbl9pZF90b19yZXZuby5weQpAQCAtMCwwICsxLDQxIEBACisjIENvcHlyaWdodCAo
QykgMjAwNyBDYW5vbmljYWwgTHRkCisjCisjIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJl
OyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisjIGl0IHVuZGVyIHRoZSB0
ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Cisj
IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExp
Y2Vuc2UsIG9yCisjIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisjCisjIFRo
aXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNl
ZnVsLAorIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGll
ZCB3YXJyYW50eSBvZgorIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSIFBVUlBPU0UuICBTZWUgdGhlCisjIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBt
b3JlIGRldGFpbHMuCisjCisjIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhl
IEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisjIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBp
ZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisjIEZvdW5kYXRpb24sIEluYy4sIDU5
IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BICAwMjExMS0xMzA3ICBVU0EKKwor
IiIiVGVzdHMgZm9yIEJyYW5jaC5yZXZpc2lvbl9pZF90b19yZXZubygpIiIiCisKK2Zyb20gYnpy
bGliIGltcG9ydCBlcnJvcnMKKworZnJvbSBienJsaWIudGVzdHMuYnJhbmNoX2ltcGxlbWVudGF0
aW9ucyBpbXBvcnQgVGVzdENhc2VXaXRoQnJhbmNoCisKKworY2xhc3MgVGVzdFJldmlzaW9uSWRU
b1Jldm5vKFRlc3RDYXNlV2l0aEJyYW5jaCk6CisKKyAgICBkZWYgdGVzdF9zaW1wbGVfcmV2bm8o
c2VsZik6CisgICAgICAgIHRyZWUgPSBzZWxmLmNyZWF0ZV90cmVlX3dpdGhfbWVyZ2UoKQorICAg
ICAgICB0aGVfYnJhbmNoID0gdHJlZS5icmFuY2gKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KDAsIHRoZV9icmFuY2gucmV2aXNpb25faWRfdG9fcmV2bm8oTm9uZSkpCisgICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwoMSwgdGhlX2JyYW5jaC5yZXZpc2lvbl9pZF90b19yZXZubygncmV2LTEnKSkK
KyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgyLCB0aGVfYnJhbmNoLnJldmlzaW9uX2lkX3RvX3Jl
dm5vKCdyZXYtMicpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDMsIHRoZV9icmFuY2gucmV2
aXNpb25faWRfdG9fcmV2bm8oJ3Jldi0zJykpCisKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMo
ZXJyb3JzLk5vU3VjaFJldmlzaW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVfYnJh
bmNoLnJldmlzaW9uX2lkX3RvX3Jldm5vLCAncmV2LW5vbmUnKQorICAgICAgICAjIHJldmlzaW9u
X2lkX3RvX3Jldm5vIGlzIGRlZmluZWQgYXMgcmV0dXJuaW5nIG9ubHkgaW50ZWdlciByZXZpc2lv
bgorICAgICAgICAjIG51bWJlcnMsIHNvIG5vbi1tYWlubGluZSByZXZpc2lvbnMgZ2V0IE5vU3Vj
aFJldmlzaW9uIHJhaXNlZAorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhlcnJvcnMuTm9TdWNo
UmV2aXNpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZV9icmFuY2gucmV2aXNpb25f
aWRfdG9fcmV2bm8sICdyZXYtMS4xLjEnKQorCgo=

=== added file bzrlib/tests/test_bugtracker.py // file-id:test_bugtracker.py-20
... 070410073305-vu1vu1qosjurg8kb-2 // last-changed:jml@canonical.com-200704230
... 55929-chgdr92da63lhcri // encoding:base64
LS0tIC9kZXYvbnVsbAorKysgYnpybGliL3Rlc3RzL3Rlc3RfYnVndHJhY2tlci5weQpAQCAtMCww
ICsxLDE4NSBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMDcgQ2Fub25pY2FsIEx0ZAorIworIyBUaGlz
IHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29y
IG1vZGlmeQorIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBM
aWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBl
aXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgorIyAoYXQgeW91ciBvcHRpb24pIGFu
eSBsYXRlciB2ZXJzaW9uLgorIworIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhl
IGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZ
OyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyMgTUVSQ0hBTlRBQklMSVRZ
IG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorIyBHTlUgR2Vu
ZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorIworIyBZb3Ugc2hvdWxkIGhh
dmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorIyBh
bG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2Fy
ZQorIyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9u
LCBNQSAgMDIxMTEtMTMwNyAgVVNBCisKKworZnJvbSBienJsaWIgaW1wb3J0IGJ1Z3RyYWNrZXIs
IGVycm9ycywgdXJsdXRpbHMKK2Zyb20gYnpybGliLnRlc3RzIGltcG9ydCBUZXN0Q2FzZVdpdGhN
ZW1vcnlUcmFuc3BvcnQKKworCitjbGFzcyBUZXN0R2V0QnVnVVJMKFRlc3RDYXNlV2l0aE1lbW9y
eVRyYW5zcG9ydCk6CisgICAgIiIiVGVzdHMgZm9yIGJ1Z3RyYWNrZXIuZ2V0X2J1Z191cmwiIiIK
KworICAgIGNsYXNzIFRyYW5zaWVudFRyYWNrZXIob2JqZWN0KToKKyAgICAgICAgIiIiQW4gdHJh
bnNpZW50IHRyYWNrZXIgdXNlZCBmb3IgdGVzdGluZy4iIiIKKworICAgICAgICBAY2xhc3NtZXRo
b2QKKyAgICAgICAgZGVmIGdldChrbGFzcywgYWJicmV2aWF0aW9uLCBicmFuY2gpOgorICAgICAg
ICAgICAga2xhc3MubG9nLmFwcGVuZCgoJ2dldCcsIGFiYnJldmlhdGlvbiwgYnJhbmNoKSkKKyAg
ICAgICAgICAgIGlmIGFiYnJldmlhdGlvbiAhPSAndHJhbnNpZW50JzoKKyAgICAgICAgICAgICAg
ICByZXR1cm4gTm9uZQorICAgICAgICAgICAgcmV0dXJuIGtsYXNzKCkKKworICAgICAgICBkZWYg
Z2V0X2J1Z191cmwoc2VsZiwgYnVnX2lkKToKKyAgICAgICAgICAgIHNlbGYubG9nLmFwcGVuZCgo
J2dldF9idWdfdXJsJywgYnVnX2lkKSkKKyAgICAgICAgICAgIHJldHVybiAiaHR0cDovL2J1Z3Mu
Y29tLyVzIiAlIGJ1Z19pZAorCisgICAgZGVmIHNldFVwKHNlbGYpOgorICAgICAgICBUZXN0Q2Fz
ZVdpdGhNZW1vcnlUcmFuc3BvcnQuc2V0VXAoc2VsZikKKyAgICAgICAgc2VsZi50cmFja2VyX3R5
cGUgPSBUZXN0R2V0QnVnVVJMLlRyYW5zaWVudFRyYWNrZXIKKyAgICAgICAgc2VsZi50cmFja2Vy
X3R5cGUubG9nID0gW10KKyAgICAgICAgYnVndHJhY2tlci50cmFja2VyX3JlZ2lzdHJ5LnJlZ2lz
dGVyKCd0cmFuc2llbnQnLCBzZWxmLnRyYWNrZXJfdHlwZSkKKyAgICAgICAgc2VsZi5hZGRDbGVh
bnVwKGxhbWJkYToKKyAgICAgICAgICAgICAgICAgICAgICAgIGJ1Z3RyYWNrZXIudHJhY2tlcl9y
ZWdpc3RyeS5yZW1vdmUoJ3RyYW5zaWVudCcpKQorCisgICAgZGVmIHRlc3RfZ2V0X2J1Z191cmxf
Zm9yX3RyYW5zaWVudF90cmFja2VyKHNlbGYpOgorICAgICAgICBicmFuY2ggPSBzZWxmLm1ha2Vf
YnJhbmNoKCdzb21lX2JyYW5jaCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ2h0dHA6Ly9i
dWdzLmNvbS8xMjM0JywKKyAgICAgICAgICAgICAgICAgICAgICAgICBidWd0cmFja2VyLmdldF9i
dWdfdXJsKCd0cmFuc2llbnQnLCBicmFuY2gsICcxMjM0JykpCisgICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwoCisgICAgICAgICAgICBbKCdnZXQnLCAndHJhbnNpZW50JywgYnJhbmNoKSwgKCdnZXRf
YnVnX3VybCcsICcxMjM0JyldLAorICAgICAgICAgICAgc2VsZi50cmFja2VyX3R5cGUubG9nKQor
CisgICAgZGVmIHRlc3RfdW5yZWNvZ25pemVkX2FiYnJldmlhdGlvbl9yYWlzZXNfZXJyb3Ioc2Vs
Zik6CisgICAgICAgICIiIklmIHRoZSBhYmJyZXZpYXRpb24gaXMgdW5yZWNvZ25pemVkLCB0aGVu
IHJhaXNlIGFuIGVycm9yLiIiIgorICAgICAgICBicmFuY2ggPSBzZWxmLm1ha2VfYnJhbmNoKCdz
b21lX2JyYW5jaCcpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKGVycm9ycy5Vbmtub3duQnVn
VHJhY2tlckFiYnJldmlhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgYnVndHJhY2tl
ci5nZXRfYnVnX3VybCwgJ3h4eCcsIGJyYW5jaCwgJzEyMzQnKQorICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKFsoJ2dldCcsICd4eHgnLCBicmFuY2gpXSwgc2VsZi50cmFja2VyX3R5cGUubG9nKQor
CisKK2NsYXNzIFRlc3RCdWlsdGluVHJhY2tlcnMoVGVzdENhc2VXaXRoTWVtb3J5VHJhbnNwb3J0
KToKKyAgICAiIiJUZXN0IHRoYXQgdGhlIGJ1aWx0aW4gdHJhY2tlcnMgYXJlIHJlZ2lzdGVyZWQg
YW5kIHJldHVybiBzYW5lIFVSTHMuIiIiCisKKyAgICBkZWYgdGVzdF9sYXVuY2hwYWRfcmVnaXN0
ZXJlZChzZWxmKToKKyAgICAgICAgIiIiVGhlIExhdW5jaHBhZCBidWcgdHJhY2tlciBzaG91bGQg
YmUgcmVnaXN0ZXJlZCBieSBkZWZhdWx0IGFuZAorICAgICAgICBnZW5lcmF0ZSBMYXVuY2hwYWQg
YnVnIHBhZ2UgVVJMcy4KKyAgICAgICAgIiIiCisgICAgICAgIGJyYW5jaCA9IHNlbGYubWFrZV9i
cmFuY2goJ3NvbWVfYnJhbmNoJykKKyAgICAgICAgdHJhY2tlciA9IGJ1Z3RyYWNrZXIudHJhY2tl
cl9yZWdpc3RyeS5nZXRfdHJhY2tlcignbHAnLCBicmFuY2gpCisgICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwoJ2h0dHBzOi8vbGF1bmNocGFkLm5ldC9idWdzLzEyMzQnLAorICAgICAgICAgICAgICAg
ICAgICAgICAgIHRyYWNrZXIuZ2V0X2J1Z191cmwoJzEyMzQnKSkKKworICAgIGRlZiB0ZXN0X2Rl
Ymlhbl9yZWdpc3RlcmVkKHNlbGYpOgorICAgICAgICAiIiJUaGUgRGViaWFuIGJ1ZyB0cmFja2Vy
IHNob3VsZCBiZSByZWdpc3RlcmVkIGJ5IGRlZmF1bHQgYW5kIGdlbmVyYXRlCisgICAgICAgIGJ1
Z3MuZGViaWFuLm9yZyBidWcgcGFnZSBVUkxzLgorICAgICAgICAiIiIKKyAgICAgICAgYnJhbmNo
ID0gc2VsZi5tYWtlX2JyYW5jaCgnc29tZV9icmFuY2gnKQorICAgICAgICB0cmFja2VyID0gYnVn
dHJhY2tlci50cmFja2VyX3JlZ2lzdHJ5LmdldF90cmFja2VyKCdkZWInLCBicmFuY2gpCisgICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ2h0dHA6Ly9idWdzLmRlYmlhbi5vcmcvMTIzNCcsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgdHJhY2tlci5nZXRfYnVnX3VybCgnMTIzNCcpKQorCisgICAg
ZGVmIHRlc3RfdHJhY19yZWdpc3RlcmVkKHNlbGYpOgorICAgICAgICAiIiJUaGUgVHJhYyBidWcg
dHJhY2tlciBzaG91bGQgYmUgcmVnaXN0ZXJlZCBieSBkZWZhdWx0IGFuZCBnZW5lcmF0ZQorICAg
ICAgICBUcmFjIGJ1ZyBwYWdlIFVSTHMgd2hlbiB0aGUgYXBwcm9wcmlhdGUgY29uZmlndXJhdGlv
biBpcyBwcmVzZW50LgorICAgICAgICAiIiIKKyAgICAgICAgYnJhbmNoID0gc2VsZi5tYWtlX2Jy
YW5jaCgnc29tZV9icmFuY2gnKQorICAgICAgICBjb25maWcgPSBicmFuY2guZ2V0X2NvbmZpZygp
CisgICAgICAgIGNvbmZpZy5zZXRfdXNlcl9vcHRpb24oJ3RyYWNfZm9vX3VybCcsICdodHRwOi8v
YnVncy5jb20vdHJhYycpCisgICAgICAgIHRyYWNrZXIgPSBidWd0cmFja2VyLnRyYWNrZXJfcmVn
aXN0cnkuZ2V0X3RyYWNrZXIoJ2ZvbycsIGJyYW5jaCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bCgnaHR0cDovL2J1Z3MuY29tL3RyYWMvdGlja2V0LzEyMzQnLAorICAgICAgICAgICAgICAgICAg
ICAgICAgIHRyYWNrZXIuZ2V0X2J1Z191cmwoJzEyMzQnKSkKKworICAgIGRlZiB0ZXN0X2J1Z3pp
bGxhX3JlZ2lzdGVyZWQoc2VsZik6CisgICAgICAgICIiIlRoZSBCdWd6aWxsYSBidWcgdHJhY2tl
ciBzaG91bGQgYmUgcmVnaXN0ZXJlZCBieSBkZWZhdWx0IGFuZAorICAgICAgICBnZW5lcmF0ZSBC
dWd6aWxsYSBidWcgcGFnZSBVUkxzIHdoZW4gdGhlIGFwcHJvcHJpYXRlIGNvbmZpZ3VyYXRpb24g
aXMKKyAgICAgICAgcHJlc2VudC4KKyAgICAgICAgIiIiCisgICAgICAgIGJyYW5jaCA9IHNlbGYu
bWFrZV9icmFuY2goJ3NvbWVfYnJhbmNoJykKKyAgICAgICAgY29uZmlnID0gYnJhbmNoLmdldF9j
b25maWcoKQorICAgICAgICBjb25maWcuc2V0X3VzZXJfb3B0aW9uKCdidWd6aWxsYV9mb29fdXJs
JywgJ2h0dHA6Ly9idWdzLmNvbScpCisgICAgICAgIHRyYWNrZXIgPSBidWd0cmFja2VyLnRyYWNr
ZXJfcmVnaXN0cnkuZ2V0X3RyYWNrZXIoJ2ZvbycsIGJyYW5jaCkKKyAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbCgnaHR0cDovL2J1Z3MuY29tL3Nob3dfYnVnLmNnaT9pZD0xMjM0JywKKyAgICAgICAg
ICAgICAgICAgICAgICAgICB0cmFja2VyLmdldF9idWdfdXJsKCcxMjM0JykpCisKKworY2xhc3Mg
VGVzdFVuaXF1ZUludGVnZXJCdWdUcmFja2VyKFRlc3RDYXNlV2l0aE1lbW9yeVRyYW5zcG9ydCk6
CisKKyAgICBkZWYgdGVzdF9qb2luc19pZF90b19iYXNlX3VybChzZWxmKToKKyAgICAgICAgIiIi
VGhlIFVSTCBvZiBhIGJ1ZyBpcyB0aGUgYmFzZSBVUkwgam9pbmVkIHRvIHRoZSBpZGVudGlmaWVy
LiIiIgorICAgICAgICB0cmFja2VyID0gYnVndHJhY2tlci5VbmlxdWVJbnRlZ2VyQnVnVHJhY2tl
cigneHh4JywgJ2h0dHA6Ly9idWdzLmNvbScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ2h0
dHA6Ly9idWdzLmNvbS8xMjM0JywgdHJhY2tlci5nZXRfYnVnX3VybCgnMTIzNCcpKQorCisgICAg
ZGVmIHRlc3RfcmV0dXJuc190cmFja2VyX2lmX2FiYnJldmlhdGlvbl9tYXRjaGVzKHNlbGYpOgor
ICAgICAgICAiIiJUaGUgZ2V0KCkgbWV0aG9kIHNob3VsZCByZXR1cm4gYW4gaW5zdGFuY2Ugb2Yg
dGhlIHRyYWNrZXIgaWYgdGhlCisgICAgICAgIGdpdmVuIGFiYnJldmlhdGlvbiBtYXRjaGVzIHRo
ZSB0cmFja2VyJ3MgYWJicmV2aWF0ZWQgbmFtZS4KKyAgICAgICAgIiIiCisgICAgICAgIHRyYWNr
ZXIgPSBidWd0cmFja2VyLlVuaXF1ZUludGVnZXJCdWdUcmFja2VyKCd4eHgnLCAnaHR0cDovL2J1
Z3MuY29tJykKKyAgICAgICAgYnJhbmNoID0gc2VsZi5tYWtlX2JyYW5jaCgnc29tZV9icmFuY2gn
KQorICAgICAgICBzZWxmLmFzc2VydElzKHRyYWNrZXIsIHRyYWNrZXIuZ2V0KCd4eHgnLCBicmFu
Y2gpKQorCisgICAgZGVmIHRlc3RfcmV0dXJuc19ub25lX2lmX2FiYnJldmlhdGlvbl9kb2VzbnRf
bWF0Y2goc2VsZik6CisgICAgICAgICIiIlRoZSBnZXQoKSBtZXRob2Qgc2hvdWxkIHJldHVybiBO
b25lIGlmIHRoZSBnaXZlbiBhYmJyZXZpYXRlZCBuYW1lCisgICAgICAgIGRvZXNuJ3QgbWF0Y2gg
dGhlIHRyYWNrZXIncyBhYmJyZXZpYXRpb24uCisgICAgICAgICIiIgorICAgICAgICB0cmFja2Vy
ID0gYnVndHJhY2tlci5VbmlxdWVJbnRlZ2VyQnVnVHJhY2tlcigneHh4JywgJ2h0dHA6Ly9idWdz
LmNvbScpCisgICAgICAgIGJyYW5jaCA9IHNlbGYubWFrZV9icmFuY2goJ3NvbWVfYnJhbmNoJykK
KyAgICAgICAgc2VsZi5hc3NlcnRJcyhOb25lLCB0cmFja2VyLmdldCgneXl5JywgYnJhbmNoKSkK
KworICAgIGRlZiB0ZXN0X2RvZXNudF9jb25zdWx0X2JyYW5jaChzZWxmKToKKyAgICAgICAgIiIi
QSBVbmlxdWVJbnRlZ2VyQnVnVHJhY2tlciBzaG91bGRuJ3QgY29uc3VsdCB0aGUgYnJhbmNoIGZv
ciB0cmFja2VyCisgICAgICAgIGluZm9ybWF0aW9uLgorICAgICAgICAiIiIKKyAgICAgICAgdHJh
Y2tlciA9IGJ1Z3RyYWNrZXIuVW5pcXVlSW50ZWdlckJ1Z1RyYWNrZXIoJ3h4eCcsICdodHRwOi8v
YnVncy5jb20nKQorICAgICAgICBzZWxmLmFzc2VydElzKHRyYWNrZXIsIHRyYWNrZXIuZ2V0KCd4
eHgnLCBOb25lKSkKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhOb25lLCB0cmFja2VyLmdldCgneXl5
JywgTm9uZSkpCisKKyAgICBkZWYgdGVzdF9jaGVja19idWdfaWRfb25seV9hY2NlcHRzX2ludGVn
ZXJzKHNlbGYpOgorICAgICAgICAiIiJBIFVuaXF1ZUludGVnZXJCdWdUcmFja2VyIGFjY2VwdHMg
aW50ZWdlcnMgYXMgYnVnIElEcy4iIiIKKyAgICAgICAgdHJhY2tlciA9IGJ1Z3RyYWNrZXIuVW5p
cXVlSW50ZWdlckJ1Z1RyYWNrZXIoJ3h4eCcsICdodHRwOi8vYnVncy5jb20nKQorICAgICAgICB0
cmFja2VyLmNoZWNrX2J1Z19pZCgnMTIzNCcpCisKKyAgICBkZWYgdGVzdF9jaGVja19idWdfaWRf
ZG9lc250X2FjY2VwdF9ub25faW50ZWdlcnMoc2VsZik6CisgICAgICAgICIiIkEgVW5pcXVlSW50
ZWdlckJ1Z1RyYWNrZXIgcmVqZWN0cyBub24taW50ZWdlcnMgYXMgYnVnIElEcy4iIiIKKyAgICAg
ICAgdHJhY2tlciA9IGJ1Z3RyYWNrZXIuVW5pcXVlSW50ZWdlckJ1Z1RyYWNrZXIoJ3h4eCcsICdo
dHRwOi8vYnVncy5jb20nKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcygKKyAgICAgICAgICAg
IGVycm9ycy5NYWxmb3JtZWRCdWdJZGVudGlmaWVyLCB0cmFja2VyLmNoZWNrX2J1Z19pZCwgJ3Jl
ZCcpCisKKworY2xhc3MgVGVzdFVSTFBhcmFtZXRyaXplZEludGVnZXJCdWdUcmFja2VyKFRlc3RD
YXNlV2l0aE1lbW9yeVRyYW5zcG9ydCk6CisgICAgIiIiVGVzdHMgZm9yIFRyYWNUcmFja2VyLiIi
IgorCisgICAgZGVmIHNldFVwKHNlbGYpOgorICAgICAgICBUZXN0Q2FzZVdpdGhNZW1vcnlUcmFu
c3BvcnQuc2V0VXAoc2VsZikKKyAgICAgICAgc2VsZi51cmwgPSAnaHR0cDovL3R3aXN0ZWRtYXRy
aXguY29tL3RyYWMnCisgICAgICAgIHNlbGYudHJhY2tlciA9IGJ1Z3RyYWNrZXIuVVJMUGFyYW1l
dHJpemVkSW50ZWdlckJ1Z1RyYWNrZXIoJ3NvbWUnLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd0aWNrZXQvJykKKwor
ICAgIGRlZiB0ZXN0X2dldF93aXRoX3Vuc3VwcG9ydGVkX3RhZyhzZWxmKToKKyAgICAgICAgIiIi
SWYgYXNrZWQgZm9yIGFuIHVucmVjb2duaXplZCBvciB1bmNvbmZpZ3VyZWQgdGFnLCByZXR1cm4g
Tm9uZS4iIiIKKyAgICAgICAgYnJhbmNoID0gc2VsZi5tYWtlX2JyYW5jaCgnc29tZV9icmFuY2gn
KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKE5vbmUsIHNlbGYudHJhY2tlci5nZXQoJ2xwJywg
YnJhbmNoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChOb25lLCBzZWxmLnRyYWNrZXIuZ2V0
KCd0d2lzdGVkJywgYnJhbmNoKSkKKworICAgIGRlZiB0ZXN0X2dldF93aXRoX3N1cHBvcnRlZF90
YWcoc2VsZik6CisgICAgICAgICIiIklmIGFza2VkIGZvciBhIHZhbGlkIHRhZywgcmV0dXJuIGEg
dHJhY2tlciBpbnN0YW5jZSB0aGF0IGNhbiBtYXAgYnVnCisgICAgICAgIElEcyB0byA8YmFzZV91
cmw+LzxidWdfYXJlYT4gKyA8YnVnX2lkPi4iIiIKKyAgICAgICAgYnVndHJhY2tlci50cmFja2Vy
X3JlZ2lzdHJ5LnJlZ2lzdGVyKCdzb21lJywgc2VsZi50cmFja2VyKQorICAgICAgICBzZWxmLmFk
ZENsZWFudXAobGFtYmRhOiBidWd0cmFja2VyLnRyYWNrZXJfcmVnaXN0cnkucmVtb3ZlKCdzb21l
JykpCisKKyAgICAgICAgYnJhbmNoID0gc2VsZi5tYWtlX2JyYW5jaCgnc29tZV9icmFuY2gnKQor
ICAgICAgICBjb25maWcgPSBicmFuY2guZ2V0X2NvbmZpZygpCisgICAgICAgIGNvbmZpZy5zZXRf
dXNlcl9vcHRpb24oJ3NvbWVfdHdpc3RlZF91cmwnLCBzZWxmLnVybCkKKyAgICAgICAgdHJhY2tl
ciA9IHNlbGYudHJhY2tlci5nZXQoJ3R3aXN0ZWQnLCBicmFuY2gpCisgICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwoCisgICAgICAgICAgICB1cmx1dGlscy5qb2luKHNlbGYudXJsLCAndGlja2V0Lycp
ICsgJzEyMzQnLAorICAgICAgICAgICAgdHJhY2tlci5nZXRfYnVnX3VybCgnMTIzNCcpKQorCisg
ICAgZGVmIHRlc3RfZ2V0X2J1Z191cmxfZm9yX2JhZF9idWcoc2VsZik6CisgICAgICAgICIiIldo
ZW4gZ2l2ZW4gYSBidWcgaWRlbnRpZmllciB0aGF0IGlzIGludmFsaWQgZm9yIFRyYWMsIGdldF9i
dWdfdXJsCisgICAgICAgIHNob3VsZCByYWlzZSBhbiBlcnJvci4KKyAgICAgICAgIiIiCisgICAg
ICAgIHNlbGYuYXNzZXJ0UmFpc2VzKAorICAgICAgICAgICAgZXJyb3JzLk1hbGZvcm1lZEJ1Z0lk
ZW50aWZpZXIsIHNlbGYudHJhY2tlci5nZXRfYnVnX3VybCwgJ2JhZCcpCgo=

=== added file bzrlib/tests/test_help.py // file-id:test_help.py-20070419045354
... -6q6rq15j9e2n5fna-1 // last-changed:robertc@robertcollins.net-2007042300245
... 3-6mw8b5sexbmlqer9 // encoding:base64
LS0tIC9kZXYvbnVsbAorKysgYnpybGliL3Rlc3RzL3Rlc3RfaGVscC5weQpAQCAtMCwwICsxLDI1
OCBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMDcgQ2Fub25pY2FsIEx0ZAorIworIyBUaGlzIHByb2dy
YW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlm
eQorIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl
IGFzIHB1Ymxpc2hlZCBieQorIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIg
dmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgorIyAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRl
ciB2ZXJzaW9uLgorIworIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUg
dGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRo
b3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorIyBHTlUgR2VuZXJhbCBQ
dWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorIworIyBZb3Ugc2hvdWxkIGhhdmUgcmVj
ZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorIyBhbG9uZyB3
aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorIyBG
b3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAg
MDIxMTEtMTMwNyAgVVNBCisKKyIiIlVuaXQgdGVzdHMgZm9yIHRoZSBienJsaWIuaGVscCBtb2R1
bGUuIiIiCisKK2Zyb20gY1N0cmluZ0lPIGltcG9ydCBTdHJpbmdJTworCitmcm9tIGJ6cmxpYiBp
bXBvcnQgKAorICAgIGJ1aWx0aW5zLAorICAgIGNvbW1hbmRzLAorICAgIGVycm9ycywKKyAgICBo
ZWxwLAorICAgIGhlbHBfdG9waWNzLAorICAgIHBsdWdpbiwKKyAgICB0ZXN0cywKKyAgICApCisK
KworY2xhc3MgVGVzdENvbW1hbmRIZWxwKHRlc3RzLlRlc3RDYXNlKToKKyAgICAiIiJUZXN0cyBm
b3IgaGVscCBvbiBjb21tYW5kcy4iIiIKKworICAgIGRlZiB0ZXN0X2NvbW1hbmRfaGVscF9pbmNs
dWRlc19zZWVfYWxzbyhzZWxmKToKKyAgICAgICAgY2xhc3MgY21kX1dpdGhTZWVBbHNvKGNvbW1h
bmRzLkNvbW1hbmQpOgorICAgICAgICAgICAgIiIiQSBzYW1wbGUgY29tbWFuZC4iIiIKKyAgICAg
ICAgICAgIF9zZWVfYWxzbyA9IFsnZm9vJywgJ2JhciddCisgICAgICAgIGNtZCA9IGNtZF9XaXRo
U2VlQWxzbygpCisgICAgICAgIGhlbHB0ZXh0ID0gY21kLmdldF9oZWxwX3RleHQoKQorICAgICAg
ICBzZWxmLmFzc2VydEVuZHNXaXRoKAorICAgICAgICAgICAgaGVscHRleHQsCisgICAgICAgICAg
ICAnICAtaCwgLS1oZWxwICBzaG93IGhlbHAgbWVzc2FnZVxuJworICAgICAgICAgICAgJ1xuJwor
ICAgICAgICAgICAgJ1NlZSBhbHNvOiBiYXIsIGZvb1xuJykKKworICAgIGRlZiB0ZXN0X2dldF9o
ZWxwX3RleHQoc2VsZik6CisgICAgICAgICIiIkNvbW1hbmRzIGhhdmUgYSBnZXRfaGVscF90ZXh0
IG1ldGhvZCB3aGljaCByZXR1cm5zIHRoZWlyIGhlbHAuIiIiCisgICAgICAgIGNsYXNzIGNtZF9E
ZW1vKGNvbW1hbmRzLkNvbW1hbmQpOgorICAgICAgICAgICAgIiIiQSBzYW1wbGUgY29tbWFuZC4i
IiIKKyAgICAgICAgY21kID0gY21kX0RlbW8oKQorICAgICAgICBoZWxwdGV4dCA9IGNtZC5nZXRf
aGVscF90ZXh0KCkKKyAgICAgICAgc2VsZi5hc3NlcnRTdGFydHNXaXRoKGhlbHB0ZXh0LCAndXNh
Z2U6IGJ6ciBEZW1vJykKKyAgICAgICAgc2VsZi5hc3NlcnRFbmRzV2l0aChoZWxwdGV4dCwgJ3No
b3cgaGVscCBtZXNzYWdlXG4nKQorCisgICAgZGVmIHRlc3RfY29tbWFuZF93aXRoX2FkZGl0aW9u
YWxfc2VlX2Fsc28oc2VsZik6CisgICAgICAgIGNsYXNzIGNtZF9XaXRoU2VlQWxzbyhjb21tYW5k
cy5Db21tYW5kKToKKyAgICAgICAgICAgICIiIkEgc2FtcGxlIGNvbW1hbmQuIiIiCisgICAgICAg
ICAgICBfc2VlX2Fsc28gPSBbJ2ZvbycsICdiYXInXQorICAgICAgICBjbWQgPSBjbWRfV2l0aFNl
ZUFsc28oKQorICAgICAgICBoZWxwdGV4dCA9IGNtZC5nZXRfaGVscF90ZXh0KFsnZ2FtJ10pCisg
ICAgICAgIHNlbGYuYXNzZXJ0RW5kc1dpdGgoCisgICAgICAgICAgICBoZWxwdGV4dCwKKyAgICAg
ICAgICAgICcgIC1oLCAtLWhlbHAgIHNob3cgaGVscCBtZXNzYWdlXG4nCisgICAgICAgICAgICAn
XG4nCisgICAgICAgICAgICAnU2VlIGFsc286IGJhciwgZm9vLCBnYW1cbicpCisKKyAgICBkZWYg
dGVzdF9jb21tYW5kX29ubHlfYWRkaXRpb25hbF9zZWVfYWxzbyhzZWxmKToKKyAgICAgICAgY2xh
c3MgY21kX1dpdGhTZWVBbHNvKGNvbW1hbmRzLkNvbW1hbmQpOgorICAgICAgICAgICAgIiIiQSBz
YW1wbGUgY29tbWFuZC4iIiIKKyAgICAgICAgY21kID0gY21kX1dpdGhTZWVBbHNvKCkKKyAgICAg
ICAgaGVscHRleHQgPSBjbWQuZ2V0X2hlbHBfdGV4dChbJ2dhbSddKQorICAgICAgICBzZWxmLmFz
c2VydEVuZHNXaXRoKAorICAgICAgICAgICAgaGVscHRleHQsCisgICAgICAgICAgICAnICAtaCwg
LS1oZWxwICBzaG93IGhlbHAgbWVzc2FnZVxuJworICAgICAgICAgICAgJ1xuJworICAgICAgICAg
ICAgJ1NlZSBhbHNvOiBnYW1cbicpCisKKyAgICBkZWYgdGVzdF9nZXRfaGVscF90b3BpYyhzZWxm
KToKKyAgICAgICAgIiIiVGhlIGhlbHAgdG9waWMgZm9yIGEgQ29tbWFuZCBpcyBpdHMgbmFtZSgp
LiIiIgorICAgICAgICBjbGFzcyBjbWRfZm9vX2Jhcihjb21tYW5kcy5Db21tYW5kKToKKyAgICAg
ICAgICAgICIiIkEgc2FtcGxlIGNvbW1hbmQuIiIiCisgICAgICAgIGNtZCA9IGNtZF9mb29fYmFy
KCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjbWQubmFtZSgpLCBjbWQuZ2V0X2hlbHBfdG9w
aWMoKSkKKyAgICAKKworY2xhc3MgVGVzdFJlZ2lzdGVyZWRUb3BpYyh0ZXN0cy5UZXN0Q2FzZSk6
CisgICAgIiIiVGVzdHMgZm9yIHRoZSBSZWdpc3RlcmVkVG9waWMgY2xhc3MuIiIiCisKKyAgICBk
ZWYgdGVzdF9jb250cnVjdChzZWxmKToKKyAgICAgICAgIiIiQ29uc3RydWN0aW9uIHRha2VzIHRo
ZSBoZWxwIHRvcGljIG5hbWUgZm9yIHRoZSByZWdpc3RlcmVkIGl0ZW0uIiIiCisgICAgICAgICMg
dmFsaWRhdGUgb3VyIHRlc3QgCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSgnYmFzaWMnIGluIGhl
bHBfdG9waWNzLnRvcGljX3JlZ2lzdHJ5KQorICAgICAgICB0b3BpYyA9IGhlbHBfdG9waWNzLlJl
Z2lzdGVyZWRUb3BpYygnYmFzaWMnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdiYXNpYycs
IHRvcGljLnRvcGljKQorCisgICAgZGVmIHRlc3RfZ2V0X2hlbHBfdGV4dChzZWxmKToKKyAgICAg
ICAgIiIiQSBSZWdpc3RlcmVkVG9waWMgcmV0dXJucyB0aGUgZ2V0X2RldGFpbCByZXN1bHRzIGZv
ciBnZXRfaGVscF90ZXh0LiIiIgorICAgICAgICB0b3BpYyA9IGhlbHBfdG9waWNzLlJlZ2lzdGVy
ZWRUb3BpYygnY29tbWFuZHMnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGhlbHBfdG9waWNz
LnRvcGljX3JlZ2lzdHJ5LmdldF9kZXRhaWwoJ2NvbW1hbmRzJyksCisgICAgICAgICAgICB0b3Bp
Yy5nZXRfaGVscF90ZXh0KCkpCisKKyAgICBkZWYgdGVzdF9nZXRfaGVscF90ZXh0X3dpdGhfYWRk
aXRpb25hbF9zZWVfYWxzbyhzZWxmKToKKyAgICAgICAgdG9waWMgPSBoZWxwX3RvcGljcy5SZWdp
c3RlcmVkVG9waWMoJ2NvbW1hbmRzJykKKyAgICAgICAgc2VsZi5hc3NlcnRFbmRzV2l0aCgKKyAg
ICAgICAgICAgIHRvcGljLmdldF9oZWxwX3RleHQoWydmb28nLCAnYmFyJ10pLAorICAgICAgICAg
ICAgJ1xuJworICAgICAgICAgICAgJ1NlZSBhbHNvOiBiYXIsIGZvb1xuJykKKworICAgIGRlZiB0
ZXN0X2dldF9oZWxwX3RvcGljKHNlbGYpOgorICAgICAgICAiIiJUaGUgaGVscCB0b3BpYyBmb3Ig
YSBSZWdpc3RlcmVkVG9waWMgaXMgaXRzIHRvcGljIGZyb20gY29uc3RydWN0aW9uLiIiIgorICAg
ICAgICB0b3BpYyA9IGhlbHBfdG9waWNzLlJlZ2lzdGVyZWRUb3BpYygnZm9vYmFyJykKKyAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbCgnZm9vYmFyJywgdG9waWMuZ2V0X2hlbHBfdG9waWMoKSkKKyAg
ICAgICAgdG9waWMgPSBoZWxwX3RvcGljcy5SZWdpc3RlcmVkVG9waWMoJ2JheicpCisgICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwoJ2JheicsIHRvcGljLmdldF9oZWxwX3RvcGljKCkpCisKKworY2xh
c3MgVGVzdFRvcGljSW5kZXgodGVzdHMuVGVzdENhc2UpOgorICAgICIiIlRlc3RzIGZvciB0aGUg
SGVscFRvcGljSW5kZXggY2xhc3MuIiIiCisKKyAgICBkZWYgdGVzdF9kZWZhdWx0X2NvbnN0cnVj
dGFibGUoc2VsZik6CisgICAgICAgIGluZGV4ID0gaGVscF90b3BpY3MuSGVscFRvcGljSW5kZXgo
KQorCisgICAgZGVmIHRlc3RfZ2V0X3RvcGljc19Ob25lKHNlbGYpOgorICAgICAgICAiIiJTZWFy
Y2hpbmcgZm9yIE5vbmUgcmV0dXJucyB0aGUgYmFzaWMgaGVscCB0b3BpYy4iIiIKKyAgICAgICAg
aW5kZXggPSBoZWxwX3RvcGljcy5IZWxwVG9waWNJbmRleCgpCisgICAgICAgIHRvcGljcyA9IGlu
ZGV4LmdldF90b3BpY3MoTm9uZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgxLCBsZW4odG9w
aWNzKSkKKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKHRvcGljc1swXSwgaGVscF90b3Bp
Y3MuUmVnaXN0ZXJlZFRvcGljKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdiYXNpYycsIHRv
cGljc1swXS50b3BpYykKKworICAgIGRlZiB0ZXN0X2dldF90b3BpY3NfdG9waWNzKHNlbGYpOgor
ICAgICAgICAiIiJTZWFyY2hpbmcgZm9yIGEgc3RyaW5nIHJldHVybnMgdGhlIG1hdGNoaW5nIHN0
cmluZy4iIiIKKyAgICAgICAgaW5kZXggPSBoZWxwX3RvcGljcy5IZWxwVG9waWNJbmRleCgpCisg
ICAgICAgIHRvcGljcyA9IGluZGV4LmdldF90b3BpY3MoJ3RvcGljcycpCisgICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwoMSwgbGVuKHRvcGljcykpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5j
ZSh0b3BpY3NbMF0sIGhlbHBfdG9waWNzLlJlZ2lzdGVyZWRUb3BpYykKKyAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbCgndG9waWNzJywgdG9waWNzWzBdLnRvcGljKQorCisgICAgZGVmIHRlc3RfZ2V0
X3RvcGljc19ub190b3BpYyhzZWxmKToKKyAgICAgICAgIiIiU2VhcmNoaW5nIGZvciBzb21ldGhp
bmcgbm90IHJlZ2lzdGVyZWQgcmV0dXJucyBbXS4iIiIKKyAgICAgICAgaW5kZXggPSBoZWxwX3Rv
cGljcy5IZWxwVG9waWNJbmRleCgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoW10sIGluZGV4
LmdldF90b3BpY3MoJ25vdGhpbmcgYnkgdGhpcyBuYW1lJykpCisKKyAgICBkZWYgdGVzdF9wcmVm
aXgoc2VsZik6CisgICAgICAgICIiIlRvcGljSW5kZXggaGFzIGEgcHJlZml4IG9mICcnLiIiIgor
ICAgICAgICBpbmRleCA9IGhlbHBfdG9waWNzLkhlbHBUb3BpY0luZGV4KCkKKyAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbCgnJywgaW5kZXgucHJlZml4KQorCisKK2NsYXNzIFRlc3RDb21tYW5kSW5k
ZXgodGVzdHMuVGVzdENhc2UpOgorICAgICIiIlRlc3RzIGZvciB0aGUgSGVscENvbW1hbmRJbmRl
eCBjbGFzcy4iIiIKKworICAgIGRlZiB0ZXN0X2RlZmF1bHRfY29uc3RydWN0YWJsZShzZWxmKToK
KyAgICAgICAgaW5kZXggPSBjb21tYW5kcy5IZWxwQ29tbWFuZEluZGV4KCkKKworICAgIGRlZiB0
ZXN0X2dldF90b3BpY3NfTm9uZShzZWxmKToKKyAgICAgICAgIiIiU2VhcmNoaW5nIGZvciBOb25l
IHJldHVybnMgYW4gZW1wdHkgbGlzdC4iIiIKKyAgICAgICAgaW5kZXggPSBjb21tYW5kcy5IZWxw
Q29tbWFuZEluZGV4KCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChbXSwgaW5kZXguZ2V0X3Rv
cGljcyhOb25lKSkKKworICAgIGRlZiB0ZXN0X2dldF90b3BpY3Nfcm9ja3Moc2VsZik6CisgICAg
ICAgICIiIlNlYXJjaGluZyBmb3IgJ3JvY2tzJyByZXR1cm5zIHRoZSBjbWRfcm9ja3MgY29tbWFu
ZCBpbnN0YW5jZS4iIiIKKyAgICAgICAgaW5kZXggPSBjb21tYW5kcy5IZWxwQ29tbWFuZEluZGV4
KCkKKyAgICAgICAgdG9waWNzID0gaW5kZXguZ2V0X3RvcGljcygncm9ja3MnKQorICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKDEsIGxlbih0b3BpY3MpKQorICAgICAgICBzZWxmLmFzc2VydElzSW5z
dGFuY2UodG9waWNzWzBdLCBidWlsdGlucy5jbWRfcm9ja3MpCisKKyAgICBkZWYgdGVzdF9nZXRf
dG9waWNzX25vX3RvcGljKHNlbGYpOgorICAgICAgICAiIiJTZWFyY2hpbmcgZm9yIHNvbWV0aGlu
ZyB0aGF0IGlzIG5vdCBhIGNvbW1hbmQgcmV0dXJucyBbXS4iIiIKKyAgICAgICAgaW5kZXggPSBj
b21tYW5kcy5IZWxwQ29tbWFuZEluZGV4KCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChbXSwg
aW5kZXguZ2V0X3RvcGljcygnbm90aGluZyBieSB0aGlzIG5hbWUnKSkKKworICAgIGRlZiB0ZXN0
X3ByZWZpeChzZWxmKToKKyAgICAgICAgIiIiQ29tbWFuZEluZGV4IGhhcyBhIHByZWZpeCBvZiAn
Y29tbWFuZHMvJy4iIiIKKyAgICAgICAgaW5kZXggPSBjb21tYW5kcy5IZWxwQ29tbWFuZEluZGV4
KCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnY29tbWFuZHMvJywgaW5kZXgucHJlZml4KQor
CisgICAgZGVmIHRlc3RfZ2V0X3RvcGljX3dpdGhfcHJlZml4KHNlbGYpOgorICAgICAgICAiIiJT
ZWFyY2hpbmcgZm9yIGNvbW1hbmRzL3JvY2tzIHJldHVybnMgdGhlIHJvY2tzIGNvbW1hbmQgb2Jq
ZWN0LiIiIgorICAgICAgICBpbmRleCA9IGNvbW1hbmRzLkhlbHBDb21tYW5kSW5kZXgoKQorICAg
ICAgICB0b3BpY3MgPSBpbmRleC5nZXRfdG9waWNzKCdjb21tYW5kcy9yb2NrcycpCisgICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwoMSwgbGVuKHRvcGljcykpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNJ
bnN0YW5jZSh0b3BpY3NbMF0sIGJ1aWx0aW5zLmNtZF9yb2NrcykKKworCitjbGFzcyBUZXN0SGVs
cEluZGljZXModGVzdHMuVGVzdENhc2UpOgorICAgICIiIlRlc3RzIGZvciB0aGUgSGVscEluZGlj
ZXMgY2xhc3MuIiIiCisKKyAgICBkZWYgdGVzdF9kZWZhdWx0X3NlYXJjaF9wYXRoKHNlbGYpOgor
ICAgICAgICAiIiJUaGUgZGVmYXVsdCBzZWFyY2ggcGF0aCBzaG91bGQgaW5jbHVkZSBpbnRlcm5h
bCBpbmRleHMuIiIiCisgICAgICAgIGluZGljZXMgPSBoZWxwLkhlbHBJbmRpY2VzKCkKKyAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbCgzLCBsZW4oaW5kaWNlcy5zZWFyY2hfcGF0aCkpCisgICAgICAg
ICMgaGVscCB0b3BpY3Mgc2hvdWxkIGJlIHNlYXJjaGVkIGluIGZpcnN0LgorICAgICAgICBzZWxm
LmFzc2VydElzSW5zdGFuY2UoaW5kaWNlcy5zZWFyY2hfcGF0aFswXSwKKyAgICAgICAgICAgIGhl
bHBfdG9waWNzLkhlbHBUb3BpY0luZGV4KQorICAgICAgICAjIHdpdGggY29tbWFuZHMgYmVpbmcg
c2VhcmNoIHNlY29uZC4KKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKGluZGljZXMuc2Vh
cmNoX3BhdGhbMV0sCisgICAgICAgICAgICBjb21tYW5kcy5IZWxwQ29tbWFuZEluZGV4KQorICAg
ICAgICAjIGFuZCBwbHVnaW5zIGFyZSBhIHRoaXJkIGluZGV4LgorICAgICAgICBzZWxmLmFzc2Vy
dElzSW5zdGFuY2UoaW5kaWNlcy5zZWFyY2hfcGF0aFsyXSwKKyAgICAgICAgICAgIHBsdWdpbi5Q
bHVnaW5zSGVscEluZGV4KQorCisgICAgZGVmIHRlc3Rfc2VhcmNoX2Zvcl91bmtub3duX3RvcGlj
X3JhaXNlcyhzZWxmKToKKyAgICAgICAgIiIiU2VhcmNoaW5nIGZvciBhbiB1bmtub3duIHRvcGlj
IHNob3VsZCByYWlzZSBOb0hlbHBUb3BpYy4iIiIKKyAgICAgICAgaW5kaWNlcyA9IGhlbHAuSGVs
cEluZGljZXMoKQorICAgICAgICBpbmRpY2VzLnNlYXJjaF9wYXRoID0gW10KKyAgICAgICAgZXJy
b3IgPSBzZWxmLmFzc2VydFJhaXNlcyhlcnJvcnMuTm9IZWxwVG9waWMsIGluZGljZXMuc2VhcmNo
LCAnZm9vJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnZm9vJywgZXJyb3IudG9waWMpCisK
KyAgICBkZWYgdGVzdF9zZWFyY2hfY2FsbHNfZ2V0X3RvcGljKHNlbGYpOgorICAgICAgICAiIiJT
ZWFyY2hpbmcgc2hvdWxkIGNhbGwgZ2V0X3RvcGljcyBpbiBhbGwgaW5kZXhlcyBpbiBvcmRlci4i
IiIKKyAgICAgICAgY2FsbHMgPSBbXQorICAgICAgICBjbGFzcyBSZWNvcmRpbmdJbmRleChvYmpl
Y3QpOgorICAgICAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIG5hbWUpOgorICAgICAgICAgICAg
ICAgIHNlbGYucHJlZml4ID0gbmFtZQorICAgICAgICAgICAgZGVmIGdldF90b3BpY3Moc2VsZiwg
dG9waWMpOgorICAgICAgICAgICAgICAgIGNhbGxzLmFwcGVuZCgoJ2dldF90b3BpY3MnLCBzZWxm
LnByZWZpeCwgdG9waWMpKQorICAgICAgICAgICAgICAgIHJldHVybiBbJ3NvbWV0aGluZyddCisg
ICAgICAgIGluZGV4ID0gaGVscC5IZWxwSW5kaWNlcygpCisgICAgICAgIGluZGV4LnNlYXJjaF9w
YXRoID0gW1JlY29yZGluZ0luZGV4KCcxJyksIFJlY29yZGluZ0luZGV4KCcyJyldCisgICAgICAg
ICMgdHJ5IHdpdGggTm9uZQorICAgICAgICBpbmRleC5zZWFyY2goTm9uZSkKKyAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbChbCisgICAgICAgICAgICAoJ2dldF90b3BpY3MnLCAnMScsIE5vbmUpLAor
ICAgICAgICAgICAgKCdnZXRfdG9waWNzJywgJzInLCBOb25lKSwKKyAgICAgICAgICAgIF0sCisg
ICAgICAgICAgICBjYWxscykKKyAgICAgICAgIyBhbmQgd2l0aCBhIHN0cmluZworICAgICAgICBk
ZWwgY2FsbHNbOl0KKyAgICAgICAgaW5kZXguc2VhcmNoKCdiYXInKQorICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKFsKKyAgICAgICAgICAgICgnZ2V0X3RvcGljcycsICcxJywgJ2JhcicpLAorICAg
ICAgICAgICAgKCdnZXRfdG9waWNzJywgJzInLCAnYmFyJyksCisgICAgICAgICAgICBdLAorICAg
ICAgICAgICAgY2FsbHMpCisKKyAgICBkZWYgdGVzdF9zZWFyY2hfcmV0dXJuc19pbmRleF9hbmRf
cmVzdWx0cyhzZWxmKToKKyAgICAgICAgIiIiU2VhcmNoaW5nIHNob3VsZCByZXR1cm4gaGVscCB0
b3BpY3Mgd2l0aCB0aGVpciBpbmRleCIiIgorICAgICAgICBjbGFzcyBDYW5uZWRJbmRleChvYmpl
Y3QpOgorICAgICAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHByZWZpeCwgc2VhcmNoX3Jlc3Vs
dCk6CisgICAgICAgICAgICAgICAgc2VsZi5wcmVmaXggPSBwcmVmaXgKKyAgICAgICAgICAgICAg
ICBzZWxmLnJlc3VsdCA9IHNlYXJjaF9yZXN1bHQKKyAgICAgICAgICAgIGRlZiBnZXRfdG9waWNz
KHNlbGYsIHRvcGljKToKKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5yZXN1bHQKKyAgICAg
ICAgaW5kZXggPSBoZWxwLkhlbHBJbmRpY2VzKCkKKyAgICAgICAgaW5kZXhfb25lID0gQ2FubmVk
SW5kZXgoJzEnLCBbJ2EnXSkKKyAgICAgICAgaW5kZXhfdHdvID0gQ2FubmVkSW5kZXgoJzInLCBb
J2InLCAnYyddKQorICAgICAgICBpbmRleC5zZWFyY2hfcGF0aCA9IFtpbmRleF9vbmUsIGluZGV4
X3R3b10KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChbKGluZGV4X29uZSwgJ2EnKSwgKGluZGV4
X3R3bywgJ2InKSwgKGluZGV4X3R3bywgJ2MnKV0sCisgICAgICAgICAgICBpbmRleC5zZWFyY2go
Tm9uZSkpCisKKyAgICBkZWYgdGVzdF9zZWFyY2hfY2hlY2tzX2Zvcl9kdXBsaWNhdGVfcHJlZml4
ZXMoc2VsZik6CisgICAgICAgICIiIkl0cyBhbiBlcnJvciB3aGVuIHRoZXJlIGFyZSBtdWx0aXBs
ZSBpbmRpY2VzIHdpdGggdGhlIHNhbWUgcHJlZml4LiIiIgorICAgICAgICBpbmRpY2VzID0gaGVs
cC5IZWxwSW5kaWNlcygpCisgICAgICAgIGluZGljZXMuc2VhcmNoX3BhdGggPSBbaGVscF90b3Bp
Y3MuSGVscFRvcGljSW5kZXgoKSwKKyAgICAgICAgICAgIGhlbHBfdG9waWNzLkhlbHBUb3BpY0lu
ZGV4KCldCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKGVycm9ycy5EdXBsaWNhdGVIZWxwUHJl
Zml4LCBpbmRpY2VzLnNlYXJjaCwgTm9uZSkKCg==

=== added file bzrlib/tests/test_remote.py // file-id:test_remote.py-2006072010
... 3555-yeeg2x51vn0rbtdp-2 // last-changed:mbp@sourcefrog.net-20070507131140-i
... ajs5she7cy0pbst // encoding:base64
LS0tIC9kZXYvbnVsbAorKysgYnpybGliL3Rlc3RzL3Rlc3RfcmVtb3RlLnB5CkBAIC0wLDAgKzEs
NzcxIEBACisjIENvcHlyaWdodCAoQykgMjAwNiwgMjAwNyBDYW5vbmljYWwgTHRkCisjCisjIFRo
aXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQv
b3IgbW9kaWZ5CisjIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGlj
IExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisjIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247
IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCisjIChhdCB5b3VyIG9wdGlvbikg
YW55IGxhdGVyIHZlcnNpb24uCisjCisjIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0
aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFO
VFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorIyBNRVJDSEFOVEFCSUxJ
VFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisjIEdOVSBH
ZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisjCisjIFlvdSBzaG91bGQg
aGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisj
IGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3
YXJlCisjIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0
b24sIE1BICAwMjExMS0xMzA3ICBVU0EKKworIiIiVGVzdHMgZm9yIHJlbW90ZSBienJkaXIvYnJh
bmNoL3JlcG8vZXRjCisKK1RoZXNlIGFyZSBwcm94eSBvYmplY3RzIHdoaWNoIGFjdCBvbiByZW1v
dGUgb2JqZWN0cyBieSBzZW5kaW5nIG1lc3NhZ2VzCit0aHJvdWdoIGEgc21hcnQgY2xpZW50LiAg
VGhlIHByb3hpZXMgYXJlIHRvIGJlIGNyZWF0ZWQgd2hlbiBhdHRlbXB0aW5nIHRvIG9wZW4KK3Ro
ZSBvYmplY3QgZ2l2ZW4gYSB0cmFuc3BvcnQgdGhhdCBzdXBwb3J0cyBzbWFydHNlcnZlciBycGMg
b3BlcmF0aW9ucy4gCisKK1RoZXNlIHRlc3RzIGNvcnJlc3BvbmQgdG8gdGVzdHMudGVzdF9zbWFy
dCwgd2hpY2ggZXhlcmNpc2VzIHRoZSBzZXJ2ZXIgc2lkZS4KKyIiIgorCitmcm9tIGNTdHJpbmdJ
TyBpbXBvcnQgU3RyaW5nSU8KKworZnJvbSBienJsaWIgaW1wb3J0ICgKKyAgICBienJkaXIsCisg
ICAgZXJyb3JzLAorICAgIHJlbW90ZSwKKyAgICByZXBvc2l0b3J5LAorICAgIHRlc3RzLAorICAg
ICkKK2Zyb20gYnpybGliLmJyYW5jaCBpbXBvcnQgQnJhbmNoCitmcm9tIGJ6cmxpYi5ienJkaXIg
aW1wb3J0IEJ6ckRpciwgQnpyRGlyRm9ybWF0Citmcm9tIGJ6cmxpYi5yZW1vdGUgaW1wb3J0ICgK
KyAgICBSZW1vdGVCcmFuY2gsCisgICAgUmVtb3RlQnpyRGlyLAorICAgIFJlbW90ZUJ6ckRpckZv
cm1hdCwKKyAgICBSZW1vdGVSZXBvc2l0b3J5LAorICAgICkKK2Zyb20gYnpybGliLnJldmlzaW9u
IGltcG9ydCBOVUxMX1JFVklTSU9OCitmcm9tIGJ6cmxpYi5zbWFydCBpbXBvcnQgc2VydmVyLCBt
ZWRpdW0KK2Zyb20gYnpybGliLnNtYXJ0LmNsaWVudCBpbXBvcnQgX1NtYXJ0Q2xpZW50Citmcm9t
IGJ6cmxpYi50cmFuc3BvcnQubWVtb3J5IGltcG9ydCBNZW1vcnlUcmFuc3BvcnQKK2Zyb20gYnpy
bGliLnRyYW5zcG9ydC5yZW1vdGUgaW1wb3J0IFJlbW90ZVRyYW5zcG9ydAorCisKK2NsYXNzIEJh
c2ljUmVtb3RlT2JqZWN0VGVzdHModGVzdHMuVGVzdENhc2VXaXRoVHJhbnNwb3J0KToKKworICAg
IGRlZiBzZXRVcChzZWxmKToKKyAgICAgICAgc2VsZi50cmFuc3BvcnRfc2VydmVyID0gc2VydmVy
LlNtYXJ0VENQU2VydmVyX2Zvcl90ZXN0aW5nCisgICAgICAgIHN1cGVyKEJhc2ljUmVtb3RlT2Jq
ZWN0VGVzdHMsIHNlbGYpLnNldFVwKCkKKyAgICAgICAgc2VsZi50cmFuc3BvcnQgPSBzZWxmLmdl
dF90cmFuc3BvcnQoKQorICAgICAgICBzZWxmLmNsaWVudCA9IHNlbGYudHJhbnNwb3J0LmdldF9z
bWFydF9jbGllbnQoKQorICAgICAgICAjIG1ha2UgYSBicmFuY2ggdGhhdCBjYW4gYmUgb3BlbmVk
IG92ZXIgdGhlIHNtYXJ0IHRyYW5zcG9ydAorICAgICAgICBzZWxmLmxvY2FsX3d0ID0gQnpyRGly
LmNyZWF0ZV9zdGFuZGFsb25lX3dvcmtpbmd0cmVlKCcuJykKKworICAgIGRlZiB0ZWFyRG93bihz
ZWxmKToKKyAgICAgICAgc2VsZi50cmFuc3BvcnQuZGlzY29ubmVjdCgpCisgICAgICAgIHRlc3Rz
LlRlc3RDYXNlV2l0aFRyYW5zcG9ydC50ZWFyRG93bihzZWxmKQorCisgICAgZGVmIHRlc3RfY3Jl
YXRlX3JlbW90ZV9ienJkaXIoc2VsZik6CisgICAgICAgIGIgPSByZW1vdGUuUmVtb3RlQnpyRGly
KHNlbGYudHJhbnNwb3J0KQorICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoYiwgQnpyRGly
KQorCisgICAgZGVmIHRlc3Rfb3Blbl9yZW1vdGVfYnJhbmNoKHNlbGYpOgorICAgICAgICAjIG9w
ZW4gYSBzdGFuZGFsb25lIGJyYW5jaCBpbiB0aGUgd29ya2luZyBkaXJlY3RvcnkKKyAgICAgICAg
YiA9IHJlbW90ZS5SZW1vdGVCenJEaXIoc2VsZi50cmFuc3BvcnQpCisgICAgICAgIGJyYW5jaCA9
IGIub3Blbl9icmFuY2goKQorICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoYnJhbmNoLCBC
cmFuY2gpCisKKyAgICBkZWYgdGVzdF9yZW1vdGVfcmVwb3NpdG9yeShzZWxmKToKKyAgICAgICAg
YiA9IEJ6ckRpci5vcGVuX2Zyb21fdHJhbnNwb3J0KHNlbGYudHJhbnNwb3J0KQorICAgICAgICBy
ZXBvID0gYi5vcGVuX3JlcG9zaXRvcnkoKQorICAgICAgICByZXZpZCA9IHUnXHhjODIzMTIzMTIz
Jy5lbmNvZGUoJ3V0ZjgnKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHJlcG8uaGFzX3Jldmlz
aW9uKHJldmlkKSkKKyAgICAgICAgc2VsZi5sb2NhbF93dC5jb21taXQobWVzc2FnZT0ndGVzdCBj
b21taXQnLCByZXZfaWQ9cmV2aWQpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZXBvLmhhc19y
ZXZpc2lvbihyZXZpZCkpCisKKyAgICBkZWYgdGVzdF9yZW1vdGVfYnJhbmNoX3JldmlzaW9uX2hp
c3Rvcnkoc2VsZik6CisgICAgICAgIGIgPSBCenJEaXIub3Blbl9mcm9tX3RyYW5zcG9ydChzZWxm
LnRyYW5zcG9ydCkub3Blbl9icmFuY2goKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFtdLCBi
LnJldmlzaW9uX2hpc3RvcnkoKSkKKyAgICAgICAgcjEgPSBzZWxmLmxvY2FsX3d0LmNvbW1pdCgn
MXN0IGNvbW1pdCcpCisgICAgICAgIHIyID0gc2VsZi5sb2NhbF93dC5jb21taXQoJzFzdCBjb21t
aXQnLCByZXZfaWQ9dSdceGM4Jy5lbmNvZGUoJ3V0ZjgnKSkKKyAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbChbcjEsIHIyXSwgYi5yZXZpc2lvbl9oaXN0b3J5KCkpCisKKyAgICBkZWYgdGVzdF9maW5k
X2NvcnJlY3RfZm9ybWF0KHNlbGYpOgorICAgICAgICAiIiJTaG91bGQgb3BlbiBhIFJlbW90ZUJ6
ckRpciBvdmVyIGEgUmVtb3RlVHJhbnNwb3J0IiIiCisgICAgICAgIGZtdCA9IEJ6ckRpckZvcm1h
dC5maW5kX2Zvcm1hdChzZWxmLnRyYW5zcG9ydCkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKFJl
bW90ZUJ6ckRpckZvcm1hdAorICAgICAgICAgICAgICAgICAgICAgICAgaW4gQnpyRGlyRm9ybWF0
Ll9jb250cm9sX3NlcnZlcl9mb3JtYXRzKQorICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2Uo
Zm10LCByZW1vdGUuUmVtb3RlQnpyRGlyRm9ybWF0KQorCisgICAgZGVmIHRlc3Rfb3Blbl9kZXRl
Y3RlZF9zbWFydF9mb3JtYXQoc2VsZik6CisgICAgICAgIGZtdCA9IEJ6ckRpckZvcm1hdC5maW5k
X2Zvcm1hdChzZWxmLnRyYW5zcG9ydCkKKyAgICAgICAgZCA9IGZtdC5vcGVuKHNlbGYudHJhbnNw
b3J0KQorICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoZCwgQnpyRGlyKQorCisgICAgZGVm
IHRlc3RfcmVtb3RlX2JyYW5jaF9yZXByKHNlbGYpOgorICAgICAgICBiID0gQnpyRGlyLm9wZW5f
ZnJvbV90cmFuc3BvcnQoc2VsZi50cmFuc3BvcnQpLm9wZW5fYnJhbmNoKCkKKyAgICAgICAgc2Vs
Zi5hc3NlcnRTdGFydHNXaXRoKHN0cihiKSwgJ1JlbW90ZUJyYW5jaCgnKQorCisKK2NsYXNzIEZh
a2VQcm90b2NvbChvYmplY3QpOgorICAgICIiIkxvb2thbGlrZSBTbWFydENsaWVudFJlcXVlc3RQ
cm90b2NvbE9uZSBhbGxvd2luZyBib2R5IHJlYWRpbmcgdGVzdHMuIiIiCisKKyAgICBkZWYgX19p
bml0X18oc2VsZiwgYm9keSk6CisgICAgICAgIHNlbGYuX2JvZHlfYnVmZmVyID0gU3RyaW5nSU8o
Ym9keSkKKworICAgIGRlZiByZWFkX2JvZHlfYnl0ZXMoc2VsZiwgY291bnQ9LTEpOgorICAgICAg
ICByZXR1cm4gc2VsZi5fYm9keV9idWZmZXIucmVhZChjb3VudCkKKworCitjbGFzcyBGYWtlQ2xp
ZW50KF9TbWFydENsaWVudCk6CisgICAgIiIiTG9va2FsaWtlIGZvciBfU21hcnRDbGllbnQgYWxs
b3dpbmcgdGVzdGluZy4iIiIKKyAgICAKKyAgICBkZWYgX19pbml0X18oc2VsZiwgcmVzcG9uc2Vz
KToKKyAgICAgICAgIyBXZSBkb24ndCBjYWxsIHRoZSBzdXBlciBpbml0IGJlY2F1c2UgdGhlcmUg
aXMgbm8gbWVkaXVtLgorICAgICAgICAiIiJjcmVhdGUgYSBGYWtlQ2xpZW50LgorCisgICAgICAg
IDpwYXJhbSByZXNwb25lczogQSBsaXN0IG9mIHJlc3BvbnNlLXR1cGxlLCBib2R5LWRhdGEgcGFp
cnMgdG8gYmUgc2VudAorICAgICAgICAgICAgYmFjayB0byBjYWxsZXJzLgorICAgICAgICAiIiIK
KyAgICAgICAgc2VsZi5yZXNwb25zZXMgPSByZXNwb25zZXMKKyAgICAgICAgc2VsZi5fY2FsbHMg
PSBbXQorCisgICAgZGVmIGNhbGwoc2VsZiwgbWV0aG9kLCAqYXJncyk6CisgICAgICAgIHNlbGYu
X2NhbGxzLmFwcGVuZCgoJ2NhbGwnLCBtZXRob2QsIGFyZ3MpKQorICAgICAgICByZXR1cm4gc2Vs
Zi5yZXNwb25zZXMucG9wKDApWzBdCisKKyAgICBkZWYgY2FsbF9leHBlY3RpbmdfYm9keShzZWxm
LCBtZXRob2QsICphcmdzKToKKyAgICAgICAgc2VsZi5fY2FsbHMuYXBwZW5kKCgnY2FsbF9leHBl
Y3RpbmdfYm9keScsIG1ldGhvZCwgYXJncykpCisgICAgICAgIHJlc3VsdCA9IHNlbGYucmVzcG9u
c2VzLnBvcCgwKQorICAgICAgICByZXR1cm4gcmVzdWx0WzBdLCBGYWtlUHJvdG9jb2wocmVzdWx0
WzFdKQorCisKK2NsYXNzIFRlc3RCenJEaXJPcGVuQnJhbmNoKHRlc3RzLlRlc3RDYXNlKToKKwor
ICAgIGRlZiB0ZXN0X2JyYW5jaF9wcmVzZW50KHNlbGYpOgorICAgICAgICBjbGllbnQgPSBGYWtl
Q2xpZW50KFsoKCdvaycsICcnKSwgKSwgKCgnb2snLCAnJywgJ25vJywgJ25vJyksICldKQorICAg
ICAgICB0cmFuc3BvcnQgPSBNZW1vcnlUcmFuc3BvcnQoKQorICAgICAgICB0cmFuc3BvcnQubWtk
aXIoJ3F1YWNrJykKKyAgICAgICAgdHJhbnNwb3J0ID0gdHJhbnNwb3J0LmNsb25lKCdxdWFjaycp
CisgICAgICAgIGJ6cmRpciA9IFJlbW90ZUJ6ckRpcih0cmFuc3BvcnQsIF9jbGllbnQ9Y2xpZW50
KQorICAgICAgICByZXN1bHQgPSBienJkaXIub3Blbl9icmFuY2goKQorICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKAorICAgICAgICAgICAgWygnY2FsbCcsICdCenJEaXIub3Blbl9icmFuY2gnLCAo
Jy8vL3F1YWNrLycsKSksCisgICAgICAgICAgICAgKCdjYWxsJywgJ0J6ckRpci5maW5kX3JlcG9z
aXRvcnknLCAoJy8vL3F1YWNrLycsKSldLAorICAgICAgICAgICAgY2xpZW50Ll9jYWxscykKKyAg
ICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKHJlc3VsdCwgUmVtb3RlQnJhbmNoKQorICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKGJ6cmRpciwgcmVzdWx0LmJ6cmRpcikKKworICAgIGRlZiB0ZXN0
X2JyYW5jaF9taXNzaW5nKHNlbGYpOgorICAgICAgICBjbGllbnQgPSBGYWtlQ2xpZW50KFsoKCdu
b2JyYW5jaCcsKSwgKV0pCisgICAgICAgIHRyYW5zcG9ydCA9IE1lbW9yeVRyYW5zcG9ydCgpCisg
ICAgICAgIHRyYW5zcG9ydC5ta2RpcigncXVhY2snKQorICAgICAgICB0cmFuc3BvcnQgPSB0cmFu
c3BvcnQuY2xvbmUoJ3F1YWNrJykKKyAgICAgICAgYnpyZGlyID0gUmVtb3RlQnpyRGlyKHRyYW5z
cG9ydCwgX2NsaWVudD1jbGllbnQpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKGVycm9ycy5O
b3RCcmFuY2hFcnJvciwgYnpyZGlyLm9wZW5fYnJhbmNoKQorICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKAorICAgICAgICAgICAgWygnY2FsbCcsICdCenJEaXIub3Blbl9icmFuY2gnLCAoJy8vL3F1
YWNrLycsKSldLAorICAgICAgICAgICAgY2xpZW50Ll9jYWxscykKKworICAgIGRlZiBjaGVja19v
cGVuX3JlcG9zaXRvcnkoc2VsZiwgcmljaF9yb290LCBzdWJ0cmVlcyk6CisgICAgICAgIGlmIHJp
Y2hfcm9vdDoKKyAgICAgICAgICAgIHJpY2hfcmVzcG9uc2UgPSAneWVzJworICAgICAgICBlbHNl
OgorICAgICAgICAgICAgcmljaF9yZXNwb25zZSA9ICdubycKKyAgICAgICAgaWYgc3VidHJlZXM6
CisgICAgICAgICAgICBzdWJ0cmVlX3Jlc3BvbnNlID0gJ3llcycKKyAgICAgICAgZWxzZToKKyAg
ICAgICAgICAgIHN1YnRyZWVfcmVzcG9uc2UgPSAnbm8nCisgICAgICAgIGNsaWVudCA9IEZha2VD
bGllbnQoWygoJ29rJywgJycsIHJpY2hfcmVzcG9uc2UsIHN1YnRyZWVfcmVzcG9uc2UpLCApLF0p
CisgICAgICAgIHRyYW5zcG9ydCA9IE1lbW9yeVRyYW5zcG9ydCgpCisgICAgICAgIHRyYW5zcG9y
dC5ta2RpcigncXVhY2snKQorICAgICAgICB0cmFuc3BvcnQgPSB0cmFuc3BvcnQuY2xvbmUoJ3F1
YWNrJykKKyAgICAgICAgYnpyZGlyID0gUmVtb3RlQnpyRGlyKHRyYW5zcG9ydCwgX2NsaWVudD1j
bGllbnQpCisgICAgICAgIHJlc3VsdCA9IGJ6cmRpci5vcGVuX3JlcG9zaXRvcnkoKQorICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgWygnY2FsbCcsICdCenJEaXIuZmluZF9y
ZXBvc2l0b3J5JywgKCcvLy9xdWFjay8nLCkpXSwKKyAgICAgICAgICAgIGNsaWVudC5fY2FsbHMp
CisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShyZXN1bHQsIFJlbW90ZVJlcG9zaXRvcnkp
CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnpyZGlyLCByZXN1bHQuYnpyZGlyKQorICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKHJpY2hfcm9vdCwgcmVzdWx0Ll9mb3JtYXQucmljaF9yb290X2Rh
dGEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3VidHJlZXMsIHJlc3VsdC5fZm9ybWF0LnN1
cHBvcnRzX3RyZWVfcmVmZXJlbmNlKQorCisgICAgZGVmIHRlc3Rfb3Blbl9yZXBvc2l0b3J5X3Nl
dHNfZm9ybWF0X2F0dHJpYnV0ZXMoc2VsZik6CisgICAgICAgIHNlbGYuY2hlY2tfb3Blbl9yZXBv
c2l0b3J5KFRydWUsIFRydWUpCisgICAgICAgIHNlbGYuY2hlY2tfb3Blbl9yZXBvc2l0b3J5KEZh
bHNlLCBUcnVlKQorICAgICAgICBzZWxmLmNoZWNrX29wZW5fcmVwb3NpdG9yeShUcnVlLCBGYWxz
ZSkKKyAgICAgICAgc2VsZi5jaGVja19vcGVuX3JlcG9zaXRvcnkoRmFsc2UsIEZhbHNlKQorCisg
ICAgZGVmIHRlc3Rfb2xkX3NlcnZlcihzZWxmKToKKyAgICAgICAgIiIiUmVtb3RlQnpyRGlyRm9y
bWF0IHNob3VsZCBmYWlsIHRvIHByb2JlIGlmIHRoZSBzZXJ2ZXIgdmVyc2lvbiBpcyB0b28KKyAg
ICAgICAgb2xkLgorICAgICAgICAiIiIKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoZXJyb3Jz
Lk5vdEJyYW5jaEVycm9yLAorICAgICAgICAgICAgUmVtb3RlQnpyRGlyRm9ybWF0LnByb2JlX3Ry
YW5zcG9ydCwgT2xkU2VydmVyVHJhbnNwb3J0KCkpCisKKworY2xhc3MgT2xkU21hcnRDbGllbnQo
b2JqZWN0KToKKyAgICAiIiJBIGZha2Ugc21hcnQgY2xpZW50IGZvciB0ZXN0X29sZF92ZXJzaW9u
IHRoYXQganVzdCByZXR1cm5zIGEgdmVyc2lvbiBvbmUKKyAgICByZXNwb25zZSB0byB0aGUgJ2hl
bGxvJyAocXVlcnkgdmVyc2lvbikgY29tbWFuZC4KKyAgICAiIiIKKworICAgIGRlZiBnZXRfcmVx
dWVzdChzZWxmKToKKyAgICAgICAgaW5wdXRfZmlsZSA9IFN0cmluZ0lPKCdva1x4MDExXG4nKQor
ICAgICAgICBvdXRwdXRfZmlsZSA9IFN0cmluZ0lPKCkKKyAgICAgICAgY2xpZW50X21lZGl1bSA9
IG1lZGl1bS5TbWFydFNpbXBsZVBpcGVzQ2xpZW50TWVkaXVtKAorICAgICAgICAgICAgaW5wdXRf
ZmlsZSwgb3V0cHV0X2ZpbGUpCisgICAgICAgIHJldHVybiBtZWRpdW0uU21hcnRDbGllbnRTdHJl
YW1NZWRpdW1SZXF1ZXN0KGNsaWVudF9tZWRpdW0pCisKKworY2xhc3MgT2xkU2VydmVyVHJhbnNw
b3J0KG9iamVjdCk6CisgICAgIiIiQSBmYWtlIHRyYW5zcG9ydCBmb3IgdGVzdF9vbGRfc2VydmVy
IHRoYXQgcmVwb3J0cyBpdCdzIHNtYXJ0IHNlcnZlcgorICAgIHByb3RvY29sIHZlcnNpb24gYXMg
dmVyc2lvbiBvbmUuCisgICAgIiIiCisKKyAgICBkZWYgX19pbml0X18oc2VsZik6CisgICAgICAg
IHNlbGYuYmFzZSA9ICdmYWtlOicKKworICAgIGRlZiBnZXRfc21hcnRfY2xpZW50KHNlbGYpOgor
ICAgICAgICByZXR1cm4gT2xkU21hcnRDbGllbnQoKQorCisKK2NsYXNzIFRlc3RCcmFuY2hMYXN0
UmV2aXNpb25JbmZvKHRlc3RzLlRlc3RDYXNlKToKKworICAgIGRlZiB0ZXN0X2VtcHR5X2JyYW5j
aChzZWxmKToKKyAgICAgICAgIyBpbiBhbiBlbXB0eSBicmFuY2ggd2UgZGVjb2RlIHRoZSByZXNw
b25zZSBwcm9wZXJseQorICAgICAgICBjbGllbnQgPSBGYWtlQ2xpZW50KFsoKCdvaycsICcwJywg
J251bGw6JyksICldKQorICAgICAgICB0cmFuc3BvcnQgPSBNZW1vcnlUcmFuc3BvcnQoKQorICAg
ICAgICB0cmFuc3BvcnQubWtkaXIoJ3F1YWNrJykKKyAgICAgICAgdHJhbnNwb3J0ID0gdHJhbnNw
b3J0LmNsb25lKCdxdWFjaycpCisgICAgICAgICMgd2UgZG8gbm90IHdhbnQgYnpyZGlyIHRvIG1h
a2UgYW55IHJlbW90ZSBjYWxscworICAgICAgICBienJkaXIgPSBSZW1vdGVCenJEaXIodHJhbnNw
b3J0LCBfY2xpZW50PUZhbHNlKQorICAgICAgICBicmFuY2ggPSBSZW1vdGVCcmFuY2goYnpyZGly
LCBOb25lLCBfY2xpZW50PWNsaWVudCkKKyAgICAgICAgcmVzdWx0ID0gYnJhbmNoLmxhc3RfcmV2
aXNpb25faW5mbygpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIFso
J2NhbGwnLCAnQnJhbmNoLmxhc3RfcmV2aXNpb25faW5mbycsICgnLy8vcXVhY2svJywpKV0sCisg
ICAgICAgICAgICBjbGllbnQuX2NhbGxzKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCgwLCBO
VUxMX1JFVklTSU9OKSwgcmVzdWx0KQorCisgICAgZGVmIHRlc3Rfbm9uX2VtcHR5X2JyYW5jaChz
ZWxmKToKKyAgICAgICAgIyBpbiBhIG5vbi1lbXB0eSBicmFuY2ggd2UgYWxzbyBkZWNvZGUgdGhl
IHJlc3BvbnNlIHByb3Blcmx5CisgICAgICAgIHJldmlkID0gdSdceGM4Jy5lbmNvZGUoJ3V0Zjgn
KQorICAgICAgICBjbGllbnQgPSBGYWtlQ2xpZW50KFsoKCdvaycsICcyJywgcmV2aWQpLCApXSkK
KyAgICAgICAgdHJhbnNwb3J0ID0gTWVtb3J5VHJhbnNwb3J0KCkKKyAgICAgICAgdHJhbnNwb3J0
Lm1rZGlyKCdrd2FhaycpCisgICAgICAgIHRyYW5zcG9ydCA9IHRyYW5zcG9ydC5jbG9uZSgna3dh
YWsnKQorICAgICAgICAjIHdlIGRvIG5vdCB3YW50IGJ6cmRpciB0byBtYWtlIGFueSByZW1vdGUg
Y2FsbHMKKyAgICAgICAgYnpyZGlyID0gUmVtb3RlQnpyRGlyKHRyYW5zcG9ydCwgX2NsaWVudD1G
YWxzZSkKKyAgICAgICAgYnJhbmNoID0gUmVtb3RlQnJhbmNoKGJ6cmRpciwgTm9uZSwgX2NsaWVu
dD1jbGllbnQpCisgICAgICAgIHJlc3VsdCA9IGJyYW5jaC5sYXN0X3JldmlzaW9uX2luZm8oKQor
CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBbKCdjYWxsJywgJ0JyYW5j
aC5sYXN0X3JldmlzaW9uX2luZm8nLCAoJy8vL2t3YWFrLycsKSldLAorICAgICAgICAgICAgY2xp
ZW50Ll9jYWxscykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgoMiwgcmV2aWQpLCByZXN1bHQp
CisKKworY2xhc3MgVGVzdEJyYW5jaFNldExhc3RSZXZpc2lvbih0ZXN0cy5UZXN0Q2FzZSk6CisK
KyAgICBkZWYgdGVzdF9zZXRfZW1wdHkoc2VsZik6CisgICAgICAgICMgc2V0X3JldmlzaW9uX2hp
c3RvcnkoW10pIGlzIHRyYW5zbGF0ZWQgdG8gY2FsbGluZworICAgICAgICAjIEJyYW5jaC5zZXRf
bGFzdF9yZXZpc2lvbihwYXRoLCAnJykgb24gdGhlIHdpcmUuCisgICAgICAgIGNsaWVudCA9IEZh
a2VDbGllbnQoWworICAgICAgICAgICAgIyBsb2NrX3dyaXRlCisgICAgICAgICAgICAoKCdvaycs
ICdicmFuY2ggdG9rZW4nLCAncmVwbyB0b2tlbicpLCApLAorICAgICAgICAgICAgIyBzZXRfbGFz
dF9yZXZpc2lvbgorICAgICAgICAgICAgKCgnb2snLCksICksCisgICAgICAgICAgICAjIHVubG9j
aworICAgICAgICAgICAgKCgnb2snLCksICldKQorICAgICAgICB0cmFuc3BvcnQgPSBNZW1vcnlU
cmFuc3BvcnQoKQorICAgICAgICB0cmFuc3BvcnQubWtkaXIoJ2JyYW5jaCcpCisgICAgICAgIHRy
YW5zcG9ydCA9IHRyYW5zcG9ydC5jbG9uZSgnYnJhbmNoJykKKworICAgICAgICBienJkaXIgPSBS
ZW1vdGVCenJEaXIodHJhbnNwb3J0LCBfY2xpZW50PUZhbHNlKQorICAgICAgICBicmFuY2ggPSBS
ZW1vdGVCcmFuY2goYnpyZGlyLCBOb25lLCBfY2xpZW50PWNsaWVudCkKKyAgICAgICAgIyBUaGlz
IGlzIGEgaGFjayB0byB3b3JrIGFyb3VuZCB0aGUgcHJvYmxlbSB0aGF0IFJlbW90ZUJyYW5jaCBj
dXJyZW50bHkKKyAgICAgICAgIyB1bm5lY2Vzc2FyaWx5IGludm9rZXMgX2Vuc3VyZV9yZWFsIHVw
b24gYSBjYWxsIHRvIGxvY2tfd3JpdGUuCisgICAgICAgIGJyYW5jaC5fZW5zdXJlX3JlYWwgPSBs
YW1iZGE6IE5vbmUKKyAgICAgICAgYnJhbmNoLmxvY2tfd3JpdGUoKQorICAgICAgICBjbGllbnQu
X2NhbGxzID0gW10KKyAgICAgICAgcmVzdWx0ID0gYnJhbmNoLnNldF9yZXZpc2lvbl9oaXN0b3J5
KFtdKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgWygnY2FsbCcsICdC
cmFuY2guc2V0X2xhc3RfcmV2aXNpb24nLAorICAgICAgICAgICAgICAgICgnLy8vYnJhbmNoLycs
ICdicmFuY2ggdG9rZW4nLCAncmVwbyB0b2tlbicsICdudWxsOicpKV0sCisgICAgICAgICAgICBj
bGllbnQuX2NhbGxzKQorICAgICAgICBicmFuY2gudW5sb2NrKCkKKyAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbChOb25lLCByZXN1bHQpCisKKyAgICBkZWYgdGVzdF9zZXRfbm9uZW1wdHkoc2VsZik6
CisgICAgICAgICMgc2V0X3JldmlzaW9uX2hpc3RvcnkoW3Jldi1pZDEsIC4uLiwgcmV2LWlkTl0p
IGlzIHRyYW5zbGF0ZWQgdG8gY2FsbGluZworICAgICAgICAjIEJyYW5jaC5zZXRfbGFzdF9yZXZp
c2lvbihwYXRoLCByZXYtaWROKSBvbiB0aGUgd2lyZS4KKyAgICAgICAgY2xpZW50ID0gRmFrZUNs
aWVudChbCisgICAgICAgICAgICAjIGxvY2tfd3JpdGUKKyAgICAgICAgICAgICgoJ29rJywgJ2Jy
YW5jaCB0b2tlbicsICdyZXBvIHRva2VuJyksICksCisgICAgICAgICAgICAjIHNldF9sYXN0X3Jl
dmlzaW9uCisgICAgICAgICAgICAoKCdvaycsKSwgKSwKKyAgICAgICAgICAgICMgdW5sb2NrCisg
ICAgICAgICAgICAoKCdvaycsKSwgKV0pCisgICAgICAgIHRyYW5zcG9ydCA9IE1lbW9yeVRyYW5z
cG9ydCgpCisgICAgICAgIHRyYW5zcG9ydC5ta2RpcignYnJhbmNoJykKKyAgICAgICAgdHJhbnNw
b3J0ID0gdHJhbnNwb3J0LmNsb25lKCdicmFuY2gnKQorCisgICAgICAgIGJ6cmRpciA9IFJlbW90
ZUJ6ckRpcih0cmFuc3BvcnQsIF9jbGllbnQ9RmFsc2UpCisgICAgICAgIGJyYW5jaCA9IFJlbW90
ZUJyYW5jaChienJkaXIsIE5vbmUsIF9jbGllbnQ9Y2xpZW50KQorICAgICAgICAjIFRoaXMgaXMg
YSBoYWNrIHRvIHdvcmsgYXJvdW5kIHRoZSBwcm9ibGVtIHRoYXQgUmVtb3RlQnJhbmNoIGN1cnJl
bnRseQorICAgICAgICAjIHVubmVjZXNzYXJpbHkgaW52b2tlcyBfZW5zdXJlX3JlYWwgdXBvbiBh
IGNhbGwgdG8gbG9ja193cml0ZS4KKyAgICAgICAgYnJhbmNoLl9lbnN1cmVfcmVhbCA9IGxhbWJk
YTogTm9uZQorICAgICAgICAjIExvY2sgdGhlIGJyYW5jaCwgcmVzZXQgdGhlIHJlY29yZCBvZiBy
ZW1vdGUgY2FsbHMuCisgICAgICAgIGJyYW5jaC5sb2NrX3dyaXRlKCkKKyAgICAgICAgY2xpZW50
Ll9jYWxscyA9IFtdCisKKyAgICAgICAgcmVzdWx0ID0gYnJhbmNoLnNldF9yZXZpc2lvbl9oaXN0
b3J5KFsncmV2LWlkMScsICdyZXYtaWQyJ10pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisg
ICAgICAgICAgICBbKCdjYWxsJywgJ0JyYW5jaC5zZXRfbGFzdF9yZXZpc2lvbicsCisgICAgICAg
ICAgICAgICAgKCcvLy9icmFuY2gvJywgJ2JyYW5jaCB0b2tlbicsICdyZXBvIHRva2VuJywgJ3Jl
di1pZDInKSldLAorICAgICAgICAgICAgY2xpZW50Ll9jYWxscykKKyAgICAgICAgYnJhbmNoLnVu
bG9jaygpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoTm9uZSwgcmVzdWx0KQorCisgICAgZGVm
IHRlc3Rfbm9fc3VjaF9yZXZpc2lvbihzZWxmKToKKyAgICAgICAgIyBBIHJlc3BvbnNlIG9mICdO
b1N1Y2hSZXZpc2lvbicgaXMgdHJhbnNsYXRlZCBpbnRvIGFuIGV4Y2VwdGlvbi4KKyAgICAgICAg
Y2xpZW50ID0gRmFrZUNsaWVudChbCisgICAgICAgICAgICAjIGxvY2tfd3JpdGUKKyAgICAgICAg
ICAgICgoJ29rJywgJ2JyYW5jaCB0b2tlbicsICdyZXBvIHRva2VuJyksICksCisgICAgICAgICAg
ICAjIHNldF9sYXN0X3JldmlzaW9uCisgICAgICAgICAgICAoKCdOb1N1Y2hSZXZpc2lvbicsICdy
ZXYtaWQnKSwgKSwKKyAgICAgICAgICAgICMgdW5sb2NrCisgICAgICAgICAgICAoKCdvaycsKSwg
KV0pCisgICAgICAgIHRyYW5zcG9ydCA9IE1lbW9yeVRyYW5zcG9ydCgpCisgICAgICAgIHRyYW5z
cG9ydC5ta2RpcignYnJhbmNoJykKKyAgICAgICAgdHJhbnNwb3J0ID0gdHJhbnNwb3J0LmNsb25l
KCdicmFuY2gnKQorCisgICAgICAgIGJ6cmRpciA9IFJlbW90ZUJ6ckRpcih0cmFuc3BvcnQsIF9j
bGllbnQ9RmFsc2UpCisgICAgICAgIGJyYW5jaCA9IFJlbW90ZUJyYW5jaChienJkaXIsIE5vbmUs
IF9jbGllbnQ9Y2xpZW50KQorICAgICAgICBicmFuY2guX2Vuc3VyZV9yZWFsID0gbGFtYmRhOiBO
b25lCisgICAgICAgIGJyYW5jaC5sb2NrX3dyaXRlKCkKKyAgICAgICAgY2xpZW50Ll9jYWxscyA9
IFtdCisKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoCisgICAgICAgICAgICBlcnJvcnMuTm9T
dWNoUmV2aXNpb24sIGJyYW5jaC5zZXRfcmV2aXNpb25faGlzdG9yeSwgWydyZXYtaWQnXSkKKyAg
ICAgICAgYnJhbmNoLnVubG9jaygpCisKKworY2xhc3MgVGVzdEJyYW5jaENvbnRyb2xHZXRCcmFu
Y2hDb25mKHRlc3RzLlRlc3RDYXNlV2l0aE1lbW9yeVRyYW5zcG9ydCk6CisgICAgIiIiVGVzdCBi
cmFuY2guY29udHJvbF9maWxlcyBhcGkgbXVuZ2luZy4uLgorCisgICAgV2Ugc3BlY2lhbCBjYXNl
IFJlbW90ZUJyYW5jaC5jb250cm9sX2ZpbGVzLmdldCgnYnJhbmNoLmNvbmYnKSB0bworICAgIGNh
bGwgYSBzcGVjaWZpYyBBUEkgc28gdGhhdCBSZW1vdGVCcmFuY2gncyBjYW4gaW50ZXJjZXB0IGNv
bmZpZ3VyYXRpb24KKyAgICBmaWxlIHJlYWRpbmcsIGFsbG93aW5nIHRoZW0gdG8gc2lnbmFsIHRv
IHRoZSBjbGllbnQgYWJvdXQgdGhpbmdzIGxpa2UKKyAgICAnZW1haWwgaXMgY29uZmlndXJlZCBm
b3IgY29tbWl0cycuCisgICAgIiIiCisKKyAgICBkZWYgdGVzdF9nZXRfYnJhbmNoX2NvbmYoc2Vs
Zik6CisgICAgICAgICMgaW4gYW4gZW1wdHkgYnJhbmNoIHdlIGRlY29kZSB0aGUgcmVzcG9uc2Ug
cHJvcGVybHkKKyAgICAgICAgY2xpZW50ID0gRmFrZUNsaWVudChbKCgnb2snLCApLCAnY29uZmln
IGZpbGUgYm9keScpXSkKKyAgICAgICAgIyB3ZSBuZWVkIHRvIG1ha2UgYSByZWFsIGJyYW5jaCBi
ZWNhdXNlIHRoZSByZW1vdGVfYnJhbmNoLmNvbnRyb2xfZmlsZXMKKyAgICAgICAgIyB3aWxsIHRy
aWdnZXIgX2Vuc3VyZV9yZWFsLgorICAgICAgICBicmFuY2ggPSBzZWxmLm1ha2VfYnJhbmNoKCdx
dWFjaycpCisgICAgICAgIHRyYW5zcG9ydCA9IGJyYW5jaC5ienJkaXIucm9vdF90cmFuc3BvcnQK
KyAgICAgICAgIyB3ZSBkbyBub3Qgd2FudCBienJkaXIgdG8gbWFrZSBhbnkgcmVtb3RlIGNhbGxz
CisgICAgICAgIGJ6cmRpciA9IFJlbW90ZUJ6ckRpcih0cmFuc3BvcnQsIF9jbGllbnQ9RmFsc2Up
CisgICAgICAgIGJyYW5jaCA9IFJlbW90ZUJyYW5jaChienJkaXIsIE5vbmUsIF9jbGllbnQ9Y2xp
ZW50KQorICAgICAgICByZXN1bHQgPSBicmFuY2guY29udHJvbF9maWxlcy5nZXQoJ2JyYW5jaC5j
b25mJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIFsoJ2NhbGxfZXhw
ZWN0aW5nX2JvZHknLCAnQnJhbmNoLmdldF9jb25maWdfZmlsZScsICgnLy8vcXVhY2svJywpKV0s
CisgICAgICAgICAgICBjbGllbnQuX2NhbGxzKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdj
b25maWcgZmlsZSBib2R5JywgcmVzdWx0LnJlYWQoKSkKKworCitjbGFzcyBUZXN0QnJhbmNoTG9j
a1dyaXRlKHRlc3RzLlRlc3RDYXNlKToKKworICAgIGRlZiB0ZXN0X2xvY2tfd3JpdGVfdW5sb2Nr
YWJsZShzZWxmKToKKyAgICAgICAgY2xpZW50ID0gRmFrZUNsaWVudChbKCgnVW5sb2NrYWJsZVRy
YW5zcG9ydCcsICksICcnKV0pCisgICAgICAgIHRyYW5zcG9ydCA9IE1lbW9yeVRyYW5zcG9ydCgp
CisgICAgICAgIHRyYW5zcG9ydC5ta2RpcigncXVhY2snKQorICAgICAgICB0cmFuc3BvcnQgPSB0
cmFuc3BvcnQuY2xvbmUoJ3F1YWNrJykKKyAgICAgICAgIyB3ZSBkbyBub3Qgd2FudCBienJkaXIg
dG8gbWFrZSBhbnkgcmVtb3RlIGNhbGxzCisgICAgICAgIGJ6cmRpciA9IFJlbW90ZUJ6ckRpcih0
cmFuc3BvcnQsIF9jbGllbnQ9RmFsc2UpCisgICAgICAgIGJyYW5jaCA9IFJlbW90ZUJyYW5jaChi
enJkaXIsIE5vbmUsIF9jbGllbnQ9Y2xpZW50KQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhl
cnJvcnMuVW5sb2NrYWJsZVRyYW5zcG9ydCwgYnJhbmNoLmxvY2tfd3JpdGUpCisgICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBbKCdjYWxsJywgJ0JyYW5jaC5sb2NrX3dyaXRl
JywgKCcvLy9xdWFjay8nLCAnJywgJycpKV0sCisgICAgICAgICAgICBjbGllbnQuX2NhbGxzKQor
CisKK2NsYXNzIFRlc3RUcmFuc3BvcnRJc1JlYWRvbmx5KHRlc3RzLlRlc3RDYXNlKToKKworICAg
IGRlZiB0ZXN0X3RydWUoc2VsZik6CisgICAgICAgIGNsaWVudCA9IEZha2VDbGllbnQoWygoJ3ll
cycsKSwgJycpXSkKKyAgICAgICAgdHJhbnNwb3J0ID0gUmVtb3RlVHJhbnNwb3J0KCdienI6Ly9l
eGFtcGxlLmNvbS8nLCBtZWRpdW09RmFsc2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBfY2xpZW50PWNsaWVudCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChUcnVlLCB0
cmFuc3BvcnQuaXNfcmVhZG9ubHkoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAg
ICAgICAgIFsoJ2NhbGwnLCAnVHJhbnNwb3J0LmlzX3JlYWRvbmx5JywgKCkpXSwKKyAgICAgICAg
ICAgIGNsaWVudC5fY2FsbHMpCisKKyAgICBkZWYgdGVzdF9mYWxzZShzZWxmKToKKyAgICAgICAg
Y2xpZW50ID0gRmFrZUNsaWVudChbKCgnbm8nLCksICcnKV0pCisgICAgICAgIHRyYW5zcG9ydCA9
IFJlbW90ZVRyYW5zcG9ydCgnYnpyOi8vZXhhbXBsZS5jb20vJywgbWVkaXVtPUZhbHNlLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX2NsaWVudD1jbGllbnQpCisgICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwoRmFsc2UsIHRyYW5zcG9ydC5pc19yZWFkb25seSgpKQorICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgWygnY2FsbCcsICdUcmFuc3BvcnQuaXNf
cmVhZG9ubHknLCAoKSldLAorICAgICAgICAgICAgY2xpZW50Ll9jYWxscykKKworICAgIGRlZiB0
ZXN0X2Vycm9yX2Zyb21fb2xkX3NlcnZlcihzZWxmKToKKyAgICAgICAgIiIiYnpyIDAuMTUgYW5k
IGVhcmxpZXIgc2VydmVycyBkb24ndCByZWNvZ25pc2UgdGhlIGlzX3JlYWRvbmx5IHZlcmIuCisg
ICAgICAgIAorICAgICAgICBDbGllbnRzIHNob3VsZCB0cmVhdCBpdCBhcyBhICJubyIgcmVzcG9u
c2UsIGJlY2F1c2UgaXNfcmVhZG9ubHkgaXMgb25seQorICAgICAgICBhZHZpc29yeSBhbnl3YXkg
KGEgdHJhbnNwb3J0IGNvdWxkIGJlIHJlYWQtd3JpdGUsIGJ1dCB0aGVuIHRoZQorICAgICAgICB1
bmRlcmx5aW5nIGZpbGVzeXN0ZW0gY291bGQgYmUgcmVhZG9ubHkgYW55d2F5KS4KKyAgICAgICAg
IiIiCisgICAgICAgIGNsaWVudCA9IEZha2VDbGllbnQoWygKKyAgICAgICAgICAgICgnZXJyb3In
LCAiR2VuZXJpYyBienIgc21hcnQgcHJvdG9jb2wgZXJyb3I6ICIKKyAgICAgICAgICAgICAgICAg
ICAgICAiYmFkIHJlcXVlc3QgJ1RyYW5zcG9ydC5pc19yZWFkb25seSciKSwgJycpXSkKKyAgICAg
ICAgdHJhbnNwb3J0ID0gUmVtb3RlVHJhbnNwb3J0KCdienI6Ly9leGFtcGxlLmNvbS8nLCBtZWRp
dW09RmFsc2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfY2xpZW50PWNs
aWVudCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChGYWxzZSwgdHJhbnNwb3J0LmlzX3JlYWRv
bmx5KCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBbKCdjYWxsJywg
J1RyYW5zcG9ydC5pc19yZWFkb25seScsICgpKV0sCisgICAgICAgICAgICBjbGllbnQuX2NhbGxz
KQorCisgICAgZGVmIHRlc3RfZXJyb3JfZnJvbV9vbGRfMF8xMV9zZXJ2ZXIoc2VsZik6CisgICAg
ICAgICIiIlNhbWUgYXMgdGVzdF9lcnJvcl9mcm9tX29sZF9zZXJ2ZXIsIGJ1dCB3aXRoIHRoZSBz
bGlnaHRseSBkaWZmZXJlbnQKKyAgICAgICAgZXJyb3IgbWVzc2FnZSBmcm9tIGJ6ciAwLjExIHNl
cnZlcnMuCisgICAgICAgICIiIgorICAgICAgICBjbGllbnQgPSBGYWtlQ2xpZW50KFsoCisgICAg
ICAgICAgICAoJ2Vycm9yJywgIkdlbmVyaWMgYnpyIHNtYXJ0IHByb3RvY29sIGVycm9yOiAiCisg
ICAgICAgICAgICAgICAgICAgICAgImJhZCByZXF1ZXN0IHUnVHJhbnNwb3J0LmlzX3JlYWRvbmx5
JyIpLCAnJyldKQorICAgICAgICB0cmFuc3BvcnQgPSBSZW1vdGVUcmFuc3BvcnQoJ2J6cjovL2V4
YW1wbGUuY29tLycsIG1lZGl1bT1GYWxzZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIF9jbGllbnQ9Y2xpZW50KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEZhbHNlLCB0
cmFuc3BvcnQuaXNfcmVhZG9ubHkoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAg
ICAgICAgIFsoJ2NhbGwnLCAnVHJhbnNwb3J0LmlzX3JlYWRvbmx5JywgKCkpXSwKKyAgICAgICAg
ICAgIGNsaWVudC5fY2FsbHMpCisKKworY2xhc3MgVGVzdFJlbW90ZVJlcG9zaXRvcnkodGVzdHMu
VGVzdENhc2UpOgorICAgICIiIkJhc2UgZm9yIHRlc3RpbmcgUmVtb3RlUmVwb3NpdG9yeSBwcm90
b2NvbCB1c2FnZS4KKyAgICAKKyAgICBUaGVzZSB0ZXN0cyBjb250YWluIGZyb3plbiByZXF1ZXN0
cyBhbmQgcmVzcG9uc2VzLiAgV2Ugd2FudCBhbnkgY2hhbmdlcyB0byAKKyAgICB3aGF0IGlzIHNl
bnQgb3IgZXhwZWN0ZWQgdG8gYmUgcmVxdWlyZSBhIHRob3VnaHRmdWwgdXBkYXRlIHRvIHRoZXNl
IHRlc3RzCisgICAgYmVjYXVzZSB0aGV5IG1pZ2h0IGJyZWFrIGNvbXBhdGliaWxpdHkgd2l0aCBk
aWZmZXJlbnQtdmVyc2lvbmVkIHNlcnZlcnMuCisgICAgIiIiCisKKyAgICBkZWYgc2V0dXBfZmFr
ZV9jbGllbnRfYW5kX3JlcG9zaXRvcnkoc2VsZiwgcmVzcG9uc2VzLCB0cmFuc3BvcnRfcGF0aCk6
CisgICAgICAgICIiIkNyZWF0ZSB0aGUgZmFrZSBjbGllbnQgYW5kIHJlcG9zaXRvcnkgZm9yIHRl
c3Rpbmcgd2l0aC4KKyAgICAgICAgCisgICAgICAgIFRoZXJlJ3Mgbm8gcmVhbCBzZXJ2ZXIgaGVy
ZTsgd2UganVzdCBoYXZlIGNhbm5lZCByZXNwb25zZXMgc2VudAorICAgICAgICBiYWNrIG9uZSBi
eSBvbmUuCisgICAgICAgIAorICAgICAgICA6cGFyYW0gdHJhbnNwb3J0X3BhdGg6IFBhdGggYmVs
b3cgdGhlIHJvb3Qgb2YgdGhlIE1lbW9yeVRyYW5zcG9ydAorICAgICAgICAgICAgd2hlcmUgdGhl
IHJlcG9zaXRvcnkgd2lsbCBiZSBjcmVhdGVkLgorICAgICAgICAiIiIKKyAgICAgICAgY2xpZW50
ID0gRmFrZUNsaWVudChyZXNwb25zZXMpCisgICAgICAgIHRyYW5zcG9ydCA9IE1lbW9yeVRyYW5z
cG9ydCgpCisgICAgICAgIHRyYW5zcG9ydC5ta2Rpcih0cmFuc3BvcnRfcGF0aCkKKyAgICAgICAg
dHJhbnNwb3J0ID0gdHJhbnNwb3J0LmNsb25lKHRyYW5zcG9ydF9wYXRoKQorICAgICAgICAjIHdl
IGRvIG5vdCB3YW50IGJ6cmRpciB0byBtYWtlIGFueSByZW1vdGUgY2FsbHMKKyAgICAgICAgYnpy
ZGlyID0gUmVtb3RlQnpyRGlyKHRyYW5zcG9ydCwgX2NsaWVudD1GYWxzZSkKKyAgICAgICAgcmVw
byA9IFJlbW90ZVJlcG9zaXRvcnkoYnpyZGlyLCBOb25lLCBfY2xpZW50PWNsaWVudCkKKyAgICAg
ICAgcmV0dXJuIHJlcG8sIGNsaWVudAorCisKK2NsYXNzIFRlc3RSZXBvc2l0b3J5R2F0aGVyU3Rh
dHMoVGVzdFJlbW90ZVJlcG9zaXRvcnkpOgorCisgICAgZGVmIHRlc3RfcmV2aWRfbm9uZShzZWxm
KToKKyAgICAgICAgIyAoJ29rJywpLCBib2R5IHdpdGggcmV2aXNpb25zIGFuZCBzaXplCisgICAg
ICAgIHJlc3BvbnNlcyA9IFsoKCdvaycsICksICdyZXZpc2lvbnM6IDJcbnNpemU6IDE4XG4nKV0K
KyAgICAgICAgdHJhbnNwb3J0X3BhdGggPSAncXVhY2snCisgICAgICAgIHJlcG8sIGNsaWVudCA9
IHNlbGYuc2V0dXBfZmFrZV9jbGllbnRfYW5kX3JlcG9zaXRvcnkoCisgICAgICAgICAgICByZXNw
b25zZXMsIHRyYW5zcG9ydF9wYXRoKQorICAgICAgICByZXN1bHQgPSByZXBvLmdhdGhlcl9zdGF0
cyhOb25lKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgWygnY2FsbF9l
eHBlY3RpbmdfYm9keScsICdSZXBvc2l0b3J5LmdhdGhlcl9zdGF0cycsCisgICAgICAgICAgICAg
KCcvLy9xdWFjay8nLCcnLCdubycpKV0sCisgICAgICAgICAgICBjbGllbnQuX2NhbGxzKQorICAg
ICAgICBzZWxmLmFzc2VydEVxdWFsKHsncmV2aXNpb25zJzogMiwgJ3NpemUnOiAxOH0sIHJlc3Vs
dCkKKworICAgIGRlZiB0ZXN0X3JldmlkX25vX2NvbW1pdHRlcnMoc2VsZik6CisgICAgICAgICMg
KCdvaycsKSwgYm9keSB3aXRob3V0IGNvbW1pdHRlcnMKKyAgICAgICAgcmVzcG9uc2VzID0gWygo
J29rJywgKSwKKyAgICAgICAgICAgICAgICAgICAgICAnZmlyc3RyZXY6IDEyMzQ1Ni4zMDAgMzYw
MFxuJworICAgICAgICAgICAgICAgICAgICAgICdsYXRlc3RyZXY6IDY1NDIzMS40MDAgMFxuJwor
ICAgICAgICAgICAgICAgICAgICAgICdyZXZpc2lvbnM6IDJcbicKKyAgICAgICAgICAgICAgICAg
ICAgICAnc2l6ZTogMThcbicpXQorICAgICAgICB0cmFuc3BvcnRfcGF0aCA9ICdxdWljaycKKyAg
ICAgICAgcmV2aWQgPSB1J1x4YzgnLmVuY29kZSgndXRmOCcpCisgICAgICAgIHJlcG8sIGNsaWVu
dCA9IHNlbGYuc2V0dXBfZmFrZV9jbGllbnRfYW5kX3JlcG9zaXRvcnkoCisgICAgICAgICAgICBy
ZXNwb25zZXMsIHRyYW5zcG9ydF9wYXRoKQorICAgICAgICByZXN1bHQgPSByZXBvLmdhdGhlcl9z
dGF0cyhyZXZpZCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIFsoJ2Nh
bGxfZXhwZWN0aW5nX2JvZHknLCAnUmVwb3NpdG9yeS5nYXRoZXJfc3RhdHMnLAorICAgICAgICAg
ICAgICAoJy8vL3F1aWNrLycsIHJldmlkLCAnbm8nKSldLAorICAgICAgICAgICAgY2xpZW50Ll9j
YWxscykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh7J3JldmlzaW9ucyc6IDIsICdzaXplJzog
MTgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICdmaXJzdHJldic6ICgxMjM0NTYuMzAwLCAz
NjAwKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgJ2xhdGVzdHJldic6ICg2NTQyMzEuNDAw
LCAwKSx9LAorICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCkKKworICAgIGRlZiB0ZXN0
X3JldmlkX3dpdGhfY29tbWl0dGVycyhzZWxmKToKKyAgICAgICAgIyAoJ29rJywpLCBib2R5IHdp
dGggY29tbWl0dGVycworICAgICAgICByZXNwb25zZXMgPSBbKCgnb2snLCApLAorICAgICAgICAg
ICAgICAgICAgICAgICdjb21taXR0ZXJzOiAxMjhcbicKKyAgICAgICAgICAgICAgICAgICAgICAn
Zmlyc3RyZXY6IDEyMzQ1Ni4zMDAgMzYwMFxuJworICAgICAgICAgICAgICAgICAgICAgICdsYXRl
c3RyZXY6IDY1NDIzMS40MDAgMFxuJworICAgICAgICAgICAgICAgICAgICAgICdyZXZpc2lvbnM6
IDJcbicKKyAgICAgICAgICAgICAgICAgICAgICAnc2l6ZTogMThcbicpXQorICAgICAgICB0cmFu
c3BvcnRfcGF0aCA9ICdidWljaycKKyAgICAgICAgcmV2aWQgPSB1J1x4YzgnLmVuY29kZSgndXRm
OCcpCisgICAgICAgIHJlcG8sIGNsaWVudCA9IHNlbGYuc2V0dXBfZmFrZV9jbGllbnRfYW5kX3Jl
cG9zaXRvcnkoCisgICAgICAgICAgICByZXNwb25zZXMsIHRyYW5zcG9ydF9wYXRoKQorICAgICAg
ICByZXN1bHQgPSByZXBvLmdhdGhlcl9zdGF0cyhyZXZpZCwgVHJ1ZSkKKyAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbCgKKyAgICAgICAgICAgIFsoJ2NhbGxfZXhwZWN0aW5nX2JvZHknLCAnUmVwb3Np
dG9yeS5nYXRoZXJfc3RhdHMnLAorICAgICAgICAgICAgICAoJy8vL2J1aWNrLycsIHJldmlkLCAn
eWVzJykpXSwKKyAgICAgICAgICAgIGNsaWVudC5fY2FsbHMpCisgICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwoeydyZXZpc2lvbnMnOiAyLCAnc2l6ZSc6IDE4LAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAnY29tbWl0dGVycyc6IDEyOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgJ2ZpcnN0
cmV2JzogKDEyMzQ1Ni4zMDAsIDM2MDApLAorICAgICAgICAgICAgICAgICAgICAgICAgICAnbGF0
ZXN0cmV2JzogKDY1NDIzMS40MDAsIDApLH0sCisgICAgICAgICAgICAgICAgICAgICAgICAgcmVz
dWx0KQorCisKK2NsYXNzIFRlc3RSZXBvc2l0b3J5R2V0UmV2aXNpb25HcmFwaChUZXN0UmVtb3Rl
UmVwb3NpdG9yeSk6CisgICAgCisgICAgZGVmIHRlc3RfbnVsbF9yZXZpc2lvbihzZWxmKToKKyAg
ICAgICAgIyBhIG51bGwgcmV2aXNpb24gaGFzIHRoZSBwcmVkaWN0YWJsZSByZXN1bHQge30sIHdl
IHNob3VsZCBoYXZlIG5vIHdpcmUKKyAgICAgICAgIyB0cmFmZmljIHdoZW4gY2FsbGluZyBpdCB3
aXRoIHRoaXMgYXJndW1lbnQKKyAgICAgICAgcmVzcG9uc2VzID0gWygoJ25vdHVzZWQnLCApLCAn
JyldCisgICAgICAgIHRyYW5zcG9ydF9wYXRoID0gJ2VtcHR5JworICAgICAgICByZXBvLCBjbGll
bnQgPSBzZWxmLnNldHVwX2Zha2VfY2xpZW50X2FuZF9yZXBvc2l0b3J5KAorICAgICAgICAgICAg
cmVzcG9uc2VzLCB0cmFuc3BvcnRfcGF0aCkKKyAgICAgICAgcmVzdWx0ID0gcmVwby5nZXRfcmV2
aXNpb25fZ3JhcGgoTlVMTF9SRVZJU0lPTikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChbXSwg
Y2xpZW50Ll9jYWxscykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh7fSwgcmVzdWx0KQorCisg
ICAgZGVmIHRlc3Rfbm9uZV9yZXZpc2lvbihzZWxmKToKKyAgICAgICAgIyB3aXRoIG5vbmUgd2Ug
d2FudCB0aGUgZW50aXJlIGdyYXBoCisgICAgICAgIHIxID0gdSdcdTBlMzMnLmVuY29kZSgndXRm
OCcpCisgICAgICAgIHIyID0gdSdcdTBkYWInLmVuY29kZSgndXRmOCcpCisgICAgICAgIGxpbmVz
ID0gWycgJy5qb2luKFtyMiwgcjFdKSwgcjFdCisgICAgICAgIGVuY29kZWRfYm9keSA9ICdcbicu
am9pbihsaW5lcykKKworICAgICAgICByZXNwb25zZXMgPSBbKCgnb2snLCApLCBlbmNvZGVkX2Jv
ZHkpXQorICAgICAgICB0cmFuc3BvcnRfcGF0aCA9ICdzaW5oYWxhJworICAgICAgICByZXBvLCBj
bGllbnQgPSBzZWxmLnNldHVwX2Zha2VfY2xpZW50X2FuZF9yZXBvc2l0b3J5KAorICAgICAgICAg
ICAgcmVzcG9uc2VzLCB0cmFuc3BvcnRfcGF0aCkKKyAgICAgICAgcmVzdWx0ID0gcmVwby5nZXRf
cmV2aXNpb25fZ3JhcGgoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAg
WygnY2FsbF9leHBlY3RpbmdfYm9keScsICdSZXBvc2l0b3J5LmdldF9yZXZpc2lvbl9ncmFwaCcs
CisgICAgICAgICAgICAgKCcvLy9zaW5oYWxhLycsICcnKSldLAorICAgICAgICAgICAgY2xpZW50
Ll9jYWxscykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh7cjE6IFtdLCByMjogW3IxXX0sIHJl
c3VsdCkKKworICAgIGRlZiB0ZXN0X3NwZWNpZmljX3JldmlzaW9uKHNlbGYpOgorICAgICAgICAj
IHdpdGggYSBzcGVjaWZpYyByZXZpc2lvbiB3ZSB3YW50IHRoZSBncmFwaCBmb3IgdGhhdAorICAg
ICAgICAjIHdpdGggbm9uZSB3ZSB3YW50IHRoZSBlbnRpcmUgZ3JhcGgKKyAgICAgICAgcjExID0g
dSdcdTBlMzMnLmVuY29kZSgndXRmOCcpCisgICAgICAgIHIxMiA9IHUnXHhjOScuZW5jb2RlKCd1
dGY4JykKKyAgICAgICAgcjIgPSB1J1x1MGRhYicuZW5jb2RlKCd1dGY4JykKKyAgICAgICAgbGlu
ZXMgPSBbJyAnLmpvaW4oW3IyLCByMTEsIHIxMl0pLCByMTEsIHIxMl0KKyAgICAgICAgZW5jb2Rl
ZF9ib2R5ID0gJ1xuJy5qb2luKGxpbmVzKQorCisgICAgICAgIHJlc3BvbnNlcyA9IFsoKCdvaycs
ICksIGVuY29kZWRfYm9keSldCisgICAgICAgIHRyYW5zcG9ydF9wYXRoID0gJ3NpbmhhbGEnCisg
ICAgICAgIHJlcG8sIGNsaWVudCA9IHNlbGYuc2V0dXBfZmFrZV9jbGllbnRfYW5kX3JlcG9zaXRv
cnkoCisgICAgICAgICAgICByZXNwb25zZXMsIHRyYW5zcG9ydF9wYXRoKQorICAgICAgICByZXN1
bHQgPSByZXBvLmdldF9yZXZpc2lvbl9ncmFwaChyMikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bCgKKyAgICAgICAgICAgIFsoJ2NhbGxfZXhwZWN0aW5nX2JvZHknLCAnUmVwb3NpdG9yeS5nZXRf
cmV2aXNpb25fZ3JhcGgnLAorICAgICAgICAgICAgICgnLy8vc2luaGFsYS8nLCByMikpXSwKKyAg
ICAgICAgICAgIGNsaWVudC5fY2FsbHMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoe3IxMTog
W10sIHIxMjogW10sIHIyOiBbcjExLCByMTJdLCB9LCByZXN1bHQpCisKKyAgICBkZWYgdGVzdF9u
b19zdWNoX3JldmlzaW9uKHNlbGYpOgorICAgICAgICByZXZpZCA9ICcxMjMnCisgICAgICAgIHJl
c3BvbnNlcyA9IFsoKCdub3N1Y2hyZXZpc2lvbicsIHJldmlkKSwgJycpXQorICAgICAgICB0cmFu
c3BvcnRfcGF0aCA9ICdzaW5oYWxhJworICAgICAgICByZXBvLCBjbGllbnQgPSBzZWxmLnNldHVw
X2Zha2VfY2xpZW50X2FuZF9yZXBvc2l0b3J5KAorICAgICAgICAgICAgcmVzcG9uc2VzLCB0cmFu
c3BvcnRfcGF0aCkKKyAgICAgICAgIyBhbHNvIGNoZWNrIHRoYXQgdGhlIHJpZ2h0IHJldmlzaW9u
IGlzIHJlcG9ydGVkIGluIHRoZSBlcnJvcgorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhlcnJv
cnMuTm9TdWNoUmV2aXNpb24sCisgICAgICAgICAgICByZXBvLmdldF9yZXZpc2lvbl9ncmFwaCwg
cmV2aWQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBbKCdjYWxsX2V4
cGVjdGluZ19ib2R5JywgJ1JlcG9zaXRvcnkuZ2V0X3JldmlzaW9uX2dyYXBoJywKKyAgICAgICAg
ICAgICAoJy8vL3NpbmhhbGEvJywgcmV2aWQpKV0sCisgICAgICAgICAgICBjbGllbnQuX2NhbGxz
KQorCisgICAgICAgIAorY2xhc3MgVGVzdFJlcG9zaXRvcnlJc1NoYXJlZChUZXN0UmVtb3RlUmVw
b3NpdG9yeSk6CisKKyAgICBkZWYgdGVzdF9pc19zaGFyZWQoc2VsZik6CisgICAgICAgICMgKCd5
ZXMnLCApIGZvciBSZXBvc2l0b3J5LmlzX3NoYXJlZCAtPiAnVHJ1ZScuCisgICAgICAgIHJlc3Bv
bnNlcyA9IFsoKCd5ZXMnLCApLCApXQorICAgICAgICB0cmFuc3BvcnRfcGF0aCA9ICdxdWFjaycK
KyAgICAgICAgcmVwbywgY2xpZW50ID0gc2VsZi5zZXR1cF9mYWtlX2NsaWVudF9hbmRfcmVwb3Np
dG9yeSgKKyAgICAgICAgICAgIHJlc3BvbnNlcywgdHJhbnNwb3J0X3BhdGgpCisgICAgICAgIHJl
c3VsdCA9IHJlcG8uaXNfc2hhcmVkKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAg
ICAgICAgIFsoJ2NhbGwnLCAnUmVwb3NpdG9yeS5pc19zaGFyZWQnLCAoJy8vL3F1YWNrLycsKSld
LAorICAgICAgICAgICAgY2xpZW50Ll9jYWxscykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChU
cnVlLCByZXN1bHQpCisKKyAgICBkZWYgdGVzdF9pc19ub3Rfc2hhcmVkKHNlbGYpOgorICAgICAg
ICAjICgnbm8nLCApIGZvciBSZXBvc2l0b3J5LmlzX3NoYXJlZCAtPiAnRmFsc2UnLgorICAgICAg
ICByZXNwb25zZXMgPSBbKCgnbm8nLCApLCApXQorICAgICAgICB0cmFuc3BvcnRfcGF0aCA9ICdx
d2FjaycKKyAgICAgICAgcmVwbywgY2xpZW50ID0gc2VsZi5zZXR1cF9mYWtlX2NsaWVudF9hbmRf
cmVwb3NpdG9yeSgKKyAgICAgICAgICAgIHJlc3BvbnNlcywgdHJhbnNwb3J0X3BhdGgpCisgICAg
ICAgIHJlc3VsdCA9IHJlcG8uaXNfc2hhcmVkKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgK
KyAgICAgICAgICAgIFsoJ2NhbGwnLCAnUmVwb3NpdG9yeS5pc19zaGFyZWQnLCAoJy8vL3F3YWNr
LycsKSldLAorICAgICAgICAgICAgY2xpZW50Ll9jYWxscykKKyAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbChGYWxzZSwgcmVzdWx0KQorCisKK2NsYXNzIFRlc3RSZXBvc2l0b3J5TG9ja1dyaXRlKFRl
c3RSZW1vdGVSZXBvc2l0b3J5KToKKworICAgIGRlZiB0ZXN0X2xvY2tfd3JpdGUoc2VsZik6Cisg
ICAgICAgIHJlc3BvbnNlcyA9IFsoKCdvaycsICdhIHRva2VuJyksICcnKV0KKyAgICAgICAgdHJh
bnNwb3J0X3BhdGggPSAncXVhY2snCisgICAgICAgIHJlcG8sIGNsaWVudCA9IHNlbGYuc2V0dXBf
ZmFrZV9jbGllbnRfYW5kX3JlcG9zaXRvcnkoCisgICAgICAgICAgICByZXNwb25zZXMsIHRyYW5z
cG9ydF9wYXRoKQorICAgICAgICByZXN1bHQgPSByZXBvLmxvY2tfd3JpdGUoKQorICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgWygnY2FsbCcsICdSZXBvc2l0b3J5LmxvY2tf
d3JpdGUnLCAoJy8vL3F1YWNrLycsICcnKSldLAorICAgICAgICAgICAgY2xpZW50Ll9jYWxscykK
KyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnYSB0b2tlbicsIHJlc3VsdCkKKworICAgIGRlZiB0
ZXN0X2xvY2tfd3JpdGVfYWxyZWFkeV9sb2NrZWQoc2VsZik6CisgICAgICAgIHJlc3BvbnNlcyA9
IFsoKCdMb2NrQ29udGVudGlvbicsICksICcnKV0KKyAgICAgICAgdHJhbnNwb3J0X3BhdGggPSAn
cXVhY2snCisgICAgICAgIHJlcG8sIGNsaWVudCA9IHNlbGYuc2V0dXBfZmFrZV9jbGllbnRfYW5k
X3JlcG9zaXRvcnkoCisgICAgICAgICAgICByZXNwb25zZXMsIHRyYW5zcG9ydF9wYXRoKQorICAg
ICAgICBzZWxmLmFzc2VydFJhaXNlcyhlcnJvcnMuTG9ja0NvbnRlbnRpb24sIHJlcG8ubG9ja193
cml0ZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIFsoJ2NhbGwnLCAn
UmVwb3NpdG9yeS5sb2NrX3dyaXRlJywgKCcvLy9xdWFjay8nLCAnJykpXSwKKyAgICAgICAgICAg
IGNsaWVudC5fY2FsbHMpCisKKyAgICBkZWYgdGVzdF9sb2NrX3dyaXRlX3VubG9ja2FibGUoc2Vs
Zik6CisgICAgICAgIHJlc3BvbnNlcyA9IFsoKCdVbmxvY2thYmxlVHJhbnNwb3J0JywgKSwgJycp
XQorICAgICAgICB0cmFuc3BvcnRfcGF0aCA9ICdxdWFjaycKKyAgICAgICAgcmVwbywgY2xpZW50
ID0gc2VsZi5zZXR1cF9mYWtlX2NsaWVudF9hbmRfcmVwb3NpdG9yeSgKKyAgICAgICAgICAgIHJl
c3BvbnNlcywgdHJhbnNwb3J0X3BhdGgpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKGVycm9y
cy5VbmxvY2thYmxlVHJhbnNwb3J0LCByZXBvLmxvY2tfd3JpdGUpCisgICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwoCisgICAgICAgICAgICBbKCdjYWxsJywgJ1JlcG9zaXRvcnkubG9ja193cml0ZScs
ICgnLy8vcXVhY2svJywgJycpKV0sCisgICAgICAgICAgICBjbGllbnQuX2NhbGxzKQorCisKK2Ns
YXNzIFRlc3RSZXBvc2l0b3J5VW5sb2NrKFRlc3RSZW1vdGVSZXBvc2l0b3J5KToKKworICAgIGRl
ZiB0ZXN0X3VubG9jayhzZWxmKToKKyAgICAgICAgcmVzcG9uc2VzID0gWygoJ29rJywgJ2EgdG9r
ZW4nKSwgJycpLAorICAgICAgICAgICAgICAgICAgICAgKCgnb2snLCksICcnKV0KKyAgICAgICAg
dHJhbnNwb3J0X3BhdGggPSAncXVhY2snCisgICAgICAgIHJlcG8sIGNsaWVudCA9IHNlbGYuc2V0
dXBfZmFrZV9jbGllbnRfYW5kX3JlcG9zaXRvcnkoCisgICAgICAgICAgICByZXNwb25zZXMsIHRy
YW5zcG9ydF9wYXRoKQorICAgICAgICByZXBvLmxvY2tfd3JpdGUoKQorICAgICAgICByZXBvLnVu
bG9jaygpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBbKCdjYWxsJywg
J1JlcG9zaXRvcnkubG9ja193cml0ZScsICgnLy8vcXVhY2svJywgJycpKSwKKyAgICAgICAgICAg
ICAoJ2NhbGwnLCAnUmVwb3NpdG9yeS51bmxvY2snLCAoJy8vL3F1YWNrLycsICdhIHRva2VuJykp
XSwKKyAgICAgICAgICAgIGNsaWVudC5fY2FsbHMpCisKKyAgICBkZWYgdGVzdF91bmxvY2tfd3Jv
bmdfdG9rZW4oc2VsZik6CisgICAgICAgICMgSWYgc29tZWhvdyB0aGUgdG9rZW4gaXMgd3Jvbmcs
IHVubG9jayB3aWxsIHJhaXNlIFRva2VuTWlzbWF0Y2guCisgICAgICAgIHJlc3BvbnNlcyA9IFso
KCdvaycsICdhIHRva2VuJyksICcnKSwKKyAgICAgICAgICAgICAgICAgICAgICgoJ1Rva2VuTWlz
bWF0Y2gnLCksICcnKV0KKyAgICAgICAgdHJhbnNwb3J0X3BhdGggPSAncXVhY2snCisgICAgICAg
IHJlcG8sIGNsaWVudCA9IHNlbGYuc2V0dXBfZmFrZV9jbGllbnRfYW5kX3JlcG9zaXRvcnkoCisg
ICAgICAgICAgICByZXNwb25zZXMsIHRyYW5zcG9ydF9wYXRoKQorICAgICAgICByZXBvLmxvY2tf
d3JpdGUoKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhlcnJvcnMuVG9rZW5NaXNtYXRjaCwg
cmVwby51bmxvY2spCisKKworY2xhc3MgVGVzdFJlcG9zaXRvcnlIYXNSZXZpc2lvbihUZXN0UmVt
b3RlUmVwb3NpdG9yeSk6CisKKyAgICBkZWYgdGVzdF9ub25lKHNlbGYpOgorICAgICAgICAjIHJl
cG8uaGFzX3JldmlzaW9uKE5vbmUpIHNob3VsZCBub3QgY2F1c2UgYW55IHRyYWZmaWMuCisgICAg
ICAgIHRyYW5zcG9ydF9wYXRoID0gJ3F1YWNrJworICAgICAgICByZXNwb25zZXMgPSBOb25lCisg
ICAgICAgIHJlcG8sIGNsaWVudCA9IHNlbGYuc2V0dXBfZmFrZV9jbGllbnRfYW5kX3JlcG9zaXRv
cnkoCisgICAgICAgICAgICByZXNwb25zZXMsIHRyYW5zcG9ydF9wYXRoKQorCisgICAgICAgICMg
VGhlIG51bGwgcmV2aXNpb24gaXMgYWx3YXlzIHRoZXJlLCBzbyBoYXNfcmV2aXNpb24oTm9uZSkg
PT0gVHJ1ZS4KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChUcnVlLCByZXBvLmhhc19yZXZpc2lv
bihOb25lKSkKKworICAgICAgICAjIFRoZSByZW1vdGUgcmVwbyBzaG91bGRuJ3QgYmUgYWNjZXNz
ZWQuCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoW10sIGNsaWVudC5fY2FsbHMpCisKKworY2xh
c3MgVGVzdFJlcG9zaXRvcnlUYXJiYWxsKFRlc3RSZW1vdGVSZXBvc2l0b3J5KToKKworICAgICMg
VGhpcyBpcyBhIGNhbm5lZCB0YXJiYWxsIHJlcG9uc2Ugd2UgY2FuIHZhbGlkYXRlIGFnYWluc3QK
KyAgICB0YXJiYWxsX2NvbnRlbnQgPSAoCisgICAgICAgICdRbHBvT1RGQldTWlRXZEdrajN3QUFX
Ri9rOGFRQUNCSUIvL0E5KzhjSVgvdjMzQUFDRUFZQUJBRUNFQUNOeicKKyAgICAgICAgJ0pxc2dK
SkZQVFNuazFBM3FoNm1UUUFBQUFOUFVIa2Fna1NURWthQTA5UWFOQUFBR2dBQUFjd0NZQ1pHQUVZ
JworICAgICAgICAnbUpoTUpnaHBpYVlCVWtLYW1tU0hxTk1aUTBOQUJrTkFlbzBBR25lQWV2bmx3
UW9HekV6TlZ6YVl4cC8xVWsnCisgICAgICAgICd4WHpBMUNRWDBCSk1aWkxjUEJybHVKaXI1U1F5
aWpXSFlaNlpVdFZxcWxZRGRCMlFvQ3dhOUd5V3dHWURNQScKKyAgICAgICAgJ09RWWhrcEx0L09L
Rm5ubFQ4RTBQbU84K1pOU28yV1dxZUN6R0I1ZkJYWjNJdlY3dU5KVkU3RFluV2o2cXdCJworICAg
ICAgICAnazVESkRJclE1T1FISElqa1M5S3F3RzNtYzN0K0YxK2l1amI4OXVmeUJOSUtDZ2VaQldy
bDVjWHhiTUdvTXMnCisgICAgICAgICdjOUp1VWtnNVlzaVZjYVpKdXJjNktMaTZ5S09rZ0NVT2xJ
bE9wT29YeXJUSmpLOFpnYmtsUmVEZHdHbUZndCcKKyAgICAgICAgJ2RrVnNBSXNsU1ZDZDRBdEFD
U0xieWhMSHJ5ZmIxNFBLZWdyVkRiYStVOE9MNktRdHpkTTVITGpBYzgvcDZuJworICAgICAgICAn
MGxnYVdVOHNrZ083eHVwUFRreXV3aGVTY2tlakZMSzVUNFpPbzBHZGE5dmlhSWhwRDFRbjdKcXFs
S0FKcUMnCisgICAgICAgICdRcGxQS3AybnFCV0Fmd0JHYU93VnJ6M3kxVCtVWlpOaXNtWEhzYjJK
cTE4VCtWYUQ5azRQOERxRTNnNzBxVicKKyAgICAgICAgJ0pMdXJwbkRJNlZTNW9xRERQVmJ0VmpN
eE14TWc0cnpRVmlwbjJCdjFmVk5LMGlxM0dsMGhobm5IS20vZWd5JworICAgICAgICAnbldRN1FI
L0YzSkZPRkNRMGFTUGZBPScKKyAgICAgICAgKS5kZWNvZGUoJ2Jhc2U2NCcpCisKKyAgICBkZWYg
dGVzdF9yZXBvc2l0b3J5X3RhcmJhbGwoc2VsZik6CisgICAgICAgICMgVGVzdCB0aGF0IFJlcG9z
aXRvcnkudGFyYmFsbCBnZW5lcmF0ZXMgdGhlIHJpZ2h0IG9wZXJhdGlvbnMKKyAgICAgICAgdHJh
bnNwb3J0X3BhdGggPSAncmVwbycKKyAgICAgICAgZXhwZWN0ZWRfcmVzcG9uc2VzID0gWygoJ29r
JywpLCBzZWxmLnRhcmJhbGxfY29udGVudCksCisgICAgICAgICAgICBdCisgICAgICAgIGV4cGVj
dGVkX2NhbGxzID0gWygnY2FsbF9leHBlY3RpbmdfYm9keScsICdSZXBvc2l0b3J5LnRhcmJhbGwn
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgKCcvLy9yZXBvLycsICdiejInLCksKSwKKyAg
ICAgICAgICAgIF0KKyAgICAgICAgcmVtb3RlX3JlcG8sIGNsaWVudCA9IHNlbGYuc2V0dXBfZmFr
ZV9jbGllbnRfYW5kX3JlcG9zaXRvcnkoCisgICAgICAgICAgICBleHBlY3RlZF9yZXNwb25zZXMs
IHRyYW5zcG9ydF9wYXRoKQorICAgICAgICAjIE5vdyBhY3R1YWxseSBhc2sgZm9yIHRoZSB0YXJi
YWxsCisgICAgICAgIHRhcmJhbGxfZmlsZSA9IHJlbW90ZV9yZXBvLl9nZXRfdGFyYmFsbCgnYnoy
JykKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChleHBlY3RlZF9j
YWxscywgY2xpZW50Ll9jYWxscykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi50
YXJiYWxsX2NvbnRlbnQsIHRhcmJhbGxfZmlsZS5yZWFkKCkpCisgICAgICAgIGZpbmFsbHk6Cisg
ICAgICAgICAgICB0YXJiYWxsX2ZpbGUuY2xvc2UoKQorCisgICAgZGVmIHRlc3Rfc3Byb3V0X3Vz
ZXNfdGFyYmFsbChzZWxmKToKKyAgICAgICAgIyBSZW1vdGVSZXBvc2l0b3J5LnNwcm91dCBzaG91
bGQgdHJ5IHRvIHVzZSB0aGUKKyAgICAgICAgIyB0YXJiYWxsIGNvbW1hbmQgcmF0aGVyIHRoYW4g
YWNjZXNzaW5nIGFsbCB0aGUgZmlsZXMKKyAgICAgICAgdHJhbnNwb3J0X3BhdGggPSAnc3JjcmVw
bycKKyAgICAgICAgZXhwZWN0ZWRfcmVzcG9uc2VzID0gWygoJ29rJywpLCBzZWxmLnRhcmJhbGxf
Y29udGVudCksCisgICAgICAgICAgICBdCisgICAgICAgIGV4cGVjdGVkX2NhbGxzID0gWygnY2Fs
bDInLCAnUmVwb3NpdG9yeS50YXJiYWxsJywgKCcvLy9zcmNyZXBvLycsICdiejInLCksKSwKKyAg
ICAgICAgICAgIF0KKyAgICAgICAgcmVtb3RlX3JlcG8sIGNsaWVudCA9IHNlbGYuc2V0dXBfZmFr
ZV9jbGllbnRfYW5kX3JlcG9zaXRvcnkoCisgICAgICAgICAgICBleHBlY3RlZF9yZXNwb25zZXMs
IHRyYW5zcG9ydF9wYXRoKQorICAgICAgICAjIG1ha2UgYSByZWd1bGFyIGxvY2FsIHJlcG9zaXRv
cnkgdG8gcmVjZWl2ZSB0aGUgcmVzdWx0cworICAgICAgICBkZXN0X3RyYW5zcG9ydCA9IE1lbW9y
eVRyYW5zcG9ydCgpCisgICAgICAgIGRlc3RfdHJhbnNwb3J0Lm1rZGlyKCdkZXN0cmVwbycpCisg
ICAgICAgIGJ6cmRpcl9mb3JtYXQgPSBienJkaXIuZm9ybWF0X3JlZ2lzdHJ5Lm1ha2VfYnpyZGly
KCdkZWZhdWx0JykKKyAgICAgICAgZGVzdF9ienJkaXIgPSBienJkaXJfZm9ybWF0LmluaXRpYWxp
emVfb25fdHJhbnNwb3J0KGRlc3RfdHJhbnNwb3J0KQorICAgICAgICAjIHRyeSB0byBjb3B5Li4u
CisgICAgICAgIHJlbW90ZV9yZXBvLnNwcm91dChkZXN0X2J6cmRpcikKKworCitjbGFzcyBUZXN0
UmVtb3RlUmVwb3NpdG9yeUNvcHlDb250ZW50KHRlc3RzLlRlc3RDYXNlV2l0aFRyYW5zcG9ydCk6
CisgICAgIiIiUmVtb3RlUmVwb3NpdG9yeS5jb3B5X2NvbnRlbnRfaW50byBvcHRpbWl6YXRpb25z
IiIiCisKKyAgICBkZWYgdGVzdF9jb3B5X2NvbnRlbnRfcmVtb3RlX3RvX2xvY2FsKHNlbGYpOgor
ICAgICAgICBzZWxmLnRyYW5zcG9ydF9zZXJ2ZXIgPSBzZXJ2ZXIuU21hcnRUQ1BTZXJ2ZXJfZm9y
X3Rlc3RpbmcKKyAgICAgICAgc3JjX3JlcG8gPSBzZWxmLm1ha2VfcmVwb3NpdG9yeSgncmVwbzEn
KQorICAgICAgICBzcmNfcmVwbyA9IHJlcG9zaXRvcnkuUmVwb3NpdG9yeS5vcGVuKHNlbGYuZ2V0
X3VybCgncmVwbzEnKSkKKyAgICAgICAgIyBBdCB0aGUgbW9tZW50IHRoZSB0YXJiYWxsLWJhc2Vk
IGNvcHlfY29udGVudF9pbnRvIGNhbid0IHdyaXRlIGJhY2sKKyAgICAgICAgIyBpbnRvIGEgc21h
cnQgc2VydmVyLiAgSXQgd291bGQgYmUgZ29vZCBpZiBpdCBjb3VsZCB1cGxvYWQgdGhlCisgICAg
ICAgICMgdGFyYmFsbDsgb25jZSB0aGF0IHdvcmtzIHdlJ2QgaGF2ZSB0byBjcmVhdGUgcmVwb3Np
dG9yaWVzIG9mCisgICAgICAgICMgZGlmZmVyZW50IGZvcm1hdHMuIC0tIG1icCAyMDA3MDQxMAor
ICAgICAgICBkZXN0X3VybCA9IHNlbGYuZ2V0X3Zmc19vbmx5X3VybCgncmVwbzInKQorICAgICAg
ICBkZXN0X2J6cmRpciA9IEJ6ckRpci5jcmVhdGUoZGVzdF91cmwpCisgICAgICAgIGRlc3RfcmVw
byA9IGRlc3RfYnpyZGlyLmNyZWF0ZV9yZXBvc2l0b3J5KCkKKyAgICAgICAgc2VsZi5hc3NlcnRG
YWxzZShpc2luc3RhbmNlKGRlc3RfcmVwbywgUmVtb3RlUmVwb3NpdG9yeSkpCisgICAgICAgIHNl
bGYuYXNzZXJ0VHJ1ZShpc2luc3RhbmNlKHNyY19yZXBvLCBSZW1vdGVSZXBvc2l0b3J5KSkKKyAg
ICAgICAgc3JjX3JlcG8uY29weV9jb250ZW50X2ludG8oZGVzdF9yZXBvKQoK

=== added file bzrlib/tests/test_smart.py // file-id:test_smart.py-200611220245
... 51-ol0l0o0oofsu9b3t-2 // last-changed:mbp@sourcefrog.net-20070426074805-va5
... 3nylsxqt7ur7u // encoding:base64
LS0tIC9kZXYvbnVsbAorKysgYnpybGliL3Rlc3RzL3Rlc3Rfc21hcnQucHkKQEAgLTAsMCArMSw4
NDEgQEAKKyMgQ29weXJpZ2h0IChDKSAyMDA2LCAyMDA3IENhbm9uaWNhbCBMdGQKKyMKKyMgVGhp
cyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9v
ciBtb2RpZnkKKyMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMg
TGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKyMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsg
ZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKKyMgKGF0IHlvdXIgb3B0aW9uKSBh
bnkgbGF0ZXIgdmVyc2lvbi4KKyMKKyMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRo
ZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisjIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5U
WTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisjIE1FUkNIQU5UQUJJTElU
WSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyMgR05VIEdl
bmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyMKKyMgWW91IHNob3VsZCBo
YXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyMg
YWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdh
cmUKKyMgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3Rv
biwgTUEgIDAyMTExLTEzMDcgIFVTQQorCisiIiJUZXN0cyBmb3IgdGhlIHNtYXJ0IHdpcmUvZG9t
YWluIHByb3RvY29jbC4iIiIKKworZnJvbSBTdHJpbmdJTyBpbXBvcnQgU3RyaW5nSU8KK2ltcG9y
dCB0ZW1wZmlsZQoraW1wb3J0IHRhcmZpbGUKKworZnJvbSBienJsaWIgaW1wb3J0IGJ6cmRpciwg
ZXJyb3JzLCBzbWFydCwgdGVzdHMKK2Zyb20gYnpybGliLnNtYXJ0LnJlcXVlc3QgaW1wb3J0IFNt
YXJ0U2VydmVyUmVzcG9uc2UKK2ltcG9ydCBienJsaWIuc21hcnQuYnpyZGlyCitpbXBvcnQgYnpy
bGliLnNtYXJ0LmJyYW5jaAoraW1wb3J0IGJ6cmxpYi5zbWFydC5yZXBvc2l0b3J5CisKKworY2xh
c3MgVGVzdENhc2VXaXRoU21hcnRNZWRpdW0odGVzdHMuVGVzdENhc2VXaXRoVHJhbnNwb3J0KToK
KworICAgIGRlZiBzZXRVcChzZWxmKToKKyAgICAgICAgc3VwZXIoVGVzdENhc2VXaXRoU21hcnRN
ZWRpdW0sIHNlbGYpLnNldFVwKCkKKyAgICAgICAgIyBXZSdyZSBhbGxvd2VkIHRvIHNldCAgdGhl
IHRyYW5zcG9ydCBjbGFzcyBoZXJlLCBzbyB0aGF0IHdlIGRvbid0IHVzZQorICAgICAgICAjIHRo
ZSBkZWZhdWx0IG9yIGEgcGFyYW1ldGVyaXplZCBjbGFzcywgYnV0IHJhdGhlciB1c2UgdGhlCisg
ICAgICAgICMgVGVzdENhc2VXaXRoVHJhbnNwb3J0IGluZnJhc3RydWN0dXJlIHRvIHNldCB1cCBh
IHNtYXJ0IHNlcnZlciBhbmQKKyAgICAgICAgIyB0cmFuc3BvcnQuCisgICAgICAgIHNlbGYudHJh
bnNwb3J0X3NlcnZlciA9IHNtYXJ0LnNlcnZlci5TbWFydFRDUFNlcnZlcl9mb3JfdGVzdGluZwor
CisgICAgZGVmIGdldF9zbWFydF9tZWRpdW0oc2VsZik6CisgICAgICAgICIiIkdldCBhIHNtYXJ0
IG1lZGl1bSB0byB1c2UgaW4gdGVzdHMuIiIiCisgICAgICAgIHJldHVybiBzZWxmLmdldF90cmFu
c3BvcnQoKS5nZXRfc21hcnRfbWVkaXVtKCkKKworCitjbGFzcyBUZXN0U21hcnRTZXJ2ZXJSZXNw
b25zZSh0ZXN0cy5UZXN0Q2FzZSk6CisKKyAgICBkZWYgdGVzdF9fZXFfXyhzZWxmKToKKyAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbChTbWFydFNlcnZlclJlc3BvbnNlKCgnb2snLCApKSwKKyAgICAg
ICAgICAgIFNtYXJ0U2VydmVyUmVzcG9uc2UoKCdvaycsICkpKQorICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKFNtYXJ0U2VydmVyUmVzcG9uc2UoKCdvaycsICksICdib2R5JyksCisgICAgICAgICAg
ICBTbWFydFNlcnZlclJlc3BvbnNlKCgnb2snLCApLCAnYm9keScpKQorICAgICAgICBzZWxmLmFz
c2VydE5vdEVxdWFsKFNtYXJ0U2VydmVyUmVzcG9uc2UoKCdvaycsICkpLAorICAgICAgICAgICAg
U21hcnRTZXJ2ZXJSZXNwb25zZSgoJ25vdG9rJywgKSkpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90
RXF1YWwoU21hcnRTZXJ2ZXJSZXNwb25zZSgoJ29rJywgKSwgJ2JvZHknKSwKKyAgICAgICAgICAg
IFNtYXJ0U2VydmVyUmVzcG9uc2UoKCdvaycsICkpKQorICAgICAgICBzZWxmLmFzc2VydE5vdEVx
dWFsKE5vbmUsCisgICAgICAgICAgICBTbWFydFNlcnZlclJlc3BvbnNlKCgnb2snLCApKSkKKwor
CitjbGFzcyBUZXN0U21hcnRTZXJ2ZXJSZXF1ZXN0RmluZFJlcG9zaXRvcnkodGVzdHMuVGVzdENh
c2VXaXRoVHJhbnNwb3J0KToKKyAgICAiIiJUZXN0cyBmb3IgQnpyRGlyLmZpbmRfcmVwb3NpdG9y
eS4iIiIKKworICAgIGRlZiB0ZXN0X25vX3JlcG9zaXRvcnkoc2VsZik6CisgICAgICAgICIiIldo
ZW4gdGhlcmUgaXMgbm8gcmVwb3NpdG9yeSB0byBiZSBmb3VuZCwgKCdub3JlcG9zaXRvcnknLCAp
IGlzIHJldHVybmVkLiIiIgorICAgICAgICBiYWNraW5nID0gc2VsZi5nZXRfdHJhbnNwb3J0KCkK
KyAgICAgICAgcmVxdWVzdCA9IHNtYXJ0LmJ6cmRpci5TbWFydFNlcnZlclJlcXVlc3RGaW5kUmVw
b3NpdG9yeShiYWNraW5nKQorICAgICAgICBzZWxmLm1ha2VfYnpyZGlyKCcuJykKKyAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbChTbWFydFNlcnZlclJlc3BvbnNlKCgnbm9yZXBvc2l0b3J5JywgKSks
CisgICAgICAgICAgICByZXF1ZXN0LmV4ZWN1dGUoYmFja2luZy5sb2NhbF9hYnNwYXRoKCcnKSkp
CisKKyAgICBkZWYgdGVzdF9ub25zaGFyZWRfcmVwb3NpdG9yeShzZWxmKToKKyAgICAgICAgIyBu
b25zaGFyZWQgcmVwb3NpdG9yeXMgb25seSBhbGxvdyAnZmluZCcgdG8gcmV0dXJuIGEgaGFuZGxl
IHdoZW4gdGhlIAorICAgICAgICAjIHBhdGggdGhlIHJlcG9zaXRvcnkgaXMgYmVpbmcgc2VhcmNo
ZWQgb24gaXMgdGhlIHNhbWUgYXMgdGhhdCB0aGF0IAorICAgICAgICAjIHRoZSByZXBvc2l0b3J5
IGlzIGF0LgorICAgICAgICBiYWNraW5nID0gc2VsZi5nZXRfdHJhbnNwb3J0KCkKKyAgICAgICAg
cmVxdWVzdCA9IHNtYXJ0LmJ6cmRpci5TbWFydFNlcnZlclJlcXVlc3RGaW5kUmVwb3NpdG9yeShi
YWNraW5nKQorICAgICAgICByZXN1bHQgPSBzZWxmLl9tYWtlX3JlcG9zaXRvcnlfYW5kX3Jlc3Vs
dCgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzdWx0LCByZXF1ZXN0LmV4ZWN1dGUoYmFj
a2luZy5sb2NhbF9hYnNwYXRoKCcnKSkpCisgICAgICAgIHNlbGYubWFrZV9ienJkaXIoJ3N1YmRp
cicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoU21hcnRTZXJ2ZXJSZXNwb25zZSgoJ25vcmVw
b3NpdG9yeScsICkpLAorICAgICAgICAgICAgcmVxdWVzdC5leGVjdXRlKGJhY2tpbmcubG9jYWxf
YWJzcGF0aCgnc3ViZGlyJykpKQorCisgICAgZGVmIF9tYWtlX3JlcG9zaXRvcnlfYW5kX3Jlc3Vs
dChzZWxmLCBzaGFyZWQ9RmFsc2UsIGZvcm1hdD1Ob25lKToKKyAgICAgICAgIiIiQ29udmVuaWVu
Y2UgZnVuY3Rpb24gdG8gc2V0dXAgYSByZXBvc2l0b3J5LgorCisgICAgICAgIDpyZXN1bHQ6IFRo
ZSBTbWFydFNlcnZlclJlc3BvbnNlIHRvIGV4cGVjdCB3aGVuIG9wZW5pbmcgaXQuCisgICAgICAg
ICIiIgorICAgICAgICByZXBvID0gc2VsZi5tYWtlX3JlcG9zaXRvcnkoJy4nLCBzaGFyZWQ9c2hh
cmVkLCBmb3JtYXQ9Zm9ybWF0KQorICAgICAgICBpZiByZXBvLnN1cHBvcnRzX3JpY2hfcm9vdCgp
OgorICAgICAgICAgICAgcmljaF9yb290ID0gJ3llcycKKyAgICAgICAgZWxzZToKKyAgICAgICAg
ICAgIHJpY2hfcm9vdCA9ICdubycKKyAgICAgICAgaWYgcmVwby5fZm9ybWF0LnN1cHBvcnRzX3Ry
ZWVfcmVmZXJlbmNlOgorICAgICAgICAgICAgc3VidHJlZXMgPSAneWVzJworICAgICAgICBlbHNl
OgorICAgICAgICAgICAgc3VidHJlZXMgPSAnbm8nCisgICAgICAgIHJldHVybiBTbWFydFNlcnZl
clJlc3BvbnNlKCgnb2snLCAnJywgcmljaF9yb290LCBzdWJ0cmVlcykpCisKKyAgICBkZWYgdGVz
dF9zaGFyZWRfcmVwb3NpdG9yeShzZWxmKToKKyAgICAgICAgIiIiV2hlbiB0aGVyZSBpcyBhIHNo
YXJlZCByZXBvc2l0b3J5LCB3ZSBnZXQgJ29rJywgJ3JlbHBhdGgtdG8tcmVwbycuIiIiCisgICAg
ICAgIGJhY2tpbmcgPSBzZWxmLmdldF90cmFuc3BvcnQoKQorICAgICAgICByZXF1ZXN0ID0gc21h
cnQuYnpyZGlyLlNtYXJ0U2VydmVyUmVxdWVzdEZpbmRSZXBvc2l0b3J5KGJhY2tpbmcpCisgICAg
ICAgIHJlc3VsdCA9IHNlbGYuX21ha2VfcmVwb3NpdG9yeV9hbmRfcmVzdWx0KHNoYXJlZD1UcnVl
KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3VsdCwgcmVxdWVzdC5leGVjdXRlKGJhY2tp
bmcubG9jYWxfYWJzcGF0aCgnJykpKQorICAgICAgICBzZWxmLm1ha2VfYnpyZGlyKCdzdWJkaXIn
KQorICAgICAgICByZXN1bHQyID0gU21hcnRTZXJ2ZXJSZXNwb25zZShyZXN1bHQuYXJnc1swOjFd
ICsgKCcuLicsICkgKyByZXN1bHQuYXJnc1syOl0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
cmVzdWx0MiwKKyAgICAgICAgICAgIHJlcXVlc3QuZXhlY3V0ZShiYWNraW5nLmxvY2FsX2Fic3Bh
dGgoJ3N1YmRpcicpKSkKKyAgICAgICAgc2VsZi5tYWtlX2J6cmRpcignc3ViZGlyL2RlZXBlcicp
CisgICAgICAgIHJlc3VsdDMgPSBTbWFydFNlcnZlclJlc3BvbnNlKHJlc3VsdC5hcmdzWzA6MV0g
KyAoJy4uLy4uJywgKSArIHJlc3VsdC5hcmdzWzI6XSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bChyZXN1bHQzLAorICAgICAgICAgICAgcmVxdWVzdC5leGVjdXRlKGJhY2tpbmcubG9jYWxfYWJz
cGF0aCgnc3ViZGlyL2RlZXBlcicpKSkKKworICAgIGRlZiB0ZXN0X3JpY2hfcm9vdF9hbmRfc3Vi
dHJlZV9lbmNvZGluZyhzZWxmKToKKyAgICAgICAgIiIiVGVzdCBmb3IgdGhlIGZvcm1hdCBhdHRy
aWJ1dGVzIGZvciByaWNoIHJvb3QgYW5kIHN1YnRyZWUgc3VwcG9ydC4iIiIKKyAgICAgICAgYmFj
a2luZyA9IHNlbGYuZ2V0X3RyYW5zcG9ydCgpCisgICAgICAgIHJlcXVlc3QgPSBzbWFydC5ienJk
aXIuU21hcnRTZXJ2ZXJSZXF1ZXN0RmluZFJlcG9zaXRvcnkoYmFja2luZykKKyAgICAgICAgcmVz
dWx0ID0gc2VsZi5fbWFrZV9yZXBvc2l0b3J5X2FuZF9yZXN1bHQoZm9ybWF0PSdkaXJzdGF0ZS13
aXRoLXN1YnRyZWUnKQorICAgICAgICAjIGNoZWNrIHRoZSB0ZXN0IHdpbGwgYmUgdmFsaWQKKyAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbCgneWVzJywgcmVzdWx0LmFyZ3NbMl0pCisgICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwoJ3llcycsIHJlc3VsdC5hcmdzWzNdKQorICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKHJlc3VsdCwgcmVxdWVzdC5leGVjdXRlKGJhY2tpbmcubG9jYWxfYWJzcGF0aCgnJykp
KQorCisKK2NsYXNzIFRlc3RTbWFydFNlcnZlclJlcXVlc3RJbml0aWFsaXplQnpyRGlyKHRlc3Rz
LlRlc3RDYXNlV2l0aFRyYW5zcG9ydCk6CisKKyAgICBkZWYgdGVzdF9lbXB0eV9kaXIoc2VsZik6
CisgICAgICAgICIiIkluaXRpYWxpemluZyBhbiBlbXB0eSBkaXIgc2hvdWxkIHN1Y2NlZWQgYW5k
IGRvIGl0LiIiIgorICAgICAgICBiYWNraW5nID0gc2VsZi5nZXRfdHJhbnNwb3J0KCkKKyAgICAg
ICAgcmVxdWVzdCA9IHNtYXJ0LmJ6cmRpci5TbWFydFNlcnZlclJlcXVlc3RJbml0aWFsaXplQnpy
RGlyKGJhY2tpbmcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoU21hcnRTZXJ2ZXJSZXNwb25z
ZSgoJ29rJywgKSksCisgICAgICAgICAgICByZXF1ZXN0LmV4ZWN1dGUoYmFja2luZy5sb2NhbF9h
YnNwYXRoKCcuJykpKQorICAgICAgICBtYWRlX2RpciA9IGJ6cmRpci5CenJEaXIub3Blbl9mcm9t
X3RyYW5zcG9ydChiYWNraW5nKQorICAgICAgICAjIG5vIGJyYW5jaCwgdHJlZSBvciByZXBvc2l0
b3J5IGlzIGV4cGVjdGVkIHdpdGggdGhlIGN1cnJlbnQgCisgICAgICAgICMgZGVmYXVsdCBmb3Jt
YXJ0LgorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhlcnJvcnMuTm9Xb3JraW5nVHJlZSwgbWFk
ZV9kaXIub3Blbl93b3JraW5ndHJlZSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoZXJyb3Jz
Lk5vdEJyYW5jaEVycm9yLCBtYWRlX2Rpci5vcGVuX2JyYW5jaCkKKyAgICAgICAgc2VsZi5hc3Nl
cnRSYWlzZXMoZXJyb3JzLk5vUmVwb3NpdG9yeVByZXNlbnQsIG1hZGVfZGlyLm9wZW5fcmVwb3Np
dG9yeSkKKworICAgIGRlZiB0ZXN0X21pc3NpbmdfZGlyKHNlbGYpOgorICAgICAgICAiIiJJbml0
aWFsaXppbmcgYSBtaXNzaW5nIGRpcmVjdG9yeSBzaG91bGQgZmFpbCBsaWtlIHRoZSBienJkaXIg
YXBpLiIiIgorICAgICAgICBiYWNraW5nID0gc2VsZi5nZXRfdHJhbnNwb3J0KCkKKyAgICAgICAg
cmVxdWVzdCA9IHNtYXJ0LmJ6cmRpci5TbWFydFNlcnZlclJlcXVlc3RJbml0aWFsaXplQnpyRGly
KGJhY2tpbmcpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKGVycm9ycy5Ob1N1Y2hGaWxlLAor
ICAgICAgICAgICAgcmVxdWVzdC5leGVjdXRlLCBiYWNraW5nLmxvY2FsX2Fic3BhdGgoJ3N1YmRp
cicpKQorCisgICAgZGVmIHRlc3RfaW5pdGlhbGl6ZWRfZGlyKHNlbGYpOgorICAgICAgICAiIiJJ
bml0aWFsaXppbmcgYW4gZXh0YW50IGJ6cmRpciBzaG91bGQgZmFpbCBsaWtlIHRoZSBienJkaXIg
YXBpLiIiIgorICAgICAgICBiYWNraW5nID0gc2VsZi5nZXRfdHJhbnNwb3J0KCkKKyAgICAgICAg
cmVxdWVzdCA9IHNtYXJ0LmJ6cmRpci5TbWFydFNlcnZlclJlcXVlc3RJbml0aWFsaXplQnpyRGly
KGJhY2tpbmcpCisgICAgICAgIHNlbGYubWFrZV9ienJkaXIoJ3N1YmRpcicpCisgICAgICAgIHNl
bGYuYXNzZXJ0UmFpc2VzKGVycm9ycy5GaWxlRXhpc3RzLAorICAgICAgICAgICAgcmVxdWVzdC5l
eGVjdXRlLCBiYWNraW5nLmxvY2FsX2Fic3BhdGgoJ3N1YmRpcicpKQorCisKK2NsYXNzIFRlc3RT
bWFydFNlcnZlclJlcXVlc3RPcGVuQnJhbmNoKHRlc3RzLlRlc3RDYXNlV2l0aFRyYW5zcG9ydCk6
CisKKyAgICBkZWYgdGVzdF9ub19icmFuY2goc2VsZik6CisgICAgICAgICIiIldoZW4gdGhlcmUg
aXMgbm8gYnJhbmNoLCAoJ25vYnJhbmNoJywgKSBpcyByZXR1cm5lZC4iIiIKKyAgICAgICAgYmFj
a2luZyA9IHNlbGYuZ2V0X3RyYW5zcG9ydCgpCisgICAgICAgIHJlcXVlc3QgPSBzbWFydC5ienJk
aXIuU21hcnRTZXJ2ZXJSZXF1ZXN0T3BlbkJyYW5jaChiYWNraW5nKQorICAgICAgICBzZWxmLm1h
a2VfYnpyZGlyKCcuJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChTbWFydFNlcnZlclJlc3Bv
bnNlKCgnbm9icmFuY2gnLCApKSwKKyAgICAgICAgICAgIHJlcXVlc3QuZXhlY3V0ZShiYWNraW5n
LmxvY2FsX2Fic3BhdGgoJycpKSkKKworICAgIGRlZiB0ZXN0X2JyYW5jaChzZWxmKToKKyAgICAg
ICAgIiIiV2hlbiB0aGVyZSBpcyBhIGJyYW5jaCwgJ29rJyBpcyByZXR1cm5lZC4iIiIKKyAgICAg
ICAgYmFja2luZyA9IHNlbGYuZ2V0X3RyYW5zcG9ydCgpCisgICAgICAgIHJlcXVlc3QgPSBzbWFy
dC5ienJkaXIuU21hcnRTZXJ2ZXJSZXF1ZXN0T3BlbkJyYW5jaChiYWNraW5nKQorICAgICAgICBz
ZWxmLm1ha2VfYnJhbmNoKCcuJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChTbWFydFNlcnZl
clJlc3BvbnNlKCgnb2snLCAnJykpLAorICAgICAgICAgICAgcmVxdWVzdC5leGVjdXRlKGJhY2tp
bmcubG9jYWxfYWJzcGF0aCgnJykpKQorCisgICAgZGVmIHRlc3RfYnJhbmNoX3JlZmVyZW5jZShz
ZWxmKToKKyAgICAgICAgIiIiV2hlbiB0aGVyZSBpcyBhIGJyYW5jaCByZWZlcmVuY2UsIHRoZSBy
ZWZlcmVuY2UgVVJMIGlzIHJldHVybmVkLiIiIgorICAgICAgICBiYWNraW5nID0gc2VsZi5nZXRf
dHJhbnNwb3J0KCkKKyAgICAgICAgcmVxdWVzdCA9IHNtYXJ0LmJ6cmRpci5TbWFydFNlcnZlclJl
cXVlc3RPcGVuQnJhbmNoKGJhY2tpbmcpCisgICAgICAgIGJyYW5jaCA9IHNlbGYubWFrZV9icmFu
Y2goJ2JyYW5jaCcpCisgICAgICAgIGNoZWNrb3V0ID0gYnJhbmNoLmNyZWF0ZV9jaGVja291dCgn
cmVmZXJlbmNlJyxsaWdodHdlaWdodD1UcnVlKQorICAgICAgICAjIFRPRE86IG9uY2Ugd2UgaGF2
ZSBhbiBBUEkgdG8gcHJvYmUgZm9yIHJlZmVyZW5jZXMgb2YgYW55IHNvcnQsIHdlCisgICAgICAg
ICMgY2FuIHVzZSBpdCBoZXJlLgorICAgICAgICByZWZlcmVuY2VfdXJsID0gYmFja2luZy5hYnNw
YXRoKCdicmFuY2gnKSArICcvJworICAgICAgICBzZWxmLmFzc2VydEZpbGVFcXVhbChyZWZlcmVu
Y2VfdXJsLCAncmVmZXJlbmNlLy5ienIvYnJhbmNoL2xvY2F0aW9uJykKKyAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbChTbWFydFNlcnZlclJlc3BvbnNlKCgnb2snLCByZWZlcmVuY2VfdXJsKSksCisg
ICAgICAgICAgICByZXF1ZXN0LmV4ZWN1dGUoYmFja2luZy5sb2NhbF9hYnNwYXRoKCdyZWZlcmVu
Y2UnKSkpCisKKworY2xhc3MgVGVzdFNtYXJ0U2VydmVyUmVxdWVzdFJldmlzaW9uSGlzdG9yeSh0
ZXN0cy5UZXN0Q2FzZVdpdGhUcmFuc3BvcnQpOgorCisgICAgZGVmIHRlc3RfZW1wdHkoc2VsZik6
CisgICAgICAgICIiIkZvciBhbiBlbXB0eSBicmFuY2gsIHRoZSBib2R5IGlzIGVtcHR5LiIiIgor
ICAgICAgICBiYWNraW5nID0gc2VsZi5nZXRfdHJhbnNwb3J0KCkKKyAgICAgICAgcmVxdWVzdCA9
IHNtYXJ0LmJyYW5jaC5TbWFydFNlcnZlclJlcXVlc3RSZXZpc2lvbkhpc3RvcnkoYmFja2luZykK
KyAgICAgICAgc2VsZi5tYWtlX2JyYW5jaCgnLicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
U21hcnRTZXJ2ZXJSZXNwb25zZSgoJ29rJywgKSwgJycpLAorICAgICAgICAgICAgcmVxdWVzdC5l
eGVjdXRlKGJhY2tpbmcubG9jYWxfYWJzcGF0aCgnJykpKQorCisgICAgZGVmIHRlc3Rfbm90X2Vt
cHR5KHNlbGYpOgorICAgICAgICAiIiJGb3IgYSBub24tZW1wdHkgYnJhbmNoLCB0aGUgYm9keSBp
cyBlbXB0eS4iIiIKKyAgICAgICAgYmFja2luZyA9IHNlbGYuZ2V0X3RyYW5zcG9ydCgpCisgICAg
ICAgIHJlcXVlc3QgPSBzbWFydC5icmFuY2guU21hcnRTZXJ2ZXJSZXF1ZXN0UmV2aXNpb25IaXN0
b3J5KGJhY2tpbmcpCisgICAgICAgIHRyZWUgPSBzZWxmLm1ha2VfYnJhbmNoX2FuZF9tZW1vcnlf
dHJlZSgnLicpCisgICAgICAgIHRyZWUubG9ja193cml0ZSgpCisgICAgICAgIHRyZWUuYWRkKCcn
KQorICAgICAgICByMSA9IHRyZWUuY29tbWl0KCcxc3QgY29tbWl0JykKKyAgICAgICAgcjIgPSB0
cmVlLmNvbW1pdCgnMm5kIGNvbW1pdCcsIHJldl9pZD11J1x4YzgnLmVuY29kZSgndXRmLTgnKSkK
KyAgICAgICAgdHJlZS51bmxvY2soKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAg
ICAgICAgU21hcnRTZXJ2ZXJSZXNwb25zZSgoJ29rJywgKSwgKCdceDAwJy5qb2luKFtyMSwgcjJd
KSkpLAorICAgICAgICAgICAgcmVxdWVzdC5leGVjdXRlKGJhY2tpbmcubG9jYWxfYWJzcGF0aCgn
JykpKQorCisKK2NsYXNzIFRlc3RTbWFydFNlcnZlckJyYW5jaFJlcXVlc3QodGVzdHMuVGVzdENh
c2VXaXRoVHJhbnNwb3J0KToKKworICAgIGRlZiB0ZXN0X25vX2JyYW5jaChzZWxmKToKKyAgICAg
ICAgIiIiV2hlbiB0aGVyZSBpcyBhIGJ6cmRpciBhbmQgbm8gYnJhbmNoLCBOb3RCcmFuY2hFcnJv
ciBpcyByYWlzZWQuIiIiCisgICAgICAgIGJhY2tpbmcgPSBzZWxmLmdldF90cmFuc3BvcnQoKQor
ICAgICAgICByZXF1ZXN0ID0gc21hcnQuYnJhbmNoLlNtYXJ0U2VydmVyQnJhbmNoUmVxdWVzdChi
YWNraW5nKQorICAgICAgICBzZWxmLm1ha2VfYnpyZGlyKCcuJykKKyAgICAgICAgc2VsZi5hc3Nl
cnRSYWlzZXMoZXJyb3JzLk5vdEJyYW5jaEVycm9yLAorICAgICAgICAgICAgcmVxdWVzdC5leGVj
dXRlLCBiYWNraW5nLmxvY2FsX2Fic3BhdGgoJycpKQorCisgICAgZGVmIHRlc3RfYnJhbmNoX3Jl
ZmVyZW5jZShzZWxmKToKKyAgICAgICAgIiIiV2hlbiB0aGVyZSBpcyBhIGJyYW5jaCByZWZlcmVu
Y2UsIE5vdEJyYW5jaEVycm9yIGlzIHJhaXNlZC4iIiIKKyAgICAgICAgYmFja2luZyA9IHNlbGYu
Z2V0X3RyYW5zcG9ydCgpCisgICAgICAgIHJlcXVlc3QgPSBzbWFydC5icmFuY2guU21hcnRTZXJ2
ZXJCcmFuY2hSZXF1ZXN0KGJhY2tpbmcpCisgICAgICAgIGJyYW5jaCA9IHNlbGYubWFrZV9icmFu
Y2goJ2JyYW5jaCcpCisgICAgICAgIGNoZWNrb3V0ID0gYnJhbmNoLmNyZWF0ZV9jaGVja291dCgn
cmVmZXJlbmNlJyxsaWdodHdlaWdodD1UcnVlKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhl
cnJvcnMuTm90QnJhbmNoRXJyb3IsCisgICAgICAgICAgICByZXF1ZXN0LmV4ZWN1dGUsIGJhY2tp
bmcubG9jYWxfYWJzcGF0aCgnY2hlY2tvdXQnKSkKKworCitjbGFzcyBUZXN0U21hcnRTZXJ2ZXJC
cmFuY2hSZXF1ZXN0TGFzdFJldmlzaW9uSW5mbyh0ZXN0cy5UZXN0Q2FzZVdpdGhUcmFuc3BvcnQp
OgorCisgICAgZGVmIHRlc3RfZW1wdHkoc2VsZik6CisgICAgICAgICIiIkZvciBhbiBlbXB0eSBi
cmFuY2gsIHRoZSByZXN1bHQgaXMgKCdvaycsICcwJywgJ251bGw6JykuIiIiCisgICAgICAgIGJh
Y2tpbmcgPSBzZWxmLmdldF90cmFuc3BvcnQoKQorICAgICAgICByZXF1ZXN0ID0gc21hcnQuYnJh
bmNoLlNtYXJ0U2VydmVyQnJhbmNoUmVxdWVzdExhc3RSZXZpc2lvbkluZm8oYmFja2luZykKKyAg
ICAgICAgc2VsZi5tYWtlX2JyYW5jaCgnLicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoU21h
cnRTZXJ2ZXJSZXNwb25zZSgoJ29rJywgJzAnLCAnbnVsbDonKSksCisgICAgICAgICAgICByZXF1
ZXN0LmV4ZWN1dGUoYmFja2luZy5sb2NhbF9hYnNwYXRoKCcnKSkpCisKKyAgICBkZWYgdGVzdF9u
b3RfZW1wdHkoc2VsZik6CisgICAgICAgICIiIkZvciBhIG5vbi1lbXB0eSBicmFuY2gsIHRoZSBy
ZXN1bHQgaXMgKCdvaycsICdyZXZubycsICdyZXZpZCcpLiIiIgorICAgICAgICBiYWNraW5nID0g
c2VsZi5nZXRfdHJhbnNwb3J0KCkKKyAgICAgICAgcmVxdWVzdCA9IHNtYXJ0LmJyYW5jaC5TbWFy
dFNlcnZlckJyYW5jaFJlcXVlc3RMYXN0UmV2aXNpb25JbmZvKGJhY2tpbmcpCisgICAgICAgIHRy
ZWUgPSBzZWxmLm1ha2VfYnJhbmNoX2FuZF9tZW1vcnlfdHJlZSgnLicpCisgICAgICAgIHRyZWUu
bG9ja193cml0ZSgpCisgICAgICAgIHRyZWUuYWRkKCcnKQorICAgICAgICByZXZfaWRfdXRmOCA9
IHUnXHhjOCcuZW5jb2RlKCd1dGYtOCcpCisgICAgICAgIHIxID0gdHJlZS5jb21taXQoJzFzdCBj
b21taXQnKQorICAgICAgICByMiA9IHRyZWUuY29tbWl0KCcybmQgY29tbWl0JywgcmV2X2lkPXJl
dl9pZF91dGY4KQorICAgICAgICB0cmVlLnVubG9jaygpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwoCisgICAgICAgICAgICBTbWFydFNlcnZlclJlc3BvbnNlKCgnb2snLCAnMicsIHJldl9pZF91
dGY4KSksCisgICAgICAgICAgICByZXF1ZXN0LmV4ZWN1dGUoYmFja2luZy5sb2NhbF9hYnNwYXRo
KCcnKSkpCisKKworY2xhc3MgVGVzdFNtYXJ0U2VydmVyQnJhbmNoUmVxdWVzdEdldENvbmZpZ0Zp
bGUodGVzdHMuVGVzdENhc2VXaXRoVHJhbnNwb3J0KToKKworICAgIGRlZiB0ZXN0X2RlZmF1bHQo
c2VsZik6CisgICAgICAgICIiIldpdGggbm8gZmlsZSwgd2UgZ2V0IGVtcHR5IGNvbnRlbnQuIiIi
CisgICAgICAgIGJhY2tpbmcgPSBzZWxmLmdldF90cmFuc3BvcnQoKQorICAgICAgICByZXF1ZXN0
ID0gc21hcnQuYnJhbmNoLlNtYXJ0U2VydmVyQnJhbmNoR2V0Q29uZmlnRmlsZShiYWNraW5nKQor
ICAgICAgICBicmFuY2ggPSBzZWxmLm1ha2VfYnJhbmNoKCcuJykKKyAgICAgICAgIyB0aGVyZSBz
aG91bGQgYmUgbm8gZmlsZSBieSBkZWZhdWx0CisgICAgICAgIGNvbnRlbnQgPSAnJworICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKFNtYXJ0U2VydmVyUmVzcG9uc2UoKCdvaycsICksIGNvbnRlbnQp
LAorICAgICAgICAgICAgcmVxdWVzdC5leGVjdXRlKGJhY2tpbmcubG9jYWxfYWJzcGF0aCgnJykp
KQorCisgICAgZGVmIHRlc3Rfd2l0aF9jb250ZW50KHNlbGYpOgorICAgICAgICAjIFNtYXJ0U2Vy
dmVyQnJhbmNoR2V0Q29uZmlnRmlsZSBzaG91bGQgcmV0dXJuIHRoZSBjb250ZW50IGZyb20KKyAg
ICAgICAgIyBicmFuY2guY29udHJvbF9maWxlcy5nZXQoJ2JyYW5jaC5jb25mJykgZm9yIG5vdyAt
IGluIHRoZSBmdXR1cmUgaXQgbWF5CisgICAgICAgICMgcGVyZm9ybSBtb3JlIGNvbXBsZXggcHJv
Y2Vzc2luZy4gCisgICAgICAgIGJhY2tpbmcgPSBzZWxmLmdldF90cmFuc3BvcnQoKQorICAgICAg
ICByZXF1ZXN0ID0gc21hcnQuYnJhbmNoLlNtYXJ0U2VydmVyQnJhbmNoR2V0Q29uZmlnRmlsZShi
YWNraW5nKQorICAgICAgICBicmFuY2ggPSBzZWxmLm1ha2VfYnJhbmNoKCcuJykKKyAgICAgICAg
YnJhbmNoLmNvbnRyb2xfZmlsZXMucHV0X3V0ZjgoJ2JyYW5jaC5jb25mJywgJ2ZvbyBiYXIgYmF6
JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChTbWFydFNlcnZlclJlc3BvbnNlKCgnb2snLCAp
LCAnZm9vIGJhciBiYXonKSwKKyAgICAgICAgICAgIHJlcXVlc3QuZXhlY3V0ZShiYWNraW5nLmxv
Y2FsX2Fic3BhdGgoJycpKSkKKworCitjbGFzcyBUZXN0U21hcnRTZXJ2ZXJCcmFuY2hSZXF1ZXN0
U2V0TGFzdFJldmlzaW9uKHRlc3RzLlRlc3RDYXNlV2l0aFRyYW5zcG9ydCk6CisKKyAgICBkZWYg
dGVzdF9lbXB0eShzZWxmKToKKyAgICAgICAgYmFja2luZyA9IHNlbGYuZ2V0X3RyYW5zcG9ydCgp
CisgICAgICAgIHJlcXVlc3QgPSBzbWFydC5icmFuY2guU21hcnRTZXJ2ZXJCcmFuY2hSZXF1ZXN0
U2V0TGFzdFJldmlzaW9uKGJhY2tpbmcpCisgICAgICAgIGIgPSBzZWxmLm1ha2VfYnJhbmNoKCcu
JykKKyAgICAgICAgYnJhbmNoX3Rva2VuID0gYi5sb2NrX3dyaXRlKCkKKyAgICAgICAgcmVwb190
b2tlbiA9IGIucmVwb3NpdG9yeS5sb2NrX3dyaXRlKCkKKyAgICAgICAgYi5yZXBvc2l0b3J5LnVu
bG9jaygpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoU21hcnRT
ZXJ2ZXJSZXNwb25zZSgoJ29rJywpKSwKKyAgICAgICAgICAgICAgICByZXF1ZXN0LmV4ZWN1dGUo
CisgICAgICAgICAgICAgICAgICAgIGJhY2tpbmcubG9jYWxfYWJzcGF0aCgnJyksIGJyYW5jaF90
b2tlbiwgcmVwb190b2tlbiwKKyAgICAgICAgICAgICAgICAgICAgJ251bGw6JykpCisgICAgICAg
IGZpbmFsbHk6CisgICAgICAgICAgICBiLnVubG9jaygpCisKKyAgICBkZWYgdGVzdF9ub3RfcHJl
c2VudF9yZXZpc2lvbl9pZChzZWxmKToKKyAgICAgICAgYmFja2luZyA9IHNlbGYuZ2V0X3RyYW5z
cG9ydCgpCisgICAgICAgIHJlcXVlc3QgPSBzbWFydC5icmFuY2guU21hcnRTZXJ2ZXJCcmFuY2hS
ZXF1ZXN0U2V0TGFzdFJldmlzaW9uKGJhY2tpbmcpCisgICAgICAgIGIgPSBzZWxmLm1ha2VfYnJh
bmNoKCcuJykKKyAgICAgICAgYnJhbmNoX3Rva2VuID0gYi5sb2NrX3dyaXRlKCkKKyAgICAgICAg
cmVwb190b2tlbiA9IGIucmVwb3NpdG9yeS5sb2NrX3dyaXRlKCkKKyAgICAgICAgYi5yZXBvc2l0
b3J5LnVubG9jaygpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHJldmlzaW9uX2lkID0gJ25v
bi1leGlzdGVudCByZXZpc2lvbicKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAg
ICAgICAgICAgICAgU21hcnRTZXJ2ZXJSZXNwb25zZSgoJ05vU3VjaFJldmlzaW9uJywgcmV2aXNp
b25faWQpKSwKKyAgICAgICAgICAgICAgICByZXF1ZXN0LmV4ZWN1dGUoCisgICAgICAgICAgICAg
ICAgICAgIGJhY2tpbmcubG9jYWxfYWJzcGF0aCgnJyksIGJyYW5jaF90b2tlbiwgcmVwb190b2tl
biwKKyAgICAgICAgICAgICAgICAgICAgcmV2aXNpb25faWQpKQorICAgICAgICBmaW5hbGx5Ogor
ICAgICAgICAgICAgYi51bmxvY2soKQorCisgICAgZGVmIHRlc3RfcmV2aXNpb25faWRfcHJlc2Vu
dChzZWxmKToKKyAgICAgICAgYmFja2luZyA9IHNlbGYuZ2V0X3RyYW5zcG9ydCgpCisgICAgICAg
IHJlcXVlc3QgPSBzbWFydC5icmFuY2guU21hcnRTZXJ2ZXJCcmFuY2hSZXF1ZXN0U2V0TGFzdFJl
dmlzaW9uKGJhY2tpbmcpCisgICAgICAgIHRyZWUgPSBzZWxmLm1ha2VfYnJhbmNoX2FuZF9tZW1v
cnlfdHJlZSgnLicpCisgICAgICAgIHRyZWUubG9ja193cml0ZSgpCisgICAgICAgIHRyZWUuYWRk
KCcnKQorICAgICAgICByZXZfaWRfdXRmOCA9IHUnXHhjOCcuZW5jb2RlKCd1dGYtOCcpCisgICAg
ICAgIHIxID0gdHJlZS5jb21taXQoJzFzdCBjb21taXQnLCByZXZfaWQ9cmV2X2lkX3V0ZjgpCisg
ICAgICAgIHIyID0gdHJlZS5jb21taXQoJzJuZCBjb21taXQnKQorICAgICAgICB0cmVlLnVubG9j
aygpCisgICAgICAgIGJyYW5jaF90b2tlbiA9IHRyZWUuYnJhbmNoLmxvY2tfd3JpdGUoKQorICAg
ICAgICByZXBvX3Rva2VuID0gdHJlZS5icmFuY2gucmVwb3NpdG9yeS5sb2NrX3dyaXRlKCkKKyAg
ICAgICAgdHJlZS5icmFuY2gucmVwb3NpdG9yeS51bmxvY2soKQorICAgICAgICB0cnk6CisgICAg
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgICAgIFNtYXJ0U2VydmVyUmVz
cG9uc2UoKCdvaycsKSksCisgICAgICAgICAgICAgICAgcmVxdWVzdC5leGVjdXRlKAorICAgICAg
ICAgICAgICAgICAgICBiYWNraW5nLmxvY2FsX2Fic3BhdGgoJycpLCBicmFuY2hfdG9rZW4sIHJl
cG9fdG9rZW4sCisgICAgICAgICAgICAgICAgICAgIHJldl9pZF91dGY4KSkKKyAgICAgICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwoW3Jldl9pZF91dGY4XSwgdHJlZS5icmFuY2gucmV2aXNpb25faGlz
dG9yeSgpKQorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgdHJlZS5icmFuY2gudW5sb2Nr
KCkKKworICAgIGRlZiB0ZXN0X3JldmlzaW9uX2lkX3ByZXNlbnQyKHNlbGYpOgorICAgICAgICBi
YWNraW5nID0gc2VsZi5nZXRfdHJhbnNwb3J0KCkKKyAgICAgICAgcmVxdWVzdCA9IHNtYXJ0LmJy
YW5jaC5TbWFydFNlcnZlckJyYW5jaFJlcXVlc3RTZXRMYXN0UmV2aXNpb24oYmFja2luZykKKyAg
ICAgICAgdHJlZSA9IHNlbGYubWFrZV9icmFuY2hfYW5kX21lbW9yeV90cmVlKCcuJykKKyAgICAg
ICAgdHJlZS5sb2NrX3dyaXRlKCkKKyAgICAgICAgdHJlZS5hZGQoJycpCisgICAgICAgIHJldl9p
ZF91dGY4ID0gdSdceGM4Jy5lbmNvZGUoJ3V0Zi04JykKKyAgICAgICAgcjEgPSB0cmVlLmNvbW1p
dCgnMXN0IGNvbW1pdCcsIHJldl9pZD1yZXZfaWRfdXRmOCkKKyAgICAgICAgcjIgPSB0cmVlLmNv
bW1pdCgnMm5kIGNvbW1pdCcpCisgICAgICAgIHRyZWUudW5sb2NrKCkKKyAgICAgICAgdHJlZS5i
cmFuY2guc2V0X3JldmlzaW9uX2hpc3RvcnkoW10pCisgICAgICAgIGJyYW5jaF90b2tlbiA9IHRy
ZWUuYnJhbmNoLmxvY2tfd3JpdGUoKQorICAgICAgICByZXBvX3Rva2VuID0gdHJlZS5icmFuY2gu
cmVwb3NpdG9yeS5sb2NrX3dyaXRlKCkKKyAgICAgICAgdHJlZS5icmFuY2gucmVwb3NpdG9yeS51
bmxvY2soKQorICAgICAgICB0cnk6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAg
ICAgICAgICAgICAgIFNtYXJ0U2VydmVyUmVzcG9uc2UoKCdvaycsKSksCisgICAgICAgICAgICAg
ICAgcmVxdWVzdC5leGVjdXRlKAorICAgICAgICAgICAgICAgICAgICBiYWNraW5nLmxvY2FsX2Fi
c3BhdGgoJycpLCBicmFuY2hfdG9rZW4sIHJlcG9fdG9rZW4sCisgICAgICAgICAgICAgICAgICAg
IHJldl9pZF91dGY4KSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoW3Jldl9pZF91dGY4
XSwgdHJlZS5icmFuY2gucmV2aXNpb25faGlzdG9yeSgpKQorICAgICAgICBmaW5hbGx5OgorICAg
ICAgICAgICAgdHJlZS5icmFuY2gudW5sb2NrKCkKKworCitjbGFzcyBUZXN0U21hcnRTZXJ2ZXJC
cmFuY2hSZXF1ZXN0TG9ja1dyaXRlKHRlc3RzLlRlc3RDYXNlV2l0aFRyYW5zcG9ydCk6CisKKyAg
ICBkZWYgc2V0VXAoc2VsZik6CisgICAgICAgIHRlc3RzLlRlc3RDYXNlV2l0aFRyYW5zcG9ydC5z
ZXRVcChzZWxmKQorICAgICAgICBzZWxmLnJlZHVjZUxvY2tkaXJUaW1lb3V0KCkKKworICAgIGRl
ZiB0ZXN0X2xvY2tfd3JpdGVfb25fdW5sb2NrZWRfYnJhbmNoKHNlbGYpOgorICAgICAgICBiYWNr
aW5nID0gc2VsZi5nZXRfdHJhbnNwb3J0KCkKKyAgICAgICAgcmVxdWVzdCA9IHNtYXJ0LmJyYW5j
aC5TbWFydFNlcnZlckJyYW5jaFJlcXVlc3RMb2NrV3JpdGUoYmFja2luZykKKyAgICAgICAgYnJh
bmNoID0gc2VsZi5tYWtlX2JyYW5jaCgnLicpCisgICAgICAgIHJlcG9zaXRvcnkgPSBicmFuY2gu
cmVwb3NpdG9yeQorICAgICAgICByZXNwb25zZSA9IHJlcXVlc3QuZXhlY3V0ZShiYWNraW5nLmxv
Y2FsX2Fic3BhdGgoJycpKQorICAgICAgICBicmFuY2hfbm9uY2UgPSBicmFuY2guY29udHJvbF9m
aWxlcy5fbG9jay5wZWVrKCkuZ2V0KCdub25jZScpCisgICAgICAgIHJlcG9zaXRvcnlfbm9uY2Ug
PSByZXBvc2l0b3J5LmNvbnRyb2xfZmlsZXMuX2xvY2sucGVlaygpLmdldCgnbm9uY2UnKQorICAg
ICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgU21hcnRTZXJ2ZXJSZXNwb25zZSgo
J29rJywgYnJhbmNoX25vbmNlLCByZXBvc2l0b3J5X25vbmNlKSksCisgICAgICAgICAgICByZXNw
b25zZSkKKyAgICAgICAgIyBUaGUgYnJhbmNoIChhbmQgYXNzb2NpYXRlZCByZXBvc2l0b3J5KSBp
cyBub3cgbG9ja2VkLiAgVmVyaWZ5IHRoYXQKKyAgICAgICAgIyB3aXRoIGEgbmV3IGJyYW5jaCBv
YmplY3QuCisgICAgICAgIG5ld19icmFuY2ggPSByZXBvc2l0b3J5LmJ6cmRpci5vcGVuX2JyYW5j
aCgpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKGVycm9ycy5Mb2NrQ29udGVudGlvbiwgbmV3
X2JyYW5jaC5sb2NrX3dyaXRlKQorCisgICAgZGVmIHRlc3RfbG9ja193cml0ZV9vbl9sb2NrZWRf
YnJhbmNoKHNlbGYpOgorICAgICAgICBiYWNraW5nID0gc2VsZi5nZXRfdHJhbnNwb3J0KCkKKyAg
ICAgICAgcmVxdWVzdCA9IHNtYXJ0LmJyYW5jaC5TbWFydFNlcnZlckJyYW5jaFJlcXVlc3RMb2Nr
V3JpdGUoYmFja2luZykKKyAgICAgICAgYnJhbmNoID0gc2VsZi5tYWtlX2JyYW5jaCgnLicpCisg
ICAgICAgIGJyYW5jaC5sb2NrX3dyaXRlKCkKKyAgICAgICAgYnJhbmNoLmxlYXZlX2xvY2tfaW5f
cGxhY2UoKQorICAgICAgICBicmFuY2gudW5sb2NrKCkKKyAgICAgICAgcmVzcG9uc2UgPSByZXF1
ZXN0LmV4ZWN1dGUoYmFja2luZy5sb2NhbF9hYnNwYXRoKCcnKSkKKyAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbCgKKyAgICAgICAgICAgIFNtYXJ0U2VydmVyUmVzcG9uc2UoKCdMb2NrQ29udGVudGlv
bicsKSksIHJlc3BvbnNlKQorCisgICAgZGVmIHRlc3RfbG9ja193cml0ZV93aXRoX3Rva2Vuc19v
bl9sb2NrZWRfYnJhbmNoKHNlbGYpOgorICAgICAgICBiYWNraW5nID0gc2VsZi5nZXRfdHJhbnNw
b3J0KCkKKyAgICAgICAgcmVxdWVzdCA9IHNtYXJ0LmJyYW5jaC5TbWFydFNlcnZlckJyYW5jaFJl
cXVlc3RMb2NrV3JpdGUoYmFja2luZykKKyAgICAgICAgYnJhbmNoID0gc2VsZi5tYWtlX2JyYW5j
aCgnLicpCisgICAgICAgIGJyYW5jaF90b2tlbiA9IGJyYW5jaC5sb2NrX3dyaXRlKCkKKyAgICAg
ICAgcmVwb190b2tlbiA9IGJyYW5jaC5yZXBvc2l0b3J5LmxvY2tfd3JpdGUoKQorICAgICAgICBi
cmFuY2gucmVwb3NpdG9yeS51bmxvY2soKQorICAgICAgICBicmFuY2gubGVhdmVfbG9ja19pbl9w
bGFjZSgpCisgICAgICAgIGJyYW5jaC5yZXBvc2l0b3J5LmxlYXZlX2xvY2tfaW5fcGxhY2UoKQor
ICAgICAgICBicmFuY2gudW5sb2NrKCkKKyAgICAgICAgcmVzcG9uc2UgPSByZXF1ZXN0LmV4ZWN1
dGUoYmFja2luZy5sb2NhbF9hYnNwYXRoKCcnKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgYnJhbmNoX3Rva2VuLCByZXBvX3Rva2VuKQorICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKAorICAgICAgICAgICAgU21hcnRTZXJ2ZXJSZXNwb25zZSgoJ29rJywgYnJhbmNoX3Rva2Vu
LCByZXBvX3Rva2VuKSksIHJlc3BvbnNlKQorCisgICAgZGVmIHRlc3RfbG9ja193cml0ZV93aXRo
X21pc21hdGNoZWRfdG9rZW5zX29uX2xvY2tlZF9icmFuY2goc2VsZik6CisgICAgICAgIGJhY2tp
bmcgPSBzZWxmLmdldF90cmFuc3BvcnQoKQorICAgICAgICByZXF1ZXN0ID0gc21hcnQuYnJhbmNo
LlNtYXJ0U2VydmVyQnJhbmNoUmVxdWVzdExvY2tXcml0ZShiYWNraW5nKQorICAgICAgICBicmFu
Y2ggPSBzZWxmLm1ha2VfYnJhbmNoKCcuJykKKyAgICAgICAgYnJhbmNoX3Rva2VuID0gYnJhbmNo
LmxvY2tfd3JpdGUoKQorICAgICAgICByZXBvX3Rva2VuID0gYnJhbmNoLnJlcG9zaXRvcnkubG9j
a193cml0ZSgpCisgICAgICAgIGJyYW5jaC5yZXBvc2l0b3J5LnVubG9jaygpCisgICAgICAgIGJy
YW5jaC5sZWF2ZV9sb2NrX2luX3BsYWNlKCkKKyAgICAgICAgYnJhbmNoLnJlcG9zaXRvcnkubGVh
dmVfbG9ja19pbl9wbGFjZSgpCisgICAgICAgIGJyYW5jaC51bmxvY2soKQorICAgICAgICByZXNw
b25zZSA9IHJlcXVlc3QuZXhlY3V0ZShiYWNraW5nLmxvY2FsX2Fic3BhdGgoJycpLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmFuY2hfdG9rZW4rJ3h4eCcsIHJlcG9fdG9r
ZW4pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBTbWFydFNlcnZlclJl
c3BvbnNlKCgnVG9rZW5NaXNtYXRjaCcsKSksIHJlc3BvbnNlKQorCisgICAgZGVmIHRlc3RfbG9j
a193cml0ZV9vbl9sb2NrZWRfcmVwbyhzZWxmKToKKyAgICAgICAgYmFja2luZyA9IHNlbGYuZ2V0
X3RyYW5zcG9ydCgpCisgICAgICAgIHJlcXVlc3QgPSBzbWFydC5icmFuY2guU21hcnRTZXJ2ZXJC
cmFuY2hSZXF1ZXN0TG9ja1dyaXRlKGJhY2tpbmcpCisgICAgICAgIGJyYW5jaCA9IHNlbGYubWFr
ZV9icmFuY2goJy4nKQorICAgICAgICBicmFuY2gucmVwb3NpdG9yeS5sb2NrX3dyaXRlKCkKKyAg
ICAgICAgYnJhbmNoLnJlcG9zaXRvcnkubGVhdmVfbG9ja19pbl9wbGFjZSgpCisgICAgICAgIGJy
YW5jaC5yZXBvc2l0b3J5LnVubG9jaygpCisgICAgICAgIHJlc3BvbnNlID0gcmVxdWVzdC5leGVj
dXRlKGJhY2tpbmcubG9jYWxfYWJzcGF0aCgnJykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
CisgICAgICAgICAgICBTbWFydFNlcnZlclJlc3BvbnNlKCgnTG9ja0NvbnRlbnRpb24nLCkpLCBy
ZXNwb25zZSkKKworICAgIGRlZiB0ZXN0X2xvY2tfd3JpdGVfb25fcmVhZG9ubHlfdHJhbnNwb3J0
KHNlbGYpOgorICAgICAgICBiYWNraW5nID0gc2VsZi5nZXRfcmVhZG9ubHlfdHJhbnNwb3J0KCkK
KyAgICAgICAgcmVxdWVzdCA9IHNtYXJ0LmJyYW5jaC5TbWFydFNlcnZlckJyYW5jaFJlcXVlc3RM
b2NrV3JpdGUoYmFja2luZykKKyAgICAgICAgYnJhbmNoID0gc2VsZi5tYWtlX2JyYW5jaCgnLicp
CisgICAgICAgIHJlc3BvbnNlID0gcmVxdWVzdC5leGVjdXRlKCcnKQorICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKAorICAgICAgICAgICAgU21hcnRTZXJ2ZXJSZXNwb25zZSgoJ1VubG9ja2FibGVU
cmFuc3BvcnQnLCkpLCByZXNwb25zZSkKKworCitjbGFzcyBUZXN0U21hcnRTZXJ2ZXJCcmFuY2hS
ZXF1ZXN0VW5sb2NrKHRlc3RzLlRlc3RDYXNlV2l0aFRyYW5zcG9ydCk6CisKKyAgICBkZWYgc2V0
VXAoc2VsZik6CisgICAgICAgIHRlc3RzLlRlc3RDYXNlV2l0aFRyYW5zcG9ydC5zZXRVcChzZWxm
KQorICAgICAgICBzZWxmLnJlZHVjZUxvY2tkaXJUaW1lb3V0KCkKKworICAgIGRlZiB0ZXN0X3Vu
bG9ja19vbl9sb2NrZWRfYnJhbmNoX2FuZF9yZXBvKHNlbGYpOgorICAgICAgICBiYWNraW5nID0g
c2VsZi5nZXRfdHJhbnNwb3J0KCkKKyAgICAgICAgcmVxdWVzdCA9IHNtYXJ0LmJyYW5jaC5TbWFy
dFNlcnZlckJyYW5jaFJlcXVlc3RVbmxvY2soYmFja2luZykKKyAgICAgICAgYnJhbmNoID0gc2Vs
Zi5tYWtlX2JyYW5jaCgnLicpCisgICAgICAgICMgTG9jayB0aGUgYnJhbmNoCisgICAgICAgIGJy
YW5jaF90b2tlbiA9IGJyYW5jaC5sb2NrX3dyaXRlKCkKKyAgICAgICAgcmVwb190b2tlbiA9IGJy
YW5jaC5yZXBvc2l0b3J5LmxvY2tfd3JpdGUoKQorICAgICAgICBicmFuY2gucmVwb3NpdG9yeS51
bmxvY2soKQorICAgICAgICAjIFVubG9jayB0aGUgYnJhbmNoIChhbmQgcmVwbykgb2JqZWN0LCBs
ZWF2aW5nIHRoZSBwaHlzaWNhbCBsb2NrcworICAgICAgICAjIGluIHBsYWNlLgorICAgICAgICBi
cmFuY2gubGVhdmVfbG9ja19pbl9wbGFjZSgpCisgICAgICAgIGJyYW5jaC5yZXBvc2l0b3J5Lmxl
YXZlX2xvY2tfaW5fcGxhY2UoKQorICAgICAgICBicmFuY2gudW5sb2NrKCkKKyAgICAgICAgcmVz
cG9uc2UgPSByZXF1ZXN0LmV4ZWN1dGUoYmFja2luZy5sb2NhbF9hYnNwYXRoKCcnKSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJhbmNoX3Rva2VuLCByZXBvX3Rva2VuKQor
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgU21hcnRTZXJ2ZXJSZXNwb25z
ZSgoJ29rJywpKSwgcmVzcG9uc2UpCisgICAgICAgICMgVGhlIGJyYW5jaCBpcyBub3cgdW5sb2Nr
ZWQuICBWZXJpZnkgdGhhdCB3aXRoIGEgbmV3IGJyYW5jaAorICAgICAgICAjIG9iamVjdC4KKyAg
ICAgICAgbmV3X2JyYW5jaCA9IGJyYW5jaC5ienJkaXIub3Blbl9icmFuY2goKQorICAgICAgICBu
ZXdfYnJhbmNoLmxvY2tfd3JpdGUoKQorICAgICAgICBuZXdfYnJhbmNoLnVubG9jaygpCisKKyAg
ICBkZWYgdGVzdF91bmxvY2tfb25fdW5sb2NrZWRfYnJhbmNoX3VubG9ja2VkX3JlcG8oc2VsZik6
CisgICAgICAgIGJhY2tpbmcgPSBzZWxmLmdldF90cmFuc3BvcnQoKQorICAgICAgICByZXF1ZXN0
ID0gc21hcnQuYnJhbmNoLlNtYXJ0U2VydmVyQnJhbmNoUmVxdWVzdFVubG9jayhiYWNraW5nKQor
ICAgICAgICBicmFuY2ggPSBzZWxmLm1ha2VfYnJhbmNoKCcuJykKKyAgICAgICAgcmVzcG9uc2Ug
PSByZXF1ZXN0LmV4ZWN1dGUoCisgICAgICAgICAgICBiYWNraW5nLmxvY2FsX2Fic3BhdGgoJycp
LCAnYnJhbmNoIHRva2VuJywgJ3JlcG8gdG9rZW4nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KAorICAgICAgICAgICAgU21hcnRTZXJ2ZXJSZXNwb25zZSgoJ1Rva2VuTWlzbWF0Y2gnLCkpLCBy
ZXNwb25zZSkKKworICAgIGRlZiB0ZXN0X3VubG9ja19vbl91bmxvY2tlZF9icmFuY2hfbG9ja2Vk
X3JlcG8oc2VsZik6CisgICAgICAgIGJhY2tpbmcgPSBzZWxmLmdldF90cmFuc3BvcnQoKQorICAg
ICAgICByZXF1ZXN0ID0gc21hcnQuYnJhbmNoLlNtYXJ0U2VydmVyQnJhbmNoUmVxdWVzdFVubG9j
ayhiYWNraW5nKQorICAgICAgICBicmFuY2ggPSBzZWxmLm1ha2VfYnJhbmNoKCcuJykKKyAgICAg
ICAgIyBMb2NrIHRoZSByZXBvc2l0b3J5LgorICAgICAgICByZXBvX3Rva2VuID0gYnJhbmNoLnJl
cG9zaXRvcnkubG9ja193cml0ZSgpCisgICAgICAgIGJyYW5jaC5yZXBvc2l0b3J5LmxlYXZlX2xv
Y2tfaW5fcGxhY2UoKQorICAgICAgICBicmFuY2gucmVwb3NpdG9yeS51bmxvY2soKQorICAgICAg
ICAjIElzc3VlIGJyYW5jaCBsb2NrX3dyaXRlIHJlcXVlc3Qgb24gdGhlIHVubG9ja2VkIGJyYW5j
aCAod2l0aCBsb2NrZWQKKyAgICAgICAgIyByZXBvKS4KKyAgICAgICAgcmVzcG9uc2UgPSByZXF1
ZXN0LmV4ZWN1dGUoCisgICAgICAgICAgICBiYWNraW5nLmxvY2FsX2Fic3BhdGgoJycpLCAnYnJh
bmNoIHRva2VuJywgcmVwb190b2tlbikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAg
ICAgICAgIFNtYXJ0U2VydmVyUmVzcG9uc2UoKCdUb2tlbk1pc21hdGNoJywpKSwgcmVzcG9uc2Up
CisKKworY2xhc3MgVGVzdFNtYXJ0U2VydmVyUmVwb3NpdG9yeVJlcXVlc3QodGVzdHMuVGVzdENh
c2VXaXRoVHJhbnNwb3J0KToKKworICAgIGRlZiB0ZXN0X25vX3JlcG9zaXRvcnkoc2VsZik6Cisg
ICAgICAgICIiIlJhaXNlIE5vUmVwb3NpdG9yeVByZXNlbnQgd2hlbiB0aGVyZSBpcyBhIGJ6cmRp
ciBhbmQgbm8gcmVwby4iIiIKKyAgICAgICAgIyB3ZSB0ZXN0IHRoaXMgdXNpbmcgYSBzaGFyZWQg
cmVwb3NpdG9yeSBhYm92ZSB0aGUgbmFtZWQgcGF0aCwKKyAgICAgICAgIyB0aHVzIGNoZWNraW5n
IHRoZSByaWdodCBzZWFyY2ggbG9naWMgaXMgdXNlZCAtIHRoYXQgaXMsIHRoYXQKKyAgICAgICAg
IyBpdHMgdGhlIGV4YWN0IHBhdGggYmVpbmcgbG9va2VkIGF0IGFuZCB0aGUgc2VydmVyIGlzIG5v
dAorICAgICAgICAjIHNlYXJjaGluZy4KKyAgICAgICAgYmFja2luZyA9IHNlbGYuZ2V0X3RyYW5z
cG9ydCgpCisgICAgICAgIHJlcXVlc3QgPSBzbWFydC5yZXBvc2l0b3J5LlNtYXJ0U2VydmVyUmVw
b3NpdG9yeVJlcXVlc3QoYmFja2luZykKKyAgICAgICAgc2VsZi5tYWtlX3JlcG9zaXRvcnkoJy4n
LCBzaGFyZWQ9VHJ1ZSkKKyAgICAgICAgc2VsZi5tYWtlX2J6cmRpcignc3ViZGlyJykKKyAgICAg
ICAgc2VsZi5hc3NlcnRSYWlzZXMoZXJyb3JzLk5vUmVwb3NpdG9yeVByZXNlbnQsCisgICAgICAg
ICAgICByZXF1ZXN0LmV4ZWN1dGUsIGJhY2tpbmcubG9jYWxfYWJzcGF0aCgnc3ViZGlyJykpCisK
KworY2xhc3MgVGVzdFNtYXJ0U2VydmVyUmVwb3NpdG9yeUdldFJldmlzaW9uR3JhcGgodGVzdHMu
VGVzdENhc2VXaXRoVHJhbnNwb3J0KToKKworICAgIGRlZiB0ZXN0X25vbmVfYXJndW1lbnQoc2Vs
Zik6CisgICAgICAgIGJhY2tpbmcgPSBzZWxmLmdldF90cmFuc3BvcnQoKQorICAgICAgICByZXF1
ZXN0ID0gc21hcnQucmVwb3NpdG9yeS5TbWFydFNlcnZlclJlcG9zaXRvcnlHZXRSZXZpc2lvbkdy
YXBoKGJhY2tpbmcpCisgICAgICAgIHRyZWUgPSBzZWxmLm1ha2VfYnJhbmNoX2FuZF9tZW1vcnlf
dHJlZSgnLicpCisgICAgICAgIHRyZWUubG9ja193cml0ZSgpCisgICAgICAgIHRyZWUuYWRkKCcn
KQorICAgICAgICByMSA9IHRyZWUuY29tbWl0KCcxc3QgY29tbWl0JykKKyAgICAgICAgcjIgPSB0
cmVlLmNvbW1pdCgnMm5kIGNvbW1pdCcsIHJldl9pZD11J1x4YzgnLmVuY29kZSgndXRmLTgnKSkK
KyAgICAgICAgdHJlZS51bmxvY2soKQorCisgICAgICAgICMgdGhlIGxpbmVzIG9mIHJldmlzaW9u
X2lkLT5yZXZpc2lvbl9wYXJlbnRfbGlzdCBoYXMgbm8gZ3VhcmFudGVlZAorICAgICAgICAjIG9y
ZGVyIGNvbWluZyBvdXQgb2YgYSBkaWN0LCBzbyBzb3J0IGJvdGggb3VyIHRlc3QgYW5kIHJlc3Bv
bnNlCisgICAgICAgIGxpbmVzID0gc29ydGVkKFsnICcuam9pbihbcjIsIHIxXSksIHIxXSkKKyAg
ICAgICAgcmVzcG9uc2UgPSByZXF1ZXN0LmV4ZWN1dGUoYmFja2luZy5sb2NhbF9hYnNwYXRoKCcn
KSwgJycpCisgICAgICAgIHJlc3BvbnNlLmJvZHkgPSAnXG4nLmpvaW4oc29ydGVkKHJlc3BvbnNl
LmJvZHkuc3BsaXQoJ1xuJykpKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAg
ICAgICBTbWFydFNlcnZlclJlc3BvbnNlKCgnb2snLCApLCAnXG4nLmpvaW4obGluZXMpKSwgcmVz
cG9uc2UpCisKKyAgICBkZWYgdGVzdF9zcGVjaWZpY19yZXZpc2lvbl9hcmd1bWVudChzZWxmKToK
KyAgICAgICAgYmFja2luZyA9IHNlbGYuZ2V0X3RyYW5zcG9ydCgpCisgICAgICAgIHJlcXVlc3Qg
PSBzbWFydC5yZXBvc2l0b3J5LlNtYXJ0U2VydmVyUmVwb3NpdG9yeUdldFJldmlzaW9uR3JhcGgo
YmFja2luZykKKyAgICAgICAgdHJlZSA9IHNlbGYubWFrZV9icmFuY2hfYW5kX21lbW9yeV90cmVl
KCcuJykKKyAgICAgICAgdHJlZS5sb2NrX3dyaXRlKCkKKyAgICAgICAgdHJlZS5hZGQoJycpCisg
ICAgICAgIHJldl9pZF91dGY4ID0gdSdceGM5Jy5lbmNvZGUoJ3V0Zi04JykKKyAgICAgICAgcjEg
PSB0cmVlLmNvbW1pdCgnMXN0IGNvbW1pdCcsIHJldl9pZD1yZXZfaWRfdXRmOCkKKyAgICAgICAg
cjIgPSB0cmVlLmNvbW1pdCgnMm5kIGNvbW1pdCcsIHJldl9pZD11J1x4YzgnLmVuY29kZSgndXRm
LTgnKSkKKyAgICAgICAgdHJlZS51bmxvY2soKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
U21hcnRTZXJ2ZXJSZXNwb25zZSgoJ29rJywgKSwgcmV2X2lkX3V0ZjgpLAorICAgICAgICAgICAg
cmVxdWVzdC5leGVjdXRlKGJhY2tpbmcubG9jYWxfYWJzcGF0aCgnJyksIHJldl9pZF91dGY4KSkK
KyAgICAKKyAgICBkZWYgdGVzdF9ub19zdWNoX3JldmlzaW9uKHNlbGYpOgorICAgICAgICBiYWNr
aW5nID0gc2VsZi5nZXRfdHJhbnNwb3J0KCkKKyAgICAgICAgcmVxdWVzdCA9IHNtYXJ0LnJlcG9z
aXRvcnkuU21hcnRTZXJ2ZXJSZXBvc2l0b3J5R2V0UmV2aXNpb25HcmFwaChiYWNraW5nKQorICAg
ICAgICB0cmVlID0gc2VsZi5tYWtlX2JyYW5jaF9hbmRfbWVtb3J5X3RyZWUoJy4nKQorICAgICAg
ICB0cmVlLmxvY2tfd3JpdGUoKQorICAgICAgICB0cmVlLmFkZCgnJykKKyAgICAgICAgcjEgPSB0
cmVlLmNvbW1pdCgnMXN0IGNvbW1pdCcpCisgICAgICAgIHRyZWUudW5sb2NrKCkKKworICAgICAg
ICAjIE5vdGUgdGhhdCBpdCBzdGlsbCByZXR1cm5zIGJvZHkgKG9mIHplcm8gYnl0ZXMpLgorICAg
ICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgU21hcnRTZXJ2ZXJSZXNwb25zZSgo
J25vc3VjaHJldmlzaW9uJywgJ21pc3NpbmdyZXZpc2lvbicsICksICcnKSwKKyAgICAgICAgICAg
IHJlcXVlc3QuZXhlY3V0ZShiYWNraW5nLmxvY2FsX2Fic3BhdGgoJycpLCAnbWlzc2luZ3Jldmlz
aW9uJykpCisKKworY2xhc3MgVGVzdFNtYXJ0U2VydmVyUmVxdWVzdEhhc1JldmlzaW9uKHRlc3Rz
LlRlc3RDYXNlV2l0aFRyYW5zcG9ydCk6CisKKyAgICBkZWYgdGVzdF9taXNzaW5nX3JldmlzaW9u
KHNlbGYpOgorICAgICAgICAiIiJGb3IgYSBtaXNzaW5nIHJldmlzaW9uLCAoJ25vJywgKSBpcyBy
ZXR1cm5lZC4iIiIKKyAgICAgICAgYmFja2luZyA9IHNlbGYuZ2V0X3RyYW5zcG9ydCgpCisgICAg
ICAgIHJlcXVlc3QgPSBzbWFydC5yZXBvc2l0b3J5LlNtYXJ0U2VydmVyUmVxdWVzdEhhc1Jldmlz
aW9uKGJhY2tpbmcpCisgICAgICAgIHNlbGYubWFrZV9yZXBvc2l0b3J5KCcuJykKKyAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbChTbWFydFNlcnZlclJlc3BvbnNlKCgnbm8nLCApKSwKKyAgICAgICAg
ICAgIHJlcXVlc3QuZXhlY3V0ZShiYWNraW5nLmxvY2FsX2Fic3BhdGgoJycpLCAncmV2aWQnKSkK
KworICAgIGRlZiB0ZXN0X3ByZXNlbnRfcmV2aXNpb24oc2VsZik6CisgICAgICAgICIiIkZvciBh
IHByZXNlbnQgcmV2aXNpb24sICgneWVzJywgKSBpcyByZXR1cm5lZC4iIiIKKyAgICAgICAgYmFj
a2luZyA9IHNlbGYuZ2V0X3RyYW5zcG9ydCgpCisgICAgICAgIHJlcXVlc3QgPSBzbWFydC5yZXBv
c2l0b3J5LlNtYXJ0U2VydmVyUmVxdWVzdEhhc1JldmlzaW9uKGJhY2tpbmcpCisgICAgICAgIHRy
ZWUgPSBzZWxmLm1ha2VfYnJhbmNoX2FuZF9tZW1vcnlfdHJlZSgnLicpCisgICAgICAgIHRyZWUu
bG9ja193cml0ZSgpCisgICAgICAgIHRyZWUuYWRkKCcnKQorICAgICAgICByZXZfaWRfdXRmOCA9
IHUnXHhjOGFiYycuZW5jb2RlKCd1dGYtOCcpCisgICAgICAgIHIxID0gdHJlZS5jb21taXQoJ2Eg
Y29tbWl0JywgcmV2X2lkPXJldl9pZF91dGY4KQorICAgICAgICB0cmVlLnVubG9jaygpCisgICAg
ICAgIHNlbGYuYXNzZXJ0VHJ1ZSh0cmVlLmJyYW5jaC5yZXBvc2l0b3J5Lmhhc19yZXZpc2lvbihy
ZXZfaWRfdXRmOCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoU21hcnRTZXJ2ZXJSZXNwb25z
ZSgoJ3llcycsICkpLAorICAgICAgICAgICAgcmVxdWVzdC5leGVjdXRlKGJhY2tpbmcubG9jYWxf
YWJzcGF0aCgnJyksIHJldl9pZF91dGY4KSkKKworCitjbGFzcyBUZXN0U21hcnRTZXJ2ZXJSZXBv
c2l0b3J5R2F0aGVyU3RhdHModGVzdHMuVGVzdENhc2VXaXRoVHJhbnNwb3J0KToKKworICAgIGRl
ZiB0ZXN0X2VtcHR5X3JldmlkKHNlbGYpOgorICAgICAgICAiIiJXaXRoIGFuIGVtcHR5IHJldmlk
LCB3ZSBnZXQgb25seSBzaXplIGFuIG51bWJlciBhbmQgcmV2aXNpb25zIiIiCisgICAgICAgIGJh
Y2tpbmcgPSBzZWxmLmdldF90cmFuc3BvcnQoKQorICAgICAgICByZXF1ZXN0ID0gc21hcnQucmVw
b3NpdG9yeS5TbWFydFNlcnZlclJlcG9zaXRvcnlHYXRoZXJTdGF0cyhiYWNraW5nKQorICAgICAg
ICByZXBvc2l0b3J5ID0gc2VsZi5tYWtlX3JlcG9zaXRvcnkoJy4nKQorICAgICAgICBzdGF0cyA9
IHJlcG9zaXRvcnkuZ2F0aGVyX3N0YXRzKCkKKyAgICAgICAgc2l6ZSA9IHN0YXRzWydzaXplJ10K
KyAgICAgICAgZXhwZWN0ZWRfYm9keSA9ICdyZXZpc2lvbnM6IDBcbnNpemU6ICVkXG4nICUgc2l6
ZQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFNtYXJ0U2VydmVyUmVzcG9uc2UoKCdvaycsICks
IGV4cGVjdGVkX2JvZHkpLAorICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVlc3QuZXhlY3V0
ZShiYWNraW5nLmxvY2FsX2Fic3BhdGgoJycpLCAnJywgJ25vJykpCisKKyAgICBkZWYgdGVzdF9y
ZXZpZF93aXRoX2NvbW1pdHRlcnMoc2VsZik6CisgICAgICAgICIiIkZvciBhIHJldmlkIHdlIGdl
dCBtb3JlIGluZm9zLiIiIgorICAgICAgICBiYWNraW5nID0gc2VsZi5nZXRfdHJhbnNwb3J0KCkK
KyAgICAgICAgcmV2X2lkX3V0ZjggPSB1J1x4YzhhYmMnLmVuY29kZSgndXRmLTgnKQorICAgICAg
ICByZXF1ZXN0ID0gc21hcnQucmVwb3NpdG9yeS5TbWFydFNlcnZlclJlcG9zaXRvcnlHYXRoZXJT
dGF0cyhiYWNraW5nKQorICAgICAgICB0cmVlID0gc2VsZi5tYWtlX2JyYW5jaF9hbmRfbWVtb3J5
X3RyZWUoJy4nKQorICAgICAgICB0cmVlLmxvY2tfd3JpdGUoKQorICAgICAgICB0cmVlLmFkZCgn
JykKKyAgICAgICAgIyBMZXQncyBidWlsZCBhIHByZWRpY3RhYmxlIHJlc3VsdAorICAgICAgICB0
cmVlLmNvbW1pdCgnYSBjb21taXQnLCB0aW1lc3RhbXA9MTIzNDU2LjIsIHRpbWV6b25lPTM2MDAp
CisgICAgICAgIHRyZWUuY29tbWl0KCdhIGNvbW1pdCcsIHRpbWVzdGFtcD02NTQzMjEuNCwgdGlt
ZXpvbmU9MCwKKyAgICAgICAgICAgICAgICAgICAgcmV2X2lkPXJldl9pZF91dGY4KQorICAgICAg
ICB0cmVlLnVubG9jaygpCisKKyAgICAgICAgc3RhdHMgPSB0cmVlLmJyYW5jaC5yZXBvc2l0b3J5
LmdhdGhlcl9zdGF0cygpCisgICAgICAgIHNpemUgPSBzdGF0c1snc2l6ZSddCisgICAgICAgIGV4
cGVjdGVkX2JvZHkgPSAoJ2ZpcnN0cmV2OiAxMjM0NTYuMjAwIDM2MDBcbicKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAnbGF0ZXN0cmV2OiA2NTQzMjEuNDAwIDBcbicKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAncmV2aXNpb25zOiAyXG4nCisgICAgICAgICAgICAgICAgICAgICAgICAgJ3Np
emU6ICVkXG4nICUgc2l6ZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChTbWFydFNlcnZlclJl
c3BvbnNlKCgnb2snLCApLCBleHBlY3RlZF9ib2R5KSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICByZXF1ZXN0LmV4ZWN1dGUoYmFja2luZy5sb2NhbF9hYnNwYXRoKCcnKSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV2X2lkX3V0ZjgsICdubycpKQorCisgICAg
ZGVmIHRlc3Rfbm90X2VtcHR5X3JlcG9zaXRvcnlfd2l0aF9jb21taXR0ZXJzKHNlbGYpOgorICAg
ICAgICAiIiJGb3IgYSByZXZpZCBhbmQgcmVxdWVzdGluZyBjb21taXR0ZXJzIHdlIGdldCB0aGUg
d2hvbGUgdGhpbmcuIiIiCisgICAgICAgIGJhY2tpbmcgPSBzZWxmLmdldF90cmFuc3BvcnQoKQor
ICAgICAgICByZXZfaWRfdXRmOCA9IHUnXHhjOGFiYycuZW5jb2RlKCd1dGYtOCcpCisgICAgICAg
IHJlcXVlc3QgPSBzbWFydC5yZXBvc2l0b3J5LlNtYXJ0U2VydmVyUmVwb3NpdG9yeUdhdGhlclN0
YXRzKGJhY2tpbmcpCisgICAgICAgIHRyZWUgPSBzZWxmLm1ha2VfYnJhbmNoX2FuZF9tZW1vcnlf
dHJlZSgnLicpCisgICAgICAgIHRyZWUubG9ja193cml0ZSgpCisgICAgICAgIHRyZWUuYWRkKCcn
KQorICAgICAgICAjIExldCdzIGJ1aWxkIGEgcHJlZGljdGFibGUgcmVzdWx0CisgICAgICAgIHRy
ZWUuY29tbWl0KCdhIGNvbW1pdCcsIHRpbWVzdGFtcD0xMjM0NTYuMiwgdGltZXpvbmU9MzYwMCwK
KyAgICAgICAgICAgICAgICAgICAgY29tbWl0dGVyPSdmb28nKQorICAgICAgICB0cmVlLmNvbW1p
dCgnYSBjb21taXQnLCB0aW1lc3RhbXA9NjU0MzIxLjQsIHRpbWV6b25lPTAsCisgICAgICAgICAg
ICAgICAgICAgIGNvbW1pdHRlcj0nYmFyJywgcmV2X2lkPXJldl9pZF91dGY4KQorICAgICAgICB0
cmVlLnVubG9jaygpCisgICAgICAgIHN0YXRzID0gdHJlZS5icmFuY2gucmVwb3NpdG9yeS5nYXRo
ZXJfc3RhdHMoKQorCisgICAgICAgIHNpemUgPSBzdGF0c1snc2l6ZSddCisgICAgICAgIGV4cGVj
dGVkX2JvZHkgPSAoJ2NvbW1pdHRlcnM6IDJcbicKKyAgICAgICAgICAgICAgICAgICAgICAgICAn
Zmlyc3RyZXY6IDEyMzQ1Ni4yMDAgMzYwMFxuJworICAgICAgICAgICAgICAgICAgICAgICAgICds
YXRlc3RyZXY6IDY1NDMyMS40MDAgMFxuJworICAgICAgICAgICAgICAgICAgICAgICAgICdyZXZp
c2lvbnM6IDJcbicKKyAgICAgICAgICAgICAgICAgICAgICAgICAnc2l6ZTogJWRcbicgJSBzaXpl
KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFNtYXJ0U2VydmVyUmVzcG9uc2UoKCdvaycsICks
IGV4cGVjdGVkX2JvZHkpLAorICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVlc3QuZXhlY3V0
ZShiYWNraW5nLmxvY2FsX2Fic3BhdGgoJycpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICByZXZfaWRfdXRmOCwgJ3llcycpKQorCisKK2NsYXNzIFRlc3RTbWFydFNl
cnZlclJlcG9zaXRvcnlJc1NoYXJlZCh0ZXN0cy5UZXN0Q2FzZVdpdGhUcmFuc3BvcnQpOgorCisg
ICAgZGVmIHRlc3RfaXNfc2hhcmVkKHNlbGYpOgorICAgICAgICAiIiJGb3IgYSBzaGFyZWQgcmVw
b3NpdG9yeSwgKCd5ZXMnLCApIGlzIHJldHVybmVkLiIiIgorICAgICAgICBiYWNraW5nID0gc2Vs
Zi5nZXRfdHJhbnNwb3J0KCkKKyAgICAgICAgcmVxdWVzdCA9IHNtYXJ0LnJlcG9zaXRvcnkuU21h
cnRTZXJ2ZXJSZXBvc2l0b3J5SXNTaGFyZWQoYmFja2luZykKKyAgICAgICAgc2VsZi5tYWtlX3Jl
cG9zaXRvcnkoJy4nLCBzaGFyZWQ9VHJ1ZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChTbWFy
dFNlcnZlclJlc3BvbnNlKCgneWVzJywgKSksCisgICAgICAgICAgICByZXF1ZXN0LmV4ZWN1dGUo
YmFja2luZy5sb2NhbF9hYnNwYXRoKCcnKSwgKSkKKworICAgIGRlZiB0ZXN0X2lzX25vdF9zaGFy
ZWQoc2VsZik6CisgICAgICAgICIiIkZvciBhIHNoYXJlZCByZXBvc2l0b3J5LCAoJ25vJywgKSBp
cyByZXR1cm5lZC4iIiIKKyAgICAgICAgYmFja2luZyA9IHNlbGYuZ2V0X3RyYW5zcG9ydCgpCisg
ICAgICAgIHJlcXVlc3QgPSBzbWFydC5yZXBvc2l0b3J5LlNtYXJ0U2VydmVyUmVwb3NpdG9yeUlz
U2hhcmVkKGJhY2tpbmcpCisgICAgICAgIHNlbGYubWFrZV9yZXBvc2l0b3J5KCcuJywgc2hhcmVk
PUZhbHNlKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFNtYXJ0U2VydmVyUmVzcG9uc2UoKCdu
bycsICkpLAorICAgICAgICAgICAgcmVxdWVzdC5leGVjdXRlKGJhY2tpbmcubG9jYWxfYWJzcGF0
aCgnJyksICkpCisKKworY2xhc3MgVGVzdFNtYXJ0U2VydmVyUmVwb3NpdG9yeUxvY2tXcml0ZSh0
ZXN0cy5UZXN0Q2FzZVdpdGhUcmFuc3BvcnQpOgorCisgICAgZGVmIHNldFVwKHNlbGYpOgorICAg
ICAgICB0ZXN0cy5UZXN0Q2FzZVdpdGhUcmFuc3BvcnQuc2V0VXAoc2VsZikKKyAgICAgICAgc2Vs
Zi5yZWR1Y2VMb2NrZGlyVGltZW91dCgpCisKKyAgICBkZWYgdGVzdF9sb2NrX3dyaXRlX29uX3Vu
bG9ja2VkX3JlcG8oc2VsZik6CisgICAgICAgIGJhY2tpbmcgPSBzZWxmLmdldF90cmFuc3BvcnQo
KQorICAgICAgICByZXF1ZXN0ID0gc21hcnQucmVwb3NpdG9yeS5TbWFydFNlcnZlclJlcG9zaXRv
cnlMb2NrV3JpdGUoYmFja2luZykKKyAgICAgICAgcmVwb3NpdG9yeSA9IHNlbGYubWFrZV9yZXBv
c2l0b3J5KCcuJykKKyAgICAgICAgcmVzcG9uc2UgPSByZXF1ZXN0LmV4ZWN1dGUoYmFja2luZy5s
b2NhbF9hYnNwYXRoKCcnKSkKKyAgICAgICAgbm9uY2UgPSByZXBvc2l0b3J5LmNvbnRyb2xfZmls
ZXMuX2xvY2sucGVlaygpLmdldCgnbm9uY2UnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFNt
YXJ0U2VydmVyUmVzcG9uc2UoKCdvaycsIG5vbmNlKSksIHJlc3BvbnNlKQorICAgICAgICAjIFRo
ZSByZXBvc2l0b3J5IGlzIG5vdyBsb2NrZWQuICBWZXJpZnkgdGhhdCB3aXRoIGEgbmV3IHJlcG9z
aXRvcnkKKyAgICAgICAgIyBvYmplY3QuCisgICAgICAgIG5ld19yZXBvID0gcmVwb3NpdG9yeS5i
enJkaXIub3Blbl9yZXBvc2l0b3J5KCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoZXJyb3Jz
LkxvY2tDb250ZW50aW9uLCBuZXdfcmVwby5sb2NrX3dyaXRlKQorCisgICAgZGVmIHRlc3RfbG9j
a193cml0ZV9vbl9sb2NrZWRfcmVwbyhzZWxmKToKKyAgICAgICAgYmFja2luZyA9IHNlbGYuZ2V0
X3RyYW5zcG9ydCgpCisgICAgICAgIHJlcXVlc3QgPSBzbWFydC5yZXBvc2l0b3J5LlNtYXJ0U2Vy
dmVyUmVwb3NpdG9yeUxvY2tXcml0ZShiYWNraW5nKQorICAgICAgICByZXBvc2l0b3J5ID0gc2Vs
Zi5tYWtlX3JlcG9zaXRvcnkoJy4nKQorICAgICAgICByZXBvc2l0b3J5LmxvY2tfd3JpdGUoKQor
ICAgICAgICByZXBvc2l0b3J5LmxlYXZlX2xvY2tfaW5fcGxhY2UoKQorICAgICAgICByZXBvc2l0
b3J5LnVubG9jaygpCisgICAgICAgIHJlc3BvbnNlID0gcmVxdWVzdC5leGVjdXRlKGJhY2tpbmcu
bG9jYWxfYWJzcGF0aCgnJykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAg
ICBTbWFydFNlcnZlclJlc3BvbnNlKCgnTG9ja0NvbnRlbnRpb24nLCkpLCByZXNwb25zZSkKKwor
ICAgIGRlZiB0ZXN0X2xvY2tfd3JpdGVfb25fcmVhZG9ubHlfdHJhbnNwb3J0KHNlbGYpOgorICAg
ICAgICBiYWNraW5nID0gc2VsZi5nZXRfcmVhZG9ubHlfdHJhbnNwb3J0KCkKKyAgICAgICAgcmVx
dWVzdCA9IHNtYXJ0LnJlcG9zaXRvcnkuU21hcnRTZXJ2ZXJSZXBvc2l0b3J5TG9ja1dyaXRlKGJh
Y2tpbmcpCisgICAgICAgIHJlcG9zaXRvcnkgPSBzZWxmLm1ha2VfcmVwb3NpdG9yeSgnLicpCisg
ICAgICAgIHJlc3BvbnNlID0gcmVxdWVzdC5leGVjdXRlKCcnKQorICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKAorICAgICAgICAgICAgU21hcnRTZXJ2ZXJSZXNwb25zZSgoJ1VubG9ja2FibGVUcmFu
c3BvcnQnLCkpLCByZXNwb25zZSkKKworCitjbGFzcyBUZXN0U21hcnRTZXJ2ZXJSZXBvc2l0b3J5
VW5sb2NrKHRlc3RzLlRlc3RDYXNlV2l0aFRyYW5zcG9ydCk6CisKKyAgICBkZWYgc2V0VXAoc2Vs
Zik6CisgICAgICAgIHRlc3RzLlRlc3RDYXNlV2l0aFRyYW5zcG9ydC5zZXRVcChzZWxmKQorICAg
ICAgICBzZWxmLnJlZHVjZUxvY2tkaXJUaW1lb3V0KCkKKworICAgIGRlZiB0ZXN0X3VubG9ja19v
bl9sb2NrZWRfcmVwbyhzZWxmKToKKyAgICAgICAgYmFja2luZyA9IHNlbGYuZ2V0X3RyYW5zcG9y
dCgpCisgICAgICAgIHJlcXVlc3QgPSBzbWFydC5yZXBvc2l0b3J5LlNtYXJ0U2VydmVyUmVwb3Np
dG9yeVVubG9jayhiYWNraW5nKQorICAgICAgICByZXBvc2l0b3J5ID0gc2VsZi5tYWtlX3JlcG9z
aXRvcnkoJy4nKQorICAgICAgICB0b2tlbiA9IHJlcG9zaXRvcnkubG9ja193cml0ZSgpCisgICAg
ICAgIHJlcG9zaXRvcnkubGVhdmVfbG9ja19pbl9wbGFjZSgpCisgICAgICAgIHJlcG9zaXRvcnku
dW5sb2NrKCkKKyAgICAgICAgcmVzcG9uc2UgPSByZXF1ZXN0LmV4ZWN1dGUoYmFja2luZy5sb2Nh
bF9hYnNwYXRoKCcnKSwgdG9rZW4pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAg
ICAgICBTbWFydFNlcnZlclJlc3BvbnNlKCgnb2snLCkpLCByZXNwb25zZSkKKyAgICAgICAgIyBU
aGUgcmVwb3NpdG9yeSBpcyBub3cgdW5sb2NrZWQuICBWZXJpZnkgdGhhdCB3aXRoIGEgbmV3IHJl
cG9zaXRvcnkKKyAgICAgICAgIyBvYmplY3QuCisgICAgICAgIG5ld19yZXBvID0gcmVwb3NpdG9y
eS5ienJkaXIub3Blbl9yZXBvc2l0b3J5KCkKKyAgICAgICAgbmV3X3JlcG8ubG9ja193cml0ZSgp
CisgICAgICAgIG5ld19yZXBvLnVubG9jaygpCisKKyAgICBkZWYgdGVzdF91bmxvY2tfb25fdW5s
b2NrZWRfcmVwbyhzZWxmKToKKyAgICAgICAgYmFja2luZyA9IHNlbGYuZ2V0X3RyYW5zcG9ydCgp
CisgICAgICAgIHJlcXVlc3QgPSBzbWFydC5yZXBvc2l0b3J5LlNtYXJ0U2VydmVyUmVwb3NpdG9y
eVVubG9jayhiYWNraW5nKQorICAgICAgICByZXBvc2l0b3J5ID0gc2VsZi5tYWtlX3JlcG9zaXRv
cnkoJy4nKQorICAgICAgICByZXNwb25zZSA9IHJlcXVlc3QuZXhlY3V0ZShiYWNraW5nLmxvY2Fs
X2Fic3BhdGgoJycpLCAnc29tZSB0b2tlbicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisg
ICAgICAgICAgICBTbWFydFNlcnZlclJlc3BvbnNlKCgnVG9rZW5NaXNtYXRjaCcsKSksIHJlc3Bv
bnNlKQorCisKK2NsYXNzIFRlc3RTbWFydFNlcnZlclJlcG9zaXRvcnlUYXJiYWxsKHRlc3RzLlRl
c3RDYXNlV2l0aFRyYW5zcG9ydCk6CisKKyAgICBkZWYgdGVzdF9yZXBvc2l0b3J5X3RhcmJhbGwo
c2VsZik6CisgICAgICAgIGJhY2tpbmcgPSBzZWxmLmdldF90cmFuc3BvcnQoKQorICAgICAgICBy
ZXF1ZXN0ID0gc21hcnQucmVwb3NpdG9yeS5TbWFydFNlcnZlclJlcG9zaXRvcnlUYXJiYWxsKGJh
Y2tpbmcpCisgICAgICAgIHJlcG9zaXRvcnkgPSBzZWxmLm1ha2VfcmVwb3NpdG9yeSgnLicpCisg
ICAgICAgICMgbWFrZSBzb21lIGV4dHJhbmVvdXMganVuayBpbiB0aGUgcmVwb3NpdG9yeSBkaXJl
Y3Rvcnkgd2hpY2ggc2hvdWxkCisgICAgICAgICMgbm90IGJlIGNvcGllZAorICAgICAgICBzZWxm
LmJ1aWxkX3RyZWUoWycuYnpyL3JlcG9zaXRvcnkvZXh0cmEtanVuayddKQorICAgICAgICByZXNw
b25zZSA9IHJlcXVlc3QuZXhlY3V0ZShiYWNraW5nLmxvY2FsX2Fic3BhdGgoJycpLCAnYnoyJykK
KyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgoJ29rJywpLCByZXNwb25zZS5hcmdzKQorICAgICAg
ICAjIGJvZHkgc2hvdWxkIGJlIGEgdGJ6MgorICAgICAgICBib2R5X2ZpbGUgPSBTdHJpbmdJTyhy
ZXNwb25zZS5ib2R5KQorICAgICAgICBib2R5X3RhciA9IHRhcmZpbGUub3BlbignYm9keV90YXIu
dGJ6MicsIGZpbGVvYmo9Ym9keV9maWxlLAorICAgICAgICAgICAgbW9kZT0ncnxiejInKQorICAg
ICAgICAjIGxldCdzIG1ha2Ugc3VyZSB0aGVyZSBhcmUgc29tZSBrZXkgcmVwb3NpdG9yeSBjb21w
b25lbnRzIGluc2lkZSBpdC4KKyAgICAgICAgIyB0aGUgdGFyZmlsZSByZXR1cm5zIGRpcmVjdG9y
aWVzIHdpdGggdHJhaWxpbmcgc2xhc2hlcy4uLgorICAgICAgICBuYW1lcyA9IHNldChbbi5yc3Ry
aXAoJy8nKSBmb3IgbiBpbiBib2R5X3Rhci5nZXRuYW1lcygpXSkKKyAgICAgICAgc2VsZi5hc3Nl
cnRUcnVlKCcuYnpyL3JlcG9zaXRvcnkvbG9jaycgaW4gbmFtZXMpCisgICAgICAgIHNlbGYuYXNz
ZXJ0VHJ1ZSgnLmJ6ci9yZXBvc2l0b3J5L2Zvcm1hdCcgaW4gbmFtZXMpCisgICAgICAgIHNlbGYu
YXNzZXJ0VHJ1ZSgnLmJ6ci9yZXBvc2l0b3J5L2V4dHJhLWp1bmsnIG5vdCBpbiBuYW1lcywKKyAg
ICAgICAgICAgICJleHRyYW5lb3VzIGZpbGUgcHJlc2VudCBpbiB0YXIgZmlsZSIpCisKKworY2xh
c3MgVGVzdFNtYXJ0U2VydmVySXNSZWFkb25seSh0ZXN0cy5UZXN0Q2FzZVdpdGhUcmFuc3BvcnQp
OgorCisgICAgZGVmIHRlc3RfaXNfcmVhZG9ubHlfbm8oc2VsZik6CisgICAgICAgIGJhY2tpbmcg
PSBzZWxmLmdldF90cmFuc3BvcnQoKQorICAgICAgICByZXF1ZXN0ID0gc21hcnQucmVxdWVzdC5T
bWFydFNlcnZlcklzUmVhZG9ubHkoYmFja2luZykKKyAgICAgICAgcmVzcG9uc2UgPSByZXF1ZXN0
LmV4ZWN1dGUoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgU21hcnRT
ZXJ2ZXJSZXNwb25zZSgoJ25vJywpKSwgcmVzcG9uc2UpCisKKyAgICBkZWYgdGVzdF9pc19yZWFk
b25seV95ZXMoc2VsZik6CisgICAgICAgIGJhY2tpbmcgPSBzZWxmLmdldF9yZWFkb25seV90cmFu
c3BvcnQoKQorICAgICAgICByZXF1ZXN0ID0gc21hcnQucmVxdWVzdC5TbWFydFNlcnZlcklzUmVh
ZG9ubHkoYmFja2luZykKKyAgICAgICAgcmVzcG9uc2UgPSByZXF1ZXN0LmV4ZWN1dGUoKQorICAg
ICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgU21hcnRTZXJ2ZXJSZXNwb25zZSgo
J3llcycsKSksIHJlc3BvbnNlKQorCisKK2NsYXNzIFRlc3RIYW5kbGVycyh0ZXN0cy5UZXN0Q2Fz
ZSk6CisgICAgIiIiVGVzdHMgZm9yIHRoZSByZXF1ZXN0LnJlcXVlc3RfaGFuZGxlcnMgb2JqZWN0
LiIiIgorCisgICAgZGVmIHRlc3RfcmVnaXN0ZXJlZF9tZXRob2RzKHNlbGYpOgorICAgICAgICAi
IiJUZXN0IHRoYXQga25vd24gbWV0aG9kcyBhcmUgcmVnaXN0ZXJlZCB0byB0aGUgY29ycmVjdCBv
YmplY3QuIiIiCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBzbWFydC5y
ZXF1ZXN0LnJlcXVlc3RfaGFuZGxlcnMuZ2V0KCdCcmFuY2guZ2V0X2NvbmZpZ19maWxlJyksCisg
ICAgICAgICAgICBzbWFydC5icmFuY2guU21hcnRTZXJ2ZXJCcmFuY2hHZXRDb25maWdGaWxlKQor
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgc21hcnQucmVxdWVzdC5yZXF1
ZXN0X2hhbmRsZXJzLmdldCgnQnJhbmNoLmxvY2tfd3JpdGUnKSwKKyAgICAgICAgICAgIHNtYXJ0
LmJyYW5jaC5TbWFydFNlcnZlckJyYW5jaFJlcXVlc3RMb2NrV3JpdGUpCisgICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBzbWFydC5yZXF1ZXN0LnJlcXVlc3RfaGFuZGxlcnMu
Z2V0KCdCcmFuY2gubGFzdF9yZXZpc2lvbl9pbmZvJyksCisgICAgICAgICAgICBzbWFydC5icmFu
Y2guU21hcnRTZXJ2ZXJCcmFuY2hSZXF1ZXN0TGFzdFJldmlzaW9uSW5mbykKKyAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIHNtYXJ0LnJlcXVlc3QucmVxdWVzdF9oYW5kbGVy
cy5nZXQoJ0JyYW5jaC5yZXZpc2lvbl9oaXN0b3J5JyksCisgICAgICAgICAgICBzbWFydC5icmFu
Y2guU21hcnRTZXJ2ZXJSZXF1ZXN0UmV2aXNpb25IaXN0b3J5KQorICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKAorICAgICAgICAgICAgc21hcnQucmVxdWVzdC5yZXF1ZXN0X2hhbmRsZXJzLmdldCgn
QnJhbmNoLnNldF9sYXN0X3JldmlzaW9uJyksCisgICAgICAgICAgICBzbWFydC5icmFuY2guU21h
cnRTZXJ2ZXJCcmFuY2hSZXF1ZXN0U2V0TGFzdFJldmlzaW9uKQorICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKAorICAgICAgICAgICAgc21hcnQucmVxdWVzdC5yZXF1ZXN0X2hhbmRsZXJzLmdldCgn
QnJhbmNoLnVubG9jaycpLAorICAgICAgICAgICAgc21hcnQuYnJhbmNoLlNtYXJ0U2VydmVyQnJh
bmNoUmVxdWVzdFVubG9jaykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAg
IHNtYXJ0LnJlcXVlc3QucmVxdWVzdF9oYW5kbGVycy5nZXQoJ0J6ckRpci5maW5kX3JlcG9zaXRv
cnknKSwKKyAgICAgICAgICAgIHNtYXJ0LmJ6cmRpci5TbWFydFNlcnZlclJlcXVlc3RGaW5kUmVw
b3NpdG9yeSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIHNtYXJ0LnJl
cXVlc3QucmVxdWVzdF9oYW5kbGVycy5nZXQoJ0J6ckRpckZvcm1hdC5pbml0aWFsaXplJyksCisg
ICAgICAgICAgICBzbWFydC5ienJkaXIuU21hcnRTZXJ2ZXJSZXF1ZXN0SW5pdGlhbGl6ZUJ6ckRp
cikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIHNtYXJ0LnJlcXVlc3Qu
cmVxdWVzdF9oYW5kbGVycy5nZXQoJ0J6ckRpci5vcGVuX2JyYW5jaCcpLAorICAgICAgICAgICAg
c21hcnQuYnpyZGlyLlNtYXJ0U2VydmVyUmVxdWVzdE9wZW5CcmFuY2gpCisgICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBzbWFydC5yZXF1ZXN0LnJlcXVlc3RfaGFuZGxlcnMu
Z2V0KCdSZXBvc2l0b3J5LmdhdGhlcl9zdGF0cycpLAorICAgICAgICAgICAgc21hcnQucmVwb3Np
dG9yeS5TbWFydFNlcnZlclJlcG9zaXRvcnlHYXRoZXJTdGF0cykKKyAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbCgKKyAgICAgICAgICAgIHNtYXJ0LnJlcXVlc3QucmVxdWVzdF9oYW5kbGVycy5nZXQo
J1JlcG9zaXRvcnkuZ2V0X3JldmlzaW9uX2dyYXBoJyksCisgICAgICAgICAgICBzbWFydC5yZXBv
c2l0b3J5LlNtYXJ0U2VydmVyUmVwb3NpdG9yeUdldFJldmlzaW9uR3JhcGgpCisgICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBzbWFydC5yZXF1ZXN0LnJlcXVlc3RfaGFuZGxl
cnMuZ2V0KCdSZXBvc2l0b3J5Lmhhc19yZXZpc2lvbicpLAorICAgICAgICAgICAgc21hcnQucmVw
b3NpdG9yeS5TbWFydFNlcnZlclJlcXVlc3RIYXNSZXZpc2lvbikKKyAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbCgKKyAgICAgICAgICAgIHNtYXJ0LnJlcXVlc3QucmVxdWVzdF9oYW5kbGVycy5nZXQo
J1JlcG9zaXRvcnkuaXNfc2hhcmVkJyksCisgICAgICAgICAgICBzbWFydC5yZXBvc2l0b3J5LlNt
YXJ0U2VydmVyUmVwb3NpdG9yeUlzU2hhcmVkKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAor
ICAgICAgICAgICAgc21hcnQucmVxdWVzdC5yZXF1ZXN0X2hhbmRsZXJzLmdldCgnUmVwb3NpdG9y
eS5sb2NrX3dyaXRlJyksCisgICAgICAgICAgICBzbWFydC5yZXBvc2l0b3J5LlNtYXJ0U2VydmVy
UmVwb3NpdG9yeUxvY2tXcml0ZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAg
ICAgIHNtYXJ0LnJlcXVlc3QucmVxdWVzdF9oYW5kbGVycy5nZXQoJ1JlcG9zaXRvcnkudW5sb2Nr
JyksCisgICAgICAgICAgICBzbWFydC5yZXBvc2l0b3J5LlNtYXJ0U2VydmVyUmVwb3NpdG9yeVVu
bG9jaykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIHNtYXJ0LnJlcXVl
c3QucmVxdWVzdF9oYW5kbGVycy5nZXQoJ1JlcG9zaXRvcnkudGFyYmFsbCcpLAorICAgICAgICAg
ICAgc21hcnQucmVwb3NpdG9yeS5TbWFydFNlcnZlclJlcG9zaXRvcnlUYXJiYWxsKQorICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgc21hcnQucmVxdWVzdC5yZXF1ZXN0X2hh
bmRsZXJzLmdldCgnVHJhbnNwb3J0LmlzX3JlYWRvbmx5JyksCisgICAgICAgICAgICBzbWFydC5y
ZXF1ZXN0LlNtYXJ0U2VydmVySXNSZWFkb25seSkKCg==

=== added file bzrlib/tests/workingtree_implementations/test_get_file_mtime.py 
... // file-id:test_get_file_mtime.-20070411212918-dhentj8gk0hsu54z-1 // last-c
... hanged:john@arbash-meinel.com-20070412135716-tqs9n87s9gjefkdx // encoding:b
... ase64
LS0tIC9kZXYvbnVsbAorKysgYnpybGliL3Rlc3RzL3dvcmtpbmd0cmVlX2ltcGxlbWVudGF0aW9u
cy90ZXN0X2dldF9maWxlX210aW1lLnB5CkBAIC0wLDAgKzEsMTAwIEBACisjIENvcHlyaWdodCAo
QykgMjAwNyBDYW5vbmljYWwgTHRkCisjCisjIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJl
OyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisjIGl0IHVuZGVyIHRoZSB0
ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Cisj
IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExp
Y2Vuc2UsIG9yCisjIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisjCisjIFRo
aXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNl
ZnVsLAorIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGll
ZCB3YXJyYW50eSBvZgorIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSIFBVUlBPU0UuICBTZWUgdGhlCisjIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBt
b3JlIGRldGFpbHMuCisjCisjIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhl
IEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisjIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBp
ZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisjIEZvdW5kYXRpb24sIEluYy4sIDU5
IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BICAwMjExMS0xMzA3ICBVU0EKKwor
IiIiVGVzdCB0aGF0IGFsbCBXb3JraW5nVHJlZSdzIGltcGxlbWVudCBnZXRfZmlsZV9tdGltZS4i
IiIKKworaW1wb3J0IG9zCisKK2Zyb20gYnpybGliLnRlc3RzLndvcmtpbmd0cmVlX2ltcGxlbWVu
dGF0aW9ucyBpbXBvcnQgVGVzdENhc2VXaXRoV29ya2luZ1RyZWUKKworCitjbGFzcyBUZXN0R2V0
RmlsZU1UaW1lKFRlc3RDYXNlV2l0aFdvcmtpbmdUcmVlKToKKyAgICAiIiJUZXN0IFdvcmtpbmdU
cmVlLmdldF9maWxlX210aW1lLgorCisgICAgVGhlc2UgYXJlIG1vcmUgaW52b2x2ZWQgYmVjYXVz
ZSB3ZSBuZWVkIHRvIGhhbmRsZSBmaWxlcyB3aGljaCBoYXZlIGJlZW4KKyAgICByZW5hbWVkLCBl
dGMuCisgICAgIiIiCisKKyAgICBkZWYgbWFrZV9iYXNpY190cmVlKHNlbGYpOgorICAgICAgICB0
cmVlID0gc2VsZi5tYWtlX2JyYW5jaF9hbmRfdHJlZSgndHJlZScpCisgICAgICAgIHNlbGYuYnVp
bGRfdHJlZShbJ3RyZWUvb25lJ10pCisgICAgICAgIHRyZWUuYWRkKFsnb25lJ10sIFsnb25lLWlk
J10pCisgICAgICAgIHJldHVybiB0cmVlCisKKyAgICBkZWYgdGVzdF9nZXRfZmlsZV9tdGltZShz
ZWxmKToKKyAgICAgICAgdHJlZSA9IHNlbGYubWFrZV9iYXNpY190cmVlKCkKKworICAgICAgICBz
dCA9IG9zLmxzdGF0KCd0cmVlL29uZScpCisgICAgICAgIHRyZWUubG9ja19yZWFkKCkKKyAgICAg
ICAgdHJ5OgorICAgICAgICAgICAgbXRpbWVfZmlsZV9pZCA9IHRyZWUuZ2V0X2ZpbGVfbXRpbWUo
ZmlsZV9pZD0nb25lLWlkJykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShtdGlt
ZV9maWxlX2lkLCAoZmxvYXQsIGludCkpCisgICAgICAgICAgICBzZWxmLmFzc2VydEFsbW9zdEVx
dWFsKHN0LnN0X210aW1lLCBtdGltZV9maWxlX2lkKQorICAgICAgICAgICAgbXRpbWVfcGF0aCA9
IHRyZWUuZ2V0X2ZpbGVfbXRpbWUoZmlsZV9pZD0nb25lLWlkJywgcGF0aD0nb25lJykKKyAgICAg
ICAgICAgIHNlbGYuYXNzZXJ0QWxtb3N0RXF1YWwobXRpbWVfZmlsZV9pZCwgbXRpbWVfcGF0aCkK
KyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgIHRyZWUudW5sb2NrKCkKKworICAgIGRlZiB0
ZXN0X2FmdGVyX2NvbW1pdChzZWxmKToKKyAgICAgICAgIiIiQ29tbWl0dGluZyBzaG91bGRuJ3Qg
Y2hhbmdlIHRoZSBtdGltZS4iIiIKKyAgICAgICAgdHJlZSA9IHNlbGYubWFrZV9iYXNpY190cmVl
KCkKKworICAgICAgICBzdCA9IG9zLmxzdGF0KCd0cmVlL29uZScpCisgICAgICAgIHRyZWUuY29t
bWl0KCdvbmUnLCByZXZfaWQ9J3Jldi0xJykKKworICAgICAgICB0cmVlLmxvY2tfcmVhZCgpCisg
ICAgICAgIHRyeToKKyAgICAgICAgICAgIG10aW1lID0gdHJlZS5nZXRfZmlsZV9tdGltZShmaWxl
X2lkPSdvbmUtaWQnKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRBbG1vc3RFcXVhbChzdC5zdF9t
dGltZSwgbXRpbWUpCisKKyAgICAgICAgICAgIG10aW1lID0gdHJlZS5nZXRfZmlsZV9tdGltZShm
aWxlX2lkPSdvbmUtaWQnLCBwYXRoPSdvbmUnKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRBbG1v
c3RFcXVhbChzdC5zdF9tdGltZSwgbXRpbWUpCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAg
ICB0cmVlLnVubG9jaygpCisKKyAgICBkZWYgdGVzdF9nZXRfcmVuYW1lZF90aW1lKHNlbGYpOgor
ICAgICAgICAiIiJXZSBzaG91bGQgaGFuZGxlIHJlbmFtZWQgZmlsZXMuIiIiCisgICAgICAgIHRy
ZWUgPSBzZWxmLm1ha2VfYmFzaWNfdHJlZSgpCisKKyAgICAgICAgdHJlZS5yZW5hbWVfb25lKCdv
bmUnLCAndHdvJykKKyAgICAgICAgc3QgPSBvcy5sc3RhdCgndHJlZS90d28nKQorCisgICAgICAg
IHRyZWUubG9ja19yZWFkKCkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgbXRpbWUgPSB0cmVl
LmdldF9maWxlX210aW1lKGZpbGVfaWQ9J29uZS1pZCcpCisgICAgICAgICAgICBzZWxmLmFzc2Vy
dEFsbW9zdEVxdWFsKHN0LnN0X210aW1lLCBtdGltZSkKKyAgICAgICAgICAgIG10aW1lID0gdHJl
ZS5nZXRfZmlsZV9tdGltZShmaWxlX2lkPSdvbmUtaWQnLCBwYXRoPSd0d28nKQorICAgICAgICAg
ICAgc2VsZi5hc3NlcnRBbG1vc3RFcXVhbChzdC5zdF9tdGltZSwgbXRpbWUpCisgICAgICAgIGZp
bmFsbHk6CisgICAgICAgICAgICB0cmVlLnVubG9jaygpCisKKyAgICBkZWYgdGVzdF9nZXRfcmVu
YW1lZF9pbl9zdWJkaXJfdGltZShzZWxmKToKKyAgICAgICAgdHJlZSA9IHNlbGYubWFrZV9icmFu
Y2hfYW5kX3RyZWUoJ3RyZWUnKQorICAgICAgICBzZWxmLmJ1aWxkX3RyZWUoWyd0cmVlL2QvJywg
J3RyZWUvZC9hJ10pCisgICAgICAgIHRyZWUuYWRkKFsnZCcsICdkL2EnXSwgWydkLWlkJywgJ2Et
aWQnXSkKKyAgICAgICAgdHJlZS5jb21taXQoJzEnLCByZXZfaWQ9J3Jldi0xJykKKworICAgICAg
ICB0cmVlLnJlbmFtZV9vbmUoJ2QnLCAnZScpCisKKyAgICAgICAgc3QgPSBvcy5sc3RhdCgndHJl
ZS9lL2EnKQorICAgICAgICB0cmVlLmxvY2tfcmVhZCgpCisgICAgICAgIHRyeToKKyAgICAgICAg
ICAgIG10aW1lID0gdHJlZS5nZXRfZmlsZV9tdGltZShmaWxlX2lkPSdhLWlkJykKKyAgICAgICAg
ICAgIHNlbGYuYXNzZXJ0QWxtb3N0RXF1YWwoc3Quc3RfbXRpbWUsIG10aW1lKQorICAgICAgICAg
ICAgbXRpbWUgPSB0cmVlLmdldF9maWxlX210aW1lKGZpbGVfaWQ9J2EtaWQnLCBwYXRoPSdlL2En
KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRBbG1vc3RFcXVhbChzdC5zdF9tdGltZSwgbXRpbWUp
CisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICB0cmVlLnVubG9jaygpCgo=

=== added file bzrlib/tests/workingtree_implementations/test_remove.py // file-
... id:test_remove.py-20070413183901-rvnp85rtc0q0sclp-1 // last-changed:amanic@
... gmail.com-20070418201215-upzz7pof6a4433n7 // encoding:base64
LS0tIC9kZXYvbnVsbAorKysgYnpybGliL3Rlc3RzL3dvcmtpbmd0cmVlX2ltcGxlbWVudGF0aW9u
cy90ZXN0X3JlbW92ZS5weQpAQCAtMCwwICsxLDIwNSBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMDYs
IDIwMDcgQ2Fub25pY2FsIEx0ZAorIworIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsg
eW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorIyBpdCB1bmRlciB0aGUgdGVy
bXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorIyB0
aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNl
bnNlLCBvcgorIyAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorIworIyBUaGlz
IHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1
bCwKKyMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQg
d2FycmFudHkgb2YKKyMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UiBQVVJQT1NFLiAgU2VlIHRoZQorIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9y
ZSBkZXRhaWxzLgorIworIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBH
TlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYg
bm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorIyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBU
ZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAgMDIxMTEtMTMwNyAgVVNBCisKKyIi
IlRlc3RzIGZvciBpbnRlcmZhY2UgY29uZm9ybWFuY2Ugb2YgJ1dvcmtpbmdUcmVlLnJlbW92ZSci
IiIKKworaW1wb3J0IHJlCitmcm9tIGJ6cmxpYi50ZXN0cy53b3JraW5ndHJlZV9pbXBsZW1lbnRh
dGlvbnMgaW1wb3J0IFRlc3RDYXNlV2l0aFdvcmtpbmdUcmVlCitmcm9tIGJ6cmxpYiBpbXBvcnQg
ZXJyb3JzLCBvc3V0aWxzCisKK2NsYXNzIFRlc3RSZW1vdmUoVGVzdENhc2VXaXRoV29ya2luZ1Ry
ZWUpOgorICAgICIiIlRlc3RzIFdvcmtpbmdUcmVlLnJlbW92ZSIiIgorCisgICAgZmlsZXM9Wydh
JywgJ2IvJywgJ2IvYycsICdkLyddCisgICAgYSA9IFsnYSddCisgICAgYiA9IFsnYiddCisgICAg
Yl9jID0gWydiJywgJ2IvYyddCisKKyAgICBkZWYgZ2V0VHJlZShzZWxmKToKKyAgICAgICAgc2Vs
Zi5tYWtlQW5kQ2hkaXJUb1Rlc3REaXIoKQorICAgICAgICB0cmVlID0gc2VsZi5tYWtlX2JyYW5j
aF9hbmRfdHJlZSgnLicpCisgICAgICAgIHNlbGYuYnVpbGRfdHJlZShUZXN0UmVtb3ZlLmZpbGVz
KQorICAgICAgICByZXR1cm4gdHJlZQorCisgICAgZGVmIHRlc3RfcmVtb3ZlX2tlZXAoc2VsZik6
CisgICAgICAgICIiIkNoZWNrIHRoYXQgZmlsZXMgYXJlIHVudmVyc2lvbmVkIGJ1dCBub3QgZGVs
ZXRlZC4iIiIKKyAgICAgICAgdHJlZSA9IHNlbGYuZ2V0VHJlZSgpCisgICAgICAgIHRyZWUuYWRk
KFRlc3RSZW1vdmUuZmlsZXMpCisgICAgICAgIHNlbGYuYXNzZXJ0SW5Xb3JraW5nVHJlZShUZXN0
UmVtb3ZlLmZpbGVzKQorCisgICAgICAgIHRyZWUucmVtb3ZlKFRlc3RSZW1vdmUuZmlsZXMpCisg
ICAgICAgIHNlbGYuYXNzZXJ0Tm90SW5Xb3JraW5nVHJlZShUZXN0UmVtb3ZlLmZpbGVzKQorICAg
ICAgICBzZWxmLmZhaWxVbmxlc3NFeGlzdHMoVGVzdFJlbW92ZS5maWxlcykKKworICAgIGRlZiB0
ZXN0X3JlbW92ZV91bmNoYW5nZWRfZmlsZXMoc2VsZik6CisgICAgICAgICIiIkNoZWNrIHRoYXQg
dW5jaGFuZ2VkIGZpbGVzIGFyZSByZW1vdmVkIGFuZCBkZWxldGVkLiIiIgorICAgICAgICB0cmVl
ID0gc2VsZi5nZXRUcmVlKCkKKyAgICAgICAgdHJlZS5hZGQoVGVzdFJlbW92ZS5maWxlcykKKyAg
ICAgICAgdHJlZS5jb21taXQoImZpbGVzIG11c3Qgbm90IGhhdmUgY2hhbmdlcyIpCisgICAgICAg
IHNlbGYuYXNzZXJ0SW5Xb3JraW5nVHJlZShUZXN0UmVtb3ZlLmZpbGVzKQorCisgICAgICAgIHRy
ZWUucmVtb3ZlKFRlc3RSZW1vdmUuZmlsZXMsIGtlZXBfZmlsZXM9RmFsc2UpCisKKyAgICAgICAg
c2VsZi5hc3NlcnROb3RJbldvcmtpbmdUcmVlKFRlc3RSZW1vdmUuZmlsZXMpCisgICAgICAgIHNl
bGYuZmFpbElmRXhpc3RzKFRlc3RSZW1vdmUuZmlsZXMpCisKKyAgICBkZWYgdGVzdF9yZW1vdmVf
YWRkZWRfZmlsZXMoc2VsZik6CisgICAgICAgICIiIlJlbW92YWwgb2YgbmV3bHkgYWRkZWQgZmls
ZXMgbXVzdCBmYWlsLiIiIgorICAgICAgICB0cmVlID0gc2VsZi5nZXRUcmVlKCkKKyAgICAgICAg
dHJlZS5hZGQoVGVzdFJlbW92ZS5maWxlcykKKyAgICAgICAgc2VsZi5hc3NlcnRJbldvcmtpbmdU
cmVlKFRlc3RSZW1vdmUuZmlsZXMpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHRyZWUucmVt
b3ZlKFRlc3RSZW1vdmUuZmlsZXMsIGtlZXBfZmlsZXM9RmFsc2UpCisgICAgICAgICAgICBzZWxm
LmZhaWwoJ1Nob3VsZCB0aHJvdyBCenJSZW1vdmVDaGFuZ2VkRmlsZXNFcnJvcicpCisgICAgICAg
IGV4Y2VwdCBlcnJvcnMuQnpyUmVtb3ZlQ2hhbmdlZEZpbGVzRXJyb3IsIGU6CisgICAgICAgICAg
ICBzZWxmLmFzc2VydFRydWUocmUubWF0Y2goJ0NhblwndCByZW1vdmUgY2hhbmdlZCBvciB1bmtu
b3duIGZpbGVzOicKKyAgICAgICAgICAgICAgICAnLiphZGRlZDouKmEuKmIuKmIvYy4qZC4qJywK
KyAgICAgICAgICAgICAgICBzdHIoZSksIHJlLkRPVEFMTCkpCisgICAgICAgIHNlbGYuYXNzZXJ0
SW5Xb3JraW5nVHJlZShUZXN0UmVtb3ZlLmZpbGVzKQorICAgICAgICBzZWxmLmZhaWxVbmxlc3NF
eGlzdHMoVGVzdFJlbW92ZS5maWxlcykKKworICAgIGRlZiB0ZXN0X3JlbW92ZV9jaGFuZ2VkX2Zp
bGUoc2VsZik6CisgICAgICAgICIiIlJlbW92YWwgb2YgYSBjaGFuZ2VkIGZpbGVzIG11c3QgZmFp
bC4iIiIKKyAgICAgICAgdHJlZSA9IHNlbGYuZ2V0VHJlZSgpCisgICAgICAgIHRyZWUuYWRkKFRl
c3RSZW1vdmUuYSkKKyAgICAgICAgdHJlZS5jb21taXQoIm1ha2Ugc3VyZSBhIGlzIHZlcnNpb25l
ZCIpCisgICAgICAgIGYgPSBmaWxlKCdhJywgJ3diJykKKyAgICAgICAgZi53cml0ZSgic29tZSBv
dGhlciBuZXcgY29udGVudCEiKQorICAgICAgICBmLmNsb3NlKCkKKyAgICAgICAgc2VsZi5hc3Nl
cnRJbldvcmtpbmdUcmVlKFRlc3RSZW1vdmUuYSkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAg
dHJlZS5yZW1vdmUoVGVzdFJlbW92ZS5hLCBrZWVwX2ZpbGVzPUZhbHNlKQorICAgICAgICAgICAg
c2VsZi5mYWlsKCdTaG91bGQgdGhyb3cgQnpyUmVtb3ZlQ2hhbmdlZEZpbGVzRXJyb3InKQorICAg
ICAgICBleGNlcHQgZXJyb3JzLkJ6clJlbW92ZUNoYW5nZWRGaWxlc0Vycm9yLCBlOgorICAgICAg
ICAgICAgc2VsZi5hc3NlcnRUcnVlKHJlLm1hdGNoKCdDYW5cJ3QgcmVtb3ZlIGNoYW5nZWQgb3Ig
dW5rbm93biBmaWxlczonCisgICAgICAgICAgICAgICAgJy4qbW9kaWZpZWQ6LiphLionLAorICAg
ICAgICAgICAgICAgIHN0cihlKSwgcmUuRE9UQUxMKSkKKyAgICAgICAgc2VsZi5hc3NlcnRJbldv
cmtpbmdUcmVlKFRlc3RSZW1vdmUuYSkKKyAgICAgICAgc2VsZi5mYWlsVW5sZXNzRXhpc3RzKFRl
c3RSZW1vdmUuYSkKKworICAgIGRlZiB0ZXN0X3JlbW92ZV9kZWxldGVkX2ZpbGVzKHNlbGYpOgor
ICAgICAgICAiIiJDaGVjayB0aGF0IGZpbGVzIGFyZSByZW1vdmVkIGlmIHRoZXkgZG9uJ3QgZXhp
c3QgYW55IG1vcmUuIiIiCisgICAgICAgIHRyZWUgPSBzZWxmLmdldFRyZWUoKQorICAgICAgICB0
cmVlLmFkZChUZXN0UmVtb3ZlLmZpbGVzKQorICAgICAgICB0cmVlLmNvbW1pdCgibWFrZSBzdXJl
IGZpbGVzIGFyZSB2ZXJzaW9uZWQiKQorICAgICAgICBmb3IgZiBpbiBbJ2IvYycsICdiJywgJ2En
LCAnZCddOgorICAgICAgICAgICAgb3N1dGlscy5kZWxldGVfYW55KGYpCisgICAgICAgIHNlbGYu
YXNzZXJ0SW5Xb3JraW5nVHJlZShUZXN0UmVtb3ZlLmZpbGVzKQorICAgICAgICBzZWxmLmZhaWxJ
ZkV4aXN0cyhUZXN0UmVtb3ZlLmZpbGVzKQorCisgICAgICAgIHRyZWUucmVtb3ZlKFRlc3RSZW1v
dmUuZmlsZXMsIGtlZXBfZmlsZXM9RmFsc2UpCisKKyAgICAgICAgc2VsZi5hc3NlcnROb3RJbldv
cmtpbmdUcmVlKFRlc3RSZW1vdmUuZmlsZXMpCisgICAgICAgIHNlbGYuZmFpbElmRXhpc3RzKFRl
c3RSZW1vdmUuZmlsZXMpCisKKyAgICBkZWYgdGVzdF9mb3JjZV9yZW1vdmVfY2hhbmdlZF9maWxl
cyhzZWxmKToKKyAgICAgICAgIiIiQ2hlY2sgdGhhdCBjaGFuZ2VkIGZpbGVzIGFyZSByZW1vdmVk
IGFuZCBkZWxldGVkIHdoZW4gZm9yY2VkLiIiIgorICAgICAgICB0cmVlID0gc2VsZi5nZXRUcmVl
KCkKKyAgICAgICAgdHJlZS5hZGQoVGVzdFJlbW92ZS5maWxlcykKKyAgICAgICAgc2VsZi5hc3Nl
cnRJbldvcmtpbmdUcmVlKFRlc3RSZW1vdmUuZmlsZXMpCisKKyAgICAgICAgdHJlZS5yZW1vdmUo
VGVzdFJlbW92ZS5maWxlcywga2VlcF9maWxlcz1GYWxzZSwgZm9yY2U9VHJ1ZSkKKworICAgICAg
ICBzZWxmLmFzc2VydE5vdEluV29ya2luZ1RyZWUoVGVzdFJlbW92ZS5maWxlcykKKyAgICAgICAg
c2VsZi5mYWlsSWZFeGlzdHMoVGVzdFJlbW92ZS5maWxlcykKKworICAgIGRlZiB0ZXN0X3JlbW92
ZV91bmtub3duX2ZpbGVzKHNlbGYpOgorICAgICAgICAiIiJUcnkgdG8gZGVsZXRlIHVua25vd24g
ZmlsZXMuIiIiCisgICAgICAgIHRyZWUgPSBzZWxmLmdldFRyZWUoKQorICAgICAgICB0cnk6Cisg
ICAgICAgICAgICB0cmVlLnJlbW92ZShUZXN0UmVtb3ZlLmZpbGVzLCBrZWVwX2ZpbGVzPUZhbHNl
KQorICAgICAgICAgICAgc2VsZi5mYWlsKCdTaG91bGQgdGhyb3cgQnpyUmVtb3ZlQ2hhbmdlZEZp
bGVzRXJyb3InKQorICAgICAgICBleGNlcHQgZXJyb3JzLkJ6clJlbW92ZUNoYW5nZWRGaWxlc0Vy
cm9yLCBlOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHJlLm1hdGNoKCdDYW5cJ3QgcmVt
b3ZlIGNoYW5nZWQgb3IgdW5rbm93biBmaWxlczonCisgICAgICAgICAgICAgICAgJy4qdW5rbm93
bjouKmIvYy4qYi4qYS4qZC4qJywKKyAgICAgICAgICAgICAgICBzdHIoZSksIHJlLkRPVEFMTCkp
CisKKyAgICBkZWYgdGVzdF9yZW1vdmVfbm9uZXhpc3RpbmdfZmlsZXMoc2VsZik6CisgICAgICAg
ICIiIlRyeSB0byBkZWxldGUgbm9uLWV4aXN0aW5nIGZpbGVzLiIiIgorICAgICAgICB0cmVlID0g
c2VsZi5nZXRUcmVlKCkKKyAgICAgICAgdHJlZS5yZW1vdmUoWycnXSwga2VlcF9maWxlcz1GYWxz
ZSkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgdHJlZS5yZW1vdmUoWyd4eXonLCAnYWJjL2Rl
ZiddLCBrZWVwX2ZpbGVzPUZhbHNlKQorICAgICAgICAgICAgc2VsZi5mYWlsKCdTaG91bGQgdGhy
b3cgQnpyUmVtb3ZlQ2hhbmdlZEZpbGVzRXJyb3InKQorICAgICAgICBleGNlcHQgZXJyb3JzLkJ6
clJlbW92ZUNoYW5nZWRGaWxlc0Vycm9yLCBlOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVl
KHJlLm1hdGNoKCdDYW5cJ3QgcmVtb3ZlIGNoYW5nZWQgb3IgdW5rbm93biBmaWxlczonCisgICAg
ICAgICAgICAgICAgJy4qdW5rbm93bjouKnh5ei4qYWJjL2RlZi4qJywKKyAgICAgICAgICAgICAg
ICBzdHIoZSksIHJlLkRPVEFMTCkpCisKKyAgICBkZWYgdGVzdF9yZW1vdmVfbm9uZW1wdHlfZGly
ZWN0b3J5KHNlbGYpOgorICAgICAgICAiIiJVbmNoYW5nZWQgbm9uLWVtcHR5IGRpcmVjdG9yaWVz
IHNob3VsZCBiZSBkZWxldGVkLiIiIgorICAgICAgICB0cmVlID0gc2VsZi5nZXRUcmVlKCkKKyAg
ICAgICAgdHJlZS5hZGQoVGVzdFJlbW92ZS5maWxlcykKKyAgICAgICAgdHJlZS5jb21taXQoIm1h
a2Ugc3VyZSBiIGlzIHZlcnNpb25lZCIpCisgICAgICAgIHNlbGYuYXNzZXJ0SW5Xb3JraW5nVHJl
ZShUZXN0UmVtb3ZlLmZpbGVzKQorICAgICAgICBzZWxmLmZhaWxVbmxlc3NFeGlzdHMoVGVzdFJl
bW92ZS5maWxlcykKKyAgICAgICAgdHJlZS5yZW1vdmUoVGVzdFJlbW92ZS5iLCBrZWVwX2ZpbGVz
PUZhbHNlKQorICAgICAgICBzZWxmLmFzc2VydE5vdEluV29ya2luZ1RyZWUoVGVzdFJlbW92ZS5i
KQorICAgICAgICBzZWxmLmZhaWxJZkV4aXN0cyhUZXN0UmVtb3ZlLmIpCisKKyAgICBkZWYgdGVz
dF9yZW1vdmVfbm9uZW1wdHlfZGlyZWN0b3J5X3dpdGhfdW5rbm93bnMoc2VsZik6CisgICAgICAg
ICIiIlVuY2hhbmdlZCBub24tZW1wdHkgZGlyZWN0b3JpZXMgc2hvdWxkIGJlIGRlbGV0ZWQuIiIi
CisgICAgICAgIHRyZWUgPSBzZWxmLmdldFRyZWUoKQorICAgICAgICB0cmVlLmFkZChUZXN0UmVt
b3ZlLmZpbGVzKQorICAgICAgICB0cmVlLmNvbW1pdCgibWFrZSBzdXJlIGIgaXMgdmVyc2lvbmVk
IikKKyAgICAgICAgc2VsZi5hc3NlcnRJbldvcmtpbmdUcmVlKFRlc3RSZW1vdmUuZmlsZXMpCisg
ICAgICAgIHNlbGYuZmFpbFVubGVzc0V4aXN0cyhUZXN0UmVtb3ZlLmZpbGVzKQorICAgICAgICBm
ID0gZmlsZSgnYi9teV91bmtub3duX2ZpbGUnLCAnd2InKQorICAgICAgICBmLndyaXRlKCJzb21l
IGNvbnRlbnQhIikKKyAgICAgICAgZi5jbG9zZSgpCisgICAgICAgIHRyeToKKyAgICAgICAgICAg
IHRyZWUucmVtb3ZlKFRlc3RSZW1vdmUuYiwga2VlcF9maWxlcz1GYWxzZSkKKyAgICAgICAgICAg
IHNlbGYuZmFpbCgnU2hvdWxkIHRocm93IEJ6clJlbW92ZUNoYW5nZWRGaWxlc0Vycm9yJykKKyAg
ICAgICAgZXhjZXB0IGVycm9ycy5CenJSZW1vdmVDaGFuZ2VkRmlsZXNFcnJvciwgZToKKyAgICAg
ICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZS5tYXRjaCgnQ2FuXCd0IHJlbW92ZSBjaGFuZ2VkIG9y
IHVua25vd24gZmlsZXM6JworICAgICAgICAgICAgICAgICcuKnVua25vd246LipiL215X3Vua25v
d25fZmlsZS4qJywKKyAgICAgICAgICAgICAgICBzdHIoZSksIHJlLkRPVEFMTCkpCisgICAgICAg
IHNlbGYuYXNzZXJ0SW5Xb3JraW5nVHJlZShUZXN0UmVtb3ZlLmIpCisgICAgICAgIHNlbGYuZmFp
bFVubGVzc0V4aXN0cyhUZXN0UmVtb3ZlLmIpCisKKyAgICBkZWYgdGVzdF9mb3JjZV9yZW1vdmVf
bm9uZW1wdHlfZGlyZWN0b3J5KHNlbGYpOgorICAgICAgICB0cmVlID0gc2VsZi5nZXRUcmVlKCkK
KyAgICAgICAgdHJlZS5hZGQoVGVzdFJlbW92ZS5maWxlcykKKyAgICAgICAgdHJlZS5jb21taXQo
Im1ha2Ugc3VyZSBiIGlzIHZlcnNpb25lZCIpCisgICAgICAgIHNlbGYuYXNzZXJ0SW5Xb3JraW5n
VHJlZShUZXN0UmVtb3ZlLmZpbGVzKQorICAgICAgICBzZWxmLmZhaWxVbmxlc3NFeGlzdHMoVGVz
dFJlbW92ZS5maWxlcykKKyAgICAgICAgdHJlZS5yZW1vdmUoVGVzdFJlbW92ZS5iLCBrZWVwX2Zp
bGVzPUZhbHNlLCBmb3JjZT1UcnVlKQorICAgICAgICBzZWxmLmFzc2VydE5vdEluV29ya2luZ1Ry
ZWUoVGVzdFJlbW92ZS5iX2MpCisgICAgICAgIHNlbGYuZmFpbElmRXhpc3RzKFRlc3RSZW1vdmUu
Yl9jKQorCisgICAgZGVmIHRlc3RfcmVtb3ZlX2RpcmVjdG9yeV93aXRoX2NoYW5nZWRfZmlsZShz
ZWxmKToKKyAgICAgICAgIiIiUmVmdXNlIHRvIGRlbGV0ZSBkaXJlY3RvcmllcyB3aXRoIGNoYW5n
ZWQgZmlsZXMuIiIiCisgICAgICAgIHRyZWUgPSBzZWxmLmdldFRyZWUoKQorICAgICAgICB0cmVl
LmFkZChUZXN0UmVtb3ZlLmJfYykKKyAgICAgICAgdHJlZS5jb21taXQoIm1ha2Ugc3VyZSBiIGFu
ZCBjIGFyZSB2ZXJzaW9uZWQiKQorICAgICAgICBmID0gZmlsZSgnYi9jJywgJ3diJykKKyAgICAg
ICAgZi53cml0ZSgic29tZSBvdGhlciBuZXcgY29udGVudCEiKQorICAgICAgICBmLmNsb3NlKCkK
KyAgICAgICAgc2VsZi5hc3NlcnRJbldvcmtpbmdUcmVlKFRlc3RSZW1vdmUuYl9jKQorICAgICAg
ICB0cnk6CisgICAgICAgICAgICB0cmVlLnJlbW92ZShUZXN0UmVtb3ZlLmIsIGtlZXBfZmlsZXM9
RmFsc2UpCisgICAgICAgICAgICBzZWxmLmZhaWwoJ1Nob3VsZCB0aHJvdyBCenJSZW1vdmVDaGFu
Z2VkRmlsZXNFcnJvcicpCisgICAgICAgIGV4Y2VwdCBlcnJvcnMuQnpyUmVtb3ZlQ2hhbmdlZEZp
bGVzRXJyb3IsIGU6CisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUocmUubWF0Y2goJ0Nhblwn
dCByZW1vdmUgY2hhbmdlZCBvciB1bmtub3duIGZpbGVzOicKKyAgICAgICAgICAgICAgICAnLipt
b2RpZmllZDouKmIvYy4qJywKKyAgICAgICAgICAgICAgICBzdHIoZSksIHJlLkRPVEFMTCkpCisg
ICAgICAgIHNlbGYuYXNzZXJ0SW5Xb3JraW5nVHJlZShUZXN0UmVtb3ZlLmJfYykKKyAgICAgICAg
c2VsZi5mYWlsVW5sZXNzRXhpc3RzKFRlc3RSZW1vdmUuYl9jKQorCisgICAgICAgICNzZWUgaWYg
d2UgY2FuIGZvcmNlIGl0IG5vdy4uCisgICAgICAgIHRyZWUucmVtb3ZlKFRlc3RSZW1vdmUuYiwg
a2VlcF9maWxlcz1GYWxzZSwgZm9yY2U9VHJ1ZSkKKyAgICAgICAgc2VsZi5hc3NlcnROb3RJbldv
cmtpbmdUcmVlKFRlc3RSZW1vdmUuYl9jKQorICAgICAgICBzZWxmLmZhaWxJZkV4aXN0cyhUZXN0
UmVtb3ZlLmJfYykKCg==

=== added directory doc/developers // file-id:docdevelopers-20070507164002-62r0
... es2b29myxges-1 // last-changed:robertc@robertcollins.net-20070507164814-wpa
... gonutf4b5cf8s
=== added file doc/developers/incremental-push-pull.txt // file-id:incrementalp
... ushpull.-20070508045640-zneiu1yzbci574c6-1 // last-changed:robertc@robertco
... llins.net-20070509153606-m556z2rb3d76b2f3 // encoding:base64
LS0tIC9kZXYvbnVsbAorKysgZG9jL2RldmVsb3BlcnMvaW5jcmVtZW50YWwtcHVzaC1wdWxsLnR4
dApAQCAtMCwwICsxLDI0MiBAQAorSW5jcmVtZW50YWwgcHVzaC9wdWxsCistLS0tLS0tLS0tLS0t
LS0tLS0tLS0KKworVGhpcyB1c2UgY2FzZSBjb3ZlcnMgcHVsbGluZyBpbiBvciBwdXNoaW5nIG91
dCBzb21lIG51bWJlciBvZiByZXZpc2lvbnMgd2hpY2gKK2lzIHR5cGljYWxseSBhIHNtYWxsIGZy
YWN0aW9uIG9mIHRoZSBudW1iZXIgYWxyZWFkeSBwcmVzZW50IGluIHRoZSB0YXJnZXQKK3JlcG9z
aXRvcnkuIFB1c2hpbmcgYW5kIHB1bGxpbmcgYXJlIGRlZmluZWQgYXMgYnJhbmNoIGxldmVsIG9w
ZXJhdGlvbnMgZm9yIGVhc2UKK29mIGludGVyYWN0aW9uIHdpdGggVkNTIHN5c3RlbXMgdGhhdCBo
YXZlIG5vIHJlcG9zaXRvcnkgYWJzdHJhY3Rpb24gKHN1Y2ggYXMKK2J6ci1zdm4gb3IgR05VIEFy
Y2gpIGJ1dCB3aXRoaW4gYnpybGliJ3MgY29yZSB0aGV5IGFyZSBjdXJyZW50bHkgdGhlCityZXNw
b25zaWJpbGl0eSBvZiB0aGUgUmVwb3NpdG9yeSBvYmplY3QuCisKK0Z1bmN0aW9uYWwgUmVxdWly
ZW1lbnRzCis9PT09PT09PT09PT09PT09PT09PT09PQorCitBIHB1c2ggb3IgcHVsbCBvcGVyYXRp
b24gbXVzdDoKKyAqIENvcHkgYWxsIHRoZSBkYXRhIHRvIHJlY29uc3RydWN0IHRoZSBzZWxlY3Rl
ZCByZXZpc2lvbnMgaW4gdGhlIHRhcmdldAorICAgYnJhbmNoLiBUaGlzIGlzIHRoZSBnb2FsIG9m
IHB1c2ggYW5kIHB1bGwgYWZ0ZXIgYWxsLgorICogUmVqZWN0IGNvcnJ1cHQgZGF0YS4gQXMgYnpy
IGhhcyBubyBpbm5hdGUgbWVjaGFuaXNtIGZvciBkaXNjYXJkaW5nIGNvcnJ1cHRlZAorICAgZGF0
YSwgY29ycnVwdGVkIGRhdGEgc2hvdWxkIG5vdCBiZSBpbmNvcnBvcmF0ZWQgYWNjaWRlbnRhbGx5
LgorCitGYWN0b3JzIHdoaWNoIHNob3VsZCBhZGQgd29yayBmb3IgcHVzaC9wdWxsCis9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKKyAqIEJhc2VsaW5lIG92ZXJo
ZWFkOiBUaGUgdGltZSB0byBjb25uZWN0IHRvIGJvdGggYnJhbmNoZXMuCisgKiBBY3R1YWwgbmV3
IGRhdGEgaW4gdGhlIHJldmlzaW9ucyBiZWluZyBwdWxsZWQgKGRyaXZlcyB0aGUgYW1vdW50IG9m
IGRhdGEgdG8KKyAgIG1vdmUgYXJvdW5kLCBpbmNsdWRlcyB0aGUgY29tbWl0IG1lc3NhZ2VzIGV0
YykKKyAqIE51bWJlciBvZiByZXZpc2lvbnMgaW4gdGhlIHR3byByZXBvc2l0b3JpZXMgKHNjYWxp
bmcgYWZmZWN0cyB0aGUKKyAgIGRldGVybWluYXRpb24gb2Ygd2hhdCByZXZpc2lvbnMgdG8gbW92
ZSBhcm91bmQpLgorCitQdXNoL3B1bGwgb3ZlcnZpZXcKKz09PT09PT09PT09PT09PT09PQorCisx
LiBOZXcgZGF0YSBpcyBpZGVudGlmaWVkIGluIHRoZSBzb3VyY2UgcmVwb3NpdG9yeS4KKzIuIFRo
YXQgZGF0YSBpcyByZWFkIGZyb20gdGhlIHNvdXJjZSByZXBvc2l0b3J5LgorMy4gVGhlIHNhbWUg
ZGF0YSBpcyB2ZXJpZmllZCBhbmQgd3JpdHRlbiB0byB0aGUgdGFyZ2V0IHJlcG9zaXRvcnkgaW4g
c3VjaCBhCisgICBtYW5uZXIgdGhhdCBpdHMgbm90IHZpc2libGUgdG8gcmVhZGVycyB1bnRpbCBp
dHMgcmVhZHkgZm9yIHVzZS4KKworTmV3IGRhdGEgaWRlbnRpZmljYXRpb24KKysrKysrKysrKysr
KysrKysrKysrKysrCisKK1dlIGhhdmUgYSBzaW5nbGUgdG9wIGxldmVsIGRhdGEgb2JqZWN0OiBy
ZXZpc2lvbnMuIEV2ZXJ5dGhpbmcgZWxzZSBpcworc3Vib3JkaW5hdGUgdG8gcmV2aXNpb25zLCBz
byBkZXRlcm1pbmluZyB0aGUgcmV2aXNpb25zIHRvIHByb3BvZ2F0ZSBzaG91bGQgYmUKK2FsbCB0
aGF0cyBuZWVkZWQuIFRoaXMgZGVwZW5kcyBvbiByZXZpc2lvbnMgd2l0aCBwYXJ0aWFsIGRhdGEg
LSBzdWNoIGFzIHRob3NlCit3aXRoIG5vIHNpZ25hdHVyZSAtIGJlaW5nIGZsYWdnZWQgaW4gc29t
ZSBlZmZpY2llbnQgbWFubmVyLgorCitXZSBjb3VsZCBkbyB0aGlzIGluIHR3byBtYW5uZXJzOiBk
ZXRlcm1pbmUgcmV2aXNpb25zIHRvIHN5bmMgYW5kIHNpZ25hdHVyZXMgdG8gc3luYyBpbiB0d28g
cGFzc2VzLCBvciBjaGFuZ2UgdGhlICd2YWx1ZScgb2YgYSByZXZpc2lvbiBpbXBsaWNpdGx5IHdo
ZW4gdGhlIHNpZ25hdHVyZSBpcyBkaWZmZXJlbnQuIEUuZy4gYnkgdXNpbmcgbWVya2xlIGhhc2gg
dHJlZXMgd2l0aCB0aGUgc2lnbmF0dXJlIGRhdGEgYSBzZXBhcmF0ZSBjb21wb25lbnQgdGhlIHNp
Z25hdHVyZXMgd2lsbCBuYXR1cmFsbHkgYmUgaWRlbnRpZmllZCB0byBzeW5jLgorCitXZSB3YW50
IHRvIG9ubHkgZXhjaGFuZ2UgZGF0YSBwcm9wb3J0aW9uYWwgdG8gdGhlIG51bWJlciBvZiBuZXcg
cmV2aXNpb25zIGFuZAorc2lnbmF0dXJlcyBpbiB0aGUgc3lzdGVtIHRob3VnaC4gT25lIHdheSB0
byBhY2hpZXZlIHRoaXMgZm9yIHJldmlzaW9ucyBpcyB0bword2FsayB0aGUgZ3JhcGggb3V0IGZy
b20gdGhlIGRlc2lyZWQgdGlwcyB1bnRpbCB0aGUgc3VyZmFjZSBhcmVhIGludGVyc2VjdGlvbiBp
cworZm91bmQuIEZvciBzaWduYXR1cmVzIGEgc2V0IGRpZmZlcmVuY2Ugc2VlbXMgdG8gYmUgbmVl
ZGVkIGFzIHRoZXJlIGlzIG5vIERBRyBvZiBzaWduYXR1cmVzOiB0aGUgcHJlc2VuY2Ugb2Ygb25l
IGhhcyBubyBpbXBsaWNhdGlvbnMgb24gdGhlIHByZXNlbmNlIG9mIGFub3RoZXIsIHNvIGEgZnVs
bCBwYXNzIG92ZXIgdGhlIHNldCBvZiBzaWduYXR1cmVzIHdvdWxkIGJlIHJlcXVpcmVkIHRvIGNv
bmZpcm0gbm8gbmV3IHNpZ25hdHVyZXMgYXJlIG5lZWRlZCAobGV0IGFsb25lIHJlcGxhY2VkIHNp
Z25hdHVyZXMpLgorCitJRkYgd2UgY2FuIGRldGVybWluZSAnbmV3IHJldmlzaW9ucycgYW5kICdu
ZXcgc2lnbmF0dXJlcycgd2l0aG91dCBmdWxsIGdyYXBoIGFjY2VzcyB0aGVuIHdlIGNhbiBzY2Fs
ZSBhY2NlcHRhYmxlIGZvciBwdXNoIGFuZCBwdWxsLgorCitHaG9zdHMgYXJlIHJldmlzaW9ucyB3
aGljaCBhcmUgbm90IHByZXNlbnQgaW4gYSBwYXJ0aWN1bGFyIHJlcG9zaXRvcnkuIEZpbGxpbmcg
Z2hvc3RzIHJlZmVycyB0byByZW1vdmluZyBnaG9zdHMgaW4gdGhlIHRhcmdldCByZXBvc2l0b3J5
IHdoZW4gdGhlIGdob3N0IGlzIHByZXNlbnQgaW4gdGhlIHNvdXJjZSByZXBvc2l0b3J5LiBGaWxs
aW5nIGdob3N0cyBjYW4gYmUgZWl0aGVyIGFuIGV4cGxpY2l0IG9yIGltcGxpY2l0IGFjdGlvbi4g
VGhlIGNvbW1vbiBjYXNlIGlzIG5vIGdob3N0cy4KKworU2V0IHN5bmNocm9uaXNhdGlvbiBhcHBy
b2FjaGVzCiteXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl4KKworQSBzZXQgc3luY2hyb25p
c2F0aW9uIGFwcHJvYWNoIGlzIG9uZSB3aGljaCBzeW5jaHJvbmlzZXMgdHdvIHNldHMgd2l0aG91
dAorcmVnYXJkIGZvciBpbm5hdGUgc3RydWN0dXJlLiBUaGlzIGNhbiBiZSB2ZXJ5IGVmZmljaWVu
dCBidXQgcmVxdWlyZXMgYWRkaW5nIGEKK25ldyBub2RlIHRvIGJlIHByb2Nlc3NlZCB3aXRoIGV2
ZXJ5IGNvbW1pdC4gQ2FjaGluZyBvZiB0aGUgcmVzdWx0cyBvZiB0aGUKK3ZhcmlvdXMgc2V0IGJh
c2VkIHN5bmNzIEkndmUgc2VlbiBpcyBwb3NzaWJsZSBidXQgYmVjYXVzZSB0aGUgZGF0YSBzdHJ1
Y3R1cmVzCitsb29rIGRpZmZlcmVudCBkZXBlbmRpbmcgb24gdGhlIHRpcCByZXZpc2lvbiBiZWlu
ZyBzeW5jZWQgdXAgdG8gdGhlIGNhY2hlIG5lZWRzCit0byBiZSB2ZXJ5IGNvbXBsZXguIEkgcmVj
b21tZW5kIG5vdCB1c2luZyBzdWNoIGFuIGFwcHJvYWNoIGZvciB0aGUgY29tbW9uIGNhc2UKK3B1
bGwgYmVjYXVzZSBvZiB0aGUgZmFpbHVyZSB0byBzY2FsZS4gV2UgY2FuIHVzZSBzdWNoIGFuIGFw
cHJvYWNoIGZvcgorc3luY2hyb25pc2F0aW9uIG9mIG5ldyBzaWduYXR1cmVzIGFuZCBnaG9zdHMs
IHdoaWNoIHNob3VsZCBiZSBhbiBleHBsaWNpdAorb3B0aW9uIGluIGJvdGggY2FzZXMuCisKK0RB
RyBzeW5jaHJvbmlzYXRpb24gYXBwcm9hY2hlcworXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5e
Xl5eCisKK0EgREFHIGJhc2VkIGFwcHJvYWNoIHRvIHN5bmNocm9uaXN0aW9uIGlzIG9uZSB0aGF0
IHVzZXMgdGhlIERBRyBzdHJ1Y3R1cmUgdG8KK2RldGVybWluZSB0aGUgZGlmZmVyZW5jZSBpbiBw
cmVzZW50IG5vZGVzLiBJdCBjYW4gYXMgYSByZXN1bHQgb3BlcmF0ZSBmcm9tIHRoZQordGlwIG9m
IHRoZSBEQUcgYmFja3dhcmRzLiBBIGRhZyBiYXNlZCBhcHByb2FjaCBzaG91bGQgYWxsb3cgaW5j
cmVtZW50YWwgYWNjZXNzCit0byBkYXRhIGFuZCBub3QgcmVxdWlyZSBhIGZ1bGwtZ3JhcGggc2Nh
biBmb3IgaW5jcmVtZW50YWwgb3BlcmF0aW9ucy4KKworRmlsZSBsZXZlbCBzY2FsaW5nCiteXl5e
Xl5eXl5eXl5eXl5eXl4KKworV2Ugc2hvdWxkIHJlYWQgcm91Z2hseSBhcyBtdWNoIG9mIHRoZSBy
ZXZpc2lvbiBsZXZlbCBncmFwaCBhcyBpcyBuZWVkZWQgZnJvbQorZWFjaCByZXBvc2l0b3J5IHRv
IGRldGVybWluZSB0aGUgbm9kZSBkaWZmZXJlbmNlLiAgSWYgcmVxdWVzdGVkIHdlIHNob3VsZAor
cGVyZm9ybSBhIGRldGFpbGVkIHNjYW4gdG8gcGljayB1cCBnaG9zdCByZXZpc2lvbnMgYW5kIHJl
dmlzaW9ucyB3aGljaCBoYXZlIGhhZAorc2lnbmF0dXJlcyBhZGRlZC4gVGhpcyBzaG91bGQgbm90
IGJlIHRoZSBkZWZhdWx0IGFzIGl0IHJlcXVpcmVzIGZ1bGwgaGlzdG9yeQorYWNjZXNzIGluIGJv
dGggY2FzZXMuCisKK0V4cGVjdGVkIGZpbGUgSU8gYW5kIGFjY2VzcyBwYXR0ZXJuOgorCisgKiBD
b21tb24gY2FzZTogcmVwbyB3aXRoIG1hbnkgYnJhbmNoZXMgb2Ygb25lIHByb2plY3QsIHRvIHRo
ZSBzYW1lLgorCisgICAxLiBTb3VyY2UgYW5kIFRhcmdldCBicmFuY2ggdGlwcyByZWFkLgorICAg
Mi4gRmluZCB0aGUgdGlwIG9mIGVhY2ggYnJhbmNoIGluIHRoZWlyIHJlcG8gKHdpbGwgcmVxdWly
ZSByZWFkaW5nIHNvbWUgb2YKKyAgICAgIHRoZSByZXZpc2lvbiBncmFwaCBidXQgaXMgdHlwaWNh
bGx5IG5lYXIgdGhlIGVuZCBvZiB0aGUgZ3JhcGgpLgorICAgMy4gUmVhZCBhbmQgcGFyc2UgaW5j
cmVhc2luZyBhbW91bnRzIG9mIHRoZSByZXZpc2lvbiBncmFwaCB1bnRpbCBvbmUgaXMKKyAgICAg
IGZvdW5kIHRvIGJlIGEgc3Vic2V0IG9mIHRoZSBvdGhlciwgb3IgYSBjb21wbGV0ZSBsaXN0IG9m
IHJldmlzaW9ucyB0byBiZQorICAgICAgdHJhbnNtaXR0ZWQgaXMgY3JlYXRlZC4KKworICogVW5j
b21tb24gY2FzZXM6IAorICAgCisgICAxLiBSZXBvc2l0b3JpZXMgd2l0aCBtYW55IHByb2plY3Rz
IG9yIGJyYW5jaGVzIHdoaWNoIGFyZSB2ZXJ5IG9sZCBtYXkKKyAgICAgIHJlcXVpcmUgcmVhZGlu
ZyBhIGxvdCBvZiB1bnJlbGF0ZWQgZ3JhcGggZGF0YS4KKworICAgMS4gSW5pdGlhbCBwdXNoL3B1
bGwgc2NlbmFyaW9zIHNob3VsZCBub3QgcmVxdWlyZSByZWFkaW5nIGFuIGVudGlyZSBncmFwaC4K
KworCitBUEkgc2NhbGluZworXl5eXl5eXl5eXl4KKworIDEuIEdldCBicmFuY2ggdGlwcy4KKyAy
LiBEZXRlcm1pbmUgb25lIHNpZGVkIGdyYXBoIGRpZmZlcmVuY2UuIFRvIGF2b2lkIG9idGFpbmlu
ZyBhIGZ1bGwgZ3JhcGggb3ZlcgorICAgIHRoZSB3aXJlIHRoaXMgbmVlZHMgdG8gYmUgZG9uZSB3
aXRob3V0IHJlZmVyZW5jZSB0byB0aGUgZnVsbCBncmFwaCwgYW5kCisgICAgd2l0aCBzb21lIGxv
Z2FydGhtaWMgc2NhbGluZyBhbGdvcml0aG0uIFRoZXJlIGFyZSBzZXZlcmFsIGFscmVhZHkgYXZh
aWxhYmxlCisgICAgZm9yIHRoaXMuIAorCitXaXRoIGdob3N0IGFuZCBuZXctc2lnbmF0dXJlIGRl
dGVjdGlvbjoKKworICogRmlsZSBJTyBhY2Nlc3MgcGF0dGVybiB3aWxsIHJlYWQgdGhlIGVudGly
ZSBncmFwaCBvbiB0aGUgJ3RhcmdldCcgc2lkZSAtIGlmCisgICBubyBnaG9zdHMgYXJlIHByZXNl
bnQgdGhlbiBzdG9wLCBvdGhlcndpc2Ugc2VlayB0aGUgbmV3IHJldmlzaW9ucyBvbiB0aGUKKyAg
IHNvdXJjZSBzaWRlIHdpdGggdGhlIHJlZ3VsYXIgYWxnb3JpdGhtIGFuZCBhbHNvIGV4cGxpY2l0
bHkgc2VhcmNoIGZvciB0aGUKKyAgIGdob3N0IHBvaW50cyBmcm9tIHRoZSB0YXJnZXQ7IHBsdXMg
YSBzZXQgZGlmZmVyZW5jZSBzZWFyY2ggaXMgbmVlZGVkIG9uCisgICBzaWduYXR1cmVzLgorCisg
KiBTZW1hbnRpYyBsZXZlbCBjYW4gcHJvYmFibHkgYmUgdHVuZWQsIGJ1dCBhcyBpdHMgYWxzbyBj
b21wbGV4IEkgc3VnZ2VzdAorICAgZGVmZXJyaW5nIGFuYWx5c2lzIGZvciBvcHRpbWFsIGJlaGF2
aW91ciBvZiB0aGlzIHVzZSBjYXNlLgorCisKK0RhdGEgcmVhZGluZworKysrKysrKysrKysrCisK
K1doZW4gdHJhbnNmZXJyaW5nIGluZm9ybWF0aW9uIGFib3V0IGEgcmV2aXNpb24gdGhlIGdyYXBo
IG9mIGRhdGEgZm9yIHRoZQorcmV2aXNpb24gaXMgd2Fsa2VkOiByZXZpc2lvbiAtPiBpbnZlbnRv
cnksIHJldmlzaW9uIC0+IG1hdGNoaW5nIHNpZ25hdHVyZSwKK2ludmVudG9yeSAtPiBmaWxlIGlk
czpyZXZpc2lvbiBwYWlycy4KKworRmlsZSBsZXZlbCBzY2FsaW5nCiteXl5eXl5eXl5eXl5eXl5e
Xl4KKworQXMgd2UncmUgcmVhZGluZyBhbHJlYWR5IGNvbW1pdHRlZCBkYXRhLCBhcyBsb25nIGFz
IG5vdGhpbmcgaXMgbXV0YXRpbmcgZGF0YSBvbgorZGlzayByZWFkaW5nIHNob3VsZCBiZSByYWNl
IGZyZWUuIFdlIHdpbGw6CisKKyAtIHJlYWQgZWFjaCByZXZpc2lvbiBvYmplY3QKKyAtIHJlYWQg
dGhlIG1hdGNoaW5nIGludmVudG9yeSBkZWx0YQorIC0gYXR0ZW1wdCB0byByZWFkIGEgc2lnbmF0
dXJlIG9iamVjdAorIC0gcGFyc2UgdGhlIGludmVudG9yeSBkZWx0YQorIC0gcmVhZCB0aGUgZmls
ZWlkOnJldmlzaW9uaWQgY29tcHJlc3NlZCBjaHVuayBmb3IgZWFjaCBsaW5lIGluIHRoZSBpbnZl
bnRvcnkKKyAgIGRlbHRhCisKK1RoZXJlcyBubyBwb2ludCB2YWxpZGF0aW5nIHRoYXQgdGhlIGRh
dGEgcmVhZCBpcyB2YWxpZCwgYXMgdHJhbnNtaXNzaW9uIHRocm91Z2ggdG8gdGhlIGNsaWVudCB3
cml0aW5nIHRoZSBkYXRhIG1pZ2h0IGludmFsaWRhdGUgaXQ7IHdlIG5lZWQgdG8gdmFsaWRhdGUg
YmVmb3JlIHdlIHdyaXRlLgorCitBUEkgc2NhbGluZworXl5eXl5eXl5eXl4KKworR2l2ZW4gdGhh
dCB3ZSBoYXZlIGVzdGFibGlzaGVkIHRoZSByZXZpc2lvbnMgbmVlZGVkLCBhIHNpbmdsZSBBUEkg
Y2FsbCBzaG91bGQKK3N1ZmZpY2UgdG8gb2J0YWluIGFsbCBkYXRhOyB0aGUgQVBJIHNob3VsZCBw
cmVzZW50IHRoZSBkYXRhIGluIHN1Y2ggYW4gb3JkZXIKK3RoYXQgaXQgY2FuIGJlIHZhbGlkYXRl
ZCBhcyBpdCBhcnJpdmVzIGFuZCB0aHVzIG5vdCByZXF1aXJlIGxhcmdlIHNjYWxlCitidWZmZXJp
bmcgb24gZGlzay4gU3BlY2lmaWNhbGx5IGVhY2ggaXRlbSBvZiBkYXRhIHNob3VsZCBiZSB2YWxp
ZGF0YWJsZSAoZS5nLgorZm9yIHNvbWUgZmlsZSBkYXRhIHdlIHdhbnQgdGhlIGZpbGVpZDpyZXZp
c2lvbmlkOnZhbGlkYXRpb25oYXNoICsgY29udGVudCkuCisKKworRGF0YSBWZXJpZmljYXRpb24g
YW5kIHdyaXRpbmcKKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCisKK05ldyBkYXRhIHdy
aXR0ZW4gdG8gYSByZXBvc2l0b3J5IHNob3VsZCBiZSBjb21wbGV0ZWQgaW50YWN0IHdoZW4gaXQg
aXMgbWFkZQordmlzaWJsZS4gVGhpcyBzdWdnZXN0cyB0aGF0IGVpdGhlciBhbGwgdGhlIGRhdGEg
Zm9yIGEgcmV2aXNpb24gbXVzdCBiZSBtYWRlCithdG9taWNhbGx5IHZpc2libGUgKGUuZy4gYnkg
cmVuYW1pbmcgYSBzaW5nbGUgZmlsZSkgb3IgdGhlIGxlYWYgbm9kZXMgb2YgdGhlCityZWZlcmVu
Y2UgZ3JhcGggbXVzdCBiZWNvbWUgdmlzaWJsZSBmaXJzdC4KKworRGF0YSBpcyByZWZlcnJlZCB0
byB2aWEgdGhlIGZvbGxvd2luZyBncmFwaDoKK3JldmlzaW9uIC0+IHJldmlzaW9uCityZXZpc2lv
biAtPiBzaWduYXR1cmUKK3JldmlzaW9uIC0+IGludmVudG9yeQoraW52ZW50b3J5IC0+IGZpbGVp
ZDpyZXZpc2lvbmlkCitmaWxlaWQ6cmV2aXNpb25pZCAtPiBmaWxlaWQ6cmV2aXNpb25pZAorCitE
YXRhIGlzIHZlcmlmaWFibGUgdmlhIGEgZGlmZmVyZW50IG9yZGVyaW5nOgorc2lnbmF0dXJlIC0+
IHJldmlzaW9uIC0+IGludmVudG9yeSAtPiBmaWxlaWQ6cmV2aXNpb25pZCB0ZXh0cy4KKworV2Ug
ZG9udCBncGcgdmVyaWZ5IGVhY2ggcmV2aXNpb24gdG9kYXk7IHRoaXMgYW5hbHlzaXMgb25seSBz
cGVha3MgdG8gaGFzaAordmVyaWZpY2F0aW9uIG9mIGNvbnRlbnRzLgorCitUbyB2YWxpZGF0ZSBh
IHJldmlzaW9uIHdlIG5lZWQgdG8gdmFsaWRhdGUgdGhlIGRhdGEgaXQgcmVmZXJzIHRvLiBCdXQg
dG8KK3ZhbGlkYXRlIHRoZSBjb250ZW50cyBvZiBhIHJldmlzaW9uIHdlIG5lZWQgdGhlIG5ldyB0
ZXh0cyBpbiB0aGUgaW52ZW50b3J5IGZvcgordGhlIHJldmlzaW9uIC0gdG8gY2hlY2sgYSBmaWxl
aWQ6cmV2aXNpb25pZCB3ZSBuZWVkIHRvIGtub3cgdGhlIGV4cGVjdGVkIHNoYTEKK29mIHRoZSBm
dWxsIHRleHQgYW5kIHRodXMgYWxzbyBuZWVkIHRvIHJlYWQgdGhlIGRlbHRhIGNoYWluIHRvIGNv
bnN0cnVjdCB0aGUKK3RleHQgYXMgd2UgYWNjZXB0IGl0IHRvIGRldGVybWluZSBpZiBpdHMgdmFs
aWQuIFByb3ZpZGluZyBzZXBhcmF0ZSB2YWxpZGF0b3JzCitmb3IgdGhlIGNob3NlbiByZXByZXNl
bnRhdGlvbiB3b3VsZCBhZGRyZXNzIHRoaXMuCitlLmc6IEZvciBhbiBpbnZlbnRvcnkgZW50cnkg
RklMRUlEOlJFVklTSU9OSUQgd2Ugc3RvcmUgdGhlIHZhbGlkYXRvciBvZiB0aGUKK2Z1bGwgdGV4
dCA6U0hBMTouIElmIHdlIGFsc28gc3RvcmVkIHRoZSB2YWxpZGF0b3Igb2YgdGhlIGNob3NlbiBk
aXNrCityZXByZXNlbnRhdGlvbiAoOkRFTFRBU0hBMTopIHdlIGNvdWxkIHZhbGlkYXRlIHRoZSB0
cmFuc21pdHRlZCByZXByZXNlbnRhdGlvbgord2l0aG91dCBleHBhbmRpbmcgdGhlIGRlbHRhIGlu
IHRoZSBjb21tb24gY2FzZS4gSWYgdGhhdCBmYWlsZWQgd2UgY291bGQgZXhwYW5kCit0aGUgZGVs
dGEgY2hhaW4gYW5kIHRyeSBhZ2FpbnN0IHRoZSBmdWxsIHRleHQgdmFsaWRhdG9yLCBhbmQgZmlu
YWxseSBmYWlsLiBBcworZGlmZmVyZW50IGRlbHRhIGdlbmVyYXRvcnMgbWlnaHQgZ2VuZXJhdGUg
ZGlmZmVyZW50IGRlbHRhcywgOkRFTFRBU0hBMTogc2hvdWxkCitub3QgYmVjb21lIHBhcnQgb2Yg
dGhlIHJldmlzaW9uIHZhbGlkYXRvciwgb25seSB0aGUgaW52ZW50b3J5IGRpc2sgZW5jb2Rpbmcu
IEluCithIHJlbGF0ZWQgbWFubmVyIGEgdHJhbnNtaXNzaW9uIGZvcm1hdCB0aGF0IGFsbG93ZWQg
Y2hlYXAgdmFsaWRhdGlvbiBvZiBjb250ZW50Cit3aXRob3V0IGFwcGx5aW5nIGxvY2FsbHkgc3Rv
cmVkIGRlbHRhcyB3b3VsZCBiZSBhZHZhbnRhZ2VvdXMgYmVjYXVzZSBubyBsb2NhbAorcmVhZHMg
d291bGQgYmUgaW5jdXJyZWQgdG8gdmFsaWRhdGUgbmV3IGNvbnRlbnQuIEZvciBpbnN0YW5jZSwg
YWx3YXlzIHNlbmRpbmcgYQorZnVsbCB0ZXh0IGZvciBhbnkgZmlsZSwgcG9zc2libHkgd2l0aCBh
IGRlbHRhLWNoYWluIHdoZW4gdHJhbnNtaXR0aW5nIG11bHRpcGxlCityZXZpc2lvbmlkcyBvZiB0
aGUgZmlsZSwgd291bGQgYWxsb3cgdGhpcy4gKGdpdCBwYWNrLWZpbGVzIGhhdmUgdGhpcyBwcm9w
ZXJ0eSkuCisKK092ZXJ2aWV3IHN1bW1hcnkKK15eXl5eXl5eXl5eXl5eXl4KKworQSBzaW5nbGUt
ZmlsZSBsb2NhbCBmb3JtYXQgd291bGQgYWxsb3cgc2FmZSBhdG9taWMgYWRkaXRpb24gb2YgZGF0
YSB3aGlsZQorYWxsb3dpbmcgb3B0aW1pc2FsIHRyYW5zbWlzc2lvbiBvcmRlciBvZiBkYXRhLiBG
YWlsaW5nIHRoaXMgdGhlIHZhbGlkYXRpb24gb2YKK2RhdGEgc2hvdWxkIGJlIHR1bmVkIHRvIG5v
dCByZXF1aXJlIHJlYWRpbmcgbG9jYWwgdGV4dHMgZHVyaW5nIGRhdGEgYWRkaXRpb24KK2V2ZW4g
aW4gdGhlIHByZXNlbmNlIG9mIGRlbHRhIGNoYWlucy4gV2Ugc2hvdWxkIGhhdmUgdHJhbnNtaXNz
aW9uLXZhbGlkYXRvcnMKK3NlcGFyYXRlIGZyb20gY29udGVudCB2YWxpZGF0b3JzIHRoYXQgYWxs
b3cgdmFsaWRhdGlvbiBvZiB0aGUgZGVsdGEtdHJhbnNtaXR0ZWQKK2Zvcm0gb2Ygb2JqZWN0cy4K
KworRmlsZSBsZXZlbCBzY2FsaW5nCiteXl5eXl5eXl5eXl5eXl5eXl4KKworKiBFdmVyeSBuZXcg
ZmlsZSB0ZXh0IHJlcXVpcmVzIHRyYW5zbWlzc2lvbiBhbmQgbG9jYWwgc2VyaWFsaXNhdGlvbi4K
KyogRXZlcnkgY29tbWl0IHJlcXVpcmVzIHRyYW5zbWlzc2lvbiBhbmQgc3RvcmFnZSBvZiBhIHJl
dmlzaW9uLCBzaWduYXR1cmUgYW5kIGludmVudG9yeS4KKworVGh1cyA0MDAwIGNvbW1pdHMgdG8g
YSA1MDAwMCBwYXRoIHRyZWUgb2YgMTAgZmlsZXMgb24gYXZlcmFnZXMgcmVxdWlyZXMgKHdpdGgK
K2tuaXRzKSBiZXR3ZWVuIDI2IHdyaXRlcyAoMiooMysxMCkpIGFuZCA4MDAwNiAoMiooNDAwMCox
MCArIDMpKSB3cml0ZXMuIEluIGFsbAorY2FzZXMgdGhlcmUgYXJlIDQwMDAgKiAxMyBkaXN0aW5j
dCBvYmplY3RzIHRvIHJlY29yZC4KKworR3JvdXBpbmcgZGF0YSBieSBmaWxlaWQsIGNvbnRlbnQg
YW5kIG1ldGFkYXRhLCBnaXZlcyB0aGUgZmlndXJlcyBhYm92ZS4KK0RhdGEgZ3JvdXBpbmc6CisK
KyogRmlsZSBwZXIgZnVsbCBpZGVudGlmaWVyIChmaWxlaWQ6cmV2aXNpb25pZDptZXRhfGNvbnRl
bnQpOiAxMDQwMDAKKyogRGVsdGEtY2hhaW4gcGVyIG9iamVjdDogb2JqZWN0IGlkIGNvdW50ICog
Y29uc3RhbnQgb3ZlcmhlYWQgcGVyIG9iamVjdCBpZCAKKyAgKDI2IC0+IDgwMDA2KQorKiBDb2xs
YXRpb24vcGFjayBmaWxlOiAxCisKK1BlcmZvcm1hbmNlIGZvciB0aGVzZSBkZXBlbmRzIGhlYXZp
bHkgb24gaW1wbGVtZW50YXRpb246CisgLSBVc2luZyBmdWxsIGlkcyB3ZSBjb3VsZCBuYW1lIGJ5
IHZhbGlkYXRvciBvciBieSBpZCwgZ2l2aW5nIGJlc3QgcGVyZm9ybWFuY2UKKyAgIHRoYXQgZGVw
ZW5kcyBvbiBlaXRoZXIgcmVjZWl2aW5nIGRhdGEgaW4gdmFsaWRhdG9yIG9yZGVyIG9yIGluIGlk
IG9yZGVyLgorIC0gdXNpbmcgZGVsdGEtY2hhaW4gcGVyIG9iamVjdCB3ZSBnZXQgbGVhc3Qgc2Vl
ayBvdmVyaGVhZCBhbmQgc3lzY2FsbCBvdmVyaGVhZAorICAgaWYgd2UgcmVjaWV2ZSBpbiB0b3Bv
bG9naWNhbCBvcmRlciB3aXRoaW4gdGhlIG9iamVjdCBpZCwgYW5kIG9iamVjdCBpZHMgaW4KKyAg
IGxleGljYWwgb3JkZXIuCisgLSBVc2luZyBhIGNvbGxhdGlvbi9wYWNrIGZpbGUgd2UgY2FuIHN0
cmVhbSBpdCBpbnRvIHBsYWNlIGFuZCB2YWxpZGF0ZSBhcyB3ZSBnbywKKyAgIGdpdmluZyBuZWFy
IGlkZWFsIHBlcmZvcm1hbmNlLgorCitBUEkgc2NhbGluZworXl5eXl5eXl5eXl4KKworVGhlIGFw
aSBmb3Igd3JpdGluZyBuZXcgZGF0YSByZWNpZXZlZCBvdmVyIHRoZSBuZXR3b3JrIHdpbGwgbmVl
ZCB0byBiZSBnZWFyZWQKK3RvIHRoZSB0cmFuc21pc3Npb24gYW5kIGxvY2FsIHN0b3JhZ2UgbWV0
aG9kLiBXaGF0IHdlIG5lZWQgaXMgZm9yIHRoZQordHJhbnNtaXNzaW9uIG1ldGhvZCB0byByZWFz
b25hYmx5IGNsb3NlbHkgbWF0Y2ggdGhlIGRlc2lyZWQgd3JpdGUgb3JkZXJpbmcKK2xvY2FsbHku
IFRoaXMgc3VnZ2VzdHMgdGhhdCBvbmNlIHdlIGRlY2lkZSBvbiB0aGUgYmVzdCBsb2NhbCBzdG9y
YWdlIG1lYW5zIHdlCitzaG91bGQgZGVzaWduIHRoZSBhcGkuCgo=

=== added file doc/developers/index.txt // file-id:index.txt-20070508041241-qzn
... ziunkg0nffhiw-1 // last-changed:robertc@robertcollins.net-20070508041401-rr
... eosr07ptz41d6c // encoding:base64
LS0tIC9kZXYvbnVsbAorKysgZG9jL2RldmVsb3BlcnMvaW5kZXgudHh0CkBAIC0wLDAgKzEsMTUg
QEAKKz09PT09PT09PT09PT09PT09PT09PT09CitCYXphYXIgRGV2ZWxvcGVycyBHdWlkZQorPT09
PT09PT09PT09PT09PT09PT09PT0KKworLS0tLS0tLS0tLS0tLS0tLS0tLQorRG9jdW1lbnRhdGlv
biBpbmRleAorLS0tLS0tLS0tLS0tLS0tLS0tLQorCisqIGBHZW5lcmFsIEhBQ0tJTkcgSE9XVE8g
PEhBQ0tJTkcuaHRtPmBfCisKKyAgR3VpZGUgdG8gcG9saWNpZXMgYW5kIHRvb2xzIGZvciB3b3Jr
aW5nIG9uIEJhemFhciBpdHNlbGYuCisKKyogYFBlcmZvcm1hbmNlIHJvYWRtYXAgPHBlcmZvcm1h
bmNlLXJvYWRtYXAuaHRtPmBfCisKKyAgVGhlIHJvYWRtYXAgZm9yIGZpeGluZyBwZXJmb3JtYW5j
ZSBpbiBienIgb3ZlciB0aGUgbmV4dCBmZXcgcmVsZWFzZXMuCgo=

=== added file doc/developers/performance-roadmap-rationale.txt // file-id:perf
... ormanceroadmapra-20070507174912-mwv3xv517cs4sisd-1 // last-changed:robertc@
... robertcollins.net-20070507174930-gksqv90l5emjrcyq // encoding:base64
LS0tIC9kZXYvbnVsbAorKysgZG9jL2RldmVsb3BlcnMvcGVyZm9ybWFuY2Utcm9hZG1hcC1yYXRp
b25hbGUudHh0CkBAIC0wLDAgKzEsMTE2IEBACitXaGF0IHNob3VsZCBiZSBpbiB0aGUgcm9hZG1h
cD8KKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitBIGdvb2Qgcm9hZG1hcCBwcm92
aWRlcyBhIHBsYWNlIGZvciBjb250cmlidXRvcnMgdG8gbG9vayBmb3IgdGFza3MsIGl0Citwcm92
aWRlcyB1c2VycyB3aXRoIGEgc2Vuc2Ugb2Ygd2hlbiB3ZSB3aWxsIGZpeCB0aGluZ3MgdGhhdCBh
cmUKK2FmZmVjdGluZyB0aGVtLCBhbmQgaXQgYWxzbyBhbGxvd3MgdXMgYWxsIHRvIGFncmVlIGFi
b3V0IHdoZXJlIHdlIGFyZQoraGVhZGVkLiBTbyB0aGUgcm9hZG1hcCBzaG91bGQgY29udGFpbiBl
bm91Z2ggdGhpbmdzIHRvIGxldCBhbGwgdGhpcworaGFwcGVuLgorCitJIHRoaW5rIHRoYXQgaXQg
bmVlZHMgdG8gY29udGFpbiB0aGUgYW5hbHlzaXMgd29yayB3aGljaCBpcyByZXF1aXJlZCwgYQor
bGlzdCBvZiB0aGUgdXNlIGNhc2VzIHRvIGJlIG9wdGltaXNlZCwgdGhlIGRpc2sgY2hhbmdlcyBy
ZXF1aXJlZCwgYW5kCit0aGUgYnJvYWQgc2Vuc2Ugb2YgdGhlIGFwaSBjaGFuZ2VzIHJlcXVpcmVk
LiBJdCBhbHNvIG5lZWRzIHRvIGxpc3QgdGhlCitpbnRlci1kZXBlbmRlbmNpZXMgYmV0d2VlbiB0
aGVzZSB0aGluZ3M6IHdlIHNob3VsZCBhaW0gZm9yIGEgbGFyZ2UKK3N1cmZhY2UgYXJlYSBvZiAn
cmVhZHkgdG8gYmUgd29ya2VkIG9uJyBpdGVtcywgdGhhdCBtYWtlcyBpdCBlYXN5IHRvCitpbXBy
b3ZlIHBlcmZvcm1hbmNlIHdpdGhvdXQgaGF2aW5nIHRvIHdvcmsgaW4gbG9ja3N0ZXAgd2l0aCBv
dGhlcgorZGV2ZWxvcGVycy4KKworQ2xlYXJseSB0aGUgYW5hbHlzaXMgc3RlcCBpcyBhbiBpbW1l
ZGlhdGUgYm90dGxlbmVjayAtIHdlIGNhbm5vdCB0ZWxsIGlmCithbiBvcHRpbWlzYXRpb24gZm9y
IHVzZSBjYXNlIEEgaXMgYSBwZXNzaW1pc20gZm9yIHVzZSBjYXNlIEIgdW50aWwgd2UKK2hhdmUg
YW5hbHlzZWQgYm90aCBBIGFuZCBCLiBJIHByb3Bvc2UgdGhhdCB3ZSBjb21wbGV0ZSB0aGUgYW5h
bHlzaXMgb2YKK3NheSBhIGRvemVuIGNvcmUgdXNlIGNhc2VzIGVuZCB0byBlbmQgZHVyaW5nIHRo
ZSB1cGNvbWluZyBzcHJpbnQgaW4KK0xvbmRvbi4gV2Ugc2hvdWxkIHRoZW4gYmUgYWJsZSB0byBm
b3JrKCkgZm9yIG11Y2ggb2YgdGhlIGRldGFpbGVkIGRlc2lnbgord29yayBhbmQgcmVncm91cCB3
aXRoIGRpc2sgYW5kIGFwaSBjaGFuZ2VzIHNob3J0bHkgdGhlcmVhZnRlci4KKworSSBzdXNwZWN0
IHRoYXQgY2xhcml0eSBvZiBsYXllcmluZyB3aWxsIG1ha2UgYSBiaWcgZGlmZmVyZW5jZSB0bwor
ZGV2ZWxvcGVyIHBhcmFsbGVsaXNtLCBzbyBhbm90aGVyIHByb3Bvc2FsIEkgaGF2ZSBpcyBmb3Ig
dXMgdG8gbG9vayBhdAordGhlIEFQSXMgZm9yIEJyYW5jaCBhbmQgUmVwb3NpdG9yeSBpbiBMb25k
b24gaW4gdGhlIGxpZ2h0IG9mIHdoYXQgd2UKK2hhdmUgbGVhcm50IG92ZXIgdGhlIGxhc3QgeWVh
cnMuCisKK1doYXQgc2hvdWxkIHRoZSBmaW5hbCBzeXN0ZW0gbG9vayBsaWtlLCBob3cgaXMgaXQg
ZGlmZmVyZW50IHRvIHdoYXQgd2UgaGF2ZSB0b2RheT8KKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0KKworT25lIG9mIHRoZSB0aGluZ3MgSSBsaWtlIHRoZSBtb3N0IGFib3V0IGJ6ciBpcyBpdHMg
cmljaCBsaWJyYXJ5IEFQSSwgYW5kCitJJ3ZlIGhlYXJkIHRoaXMgZnJvbSBudW1lcm91cyBvdGhl
ciBmb2xrLiBTbyBhbnl0aGluZyB0aGF0IHdpbGwgcmVtb3ZlCit0aGF0IHNob3VsZCBiZSBjb25z
aWRlcmVkIGEgbGFzdCByZXNvcnQuCisKK1NpbWlsYXJseSBvdXIgcmVsYXRpdmVseSBleGNlbGxl
bnQgY3Jvc3MgcGxhdGZvcm0gc3VwcG9ydCBpcyBjcml0aWNhbAorZm9yIHByb2plY3RzIHRoYXQg
YXJlIHRoZW1zZWx2ZXMgY3Jvc3MgcGxhdGZvcm0sIGFuZCB0aGF0cyBhCitjb25zaWRlcmFibGUg
bnVtYmVyIHRoZXNlIGRheXMuCisKK0FuZCBvZiBjb3Vyc2UsIG91ciBmb2N1cyBvbiBkb2luZyB0
aGUgcmlnaHQgdGhpbmcgaXMgd2hhdCBkaWZmZXJlbnRpYXRlcwordXMgZnJvbSBzb21lIG9mIHRo
ZSBvdGhlciBWQ1Mncywgc28gd2Ugc2hvdWxkIGJlIGZvY3VzaW5nIG9uIGRvaW5nIHRoZQorcmln
aHQgdGhpbmcgcXVpY2tseSA6KS4KKworV2hhdCB3ZSBoYXZlIHRvZGF5IHRob3VnaCBoYXMgZ3Jv
d24gb3JnYW5pY2FsbHkgaW4gcmVzcG9uc2UgdG8gdXMKK2lkZW50aWZ5aW5nIGJvdHRsZW5lY2tz
IG92ZXIgc2V2ZXJhbCBpdGVyYXRpb25zIG9mIGJhY2sgZW5kIHN0b3JhZ2UsCiticmFuY2ggbWV0
YWRhdGEgYW5kIHRoZSBsb2NhbCB0cmVlIHJlcHJlc2VudGF0aW9uLiBJIHRoaW5rIHdlIGFyZQor
bGFyZ2VseSBwYXN0IHRoYXQgYW5kIGFibGUgdG8gZGVzY3JpYmUgdGhlIGlkZWFsIGNoYXJhY3Rl
cmlzdGljcyBvZiB0aGUKK21ham9yIGFjdG9ycyBpbiB0aGUgc3lzdGVtIC0gcHJpbWFyaWx5IFRy
ZWUsIEJyYW5jaCwgUmVwb3NpdG9yeSAtIGJhc2VkCitvbiB3aGF0IHdlIGhhdmUgbGVhcm50Lgor
CitXaGF0IHVzZSBjYXNlcyBzaG91bGQgYmUgY292ZXJlZD8KKy0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLQorCitNeSBsaXN0IG9mIHVzZSBjYXNlcyBpcyBwcm9iYWJseSBub3QgY29t
cGxldGUgLSBpdHMganVzdCB0aGUgb25lcyBJCitoYXBwZW4gdG8gc2VlIGEgbG90IDopLiBJIHRo
aW5rIGVhY2ggc2hvdWxkIGJlIGFuYWx5c2VkIGNvbXByZWhlbnNpdmVseQorc28gd2UgZG9udCBu
ZWVkIHRvIHNheSAncHVzaCBvdmVyIHRoZSBuZXR3b3JrJyAtIGl0cyBpbXBsaWVkIGluIHRoZQor
c2NhbGluZyBhbmFseXNpcyB0aGF0IGJvdGggc2VtYW50aWMgYW5kIGZpbGUgb3BlcmF0aW9uIGxh
dGVuY3kgd2lsbCBiZQorY29uc2lkZXJlZC4KKworVGhlc2UgdXNlIGNhc2VzIGFyZSBvcmRlcmVk
IGJ5IHJvdWdobHkgdGhlIGVhc2Ugb2YgYmVuY2htYXJraW5nLCBhbmQgdGhlCitmcmVxdWVuY3kg
b2YgdXNlLiBUaGlzIG9yZGVyaW5nIGlzIHNvIHRoYXQgd2hlbiBwZW9wbGUgYXJlIGNvbXBhcmlu
ZyBienIKK3RoZXkgYXJlIGdvaW5nIHRvIGdldCB1c2UgY2FzZXMgd2UgaGF2ZSBvcHRpbWlzZWQ7
IGFuZCBzbyB0aGF0IGFzIHdlCitzcGVlZCB0aGluZ3MgdXAgb3VyIGV4aXN0aW5nIHVzZXJzIHdp
bGwgaGF2ZSB0aGUgdGhpbmdzIHRoZXkgZG8gdGhlIG1vc3QKK29wdGltaXNlZC4KKworICogc3Rh
dHVzIHRyZWUKKyAqIHN0YXR1cyBzdWJ0cmVlCisgKiBjb21taXQKKyAqIGNvbW1pdCB0byBhIGJv
dW5kIGJyYW5jaAorICogaW5jcmVtZW50YWwgcHVzaC9wdWxsCisgKiBsb2cKKyAqIGxvZyBwYXRo
CisgKiBhZGQKKyAqIGluaXRpYWwgcHVzaCBvciBwdWxsIFtib3RoIHRvIGEgbmV3IHJlcG8gYW5k
IGFuIGV4aXN0aW5nIHJlcG8gd2l0aAorICAgZGlmZmVyZW50IGRhdGEgaW4gaXRdCisgKiBkaWZm
IHRyZWUKKyAqIGRpZmYgc3VidHJlZQorCisgKiByZXZlcnQgdHJlZQorICogcmV2ZXJ0IHN1YnRy
ZWUKKyAqIG1lcmdlIGZyb20gYSBicmFuY2gKKyAqIG1lcmdlIGZyb20gYSBidW5kbGUKKyAqIGFu
bm90YXRlCisgKiBjcmVhdGUgYSBidW5kbGUgYWdhaW5zdCBhIGJyYW5jaAorICogdW5jb21taXQK
KyAqIG1pc3NpbmcKKyAqIHVwZGF0ZQorICogY2JyYW5jaAorCitob3cgaXMgZGV2ZWxvcG1lbnQg
b24gdGhlIHJvYWRtYXAgY29vcmRpbmF0ZWQ/CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tCisKK0kgdGhpbmsgd2Ugc2hvdWxkIGhvbGQgcmVndWxhciBnZXQt
dG9nZXRoZXJzIChvbiBJUkMpIHRvIGNvb3JkaW5hdGUgb24KK291ciBwcm9ncmVzcywgYmVjYXVz
ZSB0aGlzIGlzIGEgYmlnIHRhc2sgYW5kIGl0cyBhIGxvdCBlYXNpZXIgdG8gc3RhcnQKK2hlbHBp
bmcgb3V0IHNvbWUgYXJlYSB3aGljaCBpcyBoYXZpbmcgdHJvdWJsZSBpZiB3ZSBoYXZlIGtlcHQg
aW4gY29udGFjdAorYWJvdXQgZWFjaCBhcmVhcyBwcm9ncmVzcy4gVGhpcyBtaWdodCBiZSB3ZWVr
bHkgb3IgZm9ydG5pZ2h0bHkgb3Igc29tZQorc3VjaC4KKword2UgbmVlZCBhIHNoYXJlZCBzcGFj
ZSB0byByZWNvcmQgdGhlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzIGFuZCB0aGUKK3JvYWRtYXAg
YXMgd2UgZ28gZm9yd2FyZC4gR2l2ZW4gdGhhdCB3ZSdsbCBuZWVkIHRvIHVwZGF0ZSB0aGVzZSBh
cyBuZXcKK2ZlYXR1cmVzIGFyZSBjb25zaWRlcmVkLCBJIHByb3Bvc2UgdGhhdCB3ZSB1c2UgZG9j
L2Rlc2lnbiBhcyBhIHdvcmtpbmcKK3NwYWNlLCBhbmQgYXMgd2UgYW5hbHlzZSB1c2UgY2FzZXMg
d2UgaW5jbHVkZSB0aGVtIGluIHRoZXJlIC0gaW5jbHVkaW5nCit0aGUgbm9ybWFsIHJldmlldyBw
cm9jZXNzIGZvciBlYWNoIHBhdGNoLiBXZSBhbHNvIG5lZWQgZG9jdW1lbnRhdGlvbgorYWJvdXQg
ZG9pbmcgcGVyZm9ybWFuY2UgdHVuaW5nIC0gbm90IHRoZSBtaW51dGlhZSwgdGhvdWdoIHRoYXQg
aXMKK25lZWRlZCwgYnV0IGFib3V0IGhvdyB0byBlZmZlY3RpdmUgY2hvb3NlIHRoaW5ncyB0byBv
cHRpbWlzZSB3aGljaCB3aWxsCitnaXZlIHRoZSBiZXN0IHJldHVybiBvbiB0aW1lIHNwZW50IC0g
dGhhdCBpcyB3aGF0IHRoZSByb2FkbWFwIHNob3VsZAoraGVscCB3aXRoLCBidXQgdGhpcyBsb29r
cyB0byBiZSBhIGxhcmdlIHByb2plY3QgYW5kIGFuIG92ZXJ2aWV3IHdpbGwgYmUKK29mIGdyZWF0
IGFzc2lzdGFuY2UgSSB0aGluay4gV2Ugd2FudCB0byBoZWxwIGV2ZXJ5b25lIHRoYXQgd2lzaGVz
IHRvCitjb250cmlidXRlIHRvIHBlcmZvcm1hbmNlIHRvIGRvIHNvIGVmZmVjdGl2ZWx5LgorCitG
aW5hbGx5LCBpdHMgaW1wb3J0YW50IHRvIG5vdGUgdGhhdCBjb2RpbmcgaXMgbm90IHRoZSBvbmx5
IGNvbnRyaWJ1dGlvbgorLSB0ZXN0aW5nLCBnaXZpbmcgZmVlZGJhY2sgb24gY3VycmVudCBwZXJm
b3JtYW5jZSwgaGVscGluZyB3aXRoIHRoZQorYW5hbHlzaXMgYXJlIGFsbCBleHRyZW1lbHkgaW1w
b3J0YW50IHRhc2tzIHRvbyBhbmQgd2UgcHJvYmFibHkgd2FudCB0bworaGF2ZSBjbGVhciBtYXJr
ZXJzIG9mIHdoZXJlIHRoYXQgc2hvdWxkIGJlIGRvbmUgdG8gZW5jb3VyYWdlIHN1Y2gKK2NvbnRy
aWJ1dGlvbnMuCgo=

=== added file doc/developers/performance-roadmap.txt // file-id:performanceroa
... dmap.t-20070507174912-mwv3xv517cs4sisd-2 // last-changed:robertc@robertcoll
... ins.net-20070509153606-m556z2rb3d76b2f3 // encoding:base64
LS0tIC9kZXYvbnVsbAorKysgZG9jL2RldmVsb3BlcnMvcGVyZm9ybWFuY2Utcm9hZG1hcC50eHQK
QEAgLTAsMCArMSwxNSBAQAorPT09PT09PT09PT09PT09PT09PT09PT09PT0KK0JhemFhciBQZXJm
b3JtYW5jZSBSb2FkbWFwCis9PT09PT09PT09PT09PT09PT09PT09PT09PQorCitBYm91dCB0aGUg
cGVyZm9ybWFuY2Ugcm9hZG1hcAorIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKworLi4g
aW5jbHVkZTo6IHBlcmZvcm1hbmNlLXJvYWRtYXAtcmF0aW9uYWxlLnR4dAorCitBbmFseXNpcyBv
ZiB1c2UgY2FzZXMKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCisuLiBpbmNsdWRlOjogcGVyZm9y
bWFuY2UtdXNlLWNhc2UtYW5hbHlzaXMudHh0CisKKy4uIGluY2x1ZGU6OiBpbmNyZW1lbnRhbC1w
dXNoLXB1bGwudHh0Cgo=

=== added file doc/developers/performance-use-case-analysis.txt // file-id:perf
... ormanceusecasean-20070508045640-zneiu1yzbci574c6-2 // last-changed:robertc@
... robertcollins.net-20070509153606-m556z2rb3d76b2f3 // encoding:base64
LS0tIC9kZXYvbnVsbAorKysgZG9jL2RldmVsb3BlcnMvcGVyZm9ybWFuY2UtdXNlLWNhc2UtYW5h
bHlzaXMudHh0CkBAIC0wLDAgKzEsMTA4IEBACitBbmFseXNpbmcgYSBzcGVjaWZpYyB1c2UgY2Fz
ZQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworVGhlIGFuYWx5c2lzIG9mIGEgdXNl
IGNhc2UgbmVlZHMgdG8gcHJvdmlkZSBhcyBvdXRwdXRzOgorICogVGhlIGZ1bmN0aW9uYWwgcmVx
dWlyZW1lbnRzIHRoYXQgdGhlIHVzZSBjYXNlIGhhcyB0byBzYXRpc2Z5LgorICogVGhlIGZpbGUg
bGV2ZWwgb3BlcmF0aW9ucyBhbmQgYWNjZXNzIHBhdHRlcm5zIHRoYXQgd2lsbCBnaXZlIHRoZSBi
ZXN0CisgICBwZXJmb3JtYW5jZS4KKyAqIEEgbG93IGZyaWN0aW9uIEFQSSB3aGljaCB3aWxsIGFs
bG93IHRoZSB1c2UgY2FzZSB0byBiZSBpbXBsZW1lbnRlZC4KKyAqIFRoZSByZWxlYXNlIG9mIGJ6
ciAoYW5kIHRodXMgdGhlIHN1cHBvcnRlZCBmZWF0dXJlcykgZm9yIHdoaWNoIHRoZSBhbmFseXNp
cworICAgd2FzIHBlcmZvcm1lZC4gVGhlIGZlYXR1cmUgc2V0IG9mIGJ6ciBkZWZpbmVzIHRoZSBh
Y2Nlc3MgcGF0dGVybnMgYW5kIGRhdGEKKyAgIHJlcXVpcmVkIHRvIGltcGxlbWVudCBhbnkgdXNl
IGNhc2UuIFNvIHdoZW4gd2UgYWRkIGZlYXR1cmVzLCB0aGVpciBkZXNpZ24KKyAgIGNoYW5nZXMg
dGhlIHJlcXVpcmVtZW50cyBmb3IgdGhlIHBhcnRzIG9mIHRoZSBzeXN0ZW0gdGhleSBhbHRlciwg
c28gd2UgbmVlZAorICAgdG8gcmUtYW5hbHlzZSB1c2UgY2FzZXMgd2hlbiBienIncyBmZWF0dXJl
IHNldCBjaGFuZ2VzLiBJZiBmdXR1cmUgcGxhbnMgYXJlCisgICBjb25zaWRlcmVkIGluIHRoZSBh
bmFseXNpcyB3aXRoIHRoZSBpbnRlbnRpb24gb2YgYXZvaWRpbmcgcmV3b3JrLCB0aGVzZQorICAg
c2hvdWxkIGFsc28gYmUgbWVudGlvbmVkLgorCitQZXJmb3JtaW5nIHRoZSBhbmFseXNpcworLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0KKworVGhlIGFuYWx5c2lzIG5lZWRzIHRvIGJlIGFibGUgdG8g
ZGVmaW5lIHRoZSBjaGFyYWN0ZXJpc3RpY3Mgb2YgdGhlCitpbnZvbHZlZCBkaXNrIHN0b3JhZ2Ug
YW5kIEFQSXMuIFRoYXQgbWVhbnMgd2UgbmVlZCB0byBleGFtaW5lIHRoZSBkYXRhCityZXF1aXJl
ZCBmb3IgdGhlIG9wZXJhdGlvbiwgaW4gd2hhdCBvcmRlciBpdCBpcyByZXF1aXJlZCwgb24gYm90
aCB0aGUKK3JlYWQgYW5kIHdyaXRlIHNpZGVzLCBhbmQgaG93IHRoYXQgbmVlZHMgdG8gYmUgcHJl
c2VudGVkIHRvIGJlCitjb25zaXN0ZW50IHdpdGggb3VyIGxheWVyaW5nLgorCitBcyBhIHF1aWNr
IGV4YW1wbGU6ICdhbm5vdGF0aW9uIG9mIGEgZmlsZSByZXF1aXJlcyB0aGUgZmlsZSBpZCBsb29r
ZWQgdXAKK2Zyb20gdGhlIHRyZWUsIHRoZSBiYXNpcyByZXZpc2lvbiBpZCBmcm9tIHRoZSB0cmVl
LCBhbmQgdGhlbiB0aGUgdGV4dCBvZgordGhhdCBmaWxlaWQtcmV2aXNpb25pZCBwYWlyIGFsb25n
IHdpdGggdGhlIGNyZWF0aW5nIHJldmlzaW9uIGlkCithbGxvY2F0ZWQgdG8gZWFjaCBsaW5lLCBh
bmQgdGhlIGRvdHRlZCByZXZpc2lvbiBudW1iZXIgb2YgZWFjaCBvZiB0aG9zZQorcmV2aXNpb24g
aWRzLicgQWxsIHRocmVlIG9mIG91ciBrZXkgZG9tYWluIG9iamVjdHMgYXJlIGludm9sdmVkIGhl
cmUsCitidXQgd2UgaGF2ZW4ndCBkZWZpbmVkIGFueSBjaGFyYWN0ZXJpc3RpY3Mgb2YgdGhlIGFw
aSBvciBkaXNrIGZhY2lsaXRpZXMKK3lldC4gV2UgY291bGQgdGhlbiBkbyB0aGF0IGJ5IHNheWlu
ZyBzb21ldGhpbmcgbGlrZSAndGhlIGZpbGUtaWQgbG9va3VwCitzaG91bGQgZGVncmFkZSBncmFj
ZWZ1bGx5IGFzIHRyZWVzIGJlY29tZSBodWdlLiBUaGUgdHJlZSBiYXNpcyBpZCBzaG91bGQKK2Jl
IGNvbnN0YW50IHRpbWUuIFJldHJpZXZhbCBvZiB0aGUgYW5ub3RhdGVkIHRleHQgc2hvdWxkIGJl
IHJvdWdobHkKK2NvbnN0YW50IGZvciBhbnkgdGV4dCBvZiB0aGUgc2FtZSBzaXplIHJlZ2FyZGxl
c3Mgb2YgdGhlIG51bWJlciBvZgorcmV2aXNpb25zIGNvbnRyaWJ1dGluZyB0byBpdHMgY29udGVu
dC4gTWFwcGluZyBvZiB0aGUgcmV2aXNpb24gaWRzIHRvCitkb3R0ZWQgcmV2bm9zIGNvdWxkIGJl
IGRvbmUgYXMgdGhlIHRleHQgaXMgcmV0cmlldmVkLCBidXQgaXRzIGNvbXBsZXRlbHkKK2ZpbmUg
dG8gcG9zdC1wcm9jZXNzIHRoZSBhbm5vdGF0ZWQgdGV4dCB0byBvYnRhaW4gZG90dGVkLXJldm5v
cy4nCisKK1doYXQgZmFjdG9ycyBzaG91bGQgYmUgY29uc2lkZXJlZD8KKy0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0KKworT2J2aW91c2x5LCB0aG9zZSB0aGF0IHdpbGwgbWFrZSBm
b3IgYW4gZXh0cmVtZWx5IGZhc3Qgc3lzdGVtIDopLiBUaGVyZQorYXJlIG1hbnkgcG9zc2libGUg
ZmFjdG9ycywgYnV0IHRoZSBvbmVzIEkgdGhpbmsgYXJlIG1vc3QgaW50ZXJlc3RpbmcgdG8KK2Rl
c2lnbiB3aXRoIGFyZToKKworLSBiYXNlbGluZSBvdmVyaGVhZDoKKworICAgLSBUaGUgdGltZSB0
byBnZXQgYnpyIHJlYWR5IHRvIGJlZ2luIHRoZSB1c2UgY2FzZS4KKworLSBzY2FsaW5nOiBob3cg
ZG9lcyBwZXJmb3JtYW5jZSBjaGFuZ2Ugd2hlbiBhbnkgb2YgdGhlIGZvbGxvdyBhc3BlY3RzCisg
ICBvZiB0aGUgc3lzdGVtIGFyZSByYXRjaGVkIG1hc3NpdmVseSB1cCBvciBkb3duOgorCisgICAt
IG51bWJlciBvZiBmaWxlcy9kaXJzL3N5bWxpbmtzL3N1YnRyZWVzIGluIGEgdHJlZSAoYm90aCB3
b3JraW5nIGFuZCAKKyAgICAgcmV2aXNpb24gdHJlZXMpCisgICAtIHNpemUgb2YgYW55IHBhcnRp
Y3VsYXIgZmlsZQorICAgLSBudW1iZXIgb2YgZWxlbWVudHMgd2l0aGluIGEgc2luZ2xlIGRpcmVj
dG9yeQorICAgLSBsZW5ndGggb2Ygc3ltbGlua3MKKyAgIC0gbnVtYmVyIG9mIGNoYW5nZXMgdG8g
YW55IGZpbGUgb3ZlciB0aW1lCisgICAgIChzdWJvcmRpbmF0ZWx5IGFsc28gdGhlIG51bWJlciBv
ZiBtZXJnZXMgb2YgdGhlIGZpbGUpCisgICAtIG51bWJlciBvZiBjb21taXRzIGluIHRoZSBhbmNl
c3RyeSBvZiBhIGJyYW5jaAorICAgICAoc3Vib3JkaW5hdGVseSBhbHNvIHRoZSBudW1iZXIgb2Yg
bWVyZ2VzKQorICAgLSBudW1iZXIgb2YgcmV2aXNpb25zIGluIGEgcmVwb3NpdG9yeQorICAgLSBu
dW1iZXIgb2YgZmlsZWlkcyBpbiBhIHJlcG9zaXRvcnkKKyAgIC0gbnVtYmVyIG9mIGdob3N0cyBp
biBhIGdpdmVuIGdyYXBoIChyZXZpc2lvbiBvciBwZXItZmlsZSkKKyAgIC0gbnVtYmVyIG9mIGJy
YW5jaGVzIGluIGEgcmVwb3NpdG9yeQorICAgLSBudW1iZXIgb2YgY29uY3VycmVudCByZWFkZXJz
IGZvciBhIHRyZWUvYnJhbmNoL3JlcG9zaXRvcnkKKyAgIC0gbnVtYmVyIG9mIGNvbmN1cnJlbnQg
d3JpdGVycyBmb3Igb2JqZWN0cyB0aGF0IHN1cHBvcnQgdGhhdC4KKyAgIC0gbGF0ZW5jeSB0byBw
ZXJmb3JtIGZpbGUgb3BlcmF0aW9ucyAoZS5nLiBzbG93IGRpc2tzLCBuZXR3b3JrIGZpbGUgc3lz
dGVtcywKKyAgICAgb3VyIFZGUyBsYXllciBhbmQgRlRQL1NGVFAvZXRjKQorICAgLSBiYW5kd2lk
dGggdG8gdGhlIGRpc2sgc3RvcmFnZQorICAgLSBsYXRlbmN5IHRvIHBlcmZvcm0gc2VtYW50aWMg
b3BlcmF0aW9ucyAoaHBzcyBzcGVjaWZpYykKKyAgIC0gYmFuZHdpZHRoIHdoZW4gcGVyZm9ybWlu
ZyBzZW1hbnRpYyBvcGVyYXRpb25zLgorLSBsb2NhbGl0eSBvZiByZWZlcmVuY2U6IElmIGFuIG9w
ZXJhdGlvbiByZXF1aXJlcyBkYXRhIHRoYXQgaXMgbG9jYXRlZAorICAgd2l0aGluIGEgc21hbGwg
cmVnaW9uIGF0IGFueSBwb2ludCwgd2Ugb2Z0ZW4gZ2V0IGJldHRlciBwZXJmb3JtYW5jZSAKKyAg
IHRoYW4gd2l0aCBhbiBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgc2FtZSBvcGVyYXRpb24gdGhhdCBy
ZXF1aXJlcyB0aGUKKyAgIHNhbWUgYW1vdW50IG9mIGRhdGEgYnV0IHdpdGggYSBsb3dlciBsb2Nh
bGl0eSBvZiByZWZlcmVuY2UuIEl0cyAKKyAgIGZhaXJseSB0cmlja3kgdG8gYWRkIGxvY2FsaXR5
IG9mIHJlZmVyZW5jZSBhZnRlciB0aGUgZmFjdCwgc28gSSB0aGluaworICAgaXRzIHdvcnRoIGNv
bnNpZGVyaW5nIHVwIGZyb250LgorCitVc2luZyB0aGVzZSBmYWN0b3JzLCB0byB0aGUgYW5ub3Rh
dGUgZXhhbXBsZSB3ZSBjYW4gYWRkIHRoYXQgaXRzCityZWFzb25hYmxlIHRvIGRvIHR3byAnc2Vt
YW50aWMnIHJvdW5kIHRyaXBzIHRvIHRoZSBsb2NhbCB0cmVlLCBvbmUgdG8KK3RoZSBicmFuY2gg
b2JqZWN0LCBhbmQgdHdvIHRvIHRoZSByZXBvc2l0b3J5LiBJbiBmaWxlLW9wZXJhdGlvbiBsZXZl
bAorbWVhc3VyZW1lbnRzLCBpbiBhbiBpZGVhbCB3b3JsZCB0aGVyZSB3b3VsZCBiZSBubyBtb3Jl
IHRoYW4gb25lIHJvdW5kCit0cmlwIGZvciBlYWNoIHNlbWFudGljIG9wZXJhdGlvbi4gV2hhdCB0
aGVyZSBtdXN0IG5vdCBiZSBpcyBvbmUgcm91bmQKK3RyaXAgcGVyIHJldmlzaW9uIGludm9sdmVk
IGluIHRoZSByZXZpc2lvbmlkLT5kb3R0ZWQgbnVtYmVyIG1hcHBpbmcsIG5vcgorcGVyIGVhY2gg
cmV2aXNpb24gaWQgYXR0cmlidXRlZCB0byBhIGxpbmUgaW4gdGhlIHRleHQuIAorCitOb3QgYWxs
IHRoZSBpdGVtcyBtZW50aW9uZWQgYWJvdmUgYXJlIGNyZWF0ZWQgZXF1YWwuIFRoZSBhbmFseXNp
cyBzaG91bGQKK2luY2x1ZGUgdGhlIHBhcmFtZXRlcnMgY29uc2lkZXJlZCBhbmQgdGhlIGNvbW1v
biBjYXNlIHZhbHVlcyBmb3IgZWFjaCAtIHRoZQorb3B0aW1pc2F0aW9uIHNob3VsZCBiZSBhcm91
bmQgdGhlIGNvbW1vbiBjYXNlcyBub3QgYXJvdW5kIHRoZSBleGNlcHRpb25zLgorCitGb3IgaW5z
dGFuY2UsIHdlIGhhdmUgYSBzbWFydCBzZXJ2ZXIgbm93OyBmaWxlIGxldmVsIG9wZXJhdGlvbnMg
YXJlIHJlbGF0aXZlbHkKK2xvdyBsYXRlbmN5IGFuZCB3ZSBzaG91bGQgdXNlIHRoYXQgYXMgdGhl
IGNvbW1vbiBjYXNlLiBBdCB0aGlzIHBvaW50IHdlIGludGVuZAordG8gcHJlc2VydmUgdGhlIHBl
cmZvcm1hbmNlIG9mIHRoZSBkdW1iIHByb3RvY29sIG5ldHdvcmtpbmcsIGJ1dCBmb2N1cyBvbgor
aW1wcm92aW5nIG5ldHdvcmsgcGVyZm9ybWFuY2UgdmlhIHRoZSBzbWFydCBzZXJ2ZXIgYW5kIHRo
dXMgZXNjYXBlIHRoZQorZmlsZS1sZXZlbCBvcGVyYXRpb24gbGF0ZW5jeSBjb25zaWRlcmF0aW9u
cy4KKworTWFueSBwZXJmb3JtYW5jZSBwcm9ibGVtcyBvbmx5IGJlY29tZSB2aXNpYmxlIHdoZW4g
Y2hhbmdpbmcgdGhlIHNjYWxpbmcga25vYnMKK3Vwd2FyZHMgdG8gbGFyZ2UgdHJlZXMuIE9uIHNt
YWxsIHRyZWVzIGl0cyBvdXIgYmFzZWxpbmUgcGVyZm9ybWFuY2UgdGhhdCBkcml2ZXMKK2luY3Jl
bWVudGFsIGltcHJvdmVtZW50czsgb24gbGFyZ2UgdHJlZXMgaXRzIHRoZSBhbW91bnQgb2YgcHJv
Y2Vzc2luZyBwZXIgaXRlbQordGhhdCBkcml2ZXMgcGVyZm9ybWFuY2UuIEEgc2lnbmlmaWNhbnQg
Z29hbCB0aGVyZWZvcmUgaXMgdG8ga2VlcCB0aGUgYW1vdW9udCBvZgorZGF0YSB0byBiZSBwcm9j
ZXNzZWQgdW5kZXIgY29udHJvbC4gSWRlYWxseSB3ZSBjYW4gc2NhbGUgaW4gYSBzdWJsaW5lYXIg
ZmFzaGlvbgorZm9yIGFsbCBvcGVyYXRpb25zLCBidXQgd2UgTVVTVCBOT1Qgc2NhbGUgZXZlbiBs
aW5lYXJseSBmb3Igb3BlcmF0aW9ucyB0aGF0CitpbnZva2UgYSBsYXRlbmN5IG11bHRpcGxpZXIu
IEZvciBleGFtcGxlLCByZWFkaW5nIGEgZmlsZSBvbiBkaXNrIHJlcXVpcmVzCitmaW5kaW5nIHRo
ZSBpbm9kZSBmb3IgdGhlIGZpbGUsIHRoZW4gdGhlIGJsb2NrIHdpdGggdGhlIGRhdGEgYW5kIHJl
dHVybmluZyB0aGUKK2NvbnRlbnRzLiBEdWUgdG8gZGlyZWN0b3J5IGdyb3VwaW5nIGxvZ2ljIHdl
IHBheSBhIG1hc3NpdmUgcHJpY2UgdG8gcmVhZCBmaWxlcworaWYgd2UgZG8gbm90IGdyb3VwIHRo
ZSByZWFkcyBvZiBmaWxlcyB3aXRoaW4gdGhlIHNhbWUgZGlyZWN0b3J5LgoK

=== added file doc/shared_repository_layouts.txt // file-id:shared_repository_l
... a-20070502152030-bagewuqs18ns24o7-1 // last-changed:robertc@robertcollins.n
... et-20070507174930-gksqv90l5emjrcyq // encoding:base64
LS0tIC9kZXYvbnVsbAorKysgZG9jL3NoYXJlZF9yZXBvc2l0b3J5X2xheW91dHMudHh0CkBAIC0w
LDAgKzEsMzY5IEBACis9PT09PT09PT09PT09PT09PT09PT09PQorU2hhcmVkUmVwb3NpdG9yeUxh
eW91dHMKKz09PT09PT09PT09PT09PT09PT09PT09CisKKy4uIHNlY3RudW06OgorCitCYXphYXIg
aXMgZGVzaWduZWQgdG8gZ2l2ZSB5b3UgZmxleGliaWxpdHkgaW4gaG93IHlvdSBsYXlvdXQgYnJh
bmNoZXMgaW5zaWRlIGEgc2hhcmVkIHJlcG9zaXRvcnkuIAorVGhpcyBmbGV4aWJpbGl0eSBhbGxv
d3MgdXNlcnMgdG8gdGFpbG9yIEJhemFhciB0byB0aGVpciB3b3JrZmxvdywKK2J1dCBpdCBhbHNv
IGxlYWRzIHRvIHF1ZXN0aW9ucyBhYm91dCB3aGF0IGlzIGEgImdvb2QiIGxheW91dC4KK1dlIHBy
ZXNlbnQgc29tZSBhbHRlcm5hdGl2ZXMgYW5kIGdpdmUgc29tZSBkaXNjdXNzaW9uIGFib3V0IHRo
ZSBiZW5lZml0cyBvZiBlYWNoLgorCitPbmUga2V5IHBvaW50IHdoaWNoIHNob3VsZCBiZSBtZW50
aW9uZWQgaXMgdGhhdCBhbnkgZ29vZCBsYXlvdXQgc2hvdWxkIHNvbWVob3cgaGlnaGxpZ2h0Cit3
aGF0IGJyYW5jaCBhICJnZW5lcmFsIiB1c2VyIHNob3VsZCBncmFiLiBJbiBTVk4gdGhpcyBpcyBk
ZWVtZWQgdGhlICJgYHRydW5rL2BgIiBicmFuY2gsCithbmQgaW4gbW9zdCBvZiB0aGUgbGF5b3V0
cyB0aGlzIG5hbWluZyBjb252ZW50aW9uIGlzIHByZXNlcnZlZC4gU29tZSB3b3VsZCBjYWxsIHRo
aXMKKyJgYG1haW5saW5lYGAiIG9yICJgYGRldmBgIiwgYW5kIHBlb3BsZSBmcm9tIENWUyBvZnRl
biByZWZlciB0byB0aGlzIGFzICJgYEhFQURgYCIuCisKKy4uIGNvbnRlbnRzOjoKKworCisiU1ZO
LVN0eWxlIiAoYGB0cnVuay9gYCwgYGBicmFuY2hlcy9gYCkKKz09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQorCitNb3N0IHBlb3BsZSBjb21pbmcgZnJvbSBTVk4gd2lsbCBi
ZSBmYW1pbGlhciB3aXRoIHRoZWlyICJzdGFuZGFyZCIgcHJvamVjdCBsYXlvdXQuIAorV2hpY2gg
aXMgdG8gbGF5b3V0IHRoZSByZXBvc2l0b3J5IGFzOjoKKworICByZXBvc2l0b3J5LyAgICAgICAj
IE92ZXJhbGwgcmVwb3NpdG9yeQorICAgKy0gdHJ1bmsvICAgICAgICAjIFRoZSBtYWlubGluZSBv
ZiBkZXZlbG9wbWVudAorICAgKy0gYnJhbmNoZXMvICAgICAjIEEgY29udGFpbmVyIGRpcmVjdG9y
eQorICAgfCAgICstIGZvby8gICAgICAjIEJyYW5jaCBmb3IgZGV2ZWxvcGluZyBmZWF0dXJlIGZv
bworICAgfCAgICAgLi4uCisgICArLSB0YWdzLyAgICAgICAgICMgQ29udGFpbmVyIGRpcmVjdG9y
eQorICAgICAgICstIHJlbGVhc2UtWCAjIEEgYnJhbmNoIHNwZWNpZmljIHRvIG1hcmsgYSBnaXZl
biByZWxlYXNlIHZlcnNpb24KKyAgICAgICAgICAuLi4KKworV2l0aCBCYXphYXIsIHRoYXQgaXMg
YSBwZXJmZWN0bHkgcmVhc29uYWJsZSBsYXlvdXQuIAorSXQgaGFzIHRoZSBiZW5lZml0IG9mIGJl
aW5nIGZhbWlsaWFyIHRvIHBlb3BsZSBjb21pbmcgZnJvbSBTVk4sIAorYW5kIG1ha2luZyBpdCBj
bGVhciB3aGVyZSB0aGUgZGV2ZWxvcG1lbnQgZm9jdXMgaXMuCisKK1doZW4geW91IGhhdmUgbXVs
dGlwbGUgcHJvamVjdHMgaW4gdGhlIHNhbWUgcmVwb3NpdG9yeSwgCit0aGUgU1ZOIGxheW91dCBp
cyBhIGxpdHRsZSB1bmNsZWFyIHdoYXQgdG8gZG8uCisKKworYGBwcm9qZWN0L3RydW5rYGAKK35+
fn5+fn5+fn5+fn5+fn5+CisKK1RoZSBwcmVmZXJyZWQgbWV0aG9kIGZvciBTVk4gc2VlbXMgdG8g
YmUgdG8gZ2l2ZSBlYWNoIHByb2plY3QgYSB0b3AgbGV2ZWwgZGlyZWN0b3J5IGZvciBhIGxheW91
dCBsaWtlOjoKKworICByZXBvc2l0b3J5LyAgICAgICAgICAgICMgT3ZlcmFsbCByZXBvc2l0b3J5
CisgICArLSBwcm9qZWN0MS8gICAgICAgICAgIyBBIGNvbnRhaW5lciBkaXJlY3RvcnkKKyAgIHwg
ICArLSB0cnVuay8gICAgICAgICAjIFRoZSBtYWlubGluZSBvZiBkZXZlbG9wbWVudCBvZiBwcm9q
ZWN0MQorICAgfCAgICstIGJyYW5jaGVzLyAgICAgICMgQSBjb250YWluZXIgZGlyZWN0b3J5Cisg
ICB8ICAgICAgICstIGZvby8gICAgICAgIyBCcmFuY2ggZm9yIGRldmVsb3BpbmcgZmVhdHVyZSBm
b28gb2YgcHJvamVjdDEKKyAgIHwgICAgICAgICAuLi4KKyAgIHwKKyAgICstIHByb2plY3QyLyAg
ICAgICAgICAjIENvbnRhaW5lciBmb3IgcHJvamVjdDIKKyAgICAgICArLSB0cnVuay8gICAgICAg
ICAjIE1haW5saW5lIGZvciBwcm9qZWN0MgorICAgICAgICstIGJyYW5jaGVzLyAgICAgICMgQ29u
dGFpbmVyIGZvciBwcm9qZWN0MiBicmFuY2hlcworCisKK1RoaXMgYWxzbyB3b3JrcyB3aXRoIEJh
emFhci4gCitIb3dldmVyLCB3aXRoIEJhemFhciByZXBvc2l0b3JpZXMgYXJlIGNoZWFwIHRvIGNy
ZWF0ZSAKKyhhIHNpbXBsZSBgYGJ6ciBpbml0LXJlcG9gYCBhd2F5KSwgYW5kIHRoZWlyIHByaW1h
cnkgYmVuZWZpdCBpcyB3aGVuIHRoZQorYnJhbmNoZXMgc2hhcmUgYSBjb21tb24gYW5jZXN0cnku
CisKK1NvIHRoZSBwcmVmZXJyZWQgd2F5IGZvciBCYXphYXIgd291bGQgYmU6OgorCisgICAgcHJv
amVjdDEvICAgICAgICAgICMgQSByZXBvc2l0b3J5IGZvciBwcm9qZWN0MQorICAgICArLSB0cnVu
ay8gICAgICAgICAjIFRoZSBtYWlubGluZSBvZiBkZXZlbG9wbWVudCBvZiBwcm9qZWN0MQorICAg
ICArLSBicmFuY2hlcy8gICAgICAjIEEgY29udGFpbmVyIGRpcmVjdG9yeQorICAgICAgICAgKy0g
Zm9vLyAgICAgICAjIEJyYW5jaCBmb3IgZGV2ZWxvcGluZyBmZWF0dXJlIGZvbyBvZiBwcm9qZWN0
MQorICAgICAgICAgICAuLi4KKyAgICAKKyAgICBwcm9qZWN0Mi8gICAgICAgICAgIyBBIHJlcG9z
aXRvcnkgZm9yIHByb2plY3QyCisgICAgICstIHRydW5rLyAgICAgICAgICMgTWFpbmxpbmUgZm9y
IHByb2plY3QyCisgICAgICstIGJyYW5jaGVzLyAgICAgICMgQ29udGFpbmVyIGZvciBwcm9qZWN0
MiBicmFuY2hlcworCisKK2BgdHJ1bmsvcHJvamVjdGBgCit+fn5+fn5+fn5+fn5+fn5+fgorCitU
aGVyZSBhcmUgYWxzbyBhIGZldyBwcm9qZWN0cyB3aG8gdXNlIHRoaXMgbGF5b3V0IGluIFNWTjo6
CisKKyAgcmVwb3NpdG9yeS8gICAgICAgICAgICAgIyBPdmVyYWxsIHJlcG9zaXRvcnkKKyAgICAr
LSB0cnVuay8gICAgICAgICAgICAgIyBBIGNvbnRhaW5lciBkaXJlY3RvcnkKKyAgICB8ICAgKy0g
cHJvamVjdDEgICAgICAgIyBNYWlubGluZSBmb3IgcHJvamVjdCAxCisgICAgfCAgICstIHByb2pl
Y3QyICAgICAgICMgTWFpbmxpbmUgZm9yIHByb2plY3QgMgorICAgIHwgICAgICAgICAuLi4KKyAg
ICB8CisgICAgKy0gYnJhbmNoZXMvICAgICAgICAgICMgQ29udGFpbmVyCisgICAgICAgICstIHBy
b2plY3QxLyAgICAgICMgQ29udGFpbmVyICg/KQorICAgICAgICB8ICAgKy0gZm9vICAgICAgICAj
IEJyYW5jaCAnZm9vJyBvZiBwcm9qZWN0MQorICAgICAgICArLSBwcm9qZWN0Mi8KKyAgICAgICAg
ICAgICstIGJhciAgICAgICAgIyBCcmFuY2ggJ2Jhcicgb2YgcHJvamVjdDIKKworCitBIHNsaWdo
dCB2YXJpYW50IGlzOjoKKworICByZXBvc2l0b3J5LyAgICAgICAgICAgICAjIE92ZXJhbGwgcmVw
b3NpdG9yeQorICAgICstIHRydW5rLyAgICAgICAgICAgICAjIEEgY29udGFpbmVyIGRpcmVjdG9y
eQorICAgIHwgICArLSBwcm9qZWN0MSAgICAgICAjIE1haW5saW5lIGZvciBwcm9qZWN0IDEKKyAg
ICB8ICAgKy0gcHJvamVjdDIgICAgICAgIyBNYWlubGluZSBmb3IgcHJvamVjdCAyCisgICAgfCAg
ICAgICAgIC4uLgorICAgIHwKKyAgICArLSBicmFuY2hlcy8gICAgICAgICAgIyBDb250YWluZXIK
KyAgICAgICAgKy0gcHJvamVjdDEtZm9vLyAgIyBCcmFuY2ggJ2Zvbycgb2YgcHJvamVjdDEKKyAg
ICAgICAgKy0gcHJvamVjdDItYmFyLyAgIyBCcmFuY2ggJ2Jhcicgb2YgcHJvamVjdDIKKworSSBi
ZWxpZXZlIHRoZSByZWFzb24gZm9yIHRoaXMgaW4gU1ZOLCBpcyBzbyB0aGF0IHNvbWVvbmUgCitj
YW4gY2hlY2tvdXQgYWxsIG9mICJgYHRydW5rL2BgIiBhbmQgZ2V0IHRoZSBhbGwgdGhlIG1haW5s
aW5lcyBmb3IgYWxsIHByb2plY3RzLgorCitUaGlzIGxheW91dCBjYW4gYmUgdXNlZCBmb3IgQmF6
YWFyLCBidXQgaXQgaXMgbm90IGdlbmVyYWxseSByZWNvbW1lbmRlZC4KKworIDEpIGBgYnpyIGJy
YW5jaC9jaGVja291dC9nZXRgYCBpcyBhIHNpbmdsZSBicmFuY2ggYXQgYSB0aW1lLiAKKyAgICBT
byB5b3UgZG9uJ3QgZ2V0IHRoZSBiZW5lZml0IG9mIGdldHRpbmcgYWxsIG1haW5saW5lcyB3aXRo
IGEgc2luZ2xlIGNvbW1hbmQuIFsxXV8KKworIDIpIEl0IGlzIGxlc3Mgb2J2aW91cyBvZiB3aGV0
aGVyIGBgcmVwb3NpdG9yeS90cnVuay9mb29gYCBpcyB0aGUgYGB0cnVua2BgIG9mIHByb2plY3Qg
CisgICAgYGBmb29gYCBvciBpdCBpcyBqdXN0IHRoZSBgYGZvb2BgIGRpcmVjdG9yeSBpbiB0aGUg
YGB0cnVua2BgIGJyYW5jaC4KKyAgICBTb21lIG9mIHRoaXMgY29uZnVzaW9uIGlzIGR1ZSB0byBT
Vk4sIGJlY2F1c2UgaXQgdXNlcyB0aGUgc2FtZSAibmFtZXNwYWNlIiAKKyAgICBmb3IgZmlsZXMg
aW4gYSBwcm9qZWN0IHRoYXQgaXQgdXNlcyBmb3IgYnJhbmNoZXMgb2YgYSBwcm9qZWN0LgorICAg
IEluIEJhemFhciwgdGhlcmUgaXMgYSBjbGVhciBkaXN0aW5jdGlvbiBvZiB3aGF0IGZpbGVzIG1h
a2UgdXAgYSBwcm9qZWN0LCB2ZXJzdXMKKyAgICB0aGUgbG9jYXRpb24gb2YgdGhlIEJyYW5jaC4g
KEFmdGVyIGFsbCwgdGhlcmUgaXMgb25seSBvbmUgYGAuYnpyL2BgIGRpcmVjdG9yeSBwZXIgYnJh
bmNoLAorICAgIHZlcnN1cyBtYW55IGBgLnN2bi9gYCBkaXJlY3RvcmllcyBpbiB0aGUgY2hlY2tv
dXQpLgorCisuLiBbMV0gTm90ZTogYE5lc3RlZFRyZWVTdXBwb3J0YF8gY2FuIHByb3ZpZGUgYSB3
YXkgdG8gY3JlYXRlICJtZXRhLXByb2plY3RzIiB3aGljaAorICAgIGFnZ3JlZ2F0ZSBtdWx0aXBs
ZSBwcm9qZWN0cyByZWdhcmRsZXNzIG9mIHRoZSByZXBvc2l0b3J5IGxheW91dC4KKyAgICBMZXR0
aW5nIHlvdSBgYGJ6ciBjaGVja291dGBgIG9uZSBwcm9qZWN0LCBhbmQgaGF2ZSBpdCBncmFiIGFs
bCB0aGUgbmVjZXNzYXJ5CisgICAgc3ViLXByb2plY3RzLgorCisuLiBfTmVzdGVkVHJlZVN1cHBv
cnQ6IGh0dHA6Ly9iYXphYXItdmNzLm9yZy9OZXN0ZWRUcmVlcworCisKK05lc3RlZCBTdHlsZSAo
YGBwcm9qZWN0L2JyYW5jaC9zdWItYnJhbmNoL2BgKQorPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09CisKK0Fub3RoZXIgc3R5bGUgd2l0aCBCYXphYXIsIHdoaWNo
IGlzIG5vdCBnZW5lcmFsbHkgcG9zc2libGUgaW4gU1ZOCitpcyB0byBoYXZlIGJyYW5jaGVzIG5l
c3RlZCB3aXRoaW4gZWFjaC1vdGhlci4KK1RoaXMgaXMgcG9zc2libGUgYmVjYXVzZSBCYXphYXIg
c3VwcG9ydHMgKGFuZCByZWNvbW1lbmRzKSBjcmVhdGluZyByZXBvc2l0b3JpZXMKK3dpdGggbm8g
d29ya2luZyB0cmVlcyAoYGAtLW5vLXRyZWVzYGApLgorV2l0aCBhIGBgLS1uby10cmVlc2BgIHJl
cG9zaXRvcnksIGJlY2F1c2UgdGhlIHdvcmtpbmcgZmlsZXMgYXJlIG5vdCBpbnRlcm1peGVkIHdp
dGgKK3lvdXIgYnJhbmNoIGxvY2F0aW9ucywgeW91IGFyZSBmcmVlIHRvIHB1dCBhIGJyYW5jaCBp
biB3aGF0ZXZlciBuYW1lc3BhY2UgeW91IHdhbnQuCisKK09uZSBwb3NzaWJpbGl0eSBpczo6CisK
KyAgcHJvamVjdC8gICAgICAgICAgICAgIyBUaGUgb3ZlcmFsbCByZXBvc2l0b3J5LCAqYW5kKiB0
aGUgcHJvamVjdCdzIG1haW5saW5lIGJyYW5jaAorICAgKyBqb2UvICAgICAgICAgICAgICAjIERl
dmVsb3BlciBKb2UncyBwcmltYXJ5IGJyYW5jaCBvZiBkZXZlbG9wbWVudAorICAgfCAgKy0gZmVh
dHVyZTEvICAgICAjIERldmVsb3BlciBKb2UncyBmZWF0dXJlMSBkZXZlbG9wbWVudCBicmFuY2gK
KyAgIHwgIHwgICArLSBicm9rZW4vICAgIyBBIHN0YWdpbmcgYnJhbmNoIGZvciBKb2UgdG8gZGV2
ZWxvcCBmZWF0dXJlMQorICAgfCAgKy0gZmVhdHVyZTIvICAgICAjIEpvZSdzIGZlYXR1cmUyIGRl
dmVsb3BtZW50IGJyYW5jaAorICAgfCAgICAuLi4KKyAgICsgYmFycnkvICAgICAgICAgICAgIyBC
YXJyeSdzIGRldmVsb3BtZW50IGJyYW5jaAorICAgfCAgLi4uCisgICArIHJlbGVhc2VzLworICAg
ICAgKy0gMS4wLworICAgICAgICAgICstIDEuMS4xLworCitUaGUgaWRlYSB3aXRoIHRoaXMgbGF5
b3V0IGlzIHRoYXQgeW91IGFyZSBjcmVhdGluZyBhIGhpZXJhcmNoaWNhbCBsYXlvdXQgZm9yIGJy
YW5jaGVzLiAKK1doZXJlIGNoYW5nZXMgZ2VuZXJhbGx5IGZsb3cgdXB3YXJkcyBpbiB0aGUgbmFt
ZXNwYWNlLiBJdCBhbHNvIGdpdmVzIHBlb3BsZSBhIGxpdHRsZQorY29ybmVyIG9mIHRoZSBuYW1l
c3BhY2UgdG8gd29yayBvbiB0aGVpciBzdHVmZi4KK09uZSBuaWNlIGZlYXR1cmUgb2YgdGhpcyBs
YXlvdXQsIGlzIGl0IG1ha2VzIGJyYW5jaGluZyAiY2hlYXBlciIgYmVjYXVzZSBpdCBnaXZlcyB5
b3UKK2EgcGxhY2UgdG8gcHV0IGFsbCB0aGUgbWluaSBicmFuY2hlcyB3aXRob3V0IGNsdXR0ZXJp
bmcgdXAgdGhlIGdsb2JhbCBgYGJyYW5jaGVzL2BgIG5hbWVzcGFjZS4KKworVGhlIG90aGVyIHBv
d2VyIG9mIHRoaXMgaXMgdGhhdCB5b3UgZG9uJ3QgaGF2ZSB0byByZXBlYXQgeW91cnNlbGYgd2hl
biBzcGVjaWZ5aW5nIG1vcmUgZGV0YWlsIGluIHRoZQorYnJhbmNoIG5hbWUuCisKK0ZvciBleGFt
cGxlIGNvbXBhcmU6OgorCisgIGJ6ciBicmFuY2ggaHR0cDovL2hvc3QvcmVwb3NpdG9yeS9wcm9q
ZWN0L2JyYW5jaGVzL2pvZS1mZWF0dXJlLWZvby1idWdmaXgtMTAvCisKK1ZlcnN1czo6CisgIAor
ICBienIgYnJhbmNoIGh0dHA6Ly9ob3N0L3Byb2plY3Qvam9lL2Zvby9idWdmaXgtMTAKKworCitB
bHNvLCBpZiB5b3UgbGlzdCB0aGUgYGByZXBvc2l0b3J5L3Byb2plY3QvYnJhbmNoZXMvYGAgZGly
ZWN0b3J5IHlvdSBtaWdodCBzZWUgc29tZXRoaW5nIGxpa2U6OgorCisgIGJhcnJ5LWZlYXR1cmUt
YmFyLworICBiYXJyeS1idWdmaXgtMTAvCisgIGJhcnJ5LWJ1Z2ZpeC0xMi8KKyAgam9lLWJ1Z2Zp
eC0xMC8KKyAgam9lLWJ1Z2ZpeC0xMy8KKyAgam9lLWZyaXpiYW4vCisKK1ZlcnN1cyBoYXZpbmcg
dGhlc2UgYnJva2VuIG91dCBieSBkZXZlbG9wZXIuIAorSWYgdGhlIG51bWJlciBvZiBicmFuY2hl
cyBhcmUgc21hbGwsIGBgYnJhbmNoZXMvYGAgaGFzIHRoZSBuaWNlIGFkdmFudGFnZQorb2YgYmVp
bmcgYWJsZSB0byBzZWUgYWxsIGJyYW5jaGVzIGluIGEgc2luZ2xlIHZpZXcuCitJZiB0aGUgbnVt
YmVyIG9mIGJyYW5jaGVzIGlzIGxhcmdlLCBgYGJyYW5jaGVzL2BgIGhhcyB0aGUgZGlzdGluY3Qg
ZGlzYWR2YW50YWdlCitvZiBzZWVpbmcgYWxsIHRoZSBicmFuY2hlcyBpbiBhIHNpbmdsZSB2aWV3
IChpdCBiZWNvbWVzIGRpZmZpY3VsdCB0byBmaW5kIHRoZQorYnJhbmNoIHlvdSBhcmUgaW50ZXJl
c3RlZCBpbiwgd2hlbiB0aGVyZSBhcmUgMTAwIGJyYW5jaGVzIHRvIGxvb2sgdGhyb3VnaCkuCisK
K05lc3RlZCBicmFuY2hpbmcgc2VlbXMgdG8gc2NhbGUgYmV0dGVyIHRvIGxhcmdlciBudW1iZXIg
b2YgYnJhbmNoZXMuCitIb3dldmVyLCBlYWNoIGluZGl2aWR1YWwgYnJhbmNoIGlzIGxlc3MgZGlz
Y292ZXJhYmxlLiAKKyhlZy4gIklzIEpvZSB3b3JraW5nIG9uIGJ1Z2ZpeCAxMCBpbiBoaXMgZmVh
dHVyZSBmb28gYnJhbmNoLCBvciBoaXMgZmVhdHVyZSBiYXIgYnJhbmNoPyIpCisKK09uZSBvdGhl
ciBzbWFsbCBhZHZhbnRhZ2UgaXMgdGhhdCB5b3UgY2FuIGRvIHNvbWV0aGluZyBsaWtlOjoKKwor
ICAgYnpyIGJyYW5jaCBodHRwOi8vaG9zdC9wcm9qZWN0L3JlbGVhc2UvMS8xLzEKKyAgb3IKKyAg
IGJ6ciBicmFuY2ggaHR0cDovL2hvc3QvcHJvamVjdC9yZWxlYXNlLzEvMS8yCisKK1RvIGluZGlj
YXRlIHJlbGVhc2UgMS4xLjEgYW5kIDEuMS4yLiBUaGlzIGFnYWluIGRlcGVuZHMgb24gaG93IG1h
bnkgcmVsZWFzZXMgeW91IGhhdmUgCithbmQgd2hldGhlciB0aGUgZ2FpbiBvZiBzcGxpdHRpbmcg
dGhpbmdzIHVwIG91dHdlaWdocyB0aGUgYWJpbGl0eSB0byBzZWUgbW9yZSBhdCBhIGdsYW5jZS4K
KworCitTb3J0ZWQgYnkgU3RhdHVzIChgYGRldi9gYCwgYGBtZXJnZWQvYGAsIGBgZXhwZXJpbWVu
dGFsL2BgKQorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KKworT25lIG90aGVyIHdheSB0byBicmVhayB1cCBicmFuY2hlcyBpcyB0byBz
b3J0IHRoZW0gYnkgdGhlaXIgY3VycmVudCBzdGF0dXMuCitTbyB5b3Ugd291bGQgZW5kIHVwIHdp
dGggYSBsYXlvdXQgc29tZXRoaW5nIGxpa2U6OgorCisgIHByb2plY3QvICAgICAgICAgICAgICAg
IyBPdmVyYWxsIGxheW91dAorICAgKy0gdHJ1bmsvICAgICAgICAgICAgICMgVGhlIGRldmVsb3Bt
ZW50IGZvY3VzIGJyYW5jaAorICAgKy0gZGV2LyAgICAgICAgICAgICAgICMgQ29udGFpbmVyIGRp
cmVjdG9yeSBmb3IgaW4tcHJvZ3Jlc3Mgd29yaworICAgfCAgICstIGpvZS1mZWF0dXJlMSAgICMg
Sm9lJ3MgY3VycmVudCBmZWF0dXJlLTEgYnJhbmNoCisgICB8ICAgKy0gYmFycnktYnVnZml4MTAg
IyBCYXJyeSdzIHdvcmsgZm9yIGJ1Z2ZpeCAxMAorICAgfCAgICAuLi4KKyAgICstIG1lcmdlZC8g
ICAgICAgICAgICAjIENvbnRhaW5lciBpbmRpY2F0aW5nIHRoZXNlIGJyYW5jaGVzIGhhdmUgYmVl
biBtZXJnZWQKKyAgIHwgICArLSBidWdmaXgtMTIgICAgICAjIEJ1Z2ZpeCB3aGljaCBoYXMgYWxy
ZWFkeSBiZWVuIG1lcmdlZC4KKyAgICstIGFiYW5kb25kZWQvICAgICAgICAjIEJyYW5jaGVzIHdo
aWNoIGFyZSBjb25zaWRlcmVkICdkZWFkLWVuZCcKKworCitUaGlzIGhhcyBhIGNvdXBsZSBiZW5l
Zml0cyBhbmQgZHJhd2JhY2tzLgorSXQgbGV0cyB5b3Ugc2VlIHdoYXQgYnJhbmNoZXMgYXJlIGFj
dGl2ZWx5IGJlaW5nIGRldmVsb3BlZCBvbiwgd2hpY2ggaXMgdXN1YWxseQorb25seSBhIHNtYWxs
IG51bWJlciwgdmVyc3VzIHRoZSB0b3RhbCBudW1iZXIgb2YgYnJhbmNoZXMgZXZlciBjcmVhdGVk
LgorT2xkIGJyYW5jaGVzIGFyZSBub3QgbG9zdCAodmVyc3VzIGRlbGV0aW5nIHRoZW0pLCBidXQg
dGhleSBhcmUgImZpbGVkIGF3YXkiLAorc3VjaCB0aGF0IHRoZSBtb3JlIGxpa2VseSB5b3UgYXJl
IHRvIHdhbnQgYSBicmFuY2ggdGhlIGVhc2llciBpdCBpcyB0byBmaW5kLiAKKyhDb252ZXJzZWx5
LCBvbGRlciBicmFuY2hlcyBhcmUgbGlrZWx5IHRvIGJlIGhhcmRlciB0byBmaW5kKS4KKworVGhl
IGJpZ2dlc3QgZGlzYWR2YW50YWdlIHdpdGggdGhpcyBsYXlvdXQsIGlzIHRoYXQgYnJhbmNoZXMg
bW92ZSBhcm91bmQuCitXaGljaCBtZWFucyB0aGF0IGlmIHNvbWVvbmUgaXMgZm9sbG93aW5nIHRo
ZSBgYHByb2plY3QvZGV2L25ldy1mZWF0dXJlYGAgYnJhbmNoLAord2hlbiBpdCBnZXRzIG1lcmdl
ZCBpbnRvIGBgdHJ1bmsvYGAgc3VkZGVubHkgYGBienIgcHVsbGBgIGRvZXNuJ3QgbWlycm9yIHRo
ZSBicmFuY2gKK2ZvciB0aGVtIGFueW1vcmUgYmVjYXVzZSB0aGUgYnJhbmNoIGlzIG5vdyBhdCBg
YHByb2plY3QvbWVyZ2VkL25ldy1mZWF0dXJlYGAuCitUaGVyZSBhcmUgYSBjb3VwbGUgd2F5cyBh
cm91bmQgdGhpcy4gT25lIGlzIHRvIHVzZSBIVFRQIHJlZGlyZWN0cyB0byBwb2ludCBwZW9wbGUK
K3JlcXVlc3RpbmcgdGhlIG9sZCBicmFuY2ggdG8gdGhlIG5ldyBicmFuY2guIGBgYnpyYGAgPj0g
MC4xNSB3aWxsIGxldCB1c2VycyBrbm93Cit0aGF0IGBgaHR0cDovL29sZC9wYXRoIHJlZGlyZWN0
cyB0byBodHRwOi8vbmV3L3BhdGhgYC4gSG93ZXZlciwgdGhpcyBkb2Vzbid0IGhlbHAKK2lmIHBl
b3BsZSBhcmUgYWNjZXNzaW5nIGEgYnJhbmNoIHRocm91Z2ggbWV0aG9kcyBvdGhlciB0aGFuIEhU
VFAgKFNGVFAsIGxvY2FsIGZpbGVzeXN0ZW0sIGV0YykuCisKK0l0IHdvdWxkIGFsc28gYmUgcG9z
c2libGUgdG8gdXNlIGEgc3ltbGluayBmb3IgdGVtcG9yYXJ5IHJlZGlyZWN0aW5nIChhcyBsb25n
IGFzIHRoZSBzeW1saW5rCitpcyB3aXRoaW4gdGhlIHJlcG9zaXRvcnkgaXQgc2hvdWxkIGNhdXNl
IGxpdHRsZSB0cm91YmxlKS4gSG93ZXZlciBldmVudHVhbGx5IHlvdSB3YW50IHRvCityZW1vdmUg
dGhlIHN5bWxpbmssIG9yIHlvdSBkb24ndCBnZXQgdGhlIGNsdXR0ZXIgcmVkdWN0aW9uIGJlbmVm
aXQuCitBbm90aGVyIHBvc3NpYmlsaXR5IGluc3RlYWQgb2YgYSBzeW1saW5rIGlzIHRvIHVzZSBh
IGBgQnJhbmNoUmVmZXJlbmNlYGAuIEl0IGlzIGN1cnJlbnRseQorZGlmZmljdWx0IHRvIGNyZWF0
ZSB0aGVzZSB0aHJvdWdoIHRoZSBgYGJ6cmBgIGNvbW1hbmQgbGluZSwgYnV0IGlmIHBlb3BsZSBm
aW5kIHRoZW0gdXNlZnVsCit0aGF0IGNvdWxkIGJlIGNoYW5nZWQuCitUaGlzIGlzIGFjdHVhbGx5
IGhvdyBgTGF1bmNocGFkYF8gYWxsb3dzIHlvdSB0byBgYGJ6ciBjaGVja291dCBodHRwczovL2xh
dW5jaHBhZC5uZXQvYnpyYGAuCitFZmZlY3RpdmVseSBhIGBgQnJhbmNoUmVmZXJlbmNlYGAgaXMg
YSBzeW1saW5rLCBidXQgaXQgYWxsb3dzIHlvdSB0byByZWZlcmVuY2UgYW55IG90aGVyIFVSTC4K
K0lmIGl0IGlzIGV4dGVuZGVkIHRvIHN1cHBvcnQgcmVsYXRpdmUgcmVmZXJlbmNlcywgaXQgd291
bGQgZXZlbiB3b3JrIG92ZXIgaHR0cCwgc2Z0cCwgCithbmQgbG9jYWwgcGF0aHMuCisKKy4uIF9M
YXVuY2hwYWQ6IGh0dHBzOi8vbGF1bmNocGFkLm5ldAorCisKK1NvcnRlZCBieSBkYXRlL3JlbGVh
c2UvZXRjIChgYDIwMDYtMDYvYGAsIGBgMjAwNi0wNy9gYCwgYGAwLjgvYGAsIGBgMC45YGApCis9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQorCitBbm90aGVyIG1ldGhvZCBvZiBhbGxvd2luZyBzb21lIHNjYWxh
YmlsaXR5IHdoaWxlIGFsc28gYWxsb3dpbmcgdGhlCiticm93c2luZyBvZiAiY3VycmVudCIgYnJh
bmNoZXMuIEJhc2ljYWxseSwgdGhpcyB3b3JrcyBvbiB0aGUgYXNzdW1wdGlvbiAKK3RoYXQgYWN0
aXZlbHkgZGV2ZWxvcGVkIGJyYW5jaGVzIHdpbGwgYmUgIm5ldyIgYnJhbmNoZXMsIGFuZCBvbGRl
ciBicmFuY2hlcworYXJlIGVpdGhlciBtZXJnZWQgb3IgYWJhbmRvbmVkLgorCitCYXNpY2FsbHkg
dGhlIGRhdGUgbGF5b3V0IGxvb2tzIHNvbWV0aGluZyBsaWtlOjoKKworICBwcm9qZWN0LyAgICAg
ICAgICAgICAgICAjIE92ZXJhbGwgcHJvamVjdCByZXBvc2l0b3J5CisgICArLSB0cnVuay8gICAg
ICAgICAgICAgICMgR2VuZXJhbCBtYWlubGluZQorICAgKy0gMjAwNi0wNi8gICAgICAgICAgICAj
IGNvbnRhaW5pbmcgZGlyZWN0b3J5IGZvciBicmFuY2hlcyBjcmVhdGVkIGluIHRoaXMgbW9udGgK
KyAgIHwgICArLSBmZWF0dXJlMS8gICAgICAgIyBCcmFuY2ggb2YgInByb2plY3QiIGZvciAiZmVh
dHVyZTEiCisgICB8ICAgKy0gZmVhdHVyZTIvICAgICAgICMgQnJhbmNoIG9mICJwcm9qZWN0IiBm
b3IgImZlYXR1cmUyIgorICAgKy0gMjAwNS0wNS8gICAgICAgICAgICAjIENvbnRhaW5pbmcgZGly
ZWN0b3J5IGZvciBicmFuY2hlcyBjcmVhdGUgaW4gYSBkaWZmZXJlbnQgbW9udGgKKyAgICAgICAr
LSBmZWF0dXJlMy8KKyAgICAgICAuLi4KKworVGhpcyBhbnN3ZXJzIHRoZSBxdWVzdGlvbiAiV2hl
cmUgc2hvdWxkIEkgcHV0IG15IG5ldyBicmFuY2g/IiB2ZXJ5IHF1aWNrbHkuCitJZiBhIGZlYXR1
cmUgaXMgZGV2ZWxvcGVkIGZvciBhIGxvbmcgdGltZSwgaXQgaXMgZXZlbiByZWFzb25hYmxlIHRv
IGNvcHkgYQorYnJhbmNoIGludG8gdGhlIG5ld2VzdCBkYXRlLCBhbmQgY29udGludWUgd29ya2lu
ZyBvbiBpdCB0aGVyZS4KK0ZpbmRpbmcgYW4gYWN0aXZlIGJyYW5jaCBnZW5lcmFsbHkgbWVhbnMg
Z29pbmcgdG8gdGhlIG5ld2VzdCBkYXRlLCBhbmQKK2dvaW5nIGJhY2t3YXJkcyBmcm9tIHRoZXJl
LiAoQSBzbWFsbCBkaXNhZHZhbnRhZ2UgaXMgdGhhdCBtb3N0IGRpcmVjdG9yeQorbGlzdGluZ3Mg
c29ydCBvbGRlc3QgdG8gdGhlIHRvcCwgd2hpY2ggbWF5IG1lYW4gbW9yZSBzY3JvbGxpbmcpLgor
SWYgeW91IGRvbid0IGNvcHkgb2xkIGJyYW5jaGVzIHRvIG5ld2VyIGxvY2F0aW9ucywgaXQgYWxz
byBoYXMgdGhlIGRpc2FkdmFudGFnZQordGhhdCBzZWFyY2hpbmcgZm9yIGEgYnJhbmNoIG1heSB0
YWtlIGEgd2hpbGUuCisKK0Fub3RoZXIgdmFyaWFudCBpcyBieSByZWxlYXNlIHRhcmdldDo6CisK
KyAgcHJvamVjdC8gICAgICAgICAgIyBPdmVyYWxsIHJlcG9zaXRvcnkKKyAgICstIHRydW5rLyAg
ICAgICAgIyBNYWlubGluZSBkZXZlbG9wbWVudCBicmFuY2gKKyAgICstIHJlbGVhc2VzLyAgICAg
IyBDb250YWluZXIgZm9yIHJlbGVhc2UgYnJhbmNoZXMKKyAgIHwgICArLSAwLjgvICAgICAgIyBU
aGUgYnJhbmNoIGZvciByZWxlYXNlIDAuOAorICAgfCAgICstIDAuOS8gICAgICAjIFRoZSBicmFu
Y2ggZm9yIHJlbGVhc2UgMC45CisgICArLSAwLjgvICAgICAgICAgICMgQ29udGFpbmVyIGZvciBi
cmFuY2hlcyB0YXJnZXRpbmcgcmVsZWFzZSAwLjgKKyAgIHwgICArLSBmZWF0dXJlMS8gIyBCcmFu
Y2ggZm9yICJmZWF0dXJlMSIgd2hpY2ggaXMgaW50ZW5kZWQgdG8gYmUgbWVyZ2VkIGludG8gMC44
CisgICB8ICAgKy0gZmVhdHVyZTIvICMgQnJhbmNoIGZvciAiZmVhdHVyZTIiIHdoaWNoIGlzIHRh
cmdldGVkIGZvciAwLjgKKyAgICstIDAuOS8KKyAgICAgICArLSBmZWF0dXJlMy8gIyBCcmFuY2gg
Zm9yICJmZWF0dXJlMyIsIHRhcmdldGVkIGZvciByZWxlYXNlIDAuOQorCisKK1NvbWUgcG9zc2li
bGUgdmFyaWFudHMgaW5jbHVkZSBoYXZpbmcgdGhlIGBgMC45YGAgZGlyZWN0b3J5IGltcGx5Cit0
aGF0IGl0IGlzIGJyYW5jaGVkICpmcm9tKiAwLjkgcmF0aGVyIHRoYW4gKmZvciogMC45LCBvciBo
YXZpbmcgdGhlIGBgMC44L3JlbGVhc2VgYAorYXMgdGhlIG9mZmljaWFsIHJlbGVhc2UgMC44IGJy
YW5jaC4KKworVGhlIGdlbmVyYWwgaWRlYSBpcyB0aGF0IGJ5IHRhcmdldGluZyBhIHJlbGVhc2Us
IHlvdSBjYW4gbG9vayBhdCB3aGF0IGJyYW5jaGVzIGFyZQord2FpdGluZyB0byBiZSBtZXJnZWQu
IEl0IGRvZXNuJ3QgbmVjZXNzYXJpbHkgZ2l2ZSB5b3UgYSBnb29kIGlkZWEgb2Ygd2hhdCB0aGUK
K3N0YXRlIG9mIHRoZSBicmFuY2ggKGlzIGl0IGluIGRldmVsb3BtZW50IG9yIGZpbmlzaGVkIGF3
YWl0aW5nIHJldmlldykuCitJdCBhbHNvIGhhcyBhIGhpc3RvcnktaGlkaW5nIGVmZmVjdCwgYW5k
IG90aGVyd2lzZSBoYXMgdGhlIHNhbWUgYmVuZWZpdHMgCithbmQgZGVmaWNpdHMgYXMgYSBkYXRl
LWJhc2VkIHNvcnRpbmcuIAorCisKK1NpbXBsZSBkZXZlbG9wZXIgbmFtaW5nIChgYHByb2plY3Qv
am9lL2Zvb2BgLCBgYHByb2plY3QvYmFycnkvYmFyYGApCis9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitBbm90aGVy
IHBvc3NpYmx5IGxheW91dCBpcyB0byBnaXZlIGVhY2ggZGV2ZWxvcGVyIGEgZGlyZWN0b3J5LCBh
bmQgdGhlbgoraGF2ZSBhIHNpbmdsZSBzdWItZGlyZWN0b3J5IGZvciBicmFuY2hlcy4gU29tZXRo
aW5nIGxpa2U6OgorCisgIHByb2plY3QvICAgICAgIyBPdmVyYWxsIHJlcG9zaXRvcnkKKyAgICst
IHRydW5rLyAgICAjIE1haW5saW5lIGJyYW5jaAorICAgKy0gam9lLyAgICAgICMgQSBjb250YWlu
ZXIgZm9yIEpvZSdzIGJyYW5jaGVzCisgICB8ICAgKy0gZm9vLyAgIyBKb2UncyAiZm9vIiBicmFu
Y2ggb2YgInByb2plY3QiCisgICArLSBiYXJyeS8KKyAgICAgICArLSBiYXIvICAjIEJhcnJ5J3Mg
ImJhciIgYnJhbmNoIG9mICJwcm9qZWN0IgorCitUaGUgaWRlYSBpcyB0aGF0IG5vIGJyYW5jaCBp
cyAibmVzdGVkIiB1bmRlcm5lYXRoIGFub3RoZXIgb25lLCBqdXN0IHRoYXQgZWFjaCBkZXZlbG9w
ZXIKK2hhcyBoaXMvaGVyIGJyYW5jaGVzIGdyb3VwZWQgdG9nZXRoZXIuCisKK0EgdmFyaWFudCB3
aGljaCBpcyB1c2VkIGJ5IGBMYXVuY2hwYWRgXyBpczo6CisKKyAgcmVwb3NpdG9yeS8KKyAgICst
IGpvZS8gICAgICAgICAgICAgIyBKb2UncyBicmFuY2hlcworICAgfCAgICstIHByb2plY3QxLyAg
ICAjIENvbnRhaW5lciBmb3IgSm9lJ3MgYnJhbmNoZXMgb2YgInByb2plY3QxIgorICAgfCAgIHwg
ICArLSBmb28vICAgICAjIEpvZSdzICJmb28iIGJyYW5jaCBvZiAicHJvamVjdDEiCisgICB8ICAg
Ky0gcHJvamVjdDIvICAgICMgQ29udGFpbmVyIGZvciBKb2UncyAicHJvamVjdDIiIGJyYW5jaGVz
CisgICB8ICAgICAgICstIGJhci8gICAgICMgSm9lJ3MgImJhciIgYnJhbmNoIG9mICJwcm9qZWN0
MiIKKyAgIHwgICAgICAgIC4uLgorICAgfAorICAgKy0gYmFycnkvCisgICB8ICAgKy0gcHJvamVj
dDEvICAgICMgQ29udGFpbmVyIGZvciBCYXJyeSdzIGJyYW5jaGVzIG9mICJwcm9qZWN0MSIKKyAg
IHwgICAgICAgKy0gYnVnLTEwLyAgIyBCYXJyeSdzICJidWctMTAiIGJyYW5jaCBvZiAicHJvamVj
dDEiCisgICB8ICAgLi4uCisgICArLSBncm91cC8KKyAgICAgICArLSBwcm9qZWN0MS8KKyAgICAg
ICAgICAgKy0gdHJ1bmsvICAgIyBUaGUgbWFpbiBkZXZlbG9wbWVudCBmb2N1cyBmb3IgInByb2pl
Y3QxIgorCisKK1RoaXMgbGV0cyB5b3UgZWFzaWx5IGJyb3dzZSB3aGF0IGVhY2ggZGV2ZWxvcGVy
IGlzIHdvcmtpbmcgb24uIEZvY3VzIGJyYW5jaGVzCithcmUga2VwdCBpbiBhICJncm91cCIgZGly
ZWN0b3J5LCB3aGljaCBsZXRzIHlvdSBzZWUgd2hhdCBicmFuY2hlcyB0aGUgImdyb3VwIgoraXMg
d29ya2luZyBvbi4KKworVGhpcyBrZWVwcyBkaWZmZXJlbnQgcGVvcGxlJ3Mgd29yayBzZXBhcmF0
ZWQgZnJvbSBlYWNoLW90aGVyLCBidXQgYWxzbyBtYWtlcyBpdAoraGFyZCB0byBmaW5kICJhbGwg
YnJhbmNoZXMgZm9yIHByb2plY3QgWCIuIGBMYXVuY2hwYWRgXyBjb21wZW5zYXRlcyBmb3IgdGhp
cworYnkgcHJvdmlkaW5nIGEgbmljZSB3ZWIgaW50ZXJmYWNlIHdpdGggYSBkYXRhYmFzZSBiYWNr
IGVuZCwgd2hpY2ggYWxsb3dzIGEKKyJ2aWV3IiB0byBiZSBwdXQgb24gdG9wIG9mIHRoaXMgbGF5
b3V0LgorVGhpcyBpcyBjbG9zZXIgdG8gdGhlIG1vZGVsIG9mIHBlb3BsZSdzIGhvbWUgcGFnZXMs
IHdoZXJlIGVhY2ggcGVyc29uIGhhcyBhCisiYGB+L3B1YmxpY19odG1sYGAiIGRpcmVjdG9yeSB3
aGVyZSB0aGV5IGNhbiBwdWJsaXNoIHRoZWlyIG93biB3ZWItcGFnZXMuCitJbiBnZW5lcmFsLCB0
aG91Z2gsIHdoZW4geW91IGFyZSBjcmVhdGluZyBhIHNoYXJlZCByZXBvc2l0b3J5IGZvciBjZW50
cmFsaXphdGlvbgorb2YgYSBwcm9qZWN0LCB5b3UgZG9uJ3Qgd2FudCB0byBzcGxpdCBpdCB1cCBi
eSBwZXJzb24gYW5kIHRoZW4gcHJvamVjdC4KK1VzdWFsbHkgeW91IHdvdWxkIHdhbnQgdG8gc3Bs
aXQgaXQgdXAgYnkgcHJvamVjdCBhbmQgdGhlbiBieSBwZXJzb24uCisKKworU3VtbWFyeQorPT09
PT09PQorCitJbiB0aGUgZW5kLCBubyBzaW5nbGUgbmFtaW5nIHNjaGVtZSB3aWxsIHdvcmsgZm9y
IGV2ZXJ5b25lLiBJdCBkZXBlbmRzIGEgbG90IG9uCit0aGUgbnVtYmVyIG9mIGRldmVsb3BlcnMs
IGhvdyBvZnRlbiB5b3UgY3JlYXRlIGEgbmV3IGJyYW5jaCwgd2hhdCBzb3J0IG9mCitsaWZlY3lj
bGVzIHlvdXIgYnJhbmNoZXMgZ28gdGhyb3VnaC4gU29tZSBxdWVzdGlvbnMgdG8gYXNrIHlvdXJz
ZWxmOgorCisgIDEpIERvIHlvdSBjcmVhdGUgYSBmZXcgbG9uZy1saXZlZCBicmFuY2hlcywgb3Ig
ZG8geW91IGNyZWF0ZSBsb3RzIG9mICJtaW5pIiBmZWF0dXJlIGJyYW5jaGVzCisgICAgIChBbG9u
ZyB3aXRoIHRoaXMgaXM6IFdvdWxkIHlvdSAqbGlrZSogdG8gY3JlYXRlIGxvdHMgb2YgbWluaSBm
ZWF0dXJlIGJyYW5jaGVzLCBidXQgY2FuJ3QKKyAgICAgYmVjYXVzZSB0aGV5IGFyZSBhIHBhaW4g
aW4geW91ciBjdXJyZW50IFZDUz8pCisKKyAgMikgQXJlIHlvdSBhIHNpbmdsZSBkZXZlbG9wZXIs
IG9yIGEgbGFyZ2UgdGVhbT8KKworICAzKSBJZiBhIHRlYW0sIGRvIHlvdSBwbGFuIG9uIGdlbmVy
YWxseSBoYXZpbmcgZXZlcnlvbmUgd29ya2luZyBvbiB0aGUgc2FtZSBicmFuY2ggYXQgdGhlIHNh
bWUKKyAgICAgdGltZT8gT3Igd2lsbCB5b3UgaGF2ZSBhICJzdGFibGUiIGJyYW5jaCB0aGF0IHBl
b3BsZSBhcmUgZXhwZWN0ZWQgdG8gdHJhY2suCisKCg==

=== added directory man1 // file-id:man1-20070418045910-74ew7wm1oqo2tfv0-1 // l
... ast-changed:robertc@robertcollins.net-20070419022744-pfdqz42kp1wizh43
=== added file tools/bzr_epydoc // file-id:bzr_epydoc-20070409231252-ec7uffstn6
... 2q7nhv-1 // last-changed:john@arbash-meinel.com-20070412202742-4cr2qmchdfe9
... mg7n // encoding:base64
LS0tIC9kZXYvbnVsbAorKysgdG9vbHMvYnpyX2VweWRvYwpAQCAtMCwwICsxLDE0IEBACisjIS91
c3IvYmluL2VudiBweXRob24KKyMKKyMgQ2FsbCB0aGUgY29tbWFuZCBsaW5lIGludGVyZmFjZSBm
b3IgRXB5ZG9jLgorIworCisiIiJXcmFwcGVyIGFyb3VuZCBFcHlkb2MgdGhhdCBqdXN0IG1ha2Vz
IGl0IHVuZGVyc3RhbmQgYnpyJ3MgbGF6eSBpbXBvcnRzLiIiIgorCisjIFRoaXMgd2lsbCBlbmFi
bGUgdGhlIGxhenlfaW1wb3J0IGNvbXBhdGliaWxpdHkgY29kZQoraW1wb3J0IGJ6cl9lcHlkb2Nf
dWlkCisKK2Zyb20gZXB5ZG9jLmNsaSBpbXBvcnQgY2xpCitjbGkoKQorCisKCg==

=== added file tools/bzr_epydoc_uid.py // file-id:bzr_epydoc_uid.py-20070409231
... 252-ec7uffstn62q7nhv-2 // last-changed:john@arbash-meinel.com-2007041220274
... 2-4cr2qmchdfe9mg7n // encoding:base64
LS0tIC9kZXYvbnVsbAorKysgdG9vbHMvYnpyX2VweWRvY191aWQucHkKQEAgLTAsMCArMSw0MyBA
QAorIyBDb3B5cmlnaHQgKEMpIDIwMDcgQ2Fub25pY2FsIEx0ZAorIworIyBUaGlzIHByb2dyYW0g
aXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQor
IyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFz
IHB1Ymxpc2hlZCBieQorIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVy
c2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgorIyAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2
ZXJzaW9uLgorIworIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhh
dCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0
IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorIyBHTlUgR2VuZXJhbCBQdWJs
aWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorIworIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2
ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorIyBhbG9uZyB3aXRo
IHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorIyBGb3Vu
ZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAgMDIx
MTEtMTMwNyAgVVNBCisKKyIiIk1vbmtleSBwYXRjaCB0byBtYWtlIGVweWRvYyB3b3JrIHdpdGgg
YnpybGliJ3MgbGF6eSBpbXBvcnRzLiIiIgorCitpbXBvcnQgZXB5ZG9jLnVpZAorCitpbXBvcnQg
YnpybGliLmxhenlfaW1wb3J0CisKKworX09iamVjdFVJRCA9IGVweWRvYy51aWQuT2JqZWN0VUlE
CitfU2NvcGVSZXBsYWNlciA9IGJ6cmxpYi5sYXp5X2ltcG9ydC5TY29wZVJlcGxhY2VyCisKKwor
Y2xhc3MgT2JqZWN0VUlEKF9PYmplY3RVSUQpOgorCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIG9i
aik6CisgICAgICAgIGlmIGlzaW5zdGFuY2Uob2JqLCBfU2NvcGVSZXBsYWNlcik6CisgICAgICAg
ICAgICAjIFRoZSBpc2luc3RhbmNlIHdpbGwgdHJpZ2dlciBhIHJlcGxhY2VtZW50IGlmIGl0IGlz
IGEgcmVhbAorICAgICAgICAgICAgIyBfQnpyU2NvcGVSZXBsYWNlciwgYnV0IHRoZSBsb2NhbCBv
YmplY3Qgd29uJ3Qga25vdyBhYm91dCBpdCwgc28KKyAgICAgICAgICAgICMgcmVwbGFjZSBpdCBs
b2NhbGx5LgorICAgICAgICAgICAgb2JqID0gb2JqZWN0Ll9fZ2V0YXR0cmlidXRlX18ob2JqLCAn
X3JlYWxfb2JqJykKKyAgICAgICAgX09iamVjdFVJRC5fX2luaXRfXyhzZWxmLCBvYmopCisKKwor
ZXB5ZG9jLnVpZC5PYmplY3RVSUQgPSBPYmplY3RVSUQKKworCitfU2NvcGVSZXBsYWNlci5fc2hv
dWxkX3Byb3h5ID0gVHJ1ZQorCgo=

=== renamed file HACKING // doc/developers/HACKING // last-changed:robertc@robe
... rtcollins.net-20070507164814-wpagonutf4b5cf8s // encoding:base64
LS0tIEhBQ0tJTkcKKysrIGRvYy9kZXZlbG9wZXJzL0hBQ0tJTkcKQEAgLTEsMTQgKzEsMjI3IEBA
Ci09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci1HdWlkZWxpbmVzIGZvciBtb2RpZnlpbmcg
YnpyCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09Cis9PT09PT09PT09PT09PT09PT09PT09
CitCYXphYXIgRGV2ZWxvcGVyIEd1aWRlCis9PT09PT09PT09PT09PT09PT09PT09CiAKIC4uIGNv
bnRlbnRzOjoKIAogKFRoZSBjdXJyZW50IHZlcnNpb24gb2YgdGhpcyBkb2N1bWVudCBpcyBhdmFp
bGFibGUgaW4gdGhlIGZpbGUgYGBIQUNLSU5HYGAKLWluIHRoZSBzb3VyY2UgdHJlZSwgb3IgYXQg
aHR0cDovL2RvYy5iYXphYXItdmNzLm9yZy9jdXJyZW50L2hhY2tpbmcuaHRtbCkKLQotT3ZlcmFs
bAotPT09PT09PQoraW4gdGhlIHNvdXJjZSB0cmVlLCBvciBhdCBodHRwOi8vZG9jLmJhemFhci12
Y3Mub3JnL2J6ci5kZXYvaGFja2luZy5odG1sKQorCisKK0dldHRpbmcgU3RhcnRlZAorIyMjIyMj
IyMjIyMjIyMjCisKK0V4cGxvcmluZyB0aGUgQmF6YWFyIFBsYXRmb3JtCis9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQorCitCZWZvcmUgbWFraW5nIGNoYW5nZXMsIGl0J3MgYSBnb29kIGlk
ZWEgdG8gZXhwbG9yZSB0aGUgd29yayBhbHJlYWR5Citkb25lIGJ5IG90aGVycy4gUGVyaGFwcyB0
aGUgbmV3IGZlYXR1cmUgb3IgaW1wcm92ZW1lbnQgeW91J3JlIGxvb2tpbmcKK2ZvciBpcyBhdmFp
bGFibGUgaW4gYW5vdGhlciBwbHVnLWluIGFscmVhZHk/IElmIHlvdSBmaW5kIGEgYnVnLAorcGVy
aGFwcyBzb21lb25lIGVsc2UgaGFzIGFscmVhZHkgZml4ZWQgaXQ/CisKK1RvIGFuc3dlciB0aGVz
ZSBxdWVzdGlvbnMgYW5kIG1vcmUsIHRha2UgYSBtb21lbnQgdG8gZXhwbG9yZSB0aGUKK292ZXJh
bGwgQmF6YWFyIFBsYXRmb3JtLiBIZXJlIGFyZSBzb21lIGxpbmtzIHRvIGJyb3dzZToKKworKiBU
aGUgUGx1Z2lucyBwYWdlIG9uIHRoZSBXaWtpIC0gaHR0cDovL2JhemFhci12Y3Mub3JnL0J6clBs
dWdpbnMKKworKiBUaGUgQmF6YWFyIHByb2R1Y3QgZmFtaWx5IG9uIExhdW5jaHBhZCAtIGh0dHBz
Oi8vbGF1bmNocGFkLm5ldC9iYXphYXIKKworKiBCdWcgVHJhY2tlciBmb3IgdGhlIGNvcmUgcHJv
ZHVjdCAtIGh0dHBzOi8vYnVncy5sYXVuY2hwYWQubmV0L2J6ci8KKworKiBCbHVlcHJpbnQgVHJh
Y2tlciBmb3IgdGhlIGNvcmUgcHJvZHVjdCAtIGh0dHBzOi8vYmx1ZXByaW50cy5sYXVuY2hwYWQu
bmV0L2J6ci8KKworSWYgbm90aGluZyBlbHNlLCBwZXJoYXBzIHlvdSdsbCBmaW5kIGluc3BpcmF0
aW9uIGluIGhvdyBvdGhlciBkZXZlbG9wZXJzCitoYXZlIHNvbHZlZCB0aGVpciBjaGFsbGVuZ2Vz
LgorCisKK1BsYW5uaW5nIGFuZCBEaXNjdXNzaW5nIENoYW5nZXMKKz09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KKworVGhlcmUgaXMgYSB2ZXJ5IGFjdGl2ZSBjb21tdW5pdHkgYXJvdW5k
IEJhemFhci4gTW9zdGx5IHdlIG1lZXQgb24gSVJDCisoI2J6ciBvbiBpcmMuZnJlZW5vZGUubmV0
KSBhbmQgb24gdGhlIG1haWxpbmcgbGlzdC4gVG8gam9pbiB0aGUgQmF6YWFyCitjb21tdW5pdHks
IHNlZSBodHRwOi8vYmF6YWFyLXZjcy5vcmcvQnpyU3VwcG9ydC4KKworSWYgeW91IGFyZSBwbGFu
bmluZyB0byBtYWtlIGEgY2hhbmdlLCBpdCdzIGEgdmVyeSBnb29kIGlkZWEgdG8gbWVudGlvbiBp
dAorb24gdGhlIElSQyBjaGFubmVsIGFuZC9vciBvbiB0aGUgbWFpbGluZyBsaXN0LiBUaGVyZSBh
cmUgbWFueSBhZHZhbnRhZ2VzCit0byBpbnZvbHZpbmcgdGhlIGNvbW11bml0eSBiZWZvcmUgeW91
IHNwZW5kIG11Y2ggdGltZSBvbiBhIGNoYW5nZS4KK1RoZXNlIGluY2x1ZGU6CisKKyogeW91IGdl
dCB0byBidWlsZCBvbiB0aGUgd2lzZG9tIG9uIG90aGVycywgc2F2aW5nIHRpbWUKKworKiBpZiBv
dGhlcnMgY2FuIGRpcmVjdCB5b3UgdG8gc2ltaWxhciBjb2RlLCBpdCBtaW5pbWlzZXMgdGhlIHdv
cmsgdG8gYmUgZG9uZSAKKworKiBpdCBhc3Npc3RzIGV2ZXJ5b25lIGluIGNvb3JkaW5hdGluZyBk
aXJlY3Rpb24sIHByaW9yaXRpZXMgYW5kIGVmZm9ydC4KKworSW4gc3VtbWFyeSwgbWF4aW1pc2lu
ZyB0aGUgaW5wdXQgZnJvbSBvdGhlcnMgdHlwaWNhbGx5IG1pbmltaXNlcyB0aGUKK3RvdGFsIGVm
Zm9ydCByZXF1aXJlZCB0byBnZXQgeW91ciBjaGFuZ2VzIG1lcmdlZC4gVGhlIGNvbW11bml0eSBp
cworZnJpZW5kbHksIGhlbHBmdWwgYW5kIGFsd2F5cyBrZWVuIHRvIHdlbGNvbWUgbmV3Y29tZXJz
LgorCisKK0JhemFhciBEZXZlbG9wbWVudCBpbiBhIE51dHNoZWxsCis9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQorCitMb29raW5nIGZvciBhIDEwIG1pbnV0ZSBpbnRyb2R1Y3Rpb24g
dG8gc3VibWl0dGluZyBhIGNoYW5nZT8KK1NlZSBodHRwOi8vYmF6YWFyLXZjcy5vcmcvQnpyR2l2
aW5nQmFjay4KKworVE9ETzogTWVyZ2UgdGhhdCBXaWtpIHBhZ2UgaW50byB0aGlzIGRvY3VtZW50
LgorCisKK1VuZGVyc3RhbmRpbmcgdGhlIERldmVsb3BtZW50IFByb2Nlc3MKKz09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworVGhlIGRldmVsb3BtZW50IHRlYW0gZm9sbG93
cyBtYW55IGJlc3QtcHJhY3RpY2VzIGluY2x1ZGluZzoKKworKiBhIHB1YmxpYyByb2FkbWFwIGFu
ZCBwbGFubmluZyBwcm9jZXNzIGluIHdoaWNoIGFueW9uZSBjYW4gcGFydGljaXBhdGUKKworKiB0
aW1lIGJhc2VkIG1pbGVzdG9uZXMgZXZlcnlvbmUgY2FuIHdvcmsgdG93YXJkcyBhbmQgcGxhbiBh
cm91bmQKKworKiBleHRlbnNpdmUgY29kZSByZXZpZXcgYW5kIGZlZWRiYWNrIHRvIGNvbnRyaWJ1
dG9ycworCisqIGNvbXBsZXRlIGFuZCByaWdvcm91cyB0ZXN0IGNvdmVyYWdlIG9uIGFueSBjb2Rl
IGNvbnRyaWJ1dGVkCisKKyogYXV0b21hdGVkIHZhbGlkYXRpb24gdGhhdCBhbGwgdGVzdHMgc3Rp
bGwgcGFzcyBiZWZvcmUgY29kZSBpcyBtZXJnZWQKKyAgaW50byB0aGUgbWFpbiBjb2RlIGJyYW5j
aC4KKworVGhlIGtleSB0b29scyB3ZSB1c2UgdG8gZW5hYmxlIHRoZXNlIHByYWN0aWNlcyBhcmU6
CisKKyogTGF1bmNocGFkIC0gaHR0cHM6Ly9sYXVuY2hwYWQubmV0LworCisqIEJhemFhciAtIGh0
dHA6Ly9iYXphYXItdmNzLm9yZy8KKworKiBCdW5kbGUgQnVnZ3kgLSBodHRwOi8vYnVuZGxlYnVn
Z3kuYWFyb25iZW50bGV5LmNvbS8KKworKiBQYXRjaCBRdWV1ZSBNYW5hZ2VyIC0gaHR0cHM6Ly9s
YXVuY2hwYWQubmV0L3BxbS8KKworRm9yIGZ1cnRoZXIgaW5mb3JtYXRpb24sIHNlZSBodHRwOi8v
YmF6YWFyLXZjcy5vcmcvQnpyRGV2ZWxvcG1lbnQuCisKKworQSBDbG9zZXIgTG9vayBhdCB0aGUg
TWVyZ2UgJiBSZXZpZXcgUHJvY2VzcworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQorCitJZiB5b3UnZCBsaWtlIHRvIHByb3Bvc2UgYSBjaGFuZ2UsIHBsZWFzZSBw
b3N0IHRvIHRoZQorYmF6YWFyQGxpc3RzLmNhbm9uaWNhbC5jb20gbGlzdCB3aXRoIGEgYnVuZGxl
LCBwYXRjaCwgb3IgbGluayB0byBhCiticmFuY2guIFB1dCAnW1BBVENIXScgb3IgJ1tNRVJHRV0n
IGluIHRoZSBzdWJqZWN0IHNvIEJ1bmRsZSBCdWdneQorY2FuIHBpY2sgaXQgb3V0LCBhbmQgZXhw
bGFpbiB0aGUgY2hhbmdlIGluIHRoZSBlbWFpbCBtZXNzYWdlIHRleHQuCitSZW1lbWJlciB0byB1
cGRhdGUgdGhlIE5FV1MgZmlsZSBhcyBwYXJ0IG9mIHlvdXIgY2hhbmdlIGlmIGl0IG1ha2VzIGFu
eQorY2hhbmdlcyB2aXNpYmxlIHRvIHVzZXJzIG9yIHBsdWdpbiBkZXZlbG9wZXJzLiBQbGVhc2Ug
aW5jbHVkZSBhIGRpZmYKK2FnYWluc3QgbWFpbmxpbmUgaWYgeW91J3JlIGdpdmluZyBhIGxpbmsg
dG8gYSBicmFuY2guCisKK1lvdSBjYW4gZ2VuZXJhdGUgYSBidW5kbGUgbGlrZSB0aGlzOjoKKwor
ICBienIgYnVuZGxlID4gbXlidW5kbGUucGF0Y2gKKyAgCitBIC5wYXRjaCBleHRlbnNpb24gaXMg
cmVjb21tZW5kZWQgaW5zdGVhZCBvZiAuYnVuZGxlIGFzIG1hbnkgbWFpbCBjbGllbnRzCit3aWxs
IHNlbmQgdGhlIGxhdHRlciBhcyBhIGJpbmFyeSBmaWxlLiBJZiBhIGJ1bmRsZSB3b3VsZCBiZSB0
b28gbG9uZyBvciB5b3VyCittYWlsZXIgbWFuZ2xlcyB3aGl0ZXNwYWNlIChlLmcuIGltcGxpY2l0
bHkgY29udmVydHMgVW5peCBuZXdsaW5lcyB0byBET1MKK25ld2xpbmVzKSwgdXNlIHRoZSBtZXJn
ZS1kaXJlY3RpdmUgY29tbWFuZCBpbnN0ZWFkIGxpa2UgdGhpczo6CisKKyAgYnpyIG1lcmdlLWRp
cmVjdGl2ZSBodHRwOi8vYmF6YWFyLXZjcy5vcmcgaHR0cDovL2V4YW1wbGUub3JnL215X2JyYW5j
aCA+IG15X2RpcmVjdGl2ZS5wYXRjaAorCitTZWUgdGhlIGhlbHAgZm9yIGRldGFpbHMgb24gdGhl
IGFyZ3VtZW50cyB0byBtZXJnZS1kaXJlY3RpdmUuCisKK1BsZWFzZSBkbyAqKk5PVCoqIHB1dCBb
UEFUQ0hdIG9yIFtNRVJHRV0gaW4gdGhlIHN1YmplY3QgbGluZSBpZiB5b3UgZG9uJ3QKK3dhbnQg
aXQgdG8gYmUgbWVyZ2VkLiBJZiB5b3Ugd2FudCBjb21tZW50cyBmcm9tIGRldmVsb3BlcnMgcmF0
aGVyIHRoYW4KK3RvIGJlIG1lcmdlZCwgeW91IGNhbiBwdXQgJ1tSRkNdJyBpbiB0aGUgc3ViamVj
dCBsaW5lLgorCitBbnlvbmUgaXMgd2VsY29tZSB0byByZXZpZXcgY29kZS4gIFRoZXJlIGFyZSBi
cm9hZGx5IHRocmVlIGdhdGVzIGZvcgorY29kZSB0byBnZXQgaW46CisKKyAqIERvZXNuJ3QgcmVk
dWNlIHRlc3QgY292ZXJhZ2U6IGlmIGl0IGFkZHMgbmV3IG1ldGhvZHMgb3IgY29tbWFuZHMsCisg
ICB0aGVyZSBzaG91bGQgYmUgdGVzdHMgZm9yIHRoZW0uICBUaGVyZSBpcyBhIGdvb2QgdGVzdCBm
cmFtZXdvcmsKKyAgIGFuZCBwbGVudHkgb2YgZXhhbXBsZXMgdG8gY3JpYiBmcm9tLCBidXQgaWYg
eW91IGFyZSBoYXZpbmcgdHJvdWJsZQorICAgd29ya2luZyBvdXQgaG93IHRvIHRlc3Qgc29tZXRo
aW5nIGZlZWwgZnJlZSB0byBwb3N0IGEgZHJhZnQgcGF0Y2gKKyAgIGFuZCBhc2sgZm9yIGhlbHAu
CisKKyAqIERvZXNuJ3QgcmVkdWNlIGRlc2lnbiBjbGFyaXR5LCBzdWNoIGFzIGJ5IGVudGFuZ2xp
bmcgb2JqZWN0cworICAgd2UncmUgdHJ5aW5nIHRvIHNlcGFyYXRlLiAgVGhpcyBpcyBtb3N0bHkg
c29tZXRoaW5nIHRoZSBtb3JlCisgICBleHBlcmllbmNlZCByZXZpZXdlcnMgbmVlZCB0byBoZWxw
IGNoZWNrLgorCisgKiBJbXByb3ZlcyBidWdzLCBmZWF0dXJlcywgc3BlZWQsIG9yIGNvZGUgc2lt
cGxpY2l0eS4KKworQ29kZSB0aGF0IGdvZXMgaW4gc2hvdWxkIHBhc3MgYWxsIHRocmVlLiBUaGUg
Y29yZSBkZXZlbG9wZXJzIHRha2UgY2FyZQordG8ga2VlcCB0aGUgY29kZSBxdWFsaXR5IGhpZ2gg
YW5kIHVuZGVyc3RhbmRhYmxlIHdoaWxlIHJlY29nbmlzaW5nIHRoYXQKK3BlcmZlY3QgaXMgc29t
ZXRpbWVzIHRoZSBlbmVteSBvZiBnb29kLiAoSXQgaXMgZWFzeSBmb3IgcmV2aWV3cyB0byBtYWtl
CitwZW9wbGUgbm90aWNlIG90aGVyIHRoaW5ncyB3aGljaCBzaG91bGQgYmUgZml4ZWQgYnV0IHRo
b3NlIHRoaW5ncyBzaG91bGQKK25vdCBob2xkIHVwIHRoZSBvcmlnaW5hbCBmaXggYmVpbmcgYWNj
ZXB0ZWQuIE5ldyB0aGluZ3MgY2FuIGVhc2lseSBiZQorcmVjb3JkZWQgaW4gdGhlIEJ1ZyBUcmFj
a2VyIGluc3RlYWQuKQorCitBbnlvbmUgY2FuICJ2b3RlIiBvbiB0aGUgbWFpbGluZyBsaXN0LiBD
b3JlIGRldmVsb3BlcnMgY2FuIGFsc28gdm90ZSB1c2luZworQnVuZGxlIEJ1Z2d5LiBIZXJlIGFy
ZSB0aGUgdm90aW5nIGNvZGVzIGFuZCB0aGVpciBleHBsYW5hdGlvbnMuCisKKyAgLTEJcmVhbGx5
IGRvbid0IHdhbnQgaXQgaW4gY3VycmVudCBmb3JtCisgIC0wCXNvbWV3aGF0IHVuY29tZm9ydGFi
bGUgCisgICswCWNvbWZvcnRhYmxlIGJ1dCByZXN1Ym1pc3Npb24gYWZ0ZXIgY2hhbmdlcyByZXF1
ZXN0ZWQKKyAgKzEgY29uZGl0aW9uYWwJZ29vZCB0byBnbyBhZnRlciBzb21lIG1pbm9yIGNoYW5n
ZXMKKyAgKzEJZ29vZCB0byBnbworCisrMSBjb25kaXRpb25hbCBpcyB1c2VkIGFzIGEgd2F5IHRv
IGF2b2lkIGFub3RoZXIgc3VibWl0L3JldmlldyBjeWNsZSBmb3IKK3BhdGNoZXMgdGhhdCBuZWVk
IHNtYWxsIGNoYW5nZXMuCisKK0lmIGEgY2hhbmdlIGdldHMgdHdvICsxIHZvdGVzIGZyb20gY29y
ZSByZXZpZXdlcnMsIGFuZCBubwordmV0b3MsIHRoZW4gaXQncyBPSyB0byBjb21lIGluLiAgQW55
IG9mIHRoZSBjb3JlIGRldmVsb3BlcnMgY2FuIGJyaW5nIGl0CitpbnRvIHRoZSBienIuZGV2IHRy
dW5rIGFuZCBiYWNrcG9ydCBpdCB0byBtYWludGVuYW5jZSBicmFuY2hlcyBpZiByZXF1aXJlZC4K
K1RoZSBSZWxlYXNlIE1hbmFnZXIgd2lsbCBtZXJnZSB0aGUgY2hhbmdlIGludG8gdGhlIGJyYW5j
aCBmb3IgYSBwZW5kaW5nCityZWxlYXNlLCBpZiBhbnkuIEFzIGEgZ3VpZGVsaW5lLCBjb3JlIGRl
dmVsb3BlcnMgdXN1YWxseSBtZXJnZSB0aGVpciBvd24KK2NoYW5nZXMgYW5kIHZvbHVudGVlciB0
byBtZXJnZSBvdGhlciBjb250cmlidXRpb25zIGlmIHRoZXkgd2VyZSB0aGUgc2Vjb25kCityZXZp
ZXdlciB0byBhZ3JlZSB0byBhIGNoYW5nZS4KKworVG8gdHJhY2sgdGhlIHByb2dyZXNzIG9mIHBy
b3Bvc2VkIGNoYW5nZXMsIHVzZSBCdW5kbGUgQnVnZ3kuIFNlZQoraHR0cDovL2J1bmRsZWJ1Z2d5
LmFhcm9uYmVudGxleS5jb20vaGVscCBmb3IgYSBsaW5rIHRvIGFsbCB0aGUKK291dHN0YW5kaW5n
IG1lcmdlIHJlcXVlc3RzIHRvZ2V0aGVyIHdpdGggYW4gZXhwbGFuYXRpb24gb2YgdGhlIGNvbHVt
bnMuCitCdW5kbGUgQnVnZ3kgd2lsbCBhbHNvIG1haWwgeW91IGEgbGluayB0byB0cmFjayBqdXN0
IHlvdXIgY2hhbmdlLgorCisKK1ByZXBhcmluZyBhIFNhbmRib3ggZm9yIE1ha2luZyBDaGFuZ2Vz
IHRvIEJhemFhcgorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09CisKK0JhemFhciBzdXBwb3J0cyBtYW55IHdheXMgb2Ygb3JnYW5pc2luZyB5b3VyIHdvcmsu
IFNlZQoraHR0cDovL2JhemFhci12Y3Mub3JnL1NoYXJlZFJlcG9zaXRvcnlMYXlvdXRzIGZvciBh
IHN1bW1hcnkgb2YgdGhlCitwb3B1bGFyIGFsdGVybmF0aXZlcy4KKworT2YgY291cnNlLCB0aGUg
YmVzdCBjaG9pY2UgZm9yIHlvdSB3aWxsIGRlcGVuZCBvbiBudW1lcm91cyBmYWN0b3JzOgordGhl
IG51bWJlciBvZiBjaGFuZ2VzIHlvdSBtYXkgYmUgbWFraW5nLCB0aGUgY29tcGxleGl0eSBvZiB0
aGUgY2hhbmdlcywgZXRjLgorQXMgYSBzdGFydGluZyBzdWdnZXN0aW9uIHRob3VnaDoKKworKiBj
cmVhdGUgYSBsb2NhbCBjb3B5IG9mIHRoZSBtYWluIGRldmVsb3BtZW50IGJyYW5jaCAoYnpyLmRl
dikgYnkgdXNpbmcKKyAgdGhpcyBjb21tYW5kOjoKKyAgCisgICAgYnpyIGJyYW5jaCBodHRwOi8v
YmF6YWFyLXZjcy5vcmcvYnpyL2J6ci5kZXYvIGJ6ci5kZXYKKyAgIAorKiBrZWVwIHlvdXIgY29w
eSBvZiBienIuZGV2IHByZXN0aW5lIChieSBub3QgZGV2ZWxvcGluZyBpbiBpdCkgYW5kIGtlZXAK
KyAgaXQgdXAgdG8gZGF0ZSAoYnkgdXNpbmcgYnpyIHB1bGwpCisKKyogY3JlYXRlIGEgbmV3IGJy
YW5jaCBvZmYgeW91ciBsb2NhbCBienIuZGV2IGNvcHkgZm9yIGVhY2ggaXNzdWUKKyAgKGJ1ZyBv
ciBmZWF0dXJlKSB5b3UgYXJlIHdvcmtpbmcgb24uCisKK1RoaXMgYXBwcm9hY2ggbWFrZXMgaXQg
ZWFzeSB0byBnbyBiYWNrIGFuZCBtYWtlIGFueSByZXF1aXJlZCBjaGFuZ2VzCithZnRlciBhIGNv
ZGUgcmV2aWV3LiBSZXN1Ym1pdHRpbmcgdGhlIGNoYW5nZSBpcyB0aGVuIHNpbXBsZSB3aXRoIG5v
CityaXNrIG9mIGFjY2lkZW50aWFsbHkgaW5jbHVkaW5nIGVkaXRzIHJlbGF0ZWQgdG8gb3RoZXIg
aXNzdWVzIHlvdSBtYXkKK2JlIHdvcmtpbmcgb24uIEFmdGVyIHRoZSBjaGFuZ2VzIGZvciBhbiBp
c3N1ZSBhcmUgYWNjZXB0ZWQgYW5kIG1lcmdlZCwKK3RoZSBhc3NvY2lhdGVkIGJyYW5jaCBjYW4g
YmUgZGVsZXRlZCBvciBhcmNoaXZlZCBhcyB5b3Ugd2lzaC4KKworCitOYXZpZ2F0aW5nIHRoZSBD
b2RlIEJhc2UKKz09PT09PT09PT09PT09PT09PT09PT09PQorCitUT0RPOiBMaXN0IGFuZCBkZXNj
cmliZSBpbiBvbmUgbGluZSB0aGUgcHVycG9zZSBvZiBlYWNoIGRpcmVjdG9yeQoraW5zaWRlIGFu
IGluc3RhbGxhdGlvbiBvZiBienIuCisKK1RPRE86IFJlZmVyIHRvIGEgY2VudHJhbCBsb2NhdGlv
biBob2xkaW5nIGFuIHVwIHRvIGRhdGUgY29weSBvZiB0aGUgQVBJCitkb2N1bWVudGF0aW9uIGdl
bmVyYXRlZCBieSBlcHlkb2MsIGUuZy4gc29tZXRoaW5nIGxpa2UKK2h0dHA6Ly9zdGFyc2hpcC5w
eXRob24ubmV0L2NyZXcvbXdoL2J6cmxpYmFwaS9ienJsaWIuaHRtbC4KKworCitUZXN0aW5nIEJh
emFhcgorIyMjIyMjIyMjIyMjIyMKKworVGhlIEltcG9ydGFuY2Ugb2YgVGVzdGluZworPT09PT09
PT09PT09PT09PT09PT09PT09PQorCitSZWxpYWJpbGl0eSBpcyBhIGNyaXRpY2FsIHN1Y2Nlc3Mg
ZmFjdG9yIGZvciBhbnkgVmVyc2lvbiBDb250cm9sIFN5c3RlbS4KK1dlIHdhbnQgQmF6YWFyIHRv
IGJlIGhpZ2hseSByZWxpYWJsZSBhY3Jvc3MgbXVsdGlwbGUgcGxhdGZvcm1zIHdoaWxlCitldm9s
dmluZyBvdmVyIHRpbWUgdG8gbWVldCB0aGUgbmVlZHMgb2YgaXRzIGNvbW11bml0eS4gCisKK0lu
IGEgbnV0c2hlbGwsIHRoaXMgaXMgd2FudCB3ZSBleHBlY3QgYW5kIGVuY291cmFnZToKIAogKiBO
ZXcgZnVuY3Rpb25hbGl0eSBzaG91bGQgaGF2ZSB0ZXN0IGNhc2VzLiAgUHJlZmVyYWJseSB3cml0
ZSB0aGUKICAgdGVzdCBiZWZvcmUgd3JpdGluZyB0aGUgY29kZS4KQEAgLTE2LDM3ICsyMjksMjI0
IEBACiAgIEluIGdlbmVyYWwsIHlvdSBjYW4gdGVzdCBhdCBlaXRoZXIgdGhlIGNvbW1hbmQtbGlu
ZSBsZXZlbCBvciB0aGUKICAgaW50ZXJuYWwgQVBJIGxldmVsLiAgU2VlIFdyaXRpbmcgVGVzdHMg
YmVsb3cgZm9yIG1vcmUgZGV0YWlsLgogCi0qIFRyeSB0byBwcmFjdGljZSBUZXN0LURyaXZlbiBE
ZXZlbG9wbWVudC4gIGJlZm9yZSBmaXhpbmcgYSBidWcsIHdyaXRlIGEKKyogVHJ5IHRvIHByYWN0
aWNlIFRlc3QtRHJpdmVuIERldmVsb3BtZW50OiBiZWZvcmUgZml4aW5nIGEgYnVnLCB3cml0ZSBh
CiAgIHRlc3QgY2FzZSBzbyB0aGF0IGl0IGRvZXMgbm90IHJlZ3Jlc3MuICBTaW1pbGFybHkgZm9y
IGFkZGluZyBhIG5ldwogICBmZWF0dXJlOiB3cml0ZSBhIHRlc3QgY2FzZSBmb3IgYSBzbWFsbCB2
ZXJzaW9uIG9mIHRoZSBuZXcgZmVhdHVyZSBiZWZvcmUKICAgc3RhcnRpbmcgb24gdGhlIGNvZGUg
aXRzZWxmLiAgQ2hlY2sgdGhlIHRlc3QgZmFpbHMgb24gdGhlIG9sZCBjb2RlLCB0aGVuCiAgIGFk
ZCB0aGUgZmVhdHVyZSBvciBmaXggYW5kIGNoZWNrIGl0IHBhc3Nlcy4KIAotKiBFeGNlcHRpb25z
IHNob3VsZCBiZSBkZWZpbmVkIGluc2lkZSBienJsaWIuZXJyb3JzLCBzbyB0aGF0IHdlIGNhbgot
ICBzZWUgdGhlIHdob2xlIHRyZWUgYXQgYSBnbGFuY2UuCi0KLSogSW1wb3J0cyBzaG91bGQgYmUg
ZG9uZSBhdCB0aGUgdG9wLWxldmVsIG9mIHRoZSBmaWxlLCB1bmxlc3MgdGhlcmUgaXMKLSAgYSBz
dHJvbmcgcmVhc29uIHRvIGhhdmUgdGhlbSBsYXppbHkgbG9hZGVkIHdoZW4gYSBwYXJ0aWN1bGFy
Ci0gIGZ1bmN0aW9uIHJ1bnMuICBJbXBvcnQgc3RhdGVtZW50cyBoYXZlIGEgY29zdCwgc28gdHJ5
IHRvIG1ha2Ugc3VyZQotICB0aGV5IGRvbid0IHJ1biBpbnNpZGUgaG90IGZ1bmN0aW9ucy4KLQot
KiBNb2R1bGUgbmFtZXMgc2hvdWxkIGFsd2F5cyBiZSBnaXZlbiBmdWxseS1xdWFsaWZpZWQsCi0g
IGkuZS4gYGBienJsaWIuaGFzaGNhY2hlYGAgbm90IGp1c3QgYGBoYXNoY2FjaGVgYC4KLQotKiBD
b21tYW5kcyBzaG91bGQgcmV0dXJuIG5vbi16ZXJvIHdoZW4gdGhleSBlbmNvdW50ZXIgY2lyY3Vt
c3RhbmNlcyB0aGF0Ci0gIHRoZSB1c2VyIHNob3VsZCByZWFsbHkgcGF5IGF0dGVudGlvbiB0byAt
IHdoaWNoIGluY2x1ZGVzIHRyaXZpYWwgc2hlbGwKLSAgcGlwZWxpbmVzLgotCi0gIFJlY29tbWVu
ZGVkIHZhbHVlcyBhcmUgCi0gICAgMC4gT0ssIAotICAgIDEuIENvbmZsaWN0cyBpbiBtZXJnZS1s
aWtlIG9wZXJhdGlvbnMsIG9yIGNoYW5nZXMgYXJlIHByZXNlbnQgaW4KLSAgICAgICBkaWZmLWxp
a2Ugb3BlcmF0aW9ucy4gCi0gICAgMi4gVW5yZXByZXNlbnRhYmxlIGRpZmYgY2hhbmdlcyAoaS5l
LiBiaW5hcnkgZmlsZXMgdGhhdCB3ZSBjYW5ub3Qgc2hvdyAKLSAgICAgICBhIGRpZmYgb2YpLgot
ICAgIDMuIEFuIGVycm9yIG9yIGV4Y2VwdGlvbiBoYXMgb2NjdXJyZWQuCi0KLUV2b2x2aW5nIGlu
dGVyZmFjZXMKLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0J5IGRvaW5nIHRoZXNlIHRoaW5ncywgdGhl
IEJhemFhciB0ZWFtIGdldHMgaW5jcmVhc2VkIGNvbmZpZGVuY2UgdGhhdAorY2hhbmdlcyBkbyB3
aGF0IHRoZXkgY2xhaW0gdG8gZG8sIHdoZXRoZXIgcHJvdmlkZWQgYnkgdGhlIGNvcmUgdGVhbSBv
cgorYnkgY29tbXVuaXR5IG1lbWJlcnMuIEVxdWFsbHkgaW1wb3J0YW50bHksIHdlIGNhbiBiZSBz
dXJlciB0aGF0IGNoYW5nZXMKK2Rvd24gdGhlIHRyYWNrIGRvIG5vdCBicmVhayBuZXcgZmVhdHVy
ZXMgb3IgYnVnIGZpeGVzIHRoYXQgeW91IGFyZQorY29udHJpYnV0aW5nIHRvZGF5LgorCitBcyBv
ZiBNYXkgMjAwNywgQmF6YWFyIHNoaXBzIHdpdGggYSB0ZXN0IHN1aXRlIGNvbnRhaW5pbmcgb3Zl
ciA2MDAwIHRlc3RzCithbmQgZ3Jvd2luZy4gV2UgYXJlIHByb3VkIG9mIGl0IGFuZCB3YW50IHRv
IHJlbWFpbiBzby4gQXMgY29tbXVuaXR5CittZW1iZXJzLCB3ZSBhbGwgYmVuZWZpdCBmcm9tIGl0
LiBXb3VsZCB5b3UgdHJ1c3QgdmVyc2lvbiBjb250cm9sIG9uCit5b3VyIHByb2plY3QgdG8gYSBw
cm9kdWN0ICp3aXRob3V0KiBhIHRlc3Qgc3VpdGUgbGlrZSBCYXphYXIgaGFzPworCisKK1J1bm5p
bmcgdGhlIFRlc3QgU3VpdGUKKz09PT09PT09PT09PT09PT09PT09PT0KKworQ3VycmVudGx5LCBi
enIgc2VsZnRlc3QgaXMgdXNlZCB0byBpbnZva2UgdGVzdHMuCitZb3UgY2FuIHByb3ZpZGUgYSBw
YXR0ZXJuIGFyZ3VtZW50IHRvIHJ1biBhIHN1YnNldC4gRm9yIGV4YW1wbGUsIAordG8gcnVuIGp1
c3QgdGhlIGJsYWNrYm94IHRlc3RzLCBydW46OgorCisgIC4vYnpyIHNlbGZ0ZXN0IC12IGJsYWNr
Ym94CisKK1RvIHNraXAgYSBwYXJ0aWN1bGFyIHRlc3QgKG9yIHNldCBvZiB0ZXN0cyksIHVzZSB0
aGUgLS1leGNsdWRlIG9wdGlvbgorKHNob3J0aGFuZCAteCkgbGlrZSBzbzo6CisKKyAgLi9ienIg
c2VsZnRlc3QgLXYgLXggYmxhY2tib3ggIAorCitUbyBsaXN0IHRlc3RzIHdpdGhvdXQgcnVubmlu
ZyB0aGVtLCB1c2UgdGhlIC0tbGlzdC1vbmx5IG9wdGlvbiBsaWtlIHNvOjoKKworICAuL2J6ciBz
ZWxmdGVzdCAtLWxpc3Qtb25seQorCitUaGlzIG9wdGlvbiBjYW4gYmUgY29tYmluZWQgd2l0aCBv
dGhlciBzZWxmdGVzdCBvcHRpb25zIChsaWtlIC14KSBhbmQKK2ZpbHRlciBwYXR0ZXJucyB0byB1
bmRlcnN0YW5kIHRoZWlyIGVmZmVjdC4KKworCitXcml0aW5nIFRlc3RzCis9PT09PT09PT09PT09
CisKK0luIGdlbmVyYWwgdGVzdHMgc2hvdWxkIGJlIHBsYWNlZCBpbiBhIGZpbGUgbmFtZWQgdGVz
dF9GT08ucHkgd2hlcmUgCitGT08gaXMgdGhlIGxvZ2ljYWwgdGhpbmcgdW5kZXIgdGVzdC4gVGhh
dCBmaWxlIHNob3VsZCBiZSBwbGFjZWQgaW4gdGhlCit0ZXN0cyBzdWJkaXJlY3RvcnkgdW5kZXIg
dGhlIHBhY2thZ2UgYmVpbmcgdGVzdGVkLgorCitGb3IgZXhhbXBsZSwgdGVzdHMgZm9yIG1lcmdl
MyBpbiBienJsaWIgYmVsb25nIGluIGJ6cmxpYi90ZXN0cy90ZXN0X21lcmdlMy5weS4KK1NlZSBi
enJsaWIvdGVzdHMvdGVzdF9zYW1wbGVyLnB5IGZvciBhIHRlbXBsYXRlIHRlc3Qgc2NyaXB0Lgor
CitUZXN0cyBjYW4gYmUgd3JpdHRlbiBmb3IgdGhlIFVJIG9yIGZvciBpbmRpdmlkdWFsIGFyZWFz
IG9mIHRoZSBsaWJyYXJ5LgorQ2hvb3NlIHdoaWNoZXZlciBpcyBhcHByb3ByaWF0ZTogaWYgYWRk
aW5nIGEgbmV3IGNvbW1hbmQsIG9yIGEgbmV3IGNvbW1hbmQgCitvcHRpb24sIHRoZW4geW91IHNo
b3VsZCBiZSB3cml0aW5nIGEgVUkgdGVzdC4gIElmIHlvdSBhcmUgYm90aCBhZGRpbmcgVUkKK2Z1
bmN0aW9uYWxpdHkgYW5kIGxpYnJhcnkgZnVuY3Rpb25hbGl0eSwgeW91IHdpbGwgd2FudCB0byB3
cml0ZSB0ZXN0cyBmb3IgCitib3RoIHRoZSBVSSBhbmQgdGhlIGNvcmUgYmVoYXZpb3Vycy4gIFdl
IGNhbGwgVUkgdGVzdHMgJ2JsYWNrYm94JyB0ZXN0cworYW5kIHRoZXkgYXJlIGZvdW5kIGluIGBg
YnpybGliL3Rlc3RzL2JsYWNrYm94LyoucHlgYC4gCisKK1doZW4gd3JpdGluZyBibGFja2JveCB0
ZXN0cyBwbGVhc2UgaG9ub3VyIHRoZSBmb2xsb3dpbmcgY29udmVudGlvbnM6CisKKyAxLiBQbGFj
ZSB0aGUgdGVzdHMgZm9yIHRoZSBjb21tYW5kICduYW1lJyBpbgorICAgIGJ6cmxpYi90ZXN0cy9i
bGFja2JveC90ZXN0X25hbWUucHkuIFRoaXMgbWFrZXMgaXQgZWFzeSBmb3IgZGV2ZWxvcGVycwor
ICAgIHRvIGxvY2F0ZSB0aGUgdGVzdCBzY3JpcHQgZm9yIGEgZmF1bHR5IGNvbW1hbmQuCisKKyAy
LiBVc2UgdGhlICdzZWxmLnJ1bl9ienIoIm5hbWUiKScgdXRpbGl0eSBmdW5jdGlvbiB0byBpbnZv
a2UgdGhlIGNvbW1hbmQKKyAgICByYXRoZXIgdGhhbiBydW5uaW5nIGJ6ciBpbiBhIHN1YnByb2Nl
c3Mgb3IgaW52b2tpbmcgdGhlCisgICAgY21kX29iamVjdC5ydW4oKSBtZXRob2QgZGlyZWN0bHku
IFRoaXMgaXMgYSBsb3QgZmFzdGVyIHRoYW4KKyAgICBzdWJwcm9jZXNzZXMgYW5kIGdlbmVyYXRl
cyB0aGUgc2FtZSBsb2dnaW5nIG91dHB1dCBhcyBydW5uaW5nIGl0IGluIGEKKyAgICBzdWJwcm9j
ZXNzICh3aGljaCBpbnZva2luZyB0aGUgbWV0aG9kIGRpcmVjdGx5IGRvZXMgbm90KS4KKyAKKyAz
LiBPbmx5IHRlc3QgdGhlIG9uZSBjb21tYW5kIGluIGEgc2luZ2xlIHRlc3Qgc2NyaXB0LiBVc2Ug
dGhlIGJ6cmxpYiAKKyAgICBsaWJyYXJ5IHdoZW4gc2V0dGluZyB1cCB0ZXN0cyBhbmQgd2hlbiBl
dmFsdWF0aW5nIHRoZSBzaWRlLWVmZmVjdHMgb2YKKyAgICB0aGUgY29tbWFuZC4gV2UgZG8gdGhp
cyBzbyB0aGF0IHRoZSBsaWJyYXJ5IGFwaSBoYXMgY29udGludWFsIHByZXNzdXJlCisgICAgb24g
aXQgdG8gYmUgYXMgZnVuY3Rpb25hbCBhcyB0aGUgY29tbWFuZCBsaW5lIGluIGEgc2ltcGxlIG1h
bm5lciwgYW5kCisgICAgdG8gaXNvbGF0ZSBrbm9jay1vbiBlZmZlY3RzIHRocm91Z2hvdXQgdGhl
IGJsYWNrYm94IHRlc3Qgc3VpdGUgd2hlbiBhCisgICAgY29tbWFuZCBjaGFuZ2VzIGl0cyBuYW1l
IG9yIHNpZ25hdHVyZS4gSWRlYWxseSBvbmx5IHRoZSB0ZXN0cyBmb3IgYQorICAgIGdpdmVuIGNv
bW1hbmQgYXJlIGFmZmVjdGVkIHdoZW4gYSBnaXZlbiBjb21tYW5kIGlzIGNoYW5nZWQuCisKKyA0
LiBJZiB5b3UgaGF2ZSBhIHRlc3Qgd2hpY2ggZG9lcyBhY3R1YWxseSByZXF1aXJlIHJ1bm5pbmcg
YnpyIGluIGEKKyAgICBzdWJwcm9jZXNzIHlvdSBjYW4gdXNlIGBgcnVuX2J6cl9zdWJwcm9jZXNz
YGAuIEJ5IGRlZmF1bHQgdGhlIHNwYXduZWQKKyAgICBwcm9jZXNzIHdpbGwgbm90IGxvYWQgcGx1
Z2lucyB1bmxlc3MgYGAtLWFsbG93LXBsdWdpbnNgYCBpcyBzdXBwbGllZC4KKworCitEb2N0ZXN0
cworLS0tLS0tLS0KKworV2UgbWFrZSBzZWxlY3RpdmUgdXNlIG9mIGRvY3Rlc3RzX18uICBJbiBn
ZW5lcmFsIHRoZXkgc2hvdWxkIHByb3ZpZGUgCisqZXhhbXBsZXMqIHdpdGhpbiB0aGUgQVBJIGRv
Y3VtZW50YXRpb24gd2hpY2ggY2FuIGluY2lkZW50YWxseSBiZSB0ZXN0ZWQuICBXZSAKK2Rvbid0
IHRyeSB0byB0ZXN0IGV2ZXJ5IGltcG9ydGFudCBjYXNlIHVzaW5nIGRvY3Rlc3RzIC0tIHJlZ3Vs
YXIgUHl0aG9uCit0ZXN0cyBhcmUgZ2VuZXJhbGx5IGEgYmV0dGVyIHNvbHV0aW9uLgorCitNb3N0
IG9mIHRoZXNlIGFyZSBpbiBgYGJ6cmxpYi9kb2MvYXBpYGAuICBNb3JlIGFkZGl0aW9ucyBhcmUg
d2VsY29tZS4KKworICBfXyBodHRwOi8vZG9jcy5weXRob24ub3JnL2xpYi9tb2R1bGUtZG9jdGVz
dC5odG1sCisKKworU2tpcHBpbmcgdGVzdHMgYW5kIHRlc3QgcmVxdWlyZW1lbnRzCistLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworSW4gb3VyIGVuaGFuY2VtZW50cyB0byB1
bml0dGVzdCB3ZSBhbGxvdyBmb3Igc29tZSBhZGRpdGlvbiByZXN1bHRzIGJleW9uZAoranVzdCBz
dWNjZXNzIG9yIGZhaWx1cmUuCisKK0lmIGEgdGVzdCBjYW4ndCBiZSBydW4sIGl0IGNhbiBzYXkg
dGhhdCBpdCdzIHNraXBwZWQuICBUaGlzIGlzIHR5cGljYWxseQordXNlZCBpbiBwYXJhbWV0ZXJp
emVkIHRlc3RzIC0gZm9yIGV4YW1wbGUgaWYgYSB0cmFuc3BvcnQgZG9lc24ndCBzdXBwb3J0Citz
ZXR0aW5nIHBlcm1pc3Npb25zLCB3ZSdsbCBza2lwIHRoZSB0ZXN0cyB0aGF0IHJlbGF0aW5nIHRv
IHRoYXQuICA6OgorCisgICAgdHJ5OgorICAgICAgICByZXR1cm4gc2VsZi5icmFuY2hfZm9ybWF0
LmluaXRpYWxpemUocmVwby5ienJkaXIpCisgICAgZXhjZXB0IGVycm9ycy5VbmluaXRpYWxpemFi
bGVGb3JtYXQ6CisgICAgICAgIHJhaXNlIHRlc3RzLlRlc3RTa2lwcGVkKCdVbmluaXRpYWxpemFi
bGUgYnJhbmNoIGZvcm1hdCcpCisKK1JhaXNpbmcgVGVzdFNraXBwZWQgaXMgYSBnb29kIGlkZWEg
d2hlbiB5b3Ugd2FudCB0byBtYWtlIGl0IGNsZWFyIHRoYXQgdGhlCit0ZXN0IHdhcyBub3QgcnVu
LCByYXRoZXIgdGhhbiBqdXN0IHJldHVybmluZyB3aGljaCBtYWtlcyBpdCBsb29rIGFzIGlmIGl0
Cit3YXMgcnVuIGFuZCBwYXNzZWQuCisKK0Egc3VidGx5IGRpZmZlcmVudCBjYXNlIGlzIGEgdGVz
dCB0aGF0IHNob3VsZCBydW4sIGJ1dCBjYW4ndCBydW4gaW4gdGhlCitjdXJyZW50IGVudmlyb25t
ZW50LiAgVGhpcyBjb3ZlcnMgdGVzdHMgdGhhdCBjYW4gb25seSBydW4gaW4gcGFydGljdWxhcgor
b3BlcmF0aW5nIHN5c3RlbXMgb3IgbG9jYWxlcywgb3IgdGhhdCBkZXBlbmQgb24gZXh0ZXJuYWwg
bGlicmFyaWVzLiAgSGVyZQord2Ugd2FudCB0byBpbmZvcm0gdGhlIHVzZXIgdGhhdCB0aGV5IGRp
ZG4ndCBnZXQgZnVsbCB0ZXN0IGNvdmVyYWdlLCBidXQKK3RoZXkgcG9zc2libHkgY291bGQgaWYg
dGhleSBpbnN0YWxsZWQgbW9yZSBsaWJyYXJpZXMuICBUaGVzZSBhcmUgZXhwcmVzc2VkCithcyBh
IGRlcGVuZGVuY3kgb24gYSBmZWF0dXJlIHNvIHdlIGNhbiBzdW1tYXJpc2UgdGhlbSwgYW5kIHNv
IHRoYXQgdGhlCit0ZXN0IGZvciB0aGUgZmVhdHVyZSBpcyBkb25lIG9ubHkgb25jZS4gIChGb3Ig
aGlzdG9yaWNhbCByZWFzb25zLCBhcyBvZgorTWF5IDIwMDcgbWFueSBjYXNlcyB0aGF0IHNob3Vs
ZCBkZXBlbmQgb24gZmVhdHVyZXMgY3VycmVudGx5IHJhaXNlCitUZXN0U2tpcHBlZC4pICBUaGUg
dHlwaWNhbCB1c2UgaXM6OgorCisgICAgY2xhc3MgVGVzdFN0cmFjZShUZXN0Q2FzZVdpdGhUcmFu
c3BvcnQpOgorCisgICAgICAgIF90ZXN0X25lZWRzX2ZlYXR1cmVzID0gW1N0cmFjZUZlYXR1cmVd
CisKK3doaWNoIG1lYW5zIGFsbCB0ZXN0cyBpbiB0aGlzIGNsYXNzIG5lZWQgdGhlIGZlYXR1cmUu
ICBUaGUgZmVhdHVyZSBpdHNlbGYKK3Nob3VsZCBwcm92aWRlIGEgYGBfcHJvYmVgYCBtZXRob2Qg
d2hpY2ggaXMgY2FsbGVkIG9uY2UgdG8gZGV0ZXJtaW5lIGlmCitpdCdzIGF2YWlsYWJsZS4KKwor
CitLbm93biBmYWlsdXJlcworLS0tLS0tLS0tLS0tLS0KKworS25vd24gZmFpbHVyZXMgYXJlIHdo
ZW4gYSB0ZXN0IGV4aXN0cyBidXQgd2Uga25vdyBpdCBjdXJyZW50bHkgZG9lc24ndAord29yaywg
YWxsb3dpbmcgdGhlIHRlc3Qgc3VpdGUgdG8gc3RpbGwgcGFzcy4gIFRoZXNlIHNob3VsZCBiZSB1
c2VkIHdpdGgKK2NhcmUsIHdlIGRvbid0IHdhbnQgYSBwcm9saWZlcmF0aW9uIG9mIHF1aWV0bHkg
YnJva2VuIHRlc3RzLiAgSXQgbWlnaHQgYmUKK2FwcHJvcHJpYXRlIHRvIHVzZSB0aGVtIGlmIHlv
dSd2ZSBjb21taXR0ZWQgYSB0ZXN0IGZvciBhIGJ1ZyBidXQgbm90IHRoZQorZml4IGZvciBpdCwg
b3IgaWYgc29tZXRoaW5nIHdvcmtzIG9uIFVuaXggYnV0IG5vdCBvbiBXaW5kb3dzLgorCisKKwor
RXNzZW50aWFsIERvbWFpbiBDbGFzc2VzCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKworSW50
cm9kdWNpbmcgdGhlIE9iamVjdCBNb2RlbAorPT09PT09PT09PT09PT09PT09PT09PT09PT09PQor
CitUaGUgY29yZSBkb21haW4gb2JqZWN0cyB3aXRoaW4gdGhlIGJhemFhciBtb2RlbCBhcmU6CisK
KyogVHJhbnNwb3J0CisKKyogQnJhbmNoCisKKyogUmVwb3NpdG9yeQorCisqIFdvcmtpbmdUcmVl
CisKK1RyYW5zcG9ydHMgYXJlIGV4cGxhaW5lZCBiZWxvdy4gU2VlIGh0dHA6Ly9iYXphYXItdmNz
Lm9yZy9DbGFzc2VzLworZm9yIGFuIGludHJvZHVjdGlvbiB0byB0aGUgb3RoZXIga2V5IGNsYXNz
ZXMuCisKK1VzaW5nIFRyYW5zcG9ydHMKKz09PT09PT09PT09PT09PT0KKworVGhlIGBgVHJhbnNw
b3J0YGAgbGF5ZXIgaGFuZGxlcyBhY2Nlc3MgdG8gbG9jYWwgb3IgcmVtb3RlIGRpcmVjdG9yaWVz
LgorRWFjaCBUcmFuc3BvcnQgb2JqZWN0IGFjdHMgbGlrZSBhIGxvZ2ljYWwgY29ubmVjdGlvbiB0
byBhIHBhcnRpY3VsYXIKK2RpcmVjdG9yeSwgYW5kIGl0IGFsbG93cyB2YXJpb3VzIG9wZXJhdGlv
bnMgb24gZmlsZXMgd2l0aGluIGl0LiAgWW91IGNhbgorKmNsb25lKiBhIHRyYW5zcG9ydCB0byBn
ZXQgYSBuZXcgVHJhbnNwb3J0IGNvbm5lY3RlZCB0byBhIHN1YmRpcmVjdG9yeSBvcgorcGFyZW50
IGRpcmVjdG9yeS4KKworVHJhbnNwb3J0cyBhcmUgbm90IHVzZWQgZm9yIGFjY2VzcyB0byB0aGUg
d29ya2luZyB0cmVlLiAgQXQgcHJlc2VudAord29ya2luZyB0cmVlcyBhcmUgYWx3YXlzIGxvY2Fs
IGFuZCB0aGV5IGFyZSBhY2Nlc3NlZCB0aHJvdWdoIHRoZSByZWd1bGFyCitQeXRob24gZmlsZSBp
byBtZWNoYW5pc21zLgorCitGaWxlbmFtZXMgdnMgVVJMcworLS0tLS0tLS0tLS0tLS0tLS0KKwor
VHJhbnNwb3J0cyB3b3JrIGluIFVSTHMuICBUYWtlIG5vdGUgdGhhdCBVUkxzIGFyZSBieSBkZWZp
bml0aW9uIG9ubHkKK0FTQ0lJIC0gdGhlIGRlY2lzaW9uIG9mIGhvdyB0byBlbmNvZGUgYSBVbmlj
b2RlIHN0cmluZyBpbnRvIGEgVVJMIG11c3QgYmUKK3Rha2VuIGF0IGEgaGlnaGVyIGxldmVsLCB0
eXBpY2FsbHkgaW4gdGhlIFN0b3JlLiAgKE5vdGUgdGhhdCBTdG9yZXMgYWxzbworZXNjYXBlIGZp
bGVuYW1lcyB3aGljaCBjYW5ub3QgYmUgc2FmZWx5IHN0b3JlZCBvbiBhbGwgZmlsZXN5c3RlbXMs
IGJ1dAordGhpcyBpcyBhIGRpZmZlcmVudCBsZXZlbC4pCisKK1RoZSBtYWluIHJlYXNvbiBmb3Ig
dGhpcyBpcyB0aGF0IGl0J3Mgbm90IHBvc3NpYmxlIHRvIHNhZmVseSByb3VuZHRyaXAgYQorVVJM
IGludG8gVW5pY29kZSBhbmQgdGhlbiBiYWNrIGludG8gdGhlIHNhbWUgVVJMLiAgVGhlIFVSTCBz
dGFuZGFyZAorZ2l2ZXMgYSB3YXkgdG8gcmVwcmVzZW50IG5vbi1BU0NJSSBieXRlcyBpbiBBU0NJ
SSAoYXMgJS1lc2NhcGVzKSwgYnV0Citkb2Vzbid0IHNheSBob3cgdGhvc2UgYnl0ZXMgcmVwcmVz
ZW50IG5vbi1BU0NJSSBjaGFyYWN0ZXJzLiAgKFRoZXkncmUgbm90CitndWFyYW50ZWVkIHRvIGJl
IFVURi04IC0tIHRoYXQgaXMgY29tbW9uIGJ1dCBkb2Vzbid0IGhhcHBlbiBldmVyeXdoZXJlLikK
KworRm9yIGV4YW1wbGUgaWYgdGhlIHVzZXIgZW50ZXJzIHRoZSB1cmwgYGBodHRwOi8vZXhhbXBs
ZS8lZTBgYCB0aGVyZSdzIG5vCit3YXkgdG8gdGVsbCB3aGV0aGVyIHRoYXQgY2hhcmFjdGVyIHJl
cHJlc2VudHMgImxhdGluIHNtYWxsIGxldHRlciBhIHdpdGgKK2dyYXZlIiBpbiBpc28tODg1OS0x
LCBvciAibGF0aW4gc21hbGwgbGV0dGVyIHIgd2l0aCBhY3V0ZSIgaW4gaXNvLTg4NTktMgorb3Ig
bWFsZm9ybWVkIFVURi04LiAgU28gd2UgY2FuJ3QgY29udmVydCB0aGVpciBVUkwgdG8gVW5pY29k
ZSByZWxpYWJseS4KKworRXF1YWxseSBwcm9ibGVtYXRpYyBpZiB3ZSdyZSBnaXZlbiBhIHVybC1s
aWtlIHN0cmluZyBjb250YWluaW5nIG5vbi1hc2NpaQorY2hhcmFjdGVycyAoc3VjaCBhcyB0aGUg
YWNjZW50ZWQgYSkgd2UgY2FuJ3QgYmUgc3VyZSBob3cgdG8gY29udmVydCB0aGF0Cit0byB0aGUg
Y29ycmVjdCBVUkwsIGJlY2F1c2Ugd2UgZG9uJ3Qga25vdyB3aGF0IGVuY29kaW5nIHRoZSBzZXJ2
ZXIgZXhwZWN0cworZm9yIHRob3NlIGNoYXJhY3RlcnMuICAoQWx0aG91Z2ggdGhpcyBpcyBub3Qg
dG90YWxseSByZWxpYWJsZSB3ZSBtaWdodCBzdGlsbAorYWNjZXB0IHRoZXNlIGFuZCBhc3N1bWUg
dGhleSBzaG91bGQgYmUgcHV0IGludG8gVVRGLTguKQorCitBIHNpbWlsYXIgZWRnZSBjYXNlIGlz
IHRoYXQgdGhlIHVybCBgYGh0dHA6Ly9mb28vc3dlZXQlMkZzb3VyYGAgY29udGFpbnMKK29uZSBk
aXJlY3RvcnkgY29tcG9uZW50IHdob3NlIG5hbWUgaXMgInN3ZWV0L3NvdXIiLiAgVGhlIGVzY2Fw
ZWQgc2xhc2ggaXMKK25vdCBhIGRpcmVjdG9yeSBzZXBhcmF0b3IuICBJZiB3ZSB0cnkgdG8gY29u
dmVydCBVUkxzIHRvIHJlZ3VsYXIgVW5pY29kZQorcGF0aHMgdGhpcyBpbmZvcm1hdGlvbiB3aWxs
IGJlIGxvc3QuCisKK1RoaXMgaW1wbGllcyB0aGF0IFRyYW5zcG9ydHMgbXVzdCBuYXRpdmVseSBk
ZWFsIHdpdGggVVJMczsgZm9yIHNpbXBsaWNpdHkKK3RoZXkgKm9ubHkqIGRlYWwgd2l0aCBVUkxz
IGFuZCBjb252ZXJzaW9uIG9mIG90aGVyIHN0cmluZ3MgdG8gVVJMcyBpcyBkb25lCitlbHNld2hl
cmUuICBJbmZvcm1hdGlvbiB0aGV5IHJldHVybiwgc3VjaCBhcyBmcm9tIGBgbGlzdF9kaXJgYCwg
aXMgYWxzbyBpbgordGhlIGZvcm0gb2YgVVJMIGNvbXBvbmVudHMuCisKKworQ29yZSBUb3BpY3MK
KyMjIyMjIyMjIyMjCisKK0V2b2x2aW5nIEludGVyZmFjZXMKKz09PT09PT09PT09PT09PT09PT0K
IAogV2UgaGF2ZSBhIGNvbW1pdG1lbnQgdG8gNiBtb250aHMgQVBJIHN0YWJpbGl0eSAtIGFueSBz
dXBwb3J0ZWQgc3ltYm9sIGluIGEKIHJlbGVhc2Ugb2YgYnpyIE1VU1QgTk9UIGJlIGFsdGVyZWQg
aW4gYW55IHdheSB0aGF0IHdvdWxkIHJlc3VsdCBpbgpAQCAtNzIsMTE3ICs0NzIsOCBAQAogY2Fs
bGVycyB3aWxsIGF0IGxlYXN0IGdldCBhbiBBdHRyaWJ1dGVFcnJvciByYXRoZXIgdGhhbiB3ZWly
ZCByZXN1bHRzLgogCiAKLVN0YW5kYXJkIHBhcmFtZXRlciB0eXBlcwotLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tCi0KLVRoZXJlIGFyZSBzb21lIGNvbW1vbiByZXF1aXJlbWVudHMgaW4gdGhlIGxp
YnJhcnk6IHNvbWUgcGFyYW1ldGVycyBuZWVkIHRvIGJlCi11bmljb2RlIHNhZmUsIHNvbWUgbmVl
ZCBieXRlIHN0cmluZ3MsIGFuZCBzbyBvbi4gQXQgdGhlIG1vbWVudCB3ZSBoYXZlCi1vbmx5IGNv
ZGlmaWVkIG9uZSBzcGVjaWZpYyBwYXR0ZXJuOiBQYXJhbWV0ZXJzIHRoYXQgbmVlZCB0byBiZSB1
bmljb2RlCi1zaG91bGQgYmUgY2hlY2tlZCB2aWEgYGBienJsaWIub3N1dGlscy5zYWZlX3VuaWNv
ZGVgYC4gVGhpcyB3aWxsIGNvZXJjZSB0aGUKLWlucHV0IGludG8gdW5pY29kZSBpbiBhIGNvbnNp
c3RlbnQgZmFzaGlvbiwgYWxsb3dpbmcgdHJpdmlhbCBzdHJpbmdzIHRvIGJlCi11c2VkIGZvciBw
cm9ncmFtbWVyIGNvbnZlbmllbmNlLCBidXQgbm90IHBlcmZvcm1pbmcgdW5wcmVkaWN0YWJseSBp
biB0aGUKLXByZXNlbmNlIG9mIGRpZmZlcmVudCBsb2NhbGVzLgotCi0KLUNvcHlyaWdodAotLS0t
LS0tLS0tCi0KLVRoZSBjb3B5cmlnaHQgcG9saWN5IGZvciBienIgd2FzIHJlY2VudGx5IG1hZGUg
Y2xlYXIgaW4gdGhpcyBlbWFpbCAoZWRpdGVkCi1mb3IgZ3JhbW1hdGljYWwgY29ycmVjdG5lc3Mp
OjoKLQotICAgIFRoZSBhdHRhY2hlZCBwYXRjaCBjbGVhbnMgdXAgdGhlIGNvcHlyaWdodCBhbmQg
bGljZW5zZSBzdGF0ZW1lbnRzIGluCi0gICAgdGhlIGJ6ciBzb3VyY2UuIEl0IGFsc28gYWRkcyB0
ZXN0cyB0byBoZWxwIHVzIHJlbWVtYmVyIHRvIGFkZCB0aGVtCi0gICAgd2l0aCB0aGUgY29ycmVj
dCB0ZXh0LgotCi0gICAgV2UgaGFkIHRoZSBwcm9ibGVtIHRoYXQgbG90cyBvZiBvdXIgZmlsZXMg
d2VyZSAiQ29weXJpZ2h0IENhbm9uaWNhbAotICAgIERldmVsb3BtZW50IEx0ZCIgd2hpY2ggaXMg
bm90IGEgcmVhbCBjb21wYW55LCBhbmQgc29tZSBvdGhlciB2YXJpYXRpb25zCi0gICAgb24gdGhp
cyB0aGVtZS4gQWxzbywgc29tZSBmaWxlcyB3ZXJlIG1pc3NpbmcgdGhlIEdQTCBzdGF0ZW1lbnRz
LgotICAgIAotICAgIEkgd2FudCB0byBiZSBjbGVhciBhYm91dCB0aGUgaW50ZW50IG9mIHRoaXMg
cGF0Y2gsIHNpbmNlIGNvcHlyaWdodCBjYW4KLSAgICBiZSBhIGxpdHRsZSBjb250cm92ZXJzaWFs
LgotICAgIAotICAgIDEpIFRoZSBiaWcgbW90aXZhdGlvbiBmb3IgdGhpcyBpcyBub3QgdG8gc2h1
dCBvdXQgdGhlIGNvbW11bml0eSwgYnV0Ci0gICAganVzdCB0byBjbGVhbiB1cCBhbGwgb2YgdGhl
IGludmFsaWQgY29weXJpZ2h0IHN0YXRlbWVudHMuCi0gICAgCi0gICAgMikgSXQgaGFzIGJlZW4g
dGhlIGdlbmVyYWwgcG9saWN5IGZvciBienIgdGhhdCB3ZSB3YW50IGEgc2luZ2xlCi0gICAgY29w
eXJpZ2h0IGhvbGRlciBmb3IgYWxsIG9mIHRoZSBjb3JlIGNvZGUuIFRoaXMgaXMgZm9sbG93aW5n
IHRoZSBtb2RlbAotICAgIHNldCBieSB0aGUgRlNGLCB3aGljaCBtYWtlcyBpdCBlYXNpZXIgdG8g
dXBkYXRlIHRoZSBjb2RlIHRvIGEgbmV3Ci0gICAgbGljZW5zZSBpbiBjYXNlIHByb2JsZW1zIGFy
ZSBlbmNvdW50ZXJlZC4gKEZvciBleGFtcGxlLCBpZiB3ZSB3YW50IHRvCi0gICAgdXBncmFkZSB0
aGUgcHJvamVjdCB1bml2ZXJzYWxseSB0byBHUEwgdjMgaXQgaXMgbXVjaCBzaW1wbGVyIGlmIHRo
ZXJlIGlzCi0gICAgYSBzaW5nbGUgY29weXJpZ2h0IGhvbGRlcikuIEl0IGFsc28gbWFrZXMgaXQg
Y2xlYXJlciBpZiBjb3B5cmlnaHQgaXMKLSAgICBldmVyIGRlYmF0ZWQsIHRoZXJlIGlzIGEgc2lu
Z2xlIGhvbGRlciwgd2hpY2ggbWFrZXMgaXQgZWFzaWVyIHRvIGRlZmVuZAotICAgIGluIGNvdXJ0
LCBldGMuIChJIHRoaW5rIHRoZSBGU0YgcG9zaXRpb24gaXMgdGhhdCBpZiB5b3UgYXNzaWduIHRo
ZW0KLSAgICBjb3B5cmlnaHQsIHRoZXkgY2FuIGRlZmVuZCBpdCBpbiBjb3VydCByYXRoZXIgdGhh
biB5b3UgbmVlZGluZyB0bywgYW5kCi0gICAgSSdtIHN1cmUgQ2Fub25pY2FsIHdvdWxkIGRvIHRo
ZSBzYW1lKS4KLSAgICBBcyBzdWNoLCBDYW5vbmljYWwgaGFzIHJlcXVlc3RlZCBjb3B5cmlnaHQg
YXNzaWdubWVudHMgZnJvbSBhbGwgb2YgdGhlCi0gICAgbWFqb3IgY29udHJpYnV0ZXJzLgotICAg
IAotICAgIDMpIElmIHNvbWVvbmUgd2FudHMgdG8gYWRkIGNvZGUgYW5kIG5vdCBhdHRyaWJ1dGUg
aXQgdG8gQ2Fub25pY2FsLCB0aGVyZQotICAgIGlzIGEgc3BlY2lmaWMgbGlzdCBvZiBmaWxlcyB0
aGF0IGFyZSBleGNsdWRlZCBmcm9tIHRoaXMgY2hlY2suIEFuZCB0aGUKLSAgICB0ZXN0IGZhaWx1
cmUgaW5kaWNhdGVzIHdoZXJlIHRoYXQgaXMsIGFuZCBob3cgdG8gdXBkYXRlIGl0LgotICAgIAot
ICAgIDQpIElmIGFueW9uZSBmZWVscyB0aGF0IEkgY2hhbmdlZCBhIGNvcHlyaWdodCBzdGF0ZW1l
bnQgaW5jb3JyZWN0bHksIGp1c3QKLSAgICBsZXQgbWUga25vdywgYW5kIEknbGwgYmUgaGFwcHkg
dG8gY29ycmVjdCBpdC4gV2hlbmV2ZXIgeW91IGhhdmUgbGFyZ2UKLSAgICBtZWNoYW5pY2FsIGNo
YW5nZXMgbGlrZSB0aGlzLCBpdCBpcyBwb3NzaWJsZSB0byBtYWtlIHNvbWUgbWlzdGFrZXMuCi0g
ICAgCi0gICAgSnVzdCB0byByZWl0ZXJhdGUsIHRoaXMgaXMgYSBjb21tdW5pdHkgcHJvamVjdCwg
YW5kIGl0IGlzIG1lYW50IHRvIHN0YXkKLSAgICB0aGF0IHdheS4gQ29yZSBienIgY29kZSBpcyBj
b3B5cmlnaHQgQ2Fub25pY2FsIGZvciBsZWdhbCByZWFzb25zLCBhbmQKLSAgICB0aGUgdGVzdHMg
YXJlIGp1c3QgdGhlcmUgdG8gaGVscCB1cyBtYWludGFpbiB0aGF0LgotCi0KLURvY3VtZW50YXRp
b24KLT09PT09PT09PT09PT0KLQotSWYgeW91IGNoYW5nZSB0aGUgYmVoYXZpb3VyIG9mIGEgY29t
bWFuZCwgcGxlYXNlIHVwZGF0ZSBpdHMgZG9jc3RyaW5nCi1pbiBienJsaWIvY29tbWFuZHMucHku
ICBUaGlzIGlzIGRpc3BsYXllZCBieSB0aGUgJ2J6ciBoZWxwJyBjb21tYW5kLgotCi1ORVdTIGZp
bGUKLS0tLS0tLS0tLQotCi1JZiB5b3UgbWFrZSBhIHVzZXItdmlzaWJsZSBjaGFuZ2UsIHBsZWFz
ZSBhZGQgYSBub3RlIHRvIHRoZSBORVdTIGZpbGUuCi1UaGUgZGVzY3JpcHRpb24gc2hvdWxkIGJl
IHdyaXR0ZW4gdG8gbWFrZSBzZW5zZSB0byBzb21lb25lIHdobydzIGp1c3QKLWEgdXNlciBvZiBi
enIsIG5vdCBhIGRldmVsb3BlcjogbmV3IGZ1bmN0aW9ucyBvciBjbGFzc2VzIHNob3VsZG4ndCBi
ZQotbWVudGlvbmVkLCBidXQgbmV3IGNvbW1hbmRzLCBjaGFuZ2VzIGluIGJlaGF2aW91ciBvciBm
aXhlZCBub250cml2aWFsCi1idWdzIHNob3VsZCBiZSBsaXN0ZWQuICBTZWUgdGhlIGV4aXN0aW5n
IGVudHJpZXMgZm9yIGFuIGlkZWEgb2Ygd2hhdAotc2hvdWxkIGJlIGRvbmUuCi0KLVdpdGhpbiBl
YWNoIHJlbGVhc2UsIGVudHJpZXMgaW4gdGhlIG5ld3MgZmlsZSBzaG91bGQgaGF2ZSB0aGUgbW9z
dAotdXNlci12aXNpYmxlIGNoYW5nZXMgZmlyc3QuICBTbyB0aGUgb3JkZXIgc2hvdWxkIGJlIGFw
cHJveGltYXRlbHk6Ci0KLSAqIGNoYW5nZXMgdG8gZXhpc3RpbmcgYmVoYXZpb3VyIC0gdGhlIGhp
Z2hlc3QgcHJpb3JpdHkgYmVjYXVzZSB0aGUgCi0gICB1c2VyJ3MgZXhpc3Rpbmcga25vd2xlZGdl
IGlzIGluY29ycmVjdAotICogbmV3IGZlYXR1cmVzIC0gc2hvdWxkIGJlIGJyb3VnaHQgdG8gdGhl
aXIgYXR0ZW50aW9uCi0gKiBidWcgZml4ZXMgLSBtYXkgYmUgb2YgaW50ZXJlc3QgaWYgdGhlIGJ1
ZyB3YXMgYWZmZWN0aW5nIHRoZW0sIGFuZAotICAgc2hvdWxkIGluY2x1ZGUgdGhlIGJ1ZyBudW1i
ZXIgaWYgYW55Ci0gKiBtYWpvciBkb2N1bWVudGF0aW9uIGNoYW5nZXMKLSAqIGNoYW5nZXMgdG8g
aW50ZXJuYWwgaW50ZXJmYWNlcwotCi1QZW9wbGUgd2hvIG1hZGUgc2lnbmlmaWNhbnQgY29udHJp
YnV0aW9ucyB0byBlYWNoIGNoYW5nZSBhcmUgbGlzdGVkIGluCi1wYXJlbnRoZXNpcy4gIFRoaXMg
Y2FuIGluY2x1ZGUgcmVwb3J0aW5nIGJ1Z3MgKHBhcnRpY3VsYXJseSB3aXRoIGdvb2QKLWRldGFp
bHMgb3IgcmVwcm9kdWN0aW9uIHJlY2lwZXMpLCBzdWJtaXR0aW5nIHBhdGNoZXMsIGV0Yy4KLQot
QVBJIGRvY3VtZW50YXRpb24KLS0tLS0tLS0tLS0tLS0tLS0tCi0KLUZ1bmN0aW9ucywgbWV0aG9k
cywgY2xhc3NlcyBhbmQgbW9kdWxlcyBzaG91bGQgaGF2ZSBkb2NzdHJpbmdzCi1kZXNjcmliaW5n
IGhvdyB0aGV5IGFyZSB1c2VkLiAKLQotVGhlIGZpcnN0IGxpbmUgb2YgdGhlIGRvY3N0cmluZyBz
aG91bGQgYmUgYSBzZWxmLWNvbnRhaW5lZCBzZW50ZW5jZS4KLQotRm9yIHRoZSBzcGVjaWFsIGNh
c2Ugb2YgQ29tbWFuZCBjbGFzc2VzLCB0aGlzIGFjdHMgYXMgdGhlIHVzZXItdmlzaWJsZQotZG9j
dW1lbnRhdGlvbiBzaG93biBieSB0aGUgaGVscCBjb21tYW5kLgotCi1UaGUgZG9jc3RyaW5ncyBz
aG91bGQgYmUgZm9ybWF0dGVkIGFzIHJlU3RydWN0dXJlZFRleHRfIChsaWtlIHRoaXMKLWRvY3Vt
ZW50KSwgc3VpdGFibGUgZm9yIHByb2Nlc3NpbmcgdXNpbmcgdGhlIGVweWRvY18gdG9vbCBpbnRv
IEhUTUwKLWRvY3VtZW50YXRpb24uCi0KLS4uIF9yZVN0cnVjdHVyZWRUZXh0OiBodHRwOi8vZG9j
dXRpbHMuc291cmNlZm9yZ2UubmV0L3JzdC5odG1sCi0uLiBfZXB5ZG9jOiBodHRwOi8vZXB5ZG9j
LnNvdXJjZWZvcmdlLm5ldC8KLQotCi0KLUNvZGluZyBzdHlsZQotPT09PT09PT09PT09CitDb2Rp
bmcgU3R5bGUgR3VpZGVsaW5lcworPT09PT09PT09PT09PT09PT09PT09PT0KIAogUGxlYXNlIHdy
aXRlIFBFUC04X18gY29tcGxpYW50IGNvZGUuICAKIApAQCAtMTkyLDYgKzQ4MywxNyBAQAogX18g
aHR0cDovL3d3dy5weXRob24ub3JnL3BlcHMvcGVwLTAwMDguaHRtbAogCiAKK01vZHVsZSBJbXBv
cnRzCistLS0tLS0tLS0tLS0tLQorCisqIEltcG9ydHMgc2hvdWxkIGJlIGRvbmUgYXQgdGhlIHRv
cC1sZXZlbCBvZiB0aGUgZmlsZSwgdW5sZXNzIHRoZXJlIGlzCisgIGEgc3Ryb25nIHJlYXNvbiB0
byBoYXZlIHRoZW0gbGF6aWx5IGxvYWRlZCB3aGVuIGEgcGFydGljdWxhcgorICBmdW5jdGlvbiBy
dW5zLiAgSW1wb3J0IHN0YXRlbWVudHMgaGF2ZSBhIGNvc3QsIHNvIHRyeSB0byBtYWtlIHN1cmUK
KyAgdGhleSBkb24ndCBydW4gaW5zaWRlIGhvdCBmdW5jdGlvbnMuCisKKyogTW9kdWxlIG5hbWVz
IHNob3VsZCBhbHdheXMgYmUgZ2l2ZW4gZnVsbHktcXVhbGlmaWVkLAorICBpLmUuIGBgYnpybGli
Lmhhc2hjYWNoZWBgIG5vdCBqdXN0IGBgaGFzaGNhY2hlYGAuCisKIAogTmFtaW5nCiAtLS0tLS0K
QEAgLTIxMyw3ICs1MTUsNyBAQAogaW5jb25zaXN0ZW5jeSBpZiBvdGhlciBwZW9wbGUgdXNlIHRo
ZSBmdWxsIG5hbWUuCiAKIAotU3RhbmRhcmQgbmFtZXMKK1N0YW5kYXJkIE5hbWVzCiAtLS0tLS0t
LS0tLS0tLQogCiBgYHJldmlzaW9uX2lkYGAgbm90IGBgcmV2X2lkYGAgb3IgYGByZXZpZGBgCkBA
IC0zMjAsNyArNjIyLDcgQEAKIG9iamVjdCwgcmF0aGVyIHRoYW4gdGhlIHJlYWwgY2xhc3MuCiAK
IAotUGFzc2luZyB0byBvdGhlciB2YXJpYWJsZXMKK1Bhc3NpbmcgdG8gT3RoZXIgVmFyaWFibGVz
CiB+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fgogCiBJdCBhbHNvIGlzIGluY29ycmVjdCB0byBh
c3NpZ24gYGBJbXBvcnRSZXBsYWNlcmBgIG9iamVjdHMgdG8gb3RoZXIgdmFyaWFibGVzLgpAQCAt
MzMxLDcgKzYzMywzMCBAQAogdmFyaWFibGUsIHNvIHNvbWUgYnVncyBhcmUgbm90IGRldGVjdGVk
IHJpZ2h0IGF3YXkuCiAKIAotV3JpdGluZyBvdXRwdXQKK0dldHRpbmcgSW5wdXQKKz09PT09PT09
PT09PT0KKworUHJvY2Vzc2luZyBDb21tYW5kIExpbmVzCistLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0KKworYnpybGliIGhhcyBhIHN0YW5kYXJkIGZyYW1ld29yayBmb3IgcGFyc2luZyBjb21tYW5k
IGxpbmVzIGFuZCBjYWxsaW5nCitwcm9jZXNzaW5nIHJvdXRpbmVzIGFzc29jaWF0ZWQgd2l0aCB2
YXJpb3VzIGNvbW1hbmRzLiBTZWUgYnVpbHRpbnMucHkKK2ZvciBudW1lcm91cyBleGFtcGxlcy4K
KworCitTdGFuZGFyZCBQYXJhbWV0ZXIgVHlwZXMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQor
CitUaGVyZSBhcmUgc29tZSBjb21tb24gcmVxdWlyZW1lbnRzIGluIHRoZSBsaWJyYXJ5OiBzb21l
IHBhcmFtZXRlcnMgbmVlZCB0byBiZQordW5pY29kZSBzYWZlLCBzb21lIG5lZWQgYnl0ZSBzdHJp
bmdzLCBhbmQgc28gb24uIEF0IHRoZSBtb21lbnQgd2UgaGF2ZQorb25seSBjb2RpZmllZCBvbmUg
c3BlY2lmaWMgcGF0dGVybjogUGFyYW1ldGVycyB0aGF0IG5lZWQgdG8gYmUgdW5pY29kZQorc2hv
dWxkIGJlIGNoZWNrZWQgdmlhIGBgYnpybGliLm9zdXRpbHMuc2FmZV91bmljb2RlYGAuIFRoaXMg
d2lsbCBjb2VyY2UgdGhlCitpbnB1dCBpbnRvIHVuaWNvZGUgaW4gYSBjb25zaXN0ZW50IGZhc2hp
b24sIGFsbG93aW5nIHRyaXZpYWwgc3RyaW5ncyB0byBiZQordXNlZCBmb3IgcHJvZ3JhbW1lciBj
b252ZW5pZW5jZSwgYnV0IG5vdCBwZXJmb3JtaW5nIHVucHJlZGljdGFibHkgaW4gdGhlCitwcmVz
ZW5jZSBvZiBkaWZmZXJlbnQgbG9jYWxlcy4KKworCitXcml0aW5nIE91dHB1dAogPT09PT09PT09
PT09PT0KIAogKFRoZSBzdHJhdGVneSBkZXNjcmliZWQgaGVyZSBpcyB3aGF0IHdlIHdhbnQgdG8g
Z2V0IHRvLCBidXQgaXQncyBub3QKQEAgLTM2OCw4MiArNjkzLDI3IEBACiBzaG91bGQgYmUgb25s
eSBpbiB0aGUgY29tbWFuZC1saW5lIHRvb2wuCiAKIAotV3JpdGluZyB0ZXN0cwotPT09PT09PT09
PT09PQotCi1JbiBnZW5lcmFsIHRlc3RzIHNob3VsZCBiZSBwbGFjZWQgaW4gYSBmaWxlIG5hbWVk
IHRlc3RfRk9PLnB5IHdoZXJlIAotRk9PIGlzIHRoZSBsb2dpY2FsIHRoaW5nIHVuZGVyIHRlc3Qu
IFRoYXQgZmlsZSBzaG91bGQgYmUgcGxhY2VkIGluIHRoZQotdGVzdHMgc3ViZGlyZWN0b3J5IHVu
ZGVyIHRoZSBwYWNrYWdlIGJlaW5nIHRlc3RlZC4KLQotRm9yIGV4YW1wbGUsIHRlc3RzIGZvciBt
ZXJnZTMgaW4gYnpybGliIGJlbG9uZyBpbiBienJsaWIvdGVzdHMvdGVzdF9tZXJnZTMucHkuCi1T
ZWUgYnpybGliL3Rlc3RzL3Rlc3Rfc2FtcGxlci5weSBmb3IgYSB0ZW1wbGF0ZSB0ZXN0IHNjcmlw
dC4KLQotVGVzdHMgY2FuIGJlIHdyaXR0ZW4gZm9yIHRoZSBVSSBvciBmb3IgaW5kaXZpZHVhbCBh
cmVhcyBvZiB0aGUgbGlicmFyeS4KLUNob29zZSB3aGljaGV2ZXIgaXMgYXBwcm9wcmlhdGU6IGlm
IGFkZGluZyBhIG5ldyBjb21tYW5kLCBvciBhIG5ldyBjb21tYW5kIAotb3B0aW9uLCB0aGVuIHlv
dSBzaG91bGQgYmUgd3JpdGluZyBhIFVJIHRlc3QuICBJZiB5b3UgYXJlIGJvdGggYWRkaW5nIFVJ
Ci1mdW5jdGlvbmFsaXR5IGFuZCBsaWJyYXJ5IGZ1bmN0aW9uYWxpdHksIHlvdSB3aWxsIHdhbnQg
dG8gd3JpdGUgdGVzdHMgZm9yIAotYm90aCB0aGUgVUkgYW5kIHRoZSBjb3JlIGJlaGF2aW91cnMu
ICBXZSBjYWxsIFVJIHRlc3RzICdibGFja2JveCcgdGVzdHMKLWFuZCB0aGV5IGFyZSBmb3VuZCBp
biBgYGJ6cmxpYi90ZXN0cy9ibGFja2JveC8qLnB5YGAuIAotCi1XaGVuIHdyaXRpbmcgYmxhY2ti
b3ggdGVzdHMgcGxlYXNlIGhvbm91ciB0aGUgZm9sbG93aW5nIGNvbnZlbnRpb25zOgotCi0gMS4g
UGxhY2UgdGhlIHRlc3RzIGZvciB0aGUgY29tbWFuZCAnbmFtZScgaW4KLSAgICBienJsaWIvdGVz
dHMvYmxhY2tib3gvdGVzdF9uYW1lLnB5LiBUaGlzIG1ha2VzIGl0IGVhc3kgZm9yIGRldmVsb3Bl
cnMKLSAgICB0byBsb2NhdGUgdGhlIHRlc3Qgc2NyaXB0IGZvciBhIGZhdWx0eSBjb21tYW5kLgot
Ci0gMi4gVXNlIHRoZSAnc2VsZi5ydW5fYnpyKCJuYW1lIiknIHV0aWxpdHkgZnVuY3Rpb24gdG8g
aW52b2tlIHRoZSBjb21tYW5kCi0gICAgcmF0aGVyIHRoYW4gcnVubmluZyBienIgaW4gYSBzdWJw
cm9jZXNzIG9yIGludm9raW5nIHRoZQotICAgIGNtZF9vYmplY3QucnVuKCkgbWV0aG9kIGRpcmVj
dGx5LiBUaGlzIGlzIGEgbG90IGZhc3RlciB0aGFuCi0gICAgc3VicHJvY2Vzc2VzIGFuZCBnZW5l
cmF0ZXMgdGhlIHNhbWUgbG9nZ2luZyBvdXRwdXQgYXMgcnVubmluZyBpdCBpbiBhCi0gICAgc3Vi
cHJvY2VzcyAod2hpY2ggaW52b2tpbmcgdGhlIG1ldGhvZCBkaXJlY3RseSBkb2VzIG5vdCkuCi0g
Ci0gMy4gT25seSB0ZXN0IHRoZSBvbmUgY29tbWFuZCBpbiBhIHNpbmdsZSB0ZXN0IHNjcmlwdC4g
VXNlIHRoZSBienJsaWIgCi0gICAgbGlicmFyeSB3aGVuIHNldHRpbmcgdXAgdGVzdHMgYW5kIHdo
ZW4gZXZhbHVhdGluZyB0aGUgc2lkZS1lZmZlY3RzIG9mCi0gICAgdGhlIGNvbW1hbmQuIFdlIGRv
IHRoaXMgc28gdGhhdCB0aGUgbGlicmFyeSBhcGkgaGFzIGNvbnRpbnVhbCBwcmVzc3VyZQotICAg
IG9uIGl0IHRvIGJlIGFzIGZ1bmN0aW9uYWwgYXMgdGhlIGNvbW1hbmQgbGluZSBpbiBhIHNpbXBs
ZSBtYW5uZXIsIGFuZAotICAgIHRvIGlzb2xhdGUga25vY2stb24gZWZmZWN0cyB0aHJvdWdob3V0
IHRoZSBibGFja2JveCB0ZXN0IHN1aXRlIHdoZW4gYQotICAgIGNvbW1hbmQgY2hhbmdlcyBpdHMg
bmFtZSBvciBzaWduYXR1cmUuIElkZWFsbHkgb25seSB0aGUgdGVzdHMgZm9yIGEKLSAgICBnaXZl
biBjb21tYW5kIGFyZSBhZmZlY3RlZCB3aGVuIGEgZ2l2ZW4gY29tbWFuZCBpcyBjaGFuZ2VkLgot
Ci0gNC4gSWYgeW91IGhhdmUgYSB0ZXN0IHdoaWNoIGRvZXMgYWN0dWFsbHkgcmVxdWlyZSBydW5u
aW5nIGJ6ciBpbiBhCi0gICAgc3VicHJvY2VzcyB5b3UgY2FuIHVzZSBgYHJ1bl9ienJfc3VicHJv
Y2Vzc2BgLiBCeSBkZWZhdWx0IHRoZSBzcGF3bmVkCi0gICAgcHJvY2VzcyB3aWxsIG5vdCBsb2Fk
IHBsdWdpbnMgdW5sZXNzIGBgLS1hbGxvdy1wbHVnaW5zYGAgaXMgc3VwcGxpZWQuCi0KLQotRG9j
dGVzdHMKLS0tLS0tLS0tCi0KLVdlIG1ha2Ugc2VsZWN0aXZlIHVzZSBvZiBkb2N0ZXN0c19fLiAg
SW4gZ2VuZXJhbCB0aGV5IHNob3VsZCBwcm92aWRlIAotKmV4YW1wbGVzKiB3aXRoaW4gdGhlIEFQ
SSBkb2N1bWVudGF0aW9uIHdoaWNoIGNhbiBpbmNpZGVudGFsbHkgYmUgdGVzdGVkLiAgV2UgCi1k
b24ndCB0cnkgdG8gdGVzdCBldmVyeSBpbXBvcnRhbnQgY2FzZSB1c2luZyBkb2N0ZXN0cyAtLSBy
ZWd1bGFyIFB5dGhvbgotdGVzdHMgYXJlIGdlbmVyYWxseSBhIGJldHRlciBzb2x1dGlvbi4KLQot
TW9zdCBvZiB0aGVzZSBhcmUgaW4gYGBienJsaWIvZG9jL2FwaWBgLiAgTW9yZSBhZGRpdGlvbnMg
YXJlIHdlbGNvbWUuCi0KLSAgX18gaHR0cDovL2RvY3MucHl0aG9uLm9yZy9saWIvbW9kdWxlLWRv
Y3Rlc3QuaHRtbAotCi0KLVJ1bm5pbmcgdGVzdHMKLT09PT09PT09PT09PT0KLUN1cnJlbnRseSwg
YnpyIHNlbGZ0ZXN0IGlzIHVzZWQgdG8gaW52b2tlIHRlc3RzLgotWW91IGNhbiBwcm92aWRlIGEg
cGF0dGVybiBhcmd1bWVudCB0byBydW4gYSBzdWJzZXQuIEZvciBleGFtcGxlLCAKLXRvIHJ1biBq
dXN0IHRoZSBibGFja2JveCB0ZXN0cywgcnVuOjoKLQotICAuL2J6ciBzZWxmdGVzdCAtdiBibGFj
a2JveAotCi1UbyBza2lwIGEgcGFydGljdWxhciB0ZXN0IChvciBzZXQgb2YgdGVzdHMpLCB5b3Ug
bmVlZCB0byB1c2UgYSBuZWdhdGl2ZQotbWF0Y2gsIGxpa2Ugc286OgotCi0gIC4vYnpyIHNlbGZ0
ZXN0ICdeKD8hLipibGFja2JveCknICAKLQotCi1FcnJvcnMgYW5kIGV4Y2VwdGlvbnMKLT09PT09
PT09PT09PT09PT09PT09PQotCi1FcnJvcnMgYXJlIGhhbmRsZWQgdGhyb3VnaCBQeXRob24gZXhj
ZXB0aW9ucy4KK0hhbmRsaW5nIEVycm9ycyBhbmQgRXhjZXB0aW9ucworPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09CisKK0NvbW1hbmRzIHNob3VsZCByZXR1cm4gbm9uLXplcm8gd2hlbiB0
aGV5IGVuY291bnRlciBjaXJjdW1zdGFuY2VzIHRoYXQKK3RoZSB1c2VyIHNob3VsZCByZWFsbHkg
cGF5IGF0dGVudGlvbiB0byAtIHdoaWNoIGluY2x1ZGVzIHRyaXZpYWwgc2hlbGwKK3BpcGVsaW5l
cy4KKworUmVjb21tZW5kZWQgdmFsdWVzIGFyZToKKworICAgIDAuIE9LLgorICAgIDEuIENvbmZs
aWN0cyBpbiBtZXJnZS1saWtlIG9wZXJhdGlvbnMsIG9yIGNoYW5nZXMgYXJlIHByZXNlbnQgaW4K
KyAgICAgICBkaWZmLWxpa2Ugb3BlcmF0aW9ucy4gCisgICAgMi4gVW5yZXByZXNlbnRhYmxlIGRp
ZmYgY2hhbmdlcyAoaS5lLiBiaW5hcnkgZmlsZXMgdGhhdCB3ZSBjYW5ub3Qgc2hvdyAKKyAgICAg
ICBhIGRpZmYgb2YpLgorICAgIDMuIEFuIGVycm9yIG9yIGV4Y2VwdGlvbiBoYXMgb2NjdXJyZWQu
CisKK0Vycm9ycyBhcmUgaGFuZGxlZCB0aHJvdWdoIFB5dGhvbiBleGNlcHRpb25zLiBFeGNlcHRp
b25zIHNob3VsZCBiZSBkZWZpbmVkCitpbnNpZGUgYnpybGliLmVycm9ycywgc28gdGhhdCB3ZSBj
YW4gc2VlIHRoZSB3aG9sZSB0cmVlIGF0IGEgZ2xhbmNlLgogCiBXZSBicm9hZGx5IGNsYXNzaWZ5
IGVycm9ycyBhcyBlaXRoZXIgYmVpbmcgZWl0aGVyIGludGVybmFsIG9yIG5vdCwKLWRlcGVuZGlu
ZyBvbiB3aGV0aGVyIGBgdXNlcl9lcnJvcmBgIGlzIHNldCBvciBub3QuICBJZiB3ZSB0aGluayBp
dCdzIG91cgorZGVwZW5kaW5nIG9uIHdoZXRoZXIgYGBpbnRlcm5hbF9lcnJvcmBgIGlzIHNldCBv
ciBub3QuICBJZiB3ZSB0aGluayBpdCdzIG91cgogZmF1bHQsIHdlIHNob3cgYSBiYWNrdHJhY2Us
IGFuIGludml0YXRpb24gdG8gcmVwb3J0IHRoZSBidWcsIGFuZCBwb3NzaWJseQogb3RoZXIgZGV0
YWlscy4gIFRoaXMgaXMgdGhlIGRlZmF1bHQgZm9yIGVycm9ycyB0aGF0IGFyZW4ndCBzcGVjaWZp
Y2FsbHkKIHJlY29nbml6ZWQgYXMgYmVpbmcgY2F1c2VkIGJ5IGEgdXNlciBlcnJvci4gIE90aGVy
d2lzZSB3ZSBzaG93IGEgYnJpZWZlcgpAQCAtNDc0LDYgKzc0NCwxMzYgQEAKIGZpbmFsIGZ1bGxz
dG9wLiAgSWYgbG9uZywgdGhleSBtYXkgY29udGFpbiBuZXdsaW5lcyB0byBicmVhayB0aGUgdGV4
dC4KIAogCitEb2N1bWVudGluZyBDaGFuZ2VzCis9PT09PT09PT09PT09PT09PT09CisKK1doZW4g
eW91IGNoYW5nZSBienJsaWIsIHBsZWFzZSB1cGRhdGUgdGhlIHJlbGV2YW50IGRvY3VtZW50YXRp
b24gZm9yIHRoZQorY2hhbmdlIHlvdSBtYWRlOiBDaGFuZ2VzIHRvIGNvbW1hbmRzIHNob3VsZCB1
cGRhdGUgdGhlaXIgaGVscCwgYW5kCitwb3NzaWJseSBlbmQgdXNlciB0dXRvcmlhbHM7IGNoYW5n
ZXMgdG8gdGhlIGNvcmUgbGlicmFyeSBzaG91bGQgYmUKK3JlZmxlY3RlZCBpbiBBUEkgZG9jdW1l
bnRhdGlvbi4KKworTkVXUyBGaWxlCistLS0tLS0tLS0KKworSWYgeW91IG1ha2UgYSB1c2VyLXZp
c2libGUgY2hhbmdlLCBwbGVhc2UgYWRkIGEgbm90ZSB0byB0aGUgTkVXUyBmaWxlLgorVGhlIGRl
c2NyaXB0aW9uIHNob3VsZCBiZSB3cml0dGVuIHRvIG1ha2Ugc2Vuc2UgdG8gc29tZW9uZSB3aG8n
cyBqdXN0CithIHVzZXIgb2YgYnpyLCBub3QgYSBkZXZlbG9wZXI6IG5ldyBmdW5jdGlvbnMgb3Ig
Y2xhc3NlcyBzaG91bGRuJ3QgYmUKK21lbnRpb25lZCwgYnV0IG5ldyBjb21tYW5kcywgY2hhbmdl
cyBpbiBiZWhhdmlvdXIgb3IgZml4ZWQgbm9udHJpdmlhbAorYnVncyBzaG91bGQgYmUgbGlzdGVk
LiAgU2VlIHRoZSBleGlzdGluZyBlbnRyaWVzIGZvciBhbiBpZGVhIG9mIHdoYXQKK3Nob3VsZCBi
ZSBkb25lLgorCitXaXRoaW4gZWFjaCByZWxlYXNlLCBlbnRyaWVzIGluIHRoZSBuZXdzIGZpbGUg
c2hvdWxkIGhhdmUgdGhlIG1vc3QKK3VzZXItdmlzaWJsZSBjaGFuZ2VzIGZpcnN0LiAgU28gdGhl
IG9yZGVyIHNob3VsZCBiZSBhcHByb3hpbWF0ZWx5OgorCisgKiBjaGFuZ2VzIHRvIGV4aXN0aW5n
IGJlaGF2aW91ciAtIHRoZSBoaWdoZXN0IHByaW9yaXR5IGJlY2F1c2UgdGhlIAorICAgdXNlcidz
IGV4aXN0aW5nIGtub3dsZWRnZSBpcyBpbmNvcnJlY3QKKyAqIG5ldyBmZWF0dXJlcyAtIHNob3Vs
ZCBiZSBicm91Z2h0IHRvIHRoZWlyIGF0dGVudGlvbgorICogYnVnIGZpeGVzIC0gbWF5IGJlIG9m
IGludGVyZXN0IGlmIHRoZSBidWcgd2FzIGFmZmVjdGluZyB0aGVtLCBhbmQKKyAgIHNob3VsZCBp
bmNsdWRlIHRoZSBidWcgbnVtYmVyIGlmIGFueQorICogbWFqb3IgZG9jdW1lbnRhdGlvbiBjaGFu
Z2VzCisgKiBjaGFuZ2VzIHRvIGludGVybmFsIGludGVyZmFjZXMKKworUGVvcGxlIHdobyBtYWRl
IHNpZ25pZmljYW50IGNvbnRyaWJ1dGlvbnMgdG8gZWFjaCBjaGFuZ2UgYXJlIGxpc3RlZCBpbgor
cGFyZW50aGVzaXMuICBUaGlzIGNhbiBpbmNsdWRlIHJlcG9ydGluZyBidWdzIChwYXJ0aWN1bGFy
bHkgd2l0aCBnb29kCitkZXRhaWxzIG9yIHJlcHJvZHVjdGlvbiByZWNpcGVzKSwgc3VibWl0dGlu
ZyBwYXRjaGVzLCBldGMuCisKK0NvbW1hbmRzCistLS0tLS0tLQorCitUaGUgZG9jc3RyaW5nIG9m
IGEgY29tbWFuZCBpcyB1c2VkIGJ5IGBgYnpyIGhlbHBgYCB0byBnZW5lcmF0ZSBoZWxwIG91dHB1
dAorZm9yIHRoZSBjb21tYW5kLiBUaGUgbGlzdCAndGFrZXNfb3B0aW9ucycgYXR0cmlidXRlIG9u
IGEgY29tbWFuZCBpcyB1c2VkIGJ5CitgYGJ6ciBoZWxwYGAgdG8gZG9jdW1lbnQgdGhlIG9wdGlv
bnMgZm9yIHRoZSBjb21tYW5kIC0gdGhlIGNvbW1hbmQKK2RvY3N0cmluZyBkb2VzIG5vdCBuZWVk
IHRvIGRvY3VtZW50IHRoZW0uIEZpbmFsbHksIHRoZSAnX3NlZV9hbHNvJworYXR0cmlidXRlIG9u
IGEgY29tbWFuZCBjYW4gYmUgdXNlZCB0byByZWZlcmVuY2Ugb3RoZXIgcmVsYXRlZCBoZWxwIHRv
cGljcy4KKworQVBJIERvY3VtZW50YXRpb24KKy0tLS0tLS0tLS0tLS0tLS0tCisKK0Z1bmN0aW9u
cywgbWV0aG9kcywgY2xhc3NlcyBhbmQgbW9kdWxlcyBzaG91bGQgaGF2ZSBkb2NzdHJpbmdzCitk
ZXNjcmliaW5nIGhvdyB0aGV5IGFyZSB1c2VkLiAKKworVGhlIGZpcnN0IGxpbmUgb2YgdGhlIGRv
Y3N0cmluZyBzaG91bGQgYmUgYSBzZWxmLWNvbnRhaW5lZCBzZW50ZW5jZS4KKworRm9yIHRoZSBz
cGVjaWFsIGNhc2Ugb2YgQ29tbWFuZCBjbGFzc2VzLCB0aGlzIGFjdHMgYXMgdGhlIHVzZXItdmlz
aWJsZQorZG9jdW1lbnRhdGlvbiBzaG93biBieSB0aGUgaGVscCBjb21tYW5kLgorCitUaGUgZG9j
c3RyaW5ncyBzaG91bGQgYmUgZm9ybWF0dGVkIGFzIHJlU3RydWN0dXJlZFRleHRfIChsaWtlIHRo
aXMKK2RvY3VtZW50KSwgc3VpdGFibGUgZm9yIHByb2Nlc3NpbmcgdXNpbmcgdGhlIGVweWRvY18g
dG9vbCBpbnRvIEhUTUwKK2RvY3VtZW50YXRpb24uCisKKy4uIF9yZVN0cnVjdHVyZWRUZXh0OiBo
dHRwOi8vZG9jdXRpbHMuc291cmNlZm9yZ2UubmV0L3JzdC5odG1sCisuLiBfZXB5ZG9jOiBodHRw
Oi8vZXB5ZG9jLnNvdXJjZWZvcmdlLm5ldC8KKworCitHZW5lcmFsIEd1aWRlbGluZXMKKz09PT09
PT09PT09PT09PT09PQorCitDb3B5cmlnaHQKKy0tLS0tLS0tLQorCitUaGUgY29weXJpZ2h0IHBv
bGljeSBmb3IgYnpyIHdhcyByZWNlbnRseSBtYWRlIGNsZWFyIGluIHRoaXMgZW1haWwgKGVkaXRl
ZAorZm9yIGdyYW1tYXRpY2FsIGNvcnJlY3RuZXNzKTo6CisKKyAgICBUaGUgYXR0YWNoZWQgcGF0
Y2ggY2xlYW5zIHVwIHRoZSBjb3B5cmlnaHQgYW5kIGxpY2Vuc2Ugc3RhdGVtZW50cyBpbgorICAg
IHRoZSBienIgc291cmNlLiBJdCBhbHNvIGFkZHMgdGVzdHMgdG8gaGVscCB1cyByZW1lbWJlciB0
byBhZGQgdGhlbQorICAgIHdpdGggdGhlIGNvcnJlY3QgdGV4dC4KKworICAgIFdlIGhhZCB0aGUg
cHJvYmxlbSB0aGF0IGxvdHMgb2Ygb3VyIGZpbGVzIHdlcmUgIkNvcHlyaWdodCBDYW5vbmljYWwK
KyAgICBEZXZlbG9wbWVudCBMdGQiIHdoaWNoIGlzIG5vdCBhIHJlYWwgY29tcGFueSwgYW5kIHNv
bWUgb3RoZXIgdmFyaWF0aW9ucworICAgIG9uIHRoaXMgdGhlbWUuIEFsc28sIHNvbWUgZmlsZXMg
d2VyZSBtaXNzaW5nIHRoZSBHUEwgc3RhdGVtZW50cy4KKyAgICAKKyAgICBJIHdhbnQgdG8gYmUg
Y2xlYXIgYWJvdXQgdGhlIGludGVudCBvZiB0aGlzIHBhdGNoLCBzaW5jZSBjb3B5cmlnaHQgY2Fu
CisgICAgYmUgYSBsaXR0bGUgY29udHJvdmVyc2lhbC4KKyAgICAKKyAgICAxKSBUaGUgYmlnIG1v
dGl2YXRpb24gZm9yIHRoaXMgaXMgbm90IHRvIHNodXQgb3V0IHRoZSBjb21tdW5pdHksIGJ1dAor
ICAgIGp1c3QgdG8gY2xlYW4gdXAgYWxsIG9mIHRoZSBpbnZhbGlkIGNvcHlyaWdodCBzdGF0ZW1l
bnRzLgorICAgIAorICAgIDIpIEl0IGhhcyBiZWVuIHRoZSBnZW5lcmFsIHBvbGljeSBmb3IgYnpy
IHRoYXQgd2Ugd2FudCBhIHNpbmdsZQorICAgIGNvcHlyaWdodCBob2xkZXIgZm9yIGFsbCBvZiB0
aGUgY29yZSBjb2RlLiBUaGlzIGlzIGZvbGxvd2luZyB0aGUgbW9kZWwKKyAgICBzZXQgYnkgdGhl
IEZTRiwgd2hpY2ggbWFrZXMgaXQgZWFzaWVyIHRvIHVwZGF0ZSB0aGUgY29kZSB0byBhIG5ldwor
ICAgIGxpY2Vuc2UgaW4gY2FzZSBwcm9ibGVtcyBhcmUgZW5jb3VudGVyZWQuIChGb3IgZXhhbXBs
ZSwgaWYgd2Ugd2FudCB0bworICAgIHVwZ3JhZGUgdGhlIHByb2plY3QgdW5pdmVyc2FsbHkgdG8g
R1BMIHYzIGl0IGlzIG11Y2ggc2ltcGxlciBpZiB0aGVyZSBpcworICAgIGEgc2luZ2xlIGNvcHly
aWdodCBob2xkZXIpLiBJdCBhbHNvIG1ha2VzIGl0IGNsZWFyZXIgaWYgY29weXJpZ2h0IGlzCisg
ICAgZXZlciBkZWJhdGVkLCB0aGVyZSBpcyBhIHNpbmdsZSBob2xkZXIsIHdoaWNoIG1ha2VzIGl0
IGVhc2llciB0byBkZWZlbmQKKyAgICBpbiBjb3VydCwgZXRjLiAoSSB0aGluayB0aGUgRlNGIHBv
c2l0aW9uIGlzIHRoYXQgaWYgeW91IGFzc2lnbiB0aGVtCisgICAgY29weXJpZ2h0LCB0aGV5IGNh
biBkZWZlbmQgaXQgaW4gY291cnQgcmF0aGVyIHRoYW4geW91IG5lZWRpbmcgdG8sIGFuZAorICAg
IEknbSBzdXJlIENhbm9uaWNhbCB3b3VsZCBkbyB0aGUgc2FtZSkuCisgICAgQXMgc3VjaCwgQ2Fu
b25pY2FsIGhhcyByZXF1ZXN0ZWQgY29weXJpZ2h0IGFzc2lnbm1lbnRzIGZyb20gYWxsIG9mIHRo
ZQorICAgIG1ham9yIGNvbnRyaWJ1dGVycy4KKyAgICAKKyAgICAzKSBJZiBzb21lb25lIHdhbnRz
IHRvIGFkZCBjb2RlIGFuZCBub3QgYXR0cmlidXRlIGl0IHRvIENhbm9uaWNhbCwgdGhlcmUKKyAg
ICBpcyBhIHNwZWNpZmljIGxpc3Qgb2YgZmlsZXMgdGhhdCBhcmUgZXhjbHVkZWQgZnJvbSB0aGlz
IGNoZWNrLiBBbmQgdGhlCisgICAgdGVzdCBmYWlsdXJlIGluZGljYXRlcyB3aGVyZSB0aGF0IGlz
LCBhbmQgaG93IHRvIHVwZGF0ZSBpdC4KKyAgICAKKyAgICA0KSBJZiBhbnlvbmUgZmVlbHMgdGhh
dCBJIGNoYW5nZWQgYSBjb3B5cmlnaHQgc3RhdGVtZW50IGluY29ycmVjdGx5LCBqdXN0CisgICAg
bGV0IG1lIGtub3csIGFuZCBJJ2xsIGJlIGhhcHB5IHRvIGNvcnJlY3QgaXQuIFdoZW5ldmVyIHlv
dSBoYXZlIGxhcmdlCisgICAgbWVjaGFuaWNhbCBjaGFuZ2VzIGxpa2UgdGhpcywgaXQgaXMgcG9z
c2libGUgdG8gbWFrZSBzb21lIG1pc3Rha2VzLgorICAgIAorICAgIEp1c3QgdG8gcmVpdGVyYXRl
LCB0aGlzIGlzIGEgY29tbXVuaXR5IHByb2plY3QsIGFuZCBpdCBpcyBtZWFudCB0byBzdGF5Cisg
ICAgdGhhdCB3YXkuIENvcmUgYnpyIGNvZGUgaXMgY29weXJpZ2h0IENhbm9uaWNhbCBmb3IgbGVn
YWwgcmVhc29ucywgYW5kCisgICAgdGhlIHRlc3RzIGFyZSBqdXN0IHRoZXJlIHRvIGhlbHAgdXMg
bWFpbnRhaW4gdGhhdC4KKworCitNaXNjZWxsYW5lb3VzIFRvcGljcworIyMjIyMjIyMjIyMjIyMj
IyMjIyMKKworRGVidWdnaW5nCis9PT09PT09PT0KKworQmF6YWFyIGhhcyBhIGZldyBmYWNpbGl0
aWVzIHRvIGhlbHAgZGVidWcgcHJvYmxlbXMgYnkgZ29pbmcgaW50byBwZGJfLCB0aGUKK1B5dGhv
biBkZWJ1Z2dlci4KKworLi4gX3BkYjogaHR0cDovL2RvY3MucHl0aG9uLm9yZy9saWIvZGVidWdn
ZXItY29tbWFuZHMuaHRtbAorCitJZiB0aGUgYGBCWlJfUERCYGAgZW52aXJvbm1lbnQgdmFyaWFi
bGUgaXMgc2V0IAordGhlbiBienIgd2lsbCBnbyBpbnRvIHBkYiBwb3N0LW1vcnRlbSBtb2RlIHdo
ZW4gYW4gdW5oYW5kbGVkIGV4Y2VwdGlvbgorb2NjdXJzLgorCitJZiB5b3Ugc2VuZCBhIFNJR1FV
SVQgc2lnbmFsIHRvIGJ6ciwgd2hpY2ggY2FuIGJlIGRvbmUgYnkgcHJlc3NpbmcKK0N0cmwtXFwg
b24gVW5peCwgYnpyIHdpbGwgZ28gaW50byB0aGUgZGVidWdnZXIgaW1tZWRpYXRlbHkuICBZb3Ug
Y2FuCitjb250aW51ZSBleGVjdXRpb24gYnkgdHlwaW5nIGBgY2BgLiAgVGhpcyBjYW4gYmUgZGlz
YWJsZWQgaWYgbmVjZXNzYXJ5CitieSBzZXR0aW5nIHRoZSBlbnZpcm9ubWVudCB2YXJpYWJsZSBg
YEJaUl9TSUdRVUlUX1BEQj0wYGAuCisKIAogSmFyZ29uCiA9PT09PT0KQEAgLTQ4NCw1NiArODg0
LDYgQEAKICAgICBpbmRleGVzIGludG8gdGhlIGJyYW5jaCdzIHJldmlzaW9uIGhpc3RvcnkuCiAK
IAotVHJhbnNwb3J0Ci09PT09PT09PT0KLQotVGhlIGBgVHJhbnNwb3J0YGAgbGF5ZXIgaGFuZGxl
cyBhY2Nlc3MgdG8gbG9jYWwgb3IgcmVtb3RlIGRpcmVjdG9yaWVzLgotRWFjaCBUcmFuc3BvcnQg
b2JqZWN0IGFjdHMgbGlrZSBhIGxvZ2ljYWwgY29ubmVjdGlvbiB0byBhIHBhcnRpY3VsYXIKLWRp
cmVjdG9yeSwgYW5kIGl0IGFsbG93cyB2YXJpb3VzIG9wZXJhdGlvbnMgb24gZmlsZXMgd2l0aGlu
IGl0LiAgWW91IGNhbgotKmNsb25lKiBhIHRyYW5zcG9ydCB0byBnZXQgYSBuZXcgVHJhbnNwb3J0
IGNvbm5lY3RlZCB0byBhIHN1YmRpcmVjdG9yeSBvcgotcGFyZW50IGRpcmVjdG9yeS4KLQotVHJh
bnNwb3J0cyBhcmUgbm90IHVzZWQgZm9yIGFjY2VzcyB0byB0aGUgd29ya2luZyB0cmVlLiAgQXQg
cHJlc2VudAotd29ya2luZyB0cmVlcyBhcmUgYWx3YXlzIGxvY2FsIGFuZCB0aGV5IGFyZSBhY2Nl
c3NlZCB0aHJvdWdoIHRoZSByZWd1bGFyCi1QeXRob24gZmlsZSBpbyBtZWNoYW5pc21zLgotCi1m
aWxlbmFtZXMgdnMgVVJMcwotLS0tLS0tLS0tLS0tLS0tLS0KLQotVHJhbnNwb3J0cyB3b3JrIGlu
IFVSTHMuICBUYWtlIG5vdGUgdGhhdCBVUkxzIGFyZSBieSBkZWZpbml0aW9uIG9ubHkKLUFTQ0lJ
IC0gdGhlIGRlY2lzaW9uIG9mIGhvdyB0byBlbmNvZGUgYSBVbmljb2RlIHN0cmluZyBpbnRvIGEg
VVJMIG11c3QgYmUKLXRha2VuIGF0IGEgaGlnaGVyIGxldmVsLCB0eXBpY2FsbHkgaW4gdGhlIFN0
b3JlLiAgKE5vdGUgdGhhdCBTdG9yZXMgYWxzbwotZXNjYXBlIGZpbGVuYW1lcyB3aGljaCBjYW5u
b3QgYmUgc2FmZWx5IHN0b3JlZCBvbiBhbGwgZmlsZXN5c3RlbXMsIGJ1dAotdGhpcyBpcyBhIGRp
ZmZlcmVudCBsZXZlbC4pCi0KLVRoZSBtYWluIHJlYXNvbiBmb3IgdGhpcyBpcyB0aGF0IGl0J3Mg
bm90IHBvc3NpYmxlIHRvIHNhZmVseSByb3VuZHRyaXAgYQotVVJMIGludG8gVW5pY29kZSBhbmQg
dGhlbiBiYWNrIGludG8gdGhlIHNhbWUgVVJMLiAgVGhlIFVSTCBzdGFuZGFyZAotZ2l2ZXMgYSB3
YXkgdG8gcmVwcmVzZW50IG5vbi1BU0NJSSBieXRlcyBpbiBBU0NJSSAoYXMgJS1lc2NhcGVzKSwg
YnV0Ci1kb2Vzbid0IHNheSBob3cgdGhvc2UgYnl0ZXMgcmVwcmVzZW50IG5vbi1BU0NJSSBjaGFy
YWN0ZXJzLiAgKFRoZXkncmUgbm90Ci1ndWFyYW50ZWVkIHRvIGJlIFVURi04IC0tIHRoYXQgaXMg
Y29tbW9uIGJ1dCBkb2Vzbid0IGhhcHBlbiBldmVyeXdoZXJlLikKLQotRm9yIGV4YW1wbGUgaWYg
dGhlIHVzZXIgZW50ZXJzIHRoZSB1cmwgYGBodHRwOi8vZXhhbXBsZS8lZTBgYCB0aGVyZSdzIG5v
Ci13YXkgdG8gdGVsbCB3aGV0aGVyIHRoYXQgY2hhcmFjdGVyIHJlcHJlc2VudHMgImxhdGluIHNt
YWxsIGxldHRlciBhIHdpdGgKLWdyYXZlIiBpbiBpc28tODg1OS0xLCBvciAibGF0aW4gc21hbGwg
bGV0dGVyIHIgd2l0aCBhY3V0ZSIgaW4gaXNvLTg4NTktMgotb3IgbWFsZm9ybWVkIFVURi04LiAg
U28gd2UgY2FuJ3QgY29udmVydCB0aGVpciBVUkwgdG8gVW5pY29kZSByZWxpYWJseS4KLQotRXF1
YWxseSBwcm9ibGVtYXRpYyBpZiB3ZSdyZSBnaXZlbiBhIHVybC1saWtlIHN0cmluZyBjb250YWlu
aW5nIG5vbi1hc2NpaQotY2hhcmFjdGVycyAoc3VjaCBhcyB0aGUgYWNjZW50ZWQgYSkgd2UgY2Fu
J3QgYmUgc3VyZSBob3cgdG8gY29udmVydCB0aGF0Ci10byB0aGUgY29ycmVjdCBVUkwsIGJlY2F1
c2Ugd2UgZG9uJ3Qga25vdyB3aGF0IGVuY29kaW5nIHRoZSBzZXJ2ZXIgZXhwZWN0cwotZm9yIHRo
b3NlIGNoYXJhY3RlcnMuICAoQWx0aG91Z2ggdGhpcyBpcyBub3QgdG90YWxseSByZWxpYWJsZSB3
ZSBtaWdodCBzdGlsbAotYWNjZXB0IHRoZXNlIGFuZCBhc3N1bWUgdGhleSBzaG91bGQgYmUgcHV0
IGludG8gVVRGLTguKQotCi1BIHNpbWlsYXIgZWRnZSBjYXNlIGlzIHRoYXQgdGhlIHVybCBgYGh0
dHA6Ly9mb28vc3dlZXQlMkZzb3VyYGAgY29udGFpbnMKLW9uZSBkaXJlY3RvcnkgY29tcG9uZW50
IHdob3NlIG5hbWUgaXMgInN3ZWV0L3NvdXIiLiAgVGhlIGVzY2FwZWQgc2xhc2ggaXMKLW5vdCBh
IGRpcmVjdG9yeSBzZXBhcmF0b3IuICBJZiB3ZSB0cnkgdG8gY29udmVydCBVUkxzIHRvIHJlZ3Vs
YXIgVW5pY29kZQotcGF0aHMgdGhpcyBpbmZvcm1hdGlvbiB3aWxsIGJlIGxvc3QuCi0KLVRoaXMg
aW1wbGllcyB0aGF0IFRyYW5zcG9ydHMgbXVzdCBuYXRpdmVseSBkZWFsIHdpdGggVVJMczsgZm9y
IHNpbXBsaWNpdHkKLXRoZXkgKm9ubHkqIGRlYWwgd2l0aCBVUkxzIGFuZCBjb252ZXJzaW9uIG9m
IG90aGVyIHN0cmluZ3MgdG8gVVJMcyBpcyBkb25lCi1lbHNld2hlcmUuICBJbmZvcm1hdGlvbiB0
aGV5IHJldHVybiwgc3VjaCBhcyBmcm9tIGBgbGlzdF9kaXJgYCwgaXMgYWxzbyBpbgotdGhlIGZv
cm0gb2YgVVJMIGNvbXBvbmVudHMuCi0KLQogVW5pY29kZSBhbmQgRW5jb2RpbmcgU3VwcG9ydAog
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogCkBAIC01ODksNTMgKzkzOSw2MSBAQAogdmFs
aWQgY2hhcmFjdGVycyBhcmUgZ2VuZXJhdGVkIHdoZXJlIHBvc3NpYmxlLgogCiAKLU1lcmdlL3Jl
dmlldyBwcm9jZXNzCi09PT09PT09PT09PT09PT09PT09PQotCi1JZiB5b3UnZCBsaWtlIHRvIHBy
b3Bvc2UgYSBjaGFuZ2UsIHBsZWFzZSBwb3N0IHRvIHRoZQotYmF6YWFyQGxpc3RzLmNhbm9uaWNh
bC5jb20gbGlzdCB3aXRoIGEgcGF0Y2gsIGJ6ciBjaGFuZ2VzZXQsIG9yIGxpbmsgdG8gYQotYnJh
bmNoLiAgUGxlYXNlIHB1dCAnW3BhdGNoXScgaW4gdGhlIHN1YmplY3Qgc28gd2UgY2FuIHBpY2sg
dGhlbSBvdXQsIGFuZAotaW5jbHVkZSBzb21lIHRleHQgZXhwbGFpbmluZyB0aGUgY2hhbmdlLiAg
UmVtZW1iZXIgdG8gcHV0IGFuIHVwZGF0ZSB0byB0aGUgTkVXUwotZmlsZSBpbiB5b3VyIGRpZmYs
IGlmIGl0IG1ha2VzIGFueSBjaGFuZ2VzIHZpc2libGUgdG8gdXNlcnMgb3IgcGx1Z2luCi1kZXZl
bG9wZXJzLiAgUGxlYXNlIGluY2x1ZGUgYSBkaWZmIGFnYWluc3QgbWFpbmxpbmUgaWYgeW91J3Jl
IGdpdmluZyBhIGxpbmsgdG8KLWEgYnJhbmNoLgotCi1QbGVhc2UgaW5kaWNhdGUgaWYgeW91IHRo
aW5rIHRoZSBjb2RlIGlzIHJlYWR5IHRvIG1lcmdlLCBvciBpZiBpdCdzIGp1c3QgYQotZHJhZnQg
b3IgZm9yIGRpc2N1c3Npb24uICBJZiB5b3Ugd2FudCBjb21tZW50cyBmcm9tIG1hbnkgZGV2ZWxv
cGVycyByYXRoZXIgdGhhbgotdG8gYmUgbWVyZ2VkLCB5b3UgY2FuIHB1dCAnW3JmY10nIGluIHRo
ZSBzdWJqZWN0IGxpbmVzLgotCi1BbnlvbmUgaXMgd2VsY29tZSB0byByZXZpZXcgY29kZS4gIFRo
ZXJlIGFyZSBicm9hZGx5IHRocmVlIGdhdGVzIGZvcgotY29kZSB0byBnZXQgaW46Ci0KLSAqIERv
ZXNuJ3QgcmVkdWNlIHRlc3QgY292ZXJhZ2U6IGlmIGl0IGFkZHMgbmV3IG1ldGhvZHMgb3IgY29t
bWFuZHMsCi0gICB0aGVyZSBzaG91bGQgYmUgdGVzdHMgZm9yIHRoZW0uICBUaGVyZSBpcyBhIGdv
b2QgdGVzdCBmcmFtZXdvcmsKLSAgIGFuZCBwbGVudHkgb2YgZXhhbXBsZXMgdG8gY3JpYiBmcm9t
LCBidXQgaWYgeW91IGFyZSBoYXZpbmcgdHJvdWJsZQotICAgd29ya2luZyBvdXQgaG93IHRvIHRl
c3Qgc29tZXRoaW5nIGZlZWwgZnJlZSB0byBwb3N0IGEgZHJhZnQgcGF0Y2gKLSAgIGFuZCBhc2sg
Zm9yIGhlbHAuCi0KLSAqIERvZXNuJ3QgcmVkdWNlIGRlc2lnbiBjbGFyaXR5LCBzdWNoIGFzIGJ5
IGVudGFuZ2xpbmcgb2JqZWN0cwotICAgd2UncmUgdHJ5aW5nIHRvIHNlcGFyYXRlLiAgVGhpcyBp
cyBtb3N0bHkgc29tZXRoaW5nIHRoZSBtb3JlCi0gICBleHBlcmllbmNlZCByZXZpZXdlcnMgbmVl
ZCB0byBoZWxwIGNoZWNrLgotCi0gKiBJbXByb3ZlcyBidWdzLCBmZWF0dXJlcywgc3BlZWQsIG9y
IGNvZGUgc2ltcGxpY2l0eS4KLQotQ29kZSB0aGF0IGdvZXMgaW4gc2hvdWxkIHBhc3MgYWxsIHRo
cmVlLgotCi1JZiB5b3UgcmVhZCBhIHBhdGNoIHBsZWFzZSByZXBseSBhbmQgc2F5IHNvLiAgV2Ug
Y2FuIHVzZSBhIG51bWVyaWMgc2NhbGUKLW9mIC0xLCAtMCwgKzAsICsxLCBtZWFuaW5nIHJlc3Bl
Y3RpdmVseSAicmVhbGx5IGRvbid0IHdhbnQgaXQgaW4gY3VycmVudAotZm9ybSIsICJzb21ld2hh
dCB1bmNvbWZvcnRhYmxlIiwgIm9rIHdpdGggbWUiLCBhbmQgInBsZWFzZSBwdXQgaXQgaW4iLgot
QW55b25lIGNhbiAidm90ZSIuICAgKEl0J3Mgbm90IHJlYWxseSB2b3RpbmcsIGp1c3QgYSB0ZXJz
ZSBleHByZXNzaW9uLikKLQotSWYgc29tZXRoaW5nIGdldHMgc2F5IHR3byArMSB2b3RlcyBmcm9t
IGNvcmUgcmV2aWV3ZXJzLCBhbmQgbm8KLXZldG9zLCB0aGVuIGl0J3MgT0sgdG8gY29tZSBpbi4g
IEFueSBvZiB0aGUgY29yZSBkZXZlbG9wZXJzIGNhbiBicmluZyBpdAotaW50byB0aGVpciBpbnRl
Z3JhdGlvbiBicmFuY2gsIHdoaWNoIEknbGwgbWVyZ2UgcmVndWxhcmx5LiAgKElmIHlvdSBkbwot
c28sIHBsZWFzZSByZXBseSBhbmQgc2F5IHNvLikKLQotCi1NYWtpbmcgaW5zdGFsbGVycyBmb3Ig
T1MgV2luZG93cworUG9ydGFiaWxpdHkgVGlwcworPT09PT09PT09PT09PT09PQorCitUaGUgYGBi
enJsaWIub3N1dGlsc2BgIG1vZHVsZSBoYXMgbWFueSB1c2VmdWwgaGVscGVyIGZ1bmN0aW9ucywg
aW5jbHVkaW5nCitzb21lIG1vcmUgcG9ydGFibGUgdmFyaWFudHMgb2YgZnVuY3Rpb25zIGluIHRo
ZSBzdGFuZGFyZCBsaWJyYXJ5LgorCitJbiBwYXJ0aWN1bGFyLCBkb24ndCB1c2UgYGBzaHV0aWwu
cm10cmVlYGAgdW5sZXNzIGl0J3MgYWNjZXB0YWJsZSBmb3IgaXQKK3RvIGZhaWwgb24gV2luZG93
cyBpZiBzb21lIGZpbGVzIGFyZSByZWFkb25seSBvciBzdGlsbCBvcGVuIGVsc2V3aGVyZS4KK1Vz
ZSBgYGJ6cmxpYi5vc3V0aWxzLnJtdHJlZWBgIGluc3RlYWQuCisKKworQyBFeHRlbnNpb24gTW9k
dWxlcworPT09PT09PT09PT09PT09PT09PQorCitXZSB3cml0ZSBzb21lIGV4dGVuc2lvbnMgaW4g
QyB1c2luZyBweXJleC4gV2UgZGVzaWduIHRoZXNlIHRvIHdvcmsgaW4KK3RocmVlIHNjZW5hcmlv
czoKKworICogVXNlciB3aXRoIG5vIEMgY29tcGlsZXIKKyAqIFVzZXIgd2l0aCBDIGNvbXBpbGVy
CisgKiBEZXZlbG9wZXJzCisKK1RoZSByZWNvbW1lbmRlZCB3YXkgdG8gaW5zdGFsbCBienIgaXMg
dG8gaGF2ZSBhIEMgY29tcGlsZXIgc28gdGhhdCB0aGUKK2V4dGVuc2lvbnMgY2FuIGJlIGJ1aWx0
LCBidXQgaWYgbm8gQyBjb21waWxlciBpcyBwcmVzZW50LCB0aGUgcHVyZSBweXRob24KK3ZlcnNp
b25zIHdlIHN1cHBseSB3aWxsIHdvcmssIHRob3VnaCBtb3JlIHNsb3dseS4KKworRm9yIGRldmVs
b3BlcnMgd2UgcmVjb21tZW5kIHRoYXQgcHlyZXggYmUgaW5zdGFsbGVkLCBzbyB0aGF0IHRoZSBD
CitleHRlbnNpb25zIGNhbiBiZSBjaGFuZ2VkIGlmIG5lZWRlZC4KKworRm9yIHRoZSBDIGV4dGVu
c2lvbnMsIHRoZSBleHRlbnNpb24gbW9kdWxlIHNob3VsZCBhbHdheXMgbWF0Y2ggdGhlCitvcmln
aW5hbCBweXRob24gb25lIGluIGFsbCByZXNwZWN0cyAobW9kdWxvIHNwZWVkKS4gVGhpcyBzaG91
bGQgYmUKK21haW50YWluZWQgb3ZlciB0aW1lLgorCitUbyBjcmVhdGUgYW4gZXh0ZW5zaW9uLCBh
ZGQgcnVsZXMgdG8gc2V0dXAucHkgZm9yIGJ1aWxkaW5nIGl0IHdpdGggcHlyZXgsCithbmQgd2l0
aCBkaXN0dXRpbHMuIE5vdyBzdGFydCB3aXRoIGFuIGVtcHR5IC5weXggZmlsZS4gQXQgdGhlIHRv
cCBhZGQKKyJpbmNsdWRlICd5b3VybW9kdWxlLnB5JyIuIFRoaXMgd2lsbCBpbXBvcnQgdGhlIGNv
bnRlbnRzIG9mIGZvby5weSBpbnRvIHRoaXMgCitmaWxlIGF0IGJ1aWxkIHRpbWUgLSByZW1lbWJl
ciB0aGF0IG9ubHkgb25lIG1vZHVsZSB3aWxsIGJlIGxvYWRlZCBhdAorcnVudGltZS4gTm93IHlv
dSBjYW4gc3ViY2xhc3MgY2xhc3Nlcywgb3IgcmVwbGFjZSBmdW5jdGlvbnMsIGFuZCBvbmx5IHlv
dXIKK2NoYW5nZXMgbmVlZCB0byBiZSBwcmVzZW50IGluIHRoZSAucHl4IGZpbGUuCisKK05vdGUg
dGhhdCBweXJleCBkb2VzIG5vdCBzdXBwb3J0IGFsbCAyLjQgcHJvZ3JhbW1pbmcgaWRpb21zLCBz
byBzb21lCitzeW50YXggY2hhbmdlcyBtYXkgYmUgcmVxdWlyZWQuIEkuZS4gCisKKyAtICdmcm9t
IGZvbyBpbXBvcnQgKGJhciwgZ2FtKScgbmVlZHMgdG8gY2hhbmdlIHRvIG5vdCB1c2UgdGhlIGJy
YWNrZXRzLiAKKyAtICdpbXBvcnQgZm9vLmJhciBhcyBiYXInIG5lZWRzIHRvIGJlICdpbXBvcnQg
Zm9vLmJhcjsgYmFyID0gZm9vLmJhcicgCisKK0lmIHRoZSBjaGFuZ2VzIGFyZSB0b28gZHJhbWF0
aWMsIGNvbnNpZGVyCittYWludGFpbmluZyB0aGUgcHl0aG9uIGNvZGUgdHdpY2UgLSBvbmNlIGlu
IHRoZSAucHl4LCBhbmQgb25jZSBpbiB0aGUgLnB5LAorYW5kIG5vIGxvbmdlciBpbmNsdWRpbmcg
dGhlIC5weSBmaWxlLgorCisKK01ha2luZyBJbnN0YWxsZXJzIGZvciBPUyBXaW5kb3dzCiA9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogVG8gYnVpbGQgYSB3aW4zMiBpbnN0YWxsZXIs
IHNlZSB0aGUgaW5zdHJ1Y3Rpb25zIG9uIHRoZSB3aWtpIHBhZ2U6CiBodHRwOi8vYmF6YWFyLXZj
cy5vcmcvQnpyV2luMzJJbnN0YWxsZXIKIAogCi06OiB2aW06IGZ0PXJzdCB0dz03NCBhaQorLi4K
KyAgIHZpbTogZnQ9cnN0IHR3PTc0IGFpCgo=

=== renamed file bzrlib/transport/smart.py // bzrlib/transport/remote.py // las
... t-changed:andrew.bennetts@canonical.com-20070430064224-hagj8m0855p1sxn7 // 
... encoding:base64
LS0tIGJ6cmxpYi90cmFuc3BvcnQvc21hcnQucHkKKysrIGJ6cmxpYi90cmFuc3BvcnQvcmVtb3Rl
LnB5CkBAIC0xNCwyMTEgKzE0LDI0IEBACiAjIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBu
b3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCiAjIEZvdW5kYXRpb24sIEluYy4sIDU5IFRl
bXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BICAwMjExMS0xMzA3ICBVU0EKIAotIiIi
U21hcnQtc2VydmVyIHByb3RvY29sLCBjbGllbnQgYW5kIHNlcnZlci4KLQotUmVxdWVzdHMgYXJl
IHNlbnQgYXMgYSBjb21tYW5kIGFuZCBsaXN0IG9mIGFyZ3VtZW50cywgZm9sbG93ZWQgYnkgb3B0
aW9uYWwKLWJ1bGsgYm9keSBkYXRhLiAgUmVzcG9uc2VzIGFyZSBzaW1pbGFybHkgYSByZXNwb25z
ZSBhbmQgbGlzdCBvZiBhcmd1bWVudHMsCi1mb2xsb3dlZCBieSBidWxrIGJvZHkgZGF0YS4gOjoK
LQotICBTRVAgOj0gJ1wwMDEnCi0gICAgRmllbGRzIGFyZSBzZXBhcmF0ZWQgYnkgQ3RybC1BLgot
ICBCVUxLX0RBVEEgOj0gQ0hVTksgVFJBSUxFUgotICAgIENodW5rcyBjYW4gYmUgcmVwZWF0ZWQg
YXMgbWFueSB0aW1lcyBhcyBuZWNlc3NhcnkuCi0gIENIVU5LIDo9IENIVU5LX0xFTiBDSFVOS19C
T0RZCi0gIENIVU5LX0xFTiA6PSBESUdJVCsgTkVXTElORQotICAgIEdpdmVzIHRoZSBudW1iZXIg
b2YgYnl0ZXMgaW4gdGhlIGZvbGxvd2luZyBjaHVuay4KLSAgQ0hVTktfQk9EWSA6PSBCWVRFW2No
dW5rX2xlbl0KLSAgVFJBSUxFUiA6PSBTVUNDRVNTX1RSQUlMRVIgfCBFUlJPUl9UUkFJTEVSCi0g
IFNVQ0NFU1NfVFJBSUxFUiA6PSAnZG9uZScgTkVXTElORQotICBFUlJPUl9UUkFJTEVSIDo9IAot
Ci1QYXRocyBhcmUgcGFzc2VkIGFjcm9zcyB0aGUgbmV0d29yay4gIFRoZSBjbGllbnQgbmVlZHMg
dG8gc2VlIGEgbmFtZXNwYWNlIHRoYXQKLWluY2x1ZGVzIGFueSByZXBvc2l0b3J5IHRoYXQgbWln
aHQgbmVlZCB0byBiZSByZWZlcmVuY2VkLCBhbmQgdGhlIGNsaWVudCBuZWVkcwotdG8ga25vdyBh
Ym91dCBhIHJvb3QgZGlyZWN0b3J5IGJleW9uZCB3aGljaCBpdCBjYW5ub3QgYXNjZW5kLgotCi1T
ZXJ2ZXJzIHJ1biBvdmVyIHNzaCB3aWxsIHR5cGljYWxseSB3YW50IHRvIGJlIGFibGUgdG8gYWNj
ZXNzIGFueSBwYXRoIHRoZSB1c2VyIAotY2FuIGFjY2Vzcy4gIFB1YmxpYyBzZXJ2ZXJzIG9uIHRo
ZSBvdGhlciBoYW5kICh3aGljaCBtaWdodCBiZSBvdmVyIGh0dHAsIHNzaAotb3IgdGNwKSB3aWxs
IHR5cGljYWxseSB3YW50IHRvIHJlc3RyaWN0IGFjY2VzcyB0byBvbmx5IGEgcGFydGljdWxhciBk
aXJlY3RvcnkgCi1hbmQgaXRzIGNoaWxkcmVuLCBzbyB3aWxsIHdhbnQgdG8gZG8gYSBzb2Z0d2Fy
ZSB2aXJ0dWFsIHJvb3QgYXQgdGhhdCBsZXZlbC4KLUluIG90aGVyIHdvcmRzIHRoZXknbGwgd2Fu
dCB0byByZXdyaXRlIGluY29taW5nIHBhdGhzIHRvIGJlIHVuZGVyIHRoYXQgbGV2ZWwKLShhbmQg
cHJldmVudCBlc2NhcGluZyB1c2luZyAuLi8gdHJpY2tzLikKLQotVVJMcyB0aGF0IGluY2x1ZGUg
fiBzaG91bGQgcHJvYmFibHkgYmUgcGFzc2VkIGFjcm9zcyB0byB0aGUgc2VydmVyIHZlcmJhdGlt
Ci1hbmQgdGhlIHNlcnZlciBjYW4gZXhwYW5kIHRoZW0uICBUaGlzIHdpbGwgcHJvYWJseSBub3Qg
YmUgbWVhbmluZ2Z1bCB3aGVuIAotbGltaXRlZCB0byBhIGRpcmVjdG9yeT8KLQotQXQgdGhlIGJv
dHRvbSBsZXZlbCBzb2NrZXQsIHBpcGVzLCBIVFRQIHNlcnZlci4gIEZvciBzb2NrZXRzLCB3ZSBo
YXZlIHRoZSBpZGVhCi10aGF0IHlvdSBoYXZlIG11bHRpcGxlIHJlcXVlc3RzIGFuZCBnZXQgYSBy
ZWFkIGVycm9yIGJlY2F1c2UgdGhlIG90aGVyIHNpZGUgZGlkCi1zaHV0ZG93bi4gIEZvciBwaXBl
cyB3ZSBoYXZlIHJlYWQgcGlwZSB3aGljaCB3aWxsIGhhdmUgYSB6ZXJvIHJlYWQgd2hpY2ggbWFy
a3MKLWVuZC1vZi1maWxlLiAgRm9yIEhUVFAgc2VydmVyIGVudmlyb25tZW50IHRoZXJlIGlzIG5v
dCBlbmQtb2Ytc3RyZWFtIGJlY2F1c2UKLWVhY2ggcmVxdWVzdCBjb21pbmcgaW50byB0aGUgc2Vy
dmVyIGlzIGluZGVwZW5kZW50LgotCi1TbyB3ZSBuZWVkIGEgd3JhcHBlciBhcm91bmQgcGlwZXMg
YW5kIHNvY2tldHMgdG8gc2VwZXJhdGUgb3V0IHJlcXVlc3RzIGZyb20KLXN1YnN0cmF0ZSBhbmQg
dGhpcyB3aWxsIGdpdmUgdXMgYSBzaW5nbGUgbW9kZWwgd2hpY2ggaXMgY29uc2lzdCBmb3IgSFRU
UCwKLXNvY2tldHMgYW5kIHBpcGVzLgotCi1TZXJ2ZXItc2lkZQotLS0tLS0tLS0tLS0KLQotIE1F
RElVTSAgKGZhY3RvcnkgZm9yIHByb3RvY29sLCByZWFkcyBieXRlcyAmIHB1c2hlcyB0byBwcm90
b2NvbCwKLSAgICAgICAgICB1c2VzIHByb3RvY29sIHRvIGRldGVjdCBlbmQtb2YtcmVxdWVzdCwg
c2VuZHMgd3JpdHRlbgotICAgICAgICAgIGJ5dGVzIHRvIGNsaWVudCkgZS5nLiBzb2NrZXQsIHBp
cGUsIEhUVFAgcmVxdWVzdCBoYW5kbGVyLgotICBeCi0gIHwgYnl0ZXMuCi0gIHYKLQotUFJPVE9D
T0wgIChzZXJpYWxpemF0aW9uLCBkZXNlcmlhbGl6YXRpb24pICBhY2NlcHRzIGJ5dGVzIGZvciBv
bmUKLSAgICAgICAgICByZXF1ZXN0LCBkZWNvZGVzIGFjY29yZGluZyB0byBpbnRlcm5hbCBzdGF0
ZSwgcHVzaGVzCi0gICAgICAgICAgc3RydWN0dXJlZCBkYXRhIHRvIGhhbmRsZXIuICBhY2NlcHRz
IHN0cnVjdHVyZWQgZGF0YSBmcm9tCi0gICAgICAgICAgaGFuZGxlciBhbmQgZW5jb2RlcyBhbmQg
d3JpdGVzIHRvIHRoZSBtZWRpdW0uICBmYWN0b3J5IGZvcgotICAgICAgICAgIGhhbmRsZXIuCi0g
IF4KLSAgfCBzdHJ1Y3R1cmVkIGRhdGEKLSAgdgotCi1IQU5ETEVSICAgKGRvbWFpbiBsb2dpYykg
YWNjZXB0cyBzdHJ1Y3R1cmVkIGRhdGEsIG9wZXJhdGVzIHN0YXRlCi0gICAgICAgICAgbWFjaGlu
ZSB1bnRpbCB0aGUgcmVxdWVzdCBjYW4gYmUgc2F0aXNmaWVkLAotICAgICAgICAgIHNlbmRzIHN0
cnVjdHVyZWQgZGF0YSB0byB0aGUgcHJvdG9jb2wuCi0KLQotQ2xpZW50LXNpZGUKLS0tLS0tLS0t
LS0tCi0KLSBDTElFTlQgICAgICAgICAgICAgZG9tYWluIGxvZ2ljLCBhY2NlcHRzIGRvbWFpbiBy
ZXF1ZXN0cywgZ2VuZXJhdGVkIHN0cnVjdHVyZWQKLSAgICAgICAgICAgICAgICAgICAgZGF0YSwg
cmVhZHMgc3RydWN0dXJlZCBkYXRhIGZyb20gcmVzcG9uc2VzIGFuZCB0dXJucyBpbnRvCi0gICAg
ICAgICAgICAgICAgICAgIGRvbWFpbiBkYXRhLiAgU2VuZHMgc3RydWN0dXJlZCBkYXRhIHRvIHRo
ZSBwcm90b2NvbC4KLSAgICAgICAgICAgICAgICAgICAgT3BlcmF0ZXMgc3RhdGUgbWFjaGluZXMg
dW50aWwgdGhlIHJlcXVlc3QgY2FuIGJlIGRlbGl2ZXJlZAotICAgICAgICAgICAgICAgICAgICAo
ZS5nLiByZWFkaW5nIGZyb20gYSBidW5kbGUgZ2VuZXJhdGVkIGluIGJ6cmxpYiB0byBkZWxpdmVy
IGEKLSAgICAgICAgICAgICAgICAgICAgY29tcGxldGUgcmVxdWVzdCkuCi0KLSAgICAgICAgICAg
ICAgICAgICAgUG9zc2libHkgdGhpcyBzaG91bGQganVzdCBiZSBSZW1vdGVCenJEaXIsIFJlbW90
ZVRyYW5zcG9ydCwKLSAgICAgICAgICAgICAgICAgICAgLi4uCi0gIF4KLSAgfCBzdHJ1Y3R1cmVk
IGRhdGEKLSAgdgotCi1QUk9UT0NPTCAgKHNlcmlhbGl6YXRpb24sIGRlc2VyaWFsaXphdGlvbikg
IGFjY2VwdHMgc3RydWN0dXJlZCBkYXRhIGZvciBvbmUKLSAgICAgICAgICByZXF1ZXN0LCBlbmNv
ZGVzIGFuZCB3cml0ZXMgdG8gdGhlIG1lZGl1bS4gIFJlYWRzIGJ5dGVzIGZyb20gdGhlCi0gICAg
ICAgICAgbWVkaXVtLCBkZWNvZGVzIGFuZCBhbGxvd3MgdGhlIGNsaWVudCB0byByZWFkIHN0cnVj
dHVyZWQgZGF0YS4KLSAgXgotICB8IGJ5dGVzLgotICB2Ci0KLSBNRURJVU0gIChhY2NlcHRzIGJ5
dGVzIGZyb20gdGhlIHByb3RvY29sICYgZGVsaXZlcnMgdG8gdGhlIHJlbW90ZSBzZXJ2ZXIuCi0g
ICAgICAgICAgQWxsb3dzIHRoZSBwb3RvY29sIHRvIHJlYWQgYnl0ZXMgZS5nLiBzb2NrZXQsIHBp
cGUsIEhUVFAgcmVxdWVzdC4KKyIiIlJlbW90ZVRyYW5zcG9ydCBjbGllbnQgZm9yIHRoZSBzbWFy
dC1zZXJ2ZXIuCisKK1RoaXMgbW9kdWxlIHNob3VsZG4ndCBiZSBhY2Nlc3NlZCBkaXJlY3RseS4g
IFRoZSBjbGFzc2VzIGRlZmluZWQgaGVyZSBzaG91bGQgYmUKK2ltcG9ydGVkIGZyb20gYnpybGli
LnNtYXJ0LgogIiIiCiAKLQotIyBUT0RPOiBfdHJhbnNsYXRlX2Vycm9yIHNob3VsZCBiZSBvbiB0
aGUgY2xpZW50LCBub3QgdGhlIHRyYW5zcG9ydCBiZWNhdXNlCi0jICAgICBlcnJvciBjb2Rpbmcg
aXMgd2lyZSBwcm90b2NvbCBzcGVjaWZpYy4KLQotIyBUT0RPOiBBIHBsYWluIGludGVnZXIgZnJv
bSBxdWVyeV92ZXJzaW9uIGlzIHRvbyBzaW1wbGU7IHNob3VsZCBnaXZlIHNvbWUKLSMgY2FwYWJp
bGl0aWVzIHRvbz8KLQotIyBUT0RPOiBTZXJ2ZXIgc2hvdWxkIHByb2JhYmx5IGNhdGNoIGV4Y2Vw
dGlvbnMgd2l0aGluIGl0c2VsZiBhbmQgc2VuZCB0aGVtCi0jIGJhY2sgYWNyb3NzIHRoZSBuZXR3
b3JrLiAgKEJ1dCBzaG91bGRuJ3QgY2F0Y2ggS2V5Ym9hcmRJbnRlcnJ1cHQgZXRjKQotIyBBbHNv
IG5lZWRzIHRvIHNvbWVob3cgcmVwb3J0IHByb3RvY29sIGVycm9ycyBsaWtlIGJhZCByZXF1ZXN0
cy4gIE5lZWQgdG8KLSMgY29uc2lkZXIgaG93IHdlJ2xsIGhhbmRsZSBlcnJvciByZXBvcnRpbmcs
IGUuZy4gaWYgd2UgZ2V0IGhhbGZ3YXkgdGhyb3VnaCBhCi0jIGJ1bGsgdHJhbnNmZXIgYW5kIHRo
ZW4gc29tZXRoaW5nIGdvZXMgd3JvbmcuCi0KLSMgVE9ETzogU3RhbmRhcmQgbWFya2VyIGF0IHN0
YXJ0IG9mIHJlcXVlc3QvcmVzcG9uc2UgbGluZXM/Ci0KLSMgVE9ETzogTWFrZSBlYWNoIHJlcXVl
c3QgYW5kIHJlc3BvbnNlIHNlbGYtdmFsaWRhdGFibGUsIGUuZy4gd2l0aCBjaGVja3N1bXMuCi0j
Ci0jIFRPRE86IGdldC9wdXQgb2JqZWN0cyBjb3VsZCBiZSBjaGFuZ2VkIHRvIGdyYWR1YWxseSBy
ZWFkIGJhY2sgdGhlIGRhdGEgYXMgaXQKLSMgY29tZXMgYWNyb3NzIHRoZSBuZXR3b3JrCi0jCi0j
IFRPRE86IFdoYXQgc2hvdWxkIHRoZSBzZXJ2ZXIgZG8gaWYgaXQgaGl0cyBhbiBlcnJvciBhbmQg
aGFzIHRvIHRlcm1pbmF0ZT8KLSMKLSMgVE9ETzogaXMgaXQgdXNlZnVsIHRvIGFsbG93IG11bHRp
cGxlIGNodW5rcyBpbiB0aGUgYnVsayBkYXRhPwotIwotIyBUT0RPOiBJZiB3ZSBnZXQgYW4gZXhj
ZXB0aW9uIGR1cmluZyB0cmFuc21pc3Npb24gb2YgYnVsayBkYXRhIHdlIGNhbid0IGp1c3QKLSMg
ZW1pdCB0aGUgZXhjZXB0aW9uIGJlY2F1c2UgaXQgd29uJ3QgYmUgc2Vlbi4KLSMgICBKb2huIHBy
b3Bvc2VzOiAgSSB0aGluayBpdCB3b3VsZCBiZSB3b3J0aHdoaWxlIHRvIGhhdmUgYSBoZWFkZXIg
b24gZWFjaAotIyAgIGNodW5rLCB0aGF0IGluZGljYXRlcyBpdCBpcyBhbm90aGVyIGNodW5rLiBU
aGVuIHlvdSBjYW4gc2VuZCBhbiAnZXJyb3InCi0jICAgY2h1bmsgYXMgbG9uZyBhcyB5b3UgZmlu
aXNoIHRoZSBwcmV2aW91cyBjaHVuay4KLSMKLSMgVE9ETzogQ2xvbmUgbWV0aG9kIG9uIFRyYW5z
cG9ydDsgc2hvdWxkIHdvcmsgdXAgdG93YXJkcyBwYXJlbnQgZGlyZWN0b3J5OwotIyB1bmNsZWFy
IGhvdyB0aGlzIHNob3VsZCBiZSBzdG9yZWQgb3IgY29tbXVuaWNhdGVkIHRvIHRoZSBzZXJ2ZXIu
Li4gbWF5YmUKLSMganVzdCBwYXNzIGl0IG9uIGFsbCByZWxldmFudCByZXF1ZXN0cz8KLSMKLSMg
VE9ETzogQmV0dGVyIG5hbWUgdGhhbiBjbG9uZSgpIGZvciBjaGFuZ2luZyBiZXR3ZWVuIGRpcmVj
dG9yaWVzLiAgSG93IGFib3V0Ci0jIG9wZW5fZGlyIG9yIGNoYW5nZV9kaXIgb3IgY2hkaXI/Ci0j
Ci0jIFRPRE86IElzIGl0IHJlYWxseSBnb29kIHRvIGhhdmUgdGhlIG5vdGlvbiBvZiBjdXJyZW50
IGRpcmVjdG9yeSB3aXRoaW4gdGhlCi0jIGNvbm5lY3Rpb24/ICBQZXJoYXBzIGFsbCBUcmFuc3Bv
cnRzIHNob3VsZCBmYWN0b3Igb3V0IGEgY29tbW9uIGNvbm5lY3Rpb24KLSMgZnJvbSB0aGUgdGhp
bmcgdGhhdCBoYXMgdGhlIGRpcmVjdG9yeSBjb250ZXh0PwotIwotIyBUT0RPOiBQdWxsIG1vcmUg
dGhpbmdzIGNvbW1vbiB0byBzZnRwIGFuZCBzc2ggdG8gYSBoaWdoZXIgbGV2ZWwuCi0jCi0jIFRP
RE86IFRoZSBzZXJ2ZXIgdGhhdCBtYW5hZ2VzIGEgY29ubmVjdGlvbiBzaG91bGQgYmUgcXVpdGUg
c21hbGwgYW5kIHJldGFpbgotIyBtaW5pbXVtIHN0YXRlIGJlY2F1c2UgZWFjaCBvZiB0aGUgcmVx
dWVzdHMgYXJlIHN1cHBvc2VkIHRvIGJlIHN0YXRlbGVzcy4KLSMgVGhlbiB3ZSBjYW4gd3JpdGUg
YW5vdGhlciBpbXBsZW1lbnRhdGlvbiB0aGF0IG1hcHMgdG8gaHR0cC4KLSMKLSMgVE9ETzogV2hh
dCB0byBkbyB3aGVuIGEgY2xpZW50IGNvbm5lY3Rpb24gaXMgZ2FyYmFnZSBjb2xsZWN0ZWQ/ICBN
YXliZSBqdXN0Ci0jIGFicnVwdGx5IGRyb3AgdGhlIGNvbm5lY3Rpb24/Ci0jCi0jIFRPRE86IFNl
cnZlciBpbiBzb21lIGNhc2VzIHdpbGwgbmVlZCB0byByZXN0cmljdCBhY2Nlc3MgdG8gZmlsZXMg
b3V0c2lkZSBvZgotIyBhIHBhcnRpY3VsYXIgcm9vdCBkaXJlY3RvcnkuICBMb2NhbFRyYW5zcG9y
dCBkb2Vzbid0IGRvIGFueXRoaW5nIHRvIHN0b3AgeW91Ci0jIGFzY2VuZGluZyBhYm92ZSB0aGUg
YmFzZSBkaXJlY3RvcnksIHNvIHdlIG5lZWQgdG8gcHJldmVudCBwYXRocwotIyBjb250YWluaW5n
ICcuLicgaW4gZWl0aGVyIHRoZSBzZXJ2ZXIgb3IgdHJhbnNwb3J0IGxheWVycy4gIChBbHNvIG5l
ZWQgdG8KLSMgY29uc2lkZXIgd2hhdCBoYXBwZW5zIGlmIHNvbWVvbmUgY3JlYXRlcyBhIHN5bWxp
bmsgcG9pbnRpbmcgb3V0c2lkZSB0aGUgCi0jIGRpcmVjdG9yeSB0cmVlLi4uKQotIwotIyBUT0RP
OiBTZXJ2ZXIgc2hvdWxkIHJlYmFzZSBhYnNvbHV0ZSBwYXRocyBjb21pbmcgYWNyb3NzIHRoZSBu
ZXR3b3JrIHRvIHB1dAotIyB0aGVtIHVuZGVyIHRoZSB2aXJ0dWFsIHJvb3QsIGlmIG9uZSBpcyBp
biB1c2UuICBMb2NhbFRyYW5zcG9ydCBjdXJyZW50bHkKLSMgZG9lc24ndCBkbyB0aGF0OyBpZiB5
b3UgZ2l2ZSBpdCBhbiBhYnNvbHV0ZSBwYXRoIGl0IGp1c3QgdXNlcyBpdC4KLSMgCi0jIFhYWDog
QXJndW1lbnRzIGNhbid0IGNvbnRhaW4gbmV3bGluZXMgb3IgYXNjaWk7IHBvc3NpYmx5IHdlIHNo
b3VsZCBlLmcuCi0jIHVybGVzY2FwZSB0aGVtIGluc3RlYWQuICBJbmRlZWQgcG9zc2libHkgdGhp
cyBzaG91bGQganVzdCBsaXRlcmFsbHkgYmUKLSMgaHR0cC1vdmVyLXNzaC4KLSMKLSMgRklYTUU6
IFRoaXMgdHJhbnNwb3J0LCB3aXRoIHNldmVyYWwgb3RoZXJzLCBoYXMgaW1wZXJmZWN0IGhhbmRs
aW5nIG9mIHBhdGhzCi0jIHdpdGhpbiB1cmxzLiAgSXQnZCBwcm9iYWJseSBiZSBiZXR0ZXIgZm9y
ICIuLiIgZnJvbSBhIHJvb3QgdG8gcmFpc2UgYW4gZXJyb3IKLSMgcmF0aGVyIHRoYW4gcmV0dXJu
IHRoZSBzYW1lIGRpcmVjdG9yeSBhcyB3ZSBkbyBhdCBwcmVzZW50LgotIwotIyBUT0RPOiBSYXRo
ZXIgdGhhbiB3b3JraW5nIGF0IHRoZSBUcmFuc3BvcnQgbGF5ZXIgd2Ugd2FudCBhIEJyYW5jaCwK
LSMgUmVwb3NpdG9yeSBvciBCenJEaXIgb2JqZWN0cyB0aGF0IHRhbGsgdG8gYSBzZXJ2ZXIuCi0j
Ci0jIFRPRE86IFByb2JhYmx5IHdhbnQgc29tZSB3YXkgZm9yIHNlcnZlciBjb21tYW5kcyB0byBn
cmFkdWFsbHkgcHJvZHVjZSBib2R5Ci0jIGRhdGEgcmF0aGVyIHRoYW4gcGFzc2luZyBpdCBhcyBh
IHN0cmluZzsgdGhleSBjb3VsZCBwZXJoYXBzIHBhc3MgYW4KLSMgaXRlcmF0b3ItbGlrZSBjYWxs
YmFjayB0aGF0IHdpbGwgZ3JhZHVhbGx5IHlpZWxkIGRhdGE7IGl0IHByb2JhYmx5IG5lZWRzIGEK
LSMgY2xvc2UoKSBtZXRob2QgdGhhdCB3aWxsIGFsd2F5cyBiZSBjbG9zZWQgdG8gZG8gYW55IG5l
Y2Vzc2FyeSBjbGVhbnVwLgotIwotIyBUT0RPOiBTcGxpdCB0aGUgYWN0dWFsIHNtYXJ0IHNlcnZl
ciBmcm9tIHRoZSBzc2ggZW5jb2Rpbmcgb2YgaXQuCi0jCi0jIFRPRE86IFBlcmhhcHMgc3VwcG9y
dCBmaWxlLWxldmVsIHJlYWR3cml0ZSBvcGVyYXRpb25zIG92ZXIgdGhlIHRyYW5zcG9ydAotIyB0
b28uCi0jCi0jIFRPRE86IFNtYXJ0QnpyRGlyIGNsYXNzLCBwcm94eWluZyBhbGwgQnJhbmNoIGV0
YyBtZXRob2RzIGFjcm9zcyB0byBhbm90aGVyCi0jIGJyYW5jaCBkb2luZyBmaWxlLWxldmVsIG9w
ZXJhdGlvbnMuCi0jCitfX2FsbF9fID0gWydSZW1vdGVUcmFuc3BvcnQnLCAnUmVtb3RlVENQVHJh
bnNwb3J0JywgJ1JlbW90ZVNTSFRyYW5zcG9ydCddCiAKIGZyb20gY1N0cmluZ0lPIGltcG9ydCBT
dHJpbmdJTwotaW1wb3J0IGVycm5vCi1pbXBvcnQgb3MKLWltcG9ydCBzb2NrZXQKLWltcG9ydCBz
eXMKLWltcG9ydCB0ZW1wZmlsZQotaW1wb3J0IHRocmVhZGluZwogaW1wb3J0IHVybGxpYgogaW1w
b3J0IHVybHBhcnNlCiAKIGZyb20gYnpybGliIGltcG9ydCAoCi0gICAgYnpyZGlyLAogICAgIGVy
cm9ycywKLSAgICByZXZpc2lvbiwKICAgICB0cmFuc3BvcnQsCi0gICAgdHJhY2UsCiAgICAgdXJs
dXRpbHMsCiAgICAgKQotZnJvbSBienJsaWIuYnVuZGxlLnNlcmlhbGl6ZXIgaW1wb3J0IHdyaXRl
X2J1bmRsZQotZnJvbSBienJsaWIuaG9va3MgaW1wb3J0IEhvb2tzCi10cnk6Ci0gICAgZnJvbSBi
enJsaWIudHJhbnNwb3J0IGltcG9ydCBzc2gKLWV4Y2VwdCBlcnJvcnMuUGFyYW1pa29Ob3RQcmVz
ZW50OgotICAgICMgbm8gcGFyYW1pa28uICBTbWFydFNTSENsaWVudE1lZGl1bSB3aWxsIGJyZWFr
LgotICAgIHBhc3MKK2Zyb20gYnpybGliLnNtYXJ0IGltcG9ydCBjbGllbnQsIG1lZGl1bSwgcHJv
dG9jb2wKIAogIyBtdXN0IGRvIHRoaXMgb3RoZXJ3aXNlIHVybGxpYiBjYW4ndCBwYXJzZSB0aGUg
dXJscyBwcm9wZXJseSA6KAogZm9yIHNjaGVtZSBpbiBbJ3NzaCcsICdienInLCAnYnpyK2xvb3Bi
YWNrJywgJ2J6citzc2gnLCAnYnpyK2h0dHAnXToKQEAgLTIyNyw3OTQgKzQwLDIyIEBACiAKIAog
IyBQb3J0IDQxNTUgaXMgdGhlIGRlZmF1bHQgcG9ydCBmb3IgYnpyOi8vLCByZWdpc3RlcmVkIHdp
dGggSUFOQS4KK0JaUl9ERUZBVUxUX0lOVEVSRkFDRSA9ICcwLjAuMC4wJwogQlpSX0RFRkFVTFRf
UE9SVCA9IDQxNTUKIAogCi1kZWYgX3JlY3ZfdHVwbGUoZnJvbV9maWxlKToKLSAgICByZXFfbGlu
ZSA9IGZyb21fZmlsZS5yZWFkbGluZSgpCi0gICAgcmV0dXJuIF9kZWNvZGVfdHVwbGUocmVxX2xp
bmUpCi0KLQotZGVmIF9kZWNvZGVfdHVwbGUocmVxX2xpbmUpOgotICAgIGlmIHJlcV9saW5lID09
IE5vbmUgb3IgcmVxX2xpbmUgPT0gJyc6Ci0gICAgICAgIHJldHVybiBOb25lCi0gICAgaWYgcmVx
X2xpbmVbLTFdICE9ICdcbic6Ci0gICAgICAgIHJhaXNlIGVycm9ycy5TbWFydFByb3RvY29sRXJy
b3IoInJlcXVlc3QgJXIgbm90IHRlcm1pbmF0ZWQiICUgcmVxX2xpbmUpCi0gICAgcmV0dXJuIHR1
cGxlKHJlcV9saW5lWzotMV0uc3BsaXQoJ1x4MDEnKSkKLQotCi1kZWYgX2VuY29kZV90dXBsZShh
cmdzKToKLSAgICAiIiJFbmNvZGUgdGhlIHR1cGxlIGFyZ3MgdG8gYSBieXRlc3RyZWFtLiIiIgot
ICAgIHJldHVybiAnXHgwMScuam9pbihhcmdzKSArICdcbicKLQotCi1jbGFzcyBTbWFydFByb3Rv
Y29sQmFzZShvYmplY3QpOgotICAgICIiIk1ldGhvZHMgY29tbW9uIHRvIGNsaWVudCBhbmQgc2Vy
dmVyIiIiCi0KLSAgICAjIFRPRE86IHRoaXMgb25seSBhY3R1YWxseSBhY2NvbW9kYXRlcyBhIHNp
bmdsZSBibG9jazsgcG9zc2libHkgc2hvdWxkCi0gICAgIyBzdXBwb3J0IG11bHRpcGxlIGNodW5r
cz8KLSAgICBkZWYgX2VuY29kZV9idWxrX2RhdGEoc2VsZiwgYm9keSk6Ci0gICAgICAgICIiIkVu
Y29kZSBib2R5IGFzIGEgYnVsayBkYXRhIGNodW5rLiIiIgotICAgICAgICByZXR1cm4gJycuam9p
bigoJyVkXG4nICUgbGVuKGJvZHkpLCBib2R5LCAnZG9uZVxuJykpCi0KLSAgICBkZWYgX3Nlcmlh
bGlzZV9vZmZzZXRzKHNlbGYsIG9mZnNldHMpOgotICAgICAgICAiIiJTZXJpYWxpc2UgYSByZWFk
diBvZmZzZXQgbGlzdC4iIiIKLSAgICAgICAgdHh0ID0gW10KLSAgICAgICAgZm9yIHN0YXJ0LCBs
ZW5ndGggaW4gb2Zmc2V0czoKLSAgICAgICAgICAgIHR4dC5hcHBlbmQoJyVkLCVkJyAlIChzdGFy
dCwgbGVuZ3RoKSkKLSAgICAgICAgcmV0dXJuICdcbicuam9pbih0eHQpCi0gICAgICAgIAotCi1j
bGFzcyBTbWFydFNlcnZlclJlcXVlc3RQcm90b2NvbE9uZShTbWFydFByb3RvY29sQmFzZSk6Ci0g
ICAgIiIiU2VydmVyLXNpZGUgZW5jb2RpbmcgYW5kIGRlY29kaW5nIGxvZ2ljIGZvciBzbWFydCB2
ZXJzaW9uIDEuIiIiCi0gICAgCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIGJhY2tpbmdfdHJhbnNw
b3J0LCB3cml0ZV9mdW5jKToKLSAgICAgICAgc2VsZi5fYmFja2luZ190cmFuc3BvcnQgPSBiYWNr
aW5nX3RyYW5zcG9ydAotICAgICAgICBzZWxmLmV4Y2Vzc19idWZmZXIgPSAnJwotICAgICAgICBz
ZWxmLl9maW5pc2hlZCA9IEZhbHNlCi0gICAgICAgIHNlbGYuaW5fYnVmZmVyID0gJycKLSAgICAg
ICAgc2VsZi5oYXNfZGlzcGF0Y2hlZCA9IEZhbHNlCi0gICAgICAgIHNlbGYucmVxdWVzdCA9IE5v
bmUKLSAgICAgICAgc2VsZi5fYm9keV9kZWNvZGVyID0gTm9uZQotICAgICAgICBzZWxmLl93cml0
ZV9mdW5jID0gd3JpdGVfZnVuYwotCi0gICAgZGVmIGFjY2VwdF9ieXRlcyhzZWxmLCBieXRlcyk6
Ci0gICAgICAgICIiIlRha2UgYnl0ZXMsIGFuZCBhZHZhbmNlIHRoZSBpbnRlcm5hbCBzdGF0ZSBt
YWNoaW5lIGFwcHJvcHJpYXRlbHkuCi0gICAgICAgIAotICAgICAgICA6cGFyYW0gYnl0ZXM6IG11
c3QgYmUgYSBieXRlIHN0cmluZwotICAgICAgICAiIiIKLSAgICAgICAgYXNzZXJ0IGlzaW5zdGFu
Y2UoYnl0ZXMsIHN0cikKLSAgICAgICAgc2VsZi5pbl9idWZmZXIgKz0gYnl0ZXMKLSAgICAgICAg
aWYgbm90IHNlbGYuaGFzX2Rpc3BhdGNoZWQ6Ci0gICAgICAgICAgICBpZiAnXG4nIG5vdCBpbiBz
ZWxmLmluX2J1ZmZlcjoKLSAgICAgICAgICAgICAgICAjIG5vIGNvbW1hbmQgbGluZSB5ZXQKLSAg
ICAgICAgICAgICAgICByZXR1cm4KLSAgICAgICAgICAgIHNlbGYuaGFzX2Rpc3BhdGNoZWQgPSBU
cnVlCi0gICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgZmlyc3RfbGluZSwgc2VsZi5p
bl9idWZmZXIgPSBzZWxmLmluX2J1ZmZlci5zcGxpdCgnXG4nLCAxKQotICAgICAgICAgICAgICAg
IGZpcnN0X2xpbmUgKz0gJ1xuJwotICAgICAgICAgICAgICAgIHJlcV9hcmdzID0gX2RlY29kZV90
dXBsZShmaXJzdF9saW5lKQotICAgICAgICAgICAgICAgIHNlbGYucmVxdWVzdCA9IFNtYXJ0U2Vy
dmVyUmVxdWVzdEhhbmRsZXIoCi0gICAgICAgICAgICAgICAgICAgIHNlbGYuX2JhY2tpbmdfdHJh
bnNwb3J0KQotICAgICAgICAgICAgICAgIHNlbGYucmVxdWVzdC5kaXNwYXRjaF9jb21tYW5kKHJl
cV9hcmdzWzBdLCByZXFfYXJnc1sxOl0pCi0gICAgICAgICAgICAgICAgaWYgc2VsZi5yZXF1ZXN0
LmZpbmlzaGVkX3JlYWRpbmc6Ci0gICAgICAgICAgICAgICAgICAgICMgdHJpdmlhbCByZXF1ZXN0
Ci0gICAgICAgICAgICAgICAgICAgIHNlbGYuZXhjZXNzX2J1ZmZlciA9IHNlbGYuaW5fYnVmZmVy
Ci0gICAgICAgICAgICAgICAgICAgIHNlbGYuaW5fYnVmZmVyID0gJycKLSAgICAgICAgICAgICAg
ICAgICAgc2VsZi5fc2VuZF9yZXNwb25zZShzZWxmLnJlcXVlc3QucmVzcG9uc2UuYXJncywKLSAg
ICAgICAgICAgICAgICAgICAgICAgIHNlbGYucmVxdWVzdC5yZXNwb25zZS5ib2R5KQotICAgICAg
ICAgICAgZXhjZXB0IEtleWJvYXJkSW50ZXJydXB0OgotICAgICAgICAgICAgICAgIHJhaXNlCi0g
ICAgICAgICAgICBleGNlcHQgRXhjZXB0aW9uLCBleGNlcHRpb246Ci0gICAgICAgICAgICAgICAg
IyBldmVyeXRoaW5nIGVsc2U6IHBhc3MgdG8gY2xpZW50LCBmbHVzaCwgYW5kIHF1aXQKLSAgICAg
ICAgICAgICAgICBzZWxmLl9zZW5kX3Jlc3BvbnNlKCgnZXJyb3InLCBzdHIoZXhjZXB0aW9uKSkp
Ci0gICAgICAgICAgICAgICAgcmV0dXJuCi0KLSAgICAgICAgaWYgc2VsZi5oYXNfZGlzcGF0Y2hl
ZDoKLSAgICAgICAgICAgIGlmIHNlbGYuX2ZpbmlzaGVkOgotICAgICAgICAgICAgICAgICMgbm90
aGluZyB0byBkby5YWFg6IHRoaXMgcm91dGluZSBzaG91bGQgYmUgYSBzaW5nbGUgc3RhdGUgCi0g
ICAgICAgICAgICAgICAgIyBtYWNoaW5lIHRvby4KLSAgICAgICAgICAgICAgICBzZWxmLmV4Y2Vz
c19idWZmZXIgKz0gc2VsZi5pbl9idWZmZXIKLSAgICAgICAgICAgICAgICBzZWxmLmluX2J1ZmZl
ciA9ICcnCi0gICAgICAgICAgICAgICAgcmV0dXJuCi0gICAgICAgICAgICBpZiBzZWxmLl9ib2R5
X2RlY29kZXIgaXMgTm9uZToKLSAgICAgICAgICAgICAgICBzZWxmLl9ib2R5X2RlY29kZXIgPSBM
ZW5ndGhQcmVmaXhlZEJvZHlEZWNvZGVyKCkKLSAgICAgICAgICAgIHNlbGYuX2JvZHlfZGVjb2Rl
ci5hY2NlcHRfYnl0ZXMoc2VsZi5pbl9idWZmZXIpCi0gICAgICAgICAgICBzZWxmLmluX2J1ZmZl
ciA9IHNlbGYuX2JvZHlfZGVjb2Rlci51bnVzZWRfZGF0YQotICAgICAgICAgICAgYm9keV9kYXRh
ID0gc2VsZi5fYm9keV9kZWNvZGVyLnJlYWRfcGVuZGluZ19kYXRhKCkKLSAgICAgICAgICAgIHNl
bGYucmVxdWVzdC5hY2NlcHRfYm9keShib2R5X2RhdGEpCi0gICAgICAgICAgICBpZiBzZWxmLl9i
b2R5X2RlY29kZXIuZmluaXNoZWRfcmVhZGluZzoKLSAgICAgICAgICAgICAgICBzZWxmLnJlcXVl
c3QuZW5kX29mX2JvZHkoKQotICAgICAgICAgICAgICAgIGFzc2VydCBzZWxmLnJlcXVlc3QuZmlu
aXNoZWRfcmVhZGluZywgXAotICAgICAgICAgICAgICAgICAgICAibm8gbW9yZSBib2R5LCByZXF1
ZXN0IG5vdCBmaW5pc2hlZCIKLSAgICAgICAgICAgIGlmIHNlbGYucmVxdWVzdC5yZXNwb25zZSBp
cyBub3QgTm9uZToKLSAgICAgICAgICAgICAgICBzZWxmLl9zZW5kX3Jlc3BvbnNlKHNlbGYucmVx
dWVzdC5yZXNwb25zZS5hcmdzLAotICAgICAgICAgICAgICAgICAgICBzZWxmLnJlcXVlc3QucmVz
cG9uc2UuYm9keSkKLSAgICAgICAgICAgICAgICBzZWxmLmV4Y2Vzc19idWZmZXIgPSBzZWxmLmlu
X2J1ZmZlcgotICAgICAgICAgICAgICAgIHNlbGYuaW5fYnVmZmVyID0gJycKLSAgICAgICAgICAg
IGVsc2U6Ci0gICAgICAgICAgICAgICAgYXNzZXJ0IG5vdCBzZWxmLnJlcXVlc3QuZmluaXNoZWRf
cmVhZGluZywgXAotICAgICAgICAgICAgICAgICAgICAibm8gcmVzcG9uc2UgYW5kIHdlIGhhdmUg
ZmluaXNoZWQgcmVhZGluZy4iCi0KLSAgICBkZWYgX3NlbmRfcmVzcG9uc2Uoc2VsZiwgYXJncywg
Ym9keT1Ob25lKToKLSAgICAgICAgIiIiU2VuZCBhIHNtYXJ0IHNlcnZlciByZXNwb25zZSBkb3du
IHRoZSBvdXRwdXQgc3RyZWFtLiIiIgotICAgICAgICBhc3NlcnQgbm90IHNlbGYuX2ZpbmlzaGVk
LCAncmVzcG9uc2UgYWxyZWFkeSBzZW50JwotICAgICAgICBzZWxmLl9maW5pc2hlZCA9IFRydWUK
LSAgICAgICAgc2VsZi5fd3JpdGVfZnVuYyhfZW5jb2RlX3R1cGxlKGFyZ3MpKQotICAgICAgICBp
ZiBib2R5IGlzIG5vdCBOb25lOgotICAgICAgICAgICAgYXNzZXJ0IGlzaW5zdGFuY2UoYm9keSwg
c3RyKSwgJ2JvZHkgbXVzdCBiZSBhIHN0cicKLSAgICAgICAgICAgIGJ5dGVzID0gc2VsZi5fZW5j
b2RlX2J1bGtfZGF0YShib2R5KQotICAgICAgICAgICAgc2VsZi5fd3JpdGVfZnVuYyhieXRlcykK
LQotICAgIGRlZiBuZXh0X3JlYWRfc2l6ZShzZWxmKToKLSAgICAgICAgaWYgc2VsZi5fZmluaXNo
ZWQ6Ci0gICAgICAgICAgICByZXR1cm4gMAotICAgICAgICBpZiBzZWxmLl9ib2R5X2RlY29kZXIg
aXMgTm9uZToKLSAgICAgICAgICAgIHJldHVybiAxCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAg
ICByZXR1cm4gc2VsZi5fYm9keV9kZWNvZGVyLm5leHRfcmVhZF9zaXplKCkKLQotCi1jbGFzcyBM
ZW5ndGhQcmVmaXhlZEJvZHlEZWNvZGVyKG9iamVjdCk6Ci0gICAgIiIiRGVjb2RlcyB0aGUgbGVu
Z3RoLXByZWZpeGVkIGJ1bGsgZGF0YS4iIiIKLSAgICAKLSAgICBkZWYgX19pbml0X18oc2VsZik6
Ci0gICAgICAgIHNlbGYuYnl0ZXNfbGVmdCA9IE5vbmUKLSAgICAgICAgc2VsZi5maW5pc2hlZF9y
ZWFkaW5nID0gRmFsc2UKLSAgICAgICAgc2VsZi51bnVzZWRfZGF0YSA9ICcnCi0gICAgICAgIHNl
bGYuc3RhdGVfYWNjZXB0ID0gc2VsZi5fc3RhdGVfYWNjZXB0X2V4cGVjdGluZ19sZW5ndGgKLSAg
ICAgICAgc2VsZi5zdGF0ZV9yZWFkID0gc2VsZi5fc3RhdGVfcmVhZF9ub19kYXRhCi0gICAgICAg
IHNlbGYuX2luX2J1ZmZlciA9ICcnCi0gICAgICAgIHNlbGYuX3RyYWlsZXJfYnVmZmVyID0gJycK
LSAgICAKLSAgICBkZWYgYWNjZXB0X2J5dGVzKHNlbGYsIGJ5dGVzKToKLSAgICAgICAgIiIiRGVj
b2RlIGFzIG11Y2ggb2YgYnl0ZXMgYXMgcG9zc2libGUuCi0KLSAgICAgICAgSWYgJ2J5dGVzJyBj
b250YWlucyB0b28gbXVjaCBkYXRhIGl0IHdpbGwgYmUgYXBwZW5kZWQgdG8KLSAgICAgICAgc2Vs
Zi51bnVzZWRfZGF0YS4KLQotICAgICAgICBmaW5pc2hlZF9yZWFkaW5nIHdpbGwgYmUgc2V0IHdo
ZW4gbm8gbW9yZSBkYXRhIGlzIHJlcXVpcmVkLiAgRnVydGhlcgotICAgICAgICBkYXRhIHdpbGwg
YmUgYXBwZW5kZWQgdG8gc2VsZi51bnVzZWRfZGF0YS4KLSAgICAgICAgIiIiCi0gICAgICAgICMg
YWNjZXB0X2J5dGVzIGlzIGFsbG93ZWQgdG8gY2hhbmdlIHRoZSBzdGF0ZQotICAgICAgICBjdXJy
ZW50X3N0YXRlID0gc2VsZi5zdGF0ZV9hY2NlcHQKLSAgICAgICAgc2VsZi5zdGF0ZV9hY2NlcHQo
Ynl0ZXMpCi0gICAgICAgIHdoaWxlIGN1cnJlbnRfc3RhdGUgIT0gc2VsZi5zdGF0ZV9hY2NlcHQ6
Ci0gICAgICAgICAgICBjdXJyZW50X3N0YXRlID0gc2VsZi5zdGF0ZV9hY2NlcHQKLSAgICAgICAg
ICAgIHNlbGYuc3RhdGVfYWNjZXB0KCcnKQotCi0gICAgZGVmIG5leHRfcmVhZF9zaXplKHNlbGYp
OgotICAgICAgICBpZiBzZWxmLmJ5dGVzX2xlZnQgaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICAj
IElkZWFsbHkgd2Ugd2FudCB0byByZWFkIGFsbCB0aGUgcmVtYWluZGVyIG9mIHRoZSBib2R5IGFu
ZCB0aGUKLSAgICAgICAgICAgICMgdHJhaWxlciBpbiBvbmUgZ28uCi0gICAgICAgICAgICByZXR1
cm4gc2VsZi5ieXRlc19sZWZ0ICsgNQotICAgICAgICBlbGlmIHNlbGYuc3RhdGVfYWNjZXB0ID09
IHNlbGYuX3N0YXRlX2FjY2VwdF9yZWFkaW5nX3RyYWlsZXI6Ci0gICAgICAgICAgICAjIEp1c3Qg
dGhlIHRyYWlsZXIgbGVmdAotICAgICAgICAgICAgcmV0dXJuIDUgLSBsZW4oc2VsZi5fdHJhaWxl
cl9idWZmZXIpCi0gICAgICAgIGVsaWYgc2VsZi5zdGF0ZV9hY2NlcHQgPT0gc2VsZi5fc3RhdGVf
YWNjZXB0X2V4cGVjdGluZ19sZW5ndGg6Ci0gICAgICAgICAgICAjIFRoZXJlJ3Mgc3RpbGwgYXQg
bGVhc3QgNiBieXRlcyBsZWZ0ICgnXG4nIHRvIGVuZCB0aGUgbGVuZ3RoLCBwbHVzCi0gICAgICAg
ICAgICAjICdkb25lXG4nKS4KLSAgICAgICAgICAgIHJldHVybiA2Ci0gICAgICAgIGVsc2U6Ci0g
ICAgICAgICAgICAjIFJlYWRpbmcgZXhjZXNzIGRhdGEuICBFaXRoZXIgd2F5LCAxIGJ5dGUgYXQg
YSB0aW1lIGlzIGZpbmUuCi0gICAgICAgICAgICByZXR1cm4gMQotICAgICAgICAKLSAgICBkZWYg
cmVhZF9wZW5kaW5nX2RhdGEoc2VsZik6Ci0gICAgICAgICIiIlJldHVybiBhbnkgcGVuZGluZyBk
YXRhIHRoYXQgaGFzIGJlZW4gZGVjb2RlZC4iIiIKLSAgICAgICAgcmV0dXJuIHNlbGYuc3RhdGVf
cmVhZCgpCi0KLSAgICBkZWYgX3N0YXRlX2FjY2VwdF9leHBlY3RpbmdfbGVuZ3RoKHNlbGYsIGJ5
dGVzKToKLSAgICAgICAgc2VsZi5faW5fYnVmZmVyICs9IGJ5dGVzCi0gICAgICAgIHBvcyA9IHNl
bGYuX2luX2J1ZmZlci5maW5kKCdcbicpCi0gICAgICAgIGlmIHBvcyA9PSAtMToKLSAgICAgICAg
ICAgIHJldHVybgotICAgICAgICBzZWxmLmJ5dGVzX2xlZnQgPSBpbnQoc2VsZi5faW5fYnVmZmVy
Wzpwb3NdKQotICAgICAgICBzZWxmLl9pbl9idWZmZXIgPSBzZWxmLl9pbl9idWZmZXJbcG9zKzE6
XQotICAgICAgICBzZWxmLmJ5dGVzX2xlZnQgLT0gbGVuKHNlbGYuX2luX2J1ZmZlcikKLSAgICAg
ICAgc2VsZi5zdGF0ZV9hY2NlcHQgPSBzZWxmLl9zdGF0ZV9hY2NlcHRfcmVhZGluZ19ib2R5Ci0g
ICAgICAgIHNlbGYuc3RhdGVfcmVhZCA9IHNlbGYuX3N0YXRlX3JlYWRfaW5fYnVmZmVyCi0KLSAg
ICBkZWYgX3N0YXRlX2FjY2VwdF9yZWFkaW5nX2JvZHkoc2VsZiwgYnl0ZXMpOgotICAgICAgICBz
ZWxmLl9pbl9idWZmZXIgKz0gYnl0ZXMKLSAgICAgICAgc2VsZi5ieXRlc19sZWZ0IC09IGxlbihi
eXRlcykKLSAgICAgICAgaWYgc2VsZi5ieXRlc19sZWZ0IDw9IDA6Ci0gICAgICAgICAgICAjIEZp
bmlzaGVkIHdpdGggYm9keQotICAgICAgICAgICAgaWYgc2VsZi5ieXRlc19sZWZ0ICE9IDA6Ci0g
ICAgICAgICAgICAgICAgc2VsZi5fdHJhaWxlcl9idWZmZXIgPSBzZWxmLl9pbl9idWZmZXJbc2Vs
Zi5ieXRlc19sZWZ0Ol0KLSAgICAgICAgICAgICAgICBzZWxmLl9pbl9idWZmZXIgPSBzZWxmLl9p
bl9idWZmZXJbOnNlbGYuYnl0ZXNfbGVmdF0KLSAgICAgICAgICAgIHNlbGYuYnl0ZXNfbGVmdCA9
IE5vbmUKLSAgICAgICAgICAgIHNlbGYuc3RhdGVfYWNjZXB0ID0gc2VsZi5fc3RhdGVfYWNjZXB0
X3JlYWRpbmdfdHJhaWxlcgotICAgICAgICAKLSAgICBkZWYgX3N0YXRlX2FjY2VwdF9yZWFkaW5n
X3RyYWlsZXIoc2VsZiwgYnl0ZXMpOgotICAgICAgICBzZWxmLl90cmFpbGVyX2J1ZmZlciArPSBi
eXRlcwotICAgICAgICAjIFRPRE86IHdoYXQgaWYgdGhlIHRyYWlsZXIgZG9lcyBub3QgbWF0Y2gg
ImRvbmVcbiI/ICBTaG91bGQgdGhpcyByYWlzZQotICAgICAgICAjIGEgUHJvdG9jb2xWaW9sYXRp
b24gZXhjZXB0aW9uPwotICAgICAgICBpZiBzZWxmLl90cmFpbGVyX2J1ZmZlci5zdGFydHN3aXRo
KCdkb25lXG4nKToKLSAgICAgICAgICAgIHNlbGYudW51c2VkX2RhdGEgPSBzZWxmLl90cmFpbGVy
X2J1ZmZlcltsZW4oJ2RvbmVcbicpOl0KLSAgICAgICAgICAgIHNlbGYuc3RhdGVfYWNjZXB0ID0g
c2VsZi5fc3RhdGVfYWNjZXB0X3JlYWRpbmdfdW51c2VkCi0gICAgICAgICAgICBzZWxmLmZpbmlz
aGVkX3JlYWRpbmcgPSBUcnVlCi0gICAgCi0gICAgZGVmIF9zdGF0ZV9hY2NlcHRfcmVhZGluZ191
bnVzZWQoc2VsZiwgYnl0ZXMpOgotICAgICAgICBzZWxmLnVudXNlZF9kYXRhICs9IGJ5dGVzCi0K
LSAgICBkZWYgX3N0YXRlX3JlYWRfbm9fZGF0YShzZWxmKToKLSAgICAgICAgcmV0dXJuICcnCi0K
LSAgICBkZWYgX3N0YXRlX3JlYWRfaW5fYnVmZmVyKHNlbGYpOgotICAgICAgICByZXN1bHQgPSBz
ZWxmLl9pbl9idWZmZXIKLSAgICAgICAgc2VsZi5faW5fYnVmZmVyID0gJycKLSAgICAgICAgcmV0
dXJuIHJlc3VsdAotCi0KLWNsYXNzIFNtYXJ0U2VydmVyU3RyZWFtTWVkaXVtKG9iamVjdCk6Ci0g
ICAgIiIiSGFuZGxlcyBzbWFydCBjb21tYW5kcyBjb21pbmcgb3ZlciBhIHN0cmVhbS4KLQotICAg
IFRoZSBzdHJlYW0gbWF5IGJlIGEgcGlwZSBjb25uZWN0ZWQgdG8gc3NoZCwgb3IgYSB0Y3Agc29j
a2V0LCBvciBhbgotICAgIGluLXByb2Nlc3MgZmlmbyBmb3IgdGVzdGluZy4KLQotICAgIE9uZSBp
bnN0YW5jZSBpcyBjcmVhdGVkIGZvciBlYWNoIGNvbm5lY3RlZCBjbGllbnQ7IGl0IGNhbiBzZXJ2
ZSBtdWx0aXBsZQotICAgIHJlcXVlc3RzIGluIHRoZSBsaWZldGltZSBvZiB0aGUgY29ubmVjdGlv
bi4KLQotICAgIFRoZSBzZXJ2ZXIgcGFzc2VzIHJlcXVlc3RzIHRocm91Z2ggdG8gYW4gdW5kZXJs
eWluZyBiYWNraW5nIHRyYW5zcG9ydCwgCi0gICAgd2hpY2ggd2lsbCB0eXBpY2FsbHkgYmUgYSBM
b2NhbFRyYW5zcG9ydCBsb29raW5nIGF0IHRoZSBzZXJ2ZXIncyBmaWxlc3lzdGVtLgotICAgICIi
IgotCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIGJhY2tpbmdfdHJhbnNwb3J0KToKLSAgICAgICAg
IiIiQ29uc3RydWN0IG5ldyBzZXJ2ZXIuCi0KLSAgICAgICAgOnBhcmFtIGJhY2tpbmdfdHJhbnNw
b3J0OiBUcmFuc3BvcnQgZm9yIHRoZSBkaXJlY3Rvcnkgc2VydmVkLgotICAgICAgICAiIiIKLSAg
ICAgICAgIyBiYWNraW5nX3RyYW5zcG9ydCBjb3VsZCBiZSBwYXNzZWQgdG8gc2VydmUgaW5zdGVh
ZCBvZiBfX2luaXRfXwotICAgICAgICBzZWxmLmJhY2tpbmdfdHJhbnNwb3J0ID0gYmFja2luZ190
cmFuc3BvcnQKLSAgICAgICAgc2VsZi5maW5pc2hlZCA9IEZhbHNlCi0KLSAgICBkZWYgc2VydmUo
c2VsZik6Ci0gICAgICAgICIiIlNlcnZlIHJlcXVlc3RzIHVudGlsIHRoZSBjbGllbnQgZGlzY29u
bmVjdHMuIiIiCi0gICAgICAgICMgS2VlcCBhIHJlZmVyZW5jZSB0byBzdGRlcnIgYmVjYXVzZSB0
aGUgc3lzIG1vZHVsZSdzIGdsb2JhbHMgZ2V0IHNldCB0bwotICAgICAgICAjIE5vbmUgZHVyaW5n
IGludGVycHJldGVyIHNodXRkb3duLgotICAgICAgICBmcm9tIHN5cyBpbXBvcnQgc3RkZXJyCi0g
ICAgICAgIHRyeToKLSAgICAgICAgICAgIHdoaWxlIG5vdCBzZWxmLmZpbmlzaGVkOgotICAgICAg
ICAgICAgICAgIHByb3RvY29sID0gU21hcnRTZXJ2ZXJSZXF1ZXN0UHJvdG9jb2xPbmUoc2VsZi5i
YWNraW5nX3RyYW5zcG9ydCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHNlbGYuX3dyaXRlX291dCkKLSAgICAgICAgICAgICAgICBzZWxm
Ll9zZXJ2ZV9vbmVfcmVxdWVzdChwcm90b2NvbCkKLSAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiwg
ZToKLSAgICAgICAgICAgIHN0ZGVyci53cml0ZSgiJXMgdGVybWluYXRpbmcgb24gZXhjZXB0aW9u
ICVzXG4iICUgKHNlbGYsIGUpKQotICAgICAgICAgICAgcmFpc2UKLQotICAgIGRlZiBfc2VydmVf
b25lX3JlcXVlc3Qoc2VsZiwgcHJvdG9jb2wpOgotICAgICAgICAiIiJSZWFkIG9uZSByZXF1ZXN0
IGZyb20gaW5wdXQsIHByb2Nlc3MsIHNlbmQgYmFjayBhIHJlc3BvbnNlLgotICAgICAgICAKLSAg
ICAgICAgOnBhcmFtIHByb3RvY29sOiBhIFNtYXJ0U2VydmVyUmVxdWVzdFByb3RvY29sLgotICAg
ICAgICAiIiIKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgc2VsZi5fc2VydmVfb25lX3JlcXVl
c3RfdW5ndWFyZGVkKHByb3RvY29sKQotICAgICAgICBleGNlcHQgS2V5Ym9hcmRJbnRlcnJ1cHQ6
Ci0gICAgICAgICAgICByYWlzZQotICAgICAgICBleGNlcHQgRXhjZXB0aW9uLCBlOgotICAgICAg
ICAgICAgc2VsZi50ZXJtaW5hdGVfZHVlX3RvX2Vycm9yKCkKLQotICAgIGRlZiB0ZXJtaW5hdGVf
ZHVlX3RvX2Vycm9yKHNlbGYpOgotICAgICAgICAiIiJDYWxsZWQgd2hlbiBhbiB1bmhhbmRsZWQg
ZXhjZXB0aW9uIGZyb20gdGhlIHByb3RvY29sIG9jY3Vycy4iIiIKLSAgICAgICAgcmFpc2UgTm90
SW1wbGVtZW50ZWRFcnJvcihzZWxmLnRlcm1pbmF0ZV9kdWVfdG9fZXJyb3IpCi0KLQotY2xhc3Mg
U21hcnRTZXJ2ZXJTb2NrZXRTdHJlYW1NZWRpdW0oU21hcnRTZXJ2ZXJTdHJlYW1NZWRpdW0pOgot
Ci0gICAgZGVmIF9faW5pdF9fKHNlbGYsIHNvY2ssIGJhY2tpbmdfdHJhbnNwb3J0KToKLSAgICAg
ICAgIiIiQ29uc3RydWN0b3IuCi0KLSAgICAgICAgOnBhcmFtIHNvY2s6IHRoZSBzb2NrZXQgdGhl
IHNlcnZlciB3aWxsIHJlYWQgZnJvbS4gIEl0IHdpbGwgYmUgcHV0Ci0gICAgICAgICAgICBpbnRv
IGJsb2NraW5nIG1vZGUuCi0gICAgICAgICIiIgotICAgICAgICBTbWFydFNlcnZlclN0cmVhbU1l
ZGl1bS5fX2luaXRfXyhzZWxmLCBiYWNraW5nX3RyYW5zcG9ydCkKLSAgICAgICAgc2VsZi5wdXNo
X2JhY2sgPSAnJwotICAgICAgICBzb2NrLnNldGJsb2NraW5nKFRydWUpCi0gICAgICAgIHNlbGYu
c29ja2V0ID0gc29jawotCi0gICAgZGVmIF9zZXJ2ZV9vbmVfcmVxdWVzdF91bmd1YXJkZWQoc2Vs
ZiwgcHJvdG9jb2wpOgotICAgICAgICB3aGlsZSBwcm90b2NvbC5uZXh0X3JlYWRfc2l6ZSgpOgot
ICAgICAgICAgICAgaWYgc2VsZi5wdXNoX2JhY2s6Ci0gICAgICAgICAgICAgICAgcHJvdG9jb2wu
YWNjZXB0X2J5dGVzKHNlbGYucHVzaF9iYWNrKQotICAgICAgICAgICAgICAgIHNlbGYucHVzaF9i
YWNrID0gJycKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgYnl0ZXMgPSBzZWxm
LnNvY2tldC5yZWN2KDQwOTYpCi0gICAgICAgICAgICAgICAgaWYgYnl0ZXMgPT0gJyc6Ci0gICAg
ICAgICAgICAgICAgICAgIHNlbGYuZmluaXNoZWQgPSBUcnVlCi0gICAgICAgICAgICAgICAgICAg
IHJldHVybgotICAgICAgICAgICAgICAgIHByb3RvY29sLmFjY2VwdF9ieXRlcyhieXRlcykKLSAg
ICAgICAgCi0gICAgICAgIHNlbGYucHVzaF9iYWNrID0gcHJvdG9jb2wuZXhjZXNzX2J1ZmZlcgot
ICAgIAotICAgIGRlZiB0ZXJtaW5hdGVfZHVlX3RvX2Vycm9yKHNlbGYpOgotICAgICAgICAiIiJD
YWxsZWQgd2hlbiBhbiB1bmhhbmRsZWQgZXhjZXB0aW9uIGZyb20gdGhlIHByb3RvY29sIG9jY3Vy
cy4iIiIKLSAgICAgICAgIyBUT0RPOiBUaGlzIHNob3VsZCBsb2cgdG8gYSBzZXJ2ZXIgbG9nIGZp
bGUsIGJ1dCBubyBzdWNoIHRoaW5nCi0gICAgICAgICMgZXhpc3RzIHlldC4gIEFuZHJldyBCZW5u
ZXR0cyAyMDA2LTA5LTI5LgotICAgICAgICBzZWxmLnNvY2tldC5jbG9zZSgpCi0gICAgICAgIHNl
bGYuZmluaXNoZWQgPSBUcnVlCi0KLSAgICBkZWYgX3dyaXRlX291dChzZWxmLCBieXRlcyk6Ci0g
ICAgICAgIHNlbGYuc29ja2V0LnNlbmRhbGwoYnl0ZXMpCi0KLQotY2xhc3MgU21hcnRTZXJ2ZXJQ
aXBlU3RyZWFtTWVkaXVtKFNtYXJ0U2VydmVyU3RyZWFtTWVkaXVtKToKLQotICAgIGRlZiBfX2lu
aXRfXyhzZWxmLCBpbl9maWxlLCBvdXRfZmlsZSwgYmFja2luZ190cmFuc3BvcnQpOgotICAgICAg
ICAiIiJDb25zdHJ1Y3QgbmV3IHNlcnZlci4KLQotICAgICAgICA6cGFyYW0gaW5fZmlsZTogUHl0
aG9uIGZpbGUgZnJvbSB3aGljaCByZXF1ZXN0cyBjYW4gYmUgcmVhZC4KLSAgICAgICAgOnBhcmFt
IG91dF9maWxlOiBQeXRob24gZmlsZSB0byB3cml0ZSByZXNwb25zZXMuCi0gICAgICAgIDpwYXJh
bSBiYWNraW5nX3RyYW5zcG9ydDogVHJhbnNwb3J0IGZvciB0aGUgZGlyZWN0b3J5IHNlcnZlZC4K
LSAgICAgICAgIiIiCi0gICAgICAgIFNtYXJ0U2VydmVyU3RyZWFtTWVkaXVtLl9faW5pdF9fKHNl
bGYsIGJhY2tpbmdfdHJhbnNwb3J0KQotICAgICAgICBpZiBzeXMucGxhdGZvcm0gPT0gJ3dpbjMy
JzoKLSAgICAgICAgICAgICMgZm9yY2UgYmluYXJ5IG1vZGUgZm9yIGZpbGVzCi0gICAgICAgICAg
ICBpbXBvcnQgbXN2Y3J0Ci0gICAgICAgICAgICBmb3IgZiBpbiAoaW5fZmlsZSwgb3V0X2ZpbGUp
OgotICAgICAgICAgICAgICAgIGZpbGVubyA9IGdldGF0dHIoZiwgJ2ZpbGVubycsIE5vbmUpCi0g
ICAgICAgICAgICAgICAgaWYgZmlsZW5vOgotICAgICAgICAgICAgICAgICAgICBtc3ZjcnQuc2V0
bW9kZShmaWxlbm8oKSwgb3MuT19CSU5BUlkpCi0gICAgICAgIHNlbGYuX2luID0gaW5fZmlsZQot
ICAgICAgICBzZWxmLl9vdXQgPSBvdXRfZmlsZQotCi0gICAgZGVmIF9zZXJ2ZV9vbmVfcmVxdWVz
dF91bmd1YXJkZWQoc2VsZiwgcHJvdG9jb2wpOgotICAgICAgICB3aGlsZSBUcnVlOgotICAgICAg
ICAgICAgYnl0ZXNfdG9fcmVhZCA9IHByb3RvY29sLm5leHRfcmVhZF9zaXplKCkKLSAgICAgICAg
ICAgIGlmIGJ5dGVzX3RvX3JlYWQgPT0gMDoKLSAgICAgICAgICAgICAgICAjIEZpbmlzaGVkIHNl
cnZpbmcgdGhpcyByZXF1ZXN0LgotICAgICAgICAgICAgICAgIHNlbGYuX291dC5mbHVzaCgpCi0g
ICAgICAgICAgICAgICAgcmV0dXJuCi0gICAgICAgICAgICBieXRlcyA9IHNlbGYuX2luLnJlYWQo
Ynl0ZXNfdG9fcmVhZCkKLSAgICAgICAgICAgIGlmIGJ5dGVzID09ICcnOgotICAgICAgICAgICAg
ICAgICMgQ29ubmVjdGlvbiBoYXMgYmVlbiBjbG9zZWQuCi0gICAgICAgICAgICAgICAgc2VsZi5m
aW5pc2hlZCA9IFRydWUKLSAgICAgICAgICAgICAgICBzZWxmLl9vdXQuZmx1c2goKQotICAgICAg
ICAgICAgICAgIHJldHVybgotICAgICAgICAgICAgcHJvdG9jb2wuYWNjZXB0X2J5dGVzKGJ5dGVz
KQotCi0gICAgZGVmIHRlcm1pbmF0ZV9kdWVfdG9fZXJyb3Ioc2VsZik6Ci0gICAgICAgICMgVE9E
TzogVGhpcyBzaG91bGQgbG9nIHRvIGEgc2VydmVyIGxvZyBmaWxlLCBidXQgbm8gc3VjaCB0aGlu
ZwotICAgICAgICAjIGV4aXN0cyB5ZXQuICBBbmRyZXcgQmVubmV0dHMgMjAwNi0wOS0yOS4KLSAg
ICAgICAgc2VsZi5fb3V0LmNsb3NlKCkKLSAgICAgICAgc2VsZi5maW5pc2hlZCA9IFRydWUKLQot
ICAgIGRlZiBfd3JpdGVfb3V0KHNlbGYsIGJ5dGVzKToKLSAgICAgICAgc2VsZi5fb3V0LndyaXRl
KGJ5dGVzKQotCi0KLWNsYXNzIFNtYXJ0U2VydmVyUmVzcG9uc2Uob2JqZWN0KToKLSAgICAiIiJS
ZXNwb25zZSBnZW5lcmF0ZWQgYnkgU21hcnRTZXJ2ZXJSZXF1ZXN0SGFuZGxlci4iIiIKLQotICAg
IGRlZiBfX2luaXRfXyhzZWxmLCBhcmdzLCBib2R5PU5vbmUpOgotICAgICAgICBzZWxmLmFyZ3Mg
PSBhcmdzCi0gICAgICAgIHNlbGYuYm9keSA9IGJvZHkKLQotIyBYWFg6IFRPRE86IENyZWF0ZSBh
IFNtYXJ0U2VydmVyUmVxdWVzdEhhbmRsZXIgd2hpY2ggd2lsbCB0YWtlIHRoZSByZXNwb25zaWJp
bGl0eQotIyBmb3IgZGVsaXZlcmluZyB0aGUgZGF0YSBmb3IgYSByZXF1ZXN0LiBUaGlzIGNvdWxk
IGJlIGRvbmUgd2l0aCBhcyB0aGUKLSMgU3RyZWFtU2VydmVyLCB0aG91Z2ggdGhhdCB3b3VsZCBj
cmVhdGUgY29uZmxhdGlvbiBiZXR3ZWVuIHJlcXVlc3QgYW5kIHJlc3BvbnNlCi0jIHdoaWNoIG1h
eSBiZSB1bmRlc2lyYWJsZS4KLQotCi1jbGFzcyBTbWFydFNlcnZlclJlcXVlc3RIYW5kbGVyKG9i
amVjdCk6Ci0gICAgIiIiUHJvdG9jb2wgbG9naWMgZm9yIHNtYXJ0IHNlcnZlci4KLSAgICAKLSAg
ICBUaGlzIGRvZXNuJ3QgaGFuZGxlIHNlcmlhbGl6YXRpb24gYXQgYWxsLCBpdCBqdXN0IHByb2Nl
c3NlcyByZXF1ZXN0cyBhbmQKLSAgICBjcmVhdGVzIHJlc3BvbnNlcy4KLSAgICAiIiIKLQotICAg
ICMgSU1QT1JUQU5UIEZPUiBJTVBMRU1FTlRPUlM6IEl0IGlzIGltcG9ydGFudCB0aGF0IFNtYXJ0
U2VydmVyUmVxdWVzdEhhbmRsZXIKLSAgICAjIG5vdCBjb250YWluIGVuY29kaW5nIG9yIGRlY29k
aW5nIGxvZ2ljIHRvIGFsbG93IHRoZSB3aXJlIHByb3RvY29sIHRvIHZhcnkKLSAgICAjIGZyb20g
dGhlIG9iamVjdCBwcm90b2NvbDogd2Ugd2lsbCB3YW50IHRvIHR3ZWFrIHRoZSB3aXJlIHByb3Rv
Y29sIHNlcGFyYXRlCi0gICAgIyBmcm9tIHRoZSBvYmplY3QgbW9kZWwsIGFuZCBpZGVhbGx5IHdl
IHdpbGwgYmUgYWJsZSB0byBkbyB0aGF0IHdpdGhvdXQKLSAgICAjIGhhdmluZyBhIFNtYXJ0U2Vy
dmVyUmVxdWVzdEhhbmRsZXIgc3ViY2xhc3MgZm9yIGVhY2ggd2lyZSBwcm90b2NvbCwgcmF0aGVy
Ci0gICAgIyBqdXN0IGEgUHJvdG9jb2wgc3ViY2xhc3MuCi0KLSAgICAjIFRPRE86IEJldHRlciB3
YXkgb2YgcmVwcmVzZW50aW5nIHRoZSBib2R5IGZvciBjb21tYW5kcyB0aGF0IHRha2UgaXQsCi0g
ICAgIyBhbmQgYWxsb3cgaXQgdG8gYmUgc3RyZWFtZWQgaW50byB0aGUgc2VydmVyLgotICAgIAot
ICAgIGRlZiBfX2luaXRfXyhzZWxmLCBiYWNraW5nX3RyYW5zcG9ydCk6Ci0gICAgICAgIHNlbGYu
X2JhY2tpbmdfdHJhbnNwb3J0ID0gYmFja2luZ190cmFuc3BvcnQKLSAgICAgICAgc2VsZi5fY29u
dmVydGVkX2NvbW1hbmQgPSBGYWxzZQotICAgICAgICBzZWxmLmZpbmlzaGVkX3JlYWRpbmcgPSBG
YWxzZQotICAgICAgICBzZWxmLl9ib2R5X2J5dGVzID0gJycKLSAgICAgICAgc2VsZi5yZXNwb25z
ZSA9IE5vbmUKLQotICAgIGRlZiBhY2NlcHRfYm9keShzZWxmLCBieXRlcyk6Ci0gICAgICAgICIi
IkFjY2VwdCBib2R5IGRhdGEuCi0KLSAgICAgICAgVGhpcyBzaG91bGQgYmUgb3ZlcnJpZGVuIGZv
ciBlYWNoIGNvbW1hbmQgdGhhdCBkZXNpcmVkIGJvZHkgZGF0YSB0bwotICAgICAgICBoYW5kbGUg
dGhlIHJpZ2h0IGZvcm1hdCBvZiB0aGF0IGRhdGEuIEkuZS4gcGxhaW4gYnl0ZXMsIGEgYnVuZGxl
IGV0Yy4KLQotICAgICAgICBUaGUgZGVzZXJpYWxpc2F0aW9uIGludG8gdGhhdCBmb3JtYXQgc2hv
dWxkIGJlIGRvbmUgaW4gdGhlIFByb3RvY29sCi0gICAgICAgIG9iamVjdC4gU2V0IHNlbGYuZGVz
aXJlZF9ib2R5X2Zvcm1hdCB0byB0aGUgZm9ybWF0IHlvdXIgbWV0aG9kIHdpbGwKLSAgICAgICAg
aGFuZGxlLgotICAgICAgICAiIiIKLSAgICAgICAgIyBkZWZhdWx0IGZhbGxiYWNrIGlzIHRvIGFj
Y3VtdWxhdGUgYnl0ZXMuCi0gICAgICAgIHNlbGYuX2JvZHlfYnl0ZXMgKz0gYnl0ZXMKLSAgICAg
ICAgCi0gICAgZGVmIF9lbmRfb2ZfYm9keV9oYW5kbGVyKHNlbGYpOgotICAgICAgICAiIiJBbiB1
bmltcGxlbWVudGVkIGVuZCBvZiBib2R5IGhhbmRsZXIuIiIiCi0gICAgICAgIHJhaXNlIE5vdElt
cGxlbWVudGVkRXJyb3Ioc2VsZi5fZW5kX29mX2JvZHlfaGFuZGxlcikKLSAgICAgICAgCi0gICAg
ZGVmIGRvX2hlbGxvKHNlbGYpOgotICAgICAgICAiIiJBbnN3ZXIgYSB2ZXJzaW9uIHJlcXVlc3Qg
d2l0aCBteSB2ZXJzaW9uLiIiIgotICAgICAgICByZXR1cm4gU21hcnRTZXJ2ZXJSZXNwb25zZSgo
J29rJywgJzEnKSkKLQotICAgIGRlZiBkb19oYXMoc2VsZiwgcmVscGF0aCk6Ci0gICAgICAgIHIg
PSBzZWxmLl9iYWNraW5nX3RyYW5zcG9ydC5oYXMocmVscGF0aCkgYW5kICd5ZXMnIG9yICdubycK
LSAgICAgICAgcmV0dXJuIFNtYXJ0U2VydmVyUmVzcG9uc2UoKHIsKSkKLQotICAgIGRlZiBkb19n
ZXQoc2VsZiwgcmVscGF0aCk6Ci0gICAgICAgIGJhY2tpbmdfYnl0ZXMgPSBzZWxmLl9iYWNraW5n
X3RyYW5zcG9ydC5nZXRfYnl0ZXMocmVscGF0aCkKLSAgICAgICAgcmV0dXJuIFNtYXJ0U2VydmVy
UmVzcG9uc2UoKCdvaycsKSwgYmFja2luZ19ieXRlcykKLQotICAgIGRlZiBfZGVzZXJpYWxpc2Vf
b3B0aW9uYWxfbW9kZShzZWxmLCBtb2RlKToKLSAgICAgICAgIyBYWFg6IEZJWE1FIHRoaXMgc2hv
dWxkIGJlIG9uIHRoZSBwcm90b2NvbCBvYmplY3QuCi0gICAgICAgIGlmIG1vZGUgPT0gJyc6Ci0g
ICAgICAgICAgICByZXR1cm4gTm9uZQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgcmV0dXJu
IGludChtb2RlKQotCi0gICAgZGVmIGRvX2FwcGVuZChzZWxmLCByZWxwYXRoLCBtb2RlKToKLSAg
ICAgICAgc2VsZi5fY29udmVydGVkX2NvbW1hbmQgPSBUcnVlCi0gICAgICAgIHNlbGYuX3JlbHBh
dGggPSByZWxwYXRoCi0gICAgICAgIHNlbGYuX21vZGUgPSBzZWxmLl9kZXNlcmlhbGlzZV9vcHRp
b25hbF9tb2RlKG1vZGUpCi0gICAgICAgIHNlbGYuX2VuZF9vZl9ib2R5X2hhbmRsZXIgPSBzZWxm
Ll9oYW5kbGVfZG9fYXBwZW5kX2VuZAotICAgIAotICAgIGRlZiBfaGFuZGxlX2RvX2FwcGVuZF9l
bmQoc2VsZik6Ci0gICAgICAgIG9sZF9sZW5ndGggPSBzZWxmLl9iYWNraW5nX3RyYW5zcG9ydC5h
cHBlbmRfYnl0ZXMoCi0gICAgICAgICAgICBzZWxmLl9yZWxwYXRoLCBzZWxmLl9ib2R5X2J5dGVz
LCBzZWxmLl9tb2RlKQotICAgICAgICBzZWxmLnJlc3BvbnNlID0gU21hcnRTZXJ2ZXJSZXNwb25z
ZSgoJ2FwcGVuZGVkJywgJyVkJyAlIG9sZF9sZW5ndGgpKQotCi0gICAgZGVmIGRvX2RlbGV0ZShz
ZWxmLCByZWxwYXRoKToKLSAgICAgICAgc2VsZi5fYmFja2luZ190cmFuc3BvcnQuZGVsZXRlKHJl
bHBhdGgpCi0KLSAgICBkZWYgZG9faXRlcl9maWxlc19yZWN1cnNpdmUoc2VsZiwgcmVscGF0aCk6
Ci0gICAgICAgIHRyYW5zcG9ydCA9IHNlbGYuX2JhY2tpbmdfdHJhbnNwb3J0LmNsb25lKHJlbHBh
dGgpCi0gICAgICAgIGZpbGVuYW1lcyA9IHRyYW5zcG9ydC5pdGVyX2ZpbGVzX3JlY3Vyc2l2ZSgp
Ci0gICAgICAgIHJldHVybiBTbWFydFNlcnZlclJlc3BvbnNlKCgnbmFtZXMnLCkgKyB0dXBsZShm
aWxlbmFtZXMpKQotCi0gICAgZGVmIGRvX2xpc3RfZGlyKHNlbGYsIHJlbHBhdGgpOgotICAgICAg
ICBmaWxlbmFtZXMgPSBzZWxmLl9iYWNraW5nX3RyYW5zcG9ydC5saXN0X2RpcihyZWxwYXRoKQot
ICAgICAgICByZXR1cm4gU21hcnRTZXJ2ZXJSZXNwb25zZSgoJ25hbWVzJywpICsgdHVwbGUoZmls
ZW5hbWVzKSkKLQotICAgIGRlZiBkb19ta2RpcihzZWxmLCByZWxwYXRoLCBtb2RlKToKLSAgICAg
ICAgc2VsZi5fYmFja2luZ190cmFuc3BvcnQubWtkaXIocmVscGF0aCwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fZGVzZXJpYWxpc2Vfb3B0aW9uYWxfbW9kZSht
b2RlKSkKLQotICAgIGRlZiBkb19tb3ZlKHNlbGYsIHJlbF9mcm9tLCByZWxfdG8pOgotICAgICAg
ICBzZWxmLl9iYWNraW5nX3RyYW5zcG9ydC5tb3ZlKHJlbF9mcm9tLCByZWxfdG8pCi0KLSAgICBk
ZWYgZG9fcHV0KHNlbGYsIHJlbHBhdGgsIG1vZGUpOgotICAgICAgICBzZWxmLl9jb252ZXJ0ZWRf
Y29tbWFuZCA9IFRydWUKLSAgICAgICAgc2VsZi5fcmVscGF0aCA9IHJlbHBhdGgKLSAgICAgICAg
c2VsZi5fbW9kZSA9IHNlbGYuX2Rlc2VyaWFsaXNlX29wdGlvbmFsX21vZGUobW9kZSkKLSAgICAg
ICAgc2VsZi5fZW5kX29mX2JvZHlfaGFuZGxlciA9IHNlbGYuX2hhbmRsZV9kb19wdXQKLQotICAg
IGRlZiBfaGFuZGxlX2RvX3B1dChzZWxmKToKLSAgICAgICAgc2VsZi5fYmFja2luZ190cmFuc3Bv
cnQucHV0X2J5dGVzKHNlbGYuX3JlbHBhdGgsCi0gICAgICAgICAgICAgICAgc2VsZi5fYm9keV9i
eXRlcywgc2VsZi5fbW9kZSkKLSAgICAgICAgc2VsZi5yZXNwb25zZSA9IFNtYXJ0U2VydmVyUmVz
cG9uc2UoKCdvaycsKSkKLQotICAgIGRlZiBfZGVzZXJpYWxpc2Vfb2Zmc2V0cyhzZWxmLCB0ZXh0
KToKLSAgICAgICAgIyBYWFg6IEZJWE1FIHRoaXMgc2hvdWxkIGJlIG9uIHRoZSBwcm90b2NvbCBv
YmplY3QuCi0gICAgICAgIG9mZnNldHMgPSBbXQotICAgICAgICBmb3IgbGluZSBpbiB0ZXh0LnNw
bGl0KCdcbicpOgotICAgICAgICAgICAgaWYgbm90IGxpbmU6Ci0gICAgICAgICAgICAgICAgY29u
dGludWUKLSAgICAgICAgICAgIHN0YXJ0LCBsZW5ndGggPSBsaW5lLnNwbGl0KCcsJykKLSAgICAg
ICAgICAgIG9mZnNldHMuYXBwZW5kKChpbnQoc3RhcnQpLCBpbnQobGVuZ3RoKSkpCi0gICAgICAg
IHJldHVybiBvZmZzZXRzCi0KLSAgICBkZWYgZG9fcHV0X25vbl9hdG9taWMoc2VsZiwgcmVscGF0
aCwgbW9kZSwgY3JlYXRlX3BhcmVudCwgZGlyX21vZGUpOgotICAgICAgICBzZWxmLl9jb252ZXJ0
ZWRfY29tbWFuZCA9IFRydWUKLSAgICAgICAgc2VsZi5fZW5kX29mX2JvZHlfaGFuZGxlciA9IHNl
bGYuX2hhbmRsZV9wdXRfbm9uX2F0b21pYwotICAgICAgICBzZWxmLl9yZWxwYXRoID0gcmVscGF0
aAotICAgICAgICBzZWxmLl9kaXJfbW9kZSA9IHNlbGYuX2Rlc2VyaWFsaXNlX29wdGlvbmFsX21v
ZGUoZGlyX21vZGUpCi0gICAgICAgIHNlbGYuX21vZGUgPSBzZWxmLl9kZXNlcmlhbGlzZV9vcHRp
b25hbF9tb2RlKG1vZGUpCi0gICAgICAgICMgYSBib29sZWFuIHdvdWxkIGJlIG5pY2VyIFhYWAot
ICAgICAgICBzZWxmLl9jcmVhdGVfcGFyZW50ID0gKGNyZWF0ZV9wYXJlbnQgPT0gJ1QnKQotCi0g
ICAgZGVmIF9oYW5kbGVfcHV0X25vbl9hdG9taWMoc2VsZik6Ci0gICAgICAgIHNlbGYuX2JhY2tp
bmdfdHJhbnNwb3J0LnB1dF9ieXRlc19ub25fYXRvbWljKHNlbGYuX3JlbHBhdGgsCi0gICAgICAg
ICAgICAgICAgc2VsZi5fYm9keV9ieXRlcywKLSAgICAgICAgICAgICAgICBtb2RlPXNlbGYuX21v
ZGUsCi0gICAgICAgICAgICAgICAgY3JlYXRlX3BhcmVudF9kaXI9c2VsZi5fY3JlYXRlX3BhcmVu
dCwKLSAgICAgICAgICAgICAgICBkaXJfbW9kZT1zZWxmLl9kaXJfbW9kZSkKLSAgICAgICAgc2Vs
Zi5yZXNwb25zZSA9IFNtYXJ0U2VydmVyUmVzcG9uc2UoKCdvaycsKSkKLQotICAgIGRlZiBkb19y
ZWFkdihzZWxmLCByZWxwYXRoKToKLSAgICAgICAgc2VsZi5fY29udmVydGVkX2NvbW1hbmQgPSBU
cnVlCi0gICAgICAgIHNlbGYuX2VuZF9vZl9ib2R5X2hhbmRsZXIgPSBzZWxmLl9oYW5kbGVfcmVh
ZHZfb2Zmc2V0cwotICAgICAgICBzZWxmLl9yZWxwYXRoID0gcmVscGF0aAotCi0gICAgZGVmIGVu
ZF9vZl9ib2R5KHNlbGYpOgotICAgICAgICAiIiJObyBtb3JlIGJvZHkgZGF0YSB3aWxsIGJlIHJl
Y2VpdmVkLiIiIgotICAgICAgICBzZWxmLl9ydW5faGFuZGxlcl9jb2RlKHNlbGYuX2VuZF9vZl9i
b2R5X2hhbmRsZXIsICgpLCB7fSkKLSAgICAgICAgIyBjYW5ub3QgcmVhZCBhZnRlciB0aGlzLgot
ICAgICAgICBzZWxmLmZpbmlzaGVkX3JlYWRpbmcgPSBUcnVlCi0KLSAgICBkZWYgX2hhbmRsZV9y
ZWFkdl9vZmZzZXRzKHNlbGYpOgotICAgICAgICAiIiJhY2NlcHQgb2Zmc2V0cyBmb3IgYSByZWFk
diByZXF1ZXN0LiIiIgotICAgICAgICBvZmZzZXRzID0gc2VsZi5fZGVzZXJpYWxpc2Vfb2Zmc2V0
cyhzZWxmLl9ib2R5X2J5dGVzKQotICAgICAgICBiYWNraW5nX2J5dGVzID0gJycuam9pbihieXRl
cyBmb3Igb2Zmc2V0LCBieXRlcyBpbgotICAgICAgICAgICAgc2VsZi5fYmFja2luZ190cmFuc3Bv
cnQucmVhZHYoc2VsZi5fcmVscGF0aCwgb2Zmc2V0cykpCi0gICAgICAgIHNlbGYucmVzcG9uc2Ug
PSBTbWFydFNlcnZlclJlc3BvbnNlKCgncmVhZHYnLCksIGJhY2tpbmdfYnl0ZXMpCi0gICAgICAg
IAotICAgIGRlZiBkb19yZW5hbWUoc2VsZiwgcmVsX2Zyb20sIHJlbF90byk6Ci0gICAgICAgIHNl
bGYuX2JhY2tpbmdfdHJhbnNwb3J0LnJlbmFtZShyZWxfZnJvbSwgcmVsX3RvKQotCi0gICAgZGVm
IGRvX3JtZGlyKHNlbGYsIHJlbHBhdGgpOgotICAgICAgICBzZWxmLl9iYWNraW5nX3RyYW5zcG9y
dC5ybWRpcihyZWxwYXRoKQotCi0gICAgZGVmIGRvX3N0YXQoc2VsZiwgcmVscGF0aCk6Ci0gICAg
ICAgIHN0YXQgPSBzZWxmLl9iYWNraW5nX3RyYW5zcG9ydC5zdGF0KHJlbHBhdGgpCi0gICAgICAg
IHJldHVybiBTbWFydFNlcnZlclJlc3BvbnNlKCgnc3RhdCcsIHN0cihzdGF0LnN0X3NpemUpLCBv
Y3Qoc3RhdC5zdF9tb2RlKSkpCi0gICAgICAgIAotICAgIGRlZiBkb19nZXRfYnVuZGxlKHNlbGYs
IHBhdGgsIHJldmlzaW9uX2lkKToKLSAgICAgICAgIyBvcGVuIHRyYW5zcG9ydCByZWxhdGl2ZSB0
byBvdXIgYmFzZQotICAgICAgICB0ID0gc2VsZi5fYmFja2luZ190cmFuc3BvcnQuY2xvbmUocGF0
aCkKLSAgICAgICAgY29udHJvbCwgZXh0cmFfcGF0aCA9IGJ6cmRpci5CenJEaXIub3Blbl9jb250
YWluaW5nX2Zyb21fdHJhbnNwb3J0KHQpCi0gICAgICAgIHJlcG8gPSBjb250cm9sLm9wZW5fcmVw
b3NpdG9yeSgpCi0gICAgICAgIHRtcGYgPSB0ZW1wZmlsZS5UZW1wb3JhcnlGaWxlKCkKLSAgICAg
ICAgYmFzZV9yZXZpc2lvbiA9IHJldmlzaW9uLk5VTExfUkVWSVNJT04KLSAgICAgICAgd3JpdGVf
YnVuZGxlKHJlcG8sIHJldmlzaW9uX2lkLCBiYXNlX3JldmlzaW9uLCB0bXBmKQotICAgICAgICB0
bXBmLnNlZWsoMCkKLSAgICAgICAgcmV0dXJuIFNtYXJ0U2VydmVyUmVzcG9uc2UoKCksIHRtcGYu
cmVhZCgpKQotCi0gICAgZGVmIGRpc3BhdGNoX2NvbW1hbmQoc2VsZiwgY21kLCBhcmdzKToKLSAg
ICAgICAgIiIiRGVwcmVjYXRlZCBjb21wYXRpYmlsaXR5IG1ldGhvZC4iIiIgIyBYWFggWFhYCi0g
ICAgICAgIGZ1bmMgPSBnZXRhdHRyKHNlbGYsICdkb18nICsgY21kLCBOb25lKQotICAgICAgICBp
ZiBmdW5jIGlzIE5vbmU6Ci0gICAgICAgICAgICByYWlzZSBlcnJvcnMuU21hcnRQcm90b2NvbEVy
cm9yKCJiYWQgcmVxdWVzdCAlciIgJSAoY21kLCkpCi0gICAgICAgIHNlbGYuX3J1bl9oYW5kbGVy
X2NvZGUoZnVuYywgYXJncywge30pCi0KLSAgICBkZWYgX3J1bl9oYW5kbGVyX2NvZGUoc2VsZiwg
Y2FsbGFibGUsIGFyZ3MsIGt3YXJncyk6Ci0gICAgICAgICIiIlJ1biBzb21lIGhhbmRsZXIgc3Bl
Y2lmaWMgY29kZSAnY2FsbGFibGUnLgotCi0gICAgICAgIElmIGEgcmVzdWx0IGlzIHJldHVybmVk
LCBpdCBpcyBjb25zaWRlcmVkIHRvIGJlIHRoZSBjb21tYW5kcyByZXNwb25zZSwKLSAgICAgICAg
YW5kIGZpbmlzaGVkX3JlYWRpbmcgaXMgc2V0IHRydWUsIGFuZCBpdHMgYXNzaWduZWQgdG8gc2Vs
Zi5yZXNwb25zZS4KLQotICAgICAgICBBbnkgZXhjZXB0aW9ucyBjYXVnaHQgYXJlIHRyYW5zbGF0
ZWQgYW5kIGEgcmVzcG9uc2Ugb2JqZWN0IGNyZWF0ZWQKLSAgICAgICAgZnJvbSB0aGVtLgotICAg
ICAgICAiIiIKLSAgICAgICAgcmVzdWx0ID0gc2VsZi5fY2FsbF9jb252ZXJ0aW5nX2Vycm9ycyhj
YWxsYWJsZSwgYXJncywga3dhcmdzKQotICAgICAgICBpZiByZXN1bHQgaXMgbm90IE5vbmU6Ci0g
ICAgICAgICAgICBzZWxmLnJlc3BvbnNlID0gcmVzdWx0Ci0gICAgICAgICAgICBzZWxmLmZpbmlz
aGVkX3JlYWRpbmcgPSBUcnVlCi0gICAgICAgICMgaGFuZGxlIHVuY29udmVydGVkIGNvbW1hbmRz
Ci0gICAgICAgIGlmIG5vdCBzZWxmLl9jb252ZXJ0ZWRfY29tbWFuZDoKLSAgICAgICAgICAgIHNl
bGYuZmluaXNoZWRfcmVhZGluZyA9IFRydWUKLSAgICAgICAgICAgIGlmIHJlc3VsdCBpcyBOb25l
OgotICAgICAgICAgICAgICAgIHNlbGYucmVzcG9uc2UgPSBTbWFydFNlcnZlclJlc3BvbnNlKCgn
b2snLCkpCi0KLSAgICBkZWYgX2NhbGxfY29udmVydGluZ19lcnJvcnMoc2VsZiwgY2FsbGFibGUs
IGFyZ3MsIGt3YXJncyk6Ci0gICAgICAgICIiIkNhbGwgY2FsbGFibGUgY29udmVydGluZyBlcnJv
cnMgdG8gUmVzcG9uc2Ugb2JqZWN0cy4iIiIKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgcmV0
dXJuIGNhbGxhYmxlKCphcmdzLCAqKmt3YXJncykKLSAgICAgICAgZXhjZXB0IGVycm9ycy5Ob1N1
Y2hGaWxlLCBlOgotICAgICAgICAgICAgcmV0dXJuIFNtYXJ0U2VydmVyUmVzcG9uc2UoKCdOb1N1
Y2hGaWxlJywgZS5wYXRoKSkKLSAgICAgICAgZXhjZXB0IGVycm9ycy5GaWxlRXhpc3RzLCBlOgot
ICAgICAgICAgICAgcmV0dXJuIFNtYXJ0U2VydmVyUmVzcG9uc2UoKCdGaWxlRXhpc3RzJywgZS5w
YXRoKSkKLSAgICAgICAgZXhjZXB0IGVycm9ycy5EaXJlY3RvcnlOb3RFbXB0eSwgZToKLSAgICAg
ICAgICAgIHJldHVybiBTbWFydFNlcnZlclJlc3BvbnNlKCgnRGlyZWN0b3J5Tm90RW1wdHknLCBl
LnBhdGgpKQotICAgICAgICBleGNlcHQgZXJyb3JzLlNob3J0UmVhZHZFcnJvciwgZToKLSAgICAg
ICAgICAgIHJldHVybiBTbWFydFNlcnZlclJlc3BvbnNlKCgnU2hvcnRSZWFkdkVycm9yJywKLSAg
ICAgICAgICAgICAgICBlLnBhdGgsIHN0cihlLm9mZnNldCksIHN0cihlLmxlbmd0aCksIHN0cihl
LmFjdHVhbCkpKQotICAgICAgICBleGNlcHQgVW5pY29kZUVycm9yLCBlOgotICAgICAgICAgICAg
IyBJZiBpdCBpcyBhIERlY29kZUVycm9yLCB0aGFuIG1vc3QgbGlrZWx5IHdlIGFyZSBzdGFydGlu
ZwotICAgICAgICAgICAgIyB3aXRoIGEgcGxhaW4gc3RyaW5nCi0gICAgICAgICAgICBzdHJfb3Jf
dW5pY29kZSA9IGUub2JqZWN0Ci0gICAgICAgICAgICBpZiBpc2luc3RhbmNlKHN0cl9vcl91bmlj
b2RlLCB1bmljb2RlKToKLSAgICAgICAgICAgICAgICAjIFhYWDogVVRGLTggbWlnaHQgaGF2ZSBc
eDAxIChvdXIgc2VwZXJhdG9yIGJ5dGUpIGluIGl0LiAgV2UKLSAgICAgICAgICAgICAgICAjIHNo
b3VsZCBlc2NhcGUgaXQgc29tZWhvdy4KLSAgICAgICAgICAgICAgICB2YWwgPSAndTonICsgc3Ry
X29yX3VuaWNvZGUuZW5jb2RlKCd1dGYtOCcpCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAg
ICAgICAgIHZhbCA9ICdzOicgKyBzdHJfb3JfdW5pY29kZS5lbmNvZGUoJ2Jhc2U2NCcpCi0gICAg
ICAgICAgICAjIFRoaXMgaGFuZGxlcyBVbmljb2RlRW5jb2RlRXJyb3Igb3IgVW5pY29kZURlY29k
ZUVycm9yCi0gICAgICAgICAgICByZXR1cm4gU21hcnRTZXJ2ZXJSZXNwb25zZSgoZS5fX2NsYXNz
X18uX19uYW1lX18sCi0gICAgICAgICAgICAgICAgICAgIGUuZW5jb2RpbmcsIHZhbCwgc3RyKGUu
c3RhcnQpLCBzdHIoZS5lbmQpLCBlLnJlYXNvbikpCi0gICAgICAgIGV4Y2VwdCBlcnJvcnMuVHJh
bnNwb3J0Tm90UG9zc2libGUsIGU6Ci0gICAgICAgICAgICBpZiBlLm1zZyA9PSAicmVhZG9ubHkg
dHJhbnNwb3J0IjoKLSAgICAgICAgICAgICAgICByZXR1cm4gU21hcnRTZXJ2ZXJSZXNwb25zZSgo
J1JlYWRPbmx5RXJyb3InLCApKQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBy
YWlzZQotCi0KLWNsYXNzIFNtYXJ0VENQU2VydmVyKG9iamVjdCk6Ci0gICAgIiIiTGlzdGVucyBv
biBhIFRDUCBzb2NrZXQgYW5kIGFjY2VwdHMgY29ubmVjdGlvbnMgZnJvbSBzbWFydCBjbGllbnRz
Ci0KLSAgICBob29rczogQW4gaW5zdGFuY2Ugb2YgU21hcnRTZXJ2ZXJIb29rcy4KLSAgICAiIiIK
LQotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBiYWNraW5nX3RyYW5zcG9ydCwgaG9zdD0nMTI3LjAu
MC4xJywgcG9ydD0wKToKLSAgICAgICAgIiIiQ29uc3RydWN0IGEgbmV3IHNlcnZlci4KLQotICAg
ICAgICBUbyBhY3R1YWxseSBzdGFydCBpdCBydW5uaW5nLCBjYWxsIGVpdGhlciBzdGFydF9iYWNr
Z3JvdW5kX3RocmVhZCBvcgotICAgICAgICBzZXJ2ZS4KLQotICAgICAgICA6cGFyYW0gaG9zdDog
TmFtZSBvZiB0aGUgaW50ZXJmYWNlIHRvIGxpc3RlbiBvbi4KLSAgICAgICAgOnBhcmFtIHBvcnQ6
IFRDUCBwb3J0IHRvIGxpc3RlbiBvbiwgb3IgMCB0byBhbGxvY2F0ZSBhIHRyYW5zaWVudCBwb3J0
LgotICAgICAgICAiIiIKLSAgICAgICAgIyBsZXQgY29ubmVjdGlvbnMgdGltZW91dCBzbyB0aGF0
IHdlIGdldCBhIGNoYW5jZSB0byB0ZXJtaW5hdGUKLSAgICAgICAgIyBLZWVwIGEgcmVmZXJlbmNl
IHRvIHRoZSBleGNlcHRpb25zIHdlIHdhbnQgdG8gY2F0Y2ggYmVjYXVzZSB0aGUgc29ja2V0Ci0g
ICAgICAgICMgbW9kdWxlJ3MgZ2xvYmFscyBnZXQgc2V0IHRvIE5vbmUgZHVyaW5nIGludGVycHJl
dGVyIHNodXRkb3duLgotICAgICAgICBmcm9tIHNvY2tldCBpbXBvcnQgdGltZW91dCBhcyBzb2Nr
ZXRfdGltZW91dAotICAgICAgICBmcm9tIHNvY2tldCBpbXBvcnQgZXJyb3IgYXMgc29ja2V0X2Vy
cm9yCi0gICAgICAgIHNlbGYuX3NvY2tldF9lcnJvciA9IHNvY2tldF9lcnJvcgotICAgICAgICBz
ZWxmLl9zb2NrZXRfdGltZW91dCA9IHNvY2tldF90aW1lb3V0Ci0gICAgICAgIHNlbGYuX3NlcnZl
cl9zb2NrZXQgPSBzb2NrZXQuc29ja2V0KCkKLSAgICAgICAgc2VsZi5fc2VydmVyX3NvY2tldC5i
aW5kKChob3N0LCBwb3J0KSkKLSAgICAgICAgc2VsZi5fc29ja25hbWUgPSBzZWxmLl9zZXJ2ZXJf
c29ja2V0LmdldHNvY2tuYW1lKCkKLSAgICAgICAgc2VsZi5wb3J0ID0gc2VsZi5fc29ja25hbWVb
MV0KLSAgICAgICAgc2VsZi5fc2VydmVyX3NvY2tldC5saXN0ZW4oMSkKLSAgICAgICAgc2VsZi5f
c2VydmVyX3NvY2tldC5zZXR0aW1lb3V0KDEpCi0gICAgICAgIHNlbGYuYmFja2luZ190cmFuc3Bv
cnQgPSBiYWNraW5nX3RyYW5zcG9ydAotICAgICAgICBzZWxmLl9zdGFydGVkID0gdGhyZWFkaW5n
LkV2ZW50KCkKLSAgICAgICAgc2VsZi5fc3RvcHBlZCA9IHRocmVhZGluZy5FdmVudCgpCi0KLSAg
ICBkZWYgc2VydmUoc2VsZik6Ci0gICAgICAgIHNlbGYuX3Nob3VsZF90ZXJtaW5hdGUgPSBGYWxz
ZQotICAgICAgICBmb3IgaG9vayBpbiBTbWFydFRDUFNlcnZlci5ob29rc1snc2VydmVyX3N0YXJ0
ZWQnXToKLSAgICAgICAgICAgIGhvb2soc2VsZi5iYWNraW5nX3RyYW5zcG9ydC5iYXNlLCBzZWxm
LmdldF91cmwoKSkKLSAgICAgICAgc2VsZi5fc3RhcnRlZC5zZXQoKQotICAgICAgICB0cnk6Ci0g
ICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgd2hpbGUgbm90IHNlbGYuX3Nob3VsZF90
ZXJtaW5hdGU6Ci0gICAgICAgICAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbm4sIGNsaWVudF9hZGRyID0gc2VsZi5fc2VydmVyX3NvY2tldC5hY2NlcHQoKQotICAg
ICAgICAgICAgICAgICAgICBleGNlcHQgc2VsZi5fc29ja2V0X3RpbWVvdXQ6Ci0gICAgICAgICAg
ICAgICAgICAgICAgICAjIGp1c3QgY2hlY2sgaWYgd2UncmUgYXNrZWQgdG8gc3RvcAotICAgICAg
ICAgICAgICAgICAgICAgICAgcGFzcwotICAgICAgICAgICAgICAgICAgICBleGNlcHQgc2VsZi5f
c29ja2V0X2Vycm9yLCBlOgotICAgICAgICAgICAgICAgICAgICAgICAgIyBpZiB0aGUgc29ja2V0
IGlzIGNsb3NlZCBieSBzdG9wX2JhY2tncm91bmRfdGhyZWFkCi0gICAgICAgICAgICAgICAgICAg
ICAgICAjIHdlIG1pZ2h0IGdldCBhIEVCQURGIGhlcmUsIGFueSBvdGhlciBzb2NrZXQgZXJyb3Jz
Ci0gICAgICAgICAgICAgICAgICAgICAgICAjIHNob3VsZCBnZXQgbG9nZ2VkLgotICAgICAgICAg
ICAgICAgICAgICAgICAgaWYgZS5hcmdzWzBdICE9IGVycm5vLkVCQURGOgotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHRyYWNlLndhcm5pbmcoImxpc3RlbmluZyBzb2NrZXQgZXJyb3I6ICVz
IiwgZSkKLSAgICAgICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgICAg
IHNlbGYuc2VydmVfY29ubihjb25uKQotICAgICAgICAgICAgZXhjZXB0IEtleWJvYXJkSW50ZXJy
dXB0OgotICAgICAgICAgICAgICAgICMgZG9udCBsb2cgd2hlbiBDVFJMLUMnZC4KLSAgICAgICAg
ICAgICAgICByYWlzZQotICAgICAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiwgZToKLSAgICAgICAg
ICAgICAgICB0cmFjZS5lcnJvcigiVW5oYW5kbGVkIHNtYXJ0IHNlcnZlciBlcnJvci4iKQotICAg
ICAgICAgICAgICAgIHRyYWNlLmxvZ19leGNlcHRpb25fcXVpZXRseSgpCi0gICAgICAgICAgICAg
ICAgcmFpc2UKLSAgICAgICAgZmluYWxseToKLSAgICAgICAgICAgIHNlbGYuX3N0b3BwZWQuc2V0
KCkKLSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICAjIGVuc3VyZSB0aGUgc2VydmVy
IHNvY2tldCBpcyBjbG9zZWQuCi0gICAgICAgICAgICAgICAgc2VsZi5fc2VydmVyX3NvY2tldC5j
bG9zZSgpCi0gICAgICAgICAgICBleGNlcHQgc2VsZi5fc29ja2V0X2Vycm9yOgotICAgICAgICAg
ICAgICAgICMgaWdub3JlIGVycm9ycyBvbiBjbG9zZQotICAgICAgICAgICAgICAgIHBhc3MKLSAg
ICAgICAgICAgIGZvciBob29rIGluIFNtYXJ0VENQU2VydmVyLmhvb2tzWydzZXJ2ZXJfc3RvcHBl
ZCddOgotICAgICAgICAgICAgICAgIGhvb2soc2VsZi5iYWNraW5nX3RyYW5zcG9ydC5iYXNlLCBz
ZWxmLmdldF91cmwoKSkKLQotICAgIGRlZiBnZXRfdXJsKHNlbGYpOgotICAgICAgICAiIiJSZXR1
cm4gdGhlIHVybCBvZiB0aGUgc2VydmVyIiIiCi0gICAgICAgIHJldHVybiAiYnpyOi8vJXM6JWQv
IiAlIHNlbGYuX3NvY2tuYW1lCi0KLSAgICBkZWYgc2VydmVfY29ubihzZWxmLCBjb25uKToKLSAg
ICAgICAgIyBGb3IgV0lOMzIsIHdoZXJlIHRoZSB0aW1lb3V0IHZhbHVlIGZyb20gdGhlIGxpc3Rl
bmluZyBzb2NrZXQKLSAgICAgICAgIyBwcm9wb2dhdGVzIHRvIHRoZSBuZXdseSBhY2NlcHRlZCBz
b2NrZXQuCi0gICAgICAgIGNvbm4uc2V0YmxvY2tpbmcoVHJ1ZSkKLSAgICAgICAgY29ubi5zZXRz
b2Nrb3B0KHNvY2tldC5JUFBST1RPX1RDUCwgc29ja2V0LlRDUF9OT0RFTEFZLCAxKQotICAgICAg
ICBoYW5kbGVyID0gU21hcnRTZXJ2ZXJTb2NrZXRTdHJlYW1NZWRpdW0oY29ubiwgc2VsZi5iYWNr
aW5nX3RyYW5zcG9ydCkKLSAgICAgICAgY29ubmVjdGlvbl90aHJlYWQgPSB0aHJlYWRpbmcuVGhy
ZWFkKE5vbmUsIGhhbmRsZXIuc2VydmUsIG5hbWU9J3NtYXJ0LXNlcnZlci1jaGlsZCcpCi0gICAg
ICAgIGNvbm5lY3Rpb25fdGhyZWFkLnNldERhZW1vbihUcnVlKQotICAgICAgICBjb25uZWN0aW9u
X3RocmVhZC5zdGFydCgpCi0KLSAgICBkZWYgc3RhcnRfYmFja2dyb3VuZF90aHJlYWQoc2VsZik6
Ci0gICAgICAgIHNlbGYuX3N0YXJ0ZWQuY2xlYXIoKQotICAgICAgICBzZWxmLl9zZXJ2ZXJfdGhy
ZWFkID0gdGhyZWFkaW5nLlRocmVhZChOb25lLAotICAgICAgICAgICAgICAgIHNlbGYuc2VydmUs
Ci0gICAgICAgICAgICAgICAgbmFtZT0nc2VydmVyLScgKyBzZWxmLmdldF91cmwoKSkKLSAgICAg
ICAgc2VsZi5fc2VydmVyX3RocmVhZC5zZXREYWVtb24oVHJ1ZSkKLSAgICAgICAgc2VsZi5fc2Vy
dmVyX3RocmVhZC5zdGFydCgpCi0gICAgICAgIHNlbGYuX3N0YXJ0ZWQud2FpdCgpCi0KLSAgICBk
ZWYgc3RvcF9iYWNrZ3JvdW5kX3RocmVhZChzZWxmKToKLSAgICAgICAgc2VsZi5fc3RvcHBlZC5j
bGVhcigpCi0gICAgICAgICMgdGVsbCB0aGUgbWFpbiBsb29wIHRvIHF1aXQgb24gdGhlIG5leHQg
aXRlcmF0aW9uLgotICAgICAgICBzZWxmLl9zaG91bGRfdGVybWluYXRlID0gVHJ1ZQotICAgICAg
ICAjIGNsb3NlIHRoZSBzb2NrZXQgLSBnaXZlcyBlcnJvciB0byBjb25uZWN0aW9ucyBmcm9tIGhl
cmUgb24gaW4sCi0gICAgICAgICMgcmF0aGVyIHRoYW4gYSBjb25uZWN0aW9uIHJlc2V0IGVycm9y
IHRvIGNvbm5lY3Rpb25zIG1hZGUgZHVyaW5nCi0gICAgICAgICMgdGhlIHBlcmlvZCBiZXR3ZWVu
IHNldHRpbmcgX3Nob3VsZF90ZXJtaW5hdGUgPSBUcnVlIGFuZCAKLSAgICAgICAgIyB0aGUgY3Vy
cmVudCByZXF1ZXN0IGNvbXBsZXRpbmcvYWJvcnRpbmcuIEl0IG1heSBhbHNvIGJyZWFrIG91dCB0
aGUKLSAgICAgICAgIyBtYWluIGxvb3AgaWYgaXQgd2FzIGN1cnJlbnRseSBpbiBhY2NlcHQoKSAo
b24gc29tZSBwbGF0Zm9ybXMpLgotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBzZWxmLl9zZXJ2
ZXJfc29ja2V0LmNsb3NlKCkKLSAgICAgICAgZXhjZXB0IHNlbGYuX3NvY2tldF9lcnJvcjoKLSAg
ICAgICAgICAgICMgaWdub3JlIGVycm9ycyBvbiBjbG9zZQotICAgICAgICAgICAgcGFzcwotICAg
ICAgICBpZiBub3Qgc2VsZi5fc3RvcHBlZC5pc1NldCgpOgotICAgICAgICAgICAgIyBzZXJ2ZXIg
aGFzIG5vdCBzdG9wcGVkICh0aG91Z2ggaXQgbWF5IGJlIHN0b3BwaW5nKQotICAgICAgICAgICAg
IyBpdHMgbGlrZWx5IGluIGFjY2VwdCgpLCBzbyBnaXZlIGl0IGEgY29ubmVjdGlvbgotICAgICAg
ICAgICAgdGVtcF9zb2NrZXQgPSBzb2NrZXQuc29ja2V0KCkKLSAgICAgICAgICAgIHRlbXBfc29j
a2V0LnNldHNvY2tvcHQoc29ja2V0LklQUFJPVE9fVENQLCBzb2NrZXQuVENQX05PREVMQVksIDEp
Ci0gICAgICAgICAgICBpZiBub3QgdGVtcF9zb2NrZXQuY29ubmVjdF9leChzZWxmLl9zb2NrbmFt
ZSk6Ci0gICAgICAgICAgICAgICAgIyBhbmQgY2xvc2UgaXQgaW1tZWRpYXRlbHk6IHdlIGRvbnQg
Y2hvb3NlIHRvIHNlbmQgYW55IHJlcXVlc3RzLgotICAgICAgICAgICAgICAgIHRlbXBfc29ja2V0
LmNsb3NlKCkKLSAgICAgICAgc2VsZi5fc3RvcHBlZC53YWl0KCkKLSAgICAgICAgc2VsZi5fc2Vy
dmVyX3RocmVhZC5qb2luKCkKLQotCi1jbGFzcyBTbWFydFNlcnZlckhvb2tzKEhvb2tzKToKLSAg
ICAiIiJIb29rcyBmb3IgdGhlIHNtYXJ0IHNlcnZlci4iIiIKLQotICAgIGRlZiBfX2luaXRfXyhz
ZWxmKToKLSAgICAgICAgIiIiQ3JlYXRlIHRoZSBkZWZhdWx0IGhvb2tzLgotCi0gICAgICAgIFRo
ZXNlIGFyZSBhbGwgZW1wdHkgaW5pdGlhbGx5LCBiZWNhdXNlIGJ5IGRlZmF1bHQgbm90aGluZyBz
aG91bGQgZ2V0Ci0gICAgICAgIG5vdGlmaWVkLgotICAgICAgICAiIiIKLSAgICAgICAgSG9va3Mu
X19pbml0X18oc2VsZikKLSAgICAgICAgIyBJbnRyb2R1Y2VkIGluIDAuMTY6Ci0gICAgICAgICMg
aW52b2tlZCB3aGVuZXZlciB0aGUgc2VydmVyIHN0YXJ0cyBzZXJ2aW5nIGEgZGlyZWN0b3J5Lgot
ICAgICAgICAjIFRoZSBhcGkgc2lnbmF0dXJlIGlzIChiYWNraW5nIHVybCwgcHVibGljIHVybCku
Ci0gICAgICAgIHNlbGZbJ3NlcnZlcl9zdGFydGVkJ10gPSBbXQotICAgICAgICAjIEludHJvZHVj
ZWQgaW4gMC4xNjoKLSAgICAgICAgIyBpbnZva2VkIHdoZW5ldmVyIHRoZSBzZXJ2ZXIgc3RvcHMg
c2VydmluZyBhIGRpcmVjdG9yeS4KLSAgICAgICAgIyBUaGUgYXBpIHNpZ25hdHVyZSBpcyAoYmFj
a2luZyB1cmwsIHB1YmxpYyB1cmwpLgotICAgICAgICBzZWxmWydzZXJ2ZXJfc3RvcHBlZCddID0g
W10KLQotU21hcnRUQ1BTZXJ2ZXIuaG9va3MgPSBTbWFydFNlcnZlckhvb2tzKCkKLQotCi1jbGFz
cyBTbWFydFRDUFNlcnZlcl9mb3JfdGVzdGluZyhTbWFydFRDUFNlcnZlcik6Ci0gICAgIiIiU2Vy
dmVyIHN1aXRhYmxlIGZvciB1c2UgYnkgdHJhbnNwb3J0IHRlc3RzLgotICAgIAotICAgIFRoaXMg
c2VydmVyIGlzIGJhY2tlZCBieSB0aGUgcHJvY2VzcydzIGN3ZC4KLSAgICAiIiIKLQotICAgIGRl
ZiBfX2luaXRfXyhzZWxmKToKLSAgICAgICAgc2VsZi5faG9tZWRpciA9IHVybHV0aWxzLmxvY2Fs
X3BhdGhfdG9fdXJsKG9zLmdldGN3ZCgpKVs3Ol0KLSAgICAgICAgIyBUaGUgc2VydmVyIGlzIHNl
dCB1cCBieSBkZWZhdWx0IGxpa2UgZm9yIHNzaCBhY2Nlc3M6IHRoZSBjbGllbnQKLSAgICAgICAg
IyBwYXNzZXMgZmlsZXN5c3RlbS1hYnNvbHV0ZSBwYXRoczsgdGhlcmVmb3JlIHRoZSBzZXJ2ZXIg
bXVzdCBsb29rCi0gICAgICAgICMgdGhlbSB1cCByZWxhdGl2ZSB0byB0aGUgcm9vdCBkaXJlY3Rv
cnkuICBpdCBtaWdodCBiZSBiZXR0ZXIgdG8gYWN0Ci0gICAgICAgICMgYSBwdWJsaWMgc2VydmVy
IGFuZCBoYXZlIHRoZSBzZXJ2ZXIgcmV3cml0ZSBwYXRocyBpbnRvIHRoZSB0ZXN0Ci0gICAgICAg
ICMgZGlyZWN0b3J5LgotICAgICAgICBTbWFydFRDUFNlcnZlci5fX2luaXRfXyhzZWxmLAotICAg
ICAgICAgICAgdHJhbnNwb3J0LmdldF90cmFuc3BvcnQodXJsdXRpbHMubG9jYWxfcGF0aF90b191
cmwoJy8nKSkpCi0gICAgICAgIAotICAgIGRlZiBnZXRfYmFja2luZ190cmFuc3BvcnQoc2VsZiwg
YmFja2luZ190cmFuc3BvcnRfc2VydmVyKToKLSAgICAgICAgIiIiR2V0IGEgYmFja2luZyB0cmFu
c3BvcnQgZnJvbSBhIHNlcnZlciB3ZSBhcmUgZGVjb3JhdGluZy4iIiIKLSAgICAgICAgcmV0dXJu
IHRyYW5zcG9ydC5nZXRfdHJhbnNwb3J0KGJhY2tpbmdfdHJhbnNwb3J0X3NlcnZlci5nZXRfdXJs
KCkpCi0KLSAgICBkZWYgc2V0VXAoc2VsZiwgYmFja2luZ190cmFuc3BvcnRfc2VydmVyPU5vbmUp
OgotICAgICAgICAiIiJTZXQgdXAgc2VydmVyIGZvciB0ZXN0aW5nIiIiCi0gICAgICAgIGZyb20g
YnpybGliLnRyYW5zcG9ydC5jaHJvb3QgaW1wb3J0IFRlc3RpbmdDaHJvb3RTZXJ2ZXIKLSAgICAg
ICAgaWYgYmFja2luZ190cmFuc3BvcnRfc2VydmVyIGlzIE5vbmU6Ci0gICAgICAgICAgICBmcm9t
IGJ6cmxpYi50cmFuc3BvcnQubG9jYWwgaW1wb3J0IExvY2FsVVJMU2VydmVyCi0gICAgICAgICAg
ICBiYWNraW5nX3RyYW5zcG9ydF9zZXJ2ZXIgPSBMb2NhbFVSTFNlcnZlcigpCi0gICAgICAgIHNl
bGYuY2hyb290X3NlcnZlciA9IFRlc3RpbmdDaHJvb3RTZXJ2ZXIoKQotICAgICAgICBzZWxmLmNo
cm9vdF9zZXJ2ZXIuc2V0VXAoYmFja2luZ190cmFuc3BvcnRfc2VydmVyKQotICAgICAgICBzZWxm
LmJhY2tpbmdfdHJhbnNwb3J0ID0gdHJhbnNwb3J0LmdldF90cmFuc3BvcnQoCi0gICAgICAgICAg
ICBzZWxmLmNocm9vdF9zZXJ2ZXIuZ2V0X3VybCgpKQotICAgICAgICBzZWxmLnN0YXJ0X2JhY2tn
cm91bmRfdGhyZWFkKCkKLQotICAgIGRlZiB0ZWFyRG93bihzZWxmKToKLSAgICAgICAgc2VsZi5z
dG9wX2JhY2tncm91bmRfdGhyZWFkKCkKLQotICAgIGRlZiBnZXRfYm9ndXNfdXJsKHNlbGYpOgot
ICAgICAgICAiIiJSZXR1cm4gYSBVUkwgd2hpY2ggd2lsbCBmYWlsIHRvIGNvbm5lY3QiIiIKLSAg
ICAgICAgcmV0dXJuICdienI6Ly8xMjcuMC4wLjE6MS8nCi0KLQotY2xhc3MgU21hcnRTdGF0KG9i
amVjdCk6CitjbGFzcyBfU21hcnRTdGF0KG9iamVjdCk6CiAKICAgICBkZWYgX19pbml0X18oc2Vs
Ziwgc2l6ZSwgbW9kZSk6CiAgICAgICAgIHNlbGYuc3Rfc2l6ZSA9IHNpemUKICAgICAgICAgc2Vs
Zi5zdF9tb2RlID0gbW9kZQogCiAKLWNsYXNzIFNtYXJ0VHJhbnNwb3J0KHRyYW5zcG9ydC5UcmFu
c3BvcnQpOgorY2xhc3MgUmVtb3RlVHJhbnNwb3J0KHRyYW5zcG9ydC5UcmFuc3BvcnQpOgogICAg
ICIiIkNvbm5lY3Rpb24gdG8gYSBzbWFydCBzZXJ2ZXIuCiAKLSAgICBUaGUgY29ubmVjdGlvbiBo
b2xkcyByZWZlcmVuY2VzIHRvIHBpcGVzIHRoYXQgY2FuIGJlIHVzZWQgdG8gc2VuZCByZXF1ZXN0
cwotICAgIHRvIHRoZSBzZXJ2ZXIuCisgICAgVGhlIGNvbm5lY3Rpb24gaG9sZHMgcmVmZXJlbmNl
cyB0byB0aGUgbWVkaXVtIHRoYXQgY2FuIGJlIHVzZWQgdG8gc2VuZAorICAgIHJlcXVlc3RzIHRv
IHRoZSBzZXJ2ZXIuCiAKICAgICBUaGUgY29ubmVjdGlvbiBoYXMgYSBub3Rpb24gb2YgdGhlIGN1
cnJlbnQgZGlyZWN0b3J5IHRvIHdoaWNoIGl0J3MKICAgICBjb25uZWN0ZWQ7IHRoaXMgaXMgaW5j
b3Jwb3JhdGVkIGluIGZpbGVuYW1lcyBwYXNzZWQgdG8gdGhlIHNlcnZlci4KQEAgLTEwMjIsMjkg
KzYzLDM1IEBACiAgICAgVGhpcyBzdXBwb3J0cyBzb21lIGhpZ2hlci1sZXZlbCBSUEMgb3BlcmF0
aW9ucyBhbmQgY2FuIGFsc28gYmUgdHJlYXRlZCAKICAgICBsaWtlIGEgVHJhbnNwb3J0IHRvIGRv
IGZpbGUtbGlrZSBvcGVyYXRpb25zLgogCi0gICAgVGhlIGNvbm5lY3Rpb24gY2FuIGJlIG1hZGUg
b3ZlciBhIHRjcCBzb2NrZXQsIG9yIChpbiBmdXR1cmUpIGFuIHNzaCBwaXBlCi0gICAgb3IgYSBz
ZXJpZXMgb2YgaHR0cCByZXF1ZXN0cy4gIFRoZXJlIGFyZSBjb25jcmV0ZSBzdWJjbGFzc2VzIGZv
ciBlYWNoCi0gICAgdHlwZTogU21hcnRUQ1BUcmFuc3BvcnQsIGV0Yy4KKyAgICBUaGUgY29ubmVj
dGlvbiBjYW4gYmUgbWFkZSBvdmVyIGEgdGNwIHNvY2tldCwgYW4gc3NoIHBpcGUgb3IgYSBzZXJp
ZXMgb2YKKyAgICBodHRwIHJlcXVlc3RzLiAgVGhlcmUgYXJlIGNvbmNyZXRlIHN1YmNsYXNzZXMg
Zm9yIGVhY2ggdHlwZToKKyAgICBSZW1vdGVUQ1BUcmFuc3BvcnQsIGV0Yy4KICAgICAiIiIKIAot
ICAgICMgSU1QT1JUQU5UIEZPUiBJTVBMRU1FTlRPUlM6IFNtYXJ0VHJhbnNwb3J0IE1VU1QgTk9U
IGJlIGdpdmVuIGVuY29kaW5nCisgICAgIyBJTVBPUlRBTlQgRk9SIElNUExFTUVOVE9SUzogUmVt
b3RlVHJhbnNwb3J0IE1VU1QgTk9UIGJlIGdpdmVuIGVuY29kaW5nCiAgICAgIyByZXNwb25zaWJp
bGl0aWVzOiBQdXQgdGhvc2Ugb24gU21hcnRDbGllbnQgb3Igc2ltaWxhci4gVGhpcyBpcyB2aXRh
bCBmb3IKICAgICAjIHRoZSBhYmlsaXR5IHRvIHN1cHBvcnQgbXVsdGlwbGUgdmVyc2lvbnMgb2Yg
dGhlIHNtYXJ0IHByb3RvY29sIG92ZXIgdGltZToKLSAgICAjIFNtYXJ0VHJhbnNwb3J0IGlzIGFu
IGFkYXB0ZXIgZnJvbSB0aGUgVHJhbnNwb3J0IG9iamVjdCBtb2RlbCB0byB0aGUgCisgICAgIyBS
ZW1vdGVUcmFuc3BvcnQgaXMgYW4gYWRhcHRlciBmcm9tIHRoZSBUcmFuc3BvcnQgb2JqZWN0IG1v
ZGVsIHRvIHRoZSAKICAgICAjIFNtYXJ0Q2xpZW50IG1vZGVsLCBub3QgYW4gZW5jb2Rlci4KIAot
ICAgIGRlZiBfX2luaXRfXyhzZWxmLCB1cmwsIGNsb25lX2Zyb209Tm9uZSwgbWVkaXVtPU5vbmUp
OgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCB1cmwsIGNsb25lX2Zyb209Tm9uZSwgbWVkaXVtPU5v
bmUsIF9jbGllbnQ9Tm9uZSk6CiAgICAgICAgICIiIkNvbnN0cnVjdG9yLgogCisgICAgICAgIDpw
YXJhbSBjbG9uZV9mcm9tOiBBbm90aGVyIFJlbW90ZVRyYW5zcG9ydCBpbnN0YW5jZSB0aGF0IHRo
aXMgb25lIGlzCisgICAgICAgICAgICBiZWluZyBjbG9uZWQgZnJvbS4gIEF0dHJpYnV0ZXMgc3Vj
aCBhcyBjcmVkZW50aWFscyBhbmQgdGhlIG1lZGl1bQorICAgICAgICAgICAgd2lsbCBiZSByZXVz
ZWQuCiAgICAgICAgIDpwYXJhbSBtZWRpdW06IFRoZSBtZWRpdW0gdG8gdXNlIGZvciB0aGlzIFJl
bW90ZVRyYW5zcG9ydC4gVGhpcyBtdXN0IGJlCiAgICAgICAgICAgICBzdXBwbGllZCBpZiBjbG9u
ZV9mcm9tIGlzIE5vbmUuCisgICAgICAgIDpwYXJhbSBfY2xpZW50OiBPdmVycmlkZSB0aGUgX1Nt
YXJ0Q2xpZW50IHVzZWQgYnkgdGhpcyB0cmFuc3BvcnQuICBUaGlzCisgICAgICAgICAgICBzaG91
bGQgb25seSBiZSB1c2VkIGZvciB0ZXN0aW5nIHB1cnBvc2VzOyBub3JtYWxseSB0aGlzIGlzCisg
ICAgICAgICAgICBkZXRlcm1pbmVkIGZyb20gdGhlIG1lZGl1bS4KICAgICAgICAgIiIiCiAgICAg
ICAgICMjIyBUZWNobmljYWxseSBzdXBlcigpIGhlcmUgaXMgZmF1bHR5IGJlY2F1c2UgVHJhbnNw
b3J0J3MgX19pbml0X18KICAgICAgICAgIyMjIGZhaWxzIHRvIHRha2UgMiBwYXJhbWV0ZXJzLCBh
bmQgaWYgc3VwZXIgd2VyZSB0byBjaG9vc2UgYSBzaWxseQogICAgICAgICAjIyMgaW5pdGlhbGlz
YXRpb24gb3JkZXIgdGhpbmdzIHdvdWxkIGJsb3cgdXAuIAogICAgICAgICBpZiBub3QgdXJsLmVu
ZHN3aXRoKCcvJyk6CiAgICAgICAgICAgICB1cmwgKz0gJy8nCi0gICAgICAgIHN1cGVyKFNtYXJ0
VHJhbnNwb3J0LCBzZWxmKS5fX2luaXRfXyh1cmwpCisgICAgICAgIHN1cGVyKFJlbW90ZVRyYW5z
cG9ydCwgc2VsZikuX19pbml0X18odXJsKQogICAgICAgICBzZWxmLl9zY2hlbWUsIHNlbGYuX3Vz
ZXJuYW1lLCBzZWxmLl9wYXNzd29yZCwgc2VsZi5faG9zdCwgc2VsZi5fcG9ydCwgc2VsZi5fcGF0
aCA9IFwKICAgICAgICAgICAgICAgICB0cmFuc3BvcnQuc3BsaXRfdXJsKHVybCkKICAgICAgICAg
aWYgY2xvbmVfZnJvbSBpcyBOb25lOgpAQCAtMTA1Niw2ICsxMDMsMTAgQEAKICAgICAgICAgICAg
ICMgcmV1c2Ugc2FtZSBjb25uZWN0aW9uCiAgICAgICAgICAgICBzZWxmLl9tZWRpdW0gPSBjbG9u
ZV9mcm9tLl9tZWRpdW0KICAgICAgICAgYXNzZXJ0IHNlbGYuX21lZGl1bSBpcyBub3QgTm9uZQor
ICAgICAgICBpZiBfY2xpZW50IGlzIE5vbmU6CisgICAgICAgICAgICBzZWxmLl9jbGllbnQgPSBj
bGllbnQuX1NtYXJ0Q2xpZW50KHNlbGYuX21lZGl1bSkKKyAgICAgICAgZWxzZToKKyAgICAgICAg
ICAgIHNlbGYuX2NsaWVudCA9IF9jbGllbnQKIAogICAgIGRlZiBhYnNwYXRoKHNlbGYsIHJlbHBh
dGgpOgogICAgICAgICAiIiJSZXR1cm4gdGhlIGZ1bGwgdXJsIHRvIHRoZSBnaXZlbiByZWxhdGl2
ZSBwYXRoLgpAQCAtMTA2NiwxOSArMTE3LDM0IEBACiAgICAgICAgIHJldHVybiBzZWxmLl91bnBh
cnNlX3VybChzZWxmLl9yZW1vdGVfcGF0aChyZWxwYXRoKSkKICAgICAKICAgICBkZWYgY2xvbmUo
c2VsZiwgcmVsYXRpdmVfdXJsKToKLSAgICAgICAgIiIiTWFrZSBhIG5ldyBTbWFydFRyYW5zcG9y
dCByZWxhdGVkIHRvIG1lLCBzaGFyaW5nIHRoZSBzYW1lIGNvbm5lY3Rpb24uCisgICAgICAgICIi
Ik1ha2UgYSBuZXcgUmVtb3RlVHJhbnNwb3J0IHJlbGF0ZWQgdG8gbWUsIHNoYXJpbmcgdGhlIHNh
bWUgY29ubmVjdGlvbi4KIAogICAgICAgICBUaGlzIGVzc2VudGlhbGx5IG9wZW5zIGEgaGFuZGxl
IG9uIGEgZGlmZmVyZW50IHJlbW90ZSBkaXJlY3RvcnkuCiAgICAgICAgICIiIgogICAgICAgICBp
ZiByZWxhdGl2ZV91cmwgaXMgTm9uZToKLSAgICAgICAgICAgIHJldHVybiBTbWFydFRyYW5zcG9y
dChzZWxmLmJhc2UsIHNlbGYpCisgICAgICAgICAgICByZXR1cm4gUmVtb3RlVHJhbnNwb3J0KHNl
bGYuYmFzZSwgc2VsZikKICAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHJldHVybiBTbWFydFRy
YW5zcG9ydChzZWxmLmFic3BhdGgocmVsYXRpdmVfdXJsKSwgc2VsZikKKyAgICAgICAgICAgIHJl
dHVybiBSZW1vdGVUcmFuc3BvcnQoc2VsZi5hYnNwYXRoKHJlbGF0aXZlX3VybCksIHNlbGYpCiAK
ICAgICBkZWYgaXNfcmVhZG9ubHkoc2VsZik6CiAgICAgICAgICIiIlNtYXJ0IHNlcnZlciB0cmFu
c3BvcnQgY2FuIGRvIHJlYWQvd3JpdGUgZmlsZSBvcGVyYXRpb25zLiIiIgotICAgICAgICByZXR1
cm4gRmFsc2UKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIAorICAgICAgICByZXNwID0gc2VsZi5fY2FsbDIoJ1RyYW5zcG9ydC5pc19yZWFkb25seScp
CisgICAgICAgIGlmIHJlc3AgPT0gKCd5ZXMnLCApOgorICAgICAgICAgICAgcmV0dXJuIFRydWUK
KyAgICAgICAgZWxpZiByZXNwID09ICgnbm8nLCApOgorICAgICAgICAgICAgcmV0dXJuIEZhbHNl
CisgICAgICAgIGVsaWYgKHJlc3AgPT0gKCdlcnJvcicsICJHZW5lcmljIGJ6ciBzbWFydCBwcm90
b2NvbCBlcnJvcjogIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYmFkIHJlcXVl
c3QgJ1RyYW5zcG9ydC5pc19yZWFkb25seSciKSBvcgorICAgICAgICAgICAgICByZXNwID09ICgn
ZXJyb3InLCAiR2VuZXJpYyBienIgc21hcnQgcHJvdG9jb2wgZXJyb3I6ICIKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgImJhZCByZXF1ZXN0IHUnVHJhbnNwb3J0LmlzX3JlYWRvbmx5
JyIpKToKKyAgICAgICAgICAgICMgWFhYOiBuYXN0eSBoYWNrOiBzZXJ2ZXJzIGJlZm9yZSAwLjE2
IGRvbid0IGhhdmUgYQorICAgICAgICAgICAgIyAnVHJhbnNwb3J0LmlzX3JlYWRvbmx5JyB2ZXJi
LCBzbyB3ZSBkbyB3aGF0IGNsaWVudHMgYmVmb3JlIDAuMTYKKyAgICAgICAgICAgICMgZGlkOiBh
c3N1bWUgRmFsc2UuCisgICAgICAgICAgICByZXR1cm4gRmFsc2UKKyAgICAgICAgZWxzZToKKyAg
ICAgICAgICAgIHNlbGYuX3RyYW5zbGF0ZV9lcnJvcihyZXNwKQorICAgICAgICBhc3NlcnQgRmFs
c2UsICd3ZWlyZCByZXNwb25zZSAlcicgJSAocmVzcCwpCisKICAgICBkZWYgZ2V0X3NtYXJ0X2Ns
aWVudChzZWxmKToKICAgICAgICAgcmV0dXJuIHNlbGYuX21lZGl1bQogCkBAIC0xMTEyLDE1ICsx
NzgsMTEgQEAKIAogICAgIGRlZiBfY2FsbDIoc2VsZiwgbWV0aG9kLCAqYXJncyk6CiAgICAgICAg
ICIiIkNhbGwgYSBtZXRob2Qgb24gdGhlIHJlbW90ZSBzZXJ2ZXIuIiIiCi0gICAgICAgIHByb3Rv
Y29sID0gU21hcnRDbGllbnRSZXF1ZXN0UHJvdG9jb2xPbmUoc2VsZi5fbWVkaXVtLmdldF9yZXF1
ZXN0KCkpCi0gICAgICAgIHByb3RvY29sLmNhbGwobWV0aG9kLCAqYXJncykKLSAgICAgICAgcmV0
dXJuIHByb3RvY29sLnJlYWRfcmVzcG9uc2VfdHVwbGUoKQorICAgICAgICByZXR1cm4gc2VsZi5f
Y2xpZW50LmNhbGwobWV0aG9kLCAqYXJncykKIAogICAgIGRlZiBfY2FsbF93aXRoX2JvZHlfYnl0
ZXMoc2VsZiwgbWV0aG9kLCBhcmdzLCBib2R5KToKICAgICAgICAgIiIiQ2FsbCBhIG1ldGhvZCBv
biB0aGUgcmVtb3RlIHNlcnZlciB3aXRoIGJvZHkgYnl0ZXMuIiIiCi0gICAgICAgIHByb3RvY29s
ID0gU21hcnRDbGllbnRSZXF1ZXN0UHJvdG9jb2xPbmUoc2VsZi5fbWVkaXVtLmdldF9yZXF1ZXN0
KCkpCi0gICAgICAgIHByb3RvY29sLmNhbGxfd2l0aF9ib2R5X2J5dGVzKChtZXRob2QsICkgKyBh
cmdzLCBib2R5KQotICAgICAgICByZXR1cm4gcHJvdG9jb2wucmVhZF9yZXNwb25zZV90dXBsZSgp
CisgICAgICAgIHJldHVybiBzZWxmLl9jbGllbnQuY2FsbF93aXRoX2JvZHlfYnl0ZXMobWV0aG9k
LCBhcmdzLCBib2R5KQogCiAgICAgZGVmIGhhcyhzZWxmLCByZWxwYXRoKToKICAgICAgICAgIiIi
SW5kaWNhdGUgd2hldGhlciBhIHJlbW90ZSBmaWxlIG9mIHRoZSBnaXZlbiBuYW1lIGV4aXN0cyBv
ciBub3QuCkBAIC0xMTQ0LDEzICsyMDYsMTQgQEAKIAogICAgIGRlZiBnZXRfYnl0ZXMoc2VsZiwg
cmVscGF0aCk6CiAgICAgICAgIHJlbW90ZSA9IHNlbGYuX3JlbW90ZV9wYXRoKHJlbHBhdGgpCi0g
ICAgICAgIHByb3RvY29sID0gU21hcnRDbGllbnRSZXF1ZXN0UHJvdG9jb2xPbmUoc2VsZi5fbWVk
aXVtLmdldF9yZXF1ZXN0KCkpCi0gICAgICAgIHByb3RvY29sLmNhbGwoJ2dldCcsIHJlbW90ZSkK
LSAgICAgICAgcmVzcCA9IHByb3RvY29sLnJlYWRfcmVzcG9uc2VfdHVwbGUoVHJ1ZSkKKyAgICAg
ICAgcmVxdWVzdCA9IHNlbGYuX21lZGl1bS5nZXRfcmVxdWVzdCgpCisgICAgICAgIHNtYXJ0X3By
b3RvY29sID0gcHJvdG9jb2wuU21hcnRDbGllbnRSZXF1ZXN0UHJvdG9jb2xPbmUocmVxdWVzdCkK
KyAgICAgICAgc21hcnRfcHJvdG9jb2wuY2FsbCgnZ2V0JywgcmVtb3RlKQorICAgICAgICByZXNw
ID0gc21hcnRfcHJvdG9jb2wucmVhZF9yZXNwb25zZV90dXBsZShUcnVlKQogICAgICAgICBpZiBy
ZXNwICE9ICgnb2snLCApOgotICAgICAgICAgICAgcHJvdG9jb2wuY2FuY2VsX3JlYWRfYm9keSgp
CisgICAgICAgICAgICBzbWFydF9wcm90b2NvbC5jYW5jZWxfcmVhZF9ib2R5KCkKICAgICAgICAg
ICAgIHNlbGYuX3RyYW5zbGF0ZV9lcnJvcihyZXNwLCByZWxwYXRoKQotICAgICAgICByZXR1cm4g
cHJvdG9jb2wucmVhZF9ib2R5X2J5dGVzKCkKKyAgICAgICAgcmV0dXJuIHNtYXJ0X3Byb3RvY29s
LnJlYWRfYm9keV9ieXRlcygpCiAKICAgICBkZWYgX3NlcmlhbGlzZV9vcHRpb25hbF9tb2RlKHNl
bGYsIG1vZGUpOgogICAgICAgICBpZiBtb2RlIGlzIE5vbmU6CkBAIC0xMTY3LDYgKzIzMCwxMiBA
QAogICAgICAgICAjIEZJWE1FOiB1cGxvYWRfZmlsZSBpcyBwcm9iYWJseSBub3Qgc2FmZSBmb3Ig
bm9uLWFzY2lpIGNoYXJhY3RlcnMgLQogICAgICAgICAjIHNob3VsZCBwcm9iYWJseSBqdXN0IHBh
c3MgYWxsIHBhcmFtZXRlcnMgYXMgbGVuZ3RoLWRlbGltaXRlZAogICAgICAgICAjIHN0cmluZ3M/
CisgICAgICAgIGlmIHR5cGUodXBsb2FkX2NvbnRlbnRzKSBpcyB1bmljb2RlOgorICAgICAgICAg
ICAgIyBBbHRob3VnaCBub3Qgc3RyaWN0bHkgY29ycmVjdCwgd2UgcmFpc2UgVW5pY29kZUVuY29k
ZUVycm9yIHRvIGJlCisgICAgICAgICAgICAjIGNvbXBhdGlibGUgd2l0aCBvdGhlciB0cmFuc3Bv
cnRzLgorICAgICAgICAgICAgcmFpc2UgVW5pY29kZUVuY29kZUVycm9yKAorICAgICAgICAgICAg
ICAgICd1bmRlZmluZWQnLCB1cGxvYWRfY29udGVudHMsIDAsIDEsCisgICAgICAgICAgICAgICAg
J3B1dF9ieXRlcyBtdXN0IGJlIGdpdmVuIGJ5dGVzLCBub3QgdW5pY29kZS4nKQogICAgICAgICBy
ZXNwID0gc2VsZi5fY2FsbF93aXRoX2JvZHlfYnl0ZXMoJ3B1dCcsCiAgICAgICAgICAgICAoc2Vs
Zi5fcmVtb3RlX3BhdGgocmVscGF0aCksIHNlbGYuX3NlcmlhbGlzZV9vcHRpb25hbF9tb2RlKG1v
ZGUpKSwKICAgICAgICAgICAgIHVwbG9hZF9jb250ZW50cykKQEAgLTEyMzYsMjAgKzMwNSwyMSBA
QAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbWl0PXNlbGYuX21heF9yZWFkdl9j
b21iaW5lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1ZGdlX2ZhY3Rvcj1zZWxm
Ll9ieXRlc190b19yZWFkX2JlZm9yZV9zZWVrKSkKIAotICAgICAgICBwcm90b2NvbCA9IFNtYXJ0
Q2xpZW50UmVxdWVzdFByb3RvY29sT25lKHNlbGYuX21lZGl1bS5nZXRfcmVxdWVzdCgpKQotICAg
ICAgICBwcm90b2NvbC5jYWxsX3dpdGhfYm9keV9yZWFkdl9hcnJheSgKKyAgICAgICAgcmVxdWVz
dCA9IHNlbGYuX21lZGl1bS5nZXRfcmVxdWVzdCgpCisgICAgICAgIHNtYXJ0X3Byb3RvY29sID0g
cHJvdG9jb2wuU21hcnRDbGllbnRSZXF1ZXN0UHJvdG9jb2xPbmUocmVxdWVzdCkKKyAgICAgICAg
c21hcnRfcHJvdG9jb2wuY2FsbF93aXRoX2JvZHlfcmVhZHZfYXJyYXkoCiAgICAgICAgICAgICAo
J3JlYWR2Jywgc2VsZi5fcmVtb3RlX3BhdGgocmVscGF0aCkpLAogICAgICAgICAgICAgWyhjLnN0
YXJ0LCBjLmxlbmd0aCkgZm9yIGMgaW4gY29hbGVzY2VkXSkKLSAgICAgICAgcmVzcCA9IHByb3Rv
Y29sLnJlYWRfcmVzcG9uc2VfdHVwbGUoVHJ1ZSkKKyAgICAgICAgcmVzcCA9IHNtYXJ0X3Byb3Rv
Y29sLnJlYWRfcmVzcG9uc2VfdHVwbGUoVHJ1ZSkKIAogICAgICAgICBpZiByZXNwWzBdICE9ICdy
ZWFkdic6CiAgICAgICAgICAgICAjIFRoaXMgc2hvdWxkIHJhaXNlIGFuIGV4Y2VwdGlvbgotICAg
ICAgICAgICAgcHJvdG9jb2wuY2FuY2VsX3JlYWRfYm9keSgpCisgICAgICAgICAgICBzbWFydF9w
cm90b2NvbC5jYW5jZWxfcmVhZF9ib2R5KCkKICAgICAgICAgICAgIHNlbGYuX3RyYW5zbGF0ZV9l
cnJvcihyZXNwKQogICAgICAgICAgICAgcmV0dXJuCiAKICAgICAgICAgIyBGSVhNRTogdGhpcyBz
aG91bGQga25vdyBob3cgbWFueSBieXRlcyBhcmUgbmVlZGVkLCBmb3IgY2xhcml0eS4KLSAgICAg
ICAgZGF0YSA9IHByb3RvY29sLnJlYWRfYm9keV9ieXRlcygpCisgICAgICAgIGRhdGEgPSBzbWFy
dF9wcm90b2NvbC5yZWFkX2JvZHlfYnl0ZXMoKQogICAgICAgICAjIENhY2hlIHRoZSByZXN1bHRz
LCBidXQgb25seSB1bnRpbCB0aGV5IGhhdmUgYmVlbiBmdWxmaWxsZWQKICAgICAgICAgZGF0YV9t
YXAgPSB7fQogICAgICAgICBmb3IgY19vZmZzZXQgaW4gY29hbGVzY2VkOgpAQCAtMTMzMSw3ICs0
MDEsNyBAQAogICAgIGRlZiBzdGF0KHNlbGYsIHJlbHBhdGgpOgogICAgICAgICByZXNwID0gc2Vs
Zi5fY2FsbDIoJ3N0YXQnLCBzZWxmLl9yZW1vdGVfcGF0aChyZWxwYXRoKSkKICAgICAgICAgaWYg
cmVzcFswXSA9PSAnc3RhdCc6Ci0gICAgICAgICAgICByZXR1cm4gU21hcnRTdGF0KGludChyZXNw
WzFdKSwgaW50KHJlc3BbMl0sIDgpKQorICAgICAgICAgICAgcmV0dXJuIF9TbWFydFN0YXQoaW50
KHJlc3BbMV0pLCBpbnQocmVzcFsyXSwgOCkpCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBz
ZWxmLl90cmFuc2xhdGVfZXJyb3IocmVzcCkKIApAQCAtMTM2Niw0NTcgKzQzNiw3IEBACiAgICAg
ICAgICAgICBzZWxmLl90cmFuc2xhdGVfZXJyb3IocmVzcCkKIAogCi1jbGFzcyBTbWFydENsaWVu
dE1lZGl1bVJlcXVlc3Qob2JqZWN0KToKLSAgICAiIiJBIHJlcXVlc3Qgb24gYSBTbWFydENsaWVu
dE1lZGl1bS4KLQotICAgIEVhY2ggcmVxdWVzdCBhbGxvd3MgYnl0ZXMgdG8gYmUgcHJvdmlkZWQg
dG8gaXQgdmlhIGFjY2VwdF9ieXRlcywgYW5kIHRoZW4KLSAgICB0aGUgcmVzcG9uc2UgYnl0ZXMg
dG8gYmUgcmVhZCB2aWEgcmVhZF9ieXRlcy4KLQotICAgIEZvciBpbnN0YW5jZToKLSAgICByZXF1
ZXN0LmFjY2VwdF9ieXRlcygnMTIzJykKLSAgICByZXF1ZXN0LmZpbmlzaGVkX3dyaXRpbmcoKQot
ICAgIHJlc3VsdCA9IHJlcXVlc3QucmVhZF9ieXRlcygzKQotICAgIHJlcXVlc3QuZmluaXNoZWRf
cmVhZGluZygpCi0KLSAgICBJdCBpcyB1cCB0byB0aGUgaW5kaXZpZHVhbCBTbWFydENsaWVudE1l
ZGl1bSB3aGV0aGVyIG11bHRpcGxlIGNvbmN1cnJlbnQKLSAgICByZXF1ZXN0cyBjYW4gZXhpc3Qu
IFNlZSBTbWFydENsaWVudE1lZGl1bS5nZXRfcmVxdWVzdCB0byBvYnRhaW4gaW5zdGFuY2VzIAot
ICAgIG9mIFNtYXJ0Q2xpZW50TWVkaXVtUmVxdWVzdCwgYW5kIHRoZSBjb25jcmV0ZSBNZWRpdW0g
eW91IGFyZSB1c2luZyBmb3IgCi0gICAgZGV0YWlscyBvbiBjb25jdXJyZW5jeSBhbmQgcGlwZWxp
bmluZy4KLSAgICAiIiIKLQotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBtZWRpdW0pOgotICAgICAg
ICAiIiJDb25zdHJ1Y3QgYSBTbWFydENsaWVudE1lZGl1bVJlcXVlc3QgZm9yIHRoZSBtZWRpdW0g
bWVkaXVtLiIiIgotICAgICAgICBzZWxmLl9tZWRpdW0gPSBtZWRpdW0KLSAgICAgICAgIyB3ZSB0
cmFjayBzdGF0ZSBieSBjb25zdGFudHMgLSB3ZSBtYXkgd2FudCB0byB1c2UgdGhlIHNhbWUKLSAg
ICAgICAgIyBwYXR0ZXJuIGFzIEJvZHlSZWFkZXIgaWYgaXQgZ2V0cyBtb3JlIGNvbXBsZXguCi0g
ICAgICAgICMgdmFsaWQgc3RhdGVzIGFyZTogIndyaXRpbmciLCAicmVhZGluZyIsICJkb25lIgot
ICAgICAgICBzZWxmLl9zdGF0ZSA9ICJ3cml0aW5nIgotCi0gICAgZGVmIGFjY2VwdF9ieXRlcyhz
ZWxmLCBieXRlcyk6Ci0gICAgICAgICIiIkFjY2VwdCBieXRlcyBmb3IgaW5jbHVzaW9uIGluIHRo
aXMgcmVxdWVzdC4KLQotICAgICAgICBUaGlzIG1ldGhvZCBtYXkgbm90IGJlIGJlIGNhbGxlZCBh
ZnRlciBmaW5pc2hlZF93cml0aW5nKCkgaGFzIGJlZW4KLSAgICAgICAgY2FsbGVkLiAgSXQgZGVw
ZW5kcyB1cG9uIHRoZSBNZWRpdW0gd2hldGhlciBvciBub3QgdGhlIGJ5dGVzIHdpbGwgYmUKLSAg
ICAgICAgaW1tZWRpYXRlbHkgdHJhbnNtaXR0ZWQuIE1lc3NhZ2UgYmFzZWQgTWVkaXVtcyB3aWxs
IHRlbmQgdG8gYnVmZmVyIHRoZQotICAgICAgICBieXRlcyB1bnRpbCBmaW5pc2hlZF93cml0aW5n
KCkgaXMgY2FsbGVkLgotCi0gICAgICAgIDpwYXJhbSBieXRlczogQSBieXRlc3RyaW5nLgotICAg
ICAgICAiIiIKLSAgICAgICAgaWYgc2VsZi5fc3RhdGUgIT0gIndyaXRpbmciOgotICAgICAgICAg
ICAgcmFpc2UgZXJyb3JzLldyaXRpbmdDb21wbGV0ZWQoc2VsZikKLSAgICAgICAgc2VsZi5fYWNj
ZXB0X2J5dGVzKGJ5dGVzKQotCi0gICAgZGVmIF9hY2NlcHRfYnl0ZXMoc2VsZiwgYnl0ZXMpOgot
ICAgICAgICAiIiJIZWxwZXIgZm9yIGFjY2VwdF9ieXRlcy4KLQotICAgICAgICBBY2NlcHRfYnl0
ZXMgY2hlY2tzIHRoZSBzdGF0ZSBvZiB0aGUgcmVxdWVzdCB0byBkZXRlcm1pbmcgaWYgYnl0ZXMK
LSAgICAgICAgc2hvdWxkIGJlIGFjY2VwdGVkLiBBZnRlciB0aGF0IGl0IGhhbmRzIG9mZiB0byBf
YWNjZXB0X2J5dGVzIHRvIGRvIHRoZQotICAgICAgICBhY3R1YWwgYWNjZXB0YW5jZS4KLSAgICAg
ICAgIiIiCi0gICAgICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3Ioc2VsZi5fYWNjZXB0X2J5
dGVzKQotCi0gICAgZGVmIGZpbmlzaGVkX3JlYWRpbmcoc2VsZik6Ci0gICAgICAgICIiIkluZm9y
bSB0aGUgcmVxdWVzdCB0aGF0IGFsbCBkZXNpcmVkIGRhdGEgaGFzIGJlZW4gcmVhZC4KLQotICAg
ICAgICBUaGlzIHdpbGwgcmVtb3ZlIHRoZSByZXF1ZXN0IGZyb20gdGhlIHBpcGVsaW5lIGZvciBp
dHMgbWVkaXVtIChpZiB0aGUKLSAgICAgICAgbWVkaXVtIHN1cHBvcnRzIHBpcGVsaW5pbmcpIGFu
ZCBhbnkgZnVydGhlciBjYWxscyB0byBtZXRob2RzIG9uIHRoZQotICAgICAgICByZXF1ZXN0IHdp
bGwgcmFpc2UgUmVhZGluZ0NvbXBsZXRlZC4KLSAgICAgICAgIiIiCi0gICAgICAgIGlmIHNlbGYu
X3N0YXRlID09ICJ3cml0aW5nIjoKLSAgICAgICAgICAgIHJhaXNlIGVycm9ycy5Xcml0aW5nTm90
Q29tcGxldGUoc2VsZikKLSAgICAgICAgaWYgc2VsZi5fc3RhdGUgIT0gInJlYWRpbmciOgotICAg
ICAgICAgICAgcmFpc2UgZXJyb3JzLlJlYWRpbmdDb21wbGV0ZWQoc2VsZikKLSAgICAgICAgc2Vs
Zi5fc3RhdGUgPSAiZG9uZSIKLSAgICAgICAgc2VsZi5fZmluaXNoZWRfcmVhZGluZygpCi0KLSAg
ICBkZWYgX2ZpbmlzaGVkX3JlYWRpbmcoc2VsZik6Ci0gICAgICAgICIiIkhlbHBlciBmb3IgZmlu
aXNoZWRfcmVhZGluZy4KLQotICAgICAgICBmaW5pc2hlZF9yZWFkaW5nIGNoZWNrcyB0aGUgc3Rh
dGUgb2YgdGhlIHJlcXVlc3QgdG8gZGV0ZXJtaW5lIGlmIAotICAgICAgICBmaW5pc2hlZF9yZWFk
aW5nIGlzIGFsbG93ZWQsIGFuZCBpZiBpdCBpcyBoYW5kcyBvZmYgdG8gX2ZpbmlzaGVkX3JlYWRp
bmcKLSAgICAgICAgdG8gcGVyZm9ybSB0aGUgYWN0aW9uLgotICAgICAgICAiIiIKLSAgICAgICAg
cmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcihzZWxmLl9maW5pc2hlZF9yZWFkaW5nKQotCi0gICAg
ZGVmIGZpbmlzaGVkX3dyaXRpbmcoc2VsZik6Ci0gICAgICAgICIiIkZpbmlzaCB0aGUgd3JpdGlu
ZyBwaGFzZSBvZiB0aGlzIHJlcXVlc3QuCi0KLSAgICAgICAgVGhpcyB3aWxsIGZsdXNoIGFsbCBw
ZW5kaW5nIGRhdGEgZm9yIHRoaXMgcmVxdWVzdCBhbG9uZyB0aGUgbWVkaXVtLgotICAgICAgICBB
ZnRlciBjYWxsaW5nIGZpbmlzaGVkX3dyaXRpbmcsIHlvdSBtYXkgbm90IGNhbGwgYWNjZXB0X2J5
dGVzIGFueW1vcmUuCi0gICAgICAgICIiIgotICAgICAgICBpZiBzZWxmLl9zdGF0ZSAhPSAid3Jp
dGluZyI6Ci0gICAgICAgICAgICByYWlzZSBlcnJvcnMuV3JpdGluZ0NvbXBsZXRlZChzZWxmKQot
ICAgICAgICBzZWxmLl9zdGF0ZSA9ICJyZWFkaW5nIgotICAgICAgICBzZWxmLl9maW5pc2hlZF93
cml0aW5nKCkKLQotICAgIGRlZiBfZmluaXNoZWRfd3JpdGluZyhzZWxmKToKLSAgICAgICAgIiIi
SGVscGVyIGZvciBmaW5pc2hlZF93cml0aW5nLgotCi0gICAgICAgIGZpbmlzaGVkX3dyaXRpbmcg
Y2hlY2tzIHRoZSBzdGF0ZSBvZiB0aGUgcmVxdWVzdCB0byBkZXRlcm1pbmUgaWYgCi0gICAgICAg
IGZpbmlzaGVkX3dyaXRpbmcgaXMgYWxsb3dlZCwgYW5kIGlmIGl0IGlzIGhhbmRzIG9mZiB0byBf
ZmluaXNoZWRfd3JpdGluZwotICAgICAgICB0byBwZXJmb3JtIHRoZSBhY3Rpb24uCi0gICAgICAg
ICIiIgotICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yKHNlbGYuX2ZpbmlzaGVkX3dy
aXRpbmcpCi0KLSAgICBkZWYgcmVhZF9ieXRlcyhzZWxmLCBjb3VudCk6Ci0gICAgICAgICIiIlJl
YWQgYnl0ZXMgZnJvbSB0aGlzIHJlcXVlc3RzIHJlc3BvbnNlLgotCi0gICAgICAgIFRoaXMgbWV0
aG9kIHdpbGwgYmxvY2sgYW5kIHdhaXQgZm9yIGNvdW50IGJ5dGVzIHRvIGJlIHJlYWQuIEl0IG1h
eSBub3QKLSAgICAgICAgYmUgaW52b2tlZCB1bnRpbCBmaW5pc2hlZF93cml0aW5nKCkgaGFzIGJl
ZW4gY2FsbGVkIC0gdGhpcyBpcyB0byBlbnN1cmUKLSAgICAgICAgYSBtZXNzYWdlLWJhc2VkIGFw
cHJvYWNoIHRvIHJlcXVlc3RzLCBmb3IgY29tcGF0YWJpbGl0eSB3aXRoIG1lc3NhZ2UKLSAgICAg
ICAgYmFzZWQgbWVkaXVtcyBsaWtlIEhUVFAuCi0gICAgICAgICIiIgotICAgICAgICBpZiBzZWxm
Ll9zdGF0ZSA9PSAid3JpdGluZyI6Ci0gICAgICAgICAgICByYWlzZSBlcnJvcnMuV3JpdGluZ05v
dENvbXBsZXRlKHNlbGYpCi0gICAgICAgIGlmIHNlbGYuX3N0YXRlICE9ICJyZWFkaW5nIjoKLSAg
ICAgICAgICAgIHJhaXNlIGVycm9ycy5SZWFkaW5nQ29tcGxldGVkKHNlbGYpCi0gICAgICAgIHJl
dHVybiBzZWxmLl9yZWFkX2J5dGVzKGNvdW50KQotCi0gICAgZGVmIF9yZWFkX2J5dGVzKHNlbGYs
IGNvdW50KToKLSAgICAgICAgIiIiSGVscGVyIGZvciByZWFkX2J5dGVzLgotCi0gICAgICAgIHJl
YWRfYnl0ZXMgY2hlY2tzIHRoZSBzdGF0ZSBvZiB0aGUgcmVxdWVzdCB0byBkZXRlcm1pbmcgaWYg
Ynl0ZXMKLSAgICAgICAgc2hvdWxkIGJlIHJlYWQuIEFmdGVyIHRoYXQgaXQgaGFuZHMgb2ZmIHRv
IF9yZWFkX2J5dGVzIHRvIGRvIHRoZQotICAgICAgICBhY3R1YWwgcmVhZC4KLSAgICAgICAgIiIi
Ci0gICAgICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3Ioc2VsZi5fcmVhZF9ieXRlcykKLQot
Ci1jbGFzcyBTbWFydENsaWVudFN0cmVhbU1lZGl1bVJlcXVlc3QoU21hcnRDbGllbnRNZWRpdW1S
ZXF1ZXN0KToKLSAgICAiIiJBIFNtYXJ0Q2xpZW50TWVkaXVtUmVxdWVzdCB0aGF0IHdvcmtzIHdp
dGggYW4gU21hcnRDbGllbnRTdHJlYW1NZWRpdW0uIiIiCi0KLSAgICBkZWYgX19pbml0X18oc2Vs
ZiwgbWVkaXVtKToKLSAgICAgICAgU21hcnRDbGllbnRNZWRpdW1SZXF1ZXN0Ll9faW5pdF9fKHNl
bGYsIG1lZGl1bSkKLSAgICAgICAgIyBjaGVjayB0aGF0IHdlIGFyZSBzYWZlIGNvbmN1cnJlbmN5
IHdpc2UuIElmIHNvbWUgc3RyZWFtcyBzdGFydAotICAgICAgICAjIGFsbG93aW5nIGNvbmN1cnJl
bnQgcmVxdWVzdHMgLSBpLmUuIHZpYSBtdWx0aXBsZXhpbmcgLSB0aGVuIHRoaXMKLSAgICAgICAg
IyBhc3NlcnQgc2hvdWxkIGJlIG1vdmVkIHRvIFNtYXJ0Q2xpZW50U3RyZWFtTWVkaXVtLmdldF9y
ZXF1ZXN0LAotICAgICAgICAjIGFuZCB0aGUgc2V0dGluZy91bnNldHRpbmcgb2YgX2N1cnJlbnRf
cmVxdWVzdCBsaWtld2lzZSBtb3ZlZCBpbnRvCi0gICAgICAgICMgdGhhdCBjbGFzcyA6IGJ1dCBp
dHMgdW5uZWVkZWQgb3ZlcmhlYWQgZm9yIG5vdy4gUkJDIDIwMDYwOTIyCi0gICAgICAgIGlmIHNl
bGYuX21lZGl1bS5fY3VycmVudF9yZXF1ZXN0IGlzIG5vdCBOb25lOgotICAgICAgICAgICAgcmFp
c2UgZXJyb3JzLlRvb01hbnlDb25jdXJyZW50UmVxdWVzdHMoc2VsZi5fbWVkaXVtKQotICAgICAg
ICBzZWxmLl9tZWRpdW0uX2N1cnJlbnRfcmVxdWVzdCA9IHNlbGYKLQotICAgIGRlZiBfYWNjZXB0
X2J5dGVzKHNlbGYsIGJ5dGVzKToKLSAgICAgICAgIiIiU2VlIFNtYXJ0Q2xpZW50TWVkaXVtUmVx
dWVzdC5fYWNjZXB0X2J5dGVzLgotICAgICAgICAKLSAgICAgICAgVGhpcyBmb3J3YXJkcyB0byBz
ZWxmLl9tZWRpdW0uX2FjY2VwdF9ieXRlcyBiZWNhdXNlIHdlIGFyZSBvcGVyYXRpbmcKLSAgICAg
ICAgb24gdGhlIG1lZGl1bXMgc3RyZWFtLgotICAgICAgICAiIiIKLSAgICAgICAgc2VsZi5fbWVk
aXVtLl9hY2NlcHRfYnl0ZXMoYnl0ZXMpCi0KLSAgICBkZWYgX2ZpbmlzaGVkX3JlYWRpbmcoc2Vs
Zik6Ci0gICAgICAgICIiIlNlZSBTbWFydENsaWVudE1lZGl1bVJlcXVlc3QuX2ZpbmlzaGVkX3Jl
YWRpbmcuCi0KLSAgICAgICAgVGhpcyBjbGVhcnMgdGhlIF9jdXJyZW50X3JlcXVlc3Qgb24gc2Vs
Zi5fbWVkaXVtIHRvIGFsbG93IGEgbmV3IAotICAgICAgICByZXF1ZXN0IHRvIGJlIGNyZWF0ZWQu
Ci0gICAgICAgICIiIgotICAgICAgICBhc3NlcnQgc2VsZi5fbWVkaXVtLl9jdXJyZW50X3JlcXVl
c3QgaXMgc2VsZgotICAgICAgICBzZWxmLl9tZWRpdW0uX2N1cnJlbnRfcmVxdWVzdCA9IE5vbmUK
LSAgICAgICAgCi0gICAgZGVmIF9maW5pc2hlZF93cml0aW5nKHNlbGYpOgotICAgICAgICAiIiJT
ZWUgU21hcnRDbGllbnRNZWRpdW1SZXF1ZXN0Ll9maW5pc2hlZF93cml0aW5nLgotCi0gICAgICAg
IFRoaXMgaW52b2tlcyBzZWxmLl9tZWRpdW0uX2ZsdXNoIHRvIGVuc3VyZSBhbGwgYnl0ZXMgYXJl
IHRyYW5zbWl0dGVkLgotICAgICAgICAiIiIKLSAgICAgICAgc2VsZi5fbWVkaXVtLl9mbHVzaCgp
Ci0KLSAgICBkZWYgX3JlYWRfYnl0ZXMoc2VsZiwgY291bnQpOgotICAgICAgICAiIiJTZWUgU21h
cnRDbGllbnRNZWRpdW1SZXF1ZXN0Ll9yZWFkX2J5dGVzLgotICAgICAgICAKLSAgICAgICAgVGhp
cyBmb3J3YXJkcyB0byBzZWxmLl9tZWRpdW0uX3JlYWRfYnl0ZXMgYmVjYXVzZSB3ZSBhcmUgb3Bl
cmF0aW5nCi0gICAgICAgIG9uIHRoZSBtZWRpdW1zIHN0cmVhbS4KLSAgICAgICAgIiIiCi0gICAg
ICAgIHJldHVybiBzZWxmLl9tZWRpdW0uX3JlYWRfYnl0ZXMoY291bnQpCi0KLQotY2xhc3MgU21h
cnRDbGllbnRSZXF1ZXN0UHJvdG9jb2xPbmUoU21hcnRQcm90b2NvbEJhc2UpOgotICAgICIiIlRo
ZSBjbGllbnQtc2lkZSBwcm90b2NvbCBmb3Igc21hcnQgdmVyc2lvbiAxLiIiIgotCi0gICAgZGVm
IF9faW5pdF9fKHNlbGYsIHJlcXVlc3QpOgotICAgICAgICAiIiJDb25zdHJ1Y3QgYSBTbWFydENs
aWVudFJlcXVlc3RQcm90b2NvbE9uZS4KLQotICAgICAgICA6cGFyYW0gcmVxdWVzdDogQSBTbWFy
dENsaWVudE1lZGl1bVJlcXVlc3QgdG8gc2VyaWFsaXNlIG9udG8gYW5kCi0gICAgICAgICAgICBk
ZXNlcmlhbGlzZSBmcm9tLgotICAgICAgICAiIiIKLSAgICAgICAgc2VsZi5fcmVxdWVzdCA9IHJl
cXVlc3QKLSAgICAgICAgc2VsZi5fYm9keV9idWZmZXIgPSBOb25lCi0KLSAgICBkZWYgY2FsbChz
ZWxmLCAqYXJncyk6Ci0gICAgICAgIGJ5dGVzID0gX2VuY29kZV90dXBsZShhcmdzKQotICAgICAg
ICBzZWxmLl9yZXF1ZXN0LmFjY2VwdF9ieXRlcyhieXRlcykKLSAgICAgICAgc2VsZi5fcmVxdWVz
dC5maW5pc2hlZF93cml0aW5nKCkKLQotICAgIGRlZiBjYWxsX3dpdGhfYm9keV9ieXRlcyhzZWxm
LCBhcmdzLCBib2R5KToKLSAgICAgICAgIiIiTWFrZSBhIHJlbW90ZSBjYWxsIG9mIGFyZ3Mgd2l0
aCBib2R5IGJ5dGVzICdib2R5Jy4KLQotICAgICAgICBBZnRlciBjYWxsaW5nIHRoaXMsIGNhbGwg
cmVhZF9yZXNwb25zZV90dXBsZSB0byBmaW5kIHRoZSByZXN1bHQgb3V0LgotICAgICAgICAiIiIK
LSAgICAgICAgYnl0ZXMgPSBfZW5jb2RlX3R1cGxlKGFyZ3MpCi0gICAgICAgIHNlbGYuX3JlcXVl
c3QuYWNjZXB0X2J5dGVzKGJ5dGVzKQotICAgICAgICBieXRlcyA9IHNlbGYuX2VuY29kZV9idWxr
X2RhdGEoYm9keSkKLSAgICAgICAgc2VsZi5fcmVxdWVzdC5hY2NlcHRfYnl0ZXMoYnl0ZXMpCi0g
ICAgICAgIHNlbGYuX3JlcXVlc3QuZmluaXNoZWRfd3JpdGluZygpCi0KLSAgICBkZWYgY2FsbF93
aXRoX2JvZHlfcmVhZHZfYXJyYXkoc2VsZiwgYXJncywgYm9keSk6Ci0gICAgICAgICIiIk1ha2Ug
YSByZW1vdGUgY2FsbCB3aXRoIGEgcmVhZHYgYXJyYXkuCi0KLSAgICAgICAgVGhlIGJvZHkgaXMg
ZW5jb2RlZCB3aXRoIG9uZSBsaW5lIHBlciByZWFkdiBvZmZzZXQgcGFpci4gVGhlIG51bWJlcnMg
aW4KLSAgICAgICAgZWFjaCBwYWlyIGFyZSBzZXBhcmF0ZWQgYnkgYSBjb21tYSwgYW5kIG5vIHRy
YWlsaW5nIFxuIGlzIGVtaXR0ZWQuCi0gICAgICAgICIiIgotICAgICAgICBieXRlcyA9IF9lbmNv
ZGVfdHVwbGUoYXJncykKLSAgICAgICAgc2VsZi5fcmVxdWVzdC5hY2NlcHRfYnl0ZXMoYnl0ZXMp
Ci0gICAgICAgIHJlYWR2X2J5dGVzID0gc2VsZi5fc2VyaWFsaXNlX29mZnNldHMoYm9keSkKLSAg
ICAgICAgYnl0ZXMgPSBzZWxmLl9lbmNvZGVfYnVsa19kYXRhKHJlYWR2X2J5dGVzKQotICAgICAg
ICBzZWxmLl9yZXF1ZXN0LmFjY2VwdF9ieXRlcyhieXRlcykKLSAgICAgICAgc2VsZi5fcmVxdWVz
dC5maW5pc2hlZF93cml0aW5nKCkKLQotICAgIGRlZiBjYW5jZWxfcmVhZF9ib2R5KHNlbGYpOgot
ICAgICAgICAiIiJBZnRlciBleHBlY3RpbmcgYSBib2R5LCBhIHJlc3BvbnNlIGNvZGUgbWF5IGlu
ZGljYXRlIG9uZSBvdGhlcndpc2UuCi0KLSAgICAgICAgVGhpcyBtZXRob2QgbGV0cyB0aGUgZG9t
YWluIGNsaWVudCBpbmZvcm0gdGhlIHByb3RvY29sIHRoYXQgbm8gYm9keQotICAgICAgICB3aWxs
IGJlIHRyYW5zbWl0dGVkLiBUaGlzIGlzIGEgdGVybWluYWwgbWV0aG9kOiBhZnRlciBjYWxsaW5n
IGl0IHRoZQotICAgICAgICBwcm90b2NvbCBpcyBub3QgYWJsZSB0byBiZSB1c2VkIGZ1cnRoZXIu
Ci0gICAgICAgICIiIgotICAgICAgICBzZWxmLl9yZXF1ZXN0LmZpbmlzaGVkX3JlYWRpbmcoKQot
Ci0gICAgZGVmIHJlYWRfcmVzcG9uc2VfdHVwbGUoc2VsZiwgZXhwZWN0X2JvZHk9RmFsc2UpOgot
ICAgICAgICAiIiJSZWFkIGEgcmVzcG9uc2UgdHVwbGUgZnJvbSB0aGUgd2lyZS4KLQotICAgICAg
ICBUaGlzIHNob3VsZCBvbmx5IGJlIGNhbGxlZCBvbmNlLgotICAgICAgICAiIiIKLSAgICAgICAg
cmVzdWx0ID0gc2VsZi5fcmVjdl90dXBsZSgpCi0gICAgICAgIGlmIG5vdCBleHBlY3RfYm9keToK
LSAgICAgICAgICAgIHNlbGYuX3JlcXVlc3QuZmluaXNoZWRfcmVhZGluZygpCi0gICAgICAgIHJl
dHVybiByZXN1bHQKLQotICAgIGRlZiByZWFkX2JvZHlfYnl0ZXMoc2VsZiwgY291bnQ9LTEpOgot
ICAgICAgICAiIiJSZWFkIGJ5dGVzIGZyb20gdGhlIGJvZHksIGRlY29kaW5nIGludG8gYSBieXRl
IHN0cmVhbS4KLSAgICAgICAgCi0gICAgICAgIFdlIHJlYWQgYWxsIGJ5dGVzIGF0IG9uY2UgdG8g
ZW5zdXJlIHdlJ3ZlIGNoZWNrZWQgdGhlIHRyYWlsZXIgZm9yIAotICAgICAgICBlcnJvcnMsIGFu
ZCB0aGVuIGZlZWQgdGhlIGJ1ZmZlciBiYWNrIGFzIHJlYWRfYm9keV9ieXRlcyBpcyBjYWxsZWQu
Ci0gICAgICAgICIiIgotICAgICAgICBpZiBzZWxmLl9ib2R5X2J1ZmZlciBpcyBub3QgTm9uZToK
LSAgICAgICAgICAgIHJldHVybiBzZWxmLl9ib2R5X2J1ZmZlci5yZWFkKGNvdW50KQotICAgICAg
ICBfYm9keV9kZWNvZGVyID0gTGVuZ3RoUHJlZml4ZWRCb2R5RGVjb2RlcigpCi0KLSAgICAgICAg
d2hpbGUgbm90IF9ib2R5X2RlY29kZXIuZmluaXNoZWRfcmVhZGluZzoKLSAgICAgICAgICAgIGJ5
dGVzX3dhbnRlZCA9IF9ib2R5X2RlY29kZXIubmV4dF9yZWFkX3NpemUoKQotICAgICAgICAgICAg
Ynl0ZXMgPSBzZWxmLl9yZXF1ZXN0LnJlYWRfYnl0ZXMoYnl0ZXNfd2FudGVkKQotICAgICAgICAg
ICAgX2JvZHlfZGVjb2Rlci5hY2NlcHRfYnl0ZXMoYnl0ZXMpCi0gICAgICAgIHNlbGYuX3JlcXVl
c3QuZmluaXNoZWRfcmVhZGluZygpCi0gICAgICAgIHNlbGYuX2JvZHlfYnVmZmVyID0gU3RyaW5n
SU8oX2JvZHlfZGVjb2Rlci5yZWFkX3BlbmRpbmdfZGF0YSgpKQotICAgICAgICAjIFhYWDogVE9E
TyBjaGVjayB0aGUgdHJhaWxlciByZXN1bHQuCi0gICAgICAgIHJldHVybiBzZWxmLl9ib2R5X2J1
ZmZlci5yZWFkKGNvdW50KQotCi0gICAgZGVmIF9yZWN2X3R1cGxlKHNlbGYpOgotICAgICAgICAi
IiJSZWNlaXZlIGEgdHVwbGUgZnJvbSB0aGUgbWVkaXVtIHJlcXVlc3QuIiIiCi0gICAgICAgIGxp
bmUgPSAnJwotICAgICAgICB3aGlsZSBub3QgbGluZSBvciBsaW5lWy0xXSAhPSAnXG4nOgotICAg
ICAgICAgICAgIyBUT0RPOiB0aGlzIGlzIGluZWZmaWNpZW50IC0gYnV0IHR1cGxlcyBhcmUgc2hv
cnQuCi0gICAgICAgICAgICBuZXdfY2hhciA9IHNlbGYuX3JlcXVlc3QucmVhZF9ieXRlcygxKQot
ICAgICAgICAgICAgbGluZSArPSBuZXdfY2hhcgotICAgICAgICAgICAgYXNzZXJ0IG5ld19jaGFy
ICE9ICcnLCAiZW5kIG9mIGZpbGUgcmVhZGluZyBmcm9tIHNlcnZlci4iCi0gICAgICAgIHJldHVy
biBfZGVjb2RlX3R1cGxlKGxpbmUpCi0KLSAgICBkZWYgcXVlcnlfdmVyc2lvbihzZWxmKToKLSAg
ICAgICAgIiIiUmV0dXJuIHByb3RvY29sIHZlcnNpb24gbnVtYmVyIG9mIHRoZSBzZXJ2ZXIuIiIi
Ci0gICAgICAgIHNlbGYuY2FsbCgnaGVsbG8nKQotICAgICAgICByZXNwID0gc2VsZi5yZWFkX3Jl
c3BvbnNlX3R1cGxlKCkKLSAgICAgICAgaWYgcmVzcCA9PSAoJ29rJywgJzEnKToKLSAgICAgICAg
ICAgIHJldHVybiAxCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICByYWlzZSBlcnJvcnMuU21h
cnRQcm90b2NvbEVycm9yKCJiYWQgcmVzcG9uc2UgJXIiICUgKHJlc3AsKSkKLQotCi1jbGFzcyBT
bWFydENsaWVudE1lZGl1bShvYmplY3QpOgotICAgICIiIlNtYXJ0IGNsaWVudCBpcyBhIG1lZGl1
bSBmb3Igc2VuZGluZyBzbWFydCBwcm90b2NvbCByZXF1ZXN0cyBvdmVyLiIiIgotCi0gICAgZGVm
IGRpc2Nvbm5lY3Qoc2VsZik6Ci0gICAgICAgICIiIklmIHRoaXMgbWVkaXVtIG1haW50YWlucyBh
IHBlcnNpc3RlbnQgY29ubmVjdGlvbiwgY2xvc2UgaXQuCi0gICAgICAgIAotICAgICAgICBUaGUg
ZGVmYXVsdCBpbXBsZW1lbnRhdGlvbiBkb2VzIG5vdGhpbmcuCi0gICAgICAgICIiIgotICAgICAg
ICAKLQotY2xhc3MgU21hcnRDbGllbnRTdHJlYW1NZWRpdW0oU21hcnRDbGllbnRNZWRpdW0pOgot
ICAgICIiIlN0cmVhbSBiYXNlZCBtZWRpdW0gY29tbW9uIGNsYXNzLgotCi0gICAgU21hcnRDbGll
bnRTdHJlYW1NZWRpdW1zIG9wZXJhdGUgb24gYSBzdHJlYW0uIEFsbCBzdWJjbGFzc2VzIHVzZSBh
IGNvbW1vbgotICAgIFNtYXJ0Q2xpZW50U3RyZWFtTWVkaXVtUmVxdWVzdCBmb3IgdGhlaXIgcmVx
dWVzdHMsIGFuZCBzaG91bGQgaW1wbGVtZW50Ci0gICAgX2FjY2VwdF9ieXRlcyBhbmQgX3JlYWRf
Ynl0ZXMgdG8gYWxsb3cgdGhlIHJlcXVlc3Qgb2JqZWN0cyB0byBzZW5kIGFuZAotICAgIHJlY2Vp
dmUgYnl0ZXMuCi0gICAgIiIiCi0KLSAgICBkZWYgX19pbml0X18oc2VsZik6Ci0gICAgICAgIHNl
bGYuX2N1cnJlbnRfcmVxdWVzdCA9IE5vbmUKLQotICAgIGRlZiBhY2NlcHRfYnl0ZXMoc2VsZiwg
Ynl0ZXMpOgotICAgICAgICBzZWxmLl9hY2NlcHRfYnl0ZXMoYnl0ZXMpCi0KLSAgICBkZWYgX19k
ZWxfXyhzZWxmKToKLSAgICAgICAgIiIiVGhlIFNtYXJ0Q2xpZW50U3RyZWFtTWVkaXVtIGtub3dz
IGhvdyB0byBjbG9zZSB0aGUgc3RyZWFtIHdoZW4gaXQgaXMKLSAgICAgICAgZmluaXNoZWQgd2l0
aCBpdC4KLSAgICAgICAgIiIiCi0gICAgICAgIHNlbGYuZGlzY29ubmVjdCgpCi0KLSAgICBkZWYg
X2ZsdXNoKHNlbGYpOgotICAgICAgICAiIiJGbHVzaCB0aGUgb3V0cHV0IHN0cmVhbS4KLSAgICAg
ICAgCi0gICAgICAgIFRoaXMgbWV0aG9kIGlzIHVzZWQgYnkgdGhlIFNtYXJ0Q2xpZW50U3RyZWFt
TWVkaXVtUmVxdWVzdCB0byBlbnN1cmUgdGhhdAotICAgICAgICBhbGwgZGF0YSBmb3IgYSByZXF1
ZXN0IGlzIHNlbnQsIHRvIGF2b2lkIGxvbmcgdGltZW91dHMgb3IgZGVhZGxvY2tzLgotICAgICAg
ICAiIiIKLSAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcihzZWxmLl9mbHVzaCkKLQot
ICAgIGRlZiBnZXRfcmVxdWVzdChzZWxmKToKLSAgICAgICAgIiIiU2VlIFNtYXJ0Q2xpZW50TWVk
aXVtLmdldF9yZXF1ZXN0KCkuCi0KLSAgICAgICAgU21hcnRDbGllbnRTdHJlYW1NZWRpdW0gYWx3
YXlzIHJldHVybnMgYSBTbWFydENsaWVudFN0cmVhbU1lZGl1bVJlcXVlc3QKLSAgICAgICAgZm9y
IGdldF9yZXF1ZXN0LgotICAgICAgICAiIiIKLSAgICAgICAgcmV0dXJuIFNtYXJ0Q2xpZW50U3Ry
ZWFtTWVkaXVtUmVxdWVzdChzZWxmKQotCi0gICAgZGVmIHJlYWRfYnl0ZXMoc2VsZiwgY291bnQp
OgotICAgICAgICByZXR1cm4gc2VsZi5fcmVhZF9ieXRlcyhjb3VudCkKLQotCi1jbGFzcyBTbWFy
dFNpbXBsZVBpcGVzQ2xpZW50TWVkaXVtKFNtYXJ0Q2xpZW50U3RyZWFtTWVkaXVtKToKLSAgICAi
IiJBIGNsaWVudCBtZWRpdW0gdXNpbmcgc2ltcGxlIHBpcGVzLgotICAgIAotICAgIFRoaXMgY2xp
ZW50IGRvZXMgbm90IG1hbmFnZSB0aGUgcGlwZXM6IGl0IGFzc3VtZXMgdGhleSB3aWxsIGFsd2F5
cyBiZSBvcGVuLgotICAgICIiIgotCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIHJlYWRhYmxlX3Bp
cGUsIHdyaXRlYWJsZV9waXBlKToKLSAgICAgICAgU21hcnRDbGllbnRTdHJlYW1NZWRpdW0uX19p
bml0X18oc2VsZikKLSAgICAgICAgc2VsZi5fcmVhZGFibGVfcGlwZSA9IHJlYWRhYmxlX3BpcGUK
LSAgICAgICAgc2VsZi5fd3JpdGVhYmxlX3BpcGUgPSB3cml0ZWFibGVfcGlwZQotCi0gICAgZGVm
IF9hY2NlcHRfYnl0ZXMoc2VsZiwgYnl0ZXMpOgotICAgICAgICAiIiJTZWUgU21hcnRDbGllbnRT
dHJlYW1NZWRpdW0uYWNjZXB0X2J5dGVzLiIiIgotICAgICAgICBzZWxmLl93cml0ZWFibGVfcGlw
ZS53cml0ZShieXRlcykKLQotICAgIGRlZiBfZmx1c2goc2VsZik6Ci0gICAgICAgICIiIlNlZSBT
bWFydENsaWVudFN0cmVhbU1lZGl1bS5fZmx1c2goKS4iIiIKLSAgICAgICAgc2VsZi5fd3JpdGVh
YmxlX3BpcGUuZmx1c2goKQotCi0gICAgZGVmIF9yZWFkX2J5dGVzKHNlbGYsIGNvdW50KToKLSAg
ICAgICAgIiIiU2VlIFNtYXJ0Q2xpZW50U3RyZWFtTWVkaXVtLl9yZWFkX2J5dGVzLiIiIgotICAg
ICAgICByZXR1cm4gc2VsZi5fcmVhZGFibGVfcGlwZS5yZWFkKGNvdW50KQotCi0KLWNsYXNzIFNt
YXJ0U1NIQ2xpZW50TWVkaXVtKFNtYXJ0Q2xpZW50U3RyZWFtTWVkaXVtKToKLSAgICAiIiJBIGNs
aWVudCBtZWRpdW0gdXNpbmcgU1NILiIiIgotICAgIAotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBo
b3N0LCBwb3J0PU5vbmUsIHVzZXJuYW1lPU5vbmUsIHBhc3N3b3JkPU5vbmUsCi0gICAgICAgICAg
ICB2ZW5kb3I9Tm9uZSk6Ci0gICAgICAgICIiIkNyZWF0ZXMgYSBjbGllbnQgdGhhdCB3aWxsIGNv
bm5lY3Qgb24gdGhlIGZpcnN0IHVzZS4KLSAgICAgICAgCi0gICAgICAgIDpwYXJhbSB2ZW5kb3I6
IEFuIG9wdGlvbmFsIG92ZXJyaWRlIGZvciB0aGUgc3NoIHZlbmRvciB0byB1c2UuIFNlZQotICAg
ICAgICAgICAgYnpybGliLnRyYW5zcG9ydC5zc2ggZm9yIGRldGFpbHMgb24gc3NoIHZlbmRvcnMu
Ci0gICAgICAgICIiIgotICAgICAgICBTbWFydENsaWVudFN0cmVhbU1lZGl1bS5fX2luaXRfXyhz
ZWxmKQotICAgICAgICBzZWxmLl9jb25uZWN0ZWQgPSBGYWxzZQotICAgICAgICBzZWxmLl9ob3N0
ID0gaG9zdAotICAgICAgICBzZWxmLl9wYXNzd29yZCA9IHBhc3N3b3JkCi0gICAgICAgIHNlbGYu
X3BvcnQgPSBwb3J0Ci0gICAgICAgIHNlbGYuX3VzZXJuYW1lID0gdXNlcm5hbWUKLSAgICAgICAg
c2VsZi5fcmVhZF9mcm9tID0gTm9uZQotICAgICAgICBzZWxmLl9zc2hfY29ubmVjdGlvbiA9IE5v
bmUKLSAgICAgICAgc2VsZi5fdmVuZG9yID0gdmVuZG9yCi0gICAgICAgIHNlbGYuX3dyaXRlX3Rv
ID0gTm9uZQotCi0gICAgZGVmIF9hY2NlcHRfYnl0ZXMoc2VsZiwgYnl0ZXMpOgotICAgICAgICAi
IiJTZWUgU21hcnRDbGllbnRTdHJlYW1NZWRpdW0uYWNjZXB0X2J5dGVzLiIiIgotICAgICAgICBz
ZWxmLl9lbnN1cmVfY29ubmVjdGlvbigpCi0gICAgICAgIHNlbGYuX3dyaXRlX3RvLndyaXRlKGJ5
dGVzKQotCi0gICAgZGVmIGRpc2Nvbm5lY3Qoc2VsZik6Ci0gICAgICAgICIiIlNlZSBTbWFydENs
aWVudE1lZGl1bS5kaXNjb25uZWN0KCkuIiIiCi0gICAgICAgIGlmIG5vdCBzZWxmLl9jb25uZWN0
ZWQ6Ci0gICAgICAgICAgICByZXR1cm4KLSAgICAgICAgc2VsZi5fcmVhZF9mcm9tLmNsb3NlKCkK
LSAgICAgICAgc2VsZi5fd3JpdGVfdG8uY2xvc2UoKQotICAgICAgICBzZWxmLl9zc2hfY29ubmVj
dGlvbi5jbG9zZSgpCi0gICAgICAgIHNlbGYuX2Nvbm5lY3RlZCA9IEZhbHNlCi0KLSAgICBkZWYg
X2Vuc3VyZV9jb25uZWN0aW9uKHNlbGYpOgotICAgICAgICAiIiJDb25uZWN0IHRoaXMgbWVkaXVt
IGlmIG5vdCBhbHJlYWR5IGNvbm5lY3RlZC4iIiIKLSAgICAgICAgaWYgc2VsZi5fY29ubmVjdGVk
OgotICAgICAgICAgICAgcmV0dXJuCi0gICAgICAgIGV4ZWN1dGFibGUgPSBvcy5lbnZpcm9uLmdl
dCgnQlpSX1JFTU9URV9QQVRIJywgJ2J6cicpCi0gICAgICAgIGlmIHNlbGYuX3ZlbmRvciBpcyBO
b25lOgotICAgICAgICAgICAgdmVuZG9yID0gc3NoLl9nZXRfc3NoX3ZlbmRvcigpCi0gICAgICAg
IGVsc2U6Ci0gICAgICAgICAgICB2ZW5kb3IgPSBzZWxmLl92ZW5kb3IKLSAgICAgICAgc2VsZi5f
c3NoX2Nvbm5lY3Rpb24gPSB2ZW5kb3IuY29ubmVjdF9zc2goc2VsZi5fdXNlcm5hbWUsCi0gICAg
ICAgICAgICAgICAgc2VsZi5fcGFzc3dvcmQsIHNlbGYuX2hvc3QsIHNlbGYuX3BvcnQsCi0gICAg
ICAgICAgICAgICAgY29tbWFuZD1bZXhlY3V0YWJsZSwgJ3NlcnZlJywgJy0taW5ldCcsICctLWRp
cmVjdG9yeT0vJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAnLS1hbGxvdy13cml0ZXMnXSkK
LSAgICAgICAgc2VsZi5fcmVhZF9mcm9tLCBzZWxmLl93cml0ZV90byA9IFwKLSAgICAgICAgICAg
IHNlbGYuX3NzaF9jb25uZWN0aW9uLmdldF9maWxlbGlrZV9jaGFubmVscygpCi0gICAgICAgIHNl
bGYuX2Nvbm5lY3RlZCA9IFRydWUKLQotICAgIGRlZiBfZmx1c2goc2VsZik6Ci0gICAgICAgICIi
IlNlZSBTbWFydENsaWVudFN0cmVhbU1lZGl1bS5fZmx1c2goKS4iIiIKLSAgICAgICAgc2VsZi5f
d3JpdGVfdG8uZmx1c2goKQotCi0gICAgZGVmIF9yZWFkX2J5dGVzKHNlbGYsIGNvdW50KToKLSAg
ICAgICAgIiIiU2VlIFNtYXJ0Q2xpZW50U3RyZWFtTWVkaXVtLnJlYWRfYnl0ZXMuIiIiCi0gICAg
ICAgIGlmIG5vdCBzZWxmLl9jb25uZWN0ZWQ6Ci0gICAgICAgICAgICByYWlzZSBlcnJvcnMuTWVk
aXVtTm90Q29ubmVjdGVkKHNlbGYpCi0gICAgICAgIHJldHVybiBzZWxmLl9yZWFkX2Zyb20ucmVh
ZChjb3VudCkKLQotCi1jbGFzcyBTbWFydFRDUENsaWVudE1lZGl1bShTbWFydENsaWVudFN0cmVh
bU1lZGl1bSk6Ci0gICAgIiIiQSBjbGllbnQgbWVkaXVtIHVzaW5nIFRDUC4iIiIKLSAgICAKLSAg
ICBkZWYgX19pbml0X18oc2VsZiwgaG9zdCwgcG9ydCk6Ci0gICAgICAgICIiIkNyZWF0ZXMgYSBj
bGllbnQgdGhhdCB3aWxsIGNvbm5lY3Qgb24gdGhlIGZpcnN0IHVzZS4iIiIKLSAgICAgICAgU21h
cnRDbGllbnRTdHJlYW1NZWRpdW0uX19pbml0X18oc2VsZikKLSAgICAgICAgc2VsZi5fY29ubmVj
dGVkID0gRmFsc2UKLSAgICAgICAgc2VsZi5faG9zdCA9IGhvc3QKLSAgICAgICAgc2VsZi5fcG9y
dCA9IHBvcnQKLSAgICAgICAgc2VsZi5fc29ja2V0ID0gTm9uZQotCi0gICAgZGVmIF9hY2NlcHRf
Ynl0ZXMoc2VsZiwgYnl0ZXMpOgotICAgICAgICAiIiJTZWUgU21hcnRDbGllbnRNZWRpdW0uYWNj
ZXB0X2J5dGVzLiIiIgotICAgICAgICBzZWxmLl9lbnN1cmVfY29ubmVjdGlvbigpCi0gICAgICAg
IHNlbGYuX3NvY2tldC5zZW5kYWxsKGJ5dGVzKQotCi0gICAgZGVmIGRpc2Nvbm5lY3Qoc2VsZik6
Ci0gICAgICAgICIiIlNlZSBTbWFydENsaWVudE1lZGl1bS5kaXNjb25uZWN0KCkuIiIiCi0gICAg
ICAgIGlmIG5vdCBzZWxmLl9jb25uZWN0ZWQ6Ci0gICAgICAgICAgICByZXR1cm4KLSAgICAgICAg
c2VsZi5fc29ja2V0LmNsb3NlKCkKLSAgICAgICAgc2VsZi5fc29ja2V0ID0gTm9uZQotICAgICAg
ICBzZWxmLl9jb25uZWN0ZWQgPSBGYWxzZQotCi0gICAgZGVmIF9lbnN1cmVfY29ubmVjdGlvbihz
ZWxmKToKLSAgICAgICAgIiIiQ29ubmVjdCB0aGlzIG1lZGl1bSBpZiBub3QgYWxyZWFkeSBjb25u
ZWN0ZWQuIiIiCi0gICAgICAgIGlmIHNlbGYuX2Nvbm5lY3RlZDoKLSAgICAgICAgICAgIHJldHVy
bgotICAgICAgICBzZWxmLl9zb2NrZXQgPSBzb2NrZXQuc29ja2V0KCkKLSAgICAgICAgc2VsZi5f
c29ja2V0LnNldHNvY2tvcHQoc29ja2V0LklQUFJPVE9fVENQLCBzb2NrZXQuVENQX05PREVMQVks
IDEpCi0gICAgICAgIHJlc3VsdCA9IHNlbGYuX3NvY2tldC5jb25uZWN0X2V4KChzZWxmLl9ob3N0
LCBpbnQoc2VsZi5fcG9ydCkpKQotICAgICAgICBpZiByZXN1bHQ6Ci0gICAgICAgICAgICByYWlz
ZSBlcnJvcnMuQ29ubmVjdGlvbkVycm9yKCJmYWlsZWQgdG8gY29ubmVjdCB0byAlczolZDogJXMi
ICUKLSAgICAgICAgICAgICAgICAgICAgKHNlbGYuX2hvc3QsIHNlbGYuX3BvcnQsIG9zLnN0cmVy
cm9yKHJlc3VsdCkpKQotICAgICAgICBzZWxmLl9jb25uZWN0ZWQgPSBUcnVlCi0KLSAgICBkZWYg
X2ZsdXNoKHNlbGYpOgotICAgICAgICAiIiJTZWUgU21hcnRDbGllbnRTdHJlYW1NZWRpdW0uX2Zs
dXNoKCkuCi0gICAgICAgIAotICAgICAgICBGb3IgVENQIHdlIGRvIG5vIGZsdXNoaW5nLiBXZSBt
YXkgd2FudCB0byB0dXJuIG9mZiBUQ1BfTk9ERUxBWSBhbmQgCi0gICAgICAgIGFkZCBhIG1lYW5z
IHRvIGRvIGEgZmx1c2gsIGJ1dCB0aGF0IGNhbiBiZSBkb25lIGluIHRoZSBmdXR1cmUuCi0gICAg
ICAgICIiIgotCi0gICAgZGVmIF9yZWFkX2J5dGVzKHNlbGYsIGNvdW50KToKLSAgICAgICAgIiIi
U2VlIFNtYXJ0Q2xpZW50TWVkaXVtLnJlYWRfYnl0ZXMuIiIiCi0gICAgICAgIGlmIG5vdCBzZWxm
Ll9jb25uZWN0ZWQ6Ci0gICAgICAgICAgICByYWlzZSBlcnJvcnMuTWVkaXVtTm90Q29ubmVjdGVk
KHNlbGYpCi0gICAgICAgIHJldHVybiBzZWxmLl9zb2NrZXQucmVjdihjb3VudCkKLQotCi1jbGFz
cyBTbWFydFRDUFRyYW5zcG9ydChTbWFydFRyYW5zcG9ydCk6CitjbGFzcyBSZW1vdGVUQ1BUcmFu
c3BvcnQoUmVtb3RlVHJhbnNwb3J0KToKICAgICAiIiJDb25uZWN0aW9uIHRvIHNtYXJ0IHNlcnZl
ciBvdmVyIHBsYWluIHRjcC4KICAgICAKICAgICBUaGlzIGlzIGVzc2VudGlhbGx5IGp1c3QgYSBm
YWN0b3J5IHRvIGdldCAnUmVtb3RlVHJhbnNwb3J0KHVybCwKQEAgLTE4MzQsMTEgKzQ1NCwxMSBA
QAogICAgICAgICAgICAgZXhjZXB0IChWYWx1ZUVycm9yLCBUeXBlRXJyb3IpLCBlOgogICAgICAg
ICAgICAgICAgIHJhaXNlIGVycm9ycy5JbnZhbGlkVVJMKAogICAgICAgICAgICAgICAgICAgICBw
YXRoPXVybCwgZXh0cmE9ImludmFsaWQgcG9ydCAlcyIgJSBfcG9ydCkKLSAgICAgICAgbWVkaXVt
ID0gU21hcnRUQ1BDbGllbnRNZWRpdW0oX2hvc3QsIF9wb3J0KQotICAgICAgICBzdXBlcihTbWFy
dFRDUFRyYW5zcG9ydCwgc2VsZikuX19pbml0X18odXJsLCBtZWRpdW09bWVkaXVtKQotCi0KLWNs
YXNzIFNtYXJ0U1NIVHJhbnNwb3J0KFNtYXJ0VHJhbnNwb3J0KToKKyAgICAgICAgY2xpZW50X21l
ZGl1bSA9IG1lZGl1bS5TbWFydFRDUENsaWVudE1lZGl1bShfaG9zdCwgX3BvcnQpCisgICAgICAg
IHN1cGVyKFJlbW90ZVRDUFRyYW5zcG9ydCwgc2VsZikuX19pbml0X18odXJsLCBtZWRpdW09Y2xp
ZW50X21lZGl1bSkKKworCitjbGFzcyBSZW1vdGVTU0hUcmFuc3BvcnQoUmVtb3RlVHJhbnNwb3J0
KToKICAgICAiIiJDb25uZWN0aW9uIHRvIHNtYXJ0IHNlcnZlciBvdmVyIFNTSC4KIAogICAgIFRo
aXMgaXMgZXNzZW50aWFsbHkganVzdCBhIGZhY3RvcnkgdG8gZ2V0ICdSZW1vdGVUcmFuc3BvcnQo
dXJsLApAQCAtMTg1NCwxNCArNDc0LDE1IEBACiAgICAgICAgIGV4Y2VwdCAoVmFsdWVFcnJvciwg
VHlwZUVycm9yKSwgZToKICAgICAgICAgICAgIHJhaXNlIGVycm9ycy5JbnZhbGlkVVJMKHBhdGg9
dXJsLCBleHRyYT0iaW52YWxpZCBwb3J0ICVzIiAlIAogICAgICAgICAgICAgICAgIF9wb3J0KQot
ICAgICAgICBtZWRpdW0gPSBTbWFydFNTSENsaWVudE1lZGl1bShfaG9zdCwgX3BvcnQsIF91c2Vy
bmFtZSwgX3Bhc3N3b3JkKQotICAgICAgICBzdXBlcihTbWFydFNTSFRyYW5zcG9ydCwgc2VsZiku
X19pbml0X18odXJsLCBtZWRpdW09bWVkaXVtKQotCi0KLWNsYXNzIFNtYXJ0SFRUUFRyYW5zcG9y
dChTbWFydFRyYW5zcG9ydCk6CisgICAgICAgIGNsaWVudF9tZWRpdW0gPSBtZWRpdW0uU21hcnRT
U0hDbGllbnRNZWRpdW0oX2hvc3QsIF9wb3J0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIF91c2VybmFtZSwgX3Bhc3N3b3JkKQorICAgICAgICBz
dXBlcihSZW1vdGVTU0hUcmFuc3BvcnQsIHNlbGYpLl9faW5pdF9fKHVybCwgbWVkaXVtPWNsaWVu
dF9tZWRpdW0pCisKKworY2xhc3MgUmVtb3RlSFRUUFRyYW5zcG9ydChSZW1vdGVUcmFuc3BvcnQp
OgogICAgICIiIkp1c3QgYSB3YXkgdG8gY29ubmVjdCBiZXR3ZWVuIGEgYnpyK2h0dHA6Ly8gdXJs
IGFuZCBodHRwOi8vLgogICAgIAotICAgIFRoaXMgY29ubmVjdGlvbiBvcGVyYXRlcyBzbGlnaHRs
eSBkaWZmZXJlbnRseSB0aGFuIHRoZSBTbWFydFNTSFRyYW5zcG9ydC4KKyAgICBUaGlzIGNvbm5l
Y3Rpb24gb3BlcmF0ZXMgc2xpZ2h0bHkgZGlmZmVyZW50bHkgdGhhbiB0aGUgUmVtb3RlU1NIVHJh
bnNwb3J0LgogICAgIEl0IHVzZXMgYSBwbGFpbiBodHRwOi8vIHRyYW5zcG9ydCB1bmRlcm5lYXRo
LCB3aGljaCBkZWZpbmVzIHdoYXQgcmVtb3RlCiAgICAgLmJ6ci9zbWFydCBVUkwgd2UgYXJlIGNv
bm5lY3RlZCB0by4gRnJvbSB0aGVyZSwgYWxsIHBhdGhzIHRoYXQgYXJlIHNlbnQgYXJlCiAgICAg
c2VudCBhcyByZWxhdGl2ZSBwYXRocywgdGhpcyB3YXksIHRoZSByZW1vdGUgc2lkZSBjYW4gcHJv
cGVybHkKQEAgLTE4NzgsMTQgKzQ5OSwxNiBAQAogICAgICAgICBlbHNlOgogICAgICAgICAgICAg
c2VsZi5faHR0cF90cmFuc3BvcnQgPSBodHRwX3RyYW5zcG9ydAogICAgICAgICBodHRwX21lZGl1
bSA9IHNlbGYuX2h0dHBfdHJhbnNwb3J0LmdldF9zbWFydF9tZWRpdW0oKQotICAgICAgICBzdXBl
cihTbWFydEhUVFBUcmFuc3BvcnQsIHNlbGYpLl9faW5pdF9fKHVybCwgbWVkaXVtPWh0dHBfbWVk
aXVtKQorICAgICAgICBzdXBlcihSZW1vdGVIVFRQVHJhbnNwb3J0LCBzZWxmKS5fX2luaXRfXyh1
cmwsIG1lZGl1bT1odHRwX21lZGl1bSkKIAogICAgIGRlZiBfcmVtb3RlX3BhdGgoc2VsZiwgcmVs
cGF0aCk6CiAgICAgICAgICIiIkFmdGVyIGNvbm5lY3RpbmcgSFRUUCBUcmFuc3BvcnQgb25seSBk
ZWFscyBpbiByZWxhdGl2ZSBVUkxzLiIiIgotICAgICAgICBpZiByZWxwYXRoID09ICcuJzoKLSAg
ICAgICAgICAgIHJldHVybiAnJwotICAgICAgICBlbHNlOgotICAgICAgICAgICAgcmV0dXJuIHJl
bHBhdGgKKyAgICAgICAgIyBBZGp1c3QgdGhlIHJlbHBhdGggYmFzZWQgb24gd2hpY2ggVVJMIHRo
aXMgc21hcnQgdHJhbnNwb3J0IGlzCisgICAgICAgICMgY29ubmVjdGVkIHRvLgorICAgICAgICBi
YXNlID0gdXJsdXRpbHMubm9ybWFsaXplX3VybChzZWxmLl9odHRwX3RyYW5zcG9ydC5iYXNlKQor
ICAgICAgICB1cmwgPSB1cmx1dGlscy5qb2luKHNlbGYuYmFzZVtsZW4oJ2J6cisnKTpdLCByZWxw
YXRoKQorICAgICAgICB1cmwgPSB1cmx1dGlscy5ub3JtYWxpemVfdXJsKHVybCkKKyAgICAgICAg
cmV0dXJuIHVybHV0aWxzLnJlbGF0aXZlX3VybChiYXNlLCB1cmwpCiAKICAgICBkZWYgYWJzcGF0
aChzZWxmLCByZWxwYXRoKToKICAgICAgICAgIiIiUmV0dXJuIHRoZSBmdWxsIHVybCB0byB0aGUg
Z2l2ZW4gcmVsYXRpdmUgcGF0aC4KQEAgLTE4OTYsMjQgKzUxOSw0MCBAQAogICAgICAgICByZXR1
cm4gc2VsZi5fdW5wYXJzZV91cmwoc2VsZi5fY29tYmluZV9wYXRocyhzZWxmLl9wYXRoLCByZWxw
YXRoKSkKIAogICAgIGRlZiBjbG9uZShzZWxmLCByZWxhdGl2ZV91cmwpOgotICAgICAgICAiIiJN
YWtlIGEgbmV3IFNtYXJ0SFRUUFRyYW5zcG9ydCByZWxhdGVkIHRvIG1lLgorICAgICAgICAiIiJN
YWtlIGEgbmV3IFJlbW90ZUhUVFBUcmFuc3BvcnQgcmVsYXRlZCB0byBtZS4KIAogICAgICAgICBU
aGlzIGlzIHJlLWltcGxlbWVudGVkIHJhdGhlciB0aGFuIHVzaW5nIHRoZSBkZWZhdWx0Ci0gICAg
ICAgIFNtYXJ0VHJhbnNwb3J0LmNsb25lKCkgYmVjYXVzZSB3ZSBtdXN0IGJlIGNhcmVmdWwgYWJv
dXQgdGhlIHVuZGVybHlpbmcKKyAgICAgICAgUmVtb3RlVHJhbnNwb3J0LmNsb25lKCkgYmVjYXVz
ZSB3ZSBtdXN0IGJlIGNhcmVmdWwgYWJvdXQgdGhlIHVuZGVybHlpbmcKICAgICAgICAgaHR0cCB0
cmFuc3BvcnQuCisKKyAgICAgICAgQWxzbywgdGhlIGNsb25lZCBzbWFydCB0cmFuc3BvcnQgd2ls
bCBQT1NUIHRvIHRoZSBzYW1lIC5ienIvc21hcnQKKyAgICAgICAgbG9jYXRpb24gYXMgdGhpcyB0
cmFuc3BvcnQgKGFsdGhvdWdoIG9idmlvdXNseSB0aGUgcmVsYXRpdmUgcGF0aHMgaW4gdGhlCisg
ICAgICAgIHNtYXJ0IHJlcXVlc3RzIG1heSBiZSBkaWZmZXJlbnQpLiAgVGhpcyBpcyBzbyB0aGF0
IHRoZSBzZXJ2ZXIgZG9lc24ndAorICAgICAgICBoYXZlIHRvIGhhbmRsZSAuYnpyL3NtYXJ0IHJl
cXVlc3RzIGF0IGFyYml0cmFyeSBwbGFjZXMgaW5zaWRlIC5ienIKKyAgICAgICAgZGlyZWN0b3Jp
ZXMsIGp1c3QgYXQgdGhlIGluaXRpYWwgVVJMIHRoZSB1c2VyIHVzZXMuCisKKyAgICAgICAgVGhl
IGV4Y2VwdGlvbiBpcyBwYXJlbnQgcGF0aHMgKGkuZS4gcmVsYXRpdmVfdXJsIG9mICIuLiIpLgog
ICAgICAgICAiIiIKICAgICAgICAgaWYgcmVsYXRpdmVfdXJsOgogICAgICAgICAgICAgYWJzX3Vy
bCA9IHNlbGYuYWJzcGF0aChyZWxhdGl2ZV91cmwpCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAg
ICBhYnNfdXJsID0gc2VsZi5iYXNlCi0gICAgICAgICMgQnkgY2xvbmluZyB0aGUgdW5kZXJseWlu
ZyBodHRwX3RyYW5zcG9ydCwgd2UgYXJlIGFibGUgdG8gc2hhcmUgdGhlCi0gICAgICAgICMgY29u
bmVjdGlvbi4KLSAgICAgICAgbmV3X3RyYW5zcG9ydCA9IHNlbGYuX2h0dHBfdHJhbnNwb3J0LmNs
b25lKHJlbGF0aXZlX3VybCkKLSAgICAgICAgcmV0dXJuIFNtYXJ0SFRUUFRyYW5zcG9ydChhYnNf
dXJsLCBodHRwX3RyYW5zcG9ydD1uZXdfdHJhbnNwb3J0KQorICAgICAgICAjIFdlIGVpdGhlciB1
c2UgdGhlIGV4YWN0IHNhbWUgaHR0cF90cmFuc3BvcnQgKGZvciBjaGlsZCBsb2NhdGlvbnMpLCBv
cgorICAgICAgICAjIGEgY2xvbmUgb2YgdGhlIHVuZGVybHlpbmcgaHR0cF90cmFuc3BvcnQgKGZv
ciBwYXJlbnQgbG9jYXRpb25zKS4gIFRoaXMKKyAgICAgICAgIyBtZWFucyB3ZSBzaGFyZSB0aGUg
Y29ubmVjdGlvbi4KKyAgICAgICAgbm9ybV9iYXNlID0gdXJsdXRpbHMubm9ybWFsaXplX3VybChz
ZWxmLmJhc2UpCisgICAgICAgIG5vcm1fYWJzX3VybCA9IHVybHV0aWxzLm5vcm1hbGl6ZV91cmwo
YWJzX3VybCkKKyAgICAgICAgbm9ybWFsaXplZF9yZWxfdXJsID0gdXJsdXRpbHMucmVsYXRpdmVf
dXJsKG5vcm1fYmFzZSwgbm9ybV9hYnNfdXJsKQorICAgICAgICBpZiBub3JtYWxpemVkX3JlbF91
cmwgPT0gIi4uIiBvciBub3JtYWxpemVkX3JlbF91cmwuc3RhcnRzd2l0aCgiLi4vIik6CisgICAg
ICAgICAgICBodHRwX3RyYW5zcG9ydCA9IHNlbGYuX2h0dHBfdHJhbnNwb3J0LmNsb25lKG5vcm1h
bGl6ZWRfcmVsX3VybCkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGh0dHBfdHJhbnNwb3J0
ID0gc2VsZi5faHR0cF90cmFuc3BvcnQKKyAgICAgICAgcmV0dXJuIFJlbW90ZUhUVFBUcmFuc3Bv
cnQoYWJzX3VybCwgaHR0cF90cmFuc3BvcnQ9aHR0cF90cmFuc3BvcnQpCiAKIAogZGVmIGdldF90
ZXN0X3Blcm11dGF0aW9ucygpOgogICAgICIiIlJldHVybiAodHJhbnNwb3J0LCBzZXJ2ZXIpIHBl
cm11dGF0aW9ucyBmb3IgdGVzdGluZy4iIiIKICAgICAjIyMgV2UgbWF5IG5lZWQgYSBsaXR0bGUg
bW9yZSB0ZXN0IGZyYW1ld29yayBzdXBwb3J0IHRvIGNvbnN0cnVjdCBhbgogICAgICMjIyBhcHBy
b3ByaWF0ZSBSZW1vdGVUcmFuc3BvcnQgaW4gdGhlIGZ1dHVyZS4KLSAgICByZXR1cm4gWyhTbWFy
dFRDUFRyYW5zcG9ydCwgU21hcnRUQ1BTZXJ2ZXJfZm9yX3Rlc3RpbmcpXQorICAgIGZyb20gYnpy
bGliLnNtYXJ0IGltcG9ydCBzZXJ2ZXIKKyAgICByZXR1cm4gWyhSZW1vdGVUQ1BUcmFuc3BvcnQs
IHNlcnZlci5TbWFydFRDUFNlcnZlcl9mb3JfdGVzdGluZyldCgo=

=== modified file .bzrignore // last-changed:robertc@robertcollins.net-20070509
... 153606-m556z2rb3d76b2f3 // encoding:base64
LS0tIC5ienJpZ25vcmUKKysrIC5ienJpZ25vcmUKQEAgLTMzLDMgKzMzLDUgQEAKIC4vLnBlcmZf
aGlzdG9yeQogLi9odG1sX2RvY3MKIC4vcHJldHR5X2RvY3MKKy4vYXBpCitkb2MvKiovKi5odG0K
Cg==

=== modified file Makefile // last-changed:robertc@robertcollins.net-2007050804
... 1401-rreosr07ptz41d6c // encoding:base64
LS0tIE1ha2VmaWxlCisrKyBNYWtlZmlsZQpAQCAtMSw2ICsxLDMxIEBACi1hbGw6Ci0KLWNoZWNr
OgorIyBDb3B5cmlnaHQgKEMpIDIwMDUsIDIwMDYsIDIwMDcgQ2Fub25pY2FsIEx0ZAorIworIyBU
aGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5k
L29yIG1vZGlmeQorIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1Ymxp
YyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u
OyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgorIyAoYXQgeW91ciBvcHRpb24p
IGFueSBsYXRlciB2ZXJzaW9uLgorIworIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4g
dGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJB
TlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyMgTUVSQ0hBTlRBQklM
SVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorIyBHTlUg
R2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorIworIyBZb3Ugc2hvdWxk
IGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQor
IyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0
d2FyZQorIyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9z
dG9uLCBNQSAgMDIxMTEtMTMwNyAgVVNBCisKKyMgQSByZWxhdGl2ZWx5IHNpbXBsZSBNYWtlZmls
ZSB0byBhc3Npc3QgaW4gYnVpbGRpbmcgcGFydHMgb2YgYnpyLiBNb3N0bHkgZm9yCisjIGJ1aWxk
aW5nIGRvY3VtZW50YXRpb24sIGV0Yy4KKworLlBIT05ZOiBhbGwgY2xlYW4gZXh0ZW5zaW9ucyBw
eWZsYWtlcyBhcGktZG9jcworCithbGw6IGV4dGVuc2lvbnMKKworZXh0ZW5zaW9uczoKKwlAZWNo
byAiYnVpbGRpbmcgZXh0ZW5zaW9uIG1vZHVsZXMuIgorCXB5dGhvbiBzZXR1cC5weSBidWlsZF9l
eHQgLWkKKworY2hlY2s6IGV4dGVuc2lvbnMKIAlweXRob24gLVdlcnJvciAuL2J6ciBzZWxmdGVz
dCAtdiAkKHRlc3RzKQogCUBlY2hvICJSdW5uaW5nIGFsbCB0ZXN0cyB3aXRoIG5vIGxvY2FsZS4i
CiAJTENfQ1RZUEU9IExBTkc9QyBMQ19BTEw9IC4vYnpyIHNlbGZ0ZXN0IC12ICQodGVzdHMpCkBA
IC0xOSwxMSArNDQsMTcgQEAKIAlweWZsYWtlcyBienJsaWIgfCBncmVwIC12ICcgaW1wb3J0ZWQg
YnV0IHVudXNlZCcKIAogY2xlYW46Ci0JLi9zZXR1cC5weSBjbGVhbgorCXB5dGhvbiBzZXR1cC5w
eSBjbGVhbgogCS1maW5kIC4gLW5hbWUgIioucHljIiAtbyAtbmFtZSAiKi5weW8iIHwgeGFyZ3Mg
cm0gLWYKIAlybSAtcmYgdGVzdD8/Pz8udG1wCiAKLS5QSE9OWTogYWxsCitkb2NmaWxlcyA9IGJ6
ciBienJsaWIKK2FwaS1kb2NzOgorCW1rZGlyIC1wIGFwaS9odG1sCisJUFlUSE9OUEFUSD0kKFBX
RCkgcHl0aG9uIHRvb2xzL2J6cl9lcHlkb2MgLS1odG1sIC1vIGFwaS9odG1sIC0tZG9jZm9ybWF0
ICdyZXN0cnVjdHVyZWR0ZXh0IGVuJyAkKGRvY2ZpbGVzKQorCitjaGVjay1hcGktZG9jczoKKwlQ
WVRIT05QQVRIPSQoUFdEKSBweXRob24gdG9vbHMvYnpyX2VweWRvYyAtLWNoZWNrIC0tZG9jZm9y
bWF0ICdyZXN0cnVjdHVyZWR0ZXh0IGVuJyAkKGRvY2ZpbGVzKQogCiAKICMgYnVpbGQgZW1hY3Mg
Y3Jvc3MtcmVmZXJlbmNlCkBAIC00NCw2ICs3NSw4IEBACiBkb2NfZGlyIDo9IGRvYyAKIHR4dF9m
aWxlcyA6PSAkKHdpbGRjYXJkICQoYWRkc3VmZml4IC8qLnR4dCwgJChkb2NfZGlyKSkpIGRvYy9i
enJfbWFuLnR4dAogaHRtX2ZpbGVzIDo9ICQocGF0c3Vic3QgJS50eHQsICUuaHRtLCAkKHR4dF9m
aWxlcykpIAorZGV2X3R4dF9maWxlcyA6PSAkKHdpbGRjYXJkICQoYWRkc3VmZml4IC8qLnR4dCwg
ZG9jL2RldmVsb3BlcnMpKQorZGV2X2h0bV9maWxlcyA6PSAkKHBhdHN1YnN0ICUudHh0LCAlLmh0
bSwgJChkZXZfdHh0X2ZpbGVzKSkgCiAKIHByZXR0eS1odG1sLWRvY3M6IHByZXR0eV9maWxlcwog
CkBAIC01MiwzMSArODUsNDggQEAKIAogcHJldHR5X2ZpbGVzOiAkKHBhdHN1YnN0IGRvYy8lLnR4
dCwgJChQUkVUVFlESVIpLyUuaHRtLCAkKHR4dF9maWxlcykpCiAKLWRvYy8lLmh0bTogZG9jLyUu
dHh0Ci0JcHl0aG9uIHRvb2xzL3JzdDJodG1sLnB5IC0tbGluay1zdHlsZXNoZWV0IC0tc3R5bGVz
aGVldD1kZWZhdWx0LmNzcyBkb2MvJCoudHh0IGRvYy8kKi5odG0KK2RvYy9kZXZlbG9wZXJzLyUu
aHRtOiBkb2MvZGV2ZWxvcGVycy8lLnR4dAorCXB5dGhvbiB0b29scy9yc3QyaHRtbC5weSAtLWxp
bmstc3R5bGVzaGVldCAtLXN0eWxlc2hlZXQ9Li4vZGVmYXVsdC5jc3MgJDwgJEAKKworZG9jL2Rl
dmVsb3BlcnMvSEFDS0lORy5odG06IGRvYy9kZXZlbG9wZXJzL0hBQ0tJTkcKKwlweXRob24gdG9v
bHMvcnN0Mmh0bWwucHkgLS1saW5rLXN0eWxlc2hlZXQgLS1zdHlsZXNoZWV0PS4uL2RlZmF1bHQu
Y3NzICQ8ICRACisKKyUuaHRtOiAlLnR4dAorCXB5dGhvbiB0b29scy9yc3QyaHRtbC5weSAtLWxp
bmstc3R5bGVzaGVldCAtLXN0eWxlc2hlZXQ9ZGVmYXVsdC5jc3MgJDwgJEAKIAogJChQUkVUVFlE
SVIpLyUuaHRtOiBwcmV0dHlfZG9jcyBkb2MvJS50eHQKIAlweXRob24gdG9vbHMvcnN0MnByZXR0
eWh0bWwucHkgZG9jL2JhemFhci12Y3Mub3JnLmtpZCBkb2MvJCoudHh0IFwKIAkkKFBSRVRUWURJ
UikvJCouaHRtCiAKLWRvYy9ienJfbWFuLnR4dDogYnpybGliL2J1aWx0aW5zLnB5IFwKK01BTl9E
RVBFTkRFTkNJRVMgPSBienJsaWIvYnVpbHRpbnMucHkgXAogCQkgYnpybGliL2J1bmRsZS9jb21t
YW5kcy5weSBcCiAJCSBienJsaWIvY29uZmxpY3RzLnB5IFwKIAkJIGJ6cmxpYi9zaWduX215X2Nv
bW1pdHMucHkgXAogCQkgZ2VuZXJhdGVfZG9jcy5weSBcCiAJCSB0b29scy9kb2NfZ2VuZXJhdGUv
X19pbml0X18ucHkgXAogCQkgdG9vbHMvZG9jX2dlbmVyYXRlL2F1dG9kb2NfcnN0eC5weQotCXB5
dGhvbiBnZW5lcmF0ZV9kb2NzLnB5IC1vIGRvYy9ienJfbWFuLnR4dCByc3R4Ci0KLWRvY3M6ICQo
aHRtX2ZpbGVzKQorCitkb2MvYnpyX21hbi50eHQ6ICQoTUFOX0RFUEVOREVOQ0lFUykKKwlweXRo
b24gZ2VuZXJhdGVfZG9jcy5weSAtbyAkQCByc3R4CisKK01BTl9QQUdFUyA9IG1hbjEvYnpyLjEK
K21hbjEvYnpyLjE6ICQoTUFOX0RFUEVOREVOQ0lFUykKKwlweXRob24gZ2VuZXJhdGVfZG9jcy5w
eSAtbyAkQCBtYW4KKworQUxMX0RPQ1MgPSAkKGh0bV9maWxlcykgJChNQU5fUEFHRVMpIGRvYy9k
ZXZlbG9wZXJzL0hBQ0tJTkcuaHRtICQoZGV2X2h0bV9maWxlcykKK2RvY3M6ICQoQUxMX0RPQ1Mp
CiAKIGNvcHktZG9jczogZG9jcwotCXB5dGhvbiB0b29scy93aW4zMi9vc3Rvb2xzLnB5IGNvcHl0
b2RpciAkKGh0bV9maWxlcykgZG9jL2RlZmF1bHQuY3NzIE5FV1MgUkVBRE1FICB3aW4zMl9ienIu
ZXhlL2RvYworCXB5dGhvbiB0b29scy93aW4zMi9vc3Rvb2xzLnB5IGNvcHl0b2RpciAkKGh0bV9m
aWxlcykgXAorCQlkb2MvZGVmYXVsdC5jc3MgTkVXUyBSRUFETUUgXAorCQl3aW4zMl9ienIuZXhl
L2RvYworCXB5dGhvbiB0b29scy93aW4zMi9vc3Rvb2xzLnB5IGNvcHl0b2RpciBkb2MvZGV2ZWxv
cGVycy9IQUNLSU5HLmh0bSBcCisJCXdpbjMyX2J6ci5leGUvZG9jL2RldmVsb3BlcnMKIAogIyBj
bGVhbiBwcm9kdWNlZCBkb2NzCiBjbGVhbi1kb2NzOgotCXB5dGhvbiB0b29scy93aW4zMi9vc3Rv
b2xzLnB5IHJlbW92ZSBkb2MvYnpyX21hbi50eHQgJChodG1fZmlsZXMpIFwKLQkkKEhUTUxESVIp
ICQoUFJFVFRZRElSKQorCXB5dGhvbiB0b29scy93aW4zMi9vc3Rvb2xzLnB5IHJlbW92ZSAkKEFM
TF9ET0NTKSBcCisJJChIVE1MRElSKSAkKFBSRVRUWURJUikgZG9jL2J6cl9tYW4udHh0CiAKIAog
IyBtYWtlIGJ6ci5leGUgZm9yIHdpbjMyIHdpdGggcHkyZXhlCgo=

=== modified file NEWS // last-changed:pqm@pqm.ubuntu.com-20070510055501-w262sk
... 5hl33vmd19 // encoding:base64
LS0tIE5FV1MKKysrIE5FV1MKQEAgLTEsMTAgKzEsMTcwIEBACiBJTiBERVZFTE9QTUVOVAogCisg
IEJVR0ZJWEVTOgorCisgICAgKiBgYGJ6ciBwdXNoYGAgc2hvdWxkIG9ubHkgY29ubmVjdCB0byB0
aGUgcmVtb3RlIGxvY2F0aW9uIG9uZSB0aW1lLgorICAgICAgV2UgaGF2ZSBiZWVuIGNvbm5lY3Rp
bmcgMyB0aW1lcyBiZWNhdXNlIHdlIGZvcmdldCB0byBwYXNzIGFyb3VuZAorICAgICAgdGhlIFRy
YW5zcG9ydCBvYmplY3QuIFRoaXMgYWRkcyBgYEJ6ckRpci5jbG9uZV9vbl90cmFuc3BvcnQoKWBg
LCBzbworICAgICAgdGhhdCB3ZSBjYW4gcGFzcyBpbiB0aGUgVHJhbnNwb3J0IHRoYXQgd2UgYWxy
ZWFkeSBoYXZlLgorICAgICAgKEpvaG4gQXJiYXNoIE1laW5lbCwgIzc1NzIxKQorCisKK2J6ciAw
LjE2ICAyMDA3LTA1LTA3CisgIAorICBCVUdGSVhFUzoKKworICAgICogSGFuZGxlIHdoZW4geW91
IGhhdmUgMiBkaXJlY3RvcmllcyB3aXRoIHNpbWlsYXIgbmFtZXMsIGJ1dCBvbmUgaGFzIGEKKyAg
ICAgIGh5cGhlbi4gKGBgJ2FiYydgYCB2ZXJzdXMgYGAnYWJjLTInYGApLiBUaGUgV1Q0Ll9pdGVy
X2NoYW5nZXMKKyAgICAgIGl0ZXJhdG9yIHdhcyB1c2luZyBkaXJlY3QgY29tcGFyaXNvbiBhbmQg
YGAnYWJjL2EnYGAgc29ydHMgYWZ0ZXIKKyAgICAgIGBgJ2FiYy0yJ2BgLCBidXQgYGAoJ2FiYycs
ICdhJylgYCBzb3J0cyBiZWZvcmUgYGAoJ2FiYy0yJywpYGAuCisgICAgICAoSm9obiBBcmJhc2gg
TWVpbmVsLCAjMTExMjI3KQorCisgICAgKiBIYW5kbGUgd2hlbiBzb21lb25lIHJlbmFtZXMgYSBm
aWxlIG9uIGRpc2sgd2l0aG91dCB0ZWxsaW5nIGJ6ci4KKyAgICAgIFByZXZpb3VzbHkgd2Ugd291
bGQgcmVwb3J0IHRoZSBmaXJzdCBmaWxlIGFzIG1pc3NpbmcsIGJ1dCBub3Qgc2hvdworICAgICAg
dGhlIG5ldyB1bmtub3duIGZpbGUuIChKb2huIEFyYmFzaCBNZWluZWwsICMxMTEyODgpCisKKyAg
ICAqIEF2b2lkIGVycm9yIHdoZW4gcnVubmluZyBob29rcyBhZnRlciBwdWxsaW5nIGludG8gb3Ig
cHVzaGluZyBmcm9tCisgICAgICBhIGJyYW5jaCBib3VuZCB0byBhIHNtYXJ0c2VydmVyIGJyYW5j
aC4gIChNYXJ0aW4gUG9vbCwgIzExMTk2OCkKKworICBJTVBST1ZFTUVOVFM6CisKKyAgICAqIE1v
dmUgZGV2ZWxvcGVyIGRvY3VtZW50YXRpb24gdG8gZG9jL2RldmVsb3BlcnMvLiBUaGlzIHJlZHVj
ZXMgY2x1dHRlciBpbgorICAgICAgdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZSB0cmVlIGFuZCBhbGxv
d3MgSEFDS0lORyB0byBiZSBzcGxpdCBpbnRvIG11bHRpcGxlCisgICAgICBmaWxlcy4gKFJvYmVy
dCBDb2xsaW5zLCBBbGV4YW5kZXIgQmVsY2hlbmtvKQorCitienIgMC4xNnJjMiAgMjAwNy0wNC0z
MAorCisgIEJVR0ZJWEVTOgorCisgICAgKiBIYW5kbGUgdGhlIGNhc2Ugd2hlbiB5b3UgZGVsZXRl
IGEgZmlsZSwgYW5kIHRoZW4gcmVuYW1lIGFub3RoZXIgZmlsZQorICAgICAgb24gdG9wIG9mIGl0
LiBBbHNvIGhhbmRsZSB0aGUgY2FzZSBvZiBgYGJ6ciBybSAtLWtlZXAgZm9vYGAuIGBgYnpyCisg
ICAgICBzdGF0dXNgYCBzaG91bGQgc2hvdyB0aGUgcmVtb3ZlZCBmaWxlIGFuZCBhbiB1bmtub3du
IGZpbGUgaW4gaXRzCisgICAgICBwbGFjZS4gKEpvaG4gQXJiYXNoIE1laW5lbCwgIzEwOTk5MykK
KworICAgICogQnVuZGxlcyBwcm9wZXJseSByZWFkIGFuZCB3cml0ZSByZXZpc2lvbiBwcm9wZXJ0
aWVzIHRoYXQgaGF2ZSBhbgorICAgICAgZW1wdHkgdmFsdWUuIEFuZCB3aGVuIHRoZSB2YWx1ZSBp
cyBub3QgQVNDSUkuCisgICAgICAoSm9obiBBcmJhc2ggTWVpbmVsLCAjMTA5NjEzKQorCisgICAg
KiBGaXggdGhlIGJ6ciBjb21taXQgbWVzc2FnZSB0byBiZSBpbiB0ZXh0IG1vZGUuCisgICAgICAo
QWxleGFuZGVyIEJlbGNoZW5rbywgIzExMDkwMSkKKworICAgICogQWxzbyBoYW5kbGUgd2hlbiB5
b3UgcmVuYW1lIGEgZmlsZSBhbmQgY3JlYXRlIGEgZmlsZSB3aGVyZSBpdCB1c2VkCisgICAgICB0
byBiZS4gKEpvaG4gQXJiYXNoIE1laW5lbCwgIzExMDI1NikKKworICAgICogYGBXb3JraW5nVHJl
ZTQuX2l0ZXJfY2hhbmdlc2BgIHNob3VsZCBub3QgZGVzY2VuZCBpbnRvIHVudmVyc2lvbmVkCisg
ICAgICBkaXJlY3Rvcmllcy4gKEpvaG4gQXJiYXNoIE1laW5lbCwgIzExMDM5OSkKKworYnpyIDAu
MTZyYzEgIDIwMDctMDQtMjYKKworICBOT1RFUyBXSEVOIFVQR1JBRElORzoKKworICAgICogYGBi
enIgcmVtb3ZlYGAgYW5kIGBgYnpyIHJtYGAgd2lsbCBub3cgcmVtb3ZlIHRoZSB3b3JraW5nIGZp
bGUsIGlmCisgICAgICBpdCBjb3VsZCBiZSByZWNvdmVyZWQgYWdhaW4uCisgICAgICBUaGlzIGhh
cyBiZWVuIGRvbmUgZm9yIGNvbnNpc3RlbmN5IHdpdGggc3ZuIGFuZCB0aGUgdW5peCBybSBjb21t
YW5kLgorICAgICAgVGhlIG9sZCBgYHJlbW92ZWBgIGJlaGF2aW91ciBoYXMgYmVlbiByZXRhaW5l
ZCBpbiB0aGUgbmV3IG9wdGlvbgorICAgICAgYGBienIgcmVtb3ZlIC0ta2VlcGBgLCB3aGljaCB3
aWxsIGp1c3Qgc3RvcCB2ZXJzaW9uaW5nIHRoZSBmaWxlLAorICAgICAgYnV0IG5vdCBkZWxldGUg
aXQuCisgICAgICBgYGJ6ciByZW1vdmUgLS1mb3JjZWBgIGhhdmUgYmVlbiBhZGRlZCB3aGljaCB3
aWxsIGFsd2F5cyBkZWxldGUgdGhlCisgICAgICBmaWxlcy4KKyAgICAgIGBgYnpyIHJlbW92ZWBg
IGlzIGFsc28gbW9yZSB2ZXJib3NlLgorICAgICAgKE1hcml1cyBLcnVnZXIsICM4MjYwMikKKwog
ICBJTVBST1ZFTUVOVFM6CiAKICAgICAqIE1lcmdlIGRpcmVjdGl2ZXMgY2FuIG5vdyBiZSBzdXBw
bGllZCBhcyBpbnB1dCB0byBgbWVyZ2VgIGFuZCBgcHVsbGAsCiAgICAgICBsaWtlIGJ1bmRsZXMg
Y2FuLiAgKEFhcm9uIEJlbnRsZXkpCiAKKyAgICAqIFNlbmRpbmcgdGhlIFNJR1FVSVQgc2lnbmFs
IHRvIGJ6ciwgd2hpY2ggY2FuIGJlIGRvbmUgb24gVW5peCBieQorICAgICAgcHJlc3NpbmcgQ29u
dHJvbC1CYWNrc2xhc2gsIGRyb3BzIGJ6ciBpbnRvIGEgZGVidWdnZXIuICBUeXBlIGBgJ2MnYGAK
KyAgICAgIHRvIGNvbnRpbnVlLiAgVGhpcyBjYW4gYmUgZGlzYWJsZWQgYnkgc2V0dGluZyB0aGUg
ZW52aXJvbm1lbnQgdmFyaWFibGUKKyAgICAgIGBgQlpSX1NJR1FVSVRfUERCPTBgYC4gIChNYXJ0
aW4gUG9vbCkKKworICAgICogc2VsZnRlc3Qgbm93IHN1cHBvcnRzIC0tbGlzdC1vbmx5IHRvIGxp
c3QgdGVzdHMgaW5zdGVhZCBvZiBydW5uaW5nCisgICAgICB0aGVtLiAoSWFuIENsYXR3b3J0aHkp
CisKKyAgICAqIHNlbGZ0ZXN0IG5vdyBzdXBwb3J0cyAtLWV4Y2x1ZGUgUEFUVEVSTiAob3IgLXgg
UEFUVEVSTikgdG8gZXhjbHVkZQorICAgICAgdGVzdHMgd2l0aCBuYW1lcyB0aGF0IG1hdGNoIHRo
YXQgcmVndWxhciBleHByZXNzaW9uLgorICAgICAgKElhbiBDbGF0d29ydGh5LCAjMTAyNjc5KQor
CisgICAgKiBzZWxmdGVzdCBub3cgc3VwcG9ydHMgLS1yYW5kb21pemUgU0VFRCB0byBydW4gdGVz
dHMgaW4gYSByYW5kb20gb3JkZXIuCisgICAgICBTRUVEIGlzIHR5cGljYWxseSB0aGUgdmFsdWUg
J25vdycgbWVhbmluZyAndXNlIHRoZSBjdXJyZW50IHRpbWUnLgorICAgICAgKElhbiBDbGF0d29y
dGh5LCAjMTAyNjg2KQorCisgICAgKiBOZXcgb3B0aW9uIGBgLS1maXhlc2BgIHRvIGNvbW1pdCwg
d2hpY2ggc3RvcmVzIGJ1ZyBmaXhpbmcgYW5ub3RhdGlvbnMgYXMKKyAgICAgIHJldmlzaW9uIHBy
b3BlcnRpZXMuIEJ1aWx0LWluIHN1cHBvcnQgZm9yIExhdW5jaHBhZCwgRGViaWFuLCBUcmFjIGFu
ZAorICAgICAgQnVnemlsbGEgYnVnIHRyYWNrZXJzLiAoSm9uYXRoYW4gTGFuZ2UsIEphbWVzIEhl
bnN0cmlkZ2UsIFJvYmVydCBDb2xsaW5zKQorCisgICAgKiBOZXcgQVBJLCBgYGJ6cmxpYi5idWd0
cmFja2VyLnRyYWNrZXJfcmVnaXN0cnlgYCwgZm9yIGFkZGluZyBzdXBwb3J0IGZvcgorICAgICAg
b3RoZXIgYnVnIHRyYWNrZXJzIHRvIGBgZml4ZXNgYC4gKEpvbmF0aGFuIExhbmdlLCBKYW1lcyBI
ZW5zdHJpZGdlLAorICAgICAgUm9iZXJ0IENvbGxpbnMpCisKKyAgICAqIGBgc2VsZnRlc3RgYCBo
YXMgbmV3IHNob3J0IG9wdGlvbnMgYGAtZmBgIGFuZCBgYC0xYGAuICAoTWFydGluCisgICAgICBQ
b29sKQorCisgICAgKiBgYGJ6cmxpYi50c29ydC5NZXJnZVNvcnRlcmBgIG9wdGltaXphdGlvbnMu
IENoYW5nZSB0aGUgaW5uZXIgbG9vcAorICAgICAgaW50byB1c2luZyBsb2NhbCB2YXJpYWJsZXMg
aW5zdGVhZCBvZiBnb2luZyB0aHJvdWdoIGBgc2VsZi5fdmFyYGAuCisgICAgICBJbXByb3ZlcyB0
aGUgdGltZSB0byBgYG1lcmdlX3NvcnRgYCBhIDEwayByZXZpc2lvbiBncmFwaCBieQorICAgICAg
YXBwcm94aW1hdGVseSA0MCUgKH43MDAtPjQwMG1zKS4gIChKb2huIEFyYmFzaCBNZWluZWwpCisK
KyAgICAqIGBgbWFrZSBkb2NzYGAgbm93IGNyZWF0ZXMgYSBtYW4gcGFnZSBhdCBgYG1hbjEvYnpy
LjFgYCBmaXhpbmcgYnVnIDEwNzM4OC4KKyAgICAgIChSb2JlcnQgQ29sbGlucykKKworICAgICog
YGBienIgaGVscGBgIG5vdyBwcm92aWRlcyBjcm9zcyByZWZlcmVuY2VzIHRvIG90aGVyIGhlbHAg
dG9waWNzIHVzaW5nCisgICAgICB0aGUgX3NlZV9hbHNvIGZhY2lsaXR5IG9uIGNvbW1hbmQgY2xh
c3Nlcy4gTGlrZXdpc2UgdGhlIGJ6cl9tYW4KKyAgICAgIGRvY3VtZW50YXRpb24sIGFuZCB0aGUg
YnpyLjEgbWFuIHBhZ2UgYWxzbyBpbmNsdWRlIHRoaXMgaW5mb3JtYXRpb24uCisgICAgICAoUm9i
ZXJ0IENvbGxpbnMpCisKKyAgICAqIFRhZ3MgYXJlIG5vdyBpbmNsdWRlZCBpbiBsb2dzLCB0aGF0
IHVzZSB0aGUgbG9uZyBsb2cgZm9ybWF0dGVyLiAKKyAgICAgIChFcmlrIELDpWdmb3JzLCBBbGV4
YW5kZXIgQmVsY2hlbmtvKQorCisgICAgKiBgYGJ6ciBoZWxwYGAgcHJvdmlkZXMgYSBjbGVhcmVy
IG1lc3NhZ2Ugd2hlbiBhIGhlbHAgdG9waWMgY2Fubm90IGJlCisgICAgICBmb3VuZC4gKFJvYmVy
dCBDb2xsaW5zLCAjMTA3NjU2KQorCisgICAgKiBgYGJ6ciBoZWxwYGAgbm93IGFjY2VwdHMgb3B0
aW9uYWwgcHJlZml4ZXMgZm9yIGNvbW1hbmQgaGVscC4gVGhlIGhlbHAKKyAgICAgIGZvciBhbGwg
Y29tbWFuZHMgY2FuIG5vdyBiZSBmb3VuZCBhdCBgYGJ6ciBoZWxwIGNvbW1hbmRzL0NPTU1BTkRO
QU1FYGAKKyAgICAgIGFzIHdlbGwgYXMgYGBienIgaGVscCBDT01NQU5ETkFNRWBgICh3aGljaCBv
bmx5IHdvcmtzIGZvciBjb21tYW5kcyAKKyAgICAgIHdoZXJlIHRoZSBuYW1lIGlzIG5vdCB0aGUg
c2FtZSBhcyBhIG1vcmUgZ2VuZXJhbCBoZWxwIHRvcGljKS4gCisgICAgICAoUm9iZXJ0IENvbGxp
bnMpCisKKyAgICAqIGBgYnpyIGhlbHAgUExVR0lOTkFNRWBgIHdpbGwgbm93IHJldHVybiB0aGUg
bW9kdWxlIGRvY3N0cmluZyBmcm9tIHRoZQorICAgICAgcGx1Z2luIFBMVUdJTk5BTUUuIChSb2Jl
cnQgQ29sbGlucywgIzUwNDA4KQorCisgICAgKiBOZXcgaGVscCB0b3BpYyBgYHVybHNwZWNgYCB3
aGljaCBsaXN0cyB0aGUgYXZhaWxhYmxlcyB0cmFuc3BvcnRzLgorICAgICAgKEdvZmZyZWRvIEJh
cm9uY2VsbGkpCisKKyAgICAqIGRvYy9zZXJ2ZXIudHh0IHVwZGF0ZWQgdG8gZG9jdW1lbnQgdGhl
IGRlZmF1bHQgYnpyOi8vIHBvcnQKKyAgICAgIGFuZCBhbHNvIHVwZGF0ZSB0aGUgYmx1cmIgYWJv
dXQgdGhlIGhwc3MnIGN1cnJlbnQgc3RhdHVzLgorICAgICAgKFJvYmVydCBDb2xsaW5zLCAjMTA3
MTI1KS4KKworICAgICogYGBienIgc2VydmVgYCBub3cgbGlzdGVucyBvbiBpbnRlcmZhY2UgMC4w
LjAuMCBieSBkZWZhdWx0LCBtYWtpbmcgaXQKKyAgICAgIHNlcnZlIG91dCB0byB0aGUgbG9jYWwg
TEFOIChhbmQgYW55b25lIGluIHRoZSB3b3JsZCB0aGF0IGNhbiByZWFjaCB0aGUKKyAgICAgIG1h
Y2hpbmUgcnVubmluZyBgYGJ6ciBzZXJ2ZWBgLiAoUm9iZXJ0IENvbGxpbnMsICM5ODkxOCkKKwor
ICAgICogQSBuZXcgc21hcnQgc2VydmVyIHByb3RvY29sIHZlcnNpb24gaGFzIGJlZW4gYWRkZWQu
ICBJdCBwcmVmaXhlcyByZXF1ZXN0cworICAgICAgYW5kIHJlc3BvbnNlcyB3aXRoIGFuIGV4cGxp
Y2l0IHZlcnNpb24gaWRlbnRpZmllciBzbyB0aGF0IGZ1dHVyZSBwcm90b2NvbAorICAgICAgcmV2
aXNpb25zIGNhbiBiZSBkZWFsdCB3aXRoIGdyYWNlZnVsbHkuICAoQW5kcmV3IEJlbm5ldHRzLCBS
b2JlcnQgQ29sbGlucykKKworICAgICogVGhlIGJ6ciBwcm90b2NvbCB2ZXJzaW9uIDIgaW5kaWNh
dGVzIHN1Y2Nlc3Mgb3IgZmFpbHVyZSBpbiBldmVyeSByZXNwb25zZQorICAgICAgd2l0aG91dCBk
ZXBlbmRpbmcgb24gcGFydGljdWxhciBjb21tYW5kcyBlbmNvZGluZyB0aGF0IGNvbnNpc3RlbnRs
eSwKKyAgICAgIGFsbG93aW5nIGZ1dHVyZSBjbGllbnQgcmVmYWN0b3JpbmdzIHRvIGJlIG11Y2gg
bW9yZSByb2J1c3QgYWJvdXQgZXJyb3IKKyAgICAgIGhhbmRsaW5nLiAoUm9iZXJ0IENvbGxpbnMs
IE1hcnRpbiBQb29sLCBBbmRyZXcgQmVubmV0dHMpCisKKyAgICAqIFRoZSBzbWFydCBwcm90b2Nv
bCBvdmVyIEhUVFAgY2xpZW50IGhhcyBiZWVuIGNoYW5nZWQgdG8gYWx3YXlzIHBvc3QgdG8gdGhl
CisgICAgICBzYW1lIGBgLmJ6ci9zbWFydGBgIFVSTCB1bmRlciB0aGUgb3JpZ2luYWwgbG9jYXRp
b24gd2hlbiBpdCBjYW4uICBUaGlzIGFsbG93cworICAgICAgSFRUUCBzZXJ2ZXJzIHRvIG9ubHkg
aGF2ZSB0byBwYXNzIFVSTHMgZW5kaW5nIGluIC5ienIvc21hcnQgdG8gdGhlIHNtYXJ0CisgICAg
ICBzZXJ2ZXIgaGFuZGxlciwgYW5kIG5vdCBhcmJpdHJhcnkgYGAuYnpyLyovc21hcnRgYCBVUkxz
LiAgKEFuZHJldyBCZW5uZXR0cykKKworICAgICogZGlnZXN0IGF1dGhlbnRpY2F0aW9uIGlzIG5v
dyBzdXBwb3J0ZWQgZm9yIHByb3hpZXMgYW5kIEhUVFAgYnkgdGhlIHVybGxpYgorICAgICAgYmFz
ZWQgaHR0cCBpbXBsZW1lbnRhdGlvbi4gVGVzdGVkIGFnYWluc3QgQXBhY2hlIDIuMC41NSBhbmQg
U3F1aWQKKyAgICAgIDIuNi41LiBCYXNpYyBhbmQgZGlnZXN0IGF1dGhlbnRpY2F0aW9uIGFyZSBo
YW5kbGVkIGNvaGVyZW50bHkgZm9yIEhUVFAKKyAgICAgIGFuZCBwcm94eTogaWYgdGhlIHVzZXIg
aXMgcHJvdmlkZWQgaW4gdGhlIHVybCAoYnpyIGNvbW1hbmQgbGluZSBmb3IgSFRUUCwKKyAgICAg
IHByb3h5IGVudmlyb25tZW50IHZhcmlhYmxlcyBmb3IgcHJveGllcyksIHRoZSBwYXNzd29yZCBp
cyBwcm9tcHRlZCBmb3IKKyAgICAgIChvbmx5IG9uY2UpLiBJZiB0aGUgcGFzc3dvcmQgaXMgcHJv
dmlkZWQsIGl0IGlzIHRha2VuIGludG8gYWNjb3VudC4gT25jZQorICAgICAgdGhlIGZpcnN0IGF1
dGhlbnRpY2F0aW9uIGlzIHN1Y2Nlc3NmdWwsIGFsbCBmdXJ0aGVyIGF1dGhlbnRpY2F0aW9uCisg
ICAgICByb3VuZHRyaXBzIGFyZSBhdm9pZGVkIGJ5IHByZXZlbnRpdmVseSBzZXR0aW5nIHRoZSBy
aWdodCBhdXRoZW50aWNhdGlvbgorICAgICAgaGVhZGVyKHMpLgorICAgICAgKFZpbmNlbnQgTGFk
ZXVpbCkuCisKICAgSU5URVJOQUxTOgogCiAgICAgKiBienJsaWIgQVBJIGNvbXBhdGFiaWxpdHkg
d2l0aCAwLjggaGFzIGJlZW4gZHJvcHBlZCwgY2xlYW5pbmcgdXAgc29tZQpAQCAtMTYsMTcgKzE3
NiwyMCBAQAogICAgICAgcmVxdWlyZXMgYW4gZXhwbGljaXQgYWN0aW9uIHVzaW5nIGEgQ2hyb290
U2VydmVyLgogICAgICAgKFJvYmVydCBDb2xsaW5zLCBBbmRyZXcgQmVubmV0dHMpCiAKLSAgICAq
IERlcHJlY2F0ZSBCcmFuY2guZ2V0X3Jvb3RfaWQoKSBiZWNhdXNlIGJyYW5jaGVzIGRvbid0IGhh
dmUgcm9vdCBpZHMsCisgICAgKiBEZXByZWNhdGUgYGBCcmFuY2guZ2V0X3Jvb3RfaWQoKWBgIGJl
Y2F1c2UgYnJhbmNoZXMgZG9uJ3QgaGF2ZSByb290IGlkcywKICAgICAgIHJhdGhlciB0aGFuIGZp
eGluZyBidWcgIzk2ODQ3LiAgKEFhcm9uIEJlbnRsZXkpCiAKLSAgICAqIFdvcmtpbmdUcmVlLmFw
cGx5X2ludmVudG9yeV9kZWx0YSBwcm92aWRlcyBhIGJldHRlciBhbHRlcm5hdGl2ZSB0bwotICAg
ICAgV29ya2luZ1RyZWUuX3dyaXRlX2ludmVudG9yeS4gIChBYXJvbiBCZW50bGV5KQorICAgICog
YGBXb3JraW5nVHJlZS5hcHBseV9pbnZlbnRvcnlfZGVsdGFgYCBwcm92aWRlcyBhIGJldHRlciBh
bHRlcm5hdGl2ZSB0bworICAgICAgYGBXb3JraW5nVHJlZS5fd3JpdGVfaW52ZW50b3J5YGAuICAo
QWFyb24gQmVudGxleSkKIAotICAgICogQ29udmVuaWVuY2UgbWV0aG9kIFRlc3RDYXNlLmV4cGVj
dEZhaWx1cmUgZW5zdXJlcyB0aGF0IGtub3duIGZhaWx1cmVzCisgICAgKiBDb252ZW5pZW5jZSBt
ZXRob2QgYGBUZXN0Q2FzZS5leHBlY3RGYWlsdXJlYGAgZW5zdXJlcyB0aGF0IGtub3duIGZhaWx1
cmVzCiAgICAgICBkbyBub3Qgc2lsZW50bHkgcGFzcy4gIChBYXJvbiBCZW50bGV5KQogCisgICAg
KiBgYFRyYW5zcG9ydC5sb2NhbF9hYnNwYXRoYGAgbm93IHJhaXNlcyBgYE5vdExvY2FsVXJsYGAg
cmF0aGVyIHRoYW4gCisgICAgICBgYFRyYW5zcG9ydE5vdFBvc3NpYmxlYGAuIChNYXJ0aW4gUG9v
bCwgSWFuIENsYXR3b3J0aHkpCisKICAgICAqIE5ldyBTbWFydFNlcnZlciBob29rcyBmYWNpbGl0
eS4gVGhlcmUgYXJlIHR3byBpbml0aWFsIGhvb2tzIGRvY3VtZW50ZWQKLSAgICAgIGluIGJ6cmxp
Yi50cmFuc3BvcnQuc21hcnQuU21hcnRTZXJ2ZXJIb29rcy4gVGhlIHR3byBpbml0aWFsIGhvb2tz
IGFsbG93CisgICAgICBpbiBgYGJ6cmxpYi50cmFuc3BvcnQuc21hcnQuU21hcnRTZXJ2ZXJIb29r
c2BgLiBUaGUgdHdvIGluaXRpYWwgaG9va3MgYWxsb3cKICAgICAgIHBsdWdpbnMgdG8gZXhlY3V0
ZSBjb2RlIHVwb24gc2VydmVyIHN0YXJ0dXAgYW5kIHNodXRkb3duLgogICAgICAgKFJvYmVydCBD
b2xsaW5zKS4KIApAQCAtMzYsMjIgKzE5OSwxMjUgQEAKICAgICAgIEl0IG1heSBhbHNvIGhlbHAg
aW1wcm92ZSBiZWhhdmlvdXIgd2hlbiBkZWFsaW5nIHdpdGggYSBzZXJ2ZXIgcnVubmluZwogICAg
ICAgb24gYSBzcGVjaWZpYyBwb3J0IChyYXRoZXIgdGhhbiBkeW5hbWljYWxseSBhc3NpZ25lZCBw
b3J0cykuCiAgICAgICAoUm9iZXJ0IENvbGxpbnMpCisKKyAgICAqIE1vdmUgbW9zdCBTbWFydFNl
cnZlciBjb2RlIGludG8gYSBuZXcgcGFja2FnZSwgYnpybGliL3NtYXJ0LgorICAgICAgYnpybGli
L3RyYW5zcG9ydC9yZW1vdGUucHkgY29udGFpbnMganVzdCB0aGUgVHJhbnNwb3J0IGNsYXNzZXMg
dGhhdCB1c2VkCisgICAgICB0byBiZSBpbiBienJsaWIvdHJhbnNwb3J0L3NtYXJ0LnB5LiAgKEFu
ZHJldyBCZW5uZXR0cykKKworICAgICogdXJsbGliIGh0dHAgaW1wbGVtZW50YXRpb24gYXZvaWQg
cm91bmR0cmlwcyBhc3NvY2lhdGVkIHdpdGgKKyAgICAgIDQwMSAoYW5kIDQwNykgZXJyb3JzIG9u
Y2UgdGhlIGF1dGhlbnRpY2F0aW9uIHN1Y2NlZWRzLgorICAgICAgKFZpbmNlbnQgTGFkZXVpbCku
CisKKyAgICAqIHVybGliIGh0dHAgbm93IHN1cHBvcnRzIHF1ZXJ5aW5nIHRoZSB1c2VyIGZvciBh
IHByb3h5IHBhc3N3b3JkIGlmCisgICAgICBuZWVkZWQuIFJlYWxtIGlzIHNob3duIGluIHRoZSBw
cm9tcHQgZm9yIGJvdGggSFRUUCBhbmQgcHJveHkKKyAgICAgIGF1dGhlbnRpY2F0aW9uIHdoZW4g
dGhlIHVzZXIgaXMgcmVxdWlyZWQgdG8gdHlwZSBhIHBhc3N3b3JkLiAKKyAgICAgIChWaW5jZW50
IExhZGV1aWwpLgorCisgICAgKiBSZW5hbWVkIFNtYXJ0VHJhbnNwb3J0IChhbmQgc3ViY2xhc3Nl
cyBsaWtlIFNtYXJ0VENQVHJhbnNwb3J0KSB0bworICAgICAgUmVtb3RlVHJhbnNwb3J0IChhbmQg
c3ViY2xhc3NlcyB0byBSZW1vdGVUQ1BUcmFuc3BvcnQsIGV0YykuICBUaGlzIGlzIG1vcmUKKyAg
ICAgIGNvbnNpc3RlbnQgd2l0aCBpdHMgbmV3IGhvbWUgaW4gYGBienJsaWIvdHJhbnNwb3J0L3Jl
bW90ZS5weWBgLCBhbmQgYmVjYXVzZQorICAgICAgaXQncyBub3QgcmVhbGx5IGEgInNtYXJ0IiB0
cmFuc3BvcnQsIGp1c3Qgb25lIHRoYXQgZG9lcyBmaWxlIG9wZXJhdGlvbnMKKyAgICAgIHZpYSBy
ZW1vdGUgcHJvY2VkdXJlIGNhbGxzLiAgKEFuZHJldyBCZW5uZXR0cykKICAKKyAgICAqIFRoZSBg
YGxvY2tfd3JpdGVgYCBtZXRob2Qgb2YgYGBMb2NrYWJsZUZpbGVzYGAsIGBgUmVwb3NpdG9yeWBg
IGFuZAorICAgICAgYGBCcmFuY2hgYCBub3cgYWNjZXB0IGEgYGB0b2tlbmBgIGtleXdvcmQgYXJn
dW1lbnQsIHNvIHRoYXQgc2VwYXJhdGUKKyAgICAgIGluc3RhbmNlcyBvZiB0aG9zZSBvYmplY3Rz
IGNhbiBzaGFyZSBhIGxvY2sgaWYgaXQgaGFzIHRoZSByaWdodCB0b2tlbi4KKyAgICAgIChBbmRy
ZXcgQmVubmV0dHMsIFJvYmVydCBDb2xsaW5zKQorCisgICAgKiBOZXcgbWV0aG9kIGBgZ2V0X2Jy
YW5jaF9yZWZlcmVuY2VgYCBvbiBgYEJ6ckRpcmBgIGFsbG93cyB0aGUgZGV0ZWN0aW9uIG9mCisg
ICAgICBicmFuY2ggcmVmZXJlbmNlcyAtIHdoaWNoIHRoZSBzbWFydCBzZXJ2ZXIgY29tcG9uZW50
IG5lZWRzLgorCisgICAgKiBUaGUgUmVwb3NpdG9yeSBBUEkgYGBtYWtlX3dvcmtpbmdfdHJlZXNg
YCBpcyBub3cgcGVybWl0dGVkIHRvIHJldHVybgorICAgICAgRmFsc2Ugd2hlbiBgYHNldF9tYWtl
X3dvcmtpbmdfdHJlZXNgYCBpcyBub3QgaW1wbGVtZW50ZWQgLSBwcmV2aW91c2x5CisgICAgICBh
biB1bmltcGxlbWVudGVkIGBgc2V0X21ha2Vfd29ya2luZ190cmVlc2BgIGltcGxpZWQgdGhlIHJl
c3VsdCBUcnVlCisgICAgICBmcm9tIGBgbWFrZV93b3JraW5nX3RyZWVzYGAuIFRoaXMgaGFzIGJl
ZW4gY2hhbmdlZCB0byBhY2NvbW9kYXRlIHRoZQorICAgICAgc21hcnQgc2VydmVyLCB3aGVyZSBp
dCBkb2VzIG5vdCBtYWtlIHNlbnNlIChhdCB0aGlzIHBvaW50KSB0byBldmVyCisgICAgICBtYWtl
IHdvcmtpbmcgdHJlZXMgYnkgZGVmYXVsdC4gKFJvYmVydCBDb2xsaW5zKQorCisgICAgKiBDb21t
YW5kIG9iamVjdHMgY2FuIG5vdyBkZWNsYXJlIHJlbGF0ZWQgaGVscCB0b3BpY3MgYnkgaGF2aW5n
IF9zZWVfYWxzbworICAgICAgc2V0IHRvIGEgbGlzdCBvZiByZWxhdGVkIHRvcGljLiAoUm9iZXJ0
IENvbGxpbnMpCisKKyAgICAqIGBgYnpybGliLmhlbHBgYCBub3cgZGVsZWdhdGVzIHRvIHRoZSBD
b21tYW5kIGNsYXNzIGZvciBDb21tYW5kIHNwZWNpZmljCisgICAgICBoZWxwLiAoUm9iZXJ0IENv
bGxpbnMpCisKKyAgICAqIE5ldyBjbGFzcyBgYFRyYW5zcG9ydExpc3RSZWdpc3RyeWBgLCBkZXJp
dmVkIGZyb20gdGhlIFJlZ2lzdHJ5IGNsYXNzLCB3aGljaCAKKyAgICAgIHNpbXBsaWZpZXMgdHJh
Y2tpbmcgdGhlIGF2YWlsYWJsZSBUcmFuc3BvcnRzLiAoR29mZnJlZG8gQmFyb25jZWxsaSkKKwor
ICAgICogTmV3IGZ1bmN0aW9uIGBgQnJhbmNoLmdldF9yZXZpc2lvbl9pZF90b19yZXZub19tYXBg
YCB3aGljaCB3aWxsCisgICAgICByZXR1cm4gYSBkaWN0aW9uYXJ5IG1hcHBpbmcgcmV2aXNpb24g
aWRzIHRvIGRvdHRlZCByZXZub3MuIFNpbmNlCisgICAgICBkb3R0ZWQgcmV2bm9zIGFyZSBkZWZp
bmVkIGluIHRoZSBjb250ZXh0IG9mIHRoZSBicmFuY2ggdGlwLCBpdCBtYWtlcworICAgICAgc2Vu
c2UgdG8gZ2VuZXJhdGUgdGhlbSBmcm9tIGEgYGBCcmFuY2hgYCBvYmplY3QuCisgICAgICAoSm9o
biBBcmJhc2ggTWVpbmVsKQorCisgICAgKiBGaXggdGhlICdVbnByaW50YWJsZSBlcnJvcicgbWVz
c2FnZSBkaXNwbGF5IHRvIHVzZSB0aGUgcmVwciBvZiB0aGUgCisgICAgICBleGNlcHRpb24gdGhh
dCBwcmV2ZW50ZWQgcHJpbnRpbmcgdGhlIGVycm9yIGJlY2F1c2UgdGhlIHN0ciB2YWx1ZQorICAg
ICAgZm9yIGl0IGlzIG9mdGVuIG5vdCB1c2VmdWwgaW4gZGVidWdnaW5nIChlLmcuIEtleUVycm9y
KCdmb28nKSBoYXMgYQorICAgICAgc3RyKCkgb2YgJ2ZvbycgYnV0IGEgcmVwciBvZiAnS2V5RXJy
b3IoJ2ZvbycpJyB3aGljaCBpcyBtdWNoIG1vcmUKKyAgICAgIHVzZWZ1bC4gKFJvYmVydCBDb2xs
aW5zKQorCisgICAgKiBgYHVybHV0aWxzLm5vcm1hbGl6ZV91cmxgYCBub3cgdW5lc2NhcGVzIHVu
cmVzZXJ2ZWQgY2hhcmFjdGVycywgc3VjaCBhcyAifiIuCisgICAgICAoQW5kcmV3IEJlbm5ldHRz
KQorCiAgIEJVR0ZJWEVTOgogCiAgICAgKiBEb24ndCBmYWlsIGJ1bmRsZSBzZWxmdGVzdCBpZiBl
bWFpbCBoYXMgJ3R3bycgZW1iZWRkZWQuICAKLSAgICAgICgjOTg1MTAsIElhbiBDbGF0d29ydGh5
KQorICAgICAgKElhbiBDbGF0d29ydGh5LCAjOTg1MTApCiAKICAgICAqIFJlbW92ZSBgYC0tdmVy
Ym9zZWBgIGZyb20gYGBienIgYnVuZGxlYGAuIEl0IGRpZG4ndCB3b3JrIGFueXdheS4KICAgICAg
IChSb2JlcnQgV2lkaG9wZi1GZW5rLCAjOTg1OTEpCiAKICAgICAqIFJlbW92ZSBgYC0tYmFzaXNg
YCBmcm9tIHRoZSBjaGVja291dC9icmFuY2ggY29tbWFuZHMgLSBpdCBkaWRuJ3Qgd29yawotICAg
ICAgcHJvcGVybHkgYW5kIGlzIG5vIGxvbmdlciBiZW5lZmljaWFsLiBGaXhlcyAjNTM2NzUgYW5k
ICM0MzQ4Ni4KLSAgICAgIChSb2JlcnQgQ29sbGlucykKKyAgICAgIHByb3Blcmx5IGFuZCBpcyBu
byBsb25nZXIgYmVuZWZpY2lhbC4KKyAgICAgIChSb2JlcnQgQ29sbGlucywgIzUzNjc1LCAjNDM0
ODYpCiAKICAgICAqIERvbid0IHByb2R1Y2UgZW5jb2RpbmcgZXJyb3Igd2hlbiBhZGRpbmcgZHVw
bGljYXRlIGZpbGVzLgogICAgICAgKEFhcm9uIEJlbnRsZXkpCiAKKyAgICAqIEZpeCBgYGJ6ciBs
b2cgPGZpbGU+YGAgc28gaXQgb25seSBsb2dzIHRoZSByZXZpc2lvbnMgdGhhdCBjaGFuZ2VkCisg
ICAgICB0aGUgZmlsZSwgYW5kIGRvZXMgaXQgZmFzdGVyLgorICAgICAgKEtlbnQgR2lic29uLCBK
b2huIEFyYmFzaCBNZWluZWwsICM1MTk4MCwgIzY5NDc3KQorIAorICAgICogRml4IGBgSW50ZXJE
aXJzdGF0ZVRyZS5faXRlcl9jaGFuZ2VzYGAgdG8gaGFuZGxlIHdoZW4gd2UgY29tZSBhY3Jvc3MK
KyAgICAgIGFuIGVtcHR5IHZlcnNpb25lZCBkaXJlY3RvcnksIHdoaWNoIG5vdyBoYXMgZmlsZXMg
aW4gaXQuCisgICAgICAoSm9obiBBcmJhc2ggTWVpbmVsLCAjMTA0MjU3KQorCisgICAgKiBUZWFj
aCBgYGNvbW1vbl9hbmNlc3RvcmBgIHRvIHNob3J0Y3V0IHdoZW4gdGhlIHRpcCBvZiBvbmUgYnJh
bmNoIGlzCisgICAgICBpbnNpZGUgdGhlIGFuY2VzdHJ5IG9mIHRoZSBvdGhlci4gU2F2ZXMgYSBs
b3Qgb2YgZ3JhcGggcHJvY2Vzc2luZworICAgICAgKHdpdGggYW4gYW5jZXN0cnkgb2YgMTZrIHJl
dmlzaW9ucywgYGBienIgbWVyZ2UgLi4vYWxyZWFkeS1tZXJnZWRgYAorICAgICAgY2hhbmdlcyBm
cm9tIDJtMTBzIHRvIDEzcykuICAoSm9obiBBcmJhc2ggTWVpbmVsLCAjMTAzNzU3KQorCisgICAg
KiBGaXggYGBzaG93X2RpZmZfdHJlZXNgYCB0byBoYW5kbGUgdGhlIGNhc2Ugd2hlbiBhIGZpbGUg
aXMgbW9kaWZpZWQsCisgICAgICBhbmQgdGhlIGNvbnRhaW5pbmcgZGlyZWN0b3J5IGlzIHJlbmFt
ZWQuIChUaGUgZmlsZSBwYXRoIGlzIGRpZmZlcmVudAorICAgICAgaW4gdGhpcyB2ZXJzdXMgYmFz
ZSwgYnV0IGl0IGlzbid0IG1hcmtlZCBhcyBhIHJlbmFtZSkuCisgICAgICAoSm9obiBBcmJhc2gg
TWVpbmVsLCAjMTAzODcwKQorCisgICAgKiBGVFAgbm93IHdvcmtzIGV2ZW4gd2hlbiB0aGUgRlRQ
IHNlcnZlciBkb2VzIG5vdCBzdXBwb3J0IGF0b21pYyByZW5hbWUuCisgICAgICAoQWFyb24gQmVu
dGxleSwgIzg5NDM2KQorCisgICAgKiBDb3JyZWN0IGhhbmRsaW5nIGluIGJ1bmRsZXMgYW5kIG1l
cmdlIGRpcmVjdGl2ZXMgb2YgdGltZXpvbmVzIHdpdGgKKyAgICAgIHRoYXQgYXJlIG5vdCBhbiBp
bnRlZ2VyIG51bWJlciBvZiBob3VycyBvZmZzZXQgZnJvbSBVVEMuICBBbHdheXMgCisgICAgICBy
ZXByZXNlbnQgdGhlIGVwb2NoIHRpbWUgaW4gVVRDIHRvIGF2b2lkIHByb2JsZW1zIHdpdGggZm9y
bWF0dGluZyAKKyAgICAgIGVhcmxpZXIgdGltZXMgb24gd2luMzIuICAoTWFydGluIFBvb2wsIEFs
ZXhhbmRlciBCZWxjaGVua28sIEpvaG4KKyAgICAgIEFyYmFzaCBNZWluZWwpCisKKyAgICAqIFR5
cG8gaW4gdGhlIGhlbHAgZm9yIGBgcmVnaXN0ZXItYnJhbmNoYGAgZml4ZWQuIChSb2JlcnQgQ29s
bGlucywgIzk2NzcwKQorCisgICAgKiAiZGlyc3RhdGUiIGFuZCAiZGlyc3RhdGUtdGFncyIgZm9y
bWF0cyBub3cgcHJvZHVjZSBicmFuY2hlcyBjb21wYXRpYmxlCisgICAgICB3aXRoIG9sZCB2ZXJz
aW9ucyBvZiBienIuIChBYXJvbiBCZW50bGV5LCAjMTA3MTY4KSkKKworICAgICogSGFuZGxlIG1v
dmluZyBhIGRpcmVjdG9yeSB3aGVuIGNoaWxkcmVuIGhhdmUgYmVlbiBhZGRlZCwgcmVtb3ZlZCwK
KyAgICAgIGFuZCByZW5hbWVkLiAoSm9obiBBcmJhc2ggTWVpbmVsLCAjMTA1NDc5KQorCisgICAg
KiBEb24ndCBwcmV2ZW50aXZlbHkgdXNlIGJhc2ljIGF1dGhlbnRpY2F0aW9uIGZvciBwcm94eSBi
ZWZvcmUgcmVjZWl2aW5nIGEKKyAgICAgIDQwNyBlcnJvci4gT3RoZXJ3aXNlIHBlb3BsZSB3aWxs
aW5nIHRvIHVzZSBvdGhlciBhdXRoZW50aWNhdGlvbiBzY2hlbWVzCisgICAgICBtYXkgZXhwb3Nl
IHRoZWlyIHBhc3N3b3JkIGluIHRoZSBjbGVhciAob3IgbmVhcmx5KS4gVGhpcyBhZGQgb25lCisg
ICAgICByb3VuZHRyaXAgaW4gY2FzZSBiYXNpYyBhdXRoZW50aWNhdGlvbiBzaG91bGQgYmUgdXNl
ZCwgYnV0IHBsdWcgdGhlCisgICAgICBzZWN1cml0eSBob2xlLgorICAgICAgKFZpbmNlbnQgTGFk
ZXVpbCkKKworICAgICogSGFuZGxlIGh0dHAgYW5kIHByb3h5IGRpZ2VzdCBhdXRoZW50aWNhdGlv
bi4KKyAgICAgIChWaW5jZW50IExhZGV1aWwsICM5NDAzNCkuCisKICAgVEVTVElORzoKIAogICAg
ICogQWRkZWQgYGBienJsaWIuc3RyYWNlLnN0cmFjZWBgIHdoaWNoIHdpbGwgc3RyYWNlIGEgc2lu
Z2xlIGNhbGxhYmxlIGFuZApAQCAtNjEsMTcgKzMyNywxNyBAQAogICAgICogTmV3IHRlc3QgbWV0
aG9kIGBgcmVkdWNlTG9ja2RpclRpbWVvdXRgYCB0byBkcm9wIHRoZSBkZWZhdWx0ICh1aS1jZW50
cmljKQogICAgICAgZGVmYXVsdCB0aW1lIGRvd24gdG8gb25lIHN1aXRhYmxlIGZvciB0ZXN0cy4g
KEFuZHJldyBCZW5uZXR0cykKIAotICAgICogQWRkIG5ldyB2ZnNfdHJhbnNwb3J0X2ZhY3Rvcnkg
YXR0cmlidXRlIG9uIHRlc3RzIHdoaWNoIHByb3ZpZGVzIHRoZSAKKyAgICAqIEFkZCBuZXcgYGB2
ZnNfdHJhbnNwb3J0X2ZhY3RvcnlgYCBhdHRyaWJ1dGUgb24gdGVzdHMgd2hpY2ggcHJvdmlkZXMg
dGhlIAogICAgICAgY29tbW9uIHZmcyBiYWNraW5nIGZvciBib3RoIHRoZSByZWFkb25seSBhbmQg
cmVhZHdyaXRlIHRyYW5zcG9ydHMuCiAgICAgICBUaGlzIGFsbG93cyB0aGUgUmVtb3RlT2JqZWN0
IHRlc3RzIHRvIGJhY2sgb250byBsb2NhbCBkaXNrIG9yIG1lbW9yeSwKLSAgICAgIGFuZCB1c2Ug
dGhlIGV4aXN0aW5nIHRyYW5zcG9ydF9zZXJ2ZXIgYXR0cmlidXRlIGFsbCB0ZXN0cyBrbm93IGFi
b3V0CisgICAgICBhbmQgdXNlIHRoZSBleGlzdGluZyBgYHRyYW5zcG9ydF9zZXJ2ZXJgYCBhdHRy
aWJ1dGUgYWxsIHRlc3RzIGtub3cgYWJvdXQKICAgICAgIHRvIGJlIHRoZSBzbWFydCBzZXJ2ZXIg
dHJhbnNwb3J0LiBUaGlzIGluIHR1cm4gYWxsb3dzIHRlc3RzIHRvIAogICAgICAgZGlmZmVyZW50
aWF0ZSBiZXR3ZWVuICd0cmFuc3BvcnQgdG8gYWNjZXNzIHRoZSBicmFuY2gnLCBhbmQgCiAgICAg
ICAndHJhbnNwb3J0IHdoaWNoIGlzIGEgVkZTJyAtIHdoaWNoIG1hdHRlcnMgaW4gUmVtb3RlKiB0
ZXN0cy4KICAgICAgIChSb2JlcnQgQ29sbGlucywgQW5kcmV3IEJlbm5ldHRzKQogCiAgICAgKiBU
aGUgYGBtYWtlX2JyYW5jaF9hbmRfdHJlZWBgIG1ldGhvZCBmb3IgdGVzdHMgd2lsbCBub3cgY3Jl
YXRlIGEgCi0gICAgICBsaWdodHdlaWdodCBjaGVja291dCBmb3IgdGhlIHRyZWUgaWYgdGhlIHZm
c190cmFuc3BvcnRfZmFjdG9yeSBpcyBub3QKKyAgICAgIGxpZ2h0d2VpZ2h0IGNoZWNrb3V0IGZv
ciB0aGUgdHJlZSBpZiB0aGUgYGB2ZnNfdHJhbnNwb3J0X2ZhY3RvcnlgYCBpcyBub3QKICAgICAg
IGEgTG9jYWxVUkxTZXJ2ZXIuIChSb2JlcnQgQ29sbGlucywgQW5kcmV3IEJlbm5ldHRzKQogCiAg
ICAgKiBCcmFuY2ggaW1wbGVtZW50YXRpb24gdGVzdHMgaGF2ZSBiZWVuIGF1ZGl0ZWQgdG8gZW5z
dXJlIHRoYXQgYWxsIHVybHMgCkBAIC04Miw2ICszNDgsMTMgQEAKICAgICAgIGFjY2Vzcy4KICAg
ICAgIChSb2JlcnQgQ29sbGlucywgQW5kcmV3IEJlbm5ldHRzKQogCisgICAgKiBNYXJrIGJ6cmxp
Yi50ZXN0cyBhbmQgYnpybGliLnRlc3RzLlRlc3RVdGlsIGFzIHByb3ZpZGluZyBhc3NlcnRGT08g
aGVscGVyCisgICAgICBmdW5jdGlvbnMgYnkgYWRkaW5nIGEgYGBfX3VuaXR0ZXN0YGAgZ2xvYmFs
IGF0dHJpYnV0ZS4gKFJvYmVydCBDb2xsaW5zLAorICAgICAgQW5kcmV3IEJlbm5ldHRzLCBNYXJ0
aW4gUG9vbCwgSm9uYXRoYW4gTGFuZ2UpCisKKyAgICAqIFJlZmFjdG9yZWQgcHJveHkgYW5kIGF1
dGhlbnRpY2F0aW9uIGhhbmRsaW5nIHRvIHNpbXBsaWZ5IHRoZQorICAgICAgaW1wbGVtZW50YXRp
b24gb2YgbmV3IGF1dGggc2NoZW1lcyBmb3IgYm90aCBodHRwIGFuZCBwcm94eS4gCisgICAgICAo
VmluY2VudCBMYWRldWlsKQogCiBienIgMC4xNSAyMDA3LTA0LTAxCiAKQEAgLTExMSw3ICszODQs
NyBAQAogICAgICAgcGVyZm9ybWFuY2VzLiBUaGUgaHR0cCByZWRpcmVjdGlvbnMgYXJlIG5vdCBm
b2xsb3dlZCBhbnltb3JlIGJ5CiAgICAgICBkZWZhdWx0LCBpbnN0ZWFkIGEgUmVkaXJlY3RSZXF1
ZXN0ZWQgZXhjZXB0aW9uIGlzIHJhaXNlZC4gRm9yIGJ6cmxpYgogICAgICAgdXNlcnMgbmVlZGlu
ZyB0byBmb2xsb3cgaHR0cCByZWRpcmVjdGlvbnMgYW55d2F5LAotICAgICAgYnpybGliLnRyYW5z
cG9ydC5kb19jYXRjaGluZ19yZWRpcmVjdGlvbnMgcHJvdmlkZSBhbiBlYXN5IHRyYW5zaXRpb24K
KyAgICAgIGBgYnpybGliLnRyYW5zcG9ydC5kb19jYXRjaGluZ19yZWRpcmVjdGlvbnNgYCBwcm92
aWRlIGFuIGVhc3kgdHJhbnNpdGlvbgogICAgICAgcGF0aC4gICh2aWxhKQogCiAgIElOVEVSTkFM
UzoKQEAgLTEyMCw3ICszOTMsNyBAQAogICAgICAgbG9jayB0byBhbiBPUyB3cml0ZSBsb2NrLiBM
aW51eCBjYW4gZG8gdGhpcyB3aXRob3V0IHVubG9ja2luZywgV2luMzIKICAgICAgIG5lZWRzIHRv
IHVubG9jayBpbiBiZXR3ZWVuLiAoSm9obiBBcmJhc2ggTWVpbmVsKQogIAotICAgICogTmV3IHBh
cmFtZXRlciBgYHJlY29tbWVuZF91cGdyYWRlYGAgdG8gQnpyRGlyLm9wZW5fd29ya2luZ3RyZWUg
CisgICAgKiBOZXcgcGFyYW1ldGVyIGBgcmVjb21tZW5kX3VwZ3JhZGVgYCB0byBgYEJ6ckRpci5v
cGVuX3dvcmtpbmd0cmVlYGAKICAgICAgIHRvIHNpbGVuY2UgKHdoZW4gZmFsc2UpIHdhcm5pbmdz
IGFib3V0IG9wZW5pbmcgb2xkIGZvcm1hdHMuCiAgICAgICAoTWFydGluIFBvb2wpCiAKQEAgLTEz
Niw3ICs0MDksNyBAQAogCiAgIEJVR0ZJWEVTOgogCi0gICAgKiBUYWtlIHNtdHBfc2VydmVyIGZy
b20gdXNlciBjb25maWcgaW50byBhY2NvdW50LgorICAgICogVGFrZSBgYHNtdHBfc2VydmVyYGAg
ZnJvbSB1c2VyIGNvbmZpZyBpbnRvIGFjY291bnQuCiAgICAgICAodmlsYSwgIzkyMTk1KQogCiAg
ICAgKiBSZXN0b3JlIFVuaWNvZGUgZmlsZW5hbWUgaGFuZGxpbmcgZm9yIHZlcnNpb25lZCBhbmQg
dW52ZXJzaW9uZWQgZmlsZXMuCkBAIC0xNTQsNyArNDI3LDcgQEAKIAogICAgICogYGBienIgY29t
bWl0YGAgd2l0aCBhIGtpbmQgY2hhbmdlIHdhcyBmYWlsaW5nIHRvIHVwZGF0ZSB0aGUKICAgICAg
IGxhc3QtY2hhbmdlZC1yZXZpc2lvbiBmb3IgZGlyZWN0b3JpZXMuICBUaGUKLSAgICAgIEludmVu
dG9yeURpcmVjdG9yeS5fdW5jaGFuZ2VkIG9ubHkgbG9va2VkIGF0IHRoZSBwYXJlbnRfaWQgYW5k
IG5hbWUsCisgICAgICBJbnZlbnRvcnlEaXJlY3RvcnkuX3VuY2hhbmdlZCBvbmx5IGxvb2tlZCBh
dCB0aGUgYGBwYXJlbnRfaWRgYCBhbmQgbmFtZSwKICAgICAgIGlnbm9yaW5nIHRoZSBmYWN0IHRo
YXQgdGhlIGtpbmQgY291bGQgaGF2ZSBjaGFuZ2VkLCB0b28uCiAgICAgICAoSm9obiBBcmJhc2gg
TWVpbmVsLCAjOTAxMTEpCiAKQEAgLTE2Myw4ICs0MzYsNyBAQAogICAgICAgZXRjLiAoSm9obiBB
cmJhc2ggTWVpbmVsLCAjOTQwMzcpCiAgCiAgICAgKiBDb3JyZWN0bHkgaGFuZGxlcyBtdXRpcGxl
IHBlcm1hbmVudCBodHRwIHJlZGlyZWN0aW9ucy4KLSAgICAgKHZpbGEsICM4ODc4MCkKLQorICAg
ICAgKHZpbGEsICM4ODc4MCkKIAogYnpyIDAuMTVyYzIgIDIwMDctMDMtMTQKIApAQCAtMjI5LDEw
ICs1MDEsMTEgQEAKICAgICAqIEZvciB1c2VycyBvZiBienJsaWI6IFR3byBtYWpvciBjaGFuZ2Vz
IGhhdmUgYmVlbiBtYWRlIHRvIHRoZSB3b3JraW5nIHRyZWUKICAgICAgIGFwaSBpbiBienJsaWIu
IFRoZSBmaXJzdCBpcyB0aGF0IG1hbnkgbWV0aG9kcyBhbmQgYXR0cmlidXRlcywgaW5jbHVkaW5n
CiAgICAgICB0aGUgaW52ZW50b3J5IGF0dHJpYnV0ZSwgYXJlIG5vIGxvbmdlciB2YWxpZCBmb3Ig
dXNlIHVudGlsIG9uZSBvZgotICAgICAgbG9ja19yZWFkL2xvY2tfd3JpdGUvbG9ja190cmVlX3dy
aXRlIGhhcyBiZWVuIGNhbGxlZCwgYW5kIGJlY29tZSBpbnZhbGlkCi0gICAgICBhZ2FpbiBhZnRl
ciB1bmxvY2sgaXMgY2FsbGVkLiBUaGlzIGhhcyBiZWVuIGRvbmUgdG8gaW1wcm92ZSBwZXJmb3Jt
YW5jZQotICAgICAgYW5kIGNvcnJlY3RuZXNzIGFzIHBhcnQgb2YgdGhlIGRpcnN0YXRlIGRldmVs
b3BtZW50LiAoUm9iZXJ0IENvbGxpbnMsCi0gICAgICBKb2huIEEgTWVpbmVsLCBNYXJ0aW4gUG9v
bCwgYW5kIG90aGVycykuCisgICAgICBgYGxvY2tfcmVhZGBgL2BgbG9ja193cml0ZWBgL2BgbG9j
a190cmVlX3dyaXRlYGAgaGFzIGJlZW4gY2FsbGVkLAorICAgICAgYW5kIGJlY29tZSBpbnZhbGlk
IGFnYWluIGFmdGVyIHVubG9jayBpcyBjYWxsZWQuIFRoaXMgaGFzIGJlZW4gZG9uZQorICAgICAg
dG8gaW1wcm92ZSBwZXJmb3JtYW5jZSBhbmQgY29ycmVjdG5lc3MgYXMgcGFydCBvZiB0aGUgZGly
c3RhdGUKKyAgICAgIGRldmVsb3BtZW50LgorICAgICAgKFJvYmVydCBDb2xsaW5zLCBKb2huIEEg
TWVpbmVsLCBNYXJ0aW4gUG9vbCwgYW5kIG90aGVycykuCiAKICAgICAqIEZvciB1c2VycyBvZiBi
enJsaWI6IFRoZSBhdHRyaWJ1dGUgJ3RyZWUuaW52ZW50b3J5JyBzaG91bGQgYmUgY29uc2lkZXJl
ZAogICAgICAgcmVhZG9ubHkuIFByZXZpb3VzbHkgaXQgd2FzIHBvc3NpYmxlIHRvIGRpcmVjdGx5
IGFsdGVyIHRoaXMgYXR0cmlidXRlLCBvcgpAQCAtMjgyLDExICs1NTUsMTEgQEAKICAgICAgIGRp
cmVjdG9yeS4gIChNYXJ0aW4gUG9vbCkKIAogICAgICogQnJhbmNoIGZvcm1hdCA2OiBzbWFsbGVy
LCBhbmQgcG90ZW50aWFsbHkgZmFzdGVyIHRoYW4gZm9ybWF0IDUuICBTdXBwb3J0cwotICAgICAg
ImFwcGVuZF9oaXN0b3J5X29ubHkiIG1vZGUsIHdoZXJlIHRoZSBsb2cgdmlldyBhbmQgcmV2bm9z
IGRvIG5vdCBjaGFuZ2UsCisgICAgICBgYGFwcGVuZF9oaXN0b3J5X29ubHlgYCBtb2RlLCB3aGVy
ZSB0aGUgbG9nIHZpZXcgYW5kIHJldm5vcyBkbyBub3QgY2hhbmdlLAogICAgICAgZXhjZXB0IGJ5
IGJlaW5nIGFkZGVkIHRvLiAgU3RvcmVzIHBvbGljeSBzZXR0aW5ncyBpbgogICAgICAgIi5ienIv
YnJhbmNoL2JyYW5jaC5jb25mIi4KIAotICAgICogYXBwZW5kX29ubHkgYnJhbmNoZXM6ICBGb3Jt
YXQgNiBicmFuY2hlcyBtYXkgYmUgY29uZmlndXJlZCBzbyB0aGF0IGxvZworICAgICogYGBhcHBl
bmRfb25seWBgIGJyYW5jaGVzOiAgRm9ybWF0IDYgYnJhbmNoZXMgbWF5IGJlIGNvbmZpZ3VyZWQg
c28gdGhhdCBsb2cKICAgICAgIHZpZXcgYW5kIHJldm5vcyBhcmUgYWx3YXlzIGNvbnNpc3RlbnQu
ICBFaXRoZXIgY3JlYXRlIHRoZSBicmFuY2ggdXNpbmcKICAgICAgICJienIgaW5pdCAtLWFwcGVu
ZC1yZXZpc2lvbnMtb25seSIgb3IgZWRpdCB0aGUgY29uZmlnIGZpbGUgYXMgZGVzY3JpcGVkCiAg
ICAgICBpbiBkb2NzL2NvbmZpZ3VyYXRpb24udHh0LgpAQCAtMzAyLDggKzU3NSw4IEBACiAgICAg
ICB1cGdyYWRlLCBydW4gYGBienIgdXBncmFkZSAtLWRpcnN0YXRlLXRhZ3NgYCBpbiB5b3VyIGJy
YW5jaCBhbmQKICAgICAgIHJlcG9zaXRvcmllcy4gKE1hcnRpbiBQb29sKQogCi0gICAgKiBUaGUg
YnpyOi8vIHRyYW5zcG9ydCBub3cgaGFzIGEgd2VsbC1rbm93biBwb3J0IG51bWJlciwgNDE1NSwg
d2hpY2ggaXQgd2lsbAotICAgICAgdXNlIGJ5IGRlZmF1bHQuICAoQW5kcmV3IEJlbm5ldHRzLCBN
YXJ0aW4gUG9vbCkKKyAgICAqIFRoZSBgYGJ6cjovL2BgIHRyYW5zcG9ydCBub3cgaGFzIGEgd2Vs
bC1rbm93biBwb3J0IG51bWJlciwgNDE1NSwKKyAgICAgIHdoaWNoIGl0IHdpbGwgdXNlIGJ5IGRl
ZmF1bHQuICAoQW5kcmV3IEJlbm5ldHRzLCBNYXJ0aW4gUG9vbCkKIAogICAgICogQmF6YWFyIG5v
dyBsb29rcyBmb3IgdXNlci1pbnN0YWxsZWQgcGx1Z2lucyBiZWZvcmUgbG9va2luZyBmb3Igc2l0
ZS13aWRlCiAgICAgICBwbHVnaW5zLiAoSm9uYXRoYW4gTGFuZ2UpCkBAIC0zMjksMTAgKzYwMiwx
MSBAQAogICAgICAgKEpvaG4gQXJiYXNoIE1laW5lbCkKIAogICAgICogTmV3IGVhc2llciB0byB1
c2UgQnJhbmNoIGhvb2tzIGZhY2lsaXR5LiBUaGVyZSBhcmUgZml2ZSBpbml0aWFsIGhvb2tzLAot
ICAgICAgYWxsIGRvY3VtZW50ZWQgaW4gYnpybGliLmJyYW5jaC5CcmFuY2hIb29rcy5fX2luaXRf
XyAtICdzZXRfcmgnLAotICAgICAgJ3Bvc3RfcHVzaCcsICdwb3N0X3B1bGwnLCAncG9zdF9jb21t
aXQnLCAncG9zdF91bmNvbW1pdCcuIFRoZXNlIGhvb2tzCi0gICAgICBmaXJlIGFmdGVyIHRoZSBt
YXRjaGluZyBvcGVyYXRpb24gb24gYSBicmFuY2ggaGFzIHRha2VuIHBsYWNlLCBhbmQgd2VyZQot
ICAgICAgb3JpZ2luYWxseSBhZGRlZCBmb3IgdGhlIGJyYW5jaHJzcyBwbHVnaW4uIChSb2JlcnQg
Q29sbGlucykKKyAgICAgIGFsbCBkb2N1bWVudGVkIGluIGJ6cmxpYi5icmFuY2guQnJhbmNoSG9v
a3MuX19pbml0X18gLSBgYCdzZXRfcmgnYGAsCisgICAgICBgYCdwb3N0X3B1c2gnYGAsIGBgJ3Bv
c3RfcHVsbCdgYCwgYGAncG9zdF9jb21taXQnYGAsCisgICAgICBgYCdwb3N0X3VuY29tbWl0J2Bg
LiBUaGVzZSBob29rcyBmaXJlIGFmdGVyIHRoZSBtYXRjaGluZyBvcGVyYXRpb24KKyAgICAgIG9u
IGEgYnJhbmNoIGhhcyB0YWtlbiBwbGFjZSwgYW5kIHdlcmUgb3JpZ2luYWxseSBhZGRlZCBmb3Ig
dGhlCisgICAgICBicmFuY2hyc3MgcGx1Z2luLiAoUm9iZXJ0IENvbGxpbnMpCiAKICAgICAqIE5l
dyBtZXRob2QgYGBCcmFuY2gucHVzaCgpYGAgd2hpY2ggc2hvdWxkIGJlIHVzZWQgd2hlbiBwdXNo
aW5nIGZyb20gYQogICAgICAgYnJhbmNoIGFzIGl0IG1ha2VzIHBlcmZvcm1hbmNlIGFuZCBwb2xp
Y3kgZGVjaXNpb25zIHRvIG1hdGNoIHRoZSBVSQpAQCAtMzQ1LDE3ICs2MTksMTcgQEAKICAgICAg
IHJlcG9zaXRvcnkuCiAgICAgICAoUm9iZXJ0IENvbGxpbnMsIE1hcnRpbiBQb29sKQogCi0gICAg
KiBOZXcgQnJhbmNoLmxhc3RfcmV2aXNpb25faW5mbyBtZXRob2QsIHRoaXMgaXMgYmVpbmcgZG9u
ZSB0byBhbGxvdworICAgICogTmV3IGBgQnJhbmNoLmxhc3RfcmV2aXNpb25faW5mb2BgIG1ldGhv
ZCwgdGhpcyBpcyBiZWluZyBkb25lIHRvIGFsbG93CiAgICAgICBvcHRpbWl6YXRpb24gb2YgcmVx
dWVzdHMgZm9yIGJvdGggdGhlIG51bWJlciBvZiByZXZpc2lvbnMgYW5kIHRoZSBsYXN0CiAgICAg
ICByZXZpc2lvbiBvZiBhIGJyYW5jaCB3aXRoIHNtYXJ0c2VydmVycyBhbmQgcG90ZW50aWFsbHkg
ZnV0dXJlIGJyYW5jaAogICAgICAgZm9ybWF0cy4gKFdvdXRlciB2YW4gSGV5c3QsIFJvYmVydCBD
b2xsaW5zKQogCi0gICAgKiBBbGxvdyAnaW1wb3J0IGJ6cmxpYi5wbHVnaW5zLk5BTUUnIHRvIHdv
cmsgd2hlbiB0aGUgcGx1Z2luIE5BTUUgaGFzIG5vdAotICAgICAgeWV0IGJlZW4gbG9hZGVkIGJ5
IGxvYWRfcGx1Z2lucygpLiBUaGlzIGFsbG93cyBwbHVnaW5zIHRvIGRlcGVuZCBvbiBlYWNoCisg
ICAgKiBBbGxvdyBgYCdpbXBvcnQgYnpybGliLnBsdWdpbnMuTkFNRSdgYCB0byB3b3JrIHdoZW4g
dGhlIHBsdWdpbiBOQU1FIGhhcyBub3QKKyAgICAgIHlldCBiZWVuIGxvYWRlZCBieSBgYGxvYWRf
cGx1Z2lucygpYGAuIFRoaXMgYWxsb3dzIHBsdWdpbnMgdG8gZGVwZW5kIG9uIGVhY2gKICAgICAg
IG90aGVyIGZvciBjb2RlIHJldXNlIHdpdGhvdXQgcmVxdWlyaW5nIHVzZXJzIHRvIHBlcmZvcm0g
ZmlsZS1yZW5hbWluZwogICAgICAgZ3ltbmFzdGljcy4gKFJvYmVydCBDb2xsaW5zKQogCi0gICAg
KiBOZXcgUmVwb3NpdG9yeSBtZXRob2QgJ2dhdGhlcl9zdGF0cycgZm9yIHN0YXRpc3RpYyBkYXRh
IGNvbGxlY3Rpb24uCisgICAgKiBOZXcgUmVwb3NpdG9yeSBtZXRob2QgYGAnZ2F0aGVyX3N0YXRz
J2BgIGZvciBzdGF0aXN0aWMgZGF0YSBjb2xsZWN0aW9uLgogICAgICAgVGhpcyBpcyBleHBlY3Rl
ZCB0byBncm93IHRvIGNvdmVyIGEgbnVtYmVyIG9mIHJlbGF0ZWQgdXNlcyBtYWlubHkKICAgICAg
IHJlbGF0ZWQgdG8gYnpyIGluZm8uIChSb2JlcnQgQ29sbGlucykKIApAQCAtNDExLDE0ICs2ODUs
MTUgQEAKIAogICAgICogRml4IHByb2JsZW0gd2l0aCBVTkMgcGF0aHMgb24gV2luZG93cyA5OC4g
KEFsZXhhbmRlciBCZWxjaGVua28sICM4NDcyOCkKIAotICAgICogU2VhcmNoaW5nIGxvY2F0aW9u
IG9mIENBIGJ1bmRsZSBmb3IgUHlDdXJsIGluIGVudiB2YXJpYWJsZSAoQ1VSTF9DQV9CVU5ETEUp
LAotICAgICAgYW5kIG9uIHdpbjMyIGFsb25nIHRoZSBQQVRILiAoQWxleGFuZGVyIEJlbGNoZW5r
bywgIzgyMDg2KQorICAgICogU2VhcmNoaW5nIGxvY2F0aW9uIG9mIENBIGJ1bmRsZSBmb3IgUHlD
dXJsIGluIGVudiB2YXJpYWJsZQorICAgICAgKGBgQ1VSTF9DQV9CVU5ETEVgYCksIGFuZCBvbiB3
aW4zMiBhbG9uZyB0aGUgUEFUSC4KKyAgICAgIChBbGV4YW5kZXIgQmVsY2hlbmtvLCAjODIwODYp
CiAKICAgICAqIGBgYnpyIGluaXRgYCB3b3JrcyB3aXRoIHVuaWNvZGUgYXJndW1lbnQgTE9DQVRJ
T04uCiAgICAgICAoQWxleGFuZGVyIEJlbGNoZW5rbywgIzg1NTk5KQogCi0gICAgKiBSYWlzZSBE
ZXBlbmRlbmN5Tm90UHJlc2VudCBpZiBweWN1cmwgZG8gbm90IHN1cHBvcnQgaHR0cHMuIChWaW5j
ZW50Ci0gICAgICBMYWRldWlsLCAjODUzMDUpCisgICAgKiBSYWlzZSBgYERlcGVuZGVuY3lOb3RQ
cmVzZW50YGAgaWYgcHljdXJsIGRvIG5vdCBzdXBwb3J0IGh0dHBzLiAKKyAgICAgIChWaW5jZW50
IExhZGV1aWwsICM4NTMwNSkKIAogICAgICogSW52YWxpZCBwcm94eSBlbnYgdmFyaWFibGVzIHNo
b3VsZCBub3QgY2F1c2UgYSB0cmFjZWJhY2suCiAgICAgICAoVmluY2VudCBMYWRldWlsLCAjODc3
NjUpCkBAIC01MjcsNyArODAyLDcgQEAKIAogICAgICogVGVzdCBzdWl0ZSBlbmRzIGNsZWFubHkg
b24gV2luZG93cy4gIChWaW5jZW50IExhZGV1aWwpCiAKLSAgICAqIFdoZW4gJ2VuY29kaW5nX3R5
cGUnIGF0dHJpYnV0ZSBvZiBjbGFzcyBDb21tYW5kIGlzIGVxdWFsIHRvICdleGFjdCcsIAorICAg
ICogV2hlbiBgYGVuY29kaW5nX3R5cGVgYCBhdHRyaWJ1dGUgb2YgY2xhc3MgQ29tbWFuZCBpcyBl
cXVhbCB0byAnZXhhY3QnLCAKICAgICAgIGZvcmNlIHN5cy5zdGRvdXQgdG8gYmUgYSBiaW5hcnkg
c3RyZWFtIG9uIFdpbmRvd3MsIGFuZCB0aGVyZWZvcmUKICAgICAgIGtlZXAgZXhhY3QgbGluZS1l
bmRpbmdzICh3aXRob3V0IExGIC0+IENSTEYgY29udmVyc2lvbikuCiAgICAgICAoQWxleGFuZGVy
IEJlbGNoZW5rbykKQEAgLTU1MSw3ICs4MjYsNyBAQAogICAgICAgYGAtLXNob3ctaWRzYGAgdG8g
ZGlzcGxheSB0aGUgb3JpZ2luYWwgcmV2aXNpb24gaWRzLCByYXRoZXIgdGhhbgogICAgICAgcmV2
aXNpb24gbnVtYmVycyBhbmQgY29tbWl0dGVyIG5hbWVzLiAoSm9obiBBcmJhc2ggTWVpbmVsLCAj
NzU2MzcpCiAKLSAgICAqIGJ6ciBub3cgc3VwcG9ydHMgV2luMzIgVU5DIHBhdGggKGUuZy4gXFxI
T1NUXHBhdGgpLiAKKyAgICAqIGJ6ciBub3cgc3VwcG9ydHMgV2luMzIgVU5DIHBhdGggKGUuZy4g
YGBcSE9TVFxwYXRoYGAuIAogICAgICAgKEFsZXhhbmRlciBCZWxjaGVua28sICM1Nzg2OSkKIAog
ICAgICogV2luMzItc3BlY2lmaWM6IG91dHB1dCBvZiBjYXQsIGJ1bmRsZSBhbmQgZGlmZiBjb21t
YW5kcyBkb24ndCBtYW5nbGUKQEAgLTYzOCw2ICs5MTMsOSBAQAogCiAgICAgKiBgYE1lbW9yeVRy
YW5zcG9ydC5saXN0X2RpcigpYGAgd291bGQgc3RyaXAgdGhlIGZpcnN0IGNoYXJhY3RlciBmb3IK
ICAgICAgIGZpbGVzIG9yIGRpcmVjdG9yaWVzIGluIHJvb3QgZGlyZWN0b3J5LiAoSm9obiBBcmJh
c2ggTWVpbmVsKQorCisgICAgKiBOZXcgbWV0aG9kIGBgZ2V0X2JyYW5jaF9yZWZlcmVuY2VgYCBv
biAnQnpyRGlyJyBhbGxvd3MgdGhlIGRldGVjdGlvbiBvZiAKKyAgICAgIGJyYW5jaCByZWZlcmVu
Y2VzIC0gd2hpY2ggdGhlIHNtYXJ0IHNlcnZlciBjb21wb25lbnQgbmVlZHMuCiAgIAogICAgICog
TmV3IGBgQ2hyb290VHJhbnNwb3J0RGVjb3JhdG9yYGAsIGFjY2Vzc2libGUgdmlhIHRoZSBgYGNo
cm9vdCtgYCB1cmwKICAgICAgIHByZWZpeC4gIEl0IGRpc2FsbG93cyBhbnkgYWNjZXNzIHRvIGxv
Y2F0aW9ucyBhYm92ZSBhIHNldCBVUkwuICAoQW5kcmV3CkBAIC02NDUsOSArOTIzLDkgQEAKIAog
ICBCVUcgRklYRVM6CiAKLSAgICAqIE5vdyBfS25pdEluZGV4IHByb3Blcmx5IGRlY29kZSByZXZp
c2lvbiBpZHMgd2hlbiBsb2FkaW5nIGluZGV4IGRhdGEuCi0gICAgICBBbmQgb3B0aW1pemUgdGhl
IGtuaXQgaW5kZXggcGFyc2luZyBjb2RlLiAgKERtaXRyeSBWYXNpbGlldiwgSm9obgotICAgICAg
QXJiYXNoIE1laW5lbCkKKyAgICAqIE5vdyBgYF9Lbml0SW5kZXhgYCBwcm9wZXJseSBkZWNvZGUg
cmV2aXNpb24gaWRzIHdoZW4gbG9hZGluZyBpbmRleCBkYXRhLgorICAgICAgQW5kIG9wdGltaXpl
IHRoZSBrbml0IGluZGV4IHBhcnNpbmcgY29kZS4gCisgICAgICAoRG1pdHJ5IFZhc2lsaWV2LCBK
b2huIEFyYmFzaCBNZWluZWwpCiAKICAgICAqIGBgYnpybGliL2J6cmRpci5weWBgIHdhcyBkaXJl
Y3RseSByZWZlcmVuY2luZyBgYGJ6cmxpYi53b3JraW5ndHJlZWBgLAogICAgICAgd2l0aG91dCBp
bXBvcnRpbmcgaXQuIFRoaXMgcHJldmVudGVkIGBgYnpyIHVwZ3JhZGVgYCBmcm9tIHdvcmtpbmcK
QEAgLTY2OCwxMCArOTQ2LDEwIEBACiAgICAgICBsaW5lIChmb3IgdGhlIHVybGxpYiBpbXBsZW1l
bnRhdGlvbikuIERvbid0IHJlcXVlc3QgYWxyZWFkeQogICAgICAga25vd24gcGFzc3dvcmRzIChW
aW5jZW50IExhZGV1aWwsICM0MjM4MywgIzQ0NjQ3LCAjNDg1MjcpCiAKLSAgICAqIF9Lbml0SW5k
ZXguYWRkX3ZlcnNpb25zKCkgZGljdGlvbmFyeSBjb21wcmVzc2VzIHJldmlzaW9uIGlkcyBhcyB0
aGV5CisgICAgKiBgYF9Lbml0SW5kZXguYWRkX3ZlcnNpb25zKClgYCBkaWN0aW9uYXJ5IGNvbXBy
ZXNzZXMgcmV2aXNpb24gaWRzIGFzIHRoZXkKICAgICAgIGFyZSBhZGRlZC4gVGhpcyBmaXhlcyBi
dWcgd2hlcmUgZmV0Y2hpbmcgcmVtb3RlIHJldmlzaW9ucyByZWNvcmRzCi0gICAgICB0aGVtIGFz
IGZ1bGwgcmVmZXJlbmNlcyByYXRoZXIgdGhhbiBpbnRlZ2Vycy4gKEpvaG4gQXJiYXNoIE1laW5l
bCwKLSAgICAgICM2NDc4OSkKKyAgICAgIHRoZW0gYXMgZnVsbCByZWZlcmVuY2VzIHJhdGhlciB0
aGFuIGludGVnZXJzLgorICAgICAgKEpvaG4gQXJiYXNoIE1laW5lbCwgIzY0Nzg5KQogCiAgICAg
KiBgYGJ6ciBpZ25vcmVgYCBzdHJpcHMgdHJhaWxpbmcgc2xhc2hlcyBpbiBwYXR0ZXJucy4KICAg
ICAgIEFsc28gYGBienIgaWdub3JlYGAgcmVqZWN0cyBhYnNvbHV0ZSBwYXRocy4gKEtlbnQgR2li
c29uLCAjNDU1OSkKQEAgLTczNyw4ICsxMDE1LDggQEAKICAgICAqIE5ldyBSZWdpc3RyeSBjbGFz
cyB0byBwcm92aWRlIG5hbWUtdG8tb2JqZWN0IHJlZ2lzdHJ5LWxpa2Ugc3VwcG9ydCwKICAgICAg
IGZvciBleGFtcGxlIGZvciBzY2hlbWVzIHdoZXJlIHBsdWdpbnMgY2FuIHJlZ2lzdGVyIG5ldyBj
bGFzc2VzIHRvCiAgICAgICBkbyBjZXJ0YWluIHRhc2tzIChlLmcuIGxvZyBmb3JtYXR0ZXJzKS4g
QWxzbyBwcm92aWRlcyBsYXp5IHJlZ2lzdHJhdGlvbgotICAgICAgdG8gYWxsb3cgbW9kdWxlcyB0
byBiZSBsb2FkZWQgb24gcmVxdWVzdC4gKEpvaG4gQXJiYXNoIE1laW5lbCwgQWRlb2RhdG8KLSAg
ICAgIFNpbcOzKQorICAgICAgdG8gYWxsb3cgbW9kdWxlcyB0byBiZSBsb2FkZWQgb24gcmVxdWVz
dC4KKyAgICAgIChKb2huIEFyYmFzaCBNZWluZWwsIEFkZW9kYXRvIFNpbcOzKQogCiAgIEFQSSBJ
TkNPTVBBVEFCSUxJVFk6CiAgIApAQCAtNzY0LDExICsxMDQyLDExIEBACiAgICAgICAoQWFyb24g
QmVudGxleSkKIAogICAgICogYGBXb3JraW5nVHJlZS5zZXRfcm9vdF9pZChOb25lKWBgIGlzIG5v
dyBkZXByZWNhdGVkLiBQbGVhc2UKLSAgICAgIHBhc3MgaW4gaW52ZW50b3J5LlJPT1RfSUQgaWYg
eW91IHdhbnQgdGhlIGRlZmF1bHQgcm9vdCBpZCB2YWx1ZS4KKyAgICAgIHBhc3MgaW4gYGBpbnZl
bnRvcnkuUk9PVF9JRGBgIGlmIHlvdSB3YW50IHRoZSBkZWZhdWx0IHJvb3QgaWQgdmFsdWUuCiAg
ICAgICAoUm9iZXJ0IENvbGxpbnMsIEpvaG4gQXJiYXNoIE1laW5lbCkKIAogICAgICogTmV3IG1l
dGhvZCBgYFdvcmtpbmdUcmVlLmZsdXNoKClgYCB3aGljaCB3aWxsIHdyaXRlIHRoZSBjdXJyZW50
IG1lbW9yeQotICAgICAgaW52ZW50b3J5IG91dCB0byBkaXNrLiBBdCB0aGUgc2FtZSB0aW1lLCBy
ZWFkX3dvcmtpbmdfaW52ZW50b3J5IHdpbGwKKyAgICAgIGludmVudG9yeSBvdXQgdG8gZGlzay4g
QXQgdGhlIHNhbWUgdGltZSwgYGByZWFkX3dvcmtpbmdfaW52ZW50b3J5YGAgd2lsbAogICAgICAg
bm8gbG9uZ2VyIHRyYXNoIHRoZSBjdXJyZW50IHRyZWUgaW52ZW50b3J5IGlmIGl0IGhhcyBiZWVu
IG1vZGlmaWVkIHdpdGhpbgogICAgICAgdGhlIGN1cnJlbnQgbG9jaywgYW5kIHRoZSB0cmVlIHdp
bGwgbm93IGBgZmx1c2goKWBgIGF1dG9tYXRpY2FsbHkgb24KICAgICAgIGBgdW5sb2NrKClgYC4g
YGBXb3JraW5nVHJlZS5zZXRfcm9vdF9pZCgpYGAgaGFzIGJlZW4gdXBkYXRlZCB0byB0YWtlCkBA
IC04NzUsNyArMTE1Myw3IEBACiAgICAgICBtb2R1bGVzIHdpbGwgbm90IGFjdHVhbGx5IGJlIGlt
cG9ydGVkIGlmIHRoZXkgYXJlIG5vdCB1c2VkLgogICAgICAgKEpvaG4gQXJiYXNoIE1laW5lbCkK
IAotICAgICogU3VwcG9ydCBienI6Ly8gYW5kIGJ6citzc2g6Ly8gdXJscyB0byB3b3JrIHdpdGgg
dGhlIG5ldyBSUEMtYmFzZWQKKyAgICAqIFN1cHBvcnQgYGBienI6Ly9gYCBhbmQgYGBienIrc3No
Oi8vYGAgdXJscyB0byB3b3JrIHdpdGggdGhlIG5ldyBSUEMtYmFzZWQKICAgICAgIHRyYW5zcG9y
dCB3aGljaCB3aWxsIGJlIHVzZWQgd2l0aCB0aGUgdXBjb21pbmcgaGlnaC1wZXJmb3JtYW5jZSBz
bWFydAogICAgICAgc2VydmVyLiBUaGUgbmV3IGNvbW1hbmQgYGBienIgc2VydmVgYCB3aWxsIGlu
dm9rZSBienIgaW4gc2VydmVyIG1vZGUsCiAgICAgICB3aGljaCBwcm9jZXNzZXMgdGhlc2UgcmVx
dWVzdHMuIChBbmRyZXcgQmVubmV0dHMsIFJvYmVydCBDb2xsaW5zLCBNYXJ0aW4KQEAgLTg4OCw3
ICsxMTY2LDcgQEAKIAogICBCVUcgRklYRVM6CiAKLSAgICAqICdienIgaW52ZW50b3J5IFtGSUxF
Li4uXScgYWxsb3dzIHJlc3RyaWN0aW5nIHRoZSBmaWxlIGxpc3QgdG8gYQorICAgICogYGAnYnpy
IGludmVudG9yeSBbRklMRS4uLl0nYGAgYWxsb3dzIHJlc3RyaWN0aW5nIHRoZSBmaWxlIGxpc3Qg
dG8gYQogICAgICAgc3BlY2lmaWMgc2V0IG9mIGZpbGVzLiAoSm9obiBBcmJhc2ggTWVpbmVsLCAj
MzYzMSkKIAogICAgICogRG9uJ3QgYWJvcnQgd2hlbiBhbm5vdGF0aW5nIGVtcHR5IGZpbGVzIChK
b2huIEFyYmFzaCBNZWluZWwsICM1NjgxNCkKQEAgLTkyMCw3ICsxMTk4LDcgQEAKICAgICAqIEhh
bmRsZSB3aGVuIExBTkcgaXMgbm90IHJlY29nbml6ZWQgYnkgcHl0aG9uLiBFbWl0IGEgd2Fybmlu
ZywgYnV0CiAgICAgICBqdXN0IHJldmVydCB0byB1c2luZyAnYXNjaWknLiAoSm9obiBBcmJhc2gg
TWVpbmVsLCAjMzUzOTIpCiAKLSAgICAqIERvbid0IHVzZSBwcmVleGVjX2ZuIG9uIHdpbjMyLCBh
cyBpdCBpcyBub3Qgc3VwcG9ydGVkIGJ5IHN1YnByb2Nlc3MuCisgICAgKiBEb24ndCB1c2UgYGBw
cmVleGVjX2ZuYGAgb24gd2luMzIsIGFzIGl0IGlzIG5vdCBzdXBwb3J0ZWQgYnkgc3VicHJvY2Vz
cy4KICAgICAgIChKb2huIEFyYmFzaCBNZWluZWwpCiAKICAgICAqIFNraXAgc3BlY2lmaWMgdGVz
dHMgd2hlbiB0aGUgZGVwZW5kZW5jaWVzIGFyZW4ndCBtZXQuIFRoaXMgaW5jbHVkZXMKQEAgLTk1
MiwxOSArMTIzMCwxOSBAQAogICAgICAgdGhhbiBoYXZpbmcgSE9NRSBzZXQgdG8gdGhlIHNhbWUg
bG9jYXRpb24gYXMgdGhlIHdvcmtpbmcgZGlyZWN0b3J5LgogICAgICAgKEpvaG4gQXJiYXNoIE1l
aW5lbCkKIAotICAgICogcnVuX2J6cl9zdWJwcm9jZXNzKCkgY2FuIHRha2UgYW4gb3B0aW9uYWwg
J2Vudl9jaGFuZ2VzPXt9JyBwYXJhbWV0ZXIsCisgICAgKiBgYHJ1bl9ienJfc3VicHJvY2Vzcygp
YGAgY2FuIHRha2UgYW4gb3B0aW9uYWwgYGBlbnZfY2hhbmdlcz17fWBgIHBhcmFtZXRlciwKICAg
ICAgIHdoaWNoIHdpbGwgdXBkYXRlIG9zLmVudmlyb24gaW5zaWRlIHRoZSBzcGF3bmVkIGNoaWxk
LiBJdCBhbHNvIGNhbgotICAgICAgdGFrZSBhICd1bml2ZXJzYWxfbmV3bGluZXM9VHJ1ZScsIHdo
aWNoIGhlbHBzIHdoZW4gY2hlY2tpbmcgdGhlIG91dHB1dAorICAgICAgdGFrZSBhIGBgdW5pdmVy
c2FsX25ld2xpbmVzPVRydWVgYCwgd2hpY2ggaGVscHMgd2hlbiBjaGVja2luZyB0aGUgb3V0cHV0
CiAgICAgICBvZiB0aGUgY29tbWFuZC4gKEpvaG4gQXJiYXNoIE1laW5lbCkKIAogICAgICogUmVm
YWN0b3IgU0ZUUCB2ZW5kb3JzIHRvIGFsbG93IGVhc2llciByZS11c2Ugd2hlbiBzc2ggaXMgdXNl
ZC4gCiAgICAgICAoQW5kcmV3IEJlbm5ldHRzKQogCi0gICAgKiBUcmFuc3BvcnQubGlzdF9kaXIo
KSBhbmQgVHJhbnNwb3J0Lml0ZXJfZmlsZXNfcmVjdXJzaXZlKCkgc2hvdWxkIGFsd2F5cworICAg
ICogYGBUcmFuc3BvcnQubGlzdF9kaXIoKWBgIGFuZCBgYFRyYW5zcG9ydC5pdGVyX2ZpbGVzX3Jl
Y3Vyc2l2ZSgpYGAgc2hvdWxkIGFsd2F5cwogICAgICAgcmV0dXJuIHVybGVzY2FwZWQgcGF0aHMu
IFRoaXMgaXMgbm93IHRlc3RlZCAodGhlcmUgd2VyZSBidWdzIGluIGEgZmV3CiAgICAgICBvZiB0
aGUgdHJhbnNwb3J0cykgKEFuZHJldyBCZW5uZXR0cywgRGF2aWQgQWxsb3VjaGUsIEpvaG4gQXJi
YXNoIE1laW5lbCkKIAotICAgICogTmV3IHV0aWxpdHkgZnVuY3Rpb24gc3ltYm9sX3ZlcnNpb25p
bmcuZGVwcmVjYXRpb25fc3RyaW5nLiBSZXR1cm5zIHRoZQorICAgICogTmV3IHV0aWxpdHkgZnVu
Y3Rpb24gYGBzeW1ib2xfdmVyc2lvbmluZy5kZXByZWNhdGlvbl9zdHJpbmdgYC4gUmV0dXJucyB0
aGUKICAgICAgIGZvcm1hdHRlZCBzdHJpbmcgZm9yIGEgY2FsbGFibGUsIGRlcHJlY2F0aW9uIGZv
cm1hdCBwYWlyLiAoUm9iZXJ0IENvbGxpbnMpCiAKICAgICAqIE5ldyBUZXN0Q2FzZSBoZWxwZXIg
YXBwbHlEZXByZWNhdGVkLiBUaGlzIGFsbG93cyB5b3UgdG8gY2FsbCBhIGNhbGxhYmxlCkBAIC05
NzIsMjYgKzEyNTAsMjcgQEAKICAgICAgIHRoZSBkZXByZWNhdGlvbiBmb3JtYXQgc3RyaW5nIGlz
c3VlZCBmb3IgaXQuIChSb2JlcnQgQ29sbGlucykKIAogICAgICogVHJhbnNwb3J0LmFwcGVuZCBh
bmQgVHJhbnNwb3J0LnB1dCBoYXZlIGJlZW4gZGVwcmVjYXRlZCBpbiBmYXZvciBvZgotICAgICAg
LmFwcGVuZF9ieXRlcywgLmFwcGVuZF9maWxlLCAucHV0X2J5dGVzLCBhbmQgLnB1dF9maWxlLiBU
aGlzIHJlbW92ZXMgdGhlCi0gICAgICBhbWJpZ3VpdHkgaW4gd2hhdCB0eXBlIG9mIG9iamVjdCB0
aGUgZnVuY3Rpb25zIHRha2UuCi0gICAgICBUcmFuc3BvcnQubm9uX2F0b21pY19wdXRfe2J5dGVz
LGZpbGV9IGhhcyBhbHNvIGJlZW4gYWRkZWQuIFdoaWNoIHdvcmtzCi0gICAgICBzaW1pbGFybHkg
dG8gVHJhbnNwb3J0LmFwcGVuZCgpIGV4Y2VwdCBmb3IgU0ZUUCwgaXQgZG9lc24ndCBoYXZlIGEg
cm91bmQKLSAgICAgIHRyaXAgd2hlbiBvcGVuaW5nIHRoZSBmaWxlLiBBbHNvLCBpdCBwcm92aWRl
cyBmdW5jdGlvbmFsaXR5IGZvciBjcmVhdGluZwotICAgICAgYSBwYXJlbnQgZGlyZWN0b3J5IHdo
ZW4gdHJ5aW5nIHRvIGNyZWF0ZSBhIGZpbGUsIHJhdGhlciB0aGFuIHJhaXNlCi0gICAgICBOb1N1
Y2hGaWxlIGFuZCBmb3JjaW5nIHRoZSBjYWxsZXIgdG8gcmVwZWF0IHRoZWlyIHJlcXVlc3QuCisg
ICAgICBgYC5hcHBlbmRfYnl0ZXNgYCwgYGAuYXBwZW5kX2ZpbGVgYCwgYGAucHV0X2J5dGVzYGAs
IGFuZAorICAgICAgYGAucHV0X2ZpbGVgYC4gVGhpcyByZW1vdmVzIHRoZSBhbWJpZ3VpdHkgaW4g
d2hhdCB0eXBlIG9mIG9iamVjdCB0aGUKKyAgICAgIGZ1bmN0aW9ucyB0YWtlLiAgYGBUcmFuc3Bv
cnQubm9uX2F0b21pY19wdXRfe2J5dGVzLGZpbGV9YGAgaGFzIGFsc28KKyAgICAgIGJlZW4gYWRk
ZWQuIFdoaWNoIHdvcmtzIHNpbWlsYXJseSB0byBgYFRyYW5zcG9ydC5hcHBlbmQoKWBgIGV4Y2Vw
dCBmb3IKKyAgICAgIFNGVFAsIGl0IGRvZXNuJ3QgaGF2ZSBhIHJvdW5kIHRyaXAgd2hlbiBvcGVu
aW5nIHRoZSBmaWxlLiBBbHNvLCBpdAorICAgICAgcHJvdmlkZXMgZnVuY3Rpb25hbGl0eSBmb3Ig
Y3JlYXRpbmcgYSBwYXJlbnQgZGlyZWN0b3J5IHdoZW4gdHJ5aW5nCisgICAgICB0byBjcmVhdGUg
YSBmaWxlLCByYXRoZXIgdGhhbiByYWlzZSBOb1N1Y2hGaWxlIGFuZCBmb3JjaW5nIHRoZQorICAg
ICAgY2FsbGVyIHRvIHJlcGVhdCB0aGVpciByZXF1ZXN0LgogICAgICAgKEpvaG4gQXJiYXNoIE1l
aW5lbCkKIAogICAgICogV29ya2luZ1RyZWUgaGFzIGEgbmV3IGFwaSBgYHVudmVyc2lvbmBgIHdo
aWNoIGFsbG93IHRoZSB1bnZlcnNpb25pbmcgb2YKICAgICAgIGVudHJpZXMgYnkgdGhlaXIgZmls
ZSBpZC4gKFJvYmVydCBDb2xsaW5zKQogCi0gICAgKiBXb3JraW5nVHJlZS5wZW5kaW5nX21lcmdl
cyBpcyBkZXByZWNhdGVkLiAgUGxlYXNlIHVzZSB0aGUgZ2V0X3BhcmVudF9pZHMKLSAgICAgIChp
bnRyb2R1Y2VkIGluIDAuMTApIG1ldGhvZCBpbnN0ZWFkLiAoUm9iZXJ0IENvbGxpbnMpCisgICAg
KiBgYFdvcmtpbmdUcmVlLnBlbmRpbmdfbWVyZ2VzYGAgaXMgZGVwcmVjYXRlZC4gIFBsZWFzZSB1
c2UgdGhlCisgICAgICBgYGdldF9wYXJlbnRfaWRzYGAgKGludHJvZHVjZWQgaW4gMC4xMCkgbWV0
aG9kIGluc3RlYWQuIChSb2JlcnQgQ29sbGlucykKIAotICAgICogV29ya2luZ1RyZWUgaGFzIGEg
bmV3IGxvY2tfdHJlZV93cml0ZSBtZXRob2Qgd2hpY2ggbG9ja3MgdGhlIGJyYW5jaCBmb3IKKyAg
ICAqIFdvcmtpbmdUcmVlIGhhcyBhIG5ldyBgYGxvY2tfdHJlZV93cml0ZWBgIG1ldGhvZCB3aGlj
aCBsb2NrcyB0aGUgYnJhbmNoIGZvcgogICAgICAgcmVhZCByYXRoZXIgdGhhbiB3cml0ZS4gVGhp
cyBpcyBhcHByb3ByaWF0ZSBmb3IgYWN0aW9ucyB3aGljaCBvbmx5IG5lZWQKICAgICAgIHRoZSBi
cmFuY2ggZGF0YSBmb3IgcmVmZXJlbmNlIHJhdGhlciB0aGFuIG11dGF0aW9uLiBBIG5ldyBkZWNv
cmF0b3IKLSAgICAgIG5lZWRzX3RyZWVfd3JpdGVfbG9jayBpcyBwcm92aWRlZCBpbiB0aGUgd29y
a2luZ3RyZWUgbW9kdWxlLiBMaWtlIHRoZQotICAgICAgbmVlZHNfcmVhZF9sb2NrIGFuZCBuZWVk
c193cml0ZV9sb2NrIGRlY29yYXRvcnMgdGhpcyBhbGxvd3Mgc3RhdGljIAorICAgICAgYGBuZWVk
c190cmVlX3dyaXRlX2xvY2tgYCBpcyBwcm92aWRlZCBpbiB0aGUgd29ya2luZ3RyZWUgbW9kdWxl
LiBMaWtlIHRoZQorICAgICAgYGBuZWVkc19yZWFkX2xvY2tgYCBhbmQgYGBuZWVkc193cml0ZV9s
b2NrYGAgZGVjb3JhdG9ycyB0aGlzIGFsbG93cyBzdGF0aWMgCiAgICAgICBkZWNsYXJhdGlvbiBv
ZiB0aGUgbG9ja2luZyByZXF1aXJlbWVudHMgb2YgYSBmdW5jdGlvbiB0byBlbnN1cmUgdGhhdAog
ICAgICAgYSBsb2NrIGlzIHRha2VuIG91dCBmb3IgY2FzdWFsIHNjcmlwdHMuIChSb2JlcnQgQ29s
bGlucywgIzU0MTA3KQogCkBAIC0xMDEyLDcgKzEyOTEsNyBAQAogICAgICogV29ya2luZ1RyZWUg
aGFzIGEgbmV3IHBhcmVudCBjbGFzcyBNdXRhYmxlVHJlZSB3aGljaCByZXByZXNlbnRzIHRoZSAK
ICAgICAgIHNwZWNpYWxpc2F0aW9ucyBvZiBUcmVlIHdoaWNoIGFyZSBhYmxlIHRvIGJlIGFsdGVy
ZWQuIChSb2JlcnQgQ29sbGlucykKIAotICAgICogTmV3IG1ldGhvZHMgbWtkaXIgYW5kIHB1dF9m
aWxlX2J5dGVzX25vbl9hdG9taWMgb24gTXV0YWJsZVRyZWUgdGhhdAorICAgICogTmV3IG1ldGhv
ZHMgbWtkaXIgYW5kIGBgcHV0X2ZpbGVfYnl0ZXNfbm9uX2F0b21pY2BgIG9uIE11dGFibGVUcmVl
IHRoYXQKICAgICAgIG11dGF0ZSB0aGUgdHJlZSBhbmQgaXRzIGNvbnRlbnRzLiAoUm9iZXJ0IENv
bGxpbnMpCiAKICAgICAqIFRyYW5zcG9ydCBiZWhhdmlvdXIgYXQgdGhlIHJvb3Qgb2YgdGhlIFVS
TCBpcyBub3cgZGVmaW5lZCBhbmQgdGVzdGVkLgpAQCAtMTAyMyw5ICsxMzAyLDkgQEAKICAgICAq
IE5ldyB0ZXN0IGhlbHBlciBjbGFzc3MgTWVtb3J5VHJlZS4gVGhpcyBpcyB0eXBpY2FsbHkgYWNj
ZXNzZWQgdmlhCiAgICAgICBgYHNlbGYubWFrZV9icmFuY2hfYW5kX21lbW9yeV90cmVlKClgYCBp
biB0ZXN0IGNhc2VzLiAoUm9iZXJ0IENvbGxpbnMpCiAgICAgICAKLSAgICAqIEFkZCBzdGFydF9i
enJfc3VicHJvY2VzcyBhbmQgc3RvcF9ienJfc3VicHJvY2VzcyB0byBhbGxvdyB0ZXN0IGNvZGUg
dG8KLSAgICAgIGNvbnRpbnVlIHJ1bm5pbmcgY29uY3VycmVudGx5IHdpdGggYSBzdWJwcm9jZXNz
IG9mIGJ6ci4gKEFuZHJldyBCZW5uZXR0cywKLSAgICAgIFJvYmVydCBDb2xsaW5zKQorICAgICog
QWRkIGBgc3RhcnRfYnpyX3N1YnByb2Nlc3NgYCBhbmQgYGBzdG9wX2J6cl9zdWJwcm9jZXNzYGAg
dG8gYWxsb3cgdGVzdAorICAgICAgY29kZSB0byBjb250aW51ZSBydW5uaW5nIGNvbmN1cnJlbnRs
eSB3aXRoIGEgc3VicHJvY2VzcyBvZiBienIuCisgICAgICAoQW5kcmV3IEJlbm5ldHRzLCBSb2Jl
cnQgQ29sbGlucykKIAogICAgICogQWRkIGEgbmV3IG1ldGhvZCBgYFRyYW5zcG9ydC5nZXRfc21h
cnRfY2xpZW50KClgYC4gVGhpcyBpcyBwcm92aWRlZCB0bwogICAgICAgYWxsb3cgdXBncmFkZXMg
dG8gYSByaWNoZXIgaW50ZXJmYWNlIHRoYW4gdGhlIFZGUyBvbmUgcHJvdmlkZWQgYnkKQEAgLTEw
MzksNyArMTMxOCw3IEBACiAgIAogICAgICogJ2J6ciBhZGQgLS1maWxlLWlkcy1mcm9tJyBjYW4g
YmUgdXNlZCB0byBzcGVjaWZ5IGFub3RoZXIgcGF0aCB0byB1c2UKICAgICAgIGZvciBjcmVhdGlu
ZyBmaWxlIGlkcywgcmF0aGVyIHRoYW4gZ2VuZXJhdGluZyBhbGwgbmV3IG9uZXMuIEludGVybmFs
bHksCi0gICAgICB0aGUgJ2FjdGlvbicgcGFzc2VkIHRvIHNtYXJ0X2FkZF90cmVlKCkgY2FuIHJl
dHVybiBmaWxlX2lkcyB0aGF0CisgICAgICB0aGUgJ2FjdGlvbicgcGFzc2VkIHRvIGBgc21hcnRf
YWRkX3RyZWUoKWBgIGNhbiByZXR1cm4gYGBmaWxlX2lkc2BgIHRoYXQKICAgICAgIHdpbGwgYmUg
dXNlZCwgcmF0aGVyIHRoYW4gaGF2aW5nIGJ6cmxpYiBnZW5lcmF0ZSBuZXcgb25lcy4KICAgICAg
IChKb2huIEFyYmFzaCBNZWluZWwsICM1NTc4MSkKIApAQCAtMTA1OSw3ICsxMzM4LDcgQEAKICAg
ICAqIEhlbHAgZGlmZnV0aWxzIDIuOC40IGdldCBhbG9uZyB3aXRoIGJpbmFyeSB0ZXN0cyAoTWFy
aWVuIFp3YXJ0OiAjNTc2MTQpCiAKICAgICAqIENoYW5nZSBMb2NrRGlyIHNvIHRoYXQgaWYgdGhl
IGxvY2sgZGlyZWN0b3J5IGRvZXNuJ3QgZXhpc3Qgd2hlbgotICAgICAgbG9ja193cml0ZSgpIGlz
IGNhbGxlZCwgYW4gYXR0ZW1wdCB3aWxsIGJlIG1hZGUgdG8gY3JlYXRlIGl0LgorICAgICAgYGBs
b2NrX3dyaXRlKClgYCBpcyBjYWxsZWQsIGFuIGF0dGVtcHQgd2lsbCBiZSBtYWRlIHRvIGNyZWF0
ZSBpdC4KICAgICAgIChKb2huIEFyYmFzaCBNZWluZWwsICM1Njk3NCkKIAogICAgICogYGBienIg
dW5jb21taXRgYCBwcmVzZXJ2ZXMgcGVuZGluZyBtZXJnZXMuIChKb2huIEFyYmFzaCBNZWluZWws
ICM1NzY2MCkKQEAgLTEwODAsMTUgKzEzNTksMTUgQEAKICAgICAqIEhhbmRsZSBUWj1VVEMgcHJv
cGVybHkgd2hlbiByZWFkaW5nL3dyaXRpbmcgcmV2aXNpb25zLgogICAgICAgKEpvaG4gQXJiYXNo
IE1laW5lbCwgIzU1NzgzLCAjNTYyOTApCiAKLSAgICAqIFVzZSBHUEdfVFRZIHRvIGFsbG93IGdw
ZyAtLWNsIHRvIHdvcmsgd2l0aCBncGctYWdlbnQgaW4gYSBwaXBlbGluZSwKKyAgICAqIFVzZSBg
YEdQR19UVFlgYCB0byBhbGxvdyBncGcgLS1jbCB0byB3b3JrIHdpdGggZ3BnLWFnZW50IGluIGEg
cGlwZWxpbmUsCiAgICAgICAocGFzc2luZyB0ZXh0IHRvIHNpZ24gaW4gb24gc3RkaW4pLiAoSm9o
biBBcmJhc2ggTWVpbmVsLCAjNTQ0NjgpCiAKICAgICAqIEV4dGVybmFsIGRpZmYgZG9lcyB0aGUg
cmlnaHQgdGhpbmcgZm9yIGJpbmFyaWVzIGV2ZW4gaW4gZm9yZWlnbiAKICAgICAgIGxhbmd1YWdl
cy4gKEpvaG4gQXJiYXNoIE1laW5lbCwgIzU2MzA3KQogCiAgICAgKiBUZXN0YW1lbnQgaGFuZGxl
cyBtb3JlIGNhc2VzIHdoZW4gY29udGVudCBpcyB1bmljb2RlLiBTcGVjaWZpYyBidWcgd2FzCi0g
ICAgICBpbiBoYW5kbGluZyBvZiByZXZpc2lvbiBwcm9wZXJ0aWVzLiAoSm9obiBBcmJhc2ggTWVp
bmVsLCBIb2xnZXIgS3Jla2VsLAotICAgICAgIzU0NzIzKQorICAgICAgaW4gaGFuZGxpbmcgb2Yg
cmV2aXNpb24gcHJvcGVydGllcy4KKyAgICAgIChKb2huIEFyYmFzaCBNZWluZWwsIEhvbGdlciBL
cmVrZWwsICM1NDcyMykKIAogICAgICogVGhlIGJ6ciBzZWxmdGVzdCB3YXMgZmFpbGluZyBvbiBp
bnN0YWxsZWQgdmVyc2lvbnMgZHVlIHRvIGEgYnVnIGluIGEgbmV3CiAgICAgICB0ZXN0IGhlbHBl
ci4gKEpvaG4gQXJiYXNoIE1laW5lbCwgUm9iZXJ0IENvbGxpbnMsICM1ODA1NykKQEAgLTExMTEs
OSArMTM5MCw5IEBACiAKICAgICogVGhlIGhhcmQtY29kZWQgYnVpbHQtaW4gaWdub3JlIHJ1bGVz
IGhhdmUgYmVlbiByZW1vdmVkLiBUaGVyZSBhcmUKICAgICAgbm93IHR3byBydWxlc2V0cyB3aGlj
aCBhcmUgZW5mb3JjZWQuIEEgdXNlciBnbG9iYWwgb25lIGluIAotICAgICB+Ly5iYXphYXIvaWdu
b3JlIHdoaWNoIHdpbGwgYXBwbHkgdG8gZXZlcnkgdHJlZSwgYW5kIHRoZSB0cmVlCisgICAgIGBg
fi8uYmF6YWFyL2lnbm9yZWBgIHdoaWNoIHdpbGwgYXBwbHkgdG8gZXZlcnkgdHJlZSwgYW5kIHRo
ZSB0cmVlCiAgICAgIHNwZWNpZmljIG9uZSAnLmJ6cmlnbm9yZScuCi0gICAgIH4vLmJhemFhci9p
Z25vcmUgd2lsbCBiZSBjcmVhdGVkIGlmIGl0IGRvZXMgbm90IGV4aXN0LCBidXQgd2l0aAorICAg
ICBgYH4vLmJhemFhci9pZ25vcmVgYCB3aWxsIGJlIGNyZWF0ZWQgaWYgaXQgZG9lcyBub3QgZXhp
c3QsIGJ1dCB3aXRoCiAgICAgIGEgbW9yZSBjb25zZXJ2YXRpdmUgbGlzdCB0aGFuIHRoZSBvbGQg
ZGVmYXVsdC4KICAgICAgVGhpcyBmaXhlcyBidWdzIHdpdGggZGVmYXVsdCBydWxlcyBiZWluZyBl
bmZvcmNlZCBubyBtYXR0ZXIgd2hhdC4gCiAgICAgIFRoZSBvbGQgbGlzdCBvZiBpZ25vcmUgcnVs
ZXMgZnJvbSBienIgaXMgYXZhaWxhYmxlIGJ5CkBAIC0xMTM1LDcgKzE0MTQsNyBAQAogICAgICBw
cm9wZXIgcHJpbnRpbmcgd2hlbiB0aGUgdXNlcidzIHRlcm1pbmFsIGVuY29kaW5nIGNhbm5vdCBk
aXNwbGF5IAogICAgICB0aGUgcGF0aCBvZiBhIGZpbGUgdGhhdCBoYXMgYmVlbiB2ZXJzaW9uZWQu
CiAgICAgIGBgYnpyIGJyYW5jaGBgIGNhbiB0YWtlIGEgdGFyZ2V0IFVSTCByYXRoZXIgdGhhbiBv
bmx5IGEgbG9jYWwgZGlyZWN0b3J5LgotICAgICBCcmFuY2guZ2V0X3BhcmVudCgpL3NldF9wYXJl
bnQoKSBub3cgc2F2ZSBhIHJlbGF0aXZlIHBhdGggaWYgcG9zc2libGUsCisgICAgIGBgQnJhbmNo
LmdldF9wYXJlbnQoKS9zZXRfcGFyZW50KClgYCBub3cgc2F2ZSBhIHJlbGF0aXZlIHBhdGggaWYg
cG9zc2libGUsCiAgICAgIGFuZCBub3JtYWxpemUgdGhlIHBhcmVudCBiYXNlZCBvbiByb290LCBh
bGxvd2luZyBhY2Nlc3MgYWNyb3NzCiAgICAgIGRpZmZlcmVudCB0cmFuc3BvcnRzLiAoSm9obiBB
cmJhc2ggTWVpbmVsLCBXb3V0ZXIgdmFuIEhleXN0LCBNYXJ0aW4gUG9vbCkKICAgICAgKE1hbG9u
ZSAjNDg5MDYsICM0MjY5OSwgIzQwNjc1LCAjNTI4MSwgIzM5ODAsICMzNjM2MywgIzQzNjg5LApA
QCAtMTIwNiw3ICsxNDg1LDcgQEAKICAgICAgQWxzbyB1cGRhdGVzIHRoaW5ncyBsaWtlICdodHRw
K3B5Y3VybDovLycgaWYgcHljdXJsIGlzIG5vdCBwcmVzZW50LgogICAgICAoSm9obiBBcmJhc2gg
TWVpbmVsKSAoTWFsb25lICM0NzgyMSwgIzUyMjA0KQogCi0gICAqIE5ldyBlbnYgdmFyaWFibGUg
QlpSX1BST0dSRVNTX0JBUiwgc2V0cyB0aGUgZGVmYXVsdCBwcm9ncmVzcyBiYXIgdHlwZS4KKyAg
ICogTmV3IGVudiB2YXJpYWJsZSBgYEJaUl9QUk9HUkVTU19CQVJgYCwgc2V0cyB0aGUgZGVmYXVs
dCBwcm9ncmVzcyBiYXIgdHlwZS4KICAgICAgQ2FuIGJlIHNldCB0byAnbm9uZScgb3IgJ2R1bW15
JyB0byBkaXNhYmxlIHRoZSBwcm9ncmVzcyBiYXIsICdkb3RzJyBvciAKICAgICAgJ3R0eScgdG8g
Y3JlYXRlIHRoZSByZXNwZWN0aXZlIHR5cGUuIChKb2huIEFyYmFzaCBNZWluZWwsICM0MjE5Nywg
IzUxMTA3KQogCkBAIC0xMjM4LDE3ICsxNTE3LDE3IEBACiAgIEJVRyBGSVhFUzoKIAogICAgICog
Rml4IHNoYWRvd2VkIGRlZmluaXRpb24gb2YgVGVzdExvY2F0aW9uQ29uZmlnIHRoYXQgY2F1c2Vk
IHNvbWUgCi0gICAgICB0ZXN0cyBub3QgdG8gcnVuLiAgKCMzMjU4NywgRXJpayBCw6VnZm9ycywg
TWljaGFlbCBFbGxlcm1hbiwgCi0gICAgICBNYXJ0aW4gUG9vbCkKKyAgICAgIHRlc3RzIG5vdCB0
byBydW4uCisgICAgICAoRXJpayBCw6VnZm9ycywgTWljaGFlbCBFbGxlcm1hbiwgTWFydGluIFBv
b2wsICMzMjU4NykKIAogICAgICogRml4IHVubmVjZXNzYXJ5IHJlcXVpcmVtZW50IG9mIHNpZ24t
bXktY29tbWl0cyB0aGF0IGl0IGJlIHJ1biBmcm9tCiAgICAgICBhIHdvcmtpbmcgZGlyZWN0b3J5
LiAgKE1hcnRpbiBQb29sLCBSb2JlcnQgQ29sbGlucykKIAogICAgICogJ2J6ciBwdXNoIGxvY2F0
aW9uJyB3aWxsIG9ubHkgcmVtZW1iZXIgdGhlIHB1c2ggbG9jYXRpb24gaWYgaXQgc3VjY2VlZHMK
LSAgICAgIGluIGNvbm5lY3RpbmcgdG8gdGhlIHJlbW90ZSBsb2NhdGlvbi4gKCM0OTc0MiwgSm9o
biBBcmJhc2ggTWVpbmVsKQorICAgICAgaW4gY29ubmVjdGluZyB0byB0aGUgcmVtb3RlIGxvY2F0
aW9uLiAoSm9obiBBcmJhc2ggTWVpbmVsLCAjNDk3NDIpCiAKICAgICAqICdienIgcmV2ZXJ0JyBu
byBsb25nZXIgdG9nZ2xlcyB0aGUgZXhlY3V0YWJsZSBiaXQgb24gd2luMzIKLSAgICAgICgjNDUw
MTAsIEpvaG4gQXJiYXNoIE1laW5lbCkKKyAgICAgIChKb2huIEFyYmFzaCBNZWluZWwsICM0NTAx
MCkKIAogICAgICogSGFuZGxlIGJyb2tlbiBwaXBlIHVuZGVyIHdpbjMyIGNvcnJlY3RseS4gKEpv
aG4gQXJiYXNoIE1laW5lbCkKICAgICAKQEAgLTEyNjMsNyArMTU0Miw3IEBACiAgICAgICBhbmQg
eS4KIAogICAgICogRmlsZS1pZHMgY29udGFpbmluZyBzaW5nbGUtIG9yIGRvdWJsZS1xdW90ZXMg
YXJlIGhhbmRsZWQgY29ycmVjdGx5IGJ5Ci0gICAgICBwdXNoLiAgKCM1MjIyNywgQWFyb24gQmVu
dGxleSkKKyAgICAgIHB1c2guIChBYXJvbiBCZW50bGV5LCAjNTIyMjcpCiAKICAgICAqIE5vcm1h
bGl6ZSB1bmljb2RlIGZpbGVuYW1lcyB0byBlbnN1cmUgY3Jvc3MtcGxhdGZvcm0gY29uc2lzdGVu
Y3kuCiAgICAgICAoSm9obiBBcmJhc2ggTWVpbmVsLCAjNDM2ODkpCkBAIC0xMjc2LDcgKzE1NTUs
NyBAQAogICAgICogQnVuZGxlcyBjYW4gcHJvcGVybHkgcmVhZCBiaW5hcnkgZmlsZXMgd2l0aCBh
IHBsYWluICdccicgaW4gdGhlbS4KICAgICAgIChKb2huIEFyYmFzaCBNZWluZWwsICM1MTkyNykK
IAotICAgICogVHVuaW5nIGl0ZXJfZW50cmllcygpIHRvIGJlIG1vcmUgZWZmaWNpZW50IChKb2hu
IEFyYmFzaCBNZWluZWwsICM1NDQ0KQorICAgICogVHVuaW5nIGBgaXRlcl9lbnRyaWVzKClgYCB0
byBiZSBtb3JlIGVmZmljaWVudCAoSm9obiBBcmJhc2ggTWVpbmVsLCAjNTQ0NCkKIAogICAgICog
TG90cyBvZiB3aW4zMiBmaXhlcyAodGhlIHRlc3Qgc3VpdGUgcGFzc2VzIGFnYWluKS4KICAgICAg
IChKb2huIEFyYmFzaCBNZWluZWwsICM1MDE1NSkKQEAgLTEzMjAsNyArMTU5OSw3IEBACiAKICAg
ICAqIFVzZSB0aGUgcmlnaHQgc3VmZml4ZXMgZm9yIGxvYWRpbmcgcGx1Z2lucyAoSm9obiBBcmJh
c2ggTWVpbmVsLCAjNTE4MTApCiAKLSAgICAqIEZpeCBCcmFuY2guZ2V0X3BhcmVudCgpIHRvIGhh
bmRsZSB0aGUgY2FzZSB3aGVuIHRoZSBwYXJlbnQgaXMgbm90IAorICAgICogRml4IGBgQnJhbmNo
LmdldF9wYXJlbnQoKWBgIHRvIGhhbmRsZSB0aGUgY2FzZSB3aGVuIHRoZSBwYXJlbnQgaXMgbm90
IAogICAgICAgYWNjZXNzaWJsZSAoSm9obiBBcmJhc2ggTWVpbmVsLCAjNTI5NzYpCiAKICAgSU5U
RVJOQUxTOgpAQCAtMTMyOSwxNCArMTYwOCwxNCBAQAogICAgICAgdGhlbSB0byByZWR1Y2UgdGhl
IHRocmVzaG9sZCB3aGVyZSAgTl4yIGJlaGF2aW91ciBvY2N1cnMgaW4gb3BlcmF0aW9ucwogICAg
ICAgbGlrZSBzdGF0dXMuIChKYW4gSHVkZWMsIFJvYmVydCBDb2xsaW5zKS4KIAotICAgICogQXBw
ZW5kaW5nIHRvIGJ6cmxpYi5ERUZBVUxUX0lHTk9SRSBpcyBub3cgZGVwcmVjYXRlZC4gSW5zdGVh
ZCwgdXNlCisgICAgKiBBcHBlbmRpbmcgdG8gYGBienJsaWIuREVGQVVMVF9JR05PUkVgYCBpcyBu
b3cgZGVwcmVjYXRlZC4gSW5zdGVhZCwgdXNlCiAgICAgICBvbmUgb2YgdGhlIGFkZCBmdW5jdGlv
bnMgaW4gYnpybGliLmlnbm9yZXMuIChKb2huIEFyYmFzaCBNZWluZWwpCiAKICAgICAqICdienIg
cHVzaCcgc2hvdWxkIG9ubHkgcHVzaCB0aGUgYW5jZXN0cnkgb2YgdGhlIGN1cnJlbnQgcmV2aXNp
b24sIG5vdAogICAgICAgYWxsIG9mIHRoZSBoaXN0b3J5IGluIHRoZSByZXBvc2l0b3J5LiBUaGlz
IGlzIGVzcGVjaWFsbHkgaW1wb3J0YW50IGZvcgogICAgICAgc2hhcmVkIHJlcG9zaXRvcmllcy4g
KEpvaG4gQXJiYXNoIE1laW5lbCkKIAotICAgICogYnpybGliLmRlbHRhLmNvbXBhcmVfdHJlZXMg
bm93IGl0ZXJhdGVzIGluIGFscGhhYmV0aWNhbGx5IHNvcnRlZCBvcmRlciwKKyAgICAqIGBgYnpy
bGliLmRlbHRhLmNvbXBhcmVfdHJlZXNgYCBub3cgaXRlcmF0ZXMgaW4gYWxwaGFiZXRpY2FsbHkg
c29ydGVkIG9yZGVyLAogICAgICAgcmF0aGVyIHRoYW4gcmFuZG9tbHkgd2Fsa2luZyB0aGUgaW52
ZW50b3JpZXMuIChKb2huIEFyYmFzaCBNZWluZWwpCiAKICAgICAqIERvY3Rlc3RzIGFyZSBub3cg
cnVuIGluIHRlbXBvcmFyeSBkaXJlY3RvcmllcyB3aGljaCBhcmUgY2xlYW5lZCB1cCB3aGVuCkBA
IC0xMzQ3LDIzICsxNjI2LDIzIEBACiAgICAgICBzbyB0aGF0IGl0IGNhbiBiZSBzcGVjaWFsaXpl
ZCBpbiB3YXlzIHRoYXQgYXJlIHVzZWZ1bCBvciBlZmZpY2llbnQgZm9yCiAgICAgICBkaWZmZXJl
bnQgZm9ybWF0cy4gIChNYXJ0aW4gUG9vbCwgUm9iZXJ0IENvbGxpbnMpCiAKLSAgICAqIERlcHJl
Y2F0ZSBSZXBvc2l0b3J5LmFsbF9yZXZpc2lvbl9pZHM7IG1vc3QgbWV0aG9kcyBkb24ndCByZWFs
bHkgbmVlZAorICAgICogRGVwcmVjYXRlIGBgUmVwb3NpdG9yeS5hbGxfcmV2aXNpb25faWRzYGA7
IG1vc3QgbWV0aG9kcyBkb24ndCByZWFsbHkgbmVlZAogICAgICAgdGhlIGdsb2JhbCByZXZpc2lv
biBncmFwaCBidXQgb25seSB0aGF0IHBhcnQgbGVhZGluZyB1cCB0byBhIHBhcnRpY3VsYXIKICAg
ICAgIHJldmlzaW9uLiAgKE1hcnRpbiBQb29sLCBSb2JlcnQgQ29sbGlucykKIAotICAgICogQWRk
IGEgQnpyRGlyRm9ybWF0IGNvbnRyb2xfZm9ybWF0cyBsaXN0IHdoaWNoIGFsbG93cyBmb3IgY29u
dHJvbCBmb3JtYXRzCisgICAgKiBBZGQgYSBCenJEaXJGb3JtYXQgYGBjb250cm9sX2Zvcm1hdHNg
YCBsaXN0IHdoaWNoIGFsbG93cyBmb3IgY29udHJvbCBmb3JtYXRzCiAgICAgICB0aGF0IGRvIG5v
dCB1c2UgJy5ienInIHRvIHN0b3JlIHRoZWlyIGRhdGEgLSBpLmUuICcuc3ZuJywgJy5oZycgZXRj
LgogICAgICAgKFJvYmVydCBDb2xsaW5zLCBKZWxtZXIgVmVybm9vaWopLgogCi0gICAgKiBienJs
aWIuZGlmZi5leHRlcm5hbF9kaWZmIGNhbiBiZSByZWRpcmVjdGVkIHRvIGFueSBmaWxlLWxpa2Ug
b2JqZWN0LgorICAgICogYGBienJsaWIuZGlmZi5leHRlcm5hbF9kaWZmYGAgY2FuIGJlIHJlZGly
ZWN0ZWQgdG8gYW55IGZpbGUtbGlrZSBvYmplY3QuCiAgICAgICBVc2VzIHN1YnByb2Nlc3MgaW5z
dGVhZCBvZiBzcGF3bnZwLgotICAgICAgKCM0MDQ3LCAjNDg5MTQsIEphbWVzIEhlbnN0cmlkZ2Us
IEpvaG4gQXJiYXNoIE1laW5lbCkKKyAgICAgIChKYW1lcyBIZW5zdHJpZGdlLCBKb2huIEFyYmFz
aCBNZWluZWwsICM0MDQ3LCAjNDg5MTQpCiAKICAgICAqIE5ldyBjb21tYW5kIGxpbmUgb3B0aW9u
ICctLXByb2ZpbGUtaW1wb3J0cycsIHdoaWNoIHdpbGwgaW5zdGFsbCBhIGN1c3RvbQogICAgICAg
aW1wb3J0ZXIgdG8gbG9nIHRpbWUgdG8gaW1wb3J0IG1vZHVsZXMgYW5kIHJlZ2V4IGNvbXBpbGF0
aW9uIHRpbWUgdG8gCiAgICAgICBzeXMuc3RkZXJyIChKb2huIEFyYmFzaCBNZWluZWwpCiAKLSAg
ICAqICdFbXB0eVRyZWUnIGlzIG5vdyBkZXByZWNhdGVkLCBwbGVhc2UgdXNlIHJlcG9zaXRvcnku
cmV2aXNpb25fdHJlZShOb25lKQorICAgICogJ0VtcHR5VHJlZScgaXMgbm93IGRlcHJlY2F0ZWQs
IHBsZWFzZSB1c2UgYGByZXBvc2l0b3J5LnJldmlzaW9uX3RyZWUoTm9uZSlgYAogICAgICAgaW5z
dGVhZC4gKFJvYmVydCBDb2xsaW5zKQogCiAgICAgKiAiUmV2aXNpb25UcmVlIiBpcyBub3cgaW4g
YnpybGliL3JldmlzaW9udHJlZS5weS4gKFJvYmVydCBDb2xsaW5zKQpAQCAtMTM4NiwyMyArMTY2
NSwyMyBAQAogCiAgICAgKiBTZXBhcmF0ZSBmdW5jdGlvbmFsaXR5IGZyb20gYXNzZXJ0IHN0YXRl
bWVudHMgYXMgdGhleSBhcmUgc2tpcHBlZCBpbgogICAgICAgb3B0aW1pemVkIG1vZGUgb2YgcHl0
aG9uLiBBZGQgdGhlIHNhbWUgY2hlY2sgdG8gcGVuZGluZyBtZXJnZXMuCi0gICAgICAoIzQ0NDQz
LCBPbGFmIENvbnJhZGkpCisgICAgICAoT2xhZiBDb25yYWRpLCAjNDQ0NDMpCiAKICAgQ0hBTkdF
UzoKIAogICAgICogRG8gbm90IHNob3cgdGhlIE5vbmUgcmV2aXNpb24gaW4gb3V0cHV0IG9mIGJ6
ciBhbmNlc3RyeS4gKE9sYWYgQ29ucmFkaSkKIAogICAgICogQWRkIGluZm8gb24gc3RhbmRhbG9u
ZSBicmFuY2hlcyB3aXRob3V0IGEgd29ya2luZyB0cmVlLgotICAgICAgKCM0NDE1NSwgT2xhZiBD
b25yYWRpKQorICAgICAgKE9sYWYgQ29ucmFkaSwgIzQ0MTU1KQogCi0gICAgKiBGaXggYnVnIGlu
IGtuaXRzIHdoZW4gcmFpc2luZyBJbnZhbGlkUmV2aXNpb25JZC4gKCM0NDI4NCwgT2xhZiBDb25y
YWRpKQorICAgICogRml4IGJ1ZyBpbiBrbml0cyB3aGVuIHJhaXNpbmcgSW52YWxpZFJldmlzaW9u
SWQuIChPbGFmIENvbnJhZGksICM0NDI4NCkKIAogICBDSEFOR0VTOgogCiAgICAgKiBNYWtlIGVk
aXRvciBpbnZvY2F0aW9uIGNvbXBseSB3aXRoIERlYmlhbiBQb2xpY3kuIEZpcnN0IGNoZWNrCiAg
ICAgICBlbnZpcm9ubWVudCB2YXJpYWJsZXMgVklTVUFMIGFuZCBFRElUT1IsIHRoZW4gdHJ5IGVk
aXRvciBmcm9tCiAgICAgICBhbHRlcm5hdGl2ZXMgc3lzdGVtLiBJZiB0aGF0IGFsbCBmYWlscywg
ZmFsbCBiYWNrIHRvIHRoZSBwcmUtZGVmaW5lZAotICAgICAgbGlzdCBvZiBlZGl0b3JzLiAoIzQy
OTA0LCBPbGFmIENvbnJhZGkpCisgICAgICBsaXN0IG9mIGVkaXRvcnMuIChPbGFmIENvbnJhZGks
ICM0MjkwNCkKIAogICBORVcgRkVBVFVSRVM6CiAKQEAgLTE0MTIsNyArMTY5MSw3IEBACiAKICAg
SU5URVJOQUxTOgogCi0gICAgKiBOZXcgcHVibGljIGFwaSBpbiBJbnZlbnRvcnlFbnRyeSAtICdk
ZXNjcmliZV9jaGFuZ2Uob2xkLCBuZXcpJyB3aGljaAorICAgICogTmV3IHB1YmxpYyBhcGkgaW4g
SW52ZW50b3J5RW50cnkgLSBgYGRlc2NyaWJlX2NoYW5nZShvbGQsIG5ldylgYCB3aGljaAogICAg
ICAgcHJvdmlkZXMgYSBodW1hbiBkZXNjcmlwdGlvbiBvZiB0aGUgY2hhbmdlcyBiZXR3ZWVuIHR3
byBvbGQgYW5kCiAgICAgICBuZXcuIChSb2JlcnQgQ29sbGlucywgTWFydGluIFBvb2wpCiAKQEAg
LTE0NjEsMTAgKzE3NDAsMTEgQEAKICAgSU1QUk9WRU1FTlRTOgogCiAgICAgKiBTZnRwIHBhdGhz
IGNhbiBub3cgYmUgcmVsYXRpdmUsIG9yIGxvY2FsLCBhY2NvcmRpbmcgdG8gdGhlIGxmdHAKLSAg
ICAgIGNvbnZlbnRpb24uIFBhdGhzIG5vdyB0YWtlIHRoZSBmb3JtOgotICAgICAgc2Z0cDovL3Vz
ZXI6cGFzc0Bob3N0OnBvcnQvfi9yZWxhdGl2ZS9wYXRoCi0gICAgICBvcgotICAgICAgc2Z0cDov
L3VzZXI6cGFzc0Bob3N0OnBvcnQvYWJzb2x1dGUvcGF0aAorICAgICAgY29udmVudGlvbi4gUGF0
aHMgbm93IHRha2UgdGhlIGZvcm06OgorCisgICAgICAgICAgc2Z0cDovL3VzZXI6cGFzc0Bob3N0
OnBvcnQvfi9yZWxhdGl2ZS9wYXRoCisgICAgICAgICAgb3IKKyAgICAgICAgICBzZnRwOi8vdXNl
cjpwYXNzQGhvc3Q6cG9ydC9hYnNvbHV0ZS9wYXRoCiAKICAgICAqIFRoZSBGVFAgdHJhbnNwb3J0
IG5vdyB0cmllcyB0byByZWNvbm5lY3QgYWZ0ZXIgYSB0ZW1wb3JhcnkKICAgICAgIGZhaWx1cmUu
IGZ0cCBwdXQgaXMgbWFkZSBhdG9taWMuIChNYXR0aGlldSBNb3kpCkBAIC0xNDczLDIwICsxNzUz
LDIwIEBACiAgICAgICByZXVzZXMgdGhlbSB0byBhdm9pZCBtdWx0aXBsZSBjb25uZWN0aW9ucyB0
byB0aGUgc2FtZSBob3N0IChsaWtlCiAgICAgICBzZnRwIGRpZCkuIChEYW5pZWwgU2lsdmVyc3Rv
bmUpCiAKLSAgICAqIFRoZSBienJfbWFuLnB5IGZpbGUgaGFzIGJlZW4gcmVtb3ZlZC4gVG8gY3Jl
YXRlIHRoZSBtYW4gcGFnZSBub3csCi0gICAgICB1c2UgLi9nZW5lcmF0ZV9kb2NzLnB5IG1hbi4g
VGhlIG5ldyBwcm9ncmFtIGNhbiBhbHNvIGNyZWF0ZSBvdGhlciBmaWxlcy4KLSAgICAgIFJ1biAi
cHl0aG9uIGdlbmVyYXRlX2RvY3MucHkgLS1oZWxwIiBmb3IgdXNhZ2UgaW5mb3JtYXRpb24uIChI
YW5zCi0gICAgICBVbHJpY2ggTmllZGVybWFubiAmIEphbWVzIEJsYWNrd2VsbCkuCisgICAgKiBU
aGUgYGBienJfbWFuLnB5YGAgZmlsZSBoYXMgYmVlbiByZW1vdmVkLiBUbyBjcmVhdGUgdGhlIG1h
biBwYWdlIG5vdywKKyAgICAgIHVzZSBgYC4vZ2VuZXJhdGVfZG9jcy5weSBtYW5gYC4gVGhlIG5l
dyBwcm9ncmFtIGNhbiBhbHNvIGNyZWF0ZSBvdGhlciBmaWxlcy4KKyAgICAgIFJ1biBgYHB5dGhv
biBnZW5lcmF0ZV9kb2NzLnB5IC0taGVscGBgIGZvciB1c2FnZSBpbmZvcm1hdGlvbi4KKyAgICAg
IChIYW5zIFVscmljaCBOaWVkZXJtYW5uICYgSmFtZXMgQmxhY2t3ZWxsKS4KIAotICAgICogTWFu
IFBhZ2Ugbm93IGdpdmVzIGZ1bGwgaGVscCAoSmFtZXMgQmxhY2t3ZWxsKS4gSGVscCBhbHNvIHVw
ZGF0ZWQgdG8gCi0gICAgICByZWZsZWN0IHVzZXIgY29uZmlnIG5vdyBiZWluZyBzdG9yZWQgaW4g
LmJhemFhciAoSGFucyBVbHJpY2gKLSAgICAgIE5pZWRlcm1hbm4pCisgICAgKiBNYW4gUGFnZSBu
b3cgZ2l2ZXMgZnVsbCBoZWxwIChKYW1lcyBCbGFja3dlbGwpLgorICAgICAgSGVscCBhbHNvIHVw
ZGF0ZWQgdG8gcmVmbGVjdCB1c2VyIGNvbmZpZyBub3cgYmVpbmcgc3RvcmVkIGluIC5iYXphYXIK
KyAgICAgIChIYW5zIFVscmljaCBOaWVkZXJtYW5uKQogCiAgICAgKiBJdCdzIG5vdyBwb3NzaWJs
ZSB0byBzZXQgYWxpYXNlcyBpbiBiYXphYXIuY29uZiAoRXJpayBCw6VnZm9ycykKIAogICAgICog
UHVsbCBub3cgYWNjZXB0cyBhIC0tcmV2aXNpb24gYXJndW1lbnQgKEVyaWsgQsOlZ2ZvcnMpCiAK
LSAgICAqICdienIgcmUtc2lnbicgbm93IGFsbG93cyBtdWx0aXBsZSByZXZpc2lvbnMgdG8gYmUg
c3VwcGxpZWQgb24gdGhlIGNvbW1hbmQKKyAgICAqIGBgYnpyIHJlLXNpZ25gYCBub3cgYWxsb3dz
IG11bHRpcGxlIHJldmlzaW9ucyB0byBiZSBzdXBwbGllZCBvbiB0aGUgY29tbWFuZAogICAgICAg
bGluZS4gWW91IGNhbiBub3cgdXNlIHRoZSBmb2xsb3dpbmcgY29tbWFuZCB0byBzaWduIGFsbCBv
ZiB5b3VyIG9sZAogICAgICAgY29tbWl0czo6CiAKQEAgLTE1NzUsOSArMTg1NSw5IEBACiAgICAg
KiBDb21taXQgaXMgbm93IHZlcmJvc2UgYnkgZGVmYXVsdCwgYW5kIHNob3dzIGNoYW5nZWQgZmls
ZW5hbWVzIGFuZCB0aGUgCiAgICAgICBuZXcgcmV2aXNpb24gbnVtYmVyLiAgKFJvYmVydCBDb2xs
aW5zLCBNYXJ0aW4gUG9vbCkKIAotICAgICogVW5pZnkgJ212JywgJ21vdmUnLCAncmVuYW1lJy4g
ICgjNTM3OSwgTWF0dGhldyBGdWxsZXIpCisgICAgKiBVbmlmeSAnbXYnLCAnbW92ZScsICdyZW5h
bWUnLiAgKE1hdHRoZXcgRnVsbGVyLCAjNTM3OSkKIAotICAgICogJ2J6ciAtaCcgc2hvd3MgaGVs
cC4gICgjMzU5NDAsIE1hcnRpbiBQb29sLCBJYW4gQmlja2luZykKKyAgICAqICdienIgLWgnIHNo
b3dzIGhlbHAuICAoTWFydGluIFBvb2wsIElhbiBCaWNraW5nLCAjMzU5NDApCiAKICAgICAqIE1h
a2UgJ3B1bGwnIGFuZCAncHVzaCcgcmVtZW1iZXIgbG9jYXRpb24gb24gZmFpbHVyZSB1c2luZyAt
LXJlbWVtYmVyLgogICAgICAgKE9sYWYgQ29ucmFkaSkKQEAgLTE2MDMsOCArMTg4Myw4IEBACiAK
ICAgICAqIFVzaW5nIFRyZWUgVHJhbnNmb3JtIGZvciBtZXJnZSwgcmV2ZXJ0LCB0cmVlLWJ1aWxk
aW5nCiAKLSAgICAqIFdvcmtpbmdUcmVlLmNyZWF0ZSwgQnJhbmNoLmNyZWF0ZSwgV29ya2luZ1Ry
ZWUuY3JlYXRlX3N0YW5kYWxvbmUsCi0gICAgICBCcmFuY2guaW5pdGlhbGl6ZSBhcmUgbm93IGRl
cHJlY2F0ZWQuIFBsZWFzZSBzZWUgQnpyRGlyLmNyZWF0ZV8qIGZvcgorICAgICogV29ya2luZ1Ry
ZWUuY3JlYXRlLCBCcmFuY2guY3JlYXRlLCBgYFdvcmtpbmdUcmVlLmNyZWF0ZV9zdGFuZGFsb25l
YGAsCisgICAgICBCcmFuY2guaW5pdGlhbGl6ZSBhcmUgbm93IGRlcHJlY2F0ZWQuIFBsZWFzZSBz
ZWUgYGBCenJEaXIuY3JlYXRlXypgYCBmb3IKICAgICAgIHJlcGxhY2VtZW50IEFQSSdzLiAoUm9i
ZXJ0IENvbGxpbnMpCiAKICAgICAqIE5ldyBCenJEaXIgY2xhc3MgcmVwcmVzZW50cyB0aGUgLmJ6
ciBjb250cm9sIGRpcmVjdG9yeSBhbmQgbWFuYWdlcwpAQCAtMTYxNCw0MCArMTg5NCw0MSBAQAog
ICAgICAgUmVwb3NpdG9yeSBhY3Rpb25zIGFuZCBhbGxvd3MgZm9yIGNsZWFuIHNlbGVjdGlvbiBv
ZiBvcHRpbWlzZWQgY29kZQogICAgICAgcGF0aHMuIChSb2JlcnQgQ29sbGlucykKIAotICAgICog
YnpybGliLmZldGNoLmZldGNoIGFuZCBienJsaWIuZmV0Y2guZ3JlZWR5X2ZldGNoIGFyZSBub3cg
ZGVwcmVjYXRlZCwKLSAgICAgIHBsZWFzZSB1c2UgJ2JyYW5jaC5mZXRjaCcgb3IgJ3JlcG9zaXRv
cnkuZmV0Y2gnIGRlcGVuZGluZyBvbiB5b3VyCi0gICAgICBuZWVkcy4gKFJvYmVydCBDb2xsaW5z
KQorICAgICogYGBienJsaWIuZmV0Y2guZmV0Y2hgYCBhbmQgYGBienJsaWIuZmV0Y2guZ3JlZWR5
X2ZldGNoYGAgYXJlIG5vdworICAgICAgZGVwcmVjYXRlZCwgcGxlYXNlIHVzZSBgYGJyYW5jaC5m
ZXRjaGBgIG9yIGBgcmVwb3NpdG9yeS5mZXRjaGBgCisgICAgICBkZXBlbmRpbmcgb24geW91ciBu
ZWVkcy4gKFJvYmVydCBDb2xsaW5zKQogCi0gICAgKiBkZXByZWNhdGVkIG1ldGhvZHMgbm93IGhh
dmUgYSAnaXNfZGVwcmVjYXRlZCcgZmxhZyBvbiB0aGVtIHRoYXQgY2FuCisgICAgKiBkZXByZWNh
dGVkIG1ldGhvZHMgbm93IGhhdmUgYSBgYGlzX2RlcHJlY2F0ZWRgYCBmbGFnIG9uIHRoZW0gdGhh
dCBjYW4KICAgICAgIGJlIGNoZWNrZWQsIGlmIHlvdSBuZWVkIHRvIGRldGVybWluZSB3aGV0aGVy
IGEgZ2l2ZW4gY2FsbGFibGUgaXMgCiAgICAgICBkZXByZWNhdGVkIGF0IHJ1bnRpbWUuIChSb2Jl
cnQgQ29sbGlucykKIAogICAgICogUHJvZ3Jlc3MgYmFycyBhcmUgbm93IG5lc3RlZCAtIHNlZQot
ICAgICAgYnpybGliLnVpLnVpX2ZhY3RvcnkubmVzdGVkX3Byb2dyZXNzX2Jhci4gKFJvYmVydCBD
b2xsaW5zLCBSb2JleSBQb2ludGVyKQorICAgICAgYGBienJsaWIudWkudWlfZmFjdG9yeS5uZXN0
ZWRfcHJvZ3Jlc3NfYmFyYGAuCisgICAgICAoUm9iZXJ0IENvbGxpbnMsIFJvYmV5IFBvaW50ZXIp
CiAKLSAgICAqIE5ldyBBUEkgY2FsbCBnZXRfZm9ybWF0X2Rlc2NyaXB0aW9uKCkgZm9yIGVhY2gg
dHlwZSBvZiBmb3JtYXQuCisgICAgKiBOZXcgQVBJIGNhbGwgYGBnZXRfZm9ybWF0X2Rlc2NyaXB0
aW9uKClgYCBmb3IgZWFjaCB0eXBlIG9mIGZvcm1hdC4KICAgICAgIChPbGFmIENvbnJhZGkpCiAK
LSAgICAqIENoYW5nZWQgYnJhbmNoLnNldF9wYXJlbnQoKSB0byBhY2NlcHQgTm9uZSB0byByZW1v
dmUgcGFyZW50LgorICAgICogQ2hhbmdlZCBgYGJyYW5jaC5zZXRfcGFyZW50KClgYCB0byBhY2Nl
cHQgTm9uZSB0byByZW1vdmUgcGFyZW50LgogICAgICAgKE9sYWYgQ29ucmFkaSkKIAogICAgICog
RGVwcmVjYXRlZCBCenJFcnJvciBBbWJpZ3VvdXNCYXNlLiAgKE9sYWYgQ29ucmFkaSkKIAogICAg
ICogV29ya2luZ1RyZWUuYnJhbmNoIGlzIG5vdyBhIHJlYWQgb25seSBwcm9wZXJ0eS4gIChSb2Jl
cnQgQ29sbGlucykKIAotICAgICogYnpybGliLnVpLnRleHQuVGV4dFVJRmFjdG9yeSBub3cgYWNj
ZXB0cyBhIGJhcl90eXBlIHBhcmFtZXRlciB3aGljaAorICAgICogYnpybGliLnVpLnRleHQuVGV4
dFVJRmFjdG9yeSBub3cgYWNjZXB0cyBhIGBgYmFyX3R5cGVgYCBwYXJhbWV0ZXIgd2hpY2gKICAg
ICAgIGNhbiBiZSBOb25lIG9yIGEgZmFjdG9yeSB0aGF0IHdpbGwgY3JlYXRlIGEgcHJvZ3Jlc3Mg
YmFyLiBUaGlzIGlzCiAgICAgICB1c2VmdWwgZm9yIHRlc3Rpbmcgb3IgZm9yIG92ZXJyaWRpbmcg
dGhlIGJ6cmxpYi5wcm9ncmVzcyBoZXVyaXN0aWMuCiAgICAgICAoUm9iZXJ0IENvbGxpbnMpCiAK
LSAgICAqIE5ldyBBUEkgbWV0aG9kIGdldF9waHlzaWNhbF9sb2NrX3N0YXR1cygpIHRvIHF1ZXJ5
IGxvY2tzIHByZXNlbnQgb24gYQorICAgICogTmV3IEFQSSBtZXRob2QgYGBnZXRfcGh5c2ljYWxf
bG9ja19zdGF0dXMoKWBgIHRvIHF1ZXJ5IGxvY2tzIHByZXNlbnQgb24gYQogICAgICAgdHJhbnNw
b3J0LiAgKE9sYWYgQ29ucmFkaSkKIAogICAgICogUmVwb3NpdG9yeS5yZWNvbmNpbGUgbm93IHRh
a2VzIGEgdGhvcm91Z2gga2V5d29yZCBwYXJhbWV0ZXIgdG8gYWxsb3cKICAgICAgIHJlcXVlc3Rp
bmcgYW4gaW5kZXB0aCByZWNvbmNpbGlhdGlvbiwgcmF0aGVyIHRoYW4ganVzdCBhIGRhdGEtbG9z
cyAKICAgICAgIGNoZWNrLiAoUm9iZXJ0IENvbGxpbnMpCiAKLSAgICAqIGJ6cmxpYi51aS51aV9m
YWN0b3J5IHByb3RvY29sIG5vdyBzdXBwb3J0cyAnZ2V0X2Jvb2xlYW4nIHRvIHByb21wdAorICAg
ICogYGBienJsaWIudWkudWlfZmFjdG9yeSBwcm90b2NvbGBgIG5vdyBzdXBwb3J0cyBgYGdldF9i
b29sZWFuYGAgdG8gcHJvbXB0CiAgICAgICB0aGUgdXNlciBmb3IgeWVzL25vIHN0eWxlIGlucHV0
LiAoUm9iZXJ0IENvbGxpbnMpCiAKICAgVEVTVElORzoKQEAgLTE2NTUsOCArMTkzNiw4IEBACiAg
ICAgKiBTRlRQIHRlc3RzIG5vdyBzaG9ydGN1dCB0aGUgU1NIIG5lZ290aWF0aW9uLCByZWR1Y2lu
ZyB0ZXN0IG92ZXJoZWFkCiAgICAgICBmb3IgdGVzdGluZyBTRlRQIHByb3RvY29sIHN1cHBvcnQu
IChSb2JleSBQb2ludGVyKQogCi0gICAgKiBCcmFuY2ggZm9ybWF0cyBhcmUgbm93IHRlc3RlZCBv
bmNlIHBlciBpbXBsZW1lbnRhdGlvbiAoc2VlIGJ6cmxpYi4KLSAgICAgIHRlc3RzLmJyYW5jaF9p
bXBsZW1lbnRhdGlvbnMuIFRoaXMgaXMgYW5hbGFnb3VzIHRvIHRoZSB0cmFuc3BvcnQKKyAgICAq
IEJyYW5jaCBmb3JtYXRzIGFyZSBub3cgdGVzdGVkIG9uY2UgcGVyIGltcGxlbWVudGF0aW9uIChz
ZWUgYGBienJsaWIuCisgICAgICB0ZXN0cy5icmFuY2hfaW1wbGVtZW50YXRpb25zYGAuIFRoaXMg
aXMgYW5hbGFnb3VzIHRvIHRoZSB0cmFuc3BvcnQKICAgICAgIGludGVyZmFjZSB0ZXN0cywgYW5k
IGhhcyBiZWVuIGZvbGxvd2VkIHVwIHdpdGggd29ya2luZyB0cmVlLAogICAgICAgcmVwb3NpdG9y
eSBhbmQgQnpyRGlyIHRlc3RzLiAoUm9iZXJ0IENvbGxpbnMpCiAKQEAgLTE2NzIsOCArMTk1Myw4
IEBACiAKICAgICAqIE1vdmUgdGVzdCBjYXNlIGZvciB1bmNvbW1pdCB0byBibGFja2JveCB0ZXN0
cy4gIChPbGFmIENvbnJhZGkpCiAKLSAgICAqIHJ1bl9ienIgYW5kIHJ1bl9ienJfY2FwdHVyZWQg
bm93IGFjY2VwdCBhICdzdGRpbj0iZm9vIicgcGFyYW1ldGVyIHdoaWNoCi0gICAgICB3aWxsIHBy
b3ZpZGUgU3RyaW5nKCJmb28iKSB0byB0aGUgY29tbWFuZCBhcyBpdHMgc3RkaW4uCisgICAgKiBg
YHJ1bl9ienJgYCBhbmQgYGBydW5fYnpyX2NhcHR1cmVkYGAgbm93IGFjY2VwdCBhICdzdGRpbj0i
Zm9vIicKKyAgICAgIHBhcmFtZXRlciB3aGljaCB3aWxsIHByb3ZpZGUgU3RyaW5nKCJmb28iKSB0
byB0aGUgY29tbWFuZCBhcyBpdHMgc3RkaW4uCiAKIGJ6ciAwLjcgMjAwNi0wMS0wOQogCkBAIC0x
Njg3LDE0ICsxOTY4LDE0IEBACiAgICAgICB2ZXJzaW9uZWQgZGlyZWN0b3JpZXMsIG5vdyB1c2Ug
ImJ6ciBpbnZlbnRvcnkgLS1raW5kIGRpcmVjdG9yeSIuICAKICAgICAgIChKb2hhbiBSeWRiZXJn
KQogCi0gICAgKiBVbmRlciBXaW5kb3dzIGNvbmZpZ3VyYXRpb24gZGlyZWN0b3J5IGlzIG5vdyAl
QVBQREFUQSVcYmF6YWFyXDIuMAorICAgICogVW5kZXIgV2luZG93cyBjb25maWd1cmF0aW9uIGRp
cmVjdG9yeSBpcyBub3cgYGAlQVBQREFUQSVcYmF6YWFyXDIuMGBgCiAgICAgICBieSBkZWZhdWx0
LiAoSm9obiBBcmJhc2ggTWVpbmVsKQogCi0gICAgKiBUaGUgcGFyZW50IG9mIEJ6ciBjb25maWd1
cmF0aW9uIGRpcmVjdG9yeSBjYW4gYmUgc2V0IGJ5IEJaUl9IT01FCi0gICAgICBlbnZpcm9ubWVu
dCB2YXJpYWJsZS4gTm93IHRoZSBwYXRoIGZvciBpdCBpcyBzZWFyY2hlZCBpbiBCWlJfSE9NRSwg
dGhlbgotICAgICAgaW4gSE9NRS4gVW5kZXIgV2luZG93cyB0aGUgb3JkZXIgaXM6IEJaUl9IT01F
LCBBUFBEQVRBICh1c3VhbGx5Ci0gICAgICBwb2ludHMgdG8gQzpcRG9jdW1lbnRzIGFuZCBTZXR0
aW5nc1xVc2VyIE5hbWVcQXBwbGljYXRpb24gRGF0YSksIEhPTUUuCi0gICAgICAoSm9obiBBcmJh
c2ggTWVpbmVsKQorICAgICogVGhlIHBhcmVudCBvZiBCenIgY29uZmlndXJhdGlvbiBkaXJlY3Rv
cnkgY2FuIGJlIHNldCBieSBgYEJaUl9IT01FYGAKKyAgICAgIGVudmlyb25tZW50IHZhcmlhYmxl
LiBOb3cgdGhlIHBhdGggZm9yIGl0IGlzIHNlYXJjaGVkIGluIGBgQlpSX0hPTUVgYCwKKyAgICAg
IHRoZW4gaW4gSE9NRS4gVW5kZXIgV2luZG93cyB0aGUgb3JkZXIgaXM6IGBgQlpSX0hPTUVgYCwg
YGBBUFBEQVRBYGAKKyAgICAgICh1c3VhbGx5IHBvaW50cyB0byBgYEM6XERvY3VtZW50cyBhbmQg
U2V0dGluZ3NcVXNlciBOYW1lXEFwcGxpY2F0aW9uIERhdGFgYCksCisgICAgICBgYEhPTUVgYC4g
KEpvaG4gQXJiYXNoIE1laW5lbCkKIAogICAgICogUGx1Z2lucyB3aXRoIHRoZSBzYW1lIG5hbWUg
aW4gZGlmZmVyZW50IGRpcmVjdG9yaWVzIGluIHRoZSBienIgcGx1Z2luCiAgICAgICBwYXRoIGFy
ZSBubyBsb25nZXIgbG9hZGVkOiBvbmx5IHRoZSBmaXJzdCBzdWNjZXNzZnVsbHkgbG9hZGVkIG9u
ZSBpcwpAQCAtMTczOSw3ICsyMDIwLDcgQEAKICAgICAqIEFkZGVkIGJyYW5jaCBuaWNrcywgbmV3
IG5pY2sgY29tbWFuZCwgcHJpbnRpbmcgdGhlbSBpbiBsb2cgb3V0cHV0LiAKICAgICAgIChBYXJv
biBCZW50bGV5KQogCi0gICAgKiBJZiAkQlpSX1BEQiBpcyBzZXQsIHBvcCBpbnRvIHRoZSBkZWJ1
Z2dlciB3aGVuIGFuIHVuY2F1Z2h0IGV4Y2VwdGlvbiAKKyAgICAqIElmIGBgJEJaUl9QREJgYCBp
cyBzZXQsIHBvcCBpbnRvIHRoZSBkZWJ1Z2dlciB3aGVuIGFuIHVuY2F1Z2h0IGV4Y2VwdGlvbiAK
ICAgICAgIG9jY3Vycy4gIChNYXJ0aW4gUG9vbCkKIAogICAgICogQWNjZXB0ICdienIgcmVzb2x2
ZWQnIChhbiBhbGlhcyBmb3IgJ2J6ciByZXNvbHZlJyksIGFzIHRoaXMgaXMKQEAgLTE3NDgsNyAr
MjAyOSw3IEBACiAgICAgKiBOZXcgZnRwIHRyYW5zcG9ydCBzdXBwb3J0IChvbiBmdHBsaWIpLCBm
b3IgZnRwOi8vIGFuZCBhZnRwOi8vIAogICAgICAgVVJMcy4gIChEYW5pZWwgU2lsdmVyc3RvbmUp
CiAKLSAgICAqIENvbW1pdCBlZGl0b3IgdGVtcG9yYXJ5IGZpbGVzIG5vdyBzdGFydCB3aXRoICdi
enJfbG9nLicsIHRvIGFsbG93IAorICAgICogQ29tbWl0IGVkaXRvciB0ZW1wb3JhcnkgZmlsZXMg
bm93IHN0YXJ0IHdpdGggYGBienJfbG9nLmBgLCB0byBhbGxvdyAKICAgICAgIHRleHQgZWRpdG9y
cyB0byBtYXRjaCB0aGUgZmlsZSBuYW1lIGFuZCBzZXQgdXAgYXBwcm9wcmlhdGUgbW9kZXMgb3Ig
CiAgICAgICBzZXR0aW5ncy4gIChNYWdudXMgVGhlcm5pbmcpCiAKQEAgLTE3NjMsNyArMjA0NCw3
IEBACiAgICAgICByZXZubyBzaG91bGQgYmUgcHJpbnRlZC4gIChNaWNoYWVsIEVsbGVybWFuKQog
CiAgICAgKiBienIgY2F0IGRlZmF1bHRzIHRvIHByaW50aW5nIHRoZSBsYXN0IHZlcnNpb24gb2Yg
dGhlIGZpbGUuICAKLSAgICAgICgjMzYzMiwgTWF0dGhpZXUgTW95KQorICAgICAgKE1hdHRoaWV1
IE1veSwgIzM2MzIpCiAKICAgICAqIE5ldyBnbG9iYWwgb3B0aW9uICdienIgLS1sc3Byb2YgQ09N
TUFORCcgcnVucyBienIgdW5kZXIgdGhlIGxzcHJvZiAKICAgICAgIHByb2ZpbGVyLiAgKERlbnlz
IER1Y2hpZXIpCkBAIC0xODA3LDE1ICsyMDg4LDE1IEBACiAgICAgKiBGaXggZm9yIHNmdHAgdHJh
bnNwb3J0IHVuZGVyIHdpbmRvd3Mgd2hlbiB1c2luZyBpbnRlcmFjdGl2ZSBhdXRoCiAKICAgICAq
IFNob3cgZmlsZXMgd2hpY2ggYXJlIGJvdGggcmVuYW1lZCBhbmQgbW9kaWZpZWQgYXMgc3VjaCBp
biAnYnpyIAotICAgICAgc3RhdHVzJyBvdXRwdXQuICAoIzQ1MDMsIERhbmllbCBTaWx2ZXJzdG9u
ZSkKKyAgICAgIHN0YXR1cycgb3V0cHV0LiAgKERhbmllbCBTaWx2ZXJzdG9uZSwgIzQ1MDMpCiAK
ICAgICAqIE1ha2UgYW5ub3RhdGUgY29wZSBiZXR0ZXIgd2l0aCByZXZpc2lvbnMgY29tbWl0dGVk
IHdpdGhvdXQgYSB2YWxpZCAKICAgICAgIGVtYWlsIGFkZHJlc3MuICAoTWFyaWVuIFp3YXJ0KQog
Ci0gICAgKiBGaXggcmVwcmVzZW50YXRpb24gb2YgdGFiIGNoYXJhY3RlcnMgaW4gY29tbWl0IG1l
c3NhZ2VzLiAgKEhhcmFsZCAKLSAgICAgIE1lbGFuZCkKKyAgICAqIEZpeCByZXByZXNlbnRhdGlv
biBvZiB0YWIgY2hhcmFjdGVycyBpbiBjb21taXQgbWVzc2FnZXMuCisgICAgICAoSGFyYWxkIE1l
bGFuZCkKIAotICAgICogTGlzdCBvZiBwbHVnaW4gZGlyZWN0b3JpZXMgaW4gQlpSX1BMVUdJTl9Q
QVRIIGVudmlyb25tZW50IHZhcmlhYmxlIGlzCisgICAgKiBMaXN0IG9mIHBsdWdpbiBkaXJlY3Rv
cmllcyBpbiBgYEJaUl9QTFVHSU5fUEFUSGBgIGVudmlyb25tZW50IHZhcmlhYmxlIGlzCiAgICAg
ICBub3cgcGFyc2VkIHByb3Blcmx5IHVuZGVyIFdpbmRvd3MuIChBbGV4YW5kZXIgQmVsY2hlbmtv
KQogCiAgICAgKiBTaG93IG51bWJlciBvZiByZXZpc2lvbnMgcHVzaGVkL3B1bGxlZC9tZXJnZWQu
IChSb2JleSBQb2ludGVyKQpAQCAtMTgyMywxMSArMjEwNCwxMSBAQAogICAgICogS2VlcCBhIGNh
Y2hlZCBjb3B5IG9mIHRoZSBiYXNpcyBpbnZlbnRvcnkgdG8gc3BlZWQgdXAgb3BlcmF0aW9ucyAK
ICAgICAgIHRoYXQgbmVlZCB0byByZWZlciB0byBpdC4gIChKb2hhbiBSeWRiZXJnLCBNYXJ0aW4g
UG9vbCkKIAotICAgICogRml4IGJ1Z3MgaW4gYnpyIHN0YXR1cyBkaXNwbGF5IG9mIG5vbi1hc2Np
aSBjaGFyYWN0ZXJzLiAgKE1hcnRpbiAKLSAgICAgIFBvb2wpCisgICAgKiBGaXggYnVncyBpbiBi
enIgc3RhdHVzIGRpc3BsYXkgb2Ygbm9uLWFzY2lpIGNoYXJhY3RlcnMuCisgICAgICAoTWFydGlu
IFBvb2wpCiAKLSAgICAqIFJlbW92ZSBNYWtlZmlsZS5pbiBmcm9tIGRlZmF1bHQgaWdub3JlIGxp
c3QuICAoIzY0MTMsIFRvbGxlZiBGb2cgCi0gICAgICBIZWVuLCBNYXJ0aW4gUG9vbCkKKyAgICAq
IFJlbW92ZSBNYWtlZmlsZS5pbiBmcm9tIGRlZmF1bHQgaWdub3JlIGxpc3QuCisgICAgICAoVG9s
bGVmIEZvZyBIZWVuLCBNYXJ0aW4gUG9vbCwgIzY0MTMpCiAKICAgICAqIEZpeCBmYWlsdXJlIGlu
ICdienIgYWRkZWQnLiAgKE5hdGhhbiBNY0NhbGx1bSwgTWFydGluIFBvb2wpCiAKQEAgLTE4NDIs
NyArMjEyMyw3IEBACiAKICAgICAqIE1ha2UgdGVzdHMgd29yayBldmVuIGlmIEhPTUUgaXMgbm90
IHNldCAoQWFyb24gQmVudGxleSkKIAotICAgICogVXBkYXRlZCBidWlsZF90cmVlIHRvIHVzZSBm
aXhlZCBsaW5lLWVuZGluZ3MgZm9yIHRlc3RzIHdoaWNoIHJlYWQgCisgICAgKiBVcGRhdGVkIGBg
YnVpbGRfdHJlZWBgIHRvIHVzZSBmaXhlZCBsaW5lLWVuZGluZ3MgZm9yIHRlc3RzIHdoaWNoIHJl
YWQgCiAgICAgICB0aGUgZmlsZSBjb3RlbnRzIGFuZCBjb21wYXJlLiBNYWtlIHNvbWUgdGVzdHMg
dXNlIHRoaXMgdG8gcGFzcyB1bmRlcgogICAgICAgV2luZG93cy4gKEpvaG4gQXJiYXNoIE1laW5l
bCkKIApAQCAtMTg1NSw3ICsyMTM2LDcgQEAKIAogICAgICogQmxhY2tib3ggdGVzdHMgYXJlIG1h
aW50YWluZWQgd2l0aGluIHRoZSBienJsaWIudGVzdHMuYmxhY2tib3ggZGlyZWN0b3J5LgogICAg
ICAgSWYgYWRkaW5nIGEgbmV3IHRlc3Qgc2NyaXB0IHBsZWFzZSBhZGQgdGhhdCB0bwotICAgICAg
YnpybGliLnRlc3RzLmJsYWNrYm94Ll9faW5pdF9fLiAoUm9iZXJ0IENvbGxpbnMpCisgICAgICBg
YGJ6cmxpYi50ZXN0cy5ibGFja2JveC5fX2luaXRfX2BgLiAoUm9iZXJ0IENvbGxpbnMpCiAKICAg
ICAqIE11Y2ggYmV0dGVyIGVycm9yIG1lc3NhZ2UgaWYgb25lIG9mIHRoZSB0ZXN0IHN1aXRlcyBj
YW4ndCBiZSAKICAgICAgIGltcG9ydGVkLiAgKE1hcnRpbiBQb29sKQpAQCAtMTg4Miw4ICsyMTYz
LDggQEAKICAgICAgIHNlZSBienJsaWIudHJhbnNwb3J0LlRyYW5zcG9ydFRlc3RQcm92aWRlckFk
YXB0ZXIoKSBmb3IgdGhpcy4KICAgICAgIChSb2JlcnQgQ29sbGlucykuCiAKLSAgICAqIFRlc3RD
YXNlLmJ1aWxkX3RyZWUgdXNlcyB0aGUgdHJhbnNwb3J0IGludGVyZmFjZSB0byBidWlsZCB0cmVl
cywgcGFzcwotICAgICAgaW4gYSB0cmFuc3BvcnQgcGFyYW1ldGVyIHRvIGdpdmUgaXQgYW4gZXhp
c3RpbmcgY29ubmVjdGlvbi4KKyAgICAqIGBgVGVzdENhc2UuYnVpbGRfdHJlZWBgIHVzZXMgdGhl
IHRyYW5zcG9ydCBpbnRlcmZhY2UgdG8gYnVpbGQgdHJlZXMsCisgICAgICBwYXNzIGluIGEgdHJh
bnNwb3J0IHBhcmFtZXRlciB0byBnaXZlIGl0IGFuIGV4aXN0aW5nIGNvbm5lY3Rpb24uCiAgICAg
ICAoUm9iZXJ0IENvbGxpbnMpLgogCiAgIElOVEVSTkFMUzoKQEAgLTE4OTEsMTcgKzIxNzIsMTgg
QEAKICAgICAqIFdvcmtpbmdUcmVlLnB1bGwgaGFzIGJlZW4gc3BsaXQgYWNyb3NzIEJyYW5jaCBh
bmQgV29ya2luZ1RyZWUsCiAgICAgICB0byBhbGxvdyBCcmFuY2ggb25seSBwdWxscy4gKFJvYmVy
dCBDb2xsaW5zKQogCi0gICAgKiBjb21tYW5kcy5kaXNwbGF5X2NvbW1hbmQgbm93IHJldHVybnMg
dGhlIHJlc3VsdCBvZiB0aGUgZGVjb3JhdGVkIAorICAgICogYGBjb21tYW5kcy5kaXNwbGF5X2Nv
bW1hbmRgYCBub3cgcmV0dXJucyB0aGUgcmVzdWx0IG9mIHRoZSBkZWNvcmF0ZWQgCiAgICAgICBm
dW5jdGlvbi4gKFJvYmVydCBDb2xsaW5zKQogCi0gICAgKiBMb2NhdGlvbkNvbmZpZyBub3cgaGFz
IGEgc2V0X3VzZXJfb3B0aW9uKGtleSwgdmFsdWUpIGNhbGwgdG8gc2F2ZQorICAgICogTG9jYXRp
b25Db25maWcgbm93IGhhcyBhIGBgc2V0X3VzZXJfb3B0aW9uKGtleSwgdmFsdWUpYGAgY2FsbCB0
byBzYXZlCiAgICAgICBhIHNldHRpbmcgaW4gaXRzIG1hdGNoaW5nIGxvY2F0aW9uIHNlY3Rpb24g
KGEgbmV3IG9uZSBpcyBjcmVhdGVkCiAgICAgICBpZiBuZWVkZWQpLiAoUm9iZXJ0IENvbGxpbnMp
CiAKLSAgICAqIEJyYW5jaCBoYXMgdHdvIG5ldyBtZXRob2RzLCBnZXRfcHVzaF9sb2NhdGlvbiBh
bmQgc2V0X3B1c2hfbG9jYXRpb24KLSAgICAgIHRvIHJlc3BlY3RpdmVseSwgZ2V0IGFuZCBzZXQg
dGhlIHB1c2ggbG9jYXRpb24uIChSb2JlcnQgQ29sbGlucykKKyAgICAqIEJyYW5jaCBoYXMgdHdv
IG5ldyBtZXRob2RzLCBgYGdldF9wdXNoX2xvY2F0aW9uYGAgYW5kCisgICAgICBgYHNldF9wdXNo
X2xvY2F0aW9uYGAgdG8gcmVzcGVjdGl2ZWx5LCBnZXQgYW5kIHNldCB0aGUgcHVzaCBsb2NhdGlv
bi4KKyAgICAgIChSb2JlcnQgQ29sbGlucykKIAotICAgICogY29tbWFuZHMucmVnaXN0ZXJfY29t
bWFuZCBub3cgdGFrZXMgYW4gb3B0aW9uYWwgZmxhZyB0byBzaWduYWwgdGhhdAorICAgICogYGBj
b21tYW5kcy5yZWdpc3Rlcl9jb21tYW5kYGAgbm93IHRha2VzIGFuIG9wdGlvbmFsIGZsYWcgdG8g
c2lnbmFsIHRoYXQKICAgICAgIHRoZSByZWdpc3RyYW50IGlzIHBsYW5uaW5nIHRvIGRlY29yYXRl
IGFuIGV4aXN0aW5nIGNvbW1hbmQuIFdoZW4gCiAgICAgICBnaXZlbiBtdWx0aXBsZSBwbHVnaW5z
IHJlZ2lzdGVyaW5nIGEgY29tbWFuZCBpcyBub3QgYW4gZXJyb3IsIGFuZAogICAgICAgdGhlIG9y
aWdpbmFsIGNvbW1hbmQgY2xhc3MgKHdoZXRoZXIgYnVpbHQgaW4gb3IgYSBwbHVnaW4gYmFzZWQg
b25lKSBpcwpAQCAtMTkxMiwzMiArMjE5NCwzNCBAQAogICAgICogU29tZSBvcHRpb24gcGFyc2lu
ZyBlcnJvcnMgd2lsbCByYWlzZSAnQnpyT3B0aW9uRXJyb3InLCBhbGxvd2luZyAKICAgICAgIGdy
YW51bGFyIGRldGVjdGlvbiBmb3IgZGVjb3JhdGluZyBjb21tYW5kcy4gKFJvYmVydCBDb2xsaW5z
KS4KIAotICAgICogQnJhbmNoLnJlYWRfd29ya2luZ19pbnZlbnRvcnkgaGFzIG1vdmVkIHRvCi0g
ICAgICBXb3JraW5nVHJlZS5yZWFkX3dvcmtpbmdfaW52ZW50b3J5LiBUaGlzIG5lY2Vzc2l0YXRl
ZCBjaGFuZ2VzIHRvCi0gICAgICBCcmFuY2guZ2V0X3Jvb3RfaWQsIGFuZCBhIG1vdmUgb2YgQnJh
bmNoLnNldF9pbnZlbnRvcnkgdG8gV29ya2luZ1RyZWUKLSAgICAgIGFzIHdlbGwuIFRvIG1ha2Ug
aXQgY2xlYXIgdGhhdCBhIFdvcmtpbmdUcmVlIGNhbm5vdCBhbHdheXMgYmUgb2J0YWluZWQKLSAg
ICAgIEJyYW5jaC53b3JraW5nX3RyZWUoKSB3aWxsIHJhaXNlICdlcnJvcnMuTm9Xb3JraW5nVHJl
ZScgaWYgb25lIGNhbm5vdAotICAgICAgYmUgb2J0YWluZWQuIChSb2JlcnQgQ29sbGlucykKKyAg
ICAqIGBgQnJhbmNoLnJlYWRfd29ya2luZ19pbnZlbnRvcnlgYCBoYXMgbW92ZWQgdG8KKyAgICAg
IGBgV29ya2luZ1RyZWUucmVhZF93b3JraW5nX2ludmVudG9yeWBgLiBUaGlzIG5lY2Vzc2l0YXRl
ZCBjaGFuZ2VzIHRvCisgICAgICBgYEJyYW5jaC5nZXRfcm9vdF9pZGBgLCBhbmQgYSBtb3ZlIG9m
IGBgQnJhbmNoLnNldF9pbnZlbnRvcnlgYCB0bworICAgICAgV29ya2luZ1RyZWUgYXMgd2VsbC4g
VG8gbWFrZSBpdCBjbGVhciB0aGF0IGEgV29ya2luZ1RyZWUgY2Fubm90IGFsd2F5cworICAgICAg
YmUgb2J0YWluZWQgYGBCcmFuY2gud29ya2luZ190cmVlKClgYCB3aWxsIHJhaXNlCisgICAgICBg
YGVycm9ycy5Ob1dvcmtpbmdUcmVlYGAgaWYgb25lIGNhbm5vdCBiZSBvYnRhaW5lZC4gKFJvYmVy
dCBDb2xsaW5zKQogCiAgICAgKiBBbGwgcGVuZGluZyBtZXJnZXMgb3BlcmF0aW9ucyBmcm9tIEJy
YW5jaCBhcmUgbm93IG9uIFdvcmtpbmdUcmVlLgogICAgICAgKFJvYmVydCBDb2xsaW5zKQogCi0g
ICAgKiBUaGUgZm9sbG93IG9wZXJhdGlvbnMgZnJvbSBCcmFuY2ggaGF2ZSBtb3ZlZCB0byBXb3Jr
aW5nVHJlZToKLSAgICAgIGFkZCgpCi0gICAgICBjb21taXQoKQotICAgICAgbW92ZSgpCi0gICAg
ICByZW5hbWVfb25lKCkKLSAgICAgIHVua25vd25zKCkKKyAgICAqIFRoZSBmb2xsb3cgb3BlcmF0
aW9ucyBmcm9tIEJyYW5jaCBoYXZlIG1vdmVkIHRvIFdvcmtpbmdUcmVlOjoKKworICAgICAgICAg
IGFkZCgpCisgICAgICAgICAgY29tbWl0KCkKKyAgICAgICAgICBtb3ZlKCkKKyAgICAgICAgICBy
ZW5hbWVfb25lKCkKKyAgICAgICAgICB1bmtub3ducygpCisKICAgICAgIChSb2JlcnQgQ29sbGlu
cykKIAotICAgICogYnpybGliLmFkZC5zbWFydF9hZGRfYnJhbmNoIGlzIG5vdyBzbWFydF9hZGRf
dHJlZS4gKFJvYmVydCBDb2xsaW5zKQorICAgICogYGBienJsaWIuYWRkLnNtYXJ0X2FkZF9icmFu
Y2hgYCBpcyBub3cgYGBzbWFydF9hZGRfdHJlZWBgLiAoUm9iZXJ0IENvbGxpbnMpCiAKICAgICAq
IE5ldyAicmlvIiBzZXJpYWxpemF0aW9uIGZvcm1hdCwgc2ltaWxhciB0byByZmMtODIyLiAoTWFy
dGluIFBvb2wpCiAKLSAgICAqIFJlbmFtZSBzZWxmdGVzdHMgdG8gYGJ6cmxpYi50ZXN0cy50ZXN0
X2Zvb2AuICAoSm9obiBBIE1laW5lbCwgTWFydGluIAorICAgICogUmVuYW1lIHNlbGZ0ZXN0cyB0
byBgYGJ6cmxpYi50ZXN0cy50ZXN0X2Zvb2BgLiAgKEpvaG4gQSBNZWluZWwsIE1hcnRpbiAKICAg
ICAgIFBvb2wpCiAKLSAgICAqIGJ6cmxpYi5wbHVnaW4uYWxsX3BsdWdpbnMgaGFzIGJlZW4gY2hh
bmdlZCBmcm9tIGFuIGF0dHJpYnV0ZSB0byBhIAorICAgICogYGBienJsaWIucGx1Z2luLmFsbF9w
bHVnaW5zYGAgaGFzIGJlZW4gY2hhbmdlZCBmcm9tIGFuIGF0dHJpYnV0ZSB0byBhIAogICAgICAg
cXVlcnkgbWV0aG9kLiAoUm9iZXJ0IENvbGxpbnMpCiAgCiAgICAgKiBOZXcgb3B0aW9ucyB0byBy
ZWFkIG9ubHkgdGhlIHRhYmxlLW9mLWNvbnRlbnRzIG9mIGEgd2VhdmUuICAKQEAgLTE5NDYsMjEg
KzIyMzAsMjAgQEAKICAgICAqIFJhaXNlIE5vU3VjaEZpbGUgd2hlbiBzb21lb25lIHRyaWVzIHRv
IGFkZCBhIG5vbi1leGlzdGFudCBmaWxlLgogICAgICAgKE1pY2hhZWwgRWxsZXJtYW4pCiAKLSAg
ICAqIFNpbXBsaWZ5IGhhbmRsaW5nIG9mIERpdmVyZ2VkQnJhbmNoZXMgaW4gY21kX3B1bGwoKS4K
KyAgICAqIFNpbXBsaWZ5IGhhbmRsaW5nIG9mIERpdmVyZ2VkQnJhbmNoZXMgaW4gYGBjbWRfcHVs
bCgpYGAuCiAgICAgICAoTWljaGFlbCBFbGxlcm1hbikKLQkJICAgCiAgICAKICAgICAqIEJyYW5j
aC5jb250cm9sZmlsZSogbG9naWMgaGFzIG1vdmVkIHRvIGxvY2thYmxlZmlsZXMuTG9ja2FibGVG
aWxlcywgd2hpY2gKLSAgICAgIGlzIGV4cG9zZWQgYXMgQnJhbmNoKCkuY29udHJvbF9maWxlcy4g
QWxzbyB0aGlzIGhhcyBiZWVuIGFsdGVyZWQgd2l0aCB0aGUKKyAgICAgIGlzIGV4cG9zZWQgYXMg
YGBCcmFuY2goKS5jb250cm9sX2ZpbGVzYGAuIEFsc28gdGhpcyBoYXMgYmVlbiBhbHRlcmVkIHdp
dGggdGhlCiAgICAgICBjb250cm9sZmlsZSBwcmUvc3VmZml4IHJlcGxhY2VkIGJ5IHNpbXBsZSBt
ZXRob2QgbmFtZXMgbGlrZSAnZ2V0JyBhbmQKICAgICAgICdwdXQnLiAoQWFyb24gQmVudGxleSwg
Um9iZXJ0IENvbGxpbnMpLgogCiAgICAgKiBEZXByZWNhdGVkIGZ1bmN0aW9ucyBhbmQgbWV0aG9k
cyBjYW4gbm93IGJlIG1hcmtlZCBhcyBzdWNoIHVzaW5nIHRoZSAKLSAgICAgIGJ6cmxpYi5zeW1i
b2xfdmVyc2lvbmluZyBtb2R1bGUuIE1hcmtlZCBtZXRob2QgaGF2ZSB0aGVpciBkb2NzdHJpbmcK
KyAgICAgIGBgYnpybGliLnN5bWJvbF92ZXJzaW9uaW5nYGAgbW9kdWxlLiBNYXJrZWQgbWV0aG9k
IGhhdmUgdGhlaXIgZG9jc3RyaW5nCiAgICAgICB1cGRhdGVkIGFuZCB3aWxsIGlzc3VlIGEgRGVw
cmVjYXRpb25XYXJuaW5nIHVzaW5nIHRoZSB3YXJuaW5ncyBtb2R1bGUKICAgICAgIHdoZW4gdGhl
eSBhcmUgdXNlZC4gKFJvYmVydCBDb2xsaW5zKQogCi0gICAgKiBienJsaWIub3N1dGlscy5zYWZl
X3VuaWNvZGUgbm93IGV4aXN0cyB0byBwcm92aWRlIHBhcmFtZXRlciBjb2VyY2lvbgorICAgICog
YGBienJsaWIub3N1dGlscy5zYWZlX3VuaWNvZGVgYCBub3cgZXhpc3RzIHRvIHByb3ZpZGUgcGFy
YW1ldGVyIGNvZXJjaW9uCiAgICAgICBmb3IgZnVuY3Rpb25zIHRoYXQgbmVlZCB1bmljb2RlIHN0
cmluZ3MuIChSb2JlcnQgQ29sbGlucykKIAogYnpyIDAuNiAyMDA1LTEwLTI4CkBAIC0yMDAxLDkg
KzIyODQsOSBAQAogICAgICogTmV3IGNvbW1hbmQgJ3JlLXNpZ24nIHdoaWNoIHdpbGwgcmVnZW5l
cmF0ZSB0aGUgZ3BnIHNpZ25hdHVyZSBmb3IgCiAgICAgICBhIHJldmlzaW9uLiAoUm9iZXJ0IENv
bGxpbnMpCiAKLSAgICAqIElmIHlvdSBzZXQgY2hlY2tfc2lnbmF0dXJlcz1yZXF1aXJlIGZvciBh
IHBhdGggaW4gCi0gICAgICB+Ly5iYXphYXIvYnJhbmNoZXMuY29uZiB0aGVuIGJ6ciB3aWxsIGlu
dm9rZSB5b3VyCi0gICAgICBncGdfc2lnbmluZ19jb21tYW5kIChkZWZhdWx0cyB0byBncGcpIGFu
ZCByZWNvcmQgYSBkaWdpdGFsIHNpZ25hdHVyZQorICAgICogSWYgeW91IHNldCBgYGNoZWNrX3Np
Z25hdHVyZXM9cmVxdWlyZWBgIGZvciBhIHBhdGggaW4gCisgICAgICBgYH4vLmJhemFhci9icmFu
Y2hlcy5jb25mYGAgdGhlbiBienIgd2lsbCBpbnZva2UgeW91cgorICAgICAgYGBncGdfc2lnbmlu
Z19jb21tYW5kYGAgKGRlZmF1bHRzIHRvIGdwZykgYW5kIHJlY29yZCBhIGRpZ2l0YWwgc2lnbmF0
dXJlCiAgICAgICBvZiB5b3VyIGNvbW1pdC4gKFJvYmVydCBDb2xsaW5zKQogCiAgICAgKiBOZXcg
c2Z0cCB0cmFuc3BvcnQsIGJhc2VkIG9uIFBhcmFtaWtvLiAgKFJvYmV5IFBvaW50ZXIpCkBAIC0y
MDE3LDkgKzIzMDAsOSBAQAogICAgICogJ2J6ciBicmFuY2gnIHdpbGwgbm93IHNldCB0aGUgYnJh
bmNoLW5hbWUgdG8gdGhlIGxhc3QgY29tcG9uZW50IG9mIHRoZQogICAgICAgb3V0cHV0IGRpcmVj
dG9yeSwgaWYgb25lIHdhcyBzdXBwbGllZC4KIAotICAgICogSWYgdGhlIG9wdGlvbiAncG9zdF9j
b21taXQnIGlzIHNldCB0byBvbmUgKG9yIG1vcmUpIHB5dGhvbiBmdW5jdGlvbgorICAgICogSWYg
dGhlIG9wdGlvbiBgYHBvc3RfY29tbWl0YGAgaXMgc2V0IHRvIG9uZSAob3IgbW9yZSkgcHl0aG9u
IGZ1bmN0aW9uCiAgICAgICBuYW1lcyAobXVzdCBiZSBpbiB0aGUgYnpybGliIG5hbWVzcGFjZSks
IHRoZW4gdGhleSB3aWxsIGJlIGludm9rZWQKLSAgICAgIGFmdGVyIHRoZSBjb21taXQgaGFzIGNv
bXBsZXRlZCwgd2l0aCB0aGUgYnJhbmNoIGFuZCByZXZpc2lvbl9pZCBhcworICAgICAgYWZ0ZXIg
dGhlIGNvbW1pdCBoYXMgY29tcGxldGVkLCB3aXRoIHRoZSBicmFuY2ggYW5kIGBgcmV2aXNpb25f
aWRgYCBhcwogICAgICAgcGFyYW1ldGVycy4gKFJvYmVydCBDb2xsaW5zKQogCiAgICAgKiBNZXJn
ZSBub3cgaGFzIGEgcmV0Y29kZSBvZiAxIHdoZW4gY29uZmxpY3RzIG9jY3VyLiAoUm9iZXJ0IENv
bGxpbnMpCkBAIC0yMDg2LDcgKzIzNjksNyBAQAogCiAgICAgKiBQbHVnaW5zIGFyZSBub3cgbG9h
ZGVkIHVuZGVyIGJ6cmxpYi5wbHVnaW5zLCBub3QgYnpybGliLnBsdWdpbiwgYW5kCiAgICAgICB0
aGV5IGFyZSBtYWRlIGF2YWlsYWJsZSBmb3Igb3RoZXIgcGx1Z2lucyB0byB1c2UuIFlvdSBzaG91
bGQgbm90IAotICAgICAgaW1wb3J0IG90aGVyIHBsdWdpbnMgZHVyaW5nIHRoZSBfX2luaXRfXyBv
ZiB5b3VyIHBsdWdpbiB0aG91Z2gsIGFzIAorICAgICAgaW1wb3J0IG90aGVyIHBsdWdpbnMgZHVy
aW5nIHRoZSBgYF9faW5pdF9fYGAgb2YgeW91ciBwbHVnaW4gdGhvdWdoLCBhcyAKICAgICAgIG5v
IG9yZGVyaW5nIGlzIGd1YXJhbnRlZWQsIGFuZCB0aGUgcGx1Z2lucyBkaXJlY3RvcnkgaXMgbm90
IG9uIHRoZQogICAgICAgcHl0aG9uIHBhdGguIChSb2JlcnQgQ29sbGlucykKIApAQCAtMjA5OSw0
MCArMjM4Miw0MCBAQAogICAgICAgU2NvdHQgSmFtZXMgUmVtbmFudC4gIChNYXJ0aW4gUG9vbCkK
IAogICAgICogQnJhbmNoLnJlbW92ZSBoYXMgYmVlbiBtb3ZlZCB0byBXb3JraW5nVHJlZSwgd2hp
Y2ggaGFzIGFsc28gZ2FpbmVkCi0gICAgICBsb2NrX3JlYWQsIGxvY2tfd3JpdGUgYW5kIHVubG9j
ayBtZXRob2RzIGZvciBjb252ZW5pZW5jZS4gKFJvYmVydAotICAgICAgQ29sbGlucykKKyAgICAg
IGBgbG9ja19yZWFkYGAsIGBgbG9ja193cml0ZWBgIGFuZCBgYHVubG9ja2BgIG1ldGhvZHMgZm9y
IGNvbnZlbmllbmNlLgorICAgICAgKFJvYmVydCBDb2xsaW5zKQogCi0gICAgKiBUd28gZGVjb3Jh
dG9ycywgbmVlZHNfcmVhZF9sb2NrIGFuZCBuZWVkc193cml0ZV9sb2NrIGhhdmUgYmVlbiBhZGRl
ZAotICAgICAgdG8gdGhlIGJyYW5jaCBtb2R1bGUuIFVzZSB0aGVzZSB0byBjYXVzZSBhIGZ1bmN0
aW9uIHRvIHJ1biBpbiBhCisgICAgKiBUd28gZGVjb3JhdG9ycywgYGBuZWVkc19yZWFkX2xvY2tg
YCBhbmQgYGBuZWVkc193cml0ZV9sb2NrYGAgaGF2ZSBiZWVuCisgICAgICBhZGRlZCB0byB0aGUg
YnJhbmNoIG1vZHVsZS4gVXNlIHRoZXNlIHRvIGNhdXNlIGEgZnVuY3Rpb24gdG8gcnVuIGluIGEK
ICAgICAgIHJlYWQgb3Igd3JpdGUgbG9jayByZXNwZWN0aXZlbHkuIChSb2JlcnQgQ29sbGlucykK
IAotICAgICogQnJhbmNoLm9wZW5fY29udGFpbmluZyBub3cgcmV0dXJucyBhIHR1cGxlIChCcmFu
Y2gsIHJlbGF0aXZlLXBhdGgpLAorICAgICogYGBCcmFuY2gub3Blbl9jb250YWluaW5nYGAgbm93
IHJldHVybnMgYSB0dXBsZSAoQnJhbmNoLCByZWxhdGl2ZS1wYXRoKSwKICAgICAgIHdoaWNoIGFs
bG93cyBkaXJlY3QgYWNjZXNzIHRvIHRoZSBjb21tb24gY2FzZSBvZiAnZ2V0IG1lIHRoaXMgZmls
ZQogICAgICAgZnJvbSBpdHMgYnJhbmNoJy4gKFJvYmVydCBDb2xsaW5zKQogCi0gICAgKiBUcmFu
c3BvcnRzIGNhbiByZWdpc3RlciB1c2luZyByZWdpc3Rlcl9sYXp5X3RyYW5zcG9ydCwgYW5kIHRo
ZXkgCisgICAgKiBUcmFuc3BvcnRzIGNhbiByZWdpc3RlciB1c2luZyBgYHJlZ2lzdGVyX2xhenlf
dHJhbnNwb3J0YGAsIGFuZCB0aGV5IAogICAgICAgd2lsbCBiZSBsb2FkZWQgd2hlbiBmaXJzdCB1
c2VkLiAgKE1hcnRpbiBQb29sKQogCi0gICAgKiAncHVsbCcgaGFzIGJlZW4gZmFjdG9yZWQgb3V0
IG9mIHRoZSBjb21tYW5kIGFzIFdvcmtpbmdUcmVlLnB1bGwoKS4KKyAgICAqICdwdWxsJyBoYXMg
YmVlbiBmYWN0b3JlZCBvdXQgb2YgdGhlIGNvbW1hbmQgYXMgYGBXb3JraW5nVHJlZS5wdWxsKClg
YC4KICAgICAgIEEgbmV3IG9wdGlvbiB0byBXb3JraW5nVHJlZS5wdWxsIGhhcyBiZWVuIGFkZGVk
LCBjbG9iYmVyLCB3aGljaCB3aWxsCiAgICAgICBpZ25vcmUgZGl2ZXJnZWQgaGlzdG9yeSBhbmQg
cHVsbCBhbnl3YXkuCiAgICAgICAoUm9iZXJ0IENvbGxpbnMpCiAKLSAgICAqIGNvbmZpZy5Db25m
aWcgaGFzIGEgJ2dldF91c2VyX29wdGlvbicgY2FsbCB0aGF0IGFjY2VwdHMgYW4gb3B0aW9uIG5h
bWUuCisgICAgKiBjb25maWcuQ29uZmlnIGhhcyBhIGBgZ2V0X3VzZXJfb3B0aW9uYGAgY2FsbCB0
aGF0IGFjY2VwdHMgYW4gb3B0aW9uIG5hbWUuCiAgICAgICBUaGlzIHdpbGwgYmUgbG9va2VkIHVw
IGluIGJyYW5jaGVzLmNvbmYgYW5kIGJhemFhci5jb25mIGFzIG5vcm1hbC4KICAgICAgIEl0IGlz
IGludGVuZGVkIHRoYXQgdGhpcyBiZSB1c2VkIGJ5IHBsdWdpbnMgdG8gc3VwcG9ydCBvcHRpb25z
IC0gCiAgICAgICBvcHRpb25zIG9mIGJ1aWx0IGluIHByb2dyYW1zIHNob3VsZCBoYXZlIHNwZWNp
ZmljIG1ldGhvZHMgb24gdGhlIGNvbmZpZy4KICAgICAgIChSb2JlcnQgQ29sbGlucykKIAotICAg
ICogbWVyZ2UubWVyZ2VfaW5uZXIgbm93IGhhcyB0ZW1wZGlyIGFzIGFuIG9wdGlvbmFsIHBhcmFt
ZXRlci4gKFJvYmVydAotICAgICAgQ29sbGlucykKKyAgICAqIGBgbWVyZ2UubWVyZ2VfaW5uZXJg
YCBub3cgaGFzIHRlbXBkaXIgYXMgYW4gb3B0aW9uYWwgcGFyYW1ldGVyLgorICAgICAgKFJvYmVy
dCBDb2xsaW5zKQogCiAgICAgKiBUcmVlLmtpbmQgaXMgbm90IHJlY29yZGVkIGF0IHRoZSB0b3Ag
bGV2ZWwgb2YgdGhlIGhpZXJhcmNoeSwgYXMgaXQgd2FzCiAgICAgICBtaXNzaW5nIG9uIEVtcHR5
VHJlZSwgbGVhZGluZyB0byBhIGJ1ZyB3aXRoIG1lcmdlIG9uIEVtcHR5VHJlZXMuCiAgICAgICAo
Um9iZXJ0IENvbGxpbnMpCiAKLSAgICAqIFdvcmtpbmdUcmVlLl9fZGVsX18gaGFzIGJlZW4gcmVt
b3ZlZCwgaXQgd2FzIG5vbiBkZXRlcm1pbmlzdGljIGFuZCBub3QgCi0gICAgICBkb2luZyB3aGF0
IGl0IHdhcyBpbnRlbmRlZCB0by4gU2VlIFdvcmtpbmdUcmVlLl9faW5pdF9fIGZvciBhIGNvbW1l
bnQKKyAgICAqIGBgV29ya2luZ1RyZWUuX19kZWxfX2BgIGhhcyBiZWVuIHJlbW92ZWQsIGl0IHdh
cyBub24gZGV0ZXJtaW5pc3RpYyBhbmQgbm90IAorICAgICAgZG9pbmcgd2hhdCBpdCB3YXMgaW50
ZW5kZWQgdG8uIFNlZSBgYFdvcmtpbmdUcmVlLl9faW5pdF9fYGAgZm9yIGEgY29tbWVudAogICAg
ICAgYWJvdXQgZnV0dXJlIGRpcmVjdGlvbnMuIChSb2JlcnQgQ29sbGlucy9NYXJ0aW4gUG9vbCkK
IAogICAgICogYnpybGliLnRyYW5zcG9ydC5odHRwIGhhcyBiZWVuIG1vZGlmaWVkIHNvIHRoYXQg
b25seSA0MDQgdXJsbGliIGVycm9ycwpAQCAtMjE0MywyNiArMjQyNiwyNyBAQAogICAgICAgdG8g
YXBpcyBsaWtlICdwdXQnLCAnZ2V0JyBhbmQgJ2hhcycuIFRoaXMgaXMgdG8gcHJvdmlkZSBjb25z
aXN0ZW50CiAgICAgICBiZWhhdmlvdXIgLSBpdCBvcGVyYXRlcyBvbiB1cmwncyBvbmx5LiAoUm9i
ZXJ0IENvbGxpbnMpCiAKLSAgICAqIFRyYW5zcG9ydHMgY2FuIHJlZ2lzdGVyIHVzaW5nIHJlZ2lz
dGVyX2xhenlfdHJhbnNwb3J0LCBhbmQgdGhleSAKKyAgICAqIFRyYW5zcG9ydHMgY2FuIHJlZ2lz
dGVyIHVzaW5nIGBgcmVnaXN0ZXJfbGF6eV90cmFuc3BvcnRgYCwgYW5kIHRoZXkgCiAgICAgICB3
aWxsIGJlIGxvYWRlZCB3aGVuIGZpcnN0IHVzZWQuICAoTWFydGluIFBvb2wpCiAKLSAgICAqICdt
ZXJnZV9mbGV4JyBubyBsb25nZXIgY2FsbHMgY29uZmxpY3RfaGFuZGxlci5maW5hbGl6ZSgpLCBp
bnN0ZWFkIHRoYXQKLSAgICAgIGlzIGNhbGxlZCBieSBtZXJnZV9pbm5lci4gVGhpcyBpcyBzbyB0
aGF0IHRoZSBjb25mbGljdCBjb3VudCBjYW4gYmUgCisgICAgKiBgYG1lcmdlX2ZsZXhgYCBubyBs
b25nZXIgY2FsbHMgYGBjb25mbGljdF9oYW5kbGVyLmZpbmFsaXplKClgYCwgaW5zdGVhZCB0aGF0
CisgICAgICBpcyBjYWxsZWQgYnkgYGBtZXJnZV9pbm5lcmBgLiBUaGlzIGlzIHNvIHRoYXQgdGhl
IGNvbmZsaWN0IGNvdW50IGNhbiBiZSAKICAgICAgIHJldHJpZXZlZCAoYW5kIHBvdGVudGlhbGx5
IG1hbmlwdWxhdGVkKSBiZWZvcmUgcmV0dXJuaW5nIHRvIHRoZSBjYWxsZXIKLSAgICAgIG9mIG1l
cmdlX2lubmVyLiBMaWtld2lzZSAnbWVyZ2UnIG5vdyByZXR1cm5zIHRoZSBjb25mbGljdCBjb3Vu
dCB0byB0aGUKKyAgICAgIG9mIGBgbWVyZ2VfaW5uZXJgYC4gTGlrZXdpc2UgJ21lcmdlJyBub3cg
cmV0dXJucyB0aGUgY29uZmxpY3QgY291bnQgdG8gdGhlCiAgICAgICBjYWxsZXIuIChSb2JlcnQg
Q29sbGlucykKIAotICAgICogJ3JldmlzaW9uLnJldmlzaW9uX2dyYXBoIGNhbiBoYW5kbGUgaGF2
aW5nIG9ubHkgcGFydGlhbCBoaXN0b3J5IGZvcgorICAgICogYGByZXZpc2lvbi5yZXZpc2lvbl9n
cmFwaGBgIGNhbiBoYW5kbGUgaGF2aW5nIG9ubHkgcGFydGlhbCBoaXN0b3J5IGZvcgogICAgICAg
YSByZXZpc2lvbiAtIHRoYXQgaXMgbm8gcmV2aXNpb25zIGluIHRoZSBncmFwaCB3aXRoIG5vIHBh
cmVudHMuCiAgICAgICAoUm9iZXJ0IENvbGxpbnMpLgogCi0gICAgKiBOZXcgYnVpbHRpbnMuYnJh
bmNoX2ZpbGVzIHVzZXMgdGhlIHN0YW5kYXJkIGZpbGVfbGlzdCBydWxlcyB0byBwcm9kdWNlCi0g
ICAgICBhIGJyYW5jaCBhbmQgYSBsaXN0IG9mIHBhdGhzLCByZWxhdGl2ZSB0byB0aGF0IGJyYW5j
aCAoQWFyb24gQmVudGxleSkKKyAgICAqIE5ldyBgYGJ1aWx0aW5zLmJyYW5jaF9maWxlc2BgIHVz
ZXMgdGhlIHN0YW5kYXJkIGBgZmlsZV9saXN0YGAgcnVsZXMgdG8KKyAgICAgIHByb2R1Y2UgYSBi
cmFuY2ggYW5kIGEgbGlzdCBvZiBwYXRocywgcmVsYXRpdmUgdG8gdGhhdCBicmFuY2gKKyAgICAg
IChBYXJvbiBCZW50bGV5KQogCiAgICAgKiBOZXcgVGVzdENhc2UuYWRkQ2xlYW51cCBmYWNpbGl0
eS4KIAotICAgICogTmV3IGJ6cmxpYi52ZXJzaW9uX2luZm8gdHVwbGUgKHNpbWlsYXIgdG8gc3lz
LnZlcnNpb25faW5mbyksIHdoaWNoIGNhbgotICAgICAgYmUgdXNlZCBieSBwcm9ncmFtcyBpbXBv
cnRpbmcgYnpybGliLgorICAgICogTmV3IGBgYnpybGliLnZlcnNpb25faW5mb2BgIHR1cGxlIChz
aW1pbGFyIHRvIGBgc3lzLnZlcnNpb25faW5mb2BgKSwKKyAgICAgIHdoaWNoIGNhbiBiZSB1c2Vk
IGJ5IHByb2dyYW1zIGltcG9ydGluZyBienJsaWIuCiAKICAgQlVHIEZJWEVTOgogCkBAIC0yMjI1
LDcgKzI1MDksNyBAQAogICAgICAgYnpyIHdpbGwgY29ycmVjdCB0aGlzIHdoZW4gaXQgZW5jb3Vu
dGVycyBpdC4gRml4ZWQgYnkKICAgICAgIFJvYmVydCBDb2xsaW5zCiAKLSAgICAqIEhUVFAgdGVz
dHMgbm93IGZvcmNlIG9mZiB0aGUgdXNlIG9mIGh0dHBfcHJveHkgZm9yIHRoZSBkdXJhdGlvbi4K
KyAgICAqIEhUVFAgdGVzdHMgbm93IGZvcmNlIG9mZiB0aGUgdXNlIG9mIGBgaHR0cF9wcm94eWBg
IGZvciB0aGUgZHVyYXRpb24uCiAgICAgICBDb250cmlidXRlZCBieSBHdXN0YXZvIE5pZW1leWVy
LgogCiAgICAgKiBGaXggcHJvYmxlbXMgaW4gbWVyZ2luZyB3ZWF2ZS1iYXNlZCBicmFuY2hlcyB0
aGF0IGhhdmUgCkBAIC0yMjg0LDE2ICsyNTY4LDE2IEBACiAgICAgICBienIgYnJhbmNoIGl0IGNh
bm5vdCB1bmRlcnN0YW5kLiBUaGlzIGFsbG93cyBmb3IgcHJlY2lzZQogICAgICAgaGFuZGxpbmcg
b2Ygc3VjaCBjaXJjdW1zdGFuY2VzLgogCi0gICAgKiBSZW1vdmUgUmV2aXNpb25SZWZlcmVuY2Ug
Y2xhc3M7IFJldmlzaW9uLnBhcmVudF9pZHMgaXMgbm93IHNpbXBseSBhCi0gICAgICBsaXN0IG9m
IHRoZWlyIGlkcyBhbmQgcGFyZW50X3NoYTFzIGlzIGEgbGlzdCBvZiB0aGVpciBjb3JyZXNwb25k
aW5nCisgICAgKiBSZW1vdmUgUmV2aXNpb25SZWZlcmVuY2UgY2xhc3M7IGBgUmV2aXNpb24ucGFy
ZW50X2lkc2BgIGlzIG5vdyBzaW1wbHkgYQorICAgICAgbGlzdCBvZiB0aGVpciBpZHMgYW5kIGBg
cGFyZW50X3NoYTFzYGAgaXMgYSBsaXN0IG9mIHRoZWlyIGNvcnJlc3BvbmRpbmcKICAgICAgIHNo
YTFzIChmb3Igb2xkIGJyYW5jaGVzIG9ubHkgYXQgdGhlIG1vbWVudC4pCiAKICAgICAqIE5ldyBt
ZXRob2Qtb2JqZWN0IHN0eWxlIGludGVyZmFjZSBmb3IgQ29tbWl0KCkgYW5kIEZldGNoKCkuCiAK
LSAgICAqIFJlbmFtZWQgQnJhbmNoLmxhc3RfcGF0Y2goKSB0byBCcmFuY2gubGFzdF9yZXZpc2lv
bigpLCBzaW5jZQorICAgICogUmVuYW1lZCBgYEJyYW5jaC5sYXN0X3BhdGNoKClgYCB0byBgYEJy
YW5jaC5sYXN0X3JldmlzaW9uKClgYCwgc2luY2UKICAgICAgIHdlIGNhbGwgdGhlbSByZXZpc2lv
bnMgbm90IHBhdGNoZXMuCiAKLSAgICAqIE1vdmUgY29weV9icmFuY2ggdG8gYnpybGliLmNsb25l
LmNvcHlfYnJhbmNoLiAgVGhlIGRlc3RpbmF0aW9uCisgICAgKiBNb3ZlIGBgY29weV9icmFuY2hg
YCB0byBgYGJ6cmxpYi5jbG9uZS5jb3B5X2JyYW5jaGBgLiAgVGhlIGRlc3RpbmF0aW9uCiAgICAg
ICBkaXJlY3RvcnkgaXMgY3JlYXRlZCBpZiBpdCBkb2Vzbid0IGV4aXN0LgogCiAgICAgKiBJbnZl
bnRvcmllcyBub3cgaWRlbnRpZnkgdGhlIGZpbGVzIHdoaWNoIHdlcmUgcHJlc2VudCBieSAKQEAg
LTIzMDksNyArMjU5Myw3IEBACiAgICAgICBienIgaW5zdGFsbGVkIGJ5ICdienIgc2VsZnRlc3Qn
LgogCiAgICAgKiAnYnpyIHNlbGZ0ZXN0JyBjb21tYW5kLWxpbmUgYXJndW1lbnRzIGNhbiBub3cg
YmUgcGFydGlhbCBpZHMKLSAgICAgIG9mIHRlc3RzIHRvIHJ1biwgZS5nLiAnYnpyIHNlbGZ0ZXN0
IHRlc3Rfd2VhdmUnCisgICAgICBvZiB0ZXN0cyB0byBydW4sIGUuZy4gYGBienIgc2VsZnRlc3Qg
dGVzdF93ZWF2ZWBgCiAKICAgICAgIAogYnpyIDAuMC45IDIwMDUtMDktMjMKQEAgLTIzNjAsMTAg
KzI2NDQsMTAgQEAKICAgICAgIGdldCBhZGRlZCB3aGVuIHlvdSBhZGQgYSBmaWxlIGluIHRoZSBk
aXJlY3RvcnkuICBDb250cmlidXRlZCBieQogICAgICAgTWljaGFlbCBFbGxlcm1hbi4KIAotICAg
ICogSWdub3JlIC5EU19TdG9yZSAoY29udGFpbnMgTWFjIG1ldGFkYXRhKSBieSBkZWZhdWx0LiAg
UGF0Y2ggZnJvbQotICAgICAgTmlyIFNvZmZlci4KKyAgICAqIElnbm9yZSBgYC5EU19TdG9yZWBg
IChjb250YWlucyBNYWMgbWV0YWRhdGEpIGJ5IGRlZmF1bHQuCisgICAgICAoTmlyIFNvZmZlcikK
IAotICAgICogSWYgeW91IHNldCBCWlJfRURJVE9SIGluIHRoZSBlbnZpcm9ubWVudCwgaXQgaXMg
Y2hlY2tlZCBpbgorICAgICogSWYgeW91IHNldCBgYEJaUl9FRElUT1JgYCBpbiB0aGUgZW52aXJv
bm1lbnQsIGl0IGlzIGNoZWNrZWQgaW4KICAgICAgIHByZWZlcmVuY2UgdG8gRURJVE9SIGFuZCB0
aGUgY29uZmlnIGZpbGUgZm9yIHRoZSBpbnRlcmFjdGl2ZSBjb21taXQKICAgICAgIGVkaXRpbmcg
cHJvZ3JhbS4gUmVsYXRlZCB0byB0aGlzIGlzIGEgYnVnZml4IHdoZXJlIGEgbWlzc2luZyBwcm9n
cmFtCiAgICAgICBzZXQgaW4gRURJVE9SIHdvdWxkIGNhdXNlIGVkaXRpbmcgdG8gZmFpbCwgbm93
IHRoZSBmYWxsYmFjayBwcm9ncmFtCkBAIC0yNDUwLDcgKzI3MzQsNyBAQAogICBORVcgRkVBVFVS
RVM6CiAKICAgICAqIFB5dGhvbiBwbHVnaW5zLCBhdXRvbWF0aWNhbGx5IGxvYWRlZCBmcm9tIHRo
ZSBkaXJlY3RvcmllcyBvbgotICAgICAgQlpSX1BMVUdJTl9QQVRIIG9yIH4vLmJ6ci5jb25mL3Bs
dWdpbnMgYnkgZGVmYXVsdC4KKyAgICAgIGBgQlpSX1BMVUdJTl9QQVRIYGAgb3IgYGB+Ly5ienIu
Y29uZi9wbHVnaW5zYGAgYnkgZGVmYXVsdC4KIAogICAgICogTmV3ICdienIgbWtkaXInIGNvbW1h
bmQuCiAKQEAgLTI0ODgsNyArMjc3Miw3IEBACiAgICAgKiBNb3ZlZCBwbHVnaW5zIGRpcmVjdG9y
eSB0byBienJsaWIvLCBzbyB0aGF0IHRoZXJlJ3MgYSBzdGFuZGFyZAogICAgICAgcGx1Z2luIGRp
cmVjdG9yeSB3aGljaCBpcyBub3Qgb25seSBpbnN0YWxsZWQgd2l0aCBienIgaXRzZWxmIGJ1dAog
ICAgICAgaXMgYWxzbyBhdmFpbGFibGUgd2hlbiB1c2luZyBienIgZnJvbSB0aGUgZGV2ZWxvcG1l
bnQgdHJlZS4KLSAgICAgIEJaUl9QTFVHSU5fUEFUSCBhbmQgREVGQVVMVF9QTFVHSU5fUEFUSCBh
cmUgdGhlbiBhZGRlZCB0byB0aGUKKyAgICAgIGBgQlpSX1BMVUdJTl9QQVRIYGAgYW5kIGBgREVG
QVVMVF9QTFVHSU5fUEFUSGBgIGFyZSB0aGVuIGFkZGVkIHRvIHRoZQogICAgICAgc3RhbmRhcmQg
cGx1Z2lucyBkaXJlY3RvcnkuCiAKICAgICAqIFdoZW4gZXhwb3J0aW5nIHRvIGEgdGFyYmFsbCB3
aXRoIGBgYnpyIGV4cG9ydCAtLWZvcm1hdCB0Z3pgYCwgcHV0IApAQCAtMjY0MCwxNSArMjkyNCwx
NSBAQAogCiAgICAgKiBCZXR0ZXIgaGVscCBtZXNzYWdlcyBmb3IgbWFueSBjb21tYW5kcy4KIAot
ICAgICogRXhwb3NlIGJ6cmxpYi5vcGVuX3RyYWNlZmlsZSgpIHRvIHN0YXJ0IHRoZSB0cmFjZWZp
bGU7IHVudGlsCisgICAgKiBFeHBvc2UgYGBienJsaWIub3Blbl90cmFjZWZpbGUoKWBgIHRvIHN0
YXJ0IHRoZSB0cmFjZWZpbGU7IHVudGlsCiAgICAgICB0aGlzIGlzIGNhbGxlZCB0cmFjZSBtZXNz
YWdlcyBhcmUganVzdCBkaXNjYXJkZWQuCiAKLSAgICAqIE5ldyBpbnRlcm5hbCBmdW5jdGlvbiBm
aW5kX3RvdWNoaW5nX3JldmlzaW9ucygpIGFuZCBoaWRkZW4KKyAgICAqIE5ldyBpbnRlcm5hbCBm
dW5jdGlvbiBgYGZpbmRfdG91Y2hpbmdfcmV2aXNpb25zKClgYCBhbmQgaGlkZGVuCiAgICAgICBj
b21tYW5kIHRvdWNoaW5nLXJldmlzaW9ucyB0cmFjZSB0aGUgY2hhbmdlcyB0byBhIGdpdmVuIGZp
bGUuCiAKLSAgICAqIFNpbXBsZXIgYW5kIGZhc3RlciBjb21wYXJlX2ludmVudG9yaWVzKCkgZnVu
Y3Rpb24uCisgICAgKiBTaW1wbGVyIGFuZCBmYXN0ZXIgYGBjb21wYXJlX2ludmVudG9yaWVzKClg
YCBmdW5jdGlvbi4KIAotICAgICogYnpybGliLm9wZW5fdHJhY2VmaWxlKCkgdGFrZXMgYSB0cmFj
ZWZpbGVuYW1lIHBhcmFtZXRlci4KKyAgICAqIGBgYnpybGliLm9wZW5fdHJhY2VmaWxlKClgYCB0
YWtlcyBhIHRyYWNlZmlsZW5hbWUgcGFyYW1ldGVyLgogCiAgICAgKiBOZXcgQXRvbWljRmlsZSBj
bGFzcy4KIApAQCAtMjY5OCw3ICsyOTgyLDcgQEAKIAogICAgICogU29tZSBVbmljb2RlL2xvY2Fs
ZSBmaXhlcy4KIAotICAgICogUGFydGlhbCB3b3JrYXJvdW5kIGZvciBkaWZmbGliLnVuaWZpZWRf
ZGlmZiBub3QgaGFuZGxpbmcKKyAgICAqIFBhcnRpYWwgd29ya2Fyb3VuZCBmb3IgYGBkaWZmbGli
LnVuaWZpZWRfZGlmZmBgIG5vdCBoYW5kbGluZwogICAgICAgdHJhaWxpbmcgbmV3bGluZXMgcHJv
cGVybHkuCiAKIAoK

=== modified file README // last-changed:john@arbash-meinel.com-20070508200344-
... p77ycd72josdljry // encoding:base64
LS0tIFJFQURNRQorKysgUkVBRE1FCkBAIC0xLDYgKzEsNiBAQAotPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotUkVBRE1FIGZvciBCYXphYXIgREVWRUxPUE1FTlQgVkVSU0lP
TgotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorPT09PT09PT09PT09PT09
PT09PT09PT09PT0KK1JFQURNRSBmb3IgQmF6YWFyIDAuMTctZGV2Cis9PT09PT09PT09PT09PT09
PT09PT09PT09PQogCiBCYXphYXIgaXMgYSBkZWNlbnRyYWxpemVkIHJldmlzaW9uIGNvbnRyb2wg
c3lzdGVtLCBkZXNpZ25lZCB0byBiZSBlYXN5CiBmb3IgZGV2ZWxvcGVycyBhbmQgZW5kIHVzZXJz
IGFsaWtlLgoK

=== modified file bzr // last-changed:john@arbash-meinel.com-20070508200344-p77
... ycd72josdljry // encoding:base64
LS0tIGJ6cgorKysgYnpyCkBAIC03MywxMCArNzMsMTQgQEAKIGltcG9ydCBienJsaWIubGF6eV9y
ZWdleAogYnpybGliLmxhenlfcmVnZXguaW5zdGFsbF9sYXp5X2NvbXBpbGUoKQogCitpbXBvcnQg
YnpybGliLmJyZWFraW4KK2J6cmxpYi5icmVha2luLmhvb2tfc2lncXVpdCgpCisKIGltcG9ydCBi
enJsaWIuZGVjb3JhdG9ycwogaWYgKCctLWxzcHJvZicgaW4gc3lzLmFyZ3YKICAgICBvciAnLS1s
c3Byb2YtZmlsZScgaW4gc3lzLmFyZ3YKLSAgICBvciAnLS1wcm9maWxlJyBpbiBzeXMuYXJndik6
CisgICAgb3IgJy0tcHJvZmlsZScgaW4gc3lzLmFyZ3YKKyAgICBvciAnLS1sc3Byb2YtdGltZWQn
IGluIHN5cy5hcmd2KToKICAgICBienJsaWIuZGVjb3JhdG9ycy51c2VfcHJldHR5X2RlY29yYXRv
cnMoKQogZWxzZToKICAgICBienJsaWIuZGVjb3JhdG9ycy51c2VfZmFzdF9kZWNvcmF0b3JzKCkK
QEAgLTg0LDcgKzg4LDcgQEAKIGltcG9ydCBienJsaWIuY29tbWFuZHMKIGltcG9ydCBienJsaWIu
dHJhY2UKIAotaWYgYnpybGliLnZlcnNpb25faW5mb1s6M10gIT0gKDAsIDE2LCAwKToKK2lmIGJ6
cmxpYi52ZXJzaW9uX2luZm9bOjNdICE9ICgwLCAxNywgMCk6CiAgICAgc3lzLnN0ZGVyci53cml0
ZSgiYnpyOiBXQVJOSU5HOiBienJsaWIgdmVyc2lvbiBkb2Vzbid0IG1hdGNoIHRoZSBienIgcHJv
Z3JhbS5cbiIKICAgICAgICAgICAgICJUaGlzIG1heSBpbmRpY2F0ZSBhbiBpbnN0YWxsYXRpb24g
cHJvYmxlbS5cbiIKICAgICAgICAgICAgICJienJsaWIgZnJvbSAlcyBpcyB2ZXJzaW9uICVyXG4i
Cgo=

=== modified file bzrlib/__init__.py // last-changed:john@arbash-meinel.com-200
... 70508200344-p77ycd72josdljry // encoding:base64
LS0tIGJ6cmxpYi9fX2luaXRfXy5weQorKysgYnpybGliL19faW5pdF9fLnB5CkBAIC0zNSw3ICsz
NSw3IEBACiAjIFB5dGhvbiB2ZXJzaW9uIDIuMCBpcyAoMiwgMCwgMCwgJ2ZpbmFsJywgMCkuIiAg
QWRkaXRpb25hbGx5IHdlIHVzZSBhCiAjIHJlbGVhc2VsZXZlbCBvZiAnZGV2JyBmb3IgdW5yZWxl
YXNlZCB1bmRlci1kZXZlbG9wbWVudCBjb2RlLgogCi12ZXJzaW9uX2luZm8gPSAoMCwgMTYsIDAs
ICdkZXYnLCAwKQordmVyc2lvbl9pbmZvID0gKDAsIDE3LCAwLCAnZGV2JywgMCkKIAogaWYgdmVy
c2lvbl9pbmZvWzNdID09ICdmaW5hbCc6CiAgICAgdmVyc2lvbl9zdHJpbmcgPSAnJWQuJWQuJWQn
ICUgdmVyc2lvbl9pbmZvWzozXQoK

=== modified file bzrlib/annotate.py // last-changed:john@arbash-meinel.com-200
... 70417211929-rchob1jeahy30cj0 // encoding:base64
LS0tIGJ6cmxpYi9hbm5vdGF0ZS5weQorKysgYnpybGliL2Fubm90YXRlLnB5CkBAIC04OSwxNiAr
ODksNyBAQAogICAgIFRoaXMgaW5jbHVkZXMgZGV0YWlsZWQgaW5mb3JtYXRpb24sIHN1Y2ggYXMg
dGhlIGNvbW1pdHRlciBuYW1lLCBhbmQKICAgICBkYXRlIHN0cmluZyBmb3IgdGhlIGNvbW1pdCwg
cmF0aGVyIHRoYW4ganVzdCB0aGUgcmV2aXNpb24gaWQuCiAgICAgIiIiCi0gICAgYnJhbmNoX2xh
c3RfcmV2aXNpb24gPSBicmFuY2gubGFzdF9yZXZpc2lvbigpCi0gICAgcmV2aXNpb25fZ3JhcGgg
PSBicmFuY2gucmVwb3NpdG9yeS5nZXRfcmV2aXNpb25fZ3JhcGgoYnJhbmNoX2xhc3RfcmV2aXNp
b24pCi0gICAgbWVyZ2Vfc29ydGVkX3JldmlzaW9ucyA9IHRzb3J0Lm1lcmdlX3NvcnQoCi0gICAg
ICAgIHJldmlzaW9uX2dyYXBoLAotICAgICAgICBicmFuY2hfbGFzdF9yZXZpc2lvbiwKLSAgICAg
ICAgTm9uZSwKLSAgICAgICAgZ2VuZXJhdGVfcmV2bm89VHJ1ZSkKLSAgICByZXZpc2lvbl9pZF90
b19yZXZubyA9IGRpY3QoKHJldl9pZCwgcmV2bm8pCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGZvciBzZXFfbnVtLCByZXZfaWQsIGRlcHRoLCByZXZubywgZW5kX29mX21lcmdlCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbiBtZXJnZV9zb3J0ZWRfcmV2aXNpb25z
KQorICAgIHJldmlzaW9uX2lkX3RvX3Jldm5vID0gYnJhbmNoLmdldF9yZXZpc2lvbl9pZF90b19y
ZXZub19tYXAoKQogICAgIHcgPSBicmFuY2gucmVwb3NpdG9yeS53ZWF2ZV9zdG9yZS5nZXRfd2Vh
dmUoZmlsZV9pZCwKICAgICAgICAgYnJhbmNoLnJlcG9zaXRvcnkuZ2V0X3RyYW5zYWN0aW9uKCkp
CiAgICAgbGFzdF9vcmlnaW4gPSBOb25lCgo=

=== modified file bzrlib/branch.py // last-changed:john@arbash-meinel.com-20070
... 508200050-4imwmtzep8fx5v7w // encoding:base64
LS0tIGJ6cmxpYi9icmFuY2gucHkKKysrIGJ6cmxpYi9icmFuY2gucHkKQEAgLTM1LDYgKzM1LDcg
QEAKICAgICAgICAgcmV2aXNpb24gYXMgX21vZF9yZXZpc2lvbiwKICAgICAgICAgdHJhbnNwb3J0
LAogICAgICAgICB0cmVlLAorICAgICAgICB0c29ydCwKICAgICAgICAgdWksCiAgICAgICAgIHVy
bHV0aWxzLAogICAgICAgICApCkBAIC0xMDAsNiArMTAxLDcgQEAKICAgICBkZWYgX19pbml0X18o
c2VsZiwgKmlnbm9yZWQsICoqaWdub3JlZF90b28pOgogICAgICAgICBzZWxmLnRhZ3MgPSBzZWxm
Ll9tYWtlX3RhZ3MoKQogICAgICAgICBzZWxmLl9yZXZpc2lvbl9oaXN0b3J5X2NhY2hlID0gTm9u
ZQorICAgICAgICBzZWxmLl9yZXZpc2lvbl9pZF90b19yZXZub19jYWNoZSA9IE5vbmUKIAogICAg
IGRlZiBicmVha19sb2NrKHNlbGYpOgogICAgICAgICAiIiJCcmVhayBhIGxvY2sgaWYgb25lIGlz
IHByZXNlbnQgZnJvbSBhbm90aGVyIGluc3RhbmNlLgpAQCAtMTk1LDYgKzE5Nyw2NCBAQAogICAg
IGRlZiBnZXRfcGh5c2ljYWxfbG9ja19zdGF0dXMoc2VsZik6CiAgICAgICAgIHJhaXNlIE5vdElt
cGxlbWVudGVkRXJyb3Ioc2VsZi5nZXRfcGh5c2ljYWxfbG9ja19zdGF0dXMpCiAKKyAgICBAbmVl
ZHNfcmVhZF9sb2NrCisgICAgZGVmIGdldF9yZXZpc2lvbl9pZF90b19yZXZub19tYXAoc2VsZik6
CisgICAgICAgICIiIlJldHVybiB0aGUgcmV2aXNpb25faWQgPT4gZG90dGVkIHJldm5vIG1hcC4K
KworICAgICAgICBUaGlzIHdpbGwgYmUgcmVnZW5lcmF0ZWQgb24gZGVtYW5kLCBidXQgd2lsbCBi
ZSBjYWNoZWQuCisKKyAgICAgICAgOnJldHVybjogQSBkaWN0aW9uYXJ5IG1hcHBpbmcgcmV2aXNp
b25faWQgPT4gZG90dGVkIHJldm5vLgorICAgICAgICAgICAgVGhpcyBkaWN0aW9uYXJ5IHNob3Vs
ZCBub3QgYmUgbW9kaWZpZWQgYnkgdGhlIGNhbGxlci4KKyAgICAgICAgIiIiCisgICAgICAgIGlm
IHNlbGYuX3JldmlzaW9uX2lkX3RvX3Jldm5vX2NhY2hlIGlzIG5vdCBOb25lOgorICAgICAgICAg
ICAgbWFwcGluZyA9IHNlbGYuX3JldmlzaW9uX2lkX3RvX3Jldm5vX2NhY2hlCisgICAgICAgIGVs
c2U6CisgICAgICAgICAgICBtYXBwaW5nID0gc2VsZi5fZ2VuX3Jldm5vX21hcCgpCisgICAgICAg
ICAgICBzZWxmLl9jYWNoZV9yZXZpc2lvbl9pZF90b19yZXZubyhtYXBwaW5nKQorICAgICAgICAj
IFRPRE86IGphbSAyMDA3MDQxNyBTaW5jZSB0aGlzIGlzIGJlaW5nIGNhY2hlZCwgc2hvdWxkIHdl
IGJlIHJldHVybmluZworICAgICAgICAjICAgICAgIGEgY29weT8KKyAgICAgICAgIyBJIHdvdWxk
IHJhdGhlciBub3QsIGFuZCBpbnN0ZWFkIGp1c3QgZGVjbGFyZSB0aGF0IHVzZXJzIHNob3VsZCBu
b3QKKyAgICAgICAgIyBtb2RpZnkgdGhlIHJldHVybiB2YWx1ZS4KKyAgICAgICAgcmV0dXJuIG1h
cHBpbmcKKworICAgIGRlZiBfZ2VuX3Jldm5vX21hcChzZWxmKToKKyAgICAgICAgIiIiQ3JlYXRl
IGEgbmV3IG1hcHBpbmcgZnJvbSByZXZpc2lvbiBpZHMgdG8gZG90dGVkIHJldm5vcy4KKworICAg
ICAgICBEb3R0ZWQgcmV2bm9zIGFyZSBnZW5lcmF0ZWQgYmFzZWQgb24gdGhlIGN1cnJlbnQgdGlw
IGluIHRoZSByZXZpc2lvbgorICAgICAgICBoaXN0b3J5LgorICAgICAgICBUaGlzIGlzIHRoZSB3
b3JrZXIgZnVuY3Rpb24gZm9yIGdldF9yZXZpc2lvbl9pZF90b19yZXZub19tYXAsIHdoaWNoCisg
ICAgICAgIGp1c3QgY2FjaGVzIHRoZSByZXR1cm4gdmFsdWUuCisKKyAgICAgICAgOnJldHVybjog
QSBkaWN0aW9uYXJ5IG1hcHBpbmcgcmV2aXNpb25faWQgPT4gZG90dGVkIHJldm5vLgorICAgICAg
ICAiIiIKKyAgICAgICAgbGFzdF9yZXZpc2lvbiA9IHNlbGYubGFzdF9yZXZpc2lvbigpCisgICAg
ICAgIHJldmlzaW9uX2dyYXBoID0gc2VsZi5yZXBvc2l0b3J5LmdldF9yZXZpc2lvbl9ncmFwaChs
YXN0X3JldmlzaW9uKQorICAgICAgICBtZXJnZV9zb3J0ZWRfcmV2aXNpb25zID0gdHNvcnQubWVy
Z2Vfc29ydCgKKyAgICAgICAgICAgIHJldmlzaW9uX2dyYXBoLAorICAgICAgICAgICAgbGFzdF9y
ZXZpc2lvbiwKKyAgICAgICAgICAgIE5vbmUsCisgICAgICAgICAgICBnZW5lcmF0ZV9yZXZubz1U
cnVlKQorICAgICAgICByZXZpc2lvbl9pZF90b19yZXZubyA9IGRpY3QoKHJldl9pZCwgcmV2bm8p
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3Igc2VxX251bSwgcmV2X2lk
LCBkZXB0aCwgcmV2bm8sIGVuZF9vZl9tZXJnZQorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGluIG1lcmdlX3NvcnRlZF9yZXZpc2lvbnMpCisgICAgICAgIHJldHVybiByZXZp
c2lvbl9pZF90b19yZXZubworCisgICAgZGVmIGxlYXZlX2xvY2tfaW5fcGxhY2Uoc2VsZik6Cisg
ICAgICAgICIiIlRlbGwgdGhpcyBicmFuY2ggb2JqZWN0IG5vdCB0byByZWxlYXNlIHRoZSBwaHlz
aWNhbCBsb2NrIHdoZW4gdGhpcworICAgICAgICBvYmplY3QgaXMgdW5sb2NrZWQuCisgICAgICAg
IAorICAgICAgICBJZiBsb2NrX3dyaXRlIGRvZXNuJ3QgcmV0dXJuIGEgdG9rZW4sIHRoZW4gdGhp
cyBtZXRob2QgaXMgbm90IHN1cHBvcnRlZC4KKyAgICAgICAgIiIiCisgICAgICAgIHNlbGYuY29u
dHJvbF9maWxlcy5sZWF2ZV9pbl9wbGFjZSgpCisKKyAgICBkZWYgZG9udF9sZWF2ZV9sb2NrX2lu
X3BsYWNlKHNlbGYpOgorICAgICAgICAiIiJUZWxsIHRoaXMgYnJhbmNoIG9iamVjdCB0byByZWxl
YXNlIHRoZSBwaHlzaWNhbCBsb2NrIHdoZW4gdGhpcworICAgICAgICBvYmplY3QgaXMgdW5sb2Nr
ZWQsIGV2ZW4gaWYgaXQgZGlkbid0IG9yaWdpbmFsbHkgYWNxdWlyZSBpdC4KKworICAgICAgICBJ
ZiBsb2NrX3dyaXRlIGRvZXNuJ3QgcmV0dXJuIGEgdG9rZW4sIHRoZW4gdGhpcyBtZXRob2QgaXMg
bm90IHN1cHBvcnRlZC4KKyAgICAgICAgIiIiCisgICAgICAgIHNlbGYuY29udHJvbF9maWxlcy5k
b250X2xlYXZlX2luX3BsYWNlKCkKKwogICAgIGRlZiBhYnNwYXRoKHNlbGYsIG5hbWUpOgogICAg
ICAgICAiIiJSZXR1cm4gYWJzb2x1dGUgZmlsZW5hbWUgZm9yIHNvbWV0aGluZyBpbiB0aGUgYnJh
bmNoCiAgICAgICAgIApAQCAtMzI4LDYgKzM4OCwxNCBAQAogICAgICAgICAiIiIKICAgICAgICAg
c2VsZi5fcmV2aXNpb25faGlzdG9yeV9jYWNoZSA9IHJldl9oaXN0b3J5CiAKKyAgICBkZWYgX2Nh
Y2hlX3JldmlzaW9uX2lkX3RvX3Jldm5vKHNlbGYsIHJldmlzaW9uX2lkX3RvX3Jldm5vKToKKyAg
ICAgICAgIiIiU2V0IHRoZSBjYWNoZWQgcmV2aXNpb25faWQgPT4gcmV2bm8gbWFwIHRvIHJldmlz
aW9uX2lkX3RvX3Jldm5vLgorCisgICAgICAgIFRoaXMgQVBJIGlzIHNlbWktcHVibGljOyBpdCBv
bmx5IGZvciB1c2UgYnkgc3ViY2xhc3NlcywgYWxsIG90aGVyIGNvZGUKKyAgICAgICAgc2hvdWxk
IGNvbnNpZGVyIGl0IHRvIGJlIHByaXZhdGUuCisgICAgICAgICIiIgorICAgICAgICBzZWxmLl9y
ZXZpc2lvbl9pZF90b19yZXZub19jYWNoZSA9IHJldmlzaW9uX2lkX3RvX3Jldm5vCisKICAgICBk
ZWYgX2NsZWFyX2NhY2hlZF9zdGF0ZShzZWxmKToKICAgICAgICAgIiIiQ2xlYXIgYW55IGNhY2hl
ZCBkYXRhIG9uIHRoaXMgYnJhbmNoLCBlLmcuIGNhY2hlZCByZXZpc2lvbiBoaXN0b3J5LgogCkBA
IC0zMzgsNiArNDA2LDcgQEAKICAgICAgICAgc2hvdWxkIGNvbnNpZGVyIGl0IHRvIGJlIHByaXZh
dGUuCiAgICAgICAgICIiIgogICAgICAgICBzZWxmLl9yZXZpc2lvbl9oaXN0b3J5X2NhY2hlID0g
Tm9uZQorICAgICAgICBzZWxmLl9yZXZpc2lvbl9pZF90b19yZXZub19jYWNoZSA9IE5vbmUKIAog
ICAgIGRlZiBfZ2VuX3JldmlzaW9uX2hpc3Rvcnkoc2VsZik6CiAgICAgICAgICIiIlJldHVybiBz
ZXF1ZW5jZSBvZiByZXZpc2lvbiBoYXNoZXMgb24gdG8gdGhpcyBicmFuY2guCkBAIC00NDUsNyAr
NTE0LDcgQEAKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgcmV0dXJuIGhpc3RvcnkuaW5kZXgo
cmV2aXNpb25faWQpICsgMQogICAgICAgICBleGNlcHQgVmFsdWVFcnJvcjoKLSAgICAgICAgICAg
IHJhaXNlIGJ6cmxpYi5lcnJvcnMuTm9TdWNoUmV2aXNpb24oc2VsZiwgcmV2aXNpb25faWQpCisg
ICAgICAgICAgICByYWlzZSBlcnJvcnMuTm9TdWNoUmV2aXNpb24oc2VsZiwgcmV2aXNpb25faWQp
CiAKICAgICBkZWYgZ2V0X3Jldl9pZChzZWxmLCByZXZubywgaGlzdG9yeT1Ob25lKToKICAgICAg
ICAgIiIiRmluZCB0aGUgcmV2aXNpb24gaWQgb2YgdGhlIHNwZWNpZmllZCByZXZuby4iIiIKQEAg
LTQ1NCw3ICs1MjMsNyBAQAogICAgICAgICBpZiBoaXN0b3J5IGlzIE5vbmU6CiAgICAgICAgICAg
ICBoaXN0b3J5ID0gc2VsZi5yZXZpc2lvbl9oaXN0b3J5KCkKICAgICAgICAgaWYgcmV2bm8gPD0g
MCBvciByZXZubyA+IGxlbihoaXN0b3J5KToKLSAgICAgICAgICAgIHJhaXNlIGJ6cmxpYi5lcnJv
cnMuTm9TdWNoUmV2aXNpb24oc2VsZiwgcmV2bm8pCisgICAgICAgICAgICByYWlzZSBlcnJvcnMu
Tm9TdWNoUmV2aXNpb24oc2VsZiwgcmV2bm8pCiAgICAgICAgIHJldHVybiBoaXN0b3J5W3Jldm5v
IC0gMV0KIAogICAgIGRlZiBwdWxsKHNlbGYsIHNvdXJjZSwgb3ZlcndyaXRlPUZhbHNlLCBzdG9w
X3JldmlzaW9uPU5vbmUpOgpAQCAtNTYzLDcgKzYzMiw4IEBACiAKICAgICBkZWYgZ2V0X3B1c2hf
bG9jYXRpb24oc2VsZik6CiAgICAgICAgICIiIlJldHVybiB0aGUgTm9uZSBvciB0aGUgbG9jYXRp
b24gdG8gcHVzaCB0aGlzIGJyYW5jaCB0by4iIiIKLSAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50
ZWRFcnJvcihzZWxmLmdldF9wdXNoX2xvY2F0aW9uKQorICAgICAgICBwdXNoX2xvYyA9IHNlbGYu
Z2V0X2NvbmZpZygpLmdldF91c2VyX29wdGlvbigncHVzaF9sb2NhdGlvbicpCisgICAgICAgIHJl
dHVybiBwdXNoX2xvYwogCiAgICAgZGVmIHNldF9wdXNoX2xvY2F0aW9uKHNlbGYsIGxvY2F0aW9u
KToKICAgICAgICAgIiIiU2V0IGEgbmV3IHB1c2ggbG9jYXRpb24gZm9yIHRoaXMgYnJhbmNoLiIi
IgpAQCAtNjkxLDcgKzc2MSw3IEBACiAKICAgICBkZWYgX2dldF9jaGVja291dF9mb3JtYXQoc2Vs
Zik6CiAgICAgICAgICIiIlJldHVybiB0aGUgbW9zdCBzdWl0YWJsZSBtZXRhZGlyIGZvciBhIGNo
ZWNrb3V0IG9mIHRoaXMgYnJhbmNoLgotICAgICAgICBXZWF2ZXMgYXJlIHVzZWQgaWYgdGhpcyBi
cmFuY2gncyByZXBvc3RvcnkgdXNlcyB3ZWF2ZXMuCisgICAgICAgIFdlYXZlcyBhcmUgdXNlZCBp
ZiB0aGlzIGJyYW5jaCdzIHJlcG9zaXRvcnkgdXNlcyB3ZWF2ZXMuCiAgICAgICAgICIiIgogICAg
ICAgICBpZiBpc2luc3RhbmNlKHNlbGYuYnpyZGlyLCBienJkaXIuQnpyRGlyUHJlU3BsaXRPdXQp
OgogICAgICAgICAgICAgZnJvbSBienJsaWIucmVwb2ZtdCBpbXBvcnQgd2VhdmVyZXBvCkBAIC03
MTMsMTAgKzc4Myw3IEBACiAgICAgICAgIDpyZXR1cm46IFRoZSB0cmVlIG9mIHRoZSBjcmVhdGVk
IGNoZWNrb3V0CiAgICAgICAgICIiIgogICAgICAgICB0ID0gdHJhbnNwb3J0LmdldF90cmFuc3Bv
cnQodG9fbG9jYXRpb24pCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIHQubWtkaXIoJy4nKQot
ICAgICAgICBleGNlcHQgZXJyb3JzLkZpbGVFeGlzdHM6Ci0gICAgICAgICAgICBwYXNzCisgICAg
ICAgIHQuZW5zdXJlX2Jhc2UoKQogICAgICAgICBpZiBsaWdodHdlaWdodDoKICAgICAgICAgICAg
IGZvcm1hdCA9IHNlbGYuX2dldF9jaGVja291dF9mb3JtYXQoKQogICAgICAgICAgICAgY2hlY2tv
dXQgPSBmb3JtYXQuaW5pdGlhbGl6ZV9vbl90cmFuc3BvcnQodCkKQEAgLTc5Nyw2ICs4NjQsMTgg
QEAKICAgICAgICAgIiIiUmV0dXJuIHRoZSBjdXJyZW50IGRlZmF1bHQgZm9ybWF0LiIiIgogICAg
ICAgICByZXR1cm4ga2xhc3MuX2RlZmF1bHRfZm9ybWF0CiAKKyAgICBkZWYgZ2V0X3JlZmVyZW5j
ZShzZWxmLCBhX2J6cmRpcik6CisgICAgICAgICIiIkdldCB0aGUgdGFyZ2V0IHJlZmVyZW5jZSBv
ZiB0aGUgYnJhbmNoIGluIGFfYnpyZGlyLgorCisgICAgICAgIGZvcm1hdCBwcm9iaW5nIG11c3Qg
aGF2ZSBiZWVuIGNvbXBsZXRlZCBiZWZvcmUgY2FsbGluZworICAgICAgICB0aGlzIG1ldGhvZCAt
IGl0IGlzIGFzc3VtZWQgdGhhdCB0aGUgZm9ybWF0IG9mIHRoZSBicmFuY2gKKyAgICAgICAgaW4g
YV9ienJkaXIgaXMgY29ycmVjdC4KKworICAgICAgICA6cGFyYW0gYV9ienJkaXI6IFRoZSBienJk
aXIgdG8gZ2V0IHRoZSBicmFuY2ggZGF0YSBmcm9tLgorICAgICAgICA6cmV0dXJuOiBOb25lIGlm
IHRoZSBicmFuY2ggaXMgbm90IGEgcmVmZXJlbmNlIGJyYW5jaC4KKyAgICAgICAgIiIiCisgICAg
ICAgIHJldHVybiBOb25lCisKICAgICBkZWYgZ2V0X2Zvcm1hdF9zdHJpbmcoc2VsZik6CiAgICAg
ICAgICIiIlJldHVybiB0aGUgQVNDSUkgZm9ybWF0IHN0cmluZyB0aGF0IGlkZW50aWZpZXMgdGhp
cyBmb3JtYXQuIiIiCiAgICAgICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3Ioc2VsZi5nZXRf
Zm9ybWF0X3N0cmluZykKQEAgLTkxOCw3ICs5OTcsNyBAQAogICAgICAgICAjIChwdXNoX3Jlc3Vs
dCkKICAgICAgICAgIyBjb250YWluaW5nIHRoZSBtZW1iZXJzCiAgICAgICAgICMgKHNvdXJjZSwg
bG9jYWwsIG1hc3Rlciwgb2xkX3Jldm5vLCBvbGRfcmV2aWQsIG5ld19yZXZubywgbmV3X3Jldmlk
KQotICAgICAgICAjIHdoZXJlIGxvY2FsIGlzIHRoZSBsb2NhbCBicmFuY2ggb3IgTm9uZSwgbWFz
dGVyIGlzIHRoZSB0YXJnZXQgCisgICAgICAgICMgd2hlcmUgbG9jYWwgaXMgdGhlIGxvY2FsIHRh
cmdldCBicmFuY2ggb3IgTm9uZSwgbWFzdGVyIGlzIHRoZSB0YXJnZXQgCiAgICAgICAgICMgbWFz
dGVyIGJyYW5jaCwgYW5kIHRoZSByZXN0IHNob3VsZCBiZSBzZWxmIGV4cGxhbmF0b3J5LiBUaGUg
c291cmNlCiAgICAgICAgICMgaXMgcmVhZCBsb2NrZWQgYW5kIHRoZSB0YXJnZXQgYnJhbmNoZXMg
d3JpdGUgbG9ja2VkLiBTb3VyY2Ugd2lsbAogICAgICAgICAjIGJlIHRoZSBsb2NhbCBsb3ctbGF0
ZW5jeSBicmFuY2guCkBAIC0xMDMzLDEzICsxMTEyLDE2IEBACiAgICAgICAgIGlmIG5vdCBfZm91
bmQ6CiAgICAgICAgICAgICBmb3JtYXQgPSBCcmFuY2hGb3JtYXQuZmluZF9mb3JtYXQoYV9ienJk
aXIpCiAgICAgICAgICAgICBhc3NlcnQgZm9ybWF0Ll9fY2xhc3NfXyA9PSBzZWxmLl9fY2xhc3Nf
XwotICAgICAgICB0cmFuc3BvcnQgPSBhX2J6cmRpci5nZXRfYnJhbmNoX3RyYW5zcG9ydChOb25l
KQotICAgICAgICBjb250cm9sX2ZpbGVzID0gbG9ja2FibGVfZmlsZXMuTG9ja2FibGVGaWxlcyh0
cmFuc3BvcnQsICdsb2NrJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgbG9ja2Rpci5Mb2NrRGlyKQotICAgICAgICByZXR1cm4gQnpyQnJhbmNo
NShfZm9ybWF0PXNlbGYsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIF9jb250cm9sX2ZpbGVz
PWNvbnRyb2xfZmlsZXMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIGFfYnpyZGlyPWFfYnpy
ZGlyLAotICAgICAgICAgICAgICAgICAgICAgICAgICBfcmVwb3NpdG9yeT1hX2J6cmRpci5maW5k
X3JlcG9zaXRvcnkoKSkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgdHJhbnNwb3J0ID0gYV9i
enJkaXIuZ2V0X2JyYW5jaF90cmFuc3BvcnQoTm9uZSkKKyAgICAgICAgICAgIGNvbnRyb2xfZmls
ZXMgPSBsb2NrYWJsZV9maWxlcy5Mb2NrYWJsZUZpbGVzKHRyYW5zcG9ydCwgJ2xvY2snLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9j
a2Rpci5Mb2NrRGlyKQorICAgICAgICAgICAgcmV0dXJuIEJ6ckJyYW5jaDUoX2Zvcm1hdD1zZWxm
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX2NvbnRyb2xfZmlsZXM9Y29udHJvbF9m
aWxlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFfYnpyZGlyPWFfYnpyZGlyLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX3JlcG9zaXRvcnk9YV9ienJkaXIuZmluZF9y
ZXBvc2l0b3J5KCkpCisgICAgICAgIGV4Y2VwdCBOb1N1Y2hGaWxlOgorICAgICAgICAgICAgcmFp
c2UgTm90QnJhbmNoRXJyb3IocGF0aD10cmFuc3BvcnQuYmFzZSkKIAogCiBjbGFzcyBCenJCcmFu
Y2hGb3JtYXQ2KEJ6ckJyYW5jaEZvcm1hdDUpOgpAQCAtMTEwOSw2ICsxMTkxLDExIEBACiAgICAg
ICAgICIiIlNlZSBCcmFuY2hGb3JtYXQuZ2V0X2Zvcm1hdF9kZXNjcmlwdGlvbigpLiIiIgogICAg
ICAgICByZXR1cm4gIkNoZWNrb3V0IHJlZmVyZW5jZSBmb3JtYXQgMSIKICAgICAgICAgCisgICAg
ZGVmIGdldF9yZWZlcmVuY2Uoc2VsZiwgYV9ienJkaXIpOgorICAgICAgICAiIiJTZWUgQnJhbmNo
Rm9ybWF0LmdldF9yZWZlcmVuY2UoKS4iIiIKKyAgICAgICAgdHJhbnNwb3J0ID0gYV9ienJkaXIu
Z2V0X2JyYW5jaF90cmFuc3BvcnQoTm9uZSkKKyAgICAgICAgcmV0dXJuIHRyYW5zcG9ydC5nZXQo
J2xvY2F0aW9uJykucmVhZCgpCisKICAgICBkZWYgaW5pdGlhbGl6ZShzZWxmLCBhX2J6cmRpciwg
dGFyZ2V0X2JyYW5jaD1Ob25lKToKICAgICAgICAgIiIiQ3JlYXRlIGEgYnJhbmNoIG9mIHRoaXMg
Zm9ybWF0IGluIGFfYnpyZGlyLiIiIgogICAgICAgICBpZiB0YXJnZXRfYnJhbmNoIGlzIE5vbmU6
CkBAIC0xMTM2LDcgKzEyMjMsNyBAQAogICAgICAgICAgICAgIyBlbWl0IHNvbWUgc29ydCBvZiB3
YXJuaW5nL2Vycm9yIHRvIHRoZSBjYWxsZXIgPyEKICAgICAgICAgcmV0dXJuIGNsb25lCiAKLSAg
ICBkZWYgb3BlbihzZWxmLCBhX2J6cmRpciwgX2ZvdW5kPUZhbHNlKToKKyAgICBkZWYgb3Blbihz
ZWxmLCBhX2J6cmRpciwgX2ZvdW5kPUZhbHNlLCBsb2NhdGlvbj1Ob25lKToKICAgICAgICAgIiIi
UmV0dXJuIHRoZSBicmFuY2ggdGhhdCB0aGUgYnJhbmNoIHJlZmVyZW5jZSBpbiBhX2J6cmRpciBw
b2ludHMgYXQuCiAKICAgICAgICAgX2ZvdW5kIGlzIGEgcHJpdmF0ZSBwYXJhbWV0ZXIsIGRvIG5v
dCB1c2UgaXQuIEl0IGlzIHVzZWQgdG8gaW5kaWNhdGUKQEAgLTExNDUsOCArMTIzMiw5IEBACiAg
ICAgICAgIGlmIG5vdCBfZm91bmQ6CiAgICAgICAgICAgICBmb3JtYXQgPSBCcmFuY2hGb3JtYXQu
ZmluZF9mb3JtYXQoYV9ienJkaXIpCiAgICAgICAgICAgICBhc3NlcnQgZm9ybWF0Ll9fY2xhc3Nf
XyA9PSBzZWxmLl9fY2xhc3NfXwotICAgICAgICB0cmFuc3BvcnQgPSBhX2J6cmRpci5nZXRfYnJh
bmNoX3RyYW5zcG9ydChOb25lKQotICAgICAgICByZWFsX2J6cmRpciA9IGJ6cmRpci5CenJEaXIu
b3Blbih0cmFuc3BvcnQuZ2V0KCdsb2NhdGlvbicpLnJlYWQoKSkKKyAgICAgICAgaWYgbG9jYXRp
b24gaXMgTm9uZToKKyAgICAgICAgICAgIGxvY2F0aW9uID0gc2VsZi5nZXRfcmVmZXJlbmNlKGFf
YnpyZGlyKQorICAgICAgICByZWFsX2J6cmRpciA9IGJ6cmRpci5CenJEaXIub3Blbihsb2NhdGlv
bikKICAgICAgICAgcmVzdWx0ID0gcmVhbF9ienJkaXIub3Blbl9icmFuY2goKQogICAgICAgICAj
IHRoaXMgY2hhbmdlcyB0aGUgYmVoYXZpb3VyIG9mIHJlc3VsdC5jbG9uZSB0byBjcmVhdGUgYSBu
ZXcgcmVmZXJlbmNlCiAgICAgICAgICMgcmF0aGVyIHRoYW4gYSBjb3B5IG9mIHRoZSBjb250ZW50
IG9mIHRoZSBicmFuY2guCkBAIC0xMjIzLDEzICsxMzExLDE0IEBACiAgICAgZGVmIGlzX2xvY2tl
ZChzZWxmKToKICAgICAgICAgcmV0dXJuIHNlbGYuY29udHJvbF9maWxlcy5pc19sb2NrZWQoKQog
Ci0gICAgZGVmIGxvY2tfd3JpdGUoc2VsZik6Ci0gICAgICAgIHNlbGYucmVwb3NpdG9yeS5sb2Nr
X3dyaXRlKCkKKyAgICBkZWYgbG9ja193cml0ZShzZWxmLCB0b2tlbj1Ob25lKToKKyAgICAgICAg
cmVwb190b2tlbiA9IHNlbGYucmVwb3NpdG9yeS5sb2NrX3dyaXRlKCkKICAgICAgICAgdHJ5Ogot
ICAgICAgICAgICAgc2VsZi5jb250cm9sX2ZpbGVzLmxvY2tfd3JpdGUoKQorICAgICAgICAgICAg
dG9rZW4gPSBzZWxmLmNvbnRyb2xfZmlsZXMubG9ja193cml0ZSh0b2tlbj10b2tlbikKICAgICAg
ICAgZXhjZXB0OgogICAgICAgICAgICAgc2VsZi5yZXBvc2l0b3J5LnVubG9jaygpCiAgICAgICAg
ICAgICByYWlzZQorICAgICAgICByZXR1cm4gdG9rZW4KIAogICAgIGRlZiBsb2NrX3JlYWQoc2Vs
Zik6CiAgICAgICAgIHNlbGYucmVwb3NpdG9yeS5sb2NrX3JlYWQoKQpAQCAtMTI4Niw2ICsxMzc1
LDcgQEAKICAgICBkZWYgc2V0X3JldmlzaW9uX2hpc3Rvcnkoc2VsZiwgcmV2X2hpc3RvcnkpOgog
ICAgICAgICAiIiJTZWUgQnJhbmNoLnNldF9yZXZpc2lvbl9oaXN0b3J5LiIiIgogICAgICAgICBy
ZXZfaGlzdG9yeSA9IFtvc3V0aWxzLnNhZmVfcmV2aXNpb25faWQocikgZm9yIHIgaW4gcmV2X2hp
c3RvcnldCisgICAgICAgIHNlbGYuX2NsZWFyX2NhY2hlZF9zdGF0ZSgpCiAgICAgICAgIHNlbGYu
X3dyaXRlX3JldmlzaW9uX2hpc3RvcnkocmV2X2hpc3RvcnkpCiAgICAgICAgIHNlbGYuX2NhY2hl
X3JldmlzaW9uX2hpc3RvcnkocmV2X2hpc3RvcnkpCiAgICAgICAgIGZvciBob29rIGluIEJyYW5j
aC5ob29rc1snc2V0X3JoJ106CkBAIC0xMzgzLDEzICsxNDczLDE0IEBACiAKICAgICBAbmVlZHNf
d3JpdGVfbG9jawogICAgIGRlZiBwdWxsKHNlbGYsIHNvdXJjZSwgb3ZlcndyaXRlPUZhbHNlLCBz
dG9wX3JldmlzaW9uPU5vbmUsCi0gICAgICAgIF9ob29rX21hc3Rlcj1Ob25lLCBfcnVuX2hvb2tz
PVRydWUpOgorICAgICAgICAgICAgIF9ob29rX21hc3Rlcj1Ob25lLCBydW5faG9va3M9VHJ1ZSk6
CiAgICAgICAgICIiIlNlZSBCcmFuY2gucHVsbC4KIAogICAgICAgICA6cGFyYW0gX2hvb2tfbWFz
dGVyOiBQcml2YXRlIHBhcmFtZXRlciAtIHNldCB0aGUgYnJhbmNoIHRvIAogICAgICAgICAgICAg
YmUgc3VwcGxpZWQgYXMgdGhlIG1hc3RlciB0byBwdXNoIGhvb2tzLgotICAgICAgICA6cGFyYW0g
X3J1bl9ob29rczogUHJpdmF0ZSBwYXJhbWV0ZXIgLSBhbGxvdyBkaXNhYmxpbmcgb2YKLSAgICAg
ICAgICAgIGhvb2tzLCB1c2VkIHdoZW4gcHVzaGluZyB0byBhIG1hc3RlciBicmFuY2guCisgICAg
ICAgIDpwYXJhbSBydW5faG9va3M6IFByaXZhdGUgcGFyYW1ldGVyIC0gaWYgZmFsc2UsIHRoaXMg
YnJhbmNoCisgICAgICAgICAgICBpcyBiZWluZyBjYWxsZWQgYmVjYXVzZSBpdCdzIHRoZSBtYXN0
ZXIgb2YgdGhlIHByaW1hcnkgYnJhbmNoLAorICAgICAgICAgICAgc28gaXQgc2hvdWxkIG5vdCBy
dW4gaXRzIGhvb2tzLgogICAgICAgICAiIiIKICAgICAgICAgcmVzdWx0ID0gUHVsbFJlc3VsdCgp
CiAgICAgICAgIHJlc3VsdC5zb3VyY2VfYnJhbmNoID0gc291cmNlCkBAIC0xNDE0LDcgKzE1MDUs
NyBAQAogICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICByZXN1bHQubWFzdGVyX2Jy
YW5jaCA9IHNlbGYKICAgICAgICAgICAgICAgICByZXN1bHQubG9jYWxfYnJhbmNoID0gTm9uZQot
ICAgICAgICAgICAgaWYgX3J1bl9ob29rczoKKyAgICAgICAgICAgIGlmIHJ1bl9ob29rczoKICAg
ICAgICAgICAgICAgICBmb3IgaG9vayBpbiBCcmFuY2guaG9va3NbJ3Bvc3RfcHVsbCddOgogICAg
ICAgICAgICAgICAgICAgICBob29rKHJlc3VsdCkKICAgICAgICAgZmluYWxseToKQEAgLTE0MzIs
NDAgKzE1MjMsOTEgQEAKIAogICAgIEBuZWVkc19yZWFkX2xvY2sKICAgICBkZWYgcHVzaChzZWxm
LCB0YXJnZXQsIG92ZXJ3cml0ZT1GYWxzZSwgc3RvcF9yZXZpc2lvbj1Ob25lLAotICAgICAgICBf
aG9va19tYXN0ZXI9Tm9uZSwgX3J1bl9ob29rcz1UcnVlKToKKyAgICAgICAgICAgICBfb3ZlcnJp
ZGVfaG9va19zb3VyY2VfYnJhbmNoPU5vbmUpOgogICAgICAgICAiIiJTZWUgQnJhbmNoLnB1c2gu
CisKKyAgICAgICAgVGhpcyBpcyB0aGUgYmFzaWMgY29uY3JldGUgaW1wbGVtZW50YXRpb24gb2Yg
cHVzaCgpCisKKyAgICAgICAgOnBhcmFtIF9vdmVycmlkZV9ob29rX3NvdXJjZV9icmFuY2g6IElm
IHNwZWNpZmllZCwgcnVuCisgICAgICAgIHRoZSBob29rcyBwYXNzaW5nIHRoaXMgQnJhbmNoIGFz
IHRoZSBzb3VyY2UsIHJhdGhlciB0aGFuIHNlbGYuICAKKyAgICAgICAgVGhpcyBpcyBmb3IgdXNl
IG9mIFJlbW90ZUJyYW5jaCwgd2hlcmUgcHVzaCBpcyBkZWxlZ2F0ZWQgdG8gdGhlCisgICAgICAg
IHVuZGVybHlpbmcgdmZzLWJhc2VkIEJyYW5jaC4gCisgICAgICAgICIiIgorICAgICAgICAjIFRP
RE86IFB1YmxpYyBvcHRpb24gdG8gZGlzYWJsZSBydW5uaW5nIGhvb2tzIC0gc2hvdWxkIGJlIHRy
aXZpYWwgYnV0CisgICAgICAgICMgbmVlZHMgdGVzdHMuCisgICAgICAgIHRhcmdldC5sb2NrX3dy
aXRlKCkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgcmVzdWx0ID0gc2VsZi5fcHVzaF93aXRo
X2JvdW5kX2JyYW5jaGVzKHRhcmdldCwgb3ZlcndyaXRlLAorICAgICAgICAgICAgICAgICAgICBz
dG9wX3JldmlzaW9uLAorICAgICAgICAgICAgICAgICAgICBfb3ZlcnJpZGVfaG9va19zb3VyY2Vf
YnJhbmNoPV9vdmVycmlkZV9ob29rX3NvdXJjZV9icmFuY2gpCisgICAgICAgICAgICByZXR1cm4g
cmVzdWx0CisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICB0YXJnZXQudW5sb2NrKCkKKwor
ICAgIGRlZiBfcHVzaF93aXRoX2JvdW5kX2JyYW5jaGVzKHNlbGYsIHRhcmdldCwgb3ZlcndyaXRl
LAorICAgICAgICAgICAgc3RvcF9yZXZpc2lvbiwKKyAgICAgICAgICAgIF9vdmVycmlkZV9ob29r
X3NvdXJjZV9icmFuY2g9Tm9uZSk6CisgICAgICAgICIiIlB1c2ggZnJvbSBzZWxmIGludG8gdGFy
Z2V0LCBhbmQgaW50byB0YXJnZXQncyBtYXN0ZXIgaWYgYW55LgogICAgICAgICAKLSAgICAgICAg
OnBhcmFtIF9ob29rX21hc3RlcjogUHJpdmF0ZSBwYXJhbWV0ZXIgLSBzZXQgdGhlIGJyYW5jaCB0
byAKLSAgICAgICAgICAgIGJlIHN1cHBsaWVkIGFzIHRoZSBtYXN0ZXIgdG8gcHVzaCBob29rcy4K
LSAgICAgICAgOnBhcmFtIF9ydW5faG9va3M6IFByaXZhdGUgcGFyYW1ldGVyIC0gYWxsb3cgZGlz
YWJsaW5nIG9mCi0gICAgICAgICAgICBob29rcywgdXNlZCB3aGVuIHB1c2hpbmcgdG8gYSBtYXN0
ZXIgYnJhbmNoLgorICAgICAgICBUaGlzIGlzIG9uIHRoZSBiYXNlIEJ6ckJyYW5jaCBjbGFzcyBl
dmVuIHRob3VnaCBpdCBkb2Vzbid0IHN1cHBvcnQgCisgICAgICAgIGJvdW5kIGJyYW5jaGVzIGJl
Y2F1c2UgdGhlICp0YXJnZXQqIG1pZ2h0IGJlIGJvdW5kLgorICAgICAgICAiIiIKKyAgICAgICAg
ZGVmIF9ydW5faG9va3MoKToKKyAgICAgICAgICAgIGlmIF9vdmVycmlkZV9ob29rX3NvdXJjZV9i
cmFuY2g6CisgICAgICAgICAgICAgICAgcmVzdWx0LnNvdXJjZV9icmFuY2ggPSBfb3ZlcnJpZGVf
aG9va19zb3VyY2VfYnJhbmNoCisgICAgICAgICAgICBmb3IgaG9vayBpbiBCcmFuY2guaG9va3Nb
J3Bvc3RfcHVzaCddOgorICAgICAgICAgICAgICAgIGhvb2socmVzdWx0KQorCisgICAgICAgIGJv
dW5kX2xvY2F0aW9uID0gdGFyZ2V0LmdldF9ib3VuZF9sb2NhdGlvbigpCisgICAgICAgIGlmIGJv
dW5kX2xvY2F0aW9uIGFuZCB0YXJnZXQuYmFzZSAhPSBib3VuZF9sb2NhdGlvbjoKKyAgICAgICAg
ICAgICMgdGhlcmUgaXMgYSBtYXN0ZXIgYnJhbmNoLgorICAgICAgICAgICAgIworICAgICAgICAg
ICAgIyBYWFg6IFdoeSB0aGUgc2Vjb25kIGNoZWNrPyAgSXMgaXQgZXZlbiBzdXBwb3J0ZWQgZm9y
IGEgYnJhbmNoIHRvCisgICAgICAgICAgICAjIGJlIGJvdW5kIHRvIGl0c2VsZj8gLS0gbWJwIDIw
MDcwNTA3CisgICAgICAgICAgICBtYXN0ZXJfYnJhbmNoID0gdGFyZ2V0LmdldF9tYXN0ZXJfYnJh
bmNoKCkKKyAgICAgICAgICAgIG1hc3Rlcl9icmFuY2gubG9ja193cml0ZSgpCisgICAgICAgICAg
ICB0cnk6CisgICAgICAgICAgICAgICAgIyBwdXNoIGludG8gdGhlIG1hc3RlciBmcm9tIHRoaXMg
YnJhbmNoLgorICAgICAgICAgICAgICAgIHNlbGYuX2Jhc2ljX3B1c2gobWFzdGVyX2JyYW5jaCwg
b3ZlcndyaXRlLCBzdG9wX3JldmlzaW9uKQorICAgICAgICAgICAgICAgICMgYW5kIHB1c2ggaW50
byB0aGUgdGFyZ2V0IGJyYW5jaCBmcm9tIHRoaXMuIE5vdGUgdGhhdCB3ZSBwdXNoIGZyb20KKyAg
ICAgICAgICAgICAgICAjIHRoaXMgYnJhbmNoIGFnYWluLCBiZWNhdXNlIGl0cyBjb25zaWRlcmVk
IHRoZSBoaWdoZXN0IGJhbmR3aWR0aAorICAgICAgICAgICAgICAgICMgcmVwb3NpdG9yeS4KKyAg
ICAgICAgICAgICAgICByZXN1bHQgPSBzZWxmLl9iYXNpY19wdXNoKHRhcmdldCwgb3ZlcndyaXRl
LCBzdG9wX3JldmlzaW9uKQorICAgICAgICAgICAgICAgIHJlc3VsdC5tYXN0ZXJfYnJhbmNoID0g
bWFzdGVyX2JyYW5jaAorICAgICAgICAgICAgICAgIHJlc3VsdC5sb2NhbF9icmFuY2ggPSB0YXJn
ZXQKKyAgICAgICAgICAgICAgICBfcnVuX2hvb2tzKCkKKyAgICAgICAgICAgICAgICByZXR1cm4g
cmVzdWx0CisgICAgICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgICAgIG1hc3Rlcl9icmFu
Y2gudW5sb2NrKCkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgICMgbm8gbWFzdGVyIGJyYW5j
aAorICAgICAgICAgICAgcmVzdWx0ID0gc2VsZi5fYmFzaWNfcHVzaCh0YXJnZXQsIG92ZXJ3cml0
ZSwgc3RvcF9yZXZpc2lvbikKKyAgICAgICAgICAgICMgVE9ETzogV2h5IHNldCBtYXN0ZXJfYnJh
bmNoIGFuZCBsb2NhbF9icmFuY2ggaWYgdGhlcmUncyBubworICAgICAgICAgICAgIyBiaW5kaW5n
PyAgTWF5YmUgY2xlYW5lciB0byBqdXN0IGxlYXZlIHRoZW0gdW5zZXQ/IC0tIG1icAorICAgICAg
ICAgICAgIyAyMDA3MDUwNAorICAgICAgICAgICAgcmVzdWx0Lm1hc3Rlcl9icmFuY2ggPSB0YXJn
ZXQKKyAgICAgICAgICAgIHJlc3VsdC5sb2NhbF9icmFuY2ggPSBOb25lCisgICAgICAgICAgICBf
cnVuX2hvb2tzKCkKKyAgICAgICAgICAgIHJldHVybiByZXN1bHQKKworICAgIGRlZiBfYmFzaWNf
cHVzaChzZWxmLCB0YXJnZXQsIG92ZXJ3cml0ZSwgc3RvcF9yZXZpc2lvbik6CisgICAgICAgICIi
IkJhc2ljIGltcGxlbWVudGF0aW9uIG9mIHB1c2ggd2l0aG91dCBib3VuZCBicmFuY2hlcyBvciBo
b29rcy4KKworICAgICAgICBNdXN0IGJlIGNhbGxlZCB3aXRoIHNlbGYgcmVhZCBsb2NrZWQgYW5k
IHRhcmdldCB3cml0ZSBsb2NrZWQuCiAgICAgICAgICIiIgogICAgICAgICByZXN1bHQgPSBQdXNo
UmVzdWx0KCkKICAgICAgICAgcmVzdWx0LnNvdXJjZV9icmFuY2ggPSBzZWxmCiAgICAgICAgIHJl
c3VsdC50YXJnZXRfYnJhbmNoID0gdGFyZ2V0Ci0gICAgICAgIHRhcmdldC5sb2NrX3dyaXRlKCkK
KyAgICAgICAgcmVzdWx0Lm9sZF9yZXZubywgcmVzdWx0Lm9sZF9yZXZpZCA9IHRhcmdldC5sYXN0
X3JldmlzaW9uX2luZm8oKQogICAgICAgICB0cnk6Ci0gICAgICAgICAgICByZXN1bHQub2xkX3Jl
dm5vLCByZXN1bHQub2xkX3JldmlkID0gdGFyZ2V0Lmxhc3RfcmV2aXNpb25faW5mbygpCi0gICAg
ICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgdGFyZ2V0LnVwZGF0ZV9yZXZpc2lvbnMoc2Vs
Ziwgc3RvcF9yZXZpc2lvbikKLSAgICAgICAgICAgIGV4Y2VwdCBEaXZlcmdlZEJyYW5jaGVzOgot
ICAgICAgICAgICAgICAgIGlmIG5vdCBvdmVyd3JpdGU6Ci0gICAgICAgICAgICAgICAgICAgIHJh
aXNlCi0gICAgICAgICAgICBpZiBvdmVyd3JpdGU6Ci0gICAgICAgICAgICAgICAgdGFyZ2V0LnNl
dF9yZXZpc2lvbl9oaXN0b3J5KHNlbGYucmV2aXNpb25faGlzdG9yeSgpKQotICAgICAgICAgICAg
cmVzdWx0LnRhZ19jb25mbGljdHMgPSBzZWxmLnRhZ3MubWVyZ2VfdG8odGFyZ2V0LnRhZ3MpCi0g
ICAgICAgICAgICByZXN1bHQubmV3X3Jldm5vLCByZXN1bHQubmV3X3JldmlkID0gdGFyZ2V0Lmxh
c3RfcmV2aXNpb25faW5mbygpCi0gICAgICAgICAgICBpZiBfaG9va19tYXN0ZXI6Ci0gICAgICAg
ICAgICAgICAgcmVzdWx0Lm1hc3Rlcl9icmFuY2ggPSBfaG9va19tYXN0ZXIKLSAgICAgICAgICAg
ICAgICByZXN1bHQubG9jYWxfYnJhbmNoID0gdGFyZ2V0Ci0gICAgICAgICAgICBlbHNlOgotICAg
ICAgICAgICAgICAgIHJlc3VsdC5tYXN0ZXJfYnJhbmNoID0gdGFyZ2V0Ci0gICAgICAgICAgICAg
ICAgcmVzdWx0LmxvY2FsX2JyYW5jaCA9IE5vbmUKLSAgICAgICAgICAgIGlmIF9ydW5faG9va3M6
Ci0gICAgICAgICAgICAgICAgZm9yIGhvb2sgaW4gQnJhbmNoLmhvb2tzWydwb3N0X3B1c2gnXToK
LSAgICAgICAgICAgICAgICAgICAgaG9vayhyZXN1bHQpCi0gICAgICAgIGZpbmFsbHk6Ci0gICAg
ICAgICAgICB0YXJnZXQudW5sb2NrKCkKKyAgICAgICAgICAgIHRhcmdldC51cGRhdGVfcmV2aXNp
b25zKHNlbGYsIHN0b3BfcmV2aXNpb24pCisgICAgICAgIGV4Y2VwdCBEaXZlcmdlZEJyYW5jaGVz
OgorICAgICAgICAgICAgaWYgbm90IG92ZXJ3cml0ZToKKyAgICAgICAgICAgICAgICByYWlzZQor
ICAgICAgICBpZiBvdmVyd3JpdGU6CisgICAgICAgICAgICB0YXJnZXQuc2V0X3JldmlzaW9uX2hp
c3Rvcnkoc2VsZi5yZXZpc2lvbl9oaXN0b3J5KCkpCisgICAgICAgIHJlc3VsdC50YWdfY29uZmxp
Y3RzID0gc2VsZi50YWdzLm1lcmdlX3RvKHRhcmdldC50YWdzKQorICAgICAgICByZXN1bHQubmV3
X3Jldm5vLCByZXN1bHQubmV3X3JldmlkID0gdGFyZ2V0Lmxhc3RfcmV2aXNpb25faW5mbygpCiAg
ICAgICAgIHJldHVybiByZXN1bHQKIAogICAgIGRlZiBnZXRfcGFyZW50KHNlbGYpOgpAQCAtMTQ4
NCwxMSArMTYyNiw2IEBACiAgICAgICAgIGV4Y2VwdCBlcnJvcnMuSW52YWxpZFVSTEpvaW4sIGU6
CiAgICAgICAgICAgICByYWlzZSBlcnJvcnMuSW5hY2Nlc3NpYmxlUGFyZW50KHBhcmVudCwgc2Vs
Zi5iYXNlKQogCi0gICAgZGVmIGdldF9wdXNoX2xvY2F0aW9uKHNlbGYpOgotICAgICAgICAiIiJT
ZWUgQnJhbmNoLmdldF9wdXNoX2xvY2F0aW9uLiIiIgotICAgICAgICBwdXNoX2xvYyA9IHNlbGYu
Z2V0X2NvbmZpZygpLmdldF91c2VyX29wdGlvbigncHVzaF9sb2NhdGlvbicpCi0gICAgICAgIHJl
dHVybiBwdXNoX2xvYwotCiAgICAgZGVmIHNldF9wdXNoX2xvY2F0aW9uKHNlbGYsIGxvY2F0aW9u
KToKICAgICAgICAgIiIiU2VlIEJyYW5jaC5zZXRfcHVzaF9sb2NhdGlvbi4iIiIKICAgICAgICAg
c2VsZi5nZXRfY29uZmlnKCkuc2V0X3VzZXJfb3B0aW9uKApAQCAtMTUwOCw3ICsxNjQ1LDcgQEAK
ICAgICAgICAgICAgICAgICB0cnk6IAogICAgICAgICAgICAgICAgICAgICB1cmwgPSB1cmwuZW5j
b2RlKCdhc2NpaScpCiAgICAgICAgICAgICAgICAgZXhjZXB0IFVuaWNvZGVFbmNvZGVFcnJvcjoK
LSAgICAgICAgICAgICAgICAgICAgcmFpc2UgYnpybGliLmVycm9ycy5JbnZhbGlkVVJMKHVybCwK
KyAgICAgICAgICAgICAgICAgICAgcmFpc2UgZXJyb3JzLkludmFsaWRVUkwodXJsLAogICAgICAg
ICAgICAgICAgICAgICAgICAgIlVybHMgbXVzdCBiZSA3LWJpdCBhc2NpaSwgIgogICAgICAgICAg
ICAgICAgICAgICAgICAgInVzZSBienJsaWIudXJsdXRpbHMuZXNjYXBlIikKICAgICAgICAgICAg
IHVybCA9IHVybHV0aWxzLnJlbGF0aXZlX3VybChzZWxmLmJhc2UsIHVybCkKQEAgLTE1NDYsMTEg
KzE2ODMsMTIgQEAKICAgICAgICAgCiAgICAgQG5lZWRzX3dyaXRlX2xvY2sKICAgICBkZWYgcHVs
bChzZWxmLCBzb3VyY2UsIG92ZXJ3cml0ZT1GYWxzZSwgc3RvcF9yZXZpc2lvbj1Ob25lLAotICAg
ICAgICBfcnVuX2hvb2tzPVRydWUpOgotICAgICAgICAiIiJFeHRlbmRzIGJyYW5jaC5wdWxsIHRv
IGJlIGJvdW5kIGJyYW5jaCBhd2FyZS4KKyAgICAgICAgICAgICBydW5faG9va3M9VHJ1ZSk6Cisg
ICAgICAgICIiIlB1bGwgZnJvbSBzb3VyY2UgaW50byBzZWxmLCB1cGRhdGluZyBteSBtYXN0ZXIg
aWYgYW55LgogICAgICAgICAKLSAgICAgICAgOnBhcmFtIF9ydW5faG9va3M6IFByaXZhdGUgcGFy
YW1ldGVyIHVzZWQgdG8gZm9yY2UgaG9vayBydW5uaW5nCi0gICAgICAgICAgICBvZmYgZHVyaW5n
IGJvdW5kIGJyYW5jaCBkb3VibGUtcHVzaGluZy4KKyAgICAgICAgOnBhcmFtIHJ1bl9ob29rczog
UHJpdmF0ZSBwYXJhbWV0ZXIgLSBpZiBmYWxzZSwgdGhpcyBicmFuY2gKKyAgICAgICAgICAgIGlz
IGJlaW5nIGNhbGxlZCBiZWNhdXNlIGl0J3MgdGhlIG1hc3RlciBvZiB0aGUgcHJpbWFyeSBicmFu
Y2gsCisgICAgICAgICAgICBzbyBpdCBzaG91bGQgbm90IHJ1biBpdHMgaG9va3MuCiAgICAgICAg
ICIiIgogICAgICAgICBib3VuZF9sb2NhdGlvbiA9IHNlbGYuZ2V0X2JvdW5kX2xvY2F0aW9uKCkK
ICAgICAgICAgbWFzdGVyX2JyYW5jaCA9IE5vbmUKQEAgLTE1NjIsMzMgKzE3MDAsMTAgQEAKICAg
ICAgICAgICAgIGlmIG1hc3Rlcl9icmFuY2g6CiAgICAgICAgICAgICAgICAgIyBwdWxsIGZyb20g
c291cmNlIGludG8gbWFzdGVyLgogICAgICAgICAgICAgICAgIG1hc3Rlcl9icmFuY2gucHVsbChz
b3VyY2UsIG92ZXJ3cml0ZSwgc3RvcF9yZXZpc2lvbiwKLSAgICAgICAgICAgICAgICAgICAgX3J1
bl9ob29rcz1GYWxzZSkKKyAgICAgICAgICAgICAgICAgICAgcnVuX2hvb2tzPUZhbHNlKQogICAg
ICAgICAgICAgcmV0dXJuIHN1cGVyKEJ6ckJyYW5jaDUsIHNlbGYpLnB1bGwoc291cmNlLCBvdmVy
d3JpdGUsCiAgICAgICAgICAgICAgICAgc3RvcF9yZXZpc2lvbiwgX2hvb2tfbWFzdGVyPW1hc3Rl
cl9icmFuY2gsCi0gICAgICAgICAgICAgICAgX3J1bl9ob29rcz1fcnVuX2hvb2tzKQotICAgICAg
ICBmaW5hbGx5OgotICAgICAgICAgICAgaWYgbWFzdGVyX2JyYW5jaDoKLSAgICAgICAgICAgICAg
ICBtYXN0ZXJfYnJhbmNoLnVubG9jaygpCi0KLSAgICBAbmVlZHNfcmVhZF9sb2NrCi0gICAgZGVm
IHB1c2goc2VsZiwgdGFyZ2V0LCBvdmVyd3JpdGU9RmFsc2UsIHN0b3BfcmV2aXNpb249Tm9uZSk6
Ci0gICAgICAgICIiIlVwZGF0ZXMgYnJhbmNoLnB1c2ggdG8gYmUgYm91bmQgYnJhbmNoIGF3YXJl
LiIiIgotICAgICAgICBib3VuZF9sb2NhdGlvbiA9IHRhcmdldC5nZXRfYm91bmRfbG9jYXRpb24o
KQotICAgICAgICBtYXN0ZXJfYnJhbmNoID0gTm9uZQotICAgICAgICBpZiBib3VuZF9sb2NhdGlv
biBhbmQgdGFyZ2V0LmJhc2UgIT0gYm91bmRfbG9jYXRpb246Ci0gICAgICAgICAgICAjIG5vdCBw
dXNoaW5nIHRvIG1hc3Rlciwgc28gd2UgbmVlZCB0byB1cGRhdGUgbWFzdGVyLgotICAgICAgICAg
ICAgbWFzdGVyX2JyYW5jaCA9IHRhcmdldC5nZXRfbWFzdGVyX2JyYW5jaCgpCi0gICAgICAgICAg
ICBtYXN0ZXJfYnJhbmNoLmxvY2tfd3JpdGUoKQotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBp
ZiBtYXN0ZXJfYnJhbmNoOgotICAgICAgICAgICAgICAgICMgcHVzaCBpbnRvIHRoZSBtYXN0ZXIg
ZnJvbSB0aGlzIGJyYW5jaC4KLSAgICAgICAgICAgICAgICBzdXBlcihCenJCcmFuY2g1LCBzZWxm
KS5wdXNoKG1hc3Rlcl9icmFuY2gsIG92ZXJ3cml0ZSwKLSAgICAgICAgICAgICAgICAgICAgc3Rv
cF9yZXZpc2lvbiwgX3J1bl9ob29rcz1GYWxzZSkKLSAgICAgICAgICAgICMgYW5kIHB1c2ggaW50
byB0aGUgdGFyZ2V0IGJyYW5jaCBmcm9tIHRoaXMuIE5vdGUgdGhhdCB3ZSBwdXNoIGZyb20KLSAg
ICAgICAgICAgICMgdGhpcyBicmFuY2ggYWdhaW4sIGJlY2F1c2UgaXRzIGNvbnNpZGVyZWQgdGhl
IGhpZ2hlc3QgYmFuZHdpZHRoCi0gICAgICAgICAgICAjIHJlcG9zaXRvcnkuCi0gICAgICAgICAg
ICByZXR1cm4gc3VwZXIoQnpyQnJhbmNoNSwgc2VsZikucHVzaCh0YXJnZXQsIG92ZXJ3cml0ZSwK
LSAgICAgICAgICAgICAgICBzdG9wX3JldmlzaW9uLCBfaG9va19tYXN0ZXI9bWFzdGVyX2JyYW5j
aCkKKyAgICAgICAgICAgICAgICBydW5faG9va3M9cnVuX2hvb2tzKQogICAgICAgICBmaW5hbGx5
OgogICAgICAgICAgICAgaWYgbWFzdGVyX2JyYW5jaDoKICAgICAgICAgICAgICAgICBtYXN0ZXJf
YnJhbmNoLnVubG9jaygpCkBAIC0xNzI4LDYgKzE4NDMsMTkgQEAKICAgICAgICAgcmV0dXJuICJF
eHBlcmltZW50YWwgYnJhbmNoIGZvcm1hdCIKIAogICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBn
ZXRfcmVmZXJlbmNlKGNscywgYV9ienJkaXIpOgorICAgICAgICAiIiJHZXQgdGhlIHRhcmdldCBy
ZWZlcmVuY2Ugb2YgdGhlIGJyYW5jaCBpbiBhX2J6cmRpci4KKworICAgICAgICBmb3JtYXQgcHJv
YmluZyBtdXN0IGhhdmUgYmVlbiBjb21wbGV0ZWQgYmVmb3JlIGNhbGxpbmcKKyAgICAgICAgdGhp
cyBtZXRob2QgLSBpdCBpcyBhc3N1bWVkIHRoYXQgdGhlIGZvcm1hdCBvZiB0aGUgYnJhbmNoCisg
ICAgICAgIGluIGFfYnpyZGlyIGlzIGNvcnJlY3QuCisKKyAgICAgICAgOnBhcmFtIGFfYnpyZGly
OiBUaGUgYnpyZGlyIHRvIGdldCB0aGUgYnJhbmNoIGRhdGEgZnJvbS4KKyAgICAgICAgOnJldHVy
bjogTm9uZSBpZiB0aGUgYnJhbmNoIGlzIG5vdCBhIHJlZmVyZW5jZSBicmFuY2guCisgICAgICAg
ICIiIgorICAgICAgICByZXR1cm4gTm9uZQorCisgICAgQGNsYXNzbWV0aG9kCiAgICAgZGVmIF9p
bml0aWFsaXplX2NvbnRyb2xfZmlsZXMoY2xzLCBhX2J6cmRpciwgdXRmOF9maWxlcywgbG9ja19m
aWxlbmFtZSwKICAgICAgICAgICAgIGxvY2tfY2xhc3MpOgogICAgICAgICBicmFuY2hfdHJhbnNw
b3J0ID0gYV9ienJkaXIuZ2V0X2JyYW5jaF90cmFuc3BvcnQoY2xzKQpAQCAtMTk2NSw3ICsyMDkz
LDggQEAKICAgICBlYXN5IHRvIGlkZW50aWZ5LgogICAgICIiIgogCi0gICAgZGVmIF9faW5pdF9f
KHNlbGYsIHRyYW5zcG9ydF9zZXJ2ZXIsIHRyYW5zcG9ydF9yZWFkb25seV9zZXJ2ZXIsIGZvcm1h
dHMpOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCB0cmFuc3BvcnRfc2VydmVyLCB0cmFuc3BvcnRf
cmVhZG9ubHlfc2VydmVyLCBmb3JtYXRzLAorICAgICAgICB2ZnNfdHJhbnNwb3J0X2ZhY3Rvcnk9
Tm9uZSk6CiAgICAgICAgIHNlbGYuX3RyYW5zcG9ydF9zZXJ2ZXIgPSB0cmFuc3BvcnRfc2VydmVy
CiAgICAgICAgIHNlbGYuX3RyYW5zcG9ydF9yZWFkb25seV9zZXJ2ZXIgPSB0cmFuc3BvcnRfcmVh
ZG9ubHlfc2VydmVyCiAgICAgICAgIHNlbGYuX2Zvcm1hdHMgPSBmb3JtYXRzCgo=

=== modified file bzrlib/builtins.py // encoding:base64
LS0tIGJ6cmxpYi9idWlsdGlucy5weQorKysgYnpybGliL2J1aWx0aW5zLnB5CkBAIC0zMSw2ICsz
MSw3IEBACiBpbXBvcnQgYnpybGliCiBmcm9tIGJ6cmxpYiBpbXBvcnQgKAogICAgIGJyYW5jaCwK
KyAgICBidWd0cmFja2VyLAogICAgIGJ1bmRsZSwKICAgICBienJkaXIsCiAgICAgZGVsdGEsCkBA
IC01OSw3ICs2MCw3IEBACiAiIiIpCiAKIGZyb20gYnpybGliLmNvbW1hbmRzIGltcG9ydCBDb21t
YW5kLCBkaXNwbGF5X2NvbW1hbmQKLWZyb20gYnpybGliLm9wdGlvbiBpbXBvcnQgT3B0aW9uLCBS
ZWdpc3RyeU9wdGlvbgorZnJvbSBienJsaWIub3B0aW9uIGltcG9ydCBMaXN0T3B0aW9uLCBPcHRp
b24sIFJlZ2lzdHJ5T3B0aW9uCiBmcm9tIGJ6cmxpYi5wcm9ncmVzcyBpbXBvcnQgRHVtbXlQcm9n
cmVzcywgUHJvZ3Jlc3NQaGFzZQogZnJvbSBienJsaWIudHJhY2UgaW1wb3J0IG11dHRlciwgbm90
ZSwgbG9nX2Vycm9yLCB3YXJuaW5nLCBpc19xdWlldCwgaW5mbwogCkBAIC0xODksNiArMTkwLDcg
QEAKICAgICBhbGlhc2VzID0gWydzdCcsICdzdGF0J10KIAogICAgIGVuY29kaW5nX3R5cGUgPSAn
cmVwbGFjZScKKyAgICBfc2VlX2Fsc28gPSBbJ2RpZmYnLCAncmV2ZXJ0J10KICAgICAKICAgICBA
ZGlzcGxheV9jb21tYW5kCiAgICAgZGVmIHJ1bihzZWxmLCBzaG93X2lkcz1GYWxzZSwgZmlsZV9s
aXN0PU5vbmUsIHJldmlzaW9uPU5vbmUsIHNob3J0PUZhbHNlLApAQCAtMjE4LDYgKzIyMCw3IEBA
CiAgICAgQGRpc3BsYXlfY29tbWFuZAogICAgIGRlZiBydW4oc2VsZiwgcmV2aXNpb25faWQ9Tm9u
ZSwgcmV2aXNpb249Tm9uZSk6CiAKKyAgICAgICAgcmV2aXNpb25faWQgPSBvc3V0aWxzLnNhZmVf
cmV2aXNpb25faWQocmV2aXNpb25faWQsIHdhcm49RmFsc2UpCiAgICAgICAgIGlmIHJldmlzaW9u
X2lkIGlzIG5vdCBOb25lIGFuZCByZXZpc2lvbiBpcyBub3QgTm9uZToKICAgICAgICAgICAgIHJh
aXNlIGVycm9ycy5CenJDb21tYW5kRXJyb3IoJ1lvdSBjYW4gb25seSBzdXBwbHkgb25lIG9mJwog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnIHJldmlzaW9uX2lkIG9y
IC0tcmV2aXNpb24nKQpAQCAtMjQ0LDggKzI0Nyw5IEBACiAgICAgU2luY2UgYSBsaWdodHdlaWdo
dCBjaGVja291dCBpcyBsaXR0bGUgbW9yZSB0aGFuIGEgd29ya2luZyB0cmVlCiAgICAgdGhpcyB3
aWxsIHJlZnVzZSB0byBydW4gYWdhaW5zdCBvbmUuCiAKLSAgICBTZWUgJ2J6ciBoZWxwIHdvcmtp
bmctdHJlZXMnIGZvciBtb3JlIGluZm9ybWF0aW9uIG9uIHdvcmtpbmcgdHJlZXMuCisgICAgVG8g
cmUtY3JlYXRlIHRoZSB3b3JraW5nIHRyZWUsIHVzZSAiYnpyIGNoZWNrb3V0Ii4KICAgICAiIiIK
KyAgICBfc2VlX2Fsc28gPSBbJ2NoZWNrb3V0J10KIAogICAgIHRha2VzX2FyZ3MgPSBbJ2xvY2F0
aW9uPyddCiAKQEAgLTI3NSw2ICsyNzksNyBAQAogICAgIFRoaXMgaXMgZXF1YWwgdG8gdGhlIG51
bWJlciBvZiByZXZpc2lvbnMgb24gdGhpcyBicmFuY2guCiAgICAgIiIiCiAKKyAgICBfc2VlX2Fs
c28gPSBbJ2luZm8nXQogICAgIHRha2VzX2FyZ3MgPSBbJ2xvY2F0aW9uPyddCiAKICAgICBAZGlz
cGxheV9jb21tYW5kCkBAIC0zNDAsMTMgKzM0NSwxOCBAQAogCiAgICAgLS1maWxlLWlkcy1mcm9t
IHdpbGwgdHJ5IHRvIHVzZSB0aGUgZmlsZSBpZHMgZnJvbSB0aGUgc3VwcGxpZWQgcGF0aC4KICAg
ICBJdCBsb29rcyB1cCBpZHMgdHJ5aW5nIHRvIGZpbmQgYSBtYXRjaGluZyBwYXJlbnQgZGlyZWN0
b3J5IHdpdGggdGhlCi0gICAgc2FtZSBmaWxlbmFtZSwgYW5kIHRoZW4gYnkgcHVyZSBwYXRoLgor
ICAgIHNhbWUgZmlsZW5hbWUsIGFuZCB0aGVuIGJ5IHB1cmUgcGF0aC4gVGhpcyBvcHRpb24gaXMg
cmFyZWx5IG5lZWRlZAorICAgIGJ1dCBjYW4gYmUgdXNlZnVsIHdoZW4gYWRkaW5nIHRoZSBzYW1l
IGxvZ2ljYWwgZmlsZSBpbnRvIHR3bworICAgIGJyYW5jaGVzIHRoYXQgd2lsbCBiZSBtZXJnZWQg
bGF0ZXIgKHdpdGhvdXQgc2hvd2luZyB0aGUgdHdvIGRpZmZlcmVudAorICAgIGFkZHMgYXMgYSBj
b25mbGljdCkuIEl0IGlzIGFsc28gdXNlZnVsIHdoZW4gbWVyZ2luZyBhbm90aGVyIHByb2plY3QK
KyAgICBpbnRvIGEgc3ViZGlyZWN0b3J5IG9mIHRoaXMgb25lLgogICAgICIiIgogICAgIHRha2Vz
X2FyZ3MgPSBbJ2ZpbGUqJ10KICAgICB0YWtlc19vcHRpb25zID0gWyduby1yZWN1cnNlJywgJ2Ry
eS1ydW4nLCAndmVyYm9zZScsCiAgICAgICAgICAgICAgICAgICAgICBPcHRpb24oJ2ZpbGUtaWRz
LWZyb20nLCB0eXBlPXVuaWNvZGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVscD0n
TG9va3VwIGZpbGUgaWRzIGZyb20gaGVyZScpXQogICAgIGVuY29kaW5nX3R5cGUgPSAncmVwbGFj
ZScKKyAgICBfc2VlX2Fsc28gPSBbJ3JlbW92ZSddCiAKICAgICBkZWYgcnVuKHNlbGYsIGZpbGVf
bGlzdCwgbm9fcmVjdXJzZT1GYWxzZSwgZHJ5X3J1bj1GYWxzZSwgdmVyYm9zZT1GYWxzZSwKICAg
ICAgICAgICAgIGZpbGVfaWRzX2Zyb209Tm9uZSk6CkBAIC00MzEsMTQgKzQ0MSwxMSBAQAogCiAg
ICAgSXQgaXMgYWxzbyBwb3NzaWJsZSB0byByZXN0cmljdCB0aGUgbGlzdCBvZiBmaWxlcyB0byBh
IHNwZWNpZmljCiAgICAgc2V0LiBGb3IgZXhhbXBsZTogYnpyIGludmVudG9yeSAtLXNob3ctaWRz
IHRoaXMvZmlsZQotCi0gICAgU2VlIGFsc286IGJ6ciBscwogICAgICIiIgogCiAgICAgaGlkZGVu
ID0gVHJ1ZQotCisgICAgX3NlZV9hbHNvID0gWydscyddCiAgICAgdGFrZXNfb3B0aW9ucyA9IFsn
cmV2aXNpb24nLCAnc2hvdy1pZHMnLCAna2luZCddCi0KICAgICB0YWtlc19hcmdzID0gWydmaWxl
KiddCiAKICAgICBAZGlzcGxheV9jb21tYW5kCkBAIC01NTUsNiArNTYyLDcgQEAKICAgICBsb2Nh
dGlvbiBjYW4gYmUgYWNjZXNzZWQuCiAgICAgIiIiCiAKKyAgICBfc2VlX2Fsc28gPSBbJ3B1c2gn
LCAndXBkYXRlJ10KICAgICB0YWtlc19vcHRpb25zID0gWydyZW1lbWJlcicsICdvdmVyd3JpdGUn
LCAncmV2aXNpb24nLCAndmVyYm9zZScsCiAgICAgICAgIE9wdGlvbignZGlyZWN0b3J5JywKICAg
ICAgICAgICAgIGhlbHA9J2JyYW5jaCB0byBwdWxsIGludG8sICcKQEAgLTY2MSw2ICs2NjksNyBA
QAogICAgIGxvY2F0aW9uIGNhbiBiZSBhY2Nlc3NlZC4KICAgICAiIiIKIAorICAgIF9zZWVfYWxz
byA9IFsncHVsbCcsICd1cGRhdGUnXQogICAgIHRha2VzX29wdGlvbnMgPSBbJ3JlbWVtYmVyJywg
J292ZXJ3cml0ZScsICd2ZXJib3NlJywKICAgICAgICAgT3B0aW9uKCdjcmVhdGUtcHJlZml4JywK
ICAgICAgICAgICAgICAgIGhlbHA9J0NyZWF0ZSB0aGUgcGF0aCBsZWFkaW5nIHVwIHRvIHRoZSBi
cmFuY2ggJwpAQCAtNzAwLDcgKzcwOSw2IEBACiAgICAgICAgICAgICAgICAgbG9jYXRpb24gPSBz
dG9yZWRfbG9jCiAKICAgICAgICAgdG9fdHJhbnNwb3J0ID0gdHJhbnNwb3J0LmdldF90cmFuc3Bv
cnQobG9jYXRpb24pCi0gICAgICAgIGxvY2F0aW9uX3VybCA9IHRvX3RyYW5zcG9ydC5iYXNlCiAK
ICAgICAgICAgYnJfdG8gPSByZXBvc2l0b3J5X3RvID0gZGlyX3RvID0gTm9uZQogICAgICAgICB0
cnk6CkBAIC03NjMsMTIgKzc3MSwxMiBAQAogICAgICAgICAgICAgICAgICMgTm93IHdlIG9ubHkg
bmVlZCB0byBjcmVhdGUgY2hpbGQgZGlyZWN0b3JpZXMKICAgICAgICAgICAgICAgICB3aGlsZSBu
ZWVkZWQ6CiAgICAgICAgICAgICAgICAgICAgIGN1cl90cmFuc3BvcnQgPSBuZWVkZWQucG9wKCkK
LSAgICAgICAgICAgICAgICAgICAgY3VyX3RyYW5zcG9ydC5ta2RpcignLicpCi0gICAgICAgICAg
ICAKKyAgICAgICAgICAgICAgICAgICAgY3VyX3RyYW5zcG9ydC5lbnN1cmVfYmFzZSgpCisKICAg
ICAgICAgICAgICMgTm93IHRoZSB0YXJnZXQgZGlyZWN0b3J5IGV4aXN0cywgYnV0IGRvZXNuJ3Qg
aGF2ZSBhIC5ienIKICAgICAgICAgICAgICMgZGlyZWN0b3J5LiBTbyB3ZSBuZWVkIHRvIGNyZWF0
ZSBpdCwgYWxvbmcgd2l0aCBhbnkgd29yayB0byBjcmVhdGUKICAgICAgICAgICAgICMgYWxsIG9m
IHRoZSBkZXBlbmRlbnQgYnJhbmNoZXMsIGV0Yy4KLSAgICAgICAgICAgIGRpcl90byA9IGJyX2Zy
b20uYnpyZGlyLmNsb25lKGxvY2F0aW9uX3VybCwKKyAgICAgICAgICAgIGRpcl90byA9IGJyX2Zy
b20uYnpyZGlyLmNsb25lX29uX3RyYW5zcG9ydCh0b190cmFuc3BvcnQsCiAgICAgICAgICAgICAg
ICAgcmV2aXNpb25faWQ9YnJfZnJvbS5sYXN0X3JldmlzaW9uKCkpCiAgICAgICAgICAgICBicl90
byA9IGRpcl90by5vcGVuX2JyYW5jaCgpCiAgICAgICAgICAgICAjIFRPRE86IFNvbWUgbW9yZSB1
c2VmdWwgbWVzc2FnZSBhYm91dCB3aGF0IHdhcyBjb3BpZWQKQEAgLTg0NCw2ICs4NTIsOCBAQAog
ICAgIFRvIHJldHJpZXZlIHRoZSBicmFuY2ggYXMgb2YgYSBwYXJ0aWN1bGFyIHJldmlzaW9uLCBz
dXBwbHkgdGhlIC0tcmV2aXNpb24KICAgICBwYXJhbWV0ZXIsIGFzIGluICJicmFuY2ggZm9vL2Jh
ciAtciA1Ii4KICAgICAiIiIKKworICAgIF9zZWVfYWxzbyA9IFsnY2hlY2tvdXQnXQogICAgIHRh
a2VzX2FyZ3MgPSBbJ2Zyb21fbG9jYXRpb24nLCAndG9fbG9jYXRpb24/J10KICAgICB0YWtlc19v
cHRpb25zID0gWydyZXZpc2lvbiddCiAgICAgYWxpYXNlcyA9IFsnZ2V0JywgJ2Nsb25lJ10KQEAg
LTkxMiw5ICs5MjIsOSBAQAogICAgIHBhcmFtZXRlciwgYXMgaW4gImNoZWNrb3V0IGZvby9iYXIg
LXIgNSIuIE5vdGUgdGhhdCB0aGlzIHdpbGwgYmUgaW1tZWRpYXRlbHkKICAgICBvdXQgb2YgZGF0
ZSBbc28geW91IGNhbm5vdCBjb21taXRdIGJ1dCBpdCBtYXkgYmUgdXNlZnVsIChpLmUuIHRvIGV4
YW1pbmUgb2xkCiAgICAgY29kZS4pCisgICAgIiIiCiAKLSAgICBTZWUgImhlbHAgY2hlY2tvdXRz
IiBmb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiBjaGVja291dHMuCi0gICAgIiIiCisgICAgX3NlZV9h
bHNvID0gWydjaGVja291dHMnLCAnYnJhbmNoJ10KICAgICB0YWtlc19hcmdzID0gWydicmFuY2hf
bG9jYXRpb24/JywgJ3RvX2xvY2F0aW9uPyddCiAgICAgdGFrZXNfb3B0aW9ucyA9IFsncmV2aXNp
b24nLAogICAgICAgICAgICAgICAgICAgICAgT3B0aW9uKCdsaWdodHdlaWdodCcsCkBAIC05NzQs
NiArOTg0LDcgQEAKICAgICAjIFRPRE86IE9wdGlvbiB0byBzaG93IHJlbmFtZXMgYmV0d2VlbiB0
d28gaGlzdG9yaWNhbCB2ZXJzaW9ucy4KIAogICAgICMgVE9ETzogT25seSBzaG93IHJlbmFtZXMg
dW5kZXIgZGlyLCByYXRoZXIgdGhhbiBpbiB0aGUgd2hvbGUgYnJhbmNoLgorICAgIF9zZWVfYWxz
byA9IFsnc3RhdHVzJ10KICAgICB0YWtlc19hcmdzID0gWydkaXI/J10KIAogICAgIEBkaXNwbGF5
X2NvbW1hbmQKQEAgLTEwMDYsNiArMTAxNyw4IEBACiAgICAgSWYgeW91IHdhbnQgdG8gZGlzY2Fy
ZCB5b3VyIGxvY2FsIGNoYW5nZXMsIHlvdSBjYW4ganVzdCBkbyBhIAogICAgICdienIgcmV2ZXJ0
JyBpbnN0ZWFkIG9mICdienIgY29tbWl0JyBhZnRlciB0aGUgdXBkYXRlLgogICAgICIiIgorCisg
ICAgX3NlZV9hbHNvID0gWydwdWxsJ10KICAgICB0YWtlc19hcmdzID0gWydkaXI/J10KICAgICBh
bGlhc2VzID0gWyd1cCddCiAKQEAgLTEwNDksNiArMTA2Miw3IEBACiAKICAgICBCcmFuY2hlcyBh
bmQgd29ya2luZyB0cmVlcyB3aWxsIGFsc28gcmVwb3J0IGFueSBtaXNzaW5nIHJldmlzaW9ucy4K
ICAgICAiIiIKKyAgICBfc2VlX2Fsc28gPSBbJ3Jldm5vJ10KICAgICB0YWtlc19hcmdzID0gWyds
b2NhdGlvbj8nXQogICAgIHRha2VzX29wdGlvbnMgPSBbJ3ZlcmJvc2UnXQogCkBAIC0xMDYwLDEw
ICsxMDc0LDEwIEBACiAKIAogY2xhc3MgY21kX3JlbW92ZShDb21tYW5kKToKLSAgICAiIiJNYWtl
IGEgZmlsZSB1bnZlcnNpb25lZC4KKyAgICAiIiJSZW1vdmUgZmlsZXMgb3IgZGlyZWN0b3JpZXMu
CiAKLSAgICBUaGlzIG1ha2VzIGJ6ciBzdG9wIHRyYWNraW5nIGNoYW5nZXMgdG8gYSB2ZXJzaW9u
ZWQgZmlsZS4gIEl0IGRvZXMKLSAgICBub3QgZGVsZXRlIHRoZSB3b3JraW5nIGNvcHkuCisgICAg
VGhpcyBtYWtlcyBienIgc3RvcCB0cmFja2luZyBjaGFuZ2VzIHRvIHRoZSBzcGVjaWZpZWQgZmls
ZXMgYW5kCisgICAgZGVsZXRlIHRoZW0gaWYgdGhleSBjYW4gZWFzaWx5IGJlIHJlY292ZXJlZCB1
c2luZyByZXZlcnQuCiAKICAgICBZb3UgY2FuIHNwZWNpZnkgb25lIG9yIG1vcmUgZmlsZXMsIGFu
ZC9vciAtLW5ldy4gIElmIHlvdSBzcGVjaWZ5IC0tbmV3LAogICAgIG9ubHkgJ2FkZGVkJyBmaWxl
cyB3aWxsIGJlIHJlbW92ZWQuICBJZiB5b3Ugc3BlY2lmeSBib3RoLCB0aGVuIG5ldyBmaWxlcwpA
QCAtMTA3MSwyMyArMTA4NSwzOCBAQAogICAgIGFsc28gbmV3LCB0aGV5IHdpbGwgYWxzbyBiZSBy
ZW1vdmVkLgogICAgICIiIgogICAgIHRha2VzX2FyZ3MgPSBbJ2ZpbGUqJ10KLSAgICB0YWtlc19v
cHRpb25zID0gWyd2ZXJib3NlJywgT3B0aW9uKCduZXcnLCBoZWxwPSdyZW1vdmUgbmV3bHktYWRk
ZWQgZmlsZXMnKV0KKyAgICB0YWtlc19vcHRpb25zID0gWyd2ZXJib3NlJywKKyAgICAgICAgT3B0
aW9uKCduZXcnLCBoZWxwPSdyZW1vdmUgbmV3bHktYWRkZWQgZmlsZXMnKSwKKyAgICAgICAgUmVn
aXN0cnlPcHRpb24uZnJvbV9rd2FyZ3MoJ2ZpbGUtZGVsZXRpb24tc3RyYXRlZ3knLAorICAgICAg
ICAgICAgJ1RoZSBmaWxlIGRlbGV0aW9uIG1vZGUgdG8gYmUgdXNlZCcsCisgICAgICAgICAgICB0
aXRsZT0nRGVsZXRpb24gU3RyYXRlZ3knLCB2YWx1ZV9zd2l0Y2hlcz1UcnVlLCBlbnVtX3N3aXRj
aD1GYWxzZSwKKyAgICAgICAgICAgIHNhZmU9J09ubHkgZGVsZXRlIGZpbGVzIGlmIHRoZXkgY2Fu
IGJlJworICAgICAgICAgICAgICAgICAnIHNhZmVseSByZWNvdmVyZWQgKGRlZmF1bHQpLicsCisg
ICAgICAgICAgICBrZWVwPSJEb24ndCBkZWxldGUgYW55IGZpbGVzLiIsCisgICAgICAgICAgICBm
b3JjZT0nRGVsZXRlIGFsbCB0aGUgc3BlY2lmaWVkIGZpbGVzLCBldmVuIGlmIHRoZXkgY2FuIG5v
dCBiZSAnCisgICAgICAgICAgICAgICAgJ3JlY292ZXJlZCBhbmQgZXZlbiBpZiB0aGV5IGFyZSBu
b24tZW1wdHkgZGlyZWN0b3JpZXMuJyldCiAgICAgYWxpYXNlcyA9IFsncm0nXQogICAgIGVuY29k
aW5nX3R5cGUgPSAncmVwbGFjZScKLSAgICAKLSAgICBkZWYgcnVuKHNlbGYsIGZpbGVfbGlzdCwg
dmVyYm9zZT1GYWxzZSwgbmV3PUZhbHNlKToKKworICAgIGRlZiBydW4oc2VsZiwgZmlsZV9saXN0
LCB2ZXJib3NlPUZhbHNlLCBuZXc9RmFsc2UsCisgICAgICAgIGZpbGVfZGVsZXRpb25fc3RyYXRl
Z3k9J3NhZmUnKToKICAgICAgICAgdHJlZSwgZmlsZV9saXN0ID0gdHJlZV9maWxlcyhmaWxlX2xp
c3QpCi0gICAgICAgIGlmIG5ldyBpcyBGYWxzZToKLSAgICAgICAgICAgIGlmIGZpbGVfbGlzdCBp
cyBOb25lOgotICAgICAgICAgICAgICAgIHJhaXNlIGVycm9ycy5CenJDb21tYW5kRXJyb3IoJ1Nw
ZWNpZnkgb25lIG9yIG1vcmUgZmlsZXMgdG8nCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAnIHJlbW92ZSwgb3IgdXNlIC0tbmV3LicpCi0gICAgICAgIGVsc2U6
CisKKyAgICAgICAgaWYgZmlsZV9saXN0IGlzIG5vdCBOb25lOgorICAgICAgICAgICAgZmlsZV9s
aXN0ID0gW2YgZm9yIGYgaW4gZmlsZV9saXN0IGlmIGYgIT0gJyddCisgICAgICAgIGVsaWYgbm90
IG5ldzoKKyAgICAgICAgICAgIHJhaXNlIGVycm9ycy5CenJDb21tYW5kRXJyb3IoJ1NwZWNpZnkg
b25lIG9yIG1vcmUgZmlsZXMgdG8nCisgICAgICAgICAgICAnIHJlbW92ZSwgb3IgdXNlIC0tbmV3
LicpCisKKyAgICAgICAgaWYgbmV3OgogICAgICAgICAgICAgYWRkZWQgPSB0cmVlLmNoYW5nZXNf
ZnJvbSh0cmVlLmJhc2lzX3RyZWUoKSwKICAgICAgICAgICAgICAgICBzcGVjaWZpY19maWxlcz1m
aWxlX2xpc3QpLmFkZGVkCiAgICAgICAgICAgICBmaWxlX2xpc3QgPSBzb3J0ZWQoW2ZbMF0gZm9y
IGYgaW4gYWRkZWRdLCByZXZlcnNlPVRydWUpCiAgICAgICAgICAgICBpZiBsZW4oZmlsZV9saXN0
KSA9PSAwOgogICAgICAgICAgICAgICAgIHJhaXNlIGVycm9ycy5CenJDb21tYW5kRXJyb3IoJ05v
IG1hdGNoaW5nIGZpbGVzLicpCi0gICAgICAgIHRyZWUucmVtb3ZlKGZpbGVfbGlzdCwgdmVyYm9z
ZT12ZXJib3NlLCB0b19maWxlPXNlbGYub3V0ZikKKyAgICAgICAgdHJlZS5yZW1vdmUoZmlsZV9s
aXN0LCB2ZXJib3NlPXZlcmJvc2UsIHRvX2ZpbGU9c2VsZi5vdXRmLAorICAgICAgICAgICAga2Vl
cF9maWxlcz1maWxlX2RlbGV0aW9uX3N0cmF0ZWd5PT0na2VlcCcsCisgICAgICAgICAgICBmb3Jj
ZT1maWxlX2RlbGV0aW9uX3N0cmF0ZWd5PT0nZm9yY2UnKQogCiAKIGNsYXNzIGNtZF9maWxlX2lk
KENvbW1hbmQpOgpAQCAtMTA5OSw2ICsxMTI4LDcgQEAKICAgICAiIiIKIAogICAgIGhpZGRlbiA9
IFRydWUKKyAgICBfc2VlX2Fsc28gPSBbJ2ludmVudG9yeScsICdscyddCiAgICAgdGFrZXNfYXJn
cyA9IFsnZmlsZW5hbWUnXQogCiAgICAgQGRpc3BsYXlfY29tbWFuZApAQCAtMTE1MSw2ICsxMTgx
LDggQEAKIAogICAgIFRoZSBicmFuY2ggKk1VU1QqIGJlIG9uIGEgbGlzdGFibGUgc3lzdGVtIHN1
Y2ggYXMgbG9jYWwgZGlzayBvciBzZnRwLgogICAgICIiIgorCisgICAgX3NlZV9hbHNvID0gWydj
aGVjayddCiAgICAgdGFrZXNfYXJncyA9IFsnYnJhbmNoPyddCiAKICAgICBkZWYgcnVuKHNlbGYs
IGJyYW5jaD0iLiIpOgpAQCAtMTE2MSw2ICsxMTkzLDggQEAKIAogY2xhc3MgY21kX3JldmlzaW9u
X2hpc3RvcnkoQ29tbWFuZCk6CiAgICAgIiIiRGlzcGxheSB0aGUgbGlzdCBvZiByZXZpc2lvbiBp
ZHMgb24gYSBicmFuY2guIiIiCisKKyAgICBfc2VlX2Fsc28gPSBbJ2xvZyddCiAgICAgdGFrZXNf
YXJncyA9IFsnbG9jYXRpb24/J10KIAogICAgIGhpZGRlbiA9IFRydWUKQEAgLTExNzUsNiArMTIw
OSw4IEBACiAKIGNsYXNzIGNtZF9hbmNlc3RyeShDb21tYW5kKToKICAgICAiIiJMaXN0IGFsbCBy
ZXZpc2lvbnMgbWVyZ2VkIGludG8gdGhpcyBicmFuY2guIiIiCisKKyAgICBfc2VlX2Fsc28gPSBb
J2xvZycsICdyZXZpc2lvbi1oaXN0b3J5J10KICAgICB0YWtlc19hcmdzID0gWydsb2NhdGlvbj8n
XQogCiAgICAgaGlkZGVuID0gVHJ1ZQpAQCAtMTIxOCw2ICsxMjU0LDggQEAKICAgICAgICAgYnpy
IHN0YXR1cwogICAgICAgICBienIgY29tbWl0IC1tICdpbXBvcnRlZCBwcm9qZWN0JwogICAgICIi
IgorCisgICAgX3NlZV9hbHNvID0gWydpbml0LXJlcG8nLCAnYnJhbmNoJywgJ2NoZWNrb3V0J10K
ICAgICB0YWtlc19hcmdzID0gWydsb2NhdGlvbj8nXQogICAgIHRha2VzX29wdGlvbnMgPSBbCiAg
ICAgICAgICBSZWdpc3RyeU9wdGlvbignZm9ybWF0JywKQEAgLTEyNDYsMTEgKzEyODQsOCBAQAog
ICAgICAgICAjIGJlbGlldmUgdGhhdCB3ZSB3YW50IHRvIGNyZWF0ZSBhIGJ1bmNoIG9mCiAgICAg
ICAgICMgbG9jYXRpb25zIGlmIHRoZSB1c2VyIHN1cHBsaWVzIGFuIGV4dGVuZGVkIHBhdGgKICAg
ICAgICAgIyBUT0RPOiBjcmVhdGUtcHJlZml4Ci0gICAgICAgIHRyeToKLSAgICAgICAgICAgIHRv
X3RyYW5zcG9ydC5ta2RpcignLicpCi0gICAgICAgIGV4Y2VwdCBlcnJvcnMuRmlsZUV4aXN0czoK
LSAgICAgICAgICAgIHBhc3MKLSAgICAgICAgICAgICAgICAgICAgCisgICAgICAgIHRvX3RyYW5z
cG9ydC5lbnN1cmVfYmFzZSgpCisKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgZXhpc3Rpbmdf
YnpyZGlyID0gYnpyZGlyLkJ6ckRpci5vcGVuKGxvY2F0aW9uKQogICAgICAgICBleGNlcHQgZXJy
b3JzLk5vdEJyYW5jaEVycm9yOgpAQCAtMTI5NSw2ICsxMzMwLDcgQEAKICAgICBTZWUgJ2J6ciBo
ZWxwIHJlcG9zaXRvcmllcycgZm9yIG1vcmUgaW5mb3JtYXRpb24uCiAgICAgIiIiCiAKKyAgICBf
c2VlX2Fsc28gPSBbJ2luaXQnLCAnYnJhbmNoJywgJ2NoZWNrb3V0J10KICAgICB0YWtlc19hcmdz
ID0gWyJsb2NhdGlvbiJdCiAgICAgdGFrZXNfb3B0aW9ucyA9IFtSZWdpc3RyeU9wdGlvbignZm9y
bWF0JywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSdTcGVjaWZ5IGEgZm9ybWF0
IGZvciB0aGlzIHJlcG9zaXRvcnkuIFNlZScKQEAgLTEzMTYsMTAgKzEzNTIsNyBAQAogICAgICAg
ICAgICAgbG9jYXRpb24gPSAnLicKIAogICAgICAgICB0b190cmFuc3BvcnQgPSB0cmFuc3BvcnQu
Z2V0X3RyYW5zcG9ydChsb2NhdGlvbikKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgdG9fdHJh
bnNwb3J0Lm1rZGlyKCcuJykKLSAgICAgICAgZXhjZXB0IGVycm9ycy5GaWxlRXhpc3RzOgotICAg
ICAgICAgICAgcGFzcworICAgICAgICB0b190cmFuc3BvcnQuZW5zdXJlX2Jhc2UoKQogCiAgICAg
ICAgIG5ld2RpciA9IGZvcm1hdC5pbml0aWFsaXplX29uX3RyYW5zcG9ydCh0b190cmFuc3BvcnQp
CiAgICAgICAgIHJlcG8gPSBuZXdkaXIuY3JlYXRlX3JlcG9zaXRvcnkoc2hhcmVkPVRydWUpCkBA
IC0xMzYwLDYgKzEzOTMsNyBAQAogCiAgICAgIyBUT0RPOiBUaGlzIHByb2JhYmx5IGhhbmRsZXMg
bm9uLVVuaXggbmV3bGluZXMgcG9vcmx5LgogCisgICAgX3NlZV9hbHNvID0gWydzdGF0dXMnXQog
ICAgIHRha2VzX2FyZ3MgPSBbJ2ZpbGUqJ10KICAgICB0YWtlc19vcHRpb25zID0gWydyZXZpc2lv
bicsICdkaWZmLW9wdGlvbnMnLAogICAgICAgICBPcHRpb24oJ3ByZWZpeCcsIHR5cGU9c3RyLApA
QCAtMTQ0NSw2ICsxNDc5LDcgQEAKICAgICAjIGRpcmVjdG9yaWVzIHdpdGggcmVhZGRpciwgcmF0
aGVyIHRoYW4gc3RhdGluZyBlYWNoIG9uZS4gIFNhbWUKICAgICAjIGxldmVsIG9mIGVmZm9ydCBi
dXQgcG9zc2libHkgbXVjaCBsZXNzIElPLiAgKE9yIHBvc3NpYmx5IG5vdCwKICAgICAjIGlmIHRo
ZSBkaXJlY3RvcmllcyBhcmUgdmVyeSBsYXJnZS4uLikKKyAgICBfc2VlX2Fsc28gPSBbJ3N0YXR1
cycsICdscyddCiAgICAgdGFrZXNfb3B0aW9ucyA9IFsnc2hvdy1pZHMnXQogCiAgICAgQGRpc3Bs
YXlfY29tbWFuZApAQCAtMTQ3MCwxMSArMTUwNSwxMCBAQAogCiBjbGFzcyBjbWRfbW9kaWZpZWQo
Q29tbWFuZCk6CiAgICAgIiIiTGlzdCBmaWxlcyBtb2RpZmllZCBpbiB3b3JraW5nIHRyZWUuCi0K
LSAgICBTZWUgYWxzbzogImJ6ciBzdGF0dXMiLgogICAgICIiIgogCiAgICAgaGlkZGVuID0gVHJ1
ZQorICAgIF9zZWVfYWxzbyA9IFsnc3RhdHVzJywgJ2xzJ10KIAogICAgIEBkaXNwbGF5X2NvbW1h
bmQKICAgICBkZWYgcnVuKHNlbGYpOgpAQCAtMTQ4NiwxMSArMTUyMCwxMCBAQAogCiBjbGFzcyBj
bWRfYWRkZWQoQ29tbWFuZCk6CiAgICAgIiIiTGlzdCBmaWxlcyBhZGRlZCBpbiB3b3JraW5nIHRy
ZWUuCi0KLSAgICBTZWUgYWxzbzogImJ6ciBzdGF0dXMiLgogICAgICIiIgogCiAgICAgaGlkZGVu
ID0gVHJ1ZQorICAgIF9zZWVfYWxzbyA9IFsnc3RhdHVzJywgJ2xzJ10KIAogICAgIEBkaXNwbGF5
X2NvbW1hbmQKICAgICBkZWYgcnVuKHNlbGYpOgpAQCAtMTUyMiw2ICsxNTU1LDcgQEAKIAogICAg
IFRoZSByb290IGlzIHRoZSBuZWFyZXN0IGVuY2xvc2luZyBkaXJlY3Rvcnkgd2l0aCBhIC5ienIg
Y29udHJvbAogICAgIGRpcmVjdG9yeS4iIiIKKwogICAgIHRha2VzX2FyZ3MgPSBbJ2ZpbGVuYW1l
PyddCiAgICAgQGRpc3BsYXlfY29tbWFuZAogICAgIGRlZiBydW4oc2VsZiwgZmlsZW5hbWU9Tm9u
ZSk6CkBAIC0xNjg5LDYgKzE3MjMsNyBAQAogICAgICIiIkxpc3QgZmlsZXMgaW4gYSB0cmVlLgog
ICAgICIiIgogCisgICAgX3NlZV9hbHNvID0gWydzdGF0dXMnLCAnY2F0J10KICAgICB0YWtlc19h
cmdzID0gWydwYXRoPyddCiAgICAgIyBUT0RPOiBUYWtlIGEgcmV2aXNpb24gb3IgcmVtb3RlIHBh
dGggYW5kIGxpc3QgdGhhdCB0cmVlIGluc3RlYWQuCiAgICAgdGFrZXNfb3B0aW9ucyA9IFsndmVy
Ym9zZScsICdyZXZpc2lvbicsCkBAIC0xNzc4LDExICsxODEzLDEwIEBACiAKIGNsYXNzIGNtZF91
bmtub3ducyhDb21tYW5kKToKICAgICAiIiJMaXN0IHVua25vd24gZmlsZXMuCi0KLSAgICBTZWUg
YWxzbzogImJ6ciBscyAtLXVua25vd24iLgogICAgICIiIgogCiAgICAgaGlkZGVuID0gVHJ1ZQor
ICAgIF9zZWVfYWxzbyA9IFsnbHMnXQogCiAgICAgQGRpc3BsYXlfY29tbWFuZAogICAgIGRlZiBy
dW4oc2VsZik6CkBAIC0xODIzLDYgKzE4NTcsOCBAQAogICAgICAgICBienIgaWdub3JlICdsaWIv
KiovKi5vJwogICAgICAgICBienIgaWdub3JlICdSRTpsaWIvLipcLm8nCiAgICAgIiIiCisKKyAg
ICBfc2VlX2Fsc28gPSBbJ3N0YXR1cycsICdpZ25vcmVkJ10KICAgICB0YWtlc19hcmdzID0gWydu
YW1lX3BhdHRlcm4qJ10KICAgICB0YWtlc19vcHRpb25zID0gWwogICAgICAgICAgICAgICAgICAg
ICAgT3B0aW9uKCdvbGQtZGVmYXVsdC1ydWxlcycsCkBAIC0xODc4LDggKzE5MTQsOSBAQAogCiBj
bGFzcyBjbWRfaWdub3JlZChDb21tYW5kKToKICAgICAiIiJMaXN0IGlnbm9yZWQgZmlsZXMgYW5k
IHRoZSBwYXR0ZXJucyB0aGF0IG1hdGNoZWQgdGhlbS4KKyAgICAiIiIKIAotICAgIFNlZSBhbHNv
OiBienIgaWdub3JlIiIiCisgICAgX3NlZV9hbHNvID0gWydpZ25vcmUnXQogICAgIEBkaXNwbGF5
X2NvbW1hbmQKICAgICBkZWYgcnVuKHNlbGYpOgogICAgICAgICB0cmVlID0gV29ya2luZ1RyZWUu
b3Blbl9jb250YWluaW5nKHUnLicpWzBdCkBAIC0xOTIzLDEzICsxOTYwLDE0IEBACiAgICAgZ2l2
ZW4sIHRyeSB0byBmaW5kIHRoZSBmb3JtYXQgd2l0aCB0aGUgZXh0ZW5zaW9uLiBJZiBubyBleHRl
bnNpb24KICAgICBpcyBmb3VuZCBleHBvcnRzIHRvIGEgZGlyZWN0b3J5IChlcXVpdmFsZW50IHRv
IC0tZm9ybWF0PWRpcikuCiAKLSAgICBSb290IG1heSBiZSB0aGUgdG9wIGRpcmVjdG9yeSBmb3Ig
dGFyLCB0Z3ogYW5kIHRiejIgZm9ybWF0cy4gSWYgbm9uZQotICAgIGlzIGdpdmVuLCB0aGUgdG9w
IGRpcmVjdG9yeSB3aWxsIGJlIHRoZSByb290IG5hbWUgb2YgdGhlIGZpbGUuCisgICAgSWYgcm9v
dCBpcyBzdXBwbGllZCwgaXQgd2lsbCBiZSB1c2VkIGFzIHRoZSByb290IGRpcmVjdG9yeSBpbnNp
ZGUKKyAgICBjb250YWluZXIgZm9ybWF0cyAodGFyLCB6aXAsIGV0YykuIElmIGl0IGlzIG5vdCBz
dXBwbGllZCBpdCB3aWxsIGRlZmF1bHQKKyAgICB0byB0aGUgZXhwb3J0ZWQgZmlsZW5hbWUuIFRo
ZSByb290IG9wdGlvbiBoYXMgbm8gZWZmZWN0IGZvciAnZGlyJyBmb3JtYXQuCiAKICAgICBJZiBi
cmFuY2ggaXMgb21pdHRlZCB0aGVuIHRoZSBicmFuY2ggY29udGFpbmluZyB0aGUgY3VycmVudCB3
b3JraW5nCiAgICAgZGlyZWN0b3J5IHdpbGwgYmUgdXNlZC4KIAotICAgIE5vdGU6IGV4cG9ydCBv
ZiB0cmVlIHdpdGggbm9uLWFzY2lpIGZpbGVuYW1lcyB0byB6aXAgaXMgbm90IHN1cHBvcnRlZC4K
KyAgICBOb3RlOiBFeHBvcnQgb2YgdHJlZSB3aXRoIG5vbi1BU0NJSSBmaWxlbmFtZXMgdG8gemlw
IGlzIG5vdCBzdXBwb3J0ZWQuCiAKICAgICAgU3VwcG9ydGVkIGZvcm1hdHMgICAgICAgQXV0b2Rl
dGVjdGVkIGJ5IGV4dGVuc2lvbgogICAgICAtLS0tLS0tLS0tLS0tLS0tLSAgICAgICAtLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tCkBAIC0xOTczLDYgKzIwMTEsNyBAQAogICAgIGJpbmFyeSBmaWxl
LiAKICAgICAiIiIKIAorICAgIF9zZWVfYWxzbyA9IFsnbHMnXQogICAgIHRha2VzX29wdGlvbnMg
PSBbJ3JldmlzaW9uJywgJ25hbWUtZnJvbS1yZXZpc2lvbiddCiAgICAgdGFrZXNfYXJncyA9IFsn
ZmlsZW5hbWUnXQogICAgIGVuY29kaW5nX3R5cGUgPSAnZXhhY3QnCkBAIC0yMDM3LDggKzIwNzYs
MjMgQEAKICAgICB3aXRoaW4gaXQgaXMgY29tbWl0dGVkLgogCiAgICAgQSBzZWxlY3RlZC1maWxl
IGNvbW1pdCBtYXkgZmFpbCBpbiBzb21lIGNhc2VzIHdoZXJlIHRoZSBjb21taXR0ZWQKLSAgICB0
cmVlIHdvdWxkIGJlIGludmFsaWQsIHN1Y2ggYXMgdHJ5aW5nIHRvIGNvbW1pdCBhIGZpbGUgaW4g
YQotICAgIG5ld2x5LWFkZGVkIGRpcmVjdG9yeSB0aGF0IGlzIG5vdCBpdHNlbGYgY29tbWl0dGVk
LgorICAgIHRyZWUgd291bGQgYmUgaW52YWxpZC4gQ29uc2lkZXI6OgorCisgICAgICBienIgaW5p
dCBmb28KKyAgICAgIG1rZGlyIGZvby9iYXIKKyAgICAgIGJ6ciBhZGQgZm9vL2JhcgorICAgICAg
YnpyIGNvbW1pdCBmb28gLW0gImNvbW1pdHRpbmcgZm9vIgorICAgICAgYnpyIG12IGZvby9iYXIg
Zm9vL2JhegorICAgICAgbWtkaXIgZm9vL2JhcgorICAgICAgYnpyIGFkZCBmb28vYmFyCisgICAg
ICBienIgY29tbWl0IGZvby9iYXIgLW0gImNvbW1pdHRpbmcgYmFyIGJ1dCBub3QgYmF6IgorCisg
ICAgSW4gdGhlIGV4YW1wbGUgYWJvdmUsIHRoZSBsYXN0IGNvbW1pdCB3aWxsIGZhaWwgYnkgZGVz
aWduLiBUaGlzIGdpdmVzCisgICAgdGhlIHVzZXIgdGhlIG9wcG9ydHVuaXR5IHRvIGRlY2lkZSB3
aGV0aGVyIHRoZXkgd2FudCB0byBjb21taXQgdGhlCisgICAgcmVuYW1lIGF0IHRoZSBzYW1lIHRp
bWUsIHNlcGFyYXRlbHkgZmlyc3QsIG9yIG5vdCBhdCBhbGwuIChBcyBhIGdlbmVyYWwKKyAgICBy
dWxlLCB3aGVuIGluIGRvdWJ0LCBCYXphYXIgaGFzIGEgcG9saWN5IG9mIERvaW5nIHRoZSBTYWZl
IFRoaW5nLikKKworICAgIE5vdGU6IEEgc2VsZWN0ZWQtZmlsZSBjb21taXQgYWZ0ZXIgYSBtZXJn
ZSBpcyBub3QgeWV0IHN1cHBvcnRlZC4KICAgICAiIiIKICAgICAjIFRPRE86IFJ1biBob29rcyBv
biB0cmVlIHRvLWJlLWNvbW1pdHRlZCwgYW5kIGFmdGVyIGNvbW1pdC4KIApAQCAtMjA0OSw2ICsy
MTAzLDcgQEAKIAogICAgICMgWFhYOiB2ZXJib3NlIGN1cnJlbnRseSBkb2VzIG5vdGhpbmcKIAor
ICAgIF9zZWVfYWxzbyA9IFsnYnVncycsICd1bmNvbW1pdCddCiAgICAgdGFrZXNfYXJncyA9IFsn
c2VsZWN0ZWQqJ10KICAgICB0YWtlc19vcHRpb25zID0gWydtZXNzYWdlJywgJ3ZlcmJvc2UnLCAK
ICAgICAgICAgICAgICAgICAgICAgIE9wdGlvbigndW5jaGFuZ2VkJywKQEAgLTIwNjAsNiArMjEx
NSw5IEBACiAgICAgICAgICAgICAgICAgICAgICBPcHRpb24oJ3N0cmljdCcsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgaGVscD0icmVmdXNlIHRvIGNvbW1pdCBpZiB0aGVyZSBhcmUgdW5r
bm93biAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImZpbGVzIGluIHRoZSB3b3JraW5n
IHRyZWUuIiksCisgICAgICAgICAgICAgICAgICAgICBMaXN0T3B0aW9uKCdmaXhlcycsIHR5cGU9
c3RyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSJtYXJrIGEgYnVnIGFz
IGJlaW5nIGZpeGVkIGJ5IHRoaXMgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICJyZXZpc2lvbi4iKSwKICAgICAgICAgICAgICAgICAgICAgIE9wdGlvbignbG9jYWwnLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlbHA9InBlcmZvcm0gYSBsb2NhbCBvbmx5IGNv
bW1pdCBpbiBhIGJvdW5kICIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJicmFu
Y2guIFN1Y2ggY29tbWl0cyBhcmUgbm90IHB1c2hlZCB0byAiCkBAIC0yMDY5LDggKzIxMjcsMzAg
QEAKICAgICAgICAgICAgICAgICAgICAgIF0KICAgICBhbGlhc2VzID0gWydjaScsICdjaGVja2lu
J10KIAorICAgIGRlZiBfZ2V0X2J1Z19maXhfcHJvcGVydGllcyhzZWxmLCBmaXhlcywgYnJhbmNo
KToKKyAgICAgICAgcHJvcGVydGllcyA9IFtdCisgICAgICAgICMgQ29uZmlndXJlIHRoZSBwcm9w
ZXJ0aWVzIGZvciBidWcgZml4aW5nIGF0dHJpYnV0ZXMuCisgICAgICAgIGZvciBmaXhlZF9idWcg
aW4gZml4ZXM6CisgICAgICAgICAgICB0b2tlbnMgPSBmaXhlZF9idWcuc3BsaXQoJzonKQorICAg
ICAgICAgICAgaWYgbGVuKHRva2VucykgIT0gMjoKKyAgICAgICAgICAgICAgICByYWlzZSBlcnJv
cnMuQnpyQ29tbWFuZEVycm9yKAorICAgICAgICAgICAgICAgICAgICAiSW52YWxpZCBidWcgJXMu
IE11c3QgYmUgaW4gdGhlIGZvcm0gb2YgJ3RhZzppZCcuICIKKyAgICAgICAgICAgICAgICAgICAg
IkNvbW1pdCByZWZ1c2VkLiIgJSBmaXhlZF9idWcpCisgICAgICAgICAgICB0YWcsIGJ1Z19pZCA9
IHRva2VucworICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIGJ1Z191cmwgPSBidWd0
cmFja2VyLmdldF9idWdfdXJsKHRhZywgYnJhbmNoLCBidWdfaWQpCisgICAgICAgICAgICBleGNl
cHQgZXJyb3JzLlVua25vd25CdWdUcmFja2VyQWJicmV2aWF0aW9uOgorICAgICAgICAgICAgICAg
IHJhaXNlIGVycm9ycy5CenJDb21tYW5kRXJyb3IoCisgICAgICAgICAgICAgICAgICAgICdVbnJl
Y29nbml6ZWQgYnVnICVzLiBDb21taXQgcmVmdXNlZC4nICUgZml4ZWRfYnVnKQorICAgICAgICAg
ICAgZXhjZXB0IGVycm9ycy5NYWxmb3JtZWRCdWdJZGVudGlmaWVyOgorICAgICAgICAgICAgICAg
IHJhaXNlIGVycm9ycy5CenJDb21tYW5kRXJyb3IoCisgICAgICAgICAgICAgICAgICAgICJJbnZh
bGlkIGJ1ZyBpZGVudGlmaWVyIGZvciAlcy4gQ29tbWl0IHJlZnVzZWQuIgorICAgICAgICAgICAg
ICAgICAgICAlIGZpeGVkX2J1ZykKKyAgICAgICAgICAgIHByb3BlcnRpZXMuYXBwZW5kKCclcyBm
aXhlZCcgJSBidWdfdXJsKQorICAgICAgICByZXR1cm4gJ1xuJy5qb2luKHByb3BlcnRpZXMpCisK
ICAgICBkZWYgcnVuKHNlbGYsIG1lc3NhZ2U9Tm9uZSwgZmlsZT1Ob25lLCB2ZXJib3NlPVRydWUs
IHNlbGVjdGVkX2xpc3Q9Tm9uZSwKLSAgICAgICAgICAgIHVuY2hhbmdlZD1GYWxzZSwgc3RyaWN0
PUZhbHNlLCBsb2NhbD1GYWxzZSk6CisgICAgICAgICAgICB1bmNoYW5nZWQ9RmFsc2UsIHN0cmlj
dD1GYWxzZSwgbG9jYWw9RmFsc2UsIGZpeGVzPU5vbmUpOgogICAgICAgICBmcm9tIGJ6cmxpYi5j
b21taXQgaW1wb3J0IChOdWxsQ29tbWl0UmVwb3J0ZXIsIFJlcG9ydENvbW1pdFRvTG9nKQogICAg
ICAgICBmcm9tIGJ6cmxpYi5lcnJvcnMgaW1wb3J0IChQb2ludGxlc3NDb21taXQsIENvbmZsaWN0
c0luVHJlZSwKICAgICAgICAgICAgICAgICBTdHJpY3RDb21taXRGYWlsZWQpCkBAIC0yMDgyLDYg
KzIxNjIsOSBAQAogCiAgICAgICAgICMgVE9ETzogZG8gbW9yZSBjaGVja3MgdGhhdCB0aGUgY29t
bWl0IHdpbGwgc3VjY2VlZCBiZWZvcmUgCiAgICAgICAgICMgc3BlbmRpbmcgdGhlIHVzZXIncyB2
YWx1YWJsZSB0aW1lIHR5cGluZyBhIGNvbW1pdCBtZXNzYWdlLgorCisgICAgICAgIHByb3BlcnRp
ZXMgPSB7fQorCiAgICAgICAgIHRyZWUsIHNlbGVjdGVkX2xpc3QgPSB0cmVlX2ZpbGVzKHNlbGVj
dGVkX2xpc3QpCiAgICAgICAgIGlmIHNlbGVjdGVkX2xpc3QgPT0gWycnXToKICAgICAgICAgICAg
ICMgd29ya2Fyb3VuZCAtIGNvbW1pdCBvZiByb290IG9mIHRyZWUgc2hvdWxkIGJlIGV4YWN0bHkg
dGhlIHNhbWUKQEAgLTIwODksNiArMjE3MiwxMCBAQAogICAgICAgICAgICAgIyBzZWxlY3RlZC1m
aWxlIG1lcmdlIGNvbW1pdCBpcyBub3QgZG9uZSB5ZXQKICAgICAgICAgICAgIHNlbGVjdGVkX2xp
c3QgPSBbXQogCisgICAgICAgIGJ1Z19wcm9wZXJ0eSA9IHNlbGYuX2dldF9idWdfZml4X3Byb3Bl
cnRpZXMoZml4ZXMsIHRyZWUuYnJhbmNoKQorICAgICAgICBpZiBidWdfcHJvcGVydHk6CisgICAg
ICAgICAgICBwcm9wZXJ0aWVzWydidWdzJ10gPSBidWdfcHJvcGVydHkKKwogICAgICAgICBpZiBs
b2NhbCBhbmQgbm90IHRyZWUuYnJhbmNoLmdldF9ib3VuZF9sb2NhdGlvbigpOgogICAgICAgICAg
ICAgcmFpc2UgZXJyb3JzLkxvY2FsUmVxdWlyZXNCb3VuZEJyYW5jaCgpCiAKQEAgLTIxMTAsNyAr
MjE5Nyw3IEBACiAgICAgICAgICAgICBpZiBteV9tZXNzYWdlID09ICIiOgogICAgICAgICAgICAg
ICAgIHJhaXNlIGVycm9ycy5CenJDb21tYW5kRXJyb3IoImVtcHR5IGNvbW1pdCBtZXNzYWdlIHNw
ZWNpZmllZCIpCiAgICAgICAgICAgICByZXR1cm4gbXlfbWVzc2FnZQotICAgICAgICAKKwogICAg
ICAgICBpZiB2ZXJib3NlOgogICAgICAgICAgICAgcmVwb3J0ZXIgPSBSZXBvcnRDb21taXRUb0xv
ZygpCiAgICAgICAgIGVsc2U6CkBAIC0yMTIwLDcgKzIyMDcsNyBAQAogICAgICAgICAgICAgdHJl
ZS5jb21taXQobWVzc2FnZV9jYWxsYmFjaz1nZXRfbWVzc2FnZSwKICAgICAgICAgICAgICAgICAg
ICAgICAgIHNwZWNpZmljX2ZpbGVzPXNlbGVjdGVkX2xpc3QsCiAgICAgICAgICAgICAgICAgICAg
ICAgICBhbGxvd19wb2ludGxlc3M9dW5jaGFuZ2VkLCBzdHJpY3Q9c3RyaWN0LCBsb2NhbD1sb2Nh
bCwKLSAgICAgICAgICAgICAgICAgICAgICAgIHJlcG9ydGVyPXJlcG9ydGVyKQorICAgICAgICAg
ICAgICAgICAgICAgICAgcmVwb3J0ZXI9cmVwb3J0ZXIsIHJldnByb3BzPXByb3BlcnRpZXMpCiAg
ICAgICAgIGV4Y2VwdCBQb2ludGxlc3NDb21taXQ6CiAgICAgICAgICAgICAjIEZJWE1FOiBUaGlz
IHNob3VsZCByZWFsbHkgaGFwcGVuIGJlZm9yZSB0aGUgZmlsZSBpcyByZWFkIGluOwogICAgICAg
ICAgICAgIyBwZXJoYXBzIHByZXBhcmUgdGhlIGNvbW1pdDsgZ2V0IHRoZSBtZXNzYWdlOyB0aGVu
IGFjdHVhbGx5IGNvbW1pdApAQCAtMjE0Niw2ICsyMjMzLDggQEAKICAgICBUaGlzIGNvbW1hbmQg
Y2hlY2tzIHZhcmlvdXMgaW52YXJpYW50cyBhYm91dCB0aGUgYnJhbmNoIHN0b3JhZ2UgdG8KICAg
ICBkZXRlY3QgZGF0YSBjb3JydXB0aW9uIG9yIGJ6ciBidWdzLgogICAgICIiIgorCisgICAgX3Nl
ZV9hbHNvID0gWydyZWNvbmNpbGUnXQogICAgIHRha2VzX2FyZ3MgPSBbJ2JyYW5jaD8nXQogICAg
IHRha2VzX29wdGlvbnMgPSBbJ3ZlcmJvc2UnXQogCkBAIC0yMTY2LDYgKzIyNTUsOCBAQAogICAg
IHRoaXMgY29tbWFuZC4gV2hlbiB0aGUgZGVmYXVsdCBmb3JtYXQgaGFzIGNoYW5nZWQgeW91IG1h
eSBhbHNvIGJlIHdhcm5lZAogICAgIGR1cmluZyBvdGhlciBvcGVyYXRpb25zIHRvIHVwZ3JhZGUu
CiAgICAgIiIiCisKKyAgICBfc2VlX2Fsc28gPSBbJ2NoZWNrJ10KICAgICB0YWtlc19hcmdzID0g
Wyd1cmw/J10KICAgICB0YWtlc19vcHRpb25zID0gWwogICAgICAgICAgICAgICAgICAgICBSZWdp
c3RyeU9wdGlvbignZm9ybWF0JywKQEAgLTIyMzQsNiArMjMyNSw4IEBACiAgICAgSWYgdW5zZXQs
IHRoZSB0cmVlIHJvb3QgZGlyZWN0b3J5IG5hbWUgaXMgdXNlZCBhcyB0aGUgbmlja25hbWUKICAg
ICBUbyBwcmludCB0aGUgY3VycmVudCBuaWNrbmFtZSwgZXhlY3V0ZSB3aXRoIG5vIGFyZ3VtZW50
LiAgCiAgICAgIiIiCisKKyAgICBfc2VlX2Fsc28gPSBbJ2luZm8nXQogICAgIHRha2VzX2FyZ3Mg
PSBbJ25pY2tuYW1lPyddCiAgICAgZGVmIHJ1bihzZWxmLCBuaWNrbmFtZT1Ob25lKToKICAgICAg
ICAgYnJhbmNoID0gQnJhbmNoLm9wZW5fY29udGFpbmluZyh1Jy4nKVswXQpAQCAtMjI1MCw3ICsy
MzQzLDcgQEAKIGNsYXNzIGNtZF9zZWxmdGVzdChDb21tYW5kKToKICAgICAiIiJSdW4gaW50ZXJu
YWwgdGVzdCBzdWl0ZS4KICAgICAKLSAgICBUaGlzIGNyZWF0ZXMgdGVtcG9yYXJ5IHRlc3QgZGly
ZWN0b3JpZXMgaW4gdGhlIHdvcmtpbmcgZGlyZWN0b3J5LCBidXQgbm90CisgICAgVGhpcyBjcmVh
dGVzIHRlbXBvcmFyeSB0ZXN0IGRpcmVjdG9yaWVzIGluIHRoZSB3b3JraW5nIGRpcmVjdG9yeSwg
YnV0IG5vCiAgICAgZXhpc3RpbmcgZGF0YSBpcyBhZmZlY3RlZC4gIFRoZXNlIGRpcmVjdG9yaWVz
IGFyZSBkZWxldGVkIGlmIHRoZSB0ZXN0cwogICAgIHBhc3MsIG9yIGxlZnQgYmVoaW5kIHRvIGhl
bHAgaW4gZGVidWdnaW5nIGlmIHRoZXkgZmFpbCBhbmQgLS1rZWVwLW91dHB1dAogICAgIGlzIHNw
ZWNpZmllZC4KQEAgLTIyNjMsNiArMjM1NiwyMSBAQAogICAgIGFsbCBvdGhlciB0ZXN0cyBhcmUg
cnVuLiAgVGhpcyBpcyB1c2VmdWwgaWYgeW91IGhhdmUgYmVlbiB3b3JraW5nIGluIGEKICAgICBw
YXJ0aWN1bGFyIGFyZWEsIGJ1dCB3YW50IHRvIG1ha2Ugc3VyZSBub3RoaW5nIGVsc2Ugd2FzIGJy
b2tlbi4KIAorICAgIElmIC0tZXhjbHVkZSBpcyBnaXZlbiwgdGVzdHMgdGhhdCBtYXRjaCB0aGF0
IHJlZ3VsYXIgZXhwcmVzc2lvbiBhcmUKKyAgICBleGNsdWRlZCwgcmVnYXJkbGVzcyBvZiB3aGV0
aGVyIHRoZXkgbWF0Y2ggLS1maXJzdCBvciBub3QuCisKKyAgICBUbyBoZWxwIGNhdGNoIGFjY2lk
ZW50aWFsIGRlcGVuZGVuY2llcyBiZXR3ZWVuIHRlc3RzLCB0aGUgLS1yYW5kb21pemUKKyAgICBv
cHRpb24gaXMgdXNlZnVsLiBJbiBtb3N0IGNhc2VzLCB0aGUgYXJndW1lbnQgdXNlZCBpcyB0aGUg
d29yZCAnbm93Jy4KKyAgICBOb3RlIHRoYXQgdGhlIHNlZWQgdXNlZCBmb3IgdGhlIHJhbmRvbSBu
dW1iZXIgZ2VuZXJhdG9yIGlzIGRpc3BsYXllZAorICAgIHdoZW4gdGhpcyBvcHRpb24gaXMgdXNl
ZC4gVGhlIHNlZWQgY2FuIGJlIGV4cGxpY2l0bHkgcGFzc2VkIGFzIHRoZQorICAgIGFyZ3VtZW50
IHRvIHRoaXMgb3B0aW9uIGlmIHJlcXVpcmVkLiBUaGlzIGVuYWJsZXMgcmVwcm9kdWN0aW9uIG9m
IHRoZQorICAgIGFjdHVhbCBvcmRlcmluZyB1c2VkIGlmIGFuZCB3aGVuIGFuIG9yZGVyIHNlbnNp
dGl2ZSBwcm9ibGVtIGlzIGVuY291bnRlcmVkLgorCisgICAgSWYgLS1saXN0LW9ubHkgaXMgZ2l2
ZW4sIHRoZSB0ZXN0cyB0aGF0IHdvdWxkIGJlIHJ1biBhcmUgbGlzdGVkLiBUaGlzIGlzCisgICAg
dXNlZnVsIHdoZW4gY29tYmluZWQgd2l0aCAtLWZpcnN0LCAtLWV4Y2x1ZGUgYW5kL29yIC0tcmFu
ZG9taXplIHRvCisgICAgdW5kZXJzdGFuZCB0aGVpciBpbXBhY3QuIFRoZSB0ZXN0IGhhcm5lc3Mg
cmVwb3J0cyAiTGlzdGVkIG5uIHRlc3RzIGluIC4uLiIKKyAgICBpbnN0ZWFkIG9mICJSYW4gbm4g
dGVzdHMgaW4gLi4uIiB3aGVuIGxpc3QgbW9kZSBpcyBlbmFibGVkLgorCiAgICAgSWYgdGhlIGds
b2JhbCBvcHRpb24gJy0tbm8tcGx1Z2lucycgaXMgZ2l2ZW4sIHBsdWdpbnMgYXJlIG5vdCBsb2Fk
ZWQKICAgICBiZWZvcmUgcnVubmluZyB0aGUgc2VsZnRlc3RzLiAgVGhpcyBoYXMgdHdvIGVmZmVj
dHM6IGZlYXR1cmVzIHByb3ZpZGVkIG9yCiAgICAgbW9kaWZpZWQgYnkgcGx1Z2lucyB3aWxsIG5v
dCBiZSB0ZXN0ZWQsIGFuZCB0ZXN0cyBwcm92aWRlZCBieSBwbHVnaW5zIHdpbGwKQEAgLTIyODEs
OCArMjM4OSw2IEBACiAgICAgb2YgcnVubmluZyB0ZXN0cyB0byBjcmVhdGUgc3VjaCBzdWJkaXJl
Y3Rvcmllcy4gVGhpcyBpcyBkZWZhdWx0IGJlaGF2aW9yCiAgICAgb24gV2luZG93cyBiZWNhdXNl
IG9mIHBhdGggbGVuZ3RoIGxpbWl0YXRpb24uCiAgICAgIiIiCi0gICAgIyBUT0RPOiAtLWxpc3Qg
c2hvdWxkIGdpdmUgYSBsaXN0IG9mIGFsbCBhdmFpbGFibGUgdGVzdHMKLQogICAgICMgTkI6IHRo
aXMgaXMgdXNlZCBmcm9tIHRoZSBjbGFzcyB3aXRob3V0IGNyZWF0aW5nIGFuIGluc3RhbmNlLCB3
aGljaCBpcwogICAgICMgd2h5IGl0IGRvZXMgbm90IGhhdmUgYSBzZWxmIHBhcmFtZXRlci4KICAg
ICBkZWYgZ2V0X3RyYW5zcG9ydF90eXBlKHR5cGVzdHJpbmcpOgpAQCAtMjMwMyw3ICsyNDA5LDEw
IEBACiAgICAgaGlkZGVuID0gVHJ1ZQogICAgIHRha2VzX2FyZ3MgPSBbJ3Rlc3RzcGVjcyonXQog
ICAgIHRha2VzX29wdGlvbnMgPSBbJ3ZlcmJvc2UnLAotICAgICAgICAgICAgICAgICAgICAgT3B0
aW9uKCdvbmUnLCBoZWxwPSdzdG9wIHdoZW4gb25lIHRlc3QgZmFpbHMnKSwKKyAgICAgICAgICAg
ICAgICAgICAgIE9wdGlvbignb25lJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVs
cD0nc3RvcCB3aGVuIG9uZSB0ZXN0IGZhaWxzJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgc2hvcnRfbmFtZT0nMScsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICksCiAgICAg
ICAgICAgICAgICAgICAgICBPcHRpb24oJ2tlZXAtb3V0cHV0JywKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBoZWxwPSdrZWVwIG91dHB1dCBkaXJlY3RvcmllcyB3aGVuIHRlc3RzIGZhaWwn
KSwKICAgICAgICAgICAgICAgICAgICAgIE9wdGlvbigndHJhbnNwb3J0JywKQEAgLTIzMjEsMTcg
KzI0MzAsMjggQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSdjbGVhbiB0ZW1w
b3JhcnkgdGVzdHMgZGlyZWN0b3JpZXMnCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAnIHdpdGhvdXQgcnVubmluZyB0ZXN0cycpLAogICAgICAgICAgICAgICAgICAgICAgT3B0aW9u
KCdmaXJzdCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVscD0ncnVuIGFsbCB0ZXN0
cywgYnV0IHJ1biBzcGVjaWZpZWQgdGVzdHMgZmlyc3QnCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgaGVscD0ncnVuIGFsbCB0ZXN0cywgYnV0IHJ1biBzcGVjaWZpZWQgdGVzdHMgZmlyc3Qn
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNob3J0X25hbWU9J2YnLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICksCiAgICAgICAgICAgICAgICAgICAgICBPcHRpb24oJ251bWJl
cmVkLWRpcnMnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlbHA9J3VzZSBudW1iZXJl
ZCBkaXJzIGZvciBUZXN0Q2FzZUluVGVtcERpcicpLAorICAgICAgICAgICAgICAgICAgICAgT3B0
aW9uKCdsaXN0LW9ubHknLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlbHA9J2xpc3Qg
dGhlIHRlc3RzIGluc3RlYWQgb2YgcnVubmluZyB0aGVtJyksCisgICAgICAgICAgICAgICAgICAg
ICBPcHRpb24oJ3JhbmRvbWl6ZScsIHR5cGU9c3RyLCBhcmduYW1lPSJTRUVEIiwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBoZWxwPSdyYW5kb21pemUgdGhlIG9yZGVyIG9mIHRlc3RzIHVz
aW5nIHRoZSBnaXZlbicKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcgc2VlZCBv
ciAibm93IiBmb3IgdGhlIGN1cnJlbnQgdGltZScpLAorICAgICAgICAgICAgICAgICAgICAgT3B0
aW9uKCdleGNsdWRlJywgdHlwZT1zdHIsIGFyZ25hbWU9IlBBVFRFUk4iLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHNob3J0X25hbWU9J3gnLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGhlbHA9J2V4Y2x1ZGUgdGVzdHMgdGhhdCBtYXRjaCB0aGlzIHJlZ3VsYXInCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAnIGV4cHJlc3Npb24nKSwKICAgICAgICAgICAgICAg
ICAgICAgIF0KICAgICBlbmNvZGluZ190eXBlID0gJ3JlcGxhY2UnCiAKICAgICBkZWYgcnVuKHNl
bGYsIHRlc3RzcGVjc19saXN0PU5vbmUsIHZlcmJvc2U9Tm9uZSwgb25lPUZhbHNlLAogICAgICAg
ICAgICAga2VlcF9vdXRwdXQ9RmFsc2UsIHRyYW5zcG9ydD1Ob25lLCBiZW5jaG1hcms9Tm9uZSwK
ICAgICAgICAgICAgIGxzcHJvZl90aW1lZD1Ob25lLCBjYWNoZV9kaXI9Tm9uZSwgY2xlYW5fb3V0
cHV0PUZhbHNlLAotICAgICAgICAgICAgZmlyc3Q9RmFsc2UsIG51bWJlcmVkX2RpcnM9Tm9uZSk6
CisgICAgICAgICAgICBmaXJzdD1GYWxzZSwgbnVtYmVyZWRfZGlycz1Ob25lLCBsaXN0X29ubHk9
RmFsc2UsCisgICAgICAgICAgICByYW5kb21pemU9Tm9uZSwgZXhjbHVkZT1Ob25lKToKICAgICAg
ICAgaW1wb3J0IGJ6cmxpYi51aQogICAgICAgICBmcm9tIGJ6cmxpYi50ZXN0cyBpbXBvcnQgc2Vs
ZnRlc3QKICAgICAgICAgaW1wb3J0IGJ6cmxpYi5iZW5jaG1hcmtzIGFzIGJlbmNobWFya3MKQEAg
LTIzNzYsNiArMjQ5Niw5IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiZW5jaF9o
aXN0b3J5PWJlbmNoZmlsZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoaW5n
X3Rlc3RzX2ZpcnN0PWZpcnN0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVtYmVy
ZWRfZGlycz1udW1iZXJlZF9kaXJzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlz
dF9vbmx5PWxpc3Rfb25seSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJhbmRvbV9z
ZWVkPXJhbmRvbWl6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4Y2x1ZGVfcGF0
dGVybj1leGNsdWRlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApCiAgICAgICAgIGZp
bmFsbHk6CiAgICAgICAgICAgICBpZiBiZW5jaGZpbGUgaXMgbm90IE5vbmU6CkBAIC0yNDYyLDE4
ICsyNTg1LDIwIEBACiAKICAgICBFeGFtcGxlczoKIAotICAgIFRvIG1lcmdlIHRoZSBsYXRlc3Qg
cmV2aXNpb24gZnJvbSBienIuZGV2Ci0gICAgYnpyIG1lcmdlIC4uL2J6ci5kZXYKKyAgICBUbyBt
ZXJnZSB0aGUgbGF0ZXN0IHJldmlzaW9uIGZyb20gYnpyLmRldjoKKyAgICAgICAgYnpyIG1lcmdl
IC4uL2J6ci5kZXYKIAotICAgIFRvIG1lcmdlIGNoYW5nZXMgdXAgdG8gYW5kIGluY2x1ZGluZyBy
ZXZpc2lvbiA4MiBmcm9tIGJ6ci5kZXYKLSAgICBienIgbWVyZ2UgLXIgODIgLi4vYnpyLmRldgor
ICAgIFRvIG1lcmdlIGNoYW5nZXMgdXAgdG8gYW5kIGluY2x1ZGluZyByZXZpc2lvbiA4MiBmcm9t
IGJ6ci5kZXY6CisgICAgICAgIGJ6ciBtZXJnZSAtciA4MiAuLi9ienIuZGV2CiAKICAgICBUbyBt
ZXJnZSB0aGUgY2hhbmdlcyBpbnRyb2R1Y2VkIGJ5IDgyLCB3aXRob3V0IHByZXZpb3VzIGNoYW5n
ZXM6Ci0gICAgYnpyIG1lcmdlIC1yIDgxLi44MiAuLi9ienIuZGV2CisgICAgICAgIGJ6ciBtZXJn
ZSAtciA4MS4uODIgLi4vYnpyLmRldgogICAgIAogICAgIG1lcmdlIHJlZnVzZXMgdG8gcnVuIGlm
IHRoZXJlIGFyZSBhbnkgdW5jb21taXR0ZWQgY2hhbmdlcywgdW5sZXNzCiAgICAgLS1mb3JjZSBp
cyBnaXZlbi4KICAgICAiIiIKKworICAgIF9zZWVfYWxzbyA9IFsndXBkYXRlJywgJ3JlbWVyZ2Un
XQogICAgIHRha2VzX2FyZ3MgPSBbJ2JyYW5jaD8nXQogICAgIHRha2VzX29wdGlvbnMgPSBbJ3Jl
dmlzaW9uJywgJ2ZvcmNlJywgJ21lcmdlLXR5cGUnLCAncmVwcm9jZXNzJywgJ3JlbWVtYmVyJywK
ICAgICAgICAgT3B0aW9uKCdzaG93LWJhc2UnLCBoZWxwPSJTaG93IGJhc2UgcmV2aXNpb24gdGV4
dCBpbiAiCkBAIC0yNjQxLDYgKzI3NjYsNyBAQAogICAgIHBlbmRpbmcgbWVyZ2UsIGFuZCBpdCBs
ZXRzIHlvdSBzcGVjaWZ5IHBhcnRpY3VsYXIgZmlsZXMuCiAKICAgICBFeGFtcGxlczoKKwogICAg
ICQgYnpyIHJlbWVyZ2UgLS1zaG93LWJhc2UKICAgICAgICAgUmUtZG8gdGhlIG1lcmdlIG9mIGFs
bCBjb25mbGljdGVkIGZpbGVzLCBhbmQgc2hvdyB0aGUgYmFzZSB0ZXh0IGluCiAgICAgICAgIGNv
bmZsaWN0IHJlZ2lvbnMsIGluIGFkZGl0aW9uIHRvIHRoZSB1c3VhbCBUSElTIGFuZCBPVEhFUiB0
ZXh0cy4KQEAgLTI3MzgsNiArMjg2NCw4IEBACiAgICAgbmFtZS4gIElmIHlvdSBuYW1lIGEgZGly
ZWN0b3J5LCBhbGwgdGhlIGNvbnRlbnRzIG9mIHRoYXQgZGlyZWN0b3J5IHdpbGwgYmUKICAgICBy
ZXZlcnRlZC4KICAgICAiIiIKKworICAgIF9zZWVfYWxzbyA9IFsnY2F0JywgJ2V4cG9ydCddCiAg
ICAgdGFrZXNfb3B0aW9ucyA9IFsncmV2aXNpb24nLCAnbm8tYmFja3VwJ10KICAgICB0YWtlc19h
cmdzID0gWydmaWxlKiddCiAKQEAgLTI3NzcsOSArMjkwNSw5IEBACiAKIGNsYXNzIGNtZF9oZWxw
KENvbW1hbmQpOgogICAgICIiIlNob3cgaGVscCBvbiBhIGNvbW1hbmQgb3Igb3RoZXIgdG9waWMu
CisgICAgIiIiCiAKLSAgICBGb3IgYSBsaXN0IG9mIGFsbCBhdmFpbGFibGUgY29tbWFuZHMsIHNh
eSAnYnpyIGhlbHAgY29tbWFuZHMnLgotICAgICIiIgorICAgIF9zZWVfYWxzbyA9IFsndG9waWNz
J10KICAgICB0YWtlc19vcHRpb25zID0gW09wdGlvbignbG9uZycsICdzaG93IGhlbHAgb24gYWxs
IGNvbW1hbmRzJyldCiAgICAgdGFrZXNfYXJncyA9IFsndG9waWM/J10KICAgICBhbGlhc2VzID0g
Wyc/JywgJy0taGVscCcsICctPycsICctaCddCkBAIC0yODI2LDYgKzI5NTQsOCBAQAogCiAgICAg
T1RIRVJfQlJBTkNIIG1heSBiZSBsb2NhbCBvciByZW1vdGUuCiAgICAgIiIiCisKKyAgICBfc2Vl
X2Fsc28gPSBbJ21lcmdlJywgJ3B1bGwnXQogICAgIHRha2VzX2FyZ3MgPSBbJ290aGVyX2JyYW5j
aD8nXQogICAgIHRha2VzX29wdGlvbnMgPSBbT3B0aW9uKCdyZXZlcnNlJywgJ1JldmVyc2UgdGhl
IG9yZGVyIG9mIHJldmlzaW9ucycpLAogICAgICAgICAgICAgICAgICAgICAgT3B0aW9uKCdtaW5l
LW9ubHknLCAKQEAgLTI5MjgsNyArMzA1OCw3IEBACiAKIGNsYXNzIGNtZF90ZXN0YW1lbnQoQ29t
bWFuZCk6CiAgICAgIiIiU2hvdyB0ZXN0YW1lbnQgKHNpZ25pbmctZm9ybSkgb2YgYSByZXZpc2lv
bi4iIiIKLSAgICB0YWtlc19vcHRpb25zID0gWydyZXZpc2lvbicsIAorICAgIHRha2VzX29wdGlv
bnMgPSBbJ3JldmlzaW9uJywKICAgICAgICAgICAgICAgICAgICAgIE9wdGlvbignbG9uZycsIGhl
bHA9J1Byb2R1Y2UgbG9uZy1mb3JtYXQgdGVzdGFtZW50JyksIAogICAgICAgICAgICAgICAgICAg
ICAgT3B0aW9uKCdzdHJpY3QnLCBoZWxwPSdQcm9kdWNlIGEgc3RyaWN0LWZvcm1hdCcKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAnIHRlc3RhbWVudCcpXQpAQCAtMzA0NCwxMCArMzE3NCw5
IEBACiAKICAgICBPbmNlIGNvbnZlcnRlZCBpbnRvIGEgY2hlY2tvdXQsIGNvbW1pdHMgbXVzdCBz
dWNjZWVkIG9uIHRoZSBtYXN0ZXIgYnJhbmNoCiAgICAgYmVmb3JlIHRoZXkgd2lsbCBiZSBhcHBs
aWVkIHRvIHRoZSBsb2NhbCBicmFuY2guCi0KLSAgICBTZWUgImhlbHAgY2hlY2tvdXRzIiBmb3Ig
bW9yZSBpbmZvcm1hdGlvbiBvbiBjaGVja291dHMuCiAgICAgIiIiCiAKKyAgICBfc2VlX2Fsc28g
PSBbJ2NoZWNrb3V0cycsICd1bmJpbmQnXQogICAgIHRha2VzX2FyZ3MgPSBbJ2xvY2F0aW9uPydd
CiAgICAgdGFrZXNfb3B0aW9ucyA9IFtdCiAKQEAgLTMwNzYsMTAgKzMyMDUsOSBAQAogCiAgICAg
QWZ0ZXIgdW5iaW5kaW5nLCB0aGUgbG9jYWwgYnJhbmNoIGlzIGNvbnNpZGVyZWQgaW5kZXBlbmRl
bnQgYW5kIHN1YnNlcXVlbnQKICAgICBjb21taXRzIHdpbGwgYmUgbG9jYWwgb25seS4KLQotICAg
IFNlZSAiaGVscCBjaGVja291dHMiIGZvciBtb3JlIGluZm9ybWF0aW9uIG9uIGNoZWNrb3V0cy4K
ICAgICAiIiIKIAorICAgIF9zZWVfYWxzbyA9IFsnY2hlY2tvdXRzJywgJ2JpbmQnXQogICAgIHRh
a2VzX2FyZ3MgPSBbXQogICAgIHRha2VzX29wdGlvbnMgPSBbXQogCkBAIC0zMTA0LDYgKzMyMzIs
NyBAQAogICAgICMgdW5yZWZlcmVuY2VkIGluZm9ybWF0aW9uIGluICdicmFuY2gtYXMtcmVwb3Np
dG9yeScgYnJhbmNoZXMuCiAgICAgIyBUT0RPOiBqYW0gMjAwNjAxMDggQWRkIHRoZSBhYmlsaXR5
IGZvciB1bmNvbW1pdCB0byByZW1vdmUgdW5yZWZlcmVuY2VkCiAgICAgIyBpbmZvcm1hdGlvbiBp
biBzaGFyZWQgYnJhbmNoZXMgYXMgd2VsbC4KKyAgICBfc2VlX2Fsc28gPSBbJ2NvbW1pdCddCiAg
ICAgdGFrZXNfb3B0aW9ucyA9IFsndmVyYm9zZScsICdyZXZpc2lvbicsCiAgICAgICAgICAgICAg
ICAgICAgIE9wdGlvbignZHJ5LXJ1bicsIGhlbHA9J0RvblwndCBhY3R1YWxseSBtYWtlIGNoYW5n
ZXMnKSwKICAgICAgICAgICAgICAgICAgICAgT3B0aW9uKCdmb3JjZScsIGhlbHA9J1NheSB5ZXMg
dG8gYWxsIHF1ZXN0aW9ucy4nKV0KQEAgLTMyMzMsMzAgKzMzNjIsNDMgQEAKICAgICAgICAgXQog
CiAgICAgZGVmIHJ1bihzZWxmLCBwb3J0PU5vbmUsIGluZXQ9RmFsc2UsIGRpcmVjdG9yeT1Ob25l
LCBhbGxvd193cml0ZXM9RmFsc2UpOgotICAgICAgICBmcm9tIGJ6cmxpYi50cmFuc3BvcnQgaW1w
b3J0IHNtYXJ0CisgICAgICAgIGZyb20gYnpybGliLnNtYXJ0IGltcG9ydCBtZWRpdW0sIHNlcnZl
cgogICAgICAgICBmcm9tIGJ6cmxpYi50cmFuc3BvcnQgaW1wb3J0IGdldF90cmFuc3BvcnQKKyAg
ICAgICAgZnJvbSBienJsaWIudHJhbnNwb3J0LmNocm9vdCBpbXBvcnQgQ2hyb290U2VydmVyCisg
ICAgICAgIGZyb20gYnpybGliLnRyYW5zcG9ydC5yZW1vdGUgaW1wb3J0IEJaUl9ERUZBVUxUX1BP
UlQsIEJaUl9ERUZBVUxUX0lOVEVSRkFDRQogICAgICAgICBpZiBkaXJlY3RvcnkgaXMgTm9uZToK
ICAgICAgICAgICAgIGRpcmVjdG9yeSA9IG9zLmdldGN3ZCgpCiAgICAgICAgIHVybCA9IHVybHV0
aWxzLmxvY2FsX3BhdGhfdG9fdXJsKGRpcmVjdG9yeSkKICAgICAgICAgaWYgbm90IGFsbG93X3dy
aXRlczoKICAgICAgICAgICAgIHVybCA9ICdyZWFkb25seSsnICsgdXJsCi0gICAgICAgIHQgPSBn
ZXRfdHJhbnNwb3J0KHVybCkKKyAgICAgICAgY2hyb290X3NlcnZlciA9IENocm9vdFNlcnZlcihn
ZXRfdHJhbnNwb3J0KHVybCkpCisgICAgICAgIGNocm9vdF9zZXJ2ZXIuc2V0VXAoKQorICAgICAg
ICB0ID0gZ2V0X3RyYW5zcG9ydChjaHJvb3Rfc2VydmVyLmdldF91cmwoKSkKICAgICAgICAgaWYg
aW5ldDoKLSAgICAgICAgICAgIHNlcnZlciA9IHNtYXJ0LlNtYXJ0U2VydmVyUGlwZVN0cmVhbU1l
ZGl1bShzeXMuc3RkaW4sIHN5cy5zdGRvdXQsIHQpCisgICAgICAgICAgICBzbWFydF9zZXJ2ZXIg
PSBtZWRpdW0uU21hcnRTZXJ2ZXJQaXBlU3RyZWFtTWVkaXVtKAorICAgICAgICAgICAgICAgIHN5
cy5zdGRpbiwgc3lzLnN0ZG91dCwgdCkKICAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGhvc3Qg
PSBCWlJfREVGQVVMVF9JTlRFUkZBQ0UKICAgICAgICAgICAgIGlmIHBvcnQgaXMgTm9uZToKLSAg
ICAgICAgICAgICAgICBwb3J0ID0gc21hcnQuQlpSX0RFRkFVTFRfUE9SVAotICAgICAgICAgICAg
ICAgIGhvc3QgPSAnMTI3LjAuMC4xJworICAgICAgICAgICAgICAgIHBvcnQgPSBCWlJfREVGQVVM
VF9QT1JUCiAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgIGlmICc6JyBpbiBwb3J0
OgogICAgICAgICAgICAgICAgICAgICBob3N0LCBwb3J0ID0gcG9ydC5zcGxpdCgnOicpCi0gICAg
ICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgaG9zdCA9ICcxMjcuMC4wLjEn
CiAgICAgICAgICAgICAgICAgcG9ydCA9IGludChwb3J0KQotICAgICAgICAgICAgc2VydmVyID0g
c21hcnQuU21hcnRUQ1BTZXJ2ZXIodCwgaG9zdD1ob3N0LCBwb3J0PXBvcnQpCi0gICAgICAgICAg
ICBwcmludCAnbGlzdGVuaW5nIG9uIHBvcnQ6ICcsIHNlcnZlci5wb3J0CisgICAgICAgICAgICBz
bWFydF9zZXJ2ZXIgPSBzZXJ2ZXIuU21hcnRUQ1BTZXJ2ZXIodCwgaG9zdD1ob3N0LCBwb3J0PXBv
cnQpCisgICAgICAgICAgICBwcmludCAnbGlzdGVuaW5nIG9uIHBvcnQ6ICcsIHNtYXJ0X3NlcnZl
ci5wb3J0CiAgICAgICAgICAgICBzeXMuc3Rkb3V0LmZsdXNoKCkKLSAgICAgICAgc2VydmVyLnNl
cnZlKCkKKyAgICAgICAgIyBmb3IgdGhlIGR1cmF0aW9uIG9mIHRoaXMgc2VydmVyLCBubyBVSSBv
dXRwdXQgaXMgcGVybWl0dGVkLgorICAgICAgICAjIG5vdGUgdGhhdCB0aGlzIG1heSBjYXVzZSBw
cm9ibGVtcyB3aXRoIGJsYWNrYm94IHRlc3RzLiBUaGlzIHNob3VsZAorICAgICAgICAjIGJlIGNo
YW5nZWQgd2l0aCBjYXJlIHRob3VnaCwgYXMgd2UgZG9udCB3YW50IHRvIHVzZSBiYW5kd2lkdGgg
c2VuZGluZworICAgICAgICAjIHByb2dyZXNzIG92ZXIgc3RkZXJyIHRvIHNtYXJ0IHNlcnZlciBj
bGllbnRzIQorICAgICAgICBvbGRfZmFjdG9yeSA9IHVpLnVpX2ZhY3RvcnkKKyAgICAgICAgdHJ5
OgorICAgICAgICAgICAgdWkudWlfZmFjdG9yeSA9IHVpLlNpbGVudFVJRmFjdG9yeSgpCisgICAg
ICAgICAgICBzbWFydF9zZXJ2ZXIuc2VydmUoKQorICAgICAgICBmaW5hbGx5OgorICAgICAgICAg
ICAgdWkudWlfZmFjdG9yeSA9IG9sZF9mYWN0b3J5CisKIAogY2xhc3MgY21kX2pvaW4oQ29tbWFu
ZCk6CiAgICAgIiIiQ29tYmluZSBhIHN1YnRyZWUgaW50byBpdHMgY29udGFpbmluZyB0cmVlLgpA
QCAtMzI3OSw2ICszNDIxLDcgQEAKICAgICBhbmQgbWVyZ2UsIHdpbGwgcmVjdXJzZSBpbnRvIHRo
ZSBzdWJ0cmVlLgogICAgICIiIgogCisgICAgX3NlZV9hbHNvID0gWydzcGxpdCddCiAgICAgdGFr
ZXNfYXJncyA9IFsndHJlZSddCiAgICAgdGFrZXNfb3B0aW9ucyA9IFtPcHRpb24oJ3JlZmVyZW5j
ZScsICdqb2luIGJ5IHJlZmVyZW5jZScpXQogICAgIGhpZGRlbiA9IFRydWUKQEAgLTMzMjAsMTAg
KzM0NjMsOSBAQAogICAgIHN1YmRpcmVjdG9yeSB3aWxsIGJlIGNvbnZlcnRlZCBpbnRvIGFuIGlu
ZGVwZW5kZW50IHRyZWUsIHdpdGggaXRzIG93bgogICAgIGJyYW5jaC4gIENvbW1pdHMgaW4gdGhl
IHRvcC1sZXZlbCB0cmVlIHdpbGwgbm90IGFwcGx5IHRvIHRoZSBuZXcgc3VidHJlZS4KICAgICBJ
ZiB5b3Ugd2FudCB0aGF0IGJlaGF2aW9yLCBkbyAiYnpyIGpvaW4gLS1yZWZlcmVuY2UgVFJFRSIu
Ci0KLSAgICBUbyB1bmRvIHRoaXMgb3BlcmF0aW9uLCBkbyAiYnpyIGpvaW4gVFJFRSIuCiAgICAg
IiIiCiAKKyAgICBfc2VlX2Fsc28gPSBbJ2pvaW4nXQogICAgIHRha2VzX2FyZ3MgPSBbJ3RyZWUn
XQogCiAgICAgaGlkZGVuID0gVHJ1ZQpAQCAtMzQzOSw2ICszNTgxLDcgQEAKICAgICAtLWZvcmNl
LCBpbiB3aGljaCBjYXNlIHRoZSB0YWcgaXMgbW92ZWQgdG8gcG9pbnQgdG8gdGhlIG5ldyByZXZp
c2lvbi4KICAgICAiIiIKIAorICAgIF9zZWVfYWxzbyA9IFsnY29tbWl0JywgJ3RhZ3MnXQogICAg
IHRha2VzX2FyZ3MgPSBbJ3RhZ19uYW1lJ10KICAgICB0YWtlc19vcHRpb25zID0gWwogICAgICAg
ICBPcHRpb24oJ2RlbGV0ZScsCkBAIC0zNDkwLDYgKzM2MzMsNyBAQAogICAgIFRoaXMgdGFnIHNo
b3dzIGEgdGFibGUgb2YgdGFnIG5hbWVzIGFuZCB0aGUgcmV2aXNpb25zIHRoZXkgcmVmZXJlbmNl
LgogICAgICIiIgogCisgICAgX3NlZV9hbHNvID0gWyd0YWcnXQogICAgIHRha2VzX29wdGlvbnMg
PSBbCiAgICAgICAgIE9wdGlvbignZGlyZWN0b3J5JywKICAgICAgICAgICAgIGhlbHA9J0JyYW5j
aCB3aG9zZSB0YWdzIHNob3VsZCBiZSBkaXNwbGF5ZWQnLAoK

=== modified file bzrlib/bundle/bundle_data.py // last-changed:john@arbash-mein
... el.com-20070503164230-y0411liq6w3bphj0 // encoding:base64
LS0tIGJ6cmxpYi9idW5kbGUvYnVuZGxlX2RhdGEucHkKKysrIGJ6cmxpYi9idW5kbGUvYnVuZGxl
X2RhdGEucHkKQEAgLTc2LDkgKzc2LDEzIEBACiAgICAgICAgIGlmIHNlbGYucHJvcGVydGllczoK
ICAgICAgICAgICAgIGZvciBwcm9wZXJ0eSBpbiBzZWxmLnByb3BlcnRpZXM6CiAgICAgICAgICAg
ICAgICAga2V5X2VuZCA9IHByb3BlcnR5LmZpbmQoJzogJykKLSAgICAgICAgICAgICAgICBhc3Nl
cnQga2V5X2VuZCBpcyBub3QgTm9uZQotICAgICAgICAgICAgICAgIGtleSA9IHByb3BlcnR5Wzpr
ZXlfZW5kXS5lbmNvZGUoJ3V0Zi04JykKLSAgICAgICAgICAgICAgICB2YWx1ZSA9IHByb3BlcnR5
W2tleV9lbmQrMjpdLmVuY29kZSgndXRmLTgnKQorICAgICAgICAgICAgICAgIGlmIGtleV9lbmQg
PT0gLTE6CisgICAgICAgICAgICAgICAgICAgIGFzc2VydCBwcm9wZXJ0eS5lbmRzd2l0aCgnOicp
CisgICAgICAgICAgICAgICAgICAgIGtleSA9IHN0cihwcm9wZXJ0eVs6LTFdKQorICAgICAgICAg
ICAgICAgICAgICB2YWx1ZSA9ICcnCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAg
ICAgICAgICAga2V5ID0gc3RyKHByb3BlcnR5WzprZXlfZW5kXSkKKyAgICAgICAgICAgICAgICAg
ICAgdmFsdWUgPSBwcm9wZXJ0eVtrZXlfZW5kKzI6XQogICAgICAgICAgICAgICAgIHJldi5wcm9w
ZXJ0aWVzW2tleV0gPSB2YWx1ZQogCiAgICAgICAgIHJldHVybiByZXYKQEAgLTEwNSw2ICsxMDks
OSBAQAogICAgICAgICBzZWxmLnRpbWVzdGFtcCA9IE5vbmUKICAgICAgICAgc2VsZi50aW1lem9u
ZSA9IE5vbmUKIAorICAgICAgICAjIEhhdmUgd2UgY2hlY2tlZCB0aGUgcmVwb3NpdG9yeSB5ZXQ/
CisgICAgICAgIHNlbGYuX3ZhbGlkYXRlZF9yZXZpc2lvbnNfYWdhaW5zdF9yZXBvID0gRmFsc2UK
KwogICAgIGRlZiBfX3N0cl9fKHNlbGYpOgogICAgICAgICByZXR1cm4gcHByaW50LnBmb3JtYXQo
c2VsZi5fX2RpY3RfXykKIApAQCAtMTc2LDcgKzE4Myw4IEBACiAgICAgICAgIHJldmlzaW9uID0g
c2VsZi5nZXRfcmV2aXNpb24ocmV2aXNpb25faWQpCiAgICAgICAgIGJhc2UgPSBzZWxmLmdldF9i
YXNlKHJldmlzaW9uKQogICAgICAgICBhc3NlcnQgYmFzZSAhPSByZXZpc2lvbl9pZAotICAgICAg
ICBzZWxmLl92YWxpZGF0ZV9yZWZlcmVuY2VzX2Zyb21fcmVwb3NpdG9yeShyZXBvc2l0b3J5KQor
ICAgICAgICBpZiBub3Qgc2VsZi5fdmFsaWRhdGVkX3JldmlzaW9uc19hZ2FpbnN0X3JlcG86Cisg
ICAgICAgICAgICBzZWxmLl92YWxpZGF0ZV9yZWZlcmVuY2VzX2Zyb21fcmVwb3NpdG9yeShyZXBv
c2l0b3J5KQogICAgICAgICByZXZpc2lvbl9pbmZvID0gc2VsZi5nZXRfcmV2aXNpb25faW5mbyhy
ZXZpc2lvbl9pZCkKICAgICAgICAgaW52ZW50b3J5X3JldmlzaW9uX2lkID0gcmV2aXNpb25faWQK
ICAgICAgICAgYnVuZGxlX3RyZWUgPSBCdW5kbGVUcmVlKHJlcG9zaXRvcnkucmV2aXNpb25fdHJl
ZShiYXNlKSwgCkBAIC0yNTgsNiArMjY2LDcgQEAKICAgICAgICAgICAgIHdhcm5pbmcoJ05vdCBh
bGwgcmV2aXNpb24gaGFzaGVzIGNvdWxkIGJlIHZhbGlkYXRlZC4nCiAgICAgICAgICAgICAgICAg
ICAgICcgVW5hYmxlIHZhbGlkYXRlICVkIGhhc2hlcycgJSBsZW4obWlzc2luZykpCiAgICAgICAg
IG11dHRlcignVmVyaWZpZWQgJWQgc2hhIGhhc2hlcyBmb3IgdGhlIGJ1bmRsZS4nICUgY291bnQp
CisgICAgICAgIHNlbGYuX3ZhbGlkYXRlZF9yZXZpc2lvbnNfYWdhaW5zdF9yZXBvID0gVHJ1ZQog
CiAgICAgZGVmIF92YWxpZGF0ZV9pbnZlbnRvcnkoc2VsZiwgaW52LCByZXZpc2lvbl9pZCk6CiAg
ICAgICAgICIiIkF0IHRoaXMgcG9pbnQgd2Ugc2hvdWxkIGhhdmUgZ2VuZXJhdGVkIHRoZSBCdW5k
bGVUcmVlLAoK

=== modified file bzrlib/bundle/serializer/v08.py // last-changed:john@arbash-m
... einel.com-20070425165625-d2act28kmjn5avel // encoding:base64
LS0tIGJ6cmxpYi9idW5kbGUvc2VyaWFsaXplci92MDgucHkKKysrIGJ6cmxpYi9idW5kbGUvc2Vy
aWFsaXplci92MDgucHkKQEAgLTEzNSwxNCArMTM1LDI0IEBACiAgICAgICAgIGYud3JpdGUoJzAu
OFxuJykKICAgICAgICAgZi53cml0ZSgnI1xuJykKIAotICAgIGRlZiBfd3JpdGUoc2VsZiwga2V5
LCB2YWx1ZSwgaW5kZW50PTEpOgotICAgICAgICAiIiJXcml0ZSBvdXQgbWV0YSBpbmZvcm1hdGlv
biwgd2l0aCBwcm9wZXIgaW5kZW50aW5nLCBldGMiIiIKKyAgICBkZWYgX3dyaXRlKHNlbGYsIGtl
eSwgdmFsdWUsIGluZGVudD0xLCB0cmFpbGluZ19zcGFjZV93aGVuX2VtcHR5PUZhbHNlKToKKyAg
ICAgICAgIiIiV3JpdGUgb3V0IG1ldGEgaW5mb3JtYXRpb24sIHdpdGggcHJvcGVyIGluZGVudGlu
ZywgZXRjLgorCisgICAgICAgIDpwYXJhbSB0cmFpbGluZ19zcGFjZV93aGVuX2VtcHR5OiBUbyB3
b3JrIGFyb3VuZCBhIGJ1ZyBpbiBlYXJsaWVyCisgICAgICAgICAgICBidW5kbGUgcmVhZGVycywg
d2hlbiB3cml0aW5nIGFuIGVtcHR5IHByb3BlcnR5LCB3ZSB1c2UgInByb3A6IFxuIgorICAgICAg
ICAgICAgcmF0aGVyIHRoYW4gd3JpdGluZyAicHJvcDpcbiIuCisgICAgICAgICAgICBJZiB0aGlz
IHBhcmFtZXRlciBpcyBUcnVlLCBhbmQgdmFsdWUgaXMgdGhlIGVtcHR5IHN0cmluZywgd2Ugd2ls
bAorICAgICAgICAgICAgd3JpdGUgYW4gZXh0cmEgc3BhY2UuCisgICAgICAgICIiIgogICAgICAg
ICBhc3NlcnQgaW5kZW50ID4gMCwgJ2luZGVudGF0aW9uIG11c3QgYmUgZ3JlYXRlciB0aGFuIDAn
CiAgICAgICAgIGYgPSBzZWxmLnRvX2ZpbGUKICAgICAgICAgZi53cml0ZSgnIycgKyAoJyAnICog
aW5kZW50KSkKICAgICAgICAgZi53cml0ZShrZXkuZW5jb2RlKCd1dGYtOCcpKQogICAgICAgICBp
ZiBub3QgdmFsdWU6Ci0gICAgICAgICAgICBmLndyaXRlKCc6XG4nKQorICAgICAgICAgICAgaWYg
dHJhaWxpbmdfc3BhY2Vfd2hlbl9lbXB0eSBhbmQgdmFsdWUgPT0gJyc6CisgICAgICAgICAgICAg
ICAgZi53cml0ZSgnOiBcbicpCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIGYu
d3JpdGUoJzpcbicpCiAgICAgICAgIGVsaWYgaXNpbnN0YW5jZSh2YWx1ZSwgc3RyKToKICAgICAg
ICAgICAgIGYud3JpdGUoJzogJykKICAgICAgICAgICAgIGYud3JpdGUodmFsdWUpCkBAIC0yMjUs
OCArMjM1LDkgQEAKICAgICAgICAgICAgIHcoJ2Jhc2UgaWQnLCBiYXNlX3JldikKICAgICAgICAg
aWYgcmV2LnByb3BlcnRpZXM6CiAgICAgICAgICAgICBzZWxmLl93cml0ZSgncHJvcGVydGllcycs
IE5vbmUsIGluZGVudD0xKQotICAgICAgICAgICAgZm9yIG5hbWUsIHZhbHVlIGluIHJldi5wcm9w
ZXJ0aWVzLml0ZW1zKCk6Ci0gICAgICAgICAgICAgICAgc2VsZi5fd3JpdGUobmFtZSwgdmFsdWUs
IGluZGVudD0zKQorICAgICAgICAgICAgZm9yIG5hbWUsIHZhbHVlIGluIHNvcnRlZChyZXYucHJv
cGVydGllcy5pdGVtcygpKToKKyAgICAgICAgICAgICAgICBzZWxmLl93cml0ZShuYW1lLCB2YWx1
ZSwgaW5kZW50PTMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhaWxpbmdfc3BhY2Vf
d2hlbl9lbXB0eT1UcnVlKQogICAgICAgICAKICAgICAgICAgIyBBZGQgYW4gZXh0cmEgYmxhbmsg
c3BhY2UgYXQgdGhlIGVuZAogICAgICAgICBzZWxmLnRvX2ZpbGUud3JpdGUoJ1xuJykKCg==

=== modified file bzrlib/bzrdir.py // last-changed:john@arbash-meinel.com-20070
... 502145420-k2vebnl0rd45q8kk // encoding:base64
LS0tIGJ6cmxpYi9ienJkaXIucHkKKysrIGJ6cmxpYi9ienJkaXIucHkKQEAgLTIyLDkgKzIyLDYg
QEAKIAogIyBUT0RPOiByZW1vdmUgdW5pdHRlc3QgZGVwZW5kZW5jeTsgcHV0IHRoYXQgc3R1ZmYg
aW5zaWRlIHRoZSB0ZXN0IHN1aXRlCiAKLSMgVE9ETzogVGhlIEZvcm1hdCBwcm9iZV90cmFuc3Bv
cnQgc2VlbXMgYSBiaXQgcmVkdW5kYW50IHdpdGgganVzdCB0cnlpbmcgdG8KLSMgb3BlbiB0aGUg
YnpyZGlyLiAtLSBtYnAKLSMKICMgVE9ETzogQ2FuIHdlIG1vdmUgc3BlY2lmaWMgZm9ybWF0cyBp
bnRvIHNlcGFyYXRlIG1vZHVsZXMgdG8gbWFrZSB0aGlzIGZpbGUKICMgc21hbGxlcj8KIApAQCAt
NDQsNiArNDEsNyBAQAogICAgIGxvY2thYmxlX2ZpbGVzLAogICAgIGxvY2tkaXIsCiAgICAgcmVn
aXN0cnksCisgICAgcmVtb3RlLAogICAgIHJldmlzaW9uIGFzIF9tb2RfcmV2aXNpb24sCiAgICAg
c3ltYm9sX3ZlcnNpb25pbmcsCiAgICAgdWksCkBAIC01OCw2ICs1Niw4IEBACiAgICAgc2hhX3N0
cmluZ3MsCiAgICAgc2hhX3N0cmluZywKICAgICApCitmcm9tIGJ6cmxpYi5zbWFydC5jbGllbnQg
aW1wb3J0IF9TbWFydENsaWVudAorZnJvbSBienJsaWIuc21hcnQgaW1wb3J0IHByb3RvY29sCiBm
cm9tIGJ6cmxpYi5zdG9yZS5yZXZpc2lvbi50ZXh0IGltcG9ydCBUZXh0UmV2aXNpb25TdG9yZQog
ZnJvbSBienJsaWIuc3RvcmUudGV4dCBpbXBvcnQgVGV4dFN0b3JlCiBmcm9tIGJ6cmxpYi5zdG9y
ZS52ZXJzaW9uZWQgaW1wb3J0IFdlYXZlU3RvcmUKQEAgLTk0LDYgKzk0LDggQEAKICAgICAgICAg
SWYgdGhlcmUgaXMgYSB0cmVlLCB0aGUgdHJlZSBpcyBvcGVuZWQgYW5kIGJyZWFrX2xvY2soKSBj
YWxsZWQuCiAgICAgICAgIE90aGVyd2lzZSwgYnJhbmNoIGlzIHRyaWVkLCBhbmQgZmluYWxseSBy
ZXBvc2l0b3J5LgogICAgICAgICAiIiIKKyAgICAgICAgIyBYWFg6IFRoaXMgc2VlbXMgbW9yZSBs
aWtlIGEgVUkgZnVuY3Rpb24gdGhhbiBzb21ldGhpbmcgdGhhdCByZWFsbHkKKyAgICAgICAgIyBi
ZWxvbmdzIGluIHRoaXMgY2xhc3MuCiAgICAgICAgIHRyeToKICAgICAgICAgICAgIHRoaW5nX3Rv
X3VubG9jayA9IHNlbGYub3Blbl93b3JraW5ndHJlZSgpCiAgICAgICAgIGV4Y2VwdCAoZXJyb3Jz
Lk5vdExvY2FsVXJsLCBlcnJvcnMuTm9Xb3JraW5nVHJlZSk6CkBAIC0xNTMsOCArMTU1LDIzIEBA
CiAgICAgICAgIDpwYXJhbSBmb3JjZV9uZXdfcmVwbzogRG8gbm90IHVzZSBhIHNoYXJlZCByZXBv
c2l0b3J5IGZvciB0aGUgdGFyZ2V0IAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV2
ZW4gaWYgb25lIGlzIGF2YWlsYWJsZS4KICAgICAgICAgIiIiCi0gICAgICAgIHNlbGYuX21ha2Vf
dGFpbCh1cmwpCi0gICAgICAgIHJlc3VsdCA9IHNlbGYuX2Zvcm1hdC5pbml0aWFsaXplKHVybCkK
KyAgICAgICAgcmV0dXJuIHNlbGYuY2xvbmVfb25fdHJhbnNwb3J0KGdldF90cmFuc3BvcnQodXJs
KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldmlzaW9uX2lkPXJl
dmlzaW9uX2lkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yY2Vf
bmV3X3JlcG89Zm9yY2VfbmV3X3JlcG8pCisKKyAgICBkZWYgY2xvbmVfb25fdHJhbnNwb3J0KHNl
bGYsIHRyYW5zcG9ydCwgcmV2aXNpb25faWQ9Tm9uZSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGZvcmNlX25ld19yZXBvPUZhbHNlKToKKyAgICAgICAgIiIiQ2xvbmUgdGhpcyBienJkaXIg
YW5kIGl0cyBjb250ZW50cyB0byB0cmFuc3BvcnQgdmVyYmF0aW0uCisKKyAgICAgICAgSWYgdGhl
IHRhcmdldCBkaXJlY3RvcnkgZG9lcyBub3QgZXhpc3QsIGl0IHdpbGwgYmUgY3JlYXRlZC4KKwor
ICAgICAgICBpZiByZXZpc2lvbl9pZCBpcyBub3QgTm9uZSwgdGhlbiB0aGUgY2xvbmUgb3BlcmF0
aW9uIG1heSB0dW5lCisgICAgICAgICAgICBpdHNlbGYgdG8gZG93bmxvYWQgbGVzcyBkYXRhLgor
ICAgICAgICA6cGFyYW0gZm9yY2VfbmV3X3JlcG86IERvIG5vdCB1c2UgYSBzaGFyZWQgcmVwb3Np
dG9yeSBmb3IgdGhlIHRhcmdldCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBldmVu
IGlmIG9uZSBpcyBhdmFpbGFibGUuCisgICAgICAgICIiIgorICAgICAgICB0cmFuc3BvcnQuZW5z
dXJlX2Jhc2UoKQorICAgICAgICByZXN1bHQgPSBzZWxmLl9mb3JtYXQuaW5pdGlhbGl6ZV9vbl90
cmFuc3BvcnQodHJhbnNwb3J0KQogICAgICAgICB0cnk6CiAgICAgICAgICAgICBsb2NhbF9yZXBv
ID0gc2VsZi5maW5kX3JlcG9zaXRvcnkoKQogICAgICAgICBleGNlcHQgZXJyb3JzLk5vUmVwb3Np
dG9yeVByZXNlbnQ6CkBAIC0xOTMsMTMgKzIxMCw4IEBACiAgICAgIyBUT0RPOiBUaGlzIHNob3Vs
ZCBiZSBnaXZlbiBhIFRyYW5zcG9ydCwgYW5kIHNob3VsZCBjaGRpciB1cDsgb3RoZXJ3aXNlCiAg
ICAgIyB0aGlzIHdpbGwgb3BlbiBhIG5ldyBjb25uZWN0aW9uLgogICAgIGRlZiBfbWFrZV90YWls
KHNlbGYsIHVybCk6Ci0gICAgICAgIGhlYWQsIHRhaWwgPSB1cmx1dGlscy5zcGxpdCh1cmwpCi0g
ICAgICAgIGlmIHRhaWwgYW5kIHRhaWwgIT0gJy4nOgotICAgICAgICAgICAgdCA9IGdldF90cmFu
c3BvcnQoaGVhZCkKLSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICB0Lm1rZGlyKHRh
aWwpCi0gICAgICAgICAgICBleGNlcHQgZXJyb3JzLkZpbGVFeGlzdHM6Ci0gICAgICAgICAgICAg
ICAgcGFzcworICAgICAgICB0ID0gZ2V0X3RyYW5zcG9ydCh1cmwpCisgICAgICAgIHQuZW5zdXJl
X2Jhc2UoKQogCiAgICAgIyBUT0RPOiBTaG91bGQgdGFrZSBhIFRyYW5zcG9ydAogICAgIEBjbGFz
c21ldGhvZApAQCAtMjE1LDEzICsyMjcsOCBAQAogICAgICAgICBpZiBjbHMgaXMgbm90IEJ6ckRp
cjoKICAgICAgICAgICAgIHJhaXNlIEFzc2VydGlvbkVycm9yKCJCenJEaXIuY3JlYXRlIGFsd2F5
cyBjcmVhdGVzIHRoZSBkZWZhdWx0IgogICAgICAgICAgICAgICAgICIgZm9ybWF0LCBub3Qgb25l
IG9mICVyIiAlIGNscykKLSAgICAgICAgaGVhZCwgdGFpbCA9IHVybHV0aWxzLnNwbGl0KGJhc2Up
Ci0gICAgICAgIGlmIHRhaWwgYW5kIHRhaWwgIT0gJy4nOgotICAgICAgICAgICAgdCA9IGdldF90
cmFuc3BvcnQoaGVhZCkKLSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICB0Lm1rZGly
KHRhaWwpCi0gICAgICAgICAgICBleGNlcHQgZXJyb3JzLkZpbGVFeGlzdHM6Ci0gICAgICAgICAg
ICAgICAgcGFzcworICAgICAgICB0ID0gZ2V0X3RyYW5zcG9ydChiYXNlKQorICAgICAgICB0LmVu
c3VyZV9iYXNlKCkKICAgICAgICAgaWYgZm9ybWF0IGlzIE5vbmU6CiAgICAgICAgICAgICBmb3Jt
YXQgPSBCenJEaXJGb3JtYXQuZ2V0X2RlZmF1bHRfZm9ybWF0KCkKICAgICAgICAgcmV0dXJuIGZv
cm1hdC5pbml0aWFsaXplKHNhZmVfdW5pY29kZShiYXNlKSkKQEAgLTQxMywxMyArNDIwLDIyIEBA
CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrCiAgICAgICAgICAgICAgICAgZWxzZToKICAgICAg
ICAgICAgICAgICAgICAgY29udGludWUKLSAgICAgICAgICAgIGlmICgoZm91bmRfYnpyZGlyLnJv
b3RfdHJhbnNwb3J0LmJhc2UgPT0gCisgICAgICAgICAgICBpZiAoKGZvdW5kX2J6cmRpci5yb290
X3RyYW5zcG9ydC5iYXNlID09CiAgICAgICAgICAgICAgICAgIHNlbGYucm9vdF90cmFuc3BvcnQu
YmFzZSkgb3IgcmVwb3NpdG9yeS5pc19zaGFyZWQoKSk6CiAgICAgICAgICAgICAgICAgcmV0dXJu
IHJlcG9zaXRvcnkKICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgcmFpc2UgZXJy
b3JzLk5vUmVwb3NpdG9yeVByZXNlbnQoc2VsZikKICAgICAgICAgcmFpc2UgZXJyb3JzLk5vUmVw
b3NpdG9yeVByZXNlbnQoc2VsZikKIAorICAgIGRlZiBnZXRfYnJhbmNoX3JlZmVyZW5jZShzZWxm
KToKKyAgICAgICAgIiIiUmV0dXJuIHRoZSByZWZlcmVuY2VkIFVSTCBmb3IgdGhlIGJyYW5jaCBp
biB0aGlzIGJ6cmRpci4KKworICAgICAgICA6cmFpc2VzIE5vdEJyYW5jaEVycm9yOiBJZiB0aGVy
ZSBpcyBubyBCcmFuY2guCisgICAgICAgIDpyZXR1cm46IFRoZSBVUkwgdGhlIGJyYW5jaCBpbiB0
aGlzIGJ6cmRpciByZWZlcmVuY2VzIGlmIGl0IGlzIGEKKyAgICAgICAgICAgIHJlZmVyZW5jZSBi
cmFuY2gsIG9yIE5vbmUgZm9yIHJlZ3VsYXIgYnJhbmNoZXMuCisgICAgICAgICIiIgorICAgICAg
ICByZXR1cm4gTm9uZQorCiAgICAgZGVmIGdldF9icmFuY2hfdHJhbnNwb3J0KHNlbGYsIGJyYW5j
aF9mb3JtYXQpOgogICAgICAgICAiIiJHZXQgdGhlIHRyYW5zcG9ydCBmb3IgdXNlIGJ5IGJyYW5j
aCBmb3JtYXQgaW4gdGhpcyBCenJEaXIuCiAKQEAgLTUxNyw3ICs1MzMsOCBAQAogICAgICAgICBy
ZXR1cm4gQnpyRGlyLm9wZW5fZnJvbV90cmFuc3BvcnQodCwgX3Vuc3VwcG9ydGVkPV91bnN1cHBv
cnRlZCkKIAogICAgIEBzdGF0aWNtZXRob2QKLSAgICBkZWYgb3Blbl9mcm9tX3RyYW5zcG9ydCh0
cmFuc3BvcnQsIF91bnN1cHBvcnRlZD1GYWxzZSk6CisgICAgZGVmIG9wZW5fZnJvbV90cmFuc3Bv
cnQodHJhbnNwb3J0LCBfdW5zdXBwb3J0ZWQ9RmFsc2UsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgX3NlcnZlcl9mb3JtYXRzPVRydWUpOgogICAgICAgICAiIiJPcGVuIGEgYnpyZGlyIHdp
dGhpbiBhIHBhcnRpY3VsYXIgZGlyZWN0b3J5LgogCiAgICAgICAgIDpwYXJhbSB0cmFuc3BvcnQ6
IFRyYW5zcG9ydCBjb250YWluaW5nIHRoZSBienJkaXIuCkBAIC01MjYsNyArNTQzLDggQEAKICAg
ICAgICAgYmFzZSA9IHRyYW5zcG9ydC5iYXNlCiAKICAgICAgICAgZGVmIGZpbmRfZm9ybWF0KHRy
YW5zcG9ydCk6Ci0gICAgICAgICAgICByZXR1cm4gdHJhbnNwb3J0LCBCenJEaXJGb3JtYXQuZmlu
ZF9mb3JtYXQodHJhbnNwb3J0KQorICAgICAgICAgICAgcmV0dXJuIHRyYW5zcG9ydCwgQnpyRGly
Rm9ybWF0LmZpbmRfZm9ybWF0KAorICAgICAgICAgICAgICAgIHRyYW5zcG9ydCwgX3NlcnZlcl9m
b3JtYXRzPV9zZXJ2ZXJfZm9ybWF0cykKIAogICAgICAgICBkZWYgcmVkaXJlY3RlZCh0cmFuc3Bv
cnQsIGUsIHJlZGlyZWN0aW9uX25vdGljZSk6CiAgICAgICAgICAgICBxdWFsaWZpZWRfc291cmNl
ID0gZS5nZXRfc291cmNlX3VybCgpCkBAIC01OTgsNyArNjE2LDExIEBACiAgICAgICAgICAgICAg
ICAgcmV0dXJuIHJlc3VsdCwgdXJsdXRpbHMudW5lc2NhcGUoYV90cmFuc3BvcnQucmVscGF0aCh1
cmwpKQogICAgICAgICAgICAgZXhjZXB0IGVycm9ycy5Ob3RCcmFuY2hFcnJvciwgZToKICAgICAg
ICAgICAgICAgICBwYXNzCi0gICAgICAgICAgICBuZXdfdCA9IGFfdHJhbnNwb3J0LmNsb25lKCcu
LicpCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgbmV3X3QgPSBhX3RyYW5zcG9y
dC5jbG9uZSgnLi4nKQorICAgICAgICAgICAgZXhjZXB0IGVycm9ycy5JbnZhbGlkVVJMSm9pbjoK
KyAgICAgICAgICAgICAgICAjIHJlYWNoZWQgdGhlIHJvb3QsIHdoYXRldmVyIHRoYXQgbWF5IGJl
CisgICAgICAgICAgICAgICAgcmFpc2UgZXJyb3JzLk5vdEJyYW5jaEVycm9yKHBhdGg9dXJsKQog
ICAgICAgICAgICAgaWYgbmV3X3QuYmFzZSA9PSBhX3RyYW5zcG9ydC5iYXNlOgogICAgICAgICAg
ICAgICAgICMgcmVhY2hlZCB0aGUgcm9vdCwgd2hhdGV2ZXIgdGhhdCBtYXkgYmUKICAgICAgICAg
ICAgICAgICByYWlzZSBlcnJvcnMuTm90QnJhbmNoRXJyb3IocGF0aD11cmwpCkBAIC02MzYsMTAg
KzY1OCwxNCBAQAogICAgICAgICAiIiIKICAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJv
cihzZWxmLm9wZW5fcmVwb3NpdG9yeSkKIAotICAgIGRlZiBvcGVuX3dvcmtpbmd0cmVlKHNlbGYs
IF91bnN1cHBvcnRlZD1GYWxzZSk6CisgICAgZGVmIG9wZW5fd29ya2luZ3RyZWUoc2VsZiwgX3Vu
c3VwcG9ydGVkPUZhbHNlLAorICAgICAgICAgICAgcmVjb21tZW5kX3VwZ3JhZGU9VHJ1ZSk6CiAg
ICAgICAgICIiIk9wZW4gdGhlIHdvcmtpbmd0cmVlIG9iamVjdCBhdCB0aGlzIEJ6ckRpciBpZiBv
bmUgaXMgcHJlc2VudC4KLSAgICAgICAgCi0gICAgICAgIFRPRE86IHN0YXRpYyBjb252ZW5pZW5j
ZSB2ZXJzaW9uIG9mIHRoaXM/CisKKyAgICAgICAgOnBhcmFtIHJlY29tbWVuZF91cGdyYWRlOiBP
cHRpb25hbCBrZXl3b3JkIHBhcmFtZXRlciwgd2hlbiBUcnVlICh0aGUKKyAgICAgICAgICAgIGRl
ZmF1bHQpLCBlbWl0IHRocm91Z2ggdGhlIHVpIG1vZHVsZSBhIHJlY29tbWVuZGF0aW9uIHRoYXQg
dGhlIHVzZXIKKyAgICAgICAgICAgIHVwZ3JhZGUgdGhlIHdvcmtpbmcgdHJlZSB3aGVuIHRoZSB3
b3JraW5ndHJlZSBiZWluZyBvcGVuZWQgaXMgb2xkCisgICAgICAgICAgICAoYnV0IHN0aWxsIGZ1
bGx5IHN1cHBvcnRlZCkuCiAgICAgICAgICIiIgogICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRl
ZEVycm9yKHNlbGYub3Blbl93b3JraW5ndHJlZSkKIApAQCAtNjczLDYgKzY5OSw3IEBACiAgICAg
ICAgICAgICByZXR1cm4gRmFsc2UKIAogICAgIGRlZiBfY2xvbmluZ19tZXRhZGlyKHNlbGYpOgor
ICAgICAgICAiIiJQcm9kdWNlIGEgbWV0YWRpciBzdWl0YWJsZSBmb3IgY2xvbmluZyB3aXRoIiIi
CiAgICAgICAgIHJlc3VsdF9mb3JtYXQgPSBzZWxmLl9mb3JtYXQuX19jbGFzc19fKCkKICAgICAg
ICAgdHJ5OgogICAgICAgICAgICAgdHJ5OgpAQCAtNjgxLDkgKzcwOCwxNSBAQAogICAgICAgICAg
ICAgZXhjZXB0IGVycm9ycy5Ob3RCcmFuY2hFcnJvcjoKICAgICAgICAgICAgICAgICBzb3VyY2Vf
YnJhbmNoID0gTm9uZQogICAgICAgICAgICAgICAgIHNvdXJjZV9yZXBvc2l0b3J5ID0gc2VsZi5v
cGVuX3JlcG9zaXRvcnkoKQotICAgICAgICAgICAgcmVzdWx0X2Zvcm1hdC5yZXBvc2l0b3J5X2Zv
cm1hdCA9IHNvdXJjZV9yZXBvc2l0b3J5Ll9mb3JtYXQKICAgICAgICAgZXhjZXB0IGVycm9ycy5O
b1JlcG9zaXRvcnlQcmVzZW50OgogICAgICAgICAgICAgc291cmNlX3JlcG9zaXRvcnkgPSBOb25l
CisgICAgICAgIGVsc2U6CisgICAgICAgICAgICAjIFhYWCBUT0RPOiBUaGlzIGlzaW5zdGFuY2Ug
aXMgaGVyZSBiZWNhdXNlIHdlIGhhdmUgbm90IGltcGxlbWVudGVkCisgICAgICAgICAgICAjIHRo
ZSBmaXggcmVjb21tZW5kZWQgaW4gYnVnICMgMTAzMTk1IC0gdG8gZGVsZWdhdGUgdGhpcyBjaG9p
Y2UgdGhlCisgICAgICAgICAgICAjIHJlcG9zaXRvcnkgaXRzZWxmLgorICAgICAgICAgICAgcmVw
b19mb3JtYXQgPSBzb3VyY2VfcmVwb3NpdG9yeS5fZm9ybWF0CisgICAgICAgICAgICBpZiBub3Qg
aXNpbnN0YW5jZShyZXBvX2Zvcm1hdCwgcmVtb3RlLlJlbW90ZVJlcG9zaXRvcnlGb3JtYXQpOgor
ICAgICAgICAgICAgICAgIHJlc3VsdF9mb3JtYXQucmVwb3NpdG9yeV9mb3JtYXQgPSByZXBvX2Zv
cm1hdAogICAgICAgICB0cnk6CiAgICAgICAgICAgICAjIFRPRE86IENvdWxkbid0IHdlIGp1c3Qg
cHJvYmUgZm9yIHRoZSBmb3JtYXQgaW4gdGhlc2UgY2FzZXMsCiAgICAgICAgICAgICAjIHJhdGhl
ciB0aGFuIG9wZW5pbmcgdGhlIHdob2xlIHRyZWU/ICBJdCB3b3VsZCBiZSBhIGxpdHRsZQpAQCAt
NzI4LDkgKzc2MSwxMCBAQAogICAgICAgICBpZiByZXZpc2lvbl9pZCBpcyBub3QgTm9uZSwgdGhl
biB0aGUgY2xvbmUgb3BlcmF0aW9uIG1heSB0dW5lCiAgICAgICAgICAgICBpdHNlbGYgdG8gZG93
bmxvYWQgbGVzcyBkYXRhLgogICAgICAgICAiIiIKLSAgICAgICAgc2VsZi5fbWFrZV90YWlsKHVy
bCkKKyAgICAgICAgdGFyZ2V0X3RyYW5zcG9ydCA9IGdldF90cmFuc3BvcnQodXJsKQorICAgICAg
ICB0YXJnZXRfdHJhbnNwb3J0LmVuc3VyZV9iYXNlKCkKICAgICAgICAgY2xvbmluZ19mb3JtYXQg
PSBzZWxmLmNsb25pbmdfbWV0YWRpcigpCi0gICAgICAgIHJlc3VsdCA9IGNsb25pbmdfZm9ybWF0
LmluaXRpYWxpemUodXJsKQorICAgICAgICByZXN1bHQgPSBjbG9uaW5nX2Zvcm1hdC5pbml0aWFs
aXplX29uX3RyYW5zcG9ydCh0YXJnZXRfdHJhbnNwb3J0KQogICAgICAgICB0cnk6CiAgICAgICAg
ICAgICBzb3VyY2VfYnJhbmNoID0gc2VsZi5vcGVuX2JyYW5jaCgpCiAgICAgICAgICAgICBzb3Vy
Y2VfcmVwb3NpdG9yeSA9IHNvdXJjZV9icmFuY2gucmVwb3NpdG9yeQpAQCAtNzU0LDEzICs3ODgs
MTMgQEAKICAgICAgICAgICAgIHJlc3VsdC5jcmVhdGVfcmVwb3NpdG9yeSgpCiAgICAgICAgIGVs
aWYgc291cmNlX3JlcG9zaXRvcnkgaXMgbm90IE5vbmUgYW5kIHJlc3VsdF9yZXBvIGlzIE5vbmU6
CiAgICAgICAgICAgICAjIGhhdmUgc291cmNlLCBhbmQgd2FudCB0byBtYWtlIGEgbmV3IHRhcmdl
dCByZXBvCi0gICAgICAgICAgICAjIHdlIGRvbid0IGNsb25lIHRoZSByZXBvIGJlY2F1c2UgdGhh
dCBwcmVzZXJ2ZXMgYXR0cmlidXRlcwotICAgICAgICAgICAgIyBsaWtlIGlzX3NoYXJlZCgpLCBh
bmQgd2UgaGF2ZSBub3QgeWV0IGltcGxlbWVudGVkIGEgCi0gICAgICAgICAgICAjIHJlcG9zaXRv
cnkgc3Byb3V0KCkuCi0gICAgICAgICAgICByZXN1bHRfcmVwbyA9IHJlc3VsdC5jcmVhdGVfcmVw
b3NpdG9yeSgpCi0gICAgICAgIGlmIHJlc3VsdF9yZXBvIGlzIG5vdCBOb25lOgorICAgICAgICAg
ICAgcmVzdWx0X3JlcG8gPSBzb3VyY2VfcmVwb3NpdG9yeS5zcHJvdXQocmVzdWx0LCByZXZpc2lv
bl9pZD1yZXZpc2lvbl9pZCkKKyAgICAgICAgZWxzZToKICAgICAgICAgICAgICMgZmV0Y2ggbmVl
ZGVkIGNvbnRlbnQgaW50byB0YXJnZXQuCiAgICAgICAgICAgICBpZiBzb3VyY2VfcmVwb3NpdG9y
eSBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICAjIHdvdWxkIHJhdGhlciBkbyAKKyAgICAg
ICAgICAgICAgICAjIHNvdXJjZV9yZXBvc2l0b3J5LmNvcHlfY29udGVudF9pbnRvKHJlc3VsdF9y
ZXBvLCByZXZpc2lvbl9pZD1yZXZpc2lvbl9pZCkKKyAgICAgICAgICAgICAgICAjIHNvIHdlIGNh
biBvdmVycmlkZSB0aGUgY29weSBtZXRob2QKICAgICAgICAgICAgICAgICByZXN1bHRfcmVwby5m
ZXRjaChzb3VyY2VfcmVwb3NpdG9yeSwgcmV2aXNpb25faWQ9cmV2aXNpb25faWQpCiAgICAgICAg
IGlmIHNvdXJjZV9icmFuY2ggaXMgbm90IE5vbmU6CiAgICAgICAgICAgICBzb3VyY2VfYnJhbmNo
LnNwcm91dChyZXN1bHQsIHJldmlzaW9uX2lkPXJldmlzaW9uX2lkKQpAQCAtMTA0NCwxMiArMTA3
OCwyNiBAQAogICAgIGRlZiBkZXN0cm95X3dvcmtpbmd0cmVlX21ldGFkYXRhKHNlbGYpOgogICAg
ICAgICBzZWxmLnRyYW5zcG9ydC5kZWxldGVfdHJlZSgnY2hlY2tvdXQnKQogCisgICAgZGVmIGZp
bmRfYnJhbmNoX2Zvcm1hdChzZWxmKToKKyAgICAgICAgIiIiRmluZCB0aGUgYnJhbmNoICdmb3Jt
YXQnIGZvciB0aGlzIGJ6cmRpci4KKworICAgICAgICBUaGlzIG1pZ2h0IGJlIGEgc3ludGhldGlj
IG9iamVjdCBmb3IgZS5nLiBSZW1vdGVCcmFuY2ggYW5kIFNWTi4KKyAgICAgICAgIiIiCisgICAg
ICAgIGZyb20gYnpybGliLmJyYW5jaCBpbXBvcnQgQnJhbmNoRm9ybWF0CisgICAgICAgIHJldHVy
biBCcmFuY2hGb3JtYXQuZmluZF9mb3JtYXQoc2VsZikKKwogICAgIGRlZiBfZ2V0X21rZGlyX21v
ZGUoc2VsZik6CiAgICAgICAgICIiIkZpZ3VyZSBvdXQgdGhlIG1vZGUgdG8gdXNlIHdoZW4gY3Jl
YXRpbmcgYSBienJkaXIgc3ViZGlyLiIiIgogICAgICAgICB0ZW1wX2NvbnRyb2wgPSBsb2NrYWJs
ZV9maWxlcy5Mb2NrYWJsZUZpbGVzKHNlbGYudHJhbnNwb3J0LCAnJywKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBsb2NrYWJsZV9maWxlcy5UcmFuc3BvcnRMb2NrKQogICAg
ICAgICByZXR1cm4gdGVtcF9jb250cm9sLl9kaXJfbW9kZQogCisgICAgZGVmIGdldF9icmFuY2hf
cmVmZXJlbmNlKHNlbGYpOgorICAgICAgICAiIiJTZWUgQnpyRGlyLmdldF9icmFuY2hfcmVmZXJl
bmNlKCkuIiIiCisgICAgICAgIGZyb20gYnpybGliLmJyYW5jaCBpbXBvcnQgQnJhbmNoRm9ybWF0
CisgICAgICAgIGZvcm1hdCA9IEJyYW5jaEZvcm1hdC5maW5kX2Zvcm1hdChzZWxmKQorICAgICAg
ICByZXR1cm4gZm9ybWF0LmdldF9yZWZlcmVuY2Uoc2VsZikKKwogICAgIGRlZiBnZXRfYnJhbmNo
X3RyYW5zcG9ydChzZWxmLCBicmFuY2hfZm9ybWF0KToKICAgICAgICAgIiIiU2VlIEJ6ckRpci5n
ZXRfYnJhbmNoX3RyYW5zcG9ydCgpLiIiIgogICAgICAgICBpZiBicmFuY2hfZm9ybWF0IGlzIE5v
bmU6CkBAIC0xMTI2LDggKzExNzQsNyBAQAogCiAgICAgZGVmIG9wZW5fYnJhbmNoKHNlbGYsIHVu
c3VwcG9ydGVkPUZhbHNlKToKICAgICAgICAgIiIiU2VlIEJ6ckRpci5vcGVuX2JyYW5jaC4iIiIK
LSAgICAgICAgZnJvbSBienJsaWIuYnJhbmNoIGltcG9ydCBCcmFuY2hGb3JtYXQKLSAgICAgICAg
Zm9ybWF0ID0gQnJhbmNoRm9ybWF0LmZpbmRfZm9ybWF0KHNlbGYpCisgICAgICAgIGZvcm1hdCA9
IHNlbGYuZmluZF9icmFuY2hfZm9ybWF0KCkKICAgICAgICAgc2VsZi5fY2hlY2tfc3VwcG9ydGVk
KGZvcm1hdCwgdW5zdXBwb3J0ZWQpCiAgICAgICAgIHJldHVybiBmb3JtYXQub3BlbihzZWxmLCBf
Zm91bmQ9VHJ1ZSkKIApAQCAtMTE3OCwxNSArMTIyNSwyNSBAQAogICAgIFRoaXMgaXMgYSBsaXN0
IG9mIEJ6ckRpckZvcm1hdCBvYmplY3RzLgogICAgICIiIgogCisgICAgX2NvbnRyb2xfc2VydmVy
X2Zvcm1hdHMgPSBbXQorICAgICIiIlRoZSByZWdpc3RlcmVkIGNvbnRyb2wgc2VydmVyIGZvcm1h
dHMsIGUuZy4gUmVtb3RlQnpyRGlycy4KKworICAgIFRoaXMgaXMgYSBsaXN0IG9mIEJ6ckRpckZv
cm1hdCBvYmplY3RzLgorICAgICIiIgorCiAgICAgX2xvY2tfZmlsZV9uYW1lID0gJ2JyYW5jaC1s
b2NrJwogCiAgICAgIyBfbG9ja19jbGFzcyBtdXN0IGJlIHNldCBpbiBzdWJjbGFzc2VzIHRvIHRo
ZSBsb2NrIHR5cGUsIHR5cC4KICAgICAjIFRyYW5zcG9ydExvY2sgb3IgTG9ja0RpcgogCiAgICAg
QGNsYXNzbWV0aG9kCi0gICAgZGVmIGZpbmRfZm9ybWF0KGtsYXNzLCB0cmFuc3BvcnQpOgorICAg
IGRlZiBmaW5kX2Zvcm1hdChrbGFzcywgdHJhbnNwb3J0LCBfc2VydmVyX2Zvcm1hdHM9VHJ1ZSk6
CiAgICAgICAgICIiIlJldHVybiB0aGUgZm9ybWF0IHByZXNlbnQgYXQgdHJhbnNwb3J0LiIiIgot
ICAgICAgICBmb3IgZm9ybWF0IGluIGtsYXNzLl9jb250cm9sX2Zvcm1hdHM6CisgICAgICAgIGlm
IF9zZXJ2ZXJfZm9ybWF0czoKKyAgICAgICAgICAgIGZvcm1hdHMgPSBrbGFzcy5fY29udHJvbF9z
ZXJ2ZXJfZm9ybWF0cyArIGtsYXNzLl9jb250cm9sX2Zvcm1hdHMKKyAgICAgICAgZWxzZToKKyAg
ICAgICAgICAgIGZvcm1hdHMgPSBrbGFzcy5fY29udHJvbF9mb3JtYXRzCisgICAgICAgIGZvciBm
b3JtYXQgaW4gZm9ybWF0czoKICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICByZXR1
cm4gZm9ybWF0LnByb2JlX3RyYW5zcG9ydCh0cmFuc3BvcnQpCiAgICAgICAgICAgICBleGNlcHQg
ZXJyb3JzLk5vdEJyYW5jaEVycm9yOgpAQCAtMTE5Niw3ICsxMjUzLDcgQEAKIAogICAgIEBjbGFz
c21ldGhvZAogICAgIGRlZiBwcm9iZV90cmFuc3BvcnQoa2xhc3MsIHRyYW5zcG9ydCk6Ci0gICAg
ICAgICIiIlJldHVybiB0aGUgLmJ6cmRpciBzdHlsZSB0cmFuc3BvcnQgcHJlc2VudCBhdCBVUkwu
IiIiCisgICAgICAgICIiIlJldHVybiB0aGUgLmJ6cmRpciBzdHlsZSBmb3JtYXQgcHJlc2VudCBp
biBhIGRpcmVjdG9yeS4iIiIKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgZm9ybWF0X3N0cmlu
ZyA9IHRyYW5zcG9ydC5nZXQoIi5ienIvYnJhbmNoLWZvcm1hdCIpLnJlYWQoKQogICAgICAgICBl
eGNlcHQgZXJyb3JzLk5vU3VjaEZpbGU6CkBAIC0xMzQyLDYgKzEzOTksMTcgQEAKICAgICAgICAg
a2xhc3MuX2NvbnRyb2xfZm9ybWF0cy5hcHBlbmQoZm9ybWF0KQogCiAgICAgQGNsYXNzbWV0aG9k
CisgICAgZGVmIHJlZ2lzdGVyX2NvbnRyb2xfc2VydmVyX2Zvcm1hdChrbGFzcywgZm9ybWF0KToK
KyAgICAgICAgIiIiUmVnaXN0ZXIgYSBjb250cm9sIGZvcm1hdCBmb3IgY2xpZW50LXNlcnZlciBl
bnZpcm9ubWVudHMuCisKKyAgICAgICAgVGhlc2UgZm9ybWF0cyB3aWxsIGJlIHRyaWVkIGJlZm9y
ZSBvbmVzIHJlZ2lzdGVyZWQgd2l0aAorICAgICAgICByZWdpc3Rlcl9jb250cm9sX2Zvcm1hdC4g
IFRoaXMgZ2l2ZXMgaW1wbGVtZW50YXRpb25zIHRoYXQgZGVjaWRlIHRvIHRoZQorICAgICAgICBj
aGFuY2UgdG8gZ3JhYiBpdCBiZWZvcmUgYW55dGhpbmcgbG9va3MgYXQgdGhlIGNvbnRlbnRzIG9m
IHRoZSBmb3JtYXQKKyAgICAgICAgZmlsZS4KKyAgICAgICAgIiIiCisgICAgICAgIGtsYXNzLl9j
b250cm9sX3NlcnZlcl9mb3JtYXRzLmFwcGVuZChmb3JtYXQpCisKKyAgICBAY2xhc3NtZXRob2QK
ICAgICBAc3ltYm9sX3ZlcnNpb25pbmcuZGVwcmVjYXRlZF9tZXRob2Qoc3ltYm9sX3ZlcnNpb25p
bmcuemVyb19mb3VydGVlbikKICAgICBkZWYgc2V0X2RlZmF1bHRfZm9ybWF0KGtsYXNzLCBmb3Jt
YXQpOgogICAgICAgICBrbGFzcy5fc2V0X2RlZmF1bHRfZm9ybWF0KGZvcm1hdCkKQEAgLTE2NDEs
NyArMTcwOSwxNCBAQAogICAgIGVhc3kgdG8gaWRlbnRpZnkuCiAgICAgIiIiCiAKLSAgICBkZWYg
X19pbml0X18oc2VsZiwgdHJhbnNwb3J0X3NlcnZlciwgdHJhbnNwb3J0X3JlYWRvbmx5X3NlcnZl
ciwgZm9ybWF0cyk6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIHZmc19mYWN0b3J5LCB0cmFuc3Bv
cnRfc2VydmVyLCB0cmFuc3BvcnRfcmVhZG9ubHlfc2VydmVyLAorICAgICAgICBmb3JtYXRzKToK
KyAgICAgICAgIiIiQ3JlYXRlIGFuIG9iamVjdCB0byBhZGFwdCB0ZXN0cy4KKworICAgICAgICA6
cGFyYW0gdmZzX3NlcnZlcjogQSBmYWN0b3J5IHRvIGNyZWF0ZSBhIFRyYW5zcG9ydCBTZXJ2ZXIg
d2hpY2ggaGFzCisgICAgICAgICAgICBhbGwgdGhlIFZGUyBtZXRob2RzIHdvcmtpbmcsIGFuZCBp
cyB3cml0YWJsZS4KKyAgICAgICAgIiIiCisgICAgICAgIHNlbGYuX3Zmc19mYWN0b3J5ID0gdmZz
X2ZhY3RvcnkKICAgICAgICAgc2VsZi5fdHJhbnNwb3J0X3NlcnZlciA9IHRyYW5zcG9ydF9zZXJ2
ZXIKICAgICAgICAgc2VsZi5fdHJhbnNwb3J0X3JlYWRvbmx5X3NlcnZlciA9IHRyYW5zcG9ydF9y
ZWFkb25seV9zZXJ2ZXIKICAgICAgICAgc2VsZi5fZm9ybWF0cyA9IGZvcm1hdHMKQEAgLTE2NTAs
NiArMTcyNSw3IEBACiAgICAgICAgIHJlc3VsdCA9IHVuaXR0ZXN0LlRlc3RTdWl0ZSgpCiAgICAg
ICAgIGZvciBmb3JtYXQgaW4gc2VsZi5fZm9ybWF0czoKICAgICAgICAgICAgIG5ld190ZXN0ID0g
ZGVlcGNvcHkodGVzdCkKKyAgICAgICAgICAgIG5ld190ZXN0LnZmc190cmFuc3BvcnRfZmFjdG9y
eSA9IHNlbGYuX3Zmc19mYWN0b3J5CiAgICAgICAgICAgICBuZXdfdGVzdC50cmFuc3BvcnRfc2Vy
dmVyID0gc2VsZi5fdHJhbnNwb3J0X3NlcnZlcgogICAgICAgICAgICAgbmV3X3Rlc3QudHJhbnNw
b3J0X3JlYWRvbmx5X3NlcnZlciA9IHNlbGYuX3RyYW5zcG9ydF9yZWFkb25seV9zZXJ2ZXIKICAg
ICAgICAgICAgIG5ld190ZXN0LmJ6cmRpcl9mb3JtYXQgPSBmb3JtYXQKQEAgLTIxNDksNiArMjIy
NSw2MiBAQAogICAgICAgICByZXR1cm4gdG9fY29udmVydAogCiAKKyMgVGhpcyBpcyBub3QgaW4g
cmVtb3RlLnB5IGJlY2F1c2UgaXQncyBzbWFsbCwgYW5kIG5lZWRzIHRvIGJlIHJlZ2lzdGVyZWQu
CisjIFB1dHRpbmcgaXQgaW4gcmVtb3RlLnB5IGNyZWF0ZXMgYSBjaXJjdWxhciBpbXBvcnQgcHJv
YmxlbS4KKyMgd2UgY2FuIG1ha2UgaXQgYSBsYXp5IG9iamVjdCBpZiB0aGUgY29udHJvbCBmb3Jt
YXRzIGlzIHR1cm5lZCBpbnRvIHNvbWV0aGluZworIyBsaWtlIGEgcmVnaXN0cnkuCitjbGFzcyBS
ZW1vdGVCenJEaXJGb3JtYXQoQnpyRGlyTWV0YUZvcm1hdDEpOgorICAgICIiIkZvcm1hdCByZXBy
ZXNlbnRpbmcgYnpyZGlycyBhY2Nlc3NlZCB2aWEgYSBzbWFydCBzZXJ2ZXIiIiIKKworICAgIGRl
ZiBnZXRfZm9ybWF0X2Rlc2NyaXB0aW9uKHNlbGYpOgorICAgICAgICByZXR1cm4gJ2J6ciByZW1v
dGUgYnpyZGlyJworICAgIAorICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBwcm9iZV90cmFuc3Bv
cnQoa2xhc3MsIHRyYW5zcG9ydCk6CisgICAgICAgICIiIlJldHVybiBhIFJlbW90ZUJ6ckRpckZv
cm1hdCBvYmplY3QgaWYgaXQgbG9va3MgcG9zc2libGUuIiIiCisgICAgICAgIHRyeToKKyAgICAg
ICAgICAgIGNsaWVudCA9IHRyYW5zcG9ydC5nZXRfc21hcnRfY2xpZW50KCkKKyAgICAgICAgZXhj
ZXB0IChOb3RJbXBsZW1lbnRlZEVycm9yLCBBdHRyaWJ1dGVFcnJvciwKKyAgICAgICAgICAgICAg
ICBlcnJvcnMuVHJhbnNwb3J0Tm90UG9zc2libGUpOgorICAgICAgICAgICAgIyBubyBzbWFydCBz
ZXJ2ZXIsIHNvIG5vdCBhIGJyYW5jaCBmb3IgdGhpcyBmb3JtYXQgdHlwZS4KKyAgICAgICAgICAg
IHJhaXNlIGVycm9ycy5Ob3RCcmFuY2hFcnJvcihwYXRoPXRyYW5zcG9ydC5iYXNlKQorICAgICAg
ICBlbHNlOgorICAgICAgICAgICAgIyBTZW5kIGEgJ2hlbGxvJyByZXF1ZXN0IGluIHByb3RvY29s
IHZlcnNpb24gb25lLCBhbmQgZGVjbGluZSB0bworICAgICAgICAgICAgIyBvcGVuIGl0IGlmIHRo
ZSBzZXJ2ZXIgZG9lc24ndCBzdXBwb3J0IG91ciByZXF1aXJlZCB2ZXJzaW9uICgyKSBzbworICAg
ICAgICAgICAgIyB0aGF0IHRoZSBWRlMtYmFzZWQgdHJhbnNwb3J0IHdpbGwgZG8gaXQuCisgICAg
ICAgICAgICByZXF1ZXN0ID0gY2xpZW50LmdldF9yZXF1ZXN0KCkKKyAgICAgICAgICAgIHNtYXJ0
X3Byb3RvY29sID0gcHJvdG9jb2wuU21hcnRDbGllbnRSZXF1ZXN0UHJvdG9jb2xPbmUocmVxdWVz
dCkKKyAgICAgICAgICAgIHNlcnZlcl92ZXJzaW9uID0gc21hcnRfcHJvdG9jb2wucXVlcnlfdmVy
c2lvbigpCisgICAgICAgICAgICBpZiBzZXJ2ZXJfdmVyc2lvbiAhPSAyOgorICAgICAgICAgICAg
ICAgIHJhaXNlIGVycm9ycy5Ob3RCcmFuY2hFcnJvcihwYXRoPXRyYW5zcG9ydC5iYXNlKQorICAg
ICAgICAgICAgcmV0dXJuIGtsYXNzKCkKKworICAgIGRlZiBpbml0aWFsaXplX29uX3RyYW5zcG9y
dChzZWxmLCB0cmFuc3BvcnQpOgorICAgICAgICB0cnk6CisgICAgICAgICAgICAjIGhhbmQgb2Zm
IHRoZSByZXF1ZXN0IHRvIHRoZSBzbWFydCBzZXJ2ZXIKKyAgICAgICAgICAgIG1lZGl1bSA9IHRy
YW5zcG9ydC5nZXRfc21hcnRfbWVkaXVtKCkKKyAgICAgICAgZXhjZXB0IGVycm9ycy5Ob1NtYXJ0
TWVkaXVtOgorICAgICAgICAgICAgIyBUT0RPOiBsb29rdXAgdGhlIGxvY2FsIGZvcm1hdCBmcm9t
IGEgc2VydmVyIGhpbnQuCisgICAgICAgICAgICBsb2NhbF9kaXJfZm9ybWF0ID0gQnpyRGlyTWV0
YUZvcm1hdDEoKQorICAgICAgICAgICAgcmV0dXJuIGxvY2FsX2Rpcl9mb3JtYXQuaW5pdGlhbGl6
ZV9vbl90cmFuc3BvcnQodHJhbnNwb3J0KQorICAgICAgICBjbGllbnQgPSBfU21hcnRDbGllbnQo
bWVkaXVtKQorICAgICAgICBwYXRoID0gY2xpZW50LnJlbW90ZV9wYXRoX2Zyb21fdHJhbnNwb3J0
KHRyYW5zcG9ydCkKKyAgICAgICAgcmVzcG9uc2UgPSBfU21hcnRDbGllbnQobWVkaXVtKS5jYWxs
KCdCenJEaXJGb3JtYXQuaW5pdGlhbGl6ZScsIHBhdGgpCisgICAgICAgIGFzc2VydCByZXNwb25z
ZVswXSBpbiAoJ29rJywgKSwgJ3VuZXhwZWN0ZWQgcmVzcG9uc2UgY29kZSAlcycgJSAocmVzcG9u
c2UsKQorICAgICAgICByZXR1cm4gcmVtb3RlLlJlbW90ZUJ6ckRpcih0cmFuc3BvcnQpCisKKyAg
ICBkZWYgX29wZW4oc2VsZiwgdHJhbnNwb3J0KToKKyAgICAgICAgcmV0dXJuIHJlbW90ZS5SZW1v
dGVCenJEaXIodHJhbnNwb3J0KQorCisgICAgZGVmIF9fZXFfXyhzZWxmLCBvdGhlcik6CisgICAg
ICAgIGlmIG5vdCBpc2luc3RhbmNlKG90aGVyLCBSZW1vdGVCenJEaXJGb3JtYXQpOgorICAgICAg
ICAgICAgcmV0dXJuIEZhbHNlCisgICAgICAgIHJldHVybiBzZWxmLmdldF9mb3JtYXRfZGVzY3Jp
cHRpb24oKSA9PSBvdGhlci5nZXRfZm9ybWF0X2Rlc2NyaXB0aW9uKCkKKworCitCenJEaXJGb3Jt
YXQucmVnaXN0ZXJfY29udHJvbF9zZXJ2ZXJfZm9ybWF0KFJlbW90ZUJ6ckRpckZvcm1hdCkKKwor
CiBjbGFzcyBCenJEaXJGb3JtYXRJbmZvKG9iamVjdCk6CiAKICAgICBkZWYgX19pbml0X18oc2Vs
ZiwgbmF0aXZlLCBkZXByZWNhdGVkLCBoaWRkZW4pOgoK

=== modified file bzrlib/commands.py // last-changed:john@arbash-meinel.com-200
... 70430210334-a543p33oz62yo26k // encoding:base64
LS0tIGJ6cmxpYi9jb21tYW5kcy5weQorKysgYnpybGliL2NvbW1hbmRzLnB5CkBAIC0xMzcsNiAr
MTM3LDE0IEBACiAgICAgcGx1Z2luc19vdmVycmlkZQogICAgICAgICBJZiB0cnVlLCBwbHVnaW4g
Y29tbWFuZHMgY2FuIG92ZXJyaWRlIGJ1aWx0aW5zLgogICAgICIiIgorICAgIHRyeToKKyAgICAg
ICAgcmV0dXJuIF9nZXRfY21kX29iamVjdChjbWRfbmFtZSwgcGx1Z2luc19vdmVycmlkZSkKKyAg
ICBleGNlcHQgS2V5RXJyb3I6CisgICAgICAgIHJhaXNlIGVycm9ycy5CenJDb21tYW5kRXJyb3Io
J3Vua25vd24gY29tbWFuZCAiJXMiJyAlIGNtZF9uYW1lKQorCisKK2RlZiBfZ2V0X2NtZF9vYmpl
Y3QoY21kX25hbWUsIHBsdWdpbnNfb3ZlcnJpZGU9VHJ1ZSk6CisgICAgIiIiV29ya2VyIGZvciBn
ZXRfY21kX29iamVjdCB3aGljaCByYWlzZXMgS2V5RXJyb3IgcmF0aGVyIHRoYW4gQnpyQ29tbWFu
ZEVycm9yLiIiIgogICAgIGZyb20gYnpybGliLmV4dGVybmFsY29tbWFuZCBpbXBvcnQgRXh0ZXJu
YWxDb21tYW5kCiAKICAgICAjIFdlIHdhbnQgb25seSAnYXNjaWknIGNvbW1hbmQgbmFtZXMsIGJ1
dCB0aGUgdXNlciBtYXkgaGF2ZSB0eXBlZApAQCAtMTU5LDggKzE2Nyw3IEBACiAgICAgY21kX29i
aiA9IEV4dGVybmFsQ29tbWFuZC5maW5kX2NvbW1hbmQoY21kX25hbWUpCiAgICAgaWYgY21kX29i
ajoKICAgICAgICAgcmV0dXJuIGNtZF9vYmoKLQotICAgIHJhaXNlIGVycm9ycy5CenJDb21tYW5k
RXJyb3IoJ3Vua25vd24gY29tbWFuZCAiJXMiJyAlIGNtZF9uYW1lKQorICAgIHJhaXNlIEtleUVy
cm9yCiAKIAogY2xhc3MgQ29tbWFuZChvYmplY3QpOgpAQCAtMjMzLDYgKzI0MCw3OSBAQAogICAg
ICAgICBpZiBzZWxmLl9fZG9jX18gPT0gQ29tbWFuZC5fX2RvY19fOgogICAgICAgICAgICAgd2Fy
bigiTm8gaGVscCBtZXNzYWdlIHNldCBmb3IgJXIiICUgc2VsZikKIAorICAgIGRlZiBfdXNhZ2Uo
c2VsZik6CisgICAgICAgICIiIlJldHVybiBzaW5nbGUtbGluZSBncmFtbWFyIGZvciB0aGlzIGNv
bW1hbmQuCisKKyAgICAgICAgT25seSBkZXNjcmliZXMgYXJndW1lbnRzLCBub3Qgb3B0aW9ucy4K
KyAgICAgICAgIiIiCisgICAgICAgIHMgPSAnYnpyICcgKyBzZWxmLm5hbWUoKSArICcgJworICAg
ICAgICBmb3IgYW5hbWUgaW4gc2VsZi50YWtlc19hcmdzOgorICAgICAgICAgICAgYW5hbWUgPSBh
bmFtZS51cHBlcigpCisgICAgICAgICAgICBpZiBhbmFtZVstMV0gaW4gWyckJywgJysnXToKKyAg
ICAgICAgICAgICAgICBhbmFtZSA9IGFuYW1lWzotMV0gKyAnLi4uJworICAgICAgICAgICAgZWxp
ZiBhbmFtZVstMV0gPT0gJz8nOgorICAgICAgICAgICAgICAgIGFuYW1lID0gJ1snICsgYW5hbWVb
Oi0xXSArICddJworICAgICAgICAgICAgZWxpZiBhbmFtZVstMV0gPT0gJyonOgorICAgICAgICAg
ICAgICAgIGFuYW1lID0gJ1snICsgYW5hbWVbOi0xXSArICcuLi5dJworICAgICAgICAgICAgcyAr
PSBhbmFtZSArICcgJworICAgICAgICAgICAgICAgIAorICAgICAgICBhc3NlcnQgc1stMV0gPT0g
JyAnCisgICAgICAgIHMgPSBzWzotMV0KKyAgICAgICAgcmV0dXJuIHMKKworICAgIGRlZiBnZXRf
aGVscF90ZXh0KHNlbGYsIGFkZGl0aW9uYWxfc2VlX2Fsc289Tm9uZSk6CisgICAgICAgICIiIlJl
dHVybiBhIHRleHQgc3RyaW5nIHdpdGggaGVscCBmb3IgdGhpcyBjb21tYW5kLgorICAgICAgICAK
KyAgICAgICAgOnBhcmFtIGFkZGl0aW9uYWxfc2VlX2Fsc286IEFkZGl0aW9uYWwgaGVscCB0b3Bp
Y3MgdG8gYmUKKyAgICAgICAgICAgIGNyb3NzLXJlZmVyZW5jZWQuCisgICAgICAgICIiIgorICAg
ICAgICBkb2MgPSBzZWxmLmhlbHAoKQorICAgICAgICBpZiBkb2MgaXMgTm9uZToKKyAgICAgICAg
ICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IoInNvcnJ5LCBubyBkZXRhaWxlZCBoZWxwIHll
dCBmb3IgJXIiICUgc2VsZi5uYW1lKCkpCisKKyAgICAgICAgcmVzdWx0ID0gIiIKKyAgICAgICAg
cmVzdWx0ICs9ICd1c2FnZTogJXNcbicgJSBzZWxmLl91c2FnZSgpCisKKyAgICAgICAgaWYgc2Vs
Zi5hbGlhc2VzOgorICAgICAgICAgICAgcmVzdWx0ICs9ICdhbGlhc2VzOiAnCisgICAgICAgICAg
ICByZXN1bHQgKz0gJywgJy5qb2luKHNlbGYuYWxpYXNlcykgKyAnXG4nCisKKyAgICAgICAgcmVz
dWx0ICs9ICdcbicKKworICAgICAgICBwbHVnaW5fbmFtZSA9IHNlbGYucGx1Z2luX25hbWUoKQor
ICAgICAgICBpZiBwbHVnaW5fbmFtZSBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIHJlc3VsdCAr
PSAnKEZyb20gcGx1Z2luICIlcyIpJyAlIHBsdWdpbl9uYW1lCisgICAgICAgICAgICByZXN1bHQg
Kz0gJ1xuXG4nCisKKyAgICAgICAgcmVzdWx0ICs9IGRvYworICAgICAgICBpZiByZXN1bHRbLTFd
ICE9ICdcbic6CisgICAgICAgICAgICByZXN1bHQgKz0gJ1xuJworICAgICAgICByZXN1bHQgKz0g
J1xuJworICAgICAgICByZXN1bHQgKz0gb3B0aW9uLmdldF9vcHRwYXJzZXIoc2VsZi5vcHRpb25z
KCkpLmZvcm1hdF9vcHRpb25faGVscCgpCisgICAgICAgIHNlZV9hbHNvID0gc2VsZi5nZXRfc2Vl
X2Fsc28oYWRkaXRpb25hbF9zZWVfYWxzbykKKyAgICAgICAgaWYgc2VlX2Fsc286CisgICAgICAg
ICAgICByZXN1bHQgKz0gJ1xuU2VlIGFsc286ICcKKyAgICAgICAgICAgIHJlc3VsdCArPSAnLCAn
LmpvaW4oc2VlX2Fsc28pCisgICAgICAgICAgICByZXN1bHQgKz0gJ1xuJworICAgICAgICByZXR1
cm4gcmVzdWx0CisKKyAgICBkZWYgZ2V0X2hlbHBfdG9waWMoc2VsZik6CisgICAgICAgICIiIlJl
dHVybiB0aGUgY29tbWFuZHMgaGVscCB0b3BpYyAtIGl0cyBuYW1lLiIiIgorICAgICAgICByZXR1
cm4gc2VsZi5uYW1lKCkKKworICAgIGRlZiBnZXRfc2VlX2Fsc28oc2VsZiwgYWRkaXRpb25hbF90
ZXJtcz1Ob25lKToKKyAgICAgICAgIiIiUmV0dXJuIGEgbGlzdCBvZiBoZWxwIHRvcGljcyB0aGF0
IGFyZSByZWxhdGVkIHRvIHRoaXMgb21tYW5kLgorICAgICAgICAKKyAgICAgICAgVGhlIGxpc3Qg
aXMgZGVyaXZlZCBmcm9tIHRoZSBjb250ZW50IG9mIHRoZSBfc2VlX2Fsc28gYXR0cmlidXRlLiBB
bnkKKyAgICAgICAgZHVwbGljYXRlcyBhcmUgcmVtb3ZlZCBhbmQgdGhlIHJlc3VsdCBpcyBpbiBs
ZXhpY2FsIG9yZGVyLgorICAgICAgICA6cGFyYW0gYWRkaXRpb25hbF90ZXJtczogQWRkaXRpb25h
bCBoZWxwIHRvcGljcyB0byBjcm9zcy1yZWZlcmVuY2UuCisgICAgICAgIDpyZXR1cm46IEEgbGlz
dCBvZiBoZWxwIHRvcGljcy4KKyAgICAgICAgIiIiCisgICAgICAgIHNlZV9hbHNvID0gc2V0KGdl
dGF0dHIoc2VsZiwgJ19zZWVfYWxzbycsIFtdKSkKKyAgICAgICAgaWYgYWRkaXRpb25hbF90ZXJt
czoKKyAgICAgICAgICAgIHNlZV9hbHNvLnVwZGF0ZShhZGRpdGlvbmFsX3Rlcm1zKQorICAgICAg
ICByZXR1cm4gc29ydGVkKHNlZV9hbHNvKQorCiAgICAgZGVmIG9wdGlvbnMoc2VsZik6CiAgICAg
ICAgICIiIlJldHVybiBkaWN0IG9mIHZhbGlkIG9wdGlvbnMgZm9yIHRoaXMgY29tbWFuZC4KIApA
QCAtMjc5LDggKzM1OSw3IEBACiAgICAgICAgICAgICBhcmd2ID0gW10KICAgICAgICAgYXJncywg
b3B0cyA9IHBhcnNlX2FyZ3Moc2VsZiwgYXJndiwgYWxpYXNfYXJndikKICAgICAgICAgaWYgJ2hl
bHAnIGluIG9wdHM6ICAjIGUuZy4gYnpyIGFkZCAtLWhlbHAKLSAgICAgICAgICAgIGZyb20gYnpy
bGliLmhlbHAgaW1wb3J0IGhlbHBfb25fY29tbWFuZAotICAgICAgICAgICAgaGVscF9vbl9jb21t
YW5kKHNlbGYubmFtZSgpKQorICAgICAgICAgICAgc3lzLnN0ZG91dC53cml0ZShzZWxmLmdldF9o
ZWxwX3RleHQoKSkKICAgICAgICAgICAgIHJldHVybiAwCiAgICAgICAgICMgbWl4IGFyZ3VtZW50
cyBhbmQgb3B0aW9ucyBpbnRvIG9uZSBkaWN0aW9uYXJ5CiAgICAgICAgIGNtZGFyZ3MgPSBfbWF0
Y2hfYXJnZm9ybShzZWxmLm5hbWUoKSwgc2VsZi50YWtlc19hcmdzLCBhcmdzKQpAQCAtNjM1LDkg
KzcxNCwxMSBAQAogCiBkZWYgcnVuX2J6cl9jYXRjaF9lcnJvcnMoYXJndik6CiAgICAgdHJ5Ogot
ICAgICAgICByZXR1cm4gcnVuX2J6cihhcmd2KQotICAgICAgICAjIGRvIHRoaXMgaGVyZSBpbnNp
ZGUgdGhlIGV4Y2VwdGlvbiB3cmFwcGVycyB0byBjYXRjaCBFUElQRQotICAgICAgICBzeXMuc3Rk
b3V0LmZsdXNoKCkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgcmV0dXJuIHJ1bl9ienIoYXJn
dikKKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgICMgZG8gdGhpcyBoZXJlIGluc2lkZSB0
aGUgZXhjZXB0aW9uIHdyYXBwZXJzIHRvIGNhdGNoIEVQSVBFCisgICAgICAgICAgICBzeXMuc3Rk
b3V0LmZsdXNoKCkKICAgICBleGNlcHQgKEtleWJvYXJkSW50ZXJydXB0LCBFeGNlcHRpb24pLCBl
OgogICAgICAgICAjIHVzZWQgdG8gaGFuZGxlIEFzc2VydGlvbkVycm9yIGFuZCBLZXlib2FyZElu
dGVycnVwdAogICAgICAgICAjIHNwZWNpYWxseSBoZXJlLCBidXQgaG9wZWZ1bGx5IHRoZXkncmUg
aGFuZGxlZCBvayBieSB0aGUgbG9nZ2VyIG5vdwpAQCAtNjQ4LDUgKzcyOSwyOSBAQAogICAgICAg
ICAgICAgcGRiLnBvc3RfbW9ydGVtKHN5cy5leGNfdHJhY2ViYWNrKQogICAgICAgICByZXR1cm4g
MwogCisKK2NsYXNzIEhlbHBDb21tYW5kSW5kZXgob2JqZWN0KToKKyAgICAiIiJBIGluZGV4IGZv
ciBienIgaGVscCB0aGF0IHJldHVybnMgY29tbWFuZHMuIiIiCisKKyAgICBkZWYgX19pbml0X18o
c2VsZik6CisgICAgICAgIHNlbGYucHJlZml4ID0gJ2NvbW1hbmRzLycKKworICAgIGRlZiBnZXRf
dG9waWNzKHNlbGYsIHRvcGljKToKKyAgICAgICAgIiIiU2VhcmNoIGZvciB0b3BpYyBhbW9uZ3N0
IGNvbW1hbmRzLgorCisgICAgICAgIDpwYXJhbSB0b3BpYzogQSB0b3BpYyB0byBzZWFyY2ggZm9y
LgorICAgICAgICA6cmV0dXJuOiBBIGxpc3Qgd2hpY2ggaXMgZWl0aGVyIGVtcHR5IG9yIGNvbnRh
aW5zIGEgc2luZ2xlCisgICAgICAgICAgICBDb21tYW5kIGVudHJ5LgorICAgICAgICAiIiIKKyAg
ICAgICAgaWYgdG9waWMgYW5kIHRvcGljLnN0YXJ0c3dpdGgoc2VsZi5wcmVmaXgpOgorICAgICAg
ICAgICAgdG9waWMgPSB0b3BpY1tsZW4oc2VsZi5wcmVmaXgpOl0KKyAgICAgICAgdHJ5OgorICAg
ICAgICAgICAgY21kID0gX2dldF9jbWRfb2JqZWN0KHRvcGljKQorICAgICAgICBleGNlcHQgS2V5
RXJyb3I6CisgICAgICAgICAgICByZXR1cm4gW10KKyAgICAgICAgZWxzZToKKyAgICAgICAgICAg
IHJldHVybiBbY21kXQorCisKIGlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CiAgICAgc3lzLmV4
aXQobWFpbihzeXMuYXJndikpCgo=

=== modified file bzrlib/config.py // last-changed:robertc@robertcollins.net-20
... 070405093526-bfbpg82tlc7kldni // encoding:base64
LS0tIGJ6cmxpYi9jb25maWcucHkKKysrIGJ6cmxpYi9jb25maWcucHkKQEAgLTg0MCw3ICs4NDAs
NyBAQAogCiAgICAgZGVmIF9nZXRfY29uZmlnKHNlbGYpOgogICAgICAgICB0cnk6Ci0gICAgICAg
ICAgICBvYmogPSBDb25maWdPYmooc2VsZi5icmFuY2guY29udHJvbF9maWxlcy5nZXQoJ2JyYW5j
aC5jb25mJyksIAorICAgICAgICAgICAgb2JqID0gQ29uZmlnT2JqKHNlbGYuYnJhbmNoLmNvbnRy
b2xfZmlsZXMuZ2V0KCdicmFuY2guY29uZicpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGVuY29kaW5nPSd1dGYtOCcpCiAgICAgICAgIGV4Y2VwdCBlcnJvcnMuTm9TdWNoRmlsZToKICAg
ICAgICAgICAgIG9iaiA9IENvbmZpZ09iaihlbmNvZGluZz0ndXRmPTgnKQoK

=== modified file bzrlib/delta.py // last-changed:amanic@gmail.com-200704160100
... 20-3jan8hje4qmbwdsh // encoding:base64
LS0tIGJ6cmxpYi9kZWx0YS5weQorKysgYnpybGliL2RlbHRhLnB5CkBAIC0xOTUsNiArMTk1LDEy
IEBACiAgICAgICAgICAgICBwcmludCA+PnRvX2ZpbGUsICd1bmtub3duOicKICAgICAgICAgICAg
IHNob3dfbGlzdChzZWxmLnVudmVyc2lvbmVkKQogCisgICAgZGVmIGdldF9jaGFuZ2VzX2FzX3Rl
eHQoc2VsZiwgc2hvd19pZHM9RmFsc2UsIHNob3dfdW5jaGFuZ2VkPUZhbHNlLAorICAgICAgICAg
ICAgIHNob3J0X3N0YXR1cz1GYWxzZSk6CisgICAgICAgIGltcG9ydCBTdHJpbmdJTworICAgICAg
ICBvdXRwdXQgPSBTdHJpbmdJTy5TdHJpbmdJTygpCisgICAgICAgIHNlbGYuc2hvdyhvdXRwdXQs
IHNob3dfaWRzLCBzaG93X3VuY2hhbmdlZCwgc2hvcnRfc3RhdHVzKQorICAgICAgICByZXR1cm4g
b3V0cHV0LmdldHZhbHVlKCkKIAogQGRlcHJlY2F0ZWRfZnVuY3Rpb24oemVyb19uaW5lKQogZGVm
IGNvbXBhcmVfdHJlZXMob2xkX3RyZWUsIG5ld190cmVlLCB3YW50X3VuY2hhbmdlZD1GYWxzZSwK
Cg==

=== modified file bzrlib/diff.py // last-changed:john@arbash-meinel.com-2007041
... 1220516-bz4941rayeilvjac // encoding:base64
LS0tIGJ6cmxpYi9kaWZmLnB5CisrKyBienJsaWIvZGlmZi5weQpAQCAtNDcxLDggKzQ3MSwxMSBA
QAogICAgICAgICBoYXNfY2hhbmdlcyA9IDEKICAgICAgICAgcHJvcF9zdHIgPSBnZXRfcHJvcF9j
aGFuZ2UobWV0YV9tb2RpZmllZCkKICAgICAgICAgcHJpbnQgPj50b19maWxlLCAnPT09IG1vZGlm
aWVkICVzICVyJXMnICUgKGtpbmQsIHBhdGguZW5jb2RlKCd1dGY4JyksIHByb3Bfc3RyKQotICAg
ICAgICBvbGRfbmFtZSA9ICclcyVzXHQlcycgJSAob2xkX2xhYmVsLCBwYXRoLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgX3BhdGNoX2hlYWRlcl9kYXRlKG9sZF90cmVlLCBmaWxl
X2lkLCBwYXRoKSkKKyAgICAgICAgIyBUaGUgZmlsZSBtYXkgYmUgaW4gYSBkaWZmZXJlbnQgbG9j
YXRpb24gaW4gdGhlIG9sZCB0cmVlIChiZWNhdXNlCisgICAgICAgICMgdGhlIGNvbnRhaW5pbmcg
ZGlyIHdhcyByZW5hbWVkLCBidXQgdGhlIGZpbGUgaXRzZWxmIHdhcyBub3QpCisgICAgICAgIG9s
ZF9wYXRoID0gb2xkX3RyZWUuaWQycGF0aChmaWxlX2lkKQorICAgICAgICBvbGRfbmFtZSA9ICcl
cyVzXHQlcycgJSAob2xkX2xhYmVsLCBvbGRfcGF0aCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIF9wYXRjaF9oZWFkZXJfZGF0ZShvbGRfdHJlZSwgZmlsZV9pZCwgb2xkX3BhdGgp
KQogICAgICAgICBuZXdfbmFtZSA9ICclcyVzXHQlcycgJSAobmV3X2xhYmVsLCBwYXRoLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX3BhdGNoX2hlYWRlcl9kYXRlKG5ld190cmVl
LCBmaWxlX2lkLCBwYXRoKSkKICAgICAgICAgaWYgdGV4dF9tb2RpZmllZDoKQEAgLTQ4NSw3ICs0
ODgsMTEgQEAKIAogZGVmIF9wYXRjaF9oZWFkZXJfZGF0ZSh0cmVlLCBmaWxlX2lkLCBwYXRoKToK
ICAgICAiIiJSZXR1cm5zIGEgdGltZXN0YW1wIHN1aXRhYmxlIGZvciB1c2UgaW4gYSBwYXRjaCBo
ZWFkZXIuIiIiCi0gICAgcmV0dXJuIHRpbWVzdGFtcC5mb3JtYXRfcGF0Y2hfZGF0ZSh0cmVlLmdl
dF9maWxlX210aW1lKGZpbGVfaWQsIHBhdGgpKQorICAgIG10aW1lID0gdHJlZS5nZXRfZmlsZV9t
dGltZShmaWxlX2lkLCBwYXRoKQorICAgIGFzc2VydCBtdGltZSBpcyBub3QgTm9uZSwgXAorICAg
ICAgICAiZ290IGFuIG10aW1lIG9mIE5vbmUgZm9yIGZpbGUtaWQgJXMsIHBhdGggJXMgaW4gdHJl
ZSAlcyIgJSAoCisgICAgICAgICAgICAgICAgZmlsZV9pZCwgcGF0aCwgdHJlZSkKKyAgICByZXR1
cm4gdGltZXN0YW1wLmZvcm1hdF9wYXRjaF9kYXRlKG10aW1lKQogCiAKIGRlZiBfcmFpc2VfaWZf
bm9uZXhpc3RlbnQocGF0aHMsIG9sZF90cmVlLCBuZXdfdHJlZSk6Cgo=

=== modified file bzrlib/dirstate.py // last-changed:john@arbash-meinel.com-200
... 70421143950-glyo2gbmjwopp2w7 // encoding:base64
LS0tIGJ6cmxpYi9kaXJzdGF0ZS5weQorKysgYnpybGliL2RpcnN0YXRlLnB5CkBAIC0xNDA3LDEy
ICsxNDA3LDggQEAKICAgICAgICAgVGhlIG5ldyBkaXJzdGF0ZSB3aWxsIGJlIGFuIGVtcHR5IHRy
ZWUgLSB0aGF0IGlzIGl0IGhhcyBubyBwYXJlbnRzLAogICAgICAgICBhbmQgb25seSBhIHJvb3Qg
bm9kZSAtIHdoaWNoIGhhcyBpZCBST09UX0lELgogCi0gICAgICAgIFRoZSBvYmplY3Qgd2lsbCBi
ZSB3cml0ZSBsb2NrZWQgd2hlbiByZXR1cm5lZCB0byB0aGUgY2FsbGVyLAotICAgICAgICB1bmxl
c3MgdGhlcmUgd2FzIGFuIGV4Y2VwdGlvbiBpbiB0aGUgd3JpdGluZywgaW4gd2hpY2ggY2FzZSBp
dAotICAgICAgICB3aWxsIGJlIHVubG9ja2VkLgotCiAgICAgICAgIDpwYXJhbSBwYXRoOiBUaGUg
bmFtZSBvZiB0aGUgZmlsZSBmb3IgdGhlIGRpcnN0YXRlLgotICAgICAgICA6cmV0dXJuOiBBIERp
clN0YXRlIG9iamVjdC4KKyAgICAgICAgOnJldHVybjogQSB3cml0ZS1sb2NrZWQgRGlyU3RhdGUg
b2JqZWN0LgogICAgICAgICAiIiIKICAgICAgICAgIyBUaGlzIGNvbnN0cnVjdHMgYSBuZXcgRGly
U3RhdGUgb2JqZWN0IG9uIGEgcGF0aCwgc2V0cyB0aGUgX3N0YXRlX2ZpbGUKICAgICAgICAgIyB0
byBhIG5ldyBlbXB0eSBmaWxlIGZvciB0aGF0IHBhdGguIEl0IHRoZW4gY2FsbHMgX3NldF9kYXRh
KCkgd2l0aCBvdXIKQEAgLTIyMTYsNiArMjIxMiwyOCBAQAogICAgICAgICAgICAgICAgICAgICAi
ZGlyYmxvY2sgZm9yICVyIGlzIG5vdCBzb3J0ZWQ6XG4lcyIgJSBcCiAgICAgICAgICAgICAgICAg
ICAgIChkaXJibG9ja1swXSwgcGZvcm1hdChkaXJibG9jaykpKQogCisKKyAgICAgICAgZGVmIGNo
ZWNrX3ZhbGlkX3BhcmVudCgpOgorICAgICAgICAgICAgIiIiQ2hlY2sgdGhhdCB0aGUgY3VycmVu
dCBlbnRyeSBoYXMgYSB2YWxpZCBwYXJlbnQuCisKKyAgICAgICAgICAgIFRoaXMgbWFrZXMgc3Vy
ZSB0aGF0IHRoZSBwYXJlbnQgaGFzIGEgcmVjb3JkLAorICAgICAgICAgICAgYW5kIHRoYXQgdGhl
IHBhcmVudCBpc24ndCBtYXJrZWQgYXMgImFic2VudCIgaW4gdGhlCisgICAgICAgICAgICBjdXJy
ZW50IHRyZWUuIChJdCBpcyBpbnZhbGlkIHRvIGhhdmUgYSBub24tYWJzZW50IGZpbGUgaW4gYW4g
YWJzZW50CisgICAgICAgICAgICBkaXJlY3RvcnkuKQorICAgICAgICAgICAgIiIiCisgICAgICAg
ICAgICBpZiBlbnRyeVswXVswOjJdID09ICgnJywgJycpOgorICAgICAgICAgICAgICAgICMgVGhl
cmUgc2hvdWxkIGJlIG5vIHBhcmVudCBmb3IgdGhlIHJvb3Qgcm93CisgICAgICAgICAgICAgICAg
cmV0dXJuCisgICAgICAgICAgICBwYXJlbnRfZW50cnkgPSBzZWxmLl9nZXRfZW50cnkodHJlZV9p
bmRleCwgcGF0aF91dGY4PWVudHJ5WzBdWzBdKQorICAgICAgICAgICAgaWYgcGFyZW50X2VudHJ5
ID09IChOb25lLCBOb25lKToKKyAgICAgICAgICAgICAgICByYWlzZSBBc3NlcnRpb25FcnJvcigK
KyAgICAgICAgICAgICAgICAgICAgIm5vIHBhcmVudCBlbnRyeSBmb3I6ICVzIGluIHRyZWUgJXMi
CisgICAgICAgICAgICAgICAgICAgICUgKHRoaXNfcGF0aCwgdHJlZV9pbmRleCkpCisgICAgICAg
ICAgICBpZiBwYXJlbnRfZW50cnlbMV1bdHJlZV9pbmRleF1bMF0gIT0gJ2QnOgorICAgICAgICAg
ICAgICAgIHJhaXNlIEFzc2VydGlvbkVycm9yKAorICAgICAgICAgICAgICAgICAgICAiUGFyZW50
IGVudHJ5IGZvciAlcyBpcyBub3QgbWFya2VkIGFzIGEgdmFsaWQiCisgICAgICAgICAgICAgICAg
ICAgICIgZGlyZWN0b3J5LiAlcyIgJSAodGhpc19wYXRoLCBwYXJlbnRfZW50cnksKSkKKwogICAg
ICAgICAjIEZvciBlYWNoIGZpbGUgaWQsIGZvciBlYWNoIHRyZWU6IGVpdGhlcgogICAgICAgICAj
IHRoZSBmaWxlIGlkIGlzIG5vdCBwcmVzZW50IGF0IGFsbDsgYWxsIHJvd3Mgd2l0aCB0aGF0IGlk
IGluIHRoZQogICAgICAgICAjIGtleSBoYXZlIGl0IG1hcmtlZCBhcyAnYWJzZW50JwpAQCAtMjI2
Miw2ICsyMjgwLDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICByYWlzZSBBc3NlcnRp
b25FcnJvcigKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZW50cnkgJXIgaW5jb25zaXN0
ZW50IHdpdGggcHJldmlvdXMgcGF0aCAlciIgJSBcCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgKGVudHJ5LCBwcmV2aW91c19wYXRoKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIGNoZWNr
X3ZhbGlkX3BhcmVudCgpCiAgICAgICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAg
ICAgaWYgbWluaWtpbmQgPT0gJ2EnOgogICAgICAgICAgICAgICAgICAgICAgICAgIyBhYnNlbnQ7
IHNob3VsZCBub3Qgb2NjdXIgYW55d2hlcmUgZWxzZQpAQCAtMjI3MSw2ICsyMjkwLDcgQEAKICAg
ICAgICAgICAgICAgICAgICAgICAgIHRoaXNfdHJlZV9tYXBbZmlsZV9pZF0gPSB0cmVlX3N0YXRl
WzFdCiAgICAgICAgICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgICAgICAgICB0
aGlzX3RyZWVfbWFwW2ZpbGVfaWRdID0gdGhpc19wYXRoCisgICAgICAgICAgICAgICAgICAgICAg
ICBjaGVja192YWxpZF9wYXJlbnQoKQogCiAgICAgZGVmIF93aXBlX3N0YXRlKHNlbGYpOgogICAg
ICAgICAiIiJGb3JnZXQgYWxsIHN0YXRlIGluZm9ybWF0aW9uIGFib3V0IHRoZSBkaXJzdGF0ZS4i
IiIKCg==

=== modified file bzrlib/errors.py // last-changed:v.ladeuil+lp@free.fr-2007042
... 6090738-3n4pmuhuwqxr05fj // encoding:base64
LS0tIGJ6cmxpYi9lcnJvcnMucHkKKysrIGJ6cmxpYi9lcnJvcnMucHkKQEAgLTEwMiwxMSArMTAy
LDExIEBACiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBzLmVuY29kZSgndXRmOCcpCiAgICAg
ICAgICAgICAgICAgcmV0dXJuIHMKICAgICAgICAgZXhjZXB0IChBdHRyaWJ1dGVFcnJvciwgVHlw
ZUVycm9yLCBOYW1lRXJyb3IsIFZhbHVlRXJyb3IsIEtleUVycm9yKSwgZToKLSAgICAgICAgICAg
IHJldHVybiAnVW5wcmludGFibGUgZXhjZXB0aW9uICVzOiBkaWN0PSVyLCBmbXQ9JXIsIGVycm9y
PSVzJyBcCisgICAgICAgICAgICByZXR1cm4gJ1VucHJpbnRhYmxlIGV4Y2VwdGlvbiAlczogZGlj
dD0lciwgZm10PSVyLCBlcnJvcj0lcicgXAogICAgICAgICAgICAgICAgICUgKHNlbGYuX19jbGFz
c19fLl9fbmFtZV9fLAogICAgICAgICAgICAgICAgICAgIHNlbGYuX19kaWN0X18sCiAgICAgICAg
ICAgICAgICAgICAgZ2V0YXR0cihzZWxmLCAnX2ZtdCcsIE5vbmUpLAotICAgICAgICAgICAgICAg
ICAgIHN0cihlKSkKKyAgICAgICAgICAgICAgICAgICBlKQogCiAgICAgZGVmIF9nZXRfZm9ybWF0
X3N0cmluZyhzZWxmKToKICAgICAgICAgIiIiUmV0dXJuIGZvcm1hdCBzdHJpbmcgZm9yIHRoaXMg
ZXhjZXB0aW9uIG9yIE5vbmUiIiIKQEAgLTE1NCw5ICsxNTQsOSBAQAogICAgICAgICAgICAgICAg
IHJldHVybiBzLmVuY29kZSgndXRmOCcpCiAgICAgICAgICAgICByZXR1cm4gcwogICAgICAgICBl
eGNlcHQgKFR5cGVFcnJvciwgTmFtZUVycm9yLCBWYWx1ZUVycm9yLCBLZXlFcnJvciksIGU6Ci0g
ICAgICAgICAgICByZXR1cm4gJ1VucHJpbnRhYmxlIGV4Y2VwdGlvbiAlcyglcik6ICVzJyBcCisg
ICAgICAgICAgICByZXR1cm4gJ1VucHJpbnRhYmxlIGV4Y2VwdGlvbiAlcyglcik6ICVyJyBcCiAg
ICAgICAgICAgICAgICAgJSAoc2VsZi5fX2NsYXNzX18uX19uYW1lX18sCi0gICAgICAgICAgICAg
ICAgICAgc2VsZi5fX2RpY3RfXywgc3RyKGUpKQorICAgICAgICAgICAgICAgICAgIHNlbGYuX19k
aWN0X18sIGUpCiAKIAogY2xhc3MgQWxyZWFkeUJ1aWxkaW5nKEJ6ckVycm9yKToKQEAgLTE3NSw2
ICsxNzUsMTcgQEAKICAgICAgICAgc2VsZi5tZXNzYWdlID0gbWVzc2FnZQogCiAKK2NsYXNzIERp
c2FibGVkTWV0aG9kKEJ6ckVycm9yKToKKworICAgIF9mbXQgPSAiVGhlIHNtYXJ0IHNlcnZlciBt
ZXRob2QgJyUoY2xhc3NfbmFtZSlzJyBpcyBkaXNhYmxlZC4iCisKKyAgICBpbnRlcm5hbF9lcnJv
ciA9IFRydWUKKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCBjbGFzc19uYW1lKToKKyAgICAgICAg
QnpyRXJyb3IuX19pbml0X18oc2VsZikKKyAgICAgICAgc2VsZi5jbGFzc19uYW1lID0gY2xhc3Nf
bmFtZQorCisKIGNsYXNzIEludmFsaWRFbnRyeU5hbWUoQnpyRXJyb3IpOgogICAgIAogICAgIF9m
bXQgPSAiSW52YWxpZCBlbnRyeSBuYW1lOiAlKG5hbWUpcyIKQEAgLTIxMiw2ICsyMjMsMTYgQEAK
ICAgICBkZWYgX19pbml0X18oc2VsZiwgcmV2aXNpb25faWQpOgogICAgICAgICBzZWxmLnJldmlz
aW9uX2lkID0gcmV2aXNpb25faWQKIAorCitjbGFzcyBOb0hlbHBUb3BpYyhCenJFcnJvcik6CisK
KyAgICBfZm10ID0gKCJObyBoZWxwIGNvdWxkIGJlIGZvdW5kIGZvciAnJSh0b3BpYylzJy4gIgor
ICAgICAgICAiUGxlYXNlIHVzZSAnYnpyIGhlbHAgdG9waWNzJyB0byBvYnRhaW4gYSBsaXN0IG9m
IHRvcGljcy4iKQorCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIHRvcGljKToKKyAgICAgICAgc2Vs
Zi50b3BpYyA9IHRvcGljCisKKwogY2xhc3MgTm9TdWNoSWQoQnpyRXJyb3IpOgogCiAgICAgX2Zt
dCA9ICJUaGUgZmlsZSBpZCAlKGZpbGVfaWQpcyBpcyBub3QgcHJlc2VudCBpbiB0aGUgdHJlZSAl
KHRyZWUpcy4iCkBAIC03OTgsNiArODE5LDI3IEBACiAgICAgICAgIHNlbGYubG9jayA9IGxvY2sK
IAogCitjbGFzcyBUb2tlbkxvY2tpbmdOb3RTdXBwb3J0ZWQoTG9ja0Vycm9yKToKKworICAgIF9m
bXQgPSAiVGhlIG9iamVjdCAlKG9iailzIGRvZXMgbm90IHN1cHBvcnQgdG9rZW4gc3BlY2lmeWlu
ZyBhIHRva2VuIHdoZW4gbG9ja2luZy4iCisKKyAgICBpbnRlcm5hbF9lcnJvciA9IFRydWUKKwor
ICAgIGRlZiBfX2luaXRfXyhzZWxmLCBvYmopOgorICAgICAgICBzZWxmLm9iaiA9IG9iagorCisK
K2NsYXNzIFRva2VuTWlzbWF0Y2goTG9ja0Jyb2tlbik6CisKKyAgICBfZm10ID0gIlRoZSBsb2Nr
IHRva2VuICUoZ2l2ZW5fdG9rZW4pciBkb2VzIG5vdCBtYXRjaCBsb2NrIHRva2VuICUobG9ja190
b2tlbilyLiIKKworICAgIGludGVybmFsX2Vycm9yID0gVHJ1ZQorCisgICAgZGVmIF9faW5pdF9f
KHNlbGYsIGdpdmVuX3Rva2VuLCBsb2NrX3Rva2VuKToKKyAgICAgICAgc2VsZi5naXZlbl90b2tl
biA9IGdpdmVuX3Rva2VuCisgICAgICAgIHNlbGYubG9ja190b2tlbiA9IGxvY2tfdG9rZW4KKwor
CiBjbGFzcyBQb2ludGxlc3NDb21taXQoQnpyRXJyb3IpOgogCiAgICAgX2ZtdCA9ICJObyBjaGFu
Z2VzIHRvIGNvbW1pdCIKQEAgLTEyMDUsNyArMTI0Nyw3IEBACiAKICAgICBfZm10ID0gKCJUaGUg
bWVkaXVtICclKG1lZGl1bSlzJyBoYXMgcmVhY2hlZCBpdHMgY29uY3VycmVudCByZXF1ZXN0IGxp
bWl0LiIKICAgICAgICAgICAgICIgQmUgc3VyZSB0byBmaW5pc2hfd3JpdGluZyBhbmQgZmluaXNo
X3JlYWRpbmcgb24gdGhlIgotICAgICAgICAgICAgIiBjdXJyZW50IHJlcXVlc3QgdGhhdCBpcyBv
cGVuLiIpCisgICAgICAgICAgICAiIGN1cnJlbnRseSBvcGVuIHJlcXVlc3QuIikKIAogICAgIGlu
dGVybmFsX2Vycm9yID0gVHJ1ZQogCkBAIC0xNDk4LDYgKzE1NDAsMTQgQEAKICAgICBfZm10ID0g
IktleSAlKGtleSlzIGlzIGFscmVhZHkgcHJlc2VudCBpbiBtYXAiCiAKIAorY2xhc3MgRHVwbGlj
YXRlSGVscFByZWZpeChCenJFcnJvcik6CisKKyAgICBfZm10ID0gIlRoZSBwcmVmaXggJShwcmVm
aXgpcyBpcyBpbiB0aGUgaGVscCBzZWFyY2ggcGF0aCB0d2ljZS4iCisKKyAgICBkZWYgX19pbml0
X18oc2VsZiwgcHJlZml4KToKKyAgICAgICAgc2VsZi5wcmVmaXggPSBwcmVmaXgKKworCiBjbGFz
cyBNYWxmb3JtZWRUcmFuc2Zvcm0oQnpyRXJyb3IpOgogCiAgICAgX2ZtdCA9ICJUcmVlIHRyYW5z
Zm9ybSBpcyBtYWxmb3JtZWQgJShjb25mbGljdHMpciIKQEAgLTE1ODMsNiArMTYzMywxOCBAQAog
ICAgIGRlZiBfX2luaXRfXyhzZWxmLCBmcm9tX3BhdGgsIHRvX3BhdGgsIGV4dHJhPU5vbmUpOgog
ICAgICAgICBCenJNb3ZlRmFpbGVkRXJyb3IuX19pbml0X18oc2VsZiwgZnJvbV9wYXRoLCB0b19w
YXRoLCBleHRyYSkKIAorY2xhc3MgQnpyUmVtb3ZlQ2hhbmdlZEZpbGVzRXJyb3IoQnpyRXJyb3Ip
OgorICAgICIiIlVzZWQgd2hlbiB1c2VyIGlzIHRyeWluZyB0byByZW1vdmUgY2hhbmdlZCBmaWxl
cy4iIiIKKworICAgIF9mbXQgPSAoIkNhbid0IHJlbW92ZSBjaGFuZ2VkIG9yIHVua25vd24gZmls
ZXM6XG4lKGNoYW5nZXNfYXNfdGV4dClzIgorICAgICAgICAiVXNlIC0ta2VlcCB0byBub3QgZGVs
ZXRlIHRoZW0sIG9yIC0tZm9yY2UgdG8gZGVsZXRlIHRoZW0gcmVnYXJkbGVzcy4iKQorCisgICAg
ZGVmIF9faW5pdF9fKHNlbGYsIHRyZWVfZGVsdGEpOgorICAgICAgICBCenJFcnJvci5fX2luaXRf
XyhzZWxmKQorICAgICAgICBzZWxmLmNoYW5nZXNfYXNfdGV4dCA9IHRyZWVfZGVsdGEuZ2V0X2No
YW5nZXNfYXNfdGV4dCgpCisgICAgICAgICNzZWxmLnBhdGhzX2FzX3N0cmluZyA9ICdcbicuam9p
bihjaGFuZ2VkX2ZpbGVzKQorICAgICAgICAjc2VsZi5wYXRoc19hc19zdHJpbmcgPSAnXG4nLmpv
aW4oW3F1b3RlZm4ocCkgZm9yIHAgaW4gY2hhbmdlZF9maWxlc10pCisKIAogY2xhc3MgQnpyQmFk
UGFyYW1ldGVyTm90U3RyaW5nKEJ6ckJhZFBhcmFtZXRlcik6CiAKQEAgLTIwMjMsNyArMjA4NSw3
IEBACiBjbGFzcyBUYWdzTm90U3VwcG9ydGVkKEJ6ckVycm9yKToKIAogICAgIF9mbXQgPSAoIlRh
Z3Mgbm90IHN1cHBvcnRlZCBieSAlKGJyYW5jaClzOyIKLSAgICAgICAgICAgICIgeW91IG1heSBi
ZSBhYmxlIHRvIHVzZSBienIgdXBncmFkZS4iKQorICAgICAgICAgICAgIiB5b3UgbWF5IGJlIGFi
bGUgdG8gdXNlIGJ6ciB1cGdyYWRlIC0tZGlyc3RhdGUtdGFncy4iKQogCiAgICAgZGVmIF9faW5p
dF9fKHNlbGYsIGJyYW5jaCk6CiAgICAgICAgIHNlbGYuYnJhbmNoID0gYnJhbmNoCkBAIC0yMDM1
LDMgKzIwOTcsMzAgQEAKIAogICAgIGRlZiBfX2luaXRfXyhzZWxmLCB0YWdfbmFtZSk6CiAgICAg
ICAgIHNlbGYudGFnX25hbWUgPSB0YWdfbmFtZQorCisKK2NsYXNzIE1hbGZvcm1lZEJ1Z0lkZW50
aWZpZXIoQnpyRXJyb3IpOgorCisgICAgX2ZtdCA9ICJEaWQgbm90IHVuZGVyc3RhbmQgYnVnIGlk
ZW50aWZpZXIgJShidWdfaWQpczogJShyZWFzb24pcyIKKworICAgIGRlZiBfX2luaXRfXyhzZWxm
LCBidWdfaWQsIHJlYXNvbik6CisgICAgICAgIHNlbGYuYnVnX2lkID0gYnVnX2lkCisgICAgICAg
IHNlbGYucmVhc29uID0gcmVhc29uCisKKworY2xhc3MgVW5rbm93bkJ1Z1RyYWNrZXJBYmJyZXZp
YXRpb24oQnpyRXJyb3IpOgorCisgICAgX2ZtdCA9ICgiQ2Fubm90IGZpbmQgcmVnaXN0ZXJlZCBi
dWcgdHJhY2tlciBjYWxsZWQgJShhYmJyZXZpYXRpb24pcyAiCisgICAgICAgICAgICAib24gJShi
cmFuY2gpcyIpCisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgYWJicmV2aWF0aW9uLCBicmFuY2gp
OgorICAgICAgICBzZWxmLmFiYnJldmlhdGlvbiA9IGFiYnJldmlhdGlvbgorICAgICAgICBzZWxm
LmJyYW5jaCA9IGJyYW5jaAorCisKK2NsYXNzIFVuZXhwZWN0ZWRTbWFydFNlcnZlclJlc3BvbnNl
KEJ6ckVycm9yKToKKworICAgIF9mbXQgPSAiQ291bGQgbm90IHVuZGVyc3RhbmQgcmVzcG9uc2Ug
ZnJvbSBzbWFydCBzZXJ2ZXI6ICUocmVzcG9uc2VfdHVwbGUpciIKKworICAgIGRlZiBfX2luaXRf
XyhzZWxmLCByZXNwb25zZV90dXBsZSk6CisgICAgICAgIHNlbGYucmVzcG9uc2VfdHVwbGUgPSBy
ZXNwb25zZV90dXBsZQoK

=== modified file bzrlib/fetch.py // last-changed:andrew.bennetts@canonical.com
... -20070420041837-txtmgcf5e26rlagl // encoding:base64
LS0tIGJ6cmxpYi9mZXRjaC5weQorKysgYnpybGliL2ZldGNoLnB5CkBAIC00NCw2ICs0NCw3IEBA
CiBmcm9tIGJ6cmxpYi50cmFjZSBpbXBvcnQgbXV0dGVyCiBpbXBvcnQgYnpybGliLnVpCiAKK2Zy
b20gYnpybGliLmxhenlfaW1wb3J0IGltcG9ydCBsYXp5X2ltcG9ydAogCiAjIFRPRE86IEF2b2lk
IHJlcGVhdGVkbHkgb3BlbmluZyB3ZWF2ZXMgc28gbWFueSB0aW1lcy4KIAoK

=== modified file bzrlib/help.py // last-changed:robertc@robertcollins.net-2007
... 0423002453-6mw8b5sexbmlqer9 // encoding:base64
LS0tIGJ6cmxpYi9oZWxwLnB5CisrKyBienJsaWIvaGVscC5weQpAQCAtMjUsOCArMjUsMTIgQEAK
IGltcG9ydCB0ZXh0d3JhcAogCiBmcm9tIGJ6cmxpYiBpbXBvcnQgKAorICAgIGNvbW1hbmRzIGFz
IF9tb2RfY29tbWFuZHMsCisgICAgZXJyb3JzLAogICAgIGhlbHBfdG9waWNzLAogICAgIG9zdXRp
bHMsCisgICAgcGx1Z2luLAorICAgIHN5bWJvbF92ZXJzaW9uaW5nLAogICAgICkKIAogCkBAIC0z
NSw4NyArMzksMTIgQEAKICAgICBpZiBvdXRmaWxlIGlzIE5vbmU6CiAgICAgICAgIG91dGZpbGUg
PSBzeXMuc3Rkb3V0CiAKLSAgICBpZiB0b3BpYyBpcyBOb25lOgotICAgICAgICB0b3BpYyA9ICdi
YXNpYycKLQotICAgIGlmIHRvcGljIGluIGhlbHBfdG9waWNzLnRvcGljX3JlZ2lzdHJ5OgotICAg
ICAgICB0eHQgPSBoZWxwX3RvcGljcy50b3BpY19yZWdpc3RyeS5nZXRfZGV0YWlsKHRvcGljKQot
ICAgICAgICBvdXRmaWxlLndyaXRlKHR4dCkKLSAgICBlbHNlOgotICAgICAgICBoZWxwX29uX2Nv
bW1hbmQodG9waWMsIG91dGZpbGU9b3V0ZmlsZSkKLQotCi1kZWYgY29tbWFuZF91c2FnZShjbWRf
b2JqZWN0KToKLSAgICAiIiJSZXR1cm4gc2luZ2xlLWxpbmUgZ3JhbW1hciBmb3IgY29tbWFuZC4K
LQotICAgIE9ubHkgZGVzY3JpYmVzIGFyZ3VtZW50cywgbm90IG9wdGlvbnMuCi0gICAgIiIiCi0g
ICAgcyA9ICdienIgJyArIGNtZF9vYmplY3QubmFtZSgpICsgJyAnCi0gICAgZm9yIGFuYW1lIGlu
IGNtZF9vYmplY3QudGFrZXNfYXJnczoKLSAgICAgICAgYW5hbWUgPSBhbmFtZS51cHBlcigpCi0g
ICAgICAgIGlmIGFuYW1lWy0xXSBpbiBbJyQnLCAnKyddOgotICAgICAgICAgICAgYW5hbWUgPSBh
bmFtZVs6LTFdICsgJy4uLicKLSAgICAgICAgZWxpZiBhbmFtZVstMV0gPT0gJz8nOgotICAgICAg
ICAgICAgYW5hbWUgPSAnWycgKyBhbmFtZVs6LTFdICsgJ10nCi0gICAgICAgIGVsaWYgYW5hbWVb
LTFdID09ICcqJzoKLSAgICAgICAgICAgIGFuYW1lID0gJ1snICsgYW5hbWVbOi0xXSArICcuLi5d
JwotICAgICAgICBzICs9IGFuYW1lICsgJyAnCi0gICAgICAgICAgICAKLSAgICBhc3NlcnQgc1st
MV0gPT0gJyAnCi0gICAgcyA9IHNbOi0xXQotICAgIAotICAgIHJldHVybiBzCi0KLQotZGVmIHBy
aW50X2NvbW1hbmRfcGx1Z2luKGNtZF9vYmplY3QsIG91dGZpbGUsIGZvcm1hdCk6Ci0gICAgIiIi
UHJpbnQgdGhlIHBsdWdpbiB0aGF0IHByb3ZpZGVzIGEgY29tbWFuZCBvYmplY3QsIGlmIGFueS4K
LQotICAgIElmIHRoZSBjbWRfb2JqZWN0IGlzIHByb3ZpZGVkIGJ5IGEgcGx1Z2luLCBwcmludHMg
dGhlIHBsdWdpbiBuYW1lIHRvCi0gICAgb3V0ZmlsZSB1c2luZyB0aGUgcHJvdmlkZWQgZm9ybWF0
IHN0cmluZy4KLSAgICAiIiIKLSAgICBwbHVnaW5fbmFtZSA9IGNtZF9vYmplY3QucGx1Z2luX25h
bWUoKQotICAgIGlmIHBsdWdpbl9uYW1lIGlzIG5vdCBOb25lOgotICAgICAgICBvdXRfc3RyID0g
JyhGcm9tIHBsdWdpbiAiJXMiKScgJSBwbHVnaW5fbmFtZQotICAgICAgICBvdXRmaWxlLndyaXRl
KGZvcm1hdCAlIG91dF9zdHIpCi0KLQotZGVmIGhlbHBfb25fY29tbWFuZChjbWRuYW1lLCBvdXRm
aWxlPU5vbmUpOgotICAgIGZyb20gYnpybGliLmNvbW1hbmRzIGltcG9ydCBnZXRfY21kX29iamVj
dAotCi0gICAgY21kbmFtZSA9IHN0cihjbWRuYW1lKQotCi0gICAgaWYgb3V0ZmlsZSBpcyBOb25l
OgotICAgICAgICBvdXRmaWxlID0gc3lzLnN0ZG91dAotCi0gICAgY21kX29iamVjdCA9IGdldF9j
bWRfb2JqZWN0KGNtZG5hbWUpCi0KLSAgICBkb2MgPSBjbWRfb2JqZWN0LmhlbHAoKQotICAgIGlm
IGRvYyBpcyBOb25lOgotICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yKCJzb3JyeSwg
bm8gZGV0YWlsZWQgaGVscCB5ZXQgZm9yICVyIiAlIGNtZG5hbWUpCi0KLSAgICBwcmludCA+Pm91
dGZpbGUsICd1c2FnZTonLCBjb21tYW5kX3VzYWdlKGNtZF9vYmplY3QpCi0KLSAgICBpZiBjbWRf
b2JqZWN0LmFsaWFzZXM6Ci0gICAgICAgIHByaW50ID4+b3V0ZmlsZSwgJ2FsaWFzZXM6JywKLSAg
ICAgICAgcHJpbnQgPj5vdXRmaWxlLCAnLCAnLmpvaW4oY21kX29iamVjdC5hbGlhc2VzKQotCi0g
ICAgcHJpbnQgPj5vdXRmaWxlCi0KLSAgICBwcmludF9jb21tYW5kX3BsdWdpbihjbWRfb2JqZWN0
LCBvdXRmaWxlLCAnJXNcblxuJykKLQotICAgIG91dGZpbGUud3JpdGUoZG9jKQotICAgIGlmIGRv
Y1stMV0gIT0gJ1xuJzoKLSAgICAgICAgb3V0ZmlsZS53cml0ZSgnXG4nKQotICAgIGhlbHBfb25f
Y29tbWFuZF9vcHRpb25zKGNtZF9vYmplY3QsIG91dGZpbGUpCi0KLQotZGVmIGhlbHBfb25fY29t
bWFuZF9vcHRpb25zKGNtZCwgb3V0ZmlsZT1Ob25lKToKLSAgICBmcm9tIGJ6cmxpYi5vcHRpb24g
aW1wb3J0IE9wdGlvbiwgZ2V0X29wdHBhcnNlcgotICAgIGlmIG91dGZpbGUgaXMgTm9uZToKLSAg
ICAgICAgb3V0ZmlsZSA9IHN5cy5zdGRvdXQKLSAgICBvcHRpb25zID0gY21kLm9wdGlvbnMoKQot
ICAgIG91dGZpbGUud3JpdGUoJ1xuJykKLSAgICBvdXRmaWxlLndyaXRlKGdldF9vcHRwYXJzZXIo
b3B0aW9ucykuZm9ybWF0X29wdGlvbl9oZWxwKCkpCisgICAgaW5kaWNlcyA9IEhlbHBJbmRpY2Vz
KCkKKyAgICB0b3BpY3MgPSBpbmRpY2VzLnNlYXJjaCh0b3BpYykKKyAgICBzaGFkb3dlZF90ZXJt
cyA9IFtdCisgICAgZm9yIGluZGV4LCB0b3BpYyBpbiB0b3BpY3NbMTpdOgorICAgICAgICBzaGFk
b3dlZF90ZXJtcy5hcHBlbmQoJyVzJXMnICUgKGluZGV4LnByZWZpeCwgdG9waWMuZ2V0X2hlbHBf
dG9waWMoKSkpCisgICAgb3V0ZmlsZS53cml0ZSh0b3BpY3NbMF1bMV0uZ2V0X2hlbHBfdGV4dChz
aGFkb3dlZF90ZXJtcykpCiAKIAogZGVmIGhlbHBfY29tbWFuZHMob3V0ZmlsZT1Ob25lKToKQEAg
LTEyNSwxOSArNTQsMjEgQEAKICAgICBvdXRmaWxlLndyaXRlKF9oZWxwX2NvbW1hbmRzX3RvX3Rl
eHQoJ2NvbW1hbmRzJykpCiAKIAorQHN5bWJvbF92ZXJzaW9uaW5nLmRlcHJlY2F0ZWRfZnVuY3Rp
b24oc3ltYm9sX3ZlcnNpb25pbmcuemVyb19zaXh0ZWVuKQorZGVmIGNvbW1hbmRfdXNhZ2UoY21k
KToKKyAgICByZXR1cm4gY21kLl91c2FnZSgpCisKKwogZGVmIF9oZWxwX2NvbW1hbmRzX3RvX3Rl
eHQodG9waWMpOgogICAgICIiIkdlbmVyYXRlIHRoZSBoZWxwIHRleHQgZm9yIHRoZSBsaXN0IG9m
IGNvbW1hbmRzIiIiCi0gICAgZnJvbSBienJsaWIuY29tbWFuZHMgaW1wb3J0IChidWlsdGluX2Nv
bW1hbmRfbmFtZXMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbHVnaW5fY29t
bWFuZF9uYW1lcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldF9jbWRfb2Jq
ZWN0KQogICAgIG91dCA9IFtdCiAgICAgaWYgdG9waWMgPT0gJ2hpZGRlbi1jb21tYW5kcyc6CiAg
ICAgICAgIGhpZGRlbiA9IFRydWUKICAgICBlbHNlOgogICAgICAgICBoaWRkZW4gPSBGYWxzZQot
ICAgIG5hbWVzID0gc2V0KGJ1aWx0aW5fY29tbWFuZF9uYW1lcygpKSAjIHRvIGVsaW1pbmF0ZSBk
dXBsaWNhdGVzCi0gICAgbmFtZXMudXBkYXRlKHBsdWdpbl9jb21tYW5kX25hbWVzKCkpCi0gICAg
Y29tbWFuZHMgPSAoKG4sIGdldF9jbWRfb2JqZWN0KG4pKSBmb3IgbiBpbiBuYW1lcykKKyAgICBu
YW1lcyA9IHNldChfbW9kX2NvbW1hbmRzLmJ1aWx0aW5fY29tbWFuZF9uYW1lcygpKSAjIHRvIGVs
aW1pbmF0ZSBkdXBsaWNhdGVzCisgICAgbmFtZXMudXBkYXRlKF9tb2RfY29tbWFuZHMucGx1Z2lu
X2NvbW1hbmRfbmFtZXMoKSkKKyAgICBjb21tYW5kcyA9ICgobiwgX21vZF9jb21tYW5kcy5nZXRf
Y21kX29iamVjdChuKSkgZm9yIG4gaW4gbmFtZXMpCiAgICAgc2hvd25fY29tbWFuZHMgPSBbKG4s
IG8pIGZvciBuLCBvIGluIGNvbW1hbmRzIGlmIG8uaGlkZGVuID09IGhpZGRlbl0KICAgICBtYXhf
bmFtZSA9IG1heChsZW4obikgZm9yIG4sIG8gaW4gc2hvd25fY29tbWFuZHMpCiAgICAgaW5kZW50
ID0gJyAnICogKG1heF9uYW1lICsgMSkKQEAgLTE2Niw2ICs5Nyw1NCBAQAogaGVscF90b3BpY3Mu
dG9waWNfcmVnaXN0cnkucmVnaXN0ZXIoImNvbW1hbmRzIiwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIF9oZWxwX2NvbW1hbmRzX3RvX3RleHQsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAiQmFzaWMgaGVscCBmb3IgYWxsIGNvbW1hbmRzIikKLWhlbHBf
dG9waWNzLnRvcGljX3JlZ2lzdHJ5LnJlZ2lzdGVyKCJoaWRkZW4tY29tbWFuZHMiLCAKK2hlbHBf
dG9waWNzLnRvcGljX3JlZ2lzdHJ5LnJlZ2lzdGVyKCJoaWRkZW4tY29tbWFuZHMiLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX2hlbHBfY29tbWFuZHNfdG9fdGV4dCwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJBbGwgaGlkZGVuIGNvbW1hbmRzIikK
KworCitjbGFzcyBIZWxwSW5kaWNlcyhvYmplY3QpOgorICAgICIiIk1haW50YWluZXIgb2YgaGVs
cCB0b3BpY3MgYWNyb3NzIG11bHRpcGxlIGluZGljZXMuCisgICAgCisgICAgSXQgaXMgY3VycmVu
dGx5IHNlcGFyYXRlIHRvIHRoZSBIZWxwVG9waWNSZWdpc3RyeSBiZWNhdXNlIG9mIGl0cyBvcmRl
cmVkCisgICAgbmF0dXJlLCBidXQgcG9zc2libHkgd2Ugc2hvdWxkIGluc3RlYWQgc3RydWN0dXJl
IGl0IGFzIGEgc2VhcmNoIHdpdGhpbiB0aGUKKyAgICByZWdpc3RyeSBhbmQgYWRkIG9yZGVyaW5n
IGFuZCBzZWFyY2hpbmcgZmFjaWxpdGllcyB0byB0aGUgcmVnaXN0cnkuIFRoZQorICAgIHJlZ2lz
dHJ5IHdvdWxkIHByb2JhYmx5IG5lZWQgdG8gYmUgcmVzdHJ1Y3R1cmVkIHRvIHN1cHBvcnQgdGhh
dCBjbGVhbmx5CisgICAgd2hpY2ggaXMgd2h5IHRoaXMgaGFzIGJlZW4gaW1wbGVtZW50ZWQgaW4g
cGFyYWxsZWwgZXZlbiB0aG91Z2ggaXQgZG9lcyBhcyBhCisgICAgcmVzdWx0IHBlcm1pdCBzZWFy
Y2hpbmcgZm9yIGhlbHAgaW4gaW5kaWNlcyB3aGljaCBhcmUgbm90IGRpc2NvdmVyYWJsZSB2aWEK
KyAgICAnaGVscCB0b3BpY3MnLgorCisgICAgRWFjaCBpbmRleCBoYXMgYSB1bmlxdWUgcHJlZml4
IHN0cmluZywgc3VjaCBhcyAiY29tbWFuZHMiLCBhbmQgY29udGFpbnMKKyAgICBoZWxwIHRvcGlj
cyB3aGljaCBjYW4gYmUgbGlzdGVkIG9yIHNlYXJjaGVkLgorICAgICIiIgorCisgICAgZGVmIF9f
aW5pdF9fKHNlbGYpOgorICAgICAgICBzZWxmLnNlYXJjaF9wYXRoID0gWworICAgICAgICAgICAg
aGVscF90b3BpY3MuSGVscFRvcGljSW5kZXgoKSwKKyAgICAgICAgICAgIF9tb2RfY29tbWFuZHMu
SGVscENvbW1hbmRJbmRleCgpLAorICAgICAgICAgICAgcGx1Z2luLlBsdWdpbnNIZWxwSW5kZXgo
KSwKKyAgICAgICAgICAgIF0KKworICAgIGRlZiBfY2hlY2tfcHJlZml4X3VuaXF1ZW5lc3Moc2Vs
Zik6CisgICAgICAgICIiIkVuc3VyZSB0aGF0IHRoZSBpbmRleCBjb2xsZWN0aW9uIGlzIGFibGUg
dG8gZGlmZmVyZW50aWF0ZSBzYWZlbHkuIiIiCisgICAgICAgIHByZWZpeGVzID0ge30KKyAgICAg
ICAgZm9yIGluZGV4IGluIHNlbGYuc2VhcmNoX3BhdGg6CisgICAgICAgICAgICBwcmVmaXhlcy5z
ZXRkZWZhdWx0KGluZGV4LnByZWZpeCwgW10pLmFwcGVuZChpbmRleCkKKyAgICAgICAgZm9yIHBy
ZWZpeCwgaW5kaWNlcyBpbiBwcmVmaXhlcy5pdGVtcygpOgorICAgICAgICAgICAgaWYgbGVuKGlu
ZGljZXMpID4gMToKKyAgICAgICAgICAgICAgICByYWlzZSBlcnJvcnMuRHVwbGljYXRlSGVscFBy
ZWZpeChwcmVmaXgpCisKKyAgICBkZWYgc2VhcmNoKHNlbGYsIHRvcGljKToKKyAgICAgICAgIiIi
U2VhcmNoIGZvciB0b3BpYyBhY3Jvc3MgdGhlIGhlbHAgc2VhcmNoIHBhdGguCisgICAgICAgIAor
ICAgICAgICA6cGFyYW0gdG9waWM6IEEgc3RyaW5nIG5hbWluZyB0aGUgaGVscCB0b3BpYyB0byBz
ZWFyY2ggZm9yLgorICAgICAgICA6cmFpc2VzOiBOb0hlbHBUb3BpYyBpZiBub25lIG9mIHRoZSBp
bmRleHMgaW4gc2VhcmNoX3BhdGggaGF2ZSB0b3BpYy4KKyAgICAgICAgOnJldHVybjogQSBsaXN0
IG9mIEhlbHBUb3BpY3Mgd2hpY2ggbWF0Y2hlZCAndG9waWMnLgorICAgICAgICAiIiIKKyAgICAg
ICAgc2VsZi5fY2hlY2tfcHJlZml4X3VuaXF1ZW5lc3MoKQorICAgICAgICByZXN1bHQgPSBbXQor
ICAgICAgICBmb3IgaW5kZXggaW4gc2VsZi5zZWFyY2hfcGF0aDoKKyAgICAgICAgICAgIHJlc3Vs
dC5leHRlbmQoWyhpbmRleCwgX3RvcGljKSBmb3IgX3RvcGljIGluIGluZGV4LmdldF90b3BpY3Mo
dG9waWMpXSkKKyAgICAgICAgaWYgbm90IHJlc3VsdDoKKyAgICAgICAgICAgIHJhaXNlIGVycm9y
cy5Ob0hlbHBUb3BpYyh0b3BpYykKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHJldHVybiBy
ZXN1bHQKCg==

=== modified file bzrlib/help_topics.py // encoding:base64
LS0tIGJ6cmxpYi9oZWxwX3RvcGljcy5weQorKysgYnpybGliL2hlbHBfdG9waWNzLnB5CkBAIC04
MSw3ICs4MSw3IEBACiAKIAogZGVmIF9oZWxwX29uX3JldmlzaW9uc3BlYyhuYW1lKToKLSAgICAi
IiIiV3JpdGUgdGhlIHN1bW1hcnkgaGVscCBmb3IgYWxsIGRvY3VtZW50ZWQgdG9waWNzIHRvIG91
dGZpbGUuIiIiCisgICAgIiIiV3JpdGUgdGhlIHN1bW1hcnkgaGVscCBmb3IgYWxsIGRvY3VtZW50
ZWQgdG9waWNzIHRvIG91dGZpbGUuIiIiCiAgICAgaW1wb3J0IGJ6cmxpYi5yZXZpc2lvbnNwZWMK
IAogICAgIG91dCA9IFtdCkBAIC0xMDAsNiArMTAwLDUzIEBACiAgICAgcmV0dXJuICcnLmpvaW4o
b3V0KQogCiAKK2RlZiBfaGVscF9vbl90cmFuc3BvcnQobmFtZSk6CisgICAgZnJvbSBienJsaWIu
dHJhbnNwb3J0IGltcG9ydCAoCisgICAgICAgIHRyYW5zcG9ydF9saXN0X3JlZ2lzdHJ5LAorICAg
ICkKKyAgICBpbXBvcnQgdGV4dHdyYXAKKworICAgIGRlZiBhZGRfc3RyaW5nKHByb3RvLCBoZWxw
LCBtYXhsLCBwcmVmaXhfd2lkdGg9MjApOgorICAgICAgIGhlbHBfbGluZXMgPSB0ZXh0d3JhcC53
cmFwKGhlbHAsIG1heGwgLSBwcmVmaXhfd2lkdGgpCisgICAgICAgbGluZV93aXRoX2luZGVudCA9
ICdcbicgKyAnICcgKiBwcmVmaXhfd2lkdGgKKyAgICAgICBoZWxwX3RleHQgPSBsaW5lX3dpdGhf
aW5kZW50LmpvaW4oaGVscF9saW5lcykKKyAgICAgICByZXR1cm4gIiUtMjBzJXNcbiIgJSAocHJv
dG8sIGhlbHBfdGV4dCkKKworICAgIGRlZiBzb3J0X2Z1bmMoYSxiKToKKyAgICAgICAgYTEgPSBh
WzphLnJmaW5kKCI6Ly8iKV0KKyAgICAgICAgYjEgPSBiWzpiLnJmaW5kKCI6Ly8iKV0KKyAgICAg
ICAgaWYgYTE+YjE6CisgICAgICAgICAgICByZXR1cm4gKzEKKyAgICAgICAgZWxpZiBhMTxiMToK
KyAgICAgICAgICAgIHJldHVybiAtMQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgcmV0dXJu
IDAKKworICAgIG91dCA9IFtdCisgICAgcHJvdGwgPSBbXQorICAgIGRlY2wgPSBbXQorICAgIHBy
b3RvcyA9IHRyYW5zcG9ydF9saXN0X3JlZ2lzdHJ5LmtleXMoICkKKyAgICBwcm90b3Muc29ydChz
b3J0X2Z1bmMpCisgICAgZm9yIHByb3RvIGluIHByb3RvczoKKyAgICAgICAgc2hvcnRoZWxwID0g
dHJhbnNwb3J0X2xpc3RfcmVnaXN0cnkuZ2V0X2hlbHAocHJvdG8pCisgICAgICAgIGlmIG5vdCBz
aG9ydGhlbHA6CisgICAgICAgICAgICBjb250aW51ZQorICAgICAgICBpZiBwcm90by5lbmRzd2l0
aCgiOi8vIik6CisgICAgICAgICAgICBwcm90bC5leHRlbmQoYWRkX3N0cmluZyhwcm90bywgc2hv
cnRoZWxwLCA3OSkpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBkZWNsLmV4dGVuZChhZGRf
c3RyaW5nKHByb3RvLCBzaG9ydGhlbHAsIDc5KSkKKworCisgICAgb3V0ID0gIlxuU3VwcG9ydGVk
IFVSTCBwcmVmaXhcbi0tLS0tLS0tLS0tLS0tLS0tLS0tXG4iICsgXAorICAgICAgICAgICAgJycu
am9pbihwcm90bCkKKworICAgIGlmIGxlbihkZWNsKToKKyAgICAgICAgb3V0ICs9ICJcblN1cHBv
cnRlZCBtb2RpZmllcnNcbi0tLS0tLS0tLS0tLS0tLS0tLS1cbiIgKyBcCisgICAgICAgICAgICAn
Jy5qb2luKGRlY2wpCisKKyAgICByZXR1cm4gb3V0CisKKwogX2Jhc2ljX2hlbHA9IFwKICIiIkJh
emFhciAtLSBhIGZyZWUgZGlzdHJpYnV0ZWQgdmVyc2lvbi1jb250cm9sIHRvb2wKIGh0dHA6Ly9i
YXphYXItdmNzLm9yZy8KQEAgLTMxNiw4ICszNjMsNzQgQEAKICAgICAgICAgICAgICAgICAgICAg
ICAgICdPcHRpb25zIHRoYXQgY2FuIGJlIHVzZWQgd2l0aCBhbnkgY29tbWFuZCcpCiB0b3BpY19y
ZWdpc3RyeS5yZWdpc3RlcignY2hlY2tvdXRzJywgX2NoZWNrb3V0cywKICAgICAgICAgICAgICAg
ICAgICAgICAgICdJbmZvcm1hdGlvbiBvbiB3aGF0IGEgY2hlY2tvdXQgaXMnKQordG9waWNfcmVn
aXN0cnkucmVnaXN0ZXIoJ3VybHNwZWMnLCBfaGVscF9vbl90cmFuc3BvcnQsCisgICAgICAgICAg
ICAgICAgICAgICAgICAiU3VwcG9ydGVkIHRyYW5zcG9ydCBwcm90b2NvbHMiKQorZGVmIGdldF9i
dWdzX3RvcGljKHRvcGljKToKKyAgICBmcm9tIGJ6cmxpYiBpbXBvcnQgYnVndHJhY2tlcgorICAg
IHJldHVybiBidWd0cmFja2VyLnRyYWNrZXJfcmVnaXN0cnkuaGVscF90b3BpYyh0b3BpYykKK3Rv
cGljX3JlZ2lzdHJ5LnJlZ2lzdGVyKCdidWdzJywgZ2V0X2J1Z3NfdG9waWMsICdCdWcgdHJhY2tl
ciBzdXBwb3J0JykKIHRvcGljX3JlZ2lzdHJ5LnJlZ2lzdGVyKCdyZXBvc2l0b3JpZXMnLCBfcmVw
b3NpdG9yaWVzLAogICAgICAgICAgICAgICAgICAgICAgICAgJ0Jhc2ljIGluZm9ybWF0aW9uIG9u
IHNoYXJlZCByZXBvc2l0b3JpZXMuJykKIHRvcGljX3JlZ2lzdHJ5LnJlZ2lzdGVyKCd3b3JraW5n
LXRyZWVzJywgX3dvcmtpbmdfdHJlZXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAnSW5mb3Jt
YXRpb24gb24gd29ya2luZyB0cmVlcycpCiAKKworY2xhc3MgSGVscFRvcGljSW5kZXgob2JqZWN0
KToKKyAgICAiIiJBIGluZGV4IGZvciBienIgaGVscCB0aGF0IHJldHVybnMgdG9waWNzLiIiIgor
CisgICAgZGVmIF9faW5pdF9fKHNlbGYpOgorICAgICAgICBzZWxmLnByZWZpeCA9ICcnCisKKyAg
ICBkZWYgZ2V0X3RvcGljcyhzZWxmLCB0b3BpYyk6CisgICAgICAgICIiIlNlYXJjaCBmb3IgdG9w
aWMgaW4gdGhlIEhlbHBUb3BpY1JlZ2lzdHJ5LgorCisgICAgICAgIDpwYXJhbSB0b3BpYzogQSB0
b3BpYyB0byBzZWFyY2ggZm9yLiBOb25lIGlzIHRyZWF0ZWQgYXMgJ2Jhc2ljJy4KKyAgICAgICAg
OnJldHVybjogQSBsaXN0IHdoaWNoIGlzIGVpdGhlciBlbXB0eSBvciBjb250YWlucyBhIHNpbmds
ZQorICAgICAgICAgICAgUmVnaXN0ZXJlZFRvcGljIGVudHJ5LgorICAgICAgICAiIiIKKyAgICAg
ICAgaWYgdG9waWMgaXMgTm9uZToKKyAgICAgICAgICAgIHRvcGljID0gJ2Jhc2ljJworICAgICAg
ICBpZiB0b3BpYyBpbiB0b3BpY19yZWdpc3RyeToKKyAgICAgICAgICAgIHJldHVybiBbUmVnaXN0
ZXJlZFRvcGljKHRvcGljKV0KKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHJldHVybiBbXQor
CisKK2NsYXNzIFJlZ2lzdGVyZWRUb3BpYyhvYmplY3QpOgorICAgICIiIkEgaGVscCB0b3BpYyB3
aGljaCBoYXMgYmVlbiByZWdpc3RlcmVkIGluIHRoZSBIZWxwVG9waWNSZWdpc3RyeS4KKworICAg
IFRoZXNlIHRvcGljcyBjb25zaXN0IG9mIG5vdGhpbmcgbW9yZSB0aGFuIHRoZSBuYW1lIG9mIHRo
ZSB0b3BpYyAtIGFsbAorICAgIGRhdGEgaXMgcmV0cmlldmVkIG9uIGRlbWFuZCBmcm9tIHRoZSBy
ZWdpc3RyeS4KKyAgICAiIiIKKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCB0b3BpYyk6CisgICAg
ICAgICIiIkNvbnN0cnVjdG9yLgorCisgICAgICAgIDpwYXJhbSB0b3BpYzogVGhlIG5hbWUgb2Yg
dGhlIHRvcGljIHRoYXQgdGhpcyByZXByZXNlbnRzLgorICAgICAgICAiIiIKKyAgICAgICAgc2Vs
Zi50b3BpYyA9IHRvcGljCisKKyAgICBkZWYgZ2V0X2hlbHBfdGV4dChzZWxmLCBhZGRpdGlvbmFs
X3NlZV9hbHNvPU5vbmUpOgorICAgICAgICAiIiJSZXR1cm4gYSBzdHJpbmcgd2l0aCB0aGUgaGVs
cCBmb3IgdGhpcyB0b3BpYy4KKworICAgICAgICA6cGFyYW0gYWRkaXRpb25hbF9zZWVfYWxzbzog
QWRkaXRpb25hbCBoZWxwIHRvcGljcyB0byBiZQorICAgICAgICAgICAgY3Jvc3MtcmVmZXJlbmNl
ZC4KKyAgICAgICAgIiIiCisgICAgICAgIHJlc3VsdCA9IHRvcGljX3JlZ2lzdHJ5LmdldF9kZXRh
aWwoc2VsZi50b3BpYykKKyAgICAgICAgIyB0aGVyZSBpcyBjb2RlIGR1cGxpY2F0ZWQgaGVyZSBh
bmQgaW4gYnpybGliL3BsdWdpbi5weSdzIAorICAgICAgICAjIG1hdGNoaW5nIFRvcGljIGNvZGUu
IFRoaXMgc2hvdWxkIHByb2JhYmx5IGJlIGZhY3RvcmVkIGluCisgICAgICAgICMgdG8gYSBoZWxw
ZXIgZnVuY3Rpb24gYW5kIGEgY29tbW9uIGJhc2UgY2xhc3MuCisgICAgICAgIGlmIGFkZGl0aW9u
YWxfc2VlX2Fsc28gaXMgbm90IE5vbmU6CisgICAgICAgICAgICBzZWVfYWxzbyA9IHNvcnRlZChz
ZXQoYWRkaXRpb25hbF9zZWVfYWxzbykpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzZWVf
YWxzbyA9IE5vbmUKKyAgICAgICAgaWYgc2VlX2Fsc286CisgICAgICAgICAgICByZXN1bHQgKz0g
J1xuU2VlIGFsc286ICcKKyAgICAgICAgICAgIHJlc3VsdCArPSAnLCAnLmpvaW4oc2VlX2Fsc28p
CisgICAgICAgICAgICByZXN1bHQgKz0gJ1xuJworICAgICAgICByZXR1cm4gcmVzdWx0CisKKyAg
ICBkZWYgZ2V0X2hlbHBfdG9waWMoc2VsZik6CisgICAgICAgICIiIlJldHVybiB0aGUgaGVscCB0
b3BpYyB0aGlzIGNhbiBiZSBmb3VuZCB1bmRlci4iIiIKKyAgICAgICAgcmV0dXJuIHNlbGYudG9w
aWMKKwoK

=== modified file bzrlib/lazy_import.py // last-changed:john@arbash-meinel.com-
... 20070412202742-4cr2qmchdfe9mg7n // encoding:base64
LS0tIGJ6cmxpYi9sYXp5X2ltcG9ydC5weQorKysgYnpybGliL2xhenlfaW1wb3J0LnB5CkBAIC00
OCw3ICs0OCwxMiBAQAogICAgIG5lZWRlZC4KICAgICAiIiIKIAotICAgIF9fc2xvdHNfXyA9ICgn
X3Njb3BlJywgJ19mYWN0b3J5JywgJ19uYW1lJykKKyAgICBfX3Nsb3RzX18gPSAoJ19zY29wZScs
ICdfZmFjdG9yeScsICdfbmFtZScsICdfcmVhbF9vYmonKQorCisgICAgIyBTZXR0aW5nIHRoaXMg
dG8gVHJ1ZSB3aWxsIGFsbG93IHlvdSB0byBkbyB4ID0geSwgYW5kIHN0aWxsIGFjY2VzcyBtZW1i
ZXJzCisgICAgIyBmcm9tIGJvdGggdmFyaWFibGVzLiBUaGlzIHNob3VsZCBub3Qgbm9ybWFsbHkg
YmUgZW5hYmxlZCwgYnV0IGlzIHVzZWZ1bAorICAgICMgd2hlbiBidWlsZGluZyBkb2N1bWVudGF0
aW9uLgorICAgIF9zaG91bGRfcHJveHkgPSBGYWxzZQogCiAgICAgZGVmIF9faW5pdF9fKHNlbGYs
IHNjb3BlLCBmYWN0b3J5LCBuYW1lKToKICAgICAgICAgIiIiQ3JlYXRlIGEgdGVtcG9yYXJ5IG9i
amVjdCBpbiB0aGUgc3BlY2lmaWVkIHNjb3BlLgpAQCAtNjIsNiArNjcsNyBAQAogICAgICAgICBz
ZWxmLl9zY29wZSA9IHNjb3BlCiAgICAgICAgIHNlbGYuX2ZhY3RvcnkgPSBmYWN0b3J5CiAgICAg
ICAgIHNlbGYuX25hbWUgPSBuYW1lCisgICAgICAgIHNlbGYuX3JlYWxfb2JqID0gTm9uZQogICAg
ICAgICBzY29wZVtuYW1lXSA9IHNlbGYKIAogICAgIGRlZiBfcmVwbGFjZShzZWxmKToKQEAgLTgx
LDYgKzg3LDggQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIiB0byBhbm90aGVyIHZhcmlh
YmxlPyIsCiAgICAgICAgICAgICAgICAgZXh0cmE9ZSkKICAgICAgICAgb2JqID0gZmFjdG9yeShz
ZWxmLCBzY29wZSwgbmFtZSkKKyAgICAgICAgaWYgU2NvcGVSZXBsYWNlci5fc2hvdWxkX3Byb3h5
OgorICAgICAgICAgICAgc2VsZi5fcmVhbF9vYmogPSBvYmoKICAgICAgICAgc2NvcGVbbmFtZV0g
PSBvYmoKICAgICAgICAgcmV0dXJuIG9iagogCkBAIC05MiwxMCArMTAwLDEyIEBACiAgICAgICAg
ICMgZGVsIHNlbGYuX25hbWUKIAogICAgIGRlZiBfX2dldGF0dHJpYnV0ZV9fKHNlbGYsIGF0dHIp
OgotICAgICAgICBfcmVwbGFjZSA9IG9iamVjdC5fX2dldGF0dHJpYnV0ZV9fKHNlbGYsICdfcmVw
bGFjZScpCi0gICAgICAgIG9iaiA9IF9yZXBsYWNlKCkKLSAgICAgICAgX2NsZWFudXAgPSBvYmpl
Y3QuX19nZXRhdHRyaWJ1dGVfXyhzZWxmLCAnX2NsZWFudXAnKQotICAgICAgICBfY2xlYW51cCgp
CisgICAgICAgIG9iaiA9IG9iamVjdC5fX2dldGF0dHJpYnV0ZV9fKHNlbGYsICdfcmVhbF9vYmon
KQorICAgICAgICBpZiBvYmogaXMgTm9uZToKKyAgICAgICAgICAgIF9yZXBsYWNlID0gb2JqZWN0
Ll9fZ2V0YXR0cmlidXRlX18oc2VsZiwgJ19yZXBsYWNlJykKKyAgICAgICAgICAgIG9iaiA9IF9y
ZXBsYWNlKCkKKyAgICAgICAgICAgIF9jbGVhbnVwID0gb2JqZWN0Ll9fZ2V0YXR0cmlidXRlX18o
c2VsZiwgJ19jbGVhbnVwJykKKyAgICAgICAgICAgIF9jbGVhbnVwKCkKICAgICAgICAgcmV0dXJu
IGdldGF0dHIob2JqLCBhdHRyKQogCiAgICAgZGVmIF9fY2FsbF9fKHNlbGYsICphcmdzLCAqKmt3
YXJncyk6Cgo=

=== modified file bzrlib/lockable_files.py // last-changed:andrew.bennetts@cano
... nical.com-20070413015712-lvj50btwcb4k6w3i // encoding:base64
LS0tIGJ6cmxpYi9sb2NrYWJsZV9maWxlcy5weQorKysgYnpybGliL2xvY2thYmxlX2ZpbGVzLnB5
CkBAIC0yMjIsMjEgKzIyMiw0NyBAQAogICAgICAgICAgICAgcmFpc2UgZXJyb3JzLkJ6ckJhZFBh
cmFtZXRlck5vdFN0cmluZyhhX3N0cmluZykKICAgICAgICAgc2VsZi5wdXRfYnl0ZXMocGF0aCwg
YV9zdHJpbmcuZW5jb2RlKCd1dGYtOCcpKQogCi0gICAgZGVmIGxvY2tfd3JpdGUoc2VsZik6Cisg
ICAgZGVmIGxlYXZlX2luX3BsYWNlKHNlbGYpOgorICAgICAgICAiIiJTZXQgdGhpcyBMb2NrYWJs
ZUZpbGVzIHRvIG5vdCBjbGVhciB0aGUgcGh5c2ljYWwgbG9jayBvbiB1bmxvY2suIiIiCisgICAg
ICAgIHNlbGYuX2xvY2subGVhdmVfaW5fcGxhY2UoKQorCisgICAgZGVmIGRvbnRfbGVhdmVfaW5f
cGxhY2Uoc2VsZik6CisgICAgICAgICIiIlNldCB0aGlzIExvY2thYmxlRmlsZXMgdG8gY2xlYXIg
dGhlIHBoeXNpY2FsIGxvY2sgb24gdW5sb2NrLiIiIgorICAgICAgICBzZWxmLl9sb2NrLmRvbnRf
bGVhdmVfaW5fcGxhY2UoKQorCisgICAgZGVmIGxvY2tfd3JpdGUoc2VsZiwgdG9rZW49Tm9uZSk6
CisgICAgICAgICIiIkxvY2sgdGhpcyBncm91cCBvZiBmaWxlcyBmb3Igd3JpdGluZy4KKyAgICAg
ICAgCisgICAgICAgIDpwYXJhbSB0b2tlbjogaWYgdGhpcyBpcyBhbHJlYWR5IGxvY2tlZCwgdGhl
biBsb2NrX3dyaXRlIHdpbGwgZmFpbAorICAgICAgICAgICAgdW5sZXNzIHRoZSB0b2tlbiBtYXRj
aGVzIHRoZSBleGlzdGluZyBsb2NrLgorICAgICAgICA6cmV0dXJuczogYSB0b2tlbiBpZiB0aGlz
IGluc3RhbmNlIHN1cHBvcnRzIHRva2Vucywgb3RoZXJ3aXNlIE5vbmUuCisgICAgICAgIDpyYWlz
ZXMgVG9rZW5Mb2NraW5nTm90U3VwcG9ydGVkOiB3aGVuIGEgdG9rZW4gaXMgZ2l2ZW4gYnV0IHRo
aXMKKyAgICAgICAgICAgIGluc3RhbmNlIGRvZXNuJ3Qgc3VwcG9ydCB1c2luZyB0b2tlbiBsb2Nr
cy4KKyAgICAgICAgOnJhaXNlcyBNaXNtYXRjaGVkVG9rZW46IGlmIHRoZSBzcGVjaWZpZWQgdG9r
ZW4gZG9lc24ndCBtYXRjaCB0aGUgdG9rZW4KKyAgICAgICAgICAgIG9mIHRoZSBleGlzdGluZyBs
b2NrLgorCisgICAgICAgIEEgdG9rZW4gc2hvdWxkIGJlIHBhc3NlZCBpbiBpZiB5b3Uga25vdyB0
aGF0IHlvdSBoYXZlIGxvY2tlZCB0aGUgb2JqZWN0CisgICAgICAgIHNvbWUgb3RoZXIgd2F5LCBh
bmQgbmVlZCB0byBzeW5jaHJvbmlzZSB0aGlzIG9iamVjdCdzIHN0YXRlIHdpdGggdGhhdAorICAg
ICAgICBmYWN0LgorICAgICAgICAiIiIKICAgICAgICAgIyBtdXR0ZXIoImxvY2sgd3JpdGU6ICVz
ICglcykiLCBzZWxmLCBzZWxmLl9sb2NrX2NvdW50KQogICAgICAgICAjIFRPRE86IFVwZ3JhZGUg
bG9ja2luZyB0byBzdXBwb3J0IHVzaW5nIGEgVHJhbnNwb3J0LAogICAgICAgICAjIGFuZCBwb3Rl
bnRpYWxseSBhIHJlbW90ZSBsb2NraW5nIHByb3RvY29sCiAgICAgICAgIGlmIHNlbGYuX2xvY2tf
bW9kZToKICAgICAgICAgICAgIGlmIHNlbGYuX2xvY2tfbW9kZSAhPSAndycgb3Igbm90IHNlbGYu
Z2V0X3RyYW5zYWN0aW9uKCkud3JpdGVhYmxlKCk6CiAgICAgICAgICAgICAgICAgcmFpc2UgZXJy
b3JzLlJlYWRPbmx5RXJyb3Ioc2VsZikKKyAgICAgICAgICAgIHNlbGYuX2xvY2sudmFsaWRhdGVf
dG9rZW4odG9rZW4pCiAgICAgICAgICAgICBzZWxmLl9sb2NrX2NvdW50ICs9IDEKKyAgICAgICAg
ICAgIHJldHVybiBzZWxmLl90b2tlbl9mcm9tX2xvY2sKICAgICAgICAgZWxzZToKLSAgICAgICAg
ICAgIHNlbGYuX2xvY2subG9ja193cml0ZSgpCisgICAgICAgICAgICB0b2tlbl9mcm9tX2xvY2sg
PSBzZWxmLl9sb2NrLmxvY2tfd3JpdGUodG9rZW49dG9rZW4pCiAgICAgICAgICAgICAjbm90ZSgn
d3JpdGUgbG9ja2luZyAlcycsIHNlbGYpCiAgICAgICAgICAgICAjdHJhY2ViYWNrLnByaW50X3N0
YWNrKCkKICAgICAgICAgICAgIHNlbGYuX2xvY2tfbW9kZSA9ICd3JwogICAgICAgICAgICAgc2Vs
Zi5fbG9ja19jb3VudCA9IDEKICAgICAgICAgICAgIHNlbGYuX3NldF90cmFuc2FjdGlvbih0cmFu
c2FjdGlvbnMuV3JpdGVUcmFuc2FjdGlvbigpKQorICAgICAgICAgICAgc2VsZi5fdG9rZW5fZnJv
bV9sb2NrID0gdG9rZW5fZnJvbV9sb2NrCisgICAgICAgICAgICByZXR1cm4gdG9rZW5fZnJvbV9s
b2NrCiAKICAgICBkZWYgbG9ja19yZWFkKHNlbGYpOgogICAgICAgICAjIG11dHRlcigibG9jayBy
ZWFkOiAlcyAoJXMpIiwgc2VsZiwgc2VsZi5fbG9ja19jb3VudCkKQEAgLTMzMyw3ICszNTksMTUg
QEAKICAgICBkZWYgYnJlYWtfbG9jayhzZWxmKToKICAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50
ZWRFcnJvcihzZWxmLmJyZWFrX2xvY2spCiAKLSAgICBkZWYgbG9ja193cml0ZShzZWxmKToKKyAg
ICBkZWYgbGVhdmVfaW5fcGxhY2Uoc2VsZik6CisgICAgICAgIHJhaXNlIE5vdEltcGxlbWVudGVk
RXJyb3Ioc2VsZi5sZWF2ZV9pbl9wbGFjZSkKKworICAgIGRlZiBkb250X2xlYXZlX2luX3BsYWNl
KHNlbGYpOgorICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yKHNlbGYuZG9udF9sZWF2
ZV9pbl9wbGFjZSkKKworICAgIGRlZiBsb2NrX3dyaXRlKHNlbGYsIHRva2VuPU5vbmUpOgorICAg
ICAgICBpZiB0b2tlbiBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIHJhaXNlIGVycm9ycy5Ub2tl
bkxvY2tpbmdOb3RTdXBwb3J0ZWQoc2VsZikKICAgICAgICAgc2VsZi5fbG9jayA9IHNlbGYuX3Ry
YW5zcG9ydC5sb2NrX3dyaXRlKHNlbGYuX2VzY2FwZWRfbmFtZSkKIAogICAgIGRlZiBsb2NrX3Jl
YWQoc2VsZik6CkBAIC0zNTEsMyArMzg1LDggQEAKICAgICAgICAgIyBmb3Igb2xkLXN0eWxlIGxv
Y2tzLCBjcmVhdGUgdGhlIGZpbGUgbm93CiAgICAgICAgIHNlbGYuX3RyYW5zcG9ydC5wdXRfYnl0
ZXMoc2VsZi5fZXNjYXBlZF9uYW1lLCAnJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBt
b2RlPXNlbGYuX2ZpbGVfbW9kZWJpdHMpCisKKyAgICBkZWYgdmFsaWRhdGVfdG9rZW4oc2VsZiwg
dG9rZW4pOgorICAgICAgICBpZiB0b2tlbiBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIHJhaXNl
IGVycm9ycy5Ub2tlbkxvY2tpbmdOb3RTdXBwb3J0ZWQoc2VsZikKKyAgICAgICAgCgo=

=== modified file bzrlib/lockdir.py // last-changed:andrew.bennetts@canonical.c
... om-20070413015712-lvj50btwcb4k6w3i // encoding:base64
LS0tIGJ6cmxpYi9sb2NrZGlyLnB5CisrKyBienJsaWIvbG9ja2Rpci5weQpAQCAtMTYwLDEyICsx
NjAsMTIgQEAKICAgICAgICAgc2VsZi50cmFuc3BvcnQgPSB0cmFuc3BvcnQKICAgICAgICAgc2Vs
Zi5wYXRoID0gcGF0aAogICAgICAgICBzZWxmLl9sb2NrX2hlbGQgPSBGYWxzZQorICAgICAgICBz
ZWxmLl9sb2NrZWRfdmlhX3Rva2VuID0gRmFsc2UKICAgICAgICAgc2VsZi5fZmFrZV9yZWFkX2xv
Y2sgPSBGYWxzZQogICAgICAgICBzZWxmLl9oZWxkX2RpciA9IHBhdGggKyAnL2hlbGQnCiAgICAg
ICAgIHNlbGYuX2hlbGRfaW5mb19wYXRoID0gc2VsZi5faGVsZF9kaXIgKyBzZWxmLl9fSU5GT19O
QU1FCiAgICAgICAgIHNlbGYuX2ZpbGVfbW9kZWJpdHMgPSBmaWxlX21vZGViaXRzCiAgICAgICAg
IHNlbGYuX2Rpcl9tb2RlYml0cyA9IGRpcl9tb2RlYml0cwotICAgICAgICBzZWxmLm5vbmNlID0g
cmFuZF9jaGFycygyMCkKIAogICAgICAgICBzZWxmLl9yZXBvcnRfZnVuY3Rpb24gPSBub3RlCiAK
QEAgLTIwOSw2ICsyMDksNyBAQAogICAgICAgICAgICAgICAgICMgQWZ0ZXIgY3JlYXRpbmcgdGhl
IGxvY2sgZGlyZWN0b3J5LCB0cnkgYWdhaW4KICAgICAgICAgICAgICAgICBzZWxmLnRyYW5zcG9y
dC5ta2Rpcih0bXBuYW1lKQogCisgICAgICAgICAgICBzZWxmLm5vbmNlID0gcmFuZF9jaGFycygy
MCkKICAgICAgICAgICAgIGluZm9fYnl0ZXMgPSBzZWxmLl9wcmVwYXJlX2luZm8oKQogICAgICAg
ICAgICAgIyBXZSB1c2UgcHV0X2ZpbGVfbm9uX2F0b21pYyBiZWNhdXNlIHdlIGp1c3QgY3JlYXRl
ZCBhIG5ldyB1bmlxdWUKICAgICAgICAgICAgICMgZGlyZWN0b3J5IHNvIHdlIGRvbid0IGhhdmUg
dG8gd29ycnkgYWJvdXQgZmlsZXMgZXhpc3RpbmcgdGhlcmUuCkBAIC0yMzQsMTUgKzIzNSwxOSBA
QAogICAgICAgICAgICAgcmV0dXJuCiAgICAgICAgIGlmIG5vdCBzZWxmLl9sb2NrX2hlbGQ6CiAg
ICAgICAgICAgICByYWlzZSBMb2NrTm90SGVsZChzZWxmKQotICAgICAgICAjIHJlbmFtZSBiZWZv
cmUgZGVsZXRpbmcsIGJlY2F1c2Ugd2UgY2FuJ3QgYXRvbWljYWxseSByZW1vdmUgdGhlIHdob2xl
Ci0gICAgICAgICMgdHJlZQotICAgICAgICB0bXBuYW1lID0gJyVzL3JlbGVhc2luZy4lcy50bXAn
ICUgKHNlbGYucGF0aCwgcmFuZF9jaGFycygyMCkpCi0gICAgICAgICMgZ290dGEgb3duIGl0IHRv
IHVubG9jawotICAgICAgICBzZWxmLmNvbmZpcm0oKQotICAgICAgICBzZWxmLnRyYW5zcG9ydC5y
ZW5hbWUoc2VsZi5faGVsZF9kaXIsIHRtcG5hbWUpCi0gICAgICAgIHNlbGYuX2xvY2tfaGVsZCA9
IEZhbHNlCi0gICAgICAgIHNlbGYudHJhbnNwb3J0LmRlbGV0ZSh0bXBuYW1lICsgc2VsZi5fX0lO
Rk9fTkFNRSkKLSAgICAgICAgc2VsZi50cmFuc3BvcnQucm1kaXIodG1wbmFtZSkKKyAgICAgICAg
aWYgc2VsZi5fbG9ja2VkX3ZpYV90b2tlbjoKKyAgICAgICAgICAgIHNlbGYuX2xvY2tlZF92aWFf
dG9rZW4gPSBGYWxzZQorICAgICAgICAgICAgc2VsZi5fbG9ja19oZWxkID0gRmFsc2UKKyAgICAg
ICAgZWxzZToKKyAgICAgICAgICAgICMgcmVuYW1lIGJlZm9yZSBkZWxldGluZywgYmVjYXVzZSB3
ZSBjYW4ndCBhdG9taWNhbGx5IHJlbW92ZSB0aGUKKyAgICAgICAgICAgICMgd2hvbGUgdHJlZQor
ICAgICAgICAgICAgdG1wbmFtZSA9ICclcy9yZWxlYXNpbmcuJXMudG1wJyAlIChzZWxmLnBhdGgs
IHJhbmRfY2hhcnMoMjApKQorICAgICAgICAgICAgIyBnb3R0YSBvd24gaXQgdG8gdW5sb2NrCisg
ICAgICAgICAgICBzZWxmLmNvbmZpcm0oKQorICAgICAgICAgICAgc2VsZi50cmFuc3BvcnQucmVu
YW1lKHNlbGYuX2hlbGRfZGlyLCB0bXBuYW1lKQorICAgICAgICAgICAgc2VsZi5fbG9ja19oZWxk
ID0gRmFsc2UKKyAgICAgICAgICAgIHNlbGYudHJhbnNwb3J0LmRlbGV0ZSh0bXBuYW1lICsgc2Vs
Zi5fX0lORk9fTkFNRSkKKyAgICAgICAgICAgIHNlbGYudHJhbnNwb3J0LnJtZGlyKHRtcG5hbWUp
CiAKICAgICBkZWYgYnJlYWtfbG9jayhzZWxmKToKICAgICAgICAgIiIiQnJlYWsgYSBsb2NrIG5v
dCBoZWxkIGJ5IHRoaXMgaW5zdGFuY2Ugb2YgTG9ja0Rpci4KQEAgLTQxNCwxMCArNDE5LDM5IEBA
CiAgICAgICAgICAgICAgICAgdGltZS5zbGVlcChwb2xsKQogICAgICAgICAgICAgZWxzZToKICAg
ICAgICAgICAgICAgICByYWlzZSBMb2NrQ29udGVudGlvbihzZWxmKQotCi0gICAgZGVmIGxvY2tf
d3JpdGUoc2VsZik6Ci0gICAgICAgICIiIldhaXQgZm9yIGFuZCBhY3F1aXJlIHRoZSBsb2NrLiIi
IgotICAgICAgICBzZWxmLndhaXRfbG9jaygpCisgICAgCisgICAgZGVmIGxlYXZlX2luX3BsYWNl
KHNlbGYpOgorICAgICAgICBzZWxmLl9sb2NrZWRfdmlhX3Rva2VuID0gVHJ1ZQorCisgICAgZGVm
IGRvbnRfbGVhdmVfaW5fcGxhY2Uoc2VsZik6CisgICAgICAgIHNlbGYuX2xvY2tlZF92aWFfdG9r
ZW4gPSBGYWxzZQorCisgICAgZGVmIGxvY2tfd3JpdGUoc2VsZiwgdG9rZW49Tm9uZSk6CisgICAg
ICAgICIiIldhaXQgZm9yIGFuZCBhY3F1aXJlIHRoZSBsb2NrLgorICAgICAgICAKKyAgICAgICAg
OnBhcmFtIHRva2VuOiBpZiB0aGlzIGlzIGFscmVhZHkgbG9ja2VkLCB0aGVuIGxvY2tfd3JpdGUg
d2lsbCBmYWlsCisgICAgICAgICAgICB1bmxlc3MgdGhlIHRva2VuIG1hdGNoZXMgdGhlIGV4aXN0
aW5nIGxvY2suCisgICAgICAgIDpyZXR1cm5zOiBhIHRva2VuIGlmIHRoaXMgaW5zdGFuY2Ugc3Vw
cG9ydHMgdG9rZW5zLCBvdGhlcndpc2UgTm9uZS4KKyAgICAgICAgOnJhaXNlcyBUb2tlbkxvY2tp
bmdOb3RTdXBwb3J0ZWQ6IHdoZW4gYSB0b2tlbiBpcyBnaXZlbiBidXQgdGhpcworICAgICAgICAg
ICAgaW5zdGFuY2UgZG9lc24ndCBzdXBwb3J0IHVzaW5nIHRva2VuIGxvY2tzLgorICAgICAgICA6
cmFpc2VzIE1pc21hdGNoZWRUb2tlbjogaWYgdGhlIHNwZWNpZmllZCB0b2tlbiBkb2Vzbid0IG1h
dGNoIHRoZSB0b2tlbgorICAgICAgICAgICAgb2YgdGhlIGV4aXN0aW5nIGxvY2suCisKKyAgICAg
ICAgQSB0b2tlbiBzaG91bGQgYmUgcGFzc2VkIGluIGlmIHlvdSBrbm93IHRoYXQgeW91IGhhdmUg
bG9ja2VkIHRoZSBvYmplY3QKKyAgICAgICAgc29tZSBvdGhlciB3YXksIGFuZCBuZWVkIHRvIHN5
bmNocm9uaXNlIHRoaXMgb2JqZWN0J3Mgc3RhdGUgd2l0aCB0aGF0CisgICAgICAgIGZhY3QuCisg
ICAgICAgICAKKyAgICAgICAgWFhYOiBkb2NzdHJpbmcgZHVwbGljYXRlZCBmcm9tIExvY2thYmxl
RmlsZXMubG9ja193cml0ZS4KKyAgICAgICAgIiIiCisgICAgICAgIGlmIHRva2VuIGlzIG5vdCBO
b25lOgorICAgICAgICAgICAgc2VsZi52YWxpZGF0ZV90b2tlbih0b2tlbikKKyAgICAgICAgICAg
IHNlbGYubm9uY2UgPSB0b2tlbgorICAgICAgICAgICAgc2VsZi5fbG9ja19oZWxkID0gVHJ1ZQor
ICAgICAgICAgICAgc2VsZi5fbG9ja2VkX3ZpYV90b2tlbiA9IFRydWUKKyAgICAgICAgICAgIHJl
dHVybiB0b2tlbgorICAgICAgICBlbHNlOgorICAgICAgICAgICAgc2VsZi53YWl0X2xvY2soKQor
ICAgICAgICAgICAgcmV0dXJuIHNlbGYucGVlaygpLmdldCgnbm9uY2UnKQogCiAgICAgZGVmIGxv
Y2tfcmVhZChzZWxmKToKICAgICAgICAgIiIiQ29tcGF0aWJpbGl0eS1tb2RlIHNoYXJlZCBsb2Nr
LgpAQCAtNDU3LDMgKzQ5MSwxNCBAQAogICAgICAgICAgICAgJ2xvY2tlZCAlcycgJSAoZm9ybWF0
X2RlbHRhKGRlbHRhKSwpLAogICAgICAgICAgICAgXQogCisgICAgZGVmIHZhbGlkYXRlX3Rva2Vu
KHNlbGYsIHRva2VuKToKKyAgICAgICAgaWYgdG9rZW4gaXMgbm90IE5vbmU6CisgICAgICAgICAg
ICBpbmZvID0gc2VsZi5wZWVrKCkKKyAgICAgICAgICAgIGlmIGluZm8gaXMgTm9uZToKKyAgICAg
ICAgICAgICAgICAjIExvY2sgaXNuJ3QgaGVsZAorICAgICAgICAgICAgICAgIGxvY2tfdG9rZW4g
PSBOb25lCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIGxvY2tfdG9rZW4gPSBp
bmZvLmdldCgnbm9uY2UnKQorICAgICAgICAgICAgaWYgdG9rZW4gIT0gbG9ja190b2tlbjoKKyAg
ICAgICAgICAgICAgICByYWlzZSBlcnJvcnMuVG9rZW5NaXNtYXRjaCh0b2tlbiwgbG9ja190b2tl
bikKKwoK

=== modified file bzrlib/log.py // last-changed:john@arbash-meinel.com-20070423
... 192314-y2x7sr7yupacqglk // encoding:base64
LS0tIGJ6cmxpYi9sb2cucHkKKysrIGJ6cmxpYi9sb2cucHkKQEAgLTEsNCArMSw0IEBACi0jIENv
cHlyaWdodCAoQykgMjAwNSBDYW5vbmljYWwgTHRkCisjIENvcHlyaWdodCAoQykgMjAwNSwgMjAw
NiwgMjAwNyBDYW5vbmljYWwgTHRkCiAjCiAjIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJl
OyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiAjIGl0IHVuZGVyIHRoZSB0
ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CkBA
IC02MSw3ICs2MSwxMCBAQAogaW1wb3J0IGJ6cmxpYi5lcnJvcnMgYXMgZXJyb3JzCiBmcm9tIGJ6
cmxpYi5zeW1ib2xfdmVyc2lvbmluZyBpbXBvcnQgZGVwcmVjYXRlZF9tZXRob2QsIHplcm9fZWxl
dmVuCiBmcm9tIGJ6cmxpYi50cmFjZSBpbXBvcnQgbXV0dGVyCi1mcm9tIGJ6cmxpYi50c29ydCBp
bXBvcnQgbWVyZ2Vfc29ydAorZnJvbSBienJsaWIudHNvcnQgaW1wb3J0KAorICAgIG1lcmdlX3Nv
cnQsCisgICAgdG9wb19zb3J0LAorICAgICkKIAogCiBkZWYgZmluZF90b3VjaGluZ19yZXZpc2lv
bnMoYnJhbmNoLCBmaWxlX2lkKToKQEAgLTIyMSw4ICsyMjQsMjEgQEAKICAgICAgICAgc3ltYm9s
X3ZlcnNpb25pbmcud2FybignTG9nRm9ybWF0dGVycyBzaG91bGQgcHJvdmlkZSBzaG93X21lcmdl
X3Jldm5vICcKICAgICAgICAgICAgICdpbnN0ZWFkIG9mIHNob3dfbWVyZ2Ugc2luY2UgYnpyIDAu
MTEuJywKICAgICAgICAgICAgIERlcHJlY2F0aW9uV2FybmluZywgc3RhY2tsZXZlbD0zKQotICAg
IHZpZXdfcmV2aXNpb25zID0gbGlzdChnZXRfdmlld19yZXZpc2lvbnMobWFpbmxpbmVfcmV2cywg
cmV2X25vcywgYnJhbmNoLAotICAgICAgICAgICAgICAgICAgICAgICAgICBkaXJlY3Rpb24sIGlu
Y2x1ZGVfbWVyZ2VzPWluY2x1ZGVfbWVyZ2VzKSkKKyAgICB2aWV3X3JldnNfaXRlciA9IGdldF92
aWV3X3JldmlzaW9ucyhtYWlubGluZV9yZXZzLCByZXZfbm9zLCBicmFuY2gsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgIGRpcmVjdGlvbiwgaW5jbHVkZV9tZXJnZXM9aW5jbHVkZV9tZXJnZXMp
CisgICAgaWYgc3BlY2lmaWNfZmlsZWlkOgorICAgICAgICB2aWV3X3JldmlzaW9ucyA9IF9nZXRf
cmV2aXNpb25zX3RvdWNoaW5nX2ZpbGVfaWQoYnJhbmNoLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3BlY2lmaWNfZmlsZWlkLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFp
bmxpbmVfcmV2cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHZpZXdfcmV2c19pdGVyKQorICAgIGVsc2U6CisgICAgICAgIHZpZXdfcmV2
aXNpb25zID0gbGlzdCh2aWV3X3JldnNfaXRlcikKKworICAgIHVzZV90YWdzID0gZ2V0YXR0cihs
ZiwgJ3N1cHBvcnRzX3RhZ3MnLCBGYWxzZSkKKyAgICBpZiB1c2VfdGFnczoKKyAgICAgICAgcmV2
X3RhZ19kaWN0ID0ge30KKyAgICAgICAgaWYgYnJhbmNoLnN1cHBvcnRzX3RhZ3MoKToKKyAgICAg
ICAgICAgIHJldl90YWdfZGljdCA9IGJyYW5jaC50YWdzLmdldF9yZXZlcnNlX3RhZ19kaWN0KCkK
IAogICAgIGRlZiBpdGVyX3JldmlzaW9ucygpOgogICAgICAgICAjIHIgPSByZXZpc2lvbiwgbiA9
IHJldm5vLCBkID0gbWVyZ2UgZGVwdGgKQEAgLTIzMyw3ICsyNDksNyBAQAogICAgICAgICB3aGls
ZSByZXZpc2lvbl9pZHM6CiAgICAgICAgICAgICBjdXJfZGVsdGFzID0ge30KICAgICAgICAgICAg
IHJldmlzaW9ucyA9IHJlcG9zaXRvcnkuZ2V0X3JldmlzaW9ucyhyZXZpc2lvbl9pZHNbOm51bV0p
Ci0gICAgICAgICAgICBpZiB2ZXJib3NlIG9yIHNwZWNpZmljX2ZpbGVpZDoKKyAgICAgICAgICAg
IGlmIHZlcmJvc2U6CiAgICAgICAgICAgICAgICAgZGVsdGFfcmV2aXNpb25zID0gW3IgZm9yIHIg
aW4gcmV2aXNpb25zIGlmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIucmV2
aXNpb25faWQgaW4gemVyb3NdCiAgICAgICAgICAgICAgICAgZGVsdGFzID0gcmVwb3NpdG9yeS5n
ZXRfZGVsdGFzX2Zvcl9yZXZpc2lvbnMoZGVsdGFfcmV2aXNpb25zKQpAQCAtMjQxLDExICsyNTcs
MTEgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWx0YV9yZXZp
c2lvbnMpLCBkZWx0YXMpKQogICAgICAgICAgICAgZm9yIHJldmlzaW9uIGluIHJldmlzaW9uczoK
ICAgICAgICAgICAgICAgICAjIFRoZSBkZWx0YSB2YWx1ZSB3aWxsIGJlIE5vbmUgdW5sZXNzCi0g
ICAgICAgICAgICAgICAgIyAxLiB2ZXJib3NlIG9yIHNwZWNpZmljX2ZpbGVpZCBpcyBzcGVjaWZp
ZWQsIGFuZAorICAgICAgICAgICAgICAgICMgMS4gdmVyYm9zZSBpcyBzcGVjaWZpZWQsIGFuZAog
ICAgICAgICAgICAgICAgICMgMi4gdGhlIHJldmlzaW9uIGlzIGEgbWFpbmxpbmUgcmV2aXNpb24K
ICAgICAgICAgICAgICAgICB5aWVsZCByZXZpc2lvbiwgY3VyX2RlbHRhcy5nZXQocmV2aXNpb24u
cmV2aXNpb25faWQpCiAgICAgICAgICAgICByZXZpc2lvbl9pZHMgID0gcmV2aXNpb25faWRzW251
bTpdCi0gICAgICAgICAgICBudW0gPSBpbnQobnVtICogMS41KQorICAgICAgICAgICAgbnVtID0g
bWluKGludChudW0gKiAxLjUpLCAyMDApCiAgICAgICAgICAgICAKICAgICAjIG5vdyB3ZSBqdXN0
IHByaW50IGFsbCB0aGUgcmV2aXNpb25zCiAgICAgZm9yICgocmV2X2lkLCByZXZubywgbWVyZ2Vf
ZGVwdGgpLCAocmV2LCBkZWx0YSkpIGluIFwKQEAgLTI1NiwyMiArMjcyLDc3IEBACiAgICAgICAg
ICAgICAgICAgY29udGludWUKIAogICAgICAgICBpZiBtZXJnZV9kZXB0aCA9PSAwOgotICAgICAg
ICAgICAgIyBhIG1haW5saW5lIHJldmlzaW9uLgotICAgICAgICAgICAgICAgIAotICAgICAgICAg
ICAgaWYgc3BlY2lmaWNfZmlsZWlkOgotICAgICAgICAgICAgICAgIGlmIG5vdCBkZWx0YS50b3Vj
aGVzX2ZpbGVfaWQoc3BlY2lmaWNfZmlsZWlkKToKLSAgICAgICAgICAgICAgICAgICAgY29udGlu
dWUKLSAgICAKLSAgICAgICAgICAgIGlmIG5vdCB2ZXJib3NlOgotICAgICAgICAgICAgICAgICMg
YWx0aG91Z2ggd2UgY2FsY3VsYXRlZCBpdCwgdGhyb3cgaXQgYXdheSB3aXRob3V0IGRpc3BsYXkK
LSAgICAgICAgICAgICAgICBkZWx0YSA9IE5vbmUKLQotICAgICAgICAgICAgbGYuc2hvdyhyZXZu
bywgcmV2LCBkZWx0YSkKKyAgICAgICAgICAgIGlmIHVzZV90YWdzOgorICAgICAgICAgICAgICAg
IGxmLnNob3cocmV2bm8sIHJldiwgZGVsdGEsIHJldl90YWdfZGljdC5nZXQocmV2X2lkKSkKKyAg
ICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgbGYuc2hvdyhyZXZubywgcmV2LCBkZWx0
YSkKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIGlmIHNob3dfbWVyZ2VfcmV2bm8gaXMgTm9u
ZToKICAgICAgICAgICAgICAgICBsZi5zaG93X21lcmdlKHJldiwgbWVyZ2VfZGVwdGgpCiAgICAg
ICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIGxmLnNob3dfbWVyZ2VfcmV2bm8ocmV2LCBt
ZXJnZV9kZXB0aCwgcmV2bm8pCisgICAgICAgICAgICAgICAgaWYgdXNlX3RhZ3M6CisgICAgICAg
ICAgICAgICAgICAgIGxmLnNob3dfbWVyZ2VfcmV2bm8ocmV2LCBtZXJnZV9kZXB0aCwgcmV2bm8s
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV2X3RhZ19kaWN0Lmdl
dChyZXZfaWQpKQorICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIGxm
LnNob3dfbWVyZ2VfcmV2bm8ocmV2LCBtZXJnZV9kZXB0aCwgcmV2bm8pCisKKworZGVmIF9nZXRf
cmV2aXNpb25zX3RvdWNoaW5nX2ZpbGVfaWQoYnJhbmNoLCBmaWxlX2lkLCBtYWlubGluZV9yZXZp
c2lvbnMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aWV3X3JldnNfaXRl
cik6CisgICAgIiIiUmV0dXJuIHRoZSBsaXN0IG9mIHJldmlzaW9uIGlkcyB3aGljaCB0b3VjaCBh
IGdpdmVuIGZpbGUgaWQuCisKKyAgICBUaGlzIGluY2x1ZGVzIHRoZSByZXZpc2lvbnMgd2hpY2gg
ZGlyZWN0bHkgY2hhbmdlIHRoZSBmaWxlIGlkLAorICAgIGFuZCB0aGUgcmV2aXNpb25zIHdoaWNo
IG1lcmdlIHRoZXNlIGNoYW5nZXMuIFNvIGlmIHRoZQorICAgIHJldmlzaW9uIGdyYXBoIGlzOjoK
KyAgICAgICAgQQorICAgICAgICB8XAorICAgICAgICBCIEMKKyAgICAgICAgfC8KKyAgICAgICAg
RAorCisgICAgQW5kICdDJyBjaGFuZ2VzIGEgZmlsZSwgdGhlbiBib3RoIEMgYW5kIEQgd2lsbCBi
ZSByZXR1cm5lZC4KKworICAgIFRoaXMgd2lsbCBhbHNvIGNhbiBiZSByZXN0cmljdGVkIGJhc2Vk
IG9uIGEgc3Vic2V0IG9mIHRoZSBtYWlubGluZS4KKworICAgIDpyZXR1cm46IEEgbGlzdCBvZiAo
cmV2aXNpb25faWQsIGRvdHRlZF9yZXZubywgbWVyZ2VfZGVwdGgpIHR1cGxlcy4KKyAgICAiIiIK
KyAgICAjIGZpbmQgYWxsIHRoZSByZXZpc2lvbnMgdGhhdCBjaGFuZ2UgdGhlIHNwZWNpZmljIGZp
bGUKKyAgICBmaWxlX3dlYXZlID0gYnJhbmNoLnJlcG9zaXRvcnkud2VhdmVfc3RvcmUuZ2V0X3dl
YXZlKGZpbGVfaWQsCisgICAgICAgICAgICAgICAgYnJhbmNoLnJlcG9zaXRvcnkuZ2V0X3RyYW5z
YWN0aW9uKCkpCisgICAgd2VhdmVfbW9kaWZlZF9yZXZpc2lvbnMgPSBzZXQoZmlsZV93ZWF2ZS52
ZXJzaW9ucygpKQorICAgICMgYnVpbGQgdGhlIGFuY2VzdHJ5IG9mIGVhY2ggcmV2aXNpb24gaW4g
dGhlIGdyYXBoCisgICAgIyAtIG9ubHkgbGlzdGluZyB0aGUgYW5jZXN0b3JzIHRoYXQgY2hhbmdl
IHRoZSBzcGVjaWZpYyBmaWxlLgorICAgIHJldl9ncmFwaCA9IGJyYW5jaC5yZXBvc2l0b3J5Lmdl
dF9yZXZpc2lvbl9ncmFwaChtYWlubGluZV9yZXZpc2lvbnNbLTFdKQorICAgIHNvcnRlZF9yZXZf
bGlzdCA9IHRvcG9fc29ydChyZXZfZ3JhcGgpCisgICAgYW5jZXN0cnkgPSB7fQorICAgIGZvciBy
ZXYgaW4gc29ydGVkX3Jldl9saXN0OgorICAgICAgICBwYXJlbnRzID0gcmV2X2dyYXBoW3Jldl0K
KyAgICAgICAgaWYgcmV2IG5vdCBpbiB3ZWF2ZV9tb2RpZmVkX3JldmlzaW9ucyBhbmQgbGVuKHBh
cmVudHMpID09IDE6CisgICAgICAgICAgICAjIFdlIHdpbGwgbm90IGJlIGFkZGluZyBhbnl0aGlu
ZyBuZXcsIHNvIGp1c3QgdXNlIGEgcmVmZXJlbmNlIHRvCisgICAgICAgICAgICAjIHRoZSBwYXJl
bnQgYW5jZXN0cnkuCisgICAgICAgICAgICByZXZfYW5jZXN0cnkgPSBhbmNlc3RyeVtwYXJlbnRz
WzBdXQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgcmV2X2FuY2VzdHJ5ID0gc2V0KCkKKyAg
ICAgICAgICAgIGlmIHJldiBpbiB3ZWF2ZV9tb2RpZmVkX3JldmlzaW9uczoKKyAgICAgICAgICAg
ICAgICByZXZfYW5jZXN0cnkuYWRkKHJldikKKyAgICAgICAgICAgIGZvciBwYXJlbnQgaW4gcGFy
ZW50czoKKyAgICAgICAgICAgICAgICByZXZfYW5jZXN0cnkgPSByZXZfYW5jZXN0cnkudW5pb24o
YW5jZXN0cnlbcGFyZW50XSkKKyAgICAgICAgYW5jZXN0cnlbcmV2XSA9IHJldl9hbmNlc3RyeQor
CisgICAgZGVmIGlzX21lcmdpbmdfcmV2KHIpOgorICAgICAgICBwYXJlbnRzID0gcmV2X2dyYXBo
W3JdCisgICAgICAgIGlmIGxlbihwYXJlbnRzKSA+IDE6CisgICAgICAgICAgICBsZWZ0cGFyZW50
ID0gcGFyZW50c1swXQorICAgICAgICAgICAgZm9yIHJpZ2h0cGFyZW50IGluIHBhcmVudHNbMTpd
OgorICAgICAgICAgICAgICAgIGlmIG5vdCBhbmNlc3RyeVtsZWZ0cGFyZW50XS5pc3N1cGVyc2V0
KAorICAgICAgICAgICAgICAgICAgICAgICAgYW5jZXN0cnlbcmlnaHRwYXJlbnRdKToKKyAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIFRydWUKKyAgICAgICAgcmV0dXJuIEZhbHNlCisKKyAgICAj
IGZpbHRlciBmcm9tIHRoZSB2aWV3IHRoZSByZXZpc2lvbnMgdGhhdCBkaWQgbm90IGNoYW5nZSBv
ciBtZXJnZSAKKyAgICAjIHRoZSBzcGVjaWZpYyBmaWxlCisgICAgcmV0dXJuIFsociwgbiwgZCkg
Zm9yIHIsIG4sIGQgaW4gdmlld19yZXZzX2l0ZXIKKyAgICAgICAgICAgIGlmIHIgaW4gd2VhdmVf
bW9kaWZlZF9yZXZpc2lvbnMgb3IgaXNfbWVyZ2luZ19yZXYocildCiAKIAogZGVmIGdldF92aWV3
X3JldmlzaW9ucyhtYWlubGluZV9yZXZzLCByZXZfbm9zLCBicmFuY2gsIGRpcmVjdGlvbiwKQEAg
LTM0MCwyOCArNDExLDM4IEBACiAKICAgICBkZWYgc2hvcnRfY29tbWl0dGVyKHNlbGYsIHJldik6
CiAgICAgICAgIHJldHVybiByZS5zdWIoJzwuKkAuKj4nLCAnJywgcmV2LmNvbW1pdHRlcikuc3Ry
aXAoJyAnKQotICAgIAotICAgIAorCisKIGNsYXNzIExvbmdMb2dGb3JtYXR0ZXIoTG9nRm9ybWF0
dGVyKToKLSAgICBkZWYgc2hvdyhzZWxmLCByZXZubywgcmV2LCBkZWx0YSk6Ci0gICAgICAgIHJl
dHVybiBzZWxmLl9zaG93X2hlbHBlcihyZXZubz1yZXZubywgcmV2PXJldiwgZGVsdGE9ZGVsdGEp
CisKKyAgICBzdXBwb3J0c190YWdzID0gVHJ1ZSAgICAjIG11c3QgZXhpc3QgYW5kIGJlIFRydWUK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIGlmIHRoaXMgbG9nIGZvcm1hdHRlciBzdXBw
b3J0IHRhZ3MuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyAuc2hvdygpIGFuZCAuc2hv
d19tZXJnZV9yZXZubygpIG11c3QgdGhlbiBhY2NlcHQKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAjIHRoZSAndGFncyctYXJndW1lbnQgd2l0aCBsaXN0IG9mIHRhZ3MKKworICAgIGRlZiBz
aG93KHNlbGYsIHJldm5vLCByZXYsIGRlbHRhLCB0YWdzPU5vbmUpOgorICAgICAgICByZXR1cm4g
c2VsZi5fc2hvd19oZWxwZXIocmV2bm89cmV2bm8sIHJldj1yZXYsIGRlbHRhPWRlbHRhLCB0YWdz
PXRhZ3MpCiAKICAgICBAZGVwcmVjYXRlZF9tZXRob2QoemVyb19lbGV2ZW4pCiAgICAgZGVmIHNo
b3dfbWVyZ2Uoc2VsZiwgcmV2LCBtZXJnZV9kZXB0aCk6Ci0gICAgICAgIHJldHVybiBzZWxmLl9z
aG93X2hlbHBlcihyZXY9cmV2LCBpbmRlbnQ9JyAgICAnKm1lcmdlX2RlcHRoLCBtZXJnZWQ9VHJ1
ZSwgZGVsdGE9Tm9uZSkKKyAgICAgICAgcmV0dXJuIHNlbGYuX3Nob3dfaGVscGVyKHJldj1yZXYs
IGluZGVudD0nICAgICcqbWVyZ2VfZGVwdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBtZXJnZWQ9VHJ1ZSwgZGVsdGE9Tm9uZSkKIAotICAgIGRlZiBzaG93X21lcmdlX3Jldm5v
KHNlbGYsIHJldiwgbWVyZ2VfZGVwdGgsIHJldm5vKToKKyAgICBkZWYgc2hvd19tZXJnZV9yZXZu
byhzZWxmLCByZXYsIG1lcmdlX2RlcHRoLCByZXZubywgdGFncz1Ob25lKToKICAgICAgICAgIiIi
U2hvdyBhIG1lcmdlZCByZXZpc2lvbiByZXYsIHdpdGggbWVyZ2VfZGVwdGggYW5kIGEgcmV2bm8u
IiIiCiAgICAgICAgIHJldHVybiBzZWxmLl9zaG93X2hlbHBlcihyZXY9cmV2LCByZXZubz1yZXZu
bywKLSAgICAgICAgICAgIGluZGVudD0nICAgICcqbWVyZ2VfZGVwdGgsIG1lcmdlZD1UcnVlLCBk
ZWx0YT1Ob25lKQorICAgICAgICAgICAgaW5kZW50PScgICAgJyptZXJnZV9kZXB0aCwgbWVyZ2Vk
PVRydWUsIGRlbHRhPU5vbmUsIHRhZ3M9dGFncykKIAotICAgIGRlZiBfc2hvd19oZWxwZXIoc2Vs
ZiwgcmV2PU5vbmUsIHJldm5vPU5vbmUsIGluZGVudD0nJywgbWVyZ2VkPUZhbHNlLCBkZWx0YT1O
b25lKToKKyAgICBkZWYgX3Nob3dfaGVscGVyKHNlbGYsIHJldj1Ob25lLCByZXZubz1Ob25lLCBp
bmRlbnQ9JycsIG1lcmdlZD1GYWxzZSwKKyAgICAgICAgICAgICAgICAgICAgIGRlbHRhPU5vbmUs
IHRhZ3M9Tm9uZSk6CiAgICAgICAgICIiIlNob3cgYSByZXZpc2lvbiwgZWl0aGVyIG1lcmdlZCBv
ciBub3QuIiIiCiAgICAgICAgIGZyb20gYnpybGliLm9zdXRpbHMgaW1wb3J0IGZvcm1hdF9kYXRl
CiAgICAgICAgIHRvX2ZpbGUgPSBzZWxmLnRvX2ZpbGUKICAgICAgICAgcHJpbnQgPj50b19maWxl
LCAgaW5kZW50KyctJyAqIDYwCiAgICAgICAgIGlmIHJldm5vIGlzIG5vdCBOb25lOgogICAgICAg
ICAgICAgcHJpbnQgPj50b19maWxlLCAgaW5kZW50KydyZXZubzonLCByZXZubworICAgICAgICBp
ZiB0YWdzOgorICAgICAgICAgICAgcHJpbnQgPj50b19maWxlLCBpbmRlbnQrJ3RhZ3M6ICVzJyAl
ICgnLCAnLmpvaW4odGFncykpCiAgICAgICAgIGlmIG1lcmdlZDoKICAgICAgICAgICAgIHByaW50
ID4+dG9fZmlsZSwgIGluZGVudCsnbWVyZ2VkOicsIHJldi5yZXZpc2lvbl9pZAogICAgICAgICBl
bGlmIHNlbGYuc2hvd19pZHM6CkBAIC0zNzAsNiArNDUxLDcgQEAKICAgICAgICAgICAgIGZvciBw
YXJlbnRfaWQgaW4gcmV2LnBhcmVudF9pZHM6CiAgICAgICAgICAgICAgICAgcHJpbnQgPj50b19m
aWxlLCBpbmRlbnQrJ3BhcmVudDonLCBwYXJlbnRfaWQKICAgICAgICAgcHJpbnQgPj50b19maWxl
LCAgaW5kZW50Kydjb21taXR0ZXI6JywgcmV2LmNvbW1pdHRlcgorCiAgICAgICAgIHRyeToKICAg
ICAgICAgICAgIHByaW50ID4+dG9fZmlsZSwgaW5kZW50KydicmFuY2ggbmljazogJXMnICUgXAog
ICAgICAgICAgICAgICAgIHJldi5wcm9wZXJ0aWVzWydicmFuY2gtbmljayddCgo=

=== modified file bzrlib/memorytree.py // last-changed:john@arbash-meinel.com-2
... 0070417201004-1v7sim0tlt19l8o4 // encoding:base64
LS0tIGJ6cmxpYi9tZW1vcnl0cmVlLnB5CisrKyBienJsaWIvbWVtb3J5dHJlZS5weQpAQCAtMjIy
LDE4ICsyMjIsMjkgQEAKICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgcmFpc2Ug
ZXJyb3JzLk5vU3VjaElkKHNlbGYsIGZpbGVfaWQpCiAKKyAgICBkZWYgc2V0X3BhcmVudF9pZHMo
c2VsZiwgcmV2aXNpb25faWRzLCBhbGxvd19sZWZ0bW9zdF9hc19naG9zdD1GYWxzZSk6CisgICAg
ICAgICIiIlNlZSBNdXRhYmxlVHJlZS5zZXRfcGFyZW50X3RyZWVzKCkuIiIiCisgICAgICAgIGlm
IGxlbihyZXZpc2lvbl9pZHMpID09IDA6CisgICAgICAgICAgICBzZWxmLl9wYXJlbnRfaWRzID0g
W10KKyAgICAgICAgICAgIHNlbGYuX2Jhc2lzX3RyZWUgPSBzZWxmLmJyYW5jaC5yZXBvc2l0b3J5
LnJldmlzaW9uX3RyZWUoTm9uZSkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNlbGYuX3Bh
cmVudF9pZHMgPSByZXZpc2lvbl9pZHMKKyAgICAgICAgICAgIHNlbGYuX2Jhc2lzX3RyZWUgPSBz
ZWxmLmJyYW5jaC5yZXBvc2l0b3J5LnJldmlzaW9uX3RyZWUoCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICByZXZpc2lvbl9pZHNbMF0pCisgICAgICAgICAgICBzZWxmLl9icmFu
Y2hfcmV2aXNpb25faWQgPSByZXZpc2lvbl9pZHNbMF0KKwogICAgIGRlZiBzZXRfcGFyZW50X3Ry
ZWVzKHNlbGYsIHBhcmVudHNfbGlzdCwgYWxsb3dfbGVmdG1vc3RfYXNfZ2hvc3Q9RmFsc2UpOgog
ICAgICAgICAiIiJTZWUgTXV0YWJsZVRyZWUuc2V0X3BhcmVudF90cmVlcygpLiIiIgogICAgICAg
ICBpZiBsZW4ocGFyZW50c19saXN0KSA9PSAwOgogICAgICAgICAgICAgc2VsZi5fcGFyZW50X2lk
cyA9IFtdCi0gICAgICAgICAgICBzZWxmLl9iYXNpc190cmVlID0gc2VsZi5icmFuY2gucmVwb3Np
dG9yeS5yZXZpc2lvbnRyZWUoTm9uZSkKKyAgICAgICAgICAgIHNlbGYuX2Jhc2lzX3RyZWUgPSBz
ZWxmLmJyYW5jaC5yZXBvc2l0b3J5LnJldmlzaW9uX3RyZWUoTm9uZSkKICAgICAgICAgZWxzZToK
ICAgICAgICAgICAgIGlmIHBhcmVudHNfbGlzdFswXVsxXSBpcyBOb25lIGFuZCBub3QgYWxsb3df
bGVmdG1vc3RfYXNfZ2hvc3Q6CiAgICAgICAgICAgICAgICAgIyBhIGdob3N0IGluIHRoZSBsZWZ0
IG1vc3QgcGFyZW50CiAgICAgICAgICAgICAgICAgcmFpc2UgZXJyb3JzLkdob3N0UmV2aXNpb25V
bnVzYWJsZUhlcmUocGFyZW50c19saXN0WzBdWzBdKQogICAgICAgICAgICAgc2VsZi5fcGFyZW50
X2lkcyA9IFtwYXJlbnRfaWQgZm9yIHBhcmVudF9pZCwgdHJlZSBpbiBwYXJlbnRzX2xpc3RdCiAg
ICAgICAgICAgICBpZiBwYXJlbnRzX2xpc3RbMF1bMV0gaXMgTm9uZToKLSAgICAgICAgICAgICAg
ICBzZWxmLl9iYXNpc190cmVlID0gc2VsZi5icmFuY2gucmVwb3NpdG9yeS5yZXZpc2lvbnRyZWUo
Tm9uZSkKKyAgICAgICAgICAgICAgICBzZWxmLl9iYXNpc190cmVlID0gc2VsZi5icmFuY2gucmVw
b3NpdG9yeS5yZXZpc2lvbl90cmVlKE5vbmUpCiAgICAgICAgICAgICBlbHNlOgogICAgICAgICAg
ICAgICAgIHNlbGYuX2Jhc2lzX3RyZWUgPSBwYXJlbnRzX2xpc3RbMF1bMV0KICAgICAgICAgICAg
IHNlbGYuX2JyYW5jaF9yZXZpc2lvbl9pZCA9IHBhcmVudHNfbGlzdFswXVswXQoK

=== modified file bzrlib/msgeditor.py // last-changed:bialix@ukr.net-2007043019
... 5244-pxc5r3x72ckh027e // encoding:base64
LS0tIGJ6cmxpYi9tc2dlZGl0b3IucHkKKysrIGJ6cmxpYi9tc2dlZGl0b3IucHkKQEAgLTg3LDQ2
ICs4NywzMyBAQAogICAgIFRoaXMgaXMgcnVuIGlmIHRoZXkgZG9uJ3QgZ2l2ZSBhIG1lc3NhZ2Ug
b3IKICAgICBtZXNzYWdlLWNvbnRhaW5pbmcgZmlsZSBvbiB0aGUgY29tbWFuZCBsaW5lLgogCi0g
ICAgaW5mb3RleHQ6Ci0gICAgICAgIFRleHQgdG8gYmUgZGlzcGxheWVkIGF0IGJvdHRvbSBvZiBt
ZXNzYWdlIGZvcgotICAgICAgICB0aGUgdXNlcidzIHJlZmVyZW5jZTsgY3VycmVudGx5IHNpbWls
YXIgdG8KLSAgICAgICAgJ2J6ciBzdGF0dXMnLgotCi0gICAgaWdub3JlbGluZToKLSAgICAgICAg
VGhlIHNlcGFyYXRvciB0byB1c2UgYWJvdmUgdGhlIGluZm90ZXh0LgotCi0gICAgc3RhcnRfbWVz
c2FnZToKLSAgICAgICAgVGhlIHRleHQgdG8gcGxhY2UgYWJvdmUgdGhlIHNlcGFyYXRvciwgaWYg
YW55LiBUaGlzIHdpbGwgbm90IGJlCi0gICAgICAgIHJlbW92ZWQgZnJvbSB0aGUgbWVzc2FnZSBh
ZnRlciB0aGUgdXNlciBoYXMgZWRpdGVkIGl0LgorICAgIDpwYXJhbSBpbmZvdGV4dDogICAgVGV4
dCB0byBiZSBkaXNwbGF5ZWQgYXQgYm90dG9tIG9mIG1lc3NhZ2UKKyAgICAgICAgICAgICAgICAg
ICAgICAgIGZvciB0aGUgdXNlcidzIHJlZmVyZW5jZTsKKyAgICAgICAgICAgICAgICAgICAgICAg
IGN1cnJlbnRseSBzaW1pbGFyIHRvICdienIgc3RhdHVzJy4KKworICAgIDpwYXJhbSBpZ25vcmVs
aW5lOiAgVGhlIHNlcGFyYXRvciB0byB1c2UgYWJvdmUgdGhlIGluZm90ZXh0LgorCisgICAgOnBh
cmFtIHN0YXJ0X21lc3NhZ2U6ICAgVGhlIHRleHQgdG8gcGxhY2UgYWJvdmUgdGhlIHNlcGFyYXRv
ciwgaWYgYW55LgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgd2lsbCBub3QgYmUg
cmVtb3ZlZCBmcm9tIHRoZSBtZXNzYWdlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWZ0
ZXIgdGhlIHVzZXIgaGFzIGVkaXRlZCBpdC4KKworICAgIDpyZXR1cm46ICAgIGNvbW1pdCBtZXNz
YWdlIG9yIE5vbmUuCiAgICAgIiIiCi0gICAgaW1wb3J0IHRlbXBmaWxlCi0KICAgICBtc2dmaWxl
bmFtZSA9IE5vbmUKICAgICB0cnk6Ci0gICAgICAgIHRtcF9maWxlbm8sIG1zZ2ZpbGVuYW1lID0g
dGVtcGZpbGUubWtzdGVtcChwcmVmaXg9J2J6cl9sb2cuJywgZGlyPXUnLicpCi0gICAgICAgIG1z
Z2ZpbGUgPSBvcy5mZG9wZW4odG1wX2ZpbGVubywgJ3cnKQotICAgICAgICB0cnk6Ci0gICAgICAg
ICAgICBpZiBzdGFydF9tZXNzYWdlIGlzIG5vdCBOb25lOgotICAgICAgICAgICAgICAgIG1zZ2Zp
bGUud3JpdGUoIiVzXG4iICUgc3RhcnRfbWVzc2FnZS5lbmNvZGUoCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgYnpybGliLnVzZXJfZW5jb2RpbmcsICdyZXBsYWNl
JykpCi0KLSAgICAgICAgICAgIGlmIGluZm90ZXh0IGlzIG5vdCBOb25lIGFuZCBpbmZvdGV4dCAh
PSAiIjoKLSAgICAgICAgICAgICAgICBoYXNpbmZvID0gVHJ1ZQotICAgICAgICAgICAgICAgIG1z
Z2ZpbGUud3JpdGUoIlxuXG4lc1xuXG4lcyIgJSAoaWdub3JlbGluZSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGluZm90ZXh0LmVuY29kZShienJsaWIudXNlcl9lbmNvZGluZywKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAncmVwbGFj
ZScpKSkKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgaGFzaW5mbyA9IEZhbHNl
Ci0gICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICBtc2dmaWxlLmNsb3NlKCkKLQotICAgICAg
ICBpZiBub3QgX3J1bl9lZGl0b3IobXNnZmlsZW5hbWUpOgorICAgICAgICBtc2dmaWxlbmFtZSwg
aGFzaW5mbyA9IF9jcmVhdGVfdGVtcF9maWxlX3dpdGhfY29tbWl0X3RlbXBsYXRlKAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5mb3RleHQsIGlnbm9yZWxpbmUsIHN0YXJ0
X21lc3NhZ2UpCisKKyAgICAgICAgaWYgbm90IG1zZ2ZpbGVuYW1lIG9yIG5vdCBfcnVuX2VkaXRv
cihtc2dmaWxlbmFtZSk6CiAgICAgICAgICAgICByZXR1cm4gTm9uZQogICAgICAgICAKICAgICAg
ICAgc3RhcnRlZCA9IEZhbHNlCiAgICAgICAgIG1zZyA9IFtdCiAgICAgICAgIGxhc3RsaW5lLCBu
bGluZXMgPSAwLCAwCi0gICAgICAgIGZvciBsaW5lIGluIGNvZGVjcy5vcGVuKG1zZ2ZpbGVuYW1l
LCAncicsIGJ6cmxpYi51c2VyX2VuY29kaW5nKToKKyAgICAgICAgIyBjb2RlY3Mub3BlbigpIEFM
V0FZUyBvcGVucyBmaWxlIGluIGJpbmFyeSBtb2RlIGJ1dCB3ZSBuZWVkIHRleHQgbW9kZQorICAg
ICAgICAjICdyVScgbW9kZSB1c2VmdWwgd2hlbiBienIuZXhlIHVzZWQgb24gQ3lnd2luIChiaWFs
aXggMjAwNzA0MzApCisgICAgICAgIGYgPSBmaWxlKG1zZ2ZpbGVuYW1lLCAnclUnKQorICAgICAg
ICBmb3IgbGluZSBpbiBjb2RlY3MuZ2V0cmVhZGVyKGJ6cmxpYi51c2VyX2VuY29kaW5nKShmKToK
ICAgICAgICAgICAgIHN0cmlwcGVkX2xpbmUgPSBsaW5lLnN0cmlwKCkKICAgICAgICAgICAgICMg
c3RyaXAgZW1wdHkgbGluZSBiZWZvcmUgdGhlIGxvZyBtZXNzYWdlIHN0YXJ0cwogICAgICAgICAg
ICAgaWYgbm90IHN0YXJ0ZWQ6CkBAIC0xNDMsNyArMTMwLDggQEAKICAgICAgICAgICAgIGlmIHN0
cmlwcGVkX2xpbmUgIT0gIiI6CiAgICAgICAgICAgICAgICAgbGFzdGxpbmUgPSBubGluZXMKICAg
ICAgICAgICAgIG1zZy5hcHBlbmQobGluZSkKLSAgICAgICAgICAgIAorICAgICAgICBmLmNsb3Nl
KCkKKwogICAgICAgICBpZiBsZW4obXNnKSA9PSAwOgogICAgICAgICAgICAgcmV0dXJuICIiCiAg
ICAgICAgICMgZGVsZXRlIGVtcHR5IGxpbmVzIGF0IHRoZSBlbmQKQEAgLTE2Miw2ICsxNTAsNDYg
QEAKICAgICAgICAgICAgICAgICB3YXJuaW5nKCJmYWlsZWQgdG8gdW5saW5rICVzOiAlczsgaWdu
b3JlZCIsIG1zZ2ZpbGVuYW1lLCBlKQogCiAKK2RlZiBfY3JlYXRlX3RlbXBfZmlsZV93aXRoX2Nv
bW1pdF90ZW1wbGF0ZShpbmZvdGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBpZ25vcmVsaW5lPURFRkFVTFRfSUdOT1JFX0xJTkUsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRfbWVzc2FnZT1Ob25lKToKKyAgICAi
IiJDcmVhdGUgdGVtcCBmaWxlIGFuZCB3cml0ZSBjb21taXQgdGVtcGxhdGUgaW4gaXQuCisKKyAg
ICA6cGFyYW0gaW5mb3RleHQ6ICAgIFRleHQgdG8gYmUgZGlzcGxheWVkIGF0IGJvdHRvbSBvZiBt
ZXNzYWdlCisgICAgICAgICAgICAgICAgICAgICAgICBmb3IgdGhlIHVzZXIncyByZWZlcmVuY2U7
CisgICAgICAgICAgICAgICAgICAgICAgICBjdXJyZW50bHkgc2ltaWxhciB0byAnYnpyIHN0YXR1
cycuCisKKyAgICA6cGFyYW0gaWdub3JlbGluZTogIFRoZSBzZXBhcmF0b3IgdG8gdXNlIGFib3Zl
IHRoZSBpbmZvdGV4dC4KKworICAgIDpwYXJhbSBzdGFydF9tZXNzYWdlOiAgIFRoZSB0ZXh0IHRv
IHBsYWNlIGFib3ZlIHRoZSBzZXBhcmF0b3IsIGlmIGFueS4KKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBUaGlzIHdpbGwgbm90IGJlIHJlbW92ZWQgZnJvbSB0aGUgbWVzc2FnZQorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGFmdGVyIHRoZSB1c2VyIGhhcyBlZGl0ZWQgaXQuCisKKyAg
ICA6cmV0dXJuOiAgICAyLXR1cGxlICh0ZW1wIGZpbGUgbmFtZSwgaGFzaW5mbykKKyAgICAiIiIK
KyAgICBpbXBvcnQgdGVtcGZpbGUKKyAgICB0bXBfZmlsZW5vLCBtc2dmaWxlbmFtZSA9IHRlbXBm
aWxlLm1rc3RlbXAocHJlZml4PSdienJfbG9nLicsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGRpcj11Jy4nLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB0ZXh0PVRydWUpCisgICAgbXNnZmlsZSA9IG9zLmZkb3Bl
bih0bXBfZmlsZW5vLCAndycpCisgICAgdHJ5OgorICAgICAgICBpZiBzdGFydF9tZXNzYWdlIGlz
IG5vdCBOb25lOgorICAgICAgICAgICAgbXNnZmlsZS53cml0ZSgiJXNcbiIgJSBzdGFydF9tZXNz
YWdlLmVuY29kZSgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ6cmxp
Yi51c2VyX2VuY29kaW5nLCAncmVwbGFjZScpKQorCisgICAgICAgIGlmIGluZm90ZXh0IGlzIG5v
dCBOb25lIGFuZCBpbmZvdGV4dCAhPSAiIjoKKyAgICAgICAgICAgIGhhc2luZm8gPSBUcnVlCisg
ICAgICAgICAgICBtc2dmaWxlLndyaXRlKCJcblxuJXNcblxuJXMiICUgKGlnbm9yZWxpbmUsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgIGluZm90ZXh0LmVuY29kZShienJsaWIudXNlcl9lbmNv
ZGluZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdy
ZXBsYWNlJykpKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgaGFzaW5mbyA9IEZhbHNlCisg
ICAgZmluYWxseToKKyAgICAgICAgbXNnZmlsZS5jbG9zZSgpCisKKyAgICByZXR1cm4gKG1zZ2Zp
bGVuYW1lLCBoYXNpbmZvKQorCisKIGRlZiBtYWtlX2NvbW1pdF9tZXNzYWdlX3RlbXBsYXRlKHdv
cmtpbmdfdHJlZSwgc3BlY2lmaWNfZmlsZXMpOgogICAgICIiIlByZXBhcmUgYSB0ZW1wbGF0ZSBm
aWxlIGZvciBhIGNvbW1pdCBpbnRvIGEgYnJhbmNoLgogCgo=

=== modified file bzrlib/mutabletree.py // last-changed:john@arbash-meinel.com-
... 20070417201004-1v7sim0tlt19l8o4 // encoding:base64
LS0tIGJ6cmxpYi9tdXRhYmxldHJlZS5weQorKysgYnpybGliL211dGFibGV0cmVlLnB5CkBAIC0y
NDUsNiArMjQ1LDEzIEBACiAgICAgICAgICIiIgogICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRl
ZEVycm9yKHNlbGYubWtkaXIpCiAKKyAgICBkZWYgc2V0X3BhcmVudF9pZHMoc2VsZiwgcmV2aXNp
b25faWRzLCBhbGxvd19sZWZ0bW9zdF9hc19naG9zdD1GYWxzZSk6CisgICAgICAgICIiIlNldCB0
aGUgcGFyZW50cyBpZHMgb2YgdGhlIHdvcmtpbmcgdHJlZS4KKworICAgICAgICA6cGFyYW0gcmV2
aXNpb25faWRzOiBBIGxpc3Qgb2YgcmV2aXNpb25faWRzLgorICAgICAgICAiIiIKKyAgICAgICAg
cmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcihzZWxmLnNldF9wYXJlbnRfaWRzKQorCiAgICAgZGVm
IHNldF9wYXJlbnRfdHJlZXMoc2VsZiwgcGFyZW50c19saXN0LCBhbGxvd19sZWZ0bW9zdF9hc19n
aG9zdD1GYWxzZSk6CiAgICAgICAgICIiIlNldCB0aGUgcGFyZW50cyBvZiB0aGUgd29ya2luZyB0
cmVlLgogCgo=

=== modified file bzrlib/option.py // last-changed:jml@canonical.com-2007041707
... 5942-1vfzpwjf8rvbty1f // encoding:base64
LS0tIGJ6cmxpYi9vcHRpb24ucHkKKysrIGJ6cmxpYi9vcHRpb24ucHkKQEAgLTIwNSw2ICsyMDUs
MzYgQEAKICAgICAgICAgeWllbGQgc2VsZi5uYW1lLCBzZWxmLnNob3J0X25hbWUoKSwgYXJnbmFt
ZSwgc2VsZi5oZWxwCiAKIAorY2xhc3MgTGlzdE9wdGlvbihPcHRpb24pOgorICAgICIiIk9wdGlv
biB1c2VkIHRvIHByb3ZpZGUgYSBsaXN0IG9mIHZhbHVlcy4KKworICAgIE9uIHRoZSBjb21tYW5k
IGxpbmUsIGFyZ3VtZW50cyBhcmUgc3BlY2lmaWVkIGJ5IGEgcmVwZWF0ZWQgdXNlIG9mIHRoZQor
ICAgIG9wdGlvbi4gJy0nIGlzIGEgc3BlY2lhbCBhcmd1bWVudCB0aGF0IHJlc2V0cyB0aGUgbGlz
dC4gRm9yIGV4YW1wbGUsCisgICAgICAtLWZvbz1hIC0tZm9vPWIKKyAgICBzZXRzIHRoZSB2YWx1
ZSBvZiB0aGUgJ2Zvbycgb3B0aW9uIHRvIFsnYScsICdiJ10sIGFuZAorICAgICAgLS1mb289YSAt
LWZvbz1iIC0tZm9vPS0gLS1mb289YworICAgIHNldHMgdGhlIHZhbHVlIG9mIHRoZSAnZm9vJyBv
cHRpb24gdG8gWydjJ10uCisgICAgIiIiCisKKyAgICBkZWYgYWRkX29wdGlvbihzZWxmLCBwYXJz
ZXIsIHNob3J0X25hbWUpOgorICAgICAgICAiIiJBZGQgdGhpcyBvcHRpb24gdG8gYW4gT3B0cGFy
c2UgcGFyc2VyLiIiIgorICAgICAgICBvcHRpb25fc3RyaW5ncyA9IFsnLS0lcycgJSBzZWxmLm5h
bWVdCisgICAgICAgIGlmIHNob3J0X25hbWUgaXMgbm90IE5vbmU6CisgICAgICAgICAgICBvcHRp
b25fc3RyaW5ncy5hcHBlbmQoJy0lcycgJSBzaG9ydF9uYW1lKQorICAgICAgICBwYXJzZXIuYWRk
X29wdGlvbihhY3Rpb249J2NhbGxiYWNrJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgY2Fs
bGJhY2s9c2VsZi5fb3B0cGFyc2VfY2FsbGJhY2ssCisgICAgICAgICAgICAgICAgICAgICAgICAg
IHR5cGU9J3N0cmluZycsIG1ldGF2YXI9c2VsZi5hcmduYW1lLnVwcGVyKCksCisgICAgICAgICAg
ICAgICAgICAgICAgICAgIGhlbHA9c2VsZi5oZWxwLCBkZWZhdWx0PVtdLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAqb3B0aW9uX3N0cmluZ3MpCisKKyAgICBkZWYgX29wdHBhcnNlX2NhbGxi
YWNrKHNlbGYsIG9wdGlvbiwgb3B0LCB2YWx1ZSwgcGFyc2VyKToKKyAgICAgICAgdmFsdWVzID0g
Z2V0YXR0cihwYXJzZXIudmFsdWVzLCBzZWxmLm5hbWUpCisgICAgICAgIGlmIHZhbHVlID09ICct
JzoKKyAgICAgICAgICAgIGRlbCB2YWx1ZXNbOl0KKyAgICAgICAgZWxzZToKKyAgICAgICAgICAg
IHZhbHVlcy5hcHBlbmQoc2VsZi50eXBlKHZhbHVlKSkKKworCiBjbGFzcyBSZWdpc3RyeU9wdGlv
bihPcHRpb24pOgogICAgICIiIk9wdGlvbiBiYXNlZCBvbiBhIHJlZ2lzdHJ5CiAKCg==

=== modified file bzrlib/osutils.py // last-changed:mbp@sourcefrog.net-20070419
... 080319-amc7f3frr64lxolq // encoding:base64
LS0tIGJ6cmxpYi9vc3V0aWxzLnB5CisrKyBienJsaWIvb3N1dGlscy5weQpAQCAtNjA2LDEyICs2
MDYsMTggQEAKICAgICByZXR1cm4gb2Zmc2V0LmRheXMgKiA4NjQwMCArIG9mZnNldC5zZWNvbmRz
CiAKICAgICAKLWRlZiBmb3JtYXRfZGF0ZSh0LCBvZmZzZXQ9MCwgdGltZXpvbmU9J29yaWdpbmFs
JywgZGF0ZV9mbXQ9Tm9uZSwgCitkZWYgZm9ybWF0X2RhdGUodCwgb2Zmc2V0PTAsIHRpbWV6b25l
PSdvcmlnaW5hbCcsIGRhdGVfZm10PU5vbmUsCiAgICAgICAgICAgICAgICAgc2hvd19vZmZzZXQ9
VHJ1ZSk6Ci0gICAgIyMgVE9ETzogUGVyaGFwcyBhIGdsb2JhbCBvcHRpb24gdG8gdXNlIGVpdGhl
ciB1bml2ZXJzYWwgb3IgbG9jYWwgdGltZT8KLSAgICAjIyBPciBwZXJoYXBzIGp1c3QgbGV0IHBl
b3BsZSBzZXQgJFRaPwotICAgIGFzc2VydCBpc2luc3RhbmNlKHQsIGZsb2F0KQotICAgIAorICAg
ICIiIlJldHVybiBhIGZvcm1hdHRlZCBkYXRlIHN0cmluZy4KKworICAgIDpwYXJhbSB0OiBTZWNv
bmRzIHNpbmNlIHRoZSBlcG9jaC4KKyAgICA6cGFyYW0gb2Zmc2V0OiBUaW1lem9uZSBvZmZzZXQg
aW4gc2Vjb25kcyBlYXN0IG9mIHV0Yy4KKyAgICA6cGFyYW0gdGltZXpvbmU6IEhvdyB0byBkaXNw
bGF5IHRoZSB0aW1lOiAndXRjJywgJ29yaWdpbmFsJyBmb3IgdGhlCisgICAgICAgICB0aW1lem9u
ZSBzcGVjaWZpZWQgYnkgb2Zmc2V0LCBvciAnbG9jYWwnIGZvciB0aGUgcHJvY2VzcydzIGN1cnJl
bnQKKyAgICAgICAgIHRpbWV6b25lLgorICAgIDpwYXJhbSBzaG93X29mZnNldDogV2hldGhlciB0
byBhcHBlbmQgdGhlIHRpbWV6b25lLgorICAgIDpwYXJhbSBkYXRlX2ZtdDogc3RyZnRpbWUgZm9y
bWF0LgorICAgICIiIgogICAgIGlmIHRpbWV6b25lID09ICd1dGMnOgogICAgICAgICB0dCA9IHRp
bWUuZ210aW1lKHQpCiAgICAgICAgIG9mZnNldCA9IDAKCg==

=== modified file bzrlib/plugin.py // last-changed:robertc@robertcollins.net-20
... 070420054437-5txpyqld8y7cl3k5 // encoding:base64
LS0tIGJ6cmxpYi9wbHVnaW4ucHkKKysrIGJ6cmxpYi9wbHVnaW4ucHkKQEAgLTI2NywzICsyNjcs
NzEgQEAKICAgICAgICAgICAgIHdhcm5pbmcoJ1VuYWJsZSB0byBsb2FkIHBsdWdpbiAlciBmcm9t
ICVyJwogICAgICAgICAgICAgICAgICAgICAlIChuYW1lLCB6aXBfbmFtZSkpCiAgICAgICAgICAg
ICBsb2dfZXhjZXB0aW9uX3F1aWV0bHkoKQorCisKK2NsYXNzIFBsdWdpbnNIZWxwSW5kZXgob2Jq
ZWN0KToKKyAgICAiIiJBIGhlbHAgaW5kZXggdGhhdCByZXR1cm5zIGhlbHAgdG9waWNzIGZvciBw
bHVnaW5zLiIiIgorCisgICAgZGVmIF9faW5pdF9fKHNlbGYpOgorICAgICAgICBzZWxmLnByZWZp
eCA9ICdwbHVnaW5zLycKKworICAgIGRlZiBnZXRfdG9waWNzKHNlbGYsIHRvcGljKToKKyAgICAg
ICAgIiIiU2VhcmNoIGZvciB0b3BpYyBpbiB0aGUgbG9hZGVkIHBsdWdpbnMuCisKKyAgICAgICAg
VGhpcyB3aWxsIG5vdCB0cmlnZ2VyIGxvYWRpbmcgb2YgbmV3IHBsdWdpbnMuCisKKyAgICAgICAg
OnBhcmFtIHRvcGljOiBBIHRvcGljIHRvIHNlYXJjaCBmb3IuCisgICAgICAgIDpyZXR1cm46IEEg
bGlzdCB3aGljaCBpcyBlaXRoZXIgZW1wdHkgb3IgY29udGFpbnMgYSBzaW5nbGUKKyAgICAgICAg
ICAgIFJlZ2lzdGVyZWRUb3BpYyBlbnRyeS4KKyAgICAgICAgIiIiCisgICAgICAgIGlmIG5vdCB0
b3BpYzoKKyAgICAgICAgICAgIHJldHVybiBbXQorICAgICAgICBpZiB0b3BpYy5zdGFydHN3aXRo
KHNlbGYucHJlZml4KToKKyAgICAgICAgICAgIHRvcGljID0gdG9waWNbbGVuKHNlbGYucHJlZml4
KTpdCisgICAgICAgIHBsdWdpbl9tb2R1bGVfbmFtZSA9ICdienJsaWIucGx1Z2lucy4lcycgJSB0
b3BpYworICAgICAgICB0cnk6CisgICAgICAgICAgICBtb2R1bGUgPSBzeXMubW9kdWxlc1twbHVn
aW5fbW9kdWxlX25hbWVdCisgICAgICAgIGV4Y2VwdCBLZXlFcnJvcjoKKyAgICAgICAgICAgIHJl
dHVybiBbXQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgcmV0dXJuIFtNb2R1bGVIZWxwVG9w
aWMobW9kdWxlKV0KKworCitjbGFzcyBNb2R1bGVIZWxwVG9waWMob2JqZWN0KToKKyAgICAiIiJB
IGhlbHAgdG9waWMgd2hpY2ggcmV0dXJucyB0aGUgZG9jc3RyaW5nIGZvciBhIG1vZHVsZS4iIiIK
KworICAgIGRlZiBfX2luaXRfXyhzZWxmLCBtb2R1bGUpOgorICAgICAgICAiIiJDb25zdHJ1Y3Rv
ci4KKworICAgICAgICA6cGFyYW0gbW9kdWxlOiBUaGUgbW9kdWxlIGZvciB3aGljaCBoZWxwIHNo
b3VsZCBiZSBnZW5lcmF0ZWQuCisgICAgICAgICIiIgorICAgICAgICBzZWxmLm1vZHVsZSA9IG1v
ZHVsZQorCisgICAgZGVmIGdldF9oZWxwX3RleHQoc2VsZiwgYWRkaXRpb25hbF9zZWVfYWxzbz1O
b25lKToKKyAgICAgICAgIiIiUmV0dXJuIGEgc3RyaW5nIHdpdGggdGhlIGhlbHAgZm9yIHRoaXMg
dG9waWMuCisKKyAgICAgICAgOnBhcmFtIGFkZGl0aW9uYWxfc2VlX2Fsc286IEFkZGl0aW9uYWwg
aGVscCB0b3BpY3MgdG8gYmUKKyAgICAgICAgICAgIGNyb3NzLXJlZmVyZW5jZWQuCisgICAgICAg
ICIiIgorICAgICAgICBpZiBub3Qgc2VsZi5tb2R1bGUuX19kb2NfXzoKKyAgICAgICAgICAgIHJl
c3VsdCA9ICJQbHVnaW4gJyVzJyBoYXMgbm8gZG9jc3RyaW5nLlxuIiAlIHNlbGYubW9kdWxlLl9f
bmFtZV9fCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICByZXN1bHQgPSBzZWxmLm1vZHVsZS5f
X2RvY19fCisgICAgICAgIGlmIHJlc3VsdFstMV0gIT0gJ1xuJzoKKyAgICAgICAgICAgIHJlc3Vs
dCArPSAnXG4nCisgICAgICAgICMgdGhlcmUgaXMgY29kZSBkdXBsaWNhdGVkIGhlcmUgYW5kIGlu
IGJ6cmxpYi9oZWxwX3RvcGljLnB5J3MgCisgICAgICAgICMgbWF0Y2hpbmcgVG9waWMgY29kZS4g
VGhpcyBzaG91bGQgcHJvYmFibHkgYmUgZmFjdG9yZWQgaW4KKyAgICAgICAgIyB0byBhIGhlbHBl
ciBmdW5jdGlvbiBhbmQgYSBjb21tb24gYmFzZSBjbGFzcy4KKyAgICAgICAgaWYgYWRkaXRpb25h
bF9zZWVfYWxzbyBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIHNlZV9hbHNvID0gc29ydGVkKHNl
dChhZGRpdGlvbmFsX3NlZV9hbHNvKSkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNlZV9h
bHNvID0gTm9uZQorICAgICAgICBpZiBzZWVfYWxzbzoKKyAgICAgICAgICAgIHJlc3VsdCArPSAn
U2VlIGFsc286ICcKKyAgICAgICAgICAgIHJlc3VsdCArPSAnLCAnLmpvaW4oc2VlX2Fsc28pCisg
ICAgICAgICAgICByZXN1bHQgKz0gJ1xuJworICAgICAgICByZXR1cm4gcmVzdWx0CisKKyAgICBk
ZWYgZ2V0X2hlbHBfdG9waWMoc2VsZik6CisgICAgICAgICIiIlJldHVybiB0aGUgbW9kdWxlcyBo
ZWxwIHRvcGljIC0gaXRzIF9fbmFtZV9fIGFmdGVyIGJ6cmxpYi5wbHVnaW5zLi4iIiIKKyAgICAg
ICAgcmV0dXJuIHNlbGYubW9kdWxlLl9fbmFtZV9fW2xlbignYnpybGliLnBsdWdpbnMuJyk6XQoK

=== modified file bzrlib/plugins/launchpad/__init__.py // last-changed:robertc@
... robertcollins.net-20070420073820-iulf74ans1v2fn8e // encoding:base64
LS0tIGJ6cmxpYi9wbHVnaW5zL2xhdW5jaHBhZC9fX2luaXRfXy5weQorKysgYnpybGliL3BsdWdp
bnMvbGF1bmNocGFkL19faW5pdF9fLnB5CkBAIC0zNCw3ICszNCw3IEBACiAgICAgIiIiUmVnaXN0
ZXIgYSBicmFuY2ggd2l0aCBsYXVuY2hwYWQubmV0LgogCiAgICAgVGhpcyBjb21tYW5kIGxpc3Rz
IGEgYnpyIGJyYW5jaCBpbiB0aGUgZGlyZWN0b3J5IG9mIGJyYW5jaGVzIG9uCi0gICAgbGF1bmNo
cGFkLm5ldC4gIFJlZ2lzdHJhdGlvbiBhbGxvd3MgdGhlIGJ1ZyB0byBiZSBhc3NvY2lhdGVkIHdp
dGgKKyAgICBsYXVuY2hwYWQubmV0LiAgUmVnaXN0cmF0aW9uIGFsbG93cyB0aGUgYnJhbmNoIHRv
IGJlIGFzc29jaWF0ZWQgd2l0aAogICAgIGJ1Z3Mgb3Igc3BlY2lmaWNhdGlvbnMuCiAgICAgCiAg
ICAgQmVmb3JlIHVzaW5nIHRoaXMgY29tbWFuZCB5b3UgbXVzdCByZWdpc3RlciB0aGUgcHJvZHVj
dCB0byB3aGljaCB0aGUKCg==

=== modified file bzrlib/repository.py // last-changed:mbp@sourcefrog.net-20070
... 423095250-xzaleukzs05x9lp0 // encoding:base64
LS0tIGJ6cmxpYi9yZXBvc2l0b3J5LnB5CisrKyBienJsaWIvcmVwb3NpdG9yeS5weQpAQCAtMzQs
NiArMzQsNyBAQAogICAgIGxvY2tkaXIsCiAgICAgb3N1dGlscywKICAgICByZWdpc3RyeSwKKyAg
ICByZW1vdGUsCiAgICAgcmV2aXNpb24gYXMgX21vZF9yZXZpc2lvbiwKICAgICBzeW1ib2xfdmVy
c2lvbmluZywKICAgICB0cmFuc2FjdGlvbnMsCkBAIC0yMzEsOCArMjMyLDI0IEBACiAgICAgZGVm
IGlzX2xvY2tlZChzZWxmKToKICAgICAgICAgcmV0dXJuIHNlbGYuY29udHJvbF9maWxlcy5pc19s
b2NrZWQoKQogCi0gICAgZGVmIGxvY2tfd3JpdGUoc2VsZik6Ci0gICAgICAgIHNlbGYuY29udHJv
bF9maWxlcy5sb2NrX3dyaXRlKCkKKyAgICBkZWYgbG9ja193cml0ZShzZWxmLCB0b2tlbj1Ob25l
KToKKyAgICAgICAgIiIiTG9jayB0aGlzIHJlcG9zaXRvcnkgZm9yIHdyaXRpbmcuCisgICAgICAg
IAorICAgICAgICA6cGFyYW0gdG9rZW46IGlmIHRoaXMgaXMgYWxyZWFkeSBsb2NrZWQsIHRoZW4g
bG9ja193cml0ZSB3aWxsIGZhaWwKKyAgICAgICAgICAgIHVubGVzcyB0aGUgdG9rZW4gbWF0Y2hl
cyB0aGUgZXhpc3RpbmcgbG9jay4KKyAgICAgICAgOnJldHVybnM6IGEgdG9rZW4gaWYgdGhpcyBp
bnN0YW5jZSBzdXBwb3J0cyB0b2tlbnMsIG90aGVyd2lzZSBOb25lLgorICAgICAgICA6cmFpc2Vz
IFRva2VuTG9ja2luZ05vdFN1cHBvcnRlZDogd2hlbiBhIHRva2VuIGlzIGdpdmVuIGJ1dCB0aGlz
CisgICAgICAgICAgICBpbnN0YW5jZSBkb2Vzbid0IHN1cHBvcnQgdXNpbmcgdG9rZW4gbG9ja3Mu
CisgICAgICAgIDpyYWlzZXMgTWlzbWF0Y2hlZFRva2VuOiBpZiB0aGUgc3BlY2lmaWVkIHRva2Vu
IGRvZXNuJ3QgbWF0Y2ggdGhlIHRva2VuCisgICAgICAgICAgICBvZiB0aGUgZXhpc3RpbmcgbG9j
ay4KKworICAgICAgICBBIHRva2VuIHNob3VsZCBiZSBwYXNzZWQgaW4gaWYgeW91IGtub3cgdGhh
dCB5b3UgaGF2ZSBsb2NrZWQgdGhlIG9iamVjdAorICAgICAgICBzb21lIG90aGVyIHdheSwgYW5k
IG5lZWQgdG8gc3luY2hyb25pc2UgdGhpcyBvYmplY3QncyBzdGF0ZSB3aXRoIHRoYXQKKyAgICAg
ICAgZmFjdC4KKworICAgICAgICBYWFg6IHRoaXMgZG9jc3RyaW5nIGlzIGR1cGxpY2F0ZWQgaW4g
bWFueSBwbGFjZXMsIGUuZy4gbG9ja2FibGVfZmlsZXMucHkKKyAgICAgICAgIiIiCisgICAgICAg
IHJldHVybiBzZWxmLmNvbnRyb2xfZmlsZXMubG9ja193cml0ZSh0b2tlbj10b2tlbikKIAogICAg
IGRlZiBsb2NrX3JlYWQoc2VsZik6CiAgICAgICAgIHNlbGYuY29udHJvbF9maWxlcy5sb2NrX3Jl
YWQoKQpAQCAtMjQwLDYgKzI1NywyMiBAQAogICAgIGRlZiBnZXRfcGh5c2ljYWxfbG9ja19zdGF0
dXMoc2VsZik6CiAgICAgICAgIHJldHVybiBzZWxmLmNvbnRyb2xfZmlsZXMuZ2V0X3BoeXNpY2Fs
X2xvY2tfc3RhdHVzKCkKIAorICAgIGRlZiBsZWF2ZV9sb2NrX2luX3BsYWNlKHNlbGYpOgorICAg
ICAgICAiIiJUZWxsIHRoaXMgcmVwb3NpdG9yeSBub3QgdG8gcmVsZWFzZSB0aGUgcGh5c2ljYWwg
bG9jayB3aGVuIHRoaXMKKyAgICAgICAgb2JqZWN0IGlzIHVubG9ja2VkLgorICAgICAgICAKKyAg
ICAgICAgSWYgbG9ja193cml0ZSBkb2Vzbid0IHJldHVybiBhIHRva2VuLCB0aGVuIHRoaXMgbWV0
aG9kIGlzIG5vdCBzdXBwb3J0ZWQuCisgICAgICAgICIiIgorICAgICAgICBzZWxmLmNvbnRyb2xf
ZmlsZXMubGVhdmVfaW5fcGxhY2UoKQorCisgICAgZGVmIGRvbnRfbGVhdmVfbG9ja19pbl9wbGFj
ZShzZWxmKToKKyAgICAgICAgIiIiVGVsbCB0aGlzIHJlcG9zaXRvcnkgdG8gcmVsZWFzZSB0aGUg
cGh5c2ljYWwgbG9jayB3aGVuIHRoaXMKKyAgICAgICAgb2JqZWN0IGlzIHVubG9ja2VkLCBldmVu
IGlmIGl0IGRpZG4ndCBvcmlnaW5hbGx5IGFjcXVpcmUgaXQuCisKKyAgICAgICAgSWYgbG9ja193
cml0ZSBkb2Vzbid0IHJldHVybiBhIHRva2VuLCB0aGVuIHRoaXMgbWV0aG9kIGlzIG5vdCBzdXBw
b3J0ZWQuCisgICAgICAgICIiIgorICAgICAgICBzZWxmLmNvbnRyb2xfZmlsZXMuZG9udF9sZWF2
ZV9pbl9wbGFjZSgpCisKICAgICBAbmVlZHNfcmVhZF9sb2NrCiAgICAgZGVmIGdhdGhlcl9zdGF0
cyhzZWxmLCByZXZpZD1Ob25lLCBjb21taXR0ZXJzPU5vbmUpOgogICAgICAgICAiIiJHYXRoZXIg
c3RhdGlzdGljcyBmcm9tIGEgcmV2aXNpb24gaWQuCkBAIC0zNjIsNiArMzk1LDIzIEBACiAKICAg
ICAgICAgOnJldHVybjogVGhlIG5ld2x5IGNyZWF0ZWQgZGVzdGluYXRpb24gcmVwb3NpdG9yeS4K
ICAgICAgICAgIiIiCisgICAgICAgICMgVE9ETzogZGVwcmVjYXRlIGFmdGVyIDAuMTY7IGNsb25p
bmcgdGhpcyB3aXRoIGFsbCBpdHMgc2V0dGluZ3MgaXMKKyAgICAgICAgIyBwcm9iYWJseSBub3Qg
dmVyeSB1c2VmdWwgLS0gbWJwIDIwMDcwNDIzCisgICAgICAgIGRlc3RfcmVwbyA9IHNlbGYuX2Ny
ZWF0ZV9zcHJvdXRpbmdfcmVwbyhhX2J6cmRpciwgc2hhcmVkPXNlbGYuaXNfc2hhcmVkKCkpCisg
ICAgICAgIHNlbGYuY29weV9jb250ZW50X2ludG8oZGVzdF9yZXBvLCByZXZpc2lvbl9pZCkKKyAg
ICAgICAgcmV0dXJuIGRlc3RfcmVwbworCisgICAgQG5lZWRzX3JlYWRfbG9jaworICAgIGRlZiBz
cHJvdXQoc2VsZiwgdG9fYnpyZGlyLCByZXZpc2lvbl9pZD1Ob25lKToKKyAgICAgICAgIiIiQ3Jl
YXRlIGEgZGVzY2VuZGVudCByZXBvc2l0b3J5IGZvciBuZXcgZGV2ZWxvcG1lbnQuCisKKyAgICAg
ICAgVW5saWtlIGNsb25lLCB0aGlzIGRvZXMgbm90IGNvcHkgdGhlIHNldHRpbmdzIG9mIHRoZSBy
ZXBvc2l0b3J5LgorICAgICAgICAiIiIKKyAgICAgICAgZGVzdF9yZXBvID0gc2VsZi5fY3JlYXRl
X3Nwcm91dGluZ19yZXBvKHRvX2J6cmRpciwgc2hhcmVkPUZhbHNlKQorICAgICAgICBkZXN0X3Jl
cG8uZmV0Y2goc2VsZiwgcmV2aXNpb25faWQ9cmV2aXNpb25faWQpCisgICAgICAgIHJldHVybiBk
ZXN0X3JlcG8KKworICAgIGRlZiBfY3JlYXRlX3Nwcm91dGluZ19yZXBvKHNlbGYsIGFfYnpyZGly
LCBzaGFyZWQpOgogICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShhX2J6cmRpci5fZm9ybWF0LCBz
ZWxmLmJ6cmRpci5fZm9ybWF0Ll9fY2xhc3NfXyk6CiAgICAgICAgICAgICAjIHVzZSB0YXJnZXQg
ZGVmYXVsdCBmb3JtYXQuCiAgICAgICAgICAgICBkZXN0X3JlcG8gPSBhX2J6cmRpci5jcmVhdGVf
cmVwb3NpdG9yeSgpCkBAIC0zNjksMTAgKzQxOSw5IEBACiAgICAgICAgICAgICAjIE1vc3QgY29u
dHJvbCBmb3JtYXRzIG5lZWQgdGhlIHJlcG9zaXRvcnkgdG8gYmUgc3BlY2lmaWNhbGx5CiAgICAg
ICAgICAgICAjIGNyZWF0ZWQsIGJ1dCBvbiBzb21lIG9sZCBhbGwtaW4tb25lIGZvcm1hdHMgaXQn
cyBub3QgbmVlZGVkCiAgICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgZGVzdF9yZXBv
ID0gc2VsZi5fZm9ybWF0LmluaXRpYWxpemUoYV9ienJkaXIsIHNoYXJlZD1zZWxmLmlzX3NoYXJl
ZCgpKQorICAgICAgICAgICAgICAgIGRlc3RfcmVwbyA9IHNlbGYuX2Zvcm1hdC5pbml0aWFsaXpl
KGFfYnpyZGlyLCBzaGFyZWQ9c2hhcmVkKQogICAgICAgICAgICAgZXhjZXB0IGVycm9ycy5Vbmlu
aXRpYWxpemFibGVGb3JtYXQ6CiAgICAgICAgICAgICAgICAgZGVzdF9yZXBvID0gYV9ienJkaXIu
b3Blbl9yZXBvc2l0b3J5KCkKLSAgICAgICAgc2VsZi5jb3B5X2NvbnRlbnRfaW50byhkZXN0X3Jl
cG8sIHJldmlzaW9uX2lkKQogICAgICAgICByZXR1cm4gZGVzdF9yZXBvCiAKICAgICBAbmVlZHNf
cmVhZF9sb2NrCkBAIC03MzksNyArNzg4LDcgQEAKICAgICAgICAgcmVjb25jaWxlciA9IFJlcG9S
ZWNvbmNpbGVyKHNlbGYsIHRob3JvdWdoPXRob3JvdWdoKQogICAgICAgICByZWNvbmNpbGVyLnJl
Y29uY2lsZSgpCiAgICAgICAgIHJldHVybiByZWNvbmNpbGVyCi0gICAgCisKICAgICBAbmVlZHNf
cmVhZF9sb2NrCiAgICAgZGVmIHJldmlzaW9uX3RyZWUoc2VsZiwgcmV2aXNpb25faWQpOgogICAg
ICAgICAiIiJSZXR1cm4gVHJlZSBmb3IgYSByZXZpc2lvbiBvbiB0aGlzIGJyYW5jaC4KQEAgLTEx
NzgsMTAgKzEyMjcsMTIgQEAKIAogICAgICAgICA6cGFyYW0gYV9ienJkaXI6IFRoZSBienJkaXIg
dG8gcHV0IHRoZSBuZXcgcmVwb3NpdG9yeSBpbiBpdC4KICAgICAgICAgOnBhcmFtIHNoYXJlZDog
VGhlIHJlcG9zaXRvcnkgc2hvdWxkIGJlIGluaXRpYWxpemVkIGFzIGEgc2hhcmFibGUgb25lLgot
CisgICAgICAgIDpyZXR1cm5zOiBUaGUgbmV3IHJlcG9zaXRvcnkgb2JqZWN0LgorICAgICAgICAK
ICAgICAgICAgVGhpcyBtYXkgcmFpc2UgVW5pbml0aWFsaXphYmxlRm9ybWF0IGlmIHNoYXJlZCBy
ZXBvc2l0b3J5IGFyZSBub3QKICAgICAgICAgY29tcGF0aWJsZSB0aGUgYV9ienJkaXIuCiAgICAg
ICAgICIiIgorICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yKHNlbGYuaW5pdGlhbGl6
ZSkKIAogICAgIGRlZiBpc19zdXBwb3J0ZWQoc2VsZik6CiAgICAgICAgICIiIklzIHRoaXMgZm9y
bWF0IHN1cHBvcnRlZD8KQEAgLTEzNDEsMjAgKzEzOTIsMTggQEAKIAogICAgIEBzdGF0aWNtZXRo
b2QKICAgICBkZWYgaXNfY29tcGF0aWJsZShzb3VyY2UsIHRhcmdldCk6Ci0gICAgICAgIGlmIG5v
dCBpc2luc3RhbmNlKHNvdXJjZSwgUmVwb3NpdG9yeSk6Ci0gICAgICAgICAgICByZXR1cm4gRmFs
c2UKLSAgICAgICAgaWYgbm90IGlzaW5zdGFuY2UodGFyZ2V0LCBSZXBvc2l0b3J5KToKLSAgICAg
ICAgICAgIHJldHVybiBGYWxzZQotICAgICAgICBpZiBzb3VyY2UuX2Zvcm1hdC5yaWNoX3Jvb3Rf
ZGF0YSAhPSB0YXJnZXQuX2Zvcm1hdC5yaWNoX3Jvb3RfZGF0YToKKyAgICAgICAgaWYgc291cmNl
LnN1cHBvcnRzX3JpY2hfcm9vdCgpICE9IHRhcmdldC5zdXBwb3J0c19yaWNoX3Jvb3QoKToKICAg
ICAgICAgICAgIHJldHVybiBGYWxzZQogICAgICAgICBpZiBzb3VyY2UuX3NlcmlhbGl6ZXIgIT0g
dGFyZ2V0Ll9zZXJpYWxpemVyOgogICAgICAgICAgICAgcmV0dXJuIEZhbHNlCi0gICAgICAgIGVs
c2U6Ci0gICAgICAgICAgICByZXR1cm4gVHJ1ZSAKKyAgICAgICAgcmV0dXJuIFRydWUKIAogICAg
IEBuZWVkc193cml0ZV9sb2NrCiAgICAgZGVmIGNvcHlfY29udGVudChzZWxmLCByZXZpc2lvbl9p
ZD1Ob25lKToKICAgICAgICAgIiIiTWFrZSBhIGNvbXBsZXRlIGNvcHkgb2YgdGhlIGNvbnRlbnQg
aW4gc2VsZiBpbnRvIGRlc3RpbmF0aW9uLgorCisgICAgICAgIFRoaXMgY29waWVzIGJvdGggdGhl
IHJlcG9zaXRvcnkncyByZXZpc2lvbiBkYXRhLCBhbmQgY29uZmlndXJhdGlvbiBpbmZvcm1hdGlv
bgorICAgICAgICBzdWNoIGFzIHRoZSBtYWtlX3dvcmtpbmdfdHJlZXMgc2V0dGluZy4KICAgICAg
ICAgCiAgICAgICAgIFRoaXMgaXMgYSBkZXN0cnVjdGl2ZSBvcGVyYXRpb24hIERvIG5vdCB1c2Ug
aXQgb24gZXhpc3RpbmcgCiAgICAgICAgIHJlcG9zaXRvcmllcy4KQEAgLTE1ODYsMTEgKzE2MzUs
NyBAQAogCiAgICAgQHN0YXRpY21ldGhvZAogICAgIGRlZiBpc19jb21wYXRpYmxlKHNvdXJjZSwg
dGFyZ2V0KToKLSAgICAgICAgaWYgbm90IGlzaW5zdGFuY2Uoc291cmNlLCBSZXBvc2l0b3J5KToK
LSAgICAgICAgICAgIHJldHVybiBGYWxzZQotICAgICAgICBpZiBub3QgaXNpbnN0YW5jZSh0YXJn
ZXQsIFJlcG9zaXRvcnkpOgotICAgICAgICAgICAgcmV0dXJuIEZhbHNlCi0gICAgICAgIGlmIG5v
dCBzb3VyY2UuX2Zvcm1hdC5yaWNoX3Jvb3RfZGF0YSBhbmQgdGFyZ2V0Ll9mb3JtYXQucmljaF9y
b290X2RhdGE6CisgICAgICAgIGlmIG5vdCBzb3VyY2Uuc3VwcG9ydHNfcmljaF9yb290KCkgYW5k
IHRhcmdldC5zdXBwb3J0c19yaWNoX3Jvb3QoKToKICAgICAgICAgICAgIHJldHVybiBUcnVlCiAg
ICAgICAgIGVsc2U6CiAgICAgICAgICAgICByZXR1cm4gRmFsc2UKQEAgLTE2NjQsMTEgKzE3MDks
NTEgQEAKICAgICAgICAgcmV0dXJuIGYuY291bnRfY29waWVkLCBmLmZhaWxlZF9yZXZpc2lvbnMK
IAogCitjbGFzcyBJbnRlclJlbW90ZVJlcG9zaXRvcnkoSW50ZXJSZXBvc2l0b3J5KToKKyAgICAi
IiJDb2RlIGZvciBjb252ZXJ0aW5nIGJldHdlZW4gUmVtb3RlUmVwb3NpdG9yeSBvYmplY3RzLgor
CisgICAgVGhpcyBqdXN0IGdldHMgYW4gbm9uLXJlbW90ZSByZXBvc2l0b3J5IGZyb20gdGhlIFJl
bW90ZVJlcG9zaXRvcnksIGFuZCBjYWxscworICAgIEludGVyUmVwb3NpdG9yeS5nZXQgYWdhaW4u
CisgICAgIiIiCisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgc291cmNlLCB0YXJnZXQpOgorICAg
ICAgICBpZiBpc2luc3RhbmNlKHNvdXJjZSwgcmVtb3RlLlJlbW90ZVJlcG9zaXRvcnkpOgorICAg
ICAgICAgICAgc291cmNlLl9lbnN1cmVfcmVhbCgpCisgICAgICAgICAgICByZWFsX3NvdXJjZSA9
IHNvdXJjZS5fcmVhbF9yZXBvc2l0b3J5CisgICAgICAgIGVsc2U6CisgICAgICAgICAgICByZWFs
X3NvdXJjZSA9IHNvdXJjZQorICAgICAgICBpZiBpc2luc3RhbmNlKHRhcmdldCwgcmVtb3RlLlJl
bW90ZVJlcG9zaXRvcnkpOgorICAgICAgICAgICAgdGFyZ2V0Ll9lbnN1cmVfcmVhbCgpCisgICAg
ICAgICAgICByZWFsX3RhcmdldCA9IHRhcmdldC5fcmVhbF9yZXBvc2l0b3J5CisgICAgICAgIGVs
c2U6CisgICAgICAgICAgICByZWFsX3RhcmdldCA9IHRhcmdldAorICAgICAgICBzZWxmLnJlYWxf
aW50ZXIgPSBJbnRlclJlcG9zaXRvcnkuZ2V0KHJlYWxfc291cmNlLCByZWFsX3RhcmdldCkKKwor
ICAgIEBzdGF0aWNtZXRob2QKKyAgICBkZWYgaXNfY29tcGF0aWJsZShzb3VyY2UsIHRhcmdldCk6
CisgICAgICAgIGlmIGlzaW5zdGFuY2Uoc291cmNlLCByZW1vdGUuUmVtb3RlUmVwb3NpdG9yeSk6
CisgICAgICAgICAgICByZXR1cm4gVHJ1ZQorICAgICAgICBpZiBpc2luc3RhbmNlKHRhcmdldCwg
cmVtb3RlLlJlbW90ZVJlcG9zaXRvcnkpOgorICAgICAgICAgICAgcmV0dXJuIFRydWUKKyAgICAg
ICAgcmV0dXJuIEZhbHNlCisKKyAgICBkZWYgY29weV9jb250ZW50KHNlbGYsIHJldmlzaW9uX2lk
PU5vbmUpOgorICAgICAgICBzZWxmLnJlYWxfaW50ZXIuY29weV9jb250ZW50KHJldmlzaW9uX2lk
PXJldmlzaW9uX2lkKQorCisgICAgZGVmIGZldGNoKHNlbGYsIHJldmlzaW9uX2lkPU5vbmUsIHBi
PU5vbmUpOgorICAgICAgICBzZWxmLnJlYWxfaW50ZXIuZmV0Y2gocmV2aXNpb25faWQ9cmV2aXNp
b25faWQsIHBiPXBiKQorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIF9nZXRfcmVwb19mb3Jt
YXRfdG9fdGVzdChzZWxmKToKKyAgICAgICAgcmV0dXJuIE5vbmUKKworCiBJbnRlclJlcG9zaXRv
cnkucmVnaXN0ZXJfb3B0aW1pc2VyKEludGVyU2FtZURhdGFSZXBvc2l0b3J5KQogSW50ZXJSZXBv
c2l0b3J5LnJlZ2lzdGVyX29wdGltaXNlcihJbnRlcldlYXZlUmVwbykKIEludGVyUmVwb3NpdG9y
eS5yZWdpc3Rlcl9vcHRpbWlzZXIoSW50ZXJLbml0UmVwbykKIEludGVyUmVwb3NpdG9yeS5yZWdp
c3Rlcl9vcHRpbWlzZXIoSW50ZXJNb2RlbDFhbmQyKQogSW50ZXJSZXBvc2l0b3J5LnJlZ2lzdGVy
X29wdGltaXNlcihJbnRlcktuaXQxYW5kMikKK0ludGVyUmVwb3NpdG9yeS5yZWdpc3Rlcl9vcHRp
bWlzZXIoSW50ZXJSZW1vdGVSZXBvc2l0b3J5KQogCiAKIGNsYXNzIFJlcG9zaXRvcnlUZXN0UHJv
dmlkZXJBZGFwdGVyKG9iamVjdCk6CkBAIC0xNjgwLDkgKzE3NjUsMTEgQEAKICAgICB0byBtYWtl
IGl0IGVhc3kgdG8gaWRlbnRpZnkuCiAgICAgIiIiCiAKLSAgICBkZWYgX19pbml0X18oc2VsZiwg
dHJhbnNwb3J0X3NlcnZlciwgdHJhbnNwb3J0X3JlYWRvbmx5X3NlcnZlciwgZm9ybWF0cyk6Cisg
ICAgZGVmIF9faW5pdF9fKHNlbGYsIHRyYW5zcG9ydF9zZXJ2ZXIsIHRyYW5zcG9ydF9yZWFkb25s
eV9zZXJ2ZXIsIGZvcm1hdHMsCisgICAgICAgICAgICAgICAgIHZmc190cmFuc3BvcnRfZmFjdG9y
eT1Ob25lKToKICAgICAgICAgc2VsZi5fdHJhbnNwb3J0X3NlcnZlciA9IHRyYW5zcG9ydF9zZXJ2
ZXIKICAgICAgICAgc2VsZi5fdHJhbnNwb3J0X3JlYWRvbmx5X3NlcnZlciA9IHRyYW5zcG9ydF9y
ZWFkb25seV9zZXJ2ZXIKKyAgICAgICAgc2VsZi5fdmZzX3RyYW5zcG9ydF9mYWN0b3J5ID0gdmZz
X3RyYW5zcG9ydF9mYWN0b3J5CiAgICAgICAgIHNlbGYuX2Zvcm1hdHMgPSBmb3JtYXRzCiAgICAg
CiAgICAgZGVmIGFkYXB0KHNlbGYsIHRlc3QpOgpAQCAtMTY5Miw2ICsxNzc5LDEwIEBACiAgICAg
ICAgICAgICBuZXdfdGVzdCA9IGRlZXBjb3B5KHRlc3QpCiAgICAgICAgICAgICBuZXdfdGVzdC50
cmFuc3BvcnRfc2VydmVyID0gc2VsZi5fdHJhbnNwb3J0X3NlcnZlcgogICAgICAgICAgICAgbmV3
X3Rlc3QudHJhbnNwb3J0X3JlYWRvbmx5X3NlcnZlciA9IHNlbGYuX3RyYW5zcG9ydF9yZWFkb25s
eV9zZXJ2ZXIKKyAgICAgICAgICAgICMgT25seSBvdmVycmlkZSB0aGUgdGVzdCdzIHZmc190cmFu
c3BvcnRfZmFjdG9yeSBpZiBvbmUgd2FzCisgICAgICAgICAgICAjIHNwZWNpZmllZCwgb3RoZXJ3
aXNlIGp1c3QgbGVhdmUgdGhlIGRlZmF1bHQgaW4gcGxhY2UuCisgICAgICAgICAgICBpZiBzZWxm
Ll92ZnNfdHJhbnNwb3J0X2ZhY3Rvcnk6CisgICAgICAgICAgICAgICAgbmV3X3Rlc3QudmZzX3Ry
YW5zcG9ydF9mYWN0b3J5ID0gc2VsZi5fdmZzX3RyYW5zcG9ydF9mYWN0b3J5CiAgICAgICAgICAg
ICBuZXdfdGVzdC5ienJkaXJfZm9ybWF0ID0gYnpyZGlyX2Zvcm1hdAogICAgICAgICAgICAgbmV3
X3Rlc3QucmVwb3NpdG9yeV9mb3JtYXQgPSByZXBvc2l0b3J5X2Zvcm1hdAogICAgICAgICAgICAg
ZGVmIG1ha2VfbmV3X3Rlc3RfaWQoKToKCg==

=== modified file bzrlib/revision.py // last-changed:john@arbash-meinel.com-200
... 70410183032-rw4d3kpb8f9cesfw // encoding:base64
LS0tIGJ6cmxpYi9yZXZpc2lvbi5weQorKysgYnpybGliL3JldmlzaW9uLnB5CkBAIC0yNTEsMTEg
KzI1MSwxOSBAQAogICAgICAgICAgICAgcGIudXBkYXRlKCdQaWNraW5nIGFuY2VzdG9yJywgMSwg
MykKICAgICAgICAgICAgIGdyYXBoID0gcmV2aXNpb25fc291cmNlLmdldF9yZXZpc2lvbl9ncmFw
aF93aXRoX2dob3N0cygKICAgICAgICAgICAgICAgICBbcmV2aXNpb25fYSwgcmV2aXNpb25fYl0p
CisgICAgICAgICAgICAjIFNob3J0Y3V0IHRoZSBjYXNlIHdoZXJlIG9uZSBvZiB0aGUgdGlwcyBp
cyBhbHJlYWR5IGluY2x1ZGVkIGluCisgICAgICAgICAgICAjIHRoZSBvdGhlciBncmFwaHMgYW5j
ZXN0cnkuCisgICAgICAgICAgICBhbmNlc3RyeV9hID0gZ3JhcGguZ2V0X2FuY2VzdHJ5KHJldmlz
aW9uX2EpCisgICAgICAgICAgICBpZiByZXZpc2lvbl9iIGluIGFuY2VzdHJ5X2E6CisgICAgICAg
ICAgICAgICAgcmV0dXJuIHJldmlzaW9uX2IKKyAgICAgICAgICAgIGFuY2VzdHJ5X2IgPSBncmFw
aC5nZXRfYW5jZXN0cnkocmV2aXNpb25fYikKKyAgICAgICAgICAgIGlmIHJldmlzaW9uX2EgaW4g
YW5jZXN0cnlfYjoKKyAgICAgICAgICAgICAgICByZXR1cm4gcmV2aXNpb25fYQogICAgICAgICAg
ICAgIyBjb252ZXJ0IHRvIGEgTlVMTF9SRVZJU0lPTiBiYXNlZCBncmFwaC4KICAgICAgICAgICAg
IGFuY2VzdG9ycyA9IGdyYXBoLmdldF9hbmNlc3RvcnMoKQogICAgICAgICAgICAgZGVzY2VuZGFu
dHMgPSBncmFwaC5nZXRfZGVzY2VuZGFudHMoKQotICAgICAgICAgICAgY29tbW9uID0gc2V0KGdy
YXBoLmdldF9hbmNlc3RyeShyZXZpc2lvbl9hKSkuaW50ZXJzZWN0aW9uKAotICAgICAgICAgICAg
ICAgICAgICAgc2V0KGdyYXBoLmdldF9hbmNlc3RyeShyZXZpc2lvbl9iKSkpCisgICAgICAgICAg
ICBjb21tb24gPSBzZXQoYW5jZXN0cnlfYSkKKyAgICAgICAgICAgIGNvbW1vbi5pbnRlcnNlY3Rp
b25fdXBkYXRlKGFuY2VzdHJ5X2IpCiAgICAgICAgICAgICBkZXNjZW5kYW50c1tOVUxMX1JFVklT
SU9OXSA9IHt9CiAgICAgICAgICAgICBhbmNlc3RvcnNbTlVMTF9SRVZJU0lPTl0gPSBbXQogICAg
ICAgICAgICAgZm9yIHJvb3QgaW4gZ3JhcGgucm9vdHM6Cgo=

=== modified file bzrlib/revisionspec.py // last-changed:john@arbash-meinel.com
... -20070417212608-84w0sw1e7tiuhgr4 // encoding:base64
LS0tIGJ6cmxpYi9yZXZpc2lvbnNwZWMucHkKKysrIGJ6cmxpYi9yZXZpc2lvbnNwZWMucHkKQEAg
LTMyMSwxNCArMzIxLDEwIEBACiAgICAgICAgIGlmIGRvdHRlZDoKICAgICAgICAgICAgIGJyYW5j
aC5sb2NrX3JlYWQoKQogICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIGxhc3RfcmV2
ID0gYnJhbmNoLmxhc3RfcmV2aXNpb24oKQotICAgICAgICAgICAgICAgIG1lcmdlX3NvcnRlZF9y
ZXZpc2lvbnMgPSB0c29ydC5tZXJnZV9zb3J0KAotICAgICAgICAgICAgICAgICAgICBicmFuY2gu
cmVwb3NpdG9yeS5nZXRfcmV2aXNpb25fZ3JhcGgobGFzdF9yZXYpLAotICAgICAgICAgICAgICAg
ICAgICBsYXN0X3JldiwKLSAgICAgICAgICAgICAgICAgICAgZ2VuZXJhdGVfcmV2bm89VHJ1ZSkK
LSAgICAgICAgICAgICAgICBkZWYgbWF0Y2goaXRlbSk6Ci0gICAgICAgICAgICAgICAgICAgIHJl
dHVybiBpdGVtWzNdID09IG1hdGNoX3Jldm5vCi0gICAgICAgICAgICAgICAgcmV2aXNpb25zID0g
ZmlsdGVyKG1hdGNoLCBtZXJnZV9zb3J0ZWRfcmV2aXNpb25zKQorICAgICAgICAgICAgICAgIHJl
dmlzaW9uX2lkX3RvX3Jldm5vID0gYnJhbmNoLmdldF9yZXZpc2lvbl9pZF90b19yZXZub19tYXAo
KQorICAgICAgICAgICAgICAgIHJldmlzaW9ucyA9IFtyZXZpc2lvbl9pZCBmb3IgcmV2aXNpb25f
aWQsIHJldm5vCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluIHJldmlzaW9uX2lkX3Rv
X3Jldm5vLml0ZXJpdGVtcygpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIHJldm5v
ID09IG1hdGNoX3Jldm5vXQogICAgICAgICAgICAgZmluYWxseToKICAgICAgICAgICAgICAgICBi
cmFuY2gudW5sb2NrKCkKICAgICAgICAgICAgIGlmIGxlbihyZXZpc2lvbnMpICE9IDE6CkBAIC0z
MzYsNyArMzMyLDcgQEAKICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgIyB0aGVy
ZSBpcyBubyB0cmFkaXRpb25hbCAncmV2bm8nIGZvciBkb3R0ZWQtZGVjaW1hbCByZXZub3MuCiAg
ICAgICAgICAgICAgICAgIyBzbyBmb3IgIEFQSSBjb21wYXRhYmlsaXR5IHdlIHJldHVybiBOb25l
LgotICAgICAgICAgICAgICAgIHJldHVybiBSZXZpc2lvbkluZm8oYnJhbmNoLCBOb25lLCByZXZp
c2lvbnNbMF1bMV0pCisgICAgICAgICAgICAgICAgcmV0dXJuIFJldmlzaW9uSW5mbyhicmFuY2gs
IE5vbmUsIHJldmlzaW9uc1swXSkKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIGlmIHJldm5v
IDwgMDoKICAgICAgICAgICAgICAgICAjIGlmIGdldF9yZXZfaWQgc3VwcG9ydGVkIG5lZ2F0aXZl
IHJldm5vcywgdGhlcmUgd291bGQgbm90IGJlIGEKCg==

=== modified file bzrlib/symbol_versioning.py // last-changed:john@arbash-meine
... l.com-20070508200344-p77ycd72josdljry // encoding:base64
LS0tIGJ6cmxpYi9zeW1ib2xfdmVyc2lvbmluZy5weQorKysgYnpybGliL3N5bWJvbF92ZXJzaW9u
aW5nLnB5CkBAIC0zNSw2ICszNSw3IEBACiAgICAgICAgICAgICd6ZXJvX2ZvdXJ0ZWVuJywKICAg
ICAgICAgICAgJ3plcm9fZmlmdGVlbicsCiAgICAgICAgICAgICd6ZXJvX3NpeHRlZW4nLAorICAg
ICAgICAgICAnemVyb19zZXZlbnRlZW4nLAogICAgICAgICAgICBdCiAKIGZyb20gd2FybmluZ3Mg
aW1wb3J0IHdhcm4KQEAgLTUxLDYgKzUyLDcgQEAKIHplcm9fZm91cnRlZW4gPSAiJXMgd2FzIGRl
cHJlY2F0ZWQgaW4gdmVyc2lvbiAwLjE0LiIKIHplcm9fZmlmdGVlbiA9ICIlcyB3YXMgZGVwcmVj
YXRlZCBpbiB2ZXJzaW9uIDAuMTUuIgogemVyb19zaXh0ZWVuID0gIiVzIHdhcyBkZXByZWNhdGVk
IGluIHZlcnNpb24gMC4xNi4iCit6ZXJvX3NldmVudGVlbiA9ICIlcyB3YXMgZGVwcmVjYXRlZCBp
biB2ZXJzaW9uIDAuMTcuIgogCiAKIGRlZiBzZXRfd2FybmluZ19tZXRob2QobWV0aG9kKToKCg==

=== modified file bzrlib/tag.py // last-changed:bialix@ukr.net-20070419192839-p
... 964uu06n6vbjgrt // encoding:base64
LS0tIGJ6cmxpYi90YWcucHkKKysrIGJ6cmxpYi90YWcucHkKQEAgLTExMiw2ICsxMTIsMTggQEAK
ICAgICAgICAgZmluYWxseToKICAgICAgICAgICAgIHNlbGYuYnJhbmNoLnVubG9jaygpCiAKKyAg
ICBkZWYgZ2V0X3JldmVyc2VfdGFnX2RpY3Qoc2VsZik6CisgICAgICAgICIiIlJldHVybnMgYSBk
aWN0IHdpdGggcmV2aXNpb25zIGFzIGtleXMKKyAgICAgICAgICAgYW5kIGEgbGlzdCBvZiB0YWdz
IGZvciB0aGF0IHJldmlzaW9uIGFzIHZhbHVlIiIiCisgICAgICAgIGQgPSBzZWxmLmdldF90YWdf
ZGljdCgpCisgICAgICAgIHJldiA9IHt9CisgICAgICAgIGZvciBrZXkgaW4gZDoKKyAgICAgICAg
ICAgIHRyeToKKyAgICAgICAgICAgICAgICByZXZbZFtrZXldXS5hcHBlbmQoa2V5KQorICAgICAg
ICAgICAgZXhjZXB0IEtleUVycm9yOgorICAgICAgICAgICAgICAgIHJldltkW2tleV1dID0gW2tl
eV0KKyAgICAgICAgcmV0dXJuIHJldgorCiAgICAgZGVmIGRlbGV0ZV90YWcoc2VsZiwgdGFnX25h
bWUpOgogICAgICAgICAiIiJEZWxldGUgYSB0YWcgZGVmaW5pdGlvbi4KICAgICAgICAgIiIiCgo=

=== modified file bzrlib/tests/HTTPTestUtil.py // last-changed:v.ladeuil+lp@fre
... e.fr-20070424100523-3odqlqm2nnoc8gdu // encoding:base64
LS0tIGJ6cmxpYi90ZXN0cy9IVFRQVGVzdFV0aWwucHkKKysrIGJ6cmxpYi90ZXN0cy9IVFRQVGVz
dFV0aWwucHkKQEAgLTE2LDExICsxNiwxNiBAQAogCiBmcm9tIGNTdHJpbmdJTyBpbXBvcnQgU3Ry
aW5nSU8KIGltcG9ydCBlcnJubworaW1wb3J0IG1kNQogZnJvbSBTaW1wbGVIVFRQU2VydmVyIGlt
cG9ydCBTaW1wbGVIVFRQUmVxdWVzdEhhbmRsZXIKIGltcG9ydCByZQoraW1wb3J0IHNoYQogaW1w
b3J0IHNvY2tldAoraW1wb3J0IHRpbWUKK2ltcG9ydCB1cmxsaWIyCiBpbXBvcnQgdXJscGFyc2UK
IAorZnJvbSBienJsaWIuc21hcnQgaW1wb3J0IHByb3RvY29sCiBmcm9tIGJ6cmxpYi50ZXN0cyBp
bXBvcnQgVGVzdENhc2VXaXRoVHJhbnNwb3J0CiBmcm9tIGJ6cmxpYi50ZXN0cy5IdHRwU2VydmVy
IGltcG9ydCAoCiAgICAgSHR0cFNlcnZlciwKQEAgLTI4LDcgKzMzLDYgQEAKICAgICApCiBmcm9t
IGJ6cmxpYi50cmFuc3BvcnQgaW1wb3J0ICgKICAgICBnZXRfdHJhbnNwb3J0LAotICAgIHNtYXJ0
LAogICAgICkKIAogCkBAIC0xMzAsNyArMTM0LDcgQEAKICAgICAgICAgIyB3ZSBoYXZlIHRvIHN0
b3AgZWFybHkgZHVlIHRvIGVycm9yLCBidXQgd2Ugd291bGQgYWxzbyBoYXZlIHRvIHVzZSB0aGUK
ICAgICAgICAgIyBIVFRQIHRyYWlsZXIgZmFjaWxpdHkgd2hpY2ggbWF5IG5vdCBiZSB3aWRlbHkg
YXZhaWxhYmxlLgogICAgICAgICBvdXRfYnVmZmVyID0gU3RyaW5nSU8oKQotICAgICAgICBzbWFy
dF9wcm90b2NvbF9yZXF1ZXN0ID0gc21hcnQuU21hcnRTZXJ2ZXJSZXF1ZXN0UHJvdG9jb2xPbmUo
CisgICAgICAgIHNtYXJ0X3Byb3RvY29sX3JlcXVlc3QgPSBwcm90b2NvbC5TbWFydFNlcnZlclJl
cXVlc3RQcm90b2NvbE9uZSgKICAgICAgICAgICAgICAgICB0cmFuc3BvcnQsIG91dF9idWZmZXIu
d3JpdGUpCiAgICAgICAgICMgaWYgdGhpcyBmYWlscywgd2Ugc2hvdWxkIHJldHVybiA0MDAgYmFk
IHJlcXVlc3QsIGJ1dCBmYWlsdXJlIGlzCiAgICAgICAgICMgZmFpbHVyZSBmb3Igbm93IC0gUkJD
IDIwMDYwOTE5CkBAIC0yMDQsMjYgKzIwOCwxMCBAQAogICAgICAgICByZXR1cm4gc2VsZi5fX3Nl
Y29uZGFyeV9zZXJ2ZXIKIAogCi1jbGFzcyBGYWtlUHJveHlSZXF1ZXN0SGFuZGxlcihUZXN0aW5n
SFRUUFJlcXVlc3RIYW5kbGVyKToKLSAgICAiIiJBcHBlbmQgYSAnLXByb3hpZWQnIHN1ZmZpeCB0
byBmaWxlIHNlcnZlZCIiIgotCi0gICAgZGVmIHRyYW5zbGF0ZV9wYXRoKHNlbGYsIHBhdGgpOgot
ICAgICAgICAjIFdlIG5lZWQgdG8gYWN0IGFzIGEgcHJveHkgYW5kIGFjY2VwdCBhYnNvbHV0ZSB1
cmxzLAotICAgICAgICAjIHdoaWNoIFNpbXBsZUhUVFBSZXF1ZXN0SGFuZGxlciAoZ3JhbmQgcGFy
ZW50KSBpcyBub3QKLSAgICAgICAgIyByZWFkeSBmb3IuIFNvIHdlIGp1c3QgZHJvcCB0aGUgcHJv
dG9jb2w6Ly9ob3N0OnBvcnQKLSAgICAgICAgIyBwYXJ0IGluIGZyb250IG9mIHRoZSByZXF1ZXN0
LXVybCAoYmVjYXVzZSB3ZSBrbm93IHdlCi0gICAgICAgICMgd291bGQgbm90IGZvcndhcmQgdGhl
IHJlcXVlc3QgdG8gKmFub3RoZXIqIHByb3h5KS4KLQotICAgICAgICAjIFNvIHdlIGRvIHdoYXQg
U2ltcGxlSFRUUFJlcXVlc3RIYW5kbGVyLnRyYW5zbGF0ZV9wYXRoCi0gICAgICAgICMgZG8gYmVn
aW5uaW5nIHdpdGggcHl0aG9uIDIuNC4zOiBhYmFuZG9uIHF1ZXJ5Ci0gICAgICAgICMgcGFyYW1l
dGVycywgc2NoZW1lLCBob3N0IHBvcnQsIGV0YyAod2hpY2ggZW5zdXJlIHdlCi0gICAgICAgICMg
cHJvdmlkZSB0aGUgcmlnaHQgYmVoYXZpb3VyIG9uIGFsbCBweXRob24gdmVyc2lvbnMpLgotICAg
ICAgICBwYXRoID0gdXJscGFyc2UudXJscGFyc2UocGF0aClbMl0KLSAgICAgICAgIyBBbmQgbm93
LCB3ZSBjYW4gYXBwbHkgKm91ciogdHJpY2sgdG8gcHJveHkgZmlsZXMKLSAgICAgICAgc2VsZi5w
YXRoICs9ICctcHJveGllZCcKLSAgICAgICAgIyBBbiBmaW5hbGx5IHdlIGxlYXZlIG91ciBtb3Ro
ZXIgY2xhc3MgZG8gd2hhdGV2ZXIgaXQKLSAgICAgICAgIyB3YW50cyB3aXRoIHRoZSBwYXRoCi0g
ICAgICAgIHJldHVybiBUZXN0aW5nSFRUUFJlcXVlc3RIYW5kbGVyLnRyYW5zbGF0ZV9wYXRoKHNl
bGYsIHBhdGgpCitjbGFzcyBQcm94eVNlcnZlcihIdHRwU2VydmVyKToKKyAgICAiIiJBIHByb3h5
IHRlc3Qgc2VydmVyIGZvciBodHRwIHRyYW5zcG9ydHMuIiIiCisKKyAgICBwcm94eV9yZXF1ZXN0
cyA9IFRydWUKIAogCiBjbGFzcyBSZWRpcmVjdFJlcXVlc3RIYW5kbGVyKFRlc3RpbmdIVFRQUmVx
dWVzdEhhbmRsZXIpOgpAQCAtMzA5LDMgKzI5NywyMjggQEAKICAgICAgICBzZWxmLm9sZF9zZXJ2
ZXIgPSBzZWxmLmdldF9zZWNvbmRhcnlfc2VydmVyKCkKIAogCitjbGFzcyBBdXRoUmVxdWVzdEhh
bmRsZXIoVGVzdGluZ0hUVFBSZXF1ZXN0SGFuZGxlcik6CisgICAgIiIiUmVxdWlyZXMgYW4gYXV0
aGVudGljYXRpb24gdG8gcHJvY2VzcyByZXF1ZXN0cy4KKworICAgIFRoaXMgaXMgaW50ZW5kZWQg
dG8gYmUgdXNlZCB3aXRoIGEgc2VydmVyIHRoYXQgYWx3YXlzIGFuZAorICAgIG9ubHkgdXNlIG9u
ZSBhdXRoZW50aWNhdGlvbiBzY2hlbWUgKGltcGxlbWVudGVkIGJ5IGRhdWdodGVyCisgICAgY2xh
c3NlcykuCisgICAgIiIiCisKKyAgICAjIFRoZSBmb2xsb3dpbmcgYXR0cmlidXRlcyBzaG91bGQg
YmUgZGVmaW5lZCBpbiB0aGUgc2VydmVyCisgICAgIyAtIGF1dGhfaGVhZGVyX3NlbnQ6IHRoZSBo
ZWFkZXIgbmFtZSBzZW50IHRvIHJlcXVpcmUgYXV0aAorICAgICMgLSBhdXRoX2hlYWRlcl9yZWN2
OiB0aGUgaGVhZGVyIHJlY2VpdmVkIGNvbnRhaW5pbmcgYXV0aAorICAgICMgLSBhdXRoX2Vycm9y
X2NvZGU6IHRoZSBlcnJvciBjb2RlIHRvIGluZGljYXRlIGF1dGggcmVxdWlyZWQKKworICAgIGRl
ZiBkb19HRVQoc2VsZik6CisgICAgICAgIGlmIHNlbGYuYXV0aG9yaXplZCgpOgorICAgICAgICAg
ICAgcmV0dXJuIFRlc3RpbmdIVFRQUmVxdWVzdEhhbmRsZXIuZG9fR0VUKHNlbGYpCisgICAgICAg
IGVsc2U6CisgICAgICAgICAgICAjIE5vdGUgdGhhdCB3ZSBtdXN0IHVwZGF0ZSB0ZXN0X2Nhc2Vf
c2VydmVyICpiZWZvcmUqCisgICAgICAgICAgICAjIHNlbmRpbmcgdGhlIGVycm9yIG9yIHRoZSBj
bGllbnQgbWF5IHRyeSB0byByZWFkIGl0CisgICAgICAgICAgICAjIGJlZm9yZSB3ZSBoYXZlIHNl
bnQgdGhlIHdob2xlIGVycm9yIGJhY2suCisgICAgICAgICAgICB0Y3MgPSBzZWxmLnNlcnZlci50
ZXN0X2Nhc2Vfc2VydmVyCisgICAgICAgICAgICB0Y3MuYXV0aF9yZXF1aXJlZF9lcnJvcnMgKz0g
MQorICAgICAgICAgICAgc2VsZi5zZW5kX3Jlc3BvbnNlKHRjcy5hdXRoX2Vycm9yX2NvZGUpCisg
ICAgICAgICAgICBzZWxmLnNlbmRfaGVhZGVyX2F1dGhfcmVxZWQoKQorICAgICAgICAgICAgc2Vs
Zi5lbmRfaGVhZGVycygpCisgICAgICAgICAgICByZXR1cm4KKworICAgICAgICBUZXN0aW5nSFRU
UFJlcXVlc3RIYW5kbGVyLmRvX0dFVChzZWxmKQorCisKK2NsYXNzIEJhc2ljQXV0aFJlcXVlc3RI
YW5kbGVyKEF1dGhSZXF1ZXN0SGFuZGxlcik6CisgICAgIiIiSW1wbGVtZW50cyB0aGUgYmFzaWMg
YXV0aGVudGljYXRpb24gb2YgYSByZXF1ZXN0IiIiCisKKyAgICBkZWYgYXV0aG9yaXplZChzZWxm
KToKKyAgICAgICAgdGNzID0gc2VsZi5zZXJ2ZXIudGVzdF9jYXNlX3NlcnZlcgorICAgICAgICBp
ZiB0Y3MuYXV0aF9zY2hlbWUgIT0gJ2Jhc2ljJzoKKyAgICAgICAgICAgIHJldHVybiBGYWxzZQor
CisgICAgICAgIGF1dGhfaGVhZGVyID0gc2VsZi5oZWFkZXJzLmdldCh0Y3MuYXV0aF9oZWFkZXJf
cmVjdiwgTm9uZSkKKyAgICAgICAgaWYgYXV0aF9oZWFkZXI6CisgICAgICAgICAgICBzY2hlbWUs
IHJhd19hdXRoID0gYXV0aF9oZWFkZXIuc3BsaXQoJyAnLCAxKQorICAgICAgICAgICAgaWYgc2No
ZW1lLmxvd2VyKCkgPT0gdGNzLmF1dGhfc2NoZW1lOgorICAgICAgICAgICAgICAgIHVzZXIsIHBh
c3N3b3JkID0gcmF3X2F1dGguZGVjb2RlKCdiYXNlNjQnKS5zcGxpdCgnOicpCisgICAgICAgICAg
ICAgICAgcmV0dXJuIHRjcy5hdXRob3JpemVkKHVzZXIsIHBhc3N3b3JkKQorCisgICAgICAgIHJl
dHVybiBGYWxzZQorCisgICAgZGVmIHNlbmRfaGVhZGVyX2F1dGhfcmVxZWQoc2VsZik6CisgICAg
ICAgIHRjcyA9IHNlbGYuc2VydmVyLnRlc3RfY2FzZV9zZXJ2ZXIKKyAgICAgICAgc2VsZi5zZW5k
X2hlYWRlcih0Y3MuYXV0aF9oZWFkZXJfc2VudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAn
QmFzaWMgcmVhbG09IiVzIicgJSB0Y3MuYXV0aF9yZWFsbSkKKworCisjIEZJWE1FOiBXZSBjb3Vs
ZCBzZW5kIGFuIEF1dGhlbnRpY2F0aW9uLUluZm8gaGVhZGVyIHRvbyB3aGVuCisjIHRoZSBhdXRo
ZW50aWNhdGlvbiBpcyBzdWNjZXNmdWwKKworY2xhc3MgRGlnZXN0QXV0aFJlcXVlc3RIYW5kbGVy
KEF1dGhSZXF1ZXN0SGFuZGxlcik6CisgICAgIiIiSW1wbGVtZW50cyB0aGUgZGlnZXN0IGF1dGhl
bnRpY2F0aW9uIG9mIGEgcmVxdWVzdC4KKworICAgIFdlIG5lZWQgcGVyc2lzdGVuY2UgZm9yIHNv
bWUgYXR0cmlidXRlcyBhbmQgdGhhdCBjYW4ndCBiZQorICAgIGFjaGlldmVkIGhlcmUgc2luY2Ug
d2UgZ2V0IGluc3RhbnRpYXRlZCBmb3IgZWFjaCByZXF1ZXN0LiBXZQorICAgIHJlbHkgb24gdGhl
IERpZ2VzdEF1dGhTZXJ2ZXIgdG8gdGFrZSBjYXJlIG9mIHRoZW0uCisgICAgIiIiCisKKyAgICBk
ZWYgYXV0aG9yaXplZChzZWxmKToKKyAgICAgICAgdGNzID0gc2VsZi5zZXJ2ZXIudGVzdF9jYXNl
X3NlcnZlcgorICAgICAgICBpZiB0Y3MuYXV0aF9zY2hlbWUgIT0gJ2RpZ2VzdCc6CisgICAgICAg
ICAgICByZXR1cm4gRmFsc2UKKworICAgICAgICBhdXRoX2hlYWRlciA9IHNlbGYuaGVhZGVycy5n
ZXQodGNzLmF1dGhfaGVhZGVyX3JlY3YsIE5vbmUpCisgICAgICAgIGlmIGF1dGhfaGVhZGVyIGlz
IE5vbmU6CisgICAgICAgICAgICByZXR1cm4gRmFsc2UKKyAgICAgICAgc2NoZW1lLCBhdXRoID0g
YXV0aF9oZWFkZXIuc3BsaXQoTm9uZSwgMSkKKyAgICAgICAgaWYgc2NoZW1lLmxvd2VyKCkgPT0g
dGNzLmF1dGhfc2NoZW1lOgorICAgICAgICAgICAgYXV0aF9kaWN0ID0gdXJsbGliMi5wYXJzZV9r
ZXF2X2xpc3QodXJsbGliMi5wYXJzZV9odHRwX2xpc3QoYXV0aCkpCisKKyAgICAgICAgICAgIHJl
dHVybiB0Y3MuZGlnZXN0X2F1dGhvcml6ZWQoYXV0aF9kaWN0LCBzZWxmLmNvbW1hbmQpCisKKyAg
ICAgICAgcmV0dXJuIEZhbHNlCisKKyAgICBkZWYgc2VuZF9oZWFkZXJfYXV0aF9yZXFlZChzZWxm
KToKKyAgICAgICAgdGNzID0gc2VsZi5zZXJ2ZXIudGVzdF9jYXNlX3NlcnZlcgorICAgICAgICBo
ZWFkZXIgPSAnRGlnZXN0IHJlYWxtPSIlcyIsICcgJSB0Y3MuYXV0aF9yZWFsbQorICAgICAgICBo
ZWFkZXIgKz0gJ25vbmNlPSIlcyIsIGFsZ29yaXRobT0lcywgcW9wPWF1dGgnICUgKHRjcy5hdXRo
X25vbmNlLCAnTUQ1JykKKyAgICAgICAgc2VsZi5zZW5kX2hlYWRlcih0Y3MuYXV0aF9oZWFkZXJf
c2VudCxoZWFkZXIpCisKKworY2xhc3MgQXV0aFNlcnZlcihIdHRwU2VydmVyKToKKyAgICAiIiJF
eHRlbmRzIEh0dHBTZXJ2ZXIgd2l0aCBhIGRpY3Rpb25hcnkgb2YgcGFzc3dvcmRzLgorCisgICAg
VGhpcyBpcyB1c2VkIGFzIGEgYmFzZSBjbGFzcyBmb3IgdmFyaW91cyBzY2hlbWVzIHdoaWNoIHNo
b3VsZAorICAgIGFsbCB1c2Ugb3IgcmVkZWZpbmVkIHRoZSBhc3NvY2lhdGVkIEF1dGhSZXF1ZXN0
SGFuZGxlci4KKworICAgIE5vdGUgdGhhdCBubyB1c2VycyBhcmUgZGVmaW5lZCBieSBkZWZhdWx0
LCBzbyBhZGRfdXNlciBzaG91bGQKKyAgICBiZSBjYWxsZWQgYmVmb3JlIGlzc3VpbmcgdGhlIGZp
cnN0IHJlcXVlc3QuCisgICAgIiIiCisKKyAgICAjIFRoZSBmb2xsb3dpbmcgYXR0cmlidXRlcyBz
aG91bGQgYmUgc2V0IGR5IGRhdWdodGVyIGNsYXNzZXMKKyAgICAjIGFuZCBhcmUgdXNlZCBieSBB
dXRoUmVxdWVzdEhhbmRsZXIuCisgICAgYXV0aF9oZWFkZXJfc2VudCA9IE5vbmUKKyAgICBhdXRo
X2hlYWRlcl9yZWN2ID0gTm9uZQorICAgIGF1dGhfZXJyb3JfY29kZSA9IE5vbmUKKyAgICBhdXRo
X3JlYWxtID0gIlRob3Ugc2hvdWxkIG5vdCBwYXNzIgorCisgICAgZGVmIF9faW5pdF9fKHNlbGYs
IHJlcXVlc3RfaGFuZGxlciwgYXV0aF9zY2hlbWUpOgorICAgICAgICBIdHRwU2VydmVyLl9faW5p
dF9fKHNlbGYsIHJlcXVlc3RfaGFuZGxlcikKKyAgICAgICAgc2VsZi5hdXRoX3NjaGVtZSA9IGF1
dGhfc2NoZW1lCisgICAgICAgIHNlbGYucGFzc3dvcmRfb2YgPSB7fQorICAgICAgICBzZWxmLmF1
dGhfcmVxdWlyZWRfZXJyb3JzID0gMAorCisgICAgZGVmIGFkZF91c2VyKHNlbGYsIHVzZXIsIHBh
c3N3b3JkKToKKyAgICAgICAgIiIiRGVjbGFyZSBhIHVzZXIgd2l0aCBhbiBhc3NvY2lhdGVkIHBh
c3N3b3JkLgorCisgICAgICAgIHBhc3N3b3JkIGNhbiBiZSBlbXB0eSwgdXNlIGFuIGVtcHR5IHN0
cmluZyAoJycpIGluIHRoYXQKKyAgICAgICAgY2FzZSwgbm90IE5vbmUuCisgICAgICAgICIiIgor
ICAgICAgICBzZWxmLnBhc3N3b3JkX29mW3VzZXJdID0gcGFzc3dvcmQKKworICAgIGRlZiBhdXRo
b3JpemVkKHNlbGYsIHVzZXIsIHBhc3N3b3JkKToKKyAgICAgICAgIiIiQ2hlY2sgdGhhdCB0aGUg
Z2l2ZW4gdXNlciBwcm92aWRlZCB0aGUgcmlnaHQgcGFzc3dvcmQiIiIKKyAgICAgICAgZXhwZWN0
ZWRfcGFzc3dvcmQgPSBzZWxmLnBhc3N3b3JkX29mLmdldCh1c2VyLCBOb25lKQorICAgICAgICBy
ZXR1cm4gZXhwZWN0ZWRfcGFzc3dvcmQgaXMgbm90IE5vbmUgYW5kIHBhc3N3b3JkID09IGV4cGVj
dGVkX3Bhc3N3b3JkCisKKworIyBGSVhNRTogVGhlcmUgaXMgc29tZSBjb2RlIGR1cGxpY2F0aW9u
IHdpdGgKKyMgX3VybGxpYjJfd3JhcHBlcnMucHkuRGlnZXN0QXV0aEhhbmRsZXIuIElmIHRoYXQg
ZHVwbGNpYXRpb24KKyMgZ3Jvd3MsIGl0IG1heSByZXF1aXJlIGEgcmVmYWN0b3JpbmcuIEFsc28s
IHdlIGRvbid0IGltcGxlbWVudAorIyBTSEEgYWxnb3JpdGhtIG5vciBNRDUtc2VzcyBoZXJlLCBi
dXQgdGhhdCBkb2VzIG5vdCBzZWVtIHdvcnRoCisjIGl0LgorY2xhc3MgRGlnZXN0QXV0aFNlcnZl
cihBdXRoU2VydmVyKToKKyAgICAiIiJBIGRpZ2VzdCBhdXRoZW50aWNhdGlvbiBzZXJ2ZXIiIiIK
KworICAgIGF1dGhfbm9uY2UgPSAnbm93IScKKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCByZXF1
ZXN0X2hhbmRsZXIsIGF1dGhfc2NoZW1lKToKKyAgICAgICAgQXV0aFNlcnZlci5fX2luaXRfXyhz
ZWxmLCByZXF1ZXN0X2hhbmRsZXIsIGF1dGhfc2NoZW1lKQorCisgICAgZGVmIGRpZ2VzdF9hdXRo
b3JpemVkKHNlbGYsIGF1dGgsIGNvbW1hbmQpOgorICAgICAgICBub25jZSA9IGF1dGhbJ25vbmNl
J10KKyAgICAgICAgaWYgbm9uY2UgIT0gc2VsZi5hdXRoX25vbmNlOgorICAgICAgICAgICAgcmV0
dXJuIEZhbHNlCisgICAgICAgIHJlYWxtID0gYXV0aFsncmVhbG0nXQorICAgICAgICBpZiByZWFs
bSAhPSBzZWxmLmF1dGhfcmVhbG06CisgICAgICAgICAgICByZXR1cm4gRmFsc2UKKyAgICAgICAg
dXNlciA9IGF1dGhbJ3VzZXJuYW1lJ10KKyAgICAgICAgaWYgbm90IHNlbGYucGFzc3dvcmRfb2Yu
aGFzX2tleSh1c2VyKToKKyAgICAgICAgICAgIHJldHVybiBGYWxzZQorICAgICAgICBhbGdvcml0
aG09IGF1dGhbJ2FsZ29yaXRobSddCisgICAgICAgIGlmIGFsZ29yaXRobSAhPSAnTUQ1JzoKKyAg
ICAgICAgICAgIHJldHVybiBGYWxzZQorICAgICAgICBxb3AgPSBhdXRoWydxb3AnXQorICAgICAg
ICBpZiBxb3AgIT0gJ2F1dGgnOgorICAgICAgICAgICAgcmV0dXJuIEZhbHNlCisKKyAgICAgICAg
cGFzc3dvcmQgPSBzZWxmLnBhc3N3b3JkX29mW3VzZXJdCisKKyAgICAgICAgIyBSZWNhbGN1bGF0
ZSB0aGUgcmVzcG9uc2VfZGlnZXN0IHRvIGNvbXBhcmUgd2l0aCB0aGUgb25lCisgICAgICAgICMg
c2VudCBieSB0aGUgY2xpZW50CisgICAgICAgIEExID0gJyVzOiVzOiVzJyAlICh1c2VyLCByZWFs
bSwgcGFzc3dvcmQpCisgICAgICAgIEEyID0gJyVzOiVzJyAlIChjb21tYW5kLCBhdXRoWyd1cmkn
XSkKKworICAgICAgICBIID0gbGFtYmRhIHg6IG1kNS5uZXcoeCkuaGV4ZGlnZXN0KCkKKyAgICAg
ICAgS0QgPSBsYW1iZGEgc2VjcmV0LCBkYXRhOiBIKCIlczolcyIgJSAoc2VjcmV0LCBkYXRhKSkK
KworICAgICAgICBub25jZV9jb3VudCA9IGludChhdXRoWyduYyddLCAxNikKKworICAgICAgICBu
Y3ZhbHVlID0gJyUwOHgnICUgbm9uY2VfY291bnQKKworICAgICAgICBjbm9uY2UgPSBhdXRoWydj
bm9uY2UnXQorICAgICAgICBub25jZWJpdCA9ICclczolczolczolczolcycgJSAobm9uY2UsIG5j
dmFsdWUsIGNub25jZSwgcW9wLCBIKEEyKSkKKyAgICAgICAgcmVzcG9uc2VfZGlnZXN0ID0gS0Qo
SChBMSksIG5vbmNlYml0KQorCisgICAgICAgIHJldHVybiByZXNwb25zZV9kaWdlc3QgPT0gYXV0
aFsncmVzcG9uc2UnXQorCitjbGFzcyBIVFRQQXV0aFNlcnZlcihBdXRoU2VydmVyKToKKyAgICAi
IiJBbiBIVFRQIHNlcnZlciByZXF1aXJpbmcgYXV0aGVudGljYXRpb24iIiIKKworICAgIGRlZiBp
bml0X2h0dHBfYXV0aChzZWxmKToKKyAgICAgICAgc2VsZi5hdXRoX2hlYWRlcl9zZW50ID0gJ1dX
Vy1BdXRoZW50aWNhdGUnCisgICAgICAgIHNlbGYuYXV0aF9oZWFkZXJfcmVjdiA9ICdBdXRob3Jp
emF0aW9uJworICAgICAgICBzZWxmLmF1dGhfZXJyb3JfY29kZSA9IDQwMQorCisKK2NsYXNzIFBy
b3h5QXV0aFNlcnZlcihBdXRoU2VydmVyKToKKyAgICAiIiJBIHByb3h5IHNlcnZlciByZXF1aXJp
bmcgYXV0aGVudGljYXRpb24iIiIKKworICAgIGRlZiBpbml0X3Byb3h5X2F1dGgoc2VsZik6Cisg
ICAgICAgIHNlbGYucHJveHlfcmVxdWVzdHMgPSBUcnVlCisgICAgICAgIHNlbGYuYXV0aF9oZWFk
ZXJfc2VudCA9ICdQcm94eS1BdXRoZW50aWNhdGUnCisgICAgICAgIHNlbGYuYXV0aF9oZWFkZXJf
cmVjdiA9ICdQcm94eS1BdXRob3JpemF0aW9uJworICAgICAgICBzZWxmLmF1dGhfZXJyb3JfY29k
ZSA9IDQwNworCisKK2NsYXNzIEhUVFBCYXNpY0F1dGhTZXJ2ZXIoSFRUUEF1dGhTZXJ2ZXIpOgor
ICAgICIiIkFuIEhUVFAgc2VydmVyIHJlcXVpcmluZyBiYXNpYyBhdXRoZW50aWNhdGlvbiIiIgor
CisgICAgZGVmIF9faW5pdF9fKHNlbGYpOgorICAgICAgICBIVFRQQXV0aFNlcnZlci5fX2luaXRf
XyhzZWxmLCBCYXNpY0F1dGhSZXF1ZXN0SGFuZGxlciwgJ2Jhc2ljJykKKyAgICAgICAgc2VsZi5p
bml0X2h0dHBfYXV0aCgpCisKKworY2xhc3MgSFRUUERpZ2VzdEF1dGhTZXJ2ZXIoRGlnZXN0QXV0
aFNlcnZlciwgSFRUUEF1dGhTZXJ2ZXIpOgorICAgICIiIkFuIEhUVFAgc2VydmVyIHJlcXVpcmlu
ZyBkaWdlc3QgYXV0aGVudGljYXRpb24iIiIKKworICAgIGRlZiBfX2luaXRfXyhzZWxmKToKKyAg
ICAgICAgRGlnZXN0QXV0aFNlcnZlci5fX2luaXRfXyhzZWxmLCBEaWdlc3RBdXRoUmVxdWVzdEhh
bmRsZXIsICdkaWdlc3QnKQorICAgICAgICBzZWxmLmluaXRfaHR0cF9hdXRoKCkKKworCitjbGFz
cyBQcm94eUJhc2ljQXV0aFNlcnZlcihQcm94eUF1dGhTZXJ2ZXIpOgorICAgICIiIkEgcHJveHkg
c2VydmVyIHJlcXVpcmluZyBiYXNpYyBhdXRoZW50aWNhdGlvbiIiIgorCisgICAgZGVmIF9faW5p
dF9fKHNlbGYpOgorICAgICAgICBQcm94eUF1dGhTZXJ2ZXIuX19pbml0X18oc2VsZiwgQmFzaWNB
dXRoUmVxdWVzdEhhbmRsZXIsICdiYXNpYycpCisgICAgICAgIHNlbGYuaW5pdF9wcm94eV9hdXRo
KCkKKworCitjbGFzcyBQcm94eURpZ2VzdEF1dGhTZXJ2ZXIoRGlnZXN0QXV0aFNlcnZlciwgUHJv
eHlBdXRoU2VydmVyKToKKyAgICAiIiJBIHByb3h5IHNlcnZlciByZXF1aXJpbmcgYmFzaWMgYXV0
aGVudGljYXRpb24iIiIKKworICAgIGRlZiBfX2luaXRfXyhzZWxmKToKKyAgICAgICAgUHJveHlB
dXRoU2VydmVyLl9faW5pdF9fKHNlbGYsIERpZ2VzdEF1dGhSZXF1ZXN0SGFuZGxlciwgJ2RpZ2Vz
dCcpCisgICAgICAgIHNlbGYuaW5pdF9wcm94eV9hdXRoKCkKKworCgo=

=== modified file bzrlib/tests/HttpServer.py // last-changed:v.ladeuil+lp@free.
... fr-20070421213132-6ffsjiv1bf6tnfhq // encoding:base64
LS0tIGJ6cmxpYi90ZXN0cy9IdHRwU2VydmVyLnB5CisrKyBienJsaWIvdGVzdHMvSHR0cFNlcnZl
ci5weQpAQCAtNDIsNiArNDIsMTEgQEAKIAogCiBjbGFzcyBUZXN0aW5nSFRUUFJlcXVlc3RIYW5k
bGVyKFNpbXBsZUhUVFBSZXF1ZXN0SGFuZGxlcik6CisgICAgIiIiSGFuZGxlcyBvbmUgcmVxdWVz
dC4KKworICAgIEEgVGVzdGluZ0hUVFBSZXF1ZXN0SGFuZGxlciBpcyBpbnN0YW50aWF0ZWQgZm9y
IGV2ZXJ5IHJlcXVlc3QKKyAgICByZWNlaXZlZCBieSB0aGUgYXNzb2NpYXRlZCBzZXJ2ZXIuCisg
ICAgIiIiCiAKICAgICBkZWYgbG9nX21lc3NhZ2Uoc2VsZiwgZm9ybWF0LCAqYXJncyk6CiAgICAg
ICAgIHRjcyA9IHNlbGYuc2VydmVyLnRlc3RfY2FzZV9zZXJ2ZXIKQEAgLTIxOSwxMyArMjI0LDM5
IEBACiAgICAgICAgICAgICBzZWxmLmdldF9tdWx0aXBsZV9yYW5nZXMoZmlsZSwgZmlsZV9zaXpl
LCByYW5nZXMpCiAgICAgICAgIGZpbGUuY2xvc2UoKQogCisgICAgZGVmIHRyYW5zbGF0ZV9wYXRo
KHNlbGYsIHBhdGgpOgorICAgICAgICAiIiJUcmFuc2xhdGUgYSAvLXNlcGFyYXRlZCBQQVRIIHRv
IHRoZSBsb2NhbCBmaWxlbmFtZSBzeW50YXguCisKKyAgICAgICAgSWYgdGhlIHNlcnZlciByZXF1
aXJlcyBpdCwgcHJveHkgdGhlIHBhdGggYmVmb3JlIHRoZSB1c3VhbCB0cmFuc2xhdGlvbgorICAg
ICAgICAiIiIKKyAgICAgICAgaWYgc2VsZi5zZXJ2ZXIudGVzdF9jYXNlX3NlcnZlci5wcm94eV9y
ZXF1ZXN0czoKKyAgICAgICAgICAgICMgV2UgbmVlZCB0byBhY3QgYXMgYSBwcm94eSBhbmQgYWNj
ZXB0IGFic29sdXRlIHVybHMsCisgICAgICAgICAgICAjIHdoaWNoIFNpbXBsZUhUVFBSZXF1ZXN0
SGFuZGxlciAocGFyZW50KSBpcyBub3QKKyAgICAgICAgICAgICMgcmVhZHkgZm9yLiBTbyB3ZSBq
dXN0IGRyb3AgdGhlIHByb3RvY29sOi8vaG9zdDpwb3J0CisgICAgICAgICAgICAjIHBhcnQgaW4g
ZnJvbnQgb2YgdGhlIHJlcXVlc3QtdXJsIChiZWNhdXNlIHdlIGtub3cKKyAgICAgICAgICAgICMg
d2Ugd291bGQgbm90IGZvcndhcmQgdGhlIHJlcXVlc3QgdG8gKmFub3RoZXIqCisgICAgICAgICAg
ICAjIHByb3h5KS4KKworICAgICAgICAgICAgIyBTbyB3ZSBkbyB3aGF0IFNpbXBsZUhUVFBSZXF1
ZXN0SGFuZGxlci50cmFuc2xhdGVfcGF0aAorICAgICAgICAgICAgIyBkbyBiZWdpbm5pbmcgd2l0
aCBweXRob24gMi40LjM6IGFiYW5kb24gcXVlcnkKKyAgICAgICAgICAgICMgcGFyYW1ldGVycywg
c2NoZW1lLCBob3N0IHBvcnQsIGV0YyAod2hpY2ggZW5zdXJlIHdlCisgICAgICAgICAgICAjIHBy
b3ZpZGUgdGhlIHJpZ2h0IGJlaGF2aW91ciBvbiBhbGwgcHl0aG9uIHZlcnNpb25zKS4KKyAgICAg
ICAgICAgIHBhdGggPSB1cmxwYXJzZS51cmxwYXJzZShwYXRoKVsyXQorICAgICAgICAgICAgIyBB
bmQgbm93LCB3ZSBjYW4gYXBwbHkgKm91ciogdHJpY2sgdG8gcHJveHkgZmlsZXMKKyAgICAgICAg
ICAgIHBhdGggKz0gJy1wcm94aWVkJworCisgICAgICAgIHJldHVybiBzZWxmLl90cmFuc2xhdGVf
cGF0aChwYXRoKQorCisgICAgZGVmIF90cmFuc2xhdGVfcGF0aChzZWxmLCBwYXRoKToKKyAgICAg
ICAgcmV0dXJuIFNpbXBsZUhUVFBSZXF1ZXN0SGFuZGxlci50cmFuc2xhdGVfcGF0aChzZWxmLCBw
YXRoKQorCiAgICAgaWYgc3lzLnBsYXRmb3JtID09ICd3aW4zMic6CiAgICAgICAgICMgT24gd2lu
MzIgeW91IGNhbm5vdCBhY2Nlc3Mgbm9uLWFzY2lpIGZpbGVuYW1lcyB3aXRob3V0CiAgICAgICAg
ICMgZGVjb2RpbmcgdGhlbSBpbnRvIHVuaWNvZGUgZmlyc3QuCiAgICAgICAgICMgSG93ZXZlciwg
dW5kZXIgTGludXgsIHlvdSBjYW4gYWNjZXNzIGJ5dGVzdHJlYW0gcGF0aHMKICAgICAgICAgIyB3
aXRob3V0IGFueSBwcm9ibGVtcy4gSWYgdGhpcyBmdW5jdGlvbiB3YXMgYWx3YXlzIGFjdGl2ZQog
ICAgICAgICAjIGl0IHdvdWxkIHByb2JhYmx5IGJyZWFrIHRlc3RzIHdoZW4gTEFORz1DIHdhcyBz
ZXQKLSAgICAgICAgZGVmIHRyYW5zbGF0ZV9wYXRoKHNlbGYsIHBhdGgpOgorICAgICAgICBkZWYg
X3RyYW5zbGF0ZV9wYXRoKHNlbGYsIHBhdGgpOgogICAgICAgICAgICAgIiIiVHJhbnNsYXRlIGEg
Ly1zZXBhcmF0ZWQgUEFUSCB0byB0aGUgbG9jYWwgZmlsZW5hbWUgc3ludGF4LgogCiAgICAgICAg
ICAgICBGb3IgYnpyLCBhbGwgdXJsIHBhdGhzIGFyZSBjb25zaWRlcmVkIHRvIGJlIHV0ZjggcGF0
aHMuCkBAIC0yNjcsNiArMjk4LDEwIEBACiAgICAgU3ViY2xhc3NlcyBjYW4gcHJvdmlkZSBhIHNw
ZWNpZmljIHJlcXVlc3QgaGFuZGxlci4KICAgICAiIiIKIAorICAgICMgV2hldGhlciBvciBub3Qg
d2UgcHJveHkgdGhlIHJlcXVlc3RzIChzZWUKKyAgICAjIFRlc3RpbmdIVFRQUmVxdWVzdEhhbmRs
ZXIudHJhbnNsYXRlX3BhdGgpLgorICAgIHByb3h5X3JlcXVlc3RzID0gRmFsc2UKKwogICAgICMg
dXNlZCB0byBmb3JtIHRoZSB1cmwgdGhhdCBjb25uZWN0cyB0byB0aGlzIHNlcnZlcgogICAgIF91
cmxfcHJvdG9jb2wgPSAnaHR0cCcKIAoK

=== modified file bzrlib/tests/TestUtil.py // last-changed:robertc@robertcollin
... s.net-20070423034148-b4m9c1iwl7528prf // encoding:base64
LS0tIGJ6cmxpYi90ZXN0cy9UZXN0VXRpbC5weQorKysgYnpybGliL3Rlc3RzL1Rlc3RVdGlsLnB5
CkBAIC0yMCw2ICsyMCwxMSBAQAogaW1wb3J0IGxvZ2dpbmcKIGltcG9ydCB1bml0dGVzdAogCisj
IE1hcmsgdGhpcyBweXRob24gbW9kdWxlIGFzIGJlaW5nIHBhcnQgb2YgdGhlIGltcGxlbWVudGF0
aW9uCisjIG9mIHVuaXR0ZXN0OiB0aGlzIGdpdmVzIHVzIGJldHRlciB0cmFjZWJhY2tzIHdoZXJl
IHRoZSBsYXN0CisjIHNob3duIGZyYW1lIGlzIHRoZSB0ZXN0IGNvZGUsIG5vdCBvdXIgYXNzZXJ0
WFlaLgorX191bml0dGVzdCA9IDEKKwogCiBjbGFzcyBMb2dDb2xsZWN0b3IobG9nZ2luZy5IYW5k
bGVyKToKICAgICBkZWYgX19pbml0X18oc2VsZik6Cgo=

=== modified file bzrlib/tests/__init__.py // last-changed:john@arbash-meinel.c
... om-20070508200050-4imwmtzep8fx5v7w // encoding:base64
LS0tIGJ6cmxpYi90ZXN0cy9fX2luaXRfXy5weQorKysgYnpybGliL3Rlc3RzL19faW5pdF9fLnB5
CkBAIC0zNCw4ICszNCw4IEBACiBpbXBvcnQgbG9nZ2luZwogaW1wb3J0IG9zCiBmcm9tIHBwcmlu
dCBpbXBvcnQgcGZvcm1hdAoraW1wb3J0IHJhbmRvbQogaW1wb3J0IHJlCi1pbXBvcnQgc2hsZXgK
IGltcG9ydCBzdGF0CiBmcm9tIHN1YnByb2Nlc3MgaW1wb3J0IFBvcGVuLCBQSVBFCiBpbXBvcnQg
c3lzCkBAIC01Myw2ICs1Myw3IEBACiAgICAgcHJvZ3Jlc3MsCiAgICAgdWksCiAgICAgdXJsdXRp
bHMsCisgICAgd29ya2luZ3RyZWUsCiAgICAgKQogaW1wb3J0IGJ6cmxpYi5icmFuY2gKIGltcG9y
dCBienJsaWIuY29tbWFuZHMKQEAgLTg5LDYgKzkwLDExIEBACiBmcm9tIGJ6cmxpYi50ZXN0cy50
cmVlc2hhcGUgaW1wb3J0IGJ1aWxkX3RyZWVfY29udGVudHMKIGZyb20gYnpybGliLndvcmtpbmd0
cmVlIGltcG9ydCBXb3JraW5nVHJlZSwgV29ya2luZ1RyZWVGb3JtYXQyCiAKKyMgTWFyayB0aGlz
IHB5dGhvbiBtb2R1bGUgYXMgYmVpbmcgcGFydCBvZiB0aGUgaW1wbGVtZW50YXRpb24KKyMgb2Yg
dW5pdHRlc3Q6IHRoaXMgZ2l2ZXMgdXMgYmV0dGVyIHRyYWNlYmFja3Mgd2hlcmUgdGhlIGxhc3QK
KyMgc2hvd24gZnJhbWUgaXMgdGhlIHRlc3QgY29kZSwgbm90IG91ciBhc3NlcnRYWVouCitfX3Vu
aXR0ZXN0ID0gMQorCiBkZWZhdWx0X3RyYW5zcG9ydCA9IExvY2FsVVJMU2VydmVyCiAKIE1PRFVM
RVNfVE9fVEVTVCA9IFtdCkBAIC0xMDQsOCArMTEwLDYgQEAKICAgICAgICAgICAgICAgICAgICAg
ICBienJsaWIuc3RvcmUsCiAgICAgICAgICAgICAgICAgICAgICAgXQogCi1OVU1CRVJFRF9ESVJT
ID0gRmFsc2UgICAjIGRpcnMga2luZCBmb3IgVGVzdENhc2VJblRlbXBEaXIgKG51bWJlcmVkIG9y
IG5hbWVkKQotCiAKIGRlZiBwYWNrYWdlc190b190ZXN0KCk6CiAgICAgIiIiUmV0dXJuIGEgbGlz
dCBvZiBwYWNrYWdlcyB0byB0ZXN0LgpAQCAtMTU0LDYgKzE1OCw3IEBACiAgICAgZGVmIF9faW5p
dF9fKHNlbGYsIHN0cmVhbSwgZGVzY3JpcHRpb25zLCB2ZXJib3NpdHksCiAgICAgICAgICAgICAg
ICAgIGJlbmNoX2hpc3Rvcnk9Tm9uZSwKICAgICAgICAgICAgICAgICAgbnVtX3Rlc3RzPU5vbmUs
CisgICAgICAgICAgICAgICAgIHVzZV9udW1iZXJlZF9kaXJzPUZhbHNlLAogICAgICAgICAgICAg
ICAgICApOgogICAgICAgICAiIiJDb25zdHJ1Y3QgbmV3IFRlc3RSZXN1bHQuCiAKQEAgLTE4NCw2
ICsxODksNyBAQAogICAgICAgICBzZWxmLnNraXBfY291bnQgPSAwCiAgICAgICAgIHNlbGYudW5z
dXBwb3J0ZWQgPSB7fQogICAgICAgICBzZWxmLmNvdW50ID0gMAorICAgICAgICBzZWxmLnVzZV9u
dW1iZXJlZF9kaXJzID0gdXNlX251bWJlcmVkX2RpcnMKICAgICAgICAgc2VsZi5fb3ZlcmFsbF9z
dGFydF90aW1lID0gdGltZS50aW1lKCkKICAgICAKICAgICBkZWYgZXh0cmFjdEJlbmNobWFya1Rp
bWUoc2VsZiwgdGVzdENhc2UpOgpAQCAtMjkwLDcgKzI5Niw3IEBACiAgICAgICAgIGZvciB0ZXN0
LCBlcnIgaW4gZXJyb3JzOgogICAgICAgICAgICAgc2VsZi5zdHJlYW0ud3JpdGVsbihzZWxmLnNl
cGFyYXRvcjEpCiAgICAgICAgICAgICBzZWxmLnN0cmVhbS53cml0ZSgiJXM6ICIgJSBmbGF2b3Vy
KQotICAgICAgICAgICAgaWYgTlVNQkVSRURfRElSUzoKKyAgICAgICAgICAgIGlmIHNlbGYudXNl
X251bWJlcmVkX2RpcnM6CiAgICAgICAgICAgICAgICAgc2VsZi5zdHJlYW0ud3JpdGUoJyMlZCAn
ICUgdGVzdC5udW1iZXIpCiAgICAgICAgICAgICBzZWxmLnN0cmVhbS53cml0ZWxuKHNlbGYuZ2V0
RGVzY3JpcHRpb24odGVzdCkpCiAgICAgICAgICAgICBpZiBnZXRhdHRyKHRlc3QsICdfZ2V0X2xv
ZycsIE5vbmUpIGlzIG5vdCBOb25lOgpAQCAtMzIwLDkgKzMyNiwxMCBAQAogICAgICAgICAgICAg
ICAgICBiZW5jaF9oaXN0b3J5PU5vbmUsCiAgICAgICAgICAgICAgICAgIG51bV90ZXN0cz1Ob25l
LAogICAgICAgICAgICAgICAgICBwYj1Ob25lLAorICAgICAgICAgICAgICAgICB1c2VfbnVtYmVy
ZWRfZGlycz1GYWxzZSwKICAgICAgICAgICAgICAgICAgKToKICAgICAgICAgRXh0ZW5kZWRUZXN0
UmVzdWx0Ll9faW5pdF9fKHNlbGYsIHN0cmVhbSwgZGVzY3JpcHRpb25zLCB2ZXJib3NpdHksCi0g
ICAgICAgICAgICBiZW5jaF9oaXN0b3J5LCBudW1fdGVzdHMpCisgICAgICAgICAgICBiZW5jaF9o
aXN0b3J5LCBudW1fdGVzdHMsIHVzZV9udW1iZXJlZF9kaXJzKQogICAgICAgICBpZiBwYiBpcyBO
b25lOgogICAgICAgICAgICAgc2VsZi5wYiA9IHNlbGYudWkubmVzdGVkX3Byb2dyZXNzX2Jhcigp
CiAgICAgICAgICAgICBzZWxmLl9zdXBwbGllZF9wYiA9IEZhbHNlCkBAIC0zNjQsNyArMzcxLDcg
QEAKICAgICAgICAgICAgICAgICArIHNlbGYuX3Nob3J0ZW5lZF90ZXN0X2Rlc2NyaXB0aW9uKHRl
c3QpKQogCiAgICAgZGVmIF90ZXN0X2Rlc2NyaXB0aW9uKHNlbGYsIHRlc3QpOgotICAgICAgICBp
ZiBOVU1CRVJFRF9ESVJTOgorICAgICAgICBpZiBzZWxmLnVzZV9udW1iZXJlZF9kaXJzOgogICAg
ICAgICAgICAgcmV0dXJuICcjJWQgJXMnICUgKHNlbGYuY291bnQsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgc2VsZi5fc2hvcnRlbmVkX3Rlc3RfZGVzY3JpcHRpb24odGVzdCkpCiAg
ICAgICAgIGVsc2U6CkBAIC00MzMsNyArNDQwLDcgQEAKICAgICAgICAgIyB3aWR0aCBuZWVkcyBz
cGFjZSBmb3IgNiBjaGFyIHN0YXR1cywgcGx1cyAxIGZvciBzbGFzaCwgcGx1cyAyIDEwLWNoYXIK
ICAgICAgICAgIyBudW1iZXJzLCBwbHVzIGEgdHJhaWxpbmcgYmxhbmsKICAgICAgICAgIyB3aGVu
IE5VTUJFUkVEX0RJUlM6IHBsdXMgNSBjaGFycyBvbiB0ZXN0IG51bWJlciwgcGx1cyAxIGNoYXIg
b24gc3BhY2UKLSAgICAgICAgaWYgTlVNQkVSRURfRElSUzoKKyAgICAgICAgaWYgc2VsZi51c2Vf
bnVtYmVyZWRfZGlyczoKICAgICAgICAgICAgIHNlbGYuc3RyZWFtLndyaXRlKCclNWQgJyAlIHNl
bGYuY291bnQpCiAgICAgICAgICAgICBzZWxmLnN0cmVhbS53cml0ZShzZWxmLl9lbGxpcHNpemVf
dG9fcmlnaHQobmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3N1dGlscy50
ZXJtaW5hbF93aWR0aCgpLTM2KSkKQEAgLTQ0NCw3ICs0NTEsNyBAQAogCiAgICAgZGVmIF9lcnJv
cl9zdW1tYXJ5KHNlbGYsIGVycik6CiAgICAgICAgIGluZGVudCA9ICcgJyAqIDQKLSAgICAgICAg
aWYgTlVNQkVSRURfRElSUzoKKyAgICAgICAgaWYgc2VsZi51c2VfbnVtYmVyZWRfZGlyczoKICAg
ICAgICAgICAgIGluZGVudCArPSAnICcgKiA2CiAgICAgICAgIHJldHVybiAnJXMlcycgJSAoaW5k
ZW50LCBlcnJbMV0pCiAKQEAgLTQ5MywxMiArNTAwLDE3IEBACiAgICAgICAgICAgICAgICAgIGRl
c2NyaXB0aW9ucz0wLAogICAgICAgICAgICAgICAgICB2ZXJib3NpdHk9MSwKICAgICAgICAgICAg
ICAgICAga2VlcF9vdXRwdXQ9RmFsc2UsCi0gICAgICAgICAgICAgICAgIGJlbmNoX2hpc3Rvcnk9
Tm9uZSk6CisgICAgICAgICAgICAgICAgIGJlbmNoX2hpc3Rvcnk9Tm9uZSwKKyAgICAgICAgICAg
ICAgICAgdXNlX251bWJlcmVkX2RpcnM9RmFsc2UsCisgICAgICAgICAgICAgICAgIGxpc3Rfb25s
eT1GYWxzZQorICAgICAgICAgICAgICAgICApOgogICAgICAgICBzZWxmLnN0cmVhbSA9IHVuaXR0
ZXN0Ll9Xcml0ZWxuRGVjb3JhdG9yKHN0cmVhbSkKICAgICAgICAgc2VsZi5kZXNjcmlwdGlvbnMg
PSBkZXNjcmlwdGlvbnMKICAgICAgICAgc2VsZi52ZXJib3NpdHkgPSB2ZXJib3NpdHkKICAgICAg
ICAgc2VsZi5rZWVwX291dHB1dCA9IGtlZXBfb3V0cHV0CiAgICAgICAgIHNlbGYuX2JlbmNoX2hp
c3RvcnkgPSBiZW5jaF9oaXN0b3J5CisgICAgICAgIHNlbGYudXNlX251bWJlcmVkX2RpcnMgPSB1
c2VfbnVtYmVyZWRfZGlycworICAgICAgICBzZWxmLmxpc3Rfb25seSA9IGxpc3Rfb25seQogCiAg
ICAgZGVmIHJ1bihzZWxmLCB0ZXN0KToKICAgICAgICAgIlJ1biB0aGUgZ2l2ZW4gdGVzdCBjYXNl
IG9yIHRlc3Qgc3VpdGUuIgpAQCAtNTEyLDE3ICs1MjQsMjggQEAKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHNlbGYudmVyYm9zaXR5LAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgYmVuY2hfaGlzdG9yeT1zZWxmLl9iZW5jaF9oaXN0b3J5LAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgbnVtX3Rlc3RzPXRlc3QuY291bnRUZXN0Q2FzZXMoKSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHVzZV9udW1iZXJlZF9kaXJzPXNlbGYudXNlX251bWJlcmVkX2Rp
cnMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApCiAgICAgICAgIHJlc3VsdC5zdG9w
X2Vhcmx5ID0gc2VsZi5zdG9wX29uX2ZhaWx1cmUKICAgICAgICAgcmVzdWx0LnJlcG9ydF9zdGFy
dGluZygpCi0gICAgICAgIHRlc3QucnVuKHJlc3VsdCkKKyAgICAgICAgaWYgc2VsZi5saXN0X29u
bHk6CisgICAgICAgICAgICBpZiBzZWxmLnZlcmJvc2l0eSA+PSAyOgorICAgICAgICAgICAgICAg
IHNlbGYuc3RyZWFtLndyaXRlbG4oIkxpc3RpbmcgdGVzdHMgb25seSAuLi5cbiIpCisgICAgICAg
ICAgICBydW4gPSAwCisgICAgICAgICAgICBmb3IgdCBpbiBpdGVyX3N1aXRlX3Rlc3RzKHRlc3Qp
OgorICAgICAgICAgICAgICAgIHNlbGYuc3RyZWFtLndyaXRlbG4oIiVzIiAlICh0LmlkKCkpKQor
ICAgICAgICAgICAgICAgIHJ1biArPSAxCisgICAgICAgICAgICBhY3Rpb25UYWtlbiA9ICJMaXN0
ZWQiCisgICAgICAgIGVsc2U6IAorICAgICAgICAgICAgdGVzdC5ydW4ocmVzdWx0KQorICAgICAg
ICAgICAgcnVuID0gcmVzdWx0LnRlc3RzUnVuCisgICAgICAgICAgICBhY3Rpb25UYWtlbiA9ICJS
YW4iCiAgICAgICAgIHN0b3BUaW1lID0gdGltZS50aW1lKCkKICAgICAgICAgdGltZVRha2VuID0g
c3RvcFRpbWUgLSBzdGFydFRpbWUKICAgICAgICAgcmVzdWx0LnByaW50RXJyb3JzKCkKICAgICAg
ICAgc2VsZi5zdHJlYW0ud3JpdGVsbihyZXN1bHQuc2VwYXJhdG9yMikKLSAgICAgICAgcnVuID0g
cmVzdWx0LnRlc3RzUnVuCi0gICAgICAgIHNlbGYuc3RyZWFtLndyaXRlbG4oIlJhbiAlZCB0ZXN0
JXMgaW4gJS4zZnMiICUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAocnVuLCBydW4gIT0g
MSBhbmQgInMiIG9yICIiLCB0aW1lVGFrZW4pKQorICAgICAgICBzZWxmLnN0cmVhbS53cml0ZWxu
KCIlcyAlZCB0ZXN0JXMgaW4gJS4zZnMiICUgKGFjdGlvblRha2VuLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHJ1biwgcnVuICE9IDEgYW5kICJzIiBvciAiIiwgdGltZVRha2VuKSkKICAg
ICAgICAgc2VsZi5zdHJlYW0ud3JpdGVsbigpCiAgICAgICAgIGlmIG5vdCByZXN1bHQud2FzU3Vj
Y2Vzc2Z1bCgpOgogICAgICAgICAgICAgc2VsZi5zdHJlYW0ud3JpdGUoIkZBSUxFRCAoIikKQEAg
LTU3MCwxNSArNTkzLDcgQEAKICAgICAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAg
ICAgICB0ZXN0X3Jvb3QgPSB0ZXN0X3Jvb3QuZW5jb2RlKAogICAgICAgICAgICAgICAgICAgICAg
ICAgc3lzLmdldGZpbGVzeXN0ZW1lbmNvZGluZygpKQotICAgICAgICAgICAgICAgIHRyeToKLSAg
ICAgICAgICAgICAgICAgICAgb3N1dGlscy5ybXRyZWUodGVzdF9yb290KQotICAgICAgICAgICAg
ICAgIGV4Y2VwdCBPU0Vycm9yLCBlOgotICAgICAgICAgICAgICAgICAgICBpZiBzeXMucGxhdGZv
cm0gPT0gJ3dpbjMyJyBhbmQgZS5lcnJubyA9PSBlcnJuby5FQUNDRVM6Ci0gICAgICAgICAgICAg
ICAgICAgICAgICBwcmludCA+PnN5cy5zdGRlcnIsICgnUGVybWlzc2lvbiBkZW5pZWQ6ICcKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd1bmFibGUgdG8gcmVt
b3ZlIHRlc3RpbmcgZGlyICcKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICclcycgJSBvcy5wYXRoLmJhc2VuYW1lKHRlc3Rfcm9vdCkpCi0gICAgICAgICAgICAg
ICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgICAgICByYWlzZQorICAgICAgICAgICAg
ICAgIF9ybXRyZWVfdGVtcF9kaXIodGVzdF9yb290KQogICAgICAgICBlbHNlOgogICAgICAgICAg
ICAgbm90ZSgiRmFpbGVkIHRlc3RzIHdvcmtpbmcgZGlyZWN0b3JpZXMgYXJlIGluICclcydcbiIs
IHRlc3Rfcm9vdCkKICAgICAgICAgVGVzdENhc2VXaXRoTWVtb3J5VHJhbnNwb3J0LlRFU1RfUk9P
VCA9IE5vbmUKQEAgLTc1NCwxNSArNzY5LDIzIEBACiAgICAgICAgIHNlbGYuX3N0YXJ0TG9nRmls
ZSgpCiAgICAgICAgIHNlbGYuX2JlbmNoY2FsbHMgPSBbXQogICAgICAgICBzZWxmLl9iZW5jaHRp
bWUgPSBOb25lCisgICAgICAgIHNlbGYuX2NsZWFyX2hvb2tzKCkKKworICAgIGRlZiBfY2xlYXJf
aG9va3Moc2VsZik6CiAgICAgICAgICMgcHJldmVudCBob29rcyBhZmZlY3RpbmcgdGVzdHMKKyAg
ICAgICAgaW1wb3J0IGJ6cmxpYi5icmFuY2gKKyAgICAgICAgaW1wb3J0IGJ6cmxpYi5zbWFydC5z
ZXJ2ZXIKICAgICAgICAgc2VsZi5fcHJlc2VydmVkX2hvb2tzID0gewotICAgICAgICAgICAgYnpy
bGliLmJyYW5jaC5CcmFuY2g6YnpybGliLmJyYW5jaC5CcmFuY2guaG9va3MsCi0gICAgICAgICAg
ICBienJsaWIudHJhbnNwb3J0LnNtYXJ0LlNtYXJ0VENQU2VydmVyOmJ6cmxpYi50cmFuc3BvcnQu
c21hcnQuU21hcnRUQ1BTZXJ2ZXIuaG9va3MsCisgICAgICAgICAgICBienJsaWIuYnJhbmNoLkJy
YW5jaDogYnpybGliLmJyYW5jaC5CcmFuY2guaG9va3MsCisgICAgICAgICAgICBienJsaWIuc21h
cnQuc2VydmVyLlNtYXJ0VENQU2VydmVyOiBienJsaWIuc21hcnQuc2VydmVyLlNtYXJ0VENQU2Vy
dmVyLmhvb2tzLAogICAgICAgICAgICAgfQogICAgICAgICBzZWxmLmFkZENsZWFudXAoc2VsZi5f
cmVzdG9yZUhvb2tzKQotICAgICAgICAjIHRoaXMgbGlzdCBvZiBob29rcyBtdXN0IGJlIGtlcHQg
aW4gc3luYyB3aXRoIHRoZSBkZWZhdWx0cwotICAgICAgICAjIGluIGJyYW5jaC5weQorICAgICAg
ICAjIHJlc2V0IGFsbCBob29rcyB0byBhbiBlbXB0eSBpbnN0YW5jZSBvZiB0aGUgYXBwcm9wcmlh
dGUgdHlwZQogICAgICAgICBienJsaWIuYnJhbmNoLkJyYW5jaC5ob29rcyA9IGJ6cmxpYi5icmFu
Y2guQnJhbmNoSG9va3MoKQorICAgICAgICBienJsaWIuc21hcnQuc2VydmVyLlNtYXJ0VENQU2Vy
dmVyLmhvb2tzID0gYnpybGliLnNtYXJ0LnNlcnZlci5TbWFydFNlcnZlckhvb2tzKCkKKyAgICAg
ICAgIyBGSVhNRTogUmF0aGVyIHRoYW4gY29uc3RydWN0aW5nIG5ldyBvYmplY3RzIGxpa2UgdGhp
cywgaG93IGFib3V0CisgICAgICAgICMgaGF2aW5nIHNhdmUoKSBhbmQgY2xlYXIoKSBtZXRob2Rz
IG9uIHRoZSBiYXNlIEhvb2sgY2xhc3M/IG1icAorICAgICAgICAjIDIwMDcwNDE2CiAKICAgICBk
ZWYgX3NpbGVuY2VVSShzZWxmKToKICAgICAgICAgIiIiVHVybiBvZmYgVUkgZm9yIGR1cmF0aW9u
IG9mIHRlc3QiIiIKQEAgLTgwMCw3ICs4MjMsNyBAQAogICAgICAgICAgICAgbWVzc2FnZSArPSAn
XG4nCiAgICAgICAgIHJhaXNlIEFzc2VydGlvbkVycm9yKCIlc25vdCBlcXVhbDpcbmEgPSAlc1xu
YiA9ICVzXG4iCiAgICAgICAgICAgICAlIChtZXNzYWdlLAotICAgICAgICAgICAgICAgcGZvcm1h
dChhLCBpbmRlbnQ9NCksIHBmb3JtYXQoYiwgaW5kZW50PTQpKSkKKyAgICAgICAgICAgICAgIHBm
b3JtYXQoYSksIHBmb3JtYXQoYikpKQogCiAgICAgYXNzZXJ0RXF1YWxzID0gYXNzZXJ0RXF1YWwK
IApAQCAtMTI3Miw3ICsxMjk1LDggQEAKICAgICAgICAgaWYgZXJyOgogICAgICAgICAgICAgc2Vs
Zi5sb2coJ2Vycm9yczpcbiVyJywgZXJyKQogICAgICAgICBpZiByZXRjb2RlIGlzIG5vdCBOb25l
OgotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMocmV0Y29kZSwgcmVzdWx0KQorICAgICAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbHMocmV0Y29kZSwgcmVzdWx0LAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgbWVzc2FnZT0nVW5leHBlY3RlZCByZXR1cm4gY29kZScpCiAgICAgICAg
IHJldHVybiBvdXQsIGVycgogCiAgICAgZGVmIHJ1bl9ienIoc2VsZiwgKmFyZ3MsICoqa3dhcmdz
KToKQEAgLTEyOTMsOCArMTMxNywxNSBAQAogICAgICAgICBlbmNvZGluZyA9IGt3YXJncy5wb3Ao
J2VuY29kaW5nJywgTm9uZSkKICAgICAgICAgc3RkaW4gPSBrd2FyZ3MucG9wKCdzdGRpbicsIE5v
bmUpCiAgICAgICAgIHdvcmtpbmdfZGlyID0ga3dhcmdzLnBvcCgnd29ya2luZ19kaXInLCBOb25l
KQotICAgICAgICByZXR1cm4gc2VsZi5ydW5fYnpyX2NhcHR1cmVkKGFyZ3MsIHJldGNvZGU9cmV0
Y29kZSwgZW5jb2Rpbmc9ZW5jb2RpbmcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgc3RkaW49c3RkaW4sIHdvcmtpbmdfZGlyPXdvcmtpbmdfZGlyKQorICAgICAgICBlcnJv
cl9yZWdleGVzID0ga3dhcmdzLnBvcCgnZXJyb3JfcmVnZXhlcycsIFtdKQorCisgICAgICAgIG91
dCwgZXJyID0gc2VsZi5ydW5fYnpyX2NhcHR1cmVkKGFyZ3MsIHJldGNvZGU9cmV0Y29kZSwKKyAg
ICAgICAgICAgIGVuY29kaW5nPWVuY29kaW5nLCBzdGRpbj1zdGRpbiwgd29ya2luZ19kaXI9d29y
a2luZ19kaXIpCisKKyAgICAgICAgZm9yIHJlZ2V4IGluIGVycm9yX3JlZ2V4ZXM6CisgICAgICAg
ICAgICBzZWxmLmFzc2VydENvbnRhaW5zUmUoZXJyLCByZWdleCkKKyAgICAgICAgcmV0dXJuIG91
dCwgZXJyCisKIAogICAgIGRlZiBydW5fYnpyX2RlY29kZShzZWxmLCAqYXJncywgKiprd2FyZ3Mp
OgogICAgICAgICBpZiAnZW5jb2RpbmcnIGluIGt3YXJnczoKQEAgLTEzMjcsOSArMTM1OCw3IEBA
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2NvbW1pdCcsICctLXN0cmljdCcsICct
bScsICdteSBjb21taXQgY29tbWVudCcpCiAgICAgICAgICIiIgogICAgICAgICBrd2FyZ3Muc2V0
ZGVmYXVsdCgncmV0Y29kZScsIDMpCi0gICAgICAgIG91dCwgZXJyID0gc2VsZi5ydW5fYnpyKCph
cmdzLCAqKmt3YXJncykKLSAgICAgICAgZm9yIHJlZ2V4IGluIGVycm9yX3JlZ2V4ZXM6Ci0gICAg
ICAgICAgICBzZWxmLmFzc2VydENvbnRhaW5zUmUoZXJyLCByZWdleCkKKyAgICAgICAgb3V0LCBl
cnIgPSBzZWxmLnJ1bl9ienIoZXJyb3JfcmVnZXhlcz1lcnJvcl9yZWdleGVzLCAqYXJncywgKipr
d2FyZ3MpCiAgICAgICAgIHJldHVybiBvdXQsIGVycgogCiAgICAgZGVmIHJ1bl9ienJfc3VicHJv
Y2VzcyhzZWxmLCAqYXJncywgKiprd2FyZ3MpOgpAQCAtMTcxNyw3ICsxNzQ2LDEzIEBACiAgICAg
ZGVmIGdldF92ZnNfb25seV91cmwoc2VsZiwgcmVscGF0aD1Ob25lKToKICAgICAgICAgIiIiR2V0
IGEgVVJMIChvciBtYXliZSBhIHBhdGggZm9yIHRoZSBwbGFpbiBvbGQgdmZzIHRyYW5zcG9ydC4K
IAotICAgICAgICBUaGlzIHdpbGwgbmV2ZXIgYmUgYSBzbWFydCBwcm90b2NvbC4KKyAgICAgICAg
VGhpcyB3aWxsIG5ldmVyIGJlIGEgc21hcnQgcHJvdG9jb2wuICBJdCBhbHdheXMgaGFzIGFsbCB0
aGUKKyAgICAgICAgY2FwYWJpbGl0aWVzIG9mIHRoZSBsb2NhbCBmaWxlc3lzdGVtLCBidXQgaXQg
bWlnaHQgYWN0dWFsbHkgYmUgYQorICAgICAgICBNZW1vcnlUcmFuc3BvcnQgb3Igc29tZSBvdGhl
ciBzaW1pbGFyIHZpcnR1YWwgZmlsZXN5c3RlbS4KKworICAgICAgICBUaGlzIGlzIHRoZSBiYWNr
aW5nIHRyYW5zcG9ydCAoaWYgYW55KSBvZiB0aGUgc2VydmVyIHJldHVybmVkIGJ5IAorICAgICAg
ICBnZXRfdXJsIGFuZCBnZXRfcmVhZG9ubHlfdXJsLgorCiAgICAgICAgIDpwYXJhbSByZWxwYXRo
OiBwcm92aWRlcyBmb3IgY2xpZW50cyB0byBnZXQgYSBwYXRoIHJlbGF0aXZlIHRvIHRoZSBiYXNl
CiAgICAgICAgICAgICB1cmwuICBUaGVzZSBzaG91bGQgb25seSBiZSBkb3dud2FyZHMgcmVsYXRp
dmUsIG5vdCB1cHdhcmRzLgogICAgICAgICAiIiIKQEAgLTE3NzAsMTAgKzE4MDUsNyBAQAogICAg
ICAgICAgICAgc2VnbWVudHMgPSBtYXliZV9hX3VybC5yc3BsaXQoJy8nLCAxKQogICAgICAgICAg
ICAgdCA9IGdldF90cmFuc3BvcnQobWF5YmVfYV91cmwpCiAgICAgICAgICAgICBpZiBsZW4oc2Vn
bWVudHMpID4gMSBhbmQgc2VnbWVudHNbLTFdIG5vdCBpbiAoJycsICcuJyk6Ci0gICAgICAgICAg
ICAgICAgdHJ5OgotICAgICAgICAgICAgICAgICAgICB0Lm1rZGlyKCcuJykKLSAgICAgICAgICAg
ICAgICBleGNlcHQgZXJyb3JzLkZpbGVFeGlzdHM6Ci0gICAgICAgICAgICAgICAgICAgIHBhc3MK
KyAgICAgICAgICAgICAgICB0LmVuc3VyZV9iYXNlKCkKICAgICAgICAgICAgIGlmIGZvcm1hdCBp
cyBOb25lOgogICAgICAgICAgICAgICAgIGZvcm1hdCA9ICdkZWZhdWx0JwogICAgICAgICAgICAg
aWYgaXNpbnN0YW5jZShmb3JtYXQsIGJhc2VzdHJpbmcpOgpAQCAtMTc4Myw3ICsxODE1LDE0IEBA
CiAgICAgICAgICAgICByYWlzZSBUZXN0U2tpcHBlZCgiRm9ybWF0ICVzIGlzIG5vdCBpbml0aWFs
aXphYmxlLiIgJSBmb3JtYXQpCiAKICAgICBkZWYgbWFrZV9yZXBvc2l0b3J5KHNlbGYsIHJlbHBh
dGgsIHNoYXJlZD1GYWxzZSwgZm9ybWF0PU5vbmUpOgotICAgICAgICAiIiJDcmVhdGUgYSByZXBv
c2l0b3J5IG9uIG91ciBkZWZhdWx0IHRyYW5zcG9ydCBhdCByZWxwYXRoLiIiIgorICAgICAgICAi
IiJDcmVhdGUgYSByZXBvc2l0b3J5IG9uIG91ciBkZWZhdWx0IHRyYW5zcG9ydCBhdCByZWxwYXRo
LgorICAgICAgICAKKyAgICAgICAgTm90ZSB0aGF0IHJlbHBhdGggbXVzdCBiZSBhIHJlbGF0aXZl
IHBhdGgsIG5vdCBhIGZ1bGwgdXJsLgorICAgICAgICAiIiIKKyAgICAgICAgIyBGSVhNRTogSWYg
eW91IGNyZWF0ZSBhIHJlbW90ZXJlcG9zaXRvcnkgdGhpcyByZXR1cm5zIHRoZSB1bmRlcmx5aW5n
CisgICAgICAgICMgcmVhbCBmb3JtYXQsIHdoaWNoIGlzIGluY29ycmVjdC4gIEFjdHVhbGx5IHdl
IHNob3VsZCBtYWtlIHN1cmUgdGhhdCAKKyAgICAgICAgIyBSZW1vdGVCenJEaXIgcmV0dXJucyBh
IFJlbW90ZVJlcG9zaXRvcnkuCisgICAgICAgICMgbWF5YmUgIG1icCAyMDA3MDQxMAogICAgICAg
ICBtYWRlX2NvbnRyb2wgPSBzZWxmLm1ha2VfYnpyZGlyKHJlbHBhdGgsIGZvcm1hdD1mb3JtYXQp
CiAgICAgICAgIHJldHVybiBtYWRlX2NvbnRyb2wuY3JlYXRlX3JlcG9zaXRvcnkoc2hhcmVkPXNo
YXJlZCkKIApAQCAtMTgyNCw2ICsxODYzLDcgQEAKICAgICAiIiIKIAogICAgIE9WRVJSSURFX1BZ
VEhPTiA9ICdweXRob24nCisgICAgdXNlX251bWJlcmVkX2RpcnMgPSBGYWxzZQogCiAgICAgZGVm
IGNoZWNrX2ZpbGVfY29udGVudHMoc2VsZiwgZmlsZW5hbWUsIGV4cGVjdCk6CiAgICAgICAgIHNl
bGYubG9nKCJjaGVjayBjb250ZW50cyBvZiBmaWxlICVzIiAlIGZpbGVuYW1lKQpAQCAtMTgzOSw4
ICsxODc5LDggQEAKICAgICAgICAgRm9yIFRlc3RDYXNlSW5UZW1wRGlyIHdlIGNyZWF0ZSBhIHRl
bXBvcmFyeSBkaXJlY3RvcnkgYmFzZWQgb24gdGhlIHRlc3QKICAgICAgICAgbmFtZSBhbmQgdGhl
biBjcmVhdGUgdHdvIHN1YmRpcnMgLSB0ZXN0IGFuZCBob21lIHVuZGVyIGl0LgogICAgICAgICAi
IiIKLSAgICAgICAgaWYgTlVNQkVSRURfRElSUzogICAgICAgIyBzdHJvbmdseSByZWNvbW1lbmRl
ZCBvbiBXaW5kb3dzCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgZHVlIHRoZSBw
YXRoIGxlbmd0aCBsaW1pdGF0aW9uICgyNjAgY2hhcnMpCisgICAgICAgIGlmIHNlbGYudXNlX251
bWJlcmVkX2RpcnM6ICAjIHN0cm9uZ2x5IHJlY29tbWVuZGVkIG9uIFdpbmRvd3MKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgZHVlIHRoZSBwYXRoIGxlbmd0aCBsaW1pdGF0
aW9uICgyNjAgY2guKQogICAgICAgICAgICAgY2FuZGlkYXRlX2RpciA9ICclcy8lZEsvJTA1ZCcg
JSAoc2VsZi5URVNUX1JPT1QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBpbnQoc2VsZi5udW1iZXIvMTAwMCksCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBzZWxmLm51bWJlcikKQEAgLTE5MjEsOCArMTk2MSw3IEBACiAg
ICAgZGVmIGFzc2VydEZpbGVFcXVhbChzZWxmLCBjb250ZW50LCBwYXRoKToKICAgICAgICAgIiIi
RmFpbCBpZiBwYXRoIGRvZXMgbm90IGNvbnRhaW4gJ2NvbnRlbnQnLiIiIgogICAgICAgICBzZWxm
LmZhaWxVbmxlc3NFeGlzdHMocGF0aCkKLSAgICAgICAgIyBUT0RPOiBqYW0gMjAwNjA0MjcgU2hv
dWxkbid0IHRoaXMgYmUgJ3JiJz8KLSAgICAgICAgZiA9IGZpbGUocGF0aCwgJ3InKQorICAgICAg
ICBmID0gZmlsZShwYXRoLCAncmInKQogICAgICAgICB0cnk6CiAgICAgICAgICAgICBzID0gZi5y
ZWFkKCkKICAgICAgICAgZmluYWxseToKQEAgLTE5MzAsMTIgKzE5NjksNDEgQEAKICAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbERpZmYoY29udGVudCwgcykKIAogICAgIGRlZiBmYWlsVW5sZXNzRXhp
c3RzKHNlbGYsIHBhdGgpOgotICAgICAgICAiIiJGYWlsIHVubGVzcyBwYXRoLCB3aGljaCBtYXkg
YmUgYWJzIG9yIHJlbGF0aXZlLCBleGlzdHMuIiIiCi0gICAgICAgIHNlbGYuZmFpbFVubGVzcyhv
c3V0aWxzLmxleGlzdHMocGF0aCkscGF0aCsiIGRvZXMgbm90IGV4aXN0IikKKyAgICAgICAgIiIi
RmFpbCB1bmxlc3MgcGF0aCBvciBwYXRocywgd2hpY2ggbWF5IGJlIGFicyBvciByZWxhdGl2ZSwg
ZXhpc3QuIiIiCisgICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKHBhdGgsIGJhc2VzdHJpbmcpOgor
ICAgICAgICAgICAgZm9yIHAgaW4gcGF0aDoKKyAgICAgICAgICAgICAgICBzZWxmLmZhaWxVbmxl
c3NFeGlzdHMocCkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNlbGYuZmFpbFVubGVzcyhv
c3V0aWxzLmxleGlzdHMocGF0aCkscGF0aCsiIGRvZXMgbm90IGV4aXN0IikKIAogICAgIGRlZiBm
YWlsSWZFeGlzdHMoc2VsZiwgcGF0aCk6Ci0gICAgICAgICIiIkZhaWwgaWYgcGF0aCwgd2hpY2gg
bWF5IGJlIGFicyBvciByZWxhdGl2ZSwgZXhpc3RzLiIiIgotICAgICAgICBzZWxmLmZhaWxJZihv
c3V0aWxzLmxleGlzdHMocGF0aCkscGF0aCsiIGV4aXN0cyIpCisgICAgICAgICIiIkZhaWwgaWYg
cGF0aCBvciBwYXRocywgd2hpY2ggbWF5IGJlIGFicyBvciByZWxhdGl2ZSwgZXhpc3QuIiIiCisg
ICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKHBhdGgsIGJhc2VzdHJpbmcpOgorICAgICAgICAgICAg
Zm9yIHAgaW4gcGF0aDoKKyAgICAgICAgICAgICAgICBzZWxmLmZhaWxJZkV4aXN0cyhwKQorICAg
ICAgICBlbHNlOgorICAgICAgICAgICAgc2VsZi5mYWlsSWYob3N1dGlscy5sZXhpc3RzKHBhdGgp
LHBhdGgrIiBleGlzdHMiKQorCisgICAgZGVmIGFzc2VydEluV29ya2luZ1RyZWUoc2VsZixwYXRo
LHJvb3RfcGF0aD0nLicsdHJlZT1Ob25lKToKKyAgICAgICAgIiIiQXNzZXJ0IHdoZXRoZXIgcGF0
aCBvciBwYXRocyBhcmUgaW4gdGhlIFdvcmtpbmdUcmVlIiIiCisgICAgICAgIGlmIHRyZWUgaXMg
Tm9uZToKKyAgICAgICAgICAgIHRyZWUgPSB3b3JraW5ndHJlZS5Xb3JraW5nVHJlZS5vcGVuKHJv
b3RfcGF0aCkKKyAgICAgICAgaWYgbm90IGlzaW5zdGFuY2UocGF0aCwgYmFzZXN0cmluZyk6Cisg
ICAgICAgICAgICBmb3IgcCBpbiBwYXRoOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW5X
b3JraW5nVHJlZShwLHRyZWU9dHJlZSkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNlbGYu
YXNzZXJ0SXNOb3QodHJlZS5wYXRoMmlkKHBhdGgpLCBOb25lLAorICAgICAgICAgICAgICAgIHBh
dGgrJyBub3QgaW4gd29ya2luZyB0cmVlLicpCisKKyAgICBkZWYgYXNzZXJ0Tm90SW5Xb3JraW5n
VHJlZShzZWxmLHBhdGgscm9vdF9wYXRoPScuJyx0cmVlPU5vbmUpOgorICAgICAgICAiIiJBc3Nl
cnQgd2hldGhlciBwYXRoIG9yIHBhdGhzIGFyZSBub3QgaW4gdGhlIFdvcmtpbmdUcmVlIiIiCisg
ICAgICAgIGlmIHRyZWUgaXMgTm9uZToKKyAgICAgICAgICAgIHRyZWUgPSB3b3JraW5ndHJlZS5X
b3JraW5nVHJlZS5vcGVuKHJvb3RfcGF0aCkKKyAgICAgICAgaWYgbm90IGlzaW5zdGFuY2UocGF0
aCwgYmFzZXN0cmluZyk6CisgICAgICAgICAgICBmb3IgcCBpbiBwYXRoOgorICAgICAgICAgICAg
ICAgIHNlbGYuYXNzZXJ0Tm90SW5Xb3JraW5nVHJlZShwLHRyZWU9dHJlZSkKKyAgICAgICAgZWxz
ZToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXModHJlZS5wYXRoMmlkKHBhdGgpLCBOb25lLCBw
YXRoKycgaW4gd29ya2luZyB0cmVlLicpCiAKIAogY2xhc3MgVGVzdENhc2VXaXRoVHJhbnNwb3J0
KFRlc3RDYXNlSW5UZW1wRGlyKToKQEAgLTIwNDMsMjQgKzIxMTEsNTAgQEAKICAgICAgICAgICAg
IHNlbGYudHJhbnNwb3J0X3JlYWRvbmx5X3NlcnZlciA9IEh0dHBTZXJ2ZXIKIAogCi1kZWYgZmls
dGVyX3N1aXRlX2J5X3JlKHN1aXRlLCBwYXR0ZXJuKToKLSAgICByZXN1bHQgPSBUZXN0VXRpbC5U
ZXN0U3VpdGUoKQotICAgIGZpbHRlcl9yZSA9IHJlLmNvbXBpbGUocGF0dGVybikKLSAgICBmb3Ig
dGVzdCBpbiBpdGVyX3N1aXRlX3Rlc3RzKHN1aXRlKToKLSAgICAgICAgaWYgZmlsdGVyX3JlLnNl
YXJjaCh0ZXN0LmlkKCkpOgotICAgICAgICAgICAgcmVzdWx0LmFkZFRlc3QodGVzdCkKLSAgICBy
ZXR1cm4gcmVzdWx0Ci0KLQotZGVmIHNvcnRfc3VpdGVfYnlfcmUoc3VpdGUsIHBhdHRlcm4pOgor
ZGVmIGZpbHRlcl9zdWl0ZV9ieV9yZShzdWl0ZSwgcGF0dGVybiwgZXhjbHVkZV9wYXR0ZXJuPU5v
bmUsCisgICAgICAgICAgICAgICAgICAgICAgIHJhbmRvbV9vcmRlcj1GYWxzZSk6CisgICAgIiIi
Q3JlYXRlIGEgdGVzdCBzdWl0ZSBieSBmaWx0ZXJpbmcgYW5vdGhlciBvbmUuCisgICAgCisgICAg
OnBhcmFtIHN1aXRlOiAgICAgICAgICAgdGhlIHNvdXJjZSBzdWl0ZQorICAgIDpwYXJhbSBwYXR0
ZXJuOiAgICAgICAgIHBhdHRlcm4gdGhhdCBuYW1lcyBtdXN0IG1hdGNoCisgICAgOnBhcmFtIGV4
Y2x1ZGVfcGF0dGVybjogcGF0dGVybiB0aGF0IG5hbWVzIG11c3Qgbm90IG1hdGNoLCBpZiBhbnkK
KyAgICA6cGFyYW0gcmFuZG9tX29yZGVyOiAgICBpZiBUcnVlLCB0ZXN0cyBpbiB0aGUgbmV3IHN1
aXRlIHdpbGwgYmUgcHV0IGluCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmFuZG9tIG9y
ZGVyCisgICAgOnJldHVybnM6IHRoZSBuZXdseSBjcmVhdGVkIHN1aXRlCisgICAgIiIiIAorICAg
IHJldHVybiBzb3J0X3N1aXRlX2J5X3JlKHN1aXRlLCBwYXR0ZXJuLCBleGNsdWRlX3BhdHRlcm4s
CisgICAgICAgIHJhbmRvbV9vcmRlciwgRmFsc2UpCisKKworZGVmIHNvcnRfc3VpdGVfYnlfcmUo
c3VpdGUsIHBhdHRlcm4sIGV4Y2x1ZGVfcGF0dGVybj1Ob25lLAorICAgICAgICAgICAgICAgICAg
ICAgcmFuZG9tX29yZGVyPUZhbHNlLCBhcHBlbmRfcmVzdD1UcnVlKToKKyAgICAiIiJDcmVhdGUg
YSB0ZXN0IHN1aXRlIGJ5IHNvcnRpbmcgYW5vdGhlciBvbmUuCisgICAgCisgICAgOnBhcmFtIHN1
aXRlOiAgICAgICAgICAgdGhlIHNvdXJjZSBzdWl0ZQorICAgIDpwYXJhbSBwYXR0ZXJuOiAgICAg
ICAgIHBhdHRlcm4gdGhhdCBuYW1lcyBtdXN0IG1hdGNoIGluIG9yZGVyIHRvIGdvCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZmlyc3QgaW4gdGhlIG5ldyBzdWl0ZQorICAgIDpwYXJhbSBl
eGNsdWRlX3BhdHRlcm46IHBhdHRlcm4gdGhhdCBuYW1lcyBtdXN0IG5vdCBtYXRjaCwgaWYgYW55
CisgICAgOnBhcmFtIHJhbmRvbV9vcmRlcjogICAgaWYgVHJ1ZSwgdGVzdHMgaW4gdGhlIG5ldyBz
dWl0ZSB3aWxsIGJlIHB1dCBpbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJhbmRvbSBv
cmRlcgorICAgIDpwYXJhbSBhcHBlbmRfcmVzdDogICAgIGlmIEZhbHNlLCBwYXR0ZXJuIGlzIGEg
c3RyaWN0IGZpbHRlciBhbmQgbm90CisgICAgICAgICAgICAgICAgICAgICAgICAgICAganVzdCBh
biBvcmRlcmluZyBkaXJlY3RpdmUKKyAgICA6cmV0dXJuczogdGhlIG5ld2x5IGNyZWF0ZWQgc3Vp
dGUKKyAgICAiIiIgCiAgICAgZmlyc3QgPSBbXQogICAgIHNlY29uZCA9IFtdCiAgICAgZmlsdGVy
X3JlID0gcmUuY29tcGlsZShwYXR0ZXJuKQorICAgIGlmIGV4Y2x1ZGVfcGF0dGVybiBpcyBub3Qg
Tm9uZToKKyAgICAgICAgZXhjbHVkZV9yZSA9IHJlLmNvbXBpbGUoZXhjbHVkZV9wYXR0ZXJuKQog
ICAgIGZvciB0ZXN0IGluIGl0ZXJfc3VpdGVfdGVzdHMoc3VpdGUpOgotICAgICAgICBpZiBmaWx0
ZXJfcmUuc2VhcmNoKHRlc3QuaWQoKSk6Ci0gICAgICAgICAgICBmaXJzdC5hcHBlbmQodGVzdCkK
LSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHNlY29uZC5hcHBlbmQodGVzdCkKKyAgICAgICAg
dGVzdF9pZCA9IHRlc3QuaWQoKQorICAgICAgICBpZiBleGNsdWRlX3BhdHRlcm4gaXMgTm9uZSBv
ciBub3QgZXhjbHVkZV9yZS5zZWFyY2godGVzdF9pZCk6CisgICAgICAgICAgICBpZiBmaWx0ZXJf
cmUuc2VhcmNoKHRlc3RfaWQpOgorICAgICAgICAgICAgICAgIGZpcnN0LmFwcGVuZCh0ZXN0KQor
ICAgICAgICAgICAgZWxpZiBhcHBlbmRfcmVzdDoKKyAgICAgICAgICAgICAgICBzZWNvbmQuYXBw
ZW5kKHRlc3QpCisgICAgaWYgcmFuZG9tX29yZGVyOgorICAgICAgICByYW5kb20uc2h1ZmZsZShm
aXJzdCkKKyAgICAgICAgcmFuZG9tLnNodWZmbGUoc2Vjb25kKQogICAgIHJldHVybiBUZXN0VXRp
bC5UZXN0U3VpdGUoZmlyc3QgKyBzZWNvbmQpCiAKIApAQCAtMjA2OCwxMiArMjE2MiwxNiBAQAog
ICAgICAgICAgICAgICBzdG9wX29uX2ZhaWx1cmU9RmFsc2UsIGtlZXBfb3V0cHV0PUZhbHNlLAog
ICAgICAgICAgICAgICB0cmFuc3BvcnQ9Tm9uZSwgbHNwcm9mX3RpbWVkPU5vbmUsIGJlbmNoX2hp
c3Rvcnk9Tm9uZSwKICAgICAgICAgICAgICAgbWF0Y2hpbmdfdGVzdHNfZmlyc3Q9Tm9uZSwKLSAg
ICAgICAgICAgICAgbnVtYmVyZWRfZGlycz1Ob25lKToKLSAgICBnbG9iYWwgTlVNQkVSRURfRElS
UworICAgICAgICAgICAgICBudW1iZXJlZF9kaXJzPU5vbmUsCisgICAgICAgICAgICAgIGxpc3Rf
b25seT1GYWxzZSwKKyAgICAgICAgICAgICAgcmFuZG9tX3NlZWQ9Tm9uZSwKKyAgICAgICAgICAg
ICAgZXhjbHVkZV9wYXR0ZXJuPU5vbmUsCisgICAgICAgICAgICAgICk6CisgICAgdXNlX251bWJl
cmVkX2RpcnMgPSBib29sKG51bWJlcmVkX2RpcnMpCisKKyAgICBUZXN0Q2FzZS5fZ2F0aGVyX2xz
cHJvZl9pbl9iZW5jaG1hcmtzID0gbHNwcm9mX3RpbWVkCiAgICAgaWYgbnVtYmVyZWRfZGlycyBp
cyBub3QgTm9uZToKLSAgICAgICAgTlVNQkVSRURfRElSUyA9IGJvb2wobnVtYmVyZWRfZGlycykK
LQotICAgIFRlc3RDYXNlLl9nYXRoZXJfbHNwcm9mX2luX2JlbmNobWFya3MgPSBsc3Byb2ZfdGlt
ZWQKKyAgICAgICAgVGVzdENhc2VJblRlbXBEaXIudXNlX251bWJlcmVkX2RpcnMgPSB1c2VfbnVt
YmVyZWRfZGlycwogICAgIGlmIHZlcmJvc2U6CiAgICAgICAgIHZlcmJvc2l0eSA9IDIKICAgICBl
bHNlOgpAQCAtMjA4MiwxMyArMjE4MCwzNSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGRlc2NyaXB0aW9ucz0wLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlcmJvc2l0eT12
ZXJib3NpdHksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2VlcF9vdXRwdXQ9a2VlcF9v
dXRwdXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgYmVuY2hfaGlzdG9yeT1iZW5jaF9o
aXN0b3J5KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJlbmNoX2hpc3Rvcnk9YmVuY2hf
aGlzdG9yeSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2VfbnVtYmVyZWRfZGlycz11
c2VfbnVtYmVyZWRfZGlycywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaXN0X29ubHk9
bGlzdF9vbmx5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICkKICAgICBydW5uZXIuc3Rv
cF9vbl9mYWlsdXJlPXN0b3Bfb25fZmFpbHVyZQotICAgIGlmIHBhdHRlcm4gIT0gJy4qJzoKKyAg
ICAjIEluaXRpYWxpc2UgdGhlIHJhbmRvbSBudW1iZXIgZ2VuZXJhdG9yIGFuZCBkaXNwbGF5IHRo
ZSBzZWVkIHVzZWQuCisgICAgIyBXZSBjb252ZXJ0IHRoZSBzZWVkIHRvIGEgbG9uZyB0byBtYWtl
IGl0IHJldXNlYWJsZSBhY3Jvc3MgaW52b2NhdGlvbnMuCisgICAgcmFuZG9tX29yZGVyID0gRmFs
c2UKKyAgICBpZiByYW5kb21fc2VlZCBpcyBub3QgTm9uZToKKyAgICAgICAgcmFuZG9tX29yZGVy
ID0gVHJ1ZQorICAgICAgICBpZiByYW5kb21fc2VlZCA9PSAibm93IjoKKyAgICAgICAgICAgIHJh
bmRvbV9zZWVkID0gbG9uZyh0aW1lLnRpbWUoKSkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAg
ICMgQ29udmVydCB0aGUgc2VlZCB0byBhIGxvbmcgaWYgd2UgY2FuCisgICAgICAgICAgICB0cnk6
CisgICAgICAgICAgICAgICAgcmFuZG9tX3NlZWQgPSBsb25nKHJhbmRvbV9zZWVkKQorICAgICAg
ICAgICAgZXhjZXB0OgorICAgICAgICAgICAgICAgIHBhc3MKKyAgICAgICAgcnVubmVyLnN0cmVh
bS53cml0ZWxuKCJSYW5kb21pemluZyB0ZXN0IG9yZGVyIHVzaW5nIHNlZWQgJXNcbiIgJQorICAg
ICAgICAgICAgKHJhbmRvbV9zZWVkKSkKKyAgICAgICAgcmFuZG9tLnNlZWQocmFuZG9tX3NlZWQp
CisgICAgIyBDdXN0b21pc2UgdGhlIGxpc3Qgb2YgdGVzdHMgaWYgcmVxdWVzdGVkCisgICAgaWYg
cGF0dGVybiAhPSAnLionIG9yIGV4Y2x1ZGVfcGF0dGVybiBpcyBub3QgTm9uZSBvciByYW5kb21f
b3JkZXI6CiAgICAgICAgIGlmIG1hdGNoaW5nX3Rlc3RzX2ZpcnN0OgotICAgICAgICAgICAgc3Vp
dGUgPSBzb3J0X3N1aXRlX2J5X3JlKHN1aXRlLCBwYXR0ZXJuKQorICAgICAgICAgICAgc3VpdGUg
PSBzb3J0X3N1aXRlX2J5X3JlKHN1aXRlLCBwYXR0ZXJuLCBleGNsdWRlX3BhdHRlcm4sCisgICAg
ICAgICAgICAgICAgcmFuZG9tX29yZGVyKQogICAgICAgICBlbHNlOgotICAgICAgICAgICAgc3Vp
dGUgPSBmaWx0ZXJfc3VpdGVfYnlfcmUoc3VpdGUsIHBhdHRlcm4pCisgICAgICAgICAgICBzdWl0
ZSA9IGZpbHRlcl9zdWl0ZV9ieV9yZShzdWl0ZSwgcGF0dGVybiwgZXhjbHVkZV9wYXR0ZXJuLAor
ICAgICAgICAgICAgICAgIHJhbmRvbV9vcmRlcikKICAgICByZXN1bHQgPSBydW5uZXIucnVuKHN1
aXRlKQogICAgIHJldHVybiByZXN1bHQud2FzU3VjY2Vzc2Z1bCgpCiAKQEAgLTIxMDAsNyArMjIy
MCwxMCBAQAogICAgICAgICAgICAgIGxzcHJvZl90aW1lZD1Ob25lLAogICAgICAgICAgICAgIGJl
bmNoX2hpc3Rvcnk9Tm9uZSwKICAgICAgICAgICAgICBtYXRjaGluZ190ZXN0c19maXJzdD1Ob25l
LAotICAgICAgICAgICAgIG51bWJlcmVkX2RpcnM9Tm9uZSk6CisgICAgICAgICAgICAgbnVtYmVy
ZWRfZGlycz1Ob25lLAorICAgICAgICAgICAgIGxpc3Rfb25seT1GYWxzZSwKKyAgICAgICAgICAg
ICByYW5kb21fc2VlZD1Ob25lLAorICAgICAgICAgICAgIGV4Y2x1ZGVfcGF0dGVybj1Ob25lKToK
ICAgICAiIiJSdW4gdGhlIHdob2xlIHRlc3Qgc3VpdGUgdW5kZXIgdGhlIGVuaGFuY2VkIHJ1bm5l
ciIiIgogICAgICMgWFhYOiBWZXJ5IHVnbHkgd2F5IHRvIGRvIHRoaXMuLi4KICAgICAjIERpc2Fi
bGUgd2FybmluZyBhYm91dCBvbGQgZm9ybWF0cyBiZWNhdXNlIHdlIGRvbid0IHdhbnQgaXQgdG8g
ZGlzdHVyYgpAQCAtMjEyNCw3ICsyMjQ3LDEwIEBACiAgICAgICAgICAgICAgICAgICAgICBsc3By
b2ZfdGltZWQ9bHNwcm9mX3RpbWVkLAogICAgICAgICAgICAgICAgICAgICAgYmVuY2hfaGlzdG9y
eT1iZW5jaF9oaXN0b3J5LAogICAgICAgICAgICAgICAgICAgICAgbWF0Y2hpbmdfdGVzdHNfZmly
c3Q9bWF0Y2hpbmdfdGVzdHNfZmlyc3QsCi0gICAgICAgICAgICAgICAgICAgICBudW1iZXJlZF9k
aXJzPW51bWJlcmVkX2RpcnMpCisgICAgICAgICAgICAgICAgICAgICBudW1iZXJlZF9kaXJzPW51
bWJlcmVkX2RpcnMsCisgICAgICAgICAgICAgICAgICAgICBsaXN0X29ubHk9bGlzdF9vbmx5LAor
ICAgICAgICAgICAgICAgICAgICAgcmFuZG9tX3NlZWQ9cmFuZG9tX3NlZWQsCisgICAgICAgICAg
ICAgICAgICAgICBleGNsdWRlX3BhdHRlcm49ZXhjbHVkZV9wYXR0ZXJuKQogICAgIGZpbmFsbHk6
CiAgICAgICAgIGRlZmF1bHRfdHJhbnNwb3J0ID0gb2xkX3RyYW5zcG9ydAogCkBAIC0yMTQyLDYg
KzIyNjgsNyBAQAogICAgICAgICAgICAgICAgICAgICdienJsaWIudGVzdHMudGVzdF9hdG9taWNm
aWxlJywKICAgICAgICAgICAgICAgICAgICAnYnpybGliLnRlc3RzLnRlc3RfYmFkX2ZpbGVzJywK
ICAgICAgICAgICAgICAgICAgICAnYnpybGliLnRlc3RzLnRlc3RfYnJhbmNoJywKKyAgICAgICAg
ICAgICAgICAgICAnYnpybGliLnRlc3RzLnRlc3RfYnVndHJhY2tlcicsCiAgICAgICAgICAgICAg
ICAgICAgJ2J6cmxpYi50ZXN0cy50ZXN0X2J1bmRsZScsCiAgICAgICAgICAgICAgICAgICAgJ2J6
cmxpYi50ZXN0cy50ZXN0X2J6cmRpcicsCiAgICAgICAgICAgICAgICAgICAgJ2J6cmxpYi50ZXN0
cy50ZXN0X2NhY2hlX3V0ZjgnLApAQCAtMjE1NCw3ICsyMjgxLDYgQEAKICAgICAgICAgICAgICAg
ICAgICAnYnpybGliLnRlc3RzLnRlc3RfZGVsdGEnLAogICAgICAgICAgICAgICAgICAgICdienJs
aWIudGVzdHMudGVzdF9kaWZmJywKICAgICAgICAgICAgICAgICAgICAnYnpybGliLnRlc3RzLnRl
c3RfZGlyc3RhdGUnLAotICAgICAgICAgICAgICAgICAgICdienJsaWIudGVzdHMudGVzdF9kb2Nf
Z2VuZXJhdGUnLAogICAgICAgICAgICAgICAgICAgICdienJsaWIudGVzdHMudGVzdF9lcnJvcnMn
LAogICAgICAgICAgICAgICAgICAgICdienJsaWIudGVzdHMudGVzdF9lc2NhcGVkX3N0b3JlJywK
ICAgICAgICAgICAgICAgICAgICAnYnpybGliLnRlc3RzLnRlc3RfZXh0cmFjdCcsCkBAIC0yMTY2
LDYgKzIyOTIsNyBAQAogICAgICAgICAgICAgICAgICAgICdienJsaWIudGVzdHMudGVzdF9ncGcn
LAogICAgICAgICAgICAgICAgICAgICdienJsaWIudGVzdHMudGVzdF9ncmFwaCcsCiAgICAgICAg
ICAgICAgICAgICAgJ2J6cmxpYi50ZXN0cy50ZXN0X2hhc2hjYWNoZScsCisgICAgICAgICAgICAg
ICAgICAgJ2J6cmxpYi50ZXN0cy50ZXN0X2hlbHAnLAogICAgICAgICAgICAgICAgICAgICdienJs
aWIudGVzdHMudGVzdF9odHRwJywKICAgICAgICAgICAgICAgICAgICAnYnpybGliLnRlc3RzLnRl
c3RfaHR0cF9yZXNwb25zZScsCiAgICAgICAgICAgICAgICAgICAgJ2J6cmxpYi50ZXN0cy50ZXN0
X2h0dHBzX2NhX2J1bmRsZScsCkBAIC0yMTk2LDYgKzIzMjMsNyBAQAogICAgICAgICAgICAgICAg
ICAgICdienJsaWIudGVzdHMudGVzdF9wcm9ncmVzcycsCiAgICAgICAgICAgICAgICAgICAgJ2J6
cmxpYi50ZXN0cy50ZXN0X3JlY29uY2lsZScsCiAgICAgICAgICAgICAgICAgICAgJ2J6cmxpYi50
ZXN0cy50ZXN0X3JlZ2lzdHJ5JywKKyAgICAgICAgICAgICAgICAgICAnYnpybGliLnRlc3RzLnRl
c3RfcmVtb3RlJywKICAgICAgICAgICAgICAgICAgICAnYnpybGliLnRlc3RzLnRlc3RfcmVwb3Np
dG9yeScsCiAgICAgICAgICAgICAgICAgICAgJ2J6cmxpYi50ZXN0cy50ZXN0X3JldmVydCcsCiAg
ICAgICAgICAgICAgICAgICAgJ2J6cmxpYi50ZXN0cy50ZXN0X3JldmlzaW9uJywKQEAgLTIyMDYs
NiArMjMzNCw3IEBACiAgICAgICAgICAgICAgICAgICAgJ2J6cmxpYi50ZXN0cy50ZXN0X3NlbGZ0
ZXN0JywKICAgICAgICAgICAgICAgICAgICAnYnpybGliLnRlc3RzLnRlc3Rfc2V0dXAnLAogICAg
ICAgICAgICAgICAgICAgICdienJsaWIudGVzdHMudGVzdF9zZnRwX3RyYW5zcG9ydCcsCisgICAg
ICAgICAgICAgICAgICAgJ2J6cmxpYi50ZXN0cy50ZXN0X3NtYXJ0JywKICAgICAgICAgICAgICAg
ICAgICAnYnpybGliLnRlc3RzLnRlc3Rfc21hcnRfYWRkJywKICAgICAgICAgICAgICAgICAgICAn
YnpybGliLnRlc3RzLnRlc3Rfc21hcnRfdHJhbnNwb3J0JywKICAgICAgICAgICAgICAgICAgICAn
YnpybGliLnRlc3RzLnRlc3Rfc291cmNlJywKQEAgLTIyODYsNiArMjQxNSwxOCBAQAogICAgICAg
ICBzdWl0ZS5hZGRUZXN0cyhhZGFwdGVyLmFkYXB0KHRlc3QpKQogCiAKK2RlZiBfcm10cmVlX3Rl
bXBfZGlyKGRpcm5hbWUpOgorICAgIHRyeToKKyAgICAgICAgb3N1dGlscy5ybXRyZWUoZGlybmFt
ZSkKKyAgICBleGNlcHQgT1NFcnJvciwgZToKKyAgICAgICAgaWYgc3lzLnBsYXRmb3JtID09ICd3
aW4zMicgYW5kIGUuZXJybm8gPT0gZXJybm8uRUFDQ0VTOgorICAgICAgICAgICAgcHJpbnQgPj5z
eXMuc3RkZXJyLCAoJ1Blcm1pc3Npb24gZGVuaWVkOiAnCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAndW5hYmxlIHRvIHJlbW92ZSB0ZXN0aW5nIGRpciAnCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAnJXMnICUgb3MucGF0aC5iYXNlbmFtZShkaXJuYW1lKSkKKyAg
ICAgICAgZWxzZToKKyAgICAgICAgICAgIHJhaXNlCisKKwogZGVmIGNsZWFuX3NlbGZ0ZXN0X291
dHB1dChyb290PU5vbmUsIHF1aWV0PUZhbHNlKToKICAgICAiIiJSZW1vdmUgYWxsIHNlbGZ0ZXN0
IG91dHB1dCBkaXJlY3RvcmllcyBmcm9tIHJvb3QgZGlyZWN0b3J5LgogCkBAIC0yMjk0LDggKzI0
MzUsNiBAQAogICAgIDpwYXJhbSAgcXVpZXQ6ICBzdXBwcmVzcyByZXBvcnQgYWJvdXQgZGVsZXRp
bmcgZGlyZWN0b3JpZXMKICAgICAiIiIKICAgICBpbXBvcnQgcmUKLSAgICBpbXBvcnQgc2h1dGls
Ci0KICAgICByZV9kaXIgPSByZS5jb21waWxlKHInJyd0ZXN0XGRcZFxkXGRcLnRtcCcnJykKICAg
ICBpZiByb290IGlzIE5vbmU6CiAgICAgICAgIHJvb3QgPSB1Jy4nCkBAIC0yMzAzLDcgKzI0NDIs
NyBAQAogICAgICAgICBpZiBvcy5wYXRoLmlzZGlyKGkpIGFuZCByZV9kaXIubWF0Y2goaSk6CiAg
ICAgICAgICAgICBpZiBub3QgcXVpZXQ6CiAgICAgICAgICAgICAgICAgcHJpbnQgJ2RlbGV0ZSBk
aXJlY3Rvcnk6JywgaQotICAgICAgICAgICAgc2h1dGlsLnJtdHJlZShpKQorICAgICAgICAgICAg
X3JtdHJlZV90ZW1wX2RpcihpKQogCiAKIGNsYXNzIEZlYXR1cmUob2JqZWN0KToKCg==

=== modified file bzrlib/tests/blackbox/__init__.py // last-changed:pqm@pqm.ubu
... ntu.com-20070425065022-rsmpi4x2q1gn8536 // encoding:base64
LS0tIGJ6cmxpYi90ZXN0cy9ibGFja2JveC9fX2luaXRfXy5weQorKysgYnpybGliL3Rlc3RzL2Js
YWNrYm94L19faW5pdF9fLnB5CkBAIC00NCw5ICs0NCwxMSBAQAogICAgICAgICAgICAgICAgICAg
ICAgJ2J6cmxpYi50ZXN0cy5ibGFja2JveC50ZXN0X2Fubm90YXRlJywKICAgICAgICAgICAgICAg
ICAgICAgICdienJsaWIudGVzdHMuYmxhY2tib3gudGVzdF9icmFuY2gnLAogICAgICAgICAgICAg
ICAgICAgICAgJ2J6cmxpYi50ZXN0cy5ibGFja2JveC50ZXN0X2JyZWFrX2xvY2snLAorICAgICAg
ICAgICAgICAgICAgICAgJ2J6cmxpYi50ZXN0cy5ibGFja2JveC50ZXN0X2JyZWFraW4nLAogICAg
ICAgICAgICAgICAgICAgICAgJ2J6cmxpYi50ZXN0cy5ibGFja2JveC50ZXN0X2JvdW5kX2JyYW5j
aGVzJywKICAgICAgICAgICAgICAgICAgICAgICdienJsaWIudGVzdHMuYmxhY2tib3gudGVzdF9i
dW5kbGUnLAogICAgICAgICAgICAgICAgICAgICAgJ2J6cmxpYi50ZXN0cy5ibGFja2JveC50ZXN0
X2NhdCcsCisgICAgICAgICAgICAgICAgICAgICAnYnpybGliLnRlc3RzLmJsYWNrYm94LnRlc3Rf
Y2F0X3JldmlzaW9uJywKICAgICAgICAgICAgICAgICAgICAgICdienJsaWIudGVzdHMuYmxhY2ti
b3gudGVzdF9jaGVja291dCcsCiAgICAgICAgICAgICAgICAgICAgICAnYnpybGliLnRlc3RzLmJs
YWNrYm94LnRlc3RfY29tbWFuZF9lbmNvZGluZycsCiAgICAgICAgICAgICAgICAgICAgICAnYnpy
bGliLnRlc3RzLmJsYWNrYm94LnRlc3RfY29tbWl0JywKQEAgLTEyMywzICsxMjUsMTEgQEAKICAg
ICAgICAgICAgIHJldHVybiBzZWxmLnJ1bl9ienJfY2FwdHVyZWQoYXJncywgcmV0Y29kZT1yZXRj
b2RlKVswXQogICAgICAgICBlbHNlOgogICAgICAgICAgICAgcmV0dXJuIHNlbGYucnVuX2J6cl9j
YXB0dXJlZChhcmdzLCByZXRjb2RlPXJldGNvZGUpCisKKyAgICBkZWYgY2hlY2tfb3V0cHV0KHNl
bGYsIG91dHB1dCwgKmFyZ3MpOgorICAgICAgICAiIiJWZXJpZnkgdGhhdCB0aGUgZXhwZWN0ZWQg
b3V0cHV0IG1hdGNoZXMgd2hhdCBienIgc2F5cy4KKworICAgICAgICBUaGUgb3V0cHV0IGlzIHN1
cHBsaWVkIGZpcnN0LCBzbyB0aGF0IHlvdSBjYW4gc3VwcGx5IGEgdmFyaWFibGUKKyAgICAgICAg
bnVtYmVyIG9mIGFyZ3VtZW50cyB0byBienIuCisgICAgICAgICIiIgorICAgICAgICBzZWxmLmFz
c2VydEVxdWFscyhzZWxmLnJ1bl9ienJfY2FwdHVyZWQoYXJncylbMF0sIG91dHB1dCkKCg==

=== modified file bzrlib/tests/blackbox/test_cat.py // last-changed:bialix@ukr.
... net-20070328144807-dhektxjnz7axuq8j // encoding:base64
LS0tIGJ6cmxpYi90ZXN0cy9ibGFja2JveC90ZXN0X2NhdC5weQorKysgYnpybGliL3Rlc3RzL2Js
YWNrYm94L3Rlc3RfY2F0LnB5CkBAIC03OSwyNiArNzksMjkgQEAKICAgICAgICAgICAgIHRyZWUu
cmVtb3ZlKFsnZC1yZXYnXSkKICAgICAgICAgICAgIHRyZWUucmVuYW1lX29uZSgnYS1yZXYtdHJl
ZScsICdiLXRyZWUnKQogICAgICAgICAgICAgdHJlZS5yZW5hbWVfb25lKCdjLXJldicsICdhLXJl
di10cmVlJykKLQotICAgICAgICAgICAgIyAnYi10cmVlJyBpcyBub3QgcHJlc2VudCBpbiB0aGUg
b2xkIHRyZWUuCi0gICAgICAgICAgICBzZWxmLnJ1bl9ienJfZXJyb3IoW10sICdjYXQnLCAnYi10
cmVlJywgJy0tbmFtZS1mcm9tLXJldmlzaW9uJykKLQotICAgICAgICAgICAgIyBnZXQgdG8gdGhl
IG9sZCBmaWxlIGF1dG9tYXRpY2FsbHkKLSAgICAgICAgICAgIG91dCwgZXJyID0gc2VsZi5ydW5f
YnpyKCdjYXQnLCAnZC1yZXYnKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnYmFyXG4n
LCBvdXQpCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCcnLCBlcnIpCi0KLSAgICAgICAg
ICAgIG91dCwgZXJyID0gc2VsZi5ydW5fYnpyKCdjYXQnLCAnYS1yZXYtdHJlZScsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnLS1uYW1lLWZyb20tcmV2aXNpb24nKQotICAg
ICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnZm9vXG4nLCBvdXQpCi0gICAgICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKCcnLCBlcnIpCi0KLSAgICAgICAgICAgIG91dCwgZXJyID0gc2VsZi5ydW5f
YnpyKCdjYXQnLCAnYS1yZXYtdHJlZScpCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdi
YXpcbicsIG91dCkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJycsIGVycikKICAgICAg
ICAgZmluYWxseToKKyAgICAgICAgICAgICMgY2FsbGluZyBienIgYXMgYW5vdGhlciBwcm9jZXNz
IHJlcXVpcmUgZnJlZSBsb2NrIG9uIHdpbjMyCiAgICAgICAgICAgICB0cmVlLnVubG9jaygpCiAK
KyAgICAgICAgIyAnYi10cmVlJyBpcyBub3QgcHJlc2VudCBpbiB0aGUgb2xkIHRyZWUuCisgICAg
ICAgIHNlbGYucnVuX2J6cl9lcnJvcihbIl5ienI6IEVSUk9SOiB1PydiLXRyZWUnICIKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAiaXMgbm90IHByZXNlbnQgaW4gcmV2aXNpb24gLiskIl0s
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAnY2F0JywgJ2ItdHJlZScsICctLW5hbWUtZnJv
bS1yZXZpc2lvbicpCisKKyAgICAgICAgIyBnZXQgdG8gdGhlIG9sZCBmaWxlIGF1dG9tYXRpY2Fs
bHkKKyAgICAgICAgb3V0LCBlcnIgPSBzZWxmLnJ1bl9ienIoJ2NhdCcsICdkLXJldicpCisgICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ2JhclxuJywgb3V0KQorICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKCcnLCBlcnIpCisKKyAgICAgICAgb3V0LCBlcnIgPSBzZWxmLnJ1bl9ienIoJ2NhdCcsICdh
LXJldi10cmVlJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJy0tbmFtZS1mcm9t
LXJldmlzaW9uJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnZm9vXG4nLCBvdXQpCisgICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwoJycsIGVycikKKworICAgICAgICBvdXQsIGVyciA9IHNlbGYu
cnVuX2J6cignY2F0JywgJ2EtcmV2LXRyZWUnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdi
YXpcbicsIG91dCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnJywgZXJyKQorCiAgICAgZGVm
IHRlc3RfcmVtb3RlX2NhdChzZWxmKToKICAgICAgICAgd3QgPSBzZWxmLm1ha2VfYnJhbmNoX2Fu
ZF90cmVlKCcuJykKICAgICAgICAgc2VsZi5idWlsZF90cmVlKFsnUkVBRE1FJ10pCgo=

=== modified file bzrlib/tests/blackbox/test_commit.py // last-changed:mbp@sour
... cefrog.net-20070425055110-i0fmvoc3t4jejlbd // encoding:base64
LS0tIGJ6cmxpYi90ZXN0cy9ibGFja2JveC90ZXN0X2NvbW1pdC5weQorKysgYnpybGliL3Rlc3Rz
L2JsYWNrYm94L3Rlc3RfY29tbWl0LnB5CkBAIC0zNTgsMyArMzU4LDExOSBAQAogICAgICAgICAj
IC0tbm8tc3RyaWN0IG92ZXJyaWRlcyAtLXN0cmljdAogICAgICAgICBzZWxmLnJ1bl9ienIoJ2Nv
bW1pdCcsICctLXN0cmljdCcsICctbScsICdhZGQgYicsICctLW5vLXN0cmljdCcsCiAgICAgICAg
ICAgICAgICAgICAgICB3b3JraW5nX2Rpcj0ndHJlZScpCisKKyAgICBkZWYgdGVzdF9maXhlc19i
dWdfb3V0cHV0KHNlbGYpOgorICAgICAgICAiIiJjb21taXQgLS1maXhlcz1scDoyMzQ1MiBzdWNj
ZWVkcyB3aXRob3V0IG91dHB1dC4iIiIKKyAgICAgICAgdHJlZSA9IHNlbGYubWFrZV9icmFuY2hf
YW5kX3RyZWUoJ3RyZWUnKQorICAgICAgICBzZWxmLmJ1aWxkX3RyZWUoWyd0cmVlL2hlbGxvLnR4
dCddKQorICAgICAgICB0cmVlLmFkZCgnaGVsbG8udHh0JykKKyAgICAgICAgb3V0cHV0LCBlcnIg
PSBzZWxmLnJ1bl9ienIoCisgICAgICAgICAgICAnY29tbWl0JywgJy1tJywgJ2hlbGxvJywgJy0t
Zml4ZXM9bHA6MjM0NTInLCAndHJlZS9oZWxsby50eHQnKQorICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKCcnLCBvdXRwdXQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ2FkZGVkIGhlbGxvLnR4
dFxuQ29tbWl0dGVkIHJldmlzaW9uIDEuXG4nLCBlcnIpCisKKyAgICBkZWYgdGVzdF9ub19idWdz
X25vX3Byb3BlcnRpZXMoc2VsZik6CisgICAgICAgICIiIklmIG5vIGJ1Z3MgYXJlIGZpeGVkLCB0
aGUgYnVncyBwcm9wZXJ0eSBpcyBub3Qgc2V0LgorCisgICAgICAgIHNlZSBodHRwczovL2JldGEu
bGF1bmNocGFkLm5ldC9ienIvK2J1Zy8xMDk2MTMKKyAgICAgICAgIiIiCisgICAgICAgIHRyZWUg
PSBzZWxmLm1ha2VfYnJhbmNoX2FuZF90cmVlKCd0cmVlJykKKyAgICAgICAgc2VsZi5idWlsZF90
cmVlKFsndHJlZS9oZWxsby50eHQnXSkKKyAgICAgICAgdHJlZS5hZGQoJ2hlbGxvLnR4dCcpCisg
ICAgICAgIHNlbGYucnVuX2J6ciggJ2NvbW1pdCcsICctbScsICdoZWxsbycsICd0cmVlL2hlbGxv
LnR4dCcpCisgICAgICAgICMgR2V0IHRoZSByZXZpc2lvbiBwcm9wZXJ0aWVzLCBpZ25vcmluZyB0
aGUgYnJhbmNoLW5pY2sgcHJvcGVydHksIHdoaWNoCisgICAgICAgICMgd2UgZG9uJ3QgY2FyZSBh
Ym91dCBmb3IgdGhpcyB0ZXN0LgorICAgICAgICBsYXN0X3JldiA9IHRyZWUuYnJhbmNoLnJlcG9z
aXRvcnkuZ2V0X3JldmlzaW9uKHRyZWUubGFzdF9yZXZpc2lvbigpKQorICAgICAgICBwcm9wZXJ0
aWVzID0gZGljdChsYXN0X3Jldi5wcm9wZXJ0aWVzKQorICAgICAgICBkZWwgcHJvcGVydGllc1sn
YnJhbmNoLW5pY2snXQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKCdidWdzJyBpbiBwcm9wZXJ0
aWVzKQorCisgICAgZGVmIHRlc3RfZml4ZXNfYnVnX3NldHNfcHJvcGVydHkoc2VsZik6CisgICAg
ICAgICIiImNvbW1pdCAtLWZpeGVzPWxwOjIzNCBzZXRzIHRoZSBscDoyMzQgcmV2cHJvcCB0byAn
Zml4ZWQnLiIiIgorICAgICAgICB0cmVlID0gc2VsZi5tYWtlX2JyYW5jaF9hbmRfdHJlZSgndHJl
ZScpCisgICAgICAgIHNlbGYuYnVpbGRfdHJlZShbJ3RyZWUvaGVsbG8udHh0J10pCisgICAgICAg
IHRyZWUuYWRkKCdoZWxsby50eHQnKQorICAgICAgICBzZWxmLnJ1bl9ienIoCisgICAgICAgICAg
ICAnY29tbWl0JywgJy1tJywgJ2hlbGxvJywgJy0tZml4ZXM9bHA6MjM0JywgJ3RyZWUvaGVsbG8u
dHh0JykKKworICAgICAgICAjIEdldCB0aGUgcmV2aXNpb24gcHJvcGVydGllcywgaWdub3Jpbmcg
dGhlIGJyYW5jaC1uaWNrIHByb3BlcnR5LCB3aGljaAorICAgICAgICAjIHdlIGRvbid0IGNhcmUg
YWJvdXQgZm9yIHRoaXMgdGVzdC4KKyAgICAgICAgbGFzdF9yZXYgPSB0cmVlLmJyYW5jaC5yZXBv
c2l0b3J5LmdldF9yZXZpc2lvbih0cmVlLmxhc3RfcmV2aXNpb24oKSkKKyAgICAgICAgcHJvcGVy
dGllcyA9IGRpY3QobGFzdF9yZXYucHJvcGVydGllcykKKyAgICAgICAgZGVsIHByb3BlcnRpZXNb
J2JyYW5jaC1uaWNrJ10KKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHsnYnVncyc6ICdodHRw
czovL2xhdW5jaHBhZC5uZXQvYnVncy8yMzQgZml4ZWQnfSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICBwcm9wZXJ0aWVzKQorCisgICAgZGVmIHRlc3RfZml4ZXNfbXVsdGlwbGVfYnVnc19zZXRz
X3Byb3BlcnRpZXMoc2VsZik6CisgICAgICAgICIiIi0tZml4ZXMgY2FuIGJlIHVzZWQgbW9yZSB0
aGFuIG9uY2UgdG8gc2hvdyB0aGF0IGJ1Z3MgYXJlIGZpeGVkLiIiIgorICAgICAgICB0cmVlID0g
c2VsZi5tYWtlX2JyYW5jaF9hbmRfdHJlZSgndHJlZScpCisgICAgICAgIHNlbGYuYnVpbGRfdHJl
ZShbJ3RyZWUvaGVsbG8udHh0J10pCisgICAgICAgIHRyZWUuYWRkKCdoZWxsby50eHQnKQorICAg
ICAgICBzZWxmLnJ1bl9ienIoCisgICAgICAgICAgICAnY29tbWl0JywgJy1tJywgJ2hlbGxvJywg
Jy0tZml4ZXM9bHA6MTIzJywgJy0tZml4ZXM9bHA6MjM1JywKKyAgICAgICAgICAgICd0cmVlL2hl
bGxvLnR4dCcpCisKKyAgICAgICAgIyBHZXQgdGhlIHJldmlzaW9uIHByb3BlcnRpZXMsIGlnbm9y
aW5nIHRoZSBicmFuY2gtbmljayBwcm9wZXJ0eSwgd2hpY2gKKyAgICAgICAgIyB3ZSBkb24ndCBj
YXJlIGFib3V0IGZvciB0aGlzIHRlc3QuCisgICAgICAgIGxhc3RfcmV2ID0gdHJlZS5icmFuY2gu
cmVwb3NpdG9yeS5nZXRfcmV2aXNpb24odHJlZS5sYXN0X3JldmlzaW9uKCkpCisgICAgICAgIHBy
b3BlcnRpZXMgPSBkaWN0KGxhc3RfcmV2LnByb3BlcnRpZXMpCisgICAgICAgIGRlbCBwcm9wZXJ0
aWVzWydicmFuY2gtbmljayddCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAg
ICAgIHsnYnVncyc6ICdodHRwczovL2xhdW5jaHBhZC5uZXQvYnVncy8xMjMgZml4ZWRcbicKKyAg
ICAgICAgICAgICAgICAgICAgICdodHRwczovL2xhdW5jaHBhZC5uZXQvYnVncy8yMzUgZml4ZWQn
fSwKKyAgICAgICAgICAgIHByb3BlcnRpZXMpCisKKyAgICBkZWYgdGVzdF9maXhlc19idWdfd2l0
aF9hbHRlcm5hdGVfdHJhY2tlcnMoc2VsZik6CisgICAgICAgICIiIi0tZml4ZXMgY2FuIGJlIHVz
ZWQgb24gYSBwcm9wZXJseSBjb25maWd1cmVkIGJyYW5jaCB0byBtYXJrIGJ1ZworICAgICAgICBm
aXhlcyBvbiBtdWx0aXBsZSB0cmFja2Vycy4KKyAgICAgICAgIiIiCisgICAgICAgIHRyZWUgPSBz
ZWxmLm1ha2VfYnJhbmNoX2FuZF90cmVlKCd0cmVlJykKKyAgICAgICAgdHJlZS5icmFuY2guZ2V0
X2NvbmZpZygpLnNldF91c2VyX29wdGlvbigKKyAgICAgICAgICAgICd0cmFjX3R3aXN0ZWRfdXJs
JywgJ2h0dHA6Ly90d2lzdGVkbWF0cml4LmNvbS90cmFjJykKKyAgICAgICAgc2VsZi5idWlsZF90
cmVlKFsndHJlZS9oZWxsby50eHQnXSkKKyAgICAgICAgdHJlZS5hZGQoJ2hlbGxvLnR4dCcpCisg
ICAgICAgIHNlbGYucnVuX2J6cigKKyAgICAgICAgICAgICdjb21taXQnLCAnLW0nLCAnaGVsbG8n
LCAnLS1maXhlcz1scDoxMjMnLAorICAgICAgICAgICAgJy0tZml4ZXM9dHdpc3RlZDoyMzUnLCAn
dHJlZS8nKQorCisgICAgICAgICMgR2V0IHRoZSByZXZpc2lvbiBwcm9wZXJ0aWVzLCBpZ25vcmlu
ZyB0aGUgYnJhbmNoLW5pY2sgcHJvcGVydHksIHdoaWNoCisgICAgICAgICMgd2UgZG9uJ3QgY2Fy
ZSBhYm91dCBmb3IgdGhpcyB0ZXN0LgorICAgICAgICBsYXN0X3JldiA9IHRyZWUuYnJhbmNoLnJl
cG9zaXRvcnkuZ2V0X3JldmlzaW9uKHRyZWUubGFzdF9yZXZpc2lvbigpKQorICAgICAgICBwcm9w
ZXJ0aWVzID0gZGljdChsYXN0X3Jldi5wcm9wZXJ0aWVzKQorICAgICAgICBkZWwgcHJvcGVydGll
c1snYnJhbmNoLW5pY2snXQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAg
ICB7J2J1Z3MnOiAnaHR0cHM6Ly9sYXVuY2hwYWQubmV0L2J1Z3MvMTIzIGZpeGVkXG4nCisgICAg
ICAgICAgICAgICAgICAgICAnaHR0cDovL3R3aXN0ZWRtYXRyaXguY29tL3RyYWMvdGlja2V0LzIz
NSBmaXhlZCd9LAorICAgICAgICAgICAgcHJvcGVydGllcykKKworICAgIGRlZiB0ZXN0X2ZpeGVz
X3Vua25vd25fYnVnX3ByZWZpeChzZWxmKToKKyAgICAgICAgdHJlZSA9IHNlbGYubWFrZV9icmFu
Y2hfYW5kX3RyZWUoJ3RyZWUnKQorICAgICAgICBzZWxmLmJ1aWxkX3RyZWUoWyd0cmVlL2hlbGxv
LnR4dCddKQorICAgICAgICB0cmVlLmFkZCgnaGVsbG8udHh0JykKKyAgICAgICAgc2VsZi5ydW5f
YnpyX2Vycm9yKAorICAgICAgICAgICAgWyJVbnJlY29nbml6ZWQgYnVnICVzLiBDb21taXQgcmVm
dXNlZC4iICUgJ3h4eDoxMjMnXSwKKyAgICAgICAgICAgICdjb21taXQnLCAnLW0nLCAnYWRkIGIn
LCAnLS1maXhlcz14eHg6MTIzJywKKyAgICAgICAgICAgIHdvcmtpbmdfZGlyPSd0cmVlJykKKwor
ICAgIGRlZiB0ZXN0X2ZpeGVzX2ludmFsaWRfYnVnX251bWJlcihzZWxmKToKKyAgICAgICAgdHJl
ZSA9IHNlbGYubWFrZV9icmFuY2hfYW5kX3RyZWUoJ3RyZWUnKQorICAgICAgICBzZWxmLmJ1aWxk
X3RyZWUoWyd0cmVlL2hlbGxvLnR4dCddKQorICAgICAgICB0cmVlLmFkZCgnaGVsbG8udHh0JykK
KyAgICAgICAgc2VsZi5ydW5fYnpyX2Vycm9yKAorICAgICAgICAgICAgWyJJbnZhbGlkIGJ1ZyBp
ZGVudGlmaWVyIGZvciAlcy4gQ29tbWl0IHJlZnVzZWQuIiAlICdscDpvcmFuZ2UnXSwKKyAgICAg
ICAgICAgICdjb21taXQnLCAnLW0nLCAnYWRkIGInLCAnLS1maXhlcz1scDpvcmFuZ2UnLAorICAg
ICAgICAgICAgd29ya2luZ19kaXI9J3RyZWUnKQorCisgICAgZGVmIHRlc3RfZml4ZXNfaW52YWxp
ZF9hcmd1bWVudChzZWxmKToKKyAgICAgICAgIiIiUmFpc2UgYW4gYXBwcm9wcmlhdGUgZXJyb3Ig
d2hlbiB0aGUgZml4ZXMgYXJndW1lbnQgaXNuJ3QgdGFnOmlkLiIiIgorICAgICAgICB0cmVlID0g
c2VsZi5tYWtlX2JyYW5jaF9hbmRfdHJlZSgndHJlZScpCisgICAgICAgIHNlbGYuYnVpbGRfdHJl
ZShbJ3RyZWUvaGVsbG8udHh0J10pCisgICAgICAgIHRyZWUuYWRkKCdoZWxsby50eHQnKQorICAg
ICAgICBzZWxmLnJ1bl9ienJfZXJyb3IoCisgICAgICAgICAgICBbciJJbnZhbGlkIGJ1ZyBvcmFu
Z2UuIE11c3QgYmUgaW4gdGhlIGZvcm0gb2YgJ3RhZzppZCdcLiAiCisgICAgICAgICAgICAgciJD
b21taXQgcmVmdXNlZFwuIl0sCisgICAgICAgICAgICAnY29tbWl0JywgJy1tJywgJ2FkZCBiJywg
Jy0tZml4ZXM9b3JhbmdlJywKKyAgICAgICAgICAgIHdvcmtpbmdfZGlyPSd0cmVlJykKCg==

=== modified file bzrlib/tests/blackbox/test_debug.py // last-changed:mbp@sourc
... efrog.net-20070424045131-gyjo7l8oa99ndyrv // encoding:base64
LS0tIGJ6cmxpYi90ZXN0cy9ibGFja2JveC90ZXN0X2RlYnVnLnB5CisrKyBienJsaWIvdGVzdHMv
YmxhY2tib3gvdGVzdF9kZWJ1Zy5weQpAQCAtMTcsOCArMTcsMTIgQEAKICIiIkJsYWNrYm94IHRl
c3RzIGZvciAtRCBkZWJ1ZyBvcHRpb25zIiIiCiAKIGltcG9ydCBvcworaW1wb3J0IHNpZ25hbAor
aW1wb3J0IHN1YnByb2Nlc3MKK2ltcG9ydCBzeXMKK2ltcG9ydCB0aW1lCiAKLWZyb20gYnpybGli
LnRlc3RzIGltcG9ydCBUZXN0Q2FzZQorZnJvbSBienJsaWIudGVzdHMgaW1wb3J0IFRlc3RDYXNl
LCBUZXN0U2tpcHBlZAogCiBjbGFzcyBUZXN0RGVidWdPcHRpb24oVGVzdENhc2UpOgogCgo=

=== modified file bzrlib/tests/blackbox/test_help.py // encoding:base64
LS0tIGJ6cmxpYi90ZXN0cy9ibGFja2JveC90ZXN0X2hlbHAucHkKKysrIGJ6cmxpYi90ZXN0cy9i
bGFja2JveC90ZXN0X2hlbHAucHkKQEAgLTU2LDYgKzU2LDE4IEBACiAgICAgICAgIG91dCwgZXJy
ID0gc2VsZi5ydW5ienIoJ2hlbHAgY2hlY2tvdXRzJykKICAgICAgICAgc2VsZi5hc3NlcnRDb250
YWluc1JlKG91dCwgJ2NoZWNrb3V0JykKICAgICAgICAgc2VsZi5hc3NlcnRDb250YWluc1JlKG91
dCwgJ2xpZ2h0d2VpZ2h0JykKKyAgICAgICAgCisgICAgZGVmIHRlc3RfaGVscF91cmxzcGVjKHNl
bGYpOgorICAgICAgICAiIiJTbW9rZSB0ZXN0IGZvciAnYnpyIGhlbHAgdXJsc3BlYyciIiIKKyAg
ICAgICAgb3V0LCBlcnIgPSBzZWxmLnJ1bl9ienIoJ2hlbHAnLCAndXJsc3BlYycpCisgICAgICAg
IHNlbGYuYXNzZXJ0Q29udGFpbnNSZShvdXQsICdhZnRwOi8vJykKKyAgICAgICAgc2VsZi5hc3Nl
cnRDb250YWluc1JlKG91dCwgJ2J6cjovLycpCisgICAgICAgIHNlbGYuYXNzZXJ0Q29udGFpbnNS
ZShvdXQsICdienJcK3NzaDovLycpCisgICAgICAgIHNlbGYuYXNzZXJ0Q29udGFpbnNSZShvdXQs
ICdmaWxlOi8vJykKKyAgICAgICAgc2VsZi5hc3NlcnRDb250YWluc1JlKG91dCwgJ2Z0cDovLycp
CisgICAgICAgIHNlbGYuYXNzZXJ0Q29udGFpbnNSZShvdXQsICdodHRwOi8vJykKKyAgICAgICAg
c2VsZi5hc3NlcnRDb250YWluc1JlKG91dCwgJ2h0dHBzOi8vJykKKyAgICAgICAgc2VsZi5hc3Nl
cnRDb250YWluc1JlKG91dCwgJ3NmdHA6Ly8nKQogCiAgICAgZGVmIHRlc3RfaGVscF9yZXBvc2l0
b3JpZXMoc2VsZik6CiAgICAgICAgICIiIlNtb2tlIHRlc3QgZm9yICdienIgaGVscCByZXBvc2l0
b3JpZXMnIiIiCkBAIC0xMDcsNCArMTE5LDMgQEAKICAgICAgICAgZm9yIGxpbmUgaW4gaGVscC5z
cGxpdCgnXG4nKToKICAgICAgICAgICAgIGlmICctLWxvbmcnIGluIGxpbmU6CiAgICAgICAgICAg
ICAgICAgc2VsZi5hc3NlcnRUcnVlKCdzaG93IGhlbHAgb24gYWxsIGNvbW1hbmRzJyBpbiBsaW5l
KQotCgo=

=== modified file bzrlib/tests/blackbox/test_info.py // last-changed:john@arbas
... h-meinel.com-20070424025510-qyl1mc76r4sscj53 // encoding:base64
LS0tIGJ6cmxpYi90ZXN0cy9ibGFja2JveC90ZXN0X2luZm8ucHkKKysrIGJ6cmxpYi90ZXN0cy9i
bGFja2JveC90ZXN0X2luZm8ucHkKQEAgLTExMDgsNiArMTEwOCwxMyBAQAogICAgICAgICA6cGFy
YW0gcmVwb19sb2NrZWQ6IElmIHRydWUsIGV4cGVjdCB0aGUgcmVwb3NpdG9yeSB0byBiZSBsb2Nr
ZWQuCiAgICAgICAgIDpwYXJhbSB2ZXJib3NlOiBJZiB0cnVlLCBleHBlY3QgdmVyYm9zZSBvdXRw
dXQKICAgICAgICAgIiIiCisgICAgICAgIGlmIHRyZWVfbG9ja2VkIGFuZCBzeXMucGxhdGZvcm0g
PT0gJ3dpbjMyJzoKKyAgICAgICAgICAgICMgV2UgZXhwZWN0IHRoaXMgdG8gZmFpbCBiZWNhdXNl
IG9mIGxvY2tpbmcgZXJyb3JzLiAoQSB3cml0ZS1sb2NrZWQKKyAgICAgICAgICAgICMgZmlsZSBj
YW5ub3QgYmUgcmVhZC1sb2NrZWQgaW4gdGhlIHNhbWUgcHJvY2VzcykuCisgICAgICAgICAgICAj
IFRoaXMgc2hvdWxkIGJlIHJlbW92ZWQgd2hlbiB0aGUgbG9ja2luZyBlcnJvcnMgYXJlIGZpeGVk
LgorICAgICAgICAgICAgYXJncyA9IGNvbW1hbmRfc3RyaW5nLnNwbGl0KCcgJykKKyAgICAgICAg
ICAgIHNlbGYucnVuX2J6cl9lcnJvcihbXSwgJ2luZm8nLCAqYXJncykKKyAgICAgICAgICAgIHJl
dHVybgogICAgICAgICBvdXQsIGVyciA9IHNlbGYucnVuYnpyKCdpbmZvICVzJyAlIGNvbW1hbmRf
c3RyaW5nKQogICAgICAgICBpZiByZXBvX2xvY2tlZCBvciBicmFuY2hfbG9ja2VkIG9yIHRyZWVf
bG9ja2VkOgogICAgICAgICAgICAgZGVmIGxvY2tlZF9tZXNzYWdlKGFfYm9vbCk6CkBAIC0xMjg1
LDYgKzEyOTIsMTAgQEAKICAgICAgICAgICAgIGxjb190cmVlLmJyYW5jaC5yZXBvc2l0b3J5Lmxv
Y2tfd3JpdGUoKQogICAgICAgICAgICAgbGNvX3RyZWUuYnJhbmNoLnVubG9jaygpCiAKKyAgICAg
ICAgaWYgc3lzLnBsYXRmb3JtID09ICd3aW4zMic6CisgICAgICAgICAgICBzZWxmLmtub3duRmFp
bHVyZSgnV2luMzIgY2Fubm90IHJ1biAiYnpyIGluZm8iJworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgJyB3aGVuIHRoZSB0cmVlIGlzIGxvY2tlZC4nKQorCiAgICAgZGVmIHRlc3RfaW5m
b19sb2NraW5nX29zbG9ja3Moc2VsZik6CiAgICAgICAgIGlmIHN5cy5wbGF0Zm9ybSA9PSAid2lu
MzIiOgogICAgICAgICAgICAgcmFpc2UgVGVzdFNraXBwZWQoImRvbid0IHVzZSBvc2xvY2tzIG9u
IHdpbjMyIGluIHVuaXggbWFubmVyIikKCg==

=== modified file bzrlib/tests/blackbox/test_log.py // last-changed:john@arbash
... -meinel.com-20070423192314-y2x7sr7yupacqglk // encoding:base64
LS0tIGJ6cmxpYi90ZXN0cy9ibGFja2JveC90ZXN0X2xvZy5weQorKysgYnpybGliL3Rlc3RzL2Js
YWNrYm94L3Rlc3RfbG9nLnB5CkBAIC0yNyw4ICsyNywxMSBAQAogCiBjbGFzcyBUZXN0TG9nKEV4
dGVybmFsQmFzZSk6CiAKLSAgICBkZWYgX3ByZXBhcmUoc2VsZik6Ci0gICAgICAgIHNlbGYucnVu
YnpyKCJpbml0IikKKyAgICBkZWYgX3ByZXBhcmUoc2VsZiwgZm9ybWF0PU5vbmUpOgorICAgICAg
ICBpZiBmb3JtYXQ6CisgICAgICAgICAgICBzZWxmLnJ1bmJ6cigiaW5pdCAtLWZvcm1hdD0iK2Zv
cm1hdCkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNlbGYucnVuYnpyKCJpbml0IikKICAg
ICAgICAgc2VsZi5idWlsZF90cmVlKFsnaGVsbG8udHh0JywgJ2dvb2RieWUudHh0JywgJ21lZXAu
dHh0J10pCiAgICAgICAgIHNlbGYucnVuYnpyKCJhZGQgaGVsbG8udHh0IikKICAgICAgICAgc2Vs
Zi5ydW5ienIoImNvbW1pdCAtbSBtZXNzYWdlMSBoZWxsby50eHQiKQpAQCAtMTE2LDYgKzExOSwz
NiBAQAogICAgICAgICBzZWxmLmFzc2VydENvbnRhaW5zUmUoCiAgICAgICAgICAgICBlcnIsICdQ
YXRoIGRvZXMgbm90IGhhdmUgYW55IHJldmlzaW9uIGhpc3Rvcnk6IGRvZXMtbm90LWV4aXN0JykK
IAorICAgIGRlZiB0ZXN0X2xvZ193aXRoX3RhZ3Moc2VsZik6CisgICAgICAgIHNlbGYuX3ByZXBh
cmUoZm9ybWF0PSdkaXJzdGF0ZS10YWdzJykKKyAgICAgICAgc2VsZi5ydW5ienIoJ3RhZyAtcjEg
dGFnMScpCisgICAgICAgIHNlbGYucnVuYnpyKCd0YWcgLXIxIHRhZzEuMScpCisgICAgICAgIHNl
bGYucnVuYnpyKCd0YWcgdGFnMycpCisgICAgICAgIAorICAgICAgICBsb2cgPSBzZWxmLnJ1bmJ6
cigibG9nIC1yLTEiKVswXQorICAgICAgICBzZWxmLmFzc2VydFRydWUoJ3RhZ3M6IHRhZzMnIGlu
IGxvZykKKworICAgICAgICBsb2cgPSBzZWxmLnJ1bmJ6cigibG9nIC1yMSIpWzBdCisgICAgICAg
ICMgSSBndWVzcyB0aGF0IHdlIGNhbid0IGtub3cgdGhlIG9yZGVyIG9mIHRhZ3MgaW4gdGhlIG91
dHB1dAorICAgICAgICAjIHNpbmNlIGRpY3RzIGFyZSB1bm9yZGVyZWQsIG5lZWQgdG8gY2hlY2sg
Ym90aCBwb3NzaWJpbGl0aWVzCisgICAgICAgIHNlbGYuYXNzZXJ0Q29udGFpbnNSZShsb2csIHIn
dGFnczogKHRhZzEsIHRhZzFcLjF8dGFnMVwuMSwgdGFnMSknKQorCisgICAgZGVmIHRlc3RfbWVy
Z2VkX2xvZ193aXRoX3RhZ3Moc2VsZik6CisgICAgICAgIG9zLm1rZGlyKCdicmFuY2gxJykKKyAg
ICAgICAgb3MuY2hkaXIoJ2JyYW5jaDEnKQorICAgICAgICBzZWxmLl9wcmVwYXJlKGZvcm1hdD0n
ZGlyc3RhdGUtdGFncycpCisgICAgICAgIG9zLmNoZGlyKCcuLicpCisgICAgICAgIHNlbGYucnVu
YnpyKCdicmFuY2ggYnJhbmNoMSBicmFuY2gyJykKKyAgICAgICAgb3MuY2hkaXIoJ2JyYW5jaDEn
KQorICAgICAgICBzZWxmLnJ1bmJ6cignY29tbWl0IC1tIGZvb2JhciAtLXVuY2hhbmdlZCcpCisg
ICAgICAgIHNlbGYucnVuYnpyKCd0YWcgdGFnMScpCisgICAgICAgIG9zLmNoZGlyKCcuLi9icmFu
Y2gyJykKKyAgICAgICAgc2VsZi5ydW5ienIoJ21lcmdlIC4uL2JyYW5jaDEnKQorICAgICAgICBz
ZWxmLnJ1bmJ6cignY29tbWl0IC1tIG1lcmdlX2JyYW5jaF8xJykKKyAgICAgICAgbG9nID0gc2Vs
Zi5ydW5ienIoImxvZyAtci0xIilbMF0KKyAgICAgICAgc2VsZi5hc3NlcnRDb250YWluc1JlKGxv
ZywgcicgICAgdGFnczogdGFnMScpCisKKwogY2xhc3MgVGVzdExvZ01lcmdlcyhFeHRlcm5hbEJh
c2UpOgogCiAgICAgZGVmIHRlc3RfbWVyZ2VzX2FyZV9pbmRlbnRlZF9ieV9sZXZlbChzZWxmKToK
QEAgLTMwMSwzICszMzQsMzkgQEAKICAgICAgICAgdHJlZS5jb21taXQoJ3JldmlzaW9uIDEnKQog
ICAgICAgICB0cmVlLmJ6cmRpci5kZXN0cm95X3dvcmtpbmd0cmVlKCkKICAgICAgICAgc2VsZi5y
dW5fYnpyKCdsb2cnLCAndHJlZS9maWxlJykKKworICAgIGRlZiB0ZXN0X2xvZ19maWxlKHNlbGYp
OgorICAgICAgICAiIiJUaGUgbG9nIGZvciBhIHBhcnRpY3VsYXIgZmlsZSBzaG91bGQgb25seSBs
aXN0IHJldnMgZm9yIHRoYXQgZmlsZSIiIgorICAgICAgICB0cmVlID0gc2VsZi5tYWtlX2JyYW5j
aF9hbmRfdHJlZSgncGFyZW50JykKKyAgICAgICAgc2VsZi5idWlsZF90cmVlKFsncGFyZW50L2Zp
bGUxJywgJ3BhcmVudC9maWxlMicsICdwYXJlbnQvZmlsZTMnXSkKKyAgICAgICAgdHJlZS5hZGQo
J2ZpbGUxJykKKyAgICAgICAgdHJlZS5jb21taXQoJ2FkZCBmaWxlMScpCisgICAgICAgIHRyZWUu
YWRkKCdmaWxlMicpCisgICAgICAgIHRyZWUuY29tbWl0KCdhZGQgZmlsZTInKQorICAgICAgICB0
cmVlLmFkZCgnZmlsZTMnKQorICAgICAgICB0cmVlLmNvbW1pdCgnYWRkIGZpbGUzJykKKyAgICAg
ICAgc2VsZi5ydW5fYnpyKCdicmFuY2gnLCAncGFyZW50JywgJ2NoaWxkJykKKyAgICAgICAgcHJp
bnQgPj4gZmlsZSgnY2hpbGQvZmlsZTInLCAnd2InKSwgJ2hlbGxvJworICAgICAgICBzZWxmLnJ1
bl9ienIoJ2NvbW1pdCcsICctbScsICdicmFuY2ggMScsICdjaGlsZCcpCisgICAgICAgIG9zLmNo
ZGlyKCdwYXJlbnQnKQorICAgICAgICBzZWxmLnJ1bl9ienIoJ21lcmdlJywgJy4uL2NoaWxkJykK
KyAgICAgICAgc2VsZi5ydW5fYnpyKCdjb21taXQnLCAnLW0nLCAnbWVyZ2UgY2hpbGQgYnJhbmNo
JykKKyAgICAgICAgCisgICAgICAgIGxvZyA9IHNlbGYucnVuX2J6cignbG9nJywgJ2ZpbGUxJylb
MF0KKyAgICAgICAgc2VsZi5hc3NlcnRDb250YWluc1JlKGxvZywgJ3Jldm5vOiAxXG4nKQorICAg
ICAgICBzZWxmLmFzc2VydE5vdENvbnRhaW5zUmUobG9nLCAncmV2bm86IDJcbicpCisgICAgICAg
IHNlbGYuYXNzZXJ0Tm90Q29udGFpbnNSZShsb2csICdyZXZubzogM1xuJykKKyAgICAgICAgc2Vs
Zi5hc3NlcnROb3RDb250YWluc1JlKGxvZywgJ3Jldm5vOiAzLjEuMVxuJykKKyAgICAgICAgc2Vs
Zi5hc3NlcnROb3RDb250YWluc1JlKGxvZywgJ3Jldm5vOiA0XG4nKQorICAgICAgICBsb2cgPSBz
ZWxmLnJ1bl9ienIoJ2xvZycsICdmaWxlMicpWzBdCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90Q29u
dGFpbnNSZShsb2csICdyZXZubzogMVxuJykKKyAgICAgICAgc2VsZi5hc3NlcnRDb250YWluc1Jl
KGxvZywgJ3Jldm5vOiAyXG4nKQorICAgICAgICBzZWxmLmFzc2VydE5vdENvbnRhaW5zUmUobG9n
LCAncmV2bm86IDNcbicpCisgICAgICAgIHNlbGYuYXNzZXJ0Q29udGFpbnNSZShsb2csICdyZXZu
bzogMy4xLjFcbicpCisgICAgICAgIHNlbGYuYXNzZXJ0Q29udGFpbnNSZShsb2csICdyZXZubzog
NFxuJykKKyAgICAgICAgbG9nID0gc2VsZi5ydW5fYnpyKCdsb2cnLCAnZmlsZTMnKVswXQorICAg
ICAgICBzZWxmLmFzc2VydE5vdENvbnRhaW5zUmUobG9nLCAncmV2bm86IDFcbicpCisgICAgICAg
IHNlbGYuYXNzZXJ0Tm90Q29udGFpbnNSZShsb2csICdyZXZubzogMlxuJykKKyAgICAgICAgc2Vs
Zi5hc3NlcnRDb250YWluc1JlKGxvZywgJ3Jldm5vOiAzXG4nKQorICAgICAgICBzZWxmLmFzc2Vy
dE5vdENvbnRhaW5zUmUobG9nLCAncmV2bm86IDMuMS4xXG4nKQorICAgICAgICBzZWxmLmFzc2Vy
dE5vdENvbnRhaW5zUmUobG9nLCAncmV2bm86IDRcbicpCgo=

=== modified file bzrlib/tests/blackbox/test_mv.py // last-changed:amanic@gmail
... .com-20070323182956-5vestftm6gx3o9mz // encoding:base64
LS0tIGJ6cmxpYi90ZXN0cy9ibGFja2JveC90ZXN0X212LnB5CisrKyBienJsaWIvdGVzdHMvYmxh
Y2tib3gvdGVzdF9tdi5weQpAQCAtMzEsMTUgKzMxLDYgQEAKIAogY2xhc3MgVGVzdE1vdmUoVGVz
dENhc2VXaXRoVHJhbnNwb3J0KToKIAotICAgIGRlZiBhc3NlcnRJbldvcmtpbmdUcmVlKHNlbGYs
cGF0aCk6Ci0gICAgICAgIHRyZWUgPSB3b3JraW5ndHJlZS5Xb3JraW5nVHJlZS5vcGVuKCcuJykK
LSAgICAgICAgc2VsZi5hc3NlcnRJc05vdCh0cmVlLnBhdGgyaWQocGF0aCksIE5vbmUsCi0gICAg
ICAgICAgICBwYXRoKycgbm90IGluIHdvcmtpbmcgdHJlZS4nKQotCi0gICAgZGVmIGFzc2VydE5v
dEluV29ya2luZ1RyZWUoc2VsZixwYXRoKToKLSAgICAgICAgdHJlZSA9IHdvcmtpbmd0cmVlLldv
cmtpbmdUcmVlLm9wZW4oJy4nKQotICAgICAgICBzZWxmLmFzc2VydElzKHRyZWUucGF0aDJpZChw
YXRoKSwgTm9uZSwgcGF0aCsnIGluIHdvcmtpbmcgdHJlZS4nKQotCiAgICAgZGVmIGFzc2VydE1v
dmVkKHNlbGYsZnJvbV9wYXRoLHRvX3BhdGgpOgogICAgICAgICAiIiJBc3NlcnQgdGhhdCB0b19w
YXRoIGlzIGV4aXN0aW5nIGFuZCB2ZXJzaW9uZWQgYnV0IGZyb21fcGF0aCBub3QuICIiIgogICAg
ICAgICBzZWxmLmZhaWxJZkV4aXN0cyhmcm9tX3BhdGgpCgo=

=== modified file bzrlib/tests/blackbox/test_remove.py // last-changed:amanic@g
... mail.com-20070420071526-8e395b3gqvp1by61 // encoding:base64
LS0tIGJ6cmxpYi90ZXN0cy9ibGFja2JveC90ZXN0X3JlbW92ZS5weQorKysgYnpybGliL3Rlc3Rz
L2JsYWNrYm94L3Rlc3RfcmVtb3ZlLnB5CkBAIC0xNSw0OCArMTUsMjA0IEBACiAjIEZvdW5kYXRp
b24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BICAwMjExMS0x
MzA3ICBVU0EKIAogCi1pbXBvcnQgb3MKK2ltcG9ydCBvcywgcmUsIHNobGV4CiAKIGZyb20gYnpy
bGliLnRlc3RzLmJsYWNrYm94IGltcG9ydCBFeHRlcm5hbEJhc2UKIGZyb20gYnpybGliLndvcmtp
bmd0cmVlIGltcG9ydCBXb3JraW5nVHJlZQorZnJvbSBienJsaWIgaW1wb3J0IG9zdXRpbHMKKwor
X2lkPSctaWQnCithPSdhJworYj0nYi8nCitjPSdiL2MnCitkPSdkLycKK2ZpbGVzPShhLCBiLCBj
LCBkKQogCiAKIGNsYXNzIFRlc3RSZW1vdmUoRXh0ZXJuYWxCYXNlKToKIAotICAgIGRlZiB0ZXN0
X3JlbW92ZV9kZWxldGVkKHNlbGYpOgotICAgICAgICBzZWxmLnJ1bmJ6cigiaW5pdCIpCi0gICAg
ICAgIHNlbGYuYnVpbGRfdHJlZShbJ2EnXSkKLSAgICAgICAgc2VsZi5ydW5ienIoWydhZGQnLCAn
YSddKQotICAgICAgICBzZWxmLnJ1bmJ6cihbJ2NvbW1pdCcsICctbScsICdhZGRlZCBhJ10pCi0g
ICAgICAgIG9zLnVubGluaygnYScpCi0gICAgICAgIHNlbGYucnVuYnpyKFsncmVtb3ZlJywgJ2En
XSkKLQotICAgIGRlZiB0ZXN0X3JlbW92ZV9uZXcoc2VsZik6Ci0gICAgICAgIHNlbGYuYnVpbGRf
dHJlZShbJ2ZpbGVmaWxlJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAnZGlyLycsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgJ2Rpci9maWxlZmlsZWZpbGUnXSkKLSAgICAgICAgd3QgPSBz
ZWxmLm1ha2VfYnJhbmNoX2FuZF90cmVlKCcuJykKLSAgICAgICAgd3QuYWRkKFsnZmlsZWZpbGUn
LCAnZGlyJywgJ2Rpci9maWxlZmlsZWZpbGUnXSwgCi0gICAgICAgICAgICAgICBbJ2ZpbGVmaWxl
LWlkJywgJ2Rpci1pZCcsICdmaWxlZmlsZWZpbGUtaWQnXSkKLSAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbCh3dC5wYXRoMmlkKCdmaWxlZmlsZScpLCAnZmlsZWZpbGUtaWQnKQotICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKHd0LnBhdGgyaWQoJ2Rpci9maWxlZmlsZWZpbGUnKSwgJ2ZpbGVmaWxlZmls
ZS1pZCcpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwod3QucGF0aDJpZCgnZGlyJyksICdkaXIt
aWQnKQotICAgICAgICBzZWxmLnJ1bmJ6cigncmVtb3ZlIC0tbmV3JykKLSAgICAgICAgd3QgPSBX
b3JraW5nVHJlZS5vcGVuKCcuJykKLSAgICAgICAgc2VsZi5hc3NlcnRJcyh3dC5wYXRoMmlkKCdm
aWxlZmlsZScpLCBOb25lKQotICAgICAgICBzZWxmLmFzc2VydElzKHd0LnBhdGgyaWQoJ2Rpci9m
aWxlZmlsZWZpbGUnKSwgTm9uZSkKLSAgICAgICAgc2VsZi5hc3NlcnRJcyh3dC5wYXRoMmlkKCdk
aXInKSwgTm9uZSkKLSAgICAgICAgd3QuYWRkKFsnZmlsZWZpbGUnLCAnZGlyJywgJ2Rpci9maWxl
ZmlsZWZpbGUnXSwgCi0gICAgICAgICAgICAgICBbJ2ZpbGVmaWxlLWlkJywgJ2Rpci1pZCcsICdm
aWxlZmlsZWZpbGUtaWQnXSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh3dC5wYXRoMmlkKCdm
aWxlZmlsZScpLCAnZmlsZWZpbGUtaWQnKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHd0LnBh
dGgyaWQoJ2Rpci9maWxlZmlsZWZpbGUnKSwgJ2ZpbGVmaWxlZmlsZS1pZCcpCi0gICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwod3QucGF0aDJpZCgnZGlyJyksICdkaXItaWQnKQotICAgICAgICBzZWxm
LnJ1bmJ6cigncmVtb3ZlIC0tbmV3IGRpcicpCi0gICAgICAgIHd0ID0gV29ya2luZ1RyZWUub3Bl
bignLicpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwod3QucGF0aDJpZCgnZmlsZWZpbGUnKSwg
J2ZpbGVmaWxlLWlkJykKLSAgICAgICAgc2VsZi5hc3NlcnRJcyh3dC5wYXRoMmlkKCdkaXIvZmls
ZWZpbGVmaWxlJyksIE5vbmUpCi0gICAgICAgIHNlbGYuYXNzZXJ0SXMod3QucGF0aDJpZCgnZGly
JyksIE5vbmUpCi0gICAgICAgIHNlbGYucnVuYnpyKCdyZW1vdmUgLS1uZXcgLicpCi0gICAgICAg
IHd0ID0gV29ya2luZ1RyZWUub3BlbignLicpCi0gICAgICAgIHNlbGYuYXNzZXJ0SXMod3QucGF0
aDJpZCgnZmlsZWZpbGUnKSwgTm9uZSkKLSAgICAgICAgc2VsZi5ydW5ienIoJ3JlbW92ZSAtLW5l
dyAuJywgcmV0Y29kZT0zKQorICAgIGRlZiBydW5fYnpyX2NhcHR1cmVkKHNlbGYsIGFyZ3YsIHJl
dGNvZGU9MCwgZW5jb2Rpbmc9Tm9uZSwgc3RkaW49Tm9uZSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICB3b3JraW5nX2Rpcj1Ob25lKToKKworICAgICAgICAjIG1hZ2ljYWxseSBjb252ZXJ0IGNv
bW1hbmRzIGxpa2UgJ3JlbW92ZSBhYmMnIHRvIFsncmVtb3ZlJywgJ2FiYyddCisgICAgICAgIGlm
IChpc2luc3RhbmNlKGFyZ3YsIHR1cGxlKSBhbmQgbGVuKGFyZ3YpID09IDEgYW5kCisgICAgICAg
ICAgICBpc2luc3RhbmNlKGFyZ3ZbMF0sIGJhc2VzdHJpbmcpKToKKyAgICAgICAgICAgIGFyZ3Yg
PSBzaGxleC5zcGxpdChhcmd2WzBdKQorICAgICAgICByZXR1cm4gRXh0ZXJuYWxCYXNlLnJ1bl9i
enJfY2FwdHVyZWQoc2VsZiwgYXJndiwgcmV0Y29kZSwgZW5jb2RpbmcsCisgICAgICAgICAgICBz
dGRpbiwgd29ya2luZ19kaXIpCisKKyAgICBkZWYgX21ha2VfYWRkX2FuZF9hc3NlcnRfdHJlZShz
ZWxmLCBmaWxlcyk6CisgICAgICAgIHRyZWUgPSBzZWxmLm1ha2VfYnJhbmNoX2FuZF90cmVlKCcu
JykKKyAgICAgICAgc2VsZi5idWlsZF90cmVlKGZpbGVzKQorICAgICAgICBmb3IgZiBpbiBmaWxl
czoKKyAgICAgICAgICAgIGlkPXN0cihmKS5yZXBsYWNlKCcvJywgJ18nKSArIF9pZAorICAgICAg
ICAgICAgdHJlZS5hZGQoZiwgaWQpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRyZWUu
cGF0aDJpZChmKSwgaWQpCisgICAgICAgICAgICBzZWxmLmZhaWxVbmxlc3NFeGlzdHMoZikKKyAg
ICAgICAgICAgIHNlbGYuYXNzZXJ0SW5Xb3JraW5nVHJlZShmKQorICAgICAgICByZXR1cm4gdHJl
ZQorCisgICAgZGVmIGFzc2VydEZpbGVzRGVsZXRlZChzZWxmLCBmaWxlcyk6CisgICAgICAgIGZv
ciBmIGluIGZpbGVzOgorICAgICAgICAgICAgaWQ9ZitfaWQKKyAgICAgICAgICAgIHNlbGYuYXNz
ZXJ0Tm90SW5Xb3JraW5nVHJlZShmKQorICAgICAgICAgICAgc2VsZi5mYWlsSWZFeGlzdHMoZikK
KworICAgIGRlZiBhc3NlcnRGaWxlc1VudmVyc2lvbmVkKHNlbGYsIGZpbGVzKToKKyAgICAgICAg
Zm9yIGYgaW4gZmlsZXM6CisgICAgICAgICAgICBzZWxmLmFzc2VydE5vdEluV29ya2luZ1RyZWUo
ZikKKyAgICAgICAgICAgIHNlbGYuZmFpbFVubGVzc0V4aXN0cyhmKQorCisgICAgZGVmIGNoYW5n
ZUZpbGUoc2VsZiwgZmlsZV9uYW1lKToKKyAgICAgICAgZiA9IGZpbGUoZmlsZV9uYW1lLCAnYWIn
KQorICAgICAgICBmLndyaXRlKCJcbnNvbWUgb3RoZXIgbmV3IGNvbnRlbnQhIikKKyAgICAgICAg
Zi5jbG9zZSgpCisKKyAgICBkZWYgcnVuX2J6cl9yZW1vdmVfY2hhbmdlZF9maWxlcyhzZWxmLCBl
cnJvcl9yZWdleGVzLCBmaWxlc190b19yZW1vdmUpOgorICAgICAgICBlcnJvcl9yZWdleGVzLmV4
dGVuZChbIkNhbid0IHJlbW92ZSBjaGFuZ2VkIG9yIHVua25vd24gZmlsZXM6IiwKKyAgICAgICAg
ICAgICdVc2UgLS1rZWVwIHRvIG5vdCBkZWxldGUgdGhlbSwnCisgICAgICAgICAgICAnIG9yIC0t
Zm9yY2UgdG8gZGVsZXRlIHRoZW0gcmVnYXJkbGVzcy4nCisgICAgICAgICAgICBdKQorICAgICAg
ICBzZWxmLnJ1bl9ienJfZXJyb3IoZXJyb3JfcmVnZXhlcywKKyAgICAgICAgICAgICdyZW1vdmUg
JyArICcgJy5qb2luKGZpbGVzX3RvX3JlbW92ZSkpCisgICAgICAgICNzZWUgaWYgd2UgY2FuIGZv
cmNlIGl0IG5vdworICAgICAgICBzZWxmLnJ1bl9ienIoJ3JlbW92ZSAtLWZvcmNlICcgKyAnICcu
am9pbihmaWxlc190b19yZW1vdmUpKQorCisgICAgZGVmIHRlc3RfcmVtb3ZlX25vX2ZpbGVzX3Nw
ZWNpZmllZChzZWxmKToKKyAgICAgICAgdHJlZSA9IHNlbGYuX21ha2VfYWRkX2FuZF9hc3NlcnRf
dHJlZShbXSkKKyAgICAgICAgc2VsZi5ydW5fYnpyX2Vycm9yKFsiYnpyOiBFUlJPUjogU3BlY2lm
eSBvbmUgb3IgbW9yZSBmaWxlcyB0byByZW1vdmUsICIKKyAgICAgICAgICAgICJvciB1c2UgLS1u
ZXcuIl0sICdyZW1vdmUnKQorCisgICAgICAgIHNlbGYucnVuX2J6cl9lcnJvcihbImJ6cjogRVJS
T1I6IE5vIG1hdGNoaW5nIGZpbGVzLiJdLCAncmVtb3ZlIC0tbmV3JykKKworICAgICAgICBzZWxm
LnJ1bl9ienJfZXJyb3IoWyJienI6IEVSUk9SOiBObyBtYXRjaGluZyBmaWxlcy4iXSwKKyAgICAg
ICAgICAgICdyZW1vdmUgLS1uZXcgLicpCisKKyAgICBkZWYgdGVzdF9ybV9vbmVfZmlsZShzZWxm
KToKKyAgICAgICAgdHJlZSA9IHNlbGYuX21ha2VfYWRkX2FuZF9hc3NlcnRfdHJlZShbYV0pCisg
ICAgICAgIHNlbGYucnVuX2J6cigiY29tbWl0IC1tICdhZGRlZCBhJyIpCisgICAgICAgIHNlbGYu
cnVuX2J6cigncm0gYScsIGVycm9yX3JlZ2V4ZXM9WyJkZWxldGVkIGEiXSkKKyAgICAgICAgc2Vs
Zi5hc3NlcnRGaWxlc0RlbGV0ZWQoW2FdKQorCisgICAgZGVmIHRlc3RfcmVtb3ZlX29uZV9maWxl
KHNlbGYpOgorICAgICAgICB0cmVlID0gc2VsZi5fbWFrZV9hZGRfYW5kX2Fzc2VydF90cmVlKFth
XSkKKyAgICAgICAgc2VsZi5ydW5fYnpyKCJjb21taXQgLW0gJ2FkZGVkIGEnIikKKyAgICAgICAg
c2VsZi5ydW5fYnpyKCdyZW1vdmUgYScsIGVycm9yX3JlZ2V4ZXM9WyJkZWxldGVkIGEiXSkKKyAg
ICAgICAgc2VsZi5hc3NlcnRGaWxlc0RlbGV0ZWQoW2FdKQorCisgICAgZGVmIHRlc3RfcmVtb3Zl
X2tlZXBfb25lX2ZpbGUoc2VsZik6CisgICAgICAgIHRyZWUgPSBzZWxmLl9tYWtlX2FkZF9hbmRf
YXNzZXJ0X3RyZWUoW2FdKQorICAgICAgICBzZWxmLnJ1bl9ienIoJ3JlbW92ZSAtLWtlZXAgYScs
IGVycm9yX3JlZ2V4ZXM9WyJyZW1vdmVkIGEiXSkKKyAgICAgICAgc2VsZi5hc3NlcnRGaWxlc1Vu
dmVyc2lvbmVkKFthXSkKKworICAgIGRlZiB0ZXN0X3JlbW92ZV9vbmVfZGVsZXRlZF9maWxlKHNl
bGYpOgorICAgICAgICB0cmVlID0gc2VsZi5fbWFrZV9hZGRfYW5kX2Fzc2VydF90cmVlKFthXSkK
KyAgICAgICAgc2VsZi5ydW5fYnpyKCJjb21taXQgLW0gJ2FkZGVkIGEnIikKKyAgICAgICAgb3Mu
dW5saW5rKGEpCisgICAgICAgIHNlbGYuYXNzZXJ0SW5Xb3JraW5nVHJlZShhKQorICAgICAgICBz
ZWxmLnJ1bl9ienIoJ3JlbW92ZSBhJykKKyAgICAgICAgc2VsZi5hc3NlcnROb3RJbldvcmtpbmdU
cmVlKGEpCisKKyAgICBkZWYgdGVzdF9yZW1vdmVfaW52YWxpZF9maWxlcyhzZWxmKToKKyAgICAg
ICAgc2VsZi5idWlsZF90cmVlKGZpbGVzKQorICAgICAgICB0cmVlID0gc2VsZi5tYWtlX2JyYW5j
aF9hbmRfdHJlZSgnLicpCisgICAgICAgIHNlbGYucnVuX2J6cl9yZW1vdmVfY2hhbmdlZF9maWxl
cyhbJ3Vua25vd246Wy5cc10qeHl6Wy5cc10qYWJjL2RlZiddLAorICAgICAgICAgICAgWycuJywg
J3h5eicsICdhYmMvZGVmJ10pCisKKyAgICBkZWYgdGVzdF9yZW1vdmVfdW52ZXJzaW9uZWRfZmls
ZXMoc2VsZik6CisgICAgICAgIHNlbGYuYnVpbGRfdHJlZShmaWxlcykKKyAgICAgICAgdHJlZSA9
IHNlbGYubWFrZV9icmFuY2hfYW5kX3RyZWUoJy4nKQorICAgICAgICBzZWxmLnJ1bl9ienJfcmVt
b3ZlX2NoYW5nZWRfZmlsZXMoCisgICAgICAgICAgICBbJ3Vua25vd246Wy5cc10qZC9bLlxzXSpi
L2NbLlxzXSpiL1suXHNdKmEnXSwgZmlsZXMpCisKKyAgICBkZWYgdGVzdF9yZW1vdmVfY2hhbmdl
ZF9maWxlcyhzZWxmKToKKyAgICAgICAgdHJlZSA9IHNlbGYuX21ha2VfYWRkX2FuZF9hc3NlcnRf
dHJlZShmaWxlcykKKyAgICAgICAgc2VsZi5ydW5fYnpyKCJjb21taXQgLW0gJ2FkZGVkIGZpbGVz
JyIpCisgICAgICAgIHNlbGYuY2hhbmdlRmlsZShhKQorICAgICAgICBzZWxmLmNoYW5nZUZpbGUo
YykKKyAgICAgICAgc2VsZi5ydW5fYnpyX3JlbW92ZV9jaGFuZ2VkX2ZpbGVzKFsnbW9kaWZpZWQ6
Wy5cc10qYVsuXHNdKmIvYyddLCBmaWxlcykKKworICAgIGRlZiB0ZXN0X3JlbW92ZV9jaGFuZ2Vk
X2ZpbGVzX2Zyb21fY2hpbGRfZGlyKHNlbGYpOgorICAgICAgICB0cmVlID0gc2VsZi5fbWFrZV9h
ZGRfYW5kX2Fzc2VydF90cmVlKGZpbGVzKQorICAgICAgICBzZWxmLnJ1bl9ienIoImNvbW1pdCAt
bSAnYWRkZWQgZmlsZXMnIikKKyAgICAgICAgc2VsZi5jaGFuZ2VGaWxlKGEpCisgICAgICAgIHNl
bGYuY2hhbmdlRmlsZShjKQorICAgICAgICBvcy5jaGRpcignYicpCisgICAgICAgIHNlbGYucnVu
X2J6cl9yZW1vdmVfY2hhbmdlZF9maWxlcyhbJ21vZGlmaWVkOlsuXHNdKmFbLlxzXSpiL2MnXSwK
KyAgICAgICAgICAgIFsnLi4vYScsICdjJywgJy4nLCAnLi4vZCddKQorICAgICAgICBvcy5jaGRp
cignLi4nKQorICAgICAgICBzZWxmLmFzc2VydE5vdEluV29ya2luZ1RyZWUoZmlsZXMpCisgICAg
ICAgIHNlbGYuZmFpbElmRXhpc3RzKGZpbGVzKQorCisgICAgZGVmIHRlc3RfcmVtb3ZlX2tlZXBf
dW52ZXJzaW9uZWRfZmlsZXMoc2VsZik6CisgICAgICAgIHNlbGYuYnVpbGRfdHJlZShmaWxlcykK
KyAgICAgICAgdHJlZSA9IHNlbGYubWFrZV9icmFuY2hfYW5kX3RyZWUoJy4nKQorICAgICAgICBz
ZWxmLnJ1bl9ienIoJ3JlbW92ZSAtLWtlZXAgYScsIGVycm9yX3JlZ2V4ZXM9WyJhIGlzIG5vdCB2
ZXJzaW9uZWQuIl0pCisgICAgICAgIHNlbGYuYXNzZXJ0RmlsZXNVbnZlcnNpb25lZChmaWxlcykK
KworICAgIGRlZiB0ZXN0X3JlbW92ZV9mb3JjZV91bnZlcnNpb25lZF9maWxlcyhzZWxmKToKKyAg
ICAgICAgc2VsZi5idWlsZF90cmVlKGZpbGVzKQorICAgICAgICB0cmVlID0gc2VsZi5tYWtlX2Jy
YW5jaF9hbmRfdHJlZSgnLicpCisgICAgICAgIHNlbGYucnVuX2J6cigncmVtb3ZlIC0tZm9yY2Ug
JyArICcgJy5qb2luKGZpbGVzKSwKKyAgICAgICAgICAgICAgICAgICAgIGVycm9yX3JlZ2V4ZXM9
WyJkZWxldGVkIGEiLCAiZGVsZXRlZCBiIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICJkZWxldGVkIGIvYyIsICJkZWxldGVkIGQiXSkKKyAgICAgICAgc2VsZi5hc3NlcnRG
aWxlc0RlbGV0ZWQoZmlsZXMpCisKKyAgICBkZWYgdGVzdF9yZW1vdmVfZGVsZXRlZF9maWxlcyhz
ZWxmKToKKyAgICAgICAgdHJlZSA9IHNlbGYuX21ha2VfYWRkX2FuZF9hc3NlcnRfdHJlZShmaWxl
cykKKyAgICAgICAgc2VsZi5ydW5fYnpyKCJjb21taXQgLW0gJ2FkZGVkIGZpbGVzJyIpCisgICAg
ICAgIG15X2ZpbGVzPVtmIGZvciBmIGluIGZpbGVzXQorICAgICAgICBteV9maWxlcy5zb3J0KHJl
dmVyc2U9VHJ1ZSkKKyAgICAgICAgZm9yIGYgaW4gbXlfZmlsZXM6CisgICAgICAgICAgICBvc3V0
aWxzLmRlbGV0ZV9hbnkoZikKKyAgICAgICAgc2VsZi5hc3NlcnRJbldvcmtpbmdUcmVlKGZpbGVz
KQorICAgICAgICBzZWxmLmZhaWxJZkV4aXN0cyhmaWxlcykKKyAgICAgICAgc2VsZi5ydW5fYnpy
KCdyZW1vdmUgJyArICcgJy5qb2luKGZpbGVzKSkKKyAgICAgICAgc2VsZi5hc3NlcnROb3RJbldv
cmtpbmdUcmVlKGEpCisgICAgICAgIHNlbGYuZmFpbElmRXhpc3RzKGZpbGVzKQorCisgICAgZGVm
IHRlc3RfcmVtb3ZlX25vbl9leGlzdGluZ19maWxlcyhzZWxmKToKKyAgICAgICAgdHJlZSA9IHNl
bGYuX21ha2VfYWRkX2FuZF9hc3NlcnRfdHJlZShbXSkKKyAgICAgICAgc2VsZi5ydW5fYnpyX3Jl
bW92ZV9jaGFuZ2VkX2ZpbGVzKFsndW5rbm93bjpbLlxzXSpiJ10sIFsnYiddKQorCisgICAgZGVm
IHRlc3RfcmVtb3ZlX2tlZXBfbm9uX2V4aXN0aW5nX2ZpbGVzKHNlbGYpOgorICAgICAgICB0cmVl
ID0gc2VsZi5fbWFrZV9hZGRfYW5kX2Fzc2VydF90cmVlKFtdKQorICAgICAgICBzZWxmLnJ1bl9i
enIoJ3JlbW92ZSAtLWtlZXAgYicsIGVycm9yX3JlZ2V4ZXM9WyJiIGlzIG5vdCB2ZXJzaW9uZWQu
Il0pCisKKyAgICBkZWYgdGVzdF9yZW1vdmVfZmlsZXMoc2VsZik6CisgICAgICAgIHRyZWUgPSBz
ZWxmLl9tYWtlX2FkZF9hbmRfYXNzZXJ0X3RyZWUoZmlsZXMpCisgICAgICAgIHNlbGYucnVuX2J6
cigiY29tbWl0IC1tICdhZGRlZCBmaWxlcyciKQorICAgICAgICBzZWxmLnJ1bl9ienIoJ3JlbW92
ZSBhIGIgYi9jIGQnLAorICAgICAgICAgICAgICAgICAgICAgZXJyb3JfcmVnZXhlcz1bImRlbGV0
ZWQgYSIsICJkZWxldGVkIGIiLCAiZGVsZXRlZCBiL2MiLAorICAgICAgICAgICAgICAgICAgICAg
ImRlbGV0ZWQgZCJdKQorICAgICAgICBzZWxmLmFzc2VydEZpbGVzRGVsZXRlZChmaWxlcykKKwor
ICAgIGRlZiB0ZXN0X3JlbW92ZV9rZWVwX2ZpbGVzKHNlbGYpOgorICAgICAgICB0cmVlID0gc2Vs
Zi5fbWFrZV9hZGRfYW5kX2Fzc2VydF90cmVlKGZpbGVzKQorICAgICAgICBzZWxmLnJ1bl9ienIo
ImNvbW1pdCAtbSAnYWRkZWQgZmlsZXMnIikKKyAgICAgICAgc2VsZi5ydW5fYnpyKCdyZW1vdmUg
LS1rZWVwIGEgYiBiL2MgZCcsCisgICAgICAgICAgICAgICAgICAgICBlcnJvcl9yZWdleGVzPVsi
cmVtb3ZlZCBhIiwgInJlbW92ZWQgYiIsICJyZW1vdmVkIGIvYyIsCisgICAgICAgICAgICAgICAg
ICAgICAicmVtb3ZlZCBkIl0pCisgICAgICAgIHNlbGYuYXNzZXJ0RmlsZXNVbnZlcnNpb25lZChm
aWxlcykKKworICAgIGRlZiB0ZXN0X3JlbW92ZV93aXRoX25ldyhzZWxmKToKKyAgICAgICAgdHJl
ZSA9IHNlbGYuX21ha2VfYWRkX2FuZF9hc3NlcnRfdHJlZShmaWxlcykKKyAgICAgICAgc2VsZi5y
dW5fYnpyKCdyZW1vdmUgLS1uZXcgLS1rZWVwJywKKyAgICAgICAgICAgICAgICAgICAgIGVycm9y
X3JlZ2V4ZXM9WyJyZW1vdmVkIGEiLCAicmVtb3ZlZCBiIiwgInJlbW92ZWQgYi9jIl0pCisgICAg
ICAgIHNlbGYuYXNzZXJ0RmlsZXNVbnZlcnNpb25lZChmaWxlcykKKworICAgIGRlZiB0ZXN0X3Jl
bW92ZV93aXRoX25ld19pbl9kaXIxKHNlbGYpOgorICAgICAgICB0cmVlID0gc2VsZi5fbWFrZV9h
ZGRfYW5kX2Fzc2VydF90cmVlKGZpbGVzKQorICAgICAgICBzZWxmLnJ1bl9ienIoJ3JlbW92ZSAt
LW5ldyAtLWtlZXAgYiBiL2MnLAorICAgICAgICAgICAgICAgICAgICAgZXJyb3JfcmVnZXhlcz1b
InJlbW92ZWQgYiIsICJyZW1vdmVkIGIvYyJdKQorICAgICAgICB0cmVlID0gV29ya2luZ1RyZWUu
b3BlbignLicpCisgICAgICAgIHNlbGYuYXNzZXJ0SW5Xb3JraW5nVHJlZShhKQorICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKHRyZWUucGF0aDJpZChhKSwgYSArIF9pZCkKKyAgICAgICAgc2VsZi5h
c3NlcnRGaWxlc1VudmVyc2lvbmVkKFtiLGNdKQorCisgICAgZGVmIHRlc3RfcmVtb3ZlX3dpdGhf
bmV3X2luX2RpcjIoc2VsZik6CisgICAgICAgIHRyZWUgPSBzZWxmLl9tYWtlX2FkZF9hbmRfYXNz
ZXJ0X3RyZWUoZmlsZXMpCisgICAgICAgIHNlbGYucnVuX2J6cigncmVtb3ZlIC0tbmV3IC0ta2Vl
cCAuJywKKyAgICAgICAgICAgICAgICAgICAgIGVycm9yX3JlZ2V4ZXM9WyJyZW1vdmVkIGEiLCAi
cmVtb3ZlZCBiIiwgInJlbW92ZWQgYi9jIl0pCisgICAgICAgIHRyZWUgPSBXb3JraW5nVHJlZS5v
cGVuKCcuJykKKyAgICAgICAgc2VsZi5hc3NlcnRGaWxlc1VudmVyc2lvbmVkKGZpbGVzKQoK

=== modified file bzrlib/tests/blackbox/test_revision_info.py // last-changed:a
... bentley@panoramicfeedback.com-20070410210517-0m7mhl5d2fhs66u5 // encoding:b
... ase64
LS0tIGJ6cmxpYi90ZXN0cy9ibGFja2JveC90ZXN0X3JldmlzaW9uX2luZm8ucHkKKysrIGJ6cmxp
Yi90ZXN0cy9ibGFja2JveC90ZXN0X3JldmlzaW9uX2luZm8ucHkKQEAgLTE3LDExICsxNywxMSBA
QAogaW1wb3J0IG9zCiAKIGZyb20gYnpybGliLmVycm9ycyBpbXBvcnQgQnpyQ29tbWFuZEVycm9y
LCBOb1N1Y2hSZXZpc2lvbgotZnJvbSBienJsaWIudGVzdHMgaW1wb3J0IFRlc3RDYXNlV2l0aFRy
YW5zcG9ydAorZnJvbSBienJsaWIudGVzdHMuYmxhY2tib3ggaW1wb3J0IEV4dGVybmFsQmFzZQog
ZnJvbSBienJsaWIud29ya2luZ3RyZWUgaW1wb3J0IFdvcmtpbmdUcmVlCiAKIAotY2xhc3MgVGVz
dFJldmlzaW9uSW5mbyhUZXN0Q2FzZVdpdGhUcmFuc3BvcnQpOgorY2xhc3MgVGVzdFJldmlzaW9u
SW5mbyhFeHRlcm5hbEJhc2UpOgogICAgIAogICAgIGRlZiBjaGVja19lcnJvcihzZWxmLCBvdXRw
dXQsICphcmdzKToKICAgICAgICAgIiIiVmVyaWZ5IHRoYXQgdGhlIGV4cGVjdGVkIGVycm9yIG1h
dGNoZXMgd2hhdCBienIgc2F5cy4KQEAgLTMxLDE0ICszMSw2IEBACiAgICAgICAgICIiIgogICAg
ICAgICBzZWxmLmFzc2VydENvbnRhaW5zUmUoc2VsZi5ydW5fYnpyX2NhcHR1cmVkKGFyZ3MsIHJl
dGNvZGU9MylbMV0sIG91dHB1dCkKIAotICAgIGRlZiBjaGVja19vdXRwdXQoc2VsZiwgb3V0cHV0
LCAqYXJncyk6Ci0gICAgICAgICIiIlZlcmlmeSB0aGF0IHRoZSBleHBlY3RlZCBvdXRwdXQgbWF0
Y2hlcyB3aGF0IGJ6ciBzYXlzLgotICAgICAgICAKLSAgICAgICAgVGhlIG91dHB1dCBpcyBzdXBw
bGllZCBmaXJzdCwgc28gdGhhdCB5b3UgY2FuIHN1cHBseSBhIHZhcmlhYmxlCi0gICAgICAgIG51
bWJlciBvZiBhcmd1bWVudHMgdG8gYnpyLgotICAgICAgICAiIiIKLSAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbHMoc2VsZi5ydW5fYnpyX2NhcHR1cmVkKGFyZ3MpWzBdLCBvdXRwdXQpCi0KICAgICBk
ZWYgdGVzdF9yZXZpc2lvbl9pbmZvKHNlbGYpOgogICAgICAgICAiIiJUZXN0IHRoYXQgJ2J6ciBy
ZXZpc2lvbi1pbmZvJyByZXBvcnRzIHRoZSBjb3JyZWN0IHRoaW5nLiIiIgogICAgICAgICB3dCA9
IHNlbGYubWFrZV9icmFuY2hfYW5kX3RyZWUoJy4nKQpAQCAtODAsMzIgKzcyLDMgQEAKICAgICAg
ICAgCiAgICAgICAgIHNlbGYuY2hlY2tfb3V0cHV0KCcgICAxIGFAci0wLTFcbicsICdyZXZpc2lv
bi1pbmZvJywgJy1yJywgJ3JldmlkOmFAci0wLTEnKQogICAgICAgICBzZWxmLmNoZWNrX291dHB1
dCgnICAgMiBhQHItMC0yXG4nLCAncmV2aXNpb24taW5mbycsICctLXJldmlzaW9uJywgJ3Jldmlk
OmFAci0wLTInKQotCi0gICAgZGVmIHRlc3RfY2F0X3JldmlzaW9uKHNlbGYpOgotICAgICAgICAi
IiJUZXN0IGJ6ciBjYXQtcmV2aXNpb24uCi0gICAgICAgICIiIgotICAgICAgICB3dCA9IHNlbGYu
bWFrZV9icmFuY2hfYW5kX3RyZWUoJy4nKQotICAgICAgICByID0gd3QuYnJhbmNoLnJlcG9zaXRv
cnkKLQotICAgICAgICB3dC5jb21taXQoJ0NvbW1pdCBvbmUnLCByZXZfaWQ9J2FAci0wLTEnKQot
ICAgICAgICB3dC5jb21taXQoJ0NvbW1pdCB0d28nLCByZXZfaWQ9J2FAci0wLTInKQotICAgICAg
ICB3dC5jb21taXQoJ0NvbW1pdCB0aHJlZScsIHJldl9pZD0nYUByLTAtMycpCi0KLSAgICAgICAg
cmV2cyA9IHsKLSAgICAgICAgICAgIDE6ci5nZXRfcmV2aXNpb25feG1sKCdhQHItMC0xJyksCi0g
ICAgICAgICAgICAyOnIuZ2V0X3JldmlzaW9uX3htbCgnYUByLTAtMicpLAotICAgICAgICAgICAg
MzpyLmdldF9yZXZpc2lvbl94bWwoJ2FAci0wLTMnKSwKLSAgICAgICAgfQotCi0gICAgICAgIHNl
bGYuY2hlY2tfb3V0cHV0KHJldnNbMV0sICdjYXQtcmV2aXNpb24nLCAnYUByLTAtMScpCi0gICAg
ICAgIHNlbGYuY2hlY2tfb3V0cHV0KHJldnNbMl0sICdjYXQtcmV2aXNpb24nLCAnYUByLTAtMicp
Ci0gICAgICAgIHNlbGYuY2hlY2tfb3V0cHV0KHJldnNbM10sICdjYXQtcmV2aXNpb24nLCAnYUBy
LTAtMycpCi0KLSAgICAgICAgc2VsZi5jaGVja19vdXRwdXQocmV2c1sxXSwgJ2NhdC1yZXZpc2lv
bicsICctcicsICcxJykKLSAgICAgICAgc2VsZi5jaGVja19vdXRwdXQocmV2c1syXSwgJ2NhdC1y
ZXZpc2lvbicsICctcicsICcyJykKLSAgICAgICAgc2VsZi5jaGVja19vdXRwdXQocmV2c1szXSwg
J2NhdC1yZXZpc2lvbicsICctcicsICczJykKLQotICAgICAgICBzZWxmLmNoZWNrX291dHB1dChy
ZXZzWzFdLCAnY2F0LXJldmlzaW9uJywgJy1yJywgJ3JldmlkOmFAci0wLTEnKQotICAgICAgICBz
ZWxmLmNoZWNrX291dHB1dChyZXZzWzJdLCAnY2F0LXJldmlzaW9uJywgJy1yJywgJ3JldmlkOmFA
ci0wLTInKQotICAgICAgICBzZWxmLmNoZWNrX291dHB1dChyZXZzWzNdLCAnY2F0LXJldmlzaW9u
JywgJy1yJywgJ3JldmlkOmFAci0wLTMnKQotCgo=

=== modified file bzrlib/tests/blackbox/test_selftest.py // last-changed:mbp@so
... urcefrog.net-20070504101317-n1h3roy8lv7e06ng // encoding:base64
LS0tIGJ6cmxpYi90ZXN0cy9ibGFja2JveC90ZXN0X3NlbGZ0ZXN0LnB5CisrKyBienJsaWIvdGVz
dHMvYmxhY2tib3gvdGVzdF9zZWxmdGVzdC5weQpAQCAtMTcsNiArMTcsNyBAQAogIiIiVUkgdGVz
dHMgZm9yIHRoZSB0ZXN0IGZyYW1ld29yay4iIiIKIAogaW1wb3J0IG9zCitpbXBvcnQgcmUKIGlt
cG9ydCBzaWduYWwKIGltcG9ydCBzeXMKIApAQCAtMTAyLDYgKzEwMyw3IEBACiAgICAgICAgIHNl
bGYuZW5jb2RpbmcgPSBlbmNvZGluZwogICAgICAgICBzZWxmLnN0ZGluID0gc3RkaW4KICAgICAg
ICAgc2VsZi53b3JraW5nX2RpciA9IHdvcmtpbmdfZGlyCisgICAgICAgIHJldHVybiAnJywgJycK
IAogICAgIGRlZiB0ZXN0X2FyZ3Moc2VsZik6CiAgICAgICAgICIiIlRlc3QgdGhhdCBydW5fYnpy
IHBhc3NlcyBhcmdzIGNvcnJlY3RseSB0byBydW5fYnpyX2NhcHR1cmVkIiIiCkBAIC00OTEsMyAr
NDkzLDg5IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKFsnYnpyJywnYnpybGliJywnc2V0
dXAucHknLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3Rlc3Q5OTk5LnRtcCcsJ3Rlc3Rz
J10sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZnRlcikKKworCitjbGFzcyBUZXN0U2Vs
ZnRlc3RMaXN0T25seShUZXN0Q2FzZSk6CisKKyAgICBAc3RhdGljbWV0aG9kCisgICAgZGVmIF9w
YXJzZV90ZXN0X2xpc3QobGluZXMsIG5ld2xpbmVzX2luX2hlYWRlcj0xKToKKyAgICAgICAgIlBh
cnNlIGEgbGlzdCBvZiBsaW5lcyBpbnRvIGEgdHVwbGUgb2YgMyBsaXN0cyAoaGVhZGVyLGJvZHks
Zm9vdGVyKS4iCisKKyAgICAgICAgaW5faGVhZGVyID0gVHJ1ZQorICAgICAgICBpbl9mb290ZXIg
PSBGYWxzZQorICAgICAgICBoZWFkZXIgPSBbXQorICAgICAgICBib2R5ID0gW10KKyAgICAgICAg
Zm9vdGVyID0gW10KKyAgICAgICAgaGVhZGVyX25ld2xpbmVzX2ZvdW5kID0gMCAKKyAgICAgICAg
Zm9yIGxpbmUgaW4gbGluZXM6CisgICAgICAgICAgICBpZiBpbl9oZWFkZXI6CisgICAgICAgICAg
ICAgICAgaWYgbGluZSA9PSAnJzoKKyAgICAgICAgICAgICAgICAgICAgaGVhZGVyX25ld2xpbmVz
X2ZvdW5kICs9IDEKKyAgICAgICAgICAgICAgICAgICAgaWYgaGVhZGVyX25ld2xpbmVzX2ZvdW5k
ID49IG5ld2xpbmVzX2luX2hlYWRlcjoKKyAgICAgICAgICAgICAgICAgICAgICAgIGluX2hlYWRl
ciA9IEZhbHNlCisgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAg
ICAgIGhlYWRlci5hcHBlbmQobGluZSkKKyAgICAgICAgICAgIGVsaWYgbm90IGluX2Zvb3RlcjoK
KyAgICAgICAgICAgICAgICBpZiBsaW5lLnN0YXJ0c3dpdGgoJy0tLS0tLS0nKToKKyAgICAgICAg
ICAgICAgICAgICAgaW5fZm9vdGVyID0gVHJ1ZQorICAgICAgICAgICAgICAgIGVsc2U6CisgICAg
ICAgICAgICAgICAgICAgIGJvZHkuYXBwZW5kKGxpbmUpCisgICAgICAgICAgICBlbHNlOgorICAg
ICAgICAgICAgICAgIGZvb3Rlci5hcHBlbmQobGluZSkKKyAgICAgICAgIyBJZiB0aGUgbGFzdCBi
b2R5IGxpbmUgaXMgYmxhbmssIGRyb3AgaXQgb2ZmIHRoZSBsaXN0CisgICAgICAgIGlmIGxlbihi
b2R5KSA+IDAgYW5kIGJvZHlbLTFdID09ICcnOgorICAgICAgICAgICAgYm9keS5wb3AoKSAgICAg
ICAgICAgICAgICAKKyAgICAgICAgcmV0dXJuIChoZWFkZXIsYm9keSxmb290ZXIpCisKKyAgICBk
ZWYgdGVzdF9saXN0X29ubHkoc2VsZik6CisgICAgICAgICMgY2hlY2sgdGhhdCBienIgc2VsZnRl
c3QgLS1saXN0LW9ubHkgd29ya3MgY29ycmVjdGx5CisgICAgICAgIG91dCxlcnIgPSBzZWxmLnJ1
bl9ienJfY2FwdHVyZWQoWydzZWxmdGVzdCcsICdzZWxmdGVzdCcsCisgICAgICAgICAgICAnLS1s
aXN0LW9ubHknXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFbmRzV2l0aChlcnIsICd0ZXN0cyBwYXNz
ZWRcbicpCisgICAgICAgIChoZWFkZXIsYm9keSxmb290ZXIpID0gc2VsZi5fcGFyc2VfdGVzdF9s
aXN0KG91dC5zcGxpdGxpbmVzKCkpCisgICAgICAgIG51bV90ZXN0cyA9IGxlbihib2R5KQorICAg
ICAgICBzZWxmLmFzc2VydENvbnRhaW5zUmUoZm9vdGVyWzBdLCAnTGlzdGVkICVzIHRlc3RzIGlu
JyAlIG51bV90ZXN0cykKKworICAgIGRlZiB0ZXN0X2xpc3Rfb25seV9maWx0ZXJlZChzZWxmKToK
KyAgICAgICAgIyBjaGVjayB0aGF0IGEgZmlsdGVyZWQgLS1saXN0LW9ubHkgd29ya3MsIGJvdGgg
aW5jbHVkZSBhbmQgZXhjbHVkZQorICAgICAgICBvdXRfYWxsLGVycl9hbGwgPSBzZWxmLnJ1bl9i
enJfY2FwdHVyZWQoWydzZWxmdGVzdCcsICctLWxpc3Qtb25seSddKQorICAgICAgICB0ZXN0c19h
bGwgPSBzZWxmLl9wYXJzZV90ZXN0X2xpc3Qob3V0X2FsbC5zcGxpdGxpbmVzKCkpWzFdCisgICAg
ICAgIG91dF9pbmNsLGVycl9pbmNsID0gc2VsZi5ydW5fYnpyX2NhcHR1cmVkKFsnc2VsZnRlc3Qn
LCAnLS1saXN0LW9ubHknLAorICAgICAgICAgICdzZWxmdGVzdCddKQorICAgICAgICB0ZXN0c19p
bmNsID0gc2VsZi5fcGFyc2VfdGVzdF9saXN0KG91dF9pbmNsLnNwbGl0bGluZXMoKSlbMV0KKyAg
ICAgICAgc2VsZi5hc3NlcnRTdWJzZXQodGVzdHNfaW5jbCwgdGVzdHNfYWxsKQorICAgICAgICBv
dXRfZXhjbCxlcnJfZXhjbCA9IHNlbGYucnVuX2J6cl9jYXB0dXJlZChbJ3NlbGZ0ZXN0JywgJy0t
bGlzdC1vbmx5JywKKyAgICAgICAgICAnLS1leGNsdWRlJywgJ3NlbGZ0ZXN0J10pCisgICAgICAg
IHRlc3RzX2V4Y2wgPSBzZWxmLl9wYXJzZV90ZXN0X2xpc3Qob3V0X2V4Y2wuc3BsaXRsaW5lcygp
KVsxXQorICAgICAgICBzZWxmLmFzc2VydFN1YnNldCh0ZXN0c19leGNsLCB0ZXN0c19hbGwpCisg
ICAgICAgIHNldF9pbmNsID0gc2V0KHRlc3RzX2luY2wpCisgICAgICAgIHNldF9leGNsID0gc2V0
KHRlc3RzX2V4Y2wpCisgICAgICAgIGludGVyc2VjdGlvbiA9IHNldF9pbmNsLmludGVyc2VjdGlv
bihzZXRfZXhjbCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoMCwgbGVuKGludGVyc2VjdGlv
bikpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKGxlbih0ZXN0c19hbGwpLCBsZW4odGVzdHNf
aW5jbCkgKyBsZW4odGVzdHNfZXhjbCkpCisKKyAgICBkZWYgdGVzdF9saXN0X29ubHlfcmFuZG9t
KHNlbGYpOgorICAgICAgICAjIGNoZWNrIHRoYXQgLS1yYW5kb21pemUgd29ya3MgY29ycmVjdGx5
CisgICAgICAgIG91dF9hbGwsZXJyX2FsbCA9IHNlbGYucnVuX2J6cl9jYXB0dXJlZChbJ3NlbGZ0
ZXN0JywgJy0tbGlzdC1vbmx5JywKKyAgICAgICAgICAgICdzZWxmdGVzdCddKQorICAgICAgICB0
ZXN0c19hbGwgPSBzZWxmLl9wYXJzZV90ZXN0X2xpc3Qob3V0X2FsbC5zcGxpdGxpbmVzKCkpWzFd
CisgICAgICAgICMgWFhYOiBJdCBsb29rcyBsaWtlIHRoZXJlIGFyZSBzb21lIG9yZGVycyBmb3Ig
Z2VuZXJhdGluZyB0ZXN0cyB0aGF0CisgICAgICAgICMgZmFpbCBhcyBvZiAyMDA3MDUwNCAtIG1h
eWJlIGJlY2F1c2Ugb2YgaW1wb3J0IG9yZGVyIGRlcGVuZGVuY2llcy4KKyAgICAgICAgIyBTbyB1
bmZvcnR1bmF0ZWx5IHRoaXMgd2lsbCByYXJlbHkgaW50ZXJtaXR0ZW50bHkgZmFpbCBhdCB0aGUg
bW9tZW50LgorICAgICAgICAjIC0tIG1icCAyMDA3MDUwNAorICAgICAgICBvdXRfcmFuZCxlcnJf
cmFuZCA9IHNlbGYucnVuX2J6cl9jYXB0dXJlZChbJ3NlbGZ0ZXN0JywgJy0tbGlzdC1vbmx5JywK
KyAgICAgICAgICAgICdzZWxmdGVzdCcsICctLXJhbmRvbWl6ZScsICdub3cnXSkKKyAgICAgICAg
KGhlYWRlcl9yYW5kLHRlc3RzX3JhbmQsZHVtbXkpID0gc2VsZi5fcGFyc2VfdGVzdF9saXN0KAor
ICAgICAgICAgICAgb3V0X3JhbmQuc3BsaXRsaW5lcygpLCAyKQorICAgICAgICBzZWxmLmFzc2Vy
dE5vdEVxdWFsKHRlc3RzX2FsbCwgdGVzdHNfcmFuZCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bChzb3J0ZWQodGVzdHNfYWxsKSwgc29ydGVkKHRlc3RzX3JhbmQpKQorICAgICAgICAjIENoZWNr
IHRoYXQgdGhlIHNlZWQgY2FuIGJlIHJldXNlZCB0byBnZXQgdGhlIGV4YWN0IHNhbWUgb3JkZXIK
KyAgICAgICAgc2VlZF9yZSA9IHJlLmNvbXBpbGUoJ1JhbmRvbWl6aW5nIHRlc3Qgb3JkZXIgdXNp
bmcgc2VlZCAoXHcrKScpCisgICAgICAgIG1hdGNoX29iaiA9IHNlZWRfcmUuc2VhcmNoKGhlYWRl
cl9yYW5kWy0xXSkKKyAgICAgICAgc2VlZCA9IG1hdGNoX29iai5ncm91cCgxKQorICAgICAgICBv
dXRfcmFuZDIsZXJyX3JhbmQyID0gc2VsZi5ydW5fYnpyX2NhcHR1cmVkKFsnc2VsZnRlc3QnLCAn
LS1saXN0LW9ubHknLAorICAgICAgICAgICAgJ3NlbGZ0ZXN0JywgJy0tcmFuZG9taXplJywgc2Vl
ZF0pCisgICAgICAgIChoZWFkZXJfcmFuZDIsdGVzdHNfcmFuZDIsZHVtbXkpID0gc2VsZi5fcGFy
c2VfdGVzdF9saXN0KAorICAgICAgICAgICAgb3V0X3JhbmQyLnNwbGl0bGluZXMoKSwgMikKKyAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0ZXN0c19yYW5kLCB0ZXN0c19yYW5kMikKKwoK

=== modified file bzrlib/tests/blackbox/test_serve.py // last-changed:andrew.be
... nnetts@canonical.com-20070413054830-3kb1ryz3yiwo7vpv // encoding:base64
LS0tIGJ6cmxpYi90ZXN0cy9ibGFja2JveC90ZXN0X3NlcnZlLnB5CisrKyBienJsaWIvdGVzdHMv
YmxhY2tib3gvdGVzdF9zZXJ2ZS5weQpAQCAtMzAsOCArMzAsOSBAQAogZnJvbSBienJsaWIuYnJh
bmNoIGltcG9ydCBCcmFuY2gKIGZyb20gYnpybGliLmJ6cmRpciBpbXBvcnQgQnpyRGlyCiBmcm9t
IGJ6cmxpYi5lcnJvcnMgaW1wb3J0IFBhcmFtaWtvTm90UHJlc2VudAorZnJvbSBienJsaWIuc21h
cnQgaW1wb3J0IG1lZGl1bQogZnJvbSBienJsaWIudGVzdHMgaW1wb3J0IFRlc3RDYXNlV2l0aFRy
YW5zcG9ydCwgVGVzdFNraXBwZWQKLWZyb20gYnpybGliLnRyYW5zcG9ydCBpbXBvcnQgZ2V0X3Ry
YW5zcG9ydCwgc21hcnQKK2Zyb20gYnpybGliLnRyYW5zcG9ydCBpbXBvcnQgZ2V0X3RyYW5zcG9y
dCwgcmVtb3RlCiAKIAogY2xhc3MgVGVzdEJ6clNlcnZlKFRlc3RDYXNlV2l0aFRyYW5zcG9ydCk6
CkBAIC02OCw5ICs2OSwxMCBAQAogICAgICAgICAjIENvbm5lY3QgdG8gdGhlIHNlcnZlcgogICAg
ICAgICAjIFdlIHVzZSB0aGlzIHVybCBiZWNhdXNlIHdoaWxlIHRoaXMgaXMgbm8gdmFsaWQgVVJM
IHRvIGNvbm5lY3QgdG8gdGhpcwogICAgICAgICAjIHNlcnZlciBpbnN0YW5jZSwgdGhlIHRyYW5z
cG9ydCBuZWVkcyBhIFVSTC4KLSAgICAgICAgbWVkaXVtID0gc21hcnQuU21hcnRTaW1wbGVQaXBl
c0NsaWVudE1lZGl1bSgKKyAgICAgICAgY2xpZW50X21lZGl1bSA9IG1lZGl1bS5TbWFydFNpbXBs
ZVBpcGVzQ2xpZW50TWVkaXVtKAogICAgICAgICAgICAgcHJvY2Vzcy5zdGRvdXQsIHByb2Nlc3Mu
c3RkaW4pCi0gICAgICAgIHRyYW5zcG9ydCA9IHNtYXJ0LlNtYXJ0VHJhbnNwb3J0KCdienI6Ly9s
b2NhbGhvc3QvJywgbWVkaXVtPW1lZGl1bSkKKyAgICAgICAgdHJhbnNwb3J0ID0gcmVtb3RlLlJl
bW90ZVRyYW5zcG9ydCgKKyAgICAgICAgICAgICdienI6Ly9sb2NhbGhvc3QvJywgbWVkaXVtPWNs
aWVudF9tZWRpdW0pCiAgICAgICAgIHJldHVybiBwcm9jZXNzLCB0cmFuc3BvcnQKIAogICAgIGRl
ZiBzdGFydF9zZXJ2ZXJfcG9ydChzZWxmLCBleHRyYV9vcHRpb25zPSgpKToKCg==

=== modified file bzrlib/tests/blackbox/test_status.py // last-changed:bialix@u
... kr.net-20070414182636-cu2loiemveb20ljh // encoding:base64
LS0tIGJ6cmxpYi90ZXN0cy9ibGFja2JveC90ZXN0X3N0YXR1cy5weQorKysgYnpybGliL3Rlc3Rz
L2JsYWNrYm94L3Rlc3Rfc3RhdHVzLnB5CkBAIC0yNDQsMTEgKzI0NCwxMiBAQAogICAgICAgICAg
ICAgdHJlZS5jb21taXQoJ2FkZCB0ZXN0IGZpbGUnKQogICAgICAgICAgICAgIyBzaW11bGF0ZSB3
aGF0IGhhcHBlbnMgYWZ0ZXIgYSByZW1vdGUgcHVzaAogICAgICAgICAgICAgdHJlZS5zZXRfbGFz
dF9yZXZpc2lvbigiMCIpCi0gICAgICAgICAgICBvdXQsIGVyciA9IHNlbGYucnVuX2J6cignc3Rh
dHVzJykKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoIndvcmtpbmcgdHJlZSBpcyBvdXQg
b2YgZGF0ZSwgcnVuICdienIgdXBkYXRlJ1xuIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgZXJyKQogICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgIyBiZWZvcmUgcnVuIGFub3Ro
ZXIgY29tbWFuZHMgd2Ugc2hvdWxkIHVubG9jayB0cmVlCiAgICAgICAgICAgICB0cmVlLnVubG9j
aygpCisgICAgICAgIG91dCwgZXJyID0gc2VsZi5ydW5fYnpyKCdzdGF0dXMnKQorICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKCJ3b3JraW5nIHRyZWUgaXMgb3V0IG9mIGRhdGUsIHJ1biAnYnpyIHVw
ZGF0ZSdcbiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgZXJyKQogCiAKIGNsYXNzIENoZWNr
b3V0U3RhdHVzKEJyYW5jaFN0YXR1cyk6Cgo=

=== modified file bzrlib/tests/blackbox/test_too_much.py // last-changed:john@a
... rbash-meinel.com-20070430220441-wt7s23q3s2y2sg57 // encoding:base64
LS0tIGJ6cmxpYi90ZXN0cy9ibGFja2JveC90ZXN0X3Rvb19tdWNoLnB5CisrKyBienJsaWIvdGVz
dHMvYmxhY2tib3gvdGVzdF90b29fbXVjaC5weQpAQCAtNDM0LDcgKzQzNCw3IEBACiAgICAgICAg
IHJ1bmJ6cigiaGVscCBzbGFydGliYXJ0ZmFzdCIsIDMpCiAKICAgICAgICAgb3V0ID0gY2FwdHVy
ZSgiaGVscCBjaSIpCi0gICAgICAgIG91dC5pbmRleCgnYWxpYXNlczogJykKKyAgICAgICAgb3V0
LmluZGV4KCdhbGlhc2VzOiBjaSwgY2hlY2tpblxuJykKIAogICAgICAgICBmID0gZmlsZSgnaGVs
bG8udHh0JywgJ3d0JykKICAgICAgICAgZi53cml0ZSgnc29tZSBuaWNlIG5ldyBjb250ZW50XG4n
KQpAQCAtNTIyLDEzICs1MjIsMTMgQEAKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKHNl
bGYuY2FwdHVyZSgicmVscGF0aCBkMi9saW5rMSIpLCAiZDIvbGluazFcbiIpCiAgICAgICAgICAg
ICBydW5ienIoWydjb21taXQnLCAnLW0nLCAnNDogcmV0YXJnZXQgb2YgdHdvIGxpbmtzJ10pCiAg
ICAgCi0gICAgICAgICAgICBydW5ienIoJ3JlbW92ZSBkMi9saW5rMScpCisgICAgICAgICAgICBy
dW5ienIoJ3JlbW92ZSAtLWtlZXAgZDIvbGluazEnKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbHMoc2VsZi5jYXB0dXJlKCd1bmtub3ducycpLCAnZDIvbGluazFcbicpCiAgICAgICAgICAg
ICBydW5ienIoWydjb21taXQnLCAnLW0nLCAnNTogcmVtb3ZlIGQyL2xpbmsxJ10pCiAgICAgICAg
ICAgICAjIHRyeSB3aXRoIHRoZSBybSBhbGlhcwogICAgICAgICAgICAgcnVuYnpyKCdhZGQgZDIv
bGluazEnKQogICAgICAgICAgICAgcnVuYnpyKFsnY29tbWl0JywgJy1tJywgJzY6IGFkZCBkMi9s
aW5rMSddKQotICAgICAgICAgICAgcnVuYnpyKCdybSBkMi9saW5rMScpCisgICAgICAgICAgICBy
dW5ienIoJ3JtIC0ta2VlcCBkMi9saW5rMScpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFs
cyhzZWxmLmNhcHR1cmUoJ3Vua25vd25zJyksICdkMi9saW5rMVxuJykKICAgICAgICAgICAgIHJ1
bmJ6cihbJ2NvbW1pdCcsICctbScsICc3OiByZW1vdmUgZDIvbGluazEnXSkKICAgICAKCg==

=== modified file bzrlib/tests/branch_implementations/__init__.py // last-chang
... ed:john@arbash-meinel.com-20070424194505-mv5dwjw0mx4tfpfs // encoding:base6
... 4
LS0tIGJ6cmxpYi90ZXN0cy9icmFuY2hfaW1wbGVtZW50YXRpb25zL19faW5pdF9fLnB5CisrKyBi
enJsaWIvdGVzdHMvYnJhbmNoX2ltcGxlbWVudGF0aW9ucy9fX2luaXRfXy5weQpAQCAtMjQsMjYg
KzI0LDkxIEBACiByYXRoZXIgdGhhbiBpbiB0ZXN0cy9icmFuY2hfaW1wbGVtZW50YXRpb25zLyou
cHkuCiAiIiIKIAorZnJvbSBienJsaWIgaW1wb3J0ICgKKyAgICBlcnJvcnMsCisgICAgdGVzdHMs
CisgICAgKQogZnJvbSBienJsaWIuYnJhbmNoIGltcG9ydCAoQnJhbmNoRm9ybWF0LAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgQnJhbmNoVGVzdFByb3ZpZGVyQWRhcHRlciwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIF9sZWdhY3lfZm9ybWF0cywKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICkKLWZyb20gYnpybGliLnRlc3RzIGltcG9ydCAoCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgIGFkYXB0X21vZHVsZXMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHRf
dHJhbnNwb3J0LAotICAgICAgICAgICAgICAgICAgICAgICAgICBUZXN0TG9hZGVyLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICBUZXN0U3VpdGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICkKK2Zyb20gYnpybGliLnJlbW90ZSBpbXBvcnQgUmVtb3RlQnJhbmNoRm9ybWF0LCBSZW1vdGVC
enJEaXJGb3JtYXQKK2Zyb20gYnpybGliLnNtYXJ0LnNlcnZlciBpbXBvcnQgKAorICAgIFNtYXJ0
VENQU2VydmVyX2Zvcl90ZXN0aW5nLAorICAgIFJlYWRvbmx5U21hcnRUQ1BTZXJ2ZXJfZm9yX3Rl
c3RpbmcsCisgICAgKQorZnJvbSBienJsaWIudGVzdHMuYnpyZGlyX2ltcGxlbWVudGF0aW9ucy50
ZXN0X2J6cmRpciBpbXBvcnQgVGVzdENhc2VXaXRoQnpyRGlyCitmcm9tIGJ6cmxpYi50cmFuc3Bv
cnQubWVtb3J5IGltcG9ydCBNZW1vcnlTZXJ2ZXIKKworCitjbGFzcyBUZXN0Q2FzZVdpdGhCcmFu
Y2goVGVzdENhc2VXaXRoQnpyRGlyKToKKyAgICAiIiJUaGlzIGhlbHBlciB3aWxsIGJlIGFkYXB0
ZWQgZm9yIGVhY2ggYnJhbmNoX2ltcGxlbWVudGF0aW9uIHRlc3QuIiIiCisKKyAgICBkZWYgc2V0
VXAoc2VsZik6CisgICAgICAgIHN1cGVyKFRlc3RDYXNlV2l0aEJyYW5jaCwgc2VsZikuc2V0VXAo
KQorICAgICAgICBzZWxmLmJyYW5jaCA9IE5vbmUKKworICAgIGRlZiBnZXRfYnJhbmNoKHNlbGYp
OgorICAgICAgICBpZiBzZWxmLmJyYW5jaCBpcyBOb25lOgorICAgICAgICAgICAgc2VsZi5icmFu
Y2ggPSBzZWxmLm1ha2VfYnJhbmNoKCcnKQorICAgICAgICByZXR1cm4gc2VsZi5icmFuY2gKKwor
ICAgIGRlZiBtYWtlX2JyYW5jaChzZWxmLCByZWxwYXRoLCBmb3JtYXQ9Tm9uZSk6CisgICAgICAg
IHJlcG8gPSBzZWxmLm1ha2VfcmVwb3NpdG9yeShyZWxwYXRoLCBmb3JtYXQ9Zm9ybWF0KQorICAg
ICAgICAjIGZpeG1lIFJCQyAyMDA2MDIxMCB0aGlzIGlzbnQgbmVjZXNzYXJpbHkgYSBmaXhhYmxl
IHRoaW5nLAorICAgICAgICAjIFNraXBwZWQgaXMgdGhlIHdyb25nIGV4Y2VwdGlvbiB0byByYWlz
ZS4KKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgcmV0dXJuIHNlbGYuYnJhbmNoX2Zvcm1hdC5p
bml0aWFsaXplKHJlcG8uYnpyZGlyKQorICAgICAgICBleGNlcHQgZXJyb3JzLlVuaW5pdGlhbGl6
YWJsZUZvcm1hdDoKKyAgICAgICAgICAgIHJhaXNlIHRlc3RzLlRlc3RTa2lwcGVkKCdVbmluaXRp
YWxpemFibGUgYnJhbmNoIGZvcm1hdCcpCisKKyAgICBkZWYgbWFrZV9yZXBvc2l0b3J5KHNlbGYs
IHJlbHBhdGgsIHNoYXJlZD1GYWxzZSwgZm9ybWF0PU5vbmUpOgorICAgICAgICBtYWRlX2NvbnRy
b2wgPSBzZWxmLm1ha2VfYnpyZGlyKHJlbHBhdGgsIGZvcm1hdD1mb3JtYXQpCisgICAgICAgIHJl
dHVybiBtYWRlX2NvbnRyb2wuY3JlYXRlX3JlcG9zaXRvcnkoc2hhcmVkPXNoYXJlZCkKKworICAg
IGRlZiBjcmVhdGVfdHJlZV93aXRoX21lcmdlKHNlbGYpOgorICAgICAgICAiIiJDcmVhdGUgYSBi
cmFuY2ggd2l0aCBhIHNpbXBsZSBhbmNlc3RyeS4KKworICAgICAgICBUaGUgZ3JhcGggc2hvdWxk
IGxvb2sgbGlrZToKKyAgICAgICAgICAgIGRpZ3JhcGggSCB7CisgICAgICAgICAgICAgICAgInJl
di0xIiAtPiAicmV2LTIiIC0+ICJyZXYtMyI7CisgICAgICAgICAgICAgICAgInJldi0xIiAtPiAi
cmV2LTEuMS4xIiAtPiAicmV2LTMiOworICAgICAgICAgICAgfQorCisgICAgICAgIE9yIGluIEFT
Q0lJOgorICAgICAgICAgICAgMQorICAgICAgICAgICAgfFwKKyAgICAgICAgICAgIDIgMS4xLjEK
KyAgICAgICAgICAgIHwvCisgICAgICAgICAgICAzCisgICAgICAgICIiIgorICAgICAgICB0cmVl
ID0gc2VsZi5tYWtlX2JyYW5jaF9hbmRfbWVtb3J5X3RyZWUoJ3RyZWUnKQorICAgICAgICB0cmVl
LmxvY2tfd3JpdGUoKQorICAgICAgICB0cnk6CisgICAgICAgICAgICB0cmVlLmFkZCgnJykKKyAg
ICAgICAgICAgIHRyZWUuY29tbWl0KCdmaXJzdCcsIHJldl9pZD0ncmV2LTEnKQorICAgICAgICAg
ICAgdHJlZS5jb21taXQoJ3NlY29uZCcsIHJldl9pZD0ncmV2LTEuMS4xJykKKyAgICAgICAgICAg
ICMgVW5jb21taXQgdGhhdCBsYXN0IGNvbW1pdCBhbmQgc3dpdGNoIHRvIHRoZSBvdGhlciBsaW5l
CisgICAgICAgICAgICB0cmVlLmJyYW5jaC5zZXRfbGFzdF9yZXZpc2lvbl9pbmZvKDEsICdyZXYt
MScpCisgICAgICAgICAgICB0cmVlLnNldF9wYXJlbnRfaWRzKFsncmV2LTEnXSkKKyAgICAgICAg
ICAgIHRyZWUuY29tbWl0KCdhbHQtc2Vjb25kJywgcmV2X2lkPSdyZXYtMicpCisgICAgICAgICAg
ICB0cmVlLnNldF9wYXJlbnRfaWRzKFsncmV2LTInLCAncmV2LTEuMS4xJ10pCisgICAgICAgICAg
ICB0cmVlLmNvbW1pdCgndGhpcmQnLCByZXZfaWQ9J3Jldi0zJykKKyAgICAgICAgZmluYWxseToK
KyAgICAgICAgICAgIHRyZWUudW5sb2NrKCkKKworICAgICAgICByZXR1cm4gdHJlZQogCiAKIGRl
ZiB0ZXN0X3N1aXRlKCk6Ci0gICAgcmVzdWx0ID0gVGVzdFN1aXRlKCkKKyAgICByZXN1bHQgPSB0
ZXN0cy5UZXN0U3VpdGUoKQogICAgIHRlc3RfYnJhbmNoX2ltcGxlbWVudGF0aW9ucyA9IFsKICAg
ICAgICAgJ2J6cmxpYi50ZXN0cy5icmFuY2hfaW1wbGVtZW50YXRpb25zLnRlc3RfYm91bmRfc2Z0
cCcsCiAgICAgICAgICdienJsaWIudGVzdHMuYnJhbmNoX2ltcGxlbWVudGF0aW9ucy50ZXN0X2Jy
YW5jaCcsCiAgICAgICAgICdienJsaWIudGVzdHMuYnJhbmNoX2ltcGxlbWVudGF0aW9ucy50ZXN0
X2JyZWFrX2xvY2snLAogICAgICAgICAnYnpybGliLnRlc3RzLmJyYW5jaF9pbXBsZW1lbnRhdGlv
bnMudGVzdF9jcmVhdGVfY2hlY2tvdXQnLAogICAgICAgICAnYnpybGliLnRlc3RzLmJyYW5jaF9p
bXBsZW1lbnRhdGlvbnMudGVzdF9jb21taXQnLAorICAgICAgICAnYnpybGliLnRlc3RzLmJyYW5j
aF9pbXBsZW1lbnRhdGlvbnMudGVzdF9nZXRfcmV2aXNpb25faWRfdG9fcmV2bm9fbWFwJywKICAg
ICAgICAgJ2J6cmxpYi50ZXN0cy5icmFuY2hfaW1wbGVtZW50YXRpb25zLnRlc3RfaG9va3MnLAog
ICAgICAgICAnYnpybGliLnRlc3RzLmJyYW5jaF9pbXBsZW1lbnRhdGlvbnMudGVzdF9odHRwJywK
ICAgICAgICAgJ2J6cmxpYi50ZXN0cy5icmFuY2hfaW1wbGVtZW50YXRpb25zLnRlc3RfbGFzdF9y
ZXZpc2lvbl9pbmZvJywKQEAgLTUzLDYgKzExOCw3IEBACiAgICAgICAgICdienJsaWIudGVzdHMu
YnJhbmNoX2ltcGxlbWVudGF0aW9ucy50ZXN0X3B1bGwnLAogICAgICAgICAnYnpybGliLnRlc3Rz
LmJyYW5jaF9pbXBsZW1lbnRhdGlvbnMudGVzdF9wdXNoJywKICAgICAgICAgJ2J6cmxpYi50ZXN0
cy5icmFuY2hfaW1wbGVtZW50YXRpb25zLnRlc3RfcmV2aXNpb25faGlzdG9yeScsCisgICAgICAg
ICdienJsaWIudGVzdHMuYnJhbmNoX2ltcGxlbWVudGF0aW9ucy50ZXN0X3JldmlzaW9uX2lkX3Rv
X3Jldm5vJywKICAgICAgICAgJ2J6cmxpYi50ZXN0cy5icmFuY2hfaW1wbGVtZW50YXRpb25zLnRl
c3RfdGFncycsCiAgICAgICAgICdienJsaWIudGVzdHMuYnJhbmNoX2ltcGxlbWVudGF0aW9ucy50
ZXN0X3VuY29tbWl0JywKICAgICAgICAgJ2J6cmxpYi50ZXN0cy5icmFuY2hfaW1wbGVtZW50YXRp
b25zLnRlc3RfdXBkYXRlJywKQEAgLTYyLDExICsxMjgsMjQgQEAKICAgICBjb21iaW5hdGlvbnMg
PSBbKGZvcm1hdCwgZm9ybWF0Ll9tYXRjaGluZ2J6cmRpcikgZm9yIGZvcm1hdCBpbiAKICAgICAg
ICAgIEJyYW5jaEZvcm1hdC5fZm9ybWF0cy52YWx1ZXMoKSArIF9sZWdhY3lfZm9ybWF0c10KICAg
ICBhZGFwdGVyID0gQnJhbmNoVGVzdFByb3ZpZGVyQWRhcHRlcigKLSAgICAgICAgZGVmYXVsdF90
cmFuc3BvcnQsCisgICAgICAgICMgTm9uZSBoZXJlIHdpbGwgY2F1c2UgdGhlIGRlZmF1bHQgdmZz
IHRyYW5zcG9ydCBzZXJ2ZXIgdG8gYmUgdXNlZC4KKyAgICAgICAgTm9uZSwKICAgICAgICAgIyBO
b25lIGhlcmUgd2lsbCBjYXVzZSBhIHJlYWRvbmx5IGRlY29yYXRvciB0byBiZSBjcmVhdGVkCiAg
ICAgICAgICMgYnkgdGhlIFRlc3RDYXNlV2l0aFRyYW5zcG9ydC5nZXRfcmVhZG9ubHlfdHJhbnNw
b3J0IG1ldGhvZC4KICAgICAgICAgTm9uZSwKICAgICAgICAgY29tYmluYXRpb25zKQotICAgIGxv
YWRlciA9IFRlc3RMb2FkZXIoKQotICAgIGFkYXB0X21vZHVsZXModGVzdF9icmFuY2hfaW1wbGVt
ZW50YXRpb25zLCBhZGFwdGVyLCBsb2FkZXIsIHJlc3VsdCkKKyAgICBsb2FkZXIgPSB0ZXN0cy5U
ZXN0TG9hZGVyKCkKKyAgICB0ZXN0cy5hZGFwdF9tb2R1bGVzKHRlc3RfYnJhbmNoX2ltcGxlbWVu
dGF0aW9ucywgYWRhcHRlciwgbG9hZGVyLCByZXN1bHQpCisKKyAgICBhZGFwdF90b19zbWFydF9z
ZXJ2ZXIgPSBCcmFuY2hUZXN0UHJvdmlkZXJBZGFwdGVyKAorICAgICAgICBTbWFydFRDUFNlcnZl
cl9mb3JfdGVzdGluZywKKyAgICAgICAgUmVhZG9ubHlTbWFydFRDUFNlcnZlcl9mb3JfdGVzdGlu
ZywKKyAgICAgICAgWyhSZW1vdGVCcmFuY2hGb3JtYXQoKSwgUmVtb3RlQnpyRGlyRm9ybWF0KCkp
XSwKKyAgICAgICAgTWVtb3J5U2VydmVyCisgICAgICAgICkKKyAgICB0ZXN0cy5hZGFwdF9tb2R1
bGVzKHRlc3RfYnJhbmNoX2ltcGxlbWVudGF0aW9ucywKKyAgICAgICAgICAgICAgICAgICAgICAg
IGFkYXB0X3RvX3NtYXJ0X3NlcnZlciwKKyAgICAgICAgICAgICAgICAgICAgICAgIGxvYWRlciwK
KyAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCkKKwogICAgIHJldHVybiByZXN1bHQKCg==

=== modified file bzrlib/tests/branch_implementations/test_bound_sftp.py // las
... t-changed:andrew.bennetts@canonical.com-20070413073917-ra47o66q0uwgvsm7 // 
... encoding:base64
LS0tIGJ6cmxpYi90ZXN0cy9icmFuY2hfaW1wbGVtZW50YXRpb25zL3Rlc3RfYm91bmRfc2Z0cC5w
eQorKysgYnpybGliL3Rlc3RzL2JyYW5jaF9pbXBsZW1lbnRhdGlvbnMvdGVzdF9ib3VuZF9zZnRw
LnB5CkBAIC0zMSwxMCArMzEsMTggQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICkKIGlt
cG9ydCBienJsaWIuZXJyb3JzIGFzIGVycm9ycwogZnJvbSBienJsaWIudGVzdHMgaW1wb3J0IFRl
c3RTa2lwcGVkCi1mcm9tIGJ6cmxpYi50ZXN0cy50ZXN0X3NmdHBfdHJhbnNwb3J0IGltcG9ydCBU
ZXN0Q2FzZVdpdGhTRlRQU2VydmVyLCBwYXJhbWlrb19sb2FkZWQKLQotCi1jbGFzcyBCb3VuZFNG
VFBCcmFuY2goVGVzdENhc2VXaXRoU0ZUUFNlcnZlcik6Citmcm9tIGJ6cmxpYi50ZXN0cyBpbXBv
cnQgVGVzdENhc2VXaXRoVHJhbnNwb3J0Citmcm9tIGJ6cmxpYi50cmFuc3BvcnQubG9jYWwgaW1w
b3J0IExvY2FsVVJMU2VydmVyCitmcm9tIGJ6cmxpYi50cmFuc3BvcnQubWVtb3J5IGltcG9ydCBN
ZW1vcnlTZXJ2ZXIKKworCitjbGFzcyBCb3VuZFNGVFBCcmFuY2goVGVzdENhc2VXaXRoVHJhbnNw
b3J0KToKKworICAgIGRlZiBzZXRVcChzZWxmKToKKyAgICAgICAgVGVzdENhc2VXaXRoVHJhbnNw
b3J0LnNldFVwKHNlbGYpCisgICAgICAgIHNlbGYudmZzX3RyYW5zcG9ydF9mYWN0b3J5ID0gTWVt
b3J5U2VydmVyCisgICAgICAgIGlmIHNlbGYudHJhbnNwb3J0X3NlcnZlciBpcyBMb2NhbFVSTFNl
cnZlcjoKKyAgICAgICAgICAgIHNlbGYudHJhbnNwb3J0X3NlcnZlciA9IE5vbmUKIAogICAgIGRl
ZiBjcmVhdGVfYnJhbmNoZXMoc2VsZik6CiAgICAgICAgIHNlbGYuYnVpbGRfdHJlZShbJ2Jhc2Uv
JywgJ2Jhc2UvYScsICdiYXNlL2InXSkKQEAgLTU5LDExICs2Nyw2IEBACiAgICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwoWydyQGItMSddLCB3dF9jaGlsZC5icmFuY2gucmV2aXNpb25faGlzdG9yeSgp
KQogICAgICAgICByZXR1cm4gYl9iYXNlLCB3dF9jaGlsZAogCi0gICAgZGVmIHRlYXJEb3duKHNl
bGYpOgotICAgICAgICBzZWxmLnNmdHBfYmFzZSA9IE5vbmUKLSAgICAgICAgYnpybGliLnRyYW5z
cG9ydC5zZnRwLmNsZWFyX2Nvbm5lY3Rpb25fY2FjaGUoKQotICAgICAgICBzdXBlcihCb3VuZFNG
VFBCcmFuY2gsIHNlbGYpLnRlYXJEb3duKCkKLQogICAgIGRlZiB0ZXN0X3NpbXBsZV9iaW5kaW5n
KHNlbGYpOgogICAgICAgICBzZWxmLmJ1aWxkX3RyZWUoWydiYXNlLycsICdiYXNlL2EnLCAnYmFz
ZS9iJywgJ2NoaWxkLyddKQogICAgICAgICB0cnk6CkBAIC0zMzIsNiArMzM1LDMgQEAKICAgICAj
ICAgICAgIHBlcmZvcm1hbmNlIGV2ZW4gd2hlbiBzb21ldGhpbmcgZmFpbHMuCiAKIAotaWYgbm90
IHBhcmFtaWtvX2xvYWRlZDoKLSAgICBkZWwgQm91bmRTRlRQQnJhbmNoCi0KCg==

=== modified file bzrlib/tests/branch_implementations/test_branch.py // last-ch
... anged:john@arbash-meinel.com-20070424032327-w2tz2smz41eco4u1 // encoding:ba
... se64
LS0tIGJ6cmxpYi90ZXN0cy9icmFuY2hfaW1wbGVtZW50YXRpb25zL3Rlc3RfYnJhbmNoLnB5Cisr
KyBienJsaWIvdGVzdHMvYnJhbmNoX2ltcGxlbWVudGF0aW9ucy90ZXN0X2JyYW5jaC5weQpAQCAt
MjYsNiArMjYsNyBAQAogICAgIGdwZywKICAgICB1cmx1dGlscywKICAgICB0cmFuc2FjdGlvbnMs
CisgICAgcmVtb3RlLAogICAgIHJlcG9zaXRvcnksCiAgICAgKQogZnJvbSBienJsaWIuYnJhbmNo
IGltcG9ydCBCcmFuY2gsIG5lZWRzX3JlYWRfbG9jaywgbmVlZHNfd3JpdGVfbG9jawpAQCAtMzks
NyArNDAsNyBAQAogZnJvbSBienJsaWIub3N1dGlscyBpbXBvcnQgZ2V0Y3dkCiBpbXBvcnQgYnpy
bGliLnJldmlzaW9uCiBmcm9tIGJ6cmxpYi50ZXN0cyBpbXBvcnQgVGVzdENhc2UsIFRlc3RDYXNl
V2l0aFRyYW5zcG9ydCwgVGVzdFNraXBwZWQKLWZyb20gYnpybGliLnRlc3RzLmJ6cmRpcl9pbXBs
ZW1lbnRhdGlvbnMudGVzdF9ienJkaXIgaW1wb3J0IFRlc3RDYXNlV2l0aEJ6ckRpcgorZnJvbSBi
enJsaWIudGVzdHMuYnJhbmNoX2ltcGxlbWVudGF0aW9ucyBpbXBvcnQgVGVzdENhc2VXaXRoQnJh
bmNoCiBmcm9tIGJ6cmxpYi50ZXN0cy5IdHRwU2VydmVyIGltcG9ydCBIdHRwU2VydmVyCiBmcm9t
IGJ6cmxpYi50cmFjZSBpbXBvcnQgbXV0dGVyCiBmcm9tIGJ6cmxpYi50cmFuc3BvcnQgaW1wb3J0
IGdldF90cmFuc3BvcnQKQEAgLTQ4LDMxICs0OSw2IEBACiBmcm9tIGJ6cmxpYi53b3JraW5ndHJl
ZSBpbXBvcnQgV29ya2luZ1RyZWUKIAogCi1jbGFzcyBUZXN0Q2FzZVdpdGhCcmFuY2goVGVzdENh
c2VXaXRoQnpyRGlyKToKLQotICAgIGRlZiBzZXRVcChzZWxmKToKLSAgICAgICAgc3VwZXIoVGVz
dENhc2VXaXRoQnJhbmNoLCBzZWxmKS5zZXRVcCgpCi0gICAgICAgIHNlbGYuYnJhbmNoID0gTm9u
ZQotCi0gICAgZGVmIGdldF9icmFuY2goc2VsZik6Ci0gICAgICAgIGlmIHNlbGYuYnJhbmNoIGlz
IE5vbmU6Ci0gICAgICAgICAgICBzZWxmLmJyYW5jaCA9IHNlbGYubWFrZV9icmFuY2goJycpCi0g
ICAgICAgIHJldHVybiBzZWxmLmJyYW5jaAotCi0gICAgZGVmIG1ha2VfYnJhbmNoKHNlbGYsIHJl
bHBhdGgsIGZvcm1hdD1Ob25lKToKLSAgICAgICAgcmVwbyA9IHNlbGYubWFrZV9yZXBvc2l0b3J5
KHJlbHBhdGgsIGZvcm1hdD1mb3JtYXQpCi0gICAgICAgICMgZml4bWUgUkJDIDIwMDYwMjEwIHRo
aXMgaXNudCBuZWNlc3NhcmlseSBhIGZpeGFibGUgdGhpbmcsCi0gICAgICAgICMgU2tpcHBlZCBp
cyB0aGUgd3JvbmcgZXhjZXB0aW9uIHRvIHJhaXNlLgotICAgICAgICB0cnk6Ci0gICAgICAgICAg
ICByZXR1cm4gc2VsZi5icmFuY2hfZm9ybWF0LmluaXRpYWxpemUocmVwby5ienJkaXIpCi0gICAg
ICAgIGV4Y2VwdCBlcnJvcnMuVW5pbml0aWFsaXphYmxlRm9ybWF0OgotICAgICAgICAgICAgcmFp
c2UgVGVzdFNraXBwZWQoJ1VuaW5pdGlhbGl6YWJsZSBicmFuY2ggZm9ybWF0JykKLQotICAgIGRl
ZiBtYWtlX3JlcG9zaXRvcnkoc2VsZiwgcmVscGF0aCwgc2hhcmVkPUZhbHNlLCBmb3JtYXQ9Tm9u
ZSk6Ci0gICAgICAgIG1hZGVfY29udHJvbCA9IHNlbGYubWFrZV9ienJkaXIocmVscGF0aCwgZm9y
bWF0PWZvcm1hdCkKLSAgICAgICAgcmV0dXJuIG1hZGVfY29udHJvbC5jcmVhdGVfcmVwb3NpdG9y
eShzaGFyZWQ9c2hhcmVkKQotCi0KIGNsYXNzIFRlc3RCcmFuY2goVGVzdENhc2VXaXRoQnJhbmNo
KToKIAogICAgIGRlZiB0ZXN0X2FwcGVuZF9yZXZpc2lvbnMoc2VsZik6CkBAIC05MCw2ICs2Niwx
NSBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhici5yZXZpc2lvbl9oaXN0b3J5KCksIFsi
cmV2MSIsICJyZXYyIiwgInJldjMiXSkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoZXJyb3Jz
LlJlc2VydmVkSWQsIGJyLmFwcGVuZF9yZXZpc2lvbiwgJ2N1cnJlbnQ6JykKIAorICAgIGRlZiB0
ZXN0X2NyZWF0ZV90cmVlX3dpdGhfbWVyZ2Uoc2VsZik6CisgICAgICAgIHRyZWUgPSBzZWxmLmNy
ZWF0ZV90cmVlX3dpdGhfbWVyZ2UoKQorICAgICAgICBhbmNlc3RyeV9ncmFwaCA9IHRyZWUuYnJh
bmNoLnJlcG9zaXRvcnkuZ2V0X3JldmlzaW9uX2dyYXBoKCdyZXYtMycpCisgICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwoeydyZXYtMSc6W10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICdyZXYt
Mic6WydyZXYtMSddLAorICAgICAgICAgICAgICAgICAgICAgICAgICAncmV2LTEuMS4xJzpbJ3Jl
di0xJ10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICdyZXYtMyc6WydyZXYtMicsICdyZXYt
MS4xLjEnXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICB9LCBhbmNlc3RyeV9ncmFwaCkKKwog
ICAgIGRlZiB0ZXN0X3JldmlzaW9uX2lkc19hcmVfdXRmOChzZWxmKToKICAgICAgICAgd3QgPSBz
ZWxmLm1ha2VfYnJhbmNoX2FuZF90cmVlKCd0cmVlJykKICAgICAgICAgd3QuY29tbWl0KCdmJywg
cmV2X2lkPSdyZXYxJykKQEAgLTM1MiwxNCArMzM3LDkgQEAKICAgICAgICAgIyBjb25maWcgZmls
ZSBpbiB0aGUgYnJhbmNoLgogICAgICAgICBicmFuY2gubmljayA9ICJBYXJvbidzIGJyYW5jaCIK
ICAgICAgICAgYnJhbmNoLm5pY2sgPSAiQWFyb24ncyBicmFuY2giCi0gICAgICAgIHRyeToKKyAg
ICAgICAgaWYgbm90IGlzaW5zdGFuY2UoYnJhbmNoLCByZW1vdGUuUmVtb3RlQnJhbmNoKToKICAg
ICAgICAgICAgIGNvbnRyb2xmaWxlbmFtZSA9IGJyYW5jaC5jb250cm9sX2ZpbGVzLmNvbnRyb2xm
aWxlbmFtZQotICAgICAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6Ci0gICAgICAgICAgICAjIHJl
bW90ZSBicmFuY2hlcyBkb24ndCBoYXZlIGNvbnRyb2xfZmlsZXMKLSAgICAgICAgICAgIHBhc3MK
LSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHNlbGYuZmFpbFVubGVzcygKLSAgICAgICAgICAg
ICAgICB0Lmhhcyh0LnJlbHBhdGgoY29udHJvbGZpbGVuYW1lKCJicmFuY2guY29uZiIpKSkpCisg
ICAgICAgICAgICBzZWxmLmZhaWxVbmxlc3ModC5oYXModC5yZWxwYXRoKGNvbnRyb2xmaWxlbmFt
ZSgiYnJhbmNoLmNvbmYiKSkpKQogICAgICAgICAjIEJlY2F1c2UgdGhlIG5pY2sgaGFzIGJlZW4g
c2V0IGV4cGxpY2l0bHksIHRoZSBuaWNrIGlzIG5vdyBhbHdheXMKICAgICAgICAgIyAiQWFyb24n
cyBicmFuY2giLCByZWdhcmRsZXNzIG9mIGRpcmVjdG9yeSBuYW1lLgogICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKGJyYW5jaC5uaWNrLCAiQWFyb24ncyBicmFuY2giKQpAQCAtNTk4LDYgKzU3OCwx
NyBAQAogY2xhc3MgVGVzdEZvcm1hdChUZXN0Q2FzZVdpdGhCcmFuY2gpOgogICAgICIiIlRlc3Rz
IGZvciB0aGUgZm9ybWF0IGl0c2VsZi4iIiIKIAorICAgIGRlZiB0ZXN0X2dldF9yZWZlcmVuY2Uo
c2VsZik6CisgICAgICAgICIiImdldF9yZWZlcmVuY2Ugb24gYWxsIHJlZ3VsYXIgYnJhbmNoZXMg
c2hvdWxkIHJldHVybiBOb25lLiIiIgorICAgICAgICBpZiBub3Qgc2VsZi5icmFuY2hfZm9ybWF0
LmlzX3N1cHBvcnRlZCgpOgorICAgICAgICAgICAgIyB1bnN1cHBvcnRlZCBmb3JtYXRzIGFyZSBu
b3QgbG9vcGJhY2sgdGVzdGFibGUKKyAgICAgICAgICAgICMgYmVjYXVzZSB0aGUgZGVmYXVsdCBv
cGVuIHdpbGwgbm90IG9wZW4gdGhlbSBhbmQKKyAgICAgICAgICAgICMgdGhleSBtYXkgbm90IGJl
IGluaXRpYWxpemFibGUuCisgICAgICAgICAgICByZXR1cm4KKyAgICAgICAgbWFkZV9icmFuY2gg
PSBzZWxmLm1ha2VfYnJhbmNoKCcuJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChOb25lLAor
ICAgICAgICAgICAgbWFkZV9icmFuY2guX2Zvcm1hdC5nZXRfcmVmZXJlbmNlKG1hZGVfYnJhbmNo
LmJ6cmRpcikpCisKICAgICBkZWYgdGVzdF9mb3JtYXRfaW5pdGlhbGl6ZV9maW5kX29wZW4oc2Vs
Zik6CiAgICAgICAgICMgbG9vcGJhY2sgdGVzdCB0byBjaGVjayB0aGUgY3VycmVudCBmb3JtYXQg
aW5pdGlhbGl6ZXMgdG8gaXRzZWxmLgogICAgICAgICBpZiBub3Qgc2VsZi5icmFuY2hfZm9ybWF0
LmlzX3N1cHBvcnRlZCgpOgpAQCAtNjMwLDcgKzYyMSw3IEBACiAgICAgICAgIGV4Y2VwdCBOb3RJ
bXBsZW1lbnRlZEVycm9yOgogICAgICAgICAgICAgcmV0dXJuCiAgICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwoc2VsZi5icmFuY2hfZm9ybWF0LAotICAgICAgICAgICAgICAgICAgICAgICAgIGJyYW5j
aC5CcmFuY2hGb3JtYXQuZmluZF9mb3JtYXQob3BlbmVkX2NvbnRyb2wpKQorICAgICAgICAgICAg
ICAgICAgICAgICAgIG9wZW5lZF9jb250cm9sLmZpbmRfYnJhbmNoX2Zvcm1hdCgpKQogCiAKIGNs
YXNzIFRlc3RCb3VuZChUZXN0Q2FzZVdpdGhCcmFuY2gpOgoK

=== modified file bzrlib/tests/branch_implementations/test_create_checkout.py /
... / last-changed:robertc@robertcollins.net-20070329040816-w9220t3gkdb45n3i //
...  encoding:base64
LS0tIGJ6cmxpYi90ZXN0cy9icmFuY2hfaW1wbGVtZW50YXRpb25zL3Rlc3RfY3JlYXRlX2NoZWNr
b3V0LnB5CisrKyBienJsaWIvdGVzdHMvYnJhbmNoX2ltcGxlbWVudGF0aW9ucy90ZXN0X2NyZWF0
ZV9jaGVja291dC5weQpAQCAtMTksNiArMTksNyBAQAogZnJvbSBienJsaWIgaW1wb3J0ICgKICAg
ICBicmFuY2gsCiAgICAgKQorZnJvbSBienJsaWIucmVtb3RlIGltcG9ydCBSZW1vdGVCcmFuY2gK
IGZyb20gYnpybGliLnRlc3RzLmJyYW5jaF9pbXBsZW1lbnRhdGlvbnMudGVzdF9icmFuY2ggaW1w
b3J0IFRlc3RDYXNlV2l0aEJyYW5jaAogCiAKQEAgLTI3LDYgKzI4LDE0IEBACiAgICAgZGVmIHRl
c3RfY2hlY2tvdXRfZm9ybWF0KHNlbGYpOgogICAgICAgICAiIiJNYWtlIHN1cmUgdGhlIG5ldyBj
aGVja291dCB1c2VzIHRoZSBzYW1lIGJyYW5jaCBmb3JtYXQuIiIiCiAgICAgICAgIGFfYnJhbmNo
ID0gc2VsZi5tYWtlX2JyYW5jaCgnYnJhbmNoJykKKyAgICAgICAgaWYgaXNpbnN0YW5jZShhX2Jy
YW5jaCwgUmVtb3RlQnJhbmNoKToKKyAgICAgICAgICAgICMgUmVtb3RlQnJhbmNoIGZvcm1hdHMg
YXJlIG5vdCB0aGUgc2FtZSBhcyBsb2NhbCBvbmVzLCBhbmQgZG9udAorICAgICAgICAgICAgIyBk
dXBsaWNhdGUgdGhlIGZvcm1hdCBzdHJpbmcgKGJlY2F1c2UgdGhlcmUgaXMgbm8gZm9ybWF0IHN0
cmluZyBhcworICAgICAgICAgICAgIyBzdWNoIC0gaXQgbWlnaHQgYmUgZS5nLiB0b3RhbGx5IHZp
cnR1YWwgb24gdGhlIHNlcnZlciBlbmQpLgorICAgICAgICAgICAgIyBUaGlzIHRlc3QgY2FuIG9u
bHkgYXNzZXNzIHRoZSBjaGVja291dCBmb3JtYXQgY29ycmVjdG5lc3MgKmluCisgICAgICAgICAg
ICAjIGdlbmVyYWwqIHdoZW4gdGhlcmUgaXMgYSByZWFsIG9iamVjdCBsb2NhbGx5IHByZXNlbnQg
Zm9yIGJvdGggdGhlCisgICAgICAgICAgICAjIHNvdXJjZSBhbmQgdGFyZ2V0LgorICAgICAgICAg
ICAgcmV0dXJuCiAgICAgICAgIHRyZWUgPSBhX2JyYW5jaC5jcmVhdGVfY2hlY2tvdXQoJ2NoZWNr
b3V0JykKICAgICAgICAgaWYgc2VsZi5icmFuY2hfZm9ybWF0IGluIGJyYW5jaC5fbGVnYWN5X2Zv
cm1hdHM6CiAgICAgICAgICAgICAjIExlZ2FjeSBmb3JtYXRzIGNyZWF0ZSBjaGVja291dHMgd2l0
aCB0aGUgZGVmYXVsdCBmb3JtYXQuCkBAIC0zNCw4ICs0Myw4IEBACiAgICAgICAgICAgICBleHBl
Y3RlZF9mb3JtYXQgPSBicmFuY2guQnJhbmNoRm9ybWF0LmdldF9kZWZhdWx0X2Zvcm1hdCgpCiAg
ICAgICAgIGVsc2U6CiAgICAgICAgICAgICBleHBlY3RlZF9mb3JtYXQgPSBhX2JyYW5jaC5fZm9y
bWF0Ci0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXhwZWN0ZWRfZm9ybWF0LmdldF9mb3JtYXRf
c3RyaW5nKCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgdHJlZS5icmFuY2guX2Zvcm1hdC5n
ZXRfZm9ybWF0X3N0cmluZygpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV4cGVjdGVkX2Zv
cm1hdC5fX2NsYXNzX18sCisgICAgICAgICAgICAgICAgICAgICAgICAgdHJlZS5icmFuY2guX2Zv
cm1hdC5fX2NsYXNzX18pCiAKICAgICBkZWYgdGVzdF9jcmVhdGVfcmV2aXNpb25fY2hlY2tvdXQo
c2VsZik6CiAgICAgICAgICIiIlRlc3QgdGhhdCB3ZSBjYW4gY3JlYXRlIGEgY2hlY2tvdXQgZnJv
bSBhbiBlYXJsaWVyIHJldmlzaW9uLiIiIgoK

=== modified file bzrlib/tests/branch_implementations/test_locking.py // last-c
... hanged:andrew.bennetts@canonical.com-20070418051019-tek0rr8alo1z2sop // enc
... oding:base64
LS0tIGJ6cmxpYi90ZXN0cy9icmFuY2hfaW1wbGVtZW50YXRpb25zL3Rlc3RfbG9ja2luZy5weQor
KysgYnpybGliL3Rlc3RzL2JyYW5jaF9pbXBsZW1lbnRhdGlvbnMvdGVzdF9sb2NraW5nLnB5CkBA
IC0xOCw2ICsxOCw3IEBACiAKIGZyb20gYnpybGliIGltcG9ydCBlcnJvcnMKIGZyb20gYnpybGli
LmJyYW5jaCBpbXBvcnQgQnpyQnJhbmNoRm9ybWF0NAorZnJvbSBienJsaWIuYnpyZGlyIGltcG9y
dCBSZW1vdGVCenJEaXJGb3JtYXQKIGZyb20gYnpybGliLnRlc3RzIGltcG9ydCBUZXN0U2tpcHBl
ZAogZnJvbSBienJsaWIudGVzdHMuYnJhbmNoX2ltcGxlbWVudGF0aW9ucy50ZXN0X2JyYW5jaCBp
bXBvcnQgVGVzdENhc2VXaXRoQnJhbmNoCiBmcm9tIGJ6cmxpYi50ZXN0cy5sb2NrX2hlbHBlcnMg
aW1wb3J0IFRlc3RQcmV2ZW50TG9ja2luZywgTG9ja1dyYXBwZXIKQEAgLTM5LDcgKzQwLDEyIEBA
CiAgICAgICAgIGIgPSBMb2NrV3JhcHBlcihzZWxmLmxvY2tzLCBzZWxmLmdldF9icmFuY2goKSwg
J2InKQogICAgICAgICBiLnJlcG9zaXRvcnkgPSBMb2NrV3JhcHBlcihzZWxmLmxvY2tzLCBiLnJl
cG9zaXRvcnksICdyJykKICAgICAgICAgYmNmID0gYi5jb250cm9sX2ZpbGVzCi0gICAgICAgIHJj
ZiA9IGIucmVwb3NpdG9yeS5jb250cm9sX2ZpbGVzCisgICAgICAgIHJjZiA9IGdldGF0dHIoYi5y
ZXBvc2l0b3J5LCAnY29udHJvbF9maWxlcycsIE5vbmUpCisgICAgICAgIGlmIHJjZiBpcyBOb25l
OgorICAgICAgICAgICAgcmFpc2UgVGVzdFNraXBwZWQoCisgICAgICAgICAgICAgICAgIlRoaXMg
dGVzdHMgZGVwZW5kcyBvbiBiZWluZyBhYmxlIHRvIGluc3RydW1lbnQgIgorICAgICAgICAgICAg
ICAgICJyZXBvc2l0b3J5LmNvbnRyb2xfZmlsZXMsIGJ1dCAlciBkb2Vzbid0IGhhdmUgY29udHJv
bF9maWxlcy4iCisgICAgICAgICAgICAgICAgJSAoYi5yZXBvc2l0b3J5LCkpCiAKICAgICAgICAg
IyBMb29rIG91dCBmb3IgYnJhbmNoIHR5cGVzIHRoYXQgcmV1c2UgdGhlaXIgY29udHJvbCBmaWxl
cwogICAgICAgICBzZWxmLmNvbWJpbmVkX2NvbnRyb2wgPSBiY2YgaXMgcmNmCkBAIC0yMjcsNiAr
MjMzLDE5NSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAoJ3JjJywgJ3VsJywgVHJ1ZSks
CiAgICAgICAgICAgICAgICAgICAgICAgICAgXSwgc2VsZi5sb2NrcykKIAorICAgIGRlZiB0ZXN0
X2xvY2tfd3JpdGVfcmV0dXJuc19Ob25lX3JlZnVzZXNfdG9rZW4oc2VsZik6CisgICAgICAgIGJy
YW5jaCA9IHNlbGYubWFrZV9icmFuY2goJ2InKQorICAgICAgICB0b2tlbiA9IGJyYW5jaC5sb2Nr
X3dyaXRlKCkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgaWYgdG9rZW4gaXMgbm90IE5vbmU6
CisgICAgICAgICAgICAgICAgIyBUaGlzIHRlc3QgZG9lcyBub3QgYXBwbHksIGJlY2F1c2UgdGhp
cyBsb2NrYWJsZSBzdXBwb3J0cworICAgICAgICAgICAgICAgICMgdG9rZW5zLgorICAgICAgICAg
ICAgICAgIHJldHVybgorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoZXJyb3JzLlRva2Vu
TG9ja2luZ05vdFN1cHBvcnRlZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyYW5j
aC5sb2NrX3dyaXRlLCB0b2tlbj0ndG9rZW4nKQorICAgICAgICBmaW5hbGx5OgorICAgICAgICAg
ICAgYnJhbmNoLnVubG9jaygpCisKKyAgICBkZWYgdGVzdF9yZWVudGVyaW5nX2xvY2tfd3JpdGVf
cmFpc2VzX29uX3Rva2VuX21pc21hdGNoKHNlbGYpOgorICAgICAgICBicmFuY2ggPSBzZWxmLm1h
a2VfYnJhbmNoKCdiJykKKyAgICAgICAgdG9rZW4gPSBicmFuY2gubG9ja193cml0ZSgpCisgICAg
ICAgIHRyeToKKyAgICAgICAgICAgIGlmIHRva2VuIGlzIE5vbmU6CisgICAgICAgICAgICAgICAg
IyBUaGlzIHRlc3QgZG9lcyBub3QgYXBwbHksIGJlY2F1c2UgdGhpcyBsb2NrYWJsZSByZWZ1c2Vz
CisgICAgICAgICAgICAgICAgIyB0b2tlbnMuCisgICAgICAgICAgICAgICAgcmV0dXJuCisgICAg
ICAgICAgICBkaWZmZXJlbnRfYnJhbmNoX3Rva2VuID0gdG9rZW4gKyAneHh4JworICAgICAgICAg
ICAgIyBSZS11c2luZyB0aGUgc2FtZSBsb2NrYWJsZSBpbnN0YW5jZSB3aXRoIGEgZGlmZmVyZW50
IGJyYW5jaCB0b2tlbgorICAgICAgICAgICAgIyB3aWxsIHJhaXNlIFRva2VuTWlzbWF0Y2guCisg
ICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhlcnJvcnMuVG9rZW5NaXNtYXRjaCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGJyYW5jaC5sb2NrX3dyaXRlLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgdG9rZW49ZGlmZmVyZW50X2JyYW5jaF90b2tlbikKKyAgICAgICAg
ZmluYWxseToKKyAgICAgICAgICAgIGJyYW5jaC51bmxvY2soKQorCisgICAgZGVmIHRlc3RfbG9j
a193cml0ZV93aXRoX25vbm1hdGNoaW5nX3Rva2VuKHNlbGYpOgorICAgICAgICBicmFuY2ggPSBz
ZWxmLm1ha2VfYnJhbmNoKCdiJykKKyAgICAgICAgdG9rZW4gPSBicmFuY2gubG9ja193cml0ZSgp
CisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGlmIHRva2VuIGlzIE5vbmU6CisgICAgICAgICAg
ICAgICAgIyBUaGlzIHRlc3QgZG9lcyBub3QgYXBwbHksIGJlY2F1c2UgdGhpcyBicmFuY2ggcmVm
dXNlcworICAgICAgICAgICAgICAgICMgdG9rZW5zLgorICAgICAgICAgICAgICAgIHJldHVybgor
ICAgICAgICAgICAgZGlmZmVyZW50X2JyYW5jaF90b2tlbiA9IHRva2VuICsgJ3h4eCcKKworICAg
ICAgICAgICAgbmV3X2JyYW5jaCA9IGJyYW5jaC5ienJkaXIub3Blbl9icmFuY2goKQorICAgICAg
ICAgICAgIyBXZSBvbmx5IHdhbnQgdG8gdGVzdCB0aGUgcmVsb2NraW5nIGFiaWxpdGllcyBvZiBi
cmFuY2gsIHNvIHVzZSB0aGUKKyAgICAgICAgICAgICMgZXhpc3RpbmcgcmVwb3NpdG9yeSBvYmpl
Y3Qgd2hpY2ggaXMgYWxyZWFkeSBsb2NrZWQuCisgICAgICAgICAgICBuZXdfYnJhbmNoLnJlcG9z
aXRvcnkgPSBicmFuY2gucmVwb3NpdG9yeQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMo
ZXJyb3JzLlRva2VuTWlzbWF0Y2gsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXdf
YnJhbmNoLmxvY2tfd3JpdGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b2tlbj1k
aWZmZXJlbnRfYnJhbmNoX3Rva2VuKQorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgYnJh
bmNoLnVubG9jaygpCisKKworICAgIGRlZiB0ZXN0X2xvY2tfd3JpdGVfd2l0aF9tYXRjaGluZ190
b2tlbihzZWxmKToKKyAgICAgICAgIiIiVGVzdCB0aGF0IGEgYnJhbmNoIGNhbiBiZSBsb2NrZWQg
d2l0aCBhIHRva2VuLCBpZiBpdCBpcyBhbHJlYWR5CisgICAgICAgIGxvY2tlZCBieSB0aGF0IHRv
a2VuLiIiIgorICAgICAgICBicmFuY2ggPSBzZWxmLm1ha2VfYnJhbmNoKCdiJykKKyAgICAgICAg
dG9rZW4gPSBicmFuY2gubG9ja193cml0ZSgpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGlm
IHRva2VuIGlzIE5vbmU6CisgICAgICAgICAgICAgICAgIyBUaGlzIHRlc3QgZG9lcyBub3QgYXBw
bHksIGJlY2F1c2UgdGhpcyBicmFuY2ggcmVmdXNlcyB0b2tlbnMuCisgICAgICAgICAgICAgICAg
cmV0dXJuCisgICAgICAgICAgICAjIFRoZSBzYW1lIGluc3RhbmNlIHdpbGwgYWNjZXB0IGEgc2Vj
b25kIGxvY2tfd3JpdGUgaWYgdGhlIHNwZWNpZmllZAorICAgICAgICAgICAgIyB0b2tlbiBtYXRj
aGVzLgorICAgICAgICAgICAgYnJhbmNoLmxvY2tfd3JpdGUodG9rZW49dG9rZW4pCisgICAgICAg
ICAgICBicmFuY2gudW5sb2NrKCkKKyAgICAgICAgICAgICMgQ2FsbGluZyBsb2NrX3dyaXRlIG9u
IGEgbmV3IGluc3RhbmNlIGZvciB0aGUgc2FtZSBsb2NrYWJsZSB3aWxsCisgICAgICAgICAgICAj
IGFsc28gc3VjY2VlZC4KKyAgICAgICAgICAgIG5ld19icmFuY2ggPSBicmFuY2guYnpyZGlyLm9w
ZW5fYnJhbmNoKCkKKyAgICAgICAgICAgICMgV2Ugb25seSB3YW50IHRvIHRlc3QgdGhlIHJlbG9j
a2luZyBhYmlsaXRpZXMgb2YgYnJhbmNoLCBzbyB1c2UgdGhlCisgICAgICAgICAgICAjIGV4aXN0
aW5nIHJlcG9zaXRvcnkgb2JqZWN0IHdoaWNoIGlzIGFscmVhZHkgbG9ja2VkLgorICAgICAgICAg
ICAgbmV3X2JyYW5jaC5yZXBvc2l0b3J5ID0gYnJhbmNoLnJlcG9zaXRvcnkKKyAgICAgICAgICAg
IG5ld19icmFuY2gubG9ja193cml0ZSh0b2tlbj10b2tlbikKKyAgICAgICAgICAgIG5ld19icmFu
Y2gudW5sb2NrKCkKKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgIGJyYW5jaC51bmxvY2so
KQorCisgICAgZGVmIHRlc3RfdW5sb2NrX2FmdGVyX2xvY2tfd3JpdGVfd2l0aF90b2tlbihzZWxm
KToKKyAgICAgICAgIyBJZiBsb2NrX3dyaXRlIGRpZCBub3QgcGh5c2ljYWxseSBhY3F1aXJlIHRo
ZSBsb2NrIChiZWNhdXNlIGl0IHdhcworICAgICAgICAjIHBhc3NlZCBzb21lIHRva2VucyksIHRo
ZW4gdW5sb2NrIHNob3VsZCBub3QgcGh5c2ljYWxseSByZWxlYXNlIGl0LgorICAgICAgICBicmFu
Y2ggPSBzZWxmLm1ha2VfYnJhbmNoKCdiJykKKyAgICAgICAgdG9rZW4gPSBicmFuY2gubG9ja193
cml0ZSgpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGlmIHRva2VuIGlzIE5vbmU6CisgICAg
ICAgICAgICAgICAgIyBUaGlzIHRlc3QgZG9lcyBub3QgYXBwbHksIGJlY2F1c2UgdGhpcyBsb2Nr
YWJsZSByZWZ1c2VzCisgICAgICAgICAgICAgICAgIyB0b2tlbnMuCisgICAgICAgICAgICAgICAg
cmV0dXJuCisgICAgICAgICAgICBuZXdfYnJhbmNoID0gYnJhbmNoLmJ6cmRpci5vcGVuX2JyYW5j
aCgpCisgICAgICAgICAgICAjIFdlIG9ubHkgd2FudCB0byB0ZXN0IHRoZSByZWxvY2tpbmcgYWJp
bGl0aWVzIG9mIGJyYW5jaCwgc28gdXNlIHRoZQorICAgICAgICAgICAgIyBleGlzdGluZyByZXBv
c2l0b3J5IG9iamVjdCB3aGljaCBpcyBhbHJlYWR5IGxvY2tlZC4KKyAgICAgICAgICAgIG5ld19i
cmFuY2gucmVwb3NpdG9yeSA9IGJyYW5jaC5yZXBvc2l0b3J5CisgICAgICAgICAgICBuZXdfYnJh
bmNoLmxvY2tfd3JpdGUodG9rZW49dG9rZW4pCisgICAgICAgICAgICBuZXdfYnJhbmNoLnVubG9j
aygpCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoYnJhbmNoLmdldF9waHlzaWNhbF9sb2Nr
X3N0YXR1cygpKSAjWFhYCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICBicmFuY2gudW5s
b2NrKCkKKworICAgIGRlZiB0ZXN0X2xvY2tfd3JpdGVfd2l0aF90b2tlbl9mYWlsc193aGVuX3Vu
bG9ja2VkKHNlbGYpOgorICAgICAgICAjIEZpcnN0LCBsb2NrIGFuZCB0aGVuIHVubG9jayB0byBn
ZXQgc3VwZXJmaWNpYWxseSB2YWxpZCB0b2tlbnMuICBUaGlzCisgICAgICAgICMgbWltaWNzIGEg
bGlrZWx5IHByb2dyYW1taW5nIGVycm9yLCB3aGVyZSBhIGNhbGxlciBhY2NpZGVudGFsbHkgdHJp
ZXMKKyAgICAgICAgIyB0byBsb2NrIHdpdGggYSB0b2tlbiB0aGF0IGlzIG5vIGxvbmdlciB2YWxp
ZCAoYmVjYXVzZSB0aGUgb3JpZ2luYWwKKyAgICAgICAgIyBsb2NrIHdhcyByZWxlYXNlZCkuCisg
ICAgICAgIGJyYW5jaCA9IHNlbGYubWFrZV9icmFuY2goJ2InKQorICAgICAgICB0b2tlbiA9IGJy
YW5jaC5sb2NrX3dyaXRlKCkKKyAgICAgICAgYnJhbmNoLnVubG9jaygpCisgICAgICAgIGlmIHRv
a2VuIGlzIE5vbmU6CisgICAgICAgICAgICAjIFRoaXMgdGVzdCBkb2VzIG5vdCBhcHBseSwgYmVj
YXVzZSB0aGlzIGxvY2thYmxlIHJlZnVzZXMKKyAgICAgICAgICAgICMgdG9rZW5zLgorICAgICAg
ICAgICAgcmV0dXJuCisKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoZXJyb3JzLlRva2VuTWlz
bWF0Y2gsCisgICAgICAgICAgICAgICAgICAgICAgICAgIGJyYW5jaC5sb2NrX3dyaXRlLCB0b2tl
bj10b2tlbikKKworICAgIGRlZiB0ZXN0X2xvY2tfd3JpdGVfcmVlbnRlcl93aXRoX3Rva2VuKHNl
bGYpOgorICAgICAgICBicmFuY2ggPSBzZWxmLm1ha2VfYnJhbmNoKCdiJykKKyAgICAgICAgdG9r
ZW4gPSBicmFuY2gubG9ja193cml0ZSgpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGlmIHRv
a2VuIGlzIE5vbmU6CisgICAgICAgICAgICAgICAgIyBUaGlzIHRlc3QgZG9lcyBub3QgYXBwbHks
IGJlY2F1c2UgdGhpcyBsb2NrYWJsZSByZWZ1c2VzCisgICAgICAgICAgICAgICAgIyB0b2tlbnMu
CisgICAgICAgICAgICAgICAgcmV0dXJuCisgICAgICAgICAgICAjIFJlbG9jayB3aXRoIGEgdG9r
ZW4uCisgICAgICAgICAgICBicmFuY2gubG9ja193cml0ZSh0b2tlbj10b2tlbikKKyAgICAgICAg
ICAgIGJyYW5jaC51bmxvY2soKQorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgYnJhbmNo
LnVubG9jaygpCisgICAgICAgICMgVGhlIGxvY2sgc2hvdWxkIGJlIHVubG9ja2VkIG9uIGRpc2su
ICBWZXJpZnkgdGhhdCB3aXRoIGEgbmV3IGxvY2sKKyAgICAgICAgIyBpbnN0YW5jZS4KKyAgICAg
ICAgbmV3X2JyYW5jaCA9IGJyYW5jaC5ienJkaXIub3Blbl9icmFuY2goKQorICAgICAgICAjIENh
bGxpbmcgbG9ja193cml0ZSBub3cgc2hvdWxkIHdvcmssIHJhdGhlciB0aGFuIHJhaXNlIExvY2tD
b250ZW50aW9uLgorICAgICAgICBuZXdfYnJhbmNoLmxvY2tfd3JpdGUoKQorICAgICAgICBuZXdf
YnJhbmNoLnVubG9jaygpCisKKyAgICBkZWYgdGVzdF9sZWF2ZV9sb2NrX2luX3BsYWNlKHNlbGYp
OgorICAgICAgICBicmFuY2ggPSBzZWxmLm1ha2VfYnJhbmNoKCdiJykKKyAgICAgICAgIyBMb2Nr
IHRoZSBicmFuY2gsIHRoZW4gdXNlIGxlYXZlX2xvY2tfaW5fcGxhY2Ugc28gdGhhdCB3aGVuIHdl
CisgICAgICAgICMgdW5sb2NrIHRoZSBicmFuY2ggdGhlIGxvY2sgaXMgc3RpbGwgaGVsZCBvbiBk
aXNrLgorICAgICAgICB0b2tlbiA9IGJyYW5jaC5sb2NrX3dyaXRlKCkKKyAgICAgICAgdHJ5Ogor
ICAgICAgICAgICAgaWYgdG9rZW4gaXMgTm9uZToKKyAgICAgICAgICAgICAgICAjIFRoaXMgdGVz
dCBkb2VzIG5vdCBhcHBseSwgYmVjYXVzZSB0aGlzIHJlcG9zaXRvcnkgcmVmdXNlcyBsb2NrCisg
ICAgICAgICAgICAgICAgIyB0b2tlbnMuCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlz
ZXMoTm90SW1wbGVtZW50ZWRFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBicmFuY2gubGVhdmVfbG9ja19pbl9wbGFjZSkKKyAgICAgICAgICAgICAgICByZXR1cm4KKyAg
ICAgICAgICAgIGJyYW5jaC5sZWF2ZV9sb2NrX2luX3BsYWNlKCkKKyAgICAgICAgZmluYWxseToK
KyAgICAgICAgICAgIGJyYW5jaC51bmxvY2soKQorICAgICAgICAjIFdlIHNob3VsZCBiZSB1bmFi
bGUgdG8gcmVsb2NrIHRoZSByZXBvLgorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhlcnJvcnMu
TG9ja0NvbnRlbnRpb24sIGJyYW5jaC5sb2NrX3dyaXRlKQorCisgICAgZGVmIHRlc3RfZG9udF9s
ZWF2ZV9sb2NrX2luX3BsYWNlKHNlbGYpOgorICAgICAgICBicmFuY2ggPSBzZWxmLm1ha2VfYnJh
bmNoKCdiJykKKyAgICAgICAgIyBDcmVhdGUgYSBsb2NrIG9uIGRpc2suCisgICAgICAgIHRva2Vu
ID0gYnJhbmNoLmxvY2tfd3JpdGUoKQorICAgICAgICB0cnk6CisgICAgICAgICAgICBpZiB0b2tl
biBpcyBOb25lOgorICAgICAgICAgICAgICAgICMgVGhpcyB0ZXN0IGRvZXMgbm90IGFwcGx5LCBi
ZWNhdXNlIHRoaXMgYnJhbmNoIHJlZnVzZXMgbG9jaworICAgICAgICAgICAgICAgICMgdG9rZW5z
LgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE5vdEltcGxlbWVudGVkRXJyb3Is
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJhbmNoLmRvbnRfbGVhdmVfbG9j
a19pbl9wbGFjZSkKKyAgICAgICAgICAgICAgICByZXR1cm4KKyAgICAgICAgICAgIHRyeToKKyAg
ICAgICAgICAgICAgICBicmFuY2gubGVhdmVfbG9ja19pbl9wbGFjZSgpCisgICAgICAgICAgICBl
eGNlcHQgTm90SW1wbGVtZW50ZWRFcnJvcjoKKyAgICAgICAgICAgICAgICAjIFRoaXMgYnJhbmNo
IGRvZXNuJ3Qgc3VwcG9ydCB0aGlzIEFQSS4KKyAgICAgICAgICAgICAgICByZXR1cm4KKyAgICAg
ICAgICAgIGJyYW5jaC5yZXBvc2l0b3J5LmxlYXZlX2xvY2tfaW5fcGxhY2UoKQorICAgICAgICAg
ICAgcmVwb190b2tlbiA9IGJyYW5jaC5yZXBvc2l0b3J5LmxvY2tfd3JpdGUoKQorICAgICAgICAg
ICAgYnJhbmNoLnJlcG9zaXRvcnkudW5sb2NrKCkKKyAgICAgICAgZmluYWxseToKKyAgICAgICAg
ICAgIGJyYW5jaC51bmxvY2soKQorICAgICAgICAjIFJlYWNxdWlyZSB0aGUgbG9jayAod2l0aCBh
IGRpZmZlcmVudCBicmFuY2ggb2JqZWN0KSBieSB1c2luZyB0aGUKKyAgICAgICAgIyB0b2tlbnMu
CisgICAgICAgIG5ld19icmFuY2ggPSBicmFuY2guYnpyZGlyLm9wZW5fYnJhbmNoKCkKKyAgICAg
ICAgIyBXZSBoYXZlIHRvIGV4cGxpY2l0bHkgbG9jayB0aGUgcmVwb3NpdG9yeSBmaXJzdC4KKyAg
ICAgICAgbmV3X2JyYW5jaC5yZXBvc2l0b3J5LmxvY2tfd3JpdGUodG9rZW49cmVwb190b2tlbikK
KyAgICAgICAgbmV3X2JyYW5jaC5sb2NrX3dyaXRlKHRva2VuPXRva2VuKQorICAgICAgICAjIE5v
dyB3ZSBkb24ndCBuZWVkIG91ciBvd24gcmVwb3NpdG9yeSBsb2NrIGFueW1vcmUgKHRoZSBicmFu
Y2ggaXMKKyAgICAgICAgIyBob2xkaW5nIGl0IGZvciB1cykuCisgICAgICAgIG5ld19icmFuY2gu
cmVwb3NpdG9yeS51bmxvY2soKQorICAgICAgICAjIENhbGwgZG9udF9sZWF2ZV9sb2NrX2luX3Bs
YWNlLCBzbyB0aGF0IHRoZSBsb2NrIHdpbGwgYmUgcmVsZWFzZWQgYnkKKyAgICAgICAgIyB0aGlz
IGluc3RhbmNlLCBldmVuIHRob3VnaCB0aGUgbG9jayB3YXNuJ3Qgb3JpZ2luYWxseSBhY3F1aXJl
ZCBieSBpdC4KKyAgICAgICAgbmV3X2JyYW5jaC5kb250X2xlYXZlX2xvY2tfaW5fcGxhY2UoKQor
ICAgICAgICBuZXdfYnJhbmNoLnJlcG9zaXRvcnkuZG9udF9sZWF2ZV9sb2NrX2luX3BsYWNlKCkK
KyAgICAgICAgbmV3X2JyYW5jaC51bmxvY2soKQorICAgICAgICAjIE5vdyB0aGUgYnJhbmNoIChh
bmQgcmVwb3NpdG9yeSkgaXMgdW5sb2NrZWQuICBUZXN0IHRoaXMgYnkgbG9ja2luZyBpdAorICAg
ICAgICAjIHdpdGhvdXQgdG9rZW5zLgorICAgICAgICBicmFuY2gubG9ja193cml0ZSgpCisgICAg
ICAgIGJyYW5jaC51bmxvY2soKQorCiAgICAgZGVmIHRlc3RfbG9ja19yZWFkX3RoZW5fdW5sb2Nr
KHNlbGYpOgogICAgICAgICAjIENhbGxpbmcgbG9ja19yZWFkIHRoZW4gdW5sb2NraW5nIHNob3Vs
ZCB3b3JrIHdpdGhvdXQgZXJyb3JzLgogICAgICAgICBicmFuY2ggPSBzZWxmLm1ha2VfYnJhbmNo
KCdiJykKCg==

=== modified file bzrlib/tests/branch_implementations/test_parent.py // last-ch
... anged:andrew.bennetts@canonical.com-20070418053831-u9bbsbljuzymrz6z // enco
... ding:base64
LS0tIGJ6cmxpYi90ZXN0cy9icmFuY2hfaW1wbGVtZW50YXRpb25zL3Rlc3RfcGFyZW50LnB5Cisr
KyBienJsaWIvdGVzdHMvYnJhbmNoX2ltcGxlbWVudGF0aW9ucy90ZXN0X3BhcmVudC5weQpAQCAt
MTUsMTUgKzE1LDEyIEBACiAjIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3Vp
dGUgMzMwLCBCb3N0b24sIE1BICAwMjExMS0xMzA3ICBVU0EKIAogCi1pbXBvcnQgY1N0cmluZ0lP
Ci1pbXBvcnQgb3MKIGltcG9ydCBzeXMKIAotZnJvbSBienJsaWIuYnJhbmNoIGltcG9ydCBCcmFu
Y2gKIGltcG9ydCBienJsaWIuZXJyb3JzCi1mcm9tIGJ6cmxpYi5vc3V0aWxzIGltcG9ydCBhYnNw
YXRoLCByZWFscGF0aCwgZ2V0Y3dkCi1mcm9tIGJ6cmxpYi51cmx1dGlscyBpbXBvcnQgbG9jYWxf
cGF0aF9mcm9tX3VybCwgbG9jYWxfcGF0aF90b191cmwsIGVzY2FwZQorZnJvbSBienJsaWIub3N1
dGlscyBpbXBvcnQgZ2V0Y3dkCiBmcm9tIGJ6cmxpYi50ZXN0cyBpbXBvcnQgVGVzdENhc2VXaXRo
VHJhbnNwb3J0Citmcm9tIGJ6cmxpYiBpbXBvcnQgdXJsdXRpbHMKIAogCiAiIiJUZXN0cyBmb3Ig
QnJhbmNoIHBhcmVudCBVUkwiIiIKQEAgLTM4LDcgKzM1LDcgQEAKICAgICAgICAgCiAgICAgZGVm
IHRlc3Rfc2V0X2dldF9wYXJlbnQoc2VsZik6CiAgICAgICAgICIiIlNldCwgcmUtZ2V0IGFuZCBy
ZXNldCB0aGUgcGFyZW50IiIiCi0gICAgICAgIGIgPSBzZWxmLm1ha2VfYnJhbmNoKCcuJykKKyAg
ICAgICAgYiA9IHNlbGYubWFrZV9icmFuY2goJ3N1YmRpcicpCiAgICAgICAgIHVybCA9ICdodHRw
Oi8vYmF6YWFyLXZjcy5vcmcvYnpyL2J6ci5kZXYnCiAgICAgICAgIGIuc2V0X3BhcmVudCh1cmwp
CiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodXJsLCBiLmdldF9wYXJlbnQoKSkKQEAgLTQ5LDE1
ICs0NiwxNyBAQAogCiAgICAgICAgIGIuc2V0X3BhcmVudCgnLi4vb3RoZXJfYnJhbmNoJykKIAot
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxvY2FsX3BhdGhfdG9fdXJsKCcuLi9vdGhlcl9icmFu
Y2gnKSwgYi5nZXRfcGFyZW50KCkpCi0gICAgICAgIHBhdGggPSBsb2NhbF9wYXRoX3RvX3VybCgn
Li4veWFuYicpCisgICAgICAgIGV4cGVjdGVkX3BhcmVudCA9IHVybHV0aWxzLmpvaW4oc2VsZi5n
ZXRfdXJsKCdzdWJkaXInKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAnLi4vb3RoZXJfYnJhbmNoJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChleHBlY3RlZF9w
YXJlbnQsIGIuZ2V0X3BhcmVudCgpKQorICAgICAgICBwYXRoID0gdXJsdXRpbHMuam9pbihzZWxm
LmdldF91cmwoJ3N1YmRpcicpLCAnLi4veWFuYicpCiAgICAgICAgIGIuc2V0X3BhcmVudChwYXRo
KQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCcuLi95YW5iJywgYi5fZ2V0X3BhcmVudF9sb2Nh
dGlvbigpKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBhdGgsIGIuZ2V0X3BhcmVudCgpKQog
CiAKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoYnpybGliLmVycm9ycy5JbnZhbGlkVVJMLCBi
LnNldF9wYXJlbnQsIHUnXHhiNScpCi0gICAgICAgIGIuc2V0X3BhcmVudChlc2NhcGUodSdceGI1
JykpCisgICAgICAgIGIuc2V0X3BhcmVudCh1cmx1dGlscy5lc2NhcGUodSdceGI1JykpCiAgICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwoJyVDMiVCNScsIGIuX2dldF9wYXJlbnRfbG9jYXRpb24oKSkK
IAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGIuYmFzZSArICclQzIlQjUnLCBiLmdldF9wYXJl
bnQoKSkKCg==

=== modified file bzrlib/tests/branch_implementations/test_permissions.py // la
... st-changed:andrew.bennetts@canonical.com-20070316032017-n43z217c0h6gkuns //
...  encoding:base64
LS0tIGJ6cmxpYi90ZXN0cy9icmFuY2hfaW1wbGVtZW50YXRpb25zL3Rlc3RfcGVybWlzc2lvbnMu
cHkKKysrIGJ6cmxpYi90ZXN0cy9icmFuY2hfaW1wbGVtZW50YXRpb25zL3Rlc3RfcGVybWlzc2lv
bnMucHkKQEAgLTM1LDYgKzM1LDcgQEAKIGZyb20gYnpybGliLmJyYW5jaCBpbXBvcnQgQnJhbmNo
CiBmcm9tIGJ6cmxpYi5ienJkaXIgaW1wb3J0IEJ6ckRpcgogZnJvbSBienJsaWIubG9ja2FibGVf
ZmlsZXMgaW1wb3J0IExvY2thYmxlRmlsZXMKK2Zyb20gYnpybGliLnJlbW90ZSBpbXBvcnQgUmVt
b3RlQnJhbmNoRm9ybWF0CiBmcm9tIGJ6cmxpYi50ZXN0cyBpbXBvcnQgVGVzdENhc2VXaXRoVHJh
bnNwb3J0LCBUZXN0U2tpcHBlZAogZnJvbSBienJsaWIudGVzdHMudGVzdF9wZXJtaXNzaW9ucyBp
bXBvcnQgY2htb2RfciwgY2hlY2tfbW9kZV9yCiBmcm9tIGJ6cmxpYi50ZXN0cy50ZXN0X3NmdHBf
dHJhbnNwb3J0IGltcG9ydCBUZXN0Q2FzZVdpdGhTRlRQU2VydmVyCkBAIC00NSw2ICs0NiwxMCBA
QAogY2xhc3MgVGVzdFBlcm1pc3Npb25zKFRlc3RDYXNlV2l0aFRyYW5zcG9ydCk6CiAKICAgICBk
ZWYgdGVzdF9uZXdfYnJhbmNoKHNlbGYpOgorICAgICAgICBpZiBpc2luc3RhbmNlKHNlbGYuYnJh
bmNoX2Zvcm1hdCwgUmVtb3RlQnJhbmNoRm9ybWF0KToKKyAgICAgICAgICAgICMgUmVtb3RlIGJy
YW5jaCBmb3JtYXQgaGF2ZSBubyBwZXJtaXNzaW9uIGxvZ2ljIGluIHRoZW07IHRoZXJlJ3MKKyAg
ICAgICAgICAgICMgbm90aGluZyB0byB0ZXN0IGhlcmUuCisgICAgICAgICAgICByZXR1cm4KICAg
ICAgICAgaWYgc3lzLnBsYXRmb3JtID09ICd3aW4zMic6CiAgICAgICAgICAgICByYWlzZSBUZXN0
U2tpcHBlZCgnY2htb2QgaGFzIG5vIGVmZmVjdCBvbiB3aW4zMicpCiAgICAgICAgICMgYWxzbywg
dGhlc2UgYXJlIEJ6ckJyYW5jaCBmb3JtYXQgc3BlY2lmaWMgdGhpbmdzLi4KCg==

=== modified file bzrlib/tests/branch_implementations/test_pull.py // last-chan
... ged:mbp@sourcefrog.net-20070504084639-8v8mzetmr1y74xer // encoding:base64
LS0tIGJ6cmxpYi90ZXN0cy9icmFuY2hfaW1wbGVtZW50YXRpb25zL3Rlc3RfcHVsbC5weQorKysg
YnpybGliL3Rlc3RzL2JyYW5jaF9pbXBsZW1lbnRhdGlvbnMvdGVzdF9wdWxsLnB5CkBAIC0xOCwx
MCArMTgsMTIgQEAKIAogaW1wb3J0IG9zCiAKLWZyb20gYnpybGliLmJyYW5jaCBpbXBvcnQgQnJh
bmNoCitmcm9tIGJ6cmxpYi5icmFuY2ggaW1wb3J0IEJyYW5jaCwgQnpyQnJhbmNoRm9ybWF0NQor
ZnJvbSBienJsaWIuYnpyZGlyIGltcG9ydCBCenJEaXIKIGZyb20gYnpybGliIGltcG9ydCBlcnJv
cnMKIGZyb20gYnpybGliLm1lbW9yeXRyZWUgaW1wb3J0IE1lbW9yeVRyZWUKIGZyb20gYnpybGli
LnJldmlzaW9uIGltcG9ydCBOVUxMX1JFVklTSU9OCitmcm9tIGJ6cmxpYi50ZXN0cyBpbXBvcnQg
VGVzdFNraXBwZWQKIGZyb20gYnpybGliLnRlc3RzLmJyYW5jaF9pbXBsZW1lbnRhdGlvbnMudGVz
dF9icmFuY2ggaW1wb3J0IFRlc3RDYXNlV2l0aEJyYW5jaAogCiAKQEAgLTE0Miw4ICsxNDQsMTMg
QEAKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgbG9jYWwuYmluZCh0YXJnZXQpCiAgICAgICAg
IGV4Y2VwdCBlcnJvcnMuVXBncmFkZVJlcXVpcmVkOgotICAgICAgICAgICAgIyBjYW50IGJpbmQg
dGhpcyBmb3JtYXQsIHRoZSB0ZXN0IGlzIGlycmVsZXZhbnQuCi0gICAgICAgICAgICByZXR1cm4K
KyAgICAgICAgICAgICMgV2UgY2FuJ3QgYmluZCB0aGlzIGZvcm1hdCB0byBpdHNlbGYtIHR5cGlj
YWxseSBpdCBpcyB0aGUgbG9jYWwKKyAgICAgICAgICAgICMgYnJhbmNoIHRoYXQgZG9lc24ndCBz
dXBwb3J0IGJpbmRpbmcuICBBcyBvZiBNYXkgMjAwNworICAgICAgICAgICAgIyByZW1vdGVicmFu
Y2hlcyBjYW4ndCBiZSBib3VuZC4gIExldCdzIGluc3RlYWQgbWFrZSBhIG5ldyBsb2NhbAorICAg
ICAgICAgICAgIyBicmFuY2ggb2YgdGhlIGRlZmF1bHQgdHlwZSwgd2hpY2ggZG9lcyBhbGxvdyBi
aW5kaW5nLgorICAgICAgICAgICAgIyBTZWUgaHR0cHM6Ly9idWdzLmxhdW5jaHBhZC5uZXQvYnpy
LytidWcvMTEyMDIwCisgICAgICAgICAgICBsb2NhbCA9IEJ6ckRpci5jcmVhdGVfYnJhbmNoX2Nv
bnZlbmllbmNlKCdsb2NhbDInKQorICAgICAgICAgICAgbG9jYWwuYmluZCh0YXJnZXQpCiAgICAg
ICAgIHNvdXJjZSA9IHNlbGYubWFrZV9icmFuY2goJ3NvdXJjZScpCiAgICAgICAgIEJyYW5jaC5o
b29rcy5pbnN0YWxsX2hvb2soJ3Bvc3RfcHVsbCcsIHNlbGYuY2FwdHVyZV9wb3N0X3B1bGxfaG9v
aykKICAgICAgICAgbG9jYWwucHVsbChzb3VyY2UpCgo=

=== modified file bzrlib/tests/branch_implementations/test_push.py // last-chan
... ged:mbp@sourcefrog.net-20070507120314-a2h78bjezemwyl17 // encoding:base64
LS0tIGJ6cmxpYi90ZXN0cy9icmFuY2hfaW1wbGVtZW50YXRpb25zL3Rlc3RfcHVzaC5weQorKysg
YnpybGliL3Rlc3RzL2JyYW5jaF9pbXBsZW1lbnRhdGlvbnMvdGVzdF9wdXNoLnB5CkBAIC0xNywx
MiArMTcsMTYgQEAKICIiIlRlc3RzIGZvciBicmFuY2gucHVzaCBiZWhhdmlvdXIuIiIiCiAKIGlt
cG9ydCBvcwotCisgCitmcm9tIGJ6cmxpYiBpbXBvcnQgYnpyZGlyLCBlcnJvcnMKIGZyb20gYnpy
bGliLmJyYW5jaCBpbXBvcnQgQnJhbmNoCi1mcm9tIGJ6cmxpYiBpbXBvcnQgZXJyb3JzCitmcm9t
IGJ6cmxpYi5ienJkaXIgaW1wb3J0IEJ6ckRpcgogZnJvbSBienJsaWIubWVtb3J5dHJlZSBpbXBv
cnQgTWVtb3J5VHJlZQorZnJvbSBienJsaWIucmVtb3RlIGltcG9ydCBSZW1vdGVCcmFuY2gKIGZy
b20gYnpybGliLnJldmlzaW9uIGltcG9ydCBOVUxMX1JFVklTSU9OCitmcm9tIGJ6cmxpYi50ZXN0
cyBpbXBvcnQgVGVzdFNraXBwZWQKIGZyb20gYnpybGliLnRlc3RzLmJyYW5jaF9pbXBsZW1lbnRh
dGlvbnMudGVzdF9icmFuY2ggaW1wb3J0IFRlc3RDYXNlV2l0aEJyYW5jaAorZnJvbSBienJsaWIu
dHJhbnNwb3J0LmxvY2FsIGltcG9ydCBMb2NhbFVSTFNlcnZlcgogCiAKIGNsYXNzIFRlc3RQdXNo
KFRlc3RDYXNlV2l0aEJyYW5jaCk6CkBAIC0xMzIsNyArMTM2LDEzIEBACiAgICAgICAgIHRyeToK
ICAgICAgICAgICAgIHRyZWUgPSBhX2JyYW5jaC5ienJkaXIuY3JlYXRlX3dvcmtpbmd0cmVlKCkK
ICAgICAgICAgZXhjZXB0IGVycm9ycy5Ob3RMb2NhbFVybDoKLSAgICAgICAgICAgIHRyZWUgPSBh
X2JyYW5jaC5jcmVhdGVfY2hlY2tvdXQoJ3JlcG8vdHJlZScsIGxpZ2h0d2VpZ2h0PVRydWUpCisg
ICAgICAgICAgICBpZiBzZWxmLnZmc190cmFuc3BvcnRfZmFjdG9yeSBpcyBMb2NhbFVSTFNlcnZl
cjoKKyAgICAgICAgICAgICAgICAjIHRoZSBicmFuY2ggaXMgY29sb2NhdGVkIG9uIGRpc2ssIHdl
IGNhbm5vdCBjcmVhdGUgYSBjaGVja291dC4KKyAgICAgICAgICAgICAgICAjIGhvcGVmdWxseSBj
YWxsZXJzIHdpbGwgZXhwZWN0IHRoaXMuCisgICAgICAgICAgICAgICAgbG9jYWxfY29udHJvbGRp
cj0gYnpyZGlyLkJ6ckRpci5vcGVuKHNlbGYuZ2V0X3Zmc19vbmx5X3VybCgncmVwby90cmVlJykp
CisgICAgICAgICAgICAgICAgdHJlZSA9IGxvY2FsX2NvbnRyb2xkaXIuY3JlYXRlX3dvcmtpbmd0
cmVlKCkKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgdHJlZSA9IGFfYnJhbmNo
LmNyZWF0ZV9jaGVja291dCgncmVwby90cmVlJywgbGlnaHR3ZWlnaHQ9VHJ1ZSkKICAgICAgICAg
c2VsZi5idWlsZF90cmVlKFsncmVwby90cmVlL2EnXSkKICAgICAgICAgdHJlZS5hZGQoWydhJ10p
CiAgICAgICAgIHRyZWUuY29tbWl0KCdhJykKQEAgLTE5Myw4ICsyMDMsMTMgQEAKICAgICAgICAg
dHJ5OgogICAgICAgICAgICAgbG9jYWwuYmluZCh0YXJnZXQpCiAgICAgICAgIGV4Y2VwdCBlcnJv
cnMuVXBncmFkZVJlcXVpcmVkOgotICAgICAgICAgICAgIyBjYW50IGJpbmQgdGhpcyBmb3JtYXQs
IHRoZSB0ZXN0IGlzIGlycmVsZXZhbnQuCi0gICAgICAgICAgICByZXR1cm4KKyAgICAgICAgICAg
ICMgV2UgY2FuJ3QgYmluZCB0aGlzIGZvcm1hdCB0byBpdHNlbGYtIHR5cGljYWxseSBpdCBpcyB0
aGUgbG9jYWwKKyAgICAgICAgICAgICMgYnJhbmNoIHRoYXQgZG9lc24ndCBzdXBwb3J0IGJpbmRp
bmcuICBBcyBvZiBNYXkgMjAwNworICAgICAgICAgICAgIyByZW1vdGVicmFuY2hlcyBjYW4ndCBi
ZSBib3VuZC4gIExldCdzIGluc3RlYWQgbWFrZSBhIG5ldyBsb2NhbAorICAgICAgICAgICAgIyBi
cmFuY2ggb2YgdGhlIGRlZmF1bHQgdHlwZSwgd2hpY2ggZG9lcyBhbGxvdyBiaW5kaW5nLgorICAg
ICAgICAgICAgIyBTZWUgaHR0cHM6Ly9idWdzLmxhdW5jaHBhZC5uZXQvYnpyLytidWcvMTEyMDIw
CisgICAgICAgICAgICBsb2NhbCA9IEJ6ckRpci5jcmVhdGVfYnJhbmNoX2NvbnZlbmllbmNlKCds
b2NhbDInKQorICAgICAgICAgICAgbG9jYWwuYmluZCh0YXJnZXQpCiAgICAgICAgIHNvdXJjZSA9
IHNlbGYubWFrZV9icmFuY2goJ3NvdXJjZScpCiAgICAgICAgIEJyYW5jaC5ob29rcy5pbnN0YWxs
X2hvb2soJ3Bvc3RfcHVzaCcsIHNlbGYuY2FwdHVyZV9wb3N0X3B1c2hfaG9vaykKICAgICAgICAg
c291cmNlLnB1c2gobG9jYWwpCgo=

=== modified file bzrlib/tests/branch_implementations/test_tags.py // last-chan
... ged:bialix@ukr.net-20070419200150-yyltrlev3s65w9h9 // encoding:base64
LS0tIGJ6cmxpYi90ZXN0cy9icmFuY2hfaW1wbGVtZW50YXRpb25zL3Rlc3RfdGFncy5weQorKysg
YnpybGliL3Rlc3RzL2JyYW5jaF9pbXBsZW1lbnRhdGlvbnMvdGVzdF90YWdzLnB5CkBAIC03MSw2
ICs3MSwxNyBAQAogICAgICAgICBzZWxmLmFzc2VydFRydWUoYi50YWdzLmhhc190YWcoJ3RhZy1u
YW1lJykpCiAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoYi50YWdzLmhhc190YWcoJ2ltYWdpbmFy
eScpKQogCisgICAgZGVmIHRlc3RfcmV2ZXJzZV90YWdfZGljdChzZWxmKToKKyAgICAgICAgYiA9
IHNlbGYubWFrZV9icmFuY2goJ2InKQorICAgICAgICBiLnRhZ3Muc2V0X3RhZygndGFnLW5hbWUn
LCAndGFyZ2V0LXJldmlkLTEnKQorICAgICAgICBiLnRhZ3Muc2V0X3RhZygnb3RoZXItbmFtZScs
ICd0YXJnZXQtcmV2aWQtMicpCisgICAgICAgICMgdGhlbiByZW9wZW4gdGhlIGJyYW5jaCBhbmQg
Y2hlY2sgcmV2ZXJzZSBtYXAgaWQtPnRhZ3MgbGlzdAorICAgICAgICBiID0gQnJhbmNoLm9wZW4o
J2InKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGIudGFncy5nZXRfcmV2ZXJzZV90YWdfZGlj
dCgpLAorICAgICAgICAgICAgeyd0YXJnZXQtcmV2aWQtMSc6IFsndGFnLW5hbWUnXSwKKyAgICAg
ICAgICAgICAndGFyZ2V0LXJldmlkLTInOiBbJ290aGVyLW5hbWUnXSwKKyAgICAgICAgICAgIH0p
CisKICAgICBkZWYgdGVzdF9ub19zdWNoX3RhZyhzZWxmKToKICAgICAgICAgYiA9IHNlbGYubWFr
ZV9icmFuY2goJ2InKQogICAgICAgICB0cnk6Cgo=

=== modified file bzrlib/tests/bzrdir_implementations/__init__.py // last-chang
... ed:john@arbash-meinel.com-20070501224141-23intuz4dabm0j73 // encoding:base6
... 4
LS0tIGJ6cmxpYi90ZXN0cy9ienJkaXJfaW1wbGVtZW50YXRpb25zL19faW5pdF9fLnB5CisrKyBi
enJsaWIvdGVzdHMvYnpyZGlyX2ltcGxlbWVudGF0aW9ucy9fX2luaXRfXy5weQpAQCAtMjgsOSAr
MjgsMjcgQEAKIGZyb20gYnpybGliLnRlc3RzIGltcG9ydCAoCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGFkYXB0X21vZHVsZXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHRf
dHJhbnNwb3J0LAorICAgICAgICAgICAgICAgICAgICAgICAgICBUZXN0Q2FzZVdpdGhUcmFuc3Bv
cnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIFRlc3RMb2FkZXIsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFRlc3RTdWl0ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgKQorZnJv
bSBienJsaWIudHJhbnNwb3J0Lm1lbW9yeSBpbXBvcnQgTWVtb3J5U2VydmVyCisKKworY2xhc3Mg
VGVzdENhc2VXaXRoQnpyRGlyKFRlc3RDYXNlV2l0aFRyYW5zcG9ydCk6CisKKyAgICBkZWYgc2V0
VXAoc2VsZik6CisgICAgICAgIHN1cGVyKFRlc3RDYXNlV2l0aEJ6ckRpciwgc2VsZikuc2V0VXAo
KQorICAgICAgICBzZWxmLmJ6cmRpciA9IE5vbmUKKworICAgIGRlZiBnZXRfYnpyZGlyKHNlbGYp
OgorICAgICAgICBpZiBzZWxmLmJ6cmRpciBpcyBOb25lOgorICAgICAgICAgICAgc2VsZi5ienJk
aXIgPSBzZWxmLm1ha2VfYnpyZGlyKE5vbmUpCisgICAgICAgIHJldHVybiBzZWxmLmJ6cmRpcgor
CisgICAgZGVmIG1ha2VfYnpyZGlyKHNlbGYsIHJlbHBhdGgsIGZvcm1hdD1Ob25lKToKKyAgICAg
ICAgcmV0dXJuIHN1cGVyKFRlc3RDYXNlV2l0aEJ6ckRpciwgc2VsZikubWFrZV9ienJkaXIoCisg
ICAgICAgICAgICByZWxwYXRoLCBmb3JtYXQ9c2VsZi5ienJkaXJfZm9ybWF0KQogCiAKIGRlZiB0
ZXN0X3N1aXRlKCk6CkBAIC00MSwxMCArNTksMzAgQEAKICAgICBmb3JtYXRzID0gQnpyRGlyRm9y
bWF0Lmtub3duX2Zvcm1hdHMoKQogICAgIGFkYXB0ZXIgPSBCenJEaXJUZXN0UHJvdmlkZXJBZGFw
dGVyKAogICAgICAgICBkZWZhdWx0X3RyYW5zcG9ydCwKKyAgICAgICAgTm9uZSwKICAgICAgICAg
IyBOb25lIGhlcmUgd2lsbCBjYXVzZSBhIHJlYWRvbmx5IGRlY29yYXRvciB0byBiZSBjcmVhdGVk
CiAgICAgICAgICMgYnkgdGhlIFRlc3RDYXNlV2l0aFRyYW5zcG9ydC5nZXRfcmVhZG9ubHlfdHJh
bnNwb3J0IG1ldGhvZC4KICAgICAgICAgTm9uZSwKICAgICAgICAgZm9ybWF0cykKICAgICBsb2Fk
ZXIgPSBUZXN0TG9hZGVyKCkKICAgICBhZGFwdF9tb2R1bGVzKHRlc3RfYnpyZGlyX2ltcGxlbWVu
dGF0aW9ucywgYWRhcHRlciwgbG9hZGVyLCByZXN1bHQpCisKKyAgICAjIFRoaXMgd2lsbCBhbHdh
eXMgYWRkIHRoZSB0ZXN0cyBmb3Igc21hcnQgc2VydmVyIHRyYW5zcG9ydCwgcmVnYXJkbGVzcyBv
ZgorICAgICMgdGhlIC0tdHJhbnNwb3J0IG9wdGlvbiB0aGUgdXNlciBzcGVjaWZpZWQgdG8gJ2J6
ciBzZWxmdGVzdCcuCisgICAgZnJvbSBienJsaWIuc21hcnQuc2VydmVyIGltcG9ydCBTbWFydFRD
UFNlcnZlcl9mb3JfdGVzdGluZywgUmVhZG9ubHlTbWFydFRDUFNlcnZlcl9mb3JfdGVzdGluZwor
ICAgIGZyb20gYnpybGliLnJlbW90ZSBpbXBvcnQgUmVtb3RlQnpyRGlyRm9ybWF0CisKKyAgICAj
IHRlc3QgdGhlIHJlbW90ZSBzZXJ2ZXIgYmVoYXZpb3VyIHVzaW5nIGEgTWVtb3J5VHJhbnNwb3J0
CisgICAgc21hcnRfc2VydmVyX3N1aXRlID0gVGVzdFN1aXRlKCkKKyAgICBhZGFwdF90b19zbWFy
dF9zZXJ2ZXIgPSBCenJEaXJUZXN0UHJvdmlkZXJBZGFwdGVyKAorICAgICAgICBNZW1vcnlTZXJ2
ZXIsCisgICAgICAgIFNtYXJ0VENQU2VydmVyX2Zvcl90ZXN0aW5nLAorICAgICAgICBSZWFkb25s
eVNtYXJ0VENQU2VydmVyX2Zvcl90ZXN0aW5nLAorICAgICAgICBbKFJlbW90ZUJ6ckRpckZvcm1h
dCgpKV0pCisgICAgYWRhcHRfbW9kdWxlcyh0ZXN0X2J6cmRpcl9pbXBsZW1lbnRhdGlvbnMsCisg
ICAgICAgICAgICAgICAgICBhZGFwdF90b19zbWFydF9zZXJ2ZXIsCisgICAgICAgICAgICAgICAg
ICBUZXN0TG9hZGVyKCksCisgICAgICAgICAgICAgICAgICBzbWFydF9zZXJ2ZXJfc3VpdGUpCisg
ICAgcmVzdWx0LmFkZFRlc3RzKHNtYXJ0X3NlcnZlcl9zdWl0ZSkKKwogICAgIHJldHVybiByZXN1
bHQKCg==

=== modified file bzrlib/tests/bzrdir_implementations/test_bzrdir.py // last-ch
... anged:john@arbash-meinel.com-20070501224141-23intuz4dabm0j73 // encoding:ba
... se64
LS0tIGJ6cmxpYi90ZXN0cy9ienJkaXJfaW1wbGVtZW50YXRpb25zL3Rlc3RfYnpyZGlyLnB5Cisr
KyBienJsaWIvdGVzdHMvYnpyZGlyX2ltcGxlbWVudGF0aW9ucy90ZXN0X2J6cmRpci5weQpAQCAt
NDgsMjkgKzQ4LDE0IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgIFRlc3RDYXNlV2l0aFRy
YW5zcG9ydCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgVGVzdFNraXBwZWQsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICkKK2Zyb20gYnpybGliLnRlc3RzLmJ6cmRpcl9pbXBsZW1lbnRh
dGlvbnMgaW1wb3J0IFRlc3RDYXNlV2l0aEJ6ckRpcgogZnJvbSBienJsaWIudHJhY2UgaW1wb3J0
IG11dHRlcgogZnJvbSBienJsaWIudHJhbnNwb3J0IGltcG9ydCBnZXRfdHJhbnNwb3J0CiBmcm9t
IGJ6cmxpYi51cGdyYWRlIGltcG9ydCB1cGdyYWRlCitmcm9tIGJ6cmxpYi5yZW1vdGUgaW1wb3J0
IFJlbW90ZUJ6ckRpcgogZnJvbSBienJsaWIucmVwb2ZtdCBpbXBvcnQgd2VhdmVyZXBvCiAKIAot
Y2xhc3MgVGVzdENhc2VXaXRoQnpyRGlyKFRlc3RDYXNlV2l0aFRyYW5zcG9ydCk6Ci0KLSAgICBk
ZWYgc2V0VXAoc2VsZik6Ci0gICAgICAgIHN1cGVyKFRlc3RDYXNlV2l0aEJ6ckRpciwgc2VsZiku
c2V0VXAoKQotICAgICAgICBzZWxmLmJ6cmRpciA9IE5vbmUKLQotICAgIGRlZiBnZXRfYnpyZGly
KHNlbGYpOgotICAgICAgICBpZiBzZWxmLmJ6cmRpciBpcyBOb25lOgotICAgICAgICAgICAgc2Vs
Zi5ienJkaXIgPSBzZWxmLm1ha2VfYnpyZGlyKE5vbmUpCi0gICAgICAgIHJldHVybiBzZWxmLmJ6
cmRpcgotCi0gICAgZGVmIG1ha2VfYnpyZGlyKHNlbGYsIHJlbHBhdGgsIGZvcm1hdD1Ob25lKToK
LSAgICAgICAgcmV0dXJuIHN1cGVyKFRlc3RDYXNlV2l0aEJ6ckRpciwgc2VsZikubWFrZV9ienJk
aXIoCi0gICAgICAgICAgICByZWxwYXRoLCBmb3JtYXQ9c2VsZi5ienJkaXJfZm9ybWF0KQotCi0K
LQogY2xhc3MgVGVzdEJ6ckRpcihUZXN0Q2FzZVdpdGhCenJEaXIpOgogICAgICMgTWFueSBvZiB0
aGVzZSB0ZXN0cyB0ZXN0IGZvciBkaXNrIGVxdWFsaXR5IHJhdGhlciB0aGFuIGNoZWNraW5nCiAg
ICAgIyBmb3Igc2VtYW50aWMgZXF1aXZhbGVuY2UuIFRoaXMgd29ya3Mgd2VsbCBmb3Igc29tZSB0
ZXN0cyBidXQKQEAgLTE3OCw3ICsxNjMsMjcgQEAKICAgICAgICAgYnpyZGlyLmRlc3Ryb3lfd29y
a2luZ3RyZWVfbWV0YWRhdGEoKQogICAgICAgICBzZWxmLmZhaWxVbmxlc3NFeGlzdHMoJ3RyZWUv
ZmlsZScpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKGVycm9ycy5Ob1dvcmtpbmdUcmVlLCBi
enJkaXIub3Blbl93b3JraW5ndHJlZSkKLSAgICAgICAgICAgIAorCisgICAgZGVmIHRlc3Rfb3Bl
bl93b3JraW5ndHJlZV9yYWlzZXNfbm9fd29ya2luZ190cmVlKHNlbGYpOgorICAgICAgICAiIiJC
enJEaXIub3Blbl93b3JraW5ndHJlZSgpIHNob3VsZCByYWlzZSBOb1dvcmtpbmdUcmVlIChyYXRo
ZXIgdGhhbgorICAgICAgICBlLmcuIE5vdExvY2FsVXJsKSBpZiB0aGVyZSBpcyBubyB3b3JraW5n
IHRyZWUuCisgICAgICAgICIiIgorICAgICAgICBkaXIgPSBzZWxmLm1ha2VfYnpyZGlyKCdzb3Vy
Y2UnKQorICAgICAgICB2ZnNfZGlyID0gYnpyZGlyLkJ6ckRpci5vcGVuKHNlbGYuZ2V0X3Zmc19v
bmx5X3VybCgnc291cmNlJykpCisgICAgICAgIGlmIHZmc19kaXIuaGFzX3dvcmtpbmd0cmVlKCk6
CisgICAgICAgICAgICAjIFRoaXMgQnpyRGlyIGZvcm1hdCBkb2Vzbid0IHN1cHBvcnQgQnpyRGly
cyB3aXRob3V0IHdvcmtpbmcgdHJlZXMsCisgICAgICAgICAgICAjIHNvIHRoaXMgdGVzdCBpcyBp
cnJlbGV2YW50LgorICAgICAgICAgICAgcmV0dXJuCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2Vz
KGVycm9ycy5Ob1dvcmtpbmdUcmVlLCBkaXIub3Blbl93b3JraW5ndHJlZSkKKworICAgIGRlZiB0
ZXN0X2Nsb25lX29uX3RyYW5zcG9ydChzZWxmKToKKyAgICAgICAgYV9kaXIgPSBzZWxmLm1ha2Vf
YnpyZGlyKCdzb3VyY2UnKQorICAgICAgICB0YXJnZXRfdHJhbnNwb3J0ID0gYV9kaXIucm9vdF90
cmFuc3BvcnQuY2xvbmUoJy4uJykuY2xvbmUoJ3RhcmdldCcpCisgICAgICAgIHRhcmdldCA9IGFf
ZGlyLmNsb25lX29uX3RyYW5zcG9ydCh0YXJnZXRfdHJhbnNwb3J0KQorICAgICAgICBzZWxmLmFz
c2VydE5vdEVxdWFsKGFfZGlyLnRyYW5zcG9ydC5iYXNlLCB0YXJnZXQudHJhbnNwb3J0LmJhc2Up
CisgICAgICAgIHNlbGYuYXNzZXJ0RGlyZWN0b3JpZXNFcXVhbChhX2Rpci5yb290X3RyYW5zcG9y
dCwgdGFyZ2V0LnJvb3RfdHJhbnNwb3J0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgWycuLy5ienIvbWVyZ2UtaGFzaGVzJ10pCisKICAgICBkZWYgdGVzdF9jbG9uZV9ienJk
aXJfZW1wdHkoc2VsZik6CiAgICAgICAgIGRpciA9IHNlbGYubWFrZV9ienJkaXIoJ3NvdXJjZScp
CiAgICAgICAgIHRhcmdldCA9IGRpci5jbG9uZShzZWxmLmdldF91cmwoJ3RhcmdldCcpKQpAQCAt
MjMxLDIzICsyMzYsMzQgQEAKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoZXJyb3JzLk5vUmVw
b3NpdG9yeVByZXNlbnQsIHRhcmdldC5vcGVuX3JlcG9zaXRvcnkpCiAKICAgICBkZWYgdGVzdF9j
bG9uZV9ienJkaXJfcmVwb3NpdG9yeV9icmFuY2hfYm90aF91bmRlcl9zaGFyZWQoc2VsZik6Cisg
ICAgICAgICMgQ3JlYXRlIGEgc2hhcmVkIHJlcG9zaXRvcnkKICAgICAgICAgdHJ5OgogICAgICAg
ICAgICAgc2hhcmVkX3JlcG8gPSBzZWxmLm1ha2VfcmVwb3NpdG9yeSgnc2hhcmVkJywgc2hhcmVk
PVRydWUpCiAgICAgICAgIGV4Y2VwdCBlcnJvcnMuSW5jb21wYXRpYmxlRm9ybWF0OgogICAgICAg
ICAgICAgcmV0dXJuCisgICAgICAgICMgTWFrZSBhIGJyYW5jaCwgJ2NvbW1pdF90cmVlJywgYW5k
IHdvcmtpbmcgdHJlZSBvdXRzaWRlIG9mIHRoZSBzaGFyZWQKKyAgICAgICAgIyByZXBvc2l0b3J5
LCBhbmQgY29tbWl0IHNvbWUgcmV2aXNpb25zIHRvIGl0LgogICAgICAgICB0cmVlID0gc2VsZi5t
YWtlX2JyYW5jaF9hbmRfdHJlZSgnY29tbWl0X3RyZWUnKQotICAgICAgICBzZWxmLmJ1aWxkX3Ry
ZWUoWydmb28nXSwgdHJhbnNwb3J0PXRyZWUuYnpyZGlyLnRyYW5zcG9ydC5jbG9uZSgnLi4nKSkK
KyAgICAgICAgc2VsZi5idWlsZF90cmVlKFsnZm9vJ10sIHRyYW5zcG9ydD10cmVlLmJ6cmRpci5y
b290X3RyYW5zcG9ydCkKICAgICAgICAgdHJlZS5hZGQoJ2ZvbycpCiAgICAgICAgIHRyZWUuY29t
bWl0KCdyZXZpc2lvbiAxJywgcmV2X2lkPScxJykKICAgICAgICAgdHJlZS5ienJkaXIub3Blbl9i
cmFuY2goKS5zZXRfcmV2aXNpb25faGlzdG9yeShbXSkKICAgICAgICAgdHJlZS5zZXRfcGFyZW50
X3RyZWVzKFtdKQogICAgICAgICB0cmVlLmNvbW1pdCgncmV2aXNpb24gMicsIHJldl9pZD0nMicp
Ci0gICAgICAgIHRyZWUuYnpyZGlyLm9wZW5fcmVwb3NpdG9yeSgpLmNvcHlfY29udGVudF9pbnRv
KHNoYXJlZF9yZXBvKQorICAgICAgICAjIENvcHkgdGhlIGNvbnRlbnQgKGkuZS4gcmV2aXNpb25z
KSBmcm9tIHRoZSAnY29tbWl0X3RyZWUnIGJyYW5jaCdzCisgICAgICAgICMgcmVwb3NpdG9yeSBp
bnRvIHRoZSBzaGFyZWQgcmVwb3NpdG9yeS4KKyAgICAgICAgdHJlZS5icmFuY2gucmVwb3NpdG9y
eS5jb3B5X2NvbnRlbnRfaW50byhzaGFyZWRfcmVwbykKKyAgICAgICAgIyBNYWtlIGEgYnJhbmNo
ICdzb3VyY2UnIGluc2lkZSB0aGUgc2hhcmVkIHJlcG9zaXRvcnkuCiAgICAgICAgIGRpciA9IHNl
bGYubWFrZV9ienJkaXIoJ3NoYXJlZC9zb3VyY2UnKQogICAgICAgICBkaXIuY3JlYXRlX2JyYW5j
aCgpCisgICAgICAgICMgQ2xvbmUgJ3NvdXJjZScgdG8gJ3RhcmdldCcsIGFsc28gaW5zaWRlIHRo
ZSBzaGFyZWQgcmVwb3NpdG9yeS4KICAgICAgICAgdGFyZ2V0ID0gZGlyLmNsb25lKHNlbGYuZ2V0
X3VybCgnc2hhcmVkL3RhcmdldCcpKQorICAgICAgICAjICdzb3VyY2UnLCAndGFyZ2V0JywgYW5k
IHRoZSBzaGFyZWQgcmVwbyBhbGwgaGF2ZSBkaXN0aW5jdCBienJkaXJzLgogICAgICAgICBzZWxm
LmFzc2VydE5vdEVxdWFsKGRpci50cmFuc3BvcnQuYmFzZSwgdGFyZ2V0LnRyYW5zcG9ydC5iYXNl
KQogICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKGRpci50cmFuc3BvcnQuYmFzZSwgc2hhcmVk
X3JlcG8uYnpyZGlyLnRyYW5zcG9ydC5iYXNlKQorICAgICAgICAjIFRoZSBzaGFyZWQgcmVwb3Np
dG9yeSB3aWxsIGNvbnRhaW4gcmV2aXNpb25zIGZyb20gdGhlICdjb21taXRfdHJlZScKKyAgICAg
ICAgIyByZXBvc2l0b3J5LCBldmVuIHJldmlzaW9ucyB0aGF0IGFyZSBub3QgcGFydCBvZiB0aGUg
aGlzdG9yeSBvZiB0aGUKKyAgICAgICAgIyAnY29tbWl0X3RyZWUnIGJyYW5jaC4KICAgICAgICAg
c2VsZi5hc3NlcnRUcnVlKHNoYXJlZF9yZXBvLmhhc19yZXZpc2lvbignMScpKQogCiAgICAgZGVm
IHRlc3RfY2xvbmVfYnpyZGlyX3JlcG9zaXRvcnlfYnJhbmNoX29ubHlfc291cmNlX3VuZGVyX3No
YXJlZChzZWxmKToKQEAgLTI1NiwxNSArMjcyLDE2IEBACiAgICAgICAgIGV4Y2VwdCBlcnJvcnMu
SW5jb21wYXRpYmxlRm9ybWF0OgogICAgICAgICAgICAgcmV0dXJuCiAgICAgICAgIHRyZWUgPSBz
ZWxmLm1ha2VfYnJhbmNoX2FuZF90cmVlKCdjb21taXRfdHJlZScpCi0gICAgICAgIHNlbGYuYnVp
bGRfdHJlZShbJ2ZvbyddLCB0cmFuc3BvcnQ9dHJlZS5ienJkaXIudHJhbnNwb3J0LmNsb25lKCcu
LicpKQorICAgICAgICBzZWxmLmJ1aWxkX3RyZWUoWydjb21taXRfdHJlZS9mb28nXSkKICAgICAg
ICAgdHJlZS5hZGQoJ2ZvbycpCiAgICAgICAgIHRyZWUuY29tbWl0KCdyZXZpc2lvbiAxJywgcmV2
X2lkPScxJykKLSAgICAgICAgdHJlZS5ienJkaXIub3Blbl9icmFuY2goKS5zZXRfcmV2aXNpb25f
aGlzdG9yeShbXSkKKyAgICAgICAgdHJlZS5icmFuY2guYnpyZGlyLm9wZW5fYnJhbmNoKCkuc2V0
X3JldmlzaW9uX2hpc3RvcnkoW10pCiAgICAgICAgIHRyZWUuc2V0X3BhcmVudF90cmVlcyhbXSkK
ICAgICAgICAgdHJlZS5jb21taXQoJ3JldmlzaW9uIDInLCByZXZfaWQ9JzInKQotICAgICAgICB0
cmVlLmJ6cmRpci5vcGVuX3JlcG9zaXRvcnkoKS5jb3B5X2NvbnRlbnRfaW50byhzaGFyZWRfcmVw
bykKLSAgICAgICAgc2hhcmVkX3JlcG8uc2V0X21ha2Vfd29ya2luZ190cmVlcyhGYWxzZSkKLSAg
ICAgICAgc2VsZi5hc3NlcnRGYWxzZShzaGFyZWRfcmVwby5tYWtlX3dvcmtpbmdfdHJlZXMoKSkK
KyAgICAgICAgdHJlZS5icmFuY2gucmVwb3NpdG9yeS5jb3B5X2NvbnRlbnRfaW50byhzaGFyZWRf
cmVwbykKKyAgICAgICAgaWYgc2hhcmVkX3JlcG8ubWFrZV93b3JraW5nX3RyZWVzKCk6CisgICAg
ICAgICAgICBzaGFyZWRfcmVwby5zZXRfbWFrZV93b3JraW5nX3RyZWVzKEZhbHNlKQorICAgICAg
ICAgICAgc2VsZi5hc3NlcnRGYWxzZShzaGFyZWRfcmVwby5tYWtlX3dvcmtpbmdfdHJlZXMoKSkK
ICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNoYXJlZF9yZXBvLmhhc19yZXZpc2lvbignMScpKQog
ICAgICAgICBkaXIgPSBzZWxmLm1ha2VfYnpyZGlyKCdzaGFyZWQvc291cmNlJykKICAgICAgICAg
ZGlyLmNyZWF0ZV9icmFuY2goKQpAQCAtMjc4LDcgKzI5NSw3IEBACiAgICAgICAgIAogICAgIGRl
ZiB0ZXN0X2Nsb25lX2J6cmRpcl9yZXBvc2l0b3J5X3VuZGVyX3NoYXJlZF9mb3JjZV9uZXdfcmVw
byhzZWxmKToKICAgICAgICAgdHJlZSA9IHNlbGYubWFrZV9icmFuY2hfYW5kX3RyZWUoJ2NvbW1p
dF90cmVlJykKLSAgICAgICAgc2VsZi5idWlsZF90cmVlKFsnZm9vJ10sIHRyYW5zcG9ydD10cmVl
LmJ6cmRpci50cmFuc3BvcnQuY2xvbmUoJy4uJykpCisgICAgICAgIHNlbGYuYnVpbGRfdHJlZShb
J2NvbW1pdF90cmVlL2ZvbyddKQogICAgICAgICB0cmVlLmFkZCgnZm9vJykKICAgICAgICAgdHJl
ZS5jb21taXQoJ3JldmlzaW9uIDEnLCByZXZfaWQ9JzEnKQogICAgICAgICBkaXIgPSBzZWxmLm1h
a2VfYnpyZGlyKCdzb3VyY2UnKQpAQCAtMzAxLDIxICszMTgsMjEgQEAKICAgICAgICAgIyBhbmQg
Y2xvbmUgaXQgd2l0aCBhIHJldmlzaW9uIGxpbWl0LgogICAgICAgICAjIAogICAgICAgICB0cmVl
ID0gc2VsZi5tYWtlX2JyYW5jaF9hbmRfdHJlZSgnY29tbWl0X3RyZWUnKQotICAgICAgICBzZWxm
LmJ1aWxkX3RyZWUoWydmb28nXSwgdHJhbnNwb3J0PXRyZWUuYnpyZGlyLnRyYW5zcG9ydC5jbG9u
ZSgnLi4nKSkKKyAgICAgICAgc2VsZi5idWlsZF90cmVlKFsnY29tbWl0X3RyZWUvZm9vJ10pCiAg
ICAgICAgIHRyZWUuYWRkKCdmb28nKQogICAgICAgICB0cmVlLmNvbW1pdCgncmV2aXNpb24gMScs
IHJldl9pZD0nMScpCi0gICAgICAgIHRyZWUuYnpyZGlyLm9wZW5fYnJhbmNoKCkuc2V0X3Jldmlz
aW9uX2hpc3RvcnkoW10pCisgICAgICAgIHRyZWUuYnJhbmNoLmJ6cmRpci5vcGVuX2JyYW5jaCgp
LnNldF9yZXZpc2lvbl9oaXN0b3J5KFtdKQogICAgICAgICB0cmVlLnNldF9wYXJlbnRfdHJlZXMo
W10pCiAgICAgICAgIHRyZWUuY29tbWl0KCdyZXZpc2lvbiAyJywgcmV2X2lkPScyJykKICAgICAg
ICAgc291cmNlID0gc2VsZi5tYWtlX3JlcG9zaXRvcnkoJ3NvdXJjZScpCi0gICAgICAgIHRyZWUu
YnpyZGlyLm9wZW5fcmVwb3NpdG9yeSgpLmNvcHlfY29udGVudF9pbnRvKHNvdXJjZSkKKyAgICAg
ICAgdHJlZS5icmFuY2gucmVwb3NpdG9yeS5jb3B5X2NvbnRlbnRfaW50byhzb3VyY2UpCiAgICAg
ICAgIGRpciA9IHNvdXJjZS5ienJkaXIKICAgICAgICAgdGFyZ2V0ID0gZGlyLmNsb25lKHNlbGYu
Z2V0X3VybCgndGFyZ2V0JyksIHJldmlzaW9uX2lkPScyJykKICAgICAgICAgcmFpc2UgVGVzdFNr
aXBwZWQoJ3JldmlzaW9uIGxpbWl0aW5nIG5vdCBzdHJpY3QgeWV0JykKIAogICAgIGRlZiB0ZXN0
X2Nsb25lX2J6cmRpcl9icmFuY2hfYW5kX3JlcG8oc2VsZik6CiAgICAgICAgIHRyZWUgPSBzZWxm
Lm1ha2VfYnJhbmNoX2FuZF90cmVlKCdjb21taXRfdHJlZScpCi0gICAgICAgIHNlbGYuYnVpbGRf
dHJlZShbJ2ZvbyddLCB0cmFuc3BvcnQ9dHJlZS5ienJkaXIucm9vdF90cmFuc3BvcnQpCisgICAg
ICAgIHNlbGYuYnVpbGRfdHJlZShbJ2NvbW1pdF90cmVlL2ZvbyddKQogICAgICAgICB0cmVlLmFk
ZCgnZm9vJykKICAgICAgICAgdHJlZS5jb21taXQoJ3JldmlzaW9uIDEnKQogICAgICAgICBzb3Vy
Y2UgPSBzZWxmLm1ha2VfYnJhbmNoKCdzb3VyY2UnKQpAQCAtMzM2LDcgKzM1Myw3IEBACiAgICAg
ZGVmIHRlc3RfY2xvbmVfYnpyZGlyX2JyYW5jaF9hbmRfcmVwb19pbnRvX3NoYXJlZF9yZXBvKHNl
bGYpOgogICAgICAgICAjIGJ5IGRlZmF1bHQgY2xvbmluZyBpbnRvIGEgc2hhcmVkIHJlcG8gdXNl
cyB0aGUgc2hhcmVkIHJlcG8uCiAgICAgICAgIHRyZWUgPSBzZWxmLm1ha2VfYnJhbmNoX2FuZF90
cmVlKCdjb21taXRfdHJlZScpCi0gICAgICAgIHNlbGYuYnVpbGRfdHJlZShbJ2ZvbyddLCB0cmFu
c3BvcnQ9dHJlZS5ienJkaXIucm9vdF90cmFuc3BvcnQpCisgICAgICAgIHNlbGYuYnVpbGRfdHJl
ZShbJ2NvbW1pdF90cmVlL2ZvbyddKQogICAgICAgICB0cmVlLmFkZCgnZm9vJykKICAgICAgICAg
dHJlZS5jb21taXQoJ3JldmlzaW9uIDEnKQogICAgICAgICBzb3VyY2UgPSBzZWxmLm1ha2VfYnJh
bmNoKCdzb3VyY2UnKQpAQCAtMzU2LDcgKzM3Myw3IEBACiAgICAgZGVmIHRlc3RfY2xvbmVfYnpy
ZGlyX2JyYW5jaF9hbmRfcmVwb19pbnRvX3NoYXJlZF9yZXBvX2ZvcmNlX25ld19yZXBvKHNlbGYp
OgogICAgICAgICAjIGJ5IGRlZmF1bHQgY2xvbmluZyBpbnRvIGEgc2hhcmVkIHJlcG8gdXNlcyB0
aGUgc2hhcmVkIHJlcG8uCiAgICAgICAgIHRyZWUgPSBzZWxmLm1ha2VfYnJhbmNoX2FuZF90cmVl
KCdjb21taXRfdHJlZScpCi0gICAgICAgIHNlbGYuYnVpbGRfdHJlZShbJ2ZvbyddLCB0cmFuc3Bv
cnQ9dHJlZS5ienJkaXIucm9vdF90cmFuc3BvcnQpCisgICAgICAgIHNlbGYuYnVpbGRfdHJlZShb
J2NvbW1pdF90cmVlL2ZvbyddKQogICAgICAgICB0cmVlLmFkZCgnZm9vJykKICAgICAgICAgdHJl
ZS5jb21taXQoJ3JldmlzaW9uIDEnKQogICAgICAgICBzb3VyY2UgPSBzZWxmLm1ha2VfYnJhbmNo
KCdzb3VyY2UnKQpAQCAtMzk2LDcgKzQxMyw3IEBACiAgICAgICAgICMgYW5kIGNsb25lIGl0IHdp
dGggYSByZXZpc2lvbiBsaW1pdC4KICAgICAgICAgIyAKICAgICAgICAgdHJlZSA9IHNlbGYubWFr
ZV9icmFuY2hfYW5kX3RyZWUoJ2NvbW1pdF90cmVlJykKLSAgICAgICAgc2VsZi5idWlsZF90cmVl
KFsnZm9vJ10sIHRyYW5zcG9ydD10cmVlLmJ6cmRpci50cmFuc3BvcnQuY2xvbmUoJy4uJykpCisg
ICAgICAgIHNlbGYuYnVpbGRfdHJlZShbJ2NvbW1pdF90cmVlL2ZvbyddKQogICAgICAgICB0cmVl
LmFkZCgnZm9vJykKICAgICAgICAgdHJlZS5jb21taXQoJ3JldmlzaW9uIDEnLCByZXZfaWQ9JzEn
KQogICAgICAgICB0cmVlLmNvbW1pdCgncmV2aXNpb24gMicsIHJldl9pZD0nMicsIGFsbG93X3Bv
aW50bGVzcz1UcnVlKQpAQCAtNDA4LDggKzQyNSw4IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwoJzEnLCB0YXJnZXQub3Blbl9icmFuY2goKS5sYXN0X3JldmlzaW9uKCkpCiAgICAgICAgIAog
ICAgIGRlZiB0ZXN0X2Nsb25lX2J6cmRpcl90cmVlX2JyYW5jaF9yZXBvKHNlbGYpOgotICAgICAg
ICB0cmVlID0gc2VsZi5tYWtlX2JyYW5jaF9hbmRfdHJlZSgnc291cmNjZScpCi0gICAgICAgIHNl
bGYuYnVpbGRfdHJlZShbJ2ZvbyddLCB0cmFuc3BvcnQ9dHJlZS5ienJkaXIudHJhbnNwb3J0LmNs
b25lKCcuLicpKQorICAgICAgICB0cmVlID0gc2VsZi5tYWtlX2JyYW5jaF9hbmRfdHJlZSgnc291
cmNlJykKKyAgICAgICAgc2VsZi5idWlsZF90cmVlKFsnc291cmNlL2ZvbyddKQogICAgICAgICB0
cmVlLmFkZCgnZm9vJykKICAgICAgICAgdHJlZS5jb21taXQoJ3JldmlzaW9uIDEnKQogICAgICAg
ICBkaXIgPSB0cmVlLmJ6cmRpcgpAQCAtNDI4LDggKzQ0NSw4IEBACiAgICAgICAgIHRhcmdldC5v
cGVuX3dvcmtpbmd0cmVlKCkucmV2ZXJ0KFtdKQogCiAgICAgZGVmIHRlc3RfcmV2ZXJ0X2ludmVu
dG9yeShzZWxmKToKLSAgICAgICAgdHJlZSA9IHNlbGYubWFrZV9icmFuY2hfYW5kX3RyZWUoJ3Nv
dXJjY2UnKQotICAgICAgICBzZWxmLmJ1aWxkX3RyZWUoWydmb28nXSwgdHJhbnNwb3J0PXRyZWUu
YnpyZGlyLnRyYW5zcG9ydC5jbG9uZSgnLi4nKSkKKyAgICAgICAgdHJlZSA9IHNlbGYubWFrZV9i
cmFuY2hfYW5kX3RyZWUoJ3NvdXJjZScpCisgICAgICAgIHNlbGYuYnVpbGRfdHJlZShbJ3NvdXJj
ZS9mb28nXSkKICAgICAgICAgdHJlZS5hZGQoJ2ZvbycpCiAgICAgICAgIHRyZWUuY29tbWl0KCdy
ZXZpc2lvbiAxJykKICAgICAgICAgZGlyID0gdHJlZS5ienJkaXIKQEAgLTQ4NCw3ICs1MDEsNyBA
QAogICAgICAgICAjIFRoaXMgc21va2UgdGVzdCBqdXN0IGNoZWNrcyB0aGUgcmV2aXNpb24taWQg
aXMgcmlnaHQuIFRyZWUgc3BlY2lmaWMKICAgICAgICAgIyB0ZXN0cyB3aWxsIGNoZWNrIGNvcm5l
ciBjYXNlcy4KICAgICAgICAgdHJlZSA9IHNlbGYubWFrZV9icmFuY2hfYW5kX3RyZWUoJ3NvdXJj
ZScpCi0gICAgICAgIHNlbGYuYnVpbGRfdHJlZShbJ2ZvbyddLCB0cmFuc3BvcnQ9dHJlZS5ienJk
aXIudHJhbnNwb3J0LmNsb25lKCcuLicpKQorICAgICAgICBzZWxmLmJ1aWxkX3RyZWUoWydzb3Vy
Y2UvZm9vJ10pCiAgICAgICAgIHRyZWUuYWRkKCdmb28nKQogICAgICAgICB0cmVlLmNvbW1pdCgn
cmV2aXNpb24gMScsIHJldl9pZD0nMScpCiAgICAgICAgIHRyZWUuY29tbWl0KCdyZXZpc2lvbiAy
JywgcmV2X2lkPScyJywgYWxsb3dfcG9pbnRsZXNzPVRydWUpCkBAIC00OTMsNiArNTEwLDMyIEBA
CiAgICAgICAgIHNlbGYuc2tpcElmTm9Xb3JraW5nVHJlZSh0YXJnZXQpCiAgICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwoWycxJ10sIHRhcmdldC5vcGVuX3dvcmtpbmd0cmVlKCkuZ2V0X3BhcmVudF9p
ZHMoKSkKIAorICAgIGRlZiB0ZXN0X2dldF9icmFuY2hfcmVmZXJlbmNlX29uX3JlZmVyZW5jZShz
ZWxmKToKKyAgICAgICAgIiIiZ2V0X2JyYW5jaF9yZWZlcmVuY2Ugc2hvdWxkIHJldHVybiB0aGUg
cmlnaHQgdXJsLiIiIgorICAgICAgICByZWZlcmVuY2VkX2JyYW5jaCA9IHNlbGYubWFrZV9icmFu
Y2goJ3JlZmVyZW5jZWQnKQorICAgICAgICBkaXIgPSBzZWxmLm1ha2VfYnpyZGlyKCdzb3VyY2Un
KQorICAgICAgICB0cnk6CisgICAgICAgICAgICByZWZlcmVuY2UgPSBienJsaWIuYnJhbmNoLkJy
YW5jaFJlZmVyZW5jZUZvcm1hdCgpLmluaXRpYWxpemUoZGlyLAorICAgICAgICAgICAgICAgIHJl
ZmVyZW5jZWRfYnJhbmNoKQorICAgICAgICBleGNlcHQgZXJyb3JzLkluY29tcGF0aWJsZUZvcm1h
dDoKKyAgICAgICAgICAgICMgdGhpcyBpcyBvayB0b28sIG5vdCBhbGwgZm9ybWF0cyBoYXZlIHRv
IHN1cHBvcnQgcmVmZXJlbmNlcy4KKyAgICAgICAgICAgIHJldHVybgorICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKHJlZmVyZW5jZWRfYnJhbmNoLmJ6cmRpci5yb290X3RyYW5zcG9ydC5hYnNwYXRo
KCcnKSArICcvJywKKyAgICAgICAgICAgIGRpci5nZXRfYnJhbmNoX3JlZmVyZW5jZSgpKQorCisg
ICAgZGVmIHRlc3RfZ2V0X2JyYW5jaF9yZWZlcmVuY2Vfb25fbm9uX3JlZmVyZW5jZShzZWxmKToK
KyAgICAgICAgIiIiZ2V0X2JyYW5jaF9yZWZlcmVuY2Ugc2hvdWxkIHJldHVybiBOb25lIGZvciBu
b24tcmVmZXJlbmNlIGJyYW5jaGVzLiIiIgorICAgICAgICBicmFuY2ggPSBzZWxmLm1ha2VfYnJh
bmNoKCdyZWZlcmVuY2VkJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChOb25lLCBicmFuY2gu
YnpyZGlyLmdldF9icmFuY2hfcmVmZXJlbmNlKCkpCisKKyAgICBkZWYgdGVzdF9nZXRfYnJhbmNo
X3JlZmVyZW5jZV9ub19icmFuY2goc2VsZik6CisgICAgICAgICIiImdldF9icmFuY2hfcmVmZXJl
bmNlIHNob3VsZCBub3QgbWFzayBOb3RCcmFuY2hFcnJvcnMuIiIiCisgICAgICAgIGRpciA9IHNl
bGYubWFrZV9ienJkaXIoJ3NvdXJjZScpCisgICAgICAgIGlmIGRpci5oYXNfYnJhbmNoKCk6Cisg
ICAgICAgICAgICAjIHRoaXMgZm9ybWF0IGRvZXMgbm90IHN1cHBvcnQgYnJhbmNobGVzcyBienJk
aXJzLgorICAgICAgICAgICAgcmV0dXJuCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKGVycm9y
cy5Ob3RCcmFuY2hFcnJvciwgZGlyLmdldF9icmFuY2hfcmVmZXJlbmNlKQorCiAgICAgZGVmIHRl
c3Rfc3Byb3V0X2J6cmRpcl9lbXB0eShzZWxmKToKICAgICAgICAgZGlyID0gc2VsZi5tYWtlX2J6
cmRpcignc291cmNlJykKICAgICAgICAgdGFyZ2V0ID0gc2VsZi5zcHJvdXRPclNraXAoZGlyLCBz
ZWxmLmdldF91cmwoJ3RhcmdldCcpKQpAQCAtNTEyLDcgKzU1NSwxMiBAQAogICAgICAgICB0YXJn
ZXQgPSBzZWxmLnNwcm91dE9yU2tpcChkaXIsIHNlbGYuZ2V0X3VybCgndGFyZ2V0L2NoaWxkJykp
CiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKGVycm9ycy5Ob1JlcG9zaXRvcnlQcmVzZW50LCB0
YXJnZXQub3Blbl9yZXBvc2l0b3J5KQogICAgICAgICB0YXJnZXQub3Blbl9icmFuY2goKQotICAg
ICAgICB0YXJnZXQub3Blbl93b3JraW5ndHJlZSgpCisgICAgICAgIHRyeToKKyAgICAgICAgICAg
IHRhcmdldC5vcGVuX3dvcmtpbmd0cmVlKCkKKyAgICAgICAgZXhjZXB0IGVycm9ycy5Ob1dvcmtp
bmdUcmVlOgorICAgICAgICAgICAgIyBienJkaXIncyB0aGF0IG5ldmVyIGhhdmUgd29ya2luZyB0
cmVlcyBhcmUgYWxsb3dlZCB0byBwYXNzOworICAgICAgICAgICAgIyB3aGl0ZWxpc3QgdGhlbSBm
b3Igbm93LgorICAgICAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKHRhcmdldCwgUmVtb3Rl
QnpyRGlyKQogCiAgICAgZGVmIHRlc3Rfc3Byb3V0X2J6cmRpcl9lbXB0eV91bmRlcl9zaGFyZWRf
cmVwb19mb3JjZV9uZXcoc2VsZik6CiAgICAgICAgICMgdGhlIGZvcmNlX25ld19yZXBvIHBhcmFt
ZXRlciBzaG91bGQgZm9yY2UgdXNlIG9mIGEgbmV3IHJlcG8gaW4gYW4gZW1wdHkKQEAgLTU2Niwx
NCArNjE0LDE0IEBACiAKICAgICBkZWYgdGVzdF9zcHJvdXRfYnpyZGlyX3dpdGhfcmVwb3NpdG9y
eV90b19zaGFyZWQoc2VsZik6CiAgICAgICAgIHRyZWUgPSBzZWxmLm1ha2VfYnJhbmNoX2FuZF90
cmVlKCdjb21taXRfdHJlZScpCi0gICAgICAgIHNlbGYuYnVpbGRfdHJlZShbJ2ZvbyddLCB0cmFu
c3BvcnQ9dHJlZS5ienJkaXIudHJhbnNwb3J0LmNsb25lKCcuLicpKQorICAgICAgICBzZWxmLmJ1
aWxkX3RyZWUoWydjb21taXRfdHJlZS9mb28nXSkKICAgICAgICAgdHJlZS5hZGQoJ2ZvbycpCiAg
ICAgICAgIHRyZWUuY29tbWl0KCdyZXZpc2lvbiAxJywgcmV2X2lkPScxJykKICAgICAgICAgdHJl
ZS5ienJkaXIub3Blbl9icmFuY2goKS5zZXRfcmV2aXNpb25faGlzdG9yeShbXSkKICAgICAgICAg
dHJlZS5zZXRfcGFyZW50X3RyZWVzKFtdKQogICAgICAgICB0cmVlLmNvbW1pdCgncmV2aXNpb24g
MicsIHJldl9pZD0nMicpCiAgICAgICAgIHNvdXJjZSA9IHNlbGYubWFrZV9yZXBvc2l0b3J5KCdz
b3VyY2UnKQotICAgICAgICB0cmVlLmJ6cmRpci5vcGVuX3JlcG9zaXRvcnkoKS5jb3B5X2NvbnRl
bnRfaW50byhzb3VyY2UpCisgICAgICAgIHRyZWUuYnJhbmNoLnJlcG9zaXRvcnkuY29weV9jb250
ZW50X2ludG8oc291cmNlKQogICAgICAgICBkaXIgPSBzb3VyY2UuYnpyZGlyCiAgICAgICAgIHRy
eToKICAgICAgICAgICAgIHNoYXJlZF9yZXBvID0gc2VsZi5tYWtlX3JlcG9zaXRvcnkoJ3Rhcmdl
dCcsIHNoYXJlZD1UcnVlKQpAQCAtNTg5LDEzICs2MzcsMTMgQEAKICAgICAgICAgZXhjZXB0IGVy
cm9ycy5JbmNvbXBhdGlibGVGb3JtYXQ6CiAgICAgICAgICAgICByZXR1cm4KICAgICAgICAgdHJl
ZSA9IHNlbGYubWFrZV9icmFuY2hfYW5kX3RyZWUoJ2NvbW1pdF90cmVlJykKLSAgICAgICAgc2Vs
Zi5idWlsZF90cmVlKFsnZm9vJ10sIHRyYW5zcG9ydD10cmVlLmJ6cmRpci50cmFuc3BvcnQuY2xv
bmUoJy4uJykpCisgICAgICAgIHNlbGYuYnVpbGRfdHJlZShbJ2NvbW1pdF90cmVlL2ZvbyddKQog
ICAgICAgICB0cmVlLmFkZCgnZm9vJykKICAgICAgICAgdHJlZS5jb21taXQoJ3JldmlzaW9uIDEn
LCByZXZfaWQ9JzEnKQogICAgICAgICB0cmVlLmJ6cmRpci5vcGVuX2JyYW5jaCgpLnNldF9yZXZp
c2lvbl9oaXN0b3J5KFtdKQogICAgICAgICB0cmVlLnNldF9wYXJlbnRfdHJlZXMoW10pCiAgICAg
ICAgIHRyZWUuY29tbWl0KCdyZXZpc2lvbiAyJywgcmV2X2lkPScyJykKLSAgICAgICAgdHJlZS5i
enJkaXIub3Blbl9yZXBvc2l0b3J5KCkuY29weV9jb250ZW50X2ludG8oc2hhcmVkX3JlcG8pCisg
ICAgICAgIHRyZWUuYnJhbmNoLnJlcG9zaXRvcnkuY29weV9jb250ZW50X2ludG8oc2hhcmVkX3Jl
cG8pCiAgICAgICAgIGRpciA9IHNlbGYubWFrZV9ienJkaXIoJ3NoYXJlZC9zb3VyY2UnKQogICAg
ICAgICBkaXIuY3JlYXRlX2JyYW5jaCgpCiAgICAgICAgIHRhcmdldCA9IHNlbGYuc3Byb3V0T3JT
a2lwKGRpciwgc2VsZi5nZXRfdXJsKCdzaGFyZWQvdGFyZ2V0JykpCkBAIC02MDksMTUgKzY1Nywx
NiBAQAogICAgICAgICBleGNlcHQgZXJyb3JzLkluY29tcGF0aWJsZUZvcm1hdDoKICAgICAgICAg
ICAgIHJldHVybgogICAgICAgICB0cmVlID0gc2VsZi5tYWtlX2JyYW5jaF9hbmRfdHJlZSgnY29t
bWl0X3RyZWUnKQotICAgICAgICBzZWxmLmJ1aWxkX3RyZWUoWydmb28nXSwgdHJhbnNwb3J0PXRy
ZWUuYnpyZGlyLnRyYW5zcG9ydC5jbG9uZSgnLi4nKSkKKyAgICAgICAgc2VsZi5idWlsZF90cmVl
KFsnY29tbWl0X3RyZWUvZm9vJ10pCiAgICAgICAgIHRyZWUuYWRkKCdmb28nKQogICAgICAgICB0
cmVlLmNvbW1pdCgncmV2aXNpb24gMScsIHJldl9pZD0nMScpCiAgICAgICAgIHRyZWUuYnpyZGly
Lm9wZW5fYnJhbmNoKCkuc2V0X3JldmlzaW9uX2hpc3RvcnkoW10pCiAgICAgICAgIHRyZWUuc2V0
X3BhcmVudF90cmVlcyhbXSkKICAgICAgICAgdHJlZS5jb21taXQoJ3JldmlzaW9uIDInLCByZXZf
aWQ9JzInKQotICAgICAgICB0cmVlLmJ6cmRpci5vcGVuX3JlcG9zaXRvcnkoKS5jb3B5X2NvbnRl
bnRfaW50byhzaGFyZWRfcmVwbykKLSAgICAgICAgc2hhcmVkX3JlcG8uc2V0X21ha2Vfd29ya2lu
Z190cmVlcyhGYWxzZSkKLSAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShzaGFyZWRfcmVwby5tYWtl
X3dvcmtpbmdfdHJlZXMoKSkKKyAgICAgICAgdHJlZS5icmFuY2gucmVwb3NpdG9yeS5jb3B5X2Nv
bnRlbnRfaW50byhzaGFyZWRfcmVwbykKKyAgICAgICAgaWYgc2hhcmVkX3JlcG8ubWFrZV93b3Jr
aW5nX3RyZWVzKCk6CisgICAgICAgICAgICBzaGFyZWRfcmVwby5zZXRfbWFrZV93b3JraW5nX3Ry
ZWVzKEZhbHNlKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShzaGFyZWRfcmVwby5tYWtl
X3dvcmtpbmdfdHJlZXMoKSkKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNoYXJlZF9yZXBvLmhh
c19yZXZpc2lvbignMScpKQogICAgICAgICBkaXIgPSBzZWxmLm1ha2VfYnpyZGlyKCdzaGFyZWQv
c291cmNlJykKICAgICAgICAgZGlyLmNyZWF0ZV9icmFuY2goKQpAQCAtNjI2LDE5ICs2NzUsMjAg
QEAKICAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChkaXIudHJhbnNwb3J0LmJhc2UsIHNoYXJl
ZF9yZXBvLmJ6cmRpci50cmFuc3BvcnQuYmFzZSkKICAgICAgICAgYnJhbmNoID0gdGFyZ2V0Lm9w
ZW5fYnJhbmNoKCkKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGJyYW5jaC5yZXBvc2l0b3J5Lmhh
c19yZXZpc2lvbignMScpKQotICAgICAgICBzZWxmLmFzc2VydFRydWUoYnJhbmNoLnJlcG9zaXRv
cnkubWFrZV93b3JraW5nX3RyZWVzKCkpCisgICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKGJyYW5j
aC5ienJkaXIsIFJlbW90ZUJ6ckRpcik6CisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoYnJh
bmNoLnJlcG9zaXRvcnkubWFrZV93b3JraW5nX3RyZWVzKCkpCiAgICAgICAgIHNlbGYuYXNzZXJ0
RmFsc2UoYnJhbmNoLnJlcG9zaXRvcnkuaXNfc2hhcmVkKCkpCiAKICAgICBkZWYgdGVzdF9zcHJv
dXRfYnpyZGlyX3JlcG9zaXRvcnlfdW5kZXJfc2hhcmVkX2ZvcmNlX25ld19yZXBvKHNlbGYpOgog
ICAgICAgICB0cmVlID0gc2VsZi5tYWtlX2JyYW5jaF9hbmRfdHJlZSgnY29tbWl0X3RyZWUnKQot
ICAgICAgICBzZWxmLmJ1aWxkX3RyZWUoWydmb28nXSwgdHJhbnNwb3J0PXRyZWUuYnpyZGlyLnRy
YW5zcG9ydC5jbG9uZSgnLi4nKSkKKyAgICAgICAgc2VsZi5idWlsZF90cmVlKFsnY29tbWl0X3Ry
ZWUvZm9vJ10pCiAgICAgICAgIHRyZWUuYWRkKCdmb28nKQogICAgICAgICB0cmVlLmNvbW1pdCgn
cmV2aXNpb24gMScsIHJldl9pZD0nMScpCiAgICAgICAgIHRyZWUuYnpyZGlyLm9wZW5fYnJhbmNo
KCkuc2V0X3JldmlzaW9uX2hpc3RvcnkoW10pCiAgICAgICAgIHRyZWUuc2V0X3BhcmVudF90cmVl
cyhbXSkKICAgICAgICAgdHJlZS5jb21taXQoJ3JldmlzaW9uIDInLCByZXZfaWQ9JzInKQogICAg
ICAgICBzb3VyY2UgPSBzZWxmLm1ha2VfcmVwb3NpdG9yeSgnc291cmNlJykKLSAgICAgICAgdHJl
ZS5ienJkaXIub3Blbl9yZXBvc2l0b3J5KCkuY29weV9jb250ZW50X2ludG8oc291cmNlKQorICAg
ICAgICB0cmVlLmJyYW5jaC5yZXBvc2l0b3J5LmNvcHlfY29udGVudF9pbnRvKHNvdXJjZSkKICAg
ICAgICAgZGlyID0gc291cmNlLmJ6cmRpcgogICAgICAgICB0cnk6CiAgICAgICAgICAgICBzaGFy
ZWRfcmVwbyA9IHNlbGYubWFrZV9yZXBvc2l0b3J5KCd0YXJnZXQnLCBzaGFyZWQ9VHJ1ZSkKQEAg
LTY1NSwyNSArNzA1LDI1IEBACiAgICAgICAgICMgYW5kIHNwcm91dCBpdCB3aXRoIGEgcmV2aXNp
b24gbGltaXQuCiAgICAgICAgICMgCiAgICAgICAgIHRyZWUgPSBzZWxmLm1ha2VfYnJhbmNoX2Fu
ZF90cmVlKCdjb21taXRfdHJlZScpCi0gICAgICAgIHNlbGYuYnVpbGRfdHJlZShbJ2ZvbyddLCB0
cmFuc3BvcnQ9dHJlZS5ienJkaXIudHJhbnNwb3J0LmNsb25lKCcuLicpKQorICAgICAgICBzZWxm
LmJ1aWxkX3RyZWUoWydjb21taXRfdHJlZS9mb28nXSkKICAgICAgICAgdHJlZS5hZGQoJ2Zvbycp
CiAgICAgICAgIHRyZWUuY29tbWl0KCdyZXZpc2lvbiAxJywgcmV2X2lkPScxJykKICAgICAgICAg
dHJlZS5ienJkaXIub3Blbl9icmFuY2goKS5zZXRfcmV2aXNpb25faGlzdG9yeShbXSkKICAgICAg
ICAgdHJlZS5zZXRfcGFyZW50X3RyZWVzKFtdKQogICAgICAgICB0cmVlLmNvbW1pdCgncmV2aXNp
b24gMicsIHJldl9pZD0nMicpCiAgICAgICAgIHNvdXJjZSA9IHNlbGYubWFrZV9yZXBvc2l0b3J5
KCdzb3VyY2UnKQotICAgICAgICB0cmVlLmJ6cmRpci5vcGVuX3JlcG9zaXRvcnkoKS5jb3B5X2Nv
bnRlbnRfaW50byhzb3VyY2UpCisgICAgICAgIHRyZWUuYnJhbmNoLnJlcG9zaXRvcnkuY29weV9j
b250ZW50X2ludG8oc291cmNlKQogICAgICAgICBkaXIgPSBzb3VyY2UuYnpyZGlyCiAgICAgICAg
IHRhcmdldCA9IHNlbGYuc3Byb3V0T3JTa2lwKGRpciwgc2VsZi5nZXRfdXJsKCd0YXJnZXQnKSwg
cmV2aXNpb25faWQ9JzInKQogICAgICAgICByYWlzZSBUZXN0U2tpcHBlZCgncmV2aXNpb24gbGlt
aXRpbmcgbm90IHN0cmljdCB5ZXQnKQogCiAgICAgZGVmIHRlc3Rfc3Byb3V0X2J6cmRpcl9icmFu
Y2hfYW5kX3JlcG8oc2VsZik6CiAgICAgICAgIHRyZWUgPSBzZWxmLm1ha2VfYnJhbmNoX2FuZF90
cmVlKCdjb21taXRfdHJlZScpCi0gICAgICAgIHNlbGYuYnVpbGRfdHJlZShbJ2ZvbyddLCB0cmFu
c3BvcnQ9dHJlZS5ienJkaXIudHJhbnNwb3J0LmNsb25lKCcuLicpKQorICAgICAgICBzZWxmLmJ1
aWxkX3RyZWUoWydjb21taXRfdHJlZS9mb28nXSkKICAgICAgICAgdHJlZS5hZGQoJ2ZvbycpCiAg
ICAgICAgIHRyZWUuY29tbWl0KCdyZXZpc2lvbiAxJykKICAgICAgICAgc291cmNlID0gc2VsZi5t
YWtlX2JyYW5jaCgnc291cmNlJykKLSAgICAgICAgdHJlZS5ienJkaXIub3Blbl9yZXBvc2l0b3J5
KCkuY29weV9jb250ZW50X2ludG8oc291cmNlLnJlcG9zaXRvcnkpCisgICAgICAgIHRyZWUuYnJh
bmNoLnJlcG9zaXRvcnkuY29weV9jb250ZW50X2ludG8oc291cmNlLnJlcG9zaXRvcnkpCiAgICAg
ICAgIHRyZWUuYnpyZGlyLm9wZW5fYnJhbmNoKCkuY29weV9jb250ZW50X2ludG8oc291cmNlKQog
ICAgICAgICBkaXIgPSBzb3VyY2UuYnpyZGlyCiAgICAgICAgIHRhcmdldCA9IHNlbGYuc3Byb3V0
T3JTa2lwKGRpciwgc2VsZi5nZXRfdXJsKCd0YXJnZXQnKSkKQEAgLTY5NywxMSArNzQ3LDExIEBA
CiAgICAgICAgICMgc3Byb3V0aW5nIGEgYnJhbmNoIHdpdGggYSByZXBvIGludG8gYSBzaGFyZWQg
cmVwbyB1c2VzIHRoZSBzaGFyZWQKICAgICAgICAgIyByZXBvCiAgICAgICAgIHRyZWUgPSBzZWxm
Lm1ha2VfYnJhbmNoX2FuZF90cmVlKCdjb21taXRfdHJlZScpCi0gICAgICAgIHNlbGYuYnVpbGRf
dHJlZShbJ2ZvbyddLCB0cmFuc3BvcnQ9dHJlZS5ienJkaXIudHJhbnNwb3J0LmNsb25lKCcuLicp
KQorICAgICAgICBzZWxmLmJ1aWxkX3RyZWUoWydjb21taXRfdHJlZS9mb28nXSkKICAgICAgICAg
dHJlZS5hZGQoJ2ZvbycpCiAgICAgICAgIHRyZWUuY29tbWl0KCdyZXZpc2lvbiAxJywgcmV2X2lk
PScxJykKICAgICAgICAgc291cmNlID0gc2VsZi5tYWtlX2JyYW5jaCgnc291cmNlJykKLSAgICAg
ICAgdHJlZS5ienJkaXIub3Blbl9yZXBvc2l0b3J5KCkuY29weV9jb250ZW50X2ludG8oc291cmNl
LnJlcG9zaXRvcnkpCisgICAgICAgIHRyZWUuYnJhbmNoLnJlcG9zaXRvcnkuY29weV9jb250ZW50
X2ludG8oc291cmNlLnJlcG9zaXRvcnkpCiAgICAgICAgIHRyZWUuYnpyZGlyLm9wZW5fYnJhbmNo
KCkuY29weV9jb250ZW50X2ludG8oc291cmNlKQogICAgICAgICBkaXIgPSBzb3VyY2UuYnpyZGly
CiAgICAgICAgIHRyeToKQEAgLTcxNSwxMSArNzY1LDExIEBACiAgICAgICAgICMgc3Byb3V0aW5n
IGEgYnJhbmNoIHdpdGggYSByZXBvIGludG8gYSBzaGFyZWQgcmVwbyB1c2VzIHRoZSBzaGFyZWQK
ICAgICAgICAgIyByZXBvCiAgICAgICAgIHRyZWUgPSBzZWxmLm1ha2VfYnJhbmNoX2FuZF90cmVl
KCdjb21taXRfdHJlZScpCi0gICAgICAgIHNlbGYuYnVpbGRfdHJlZShbJ2ZvbyddLCB0cmFuc3Bv
cnQ9dHJlZS5ienJkaXIudHJhbnNwb3J0LmNsb25lKCcuLicpKQorICAgICAgICBzZWxmLmJ1aWxk
X3RyZWUoWydjb21taXRfdHJlZS9mb28nXSkKICAgICAgICAgdHJlZS5hZGQoJ2ZvbycpCiAgICAg
ICAgIHRyZWUuY29tbWl0KCdyZXZpc2lvbiAxJywgcmV2X2lkPScxJykKICAgICAgICAgc291cmNl
ID0gc2VsZi5tYWtlX2JyYW5jaCgnc291cmNlJykKLSAgICAgICAgdHJlZS5ienJkaXIub3Blbl9y
ZXBvc2l0b3J5KCkuY29weV9jb250ZW50X2ludG8oc291cmNlLnJlcG9zaXRvcnkpCisgICAgICAg
IHRyZWUuYnJhbmNoLnJlcG9zaXRvcnkuY29weV9jb250ZW50X2ludG8oc291cmNlLnJlcG9zaXRv
cnkpCiAgICAgICAgIHRyZWUuYnpyZGlyLm9wZW5fYnJhbmNoKCkuY29weV9jb250ZW50X2ludG8o
c291cmNlKQogICAgICAgICBkaXIgPSBzb3VyY2UuYnpyZGlyCiAgICAgICAgIHRyeToKQEAgLTgw
OCwxOSArODU4LDE5IEBACiAgICAgICAgICMgYW5kIHNwcm91dCBpdCB3aXRoIGEgcmV2aXNpb24g
bGltaXQuCiAgICAgICAgICMgCiAgICAgICAgIHRyZWUgPSBzZWxmLm1ha2VfYnJhbmNoX2FuZF90
cmVlKCdjb21taXRfdHJlZScpCi0gICAgICAgIHNlbGYuYnVpbGRfdHJlZShbJ2ZvbyddLCB0cmFu
c3BvcnQ9dHJlZS5ienJkaXIudHJhbnNwb3J0LmNsb25lKCcuLicpKQorICAgICAgICBzZWxmLmJ1
aWxkX3RyZWUoWydjb21taXRfdHJlZS9mb28nXSkKICAgICAgICAgdHJlZS5hZGQoJ2ZvbycpCiAg
ICAgICAgIHRyZWUuY29tbWl0KCdyZXZpc2lvbiAxJywgcmV2X2lkPScxJykKICAgICAgICAgdHJl
ZS5jb21taXQoJ3JldmlzaW9uIDInLCByZXZfaWQ9JzInLCBhbGxvd19wb2ludGxlc3M9VHJ1ZSkK
ICAgICAgICAgc291cmNlID0gc2VsZi5tYWtlX2JyYW5jaCgnc291cmNlJykKLSAgICAgICAgdHJl
ZS5ienJkaXIub3Blbl9yZXBvc2l0b3J5KCkuY29weV9jb250ZW50X2ludG8oc291cmNlLnJlcG9z
aXRvcnkpCisgICAgICAgIHRyZWUuYnJhbmNoLnJlcG9zaXRvcnkuY29weV9jb250ZW50X2ludG8o
c291cmNlLnJlcG9zaXRvcnkpCiAgICAgICAgIHRyZWUuYnpyZGlyLm9wZW5fYnJhbmNoKCkuY29w
eV9jb250ZW50X2ludG8oc291cmNlKQogICAgICAgICBkaXIgPSBzb3VyY2UuYnpyZGlyCiAgICAg
ICAgIHRhcmdldCA9IHNlbGYuc3Byb3V0T3JTa2lwKGRpciwgc2VsZi5nZXRfdXJsKCd0YXJnZXQn
KSwgcmV2aXNpb25faWQ9JzEnKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCcxJywgdGFyZ2V0
Lm9wZW5fYnJhbmNoKCkubGFzdF9yZXZpc2lvbigpKQogICAgICAgICAKICAgICBkZWYgdGVzdF9z
cHJvdXRfYnpyZGlyX3RyZWVfYnJhbmNoX3JlcG8oc2VsZik6Ci0gICAgICAgIHRyZWUgPSBzZWxm
Lm1ha2VfYnJhbmNoX2FuZF90cmVlKCdzb3VyY2NlJykKKyAgICAgICAgdHJlZSA9IHNlbGYubWFr
ZV9icmFuY2hfYW5kX3RyZWUoJ3NvdXJjZScpCiAgICAgICAgIHNlbGYuYnVpbGRfdHJlZShbJ2Zv
byddLCB0cmFuc3BvcnQ9dHJlZS5ienJkaXIudHJhbnNwb3J0LmNsb25lKCcuLicpKQogICAgICAg
ICB0cmVlLmFkZCgnZm9vJykKICAgICAgICAgdHJlZS5jb21taXQoJ3JldmlzaW9uIDEnKQpAQCAt
MTA0Niw3ICsxMDk2LDcgQEAKICAgICAgICAgc291cmNlID0gc2VsZi5tYWtlX2JyYW5jaF9hbmRf
dHJlZSgnc291cmNlJykKICAgICAgICAgc291cmNlLmNvbW1pdCgnYScsIHJldl9pZD0nYScsIGFs
bG93X3BvaW50bGVzcz1UcnVlKQogICAgICAgICBzb3VyY2UuY29tbWl0KCdiJywgcmV2X2lkPSdi
JywgYWxsb3dfcG9pbnRsZXNzPVRydWUpCi0gICAgICAgIHNlbGYuYnVpbGRfdHJlZShbJ25ldy8n
XSkKKyAgICAgICAgdC5ta2RpcignbmV3JykKICAgICAgICAgdF9uZXcgPSB0LmNsb25lKCduZXcn
KQogICAgICAgICBtYWRlX2NvbnRyb2wgPSBzZWxmLmJ6cmRpcl9mb3JtYXQuaW5pdGlhbGl6ZV9v
bl90cmFuc3BvcnQodF9uZXcpCiAgICAgICAgIHNvdXJjZS5icmFuY2gucmVwb3NpdG9yeS5jbG9u
ZShtYWRlX2NvbnRyb2wpCkBAIC0xMjk0LDEyICsxMzQ0LDE0IEBACiAKICAgICBkZWYgdGVzdF9y
ZXRpcmVfYnpyZGlyKHNlbGYpOgogICAgICAgICBiZCA9IHNlbGYubWFrZV9ienJkaXIoJy4nKQor
ICAgICAgICB0cmFuc3BvcnQgPSBiZC5yb290X3RyYW5zcG9ydAogICAgICAgICAjIG11c3Qgbm90
IG92ZXJ3cml0ZSBleGlzdGluZyBkaXJlY3RvcmllcwotICAgICAgICBzZWxmLmJ1aWxkX3RyZWUo
WycuYnpyLnJldGlyZWQuMC8nLCAnLmJ6ci5yZXRpcmVkLjAvanVuaycsXSkKLSAgICAgICAgc2Vs
Zi5mYWlsVW5sZXNzRXhpc3RzKCcuYnpyJykKKyAgICAgICAgc2VsZi5idWlsZF90cmVlKFsnLmJ6
ci5yZXRpcmVkLjAvJywgJy5ienIucmV0aXJlZC4wL2p1bmsnLF0sCisgICAgICAgICAgICB0cmFu
c3BvcnQ9dHJhbnNwb3J0KQorICAgICAgICBzZWxmLmZhaWxVbmxlc3ModHJhbnNwb3J0Lmhhcygn
LmJ6cicpKQogICAgICAgICBiZC5yZXRpcmVfYnpyZGlyKCkKLSAgICAgICAgc2VsZi5mYWlsSWZF
eGlzdHMoJy5ienInKQotICAgICAgICBzZWxmLmZhaWxVbmxlc3NFeGlzdHMoJy5ienIucmV0aXJl
ZC4xJykKKyAgICAgICAgc2VsZi5mYWlsSWYodHJhbnNwb3J0LmhhcygnLmJ6cicpKQorICAgICAg
ICBzZWxmLmZhaWxVbmxlc3ModHJhbnNwb3J0LmhhcygnLmJ6ci5yZXRpcmVkLjEnKSkKIAogY2xh
c3MgVGVzdEJyZWFrTG9jayhUZXN0Q2FzZVdpdGhCenJEaXIpOgogCgo=

=== modified file bzrlib/tests/intertree_implementations/test_compare.py // las
... t-changed:john@arbash-meinel.com-20070430174510-qdteh5dy45gbj785 // encodin
... g:base64
LS0tIGJ6cmxpYi90ZXN0cy9pbnRlcnRyZWVfaW1wbGVtZW50YXRpb25zL3Rlc3RfY29tcGFyZS5w
eQorKysgYnpybGliL3Rlc3RzL2ludGVydHJlZV9pbXBsZW1lbnRhdGlvbnMvdGVzdF9jb21wYXJl
LnB5CkBAIC0zMjEsMTEgKzMyMSwxMSBAQAogICAgICAgICB0cmVlMiA9IHNlbGYubWFrZV90b19i
cmFuY2hfYW5kX3RyZWUoJ3RyZWUyJykKICAgICAgICAgdHJlZTIuc2V0X3Jvb3RfaWQodHJlZTEu
Z2V0X3Jvb3RfaWQoKSkKICAgICAgICAgc2VsZi5idWlsZF90cmVlKFsndHJlZTIvZmlsZScsICd0
cmVlMi9kaXIvJ10pCi0gICAgICAgICMgdHJ5OgotICAgICAgICBvcy5zeW1saW5rKCd0YXJnZXQn
LCAndHJlZTIvbGluaycpCi0gICAgICAgIGxpbmtzX3N1cHBvcnRlZCA9IFRydWUKLSAgICAgICAg
IyBleGNlcHQgPz8/OgotICAgICAgICAjICAgbGlua3Nfc3VwcG9ydGVkID0gRmFsc2UKKyAgICAg
ICAgaWYgaGFzX3N5bWxpbmtzKCk6CisgICAgICAgICAgICBvcy5zeW1saW5rKCd0YXJnZXQnLCAn
dHJlZTIvbGluaycpCisgICAgICAgICAgICBsaW5rc19zdXBwb3J0ZWQgPSBUcnVlCisgICAgICAg
IGVsc2U6CisgICAgICAgICAgICBsaW5rc19zdXBwb3J0ZWQgPSBGYWxzZQogICAgICAgICB0cmVl
MSwgdHJlZTIgPSBzZWxmLm11dGFibGVfdHJlZXNfdG9fdGVzdF90cmVlcyh0cmVlMSwgdHJlZTIp
CiAgICAgICAgIGQgPSBzZWxmLmludGVydHJlZV9jbGFzcyh0cmVlMSwgdHJlZTIpLmNvbXBhcmUo
d2FudF91bnZlcnNpb25lZD1UcnVlKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFtdLCBkLmFk
ZGVkKQpAQCAtMzMzLDggKzMzMywxMSBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFtdLCBk
LnJlbW92ZWQpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoW10sIGQucmVuYW1lZCkKICAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbChbXSwgZC51bmNoYW5nZWQpCi0gICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwoWyh1J2RpcicsIE5vbmUsICdkaXJlY3RvcnknKSwgKHUnZmlsZScsIE5vbmUsICdmaWxl
JyksCi0gICAgICAgICAgICAodSdsaW5rJywgTm9uZSwgJ3N5bWxpbmsnKV0sIGQudW52ZXJzaW9u
ZWQpCisgICAgICAgIGV4cGVjdGVkX3VudmVyc2lvbmVkID0gWyh1J2RpcicsIE5vbmUsICdkaXJl
Y3RvcnknKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHUnZmlsZScsIE5vbmUs
ICdmaWxlJyldCisgICAgICAgIGlmIGxpbmtzX3N1cHBvcnRlZDoKKyAgICAgICAgICAgIGV4cGVj
dGVkX3VudmVyc2lvbmVkLmFwcGVuZCgodSdsaW5rJywgTm9uZSwgJ3N5bWxpbmsnKSkKKyAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbChleHBlY3RlZF91bnZlcnNpb25lZCwgZC51bnZlcnNpb25lZCkK
IAogCiBjbGFzcyBUZXN0SXRlckNoYW5nZXMoVGVzdENhc2VXaXRoVHdvVHJlZXMpOgpAQCAtNzc2
LDExICs3NzksMTEgQEAKICAgICAgICAgdHJlZTIgPSBzZWxmLm1ha2VfdG9fYnJhbmNoX2FuZF90
cmVlKCd0cmVlMicpCiAgICAgICAgIHRyZWUyLnNldF9yb290X2lkKHRyZWUxLmdldF9yb290X2lk
KCkpCiAgICAgICAgIHNlbGYuYnVpbGRfdHJlZShbJ3RyZWUyL2ZpbGUnLCAndHJlZTIvZGlyLydd
KQotICAgICAgICAjIHRyeToKLSAgICAgICAgb3Muc3ltbGluaygndGFyZ2V0JywgJ3RyZWUyL2xp
bmsnKQotICAgICAgICBsaW5rc19zdXBwb3J0ZWQgPSBUcnVlCi0gICAgICAgICMgZXhjZXB0ID8/
PzoKLSAgICAgICAgIyAgIGxpbmtzX3N1cHBvcnRlZCA9IEZhbHNlCisgICAgICAgIGlmIGhhc19z
eW1saW5rcygpOgorICAgICAgICAgICAgb3Muc3ltbGluaygndGFyZ2V0JywgJ3RyZWUyL2xpbmsn
KQorICAgICAgICAgICAgbGlua3Nfc3VwcG9ydGVkID0gVHJ1ZQorICAgICAgICBlbHNlOgorICAg
ICAgICAgICAgbGlua3Nfc3VwcG9ydGVkID0gRmFsc2UKICAgICAgICAgdHJlZTEsIHRyZWUyID0g
c2VsZi5tdXRhYmxlX3RyZWVzX3RvX2xvY2tlZF90ZXN0X3RyZWVzKHRyZWUxLCB0cmVlMikKICAg
ICAgICAgZXhwZWN0ZWQgPSBbCiAgICAgICAgICAgICBzZWxmLnVudmVyc2lvbmVkKHRyZWUyLCAn
ZmlsZScpLApAQCAtNzk2LDExICs3OTksMTEgQEAKICAgICAgICAgdHJlZTEgPSBzZWxmLm1ha2Vf
YnJhbmNoX2FuZF90cmVlKCd0cmVlMScpCiAgICAgICAgIHRyZWUyID0gc2VsZi5tYWtlX3RvX2Jy
YW5jaF9hbmRfdHJlZSgndHJlZTInKQogICAgICAgICBzZWxmLmJ1aWxkX3RyZWUoWyd0cmVlMi9m
aWxlJywgJ3RyZWUyL2Rpci8nXSkKLSAgICAgICAgIyB0cnk6Ci0gICAgICAgIG9zLnN5bWxpbmso
J3RhcmdldCcsICd0cmVlMi9saW5rJykKLSAgICAgICAgbGlua3Nfc3VwcG9ydGVkID0gVHJ1ZQot
ICAgICAgICAjIGV4Y2VwdCA/Pz86Ci0gICAgICAgICMgICBsaW5rc19zdXBwb3J0ZWQgPSBGYWxz
ZQorICAgICAgICBpZiBoYXNfc3ltbGlua3MoKToKKyAgICAgICAgICAgIG9zLnN5bWxpbmsoJ3Rh
cmdldCcsICd0cmVlMi9saW5rJykKKyAgICAgICAgICAgIGxpbmtzX3N1cHBvcnRlZCA9IFRydWUK
KyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGxpbmtzX3N1cHBvcnRlZCA9IEZhbHNlCiAgICAg
ICAgIHRyZWUxLCB0cmVlMiA9IHNlbGYubXV0YWJsZV90cmVlc190b19sb2NrZWRfdGVzdF90cmVl
cyh0cmVlMSwgdHJlZTIpCiAgICAgICAgIGV4cGVjdGVkID0gWwogICAgICAgICAgICAgc2VsZi51
bnZlcnNpb25lZCh0cmVlMiwgJ2ZpbGUnKSwKQEAgLTgyOSwxNiArODMyLDE4IEBACiAgICAgICAg
IHNlbGYuYnVpbGRfdHJlZShbJ3RyZWUyL2ZpbGUnLCAndHJlZTIvZGlyLycsCiAgICAgICAgICAg
ICAndHJlZTEvZmlsZScsICd0cmVlMi9tb3ZlZGZpbGUnLAogICAgICAgICAgICAgJ3RyZWUxL2Rp
ci8nLCAndHJlZTIvbW92ZWRkaXIvJ10pCi0gICAgICAgICMgdHJ5OgotICAgICAgICBvcy5zeW1s
aW5rKCd0YXJnZXQnLCAndHJlZTEvbGluaycpCi0gICAgICAgIG9zLnN5bWxpbmsoJ3RhcmdldCcs
ICd0cmVlMi9saW5rJykKLSAgICAgICAgb3Muc3ltbGluaygndGFyZ2V0JywgJ3RyZWUyL21vdmVk
bGluaycpCi0gICAgICAgIGxpbmtzX3N1cHBvcnRlZCA9IFRydWUKLSAgICAgICAgIyBleGNlcHQg
Pz8/OgotICAgICAgICAjICAgbGlua3Nfc3VwcG9ydGVkID0gRmFsc2UKLSAgICAgICAgdHJlZTEu
YWRkKFsnZmlsZScsICdkaXInLCAnbGluayddLCBbJ2ZpbGUtaWQnLCAnZGlyLWlkJywgJ2xpbmst
aWQnXSkKLSAgICAgICAgdHJlZTIuYWRkKFsnbW92ZWRmaWxlJywgJ21vdmVkZGlyJywgJ21vdmVk
bGluayddLAotICAgICAgICAgICAgWydmaWxlLWlkJywgJ2Rpci1pZCcsICdsaW5rLWlkJ10pCisg
ICAgICAgIGlmIGhhc19zeW1saW5rcygpOgorICAgICAgICAgICAgb3Muc3ltbGluaygndGFyZ2V0
JywgJ3RyZWUxL2xpbmsnKQorICAgICAgICAgICAgb3Muc3ltbGluaygndGFyZ2V0JywgJ3RyZWUy
L2xpbmsnKQorICAgICAgICAgICAgb3Muc3ltbGluaygndGFyZ2V0JywgJ3RyZWUyL21vdmVkbGlu
aycpCisgICAgICAgICAgICBsaW5rc19zdXBwb3J0ZWQgPSBUcnVlCisgICAgICAgIGVsc2U6Cisg
ICAgICAgICAgICBsaW5rc19zdXBwb3J0ZWQgPSBGYWxzZQorICAgICAgICB0cmVlMS5hZGQoWydm
aWxlJywgJ2RpciddLCBbJ2ZpbGUtaWQnLCAnZGlyLWlkJ10pCisgICAgICAgIHRyZWUyLmFkZChb
J21vdmVkZmlsZScsICdtb3ZlZGRpciddLCBbJ2ZpbGUtaWQnLCAnZGlyLWlkJ10pCisgICAgICAg
IGlmIGxpbmtzX3N1cHBvcnRlZDoKKyAgICAgICAgICAgIHRyZWUxLmFkZChbJ2xpbmsnXSwgWyds
aW5rLWlkJ10pCisgICAgICAgICAgICB0cmVlMi5hZGQoWydtb3ZlZGxpbmsnXSwgWydsaW5rLWlk
J10pCiAgICAgICAgIHRyZWUxLCB0cmVlMiA9IHNlbGYubXV0YWJsZV90cmVlc190b19sb2NrZWRf
dGVzdF90cmVlcyh0cmVlMSwgdHJlZTIpCiAgICAgICAgIHJvb3RfaWQgPSB0cmVlMS5wYXRoMmlk
KCcnKQogICAgICAgICBleHBlY3RlZCA9IFsKQEAgLTg2Miw2ICs4NjcsNTEgQEAKICAgICAgICAg
ICAgIHNwZWNpZmljX2ZpbGVzPXNwZWNpZmljX2ZpbGVzLCByZXF1aXJlX3ZlcnNpb25lZD1GYWxz
ZSwKICAgICAgICAgICAgIHdhbnRfdW52ZXJzaW9uZWQ9VHJ1ZSkpCiAKKyAgICBkZWYgdGVzdF9z
aW1pbGFyX2ZpbGVuYW1lcyhzZWxmKToKKyAgICAgICAgIiIiVGVzdCB3aGVuIHdlIGhhdmUgYSBm
ZXcgZmlsZXMgd2l0aCBzaW1pbGFyIG5hbWVzLiIiIgorICAgICAgICB0cmVlMSA9IHNlbGYubWFr
ZV9icmFuY2hfYW5kX3RyZWUoJ3RyZWUxJykKKyAgICAgICAgdHJlZTIgPSBzZWxmLm1ha2VfYnJh
bmNoX2FuZF90cmVlKCd0cmVlMicpCisgICAgICAgIHRyZWUyLnNldF9yb290X2lkKHRyZWUxLmdl
dF9yb290X2lkKCkpCisKKyAgICAgICAgIyBUaGUgdHJlZXMgYXJlIGFjdHVhbGx5IGlkZW50aWNh
bCwgYnV0IHRoZXkgaGFwcGVuIHRvIGNvbnRhaW4KKyAgICAgICAgIyBzaW1pbGFybHkgbmFtZWQg
ZmlsZXMuCisgICAgICAgIHNlbGYuYnVpbGRfdHJlZShbJ3RyZWUxL2EvJywKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAndHJlZTEvYS9iLycsCisgICAgICAgICAgICAgICAgICAgICAgICAgJ3Ry
ZWUxL2EvYi9jLycsCisgICAgICAgICAgICAgICAgICAgICAgICAgJ3RyZWUxL2EvYi9jL2QvJywK
KyAgICAgICAgICAgICAgICAgICAgICAgICAndHJlZTEvYS1jLycsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgJ3RyZWUxL2EtYy9lLycsCisgICAgICAgICAgICAgICAgICAgICAgICAgJ3RyZWUy
L2EvJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAndHJlZTIvYS9iLycsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgJ3RyZWUyL2EvYi9jLycsCisgICAgICAgICAgICAgICAgICAgICAgICAg
J3RyZWUyL2EvYi9jL2QvJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAndHJlZTIvYS1jLycs
CisgICAgICAgICAgICAgICAgICAgICAgICAgJ3RyZWUyL2EtYy9lLycsCisgICAgICAgICAgICAg
ICAgICAgICAgICBdKQorICAgICAgICB0cmVlMS5hZGQoWydhJywgJ2EvYicsICdhL2IvYycsICdh
L2IvYy9kJywgJ2EtYycsICdhLWMvZSddLAorICAgICAgICAgICAgICAgICAgWydhLWlkJywgJ2It
aWQnLCAnYy1pZCcsICdkLWlkJywgJ2EtYy1pZCcsICdlLWlkJ10pCisgICAgICAgIHRyZWUyLmFk
ZChbJ2EnLCAnYS9iJywgJ2EvYi9jJywgJ2EvYi9jL2QnLCAnYS1jJywgJ2EtYy9lJ10sCisgICAg
ICAgICAgICAgICAgICBbJ2EtaWQnLCAnYi1pZCcsICdjLWlkJywgJ2QtaWQnLCAnYS1jLWlkJywg
J2UtaWQnXSkKKworICAgICAgICB0cmVlMSwgdHJlZTIgPSBzZWxmLm11dGFibGVfdHJlZXNfdG9f
bG9ja2VkX3Rlc3RfdHJlZXModHJlZTEsIHRyZWUyKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwoW10sIHNlbGYuZG9faXRlcl9jaGFuZ2VzKHRyZWUxLCB0cmVlMiwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2FudF91bnZlcnNpb25lZD1UcnVl
KSkKKyAgICAgICAgZXhwZWN0ZWQgPSBzb3J0ZWQoWworICAgICAgICAgICAgc2VsZi51bmNoYW5n
ZWQodHJlZTIsIHRyZWUyLmdldF9yb290X2lkKCkpLAorICAgICAgICAgICAgc2VsZi51bmNoYW5n
ZWQodHJlZTIsICdhLWlkJyksCisgICAgICAgICAgICBzZWxmLnVuY2hhbmdlZCh0cmVlMiwgJ2It
aWQnKSwKKyAgICAgICAgICAgIHNlbGYudW5jaGFuZ2VkKHRyZWUyLCAnYy1pZCcpLAorICAgICAg
ICAgICAgc2VsZi51bmNoYW5nZWQodHJlZTIsICdkLWlkJyksCisgICAgICAgICAgICBzZWxmLnVu
Y2hhbmdlZCh0cmVlMiwgJ2EtYy1pZCcpLAorICAgICAgICAgICAgc2VsZi51bmNoYW5nZWQodHJl
ZTIsICdlLWlkJyksCisgICAgICAgICAgICBdKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV4
cGVjdGVkLAorICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuZG9faXRlcl9jaGFuZ2VzKHRy
ZWUxLCB0cmVlMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB3YW50X3VudmVyc2lvbmVkPVRydWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgaW5jbHVkZV91bmNoYW5nZWQ9VHJ1ZSkpCisKKwogICAgIGRlZiB0ZXN0
X3VudmVyc2lvbmVkX3N1YnRyZWVfb25seV9lbWl0c19yb290KHNlbGYpOgogICAgICAgICB0cmVl
MSA9IHNlbGYubWFrZV9icmFuY2hfYW5kX3RyZWUoJ3RyZWUxJykKICAgICAgICAgdHJlZTIgPSBz
ZWxmLm1ha2VfdG9fYnJhbmNoX2FuZF90cmVlKCd0cmVlMicpCkBAIC0xMjExLDMgKzEyNjEsMTcy
IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoW10sICMgV2l0aG91dCB3YW50X3VudmVyc2lv
bmVkIHdlIHNob3VsZCBnZXQgbm90aGluZwogICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYu
ZG9faXRlcl9jaGFuZ2VzKHRyZWUxLCB0cmVlMiwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBzcGVjaWZpY19maWxlcz1bdSdcdTAzYjEnXSkpCisKKyAgICBk
ZWYgdGVzdF91bmtub3duX2VtcHR5X2RpcihzZWxmKToKKyAgICAgICAgdHJlZTEgPSBzZWxmLm1h
a2VfYnJhbmNoX2FuZF90cmVlKCd0cmVlMScpCisgICAgICAgIHRyZWUyID0gc2VsZi5tYWtlX3Rv
X2JyYW5jaF9hbmRfdHJlZSgndHJlZTInKQorICAgICAgICByb290X2lkID0gdHJlZTEuZ2V0X3Jv
b3RfaWQoKQorICAgICAgICB0cmVlMi5zZXRfcm9vdF9pZChyb290X2lkKQorCisgICAgICAgICMg
U3RhcnQgd2l0aCAyIGlkZW50aWNhbCB0cmVlcworICAgICAgICBzZWxmLmJ1aWxkX3RyZWUoWyd0
cmVlMS9hLycsICd0cmVlMS9iLycsCisgICAgICAgICAgICAgICAgICAgICAgICAgJ3RyZWUyL2Ev
JywgJ3RyZWUyL2IvJ10pCisgICAgICAgIHNlbGYuYnVpbGRfdHJlZV9jb250ZW50cyhbKCd0cmVl
MS9iL2ZpbGUnLCAnY29udGVudHNcbicpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICgndHJlZTIvYi9maWxlJywgJ2NvbnRlbnRzXG4nKV0pCisgICAgICAgIHRyZWUxLmFkZChb
J2EnLCAnYicsICdiL2ZpbGUnXSwgWydhLWlkJywgJ2ItaWQnLCAnYi1maWxlLWlkJ10pCisgICAg
ICAgIHRyZWUyLmFkZChbJ2EnLCAnYicsICdiL2ZpbGUnXSwgWydhLWlkJywgJ2ItaWQnLCAnYi1m
aWxlLWlkJ10pCisKKyAgICAgICAgIyBOb3cgY3JlYXRlIHNvbWUgdW5rbm93bnMgaW4gdHJlZTIK
KyAgICAgICAgIyBXZSBzaG91bGQgZmluZCBib3RoIGEvZmlsZSBhbmQgYS9kaXIgYXMgdW5rbm93
biwgYnV0IHdlIHNob3VsZG4ndAorICAgICAgICAjIHJlY3Vyc2UgaW50byBhL2RpciB0byBmaW5k
IHRoYXQgYS9kaXIvc3ViZmlsZSBpcyBhbHNvIHVua25vd24uCisgICAgICAgIHNlbGYuYnVpbGRf
dHJlZShbJ3RyZWUyL2EvZmlsZScsICd0cmVlMi9hL2Rpci8nLCAndHJlZTIvYS9kaXIvc3ViZmls
ZSddKQorCisgICAgICAgIHRyZWUxLCB0cmVlMiA9IHNlbGYubXV0YWJsZV90cmVlc190b19sb2Nr
ZWRfdGVzdF90cmVlcyh0cmVlMSwgdHJlZTIpCisKKyAgICAgICAgZXhwZWN0ZWQgPSBzb3J0ZWQo
WworICAgICAgICAgICAgc2VsZi51bnZlcnNpb25lZCh0cmVlMiwgdSdhL2ZpbGUnKSwKKyAgICAg
ICAgICAgIHNlbGYudW52ZXJzaW9uZWQodHJlZTIsIHUnYS9kaXInKSwKKyAgICAgICAgICAgIF0p
CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXhwZWN0ZWQsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgc2VsZi5kb19pdGVyX2NoYW5nZXModHJlZTEsIHRyZWUyLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVfdmVyc2lvbmVkPUZhbHNlLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdhbnRfdW52ZXJz
aW9uZWQ9VHJ1ZSkpCisKKyAgICBkZWYgdGVzdF9yZW5hbWVfb3Zlcl9kZWxldGVkKHNlbGYpOgor
ICAgICAgICB0cmVlMSA9IHNlbGYubWFrZV9icmFuY2hfYW5kX3RyZWUoJ3RyZWUxJykKKyAgICAg
ICAgdHJlZTIgPSBzZWxmLm1ha2VfdG9fYnJhbmNoX2FuZF90cmVlKCd0cmVlMicpCisgICAgICAg
IHJvb3RfaWQgPSB0cmVlMS5nZXRfcm9vdF9pZCgpCisgICAgICAgIHRyZWUyLnNldF9yb290X2lk
KHJvb3RfaWQpCisKKyAgICAgICAgIyBUaGUgZmluYWwgY2hhbmdlcyBzaG91bGQgYmU6CisgICAg
ICAgICMgICB0b3VjaCBhIGIgYyBkCisgICAgICAgICMgICBhZGQgYSBiIGMgZAorICAgICAgICAj
ICAgY29tbWl0CisgICAgICAgICMgICBybSBhIGQKKyAgICAgICAgIyAgIG12IGIgYQorICAgICAg
ICAjICAgbXYgYyBkCisgICAgICAgIHNlbGYuYnVpbGRfdHJlZV9jb250ZW50cyhbCisgICAgICAg
ICAgICAoJ3RyZWUxL2EnLCAnYSBjb250ZW50c1xuJyksCisgICAgICAgICAgICAoJ3RyZWUxL2In
LCAnYiBjb250ZW50c1xuJyksCisgICAgICAgICAgICAoJ3RyZWUxL2MnLCAnYyBjb250ZW50c1xu
JyksCisgICAgICAgICAgICAoJ3RyZWUxL2QnLCAnZCBjb250ZW50c1xuJyksCisgICAgICAgICAg
ICAoJ3RyZWUyL2EnLCAnYiBjb250ZW50c1xuJyksCisgICAgICAgICAgICAoJ3RyZWUyL2QnLCAn
YyBjb250ZW50c1xuJyksCisgICAgICAgICAgICBdKQorICAgICAgICB0cmVlMS5hZGQoWydhJywg
J2InLCAnYycsICdkJ10sIFsnYS1pZCcsICdiLWlkJywgJ2MtaWQnLCAnZC1pZCddKQorICAgICAg
ICB0cmVlMi5hZGQoWydhJywgJ2QnXSwgWydiLWlkJywgJ2MtaWQnXSkKKworICAgICAgICB0cmVl
MSwgdHJlZTIgPSBzZWxmLm11dGFibGVfdHJlZXNfdG9fbG9ja2VkX3Rlc3RfdHJlZXModHJlZTEs
IHRyZWUyKQorCisgICAgICAgIGV4cGVjdGVkID0gc29ydGVkKFsKKyAgICAgICAgICAgIHNlbGYu
ZGVsZXRlZCh0cmVlMSwgJ2EtaWQnKSwKKyAgICAgICAgICAgIHNlbGYuZGVsZXRlZCh0cmVlMSwg
J2QtaWQnKSwKKyAgICAgICAgICAgIHNlbGYucmVuYW1lZCh0cmVlMSwgdHJlZTIsICdiLWlkJywg
RmFsc2UpLAorICAgICAgICAgICAgc2VsZi5yZW5hbWVkKHRyZWUxLCB0cmVlMiwgJ2MtaWQnLCBG
YWxzZSksCisgICAgICAgICAgICBdKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV4cGVjdGVk
LAorICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuZG9faXRlcl9jaGFuZ2VzKHRyZWUxLCB0
cmVlMikpCisKKyAgICBkZWYgdGVzdF9kZWxldGVkX2FuZF91bmtub3duKHNlbGYpOgorICAgICAg
ICAiIiJUZXN0IGEgZmlsZSBtYXJrZWQgcmVtb3ZlZCwgYnV0IHN0aWxsIHByZXNlbnQgb24gZGlz
ay4iIiIKKyAgICAgICAgdHJlZTEgPSBzZWxmLm1ha2VfYnJhbmNoX2FuZF90cmVlKCd0cmVlMScp
CisgICAgICAgIHRyZWUyID0gc2VsZi5tYWtlX3RvX2JyYW5jaF9hbmRfdHJlZSgndHJlZTInKQor
ICAgICAgICByb290X2lkID0gdHJlZTEuZ2V0X3Jvb3RfaWQoKQorICAgICAgICB0cmVlMi5zZXRf
cm9vdF9pZChyb290X2lkKQorCisgICAgICAgICMgVGhlIGZpbmFsIGNoYW5nZXMgc2hvdWxkIGJl
OgorICAgICAgICAjIGJ6ciBhZGQgYSBiIGMKKyAgICAgICAgIyBienIgcm0gLS1rZWVwIGIKKyAg
ICAgICAgc2VsZi5idWlsZF90cmVlX2NvbnRlbnRzKFsKKyAgICAgICAgICAgICgndHJlZTEvYScs
ICdhIGNvbnRlbnRzXG4nKSwKKyAgICAgICAgICAgICgndHJlZTEvYicsICdiIGNvbnRlbnRzXG4n
KSwKKyAgICAgICAgICAgICgndHJlZTEvYycsICdjIGNvbnRlbnRzXG4nKSwKKyAgICAgICAgICAg
ICgndHJlZTIvYScsICdhIGNvbnRlbnRzXG4nKSwKKyAgICAgICAgICAgICgndHJlZTIvYicsICdi
IGNvbnRlbnRzXG4nKSwKKyAgICAgICAgICAgICgndHJlZTIvYycsICdjIGNvbnRlbnRzXG4nKSwK
KyAgICAgICAgICAgIF0pCisgICAgICAgIHRyZWUxLmFkZChbJ2EnLCAnYicsICdjJ10sIFsnYS1p
ZCcsICdiLWlkJywgJ2MtaWQnXSkKKyAgICAgICAgdHJlZTIuYWRkKFsnYScsICdjJ10sIFsnYS1p
ZCcsICdjLWlkJ10pCisKKyAgICAgICAgdHJlZTEsIHRyZWUyID0gc2VsZi5tdXRhYmxlX3RyZWVz
X3RvX2xvY2tlZF90ZXN0X3RyZWVzKHRyZWUxLCB0cmVlMikKKworICAgICAgICBleHBlY3RlZCA9
IHNvcnRlZChbCisgICAgICAgICAgICBzZWxmLmRlbGV0ZWQodHJlZTEsICdiLWlkJyksCisgICAg
ICAgICAgICBzZWxmLnVudmVyc2lvbmVkKHRyZWUyLCAnYicpLAorICAgICAgICAgICAgXSkKKyAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbChleHBlY3RlZCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICBzZWxmLmRvX2l0ZXJfY2hhbmdlcyh0cmVlMSwgdHJlZTIsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgd2FudF91bnZlcnNpb25lZD1UcnVlKSkKKyAgICAg
ICAgZXhwZWN0ZWQgPSBzb3J0ZWQoWworICAgICAgICAgICAgc2VsZi5kZWxldGVkKHRyZWUxLCAn
Yi1pZCcpLAorICAgICAgICAgICAgXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChleHBlY3Rl
ZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmRvX2l0ZXJfY2hhbmdlcyh0cmVlMSwg
dHJlZTIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2Fu
dF91bnZlcnNpb25lZD1GYWxzZSkpCisKKyAgICBkZWYgdGVzdF9yZW5hbWVkX2FuZF9hZGRlZChz
ZWxmKToKKyAgICAgICAgIiIiVGVzdCB3aGVuIHdlIGhhdmUgcmVuYW1lZCBhIGZpbGUsIGFuZCBw
dXQgYW5vdGhlciBpbiBpdHMgcGxhY2UuIiIiCisgICAgICAgIHRyZWUxID0gc2VsZi5tYWtlX2Jy
YW5jaF9hbmRfdHJlZSgndHJlZTEnKQorICAgICAgICB0cmVlMiA9IHNlbGYubWFrZV90b19icmFu
Y2hfYW5kX3RyZWUoJ3RyZWUyJykKKyAgICAgICAgcm9vdF9pZCA9IHRyZWUxLmdldF9yb290X2lk
KCkKKyAgICAgICAgdHJlZTIuc2V0X3Jvb3RfaWQocm9vdF9pZCkKKworICAgICAgICAjIFRoZSBm
aW5hbCBjaGFuZ2VzIGFyZToKKyAgICAgICAgIyBienIgYWRkIGIgYworICAgICAgICAjIGJ6ciBt
diBiIGEKKyAgICAgICAgIyBienIgbXYgYyBkCisgICAgICAgICMgYnpyIGFkZCBiIGMKKworICAg
ICAgICBzZWxmLmJ1aWxkX3RyZWVfY29udGVudHMoWworICAgICAgICAgICAgKCd0cmVlMS9iJywg
J2IgY29udGVudHNcbicpLAorICAgICAgICAgICAgKCd0cmVlMS9jJywgJ2MgY29udGVudHNcbicp
LAorICAgICAgICAgICAgKCd0cmVlMi9hJywgJ2IgY29udGVudHNcbicpLAorICAgICAgICAgICAg
KCd0cmVlMi9iJywgJ25ldyBiIGNvbnRlbnRzXG4nKSwKKyAgICAgICAgICAgICgndHJlZTIvYycs
ICduZXcgYyBjb250ZW50c1xuJyksCisgICAgICAgICAgICAoJ3RyZWUyL2QnLCAnYyBjb250ZW50
c1xuJyksCisgICAgICAgICAgICBdKQorICAgICAgICB0cmVlMS5hZGQoWydiJywgJ2MnXSwgWydi
MS1pZCcsICdjMS1pZCddKQorICAgICAgICB0cmVlMi5hZGQoWydhJywgJ2InLCAnYycsICdkJ10s
IFsnYjEtaWQnLCAnYjItaWQnLCAnYzItaWQnLCAnYzEtaWQnXSkKKworICAgICAgICB0cmVlMSwg
dHJlZTIgPSBzZWxmLm11dGFibGVfdHJlZXNfdG9fbG9ja2VkX3Rlc3RfdHJlZXModHJlZTEsIHRy
ZWUyKQorCisgICAgICAgIGV4cGVjdGVkID0gc29ydGVkKFsKKyAgICAgICAgICAgIHNlbGYucmVu
YW1lZCh0cmVlMSwgdHJlZTIsICdiMS1pZCcsIEZhbHNlKSwKKyAgICAgICAgICAgIHNlbGYucmVu
YW1lZCh0cmVlMSwgdHJlZTIsICdjMS1pZCcsIEZhbHNlKSwKKyAgICAgICAgICAgIHNlbGYuYWRk
ZWQodHJlZTIsICdiMi1pZCcpLAorICAgICAgICAgICAgc2VsZi5hZGRlZCh0cmVlMiwgJ2MyLWlk
JyksCisgICAgICAgICAgICBdKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV4cGVjdGVkLAor
ICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuZG9faXRlcl9jaGFuZ2VzKHRyZWUxLCB0cmVl
MiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3YW50X3Vu
dmVyc2lvbmVkPVRydWUpKQorCisgICAgZGVmIHRlc3RfcmVuYW1lZF9hbmRfdW5rbm93bihzZWxm
KToKKyAgICAgICAgIiIiQSBmaWxlIHdhcyBtb3ZlZCBvbiB0aGUgZmlsZXN5c3RlbSwgYnV0IG5v
dCBpbiBienIuIiIiCisgICAgICAgIHRyZWUxID0gc2VsZi5tYWtlX2JyYW5jaF9hbmRfdHJlZSgn
dHJlZTEnKQorICAgICAgICB0cmVlMiA9IHNlbGYubWFrZV90b19icmFuY2hfYW5kX3RyZWUoJ3Ry
ZWUyJykKKyAgICAgICAgcm9vdF9pZCA9IHRyZWUxLmdldF9yb290X2lkKCkKKyAgICAgICAgdHJl
ZTIuc2V0X3Jvb3RfaWQocm9vdF9pZCkKKworICAgICAgICAjIFRoZSBmaW5hbCBjaGFuZ2VzIGFy
ZToKKyAgICAgICAgIyBienIgYWRkIGEgYgorICAgICAgICAjIG12IGEgYTIKKworICAgICAgICBz
ZWxmLmJ1aWxkX3RyZWVfY29udGVudHMoWworICAgICAgICAgICAgKCd0cmVlMS9hJywgJ2EgY29u
dGVudHNcbicpLAorICAgICAgICAgICAgKCd0cmVlMS9iJywgJ2IgY29udGVudHNcbicpLAorICAg
ICAgICAgICAgKCd0cmVlMi9hJywgJ2EgY29udGVudHNcbicpLAorICAgICAgICAgICAgKCd0cmVl
Mi9iJywgJ2IgY29udGVudHNcbicpLAorICAgICAgICAgICAgXSkKKyAgICAgICAgdHJlZTEuYWRk
KFsnYScsICdiJ10sIFsnYS1pZCcsICdiLWlkJ10pCisgICAgICAgIHRyZWUyLmFkZChbJ2EnLCAn
YiddLCBbJ2EtaWQnLCAnYi1pZCddKQorICAgICAgICBvcy5yZW5hbWUoJ3RyZWUyL2EnLCAndHJl
ZTIvYTInKQorCisgICAgICAgIHRyZWUxLCB0cmVlMiA9IHNlbGYubXV0YWJsZV90cmVlc190b19s
b2NrZWRfdGVzdF90cmVlcyh0cmVlMSwgdHJlZTIpCisKKyAgICAgICAgZXhwZWN0ZWQgPSBzb3J0
ZWQoWworICAgICAgICAgICAgc2VsZi5taXNzaW5nKCdhLWlkJywgJ2EnLCAnYScsIHRyZWUyLmdl
dF9yb290X2lkKCksICdmaWxlJyksCisgICAgICAgICAgICBzZWxmLnVudmVyc2lvbmVkKHRyZWUy
LCAnYTInKSwKKyAgICAgICAgICAgIF0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXhwZWN0
ZWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5kb19pdGVyX2NoYW5nZXModHJlZTEs
IHRyZWUyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdh
bnRfdW52ZXJzaW9uZWQ9VHJ1ZSkpCgo=

=== modified file bzrlib/tests/lock_helpers.py // last-changed:andrew.bennetts@
... canonical.com-20070413015712-lvj50btwcb4k6w3i // encoding:base64
LS0tIGJ6cmxpYi90ZXN0cy9sb2NrX2hlbHBlcnMucHkKKysrIGJ6cmxpYi90ZXN0cy9sb2NrX2hl
bHBlcnMucHkKQEAgLTU2LDcgKzU2LDcgQEAKICAgICAgICAgICAgIHJldHVybiBzZWxmLl9vdGhl
ci5sb2NrX3JlYWQoKQogICAgICAgICByYWlzZSBUZXN0UHJldmVudExvY2tpbmcoJ2xvY2tfcmVh
ZCBkaXNhYmxlZCcpCiAKLSAgICBkZWYgbG9ja193cml0ZShzZWxmKToKKyAgICBkZWYgbG9ja193
cml0ZShzZWxmLCB0b2tlbj1Ob25lKToKICAgICAgICAgc2VsZi5fc2VxdWVuY2UuYXBwZW5kKChz
ZWxmLl9vdGhlcl9pZCwgJ2x3Jywgc2VsZi5fYWxsb3dfd3JpdGUpKQogICAgICAgICBpZiBzZWxm
Ll9hbGxvd193cml0ZToKICAgICAgICAgICAgIHJldHVybiBzZWxmLl9vdGhlci5sb2NrX3dyaXRl
KCkKCg==

=== modified file bzrlib/tests/repository_implementations/__init__.py // last-c
... hanged:andrew.bennetts@canonical.com-20070313065543-9ut4f0hw91ay6kdf // enc
... oding:base64
LS0tIGJ6cmxpYi90ZXN0cy9yZXBvc2l0b3J5X2ltcGxlbWVudGF0aW9ucy9fX2luaXRfXy5weQor
KysgYnpybGliL3Rlc3RzL3JlcG9zaXRvcnlfaW1wbGVtZW50YXRpb25zL19faW5pdF9fLnB5CkBA
IC0zOSw2ICszOSw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgIFRlc3RMb2FkZXIsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFRlc3RTdWl0ZSwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgKQorZnJvbSBienJsaWIudHJhbnNwb3J0Lm1lbW9yeSBpbXBvcnQgTWVtb3J5U2VydmVy
CiAKIAogZGVmIHRlc3Rfc3VpdGUoKToKQEAgLTUzLDYgKzU0LDEzIEBACiAgICAgICAgICdienJs
aWIudGVzdHMucmVwb3NpdG9yeV9pbXBsZW1lbnRhdGlvbnMudGVzdF9yZXZpc2lvbicsCiAgICAg
ICAgICdienJsaWIudGVzdHMucmVwb3NpdG9yeV9pbXBsZW1lbnRhdGlvbnMudGVzdF9zdGF0aXN0
aWNzJywKICAgICAgICAgXQorCisgICAgZnJvbSBienJsaWIuc21hcnQuc2VydmVyIGltcG9ydCAo
CisgICAgICAgIFNtYXJ0VENQU2VydmVyX2Zvcl90ZXN0aW5nLAorICAgICAgICBSZWFkb25seVNt
YXJ0VENQU2VydmVyX2Zvcl90ZXN0aW5nLAorICAgICAgICApCisgICAgZnJvbSBienJsaWIucmVt
b3RlIGltcG9ydCBSZW1vdGVCenJEaXJGb3JtYXQsIFJlbW90ZVJlcG9zaXRvcnlGb3JtYXQKKwog
ICAgIHJlZ2lzdHJ5ID0gcmVwb3NpdG9yeS5mb3JtYXRfcmVnaXN0cnkKICAgICBhbGxfZm9ybWF0
cyA9IFtyZWdpc3RyeS5nZXQoaykgZm9yIGsgaW4gcmVnaXN0cnkua2V5cygpXQogICAgIGFsbF9m
b3JtYXRzLmV4dGVuZCh3ZWF2ZXJlcG8uX2xlZ2FjeV9mb3JtYXRzKQpAQCAtNjQsNCArNzIsMTYg
QEAKICAgICAgICAgWyhmb3JtYXQsIGZvcm1hdC5fbWF0Y2hpbmdienJkaXIpIGZvciBmb3JtYXQg
aW4gYWxsX2Zvcm1hdHNdKQogICAgIGxvYWRlciA9IFRlc3RMb2FkZXIoKQogICAgIGFkYXB0X21v
ZHVsZXModGVzdF9yZXBvc2l0b3J5X2ltcGxlbWVudGF0aW9ucywgYWRhcHRlciwgbG9hZGVyLCBy
ZXN1bHQpCisKKyAgICBhZGFwdF90b19zbWFydF9zZXJ2ZXIgPSBSZXBvc2l0b3J5VGVzdFByb3Zp
ZGVyQWRhcHRlcigKKyAgICAgICAgU21hcnRUQ1BTZXJ2ZXJfZm9yX3Rlc3RpbmcsCisgICAgICAg
IFJlYWRvbmx5U21hcnRUQ1BTZXJ2ZXJfZm9yX3Rlc3RpbmcsCisgICAgICAgIFsoUmVtb3RlUmVw
b3NpdG9yeUZvcm1hdCgpLCBSZW1vdGVCenJEaXJGb3JtYXQoKSldLAorICAgICAgICBNZW1vcnlT
ZXJ2ZXIKKyAgICAgICAgKQorICAgIGFkYXB0X21vZHVsZXModGVzdF9yZXBvc2l0b3J5X2ltcGxl
bWVudGF0aW9ucywKKyAgICAgICAgICAgICAgICAgIGFkYXB0X3RvX3NtYXJ0X3NlcnZlciwKKyAg
ICAgICAgICAgICAgICAgIGxvYWRlciwKKyAgICAgICAgICAgICAgICAgIHJlc3VsdCkKKwogICAg
IHJldHVybiByZXN1bHQKCg==

=== modified file bzrlib/tests/repository_implementations/test_repository.py //
...  last-changed:andrew.bennetts@canonical.com-20070413062359-kiqjbhb06b3j2fj1
...  // encoding:base64
LS0tIGJ6cmxpYi90ZXN0cy9yZXBvc2l0b3J5X2ltcGxlbWVudGF0aW9ucy90ZXN0X3JlcG9zaXRv
cnkucHkKKysrIGJ6cmxpYi90ZXN0cy9yZXBvc2l0b3J5X2ltcGxlbWVudGF0aW9ucy90ZXN0X3Jl
cG9zaXRvcnkucHkKQEAgLTE2LDMxICsxNiwyMCBAQAogCiAiIiJUZXN0cyBmb3IgYnpyZGlyIGlt
cGxlbWVudGF0aW9ucyAtIHRlc3RzIGEgYnpyZGlyIGZvcm1hdC4iIiIKIAotaW1wb3J0IG9zCiBp
bXBvcnQgcmUKLWltcG9ydCBzeXMKIAogaW1wb3J0IGJ6cmxpYgogZnJvbSBienJsaWIgaW1wb3J0
ICgKICAgICBienJkaXIsCiAgICAgZXJyb3JzLAotICAgIGxvY2tkaXIsCisgICAgcmVtb3RlLAog
ICAgIHJlcG9zaXRvcnksCiAgICAgKQotZnJvbSBienJsaWIuYnJhbmNoIGltcG9ydCBCcmFuY2gs
IG5lZWRzX3JlYWRfbG9jaywgbmVlZHNfd3JpdGVfbG9jawogZnJvbSBienJsaWIuZGVsdGEgaW1w
b3J0IFRyZWVEZWx0YQotZnJvbSBienJsaWIuZXJyb3JzIGltcG9ydCAoRmlsZUV4aXN0cywKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgIE5vU3VjaFJldmlzaW9uLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgTm9TdWNoRmlsZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIFVuaW5p
dGlhbGl6YWJsZUZvcm1hdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIE5vdEJyYW5jaEVy
cm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgKQogZnJvbSBienJsaWIuaW52ZW50b3J5
IGltcG9ydCBJbnZlbnRvcnksIEludmVudG9yeURpcmVjdG9yeQogZnJvbSBienJsaWIucmV2aXNp
b24gaW1wb3J0IE5VTExfUkVWSVNJT04KLWZyb20gYnpybGliLnJlcG9mbXQgaW1wb3J0IGtuaXRy
ZXBvCi1mcm9tIGJ6cmxpYi50ZXN0cyBpbXBvcnQgVGVzdENhc2UsIFRlc3RDYXNlV2l0aFRyYW5z
cG9ydCwgVGVzdFNraXBwZWQKK2Zyb20gYnpybGliLnRlc3RzIGltcG9ydCBUZXN0Q2FzZVdpdGhU
cmFuc3BvcnQsIFRlc3RTa2lwcGVkCiBmcm9tIGJ6cmxpYi50ZXN0cy5ienJkaXJfaW1wbGVtZW50
YXRpb25zLnRlc3RfYnpyZGlyIGltcG9ydCBUZXN0Q2FzZVdpdGhCenJEaXIKLWZyb20gYnpybGli
LnRyYWNlIGltcG9ydCBtdXR0ZXIKIGZyb20gYnpybGliLnRyYW5zcG9ydCBpbXBvcnQgZ2V0X3Ry
YW5zcG9ydAogZnJvbSBienJsaWIudXBncmFkZSBpbXBvcnQgdXBncmFkZQogZnJvbSBienJsaWIu
d29ya2luZ3RyZWUgaW1wb3J0IFdvcmtpbmdUcmVlCkBAIC00OCwxOSArMzcsMjMgQEAKIAogY2xh
c3MgVGVzdENhc2VXaXRoUmVwb3NpdG9yeShUZXN0Q2FzZVdpdGhCenJEaXIpOgogCi0gICAgZGVm
IG1ha2VfYnJhbmNoKHNlbGYsIHJlbHBhdGgsIGZvcm1hdD1Ob25lKToKLSAgICAgICAgcmVwbyA9
IHNlbGYubWFrZV9yZXBvc2l0b3J5KHJlbHBhdGgsIGZvcm1hdD1Ob25lKQotICAgICAgICByZXR1
cm4gcmVwby5ienJkaXIuY3JlYXRlX2JyYW5jaCgpCi0KICAgICBkZWYgbWFrZV9yZXBvc2l0b3J5
KHNlbGYsIHJlbHBhdGgsIGZvcm1hdD1Ob25lKToKLSAgICAgICAgbWFkZV9jb250cm9sID0gc2Vs
Zi5tYWtlX2J6cmRpcihyZWxwYXRoKQotICAgICAgICByZXR1cm4gc2VsZi5yZXBvc2l0b3J5X2Zv
cm1hdC5pbml0aWFsaXplKG1hZGVfY29udHJvbCkKKyAgICAgICAgaWYgZm9ybWF0IGlzIE5vbmU6
CisgICAgICAgICAgICAjIENyZWF0ZSBhIHJlcG9zaXRvcnkgb2YgdGhlIHR5cGUgd2UgYXJlIHRy
eWluZyB0byB0ZXN0LgorICAgICAgICAgICAgbWFkZV9jb250cm9sID0gc2VsZi5tYWtlX2J6cmRp
cihyZWxwYXRoKQorICAgICAgICAgICAgcmV0dXJuIHNlbGYucmVwb3NpdG9yeV9mb3JtYXQuaW5p
dGlhbGl6ZShtYWRlX2NvbnRyb2wpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICByZXR1cm4g
c3VwZXIoVGVzdENhc2VXaXRoUmVwb3NpdG9yeSwgc2VsZikubWFrZV9yZXBvc2l0b3J5KAorICAg
ICAgICAgICAgICAgIHJlbHBhdGgsIGZvcm1hdCkKIAogCiBjbGFzcyBUZXN0UmVwb3NpdG9yeU1h
a2VCcmFuY2hBbmRUcmVlKFRlc3RDYXNlV2l0aFJlcG9zaXRvcnkpOgogCiAgICAgZGVmIHRlc3Rf
cmVwb3NpdG9yeV9mb3JtYXQoc2VsZik6Ci0gICAgICAgICMgbWFrZSBzdXJlIHRoZSByZXBvc2l0
b3J5IG9uIHRyZWUuYnJhbmNoIGlzIG9mIHRoZSBkZXNpcmVkIGZvcm1hdAorICAgICAgICAjIG1h
a2Ugc3VyZSB0aGUgcmVwb3NpdG9yeSBvbiB0cmVlLmJyYW5jaCBpcyBvZiB0aGUgZGVzaXJlZCBm
b3JtYXQsCisgICAgICAgICMgYmVjYXVzZSBkZXZlbG9wZXJzIHVzZSB0aGlzIGFwaSB0byBzZXR1
cCB0aGUgdHJlZSwgYnJhbmNoIGFuZCAKKyAgICAgICAgIyByZXBvc2l0b3J5IGZvciB0aGVpciB0
ZXN0czogaGF2aW5nIGl0IG5vdyBnaXZlIHRoZSByaWdodCByZXBvc2l0b3J5CisgICAgICAgICMg
dHlwZSB3b3VsZCBpbnZhbGlkYXRlIHRoZSB0ZXN0cy4KICAgICAgICAgdHJlZSA9IHNlbGYubWFr
ZV9icmFuY2hfYW5kX3RyZWUoJ3JlcG8nKQogICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2Uo
dHJlZS5icmFuY2gucmVwb3NpdG9yeS5fZm9ybWF0LAogICAgICAgICAgICAgc2VsZi5yZXBvc2l0
b3J5X2Zvcm1hdC5fX2NsYXNzX18pCkBAIC04OCw3ICs4MSw3IEBACiAgICAgICAgIHNlY29uZF9y
ZXZpc2lvbiA9IHRyZWUuY29tbWl0KCcnKQogICAgICAgICBpbnYgPSB0cmVlLmJyYW5jaC5yZXBv
c2l0b3J5LnJldmlzaW9uX3RyZWUoc2Vjb25kX3JldmlzaW9uKS5pbnZlbnRvcnkKICAgICAgICAg
cmljaF9yb290ID0gKGludi5yb290LnJldmlzaW9uICE9IHNlY29uZF9yZXZpc2lvbikKLSAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbChyaWNoX3Jvb3QsIAorICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KHJpY2hfcm9vdCwKICAgICAgICAgICAgICAgICAgICAgICAgICB0cmVlLmJyYW5jaC5yZXBvc2l0
b3J5LnN1cHBvcnRzX3JpY2hfcm9vdCgpKQogCiAgICAgZGVmIHRlc3RfY2xvbmVfc3BlY2lmaWNf
Zm9ybWF0KHNlbGYpOgpAQCAtMTk1LDI1ICsxODgsMjYgQEAKICAgICAgICAgICAgICAgICAgICBy
ZXZpc2lvbl9pZD1Ob25lLAogICAgICAgICAgICAgICAgICAgIHBiPWJ6cmxpYi5wcm9ncmVzcy5E
dW1teVByb2dyZXNzKCkpCiAKLSAgICBkZWYgdGVzdF9mZXRjaF9rbml0MihzZWxmKToKKyAgICBk
ZWYgdGVzdF9mZXRjaF9rbml0MyhzZWxmKToKKyAgICAgICAgIyBjcmVhdGUgYSByZXBvc2l0b3J5
IG9mIHRoZSBzb3J0IHdlIGFyZSB0ZXN0aW5nLgogICAgICAgICB0cmVlX2EgPSBzZWxmLm1ha2Vf
YnJhbmNoX2FuZF90cmVlKCdhJywgJycpCiAgICAgICAgIHNlbGYuYnVpbGRfdHJlZShbJ2EvZm9v
J10pCiAgICAgICAgIHRyZWVfYS5hZGQoJ2ZvbycsICdmaWxlMScpCiAgICAgICAgIHRyZWVfYS5j
b21taXQoJ3JldjEnLCByZXZfaWQ9J3JldjEnKQotICAgICAgICAjIGZldGNoIHdpdGggYSBkZWZh
dWx0IGxpbWl0IChncmFiIGV2ZXJ5dGhpbmcpCisgICAgICAgICMgY3JlYXRlIGEga25pdC0zIGJh
c2VkIGZvcm1hdCB0byBmZXRjaCBpbnRvCiAgICAgICAgIGYgPSBienJkaXIuZm9ybWF0X3JlZ2lz
dHJ5Lm1ha2VfYnpyZGlyKCdkaXJzdGF0ZS13aXRoLXN1YnRyZWUnKQogICAgICAgICB0cnk6CiAg
ICAgICAgICAgICBmb3JtYXQgPSB0cmVlX2EuYnJhbmNoLnJlcG9zaXRvcnkuX2Zvcm1hdAogICAg
ICAgICAgICAgZm9ybWF0LmNoZWNrX2NvbnZlcnNpb25fdGFyZ2V0KGYucmVwb3NpdG9yeV9mb3Jt
YXQpCisgICAgICAgICAgICAjIGlmIHdlIGNhbm5vdCBjb252ZXJ0IGRhdGEgdG8ga25pdDMsIHNr
aXAgdGhlIHRlc3QuCiAgICAgICAgIGV4Y2VwdCBlcnJvcnMuQmFkQ29udmVyc2lvblRhcmdldCwg
ZToKICAgICAgICAgICAgIHJhaXNlIFRlc3RTa2lwcGVkKHN0cihlKSkKICAgICAgICAgc2VsZi5n
ZXRfdHJhbnNwb3J0KCkubWtkaXIoJ2InKQogICAgICAgICBiX2J6cmRpciA9IGYuaW5pdGlhbGl6
ZShzZWxmLmdldF91cmwoJ2InKSkKLSAgICAgICAgcmVwbyA9IGJfYnpyZGlyLmNyZWF0ZV9yZXBv
c2l0b3J5KCkKLSAgICAgICAgcmVwby5mZXRjaCh0cmVlX2EuYnJhbmNoLnJlcG9zaXRvcnksCi0g
ICAgICAgICAgICAgICAgICAgcmV2aXNpb25faWQ9Tm9uZSwKLSAgICAgICAgICAgICAgICAgICBw
Yj1ienJsaWIucHJvZ3Jlc3MuRHVtbXlQcm9ncmVzcygpKQotICAgICAgICByZXYxX3RyZWUgPSBy
ZXBvLnJldmlzaW9uX3RyZWUoJ3JldjEnKQorICAgICAgICBrbml0M19yZXBvID0gYl9ienJkaXIu
Y3JlYXRlX3JlcG9zaXRvcnkoKQorICAgICAgICAjIGZldGNoIHdpdGggYSBkZWZhdWx0IGxpbWl0
IChncmFiIGV2ZXJ5dGhpbmcpCisgICAgICAgIGtuaXQzX3JlcG8uZmV0Y2godHJlZV9hLmJyYW5j
aC5yZXBvc2l0b3J5LCByZXZpc2lvbl9pZD1Ob25lKQorICAgICAgICByZXYxX3RyZWUgPSBrbml0
M19yZXBvLnJldmlzaW9uX3RyZWUoJ3JldjEnKQogICAgICAgICBsaW5lcyA9IHJldjFfdHJlZS5n
ZXRfZmlsZV9saW5lcyhyZXYxX3RyZWUuaW52ZW50b3J5LnJvb3QuZmlsZV9pZCkKICAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbChbXSwgbGluZXMpCiAgICAgICAgIGJfYnJhbmNoID0gYl9ienJkaXIu
Y3JlYXRlX2JyYW5jaCgpCkBAIC0yMjQsNyArMjE4LDcgQEAKICAgICAgICAgICAgIHJhaXNlIFRl
c3RTa2lwcGVkKCJjYW5ub3QgbWFrZSB3b3JraW5nIHRyZWUgd2l0aCB0cmFuc3BvcnQgJXIiCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAlIGJfYnpyZGlyLnRyYW5zcG9ydCkKICAgICAg
ICAgdHJlZV9iLmNvbW1pdCgnbm8gY2hhbmdlJywgcmV2X2lkPSdyZXYyJykKLSAgICAgICAgcmV2
Ml90cmVlID0gcmVwby5yZXZpc2lvbl90cmVlKCdyZXYyJykKKyAgICAgICAgcmV2Ml90cmVlID0g
a25pdDNfcmVwby5yZXZpc2lvbl90cmVlKCdyZXYyJykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bCgncmV2MScsIHJldjJfdHJlZS5pbnZlbnRvcnkucm9vdC5yZXZpc2lvbikKIAogICAgIGRlZiB0
ZXN0X2dldF9yZXZpc2lvbl9kZWx0YShzZWxmKToKQEAgLTI2NSw5ICsyNTksOSBAQAogICAgICAg
ICB0cnk6CiAgICAgICAgICAgICBtYWRlX3JlcG8uc2V0X21ha2Vfd29ya2luZ190cmVlcyhGYWxz
ZSkKICAgICAgICAgZXhjZXB0IE5vdEltcGxlbWVudGVkRXJyb3I6Ci0gICAgICAgICAgICBpZiBt
YWRlX3JlcG8ubWFrZV93b3JraW5nX3RyZWVzKCk6Ci0gICAgICAgICAgICAgICAgIyB0aGlzIHJl
cG9zaXRvcnkgYWx3YXlzIG1ha2VzIHdvcmtpbmcgdHJlZXMuCi0gICAgICAgICAgICAgICAgcmV0
dXJuCisgICAgICAgICAgICAjIHRoZSByZXBvc2l0b3J5IGRvZXMgbm90IHN1cHBvcnQgaGF2aW5n
IGl0cyB0cmVlLW1ha2luZyBmbGFnCisgICAgICAgICAgICAjIHRvZ2dsZWQuCisgICAgICAgICAg
ICByZXR1cm4KICAgICAgICAgcmVzdWx0ID0gbWFkZV9jb250cm9sLmNsb25lKHNlbGYuZ2V0X3Vy
bCgndGFyZ2V0JykpCiAgICAgICAgICMgQ2hlY2sgdGhhdCB3ZSBoYXZlIGEgcmVwb3NpdG9yeSBv
YmplY3QuCiAgICAgICAgIG1hZGVfcmVwby5oYXNfcmV2aXNpb24oJ2ZvbycpCkBAIC00MDcsNiAr
NDAxLDggQEAKICAgICAgICAgaWYgc2VsZi5yZXBvc2l0b3J5X2Zvcm1hdC5nZXRfZm9ybWF0X2Rl
c2NyaXB0aW9uKCkgXAogICAgICAgICAgICAgPT0gIlJlcG9zaXRvcnkgZm9ybWF0IDQiOgogICAg
ICAgICAgICAgcmFpc2UgVGVzdFNraXBwZWQoJ0Nhbm5vdCBjb252ZXJ0IGZvcm1hdC00IHRvIGl0
c2VsZicpCisgICAgICAgIGlmIGlzaW5zdGFuY2Uoc2VsZi5yZXBvc2l0b3J5X2Zvcm1hdCwgcmVt
b3RlLlJlbW90ZVJlcG9zaXRvcnlGb3JtYXQpOgorICAgICAgICAgICAgcmV0dXJuICMgbG9jYWwg
Y29udmVyc2lvbiB0by9mcm9tIFJlbW90ZU9iamVjdHMgaXMgaXJyZWxldmFudC4KICAgICAgICAg
c2VsZi5idWlsZF90cmVlX2NvbnRlbnRzKF91cGdyYWRlX2Rpcl90ZW1wbGF0ZSkKICAgICAgICAg
b2xkX3JlcG9kaXIgPSBienJsaWIuYnpyZGlyLkJ6ckRpci5vcGVuX3Vuc3VwcG9ydGVkKCcuJykK
ICAgICAgICAgb2xkX3JlcG9fZm9ybWF0ID0gb2xkX3JlcG9kaXIub3Blbl9yZXBvc2l0b3J5KCku
X2Zvcm1hdApAQCAtNDM0LDYgKzQzMCw1NCBAQAogCiBjbGFzcyBUZXN0UmVwb3NpdG9yeUxvY2tp
bmcoVGVzdENhc2VXaXRoUmVwb3NpdG9yeSk6CiAKKyAgICBkZWYgdGVzdF9sZWF2ZV9sb2NrX2lu
X3BsYWNlKHNlbGYpOgorICAgICAgICByZXBvID0gc2VsZi5tYWtlX3JlcG9zaXRvcnkoJ3InKQor
ICAgICAgICAjIExvY2sgdGhlIHJlcG9zaXRvcnksIHRoZW4gdXNlIGxlYXZlX2xvY2tfaW5fcGxh
Y2Ugc28gdGhhdCB3aGVuIHdlCisgICAgICAgICMgdW5sb2NrIHRoZSByZXBvc2l0b3J5IHRoZSBs
b2NrIGlzIHN0aWxsIGhlbGQgb24gZGlzay4KKyAgICAgICAgdG9rZW4gPSByZXBvLmxvY2tfd3Jp
dGUoKQorICAgICAgICB0cnk6CisgICAgICAgICAgICBpZiB0b2tlbiBpcyBOb25lOgorICAgICAg
ICAgICAgICAgICMgVGhpcyB0ZXN0IGRvZXMgbm90IGFwcGx5LCBiZWNhdXNlIHRoaXMgcmVwb3Np
dG9yeSByZWZ1c2VzIGxvY2sKKyAgICAgICAgICAgICAgICAjIHRva2Vucy4KKyAgICAgICAgICAg
ICAgICBzZWxmLmFzc2VydFJhaXNlcyhOb3RJbXBsZW1lbnRlZEVycm9yLCByZXBvLmxlYXZlX2xv
Y2tfaW5fcGxhY2UpCisgICAgICAgICAgICAgICAgcmV0dXJuCisgICAgICAgICAgICByZXBvLmxl
YXZlX2xvY2tfaW5fcGxhY2UoKQorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgcmVwby51
bmxvY2soKQorICAgICAgICAjIFdlIHNob3VsZCBiZSB1bmFibGUgdG8gcmVsb2NrIHRoZSByZXBv
LgorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhlcnJvcnMuTG9ja0NvbnRlbnRpb24sIHJlcG8u
bG9ja193cml0ZSkKKworICAgIGRlZiB0ZXN0X2RvbnRfbGVhdmVfbG9ja19pbl9wbGFjZShzZWxm
KToKKyAgICAgICAgcmVwbyA9IHNlbGYubWFrZV9yZXBvc2l0b3J5KCdyJykKKyAgICAgICAgIyBD
cmVhdGUgYSBsb2NrIG9uIGRpc2suCisgICAgICAgIHRva2VuID0gcmVwby5sb2NrX3dyaXRlKCkK
KyAgICAgICAgdHJ5OgorICAgICAgICAgICAgaWYgdG9rZW4gaXMgTm9uZToKKyAgICAgICAgICAg
ICAgICAjIFRoaXMgdGVzdCBkb2VzIG5vdCBhcHBseSwgYmVjYXVzZSB0aGlzIHJlcG9zaXRvcnkg
cmVmdXNlcyBsb2NrCisgICAgICAgICAgICAgICAgIyB0b2tlbnMuCisgICAgICAgICAgICAgICAg
c2VsZi5hc3NlcnRSYWlzZXMoTm90SW1wbGVtZW50ZWRFcnJvciwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICByZXBvLmRvbnRfbGVhdmVfbG9ja19pbl9wbGFjZSkKKyAgICAgICAg
ICAgICAgICByZXR1cm4KKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICByZXBvLmxl
YXZlX2xvY2tfaW5fcGxhY2UoKQorICAgICAgICAgICAgZXhjZXB0IE5vdEltcGxlbWVudGVkRXJy
b3I6CisgICAgICAgICAgICAgICAgIyBUaGlzIHJlcG9zaXRvcnkgZG9lc24ndCBzdXBwb3J0IHRo
aXMgQVBJLgorICAgICAgICAgICAgICAgIHJldHVybgorICAgICAgICBmaW5hbGx5OgorICAgICAg
ICAgICAgcmVwby51bmxvY2soKQorICAgICAgICAjIFJlYWNxdWlyZSB0aGUgbG9jayAod2l0aCBh
IGRpZmZlcmVudCByZXBvc2l0b3J5IG9iamVjdCkgYnkgdXNpbmcgdGhlCisgICAgICAgICMgdG9r
ZW4uCisgICAgICAgIG5ld19yZXBvID0gcmVwby5ienJkaXIub3Blbl9yZXBvc2l0b3J5KCkKKyAg
ICAgICAgbmV3X3JlcG8ubG9ja193cml0ZSh0b2tlbj10b2tlbikKKyAgICAgICAgIyBDYWxsIGRv
bnRfbGVhdmVfbG9ja19pbl9wbGFjZSwgc28gdGhhdCB0aGUgbG9jayB3aWxsIGJlIHJlbGVhc2Vk
IGJ5CisgICAgICAgICMgdGhpcyBpbnN0YW5jZSwgZXZlbiB0aG91Z2ggdGhlIGxvY2sgd2Fzbid0
IG9yaWdpbmFsbHkgYWNxdWlyZWQgYnkgaXQuCisgICAgICAgIG5ld19yZXBvLmRvbnRfbGVhdmVf
bG9ja19pbl9wbGFjZSgpCisgICAgICAgIG5ld19yZXBvLnVubG9jaygpCisgICAgICAgICMgTm93
IHRoZSByZXBvc2l0b3J5IGlzIHVubG9ja2VkLiAgVGVzdCB0aGlzIGJ5IGxvY2tpbmcgaXQgKHdp
dGhvdXQgYQorICAgICAgICAjIHRva2VuKS4KKyAgICAgICAgcmVwby5sb2NrX3dyaXRlKCkKKyAg
ICAgICAgcmVwby51bmxvY2soKQorCiAgICAgZGVmIHRlc3RfbG9ja19yZWFkX3RoZW5fdW5sb2Nr
KHNlbGYpOgogICAgICAgICAjIENhbGxpbmcgbG9ja19yZWFkIHRoZW4gdW5sb2NraW5nIHNob3Vs
ZCB3b3JrIHdpdGhvdXQgZXJyb3JzLgogICAgICAgICByZXBvID0gc2VsZi5tYWtlX3JlcG9zaXRv
cnkoJ3InKQpAQCAtNTA3LDcgKzU1MSw3IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoeydy
ZXYxJzpbXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3JldjInOlsncmV2MSddfSwKICAg
ICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmJ6cmRpci5vcGVuX3JlcG9zaXRvcnkoKS5nZXRf
cmV2aXNpb25fZ3JhcGgoJ3JldjInKSkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoTm9TdWNo
UmV2aXNpb24sCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKGVycm9ycy5Ob1N1Y2hSZXZpc2lv
biwKICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5ienJkaXIub3Blbl9yZXBvc2l0b3J5
KCkuZ2V0X3JldmlzaW9uX2dyYXBoLAogICAgICAgICAgICAgICAgICAgICAgICAgICAnb3JwaGFu
JykKICAgICAgICAgIyBhbmQgZ2hvc3RzIGFyZSBub3QgbWVudGlvbmVkCkBAIC02MjIsNiArNjY2
LDExIEBACiAgICAgIiIiCiAKICAgICBkZWYgdGVzdF9vbl92ZmF0KHNlbGYpOgorICAgICAgICAj
IGRvbnQgYm90aGVyIHdpdGggcmVtb3RlIHJlcG9zaXRvcnkgdGVzdGluZywgYmVjYXVzZSB0aGlz
IHRlc3QgaXMKKyAgICAgICAgIyBhYm91dCBsb2NhbCBkaXNrIGxheW91dC9zdXBwb3J0LgorICAg
ICAgICBmcm9tIGJ6cmxpYi5yZW1vdGUgaW1wb3J0IFJlbW90ZVJlcG9zaXRvcnlGb3JtYXQKKyAg
ICAgICAgaWYgaXNpbnN0YW5jZShzZWxmLnJlcG9zaXRvcnlfZm9ybWF0LCBSZW1vdGVSZXBvc2l0
b3J5Rm9ybWF0KToKKyAgICAgICAgICAgIHJldHVybgogICAgICAgICBGT09fSUQgPSAnZm9vPDo+
SUQnCiAgICAgICAgIFJFVl9JRCA9ICdyZXZpZC0xJyAKICAgICAgICAgIyB0aGlzIG1ha2VzIGEg
ZGVmYXVsdCBmb3JtYXQgcmVwb3NpdG9yeSBhbHdheXMsIHdoaWNoIGlzIHdyb25nOiAKCg==

=== modified file bzrlib/tests/test_branch.py // last-changed:andrew.bennetts@c
... anonical.com-20070410155415-hyzlzwevu3ud0dny // encoding:base64
LS0tIGJ6cmxpYi90ZXN0cy90ZXN0X2JyYW5jaC5weQorKysgYnpybGliL3Rlc3RzL3Rlc3RfYnJh
bmNoLnB5CkBAIC0yOTgsNiArMjk4LDE3IEBACiAgICAgICAgIG9wZW5lZF9icmFuY2ggPSBicmFu
Y2hfZGlyLm9wZW5fYnJhbmNoKCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvcGVuZWRfYnJh
bmNoLmJhc2UsIHRhcmdldF9icmFuY2guYmFzZSkKIAorICAgIGRlZiB0ZXN0X2dldF9yZWZlcmVu
Y2Uoc2VsZik6CisgICAgICAgICIiIkZvciBhIEJyYW5jaFJlZmVyZW5jZSwgZ2V0X3JlZmVyZW5j
ZSBzaG91bGQgcmV1dHJuIHRoZSBsb2NhdGlvbi4iIiIKKyAgICAgICAgYnJhbmNoID0gc2VsZi5t
YWtlX2JyYW5jaCgndGFyZ2V0JykKKyAgICAgICAgY2hlY2tvdXQgPSBicmFuY2guY3JlYXRlX2No
ZWNrb3V0KCdjaGVja291dCcsIGxpZ2h0d2VpZ2h0PVRydWUpCisgICAgICAgIHJlZmVyZW5jZV91
cmwgPSBicmFuY2guYnpyZGlyLnJvb3RfdHJhbnNwb3J0LmFic3BhdGgoJycpICsgJy8nCisgICAg
ICAgICMgaWYgdGhlIGFwaSBmb3IgY3JlYXRlX2NoZWNrb3V0IGNoYW5nZXMgdG8gcmV0dXJuIGRp
ZmZlcmVudCBjaGVja291dCB0eXBlcworICAgICAgICAjIHRoZW4gdGhpcyBmaWxlIHJlYWQgd2ls
bCBmYWlsLgorICAgICAgICBzZWxmLmFzc2VydEZpbGVFcXVhbChyZWZlcmVuY2VfdXJsLCAnY2hl
Y2tvdXQvLmJ6ci9icmFuY2gvbG9jYXRpb24nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJl
ZmVyZW5jZV91cmwsCisgICAgICAgICAgICBfbW9kX2JyYW5jaC5CcmFuY2hSZWZlcmVuY2VGb3Jt
YXQoKS5nZXRfcmVmZXJlbmNlKGNoZWNrb3V0LmJ6cmRpcikpCisKIAogY2xhc3MgVGVzdEhvb2tz
KFRlc3RDYXNlKToKIAoK

=== modified file bzrlib/tests/test_bundle.py // last-changed:john@arbash-meine
... l.com-20070425174944-mti4294wv55nimd3 // encoding:base64
LS0tIGJ6cmxpYi90ZXN0cy90ZXN0X2J1bmRsZS5weQorKysgYnpybGliL3Rlc3RzL3Rlc3RfYnVu
ZGxlLnB5CkBAIC05MDUsNiArOTA1LDExNiBAQAogICAgICAgICBzZWxmLmFzc2VydFRydWUoYnJh
bmNoMi5yZXBvc2l0b3J5Lmhhc19yZXZpc2lvbigncmV2MmEnKSkKICAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbCgncmV2MmEnLCB0YXJnZXRfcmV2aXNpb24pCiAKKyAgICBkZWYgdGVzdF9idW5kbGVf
ZW1wdHlfcHJvcGVydHkoc2VsZik6CisgICAgICAgICIiIlRlc3Qgc2VyaWFsaXppbmcgcmV2aXNp
b24gcHJvcGVydGllcyB3aXRoIGFuIGVtcHR5IHZhbHVlLiIiIgorICAgICAgICB0cmVlID0gc2Vs
Zi5tYWtlX2JyYW5jaF9hbmRfbWVtb3J5X3RyZWUoJ3RyZWUnKQorICAgICAgICB0cmVlLmxvY2tf
d3JpdGUoKQorICAgICAgICBzZWxmLmFkZENsZWFudXAodHJlZS51bmxvY2spCisgICAgICAgIHRy
ZWUuYWRkKFsnJ10sIFsnVFJFRV9ST09UJ10pCisgICAgICAgIHRyZWUuY29tbWl0KCdPbmUnLCBy
ZXZwcm9wcz17J29uZSc6J3R3bycsICdlbXB0eSc6Jyd9LCByZXZfaWQ9J3JldjEnKQorICAgICAg
ICBzZWxmLmIxID0gdHJlZS5icmFuY2gKKyAgICAgICAgYnVuZGxlX3NpbywgcmV2aXNpb25faWRz
ID0gc2VsZi5jcmVhdGVfYnVuZGxlX3RleHQoTm9uZSwgJ3JldjEnKQorICAgICAgICBzZWxmLmFz
c2VydENvbnRhaW5zUmUoYnVuZGxlX3Npby5nZXR2YWx1ZSgpLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgJyMgcHJvcGVydGllczpcbicKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICcjICAgYnJhbmNoLW5pY2s6IHRyZWVcbicKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICcjICAgZW1wdHk6IFxuJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJyMgICBv
bmU6IHR3b1xuJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICApCisgICAgICAgIGJ1bmRs
ZSA9IHJlYWRfYnVuZGxlKGJ1bmRsZV9zaW8pCisgICAgICAgIHJldmlzaW9uX2luZm8gPSBidW5k
bGUucmV2aXNpb25zWzBdCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ3JldjEnLCByZXZpc2lv
bl9pbmZvLnJldmlzaW9uX2lkKQorICAgICAgICByZXYgPSByZXZpc2lvbl9pbmZvLmFzX3Jldmlz
aW9uKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh7J2JyYW5jaC1uaWNrJzondHJlZScsICdl
bXB0eSc6JycsICdvbmUnOid0d28nfSwKKyAgICAgICAgICAgICAgICAgICAgICAgICByZXYucHJv
cGVydGllcykKKworICAgIGRlZiB0ZXN0X2J1bmRsZV9lbXB0eV9wcm9wZXJ0eV9hbHQoc2VsZik6
CisgICAgICAgICIiIlRlc3Qgc2VyaWFsaXppbmcgcmV2aXNpb24gcHJvcGVydGllcyB3aXRoIGFu
IGVtcHR5IHZhbHVlLgorCisgICAgICAgIE9sZGVyIHJlYWRlcnMgaGFkIGEgYnVnIHdoZW4gcmVh
ZGluZyBhbiBlbXB0eSBwcm9wZXJ0eS4KKyAgICAgICAgVGhleSBhc3N1bWVkIHRoYXQgYWxsIGtl
eXMgZW5kZWQgaW4gJzogXG4nLiBIb3dldmVyIHRoZXkgd291bGQgd3JpdGUgYW4KKyAgICAgICAg
ZW1wdHkgdmFsdWUgYXMgJzpcbicuIFRoaXMgdGVzdHMgbWFrZSBzdXJlIHRoYXQgYWxsIG5ld2Vy
IGJ6ciB2ZXJzaW9ucworICAgICAgICBjYW4gaGFuZGxlIHRoIHNlY29uZCBmb3JtLgorICAgICAg
ICAiIiIKKyAgICAgICAgdHJlZSA9IHNlbGYubWFrZV9icmFuY2hfYW5kX21lbW9yeV90cmVlKCd0
cmVlJykKKyAgICAgICAgdHJlZS5sb2NrX3dyaXRlKCkKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVw
KHRyZWUudW5sb2NrKQorICAgICAgICB0cmVlLmFkZChbJyddLCBbJ1RSRUVfUk9PVCddKQorICAg
ICAgICB0cmVlLmNvbW1pdCgnT25lJywgcmV2cHJvcHM9eydvbmUnOid0d28nLCAnZW1wdHknOicn
fSwgcmV2X2lkPSdyZXYxJykKKyAgICAgICAgc2VsZi5iMSA9IHRyZWUuYnJhbmNoCisgICAgICAg
IGJ1bmRsZV9zaW8sIHJldmlzaW9uX2lkcyA9IHNlbGYuY3JlYXRlX2J1bmRsZV90ZXh0KE5vbmUs
ICdyZXYxJykKKyAgICAgICAgdHh0ID0gYnVuZGxlX3Npby5nZXR2YWx1ZSgpCisgICAgICAgIGxv
YyA9IHR4dC5maW5kKCcjICAgZW1wdHk6ICcpICsgbGVuKCcjICAgZW1wdHk6JykKKyAgICAgICAg
IyBDcmVhdGUgYSBuZXcgYnVuZGxlLCB3aGljaCBzdHJpcHMgdGhlIHRyYWlsaW5nIHNwYWNlIGFm
dGVyIGVtcHR5CisgICAgICAgIGJ1bmRsZV9zaW8gPSBTdHJpbmdJTyh0eHRbOmxvY10gKyB0eHRb
bG9jKzE6XSkKKworICAgICAgICBzZWxmLmFzc2VydENvbnRhaW5zUmUoYnVuZGxlX3Npby5nZXR2
YWx1ZSgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJyMgcHJvcGVydGllczpcbicK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcjICAgYnJhbmNoLW5pY2s6IHRyZWVcbicK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcjICAgZW1wdHk6XG4nCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAnIyAgIG9uZTogdHdvXG4nCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICkKKyAgICAgICAgYnVuZGxlID0gcmVhZF9idW5kbGUoYnVuZGxlX3NpbykKKyAg
ICAgICAgcmV2aXNpb25faW5mbyA9IGJ1bmRsZS5yZXZpc2lvbnNbMF0KKyAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbCgncmV2MScsIHJldmlzaW9uX2luZm8ucmV2aXNpb25faWQpCisgICAgICAgIHJl
diA9IHJldmlzaW9uX2luZm8uYXNfcmV2aXNpb24oKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KHsnYnJhbmNoLW5pY2snOid0cmVlJywgJ2VtcHR5JzonJywgJ29uZSc6J3R3byd9LAorICAgICAg
ICAgICAgICAgICAgICAgICAgIHJldi5wcm9wZXJ0aWVzKQorCisgICAgZGVmIHRlc3RfYnVuZGxl
X3NvcnRlZF9wcm9wZXJ0aWVzKHNlbGYpOgorICAgICAgICAiIiJGb3Igc3RhYmlsaXR5IHRoZSB3
cml0ZXIgc2hvdWxkIHdyaXRlIHByb3BlcnRpZXMgaW4gc29ydGVkIG9yZGVyLiIiIgorICAgICAg
ICB0cmVlID0gc2VsZi5tYWtlX2JyYW5jaF9hbmRfbWVtb3J5X3RyZWUoJ3RyZWUnKQorICAgICAg
ICB0cmVlLmxvY2tfd3JpdGUoKQorICAgICAgICBzZWxmLmFkZENsZWFudXAodHJlZS51bmxvY2sp
CisKKyAgICAgICAgdHJlZS5hZGQoWycnXSwgWydUUkVFX1JPT1QnXSkKKyAgICAgICAgdHJlZS5j
b21taXQoJ09uZScsIHJldl9pZD0ncmV2MScsCisgICAgICAgICAgICAgICAgICAgIHJldnByb3Bz
PXsnYSc6JzQnLCAnYic6JzMnLCAnYyc6JzInLCAnZCc6JzEnfSkKKyAgICAgICAgc2VsZi5iMSA9
IHRyZWUuYnJhbmNoCisgICAgICAgIGJ1bmRsZV9zaW8sIHJldmlzaW9uX2lkcyA9IHNlbGYuY3Jl
YXRlX2J1bmRsZV90ZXh0KE5vbmUsICdyZXYxJykKKyAgICAgICAgc2VsZi5hc3NlcnRDb250YWlu
c1JlKGJ1bmRsZV9zaW8uZ2V0dmFsdWUoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICcjIHByb3BlcnRpZXM6XG4nCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnIyAgIGE6
IDRcbicKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcjICAgYjogM1xuJworICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgJyMgICBicmFuY2gtbmljazogdHJlZVxuJworICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgJyMgICBjOiAyXG4nCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAnIyAgIGQ6IDFcbicKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKQor
ICAgICAgICBidW5kbGUgPSByZWFkX2J1bmRsZShidW5kbGVfc2lvKQorICAgICAgICByZXZpc2lv
bl9pbmZvID0gYnVuZGxlLnJldmlzaW9uc1swXQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdy
ZXYxJywgcmV2aXNpb25faW5mby5yZXZpc2lvbl9pZCkKKyAgICAgICAgcmV2ID0gcmV2aXNpb25f
aW5mby5hc19yZXZpc2lvbigpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoeydicmFuY2gtbmlj
ayc6J3RyZWUnLCAnYSc6JzQnLCAnYic6JzMnLCAnYyc6JzInLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAnZCc6JzEnfSwgcmV2LnByb3BlcnRpZXMpCisKKyAgICBkZWYgdGVzdF9idW5kbGVf
dW5pY29kZV9wcm9wZXJ0aWVzKHNlbGYpOgorICAgICAgICAiIiJXZSBzaG91bGQgYmUgYWJsZSB0
byByb3VuZCB0cmlwIGEgbm9uLWFzY2lpIHByb3BlcnR5LiIiIgorICAgICAgICB0cmVlID0gc2Vs
Zi5tYWtlX2JyYW5jaF9hbmRfbWVtb3J5X3RyZWUoJ3RyZWUnKQorICAgICAgICB0cmVlLmxvY2tf
d3JpdGUoKQorICAgICAgICBzZWxmLmFkZENsZWFudXAodHJlZS51bmxvY2spCisKKyAgICAgICAg
dHJlZS5hZGQoWycnXSwgWydUUkVFX1JPT1QnXSkKKyAgICAgICAgIyBSZXZpc2lvbnMgdGhlbXNl
bHZlcyBkbyBub3QgcmVxdWlyZSBhbnl0aGluZyBhYm91dCByZXZpc2lvbiBwcm9wZXJ0eQorICAg
ICAgICAjIGtleXMsIG90aGVyIHRoYW4gdGhhdCB0aGV5IGFyZSBhIGJhc2VzdHJpbmcsIGFuZCBk
byBub3QgY29udGFpbgorICAgICAgICAjIHdoaXRlc3BhY2UuCisgICAgICAgICMgSG93ZXZlciwg
VGVzdGFtZW50cyBhc3NlcnQgdGhhbiB0aGV5IGFyZSBzdHIoKSwgYW5kIHRodXMgc2hvdWxkIG5v
dAorICAgICAgICAjIGJlIFVuaWNvZGUuCisgICAgICAgIHRyZWUuY29tbWl0KCdPbmUnLCByZXZf
aWQ9J3JldjEnLAorICAgICAgICAgICAgICAgICAgICByZXZwcm9wcz17J29tZWdhJzp1J1x1MDNh
OScsICdhbHBoYSc6dSdcdTAzYjEnfSkKKyAgICAgICAgc2VsZi5iMSA9IHRyZWUuYnJhbmNoCisg
ICAgICAgIGJ1bmRsZV9zaW8sIHJldmlzaW9uX2lkcyA9IHNlbGYuY3JlYXRlX2J1bmRsZV90ZXh0
KE5vbmUsICdyZXYxJykKKyAgICAgICAgc2VsZi5hc3NlcnRDb250YWluc1JlKGJ1bmRsZV9zaW8u
Z2V0dmFsdWUoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcjIHByb3BlcnRpZXM6
XG4nCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnIyAgIGFscGhhOiBceGNlXHhiMVxu
JworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJyMgICBicmFuY2gtbmljazogdHJlZVxu
JworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJyMgICBvbWVnYTogXHhjZVx4YTlcbicK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKQorICAgICAgICBidW5kbGUgPSByZWFkX2J1
bmRsZShidW5kbGVfc2lvKQorICAgICAgICByZXZpc2lvbl9pbmZvID0gYnVuZGxlLnJldmlzaW9u
c1swXQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdyZXYxJywgcmV2aXNpb25faW5mby5yZXZp
c2lvbl9pZCkKKyAgICAgICAgcmV2ID0gcmV2aXNpb25faW5mby5hc19yZXZpc2lvbigpCisgICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwoeydicmFuY2gtbmljayc6J3RyZWUnLCAnb21lZ2EnOnUnXHUw
M2E5JywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgJ2FscGhhJzp1J1x1MDNiMSd9LCByZXYu
cHJvcGVydGllcykKKwogCiBjbGFzcyBWMDlCdW5kbGVLbml0MlRlc3RlcihWMDhCdW5kbGVUZXN0
ZXIpOgogCgo=

=== modified file bzrlib/tests/test_commands.py // last-changed:robertc@robertc
... ollins.net-20070420035406-e68xf089otkpo7xx // encoding:base64
LS0tIGJ6cmxpYi90ZXN0cy90ZXN0X2NvbW1hbmRzLnB5CisrKyBienJsaWIvdGVzdHMvdGVzdF9j
b21tYW5kcy5weQpAQCAtMjEsMTIgKzIxLDEzIEBACiAgICAgY29tbWFuZHMsCiAgICAgY29uZmln
LAogICAgIGVycm9ycywKKyAgICB0ZXN0cywKICAgICApCiBmcm9tIGJ6cmxpYi5jb21tYW5kcyBp
bXBvcnQgZGlzcGxheV9jb21tYW5kCi1mcm9tIGJ6cmxpYi50ZXN0cyBpbXBvcnQgVGVzdENhc2Us
IFRlc3RTa2lwcGVkCi0KLQotY2xhc3MgVGVzdENvbW1hbmRzKFRlc3RDYXNlKToKK2Zyb20gYnpy
bGliLnRlc3RzIGltcG9ydCBUZXN0U2tpcHBlZAorCisKK2NsYXNzIFRlc3RDb21tYW5kcyh0ZXN0
cy5UZXN0Q2FzZSk6CiAKICAgICBkZWYgdGVzdF9kaXNwbGF5X2NvbW1hbmQoc2VsZik6CiAgICAg
ICAgICIiIkVQSVBFIG1lc3NhZ2UgaXMgc2VsZWN0aXZlbHkgc3VwcHJlc3NlZCIiIgpAQCAtNTgs
NyArNTksNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICBjb21tYW5kcy5ydW5fYnpyLCBb
J2xvZycsIHUnLS1vcHRpb25ceGI1J10pCiAKIAotY2xhc3MgVGVzdEdldEFsaWFzKFRlc3RDYXNl
KToKK2NsYXNzIFRlc3RHZXRBbGlhcyh0ZXN0cy5UZXN0Q2FzZSk6CiAKICAgICBkZWYgX2dldF9j
b25maWcoc2VsZiwgY29uZmlnX3RleHQpOgogICAgICAgICBteV9jb25maWcgPSBjb25maWcuR2xv
YmFsQ29uZmlnKCkKQEAgLTkzLDMgKzk0LDQzIEBACiAgICAgICAgICAgICB1ImlhbT13aG9hbWkg
J0VyaWsgQlx1MDBlNWdmb3JzIDxlcmlrQGJhZ2ZvcnMubnU+J1xuIikKICAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbChbdSd3aG9hbWknLCB1J0VyaWsgQlx1MDBlNWdmb3JzIDxlcmlrQGJhZ2ZvcnMu
bnU+J10sCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1hbmRzLmdldF9hbGlhcygiaWFt
IiwgY29uZmlnPW15X2NvbmZpZykpCisKKworY2xhc3MgVGVzdFNlZUFsc28odGVzdHMuVGVzdENh
c2UpOgorICAgICIiIlRlc3RzIGZvciB0aGUgc2VlIGFsc28gZnVuY3Rpb25hbCBvZiBDb21tYW5k
LiIiIgorCisgICAgZGVmIHRlc3RfZGVmYXVsdF9zdWJjbGFzc19ub19zZWVfYWxzbyhzZWxmKToK
KyAgICAgICAgY2xhc3MgQUNvbW1hbmQoY29tbWFuZHMuQ29tbWFuZCk6CisgICAgICAgICAgICAi
IiJBIHNhbXBsZSBjb21tYW5kLiIiIgorICAgICAgICBjb21tYW5kID0gQUNvbW1hbmQoKQorICAg
ICAgICBzZWxmLmFzc2VydEVxdWFsKFtdLCBjb21tYW5kLmdldF9zZWVfYWxzbygpKQorCisgICAg
ZGVmIHRlc3RfX3NlZV9hbHNvKHNlbGYpOgorICAgICAgICAiIiJXaGVuIF9zZWVfYWxzbyBpcyBk
ZWZpbmVkLCBpdCBzZXRzIHRoZSByZXN1bHQgb2YgZ2V0X3NlZV9hbHNvKCkuIiIiCisgICAgICAg
IGNsYXNzIEFDb21tYW5kKGNvbW1hbmRzLkNvbW1hbmQpOgorICAgICAgICAgICAgX3NlZV9hbHNv
ID0gWydiYXInLCAnZm9vJ10KKyAgICAgICAgY29tbWFuZCA9IEFDb21tYW5kKCkKKyAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbChbJ2JhcicsICdmb28nXSwgY29tbWFuZC5nZXRfc2VlX2Fsc28oKSkK
KworICAgIGRlZiB0ZXN0X2RlZHVwbGljYXRpb24oc2VsZik6CisgICAgICAgICIiIkR1cGxpY2F0
ZXMgaW4gX3NlZV9hbHNvIGFyZSBzdHJpcHBlZCBvdXQuIiIiCisgICAgICAgIGNsYXNzIEFDb21t
YW5kKGNvbW1hbmRzLkNvbW1hbmQpOgorICAgICAgICAgICAgX3NlZV9hbHNvID0gWydmb28nLCAn
Zm9vJ10KKyAgICAgICAgY29tbWFuZCA9IEFDb21tYW5kKCkKKyAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbChbJ2ZvbyddLCBjb21tYW5kLmdldF9zZWVfYWxzbygpKQorCisgICAgZGVmIHRlc3Rfc29y
dGVkKHNlbGYpOgorICAgICAgICAiIiJfc2VlX2Fsc28gaXMgc29ydGVkIGJ5IGdldF9zZWVfYWxz
by4iIiIKKyAgICAgICAgY2xhc3MgQUNvbW1hbmQoY29tbWFuZHMuQ29tbWFuZCk6CisgICAgICAg
ICAgICBfc2VlX2Fsc28gPSBbJ2ZvbycsICdiYXInXQorICAgICAgICBjb21tYW5kID0gQUNvbW1h
bmQoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFsnYmFyJywgJ2ZvbyddLCBjb21tYW5kLmdl
dF9zZWVfYWxzbygpKQorCisgICAgZGVmIHRlc3RfYWRkaXRpb25hbF90ZXJtcyhzZWxmKToKKyAg
ICAgICAgIiIiQWRkaXRpb25hbCB0ZXJtcyBjYW4gYmUgc3VwcGxpZWQgYW5kIGFyZSBkZWR1cGVk
IGFuZCBzb3J0ZWQuIiIiCisgICAgICAgIGNsYXNzIEFDb21tYW5kKGNvbW1hbmRzLkNvbW1hbmQp
OgorICAgICAgICAgICAgX3NlZV9hbHNvID0gWydmb28nLCAnYmFyJ10KKyAgICAgICAgY29tbWFu
ZCA9IEFDb21tYW5kKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChbJ2JhcicsICdmb28nLCAn
Z2FtJ10sCisgICAgICAgICAgICBjb21tYW5kLmdldF9zZWVfYWxzbyhbJ2dhbScsICdiYXInLCAn
Z2FtJ10pKQorCgo=

=== modified file bzrlib/tests/test_diff.py // last-changed:john@arbash-meinel.
... com-20070411220516-bz4941rayeilvjac // encoding:base64
LS0tIGJ6cmxpYi90ZXN0cy90ZXN0X2RpZmYucHkKKysrIGJ6cmxpYi90ZXN0cy90ZXN0X2RpZmYu
cHkKQEAgLTIxNCw3ICsyMTQsMjIgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvdXQuc3Bs
aXRsaW5lcyhUcnVlKSArIFsnXG4nXSwgbGluZXMpCiAKIAotY2xhc3MgVGVzdERpZmZEYXRlcyhU
ZXN0Q2FzZVdpdGhUcmFuc3BvcnQpOgorY2xhc3MgVGVzdFNob3dEaWZmVHJlZXNIZWxwZXIoVGVz
dENhc2VXaXRoVHJhbnNwb3J0KToKKyAgICAiIiJIYXMgYSBoZWxwZXIgZm9yIHJ1bm5pbmcgc2hv
d19kaWZmX3RyZWVzIiIiCisKKyAgICBkZWYgZ2V0X2RpZmYoc2VsZiwgdHJlZTEsIHRyZWUyLCBz
cGVjaWZpY19maWxlcz1Ob25lLCB3b3JraW5nX3RyZWU9Tm9uZSk6CisgICAgICAgIG91dHB1dCA9
IFN0cmluZ0lPKCkKKyAgICAgICAgaWYgd29ya2luZ190cmVlIGlzIG5vdCBOb25lOgorICAgICAg
ICAgICAgZXh0cmFfdHJlZXMgPSAod29ya2luZ190cmVlLCkKKyAgICAgICAgZWxzZToKKyAgICAg
ICAgICAgIGV4dHJhX3RyZWVzID0gKCkKKyAgICAgICAgc2hvd19kaWZmX3RyZWVzKHRyZWUxLCB0
cmVlMiwgb3V0cHV0LCBzcGVjaWZpY19maWxlcz1zcGVjaWZpY19maWxlcywKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGV4dHJhX3RyZWVzPWV4dHJhX3RyZWVzLCBvbGRfbGFiZWw9J29sZC8nLAor
ICAgICAgICAgICAgICAgICAgICAgICAgbmV3X2xhYmVsPSduZXcvJykKKyAgICAgICAgcmV0dXJu
IG91dHB1dC5nZXR2YWx1ZSgpCisKKworY2xhc3MgVGVzdERpZmZEYXRlcyhUZXN0U2hvd0RpZmZU
cmVlc0hlbHBlcik6CiAKICAgICBkZWYgc2V0VXAoc2VsZik6CiAgICAgICAgIHN1cGVyKFRlc3RE
aWZmRGF0ZXMsIHNlbGYpLnNldFVwKCkKQEAgLTI1NCwxNyArMjY5LDYgQEAKICAgICAgICAgIyBz
ZXQgdGhlIGRhdGUgc3RhbXBzIGZvciBmaWxlcyBpbiB0aGUgd29ya2luZyB0cmVlIHRvIGtub3du
IHZhbHVlcwogICAgICAgICBvcy51dGltZSgnZmlsZTEnLCAoMTE0NDE5NTIwMCwgMTE0NDE5NTIw
MCkpICMgMjAwNi0wNC0wNSAwMDowMDowMCBVVEMKIAotICAgIGRlZiBnZXRfZGlmZihzZWxmLCB0
cmVlMSwgdHJlZTIsIHNwZWNpZmljX2ZpbGVzPU5vbmUsIHdvcmtpbmdfdHJlZT1Ob25lKToKLSAg
ICAgICAgb3V0cHV0ID0gU3RyaW5nSU8oKQotICAgICAgICBpZiB3b3JraW5nX3RyZWUgaXMgbm90
IE5vbmU6Ci0gICAgICAgICAgICBleHRyYV90cmVlcyA9ICh3b3JraW5nX3RyZWUsKQotICAgICAg
ICBlbHNlOgotICAgICAgICAgICAgZXh0cmFfdHJlZXMgPSAoKQotICAgICAgICBzaG93X2RpZmZf
dHJlZXModHJlZTEsIHRyZWUyLCBvdXRwdXQsIHNwZWNpZmljX2ZpbGVzPXNwZWNpZmljX2ZpbGVz
LAotICAgICAgICAgICAgICAgICAgICAgICAgZXh0cmFfdHJlZXM9ZXh0cmFfdHJlZXMsIG9sZF9s
YWJlbD0nb2xkLycsIAotICAgICAgICAgICAgICAgICAgICAgICAgbmV3X2xhYmVsPSduZXcvJykK
LSAgICAgICAgcmV0dXJuIG91dHB1dC5nZXR2YWx1ZSgpCi0KICAgICBkZWYgdGVzdF9kaWZmX3Jl
dl90cmVlX3dvcmtpbmdfdHJlZShzZWxmKToKICAgICAgICAgb3V0cHV0ID0gc2VsZi5nZXRfZGlm
ZihzZWxmLnd0LmJhc2lzX3RyZWUoKSwgc2VsZi53dCkKICAgICAgICAgIyBub3RlIHRoYXQgdGhl
IGRhdGUgZm9yIG9sZC9maWxlMSBpcyBmcm9tIHJldiAyIHJhdGhlciB0aGFuIGZyb20KQEAgLTM1
NCw2ICszNTgsOTAgQEAKICAgICAgICAgc2VsZi5hc3NlcnROb3RDb250YWluc1JlKG91dCwgJ2Zp
bGUxXHQnKQogCiAKKworY2xhc3MgVGVzdFNob3dEaWZmVHJlZXMoVGVzdFNob3dEaWZmVHJlZXNI
ZWxwZXIpOgorICAgICIiIkRpcmVjdCB0ZXN0cyBmb3Igc2hvd19kaWZmX3RyZWVzIiIiCisKKyAg
ICBkZWYgdGVzdF9tb2RpZmllZF9maWxlKHNlbGYpOgorICAgICAgICAiIiJUZXN0IHdoZW4gYSBm
aWxlIGlzIG1vZGlmaWVkLiIiIgorICAgICAgICB0cmVlID0gc2VsZi5tYWtlX2JyYW5jaF9hbmRf
dHJlZSgndHJlZScpCisgICAgICAgIHNlbGYuYnVpbGRfdHJlZV9jb250ZW50cyhbKCd0cmVlL2Zp
bGUnLCAnY29udGVudHNcbicpXSkKKyAgICAgICAgdHJlZS5hZGQoWydmaWxlJ10sIFsnZmlsZS1p
ZCddKQorICAgICAgICB0cmVlLmNvbW1pdCgnb25lJywgcmV2X2lkPSdyZXYtMScpCisKKyAgICAg
ICAgc2VsZi5idWlsZF90cmVlX2NvbnRlbnRzKFsoJ3RyZWUvZmlsZScsICduZXcgY29udGVudHNc
bicpXSkKKyAgICAgICAgZGlmZiA9IHNlbGYuZ2V0X2RpZmYodHJlZS5iYXNpc190cmVlKCksIHRy
ZWUpCisgICAgICAgIHNlbGYuYXNzZXJ0Q29udGFpbnNSZShkaWZmLCAiPT09IG1vZGlmaWVkIGZp
bGUgJ2ZpbGUnXG4iKQorICAgICAgICBzZWxmLmFzc2VydENvbnRhaW5zUmUoZGlmZiwgJy0tLSBv
bGQvZmlsZVx0JykKKyAgICAgICAgc2VsZi5hc3NlcnRDb250YWluc1JlKGRpZmYsICdcXCtcXCtc
XCsgbmV3L2ZpbGVcdCcpCisgICAgICAgIHNlbGYuYXNzZXJ0Q29udGFpbnNSZShkaWZmLCAnLWNv
bnRlbnRzXG4nCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnXFwrbmV3IGNv
bnRlbnRzXG4nKQorCisgICAgZGVmIHRlc3RfbW9kaWZpZWRfZmlsZV9pbl9yZW5hbWVkX2Rpcihz
ZWxmKToKKyAgICAgICAgIiIiVGVzdCB3aGVuIGEgZmlsZSBpcyBtb2RpZmllZCBpbiBhIHJlbmFt
ZWQgZGlyZWN0b3J5LiIiIgorICAgICAgICB0cmVlID0gc2VsZi5tYWtlX2JyYW5jaF9hbmRfdHJl
ZSgndHJlZScpCisgICAgICAgIHNlbGYuYnVpbGRfdHJlZShbJ3RyZWUvZGlyLyddKQorICAgICAg
ICBzZWxmLmJ1aWxkX3RyZWVfY29udGVudHMoWygndHJlZS9kaXIvZmlsZScsICdjb250ZW50c1xu
JyldKQorICAgICAgICB0cmVlLmFkZChbJ2RpcicsICdkaXIvZmlsZSddLCBbJ2Rpci1pZCcsICdm
aWxlLWlkJ10pCisgICAgICAgIHRyZWUuY29tbWl0KCdvbmUnLCByZXZfaWQ9J3Jldi0xJykKKwor
ICAgICAgICB0cmVlLnJlbmFtZV9vbmUoJ2RpcicsICdvdGhlcicpCisgICAgICAgIHNlbGYuYnVp
bGRfdHJlZV9jb250ZW50cyhbKCd0cmVlL290aGVyL2ZpbGUnLCAnbmV3IGNvbnRlbnRzXG4nKV0p
CisgICAgICAgIGRpZmYgPSBzZWxmLmdldF9kaWZmKHRyZWUuYmFzaXNfdHJlZSgpLCB0cmVlKQor
ICAgICAgICBzZWxmLmFzc2VydENvbnRhaW5zUmUoZGlmZiwgIj09PSByZW5hbWVkIGRpcmVjdG9y
eSAnZGlyJyA9PiAnb3RoZXInXG4iKQorICAgICAgICBzZWxmLmFzc2VydENvbnRhaW5zUmUoZGlm
ZiwgIj09PSBtb2RpZmllZCBmaWxlICdvdGhlci9maWxlJ1xuIikKKyAgICAgICAgIyBYWFg6IFRo
aXMgaXMgdGVjaG5pY2FsbHkgaW5jb3JyZWN0LCBiZWNhdXNlIGl0IHVzZWQgdG8gYmUgYXQgYW5v
dGhlcgorICAgICAgICAjIGxvY2F0aW9uLiBXaGF0IHRvIGRvPworICAgICAgICBzZWxmLmFzc2Vy
dENvbnRhaW5zUmUoZGlmZiwgJy0tLSBvbGQvZGlyL2ZpbGVcdCcpCisgICAgICAgIHNlbGYuYXNz
ZXJ0Q29udGFpbnNSZShkaWZmLCAnXFwrXFwrXFwrIG5ldy9vdGhlci9maWxlXHQnKQorICAgICAg
ICBzZWxmLmFzc2VydENvbnRhaW5zUmUoZGlmZiwgJy1jb250ZW50c1xuJworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgJ1xcK25ldyBjb250ZW50c1xuJykKKworICAgIGRlZiB0
ZXN0X3JlbmFtZWRfZGlyZWN0b3J5KHNlbGYpOgorICAgICAgICAiIiJUZXN0IHdoZW4gb25seSBh
IGRpcmVjdG9yeSBpcyBvbmx5IHJlbmFtZWQuIiIiCisgICAgICAgIHRyZWUgPSBzZWxmLm1ha2Vf
YnJhbmNoX2FuZF90cmVlKCd0cmVlJykKKyAgICAgICAgc2VsZi5idWlsZF90cmVlKFsndHJlZS9k
aXIvJ10pCisgICAgICAgIHNlbGYuYnVpbGRfdHJlZV9jb250ZW50cyhbKCd0cmVlL2Rpci9maWxl
JywgJ2NvbnRlbnRzXG4nKV0pCisgICAgICAgIHRyZWUuYWRkKFsnZGlyJywgJ2Rpci9maWxlJ10s
IFsnZGlyLWlkJywgJ2ZpbGUtaWQnXSkKKyAgICAgICAgdHJlZS5jb21taXQoJ29uZScsIHJldl9p
ZD0ncmV2LTEnKQorCisgICAgICAgIHRyZWUucmVuYW1lX29uZSgnZGlyJywgJ25ld2RpcicpCisg
ICAgICAgIGRpZmYgPSBzZWxmLmdldF9kaWZmKHRyZWUuYmFzaXNfdHJlZSgpLCB0cmVlKQorICAg
ICAgICAjIFJlbmFtaW5nIGEgZGlyZWN0b3J5IHNob3VsZCBiZSBhIHNpbmdsZSAieW91IHJlbmFt
ZWQgdGhpcyBkaXIiIGV2ZW4KKyAgICAgICAgIyB3aGVuIHRoZXJlIGFyZSBmaWxlcyBpbnNpZGUu
CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoIj09PSByZW5hbWVkIGRpcmVjdG9yeSAnZGlyJyA9
PiAnbmV3ZGlyJ1xuIiwgZGlmZikKKworICAgIGRlZiB0ZXN0X3JlbmFtZWRfZmlsZShzZWxmKToK
KyAgICAgICAgIiIiVGVzdCB3aGVuIGEgZmlsZSBpcyBvbmx5IHJlbmFtZWQuIiIiCisgICAgICAg
IHRyZWUgPSBzZWxmLm1ha2VfYnJhbmNoX2FuZF90cmVlKCd0cmVlJykKKyAgICAgICAgc2VsZi5i
dWlsZF90cmVlX2NvbnRlbnRzKFsoJ3RyZWUvZmlsZScsICdjb250ZW50c1xuJyldKQorICAgICAg
ICB0cmVlLmFkZChbJ2ZpbGUnXSwgWydmaWxlLWlkJ10pCisgICAgICAgIHRyZWUuY29tbWl0KCdv
bmUnLCByZXZfaWQ9J3Jldi0xJykKKworICAgICAgICB0cmVlLnJlbmFtZV9vbmUoJ2ZpbGUnLCAn
bmV3bmFtZScpCisgICAgICAgIGRpZmYgPSBzZWxmLmdldF9kaWZmKHRyZWUuYmFzaXNfdHJlZSgp
LCB0cmVlKQorICAgICAgICBzZWxmLmFzc2VydENvbnRhaW5zUmUoZGlmZiwgIj09PSByZW5hbWVk
IGZpbGUgJ2ZpbGUnID0+ICduZXduYW1lJ1xuIikKKyAgICAgICAgIyBXZSBzaG91bGRuJ3QgaGF2
ZSBhIC0tLSBvciArKysgbGluZSwgYmVjYXVzZSB0aGVyZSBpcyBubyBjb250ZW50CisgICAgICAg
ICMgY2hhbmdlCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90Q29udGFpbnNSZShkaWZmLCAnLS0tJykK
KworICAgIGRlZiB0ZXN0X3JlbmFtZWRfYW5kX21vZGlmaWVkX2ZpbGUoc2VsZik6CisgICAgICAg
ICIiIlRlc3Qgd2hlbiBhIGZpbGUgaXMgb25seSByZW5hbWVkLiIiIgorICAgICAgICB0cmVlID0g
c2VsZi5tYWtlX2JyYW5jaF9hbmRfdHJlZSgndHJlZScpCisgICAgICAgIHNlbGYuYnVpbGRfdHJl
ZV9jb250ZW50cyhbKCd0cmVlL2ZpbGUnLCAnY29udGVudHNcbicpXSkKKyAgICAgICAgdHJlZS5h
ZGQoWydmaWxlJ10sIFsnZmlsZS1pZCddKQorICAgICAgICB0cmVlLmNvbW1pdCgnb25lJywgcmV2
X2lkPSdyZXYtMScpCisKKyAgICAgICAgdHJlZS5yZW5hbWVfb25lKCdmaWxlJywgJ25ld25hbWUn
KQorICAgICAgICBzZWxmLmJ1aWxkX3RyZWVfY29udGVudHMoWygndHJlZS9uZXduYW1lJywgJ25l
dyBjb250ZW50c1xuJyldKQorICAgICAgICBkaWZmID0gc2VsZi5nZXRfZGlmZih0cmVlLmJhc2lz
X3RyZWUoKSwgdHJlZSkKKyAgICAgICAgc2VsZi5hc3NlcnRDb250YWluc1JlKGRpZmYsICI9PT0g
cmVuYW1lZCBmaWxlICdmaWxlJyA9PiAnbmV3bmFtZSdcbiIpCisgICAgICAgIHNlbGYuYXNzZXJ0
Q29udGFpbnNSZShkaWZmLCAnLS0tIG9sZC9maWxlXHQnKQorICAgICAgICBzZWxmLmFzc2VydENv
bnRhaW5zUmUoZGlmZiwgJ1xcK1xcK1xcKyBuZXcvbmV3bmFtZVx0JykKKyAgICAgICAgc2VsZi5h
c3NlcnRDb250YWluc1JlKGRpZmYsICctY29udGVudHNcbicKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICdcXCtuZXcgY29udGVudHNcbicpCisKKwogY2xhc3MgVGVzdFBhdGll
bmNlRGlmZkxpYihUZXN0Q2FzZSk6CiAKICAgICBkZWYgdGVzdF91bmlxdWVfbGNzKHNlbGYpOgoK

=== modified file bzrlib/tests/test_dirstate.py // last-changed:john@arbash-mei
... nel.com-20070419182756-rdg6e8zoaxy9mg9q // encoding:base64
LS0tIGJ6cmxpYi90ZXN0cy90ZXN0X2RpcnN0YXRlLnB5CisrKyBienJsaWIvdGVzdHMvdGVzdF9k
aXJzdGF0ZS5weQpAQCAtMTczLDcgKzE3Myw3IEBACiAgICAgICAgICAgICBzdGF0ZS5zYXZlKCkK
ICAgICAgICAgZmluYWxseToKICAgICAgICAgICAgIHN0YXRlLnVubG9jaygpCi0gICAgICAgIGRl
bCBzdGF0ZSAjIENhbGxlcnMgc2hvdWxkIHVubG9jaworICAgICAgICBkZWwgc3RhdGUKICAgICAg
ICAgc3RhdGUgPSBkaXJzdGF0ZS5EaXJTdGF0ZS5vbl9maWxlKCdkaXJzdGF0ZScpCiAgICAgICAg
IHN0YXRlLmxvY2tfcmVhZCgpCiAgICAgICAgIHRyeToKQEAgLTY0OCwxMiArNjQ4LDE0IEBACiAg
ICAgICAgIHRyeToKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShzdGF0ZSwgZGly
c3RhdGUuRGlyU3RhdGUpCiAgICAgICAgICAgICBsaW5lcyA9IHN0YXRlLmdldF9saW5lcygpCi0g
ICAgICAgICAgICBzZWxmLmFzc2VydEZpbGVFcXVhbCgnJy5qb2luKHN0YXRlLmdldF9saW5lcygp
KSwKLSAgICAgICAgICAgICAgICAnZGlyc3RhdGUnKQotICAgICAgICAgICAgc2VsZi5jaGVja19z
dGF0ZV93aXRoX3Jlb3BlbihleHBlY3RlZF9yZXN1bHQsIHN0YXRlKQotICAgICAgICBleGNlcHQ6
CisgICAgICAgIGZpbmFsbHk6CiAgICAgICAgICAgICBzdGF0ZS51bmxvY2soKQotICAgICAgICAg
ICAgcmFpc2UKKyAgICAgICAgIyBPbiB3aW4zMiB5b3UgY2FuJ3QgcmVhZCBmcm9tIGEgbG9ja2Vk
IGZpbGUsIGV2ZW4gd2l0aGluIHRoZSBzYW1lCisgICAgICAgICMgcHJvY2Vzcy4gU28gd2UgaGF2
ZSB0byB1bmxvY2sgYW5kIHJlbGVhc2UgYmVmb3JlIHdlIGNoZWNrIHRoZSBmaWxlCisgICAgICAg
ICMgY29udGVudHMuCisgICAgICAgIHNlbGYuYXNzZXJ0RmlsZUVxdWFsKCcnLmpvaW4obGluZXMp
LCAnZGlyc3RhdGUnKQorICAgICAgICBzdGF0ZS5sb2NrX3JlYWQoKSAjIGNoZWNrX3N0YXRlX3dp
dGhfcmVvcGVuIHdpbGwgdW5sb2NrCisgICAgICAgIHNlbGYuY2hlY2tfc3RhdGVfd2l0aF9yZW9w
ZW4oZXhwZWN0ZWRfcmVzdWx0LCBzdGF0ZSkKIAogCiBjbGFzcyBUZXN0RGlyU3RhdGVNYW5pcHVs
YXRpb25zKFRlc3RDYXNlV2l0aERpclN0YXRlKToKCg==

=== modified file bzrlib/tests/test_errors.py // last-changed:v.ladeuil+lp@free
... .fr-20070426090738-3n4pmuhuwqxr05fj // encoding:base64
LS0tIGJ6cmxpYi90ZXN0cy90ZXN0X2Vycm9ycy5weQorKysgYnpybGliL3Rlc3RzL3Rlc3RfZXJy
b3JzLnB5CkBAIC0xLDUgKzEsNiBAQAotIyBDb3B5cmlnaHQgKEMpIDIwMDYgQ2Fub25pY2FsIEx0
ZAorIyBDb3B5cmlnaHQgKEMpIDIwMDYsIDIwMDcgQ2Fub25pY2FsIEx0ZAogIyAgIEF1dGhvcnM6
IFJvYmVydCBDb2xsaW5zIDxyb2JlcnQuY29sbGluc0BjYW5vbmljYWwuY29tPgorIyAgICAgICAg
ICAgIGFuZCBvdGhlcnMKICMKICMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBj
YW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKICMgaXQgdW5kZXIgdGhlIHRlcm1zIG9m
IHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKQEAgLTMwLDEx
ICszMSwyMSBAQAogCiBjbGFzcyBUZXN0RXJyb3JzKFRlc3RDYXNlV2l0aFRyYW5zcG9ydCk6CiAK
KyAgICBkZWYgdGVzdF9kaXNhYmxlZF9tZXRob2Qoc2VsZik6CisgICAgICAgIGVycm9yID0gZXJy
b3JzLkRpc2FibGVkTWV0aG9kKCJjbGFzcyBuYW1lIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bERpZmYoCisgICAgICAgICAgICAiVGhlIHNtYXJ0IHNlcnZlciBtZXRob2QgJ2NsYXNzIG5hbWUn
IGlzIGRpc2FibGVkLiIsIHN0cihlcnJvcikpCisKICAgICBkZWYgdGVzdF9kdXBsaWNhdGVfZmls
ZV9pZChzZWxmKToKICAgICAgICAgZXJyb3IgPSBlcnJvcnMuRHVwbGljYXRlRmlsZUlkKCdhX2Zp
bGVfaWQnLCAnZm9vJykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbERpZmYoJ0ZpbGUgaWQge2Ff
ZmlsZV9pZH0gYWxyZWFkeSBleGlzdHMgaW4gaW52ZW50b3J5JwogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAnIGFzIGZvbycsIHN0cihlcnJvcikpCiAKKyAgICBkZWYgdGVzdF9kdXBsaWNh
dGVfaGVscF9wcmVmaXgoc2VsZik6CisgICAgICAgIGVycm9yID0gZXJyb3JzLkR1cGxpY2F0ZUhl
bHBQcmVmaXgoJ2ZvbycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxEaWZmKCdUaGUgcHJlZml4
IGZvbyBpcyBpbiB0aGUgaGVscCBzZWFyY2ggcGF0aCB0d2ljZS4nLAorICAgICAgICAgICAgc3Ry
KGVycm9yKSkKKwogICAgIGRlZiB0ZXN0X2ludmVudG9yeV9tb2RpZmllZChzZWxmKToKICAgICAg
ICAgZXJyb3IgPSBlcnJvcnMuSW52ZW50b3J5TW9kaWZpZWQoImEgdHJlZSB0byBiZSByZXByZWQi
KQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsRGlmZigiVGhlIGN1cnJlbnQgaW52ZW50b3J5IGZv
ciB0aGUgdHJlZSAnYSB0cmVlIHRvICIKQEAgLTg2LDYgKzk3LDEyIEBACiAgICAgICAgICAgICAi
c21hcnQgcHJvdG9jb2wuIiwKICAgICAgICAgICAgIHN0cihlcnJvcikpCiAKKyAgICBkZWYgdGVz
dF9ub19oZWxwX3RvcGljKHNlbGYpOgorICAgICAgICBlcnJvciA9IGVycm9ycy5Ob0hlbHBUb3Bp
YygidG9waWMiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsRGlmZigiTm8gaGVscCBjb3VsZCBi
ZSBmb3VuZCBmb3IgJ3RvcGljJy4gIgorICAgICAgICAgICAgIlBsZWFzZSB1c2UgJ2J6ciBoZWxw
IHRvcGljcycgdG8gb2J0YWluIGEgbGlzdCBvZiB0b3BpY3MuIiwKKyAgICAgICAgICAgIHN0cihl
cnJvcikpCisKICAgICBkZWYgdGVzdF9ub19zdWNoX2lkKHNlbGYpOgogICAgICAgICBlcnJvciA9
IGVycm9ycy5Ob1N1Y2hJZCgiYXRyZWUiLCAiYW5pZCIpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWxEaWZmKCJUaGUgZmlsZSBpZCBhbmlkIGlzIG5vdCBwcmVzZW50IGluIHRoZSB0cmVlICIKQEAg
LTExNCw3ICsxMzEsNyBAQAogICAgICAgICBlcnJvciA9IGVycm9ycy5Ub29NYW55Q29uY3VycmVu
dFJlcXVlc3RzKCJhIG1lZGl1bSIpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxEaWZmKCJUaGUg
bWVkaXVtICdhIG1lZGl1bScgaGFzIHJlYWNoZWQgaXRzIGNvbmN1cnJlbnQgIgogICAgICAgICAg
ICAgInJlcXVlc3QgbGltaXQuIEJlIHN1cmUgdG8gZmluaXNoX3dyaXRpbmcgYW5kIGZpbmlzaF9y
ZWFkaW5nIG9uICIKLSAgICAgICAgICAgICJ0aGUgY3VycmVudCByZXF1ZXN0IHRoYXQgaXMgb3Bl
bi4iLAorICAgICAgICAgICAgInRoZSBjdXJyZW50bHkgb3BlbiByZXF1ZXN0LiIsCiAgICAgICAg
ICAgICBzdHIoZXJyb3IpKQogCiAgICAgZGVmIHRlc3RfdW5rbm93bl9ob29rKHNlbGYpOgpAQCAt
MjI4LDYgKzI0NSwyNiBAQAogICAgICAgICAgICAgaG9zdD0nYWhvc3QnLCBwb3J0PTQ0NCwgbXNn
PSdVbmFibGUgdG8gY29ubmVjdCB0byBzc2ggaG9zdCcsCiAgICAgICAgICAgICBvcmlnX2Vycm9y
PSdteV9lcnJvcicpCiAKKyAgICBkZWYgdGVzdF9tYWxmb3JtZWRfYnVnX2lkZW50aWZpZXIoc2Vs
Zik6CisgICAgICAgICIiIlRlc3QgdGhlIGZvcm1hdHRpbmcgb2YgTWFsZm9ybWVkQnVnSWRlbnRp
Zmllci4iIiIKKyAgICAgICAgZXJyb3IgPSBlcnJvcnMuTWFsZm9ybWVkQnVnSWRlbnRpZmllcign
Ym9ndXMnLCAncmVhc29uIGZvciBib2dvc2l0eScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
CisgICAgICAgICAgICAiRGlkIG5vdCB1bmRlcnN0YW5kIGJ1ZyBpZGVudGlmaWVyIGJvZ3VzOiBy
ZWFzb24gZm9yIGJvZ29zaXR5IiwKKyAgICAgICAgICAgIHN0cihlcnJvcikpCisKKyAgICBkZWYg
dGVzdF91bmtub3duX2J1Z190cmFja2VyX2FiYnJldmlhdGlvbihzZWxmKToKKyAgICAgICAgIiIi
VGVzdCB0aGUgZm9ybWF0dGluZyBvZiBVbmtub3duQnVnVHJhY2tlckFiYnJldmlhdGlvbi4iIiIK
KyAgICAgICAgYnJhbmNoID0gc2VsZi5tYWtlX2JyYW5jaCgnc29tZV9icmFuY2gnKQorICAgICAg
ICBlcnJvciA9IGVycm9ycy5Vbmtub3duQnVnVHJhY2tlckFiYnJldmlhdGlvbigneHh4JywgYnJh
bmNoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgIkNhbm5vdCBmaW5k
IHJlZ2lzdGVyZWQgYnVnIHRyYWNrZXIgY2FsbGVkIHh4eCBvbiAlcyIgJSBicmFuY2gsCisgICAg
ICAgICAgICBzdHIoZXJyb3IpKQorCisgICAgZGVmIHRlc3RfdW5leHBlY3RlZF9zbWFydF9zZXJ2
ZXJfcmVzcG9uc2Uoc2VsZik6CisgICAgICAgIGUgPSBlcnJvcnMuVW5leHBlY3RlZFNtYXJ0U2Vy
dmVyUmVzcG9uc2UoKCdub3QgeWVzJywpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAg
ICAgICAgICAgIkNvdWxkIG5vdCB1bmRlcnN0YW5kIHJlc3BvbnNlIGZyb20gc21hcnQgc2VydmVy
OiAoJ25vdCB5ZXMnLCkiLAorICAgICAgICAgICAgc3RyKGUpKQogCiAKIGNsYXNzIFBhc3NUaHJv
dWdoRXJyb3IoZXJyb3JzLkJ6ckVycm9yKToKCg==

=== modified file bzrlib/tests/test_ftp_transport.py // last-changed:john@arbas
... h-meinel.com-20070412211829-dduwktk8in0e6zpl // encoding:base64
LS0tIGJ6cmxpYi90ZXN0cy90ZXN0X2Z0cF90cmFuc3BvcnQucHkKKysrIGJ6cmxpYi90ZXN0cy90
ZXN0X2Z0cF90cmFuc3BvcnQucHkKQEAgLTE0LDExICsxNCw0MyBAQAogIyBhbG9uZyB3aXRoIHRo
aXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQogIyBGb3VuZGF0
aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAgMDIxMTEt
MTMwNyAgVVNBCiAKLWZyb20gYnpybGliLnRlc3RzIGltcG9ydCBUZXN0Q2FzZVdpdGhUcmFuc3Bv
cnQKK2Zyb20gYnpybGliIGltcG9ydCB0ZXN0cwogaW1wb3J0IGJ6cmxpYi50cmFuc3BvcnQKIAog
Ci1jbGFzcyBUZXN0Q2FzZUFGVFAoVGVzdENhc2VXaXRoVHJhbnNwb3J0KToKK2NsYXNzIF9NZWR1
c2FGZWF0dXJlKHRlc3RzLkZlYXR1cmUpOgorICAgICIiIlNvbWUgdGVzdHMgd2FudCBhbiBGVFAg
U2VydmVyLCBjaGVjayBpZiBvbmUgaXMgYXZhaWxhYmxlLgorCisgICAgUmlnaHQgbm93LCB0aGUg
b25seSB3YXkgdGhpcyBpcyBhdmFpbGFibGUgaXMgaWYgJ21lZHVzYScgaXMgaW5zdGFsbGVkLgor
ICAgICIiIgorCisgICAgZGVmIF9wcm9iZShzZWxmKToKKyAgICAgICAgdHJ5OgorICAgICAgICAg
ICAgaW1wb3J0IG1lZHVzYQorICAgICAgICAgICAgaW1wb3J0IG1lZHVzYS5maWxlc3lzCisgICAg
ICAgICAgICBpbXBvcnQgbWVkdXNhLmZ0cF9zZXJ2ZXIKKyAgICAgICAgICAgIHJldHVybiBUcnVl
CisgICAgICAgIGV4Y2VwdCBJbXBvcnRFcnJvcjoKKyAgICAgICAgICAgIHJldHVybiBGYWxzZQor
CisgICAgZGVmIGZlYXR1cmVfbmFtZShzZWxmKToKKyAgICAgICAgcmV0dXJuICdtZWR1c2EnCisK
K01lZHVzYUZlYXR1cmUgPSBfTWVkdXNhRmVhdHVyZSgpCisKKworY2xhc3MgVGVzdENhc2VXaXRo
RlRQU2VydmVyKHRlc3RzLlRlc3RDYXNlV2l0aFRyYW5zcG9ydCk6CisKKyAgICBfdGVzdF9uZWVk
c19mZWF0dXJlcyA9IFtNZWR1c2FGZWF0dXJlXQorCisgICAgZGVmIHNldFVwKHNlbGYpOgorICAg
ICAgICBmcm9tIGJ6cmxpYi50cmFuc3BvcnQuZnRwIGltcG9ydCBGdHBTZXJ2ZXIKKyAgICAgICAg
c2VsZi50cmFuc3BvcnRfc2VydmVyID0gRnRwU2VydmVyCisgICAgICAgIHN1cGVyKFRlc3RDYXNl
V2l0aEZUUFNlcnZlciwgc2VsZikuc2V0VXAoKQorCisKKworY2xhc3MgVGVzdENhc2VBRlRQKHRl
c3RzLlRlc3RDYXNlV2l0aFRyYW5zcG9ydCk6CiAgICAgIiIiVGVzdCBhZnRwIHRyYW5zcG9ydC4i
IiIKIAogICAgIGRlZiB0ZXN0X2FmdHBfZGVncmFkZShzZWxmKToKQEAgLTI4LDMgKzYwLDE0IEBA
CiAgICAgICAgIHNlbGYuZmFpbFVubGVzcyhwYXJlbnQuaXNfYWN0aXZlKQogCiAgICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwoJ2FmdHA6Ly9ob3N0L3BhdGgnLCB0LmFic3BhdGgoJycpKQorCisKK2Ns
YXNzIFRlc3RGVFBTZXJ2ZXIoVGVzdENhc2VXaXRoRlRQU2VydmVyKToKKworICAgIGRlZiB0ZXN0
X2Jhc2ljX2V4aXN0cyhzZWxmKToKKyAgICAgICAgdXJsID0gc2VsZi5nZXRfdXJsKCkKKyAgICAg
ICAgc2VsZi5hc3NlcnRTdGFydHNXaXRoKHVybCwgJ2Z0cDovLycpCisKKyAgICAgICAgdCA9IHNl
bGYuZ2V0X3RyYW5zcG9ydCgpCisgICAgICAgIHQucHV0X2J5dGVzKCdmb28nLCAndGVzdCBieXRl
c1xuJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgndGVzdCBieXRlc1xuJywgdC5nZXRfYnl0
ZXMoJ2ZvbycpKQoK

=== modified file bzrlib/tests/test_http.py // last-changed:v.ladeuil+lp@free.f
... r-20070426072124-bty9pn2i122u1zpx // encoding:base64
LS0tIGJ6cmxpYi90ZXN0cy90ZXN0X2h0dHAucHkKKysrIGJ6cmxpYi90ZXN0cy90ZXN0X2h0dHAu
cHkKQEAgLTIwLDIwICsyMCwyNSBAQAogIyBUT0RPOiBTaG91bGQgYmUgcmVuYW1lZCB0byBienJs
aWIudHJhbnNwb3J0Lmh0dHAudGVzdHM/CiAjIFRPRE86IFdoYXQgYWJvdXQgcmVuYW1pbmcgdG8g
YnpybGliLnRlc3RzLnRyYW5zcG9ydC5odHRwID8KIAorZnJvbSBjU3RyaW5nSU8gaW1wb3J0IFN0
cmluZ0lPCiBpbXBvcnQgb3MKIGltcG9ydCBzZWxlY3QKIGltcG9ydCBzb2NrZXQKK2ltcG9ydCBz
eXMKIGltcG9ydCB0aHJlYWRpbmcKIAogaW1wb3J0IGJ6cmxpYgogZnJvbSBienJsaWIgaW1wb3J0
ICgKICAgICBlcnJvcnMsCiAgICAgb3N1dGlscywKKyAgICB1aSwKICAgICB1cmx1dGlscywKICAg
ICApCiBmcm9tIGJ6cmxpYi50ZXN0cyBpbXBvcnQgKAogICAgIFRlc3RDYXNlLAorICAgIFRlc3RV
SUZhY3RvcnksCiAgICAgVGVzdFNraXBwZWQsCisgICAgU3RyaW5nSU9XcmFwcGVyLAogICAgICkK
IGZyb20gYnpybGliLnRlc3RzLkh0dHBTZXJ2ZXIgaW1wb3J0ICgKICAgICBIdHRwU2VydmVyLApA
QCAtNDMsMTEgKzQ4LDE1IEBACiBmcm9tIGJ6cmxpYi50ZXN0cy5IVFRQVGVzdFV0aWwgaW1wb3J0
ICgKICAgICBCYWRQcm90b2NvbFJlcXVlc3RIYW5kbGVyLAogICAgIEJhZFN0YXR1c1JlcXVlc3RI
YW5kbGVyLAotICAgIEZha2VQcm94eVJlcXVlc3RIYW5kbGVyLAogICAgIEZvcmJpZGRlblJlcXVl
c3RIYW5kbGVyLAorICAgIEhUVFBCYXNpY0F1dGhTZXJ2ZXIsCisgICAgSFRUUERpZ2VzdEF1dGhT
ZXJ2ZXIsCiAgICAgSFRUUFNlcnZlclJlZGlyZWN0aW5nLAogICAgIEludmFsaWRTdGF0dXNSZXF1
ZXN0SGFuZGxlciwKICAgICBOb1JhbmdlUmVxdWVzdEhhbmRsZXIsCisgICAgUHJveHlCYXNpY0F1
dGhTZXJ2ZXIsCisgICAgUHJveHlEaWdlc3RBdXRoU2VydmVyLAorICAgIFByb3h5U2VydmVyLAog
ICAgIFNpbmdsZVJhbmdlUmVxdWVzdEhhbmRsZXIsCiAgICAgVGVzdENhc2VXaXRoUmVkaXJlY3Rl
ZFdlYnNlcnZlciwKICAgICBUZXN0Q2FzZVdpdGhUd29XZWJzZXJ2ZXJzLApAQCAtNjUsNiArNzQs
MTEgQEAKICAgICBfdXJsbGliMl93cmFwcGVycywKICAgICApCiBmcm9tIGJ6cmxpYi50cmFuc3Bv
cnQuaHR0cC5fdXJsbGliIGltcG9ydCBIdHRwVHJhbnNwb3J0X3VybGxpYgorZnJvbSBienJsaWIu
dHJhbnNwb3J0Lmh0dHAuX3VybGxpYjJfd3JhcHBlcnMgaW1wb3J0ICgKKyAgICBQYXNzd29yZE1h
bmFnZXIsCisgICAgUHJveHlIYW5kbGVyLAorICAgIFJlcXVlc3QsCisgICAgKQogCiAKIGNsYXNz
IEZha2VNYW5hZ2VyKG9iamVjdCk6CkBAIC03MDIsNyArNzE2LDcgQEAKIGNsYXNzIFRlc3RIdHRw
UHJveHlXaGl0ZUJveChUZXN0Q2FzZSk6CiAgICAgIiIiV2hpdGVib3ggdGVzdCBwcm94eSBodHRw
IGF1dGhvcml6YXRpb24uCiAKLSAgICBUaGVzZSB0ZXN0cyBjb25jZXJuIHVybGxpYiBpbXBsZW1l
bnRhdGlvbiBvbmx5LgorICAgIE9ubHkgdGhlIHVybGxpYiBpbXBsZW1lbnRhdGlvbiBpcyB0ZXN0
ZWQgaGVyZS4KICAgICAiIiIKIAogICAgIGRlZiBzZXRVcChzZWxmKToKQEAgLTcxMiwyNSArNzI2
LDE2IEBACiAgICAgZGVmIHRlYXJEb3duKHNlbGYpOgogICAgICAgICBzZWxmLl9yZXN0b3JlX2Vu
digpCiAKLSAgICBkZWYgX3NldF9hbmRfY2FwdHVyZV9lbnZfdmFyKHNlbGYsIG5hbWUsIG5ld192
YWx1ZSk6Ci0gICAgICAgICIiIlNldCBhbiBlbnZpcm9ubWVudCB2YXJpYWJsZSwgYW5kIHJlc2V0
IGl0IHdoZW4gZmluaXNoZWQuIiIiCi0gICAgICAgIHNlbGYuX29sZF9lbnZbbmFtZV0gPSBvc3V0
aWxzLnNldF9vcl91bnNldF9lbnYobmFtZSwgbmV3X3ZhbHVlKQotCiAgICAgZGVmIF9pbnN0YWxs
X2VudihzZWxmLCBlbnYpOgogICAgICAgICBmb3IgbmFtZSwgdmFsdWUgaW4gZW52Lml0ZXJpdGVt
cygpOgotICAgICAgICAgICAgc2VsZi5fc2V0X2FuZF9jYXB0dXJlX2Vudl92YXIobmFtZSwgdmFs
dWUpCisgICAgICAgICAgICBzZWxmLl9vbGRfZW52W25hbWVdID0gb3N1dGlscy5zZXRfb3JfdW5z
ZXRfZW52KG5hbWUsIHZhbHVlKQogCiAgICAgZGVmIF9yZXN0b3JlX2VudihzZWxmKToKICAgICAg
ICAgZm9yIG5hbWUsIHZhbHVlIGluIHNlbGYuX29sZF9lbnYuaXRlcml0ZW1zKCk6CiAgICAgICAg
ICAgICBvc3V0aWxzLnNldF9vcl91bnNldF9lbnYobmFtZSwgdmFsdWUpCiAKICAgICBkZWYgX3By
b3hpZWRfcmVxdWVzdChzZWxmKToKLSAgICAgICAgZnJvbSBienJsaWIudHJhbnNwb3J0Lmh0dHAu
X3VybGxpYjJfd3JhcHBlcnMgaW1wb3J0ICgKLSAgICAgICAgICAgIFByb3h5SGFuZGxlciwKLSAg
ICAgICAgICAgIFJlcXVlc3QsCi0gICAgICAgICAgICApCi0KLSAgICAgICAgaGFuZGxlciA9IFBy
b3h5SGFuZGxlcigpCisgICAgICAgIGhhbmRsZXIgPSBQcm94eUhhbmRsZXIoUGFzc3dvcmRNYW5h
Z2VyKCkpCiAgICAgICAgIHJlcXVlc3QgPSBSZXF1ZXN0KCdHRVQnLCdodHRwOi8vYmF6L2J1enps
ZScpCiAgICAgICAgIGhhbmRsZXIuc2V0X3Byb3h5KHJlcXVlc3QsICdodHRwJykKICAgICAgICAg
cmV0dXJuIHJlcXVlc3QKQEAgLTc0MCwxNyArNzQ1LDYgQEAKICAgICAgICAgcmVxdWVzdCA9IHNl
bGYuX3Byb3hpZWRfcmVxdWVzdCgpCiAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UocmVxdWVzdC5o
ZWFkZXJzLmhhc19rZXkoJ1Byb3h5LWF1dGhvcml6YXRpb24nKSkKIAotICAgIGRlZiB0ZXN0X2Vt
cHR5X3Bhc3Moc2VsZik6Ci0gICAgICAgIHNlbGYuX2luc3RhbGxfZW52KHsnaHR0cF9wcm94eSc6
ICdodHRwOi8vam9lQGJhci5jb20nfSkKLSAgICAgICAgcmVxdWVzdCA9IHNlbGYuX3Byb3hpZWRf
cmVxdWVzdCgpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ0Jhc2ljICcgKyAnam9lOicuZW5j
b2RlKCdiYXNlNjQnKS5zdHJpcCgpLAotICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVlc3Qu
aGVhZGVyc1snUHJveHktYXV0aG9yaXphdGlvbiddKQotICAgIGRlZiB0ZXN0X3VzZXJfcGFzcyhz
ZWxmKToKLSAgICAgICAgc2VsZi5faW5zdGFsbF9lbnYoeydodHRwX3Byb3h5JzogJ2h0dHA6Ly9q
b2U6Zm9vQGJhci5jb20nfSkKLSAgICAgICAgcmVxdWVzdCA9IHNlbGYuX3Byb3hpZWRfcmVxdWVz
dCgpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ0Jhc2ljICcgKyAnam9lOmZvbycuZW5jb2Rl
KCdiYXNlNjQnKS5zdHJpcCgpLAotICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVlc3QuaGVh
ZGVyc1snUHJveHktYXV0aG9yaXphdGlvbiddKQotCiAgICAgZGVmIHRlc3RfaW52YWxpZF9wcm94
eShzZWxmKToKICAgICAgICAgIiIiQSBwcm94eSBlbnYgdmFyaWFibGUgd2l0aG91dCBzY2hlbWUi
IiIKICAgICAgICAgc2VsZi5faW5zdGFsbF9lbnYoeydodHRwX3Byb3h5JzogJ2hvc3Q6MTIzNCd9
KQpAQCAtNzg2LDggKzc4MCw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
KCdmb28tcHJveGllZCcsICdwcm94aWVkIGNvbnRlbnRzIG9mIGZvb1xuJyldKQogICAgICAgICAj
IExldCdzIHNldHVwIHNvbWUgYXR0cmlidXRlcyBmb3IgdGVzdHMKICAgICAgICAgc2VsZi5zZXJ2
ZXIgPSBzZWxmLmdldF9yZWFkb25seV9zZXJ2ZXIoKQotICAgICAgICAjIEZJWE1FOiBXZSBzaG91
bGQgbm90IHJlbHkgb24gJ2xvY2FsaG9zdCcgYmVpbmcgdGhlIGhvc3RuYW1lCi0gICAgICAgIHNl
bGYucHJveHlfYWRkcmVzcyA9ICdsb2NhbGhvc3Q6JWQnICUgc2VsZi5zZXJ2ZXIucG9ydAorICAg
ICAgICBzZWxmLnByb3h5X2FkZHJlc3MgPSAnJXM6JWQnICUgKHNlbGYuc2VydmVyLmhvc3QsIHNl
bGYuc2VydmVyLnBvcnQpCiAgICAgICAgIHNlbGYubm9fcHJveHlfaG9zdCA9IHNlbGYucHJveHlf
YWRkcmVzcwogICAgICAgICAjIFRoZSBzZWNvbmRhcnkgc2VydmVyIGlzIHRoZSBwcm94eQogICAg
ICAgICBzZWxmLnByb3h5ID0gc2VsZi5nZXRfc2Vjb25kYXJ5X3NlcnZlcigpCkBAIC03OTgsMTUg
Kzc5MSwxMSBAQAogICAgICAgICAiIiJDcmVhdGVzIGFuIGh0dHAgc2VydmVyIHRoYXQgd2lsbCBz
ZXJ2ZSBmaWxlcyB3aXRoCiAgICAgICAgICctcHJveGllZCcgYXBwZW5kZWQgdG8gdGhlaXIgbmFt
ZXMuCiAgICAgICAgICIiIgotICAgICAgICByZXR1cm4gSHR0cFNlcnZlcihGYWtlUHJveHlSZXF1
ZXN0SGFuZGxlcikKLQotICAgIGRlZiBfc2V0X2FuZF9jYXB0dXJlX2Vudl92YXIoc2VsZiwgbmFt
ZSwgbmV3X3ZhbHVlKToKLSAgICAgICAgIiIiU2V0IGFuIGVudmlyb25tZW50IHZhcmlhYmxlLCBh
bmQgcmVzZXQgaXQgd2hlbiBmaW5pc2hlZC4iIiIKLSAgICAgICAgc2VsZi5fb2xkX2VudltuYW1l
XSA9IG9zdXRpbHMuc2V0X29yX3Vuc2V0X2VudihuYW1lLCBuZXdfdmFsdWUpCisgICAgICAgIHJl
dHVybiBQcm94eVNlcnZlcigpCiAKICAgICBkZWYgX2luc3RhbGxfZW52KHNlbGYsIGVudik6CiAg
ICAgICAgIGZvciBuYW1lLCB2YWx1ZSBpbiBlbnYuaXRlcml0ZW1zKCk6Ci0gICAgICAgICAgICBz
ZWxmLl9zZXRfYW5kX2NhcHR1cmVfZW52X3ZhcihuYW1lLCB2YWx1ZSkKKyAgICAgICAgICAgIHNl
bGYuX29sZF9lbnZbbmFtZV0gPSBvc3V0aWxzLnNldF9vcl91bnNldF9lbnYobmFtZSwgdmFsdWUp
CiAKICAgICBkZWYgX3Jlc3RvcmVfZW52KHNlbGYpOgogICAgICAgICBmb3IgbmFtZSwgdmFsdWUg
aW4gc2VsZi5fb2xkX2Vudi5pdGVyaXRlbXMoKToKQEAgLTEwMTAsMTAgKzk5OSwxMCBAQAogICAg
ICIiIlRlc3RzIHJlZGlyZWN0aW9ucyBmb3IgcHljdXJsIGltcGxlbWVudGF0aW9uIiIiCiAKIAot
Y2xhc3MgUmVkaXJlY3RlZFJlcXVlc3QoX3VybGxpYjJfd3JhcHBlcnMuUmVxdWVzdCk6CitjbGFz
cyBSZWRpcmVjdGVkUmVxdWVzdChSZXF1ZXN0KToKICAgICAiIiJSZXF1ZXN0IGZvbGxvd2luZyBy
ZWRpcmVjdGlvbnMiIiIKIAotICAgIGluaXRfb3JpZyA9IF91cmxsaWIyX3dyYXBwZXJzLlJlcXVl
c3QuX19pbml0X18KKyAgICBpbml0X29yaWcgPSBSZXF1ZXN0Ll9faW5pdF9fCiAKICAgICBkZWYg
X19pbml0X18oc2VsZiwgbWV0aG9kLCB1cmwsICphcmdzLCAqKmt3YXJncyk6CiAgICAgICAgIFJl
ZGlyZWN0ZWRSZXF1ZXN0LmluaXRfb3JpZyhzZWxmLCBtZXRob2QsIHVybCwgYXJncywga3dhcmdz
KQpAQCAtMTE0NSwzICsxMTM0LDIwMyBAQAogCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKGVy
cm9ycy5Ub29NYW55UmVkaXJlY3Rpb25zLCBkb19jYXRjaGluZ19yZWRpcmVjdGlvbnMsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHNlbGYuZ2V0X2EsIHNlbGYub2xkX3RyYW5zcG9ydCwgcmVk
aXJlY3RlZCkKKworCitjbGFzcyBUZXN0QXV0aChvYmplY3QpOgorICAgICIiIlRlc3Qgc29tZSBh
dXRoZW50aWNhdGlvbiBzY2hlbWUgc3BlY2lmaWVkIGJ5IGRhdWdodGVyIGNsYXNzLgorCisgICAg
VGhpcyBNVVNUIGJlIHVzZWQgYnkgZGF1Z2h0ZXIgY2xhc3NlcyB0aGF0IGFsc28gaW5oZXJpdCBm
cm9tCisgICAgZWl0aGVyIFRlc3RDYXNlV2l0aFdlYnNlcnZlciBvciBUZXN0Q2FzZVdpdGhUd29X
ZWJzZXJ2ZXJzLgorICAgICIiIgorCisgICAgZGVmIHNldFVwKHNlbGYpOgorICAgICAgICAiIiJT
ZXQgdXAgdGhlIHRlc3QgZW52aXJvbm1lbnQKKworICAgICAgICBEYXVnaHRlciBjbGFzc2VzIHNo
b3VsZCBzZXQgdXAgdGhlaXIgb3duIGVudmlyb25tZW50CisgICAgICAgIChpbmNsdWRpbmcgc2Vs
Zi5zZXJ2ZXIpIGFuZCBleHBsaWNpdGVseSBjYWxsIHRoaXMKKyAgICAgICAgbWV0aG9kLiBUaGlz
IGlzIG5lZWRlZCBiZWNhdXNlIHdlIHdhbnQgdG8gcmV1c2UgdGhlIHNhbWUKKyAgICAgICAgdGVz
dHMgZm9yIHByb3h5IGFuZCBuby1wcm94eSBhY2Nlc3NlcyB3aGljaCBoYXZlCisgICAgICAgIGRp
ZmZlcmVudCB3YXlzIG9mIHNldHRpbmcgc2VsZi5zZXJ2ZXIuCisgICAgICAgICIiIgorICAgICAg
ICBzZWxmLmJ1aWxkX3RyZWVfY29udGVudHMoWygnYScsICdjb250ZW50cyBvZiBhXG4nKSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoJ2InLCAnY29udGVudHMgb2YgYlxuJyks
XSkKKyAgICAgICAgc2VsZi5vbGRfZmFjdG9yeSA9IHVpLnVpX2ZhY3RvcnkKKyAgICAgICAgc2Vs
Zi5vbGRfc3Rkb3V0ID0gc3lzLnN0ZG91dAorICAgICAgICBzeXMuc3Rkb3V0ID0gU3RyaW5nSU9X
cmFwcGVyKCkKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHNlbGYucmVzdG9yZVVJRmFjdG9yeSkK
KworICAgIGRlZiByZXN0b3JlVUlGYWN0b3J5KHNlbGYpOgorICAgICAgICB1aS51aV9mYWN0b3J5
ID0gc2VsZi5vbGRfZmFjdG9yeQorICAgICAgICBzeXMuc3Rkb3V0ID0gc2VsZi5vbGRfc3Rkb3V0
CisKKyAgICBkZWYgZ2V0X3VzZXJfdXJsKHNlbGYsIHVzZXI9Tm9uZSwgcGFzc3dvcmQ9Tm9uZSk6
CisgICAgICAgICIiIkJ1aWxkIGFuIHVybCBlbWJlZGRpbmcgdXNlciBhbmQgcGFzc3dvcmQiIiIK
KyAgICAgICAgdXJsID0gJyVzOi8vJyAlIHNlbGYuc2VydmVyLl91cmxfcHJvdG9jb2wKKyAgICAg
ICAgaWYgdXNlciBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIHVybCArPSB1c2VyCisgICAgICAg
ICAgICBpZiBwYXNzd29yZCBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICB1cmwgKz0gJzon
ICsgcGFzc3dvcmQKKyAgICAgICAgICAgIHVybCArPSAnQCcKKyAgICAgICAgdXJsICs9ICclczol
cy8nICUgKHNlbGYuc2VydmVyLmhvc3QsIHNlbGYuc2VydmVyLnBvcnQpCisgICAgICAgIHJldHVy
biB1cmwKKworICAgIGRlZiB0ZXN0X25vX3VzZXIoc2VsZik6CisgICAgICAgIHNlbGYuc2VydmVy
LmFkZF91c2VyKCdqb2UnLCAnZm9vJykKKyAgICAgICAgdCA9IHNlbGYuZ2V0X3VzZXJfdHJhbnNw
b3J0KCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoZXJyb3JzLkludmFsaWRIdHRwUmVzcG9u
c2UsIHQuZ2V0LCAnYScpCisgICAgICAgICMgT25seSBvbmUgJ0F1dGhlbnRpY2F0aW9uIFJlcXVp
cmVkJyBlcnJvciBzaG91bGQgb2NjdXIKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgxLCBzZWxm
LnNlcnZlci5hdXRoX3JlcXVpcmVkX2Vycm9ycykKKworICAgIGRlZiB0ZXN0X2VtcHR5X3Bhc3Mo
c2VsZik6CisgICAgICAgIHNlbGYuc2VydmVyLmFkZF91c2VyKCdqb2UnLCAnJykKKyAgICAgICAg
dCA9IHNlbGYuZ2V0X3VzZXJfdHJhbnNwb3J0KCdqb2UnLCAnJykKKyAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbCgnY29udGVudHMgb2YgYVxuJywgdC5nZXQoJ2EnKS5yZWFkKCkpCisgICAgICAgICMg
T25seSBvbmUgJ0F1dGhlbnRpY2F0aW9uIFJlcXVpcmVkJyBlcnJvciBzaG91bGQgb2NjdXIKKyAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbCgxLCBzZWxmLnNlcnZlci5hdXRoX3JlcXVpcmVkX2Vycm9y
cykKKworICAgIGRlZiB0ZXN0X3VzZXJfcGFzcyhzZWxmKToKKyAgICAgICAgc2VsZi5zZXJ2ZXIu
YWRkX3VzZXIoJ2pvZScsICdmb28nKQorICAgICAgICB0ID0gc2VsZi5nZXRfdXNlcl90cmFuc3Bv
cnQoJ2pvZScsICdmb28nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdjb250ZW50cyBvZiBh
XG4nLCB0LmdldCgnYScpLnJlYWQoKSkKKyAgICAgICAgIyBPbmx5IG9uZSAnQXV0aGVudGljYXRp
b24gUmVxdWlyZWQnIGVycm9yIHNob3VsZCBvY2N1cgorICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KDEsIHNlbGYuc2VydmVyLmF1dGhfcmVxdWlyZWRfZXJyb3JzKQorCisgICAgZGVmIHRlc3RfdW5r
bm93bl91c2VyKHNlbGYpOgorICAgICAgICBzZWxmLnNlcnZlci5hZGRfdXNlcignam9lJywgJ2Zv
bycpCisgICAgICAgIHQgPSBzZWxmLmdldF91c2VyX3RyYW5zcG9ydCgnYmlsbCcsICdmb28nKQor
ICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhlcnJvcnMuSW52YWxpZEh0dHBSZXNwb25zZSwgdC5n
ZXQsICdhJykKKyAgICAgICAgIyBUd28gJ0F1dGhlbnRpY2F0aW9uIFJlcXVpcmVkJyBlcnJvcnMg
c2hvdWxkIG9jY3VyICh0aGUKKyAgICAgICAgIyBpbml0aWFsICd3aG8gYXJlIHlvdScgYW5kICdJ
IGRvbid0IGtub3cgeW91LCB3aG8gYXJlCisgICAgICAgICMgeW91JykuCisgICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwoMiwgc2VsZi5zZXJ2ZXIuYXV0aF9yZXF1aXJlZF9lcnJvcnMpCisKKyAgICBk
ZWYgdGVzdF93cm9uZ19wYXNzKHNlbGYpOgorICAgICAgICBzZWxmLnNlcnZlci5hZGRfdXNlcign
am9lJywgJ2ZvbycpCisgICAgICAgIHQgPSBzZWxmLmdldF91c2VyX3RyYW5zcG9ydCgnam9lJywg
J2JhcicpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKGVycm9ycy5JbnZhbGlkSHR0cFJlc3Bv
bnNlLCB0LmdldCwgJ2EnKQorICAgICAgICAjIFR3byAnQXV0aGVudGljYXRpb24gUmVxdWlyZWQn
IGVycm9ycyBzaG91bGQgb2NjdXIgKHRoZQorICAgICAgICAjIGluaXRpYWwgJ3dobyBhcmUgeW91
JyBhbmQgJ3RoaXMgaXMgbm90IHlvdSwgd2hvIGFyZSB5b3UnKQorICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKDIsIHNlbGYuc2VydmVyLmF1dGhfcmVxdWlyZWRfZXJyb3JzKQorCisgICAgZGVmIHRl
c3RfcHJvbXB0X2Zvcl9wYXNzd29yZChzZWxmKToKKyAgICAgICAgc2VsZi5zZXJ2ZXIuYWRkX3Vz
ZXIoJ2pvZScsICdmb28nKQorICAgICAgICB0ID0gc2VsZi5nZXRfdXNlcl90cmFuc3BvcnQoJ2pv
ZScsIE5vbmUpCisgICAgICAgIHVpLnVpX2ZhY3RvcnkgPSBUZXN0VUlGYWN0b3J5KHN0ZGluPSdm
b29cbicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ2NvbnRlbnRzIG9mIGFcbicsdC5nZXQo
J2EnKS5yZWFkKCkpCisgICAgICAgICMgc3RkaW4gc2hvdWxkIGJlIGVtcHR5CisgICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwoJycsIHVpLnVpX2ZhY3Rvcnkuc3RkaW4ucmVhZGxpbmUoKSkKKyAgICAg
ICAgIyBBbmQgd2Ugc2hvdWxkbid0IHByb21wdCBhZ2FpbiBmb3IgYSBkaWZmZXJlbnQgcmVxdWVz
dAorICAgICAgICAjIGFnYWluc3QgdGhlIHNhbWUgdHJhbnNwb3J0LgorICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKCdjb250ZW50cyBvZiBiXG4nLHQuZ2V0KCdiJykucmVhZCgpKQorICAgICAgICB0
MiA9IHQuY2xvbmUoKQorICAgICAgICAjIEFuZCBuZWl0aGVyIGFnYWluc3QgYSBjbG9uZQorICAg
ICAgICBzZWxmLmFzc2VydEVxdWFsKCdjb250ZW50cyBvZiBiXG4nLHQyLmdldCgnYicpLnJlYWQo
KSkKKyAgICAgICAgIyBPbmx5IG9uZSAnQXV0aGVudGljYXRpb24gUmVxdWlyZWQnIGVycm9yIHNo
b3VsZCBvY2N1cgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDEsIHNlbGYuc2VydmVyLmF1dGhf
cmVxdWlyZWRfZXJyb3JzKQorCisKK2NsYXNzIFRlc3RIVFRQQXV0aChUZXN0QXV0aCk6CisgICAg
IiIiVGVzdCBIVFRQIGF1dGhlbnRpY2F0aW9uIHNjaGVtZXMuCisKKyAgICBEYXVnaHRlciBjbGFz
c2VzIE1VU1QgaW5oZXJpdCBmcm9tIFRlc3RDYXNlV2l0aFdlYnNlcnZlciB0b28uCisgICAgIiIi
CisKKyAgICBfYXV0aF9oZWFkZXIgPSAnQXV0aG9yaXphdGlvbicKKworICAgIGRlZiBzZXRVcChz
ZWxmKToKKyAgICAgICAgVGVzdENhc2VXaXRoV2Vic2VydmVyLnNldFVwKHNlbGYpCisgICAgICAg
IHNlbGYuc2VydmVyID0gc2VsZi5nZXRfcmVhZG9ubHlfc2VydmVyKCkKKyAgICAgICAgVGVzdEF1
dGguc2V0VXAoc2VsZikKKworICAgIGRlZiBnZXRfdXNlcl90cmFuc3BvcnQoc2VsZiwgdXNlcj1O
b25lLCBwYXNzd29yZD1Ob25lKToKKyAgICAgICAgcmV0dXJuIHNlbGYuX3RyYW5zcG9ydChzZWxm
LmdldF91c2VyX3VybCh1c2VyLCBwYXNzd29yZCkpCisKKworY2xhc3MgVGVzdFByb3h5QXV0aChU
ZXN0QXV0aCk6CisgICAgIiIiVGVzdCBwcm94eSBhdXRoZW50aWNhdGlvbiBzY2hlbWVzLgorCisg
ICAgRGF1Z2h0ZXIgY2xhc3NlcyBNVVNUIGFsc28gaW5oZXJpdCBmcm9tIFRlc3RDYXNlV2l0aFdl
YnNlcnZlci4KKyAgICAiIiIKKyAgICBfYXV0aF9oZWFkZXIgPSAnUHJveHktYXV0aG9yaXphdGlv
bicKKworICAgIGRlZiBzZXRVcChzZWxmKToKKyAgICAgICAgVGVzdENhc2VXaXRoV2Vic2VydmVy
LnNldFVwKHNlbGYpCisgICAgICAgIHNlbGYuc2VydmVyID0gc2VsZi5nZXRfcmVhZG9ubHlfc2Vy
dmVyKCkKKyAgICAgICAgc2VsZi5fb2xkX2VudiA9IHt9CisgICAgICAgIHNlbGYuYWRkQ2xlYW51
cChzZWxmLl9yZXN0b3JlX2VudikKKyAgICAgICAgVGVzdEF1dGguc2V0VXAoc2VsZikKKyAgICAg
ICAgIyBPdmVycmlkZSB0aGUgY29udGVudHMgdG8gYXZvaWQgZmFsc2UgcG9zaXRpdmVzCisgICAg
ICAgIHNlbGYuYnVpbGRfdHJlZV9jb250ZW50cyhbKCdhJywgJ25vdCBwcm94aWVkIGNvbnRlbnRz
IG9mIGFcbicpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgnYicsICdub3Qg
cHJveGllZCBjb250ZW50cyBvZiBiXG4nKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAoJ2EtcHJveGllZCcsICdjb250ZW50cyBvZiBhXG4nKSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAoJ2ItcHJveGllZCcsICdjb250ZW50cyBvZiBiXG4nKSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKQorCisgICAgZGVmIGdldF91c2VyX3RyYW5z
cG9ydChzZWxmLCB1c2VyPU5vbmUsIHBhc3N3b3JkPU5vbmUpOgorICAgICAgICBzZWxmLl9pbnN0
YWxsX2Vudih7J2FsbF9wcm94eSc6IHNlbGYuZ2V0X3VzZXJfdXJsKHVzZXIsIHBhc3N3b3JkKX0p
CisgICAgICAgIHJldHVybiBzZWxmLl90cmFuc3BvcnQoc2VsZi5zZXJ2ZXIuZ2V0X3VybCgpKQor
CisgICAgZGVmIF9pbnN0YWxsX2VudihzZWxmLCBlbnYpOgorICAgICAgICBmb3IgbmFtZSwgdmFs
dWUgaW4gZW52Lml0ZXJpdGVtcygpOgorICAgICAgICAgICAgc2VsZi5fb2xkX2VudltuYW1lXSA9
IG9zdXRpbHMuc2V0X29yX3Vuc2V0X2VudihuYW1lLCB2YWx1ZSkKKworICAgIGRlZiBfcmVzdG9y
ZV9lbnYoc2VsZik6CisgICAgICAgIGZvciBuYW1lLCB2YWx1ZSBpbiBzZWxmLl9vbGRfZW52Lml0
ZXJpdGVtcygpOgorICAgICAgICAgICAgb3N1dGlscy5zZXRfb3JfdW5zZXRfZW52KG5hbWUsIHZh
bHVlKQorCisKK2NsYXNzIFRlc3RIVFRQQmFzaWNBdXRoKFRlc3RIVFRQQXV0aCwgVGVzdENhc2VX
aXRoV2Vic2VydmVyKToKKyAgICAiIiJUZXN0IGh0dHAgYmFzaWMgYXV0aGVudGljYXRpb24gc2No
ZW1lIiIiCisKKyAgICBfdHJhbnNwb3J0ID0gSHR0cFRyYW5zcG9ydF91cmxsaWIKKworICAgIGRl
ZiBjcmVhdGVfdHJhbnNwb3J0X3JlYWRvbmx5X3NlcnZlcihzZWxmKToKKyAgICAgICAgcmV0dXJu
IEhUVFBCYXNpY0F1dGhTZXJ2ZXIoKQorCisKK2NsYXNzIFRlc3RIVFRQUHJveHlCYXNpY0F1dGgo
VGVzdFByb3h5QXV0aCwgVGVzdENhc2VXaXRoV2Vic2VydmVyKToKKyAgICAiIiJUZXN0IHByb3h5
IGJhc2ljIGF1dGhlbnRpY2F0aW9uIHNjaGVtZSIiIgorCisgICAgX3RyYW5zcG9ydCA9IEh0dHBU
cmFuc3BvcnRfdXJsbGliCisKKyAgICBkZWYgY3JlYXRlX3RyYW5zcG9ydF9yZWFkb25seV9zZXJ2
ZXIoc2VsZik6CisgICAgICAgIHJldHVybiBQcm94eUJhc2ljQXV0aFNlcnZlcigpCisKKworY2xh
c3MgVGVzdERpZ2VzdEF1dGgob2JqZWN0KToKKyAgICAiIiJEaWdlc3QgQXV0aGVudGljYXRpb24g
c3BlY2lmaWMgdGVzdHMiIiIKKworICAgIGRlZiB0ZXN0X2NoYW5naW5nX25vbmNlKHNlbGYpOgor
ICAgICAgICBzZWxmLnNlcnZlci5hZGRfdXNlcignam9lJywgJ2ZvbycpCisgICAgICAgIHQgPSBz
ZWxmLmdldF91c2VyX3RyYW5zcG9ydCgnam9lJywgJ2ZvbycpCisgICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwoJ2NvbnRlbnRzIG9mIGFcbicsIHQuZ2V0KCdhJykucmVhZCgpKQorICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKCdjb250ZW50cyBvZiBiXG4nLCB0LmdldCgnYicpLnJlYWQoKSkKKyAgICAg
ICAgIyBPbmx5IG9uZSAnQXV0aGVudGljYXRpb24gUmVxdWlyZWQnIGVycm9yIHNob3VsZCBoYXZl
CisgICAgICAgICMgb2NjdXJlZCBzbyBmYXIKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgxLCBz
ZWxmLnNlcnZlci5hdXRoX3JlcXVpcmVkX2Vycm9ycykKKyAgICAgICAgIyBUaGUgc2VydmVyIGlu
dmFsaWRhdGVzIHRoZSBjdXJyZW50IG5vbmNlCisgICAgICAgIHNlbGYuc2VydmVyLmF1dGhfbm9u
Y2UgPSBzZWxmLnNlcnZlci5hdXRoX25vbmNlICsgJy4gTm8sIG5vdyEnCisgICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwoJ2NvbnRlbnRzIG9mIGFcbicsIHQuZ2V0KCdhJykucmVhZCgpKQorICAgICAg
ICAjIFR3byAnQXV0aGVudGljYXRpb24gUmVxdWlyZWQnIGVycm9ycyBzaG91bGQgb2NjdXIgKHRo
ZQorICAgICAgICAjIGluaXRpYWwgJ3dobyBhcmUgeW91JyBhbmQgYSBzZWNvbmQgJ3dobyBhcmUg
eW91JyB3aXRoIHRoZSBuZXcgbm9uY2UpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMiwgc2Vs
Zi5zZXJ2ZXIuYXV0aF9yZXF1aXJlZF9lcnJvcnMpCisKKworY2xhc3MgVGVzdEhUVFBEaWdlc3RB
dXRoKFRlc3RIVFRQQXV0aCwgVGVzdERpZ2VzdEF1dGgsIFRlc3RDYXNlV2l0aFdlYnNlcnZlcik6
CisgICAgIiIiVGVzdCBodHRwIGRpZ2VzdCBhdXRoZW50aWNhdGlvbiBzY2hlbWUiIiIKKworICAg
IF90cmFuc3BvcnQgPSBIdHRwVHJhbnNwb3J0X3VybGxpYgorCisgICAgZGVmIGNyZWF0ZV90cmFu
c3BvcnRfcmVhZG9ubHlfc2VydmVyKHNlbGYpOgorICAgICAgICByZXR1cm4gSFRUUERpZ2VzdEF1
dGhTZXJ2ZXIoKQorCisKK2NsYXNzIFRlc3RIVFRQUHJveHlEaWdlc3RBdXRoKFRlc3RQcm94eUF1
dGgsIFRlc3REaWdlc3RBdXRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGVzdENh
c2VXaXRoV2Vic2VydmVyKToKKyAgICAiIiJUZXN0IHByb3h5IGRpZ2VzdCBhdXRoZW50aWNhdGlv
biBzY2hlbWUiIiIKKworICAgIF90cmFuc3BvcnQgPSBIdHRwVHJhbnNwb3J0X3VybGxpYgorCisg
ICAgZGVmIGNyZWF0ZV90cmFuc3BvcnRfcmVhZG9ubHlfc2VydmVyKHNlbGYpOgorICAgICAgICBy
ZXR1cm4gUHJveHlEaWdlc3RBdXRoU2VydmVyKCkKKwoK

=== modified file bzrlib/tests/test_lazy_import.py // last-changed:john@arbash-
... meinel.com-20070412202742-4cr2qmchdfe9mg7n // encoding:base64
LS0tIGJ6cmxpYi90ZXN0cy90ZXN0X2xhenlfaW1wb3J0LnB5CisrKyBienJsaWIvdGVzdHMvdGVz
dF9sYXp5X2ltcG9ydC5weQpAQCAtOTYsNiArOTYsMTUgQEAKICAgICBnZXQgY29sbGlzaW9ucy4K
ICAgICAiIiIKIAorICAgIGRlZiBzZXRVcChzZWxmKToKKyAgICAgICAgVGVzdENhc2Uuc2V0VXAo
c2VsZikKKyAgICAgICAgIyBUaGVzZSB0ZXN0cyBhc3N1bWUgd2Ugd2lsbCBub3QgYmUgcHJveHlp
bmcsIHNvIG1ha2Ugc3VyZSBwcm94eWluZyBpcworICAgICAgICAjIGRpc2FibGVkLgorICAgICAg
ICBvcmlnX3Byb3h5ID0gbGF6eV9pbXBvcnQuU2NvcGVSZXBsYWNlci5fc2hvdWxkX3Byb3h5Cisg
ICAgICAgIGRlZiByZXN0b3JlKCk6CisgICAgICAgICAgICBsYXp5X2ltcG9ydC5TY29wZVJlcGxh
Y2VyLl9zaG91bGRfcHJveHkgPSBvcmlnX3Byb3h5CisgICAgICAgIGxhenlfaW1wb3J0LlNjb3Bl
UmVwbGFjZXIuX3Nob3VsZF9wcm94eSA9IEZhbHNlCisKICAgICBkZWYgdGVzdF9vYmplY3Qoc2Vs
Zik6CiAgICAgICAgICIiIlNjb3BlUmVwbGFjZXIgY2FuIGNyZWF0ZSBhbiBpbnN0YW5jZSBpbiBs
b2NhbCBzY29wZS4KICAgICAgICAgCkBAIC0zMjYsMTYgKzMzNSw3NCBAQAogICAgICAgICBzZWxm
LmFzc2VydFJhaXNlcyhlcnJvcnMuSWxsZWdhbFVzZU9mU2NvcGVSZXBsYWNlciwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZ2V0YXR0ciwgdGVzdF9vYmozLCAnZm9vJykKICAgICAgICAgCi0g
ICAgICAgICMgSG93ZXZlciwgdGhlIAotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFsoJ19fZ2V0
YXR0cmlidXRlX18nLCAnZm9vJyksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICdfcmVwbGFj
ZScsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICdmYWN0b3J5JywKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgJ2luaXQnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAoJ2ZvbycsIDEp
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAoJ2ZvbycsIDIpLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAoJ2ZvbycsIDMpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAoJ19fZ2V0
YXR0cmlidXRlX18nLCAnZm9vJyksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICdfcmVwbGFj
ZScsCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoWygnX19nZXRhdHRyaWJ1dGVfXycsICdmb28n
KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgJ19yZXBsYWNlJywKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgJ2ZhY3RvcnknLAorICAgICAgICAgICAgICAgICAgICAgICAgICAnaW5pdCcs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICgnZm9vJywgMSksCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICgnZm9vJywgMiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICgnZm9vJywg
MyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICgnX19nZXRhdHRyaWJ1dGVfXycsICdmb28n
KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgJ19yZXBsYWNlJywKKyAgICAgICAgICAgICAg
ICAgICAgICAgICBdLCBhY3Rpb25zKQorCisgICAgZGVmIHRlc3RfZW5hYmxlX3Byb3h5aW5nKHNl
bGYpOgorICAgICAgICAiIiJUZXN0IHRoYXQgd2UgY2FuIGFsbG93IFNjb3BlUmVwbGFjZXIgdG8g
cHJveHkuIiIiCisgICAgICAgIGFjdGlvbnMgPSBbXQorICAgICAgICBJbnN0cnVtZW50ZWRSZXBs
YWNlci51c2VfYWN0aW9ucyhhY3Rpb25zKQorICAgICAgICBUZXN0Q2xhc3MudXNlX2FjdGlvbnMo
YWN0aW9ucykKKworICAgICAgICBkZWYgZmFjdG9yeShyZXBsYWNlciwgc2NvcGUsIG5hbWUpOgor
ICAgICAgICAgICAgYWN0aW9ucy5hcHBlbmQoJ2ZhY3RvcnknKQorICAgICAgICAgICAgcmV0dXJu
IFRlc3RDbGFzcygpCisKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgdGVzdF9vYmo0CisgICAg
ICAgIGV4Y2VwdCBOYW1lRXJyb3I6CisgICAgICAgICAgICAjIHRlc3Rfb2JqNCBzaG91bGRuJ3Qg
ZXhpc3QgeWV0CisgICAgICAgICAgICBwYXNzCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBz
ZWxmLmZhaWwoJ3Rlc3Rfb2JqNCB3YXMgbm90IHN1cHBvc2VkIHRvIGV4aXN0IHlldCcpCisKKyAg
ICAgICAgbGF6eV9pbXBvcnQuU2NvcGVSZXBsYWNlci5fc2hvdWxkX3Byb3h5ID0gVHJ1ZQorICAg
ICAgICBJbnN0cnVtZW50ZWRSZXBsYWNlcihzY29wZT1nbG9iYWxzKCksIG5hbWU9J3Rlc3Rfb2Jq
NCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhY3Rvcnk9ZmFjdG9yeSkKKworICAg
ICAgICBzZWxmLmFzc2VydEVxdWFsKEluc3RydW1lbnRlZFJlcGxhY2VyLAorICAgICAgICAgICAg
ICAgICAgICAgICAgIG9iamVjdC5fX2dldGF0dHJpYnV0ZV9fKHRlc3Rfb2JqNCwgJ19fY2xhc3Nf
XycpKQorICAgICAgICB0ZXN0X29iajUgPSB0ZXN0X29iajQKKyAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbChJbnN0cnVtZW50ZWRSZXBsYWNlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICBvYmpl
Y3QuX19nZXRhdHRyaWJ1dGVfXyh0ZXN0X29iajQsICdfX2NsYXNzX18nKSkKKyAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbChJbnN0cnVtZW50ZWRSZXBsYWNlciwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICBvYmplY3QuX19nZXRhdHRyaWJ1dGVfXyh0ZXN0X29iajUsICdfX2NsYXNzX18nKSkKKwor
ICAgICAgICAjIFRoZSBmaXJzdCB1c2Ugb2YgdGhlIGFsdGVybmF0ZSB2YXJpYWJsZSBjYXVzZXMg
dGVzdF9vYmoyIHRvCisgICAgICAgICMgYmUgcmVwbGFjZWQuCisgICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwoJ2ZvbycsIHRlc3Rfb2JqNC5mb28oMSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
VGVzdENsYXNzLAorICAgICAgICAgICAgICAgICAgICAgICAgIG9iamVjdC5fX2dldGF0dHJpYnV0
ZV9fKHRlc3Rfb2JqNCwgJ19fY2xhc3NfXycpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKElu
c3RydW1lbnRlZFJlcGxhY2VyLAorICAgICAgICAgICAgICAgICAgICAgICAgIG9iamVjdC5fX2dl
dGF0dHJpYnV0ZV9fKHRlc3Rfb2JqNSwgJ19fY2xhc3NfXycpKQorICAgICAgICAjIFdlIHNob3Vs
ZCBiZSBhYmxlIHRvIGFjY2VzcyB0ZXN0X29iajQgYXR0cmlidXRlcyBub3JtYWxseQorICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKCdmb28nLCB0ZXN0X29iajQuZm9vKDIpKQorICAgICAgICAjIGJl
Y2F1c2Ugd2UgZW5hYmxlZCBwcm94eWluZywgdGVzdF9vYmo1IGNhbiBhY2Nlc3MgaXRzIG1lbWJl
cnMgYXMgd2VsbAorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdmb28nLCB0ZXN0X29iajUuZm9v
KDMpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdmb28nLCB0ZXN0X29iajUuZm9vKDQpKQor
CisgICAgICAgICMgSG93ZXZlciwgaXQgY2Fubm90IGJlIHJlcGxhY2VkIGJ5IHRoZSBTY29wZVJl
cGxhY2VyCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoSW5zdHJ1bWVudGVkUmVwbGFjZXIsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgb2JqZWN0Ll9fZ2V0YXR0cmlidXRlX18odGVzdF9vYmo1
LCAnX19jbGFzc19fJykpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChbKCdfX2dldGF0dHJp
YnV0ZV9fJywgJ2ZvbycpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAnX3JlcGxhY2UnLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAnZmFjdG9yeScsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICdpbml0JywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgKCdmb28nLCAxKSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgKCdmb28nLCAyKSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgKCdfX2dldGF0dHJpYnV0ZV9fJywgJ2ZvbycpLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAoJ2ZvbycsIDMpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAoJ19fZ2V0YXR0cmli
dXRlX18nLCAnZm9vJyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICgnZm9vJywgNCksCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgXSwgYWN0aW9ucykKIAogCgo=

=== modified file bzrlib/tests/test_lockable_files.py // last-changed:andrew.be
... nnetts@canonical.com-20070419145520-3j94u46y5zfh0ybq // encoding:base64
LS0tIGJ6cmxpYi90ZXN0cy90ZXN0X2xvY2thYmxlX2ZpbGVzLnB5CisrKyBienJsaWIvdGVzdHMv
dGVzdF9sb2NrYWJsZV9maWxlcy5weQpAQCAtMTcsMTIgKzE3LDEzIEBACiBmcm9tIFN0cmluZ0lP
IGltcG9ydCBTdHJpbmdJTwogCiBpbXBvcnQgYnpybGliCi1mcm9tIGJ6cmxpYi5icmFuY2ggaW1w
b3J0IEJyYW5jaAogaW1wb3J0IGJ6cmxpYi5lcnJvcnMgYXMgZXJyb3JzCiBmcm9tIGJ6cmxpYi5l
cnJvcnMgaW1wb3J0IEJ6ckJhZFBhcmFtZXRlck5vdFN0cmluZywgTm9TdWNoRmlsZSwgUmVhZE9u
bHlFcnJvcgogZnJvbSBienJsaWIubG9ja2FibGVfZmlsZXMgaW1wb3J0IExvY2thYmxlRmlsZXMs
IFRyYW5zcG9ydExvY2sKK2Zyb20gYnpybGliIGltcG9ydCBsb2NrZGlyCiBmcm9tIGJ6cmxpYi5s
b2NrZGlyIGltcG9ydCBMb2NrRGlyCiBmcm9tIGJ6cmxpYi50ZXN0cyBpbXBvcnQgVGVzdENhc2VJ
blRlbXBEaXIKK2Zyb20gYnpybGliLnRlc3RzLnRlc3Rfc21hcnQgaW1wb3J0IFRlc3RDYXNlV2l0
aFNtYXJ0TWVkaXVtCiBmcm9tIGJ6cmxpYi50ZXN0cy50ZXN0X3RyYW5zYWN0aW9ucyBpbXBvcnQg
RHVtbXlXZWF2ZQogZnJvbSBienJsaWIudHJhbnNhY3Rpb25zIGltcG9ydCAoUGFzc1Rocm91Z2hU
cmFuc2FjdGlvbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlYWRPbmx5VHJh
bnNhY3Rpb24sCkBAIC00Myw3ICs0NCw3IEBACiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KDQsIGxlbih1bmljb2RlX3N0cmluZykpCiAgICAgICAgICAgICBieXRlX3N0cmluZyA9IHVuaWNv
ZGVfc3RyaW5nLmVuY29kZSgndXRmLTgnKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCg2
LCBsZW4oYnl0ZV9zdHJpbmcpKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVW5pY29k
ZUVuY29kZUVycm9yLCBzZWxmLmxvY2thYmxlLnB1dCwgJ2ZvbycsIAorICAgICAgICAgICAgc2Vs
Zi5hc3NlcnRSYWlzZXMoVW5pY29kZUVuY29kZUVycm9yLCBzZWxmLmxvY2thYmxlLnB1dCwgJ2Zv
bycsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdHJpbmdJTyh1bmljb2RlX3N0cmlu
ZykpCiAgICAgICAgICAgICBzZWxmLmxvY2thYmxlLnB1dCgnZm9vJywgU3RyaW5nSU8oYnl0ZV9z
dHJpbmcpKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChieXRlX3N0cmluZywKQEAgLTEy
NSw2ICsxMjYsMTg3IEBACiAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhlcnJvcnMuTG9j
a0Jyb2tlbiwgc2VsZi5sb2NrYWJsZS51bmxvY2spCiAgICAgICAgICAgICBzZWxmLmFzc2VydEZh
bHNlKHNlbGYubG9ja2FibGUuaXNfbG9ja2VkKCkpCiAKKyAgICBkZWYgdGVzdF9sb2NrX3dyaXRl
X3JldHVybnNfTm9uZV9yZWZ1c2VzX3Rva2VuKHNlbGYpOgorICAgICAgICB0b2tlbiA9IHNlbGYu
bG9ja2FibGUubG9ja193cml0ZSgpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGlmIHRva2Vu
IGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgICMgVGhpcyB0ZXN0IGRvZXMgbm90IGFwcGx5
LCBiZWNhdXNlIHRoaXMgbG9ja2FibGUgc3VwcG9ydHMKKyAgICAgICAgICAgICAgICAjIHRva2Vu
cy4KKyAgICAgICAgICAgICAgICByZXR1cm4KKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2Vz
KGVycm9ycy5Ub2tlbkxvY2tpbmdOb3RTdXBwb3J0ZWQsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBzZWxmLmxvY2thYmxlLmxvY2tfd3JpdGUsIHRva2VuPSd0b2tlbicpCisgICAgICAg
IGZpbmFsbHk6CisgICAgICAgICAgICBzZWxmLmxvY2thYmxlLnVubG9jaygpCisKKyAgICBkZWYg
dGVzdF9sb2NrX3dyaXRlX3JldHVybnNfdG9rZW5fd2hlbl9naXZlbl90b2tlbihzZWxmKToKKyAg
ICAgICAgdG9rZW4gPSBzZWxmLmxvY2thYmxlLmxvY2tfd3JpdGUoKQorICAgICAgICB0cnk6Cisg
ICAgICAgICAgICBpZiB0b2tlbiBpcyBOb25lOgorICAgICAgICAgICAgICAgICMgVGhpcyB0ZXN0
IGRvZXMgbm90IGFwcGx5LCBiZWNhdXNlIHRoaXMgbG9ja2FibGUgcmVmdXNlcworICAgICAgICAg
ICAgICAgICMgdG9rZW5zLgorICAgICAgICAgICAgICAgIHJldHVybgorICAgICAgICAgICAgbmV3
X2xvY2thYmxlID0gc2VsZi5nZXRfbG9ja2FibGUoKQorICAgICAgICAgICAgdG9rZW5fZnJvbV9u
ZXdfbG9ja2FibGUgPSBuZXdfbG9ja2FibGUubG9ja193cml0ZSh0b2tlbj10b2tlbikKKyAgICAg
ICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRva2VuLCB0b2tl
bl9mcm9tX25ld19sb2NrYWJsZSkKKyAgICAgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICAg
ICAgbmV3X2xvY2thYmxlLnVubG9jaygpCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICBz
ZWxmLmxvY2thYmxlLnVubG9jaygpCisKKyAgICBkZWYgdGVzdF9sb2NrX3dyaXRlX3JhaXNlc19v
bl90b2tlbl9taXNtYXRjaChzZWxmKToKKyAgICAgICAgdG9rZW4gPSBzZWxmLmxvY2thYmxlLmxv
Y2tfd3JpdGUoKQorICAgICAgICB0cnk6CisgICAgICAgICAgICBpZiB0b2tlbiBpcyBOb25lOgor
ICAgICAgICAgICAgICAgICMgVGhpcyB0ZXN0IGRvZXMgbm90IGFwcGx5LCBiZWNhdXNlIHRoaXMg
bG9ja2FibGUgcmVmdXNlcworICAgICAgICAgICAgICAgICMgdG9rZW5zLgorICAgICAgICAgICAg
ICAgIHJldHVybgorICAgICAgICAgICAgZGlmZmVyZW50X3Rva2VuID0gdG9rZW4gKyAneHh4Jwor
ICAgICAgICAgICAgIyBSZS11c2luZyB0aGUgc2FtZSBsb2NrYWJsZSBpbnN0YW5jZSB3aXRoIGEg
ZGlmZmVyZW50IHRva2VuIHdpbGwKKyAgICAgICAgICAgICMgcmFpc2UgVG9rZW5NaXNtYXRjaC4K
KyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKGVycm9ycy5Ub2tlbk1pc21hdGNoLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5sb2NrYWJsZS5sb2NrX3dyaXRlLCB0b2tl
bj1kaWZmZXJlbnRfdG9rZW4pCisgICAgICAgICAgICAjIEEgc2VwZXJhdGUgaW5zdGFuY2UgZm9y
IHRoZSBzYW1lIGxvY2thYmxlIHdpbGwgYWxzbyByYWlzZQorICAgICAgICAgICAgIyBUb2tlbk1p
c21hdGNoLgorICAgICAgICAgICAgIyBUaGlzIGRldGVjdHMgdGhlIGNhc2Ugd2hlcmUgYSBjYWxs
ZXIgY2xhaW1zIHRvIGhhdmUgYSBsb2NrICh2aWEKKyAgICAgICAgICAgICMgdGhlIHRva2VuKSBm
b3IgYW4gZXh0ZXJuYWwgcmVzb3VyY2UsIGJ1dCBkb2Vzbid0ICh0aGUgdG9rZW4gaXMKKyAgICAg
ICAgICAgICMgZGlmZmVyZW50KS4gIENsaWVudHMgbmVlZCBhIHNlcGVyYXRlIGxvY2sgb2JqZWN0
IHRvIG1ha2Ugc3VyZSB0aGUKKyAgICAgICAgICAgICMgZXh0ZXJuYWwgcmVzb3VyY2UgaXMgcHJv
YmVkLCB3aGVyZWFzIHRoZSBleGlzdGluZyBsb2NrIG9iamVjdAorICAgICAgICAgICAgIyBtaWdo
dCBjYWNoZS4KKyAgICAgICAgICAgIG5ld19sb2NrYWJsZSA9IHNlbGYuZ2V0X2xvY2thYmxlKCkK
KyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKGVycm9ycy5Ub2tlbk1pc21hdGNoLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3X2xvY2thYmxlLmxvY2tfd3JpdGUsIHRva2Vu
PWRpZmZlcmVudF90b2tlbikKKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgIHNlbGYubG9j
a2FibGUudW5sb2NrKCkKKworICAgIGRlZiB0ZXN0X2xvY2tfd3JpdGVfd2l0aF9tYXRjaGluZ190
b2tlbihzZWxmKToKKyAgICAgICAgIyBJZiB0aGUgdG9rZW4gbWF0Y2hlcywgc28gbm8gZXhjZXB0
aW9uIGlzIHJhaXNlZCBieSBsb2NrX3dyaXRlLgorICAgICAgICB0b2tlbiA9IHNlbGYubG9ja2Fi
bGUubG9ja193cml0ZSgpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGlmIHRva2VuIGlzIE5v
bmU6CisgICAgICAgICAgICAgICAgIyBUaGlzIHRlc3QgZG9lcyBub3QgYXBwbHksIGJlY2F1c2Ug
dGhpcyBsb2NrYWJsZSByZWZ1c2VzCisgICAgICAgICAgICAgICAgIyB0b2tlbnMuCisgICAgICAg
ICAgICAgICAgcmV0dXJuCisgICAgICAgICAgICAjIFRoZSBzYW1lIGluc3RhbmNlIHdpbGwgYWNj
ZXB0IGEgc2Vjb25kIGxvY2tfd3JpdGUgaWYgdGhlIHNwZWNpZmllZAorICAgICAgICAgICAgIyB0
b2tlbiBtYXRjaGVzLgorICAgICAgICAgICAgc2VsZi5sb2NrYWJsZS5sb2NrX3dyaXRlKHRva2Vu
PXRva2VuKQorICAgICAgICAgICAgc2VsZi5sb2NrYWJsZS51bmxvY2soKQorICAgICAgICAgICAg
IyBDYWxsaW5nIGxvY2tfd3JpdGUgb24gYSBuZXcgaW5zdGFuY2UgZm9yIHRoZSBzYW1lIGxvY2th
YmxlIHdpbGwKKyAgICAgICAgICAgICMgYWxzbyBzdWNjZWVkLgorICAgICAgICAgICAgbmV3X2xv
Y2thYmxlID0gc2VsZi5nZXRfbG9ja2FibGUoKQorICAgICAgICAgICAgbmV3X2xvY2thYmxlLmxv
Y2tfd3JpdGUodG9rZW49dG9rZW4pCisgICAgICAgICAgICBuZXdfbG9ja2FibGUudW5sb2NrKCkK
KyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgIHNlbGYubG9ja2FibGUudW5sb2NrKCkKKwor
ICAgIGRlZiB0ZXN0X3VubG9ja19hZnRlcl9sb2NrX3dyaXRlX3dpdGhfdG9rZW4oc2VsZik6Cisg
ICAgICAgICMgSWYgbG9ja193cml0ZSBkaWQgbm90IHBoeXNpY2FsbHkgYWNxdWlyZSB0aGUgbG9j
ayAoYmVjYXVzZSBpdCB3YXMKKyAgICAgICAgIyBwYXNzZWQgYSB0b2tlbiksIHRoZW4gdW5sb2Nr
IHNob3VsZCBub3QgcGh5c2ljYWxseSByZWxlYXNlIGl0LgorICAgICAgICB0b2tlbiA9IHNlbGYu
bG9ja2FibGUubG9ja193cml0ZSgpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGlmIHRva2Vu
IGlzIE5vbmU6CisgICAgICAgICAgICAgICAgIyBUaGlzIHRlc3QgZG9lcyBub3QgYXBwbHksIGJl
Y2F1c2UgdGhpcyBsb2NrYWJsZSByZWZ1c2VzCisgICAgICAgICAgICAgICAgIyB0b2tlbnMuCisg
ICAgICAgICAgICAgICAgcmV0dXJuCisgICAgICAgICAgICBuZXdfbG9ja2FibGUgPSBzZWxmLmdl
dF9sb2NrYWJsZSgpCisgICAgICAgICAgICBuZXdfbG9ja2FibGUubG9ja193cml0ZSh0b2tlbj10
b2tlbikKKyAgICAgICAgICAgIG5ld19sb2NrYWJsZS51bmxvY2soKQorICAgICAgICAgICAgc2Vs
Zi5hc3NlcnRUcnVlKHNlbGYubG9ja2FibGUuZ2V0X3BoeXNpY2FsX2xvY2tfc3RhdHVzKCkpCisg
ICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICBzZWxmLmxvY2thYmxlLnVubG9jaygpCisKKyAg
ICBkZWYgdGVzdF9sb2NrX3dyaXRlX3dpdGhfdG9rZW5fZmFpbHNfd2hlbl91bmxvY2tlZChzZWxm
KToKKyAgICAgICAgIyBMb2NrIGFuZCB1bmxvY2sgdG8gZ2V0IGEgc3VwZXJmaWNpYWxseSB2YWxp
ZCB0b2tlbi4gIFRoaXMgbWltaWNzIGEKKyAgICAgICAgIyBsaWtlbHkgcHJvZ3JhbW1pbmcgZXJy
b3IsIHdoZXJlIGEgY2FsbGVyIGFjY2lkZW50YWxseSB0cmllcyB0byBsb2NrCisgICAgICAgICMg
d2l0aCBhIHRva2VuIHRoYXQgaXMgbm8gbG9uZ2VyIHZhbGlkIChiZWNhdXNlIHRoZSBvcmlnaW5h
bCBsb2NrIHdhcworICAgICAgICAjIHJlbGVhc2VkKS4KKyAgICAgICAgdG9rZW4gPSBzZWxmLmxv
Y2thYmxlLmxvY2tfd3JpdGUoKQorICAgICAgICBzZWxmLmxvY2thYmxlLnVubG9jaygpCisgICAg
ICAgIGlmIHRva2VuIGlzIE5vbmU6CisgICAgICAgICAgICAjIFRoaXMgdGVzdCBkb2VzIG5vdCBh
cHBseSwgYmVjYXVzZSB0aGlzIGxvY2thYmxlIHJlZnVzZXMKKyAgICAgICAgICAgICMgdG9rZW5z
LgorICAgICAgICAgICAgcmV0dXJuCisKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoZXJyb3Jz
LlRva2VuTWlzbWF0Y2gsCisgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYubG9ja2FibGUu
bG9ja193cml0ZSwgdG9rZW49dG9rZW4pCisKKyAgICBkZWYgdGVzdF9sb2NrX3dyaXRlX3JlZW50
ZXJfd2l0aF90b2tlbihzZWxmKToKKyAgICAgICAgdG9rZW4gPSBzZWxmLmxvY2thYmxlLmxvY2tf
d3JpdGUoKQorICAgICAgICB0cnk6CisgICAgICAgICAgICBpZiB0b2tlbiBpcyBOb25lOgorICAg
ICAgICAgICAgICAgICMgVGhpcyB0ZXN0IGRvZXMgbm90IGFwcGx5LCBiZWNhdXNlIHRoaXMgbG9j
a2FibGUgcmVmdXNlcworICAgICAgICAgICAgICAgICMgdG9rZW5zLgorICAgICAgICAgICAgICAg
IHJldHVybgorICAgICAgICAgICAgIyBSZWxvY2sgd2l0aCBhIHRva2VuLgorICAgICAgICAgICAg
dG9rZW5fZnJvbV9yZWVudHJ5ID0gc2VsZi5sb2NrYWJsZS5sb2NrX3dyaXRlKHRva2VuPXRva2Vu
KQorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodG9r
ZW4sIHRva2VuX2Zyb21fcmVlbnRyeSkKKyAgICAgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAg
ICAgICAgc2VsZi5sb2NrYWJsZS51bmxvY2soKQorICAgICAgICBmaW5hbGx5OgorICAgICAgICAg
ICAgc2VsZi5sb2NrYWJsZS51bmxvY2soKQorICAgICAgICAjIFRoZSBsb2NrIHNob3VsZCBiZSB1
bmxvY2tlZCBvbiBkaXNrLiAgVmVyaWZ5IHRoYXQgd2l0aCBhIG5ldyBsb2NrCisgICAgICAgICMg
aW5zdGFuY2UuCisgICAgICAgIG5ld19sb2NrYWJsZSA9IHNlbGYuZ2V0X2xvY2thYmxlKCkKKyAg
ICAgICAgIyBDYWxsaW5nIGxvY2tfd3JpdGUgbm93IHNob3VsZCB3b3JrLCByYXRoZXIgdGhhbiBy
YWlzZSBMb2NrQ29udGVudGlvbi4KKyAgICAgICAgbmV3X2xvY2thYmxlLmxvY2tfd3JpdGUoKQor
ICAgICAgICBuZXdfbG9ja2FibGUudW5sb2NrKCkKKworICAgIGRlZiB0ZXN0X3NlY29uZF9sb2Nr
X3dyaXRlX3JldHVybnNfc2FtZV90b2tlbihzZWxmKToKKyAgICAgICAgZmlyc3RfdG9rZW4gPSBz
ZWxmLmxvY2thYmxlLmxvY2tfd3JpdGUoKQorICAgICAgICB0cnk6CisgICAgICAgICAgICBpZiBm
aXJzdF90b2tlbiBpcyBOb25lOgorICAgICAgICAgICAgICAgICMgVGhpcyB0ZXN0IGRvZXMgbm90
IGFwcGx5LCBiZWNhdXNlIHRoaXMgbG9ja2FibGUgcmVmdXNlcworICAgICAgICAgICAgICAgICMg
dG9rZW5zLgorICAgICAgICAgICAgICAgIHJldHVybgorICAgICAgICAgICAgIyBSZWxvY2sgdGhl
IGFscmVhZHkgbG9ja2VkIGxvY2thYmxlLiAgSXQgc2hvdWxkIHJldHVybiB0aGUgc2FtZQorICAg
ICAgICAgICAgIyB0b2tlbi4KKyAgICAgICAgICAgIHNlY29uZF90b2tlbiA9IHNlbGYubG9ja2Fi
bGUubG9ja193cml0ZSgpCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbChmaXJzdF90b2tlbiwgc2Vjb25kX3Rva2VuKQorICAgICAgICAgICAgZmluYWxs
eToKKyAgICAgICAgICAgICAgICBzZWxmLmxvY2thYmxlLnVubG9jaygpCisgICAgICAgIGZpbmFs
bHk6CisgICAgICAgICAgICBzZWxmLmxvY2thYmxlLnVubG9jaygpCisKKyAgICBkZWYgdGVzdF9s
ZWF2ZV9pbl9wbGFjZShzZWxmKToKKyAgICAgICAgdG9rZW4gPSBzZWxmLmxvY2thYmxlLmxvY2tf
d3JpdGUoKQorICAgICAgICB0cnk6CisgICAgICAgICAgICBpZiB0b2tlbiBpcyBOb25lOgorICAg
ICAgICAgICAgICAgICMgVGhpcyB0ZXN0IGRvZXMgbm90IGFwcGx5LCBiZWNhdXNlIHRoaXMgbG9j
a2FibGUgcmVmdXNlcworICAgICAgICAgICAgICAgICMgdG9rZW5zLgorICAgICAgICAgICAgICAg
IHJldHVybgorICAgICAgICAgICAgc2VsZi5sb2NrYWJsZS5sZWF2ZV9pbl9wbGFjZSgpCisgICAg
ICAgIGZpbmFsbHk6CisgICAgICAgICAgICBzZWxmLmxvY2thYmxlLnVubG9jaygpCisgICAgICAg
ICMgQXQgdGhpcyBwb2ludCwgdGhlIGxvY2sgaXMgc3RpbGwgaW4gcGxhY2Ugb24gZGlzaworICAg
ICAgICBzZWxmLmFzc2VydFJhaXNlcyhlcnJvcnMuTG9ja0NvbnRlbnRpb24sIHNlbGYubG9ja2Fi
bGUubG9ja193cml0ZSkKKyAgICAgICAgIyBCdXQgc2hvdWxkIGJlIHJlbG9ja2FibGUgd2l0aCBh
IHRva2VuLgorICAgICAgICBzZWxmLmxvY2thYmxlLmxvY2tfd3JpdGUodG9rZW49dG9rZW4pCisg
ICAgICAgIHNlbGYubG9ja2FibGUudW5sb2NrKCkKKworICAgIGRlZiB0ZXN0X2RvbnRfbGVhdmVf
aW5fcGxhY2Uoc2VsZik6CisgICAgICAgIHRva2VuID0gc2VsZi5sb2NrYWJsZS5sb2NrX3dyaXRl
KCkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgaWYgdG9rZW4gaXMgTm9uZToKKyAgICAgICAg
ICAgICAgICAjIFRoaXMgdGVzdCBkb2VzIG5vdCBhcHBseSwgYmVjYXVzZSB0aGlzIGxvY2thYmxl
IHJlZnVzZXMKKyAgICAgICAgICAgICAgICAjIHRva2Vucy4KKyAgICAgICAgICAgICAgICByZXR1
cm4KKyAgICAgICAgICAgIHNlbGYubG9ja2FibGUubGVhdmVfaW5fcGxhY2UoKQorICAgICAgICBm
aW5hbGx5OgorICAgICAgICAgICAgc2VsZi5sb2NrYWJsZS51bmxvY2soKQorICAgICAgICAjIEF0
IHRoaXMgcG9pbnQsIHRoZSBsb2NrIGlzIHN0aWxsIGluIHBsYWNlIG9uIGRpc2suCisgICAgICAg
ICMgQWNxdWlyZSB0aGUgZXhpc3RpbmcgbG9jayB3aXRoIHRoZSB0b2tlbiwgYW5kIGFzayB0aGF0
IGl0IGlzIHJlbW92ZWQKKyAgICAgICAgIyB3aGVuIHRoaXMgb2JqZWN0IHVubG9ja3MsIGFuZCB1
bmxvY2sgdG8gdHJpZ2dlciB0aGF0IHJlbW92YWwuCisgICAgICAgIG5ld19sb2NrYWJsZSA9IHNl
bGYuZ2V0X2xvY2thYmxlKCkKKyAgICAgICAgbmV3X2xvY2thYmxlLmxvY2tfd3JpdGUodG9rZW49
dG9rZW4pCisgICAgICAgIG5ld19sb2NrYWJsZS5kb250X2xlYXZlX2luX3BsYWNlKCkKKyAgICAg
ICAgbmV3X2xvY2thYmxlLnVubG9jaygpCisgICAgICAgICMgQXQgdGhpcyBwb2ludCwgdGhlIGxv
Y2sgaXMgbm8gbG9uZ2VyIG9uIGRpc2ssIHNvIHdlIGNhbiBsb2NrIGl0LgorICAgICAgICB0aGly
ZF9sb2NrYWJsZSA9IHNlbGYuZ2V0X2xvY2thYmxlKCkKKyAgICAgICAgdGhpcmRfbG9ja2FibGUu
bG9ja193cml0ZSgpCisgICAgICAgIHRoaXJkX2xvY2thYmxlLnVubG9jaygpCisKIAogIyBUaGlz
IG1ldGhvZCBvZiBhZGFwdGluZyB0ZXN0cyB0byBwYXJhbWV0ZXJzIGlzIGRpZmZlcmVudCB0byAK
ICMgdGhlIFRlc3RQcm92aWRlckFkYXB0ZXJzIHVzZWQgZWxzZXdoZXJlLCBidXQgc2VlbXMgc2lt
cGxlciBmb3IgdGhpcyAKQEAgLTEzMyw3ICszMTUsNyBAQAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBfVGVzdExvY2thYmxlRmlsZXNfbWl4aW4pOgogCiAgICAgZGVmIHNl
dFVwKHNlbGYpOgotICAgICAgICBzdXBlcihUZXN0TG9ja2FibGVGaWxlc19UcmFuc3BvcnRMb2Nr
LCBzZWxmKS5zZXRVcCgpCisgICAgICAgIFRlc3RDYXNlSW5UZW1wRGlyLnNldFVwKHNlbGYpCiAg
ICAgICAgIHRyYW5zcG9ydCA9IGdldF90cmFuc3BvcnQoJy4nKQogICAgICAgICB0cmFuc3BvcnQu
bWtkaXIoJy5ienInKQogICAgICAgICBzZWxmLnN1Yl90cmFuc3BvcnQgPSB0cmFuc3BvcnQuY2xv
bmUoJy5ienInKQpAQCAtMTU1LDcgKzMzNyw3IEBACiAgICAgIiIiTG9ja2FibGVGaWxlIHRlc3Rz
IHJ1biB3aXRoIExvY2tEaXIgdW5kZXJuZWF0aCIiIgogCiAgICAgZGVmIHNldFVwKHNlbGYpOgot
ICAgICAgICBzdXBlcihUZXN0TG9ja2FibGVGaWxlc19Mb2NrRGlyLCBzZWxmKS5zZXRVcCgpCisg
ICAgICAgIFRlc3RDYXNlSW5UZW1wRGlyLnNldFVwKHNlbGYpCiAgICAgICAgIHNlbGYudHJhbnNw
b3J0ID0gZ2V0X3RyYW5zcG9ydCgnLicpCiAgICAgICAgIHNlbGYubG9ja2FibGUgPSBzZWxmLmdl
dF9sb2NrYWJsZSgpCiAgICAgICAgICMgdGhlIGxvY2sgY3JlYXRpb24gaGVyZSBzZXRzIG1vZGUg
LSB0ZXN0X3Blcm1pc3Npb25zIG9uIGJyYW5jaCAKQEAgLTE3OCwzICszNjAsMjYgQEAKIAogICAg
ICMgVE9ETzogVGVzdCB0aGUgbG9ja2RpciBpbmhlcml0cyB0aGUgcmlnaHQgZmlsZSBhbmQgZGly
ZWN0b3J5IHBlcm1pc3Npb25zCiAgICAgIyBmcm9tIHRoZSBMb2NrYWJsZUZpbGVzLgorICAgICAg
ICAKKworY2xhc3MgVGVzdExvY2thYmxlRmlsZXNfUmVtb3RlTG9ja0RpcihUZXN0Q2FzZVdpdGhT
bWFydE1lZGl1bSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9UZXN0TG9ja2FibGVG
aWxlc19taXhpbik6CisgICAgIiIiTG9ja2FibGVGaWxlIHRlc3RzIHJ1biB3aXRoIFJlbW90ZUxv
Y2tEaXIgb24gYSBicmFuY2guIiIiCisKKyAgICBkZWYgc2V0VXAoc2VsZik6CisgICAgICAgIFRl
c3RDYXNlV2l0aFNtYXJ0TWVkaXVtLnNldFVwKHNlbGYpCisgICAgICAgICMgY2FuIG9ubHkgZ2V0
IGEgUmVtb3RlTG9ja0RpciB3aXRoIHNvbWUgUmVtb3RlT2JqZWN0Li4uCisgICAgICAgICMgdXNl
IGEgYnJhbmNoIGFzIHRoYXRzIHdoYXQgd2Ugd2FudC4gVGhlc2UgbWl4aW4gdGVzdHMgdGVzdCB0
aGUgZW5kCisgICAgICAgICMgdG8gZW5kIGJlaGF2aW91ciwgc28gc3R1YmJpbmcgb3V0IHRoZSBi
YWNrZW5kIGFuZCBzaW11bGF0aW5nIHdvdWxkCisgICAgICAgICMgZGVmZWF0IHRoZSBwdXJwb3Nl
LiBXZSB0ZXN0IHRoZSBwcm90b2NvbCBpbXBsZW1lbnRhdGlvbiBzZXBhcmF0ZWx5CisgICAgICAg
ICMgaW4gdGVzdF9yZW1vdGUgYW5kIHRlc3Rfc21hcnQgYXMgdXN1YWwuCisgICAgICAgIGIgPSBz
ZWxmLm1ha2VfYnJhbmNoKCdmb28nKQorICAgICAgICBzZWxmLmFkZENsZWFudXAoYi5ienJkaXIu
dHJhbnNwb3J0LmRpc2Nvbm5lY3QpCisgICAgICAgIHNlbGYudHJhbnNwb3J0ID0gZ2V0X3RyYW5z
cG9ydCgnLicpCisgICAgICAgIHNlbGYubG9ja2FibGUgPSBzZWxmLmdldF9sb2NrYWJsZSgpCisK
KyAgICBkZWYgZ2V0X2xvY2thYmxlKHNlbGYpOgorICAgICAgICAjIGdldHRpbmcgYSBuZXcgbG9j
a2FibGUgaW52b2x2ZXMgb3BlbmluZyBhIG5ldyBpbnN0YW5jZSBvZiB0aGUgYnJhbmNoCisgICAg
ICAgIGJyYW5jaCA9IGJ6cmxpYi5icmFuY2guQnJhbmNoLm9wZW4oc2VsZi5nZXRfdXJsKCdmb28n
KSkKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKGJyYW5jaC5ienJkaXIudHJhbnNwb3J0LmRpc2Nv
bm5lY3QpCisgICAgICAgIHJldHVybiBicmFuY2guY29udHJvbF9maWxlcwoK

=== modified file bzrlib/tests/test_log.py // last-changed:john@arbash-meinel.c
... om-20070418223759-kek0qqqdv3wddcae // encoding:base64
LS0tIGJ6cmxpYi90ZXN0cy90ZXN0X2xvZy5weQorKysgYnpybGliL3Rlc3RzL3Rlc3RfbG9nLnB5
CkBAIC0xLDYgKzEsNCBAQAotIyBDb3B5cmlnaHQgKEMpIDIwMDUgQ2Fub25pY2FsIEx0ZAotIyAt
Ki0gY29kaW5nOiB1dGYtOCAtKi0KLSMgdmltOiBlbmNvZGluZz11dGYtOAorIyBDb3B5cmlnaHQg
KEMpIDIwMDUsIDIwMDYsIDIwMDcgQ2Fub25pY2FsIEx0ZAogIwogIyBUaGlzIHByb2dyYW0gaXMg
ZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQogIyBp
dCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1
Ymxpc2hlZCBieQpAQCAtMTksNiArMTcsNyBAQAogaW1wb3J0IG9zCiBmcm9tIGNTdHJpbmdJTyBp
bXBvcnQgU3RyaW5nSU8KIAorZnJvbSBienJsaWIgaW1wb3J0IGxvZwogZnJvbSBienJsaWIudGVz
dHMgaW1wb3J0IEJ6clRlc3RCYXNlLCBUZXN0Q2FzZVdpdGhUcmFuc3BvcnQKIGZyb20gYnpybGli
LmxvZyBpbXBvcnQgKHNob3dfbG9nLCAKICAgICAgICAgICAgICAgICAgICAgICAgIGdldF92aWV3
X3JldmlzaW9ucywgCkBAIC00MDAsMyArMzk5LDEzNSBAQAogICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKFsoJzEnLCAnMScsIDApLCAoJzInLCAnMicsIDApLCAoJzNjJywgJzMnLCAwKSwKICAgICAg
ICAgICAgICgnNGInLCAnNCcsIDApXSwKICAgICAgICAgICAgIHJldmlzaW9ucykKKworCitjbGFz
cyBUZXN0R2V0UmV2aXNpb25zVG91Y2hpbmdGaWxlSUQoVGVzdENhc2VXaXRoVHJhbnNwb3J0KToK
KworICAgIGRlZiBjcmVhdGVfdHJlZV93aXRoX3NpbmdsZV9tZXJnZShzZWxmKToKKyAgICAgICAg
IiIiQ3JlYXRlIGEgYnJhbmNoIHdpdGggYSBtb2RlcmF0ZSBsYXlvdXQuCisKKyAgICAgICAgVGhl
IHJldmlzaW9uIGdyYXBoIGxvb2tzIGxpa2U6CisKKyAgICAgICAgICAgQQorICAgICAgICAgICB8
XAorICAgICAgICAgICBCIEMKKyAgICAgICAgICAgfC8KKyAgICAgICAgICAgRAorCisgICAgICAg
IEluIHRoaXMgZ3JhcGgsIEEgaW50cm9kdWNlZCBmaWxlcyBmMSBhbmQgZjIgYW5kIGYzLgorICAg
ICAgICBCIG1vZGlmaWVzIGYxIGFuZCBmMywgYW5kIEMgbW9kaWZpZXMgZjIgYW5kIGYzLgorICAg
ICAgICBEIG1lcmdlcyB0aGUgY2hhbmdlcyBmcm9tIEIgYW5kIEMgYW5kIHJlc29sdmVzIHRoZSBj
b25mbGljdCBmb3IgZjMuCisgICAgICAgICIiIgorICAgICAgICAjIFRPRE86IGphbSAyMDA3MDIx
OCBUaGlzIHNlZW1zIGxpa2UgaXQgY291bGQgcmVhbGx5IGJlIGRvbmUKKyAgICAgICAgIyAgICAg
ICB3aXRoIG1ha2VfYnJhbmNoX2FuZF9tZW1vcnlfdHJlZSgpIGlmIHdlIGNvdWxkIGp1c3QKKyAg
ICAgICAgIyAgICAgICBjcmVhdGUgdGhlIGNvbnRlbnQgb2YgdGhvc2UgZmlsZXMuCisgICAgICAg
ICMgVE9ETzogamFtIDIwMDcwMjE4IEFub3RoZXIgYWx0ZXJuYXRpdmUgaXMgdGhhdCB3ZSB3b3Vs
ZCByZWFsbHkKKyAgICAgICAgIyAgICAgICBsaWtlIHRvIG9ubHkgY3JlYXRlIHRoaXMgdHJlZSAx
IHRpbWUgZm9yIGFsbCB0ZXN0cyB0aGF0CisgICAgICAgICMgICAgICAgdXNlIGl0LiBTaW5jZSAn
bG9nJyBvbmx5IHVzZXMgdGhlIHRyZWUgaW4gYSByZWFkb25seQorICAgICAgICAjICAgICAgIGZh
c2hpb24sIGl0IHNlZW1zIGEgc2hhbWUgdG8gcmVnZW5lcmF0ZSBhbiBpZGVudGljYWwKKyAgICAg
ICAgIyAgICAgICB0cmVlIGZvciBlYWNoIHRlc3QuCisgICAgICAgIHRyZWUgPSBzZWxmLm1ha2Vf
YnJhbmNoX2FuZF90cmVlKCd0cmVlJykKKyAgICAgICAgdHJlZS5sb2NrX3dyaXRlKCkKKyAgICAg
ICAgc2VsZi5hZGRDbGVhbnVwKHRyZWUudW5sb2NrKQorCisgICAgICAgIHNlbGYuYnVpbGRfdHJl
ZV9jb250ZW50cyhbKCd0cmVlL2YxJywgJ0FcbicpLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICgndHJlZS9mMicsICdBXG4nKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAoJ3RyZWUvZjMnLCAnQVxuJyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBdKQorICAgICAgICB0cmVlLmFkZChbJ2YxJywgJ2YyJywgJ2YzJ10sIFsnZjEtaWQnLCAn
ZjItaWQnLCAnZjMtaWQnXSkKKyAgICAgICAgdHJlZS5jb21taXQoJ0EnLCByZXZfaWQ9J0EnKQor
CisgICAgICAgIHNlbGYuYnVpbGRfdHJlZV9jb250ZW50cyhbKCd0cmVlL2YyJywgJ0FcbkNcbicp
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgndHJlZS9mMycsICdBXG5DXG4n
KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pCisgICAgICAgIHRyZWUuY29t
bWl0KCdDJywgcmV2X2lkPSdDJykKKyAgICAgICAgIyBSZXZlcnQgYmFjayB0byBBIHRvIGJ1aWxk
IHRoZSBvdGhlciBoaXN0b3J5LgorICAgICAgICB0cmVlLnNldF9sYXN0X3JldmlzaW9uKCdBJykK
KyAgICAgICAgdHJlZS5icmFuY2guc2V0X2xhc3RfcmV2aXNpb25faW5mbygxLCAnQScpCisgICAg
ICAgIHNlbGYuYnVpbGRfdHJlZV9jb250ZW50cyhbKCd0cmVlL2YxJywgJ0FcbkJcbicpLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgndHJlZS9mMicsICdBXG4nKSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoJ3RyZWUvZjMnLCAnQVxuQlxuJyksCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKQorICAgICAgICB0cmVlLmNvbW1pdCgnQics
IHJldl9pZD0nQicpCisgICAgICAgIHRyZWUuc2V0X3BhcmVudF9pZHMoWydCJywgJ0MnXSkKKyAg
ICAgICAgc2VsZi5idWlsZF90cmVlX2NvbnRlbnRzKFsoJ3RyZWUvZjEnLCAnQVxuQlxuJyksCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCd0cmVlL2YyJywgJ0FcbkNcbicpLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgndHJlZS9mMycsICdBXG5CXG5DXG4n
KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pCisgICAgICAgIHRyZWUuY29t
bWl0KCdEJywgcmV2X2lkPSdEJykKKworICAgICAgICAjIFN3aXRjaCB0byBhIHJlYWQgbG9jayBm
b3IgdGhpcyB0cmVlLgorICAgICAgICAjIFdlIHN0aWxsIGhhdmUgYWRkQ2xlYW51cCh1bmxvY2sp
CisgICAgICAgIHRyZWUudW5sb2NrKCkKKyAgICAgICAgdHJlZS5sb2NrX3JlYWQoKQorICAgICAg
ICByZXR1cm4gdHJlZQorCisgICAgZGVmIHRlc3RfdHJlZV93aXRoX3NpbmdsZV9tZXJnZShzZWxm
KToKKyAgICAgICAgIiIiTWFrZSBzdXJlIHRoZSB0cmVlIGxheW91dCBpcyBjb3JyZWN0LiIiIgor
ICAgICAgICB0cmVlID0gc2VsZi5jcmVhdGVfdHJlZV93aXRoX3NpbmdsZV9tZXJnZSgpCisgICAg
ICAgIHJldl9BX3RyZWUgPSB0cmVlLmJyYW5jaC5yZXBvc2l0b3J5LnJldmlzaW9uX3RyZWUoJ0En
KQorICAgICAgICByZXZfQl90cmVlID0gdHJlZS5icmFuY2gucmVwb3NpdG9yeS5yZXZpc2lvbl90
cmVlKCdCJykKKworICAgICAgICBmMV9jaGFuZ2VkID0gKHUnZjEnLCAnZjEtaWQnLCAnZmlsZScs
IFRydWUsIEZhbHNlKQorICAgICAgICBmMl9jaGFuZ2VkID0gKHUnZjInLCAnZjItaWQnLCAnZmls
ZScsIFRydWUsIEZhbHNlKQorICAgICAgICBmM19jaGFuZ2VkID0gKHUnZjMnLCAnZjMtaWQnLCAn
ZmlsZScsIFRydWUsIEZhbHNlKQorCisgICAgICAgIGRlbHRhID0gcmV2X0JfdHJlZS5jaGFuZ2Vz
X2Zyb20ocmV2X0FfdHJlZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChbZjFfY2hhbmdlZCwg
ZjNfY2hhbmdlZF0sIGRlbHRhLm1vZGlmaWVkKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFtd
LCBkZWx0YS5yZW5hbWVkKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFtdLCBkZWx0YS5hZGRl
ZCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChbXSwgZGVsdGEucmVtb3ZlZCkKKworICAgICAg
ICByZXZfQ190cmVlID0gdHJlZS5icmFuY2gucmVwb3NpdG9yeS5yZXZpc2lvbl90cmVlKCdDJykK
KyAgICAgICAgZGVsdGEgPSByZXZfQ190cmVlLmNoYW5nZXNfZnJvbShyZXZfQV90cmVlKQorICAg
ICAgICBzZWxmLmFzc2VydEVxdWFsKFtmMl9jaGFuZ2VkLCBmM19jaGFuZ2VkXSwgZGVsdGEubW9k
aWZpZWQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoW10sIGRlbHRhLnJlbmFtZWQpCisgICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwoW10sIGRlbHRhLmFkZGVkKQorICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKFtdLCBkZWx0YS5yZW1vdmVkKQorCisgICAgICAgIHJldl9EX3RyZWUgPSB0cmVlLmJy
YW5jaC5yZXBvc2l0b3J5LnJldmlzaW9uX3RyZWUoJ0QnKQorICAgICAgICBkZWx0YSA9IHJldl9E
X3RyZWUuY2hhbmdlc19mcm9tKHJldl9CX3RyZWUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
W2YyX2NoYW5nZWQsIGYzX2NoYW5nZWRdLCBkZWx0YS5tb2RpZmllZCkKKyAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbChbXSwgZGVsdGEucmVuYW1lZCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChb
XSwgZGVsdGEuYWRkZWQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoW10sIGRlbHRhLnJlbW92
ZWQpCisKKyAgICAgICAgZGVsdGEgPSByZXZfRF90cmVlLmNoYW5nZXNfZnJvbShyZXZfQ190cmVl
KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFtmMV9jaGFuZ2VkLCBmM19jaGFuZ2VkXSwgZGVs
dGEubW9kaWZpZWQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoW10sIGRlbHRhLnJlbmFtZWQp
CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoW10sIGRlbHRhLmFkZGVkKQorICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKFtdLCBkZWx0YS5yZW1vdmVkKQorCisgICAgZGVmIGFzc2VydEFsbFJldmlz
aW9uc0ZvckZpbGVJRChzZWxmLCB0cmVlLCBmaWxlX2lkLCByZXZpc2lvbnMpOgorICAgICAgICAi
IiJNYWtlIHN1cmUgX2dldF9yZXZpc2lvbnNfdG91Y2hpbmdfZmlsZV9pZCByZXR1cm5zIHRoZSBy
aWdodCB2YWx1ZXMuCisKKyAgICAgICAgR2V0IHRoZSByZXR1cm4gdmFsdWUgZnJvbSBfZ2V0X3Jl
dmlzaW9uc190b3VjaGluZ19maWxlX2lkIGFuZCBtYWtlCisgICAgICAgIHN1cmUgdGhleSBhcmUg
Y29ycmVjdC4KKyAgICAgICAgIiIiCisgICAgICAgICMgVGhlIGFwaSBmb3IgX2dldF9yZXZpc2lv
bnNfdG91Y2hpbmdfZmlsZV9pZCBpcyBhIGxpdHRsZSBjcmF6eSwKKyAgICAgICAgIyBTbyB3ZSBk
byB0aGUgc2V0dXAgaGVyZS4KKyAgICAgICAgbWFpbmxpbmUgPSB0cmVlLmJyYW5jaC5yZXZpc2lv
bl9oaXN0b3J5KCkKKyAgICAgICAgbWFpbmxpbmUuaW5zZXJ0KDAsIE5vbmUpCisgICAgICAgIHJl
dm5vcyA9IGRpY3QoKHJldiwgaWR4KzEpIGZvciBpZHgsIHJldiBpbiBlbnVtZXJhdGUobWFpbmxp
bmUpKQorICAgICAgICB2aWV3X3JldnNfaXRlciA9IGxvZy5nZXRfdmlld19yZXZpc2lvbnMobWFp
bmxpbmUsIHJldm5vcywgdHJlZS5icmFuY2gsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAncmV2ZXJzZScsIFRydWUpCisgICAgICAgIGFjdHVhbF9yZXZz
ID0gbG9nLl9nZXRfcmV2aXNpb25zX3RvdWNoaW5nX2ZpbGVfaWQodHJlZS5icmFuY2gsIGZpbGVf
aWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgbWFpbmxpbmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgdmlld19yZXZzX2l0ZXIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwocmV2aXNpb25zLCBbciBmb3IgciwgcmV2bm8sIGRlcHRoIGluIGFjdHVhbF9yZXZzXSkKKwor
ICAgIGRlZiB0ZXN0X2ZpbGVfaWRfZjEoc2VsZik6CisgICAgICAgIHRyZWUgPSBzZWxmLmNyZWF0
ZV90cmVlX3dpdGhfc2luZ2xlX21lcmdlKCkKKyAgICAgICAgIyBmMSBzaG91bGQgYmUgbWFya2Vk
IGFzIG1vZGlmaWVkIGJ5IHJldmlzaW9ucyBBIGFuZCBCCisgICAgICAgIHNlbGYuYXNzZXJ0QWxs
UmV2aXNpb25zRm9yRmlsZUlEKHRyZWUsICdmMS1pZCcsIFsnQicsICdBJ10pCisKKyAgICBkZWYg
dGVzdF9maWxlX2lkX2YyKHNlbGYpOgorICAgICAgICB0cmVlID0gc2VsZi5jcmVhdGVfdHJlZV93
aXRoX3NpbmdsZV9tZXJnZSgpCisgICAgICAgICMgZjIgc2hvdWxkIGJlIG1hcmtlZCBhcyBtb2Rp
ZmllZCBieSByZXZpc2lvbnMgQSwgQywgYW5kIEQKKyAgICAgICAgIyBiZWNhdXNlIEQgbWVyZ2Vk
IHRoZSBjaGFuZ2VzIGZyb20gQy4KKyAgICAgICAgc2VsZi5hc3NlcnRBbGxSZXZpc2lvbnNGb3JG
aWxlSUQodHJlZSwgJ2YyLWlkJywgWydEJywgJ0MnLCAnQSddKQorCisgICAgZGVmIHRlc3RfZmls
ZV9pZF9mMyhzZWxmKToKKyAgICAgICAgdHJlZSA9IHNlbGYuY3JlYXRlX3RyZWVfd2l0aF9zaW5n
bGVfbWVyZ2UoKQorICAgICAgICAjIGYzIHNob3VsZCBiZSBtYXJrZWQgYXMgbW9kaWZpZWQgYnkg
cmV2aXNpb25zIEEsIEIsIEMsIGFuZCBECisgICAgICAgIHNlbGYuYXNzZXJ0QWxsUmV2aXNpb25z
Rm9yRmlsZUlEKHRyZWUsICdmMi1pZCcsIFsnRCcsICdDJywgJ0EnXSkKCg==

=== modified file bzrlib/tests/test_merge_directive.py // last-changed:mbp@sour
... cefrog.net-20070419071716-tcuv5i38vhci6fuf // encoding:base64
LS0tIGJ6cmxpYi90ZXN0cy90ZXN0X21lcmdlX2RpcmVjdGl2ZS5weQorKysgYnpybGliL3Rlc3Rz
L3Rlc3RfbWVyZ2VfZGlyZWN0aXZlLnB5CkBAIC02OCw4ICs2OCw4IEBACiBjbGFzcyBUZXN0TWVy
Z2VEaXJlY3RpdmUodGVzdHMuVGVzdENhc2UpOgogCiAgICAgZGVmIHRlc3RfbWVyZ2Vfc291cmNl
KHNlbGYpOgotICAgICAgICB0aW1lID0gNTAwLjAKLSAgICAgICAgdGltZXpvbmUgPSA1CisgICAg
ICAgIHRpbWUgPSA1MDAwMDAuMAorICAgICAgICB0aW1lem9uZSA9IDUgKiAzNjAwCiAgICAgICAg
IHNlbGYuYXNzZXJ0UmFpc2VzKGVycm9ycy5Ob01lcmdlU291cmNlLCBtZXJnZV9kaXJlY3RpdmUu
TWVyZ2VEaXJlY3RpdmUsCiAgICAgICAgICAgICAnZXhhbXBsZTonLCAnc2hhJywgdGltZSwgdGlt
ZXpvbmUsICdodHRwOi8vZXhhbXBsZS5jb20nKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhl
cnJvcnMuTm9NZXJnZVNvdXJjZSwgbWVyZ2VfZGlyZWN0aXZlLk1lcmdlRGlyZWN0aXZlLApAQCAt
ODcsNyArODcsNyBAQAogCiAgICAgZGVmIHRlc3RfcmVxdWlyZV9wYXRjaChzZWxmKToKICAgICAg
ICAgdGltZSA9IDUwMC4wCi0gICAgICAgIHRpbWV6b25lID0gNQorICAgICAgICB0aW1lem9uZSA9
IDEyMAogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhlcnJvcnMuUGF0Y2hNaXNzaW5nLCBtZXJn
ZV9kaXJlY3RpdmUuTWVyZ2VEaXJlY3RpdmUsCiAgICAgICAgICAgICAnZXhhbXBsZTonLCAnc2hh
JywgdGltZSwgdGltZXpvbmUsICdodHRwOi8vZXhhbXBsZS5jb20nLAogICAgICAgICAgICAgcGF0
Y2hfdHlwZT0nYnVuZGxlJykKQEAgLTk3LDggKzk3LDggQEAKICAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbChtZC5wYXRjaCwgJycpCiAKICAgICBkZWYgdGVzdF9zZXJpYWxpemF0aW9uKHNlbGYpOgot
ICAgICAgICB0aW1lID0gNTAxCi0gICAgICAgIHRpbWV6b25lID0gNzIKKyAgICAgICAgdGltZSA9
IDQ1MworICAgICAgICB0aW1lem9uZSA9IDEyMAogICAgICAgICBtZCA9IG1lcmdlX2RpcmVjdGl2
ZS5NZXJnZURpcmVjdGl2ZSgnZXhhbXBsZTonLCAnc2hhJywgdGltZSwgdGltZXpvbmUsCiAgICAg
ICAgICAgICAnaHR0cDovL2V4YW1wbGUuY29tJywgcGF0Y2g9J2Jvb2dhJywgcGF0Y2hfdHlwZT0n
YnVuZGxlJykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbERpZmYoT1VUUFVUMSwgJycuam9pbiht
ZC50b19saW5lcygpKSkKQEAgLTEwOCw2ICsxMDgsNyBAQAogICAgICAgICBzZWxmLmFzc2VydEVx
dWFsRGlmZihPVVRQVVQyLCAnJy5qb2luKG1kLnRvX2xpbmVzKCkpKQogCiAgICAgZGVmIHRlc3Rf
ZGVzZXJpYWxpemVfanVuayhzZWxmKToKKyAgICAgICAgdGltZSA9IDUwMQogICAgICAgICBzZWxm
LmFzc2VydFJhaXNlcyhlcnJvcnMuTm90QU1lcmdlRGlyZWN0aXZlLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICBtZXJnZV9kaXJlY3RpdmUuTWVyZ2VEaXJlY3RpdmUuZnJvbV9saW5lcywgJ2xh
bGEnKQogCkBAIC0xMjEsMTUgKzEyMiwxNSBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdz
aGEnLCBtZC50ZXN0YW1lbnRfc2hhMSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnaHR0cDov
L2V4YW1wbGUuY29tJywgbWQudGFyZ2V0X2JyYW5jaCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bCgnaHR0cDovL2V4YW1wbGUub3JnJywgbWQuc291cmNlX2JyYW5jaCkKLSAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbCg1MDEsIG1kLnRpbWUpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoNzIsIG1k
LnRpbWV6b25lKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDQ1MywgbWQudGltZSkKKyAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbCgxMjAsIG1kLnRpbWV6b25lKQogICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKCdib29nYScsIG1kLnBhdGNoKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdkaWZm
JywgbWQucGF0Y2hfdHlwZSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnSGkgbW9tIScsIG1k
Lm1lc3NhZ2UpCiAKICAgICBkZWYgdGVzdF9yb3VuZHRyaXAoc2VsZik6Ci0gICAgICAgIHRpbWUg
PSA1MDEKLSAgICAgICAgdGltZXpvbmUgPSA3MgorICAgICAgICB0aW1lID0gNTAwMDAwCisgICAg
ICAgIHRpbWV6b25lID0gNy41ICogMzYwMAogICAgICAgICBtZCA9IG1lcmdlX2RpcmVjdGl2ZS5N
ZXJnZURpcmVjdGl2ZSgnZXhhbXBsZTonLCAnc2hhJywgdGltZSwgdGltZXpvbmUsCiAgICAgICAg
ICAgICAnaHR0cDovL2V4YW1wbGUuY29tJywgc291cmNlX2JyYW5jaD0iaHR0cDovL2V4YW1wbGUu
b3JnIiwKICAgICAgICAgICAgIHBhdGNoPSdib29nYScsIHBhdGNoX3R5cGU9J2RpZmYnKQpAQCAt
MjA0LDcgKzIwNSw3IEBACiAgICAgZGVmIHRlc3RfZ2VuZXJhdGVfcGF0Y2goc2VsZik6CiAgICAg
ICAgIHRyZWVfYSwgdHJlZV9iLCBicmFuY2hfYyA9IHNlbGYubWFrZV90cmVlcygpCiAgICAgICAg
IG1kMiA9IG1lcmdlX2RpcmVjdGl2ZS5NZXJnZURpcmVjdGl2ZS5mcm9tX29iamVjdHMoCi0gICAg
ICAgICAgICB0cmVlX2EuYnJhbmNoLnJlcG9zaXRvcnksICdyZXYyYScsIDUwMCwgMTQ0LCB0cmVl
X2IuYnJhbmNoLmJhc2UsCisgICAgICAgICAgICB0cmVlX2EuYnJhbmNoLnJlcG9zaXRvcnksICdy
ZXYyYScsIDUwMCwgMTIwLCB0cmVlX2IuYnJhbmNoLmJhc2UsCiAgICAgICAgICAgICBwYXRjaF90
eXBlPSdkaWZmJywgcHVibGljX2JyYW5jaD10cmVlX2EuYnJhbmNoLmJhc2UpCiAgICAgICAgIHNl
bGYuYXNzZXJ0Tm90Q29udGFpbnNSZShtZDIucGF0Y2gsICdCYXphYXIgcmV2aXNpb24gYnVuZGxl
JykKICAgICAgICAgc2VsZi5hc3NlcnRDb250YWluc1JlKG1kMi5wYXRjaCwgJ1xcK2NvbnRlbnRf
YycpCkBAIC0yNDYsNyArMjQ3LDcgQEAKICAgICBkZWYgdGVzdF9tZXNzYWdlKHNlbGYpOgogICAg
ICAgICB0cmVlX2EsIHRyZWVfYiwgYnJhbmNoX2MgPSBzZWxmLm1ha2VfdHJlZXMoKQogICAgICAg
ICBtZDMgPSBtZXJnZV9kaXJlY3RpdmUuTWVyZ2VEaXJlY3RpdmUuZnJvbV9vYmplY3RzKAotICAg
ICAgICAgICAgdHJlZV9hLmJyYW5jaC5yZXBvc2l0b3J5LCAncmV2MmEnLCA1MDAsIDE0NCwgdHJl
ZV9iLmJyYW5jaC5iYXNlLAorICAgICAgICAgICAgdHJlZV9hLmJyYW5jaC5yZXBvc2l0b3J5LCAn
cmV2MmEnLCA1MDAsIDEyMCwgdHJlZV9iLmJyYW5jaC5iYXNlLAogICAgICAgICAgICAgcGF0Y2hf
dHlwZT1Ob25lLCBwdWJsaWNfYnJhbmNoPWJyYW5jaF9jLmJhc2UsCiAgICAgICAgICAgICBtZXNz
YWdlPSdNZXJnZSBtZXNzYWdlJykKICAgICAgICAgbWQzLnRvX2xpbmVzKCkKQEAgLTI1Niw3ICsy
NTcsNyBAQAogICAgIGRlZiB0ZXN0X2dlbmVyYXRlX2J1bmRsZShzZWxmKToKICAgICAgICAgdHJl
ZV9hLCB0cmVlX2IsIGJyYW5jaF9jID0gc2VsZi5tYWtlX3RyZWVzKCkKICAgICAgICAgbWQxID0g
bWVyZ2VfZGlyZWN0aXZlLk1lcmdlRGlyZWN0aXZlLmZyb21fb2JqZWN0cygKLSAgICAgICAgICAg
IHRyZWVfYS5icmFuY2gucmVwb3NpdG9yeSwgJ3JldjJhJywgNTAwLCAxNDQsIHRyZWVfYi5icmFu
Y2guYmFzZSwKKyAgICAgICAgICAgIHRyZWVfYS5icmFuY2gucmVwb3NpdG9yeSwgJ3JldjJhJywg
NTAwLCAxMjAsIHRyZWVfYi5icmFuY2guYmFzZSwKICAgICAgICAgICAgIHB1YmxpY19icmFuY2g9
YnJhbmNoX2MuYmFzZSkKICAgICAgICAgc2VsZi5hc3NlcnRDb250YWluc1JlKG1kMS5wYXRjaCwg
J0JhemFhciByZXZpc2lvbiBidW5kbGUnKQogICAgICAgICBzZWxmLmFzc2VydENvbnRhaW5zUmUo
bWQxLnBhdGNoLCAnXFwrY29udGVudF9jJykKQEAgLTI2NSw4ICsyNjYsOCBAQAogICAgICAgICBz
ZWxmLmFzc2VydE5vdENvbnRhaW5zUmUobWQxLnBhdGNoLCAnXFwrY29udGVudF9hJykKIAogICAg
IGRlZiB0ZXN0X3NpZ25pbmcoc2VsZik6Ci0gICAgICAgIHRpbWUgPSA1MDEKLSAgICAgICAgdGlt
ZXpvbmUgPSA3MgorICAgICAgICB0aW1lID0gNDUzCisgICAgICAgIHRpbWV6b25lID0gNzIwMAog
ICAgICAgICBjbGFzcyBGYWtlQnJhbmNoKG9iamVjdCk6CiAgICAgICAgICAgICBkZWYgZ2V0X2Nv
bmZpZyhzZWxmKToKICAgICAgICAgICAgICAgICByZXR1cm4gc2VsZgpAQCAtMjg4LDcgKzI4OSw3
IEBACiAgICAgZGVmIHRlc3RfZW1haWwoc2VsZik6CiAgICAgICAgIHRyZWVfYSwgdHJlZV9iLCBi
cmFuY2hfYyA9IHNlbGYubWFrZV90cmVlcygpCiAgICAgICAgIG1kID0gbWVyZ2VfZGlyZWN0aXZl
Lk1lcmdlRGlyZWN0aXZlLmZyb21fb2JqZWN0cygKLSAgICAgICAgICAgIHRyZWVfYS5icmFuY2gu
cmVwb3NpdG9yeSwgJ3JldjJhJywgNTAwLCAzNiwgdHJlZV9iLmJyYW5jaC5iYXNlLAorICAgICAg
ICAgICAgdHJlZV9hLmJyYW5jaC5yZXBvc2l0b3J5LCAncmV2MmEnLCA0NzYsIDYwLCB0cmVlX2Iu
YnJhbmNoLmJhc2UsCiAgICAgICAgICAgICBwYXRjaF90eXBlPU5vbmUsIHB1YmxpY19icmFuY2g9
dHJlZV9hLmJyYW5jaC5iYXNlKQogICAgICAgICBtZXNzYWdlID0gbWQudG9fZW1haWwoJ3BxbUBl
eGFtcGxlLmNvbScsIHRyZWVfYS5icmFuY2gpCiAgICAgICAgIHNlbGYuYXNzZXJ0Q29udGFpbnNS
ZShtZXNzYWdlLmFzX3N0cmluZygpLCBFTUFJTDEpCgo=

=== modified file bzrlib/tests/test_msgeditor.py // last-changed:bialix@ukr.net
... -20070501090918-km46cslj820tiyzl // encoding:base64
LS0tIGJ6cmxpYi90ZXN0cy90ZXN0X21zZ2VkaXRvci5weQorKysgYnpybGliL3Rlc3RzL3Rlc3Rf
bXNnZWRpdG9yLnB5CkBAIC0xODcsMyArMTg3LDI2IEBACiAgICAgICAgICAgICAgICAgZGVsIG9z
LmVudmlyb25bJ0VESVRPUiddCiAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgIG9z
LmVudmlyb25bJ0VESVRPUiddID0gZWRpdG9yCisKKyAgICBkZWYgdGVzdF9fY3JlYXRlX3RlbXBf
ZmlsZV93aXRoX2NvbW1pdF90ZW1wbGF0ZShzZWxmKToKKyAgICAgICAgIyBjaGVjayB0aGF0IGNv
bW1pdCB0ZW1wbGF0ZSB3cml0dGVuIHByb3Blcmx5CisgICAgICAgICMgYW5kIGhhcyBwbGF0Zm9y
bSBuYXRpdmUgbGluZS1lbmRpbmdzIChDUkxGIG9uIHdpbjMyKQorICAgICAgICBjcmVhdGVfZmls
ZSA9IGJ6cmxpYi5tc2dlZGl0b3IuX2NyZWF0ZV90ZW1wX2ZpbGVfd2l0aF9jb21taXRfdGVtcGxh
dGUKKyAgICAgICAgbXNnZmlsZW5hbWUsIGhhc2luZm8gPSBjcmVhdGVfZmlsZSgnaW5mb3RleHQn
LCctLS0tJywnc3RhcnQgbWVzc2FnZScpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwoTm9u
ZSwgbXNnZmlsZW5hbWUpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShoYXNpbmZvKQorICAgICAg
ICBleHBlY3RlZCA9IG9zLmxpbmVzZXAuam9pbihbJ3N0YXJ0IG1lc3NhZ2UnLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgJycsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAnJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICctLS0t
JywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcnLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgJ2luZm90ZXh0J10pCisgICAgICAgIHNlbGYuYXNzZXJ0
RmlsZUVxdWFsKGV4cGVjdGVkLCBtc2dmaWxlbmFtZSkKKworICAgIGRlZiB0ZXN0X19jcmVhdGVf
dGVtcF9maWxlX3dpdGhfZW1wdHlfY29tbWl0X3RlbXBsYXRlKHNlbGYpOgorICAgICAgICAjIGVt
cHR5IGZpbGUKKyAgICAgICAgY3JlYXRlX2ZpbGUgPSBienJsaWIubXNnZWRpdG9yLl9jcmVhdGVf
dGVtcF9maWxlX3dpdGhfY29tbWl0X3RlbXBsYXRlCisgICAgICAgIG1zZ2ZpbGVuYW1lLCBoYXNp
bmZvID0gY3JlYXRlX2ZpbGUoJycpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwoTm9uZSwg
bXNnZmlsZW5hbWUpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoaGFzaW5mbykKKyAgICAgICAg
c2VsZi5hc3NlcnRGaWxlRXF1YWwoJycsIG1zZ2ZpbGVuYW1lKQoK

=== modified file bzrlib/tests/test_options.py // last-changed:jml@canonical.co
... m-20070417075942-1vfzpwjf8rvbty1f // encoding:base64
LS0tIGJ6cmxpYi90ZXN0cy90ZXN0X29wdGlvbnMucHkKKysrIGJ6cmxpYi90ZXN0cy90ZXN0X29w
dGlvbnMucHkKQEAgLTI3LDEwICsyNywxMiBAQAogZnJvbSBienJsaWIudGVzdHMgaW1wb3J0IFRl
c3RDYXNlCiBmcm9tIGJ6cmxpYi5yZXBvZm10IGltcG9ydCBrbml0cmVwbwogCisKIGRlZiBwYXJz
ZShvcHRpb25zLCBhcmdzKToKICAgICBwYXJzZXIgPSBvcHRpb24uZ2V0X29wdHBhcnNlcihkaWN0
KChvLm5hbWUsIG8pIGZvciBvIGluIG9wdGlvbnMpKQogICAgIHJldHVybiBwYXJzZXIucGFyc2Vf
YXJncyhhcmdzKQogCisKIGNsYXNzIE9wdGlvblRlc3RzKFRlc3RDYXNlKToKICAgICAiIiJDb21t
YW5kLWxpbmUgb3B0aW9uIHRlc3RzIiIiCiAKQEAgLTM4LDE2ICs0MCwxNCBAQAogICAgICAgICAi
IiJPcHRpb24gcGFyc2VyIiIiCiAgICAgICAgIGVxID0gc2VsZi5hc3NlcnRFcXVhbHMKICAgICAg
ICAgZXEocGFyc2VfYXJncyhjbWRfY29tbWl0KCksIFsnLS1oZWxwJ10pLAotICAgICAgICAgICAo
W10sIHsnaGVscCc6IFRydWV9KSkKKyAgICAgICAgICAgKFtdLCB7J2ZpeGVzJzogW10sICdoZWxw
JzogVHJ1ZX0pKQogICAgICAgICBlcShwYXJzZV9hcmdzKGNtZF9jb21taXQoKSwgWyctLW1lc3Nh
Z2U9Yml0ZXInXSksCi0gICAgICAgICAgIChbXSwgeydtZXNzYWdlJzogJ2JpdGVyJ30pKQotICAg
ICAgICAjIyBlcShwYXJzZV9hcmdzKGNtZF9sb2coKSwgICctciA1MDAnLnNwbGl0KCkpLAotICAg
ICAgICAjIyAgIChbXSwgeydyZXZpc2lvbic6IFJldmlzaW9uU3BlY19pbnQoNTAwKX0pKQorICAg
ICAgICAgICAoW10sIHsnZml4ZXMnOiBbXSwgJ21lc3NhZ2UnOiAnYml0ZXInfSkpCiAKICAgICBk
ZWYgdGVzdF9ub19tb3JlX29wdHMoc2VsZik6CiAgICAgICAgICIiIlRlcm1pbmF0ZWQgb3B0aW9u
cyIiIgogICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhwYXJzZV9hcmdzKGNtZF9jb21taXQoKSwg
WyctLScsICctZmlsZS13aXRoLWRhc2hlcyddKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
KFsnLWZpbGUtd2l0aC1kYXNoZXMnXSwge30pKQorICAgICAgICAgICAgICAgICAgICAgICAgICAo
WyctZmlsZS13aXRoLWRhc2hlcyddLCB7J2ZpeGVzJzogW119KSkKIAogICAgIGRlZiB0ZXN0X29w
dGlvbl9oZWxwKHNlbGYpOgogICAgICAgICAiIiJPcHRpb25zIGhhdmUgaGVscCBzdHJpbmdzLiIi
IgpAQCAtMTEyLDcgKzExMiw4IEBACiAKICAgICBkZWYgdGVzdF9hbGxvd19kYXNoKHNlbGYpOgog
ICAgICAgICAiIiJUZXN0IHRoYXQgd2UgY2FuIHBhc3MgYSBwbGFpbiAnLScgYXMgYW4gYXJndW1l
bnQuIiIiCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoKFsnLSddLCB7fSksIHBhcnNlX2FyZ3Mo
Y21kX2NvbW1pdCgpLCBbJy0nXSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAg
ICAgICAoWyctJ10sIHsnZml4ZXMnOiBbXX0pLCBwYXJzZV9hcmdzKGNtZF9jb21taXQoKSwgWyct
J10pKQogCiAgICAgZGVmIHBhcnNlKHNlbGYsIG9wdGlvbnMsIGFyZ3MpOgogICAgICAgICBwYXJz
ZXIgPSBvcHRpb24uZ2V0X29wdHBhcnNlcihkaWN0KChvLm5hbWUsIG8pIGZvciBvIGluIG9wdGlv
bnMpKQpAQCAtMjMxLDExICsyMzIsMzggQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgKCd0
d28nLCBOb25lLCBOb25lLCAndHdvIGhlbHAnKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
XSkKIAotIyAgICAgPj4+IHBhcnNlX2FyZ3MoJ2xvZyAtciA1MDAnLnNwbGl0KCkpCi0jICAgICAo
Wydsb2cnXSwgeydyZXZpc2lvbic6IFs8UmV2aXNpb25TcGVjX2ludCA1MDA+XX0pCi0jICAgICA+
Pj4gcGFyc2VfYXJncygnbG9nIC1yNTAwLi42MDAnLnNwbGl0KCkpCi0jICAgICAoWydsb2cnXSwg
eydyZXZpc2lvbic6IFs8UmV2aXNpb25TcGVjX2ludCA1MDA+LCA8UmV2aXNpb25TcGVjX2ludCA2
MDA+XX0pCi0jICAgICA+Pj4gcGFyc2VfYXJncygnbG9nIC12cjUwMC4uNjAwJy5zcGxpdCgpKQot
IyAgICAgKFsnbG9nJ10sIHsndmVyYm9zZSc6IFRydWUsICdyZXZpc2lvbic6IFs8UmV2aXNpb25T
cGVjX2ludCA1MDA+LCA8UmV2aXNpb25TcGVjX2ludCA2MDA+XX0pCi0jICAgICA+Pj4gcGFyc2Vf
YXJncygnbG9nIC1ycmV2bm86NTAwLi42MDAnLnNwbGl0KCkpICN0aGUgciB0YWtlcyBhbiBhcmd1
bWVudAotIyAgICAgKFsnbG9nJ10sIHsncmV2aXNpb24nOiBbPFJldmlzaW9uU3BlY19yZXZubyBy
ZXZubzo1MDA+LCA8UmV2aXNpb25TcGVjX2ludCA2MDA+XX0pCisKK2NsYXNzIFRlc3RMaXN0T3B0
aW9ucyhUZXN0Q2FzZSk6CisgICAgIiIiVGVzdHMgZm9yIExpc3RPcHRpb24sIHVzZWQgdG8gc3Bl
Y2lmeSBsaXN0cyBvbiB0aGUgY29tbWFuZC1saW5lLiIiIgorCisgICAgZGVmIHBhcnNlKHNlbGYs
IG9wdGlvbnMsIGFyZ3MpOgorICAgICAgICBwYXJzZXIgPSBvcHRpb24uZ2V0X29wdHBhcnNlcihk
aWN0KChvLm5hbWUsIG8pIGZvciBvIGluIG9wdGlvbnMpKQorICAgICAgICByZXR1cm4gcGFyc2Vy
LnBhcnNlX2FyZ3MoYXJncykKKworICAgIGRlZiB0ZXN0X2xpc3Rfb3B0aW9uKHNlbGYpOgorICAg
ICAgICBvcHRpb25zID0gW29wdGlvbi5MaXN0T3B0aW9uKCdoZWxsbycsIHR5cGU9c3RyKV0KKyAg
ICAgICAgb3B0cywgYXJncyA9IHNlbGYucGFyc2Uob3B0aW9ucywgWyctLWhlbGxvPXdvcmxkJywg
Jy0taGVsbG89c2FpbG9yJ10pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoWyd3b3JsZCcsICdz
YWlsb3InXSwgb3B0cy5oZWxsbykKKworICAgIGRlZiB0ZXN0X2xpc3Rfb3B0aW9uX25vX2FyZ3Vt
ZW50cyhzZWxmKToKKyAgICAgICAgb3B0aW9ucyA9IFtvcHRpb24uTGlzdE9wdGlvbignaGVsbG8n
LCB0eXBlPXN0cildCisgICAgICAgIG9wdHMsIGFyZ3MgPSBzZWxmLnBhcnNlKG9wdGlvbnMsIFtd
KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFtdLCBvcHRzLmhlbGxvKQorCisgICAgZGVmIHRl
c3RfbGlzdF9vcHRpb25fd2l0aF9pbnRfdHlwZShzZWxmKToKKyAgICAgICAgb3B0aW9ucyA9IFtv
cHRpb24uTGlzdE9wdGlvbignaGVsbG8nLCB0eXBlPWludCldCisgICAgICAgIG9wdHMsIGFyZ3Mg
PSBzZWxmLnBhcnNlKG9wdGlvbnMsIFsnLS1oZWxsbz0yJywgJy0taGVsbG89MyddKQorICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKFsyLCAzXSwgb3B0cy5oZWxsbykKKworICAgIGRlZiB0ZXN0X2xp
c3Rfb3B0aW9uX3dpdGhfaW50X3R5cGVfY2FuX2JlX3Jlc2V0KHNlbGYpOgorICAgICAgICBvcHRp
b25zID0gW29wdGlvbi5MaXN0T3B0aW9uKCdoZWxsbycsIHR5cGU9aW50KV0KKyAgICAgICAgb3B0
cywgYXJncyA9IHNlbGYucGFyc2Uob3B0aW9ucywgWyctLWhlbGxvPTInLCAnLS1oZWxsbz0zJywK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICctLWhlbGxvPS0nLCAn
LS1oZWxsbz01J10pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoWzVdLCBvcHRzLmhlbGxvKQor
CisgICAgZGVmIHRlc3RfbGlzdF9vcHRpb25fY2FuX2JlX3Jlc2V0KHNlbGYpOgorICAgICAgICAi
IiJQYXNzaW5nIGFuIG9wdGlvbiBvZiAnLScgdG8gYSBsaXN0IG9wdGlvbiBzaG91bGQgcmVzZXQg
dGhlIGxpc3QuIiIiCisgICAgICAgIG9wdGlvbnMgPSBbb3B0aW9uLkxpc3RPcHRpb24oJ2hlbGxv
JywgdHlwZT1zdHIpXQorICAgICAgICBvcHRzLCBhcmdzID0gc2VsZi5wYXJzZSgKKyAgICAgICAg
ICAgIG9wdGlvbnMsIFsnLS1oZWxsbz1hJywgJy0taGVsbG89YicsICctLWhlbGxvPS0nLCAnLS1o
ZWxsbz1jJ10pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoWydjJ10sIG9wdHMuaGVsbG8pCgo=

=== modified file bzrlib/tests/test_plugins.py // last-changed:mbp@sourcefrog.n
... et-20070502120036-ap7wytspwly1p00k // encoding:base64
LS0tIGJ6cmxpYi90ZXN0cy90ZXN0X3BsdWdpbnMucHkKKysrIGJ6cmxpYi90ZXN0cy90ZXN0X3Bs
dWdpbnMucHkKQEAgLTEsNCArMSw0IEBACi0jIENvcHlyaWdodCAoQykgMjAwNSBDYW5vbmljYWwg
THRkCisjIENvcHlyaWdodCAoQykgMjAwNSwgMjAwNyBDYW5vbmljYWwgTHRkCiAjCiAjIFRoaXMg
cHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3Ig
bW9kaWZ5CiAjIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExp
Y2Vuc2UgYXMgcHVibGlzaGVkIGJ5CkBAIC0yNSw2ICsyNSw3IEBACiBpbXBvcnQgc3lzCiBpbXBv
cnQgemlwZmlsZQogCitmcm9tIGJ6cmxpYiBpbXBvcnQgcGx1Z2luLCB0ZXN0cwogaW1wb3J0IGJ6
cmxpYi5wbHVnaW4KIGltcG9ydCBienJsaWIucGx1Z2lucwogaW1wb3J0IGJ6cmxpYi5jb21tYW5k
cwpAQCAtMTYwLDE3ICsxNjEsMTUgQEAKICAgICAgICAgZm9yIGNtZF9uYW1lIGluIGJ6cmxpYi5j
b21tYW5kcy5idWlsdGluX2NvbW1hbmRfbmFtZXMoKToKICAgICAgICAgICAgIGlmIGNtZF9uYW1l
IGluIGJ6cmxpYi5jb21tYW5kcy5wbHVnaW5fY29tbWFuZF9uYW1lcygpOgogICAgICAgICAgICAg
ICAgIGNvbnRpbnVlCi0gICAgICAgICAgICBoZWxwID0gU3RyaW5nSU8oKQogICAgICAgICAgICAg
dHJ5OgotICAgICAgICAgICAgICAgIGJ6cmxpYi5oZWxwLmhlbHBfb25fY29tbWFuZChjbWRfbmFt
ZSwgaGVscCkKKyAgICAgICAgICAgICAgICBoZWxwID0gYnpybGliLmNvbW1hbmRzLmdldF9jbWRf
b2JqZWN0KGNtZF9uYW1lKS5nZXRfaGVscF90ZXh0KCkKICAgICAgICAgICAgIGV4Y2VwdCBOb3RJ
bXBsZW1lbnRlZEVycm9yOgogICAgICAgICAgICAgICAgICMgc29tZSBjb21tYW5kcyBoYXZlIG5v
IGhlbHAKICAgICAgICAgICAgICAgICBwYXNzCiAgICAgICAgICAgICBlbHNlOgotICAgICAgICAg
ICAgICAgIGhlbHAuc2VlaygwKQotICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0Tm90Q29udGFp
bnNSZShoZWxwLnJlYWQoKSwgJ0Zyb20gcGx1Z2luICJbXiJdKiInKQorICAgICAgICAgICAgICAg
IHNlbGYuYXNzZXJ0Tm90Q29udGFpbnNSZShoZWxwLCAnRnJvbSBwbHVnaW4gIlteIl0qIicpCiAK
LSAgICAgICAgICAgIGlmIGhlbHAgaW4gaGVscF9jb21tYW5kcy5rZXlzKCk6CisgICAgICAgICAg
ICBpZiBjbWRfbmFtZSBpbiBoZWxwX2NvbW1hbmRzLmtleXMoKToKICAgICAgICAgICAgICAgICAj
IHNvbWUgY29tbWFuZHMgYXJlIGhpZGRlbgogICAgICAgICAgICAgICAgIGhlbHAgPSBoZWxwX2Nv
bW1hbmRzW2NtZF9uYW1lXQogICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0Tm90Q29udGFpbnNS
ZShoZWxwLCAnRnJvbSBwbHVnaW4gIlteIl0qIicpCkBAIC0yMzgsMyArMjM3LDExMSBAQAogICAg
ICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChleHBlY3RlZF9wYXRoLCBienJsaWIucGx1Z2lucy5f
X3BhdGhfXykKICAgICAgICAgZmluYWxseToKICAgICAgICAgICAgIGJ6cmxpYi5wbHVnaW5zLl9f
cGF0aF9fID0gb2xkX3BhdGgKKworCitjbGFzcyBUZXN0SGVscEluZGV4KHRlc3RzLlRlc3RDYXNl
KToKKyAgICAiIiJUZXN0cyBmb3IgdGhlIFBsdWdpbnNIZWxwSW5kZXggY2xhc3MuIiIiCisKKyAg
ICBkZWYgdGVzdF9kZWZhdWx0X2NvbnN0cnVjdGFibGUoc2VsZik6CisgICAgICAgIGluZGV4ID0g
cGx1Z2luLlBsdWdpbnNIZWxwSW5kZXgoKQorCisgICAgZGVmIHRlc3RfZ2V0X3RvcGljc19Ob25l
KHNlbGYpOgorICAgICAgICAiIiJTZWFyY2hpbmcgZm9yIE5vbmUgcmV0dXJucyBhbiBlbXB0eSBs
aXN0LiIiIgorICAgICAgICBpbmRleCA9IHBsdWdpbi5QbHVnaW5zSGVscEluZGV4KCkKKyAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbChbXSwgaW5kZXguZ2V0X3RvcGljcyhOb25lKSkKKworICAgIGRl
ZiB0ZXN0X2dldF90b3BpY3NfZm9yX3BsdWdpbihzZWxmKToKKyAgICAgICAgIiIiU2VhcmNoaW5n
IGZvciBwbHVnaW4gbmFtZSBnZXRzIGl0cyBkb2NzdHJpbmcuIiIiCisgICAgICAgIGluZGV4ID0g
cGx1Z2luLlBsdWdpbnNIZWxwSW5kZXgoKQorICAgICAgICAjIG1ha2UgYSBuZXcgcGx1Z2luIGhl
cmUgZm9yIHRoaXMgdGVzdCwgZXZlbiBpZiB3ZSdyZSBydW4gd2l0aAorICAgICAgICAjIC0tbm8t
cGx1Z2lucworICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHN5cy5tb2R1bGVzLmhhc19rZXkoJ2J6
cmxpYi5wbHVnaW5zLmRlbW9fbW9kdWxlJykpCisgICAgICAgIGRlbW9fbW9kdWxlID0gRmFrZU1v
ZHVsZSgnJywgJ2J6cmxpYi5wbHVnaW5zLmRlbW9fbW9kdWxlJykKKyAgICAgICAgc3lzLm1vZHVs
ZXNbJ2J6cmxpYi5wbHVnaW5zLmRlbW9fbW9kdWxlJ10gPSBkZW1vX21vZHVsZQorICAgICAgICB0
cnk6CisgICAgICAgICAgICB0b3BpY3MgPSBpbmRleC5nZXRfdG9waWNzKCdkZW1vX21vZHVsZScp
CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDEsIGxlbih0b3BpY3MpKQorICAgICAgICAg
ICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKHRvcGljc1swXSwgcGx1Z2luLk1vZHVsZUhlbHBUb3Bp
YykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGVtb19tb2R1bGUsIHRvcGljc1swXS5t
b2R1bGUpCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICBkZWwgc3lzLm1vZHVsZXNbJ2J6
cmxpYi5wbHVnaW5zLmRlbW9fbW9kdWxlJ10KKworICAgIGRlZiB0ZXN0X2dldF90b3BpY3Nfbm9f
dG9waWMoc2VsZik6CisgICAgICAgICIiIlNlYXJjaGluZyBmb3Igc29tZXRoaW5nIHRoYXQgaXMg
bm90IGEgcGx1Z2luIHJldHVybnMgW10uIiIiCisgICAgICAgICMgdGVzdCB0aGlzIGJ5IHVzaW5n
IGEgbmFtZSB0aGF0IGNhbm5vdCBiZSBhIHBsdWdpbiAtIGl0cyBub3QKKyAgICAgICAgIyBhIHZh
bGlkIHB5dGhvbiBpZGVudGlmaWVyLgorICAgICAgICBpbmRleCA9IHBsdWdpbi5QbHVnaW5zSGVs
cEluZGV4KCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChbXSwgaW5kZXguZ2V0X3RvcGljcygn
bm90aGluZyBieSB0aGlzIG5hbWUnKSkKKworICAgIGRlZiB0ZXN0X3ByZWZpeChzZWxmKToKKyAg
ICAgICAgIiIiUGx1Z2luc0hlbHBJbmRleCBoYXMgYSBwcmVmaXggb2YgJ3BsdWdpbnMvJy4iIiIK
KyAgICAgICAgaW5kZXggPSBwbHVnaW4uUGx1Z2luc0hlbHBJbmRleCgpCisgICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwoJ3BsdWdpbnMvJywgaW5kZXgucHJlZml4KQorCisgICAgZGVmIHRlc3RfZ2V0
X3BsdWdpbl90b3BpY193aXRoX3ByZWZpeChzZWxmKToKKyAgICAgICAgIiIiU2VhcmNoaW5nIGZv
ciBwbHVnaW5zL2RlbW9fbW9kdWxlIHJldHVybnMgaGVscC4iIiIKKyAgICAgICAgaW5kZXggPSBw
bHVnaW4uUGx1Z2luc0hlbHBJbmRleCgpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uoc3lzLm1v
ZHVsZXMuaGFzX2tleSgnYnpybGliLnBsdWdpbnMuZGVtb19tb2R1bGUnKSkKKyAgICAgICAgZGVt
b19tb2R1bGUgPSBGYWtlTW9kdWxlKCcnLCAnYnpybGliLnBsdWdpbnMuZGVtb19tb2R1bGUnKQor
ICAgICAgICBzeXMubW9kdWxlc1snYnpybGliLnBsdWdpbnMuZGVtb19tb2R1bGUnXSA9IGRlbW9f
bW9kdWxlCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHRvcGljcyA9IGluZGV4LmdldF90b3Bp
Y3MoJ3BsdWdpbnMvZGVtb19tb2R1bGUnKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgx
LCBsZW4odG9waWNzKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZSh0b3BpY3Nb
MF0sIHBsdWdpbi5Nb2R1bGVIZWxwVG9waWMpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KGRlbW9fbW9kdWxlLCB0b3BpY3NbMF0ubW9kdWxlKQorICAgICAgICBmaW5hbGx5OgorICAgICAg
ICAgICAgZGVsIHN5cy5tb2R1bGVzWydienJsaWIucGx1Z2lucy5kZW1vX21vZHVsZSddCisKKwor
Y2xhc3MgRmFrZU1vZHVsZShvYmplY3QpOgorICAgICIiIkEgZmFrZSBtb2R1bGUgdG8gdGVzdCB3
aXRoLiIiIgorCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGRvYywgbmFtZSk6CisgICAgICAgIHNl
bGYuX19kb2NfXyA9IGRvYworICAgICAgICBzZWxmLl9fbmFtZV9fID0gbmFtZQorCisKK2NsYXNz
IFRlc3RNb2R1bGVIZWxwVG9waWModGVzdHMuVGVzdENhc2UpOgorICAgICIiIlRlc3RzIGZvciB0
aGUgTW9kdWxlSGVscFRvcGljIGNsYXNzLiIiIgorCisgICAgZGVmIHRlc3RfY29udHJ1Y3Qoc2Vs
Zik6CisgICAgICAgICIiIkNvbnN0cnVjdGlvbiB0YWtlcyB0aGUgbW9kdWxlIHRvIGRvY3VtZW50
LiIiIgorICAgICAgICBtb2QgPSBGYWtlTW9kdWxlKCdmb28nLCAnZm9vJykKKyAgICAgICAgdG9w
aWMgPSBwbHVnaW4uTW9kdWxlSGVscFRvcGljKG1vZCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bChtb2QsIHRvcGljLm1vZHVsZSkKKworICAgIGRlZiB0ZXN0X2dldF9oZWxwX3RleHRfTm9uZShz
ZWxmKToKKyAgICAgICAgIiIiQSBNb2R1bGVIZWxwVG9waWMgcmV0dXJucyB0aGUgZG9jc3RyaW5n
IGZvciBnZXRfaGVscF90ZXh0LiIiIgorICAgICAgICBtb2QgPSBGYWtlTW9kdWxlKE5vbmUsICdk
ZW1vJykKKyAgICAgICAgdG9waWMgPSBwbHVnaW4uTW9kdWxlSGVscFRvcGljKG1vZCkKKyAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbCgiUGx1Z2luICdkZW1vJyBoYXMgbm8gZG9jc3RyaW5nLlxuIiwK
KyAgICAgICAgICAgIHRvcGljLmdldF9oZWxwX3RleHQoKSkKKworICAgIGRlZiB0ZXN0X2dldF9o
ZWxwX3RleHRfbm9fY2FycmlhZ2VfcmV0dXJuKHNlbGYpOgorICAgICAgICAiIiJNb2R1bGVIZWxw
VG9waWMuZ2V0X2hlbHBfdGV4dCBhZGRzIGEgXG4gaWYgbmVlZGVkLiIiIgorICAgICAgICBtb2Qg
PSBGYWtlTW9kdWxlKCdvbmUgbGluZSBvZiBoZWxwJywgJ2RlbW8nKQorICAgICAgICB0b3BpYyA9
IHBsdWdpbi5Nb2R1bGVIZWxwVG9waWMobW9kKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCJv
bmUgbGluZSBvZiBoZWxwXG4iLAorICAgICAgICAgICAgdG9waWMuZ2V0X2hlbHBfdGV4dCgpKQor
CisgICAgZGVmIHRlc3RfZ2V0X2hlbHBfdGV4dF9jYXJyaWFnZV9yZXR1cm4oc2VsZik6CisgICAg
ICAgICIiIk1vZHVsZUhlbHBUb3BpYy5nZXRfaGVscF90ZXh0IGFkZHMgYSBcbiBpZiBuZWVkZWQu
IiIiCisgICAgICAgIG1vZCA9IEZha2VNb2R1bGUoJ3R3byBsaW5lcyBvZiBoZWxwXG5hbmQgbW9y
ZVxuJywgJ2RlbW8nKQorICAgICAgICB0b3BpYyA9IHBsdWdpbi5Nb2R1bGVIZWxwVG9waWMobW9k
KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCJ0d28gbGluZXMgb2YgaGVscFxuYW5kIG1vcmVc
biIsCisgICAgICAgICAgICB0b3BpYy5nZXRfaGVscF90ZXh0KCkpCisKKyAgICBkZWYgdGVzdF9n
ZXRfaGVscF90ZXh0X3dpdGhfYWRkaXRpb25hbF9zZWVfYWxzbyhzZWxmKToKKyAgICAgICAgbW9k
ID0gRmFrZU1vZHVsZSgndHdvIGxpbmVzIG9mIGhlbHBcbmFuZCBtb3JlJywgJ2RlbW8nKQorICAg
ICAgICB0b3BpYyA9IHBsdWdpbi5Nb2R1bGVIZWxwVG9waWMobW9kKQorICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKCJ0d28gbGluZXMgb2YgaGVscFxuYW5kIG1vcmVcblNlZSBhbHNvOiBiYXIsIGZv
b1xuIiwKKyAgICAgICAgICAgIHRvcGljLmdldF9oZWxwX3RleHQoWydmb28nLCAnYmFyJ10pKQor
CisgICAgZGVmIHRlc3RfZ2V0X2hlbHBfdG9waWMoc2VsZik6CisgICAgICAgICIiIlRoZSBoZWxw
IHRvcGljIGZvciBhIHBsdWdpbiBpcyBpdHMgbW9kdWxlIG5hbWUuIiIiCisgICAgICAgIG1vZCA9
IEZha2VNb2R1bGUoJ3R3byBsaW5lcyBvZiBoZWxwXG5hbmQgbW9yZScsICdienJsaWIucGx1Z2lu
cy5kZW1vJykKKyAgICAgICAgdG9waWMgPSBwbHVnaW4uTW9kdWxlSGVscFRvcGljKG1vZCkKKyAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnZGVtbycsIHRvcGljLmdldF9oZWxwX3RvcGljKCkpCisg
ICAgICAgIG1vZCA9IEZha2VNb2R1bGUoJ3R3byBsaW5lcyBvZiBoZWxwXG5hbmQgbW9yZScsICdi
enJsaWIucGx1Z2lucy5mb29fYmFyJykKKyAgICAgICAgdG9waWMgPSBwbHVnaW4uTW9kdWxlSGVs
cFRvcGljKG1vZCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnZm9vX2JhcicsIHRvcGljLmdl
dF9oZWxwX3RvcGljKCkpCgo=

=== modified file bzrlib/tests/test_read_bundle.py // last-changed:andrew.benne
... tts@canonical.com-20070411042623-4qav34z64fftnbyx // encoding:base64
LS0tIGJ6cmxpYi90ZXN0cy90ZXN0X3JlYWRfYnVuZGxlLnB5CisrKyBienJsaWIvdGVzdHMvdGVz
dF9yZWFkX2J1bmRsZS5weQpAQCAtNjMsNyArNjMsNyBAQAogICAgICAgICByZXR1cm4gd3QKIAog
ICAgIGRlZiB0ZXN0X3JlYWRfYnVuZGxlX2Zyb21fdXJsKHNlbGYpOgotICAgICAgICBzZWxmLl9j
YXB0dXJlVmFyKCdOT19TTUFSVF9WRlMnLCBOb25lKQorICAgICAgICBzZWxmLl9jYXB0dXJlVmFy
KCdCWlJfTk9fU01BUlRfVkZTJywgTm9uZSkKICAgICAgICAgd3QgPSBzZWxmLmNyZWF0ZV90ZXN0
X2J1bmRsZSgpCiAgICAgICAgIGlmIHd0IGlzIE5vbmU6CiAgICAgICAgICAgICByZXR1cm4KQEAg
LTc1LDcgKzc1LDcgQEAKICAgICBkZWYgdGVzdF9yZWFkX2ZhaWwoc2VsZik6CiAgICAgICAgICMg
VHJ5aW5nIHRvIHJlYWQgZnJvbSBhIGRpcmVjdG9yeSwgb3Igbm9uLWJ1bmRsZSBmaWxlCiAgICAg
ICAgICMgc2hvdWxkIGZhaWwgd2l0aCBOb3RBQnVuZGxlCi0gICAgICAgIHNlbGYuX2NhcHR1cmVW
YXIoJ05PX1NNQVJUX1ZGUycsIE5vbmUpCisgICAgICAgIHNlbGYuX2NhcHR1cmVWYXIoJ0JaUl9O
T19TTUFSVF9WRlMnLCBOb25lKQogICAgICAgICB3dCA9IHNlbGYuY3JlYXRlX3Rlc3RfYnVuZGxl
KCkKICAgICAgICAgaWYgd3QgaXMgTm9uZToKICAgICAgICAgICAgIHJldHVybgoK

=== modified file bzrlib/tests/test_repository.py // last-changed:andrew.bennet
... ts@canonical.com-20070411055816-oy64yjhzvtnrmfb9 // encoding:base64
LS0tIGJ6cmxpYi90ZXN0cy90ZXN0X3JlcG9zaXRvcnkucHkKKysrIGJ6cmxpYi90ZXN0cy90ZXN0
X3JlcG9zaXRvcnkucHkKQEAgLTMzNiwxOCArMzM2LDI5IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0
VHJ1ZShTX0lTRElSKHQuc3RhdCgna25pdHMnKS5zdF9tb2RlKSkKICAgICAgICAgc2VsZi5jaGVj
a19rbml0cyh0KQogCi1jbGFzcyBJbnRlclN0cmluZyhyZXBvc2l0b3J5LkludGVyUmVwb3NpdG9y
eSk6Ci0gICAgIiIiQW4gaW50ZXItcmVwb3NpdG9yeSBvcHRpbWlzZWQgY29kZSBwYXRoIGZvciBz
dHJpbmdzLgotCi0gICAgVGhpcyBpcyBmb3IgdXNlIGR1cmluZyB0ZXN0aW5nIHdoZXJlIHdlIHVz
ZSBzdHJpbmdzIGFzIHJlcG9zaXRvcmllcworCitjbGFzcyBEdW1teVJlcG9zaXRvcnkob2JqZWN0
KToKKyAgICAiIiJBIGR1bW15IHJlcG9zaXRvcnkgZm9yIHRlc3RpbmcuIiIiCisKKyAgICBfc2Vy
aWFsaXplciA9IE5vbmUKKworICAgIGRlZiBzdXBwb3J0c19yaWNoX3Jvb3Qoc2VsZik6CisgICAg
ICAgIHJldHVybiBGYWxzZQorCisKK2NsYXNzIEludGVyRHVtbXkocmVwb3NpdG9yeS5JbnRlclJl
cG9zaXRvcnkpOgorICAgICIiIkFuIGludGVyLXJlcG9zaXRvcnkgb3B0aW1pc2VkIGNvZGUgcGF0
aCBmb3IgRHVtbXlSZXBvc2l0b3J5LgorCisgICAgVGhpcyBpcyBmb3IgdXNlIGR1cmluZyB0ZXN0
aW5nIHdoZXJlIHdlIHVzZSBEdW1teVJlcG9zaXRvcnkgYXMgcmVwb3NpdG9yaWVzCiAgICAgc28g
dGhhdCBub25lIG9mIHRoZSBkZWZhdWx0IHJlZ3NpdGVyZWQgaW50ZXItcmVwb3NpdG9yeSBjbGFz
c2VzIHdpbGwKICAgICBtYXRjaC4KICAgICAiIiIKIAogICAgIEBzdGF0aWNtZXRob2QKICAgICBk
ZWYgaXNfY29tcGF0aWJsZShyZXBvX3NvdXJjZSwgcmVwb190YXJnZXQpOgotICAgICAgICAiIiJJ
bnRlclN0cmluZyBpcyBjb21wYXRpYmxlIHdpdGggc3RyaW5ncy1hcy1yZXBvcy4iIiIKLSAgICAg
ICAgcmV0dXJuIGlzaW5zdGFuY2UocmVwb19zb3VyY2UsIHN0cikgYW5kIGlzaW5zdGFuY2UocmVw
b190YXJnZXQsIHN0cikKKyAgICAgICAgIiIiSW50ZXJEdW1teSBpcyBjb21wYXRpYmxlIHdpdGgg
RHVtbXlSZXBvc2l0b3J5LiIiIgorICAgICAgICByZXR1cm4gKGlzaW5zdGFuY2UocmVwb19zb3Vy
Y2UsIER1bW15UmVwb3NpdG9yeSkgYW5kIAorICAgICAgICAgICAgaXNpbnN0YW5jZShyZXBvX3Rh
cmdldCwgRHVtbXlSZXBvc2l0b3J5KSkKIAogCiBjbGFzcyBUZXN0SW50ZXJSZXBvc2l0b3J5KFRl
c3RDYXNlV2l0aFRyYW5zcG9ydCk6CkBAIC0zNTksMTQgKzM3MCwxOCBAQAogICAgICAgICAjIFRo
aXMgYWxzbyB0ZXN0cyB0aGF0IHRoZSBkZWZhdWx0IHJlZ2lzdGVyZWQgb3B0aW1pc2VkIGludGVy
cmVwb3NpdG9yeQogICAgICAgICAjIGNsYXNzZXMgZG8gbm90IGJhcmYgaW5hcHByb3ByaWF0ZWx5
IHdoZW4gYSBzdXJwcmlzaW5nIHJlcG9zaXRvcnkgdHlwZQogICAgICAgICAjIGlzIGhhbmRlZCB0
byB0aGVtLgotICAgICAgICBkdW1teV9hID0gIlJlcG9zaXRvcnkgMS4iCi0gICAgICAgIGR1bW15
X2IgPSAiUmVwb3NpdG9yeSAyLiIKKyAgICAgICAgZHVtbXlfYSA9IER1bW15UmVwb3NpdG9yeSgp
CisgICAgICAgIGR1bW15X2IgPSBEdW1teVJlcG9zaXRvcnkoKQogICAgICAgICBzZWxmLmFzc2Vy
dEdldHNEZWZhdWx0SW50ZXJSZXBvc2l0b3J5KGR1bW15X2EsIGR1bW15X2IpCiAKICAgICBkZWYg
YXNzZXJ0R2V0c0RlZmF1bHRJbnRlclJlcG9zaXRvcnkoc2VsZiwgcmVwb19hLCByZXBvX2IpOgot
ICAgICAgICAiIiJBc3NlcnRzIHRoYXQgSW50ZXJSZXBvc2l0b3J5LmdldChyZXBvX2EsIHJlcG9f
YikgLT4gdGhlIGRlZmF1bHQuIiIiCisgICAgICAgICIiIkFzc2VydHMgdGhhdCBJbnRlclJlcG9z
aXRvcnkuZ2V0KHJlcG9fYSwgcmVwb19iKSAtPiB0aGUgZGVmYXVsdC4KKyAgICAgICAgCisgICAg
ICAgIFRoZSBlZmZlY3RpdmUgZGVmYXVsdCBpcyBub3cgSW50ZXJTYW1lRGF0YVJlcG9zaXRvcnkg
YmVjYXVzZSB0aGVyZSBpcworICAgICAgICBubyBhY3R1YWwgc2FuZSBkZWZhdWx0IGluIHRoZSBw
cmVzZW5jZSBvZiBpbmNvbXBhdGlibGUgZGF0YSBtb2RlbHMuCisgICAgICAgICIiIgogICAgICAg
ICBpbnRlcl9yZXBvID0gcmVwb3NpdG9yeS5JbnRlclJlcG9zaXRvcnkuZ2V0KHJlcG9fYSwgcmVw
b19iKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcG9zaXRvcnkuSW50ZXJSZXBvc2l0b3J5
LAorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcG9zaXRvcnkuSW50ZXJTYW1lRGF0YVJlcG9z
aXRvcnksCiAgICAgICAgICAgICAgICAgICAgICAgICAgaW50ZXJfcmVwby5fX2NsYXNzX18pCiAg
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwb19hLCBpbnRlcl9yZXBvLnNvdXJjZSkKICAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbChyZXBvX2IsIGludGVyX3JlcG8udGFyZ2V0KQpAQCAtMzc3LDIy
ICszOTIsMjYgQEAKICAgICAgICAgIyBhbmQgdGhhdCBpdCBpcyBjb3JyZWN0bHkgc2VsZWN0ZWQg
d2hlbiBnaXZlbiBhIHJlcG9zaXRvcnkKICAgICAgICAgIyBwYWlyIHRoYXQgaXQgcmV0dXJucyB0
cnVlIG9uIGZvciB0aGUgaXNfY29tcGF0aWJsZSBzdGF0aWMgbWV0aG9kCiAgICAgICAgICMgY2hl
Y2sKLSAgICAgICAgZHVtbXlfYSA9ICJSZXBvc2l0b3J5IDEuIgotICAgICAgICBkdW1teV9iID0g
IlJlcG9zaXRvcnkgMi4iCi0gICAgICAgIHJlcG9zaXRvcnkuSW50ZXJSZXBvc2l0b3J5LnJlZ2lz
dGVyX29wdGltaXNlcihJbnRlclN0cmluZykKKyAgICAgICAgZHVtbXlfYSA9IER1bW15UmVwb3Np
dG9yeSgpCisgICAgICAgIGR1bW15X2IgPSBEdW1teVJlcG9zaXRvcnkoKQorICAgICAgICByZXBv
ID0gc2VsZi5tYWtlX3JlcG9zaXRvcnkoJy4nKQorICAgICAgICAjIGhhY2sgZHVtbWllcyB0byBs
b29rIGxpa2UgcmVwbyBzb21ld2hhdC4KKyAgICAgICAgZHVtbXlfYS5fc2VyaWFsaXplciA9IHJl
cG8uX3NlcmlhbGl6ZXIKKyAgICAgICAgZHVtbXlfYi5fc2VyaWFsaXplciA9IHJlcG8uX3Nlcmlh
bGl6ZXIKKyAgICAgICAgcmVwb3NpdG9yeS5JbnRlclJlcG9zaXRvcnkucmVnaXN0ZXJfb3B0aW1p
c2VyKEludGVyRHVtbXkpCiAgICAgICAgIHRyeToKLSAgICAgICAgICAgICMgd2Ugc2hvdWxkIGdl
dCB0aGUgZGVmYXVsdCBmb3Igc29tZXRoaW5nIEludGVyU3RyaW5nIHJldHVybnMgRmFsc2UKKyAg
ICAgICAgICAgICMgd2Ugc2hvdWxkIGdldCB0aGUgZGVmYXVsdCBmb3Igc29tZXRoaW5nIEludGVy
RHVtbXkgcmV0dXJucyBGYWxzZQogICAgICAgICAgICAgIyB0bwotICAgICAgICAgICAgc2VsZi5h
c3NlcnRGYWxzZShJbnRlclN0cmluZy5pc19jb21wYXRpYmxlKGR1bW15X2EsIE5vbmUpKQotICAg
ICAgICAgICAgc2VsZi5hc3NlcnRHZXRzRGVmYXVsdEludGVyUmVwb3NpdG9yeShkdW1teV9hLCBO
b25lKQotICAgICAgICAgICAgIyBhbmQgd2Ugc2hvdWxkIGdldCBhbiBJbnRlclN0cmluZyBmb3Ig
YSBwYWlyIGl0ICdsaWtlcycKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShJbnRlclN0cmlu
Zy5pc19jb21wYXRpYmxlKGR1bW15X2EsIGR1bW15X2IpKQorICAgICAgICAgICAgc2VsZi5hc3Nl
cnRGYWxzZShJbnRlckR1bW15LmlzX2NvbXBhdGlibGUoZHVtbXlfYSwgcmVwbykpCisgICAgICAg
ICAgICBzZWxmLmFzc2VydEdldHNEZWZhdWx0SW50ZXJSZXBvc2l0b3J5KGR1bW15X2EsIHJlcG8p
CisgICAgICAgICAgICAjIGFuZCB3ZSBzaG91bGQgZ2V0IGFuIEludGVyRHVtbXkgZm9yIGEgcGFp
ciBpdCAnbGlrZXMnCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoSW50ZXJEdW1teS5pc19j
b21wYXRpYmxlKGR1bW15X2EsIGR1bW15X2IpKQogICAgICAgICAgICAgaW50ZXJfcmVwbyA9IHJl
cG9zaXRvcnkuSW50ZXJSZXBvc2l0b3J5LmdldChkdW1teV9hLCBkdW1teV9iKQotICAgICAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbChJbnRlclN0cmluZywgaW50ZXJfcmVwby5fX2NsYXNzX18pCisg
ICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEludGVyRHVtbXksIGludGVyX3JlcG8uX19jbGFz
c19fKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkdW1teV9hLCBpbnRlcl9yZXBvLnNv
dXJjZSkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZHVtbXlfYiwgaW50ZXJfcmVwby50
YXJnZXQpCiAgICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICByZXBvc2l0b3J5LkludGVyUmVw
b3NpdG9yeS51bnJlZ2lzdGVyX29wdGltaXNlcihJbnRlclN0cmluZykKKyAgICAgICAgICAgIHJl
cG9zaXRvcnkuSW50ZXJSZXBvc2l0b3J5LnVucmVnaXN0ZXJfb3B0aW1pc2VyKEludGVyRHVtbXkp
CiAgICAgICAgICMgbm93IHdlIHNob3VsZCBnZXQgdGhlIGRlZmF1bHQgSW50ZXJSZXBvc2l0b3J5
IG9iamVjdCBhZ2Fpbi4KICAgICAgICAgc2VsZi5hc3NlcnRHZXRzRGVmYXVsdEludGVyUmVwb3Np
dG9yeShkdW1teV9hLCBkdW1teV9iKQogCgo=

=== modified file bzrlib/tests/test_selftest.py // last-changed:john@arbash-mei
... nel.com-20070424024356-nffcxmkfaigudmrp // encoding:base64
LS0tIGJ6cmxpYi90ZXN0cy90ZXN0X3NlbGZ0ZXN0LnB5CisrKyBienJsaWIvdGVzdHMvdGVzdF9z
ZWxmdGVzdC5weQpAQCAtNDcsOCArNDcsMTQgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAg
VGVzdENhc2VXaXRoVHJhbnNwb3J0LAogICAgICAgICAgICAgICAgICAgICAgICAgICBUZXN0U2tp
cHBlZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgVGVzdFN1aXRlLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICBUZXN0VXRpbCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgVGV4dFRl
c3RSdW5uZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIFVuYXZhaWxhYmxlRmVhdHVyZSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgY2xlYW5fc2VsZnRlc3Rfb3V0cHV0LAorICAgICAg
ICAgICAgICAgICAgICAgICAgICBpdGVyX3N1aXRlX3Rlc3RzLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICBmaWx0ZXJfc3VpdGVfYnlfcmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgIHNv
cnRfc3VpdGVfYnlfcmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3Rfc3VpdGUKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgKQogZnJvbSBienJsaWIudGVzdHMudGVzdF9zZnRwX3Ry
YW5zcG9ydCBpbXBvcnQgVGVzdENhc2VXaXRoU0ZUUFNlcnZlcgogZnJvbSBienJsaWIudGVzdHMu
VGVzdFV0aWwgaW1wb3J0IF9sb2FkX21vZHVsZV9ieV9uYW1lCkBAIC0xOTIsMTcgKzE5OCwyMSBA
QAogICAgICAgICBmcm9tIGJ6cmxpYi5ienJkaXIgaW1wb3J0IEJ6ckRpclRlc3RQcm92aWRlckFk
YXB0ZXIKICAgICAgICAgaW5wdXRfdGVzdCA9IFRlc3RCenJEaXJQcm92aWRlckFkYXB0ZXIoCiAg
ICAgICAgICAgICAidGVzdF9hZGFwdGVkX3Rlc3RzIikKKyAgICAgICAgdmZzX2ZhY3RvcnkgPSAi
diIKICAgICAgICAgc2VydmVyMSA9ICJhIgogICAgICAgICBzZXJ2ZXIyID0gImIiCiAgICAgICAg
IGZvcm1hdHMgPSBbImMiLCAiZCJdCi0gICAgICAgIGFkYXB0ZXIgPSBCenJEaXJUZXN0UHJvdmlk
ZXJBZGFwdGVyKHNlcnZlcjEsIHNlcnZlcjIsIGZvcm1hdHMpCisgICAgICAgIGFkYXB0ZXIgPSBC
enJEaXJUZXN0UHJvdmlkZXJBZGFwdGVyKHZmc19mYWN0b3J5LAorICAgICAgICAgICAgc2VydmVy
MSwgc2VydmVyMiwgZm9ybWF0cykKICAgICAgICAgc3VpdGUgPSBhZGFwdGVyLmFkYXB0KGlucHV0
X3Rlc3QpCiAgICAgICAgIHRlc3RzID0gbGlzdChpdGVyKHN1aXRlKSkKICAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbCgyLCBsZW4odGVzdHMpKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRlc3Rz
WzBdLmJ6cmRpcl9mb3JtYXQsIGZvcm1hdHNbMF0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
dGVzdHNbMF0udmZzX3RyYW5zcG9ydF9mYWN0b3J5LCB2ZnNfZmFjdG9yeSkKICAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbCh0ZXN0c1swXS50cmFuc3BvcnRfc2VydmVyLCBzZXJ2ZXIxKQogICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKHRlc3RzWzBdLnRyYW5zcG9ydF9yZWFkb25seV9zZXJ2ZXIsIHNl
cnZlcjIpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodGVzdHNbMV0uYnpyZGlyX2Zvcm1hdCwg
Zm9ybWF0c1sxXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0ZXN0c1sxXS52ZnNfdHJhbnNw
b3J0X2ZhY3RvcnksIHZmc19mYWN0b3J5KQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRlc3Rz
WzFdLnRyYW5zcG9ydF9zZXJ2ZXIsIHNlcnZlcjEpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
dGVzdHNbMV0udHJhbnNwb3J0X3JlYWRvbmx5X3NlcnZlciwgc2VydmVyMikKIApAQCAtMjMyLDYg
KzI0MiwxOSBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRlc3RzWzFdLnRyYW5zcG9ydF9z
ZXJ2ZXIsIHNlcnZlcjEpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodGVzdHNbMV0udHJhbnNw
b3J0X3JlYWRvbmx5X3NlcnZlciwgc2VydmVyMikKIAorICAgIGRlZiB0ZXN0X3NldHRpbmdfdmZz
X3RyYW5zcG9ydChzZWxmKToKKyAgICAgICAgIiIiVGhlIHZmc190cmFuc3BvcnRfZmFjdG9yeSBj
YW4gYmUgc2V0IG9wdGlvbmFsbHkuIiIiCisgICAgICAgIGZyb20gYnpybGliLnJlcG9zaXRvcnkg
aW1wb3J0IFJlcG9zaXRvcnlUZXN0UHJvdmlkZXJBZGFwdGVyCisgICAgICAgIGlucHV0X3Rlc3Qg
PSBUZXN0UmVwb3NpdG9yeVByb3ZpZGVyQWRhcHRlcigKKyAgICAgICAgICAgICJ0ZXN0X2FkYXB0
ZWRfdGVzdHMiKQorICAgICAgICBmb3JtYXRzID0gWygiYyIsICJDIildCisgICAgICAgIGFkYXB0
ZXIgPSBSZXBvc2l0b3J5VGVzdFByb3ZpZGVyQWRhcHRlcihOb25lLCBOb25lLCBmb3JtYXRzLAor
ICAgICAgICAgICAgdmZzX3RyYW5zcG9ydF9mYWN0b3J5PSJ2ZnMiKQorICAgICAgICBzdWl0ZSA9
IGFkYXB0ZXIuYWRhcHQoaW5wdXRfdGVzdCkKKyAgICAgICAgdGVzdHMgPSBsaXN0KGl0ZXIoc3Vp
dGUpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDEsIGxlbih0ZXN0cykpCisgICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwodGVzdHNbMF0udmZzX3RyYW5zcG9ydF9mYWN0b3J5LCAidmZzIikKKwog
CiBjbGFzcyBUZXN0SW50ZXJSZXBvc2l0b3J5UHJvdmlkZXJBZGFwdGVyKFRlc3RDYXNlKToKICAg
ICAiIiJBIGdyb3VwIG9mIHRlc3RzIHRoYXQgdGVzdCB0aGUgSW50ZXJSZXBvc2l0b3J5IHRlc3Qg
YWRhcHRlci4iIiIKQEAgLTczOCw4ICs3NjEsMTAgQEAKICAgICAgICAgcmVzdWx0LnJlcG9ydF9r
bm93bl9mYWlsdXJlKHRlc3QsIGVycikKICAgICAgICAgb3V0cHV0ID0gcmVzdWx0X3N0cmVhbS5n
ZXR2YWx1ZSgpW3ByZWZpeDpdCiAgICAgICAgIGxpbmVzID0gb3V0cHV0LnNwbGl0bGluZXMoKQot
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpbmVzLCBbJ1hGQUlMICAgICAgICAgICAgICAgICAg
IDBtcycsICcgICAgZm9vJ10pCi0gICAgCisgICAgICAgIHNlbGYuYXNzZXJ0Q29udGFpbnNSZShs
aW5lc1swXSwgcidYRkFJTCAqXGQrbXMkJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaW5l
c1sxXSwgJyAgICBmb28nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDIsIGxlbihsaW5lcykp
CisKICAgICBkZWYgdGVzdF90ZXh0X3JlcG9ydF9rbm93bl9mYWlsdXJlKHNlbGYpOgogICAgICAg
ICAjIHRleHQgdGVzdCBvdXRwdXQgZm9ybWF0dGluZwogICAgICAgICBwYiA9IE1vY2tQcm9ncmVz
cygpCkBAIC05MzIsMTMgKzk1NywxMiBAQAogICAgICAgICBzdHJlYW0gPSBTdHJpbmdJTygpCiAg
ICAgICAgIHJ1bm5lciA9IFRleHRUZXN0UnVubmVyKHN0cmVhbT1zdHJlYW0pCiAgICAgICAgIHJl
c3VsdCA9IHNlbGYucnVuX3Rlc3RfcnVubmVyKHJ1bm5lciwgdGVzdCkKLSAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbCgKLSAgICAgICAgICAgICdcbicKLSAgICAgICAgICAgICctLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
XG4nCi0gICAgICAgICAgICAnUmFuIDEgdGVzdCBpbiAwLjAwMHNcbicKLSAgICAgICAgICAgICdc
bicKLSAgICAgICAgICAgICdPSyAoa25vd25fZmFpbHVyZXM9MSlcbicsCi0gICAgICAgICAgICBz
dHJlYW0uZ2V0dmFsdWUoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRDb250YWluc1JlKHN0cmVhbS5n
ZXR2YWx1ZSgpLAorICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgJy0qXG4nCisgICAgICAg
ICAgICAnUmFuIDEgdGVzdCBpbiAuKlxuJworICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAg
J09LIFxcKGtub3duX2ZhaWx1cmVzPTFcXClcbicpCiAKICAgICBkZWYgdGVzdF9za2lwcGVkX3Rl
c3Qoc2VsZik6CiAgICAgICAgICMgcnVuIGEgdGVzdCB0aGF0IGlzIHNraXBwZWQsIGFuZCBjaGVj
ayB0aGUgc3VpdGUgYXMgYSB3aG9sZSBzdGlsbApAQCAtMTE2Miw4ICsxMTg2LDggQEAKICAgICAg
ICAgIiIiVGhlIGJ6cmxpYiBob29rcyBzaG91bGQgYmUgc2FuaXRpc2VkIGJ5IHNldFVwLiIiIgog
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ6cmxpYi5icmFuY2guQnJhbmNoSG9va3MoKSwKICAg
ICAgICAgICAgIGJ6cmxpYi5icmFuY2guQnJhbmNoLmhvb2tzKQotICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKGJ6cmxpYi50cmFuc3BvcnQuc21hcnQuU21hcnRTZXJ2ZXJIb29rcygpLAotICAgICAg
ICAgICAgYnpybGliLnRyYW5zcG9ydC5zbWFydC5TbWFydFRDUFNlcnZlci5ob29rcykKKyAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbChienJsaWIuc21hcnQuc2VydmVyLlNtYXJ0U2VydmVySG9va3Mo
KSwKKyAgICAgICAgICAgIGJ6cmxpYi5zbWFydC5zZXJ2ZXIuU21hcnRUQ1BTZXJ2ZXIuaG9va3Mp
CiAKICAgICBkZWYgdGVzdF9fZ2F0aGVyX2xzcHJvZl9pbl9iZW5jaG1hcmtzKHNlbGYpOgogICAg
ICAgICAiIiJXaGVuIF9nYXRoZXJfbHNwcm9mX2luX2JlbmNobWFya3MgaXMgb24sIGFjY3VtdWxh
dGUgcHJvZmlsZSBkYXRhLgpAQCAtMTM5NiwxNyArMTQyMCw5IEBACiAKICAgICBkZWYgdGVzdF9j
bGVhbl9vdXRwdXQoc2VsZik6CiAgICAgICAgICMgdGVzdCBmdW5jdGlvbmFsaXR5IG9mIGNsZWFu
X3NlbGZ0ZXN0X291dHB1dCgpCi0gICAgICAgIGZyb20gYnpybGliLnRlc3RzIGltcG9ydCBjbGVh
bl9zZWxmdGVzdF9vdXRwdXQKLQotICAgICAgICBkaXJzID0gKCd0ZXN0MDAwMC50bXAnLCAndGVz
dDAwMDEudG1wJywgJ2J6cmxpYicsICd0ZXN0cycpCi0gICAgICAgIGZpbGVzID0gKCdienInLCAn
c2V0dXAucHknLCAndGVzdDk5OTkudG1wJykKLSAgICAgICAgZm9yIGkgaW4gZGlyczoKLSAgICAg
ICAgICAgIG9zLm1rZGlyKGkpCi0gICAgICAgIGZvciBpIGluIGZpbGVzOgotICAgICAgICAgICAg
ZiA9IGZpbGUoaSwgJ3diJykKLSAgICAgICAgICAgIGYud3JpdGUoJ2NvbnRlbnQgb2YgJykKLSAg
ICAgICAgICAgIGYud3JpdGUoaSkKLSAgICAgICAgICAgIGYuY2xvc2UoKQorICAgICAgICBzZWxm
LmJ1aWxkX3RyZWUoWyd0ZXN0MDAwMC50bXAvJywgJ3Rlc3QwMDAxLnRtcC8nLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICdienJsaWIvJywgJ3Rlc3RzLycsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgJ2J6cicsICdzZXR1cC5weScsICd0ZXN0OTk5OS50bXAnXSkKIAogICAgICAgICByb290
ID0gb3MuZ2V0Y3dkdSgpCiAgICAgICAgIGJlZm9yZSA9IG9zLmxpc3RkaXIocm9vdCkKQEAgLTE0
MjIsNiArMTQzOCwxNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3Rlc3Q5OTk5LnRt
cCcsJ3Rlc3RzJ10sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZnRlcikKIAorICAgIGRl
ZiB0ZXN0X2NsZWFuX3JlYWRvbmx5KHNlbGYpOgorICAgICAgICAjIHRlc3QgZm9yIGRlbGV0ZSBy
ZWFkLW9ubHkgZmlsZXMKKyAgICAgICAgc2VsZi5idWlsZF90cmVlKFsndGVzdDAwMDAudG1wLycs
ICd0ZXN0MDAwMC50bXAvZm9vJ10pCisgICAgICAgIG9zdXRpbHMubWFrZV9yZWFkb25seSgndGVz
dDAwMDAudG1wL2ZvbycpCisgICAgICAgIHJvb3QgPSBvcy5nZXRjd2R1KCkKKyAgICAgICAgYmVm
b3JlID0gb3MubGlzdGRpcihyb290KTsgIGJlZm9yZS5zb3J0KCkKKyAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbHMoWyd0ZXN0MDAwMC50bXAnXSwgYmVmb3JlKQorICAgICAgICBjbGVhbl9zZWxmdGVz
dF9vdXRwdXQocm9vdCwgcXVpZXQ9VHJ1ZSkKKyAgICAgICAgYWZ0ZXIgPSBvcy5saXN0ZGlyKHJv
b3QpOyAgIGFmdGVyLnNvcnQoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhbXSwgYWZ0ZXIp
CisKIAogY2xhc3MgVGVzdEtub3duRmFpbHVyZShUZXN0Q2FzZSk6CiAKQEAgLTE0ODQsMyArMTUx
MSwyNyBAQAogICAgICAgICBmZWF0dXJlID0gRmVhdHVyZSgpCiAgICAgICAgIGV4Y2VwdGlvbiA9
IFVuYXZhaWxhYmxlRmVhdHVyZShmZWF0dXJlKQogICAgICAgICBzZWxmLmFzc2VydElzKGZlYXR1
cmUsIGV4Y2VwdGlvbi5hcmdzWzBdKQorCisKK2NsYXNzIFRlc3RTZWxmdGVzdEZpbHRlcmluZyhU
ZXN0Q2FzZSk6CisKKyAgICBkZWYgc2V0VXAoc2VsZik6CisgICAgICAgIHNlbGYuc3VpdGUgPSBU
ZXN0VXRpbC5UZXN0U3VpdGUoKQorICAgICAgICBzZWxmLmxvYWRlciA9IFRlc3RVdGlsLlRlc3RM
b2FkZXIoKQorICAgICAgICBzZWxmLnN1aXRlLmFkZFRlc3Qoc2VsZi5sb2FkZXIubG9hZFRlc3Rz
RnJvbU1vZHVsZU5hbWVzKFsKKyAgICAgICAgICAgICdienJsaWIudGVzdHMudGVzdF9zZWxmdGVz
dCddKSkKKyAgICAgICAgc2VsZi5hbGxfbmFtZXMgPSBbdC5pZCgpIGZvciB0IGluIGl0ZXJfc3Vp
dGVfdGVzdHMoc2VsZi5zdWl0ZSldCisKKyAgICBkZWYgdGVzdF9maWx0ZXJfc3VpdGVfYnlfcmUo
c2VsZik6CisgICAgICAgIGZpbHRlcmVkX3N1aXRlID0gZmlsdGVyX3N1aXRlX2J5X3JlKHNlbGYu
c3VpdGUsICd0ZXN0X2ZpbHRlcicpCisgICAgICAgIGZpbHRlcmVkX25hbWVzID0gW3QuaWQoKSBm
b3IgdCBpbiBpdGVyX3N1aXRlX3Rlc3RzKGZpbHRlcmVkX3N1aXRlKV0KKyAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbChmaWx0ZXJlZF9uYW1lcywgWydienJsaWIudGVzdHMudGVzdF9zZWxmdGVzdC4n
CisgICAgICAgICAgICAnVGVzdFNlbGZ0ZXN0RmlsdGVyaW5nLnRlc3RfZmlsdGVyX3N1aXRlX2J5
X3JlJ10pCisgICAgICAgICAgICAKKyAgICBkZWYgdGVzdF9zb3J0X3N1aXRlX2J5X3JlKHNlbGYp
OgorICAgICAgICBzb3J0ZWRfc3VpdGUgPSBzb3J0X3N1aXRlX2J5X3JlKHNlbGYuc3VpdGUsICd0
ZXN0X2ZpbHRlcicpCisgICAgICAgIHNvcnRlZF9uYW1lcyA9IFt0LmlkKCkgZm9yIHQgaW4gaXRl
cl9zdWl0ZV90ZXN0cyhzb3J0ZWRfc3VpdGUpXQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNv
cnRlZF9uYW1lc1swXSwgJ2J6cmxpYi50ZXN0cy50ZXN0X3NlbGZ0ZXN0LicKKyAgICAgICAgICAg
ICdUZXN0U2VsZnRlc3RGaWx0ZXJpbmcudGVzdF9maWx0ZXJfc3VpdGVfYnlfcmUnKQorICAgICAg
ICBzZWxmLmFzc2VydEVxdWFscyhzb3J0ZWQoc2VsZi5hbGxfbmFtZXMpLCBzb3J0ZWQoc29ydGVk
X25hbWVzKSkKKwoK

=== modified file bzrlib/tests/test_smart_transport.py // last-changed:andrew.b
... ennetts@canonical.com-20070427021911-pk1ylmrmc1ueo9ad // encoding:base64
LS0tIGJ6cmxpYi90ZXN0cy90ZXN0X3NtYXJ0X3RyYW5zcG9ydC5weQorKysgYnpybGliL3Rlc3Rz
L3Rlc3Rfc21hcnRfdHJhbnNwb3J0LnB5CkBAIC0zMCwxNSArMzAsMjUgQEAKICAgICAgICAgdGVz
dHMsCiAgICAgICAgIHVybHV0aWxzLAogICAgICAgICApCitmcm9tIGJ6cmxpYi5zbWFydCBpbXBv
cnQgKAorICAgICAgICBjbGllbnQsCisgICAgICAgIG1lZGl1bSwKKyAgICAgICAgcHJvdG9jb2ws
CisgICAgICAgIHJlcXVlc3QsCisgICAgICAgIHJlcXVlc3QgYXMgX21vZF9yZXF1ZXN0LAorICAg
ICAgICBzZXJ2ZXIsCisgICAgICAgIHZmcywKKykKIGZyb20gYnpybGliLnRlc3RzLkhUVFBUZXN0
VXRpbCBpbXBvcnQgKAogICAgICAgICBIVFRQU2VydmVyV2l0aFNtYXJ0cywKICAgICAgICAgU21h
cnRSZXF1ZXN0SGFuZGxlciwKICAgICAgICAgKQorZnJvbSBienJsaWIudGVzdHMudGVzdF9zbWFy
dCBpbXBvcnQgVGVzdENhc2VXaXRoU21hcnRNZWRpdW0KIGZyb20gYnpybGliLnRyYW5zcG9ydCBp
bXBvcnQgKAogICAgICAgICBnZXRfdHJhbnNwb3J0LAogICAgICAgICBsb2NhbCwKICAgICAgICAg
bWVtb3J5LAotICAgICAgICBzbWFydCwKKyAgICAgICAgcmVtb3RlLAogICAgICAgICApCiBmcm9t
IGJ6cmxpYi50cmFuc3BvcnQuaHR0cCBpbXBvcnQgU21hcnRDbGllbnRIVFRQTWVkaXVtUmVxdWVz
dAogCkBAIC04NSw4ICs5NSw4IEBACiAgICAgICAgIHNvY2suYmluZCgoJzEyNy4wLjAuMScsIDAp
KQogICAgICAgICBzb2NrLmxpc3RlbigxKQogICAgICAgICBwb3J0ID0gc29jay5nZXRzb2NrbmFt
ZSgpWzFdCi0gICAgICAgIG1lZGl1bSA9IHNtYXJ0LlNtYXJ0VENQQ2xpZW50TWVkaXVtKCcxMjcu
MC4wLjEnLCBwb3J0KQotICAgICAgICByZXR1cm4gc29jaywgbWVkaXVtCisgICAgICAgIGNsaWVu
dF9tZWRpdW0gPSBtZWRpdW0uU21hcnRUQ1BDbGllbnRNZWRpdW0oJzEyNy4wLjAuMScsIHBvcnQp
CisgICAgICAgIHJldHVybiBzb2NrLCBjbGllbnRfbWVkaXVtCiAKICAgICBkZWYgcmVjZWl2ZV9i
eXRlc19vbl9zZXJ2ZXIoc2VsZiwgc29jaywgYnl0ZXMpOgogICAgICAgICAiIiJBY2NlcHQgYSBj
b25uZWN0aW9uIG9uIHNvY2sgYW5kIHJlYWQgMyBieXRlcy4KQEAgLTEwOCwyNCArMTE4LDI0IEBA
CiAgICAgICAgICMgdGhpcyBqdXN0IGVuc3VyZXMgdGhhdCB0aGUgY29uc3RydWN0b3Igc3RheXMg
cGFyYW1ldGVyLWZyZWUgd2hpY2gKICAgICAgICAgIyBpcyBpbXBvcnRhbnQgZm9yIHJldXNlIDog
c29tZSBzdWJjbGFzc2VzIHdpbGwgZHluYW1pY2FsbHkgY29ubmVjdCwKICAgICAgICAgIyBvdGhl
cnMgYXJlIGFsd2F5cyBvbiwgZXRjLgotICAgICAgICBtZWRpdW0gPSBzbWFydC5TbWFydENsaWVu
dFN0cmVhbU1lZGl1bSgpCisgICAgICAgIGNsaWVudF9tZWRpdW0gPSBtZWRpdW0uU21hcnRDbGll
bnRTdHJlYW1NZWRpdW0oKQogCiAgICAgZGVmIHRlc3RfY29uc3RydWN0X3NtYXJ0X2NsaWVudF9t
ZWRpdW0oc2VsZik6CiAgICAgICAgICMgdGhlIGJhc2UgY2xpZW50IG1lZGl1bSB0YWtlcyBubyBw
YXJhbWV0ZXJzCi0gICAgICAgIG1lZGl1bSA9IHNtYXJ0LlNtYXJ0Q2xpZW50TWVkaXVtKCkKKyAg
ICAgICAgY2xpZW50X21lZGl1bSA9IG1lZGl1bS5TbWFydENsaWVudE1lZGl1bSgpCiAgICAgCiAg
ICAgZGVmIHRlc3RfY29uc3RydWN0X3NtYXJ0X3NpbXBsZV9waXBlc19jbGllbnRfbWVkaXVtKHNl
bGYpOgogICAgICAgICAjIHRoZSBTaW1wbGVQaXBlcyBjbGllbnQgbWVkaXVtIHRha2VzIHR3byBw
aXBlczoKICAgICAgICAgIyByZWFkYWJsZSBwaXBlLCB3cml0ZWFibGUgcGlwZS4KICAgICAgICAg
IyBDb25zdHJ1Y3Rpbmcgb25lIHNob3VsZCBqdXN0IHNhdmUgdGhlc2UgYW5kIGRvIG5vdGhpbmcu
CiAgICAgICAgICMgV2UgdGVzdCB0aGlzIGJ5IHBhc3NpbmcgaW4gTm9uZS4KLSAgICAgICAgbWVk
aXVtID0gc21hcnQuU21hcnRTaW1wbGVQaXBlc0NsaWVudE1lZGl1bShOb25lLCBOb25lKQorICAg
ICAgICBjbGllbnRfbWVkaXVtID0gbWVkaXVtLlNtYXJ0U2ltcGxlUGlwZXNDbGllbnRNZWRpdW0o
Tm9uZSwgTm9uZSkKICAgICAgICAgCiAgICAgZGVmIHRlc3Rfc2ltcGxlX3BpcGVzX2NsaWVudF9y
ZXF1ZXN0X3R5cGUoc2VsZik6CiAgICAgICAgICMgU2ltcGxlUGlwZXNDbGllbnQgc2hvdWxkIHVz
ZSBTbWFydENsaWVudFN0cmVhbU1lZGl1bVJlcXVlc3Qncy4KLSAgICAgICAgbWVkaXVtID0gc21h
cnQuU21hcnRTaW1wbGVQaXBlc0NsaWVudE1lZGl1bShOb25lLCBOb25lKQotICAgICAgICByZXF1
ZXN0ID0gbWVkaXVtLmdldF9yZXF1ZXN0KCkKLSAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNl
KHJlcXVlc3QsIHNtYXJ0LlNtYXJ0Q2xpZW50U3RyZWFtTWVkaXVtUmVxdWVzdCkKKyAgICAgICAg
Y2xpZW50X21lZGl1bSA9IG1lZGl1bS5TbWFydFNpbXBsZVBpcGVzQ2xpZW50TWVkaXVtKE5vbmUs
IE5vbmUpCisgICAgICAgIHJlcXVlc3QgPSBjbGllbnRfbWVkaXVtLmdldF9yZXF1ZXN0KCkKKyAg
ICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKHJlcXVlc3QsIG1lZGl1bS5TbWFydENsaWVudFN0
cmVhbU1lZGl1bVJlcXVlc3QpCiAKICAgICBkZWYgdGVzdF9zaW1wbGVfcGlwZXNfY2xpZW50X2dl
dF9jb25jdXJyZW50X3JlcXVlc3RzKHNlbGYpOgogICAgICAgICAjIHRoZSBzaW1wbGVfcGlwZXMg
Y2xpZW50IGRvZXMgbm90IHN1cHBvcnQgcGlwZWxpbmVkIHJlcXVlc3RzOgpAQCAtMTM1LDMwICsx
NDUsMzAgQEAKICAgICAgICAgIyBjbGFzc2VzIC0gYXMgdGhlIHNpYmxpbmcgY2xhc3NlcyBzaGFy
ZSB0aGlzIGxvZ2ljLCB0aGV5IGRvIG5vdCBoYXZlCiAgICAgICAgICMgZXhwbGljaXQgdGVzdHMg
Zm9yIHRoaXMuCiAgICAgICAgIG91dHB1dCA9IFN0cmluZ0lPKCkKLSAgICAgICAgbWVkaXVtID0g
c21hcnQuU21hcnRTaW1wbGVQaXBlc0NsaWVudE1lZGl1bShOb25lLCBvdXRwdXQpCi0gICAgICAg
IHJlcXVlc3QgPSBtZWRpdW0uZ2V0X3JlcXVlc3QoKQorICAgICAgICBjbGllbnRfbWVkaXVtID0g
bWVkaXVtLlNtYXJ0U2ltcGxlUGlwZXNDbGllbnRNZWRpdW0oTm9uZSwgb3V0cHV0KQorICAgICAg
ICByZXF1ZXN0ID0gY2xpZW50X21lZGl1bS5nZXRfcmVxdWVzdCgpCiAgICAgICAgIHJlcXVlc3Qu
ZmluaXNoZWRfd3JpdGluZygpCiAgICAgICAgIHJlcXVlc3QuZmluaXNoZWRfcmVhZGluZygpCi0g
ICAgICAgIHJlcXVlc3QyID0gbWVkaXVtLmdldF9yZXF1ZXN0KCkKKyAgICAgICAgcmVxdWVzdDIg
PSBjbGllbnRfbWVkaXVtLmdldF9yZXF1ZXN0KCkKICAgICAgICAgcmVxdWVzdDIuZmluaXNoZWRf
d3JpdGluZygpCiAgICAgICAgIHJlcXVlc3QyLmZpbmlzaGVkX3JlYWRpbmcoKQogCiAgICAgZGVm
IHRlc3Rfc2ltcGxlX3BpcGVzX2NsaWVudF9fYWNjZXB0X2J5dGVzX3dyaXRlc190b193cml0YWJs
ZShzZWxmKToKICAgICAgICAgIyBhY2NlcHRfYnl0ZXMgd3JpdGVzIHRvIHRoZSB3cml0ZWFibGUg
cGlwZS4KICAgICAgICAgb3V0cHV0ID0gU3RyaW5nSU8oKQotICAgICAgICBtZWRpdW0gPSBzbWFy
dC5TbWFydFNpbXBsZVBpcGVzQ2xpZW50TWVkaXVtKE5vbmUsIG91dHB1dCkKLSAgICAgICAgbWVk
aXVtLl9hY2NlcHRfYnl0ZXMoJ2FiYycpCisgICAgICAgIGNsaWVudF9tZWRpdW0gPSBtZWRpdW0u
U21hcnRTaW1wbGVQaXBlc0NsaWVudE1lZGl1bShOb25lLCBvdXRwdXQpCisgICAgICAgIGNsaWVu
dF9tZWRpdW0uX2FjY2VwdF9ieXRlcygnYWJjJykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgn
YWJjJywgb3V0cHV0LmdldHZhbHVlKCkpCiAgICAgCiAgICAgZGVmIHRlc3Rfc2ltcGxlX3BpcGVz
X2NsaWVudF9kaXNjb25uZWN0X2RvZXNfbm90aGluZyhzZWxmKToKICAgICAgICAgIyBjYWxsaW5n
IGRpc2Nvbm5lY3QgZG9lcyBub3RoaW5nLgogICAgICAgICBpbnB1dCA9IFN0cmluZ0lPKCkKICAg
ICAgICAgb3V0cHV0ID0gU3RyaW5nSU8oKQotICAgICAgICBtZWRpdW0gPSBzbWFydC5TbWFydFNp
bXBsZVBpcGVzQ2xpZW50TWVkaXVtKGlucHV0LCBvdXRwdXQpCisgICAgICAgIGNsaWVudF9tZWRp
dW0gPSBtZWRpdW0uU21hcnRTaW1wbGVQaXBlc0NsaWVudE1lZGl1bShpbnB1dCwgb3V0cHV0KQog
ICAgICAgICAjIHNlbmQgc29tZSBieXRlcyB0byBlbnN1cmUgZGlzY29ubmVjdGluZyBhZnRlciBh
Y3Rpdml0eSBzdGlsbCBkb2VzIG5vdAogICAgICAgICAjIGNsb3NlLgotICAgICAgICBtZWRpdW0u
X2FjY2VwdF9ieXRlcygnYWJjJykKLSAgICAgICAgbWVkaXVtLmRpc2Nvbm5lY3QoKQorICAgICAg
ICBjbGllbnRfbWVkaXVtLl9hY2NlcHRfYnl0ZXMoJ2FiYycpCisgICAgICAgIGNsaWVudF9tZWRp
dW0uZGlzY29ubmVjdCgpCiAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoaW5wdXQuY2xvc2VkKQog
ICAgICAgICBzZWxmLmFzc2VydEZhbHNlKG91dHB1dC5jbG9zZWQpCiAKQEAgLTE2NywxMCArMTc3
LDEwIEBACiAgICAgICAgICMgYWNjZXB0X2J5dGVzIHdyaXRlcyB0by4KICAgICAgICAgaW5wdXQg
PSBTdHJpbmdJTygpCiAgICAgICAgIG91dHB1dCA9IFN0cmluZ0lPKCkKLSAgICAgICAgbWVkaXVt
ID0gc21hcnQuU21hcnRTaW1wbGVQaXBlc0NsaWVudE1lZGl1bShpbnB1dCwgb3V0cHV0KQotICAg
ICAgICBtZWRpdW0uX2FjY2VwdF9ieXRlcygnYWJjJykKLSAgICAgICAgbWVkaXVtLmRpc2Nvbm5l
Y3QoKQotICAgICAgICBtZWRpdW0uX2FjY2VwdF9ieXRlcygnYWJjJykKKyAgICAgICAgY2xpZW50
X21lZGl1bSA9IG1lZGl1bS5TbWFydFNpbXBsZVBpcGVzQ2xpZW50TWVkaXVtKGlucHV0LCBvdXRw
dXQpCisgICAgICAgIGNsaWVudF9tZWRpdW0uX2FjY2VwdF9ieXRlcygnYWJjJykKKyAgICAgICAg
Y2xpZW50X21lZGl1bS5kaXNjb25uZWN0KCkKKyAgICAgICAgY2xpZW50X21lZGl1bS5fYWNjZXB0
X2J5dGVzKCdhYmMnKQogICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGlucHV0LmNsb3NlZCkKICAg
ICAgICAgc2VsZi5hc3NlcnRGYWxzZShvdXRwdXQuY2xvc2VkKQogICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKCdhYmNhYmMnLCBvdXRwdXQuZ2V0dmFsdWUoKSkKQEAgLTE3OCwxNyArMTg4LDE3IEBA
CiAgICAgZGVmIHRlc3Rfc2ltcGxlX3BpcGVzX2NsaWVudF9pZ25vcmVzX2Rpc2Nvbm5lY3Rfd2hl
bl9ub3RfY29ubmVjdGVkKHNlbGYpOgogICAgICAgICAjIERvaW5nIGEgZGlzY29ubmVjdCBvbiBh
IG5ldyAoYW5kIHRodXMgdW5jb25uZWN0ZWQpIFNpbXBsZVBpcGVzIG1lZGl1bQogICAgICAgICAj
IGRvZXMgbm90aGluZy4KLSAgICAgICAgbWVkaXVtID0gc21hcnQuU21hcnRTaW1wbGVQaXBlc0Ns
aWVudE1lZGl1bShOb25lLCBOb25lKQotICAgICAgICBtZWRpdW0uZGlzY29ubmVjdCgpCisgICAg
ICAgIGNsaWVudF9tZWRpdW0gPSBtZWRpdW0uU21hcnRTaW1wbGVQaXBlc0NsaWVudE1lZGl1bShO
b25lLCBOb25lKQorICAgICAgICBjbGllbnRfbWVkaXVtLmRpc2Nvbm5lY3QoKQogCiAgICAgZGVm
IHRlc3Rfc2ltcGxlX3BpcGVzX2NsaWVudF9jYW5fYWx3YXlzX3JlYWQoc2VsZik6CiAgICAgICAg
ICMgU21hcnRTaW1wbGVQaXBlc0NsaWVudE1lZGl1bSBpcyBuZXZlciBkaXNjb25uZWN0ZWQsIHNv
IHJlYWRfYnl0ZXMKICAgICAgICAgIyBhbHdheXMgdHJpZXMgdG8gcmVhZCBmcm9tIHRoZSB1bmRl
cmx5aW5nIHBpcGUuCiAgICAgICAgIGlucHV0ID0gU3RyaW5nSU8oJ2FiY2RlZicpCi0gICAgICAg
IG1lZGl1bSA9IHNtYXJ0LlNtYXJ0U2ltcGxlUGlwZXNDbGllbnRNZWRpdW0oaW5wdXQsIE5vbmUp
Ci0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ2FiYycsIG1lZGl1bS5yZWFkX2J5dGVzKDMpKQot
ICAgICAgICBtZWRpdW0uZGlzY29ubmVjdCgpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ2Rl
ZicsIG1lZGl1bS5yZWFkX2J5dGVzKDMpKQorICAgICAgICBjbGllbnRfbWVkaXVtID0gbWVkaXVt
LlNtYXJ0U2ltcGxlUGlwZXNDbGllbnRNZWRpdW0oaW5wdXQsIE5vbmUpCisgICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwoJ2FiYycsIGNsaWVudF9tZWRpdW0ucmVhZF9ieXRlcygzKSkKKyAgICAgICAg
Y2xpZW50X21lZGl1bS5kaXNjb25uZWN0KCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnZGVm
JywgY2xpZW50X21lZGl1bS5yZWFkX2J5dGVzKDMpKQogICAgICAgICAKICAgICBkZWYgdGVzdF9z
aW1wbGVfcGlwZXNfY2xpZW50X3N1cHBvcnRzX19mbHVzaChzZWxmKToKICAgICAgICAgIyBpbnZv
a2luZyBfZmx1c2ggb24gYSBTaW1wbGVQaXBlc0NsaWVudCBzaG91bGQgZmx1c2ggdGhlIG91dHB1
dCAKQEAgLTIwMCwxMiArMjEwLDEyIEBACiAgICAgICAgIGZsdXNoX2NhbGxzID0gW10KICAgICAg
ICAgZGVmIGxvZ2dpbmdfZmx1c2goKTogZmx1c2hfY2FsbHMuYXBwZW5kKCdmbHVzaCcpCiAgICAg
ICAgIG91dHB1dC5mbHVzaCA9IGxvZ2dpbmdfZmx1c2gKLSAgICAgICAgbWVkaXVtID0gc21hcnQu
U21hcnRTaW1wbGVQaXBlc0NsaWVudE1lZGl1bShpbnB1dCwgb3V0cHV0KQorICAgICAgICBjbGll
bnRfbWVkaXVtID0gbWVkaXVtLlNtYXJ0U2ltcGxlUGlwZXNDbGllbnRNZWRpdW0oaW5wdXQsIG91
dHB1dCkKICAgICAgICAgIyB0aGlzIGNhbGwgaXMgaGVyZSB0byBlbnN1cmUgd2Ugb25seSBmbHVz
aCBvbmNlLCBub3Qgb24gZXZlcnkKICAgICAgICAgIyBfYWNjZXB0X2J5dGVzIGNhbGwuCi0gICAg
ICAgIG1lZGl1bS5fYWNjZXB0X2J5dGVzKCdhYmMnKQotICAgICAgICBtZWRpdW0uX2ZsdXNoKCkK
LSAgICAgICAgbWVkaXVtLmRpc2Nvbm5lY3QoKQorICAgICAgICBjbGllbnRfbWVkaXVtLl9hY2Nl
cHRfYnl0ZXMoJ2FiYycpCisgICAgICAgIGNsaWVudF9tZWRpdW0uX2ZsdXNoKCkKKyAgICAgICAg
Y2xpZW50X21lZGl1bS5kaXNjb25uZWN0KCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChbJ2Zs
dXNoJ10sIGZsdXNoX2NhbGxzKQogCiAgICAgZGVmIHRlc3RfY29uc3RydWN0X3NtYXJ0X3NzaF9j
bGllbnRfbWVkaXVtKHNlbGYpOgpAQCAtMjE5LDcgKzIyOSw3IEBACiAgICAgICAgIHVub3BlbmVk
X3BvcnQgPSBzb2NrLmdldHNvY2tuYW1lKClbMV0KICAgICAgICAgIyBoYXZpbmcgdmVuZG9yIGJl
IGludmFsaWQgbWVhbnMgdGhhdCBpZiBpdCB0cmllcyB0byBjb25uZWN0IHZpYSB0aGUKICAgICAg
ICAgIyB2ZW5kb3IgaXQgd2lsbCBibG93IHVwLgotICAgICAgICBtZWRpdW0gPSBzbWFydC5TbWFy
dFNTSENsaWVudE1lZGl1bSgnMTI3LjAuMC4xJywgdW5vcGVuZWRfcG9ydCwKKyAgICAgICAgY2xp
ZW50X21lZGl1bSA9IG1lZGl1bS5TbWFydFNTSENsaWVudE1lZGl1bSgnMTI3LjAuMC4xJywgdW5v
cGVuZWRfcG9ydCwKICAgICAgICAgICAgIHVzZXJuYW1lPU5vbmUsIHBhc3N3b3JkPU5vbmUsIHZl
bmRvcj0ibm90IGEgdmVuZG9yIikKICAgICAgICAgc29jay5jbG9zZSgpCiAKQEAgLTIyOCw5ICsy
MzgsOSBAQAogICAgICAgICAjIGl0IGJ5dGVzLgogICAgICAgICBvdXRwdXQgPSBTdHJpbmdJTygp
CiAgICAgICAgIHZlbmRvciA9IFN0cmluZ0lPU1NIVmVuZG9yKFN0cmluZ0lPKCksIG91dHB1dCkK
LSAgICAgICAgbWVkaXVtID0gc21hcnQuU21hcnRTU0hDbGllbnRNZWRpdW0oJ2EgaG9zdG5hbWUn
LCAnYSBwb3J0JywgJ2EgdXNlcm5hbWUnLAotICAgICAgICAgICAgJ2EgcGFzc3dvcmQnLCB2ZW5k
b3IpCi0gICAgICAgIG1lZGl1bS5fYWNjZXB0X2J5dGVzKCdhYmMnKQorICAgICAgICBjbGllbnRf
bWVkaXVtID0gbWVkaXVtLlNtYXJ0U1NIQ2xpZW50TWVkaXVtKAorICAgICAgICAgICAgJ2EgaG9z
dG5hbWUnLCAnYSBwb3J0JywgJ2EgdXNlcm5hbWUnLCAnYSBwYXNzd29yZCcsIHZlbmRvcikKKyAg
ICAgICAgY2xpZW50X21lZGl1bS5fYWNjZXB0X2J5dGVzKCdhYmMnKQogICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKCdhYmMnLCBvdXRwdXQuZ2V0dmFsdWUoKSkKICAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbChbKCdjb25uZWN0X3NzaCcsICdhIHVzZXJuYW1lJywgJ2EgcGFzc3dvcmQnLAogICAgICAg
ICAgICAgJ2EgaG9zdG5hbWUnLCAnYSBwb3J0JywKQEAgLTI0Nyw5ICsyNTcsOSBAQAogICAgICAg
ICAgICAgb3N1dGlscy5zZXRfb3JfdW5zZXRfZW52KCdCWlJfUkVNT1RFX1BBVEgnLCBvcmlnX2J6
cl9yZW1vdGVfcGF0aCkKICAgICAgICAgc2VsZi5hZGRDbGVhbnVwKGNsZWFudXBfZW52aXJvbikK
ICAgICAgICAgb3MuZW52aXJvblsnQlpSX1JFTU9URV9QQVRIJ10gPSAnZnVnbHknCi0gICAgICAg
IG1lZGl1bSA9IHNtYXJ0LlNtYXJ0U1NIQ2xpZW50TWVkaXVtKCdhIGhvc3RuYW1lJywgJ2EgcG9y
dCcsICdhIHVzZXJuYW1lJywKKyAgICAgICAgY2xpZW50X21lZGl1bSA9IG1lZGl1bS5TbWFydFNT
SENsaWVudE1lZGl1bSgnYSBob3N0bmFtZScsICdhIHBvcnQnLCAnYSB1c2VybmFtZScsCiAgICAg
ICAgICAgICAnYSBwYXNzd29yZCcsIHZlbmRvcikKLSAgICAgICAgbWVkaXVtLl9hY2NlcHRfYnl0
ZXMoJ2FiYycpCisgICAgICAgIGNsaWVudF9tZWRpdW0uX2FjY2VwdF9ieXRlcygnYWJjJykKICAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnYWJjJywgb3V0cHV0LmdldHZhbHVlKCkpCiAgICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwoWygnY29ubmVjdF9zc2gnLCAnYSB1c2VybmFtZScsICdhIHBhc3N3
b3JkJywKICAgICAgICAgICAgICdhIGhvc3RuYW1lJywgJ2EgcG9ydCcsCkBAIC0yNjIsOSArMjcy
LDkgQEAKICAgICAgICAgaW5wdXQgPSBTdHJpbmdJTygpCiAgICAgICAgIG91dHB1dCA9IFN0cmlu
Z0lPKCkKICAgICAgICAgdmVuZG9yID0gU3RyaW5nSU9TU0hWZW5kb3IoaW5wdXQsIG91dHB1dCkK
LSAgICAgICAgbWVkaXVtID0gc21hcnQuU21hcnRTU0hDbGllbnRNZWRpdW0oJ2EgaG9zdG5hbWUn
LCB2ZW5kb3I9dmVuZG9yKQotICAgICAgICBtZWRpdW0uX2FjY2VwdF9ieXRlcygnYWJjJykKLSAg
ICAgICAgbWVkaXVtLmRpc2Nvbm5lY3QoKQorICAgICAgICBjbGllbnRfbWVkaXVtID0gbWVkaXVt
LlNtYXJ0U1NIQ2xpZW50TWVkaXVtKCdhIGhvc3RuYW1lJywgdmVuZG9yPXZlbmRvcikKKyAgICAg
ICAgY2xpZW50X21lZGl1bS5fYWNjZXB0X2J5dGVzKCdhYmMnKQorICAgICAgICBjbGllbnRfbWVk
aXVtLmRpc2Nvbm5lY3QoKQogICAgICAgICBzZWxmLmFzc2VydFRydWUoaW5wdXQuY2xvc2VkKQog
ICAgICAgICBzZWxmLmFzc2VydFRydWUob3V0cHV0LmNsb3NlZCkKICAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbChbCkBAIC0yODIsMTcgKzI5MiwxNyBAQAogICAgICAgICBpbnB1dCA9IFN0cmluZ0lP
KCkKICAgICAgICAgb3V0cHV0ID0gU3RyaW5nSU8oKQogICAgICAgICB2ZW5kb3IgPSBTdHJpbmdJ
T1NTSFZlbmRvcihpbnB1dCwgb3V0cHV0KQotICAgICAgICBtZWRpdW0gPSBzbWFydC5TbWFydFNT
SENsaWVudE1lZGl1bSgnYSBob3N0bmFtZScsIHZlbmRvcj12ZW5kb3IpCi0gICAgICAgIG1lZGl1
bS5fYWNjZXB0X2J5dGVzKCdhYmMnKQotICAgICAgICBtZWRpdW0uZGlzY29ubmVjdCgpCisgICAg
ICAgIGNsaWVudF9tZWRpdW0gPSBtZWRpdW0uU21hcnRTU0hDbGllbnRNZWRpdW0oJ2EgaG9zdG5h
bWUnLCB2ZW5kb3I9dmVuZG9yKQorICAgICAgICBjbGllbnRfbWVkaXVtLl9hY2NlcHRfYnl0ZXMo
J2FiYycpCisgICAgICAgIGNsaWVudF9tZWRpdW0uZGlzY29ubmVjdCgpCiAgICAgICAgICMgdGhl
IGRpc2Nvbm5lY3QgaGFzIGNsb3NlZCBvdXRwdXQsIHNvIHdlIG5lZWQgYSBuZXcgb3V0cHV0IGZv
ciB0aGUKICAgICAgICAgIyBuZXcgY29ubmVjdGlvbiB0byB3cml0ZSB0by4KICAgICAgICAgaW5w
dXQyID0gU3RyaW5nSU8oKQogICAgICAgICBvdXRwdXQyID0gU3RyaW5nSU8oKQogICAgICAgICB2
ZW5kb3IucmVhZF9mcm9tID0gaW5wdXQyCiAgICAgICAgIHZlbmRvci53cml0ZV90byA9IG91dHB1
dDIKLSAgICAgICAgbWVkaXVtLl9hY2NlcHRfYnl0ZXMoJ2FiYycpCi0gICAgICAgIG1lZGl1bS5k
aXNjb25uZWN0KCkKKyAgICAgICAgY2xpZW50X21lZGl1bS5fYWNjZXB0X2J5dGVzKCdhYmMnKQor
ICAgICAgICBjbGllbnRfbWVkaXVtLmRpc2Nvbm5lY3QoKQogICAgICAgICBzZWxmLmFzc2VydFRy
dWUoaW5wdXQuY2xvc2VkKQogICAgICAgICBzZWxmLmFzc2VydFRydWUob3V0cHV0LmNsb3NlZCkK
ICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlucHV0Mi5jbG9zZWQpCkBAIC0zMTAsMTUgKzMyMCwx
NSBAQAogICAgIGRlZiB0ZXN0X3NzaF9jbGllbnRfaWdub3Jlc19kaXNjb25uZWN0X3doZW5fbm90
X2Nvbm5lY3RlZChzZWxmKToKICAgICAgICAgIyBEb2luZyBhIGRpc2Nvbm5lY3Qgb24gYSBuZXcg
KGFuZCB0aHVzIHVuY29ubmVjdGVkKSBTU0ggbWVkaXVtCiAgICAgICAgICMgZG9lcyBub3QgZmFp
bC4gIEl0J3Mgb2sgdG8gZGlzY29ubmVjdCBhbiB1bmNvbm5lY3RlZCBtZWRpdW0uCi0gICAgICAg
IG1lZGl1bSA9IHNtYXJ0LlNtYXJ0U1NIQ2xpZW50TWVkaXVtKE5vbmUpCi0gICAgICAgIG1lZGl1
bS5kaXNjb25uZWN0KCkKKyAgICAgICAgY2xpZW50X21lZGl1bSA9IG1lZGl1bS5TbWFydFNTSENs
aWVudE1lZGl1bShOb25lKQorICAgICAgICBjbGllbnRfbWVkaXVtLmRpc2Nvbm5lY3QoKQogCiAg
ICAgZGVmIHRlc3Rfc3NoX2NsaWVudF9yYWlzZXNfb25fcmVhZF93aGVuX25vdF9jb25uZWN0ZWQo
c2VsZik6CiAgICAgICAgICMgRG9pbmcgYSByZWFkIG9uIGEgbmV3IChhbmQgdGh1cyB1bmNvbm5l
Y3RlZCkgU1NIIG1lZGl1bSByYWlzZXMKICAgICAgICAgIyBNZWRpdW1Ob3RDb25uZWN0ZWQuCi0g
ICAgICAgIG1lZGl1bSA9IHNtYXJ0LlNtYXJ0U1NIQ2xpZW50TWVkaXVtKE5vbmUpCi0gICAgICAg
IHNlbGYuYXNzZXJ0UmFpc2VzKGVycm9ycy5NZWRpdW1Ob3RDb25uZWN0ZWQsIG1lZGl1bS5yZWFk
X2J5dGVzLCAwKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhlcnJvcnMuTWVkaXVtTm90Q29u
bmVjdGVkLCBtZWRpdW0ucmVhZF9ieXRlcywgMSkKKyAgICAgICAgY2xpZW50X21lZGl1bSA9IG1l
ZGl1bS5TbWFydFNTSENsaWVudE1lZGl1bShOb25lKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNl
cyhlcnJvcnMuTWVkaXVtTm90Q29ubmVjdGVkLCBjbGllbnRfbWVkaXVtLnJlYWRfYnl0ZXMsIDAp
CisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKGVycm9ycy5NZWRpdW1Ob3RDb25uZWN0ZWQsIGNs
aWVudF9tZWRpdW0ucmVhZF9ieXRlcywgMSkKIAogICAgIGRlZiB0ZXN0X3NzaF9jbGllbnRfc3Vw
cG9ydHNfX2ZsdXNoKHNlbGYpOgogICAgICAgICAjIGludm9raW5nIF9mbHVzaCBvbiBhIFNTSENs
aWVudE1lZGl1bSBzaG91bGQgZmx1c2ggdGhlIG91dHB1dCAKQEAgLTMzMSwxMiArMzQxLDEyIEBA
CiAgICAgICAgIGRlZiBsb2dnaW5nX2ZsdXNoKCk6IGZsdXNoX2NhbGxzLmFwcGVuZCgnZmx1c2gn
KQogICAgICAgICBvdXRwdXQuZmx1c2ggPSBsb2dnaW5nX2ZsdXNoCiAgICAgICAgIHZlbmRvciA9
IFN0cmluZ0lPU1NIVmVuZG9yKGlucHV0LCBvdXRwdXQpCi0gICAgICAgIG1lZGl1bSA9IHNtYXJ0
LlNtYXJ0U1NIQ2xpZW50TWVkaXVtKCdhIGhvc3RuYW1lJywgdmVuZG9yPXZlbmRvcikKKyAgICAg
ICAgY2xpZW50X21lZGl1bSA9IG1lZGl1bS5TbWFydFNTSENsaWVudE1lZGl1bSgnYSBob3N0bmFt
ZScsIHZlbmRvcj12ZW5kb3IpCiAgICAgICAgICMgdGhpcyBjYWxsIGlzIGhlcmUgdG8gZW5zdXJl
IHdlIG9ubHkgZmx1c2ggb25jZSwgbm90IG9uIGV2ZXJ5CiAgICAgICAgICMgX2FjY2VwdF9ieXRl
cyBjYWxsLgotICAgICAgICBtZWRpdW0uX2FjY2VwdF9ieXRlcygnYWJjJykKLSAgICAgICAgbWVk
aXVtLl9mbHVzaCgpCi0gICAgICAgIG1lZGl1bS5kaXNjb25uZWN0KCkKKyAgICAgICAgY2xpZW50
X21lZGl1bS5fYWNjZXB0X2J5dGVzKCdhYmMnKQorICAgICAgICBjbGllbnRfbWVkaXVtLl9mbHVz
aCgpCisgICAgICAgIGNsaWVudF9tZWRpdW0uZGlzY29ubmVjdCgpCiAgICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwoWydmbHVzaCddLCBmbHVzaF9jYWxscykKICAgICAgICAgCiAgICAgZGVmIHRlc3Rf
Y29uc3RydWN0X3NtYXJ0X3RjcF9jbGllbnRfbWVkaXVtKHNlbGYpOgpAQCAtMzQ1LDcgKzM1NSw3
IEBACiAgICAgICAgIHNvY2sgPSBzb2NrZXQuc29ja2V0KHNvY2tldC5BRl9JTkVULCBzb2NrZXQu
U09DS19TVFJFQU0pCiAgICAgICAgIHNvY2suYmluZCgoJzEyNy4wLjAuMScsIDApKQogICAgICAg
ICB1bm9wZW5lZF9wb3J0ID0gc29jay5nZXRzb2NrbmFtZSgpWzFdCi0gICAgICAgIG1lZGl1bSA9
IHNtYXJ0LlNtYXJ0VENQQ2xpZW50TWVkaXVtKCcxMjcuMC4wLjEnLCB1bm9wZW5lZF9wb3J0KQor
ICAgICAgICBjbGllbnRfbWVkaXVtID0gbWVkaXVtLlNtYXJ0VENQQ2xpZW50TWVkaXVtKCcxMjcu
MC4wLjEnLCB1bm9wZW5lZF9wb3J0KQogICAgICAgICBzb2NrLmNsb3NlKCkKIAogICAgIGRlZiB0
ZXN0X3RjcF9jbGllbnRfY29ubmVjdHNfb25fZmlyc3RfdXNlKHNlbGYpOgpAQCAtMzc4LDE1ICsz
ODgsMTUgQEAKICAgICBkZWYgdGVzdF90Y3BfY2xpZW50X2lnbm9yZXNfZGlzY29ubmVjdF93aGVu
X25vdF9jb25uZWN0ZWQoc2VsZik6CiAgICAgICAgICMgRG9pbmcgYSBkaXNjb25uZWN0IG9uIGEg
bmV3IChhbmQgdGh1cyB1bmNvbm5lY3RlZCkgVENQIG1lZGl1bQogICAgICAgICAjIGRvZXMgbm90
IGZhaWwuICBJdCdzIG9rIHRvIGRpc2Nvbm5lY3QgYW4gdW5jb25uZWN0ZWQgbWVkaXVtLgotICAg
ICAgICBtZWRpdW0gPSBzbWFydC5TbWFydFRDUENsaWVudE1lZGl1bShOb25lLCBOb25lKQotICAg
ICAgICBtZWRpdW0uZGlzY29ubmVjdCgpCisgICAgICAgIGNsaWVudF9tZWRpdW0gPSBtZWRpdW0u
U21hcnRUQ1BDbGllbnRNZWRpdW0oTm9uZSwgTm9uZSkKKyAgICAgICAgY2xpZW50X21lZGl1bS5k
aXNjb25uZWN0KCkKIAogICAgIGRlZiB0ZXN0X3RjcF9jbGllbnRfcmFpc2VzX29uX3JlYWRfd2hl
bl9ub3RfY29ubmVjdGVkKHNlbGYpOgogICAgICAgICAjIERvaW5nIGEgcmVhZCBvbiBhIG5ldyAo
YW5kIHRodXMgdW5jb25uZWN0ZWQpIFRDUCBtZWRpdW0gcmFpc2VzCiAgICAgICAgICMgTWVkaXVt
Tm90Q29ubmVjdGVkLgotICAgICAgICBtZWRpdW0gPSBzbWFydC5TbWFydFRDUENsaWVudE1lZGl1
bShOb25lLCBOb25lKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhlcnJvcnMuTWVkaXVtTm90
Q29ubmVjdGVkLCBtZWRpdW0ucmVhZF9ieXRlcywgMCkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlz
ZXMoZXJyb3JzLk1lZGl1bU5vdENvbm5lY3RlZCwgbWVkaXVtLnJlYWRfYnl0ZXMsIDEpCisgICAg
ICAgIGNsaWVudF9tZWRpdW0gPSBtZWRpdW0uU21hcnRUQ1BDbGllbnRNZWRpdW0oTm9uZSwgTm9u
ZSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoZXJyb3JzLk1lZGl1bU5vdENvbm5lY3RlZCwg
Y2xpZW50X21lZGl1bS5yZWFkX2J5dGVzLCAwKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhl
cnJvcnMuTWVkaXVtTm90Q29ubmVjdGVkLCBjbGllbnRfbWVkaXVtLnJlYWRfYnl0ZXMsIDEpCiAK
ICAgICBkZWYgdGVzdF90Y3BfY2xpZW50X3N1cHBvcnRzX19mbHVzaChzZWxmKToKICAgICAgICAg
IyBpbnZva2luZyBfZmx1c2ggb24gYSBUQ1BDbGllbnRNZWRpdW0gc2hvdWxkIGRvIHNvbWV0aGlu
ZyB1c2VmdWwuCkBAIC00MjEsOCArNDMxLDggQEAKICAgICAgICAgIyBXcml0aW5nQ29tcGxldGVk
IHRvIHByZXZlbnQgYmFkIGFzc3VtcHRpb25zIG9uIHN0cmVhbSBlbnZpcm9ubWVudHMKICAgICAg
ICAgIyBicmVha2luZyB0aGUgbmVlZHMgb2YgbWVzc2FnZS1iYXNlZCBlbnZpcm9ubWVudHMuCiAg
ICAgICAgIG91dHB1dCA9IFN0cmluZ0lPKCkKLSAgICAgICAgbWVkaXVtID0gc21hcnQuU21hcnRT
aW1wbGVQaXBlc0NsaWVudE1lZGl1bShOb25lLCBvdXRwdXQpCi0gICAgICAgIHJlcXVlc3QgPSBz
bWFydC5TbWFydENsaWVudFN0cmVhbU1lZGl1bVJlcXVlc3QobWVkaXVtKQorICAgICAgICBjbGll
bnRfbWVkaXVtID0gbWVkaXVtLlNtYXJ0U2ltcGxlUGlwZXNDbGllbnRNZWRpdW0oTm9uZSwgb3V0
cHV0KQorICAgICAgICByZXF1ZXN0ID0gbWVkaXVtLlNtYXJ0Q2xpZW50U3RyZWFtTWVkaXVtUmVx
dWVzdChjbGllbnRfbWVkaXVtKQogICAgICAgICByZXF1ZXN0LmZpbmlzaGVkX3dyaXRpbmcoKQog
ICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhlcnJvcnMuV3JpdGluZ0NvbXBsZXRlZCwgcmVxdWVz
dC5hY2NlcHRfYnl0ZXMsIE5vbmUpCiAKQEAgLTQzMiw4ICs0NDIsOCBAQAogICAgICAgICAjIGFu
ZCBjaGVja2luZyB0aGF0IHRoZSBwaXBlcyBnZXQgdGhlIGRhdGEuCiAgICAgICAgIGlucHV0ID0g
U3RyaW5nSU8oKQogICAgICAgICBvdXRwdXQgPSBTdHJpbmdJTygpCi0gICAgICAgIG1lZGl1bSA9
IHNtYXJ0LlNtYXJ0U2ltcGxlUGlwZXNDbGllbnRNZWRpdW0oaW5wdXQsIG91dHB1dCkKLSAgICAg
ICAgcmVxdWVzdCA9IHNtYXJ0LlNtYXJ0Q2xpZW50U3RyZWFtTWVkaXVtUmVxdWVzdChtZWRpdW0p
CisgICAgICAgIGNsaWVudF9tZWRpdW0gPSBtZWRpdW0uU21hcnRTaW1wbGVQaXBlc0NsaWVudE1l
ZGl1bShpbnB1dCwgb3V0cHV0KQorICAgICAgICByZXF1ZXN0ID0gbWVkaXVtLlNtYXJ0Q2xpZW50
U3RyZWFtTWVkaXVtUmVxdWVzdChjbGllbnRfbWVkaXVtKQogICAgICAgICByZXF1ZXN0LmFjY2Vw
dF9ieXRlcygnMTIzJykKICAgICAgICAgcmVxdWVzdC5maW5pc2hlZF93cml0aW5nKCkKICAgICAg
ICAgcmVxdWVzdC5maW5pc2hlZF9yZWFkaW5nKCkKQEAgLTQ0NCwzNCArNDU0LDM0IEBACiAgICAg
ICAgICMgY29uc3RydWN0aW5nIGEgU21hcnRDbGllbnRTdHJlYW1NZWRpdW1SZXF1ZXN0IG9uIGEg
U3RyZWFtTWVkaXVtIHNldHMKICAgICAgICAgIyB0aGUgY3VycmVudCByZXF1ZXN0IHRvIHRoZSBu
ZXcgU21hcnRDbGllbnRTdHJlYW1NZWRpdW1SZXF1ZXN0CiAgICAgICAgIG91dHB1dCA9IFN0cmlu
Z0lPKCkKLSAgICAgICAgbWVkaXVtID0gc21hcnQuU21hcnRTaW1wbGVQaXBlc0NsaWVudE1lZGl1
bShOb25lLCBvdXRwdXQpCi0gICAgICAgIHJlcXVlc3QgPSBzbWFydC5TbWFydENsaWVudFN0cmVh
bU1lZGl1bVJlcXVlc3QobWVkaXVtKQotICAgICAgICBzZWxmLmFzc2VydElzKG1lZGl1bS5fY3Vy
cmVudF9yZXF1ZXN0LCByZXF1ZXN0KQorICAgICAgICBjbGllbnRfbWVkaXVtID0gbWVkaXVtLlNt
YXJ0U2ltcGxlUGlwZXNDbGllbnRNZWRpdW0oTm9uZSwgb3V0cHV0KQorICAgICAgICByZXF1ZXN0
ID0gbWVkaXVtLlNtYXJ0Q2xpZW50U3RyZWFtTWVkaXVtUmVxdWVzdChjbGllbnRfbWVkaXVtKQor
ICAgICAgICBzZWxmLmFzc2VydElzKGNsaWVudF9tZWRpdW0uX2N1cnJlbnRfcmVxdWVzdCwgcmVx
dWVzdCkKIAogICAgIGRlZiB0ZXN0X2NvbnN0cnVjdF93aGlsZV9hbm90aGVyX3JlcXVlc3RfYWN0
aXZlX3Rocm93cyhzZWxmKToKICAgICAgICAgIyBjb25zdHJ1Y3RpbmcgYSBTbWFydENsaWVudFN0
cmVhbU1lZGl1bVJlcXVlc3Qgb24gYSBTdHJlYW1NZWRpdW0gd2l0aAogICAgICAgICAjIGEgbm9u
LU5vbmUgX2N1cnJlbnRfcmVxdWVzdCByYWlzZXMgVG9vTWFueUNvbmN1cnJlbnRSZXF1ZXN0cy4K
ICAgICAgICAgb3V0cHV0ID0gU3RyaW5nSU8oKQotICAgICAgICBtZWRpdW0gPSBzbWFydC5TbWFy
dFNpbXBsZVBpcGVzQ2xpZW50TWVkaXVtKE5vbmUsIG91dHB1dCkKLSAgICAgICAgbWVkaXVtLl9j
dXJyZW50X3JlcXVlc3QgPSAiYSIKKyAgICAgICAgY2xpZW50X21lZGl1bSA9IG1lZGl1bS5TbWFy
dFNpbXBsZVBpcGVzQ2xpZW50TWVkaXVtKE5vbmUsIG91dHB1dCkKKyAgICAgICAgY2xpZW50X21l
ZGl1bS5fY3VycmVudF9yZXF1ZXN0ID0gImEiCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKGVy
cm9ycy5Ub29NYW55Q29uY3VycmVudFJlcXVlc3RzLAotICAgICAgICAgICAgc21hcnQuU21hcnRD
bGllbnRTdHJlYW1NZWRpdW1SZXF1ZXN0LCBtZWRpdW0pCisgICAgICAgICAgICBtZWRpdW0uU21h
cnRDbGllbnRTdHJlYW1NZWRpdW1SZXF1ZXN0LCBjbGllbnRfbWVkaXVtKQogCiAgICAgZGVmIHRl
c3RfZmluaXNoZWRfcmVhZF9jbGVhcnNfY3VycmVudF9yZXF1ZXN0KHNlbGYpOgogICAgICAgICAj
IGNhbGxpbmcgZmluaXNoZWRfcmVhZGluZyBjbGVhcnMgdGhlIGN1cnJlbnQgcmVxdWVzdCBmcm9t
IHRoZSByZXF1ZXN0cwogICAgICAgICAjIG1lZGl1bQogICAgICAgICBvdXRwdXQgPSBTdHJpbmdJ
TygpCi0gICAgICAgIG1lZGl1bSA9IHNtYXJ0LlNtYXJ0U2ltcGxlUGlwZXNDbGllbnRNZWRpdW0o
Tm9uZSwgb3V0cHV0KQotICAgICAgICByZXF1ZXN0ID0gc21hcnQuU21hcnRDbGllbnRTdHJlYW1N
ZWRpdW1SZXF1ZXN0KG1lZGl1bSkKKyAgICAgICAgY2xpZW50X21lZGl1bSA9IG1lZGl1bS5TbWFy
dFNpbXBsZVBpcGVzQ2xpZW50TWVkaXVtKE5vbmUsIG91dHB1dCkKKyAgICAgICAgcmVxdWVzdCA9
IG1lZGl1bS5TbWFydENsaWVudFN0cmVhbU1lZGl1bVJlcXVlc3QoY2xpZW50X21lZGl1bSkKICAg
ICAgICAgcmVxdWVzdC5maW5pc2hlZF93cml0aW5nKCkKICAgICAgICAgcmVxdWVzdC5maW5pc2hl
ZF9yZWFkaW5nKCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChOb25lLCBtZWRpdW0uX2N1cnJl
bnRfcmVxdWVzdCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChOb25lLCBjbGllbnRfbWVkaXVt
Ll9jdXJyZW50X3JlcXVlc3QpCiAKICAgICBkZWYgdGVzdF9maW5pc2hlZF9yZWFkX2JlZm9yZV9m
aW5pc2hlZF93cml0ZV9lcnJvcnMoc2VsZik6CiAgICAgICAgICMgY2FsbGluZyBmaW5pc2hlZF9y
ZWFkaW5nIGJlZm9yZSBjYWxsaW5nIGZpbmlzaGVkX3dyaXRpbmcgdHJpZ2dlcnMgYQogICAgICAg
ICAjIFdyaXRpbmdOb3RDb21wbGV0ZSBlcnJvci4KLSAgICAgICAgbWVkaXVtID0gc21hcnQuU21h
cnRTaW1wbGVQaXBlc0NsaWVudE1lZGl1bShOb25lLCBOb25lKQotICAgICAgICByZXF1ZXN0ID0g
c21hcnQuU21hcnRDbGllbnRTdHJlYW1NZWRpdW1SZXF1ZXN0KG1lZGl1bSkKKyAgICAgICAgY2xp
ZW50X21lZGl1bSA9IG1lZGl1bS5TbWFydFNpbXBsZVBpcGVzQ2xpZW50TWVkaXVtKE5vbmUsIE5v
bmUpCisgICAgICAgIHJlcXVlc3QgPSBtZWRpdW0uU21hcnRDbGllbnRTdHJlYW1NZWRpdW1SZXF1
ZXN0KGNsaWVudF9tZWRpdW0pCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKGVycm9ycy5Xcml0
aW5nTm90Q29tcGxldGUsIHJlcXVlc3QuZmluaXNoZWRfcmVhZGluZykKICAgICAgICAgCiAgICAg
ZGVmIHRlc3RfcmVhZF9ieXRlcyhzZWxmKToKQEAgLTQ4Myw4ICs0OTMsOCBAQAogICAgICAgICAj
IHNtb2tlIHRlc3RzLgogICAgICAgICBpbnB1dCA9IFN0cmluZ0lPKCczMjEnKQogICAgICAgICBv
dXRwdXQgPSBTdHJpbmdJTygpCi0gICAgICAgIG1lZGl1bSA9IHNtYXJ0LlNtYXJ0U2ltcGxlUGlw
ZXNDbGllbnRNZWRpdW0oaW5wdXQsIG91dHB1dCkKLSAgICAgICAgcmVxdWVzdCA9IHNtYXJ0LlNt
YXJ0Q2xpZW50U3RyZWFtTWVkaXVtUmVxdWVzdChtZWRpdW0pCisgICAgICAgIGNsaWVudF9tZWRp
dW0gPSBtZWRpdW0uU21hcnRTaW1wbGVQaXBlc0NsaWVudE1lZGl1bShpbnB1dCwgb3V0cHV0KQor
ICAgICAgICByZXF1ZXN0ID0gbWVkaXVtLlNtYXJ0Q2xpZW50U3RyZWFtTWVkaXVtUmVxdWVzdChj
bGllbnRfbWVkaXVtKQogICAgICAgICByZXF1ZXN0LmZpbmlzaGVkX3dyaXRpbmcoKQogICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKCczMjEnLCByZXF1ZXN0LnJlYWRfYnl0ZXMoMykpCiAgICAgICAg
IHJlcXVlc3QuZmluaXNoZWRfcmVhZGluZygpCkBAIC00OTYsOCArNTA2LDggQEAKICAgICAgICAg
IyBXcml0aW5nTm90Q29tcGxldGUgZXJyb3IgYmVjYXVzZSB0aGUgU21hcnQgcHJvdG9jb2wgaXMg
ZGVzaWduZWQgdG8gYmUKICAgICAgICAgIyBjb21wYXRpYmxlIHdpdGggc3RyaWN0IG1lc3NhZ2Ug
YmFzZWQgcHJvdG9jb2xzIGxpa2UgSFRUUCB3aGVyZSB0aGUKICAgICAgICAgIyByZXF1ZXN0IGNh
bm5vdCBiZSBzdWJtaXR0ZWQgdW50aWwgdGhlIHdyaXRpbmcgaGFzIGNvbXBsZXRlZC4KLSAgICAg
ICAgbWVkaXVtID0gc21hcnQuU21hcnRTaW1wbGVQaXBlc0NsaWVudE1lZGl1bShOb25lLCBOb25l
KQotICAgICAgICByZXF1ZXN0ID0gc21hcnQuU21hcnRDbGllbnRTdHJlYW1NZWRpdW1SZXF1ZXN0
KG1lZGl1bSkKKyAgICAgICAgY2xpZW50X21lZGl1bSA9IG1lZGl1bS5TbWFydFNpbXBsZVBpcGVz
Q2xpZW50TWVkaXVtKE5vbmUsIE5vbmUpCisgICAgICAgIHJlcXVlc3QgPSBtZWRpdW0uU21hcnRD
bGllbnRTdHJlYW1NZWRpdW1SZXF1ZXN0KGNsaWVudF9tZWRpdW0pCiAgICAgICAgIHNlbGYuYXNz
ZXJ0UmFpc2VzKGVycm9ycy5Xcml0aW5nTm90Q29tcGxldGUsIHJlcXVlc3QucmVhZF9ieXRlcywg
Tm9uZSkKIAogICAgIGRlZiB0ZXN0X3JlYWRfYnl0ZXNfYWZ0ZXJfZmluaXNoZWRfcmVhZGluZ19l
cnJvcnMoc2VsZik6CkBAIC01MDUsMzUgKzUxNSwyNyBAQAogICAgICAgICAjIFJlYWRpbmdDb21w
bGV0ZWQgdG8gcHJldmVudCBiYWQgYXNzdW1wdGlvbnMgb24gc3RyZWFtIGVudmlyb25tZW50cwog
ICAgICAgICAjIGJyZWFraW5nIHRoZSBuZWVkcyBvZiBtZXNzYWdlLWJhc2VkIGVudmlyb25tZW50
cy4KICAgICAgICAgb3V0cHV0ID0gU3RyaW5nSU8oKQotICAgICAgICBtZWRpdW0gPSBzbWFydC5T
bWFydFNpbXBsZVBpcGVzQ2xpZW50TWVkaXVtKE5vbmUsIG91dHB1dCkKLSAgICAgICAgcmVxdWVz
dCA9IHNtYXJ0LlNtYXJ0Q2xpZW50U3RyZWFtTWVkaXVtUmVxdWVzdChtZWRpdW0pCisgICAgICAg
IGNsaWVudF9tZWRpdW0gPSBtZWRpdW0uU21hcnRTaW1wbGVQaXBlc0NsaWVudE1lZGl1bShOb25l
LCBvdXRwdXQpCisgICAgICAgIHJlcXVlc3QgPSBtZWRpdW0uU21hcnRDbGllbnRTdHJlYW1NZWRp
dW1SZXF1ZXN0KGNsaWVudF9tZWRpdW0pCiAgICAgICAgIHJlcXVlc3QuZmluaXNoZWRfd3JpdGlu
ZygpCiAgICAgICAgIHJlcXVlc3QuZmluaXNoZWRfcmVhZGluZygpCiAgICAgICAgIHNlbGYuYXNz
ZXJ0UmFpc2VzKGVycm9ycy5SZWFkaW5nQ29tcGxldGVkLCByZXF1ZXN0LnJlYWRfYnl0ZXMsIE5v
bmUpCiAKIAotY2xhc3MgUmVtb3RlVHJhbnNwb3J0VGVzdHModGVzdHMuVGVzdENhc2VXaXRoVHJh
bnNwb3J0KToKLQotICAgIGRlZiBzZXRVcChzZWxmKToKLSAgICAgICAgc3VwZXIoUmVtb3RlVHJh
bnNwb3J0VGVzdHMsIHNlbGYpLnNldFVwKCkKLSAgICAgICAgIyBXZSdyZSBhbGxvd2VkIHRvIHNl
dCAgdGhlIHRyYW5zcG9ydCBjbGFzcyBoZXJlLCBzbyB0aGF0IHdlIGRvbid0IHVzZQotICAgICAg
ICAjIHRoZSBkZWZhdWx0IG9yIGEgcGFyYW1ldGVyaXplZCBjbGFzcywgYnV0IHJhdGhlciB1c2Ug
dGhlCi0gICAgICAgICMgVGVzdENhc2VXaXRoVHJhbnNwb3J0IGluZnJhc3RydWN0dXJlIHRvIHNl
dCB1cCBhIHNtYXJ0IHNlcnZlciBhbmQKLSAgICAgICAgIyB0cmFuc3BvcnQuCi0gICAgICAgIHNl
bGYudHJhbnNwb3J0X3NlcnZlciA9IHNtYXJ0LlNtYXJ0VENQU2VydmVyX2Zvcl90ZXN0aW5nCitj
bGFzcyBSZW1vdGVUcmFuc3BvcnRUZXN0cyhUZXN0Q2FzZVdpdGhTbWFydE1lZGl1bSk6CiAKICAg
ICBkZWYgdGVzdF9wbGF1c2libGVfdXJsKHNlbGYpOgogICAgICAgICBzZWxmLmFzc2VydF8oc2Vs
Zi5nZXRfdXJsKCkuc3RhcnRzd2l0aCgnYnpyOi8vJykpCiAKICAgICBkZWYgdGVzdF9wcm9iZV90
cmFuc3BvcnQoc2VsZik6CiAgICAgICAgIHQgPSBzZWxmLmdldF90cmFuc3BvcnQoKQotICAgICAg
ICBzZWxmLmFzc2VydElzSW5zdGFuY2UodCwgc21hcnQuU21hcnRUcmFuc3BvcnQpCisgICAgICAg
IHNlbGYuYXNzZXJ0SXNJbnN0YW5jZSh0LCByZW1vdGUuUmVtb3RlVHJhbnNwb3J0KQogCiAgICAg
ZGVmIHRlc3RfZ2V0X21lZGl1bV9mcm9tX3RyYW5zcG9ydChzZWxmKToKICAgICAgICAgIiIiUmVt
b3RlIHRyYW5zcG9ydCBoYXMgYSBtZWRpdW0gYWx3YXlzLCB3aGljaCBpdCBjYW4gcmV0dXJuLiIi
IgogICAgICAgICB0ID0gc2VsZi5nZXRfdHJhbnNwb3J0KCkKLSAgICAgICAgbWVkaXVtID0gdC5n
ZXRfc21hcnRfbWVkaXVtKCkKLSAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKG1lZGl1bSwg
c21hcnQuU21hcnRDbGllbnRNZWRpdW0pCisgICAgICAgIGNsaWVudF9tZWRpdW0gPSB0LmdldF9z
bWFydF9tZWRpdW0oKQorICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoY2xpZW50X21lZGl1
bSwgbWVkaXVtLlNtYXJ0Q2xpZW50TWVkaXVtKQogCiAKIGNsYXNzIEVycm9yUmFpc2luZ1Byb3Rv
Y29sKG9iamVjdCk6CkBAIC01NjgsNiArNTcwLDEwIEBACiAKIGNsYXNzIFRlc3RTbWFydFNlcnZl
clN0cmVhbU1lZGl1bSh0ZXN0cy5UZXN0Q2FzZSk6CiAKKyAgICBkZWYgc2V0VXAoc2VsZik6Cisg
ICAgICAgIHN1cGVyKFRlc3RTbWFydFNlcnZlclN0cmVhbU1lZGl1bSwgc2VsZikuc2V0VXAoKQor
ICAgICAgICBzZWxmLl9jYXB0dXJlVmFyKCdCWlJfTk9fU01BUlRfVkZTJywgTm9uZSkKKwogICAg
IGRlZiBwb3J0YWJsZV9zb2NrZXRfcGFpcihzZWxmKToKICAgICAgICAgIiIiUmV0dXJuIGEgcGFp
ciBvZiBUQ1Agc29ja2V0cyBjb25uZWN0ZWQgdG8gZWFjaCBvdGhlci4KICAgICAgICAgCkBAIC01
ODgsMTIgKzU5NCwxMiBAQAogICAgICAgICB0b19zZXJ2ZXIgPSBTdHJpbmdJTygnaGVsbG9cbicp
CiAgICAgICAgIGZyb21fc2VydmVyID0gU3RyaW5nSU8oKQogICAgICAgICB0cmFuc3BvcnQgPSBs
b2NhbC5Mb2NhbFRyYW5zcG9ydCh1cmx1dGlscy5sb2NhbF9wYXRoX3RvX3VybCgnLycpKQotICAg
ICAgICBzZXJ2ZXIgPSBzbWFydC5TbWFydFNlcnZlclBpcGVTdHJlYW1NZWRpdW0oCisgICAgICAg
IHNlcnZlciA9IG1lZGl1bS5TbWFydFNlcnZlclBpcGVTdHJlYW1NZWRpdW0oCiAgICAgICAgICAg
ICB0b19zZXJ2ZXIsIGZyb21fc2VydmVyLCB0cmFuc3BvcnQpCi0gICAgICAgIHByb3RvY29sID0g
c21hcnQuU21hcnRTZXJ2ZXJSZXF1ZXN0UHJvdG9jb2xPbmUodHJhbnNwb3J0LAorICAgICAgICBz
bWFydF9wcm90b2NvbCA9IHByb3RvY29sLlNtYXJ0U2VydmVyUmVxdWVzdFByb3RvY29sT25lKHRy
YW5zcG9ydCwKICAgICAgICAgICAgICAgICBmcm9tX3NlcnZlci53cml0ZSkKLSAgICAgICAgc2Vy
dmVyLl9zZXJ2ZV9vbmVfcmVxdWVzdChwcm90b2NvbCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bCgnb2tcMDAxMVxuJywKKyAgICAgICAgc2VydmVyLl9zZXJ2ZV9vbmVfcmVxdWVzdChzbWFydF9w
cm90b2NvbCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnb2tcMDAxMlxuJywKICAgICAgICAg
ICAgICAgICAgICAgICAgICBmcm9tX3NlcnZlci5nZXR2YWx1ZSgpKQogCiAgICAgZGVmIHRlc3Rf
cmVzcG9uc2VfdG9fY2FubmVkX2dldChzZWxmKToKQEAgLTYwMSwxMSArNjA3LDExIEBACiAgICAg
ICAgIHRyYW5zcG9ydC5wdXRfYnl0ZXMoJ3Rlc3RmaWxlJywgJ2NvbnRlbnRzXG5vZlxuZmlsZVxu
JykKICAgICAgICAgdG9fc2VydmVyID0gU3RyaW5nSU8oJ2dldFwwMDEuL3Rlc3RmaWxlXG4nKQog
ICAgICAgICBmcm9tX3NlcnZlciA9IFN0cmluZ0lPKCkKLSAgICAgICAgc2VydmVyID0gc21hcnQu
U21hcnRTZXJ2ZXJQaXBlU3RyZWFtTWVkaXVtKAorICAgICAgICBzZXJ2ZXIgPSBtZWRpdW0uU21h
cnRTZXJ2ZXJQaXBlU3RyZWFtTWVkaXVtKAogICAgICAgICAgICAgdG9fc2VydmVyLCBmcm9tX3Nl
cnZlciwgdHJhbnNwb3J0KQotICAgICAgICBwcm90b2NvbCA9IHNtYXJ0LlNtYXJ0U2VydmVyUmVx
dWVzdFByb3RvY29sT25lKHRyYW5zcG9ydCwKKyAgICAgICAgc21hcnRfcHJvdG9jb2wgPSBwcm90
b2NvbC5TbWFydFNlcnZlclJlcXVlc3RQcm90b2NvbE9uZSh0cmFuc3BvcnQsCiAgICAgICAgICAg
ICAgICAgZnJvbV9zZXJ2ZXIud3JpdGUpCi0gICAgICAgIHNlcnZlci5fc2VydmVfb25lX3JlcXVl
c3QocHJvdG9jb2wpCisgICAgICAgIHNlcnZlci5fc2VydmVfb25lX3JlcXVlc3Qoc21hcnRfcHJv
dG9jb2wpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ29rXG4nCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgJzE3XG4nCiAgICAgICAgICAgICAgICAgICAgICAgICAgJ2NvbnRlbnRzXG5vZlxu
ZmlsZVxuJwpAQCAtNjE5LDExICs2MjUsMTEgQEAKICAgICAgICAgdHJhbnNwb3J0LnB1dF9ieXRl
cyh1dGY4X2ZpbGVuYW1lLCAnY29udGVudHNcbm9mXG5maWxlXG4nKQogICAgICAgICB0b19zZXJ2
ZXIgPSBTdHJpbmdJTygnZ2V0XDAwMScgKyB1dGY4X2ZpbGVuYW1lICsgJ1xuJykKICAgICAgICAg
ZnJvbV9zZXJ2ZXIgPSBTdHJpbmdJTygpCi0gICAgICAgIHNlcnZlciA9IHNtYXJ0LlNtYXJ0U2Vy
dmVyUGlwZVN0cmVhbU1lZGl1bSgKKyAgICAgICAgc2VydmVyID0gbWVkaXVtLlNtYXJ0U2VydmVy
UGlwZVN0cmVhbU1lZGl1bSgKICAgICAgICAgICAgIHRvX3NlcnZlciwgZnJvbV9zZXJ2ZXIsIHRy
YW5zcG9ydCkKLSAgICAgICAgcHJvdG9jb2wgPSBzbWFydC5TbWFydFNlcnZlclJlcXVlc3RQcm90
b2NvbE9uZSh0cmFuc3BvcnQsCisgICAgICAgIHNtYXJ0X3Byb3RvY29sID0gcHJvdG9jb2wuU21h
cnRTZXJ2ZXJSZXF1ZXN0UHJvdG9jb2xPbmUodHJhbnNwb3J0LAogICAgICAgICAgICAgICAgIGZy
b21fc2VydmVyLndyaXRlKQotICAgICAgICBzZXJ2ZXIuX3NlcnZlX29uZV9yZXF1ZXN0KHByb3Rv
Y29sKQorICAgICAgICBzZXJ2ZXIuX3NlcnZlX29uZV9yZXF1ZXN0KHNtYXJ0X3Byb3RvY29sKQog
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdva1xuJwogICAgICAgICAgICAgICAgICAgICAgICAg
ICcxN1xuJwogICAgICAgICAgICAgICAgICAgICAgICAgICdjb250ZW50c1xub2ZcbmZpbGVcbicK
QEAgLTYzNCw3ICs2NDAsOCBAQAogICAgICAgICBzYW1wbGVfcmVxdWVzdF9ieXRlcyA9ICdjb21t
YW5kXG45XG5idWxrIGRhdGFkb25lXG4nCiAgICAgICAgIHRvX3NlcnZlciA9IFN0cmluZ0lPKHNh
bXBsZV9yZXF1ZXN0X2J5dGVzKQogICAgICAgICBmcm9tX3NlcnZlciA9IFN0cmluZ0lPKCkKLSAg
ICAgICAgc2VydmVyID0gc21hcnQuU21hcnRTZXJ2ZXJQaXBlU3RyZWFtTWVkaXVtKHRvX3NlcnZl
ciwgZnJvbV9zZXJ2ZXIsIE5vbmUpCisgICAgICAgIHNlcnZlciA9IG1lZGl1bS5TbWFydFNlcnZl
clBpcGVTdHJlYW1NZWRpdW0oCisgICAgICAgICAgICB0b19zZXJ2ZXIsIGZyb21fc2VydmVyLCBO
b25lKQogICAgICAgICBzYW1wbGVfcHJvdG9jb2wgPSBTYW1wbGVSZXF1ZXN0KGV4cGVjdGVkX2J5
dGVzPXNhbXBsZV9yZXF1ZXN0X2J5dGVzKQogICAgICAgICBzZXJ2ZXIuX3NlcnZlX29uZV9yZXF1
ZXN0KHNhbXBsZV9wcm90b2NvbCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnJywgZnJvbV9z
ZXJ2ZXIuZ2V0dmFsdWUoKSkKQEAgLTY0NCw3ICs2NTEsNyBAQAogICAgIGRlZiB0ZXN0X3NvY2tl
dF9zdHJlYW1fd2l0aF9idWxrX2RhdGEoc2VsZik6CiAgICAgICAgIHNhbXBsZV9yZXF1ZXN0X2J5
dGVzID0gJ2NvbW1hbmRcbjlcbmJ1bGsgZGF0YWRvbmVcbicKICAgICAgICAgc2VydmVyX3NvY2ss
IGNsaWVudF9zb2NrID0gc2VsZi5wb3J0YWJsZV9zb2NrZXRfcGFpcigpCi0gICAgICAgIHNlcnZl
ciA9IHNtYXJ0LlNtYXJ0U2VydmVyU29ja2V0U3RyZWFtTWVkaXVtKAorICAgICAgICBzZXJ2ZXIg
PSBtZWRpdW0uU21hcnRTZXJ2ZXJTb2NrZXRTdHJlYW1NZWRpdW0oCiAgICAgICAgICAgICBzZXJ2
ZXJfc29jaywgTm9uZSkKICAgICAgICAgc2FtcGxlX3Byb3RvY29sID0gU2FtcGxlUmVxdWVzdChl
eHBlY3RlZF9ieXRlcz1zYW1wbGVfcmVxdWVzdF9ieXRlcykKICAgICAgICAgY2xpZW50X3NvY2su
c2VuZGFsbChzYW1wbGVfcmVxdWVzdF9ieXRlcykKQEAgLTY1NywxNCArNjY0LDE0IEBACiAgICAg
ZGVmIHRlc3RfcGlwZV9saWtlX3N0cmVhbV9zaHV0ZG93bl9kZXRlY3Rpb24oc2VsZik6CiAgICAg
ICAgIHRvX3NlcnZlciA9IFN0cmluZ0lPKCcnKQogICAgICAgICBmcm9tX3NlcnZlciA9IFN0cmlu
Z0lPKCkKLSAgICAgICAgc2VydmVyID0gc21hcnQuU21hcnRTZXJ2ZXJQaXBlU3RyZWFtTWVkaXVt
KHRvX3NlcnZlciwgZnJvbV9zZXJ2ZXIsIE5vbmUpCisgICAgICAgIHNlcnZlciA9IG1lZGl1bS5T
bWFydFNlcnZlclBpcGVTdHJlYW1NZWRpdW0odG9fc2VydmVyLCBmcm9tX3NlcnZlciwgTm9uZSkK
ICAgICAgICAgc2VydmVyLl9zZXJ2ZV9vbmVfcmVxdWVzdChTYW1wbGVSZXF1ZXN0KCd4JykpCiAg
ICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzZXJ2ZXIuZmluaXNoZWQpCiAgICAgICAgIAogICAgIGRl
ZiB0ZXN0X3NvY2tldF9zdHJlYW1fc2h1dGRvd25fZGV0ZWN0aW9uKHNlbGYpOgogICAgICAgICBz
ZXJ2ZXJfc29jaywgY2xpZW50X3NvY2sgPSBzZWxmLnBvcnRhYmxlX3NvY2tldF9wYWlyKCkKICAg
ICAgICAgY2xpZW50X3NvY2suY2xvc2UoKQotICAgICAgICBzZXJ2ZXIgPSBzbWFydC5TbWFydFNl
cnZlclNvY2tldFN0cmVhbU1lZGl1bSgKKyAgICAgICAgc2VydmVyID0gbWVkaXVtLlNtYXJ0U2Vy
dmVyU29ja2V0U3RyZWFtTWVkaXVtKAogICAgICAgICAgICAgc2VydmVyX3NvY2ssIE5vbmUpCiAg
ICAgICAgIHNlcnZlci5fc2VydmVfb25lX3JlcXVlc3QoU2FtcGxlUmVxdWVzdCgneCcpKQogICAg
ICAgICBzZWxmLmFzc2VydFRydWUoc2VydmVyLmZpbmlzaGVkKQpAQCAtNjc2LDcgKzY4Myw4IEBA
CiAgICAgICAgIHNhbXBsZV9yZXF1ZXN0X2J5dGVzID0gJ2NvbW1hbmRcbicKICAgICAgICAgdG9f
c2VydmVyID0gU3RyaW5nSU8oc2FtcGxlX3JlcXVlc3RfYnl0ZXMgKiAyKQogICAgICAgICBmcm9t
X3NlcnZlciA9IFN0cmluZ0lPKCkKLSAgICAgICAgc2VydmVyID0gc21hcnQuU21hcnRTZXJ2ZXJQ
aXBlU3RyZWFtTWVkaXVtKHRvX3NlcnZlciwgZnJvbV9zZXJ2ZXIsIE5vbmUpCisgICAgICAgIHNl
cnZlciA9IG1lZGl1bS5TbWFydFNlcnZlclBpcGVTdHJlYW1NZWRpdW0oCisgICAgICAgICAgICB0
b19zZXJ2ZXIsIGZyb21fc2VydmVyLCBOb25lKQogICAgICAgICBmaXJzdF9wcm90b2NvbCA9IFNh
bXBsZVJlcXVlc3QoZXhwZWN0ZWRfYnl0ZXM9c2FtcGxlX3JlcXVlc3RfYnl0ZXMpCiAgICAgICAg
IHNlcnZlci5fc2VydmVfb25lX3JlcXVlc3QoZmlyc3RfcHJvdG9jb2wpCiAgICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwoMCwgZmlyc3RfcHJvdG9jb2wubmV4dF9yZWFkX3NpemUoKSkKQEAgLTY5Niw3
ICs3MDQsNyBAQAogICAgICAgICAjIGJlZW4gcmVjZWl2ZWQgc2VwZXJhdGVseS4KICAgICAgICAg
c2FtcGxlX3JlcXVlc3RfYnl0ZXMgPSAnY29tbWFuZFxuJwogICAgICAgICBzZXJ2ZXJfc29jaywg
Y2xpZW50X3NvY2sgPSBzZWxmLnBvcnRhYmxlX3NvY2tldF9wYWlyKCkKLSAgICAgICAgc2VydmVy
ID0gc21hcnQuU21hcnRTZXJ2ZXJTb2NrZXRTdHJlYW1NZWRpdW0oCisgICAgICAgIHNlcnZlciA9
IG1lZGl1bS5TbWFydFNlcnZlclNvY2tldFN0cmVhbU1lZGl1bSgKICAgICAgICAgICAgIHNlcnZl
cl9zb2NrLCBOb25lKQogICAgICAgICBmaXJzdF9wcm90b2NvbCA9IFNhbXBsZVJlcXVlc3QoZXhw
ZWN0ZWRfYnl0ZXM9c2FtcGxlX3JlcXVlc3RfYnl0ZXMpCiAgICAgICAgICMgUHV0IHR3byB3aG9s
ZSByZXF1ZXN0cyBvbiB0aGUgd2lyZS4KQEAgLTcyMyw3ICs3MzEsOCBAQAogICAgICAgICBkZWYg
Y2xvc2UoKToKICAgICAgICAgICAgIHNlbGYuY2xvc2VkID0gVHJ1ZQogICAgICAgICBmcm9tX3Nl
cnZlci5jbG9zZSA9IGNsb3NlCi0gICAgICAgIHNlcnZlciA9IHNtYXJ0LlNtYXJ0U2VydmVyUGlw
ZVN0cmVhbU1lZGl1bSh0b19zZXJ2ZXIsIGZyb21fc2VydmVyLCBOb25lKQorICAgICAgICBzZXJ2
ZXIgPSBtZWRpdW0uU21hcnRTZXJ2ZXJQaXBlU3RyZWFtTWVkaXVtKAorICAgICAgICAgICAgdG9f
c2VydmVyLCBmcm9tX3NlcnZlciwgTm9uZSkKICAgICAgICAgZmFrZV9wcm90b2NvbCA9IEVycm9y
UmFpc2luZ1Byb3RvY29sKEV4Y2VwdGlvbignYm9vbScpKQogICAgICAgICBzZXJ2ZXIuX3NlcnZl
X29uZV9yZXF1ZXN0KGZha2VfcHJvdG9jb2wpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJycs
IGZyb21fc2VydmVyLmdldHZhbHVlKCkpCkBAIC03MzEsMTEgKzc0MCw4IEBACiAgICAgICAgIHNl
bGYuYXNzZXJ0VHJ1ZShzZXJ2ZXIuZmluaXNoZWQpCiAgICAgICAgIAogICAgIGRlZiB0ZXN0X3Nv
Y2tldF9zdHJlYW1fZXJyb3JfaGFuZGxpbmcoc2VsZik6Ci0gICAgICAgICMgVXNlIHBsYWluIHB5
dGhvbiBTdHJpbmdJTyBzbyB3ZSBjYW4gbW9ua2V5LXBhdGNoIHRoZSBjbG9zZSBtZXRob2QgdG8K
LSAgICAgICAgIyBub3QgZGlzY2FyZCB0aGUgY29udGVudHMuCi0gICAgICAgIGZyb20gU3RyaW5n
SU8gaW1wb3J0IFN0cmluZ0lPCiAgICAgICAgIHNlcnZlcl9zb2NrLCBjbGllbnRfc29jayA9IHNl
bGYucG9ydGFibGVfc29ja2V0X3BhaXIoKQotICAgICAgICBzZXJ2ZXIgPSBzbWFydC5TbWFydFNl
cnZlclNvY2tldFN0cmVhbU1lZGl1bSgKKyAgICAgICAgc2VydmVyID0gbWVkaXVtLlNtYXJ0U2Vy
dmVyU29ja2V0U3RyZWFtTWVkaXVtKAogICAgICAgICAgICAgc2VydmVyX3NvY2ssIE5vbmUpCiAg
ICAgICAgIGZha2VfcHJvdG9jb2wgPSBFcnJvclJhaXNpbmdQcm90b2NvbChFeGNlcHRpb24oJ2Jv
b20nKSkKICAgICAgICAgc2VydmVyLl9zZXJ2ZV9vbmVfcmVxdWVzdChmYWtlX3Byb3RvY29sKQpA
QCAtNzQ1LDExICs3NTEsMTAgQEAKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNlcnZlci5maW5p
c2hlZCkKICAgICAgICAgCiAgICAgZGVmIHRlc3RfcGlwZV9saWtlX3N0cmVhbV9rZXlib2FyZF9p
bnRlcnJ1cHRfaGFuZGxpbmcoc2VsZik6Ci0gICAgICAgICMgVXNlIHBsYWluIHB5dGhvbiBTdHJp
bmdJTyBzbyB3ZSBjYW4gbW9ua2V5LXBhdGNoIHRoZSBjbG9zZSBtZXRob2QgdG8KLSAgICAgICAg
IyBub3QgZGlzY2FyZCB0aGUgY29udGVudHMuCiAgICAgICAgIHRvX3NlcnZlciA9IFN0cmluZ0lP
KCcnKQogICAgICAgICBmcm9tX3NlcnZlciA9IFN0cmluZ0lPKCkKLSAgICAgICAgc2VydmVyID0g
c21hcnQuU21hcnRTZXJ2ZXJQaXBlU3RyZWFtTWVkaXVtKHRvX3NlcnZlciwgZnJvbV9zZXJ2ZXIs
IE5vbmUpCisgICAgICAgIHNlcnZlciA9IG1lZGl1bS5TbWFydFNlcnZlclBpcGVTdHJlYW1NZWRp
dW0oCisgICAgICAgICAgICB0b19zZXJ2ZXIsIGZyb21fc2VydmVyLCBOb25lKQogICAgICAgICBm
YWtlX3Byb3RvY29sID0gRXJyb3JSYWlzaW5nUHJvdG9jb2woS2V5Ym9hcmRJbnRlcnJ1cHQoJ2Jv
b20nKSkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoCiAgICAgICAgICAgICBLZXlib2FyZElu
dGVycnVwdCwgc2VydmVyLl9zZXJ2ZV9vbmVfcmVxdWVzdCwgZmFrZV9wcm90b2NvbCkKQEAgLTc1
NywzNSArNzYyLDkzIEBACiAKICAgICBkZWYgdGVzdF9zb2NrZXRfc3RyZWFtX2tleWJvYXJkX2lu
dGVycnVwdF9oYW5kbGluZyhzZWxmKToKICAgICAgICAgc2VydmVyX3NvY2ssIGNsaWVudF9zb2Nr
ID0gc2VsZi5wb3J0YWJsZV9zb2NrZXRfcGFpcigpCi0gICAgICAgIHNlcnZlciA9IHNtYXJ0LlNt
YXJ0U2VydmVyU29ja2V0U3RyZWFtTWVkaXVtKAorICAgICAgICBzZXJ2ZXIgPSBtZWRpdW0uU21h
cnRTZXJ2ZXJTb2NrZXRTdHJlYW1NZWRpdW0oCiAgICAgICAgICAgICBzZXJ2ZXJfc29jaywgTm9u
ZSkKICAgICAgICAgZmFrZV9wcm90b2NvbCA9IEVycm9yUmFpc2luZ1Byb3RvY29sKEtleWJvYXJk
SW50ZXJydXB0KCdib29tJykpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKAogICAgICAgICAg
ICAgS2V5Ym9hcmRJbnRlcnJ1cHQsIHNlcnZlci5fc2VydmVfb25lX3JlcXVlc3QsIGZha2VfcHJv
dG9jb2wpCiAgICAgICAgIHNlcnZlcl9zb2NrLmNsb3NlKCkKICAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbCgnJywgY2xpZW50X3NvY2sucmVjdigxKSkKKworICAgIGRlZiBidWlsZF9wcm90b2NvbF9w
aXBlX2xpa2Uoc2VsZiwgYnl0ZXMpOgorICAgICAgICB0b19zZXJ2ZXIgPSBTdHJpbmdJTyhieXRl
cykKKyAgICAgICAgZnJvbV9zZXJ2ZXIgPSBTdHJpbmdJTygpCisgICAgICAgIHNlcnZlciA9IG1l
ZGl1bS5TbWFydFNlcnZlclBpcGVTdHJlYW1NZWRpdW0oCisgICAgICAgICAgICB0b19zZXJ2ZXIs
IGZyb21fc2VydmVyLCBOb25lKQorICAgICAgICByZXR1cm4gc2VydmVyLl9idWlsZF9wcm90b2Nv
bCgpCisKKyAgICBkZWYgYnVpbGRfcHJvdG9jb2xfc29ja2V0KHNlbGYsIGJ5dGVzKToKKyAgICAg
ICAgc2VydmVyX3NvY2ssIGNsaWVudF9zb2NrID0gc2VsZi5wb3J0YWJsZV9zb2NrZXRfcGFpcigp
CisgICAgICAgIHNlcnZlciA9IG1lZGl1bS5TbWFydFNlcnZlclNvY2tldFN0cmVhbU1lZGl1bSgK
KyAgICAgICAgICAgIHNlcnZlcl9zb2NrLCBOb25lKQorICAgICAgICBjbGllbnRfc29jay5zZW5k
YWxsKGJ5dGVzKQorICAgICAgICBjbGllbnRfc29jay5jbG9zZSgpCisgICAgICAgIHJldHVybiBz
ZXJ2ZXIuX2J1aWxkX3Byb3RvY29sKCkKKworICAgIGRlZiBhc3NlcnRQcm90b2NvbE9uZShzZWxm
LCBzZXJ2ZXJfcHJvdG9jb2wpOgorICAgICAgICAjIFVzZSBhc3NlcnRJcyBiZWNhdXNlIGFzc2Vy
dElzSW5zdGFuY2Ugd2lsbCB3cm9uZ2x5IHBhc3MKKyAgICAgICAgIyBTbWFydFNlcnZlclJlcXVl
c3RQcm90b2NvbFR3byAoYmVjYXVzZSBpdCBzdWJjbGFzc2VzCisgICAgICAgICMgU21hcnRTZXJ2
ZXJSZXF1ZXN0UHJvdG9jb2xPbmUpLgorICAgICAgICBzZWxmLmFzc2VydElzKAorICAgICAgICAg
ICAgdHlwZShzZXJ2ZXJfcHJvdG9jb2wpLCBwcm90b2NvbC5TbWFydFNlcnZlclJlcXVlc3RQcm90
b2NvbE9uZSkKKworICAgIGRlZiBhc3NlcnRQcm90b2NvbFR3byhzZWxmLCBzZXJ2ZXJfcHJvdG9j
b2wpOgorICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoCisgICAgICAgICAgICBzZXJ2ZXJf
cHJvdG9jb2wsIHByb3RvY29sLlNtYXJ0U2VydmVyUmVxdWVzdFByb3RvY29sVHdvKQorCisgICAg
ZGVmIHRlc3RfcGlwZV9saWtlX2J1aWxkX3Byb3RvY29sX2VtcHR5X2J5dGVzKHNlbGYpOgorICAg
ICAgICAjIEFueSBlbXB0eSByZXF1ZXN0IChpLmUuIG5vIGJ5dGVzKSBpcyBkZXRlY3RlZCBhcyBw
cm90b2NvbCB2ZXJzaW9uIG9uZS4KKyAgICAgICAgc2VydmVyX3Byb3RvY29sID0gc2VsZi5idWls
ZF9wcm90b2NvbF9waXBlX2xpa2UoJycpCisgICAgICAgIHNlbGYuYXNzZXJ0UHJvdG9jb2xPbmUo
c2VydmVyX3Byb3RvY29sKQorICAgICAgICAKKyAgICBkZWYgdGVzdF9zb2NrZXRfbGlrZV9idWls
ZF9wcm90b2NvbF9lbXB0eV9ieXRlcyhzZWxmKToKKyAgICAgICAgIyBBbnkgZW1wdHkgcmVxdWVz
dCAoaS5lLiBubyBieXRlcykgaXMgZGV0ZWN0ZWQgYXMgcHJvdG9jb2wgdmVyc2lvbiBvbmUuCisg
ICAgICAgIHNlcnZlcl9wcm90b2NvbCA9IHNlbGYuYnVpbGRfcHJvdG9jb2xfc29ja2V0KCcnKQor
ICAgICAgICBzZWxmLmFzc2VydFByb3RvY29sT25lKHNlcnZlcl9wcm90b2NvbCkKKworICAgIGRl
ZiB0ZXN0X3BpcGVfbGlrZV9idWlsZF9wcm90b2NvbF9ub25fdHdvKHNlbGYpOgorICAgICAgICAj
IEEgcmVxdWVzdCB0aGF0IGRvZXNuJ3Qgc3RhcnQgd2l0aCAiYnpyIHJlcXVlc3QgMlxuIiBpcyB2
ZXJzaW9uIG9uZS4KKyAgICAgICAgc2VydmVyX3Byb3RvY29sID0gc2VsZi5idWlsZF9wcm90b2Nv
bF9waXBlX2xpa2UoJ2FiY1xuJykKKyAgICAgICAgc2VsZi5hc3NlcnRQcm90b2NvbE9uZShzZXJ2
ZXJfcHJvdG9jb2wpCisKKyAgICBkZWYgdGVzdF9zb2NrZXRfYnVpbGRfcHJvdG9jb2xfbm9uX3R3
byhzZWxmKToKKyAgICAgICAgIyBBIHJlcXVlc3QgdGhhdCBkb2Vzbid0IHN0YXJ0IHdpdGggImJ6
ciByZXF1ZXN0IDJcbiIgaXMgdmVyc2lvbiBvbmUuCisgICAgICAgIHNlcnZlcl9wcm90b2NvbCA9
IHNlbGYuYnVpbGRfcHJvdG9jb2xfc29ja2V0KCdhYmNcbicpCisgICAgICAgIHNlbGYuYXNzZXJ0
UHJvdG9jb2xPbmUoc2VydmVyX3Byb3RvY29sKQorCisgICAgZGVmIHRlc3RfcGlwZV9saWtlX2J1
aWxkX3Byb3RvY29sX3R3byhzZWxmKToKKyAgICAgICAgIyBBIHJlcXVlc3QgdGhhdCBzdGFydHMg
d2l0aCAiYnpyIHJlcXVlc3QgMlxuIiBpcyB2ZXJzaW9uIHR3by4KKyAgICAgICAgc2VydmVyX3By
b3RvY29sID0gc2VsZi5idWlsZF9wcm90b2NvbF9waXBlX2xpa2UoJ2J6ciByZXF1ZXN0IDJcbicp
CisgICAgICAgIHNlbGYuYXNzZXJ0UHJvdG9jb2xUd28oc2VydmVyX3Byb3RvY29sKQorCisgICAg
ZGVmIHRlc3Rfc29ja2V0X2J1aWxkX3Byb3RvY29sX3R3byhzZWxmKToKKyAgICAgICAgIyBBIHJl
cXVlc3QgdGhhdCBzdGFydHMgd2l0aCAiYnpyIHJlcXVlc3QgMlxuIiBpcyB2ZXJzaW9uIHR3by4K
KyAgICAgICAgc2VydmVyX3Byb3RvY29sID0gc2VsZi5idWlsZF9wcm90b2NvbF9zb2NrZXQoJ2J6
ciByZXF1ZXN0IDJcbicpCisgICAgICAgIHNlbGYuYXNzZXJ0UHJvdG9jb2xUd28oc2VydmVyX3By
b3RvY29sKQogICAgICAgICAKIAogY2xhc3MgVGVzdFNtYXJ0VENQU2VydmVyKHRlc3RzLlRlc3RD
YXNlKToKIAogICAgIGRlZiB0ZXN0X2dldF9lcnJvcl91bmV4cGVjdGVkKHNlbGYpOgogICAgICAg
ICAiIiJFcnJvciByZXBvcnRlZCBieSBzZXJ2ZXIgd2l0aCBubyBzcGVjaWZpYyByZXByZXNlbnRh
dGlvbiIiIgorICAgICAgICBzZWxmLl9jYXB0dXJlVmFyKCdCWlJfTk9fU01BUlRfVkZTJywgTm9u
ZSkKICAgICAgICAgY2xhc3MgRmxha3lUcmFuc3BvcnQob2JqZWN0KToKICAgICAgICAgICAgIGJh
c2UgPSAnYV91cmwnCiAgICAgICAgICAgICBkZWYgZ2V0X2J5dGVzKHNlbGYsIHBhdGgpOgogICAg
ICAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbigic29tZSByYW5kb20gZXhjZXB0aW9uIGZyb20g
aW5zaWRlIHNlcnZlciIpCi0gICAgICAgIHNlcnZlciA9IHNtYXJ0LlNtYXJ0VENQU2VydmVyKGJh
Y2tpbmdfdHJhbnNwb3J0PUZsYWt5VHJhbnNwb3J0KCkpCi0gICAgICAgIHNlcnZlci5zdGFydF9i
YWNrZ3JvdW5kX3RocmVhZCgpCisgICAgICAgIHNtYXJ0X3NlcnZlciA9IHNlcnZlci5TbWFydFRD
UFNlcnZlcihiYWNraW5nX3RyYW5zcG9ydD1GbGFreVRyYW5zcG9ydCgpKQorICAgICAgICBzbWFy
dF9zZXJ2ZXIuc3RhcnRfYmFja2dyb3VuZF90aHJlYWQoKQogICAgICAgICB0cnk6Ci0gICAgICAg
ICAgICB0cmFuc3BvcnQgPSBzbWFydC5TbWFydFRDUFRyYW5zcG9ydChzZXJ2ZXIuZ2V0X3VybCgp
KQorICAgICAgICAgICAgdHJhbnNwb3J0ID0gcmVtb3RlLlJlbW90ZVRDUFRyYW5zcG9ydChzbWFy
dF9zZXJ2ZXIuZ2V0X3VybCgpKQogICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgIHRy
YW5zcG9ydC5nZXQoJ3NvbWV0aGluZycpCiAgICAgICAgICAgICBleGNlcHQgZXJyb3JzLlRyYW5z
cG9ydEVycm9yLCBlOgogICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0Q29udGFpbnNSZShzdHIo
ZSksICdzb21lIHJhbmRvbSBleGNlcHRpb24nKQogICAgICAgICAgICAgZWxzZToKICAgICAgICAg
ICAgICAgICBzZWxmLmZhaWwoImdldCBkaWQgbm90IHJhaXNlIGV4cGVjdGVkIGVycm9yIikKKyAg
ICAgICAgICAgIHRyYW5zcG9ydC5kaXNjb25uZWN0KCkKICAgICAgICAgZmluYWxseToKLSAgICAg
ICAgICAgIHNlcnZlci5zdG9wX2JhY2tncm91bmRfdGhyZWFkKCkKKyAgICAgICAgICAgIHNtYXJ0
X3NlcnZlci5zdG9wX2JhY2tncm91bmRfdGhyZWFkKCkKIAogCiBjbGFzcyBTbWFydFRDUFRlc3Rz
KHRlc3RzLlRlc3RDYXNlKToKQEAgLTgwNiw5ICs4NjksOSBAQAogICAgICAgICBpZiByZWFkb25s
eToKICAgICAgICAgICAgIHNlbGYucmVhbF9iYWNraW5nX3RyYW5zcG9ydCA9IHNlbGYuYmFja2lu
Z190cmFuc3BvcnQKICAgICAgICAgICAgIHNlbGYuYmFja2luZ190cmFuc3BvcnQgPSBnZXRfdHJh
bnNwb3J0KCJyZWFkb25seSsiICsgc2VsZi5iYWNraW5nX3RyYW5zcG9ydC5hYnNwYXRoKCcuJykp
Ci0gICAgICAgIHNlbGYuc2VydmVyID0gc21hcnQuU21hcnRUQ1BTZXJ2ZXIoc2VsZi5iYWNraW5n
X3RyYW5zcG9ydCkKKyAgICAgICAgc2VsZi5zZXJ2ZXIgPSBzZXJ2ZXIuU21hcnRUQ1BTZXJ2ZXIo
c2VsZi5iYWNraW5nX3RyYW5zcG9ydCkKICAgICAgICAgc2VsZi5zZXJ2ZXIuc3RhcnRfYmFja2dy
b3VuZF90aHJlYWQoKQotICAgICAgICBzZWxmLnRyYW5zcG9ydCA9IHNtYXJ0LlNtYXJ0VENQVHJh
bnNwb3J0KHNlbGYuc2VydmVyLmdldF91cmwoKSkKKyAgICAgICAgc2VsZi50cmFuc3BvcnQgPSBy
ZW1vdGUuUmVtb3RlVENQVHJhbnNwb3J0KHNlbGYuc2VydmVyLmdldF91cmwoKSkKICAgICAgICAg
c2VsZi5hZGRDbGVhbnVwKHNlbGYudGVhckRvd25TZXJ2ZXIpCiAKICAgICBkZWYgdGVhckRvd25T
ZXJ2ZXIoc2VsZik6CkBAIC04MjYsNyArODg5LDcgQEAKICAgICAgICAgIiIiSXQgc2hvdWxkIGJl
IHNhZmUgdG8gdGVhcmRvd24gdGhlIHNlcnZlciB3aXRoIG5vIHJlcXVlc3RzLiIiIgogICAgICAg
ICBzZWxmLnNldFVwU2VydmVyKCkKICAgICAgICAgc2VydmVyID0gc2VsZi5zZXJ2ZXIKLSAgICAg
ICAgdHJhbnNwb3J0ID0gc21hcnQuU21hcnRUQ1BUcmFuc3BvcnQoc2VsZi5zZXJ2ZXIuZ2V0X3Vy
bCgpKQorICAgICAgICB0cmFuc3BvcnQgPSByZW1vdGUuUmVtb3RlVENQVHJhbnNwb3J0KHNlbGYu
c2VydmVyLmdldF91cmwoKSkKICAgICAgICAgc2VsZi50ZWFyRG93blNlcnZlcigpCiAgICAgICAg
IHNlbGYuYXNzZXJ0UmFpc2VzKGVycm9ycy5Db25uZWN0aW9uRXJyb3IsIHRyYW5zcG9ydC5oYXMs
ICcuJykKIApAQCAtODM4LDcgKzkwMSw3IEBACiAgICAgICAgIHNlbGYudGVhckRvd25TZXJ2ZXIo
KQogICAgICAgICAjIGlmIHRoZSBsaXN0ZW5pbmcgc29ja2V0IGhhcyBjbG9zZWQsIHdlIHNob3Vs
ZCBnZXQgYSBCQURGRCBlcnJvcgogICAgICAgICAjIHdoZW4gY29ubmVjdGluZywgcmF0aGVyIHRo
YW4gYSBoYW5nLgotICAgICAgICB0cmFuc3BvcnQgPSBzbWFydC5TbWFydFRDUFRyYW5zcG9ydChz
ZXJ2ZXIuZ2V0X3VybCgpKQorICAgICAgICB0cmFuc3BvcnQgPSByZW1vdGUuUmVtb3RlVENQVHJh
bnNwb3J0KHNlcnZlci5nZXRfdXJsKCkpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKGVycm9y
cy5Db25uZWN0aW9uRXJyb3IsIHRyYW5zcG9ydC5oYXMsICcuJykKIAogCkBAIC04NTUsMTIgKzkx
OCwxNCBAQAogCiAgICAgZGVmIHRlc3Rfc21hcnRfdHJhbnNwb3J0X2hhcyhzZWxmKToKICAgICAg
ICAgIiIiQ2hlY2tpbmcgZm9yIGZpbGUgZXhpc3RlbmNlIG92ZXIgc21hcnQuIiIiCisgICAgICAg
IHNlbGYuX2NhcHR1cmVWYXIoJ0JaUl9OT19TTUFSVF9WRlMnLCBOb25lKQogICAgICAgICBzZWxm
LmJhY2tpbmdfdHJhbnNwb3J0LnB1dF9ieXRlcygiZm9vIiwgImNvbnRlbnRzIG9mIGZvb1xuIikK
ICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNlbGYudHJhbnNwb3J0LmhhcygiZm9vIikpCiAgICAg
ICAgIHNlbGYuYXNzZXJ0RmFsc2Uoc2VsZi50cmFuc3BvcnQuaGFzKCJub24tZm9vIikpCiAKICAg
ICBkZWYgdGVzdF9zbWFydF90cmFuc3BvcnRfZ2V0KHNlbGYpOgogICAgICAgICAiIiJSZWFkIGJh
Y2sgYSBmaWxlIG92ZXIgc21hcnQuIiIiCisgICAgICAgIHNlbGYuX2NhcHR1cmVWYXIoJ0JaUl9O
T19TTUFSVF9WRlMnLCBOb25lKQogICAgICAgICBzZWxmLmJhY2tpbmdfdHJhbnNwb3J0LnB1dF9i
eXRlcygiZm9vIiwgImNvbnRlbnRzXG5vZlxuZm9vXG4iKQogICAgICAgICBmcCA9IHNlbGYudHJh
bnNwb3J0LmdldCgiZm9vIikKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnY29udGVudHNcbm9m
XG5mb29cbicsIGZwLnJlYWQoKSkKQEAgLTg3MCw2ICs5MzUsNyBAQAogICAgICAgICAjIFRoZSBw
YXRoIGluIGEgcmFpc2VkIE5vU3VjaEZpbGUgZXhjZXB0aW9uIHNob3VsZCBiZSB0aGUgcHJlY2lz
ZSBwYXRoCiAgICAgICAgICMgYXNrZWQgZm9yIGJ5IHRoZSBjbGllbnQuIFRoaXMgZ2l2ZXMgbWVh
bmluZ2Z1bCBhbmQgdW5zdXJwcmlzaW5nIGVycm9ycwogICAgICAgICAjIGZvciB1c2Vycy4KKyAg
ICAgICAgc2VsZi5fY2FwdHVyZVZhcignQlpSX05PX1NNQVJUX1ZGUycsIE5vbmUpCiAgICAgICAg
IHRyeToKICAgICAgICAgICAgIHNlbGYudHJhbnNwb3J0LmdldCgnbm90JTIwYSUyMGZpbGUnKQog
ICAgICAgICBleGNlcHQgZXJyb3JzLk5vU3VjaEZpbGUsIGU6CkBAIC04OTYsNiArOTYyLDcgQEAK
IAogICAgIGRlZiB0ZXN0X29wZW5fZGlyKHNlbGYpOgogICAgICAgICAiIiJUZXN0IGNoYW5naW5n
IGRpcmVjdG9yeSIiIgorICAgICAgICBzZWxmLl9jYXB0dXJlVmFyKCdCWlJfTk9fU01BUlRfVkZT
JywgTm9uZSkKICAgICAgICAgdHJhbnNwb3J0ID0gc2VsZi50cmFuc3BvcnQKICAgICAgICAgc2Vs
Zi5iYWNraW5nX3RyYW5zcG9ydC5ta2RpcigndG9mZmVlJykKICAgICAgICAgc2VsZi5iYWNraW5n
X3RyYW5zcG9ydC5ta2RpcigndG9mZmVlL2FwcGxlJykKQEAgLTkyMyw2ICs5OTAsNyBAQAogCiAg
ICAgZGVmIHRlc3RfbWtkaXJfZXJyb3JfcmVhZG9ubHkoc2VsZik6CiAgICAgICAgICIiIlRyYW5z
cG9ydE5vdFBvc3NpYmxlIHNob3VsZCBiZSBwcmVzZXJ2ZWQgZnJvbSB0aGUgYmFja2luZyB0cmFu
c3BvcnQuIiIiCisgICAgICAgIHNlbGYuX2NhcHR1cmVWYXIoJ0JaUl9OT19TTUFSVF9WRlMnLCBO
b25lKQogICAgICAgICBzZWxmLnNldFVwU2VydmVyKHJlYWRvbmx5PVRydWUpCiAgICAgICAgIHNl
bGYuYXNzZXJ0UmFpc2VzKGVycm9ycy5UcmFuc3BvcnROb3RQb3NzaWJsZSwgc2VsZi50cmFuc3Bv
cnQubWtkaXIsCiAgICAgICAgICAgICAnZm9vJykKQEAgLTkzNyw3ICsxMDA1LDcgQEAKICAgICBk
ZWYgdGVzdF9zZXJ2ZXJfc3RhcnRlZF9ob29rKHNlbGYpOgogICAgICAgICAiIiJUaGUgc2VydmVy
X3N0YXJ0ZWQgaG9vayBmaXJlcyB3aGVuIHRoZSBzZXJ2ZXIgaXMgc3RhcnRlZC4iIiIKICAgICAg
ICAgc2VsZi5ob29rX2NhbGxzID0gW10KLSAgICAgICAgc21hcnQuU21hcnRUQ1BTZXJ2ZXIuaG9v
a3MuaW5zdGFsbF9ob29rKCdzZXJ2ZXJfc3RhcnRlZCcsCisgICAgICAgIHNlcnZlci5TbWFydFRD
UFNlcnZlci5ob29rcy5pbnN0YWxsX2hvb2soJ3NlcnZlcl9zdGFydGVkJywKICAgICAgICAgICAg
IHNlbGYuY2FwdHVyZV9zZXJ2ZXJfY2FsbCkKICAgICAgICAgc2VsZi5zZXRVcFNlcnZlcigpCiAg
ICAgICAgICMgYXQgdGhpcyBwb2ludCwgdGhlIHNlcnZlciB3aWxsIGJlIHN0YXJ0aW5nIGEgdGhy
ZWFkIHVwLgpAQCAtOTQ5LDcgKzEwMTcsNyBAQAogICAgIGRlZiB0ZXN0X3NlcnZlcl9zdG9wcGVk
X2hvb2tfc2ltcGxlKHNlbGYpOgogICAgICAgICAiIiJUaGUgc2VydmVyX3N0b3BwZWQgaG9vayBm
aXJlcyB3aGVuIHRoZSBzZXJ2ZXIgaXMgc3RvcHBlZC4iIiIKICAgICAgICAgc2VsZi5ob29rX2Nh
bGxzID0gW10KLSAgICAgICAgc21hcnQuU21hcnRUQ1BTZXJ2ZXIuaG9va3MuaW5zdGFsbF9ob29r
KCdzZXJ2ZXJfc3RvcHBlZCcsCisgICAgICAgIHNlcnZlci5TbWFydFRDUFNlcnZlci5ob29rcy5p
bnN0YWxsX2hvb2soJ3NlcnZlcl9zdG9wcGVkJywKICAgICAgICAgICAgIHNlbGYuY2FwdHVyZV9z
ZXJ2ZXJfY2FsbCkKICAgICAgICAgc2VsZi5zZXRVcFNlcnZlcigpCiAgICAgICAgIHJlc3VsdCA9
IFsoc2VsZi5iYWNraW5nX3RyYW5zcG9ydC5iYXNlLCBzZWxmLnRyYW5zcG9ydC5iYXNlKV0KQEAg
LTk1OSw3ICsxMDI3LDYgQEAKICAgICAgICAgc2VsZi50cmFuc3BvcnQuaGFzKCcuJykKICAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbChbXSwgc2VsZi5ob29rX2NhbGxzKQogICAgICAgICAjIGNsZWFu
IHVwIHRoZSBzZXJ2ZXIKLSAgICAgICAgc2VydmVyID0gc2VsZi5zZXJ2ZXIKICAgICAgICAgc2Vs
Zi50ZWFyRG93blNlcnZlcigpCiAgICAgICAgICMgbm93IGl0IHNob3VsZCBoYXZlIGZpcmVkLgog
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3VsdCwgc2VsZi5ob29rX2NhbGxzKQpAQCAtOTY4
LDE5ICsxMDM1LDE5IEBACiAjIHNlcnZlci1zdG9wcGVkIGhvb2suCiAKIAotY2xhc3MgU21hcnRT
ZXJ2ZXJSZXF1ZXN0SGFuZGxlclRlc3RzKHRlc3RzLlRlc3RDYXNlV2l0aFRyYW5zcG9ydCk6Ci0g
ICAgIiIiVGVzdCB0aGF0IGNhbGwgZGlyZWN0bHkgaW50byB0aGUgaGFuZGxlciBsb2dpYywgYnlw
YXNzaW5nIHRoZSBuZXR3b3JrLiIiIgotCi0gICAgZGVmIHRlc3RfY29uc3RydWN0X3JlcXVlc3Rf
aGFuZGxlcihzZWxmKToKLSAgICAgICAgIiIiQ29uc3RydWN0aW5nIGEgcmVxdWVzdCBoYW5kbGVy
IHNob3VsZCBiZSBlYXN5IGFuZCBzZXQgZGVmYXVsdHMuIiIiCi0gICAgICAgIGhhbmRsZXIgPSBz
bWFydC5TbWFydFNlcnZlclJlcXVlc3RIYW5kbGVyKE5vbmUpCi0gICAgICAgIHNlbGYuYXNzZXJ0
RmFsc2UoaGFuZGxlci5maW5pc2hlZF9yZWFkaW5nKQotCitjbGFzcyBTbWFydFNlcnZlckNvbW1h
bmRUZXN0cyh0ZXN0cy5UZXN0Q2FzZVdpdGhUcmFuc3BvcnQpOgorICAgICIiIlRlc3RzIHRoYXQg
Y2FsbCBkaXJlY3RseSBpbnRvIHRoZSBjb21tYW5kIG9iamVjdHMsIGJ5cGFzc2luZyB0aGUgbmV0
d29yaworICAgIGFuZCB0aGUgcmVxdWVzdCBkaXNwYXRjaGluZy4KKworICAgIE5vdGU6IHRoZXNl
IHRlc3RzIGFyZSBydWRpbWVudGFyeSB2ZXJzaW9ucyBvZiB0aGUgY29tbWFuZCBvYmplY3QgdGVz
dHMgaW4KKyAgICB0ZXN0X3JlbW90ZS5weS4KKyAgICAiIiIKKyAgICAgICAgCiAgICAgZGVmIHRl
c3RfaGVsbG8oc2VsZik6Ci0gICAgICAgIGhhbmRsZXIgPSBzbWFydC5TbWFydFNlcnZlclJlcXVl
c3RIYW5kbGVyKE5vbmUpCi0gICAgICAgIGhhbmRsZXIuZGlzcGF0Y2hfY29tbWFuZCgnaGVsbG8n
LCAoKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgoJ29rJywgJzEnKSwgaGFuZGxlci5yZXNw
b25zZS5hcmdzKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKE5vbmUsIGhhbmRsZXIucmVzcG9u
c2UuYm9keSkKKyAgICAgICAgY21kID0gcmVxdWVzdC5IZWxsb1JlcXVlc3QoTm9uZSkKKyAgICAg
ICAgcmVzcG9uc2UgPSBjbWQuZXhlY3V0ZSgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoKCdv
aycsICcyJyksIHJlc3BvbnNlLmFyZ3MpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoTm9uZSwg
cmVzcG9uc2UuYm9keSkKICAgICAgICAgCiAgICAgZGVmIHRlc3RfZ2V0X2J1bmRsZShzZWxmKToK
ICAgICAgICAgZnJvbSBienJsaWIuYnVuZGxlIGltcG9ydCBzZXJpYWxpemVyCkBAIC05ODksMTQg
KzEwNTYsNTAgQEAKICAgICAgICAgd3QuYWRkKCdoZWxsbycpCiAgICAgICAgIHJldl9pZCA9IHd0
LmNvbW1pdCgnYWRkIGhlbGxvJykKICAgICAgICAgCi0gICAgICAgIGhhbmRsZXIgPSBzbWFydC5T
bWFydFNlcnZlclJlcXVlc3RIYW5kbGVyKHNlbGYuZ2V0X3RyYW5zcG9ydCgpKQotICAgICAgICBo
YW5kbGVyLmRpc3BhdGNoX2NvbW1hbmQoJ2dldF9idW5kbGUnLCAoJy4nLCByZXZfaWQpKQotICAg
ICAgICBidW5kbGUgPSBzZXJpYWxpemVyLnJlYWRfYnVuZGxlKFN0cmluZ0lPKGhhbmRsZXIucmVz
cG9uc2UuYm9keSkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoKCksIGhhbmRsZXIucmVzcG9u
c2UuYXJncykKKyAgICAgICAgY21kID0gcmVxdWVzdC5HZXRCdW5kbGVSZXF1ZXN0KHNlbGYuZ2V0
X3RyYW5zcG9ydCgpKQorICAgICAgICByZXNwb25zZSA9IGNtZC5leGVjdXRlKCcuJywgcmV2X2lk
KQorICAgICAgICBidW5kbGUgPSBzZXJpYWxpemVyLnJlYWRfYnVuZGxlKFN0cmluZ0lPKHJlc3Bv
bnNlLmJvZHkpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCgpLCByZXNwb25zZS5hcmdzKQor
CisKK2NsYXNzIFNtYXJ0U2VydmVyUmVxdWVzdEhhbmRsZXJUZXN0cyh0ZXN0cy5UZXN0Q2FzZVdp
dGhUcmFuc3BvcnQpOgorICAgICIiIlRlc3QgdGhhdCBjYWxsIGRpcmVjdGx5IGludG8gdGhlIGhh
bmRsZXIgbG9naWMsIGJ5cGFzc2luZyB0aGUgbmV0d29yay4iIiIKKworICAgIGRlZiBzZXRVcChz
ZWxmKToKKyAgICAgICAgc3VwZXIoU21hcnRTZXJ2ZXJSZXF1ZXN0SGFuZGxlclRlc3RzLCBzZWxm
KS5zZXRVcCgpCisgICAgICAgIHNlbGYuX2NhcHR1cmVWYXIoJ0JaUl9OT19TTUFSVF9WRlMnLCBO
b25lKQorCisgICAgZGVmIGJ1aWxkX2hhbmRsZXIoc2VsZiwgdHJhbnNwb3J0KToKKyAgICAgICAg
IiIiUmV0dXJucyBhIGhhbmRsZXIgZm9yIHRoZSBjb21tYW5kcyBpbiBwcm90b2NvbCB2ZXJzaW9u
IG9uZS4iIiIKKyAgICAgICAgcmV0dXJuIHJlcXVlc3QuU21hcnRTZXJ2ZXJSZXF1ZXN0SGFuZGxl
cih0cmFuc3BvcnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgcmVxdWVzdC5yZXF1ZXN0X2hhbmRsZXJzKQorCisgICAgZGVmIHRlc3RfY29uc3RydWN0
X3JlcXVlc3RfaGFuZGxlcihzZWxmKToKKyAgICAgICAgIiIiQ29uc3RydWN0aW5nIGEgcmVxdWVz
dCBoYW5kbGVyIHNob3VsZCBiZSBlYXN5IGFuZCBzZXQgZGVmYXVsdHMuIiIiCisgICAgICAgIGhh
bmRsZXIgPSByZXF1ZXN0LlNtYXJ0U2VydmVyUmVxdWVzdEhhbmRsZXIoTm9uZSwgTm9uZSkKKyAg
ICAgICAgc2VsZi5hc3NlcnRGYWxzZShoYW5kbGVyLmZpbmlzaGVkX3JlYWRpbmcpCisKKyAgICBk
ZWYgdGVzdF9oZWxsbyhzZWxmKToKKyAgICAgICAgaGFuZGxlciA9IHNlbGYuYnVpbGRfaGFuZGxl
cihOb25lKQorICAgICAgICBoYW5kbGVyLmRpc3BhdGNoX2NvbW1hbmQoJ2hlbGxvJywgKCkpCisg
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoKCdvaycsICcyJyksIGhhbmRsZXIucmVzcG9uc2UuYXJn
cykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChOb25lLCBoYW5kbGVyLnJlc3BvbnNlLmJvZHkp
CisgICAgICAgIAorICAgIGRlZiB0ZXN0X2Rpc2FibGVfdmZzX2hhbmRsZXJfY2xhc3Nlc192aWFf
ZW52aXJvbm1lbnQoc2VsZik6CisgICAgICAgICMgVkZTIGhhbmRsZXIgY2xhc3NlcyB3aWxsIHJh
aXNlIGFuIGVycm9yIGZyb20gImV4ZWN1dGUiIGlmCisgICAgICAgICMgQlpSX05PX1NNQVJUX1ZG
UyBpcyBzZXQuCisgICAgICAgIGhhbmRsZXIgPSB2ZnMuSGFzUmVxdWVzdChOb25lKQorICAgICAg
ICAjIHNldCBlbnZpcm9ubWVudCB2YXJpYWJsZSBhZnRlciBjb25zdHJ1Y3Rpb24gdG8gbWFrZSBz
dXJlIGl0J3MKKyAgICAgICAgIyBleGFtaW5lZC4KKyAgICAgICAgIyBOb3RlIHRoYXQgd2UgY2Fu
IHNhZmVseSBjbG9iYmVyIEJaUl9OT19TTUFSVF9WRlMgaGVyZSwgYmVjYXVzZSBzZXRVcAorICAg
ICAgICAjIGhhcyBjYWxsZWQgX2NhcHR1cmVWYXIsIHNvIGl0IHdpbGwgYmUgcmVzdG9yZWQgdG8g
dGhlIHJpZ2h0IHN0YXRlCisgICAgICAgICMgYWZ0ZXJ3YXJkcy4KKyAgICAgICAgb3MuZW52aXJv
blsnQlpSX05PX1NNQVJUX1ZGUyddID0gJycKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoZXJy
b3JzLkRpc2FibGVkTWV0aG9kLCBoYW5kbGVyLmV4ZWN1dGUpCiAKICAgICBkZWYgdGVzdF9yZWFk
b25seV9leGNlcHRpb25fYmVjb21lc190cmFuc3BvcnRfbm90X3Bvc3NpYmxlKHNlbGYpOgogICAg
ICAgICAiIiJUaGUgcmVzcG9uc2UgZm9yIGEgcmVhZC1vbmx5IGVycm9yIGlzICgnUmVhZE9ubHlF
cnJvcicpLiIiIgotICAgICAgICBoYW5kbGVyID0gc21hcnQuU21hcnRTZXJ2ZXJSZXF1ZXN0SGFu
ZGxlcihzZWxmLmdldF9yZWFkb25seV90cmFuc3BvcnQoKSkKKyAgICAgICAgaGFuZGxlciA9IHNl
bGYuYnVpbGRfaGFuZGxlcihzZWxmLmdldF9yZWFkb25seV90cmFuc3BvcnQoKSkKICAgICAgICAg
IyBzZW5kIGEgbWtkaXIgZm9yIGZvbywgd2l0aCBubyBleHBsaWNpdCBtb2RlIC0gc2hvdWxkIGZh
aWwuCiAgICAgICAgIGhhbmRsZXIuZGlzcGF0Y2hfY29tbWFuZCgnbWtkaXInLCAoJ2ZvbycsICcn
KSkKICAgICAgICAgIyBhbmQgdGhlIGZhaWx1cmUgc2hvdWxkIGJlIGFuIGV4cGxpY2l0IFJlYWRP
bmx5RXJyb3IKQEAgLTEwMDgsMTQgKzExMTEsMTQgQEAKIAogICAgIGRlZiB0ZXN0X2hlbGxvX2hh
c19maW5pc2hlZF9ib2R5X29uX2Rpc3BhdGNoKHNlbGYpOgogICAgICAgICAiIiJUaGUgJ2hlbGxv
JyBjb21tYW5kIHNob3VsZCBzZXQgZmluaXNoZWRfcmVhZGluZy4iIiIKLSAgICAgICAgaGFuZGxl
ciA9IHNtYXJ0LlNtYXJ0U2VydmVyUmVxdWVzdEhhbmRsZXIoTm9uZSkKKyAgICAgICAgaGFuZGxl
ciA9IHNlbGYuYnVpbGRfaGFuZGxlcihOb25lKQogICAgICAgICBoYW5kbGVyLmRpc3BhdGNoX2Nv
bW1hbmQoJ2hlbGxvJywgKCkpCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShoYW5kbGVyLmZpbmlz
aGVkX3JlYWRpbmcpCiAgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwoTm9uZSwgaGFuZGxlci5y
ZXNwb25zZSkKIAogICAgIGRlZiB0ZXN0X3B1dF9ieXRlc19ub25fYXRvbWljKHNlbGYpOgogICAg
ICAgICAiIiIncHV0Xy4uLicgc2hvdWxkIHNldCBmaW5pc2hlZF9yZWFkaW5nIGFmdGVyIHJlYWRp
bmcgdGhlIGJ5dGVzLiIiIgotICAgICAgICBoYW5kbGVyID0gc21hcnQuU21hcnRTZXJ2ZXJSZXF1
ZXN0SGFuZGxlcihzZWxmLmdldF90cmFuc3BvcnQoKSkKKyAgICAgICAgaGFuZGxlciA9IHNlbGYu
YnVpbGRfaGFuZGxlcihzZWxmLmdldF90cmFuc3BvcnQoKSkKICAgICAgICAgaGFuZGxlci5kaXNw
YXRjaF9jb21tYW5kKCdwdXRfbm9uX2F0b21pYycsICgnYS1maWxlJywgJycsICdGJywgJycpKQog
ICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGhhbmRsZXIuZmluaXNoZWRfcmVhZGluZykKICAgICAg
ICAgaGFuZGxlci5hY2NlcHRfYm9keSgnMTIzNCcpCkBAIC0xMDI5LDcgKzExMzIsNyBAQAogICAg
IGRlZiB0ZXN0X3JlYWR2X2FjY2VwdF9ib2R5KHNlbGYpOgogICAgICAgICAiIiIncmVhZHYnIHNo
b3VsZCBzZXQgZmluaXNoZWRfcmVhZGluZyBhZnRlciByZWFkaW5nIG9mZnNldHMuIiIiCiAgICAg
ICAgIHNlbGYuYnVpbGRfdHJlZShbJ2EtZmlsZSddKQotICAgICAgICBoYW5kbGVyID0gc21hcnQu
U21hcnRTZXJ2ZXJSZXF1ZXN0SGFuZGxlcihzZWxmLmdldF9yZWFkb25seV90cmFuc3BvcnQoKSkK
KyAgICAgICAgaGFuZGxlciA9IHNlbGYuYnVpbGRfaGFuZGxlcihzZWxmLmdldF9yZWFkb25seV90
cmFuc3BvcnQoKSkKICAgICAgICAgaGFuZGxlci5kaXNwYXRjaF9jb21tYW5kKCdyZWFkdicsICgn
YS1maWxlJywgKSkKICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShoYW5kbGVyLmZpbmlzaGVkX3Jl
YWRpbmcpCiAgICAgICAgIGhhbmRsZXIuYWNjZXB0X2JvZHkoJzIsJykKQEAgLTEwNDQsNyArMTE0
Nyw3IEBACiAgICAgZGVmIHRlc3RfcmVhZHZfc2hvcnRfcmVhZF9yZXNwb25zZV9jb250ZW50cyhz
ZWxmKToKICAgICAgICAgIiIiJ3JlYWR2JyB3aGVuIGEgc2hvcnQgcmVhZCBvY2N1cnMgc2V0cyB0
aGUgcmVzcG9uc2UgYXBwcm9wcmlhdGVseS4iIiIKICAgICAgICAgc2VsZi5idWlsZF90cmVlKFsn
YS1maWxlJ10pCi0gICAgICAgIGhhbmRsZXIgPSBzbWFydC5TbWFydFNlcnZlclJlcXVlc3RIYW5k
bGVyKHNlbGYuZ2V0X3JlYWRvbmx5X3RyYW5zcG9ydCgpKQorICAgICAgICBoYW5kbGVyID0gc2Vs
Zi5idWlsZF9oYW5kbGVyKHNlbGYuZ2V0X3JlYWRvbmx5X3RyYW5zcG9ydCgpKQogICAgICAgICBo
YW5kbGVyLmRpc3BhdGNoX2NvbW1hbmQoJ3JlYWR2JywgKCdhLWZpbGUnLCApKQogICAgICAgICAj
IHJlYWQgYmV5b25kIHRoZSBlbmQgb2YgdGhlIGZpbGUuCiAgICAgICAgIGhhbmRsZXIuYWNjZXB0
X2JvZHkoJzEwMCwxJykKQEAgLTEwNTUsMjIgKzExNTgsMjMgQEAKICAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbChOb25lLCBoYW5kbGVyLnJlc3BvbnNlLmJvZHkpCiAKIAotY2xhc3MgU21hcnRUcmFu
c3BvcnRSZWdpc3RyYXRpb24odGVzdHMuVGVzdENhc2UpOgorY2xhc3MgUmVtb3RlVHJhbnNwb3J0
UmVnaXN0cmF0aW9uKHRlc3RzLlRlc3RDYXNlKToKIAogICAgIGRlZiB0ZXN0X3JlZ2lzdHJhdGlv
bihzZWxmKToKICAgICAgICAgdCA9IGdldF90cmFuc3BvcnQoJ2J6citzc2g6Ly9leGFtcGxlLmNv
bS9wYXRoJykKLSAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKHQsIHNtYXJ0LlNtYXJ0U1NI
VHJhbnNwb3J0KQorICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UodCwgcmVtb3RlLlJlbW90
ZVNTSFRyYW5zcG9ydCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnZXhhbXBsZS5jb20nLCB0
Ll9ob3N0KQogCiAKLWNsYXNzIFRlc3RTbWFydFRyYW5zcG9ydCh0ZXN0cy5UZXN0Q2FzZSk6Citj
bGFzcyBUZXN0UmVtb3RlVHJhbnNwb3J0KHRlc3RzLlRlc3RDYXNlKToKICAgICAgICAgCiAgICAg
ZGVmIHRlc3RfdXNlX2Nvbm5lY3Rpb25fZmFjdG9yeShzZWxmKToKLSAgICAgICAgIyBXZSB3YW50
IHRvIGJlIGFibGUgdG8gcGFzcyBhIGNsaWVudCBhcyBhIHBhcmFtZXRlciB0byBTbWFydFRyYW5z
cG9ydC4KKyAgICAgICAgIyBXZSB3YW50IHRvIGJlIGFibGUgdG8gcGFzcyBhIGNsaWVudCBhcyBh
IHBhcmFtZXRlciB0byBSZW1vdGVUcmFuc3BvcnQuCiAgICAgICAgIGlucHV0ID0gU3RyaW5nSU8o
Im9rXG4zXG5iYXJkb25lXG4iKQogICAgICAgICBvdXRwdXQgPSBTdHJpbmdJTygpCi0gICAgICAg
IG1lZGl1bSA9IHNtYXJ0LlNtYXJ0U2ltcGxlUGlwZXNDbGllbnRNZWRpdW0oaW5wdXQsIG91dHB1
dCkKLSAgICAgICAgdHJhbnNwb3J0ID0gc21hcnQuU21hcnRUcmFuc3BvcnQoJ2J6cjovL2xvY2Fs
aG9zdC8nLCBtZWRpdW09bWVkaXVtKQorICAgICAgICBjbGllbnRfbWVkaXVtID0gbWVkaXVtLlNt
YXJ0U2ltcGxlUGlwZXNDbGllbnRNZWRpdW0oaW5wdXQsIG91dHB1dCkKKyAgICAgICAgdHJhbnNw
b3J0ID0gcmVtb3RlLlJlbW90ZVRyYW5zcG9ydCgKKyAgICAgICAgICAgICdienI6Ly9sb2NhbGhv
c3QvJywgbWVkaXVtPWNsaWVudF9tZWRpdW0pCiAKICAgICAgICAgIyBXZSB3YW50IHRvIG1ha2Ug
c3VyZSB0aGUgY2xpZW50IGlzIHVzZWQgd2hlbiB0aGUgZmlyc3QgcmVtb3RlCiAgICAgICAgICMg
bWV0aG9kIGlzIGNhbGxlZC4gIE5vIGRhdGEgc2hvdWxkIGhhdmUgYmVlbiBzZW50LCBvciByZWFk
LgpAQCAtMTA4OCwyMiArMTE5MiwyMyBAQAogCiAgICAgZGVmIHRlc3RfX3RyYW5zbGF0ZV9lcnJv
cl9yZWFkb25seShzZWxmKToKICAgICAgICAgIiIiU2VuZGluZyBhIFJlYWRPbmx5RXJyb3IgdG8g
X3RyYW5zbGF0ZV9lcnJvciByYWlzZXMgVHJhbnNwb3J0Tm90UG9zc2libGUuIiIiCi0gICAgICAg
IG1lZGl1bSA9IHNtYXJ0LlNtYXJ0Q2xpZW50TWVkaXVtKCkKLSAgICAgICAgdHJhbnNwb3J0ID0g
c21hcnQuU21hcnRUcmFuc3BvcnQoJ2J6cjovL2xvY2FsaG9zdC8nLCBtZWRpdW09bWVkaXVtKQor
ICAgICAgICBjbGllbnRfbWVkaXVtID0gbWVkaXVtLlNtYXJ0Q2xpZW50TWVkaXVtKCkKKyAgICAg
ICAgdHJhbnNwb3J0ID0gcmVtb3RlLlJlbW90ZVRyYW5zcG9ydCgKKyAgICAgICAgICAgICdienI6
Ly9sb2NhbGhvc3QvJywgbWVkaXVtPWNsaWVudF9tZWRpdW0pCiAgICAgICAgIHNlbGYuYXNzZXJ0
UmFpc2VzKGVycm9ycy5UcmFuc3BvcnROb3RQb3NzaWJsZSwKICAgICAgICAgICAgIHRyYW5zcG9y
dC5fdHJhbnNsYXRlX2Vycm9yLCAoIlJlYWRPbmx5RXJyb3IiLCApKQogCiAKLWNsYXNzIEluc3Ry
dW1lbnRlZFNlcnZlclByb3RvY29sKHNtYXJ0LlNtYXJ0U2VydmVyU3RyZWFtTWVkaXVtKToKK2Ns
YXNzIEluc3RydW1lbnRlZFNlcnZlclByb3RvY29sKG1lZGl1bS5TbWFydFNlcnZlclN0cmVhbU1l
ZGl1bSk6CiAgICAgIiIiQSBzbWFydCBzZXJ2ZXIgd2hpY2ggaXMgYmFja2VkIGJ5IG1lbW9yeSBh
bmQgc2F2ZXMgaXRzIHdyaXRlIHJlcXVlc3RzLiIiIgogCiAgICAgZGVmIF9faW5pdF9fKHNlbGYs
IHdyaXRlX291dHB1dF9saXN0KToKLSAgICAgICAgc21hcnQuU21hcnRTZXJ2ZXJTdHJlYW1NZWRp
dW0uX19pbml0X18oc2VsZiwgbWVtb3J5Lk1lbW9yeVRyYW5zcG9ydCgpKQorICAgICAgICBtZWRp
dW0uU21hcnRTZXJ2ZXJTdHJlYW1NZWRpdW0uX19pbml0X18oc2VsZiwgbWVtb3J5Lk1lbW9yeVRy
YW5zcG9ydCgpKQogICAgICAgICBzZWxmLl93cml0ZV9vdXRwdXRfbGlzdCA9IHdyaXRlX291dHB1
dF9saXN0CiAKIAogY2xhc3MgVGVzdFNtYXJ0UHJvdG9jb2wodGVzdHMuVGVzdENhc2UpOgotICAg
ICIiIlRlc3RzIGZvciB0aGUgc21hcnQgcHJvdG9jb2wuCisgICAgIiIiQmFzZSBjbGFzcyBmb3Ig
c21hcnQgcHJvdG9jb2wgdGVzdHMuCiAKICAgICBFYWNoIHRlc3QgY2FzZSBnZXRzIGEgc21hcnRf
c2VydmVyIGFuZCBzbWFydF9jbGllbnQgY3JlYXRlZCBkdXJpbmcgc2V0VXAoKS4KIApAQCAtMTEx
MywyMiArMTIxOCwyOSBAQAogICAgIHNlcmlhbGlzZWQgY2xpZW50IHJlcXVlc3QuIE91dHB1dCBk
b25lIGJ5IHRoZSBjbGllbnQgb3Igc2VydmVyIGZvciB0aGVzZQogICAgIGNhbGxzIHdpbGwgYmUg
Y2FwdHVyZWQgdG8gc2VsZi50b19zZXJ2ZXIgYW5kIHNlbGYudG9fY2xpZW50LiBFYWNoIGVsZW1l
bnQKICAgICBpbiB0aGUgbGlzdCBpcyBhIHdyaXRlIGNhbGwgZnJvbSB0aGUgY2xpZW50IG9yIHNl
cnZlciByZXNwZWN0aXZlbHkuCisKKyAgICBTdWJjbGFzc2VzIGNhbiBvdmVycmlkZSBjbGllbnRf
cHJvdG9jb2xfY2xhc3MgYW5kIHNlcnZlcl9wcm90b2NvbF9jbGFzcy4KICAgICAiIiIKIAorICAg
IGNsaWVudF9wcm90b2NvbF9jbGFzcyA9IE5vbmUKKyAgICBzZXJ2ZXJfcHJvdG9jb2xfY2xhc3Mg
PSBOb25lCisKICAgICBkZWYgc2V0VXAoc2VsZik6CiAgICAgICAgIHN1cGVyKFRlc3RTbWFydFBy
b3RvY29sLCBzZWxmKS5zZXRVcCgpCisgICAgICAgICMgWFhYOiBzZWxmLnNlcnZlcl90b19jbGll
bnQgZG9lc24ndCBzZWVtIHRvIGJlIHVzZWQuICBJZiBzbywKKyAgICAgICAgIyBJbnN0cnVtZW50
ZWRTZXJ2ZXJQcm90b2NvbCBpcyByZWR1bmRhbnQgdG9vLgogICAgICAgICBzZWxmLnNlcnZlcl90
b19jbGllbnQgPSBbXQogICAgICAgICBzZWxmLnRvX3NlcnZlciA9IFN0cmluZ0lPKCkKICAgICAg
ICAgc2VsZi50b19jbGllbnQgPSBTdHJpbmdJTygpCi0gICAgICAgIHNlbGYuY2xpZW50X21lZGl1
bSA9IHNtYXJ0LlNtYXJ0U2ltcGxlUGlwZXNDbGllbnRNZWRpdW0oc2VsZi50b19jbGllbnQsCisg
ICAgICAgIHNlbGYuY2xpZW50X21lZGl1bSA9IG1lZGl1bS5TbWFydFNpbXBsZVBpcGVzQ2xpZW50
TWVkaXVtKHNlbGYudG9fY2xpZW50LAogICAgICAgICAgICAgc2VsZi50b19zZXJ2ZXIpCi0gICAg
ICAgIHNlbGYuY2xpZW50X3Byb3RvY29sID0gc21hcnQuU21hcnRDbGllbnRSZXF1ZXN0UHJvdG9j
b2xPbmUoCi0gICAgICAgICAgICBzZWxmLmNsaWVudF9tZWRpdW0pCisgICAgICAgIHNlbGYuY2xp
ZW50X3Byb3RvY29sID0gc2VsZi5jbGllbnRfcHJvdG9jb2xfY2xhc3Moc2VsZi5jbGllbnRfbWVk
aXVtKQogICAgICAgICBzZWxmLnNtYXJ0X3NlcnZlciA9IEluc3RydW1lbnRlZFNlcnZlclByb3Rv
Y29sKHNlbGYuc2VydmVyX3RvX2NsaWVudCkKLSAgICAgICAgc2VsZi5zbWFydF9zZXJ2ZXJfcmVx
dWVzdCA9IHNtYXJ0LlNtYXJ0U2VydmVyUmVxdWVzdEhhbmRsZXIoTm9uZSkKKyAgICAgICAgc2Vs
Zi5zbWFydF9zZXJ2ZXJfcmVxdWVzdCA9IHJlcXVlc3QuU21hcnRTZXJ2ZXJSZXF1ZXN0SGFuZGxl
cigKKyAgICAgICAgICAgIE5vbmUsIHJlcXVlc3QucmVxdWVzdF9oYW5kbGVycykKIAogICAgIGRl
ZiBhc3NlcnRPZmZzZXRTZXJpYWxpc2F0aW9uKHNlbGYsIGV4cGVjdGVkX29mZnNldHMsIGV4cGVj
dGVkX3NlcmlhbGlzZWQsCi0gICAgICAgIGNsaWVudCwgc21hcnRfc2VydmVyX3JlcXVlc3QpOgor
ICAgICAgICBjbGllbnQpOgogICAgICAgICAiIiJDaGVjayB0aGF0IHNtYXJ0IChkZSlzZXJpYWxp
c2VzIG9mZnNldHMgYXMgZXhwZWN0ZWQuCiAgICAgICAgIAogICAgICAgICBXZSBjaGVjayBib3Ro
IHNlcmlhbGlzYXRpb24gYW5kIGRlc2VyaWFsaXNhdGlvbiBhdCB0aGUgc2FtZSB0aW1lCkBAIC0x
MTM3LDE0NSArMTI0OSwzMiBAQAogICAgICAgICAKICAgICAgICAgOnBhcmFtIGV4cGVjdGVkX29m
ZnNldHM6IGEgcmVhZHYgb2Zmc2V0IGxpc3QuCiAgICAgICAgIDpwYXJhbSBleHBlY3RlZF9zZXJh
bGlzZWQ6IGFuIGV4cGVjdGVkIHNlcmlhbCBmb3JtIG9mIHRoZSBvZmZzZXRzLgotICAgICAgICA6
cGFyYW0gc21hcnRfc2VydmVyX3JlcXVlc3Q6IGEgU21hcnRTZXJ2ZXJSZXF1ZXN0SGFuZGxlciBp
bnN0YW5jZS4KICAgICAgICAgIiIiCi0gICAgICAgICMgWFhYOiAnc21hcnRfc2VydmVyX3JlcXVl
c3QnIHNob3VsZCBiZSBhIFNtYXJ0U2VydmVyUmVxdWVzdFByb3RvY29sIGluCi0gICAgICAgICMg
ZnV0dXJlLgotICAgICAgICBvZmZzZXRzID0gc21hcnRfc2VydmVyX3JlcXVlc3QuX2Rlc2VyaWFs
aXNlX29mZnNldHMoZXhwZWN0ZWRfc2VyaWFsaXNlZCkKKyAgICAgICAgIyBYWFg6ICdfZGVzZXJp
YWxpc2Vfb2Zmc2V0cycgc2hvdWxkIGJlIGEgbWV0aG9kIG9mIHRoZQorICAgICAgICAjIFNtYXJ0
U2VydmVyUmVxdWVzdFByb3RvY29sIGluIGZ1dHVyZS4KKyAgICAgICAgcmVhZHZfY21kID0gdmZz
LlJlYWR2UmVxdWVzdChOb25lKQorICAgICAgICBvZmZzZXRzID0gcmVhZHZfY21kLl9kZXNlcmlh
bGlzZV9vZmZzZXRzKGV4cGVjdGVkX3NlcmlhbGlzZWQpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwoZXhwZWN0ZWRfb2Zmc2V0cywgb2Zmc2V0cykKICAgICAgICAgc2VyaWFsaXNlZCA9IGNsaWVu
dC5fc2VyaWFsaXNlX29mZnNldHMob2Zmc2V0cykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChl
eHBlY3RlZF9zZXJpYWxpc2VkLCBzZXJpYWxpc2VkKQogCiAgICAgZGVmIGJ1aWxkX3Byb3RvY29s
X3dhaXRpbmdfZm9yX2JvZHkoc2VsZik6CiAgICAgICAgIG91dF9zdHJlYW0gPSBTdHJpbmdJTygp
Ci0gICAgICAgIHByb3RvY29sID0gc21hcnQuU21hcnRTZXJ2ZXJSZXF1ZXN0UHJvdG9jb2xPbmUo
Tm9uZSwgb3V0X3N0cmVhbS53cml0ZSkKLSAgICAgICAgcHJvdG9jb2wuaGFzX2Rpc3BhdGNoZWQg
PSBUcnVlCi0gICAgICAgIHByb3RvY29sLnJlcXVlc3QgPSBzbWFydC5TbWFydFNlcnZlclJlcXVl
c3RIYW5kbGVyKE5vbmUpCi0gICAgICAgIGRlZiBoYW5kbGVfZW5kX29mX2J5dGVzKCk6Ci0gICAg
ICAgICAgICBzZWxmLmVuZF9yZWNlaXZlZCA9IFRydWUKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwoJ2FiY2RlZmcnLCBwcm90b2NvbC5yZXF1ZXN0Ll9ib2R5X2J5dGVzKQotICAgICAgICAg
ICAgcHJvdG9jb2wucmVxdWVzdC5yZXNwb25zZSA9IHNtYXJ0LlNtYXJ0U2VydmVyUmVzcG9uc2Uo
KCdvaycsICkpCi0gICAgICAgIHByb3RvY29sLnJlcXVlc3QuX2VuZF9vZl9ib2R5X2hhbmRsZXIg
PSBoYW5kbGVfZW5kX29mX2J5dGVzCisgICAgICAgIHNtYXJ0X3Byb3RvY29sID0gc2VsZi5zZXJ2
ZXJfcHJvdG9jb2xfY2xhc3MoTm9uZSwgb3V0X3N0cmVhbS53cml0ZSkKKyAgICAgICAgc21hcnRf
cHJvdG9jb2wuaGFzX2Rpc3BhdGNoZWQgPSBUcnVlCisgICAgICAgIHNtYXJ0X3Byb3RvY29sLnJl
cXVlc3QgPSBzZWxmLnNtYXJ0X3NlcnZlcl9yZXF1ZXN0CisgICAgICAgIGNsYXNzIEZha2VDb21t
YW5kKG9iamVjdCk6CisgICAgICAgICAgICBkZWYgZG9fYm9keShjbWQsIGJvZHlfYnl0ZXMpOgor
ICAgICAgICAgICAgICAgIHNlbGYuZW5kX3JlY2VpdmVkID0gVHJ1ZQorICAgICAgICAgICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwoJ2FiY2RlZmcnLCBib2R5X2J5dGVzKQorICAgICAgICAgICAgICAg
IHJldHVybiByZXF1ZXN0LlN1Y2Nlc3NmdWxTbWFydFNlcnZlclJlc3BvbnNlKCgnb2snLCApKQor
ICAgICAgICBzbWFydF9wcm90b2NvbC5yZXF1ZXN0Ll9jb21tYW5kID0gRmFrZUNvbW1hbmQoKQog
ICAgICAgICAjIENhbGwgYWNjZXB0X2J5dGVzIHRvIG1ha2Ugc3VyZSB0aGF0IGludGVybmFsIHN0
YXRlIGxpa2UgX2JvZHlfZGVjb2RlcgogICAgICAgICAjIGlzIGluaXRpYWxpc2VkLiAgVGhpcyB0
ZXN0IHNob3VsZCBwcm9iYWJseSBiZSBnaXZlbiBhIGNsZWFyZXIKICAgICAgICAgIyBpbnRlcmZh
Y2UgdG8gd29yayB3aXRoIHRoYXQgd2lsbCBub3QgY2F1c2UgdGhpcyBpbmNvbnNpc3RlbmN5Lgog
ICAgICAgICAjICAgLS0gQW5kcmV3IEJlbm5ldHRzLCAyMDA2LTA5LTI4Ci0gICAgICAgIHByb3Rv
Y29sLmFjY2VwdF9ieXRlcygnJykKLSAgICAgICAgcmV0dXJuIHByb3RvY29sCi0KLSAgICBkZWYg
dGVzdF9jb25zdHJ1Y3RfdmVyc2lvbl9vbmVfc2VydmVyX3Byb3RvY29sKHNlbGYpOgotICAgICAg
ICBwcm90b2NvbCA9IHNtYXJ0LlNtYXJ0U2VydmVyUmVxdWVzdFByb3RvY29sT25lKE5vbmUsIE5v
bmUpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJycsIHByb3RvY29sLmV4Y2Vzc19idWZmZXIp
Ci0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJycsIHByb3RvY29sLmluX2J1ZmZlcikKLSAgICAg
ICAgc2VsZi5hc3NlcnRGYWxzZShwcm90b2NvbC5oYXNfZGlzcGF0Y2hlZCkKLSAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbCgxLCBwcm90b2NvbC5uZXh0X3JlYWRfc2l6ZSgpKQotCi0gICAgZGVmIHRl
c3RfY29uc3RydWN0X3ZlcnNpb25fb25lX2NsaWVudF9wcm90b2NvbChzZWxmKToKLSAgICAgICAg
IyB3ZSBjYW4gY29uc3RydWN0IGEgY2xpZW50IHByb3RvY29sIGZyb20gYSBjbGllbnQgbWVkaXVt
IHJlcXVlc3QKLSAgICAgICAgb3V0cHV0ID0gU3RyaW5nSU8oKQotICAgICAgICBtZWRpdW0gPSBz
bWFydC5TbWFydFNpbXBsZVBpcGVzQ2xpZW50TWVkaXVtKE5vbmUsIG91dHB1dCkKLSAgICAgICAg
cmVxdWVzdCA9IG1lZGl1bS5nZXRfcmVxdWVzdCgpCi0gICAgICAgIGNsaWVudF9wcm90b2NvbCA9
IHNtYXJ0LlNtYXJ0Q2xpZW50UmVxdWVzdFByb3RvY29sT25lKHJlcXVlc3QpCi0KLSAgICBkZWYg
dGVzdF9zZXJ2ZXJfb2Zmc2V0X3NlcmlhbGlzYXRpb24oc2VsZik6Ci0gICAgICAgICIiIlRoZSBT
bWFydCBwcm90b2NvbCBzZXJpYWxpc2VzIG9mZnNldHMgYXMgYSBjb21tYSBhbmQgXG4gc3RyaW5n
LgotCi0gICAgICAgIFdlIGNoZWNrIGEgbnVtYmVyIG9mIGJvdW5kYXJ5IGNhc2VzIGFyZSBhcyBl
eHBlY3RlZDogZW1wdHksIG9uZSBvZmZzZXQsCi0gICAgICAgIG9uZSB3aXRoIHRoZSBvcmRlciBv
ZiByZWFkcyBub3QgaW5jcmVhc2luZyAoYW4gb3V0IG9mIG9yZGVyIHJlYWQpLCBhbmQKLSAgICAg
ICAgb25lIHRoYXQgc2hvdWxkIGNvYWxlc2NlLgotICAgICAgICAiIiIKLSAgICAgICAgc2VsZi5h
c3NlcnRPZmZzZXRTZXJpYWxpc2F0aW9uKFtdLCAnJywKLSAgICAgICAgICAgIHNlbGYuY2xpZW50
X3Byb3RvY29sLCBzZWxmLnNtYXJ0X3NlcnZlcl9yZXF1ZXN0KQotICAgICAgICBzZWxmLmFzc2Vy
dE9mZnNldFNlcmlhbGlzYXRpb24oWygxLDIpXSwgJzEsMicsCi0gICAgICAgICAgICBzZWxmLmNs
aWVudF9wcm90b2NvbCwgc2VsZi5zbWFydF9zZXJ2ZXJfcmVxdWVzdCkKLSAgICAgICAgc2VsZi5h
c3NlcnRPZmZzZXRTZXJpYWxpc2F0aW9uKFsoMTAsNDApLCAoMCw1KV0sICcxMCw0MFxuMCw1JywK
LSAgICAgICAgICAgIHNlbGYuY2xpZW50X3Byb3RvY29sLCBzZWxmLnNtYXJ0X3NlcnZlcl9yZXF1
ZXN0KQotICAgICAgICBzZWxmLmFzc2VydE9mZnNldFNlcmlhbGlzYXRpb24oWygxLDIpLCAoMyw0
KSwgKDEwMCwgMjAwKV0sCi0gICAgICAgICAgICAnMSwyXG4zLDRcbjEwMCwyMDAnLCBzZWxmLmNs
aWVudF9wcm90b2NvbCwgc2VsZi5zbWFydF9zZXJ2ZXJfcmVxdWVzdCkKLQotICAgIGRlZiB0ZXN0
X2FjY2VwdF9ieXRlc19vZl9iYWRfcmVxdWVzdF90b19wcm90b2NvbChzZWxmKToKLSAgICAgICAg
b3V0X3N0cmVhbSA9IFN0cmluZ0lPKCkKLSAgICAgICAgcHJvdG9jb2wgPSBzbWFydC5TbWFydFNl
cnZlclJlcXVlc3RQcm90b2NvbE9uZShOb25lLCBvdXRfc3RyZWFtLndyaXRlKQotICAgICAgICBw
cm90b2NvbC5hY2NlcHRfYnl0ZXMoJ2FiYycpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ2Fi
YycsIHByb3RvY29sLmluX2J1ZmZlcikKLSAgICAgICAgcHJvdG9jb2wuYWNjZXB0X2J5dGVzKCdc
bicpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoImVycm9yXHgwMUdlbmVyaWMgYnpyIHNtYXJ0
IHByb3RvY29sIGVycm9yOiBiYWQgcmVxdWVzdCIKLSAgICAgICAgICAgICIgJ2FiYydcbiIsIG91
dF9zdHJlYW0uZ2V0dmFsdWUoKSkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHByb3RvY29sLmhh
c19kaXNwYXRjaGVkKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDAsIHByb3RvY29sLm5leHRf
cmVhZF9zaXplKCkpCi0KLSAgICBkZWYgdGVzdF9hY2NlcHRfYm9keV9ieXRlc190b19wcm90b2Nv
bChzZWxmKToKLSAgICAgICAgcHJvdG9jb2wgPSBzZWxmLmJ1aWxkX3Byb3RvY29sX3dhaXRpbmdf
Zm9yX2JvZHkoKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDYsIHByb3RvY29sLm5leHRfcmVh
ZF9zaXplKCkpCi0gICAgICAgIHByb3RvY29sLmFjY2VwdF9ieXRlcygnN1xuYWJjJykKLSAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbCg5LCBwcm90b2NvbC5uZXh0X3JlYWRfc2l6ZSgpKQotICAgICAg
ICBwcm90b2NvbC5hY2NlcHRfYnl0ZXMoJ2RlZmdkJykKLSAgICAgICAgcHJvdG9jb2wuYWNjZXB0
X2J5dGVzKCdvbmVcbicpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMCwgcHJvdG9jb2wubmV4
dF9yZWFkX3NpemUoKSkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNlbGYuZW5kX3JlY2VpdmVk
KQotCi0gICAgZGVmIHRlc3RfYWNjZXB0X3JlcXVlc3RfYW5kX2JvZHlfYWxsX2F0X29uY2Uoc2Vs
Zik6Ci0gICAgICAgIG1lbV90cmFuc3BvcnQgPSBtZW1vcnkuTWVtb3J5VHJhbnNwb3J0KCkKLSAg
ICAgICAgbWVtX3RyYW5zcG9ydC5wdXRfYnl0ZXMoJ2ZvbycsICdhYmNkZWZnaGlqJykKLSAgICAg
ICAgb3V0X3N0cmVhbSA9IFN0cmluZ0lPKCkKLSAgICAgICAgcHJvdG9jb2wgPSBzbWFydC5TbWFy
dFNlcnZlclJlcXVlc3RQcm90b2NvbE9uZShtZW1fdHJhbnNwb3J0LAotICAgICAgICAgICAgICAg
IG91dF9zdHJlYW0ud3JpdGUpCi0gICAgICAgIHByb3RvY29sLmFjY2VwdF9ieXRlcygncmVhZHZc
eDAxZm9vXG4zXG4zLDNkb25lXG4nKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDAsIHByb3Rv
Y29sLm5leHRfcmVhZF9zaXplKCkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ3JlYWR2XG4z
XG5kZWZkb25lXG4nLCBvdXRfc3RyZWFtLmdldHZhbHVlKCkpCi0gICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwoJycsIHByb3RvY29sLmV4Y2Vzc19idWZmZXIpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwoJycsIHByb3RvY29sLmluX2J1ZmZlcikKLQotICAgIGRlZiB0ZXN0X2FjY2VwdF9leGNlc3Nf
Ynl0ZXNfYXJlX3ByZXNlcnZlZChzZWxmKToKLSAgICAgICAgb3V0X3N0cmVhbSA9IFN0cmluZ0lP
KCkKLSAgICAgICAgcHJvdG9jb2wgPSBzbWFydC5TbWFydFNlcnZlclJlcXVlc3RQcm90b2NvbE9u
ZShOb25lLCBvdXRfc3RyZWFtLndyaXRlKQotICAgICAgICBwcm90b2NvbC5hY2NlcHRfYnl0ZXMo
J2hlbGxvXG5oZWxsb1xuJykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgib2tceDAxMVxuIiwg
b3V0X3N0cmVhbS5nZXR2YWx1ZSgpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCJoZWxsb1xu
IiwgcHJvdG9jb2wuZXhjZXNzX2J1ZmZlcikKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgiIiwg
cHJvdG9jb2wuaW5fYnVmZmVyKQotCi0gICAgZGVmIHRlc3RfYWNjZXB0X2V4Y2Vzc19ieXRlc19h
ZnRlcl9ib2R5KHNlbGYpOgotICAgICAgICBwcm90b2NvbCA9IHNlbGYuYnVpbGRfcHJvdG9jb2xf
d2FpdGluZ19mb3JfYm9keSgpCi0gICAgICAgIHByb3RvY29sLmFjY2VwdF9ieXRlcygnN1xuYWJj
ZGVmZ2RvbmVcblgnKQotICAgICAgICBzZWxmLmFzc2VydFRydWUoc2VsZi5lbmRfcmVjZWl2ZWQp
Ci0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoIlgiLCBwcm90b2NvbC5leGNlc3NfYnVmZmVyKQot
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCIiLCBwcm90b2NvbC5pbl9idWZmZXIpCi0gICAgICAg
IHByb3RvY29sLmFjY2VwdF9ieXRlcygnWScpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoIlhZ
IiwgcHJvdG9jb2wuZXhjZXNzX2J1ZmZlcikKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgiIiwg
cHJvdG9jb2wuaW5fYnVmZmVyKQotCi0gICAgZGVmIHRlc3RfYWNjZXB0X2V4Y2Vzc19ieXRlc19h
ZnRlcl9kaXNwYXRjaChzZWxmKToKLSAgICAgICAgb3V0X3N0cmVhbSA9IFN0cmluZ0lPKCkKLSAg
ICAgICAgcHJvdG9jb2wgPSBzbWFydC5TbWFydFNlcnZlclJlcXVlc3RQcm90b2NvbE9uZShOb25l
LCBvdXRfc3RyZWFtLndyaXRlKQotICAgICAgICBwcm90b2NvbC5hY2NlcHRfYnl0ZXMoJ2hlbGxv
XG4nKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCJva1x4MDExXG4iLCBvdXRfc3RyZWFtLmdl
dHZhbHVlKCkpCi0gICAgICAgIHByb3RvY29sLmFjY2VwdF9ieXRlcygnaGVsJykKLSAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbCgiaGVsIiwgcHJvdG9jb2wuZXhjZXNzX2J1ZmZlcikKLSAgICAgICAg
cHJvdG9jb2wuYWNjZXB0X2J5dGVzKCdsb1xuJykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgi
aGVsbG9cbiIsIHByb3RvY29sLmV4Y2Vzc19idWZmZXIpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwoIiIsIHByb3RvY29sLmluX2J1ZmZlcikKLQotICAgIGRlZiB0ZXN0X19zZW5kX3Jlc3BvbnNl
X3NldHNfZmluaXNoZWRfcmVhZGluZyhzZWxmKToKLSAgICAgICAgcHJvdG9jb2wgPSBzbWFydC5T
bWFydFNlcnZlclJlcXVlc3RQcm90b2NvbE9uZShOb25lLCBsYW1iZGEgeDogTm9uZSkKLSAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbCgxLCBwcm90b2NvbC5uZXh0X3JlYWRfc2l6ZSgpKQotICAgICAg
ICBwcm90b2NvbC5fc2VuZF9yZXNwb25zZSgoJ3gnLCkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwoMCwgcHJvdG9jb2wubmV4dF9yZWFkX3NpemUoKSkKLQotICAgIGRlZiB0ZXN0X3F1ZXJ5X3Zl
cnNpb24oc2VsZik6Ci0gICAgICAgICIiInF1ZXJ5X3ZlcnNpb24gb24gYSBTbWFydENsaWVudFBy
b3RvY29sT25lIHNob3VsZCByZXR1cm4gYSBudW1iZXIuCi0gICAgICAgIAotICAgICAgICBUaGUg
cHJvdG9jb2wgcHJvdmlkZXMgdGhlIHF1ZXJ5X3ZlcnNpb24gYmVjYXVzZSB0aGUgZG9tYWluIGxl
dmVsIGNsaWVudHMKLSAgICAgICAgbWF5IGFsbCBuZWVkIHRvIGJlIGFibGUgdG8gcHJvYmUgZm9y
IGNhcGFiaWxpdGllcy4KLSAgICAgICAgIiIiCi0gICAgICAgICMgV2hhdCB3ZSByZWFsbHkgd2Fu
dCB0byB0ZXN0IGhlcmUgaXMgdGhhdCBTbWFydENsaWVudFByb3RvY29sT25lIGNhbGxzCi0gICAg
ICAgICMgYWNjZXB0X2J5dGVzKHR1cGxlX2Jhc2VkX2VuY29kaW5nX29mX2hlbGxvKSBhbmQgcmVh
ZHMgYW5kIHBhcnNlcyB0aGUKLSAgICAgICAgIyByZXNwb25zZSBvZiB0dXBsZS1lbmNvZGVkIChv
aywgMSkuICBBbHNvLCBzZXBlcmF0ZWx5IHdlIHNob3VsZCB0ZXN0Ci0gICAgICAgICMgdGhlIGVy
cm9yIGlmIHRoZSByZXNwb25zZSBpcyBhIG5vbi11bmRlcnN0b29kIHZlcnNpb24uCi0gICAgICAg
IGlucHV0ID0gU3RyaW5nSU8oJ29rXHgwMTFcbicpCi0gICAgICAgIG91dHB1dCA9IFN0cmluZ0lP
KCkKLSAgICAgICAgbWVkaXVtID0gc21hcnQuU21hcnRTaW1wbGVQaXBlc0NsaWVudE1lZGl1bShp
bnB1dCwgb3V0cHV0KQotICAgICAgICBwcm90b2NvbCA9IHNtYXJ0LlNtYXJ0Q2xpZW50UmVxdWVz
dFByb3RvY29sT25lKG1lZGl1bS5nZXRfcmVxdWVzdCgpKQotICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKDEsIHByb3RvY29sLnF1ZXJ5X3ZlcnNpb24oKSkKKyAgICAgICAgc21hcnRfcHJvdG9jb2wu
YWNjZXB0X2J5dGVzKCcnKQorICAgICAgICByZXR1cm4gc21hcnRfcHJvdG9jb2wKIAogICAgIGRl
ZiBhc3NlcnRTZXJ2ZXJUb0NsaWVudEVuY29kaW5nKHNlbGYsIGV4cGVjdGVkX2J5dGVzLCBleHBl
Y3RlZF90dXBsZSwKICAgICAgICAgICAgIGlucHV0X3R1cGxlcyk6CkBAIC0xMjg2LDE3ICsxMjg1
LDE1MyBAQAogICAgICAgICAjIGV4cGVjdGVkIGJ5dGVzCiAgICAgICAgIGZvciBpbnB1dF90dXBs
ZSBpbiBpbnB1dF90dXBsZXM6CiAgICAgICAgICAgICBzZXJ2ZXJfb3V0cHV0ID0gU3RyaW5nSU8o
KQotICAgICAgICAgICAgc2VydmVyX3Byb3RvY29sID0gc21hcnQuU21hcnRTZXJ2ZXJSZXF1ZXN0
UHJvdG9jb2xPbmUoCisgICAgICAgICAgICBzZXJ2ZXJfcHJvdG9jb2wgPSBzZWxmLnNlcnZlcl9w
cm90b2NvbF9jbGFzcygKICAgICAgICAgICAgICAgICBOb25lLCBzZXJ2ZXJfb3V0cHV0LndyaXRl
KQotICAgICAgICAgICAgc2VydmVyX3Byb3RvY29sLl9zZW5kX3Jlc3BvbnNlKGlucHV0X3R1cGxl
KQorICAgICAgICAgICAgc2VydmVyX3Byb3RvY29sLl9zZW5kX3Jlc3BvbnNlKAorICAgICAgICAg
ICAgICAgIF9tb2RfcmVxdWVzdC5TdWNjZXNzZnVsU21hcnRTZXJ2ZXJSZXNwb25zZShpbnB1dF90
dXBsZSkpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV4cGVjdGVkX2J5dGVzLCBzZXJ2
ZXJfb3V0cHV0LmdldHZhbHVlKCkpCi0gICAgICAgICMgY2hlY2sgdGhlIGRlY29kaW5nIG9mIHRo
ZSBjbGllbnQgcHJvdG9jb2wgZnJvbSBleHBlY3RlZF9ieXRlczoKKyAgICAgICAgIyBjaGVjayB0
aGUgZGVjb2Rpbmcgb2YgdGhlIGNsaWVudCBzbWFydF9wcm90b2NvbCBmcm9tIGV4cGVjdGVkX2J5
dGVzOgogICAgICAgICBpbnB1dCA9IFN0cmluZ0lPKGV4cGVjdGVkX2J5dGVzKQogICAgICAgICBv
dXRwdXQgPSBTdHJpbmdJTygpCi0gICAgICAgIG1lZGl1bSA9IHNtYXJ0LlNtYXJ0U2ltcGxlUGlw
ZXNDbGllbnRNZWRpdW0oaW5wdXQsIG91dHB1dCkKLSAgICAgICAgcHJvdG9jb2wgPSBzbWFydC5T
bWFydENsaWVudFJlcXVlc3RQcm90b2NvbE9uZShtZWRpdW0uZ2V0X3JlcXVlc3QoKSkKLSAgICAg
ICAgcHJvdG9jb2wuY2FsbCgnZm9vJykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChleHBlY3Rl
ZF90dXBsZSwgcHJvdG9jb2wucmVhZF9yZXNwb25zZV90dXBsZSgpKQorICAgICAgICBjbGllbnRf
bWVkaXVtID0gbWVkaXVtLlNtYXJ0U2ltcGxlUGlwZXNDbGllbnRNZWRpdW0oaW5wdXQsIG91dHB1
dCkKKyAgICAgICAgcmVxdWVzdCA9IGNsaWVudF9tZWRpdW0uZ2V0X3JlcXVlc3QoKQorICAgICAg
ICBzbWFydF9wcm90b2NvbCA9IHNlbGYuY2xpZW50X3Byb3RvY29sX2NsYXNzKHJlcXVlc3QpCisg
ICAgICAgIHNtYXJ0X3Byb3RvY29sLmNhbGwoJ2ZvbycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwoZXhwZWN0ZWRfdHVwbGUsIHNtYXJ0X3Byb3RvY29sLnJlYWRfcmVzcG9uc2VfdHVwbGUoKSkK
KworCitjbGFzcyBUZXN0U21hcnRQcm90b2NvbE9uZShUZXN0U21hcnRQcm90b2NvbCk6CisgICAg
IiIiVGVzdHMgZm9yIHRoZSBzbWFydCBwcm90b2NvbCB2ZXJzaW9uIG9uZS4iIiIKKworICAgIGNs
aWVudF9wcm90b2NvbF9jbGFzcyA9IHByb3RvY29sLlNtYXJ0Q2xpZW50UmVxdWVzdFByb3RvY29s
T25lCisgICAgc2VydmVyX3Byb3RvY29sX2NsYXNzID0gcHJvdG9jb2wuU21hcnRTZXJ2ZXJSZXF1
ZXN0UHJvdG9jb2xPbmUKKworICAgIGRlZiB0ZXN0X2NvbnN0cnVjdF92ZXJzaW9uX29uZV9zZXJ2
ZXJfcHJvdG9jb2woc2VsZik6CisgICAgICAgIHNtYXJ0X3Byb3RvY29sID0gcHJvdG9jb2wuU21h
cnRTZXJ2ZXJSZXF1ZXN0UHJvdG9jb2xPbmUoTm9uZSwgTm9uZSkKKyAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbCgnJywgc21hcnRfcHJvdG9jb2wuZXhjZXNzX2J1ZmZlcikKKyAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbCgnJywgc21hcnRfcHJvdG9jb2wuaW5fYnVmZmVyKQorICAgICAgICBzZWxmLmFz
c2VydEZhbHNlKHNtYXJ0X3Byb3RvY29sLmhhc19kaXNwYXRjaGVkKQorICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKDEsIHNtYXJ0X3Byb3RvY29sLm5leHRfcmVhZF9zaXplKCkpCisKKyAgICBkZWYg
dGVzdF9jb25zdHJ1Y3RfdmVyc2lvbl9vbmVfY2xpZW50X3Byb3RvY29sKHNlbGYpOgorICAgICAg
ICAjIHdlIGNhbiBjb25zdHJ1Y3QgYSBjbGllbnQgcHJvdG9jb2wgZnJvbSBhIGNsaWVudCBtZWRp
dW0gcmVxdWVzdAorICAgICAgICBvdXRwdXQgPSBTdHJpbmdJTygpCisgICAgICAgIGNsaWVudF9t
ZWRpdW0gPSBtZWRpdW0uU21hcnRTaW1wbGVQaXBlc0NsaWVudE1lZGl1bShOb25lLCBvdXRwdXQp
CisgICAgICAgIHJlcXVlc3QgPSBjbGllbnRfbWVkaXVtLmdldF9yZXF1ZXN0KCkKKyAgICAgICAg
Y2xpZW50X3Byb3RvY29sID0gcHJvdG9jb2wuU21hcnRDbGllbnRSZXF1ZXN0UHJvdG9jb2xPbmUo
cmVxdWVzdCkKKworICAgIGRlZiB0ZXN0X3NlcnZlcl9vZmZzZXRfc2VyaWFsaXNhdGlvbihzZWxm
KToKKyAgICAgICAgIiIiVGhlIFNtYXJ0IHByb3RvY29sIHNlcmlhbGlzZXMgb2Zmc2V0cyBhcyBh
IGNvbW1hIGFuZCBcbiBzdHJpbmcuCisKKyAgICAgICAgV2UgY2hlY2sgYSBudW1iZXIgb2YgYm91
bmRhcnkgY2FzZXMgYXJlIGFzIGV4cGVjdGVkOiBlbXB0eSwgb25lIG9mZnNldCwKKyAgICAgICAg
b25lIHdpdGggdGhlIG9yZGVyIG9mIHJlYWRzIG5vdCBpbmNyZWFzaW5nIChhbiBvdXQgb2Ygb3Jk
ZXIgcmVhZCksIGFuZAorICAgICAgICBvbmUgdGhhdCBzaG91bGQgY29hbGVzY2UuCisgICAgICAg
ICIiIgorICAgICAgICBzZWxmLmFzc2VydE9mZnNldFNlcmlhbGlzYXRpb24oW10sICcnLCBzZWxm
LmNsaWVudF9wcm90b2NvbCkKKyAgICAgICAgc2VsZi5hc3NlcnRPZmZzZXRTZXJpYWxpc2F0aW9u
KFsoMSwyKV0sICcxLDInLCBzZWxmLmNsaWVudF9wcm90b2NvbCkKKyAgICAgICAgc2VsZi5hc3Nl
cnRPZmZzZXRTZXJpYWxpc2F0aW9uKFsoMTAsNDApLCAoMCw1KV0sICcxMCw0MFxuMCw1JywKKyAg
ICAgICAgICAgIHNlbGYuY2xpZW50X3Byb3RvY29sKQorICAgICAgICBzZWxmLmFzc2VydE9mZnNl
dFNlcmlhbGlzYXRpb24oWygxLDIpLCAoMyw0KSwgKDEwMCwgMjAwKV0sCisgICAgICAgICAgICAn
MSwyXG4zLDRcbjEwMCwyMDAnLCBzZWxmLmNsaWVudF9wcm90b2NvbCkKKworICAgIGRlZiB0ZXN0
X2FjY2VwdF9ieXRlc19vZl9iYWRfcmVxdWVzdF90b19wcm90b2NvbChzZWxmKToKKyAgICAgICAg
b3V0X3N0cmVhbSA9IFN0cmluZ0lPKCkKKyAgICAgICAgc21hcnRfcHJvdG9jb2wgPSBwcm90b2Nv
bC5TbWFydFNlcnZlclJlcXVlc3RQcm90b2NvbE9uZSgKKyAgICAgICAgICAgIE5vbmUsIG91dF9z
dHJlYW0ud3JpdGUpCisgICAgICAgIHNtYXJ0X3Byb3RvY29sLmFjY2VwdF9ieXRlcygnYWJjJykK
KyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnYWJjJywgc21hcnRfcHJvdG9jb2wuaW5fYnVmZmVy
KQorICAgICAgICBzbWFydF9wcm90b2NvbC5hY2NlcHRfYnl0ZXMoJ1xuJykKKyAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgICJlcnJvclx4MDFHZW5lcmljIGJ6ciBzbWFydCBw
cm90b2NvbCBlcnJvcjogYmFkIHJlcXVlc3QgJ2FiYydcbiIsCisgICAgICAgICAgICBvdXRfc3Ry
ZWFtLmdldHZhbHVlKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzbWFydF9wcm90b2NvbC5o
YXNfZGlzcGF0Y2hlZCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgwLCBzbWFydF9wcm90b2Nv
bC5uZXh0X3JlYWRfc2l6ZSgpKQorCisgICAgZGVmIHRlc3RfYWNjZXB0X2JvZHlfYnl0ZXNfdG9f
cHJvdG9jb2woc2VsZik6CisgICAgICAgIHByb3RvY29sID0gc2VsZi5idWlsZF9wcm90b2NvbF93
YWl0aW5nX2Zvcl9ib2R5KCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCg2LCBwcm90b2NvbC5u
ZXh0X3JlYWRfc2l6ZSgpKQorICAgICAgICBwcm90b2NvbC5hY2NlcHRfYnl0ZXMoJzdcbmFiYycp
CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoOSwgcHJvdG9jb2wubmV4dF9yZWFkX3NpemUoKSkK
KyAgICAgICAgcHJvdG9jb2wuYWNjZXB0X2J5dGVzKCdkZWZnZCcpCisgICAgICAgIHByb3RvY29s
LmFjY2VwdF9ieXRlcygnb25lXG4nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDAsIHByb3Rv
Y29sLm5leHRfcmVhZF9zaXplKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzZWxmLmVuZF9y
ZWNlaXZlZCkKKworICAgIGRlZiB0ZXN0X2FjY2VwdF9yZXF1ZXN0X2FuZF9ib2R5X2FsbF9hdF9v
bmNlKHNlbGYpOgorICAgICAgICBzZWxmLl9jYXB0dXJlVmFyKCdCWlJfTk9fU01BUlRfVkZTJywg
Tm9uZSkKKyAgICAgICAgbWVtX3RyYW5zcG9ydCA9IG1lbW9yeS5NZW1vcnlUcmFuc3BvcnQoKQor
ICAgICAgICBtZW1fdHJhbnNwb3J0LnB1dF9ieXRlcygnZm9vJywgJ2FiY2RlZmdoaWonKQorICAg
ICAgICBvdXRfc3RyZWFtID0gU3RyaW5nSU8oKQorICAgICAgICBzbWFydF9wcm90b2NvbCA9IHBy
b3RvY29sLlNtYXJ0U2VydmVyUmVxdWVzdFByb3RvY29sT25lKG1lbV90cmFuc3BvcnQsCisgICAg
ICAgICAgICAgICAgb3V0X3N0cmVhbS53cml0ZSkKKyAgICAgICAgc21hcnRfcHJvdG9jb2wuYWNj
ZXB0X2J5dGVzKCdyZWFkdlx4MDFmb29cbjNcbjMsM2RvbmVcbicpCisgICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwoMCwgc21hcnRfcHJvdG9jb2wubmV4dF9yZWFkX3NpemUoKSkKKyAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbCgncmVhZHZcbjNcbmRlZmRvbmVcbicsIG91dF9zdHJlYW0uZ2V0dmFsdWUo
KSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnJywgc21hcnRfcHJvdG9jb2wuZXhjZXNzX2J1
ZmZlcikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnJywgc21hcnRfcHJvdG9jb2wuaW5fYnVm
ZmVyKQorCisgICAgZGVmIHRlc3RfYWNjZXB0X2V4Y2Vzc19ieXRlc19hcmVfcHJlc2VydmVkKHNl
bGYpOgorICAgICAgICBvdXRfc3RyZWFtID0gU3RyaW5nSU8oKQorICAgICAgICBzbWFydF9wcm90
b2NvbCA9IHByb3RvY29sLlNtYXJ0U2VydmVyUmVxdWVzdFByb3RvY29sT25lKAorICAgICAgICAg
ICAgTm9uZSwgb3V0X3N0cmVhbS53cml0ZSkKKyAgICAgICAgc21hcnRfcHJvdG9jb2wuYWNjZXB0
X2J5dGVzKCdoZWxsb1xuaGVsbG9cbicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoIm9rXHgw
MTJcbiIsIG91dF9zdHJlYW0uZ2V0dmFsdWUoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgi
aGVsbG9cbiIsIHNtYXJ0X3Byb3RvY29sLmV4Y2Vzc19idWZmZXIpCisgICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwoIiIsIHNtYXJ0X3Byb3RvY29sLmluX2J1ZmZlcikKKworICAgIGRlZiB0ZXN0X2Fj
Y2VwdF9leGNlc3NfYnl0ZXNfYWZ0ZXJfYm9keShzZWxmKToKKyAgICAgICAgcHJvdG9jb2wgPSBz
ZWxmLmJ1aWxkX3Byb3RvY29sX3dhaXRpbmdfZm9yX2JvZHkoKQorICAgICAgICBwcm90b2NvbC5h
Y2NlcHRfYnl0ZXMoJzdcbmFiY2RlZmdkb25lXG5YJykKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVl
KHNlbGYuZW5kX3JlY2VpdmVkKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCJYIiwgcHJvdG9j
b2wuZXhjZXNzX2J1ZmZlcikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgiIiwgcHJvdG9jb2wu
aW5fYnVmZmVyKQorICAgICAgICBwcm90b2NvbC5hY2NlcHRfYnl0ZXMoJ1knKQorICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKCJYWSIsIHByb3RvY29sLmV4Y2Vzc19idWZmZXIpCisgICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwoIiIsIHByb3RvY29sLmluX2J1ZmZlcikKKworICAgIGRlZiB0ZXN0X2Fj
Y2VwdF9leGNlc3NfYnl0ZXNfYWZ0ZXJfZGlzcGF0Y2goc2VsZik6CisgICAgICAgIG91dF9zdHJl
YW0gPSBTdHJpbmdJTygpCisgICAgICAgIHNtYXJ0X3Byb3RvY29sID0gcHJvdG9jb2wuU21hcnRT
ZXJ2ZXJSZXF1ZXN0UHJvdG9jb2xPbmUoCisgICAgICAgICAgICBOb25lLCBvdXRfc3RyZWFtLndy
aXRlKQorICAgICAgICBzbWFydF9wcm90b2NvbC5hY2NlcHRfYnl0ZXMoJ2hlbGxvXG4nKQorICAg
ICAgICBzZWxmLmFzc2VydEVxdWFsKCJva1x4MDEyXG4iLCBvdXRfc3RyZWFtLmdldHZhbHVlKCkp
CisgICAgICAgIHNtYXJ0X3Byb3RvY29sLmFjY2VwdF9ieXRlcygnaGVsJykKKyAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbCgiaGVsIiwgc21hcnRfcHJvdG9jb2wuZXhjZXNzX2J1ZmZlcikKKyAgICAg
ICAgc21hcnRfcHJvdG9jb2wuYWNjZXB0X2J5dGVzKCdsb1xuJykKKyAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbCgiaGVsbG9cbiIsIHNtYXJ0X3Byb3RvY29sLmV4Y2Vzc19idWZmZXIpCisgICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwoIiIsIHNtYXJ0X3Byb3RvY29sLmluX2J1ZmZlcikKKworICAgIGRl
ZiB0ZXN0X19zZW5kX3Jlc3BvbnNlX3NldHNfZmluaXNoZWRfcmVhZGluZyhzZWxmKToKKyAgICAg
ICAgc21hcnRfcHJvdG9jb2wgPSBwcm90b2NvbC5TbWFydFNlcnZlclJlcXVlc3RQcm90b2NvbE9u
ZSgKKyAgICAgICAgICAgIE5vbmUsIGxhbWJkYSB4OiBOb25lKQorICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKDEsIHNtYXJ0X3Byb3RvY29sLm5leHRfcmVhZF9zaXplKCkpCisgICAgICAgIHNtYXJ0
X3Byb3RvY29sLl9zZW5kX3Jlc3BvbnNlKAorICAgICAgICAgICAgcmVxdWVzdC5TdWNjZXNzZnVs
U21hcnRTZXJ2ZXJSZXNwb25zZSgoJ3gnLCkpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDAs
IHNtYXJ0X3Byb3RvY29sLm5leHRfcmVhZF9zaXplKCkpCisKKyAgICBkZWYgdGVzdF9fc2VuZF9y
ZXNwb25zZV9lcnJvcnNfd2l0aF9iYXNlX3Jlc3BvbnNlKHNlbGYpOgorICAgICAgICAiIiJFbnN1
cmUgdGhhdCBvbmx5IHRoZSBTdWNjZXNzZnVsL0ZhaWxlZCBzdWJjbGFzc2VzIGFyZSB1c2VkLiIi
IgorICAgICAgICBzbWFydF9wcm90b2NvbCA9IHByb3RvY29sLlNtYXJ0U2VydmVyUmVxdWVzdFBy
b3RvY29sT25lKAorICAgICAgICAgICAgTm9uZSwgbGFtYmRhIHg6IE5vbmUpCisgICAgICAgIHNl
bGYuYXNzZXJ0UmFpc2VzKEF0dHJpYnV0ZUVycm9yLCBzbWFydF9wcm90b2NvbC5fc2VuZF9yZXNw
b25zZSwKKyAgICAgICAgICAgIHJlcXVlc3QuU21hcnRTZXJ2ZXJSZXNwb25zZSgoJ3gnLCkpKQor
CisgICAgZGVmIHRlc3RfcXVlcnlfdmVyc2lvbihzZWxmKToKKyAgICAgICAgIiIicXVlcnlfdmVy
c2lvbiBvbiBhIFNtYXJ0Q2xpZW50UHJvdG9jb2xPbmUgc2hvdWxkIHJldHVybiBhIG51bWJlci4K
KyAgICAgICAgCisgICAgICAgIFRoZSBwcm90b2NvbCBwcm92aWRlcyB0aGUgcXVlcnlfdmVyc2lv
biBiZWNhdXNlIHRoZSBkb21haW4gbGV2ZWwgY2xpZW50cworICAgICAgICBtYXkgYWxsIG5lZWQg
dG8gYmUgYWJsZSB0byBwcm9iZSBmb3IgY2FwYWJpbGl0aWVzLgorICAgICAgICAiIiIKKyAgICAg
ICAgIyBXaGF0IHdlIHJlYWxseSB3YW50IHRvIHRlc3QgaGVyZSBpcyB0aGF0IFNtYXJ0Q2xpZW50
UHJvdG9jb2xPbmUgY2FsbHMKKyAgICAgICAgIyBhY2NlcHRfYnl0ZXModHVwbGVfYmFzZWRfZW5j
b2Rpbmdfb2ZfaGVsbG8pIGFuZCByZWFkcyBhbmQgcGFyc2VzIHRoZQorICAgICAgICAjIHJlc3Bv
bnNlIG9mIHR1cGxlLWVuY29kZWQgKG9rLCAxKS4gIEFsc28sIHNlcGVyYXRlbHkgd2Ugc2hvdWxk
IHRlc3QKKyAgICAgICAgIyB0aGUgZXJyb3IgaWYgdGhlIHJlc3BvbnNlIGlzIGEgbm9uLXVuZGVy
c3Rvb2QgdmVyc2lvbi4KKyAgICAgICAgaW5wdXQgPSBTdHJpbmdJTygnb2tceDAxMlxuJykKKyAg
ICAgICAgb3V0cHV0ID0gU3RyaW5nSU8oKQorICAgICAgICBjbGllbnRfbWVkaXVtID0gbWVkaXVt
LlNtYXJ0U2ltcGxlUGlwZXNDbGllbnRNZWRpdW0oaW5wdXQsIG91dHB1dCkKKyAgICAgICAgcmVx
dWVzdCA9IGNsaWVudF9tZWRpdW0uZ2V0X3JlcXVlc3QoKQorICAgICAgICBzbWFydF9wcm90b2Nv
bCA9IHByb3RvY29sLlNtYXJ0Q2xpZW50UmVxdWVzdFByb3RvY29sT25lKHJlcXVlc3QpCisgICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwoMiwgc21hcnRfcHJvdG9jb2wucXVlcnlfdmVyc2lvbigpKQog
CiAgICAgZGVmIHRlc3RfY2xpZW50X2NhbGxfZW1wdHlfcmVzcG9uc2Uoc2VsZik6CiAgICAgICAg
ICMgcHJvdG9jb2wuY2FsbCgpIGNhbiBnZXQgYmFjayBhbiBlbXB0eSB0dXBsZSBhcyBhIHJlc3Bv
bnNlLiBUaGlzIG9jY3VycwpAQCAtMTMxMSwxNCArMTQ0NiwxNSBAQAogICAgICAgICAgICAgWygn
YScsICdiJywgJzM0JyldKQogCiAgICAgZGVmIHRlc3RfY2xpZW50X2NhbGxfd2l0aF9ib2R5X2J5
dGVzX3VwbG9hZHMoc2VsZik6Ci0gICAgICAgICMgcHJvdG9jb2wuY2FsbF93aXRoX3VwbG9hZCBz
aG91bGQgbGVuZ3RoLXByZWZpeCB0aGUgYnl0ZXMgb250byB0aGUgCisgICAgICAgICMgcHJvdG9j
b2wuY2FsbF93aXRoX2JvZHlfYnl0ZXMgc2hvdWxkIGxlbmd0aC1wcmVmaXggdGhlIGJ5dGVzIG9u
dG8gdGhlCiAgICAgICAgICMgd2lyZS4KICAgICAgICAgZXhwZWN0ZWRfYnl0ZXMgPSAiZm9vXG43
XG5hYmNkZWZnZG9uZVxuIgogICAgICAgICBpbnB1dCA9IFN0cmluZ0lPKCJcbiIpCiAgICAgICAg
IG91dHB1dCA9IFN0cmluZ0lPKCkKLSAgICAgICAgbWVkaXVtID0gc21hcnQuU21hcnRTaW1wbGVQ
aXBlc0NsaWVudE1lZGl1bShpbnB1dCwgb3V0cHV0KQotICAgICAgICBwcm90b2NvbCA9IHNtYXJ0
LlNtYXJ0Q2xpZW50UmVxdWVzdFByb3RvY29sT25lKG1lZGl1bS5nZXRfcmVxdWVzdCgpKQotICAg
ICAgICBwcm90b2NvbC5jYWxsX3dpdGhfYm9keV9ieXRlcygoJ2ZvbycsICksICJhYmNkZWZnIikK
KyAgICAgICAgY2xpZW50X21lZGl1bSA9IG1lZGl1bS5TbWFydFNpbXBsZVBpcGVzQ2xpZW50TWVk
aXVtKGlucHV0LCBvdXRwdXQpCisgICAgICAgIHJlcXVlc3QgPSBjbGllbnRfbWVkaXVtLmdldF9y
ZXF1ZXN0KCkKKyAgICAgICAgc21hcnRfcHJvdG9jb2wgPSBwcm90b2NvbC5TbWFydENsaWVudFJl
cXVlc3RQcm90b2NvbE9uZShyZXF1ZXN0KQorICAgICAgICBzbWFydF9wcm90b2NvbC5jYWxsX3dp
dGhfYm9keV9ieXRlcygoJ2ZvbycsICksICJhYmNkZWZnIikKICAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbChleHBlY3RlZF9ieXRlcywgb3V0cHV0LmdldHZhbHVlKCkpCiAKICAgICBkZWYgdGVzdF9j
bGllbnRfY2FsbF93aXRoX2JvZHlfcmVhZHZfYXJyYXkoc2VsZik6CkBAIC0xMzI3LDkgKzE0NjMs
MTAgQEAKICAgICAgICAgZXhwZWN0ZWRfYnl0ZXMgPSAiZm9vXG43XG4xLDJcbjUsNmRvbmVcbiIK
ICAgICAgICAgaW5wdXQgPSBTdHJpbmdJTygiXG4iKQogICAgICAgICBvdXRwdXQgPSBTdHJpbmdJ
TygpCi0gICAgICAgIG1lZGl1bSA9IHNtYXJ0LlNtYXJ0U2ltcGxlUGlwZXNDbGllbnRNZWRpdW0o
aW5wdXQsIG91dHB1dCkKLSAgICAgICAgcHJvdG9jb2wgPSBzbWFydC5TbWFydENsaWVudFJlcXVl
c3RQcm90b2NvbE9uZShtZWRpdW0uZ2V0X3JlcXVlc3QoKSkKLSAgICAgICAgcHJvdG9jb2wuY2Fs
bF93aXRoX2JvZHlfcmVhZHZfYXJyYXkoKCdmb28nLCApLCBbKDEsMiksKDUsNildKQorICAgICAg
ICBjbGllbnRfbWVkaXVtID0gbWVkaXVtLlNtYXJ0U2ltcGxlUGlwZXNDbGllbnRNZWRpdW0oaW5w
dXQsIG91dHB1dCkKKyAgICAgICAgcmVxdWVzdCA9IGNsaWVudF9tZWRpdW0uZ2V0X3JlcXVlc3Qo
KQorICAgICAgICBzbWFydF9wcm90b2NvbCA9IHByb3RvY29sLlNtYXJ0Q2xpZW50UmVxdWVzdFBy
b3RvY29sT25lKHJlcXVlc3QpCisgICAgICAgIHNtYXJ0X3Byb3RvY29sLmNhbGxfd2l0aF9ib2R5
X3JlYWR2X2FycmF5KCgnZm9vJywgKSwgWygxLDIpLCg1LDYpXSkKICAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbChleHBlY3RlZF9ieXRlcywgb3V0cHV0LmdldHZhbHVlKCkpCiAKICAgICBkZWYgdGVz
dF9jbGllbnRfcmVhZF9ib2R5X2J5dGVzX2FsbChzZWxmKToKQEAgLTEzMzksMTEgKzE0NzYsMTIg
QEAKICAgICAgICAgc2VydmVyX2J5dGVzID0gIm9rXG43XG4xMjM0NTY3ZG9uZVxuIgogICAgICAg
ICBpbnB1dCA9IFN0cmluZ0lPKHNlcnZlcl9ieXRlcykKICAgICAgICAgb3V0cHV0ID0gU3RyaW5n
SU8oKQotICAgICAgICBtZWRpdW0gPSBzbWFydC5TbWFydFNpbXBsZVBpcGVzQ2xpZW50TWVkaXVt
KGlucHV0LCBvdXRwdXQpCi0gICAgICAgIHByb3RvY29sID0gc21hcnQuU21hcnRDbGllbnRSZXF1
ZXN0UHJvdG9jb2xPbmUobWVkaXVtLmdldF9yZXF1ZXN0KCkpCi0gICAgICAgIHByb3RvY29sLmNh
bGwoJ2ZvbycpCi0gICAgICAgIHByb3RvY29sLnJlYWRfcmVzcG9uc2VfdHVwbGUoVHJ1ZSkKLSAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbChleHBlY3RlZF9ieXRlcywgcHJvdG9jb2wucmVhZF9ib2R5
X2J5dGVzKCkpCisgICAgICAgIGNsaWVudF9tZWRpdW0gPSBtZWRpdW0uU21hcnRTaW1wbGVQaXBl
c0NsaWVudE1lZGl1bShpbnB1dCwgb3V0cHV0KQorICAgICAgICByZXF1ZXN0ID0gY2xpZW50X21l
ZGl1bS5nZXRfcmVxdWVzdCgpCisgICAgICAgIHNtYXJ0X3Byb3RvY29sID0gcHJvdG9jb2wuU21h
cnRDbGllbnRSZXF1ZXN0UHJvdG9jb2xPbmUocmVxdWVzdCkKKyAgICAgICAgc21hcnRfcHJvdG9j
b2wuY2FsbCgnZm9vJykKKyAgICAgICAgc21hcnRfcHJvdG9jb2wucmVhZF9yZXNwb25zZV90dXBs
ZShUcnVlKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV4cGVjdGVkX2J5dGVzLCBzbWFydF9w
cm90b2NvbC5yZWFkX2JvZHlfYnl0ZXMoKSkKIAogICAgIGRlZiB0ZXN0X2NsaWVudF9yZWFkX2Jv
ZHlfYnl0ZXNfaW5jcmVtZW50YWwoc2VsZik6CiAgICAgICAgICMgdGVzdCByZWFkaW5nIGEgZmV3
IGJ5dGVzIGF0IGEgdGltZSBmcm9tIHRoZSBib2R5CkBAIC0xMzU1LDE0ICsxNDkzLDE1IEBACiAg
ICAgICAgIHNlcnZlcl9ieXRlcyA9ICJva1xuN1xuMTIzNDU2N2RvbmVcbiIKICAgICAgICAgaW5w
dXQgPSBTdHJpbmdJTyhzZXJ2ZXJfYnl0ZXMpCiAgICAgICAgIG91dHB1dCA9IFN0cmluZ0lPKCkK
LSAgICAgICAgbWVkaXVtID0gc21hcnQuU21hcnRTaW1wbGVQaXBlc0NsaWVudE1lZGl1bShpbnB1
dCwgb3V0cHV0KQotICAgICAgICBwcm90b2NvbCA9IHNtYXJ0LlNtYXJ0Q2xpZW50UmVxdWVzdFBy
b3RvY29sT25lKG1lZGl1bS5nZXRfcmVxdWVzdCgpKQotICAgICAgICBwcm90b2NvbC5jYWxsKCdm
b28nKQotICAgICAgICBwcm90b2NvbC5yZWFkX3Jlc3BvbnNlX3R1cGxlKFRydWUpCi0gICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwoZXhwZWN0ZWRfYnl0ZXNbMDoyXSwgcHJvdG9jb2wucmVhZF9ib2R5
X2J5dGVzKDIpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV4cGVjdGVkX2J5dGVzWzI6NF0s
IHByb3RvY29sLnJlYWRfYm9keV9ieXRlcygyKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChl
eHBlY3RlZF9ieXRlc1s0OjZdLCBwcm90b2NvbC5yZWFkX2JvZHlfYnl0ZXMoMikpCi0gICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwoZXhwZWN0ZWRfYnl0ZXNbNl0sIHByb3RvY29sLnJlYWRfYm9keV9i
eXRlcygpKQorICAgICAgICBjbGllbnRfbWVkaXVtID0gbWVkaXVtLlNtYXJ0U2ltcGxlUGlwZXND
bGllbnRNZWRpdW0oaW5wdXQsIG91dHB1dCkKKyAgICAgICAgcmVxdWVzdCA9IGNsaWVudF9tZWRp
dW0uZ2V0X3JlcXVlc3QoKQorICAgICAgICBzbWFydF9wcm90b2NvbCA9IHByb3RvY29sLlNtYXJ0
Q2xpZW50UmVxdWVzdFByb3RvY29sT25lKHJlcXVlc3QpCisgICAgICAgIHNtYXJ0X3Byb3RvY29s
LmNhbGwoJ2ZvbycpCisgICAgICAgIHNtYXJ0X3Byb3RvY29sLnJlYWRfcmVzcG9uc2VfdHVwbGUo
VHJ1ZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChleHBlY3RlZF9ieXRlc1swOjJdLCBzbWFy
dF9wcm90b2NvbC5yZWFkX2JvZHlfYnl0ZXMoMikpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
ZXhwZWN0ZWRfYnl0ZXNbMjo0XSwgc21hcnRfcHJvdG9jb2wucmVhZF9ib2R5X2J5dGVzKDIpKQor
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV4cGVjdGVkX2J5dGVzWzQ6Nl0sIHNtYXJ0X3Byb3Rv
Y29sLnJlYWRfYm9keV9ieXRlcygyKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChleHBlY3Rl
ZF9ieXRlc1s2XSwgc21hcnRfcHJvdG9jb2wucmVhZF9ib2R5X2J5dGVzKCkpCiAKICAgICBkZWYg
dGVzdF9jbGllbnRfY2FuY2VsX3JlYWRfYm9keV9kb2VzX25vdF9lYXRfYm9keV9ieXRlcyhzZWxm
KToKICAgICAgICAgIyBjYW5jZWxsaW5nIHRoZSBleHBlY3RlZCBib2R5IG5lZWRzIHRvIGZpbmlz
aCB0aGUgcmVxdWVzdCwgYnV0IG5vdApAQCAtMTM3MSwxMyArMTUxMCwzMjUgQEAKICAgICAgICAg
c2VydmVyX2J5dGVzID0gIm9rXG43XG4xMjM0NTY3ZG9uZVxuIgogICAgICAgICBpbnB1dCA9IFN0
cmluZ0lPKHNlcnZlcl9ieXRlcykKICAgICAgICAgb3V0cHV0ID0gU3RyaW5nSU8oKQotICAgICAg
ICBtZWRpdW0gPSBzbWFydC5TbWFydFNpbXBsZVBpcGVzQ2xpZW50TWVkaXVtKGlucHV0LCBvdXRw
dXQpCi0gICAgICAgIHByb3RvY29sID0gc21hcnQuU21hcnRDbGllbnRSZXF1ZXN0UHJvdG9jb2xP
bmUobWVkaXVtLmdldF9yZXF1ZXN0KCkpCi0gICAgICAgIHByb3RvY29sLmNhbGwoJ2ZvbycpCi0g
ICAgICAgIHByb3RvY29sLnJlYWRfcmVzcG9uc2VfdHVwbGUoVHJ1ZSkKLSAgICAgICAgcHJvdG9j
b2wuY2FuY2VsX3JlYWRfYm9keSgpCisgICAgICAgIGNsaWVudF9tZWRpdW0gPSBtZWRpdW0uU21h
cnRTaW1wbGVQaXBlc0NsaWVudE1lZGl1bShpbnB1dCwgb3V0cHV0KQorICAgICAgICByZXF1ZXN0
ID0gY2xpZW50X21lZGl1bS5nZXRfcmVxdWVzdCgpCisgICAgICAgIHNtYXJ0X3Byb3RvY29sID0g
cHJvdG9jb2wuU21hcnRDbGllbnRSZXF1ZXN0UHJvdG9jb2xPbmUocmVxdWVzdCkKKyAgICAgICAg
c21hcnRfcHJvdG9jb2wuY2FsbCgnZm9vJykKKyAgICAgICAgc21hcnRfcHJvdG9jb2wucmVhZF9y
ZXNwb25zZV90dXBsZShUcnVlKQorICAgICAgICBzbWFydF9wcm90b2NvbC5jYW5jZWxfcmVhZF9i
b2R5KCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgzLCBpbnB1dC50ZWxsKCkpCi0gICAgICAg
IHNlbGYuYXNzZXJ0UmFpc2VzKGVycm9ycy5SZWFkaW5nQ29tcGxldGVkLCBwcm90b2NvbC5yZWFk
X2JvZHlfYnl0ZXMpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKAorICAgICAgICAgICAgZXJy
b3JzLlJlYWRpbmdDb21wbGV0ZWQsIHNtYXJ0X3Byb3RvY29sLnJlYWRfYm9keV9ieXRlcykKKwor
CitjbGFzcyBUZXN0U21hcnRQcm90b2NvbFR3byhUZXN0U21hcnRQcm90b2NvbCk6CisgICAgIiIi
VGVzdHMgZm9yIHRoZSBzbWFydCBwcm90b2NvbCB2ZXJzaW9uIHR3by4KKworICAgIFRoaXMgdGVz
dCBjYXNlIGlzIG1vc3RseSB0aGUgc2FtZSBhcyBUZXN0U21hcnRQcm90b2NvbE9uZS4KKyAgICAi
IiIKKworICAgIGNsaWVudF9wcm90b2NvbF9jbGFzcyA9IHByb3RvY29sLlNtYXJ0Q2xpZW50UmVx
dWVzdFByb3RvY29sVHdvCisgICAgc2VydmVyX3Byb3RvY29sX2NsYXNzID0gcHJvdG9jb2wuU21h
cnRTZXJ2ZXJSZXF1ZXN0UHJvdG9jb2xUd28KKworICAgIGRlZiB0ZXN0X2NvbnN0cnVjdF92ZXJz
aW9uX3R3b19zZXJ2ZXJfcHJvdG9jb2woc2VsZik6CisgICAgICAgIHNtYXJ0X3Byb3RvY29sID0g
cHJvdG9jb2wuU21hcnRTZXJ2ZXJSZXF1ZXN0UHJvdG9jb2xUd28oTm9uZSwgTm9uZSkKKyAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbCgnJywgc21hcnRfcHJvdG9jb2wuZXhjZXNzX2J1ZmZlcikKKyAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnJywgc21hcnRfcHJvdG9jb2wuaW5fYnVmZmVyKQorICAg
ICAgICBzZWxmLmFzc2VydEZhbHNlKHNtYXJ0X3Byb3RvY29sLmhhc19kaXNwYXRjaGVkKQorICAg
ICAgICBzZWxmLmFzc2VydEVxdWFsKDEsIHNtYXJ0X3Byb3RvY29sLm5leHRfcmVhZF9zaXplKCkp
CisKKyAgICBkZWYgdGVzdF9jb25zdHJ1Y3RfdmVyc2lvbl90d29fY2xpZW50X3Byb3RvY29sKHNl
bGYpOgorICAgICAgICAjIHdlIGNhbiBjb25zdHJ1Y3QgYSBjbGllbnQgcHJvdG9jb2wgZnJvbSBh
IGNsaWVudCBtZWRpdW0gcmVxdWVzdAorICAgICAgICBvdXRwdXQgPSBTdHJpbmdJTygpCisgICAg
ICAgIGNsaWVudF9tZWRpdW0gPSBtZWRpdW0uU21hcnRTaW1wbGVQaXBlc0NsaWVudE1lZGl1bShO
b25lLCBvdXRwdXQpCisgICAgICAgIHJlcXVlc3QgPSBjbGllbnRfbWVkaXVtLmdldF9yZXF1ZXN0
KCkKKyAgICAgICAgY2xpZW50X3Byb3RvY29sID0gcHJvdG9jb2wuU21hcnRDbGllbnRSZXF1ZXN0
UHJvdG9jb2xUd28ocmVxdWVzdCkKKworICAgIGRlZiB0ZXN0X3NlcnZlcl9vZmZzZXRfc2VyaWFs
aXNhdGlvbihzZWxmKToKKyAgICAgICAgIiIiVGhlIFNtYXJ0IHByb3RvY29sIHNlcmlhbGlzZXMg
b2Zmc2V0cyBhcyBhIGNvbW1hIGFuZCBcbiBzdHJpbmcuCisKKyAgICAgICAgV2UgY2hlY2sgYSBu
dW1iZXIgb2YgYm91bmRhcnkgY2FzZXMgYXJlIGFzIGV4cGVjdGVkOiBlbXB0eSwgb25lIG9mZnNl
dCwKKyAgICAgICAgb25lIHdpdGggdGhlIG9yZGVyIG9mIHJlYWRzIG5vdCBpbmNyZWFzaW5nIChh
biBvdXQgb2Ygb3JkZXIgcmVhZCksIGFuZAorICAgICAgICBvbmUgdGhhdCBzaG91bGQgY29hbGVz
Y2UuCisgICAgICAgICIiIgorICAgICAgICBzZWxmLmFzc2VydE9mZnNldFNlcmlhbGlzYXRpb24o
W10sICcnLCBzZWxmLmNsaWVudF9wcm90b2NvbCkKKyAgICAgICAgc2VsZi5hc3NlcnRPZmZzZXRT
ZXJpYWxpc2F0aW9uKFsoMSwyKV0sICcxLDInLCBzZWxmLmNsaWVudF9wcm90b2NvbCkKKyAgICAg
ICAgc2VsZi5hc3NlcnRPZmZzZXRTZXJpYWxpc2F0aW9uKFsoMTAsNDApLCAoMCw1KV0sICcxMCw0
MFxuMCw1JywKKyAgICAgICAgICAgIHNlbGYuY2xpZW50X3Byb3RvY29sKQorICAgICAgICBzZWxm
LmFzc2VydE9mZnNldFNlcmlhbGlzYXRpb24oWygxLDIpLCAoMyw0KSwgKDEwMCwgMjAwKV0sCisg
ICAgICAgICAgICAnMSwyXG4zLDRcbjEwMCwyMDAnLCBzZWxmLmNsaWVudF9wcm90b2NvbCkKKwor
ICAgIGRlZiB0ZXN0X2FjY2VwdF9ieXRlc19vZl9iYWRfcmVxdWVzdF90b19wcm90b2NvbChzZWxm
KToKKyAgICAgICAgb3V0X3N0cmVhbSA9IFN0cmluZ0lPKCkKKyAgICAgICAgc21hcnRfcHJvdG9j
b2wgPSBwcm90b2NvbC5TbWFydFNlcnZlclJlcXVlc3RQcm90b2NvbFR3bygKKyAgICAgICAgICAg
IE5vbmUsIG91dF9zdHJlYW0ud3JpdGUpCisgICAgICAgIHNtYXJ0X3Byb3RvY29sLmFjY2VwdF9i
eXRlcygnYWJjJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnYWJjJywgc21hcnRfcHJvdG9j
b2wuaW5fYnVmZmVyKQorICAgICAgICBzbWFydF9wcm90b2NvbC5hY2NlcHRfYnl0ZXMoJ1xuJykK
KyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIHByb3RvY29sLlJFU1BPTlNF
X1ZFUlNJT05fVFdPICsKKyAgICAgICAgICAgICJmYWlsZWRcbmVycm9yXHgwMUdlbmVyaWMgYnpy
IHNtYXJ0IHByb3RvY29sIGVycm9yOiBiYWQgcmVxdWVzdCAnYWJjJ1xuIiwKKyAgICAgICAgICAg
IG91dF9zdHJlYW0uZ2V0dmFsdWUoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNtYXJ0X3By
b3RvY29sLmhhc19kaXNwYXRjaGVkKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDAsIHNtYXJ0
X3Byb3RvY29sLm5leHRfcmVhZF9zaXplKCkpCisKKyAgICBkZWYgdGVzdF9hY2NlcHRfYm9keV9i
eXRlc190b19wcm90b2NvbChzZWxmKToKKyAgICAgICAgcHJvdG9jb2wgPSBzZWxmLmJ1aWxkX3By
b3RvY29sX3dhaXRpbmdfZm9yX2JvZHkoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDYsIHBy
b3RvY29sLm5leHRfcmVhZF9zaXplKCkpCisgICAgICAgIHByb3RvY29sLmFjY2VwdF9ieXRlcygn
N1xuYWJjJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCg5LCBwcm90b2NvbC5uZXh0X3JlYWRf
c2l6ZSgpKQorICAgICAgICBwcm90b2NvbC5hY2NlcHRfYnl0ZXMoJ2RlZmdkJykKKyAgICAgICAg
cHJvdG9jb2wuYWNjZXB0X2J5dGVzKCdvbmVcbicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
MCwgcHJvdG9jb2wubmV4dF9yZWFkX3NpemUoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNl
bGYuZW5kX3JlY2VpdmVkKQorCisgICAgZGVmIHRlc3RfYWNjZXB0X3JlcXVlc3RfYW5kX2JvZHlf
YWxsX2F0X29uY2Uoc2VsZik6CisgICAgICAgIHNlbGYuX2NhcHR1cmVWYXIoJ0JaUl9OT19TTUFS
VF9WRlMnLCBOb25lKQorICAgICAgICBtZW1fdHJhbnNwb3J0ID0gbWVtb3J5Lk1lbW9yeVRyYW5z
cG9ydCgpCisgICAgICAgIG1lbV90cmFuc3BvcnQucHV0X2J5dGVzKCdmb28nLCAnYWJjZGVmZ2hp
aicpCisgICAgICAgIG91dF9zdHJlYW0gPSBTdHJpbmdJTygpCisgICAgICAgIHNtYXJ0X3Byb3Rv
Y29sID0gcHJvdG9jb2wuU21hcnRTZXJ2ZXJSZXF1ZXN0UHJvdG9jb2xUd28obWVtX3RyYW5zcG9y
dCwKKyAgICAgICAgICAgICAgICBvdXRfc3RyZWFtLndyaXRlKQorICAgICAgICBzbWFydF9wcm90
b2NvbC5hY2NlcHRfYnl0ZXMoJ3JlYWR2XHgwMWZvb1xuM1xuMywzZG9uZVxuJykKKyAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbCgwLCBzbWFydF9wcm90b2NvbC5uZXh0X3JlYWRfc2l6ZSgpKQorICAg
ICAgICBzZWxmLmFzc2VydEVxdWFsKHByb3RvY29sLlJFU1BPTlNFX1ZFUlNJT05fVFdPICsKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAnc3VjY2Vzc1xucmVhZHZcbjNcbmRlZmRvbmVcbicsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgb3V0X3N0cmVhbS5nZXR2YWx1ZSgpKQorICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKCcnLCBzbWFydF9wcm90b2NvbC5leGNlc3NfYnVmZmVyKQorICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKCcnLCBzbWFydF9wcm90b2NvbC5pbl9idWZmZXIpCisKKyAgICBk
ZWYgdGVzdF9hY2NlcHRfZXhjZXNzX2J5dGVzX2FyZV9wcmVzZXJ2ZWQoc2VsZik6CisgICAgICAg
IG91dF9zdHJlYW0gPSBTdHJpbmdJTygpCisgICAgICAgIHNtYXJ0X3Byb3RvY29sID0gcHJvdG9j
b2wuU21hcnRTZXJ2ZXJSZXF1ZXN0UHJvdG9jb2xUd28oCisgICAgICAgICAgICBOb25lLCBvdXRf
c3RyZWFtLndyaXRlKQorICAgICAgICBzbWFydF9wcm90b2NvbC5hY2NlcHRfYnl0ZXMoJ2hlbGxv
XG5oZWxsb1xuJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwcm90b2NvbC5SRVNQT05TRV9W
RVJTSU9OX1RXTyArICJzdWNjZXNzXG5va1x4MDEyXG4iLAorICAgICAgICAgICAgICAgICAgICAg
ICAgIG91dF9zdHJlYW0uZ2V0dmFsdWUoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgiaGVs
bG9cbiIsIHNtYXJ0X3Byb3RvY29sLmV4Y2Vzc19idWZmZXIpCisgICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwoIiIsIHNtYXJ0X3Byb3RvY29sLmluX2J1ZmZlcikKKworICAgIGRlZiB0ZXN0X2FjY2Vw
dF9leGNlc3NfYnl0ZXNfYWZ0ZXJfYm9keShzZWxmKToKKyAgICAgICAgIyBUaGUgZXhjZXNzIGJ5
dGVzIGxvb2sgbGlrZSB0aGUgc3RhcnQgb2YgYW5vdGhlciByZXF1ZXN0LgorICAgICAgICBzZXJ2
ZXJfcHJvdG9jb2wgPSBzZWxmLmJ1aWxkX3Byb3RvY29sX3dhaXRpbmdfZm9yX2JvZHkoKQorICAg
ICAgICBzZXJ2ZXJfcHJvdG9jb2wuYWNjZXB0X2J5dGVzKAorICAgICAgICAgICAgJzdcbmFiY2Rl
Zmdkb25lXG4nICsgcHJvdG9jb2wuUkVTUE9OU0VfVkVSU0lPTl9UV08pCisgICAgICAgIHNlbGYu
YXNzZXJ0VHJ1ZShzZWxmLmVuZF9yZWNlaXZlZCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChw
cm90b2NvbC5SRVNQT05TRV9WRVJTSU9OX1RXTywKKyAgICAgICAgICAgICAgICAgICAgICAgICBz
ZXJ2ZXJfcHJvdG9jb2wuZXhjZXNzX2J1ZmZlcikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgi
Iiwgc2VydmVyX3Byb3RvY29sLmluX2J1ZmZlcikKKyAgICAgICAgc2VydmVyX3Byb3RvY29sLmFj
Y2VwdF9ieXRlcygnWScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocHJvdG9jb2wuUkVTUE9O
U0VfVkVSU0lPTl9UV08gKyAiWSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgc2VydmVyX3By
b3RvY29sLmV4Y2Vzc19idWZmZXIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoIiIsIHNlcnZl
cl9wcm90b2NvbC5pbl9idWZmZXIpCisKKyAgICBkZWYgdGVzdF9hY2NlcHRfZXhjZXNzX2J5dGVz
X2FmdGVyX2Rpc3BhdGNoKHNlbGYpOgorICAgICAgICBvdXRfc3RyZWFtID0gU3RyaW5nSU8oKQor
ICAgICAgICBzbWFydF9wcm90b2NvbCA9IHByb3RvY29sLlNtYXJ0U2VydmVyUmVxdWVzdFByb3Rv
Y29sVHdvKAorICAgICAgICAgICAgTm9uZSwgb3V0X3N0cmVhbS53cml0ZSkKKyAgICAgICAgc21h
cnRfcHJvdG9jb2wuYWNjZXB0X2J5dGVzKCdoZWxsb1xuJykKKyAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbChwcm90b2NvbC5SRVNQT05TRV9WRVJTSU9OX1RXTyArICJzdWNjZXNzXG5va1x4MDEyXG4i
LAorICAgICAgICAgICAgICAgICAgICAgICAgIG91dF9zdHJlYW0uZ2V0dmFsdWUoKSkKKyAgICAg
ICAgc21hcnRfcHJvdG9jb2wuYWNjZXB0X2J5dGVzKHByb3RvY29sLlJFUVVFU1RfVkVSU0lPTl9U
V08gKyAnaGVsJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwcm90b2NvbC5SRVFVRVNUX1ZF
UlNJT05fVFdPICsgImhlbCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgc21hcnRfcHJvdG9j
b2wuZXhjZXNzX2J1ZmZlcikKKyAgICAgICAgc21hcnRfcHJvdG9jb2wuYWNjZXB0X2J5dGVzKCds
b1xuJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwcm90b2NvbC5SRVFVRVNUX1ZFUlNJT05f
VFdPICsgImhlbGxvXG4iLAorICAgICAgICAgICAgICAgICAgICAgICAgIHNtYXJ0X3Byb3RvY29s
LmV4Y2Vzc19idWZmZXIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoIiIsIHNtYXJ0X3Byb3Rv
Y29sLmluX2J1ZmZlcikKKworICAgIGRlZiB0ZXN0X19zZW5kX3Jlc3BvbnNlX3NldHNfZmluaXNo
ZWRfcmVhZGluZyhzZWxmKToKKyAgICAgICAgc21hcnRfcHJvdG9jb2wgPSBwcm90b2NvbC5TbWFy
dFNlcnZlclJlcXVlc3RQcm90b2NvbFR3bygKKyAgICAgICAgICAgIE5vbmUsIGxhbWJkYSB4OiBO
b25lKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDEsIHNtYXJ0X3Byb3RvY29sLm5leHRfcmVh
ZF9zaXplKCkpCisgICAgICAgIHNtYXJ0X3Byb3RvY29sLl9zZW5kX3Jlc3BvbnNlKAorICAgICAg
ICAgICAgcmVxdWVzdC5TdWNjZXNzZnVsU21hcnRTZXJ2ZXJSZXNwb25zZSgoJ3gnLCkpKQorICAg
ICAgICBzZWxmLmFzc2VydEVxdWFsKDAsIHNtYXJ0X3Byb3RvY29sLm5leHRfcmVhZF9zaXplKCkp
CisKKyAgICBkZWYgdGVzdF9fc2VuZF9yZXNwb25zZV9lcnJvcnNfd2l0aF9iYXNlX3Jlc3BvbnNl
KHNlbGYpOgorICAgICAgICAiIiJFbnN1cmUgdGhhdCBvbmx5IHRoZSBTdWNjZXNzZnVsL0ZhaWxl
ZCBzdWJjbGFzc2VzIGFyZSB1c2VkLiIiIgorICAgICAgICBzbWFydF9wcm90b2NvbCA9IHByb3Rv
Y29sLlNtYXJ0U2VydmVyUmVxdWVzdFByb3RvY29sVHdvKAorICAgICAgICAgICAgTm9uZSwgbGFt
YmRhIHg6IE5vbmUpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEF0dHJpYnV0ZUVycm9yLCBz
bWFydF9wcm90b2NvbC5fc2VuZF9yZXNwb25zZSwKKyAgICAgICAgICAgIHJlcXVlc3QuU21hcnRT
ZXJ2ZXJSZXNwb25zZSgoJ3gnLCkpKQorCisgICAgZGVmIHRlc3RfX3NlbmRfcmVzcG9uc2VfaW5j
bHVkZXNfZmFpbHVyZV9tYXJrZXIoc2VsZik6CisgICAgICAgICIiIkZhaWxlZFNtYXJ0U2VydmVy
UmVzcG9uc2UgaGF2ZSAnZmFpbGVkXG4nIGFmdGVyIHRoZSB2ZXJzaW9uLiIiIgorICAgICAgICBv
dXRfc3RyZWFtID0gU3RyaW5nSU8oKQorICAgICAgICBzbWFydF9wcm90b2NvbCA9IHByb3RvY29s
LlNtYXJ0U2VydmVyUmVxdWVzdFByb3RvY29sVHdvKAorICAgICAgICAgICAgTm9uZSwgb3V0X3N0
cmVhbS53cml0ZSkKKyAgICAgICAgc21hcnRfcHJvdG9jb2wuX3NlbmRfcmVzcG9uc2UoCisgICAg
ICAgICAgICByZXF1ZXN0LkZhaWxlZFNtYXJ0U2VydmVyUmVzcG9uc2UoKCd4JywpKSkKKyAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbChwcm90b2NvbC5SRVNQT05TRV9WRVJTSU9OX1RXTyArICdmYWls
ZWRcbnhcbicsCisgICAgICAgICAgICAgICAgICAgICAgICAgb3V0X3N0cmVhbS5nZXR2YWx1ZSgp
KQorCisgICAgZGVmIHRlc3RfX3NlbmRfcmVzcG9uc2VfaW5jbHVkZXNfc3VjY2Vzc19tYXJrZXIo
c2VsZik6CisgICAgICAgICIiIlN1Y2Nlc3NmdWxTbWFydFNlcnZlclJlc3BvbnNlIGhhdmUgJ3N1
Y2Nlc3NcbicgYWZ0ZXIgdGhlIHZlcnNpb24uIiIiCisgICAgICAgIG91dF9zdHJlYW0gPSBTdHJp
bmdJTygpCisgICAgICAgIHNtYXJ0X3Byb3RvY29sID0gcHJvdG9jb2wuU21hcnRTZXJ2ZXJSZXF1
ZXN0UHJvdG9jb2xUd28oCisgICAgICAgICAgICBOb25lLCBvdXRfc3RyZWFtLndyaXRlKQorICAg
ICAgICBzbWFydF9wcm90b2NvbC5fc2VuZF9yZXNwb25zZSgKKyAgICAgICAgICAgIHJlcXVlc3Qu
U3VjY2Vzc2Z1bFNtYXJ0U2VydmVyUmVzcG9uc2UoKCd4JywpKSkKKyAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbChwcm90b2NvbC5SRVNQT05TRV9WRVJTSU9OX1RXTyArICdzdWNjZXNzXG54XG4nLAor
ICAgICAgICAgICAgICAgICAgICAgICAgIG91dF9zdHJlYW0uZ2V0dmFsdWUoKSkKKworICAgIGRl
ZiB0ZXN0X3F1ZXJ5X3ZlcnNpb24oc2VsZik6CisgICAgICAgICIiInF1ZXJ5X3ZlcnNpb24gb24g
YSBTbWFydENsaWVudFByb3RvY29sVHdvIHNob3VsZCByZXR1cm4gYSBudW1iZXIuCisgICAgICAg
IAorICAgICAgICBUaGUgcHJvdG9jb2wgcHJvdmlkZXMgdGhlIHF1ZXJ5X3ZlcnNpb24gYmVjYXVz
ZSB0aGUgZG9tYWluIGxldmVsIGNsaWVudHMKKyAgICAgICAgbWF5IGFsbCBuZWVkIHRvIGJlIGFi
bGUgdG8gcHJvYmUgZm9yIGNhcGFiaWxpdGllcy4KKyAgICAgICAgIiIiCisgICAgICAgICMgV2hh
dCB3ZSByZWFsbHkgd2FudCB0byB0ZXN0IGhlcmUgaXMgdGhhdCBTbWFydENsaWVudFByb3RvY29s
VHdvIGNhbGxzCisgICAgICAgICMgYWNjZXB0X2J5dGVzKHR1cGxlX2Jhc2VkX2VuY29kaW5nX29m
X2hlbGxvKSBhbmQgcmVhZHMgYW5kIHBhcnNlcyB0aGUKKyAgICAgICAgIyByZXNwb25zZSBvZiB0
dXBsZS1lbmNvZGVkIChvaywgMSkuICBBbHNvLCBzZXBlcmF0ZWx5IHdlIHNob3VsZCB0ZXN0Cisg
ICAgICAgICMgdGhlIGVycm9yIGlmIHRoZSByZXNwb25zZSBpcyBhIG5vbi11bmRlcnN0b29kIHZl
cnNpb24uCisgICAgICAgIGlucHV0ID0gU3RyaW5nSU8ocHJvdG9jb2wuUkVTUE9OU0VfVkVSU0lP
Tl9UV08gKyAnc3VjY2Vzc1xub2tceDAxMlxuJykKKyAgICAgICAgb3V0cHV0ID0gU3RyaW5nSU8o
KQorICAgICAgICBjbGllbnRfbWVkaXVtID0gbWVkaXVtLlNtYXJ0U2ltcGxlUGlwZXNDbGllbnRN
ZWRpdW0oaW5wdXQsIG91dHB1dCkKKyAgICAgICAgcmVxdWVzdCA9IGNsaWVudF9tZWRpdW0uZ2V0
X3JlcXVlc3QoKQorICAgICAgICBzbWFydF9wcm90b2NvbCA9IHByb3RvY29sLlNtYXJ0Q2xpZW50
UmVxdWVzdFByb3RvY29sVHdvKHJlcXVlc3QpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMiwg
c21hcnRfcHJvdG9jb2wucXVlcnlfdmVyc2lvbigpKQorCisgICAgZGVmIHRlc3RfY2xpZW50X2Nh
bGxfZW1wdHlfcmVzcG9uc2Uoc2VsZik6CisgICAgICAgICMgcHJvdG9jb2wuY2FsbCgpIGNhbiBn
ZXQgYmFjayBhbiBlbXB0eSB0dXBsZSBhcyBhIHJlc3BvbnNlLiBUaGlzIG9jY3VycworICAgICAg
ICAjIHdoZW4gdGhlIHBhcnNlZCBsaW5lIGlzIGFuIGVtcHR5IGxpbmUsIGFuZCByZXN1bHRzIGlu
IGEgdHVwbGUgd2l0aAorICAgICAgICAjIG9uZSBlbGVtZW50IC0gYW4gZW1wdHkgc3RyaW5nLgor
ICAgICAgICBzZWxmLmFzc2VydFNlcnZlclRvQ2xpZW50RW5jb2RpbmcoCisgICAgICAgICAgICBw
cm90b2NvbC5SRVNQT05TRV9WRVJTSU9OX1RXTyArICdzdWNjZXNzXG5cbicsICgnJywgKSwgWygp
LCAoJycsICldKQorCisgICAgZGVmIHRlc3RfY2xpZW50X2NhbGxfdGhyZWVfZWxlbWVudF9yZXNw
b25zZShzZWxmKToKKyAgICAgICAgIyBwcm90b2NvbC5jYWxsKCkgY2FuIGdldCBiYWNrIHR1cGxl
cyBvZiBvdGhlciBsZW5ndGhzLiBBIHRocmVlIGVsZW1lbnQKKyAgICAgICAgIyB0dXBsZSBzaG91
bGQgYmUgdW5wYWNrZWQgYXMgdGhyZWUgc3RyaW5ncy4KKyAgICAgICAgc2VsZi5hc3NlcnRTZXJ2
ZXJUb0NsaWVudEVuY29kaW5nKAorICAgICAgICAgICAgcHJvdG9jb2wuUkVTUE9OU0VfVkVSU0lP
Tl9UV08gKyAnc3VjY2Vzc1xuYVx4MDFiXHgwMTM0XG4nLAorICAgICAgICAgICAgKCdhJywgJ2In
LCAnMzQnKSwKKyAgICAgICAgICAgIFsoJ2EnLCAnYicsICczNCcpXSkKKworICAgIGRlZiB0ZXN0
X2NsaWVudF9jYWxsX3dpdGhfYm9keV9ieXRlc191cGxvYWRzKHNlbGYpOgorICAgICAgICAjIHBy
b3RvY29sLmNhbGxfd2l0aF9ib2R5X2J5dGVzIHNob3VsZCBsZW5ndGgtcHJlZml4IHRoZSBieXRl
cyBvbnRvIHRoZQorICAgICAgICAjIHdpcmUuCisgICAgICAgIGV4cGVjdGVkX2J5dGVzID0gcHJv
dG9jb2wuUkVRVUVTVF9WRVJTSU9OX1RXTyArICJmb29cbjdcbmFiY2RlZmdkb25lXG4iCisgICAg
ICAgIGlucHV0ID0gU3RyaW5nSU8oIlxuIikKKyAgICAgICAgb3V0cHV0ID0gU3RyaW5nSU8oKQor
ICAgICAgICBjbGllbnRfbWVkaXVtID0gbWVkaXVtLlNtYXJ0U2ltcGxlUGlwZXNDbGllbnRNZWRp
dW0oaW5wdXQsIG91dHB1dCkKKyAgICAgICAgcmVxdWVzdCA9IGNsaWVudF9tZWRpdW0uZ2V0X3Jl
cXVlc3QoKQorICAgICAgICBzbWFydF9wcm90b2NvbCA9IHByb3RvY29sLlNtYXJ0Q2xpZW50UmVx
dWVzdFByb3RvY29sVHdvKHJlcXVlc3QpCisgICAgICAgIHNtYXJ0X3Byb3RvY29sLmNhbGxfd2l0
aF9ib2R5X2J5dGVzKCgnZm9vJywgKSwgImFiY2RlZmciKQorICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKGV4cGVjdGVkX2J5dGVzLCBvdXRwdXQuZ2V0dmFsdWUoKSkKKworICAgIGRlZiB0ZXN0X2Ns
aWVudF9jYWxsX3dpdGhfYm9keV9yZWFkdl9hcnJheShzZWxmKToKKyAgICAgICAgIyBwcm90b2Nv
bC5jYWxsX3dpdGhfdXBsb2FkIHNob3VsZCBlbmNvZGUgdGhlIHJlYWR2IGFycmF5IGFuZCB0aGVu
CisgICAgICAgICMgbGVuZ3RoLXByZWZpeCB0aGUgYnl0ZXMgb250byB0aGUgd2lyZS4KKyAgICAg
ICAgZXhwZWN0ZWRfYnl0ZXMgPSBwcm90b2NvbC5SRVFVRVNUX1ZFUlNJT05fVFdPKyJmb29cbjdc
bjEsMlxuNSw2ZG9uZVxuIgorICAgICAgICBpbnB1dCA9IFN0cmluZ0lPKCJcbiIpCisgICAgICAg
IG91dHB1dCA9IFN0cmluZ0lPKCkKKyAgICAgICAgY2xpZW50X21lZGl1bSA9IG1lZGl1bS5TbWFy
dFNpbXBsZVBpcGVzQ2xpZW50TWVkaXVtKGlucHV0LCBvdXRwdXQpCisgICAgICAgIHJlcXVlc3Qg
PSBjbGllbnRfbWVkaXVtLmdldF9yZXF1ZXN0KCkKKyAgICAgICAgc21hcnRfcHJvdG9jb2wgPSBw
cm90b2NvbC5TbWFydENsaWVudFJlcXVlc3RQcm90b2NvbFR3byhyZXF1ZXN0KQorICAgICAgICBz
bWFydF9wcm90b2NvbC5jYWxsX3dpdGhfYm9keV9yZWFkdl9hcnJheSgoJ2ZvbycsICksIFsoMSwy
KSwoNSw2KV0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXhwZWN0ZWRfYnl0ZXMsIG91dHB1
dC5nZXR2YWx1ZSgpKQorCisgICAgZGVmIHRlc3RfY2xpZW50X3JlYWRfcmVzcG9uc2VfdHVwbGVf
c2V0c19yZXNwb25zZV9zdGF0dXMoc2VsZik6CisgICAgICAgIHNlcnZlcl9ieXRlcyA9IHByb3Rv
Y29sLlJFU1BPTlNFX1ZFUlNJT05fVFdPICsgInN1Y2Nlc3Ncbm9rXG4iCisgICAgICAgIGlucHV0
ID0gU3RyaW5nSU8oc2VydmVyX2J5dGVzKQorICAgICAgICBvdXRwdXQgPSBTdHJpbmdJTygpCisg
ICAgICAgIGNsaWVudF9tZWRpdW0gPSBtZWRpdW0uU21hcnRTaW1wbGVQaXBlc0NsaWVudE1lZGl1
bShpbnB1dCwgb3V0cHV0KQorICAgICAgICByZXF1ZXN0ID0gY2xpZW50X21lZGl1bS5nZXRfcmVx
dWVzdCgpCisgICAgICAgIHNtYXJ0X3Byb3RvY29sID0gcHJvdG9jb2wuU21hcnRDbGllbnRSZXF1
ZXN0UHJvdG9jb2xUd28ocmVxdWVzdCkKKyAgICAgICAgc21hcnRfcHJvdG9jb2wuY2FsbCgnZm9v
JykKKyAgICAgICAgc21hcnRfcHJvdG9jb2wucmVhZF9yZXNwb25zZV90dXBsZShGYWxzZSkKKyAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbChUcnVlLCBzbWFydF9wcm90b2NvbC5yZXNwb25zZV9zdGF0
dXMpCisKKyAgICBkZWYgdGVzdF9jbGllbnRfcmVhZF9ib2R5X2J5dGVzX2FsbChzZWxmKToKKyAg
ICAgICAgIyByZWFkX2JvZHlfYnl0ZXMgc2hvdWxkIGRlY29kZSB0aGUgYm9keSBieXRlcyBmcm9t
IHRoZSB3aXJlIGludG8KKyAgICAgICAgIyBhIHJlc3BvbnNlLgorICAgICAgICBleHBlY3RlZF9i
eXRlcyA9ICIxMjM0NTY3IgorICAgICAgICBzZXJ2ZXJfYnl0ZXMgPSAocHJvdG9jb2wuUkVTUE9O
U0VfVkVSU0lPTl9UV08gKworICAgICAgICAgICAgICAgICAgICAgICAgInN1Y2Nlc3Ncbm9rXG43
XG4xMjM0NTY3ZG9uZVxuIikKKyAgICAgICAgaW5wdXQgPSBTdHJpbmdJTyhzZXJ2ZXJfYnl0ZXMp
CisgICAgICAgIG91dHB1dCA9IFN0cmluZ0lPKCkKKyAgICAgICAgY2xpZW50X21lZGl1bSA9IG1l
ZGl1bS5TbWFydFNpbXBsZVBpcGVzQ2xpZW50TWVkaXVtKGlucHV0LCBvdXRwdXQpCisgICAgICAg
IHJlcXVlc3QgPSBjbGllbnRfbWVkaXVtLmdldF9yZXF1ZXN0KCkKKyAgICAgICAgc21hcnRfcHJv
dG9jb2wgPSBwcm90b2NvbC5TbWFydENsaWVudFJlcXVlc3RQcm90b2NvbFR3byhyZXF1ZXN0KQor
ICAgICAgICBzbWFydF9wcm90b2NvbC5jYWxsKCdmb28nKQorICAgICAgICBzbWFydF9wcm90b2Nv
bC5yZWFkX3Jlc3BvbnNlX3R1cGxlKFRydWUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXhw
ZWN0ZWRfYnl0ZXMsIHNtYXJ0X3Byb3RvY29sLnJlYWRfYm9keV9ieXRlcygpKQorCisgICAgZGVm
IHRlc3RfY2xpZW50X3JlYWRfYm9keV9ieXRlc19pbmNyZW1lbnRhbChzZWxmKToKKyAgICAgICAg
IyB0ZXN0IHJlYWRpbmcgYSBmZXcgYnl0ZXMgYXQgYSB0aW1lIGZyb20gdGhlIGJvZHkKKyAgICAg
ICAgIyBYWFg6IHBvc3NpYmx5IHdlIHNob3VsZCB0ZXN0IGRyaWJibGluZyB0aGUgYnl0ZXMgaW50
byB0aGUgc3RyaW5naW8KKyAgICAgICAgIyB0byBtYWtlIHRoZSBzdGF0ZSBtYWNoaW5lIHdvcmsg
aGFyZGVyOiBob3dldmVyLCBhcyB3ZSB1c2UgdGhlCisgICAgICAgICMgTGVuZ3RoUHJlZml4ZWRC
b2R5RGVjb2RlciB0aGF0IGlzIGFscmVhZHkgd2VsbCB0ZXN0ZWQgLSB3ZSBjYW4gc2tpcAorICAg
ICAgICAjIHRoYXQuCisgICAgICAgIGV4cGVjdGVkX2J5dGVzID0gIjEyMzQ1NjciCisgICAgICAg
IHNlcnZlcl9ieXRlcyA9IChwcm90b2NvbC5SRVNQT05TRV9WRVJTSU9OX1RXTyArCisgICAgICAg
ICAgICAgICAgICAgICAgICAic3VjY2Vzc1xub2tcbjdcbjEyMzQ1Njdkb25lXG4iKQorICAgICAg
ICBpbnB1dCA9IFN0cmluZ0lPKHNlcnZlcl9ieXRlcykKKyAgICAgICAgb3V0cHV0ID0gU3RyaW5n
SU8oKQorICAgICAgICBjbGllbnRfbWVkaXVtID0gbWVkaXVtLlNtYXJ0U2ltcGxlUGlwZXNDbGll
bnRNZWRpdW0oaW5wdXQsIG91dHB1dCkKKyAgICAgICAgcmVxdWVzdCA9IGNsaWVudF9tZWRpdW0u
Z2V0X3JlcXVlc3QoKQorICAgICAgICBzbWFydF9wcm90b2NvbCA9IHByb3RvY29sLlNtYXJ0Q2xp
ZW50UmVxdWVzdFByb3RvY29sVHdvKHJlcXVlc3QpCisgICAgICAgIHNtYXJ0X3Byb3RvY29sLmNh
bGwoJ2ZvbycpCisgICAgICAgIHNtYXJ0X3Byb3RvY29sLnJlYWRfcmVzcG9uc2VfdHVwbGUoVHJ1
ZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChleHBlY3RlZF9ieXRlc1swOjJdLCBzbWFydF9w
cm90b2NvbC5yZWFkX2JvZHlfYnl0ZXMoMikpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXhw
ZWN0ZWRfYnl0ZXNbMjo0XSwgc21hcnRfcHJvdG9jb2wucmVhZF9ib2R5X2J5dGVzKDIpKQorICAg
ICAgICBzZWxmLmFzc2VydEVxdWFsKGV4cGVjdGVkX2J5dGVzWzQ6Nl0sIHNtYXJ0X3Byb3RvY29s
LnJlYWRfYm9keV9ieXRlcygyKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChleHBlY3RlZF9i
eXRlc1s2XSwgc21hcnRfcHJvdG9jb2wucmVhZF9ib2R5X2J5dGVzKCkpCisKKyAgICBkZWYgdGVz
dF9jbGllbnRfY2FuY2VsX3JlYWRfYm9keV9kb2VzX25vdF9lYXRfYm9keV9ieXRlcyhzZWxmKToK
KyAgICAgICAgIyBjYW5jZWxsaW5nIHRoZSBleHBlY3RlZCBib2R5IG5lZWRzIHRvIGZpbmlzaCB0
aGUgcmVxdWVzdCwgYnV0IG5vdAorICAgICAgICAjIHJlYWQgYW55IG1vcmUgYnl0ZXMuCisgICAg
ICAgIGV4cGVjdGVkX2J5dGVzID0gIjEyMzQ1NjciCisgICAgICAgIHNlcnZlcl9ieXRlcyA9IChw
cm90b2NvbC5SRVNQT05TRV9WRVJTSU9OX1RXTyArCisgICAgICAgICAgICAgICAgICAgICAgICAi
c3VjY2Vzc1xub2tcbjdcbjEyMzQ1Njdkb25lXG4iKQorICAgICAgICBpbnB1dCA9IFN0cmluZ0lP
KHNlcnZlcl9ieXRlcykKKyAgICAgICAgb3V0cHV0ID0gU3RyaW5nSU8oKQorICAgICAgICBjbGll
bnRfbWVkaXVtID0gbWVkaXVtLlNtYXJ0U2ltcGxlUGlwZXNDbGllbnRNZWRpdW0oaW5wdXQsIG91
dHB1dCkKKyAgICAgICAgcmVxdWVzdCA9IGNsaWVudF9tZWRpdW0uZ2V0X3JlcXVlc3QoKQorICAg
ICAgICBzbWFydF9wcm90b2NvbCA9IHByb3RvY29sLlNtYXJ0Q2xpZW50UmVxdWVzdFByb3RvY29s
VHdvKHJlcXVlc3QpCisgICAgICAgIHNtYXJ0X3Byb3RvY29sLmNhbGwoJ2ZvbycpCisgICAgICAg
IHNtYXJ0X3Byb3RvY29sLnJlYWRfcmVzcG9uc2VfdHVwbGUoVHJ1ZSkKKyAgICAgICAgc21hcnRf
cHJvdG9jb2wuY2FuY2VsX3JlYWRfYm9keSgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVu
KHByb3RvY29sLlJFU1BPTlNFX1ZFUlNJT05fVFdPICsgJ3N1Y2Nlc3Ncbm9rXG4nKSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICBpbnB1dC50ZWxsKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFp
c2VzKAorICAgICAgICAgICAgZXJyb3JzLlJlYWRpbmdDb21wbGV0ZWQsIHNtYXJ0X3Byb3RvY29s
LnJlYWRfYm9keV9ieXRlcykKKworCitjbGFzcyBUZXN0U21hcnRDbGllbnRVbmljb2RlKHRlc3Rz
LlRlc3RDYXNlKToKKyAgICAiIiJfU21hcnRDbGllbnQgdGVzdHMgZm9yIHVuaWNvZGUgYXJndW1l
bnRzLgorCisgICAgVW5pY29kZSBhcmd1bWVudHMgdG8gY2FsbF93aXRoX2JvZHlfYnl0ZXMgYXJl
IG5vdCBjb3JyZWN0IChyZW1vdGUgbWV0aG9kCisgICAgbmFtZXMsIGFyZ3VtZW50cywgYW5kIGJv
ZGllcyBtdXN0IGFsbCBiZSBleHByZXNzZWQgYXMgYnl0ZSBzdHJpbmdzKSwgYnV0CisgICAgX1Nt
YXJ0Q2xpZW50IHNob3VsZCBncmFjZWZ1bGx5IHJlamVjdCB0aGVtLCByYXRoZXIgdGhhbiBnZXR0
aW5nIGludG8gYQorICAgIGJyb2tlbiBzdGF0ZSB0aGF0IHByZXZlbnRzIGZ1dHVyZSBjb3JyZWN0
IGNhbGxzIGZyb20gd29ya2luZy4gIFRoYXQgaXMsIGl0CisgICAgc2hvdWxkIGJlIHBvc3NpYmxl
IHRvIGlzc3VlIG1vcmUgcmVxdWVzdHMgb24gdGhlIG1lZGl1bSBhZnRlcndhcmRzLCByYXRoZXIK
KyAgICB0aGFuIGFsbG93aW5nIG9uZSBiYWQgY2FsbCB0byBjYWxsX3dpdGhfYm9keV9ieXRlcyB0
byBjYXVzZSBsYXRlciBjYWxscyB0bworICAgIG15c3RlcmlvdXNseSBmYWlsIHdpdGggVG9vTWFu
eUNvbmN1cnJlbnRSZXF1ZXN0cy4KKyAgICAiIiIKKworICAgIGRlZiBhc3NlcnRDYWxsRG9lc05v
dEJyZWFrTWVkaXVtKHNlbGYsIG1ldGhvZCwgYXJncywgYm9keSk6CisgICAgICAgICIiIkNhbGwg
YSBtZWRpdW0gd2l0aCB0aGUgZ2l2ZW4gbWV0aG9kLCBhcmdzIGFuZCBib2R5LCB0aGVuIGFzc2Vy
dCB0aGF0CisgICAgICAgIHRoZSBtZWRpdW0gaXMgbGVmdCBpbiBhIHNhbmUgc3RhdGUsIGkuZS4g
aXMgY2FwYWJsZSBvZiBhbGxvd2luZyBmdXJ0aGVyCisgICAgICAgIHJlcXVlc3RzLgorICAgICAg
ICAiIiIKKyAgICAgICAgaW5wdXQgPSBTdHJpbmdJTygiXG4iKQorICAgICAgICBvdXRwdXQgPSBT
dHJpbmdJTygpCisgICAgICAgIGNsaWVudF9tZWRpdW0gPSBtZWRpdW0uU21hcnRTaW1wbGVQaXBl
c0NsaWVudE1lZGl1bShpbnB1dCwgb3V0cHV0KQorICAgICAgICBzbWFydF9jbGllbnQgPSBjbGll
bnQuX1NtYXJ0Q2xpZW50KGNsaWVudF9tZWRpdW0pCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2Vz
KFR5cGVFcnJvciwKKyAgICAgICAgICAgIHNtYXJ0X2NsaWVudC5jYWxsX3dpdGhfYm9keV9ieXRl
cywgbWV0aG9kLCBhcmdzLCBib2R5KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCIiLCBvdXRw
dXQuZ2V0dmFsdWUoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChOb25lLCBjbGllbnRfbWVk
aXVtLl9jdXJyZW50X3JlcXVlc3QpCisKKyAgICBkZWYgdGVzdF9jYWxsX3dpdGhfYm9keV9ieXRl
c191bmljb2RlX21ldGhvZChzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRDYWxsRG9lc05vdEJy
ZWFrTWVkaXVtKHUnbWV0aG9kJywgKCdhcmdzJywpLCAnYm9keScpCisKKyAgICBkZWYgdGVzdF9j
YWxsX3dpdGhfYm9keV9ieXRlc191bmljb2RlX2FyZ3Moc2VsZik6CisgICAgICAgIHNlbGYuYXNz
ZXJ0Q2FsbERvZXNOb3RCcmVha01lZGl1bSgnbWV0aG9kJywgKHUnYXJncycsKSwgJ2JvZHknKQor
ICAgICAgICBzZWxmLmFzc2VydENhbGxEb2VzTm90QnJlYWtNZWRpdW0oJ21ldGhvZCcsICgnYXJn
MScsIHUnYXJnMicpLCAnYm9keScpCisKKyAgICBkZWYgdGVzdF9jYWxsX3dpdGhfYm9keV9ieXRl
c191bmljb2RlX2JvZHkoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0Q2FsbERvZXNOb3RCcmVh
a01lZGl1bSgnbWV0aG9kJywgKCdhcmdzJywpLCB1J2JvZHknKQogCiAKIGNsYXNzIExlbmd0aFBy
ZWZpeGVkQm9keURlY29kZXIodGVzdHMuVGVzdENhc2UpOgpAQCAtMTM4NiwxNCArMTgzNywxNCBA
QAogICAgICMgc29tZXRoaW5nIHNpbWlsYXIgdG8gdGhlIFByb3RvY29sQmFzZSBtZXRob2QuCiAK
ICAgICBkZWYgdGVzdF9jb25zdHJ1Y3Qoc2VsZik6Ci0gICAgICAgIGRlY29kZXIgPSBzbWFydC5M
ZW5ndGhQcmVmaXhlZEJvZHlEZWNvZGVyKCkKKyAgICAgICAgZGVjb2RlciA9IHByb3RvY29sLkxl
bmd0aFByZWZpeGVkQm9keURlY29kZXIoKQogICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGRlY29k
ZXIuZmluaXNoZWRfcmVhZGluZykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCg2LCBkZWNvZGVy
Lm5leHRfcmVhZF9zaXplKCkpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJycsIGRlY29kZXIu
cmVhZF9wZW5kaW5nX2RhdGEoKSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnJywgZGVjb2Rl
ci51bnVzZWRfZGF0YSkKIAogICAgIGRlZiB0ZXN0X2FjY2VwdF9ieXRlcyhzZWxmKToKLSAgICAg
ICAgZGVjb2RlciA9IHNtYXJ0Lkxlbmd0aFByZWZpeGVkQm9keURlY29kZXIoKQorICAgICAgICBk
ZWNvZGVyID0gcHJvdG9jb2wuTGVuZ3RoUHJlZml4ZWRCb2R5RGVjb2RlcigpCiAgICAgICAgIGRl
Y29kZXIuYWNjZXB0X2J5dGVzKCcnKQogICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGRlY29kZXIu
ZmluaXNoZWRfcmVhZGluZykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCg2LCBkZWNvZGVyLm5l
eHRfcmVhZF9zaXplKCkpCkBAIC0xNDI2LDcgKzE4NzcsNyBAQAogICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKCdibGFyZycsIGRlY29kZXIudW51c2VkX2RhdGEpCiAgICAgICAgIAogICAgIGRlZiB0
ZXN0X2FjY2VwdF9ieXRlc19hbGxfYXRfb25jZV93aXRoX2V4Y2VzcyhzZWxmKToKLSAgICAgICAg
ZGVjb2RlciA9IHNtYXJ0Lkxlbmd0aFByZWZpeGVkQm9keURlY29kZXIoKQorICAgICAgICBkZWNv
ZGVyID0gcHJvdG9jb2wuTGVuZ3RoUHJlZml4ZWRCb2R5RGVjb2RlcigpCiAgICAgICAgIGRlY29k
ZXIuYWNjZXB0X2J5dGVzKCcxXG5hZG9uZVxudW51c2VkJykKICAgICAgICAgc2VsZi5hc3NlcnRU
cnVlKGRlY29kZXIuZmluaXNoZWRfcmVhZGluZykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgx
LCBkZWNvZGVyLm5leHRfcmVhZF9zaXplKCkpCkBAIC0xNDM0LDcgKzE4ODUsNyBAQAogICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKCd1bnVzZWQnLCBkZWNvZGVyLnVudXNlZF9kYXRhKQogCiAgICAg
ZGVmIHRlc3RfYWNjZXB0X2J5dGVzX2V4YWN0X2VuZF9vZl9ib2R5KHNlbGYpOgotICAgICAgICBk
ZWNvZGVyID0gc21hcnQuTGVuZ3RoUHJlZml4ZWRCb2R5RGVjb2RlcigpCisgICAgICAgIGRlY29k
ZXIgPSBwcm90b2NvbC5MZW5ndGhQcmVmaXhlZEJvZHlEZWNvZGVyKCkKICAgICAgICAgZGVjb2Rl
ci5hY2NlcHRfYnl0ZXMoJzFcbmEnKQogICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGRlY29kZXIu
ZmluaXNoZWRfcmVhZGluZykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCg1LCBkZWNvZGVyLm5l
eHRfcmVhZF9zaXplKCkpCkBAIC0xNDQ3LDYgKzE4OTgsMzggQEAKICAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbCgnJywgZGVjb2Rlci51bnVzZWRfZGF0YSkKIAogCitjbGFzcyBUZXN0U3VjY2Vzc2Z1
bFNtYXJ0U2VydmVyUmVzcG9uc2UodGVzdHMuVGVzdENhc2UpOgorCisgICAgZGVmIHRlc3RfY29u
c3RydWN0KHNlbGYpOgorICAgICAgICByZXNwb25zZSA9IHJlcXVlc3QuU3VjY2Vzc2Z1bFNtYXJ0
U2VydmVyUmVzcG9uc2UoKCdmb28nLCAnYmFyJykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
KCdmb28nLCAnYmFyJyksIHJlc3BvbnNlLmFyZ3MpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
Tm9uZSwgcmVzcG9uc2UuYm9keSkKKyAgICAgICAgcmVzcG9uc2UgPSByZXF1ZXN0LlN1Y2Nlc3Nm
dWxTbWFydFNlcnZlclJlc3BvbnNlKCgnZm9vJywgJ2JhcicpLCAnYnl0ZXMnKQorICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKCgnZm9vJywgJ2JhcicpLCByZXNwb25zZS5hcmdzKQorICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKCdieXRlcycsIHJlc3BvbnNlLmJvZHkpCisKKyAgICBkZWYgdGVzdF9p
c19zdWNjZXNzZnVsKHNlbGYpOgorICAgICAgICAiIiJpc19zdWNjZXNzZnVsIHNob3VsZCByZXR1
cm4gVHJ1ZSBmb3IgU3VjY2Vzc2Z1bFNtYXJ0U2VydmVyUmVzcG9uc2UuIiIiCisgICAgICAgIHJl
c3BvbnNlID0gcmVxdWVzdC5TdWNjZXNzZnVsU21hcnRTZXJ2ZXJSZXNwb25zZSgoJ2Vycm9yJywp
KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFRydWUsIHJlc3BvbnNlLmlzX3N1Y2Nlc3NmdWwo
KSkKKworCitjbGFzcyBUZXN0RmFpbGVkU21hcnRTZXJ2ZXJSZXNwb25zZSh0ZXN0cy5UZXN0Q2Fz
ZSk6CisKKyAgICBkZWYgdGVzdF9jb25zdHJ1Y3Qoc2VsZik6CisgICAgICAgIHJlc3BvbnNlID0g
cmVxdWVzdC5GYWlsZWRTbWFydFNlcnZlclJlc3BvbnNlKCgnZm9vJywgJ2JhcicpKQorICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKCgnZm9vJywgJ2JhcicpLCByZXNwb25zZS5hcmdzKQorICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKE5vbmUsIHJlc3BvbnNlLmJvZHkpCisgICAgICAgIHJlc3BvbnNl
ID0gcmVxdWVzdC5GYWlsZWRTbWFydFNlcnZlclJlc3BvbnNlKCgnZm9vJywgJ2JhcicpLCAnYnl0
ZXMnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCgnZm9vJywgJ2JhcicpLCByZXNwb25zZS5h
cmdzKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdieXRlcycsIHJlc3BvbnNlLmJvZHkpCisK
KyAgICBkZWYgdGVzdF9pc19zdWNjZXNzZnVsKHNlbGYpOgorICAgICAgICAiIiJpc19zdWNjZXNz
ZnVsIHNob3VsZCByZXR1cm4gRmFsc2UgZm9yIEZhaWxlZFNtYXJ0U2VydmVyUmVzcG9uc2UuIiIi
CisgICAgICAgIHJlc3BvbnNlID0gcmVxdWVzdC5GYWlsZWRTbWFydFNlcnZlclJlc3BvbnNlKCgn
ZXJyb3InLCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRmFsc2UsIHJlc3BvbnNlLmlzX3N1
Y2Nlc3NmdWwoKSkKKworCiBjbGFzcyBGYWtlSFRUUE1lZGl1bShvYmplY3QpOgogICAgIGRlZiBf
X2luaXRfXyhzZWxmKToKICAgICAgICAgc2VsZi53cml0dGVuX3JlcXVlc3QgPSBOb25lCkBAIC0x
NDU4LDIxICsxOTQxLDIyIEBACiAKIGNsYXNzIEhUVFBUdW5uZWxsaW5nU21va2VUZXN0KHRlc3Rz
LlRlc3RDYXNlV2l0aFRyYW5zcG9ydCk6CiAgICAgCisgICAgZGVmIHNldFVwKHNlbGYpOgorICAg
ICAgICBzdXBlcihIVFRQVHVubmVsbGluZ1Ntb2tlVGVzdCwgc2VsZikuc2V0VXAoKQorICAgICAg
ICAjIFdlIHVzZSB0aGUgVkZTIGxheWVyIGFzIHBhcnQgb2YgSFRUUCB0dW5uZWxsaW5nIHRlc3Rz
LgorICAgICAgICBzZWxmLl9jYXB0dXJlVmFyKCdCWlJfTk9fU01BUlRfVkZTJywgTm9uZSkKKwog
ICAgIGRlZiBfdGVzdF9idWxrX2RhdGEoc2VsZiwgdXJsX3Byb3RvY29sKToKICAgICAgICAgIyBX
ZSBzaG91bGQgYmUgYWJsZSB0byBzZW5kIGFuZCByZWNlaXZlIGJ1bGsgZGF0YSBpbiBhIHNpbmds
ZSBtZXNzYWdlLgogICAgICAgICAjIFRoZSAncmVhZHYnIGNvbW1hbmQgaW4gdGhlIHNtYXJ0IHBy
b3RvY29sIGJvdGggc2VuZHMgYW5kIHJlY2VpdmVzIGJ1bGsKICAgICAgICAgIyBkYXRhLCBzbyB3
ZSB1c2UgdGhhdC4KICAgICAgICAgc2VsZi5idWlsZF90cmVlKFsnZGF0YS1maWxlJ10pCi0gICAg
ICAgIGh0dHBfc2VydmVyID0gSFRUUFNlcnZlcldpdGhTbWFydHMoKQotICAgICAgICBodHRwX3Nl
cnZlci5fdXJsX3Byb3RvY29sID0gdXJsX3Byb3RvY29sCi0gICAgICAgIGh0dHBfc2VydmVyLnNl
dFVwKCkKLSAgICAgICAgc2VsZi5hZGRDbGVhbnVwKGh0dHBfc2VydmVyLnRlYXJEb3duKQotCi0g
ICAgICAgIGh0dHBfdHJhbnNwb3J0ID0gZ2V0X3RyYW5zcG9ydChodHRwX3NlcnZlci5nZXRfdXJs
KCkpCi0KKyAgICAgICAgc2VsZi50cmFuc3BvcnRfcmVhZG9ubHlfc2VydmVyID0gSFRUUFNlcnZl
cldpdGhTbWFydHMKKworICAgICAgICBodHRwX3RyYW5zcG9ydCA9IHNlbGYuZ2V0X3JlYWRvbmx5
X3RyYW5zcG9ydCgpCiAgICAgICAgIG1lZGl1bSA9IGh0dHBfdHJhbnNwb3J0LmdldF9zbWFydF9t
ZWRpdW0oKQogICAgICAgICAjcmVtb3RlX3RyYW5zcG9ydCA9IFJlbW90ZVRyYW5zcG9ydCgnZmFr
ZV91cmwnLCBtZWRpdW0pCi0gICAgICAgIHJlbW90ZV90cmFuc3BvcnQgPSBzbWFydC5TbWFydFRy
YW5zcG9ydCgnLycsIG1lZGl1bT1tZWRpdW0pCisgICAgICAgIHJlbW90ZV90cmFuc3BvcnQgPSBy
ZW1vdGUuUmVtb3RlVHJhbnNwb3J0KCcvJywgbWVkaXVtPW1lZGl1bSkKICAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbCgKICAgICAgICAgICAgIFsoMCwgImMiKV0sIGxpc3QocmVtb3RlX3RyYW5zcG9y
dC5yZWFkdigiZGF0YS1maWxlIiwgWygwLDEpXSkpKQogCkBAIC0xNDk3LDExICsxOTgxLDExIEBA
CiAgICAgZGVmIF90ZXN0X2h0dHBfc2VuZF9zbWFydF9yZXF1ZXN0KHNlbGYsIHVybF9wcm90b2Nv
bCk6CiAgICAgICAgIGh0dHBfc2VydmVyID0gSFRUUFNlcnZlcldpdGhTbWFydHMoKQogICAgICAg
ICBodHRwX3NlcnZlci5fdXJsX3Byb3RvY29sID0gdXJsX3Byb3RvY29sCi0gICAgICAgIGh0dHBf
c2VydmVyLnNldFVwKCkKKyAgICAgICAgaHR0cF9zZXJ2ZXIuc2V0VXAoc2VsZi5nZXRfdmZzX29u
bHlfc2VydmVyKCkpCiAgICAgICAgIHNlbGYuYWRkQ2xlYW51cChodHRwX3NlcnZlci50ZWFyRG93
bikKIAogICAgICAgICBwb3N0X2JvZHkgPSAnaGVsbG9cbicKLSAgICAgICAgZXhwZWN0ZWRfcmVw
bHlfYm9keSA9ICdva1x4MDExXG4nCisgICAgICAgIGV4cGVjdGVkX3JlcGx5X2JvZHkgPSAnb2tc
eDAxMlxuJwogCiAgICAgICAgIGh0dHBfdHJhbnNwb3J0ID0gZ2V0X3RyYW5zcG9ydChodHRwX3Nl
cnZlci5nZXRfdXJsKCkpCiAgICAgICAgIG1lZGl1bSA9IGh0dHBfdHJhbnNwb3J0LmdldF9zbWFy
dF9tZWRpdW0oKQpAQCAtMTUxOSwyMyArMjAwMywxOSBAQAogICAgICAgICBzZWxmLl90ZXN0X2h0
dHBfc2VuZF9zbWFydF9yZXF1ZXN0KCdodHRwK3VybGxpYicpCiAKICAgICBkZWYgdGVzdF9odHRw
X3NlcnZlcl93aXRoX3NtYXJ0cyhzZWxmKToKLSAgICAgICAgaHR0cF9zZXJ2ZXIgPSBIVFRQU2Vy
dmVyV2l0aFNtYXJ0cygpCi0gICAgICAgIGh0dHBfc2VydmVyLnNldFVwKCkKLSAgICAgICAgc2Vs
Zi5hZGRDbGVhbnVwKGh0dHBfc2VydmVyLnRlYXJEb3duKQorICAgICAgICBzZWxmLnRyYW5zcG9y
dF9yZWFkb25seV9zZXJ2ZXIgPSBIVFRQU2VydmVyV2l0aFNtYXJ0cwogCiAgICAgICAgIHBvc3Rf
Ym9keSA9ICdoZWxsb1xuJwotICAgICAgICBleHBlY3RlZF9yZXBseV9ib2R5ID0gJ29rXHgwMTFc
bicKKyAgICAgICAgZXhwZWN0ZWRfcmVwbHlfYm9keSA9ICdva1x4MDEyXG4nCiAKLSAgICAgICAg
c21hcnRfc2VydmVyX3VybCA9IGh0dHBfc2VydmVyLmdldF91cmwoKSArICcuYnpyL3NtYXJ0Jwor
ICAgICAgICBzbWFydF9zZXJ2ZXJfdXJsID0gc2VsZi5nZXRfcmVhZG9ubHlfdXJsKCcuYnpyL3Nt
YXJ0JykKICAgICAgICAgcmVwbHkgPSB1cmxsaWIyLnVybG9wZW4oc21hcnRfc2VydmVyX3VybCwg
cG9zdF9ib2R5KS5yZWFkKCkKIAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV4cGVjdGVkX3Jl
cGx5X2JvZHksIHJlcGx5KQogCiAgICAgZGVmIHRlc3Rfc21hcnRfaHR0cF9zZXJ2ZXJfcG9zdF9y
ZXF1ZXN0X2hhbmRsZXIoc2VsZik6Ci0gICAgICAgIGh0dHBfc2VydmVyID0gSFRUUFNlcnZlcldp
dGhTbWFydHMoKQotICAgICAgICBodHRwX3NlcnZlci5zZXRVcCgpCi0gICAgICAgIHNlbGYuYWRk
Q2xlYW51cChodHRwX3NlcnZlci50ZWFyRG93bikKLSAgICAgICAgaHR0cGQgPSBodHRwX3NlcnZl
ci5fZ2V0X2h0dHBkKCkKKyAgICAgICAgc2VsZi50cmFuc3BvcnRfcmVhZG9ubHlfc2VydmVyID0g
SFRUUFNlcnZlcldpdGhTbWFydHMKKyAgICAgICAgaHR0cGQgPSBzZWxmLmdldF9yZWFkb25seV9z
ZXJ2ZXIoKS5fZ2V0X2h0dHBkKCkKIAogICAgICAgICBzb2NrZXQgPSBTYW1wbGVTb2NrZXQoCiAg
ICAgICAgICAgICAnUE9TVCAvLmJ6ci9zbWFydCBIVFRQLzEuMFxyXG4nCkBAIC0xNTUyLDcgKzIw
MzIsNyBAQAogICAgICAgICByZXNwb25zZSA9IHNvY2tldC53cml0ZWZpbGUuZ2V0dmFsdWUoKQog
ICAgICAgICBzZWxmLmFzc2VydFN0YXJ0c1dpdGgocmVzcG9uc2UsICdIVFRQLzEuMCAyMDAgJykK
ICAgICAgICAgIyBUaGlzIGluY2x1ZGVzIHRoZSBlbmQgb2YgdGhlIEhUVFAgaGVhZGVycywgYW5k
IGFsbCB0aGUgYm9keS4KLSAgICAgICAgZXhwZWN0ZWRfZW5kX29mX3Jlc3BvbnNlID0gJ1xyXG5c
clxub2tceDAxMVxuJworICAgICAgICBleHBlY3RlZF9lbmRfb2ZfcmVzcG9uc2UgPSAnXHJcblxy
XG5va1x4MDEyXG4nCiAgICAgICAgIHNlbGYuYXNzZXJ0RW5kc1dpdGgocmVzcG9uc2UsIGV4cGVj
dGVkX2VuZF9vZl9yZXNwb25zZSkKIAogCkBAIC0xNTc3LDYgKzIwNTcsNDkgQEAKICAgICAgICAg
ZWxzZToKICAgICAgICAgICAgIHJldHVybiBzZWxmLndyaXRlZmlsZQogCisKK2NsYXNzIFJlbW90
ZUhUVFBUcmFuc3BvcnRUZXN0Q2FzZSh0ZXN0cy5UZXN0Q2FzZSk6CisKKyAgICBkZWYgdGVzdF9y
ZW1vdGVfcGF0aF9hZnRlcl9jbG9uZV9jaGlsZChzZWxmKToKKyAgICAgICAgIyBJZiBhIHVzZXIg
ZW50ZXJzICJienIraHR0cDovL2hvc3QvZm9vIiwgd2Ugd2FudCB0byBzZW50IGFsbCBzbWFydAor
ICAgICAgICAjIHJlcXVlc3RzIGZvciBjaGlsZCBVUkxzIG9mIHRoYXQgdG8gdGhlIG9yaWdpbmFs
IFVSTC4gIGkuZS4sIHdlIHdhbnQgdG8KKyAgICAgICAgIyBQT1NUIHRvICJienIraHR0cDovL2hv
c3QvZm9vLy5ienIvc21hcnQiIGFuZCBuZXZlciBzb21ldGhpbmcgbGlrZQorICAgICAgICAjICJi
enIraHR0cDovL2hvc3QvZm9vLy5ienIvYnJhbmNoLy5ienIvc21hcnQiLiAgU28sIGEgY2xvbmVk
CisgICAgICAgICMgUmVtb3RlSFRUUFRyYW5zcG9ydCByZW1lbWJlcnMgdGhlIGluaXRpYWwgVVJM
LCBhbmQgYWRqdXN0cyB0aGUgcmVscGF0aHMKKyAgICAgICAgIyBpdCBzZW5kcyBpbiBzbWFydCBy
ZXF1ZXN0cyBhY2NvcmRpbmdseS4KKyAgICAgICAgYmFzZV90cmFuc3BvcnQgPSByZW1vdGUuUmVt
b3RlSFRUUFRyYW5zcG9ydCgnYnpyK2h0dHA6Ly9ob3N0L3BhdGgnKQorICAgICAgICBuZXdfdHJh
bnNwb3J0ID0gYmFzZV90cmFuc3BvcnQuY2xvbmUoJ2NoaWxkX2RpcicpCisgICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwoYmFzZV90cmFuc3BvcnQuX2h0dHBfdHJhbnNwb3J0LAorICAgICAgICAgICAg
ICAgICAgICAgICAgIG5ld190cmFuc3BvcnQuX2h0dHBfdHJhbnNwb3J0KQorICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKCdjaGlsZF9kaXIvZm9vJywgbmV3X3RyYW5zcG9ydC5fcmVtb3RlX3BhdGgo
J2ZvbycpKQorCisgICAgZGVmIHRlc3RfcmVtb3RlX3BhdGhfYWZ0ZXJfY2xvbmVfcGFyZW50KHNl
bGYpOgorICAgICAgICAjIEhvd2V2ZXIsIGFjY2Vzc2luZyBhIHBhcmVudCBkaXJlY3Rvcnkgc2hv
dWxkIGdvIGRpcmVjdCB0byB0aGUgcGFyZW50J3MKKyAgICAgICAgIyBVUkwuICBXZSBkb24ndCBz
ZW5kIHJlbHBhdGhzIGxpa2UgIi4uL2ZvbyIgaW4gc21hcnQgcmVxdWVzdHMuCisgICAgICAgIGJh
c2VfdHJhbnNwb3J0ID0gcmVtb3RlLlJlbW90ZUhUVFBUcmFuc3BvcnQoJ2J6citodHRwOi8vaG9z
dC9wYXRoMS9wYXRoMicpCisgICAgICAgIG5ld190cmFuc3BvcnQgPSBiYXNlX3RyYW5zcG9ydC5j
bG9uZSgnLi4nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdmb28nLCBuZXdfdHJhbnNwb3J0
Ll9yZW1vdGVfcGF0aCgnZm9vJykpCisgICAgICAgIG5ld190cmFuc3BvcnQgPSBiYXNlX3RyYW5z
cG9ydC5jbG9uZSgnLi4vJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnZm9vJywgbmV3X3Ry
YW5zcG9ydC5fcmVtb3RlX3BhdGgoJ2ZvbycpKQorICAgICAgICBuZXdfdHJhbnNwb3J0ID0gYmFz
ZV90cmFuc3BvcnQuY2xvbmUoJy4uL2FiYycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ2Zv
bycsIG5ld190cmFuc3BvcnQuX3JlbW90ZV9wYXRoKCdmb28nKSkKKyAgICAgICAgIyAiYWJjLy4u
Ly4uIiBzaG91bGQgYmUgZXF1aXZhbGVudCB0byAiLi4iCisgICAgICAgIG5ld190cmFuc3BvcnQg
PSBiYXNlX3RyYW5zcG9ydC5jbG9uZSgnYWJjLy4uLy4uJykKKyAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbCgnZm9vJywgbmV3X3RyYW5zcG9ydC5fcmVtb3RlX3BhdGgoJ2ZvbycpKQorCisgICAgZGVm
IHRlc3RfcmVtb3RlX3BhdGhfdW5ub3JtYWxfYmFzZShzZWxmKToKKyAgICAgICAgIyBJZiB0aGUg
dHJhbnNwb3J0J3MgYmFzZSBpc24ndCBub3JtYWxpc2VkLCB0aGUgX3JlbW90ZV9wYXRoIHNob3Vs
ZAorICAgICAgICAjIHN0aWxsIGJlIGNhbGN1bGF0ZWQgY29ycmVjdGx5LgorICAgICAgICBiYXNl
X3RyYW5zcG9ydCA9IHJlbW90ZS5SZW1vdGVIVFRQVHJhbnNwb3J0KCdienIraHR0cDovL2hvc3Qv
JTdFYS9iJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnYycsIGJhc2VfdHJhbnNwb3J0Ll9y
ZW1vdGVfcGF0aCgnYycpKQorCisgICAgZGVmIHRlc3RfY2xvbmVfdW5ub3JtYWxfYmFzZShzZWxm
KToKKyAgICAgICAgIyBJZiB0aGUgdHJhbnNwb3J0J3MgYmFzZSBpc24ndCBub3JtYWxpc2VkLCBj
bG9uZWQgdHJhbnNwb3J0cyBzaG91bGQKKyAgICAgICAgIyBzdGlsbCB3b3JrIGNvcnJlY3RseS4K
KyAgICAgICAgYmFzZV90cmFuc3BvcnQgPSByZW1vdGUuUmVtb3RlSFRUUFRyYW5zcG9ydCgnYnpy
K2h0dHA6Ly9ob3N0LyU3RWEvYicpCisgICAgICAgIG5ld190cmFuc3BvcnQgPSBiYXNlX3RyYW5z
cG9ydC5jbG9uZSgnYycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ2J6citodHRwOi8vaG9z
dC8lN0VhL2IvYy8nLCBuZXdfdHJhbnNwb3J0LmJhc2UpCisKICAgICAgICAgCiAjIFRPRE86IENs
aWVudCBmZWF0dXJlIHRoYXQgZG9lcyBnZXRfYnVuZGxlIGFuZCB0aGVuIGluc3RhbGxzIHRoYXQg
aW50byBhCiAjIGJyYW5jaDsgdGhpcyBjYW4gYmUgdXNlZCBpbiBwbGFjZSBvZiB0aGUgcmVndWxh
ciBwdWxsL2ZldGNoIG9wZXJhdGlvbiB3aGVuCgo=

=== modified file bzrlib/tests/test_timestamp.py // last-changed:mbp@sourcefrog
... .net-20070419071716-tcuv5i38vhci6fuf // encoding:base64
LS0tIGJ6cmxpYi90ZXN0cy90ZXN0X3RpbWVzdGFtcC5weQorKysgYnpybGliL3Rlc3RzL3Rlc3Rf
dGltZXN0YW1wLnB5CkBAIC0yMiwyMyArMjIsMzMgQEAKIGNsYXNzIFRlc3RQYXRjaEhlYWRlcih0
ZXN0cy5UZXN0Q2FzZSk6CiAKICAgICBkZWYgdGVzdF9mb3JtYXRfcGF0Y2hfZGF0ZShzZWxmKToK
KyAgICAgICAgIyBlcG9jaCBpcyBhbHdheXMgaW4gdXRjCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwoJzE5NzAtMDEtMDEgMDA6MDA6MDAgKzAwMDAnLAogICAgICAgICAgICAgdGltZXN0YW1wLmZv
cm1hdF9wYXRjaF9kYXRlKDApKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCcxOTcwLTAxLTAx
IDA1OjAwOjAwICswNTAwJywKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnMTk3MC0wMS0wMSAw
MDowMDowMCArMDAwMCcsCiAgICAgICAgICAgICB0aW1lc3RhbXAuZm9ybWF0X3BhdGNoX2RhdGUo
MCwgNSAqIDM2MDApKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCcxOTY5LTEyLTMxIDE5OjAw
OjAwIC0wNTAwJywKLSAgICAgICAgICAgIHRpbWVzdGFtcC5mb3JtYXRfcGF0Y2hfZGF0ZSgwLCAt
NSAqIDM2MDApKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCcxOTY5LTEyLTMxIDE5OjAwOjAw
IC0wNTAwJywKLSAgICAgICAgICAgIHRpbWVzdGFtcC5mb3JtYXRfcGF0Y2hfZGF0ZSgwLCAtNSAq
IDM2MDApKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCcxOTcwLTAxLTAxIDAwOjAwOjAwICsw
MDAwJywKKyAgICAgICAgICAgIHRpbWVzdGFtcC5mb3JtYXRfcGF0Y2hfZGF0ZSgwLCAtNSAqIDM2
MDApKQorICAgICAgICAjIHJlZ3VsYXIgdGltZXN0YW1wIHdpdGggdHlwaWNhbCB0aW1lem9uZQog
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCcyMDA3LTAzLTA2IDEwOjA0OjE5IC0wNTAwJywKICAg
ICAgICAgICAgIHRpbWVzdGFtcC5mb3JtYXRfcGF0Y2hfZGF0ZSgxMTczMTkzNDU5LCAtNSAqIDM2
MDApKQorICAgICAgICAjIHRoZSB0aW1lem9uZSBwYXJ0IGlzIEhITU0KKyAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbCgnMjAwNy0wMy0wNiAwOTozNDoxOSAtMDUzMCcsCisgICAgICAgICAgICB0aW1l
c3RhbXAuZm9ybWF0X3BhdGNoX2RhdGUoMTE3MzE5MzQ1OSwgLTUuNSAqIDM2MDApKQorICAgICAg
ICAjIHRpbWV6b25lcyBjYW4gYmUgb2Zmc2V0IGJ5IHNpbmdsZSBtaW51dGVzIChidXQgbm8gbGVz
cykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnMjAwNy0wMy0wNiAxNTowNToxOSArMDAwMScs
CisgICAgICAgICAgICB0aW1lc3RhbXAuZm9ybWF0X3BhdGNoX2RhdGUoMTE3MzE5MzQ1OSwgKzEg
KiA2MCkpCiAKICAgICBkZWYgdGVzdF9wYXJzZV9wYXRjaF9kYXRlKHNlbGYpOgogICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKCgwLCAwKSwKICAgICAgICAgICAgIHRpbWVzdGFtcC5wYXJzZV9wYXRj
aF9kYXRlKCcxOTcwLTAxLTAxIDAwOjAwOjAwICswMDAwJykpCisgICAgICAgICMgZXZlbiB0aG91
Z2ggd2UgZG9uJ3QgZW1pdCBwcmUtZXBvY2ggZGF0ZXMsIHdlIGNhbiBwYXJzZSB0aGVtCiAgICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwoKDAsIC01ICogMzYwMCksCiAgICAgICAgICAgICB0aW1lc3Rh
bXAucGFyc2VfcGF0Y2hfZGF0ZSgnMTk2OS0xMi0zMSAxOTowMDowMCAtMDUwMCcpKQogICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKCgwLCArNSAqIDM2MDApLAogICAgICAgICAgICAgdGltZXN0YW1w
LnBhcnNlX3BhdGNoX2RhdGUoJzE5NzAtMDEtMDEgMDU6MDA6MDAgKzA1MDAnKSkKICAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbCgoMTE3MzE5MzQ1OSwgLTUgKiAzNjAwKSwKICAgICAgICAgICAgIHRp
bWVzdGFtcC5wYXJzZV9wYXRjaF9kYXRlKCcyMDA3LTAzLTA2IDEwOjA0OjE5IC0wNTAwJykpCisg
ICAgICAgICMgb2Zmc2V0IG9mIHRocmVlIG1pbnV0ZXMKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bCgoMTE3MzE5MzQ1OSwgKzMgKiA2MCksCisgICAgICAgICAgICB0aW1lc3RhbXAucGFyc2VfcGF0
Y2hfZGF0ZSgnMjAwNy0wMy0wNiAxNTowNzoxOSArMDAwMycpKQoK

=== modified file bzrlib/tests/test_transport.py // last-changed:mbp@sourcefrog
... .net-20070504104131-9zq53xhbxtri3jl3 // encoding:base64
LS0tIGJ6cmxpYi90ZXN0cy90ZXN0X3RyYW5zcG9ydC5weQorKysgYnpybGliL3Rlc3RzL3Rlc3Rf
dHJhbnNwb3J0LnB5CkBAIC0xLDQgKzEsNCBAQAotIyBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUs
IDIwMDYgQ2Fub25pY2FsIEx0ZAorIyBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYsIDIw
MDcgQ2Fub25pY2FsIEx0ZAogIwogIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91
IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQogIyBpdCB1bmRlciB0aGUgdGVybXMg
b2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQpAQCAtMjEs
NyArMjEsMTAgQEAKIGZyb20gY1N0cmluZ0lPIGltcG9ydCBTdHJpbmdJTwogCiBpbXBvcnQgYnpy
bGliCi1mcm9tIGJ6cmxpYiBpbXBvcnQgdXJsdXRpbHMKK2Zyb20gYnpybGliIGltcG9ydCAoCisg
ICAgZXJyb3JzLAorICAgIHVybHV0aWxzLAorICAgICkKIGZyb20gYnpybGliLmVycm9ycyBpbXBv
cnQgKENvbm5lY3Rpb25FcnJvciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIERlcGVuZGVu
Y3lOb3RQcmVzZW50LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgRmlsZUV4aXN0cywKQEAg
LTM0LDExICszNywxMiBAQAogZnJvbSBienJsaWIudGVzdHMgaW1wb3J0IFRlc3RDYXNlLCBUZXN0
Q2FzZUluVGVtcERpcgogZnJvbSBienJsaWIudHJhbnNwb3J0IGltcG9ydCAoX0NvYWxlc2NlZE9m
ZnNldCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9nZXRfcHJvdG9jb2xfaGFuZGxl
cnMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfc2V0X3Byb3RvY29sX2hhbmRsZXJz
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX2dldF90cmFuc3BvcnRfbW9kdWxlcywK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldF90cmFuc3BvcnQsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBfcHJvdG9jb2xfaGFuZGxlcnMsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICByZWdpc3Rlcl9sYXp5X3RyYW5zcG9ydCwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIF9zZXRfcHJvdG9jb2xfaGFuZGxlcnMsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICByZWdpc3Rlcl90cmFuc3BvcnRfcHJvdG8sCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBfY2xlYXJfcHJvdG9jb2xfaGFuZGxlcnMsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBUcmFuc3BvcnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApCiBm
cm9tIGJ6cmxpYi50cmFuc3BvcnQuY2hyb290IGltcG9ydCBDaHJvb3RTZXJ2ZXIKQEAgLTU1LDEw
ICs1OSwxMCBAQAogCiAgICAgZGVmIHRlc3RfX2dldF9zZXRfcHJvdG9jb2xfaGFuZGxlcnMoc2Vs
Zik6CiAgICAgICAgIGhhbmRsZXJzID0gX2dldF9wcm90b2NvbF9oYW5kbGVycygpCi0gICAgICAg
IHNlbGYuYXNzZXJ0Tm90RXF1YWwoe30sIGhhbmRsZXJzKQorICAgICAgICBzZWxmLmFzc2VydE5v
dEVxdWFsKFtdLCBoYW5kbGVycy5rZXlzKCApKQogICAgICAgICB0cnk6Ci0gICAgICAgICAgICBf
c2V0X3Byb3RvY29sX2hhbmRsZXJzKHt9KQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh7
fSwgX2dldF9wcm90b2NvbF9oYW5kbGVycygpKQorICAgICAgICAgICAgX2NsZWFyX3Byb3RvY29s
X2hhbmRsZXJzKCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoW10sIF9nZXRfcHJvdG9j
b2xfaGFuZGxlcnMoKS5rZXlzKCkpCiAgICAgICAgIGZpbmFsbHk6CiAgICAgICAgICAgICBfc2V0
X3Byb3RvY29sX2hhbmRsZXJzKGhhbmRsZXJzKQogCkBAIC02Nyw5ICs3MSwxMCBAQAogICAgICAg
ICBjbGFzcyBTYW1wbGVIYW5kbGVyKG9iamVjdCk6CiAgICAgICAgICAgICAiIiJJIGV4aXN0LCBp
c250IHRoYXQgZW5vdWdoPyIiIgogICAgICAgICB0cnk6Ci0gICAgICAgICAgICBteV9oYW5kbGVy
cyA9IHt9Ci0gICAgICAgICAgICBfc2V0X3Byb3RvY29sX2hhbmRsZXJzKG15X2hhbmRsZXJzKQor
ICAgICAgICAgICAgX2NsZWFyX3Byb3RvY29sX2hhbmRsZXJzKCkKKyAgICAgICAgICAgIHJlZ2lz
dGVyX3RyYW5zcG9ydF9wcm90bygnZm9vJykKICAgICAgICAgICAgIHJlZ2lzdGVyX2xhenlfdHJh
bnNwb3J0KCdmb28nLCAnYnpybGliLnRlc3RzLnRlc3RfdHJhbnNwb3J0JywgJ1Rlc3RUcmFuc3Bv
cnQuU2FtcGxlSGFuZGxlcicpCisgICAgICAgICAgICByZWdpc3Rlcl90cmFuc3BvcnRfcHJvdG8o
J2JhcicpCiAgICAgICAgICAgICByZWdpc3Rlcl9sYXp5X3RyYW5zcG9ydCgnYmFyJywgJ2J6cmxp
Yi50ZXN0cy50ZXN0X3RyYW5zcG9ydCcsICdUZXN0VHJhbnNwb3J0LlNhbXBsZUhhbmRsZXInKQog
ICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChbU2FtcGxlSGFuZGxlci5fX21vZHVsZV9fLCAn
YnpybGliLnRyYW5zcG9ydC5jaHJvb3QnXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
X2dldF90cmFuc3BvcnRfbW9kdWxlcygpKQpAQCAtODAsNiArODUsNyBAQAogICAgICAgICAiIiJU
cmFuc3BvcnQgd2l0aCBtaXNzaW5nIGRlcGVuZGVuY3kgY2F1c2VzIG5vIGVycm9yIiIiCiAgICAg
ICAgIHNhdmVkX2hhbmRsZXJzID0gX2dldF9wcm90b2NvbF9oYW5kbGVycygpCiAgICAgICAgIHRy
eToKKyAgICAgICAgICAgIHJlZ2lzdGVyX3RyYW5zcG9ydF9wcm90bygnZm9vJykKICAgICAgICAg
ICAgIHJlZ2lzdGVyX2xhenlfdHJhbnNwb3J0KCdmb28nLCAnYnpybGliLnRlc3RzLnRlc3RfdHJh
bnNwb3J0JywKICAgICAgICAgICAgICAgICAgICAgJ0JhZFRyYW5zcG9ydEhhbmRsZXInKQogICAg
ICAgICAgICAgdHJ5OgpAQCAtMTAwLDcgKzEwNiw4IEBACiAgICAgICAgICIiIlRyYW5zcG9ydCB3
aXRoIG1pc3NpbmcgZGVwZW5kZW5jeSBjYXVzZXMgbm8gZXJyb3IiIiIKICAgICAgICAgc2F2ZWRf
aGFuZGxlcnMgPSBfZ2V0X3Byb3RvY29sX2hhbmRsZXJzKCkKICAgICAgICAgdHJ5OgotICAgICAg
ICAgICAgX3NldF9wcm90b2NvbF9oYW5kbGVycyh7fSkKKyAgICAgICAgICAgIF9jbGVhcl9wcm90
b2NvbF9oYW5kbGVycygpCisgICAgICAgICAgICByZWdpc3Rlcl90cmFuc3BvcnRfcHJvdG8oJ2Zv
bycpCiAgICAgICAgICAgICByZWdpc3Rlcl9sYXp5X3RyYW5zcG9ydCgnZm9vJywgJ2J6cmxpYi50
ZXN0cy50ZXN0X3RyYW5zcG9ydCcsCiAgICAgICAgICAgICAgICAgICAgICdCYWNrdXBUcmFuc3Bv
cnRIYW5kbGVyJykKICAgICAgICAgICAgIHJlZ2lzdGVyX2xhenlfdHJhbnNwb3J0KCdmb28nLCAn
YnpybGliLnRlc3RzLnRlc3RfdHJhbnNwb3J0JywKQEAgLTEyMSw2ICsxMjgsMTIgQEAKICAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbCgnL2V0YycsCiAgICAgICAgICAgICAgICAgICAgICAgICAgdC5f
Y29tYmluZV9wYXRocygnL2hvbWUvc2FyYWgnLCAnL2V0YycpKQogCisgICAgZGVmIHRlc3RfbG9j
YWxfYWJzcGF0aF9ub25fbG9jYWxfdHJhbnNwb3J0KHNlbGYpOgorICAgICAgICAjIHRoZSBiYXNl
IGltcGxlbWVudGF0aW9uIHNob3VsZCB0aHJvdworICAgICAgICB0ID0gTWVtb3J5VHJhbnNwb3J0
KCkKKyAgICAgICAgZSA9IHNlbGYuYXNzZXJ0UmFpc2VzKGVycm9ycy5Ob3RMb2NhbFVybCwgdC5s
b2NhbF9hYnNwYXRoLCAndCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ21lbW9yeTovLy90
IGlzIG5vdCBhIGxvY2FsIHBhdGguJywgc3RyKGUpKQorCiAKIGNsYXNzIFRlc3RDb2FsZXNjZU9m
ZnNldHMoVGVzdENhc2UpOgogICAgIApAQCAtMzYxLDE0ICszNzQsMTQgQEAKICAgICAgICAgYmFj
a2luZ190cmFuc3BvcnQgPSBNZW1vcnlUcmFuc3BvcnQoKQogICAgICAgICBzZXJ2ZXIgPSBDaHJv
b3RTZXJ2ZXIoYmFja2luZ190cmFuc3BvcnQpCiAgICAgICAgIHNlcnZlci5zZXRVcCgpCi0gICAg
ICAgIHNlbGYuYXNzZXJ0VHJ1ZShzZXJ2ZXIuc2NoZW1lIGluIF9wcm90b2NvbF9oYW5kbGVycy5r
ZXlzKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzZXJ2ZXIuc2NoZW1lIGluIF9nZXRfcHJv
dG9jb2xfaGFuZGxlcnMoKS5rZXlzKCkpCiAKICAgICBkZWYgdGVzdF90ZWFyRG93bihzZWxmKToK
ICAgICAgICAgYmFja2luZ190cmFuc3BvcnQgPSBNZW1vcnlUcmFuc3BvcnQoKQogICAgICAgICBz
ZXJ2ZXIgPSBDaHJvb3RTZXJ2ZXIoYmFja2luZ190cmFuc3BvcnQpCiAgICAgICAgIHNlcnZlci5z
ZXRVcCgpCiAgICAgICAgIHNlcnZlci50ZWFyRG93bigpCi0gICAgICAgIHNlbGYuYXNzZXJ0RmFs
c2Uoc2VydmVyLnNjaGVtZSBpbiBfcHJvdG9jb2xfaGFuZGxlcnMua2V5cygpKQorICAgICAgICBz
ZWxmLmFzc2VydEZhbHNlKHNlcnZlci5zY2hlbWUgaW4gX2dldF9wcm90b2NvbF9oYW5kbGVycygp
LmtleXMoKSkKIAogICAgIGRlZiB0ZXN0X2dldF91cmwoc2VsZik6CiAgICAgICAgIGJhY2tpbmdf
dHJhbnNwb3J0ID0gTWVtb3J5VHJhbnNwb3J0KCkKQEAgLTQ2MSw3ICs0NzQsNyBAQAogICAgICAg
ICB0cmFuc3BvcnQgPSBzZWxmLmdldF9uZnNfdHJhbnNwb3J0KCcuJykKICAgICAgICAgc2VsZi5i
dWlsZF90cmVlKFsnZnJvbS8nLCAnZnJvbS9mb28nLCAndG8vJywgJ3RvL2JhciddLAogICAgICAg
ICAgICAgICAgICAgICAgICAgdHJhbnNwb3J0PXRyYW5zcG9ydCkKLSAgICAgICAgc2VsZi5hc3Nl
cnRSYWlzZXMoYnpybGliLmVycm9ycy5SZXNvdXJjZUJ1c3ksCisgICAgICAgIHNlbGYuYXNzZXJ0
UmFpc2VzKGVycm9ycy5SZXNvdXJjZUJ1c3ksCiAgICAgICAgICAgICAgICAgICAgICAgICAgIHRy
YW5zcG9ydC5yZW5hbWUsICdmcm9tJywgJ3RvJykKIAogCkBAIC01NjAsNiArNTczLDExIEBACiAg
ICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZSh0LCBMb2NhbFRyYW5zcG9ydCkKICAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbHModC5iYXNlLCBoZXJlX3VybCkKIAorICAgIGRlZiB0ZXN0X2xvY2Fs
X2Fic3BhdGgoc2VsZik6CisgICAgICAgIGhlcmUgPSBvcy5wYXRoLmFic3BhdGgoJy4nKQorICAg
ICAgICB0ID0gZ2V0X3RyYW5zcG9ydChoZXJlKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFscyh0
LmxvY2FsX2Fic3BhdGgoJycpLCBoZXJlKQorCiAKIGNsYXNzIFRlc3RXaW4zMkxvY2FsVHJhbnNw
b3J0KFRlc3RDYXNlKToKIApAQCAtNTc0LDMgKzU5MiwxMyBAQAogICAgICAgICAjIG1ha2Ugc3Vy
ZSB3ZSByZWFjaCB0aGUgcm9vdAogICAgICAgICB0ID0gdC5jbG9uZSgnLi4nKQogICAgICAgICBz
ZWxmLmFzc2VydEVxdWFscyh0LmJhc2UsICdmaWxlOi8vSE9TVC8nKQorCisKK2RlZiBnZXRfdGVz
dF9wZXJtdXRhdGlvbnMoKToKKyAgICAiIiJSZXR1cm4gdHJhbnNwb3J0IHBlcm11dGF0aW9ucyB0
byBiZSB1c2VkIGluIHRlc3RpbmcuCisKKyAgICBUaGlzIG1vZHVsZSByZWdpc3RlcnMgc29tZSB0
cmFuc3BvcnRzLCBidXQgdGhleSdyZSBvbmx5IGZvciB0ZXN0aW5nCisgICAgcmVnaXN0cmF0aW9u
LiAgV2UgZG9uJ3QgcmVhbGx5IHdhbnQgdG8gcnVuIGFsbCB0aGUgdHJhbnNwb3J0IHRlc3RzIGFn
YWluc3QKKyAgICB0aGVtLgorICAgICIiIgorICAgIHJldHVybiBbXQoK

=== modified file bzrlib/tests/test_transport_implementations.py // last-change
... d:john@arbash-meinel.com-20070502143655-id25373m3lgue8ke // encoding:base64
LS0tIGJ6cmxpYi90ZXN0cy90ZXN0X3RyYW5zcG9ydF9pbXBsZW1lbnRhdGlvbnMucHkKKysrIGJ6
cmxpYi90ZXN0cy90ZXN0X3RyYW5zcG9ydF9pbXBsZW1lbnRhdGlvbnMucHkKQEAgLTEsNCArMSw0
IEBACi0jIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiBDYW5vbmljYWwgTHRkCisjIENv
cHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiwgMjAwNyBDYW5vbmljYWwgTHRkCiAjCiAjIFRo
aXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQv
b3IgbW9kaWZ5CiAjIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGlj
IExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CkBAIC0yMiw2ICsyMiw3IEBACiAKIGltcG9ydCBvcwog
ZnJvbSBjU3RyaW5nSU8gaW1wb3J0IFN0cmluZ0lPCitmcm9tIFN0cmluZ0lPIGltcG9ydCBTdHJp
bmdJTyBhcyBweVN0cmluZ0lPCiBpbXBvcnQgc3RhdAogaW1wb3J0IHN5cwogCkBAIC0zMCwyNCAr
MzEsNjggQEAKICAgICBvc3V0aWxzLAogICAgIHVybHV0aWxzLAogICAgICkKLWZyb20gYnpybGli
LmVycm9ycyBpbXBvcnQgKERpcmVjdG9yeU5vdEVtcHR5LCBOb1N1Y2hGaWxlLCBGaWxlRXhpc3Rz
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgTG9ja0Vycm9yLCBOb1NtYXJ0U2VydmVyLCBQ
YXRoRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBUcmFuc3BvcnROb3RQb3NzaWJs
ZSwgQ29ubmVjdGlvbkVycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgSW52YWxpZFVS
TCkKK2Zyb20gYnpybGliLmVycm9ycyBpbXBvcnQgKENvbm5lY3Rpb25FcnJvciwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgIERpcmVjdG9yeU5vdEVtcHR5LAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgRmlsZUV4aXN0cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIEludmFsaWRV
UkwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBMb2NrRXJyb3IsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICBOb1NtYXJ0U2VydmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
Tm9TdWNoRmlsZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIE5vdExvY2FsVXJsLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgUGF0aEVycm9yLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgVHJhbnNwb3J0Tm90UG9zc2libGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAp
CiBmcm9tIGJ6cmxpYi5vc3V0aWxzIGltcG9ydCBnZXRjd2QKK2Zyb20gYnpybGliLnNtYXJ0IGlt
cG9ydCBtZWRpdW0KIGZyb20gYnpybGliLnN5bWJvbF92ZXJzaW9uaW5nIGltcG9ydCB6ZXJvX2Vs
ZXZlbgogZnJvbSBienJsaWIudGVzdHMgaW1wb3J0IFRlc3RDYXNlSW5UZW1wRGlyLCBUZXN0U2tp
cHBlZAogZnJvbSBienJsaWIudGVzdHMudGVzdF90cmFuc3BvcnQgaW1wb3J0IFRlc3RUcmFuc3Bv
cnRJbXBsZW1lbnRhdGlvbgotZnJvbSBienJsaWIudHJhbnNwb3J0IGltcG9ydCBtZW1vcnksIHNt
YXJ0Citmcm9tIGJ6cmxpYi50cmFuc3BvcnQgaW1wb3J0IG1lbW9yeSwgcmVtb3RlCiBpbXBvcnQg
YnpybGliLnRyYW5zcG9ydAogCiAKIGNsYXNzIFRyYW5zcG9ydFRlc3RzKFRlc3RUcmFuc3BvcnRJ
bXBsZW1lbnRhdGlvbik6CiAKKyAgICBkZWYgc2V0VXAoc2VsZik6CisgICAgICAgIHN1cGVyKFRy
YW5zcG9ydFRlc3RzLCBzZWxmKS5zZXRVcCgpCisgICAgICAgIHNlbGYuX2NhcHR1cmVWYXIoJ0Ja
Ul9OT19TTUFSVF9WRlMnLCBOb25lKQorCiAgICAgZGVmIGNoZWNrX3RyYW5zcG9ydF9jb250ZW50
cyhzZWxmLCBjb250ZW50LCB0cmFuc3BvcnQsIHJlbHBhdGgpOgogICAgICAgICAiIiJDaGVjayB0
aGF0IHRyYW5zcG9ydC5nZXQocmVscGF0aCkucmVhZCgpID09IGNvbnRlbnQuIiIiCiAgICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWxEaWZmKGNvbnRlbnQsIHRyYW5zcG9ydC5nZXQocmVscGF0aCkucmVh
ZCgpKQogCisgICAgZGVmIHRlc3RfZW5zdXJlX2Jhc2VfbWlzc2luZyhzZWxmKToKKyAgICAgICAg
IiIiLmVuc3VyZV9iYXNlKCkgc2hvdWxkIGNyZWF0ZSB0aGUgZGlyZWN0b3J5IGlmIGl0IGRvZXNu
J3QgZXhpc3QiIiIKKyAgICAgICAgdCA9IHNlbGYuZ2V0X3RyYW5zcG9ydCgpCisgICAgICAgIHRf
YSA9IHQuY2xvbmUoJ2EnKQorICAgICAgICBpZiB0X2EuaXNfcmVhZG9ubHkoKToKKyAgICAgICAg
ICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFRyYW5zcG9ydE5vdFBvc3NpYmxlLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgdF9hLmVuc3VyZV9iYXNlKQorICAgICAgICAgICAgcmV0dXJuCisg
ICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSh0X2EuZW5zdXJlX2Jhc2UoKSkKKyAgICAgICAgc2VsZi5h
c3NlcnRUcnVlKHQuaGFzKCdhJykpCisKKyAgICBkZWYgdGVzdF9lbnN1cmVfYmFzZV9leGlzdHMo
c2VsZik6CisgICAgICAgICIiIi5lbnN1cmVfYmFzZSgpIHNob3VsZCBqdXN0IGJlIGhhcHB5IGlm
IGl0IGFscmVhZHkgZXhpc3RzIiIiCisgICAgICAgIHQgPSBzZWxmLmdldF90cmFuc3BvcnQoKQor
ICAgICAgICBpZiB0LmlzX3JlYWRvbmx5KCk6CisgICAgICAgICAgICByZXR1cm4KKworICAgICAg
ICB0Lm1rZGlyKCdhJykKKyAgICAgICAgdF9hID0gdC5jbG9uZSgnYScpCisgICAgICAgICMgZW5z
dXJlX2Jhc2UgcmV0dXJucyBGYWxzZSBpZiBpdCBkaWRuJ3QgY3JlYXRlIHRoZSBiYXNlCisgICAg
ICAgIHNlbGYuYXNzZXJ0RmFsc2UodF9hLmVuc3VyZV9iYXNlKCkpCisKKyAgICBkZWYgdGVzdF9l
bnN1cmVfYmFzZV9taXNzaW5nX3BhcmVudChzZWxmKToKKyAgICAgICAgIiIiLmVuc3VyZV9iYXNl
KCkgd2lsbCBmYWlsIGlmIHRoZSBwYXJlbnQgZGlyIGRvZXNuJ3QgZXhpc3QiIiIKKyAgICAgICAg
dCA9IHNlbGYuZ2V0X3RyYW5zcG9ydCgpCisgICAgICAgIGlmIHQuaXNfcmVhZG9ubHkoKToKKyAg
ICAgICAgICAgIHJldHVybgorCisgICAgICAgIHRfYSA9IHQuY2xvbmUoJ2EnKQorICAgICAgICB0
X2IgPSB0X2EuY2xvbmUoJ2InKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhOb1N1Y2hGaWxl
LCB0X2IuZW5zdXJlX2Jhc2UpCisKICAgICBkZWYgdGVzdF9oYXMoc2VsZik6CiAgICAgICAgIHQg
PSBzZWxmLmdldF90cmFuc3BvcnQoKQogCkBAIC0zNjQsNiArNDA5LDM0IEBACiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBkaXJfbW9kZT0wNzc3LCBjcmVhdGVfcGFyZW50X2Rpcj1UcnVl
KQogICAgICAgICBzZWxmLmFzc2VydFRyYW5zcG9ydE1vZGUodCwgJ2Rpcjc3NycsIDA3NzcpCiAK
KyAgICBkZWYgdGVzdF9wdXRfYnl0ZXNfdW5pY29kZShzZWxmKToKKyAgICAgICAgIyBFeHBlY3Qg
cHV0X2J5dGVzIHRvIHJhaXNlIEFzc2VydGlvbkVycm9yIG9yIFVuaWNvZGVFbmNvZGVFcnJvciBp
ZgorICAgICAgICAjIGdpdmVuIHVuaWNvZGUgImJ5dGVzIi4gIFVuaWNvZGVFbmNvZGVFcnJvciBk
b2Vzbid0IHJlYWxseSBtYWtlIHNlbnNlCisgICAgICAgICMgKHdlIGRvbid0IHdhbnQgdG8gZW5j
b2RlIHVuaWNvZGUgaGVyZSBhdCBhbGwsIGNhbGxlcnMgc2hvdWxkIGJlCisgICAgICAgICMgc3Ry
aWN0bHkgcGFzc2luZyBieXRlcyB0byBwdXRfYnl0ZXMpLCBidXQgd2UgYWxsb3cgaXQgZm9yIGJh
Y2t3YXJkcworICAgICAgICAjIGNvbXBhdGliaWxpdHkuICBBdCBzb21lIHBvaW50IHdlIHNob3Vs
ZCB1c2UgYSBzcGVjaWZpYyBleGNlcHRpb24uCisgICAgICAgICMgU2VlIGh0dHBzOi8vYnVncy5s
YXVuY2hwYWQubmV0L2J6ci8rYnVnLzEwNjg5OC4KKyAgICAgICAgdCA9IHNlbGYuZ2V0X3RyYW5z
cG9ydCgpCisgICAgICAgIGlmIHQuaXNfcmVhZG9ubHkoKToKKyAgICAgICAgICAgIHJldHVybgor
ICAgICAgICB1bmljb2RlX3N0cmluZyA9IHUnXHUxMjM0JworICAgICAgICBzZWxmLmFzc2VydFJh
aXNlcygKKyAgICAgICAgICAgIChBc3NlcnRpb25FcnJvciwgVW5pY29kZUVuY29kZUVycm9yKSwK
KyAgICAgICAgICAgIHQucHV0X2J5dGVzLCAnZm9vJywgdW5pY29kZV9zdHJpbmcpCisKKyAgICBk
ZWYgdGVzdF9wdXRfZmlsZV91bmljb2RlKHNlbGYpOgorICAgICAgICAjIExpa2UgcHV0X2J5dGVz
LCBleGNlcHQgd2l0aCBhIFN0cmluZ0lPLlN0cmluZ0lPIG9mIGEgdW5pY29kZSBzdHJpbmcuCisg
ICAgICAgICMgVGhpcyBzaXR1YXRpb24gY2FuIGhhcHBlbiAoYW5kIGhhcykgaWYgY29kZSBpcyBj
YXJlbGVzcyBhYm91dCB0aGUgdHlwZQorICAgICAgICAjIG9mICJzdHJpbmciIHRoZXkgaW5pdGlh
bGlzZS93cml0ZSB0byBhIFN0cmluZ0lPIHdpdGguICBXZSBjYW5ub3QgdXNlCisgICAgICAgICMg
Y1N0cmluZ0lPLCBiZWNhdXNlIGl0IG5ldmVyIHJldHVybnMgdW5pY29kZSBmcm9tIHJlYWQuCisg
ICAgICAgICMgTGlrZSBwdXRfYnl0ZXMsIFVuaWNvZGVFbmNvZGVFcnJvciBpc24ndCBxdWl0ZSB0
aGUgcmlnaHQgZXhjZXB0aW9uIHRvCisgICAgICAgICMgcmFpc2UsIGJ1dCB3ZSByYWlzZSBpdCBm
b3IgaHlzdGVyaWNhbCByYWlzaW5zLgorICAgICAgICB0ID0gc2VsZi5nZXRfdHJhbnNwb3J0KCkK
KyAgICAgICAgaWYgdC5pc19yZWFkb25seSgpOgorICAgICAgICAgICAgcmV0dXJuCisgICAgICAg
IHVuaWNvZGVfZmlsZSA9IHB5U3RyaW5nSU8odSdcdTEyMzQnKQorICAgICAgICBzZWxmLmFzc2Vy
dFJhaXNlcyhVbmljb2RlRW5jb2RlRXJyb3IsIHQucHV0X2ZpbGUsICdmb28nLCB1bmljb2RlX2Zp
bGUpCisKICAgICBkZWYgdGVzdF9wdXRfbXVsdGkoc2VsZik6CiAgICAgICAgIHQgPSBzZWxmLmdl
dF90cmFuc3BvcnQoKQogCkBAIC0xMTA5LDggKzExODIsOSBAQAogICAgICAgICB0cmFuc3BvcnQg
PSBzZWxmLmdldF90cmFuc3BvcnQoKQogICAgICAgICB0cnk6CiAgICAgICAgICAgICBwID0gdHJh
bnNwb3J0LmxvY2FsX2Fic3BhdGgoJy4nKQotICAgICAgICBleGNlcHQgVHJhbnNwb3J0Tm90UG9z
c2libGU6Ci0gICAgICAgICAgICBwYXNzICMgVGhpcyBpcyBub3QgYSBsb2NhbCB0cmFuc3BvcnQK
KyAgICAgICAgZXhjZXB0IChlcnJvcnMuTm90TG9jYWxVcmwsIFRyYW5zcG9ydE5vdFBvc3NpYmxl
KSwgZToKKyAgICAgICAgICAgICMgc2hvdWxkIGJlIGZvcm1hdHRhYmxlCisgICAgICAgICAgICBz
ID0gc3RyKGUpCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGdl
dGN3ZCgpLCBwKQogCkBAIC0xMzA2LDcgKzEzODAsNyBAQAogICAgICAgICB0cmFuc3BvcnQgPSBz
ZWxmLmdldF90cmFuc3BvcnQoKQogICAgICAgICB0cnk6CiAgICAgICAgICAgICBjbGllbnRfbWVk
aXVtID0gdHJhbnNwb3J0LmdldF9zbWFydF9tZWRpdW0oKQotICAgICAgICAgICAgc2VsZi5hc3Nl
cnRJc0luc3RhbmNlKGNsaWVudF9tZWRpdW0sIHNtYXJ0LlNtYXJ0Q2xpZW50TWVkaXVtKQorICAg
ICAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKGNsaWVudF9tZWRpdW0sIG1lZGl1bS5TbWFy
dENsaWVudE1lZGl1bSkKICAgICAgICAgZXhjZXB0IGVycm9ycy5Ob1NtYXJ0TWVkaXVtOgogICAg
ICAgICAgICAgIyBhcyBsb25nIGFzIHdlIGdvdCBpdCB3ZSdyZSBmaW5lCiAgICAgICAgICAgICBw
YXNzCgo=

=== modified file bzrlib/tests/test_ui.py // last-changed:v.ladeuil+lp@free.fr-
... 20070413161654-kp4kajrrr23jge2f // encoding:base64
LS0tIGJ6cmxpYi90ZXN0cy90ZXN0X3VpLnB5CisrKyBienJsaWIvdGVzdHMvdGVzdF91aS5weQpA
QCAtMjQsMTQgKzI0LDIxIEBACiAKIGltcG9ydCBienJsaWIKIGltcG9ydCBienJsaWIuZXJyb3Jz
IGFzIGVycm9ycwotZnJvbSBienJsaWIucHJvZ3Jlc3MgaW1wb3J0IERvdHNQcm9ncmVzc0Jhciwg
VFRZUHJvZ3Jlc3NCYXIsIFByb2dyZXNzQmFyU3RhY2sKK2Zyb20gYnpybGliLnByb2dyZXNzIGlt
cG9ydCAoCisgICAgRG90c1Byb2dyZXNzQmFyLAorICAgIFByb2dyZXNzQmFyU3RhY2ssCisgICAg
VFRZUHJvZ3Jlc3NCYXIsCisgICAgKQogZnJvbSBienJsaWIudGVzdHMgaW1wb3J0ICgKKyAgICBU
ZXN0Q2FzZSwKICAgICBUZXN0VUlGYWN0b3J5LAogICAgIFN0cmluZ0lPV3JhcHBlciwKLSAgICBU
ZXN0Q2FzZSwKICAgICApCiBmcm9tIGJ6cmxpYi50ZXN0cy50ZXN0X3Byb2dyZXNzIGltcG9ydCBf
VFRZU3RyaW5nSU8KLWZyb20gYnpybGliLnVpIGltcG9ydCBTaWxlbnRVSUZhY3RvcnkKK2Zyb20g
YnpybGliLnVpIGltcG9ydCAoCisgICAgQ0xJVUlGYWN0b3J5LAorICAgIFNpbGVudFVJRmFjdG9y
eSwKKyAgICApCiBmcm9tIGJ6cmxpYi51aS50ZXh0IGltcG9ydCBUZXh0VUlGYWN0b3J5CiAKIApA
QCAtNjEsNiArNjgsOCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgdWkuZ2V0X3Bhc3N3b3JkKSkKICAgICAgICAgICAgICMgJzogJyBpcyBhcHBl
bmRlZCB0byBwcm9tcHQKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJzogJywgdWkuc3Rk
b3V0LmdldHZhbHVlKCkpCisgICAgICAgICAgICAjIHN0ZGluIHNob3VsZCBiZSBlbXB0eQorICAg
ICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnJywgdWkuc3RkaW4ucmVhZGxpbmUoKSkKICAgICAg
ICAgZmluYWxseToKICAgICAgICAgICAgIHBiLmZpbmlzaGVkKCkKIApAQCAtODQsNiArOTMsOCBA
QAogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh1J2Jhelx1MTIzNCcsIHBhc3N3b3JkLmRl
Y29kZSgndXRmOCcpKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh1J0hlbGxvIFx1MTIz
NCBzb21lXHUxMjM0OiAnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aS5zdGRvdXQu
Z2V0dmFsdWUoKS5kZWNvZGUoJ3V0ZjgnKSkKKyAgICAgICAgICAgICMgc3RkaW4gc2hvdWxkIGJl
IGVtcHR5CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCcnLCB1aS5zdGRpbi5yZWFkbGlu
ZSgpKQogICAgICAgICBmaW5hbGx5OgogICAgICAgICAgICAgcGIuZmluaXNoZWQoKQogCkBAIC05
OSw3ICsxMTAsOCBAQAogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChOb25lLCByZXN1bHQp
CiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCJ0XG4iLCBzdGRvdXQuZ2V0dmFsdWUoKSkK
ICAgICAgICAgICAgICMgU2luY2UgdGhlcmUgd2FzIG5vIHVwZGF0ZSgpIGNhbGwsIHRoZXJlIHNo
b3VsZCBiZSBubyBjbGVhcigpIGNhbGwKLSAgICAgICAgICAgIHNlbGYuZmFpbElmKHJlLnNlYXJj
aChyJ15cciB7MTAsfVxyJCcsIHN0ZGVyci5nZXR2YWx1ZSgpKSBpcyBub3QgTm9uZSwKKyAgICAg
ICAgICAgIHNlbGYuZmFpbElmKHJlLnNlYXJjaChyJ15cciB7MTAsfVxyJCcsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgc3RkZXJyLmdldHZhbHVlKCkpIGlzIG5vdCBOb25lLAog
ICAgICAgICAgICAgICAgICAgICAgICAgJ1dlIGNsZWFyZWQgdGhlIHN0ZGVyciB3aXRob3V0IGFu
eXRoaW5nIHRvIHB1dCB0aGVyZScpCiAgICAgICAgIGZpbmFsbHk6CiAgICAgICAgICAgICBwYi5m
aW5pc2hlZCgpCkBAIC0xNjEsMTggKzE3MywxOSBAQAogCiAgICAgZGVmIHRlc3RfdGV4dF9mYWN0
b3J5X3NldHRpbmdfcHJvZ3Jlc3NfYmFyKHNlbGYpOgogICAgICAgICAjIHdlIHNob3VsZCBiZSBh
YmxlIHRvIGNob29zZSB0aGUgcHJvZ3Jlc3MgYmFyIHR5cGUgdXNlZC4KLSAgICAgICAgZmFjdG9y
eSA9IGJ6cmxpYi51aS50ZXh0LlRleHRVSUZhY3RvcnkoCi0gICAgICAgICAgICBiYXJfdHlwZT1E
b3RzUHJvZ3Jlc3NCYXIpCisgICAgICAgIGZhY3RvcnkgPSBUZXh0VUlGYWN0b3J5KGJhcl90eXBl
PURvdHNQcm9ncmVzc0JhcikKICAgICAgICAgYmFyID0gZmFjdG9yeS5uZXN0ZWRfcHJvZ3Jlc3Nf
YmFyKCkKICAgICAgICAgYmFyLmZpbmlzaGVkKCkKICAgICAgICAgc2VsZi5hc3NlcnRJc0luc3Rh
bmNlKGJhciwgRG90c1Byb2dyZXNzQmFyKQogCiAgICAgZGVmIHRlc3RfY2xpX3N0ZGluX2lzX2Rl
ZmF1bHRfc3RkaW4oc2VsZik6Ci0gICAgICAgIGZhY3RvcnkgPSBienJsaWIudWkuQ0xJVUlGYWN0
b3J5KCkKKyAgICAgICAgZmFjdG9yeSA9IENMSVVJRmFjdG9yeSgpCiAgICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwoc3lzLnN0ZGluLCBmYWN0b3J5LnN0ZGluKQogCiAgICAgZGVmIGFzc2VydF9nZXRf
Ym9vbF9hY2NlcHRhbmNlX29mX3VzZXJfaW5wdXQoc2VsZiwgZmFjdG9yeSk6Ci0gICAgICAgIGZh
Y3Rvcnkuc3RkaW4gPSBTdHJpbmdJTygieVxueWVzIHdpdGggZ2FyYmFnZVxueWVzXG5uXG5ub3Qg
YW4gYW5zd2VyXG5ub1xuZm9vXG4iKQorICAgICAgICBmYWN0b3J5LnN0ZGluID0gU3RyaW5nSU8o
InlcbnllcyB3aXRoIGdhcmJhZ2VcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICJ5ZXNcbm5cbm5vdCBhbiBhbnN3ZXJcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICJub1xuZm9vXG4iKQogICAgICAgICBmYWN0b3J5LnN0ZG91dCA9IFN0cmluZ0lPKCkKICAg
ICAgICAgIyB0aGVyZSBpcyBubyBvdXRwdXQgZnJvbSB0aGUgYmFzZSBmYWN0b3J5CiAgICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwoVHJ1ZSwgZmFjdG9yeS5nZXRfYm9vbGVhbigiIikpCkBAIC0xODAs
NDIgKzE5Myw0NyBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEZhbHNlLCBmYWN0b3J5Lmdl
dF9ib29sZWFuKCIiKSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChGYWxzZSwgZmFjdG9yeS5n
ZXRfYm9vbGVhbigiIikpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoImZvb1xuIiwgZmFjdG9y
eS5zdGRpbi5yZWFkKCkpCisgICAgICAgICMgc3RkaW4gc2hvdWxkIGJlIGVtcHR5CisgICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwoJycsIGZhY3Rvcnkuc3RkaW4ucmVhZGxpbmUoKSkKIAogICAgIGRl
ZiB0ZXN0X3NpbGVudF91aV9nZXRib29sKHNlbGYpOgotICAgICAgICBmYWN0b3J5ID0gYnpybGli
LnVpLlNpbGVudFVJRmFjdG9yeSgpCisgICAgICAgIGZhY3RvcnkgPSBTaWxlbnRVSUZhY3Rvcnko
KQogICAgICAgICBzZWxmLmFzc2VydF9nZXRfYm9vbF9hY2NlcHRhbmNlX29mX3VzZXJfaW5wdXQo
ZmFjdG9yeSkKIAogICAgIGRlZiB0ZXN0X3NpbGVudF9mYWN0b3J5X3Byb21wdHNfc2lsZW50bHko
c2VsZik6Ci0gICAgICAgIGZhY3RvcnkgPSBienJsaWIudWkuU2lsZW50VUlGYWN0b3J5KCkKKyAg
ICAgICAgZmFjdG9yeSA9IFNpbGVudFVJRmFjdG9yeSgpCiAgICAgICAgIHN0ZG91dCA9IFN0cmlu
Z0lPKCkKICAgICAgICAgZmFjdG9yeS5zdGRpbiA9IFN0cmluZ0lPKCJ5XG4iKQotICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKAotICAgICAgICAgICAgVHJ1ZSwKLSAgICAgICAgICAgIHNlbGYuYXBw
bHlfcmVkaXJlY3RlZCgKLSAgICAgICAgICAgICAgICBOb25lLCBzdGRvdXQsIHN0ZG91dCwgZmFj
dG9yeS5nZXRfYm9vbGVhbiwgImZvbyIpCi0gICAgICAgICAgICApCisgICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwoVHJ1ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmFwcGx5X3JlZGly
ZWN0ZWQoTm9uZSwgc3Rkb3V0LCBzdGRvdXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGZhY3RvcnkuZ2V0X2Jvb2xlYW4sICJmb28iKSkKICAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbCgiIiwgc3Rkb3V0LmdldHZhbHVlKCkpCi0gICAgICAgIAorICAgICAg
ICAjIHN0ZGluIHNob3VsZCBiZSBlbXB0eQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCcnLCBm
YWN0b3J5LnN0ZGluLnJlYWRsaW5lKCkpCisKICAgICBkZWYgdGVzdF90ZXh0X3VpX2dldGJvb2wo
c2VsZik6Ci0gICAgICAgIGZhY3RvcnkgPSBienJsaWIudWkudGV4dC5UZXh0VUlGYWN0b3J5KCkK
KyAgICAgICAgZmFjdG9yeSA9IFRleHRVSUZhY3RvcnkoKQogICAgICAgICBzZWxmLmFzc2VydF9n
ZXRfYm9vbF9hY2NlcHRhbmNlX29mX3VzZXJfaW5wdXQoZmFjdG9yeSkKIAogICAgIGRlZiB0ZXN0
X3RleHRfZmFjdG9yeV9wcm9tcHRzX2FuZF9jbGVhcnMoc2VsZik6CiAgICAgICAgICMgYSBnZXRf
Ym9vbGVhbiBjYWxsIHNob3VsZCBjbGVhciB0aGUgcGIgYmVmb3JlIHByb21wdGluZwotICAgICAg
ICBmYWN0b3J5ID0gYnpybGliLnVpLnRleHQuVGV4dFVJRmFjdG9yeShiYXJfdHlwZT1Eb3RzUHJv
Z3Jlc3NCYXIpCisgICAgICAgIGZhY3RvcnkgPSBUZXh0VUlGYWN0b3J5KGJhcl90eXBlPURvdHNQ
cm9ncmVzc0JhcikKICAgICAgICAgZmFjdG9yeS5zdGRvdXQgPSBfVFRZU3RyaW5nSU8oKQogICAg
ICAgICBmYWN0b3J5LnN0ZGluID0gU3RyaW5nSU8oInlhZGFcbnlcbiIpCi0gICAgICAgIHBiID0g
c2VsZi5hcHBseV9yZWRpcmVjdGVkKAotICAgICAgICAgICAgZmFjdG9yeS5zdGRpbiwgZmFjdG9y
eS5zdGRvdXQsIGZhY3Rvcnkuc3Rkb3V0LCBmYWN0b3J5Lm5lc3RlZF9wcm9ncmVzc19iYXIpCisg
ICAgICAgIHBiID0gc2VsZi5hcHBseV9yZWRpcmVjdGVkKGZhY3Rvcnkuc3RkaW4sIGZhY3Rvcnku
c3Rkb3V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWN0b3J5LnN0ZG91
dCwgZmFjdG9yeS5uZXN0ZWRfcHJvZ3Jlc3NfYmFyKQogICAgICAgICBwYi5zdGFydF90aW1lID0g
Tm9uZQotICAgICAgICBzZWxmLmFwcGx5X3JlZGlyZWN0ZWQoCi0gICAgICAgICAgICBmYWN0b3J5
LnN0ZGluLCBmYWN0b3J5LnN0ZG91dCwgZmFjdG9yeS5zdGRvdXQsIHBiLnVwZGF0ZSwgImZvbyIs
IDAsIDEpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCi0gICAgICAgICAgICBUcnVlLAotICAg
ICAgICAgICAgc2VsZi5hcHBseV9yZWRpcmVjdGVkKAotICAgICAgICAgICAgICAgIE5vbmUsIGZh
Y3Rvcnkuc3Rkb3V0LCBmYWN0b3J5LnN0ZG91dCwgZmFjdG9yeS5nZXRfYm9vbGVhbiwgIndoYXQg
ZG8geW91IHdhbnQiKQotICAgICAgICAgICAgKQorICAgICAgICBzZWxmLmFwcGx5X3JlZGlyZWN0
ZWQoZmFjdG9yeS5zdGRpbiwgZmFjdG9yeS5zdGRvdXQsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBmYWN0b3J5LnN0ZG91dCwgcGIudXBkYXRlLCAiZm9vIiwgMCwgMSkKKyAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbChUcnVlLAorICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuYXBw
bHlfcmVkaXJlY3RlZChOb25lLCBmYWN0b3J5LnN0ZG91dCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFjdG9yeS5zdGRvdXQsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhY3RvcnkuZ2V0X2Jvb2xlYW4sCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ3aGF0IGRvIHlv
dSB3YW50IikpCiAgICAgICAgIG91dHB1dCA9IGZhY3Rvcnkuc3Rkb3V0LmdldHZhbHVlKCkKICAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbCgiZm9vOiAuXG4iCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgIndoYXQgZG8geW91IHdhbnQ/IFt5L25dOiB3aGF0IGRvIHlvdSB3YW50PyBbeS9uXTogIiwK
ICAgICAgICAgICAgICAgICAgICAgICAgICBmYWN0b3J5LnN0ZG91dC5nZXR2YWx1ZSgpKQorICAg
ICAgICAjIHN0ZGluIHNob3VsZCBiZSBlbXB0eQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCcn
LCBmYWN0b3J5LnN0ZGluLnJlYWRsaW5lKCkpCisKCg==

=== modified file bzrlib/tests/test_urlutils.py // last-changed:andrew.bennetts
... @canonical.com-20070426061907-ipn74twdz1gmz52i // encoding:base64
LS0tIGJ6cmxpYi90ZXN0cy90ZXN0X3VybHV0aWxzLnB5CisrKyBienJsaWIvdGVzdHMvdGVzdF91
cmx1dGlscy5weQpAQCAtMTE1LDYgKzExNSwxMiBAQAogICAgICAgICBlcSgnaHR0cDovL2hvc3Qv
YWIvJUMyJUI1LyVDMiVCNScsCiAgICAgICAgICAgICBub3JtYWxpemVfdXJsKHUnaHR0cDovL2hv
c3QvYWIvJUMyJUI1L1x4YjUnKSkKIAorICAgICAgICAjIFVuZXNjYXBlIGNoYXJhY3RlcnMgdGhh
dCBkb24ndCBuZWVkIHRvIGJlIGVzY2FwZWQKKyAgICAgICAgZXEoJ2h0dHA6Ly9ob3N0L35ib2Il
MjUyNS0uXycsCisgICAgICAgICAgICAgICAgbm9ybWFsaXplX3VybCgnaHR0cDovL2hvc3QvJTdF
Ym9iJTI1MjUlMkQlMkUlNUYnKSkKKyAgICAgICAgZXEoJ2h0dHA6Ly9ob3N0L35ib2IlMjUyNS0u
XycsCisgICAgICAgICAgICAgICAgbm9ybWFsaXplX3VybCh1J2h0dHA6Ly9ob3N0LyU3RWJvYiUy
NTI1JTJEJTJFJTVGJykpCisKICAgICAgICAgIyBOb3JtYWxpemUgdmVyaWZpZXMgVVJMcyB3aGVu
IHRoZXkgYXJlIG5vdCB1bmljb2RlCiAgICAgICAgICMgKGluZGljYXRpbmcgdGhleSBkaWQgbm90
IGNvbWUgZnJvbSB0aGUgdXNlcikKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoSW52YWxpZFVS
TCwgbm9ybWFsaXplX3VybCwgJ2h0dHA6Ly9ob3N0L1x4YjUnKQoK

=== modified file bzrlib/tests/test_workingtree_4.py // last-changed:john@arbas
... h-meinel.com-20070426225601-ae4qfcb8bzcfomny // encoding:base64
LS0tIGJ6cmxpYi90ZXN0cy90ZXN0X3dvcmtpbmd0cmVlXzQucHkKKysrIGJ6cmxpYi90ZXN0cy90
ZXN0X3dvcmtpbmd0cmVlXzQucHkKQEAgLTIzLDYgKzIzLDggQEAKICAgICBienJkaXIsCiAgICAg
ZGlyc3RhdGUsCiAgICAgZXJyb3JzLAorICAgIGludmVudG9yeSwKKyAgICBvc3V0aWxzLAogICAg
IHdvcmtpbmd0cmVlXzQsCiAgICAgKQogZnJvbSBienJsaWIubG9ja2RpciBpbXBvcnQgTG9ja0Rp
cgpAQCAtNDY0LDYgKzQ2NiwxMyBAQAogICAgICAgICB3dC5jb21taXQoJ2FnYWluJykKICAgICAg
ICAgdmFsaWRhdGUoKQogCisgICAgZGVmIHRlc3RfZGVmYXVsdF9yb290X2lkKHNlbGYpOgorICAg
ICAgICB0cmVlID0gc2VsZi5tYWtlX2JyYW5jaF9hbmRfdHJlZSgndGFnJywgZm9ybWF0PSdkaXJz
dGF0ZS10YWdzJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpbnZlbnRvcnkuUk9PVF9JRCwg
dHJlZS5nZXRfcm9vdF9pZCgpKQorICAgICAgICB0cmVlID0gc2VsZi5tYWtlX2JyYW5jaF9hbmRf
dHJlZSgnc3VidHJlZScsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGZvcm1hdD0nZGlyc3RhdGUtd2l0aC1zdWJ0cmVlJykKKyAgICAgICAgc2VsZi5hc3NlcnROb3RF
cXVhbChpbnZlbnRvcnkuUk9PVF9JRCwgdHJlZS5nZXRfcm9vdF9pZCgpKQorCiAgICAgZGVmIHRl
c3Rfbm9uX3N1YnRyZWVfd2l0aF9uZXN0ZWRfdHJlZXMoc2VsZik6CiAgICAgICAgICMgcHJpb3Ig
dG8gZGlyc3RhdGUsIHN0L2RpZmYvY29tbWl0IGlnbm9yZWQgbmVzdGVkIHRyZWVzLgogICAgICAg
ICAjIGRpcnN0YXRlLCBhcyBvcHBvc2VkIHRvIGRpcnN0YXRlLXdpdGgtc3VidHJlZSwgc2hvdWxk
CkBAIC01MTUsMyArNTI0LDUzIEBACiAgICAgICAgICMgaGF2aW5nIGNoZWNrZWQgdGhpcyBpcyBv
biwgdGhlIHRyZWUgaW50ZXJmYWNlLCBhbmQgaW50ZXJ0cmVlCiAgICAgICAgICMgaW50ZXJmYWNl
IHRlc3RzLCB3aWxsIHByb2NlZWQgdG8gdGVzdCB0aGUgc3VidHJlZSBzdXBwb3J0IG9mCiAgICAg
ICAgICMgd29ya2luZ3RyZWVfNC4KKworICAgIGRlZiB0ZXN0X2l0ZXJfY2hhbmdlc19pZ25vcmVz
X3VudmVyc2lvbmVkX2RpcnMoc2VsZik6CisgICAgICAgICIiIl9pdGVyX2NoYW5nZXMgc2hvdWxk
IG5vdCBkZXNjZW5kIGludG8gdW52ZXJzaW9uZWQgZGlyZWN0b3JpZXMuIiIiCisgICAgICAgIHRy
ZWUgPSBzZWxmLm1ha2VfYnJhbmNoX2FuZF90cmVlKCcuJywgZm9ybWF0PSdkaXJzdGF0ZScpCisg
ICAgICAgICMgV2UgaGF2ZSBhbiB1bnZlcnNpb25lZCBkaXJlY3RvcnkgYXQgdGhlIHJvb3QsIGEg
dmVyc2lvbmVkIG9uZSB3aXRoCisgICAgICAgICMgb3RoZXIgdmVyc2lvbmVkIGZpbGVzIGFuZCBh
biB1bnZlcnNpb25lZCBkaXJlY3RvcnksIGFuZCBhbm90aGVyCisgICAgICAgICMgdmVyc2lvbmVk
IGRpciB3aXRoIG5vdGhpbmcgYnV0IGFuIHVudmVyc2lvbmVkIGRpcmVjdG9yeS4KKyAgICAgICAg
c2VsZi5idWlsZF90cmVlKFsndW52ZXJzaW9uZWQvJywKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAndW52ZXJzaW9uZWQvYScsCisgICAgICAgICAgICAgICAgICAgICAgICAgJ3VudmVyc2lvbmVk
L2IvJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAndmVyc2lvbmVkLycsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgJ3ZlcnNpb25lZC91bnZlcnNpb25lZC8nLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICd2ZXJzaW9uZWQvdW52ZXJzaW9uZWQvYScsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgJ3ZlcnNpb25lZC91bnZlcnNpb25lZC9iLycsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgJ3ZlcnNpb25lZDIvJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAndmVyc2lvbmVkMi9h
JywKKyAgICAgICAgICAgICAgICAgICAgICAgICAndmVyc2lvbmVkMi91bnZlcnNpb25lZC8nLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICd2ZXJzaW9uZWQyL3VudmVyc2lvbmVkL2EnLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICd2ZXJzaW9uZWQyL3VudmVyc2lvbmVkL2IvJywKKyAgICAg
ICAgICAgICAgICAgICAgICAgIF0pCisgICAgICAgIHRyZWUuYWRkKFsndmVyc2lvbmVkJywgJ3Zl
cnNpb25lZDInLCAndmVyc2lvbmVkMi9hJ10pCisgICAgICAgIHRyZWUuY29tbWl0KCdvbmUnLCBy
ZXZfaWQ9J3Jldi0xJykKKyAgICAgICAgIyBUcmFwIG9zdXRpbHMuX3dhbGtkaXJzX3V0ZjggdG8g
c3B5IG9uIHdoYXQgZGlycyBoYXZlIGJlZW4gYWNjZXNzZWQuCisgICAgICAgIHJldHVybmVkID0g
W10KKyAgICAgICAgb3JpZ193YWxrZGlycyA9IG9zdXRpbHMuX3dhbGtkaXJzX3V0ZjgKKyAgICAg
ICAgZGVmIHJlc2V0KCk6CisgICAgICAgICAgICBvc3V0aWxzLl93YWxrZGlyc191dGY4ID0gb3Jp
Z193YWxrZGlycworICAgICAgICBzZWxmLmFkZENsZWFudXAocmVzZXQpCisgICAgICAgIGRlZiB3
YWxrZGlyc19zcHkoKmFyZ3MsICoqa3dhcmdzKToKKyAgICAgICAgICAgIGZvciB2YWwgaW4gb3Jp
Z193YWxrZGlycygqYXJncywgKiprd2FyZ3MpOgorICAgICAgICAgICAgICAgIHJldHVybmVkLmFw
cGVuZCh2YWxbMF1bMF0pCisgICAgICAgICAgICAgICAgeWllbGQgdmFsCisgICAgICAgIG9zdXRp
bHMuX3dhbGtkaXJzX3V0ZjggPSB3YWxrZGlyc19zcHkKKworICAgICAgICBiYXNpcyA9IHRyZWUu
YmFzaXNfdHJlZSgpCisgICAgICAgIHRyZWUubG9ja19yZWFkKCkKKyAgICAgICAgc2VsZi5hZGRD
bGVhbnVwKHRyZWUudW5sb2NrKQorICAgICAgICBiYXNpcy5sb2NrX3JlYWQoKQorICAgICAgICBz
ZWxmLmFkZENsZWFudXAoYmFzaXMudW5sb2NrKQorICAgICAgICBjaGFuZ2VzID0gW2NbMV0gZm9y
IGMgaW4KKyAgICAgICAgICAgICAgICAgICB0cmVlLl9pdGVyX2NoYW5nZXMoYmFzaXMsIHdhbnRf
dW52ZXJzaW9uZWQ9VHJ1ZSldCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoWyhOb25lLCAndW52
ZXJzaW9uZWQnKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgKE5vbmUsICd2ZXJzaW9uZWQv
dW52ZXJzaW9uZWQnKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgKE5vbmUsICd2ZXJzaW9u
ZWQyL3VudmVyc2lvbmVkJyksCisgICAgICAgICAgICAgICAgICAgICAgICAgXSwgY2hhbmdlcykK
KyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChbJycsICd2ZXJzaW9uZWQnLCAndmVyc2lvbmVkMidd
LCByZXR1cm5lZCkKKyAgICAgICAgZGVsIHJldHVybmVkWzpdICMgcmVzZXQKKyAgICAgICAgY2hh
bmdlcyA9IFtjWzFdIGZvciBjIGluIHRyZWUuX2l0ZXJfY2hhbmdlcyhiYXNpcyldCisgICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwoW10sIGNoYW5nZXMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
WycnLCAndmVyc2lvbmVkJywgJ3ZlcnNpb25lZDInXSwgcmV0dXJuZWQpCgo=

=== modified file bzrlib/tests/test_wsgi.py // last-changed:andrew.bennetts@can
... onical.com-20070426060131-zaumabdzwl8nrlux // encoding:base64
LS0tIGJ6cmxpYi90ZXN0cy90ZXN0X3dzZ2kucHkKKysrIGJ6cmxpYi90ZXN0cy90ZXN0X3dzZ2ku
cHkKQEAgLTE5LDYgKzE5LDcgQEAKIGZyb20gY1N0cmluZ0lPIGltcG9ydCBTdHJpbmdJTwogCiBm
cm9tIGJ6cmxpYiBpbXBvcnQgdGVzdHMKK2Zyb20gYnpybGliLnNtYXJ0IGltcG9ydCBwcm90b2Nv
bAogZnJvbSBienJsaWIudHJhbnNwb3J0Lmh0dHAgaW1wb3J0IHdzZ2kKIGZyb20gYnpybGliLnRy
YW5zcG9ydCBpbXBvcnQgY2hyb290LCBtZW1vcnkKIApAQCAtODIsNiArODMsMTIgQEAKICAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbCgnNDA1IE1ldGhvZCBub3QgYWxsb3dlZCcsIHNlbGYuc3RhdHVz
KQogICAgICAgICBzZWxmLmFzc2VydFRydWUoKCdBbGxvdycsICdQT1NUJykgaW4gc2VsZi5oZWFk
ZXJzKQogICAgICAgICAKKyAgICBkZWYgX2Zha2VfbWFrZV9yZXF1ZXN0KHNlbGYsIHRyYW5zcG9y
dCwgd3JpdGVfZnVuYywgYnl0ZXMpOgorICAgICAgICByZXF1ZXN0ID0gRmFrZVJlcXVlc3QodHJh
bnNwb3J0LCB3cml0ZV9mdW5jKQorICAgICAgICByZXF1ZXN0LmFjY2VwdF9ieXRlcyhieXRlcykK
KyAgICAgICAgc2VsZi5yZXF1ZXN0ID0gcmVxdWVzdAorICAgICAgICByZXR1cm4gcmVxdWVzdAor
ICAgIAogICAgIGRlZiB0ZXN0X3NtYXJ0X3dzZ2lfYXBwX3VzZXNfZ2l2ZW5fcmVscGF0aChzZWxm
KToKICAgICAgICAgIyBUaGUgU21hcnRXU0dJQXBwIHNob3VsZCB1c2UgdGhlICJienJsaWIucmVs
cGF0aCIgZmllbGQgZnJvbSB0aGUKICAgICAgICAgIyBXU0dJIGVudmlyb24gdG8gY2xvbmUgZnJv
bSBpdHMgYmFja2luZyB0cmFuc3BvcnQgdG8gZ2V0IGEgc3BlY2lmaWMKQEAgLTg5LDExICs5Niw3
IEBACiAgICAgICAgIHRyYW5zcG9ydCA9IEZha2VUcmFuc3BvcnQoKQogICAgICAgICB3c2dpX2Fw
cCA9IHdzZ2kuU21hcnRXU0dJQXBwKHRyYW5zcG9ydCkKICAgICAgICAgd3NnaV9hcHAuYmFja2lu
Z190cmFuc3BvcnQgPSB0cmFuc3BvcnQKLSAgICAgICAgZGVmIG1ha2VfcmVxdWVzdCh0cmFuc3Bv
cnQsIHdyaXRlX2Z1bmMpOgotICAgICAgICAgICAgcmVxdWVzdCA9IEZha2VSZXF1ZXN0KHRyYW5z
cG9ydCwgd3JpdGVfZnVuYykKLSAgICAgICAgICAgIHNlbGYucmVxdWVzdCA9IHJlcXVlc3QKLSAg
ICAgICAgICAgIHJldHVybiByZXF1ZXN0Ci0gICAgICAgIHdzZ2lfYXBwLm1ha2VfcmVxdWVzdCA9
IG1ha2VfcmVxdWVzdAorICAgICAgICB3c2dpX2FwcC5tYWtlX3JlcXVlc3QgPSBzZWxmLl9mYWtl
X21ha2VfcmVxdWVzdAogICAgICAgICBmYWtlX2lucHV0ID0gU3RyaW5nSU8oJ2Zha2UgcmVxdWVz
dCcpCiAgICAgICAgIGVudmlyb24gPSBzZWxmLmJ1aWxkX2Vudmlyb24oewogICAgICAgICAgICAg
J1JFUVVFU1RfTUVUSE9EJzogJ1BPU1QnLApAQCAtMTEyLDExICsxMTUsNyBAQAogICAgICAgICB0
cmFuc3BvcnQgPSBtZW1vcnkuTWVtb3J5VHJhbnNwb3J0KCkKICAgICAgICAgdHJhbnNwb3J0LnB1
dF9ieXRlcygnZm9vJywgJ3NvbWUgYnl0ZXMnKQogICAgICAgICB3c2dpX2FwcCA9IHdzZ2kuU21h
cnRXU0dJQXBwKHRyYW5zcG9ydCkKLSAgICAgICAgZGVmIG1ha2VfcmVxdWVzdCh0cmFuc3BvcnQs
IHdyaXRlX2Z1bmMpOgotICAgICAgICAgICAgcmVxdWVzdCA9IEZha2VSZXF1ZXN0KHRyYW5zcG9y
dCwgd3JpdGVfZnVuYykKLSAgICAgICAgICAgIHNlbGYucmVxdWVzdCA9IHJlcXVlc3QKLSAgICAg
ICAgICAgIHJldHVybiByZXF1ZXN0Ci0gICAgICAgIHdzZ2lfYXBwLm1ha2VfcmVxdWVzdCA9IG1h
a2VfcmVxdWVzdAorICAgICAgICB3c2dpX2FwcC5tYWtlX3JlcXVlc3QgPSBzZWxmLl9mYWtlX21h
a2VfcmVxdWVzdAogICAgICAgICBmYWtlX2lucHV0ID0gU3RyaW5nSU8oJ2Zha2UgcmVxdWVzdCcp
CiAgICAgICAgIGVudmlyb24gPSBzZWxmLmJ1aWxkX2Vudmlyb24oewogICAgICAgICAgICAgJ1JF
UVVFU1RfTUVUSE9EJzogJ1BPU1QnLApAQCAtMTg2LDggKzE4NSw5IEBACiAgICAgZGVmIHRlc3Rf
aW5jb21wbGV0ZV9yZXF1ZXN0KHNlbGYpOgogICAgICAgICB0cmFuc3BvcnQgPSBGYWtlVHJhbnNw
b3J0KCkKICAgICAgICAgd3NnaV9hcHAgPSB3c2dpLlNtYXJ0V1NHSUFwcCh0cmFuc3BvcnQpCi0g
ICAgICAgIGRlZiBtYWtlX3JlcXVlc3QodHJhbnNwb3J0LCB3cml0ZV9mdW5jKToKKyAgICAgICAg
ZGVmIG1ha2VfcmVxdWVzdCh0cmFuc3BvcnQsIHdyaXRlX2Z1bmMsIGJ5dGVzKToKICAgICAgICAg
ICAgIHJlcXVlc3QgPSBJbmNvbXBsZXRlUmVxdWVzdCh0cmFuc3BvcnQsIHdyaXRlX2Z1bmMpCisg
ICAgICAgICAgICByZXF1ZXN0LmFjY2VwdF9ieXRlcyhieXRlcykKICAgICAgICAgICAgIHNlbGYu
cmVxdWVzdCA9IHJlcXVlc3QKICAgICAgICAgICAgIHJldHVybiByZXF1ZXN0CiAgICAgICAgIHdz
Z2lfYXBwLm1ha2VfcmVxdWVzdCA9IG1ha2VfcmVxdWVzdApAQCAtMjA0LDYgKzIwNCw0MyBAQAog
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCcyMDAgT0snLCBzZWxmLnN0YXR1cykKICAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbCgnZXJyb3JceDAxaW5jb21wbGV0ZSByZXF1ZXN0XG4nLCByZXNwb25z
ZSkKIAorICAgIGRlZiB0ZXN0X3Byb3RvY29sX3ZlcnNpb25fZGV0ZWN0aW9uX29uZShzZWxmKToK
KyAgICAgICAgIyBTbWFydFdTR0lBcHAgZGV0ZWN0cyByZXF1ZXN0cyB0aGF0IGRvbid0IHN0YXJ0
IHdpdGgKKyAgICAgICAgIyBSRVFVRVNUX1ZFUlNJT05fVFdPIGFzIHZlcnNpb24gb25lLgorICAg
ICAgICB0cmFuc3BvcnQgPSBtZW1vcnkuTWVtb3J5VHJhbnNwb3J0KCkKKyAgICAgICAgd3NnaV9h
cHAgPSB3c2dpLlNtYXJ0V1NHSUFwcCh0cmFuc3BvcnQpCisgICAgICAgIGZha2VfaW5wdXQgPSBT
dHJpbmdJTygnaGVsbG9cbicpCisgICAgICAgIGVudmlyb24gPSBzZWxmLmJ1aWxkX2Vudmlyb24o
eworICAgICAgICAgICAgJ1JFUVVFU1RfTUVUSE9EJzogJ1BPU1QnLAorICAgICAgICAgICAgJ0NP
TlRFTlRfTEVOR1RIJzogbGVuKGZha2VfaW5wdXQuZ2V0dmFsdWUoKSksCisgICAgICAgICAgICAn
d3NnaS5pbnB1dCc6IGZha2VfaW5wdXQsCisgICAgICAgICAgICAnYnpybGliLnJlbHBhdGgnOiAn
Zm9vJywKKyAgICAgICAgfSkKKyAgICAgICAgaXRlcmFibGUgPSB3c2dpX2FwcChlbnZpcm9uLCBz
ZWxmLnN0YXJ0X3Jlc3BvbnNlKQorICAgICAgICByZXNwb25zZSA9IHNlbGYucmVhZF9yZXNwb25z
ZShpdGVyYWJsZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnMjAwIE9LJywgc2VsZi5zdGF0
dXMpCisgICAgICAgICMgRXhwZWN0IGEgdmVyc2lvbiAxLWVuY29kZWQgcmVzcG9uc2UuCisgICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ29rXHgwMTJcbicsIHJlc3BvbnNlKQorCisgICAgZGVmIHRl
c3RfcHJvdG9jb2xfdmVyc2lvbl9kZXRlY3Rpb25fdHdvKHNlbGYpOgorICAgICAgICAjIFNtYXJ0
V1NHSUFwcCBkZXRlY3RzIHJlcXVlc3RzIHRoYXQgc3RhcnQgd2l0aCBSRVFVRVNUX1ZFUlNJT05f
VFdPCisgICAgICAgICMgYXMgdmVyc2lvbiB0d28uCisgICAgICAgIHRyYW5zcG9ydCA9IG1lbW9y
eS5NZW1vcnlUcmFuc3BvcnQoKQorICAgICAgICB3c2dpX2FwcCA9IHdzZ2kuU21hcnRXU0dJQXBw
KHRyYW5zcG9ydCkKKyAgICAgICAgZmFrZV9pbnB1dCA9IFN0cmluZ0lPKHByb3RvY29sLlJFUVVF
U1RfVkVSU0lPTl9UV08gKyAnaGVsbG9cbicpCisgICAgICAgIGVudmlyb24gPSBzZWxmLmJ1aWxk
X2Vudmlyb24oeworICAgICAgICAgICAgJ1JFUVVFU1RfTUVUSE9EJzogJ1BPU1QnLAorICAgICAg
ICAgICAgJ0NPTlRFTlRfTEVOR1RIJzogbGVuKGZha2VfaW5wdXQuZ2V0dmFsdWUoKSksCisgICAg
ICAgICAgICAnd3NnaS5pbnB1dCc6IGZha2VfaW5wdXQsCisgICAgICAgICAgICAnYnpybGliLnJl
bHBhdGgnOiAnZm9vJywKKyAgICAgICAgfSkKKyAgICAgICAgaXRlcmFibGUgPSB3c2dpX2FwcChl
bnZpcm9uLCBzZWxmLnN0YXJ0X3Jlc3BvbnNlKQorICAgICAgICByZXNwb25zZSA9IHNlbGYucmVh
ZF9yZXNwb25zZShpdGVyYWJsZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnMjAwIE9LJywg
c2VsZi5zdGF0dXMpCisgICAgICAgICMgRXhwZWN0IGEgdmVyc2lvbiAyLWVuY29kZWQgcmVzcG9u
c2UuCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBwcm90b2NvbC5SRVNQ
T05TRV9WRVJTSU9OX1RXTyArICdzdWNjZXNzXG5va1x4MDEyXG4nLCByZXNwb25zZSkKKwogCiBj
bGFzcyBGYWtlUmVxdWVzdChvYmplY3QpOgogICAgIAoK

=== modified file bzrlib/tests/tree_implementations/__init__.py // last-changed
... :bialix@ukr.net-20070416204259-tyi3ptqe80gpkwcl // encoding:base64
LS0tIGJ6cmxpYi90ZXN0cy90cmVlX2ltcGxlbWVudGF0aW9ucy9fX2luaXRfXy5weQorKysgYnpy
bGliL3Rlc3RzL3RyZWVfaW1wbGVtZW50YXRpb25zL19faW5pdF9fLnB5CkBAIC0xODAsMTYgKzE4
MCwzMSBAQAogCiAgICAgZGVmIGdldF90cmVlX3dpdGhfc3ViZGlyc19hbmRfYWxsX2NvbnRlbnRf
dHlwZXMoc2VsZik6CiAgICAgICAgICIiIlJldHVybiBhIHRlc3QgdHJlZSB3aXRoIHN1YmRpcnMg
YW5kIGFsbCBjb250ZW50IHR5cGVzLgorICAgICAgICBTZWUgZ2V0X3RyZWVfd2l0aF9zdWJkaXJz
X2FuZF9hbGxfc3VwcG9ydGVkX2NvbnRlbnRfdHlwZXMgZm9yIGRldGFpbHMuCisgICAgICAgICIi
IgorICAgICAgICByZXR1cm4gc2VsZi5nZXRfdHJlZV93aXRoX3N1YmRpcnNfYW5kX2FsbF9zdXBw
b3J0ZWRfY29udGVudF90eXBlcyhUcnVlKQorCisgICAgZGVmIGdldF90cmVlX3dpdGhfc3ViZGly
c19hbmRfYWxsX3N1cHBvcnRlZF9jb250ZW50X3R5cGVzKHNlbGYsIHN5bWxpbmtzKToKKyAgICAg
ICAgIiIiUmV0dXJuIGEgdGVzdCB0cmVlIHdpdGggc3ViZGlycyBhbmQgYWxsIHN1cHBvcnRlZCBj
b250ZW50IHR5cGVzLgorICAgICAgICBTb21lIGNvbnRlbnQgdHlwZXMgbWF5IG5vdCBiZSBjcmVh
dGVkIG9uIHNvbWUgcGxhdGZvcm1zCisgICAgICAgIChsaWtlIHN5bWxpbmtzIG9uIG5hdGl2ZSB3
aW4zMikKKworICAgICAgICA6cGFyYW0gIHN5bWxpbmtzOiAgIGNvbnRyb2wgaXMgc3ltbGluayBz
aG91bGQgYmUgY3JlYXRlZCBpbiB0aGUgdHJlZS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBOb3RlOiBpZiB5b3Ugd2lzaCB0byBhdXRvbWF0aWNhbGx5IHNldCB0aGlzCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgcGFyYW1ldGVycyBkZXBlbmRpbmcgb24gdW5kZXJseWluZyBzeXN0
ZW0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxlYXNlIHVzZSB2YWx1ZSByZXR1cm5l
ZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ5IGJ6cmxpYi5vc3V0aWxzLmhhc19zeW1s
aW5rcygpIGZ1bmN0aW9uLgogCiAgICAgICAgIFRoZSByZXR1cm5lZCB0cmVlIGhhcyB0aGUgZm9s
bG93aW5nIGludmVudG9yeToKICAgICAgICAgICAgIFsoJycsIGludmVudG9yeS5ST09UX0lEKSwK
ICAgICAgICAgICAgICAoJzBmaWxlJywgJzJmaWxlJyksCiAgICAgICAgICAgICAgKCcxdG9wLWRp
cicsICcxdG9wLWRpcicpLAogICAgICAgICAgICAgICh1JzJ1dGZcdTEyMzRmaWxlJywgdScwdXRm
XHUxMjM0ZmlsZScpLAotICAgICAgICAgICAgICgnc3ltbGluaycsICdzeW1saW5rJyksCisgICAg
ICAgICAgICAgKCdzeW1saW5rJywgJ3N5bWxpbmsnKSwgICAgICAgICAgICAjIG9ubHkgaWYgc3lt
bGlua3MgYXJnIGlzIFRydWUKICAgICAgICAgICAgICAoJzF0b3AtZGlyLzBmaWxlLWluLTF0b3Bk
aXInLCAnMWZpbGUtaW4tMXRvcGRpcicpLAogICAgICAgICAgICAgICgnMXRvcC1kaXIvMWRpci1p
bi0xdG9wZGlyJywgJzBkaXItaW4tMXRvcGRpcicpXQotICAgICAgICB3aGVyZSBlYWNoIGNvbXBv
bmVudCBoYXMgdGhlIHR5cGUgb2YgaXRzIG5hbWUgLSBpLmUuICcxZmlsZS4uJyBpcyBhZmlsZS4K
KyAgICAgICAgd2hlcmUgZWFjaCBjb21wb25lbnQgaGFzIHRoZSB0eXBlIG9mIGl0cyBuYW1lIC0K
KyAgICAgICAgaS5lLiAnMWZpbGUuLicgaXMgYWZpbGUuCiAKICAgICAgICAgbm90ZSB0aGF0IHRo
ZSBvcmRlciBvZiB0aGUgcGF0aHMgYW5kIGZpbGVpZHMgaXMgZGVsaWJlcmF0ZWx5IAogICAgICAg
ICBtaXNtYXRjaGVkIHRvIGVuc3VyZSB0aGF0IHRoZSByZXN1bHQgb3JkZXIgaXMgcGF0aCBiYXNl
ZC4KQEAgLTIxNSw5ICsyMzAsMTAgQEAKICAgICAgICAgICAgICAgICAnVGhpcyBwbGF0Zm9ybSBk
b2VzIG5vdCBzdXBwb3J0IHVuaWNvZGUgZmlsZSBwYXRocy4nKQogICAgICAgICB0cmVlLmFkZChw
YXRocywgaWRzKQogICAgICAgICB0dCA9IHRyYW5zZm9ybS5UcmVlVHJhbnNmb3JtKHRyZWUpCi0g
ICAgICAgIHJvb3RfdHJhbnNhY3Rpb25faWQgPSB0dC50cmFuc19pZF90cmVlX3BhdGgoJycpCi0g
ICAgICAgIHR0Lm5ld19zeW1saW5rKCdzeW1saW5rJywKLSAgICAgICAgICAgIHJvb3RfdHJhbnNh
Y3Rpb25faWQsICdsaW5rLXRhcmdldCcsICdzeW1saW5rJykKKyAgICAgICAgaWYgc3ltbGlua3M6
CisgICAgICAgICAgICByb290X3RyYW5zYWN0aW9uX2lkID0gdHQudHJhbnNfaWRfdHJlZV9wYXRo
KCcnKQorICAgICAgICAgICAgdHQubmV3X3N5bWxpbmsoJ3N5bWxpbmsnLAorICAgICAgICAgICAg
ICAgIHJvb3RfdHJhbnNhY3Rpb25faWQsICdsaW5rLXRhcmdldCcsICdzeW1saW5rJykKICAgICAg
ICAgdHQuYXBwbHkoKQogICAgICAgICByZXR1cm4gc2VsZi53b3JraW5ndHJlZV90b190ZXN0X3Ry
ZWUodHJlZSkKIAoK

=== modified file bzrlib/tests/tree_implementations/test_get_file_mtime.py // l
... ast-changed:john@arbash-meinel.com-20070411221459-h6l619a85w7nimfc // encod
... ing:base64
LS0tIGJ6cmxpYi90ZXN0cy90cmVlX2ltcGxlbWVudGF0aW9ucy90ZXN0X2dldF9maWxlX210aW1l
LnB5CisrKyBienJsaWIvdGVzdHMvdHJlZV9pbXBsZW1lbnRhdGlvbnMvdGVzdF9nZXRfZmlsZV9t
dGltZS5weQpAQCAtMjksNyArMjksNyBAQAogICAgICAgICB0cmVlLmFkZChbJ29uZSddLCBbJ29u
ZS1pZCddKQogICAgICAgICByZXR1cm4gc2VsZi5fY29udmVydF90cmVlKHRyZWUpCiAKLSAgICBk
ZWYgdGVzdF9nZXRfc3ltbGlua190YXJnZXQoc2VsZik6CisgICAgZGVmIHRlc3RfZ2V0X2ZpbGVf
bXRpbWUoc2VsZik6CiAgICAgICAgIG5vdyA9IHRpbWUudGltZSgpCiAgICAgICAgIHRyZWUgPSBz
ZWxmLmdldF9iYXNpY190cmVlKCkKICAgICAgICAgdHJlZS5sb2NrX3JlYWQoKQoK

=== modified file bzrlib/tests/tree_implementations/test_inv.py // last-changed
... :bialix@ukr.net-20070414115551-zb314hff40n9fe0a // encoding:base64
LS0tIGJ6cmxpYi90ZXN0cy90cmVlX2ltcGxlbWVudGF0aW9ucy90ZXN0X2ludi5weQorKysgYnpy
bGliL3Rlc3RzL3RyZWVfaW1wbGVtZW50YXRpb25zL3Rlc3RfaW52LnB5CkBAIC0yMTIsOCArMjEy
LDcgQEAKIAogY2xhc3MgVGVzdEludmVudG9yeShUZXN0Q2FzZVdpdGhUcmVlKToKIAotICAgIGRl
ZiBzZXRVcChzZWxmKToKLSAgICAgICAgc3VwZXIoVGVzdEludmVudG9yeSwgc2VsZikuc2V0VXAo
KQorICAgIGRlZiBfc2V0X3VwKHNlbGYpOgogICAgICAgICBzZWxmLnRyZWUgPSBzZWxmLmdldF90
cmVlX3dpdGhfc3ViZGlyc19hbmRfYWxsX2NvbnRlbnRfdHlwZXMoKQogICAgICAgICBzZWxmLnRy
ZWUubG9ja19yZWFkKCkKICAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHNlbGYudHJlZS51bmxvY2sp
CkBAIC0yMjEsNiArMjIwLDkgQEAKICAgICAgICAgc2VsZi5pbnYgPSBzZWxmLnRyZWUuaW52ZW50
b3J5CiAKICAgICBkZWYgdGVzdF9zeW1saW5rX3RhcmdldChzZWxmKToKKyAgICAgICAgaWYgbm90
IGhhc19zeW1saW5rcygpOgorICAgICAgICAgICAgcmFpc2UgVGVzdFNraXBwZWQoJ05vIHN5bWxp
bmsgc3VwcG9ydCcpCisgICAgICAgIHNlbGYuX3NldF91cCgpCiAgICAgICAgIGlmIGlzaW5zdGFu
Y2Uoc2VsZi50cmVlLCBNdXRhYmxlVHJlZSk6CiAgICAgICAgICAgICByYWlzZSBUZXN0U2tpcHBl
ZCgKICAgICAgICAgICAgICAgICAnc3ltbGlua3Mgbm90IGFjY3VyYXRlbHkgcmVwcmVzZW50ZWQg
aW4gd29ya2luZyB0cmVlcycpCkBAIC0yMjgsNiArMjMwLDkgQEAKICAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbChlbnRyeS5zeW1saW5rX3RhcmdldCwgJ2xpbmstdGFyZ2V0JykKIAogICAgIGRlZiB0
ZXN0X3N5bWxpbmsoc2VsZik6CisgICAgICAgIGlmIG5vdCBoYXNfc3ltbGlua3MoKToKKyAgICAg
ICAgICAgIHJhaXNlIFRlc3RTa2lwcGVkKCdObyBzeW1saW5rIHN1cHBvcnQnKQorICAgICAgICBz
ZWxmLl9zZXRfdXAoKQogICAgICAgICBlbnRyeSA9IHNlbGYuaW52W3NlbGYuaW52LnBhdGgyaWQo
J3N5bWxpbmsnKV0KICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlbnRyeS5raW5kLCAnc3ltbGlu
aycpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoTm9uZSwgZW50cnkudGV4dF9zaXplKQoK

=== modified file bzrlib/tests/tree_implementations/test_test_trees.py // last-
... changed:bialix@ukr.net-20070414115551-zb314hff40n9fe0a // encoding:base64
LS0tIGJ6cmxpYi90ZXN0cy90cmVlX2ltcGxlbWVudGF0aW9ucy90ZXN0X3Rlc3RfdHJlZXMucHkK
KysrIGJ6cmxpYi90ZXN0cy90cmVlX2ltcGxlbWVudGF0aW9ucy90ZXN0X3Rlc3RfdHJlZXMucHkK
QEAgLTE2LDYgKzE2LDggQEAKIAogIiIiVGVzdHMgZm9yIHRoZSB0ZXN0IHRyZWVzIHVzZWQgYnkg
dGhlIHRyZWVfaW1wbGVtZW50YXRpb25zIHRlc3RzLiIiIgogCitmcm9tIGJ6cmxpYi5vc3V0aWxz
IGltcG9ydCBoYXNfc3ltbGlua3MKK2Zyb20gYnpybGliLnRlc3RzIGltcG9ydCBUZXN0U2tpcHBl
ZAogZnJvbSBienJsaWIudGVzdHMudHJlZV9pbXBsZW1lbnRhdGlvbnMgaW1wb3J0IFRlc3RDYXNl
V2l0aFRyZWUKIAogCkBAIC0xNDYsNiArMTQ4LDggQEAKICAgICAgICAgIyBjdXJyZW50bHkgdGhp
cyB0ZXN0IHRyZWUgcmVxdWlyZXMgdW5pY29kZS4gSXQgbWlnaHQgYmUgZ29vZAogICAgICAgICAj
IHRvIGhhdmUgaXQgc2ltcGx5IHN0b3AgaGF2aW5nIHRoZSBzaW5nbGUgdW5pY29kZSBmaWxlIGlu
IGl0CiAgICAgICAgICMgd2hlbiBkZWFsaW5nIHdpdGggYSBub24tdW5pY29kZSBmaWxlc3lzdGVt
LgorICAgICAgICBpZiBub3QgaGFzX3N5bWxpbmtzKCk6CisgICAgICAgICAgICByYWlzZSBUZXN0
U2tpcHBlZCgnTm8gc3ltbGluayBzdXBwb3J0JykKICAgICAgICAgdHJlZSA9IHNlbGYuZ2V0X3Ry
ZWVfd2l0aF9zdWJkaXJzX2FuZF9hbGxfY29udGVudF90eXBlcygpCiAgICAgICAgIHRyZWUubG9j
a19yZWFkKCkKICAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHRyZWUudW5sb2NrKQpAQCAtMTc2LDYg
KzE4MCwzOCBAQAogICAgICAgICAgICAgICgnMXRvcC1kaXIvMWRpci1pbi0xdG9wZGlyJywgJzBk
aXItaW4tMXRvcGRpcicsICdkaXJlY3RvcnknKV0sCiAgICAgICAgICAgICBbKHBhdGgsIG5vZGUu
ZmlsZV9pZCwgbm9kZS5raW5kKSBmb3IgcGF0aCwgbm9kZSBpbiB0cmVlLml0ZXJfZW50cmllc19i
eV9kaXIoKV0pCiAKKyAgICBkZWYgdGVzdF90cmVlX3dpdGhfc3ViZGlyc19hbmRfYWxsX2NvbnRl
bnRfdHlwZXNfd29fc3ltbGlua3Moc2VsZik6CisgICAgICAgICMgY3VycmVudGx5IHRoaXMgdGVz
dCB0cmVlIHJlcXVpcmVzIHVuaWNvZGUuIEl0IG1pZ2h0IGJlIGdvb2QKKyAgICAgICAgIyB0byBo
YXZlIGl0IHNpbXBseSBzdG9wIGhhdmluZyB0aGUgc2luZ2xlIHVuaWNvZGUgZmlsZSBpbiBpdAor
ICAgICAgICAjIHdoZW4gZGVhbGluZyB3aXRoIGEgbm9uLXVuaWNvZGUgZmlsZXN5c3RlbS4KKyAg
ICAgICAgdHJlZSA9IHNlbGYuZ2V0X3RyZWVfd2l0aF9zdWJkaXJzX2FuZF9hbGxfc3VwcG9ydGVk
X2NvbnRlbnRfdHlwZXMoRmFsc2UpCisgICAgICAgIHRyZWUubG9ja19yZWFkKCkKKyAgICAgICAg
c2VsZi5hZGRDbGVhbnVwKHRyZWUudW5sb2NrKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFtd
LCB0cmVlLmdldF9wYXJlbnRfaWRzKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoW10sIHRy
ZWUuY29uZmxpY3RzKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoW10sIGxpc3QodHJlZS51
bmtub3ducygpKSkKKyAgICAgICAgIyBfX2l0ZXJfXyBoYXMgbm8gc3Ryb25nbHkgZGVmaW5lZCBv
cmRlcgorICAgICAgICB0cmVlX3Jvb3QgPSB0cmVlLnBhdGgyaWQoJycpCisgICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBzZXQoW3RyZWVfcm9vdCwKKyAgICAgICAgICAgICAg
ICAnMmZpbGUnLAorICAgICAgICAgICAgICAgICcxdG9wLWRpcicsCisgICAgICAgICAgICAgICAg
JzFmaWxlLWluLTF0b3BkaXInLAorICAgICAgICAgICAgICAgICcwZGlyLWluLTF0b3BkaXInLAor
ICAgICAgICAgICAgICAgICB1JzB1dGZcdTEyMzRmaWxlJy5lbmNvZGUoJ3V0ZjgnKSwKKyAgICAg
ICAgICAgICAgICAgXSksCisgICAgICAgICAgICBzZXQoaXRlcih0cmVlKSkpCisgICAgICAgICMg
bm90ZSB0aGF0IHRoZSBvcmRlciBvZiB0aGUgcGF0aHMgYW5kIGZpbGVpZHMgaXMgZGVsaWJlcmF0
ZWx5IAorICAgICAgICAjIG1pc21hdGNoZWQgdG8gZW5zdXJlIHRoYXQgdGhlIHJlc3VsdCBvcmRl
ciBpcyBwYXRoIGJhc2VkLgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAg
WygnJywgdHJlZV9yb290LCAnZGlyZWN0b3J5JyksCisgICAgICAgICAgICAgKCcwZmlsZScsICcy
ZmlsZScsICdmaWxlJyksCisgICAgICAgICAgICAgKCcxdG9wLWRpcicsICcxdG9wLWRpcicsICdk
aXJlY3RvcnknKSwKKyAgICAgICAgICAgICAodScydXRmXHUxMjM0ZmlsZScsIHUnMHV0Zlx1MTIz
NGZpbGUnLmVuY29kZSgndXRmOCcpLCAnZmlsZScpLAorICAgICAgICAgICAgICgnMXRvcC1kaXIv
MGZpbGUtaW4tMXRvcGRpcicsICcxZmlsZS1pbi0xdG9wZGlyJywgJ2ZpbGUnKSwKKyAgICAgICAg
ICAgICAoJzF0b3AtZGlyLzFkaXItaW4tMXRvcGRpcicsICcwZGlyLWluLTF0b3BkaXInLCAnZGly
ZWN0b3J5JyldLAorICAgICAgICAgICAgWyhwYXRoLCBub2RlLmZpbGVfaWQsIG5vZGUua2luZCkg
Zm9yIHBhdGgsIG5vZGUgaW4gdHJlZS5pdGVyX2VudHJpZXNfYnlfZGlyKCldKQorCiAgICAgZGVm
IHRlc3RfdHJlZV93aXRoX3V0Zjgoc2VsZik6CiAgICAgICAgIHRyZWUgPSBzZWxmLm1ha2VfYnJh
bmNoX2FuZF90cmVlKCcuJykKICAgICAgICAgdHJlZSA9IHNlbGYuZ2V0X3RyZWVfd2l0aF91dGY4
KHRyZWUpCgo=

=== modified file bzrlib/tests/tree_implementations/test_walkdirs.py // last-ch
... anged:bialix@ukr.net-20070414115551-zb314hff40n9fe0a // encoding:base64
LS0tIGJ6cmxpYi90ZXN0cy90cmVlX2ltcGxlbWVudGF0aW9ucy90ZXN0X3dhbGtkaXJzLnB5Cisr
KyBienJsaWIvdGVzdHMvdHJlZV9pbXBsZW1lbnRhdGlvbnMvdGVzdF93YWxrZGlycy5weQpAQCAt
MTYsMzQgKzE2LDUzIEBACiAKICIiIlRlc3RzIGZvciB0aGUgZ2VuZXJpYyBUcmVlLndhbGtkaXJz
IGludGVyZmFjZS4iIiIKIAorZnJvbSBienJsaWIub3N1dGlscyBpbXBvcnQgaGFzX3N5bWxpbmtz
CiBmcm9tIGJ6cmxpYi50ZXN0cy50cmVlX2ltcGxlbWVudGF0aW9ucyBpbXBvcnQgVGVzdENhc2VX
aXRoVHJlZQogCiAKIGNsYXNzIFRlc3RXYWxrZGlycyhUZXN0Q2FzZVdpdGhUcmVlKToKIAotICAg
IGRlZiBnZXRfYWxsX3N1YmRpcnNfZXhwZWN0ZWQoc2VsZiwgdHJlZSk6Ci0gICAgICAgIHJldHVy
biBbCi0gICAgICAgICAgICAoKCcnLCB0cmVlLnBhdGgyaWQoJycpKSwKLSAgICAgICAgICAgIFsK
LSAgICAgICAgICAgICAoJzBmaWxlJywgJzBmaWxlJywgJ2ZpbGUnLCBOb25lLCAnMmZpbGUnLCAn
ZmlsZScpLAotICAgICAgICAgICAgICgnMXRvcC1kaXInLCAnMXRvcC1kaXInLCAnZGlyZWN0b3J5
JywgTm9uZSwgJzF0b3AtZGlyJywgJ2RpcmVjdG9yeScpLAotICAgICAgICAgICAgICh1JzJ1dGZc
dTEyMzRmaWxlJywgdScydXRmXHUxMjM0ZmlsZScsICdmaWxlJywgTm9uZSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB1JzB1dGZcdTEyMzRmaWxlJy5lbmNvZGUoJ3V0Zjgn
KSwgJ2ZpbGUnKSwKLSAgICAgICAgICAgICAoJ3N5bWxpbmsnLCAnc3ltbGluaycsICdzeW1saW5r
JywgTm9uZSwgJ3N5bWxpbmsnLCAnc3ltbGluaycpCi0gICAgICAgICAgICBdKSwKLSAgICAgICAg
ICAgICgoJzF0b3AtZGlyJywgJzF0b3AtZGlyJyksCi0gICAgICAgICAgICBbKCcxdG9wLWRpci8w
ZmlsZS1pbi0xdG9wZGlyJywgJzBmaWxlLWluLTF0b3BkaXInLCAnZmlsZScsIE5vbmUsICcxZmls
ZS1pbi0xdG9wZGlyJywgJ2ZpbGUnKSwKLSAgICAgICAgICAgICAoJzF0b3AtZGlyLzFkaXItaW4t
MXRvcGRpcicsICcxZGlyLWluLTF0b3BkaXInLCAnZGlyZWN0b3J5JywgTm9uZSwgJzBkaXItaW4t
MXRvcGRpcicsICdkaXJlY3RvcnknKSwKLSAgICAgICAgICAgIF0pLAotICAgICAgICAgICAgKCgn
MXRvcC1kaXIvMWRpci1pbi0xdG9wZGlyJywgJzBkaXItaW4tMXRvcGRpcicpLAotICAgICAgICAg
ICAgWwotICAgICAgICAgICAgXSksCi0gICAgICAgICAgICBdCisgICAgZGVmIGdldF9hbGxfc3Vi
ZGlyc19leHBlY3RlZChzZWxmLCB0cmVlLCBzeW1saW5rcyk6CisgICAgICAgIGlmIHN5bWxpbmtz
OgorICAgICAgICAgICAgcmV0dXJuIFsKKyAgICAgICAgICAgICAgICAoKCcnLCB0cmVlLnBhdGgy
aWQoJycpKSwKKyAgICAgICAgICAgICAgICBbCisgICAgICAgICAgICAgICAgICgnMGZpbGUnLCAn
MGZpbGUnLCAnZmlsZScsIE5vbmUsICcyZmlsZScsICdmaWxlJyksCisgICAgICAgICAgICAgICAg
ICgnMXRvcC1kaXInLCAnMXRvcC1kaXInLCAnZGlyZWN0b3J5JywgTm9uZSwgJzF0b3AtZGlyJywg
J2RpcmVjdG9yeScpLAorICAgICAgICAgICAgICAgICAodScydXRmXHUxMjM0ZmlsZScsIHUnMnV0
Zlx1MTIzNGZpbGUnLCAnZmlsZScsIE5vbmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHUnMHV0Zlx1MTIzNGZpbGUnLmVuY29kZSgndXRmOCcpLCAnZmlsZScpLAor
ICAgICAgICAgICAgICAgICAoJ3N5bWxpbmsnLCAnc3ltbGluaycsICdzeW1saW5rJywgTm9uZSwg
J3N5bWxpbmsnLCAnc3ltbGluaycpCisgICAgICAgICAgICAgICAgXSksCisgICAgICAgICAgICAg
ICAgKCgnMXRvcC1kaXInLCAnMXRvcC1kaXInKSwKKyAgICAgICAgICAgICAgICBbKCcxdG9wLWRp
ci8wZmlsZS1pbi0xdG9wZGlyJywgJzBmaWxlLWluLTF0b3BkaXInLCAnZmlsZScsIE5vbmUsICcx
ZmlsZS1pbi0xdG9wZGlyJywgJ2ZpbGUnKSwKKyAgICAgICAgICAgICAgICAgKCcxdG9wLWRpci8x
ZGlyLWluLTF0b3BkaXInLCAnMWRpci1pbi0xdG9wZGlyJywgJ2RpcmVjdG9yeScsIE5vbmUsICcw
ZGlyLWluLTF0b3BkaXInLCAnZGlyZWN0b3J5JyksCisgICAgICAgICAgICAgICAgXSksCisgICAg
ICAgICAgICAgICAgKCgnMXRvcC1kaXIvMWRpci1pbi0xdG9wZGlyJywgJzBkaXItaW4tMXRvcGRp
cicpLAorICAgICAgICAgICAgICAgIFsKKyAgICAgICAgICAgICAgICBdKSwKKyAgICAgICAgICAg
ICAgICBdCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICByZXR1cm4gWworICAgICAgICAgICAg
ICAgICgoJycsIHRyZWUucGF0aDJpZCgnJykpLAorICAgICAgICAgICAgICAgIFsKKyAgICAgICAg
ICAgICAgICAgKCcwZmlsZScsICcwZmlsZScsICdmaWxlJywgTm9uZSwgJzJmaWxlJywgJ2ZpbGUn
KSwKKyAgICAgICAgICAgICAgICAgKCcxdG9wLWRpcicsICcxdG9wLWRpcicsICdkaXJlY3Rvcnkn
LCBOb25lLCAnMXRvcC1kaXInLCAnZGlyZWN0b3J5JyksCisgICAgICAgICAgICAgICAgICh1JzJ1
dGZcdTEyMzRmaWxlJywgdScydXRmXHUxMjM0ZmlsZScsICdmaWxlJywgTm9uZSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdScwdXRmXHUxMjM0ZmlsZScuZW5jb2Rl
KCd1dGY4JyksICdmaWxlJyksCisgICAgICAgICAgICAgICAgXSksCisgICAgICAgICAgICAgICAg
KCgnMXRvcC1kaXInLCAnMXRvcC1kaXInKSwKKyAgICAgICAgICAgICAgICBbKCcxdG9wLWRpci8w
ZmlsZS1pbi0xdG9wZGlyJywgJzBmaWxlLWluLTF0b3BkaXInLCAnZmlsZScsIE5vbmUsICcxZmls
ZS1pbi0xdG9wZGlyJywgJ2ZpbGUnKSwKKyAgICAgICAgICAgICAgICAgKCcxdG9wLWRpci8xZGly
LWluLTF0b3BkaXInLCAnMWRpci1pbi0xdG9wZGlyJywgJ2RpcmVjdG9yeScsIE5vbmUsICcwZGly
LWluLTF0b3BkaXInLCAnZGlyZWN0b3J5JyksCisgICAgICAgICAgICAgICAgXSksCisgICAgICAg
ICAgICAgICAgKCgnMXRvcC1kaXIvMWRpci1pbi0xdG9wZGlyJywgJzBkaXItaW4tMXRvcGRpcicp
LAorICAgICAgICAgICAgICAgIFsKKyAgICAgICAgICAgICAgICBdKSwKKyAgICAgICAgICAgICAg
ICBdCiAKICAgICBkZWYgdGVzdF93YWxrZGlyX3Jvb3Qoc2VsZik6Ci0gICAgICAgIHRyZWUgPSBz
ZWxmLmdldF90cmVlX3dpdGhfc3ViZGlyc19hbmRfYWxsX2NvbnRlbnRfdHlwZXMoKQorICAgICAg
ICB0cmVlID0gc2VsZi5nZXRfdHJlZV93aXRoX3N1YmRpcnNfYW5kX2FsbF9zdXBwb3J0ZWRfY29u
dGVudF90eXBlcyhoYXNfc3ltbGlua3MoKSkKICAgICAgICAgdHJlZS5sb2NrX3JlYWQoKQotICAg
ICAgICBleHBlY3RlZF9kaXJibG9ja3MgPSBzZWxmLmdldF9hbGxfc3ViZGlyc19leHBlY3RlZCh0
cmVlKQorICAgICAgICBleHBlY3RlZF9kaXJibG9ja3MgPSBzZWxmLmdldF9hbGxfc3ViZGlyc19l
eHBlY3RlZCh0cmVlLCBoYXNfc3ltbGlua3MoKSkKICAgICAgICAgIyB0ZXN0IHRoYXQgaXRzIGl0
ZXJhYmxlIGJ5IGl0ZXJhdGluZwogICAgICAgICByZXN1bHQgPSBbXQogICAgICAgICBmb3IgZGly
aW5mbywgYmxvY2sgaW4gdHJlZS53YWxrZGlycygpOgpAQCAtNjEsMTEgKzgwLDExIEBACiAgICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGV4cGVjdGVkX2RpcmJsb2NrcyksIGxlbihyZXN1bHQp
KQogICAgICAgICAgICAgCiAgICAgZGVmIHRlc3Rfd2Fsa2Rpcl9zdWJ0cmVlKHNlbGYpOgotICAg
ICAgICB0cmVlID0gc2VsZi5nZXRfdHJlZV93aXRoX3N1YmRpcnNfYW5kX2FsbF9jb250ZW50X3R5
cGVzKCkKKyAgICAgICAgdHJlZSA9IHNlbGYuZ2V0X3RyZWVfd2l0aF9zdWJkaXJzX2FuZF9hbGxf
c3VwcG9ydGVkX2NvbnRlbnRfdHlwZXMoaGFzX3N5bWxpbmtzKCkpCiAgICAgICAgICMgdGVzdCB0
aGF0IGl0cyBpdGVyYWJsZSBieSBpdGVyYXRpbmcKICAgICAgICAgcmVzdWx0ID0gW10KICAgICAg
ICAgdHJlZS5sb2NrX3JlYWQoKQotICAgICAgICBleHBlY3RlZF9kaXJibG9ja3MgPSBzZWxmLmdl
dF9hbGxfc3ViZGlyc19leHBlY3RlZCh0cmVlKVsxOl0KKyAgICAgICAgZXhwZWN0ZWRfZGlyYmxv
Y2tzID0gc2VsZi5nZXRfYWxsX3N1YmRpcnNfZXhwZWN0ZWQodHJlZSwgaGFzX3N5bWxpbmtzKCkp
WzE6XQogICAgICAgICBmb3IgZGlyaW5mbywgYmxvY2sgaW4gdHJlZS53YWxrZGlycygnMXRvcC1k
aXInKToKICAgICAgICAgICAgIG5ld2Jsb2NrID0gW10KICAgICAgICAgICAgIGZvciByb3cgaW4g
YmxvY2s6Cgo=

=== modified file bzrlib/tests/workingtree_implementations/__init__.py // last-
... changed:amanic@gmail.com-20070418201215-upzz7pof6a4433n7 // encoding:base64
LS0tIGJ6cmxpYi90ZXN0cy93b3JraW5ndHJlZV9pbXBsZW1lbnRhdGlvbnMvX19pbml0X18ucHkK
KysrIGJ6cmxpYi90ZXN0cy93b3JraW5ndHJlZV9pbXBsZW1lbnRhdGlvbnMvX19pbml0X18ucHkK
QEAgLTU4LDYgKzU4LDcgQEAKICAgICAgICAgJ2J6cmxpYi50ZXN0cy53b3JraW5ndHJlZV9pbXBs
ZW1lbnRhdGlvbnMudGVzdF9jb21taXQnLAogICAgICAgICAnYnpybGliLnRlc3RzLndvcmtpbmd0
cmVlX2ltcGxlbWVudGF0aW9ucy50ZXN0X2V4ZWN1dGFibGUnLAogICAgICAgICAnYnpybGliLnRl
c3RzLndvcmtpbmd0cmVlX2ltcGxlbWVudGF0aW9ucy50ZXN0X2ZsdXNoJywKKyAgICAgICAgJ2J6
cmxpYi50ZXN0cy53b3JraW5ndHJlZV9pbXBsZW1lbnRhdGlvbnMudGVzdF9nZXRfZmlsZV9tdGlt
ZScsCiAgICAgICAgICdienJsaWIudGVzdHMud29ya2luZ3RyZWVfaW1wbGVtZW50YXRpb25zLnRl
c3RfZ2V0X3BhcmVudF9pZHMnLAogICAgICAgICAnYnpybGliLnRlc3RzLndvcmtpbmd0cmVlX2lt
cGxlbWVudGF0aW9ucy50ZXN0X2ludicsCiAgICAgICAgICdienJsaWIudGVzdHMud29ya2luZ3Ry
ZWVfaW1wbGVtZW50YXRpb25zLnRlc3RfaXNfY29udHJvbF9maWxlbmFtZScsCkBAIC03Myw2ICs3
NCw3IEBACiAgICAgICAgICdienJsaWIudGVzdHMud29ya2luZ3RyZWVfaW1wbGVtZW50YXRpb25z
LnRlc3RfcHV0X2ZpbGUnLAogICAgICAgICAnYnpybGliLnRlc3RzLndvcmtpbmd0cmVlX2ltcGxl
bWVudGF0aW9ucy50ZXN0X3JlYWRvbmx5JywKICAgICAgICAgJ2J6cmxpYi50ZXN0cy53b3JraW5n
dHJlZV9pbXBsZW1lbnRhdGlvbnMudGVzdF9yZWFkX3dvcmtpbmdfaW52ZW50b3J5JywKKyAgICAg
ICAgJ2J6cmxpYi50ZXN0cy53b3JraW5ndHJlZV9pbXBsZW1lbnRhdGlvbnMudGVzdF9yZW1vdmUn
LAogICAgICAgICAnYnpybGliLnRlc3RzLndvcmtpbmd0cmVlX2ltcGxlbWVudGF0aW9ucy50ZXN0
X3JlbmFtZV9vbmUnLAogICAgICAgICAnYnpybGliLnRlc3RzLndvcmtpbmd0cmVlX2ltcGxlbWVu
dGF0aW9ucy50ZXN0X3JldmlzaW9uX3RyZWUnLAogICAgICAgICAnYnpybGliLnRlc3RzLndvcmtp
bmd0cmVlX2ltcGxlbWVudGF0aW9ucy50ZXN0X3NldF9yb290X2lkJywKCg==

=== modified file bzrlib/tests/workingtree_implementations/test_move.py // last
... -changed:john@arbash-meinel.com-20070425184156-weys7l94o2nn6d4l // encoding
... :base64
LS0tIGJ6cmxpYi90ZXN0cy93b3JraW5ndHJlZV9pbXBsZW1lbnRhdGlvbnMvdGVzdF9tb3ZlLnB5
CisrKyBienJsaWIvdGVzdHMvd29ya2luZ3RyZWVfaW1wbGVtZW50YXRpb25zL3Rlc3RfbW92ZS5w
eQpAQCAtMTY3LDYgKzE2NywyMSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgn
ZCcsICdkLWlkJyldLCB0cmVlLmJhc2lzX3RyZWUoKSkKICAgICAgICAgdHJlZS5fdmFsaWRhdGUo
KQogCisgICAgZGVmIHRlc3RfbW92ZV9vdmVyX2RlbGV0ZWQoc2VsZik6CisgICAgICAgIHRyZWUg
PSBzZWxmLm1ha2VfYnJhbmNoX2FuZF90cmVlKCcuJykKKyAgICAgICAgc2VsZi5idWlsZF90cmVl
KFsnYS8nLCAnYS9iJywgJ2InXSkKKyAgICAgICAgdHJlZS5hZGQoWydhJywgJ2EvYicsICdiJ10s
IFsnYS1pZCcsICdhYi1pZCcsICdiLWlkJ10pCisgICAgICAgIHRyZWUuY29tbWl0KCdpbml0aWFs
JywgcmV2X2lkPSdyZXYtMScpCisKKyAgICAgICAgcm9vdF9pZCA9IHRyZWUuZ2V0X3Jvb3RfaWQo
KQorICAgICAgICB0cmVlLnJlbW92ZShbJ2EvYiddLCBrZWVwX2ZpbGVzPUZhbHNlKQorICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKFsoJ2InLCAnYS9iJyldLCB0cmVlLm1vdmUoWydiJ10sICdhJykp
CisgICAgICAgIHNlbGYuYXNzZXJ0VHJlZUxheW91dChbKCcnLCByb290X2lkKSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAoJ2EnLCAnYS1pZCcpLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICgnYS9iJywgJ2ItaWQnKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIF0sIHRyZWUpCisgICAgICAgIHRyZWUuX3ZhbGlkYXRlKCkKKwogICAgIGRlZiB0ZXN0X21v
dmVfc3ViZGlyKHNlbGYpOgogICAgICAgICB0cmVlID0gc2VsZi5tYWtlX2JyYW5jaF9hbmRfdHJl
ZSgnLicpCiAgICAgICAgIHNlbGYuYnVpbGRfdHJlZShbJ2EnLCAnYi8nLCAnYi9jJ10pCkBAIC0z
NTgsNiArMzczLDE4MCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgnYS9jL2Qn
LCAnZC1pZCcpXSwgdHJlZS5iYXNpc190cmVlKCkpCiAgICAgICAgIHRyZWUuX3ZhbGlkYXRlKCkK
IAorICAgIGRlZiB0ZXN0X21vdmVfZGlyZWN0b3J5X2ludG9fcGFyZW50KHNlbGYpOgorICAgICAg
ICB0cmVlID0gc2VsZi5tYWtlX2JyYW5jaF9hbmRfdHJlZSgnLicpCisgICAgICAgIHNlbGYuYnVp
bGRfdHJlZShbJ2MvJywgJ2MvYi8nLCAnYy9iL2QvJ10pCisgICAgICAgIHRyZWUuYWRkKFsnYycs
ICdjL2InLCAnYy9iL2QnXSwKKyAgICAgICAgICAgICAgICAgWydjLWlkJywgJ2ItaWQnLCAnZC1p
ZCddKQorICAgICAgICB0cmVlLmNvbW1pdCgnaW5pdGlhbCcsIHJldl9pZD0ncmV2LTEnKQorICAg
ICAgICByb290X2lkID0gdHJlZS5nZXRfcm9vdF9pZCgpCisKKyAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbChbKCdjL2InLCAnYicpXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICB0cmVlLm1vdmUo
WydjL2InXSwgJycpKQorICAgICAgICBzZWxmLmFzc2VydFRyZWVMYXlvdXQoWygnJywgcm9vdF9p
ZCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCdiJywgJ2ItaWQnKSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAoJ2MnLCAnYy1pZCcpLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICgnYi9kJywgJ2QtaWQnKSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIF0sIHRyZWUpCisgICAgICAgIHRyZWUuX3ZhbGlkYXRlKCkKKworICAgIGRlZiB0ZXN0
X21vdmVfZGlyZWN0b3J5X3dpdGhfY2hpbGRyZW5faW5fc3ViZGlyKHNlbGYpOgorICAgICAgICB0
cmVlID0gc2VsZi5tYWtlX2JyYW5jaF9hbmRfdHJlZSgnLicpCisgICAgICAgIHNlbGYuYnVpbGRf
dHJlZShbJ2EvJywgJ2EvYicsICdhL2MvJywgJ2QvJ10pCisgICAgICAgIHRyZWUuYWRkKFsnYScs
ICdhL2InLCAnYS9jJywgJ2QnXSwKKyAgICAgICAgICAgICAgICAgWydhLWlkJywgJ2ItaWQnLCAn
Yy1pZCcsICdkLWlkJ10pCisgICAgICAgIHRyZWUuY29tbWl0KCdpbml0aWFsJywgcmV2X2lkPSdy
ZXYtMScpCisgICAgICAgIHJvb3RfaWQgPSB0cmVlLmdldF9yb290X2lkKCkKKworCisgICAgICAg
IHRyZWUucmVuYW1lX29uZSgnYS9iJywgJ2EvYy9iJykKKyAgICAgICAgc2VsZi5hc3NlcnRUcmVl
TGF5b3V0KFsoJycsIHJvb3RfaWQpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgn
YScsICdhLWlkJyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCdkJywgJ2QtaWQn
KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoJ2EvYycsICdjLWlkJyksCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgKCdhL2MvYicsICdiLWlkJyksCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBdLCB0cmVlKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFso
J2EnLCAnZC9hJyldLAorICAgICAgICAgICAgICAgICAgICAgICAgIHRyZWUubW92ZShbJ2EnXSwg
J2QnKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcmVlTGF5b3V0KFsoJycsIHJvb3RfaWQpLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICgnZCcsICdkLWlkJyksCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgKCdkL2EnLCAnYS1pZCcpLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICgnZC9hL2MnLCAnYy1pZCcpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICgnZC9hL2MvYicsICdiLWlkJyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBd
LCB0cmVlKQorICAgICAgICB0cmVlLl92YWxpZGF0ZSgpCisKKyAgICBkZWYgdGVzdF9tb3ZlX2Rp
cmVjdG9yeV93aXRoX2RlbGV0ZWRfY2hpbGRyZW4oc2VsZik6CisgICAgICAgIHRyZWUgPSBzZWxm
Lm1ha2VfYnJhbmNoX2FuZF90cmVlKCcuJykKKyAgICAgICAgc2VsZi5idWlsZF90cmVlKFsnYS8n
LCAnYS9iJywgJ2EvYycsICdhL2QnLCAnYi8nXSkKKyAgICAgICAgdHJlZS5hZGQoWydhJywgJ2In
LCAnYS9iJywgJ2EvYycsICdhL2QnXSwKKyAgICAgICAgICAgICAgICAgWydhLWlkJywgJ2ItaWQn
LCAnYWItaWQnLCAnYWMtaWQnLCAnYWQtaWQnXSkKKyAgICAgICAgdHJlZS5jb21taXQoJ2luaXRp
YWwnLCByZXZfaWQ9J3Jldi0xJykKKyAgICAgICAgcm9vdF9pZCA9IHRyZWUuZ2V0X3Jvb3RfaWQo
KQorCisgICAgICAgIHRyZWUucmVtb3ZlKFsnYS9iJywgJ2EvZCddKQorCisgICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwoWygnYScsICdiL2EnKV0sCisgICAgICAgICAgICAgICAgICAgICAgICAgdHJl
ZS5tb3ZlKFsnYSddLCAnYicpKQorICAgICAgICBzZWxmLmFzc2VydFRyZWVMYXlvdXQoWygnJywg
cm9vdF9pZCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCdiJywgJ2ItaWQnKSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoJ2IvYScsICdhLWlkJyksCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgKCdiL2EvYycsICdhYy1pZCcpLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgXSwgdHJlZSkKKyAgICAgICAgdHJlZS5fdmFsaWRhdGUoKQorCisg
ICAgZGVmIHRlc3RfbW92ZV9kaXJlY3Rvcnlfd2l0aF9uZXdfY2hpbGRyZW4oc2VsZik6CisgICAg
ICAgIHRyZWUgPSBzZWxmLm1ha2VfYnJhbmNoX2FuZF90cmVlKCcuJykKKyAgICAgICAgc2VsZi5i
dWlsZF90cmVlKFsnYS8nLCAnYS9jJywgJ2IvJ10pCisgICAgICAgIHRyZWUuYWRkKFsnYScsICdi
JywgJ2EvYyddLCBbJ2EtaWQnLCAnYi1pZCcsICdhYy1pZCddKQorICAgICAgICB0cmVlLmNvbW1p
dCgnaW5pdGlhbCcsIHJldl9pZD0ncmV2LTEnKQorICAgICAgICByb290X2lkID0gdHJlZS5nZXRf
cm9vdF9pZCgpCisKKyAgICAgICAgc2VsZi5idWlsZF90cmVlKFsnYS9iJywgJ2EvZCddKQorICAg
ICAgICB0cmVlLmFkZChbJ2EvYicsICdhL2QnXSwgWydhYi1pZCcsICdhZC1pZCddKQorCisgICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwoWygnYScsICdiL2EnKV0sCisgICAgICAgICAgICAgICAgICAg
ICAgICAgdHJlZS5tb3ZlKFsnYSddLCAnYicpKQorICAgICAgICBzZWxmLmFzc2VydFRyZWVMYXlv
dXQoWygnJywgcm9vdF9pZCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCdiJywg
J2ItaWQnKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoJ2IvYScsICdhLWlkJyks
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCdiL2EvYicsICdhYi1pZCcpLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICgnYi9hL2MnLCAnYWMtaWQnKSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAoJ2IvYS9kJywgJ2FkLWlkJyksCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBdLCB0cmVlKQorICAgICAgICB0cmVlLl92YWxpZGF0ZSgpCisKKyAg
ICBkZWYgdGVzdF9tb3ZlX2RpcmVjdG9yeV93aXRoX21vdmVkX2NoaWxkcmVuKHNlbGYpOgorICAg
ICAgICB0cmVlID0gc2VsZi5tYWtlX2JyYW5jaF9hbmRfdHJlZSgnLicpCisgICAgICAgIHNlbGYu
YnVpbGRfdHJlZShbJ2EvJywgJ2EvYicsICdhL2MnLCAnZCcsICdlLyddKQorICAgICAgICB0cmVl
LmFkZChbJ2EnLCAnYS9iJywgJ2EvYycsICdkJywgJ2UnXSwKKyAgICAgICAgICAgICAgICAgWydh
LWlkJywgJ2ItaWQnLCAnYy1pZCcsICdkLWlkJywgJ2UtaWQnXSkKKyAgICAgICAgdHJlZS5jb21t
aXQoJ2luaXRpYWwnLCByZXZfaWQ9J3Jldi0xJykKKyAgICAgICAgcm9vdF9pZCA9IHRyZWUuZ2V0
X3Jvb3RfaWQoKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoWygnYS9iJywgJ2InKV0sCisg
ICAgICAgICAgICAgICAgICAgICAgICAgdHJlZS5tb3ZlKFsnYS9iJ10sICcnKSkKKyAgICAgICAg
c2VsZi5hc3NlcnRUcmVlTGF5b3V0KFsoJycsIHJvb3RfaWQpLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICgnYScsICdhLWlkJyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgKCdiJywgJ2ItaWQnKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoJ2QnLCAn
ZC1pZCcpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgnZScsICdlLWlkJyksCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCdhL2MnLCAnYy1pZCcpLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgXSwgdHJlZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChb
KCdkJywgJ2EvZCcpXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICB0cmVlLm1vdmUoWydkJ10s
ICdhJykpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJlZUxheW91dChbKCcnLCByb290X2lkKSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoJ2EnLCAnYS1pZCcpLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICgnYicsICdiLWlkJyksCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgKCdlJywgJ2UtaWQnKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAo
J2EvYycsICdjLWlkJyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCdhL2QnLCAn
ZC1pZCcpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSwgdHJlZSkKKyAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbChbKCdhJywgJ2UvYScpXSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICB0cmVlLm1vdmUoWydhJ10sICdlJykpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJlZUxheW91dChb
KCcnLCByb290X2lkKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoJ2InLCAnYi1p
ZCcpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgnZScsICdlLWlkJyksCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgKCdlL2EnLCAnYS1pZCcpLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICgnZS9hL2MnLCAnYy1pZCcpLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICgnZS9hL2QnLCAnZC1pZCcpLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgXSwgdHJlZSkKKyAgICAgICAgdHJlZS5fdmFsaWRhdGUoKQorCisgICAgZGVmIHRlc3Rf
bW92ZV9kaXJlY3Rvcnlfd2l0aF9yZW5hbWVkX2NoaWxkKHNlbGYpOgorICAgICAgICB0cmVlID0g
c2VsZi5tYWtlX2JyYW5jaF9hbmRfdHJlZSgnLicpCisgICAgICAgIHNlbGYuYnVpbGRfdHJlZShb
J2EvJywgJ2EvYicsICdhL2MnLCAnZC8nXSkKKyAgICAgICAgdHJlZS5hZGQoWydhJywgJ2EvYics
ICdhL2MnLCAnZCddLAorICAgICAgICAgICAgICAgICBbJ2EtaWQnLCAnYi1pZCcsICdjLWlkJywg
J2QtaWQnXSkKKyAgICAgICAgdHJlZS5jb21taXQoJ2luaXRpYWwnLCByZXZfaWQ9J3Jldi0xJykK
KyAgICAgICAgcm9vdF9pZCA9IHRyZWUuZ2V0X3Jvb3RfaWQoKQorCisgICAgICAgIHRyZWUucmVu
YW1lX29uZSgnYS9iJywgJ2EvZCcpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJlZUxheW91dChbKCcn
LCByb290X2lkKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoJ2EnLCAnYS1pZCcp
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgnZCcsICdkLWlkJyksCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgKCdhL2MnLCAnYy1pZCcpLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICgnYS9kJywgJ2ItaWQnKSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIF0sIHRyZWUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoWygnYScsICdkL2EnKV0s
CisgICAgICAgICAgICAgICAgICAgICAgICAgdHJlZS5tb3ZlKFsnYSddLCAnZCcpKQorICAgICAg
ICBzZWxmLmFzc2VydFRyZWVMYXlvdXQoWygnJywgcm9vdF9pZCksCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgKCdkJywgJ2QtaWQnKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAoJ2QvYScsICdhLWlkJyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCdk
L2EvYycsICdjLWlkJyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCdkL2EvZCcs
ICdiLWlkJyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLCB0cmVlKQorICAgICAg
ICB0cmVlLl92YWxpZGF0ZSgpCisKKyAgICBkZWYgdGVzdF9tb3ZlX2RpcmVjdG9yeV93aXRoX3N3
YXBwZWRfY2hpbGRyZW4oc2VsZik6CisgICAgICAgIHRyZWUgPSBzZWxmLm1ha2VfYnJhbmNoX2Fu
ZF90cmVlKCcuJykKKyAgICAgICAgc2VsZi5idWlsZF90cmVlKFsnYS8nLCAnYS9iJywgJ2EvYycs
ICdhL2QnLCAnZS8nXSkKKyAgICAgICAgdHJlZS5hZGQoWydhJywgJ2EvYicsICdhL2MnLCAnYS9k
JywgJ2UnXSwKKyAgICAgICAgICAgICAgICAgWydhLWlkJywgJ2ItaWQnLCAnYy1pZCcsICdkLWlk
JywgJ2UtaWQnXSkKKyAgICAgICAgdHJlZS5jb21taXQoJ2luaXRpYWwnLCByZXZfaWQ9J3Jldi0x
JykKKyAgICAgICAgcm9vdF9pZCA9IHRyZWUuZ2V0X3Jvb3RfaWQoKQorCisgICAgICAgIHRyZWUu
cmVuYW1lX29uZSgnYS9iJywgJ2EvYmInKQorICAgICAgICB0cmVlLnJlbmFtZV9vbmUoJ2EvZCcs
ICdhL2InKQorICAgICAgICB0cmVlLnJlbmFtZV9vbmUoJ2EvYmInLCAnYS9kJykKKyAgICAgICAg
c2VsZi5hc3NlcnRUcmVlTGF5b3V0KFsoJycsIHJvb3RfaWQpLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICgnYScsICdhLWlkJyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgKCdlJywgJ2UtaWQnKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoJ2EvYics
ICdkLWlkJyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCdhL2MnLCAnYy1pZCcp
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgnYS9kJywgJ2ItaWQnKSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIF0sIHRyZWUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwoWygnYScsICdlL2EnKV0sCisgICAgICAgICAgICAgICAgICAgICAgICAgdHJlZS5tb3ZlKFsn
YSddLCAnZScpKQorICAgICAgICBzZWxmLmFzc2VydFRyZWVMYXlvdXQoWygnJywgcm9vdF9pZCks
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCdlJywgJ2UtaWQnKSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAoJ2UvYScsICdhLWlkJyksCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgKCdlL2EvYicsICdkLWlkJyksCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgKCdlL2EvYycsICdjLWlkJyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgKCdlL2EvZCcsICdiLWlkJyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLCB0
cmVlKQorICAgICAgICB0cmVlLl92YWxpZGF0ZSgpCisKICAgICBkZWYgdGVzdF9tb3ZlX21vdmVk
KHNlbGYpOgogICAgICAgICAiIiJNb3ZpbmcgYSBtb3ZlZCBlbnRyeSB3b3JrcyBhcyBleHBlY3Rl
ZC4iIiIKICAgICAgICAgdHJlZSA9IHNlbGYubWFrZV9icmFuY2hfYW5kX3RyZWUoJy4nKQoK

=== modified file bzrlib/tests/workingtree_implementations/test_walkdirs.py // 
... last-changed:bialix@ukr.net-20070414121731-jtc76rfulndihkh3 // encoding:bas
... e64
LS0tIGJ6cmxpYi90ZXN0cy93b3JraW5ndHJlZV9pbXBsZW1lbnRhdGlvbnMvdGVzdF93YWxrZGly
cy5weQorKysgYnpybGliL3Rlc3RzL3dvcmtpbmd0cmVlX2ltcGxlbWVudGF0aW9ucy90ZXN0X3dh
bGtkaXJzLnB5CkBAIC0xOSw2ICsxOSw4IEBACiBpbXBvcnQgb3MKIAogZnJvbSBienJsaWIgaW1w
b3J0IHRyYW5zZm9ybQorZnJvbSBienJsaWIub3N1dGlscyBpbXBvcnQgaGFzX3N5bWxpbmtzCitm
cm9tIGJ6cmxpYi50ZXN0cyBpbXBvcnQgVGVzdFNraXBwZWQKIGZyb20gYnpybGliLnRlc3RzLndv
cmtpbmd0cmVlX2ltcGxlbWVudGF0aW9ucyBpbXBvcnQgVGVzdENhc2VXaXRoV29ya2luZ1RyZWUK
IAogIyB0ZXN0cyB0byB3cml0ZToKQEAgLTEzNyw2ICsxMzksOCBAQAogCiAgICAgZGVmIHRlc3Rf
d2Fsa2RpcnNfdHlwZV9jaGFuZ2VzKHNlbGYpOgogICAgICAgICAiIiJXYWxrZGlyIHNob3dzIHRo
ZSBhY3R1YWwga2luZHMgb24gZGlzayBhbmQgdGhlIHJlY29yZGVkIGtpbmRzLiIiIgorICAgICAg
ICBpZiBub3QgaGFzX3N5bWxpbmtzKCk6CisgICAgICAgICAgICByYWlzZSBUZXN0U2tpcHBlZCgn
Tm8gc3ltbGluayBzdXBwb3J0JykKICAgICAgICAgdHJlZSA9IHNlbGYubWFrZV9icmFuY2hfYW5k
X3RyZWUoJy4nKQogICAgICAgICBwYXRocyA9IFsnZmlsZTEnLCAnZmlsZTInLCAnZGlyMS8nLCAn
ZGlyMi8nXQogICAgICAgICBpZHMgPSBbJ2ZpbGUxJywgJ2ZpbGUyJywgJ2RpcjEnLCAnZGlyMidd
CkBAIC0xOTksMyArMjAzLDQwIEBACiAgICAgICAgIGZvciBwb3MsIGl0ZW0gaW4gZW51bWVyYXRl
KGV4cGVjdGVkX2RpcmJsb2Nrcyk6CiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGl0ZW0s
IHJlc3VsdFtwb3NdKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihleHBlY3RlZF9kaXJi
bG9ja3MpLCBsZW4ocmVzdWx0KSkKKworICAgIGRlZiB0ZXN0X3dhbGtkaXJzX3R5cGVfY2hhbmdl
c193b19zeW1saW5rcyhzZWxmKToKKyAgICAgICAgIyBzaW1pbGFyIHRvIHRlc3Rfd2Fsa2RpcnNf
dHlwZV9jaGFuZ2VzCisgICAgICAgICMgYnV0IGRvbid0IHVzZSBzeW1saW5rcyBmb3Igc2FmZSB0
ZXN0aW5nIG9uIHdpbjMyCisgICAgICAgIHRyZWUgPSBzZWxmLm1ha2VfYnJhbmNoX2FuZF90cmVl
KCcuJykKKyAgICAgICAgcGF0aHMgPSBbJ2ZpbGUxJywgJ2RpcjEvJ10KKyAgICAgICAgaWRzID0g
WydmaWxlMScsICdkaXIxJ10KKyAgICAgICAgc2VsZi5idWlsZF90cmVlKHBhdGhzKQorICAgICAg
ICB0cmVlLmFkZChwYXRocywgaWRzKQorICAgICAgICB0cmVlLmJ6cmRpci5yb290X3RyYW5zcG9y
dC5kZWxldGVfdHJlZSgnZGlyMScpCisgICAgICAgIHRyZWUuYnpyZGlyLnJvb3RfdHJhbnNwb3J0
LmRlbGV0ZSgnZmlsZTEnKQorICAgICAgICBjaGFuZ2VkX3BhdGhzID0gWydkaXIxJywgJ2ZpbGUx
LyddCisgICAgICAgIHNlbGYuYnVpbGRfdHJlZShjaGFuZ2VkX3BhdGhzKQorICAgICAgICBkaXIx
X3N0YXQgPSBvcy5sc3RhdCgnZGlyMScpCisgICAgICAgIGZpbGUxX3N0YXQgPSBvcy5sc3RhdCgn
ZmlsZTEnKQorICAgICAgICBleHBlY3RlZF9kaXJibG9ja3MgPSBbCisgICAgICAgICAgICAgKCgn
JywgdHJlZS5wYXRoMmlkKCcnKSksCisgICAgICAgICAgICAgIFsoJ2RpcjEnLCAnZGlyMScsICdm
aWxlJywgZGlyMV9zdGF0LCAnZGlyMScsICdkaXJlY3RvcnknKSwKKyAgICAgICAgICAgICAgICgn
ZmlsZTEnLCAnZmlsZTEnLCAnZGlyZWN0b3J5JywgZmlsZTFfc3RhdCwgJ2ZpbGUxJywgJ2ZpbGUn
KSwKKyAgICAgICAgICAgICAgXQorICAgICAgICAgICAgICksCisgICAgICAgICAgICAgKCgnZGly
MScsICdkaXIxJyksCisgICAgICAgICAgICAgIFsKKyAgICAgICAgICAgICAgXQorICAgICAgICAg
ICAgICksCisgICAgICAgICAgICAgKCgnZmlsZTEnLCBOb25lKSwKKyAgICAgICAgICAgICAgWwor
ICAgICAgICAgICAgICBdCisgICAgICAgICAgICAgKSwKKyAgICAgICAgICAgIF0KKyAgICAgICAg
dHJlZS5sb2NrX3JlYWQoKQorICAgICAgICByZXN1bHQgPSBsaXN0KHRyZWUud2Fsa2RpcnMoKSkK
KyAgICAgICAgdHJlZS51bmxvY2soKQorICAgICAgICAjIGNoZWNrIGVhY2ggcmV0dXJuIHZhbHVl
IGZvciBkZWJ1Z2dpbmcgZWFzZS4KKyAgICAgICAgZm9yIHBvcywgaXRlbSBpbiBlbnVtZXJhdGUo
ZXhwZWN0ZWRfZGlyYmxvY2tzKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaXRlbSwg
cmVzdWx0W3Bvc10pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGV4cGVjdGVkX2RpcmJs
b2NrcyksIGxlbihyZXN1bHQpKQoK

=== modified file bzrlib/timestamp.py // last-changed:mbp@sourcefrog.net-200704
... 19080319-amc7f3frr64lxolq // encoding:base64
LS0tIGJ6cmxpYi90aW1lc3RhbXAucHkKKysrIGJ6cmxpYi90aW1lc3RhbXAucHkKQEAgLTE3LDYg
KzE3LDggQEAKIGltcG9ydCBjYWxlbmRhcgogaW1wb3J0IHRpbWUKIAorZnJvbSBienJsaWIgaW1w
b3J0IG9zdXRpbHMKKwogCiBkZWYgZm9ybWF0X2hpZ2hyZXNfZGF0ZSh0LCBvZmZzZXQ9MCk6CiAg
ICAgIiIiRm9ybWF0IGEgZGF0ZSwgc3VjaCB0aGF0IGl0IGluY2x1ZGVzIGhpZ2hlciBwcmVjaXNp
b24gaW4gdGhlCkBAIC0xMjcsMTAgKzEyOSwxOSBAQAogCiAgICAgSW52ZXJzZSBvZiBwYXJzZV9w
YXRjaF9kYXRlLgogICAgICIiIgotICAgIGFzc2VydCBvZmZzZXQgJSAzNiA9PSAwCi0gICAgdG0g
PSB0aW1lLmdtdGltZShzZWNzK29mZnNldCkKLSAgICB0aW1lX3N0ciA9IHRpbWUuc3RyZnRpbWUo
JyVZLSVtLSVkICVIOiVNOiVTJywgdG0pCi0gICAgcmV0dXJuICclcyAlKzA1ZCcgJSAodGltZV9z
dHIsIG9mZnNldC8zNikKKyAgICBhc3NlcnQgb2Zmc2V0ICUgNjAgPT0gMCwgXAorICAgICAgICAi
Y2FuJ3QgcmVwcmVzZW50IHRpbWV6b25lICVzIG9mZnNldCBieSBmcmFjdGlvbmFsIG1pbnV0ZXMi
ICUgb2Zmc2V0CisgICAgIyBzbyB0aGF0IHdlIGRvbid0IG5lZWQgdG8gZG8gY2FsY3VsYXRpb25z
IG9uIHByZS1lcG9jaCB0aW1lcywgCisgICAgIyB3aGljaCBkb2Vzbid0IHdvcmsgd2l0aCB3aW4z
MiBweXRob24gZ210aW1lLCB3ZSBhbHdheXMKKyAgICAjIGdpdmUgdGhlIGVwb2NoIGluIHV0Ywor
ICAgIGlmIHNlY3MgPT0gMDoKKyAgICAgICAgb2Zmc2V0ID0gMAorICAgIGlmIHNlY3MgKyBvZmZz
ZXQgPCAwOgorICAgICAgICBmcm9tIHdhcm5pbmdzIGltcG9ydCB3YXJuCisgICAgICAgIHdhcm4o
ImdtdGltZSBvZiBuZWdhdGl2ZSB0aW1lICglcywgJXMpIG1heSBub3Qgd29yayBvbiBXaW5kb3dz
IiAlCisgICAgICAgICAgICAgICAgKHNlY3MsIG9mZnNldCkpCisgICAgcmV0dXJuIG9zdXRpbHMu
Zm9ybWF0X2RhdGUoc2Vjcywgb2Zmc2V0PW9mZnNldCwKKyAgICAgICAgICAgIGRhdGVfZm10PScl
WS0lbS0lZCAlSDolTTolUycpCiAKIAogZGVmIHBhcnNlX3BhdGNoX2RhdGUoZGF0ZV9zdHIpOgpA
QCAtMTM5LDggKzE1MCwxMSBAQAogICAgIEludmVyc2Ugb2YgZm9ybWF0X3BhdGNoX2RhdGUuCiAg
ICAgIiIiCiAgICAgc2Vjc19zdHIgPSBkYXRlX3N0cls6LTZdCi0gICAgb2Zmc2V0X3N0ciA9IGRh
dGVfc3RyWy02Ol0KLSAgICBvZmZzZXQgPSBpbnQob2Zmc2V0X3N0cikgKiAzNgorICAgIG9mZnNl
dF9zdHIgPSBkYXRlX3N0clstNTpdCisgICAgYXNzZXJ0IGxlbihvZmZzZXRfc3RyKSA9PSA1LCBc
CisgICAgICAgICAgICAiaW52YWxpZCB0aW1lem9uZSAlciIgJSBvZmZzZXRfc3RyCisgICAgb2Zm
c2V0X2hvdXJzLCBvZmZzZXRfbWlucyA9IG9mZnNldF9zdHJbOjNdLCBvZmZzZXRfc3RyWzM6XQor
ICAgIG9mZnNldCA9IGludChvZmZzZXRfaG91cnMpICogMzYwMCArIGludChvZmZzZXRfbWlucykg
KiA2MAogICAgIHRtX3RpbWUgPSB0aW1lLnN0cnB0aW1lKHNlY3Nfc3RyLCAnJVktJW0tJWQgJUg6
JU06JVMnKQogICAgICMgYWRqdXN0IHNlY29uZHMgYWNjb3JkaW5nIHRvIG9mZnNldCBiZWZvcmUg
Y29udmVydGluZyB0byBQT1NJWAogICAgICMgdGltZXN0YW1wLCB0byBhdm9pZCBlZGdlIHByb2Js
ZW1zCgo=

=== modified file bzrlib/transport/__init__.py // last-changed:john@arbash-mein
... el.com-20070508200050-4imwmtzep8fx5v7w // encoding:base64
LS0tIGJ6cmxpYi90cmFuc3BvcnQvX19pbml0X18ucHkKKysrIGJ6cmxpYi90cmFuc3BvcnQvX19p
bml0X18ucHkKQEAgLTYzLDY0ICs2MywxMiBAQAogICAgIG11dHRlciwKICAgICB3YXJuaW5nLAog
ICAgICkKLQotIyB7cHJlZml4OiBbdHJhbnNwb3J0X2NsYXNzZXNdfQotIyBUcmFuc3BvcnRzIGFy
ZSBpbnNlcnRlZCBvbnRvIHRoZSBsaXN0IExJRk8gYW5kIHRyaWVkIGluIG9yZGVyOyBhcyBhIHJl
c3VsdAotIyB0cmFuc3BvcnRzIHByb3ZpZGVkIGJ5IHBsdWdpbnMgYXJlIHRyaWVkIGZpcnN0LCB3
aGljaCBpcyB1c3VhbGx5IHdoYXQgd2UKLSMgd2FudC4KLV9wcm90b2NvbF9oYW5kbGVycyA9IHsK
LX0KLQotZGVmIHJlZ2lzdGVyX3RyYW5zcG9ydChwcmVmaXgsIGtsYXNzLCBvdmVycmlkZT1ERVBS
RUNBVEVEX1BBUkFNRVRFUik6Ci0gICAgIiIiUmVnaXN0ZXIgYSB0cmFuc3BvcnQgdGhhdCBjYW4g
YmUgdXNlZCB0byBvcGVuIFVSTHMKLQotICAgIE5vcm1hbGx5IHlvdSBzaG91bGQgdXNlIHJlZ2lz
dGVyX2xhenlfdHJhbnNwb3J0LCB3aGljaCBkZWZlcnMgbG9hZGluZyB0aGUKLSAgICBpbXBsZW1l
bnRhdGlvbiB1bnRpbCBpdCdzIGFjdHVhbGx5IHVzZWQsIGFuZCBzbyBhdm9pZHMgcHVsbGluZyBp
biBwb3NzaWJseQotICAgIGxhcmdlIGltcGxlbWVudGF0aW9uIGxpYnJhcmllcy4KLSAgICAiIiIK
LSAgICAjIE5vdGUgdGhhdCB0aGlzIGNvZGUgcnVucyB2ZXJ5IGVhcmx5IGluIGxpYnJhcnkgc2V0
dXAgLS0gdHJhY2UgbWF5IG5vdCBiZQotICAgICMgd29ya2luZywgZXRjLgotICAgIGdsb2JhbCBf
cHJvdG9jb2xfaGFuZGxlcnMKLSAgICBpZiBkZXByZWNhdGVkX3Bhc3NlZChvdmVycmlkZSk6Ci0g
ICAgICAgIHdhcm5pbmdzLndhcm4oInJlZ2lzdGVyX3RyYW5zcG9ydChvdmVycmlkZSkgaXMgZGVw
cmVjYXRlZCIpCi0gICAgX3Byb3RvY29sX2hhbmRsZXJzLnNldGRlZmF1bHQocHJlZml4LCBbXSku
aW5zZXJ0KDAsIGtsYXNzKQotCi0KLWRlZiByZWdpc3Rlcl9sYXp5X3RyYW5zcG9ydChzY2hlbWUs
IG1vZHVsZSwgY2xhc3NuYW1lKToKLSAgICAiIiJSZWdpc3RlciBsYXp5LWxvYWRlZCB0cmFuc3Bv
cnQgY2xhc3MuCi0KLSAgICBXaGVuIG9wZW5pbmcgYSBVUkwgd2l0aCB0aGUgZ2l2ZW4gc2NoZW1l
LCBsb2FkIHRoZSBtb2R1bGUgYW5kIHRoZW4KLSAgICBpbnN0YW50aWF0ZSB0aGUgcGFydGljdWxh
ciBjbGFzcy4gIAotCi0gICAgSWYgdGhlIG1vZHVsZSByYWlzZXMgRGVwZW5kZW5jeU5vdFByZXNl
bnQgd2hlbiBpdCdzIGltcG9ydGVkLCBpdCBpcwotICAgIHNraXBwZWQgYW5kIGFub3RoZXIgaW1w
bGVtZW50YXRpb24gb2YgdGhlIHByb3RvY29sIGlzIHRyaWVkLiAgVGhpcyBpcwotICAgIGludGVu
ZGVkIHRvIGJlIHVzZWQgd2hlbiB0aGUgaW1wbGVtZW50YXRpb24gZGVwZW5kcyBvbiBhbiBleHRl
cm5hbAotICAgIGltcGxlbWVudGF0aW9uIHRoYXQgbWF5IG5vdCBiZSBwcmVzZW50LiAgSWYgYW55
IG90aGVyIGVycm9yIGlzIHJhaXNlZCwgaXQKLSAgICBwcm9wYWdhdGVzIHVwIGFuZCB0aGUgYXR0
ZW1wdCB0byBvcGVuIHRoZSB1cmwgZmFpbHMuCi0KLSAgICA6cGFyYW0gc2NoZW1lOiBUaGUgdXJs
IHNjaGVtZSBwYXJ0LCBlZyAiZnRwOi8vIgotICAgICIiIgotICAgICMgVE9ETzogSWYgbm8gaW1w
bGVtZW50YXRpb24gb2YgYSBwcm90b2NvbCBpcyBhdmFpbGFibGUgYmVjYXVzZSBvZiBtaXNzaW5n
Ci0gICAgIyBkZXBlbmRlbmNpZXMsIHdlIHNob3VsZCBwZXJoYXBzIHNob3cgdGhlIG1lc3NhZ2Ug
YWJvdXQgd2hhdCBkZXBlbmRlbmN5Ci0gICAgIyB3YXMgbWlzc2luZy4KLSAgICBkZWYgX2xvYWRl
cihiYXNlKToKLSAgICAgICAgbW9kID0gX19pbXBvcnRfXyhtb2R1bGUsIGdsb2JhbHMoKSwgbG9j
YWxzKCksIFtjbGFzc25hbWVdKQotICAgICAgICBrbGFzcyA9IGdldGF0dHIobW9kLCBjbGFzc25h
bWUpCi0gICAgICAgIHJldHVybiBrbGFzcyhiYXNlKQotICAgIF9sb2FkZXIubW9kdWxlID0gbW9k
dWxlCi0gICAgcmVnaXN0ZXJfdHJhbnNwb3J0KHNjaGVtZSwgX2xvYWRlcikKLQotCi1kZWYgdW5y
ZWdpc3Rlcl90cmFuc3BvcnQoc2NoZW1lLCBmYWN0b3J5KToKLSAgICAiIiJVbnJlZ2lzdGVyIGEg
dHJhbnNwb3J0LiIiIgotICAgIF9wcm90b2NvbF9oYW5kbGVyc1tzY2hlbWVdLnJlbW92ZShmYWN0
b3J5KQotICAgIGlmIF9wcm90b2NvbF9oYW5kbGVyc1tzY2hlbWVdID09IFtdOgotICAgICAgICBk
ZWwgX3Byb3RvY29sX2hhbmRsZXJzW3NjaGVtZV0KK2Zyb20gYnpybGliIGltcG9ydCByZWdpc3Ry
eQogCiAKIGRlZiBfZ2V0X3Byb3RvY29sX2hhbmRsZXJzKCk6CiAgICAgIiIiUmV0dXJuIGEgZGlj
dGlvbmFyeSBvZiB7dXJscHJlZml4OiBbZmFjdG9yeV19IiIiCi0gICAgcmV0dXJuIF9wcm90b2Nv
bF9oYW5kbGVycworICAgIHJldHVybiB0cmFuc3BvcnRfbGlzdF9yZWdpc3RyeQogCiAKIGRlZiBf
c2V0X3Byb3RvY29sX2hhbmRsZXJzKG5ld19oYW5kbGVycyk6CkBAIC0xMjgsMjYgKzc2LDI0IEBA
CiAKICAgICBXQVJOSU5HIHRoaXMgd2lsbCByZW1vdmUgYWxsIGJ1aWxkIGluIHByb3RvY29scy4g
VXNlIHdpdGggY2FyZS4KICAgICAiIiIKLSAgICBnbG9iYWwgX3Byb3RvY29sX2hhbmRsZXJzCi0g
ICAgX3Byb3RvY29sX2hhbmRsZXJzID0gbmV3X2hhbmRsZXJzCisgICAgZ2xvYmFsIHRyYW5zcG9y
dF9saXN0X3JlZ2lzdHJ5CisgICAgdHJhbnNwb3J0X2xpc3RfcmVnaXN0cnkgPSBuZXdfaGFuZGxl
cnMKIAogCiBkZWYgX2NsZWFyX3Byb3RvY29sX2hhbmRsZXJzKCk6Ci0gICAgZ2xvYmFsIF9wcm90
b2NvbF9oYW5kbGVycwotICAgIF9wcm90b2NvbF9oYW5kbGVycyA9IHt9CisgICAgZ2xvYmFsIHRy
YW5zcG9ydF9saXN0X3JlZ2lzdHJ5CisgICAgdHJhbnNwb3J0X2xpc3RfcmVnaXN0cnkgPSBUcmFu
c3BvcnRMaXN0UmVnaXN0cnkoKQogCiAKIGRlZiBfZ2V0X3RyYW5zcG9ydF9tb2R1bGVzKCk6CiAg
ICAgIiIiUmV0dXJuIGEgbGlzdCBvZiB0aGUgbW9kdWxlcyBwcm92aWRpbmcgdHJhbnNwb3J0cy4i
IiIKICAgICBtb2R1bGVzID0gc2V0KCkKLSAgICBmb3IgcHJlZml4LCBmYWN0b3J5X2xpc3QgaW4g
X3Byb3RvY29sX2hhbmRsZXJzLml0ZW1zKCk6CisgICAgZm9yIHByZWZpeCwgZmFjdG9yeV9saXN0
IGluIHRyYW5zcG9ydF9saXN0X3JlZ2lzdHJ5Lml0ZXJpdGVtcygpOgogICAgICAgICBmb3IgZmFj
dG9yeSBpbiBmYWN0b3J5X2xpc3Q6Ci0gICAgICAgICAgICBpZiBmYWN0b3J5Ll9fbW9kdWxlX18g
PT0gImJ6cmxpYi50cmFuc3BvcnQiOgotICAgICAgICAgICAgICAgICMgdGhpcyBpcyBhIGxhenkg
bG9hZCB0cmFuc3BvcnQsIGJlY2F1c2Ugbm8gcmVhbCBvbmVzCi0gICAgICAgICAgICAgICAgIyBh
cmUgZGlyZWN0bHkgaW4gYnpybGliLnRyYW5zcG9ydAotICAgICAgICAgICAgICAgIG1vZHVsZXMu
YWRkKGZhY3RvcnkubW9kdWxlKQorICAgICAgICAgICAgaWYgaGFzYXR0cihmYWN0b3J5LCAiX21v
ZHVsZV9uYW1lIik6CisgICAgICAgICAgICAgICAgbW9kdWxlcy5hZGQoZmFjdG9yeS5fbW9kdWxl
X25hbWUpCiAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIG1vZHVsZXMuYWRkKGZh
Y3RvcnkuX19tb2R1bGVfXykKKyAgICAgICAgICAgICAgICBtb2R1bGVzLmFkZChmYWN0b3J5Ll9v
YmouX19tb2R1bGVfXykKICAgICAjIEFkZCBjaHJvb3QgZGlyZWN0bHksIGJlY2F1c2UgdGhlcmUg
aXMgbm90IGhhbmRsZXIgcmVnaXN0ZXJlZCBmb3IgaXQuCiAgICAgbW9kdWxlcy5hZGQoJ2J6cmxp
Yi50cmFuc3BvcnQuY2hyb290JykKICAgICByZXN1bHQgPSBsaXN0KG1vZHVsZXMpCkBAIC0xNTUs
MTIgKzEwMSw3NCBAQAogICAgIHJldHVybiByZXN1bHQKIAogCitjbGFzcyBUcmFuc3BvcnRMaXN0
UmVnaXN0cnkocmVnaXN0cnkuUmVnaXN0cnkpOgorICAgICIiIkEgcmVnaXN0cnkgd2hpY2ggc2lt
cGxpZmllcyB0cmFja2luZyBhdmFpbGFibGUgVHJhbnNwb3J0cy4KKworICAgIEEgcmVnaXN0cmF0
aW9uIG9mIGEgbmV3IHByb3RvY29sIHJlcXVpcmVzIHR3byBzdGVwOgorICAgIDEpIHJlZ2lzdGVy
IHRoZSBwcmVmaXggd2l0aCB0aGUgZnVuY3Rpb24gcmVnaXN0ZXJfdHJhbnNwb3J0KCApCisgICAg
MikgcmVnaXN0ZXIgdGhlIHByb3RvY29sIHByb3ZpZGVyIHdpdGggdGhlIGZ1bmN0aW9uCisgICAg
cmVnaXN0ZXJfdHJhbnNwb3J0X3Byb3ZpZGVyKCApICggYW5kIHRoZSAibGF6eSIgdmFyaWFudCAp
CisKKyAgICBUaGlzIGluIG5lZWRlZCBiZWNhdXNlOgorICAgIGEpIGEgc2luZ2xlIHByb3ZpZGVy
IGNhbiBzdXBwb3J0IG11bHRwbGUgcHJvdGNvbCAoIGxpa2UgdGhlIGZ0cAorICAgIHByaXZpZGVy
IHdoaWNoIHN1cHBvcnRzIGJvdGggdGhlIGZ0cDovLyBhbmQgdGhlIGFmdHA6Ly8gcHJvdG9jb2xz
ICkKKyAgICBiKSBhIHNpbmdsZSBwcm90b2NvbCBjYW4gaGF2ZSBtdWx0aXBsZSBwcm92aWRlcnMg
KCBsaWtlIHRoZSBodHRwOi8vCisgICAgcHJvdG9jb2wgd2hpY2ggaXMgc3VwcG9ydGVkIGJ5IGJv
dGggdGhlIHVybGxpYiBhbmQgcHljdXJsIHByaXZpZGVyICkKKyAgICAiIiIKKworICAgIGRlZiBy
ZWdpc3Rlcl90cmFuc3BvcnRfcHJvdmlkZXIoc2VsZiwga2V5LCBvYmopOgorICAgICAgICBzZWxm
LmdldChrZXkpLmluc2VydCgwLCByZWdpc3RyeS5fT2JqZWN0R2V0dGVyKG9iaikpCisKKyAgICBk
ZWYgcmVnaXN0ZXJfbGF6eV90cmFuc3BvcnRfcHJvdmlkZXIoc2VsZiwga2V5LCBtb2R1bGVfbmFt
ZSwgbWVtYmVyX25hbWUpOgorICAgICAgICBzZWxmLmdldChrZXkpLmluc2VydCgwLCAKKyAgICAg
ICAgICAgICAgICByZWdpc3RyeS5fTGF6eU9iamVjdEdldHRlcihtb2R1bGVfbmFtZSwgbWVtYmVy
X25hbWUpKQorCisgICAgZGVmIHJlZ2lzdGVyX3RyYW5zcG9ydChzZWxmLCBrZXksIGhlbHA9Tm9u
ZSwgaW5mbz1Ob25lKToKKyAgICAgICAgc2VsZi5yZWdpc3RlcihrZXksIFtdLCBoZWxwLCBpbmZv
KQorCisgICAgZGVmIHNldF9kZWZhdWx0X3RyYW5zcG9ydChzZWxmLCBrZXk9Tm9uZSk6CisgICAg
ICAgICIiIlJldHVybiBlaXRoZXIgJ2tleScgb3IgdGhlIGRlZmF1bHQga2V5IGlmIGtleSBpcyBO
b25lIiIiCisgICAgICAgIHNlbGYuX2RlZmF1bHRfa2V5ID0ga2V5CisKKwordHJhbnNwb3J0X2xp
c3RfcmVnaXN0cnkgPSBUcmFuc3BvcnRMaXN0UmVnaXN0cnkoICkKKworCitkZWYgcmVnaXN0ZXJf
dHJhbnNwb3J0X3Byb3RvKHByZWZpeCwgaGVscD1Ob25lLCBpbmZvPU5vbmUpOgorICAgIHRyYW5z
cG9ydF9saXN0X3JlZ2lzdHJ5LnJlZ2lzdGVyX3RyYW5zcG9ydChwcmVmaXgsIGhlbHAsIGluZm8p
CisKKworZGVmIHJlZ2lzdGVyX2xhenlfdHJhbnNwb3J0KHByZWZpeCwgbW9kdWxlLCBjbGFzc25h
bWUpOgorICAgIGlmIG5vdCBwcmVmaXggaW4gdHJhbnNwb3J0X2xpc3RfcmVnaXN0cnk6CisgICAg
ICAgIHJlZ2lzdGVyX3RyYW5zcG9ydF9wcm90byhwcmVmaXgpCisgICAgdHJhbnNwb3J0X2xpc3Rf
cmVnaXN0cnkucmVnaXN0ZXJfbGF6eV90cmFuc3BvcnRfcHJvdmlkZXIocHJlZml4LCBtb2R1bGUs
IGNsYXNzbmFtZSkKKworCitkZWYgcmVnaXN0ZXJfdHJhbnNwb3J0KHByZWZpeCwga2xhc3MsIG92
ZXJyaWRlPURFUFJFQ0FURURfUEFSQU1FVEVSKToKKyAgICBpZiBub3QgcHJlZml4IGluIHRyYW5z
cG9ydF9saXN0X3JlZ2lzdHJ5OgorICAgICAgICByZWdpc3Rlcl90cmFuc3BvcnRfcHJvdG8ocHJl
Zml4KQorICAgIHRyYW5zcG9ydF9saXN0X3JlZ2lzdHJ5LnJlZ2lzdGVyX3RyYW5zcG9ydF9wcm92
aWRlcihwcmVmaXgsIGtsYXNzKQorCisKIGRlZiByZWdpc3Rlcl91cmxwYXJzZV9uZXRsb2NfcHJv
dG9jb2wocHJvdG9jb2wpOgogICAgICIiIkVuc3VyZSB0aGF0IHByb3RvY29sIGlzIHNldHVwIHRv
IGJlIHVzZWQgd2l0aCB1cmxwYXJzZSBuZXRsb2MgcGFyc2luZy4iIiIKICAgICBpZiBwcm90b2Nv
bCBub3QgaW4gdXJscGFyc2UudXNlc19uZXRsb2M6CiAgICAgICAgIHVybHBhcnNlLnVzZXNfbmV0
bG9jLmFwcGVuZChwcm90b2NvbCkKIAogCitkZWYgdW5yZWdpc3Rlcl90cmFuc3BvcnQoc2NoZW1l
LCBmYWN0b3J5KToKKyAgICAiIiJVbnJlZ2lzdGVyIGEgdHJhbnNwb3J0LiIiIgorICAgIGwgPSB0
cmFuc3BvcnRfbGlzdF9yZWdpc3RyeS5nZXQoc2NoZW1lKQorICAgIGZvciBpIGluIGw6CisgICAg
ICAgIG8gPSBpLmdldF9vYmooICkKKyAgICAgICAgaWYgbyA9PSBmYWN0b3J5OgorICAgICAgICAg
ICAgdHJhbnNwb3J0X2xpc3RfcmVnaXN0cnkuZ2V0KHNjaGVtZSkucmVtb3ZlKGkpCisgICAgICAg
ICAgICBicmVhaworICAgIGlmIGxlbihsKSA9PSAwOgorICAgICAgICB0cmFuc3BvcnRfbGlzdF9y
ZWdpc3RyeS5yZW1vdmUoc2NoZW1lKQorCisKKwogZGVmIHNwbGl0X3VybCh1cmwpOgogICAgICMg
VE9ETzogamFtIDIwMDYwNjA2IHVybHMgc2hvdWxkIG9ubHkgYmUgYXNjaWksIG9yIHRoZXkgc2hv
dWxkIHJhaXNlIEludmFsaWRVUkwKICAgICBpZiBpc2luc3RhbmNlKHVybCwgdW5pY29kZSk6CkBA
IC0yNjgsNiArMjc2LDIyIEBACiAgICAgICAgICIiIgogICAgICAgICByYWlzZSBOb3RJbXBsZW1l
bnRlZEVycm9yKHNlbGYuY2xvbmUpCiAKKyAgICBkZWYgZW5zdXJlX2Jhc2Uoc2VsZik6CisgICAg
ICAgICIiIkVuc3VyZSB0aGF0IHRoZSBkaXJlY3RvcnkgdGhpcyB0cmFuc3BvcnQgcmVmZXJlbmNl
cyBleGlzdHMuCisKKyAgICAgICAgVGhpcyB3aWxsIGNyZWF0ZSBhIGRpcmVjdG9yeSBpZiBpdCBk
b2Vzbid0IGV4aXN0LgorICAgICAgICA6cmV0dXJuOiBUcnVlIGlmIHRoZSBkaXJlY3Rvcnkgd2Fz
IGNyZWF0ZWQsIEZhbHNlIG90aGVyd2lzZS4KKyAgICAgICAgIiIiCisgICAgICAgICMgVGhlIGRl
ZmF1bHQgaW1wbGVtZW50YXRpb24ganVzdCB1c2VzICJFYXNpZXIgdG8gYXNrIGZvciBmb3JnaXZl
bmVzcworICAgICAgICAjIHRoYW4gcGVybWlzc2lvbiIuIFdlIGF0dGVtcHQgdG8gY3JlYXRlIHRo
ZSBkaXJlY3RvcnksIGFuZCBqdXN0CisgICAgICAgICMgc3VwcHJlc3MgYSBGaWxlRXhpc3RzIGV4
Y2VwdGlvbi4KKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgc2VsZi5ta2RpcignLicpCisgICAg
ICAgIGV4Y2VwdCBlcnJvcnMuRmlsZUV4aXN0czoKKyAgICAgICAgICAgIHJldHVybiBGYWxzZQor
ICAgICAgICBlbHNlOgorICAgICAgICAgICAgcmV0dXJuIFRydWUKKwogICAgIGRlZiBzaG91bGRf
Y2FjaGUoc2VsZik6CiAgICAgICAgICIiIlJldHVybiBUcnVlIGlmIHRoZSBkYXRhIHB1bGxlZCBh
Y3Jvc3Mgc2hvdWxkIGJlIGNhY2hlZCBsb2NhbGx5LgogICAgICAgICAiIiIKQEAgLTQwMyw5ICs0
MjcsOCBAQAogICAgICAgICBUaGlzIGZ1bmN0aW9uIHdpbGwgb25seSBiZSBkZWZpbmVkIGZvciBU
cmFuc3BvcnRzIHdoaWNoIGhhdmUgYQogICAgICAgICBwaHlzaWNhbCBsb2NhbCBmaWxlc3lzdGVt
IHJlcHJlc2VudGF0aW9uLgogICAgICAgICAiIiIKLSAgICAgICAgIyBUT0RPOiBqYW0gMjAwNjA0
MjYgU2hvdWxkIHRoaXMgcmFpc2UgTm90TG9jYWxVcmwgaW5zdGVhZD8KLSAgICAgICAgcmFpc2Ug
ZXJyb3JzLlRyYW5zcG9ydE5vdFBvc3NpYmxlKCdUaGlzIGlzIG5vdCBhIExvY2FsVHJhbnNwb3J0
LCcKLSAgICAgICAgICAgICcgc28gdGhlcmUgaXMgbm8gbG9jYWwgcmVwcmVzZW50YXRpb24gZm9y
IGEgcGF0aCcpCisgICAgICAgIHJhaXNlIGVycm9ycy5Ob3RMb2NhbFVybChzZWxmLmFic3BhdGgo
cmVscGF0aCkpCisKIAogICAgIGRlZiBoYXMoc2VsZiwgcmVscGF0aCk6CiAgICAgICAgICIiIkRv
ZXMgdGhlIGZpbGUgcmVscGF0aCBleGlzdD8KQEAgLTYxOCw4ICs2NDEsOSBAQAogICAgICAgICA6
cGFyYW0gbW9kZTogQ3JlYXRlIHRoZSBmaWxlIHdpdGggdGhlIGdpdmVuIG1vZGUuCiAgICAgICAg
IDpyZXR1cm46IE5vbmUKICAgICAgICAgIiIiCi0gICAgICAgIGFzc2VydCBpc2luc3RhbmNlKGJ5
dGVzLCBzdHIpLCBcCi0gICAgICAgICAgICAnYnl0ZXMgbXVzdCBiZSBhIHBsYWluIHN0cmluZywg
bm90ICVzJyAlIHR5cGUoYnl0ZXMpCisgICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKGJ5dGVzLCBz
dHIpOgorICAgICAgICAgICAgcmFpc2UgQXNzZXJ0aW9uRXJyb3IoCisgICAgICAgICAgICAgICAg
J2J5dGVzIG11c3QgYmUgYSBwbGFpbiBzdHJpbmcsIG5vdCAlcycgJSB0eXBlKGJ5dGVzKSkKICAg
ICAgICAgcmV0dXJuIHNlbGYucHV0X2ZpbGUocmVscGF0aCwgU3RyaW5nSU8oYnl0ZXMpLCBtb2Rl
PW1vZGUpCiAKICAgICBkZWYgcHV0X2J5dGVzX25vbl9hdG9taWMoc2VsZiwgcmVscGF0aCwgYnl0
ZXMsIG1vZGU9Tm9uZSwKQEAgLTY0MCw4ICs2NjQsOSBAQAogICAgICAgICAgICAgICAgICAgICAg
ICAgY3JlYXRlIGl0LCBhbmQgdGhlbiB0cnkgYWdhaW4uCiAgICAgICAgIDpwYXJhbSBkaXJfbW9k
ZTogUG9zc2libGUgYWNjZXNzIHBlcm1pc3Npb25zIGZvciBuZXcgZGlyZWN0b3JpZXMuCiAgICAg
ICAgICIiIgotICAgICAgICBhc3NlcnQgaXNpbnN0YW5jZShieXRlcywgc3RyKSwgXAotICAgICAg
ICAgICAgJ2J5dGVzIG11c3QgYmUgYSBwbGFpbiBzdHJpbmcsIG5vdCAlcycgJSB0eXBlKGJ5dGVz
KQorICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShieXRlcywgc3RyKToKKyAgICAgICAgICAgIHJh
aXNlIEFzc2VydGlvbkVycm9yKAorICAgICAgICAgICAgICAgICdieXRlcyBtdXN0IGJlIGEgcGxh
aW4gc3RyaW5nLCBub3QgJXMnICUgdHlwZShieXRlcykpCiAgICAgICAgIHNlbGYucHV0X2ZpbGVf
bm9uX2F0b21pYyhyZWxwYXRoLCBTdHJpbmdJTyhieXRlcyksIG1vZGU9bW9kZSwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNyZWF0ZV9wYXJlbnRfZGlyPWNyZWF0ZV9wYXJlbnRf
ZGlyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlyX21vZGU9ZGlyX21vZGUp
CkBAIC0xMDE5LDcgKzEwNDQsNyBAQAogCiAgICAgYmFzZSBpcyBlaXRoZXIgYSBVUkwgb3IgYSBk
aXJlY3RvcnkgbmFtZS4gIAogICAgICIiIgotICAgIGdsb2JhbCBfcHJvdG9jb2xfaGFuZGxlcnMK
KwogICAgIGlmIGJhc2UgaXMgTm9uZToKICAgICAgICAgYmFzZSA9ICcuJwogICAgIGxhc3RfZXJy
ID0gTm9uZQpAQCAtMTA0Myw3ICsxMDY4LDcgQEAKICAgICAgICAgYmFzZSA9IGNvbnZlcnRfcGF0
aF90b191cmwoYmFzZSwKICAgICAgICAgICAgICdVUkxzIG11c3QgYmUgcHJvcGVybHkgZXNjYXBl
ZCAocHJvdG9jb2w6ICVzKScpCiAgICAgCi0gICAgZm9yIHByb3RvLCBmYWN0b3J5X2xpc3QgaW4g
X3Byb3RvY29sX2hhbmRsZXJzLml0ZXJpdGVtcygpOgorICAgIGZvciBwcm90bywgZmFjdG9yeV9s
aXN0IGluIHRyYW5zcG9ydF9saXN0X3JlZ2lzdHJ5Lml0ZXJpdGVtcygpOgogICAgICAgICBpZiBw
cm90byBpcyBub3QgTm9uZSBhbmQgYmFzZS5zdGFydHN3aXRoKHByb3RvKToKICAgICAgICAgICAg
IHQsIGxhc3RfZXJyID0gX3RyeV90cmFuc3BvcnRfZmFjdG9yaWVzKGJhc2UsIGZhY3RvcnlfbGlz
dCkKICAgICAgICAgICAgIGlmIHQ6CkBAIC0xMDU0LDkgKzEwNzksOSBAQAogICAgIGJhc2UgPSBj
b252ZXJ0X3BhdGhfdG9fdXJsKGJhc2UsICdVbnN1cHBvcnRlZCBwcm90b2NvbDogJXMnKQogCiAg
ICAgIyBUaGUgZGVmYXVsdCBoYW5kbGVyIGlzIHRoZSBmaWxlc3lzdGVtIGhhbmRsZXIsIHN0b3Jl
ZCBhcyBwcm90b2NvbCBOb25lCi0gICAgcmV0dXJuIF90cnlfdHJhbnNwb3J0X2ZhY3Rvcmllcyhi
YXNlLCBfcHJvdG9jb2xfaGFuZGxlcnNbTm9uZV0pWzBdCi0KLQorICAgIHJldHVybiBfdHJ5X3Ry
YW5zcG9ydF9mYWN0b3JpZXMoYmFzZSwKKyAgICAgICAgICAgICAgICAgICAgdHJhbnNwb3J0X2xp
c3RfcmVnaXN0cnkuZ2V0KE5vbmUpKVswXQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgCiBkZWYgZG9fY2F0Y2hpbmdfcmVkaXJlY3Rpb25zKGFjdGlv
biwgdHJhbnNwb3J0LCByZWRpcmVjdGVkKToKICAgICAiIiJFeGVjdXRlIGFuIGFjdGlvbiB3aXRo
IGdpdmVuIHRyYW5zcG9ydCBjYXRjaGluZyByZWRpcmVjdGlvbnMuCiAKQEAgLTExMDMsNyArMTEy
OCw3IEBACiAgICAgbGFzdF9lcnIgPSBOb25lCiAgICAgZm9yIGZhY3RvcnkgaW4gZmFjdG9yeV9s
aXN0OgogICAgICAgICB0cnk6Ci0gICAgICAgICAgICByZXR1cm4gZmFjdG9yeShiYXNlKSwgTm9u
ZQorICAgICAgICAgICAgcmV0dXJuIGZhY3RvcnkuZ2V0X29iaigpKGJhc2UpLCBOb25lCiAgICAg
ICAgIGV4Y2VwdCBlcnJvcnMuRGVwZW5kZW5jeU5vdFByZXNlbnQsIGU6CiAgICAgICAgICAgICBt
dXR0ZXIoImZhaWxlZCB0byBpbnN0YW50aWF0ZSB0cmFuc3BvcnQgJXIgZm9yICVyOiAlciIgJQog
ICAgICAgICAgICAgICAgICAgICAoZmFjdG9yeSwgYmFzZSwgZSkpCkBAIC0xMTc2LDggKzEyMDEs
MTAgQEAKICAgICBkZWYgZ2V0X3RyYW5zcG9ydF90ZXN0X3Blcm11dGF0aW9ucyhzZWxmLCBtb2R1
bGUpOgogICAgICAgICAiIiJHZXQgdGhlIHBlcm11dGF0aW9ucyBtb2R1bGUgd2FudHMgdG8gaGF2
ZSB0ZXN0ZWQuIiIiCiAgICAgICAgIGlmIGdldGF0dHIobW9kdWxlLCAnZ2V0X3Rlc3RfcGVybXV0
YXRpb25zJywgTm9uZSkgaXMgTm9uZToKLSAgICAgICAgICAgIHdhcm5pbmcoInRyYW5zcG9ydCBt
b2R1bGUgJXMgZG9lc24ndCBwcm92aWRlIGdldF90ZXN0X3Blcm11dGF0aW9ucygpIgorICAgICAg
ICAgICAgcmFpc2UgQXNzZXJ0aW9uRXJyb3IoInRyYW5zcG9ydCBtb2R1bGUgJXMgZG9lc24ndCBw
cm92aWRlIGdldF90ZXN0X3Blcm11dGF0aW9ucygpIgogICAgICAgICAgICAgICAgICAgICAlIG1v
ZHVsZS5fX25hbWVfXykKKyAgICAgICAgICAgICMjd2FybmluZygidHJhbnNwb3J0IG1vZHVsZSAl
cyBkb2Vzbid0IHByb3ZpZGUgZ2V0X3Rlc3RfcGVybXV0YXRpb25zKCkiCisgICAgICAgICAgICAj
IyAgICAgICAlIG1vZHVsZS5fX25hbWVfXykKICAgICAgICAgICAgIHJldHVybiBbXQogICAgICAg
ICByZXR1cm4gbW9kdWxlLmdldF90ZXN0X3Blcm11dGF0aW9ucygpCiAKQEAgLTEyMTgsNDQgKzEy
NDUsODUgQEAKICAgICBkZWYgcmVhZHYoc2VsZiwgbmFtZSwgb2Zmc2V0cyk6CiAgICAgICAgIHNl
bGYuX2NhbGxzLmFwcGVuZCgobmFtZSwgb2Zmc2V0cykpCiAgICAgICAgIHJldHVybiBzZWxmLl9h
ZGFwdGVkLnJlYWR2KG5hbWUsIG9mZnNldHMpCi0gICAgICAgIAorCiAKICMgTm9uZSBpcyB0aGUg
ZGVmYXVsdCB0cmFuc3BvcnQsIGZvciB0aGluZ3Mgd2l0aCBubyB1cmwgc2NoZW1lCi1yZWdpc3Rl
cl9sYXp5X3RyYW5zcG9ydChOb25lLCAnYnpybGliLnRyYW5zcG9ydC5sb2NhbCcsICdMb2NhbFRy
YW5zcG9ydCcpCityZWdpc3Rlcl90cmFuc3BvcnRfcHJvdG8oJ2ZpbGU6Ly8nLAorICAgICAgICAg
ICAgaGVscD0iQWNjZXNzIHVzaW5nIHRoZSBzdGFuZGFyZCBmaWxlc3lzdGVtIChkZWZhdWx0KSIp
CiByZWdpc3Rlcl9sYXp5X3RyYW5zcG9ydCgnZmlsZTovLycsICdienJsaWIudHJhbnNwb3J0Lmxv
Y2FsJywgJ0xvY2FsVHJhbnNwb3J0JykKK3RyYW5zcG9ydF9saXN0X3JlZ2lzdHJ5LnNldF9kZWZh
dWx0X3RyYW5zcG9ydCgiZmlsZTovLyIpCisKK3JlZ2lzdGVyX3RyYW5zcG9ydF9wcm90bygnc2Z0
cDovLycsCisgICAgICAgICAgICBoZWxwPSJBY2Nlc3MgdXNpbmcgU0ZUUCAobW9zdCBTU0ggc2Vy
dmVycyBwcm92aWRlIFNGVFApLiIpCiByZWdpc3Rlcl9sYXp5X3RyYW5zcG9ydCgnc2Z0cDovLycs
ICdienJsaWIudHJhbnNwb3J0LnNmdHAnLCAnU0ZUUFRyYW5zcG9ydCcpCiAjIERlY29yYXRlZCBo
dHRwIHRyYW5zcG9ydAorcmVnaXN0ZXJfdHJhbnNwb3J0X3Byb3RvKCdodHRwK3VybGxpYjovLycs
CisjICAgICAgICAgICAgICAgIGhlbHA9IlJlYWQtb25seSBhY2Nlc3Mgb2YgYnJhbmNoZXMgZXhw
b3J0ZWQgb24gdGhlIHdlYi4iCisgICAgICAgICAgICApCiByZWdpc3Rlcl9sYXp5X3RyYW5zcG9y
dCgnaHR0cCt1cmxsaWI6Ly8nLCAnYnpybGliLnRyYW5zcG9ydC5odHRwLl91cmxsaWInLAogICAg
ICAgICAgICAgICAgICAgICAgICAgJ0h0dHBUcmFuc3BvcnRfdXJsbGliJykKK3JlZ2lzdGVyX3Ry
YW5zcG9ydF9wcm90bygnaHR0cHMrdXJsbGliOi8vJywKKyMgICAgICAgICAgICAgICAgaGVscD0i
UmVhZC1vbmx5IGFjY2VzcyBvZiBicmFuY2hlcyBleHBvcnRlZCBvbiB0aGUgd2ViIHVzaW5nIFNT
TC4iCisgICAgICAgICAgICApCiByZWdpc3Rlcl9sYXp5X3RyYW5zcG9ydCgnaHR0cHMrdXJsbGli
Oi8vJywgJ2J6cmxpYi50cmFuc3BvcnQuaHR0cC5fdXJsbGliJywKICAgICAgICAgICAgICAgICAg
ICAgICAgICdIdHRwVHJhbnNwb3J0X3VybGxpYicpCityZWdpc3Rlcl90cmFuc3BvcnRfcHJvdG8o
J2h0dHArcHljdXJsOi8vJywKKyMgICAgICAgICAgICAgICAgaGVscD0iUmVhZC1vbmx5IGFjY2Vz
cyBvZiBicmFuY2hlcyBleHBvcnRlZCBvbiB0aGUgd2ViLiIKKyAgICAgICAgICAgICkKIHJlZ2lz
dGVyX2xhenlfdHJhbnNwb3J0KCdodHRwK3B5Y3VybDovLycsICdienJsaWIudHJhbnNwb3J0Lmh0
dHAuX3B5Y3VybCcsCiAgICAgICAgICAgICAgICAgICAgICAgICAnUHlDdXJsVHJhbnNwb3J0JykK
K3JlZ2lzdGVyX3RyYW5zcG9ydF9wcm90bygnaHR0cHMrcHljdXJsOi8vJywKKyMgICAgICAgICAg
ICAgICAgaGVscD0iUmVhZC1vbmx5IGFjY2VzcyBvZiBicmFuY2hlcyBleHBvcnRlZCBvbiB0aGUg
d2ViIHVzaW5nIFNTTC4iCisgICAgICAgICAgICApCiByZWdpc3Rlcl9sYXp5X3RyYW5zcG9ydCgn
aHR0cHMrcHljdXJsOi8vJywgJ2J6cmxpYi50cmFuc3BvcnQuaHR0cC5fcHljdXJsJywKICAgICAg
ICAgICAgICAgICAgICAgICAgICdQeUN1cmxUcmFuc3BvcnQnKQogIyBEZWZhdWx0IGh0dHAgdHJh
bnNwb3J0cyAobGFzdCBkZWNsYXJlZCB3aW5zIChpZiBpdCBjYW4gYmUgaW1wb3J0ZWQpKQorcmVn
aXN0ZXJfdHJhbnNwb3J0X3Byb3RvKCdodHRwOi8vJywKKyAgICAgICAgICAgIGhlbHA9IlJlYWQt
b25seSBhY2Nlc3Mgb2YgYnJhbmNoZXMgZXhwb3J0ZWQgb24gdGhlIHdlYi4iKQorcmVnaXN0ZXJf
dHJhbnNwb3J0X3Byb3RvKCdodHRwczovLycsCisgICAgICAgICAgICBoZWxwPSJSZWFkLW9ubHkg
YWNjZXNzIG9mIGJyYW5jaGVzIGV4cG9ydGVkIG9uIHRoZSB3ZWIgdXNpbmcgU1NMLiIpCiByZWdp
c3Rlcl9sYXp5X3RyYW5zcG9ydCgnaHR0cDovLycsICdienJsaWIudHJhbnNwb3J0Lmh0dHAuX3Vy
bGxpYicsCiAgICAgICAgICAgICAgICAgICAgICAgICAnSHR0cFRyYW5zcG9ydF91cmxsaWInKQog
cmVnaXN0ZXJfbGF6eV90cmFuc3BvcnQoJ2h0dHBzOi8vJywgJ2J6cmxpYi50cmFuc3BvcnQuaHR0
cC5fdXJsbGliJywKICAgICAgICAgICAgICAgICAgICAgICAgICdIdHRwVHJhbnNwb3J0X3VybGxp
YicpCiByZWdpc3Rlcl9sYXp5X3RyYW5zcG9ydCgnaHR0cDovLycsICdienJsaWIudHJhbnNwb3J0
Lmh0dHAuX3B5Y3VybCcsICdQeUN1cmxUcmFuc3BvcnQnKQogcmVnaXN0ZXJfbGF6eV90cmFuc3Bv
cnQoJ2h0dHBzOi8vJywgJ2J6cmxpYi50cmFuc3BvcnQuaHR0cC5fcHljdXJsJywgJ1B5Q3VybFRy
YW5zcG9ydCcpCisKK3JlZ2lzdGVyX3RyYW5zcG9ydF9wcm90bygnZnRwOi8vJywKKyAgICAgICAg
ICAgIGhlbHA9IkFjY2VzcyB1c2luZyBwYXNzaXZlIEZUUC4iKQogcmVnaXN0ZXJfbGF6eV90cmFu
c3BvcnQoJ2Z0cDovLycsICdienJsaWIudHJhbnNwb3J0LmZ0cCcsICdGdHBUcmFuc3BvcnQnKQor
cmVnaXN0ZXJfdHJhbnNwb3J0X3Byb3RvKCdhZnRwOi8vJywKKyAgICAgICAgICAgIGhlbHA9IkFj
Y2VzcyB1c2luZyBhY3RpdmUgRlRQLiIpCiByZWdpc3Rlcl9sYXp5X3RyYW5zcG9ydCgnYWZ0cDov
LycsICdienJsaWIudHJhbnNwb3J0LmZ0cCcsICdGdHBUcmFuc3BvcnQnKQorCityZWdpc3Rlcl90
cmFuc3BvcnRfcHJvdG8oJ21lbW9yeTovLycpCiByZWdpc3Rlcl9sYXp5X3RyYW5zcG9ydCgnbWVt
b3J5Oi8vJywgJ2J6cmxpYi50cmFuc3BvcnQubWVtb3J5JywgJ01lbW9yeVRyYW5zcG9ydCcpCi1y
ZWdpc3Rlcl9sYXp5X3RyYW5zcG9ydCgnY2hyb290KycsICdienJsaWIudHJhbnNwb3J0LmNocm9v
dCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAnQ2hyb290VHJhbnNwb3J0RGVjb3JhdG9yJykK
K3JlZ2lzdGVyX3RyYW5zcG9ydF9wcm90bygnY2hyb290KycpCisKK3JlZ2lzdGVyX3RyYW5zcG9y
dF9wcm90bygncmVhZG9ubHkrJywKKyMgICAgICAgICAgICAgIGhlbHA9IlRoaXMgbW9kaWZpZXIg
Y29udmVydHMgYW55IHRyYW5zcG9ydCB0byBiZSByZWFkb25seS4iCisgICAgICAgICAgICApCiBy
ZWdpc3Rlcl9sYXp5X3RyYW5zcG9ydCgncmVhZG9ubHkrJywgJ2J6cmxpYi50cmFuc3BvcnQucmVh
ZG9ubHknLCAnUmVhZG9ubHlUcmFuc3BvcnREZWNvcmF0b3InKQorcmVnaXN0ZXJfdHJhbnNwb3J0
X3Byb3RvKCdmYWtlbmZzKycpCiByZWdpc3Rlcl9sYXp5X3RyYW5zcG9ydCgnZmFrZW5mcysnLCAn
YnpybGliLnRyYW5zcG9ydC5mYWtlbmZzJywgJ0Zha2VORlNUcmFuc3BvcnREZWNvcmF0b3InKQor
cmVnaXN0ZXJfdHJhbnNwb3J0X3Byb3RvKCd2ZmF0KycpCiByZWdpc3Rlcl9sYXp5X3RyYW5zcG9y
dCgndmZhdCsnLAogICAgICAgICAgICAgICAgICAgICAgICAgJ2J6cmxpYi50cmFuc3BvcnQuZmFr
ZXZmYXQnLAogICAgICAgICAgICAgICAgICAgICAgICAgJ0Zha2VWRkFUVHJhbnNwb3J0RGVjb3Jh
dG9yJykKK3JlZ2lzdGVyX3RyYW5zcG9ydF9wcm90bygnYnpyOi8vJywKKyAgICAgICAgICAgIGhl
bHA9IkZhc3QgYWNjZXNzIHVzaW5nIHRoZSBCYXphYXIgc21hcnQgc2VydmVyLiIpCisKIHJlZ2lz
dGVyX2xhenlfdHJhbnNwb3J0KCdienI6Ly8nLAotICAgICAgICAgICAgICAgICAgICAgICAgJ2J6
cmxpYi50cmFuc3BvcnQuc21hcnQnLAotICAgICAgICAgICAgICAgICAgICAgICAgJ1NtYXJ0VENQ
VHJhbnNwb3J0JykKKyAgICAgICAgICAgICAgICAgICAgICAgICdienJsaWIudHJhbnNwb3J0LnJl
bW90ZScsCisgICAgICAgICAgICAgICAgICAgICAgICAnUmVtb3RlVENQVHJhbnNwb3J0JykKK3Jl
Z2lzdGVyX3RyYW5zcG9ydF9wcm90bygnYnpyK2h0dHA6Ly8nLAorIyAgICAgICAgICAgICAgICBo
ZWxwPSJGYXN0IGFjY2VzcyB1c2luZyB0aGUgQmF6YWFyIHNtYXJ0IHNlcnZlciBvdmVyIEhUVFAu
IgorICAgICAgICAgICAgICkKIHJlZ2lzdGVyX2xhenlfdHJhbnNwb3J0KCdienIraHR0cDovLycs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAnYnpybGliLnRyYW5zcG9ydC5zbWFydCcsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAnU21hcnRIVFRQVHJhbnNwb3J0JykKKyAgICAgICAgICAgICAg
ICAgICAgICAgICdienJsaWIudHJhbnNwb3J0LnJlbW90ZScsCisgICAgICAgICAgICAgICAgICAg
ICAgICAnUmVtb3RlSFRUUFRyYW5zcG9ydCcpCityZWdpc3Rlcl90cmFuc3BvcnRfcHJvdG8oJ2J6
citzc2g6Ly8nLAorICAgICAgICAgICAgaGVscD0iRmFzdCBhY2Nlc3MgdXNpbmcgdGhlIEJhemFh
ciBzbWFydCBzZXJ2ZXIgb3ZlciBTU0guIikKIHJlZ2lzdGVyX2xhenlfdHJhbnNwb3J0KCdienIr
c3NoOi8vJywKLSAgICAgICAgICAgICAgICAgICAgICAgICdienJsaWIudHJhbnNwb3J0LnNtYXJ0
JywKLSAgICAgICAgICAgICAgICAgICAgICAgICdTbWFydFNTSFRyYW5zcG9ydCcpCisgICAgICAg
ICAgICAgICAgICAgICAgICAnYnpybGliLnRyYW5zcG9ydC5yZW1vdGUnLAorICAgICAgICAgICAg
ICAgICAgICAgICAgJ1JlbW90ZVNTSFRyYW5zcG9ydCcpCgo=

=== modified file bzrlib/transport/ftp.py // last-changed:bialix@ukr.net-200704
... 18140646-jtfgh5592o6au3zn // encoding:base64
LS0tIGJ6cmxpYi90cmFuc3BvcnQvZnRwLnB5CisrKyBienJsaWIvdHJhbnNwb3J0L2Z0cC5weQpA
QCAtMjksOCArMjksMTAgQEAKIGltcG9ydCBlcnJubwogaW1wb3J0IGZ0cGxpYgogaW1wb3J0IG9z
CitpbXBvcnQgb3MucGF0aAogaW1wb3J0IHVybGxpYgogaW1wb3J0IHVybHBhcnNlCitpbXBvcnQg
c2VsZWN0CiBpbXBvcnQgc3RhdAogaW1wb3J0IHRocmVhZGluZwogaW1wb3J0IHRpbWUKQEAgLTM5
LDYgKzQxLDcgQEAKIAogZnJvbSBienJsaWIgaW1wb3J0ICgKICAgICBlcnJvcnMsCisgICAgb3N1
dGlscywKICAgICB1cmx1dGlscywKICAgICApCiBmcm9tIGJ6cmxpYi50cmFjZSBpbXBvcnQgbXV0
dGVyLCB3YXJuaW5nCkBAIC00Nyw2ICs1MCw3IEBACiAgICAgc3BsaXRfdXJsLAogICAgIFRyYW5z
cG9ydCwKICAgICApCitmcm9tIGJ6cmxpYi50cmFuc3BvcnQubG9jYWwgaW1wb3J0IExvY2FsVVJM
U2VydmVyCiBpbXBvcnQgYnpybGliLnVpCiAKIF9oYXZlX21lZHVzYSA9IEZhbHNlCkBAIC0zMDEs
NyArMzA1LDggQEAKICAgICAgICAgOnBhcmFtIHJldHJpZXM6IE51bWJlciBvZiByZXRyaWVzIGFm
dGVyIHRlbXBvcmFyeSBmYWlsdXJlcyBzbyBmYXIKICAgICAgICAgICAgICAgICAgICAgICAgIGZv
ciB0aGlzIG9wZXJhdGlvbi4KIAotICAgICAgICBUT0RPOiBqYW0gMjAwNTEyMTUgZnRwIGFzIGEg
cHJvdG9jb2wgc2VlbXMgdG8gc3VwcG9ydCBjaG1vZCwgYnV0IGZ0cGxpYiBkb2VzIG5vdAorICAg
ICAgICBUT0RPOiBqYW0gMjAwNTEyMTUgZnRwIGFzIGEgcHJvdG9jb2wgc2VlbXMgdG8gc3VwcG9y
dCBjaG1vZCwgYnV0CisgICAgICAgIGZ0cGxpYiBkb2VzIG5vdAogICAgICAgICAiIiIKICAgICAg
ICAgYWJzcGF0aCA9IHNlbGYuX2Fic3BhdGgocmVscGF0aCkKICAgICAgICAgdG1wX2Fic3BhdGgg
PSAnJXMudG1wLiUuOWYuJWQuJWQnICUgKGFic3BhdGgsIHRpbWUudGltZSgpLApAQCAtMzEzLDcg
KzMxOCw3IEBACiAgICAgICAgICAgICBmID0gc2VsZi5fZ2V0X0ZUUCgpCiAgICAgICAgICAgICB0
cnk6CiAgICAgICAgICAgICAgICAgZi5zdG9yYmluYXJ5KCdTVE9SICcrdG1wX2Fic3BhdGgsIGZw
KQotICAgICAgICAgICAgICAgIGYucmVuYW1lKHRtcF9hYnNwYXRoLCBhYnNwYXRoKQorICAgICAg
ICAgICAgICAgIHNlbGYuX3JlbmFtZV9hbmRfb3ZlcndyaXRlKHRtcF9hYnNwYXRoLCBhYnNwYXRo
LCBmKQogICAgICAgICAgICAgZXhjZXB0IChmdHBsaWIuZXJyb3JfdGVtcCxFT0ZFcnJvciksIGU6
CiAgICAgICAgICAgICAgICAgd2FybmluZygiRmFpbHVyZSBkdXJpbmcgZnRwIFBVVC4gRGVsZXRp
bmcgdGVtcG9yYXJ5IGZpbGUuIikKICAgICAgICAgICAgICAgICB0cnk6CkBAIC00MzIsNiArNDM3
LDIwIEBACiAgICAgIyAgICAgICB0byBnaXZlIGl0IGl0cyBvd24gYWRkcmVzcyBhcyB0aGUgJ3Rv
JyBsb2NhdGlvbi4KICAgICAjICAgICAgIFNvIGltcGxlbWVudCBhIGZhbmNpZXIgJ2NvcHkoKScK
IAorICAgIGRlZiByZW5hbWUoc2VsZiwgcmVsX2Zyb20sIHJlbF90byk6CisgICAgICAgIGFic19m
cm9tID0gc2VsZi5fYWJzcGF0aChyZWxfZnJvbSkKKyAgICAgICAgYWJzX3RvID0gc2VsZi5fYWJz
cGF0aChyZWxfdG8pCisgICAgICAgIG11dHRlcigiRlRQIHJlbmFtZTogJXMgPT4gJXMiLCBhYnNf
ZnJvbSwgYWJzX3RvKQorICAgICAgICBmID0gc2VsZi5fZ2V0X0ZUUCgpCisgICAgICAgIHJldHVy
biBzZWxmLl9yZW5hbWUoYWJzX2Zyb20sIGFic190bywgZikKKworICAgIGRlZiBfcmVuYW1lKHNl
bGYsIGFic19mcm9tLCBhYnNfdG8sIGYpOgorICAgICAgICB0cnk6CisgICAgICAgICAgICBmLnJl
bmFtZShhYnNfZnJvbSwgYWJzX3RvKQorICAgICAgICBleGNlcHQgZnRwbGliLmVycm9yX3Blcm0s
IGU6CisgICAgICAgICAgICBzZWxmLl90cmFuc2xhdGVfcGVybV9lcnJvcihlLCBhYnNfZnJvbSwK
KyAgICAgICAgICAgICAgICAnOiB1bmFibGUgdG8gcmVuYW1lIHRvICVyJyAlIChhYnNfdG8pKQor
CiAgICAgZGVmIG1vdmUoc2VsZiwgcmVsX2Zyb20sIHJlbF90byk6CiAgICAgICAgICIiIk1vdmUg
dGhlIGl0ZW0gYXQgcmVsX2Zyb20gdG8gdGhlIGxvY2F0aW9uIGF0IHJlbF90byIiIgogICAgICAg
ICBhYnNfZnJvbSA9IHNlbGYuX2Fic3BhdGgocmVsX2Zyb20pCkBAIC00MzksMjAgKzQ1OCwzMCBA
QAogICAgICAgICB0cnk6CiAgICAgICAgICAgICBtdXR0ZXIoIkZUUCBtdjogJXMgPT4gJXMiLCBh
YnNfZnJvbSwgYWJzX3RvKQogICAgICAgICAgICAgZiA9IHNlbGYuX2dldF9GVFAoKQotICAgICAg
ICAgICAgZi5yZW5hbWUoYWJzX2Zyb20sIGFic190bykKKyAgICAgICAgICAgIHNlbGYuX3JlbmFt
ZV9hbmRfb3ZlcndyaXRlKGFic19mcm9tLCBhYnNfdG8sIGYpCiAgICAgICAgIGV4Y2VwdCBmdHBs
aWIuZXJyb3JfcGVybSwgZToKICAgICAgICAgICAgIHNlbGYuX3RyYW5zbGF0ZV9wZXJtX2Vycm9y
KGUsIGFic19mcm9tLAogICAgICAgICAgICAgICAgIGV4dHJhPSd1bmFibGUgdG8gcmVuYW1lIHRv
ICVyJyAlIChyZWxfdG8sKSwgCiAgICAgICAgICAgICAgICAgdW5rbm93bl9leGM9ZXJyb3JzLlBh
dGhFcnJvcikKIAotICAgIHJlbmFtZSA9IG1vdmUKKyAgICBkZWYgX3JlbmFtZV9hbmRfb3Zlcndy
aXRlKHNlbGYsIGFic19mcm9tLCBhYnNfdG8sIGYpOgorICAgICAgICAiIiJEbyBhIGZhbmN5IHJl
bmFtZSBvbiB0aGUgcmVtb3RlIHNlcnZlci4KKworICAgICAgICBVc2luZyB0aGUgaW1wbGVtZW50
YXRpb24gcHJvdmlkZWQgYnkgb3N1dGlscy4KKyAgICAgICAgIiIiCisgICAgICAgIG9zdXRpbHMu
ZmFuY3lfcmVuYW1lKGFic19mcm9tLCBhYnNfdG8sCisgICAgICAgICAgICByZW5hbWVfZnVuYz1s
YW1iZGEgcDEsIHAyOiBzZWxmLl9yZW5hbWUocDEsIHAyLCBmKSwKKyAgICAgICAgICAgIHVubGlu
a19mdW5jPWxhbWJkYSBwOiBzZWxmLl9kZWxldGUocCwgZikpCiAKICAgICBkZWYgZGVsZXRlKHNl
bGYsIHJlbHBhdGgpOgogICAgICAgICAiIiJEZWxldGUgdGhlIGl0ZW0gYXQgcmVscGF0aCIiIgog
ICAgICAgICBhYnNwYXRoID0gc2VsZi5fYWJzcGF0aChyZWxwYXRoKQorICAgICAgICBmID0gc2Vs
Zi5fZ2V0X0ZUUCgpCisgICAgICAgIHNlbGYuX2RlbGV0ZShhYnNwYXRoLCBmKQorCisgICAgZGVm
IF9kZWxldGUoc2VsZiwgYWJzcGF0aCwgZik6CiAgICAgICAgIHRyeToKICAgICAgICAgICAgIG11
dHRlcigiRlRQIHJtOiAlcyIsIGFic3BhdGgpCi0gICAgICAgICAgICBmID0gc2VsZi5fZ2V0X0ZU
UCgpCiAgICAgICAgICAgICBmLmRlbGV0ZShhYnNwYXRoKQogICAgICAgICBleGNlcHQgZnRwbGli
LmVycm9yX3Blcm0sIGU6CiAgICAgICAgICAgICBzZWxmLl90cmFuc2xhdGVfcGVybV9lcnJvcihl
LCBhYnNwYXRoLCAnZXJyb3IgZGVsZXRpbmcnLApAQCAtNTUwLDExICs1NzksMTMgQEAKICAgICAg
ICAgIiIiVGhpcyBpcyB1c2VkIGJ5IG1lZHVzYS5mdHBfc2VydmVyIHRvIGxvZyBjb25uZWN0aW9u
cywgZXRjLiIiIgogICAgICAgICBzZWxmLmxvZ3MuYXBwZW5kKG1lc3NhZ2UpCiAKLSAgICBkZWYg
c2V0VXAoc2VsZik6Ci0KKyAgICBkZWYgc2V0VXAoc2VsZiwgdmZzX3NlcnZlcj1Ob25lKToKICAg
ICAgICAgaWYgbm90IF9oYXZlX21lZHVzYToKICAgICAgICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJv
cignTXVzdCBoYXZlIG1lZHVzYSB0byBydW4gdGhlIEZ0cFNlcnZlcicpCiAKKyAgICAgICAgYXNz
ZXJ0IHZmc19zZXJ2ZXIgaXMgTm9uZSBvciBpc2luc3RhbmNlKHZmc19zZXJ2ZXIsIExvY2FsVVJM
U2VydmVyKSwgXAorICAgICAgICAgICAgIkZ0cFNlcnZlciBjdXJyZW50bHkgYXNzdW1lcyBsb2Nh
bCB0cmFuc3BvcnQsIGdvdCAlcyIgJSB2ZnNfc2VydmVyCisKICAgICAgICAgc2VsZi5fcm9vdCA9
IG9zLmdldGN3ZHUoKQogICAgICAgICBzZWxmLl9mdHBfc2VydmVyID0gX2Z0cF9zZXJ2ZXIoCiAg
ICAgICAgICAgICBhdXRob3JpemVyPV90ZXN0X2F1dGhvcml6ZXIocm9vdD1zZWxmLl9yb290KSwK
QEAgLTU2Niw3ICs1OTcsOCBAQAogICAgICAgICBzZWxmLl9wb3J0ID0gc2VsZi5fZnRwX3NlcnZl
ci5nZXRzb2NrbmFtZSgpWzFdCiAgICAgICAgICMgRG9uJ3QgbGV0IGl0IGxvb3AgZm9yZXZlciwg
b3IgaGFuZGxlIGFuIGluZmluaXRlIG51bWJlciBvZiByZXF1ZXN0cy4KICAgICAgICAgIyBJbiB0
aGlzIGNhc2UgaXQgd2lsbCBydW4gZm9yIDEwMHMsIG9yIDEwMDAgcmVxdWVzdHMKLSAgICAgICAg
c2VsZi5fYXN5bmNfdGhyZWFkID0gdGhyZWFkaW5nLlRocmVhZCh0YXJnZXQ9YXN5bmNvcmUubG9v
cCwKKyAgICAgICAgc2VsZi5fYXN5bmNfdGhyZWFkID0gdGhyZWFkaW5nLlRocmVhZCgKKyAgICAg
ICAgICAgICAgICB0YXJnZXQ9RnRwU2VydmVyLl9hc3luY29yZV9sb29wX2lnbm9yZV9FQkFERiwK
ICAgICAgICAgICAgICAgICBrd2FyZ3M9eyd0aW1lb3V0JzowLjEsICdjb3VudCc6MTAwMH0pCiAg
ICAgICAgIHNlbGYuX2FzeW5jX3RocmVhZC5zZXREYWVtb24oVHJ1ZSkKICAgICAgICAgc2VsZi5f
YXN5bmNfdGhyZWFkLnN0YXJ0KCkKQEAgLTU3OCw2ICs2MTAsMTkgQEAKICAgICAgICAgYXN5bmNv
cmUuY2xvc2VfYWxsKCkKICAgICAgICAgc2VsZi5fYXN5bmNfdGhyZWFkLmpvaW4oKQogCisgICAg
QHN0YXRpY21ldGhvZAorICAgIGRlZiBfYXN5bmNvcmVfbG9vcF9pZ25vcmVfRUJBREYoKmFyZ3Ms
ICoqa3dhcmdzKToKKyAgICAgICAgIiIiSWdub3JlIEVCQURGIGR1cmluZyBzZXJ2ZXIgc2h1dGRv
d24uCisKKyAgICAgICAgV2UgY2xvc2UgdGhlIHNvY2tldCB0byBnZXQgdGhlIHNlcnZlciB0byBz
aHV0ZG93biwgYnV0IHRoaXMgY2F1c2VzCisgICAgICAgIHNlbGVjdC5zZWxlY3QoKSB0byByYWlz
ZSBFQkFERi4KKyAgICAgICAgIiIiCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGFzeW5jb3Jl
Lmxvb3AoKmFyZ3MsICoqa3dhcmdzKQorICAgICAgICBleGNlcHQgc2VsZWN0LmVycm9yLCBlOgor
ICAgICAgICAgICAgaWYgZS5hcmdzWzBdICE9IGVycm5vLkVCQURGOgorICAgICAgICAgICAgICAg
IHJhaXNlCisKIAogX2Z0cF9jaGFubmVsID0gTm9uZQogX2Z0cF9zZXJ2ZXIgPSBOb25lCkBAIC02
NDgsMTIgKzY5MywxOCBAQAogICAgICAgICAgICAgcGZyb20gPSBzZWxmLmZpbGVzeXN0ZW0udHJh
bnNsYXRlKHNlbGYuX3JlbmFtaW5nKQogICAgICAgICAgICAgc2VsZi5fcmVuYW1pbmcgPSBOb25l
CiAgICAgICAgICAgICBwdG8gPSBzZWxmLmZpbGVzeXN0ZW0udHJhbnNsYXRlKGxpbmVbMV0pCisg
ICAgICAgICAgICBpZiBvcy5wYXRoLmV4aXN0cyhwdG8pOgorICAgICAgICAgICAgICAgIHNlbGYu
cmVzcG9uZCgnNTUwIFJOVE8gZmFpbGVkOiBmaWxlIGV4aXN0cycpCisgICAgICAgICAgICAgICAg
cmV0dXJuCiAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgb3MucmVuYW1lKHBmcm9t
LCBwdG8pCiAgICAgICAgICAgICBleGNlcHQgKElPRXJyb3IsIE9TRXJyb3IpLCBlOgogICAgICAg
ICAgICAgICAgICMgVE9ETzogamFtIDIwMDYwNTE2IHJldHVybiBjdXN0b20gcmVzcG9uc2VzIGJh
c2VkIG9uCiAgICAgICAgICAgICAgICAgIyAgICAgICB3aHkgdGhlIGNvbW1hbmQgZmFpbGVkCi0g
ICAgICAgICAgICAgICAgc2VsZi5yZXNwb25kKCc1NTAgUk5UTyBmYWlsZWQ6ICVzJyAlIChlLCkp
CisgICAgICAgICAgICAgICAgIyAoYmlhbGl4IDIwMDcwNDE4KSBzdHIoZSkgb24gUHl0aG9uIDIu
NSBAIFdpbmRvd3MKKyAgICAgICAgICAgICAgICAjIHNvbWV0aW1lcyBkb24ndCBwcm92aWRlIGV4
cGVjdGVkIGVycm9yIG1lc3NhZ2U7CisgICAgICAgICAgICAgICAgIyBzbyB3ZSBvYnRhaW4gc3Vj
aCBtZXNzYWdlIHZpYSBvcy5zdHJlcnJvcigpCisgICAgICAgICAgICAgICAgc2VsZi5yZXNwb25k
KCc1NTAgUk5UTyBmYWlsZWQ6ICVzJyAlIG9zLnN0cmVycm9yKGUuZXJybm8pKQogICAgICAgICAg
ICAgZXhjZXB0OgogICAgICAgICAgICAgICAgIHNlbGYucmVzcG9uZCgnNTUwIFJOVE8gZmFpbGVk
JykKICAgICAgICAgICAgICAgICAjIEZvciBhIHRlc3Qgc2VydmVyLCB3ZSB3aWxsIGdvIGFoZWFk
IGFuZCBqdXN0IGRpZQpAQCAtNjkxLDcgKzc0MiwxMSBAQAogICAgICAgICAgICAgICAgICAgICBz
ZWxmLmZpbGVzeXN0ZW0ubWtkaXIgKHBhdGgpCiAgICAgICAgICAgICAgICAgICAgIHNlbGYucmVz
cG9uZCAoJzI1NyBNS0QgY29tbWFuZCBzdWNjZXNzZnVsLicpCiAgICAgICAgICAgICAgICAgZXhj
ZXB0IChJT0Vycm9yLCBPU0Vycm9yKSwgZToKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5yZXNw
b25kICgnNTUwIGVycm9yIGNyZWF0aW5nIGRpcmVjdG9yeTogJXMnICUgKGUsKSkKKyAgICAgICAg
ICAgICAgICAgICAgIyAoYmlhbGl4IDIwMDcwNDE4KSBzdHIoZSkgb24gUHl0aG9uIDIuNSBAIFdp
bmRvd3MKKyAgICAgICAgICAgICAgICAgICAgIyBzb21ldGltZXMgZG9uJ3QgcHJvdmlkZSBleHBl
Y3RlZCBlcnJvciBtZXNzYWdlOworICAgICAgICAgICAgICAgICAgICAjIHNvIHdlIG9idGFpbiBz
dWNoIG1lc3NhZ2UgdmlhIG9zLnN0cmVycm9yKCkKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5y
ZXNwb25kICgnNTUwIGVycm9yIGNyZWF0aW5nIGRpcmVjdG9yeTogJXMnICUKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBvcy5zdHJlcnJvcihlLmVycm5vKSkKICAgICAgICAgICAg
ICAgICBleGNlcHQ6CiAgICAgICAgICAgICAgICAgICAgIHNlbGYucmVzcG9uZCAoJzU1MCBlcnJv
ciBjcmVhdGluZyBkaXJlY3RvcnkuJykKIAoK

=== modified file bzrlib/transport/http/__init__.py // last-changed:andrew.benn
... etts@canonical.com-20070426081540-36glj2kouoldc866 // encoding:base64
LS0tIGJ6cmxpYi90cmFuc3BvcnQvaHR0cC9fX2luaXRfXy5weQorKysgYnpybGliL3RyYW5zcG9y
dC9odHRwL19faW5pdF9fLnB5CkBAIC0yNyw5ICsyNyw5IEBACiBpbXBvcnQgc3lzCiAKIGZyb20g
YnpybGliIGltcG9ydCBlcnJvcnMsIHVpCitmcm9tIGJ6cmxpYi5zbWFydCBpbXBvcnQgbWVkaXVt
CiBmcm9tIGJ6cmxpYi50cmFjZSBpbXBvcnQgbXV0dGVyCiBmcm9tIGJ6cmxpYi50cmFuc3BvcnQg
aW1wb3J0ICgKLSAgICBzbWFydCwKICAgICBUcmFuc3BvcnQsCiAgICAgKQogCkBAIC0xMTMsNyAr
MTEzLDcgQEAKICAgICByZXR1cm4gbQogCiAKLWNsYXNzIEh0dHBUcmFuc3BvcnRCYXNlKFRyYW5z
cG9ydCwgc21hcnQuU21hcnRDbGllbnRNZWRpdW0pOgorY2xhc3MgSHR0cFRyYW5zcG9ydEJhc2Uo
VHJhbnNwb3J0LCBtZWRpdW0uU21hcnRDbGllbnRNZWRpdW0pOgogICAgICIiIkJhc2UgY2xhc3Mg
Zm9yIGh0dHAgaW1wbGVtZW50YXRpb25zLgogCiAgICAgRG9lcyBVUkwgcGFyc2luZywgZXRjLCBi
dXQgbm90IGFueSBuZXR3b3JrIElPLgpAQCAtMTQzLDExICsxNDMsMTIgQEAKICAgICAgICAgICAg
IHNlbGYuX3F1ZXJ5LCBzZWxmLl9mcmFnbWVudCkgPSB1cmxwYXJzZS51cmxwYXJzZShzZWxmLmJh
c2UpCiAgICAgICAgIHNlbGYuX3F1YWxpZmllZF9wcm90byA9IGFwcGFyZW50X3Byb3RvCiAgICAg
ICAgICMgcmFuZ2UgaGludCBpcyBoYW5kbGVkIGR5bmFtaWNhbGx5IHRocm91Z2hvdXQgdGhlIGxp
ZmUKLSAgICAgICAgIyBvZiB0aGUgb2JqZWN0LiBXZSBzdGFydCBieSB0cnlpbmcgbXVsdGktcmFu
Z2UgcmVxdWVzdHMKLSAgICAgICAgIyBhbmQgaWYgdGhlIHNlcnZlciByZXR1cm5zIGJvdWdzIHJl
c3VsdHMsIHdlIHJldHJ5IHdpdGgKLSAgICAgICAgIyBzaW5nbGUgcmFuZ2UgcmVxdWVzdHMgYW5k
LCBmaW5hbGx5LCB3ZSBmb3JnZXQgYWJvdXQKLSAgICAgICAgIyByYW5nZSBpZiB0aGUgc2VydmVy
IHJlYWxseSBjYW4ndCB1bmRlcnN0YW5kLiBPbmNlCi0gICAgICAgICMgYXF1aXJlZCwgdGhpcyBw
aWVjZSBvZiBpbmZvIGlzIHByb3BvZ2F0ZWQgdG8gY2xvbmVzLgorICAgICAgICAjIG9mIHRoZSB0
cmFuc3BvcnQgb2JqZWN0LiBXZSBzdGFydCBieSB0cnlpbmcgbXVsdGktcmFuZ2UKKyAgICAgICAg
IyByZXF1ZXN0cyBhbmQgaWYgdGhlIHNlcnZlciByZXR1cm5zIGJvZ3VzIHJlc3VsdHMsIHdlCisg
ICAgICAgICMgcmV0cnkgd2l0aCBzaW5nbGUgcmFuZ2UgcmVxdWVzdHMgYW5kLCBmaW5hbGx5LCB3
ZQorICAgICAgICAjIGZvcmdldCBhYm91dCByYW5nZSBpZiB0aGUgc2VydmVyIHJlYWxseSBjYW4n
dAorICAgICAgICAjIHVuZGVyc3RhbmQuIE9uY2UgYWNxdWlyZWQsIHRoaXMgcGllY2Ugb2YgaW5m
byBpcworICAgICAgICAjIHByb3BhZ2F0ZWQgdG8gY2xvbmVzLgogICAgICAgICBpZiBmcm9tX3Ry
YW5zcG9ydCBpcyBub3QgTm9uZToKICAgICAgICAgICAgIHNlbGYuX3JhbmdlX2hpbnQgPSBmcm9t
X3RyYW5zcG9ydC5fcmFuZ2VfaGludAogICAgICAgICBlbHNlOgpAQCAtNTA1LDExICs1MDYsMTEg
QEAKICAgICAgICAgcmV0dXJuIGJvZHlfZmlsZWxpa2UKIAogCi1jbGFzcyBTbWFydENsaWVudEhU
VFBNZWRpdW1SZXF1ZXN0KHNtYXJ0LlNtYXJ0Q2xpZW50TWVkaXVtUmVxdWVzdCk6CitjbGFzcyBT
bWFydENsaWVudEhUVFBNZWRpdW1SZXF1ZXN0KG1lZGl1bS5TbWFydENsaWVudE1lZGl1bVJlcXVl
c3QpOgogICAgICIiIkEgU21hcnRDbGllbnRNZWRpdW1SZXF1ZXN0IHRoYXQgd29ya3Mgd2l0aCBh
biBIVFRQIG1lZGl1bS4iIiIKIAotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBtZWRpdW0pOgotICAg
ICAgICBzbWFydC5TbWFydENsaWVudE1lZGl1bVJlcXVlc3QuX19pbml0X18oc2VsZiwgbWVkaXVt
KQorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBjbGllbnRfbWVkaXVtKToKKyAgICAgICAgbWVkaXVt
LlNtYXJ0Q2xpZW50TWVkaXVtUmVxdWVzdC5fX2luaXRfXyhzZWxmLCBjbGllbnRfbWVkaXVtKQog
ICAgICAgICBzZWxmLl9idWZmZXIgPSAnJwogCiAgICAgZGVmIF9hY2NlcHRfYnl0ZXMoc2VsZiwg
Ynl0ZXMpOgoK

=== modified file bzrlib/transport/http/_urllib.py // last-changed:v.ladeuil+lp
... @free.fr-20070422163204-7iksk91jy9091nex // encoding:base64
LS0tIGJ6cmxpYi90cmFuc3BvcnQvaHR0cC9fdXJsbGliLnB5CisrKyBienJsaWIvdHJhbnNwb3J0
L2h0dHAvX3VybGxpYi5weQpAQCAtMTUsMTEgKzE1LDEwIEBACiAjIEZvdW5kYXRpb24sIEluYy4s
IDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BICAwMjExMS0xMzA3ICBVU0EK
IAogZnJvbSBjU3RyaW5nSU8gaW1wb3J0IFN0cmluZ0lPCitpbXBvcnQgdXJsbGliCitpbXBvcnQg
dXJscGFyc2UKIAotZnJvbSBienJsaWIgaW1wb3J0ICgKLSAgICB1aSwKLSAgICBlcnJvcnMsCi0g
ICAgKQorZnJvbSBienJsaWIgaW1wb3J0IGVycm9ycwogZnJvbSBienJsaWIudHJhY2UgaW1wb3J0
IG11dHRlcgogZnJvbSBienJsaWIudHJhbnNwb3J0IGltcG9ydCByZWdpc3Rlcl91cmxwYXJzZV9u
ZXRsb2NfcHJvdG9jb2wKIGZyb20gYnpybGliLnRyYW5zcG9ydC5odHRwIGltcG9ydCBIdHRwVHJh
bnNwb3J0QmFzZQpAQCAtMjgsNiArMjcsOCBAQAogZnJvbSBienJsaWIudHJhbnNwb3J0Lmh0dHAu
X3VybGxpYjJfd3JhcHBlcnMgaW1wb3J0ICgKICAgICBPcGVuZXIsCiAgICAgUmVxdWVzdCwKKyAg
ICBleHRyYWN0X2F1dGhlbnRpY2F0aW9uX3VyaSwKKyAgICBleHRyYWN0X2NyZWRlbnRpYWxzLAog
ICAgICkKIAogCkBAIC00NSw0MCArNDYsMzMgQEAKIAogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBi
YXNlLCBmcm9tX3RyYW5zcG9ydD1Ob25lKToKICAgICAgICAgIiIiU2V0IHRoZSBiYXNlIHBhdGgg
d2hlcmUgZmlsZXMgd2lsbCBiZSBzdG9yZWQuIiIiCi0gICAgICAgIHN1cGVyKEh0dHBUcmFuc3Bv
cnRfdXJsbGliLCBzZWxmKS5fX2luaXRfXyhiYXNlLCBmcm9tX3RyYW5zcG9ydCkKICAgICAgICAg
aWYgZnJvbV90cmFuc3BvcnQgaXMgbm90IE5vbmU6CisgICAgICAgICAgICBzdXBlcihIdHRwVHJh
bnNwb3J0X3VybGxpYiwgc2VsZikuX19pbml0X18oYmFzZSwgZnJvbV90cmFuc3BvcnQpCiAgICAg
ICAgICAgICBzZWxmLl9jb25uZWN0aW9uID0gZnJvbV90cmFuc3BvcnQuX2Nvbm5lY3Rpb24KLSAg
ICAgICAgICAgIHNlbGYuX3VzZXIgPSBmcm9tX3RyYW5zcG9ydC5fdXNlcgotICAgICAgICAgICAg
c2VsZi5fcGFzc3dvcmQgPSBmcm9tX3RyYW5zcG9ydC5fcGFzc3dvcmQKKyAgICAgICAgICAgIHNl
bGYuX2F1dGggPSBmcm9tX3RyYW5zcG9ydC5fYXV0aAorICAgICAgICAgICAgc2VsZi5fcHJveHlf
YXV0aCA9IGZyb21fdHJhbnNwb3J0Ll9wcm94eV9hdXRoCisKICAgICAgICAgICAgIHNlbGYuX29w
ZW5lciA9IGZyb21fdHJhbnNwb3J0Ll9vcGVuZXIKICAgICAgICAgZWxzZToKKyAgICAgICAgICAg
ICMgdXJsbGliMiB3aWxsIGJlIGNvbmZ1c2VkIGlmIGl0IGZpbmQgYXV0aGVudGljYXRpb24KKyAg
ICAgICAgICAgICMgaW5mbyBpbiB0aGUgdXJscy4gU28gd2UgaGFuZGxlIHRoZW0gc2VwYXJhdGx5
LgorICAgICAgICAgICAgIyBOb3RlOiB3ZSBkb24ndCBuZWVkIHRvIHdoZW4gY2xvbmluZyBiZWNh
dXNlIGl0IHdhcworICAgICAgICAgICAgIyBhbHJlYWR5IGRvbmUuCisgICAgICAgICAgICBjbGVh
bl9iYXNlLCB1c2VyLCBwYXNzd29yZCA9IGV4dHJhY3RfY3JlZGVudGlhbHMoYmFzZSkKKyAgICAg
ICAgICAgIHN1cGVyKEh0dHBUcmFuc3BvcnRfdXJsbGliLCBzZWxmKS5fX2luaXRfXyhjbGVhbl9i
YXNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGZyb21fdHJhbnNwb3J0KQogICAgICAgICAgICAgc2VsZi5fY29ubmVjdGlvbiA9IE5vbmUK
LSAgICAgICAgICAgIHNlbGYuX3VzZXIgPSBOb25lCi0gICAgICAgICAgICBzZWxmLl9wYXNzd29y
ZCA9IE5vbmUKICAgICAgICAgICAgIHNlbGYuX29wZW5lciA9IHNlbGYuX29wZW5lcl9jbGFzcygp
CiAKLSAgICBkZWYgYXNrX3Bhc3N3b3JkKHNlbGYsIHJlcXVlc3QpOgotICAgICAgICAiIiJBc2sg
Zm9yIGEgcGFzc3dvcmQgaWYgbm9uZSBpcyBhbHJlYWR5IHByb3ZpZGVkIGluIHRoZSByZXF1ZXN0
IiIiCi0gICAgICAgICMgVE9ETzogamFtIDIwMDYwOTE1IFRoZXJlIHNob3VsZCBiZSBhIHRlc3Qg
dGhhdCBhc3NlcnRzIHdlIGFzayAKLSAgICAgICAgIyAgICAgICBmb3IgYSBwYXNzd29yZCBhdCB0
aGUgcmlnaHQgdGltZS4KLSAgICAgICAgaWYgcmVxdWVzdC5wYXNzd29yZCBpcyBOb25lOgotICAg
ICAgICAgICAgIyBXZSBjYW4ndCBwcmVkaWN0IHJlYWxtLCBsZXQncyB0cnkgTm9uZSwgd2UnbGwg
Z2V0IGEKLSAgICAgICAgICAgICMgNDAxIGlmIHdlIGFyZSB3cm9uZyBhbnl3YXkKLSAgICAgICAg
ICAgIHJlYWxtID0gTm9uZQotICAgICAgICAgICAgaG9zdCA9IHJlcXVlc3QuZ2V0X2hvc3QoKQot
ICAgICAgICAgICAgcGFzc3dvcmRfbWFuYWdlciA9IHNlbGYuX29wZW5lci5wYXNzd29yZF9tYW5h
Z2VyCi0gICAgICAgICAgICAjIFF1ZXJ5IHRoZSBwYXNzd29yZCBtYW5hZ2VyIGZpcnN0Ci0gICAg
ICAgICAgICB1c2VyLCBwYXNzd29yZCA9IHBhc3N3b3JkX21hbmFnZXIuZmluZF91c2VyX3Bhc3N3
b3JkKE5vbmUsIGhvc3QpCi0gICAgICAgICAgICBpZiB1c2VyID09IHJlcXVlc3QudXNlciBhbmQg
cGFzc3dvcmQgaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICAgICAgcmVxdWVzdC5wYXNzd29yZCA9
IHBhc3N3b3JkCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICMgQXNrIHRoZSB1
c2VyIGlmIHdlIE1VU1QKLSAgICAgICAgICAgICAgICBodHRwX3Bhc3MgPSAnSFRUUCAlKHVzZXIp
c0AlKGhvc3QpcyBwYXNzd29yZCcKLSAgICAgICAgICAgICAgICByZXF1ZXN0LnBhc3N3b3JkID0g
dWkudWlfZmFjdG9yeS5nZXRfcGFzc3dvcmQocHJvbXB0PWh0dHBfcGFzcywKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlcj1y
ZXF1ZXN0LnVzZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGhvc3Q9aG9zdCkKLSAgICAgICAgICAgICAgICBwYXNzd29yZF9t
YW5hZ2VyLmFkZF9wYXNzd29yZChOb25lLCBob3N0LAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHJlcXVlc3QudXNlciwgcmVxdWVzdC5wYXNzd29yZCkKKyAg
ICAgICAgICAgIGF1dGh1cmkgPSBleHRyYWN0X2F1dGhlbnRpY2F0aW9uX3VyaShzZWxmLl9yZWFs
X2Fic3BhdGgoc2VsZi5fcGF0aCkpCisgICAgICAgICAgICBzZWxmLl9hdXRoID0geyd1c2VyJzog
dXNlciwgJ3Bhc3N3b3JkJzogcGFzc3dvcmQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICdh
dXRodXJpJzogYXV0aHVyaX0KKyAgICAgICAgICAgIGlmIHVzZXIgYW5kIHBhc3N3b3JkIGlzIG5v
dCBOb25lOiAjICcnIGlzIGEgdmFsaWQgcGFzc3dvcmQKKyAgICAgICAgICAgICAgICAjIE1ha2Ug
dGhlICh1c2VyLCBwYXNzd29yZCkgYXZhaWxhYmxlIHRvIHVybGxpYjIKKyAgICAgICAgICAgICAg
ICAjIFdlIGRlZmF1bHQgdG8gYSByZWFsbSBvZiBOb25lIHRvIGNhdGNoIHRoZW0gYWxsLgorICAg
ICAgICAgICAgICAgIHNlbGYuX29wZW5lci5wYXNzd29yZF9tYW5hZ2VyLmFkZF9wYXNzd29yZChO
b25lLCBhdXRodXJpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB1c2VyLCBwYXNzd29yZCkKKyAgICAgICAgICAgIHNlbGYuX3Byb3h5
X2F1dGggPSB7fQogCiAgICAgZGVmIF9wZXJmb3JtKHNlbGYsIHJlcXVlc3QpOgogICAgICAgICAi
IiJTZW5kIHRoZSByZXF1ZXN0IHRvIHRoZSBzZXJ2ZXIgYW5kIGhhbmRsZXMgY29tbW9uIGVycm9y
cy4KQEAgLTg4LDI2ICs4MiwyMiBAQAogICAgICAgICBpZiBzZWxmLl9jb25uZWN0aW9uIGlzIG5v
dCBOb25lOgogICAgICAgICAgICAgIyBHaXZlIGJhY2sgc2hhcmVkIGluZm8KICAgICAgICAgICAg
IHJlcXVlc3QuY29ubmVjdGlvbiA9IHNlbGYuX2Nvbm5lY3Rpb24KLSAgICAgICAgICAgIGlmIHNl
bGYuX3VzZXIgaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICAgICAgcmVxdWVzdC51c2VyID0gc2Vs
Zi5fdXNlcgotICAgICAgICAgICAgICAgIHJlcXVlc3QucGFzc3dvcmQgPSBzZWxmLl9wYXNzd29y
ZAotICAgICAgICBlbGlmIHJlcXVlc3QudXNlciBpcyBub3QgTm9uZToKLSAgICAgICAgICAgICMg
V2Ugd2lsbCBpc3N1ZSBvdXIgZmlyc3QgcmVxdWVzdCwgdGltZSB0byBhc2sgZm9yIGEKLSAgICAg
ICAgICAgICMgcGFzc3dvcmQgaWYgbmVlZGVkCi0gICAgICAgICAgICBzZWxmLmFza19wYXNzd29y
ZChyZXF1ZXN0KQorICAgICAgICAjIEVuc3VyZSBhdXRoZW50aWNhdGlvbiBpbmZvIGlzIHByb3Zp
ZGVkCisgICAgICAgIHJlcXVlc3QuYXV0aCA9IHNlbGYuX2F1dGgKKyAgICAgICAgcmVxdWVzdC5w
cm94eV9hdXRoID0gc2VsZi5fcHJveHlfYXV0aAogCiAgICAgICAgIG11dHRlcignJXM6IFslc10n
ICUgKHJlcXVlc3QubWV0aG9kLCByZXF1ZXN0LmdldF9mdWxsX3VybCgpKSkKICAgICAgICAgaWYg
c2VsZi5fZGVidWdsZXZlbCA+IDA6CiAgICAgICAgICAgICBwcmludCAncGVyZm9ybTogJXMgYmFz
ZTogJXMsIHVybDogJXMnICUgKHJlcXVlc3QubWV0aG9kLCBzZWxmLmJhc2UsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVlc3QuZ2V0X2Z1
bGxfdXJsKCkpCi0KICAgICAgICAgcmVzcG9uc2UgPSBzZWxmLl9vcGVuZXIub3BlbihyZXF1ZXN0
KQogICAgICAgICBpZiBzZWxmLl9jb25uZWN0aW9uIGlzIE5vbmU6CiAgICAgICAgICAgICAjIEFj
cXVpcmUgY29ubmVjdGlvbiB3aGVuIHRoZSBmaXJzdCByZXF1ZXN0IGlzIGFibGUKICAgICAgICAg
ICAgICMgdG8gY29ubmVjdCB0byB0aGUgc2VydmVyCiAgICAgICAgICAgICBzZWxmLl9jb25uZWN0
aW9uID0gcmVxdWVzdC5jb25uZWN0aW9uCi0gICAgICAgICAgICBzZWxmLl91c2VyID0gcmVxdWVz
dC51c2VyCi0gICAgICAgICAgICBzZWxmLl9wYXNzd29yZCA9IHJlcXVlc3QucGFzc3dvcmQKKyAg
ICAgICAgIyBBbHdheXMgZ2V0IGF1dGggcGFyYW1ldGVycywgdGhleSBtYXkgY2hhbmdlCisgICAg
ICAgIHNlbGYuX2F1dGggPSByZXF1ZXN0LmF1dGgKKyAgICAgICAgc2VsZi5fcHJveHlfYXV0aCA9
IHJlcXVlc3QucHJveHlfYXV0aAogCiAgICAgICAgIGNvZGUgPSByZXNwb25zZS5jb2RlCiAgICAg
ICAgIGlmIHJlcXVlc3QuZm9sbG93X3JlZGlyZWN0aW9ucyBpcyBGYWxzZSBcCgo=

=== modified file bzrlib/transport/http/_urllib2_wrappers.py // last-changed:v.
... ladeuil+lp@free.fr-20070422163204-7iksk91jy9091nex // encoding:base64
LS0tIGJ6cmxpYi90cmFuc3BvcnQvaHR0cC9fdXJsbGliMl93cmFwcGVycy5weQorKysgYnpybGli
L3RyYW5zcG9ydC9odHRwL191cmxsaWIyX3dyYXBwZXJzLnB5CkBAIC0xNiw3ICsxNiw3IEBACiAK
ICIiIkltcGxlbWVudGFpb24gb2YgdXJsbGliMiB0YWlsb3JlZCB0byBienIgbmVlZHMKIAotVGhp
cyBmaWxlIHJlLWltcGxlbWVudHMgdGhlIHVybGxpYjIgY2xhc3MgaGllcmFyY2h5IHdpdGggY3Vz
dG9tIGNsYXNzZXMuCitUaGlzIGZpbGUgY29tcGxlbWVudHMgdGhlIHVybGxpYjIgY2xhc3MgaGll
cmFyY2h5IHdpdGggY3VzdG9tIGNsYXNzZXMuCiAKIEZvciBpbnN0YW5jZSwgd2UgY3JlYXRlIGEg
bmV3IEhUVFBDb25uZWN0aW9uIGFuZCBIVFRQU0Nvbm5lY3Rpb24gdGhhdCBpbmhlcml0CiBmcm9t
IHRoZSBvcmlnaW5hbCB1cmxsaWIyLkhUVFAocylDb25uZWN0aW9uIG9iamVjdHMsIGJ1dCBhbHNv
IGhhdmUgYSBuZXcgYmFzZQpAQCAtMjgsMTAgKzI4LDggQEAKIFdlIGhhdmUgYSBjdXN0b20gUmVz
cG9uc2UgY2xhc3MsIHdoaWNoIGxldHMgdXMgbWFpbnRhaW4gYSBrZWVwLWFsaXZlCiBjb25uZWN0
aW9uIGV2ZW4gZm9yIHJlcXVlc3RzIHRoYXQgdXJsbGliMiBkb2Vzbid0IGV4cGVjdCB0byBjb250
YWluIGJvZHkgZGF0YS4KIAotQW5kIGEgY3VzdG9tIFJlcXVlc3QgY2xhc3MgdGhhdCBsZXRzIHVz
IHRyYWNrIHJlZGlyZWN0aW9ucywgYW5kIHNlbmQKLWF1dGhlbnRpY2F0aW9uIGRhdGEgd2l0aG91
dCByZXF1aXJpbmcgYW4gZXh0cmEgcm91bmQgdHJpcCB0byBnZXQgcmVqZWN0ZWQgYnkKLXRoZSBz
ZXJ2ZXIuIFdlIGFsc28gY3JlYXRlIGEgUmVxdWVzdCBoaWVyYXJjaHksIHRvIG1ha2UgaXQgY2xl
YXIgd2hhdCB0eXBlCi1vZiByZXF1ZXN0IGlzIGJlaW5nIG1hZGUuCitBbmQgYSBjdXN0b20gUmVx
dWVzdCBjbGFzcyB0aGF0IGxldHMgdXMgdHJhY2sgcmVkaXJlY3Rpb25zLCBhbmQKK2hhbmRsZSBh
dXRoZW50aWNhdGlvbiBzY2hlbWVzLgogIiIiCiAKIERFQlVHID0gMApAQCAtNTAsMTUgKzQ4LDIy
IEBACiAjIGVuc3VyZSB0aGF0LgogCiBpbXBvcnQgaHR0cGxpYgoraW1wb3J0IG1kNQoraW1wb3J0
IHNoYQogaW1wb3J0IHNvY2tldAogaW1wb3J0IHVybGxpYgogaW1wb3J0IHVybGxpYjIKIGltcG9y
dCB1cmxwYXJzZQogaW1wb3J0IHJlCiBpbXBvcnQgc3lzCitpbXBvcnQgdGltZQogCiBmcm9tIGJ6
cmxpYiBpbXBvcnQgX192ZXJzaW9uX18gYXMgYnpybGliX3ZlcnNpb24KLWZyb20gYnpybGliIGlt
cG9ydCBlcnJvcnMKK2Zyb20gYnpybGliIGltcG9ydCAoCisgICAgZXJyb3JzLAorICAgIHVpLAor
ICAgICkKKwogCiAKICMgV2UgZGVmaW5lIG91ciBvd24gUmVzcG9uc2UgY2xhc3MgdG8ga2VlcCBv
dXIgaHR0cGxpYiBwaXBlIGNsZWFuCkBAIC0xMzksMTYgKzE0NCwxNiBAQAogICAgIHRoZSBwcmVz
ZW5jZSBvciBhYnNlbmNlIG9mIGRhdGEpLiBXZSBzZXQgdGhlIG1ldGhvZAogICAgIHN0YXRpY2Fs
bHkuCiAKLSAgICBBbHNvLCB0aGUgUmVxdWVzdCBvYmplY3QgdHJhY2tzIHRoZSBjb25uZWN0aW9u
IHRoZSByZXF1ZXN0IHdpbGwKLSAgICBiZSBtYWRlIG9uLgorICAgIFRoZSBSZXF1ZXN0IG9iamVj
dCB0cmFja3M6CisgICAgLSB0aGUgY29ubmVjdGlvbiB0aGUgcmVxdWVzdCB3aWxsIGJlIG1hZGUg
b24uCisgICAgLSB0aGUgYXV0aGVudGljYXRpb24gcGFyYW1ldGVycyBuZWVkZWQgdG8gcHJldmVu
dGl2ZWx5IHNldAorICAgICAgdGhlIGF1dGhlbnRpY2F0aW9uIGhlYWRlciBvbmNlIGEgZmlyc3Qg
YXV0aGVudGljYXRpb24gaGF2ZQorICAgICAgIGJlZW4gbWFkZS4KICAgICAiIiIKIAogICAgIGRl
ZiBfX2luaXRfXyhzZWxmLCBtZXRob2QsIHVybCwgZGF0YT1Ob25lLCBoZWFkZXJzPXt9LAogICAg
ICAgICAgICAgICAgICBvcmlnaW5fcmVxX2hvc3Q9Tm9uZSwgdW52ZXJpZmlhYmxlPUZhbHNlLAog
ICAgICAgICAgICAgICAgICBjb25uZWN0aW9uPU5vbmUsIHBhcmVudD1Ob25lLCk6Ci0gICAgICAg
ICMgdXJsbGliMi5SZXF1ZXN0IHdpbGwgYmUgY29uZnVzZWQgaWYgd2UgZG9uJ3QgZXh0cmFjdAot
ICAgICAgICAjIGF1dGhlbnRpZmljYXRpb24gaW5mbyBiZWZvcmUgYnVpbGRpbmcgdGhlIHJlcXVl
c3QKLSAgICAgICAgdXJsLCBzZWxmLnVzZXIsIHNlbGYucGFzc3dvcmQgPSBzZWxmLmV4dHJhY3Rf
YXV0aCh1cmwpCiAgICAgICAgIHVybGxpYjIuUmVxdWVzdC5fX2luaXRfXyhzZWxmLCB1cmwsIGRh
dGEsIGhlYWRlcnMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmlnaW5fcmVx
X2hvc3QsIHVudmVyaWZpYWJsZSkKICAgICAgICAgc2VsZi5tZXRob2QgPSBtZXRob2QKQEAgLTE1
OCwzOSArMTYzLDYwIEBACiAgICAgICAgIHNlbGYucmVkaXJlY3RlZF90byA9IE5vbmUKICAgICAg
ICAgIyBVbmxlc3MgdG9sZCBvdGhlcndpc2UsIHJlZGlyZWN0aW9ucyBhcmUgbm90IGZvbGxvd2Vk
CiAgICAgICAgIHNlbGYuZm9sbG93X3JlZGlyZWN0aW9ucyA9IEZhbHNlCi0KLSAgICBkZWYgZXh0
cmFjdF9hdXRoKHNlbGYsIHVybCk6Ci0gICAgICAgICIiIkV4dHJhY3RzIGF1dGhlbnRpZmljYXRp
b24gaW5mb3JtYXRpb24gZnJvbSB1cmwuCi0KLSAgICAgICAgR2V0IHVzZXIgYW5kIHBhc3N3b3Jk
IGZyb20gdXJsIG9mIHRoZSBmb3JtOiBodHRwOi8vdXNlcjpwYXNzQGhvc3QvcGF0aAotICAgICAg
ICAiIiIKLSAgICAgICAgc2NoZW1lLCBuZXRsb2MsIHBhdGgsIHF1ZXJ5LCBmcmFnbWVudCA9IHVy
bHBhcnNlLnVybHNwbGl0KHVybCkKLQotICAgICAgICBpZiAnQCcgaW4gbmV0bG9jOgotICAgICAg
ICAgICAgYXV0aCwgbmV0bG9jID0gbmV0bG9jLnNwbGl0KCdAJywgMSkKLSAgICAgICAgICAgIGlm
ICc6JyBpbiBhdXRoOgotICAgICAgICAgICAgICAgIHVzZXIsIHBhc3N3b3JkID0gYXV0aC5zcGxp
dCgnOicsIDEpCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIHVzZXIsIHBhc3N3
b3JkID0gYXV0aCwgTm9uZQotICAgICAgICAgICAgdXNlciA9IHVybGxpYi51bnF1b3RlKHVzZXIp
Ci0gICAgICAgICAgICBpZiBwYXNzd29yZCBpcyBub3QgTm9uZToKLSAgICAgICAgICAgICAgICBw
YXNzd29yZCA9IHVybGxpYi51bnF1b3RlKHBhc3N3b3JkKQotICAgICAgICBlbHNlOgotICAgICAg
ICAgICAgdXNlciA9IE5vbmUKLSAgICAgICAgICAgIHBhc3N3b3JkID0gTm9uZQotCi0gICAgICAg
IHVybCA9IHVybHBhcnNlLnVybHVuc3BsaXQoKHNjaGVtZSwgbmV0bG9jLCBwYXRoLCBxdWVyeSwg
ZnJhZ21lbnQpKQotCi0gICAgICAgIHJldHVybiB1cmwsIHVzZXIsIHBhc3N3b3JkCisgICAgICAg
ICMgYXV0aCBhbmQgcHJveHlfYXV0aCBhcmUgZGljdHMgY29udGFpbmluZywgYXQgbGVhc3QKKyAg
ICAgICAgIyAoc2NoZW1lLCB1cmwsIHJlYWxtLCB1c2VyLCBwYXNzd29yZCkuCisgICAgICAgICMg
VGhlIGRpY3QgZW50cmllcyBhcmUgbW9zdGx5IGhhbmRsZWQgYnkgdGhlIEF1dGhIYW5kbGVyLgor
ICAgICAgICAjIFNvbWUgYXV0aGVudGljYXRpb24gc2NoZW1lcyBtYXkgYWRkIG1vcmUgZW50cmll
cy4KKyAgICAgICAgc2VsZi5hdXRoID0ge30KKyAgICAgICAgc2VsZi5wcm94eV9hdXRoID0ge30K
IAogICAgIGRlZiBnZXRfbWV0aG9kKHNlbGYpOgogICAgICAgICByZXR1cm4gc2VsZi5tZXRob2QK
IAogCi0jIFRoZSB1cmxpYjIueHh4QXV0aEhhbmRsZXIgaGFuZGxlIHRoZSBhdXRoZW50aWZpY2F0
aW9uIG9mIHRoZQorZGVmIGV4dHJhY3RfY3JlZGVudGlhbHModXJsKToKKyAgICAiIiJFeHRyYWN0
cyBjcmVkZW50aWFscyBpbmZvcm1hdGlvbiBmcm9tIHVybC4KKworICAgIEdldCB1c2VyIGFuZCBw
YXNzd29yZCBmcm9tIHVybCBvZiB0aGUgZm9ybTogaHR0cDovL3VzZXI6cGFzc0Bob3N0L3BhdGgK
KyAgICA6cmV0dXJuczogKGNsZWFuX3VybCwgdXNlciwgcGFzc3dvcmQpCisgICAgIiIiCisgICAg
c2NoZW1lLCBuZXRsb2MsIHBhdGgsIHF1ZXJ5LCBmcmFnbWVudCA9IHVybHBhcnNlLnVybHNwbGl0
KHVybCkKKworICAgIGlmICdAJyBpbiBuZXRsb2M6CisgICAgICAgIGF1dGgsIG5ldGxvYyA9IG5l
dGxvYy5zcGxpdCgnQCcsIDEpCisgICAgICAgIGlmICc6JyBpbiBhdXRoOgorICAgICAgICAgICAg
dXNlciwgcGFzc3dvcmQgPSBhdXRoLnNwbGl0KCc6JywgMSkKKyAgICAgICAgZWxzZToKKyAgICAg
ICAgICAgIHVzZXIsIHBhc3N3b3JkID0gYXV0aCwgTm9uZQorICAgICAgICB1c2VyID0gdXJsbGli
LnVucXVvdGUodXNlcikKKyAgICAgICAgaWYgcGFzc3dvcmQgaXMgbm90IE5vbmU6CisgICAgICAg
ICAgICBwYXNzd29yZCA9IHVybGxpYi51bnF1b3RlKHBhc3N3b3JkKQorICAgIGVsc2U6CisgICAg
ICAgIHVzZXIgPSBOb25lCisgICAgICAgIHBhc3N3b3JkID0gTm9uZQorCisgICAgIyBCdWlsZCB0
aGUgY2xlYW4gdXJsCisgICAgY2xlYW5fdXJsID0gdXJscGFyc2UudXJsdW5zcGxpdCgoc2NoZW1l
LCBuZXRsb2MsIHBhdGgsIHF1ZXJ5LCBmcmFnbWVudCkpCisKKyAgICByZXR1cm4gY2xlYW5fdXJs
LCB1c2VyLCBwYXNzd29yZAorCitkZWYgZXh0cmFjdF9hdXRoZW50aWNhdGlvbl91cmkodXJsKToK
KyAgICAiIiJFeHRyYWN0IHRoZSBhdXRoZW50aWNhdGlvbiB1cmkgZnJvbSBhbnkgdXJsLgorCisg
ICAgSW4gdGhlIGNvbnRleHQgb2YgYnpyLCB3ZSBzaW1wbGlmaWVkIHRoZSBhdXRoZW50aWNhdGlv
biB1cmkKKyAgICB0byB0aGUgaG9zdCBvbmx5LiBGb3IgdGhlIHRyYW5zcG9ydCBsaWZldGltZSwg
d2UgYWxsb3cgb25seQorICAgIG9uZSB1c2VyIGJ5IHJlYWxtIG9uIGEgZ2l2ZW4gaG9zdC4gSS5l
LiBoYW5kbGluZyBzZXZlcmFsCisgICAgdXNlcnMgZm9yIGRpZmZlcmVudCBwYXRocyBmb3IgdGhl
IHNhbWUgcmVhbG0gc2hvdWxkIGJlIGRvbmUKKyAgICBhdCBhIGhpZ2hlciBsZXZlbC4KKyAgICAi
IiIKKyAgICBzY2hlbWUsIGhvc3QsIHBhdGgsIHF1ZXJ5LCBmcmFnbWVudCA9IHVybHBhcnNlLnVy
bHNwbGl0KHVybCkKKyAgICByZXR1cm4gJyVzOi8vJXMnICUgKHNjaGVtZSwgaG9zdCkKKworCisj
IFRoZSB1cmxpYjIueHh4QXV0aEhhbmRsZXIgaGFuZGxlIHRoZSBhdXRoZW50aWNhdGlvbiBvZiB0
aGUKICMgcmVxdWVzdHMsIHRvIGRvIHRoYXQsIHRoZXkgbmVlZCBhbiB1cmxsaWIyIFBhc3N3b3Jk
TWFuYWdlciAqYXQKLSMgYnVpbGQgdGltZSouIFdlIGFsc28gbmVlZCBvbmUgdG8gcmV1c2UgdGhl
IHBhc3N3b3JkcyBhbHJlYWR5Ci0jIHR5cGVkIGJ5IHRoZSB1c2VyLgorIyBidWlsZCB0aW1lKi4g
V2UgYWxzbyBuZWVkIG9uZSB0byByZXVzZSB0aGUgcGFzc3dvcmRzIGVudGVyZWQgYnkKKyMgdGhl
IHVzZXIuCiBjbGFzcyBQYXNzd29yZE1hbmFnZXIodXJsbGliMi5IVFRQUGFzc3dvcmRNZ3JXaXRo
RGVmYXVsdFJlYWxtKToKIAogICAgIGRlZiBfX2luaXRfXyhzZWxmKToKQEAgLTIwNCwxNSArMjMw
LDExIEBACiAgICAgaW50ZXJuYWxseSB1c2VkLiBCdXQgd2UgbmVlZCBpdCBpbiBvcmRlciB0byBh
Y2hpZXZlCiAgICAgY29ubmVjdGlvbiBzaGFyaW5nLiBTbywgd2UgYWRkIGl0IHRvIHRoZSByZXF1
ZXN0IGp1c3QgYmVmb3JlCiAgICAgaXQgaXMgcHJvY2Vzc2VkLCBhbmQgdGhlbiB3ZSBvdmVycmlk
ZSB0aGUgZG9fb3BlbiBtZXRob2QgZm9yCi0gICAgaHR0cFtzXSByZXF1ZXN0cy4KKyAgICBodHRw
W3NdIHJlcXVlc3RzIGluIEFic3RyYWN0SFRUUEhhbmRsZXIuCiAgICAgIiIiCiAKICAgICBoYW5k
bGVyX29yZGVyID0gMTAwMCAjIGFmdGVyIGFsbCBwcmUtcHJvY2Vzc2luZ3MKIAotICAgIGRlZiBn
ZXRfa2V5KHNlbGYsIGNvbm5lY3Rpb24pOgotICAgICAgICAiIiJSZXR1cm5zIHRoZSBrZXkgZm9y
IHRoZSBjb25uZWN0aW9uIGluIHRoZSBjYWNoZSIiIgotICAgICAgICByZXR1cm4gJyVzOiVkJyAl
IChjb25uZWN0aW9uLmhvc3QsIGNvbm5lY3Rpb24ucG9ydCkKLQogICAgIGRlZiBjcmVhdGVfY29u
bmVjdGlvbihzZWxmLCByZXF1ZXN0LCBodHRwX2Nvbm5lY3Rpb25fY2xhc3MpOgogICAgICAgICBo
b3N0ID0gcmVxdWVzdC5nZXRfaG9zdCgpCiAgICAgICAgIGlmIG5vdCBob3N0OgpAQCAtMjgyLDcg
KzMwNCw2IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAjIHVybGxpYjIgdXNpbmcgY2FwaXRh
bGl6ZSgpIGZvciBoZWFkZXJzCiAgICAgICAgICAgICAgICAgICAgICAgICAjIGluc3RlYWQgb2Yg
dGl0bGUoc3A/KS4KICAgICAgICAgICAgICAgICAgICAgICAgICdVc2VyLWFnZW50JzogJ2J6ci8l
cyAodXJsbGliKScgJSBienJsaWJfdmVyc2lvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICMg
RklYTUU6IHB5Y3VybCBhbHNvIHNldCB0aGUgZm9sbG93aW5nLCB1bmRlcnN0YW5kIHdoeQogICAg
ICAgICAgICAgICAgICAgICAgICAgJ0FjY2VwdCc6ICcqLyonLAogICAgICAgICAgICAgICAgICAg
ICAgICAgfQogCkBAIC02MTksOCArNjQwLDkgQEAKICAgICBoYW5kbGVyX29yZGVyID0gMTAwCiAg
ICAgX2RlYnVnbGV2ZWwgPSBERUJVRwogCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIHByb3hpZXM9
Tm9uZSk6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhc3N3b3JkX21hbmFnZXIsIHByb3hpZXM9
Tm9uZSk6CiAgICAgICAgIHVybGxpYjIuUHJveHlIYW5kbGVyLl9faW5pdF9fKHNlbGYsIHByb3hp
ZXMpCisgICAgICAgIHNlbGYucGFzc3dvcmRfbWFuYWdlciA9IHBhc3N3b3JkX21hbmFnZXIKICAg
ICAgICAgIyBGaXJzdCwgbGV0J3MgZ2V0IHJpZCBvZiB1cmxsaWIyIGltcGxlbWVudGF0aW9uCiAg
ICAgICAgIGZvciB0eXBlLCBwcm94eSBpbiBzZWxmLnByb3hpZXMuaXRlbXMoKToKICAgICAgICAg
ICAgIGlmIHNlbGYuX2RlYnVnbGV2ZWwgPiAwOgpAQCAtNjkxLDYgKzcxMywyMSBAQAogICAgICAg
ICBwcm94eSA9IHNlbGYuZ2V0X3Byb3h5X2Vudl92YXIodHlwZSkKICAgICAgICAgaWYgc2VsZi5f
ZGVidWdsZXZlbCA+IDA6CiAgICAgICAgICAgICBwcmludCAnc2V0X3Byb3h5ICVzX3JlcXVlc3Qg
Zm9yICVyJyAlICh0eXBlLCBwcm94eSkKKyAgICAgICAgIyBFeHRyYWN0IGNyZWRlbnRpYWxzIGZy
b20gdGhlIHVybCBhbmQgc3RvcmUgdGhlbSBpbiB0aGUKKyAgICAgICAgIyBwYXNzd29yZCBtYW5h
Z2VyIHNvIHRoYXQgdGhlIHByb3h5IEF1dGhIYW5kbGVyIGNhbiB1c2UKKyAgICAgICAgIyB0aGVt
IGxhdGVyLgorICAgICAgICBwcm94eSwgdXNlciwgcGFzc3dvcmQgPSBleHRyYWN0X2NyZWRlbnRp
YWxzKHByb3h5KQorICAgICAgICBpZiByZXF1ZXN0LnByb3h5X2F1dGggPT0ge306CisgICAgICAg
ICAgICAjIE5vIHByb3h5IGF1dGggcGFyYW1ldGVyIGFyZSBhdmFpbGFibGUsIHdlIGFyZQorICAg
ICAgICAgICAgIyBoYW5kbGluZyB0aGUgZmlyc3QgcHJveGllZCByZXF1ZXN0LCBpbnRpYWxpemUu
CisgICAgICAgICAgICAjIHNjaGVtZSBhbmQgcmVhbG0gd2lsbCBiZSBzZXQgYnkgdGhlIEF1dGhI
YW5kbGVyCisgICAgICAgICAgICBhdXRodXJpID0gZXh0cmFjdF9hdXRoZW50aWNhdGlvbl91cmko
cHJveHkpCisgICAgICAgICAgICByZXF1ZXN0LnByb3h5X2F1dGggPSB7J3VzZXInOiB1c2VyLCAn
cGFzc3dvcmQnOiBwYXNzd29yZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAn
YXV0aHVyaSc6IGF1dGh1cml9CisgICAgICAgICAgICBpZiB1c2VyIGFuZCBwYXNzd29yZCBpcyBu
b3QgTm9uZTogIyAnJyBpcyBhIHZhbGlkIHBhc3N3b3JkCisgICAgICAgICAgICAgICAgIyBXZSBk
ZWZhdWx0IHRvIGEgcmVhbG0gb2YgTm9uZSB0byBjYXRjaCB0aGVtIGFsbC4KKyAgICAgICAgICAg
ICAgICBzZWxmLnBhc3N3b3JkX21hbmFnZXIuYWRkX3Bhc3N3b3JkKE5vbmUsIGF1dGh1cmksCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2VyLCBw
YXNzd29yZCkKICAgICAgICAgb3JpZ190eXBlID0gcmVxdWVzdC5nZXRfdHlwZSgpCiAgICAgICAg
IHNjaGVtZSwgcl9zY2hlbWUgPSB1cmxsaWIuc3BsaXR0eXBlKHByb3h5KQogICAgICAgICBpZiBz
ZWxmLl9kZWJ1Z2xldmVsID4gMDoKQEAgLTY5OSwxNyArNzM2LDYgQEAKICAgICAgICAgaWYgaG9z
dCBpcyBOb25lOgogICAgICAgICAgICAgcmFpc2UgZXJyb3JzLkludmFsaWRVUkwocHJveHksCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnSW52YWxpZCBzeW50YXggaW4gcHJv
eHkgZW52IHZhcmlhYmxlJykKLSAgICAgICAgZWxpZiAnQCcgaW4gaG9zdDoKLSAgICAgICAgICAg
IHVzZXJfcGFzcywgaG9zdCA9IGhvc3Quc3BsaXQoJ0AnLCAxKQotICAgICAgICAgICAgaWYgJzon
IGluIHVzZXJfcGFzczoKLSAgICAgICAgICAgICAgICB1c2VyLCBwYXNzd29yZCA9IHVzZXJfcGFz
cy5zcGxpdCgnOicsIDEpCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIHVzZXIg
PSB1c2VyX3Bhc3MKLSAgICAgICAgICAgICAgICBwYXNzd29yZCA9ICcnCi0gICAgICAgICAgICB1
c2VyX3Bhc3MgPSAnJXM6JXMnICUgKHVybGxpYi51bnF1b3RlKHVzZXIpLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB1cmxsaWIudW5xdW90ZShwYXNzd29yZCkpCi0gICAgICAg
ICAgICB1c2VyX3Bhc3MgPSB1c2VyX3Bhc3MuZW5jb2RlKCdiYXNlNjQnKS5zdHJpcCgpCi0gICAg
ICAgICAgICByZXF1ZXN0LmFkZF9oZWFkZXIoJ1Byb3h5LWF1dGhvcml6YXRpb24nLCAnQmFzaWMg
JyArIHVzZXJfcGFzcykKICAgICAgICAgaG9zdCA9IHVybGxpYi51bnF1b3RlKGhvc3QpCiAgICAg
ICAgIHJlcXVlc3Quc2V0X3Byb3h5KGhvc3QsIHR5cGUpCiAgICAgICAgIGlmIHNlbGYuX2RlYnVn
bGV2ZWwgPiAwOgpAQCAtNzE3LDE4ICs3NDMsMzg3IEBACiAgICAgICAgIHJldHVybiByZXF1ZXN0
CiAKIAotY2xhc3MgSFRUUEJhc2ljQXV0aEhhbmRsZXIodXJsbGliMi5IVFRQQmFzaWNBdXRoSGFu
ZGxlcik6Ci0gICAgIiIiQ3VzdG9tIGJhc2ljIGF1dGhlbnRpZmljYXRpb24gaGFuZGxlci4KLQot
ICAgIFNlbmQgdGhlIGF1dGhlbnRpZmljYXRpb24gcHJldmVudGl2ZWx5IHRvIGF2b2lkIHRoZSB0
aGUKLSAgICByb3VuZHRyaXAgYXNzb2NpYXRlZCB3aXRoIHRoZSA0MDEgZXJyb3IuCi0gICAgIiIi
Ci0KLSMgICAgZGVmIGh0dHBfcmVxdWVzdChzZWxmLCByZXF1ZXN0KToKLSMgICAgICAgICIiIklu
c2VydCBhbiBhdXRoZW50aWZpY2F0aW9uIGhlYWRlciBpZiBpbmZvcm1hdGlvbiBpcyBhdmFpbGFi
bGUiIiIKLSMgICAgICAgIGlmIHJlcXVlc3QuYXV0aCA9PSAnYmFzaWMnIGFuZCByZXF1ZXN0LnBh
c3N3b3JkIGlzIG5vdCBOb25lOgotIyAgICAgICAgICAgIAotIyAgICAgICAgcmV0dXJuIHJlcXVl
c3QKK2NsYXNzIEFic3RyYWN0QXV0aEhhbmRsZXIodXJsbGliMi5CYXNlSGFuZGxlcik6CisgICAg
IiIiQSBjdXN0b20gYWJzdHJhY3QgYXV0aGVudGljYXRpb24gaGFuZGxlciBmb3IgYWxsIGh0dHAg
YXV0aGVudGljYXRpb25zLgorCisgICAgUHJvdmlkZXMgdGhlIG1lYXQgdG8gaGFuZGxlIGF1dGhl
bnRpY2F0aW9uIGVycm9ycyBhbmQKKyAgICBwcmV2ZW50aXZlbHkgc2V0IGF1dGhlbnRpY2F0aW9u
IGhlYWRlcnMgYWZ0ZXIgdGhlIGZpcnN0CisgICAgc3VjY2Vzc2Z1bCBhdXRoZW50aWNhdGlvbi4K
KworICAgIFRoaXMgY2FuIGJlIHVzZWQgZm9yIGh0dHAgYW5kIHByb3h5LCBhcyB3ZWxsIGFzIGZv
ciBiYXNpYyBhbmQKKyAgICBkaWdlc3QgYXV0aGVudGljYXRpb25zLgorCisgICAgVGhpcyBwcm92
aWRlcyBhbiB1bmlmaWVkIGludGVyZmFjZSBmb3IgYWxsIGF1dGhlbnRpY2F0aW9uIGhhbmRsZXJz
CisgICAgKHVybGxpYjIgcHJvdmlkZXMgZmFyIHRvbyBtYW55IHdpdGggZGlmZmVyZW50IHBvbGlj
aWVzKS4KKworICAgIFRoZSBpbnRlcmFjdGlvbiBiZXR3ZWVuIHRoaXMgaGFuZGxlciBhbmQgdGhl
IHVybGxpYjIKKyAgICBmcmFtZXdvcmsgaXMgbm90IG9idmlvdXMsIGl0IHdvcmtzIGFzIGZvbGxv
dzoKKworICAgIG9wZW5lci5vcGVuKHJlcXVlc3QpIGlzIGNhbGxlZDoKKworICAgIC0gdGhhdCBt
YXkgdHJpZ2dlciBodHRwX3JlcXVlc3Qgd2hpY2ggd2lsbCBhZGQgYW4gYXV0aGVudGljYXRpb24g
aGVhZGVyCisgICAgICAoc2VsZi5idWlsZF9oZWFkZXIpIGlmIGVub3VnaCBpbmZvIGlzIGF2YWls
YWJsZS4KKworICAgIC0gdGhlIHJlcXVlc3QgaXMgc2VudCB0byB0aGUgc2VydmVyLAorCisgICAg
LSBpZiBhbiBhdXRoZW50aWNhdGlvbiBlcnJvciBpcyByZWNlaXZlZCBzZWxmLmF1dGhfcmVxdWly
ZWQgaXMgY2FsbGVkLAorICAgICAgd2UgYWNxdWlyZSB0aGUgYXV0aGVudGljYXRpb24gaW5mbyBp
biB0aGUgZXJyb3IgaGVhZGVycyBhbmQgY2FsbAorICAgICAgc2VsZi5hdXRoX21hdGNoIHRvIGNo
ZWNrIHRoYXQgd2UgYXJlIGFibGUgdG8gdHJ5IHRoZQorICAgICAgYXV0aGVudGljYXRpb24gYW5k
IGNvbXBsZXRlIHRoZSBhdXRoZW50aWNhdGlvbiBwYXJhbWV0ZXJzLAorCisgICAgLSB3ZSBjYWxs
IHBhcmVudC5vcGVuKHJlcXVlc3QpLCB0aGF0IG1heSB0cmlnZ2VyIGh0dHBfcmVxdWVzdAorICAg
ICAgYW5kIHdpbGwgYWRkIGEgaGVhZGVyIChzZWxmLmJ1aWxkX2hlYWRlciksIGJ1dCBoZXJlIHdl
IGhhdmUKKyAgICAgIGFsbCB0aGUgcmVxdWlyZWQgaW5mbyAoa2VlcCBpbiBtaW5kIHRoYXQgdGhl
IHJlcXVlc3QgYW5kCisgICAgICBhdXRoZW50aWNhdGlvbiB1c2VkIGluIHRoZSByZWN1cnNpdmUg
Y2FsbHMgYXJlIHJlYWxseSAoYW5kIG11c3QgYmUpCisgICAgICB0aGUgKnNhbWUqIG9iamVjdHMp
LgorCisgICAgLSBpZiB0aGUgY2FsbCByZXR1cm5zIGEgcmVzcG9uc2UsIHRoZSBhdXRoZW50aWNh
dGlvbiBoYXZlIGJlZW4KKyAgICAgIHN1Y2Nlc3NmdWwgYW5kIHRoZSByZXF1ZXN0IGF1dGhlbnRp
Y2F0aW9uIHBhcmFtZXRlcnMgaGF2ZSBiZWVuIHVwZGF0ZWQuCisgICAgIiIiCisKKyAgICAjIFRo
ZSBmb2xsb3dpbmcgYXR0cmlidXRlcyBzaG91bGQgYmUgZGVmaW5lZCBieSBkYXVnaHRlcgorICAg
ICMgY2xhc3NlczoKKyAgICAjIC0gYXV0aF9yZXF1aXJlZF9oZWFkZXI6ICB0aGUgaGVhZGVyIHJl
Y2VpdmVkIGZyb20gdGhlIHNlcnZlcgorICAgICMgLSBhdXRoX2hlYWRlcjogdGhlIGhlYWRlciBz
ZW50IGluIHRoZSByZXF1ZXN0CisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgcGFzc3dvcmRfbWFu
YWdlcik6CisgICAgICAgIHNlbGYucGFzc3dvcmRfbWFuYWdlciA9IHBhc3N3b3JkX21hbmFnZXIK
KyAgICAgICAgc2VsZi5maW5kX3VzZXJfcGFzc3dvcmQgPSBwYXNzd29yZF9tYW5hZ2VyLmZpbmRf
dXNlcl9wYXNzd29yZAorICAgICAgICBzZWxmLmFkZF9wYXNzd29yZCA9IHBhc3N3b3JkX21hbmFn
ZXIuYWRkX3Bhc3N3b3JkCisKKyAgICBkZWYgdXBkYXRlX2F1dGgoc2VsZiwgYXV0aCwga2V5LCB2
YWx1ZSk6CisgICAgICAgICIiIlVwZGF0ZSBhIHZhbHVlIGluIGF1dGggbWFya2luZyB0aGUgYXV0
aCBhcyBtb2RpZmllZCBpZiBuZWVkZWQiIiIKKyAgICAgICAgb2xkX3ZhbHVlID0gYXV0aC5nZXQo
a2V5LCBOb25lKQorICAgICAgICBpZiBvbGRfdmFsdWUgIT0gdmFsdWU6CisgICAgICAgICAgICBh
dXRoW2tleV0gPSB2YWx1ZQorICAgICAgICAgICAgYXV0aFsnbW9kaWZpZWQnXSA9IFRydWUKKwor
ICAgIGRlZiBhdXRoX3JlcXVpcmVkKHNlbGYsIHJlcXVlc3QsIGhlYWRlcnMpOgorICAgICAgICAi
IiJSZXRyeSB0aGUgcmVxdWVzdCBpZiB0aGUgYXV0aCBzY2hlbWUgaXMgb3Vycy4KKworICAgICAg
ICA6cGFyYW0gcmVxdWVzdDogVGhlIHJlcXVlc3QgbmVlZGluZyBhdXRoZW50aWNhdGlvbi4KKyAg
ICAgICAgOnBhcmFtIGhlYWRlcnM6IFRoZSBoZWFkZXJzIGZvciB0aGUgYXV0aGVudGljYXRpb24g
ZXJyb3IgcmVzcG9uc2UuCisgICAgICAgIDpyZXR1cm46IE5vbmUgb3IgdGhlIHJlc3BvbnNlIGZv
ciB0aGUgYXV0aGVudGljYXRlZCByZXF1ZXN0LgorICAgICAgICAiIiIKKyAgICAgICAgc2VydmVy
X2hlYWRlciA9IGhlYWRlcnMuZ2V0KHNlbGYuYXV0aF9yZXF1aXJlZF9oZWFkZXIsIE5vbmUpCisg
ICAgICAgIGlmIHNlcnZlcl9oZWFkZXIgaXMgTm9uZToKKyAgICAgICAgICAgICMgVGhlIGh0dHAg
ZXJyb3IgTVVTVCBoYXZlIHRoZSBhc3NvY2lhdGVkCisgICAgICAgICAgICAjIGhlYWRlci4gVGhp
cyBtdXN0IG5ldmVyIGhhcHBlbiBpbiBwcm9kdWN0aW9uIGNvZGUuCisgICAgICAgICAgICByYWlz
ZSBLZXlFcnJvcignJXMgbm90IGZvdW5kJyAlIHNlbGYuYXV0aF9yZXF1aXJlZF9oZWFkZXIpCisK
KyAgICAgICAgYXV0aCA9IHNlbGYuZ2V0X2F1dGgocmVxdWVzdCkKKyAgICAgICAgaWYgYXV0aC5n
ZXQoJ3VzZXInLCBOb25lKSBpcyBOb25lOgorICAgICAgICAgICAgIyBXaXRob3V0IGEga25vd24g
dXNlciwgd2UgY2FuJ3QgYXV0aGVudGljYXRlCisgICAgICAgICAgICByZXR1cm4gTm9uZQorCisg
ICAgICAgIGF1dGhbJ21vZGlmaWVkJ10gPSBGYWxzZQorICAgICAgICBpZiBzZWxmLmF1dGhfbWF0
Y2goc2VydmVyX2hlYWRlciwgYXV0aCk6CisgICAgICAgICAgICAjIGF1dGhfbWF0Y2ggbWF5IGhh
dmUgbW9kaWZpZWQgYXV0aCAoYnkgYWRkaW5nIHRoZQorICAgICAgICAgICAgIyBwYXNzd29yZCBv
ciBjaGFuZ2luZyB0aGUgcmVhbG0sIGZvciBleGFtcGxlKQorICAgICAgICAgICAgaWYgcmVxdWVz
dC5nZXRfaGVhZGVyKHNlbGYuYXV0aF9oZWFkZXIsIE5vbmUpIGlzIG5vdCBOb25lIFwKKyAgICAg
ICAgICAgICAgICAgICAgYW5kIG5vdCBhdXRoWydtb2RpZmllZCddOgorICAgICAgICAgICAgICAg
ICMgV2UgYWxyZWFkeSB0cmllZCB0aGF0LCBnaXZlIHVwCisgICAgICAgICAgICAgICAgcmV0dXJu
IE5vbmUKKworICAgICAgICAgICAgcmVzcG9uc2UgPSBzZWxmLnBhcmVudC5vcGVuKHJlcXVlc3Qp
CisgICAgICAgICAgICBpZiByZXNwb25zZToKKyAgICAgICAgICAgICAgICBzZWxmLmF1dGhfc3Vj
Y2Vzc2Z1bChyZXF1ZXN0LCByZXNwb25zZSkKKyAgICAgICAgICAgIHJldHVybiByZXNwb25zZQor
ICAgICAgICAjIFdlIGFyZSBub3QgcXVhbGlmaWVkIHRvIGhhbmRsZSB0aGUgYXV0aGVudGljYXRp
b24uCisgICAgICAgICMgTm90ZTogdGhlIGF1dGhlbnRpY2F0aW9uIGVycm9yIGhhbmRsaW5nIHdp
bGwgdHJ5IGFsbAorICAgICAgICAjIGF2YWlsYWJsZSBoYW5kbGVycy4gSWYgb25lIG9mIHRoZW0g
YXV0aGVudGljYXRlcworICAgICAgICAjIHN1Y2Nlc3NmdWxseSwgYSByZXNwb25zZSB3aWxsIGJl
IHJldHVybmVkLiBJZiBub25lIG9mCisgICAgICAgICMgdGhlbSBzdWNjZWVkcywgTm9uZSB3aWxs
IGJlIHJldHVybmVkIGFuZCB0aGUgZXJyb3IKKyAgICAgICAgIyBoYW5kbGVyIHdpbGwgcmFpc2Ug
dGhlIDQwMSAnVW5hdXRob3JpemVkJyBvciB0aGUgNDA3CisgICAgICAgICMgJ1Byb3h5IEF1dGhl
bnRpY2F0aW9uIFJlcXVpcmVkJyBlcnJvci4KKyAgICAgICAgcmV0dXJuIE5vbmUKKworICAgIGRl
ZiBhZGRfYXV0aF9oZWFkZXIoc2VsZiwgcmVxdWVzdCwgaGVhZGVyKToKKyAgICAgICAgIiIiQWRk
IHRoZSBhdXRoZW50aWNhdGlvbiBoZWFkZXIgdG8gdGhlIHJlcXVlc3QiIiIKKyAgICAgICAgcmVx
dWVzdC5hZGRfdW5yZWRpcmVjdGVkX2hlYWRlcihzZWxmLmF1dGhfaGVhZGVyLCBoZWFkZXIpCisK
KyAgICBkZWYgYXV0aF9tYXRjaChzZWxmLCBoZWFkZXIsIGF1dGgpOgorICAgICAgICAiIiJDaGVj
ayB0aGF0IHdlIGFyZSBhYmxlIHRvIGhhbmRsZSB0aGF0IGF1dGhlbnRpY2F0aW9uIHNjaGVtZS4K
KworICAgICAgICBUaGUgcmVxdWVzdCBhdXRoZW50aWNhdGlvbiBwYXJhbWV0ZXJzIG1heSBuZWVk
IHRvIGJlCisgICAgICAgIHVwZGF0ZWQgd2l0aCBpbmZvIGZyb20gdGhlIHNlcnZlci4gU29tZSBv
ZiB0aGVzZQorICAgICAgICBwYXJhbWV0ZXJzLCB3aGVuIGNvbWJpbmVkLCBhcmUgY29uc2lkZXJl
ZCB0byBiZSB0aGUKKyAgICAgICAgYXV0aGVudGljYXRpb24ga2V5LCBpZiBvbmUgb2YgdGhlbSBj
aGFuZ2UgdGhlCisgICAgICAgIGF1dGhlbnRpY2F0aW9uIHJlc3VsdCBtYXkgY2hhbmdlLiAndXNl
cicgYW5kICdwYXNzd29yZCcKKyAgICAgICAgYXJlIGV4YW1wbHMsIGJ1dCBzb21lIGF1dGggc2No
ZW1lcyBtYXkgaGF2ZSBvdGhlcnMKKyAgICAgICAgKGRpZ2VzdCdzIG5vbmNlIGlzIGFuIGV4YW1w
bGUsIGRpZ2VzdCdzIG5vbmNlX2NvdW50IGlzIGEKKyAgICAgICAgKmNvdW50ZXItZXhhbXBsZSop
LiBTdWNoIHBhcmFtZXRlcnMgbXVzdCBiZSB1cGRhdGVkIGJ5CisgICAgICAgIHVzaW5nIHRoZSB1
cGRhdGVfYXV0aCgpIG1ldGhvZC4KKyAgICAgICAgCisgICAgICAgIDpwYXJhbSBoZWFkZXI6IFRo
ZSBhdXRoZW50aWNhdGlvbiBoZWFkZXIgc2VudCBieSB0aGUgc2VydmVyLgorICAgICAgICA6cGFy
YW0gYXV0aDogVGhlIGF1dGggcGFyYW1ldGVycyBhbHJlYWR5IGtub3duLiBUaGV5IG1heSBiZQor
ICAgICAgICAgICAgIHVwZGF0ZWQuCisgICAgICAgIDpyZXR1cm5zOiBUcnVlIGlmIHdlIGNhbiB0
cnkgdG8gaGFuZGxlIHRoZSBhdXRoZW50aWNhdGlvbi4KKyAgICAgICAgIiIiCisgICAgICAgIHJh
aXNlIE5vdEltcGxlbWVudGVkRXJyb3Ioc2VsZi5hdXRoX21hdGNoKQorCisgICAgZGVmIGJ1aWxk
X2F1dGhfaGVhZGVyKHNlbGYsIGF1dGgsIHJlcXVlc3QpOgorICAgICAgICAiIiJCdWlsZCB0aGUg
dmFsdWUgb2YgdGhlIGhlYWRlciB1c2VkIHRvIGF1dGhlbnRpY2F0ZS4KKworICAgICAgICA6cGFy
YW0gYXV0aDogVGhlIGF1dGggcGFyYW1ldGVycyBuZWVkZWQgdG8gYnVpbGQgdGhlIGhlYWRlci4K
KyAgICAgICAgOnBhcmFtIHJlcXVlc3Q6IFRoZSByZXF1ZXN0IG5lZWRpbmcgYXV0aGVudGljYXRp
b24uCisKKyAgICAgICAgOnJldHVybjogTm9uZSBvciBoZWFkZXIuCisgICAgICAgICIiIgorICAg
ICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yKHNlbGYuYnVpbGRfYXV0aF9oZWFkZXIpCisK
KyAgICBkZWYgYXV0aF9zdWNjZXNzZnVsKHNlbGYsIHJlcXVlc3QsIHJlc3BvbnNlKToKKyAgICAg
ICAgIiIiVGhlIGF1dGhlbnRpZmljYXRpb24gd2FzIHN1Y2Nlc3NmdWwgZm9yIHRoZSByZXF1ZXN0
LgorCisgICAgICAgIEFkZGl0aW9uYWwgaW5mb3MgbWF5IGJlIGF2YWlsYWJsZSBpbiB0aGUgcmVz
cG9uc2UuCisKKyAgICAgICAgOnBhcmFtIHJlcXVlc3Q6IFRoZSBzdWNjZXNmdWxseSBhdXRoZW50
aWNhdGVkIHJlcXVlc3QuCisgICAgICAgIDpwYXJhbSByZXNwb25zZTogVGhlIHNlcnZlciByZXNw
b25zZSAobWF5IGNvbnRhaW4gYXV0aCBpbmZvKS4KKyAgICAgICAgIiIiCisgICAgICAgIHBhc3MK
KworICAgIGRlZiBnZXRfcGFzc3dvcmQoc2VsZiwgdXNlciwgYXV0aHVyaSwgcmVhbG09Tm9uZSk6
CisgICAgICAgICIiIkFzayB1c2VyIGZvciBhIHBhc3N3b3JkIGlmIG5vbmUgaXMgYWxyZWFkeSBh
dmFpbGFibGUuIiIiCisgICAgICAgIHVzZXJfZm91bmQsIHBhc3N3b3JkID0gc2VsZi5maW5kX3Vz
ZXJfcGFzc3dvcmQocmVhbG0sIGF1dGh1cmkpCisgICAgICAgIGlmIHVzZXJfZm91bmQgIT0gdXNl
cjoKKyAgICAgICAgICAgICMgRklYTUU6IHdyaXRlIGEgdGVzdCBmb3IgdGhhdCBjYXNlCisgICAg
ICAgICAgICBwYXNzd29yZCA9IE5vbmUKKworICAgICAgICBpZiBwYXNzd29yZCBpcyBOb25lOgor
ICAgICAgICAgICAgIyBQcm9tcHQgdXNlciBvbmx5IGlmIHdlIGNhbid0IGZpbmQgYSBwYXNzd29y
ZAorICAgICAgICAgICAgaWYgcmVhbG06CisgICAgICAgICAgICAgICAgcmVhbG1fcHJvbXB0ID0g
IiBSZWFsbTogJyVzJyIgJSByZWFsbQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAg
ICByZWFsbV9wcm9tcHQgPSAnJworICAgICAgICAgICAgc2NoZW1lLCBob3N0LCBwYXRoLCBxdWVy
eSwgZnJhZ21lbnQgPSB1cmxwYXJzZS51cmxzcGxpdChhdXRodXJpKQorICAgICAgICAgICAgcGFz
c3dvcmQgPSB1aS51aV9mYWN0b3J5LmdldF9wYXNzd29yZChwcm9tcHQ9c2VsZi5wYXNzd29yZF9w
cm9tcHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHVzZXI9dXNlciwgaG9zdD1ob3N0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICByZWFsbT1yZWFsbV9wcm9tcHQpCisgICAgICAgICAgICBpZiBwYXNz
d29yZCBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICBzZWxmLmFkZF9wYXNzd29yZChyZWFs
bSwgYXV0aHVyaSwgdXNlciwgcGFzc3dvcmQpCisgICAgICAgIHJldHVybiBwYXNzd29yZAorCisg
ICAgZGVmIGh0dHBfcmVxdWVzdChzZWxmLCByZXF1ZXN0KToKKyAgICAgICAgIiIiSW5zZXJ0IGFu
IGF1dGhlbnRpY2F0aW9uIGhlYWRlciBpZiBpbmZvcm1hdGlvbiBpcyBhdmFpbGFibGUiIiIKKyAg
ICAgICAgYXV0aCA9IHNlbGYuZ2V0X2F1dGgocmVxdWVzdCkKKyAgICAgICAgaWYgc2VsZi5hdXRo
X3BhcmFtc19yZXVzYWJsZShhdXRoKToKKyAgICAgICAgICAgIHNlbGYuYWRkX2F1dGhfaGVhZGVy
KHJlcXVlc3QsIHNlbGYuYnVpbGRfYXV0aF9oZWFkZXIoYXV0aCwgcmVxdWVzdCkpCisgICAgICAg
IHJldHVybiByZXF1ZXN0CisKKyAgICBodHRwc19yZXF1ZXN0ID0gaHR0cF9yZXF1ZXN0ICMgRklY
TUU6IE5lZWQgdGVzdAorCisKK2NsYXNzIEJhc2ljQXV0aEhhbmRsZXIoQWJzdHJhY3RBdXRoSGFu
ZGxlcik6CisgICAgIiIiQSBjdXN0b20gYmFzaWMgYXV0aGVudGljYXRpb24gaGFuZGxlci4iIiIK
KworICAgIGF1dGhfcmVnZXhwID0gcmUuY29tcGlsZSgncmVhbG09IihbXiJdKikiJywgcmUuSSkK
KworICAgIGRlZiBidWlsZF9hdXRoX2hlYWRlcihzZWxmLCBhdXRoLCByZXF1ZXN0KToKKyAgICAg
ICAgcmF3ID0gJyVzOiVzJyAlIChhdXRoWyd1c2VyJ10sIGF1dGhbJ3Bhc3N3b3JkJ10pCisgICAg
ICAgIGF1dGhfaGVhZGVyID0gJ0Jhc2ljICcgKyByYXcuZW5jb2RlKCdiYXNlNjQnKS5zdHJpcCgp
CisgICAgICAgIHJldHVybiBhdXRoX2hlYWRlcgorCisgICAgZGVmIGF1dGhfbWF0Y2goc2VsZiwg
aGVhZGVyLCBhdXRoKToKKyAgICAgICAgc2NoZW1lLCByYXdfYXV0aCA9IGhlYWRlci5zcGxpdChO
b25lLCAxKQorICAgICAgICBzY2hlbWUgPSBzY2hlbWUubG93ZXIoKQorICAgICAgICBpZiBzY2hl
bWUgIT0gJ2Jhc2ljJzoKKyAgICAgICAgICAgIHJldHVybiBGYWxzZQorCisgICAgICAgIG1hdGNo
ID0gc2VsZi5hdXRoX3JlZ2V4cC5zZWFyY2gocmF3X2F1dGgpCisgICAgICAgIGlmIG1hdGNoOgor
ICAgICAgICAgICAgcmVhbG0gPSBtYXRjaC5ncm91cHMoKQorICAgICAgICAgICAgaWYgc2NoZW1l
ICE9ICdiYXNpYyc6CisgICAgICAgICAgICAgICAgcmV0dXJuIEZhbHNlCisKKyAgICAgICAgICAg
ICMgUHV0IHVzZWZ1bCBpbmZvIGludG8gYXV0aAorICAgICAgICAgICAgc2VsZi51cGRhdGVfYXV0
aChhdXRoLCAnc2NoZW1lJywgc2NoZW1lKQorICAgICAgICAgICAgc2VsZi51cGRhdGVfYXV0aChh
dXRoLCAncmVhbG0nLCByZWFsbSkKKyAgICAgICAgICAgIGlmIGF1dGguZ2V0KCdwYXNzd29yZCcs
Tm9uZSkgaXMgTm9uZToKKyAgICAgICAgICAgICAgICBwYXNzd29yZCA9IHNlbGYuZ2V0X3Bhc3N3
b3JkKGF1dGhbJ3VzZXInXSwgYXV0aFsnYXV0aHVyaSddLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgYXV0aFsncmVhbG0nXSkKKyAgICAgICAgICAgICAgICBz
ZWxmLnVwZGF0ZV9hdXRoKGF1dGgsICdwYXNzd29yZCcsIHBhc3N3b3JkKQorICAgICAgICByZXR1
cm4gbWF0Y2ggaXMgbm90IE5vbmUKKworICAgIGRlZiBhdXRoX3BhcmFtc19yZXVzYWJsZShzZWxm
LCBhdXRoKToKKyAgICAgICAgIyBJZiB0aGUgYXV0aCBzY2hlbWUgaXMga25vd24sIGl0IG1lYW5z
IGEgcHJldmlvdXMKKyAgICAgICAgIyBhdXRoZW50aWNhdGlvbiB3YXMgc3VjY2Vzc2Z1bCwgYWxs
IGluZm9ybWF0aW9uIGlzCisgICAgICAgICMgYXZhaWxhYmxlLCBubyBmdXJ0aGVyIGNoZWNrcyBh
cmUgbmVlZGVkLgorICAgICAgICByZXR1cm4gYXV0aC5nZXQoJ3NjaGVtZScsIE5vbmUpID09ICdi
YXNpYycKKworCitkZWYgZ2V0X2RpZ2VzdF9hbGdvcml0aG1faW1wbHMoYWxnb3JpdGhtKToKKyAg
ICBIID0gTm9uZQorICAgIEtEID0gTm9uZQorICAgIGlmIGFsZ29yaXRobSA9PSAnTUQ1JzoKKyAg
ICAgICAgSCA9IGxhbWJkYSB4OiBtZDUubmV3KHgpLmhleGRpZ2VzdCgpCisgICAgZWxpZiBhbGdv
cml0aG0gPT0gJ1NIQSc6CisgICAgICAgIEggPSBsYW1iZGEgeDogc2hhLm5ldyh4KS5oZXhkaWdl
c3QoKQorICAgIGlmIEggaXMgbm90IE5vbmU6CisgICAgICAgIEtEID0gbGFtYmRhIHNlY3JldCwg
ZGF0YTogSCgiJXM6JXMiICUgKHNlY3JldCwgZGF0YSkpCisgICAgcmV0dXJuIEgsIEtECisKKwor
ZGVmIGdldF9uZXdfY25vbmNlKG5vbmNlLCBub25jZV9jb3VudCk6CisgICAgcmF3ID0gJyVzOiVk
OiVzOiVzJyAlIChub25jZSwgbm9uY2VfY291bnQsIHRpbWUuY3RpbWUoKSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHVybGxpYjIucmFuZG9tYnl0ZXMoOCkpCisgICAgcmV0dXJuIHNoYS5u
ZXcocmF3KS5oZXhkaWdlc3QoKVs6MTZdCisKKworY2xhc3MgRGlnZXN0QXV0aEhhbmRsZXIoQWJz
dHJhY3RBdXRoSGFuZGxlcik6CisgICAgIiIiQSBjdXN0b20gZGlnZXN0IGF1dGhlbnRpY2F0aW9u
IGhhbmRsZXIuIiIiCisKKyAgICBkZWYgYXV0aF9wYXJhbXNfcmV1c2FibGUoc2VsZiwgYXV0aCk6
CisgICAgICAgICMgSWYgdGhlIGF1dGggc2NoZW1lIGlzIGtub3duLCBpdCBtZWFucyBhIHByZXZp
b3VzCisgICAgICAgICMgYXV0aGVudGljYXRpb24gd2FzIHN1Y2Nlc3NmdWwsIGFsbCBpbmZvcm1h
dGlvbiBpcworICAgICAgICAjIGF2YWlsYWJsZSwgbm8gZnVydGhlciBjaGVja3MgYXJlIG5lZWRl
ZC4KKyAgICAgICAgcmV0dXJuIGF1dGguZ2V0KCdzY2hlbWUnLCBOb25lKSA9PSAnZGlnZXN0Jwor
CisgICAgZGVmIGF1dGhfbWF0Y2goc2VsZiwgaGVhZGVyLCBhdXRoKToKKyAgICAgICAgc2NoZW1l
LCByYXdfYXV0aCA9IGhlYWRlci5zcGxpdChOb25lLCAxKQorICAgICAgICBzY2hlbWUgPSBzY2hl
bWUubG93ZXIoKQorICAgICAgICBpZiBzY2hlbWUgIT0gJ2RpZ2VzdCc6CisgICAgICAgICAgICBy
ZXR1cm4gRmFsc2UKKworICAgICAgICAjIFB1dCB0aGUgcmVxdWVzdGVkIGF1dGhlbnRpY2F0aW9u
IGluZm8gaW50byBhIGRpY3QKKyAgICAgICAgcmVxX2F1dGggPSB1cmxsaWIyLnBhcnNlX2tlcXZf
bGlzdCh1cmxsaWIyLnBhcnNlX2h0dHBfbGlzdChyYXdfYXV0aCkpCisKKyAgICAgICAgIyBDaGVj
ayB0aGF0IHdlIGNhbiBoYW5kbGUgdGhhdCBhdXRoZW50aWNhdGlvbgorICAgICAgICBxb3AgPSBy
ZXFfYXV0aC5nZXQoJ3FvcCcsIE5vbmUpCisgICAgICAgIGlmIHFvcCAhPSAnYXV0aCc6ICMgTm8g
YXV0aC1pbnQgc28gZmFyCisgICAgICAgICAgICByZXR1cm4gRmFsc2UKKworICAgICAgICBILCBL
RCA9IGdldF9kaWdlc3RfYWxnb3JpdGhtX2ltcGxzKHJlcV9hdXRoLmdldCgnYWxnb3JpdGhtJywg
J01ENScpKQorICAgICAgICBpZiBIIGlzIE5vbmU6CisgICAgICAgICAgICByZXR1cm4gRmFsc2UK
KworICAgICAgICByZWFsbSA9IHJlcV9hdXRoLmdldCgncmVhbG0nLCBOb25lKQorICAgICAgICBp
ZiBhdXRoLmdldCgncGFzc3dvcmQnLE5vbmUpIGlzIE5vbmU6CisgICAgICAgICAgICBhdXRoWydw
YXNzd29yZCddID0gc2VsZi5nZXRfcGFzc3dvcmQoYXV0aFsndXNlciddLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1dGhbJ2F1dGh1cmknXSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWFsbSkKKyAg
ICAgICAgIyBQdXQgdXNlZnVsIGluZm8gaW50byBhdXRoCisgICAgICAgIHRyeToKKyAgICAgICAg
ICAgIHNlbGYudXBkYXRlX2F1dGgoYXV0aCwgJ3NjaGVtZScsIHNjaGVtZSkKKyAgICAgICAgICAg
IGlmIHJlcV9hdXRoLmdldCgnYWxnb3JpdGhtJywgTm9uZSkgaXMgbm90IE5vbmU6CisgICAgICAg
ICAgICAgICAgc2VsZi51cGRhdGVfYXV0aChhdXRoLCAnYWxnb3JpdGhtJywgcmVxX2F1dGguZ2V0
KCdhbGdvcml0aG0nKSkKKyAgICAgICAgICAgIHNlbGYudXBkYXRlX2F1dGgoYXV0aCwgJ3JlYWxt
JywgcmVhbG0pCisgICAgICAgICAgICBub25jZSA9IHJlcV9hdXRoWydub25jZSddCisgICAgICAg
ICAgICBpZiBhdXRoLmdldCgnbm9uY2UnLCBOb25lKSAhPSBub25jZToKKyAgICAgICAgICAgICAg
ICAjIEEgbmV3IG5vbmNlLCBuZXZlciB1c2VkCisgICAgICAgICAgICAgICAgc2VsZi51cGRhdGVf
YXV0aChhdXRoLCAnbm9uY2VfY291bnQnLCAwKQorICAgICAgICAgICAgc2VsZi51cGRhdGVfYXV0
aChhdXRoLCAnbm9uY2UnLCBub25jZSkKKyAgICAgICAgICAgIHNlbGYudXBkYXRlX2F1dGgoYXV0
aCwgJ3FvcCcsIHFvcCkKKyAgICAgICAgICAgIGF1dGhbJ29wYXF1ZSddID0gcmVxX2F1dGguZ2V0
KCdvcGFxdWUnLCBOb25lKQorICAgICAgICBleGNlcHQgS2V5RXJyb3I6CisgICAgICAgICAgICAj
IFNvbWUgcmVxdWlyZWQgZmllbGQgaXMgbm90IHRoZXJlCisgICAgICAgICAgICByZXR1cm4gRmFs
c2UKKworICAgICAgICByZXR1cm4gVHJ1ZQorCisgICAgZGVmIGJ1aWxkX2F1dGhfaGVhZGVyKHNl
bGYsIGF1dGgsIHJlcXVlc3QpOgorICAgICAgICB1cmxfc2NoZW1lLCB1cmxfc2VsZWN0b3IgPSB1
cmxsaWIuc3BsaXR0eXBlKHJlcXVlc3QuZ2V0X3NlbGVjdG9yKCkpCisgICAgICAgIHNlbF9ob3N0
LCB1cmkgPSB1cmxsaWIuc3BsaXRob3N0KHVybF9zZWxlY3RvcikKKworICAgICAgICBBMSA9ICcl
czolczolcycgJSAoYXV0aFsndXNlciddLCBhdXRoWydyZWFsbSddLCBhdXRoWydwYXNzd29yZCdd
KQorICAgICAgICBBMiA9ICclczolcycgJSAocmVxdWVzdC5nZXRfbWV0aG9kKCksIHVyaSkKKwor
ICAgICAgICBub25jZSA9IGF1dGhbJ25vbmNlJ10KKyAgICAgICAgcW9wID0gYXV0aFsncW9wJ10K
KworICAgICAgICBub25jZV9jb3VudCA9IGF1dGhbJ25vbmNlX2NvdW50J10gKyAxCisgICAgICAg
IG5jdmFsdWUgPSAnJTA4eCcgJSBub25jZV9jb3VudAorICAgICAgICBjbm9uY2UgPSBnZXRfbmV3
X2Nub25jZShub25jZSwgbm9uY2VfY291bnQpCisKKyAgICAgICAgSCwgS0QgPSBnZXRfZGlnZXN0
X2FsZ29yaXRobV9pbXBscyhhdXRoLmdldCgnYWxnb3JpdGhtJywgJ01ENScpKQorICAgICAgICBu
b25jZV9kYXRhID0gJyVzOiVzOiVzOiVzOiVzJyAlIChub25jZSwgbmN2YWx1ZSwgY25vbmNlLCBx
b3AsIEgoQTIpKQorICAgICAgICByZXF1ZXN0X2RpZ2VzdCA9IEtEKEgoQTEpLCBub25jZV9kYXRh
KQorCisgICAgICAgIGhlYWRlciA9ICdEaWdlc3QgJworICAgICAgICBoZWFkZXIgKz0gJ3VzZXJu
YW1lPSIlcyIsIHJlYWxtPSIlcyIsIG5vbmNlPSIlcyInICUgKGF1dGhbJ3VzZXInXSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBh
dXRoWydyZWFsbSddLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIG5vbmNlKQorICAgICAgICBoZWFkZXIgKz0gJywgdXJpPSIlcyIn
ICUgdXJpCisgICAgICAgIGhlYWRlciArPSAnLCBjbm9uY2U9IiVzIiwgbmM9JXMnICUgKGNub25j
ZSwgbmN2YWx1ZSkKKyAgICAgICAgaGVhZGVyICs9ICcsIHFvcD0iJXMiJyAlIHFvcAorICAgICAg
ICBoZWFkZXIgKz0gJywgcmVzcG9uc2U9IiVzIicgJSByZXF1ZXN0X2RpZ2VzdAorICAgICAgICAj
IEFwcGVuZCB0aGUgb3B0aW9uYWwgZmllbGRzCisgICAgICAgIG9wYXF1ZSA9IGF1dGguZ2V0KCdv
cGFxdWUnLCBOb25lKQorICAgICAgICBpZiBvcGFxdWU6CisgICAgICAgICAgICBoZWFkZXIgKz0g
Jywgb3BhcXVlPSIlcyInICUgb3BhcXVlCisgICAgICAgIGlmIGF1dGguZ2V0KCdhbGdvcml0aG0n
LCBOb25lKToKKyAgICAgICAgICAgIGhlYWRlciArPSAnLCBhbGdvcml0aG09IiVzIicgJSBhdXRo
LmdldCgnYWxnb3JpdGhtJykKKworICAgICAgICAjIFdlIGhhdmUgdXNlZCB0aGUgbm9uY2Ugb25j
ZSBtb3JlLCB1cGRhdGUgdGhlIGNvdW50CisgICAgICAgIGF1dGhbJ25vbmNlX2NvdW50J10gPSBu
b25jZV9jb3VudAorCisgICAgICAgIHJldHVybiBoZWFkZXIKKworCitjbGFzcyBIVFRQQXV0aEhh
bmRsZXIoQWJzdHJhY3RBdXRoSGFuZGxlcik6CisgICAgIiIiQ3VzdG9tIGh0dHAgYXV0aGVudGlj
YXRpb24gaGFuZGxlci4KKworICAgIFNlbmQgdGhlIGF1dGhlbnRpY2F0aW9uIHByZXZlbnRpdmVs
eSB0byBhdm9pZCB0aGUgcm91bmR0cmlwCisgICAgYXNzb2NpYXRlZCB3aXRoIHRoZSA0MDEgZXJy
b3IgYW5kIGtlZXAgdGhlIHJldmVsYW50IGluZm8gaW4KKyAgICB0aGUgYXV0aCByZXF1ZXN0IGF0
dHJpYnV0ZS4KKyAgICAiIiIKKworICAgIHBhc3N3b3JkX3Byb21wdCA9ICdIVFRQICUodXNlcilz
QCUoaG9zdClzJShyZWFsbSlzIHBhc3N3b3JkJworICAgIGF1dGhfcmVxdWlyZWRfaGVhZGVyID0g
J3d3dy1hdXRoZW50aWNhdGUnCisgICAgYXV0aF9oZWFkZXIgPSAnQXV0aG9yaXphdGlvbicKKwor
ICAgIGRlZiBnZXRfYXV0aChzZWxmLCByZXF1ZXN0KToKKyAgICAgICAgIiIiR2V0IHRoZSBhdXRo
IHBhcmFtcyBmcm9tIHRoZSByZXF1ZXN0IiIiCisgICAgICAgIHJldHVybiByZXF1ZXN0LmF1dGgK
KworICAgIGRlZiBzZXRfYXV0aChzZWxmLCByZXF1ZXN0LCBhdXRoKToKKyAgICAgICAgIiIiU2V0
IHRoZSBhdXRoIHBhcmFtcyBmb3IgdGhlIHJlcXVlc3QiIiIKKyAgICAgICAgcmVxdWVzdC5hdXRo
ID0gYXV0aAorCisgICAgZGVmIGh0dHBfZXJyb3JfNDAxKHNlbGYsIHJlcSwgZnAsIGNvZGUsIG1z
ZywgaGVhZGVycyk6CisgICAgICAgIHJldHVybiBzZWxmLmF1dGhfcmVxdWlyZWQocmVxLCBoZWFk
ZXJzKQorCisKK2NsYXNzIFByb3h5QXV0aEhhbmRsZXIoQWJzdHJhY3RBdXRoSGFuZGxlcik6Cisg
ICAgIiIiQ3VzdG9tIHByb3h5IGF1dGhlbnRpY2F0aW9uIGhhbmRsZXIuCisKKyAgICBTZW5kIHRo
ZSBhdXRoZW50aWNhdGlvbiBwcmV2ZW50aXZlbHkgdG8gYXZvaWQgdGhlIHJvdW5kdHJpcAorICAg
IGFzc29jaWF0ZWQgd2l0aCB0aGUgNDA3IGVycm9yIGFuZCBrZWVwIHRoZSByZXZlbGFudCBpbmZv
IGluCisgICAgdGhlIHByb3h5X2F1dGggcmVxdWVzdCBhdHRyaWJ1dGUuLgorICAgICIiIgorCisg
ICAgcGFzc3dvcmRfcHJvbXB0ID0gJ1Byb3h5ICUodXNlcilzQCUoaG9zdClzJShyZWFsbSlzIHBh
c3N3b3JkJworICAgIGF1dGhfcmVxdWlyZWRfaGVhZGVyID0gJ3Byb3h5LWF1dGhlbnRpY2F0ZScK
KyAgICAjIEZJWE1FOiB0aGUgY29ycmVjdCBjYXBpdGFsaXphdGlvbiBpcyBQcm94eS1BdXRob3Jp
emF0aW9uLAorICAgICMgYnV0IHB5dGhvbi0yLjQgdXJsbGliMi5SZXF1ZXN0IGluc2lzdCBvbiB1
c2luZyBjYXBpdGFsaXplKCkKKyAgICAjIGluc3RlYWQgb2YgdGl0bGUoKS4KKyAgICBhdXRoX2hl
YWRlciA9ICdQcm94eS1hdXRob3JpemF0aW9uJworCisgICAgZGVmIGdldF9hdXRoKHNlbGYsIHJl
cXVlc3QpOgorICAgICAgICAiIiJHZXQgdGhlIGF1dGggcGFyYW1zIGZyb20gdGhlIHJlcXVlc3Qi
IiIKKyAgICAgICAgcmV0dXJuIHJlcXVlc3QucHJveHlfYXV0aAorCisgICAgZGVmIHNldF9hdXRo
KHNlbGYsIHJlcXVlc3QsIGF1dGgpOgorICAgICAgICAiIiJTZXQgdGhlIGF1dGggcGFyYW1zIGZv
ciB0aGUgcmVxdWVzdCIiIgorICAgICAgICByZXF1ZXN0LnByb3h5X2F1dGggPSBhdXRoCisKKyAg
ICBkZWYgaHR0cF9lcnJvcl80MDcoc2VsZiwgcmVxLCBmcCwgY29kZSwgbXNnLCBoZWFkZXJzKToK
KyAgICAgICAgcmV0dXJuIHNlbGYuYXV0aF9yZXF1aXJlZChyZXEsIGhlYWRlcnMpCisKKworY2xh
c3MgSFRUUEJhc2ljQXV0aEhhbmRsZXIoQmFzaWNBdXRoSGFuZGxlciwgSFRUUEF1dGhIYW5kbGVy
KToKKyAgICAiIiJDdXN0b20gaHR0cCBiYXNpYyBhdXRoZW50aWNhdGlvbiBoYW5kbGVyIiIiCisK
KworY2xhc3MgUHJveHlCYXNpY0F1dGhIYW5kbGVyKEJhc2ljQXV0aEhhbmRsZXIsIFByb3h5QXV0
aEhhbmRsZXIpOgorICAgICIiIkN1c3RvbSBwcm94eSBiYXNpYyBhdXRoZW50aWNhdGlvbiBoYW5k
bGVyIiIiCisKKworY2xhc3MgSFRUUERpZ2VzdEF1dGhIYW5kbGVyKERpZ2VzdEF1dGhIYW5kbGVy
LCBIVFRQQXV0aEhhbmRsZXIpOgorICAgICIiIkN1c3RvbSBodHRwIGJhc2ljIGF1dGhlbnRpY2F0
aW9uIGhhbmRsZXIiIiIKKworCitjbGFzcyBQcm94eURpZ2VzdEF1dGhIYW5kbGVyKERpZ2VzdEF1
dGhIYW5kbGVyLCBQcm94eUF1dGhIYW5kbGVyKToKKyAgICAiIiJDdXN0b20gcHJveHkgYmFzaWMg
YXV0aGVudGljYXRpb24gaGFuZGxlciIiIgogCiAKIGNsYXNzIEhUVFBFcnJvclByb2Nlc3Nvcih1
cmxsaWIyLkhUVFBFcnJvclByb2Nlc3Nvcik6CkBAIC03MzcsNyArMTEzMiw2IEBACiAgICAgV2Ug
ZG9uJ3QgcmVhbGx5IHByb2Nlc3MgdGhlIGVycm9ycywgcXVpdGUgdGhlIGNvbnRyYXJ5CiAgICAg
aW5zdGVhZCwgd2UgbGVhdmUgb3VyIFRyYW5zcG9ydCBoYW5kbGUgdGhlbS4KICAgICAiIiIKLSAg
ICBoYW5kbGVyX29yZGVyID0gMTAwMCAgIyBhZnRlciBhbGwgb3RoZXIgcHJvY2Vzc2luZwogCiAg
ICAgZGVmIGh0dHBfcmVzcG9uc2Uoc2VsZiwgcmVxdWVzdCwgcmVzcG9uc2UpOgogICAgICAgICBj
b2RlLCBtc2csIGhkcnMgPSByZXNwb25zZS5jb2RlLCByZXNwb25zZS5tc2csIHJlc3BvbnNlLmlu
Zm8oKQpAQCAtNzcwLDcgKzExNjQsNiBAQAogICAgICAgICAgICAgIyBvZiBhIGJldHRlciBtYWdp
YyB2YWx1ZS4KICAgICAgICAgICAgIHJhaXNlIGVycm9ycy5JbnZhbGlkUmFuZ2UocmVxLmdldF9m
dWxsX3VybCgpLDApCiAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAjIFRPRE86IEEgdGVzdCBp
cyBuZWVkZWQgdG8gZXhlcmNpc2UgdGhhdCBjb2RlIHBhdGgKICAgICAgICAgICAgIHJhaXNlIGVy
cm9ycy5JbnZhbGlkSHR0cFJlc3BvbnNlKHJlcS5nZXRfZnVsbF91cmwoKSwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdVbmFibGUgdG8gaGFuZGxlIGh0dHAg
Y29kZSAlZDogJXMnCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAlIChjb2RlLCBtc2cpKQpAQCAtNzg3LDE1ICsxMTgwLDEzIEBACiAgICAgICAgICAgICAgICAg
IHJlZGlyZWN0PUhUVFBSZWRpcmVjdEhhbmRsZXIsCiAgICAgICAgICAgICAgICAgIGVycm9yPUhU
VFBFcnJvclByb2Nlc3NvciwpOgogICAgICAgICBzZWxmLnBhc3N3b3JkX21hbmFnZXIgPSBQYXNz
d29yZE1hbmFnZXIoKQotICAgICAgICAjIFRPRE86IEltcGxlbWVudHMgdGhlIG5lY2Vzc2FyeSB3
cmFwcGVycyBmb3IgdGhlIGhhbmRsZXJzCi0gICAgICAgICMgY29tbWVudGVkIG91dCBiZWxvdwog
ICAgICAgICBzZWxmLl9vcGVuZXIgPSB1cmxsaWIyLmJ1aWxkX29wZW5lciggXAogICAgICAgICAg
ICAgY29ubmVjdGlvbiwgcmVkaXJlY3QsIGVycm9yLAotICAgICAgICAgICAgUHJveHlIYW5kbGVy
LAotICAgICAgICAgICAgdXJsbGliMi5IVFRQQmFzaWNBdXRoSGFuZGxlcihzZWxmLnBhc3N3b3Jk
X21hbmFnZXIpLAotICAgICAgICAgICAgI3VybGxpYjIuSFRUUERpZ2VzdEF1dGhIYW5kbGVyKHNl
bGYucGFzc3dvcmRfbWFuYWdlciksCi0gICAgICAgICAgICAjdXJsbGliMi5Qcm94eUJhc2ljQXV0
aEhhbmRsZXIsCi0gICAgICAgICAgICAjdXJsbGliMi5Qcm94eURpZ2VzdEF1dGhIYW5kbGVyLAor
ICAgICAgICAgICAgUHJveHlIYW5kbGVyKHNlbGYucGFzc3dvcmRfbWFuYWdlciksCisgICAgICAg
ICAgICBIVFRQQmFzaWNBdXRoSGFuZGxlcihzZWxmLnBhc3N3b3JkX21hbmFnZXIpLAorICAgICAg
ICAgICAgSFRUUERpZ2VzdEF1dGhIYW5kbGVyKHNlbGYucGFzc3dvcmRfbWFuYWdlciksCisgICAg
ICAgICAgICBQcm94eUJhc2ljQXV0aEhhbmRsZXIoc2VsZi5wYXNzd29yZF9tYW5hZ2VyKSwKKyAg
ICAgICAgICAgIFByb3h5RGlnZXN0QXV0aEhhbmRsZXIoc2VsZi5wYXNzd29yZF9tYW5hZ2VyKSwK
ICAgICAgICAgICAgIEhUVFBIYW5kbGVyLAogICAgICAgICAgICAgSFRUUFNIYW5kbGVyLAogICAg
ICAgICAgICAgSFRUUERlZmF1bHRFcnJvckhhbmRsZXIsCkBAIC04MDcsNCArMTE5OCwzIEBACiAg
ICAgICAgICAgICAjIGhhbmRsZXIgaXMgdXNlZCwgd2hlbiBhbmQgZm9yIHdoYXQuCiAgICAgICAg
ICAgICBpbXBvcnQgcHByaW50CiAgICAgICAgICAgICBwcHJpbnQucHByaW50KHNlbGYuX29wZW5l
ci5fX2RpY3RfXykKLQoK

=== modified file bzrlib/transport/http/wsgi.py // last-changed:andrew.bennetts
... @canonical.com-20070425045619-gfsty2ebwx3c5rka // encoding:base64
LS0tIGJ6cmxpYi90cmFuc3BvcnQvaHR0cC93c2dpLnB5CisrKyBienJsaWIvdHJhbnNwb3J0L2h0
dHAvd3NnaS5weQpAQCAtMjIsNyArMjIsOCBAQAogCiBmcm9tIGNTdHJpbmdJTyBpbXBvcnQgU3Ry
aW5nSU8KIAotZnJvbSBienJsaWIudHJhbnNwb3J0IGltcG9ydCBjaHJvb3QsIGdldF90cmFuc3Bv
cnQsIHNtYXJ0Citmcm9tIGJ6cmxpYi5zbWFydCBpbXBvcnQgcHJvdG9jb2wKK2Zyb20gYnpybGli
LnRyYW5zcG9ydCBpbXBvcnQgY2hyb290LCBnZXRfdHJhbnNwb3J0CiBmcm9tIGJ6cmxpYi51cmx1
dGlscyBpbXBvcnQgbG9jYWxfcGF0aF90b191cmwKICAgICAKIApAQCAtMTEzLDEwICsxMTQsMTAg
QEAKICAgICAgICAgcmVscGF0aCA9IGVudmlyb25bJ2J6cmxpYi5yZWxwYXRoJ10KICAgICAgICAg
dHJhbnNwb3J0ID0gc2VsZi5iYWNraW5nX3RyYW5zcG9ydC5jbG9uZShyZWxwYXRoKQogICAgICAg
ICBvdXRfYnVmZmVyID0gU3RyaW5nSU8oKQotICAgICAgICBzbWFydF9wcm90b2NvbF9yZXF1ZXN0
ID0gc2VsZi5tYWtlX3JlcXVlc3QodHJhbnNwb3J0LCBvdXRfYnVmZmVyLndyaXRlKQogICAgICAg
ICByZXF1ZXN0X2RhdGFfbGVuZ3RoID0gaW50KGVudmlyb25bJ0NPTlRFTlRfTEVOR1RIJ10pCiAg
ICAgICAgIHJlcXVlc3RfZGF0YV9ieXRlcyA9IGVudmlyb25bJ3dzZ2kuaW5wdXQnXS5yZWFkKHJl
cXVlc3RfZGF0YV9sZW5ndGgpCi0gICAgICAgIHNtYXJ0X3Byb3RvY29sX3JlcXVlc3QuYWNjZXB0
X2J5dGVzKHJlcXVlc3RfZGF0YV9ieXRlcykKKyAgICAgICAgc21hcnRfcHJvdG9jb2xfcmVxdWVz
dCA9IHNlbGYubWFrZV9yZXF1ZXN0KAorICAgICAgICAgICAgdHJhbnNwb3J0LCBvdXRfYnVmZmVy
LndyaXRlLCByZXF1ZXN0X2RhdGFfYnl0ZXMpCiAgICAgICAgIGlmIHNtYXJ0X3Byb3RvY29sX3Jl
cXVlc3QubmV4dF9yZWFkX3NpemUoKSAhPSAwOgogICAgICAgICAgICAgIyBUaGUgcmVxdWVzdCBh
cHBlYXJzIHRvIGJlIGluY29tcGxldGUsIG9yIHBlcmhhcHMgaXQncyBqdXN0IGEKICAgICAgICAg
ICAgICMgbmV3ZXIgdmVyc2lvbiB3ZSBkb24ndCB1bmRlcnN0YW5kLiAgUmVnYXJkbGVzcywgYWxs
IHdlIGNhbiBkbwpAQCAtMTMwLDUgKzEzMSwxNCBAQAogICAgICAgICBzdGFydF9yZXNwb25zZSgn
MjAwIE9LJywgaGVhZGVycykKICAgICAgICAgcmV0dXJuIFtyZXNwb25zZV9kYXRhXQogCi0gICAg
ZGVmIG1ha2VfcmVxdWVzdChzZWxmLCB0cmFuc3BvcnQsIHdyaXRlX2Z1bmMpOgotICAgICAgICBy
ZXR1cm4gcHJvdG9jb2wuU21hcnRTZXJ2ZXJSZXF1ZXN0UHJvdG9jb2xPbmUodHJhbnNwb3J0LCB3
cml0ZV9mdW5jKQorICAgIGRlZiBtYWtlX3JlcXVlc3Qoc2VsZiwgdHJhbnNwb3J0LCB3cml0ZV9m
dW5jLCByZXF1ZXN0X2J5dGVzKToKKyAgICAgICAgIyBYWFg6IFRoaXMgZHVwbGljYXRlcyB0aGUg
bG9naWMgaW4KKyAgICAgICAgIyBTbWFydFNlcnZlclN0cmVhbU1lZGl1bS5fYnVpbGRfcHJvdG9j
b2wuCisgICAgICAgIGlmIHJlcXVlc3RfYnl0ZXMuc3RhcnRzd2l0aChwcm90b2NvbC5SRVFVRVNU
X1ZFUlNJT05fVFdPKToKKyAgICAgICAgICAgIHByb3RvY29sX2NsYXNzID0gcHJvdG9jb2wuU21h
cnRTZXJ2ZXJSZXF1ZXN0UHJvdG9jb2xUd28KKyAgICAgICAgICAgIHJlcXVlc3RfYnl0ZXMgPSBy
ZXF1ZXN0X2J5dGVzW2xlbihwcm90b2NvbC5SRVFVRVNUX1ZFUlNJT05fVFdPKTpdCisgICAgICAg
IGVsc2U6CisgICAgICAgICAgICBwcm90b2NvbF9jbGFzcyA9IHByb3RvY29sLlNtYXJ0U2VydmVy
UmVxdWVzdFByb3RvY29sT25lCisgICAgICAgIHNlcnZlcl9wcm90b2NvbCA9IHByb3RvY29sX2Ns
YXNzKHRyYW5zcG9ydCwgd3JpdGVfZnVuYykKKyAgICAgICAgc2VydmVyX3Byb3RvY29sLmFjY2Vw
dF9ieXRlcyhyZXF1ZXN0X2J5dGVzKQorICAgICAgICByZXR1cm4gc2VydmVyX3Byb3RvY29sCgo=

=== modified file bzrlib/transport/local.py // last-changed:robertc@robertcolli
... ns.net-20070405093526-bfbpg82tlc7kldni // encoding:base64
LS0tIGJ6cmxpYi90cmFuc3BvcnQvbG9jYWwucHkKKysrIGJ6cmxpYi90cmFuc3BvcnQvbG9jYWwu
cHkKQEAgLTUxOSw2ICs1MTksMTIgQEAKICAgICB0aGlzIGp1c3QgZXhpc3RzIHRvIHRlbGwgdGhl
IHRlc3QgY29kZSBob3cgdG8gZ2V0IHRvIGl0LgogICAgICIiIgogCisgICAgZGVmIHNldFVwKHNl
bGYpOgorICAgICAgICAiIiJTZXR1cCB0aGUgc2VydmVyIHRvIHNlcnZpY2UgcmVxdWVzdHMuCisg
ICAgICAgIAorICAgICAgICA6cGFyYW0gZGVjb3JhdGVkX3RyYW5zcG9ydDogaWdub3JlZCBieSB0
aGlzIGltcGxlbWVudGF0aW9uLgorICAgICAgICAiIiIKKwogICAgIGRlZiBnZXRfdXJsKHNlbGYp
OgogICAgICAgICAiIiJTZWUgVHJhbnNwb3J0LlNlcnZlci5nZXRfdXJsLiIiIgogICAgICAgICBy
ZXR1cm4gdXJsdXRpbHMubG9jYWxfcGF0aF90b191cmwoJycpCgo=

=== modified file bzrlib/transport/memory.py // last-changed:mbp@sourcefrog.net
... -20070423050344-7r4w0fvmjbevcn0r // encoding:base64
LS0tIGJ6cmxpYi90cmFuc3BvcnQvbWVtb3J5LnB5CisrKyBienJsaWIvdHJhbnNwb3J0L21lbW9y
eS5weQpAQCAtMTI4LDcgKzEyOCwxNCBAQAogICAgICAgICAiIiJTZWUgVHJhbnNwb3J0LnB1dF9m
aWxlKCkuIiIiCiAgICAgICAgIF9hYnNwYXRoID0gc2VsZi5fYWJzcGF0aChyZWxwYXRoKQogICAg
ICAgICBzZWxmLl9jaGVja19wYXJlbnQoX2Fic3BhdGgpCi0gICAgICAgIHNlbGYuX2ZpbGVzW19h
YnNwYXRoXSA9IChmLnJlYWQoKSwgbW9kZSkKKyAgICAgICAgYnl0ZXMgPSBmLnJlYWQoKQorICAg
ICAgICBpZiB0eXBlKGJ5dGVzKSBpcyBub3Qgc3RyOgorICAgICAgICAgICAgIyBBbHRob3VnaCBu
b3Qgc3RyaWN0bHkgY29ycmVjdCwgd2UgcmFpc2UgVW5pY29kZUVuY29kZUVycm9yIHRvIGJlCisg
ICAgICAgICAgICAjIGNvbXBhdGlibGUgd2l0aCBvdGhlciB0cmFuc3BvcnRzLgorICAgICAgICAg
ICAgcmFpc2UgVW5pY29kZUVuY29kZUVycm9yKAorICAgICAgICAgICAgICAgICd1bmRlZmluZWQn
LCBieXRlcywgMCwgMSwKKyAgICAgICAgICAgICAgICAncHV0X2ZpbGUgbXVzdCBiZSBnaXZlbiBh
IGZpbGUgb2YgYnl0ZXMsIG5vdCB1bmljb2RlLicpCisgICAgICAgIHNlbGYuX2ZpbGVzW19hYnNw
YXRoXSA9IChieXRlcywgbW9kZSkKIAogICAgIGRlZiBta2RpcihzZWxmLCByZWxwYXRoLCBtb2Rl
PU5vbmUpOgogICAgICAgICAiIiJTZWUgVHJhbnNwb3J0Lm1rZGlyKCkuIiIiCgo=

=== modified file bzrlib/transport/readonly.py // last-changed:andrew.bennetts@
... canonical.com-20070313055201-ivxd3uhcvhqk995p // encoding:base64
LS0tIGJ6cmxpYi90cmFuc3BvcnQvcmVhZG9ubHkucHkKKysrIGJ6cmxpYi90cmFuc3BvcnQvcmVh
ZG9ubHkucHkKQEAgLTE2LDcgKzE2LDcgQEAKIAogIiIiSW1wbGVtZW50YXRpb24gb2YgVHJhbnNw
b3J0IHRoYXQgYWRhcHRzIGFub3RoZXIgdHJhbnNwb3J0IHRvIGJlIHJlYWRvbmx5LiIiIgogCi1m
cm9tIGJ6cmxpYi5lcnJvcnMgaW1wb3J0IFRyYW5zcG9ydE5vdFBvc3NpYmxlCitmcm9tIGJ6cmxp
Yi5lcnJvcnMgaW1wb3J0IFRyYW5zcG9ydE5vdFBvc3NpYmxlLCBOb1NtYXJ0U2VydmVyLCBOb1Nt
YXJ0TWVkaXVtCiBmcm9tIGJ6cmxpYi50cmFuc3BvcnQuZGVjb3JhdG9yIGltcG9ydCBUcmFuc3Bv
cnREZWNvcmF0b3IsIERlY29yYXRvclNlcnZlcgogCiAKQEAgLTcxLDYgKzcxLDEzIEBACiAgICAg
ICAgICIiIlNlZSBUcmFuc3BvcnQubG9ja193cml0ZS4iIiIKICAgICAgICAgcmFpc2UgVHJhbnNw
b3J0Tm90UG9zc2libGUoJ3JlYWRvbmx5IHRyYW5zcG9ydCcpCiAKKyAgICBkZWYgZ2V0X3NtYXJ0
X2NsaWVudChzZWxmKToKKyAgICAgICAgcmFpc2UgTm9TbWFydFNlcnZlcihzZWxmLmJhc2UpCisK
KyAgICBkZWYgZ2V0X3NtYXJ0X21lZGl1bShzZWxmKToKKyAgICAgICAgcmFpc2UgTm9TbWFydE1l
ZGl1bShzZWxmKQorCisKIAogY2xhc3MgUmVhZG9ubHlTZXJ2ZXIoRGVjb3JhdG9yU2VydmVyKToK
ICAgICAiIiJTZXJ2ZXIgZm9yIHRoZSBSZWFkb25seVRyYW5zcG9ydERlY29yYXRvciBmb3IgdGVz
dGluZyB3aXRoLiIiIgoK

=== modified file bzrlib/transport/sftp.py // last-changed:andrew.bennetts@cano
... nical.com-20070416042411-6itr5e3kuqwpm65y // encoding:base64
LS0tIGJ6cmxpYi90cmFuc3BvcnQvc2Z0cC5weQorKysgYnpybGliL3RyYW5zcG9ydC9zZnRwLnB5
CkBAIC01MCwxMyArNTAsMTMgQEAKIGZyb20gYnpybGliLm9zdXRpbHMgaW1wb3J0IHBhdGhqb2lu
LCBmYW5jeV9yZW5hbWUsIGdldGN3ZAogZnJvbSBienJsaWIudHJhY2UgaW1wb3J0IG11dHRlciwg
d2FybmluZwogZnJvbSBienJsaWIudHJhbnNwb3J0IGltcG9ydCAoCisgICAgbG9jYWwsCiAgICAg
cmVnaXN0ZXJfdXJscGFyc2VfbmV0bG9jX3Byb3RvY29sLAogICAgIFNlcnZlciwKICAgICBzcGxp
dF91cmwsCiAgICAgc3NoLAogICAgIFRyYW5zcG9ydCwKICAgICApCi1mcm9tIGJ6cmxpYi50cmFu
c3BvcnQubG9jYWwgaW1wb3J0IExvY2FsVVJMU2VydmVyCiAKIHRyeToKICAgICBpbXBvcnQgcGFy
YW1pa28KQEAgLTEwNjksMTAgKzEwNjksMTMgQEAKICAgICAgICAgc3NoX3NlcnZlci5zdGFydF9z
ZXJ2ZXIoZXZlbnQsIHNlcnZlcikKICAgICAgICAgZXZlbnQud2FpdCg1LjApCiAgICAgCi0gICAg
ZGVmIHNldFVwKHNlbGYsIHZmc19zZXJ2ZXI9Tm9uZSk6Ci0gICAgICAgICMgWFhYOiBUT0RPOiBt
YWtlIHNmdHBzZXJ2ZXIgYmFjayBvbnRvIHZmc19zZXJ2ZXIgcmF0aGVyIHRoYW4gbG9jYWwgZGlz
ay4KLSAgICAgICAgYXNzZXJ0IHZmc19zZXJ2ZXIgaXMgTm9uZSBvciBpc2luc3RhbmNlKHZmc19z
ZXJ2ZXIsIExvY2FsVVJMU2VydmVyKSwgXAotICAgICAgICAgICAgIlNGVFBTZXJ2ZXIgY3VycmVu
dGx5IGFzc3VtZXMgbG9jYWwgdHJhbnNwb3J0LCBnb3QgJXMiICUgdmZzX3NlcnZlcgorICAgIGRl
ZiBzZXRVcChzZWxmLCBiYWNraW5nX3NlcnZlcj1Ob25lKToKKyAgICAgICAgIyBYWFg6IFRPRE86
IG1ha2Ugc2Z0cHNlcnZlciBiYWNrIG9udG8gYmFja2luZ19zZXJ2ZXIgcmF0aGVyIHRoYW4gbG9j
YWwKKyAgICAgICAgIyBkaXNrLgorICAgICAgICBhc3NlcnQgKGJhY2tpbmdfc2VydmVyIGlzIE5v
bmUgb3IKKyAgICAgICAgICAgICAgICBpc2luc3RhbmNlKGJhY2tpbmdfc2VydmVyLCBsb2NhbC5M
b2NhbFVSTFNlcnZlcikpLCAoCisgICAgICAgICAgICAiYmFja2luZ19zZXJ2ZXIgc2hvdWxkIG5v
dCBiZSAlciwgYmVjYXVzZSB0aGlzIGNhbiBvbmx5IHNlcnZlIHRoZSAiCisgICAgICAgICAgICAi
bG9jYWwgY3VycmVudCB3b3JraW5nIGRpcmVjdG9yeS4iICUgKGJhY2tpbmdfc2VydmVyLCkpCiAg
ICAgICAgIHNlbGYuX29yaWdpbmFsX3ZlbmRvciA9IHNzaC5fc3NoX3ZlbmRvcl9tYW5hZ2VyLl9j
YWNoZWRfc3NoX3ZlbmRvcgogICAgICAgICBzc2guX3NzaF92ZW5kb3JfbWFuYWdlci5fY2FjaGVk
X3NzaF92ZW5kb3IgPSBzZWxmLl92ZW5kb3IKICAgICAgICAgaWYgc3lzLnBsYXRmb3JtID09ICd3
aW4zMic6CkBAIC0xMTUyLDcgKzExNTUsMTMgQEAKICAgICAgICAgICAgIGVsc2U6CiAgICAgICAg
ICAgICAgICAgcmFpc2UKICAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiwgZToKLSAgICAgICAgICAg
IGltcG9ydCBzeXM7IHN5cy5zdGRlcnIud3JpdGUoJ1xuRVhDRVBUSU9OICVyXG5cbicgJSBlLl9f
Y2xhc3NfXykKKyAgICAgICAgICAgICMgVGhpcyB0eXBpY2FsbHkgc2VlbXMgdG8gaGFwcGVuIGR1
cmluZyBpbnRlcnByZXRlciBzaHV0ZG93biwgc28KKyAgICAgICAgICAgICMgbW9zdCBvZiB0aGUg
dXNlZnVsIHdheXMgdG8gcmVwb3J0IHRoaXMgZXJyb3IgYXJlIHdvbid0IHdvcmsuCisgICAgICAg
ICAgICAjIFdyaXRpbmcgdGhlIGV4Y2VwdGlvbiB0eXBlLCBhbmQgdGhlbiB0aGUgdGV4dCBvZiB0
aGUgZXhjZXB0aW9uLAorICAgICAgICAgICAgIyBzZWVtcyB0byBiZSB0aGUgYmVzdCB3ZSBjYW4g
ZG8uCisgICAgICAgICAgICBpbXBvcnQgc3lzCisgICAgICAgICAgICBzeXMuc3RkZXJyLndyaXRl
KCdcbkVYQ0VQVElPTiAlcjogJyAlIChlLl9fY2xhc3NfXywpKQorICAgICAgICAgICAgc3lzLnN0
ZGVyci53cml0ZSgnJXNcblxuJyAlIChlLCkpCiAgICAgICAgIHNlcnZlci5maW5pc2hfc3Vic3lz
dGVtKCkKIAogCkBAIC0xMTc3LDExICsxMTg2LDE0IEBACiAKIAogY2xhc3MgU0ZUUFNpYmxpbmdB
YnNvbHV0ZVNlcnZlcihTRlRQQWJzb2x1dGVTZXJ2ZXIpOgotICAgICIiIkEgdGVzdCBzZXJ2ZXJl
IGZvciBzZnRwIHRyYW5zcG9ydHMsIHVzaW5nIGFic29sdXRlIHVybHMgdG8gbm9uLWhvbWUuIiIi
Ci0KLSAgICBkZWYgc2V0VXAoc2VsZik6CisgICAgIiIiQSB0ZXN0IHNlcnZlciBmb3Igc2Z0cCB0
cmFuc3BvcnRzIHdoZXJlIG9ubHkgYWJzb2x1dGUgcGF0aHMgd2lsbCB3b3JrLgorCisgICAgSXQg
ZG9lcyB0aGlzIGJ5IHNlcnZpbmcgZnJvbSBhIGRlZXBseS1uZXN0ZWQgZGlyZWN0b3J5IHRoYXQg
ZG9lc24ndCBleGlzdC4KKyAgICAiIiIKKworICAgIGRlZiBzZXRVcChzZWxmLCBiYWNraW5nX3Nl
cnZlcj1Ob25lKToKICAgICAgICAgc2VsZi5fc2VydmVyX2hvbWVkaXIgPSAnL2Rldi9ub29uZS9y
dW5zL3Rlc3RzL2hlcmUnCi0gICAgICAgIHN1cGVyKFNGVFBTaWJsaW5nQWJzb2x1dGVTZXJ2ZXIs
IHNlbGYpLnNldFVwKCkKKyAgICAgICAgc3VwZXIoU0ZUUFNpYmxpbmdBYnNvbHV0ZVNlcnZlciwg
c2VsZikuc2V0VXAoYmFja2luZ19zZXJ2ZXIpCiAKIAogZGVmIF9zZnRwX2Nvbm5lY3QoaG9zdCwg
cG9ydCwgdXNlcm5hbWUsIHBhc3N3b3JkKToKCg==

=== modified file bzrlib/tsort.py // last-changed:john@arbash-meinel.com-200704
... 19000301-ud6ambkulyaulnfr // encoding:base64
LS0tIGJ6cmxpYi90c29ydC5weQorKysgYnpybGliL3Rzb3J0LnB5CkBAIC0xOCw3ICsxOCw3IEBA
CiAiIiJUb3BvbG9naWNhbCBzb3J0aW5nIHJvdXRpbmVzLiIiIgogCiAKLWltcG9ydCBienJsaWIu
ZXJyb3JzIGFzIGVycm9ycworZnJvbSBienJsaWIgaW1wb3J0IGVycm9ycwogCiAKIF9fYWxsX18g
PSBbInRvcG9fc29ydCIsICJUb3BvU29ydGVyIiwgIm1lcmdlX3NvcnQiLCAiTWVyZ2VTb3J0ZXIi
XQpAQCAtMTg2LDYgKzE4NiwyMiBAQAogCiBjbGFzcyBNZXJnZVNvcnRlcihvYmplY3QpOgogCisg
ICAgX19zbG90c19fID0gWydfbm9kZV9uYW1lX3N0YWNrJywKKyAgICAgICAgICAgICAgICAgJ19u
b2RlX21lcmdlX2RlcHRoX3N0YWNrJywKKyAgICAgICAgICAgICAgICAgJ19wZW5kaW5nX3BhcmVu
dHNfc3RhY2snLAorICAgICAgICAgICAgICAgICAnX2Fzc2lnbmVkX3NlcXVlbmNlX3N0YWNrJywK
KyAgICAgICAgICAgICAgICAgJ19sZWZ0X3N1YnRyZWVfcHVzaGVkX3N0YWNrJywKKyAgICAgICAg
ICAgICAgICAgJ19nZW5lcmF0ZV9yZXZubycsCisgICAgICAgICAgICAgICAgICdfZ3JhcGgnLAor
ICAgICAgICAgICAgICAgICAnX21haW5saW5lX3JldmlzaW9ucycsCisgICAgICAgICAgICAgICAg
ICdfc3RvcF9yZXZpc2lvbicsCisgICAgICAgICAgICAgICAgICdfb3JpZ2luYWxfZ3JhcGgnLAor
ICAgICAgICAgICAgICAgICAnX3Jldm5vcycsCisgICAgICAgICAgICAgICAgICdfcm9vdF9zZXF1
ZW5jZScsCisgICAgICAgICAgICAgICAgICdfY29tcGxldGVkX25vZGVfbmFtZXMnLAorICAgICAg
ICAgICAgICAgICAnX3NjaGVkdWxlZF9ub2RlcycsCisgICAgICAgICAgICAgICAgXQorCiAgICAg
ZGVmIF9faW5pdF9fKHNlbGYsIGdyYXBoLCBicmFuY2hfdGlwLCBtYWlubGluZV9yZXZpc2lvbnM9
Tm9uZSwKICAgICAgICAgZ2VuZXJhdGVfcmV2bm89RmFsc2UpOgogICAgICAgICAiIiJNZXJnZS1h
d2FyZSB0b3BvbG9naWNhbCBzb3J0aW5nIG9mIGEgZ3JhcGguCkBAIC00MDQsMjAgKzQyMCwxMTMg
QEAKICAgICAgICAgQWZ0ZXIgZmluaXNoaW5nIGl0ZXJhdGlvbiB0aGUgc29ydGVyIGlzIGVtcHR5
IGFuZCB5b3UgY2Fubm90IGNvbnRpbnVlCiAgICAgICAgIGl0ZXJhdGlvbi4KICAgICAgICAgIiIi
Ci0gICAgICAgIHdoaWxlIHNlbGYuX25vZGVfbmFtZV9zdGFjazoKKyAgICAgICAgIyBUaGVzZSBh
cmUgc2FmZSB0byBvZmZsb2FkIHRvIGxvY2FsIHZhcmlhYmxlcywgYmVjYXVzZSB0aGV5IGFyZSB1
c2VkCisgICAgICAgICMgYXMgYSBzdGFjayBhbmQgbW9kaWZpZWQgaW4gcGxhY2UsIG5ldmVyIGFz
c2lnbmVkIHRvLgorICAgICAgICBub2RlX25hbWVfc3RhY2sgPSBzZWxmLl9ub2RlX25hbWVfc3Rh
Y2sKKyAgICAgICAgbm9kZV9tZXJnZV9kZXB0aF9zdGFjayA9IHNlbGYuX25vZGVfbWVyZ2VfZGVw
dGhfc3RhY2sKKyAgICAgICAgcGVuZGluZ19wYXJlbnRzX3N0YWNrID0gc2VsZi5fcGVuZGluZ19w
YXJlbnRzX3N0YWNrCisgICAgICAgIGxlZnRfc3VidHJlZV9wdXNoZWRfc3RhY2sgPSBzZWxmLl9s
ZWZ0X3N1YnRyZWVfcHVzaGVkX3N0YWNrCisgICAgICAgIGNvbXBsZXRlZF9ub2RlX25hbWVzID0g
c2VsZi5fY29tcGxldGVkX25vZGVfbmFtZXMKKyAgICAgICAgc2NoZWR1bGVkX25vZGVzID0gc2Vs
Zi5fc2NoZWR1bGVkX25vZGVzCisKKyAgICAgICAgZ3JhcGhfcG9wID0gc2VsZi5fZ3JhcGgucG9w
CisKKyAgICAgICAgZGVmIHB1c2hfbm9kZShub2RlX25hbWUsIG1lcmdlX2RlcHRoLCBwYXJlbnRz
LAorICAgICAgICAgICAgICAgICAgICAgIG5vZGVfbmFtZV9zdGFja19hcHBlbmQ9bm9kZV9uYW1l
X3N0YWNrLmFwcGVuZCwKKyAgICAgICAgICAgICAgICAgICAgICBub2RlX21lcmdlX2RlcHRoX3N0
YWNrX2FwcGVuZD1ub2RlX21lcmdlX2RlcHRoX3N0YWNrLmFwcGVuZCwKKyAgICAgICAgICAgICAg
ICAgICAgICBsZWZ0X3N1YnRyZWVfcHVzaGVkX3N0YWNrX2FwcGVuZD1sZWZ0X3N1YnRyZWVfcHVz
aGVkX3N0YWNrLmFwcGVuZCwKKyAgICAgICAgICAgICAgICAgICAgICBwZW5kaW5nX3BhcmVudHNf
c3RhY2tfYXBwZW5kPXBlbmRpbmdfcGFyZW50c19zdGFjay5hcHBlbmQsCisgICAgICAgICAgICAg
ICAgICAgICAgYXNzaWduZWRfc2VxdWVuY2Vfc3RhY2tfYXBwZW5kPXNlbGYuX2Fzc2lnbmVkX3Nl
cXVlbmNlX3N0YWNrLmFwcGVuZCwKKyAgICAgICAgICAgICAgICAgICAgICBvcmlnaW5hbF9ncmFw
aD1zZWxmLl9vcmlnaW5hbF9ncmFwaCwKKyAgICAgICAgICAgICAgICAgICAgICByZXZub3M9c2Vs
Zi5fcmV2bm9zLAorICAgICAgICAgICAgICAgICAgICAgICk6CisgICAgICAgICAgICAiIiJBZGQg
bm9kZV9uYW1lIHRvIHRoZSBwZW5kaW5nIG5vZGUgc3RhY2suCisKKyAgICAgICAgICAgIE5hbWVz
IGluIHRoaXMgc3RhY2sgd2lsbCBnZXQgZW1pdHRlZCBpbnRvIHRoZSBvdXRwdXQgYXMgdGhleSBh
cmUgcG9wcGVkCisgICAgICAgICAgICBvZmYgdGhlIHN0YWNrLgorCisgICAgICAgICAgICBUaGlz
IGlubGluZXMgYSBsb3Qgb2Ygc2VsZi5fdmFyaWFibGUuYXBwZW5kIGZ1bmN0aW9ucyBhcyBsb2Nh
bAorICAgICAgICAgICAgdmFyaWFibGVzLgorICAgICAgICAgICAgIiIiCisgICAgICAgICAgICBu
b2RlX25hbWVfc3RhY2tfYXBwZW5kKG5vZGVfbmFtZSkKKyAgICAgICAgICAgIG5vZGVfbWVyZ2Vf
ZGVwdGhfc3RhY2tfYXBwZW5kKG1lcmdlX2RlcHRoKQorICAgICAgICAgICAgbGVmdF9zdWJ0cmVl
X3B1c2hlZF9zdGFja19hcHBlbmQoRmFsc2UpCisgICAgICAgICAgICBwZW5kaW5nX3BhcmVudHNf
c3RhY2tfYXBwZW5kKGxpc3QocGFyZW50cykpCisgICAgICAgICAgICAjIGFzIHdlIHB1c2ggaXQs
IGFzc2lnbiBpdCBhIHNlcXVlbmNlIG51bWJlciBhZ2FpbnN0IGl0cyBwYXJlbnQ6CisgICAgICAg
ICAgICBwYXJlbnRzID0gb3JpZ2luYWxfZ3JhcGhbbm9kZV9uYW1lXQorICAgICAgICAgICAgaWYg
cGFyZW50czoKKyAgICAgICAgICAgICAgICAjIG5vZGUgaGFzIHBhcmVudHMsIGFzc2lnbiBmcm9t
IHRoZSBsZWZ0IG1vc3QgcGFyZW50LgorICAgICAgICAgICAgICAgIHBhcmVudF9yZXZubyA9IHJl
dm5vc1twYXJlbnRzWzBdXQorICAgICAgICAgICAgICAgIHNlcXVlbmNlID0gcGFyZW50X3Jldm5v
WzFdCisgICAgICAgICAgICAgICAgcGFyZW50X3Jldm5vWzFdICs9IDEKKyAgICAgICAgICAgIGVs
c2U6CisgICAgICAgICAgICAgICAgIyBubyBwYXJlbnRzLCB1c2UgdGhlIHJvb3Qgc2VxdWVuY2UK
KyAgICAgICAgICAgICAgICBzZXF1ZW5jZSA9IHNlbGYuX3Jvb3Rfc2VxdWVuY2UKKyAgICAgICAg
ICAgICAgICBzZWxmLl9yb290X3NlcXVlbmNlICs9MQorICAgICAgICAgICAgYXNzaWduZWRfc2Vx
dWVuY2Vfc3RhY2tfYXBwZW5kKHNlcXVlbmNlKQorCisgICAgICAgIGRlZiBwb3Bfbm9kZShub2Rl
X25hbWVfc3RhY2tfcG9wPW5vZGVfbmFtZV9zdGFjay5wb3AsCisgICAgICAgICAgICAgICAgICAg
ICBub2RlX21lcmdlX2RlcHRoX3N0YWNrX3BvcD1ub2RlX21lcmdlX2RlcHRoX3N0YWNrLnBvcCwK
KyAgICAgICAgICAgICAgICAgICAgIGFzc2lnbmVkX3NlcXVlbmNlX3N0YWNrX3BvcD1zZWxmLl9h
c3NpZ25lZF9zZXF1ZW5jZV9zdGFjay5wb3AsCisgICAgICAgICAgICAgICAgICAgICBsZWZ0X3N1
YnRyZWVfcHVzaGVkX3N0YWNrX3BvcD1sZWZ0X3N1YnRyZWVfcHVzaGVkX3N0YWNrLnBvcCwKKyAg
ICAgICAgICAgICAgICAgICAgIHBlbmRpbmdfcGFyZW50c19zdGFja19wb3A9cGVuZGluZ19wYXJl
bnRzX3N0YWNrLnBvcCwKKyAgICAgICAgICAgICAgICAgICAgIG9yaWdpbmFsX2dyYXBoPXNlbGYu
X29yaWdpbmFsX2dyYXBoLAorICAgICAgICAgICAgICAgICAgICAgcmV2bm9zPXNlbGYuX3Jldm5v
cywKKyAgICAgICAgICAgICAgICAgICAgIGNvbXBsZXRlZF9ub2RlX25hbWVzX2FkZD1zZWxmLl9j
b21wbGV0ZWRfbm9kZV9uYW1lcy5hZGQsCisgICAgICAgICAgICAgICAgICAgICBzY2hlZHVsZWRf
bm9kZXNfYXBwZW5kPXNjaGVkdWxlZF9ub2Rlcy5hcHBlbmQsCisgICAgICAgICAgICAgICAgICAg
ICk6CisgICAgICAgICAgICAiIiJQb3AgdGhlIHRvcCBub2RlIG9mZiB0aGUgc3RhY2sKKworICAg
ICAgICAgICAgVGhlIG5vZGUgaXMgYXBwZW5kZWQgdG8gdGhlIHNvcnRlZCBvdXRwdXQuCisgICAg
ICAgICAgICAiIiIKKyAgICAgICAgICAgICMgd2UgYXJlIHJldHVybmluZyBmcm9tIHRoZSBmbGF0
dGVuZWQgY2FsbCBmcmFtZToKKyAgICAgICAgICAgICMgcG9wIG9mZiB0aGUgbG9jYWwgdmFyaWFi
bGVzCisgICAgICAgICAgICBub2RlX25hbWUgPSBub2RlX25hbWVfc3RhY2tfcG9wKCkKKyAgICAg
ICAgICAgIG1lcmdlX2RlcHRoID0gbm9kZV9tZXJnZV9kZXB0aF9zdGFja19wb3AoKQorICAgICAg
ICAgICAgc2VxdWVuY2UgPSBhc3NpZ25lZF9zZXF1ZW5jZV9zdGFja19wb3AoKQorICAgICAgICAg
ICAgIyByZW1vdmUgdGhpcyBub2RlIGZyb20gdGhlIHBlbmRpbmcgbGlzdHM6CisgICAgICAgICAg
ICBsZWZ0X3N1YnRyZWVfcHVzaGVkX3N0YWNrX3BvcCgpCisgICAgICAgICAgICBwZW5kaW5nX3Bh
cmVudHNfc3RhY2tfcG9wKCkKKworICAgICAgICAgICAgcGFyZW50cyA9IG9yaWdpbmFsX2dyYXBo
W25vZGVfbmFtZV0KKyAgICAgICAgICAgIGlmIHBhcmVudHM6CisgICAgICAgICAgICAgICAgIyBu
b2RlIGhhcyBwYXJlbnRzLCBhc3NpZ24gZnJvbSB0aGUgbGVmdCBtb3N0IHBhcmVudC4KKyAgICAg
ICAgICAgICAgICBwYXJlbnRfcmV2bm8gPSByZXZub3NbcGFyZW50c1swXV0KKyAgICAgICAgICAg
ICAgICBpZiBzZXF1ZW5jZToKKyAgICAgICAgICAgICAgICAgICAgIyBub3QgdGhlIGZpcnN0IGNo
aWxkLCBtYWtlIGEgbmV3IGJyYW5jaAorICAgICAgICAgICAgICAgICAgICByZXZubyA9IHBhcmVu
dF9yZXZub1swXSArIChzZXF1ZW5jZSwgMSkKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAg
ICAgICAgICAgICAgICAjIGluY3JlbWVudCB0aGUgc2VxdWVuY2UgbnVtYmVyIHdpdGhpbiB0aGUg
YnJhbmNoCisgICAgICAgICAgICAgICAgICAgIHJldm5vID0gcGFyZW50X3Jldm5vWzBdWzotMV0g
KyAocGFyZW50X3Jldm5vWzBdWy0xXSArIDEsKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAg
ICAgICAgICAjIG5vIHBhcmVudHMsIHVzZSB0aGUgcm9vdCBzZXF1ZW5jZQorICAgICAgICAgICAg
ICAgIGlmIHNlcXVlbmNlOgorICAgICAgICAgICAgICAgICAgICAjIG1ha2UgYSBwYXJhbGxlbCBp
bXBvcnQgcmV2aXNpb24gbnVtYmVyCisgICAgICAgICAgICAgICAgICAgIHJldm5vID0gKDAsIHNl
cXVlbmNlLCAxKQorICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIHJl
dm5vID0gKDEsKQorCisgICAgICAgICAgICAjIHN0b3JlIHRoZSByZXZubyBmb3IgdGhpcyBub2Rl
IGZvciBmdXR1cmUgcmVmZXJlbmNlCisgICAgICAgICAgICByZXZub3Nbbm9kZV9uYW1lXVswXSA9
IHJldm5vCisgICAgICAgICAgICBjb21wbGV0ZWRfbm9kZV9uYW1lc19hZGQobm9kZV9uYW1lKQor
ICAgICAgICAgICAgc2NoZWR1bGVkX25vZGVzX2FwcGVuZCgobm9kZV9uYW1lLCBtZXJnZV9kZXB0
aCwgcmV2bm8pKQorICAgICAgICAgICAgcmV0dXJuIG5vZGVfbmFtZQorCisKKyAgICAgICAgd2hp
bGUgbm9kZV9uYW1lX3N0YWNrOgogICAgICAgICAgICAgIyBsb29wIHVudGlsIHRoaXMgY2FsbCBj
b21wbGV0ZXMuCi0gICAgICAgICAgICBwYXJlbnRzX3RvX3Zpc2l0ID0gc2VsZi5fcGVuZGluZ19w
YXJlbnRzX3N0YWNrWy0xXQorICAgICAgICAgICAgcGFyZW50c190b192aXNpdCA9IHBlbmRpbmdf
cGFyZW50c19zdGFja1stMV0KICAgICAgICAgICAgICMgaWYgYWxsIHBhcmVudHMgYXJlIGRvbmUs
IHRoZSByZXZpc2lvbiBpcyBkb25lCiAgICAgICAgICAgICBpZiBub3QgcGFyZW50c190b192aXNp
dDoKICAgICAgICAgICAgICAgICAjIGFwcGVuZCB0aGUgcmV2aXNpb24gdG8gdGhlIHRvcG8gc29y
dGVkIHNjaGVkdWxlZCBsaXN0OgogICAgICAgICAgICAgICAgICMgYWxsIHRoZSBub2RlcyBwYXJl
bnRzIGhhdmUgYmVlbiBzY2hlZHVsZWQgYWRkZWQsIG5vdwogICAgICAgICAgICAgICAgICMgd2Ug
Y2FuIGFkZCBpdCB0byB0aGUgb3V0cHV0LgotICAgICAgICAgICAgICAgIHNlbGYuX3BvcF9ub2Rl
KCkKKyAgICAgICAgICAgICAgICBwb3Bfbm9kZSgpCiAgICAgICAgICAgICBlbHNlOgotICAgICAg
ICAgICAgICAgIHdoaWxlIHNlbGYuX3BlbmRpbmdfcGFyZW50c19zdGFja1stMV06Ci0gICAgICAg
ICAgICAgICAgICAgIGlmIG5vdCBzZWxmLl9sZWZ0X3N1YnRyZWVfcHVzaGVkX3N0YWNrWy0xXToK
KyAgICAgICAgICAgICAgICB3aGlsZSBwZW5kaW5nX3BhcmVudHNfc3RhY2tbLTFdOgorICAgICAg
ICAgICAgICAgICAgICBpZiBub3QgbGVmdF9zdWJ0cmVlX3B1c2hlZF9zdGFja1stMV06CiAgICAg
ICAgICAgICAgICAgICAgICAgICAjIHJlY3Vyc2UgZGVwdGggZmlyc3QgaW50byB0aGUgcHJpbWFy
eSBwYXJlbnQKLSAgICAgICAgICAgICAgICAgICAgICAgIG5leHRfbm9kZV9uYW1lID0gc2VsZi5f
cGVuZGluZ19wYXJlbnRzX3N0YWNrWy0xXS5wb3AoMCkKKyAgICAgICAgICAgICAgICAgICAgICAg
IG5leHRfbm9kZV9uYW1lID0gcGVuZGluZ19wYXJlbnRzX3N0YWNrWy0xXS5wb3AoMCkKICAgICAg
ICAgICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAgICAgICAgICMgcGxhY2UgYW55
IG1lcmdlcyBpbiByaWdodC10by1sZWZ0IG9yZGVyIGZvciBzY2hlZHVsaW5nCiAgICAgICAgICAg
ICAgICAgICAgICAgICAjIHdoaWNoIGdpdmVzIHVzIGxlZnQtdG8tcmlnaHQgb3JkZXIgYWZ0ZXIg
d2UgcmV2ZXJzZQpAQCAtNDI2LDU4ICs1MzUsNjMgQEAKICAgICAgICAgICAgICAgICAgICAgICAg
ICMgc3VidHJlZSByYXRoZXIgdGhhbiB0aGUgbGVmdCBtb3N0LCB3aGljaCB3aWxsIAogICAgICAg
ICAgICAgICAgICAgICAgICAgIyBkaXNwbGF5IG5pY2VseSAoeW91IGdldCBzbWFsbGVyIHRyZWVz
IGF0IHRoZSB0b3AKICAgICAgICAgICAgICAgICAgICAgICAgICMgb2YgdGhlIGNvbWJpbmVkIG1l
cmdlKS4KLSAgICAgICAgICAgICAgICAgICAgICAgIG5leHRfbm9kZV9uYW1lID0gc2VsZi5fcGVu
ZGluZ19wYXJlbnRzX3N0YWNrWy0xXS5wb3AoKQotICAgICAgICAgICAgICAgICAgICBpZiBuZXh0
X25vZGVfbmFtZSBpbiBzZWxmLl9jb21wbGV0ZWRfbm9kZV9uYW1lczoKKyAgICAgICAgICAgICAg
ICAgICAgICAgIG5leHRfbm9kZV9uYW1lID0gcGVuZGluZ19wYXJlbnRzX3N0YWNrWy0xXS5wb3Ao
KQorICAgICAgICAgICAgICAgICAgICBpZiBuZXh0X25vZGVfbmFtZSBpbiBjb21wbGV0ZWRfbm9k
ZV9uYW1lczoKICAgICAgICAgICAgICAgICAgICAgICAgICMgdGhpcyBwYXJlbnQgd2FzIGNvbXBs
ZXRlZCBieSBhIGNoaWxkIG9uIHRoZQogICAgICAgICAgICAgICAgICAgICAgICAgIyBjYWxsIHN0
YWNrLiBza2lwIGl0LgogICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWUKICAgICAgICAg
ICAgICAgICAgICAgIyBvdGhlcndpc2UgdHJhbnNmZXIgaXQgZnJvbSB0aGUgc291cmNlIGdyYXBo
IGludG8gdGhlCiAgICAgICAgICAgICAgICAgICAgICMgdG9wIG9mIHRoZSBjdXJyZW50IGRlcHRo
IGZpcnN0IHNlYXJjaCBzdGFjay4KICAgICAgICAgICAgICAgICAgICAgdHJ5OgotICAgICAgICAg
ICAgICAgICAgICAgICAgcGFyZW50cyA9IHNlbGYuX2dyYXBoLnBvcChuZXh0X25vZGVfbmFtZSkK
KyAgICAgICAgICAgICAgICAgICAgICAgIHBhcmVudHMgPSBncmFwaF9wb3AobmV4dF9ub2RlX25h
bWUpCiAgICAgICAgICAgICAgICAgICAgIGV4Y2VwdCBLZXlFcnJvcjoKICAgICAgICAgICAgICAg
ICAgICAgICAgICMgaWYgdGhlIG5leHQgbm9kZSBpcyBub3QgaW4gdGhlIHNvdXJjZSBncmFwaCBp
dCBoYXMKICAgICAgICAgICAgICAgICAgICAgICAgICMgYWxyZWFkeSBiZWVuIHBvcHBlZCBmcm9t
IGl0IGFuZCBwbGFjZWQgaW50byB0aGUKICAgICAgICAgICAgICAgICAgICAgICAgICMgY3VycmVu
dCBzZWFyY2ggc3RhY2sgKGJ1dCBub3QgY29tcGxldGVkIG9yIHdlIHdvdWxkCiAgICAgICAgICAg
ICAgICAgICAgICAgICAjIGhhdmUgaGl0IHRoZSBjb250aW51ZSA0IGxpbmVzIHVwLgogICAgICAg
ICAgICAgICAgICAgICAgICAgIyB0aGlzIGluZGljYXRlcyBhIGN5Y2xlLgotICAgICAgICAgICAg
ICAgICAgICAgICAgcmFpc2UgZXJyb3JzLkdyYXBoQ3ljbGVFcnJvcihzZWxmLl9ub2RlX25hbWVf
c3RhY2spCisgICAgICAgICAgICAgICAgICAgICAgICByYWlzZSBlcnJvcnMuR3JhcGhDeWNsZUVy
cm9yKG5vZGVfbmFtZV9zdGFjaykKICAgICAgICAgICAgICAgICAgICAgbmV4dF9tZXJnZV9kZXB0
aCA9IDAKLSAgICAgICAgICAgICAgICAgICAgaWYgc2VsZi5fbGVmdF9zdWJ0cmVlX3B1c2hlZF9z
dGFja1stMV06CisgICAgICAgICAgICAgICAgICAgIGlmIGxlZnRfc3VidHJlZV9wdXNoZWRfc3Rh
Y2tbLTFdOgogICAgICAgICAgICAgICAgICAgICAgICAgIyBhIG5ldyBjaGlsZCBicmFuY2ggZnJv
bSBuYW1lX3N0YWNrWy0xXQogICAgICAgICAgICAgICAgICAgICAgICAgbmV4dF9tZXJnZV9kZXB0
aCA9IDEKICAgICAgICAgICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAgICAgICAg
IG5leHRfbWVyZ2VfZGVwdGggPSAwCi0gICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9sZWZ0
X3N1YnRyZWVfcHVzaGVkX3N0YWNrWy0xXSA9IFRydWUKKyAgICAgICAgICAgICAgICAgICAgICAg
IGxlZnRfc3VidHJlZV9wdXNoZWRfc3RhY2tbLTFdID0gVHJ1ZQogICAgICAgICAgICAgICAgICAg
ICBuZXh0X21lcmdlX2RlcHRoID0gKAotICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fbm9k
ZV9tZXJnZV9kZXB0aF9zdGFja1stMV0gKyBuZXh0X21lcmdlX2RlcHRoKQotICAgICAgICAgICAg
ICAgICAgICBzZWxmLl9wdXNoX25vZGUoCisgICAgICAgICAgICAgICAgICAgICAgICBub2RlX21l
cmdlX2RlcHRoX3N0YWNrWy0xXSArIG5leHRfbWVyZ2VfZGVwdGgpCisgICAgICAgICAgICAgICAg
ICAgIHB1c2hfbm9kZSgKICAgICAgICAgICAgICAgICAgICAgICAgIG5leHRfbm9kZV9uYW1lLAog
ICAgICAgICAgICAgICAgICAgICAgICAgbmV4dF9tZXJnZV9kZXB0aCwKICAgICAgICAgICAgICAg
ICAgICAgICAgIHBhcmVudHMpCiAgICAgICAgICAgICAgICAgICAgICMgYW5kIGRvIG5vdCBjb250
aW51ZSBwcm9jZXNzaW5nIHBhcmVudHMgdW50aWwgdGhpcyAnY2FsbCcgCiAgICAgICAgICAgICAg
ICAgICAgICMgaGFzIHJlY3Vyc2VkLgogICAgICAgICAgICAgICAgICAgICBicmVhaworCiAgICAg
ICAgICMgV2UgaGF2ZSBzY2hlZHVsZWQgdGhlIGdyYXBoLiBOb3cgZGVsaXZlciB0aGUgb3JkZXJl
ZCBvdXRwdXQ6CiAgICAgICAgIHNlcXVlbmNlX251bWJlciA9IDAKLSAgICAgICAgd2hpbGUgc2Vs
Zi5fc2NoZWR1bGVkX25vZGVzOgotICAgICAgICAgICAgbm9kZV9uYW1lLCBtZXJnZV9kZXB0aCwg
cmV2bm8gPSBzZWxmLl9zY2hlZHVsZWRfbm9kZXMucG9wKCkKLSAgICAgICAgICAgIGlmIG5vZGVf
bmFtZSA9PSBzZWxmLl9zdG9wX3JldmlzaW9uOgorICAgICAgICBzdG9wX3JldmlzaW9uID0gc2Vs
Zi5fc3RvcF9yZXZpc2lvbgorICAgICAgICBnZW5lcmF0ZV9yZXZubyA9IHNlbGYuX2dlbmVyYXRl
X3Jldm5vCisgICAgICAgIG9yaWdpbmFsX2dyYXBoID0gc2VsZi5fb3JpZ2luYWxfZ3JhcGgKKwor
ICAgICAgICB3aGlsZSBzY2hlZHVsZWRfbm9kZXM6CisgICAgICAgICAgICBub2RlX25hbWUsIG1l
cmdlX2RlcHRoLCByZXZubyA9IHNjaGVkdWxlZF9ub2Rlcy5wb3AoKQorICAgICAgICAgICAgaWYg
bm9kZV9uYW1lID09IHN0b3BfcmV2aXNpb246CiAgICAgICAgICAgICAgICAgcmV0dXJuCi0gICAg
ICAgICAgICBpZiBub3QgbGVuKHNlbGYuX3NjaGVkdWxlZF9ub2Rlcyk6CisgICAgICAgICAgICBp
ZiBub3QgbGVuKHNjaGVkdWxlZF9ub2Rlcyk6CiAgICAgICAgICAgICAgICAgIyBsYXN0IHJldmlz
aW9uIGlzIHRoZSBlbmQgb2YgYSBtZXJnZQogICAgICAgICAgICAgICAgIGVuZF9vZl9tZXJnZSA9
IFRydWUKLSAgICAgICAgICAgIGVsaWYgc2VsZi5fc2NoZWR1bGVkX25vZGVzWy0xXVsxXSA8IG1l
cmdlX2RlcHRoOgorICAgICAgICAgICAgZWxpZiBzY2hlZHVsZWRfbm9kZXNbLTFdWzFdIDwgbWVy
Z2VfZGVwdGg6CiAgICAgICAgICAgICAgICAgIyB0aGUgbmV4dCBub2RlIGlzIHRvIG91ciBsZWZ0
CiAgICAgICAgICAgICAgICAgZW5kX29mX21lcmdlID0gVHJ1ZQotICAgICAgICAgICAgZWxpZiAo
c2VsZi5fc2NoZWR1bGVkX25vZGVzWy0xXVsxXSA9PSBtZXJnZV9kZXB0aCBhbmQKLSAgICAgICAg
ICAgICAgICAgIChzZWxmLl9zY2hlZHVsZWRfbm9kZXNbLTFdWzBdIG5vdCBpbgotICAgICAgICAg
ICAgICAgICAgIHNlbGYuX29yaWdpbmFsX2dyYXBoW25vZGVfbmFtZV0pKToKKyAgICAgICAgICAg
IGVsaWYgKHNjaGVkdWxlZF9ub2Rlc1stMV1bMV0gPT0gbWVyZ2VfZGVwdGggYW5kCisgICAgICAg
ICAgICAgICAgICAoc2NoZWR1bGVkX25vZGVzWy0xXVswXSBub3QgaW4KKyAgICAgICAgICAgICAg
ICAgICBvcmlnaW5hbF9ncmFwaFtub2RlX25hbWVdKSk6CiAgICAgICAgICAgICAgICAgIyB0aGUg
bmV4dCBub2RlIHdhcyBwYXJ0IG9mIGEgbXVsdGlwbGUtbWVyZ2UuCiAgICAgICAgICAgICAgICAg
ZW5kX29mX21lcmdlID0gVHJ1ZQogICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICBl
bmRfb2ZfbWVyZ2UgPSBGYWxzZQotICAgICAgICAgICAgaWYgc2VsZi5fZ2VuZXJhdGVfcmV2bm86
CisgICAgICAgICAgICBpZiBnZW5lcmF0ZV9yZXZubzoKICAgICAgICAgICAgICAgICB5aWVsZCAo
c2VxdWVuY2VfbnVtYmVyLCBub2RlX25hbWUsIG1lcmdlX2RlcHRoLCByZXZubywgZW5kX29mX21l
cmdlKQogICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICB5aWVsZCAoc2VxdWVuY2Vf
bnVtYmVyLCBub2RlX25hbWUsIG1lcmdlX2RlcHRoLCBlbmRfb2ZfbWVyZ2UpCgo=

=== modified file bzrlib/urlutils.py // last-changed:andrew.bennetts@canonical.
... com-20070426061907-ipn74twdz1gmz52i // encoding:base64
LS0tIGJ6cmxpYi91cmx1dGlscy5weQorKysgYnpybGliL3VybHV0aWxzLnB5CkBAIC0yOTAsMTIg
KzI5MCwyNiBAQAogCiAKIF91cmxfc2NoZW1lX3JlID0gcmUuY29tcGlsZShyJ14oP1A8c2NoZW1l
PlteOi9dezIsfSk6Ly8oP1A8cGF0aD4uKikkJykKK191cmxfaGV4X2VzY2FwZXNfcmUgPSByZS5j
b21waWxlKHInKCVbMC05YS1mQS1GXXsyfSknKQorCisKK2RlZiBfdW5lc2NhcGVfc2FmZV9jaGFy
cyhtYXRjaG9iaik6CisgICAgIiIicmUuc3ViIGNhbGxiYWNrIHRvIGNvbnZlcnQgaGV4LWVzY2Fw
ZXMgdG8gcGxhaW4gY2hhcmFjdGVycyAoaWYgc2FmZSkuCisgICAgCisgICAgZS5nLiAnJTdFJyB3
aWxsIGJlIGNvbnZlcnRlZCB0byAnficuCisgICAgIiIiCisgICAgaGV4X2RpZ2l0cyA9IG1hdGNo
b2JqLmdyb3VwKDApWzE6XQorICAgIGNoYXIgPSBjaHIoaW50KGhleF9kaWdpdHMsIDE2KSkKKyAg
ICBpZiBjaGFyIGluIF91cmxfZG9udF9lc2NhcGVfY2hhcmFjdGVyczoKKyAgICAgICAgcmV0dXJu
IGNoYXIKKyAgICBlbHNlOgorICAgICAgICByZXR1cm4gbWF0Y2hvYmouZ3JvdXAoMCkudXBwZXIo
KQogCiAKIGRlZiBub3JtYWxpemVfdXJsKHVybCk6CiAgICAgIiIiTWFrZSBzdXJlIHRoYXQgYSBw
YXRoIHN0cmluZyBpcyBpbiBmdWxseSBub3JtYWxpemVkIFVSTCBmb3JtLgogICAgIAotICAgIFRo
aXMgaGFuZGxlcyBVUkxzIHdoaWNoIGhhdmUgdW5pY29kZSBjaGFyYWN0ZXJzLCBzcGFjZXMsIAor
ICAgIFRoaXMgaGFuZGxlcyBVUkxzIHdoaWNoIGhhdmUgdW5pY29kZSBjaGFyYWN0ZXJzLCBzcGFj
ZXMsCiAgICAgc3BlY2lhbCBjaGFyYWN0ZXJzLCBldGMuCiAKICAgICBJdCBoYXMgdHdvIGJhc2lj
IG1vZGVzIG9mIG9wZXJhdGlvbiwgZGVwZW5kaW5nIG9uIHdoZXRoZXIgdGhlCkBAIC0zMTQsMjEg
KzMyOCwyNyBAQAogICAgIG0gPSBfdXJsX3NjaGVtZV9yZS5tYXRjaCh1cmwpCiAgICAgaWYgbm90
IG06CiAgICAgICAgIHJldHVybiBsb2NhbF9wYXRoX3RvX3VybCh1cmwpCisgICAgc2NoZW1lID0g
bS5ncm91cCgnc2NoZW1lJykKKyAgICBwYXRoID0gbS5ncm91cCgncGF0aCcpCiAgICAgaWYgbm90
IGlzaW5zdGFuY2UodXJsLCB1bmljb2RlKToKICAgICAgICAgZm9yIGMgaW4gdXJsOgogICAgICAg
ICAgICAgaWYgYyBub3QgaW4gX3VybF9zYWZlX2NoYXJhY3RlcnM6CiAgICAgICAgICAgICAgICAg
cmFpc2UgZXJyb3JzLkludmFsaWRVUkwodXJsLCAnVVJMcyBjYW4gb25seSBjb250YWluIHNwZWNp
ZmljJwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnIHNhZmUg
Y2hhcmFjdGVycyAobm90ICVyKScgJSBjKQotICAgICAgICByZXR1cm4gdXJsCisgICAgICAgIHBh
dGggPSBfdXJsX2hleF9lc2NhcGVzX3JlLnN1YihfdW5lc2NhcGVfc2FmZV9jaGFycywgcGF0aCkK
KyAgICAgICAgcmV0dXJuIHN0cihzY2hlbWUgKyAnOi8vJyArICcnLmpvaW4ocGF0aCkpCisKICAg
ICAjIFdlIGhhdmUgYSB1bmljb2RlIChoeWJyaWQpIHVybAotICAgIHNjaGVtZSA9IG0uZ3JvdXAo
J3NjaGVtZScpCi0gICAgcGF0aCA9IGxpc3QobS5ncm91cCgncGF0aCcpKQorICAgIHBhdGhfY2hh
cnMgPSBsaXN0KHBhdGgpCiAKLSAgICBmb3IgaSBpbiB4cmFuZ2UobGVuKHBhdGgpKToKLSAgICAg
ICAgaWYgcGF0aFtpXSBub3QgaW4gX3VybF9zYWZlX2NoYXJhY3RlcnM6Ci0gICAgICAgICAgICBj
aGFycyA9IHBhdGhbaV0uZW5jb2RlKCd1dGYtOCcpCi0gICAgICAgICAgICBwYXRoW2ldID0gJycu
am9pbihbJyUlJTAyWCcgJSBvcmQoYykgZm9yIGMgaW4gcGF0aFtpXS5lbmNvZGUoJ3V0Zi04Jyld
KQotICAgIHJldHVybiBzdHIoc2NoZW1lICsgJzovLycgKyAnJy5qb2luKHBhdGgpKQorICAgIGZv
ciBpIGluIHhyYW5nZShsZW4ocGF0aF9jaGFycykpOgorICAgICAgICBpZiBwYXRoX2NoYXJzW2ld
IG5vdCBpbiBfdXJsX3NhZmVfY2hhcmFjdGVyczoKKyAgICAgICAgICAgIGNoYXJzID0gcGF0aF9j
aGFyc1tpXS5lbmNvZGUoJ3V0Zi04JykKKyAgICAgICAgICAgIHBhdGhfY2hhcnNbaV0gPSAnJy5q
b2luKAorICAgICAgICAgICAgICAgIFsnJSUlMDJYJyAlIG9yZChjKSBmb3IgYyBpbiBwYXRoX2No
YXJzW2ldLmVuY29kZSgndXRmLTgnKV0pCisgICAgcGF0aCA9ICcnLmpvaW4ocGF0aF9jaGFycykK
KyAgICBwYXRoID0gX3VybF9oZXhfZXNjYXBlc19yZS5zdWIoX3VuZXNjYXBlX3NhZmVfY2hhcnMs
IHBhdGgpCisgICAgcmV0dXJuIHN0cihzY2hlbWUgKyAnOi8vJyArIHBhdGgpCiAKIAogZGVmIHJl
bGF0aXZlX3VybChiYXNlLCBvdGhlcik6CkBAIC01MTQsNiArNTM0LDE1IEBACiAjVGhlc2UgZW50
cmllcyBnZXQgbWFwcGVkIHRvIHRoZW1zZWx2ZXMKIF9oZXhfZGlzcGxheV9tYXAudXBkYXRlKCho
ZXgsJyUnK2hleCkgZm9yIGhleCBpbiBfbm9fZGVjb2RlX2hleCkKIAorIyBUaGVzZSBjaGFyYWN0
ZXJzIHNob3VsZG4ndCBiZSBwZXJjZW50LWVuY29kZWQsIGFuZCBpdCdzIGFsd2F5cyBzYWZlIHRv
CisjIHVuZW5jb2RlIHRoZW0gaWYgdGhleSBhcmUuCitfdXJsX2RvbnRfZXNjYXBlX2NoYXJhY3Rl
cnMgPSBzZXQoCisgICAiYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXoiICMgTG93ZXJjYXNlIGFs
cGhhCisgICAiQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVoiICMgVXBwZXJjYXNlIGFscGhhCisg
ICAiMDEyMzQ1Njc4OSIgIyBOdW1iZXJzCisgICAiLS5ffiIgICMgVW5yZXNlcnZlZCBjaGFyYWN0
ZXJzCispCisKICMgVGhlc2UgY2hhcmFjdGVycyBzaG91bGQgbm90IGJlIGVzY2FwZWQKIF91cmxf
c2FmZV9jaGFyYWN0ZXJzID0gc2V0KAogICAgImFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6IiAj
IExvd2VyY2FzZSBhbHBoYQoK

=== modified file bzrlib/workingtree.py // last-changed:john@arbash-meinel.com-
... 20070502145420-k2vebnl0rd45q8kk // encoding:base64
LS0tIGJ6cmxpYi93b3JraW5ndHJlZS5weQorKysgYnpybGliL3dvcmtpbmd0cmVlLnB5CkBAIC0z
OCw2ICszOCw3IEBACiAKIGZyb20gY1N0cmluZ0lPIGltcG9ydCBTdHJpbmdJTwogaW1wb3J0IG9z
CitpbXBvcnQgc3lzCiAKIGZyb20gYnpybGliLmxhenlfaW1wb3J0IGltcG9ydCBsYXp5X2ltcG9y
dAogbGF6eV9pbXBvcnQoZ2xvYmFscygpLCAiIiIKQEAgLTExOSw2ICsxMjAsOCBAQAogTUVSR0Vf
TU9ESUZJRURfSEVBREVSXzEgPSAiQlpSIG1lcmdlLW1vZGlmaWVkIGxpc3QgZm9ybWF0IDEiCiBD
T05GTElDVF9IRUFERVJfMSA9ICJCWlIgY29uZmxpY3QgbGlzdCBmb3JtYXQgMSIKIAorRVJST1Jf
UEFUSF9OT1RfRk9VTkQgPSAzICAgICMgV2luZG93c0Vycm9yIGVycm5vIGNvZGUsIGVxdWl2YWxl
bnQgdG8gRU5PRU5UCisKIAogQGRlcHJlY2F0ZWRfZnVuY3Rpb24oemVyb190aGlydGVlbikKIGRl
ZiBnZW5fZmlsZV9pZChuYW1lKToKQEAgLTM2NCw3ICszNjcsNyBAQAogCiAgICAgZGVmIGFic3Bh
dGgoc2VsZiwgZmlsZW5hbWUpOgogICAgICAgICByZXR1cm4gcGF0aGpvaW4oc2VsZi5iYXNlZGly
LCBmaWxlbmFtZSkKLSAgICAKKwogICAgIGRlZiBiYXNpc190cmVlKHNlbGYpOgogICAgICAgICAi
IiJSZXR1cm4gUmV2aXNpb25UcmVlIGZvciB0aGUgY3VycmVudCBsYXN0IHJldmlzaW9uLgogICAg
ICAgICAKQEAgLTkyOSwyMCArOTMyLDE0IEBACiAgICAgICAgICAgICB0cmFuc3BvcnQgPSBzZWxm
LmJyYW5jaC5ienJkaXIucm9vdF90cmFuc3BvcnQKICAgICAgICAgICAgIGZvciBuYW1lIGluIHNl
Z21lbnRzOgogICAgICAgICAgICAgICAgIHRyYW5zcG9ydCA9IHRyYW5zcG9ydC5jbG9uZShuYW1l
KQotICAgICAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICAgICAgdHJhbnNwb3J0Lm1r
ZGlyKCcuJykKLSAgICAgICAgICAgICAgICBleGNlcHQgZXJyb3JzLkZpbGVFeGlzdHM6Ci0gICAg
ICAgICAgICAgICAgICAgIHBhc3MKKyAgICAgICAgICAgICAgICB0cmFuc3BvcnQuZW5zdXJlX2Jh
c2UoKQogICAgICAgICAgICAgcmV0dXJuIHRyYW5zcG9ydAogICAgICAgICAgICAgCiAgICAgICAg
IHN1Yl9wYXRoID0gc2VsZi5pZDJwYXRoKGZpbGVfaWQpCiAgICAgICAgIGJyYW5jaF90cmFuc3Bv
cnQgPSBta2RpcnMoc3ViX3BhdGgpCiAgICAgICAgIGlmIGZvcm1hdCBpcyBOb25lOgogICAgICAg
ICAgICAgZm9ybWF0ID0gYnpyZGlyLmZvcm1hdF9yZWdpc3RyeS5tYWtlX2J6cmRpcignZGlyc3Rh
dGUtd2l0aC1zdWJ0cmVlJykKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgYnJhbmNoX3RyYW5z
cG9ydC5ta2RpcignLicpCi0gICAgICAgIGV4Y2VwdCBlcnJvcnMuRmlsZUV4aXN0czoKLSAgICAg
ICAgICAgIHBhc3MKKyAgICAgICAgYnJhbmNoX3RyYW5zcG9ydC5lbnN1cmVfYmFzZSgpCiAgICAg
ICAgIGJyYW5jaF9ienJkaXIgPSBmb3JtYXQuaW5pdGlhbGl6ZV9vbl90cmFuc3BvcnQoYnJhbmNo
X3RyYW5zcG9ydCkKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgcmVwbyA9IGJyYW5jaF9ienJk
aXIuZmluZF9yZXBvc2l0b3J5KCkKQEAgLTE2MDEsNyArMTU5OCw3IEBACiAgICAgICAgICAgICBt
b2RlID0gc3RhdF92YWx1ZS5zdF9tb2RlCiAgICAgICAgICAgICBraW5kID0gb3N1dGlscy5maWxl
X2tpbmRfZnJvbV9zdGF0X21vZGUobW9kZSkKICAgICAgICAgICAgIGlmIG5vdCBzdXBwb3J0c19l
eGVjdXRhYmxlKCk6Ci0gICAgICAgICAgICAgICAgZXhlY3V0YWJsZSA9IGVudHJ5LmV4ZWN1dGFi
bGUKKyAgICAgICAgICAgICAgICBleGVjdXRhYmxlID0gZW50cnkgaXMgbm90IE5vbmUgYW5kIGVu
dHJ5LmV4ZWN1dGFibGUKICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgZXhlY3V0
YWJsZSA9IGJvb2woc3RhdC5TX0lTUkVHKG1vZGUpIGFuZCBzdGF0LlNfSUVYRUMgJiBtb2RlKQog
ICAgICAgICByZXR1cm4ga2luZCwgZXhlY3V0YWJsZSwgc3RhdF92YWx1ZQpAQCAtMTc2NCw0MyAr
MTc2MSw5NyBAQAogICAgICAgICByZXR1cm4gcmVzdWx0CiAKICAgICBAbmVlZHNfdHJlZV93cml0
ZV9sb2NrCi0gICAgZGVmIHJlbW92ZShzZWxmLCBmaWxlcywgdmVyYm9zZT1GYWxzZSwgdG9fZmls
ZT1Ob25lKToKLSAgICAgICAgIiIiUmVtb3ZlIG5vbWluYXRlZCBmaWxlcyBmcm9tIHRoZSB3b3Jr
aW5nIGludmVudG9yeS4uCi0KLSAgICAgICAgVGhpcyBkb2VzIG5vdCByZW1vdmUgdGhlaXIgdGV4
dC4gIFRoaXMgZG9lcyBub3QgcnVuIG9uIFhYWCBvbiB3aGF0PyBSQkMKLQotICAgICAgICBUT0RP
OiBSZWZ1c2UgdG8gcmVtb3ZlIG1vZGlmaWVkIGZpbGVzIHVubGVzcyAtLWZvcmNlIGlzIGdpdmVu
PwotCi0gICAgICAgIFRPRE86IERvIHNvbWV0aGluZyB1c2VmdWwgd2l0aCBkaXJlY3Rvcmllcy4K
LQotICAgICAgICBUT0RPOiBTaG91bGQgdGhpcyByZW1vdmUgdGhlIHRleHQgb3Igbm90PyAgVG91
Z2ggY2FsbDsgbm90Ci0gICAgICAgIHJlbW92aW5nIG1heSBiZSB1c2VmdWwgYW5kIHRoZSB1c2Vy
IGNhbiBqdXN0IHVzZSB1c2Ugcm0sIGFuZAotICAgICAgICBpcyB0aGUgb3Bwb3NpdGUgb2YgYWRk
LiAgUmVtb3ZpbmcgaXQgaXMgY29uc2lzdGVudCB3aXRoIG1vc3QKLSAgICAgICAgb3RoZXIgdG9v
bHMuICBNYXliZSBhbiBvcHRpb24uCisgICAgZGVmIHJlbW92ZShzZWxmLCBmaWxlcywgdmVyYm9z
ZT1GYWxzZSwgdG9fZmlsZT1Ob25lLCBrZWVwX2ZpbGVzPVRydWUsCisgICAgICAgIGZvcmNlPUZh
bHNlKToKKyAgICAgICAgIiIiUmVtb3ZlIG5vbWluYXRlZCBmaWxlcyBmcm9tIHRoZSB3b3JraW5n
IGludmVudG9yLgorCisgICAgICAgIDpmaWxlczogRmlsZSBwYXRocyByZWxhdGl2ZSB0byB0aGUg
YmFzZWRpci4KKyAgICAgICAgOmtlZXBfZmlsZXM6IElmIHRydWUsIHRoZSBmaWxlcyB3aWxsIGFs
c28gYmUga2VwdC4KKyAgICAgICAgOmZvcmNlOiBEZWxldGUgZmlsZXMgYW5kIGRpcmVjdG9yaWVz
LCBldmVuIGlmIHRoZXkgYXJlIGNoYW5nZWQgYW5kCisgICAgICAgICAgICBldmVuIGlmIHRoZSBk
aXJlY3RvcmllcyBhcmUgbm90IGVtcHR5LgogICAgICAgICAiIiIKICAgICAgICAgIyMgVE9ETzog
Tm9ybWFsaXplIG5hbWVzCi0gICAgICAgICMjIFRPRE86IFJlbW92ZSBuZXN0ZWQgbG9vcHM7IGJl
dHRlciBzY2FsYWJpbGl0eQorCiAgICAgICAgIGlmIGlzaW5zdGFuY2UoZmlsZXMsIGJhc2VzdHJp
bmcpOgogICAgICAgICAgICAgZmlsZXMgPSBbZmlsZXNdCiAKICAgICAgICAgaW52ID0gc2VsZi5p
bnZlbnRvcnkKIAorICAgICAgICBuZXdfZmlsZXM9c2V0KCkKKyAgICAgICAgdW5rbm93bl9maWxl
c19pbl9kaXJlY3Rvcnk9c2V0KCkKKworICAgICAgICBkZWYgcmVjdXJzZV9kaXJlY3RvcnlfdG9f
YWRkX2ZpbGVzKGRpcmVjdG9yeSk6CisgICAgICAgICAgICAjIHJlY3Vyc2UgZGlyZWN0b3J5IGFu
ZCBhZGQgYWxsIGZpbGVzCisgICAgICAgICAgICAjIHNvIHdlIGNhbiBjaGVjayBpZiB0aGV5IGhh
dmUgY2hhbmdlZC4KKyAgICAgICAgICAgIGZvciBjb250YWluZWRfZGlyX2luZm8gaW4gc2VsZi53
YWxrZGlycyhkaXJlY3RvcnkpOgorICAgICAgICAgICAgICAgIGZvciBmaWxlX2luZm8gaW4gY29u
dGFpbmVkX2Rpcl9pbmZvWzFdOgorICAgICAgICAgICAgICAgICAgICBpZiBmaWxlX2luZm9bMl0g
PT0gJ2ZpbGUnOgorICAgICAgICAgICAgICAgICAgICAgICAgcmVscGF0aCA9IHNlbGYucmVscGF0
aChmaWxlX2luZm9bMF0pCisgICAgICAgICAgICAgICAgICAgICAgICBpZiBmaWxlX2luZm9bNF06
ICNpcyBpdCB2ZXJzaW9uZWQ/CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3X2ZpbGVz
LmFkZChyZWxwYXRoKQorICAgICAgICAgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB1bmtub3duX2ZpbGVzX2luX2RpcmVjdG9yeS5hZGQoCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIChyZWxwYXRoLCBOb25lLCBmaWxlX2luZm9bMl0pKQor
CisgICAgICAgIGZvciBmaWxlbmFtZSBpbiBmaWxlczoKKyAgICAgICAgICAgICMgR2V0IGZpbGUg
bmFtZSBpbnRvIGNhbm9uaWNhbCBmb3JtLgorICAgICAgICAgICAgZmlsZW5hbWUgPSBzZWxmLnJl
bHBhdGgoc2VsZi5hYnNwYXRoKGZpbGVuYW1lKSkKKyAgICAgICAgICAgIGlmIGxlbihmaWxlbmFt
ZSkgPiAwOgorICAgICAgICAgICAgICAgIG5ld19maWxlcy5hZGQoZmlsZW5hbWUpCisgICAgICAg
ICAgICAgICAgaWYgb3N1dGlscy5pc2RpcihmaWxlbmFtZSkgYW5kIGxlbihvcy5saXN0ZGlyKGZp
bGVuYW1lKSkgPiAwOgorICAgICAgICAgICAgICAgICAgICByZWN1cnNlX2RpcmVjdG9yeV90b19h
ZGRfZmlsZXMoZmlsZW5hbWUpCisgICAgICAgIGZpbGVzID0gW2YgZm9yIGYgaW4gbmV3X2ZpbGVz
XQorCisgICAgICAgICMgU29ydCBuZWVkZWQgdG8gZmlyc3QgaGFuZGxlIGRpcmVjdG9yeSBjb250
ZW50IGJlZm9yZSB0aGUgZGlyZWN0b3J5CisgICAgICAgIGZpbGVzLnNvcnQocmV2ZXJzZT1UcnVl
KQorICAgICAgICBpZiBub3Qga2VlcF9maWxlcyBhbmQgbm90IGZvcmNlOgorICAgICAgICAgICAg
dHJlZV9kZWx0YSA9IHNlbGYuY2hhbmdlc19mcm9tKHNlbGYuYmFzaXNfdHJlZSgpLAorICAgICAg
ICAgICAgICAgIHNwZWNpZmljX2ZpbGVzPWZpbGVzKQorICAgICAgICAgICAgZm9yIHVua25vd25f
ZmlsZSBpbiB1bmtub3duX2ZpbGVzX2luX2RpcmVjdG9yeToKKyAgICAgICAgICAgICAgICB0cmVl
X2RlbHRhLnVudmVyc2lvbmVkLmV4dGVuZCgodW5rbm93bl9maWxlLCkpCisgICAgICAgICAgICBp
ZiBib29sKHRyZWVfZGVsdGEubW9kaWZpZWQKKyAgICAgICAgICAgICAgICAgICAgb3IgdHJlZV9k
ZWx0YS5hZGRlZAorICAgICAgICAgICAgICAgICAgICBvciB0cmVlX2RlbHRhLnJlbmFtZWQKKyAg
ICAgICAgICAgICAgICAgICAgb3IgdHJlZV9kZWx0YS5raW5kX2NoYW5nZWQKKyAgICAgICAgICAg
ICAgICAgICAgb3IgdHJlZV9kZWx0YS51bnZlcnNpb25lZCk6CisgICAgICAgICAgICAgICAgcmFp
c2UgZXJyb3JzLkJ6clJlbW92ZUNoYW5nZWRGaWxlc0Vycm9yKHRyZWVfZGVsdGEpCisKICAgICAg
ICAgIyBkbyB0aGlzIGJlZm9yZSBhbnkgbW9kaWZpY2F0aW9ucwogICAgICAgICBmb3IgZiBpbiBm
aWxlczoKICAgICAgICAgICAgIGZpZCA9IGludi5wYXRoMmlkKGYpCisgICAgICAgICAgICBtZXNz
YWdlPU5vbmUKICAgICAgICAgICAgIGlmIG5vdCBmaWQ6Ci0gICAgICAgICAgICAgICAgbm90ZSgi
JXMgaXMgbm90IHZlcnNpb25lZC4iJWYpCisgICAgICAgICAgICAgICAgbWVzc2FnZT0iJXMgaXMg
bm90IHZlcnNpb25lZC4iICUgKGYsKQogICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAg
ICBpZiB2ZXJib3NlOgotICAgICAgICAgICAgICAgICAgICAjIGhhdmluZyByZW1vdmUgaXQsIGl0
IG11c3QgYmUgZWl0aGVyIGlnbm9yZWQgb3IgdW5rbm93bgorICAgICAgICAgICAgICAgICAgICAj
IGhhdmluZyByZW1vdmVkIGl0LCBpdCBtdXN0IGJlIGVpdGhlciBpZ25vcmVkIG9yIHVua25vd24K
ICAgICAgICAgICAgICAgICAgICAgaWYgc2VsZi5pc19pZ25vcmVkKGYpOgogICAgICAgICAgICAg
ICAgICAgICAgICAgbmV3X3N0YXR1cyA9ICdJJwogICAgICAgICAgICAgICAgICAgICBlbHNlOgog
ICAgICAgICAgICAgICAgICAgICAgICAgbmV3X3N0YXR1cyA9ICc/JwogICAgICAgICAgICAgICAg
ICAgICB0ZXh0dWkuc2hvd19zdGF0dXMobmV3X3N0YXR1cywgaW52W2ZpZF0ua2luZCwgZiwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvX2ZpbGU9dG9fZmlsZSkKKyAg
ICAgICAgICAgICAgICAjIHVudmVyc2lvbiBmaWxlCiAgICAgICAgICAgICAgICAgZGVsIGludltm
aWRdCi0KKyAgICAgICAgICAgICAgICBtZXNzYWdlPSJyZW1vdmVkICVzIiAlIChmLCkKKworICAg
ICAgICAgICAgaWYgbm90IGtlZXBfZmlsZXM6CisgICAgICAgICAgICAgICAgYWJzX3BhdGggPSBz
ZWxmLmFic3BhdGgoZikKKyAgICAgICAgICAgICAgICBpZiBvc3V0aWxzLmxleGlzdHMoYWJzX3Bh
dGgpOgorICAgICAgICAgICAgICAgICAgICBpZiAob3N1dGlscy5pc2RpcihhYnNfcGF0aCkgYW5k
CisgICAgICAgICAgICAgICAgICAgICAgICBsZW4ob3MubGlzdGRpcihhYnNfcGF0aCkpID4gMCk6
CisgICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlPSIlcyBpcyBub3QgZW1wdHkgZGlyZWN0
b3J5ICJcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgImFuZCB3b24ndCBiZSBkZWxldGVk
LiIgJSAoZiwpCisgICAgICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAg
ICAgICBvc3V0aWxzLmRlbGV0ZV9hbnkoYWJzX3BhdGgpCisgICAgICAgICAgICAgICAgICAgICAg
ICBtZXNzYWdlPSJkZWxldGVkICVzIiAlIChmLCkKKyAgICAgICAgICAgICAgICBlbGlmIG1lc3Nh
Z2UgaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgICAgICMgb25seSBjYXJlIGlmIHdlIGhh
dmVuJ3QgZG9uZSBhbnl0aGluZyB5ZXQuCisgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2U9IiVz
IGRvZXMgbm90IGV4aXN0LiIgJSAoZiwpCisKKyAgICAgICAgICAgICMgcHJpbnQgb25seSBvbmUg
bWVzc2FnZSAoaWYgYW55KSBwZXIgZmlsZS4KKyAgICAgICAgICAgIGlmIG1lc3NhZ2UgaXMgbm90
IE5vbmU6CisgICAgICAgICAgICAgICAgbm90ZShtZXNzYWdlKQogICAgICAgICBzZWxmLl93cml0
ZV9pbnZlbnRvcnkoaW52KQogCiAgICAgQG5lZWRzX3RyZWVfd3JpdGVfbG9jawpAQCAtMjEwMywx
MSArMjE1NCwxNiBAQAogICAgIGRlZiB3YWxrZGlycyhzZWxmLCBwcmVmaXg9IiIpOgogICAgICAg
ICAiIiJXYWxrIHRoZSBkaXJlY3RvcmllcyBvZiB0aGlzIHRyZWUuCiAKKyAgICAgICAgcmV0dXJu
cyBhIGdlbmVyYXRvciB3aGljaCB5aWVsZHMgaXRlbXMgaW4gdGhlIGZvcm06CisgICAgICAgICAg
ICAgICAgKChjdXJyZW5fZGlyZWN0b3J5X3BhdGgsIGZpbGVpZCksCisgICAgICAgICAgICAgICAg
IFsoZmlsZTFfcGF0aCwgZmlsZTFfbmFtZSwgZmlsZTFfa2luZCwgKGxzdGF0KSwgZmlsZTFfaWQs
CisgICAgICAgICAgICAgICAgICAgZmlsZTFfa2luZCksIC4uLiBdKQorCiAgICAgICAgIFRoaXMg
QVBJIHJldHVybnMgYSBnZW5lcmF0b3IsIHdoaWNoIGlzIG9ubHkgdmFsaWQgZHVyaW5nIHRoZSBj
dXJyZW50CiAgICAgICAgIHRyZWUgdHJhbnNhY3Rpb24gLSB3aXRoaW4gYSBzaW5nbGUgbG9ja19y
ZWFkIG9yIGxvY2tfd3JpdGUgZHVyYXRpb24uCiAKLSAgICAgICAgSWYgdGhlIHRyZWUgaXMgbm90
IGxvY2tlZCwgaXQgbWF5IGNhdXNlIGFuIGVycm9yIHRvIGJlIHJhaXNlZCwgZGVwZW5kaW5nCi0g
ICAgICAgIG9uIHRoZSB0cmVlIGltcGxlbWVudGF0aW9uLgorICAgICAgICBJZiB0aGUgdHJlZSBp
cyBub3QgbG9ja2VkLCBpdCBtYXkgY2F1c2UgYW4gZXJyb3IgdG8gYmUgcmFpc2VkLAorICAgICAg
ICBkZXBlbmRpbmcgb24gdGhlIHRyZWUgaW1wbGVtZW50YXRpb24uCiAgICAgICAgICIiIgogICAg
ICAgICBkaXNrX3RvcCA9IHNlbGYuYWJzcGF0aChwcmVmaXgpCiAgICAgICAgIGlmIGRpc2tfdG9w
LmVuZHN3aXRoKCcvJyk6CkBAIC0yMTE5LDcgKzIxNzUsOCBAQAogICAgICAgICAgICAgY3VycmVu
dF9kaXNrID0gZGlza19pdGVyYXRvci5uZXh0KCkKICAgICAgICAgICAgIGRpc2tfZmluaXNoZWQg
PSBGYWxzZQogICAgICAgICBleGNlcHQgT1NFcnJvciwgZToKLSAgICAgICAgICAgIGlmIGUuZXJy
bm8gIT0gZXJybm8uRU5PRU5UOgorICAgICAgICAgICAgaWYgbm90IChlLmVycm5vID09IGVycm5v
LkVOT0VOVCBvcgorICAgICAgICAgICAgICAgIChzeXMucGxhdGZvcm0gPT0gJ3dpbjMyJyBhbmQg
ZS5lcnJubyA9PSBFUlJPUl9QQVRIX05PVF9GT1VORCkpOgogICAgICAgICAgICAgICAgIHJhaXNl
CiAgICAgICAgICAgICBjdXJyZW50X2Rpc2sgPSBOb25lCiAgICAgICAgICAgICBkaXNrX2Zpbmlz
aGVkID0gVHJ1ZQpAQCAtMjIwNCw2ICsyMjYxLDE0IEBACiAgICAgICAgICAgICAgICAgICAgIGRp
c2tfZmluaXNoZWQgPSBUcnVlCiAKICAgICBkZWYgX3dhbGtkaXJzKHNlbGYsIHByZWZpeD0iIik6
CisgICAgICAgICIiIldhbGsgdGhlIGRpcmVjdG9yaWVzIG9mIHRoaXMgdHJlZS4KKworICAgICAg
ICAgICA6cHJlZml4OiBpcyB1c2VkIGFzIHRoZSBkaXJlY3Ryb3J5IHRvIHN0YXJ0IHdpdGguCisg
ICAgICAgICAgIHJldHVybnMgYSBnZW5lcmF0b3Igd2hpY2ggeWllbGRzIGl0ZW1zIGluIHRoZSBm
b3JtOgorICAgICAgICAgICAgICAgICgoY3VycmVuX2RpcmVjdG9yeV9wYXRoLCBmaWxlaWQpLAor
ICAgICAgICAgICAgICAgICBbKGZpbGUxX3BhdGgsIGZpbGUxX25hbWUsIGZpbGUxX2tpbmQsIE5v
bmUsIGZpbGUxX2lkLAorICAgICAgICAgICAgICAgICAgIGZpbGUxX2tpbmQpLCAuLi4gXSkKKyAg
ICAgICAgIiIiCiAgICAgICAgIF9kaXJlY3RvcnkgPSAnZGlyZWN0b3J5JwogICAgICAgICAjIGdl
dCB0aGUgcm9vdCBpbiB0aGUgaW52ZW50b3J5CiAgICAgICAgIGludiA9IHNlbGYuaW52ZW50b3J5
Cgo=

=== modified file bzrlib/workingtree_4.py // last-changed:john@arbash-meinel.co
... m-20070430174510-qdteh5dy45gbj785 // encoding:base64
LS0tIGJ6cmxpYi93b3JraW5ndHJlZV80LnB5CisrKyBienJsaWIvd29ya2luZ3RyZWVfNC5weQpA
QCAtOTksNiArOTksNyBAQAogIyBUaGlzIGlzIHRoZSBXaW5kb3dzIGVxdWl2YWxlbnQgb2YgRU5P
VERJUgogIyBJdCBpcyBkZWZpbmVkIGluIHB5d2luMzIud2luZXJyb3IsIGJ1dCB3ZSBkb24ndCB3
YW50IGEgc3Ryb25nIGRlcGVuZGVuY3kgZm9yCiAjIGp1c3QgYW4gZXJyb3IgY29kZS4KK0VSUk9S
X1BBVEhfTk9UX0ZPVU5EID0gMwogRVJST1JfRElSRUNUT1JZID0gMjY3CiAKIApAQCAtNjY5LDcg
KzY3MCw2IEBACiAgICAgICAgICAgICBuZXdfZW50cnkgPSB0b19ibG9ja1sxXVthZGRlZF9lbnRy
eV9pbmRleF0KICAgICAgICAgICAgIHJvbGxiYWNrcy5hcHBlbmQobGFtYmRhOnN0YXRlLl9tYWtl
X2Fic2VudChuZXdfZW50cnkpKQogCi0gICAgICAgICMgY3JlYXRlIHJlbmFtZSBlbnRyaWVzIGFu
ZCB0dXBsZXMKICAgICAgICAgZm9yIGZyb21fcmVsIGluIGZyb21fcGF0aHM6CiAgICAgICAgICAg
ICAjIGZyb21fcmVsIGlzICdwYXRoaW5yb290L2Zvby9iYXInCiAgICAgICAgICAgICBmcm9tX3Jl
bF91dGY4ID0gZnJvbV9yZWwuZW5jb2RlKCd1dGY4JykKQEAgLTc3MywxMSArNzczLDcgQEAKIAog
ICAgICAgICAgICAgICAgIGlmIG1pbmlraW5kID09ICdkJzoKICAgICAgICAgICAgICAgICAgICAg
ZGVmIHVwZGF0ZV9kaXJibG9jayhmcm9tX2RpciwgdG9fa2V5LCB0b19kaXJfdXRmOCk6Ci0gICAg
ICAgICAgICAgICAgICAgICAgICAiIiJhbGwgZW50cmllcyBpbiB0aGlzIGJsb2NrIG5lZWQgdXBk
YXRpbmcuCi0KLSAgICAgICAgICAgICAgICAgICAgICAgIFRPRE86IFRoaXMgaXMgcHJldHR5IHVn
bHksIGFuZCBkb2Vzbid0IHN1cHBvcnQKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldmVydGlu
ZywgYnV0IGl0IHdvcmtzLgotICAgICAgICAgICAgICAgICAgICAgICAgIiIiCisgICAgICAgICAg
ICAgICAgICAgICAgICAiIiJSZWN1cnNpdmVseSB1cGRhdGUgYWxsIGVudHJpZXMgaW4gdGhpcyBk
aXJibG9jay4iIiIKICAgICAgICAgICAgICAgICAgICAgICAgIGFzc2VydCBmcm9tX2RpciAhPSAn
JywgInJlbmFtaW5nIHJvb3Qgbm90IHN1cHBvcnRlZCIKICAgICAgICAgICAgICAgICAgICAgICAg
IGZyb21fa2V5ID0gKGZyb21fZGlyLCAnJykKICAgICAgICAgICAgICAgICAgICAgICAgIGZyb21f
YmxvY2tfaWR4LCBwcmVzZW50ID0gXApAQCAtNzk0LDEzICs3OTAsMjEgQEAKICAgICAgICAgICAg
ICAgICAgICAgICAgIHRvX2Jsb2NrX2luZGV4ID0gc3RhdGUuX2Vuc3VyZV9ibG9jaygKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB0b19ibG9ja19pbmRleCwgdG9fZW50cnlfaW5kZXgsIHRv
X2Rpcl91dGY4KQogICAgICAgICAgICAgICAgICAgICAgICAgdG9fYmxvY2sgPSBzdGF0ZS5fZGly
YmxvY2tzW3RvX2Jsb2NrX2luZGV4XQotICAgICAgICAgICAgICAgICAgICAgICAgZm9yIGVudHJ5
IGluIGZyb21fYmxvY2tbMV06CisKKyAgICAgICAgICAgICAgICAgICAgICAgICMgR3JhYiBhIGNv
cHkgc2luY2UgbW92ZV9vbmUgbWF5IHVwZGF0ZSB0aGUgbGlzdC4KKyAgICAgICAgICAgICAgICAg
ICAgICAgIGZvciBlbnRyeSBpbiBmcm9tX2Jsb2NrWzFdWzpdOgogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGFzc2VydCBlbnRyeVswXVswXSA9PSBmcm9tX2RpcgogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGN1cl9kZXRhaWxzID0gZW50cnlbMV1bMF0KICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB0b19rZXkgPSAodG9fZGlyX3V0ZjgsIGVudHJ5WzBdWzFdLCBlbnRyeVswXVsy
XSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcm9tX3BhdGhfdXRmOCA9IG9zdXRpbHMu
cGF0aGpvaW4oZW50cnlbMF1bMF0sIGVudHJ5WzBdWzFdKQogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHRvX3BhdGhfdXRmOCA9IG9zdXRpbHMucGF0aGpvaW4odG9fZGlyX3V0ZjgsIGVudHJ5
WzBdWzFdKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1pbmlraW5kID0gY3VyX2RldGFp
bHNbMF0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBtaW5pa2luZCBpbiAnYXInOgor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIERlbGV0ZWQgY2hpbGRyZW4gb2YgYSBy
ZW5hbWVkIGRpcmVjdG9yeQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIERvIG5v
dCBuZWVkIHRvIGJlIHVwZGF0ZWQuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMg
Q2hpbGRyZW4gdGhhdCBoYXZlIGJlZW4gcmVuYW1lZCBvdXQgb2YgdGhpcworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAjIGRpcmVjdG9yeSBzaG91bGQgYWxzbyBub3QgYmUgdXBkYXRl
ZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZQogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIG1vdmVfb25lKGVudHJ5LCBmcm9tX3BhdGhfdXRmOD1mcm9tX3BhdGhf
dXRmOCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtaW5pa2luZD1taW5p
a2luZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleGVjdXRhYmxlPWN1
cl9kZXRhaWxzWzNdLApAQCAtMTI0NSw3ICsxMjQ5LDggQEAKICAgICAgICAgOnBhcmFtIHJldmlz
aW9uX2lkOiBhbGxvd3MgY3JlYXRpbmcgYSB3b3JraW5nIHRyZWUgYXQgYSBkaWZmZXJlbnQKICAg
ICAgICAgcmV2aXNpb24gdGhhbiB0aGUgYnJhbmNoIGlzIGF0LgogCi0gICAgICAgIFRoZXNlIHRy
ZWVzIGdldCBhbiBpbml0aWFsIHJhbmRvbSByb290IGlkLgorICAgICAgICBUaGVzZSB0cmVlcyBn
ZXQgYW4gaW5pdGlhbCByYW5kb20gcm9vdCBpZCwgaWYgdGhlaXIgcmVwb3NpdG9yeSBzdXBwb3J0
cworICAgICAgICByaWNoIHJvb3QgZGF0YSwgVFJFRV9ST09UIG90aGVyd2lzZS4KICAgICAgICAg
IiIiCiAgICAgICAgIHJldmlzaW9uX2lkID0gb3N1dGlscy5zYWZlX3JldmlzaW9uX2lkKHJldmlz
aW9uX2lkKQogICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShhX2J6cmRpci50cmFuc3BvcnQsIExv
Y2FsVHJhbnNwb3J0KToKQEAgLTEyNzMsNyArMTI3OCwxMCBAQAogICAgICAgICB3dC5jdXJyZW50
X2RpcnN0YXRlKCkuX3ZhbGlkYXRlKCkKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgaWYgcmV2
aXNpb25faWQgaW4gKE5vbmUsIE5VTExfUkVWSVNJT04pOgotICAgICAgICAgICAgICAgIHd0Ll9z
ZXRfcm9vdF9pZChnZW5lcmF0ZV9pZHMuZ2VuX3Jvb3RfaWQoKSkKKyAgICAgICAgICAgICAgICBp
ZiBicmFuY2gucmVwb3NpdG9yeS5zdXBwb3J0c19yaWNoX3Jvb3QoKToKKyAgICAgICAgICAgICAg
ICAgICAgd3QuX3NldF9yb290X2lkKGdlbmVyYXRlX2lkcy5nZW5fcm9vdF9pZCgpKQorICAgICAg
ICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIHd0Ll9zZXRfcm9vdF9pZChST09U
X0lEKQogICAgICAgICAgICAgICAgIHd0LmZsdXNoKCkKICAgICAgICAgICAgICAgICB3dC5jdXJy
ZW50X2RpcnN0YXRlKCkuX3ZhbGlkYXRlKCkKICAgICAgICAgICAgIHd0LnNldF9sYXN0X3Jldmlz
aW9uKHJldmlzaW9uX2lkKQpAQCAtMTkxNSw2ICsxOTIzLDkgQEAKICAgICAgICAgICAgICAgICAg
ICAgIyAgICAgICBwYXJlbnQgZW50cnkgd2lsbCBiZSB0aGUgc2FtZSBhcyB0aGUgc291cmNlIGVu
dHJ5LgogICAgICAgICAgICAgICAgICAgICB0YXJnZXRfcGFyZW50X2VudHJ5ID0gc3RhdGUuX2dl
dF9lbnRyeSh0YXJnZXRfaW5kZXgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHBhdGhfdXRmOD1uZXdfZGlybmFtZSkKKyAgICAgICAg
ICAgICAgICAgICAgYXNzZXJ0IHRhcmdldF9wYXJlbnRfZW50cnkgIT0gKE5vbmUsIE5vbmUpLCAo
CisgICAgICAgICAgICAgICAgICAgICAgICAiQ291bGQgbm90IGZpbmQgdGFyZ2V0IHBhcmVudCBp
biB3dDogJXNcbnBhcmVudCBvZjogJXMiCisgICAgICAgICAgICAgICAgICAgICAgICAlIChuZXdf
ZGlybmFtZSwgZW50cnkpKQogICAgICAgICAgICAgICAgICAgICB0YXJnZXRfcGFyZW50X2lkID0g
dGFyZ2V0X3BhcmVudF9lbnRyeVswXVsyXQogICAgICAgICAgICAgICAgICAgICBpZiB0YXJnZXRf
cGFyZW50X2lkID09IGVudHJ5WzBdWzJdOgogICAgICAgICAgICAgICAgICAgICAgICAgIyBUaGlz
IGlzIHRoZSByb290LCBzbyB0aGUgcGFyZW50IGlzIE5vbmUKQEAgLTIwODIsMTMgKzIwOTMsMTUg
QEAKICAgICAgICAgICAgICAgICAgICAgIyBweXRob24gMi41IGhhcyBlLmVycm5vID09IEVJTlZB
TCwKICAgICAgICAgICAgICAgICAgICAgIyAgICAgICAgICAgIGFuZCBlLndpbmVycm9yID09IEVS
Uk9SX0RJUkVDVE9SWQogICAgICAgICAgICAgICAgICAgICBlX3dpbmVycm9yID0gZ2V0YXR0cihl
LCAnd2luZXJyb3InLCBOb25lKQorICAgICAgICAgICAgICAgICAgICB3aW5fZXJyb3JzID0gKEVS
Uk9SX0RJUkVDVE9SWSwgRVJST1JfUEFUSF9OT1RfRk9VTkQpCiAgICAgICAgICAgICAgICAgICAg
ICMgdGhlcmUgbWF5IGJlIGRpcmVjdG9yaWVzIGluIHRoZSBpbnZlbnRvcnkgZXZlbiB0aG91Z2gK
ICAgICAgICAgICAgICAgICAgICAgIyB0aGlzIHBhdGggaXMgbm90IGEgZmlsZSBvbiBkaXNrOiBz
byBtYXJrIGl0IGFzIGVuZCBvZgogICAgICAgICAgICAgICAgICAgICAjIGl0ZXJhdG9yCiAgICAg
ICAgICAgICAgICAgICAgIGlmIGUuZXJybm8gaW4gKGVycm5vLkVOT0VOVCwgZXJybm8uRU5PVERJ
UiwgZXJybm8uRUlOVkFMKToKICAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRfZGlyX2lu
Zm8gPSBOb25lCiAgICAgICAgICAgICAgICAgICAgIGVsaWYgKHN5cy5wbGF0Zm9ybSA9PSAnd2lu
MzInCi0gICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBFUlJPUl9ESVJFQ1RPUlkgaW4gKGUu
ZXJybm8sIGVfd2luZXJyb3IpKToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgYW5kIChlLmVy
cm5vIGluIHdpbl9lcnJvcnMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvciBlX3dp
bmVycm9yIGluIHdpbl9lcnJvcnMpKToKICAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRf
ZGlyX2luZm8gPSBOb25lCiAgICAgICAgICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAg
ICAgICAgICAgICByYWlzZQpAQCAtMjEwOSwxNiArMjEyMiw0NSBAQAogICAgICAgICAgICAgICAg
ICAgIGN1cnJlbnRfYmxvY2sgaXMgbm90IE5vbmUpOgogICAgICAgICAgICAgICAgIGlmIChjdXJy
ZW50X2Rpcl9pbmZvIGFuZCBjdXJyZW50X2Jsb2NrCiAgICAgICAgICAgICAgICAgICAgIGFuZCBj
dXJyZW50X2Rpcl9pbmZvWzBdWzBdICE9IGN1cnJlbnRfYmxvY2tbMF0pOgotICAgICAgICAgICAg
ICAgICAgICBpZiBjdXJyZW50X2Rpcl9pbmZvWzBdWzBdIDwgY3VycmVudF9ibG9ja1swXSA6Cisg
ICAgICAgICAgICAgICAgICAgIGlmIGN1cnJlbnRfZGlyX2luZm9bMF1bMF0uc3BsaXQoJy8nKSA8
IGN1cnJlbnRfYmxvY2tbMF0uc3BsaXQoJy8nKToKICAgICAgICAgICAgICAgICAgICAgICAgICMg
ZmlsZXN5c3RlbSBkYXRhIHJlZmVycyB0byBwYXRocyBub3QgY292ZXJlZCBieSB0aGUgZGlyYmxv
Y2suCiAgICAgICAgICAgICAgICAgICAgICAgICAjIHRoaXMgaGFzIHR3byBwb3NzaWJpbGl0aWVz
OgogICAgICAgICAgICAgICAgICAgICAgICAgIyBBKSBpdCBpcyB2ZXJzaW9uZWQgYnV0IGVtcHR5
LCBzbyB0aGVyZSBpcyBubyBibG9jayBmb3IgaXQKICAgICAgICAgICAgICAgICAgICAgICAgICMg
QikgaXQgaXMgbm90IHZlcnNpb25lZC4KLSAgICAgICAgICAgICAgICAgICAgICAgICMgaW4gZWl0
aGVyIGNhc2UgaXQgd2FzIHByb2Nlc3NlZCBieSB0aGUgY29udGFpbmluZyBkaXJlY3RvcmllcyB3
YWxrOgotICAgICAgICAgICAgICAgICAgICAgICAgIyBpZiBpdCBpcyByb290L2Zvbywgd2hlbiB3
ZSB3YWxrZWQgcm9vdCB3ZSBlbWl0dGVkIGl0LAotICAgICAgICAgICAgICAgICAgICAgICAgIyBv
ciBpZiB3ZSBlcmUgZ2l2ZW4gcm9vdC9mb28gdG8gd2FsayBzcGVjaWZpY2FsbHksIHdlCi0gICAg
ICAgICAgICAgICAgICAgICAgICAjIGVtaXR0ZWQgaXQgd2hlbiBjaGVja2luZyB0aGUgd2Fsay1y
b290IGVudHJpZXMKLSAgICAgICAgICAgICAgICAgICAgICAgICMgYWR2YW5jZSB0aGUgaXRlcmF0
b3IgYW5kIGxvb3AgLSB3ZSBkb250IG5lZWQgdG8gZW1pdCBpdC4KKworICAgICAgICAgICAgICAg
ICAgICAgICAgIyBpZiAoQSkgdGhlbiB3ZSBuZWVkIHRvIHJlY3Vyc2UgaW50byBpdCB0byBjaGVj
ayBmb3IKKyAgICAgICAgICAgICAgICAgICAgICAgICMgbmV3IHVua25vd24gZmlsZXMgb3IgZGly
ZWN0b3JpZXMuCisgICAgICAgICAgICAgICAgICAgICAgICAjIGlmIChCKSB0aGVuIHdlIHNob3Vs
ZCBpZ25vcmUgaXQsIGJlY2F1c2Ugd2UgZG9uJ3QKKyAgICAgICAgICAgICAgICAgICAgICAgICMg
cmVjdXJzZSBpbnRvIHVua25vd24gZGlyZWN0b3JpZXMuCisgICAgICAgICAgICAgICAgICAgICAg
ICBwYXRoX2luZGV4ID0gMAorICAgICAgICAgICAgICAgICAgICAgICAgd2hpbGUgcGF0aF9pbmRl
eCA8IGxlbihjdXJyZW50X2Rpcl9pbmZvWzFdKToKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY3VycmVudF9wYXRoX2luZm8gPSBjdXJyZW50X2Rpcl9pbmZvWzFdW3BhdGhfaW5kZXhd
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIHdhbnRfdW52ZXJzaW9uZWQ6Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBjdXJyZW50X3BhdGhfaW5mb1sy
XSA9PSAnZGlyZWN0b3J5JzoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBpZiBzZWxmLnRhcmdldC5fZGlyZWN0b3J5X2lzX3RyZWVfcmVmZXJlbmNlKAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXJyZW50X3BhdGhfaW5mb1swXS5k
ZWNvZGUoJ3V0ZjgnKSk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGN1cnJlbnRfcGF0aF9pbmZvID0gY3VycmVudF9wYXRoX2luZm9bOjJdICsgXAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCd0cmVlLXJlZmVyZW5j
ZScsKSArIGN1cnJlbnRfcGF0aF9pbmZvWzM6XQorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgbmV3X2V4ZWN1dGFibGUgPSBib29sKAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHN0YXQuU19JU1JFRyhjdXJyZW50X3BhdGhfaW5mb1szXS5zdF9tb2Rl
KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBzdGF0LlNfSUVY
RUMgJiBjdXJyZW50X3BhdGhfaW5mb1szXS5zdF9tb2RlKQorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgeWllbGQgKE5vbmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgKE5vbmUsIHV0ZjhfZGVjb2RlX29yX25vbmUoY3VycmVudF9wYXRoX2luZm9b
MF0pKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUcnVlLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChGYWxzZSwgRmFsc2UpLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChOb25lLCBOb25lKSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoTm9uZSwgdXRmOF9kZWNvZGVfb3Jf
bm9uZShjdXJyZW50X3BhdGhfaW5mb1sxXSkpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIChOb25lLCBjdXJyZW50X3BhdGhfaW5mb1syXSksCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgKE5vbmUsIG5ld19leGVjdXRhYmxlKSkKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBkb250IGRlc2NlbmQgaW50byB0aGlzIHVudmVy
c2lvbmVkIHBhdGggaWYgaXQgaXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBh
IGRpcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBjdXJyZW50X3BhdGhfaW5m
b1syXSBpbiAoJ2RpcmVjdG9yeScsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAndHJlZS1yZWZlcmVuY2UnKToKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGRlbCBjdXJyZW50X2Rpcl9pbmZvWzFdW3BhdGhfaW5k
ZXhdCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRoX2luZGV4IC09IDEK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aF9pbmRleCArPSAxCisKKyAgICAg
ICAgICAgICAgICAgICAgICAgICMgVGhpcyBkaXIgaW5mbyBoYXMgYmVlbiBoYW5kbGVkLCBnbyB0
byB0aGUgbmV4dAogICAgICAgICAgICAgICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGN1cnJlbnRfZGlyX2luZm8gPSBkaXJfaXRlcmF0b3IubmV4dCgpCiAgICAg
ICAgICAgICAgICAgICAgICAgICBleGNlcHQgU3RvcEl0ZXJhdGlvbjoKQEAgLTIyMTQsOCArMjI1
NiwxNCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0WzZd
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0WzddLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApCi0gICAgICAgICAgICAgICAgICAg
IGVsaWYgY3VycmVudF9lbnRyeVswXVsxXSAhPSBjdXJyZW50X3BhdGhfaW5mb1sxXToKLSAgICAg
ICAgICAgICAgICAgICAgICAgIGlmIGN1cnJlbnRfcGF0aF9pbmZvWzFdIDwgY3VycmVudF9lbnRy
eVswXVsxXToKKyAgICAgICAgICAgICAgICAgICAgZWxpZiAoY3VycmVudF9lbnRyeVswXVsxXSAh
PSBjdXJyZW50X3BhdGhfaW5mb1sxXQorICAgICAgICAgICAgICAgICAgICAgICAgICBvciBjdXJy
ZW50X2VudHJ5WzFdW3RhcmdldF9pbmRleF1bMF0gaW4gJ2FyJyk6CisgICAgICAgICAgICAgICAg
ICAgICAgICAjIFRoZSBjdXJyZW50IHBhdGggb24gZGlzayBkb2Vzbid0IG1hdGNoIHRoZSBkaXJi
bG9jaworICAgICAgICAgICAgICAgICAgICAgICAgIyByZWNvcmQuIEVpdGhlciB0aGUgZGlyYmxv
Y2sgaXMgbWFya2VkIGFzIGFic2VudCwgb3IKKyAgICAgICAgICAgICAgICAgICAgICAgICMgdGhl
IGZpbGUgb24gZGlzayBpcyBub3QgcHJlc2VudCBhdCBhbGwgaW4gdGhlCisgICAgICAgICAgICAg
ICAgICAgICAgICAjIGRpcmJsb2NrLiBFaXRoZXIgd2F5LCByZXBvcnQgYWJvdXQgdGhlIGRpcmJs
b2NrCisgICAgICAgICAgICAgICAgICAgICAgICAjIGVudHJ5LCBhbmQgbGV0IG90aGVyIGNvZGUg
aGFuZGxlIHRoZSBmaWxlc3lzdGVtIG9uZS4KKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIGN1
cnJlbnRfcGF0aF9pbmZvWzFdLnNwbGl0KCcvJykgPCBjdXJyZW50X2VudHJ5WzBdWzFdLnNwbGl0
KCcvJyk6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBleHRyYSBmaWxlIG9uIGRpc2s6
IHBhc3MgZm9yIG5vdywgYnV0IG9ubHkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIGlu
Y3JlbWVudCB0aGUgcGF0aCwgbm90IHRoZSBlbnRyeQogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGFkdmFuY2VfZW50cnkgPSBGYWxzZQpAQCAtMjIyNiw3ICsyMjc0LDYgQEAKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIyB0aGlzIGNoZWNrIHNob3VsZCBwcm9iYWJseSBiZSBv
dXRzaWRlIHRoZSBsb29wOiBvbmUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyAn
aXRlcmF0ZSB0d28gdHJlZXMnIGFwaSwgYW5kIHRoZW4gX2l0ZXJfY2hhbmdlcyBmaWx0ZXJzCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgdW5jaGFuZ2VkIHBhaXJzLiAtIFJCQyAy
MDA3MDIyNgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRoX2hhbmRsZWQgPSBU
cnVlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpbmNsdWRlX3VuY2hhbmdl
ZAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3IgcmVzdWx0WzJdICAgICAg
ICAgICAgICAgICAgICAjIGNvbnRlbnQgY2hhbmdlCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBvciByZXN1bHRbM11bMF0gIT0gcmVzdWx0WzNdWzFdICMgdmVyc2lvbmVkIHN0
YXR1cwpAQCAtMjI4NywxNSArMjMzNCwxNCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBuZXdfZXhlY3V0YWJsZSA9IGJvb2woCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBzdGF0LlNfSVNSRUcoY3VycmVudF9wYXRoX2luZm9bM10uc3RfbW9kZSkKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBzdGF0LlNfSUVYRUMgJiBjdXJyZW50
X3BhdGhfaW5mb1szXS5zdF9tb2RlKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBp
ZiB3YW50X3VudmVyc2lvbmVkOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
eWllbGQgKE5vbmUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKE5v
bmUsIHV0ZjhfZGVjb2RlX29yX25vbmUoY3VycmVudF9wYXRoX2luZm9bMF0pKSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUcnVlLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIChGYWxzZSwgRmFsc2UpLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIChOb25lLCBOb25lKSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAoTm9uZSwgdXRmOF9kZWNvZGVfb3Jfbm9uZShjdXJyZW50X3Bh
dGhfaW5mb1sxXSkpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChO
b25lLCBjdXJyZW50X3BhdGhfaW5mb1syXSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgKE5vbmUsIG5ld19leGVjdXRhYmxlKSkKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgeWllbGQgKE5vbmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAoTm9uZSwgdXRmOF9kZWNvZGVfb3Jfbm9uZShjdXJyZW50X3BhdGhfaW5mb1swXSkpLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVHJ1ZSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIChGYWxzZSwgRmFsc2UpLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgKE5vbmUsIE5vbmUpLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgKE5vbmUsIHV0ZjhfZGVjb2RlX29yX25vbmUoY3VycmVudF9wYXRoX2luZm9b
MV0pKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChOb25lLCBjdXJyZW50
X3BhdGhfaW5mb1syXSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoTm9u
ZSwgbmV3X2V4ZWN1dGFibGUpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgZG9udCBk
ZXNjZW5kIGludG8gdGhpcyB1bnZlcnNpb25lZCBwYXRoIGlmIGl0IGlzCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIyBhIGRpcgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIGN1
cnJlbnRfcGF0aF9pbmZvWzJdIGluICgnZGlyZWN0b3J5Jyk6Cgo=

=== modified file doc/centralized_workflow.txt // last-changed:robertc@robertco
... llins.net-20070507165517-xbsjn40to6rw3w5e // encoding:base64
LS0tIGRvYy9jZW50cmFsaXplZF93b3JrZmxvdy50eHQKKysrIGRvYy9jZW50cmFsaXplZF93b3Jr
Zmxvdy50eHQKQEAgLTIzNSw3ICsyMzUsNyBAQAogCiAgICAlIGJ6ciBjYnJhbmNoIGRldiBteS1m
ZWF0dXJlLWJyYW5jaAogCi0uLiBfYnpydG9vbHM6IGh0dHBzOi8vbGF1bmNocGFkLm5ldC9wcm9k
dWN0cy9ienJ0b29scworLi4gX2J6cnRvb2xzOiBodHRwOi8vYmF6YWFyLXZjcy5vcmcvQnpyVG9v
bHMKIAogCiBNZXJnaW5nIGNoYW5nZXMgYmFjawoK

=== modified file doc/configuration.txt // last-changed:jml@canonical.com-20070
... 423013035-zuqiamuro8h1hba9 // encoding:base64
LS0tIGRvYy9jb25maWd1cmF0aW9uLnR4dAorKysgZG9jL2NvbmZpZ3VyYXRpb24udHh0CkBAIC0x
MzksNyArMTM5LDcgQEAKICAgICBUaGUgZ251cGcgc2lnbmF0dXJlIGZvciByZXZpc2lvbnMgbXVz
dCBiZSBwcmVzZW50IGFuZCBtdXN0IGJlIHZhbGlkLgogCiBpZ25vcmUKLSAgICBEbyBub3QgY2hl
Y2sgZ251cGcgc2lnbmF0dXJlcyBvZiByZXZpc2lvbnMuIAorICAgIERvIG5vdCBjaGVjayBnbnVw
ZyBzaWduYXR1cmVzIG9mIHJldmlzaW9ucy4KIAogY2hlY2stYXZhaWxhYmxlCiAgICAgKGRlZmF1
bHQpIElmIGdudXBnIHNpZ25hdHVyZXMgZm9yIHJldmlzaW9ucyBhcmUgcHJlc2VudCwgY2hlY2sg
dGhlbS4KQEAgLTE3MSw3ICsxNzEsNyBAQAogCiBmYWxzZQogICAgIFRoaXMgc2VjdGlvbiBvbmx5
IGFwcGxpZXMgdG8gdGhlIGJyYW5jaCBhdCB0aGlzIGRpcmVjdG9yeSBhbmQgbm90Ci0gICAgYnJh
bmNoZXMgYmVsb3cgaXQuIAorICAgIGJyYW5jaGVzIGJlbG93IGl0LgogCiBncGdfc2lnbmluZ19j
b21tYW5kCiAtLS0tLS0tLS0tLS0tLS0tLS0tCkBAIC0yMTUsMyArMjE1LDM0IEBACiAtLS0tLQog
SWYgc2V0IHRvICJUcnVlIiwgdGhlIGJyYW5jaCBzaG91bGQgYWN0IGFzIGEgY2hlY2tvdXQsIGFu
ZCBwdXNoIGVhY2ggY29tbWl0IHRvCiB0aGUgYm91bmRfbG9jYXRpb24uICBUaGlzIG9wdGlvbiBp
cyBub3JtYWxseSBzZXQgYnkgYGBiaW5kYGAvYGB1bmJpbmRgYC4KKworCitCdWcgVHJhY2tlciBP
cHRpb25zCis9PT09PT09PT09PT09PT09PT09CisKK1RoZXNlIG9wdGlvbnMgY2FuIGdvIGludG8g
YmF6YWFyLmNvbmYsIGJyYW5jaC5jb25mIG9yIGludG8gYSBicmFuY2gtc3BlY2lmaWMKK2NvbmZp
Z3VyYXRpb24gc2VjdGlvbiBpbiBsb2NhdGlvbnMuY29uZi4KKworYnVnemlsbGFfPHRyYWNrZXJf
YWJicmV2aWF0aW9uPl91cmwKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitJ
ZiBwcmVzZW50LCB0aGUgbG9jYXRpb24gb2YgdGhlIEJ1Z3ppbGxhIGJ1ZyB0cmFja2VyIHJlZmVy
cmVkIHRvIGJ5Cis8dHJhY2tlcl9hYmJyZXZpYXRpb24+LiBUaGlzIG9wdGlvbiBjYW4gdGhlbiBi
ZSB1c2VkIHRvZ2V0aGVyIHdpdGggYGBienIgY29tbWl0CistLWZpeGVzYGAgdG8gbWFyayBidWdz
IGluIHRoYXQgdHJhY2tlciBhcyBiZWluZyBmaXhlZCBieSB0aGF0IGNvbW1pdC4gRm9yCitleGFt
cGxlOjoKKworICAgIGJ1Z3ppbGxhX3NxdWlkX3VybCA9IGh0dHA6Ly93d3cuc3F1aWQtY2FjaGUu
b3JnL2J1Z3MKKword291bGQgYWxsb3cgYGBienIgY29tbWl0IC0tZml4ZXMgc3F1aWQ6MTIzNGBg
IHRvIG1hcmsgU3F1aWQncyBidWcgMTIzNCBhcworZml4ZWQuCisKK3RyYWNfPHRyYWNrZXJfYWJi
cmV2YXRpb24+X3VybAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitJZiBwcmVzZW50
LCB0aGUgbG9jYXRpb24gb2YgdGhlIFRyYWMgaW5zdGFuY2UgcmVmZXJyZWQgdG8gYnkKKzx0cmFj
a2VyX2FiYnJldmlhdGlvbj4uIFRoaXMgb3B0aW9uIGNhbiB0aGVuIGJlIHVzZWQgdG9nZXRoZXIg
d2l0aCBgYGJ6ciBjb21taXQKKy0tZml4ZXNgYCB0byBtYXJrIGJ1Z3MgaW4gdGhhdCB0cmFja2Vy
IGFzIGJlaW5nIGZpeGVkIGJ5IHRoYXQgY29tbWl0LiBGb3IKK2V4YW1wbGU6OgorCisgICAgdHJh
Y190d2lzdGVkX3VybCA9IGh0dHA6Ly93d3cudHdpc3RlZG1hdHJpeC5jb20vdHJhYworCit3b3Vs
ZCBhbGxvdyBgYGJ6ciBjb21taXQgLS1maXhlcyB0d2lzdGVkOjEyMzRgYCB0byBtYXJrIFR3aXN0
ZWQncyBidWcgMTIzNCBhcworZml4ZWQuCgo=

=== modified file doc/default.css // last-changed:mbp@sourcefrog.net-2007050306
... 2149-mkf0na5ce8j3rpzm // encoding:base64
LS0tIGRvYy9kZWZhdWx0LmNzcworKysgZG9jL2RlZmF1bHQuY3NzCkBAIC05LDcgKzksNyBAQAog
ICBtYXJnaW4tYm90dG9tOiA3MHB4OwogICBmb250LWZhbWlseTogVmVyZGFuYSwgR2VuZXZhLCBB
cmlhbCwgc2Fucy1zZXJpZjsKICAgZm9udC1zaXplOiBzbWFsbDsKLSAgbGluZS1oZWlnaHQ6IDE4
MCUKKyAgbGluZS1oZWlnaHQ6IDE0MCUKICAgfQogCiAvKiBwIHsKQEAgLTExMSw2ICsxMTEsNyBA
QAogCiB0dCwgLmxpdGVyYWwtYmxvY2sgewogICBmb250LWZhbWlseTogbW9ub3NwYWNlOworICBs
aW5lLWhlaWdodDogMTAwJQogICB9CiAKIHR0IHsKQEAgLTEyMCw2ICsxMjEsNyBAQAogCiAubGl0
ZXJhbC1ibG9jayB7CiAgIG1hcmdpbi1sZWZ0OiA1ZW07CisgIG1hcmdpbi1yaWdodDogNWVtOwog
ICBjb2xvcjogIzAwMDAwMDsKICAgZm9udC13ZWlnaHQ6IG5vcm1hbDsKICAgYmFja2dyb3VuZC1j
b2xvcjogI2MxZDFmZjsKCg==

=== modified file doc/index.txt // last-changed:robertc@robertcollins.net-20070
... 508041401-rreosr07ptz41d6c // encoding:base64
LS0tIGRvYy9pbmRleC50eHQKKysrIGRvYy9pbmRleC50eHQKQEAgLTUxLDYgKzUxLDEwIEBACiAK
ICAgICBIb3cgdG8gcnVuIGEgc21hcnQgSFRUUCBzZXJ2ZXIgdG8gYWxsb3cgcmVtb3RlIGFjY2Vz
cyB0byBCYXphYXIgYnJhbmNoZXMuCiAKKyogYEd1aWRlbGluZXMgZm9yIG1vZGlmeWluZyBienIg
PGRldmVsb3BlcnMvaW5kZXguaHRtPmBfCisKKyAgICBHdWlkZSB0byBwb2xpY2llcyBhbmQgdG9v
bHMgZm9yIHdvcmtpbmcgb24gQmF6YWFyIGl0c2VsZi4KKwogVGhpcyBkb2N1bWVudCBhdXRvbWF0
aWNhbGx5IGNyZWF0ZWQgYmFzZWQgb24gb3V0cHV0IG9mICoqYnpyIGhlbHAqKjoKIAogKiBgTWFu
IHBhZ2UgKGhlbHAgZm9yIGJ6ciBjb21tYW5kcykgPGJ6cl9tYW4uaHRtPmBfCgo=

=== modified file doc/server.txt // last-changed:robertc@robertcollins.net-2007
... 0423063616-t7d6fihs0zb93s5u // encoding:base64
LS0tIGRvYy9zZXJ2ZXIudHh0CisrKyBkb2Mvc2VydmVyLnR4dApAQCAtMTYsMTcgKzE2LDE2IEBA
CiAKICAgICBienIgbG9nIGh0dHA6Ly9iYXphYXItdmNzLm9yZy9ienIvYnpyLmRldgogCi1CYXph
YXIgc3VwcG9ydHMgd3JpdGluZyBvdmVyIEZUUCwgU0ZUUCBhbmQgdmlhIGEgcGx1Z2luIG92ZXIg
SFRUUC1XZWJEQVYuCitCYXphYXIgc3VwcG9ydHMgd3JpdGluZyBvdmVyIEZUUCwgU0ZUUCBhbmQg
KHZpYSBhIHBsdWdpbikgb3ZlciBIVFRQLVdlYkRBVi4KIAogSGlnaC1wZXJmb3JtYW5jZSBzZXJ2
ZXIKID09PT09PT09PT09PT09PT09PT09PT09CiAKLSoqSW4gZGV2ZWxvcG1lbnQqKgotCi1UaGUg
aGlnaC1wZXJmb3JtYW5jZSBzZXJ2ZXIgaXMgY3VycmVudGx5IGluIGRldmVsb3BtZW50LiAgVGhl
IHZlcnNpb24gb2YgQmF6YWFyCi10aGF0IGFjY29tcGFuaWVzIHRoaXMgZG9jdW1lbnRhdGlvbiBp
cyBhYmxlIHRvIHVzZSB0aGUgc2VydmVycyB1bmRlcmx5aW5nCi1wcm90b2NvbCBhcyBhIGR1bWIg
c2VydmVyLiAgVGhpcyBpcyB0aGUgZmlyc3Qgc3RhZ2UgaGlnaC1wZXJmb3JtYW5jZSBzZXJ2ZXIK
LWZ1bmN0aW9uYWxpdHkgdG8gYmUgZGVsaXZlcmVkLgorVGhlIGhpZ2gtcGVyZm9ybWFuY2Ugc2Vy
dmVyIGlzIGN1cnJlbnRseSBpbiBkZXZlbG9wbWVudC4gIEl0IHByb3ZpZGVzIGEgZHVtYgorc2Vy
dmVyIGZhY2lsaXR5IGFzIHdlbGwgYXMgYWRkaXRpb25hbCBjYXBhYmlsaXRpZXMgd2hpY2ggYWxs
b3cgdGhlIHZlcnNpb24gb2YKK2J6ciB0aGF0IGFjY29tcGFuaWVzIHRoaXMgZG9jdW1lbnRhdGlv
biB0byBwZXJmb3JtIHNvbWUgb3BlcmF0aW9ucyBtdWNoIGZhc3RlcgordGhhbiB2aWEgZHVtYiBz
ZXJ2ZXJzLiAgSW4gZnV0dXJlIHJlbGVhc2VzIG9mIGJ6ciB0aGUgcmFuZ2Ugb2Ygb3BlcmF0aW9u
cyB0aGF0CithcmUgaW1wcm92ZWQgYnkgdXNpbmcgdGhlIGhpZ2gtcGVyZm9ybWFuY2Ugc2VydmVy
IHdpbGwgaW5jcmVhc2UuCiAKIFRvIG1haW50YWluIHRoZSBoaWdoZXN0IHNlY3VyaXR5IHBvc3Np
YmxlLCB0aGUgY3VycmVudAogaGlnaC1wZXJmb3JtYW5jZSBzZXJ2ZXIgcHJvdmlkZXMgcmVhZC1v
bmx5IGFjY2VzcyBieSBkZWZhdWx0LiAgVG8KQEAgLTQ5LDcgKzQ4LDggQEAKIAogVGhlIGBgYnpy
K3NzaDovL2BgIFVSTCBzY2hlbWUgb25seSBzdXBwb3J0cyBhYnNvbHV0ZSBwYXRocyBmcm9tIHRo
ZQogcm9vdCBvZiB0aGUgZmlsZXN5c3RlbS4gIEZ1dHVyZSB2ZXJzaW9ucyBhcmUgZXhwZWN0ZWQg
dG8gc3VwcG9ydCBgYH5gYAotaW4gdGhlIHNhbWUgd2F5IGFzIGBgc2Z0cDovL2BgIFVSTHMuCitp
biB0aGUgc2FtZSB3YXkgYXMgYGBzZnRwOi8vYGAgVVJMcworKGh0dHBzOi8vYnVncy5sYXVuY2hw
YWQubmV0L2J6ci8rYnVnLzEwOTE0MykuCiAKIGluZXRkCiAtLS0tLQpAQCAtNjAsMTIgKzYwLDEy
IEBACiAKIFJ1bm5pbmcgYSBCYXphYXIgc2VydmVyIGZyb20gaW5ldGQgcmVxdWlyZXMgYW4gaW5l
dGQuY29uZiBlbnRyeTo6CiAKLSAgICAxMjM0ICBzdHJlYW0gIHRjcCAgbm93YWl0ICBienJ1c2Vy
ICAvdXNyL2Jpbi9ienIgc2VydmUgLS1pbmV0IC0tZGlyZWN0b3J5PS9zcnYvYnpyL3JlcG8KKyAg
ICA0MTU1ICBzdHJlYW0gIHRjcCAgbm93YWl0ICBienJ1c2VyICAvdXNyL2Jpbi9ienIgc2VydmUg
LS1pbmV0IC0tZGlyZWN0b3J5PS9zcnYvYnpyL3JlcG8KIAogV2hlbiBydW5uaW5nIGNsaWVudCBj
b21tYW5kcywgdGhlIFVSTCB5b3Ugc3VwcGx5IGlzIGEgYGJ6cjovL2AgVVJMIHJlbGF0aXZlIHRv
CiB0aGUgYGAtLWRpcmVjdG9yeWBgIG9wdGlvbiBnaXZlbiBpbiBpbmV0ZC5jb25mOjoKIAotICAg
IGJ6ciBsb2cgYnpyOi8vaG9zdDoxMjM0L2JyYW5jaG5hbWUKKyAgICBienIgbG9nIGJ6cjovL2hv
c3QvYnJhbmNobmFtZQogCiBEZWRpY2F0ZWQKIC0tLS0tLS0tLQpAQCAtODIsMyArODIsOSBAQAog
CiAgICAgYnpyIGxvZyBienI6Ly9ob3N0OjEyMzQvYnJhbmNobmFtZQogCitUaGlzIGV4YW1wbGUg
cnVucyBienIgb24gaXRzIG9mZmljaWFsIHBvcnQgbnVtYmVyIG9mIGA0MTU1YCBhbmQgbGlzdGVu
cyBvbiBhbGwKK2ludGVyZmFjZXMuIFRoaXMgYWxsb3dzIGNvbm5lY3Rpb25zIGZyb20gYW55d2hl
cmUgaW4gdGhlIHdvcmxkIHRoYXQgY2FuIHJlYWNoCit5b3VyIG1hY2hpbmUgb24gcG9ydCBgNDE1
NWAuCisKK3NlcnZlcjo6CisgICAgYnpyIHNlcnZlIC0tZGlyZWN0b3J5PS9zcnYvYnpyL3JlcG8K
Cg==

=== modified file setup.py // last-changed:robertc@robertcollins.net-2007031123
... 3427-z8skxqrx8shqy1de // executable:yes // encoding:base64
LS0tIHNldHVwLnB5CisrKyBzZXR1cC5weQpAQCAtMTQ3LDYgKzE0NywyNSBAQAogIyMgU2V0dXAK
ICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogCitjb21tYW5kX2NsYXNzZXMgPSB7J2luc3RhbGxf
c2NyaXB0cyc6IG15X2luc3RhbGxfc2NyaXB0cywKKyAgICAgICAgICAgICAgICAgICdidWlsZCc6
IGJ6cl9idWlsZH0KK2V4dF9tb2R1bGVzID0gW10KK3RyeToKKyAgICBmcm9tIFB5cmV4LkRpc3R1
dGlscyBpbXBvcnQgYnVpbGRfZXh0CitleGNlcHQgSW1wb3J0RXJyb3I6CisgICAgIyB0cnkgdG8g
YnVpbGQgdGhlIGV4dGVuc2lvbiBmcm9tIHRoZSBwcmlvciBnZW5lcmF0ZWQgc291cmNlLgorICAg
IHByaW50ICgiUHlyZXggbm90IGF2YWlsYWJsZSwgd2hpbGUgYnpyIHdpbGwgYnVpbGQsICIKKyAg
ICAgICAgICAgInlvdSBjYW5ub3QgbW9kaWZ5IHRoZSBDIGV4dGVuc2lvbnMuIikKKyAgICBmcm9t
IGRpc3R1dGlscy5jb21tYW5kLmJ1aWxkX2V4dCBpbXBvcnQgYnVpbGRfZXh0CisgICAgZnJvbSBk
aXN0dXRpbHMuZXh0ZW5zaW9uIGltcG9ydCBFeHRlbnNpb24KKyAgICAjZXh0X21vZHVsZXMuYXBw
ZW5kKAorICAgICMgICAgRXh0ZW5zaW9uKCJienJsaWIubW9kdWxlbmFtZSIsIFsiYnpybGliL2Zv
by5jIl0sIGxpYnJhcmllcyA9IFtdKSkKK2Vsc2U6CisgICAgZnJvbSBkaXN0dXRpbHMuZXh0ZW5z
aW9uIGltcG9ydCBFeHRlbnNpb24KKyAgICAjZXh0X21vZHVsZXMuYXBwZW5kKAorICAgICMgICAg
RXh0ZW5zaW9uKCJienJsaWIubW9kdWxlbmFtZSIsIFsiYnpybGliL2Zvby5weXgiXSwgbGlicmFy
aWVzID0gW10pKQorY29tbWFuZF9jbGFzc2VzWydidWlsZF9leHQnXSA9IGJ1aWxkX2V4dAorCiBp
ZiAnYmRpc3Rfd2luaW5zdCcgaW4gc3lzLmFyZ3Y6CiAgICAgaW1wb3J0IGdsb2IKICAgICAjIGRv
YyBmaWxlcwpAQCAtMjE4LDkgKzIzNyw4IEBACiAgICAgIyBzdGQgc2V0dXAKICAgICBBUkdTID0g
eydzY3JpcHRzJzogWydienInXSwKICAgICAgICAgICAgICdkYXRhX2ZpbGVzJzogWygnbWFuL21h
bjEnLCBbJ2J6ci4xJ10pXSwKLSAgICAgICAgICAgICdjbWRjbGFzcyc6IHsnYnVpbGQnOiBienJf
YnVpbGQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgJ2luc3RhbGxfc2NyaXB0cyc6IG15X2lu
c3RhbGxfc2NyaXB0cywKLSAgICAgICAgICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAn
Y21kY2xhc3MnOiBjb21tYW5kX2NsYXNzZXMsCisgICAgICAgICAgICAnZXh0X21vZHVsZXMnOiBl
eHRfbW9kdWxlcywKICAgICAgICAgICAgfQogICAgIAogICAgIEFSR1MudXBkYXRlKE1FVEFfSU5G
TykKCg==

=== modified file tools/doc_generate/autodoc_man.py // last-changed:robertc@rob
... ertcollins.net-20070423014105-tzsvtqg3rurfksv8 // encoding:base64
LS0tIHRvb2xzL2RvY19nZW5lcmF0ZS9hdXRvZG9jX21hbi5weQorKysgdG9vbHMvZG9jX2dlbmVy
YXRlL2F1dG9kb2NfbWFuLnB5CkBAIC04MCw3ICs4MCw3IEBACiAgICAgICAgIGNtZF9oZWxwID0g
Y21kX29iamVjdC5oZWxwKCkKICAgICAgICAgaWYgY21kX2hlbHA6CiAgICAgICAgICAgICBmaXJz
dGxpbmUgPSBjbWRfaGVscC5zcGxpdCgnXG4nLCAxKVswXQotICAgICAgICAgICAgdXNhZ2UgPSBi
enJsaWIuaGVscC5jb21tYW5kX3VzYWdlKGNtZF9vYmplY3QpCisgICAgICAgICAgICB1c2FnZSA9
IGNtZF9vYmplY3QuX3VzYWdlKCkKICAgICAgICAgICAgIHRtcCA9ICcuVFBcbi5CICIlcyJcbiVz
XG4nICUgKHVzYWdlLCBmaXJzdGxpbmUpCiAgICAgICAgICAgICBvdXRwdXQgPSBvdXRwdXQgKyB0
bXAKICAgICAgICAgZWxzZToKQEAgLTEwMSw3ICsxMDEsNyBAQAogCiBkZWYgZm9ybWF0X2NvbW1h
bmQgKHBhcmFtcywgY21kKToKICAgICAiIiJQcm92aWRlcyBsb25nIGhlbHAgZm9yIGVhY2ggcHVi
bGljIGNvbW1hbmQiIiIKLSAgICBzdWJzZWN0aW9uX2hlYWRlciA9ICcuU1MgIiVzIlxuJyAlIChi
enJsaWIuaGVscC5jb21tYW5kX3VzYWdlKGNtZCkpCisgICAgc3Vic2VjdGlvbl9oZWFkZXIgPSAn
LlNTICIlcyJcbicgJSAoY21kLl91c2FnZSgpKQogICAgIGRvYyA9ICIlc1xuIiAlIChjbWQuX19k
b2NfXykKICAgICBkb2MgPSBjbWQuaGVscCgpCiAKQEAgLTEzMSw3ICsxMzEsMTQgQEAKICAgICAg
ICAgYWxpYXNlc19zdHIgKz0gJywgJy5qb2luKGNtZC5hbGlhc2VzKQogICAgICAgICBhbGlhc2Vz
X3N0ciArPSAnXG4nCiAKLSAgICByZXR1cm4gc3Vic2VjdGlvbl9oZWFkZXIgKyBvcHRpb25fc3Ry
ICsgYWxpYXNlc19zdHIgKyAiXG4iICsgZG9jICsgIlxuIgorICAgIHNlZV9hbHNvX3N0ciA9ICIi
CisgICAgc2VlX2Fsc28gPSBjbWQuZ2V0X3NlZV9hbHNvKCkKKyAgICBpZiBzZWVfYWxzbzoKKyAg
ICAgICAgc2VlX2Fsc29fc3RyICs9ICdcblNlZSBhbHNvOiAnCisgICAgICAgIHNlZV9hbHNvX3N0
ciArPSAnLCAnLmpvaW4oc2VlX2Fsc28pCisgICAgICAgIHNlZV9hbHNvX3N0ciArPSAnXG4nCisK
KyAgICByZXR1cm4gc3Vic2VjdGlvbl9oZWFkZXIgKyBvcHRpb25fc3RyICsgYWxpYXNlc19zdHIg
KyBzZWVfYWxzb19zdHIgKyAiXG4iICsgZG9jICsgIlxuIgogCiAKIG1hbl9wcmVhbWJsZSA9ICIi
IlwKCg==

=== modified file tools/doc_generate/autodoc_rstx.py // last-changed:robertc@ro
... bertcollins.net-20070423014105-tzsvtqg3rurfksv8 // encoding:base64
LS0tIHRvb2xzL2RvY19nZW5lcmF0ZS9hdXRvZG9jX3JzdHgucHkKKysrIHRvb2xzL2RvY19nZW5l
cmF0ZS9hdXRvZG9jX3JzdHgucHkKQEAgLTczLDcgKzczLDcgQEAKICAgICAgICAgY21kX2hlbHAg
PSBjbWRfb2JqZWN0LmhlbHAoKQogICAgICAgICBpZiBjbWRfaGVscDoKICAgICAgICAgICAgIGZp
cnN0bGluZSA9IGNtZF9oZWxwLnNwbGl0KCdcbicsIDEpWzBdCi0gICAgICAgICAgICB1c2FnZSA9
IGJ6cmxpYi5oZWxwLmNvbW1hbmRfdXNhZ2UoY21kX29iamVjdCkKKyAgICAgICAgICAgIHVzYWdl
ID0gY21kX29iamVjdC5fdXNhZ2UoKQogICAgICAgICAgICAgdG1wID0gJyoqJXMqKlxuXHQlc1xu
XG4nICUgKHVzYWdlLCBmaXJzdGxpbmUpCiAgICAgICAgICAgICBvdXRwdXQgPSBvdXRwdXQgKyB0
bXAKICAgICAgICAgZWxzZToKQEAgLTk3LDcgKzk3LDcgQEAKIAogZGVmIGZvcm1hdF9jb21tYW5k
IChwYXJhbXMsIGNtZCwgbmFtZSk6CiAgICAgIiIiUHJvdmlkZXMgbG9uZyBoZWxwIGZvciBlYWNo
IHB1YmxpYyBjb21tYW5kIiIiCi0gICAgdXNhZ2UgPSBienJsaWIuaGVscC5jb21tYW5kX3VzYWdl
KGNtZCkKKyAgICB1c2FnZSA9IGNtZC5fdXNhZ2UoKQogICAgIHN1YnNlY3Rpb25faGVhZGVyID0g
IiIiCiAlcwogJXMKQEAgLTEzNSw3ICsxMzUsMTQgQEAKICAgICAgICAgYWxpYXNlc19zdHIgKz0g
JywgJy5qb2luKGNtZC5hbGlhc2VzKQogICAgICAgICBhbGlhc2VzX3N0ciArPSAnXG4nCiAKLSAg
ICByZXR1cm4gc3Vic2VjdGlvbl9oZWFkZXIgKyBvcHRpb25fc3RyICsgYWxpYXNlc19zdHIgKyAi
XG4iICsgZG9jICsgIlxuIgorICAgIHNlZV9hbHNvX3N0ciA9ICIiCisgICAgc2VlX2Fsc28gPSBj
bWQuZ2V0X3NlZV9hbHNvKCkKKyAgICBpZiBzZWVfYWxzbzoKKyAgICAgICAgc2VlX2Fsc29fc3Ry
ICs9ICdcbiAgICBTZWUgYWxzbzogJworICAgICAgICBzZWVfYWxzb19zdHIgKz0gJywgJy5qb2lu
KHNlZV9hbHNvKQorICAgICAgICBzZWVfYWxzb19zdHIgKz0gJ1xuJworCisgICAgcmV0dXJuIHN1
YnNlY3Rpb25faGVhZGVyICsgb3B0aW9uX3N0ciArIGFsaWFzZXNfc3RyICsgc2VlX2Fsc29fc3Ry
ICsgIlxuIiArIGRvYyArICJcbiIKIAogCiAjIwoK

=== modified directory  // last-changed:jw+debian@jameswestby.net-2007051419302
... 6-3itaozap05k3vuxp
=== modified file BRANCH.TODO // last-changed:v.ladeuil+lp@free.fr-200704212131
... 32-6ffsjiv1bf6tnfhq
=== modified file bzrlib/bundle/commands.py // last-changed:robertc@robertcolli
... ns.net-20070405093526-bfbpg82tlc7kldni
=== modified file bzrlib/bundle/serializer/__init__.py // last-changed:andrew.b
... ennetts@canonical.com-20070313065543-9ut4f0hw91ay6kdf
=== modified file bzrlib/commit.py // last-changed:robertc@robertcollins.net-20
... 070405093526-bfbpg82tlc7kldni
=== modified file bzrlib/tests/branch_implementations/test_http.py // last-chan
... ged:robertc@robertcollins.net-20070328074837-v6jlmuzlbwcpfu7o
=== modified file bzrlib/tests/repository_implementations/test_commit_builder.p
... y // last-changed:andrew.bennetts@canonical.com-20070411055816-oy64yjhzvtnr
... mfb9
=== modified file bzrlib/tests/repository_implementations/test_fileid_involved.
... py // last-changed:robertc@robertcollins.net-20070328225443-lqmj3q8wwkz5kzt
... u
=== modified file bzrlib/tests/repository_implementations/test_reconcile.py // 
... last-changed:robertc@robertcollins.net-20070328074837-v6jlmuzlbwcpfu7o
=== modified file bzrlib/tests/test_bzrdir.py // last-changed:robertc@robertcol
... lins.net-20070405093526-bfbpg82tlc7kldni
=== modified file bzrlib/tests/test_osutils.py // last-changed:abentley@panoram
... icfeedback.com-20070416211229-xa9pdlxs721oxhyx
=== modified file bzrlib/tests/test_sftp_transport.py // last-changed:robertc@r
... obertcollins.net-20070328084906-3n8damdsktuvt5ob
=== modified file bzrlib/tests/test_workingtree.py // last-changed:amanic@gmail
... .com-20070413184526-6xhpgyvqz2u18l2q
=== modified file bzrlib/transport/chroot.py // last-changed:andrew.bennetts@ca
... nonical.com-20070413142326-5o7two9lqz5fqvl6
=== modified file bzrlib/transport/decorator.py // last-changed:robertc@robertc
... ollins.net-20070405093526-bfbpg82tlc7kldni
=== modified file bzrlib/tree.py // last-changed:amanic@gmail.com-2007041319454
... 0-jaf9n9wzhx4pd66c
# revision id: jw+debian@jameswestby.net-20070514193026-3itaozap05k3vuxp
# sha1: 89fbbb11b1ad2c1a49be6b60da71a46dc5dde871
# inventory sha1: 08de6186549d31ceb52789b1a9037e32522ea972
# parent ids:
#   pqm@pqm.ubuntu.com-20070510055501-w262sk5hl33vmd19
#   jw+debian@jameswestby.net-20070414025144-qv17v6rkq1tfu6v8
# properties:
#   branch-nick: bzr.repohelp

# message:
#   Add a working-trees help topic.
#   
#   Has both some general information and specifics about dealing with remote
#   working trees. Because of that change the remote tree warning message to point
#   to it. Hopefully that will give users a starting point for deciding how to
#   cope with that situation.
#   
# committer: James Westby <jw+debian@jameswestby.net>
# date: Sat 2007-04-14 03:51:44.247999907 +0100

=== modified file bzrlib/builtins.py // encoding:base64
LS0tIGJ6cmxpYi9idWlsdGlucy5weQorKysgYnpybGliL2J1aWx0aW5zLnB5CkBAIC0yNDMsNiAr
MjQzLDggQEAKIAogICAgIFNpbmNlIGEgbGlnaHR3ZWlnaHQgY2hlY2tvdXQgaXMgbGl0dGxlIG1v
cmUgdGhhbiBhIHdvcmtpbmcgdHJlZQogICAgIHRoaXMgd2lsbCByZWZ1c2UgdG8gcnVuIGFnYWlu
c3Qgb25lLgorCisgICAgU2VlICdienIgaGVscCB3b3JraW5nLXRyZWVzJyBmb3IgbW9yZSBpbmZv
cm1hdGlvbiBvbiB3b3JraW5nIHRyZWVzLgogICAgICIiIgogCiAgICAgdGFrZXNfYXJncyA9IFsn
bG9jYXRpb24/J10KQEAgLTgwMiw4ICs4MDQsOSBAQAogICAgICAgICAgICAgICAgIHRyeToKICAg
ICAgICAgICAgICAgICAgICAgdHJlZV90byA9IGRpcl90by5vcGVuX3dvcmtpbmd0cmVlKCkKICAg
ICAgICAgICAgICAgICBleGNlcHQgZXJyb3JzLk5vdExvY2FsVXJsOgotICAgICAgICAgICAgICAg
ICAgICB3YXJuaW5nKCdUaGlzIHRyYW5zcG9ydCBkb2VzIG5vdCB1cGRhdGUgdGhlIHdvcmtpbmcg
JwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICd0cmVlIG9mOiAlcycgJSAoYnJfdG8uYmFz
ZSwpKQorICAgICAgICAgICAgICAgICAgICB3YXJuaW5nKCdUaGlzIHRyYW5zcG9ydCBkb2VzIG5v
dCB1cGRhdGUgdGhlIHdvcmtpbmcgJyAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAndHJl
ZSBvZjogJXMuIFNlZSBcJ2J6ciBoZWxwICcgJSBicl90by5iYXNlICsgXAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICd3b3JraW5nLXRyZWVzXCcgZm9yIG1vcmUgaW5mb3JtYXRpb24uJykK
ICAgICAgICAgICAgICAgICAgICAgcHVzaF9yZXN1bHQgPSBicl9mcm9tLnB1c2goYnJfdG8sIG92
ZXJ3cml0ZSkKICAgICAgICAgICAgICAgICBleGNlcHQgZXJyb3JzLk5vV29ya2luZ1RyZWU6CiAg
ICAgICAgICAgICAgICAgICAgIHB1c2hfcmVzdWx0ID0gYnJfZnJvbS5wdXNoKGJyX3RvLCBvdmVy
d3JpdGUpCgo=

=== modified file bzrlib/help_topics.py // encoding:base64
LS0tIGJ6cmxpYi9oZWxwX3RvcGljcy5weQorKysgYnpybGliL2hlbHBfdG9waWNzLnB5CkBAIC0y
NjMsNiArMjYzLDQ2IEBACiAgICAgICAgICAgICAgICAgICAgIGluIHdoaWNoIG5ldyBicmFuY2hl
cyB3b250IGdldCBhIHdvcmtpbmcgdHJlZS4KICIiIgogCitfd29ya2luZ190cmVlcyA9IFwKKyIi
IldvcmtpbmcgVHJlZXMKKworQSB3b3JraW5nIHRyZWUgaXMgdGhlIGNvbnRlbnRzIG9mIGEgYnJh
bmNoIGNoZWNrZWQgb3V0IG9uIGRpc2sgc28gdGhhdCB5b3UgY2FuCitzZWUgdGhlIGZpbGVzIGFu
ZCBlZGl0IHRoZW0uIFRoZSB3b3JraW5nIHRyZWUgaXMgd2hlcmUgeW91IG1ha2UgY2hhbmdlcyB0
byBhCiticmFuY2gsIGFuZCB3aGVuIHlvdSBjb21taXQgdGhlIGN1cnJlbnQgc3RhdGUgb2YgdGhl
IHdvcmtpbmcgdHJlZSBpcyB0aGUKK3NuYXBzaG90IHRoYXQgaXMgcmVjb3JkZWQgaW4gdGhlIGNv
bW1pdC4KKworV2hlbiB5b3UgcHVzaCBhIGJyYW5jaCB0byBhIHJlbW90ZSBzeXN0ZW0gdGhlbiBh
IHdvcmtpbmcgdHJlZSB3aWxsIG5vdCBiZQorY3JlYXRlZCwgb3IgaWYgdGhlcmUgaXMgYWxyZWFk
eSBvbmUgdGhlcmUgaXQgd2lsbCBub3QgYmUgdXBkYXRlZC4gVGhpcyBpcworYmVjYXVzZSBhbiB1
cGRhdGUgdG8gdGhlIHdvcmtpbmcgdHJlZSBjYW4gY2F1c2UgY29uZmxpY3RzLCBhbmQgdGhhdCBp
cworaGFyZCB0byBkZWFsIHdpdGggcmVtb3RlbHkuCisKK0lmIHlvdSBoYXZlIGEgYnJhbmNoIHdp
dGggbm8gd29ya2luZyB0cmVlIHlvdSBjYW4gdXNlIHRoZSAnY2hlY2tvdXQnIGNvbW1hbmQKK3Rv
IGNyZWF0ZSBhIHdvcmtpbmcgdHJlZS4gSWYgeW91IHJ1biAnYnpyIGNoZWNrb3V0IC4nIGZyb20g
dGhlIGJyYW5jaCBpdCB3aWxsCitjcmVhdGUgdGhlIHdvcmtpbmcgdHJlZS4gSWYgYSBzdWJzZXF1
ZW50IHB1c2ggZnJvbSBhIHJlbW90ZSBzeXN0ZW0gdXBkYXRlcyB0aGUKK2JyYW5jaCB5b3UgY2Fu
IHVwZGF0ZSB0aGUgd29ya2luZyB0cmVlIHRvIG1hdGNoIHRoZSBicmFuY2ggYnkgcnVubmluZyAn
YnpyCit1cGRhdGUnIGluIHRoZSBicmFuY2guCisKK0lmIHlvdSBoYXZlIGEgYnJhbmNoIHdpdGgg
YSB3b3JraW5nIHRyZWUgdGhhdCB5b3UgZG8gbm90IHdhbnQgdGhlICdyZW1vdmUtdHJlZScKK2Nv
bW1hbmQgd2lsbCByZW1vdmUgdGhlIHRyZWUgaWYgaXQgaXMgc2FmZS4gVGhpcyBjYW4gYmUgZG9u
ZSB0byBhdm9pZCB0aGUKK3dhcm5pbmcgYWJvdXQgdGhlIHJlbW90ZSB3b3JraW5nIHRyZWUgbm90
IGJlaW5nIHVwZGF0ZWQgd2hlbiBwdXNoaW5nIHRvIHRoZQorYnJhbmNoLiBJdCBjYW4gYWxzbyBi
ZSB1c2VmdWwgd2hlbiB3b3JraW5nIHdpdGggYSAnLS1uby10cmVlcycgcmVwb3NpdG9yeQorKHNl
ZSAnYnpyIGhlbHAgcmVwb3NpdG9yaWVzJykuCisKK0lmIHlvdSB3YW50IHRvIGhhdmUgYSB3b3Jr
aW5nIHRyZWUgb24gYSByZW1vdGUgbWFjaGluZSB0aGF0IHlvdSBwdXNoIHRvIHlvdQorY2FuIGVp
dGhlciBydW4gJ2J6ciB1cGRhdGUnIGluIHRoZSByZW1vdGUgYnJhbmNoIGFmdGVyIGVhY2ggcHVz
aCwgb3IgdXNlIHNvbWUKK290aGVyIG1ldGhvZCB0byB1cGRhdGUgdGhlIHRyZWUgZHVyaW5nIHRo
ZSBwdXNoLiBUaGVyZSBpcyBhbiAncnNwdXNoJyBwbHVnaW4KK3RoYXQgd2lsbCB1cGRhdGUgdGhl
IHdvcmtpbmcgdHJlZSB1c2luZyByc3luYyBhcyB3ZWxsIGFzIGRvaW5nIGEgcHVzaC4gVGhlcmUK
K2lzIGFsc28gYSAncHVzaC1hbmQtdXBkYXRlJyBwbHVnaW4gdGhhdCBhdXRvbWF0ZXMgcnVubmlu
ZyAnYnpyIHVwZGF0ZScgdmlhIFNTSAorYWZ0ZXIgZWFjaCBwdXNoLgorCitVc2VmdWwgY29tbWFu
ZHM6CisKKyAgY2hlY2tvdXQgICAgIENyZWF0ZSBhIHdvcmtpbmcgdHJlZSB3aGVuIGEgYnJhbmNo
IGRvZXMgbm90IGhhdmUgb25lLgorICByZW1vdmUtdHJlZSAgUmVtb3ZlcyB0aGUgd29ya2luZyB0
cmVlIGZyb20gYSBicmFuY2ggd2hlbiBpdCBpcyBzYWZlIHRvIGRvIHNvLgorICB1cGRhdGUgICAg
ICAgV2hlbiBhIHdvcmtpbmcgdHJlZSBpcyBvdXQgb2Ygc3luYyB3aXRoIGl0J3MgYXNzb2NpYXRl
ZCBicmFuY2gKKyAgICAgICAgICAgICAgIHRoaXMgd2lsbCB1cGRhdGUgdGhlIHRyZWUgdG8gbWF0
Y2ggdGhlIGJyYW5jaC4KKyIiIgorCiAKIHRvcGljX3JlZ2lzdHJ5LnJlZ2lzdGVyKCJyZXZpc2lv
bnNwZWMiLCBfaGVscF9vbl9yZXZpc2lvbnNwZWMsCiAgICAgICAgICAgICAgICAgICAgICAgICAi
RXhwbGFpbiBob3cgdG8gdXNlIC0tcmV2aXNpb24iKQpAQCAtMjc4LDQgKzMxOCw2IEBACiAgICAg
ICAgICAgICAgICAgICAgICAgICAnSW5mb3JtYXRpb24gb24gd2hhdCBhIGNoZWNrb3V0IGlzJykK
IHRvcGljX3JlZ2lzdHJ5LnJlZ2lzdGVyKCdyZXBvc2l0b3JpZXMnLCBfcmVwb3NpdG9yaWVzLAog
ICAgICAgICAgICAgICAgICAgICAgICAgJ0Jhc2ljIGluZm9ybWF0aW9uIG9uIHNoYXJlZCByZXBv
c2l0b3JpZXMuJykKK3RvcGljX3JlZ2lzdHJ5LnJlZ2lzdGVyKCd3b3JraW5nLXRyZWVzJywgX3dv
cmtpbmdfdHJlZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAnSW5mb3JtYXRpb24gb24gd29y
a2luZyB0cmVlcycpCiAKCg==

=== modified file bzrlib/tests/blackbox/test_help.py // encoding:base64
LS0tIGJ6cmxpYi90ZXN0cy9ibGFja2JveC90ZXN0X2hlbHAucHkKKysrIGJ6cmxpYi90ZXN0cy9i
bGFja2JveC90ZXN0X2hlbHAucHkKQEAgLTY0LDYgKzY0LDE1IEBACiAgICAgICAgIHNlbGYuYXNz
ZXJ0Q29udGFpbnNSZShvdXQsICctLW5vLXRyZWVzJykKICAgICAgICAgc2VsZi5hc3NlcnRDb250
YWluc1JlKG91dCwgJ2luaXQtcmVwb3NpdG9yeScpCiAKKyAgICBkZWYgdGVzdF9oZWxwX3dvcmtp
bmdfdHJlZXMoc2VsZik6CisgICAgICAgICIiIlNtb2tlIHRlc3QgZm9yICdienIgaGVscCB3b3Jr
aW5nLXRyZWVzJyIiIgorICAgICAgICBvdXQsIGVyciA9IHNlbGYucnVuYnpyKCdoZWxwIHdvcmtp
bmctdHJlZXMnKQorICAgICAgICBzZWxmLmFzc2VydENvbnRhaW5zUmUob3V0LCAncmVwb3NpdG9y
eScpCisgICAgICAgIHNlbGYuYXNzZXJ0Q29udGFpbnNSZShvdXQsICdyZW1vdGUnKQorICAgICAg
ICBzZWxmLmFzc2VydENvbnRhaW5zUmUob3V0LCAnY2hlY2tvdXQnKQorICAgICAgICBzZWxmLmFz
c2VydENvbnRhaW5zUmUob3V0LCAndXBkYXRlJykKKyAgICAgICAgc2VsZi5hc3NlcnRDb250YWlu
c1JlKG91dCwgJ3JlbW92ZS10cmVlJykKKwogICAgIGRlZiB0ZXN0X2hlbHBfY29tbWFuZHMoc2Vs
Zik6CiAgICAgICAgIGRhc2hfaGVscCAgPSBzZWxmLnJ1bmJ6cignLS1oZWxwIGNvbW1hbmRzJylb
MF0KICAgICAgICAgY29tbWFuZHMgICA9IHNlbGYucnVuYnpyKCdoZWxwIGNvbW1hbmRzJylbMF0K
Cg==

=== modified directory  // last-changed:jw+debian@jameswestby.net-2007041402514
... 4-qv17v6rkq1tfu6v8
# revision id: jw+debian@jameswestby.net-20070414025144-qv17v6rkq1tfu6v8
# sha1: 06e446cdc99f18c20b853e147213ba77f89e764e
# inventory sha1: c1f32ad889a6defa6408ad2edd0a91ea57137253
# parent ids:
#   jw+debian@jameswestby.net-20070414010244-4qvkerl2bztwchn1
# properties:
#   branch-nick: bzr.dev.repos

# message:
#   Add a help topic for repositories.
#   
# committer: James Westby <jw+debian@jameswestby.net>
# date: Sat 2007-04-14 02:02:44.302999973 +0100

=== modified file bzrlib/builtins.py // encoding:base64
LS0tIGJ6cmxpYi9idWlsdGlucy5weQorKysgYnpybGliL2J1aWx0aW5zLnB5CkBAIC0xMjc5LDEx
ICsxMjc5LDE3IEBACiAgICAgaW4gdGhlIHJlcG9zaXRvcnksIG5vdCBpbiB0aGUgYnJhbmNoIGRp
cmVjdG9yeS4KIAogICAgIGV4YW1wbGU6Ci0gICAgICAgIGJ6ciBpbml0LXJlcG8gLS1uby10cmVl
cyByZXBvCisgICAgICAgIGJ6ciBpbml0LXJlcG8gcmVwbwogICAgICAgICBienIgaW5pdCByZXBv
L3RydW5rCiAgICAgICAgIGJ6ciBjaGVja291dCAtLWxpZ2h0d2VpZ2h0IHJlcG8vdHJ1bmsgdHJ1
bmstY2hlY2tvdXQKICAgICAgICAgY2QgdHJ1bmstY2hlY2tvdXQKICAgICAgICAgKGFkZCBmaWxl
cyBoZXJlKQorICAgIG9yOgorICAgICAgICBienIgaW5pdC1yZXBvIC0tbm8tdHJlZXMgcmVwbwor
ICAgIGFzIHRoZSBmaXJzdCBzdGVwIHRvIGdldCBhIHJlcG9zaXRvcnkgd2hlcmUgdGhlIGJyYW5j
aGVzIGluc2lkZSB3aWxsIG5vdAorICAgIGhhdmUgd29ya2luZyB0cmVlcy4KKworICAgIFNlZSAn
YnpyIGhlbHAgcmVwb3NpdG9yaWVzJyBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KICAgICAiIiIKIAog
ICAgIHRha2VzX2FyZ3MgPSBbImxvY2F0aW9uIl0KCg==

=== modified file bzrlib/help_topics.py // encoding:base64
LS0tIGJ6cmxpYi9oZWxwX3RvcGljcy5weQorKysgYnpybGliL2hlbHBfdG9waWNzLnB5CkBAIC0y
MjksNiArMjI5LDQwIEBACiAgICAgICAgICAgICAgIGNvbW1pdHMgYXJlIG9ubHkgbWFkZSBsb2Nh
bGx5CiAiIiIKIAorX3JlcG9zaXRvcmllcyA9IFwKKyIiIlJlcG9zaXRvcmllcworCitSZXBvc2l0
b3JpZXMgaW4gQmF6YWFyIGFyZSBhIHdheSBvZiBzaGFyaW5nIHN0b3JhZ2UgYmV0d2VlbiBkaWZm
ZXJlbnQgYnJhbmNoZXMuCitJZiBhIGJyYW5jaCBpcyBjcmVhdGVkIHdpdGhpbiBhIHNoYXJlZCBy
ZXBvc2l0b3J5IHRoZW4gaXQgd2lsbCBwbGFjZSB0aGUKK3JldmlzaW9ucyB3aXRoaW4gaXQuIFRo
ZW4gd2hlbiBhbnkgb3RoZXIgYnJhbmNoZXMgYXJlIGNyZWF0ZWQgd2l0aGluIHRoZSBzYW1lCity
ZXBvc2l0b3J5IHRoZXkgd2lsbCB1c2UgdGhlIHNhbWUgcmV2aXNpb25zIHdoZXJlIHRoZXkgYXJl
IGNvbW1vbiB0byBib3RoCiticmFuY2hlcy4gVGhpcyBoYXMgbGl0dGxlIGVmZmVjdCBmb3IgZGlz
dGluY3QgcHJvamVjdHMsIGJ1dCB3aGVyZSB0aGUgYnJhbmNoZXMKK3NoYXJlIHNvbWUgaGlzdG9y
eSB0aGVyZSB3aWxsIGJlIGEgbGFyZ2Ugc3BhY2Ugc2F2aW5nLiBUaGUgc3BhY2Ugc2F2aW5ncyBj
YW4KK2Fsc28gYmVjb21lIGxhcmdlIHRpbWUgc2F2aW5ncyBhcyB3ZWxsLCBmb3IgaW5zdGFuY2Ug
d2hlbiBicmFuY2hpbmcgd2l0aGluCithIHNoYXJlZCByZXBvc2l0b3JpZXMuCisKK1RvIGNyZWF0
ZSBhIHNoYXJlZCByZXBvc2l0b3J5IHVzZSB0aGUgaW5pdC1yZXBvc2l0b3J5IGNvbW1hbmQgKG9y
IHRoZSBhbGlhcworaW5pdC1yZXBvKS4gVGhpcyBjb21tYW5kIHRha2VzIGFzIGFuIGFyZ3VtZW50
IHRoZSBsb2NhdGlvbiBvZiB0aGUgcmVwb3NpdG9yeQordG8gY3JlYXRlLiBUaGlzIG1lYW5zIHRo
YXQgJ2J6ciBpbml0LXJlcG9zaXRvcnkgcmVwbycgd2lsbCBjcmVhdGUgYSBkaXJlY3RvcnkKK25h
bWVkICdyZXBvJywgd2hpY2ggY29udGFpbnMgYSBzaGFyZWQgcmVwb3NpdG9yeS4gQW55IG5ldyBi
cmFuY2hlcyB0aGF0IGFyZQorY3JlYXRlZCBpbiB0aGlzIGRpcmVjdG9yeSB3aWxsIHRoZW4gYmUg
J2luJyB0aGUgcmVwb3NpdG9yeSwgYW5kIHVzZSBpdCBmb3IKK3N0b3JhZ2UuCisKK0l0IGlzIGEg
Z29vZCBpZGVhIHRvIGNyZWF0ZSBhIHJlcG9zaXRvcnkgd2hlbmV2ZXIgeW91IG1pZ2h0IGNyZWF0
ZSBtb3JlCit0aGFuIG9uZSBicmFuY2ggb2YgYSBwcm9qZWN0LiBUaGlzIGlzIHRydWUgZm9yIGJv
dGggd29ya2luZyBhcmVhcyB3aGVyZSB5b3UKK2FyZSBkb2luZyB0aGUgZGV2ZWxvcG1lbnQsIGFu
ZCBhbnkgc2VydmVyIGFyZWFzIHRoYXQgeW91IHVzZSBmb3IgaG9zdGluZworcHJvamVjdHMuIElu
IHRoZSBsYXR0ZXIgY2FzZSwgaWYgeW91IGRvIG5vdCB3YW50IHRvIGRvIHdvcmsgZGlyZWN0bHkg
dGhlcmUKK3lvdSBtYXkgd2lzaCB0byBub3QgaGF2ZSB0aGUgYnJhbmNoZXMgaGF2ZSB3b3JraW5n
IHRyZWVzLiBJZiB0aGUgd29ya2luZyB0cmVlcworYXJlIG5vdCBwcmVzZW50IHRoZW4gdGhlcmUg
d2lsbCBiZSBsZXNzIGRpc2sgc3BhY2UgdXNlZCwgYW5kIGEgbG90IG9mCitvcGVyYXRpb25zIHdp
bGwgYmUgc3BlZCB1cC4gVG8gY3JlYXRlIGEgcmVwb3NpdG9yeSBpbiB3aGljaCB0aGUgYnJhbmNo
ZXMgd2lsbAorbm90IGhhdmUgd29ya2luZyB0cmVlcyBwYXNzIHRoZSAnLS1uby10cmVlcycgb3B0
aW9uIHRvICdpbml0LXJlcG9zaXRvcnknLgorCitSZWxhdGVkIGNvbW1hbmRzOgorCisgIGluaXQt
cmVwb3NpdG9yeSAgIENyZWF0ZSBhIHNoYXJlZCByZXBvc2l0b3J5LiBVc2UgLS1uby10cmVlcyB0
byBjcmVhdGUgb25lCisgICAgICAgICAgICAgICAgICAgIGluIHdoaWNoIG5ldyBicmFuY2hlcyB3
b250IGdldCBhIHdvcmtpbmcgdHJlZS4KKyIiIgorCiAKIHRvcGljX3JlZ2lzdHJ5LnJlZ2lzdGVy
KCJyZXZpc2lvbnNwZWMiLCBfaGVscF9vbl9yZXZpc2lvbnNwZWMsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAiRXhwbGFpbiBob3cgdG8gdXNlIC0tcmV2aXNpb24iKQpAQCAtMjQyLDQgKzI3Niw2
IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAnT3B0aW9ucyB0aGF0IGNhbiBiZSB1c2VkIHdp
dGggYW55IGNvbW1hbmQnKQogdG9waWNfcmVnaXN0cnkucmVnaXN0ZXIoJ2NoZWNrb3V0cycsIF9j
aGVja291dHMsCiAgICAgICAgICAgICAgICAgICAgICAgICAnSW5mb3JtYXRpb24gb24gd2hhdCBh
IGNoZWNrb3V0IGlzJykKK3RvcGljX3JlZ2lzdHJ5LnJlZ2lzdGVyKCdyZXBvc2l0b3JpZXMnLCBf
cmVwb3NpdG9yaWVzLAorICAgICAgICAgICAgICAgICAgICAgICAgJ0Jhc2ljIGluZm9ybWF0aW9u
IG9uIHNoYXJlZCByZXBvc2l0b3JpZXMuJykKIAoK

=== modified file bzrlib/tests/blackbox/test_help.py // encoding:base64
LS0tIGJ6cmxpYi90ZXN0cy9ibGFja2JveC90ZXN0X2hlbHAucHkKKysrIGJ6cmxpYi90ZXN0cy9i
bGFja2JveC90ZXN0X2hlbHAucHkKQEAgLTU3LDYgKzU3LDEzIEBACiAgICAgICAgIHNlbGYuYXNz
ZXJ0Q29udGFpbnNSZShvdXQsICdjaGVja291dCcpCiAgICAgICAgIHNlbGYuYXNzZXJ0Q29udGFp
bnNSZShvdXQsICdsaWdodHdlaWdodCcpCiAKKyAgICBkZWYgdGVzdF9oZWxwX3JlcG9zaXRvcmll
cyhzZWxmKToKKyAgICAgICAgIiIiU21va2UgdGVzdCBmb3IgJ2J6ciBoZWxwIHJlcG9zaXRvcmll
cyciIiIKKyAgICAgICAgb3V0LCBlcnIgPSBzZWxmLnJ1bmJ6cignaGVscCByZXBvc2l0b3JpZXMn
KQorICAgICAgICBzZWxmLmFzc2VydENvbnRhaW5zUmUob3V0LCAncmVwb3NpdG9yeScpCisgICAg
ICAgIHNlbGYuYXNzZXJ0Q29udGFpbnNSZShvdXQsICctLW5vLXRyZWVzJykKKyAgICAgICAgc2Vs
Zi5hc3NlcnRDb250YWluc1JlKG91dCwgJ2luaXQtcmVwb3NpdG9yeScpCisKICAgICBkZWYgdGVz
dF9oZWxwX2NvbW1hbmRzKHNlbGYpOgogICAgICAgICBkYXNoX2hlbHAgID0gc2VsZi5ydW5ienIo
Jy0taGVscCBjb21tYW5kcycpWzBdCiAgICAgICAgIGNvbW1hbmRzICAgPSBzZWxmLnJ1bmJ6cign
aGVscCBjb21tYW5kcycpWzBdCgo=

=== modified directory  // last-changed:jw+debian@jameswestby.net-2007041401024
... 4-4qvkerl2bztwchn1
# revision id: jw+debian@jameswestby.net-20070414010244-4qvkerl2bztwchn1
# sha1: 1c6e507529ace83978f368a5ed2707df34df5fea
# inventory sha1: f99f41d607786541fea73663a22ee03c0cfdc260
# parent ids:
#   pqm@pqm.ubuntu.com-20070405073143-8fa894c829ab5e50
# properties:
#   branch-nick: bzr.dev.repos


