# Bazaar revision bundle v0.9 # # message: # Recommendation to delete bzrlib when installing # committer: Martin Pool # date: Wed 2007-04-04 16:17:54.697000027 +1000 === removed file NEWS.developers === modified file INSTALL --- INSTALL +++ INSTALL @@ -16,6 +16,9 @@ Installation ------------ +When upgrading using setup.py, it is recommended that you first delete the +bzrlib directory from the install target. + To install bzr as a user, run python setup.py install --home ~ @@ -24,3 +27,6 @@ python setup.py install +For more information on installation, see +http://bazaar-vcs.org/InstallationFaq +or write to bazaar@lists.canonical.com. === modified file NEWS // last-changed:mbp@sourcefrog.net-20070404012211-sq269m ... e6bai9m6xk --- NEWS +++ NEWS @@ -2268,6 +2268,24 @@ bzr branch it cannot understand. This allows for precise handling of such circumstances. + * Remove RevisionReference class; Revision.parent_ids is now simply a + list of their ids and parent_sha1s is a list of their corresponding + sha1s (for old branches only at the moment.) + + * New method-object style interface for Commit() and Fetch(). + + * Renamed Branch.last_patch() to Branch.last_revision(), since + we call them revisions not patches. + + * Move copy_branch to bzrlib.clone.copy_branch. The destination + directory is created if it doesn't exist. + + * Inventories now identify the files which were present by + giving the revision *of that file*. + + * Inventory and Revision XML contains a version identifier. + This must be consistent with the overall branch version + but allows for more flexibility in future upgrades. TESTING: === modified file TODO // last-changed:mbp@sourcefrog.net-20070404061731-tt2xrz ... llqhbodn83 --- TODO +++ TODO @@ -1,467 +1,4 @@ -.. -*- mode: indented-text; compile-command: "make -C doc" -*- - - -******************* -Things to do in bzr -******************* - - -See also various low-level TODOs in the source code. Try looking in -the list archive or on gmane.org for previous discussion of these -issues. - -These are classified by approximate size: an hour or less, a day or -less, and several days or more. - - -Small things ------------- - -* Fix tests so that import errors caused by modules don't produce false reports - that the tests themselves don't exist. - -* Fix tests so that one test failure doesn't prevent other tests from running - -* print a message at the end of running the tests telling them that the - test log and output exists but can be removed - -* tests for running the commit editor, and fix problem of not passing in - multiple arguments - -* Merging add of a new file clashing with an existing file doesn't - work; add gets an error that it's already versioned and the merge - aborts. - -* Merge should ignore the destination's working directory, otherwise - we get an error about the statcache when pulling from a remote - branch. - -* Add of a file that was present in the base revision should put back - the previous file-id. - -* Not sure I'm happy with needing to pass a root id to EmptyTree; - comparing anything against an EmptyTree with no root should have the - same effect(?) - -* Handle diff of files which do not have a trailing newline; probably - requires patching difflib to get it exactly right, or otherwise - calling out to GNU diff. - -* Should be able to copy files between branches to preserve their - file-id (and perhaps eventually parentage.) - -* -r option should take a revision-id as well as a revno. - -* ``bzr info`` should count only people with distinct email addresses as - different committers. (Or perhaps only distinct userids?) - -* On Windows, command-line arguments should be `glob-expanded`__, - because the shell doesn't do this. However, there are probably some - commands where this shouldn't be done, such as 'bzr ignore', because - we want to accept globs. - -* ``bzr ignore`` command that just adds a line to the ``.bzrignore`` file - and makes it versioned. Fix this to break symlinks. - -* Any useful sanity checks in 'bzr ignore'? Perhaps give a warning if - they try to add a single file which is already versioned, or if they - add a pattern which already exists, or if it looks like they gave an - unquoted glob. - -__ http://mail.python.org/pipermail/python-list/2001-April/037847.html - -* Separate read and write version checks? - -* ``bzr status DIR`` should give status on all files under that - directory. - -* ``bzr log DIR`` should give changes to any files within DIR; at the - moment it only lists things which modify the specific named file - (and not its contents) - -* ``bzr inventory -r REV`` and perhaps unify this with ``bzr ls``, - giving options to display ids, types, etc. - -* RemoteBranch could maintain a cache either in memory or on disk. We - know more than an external cache might about which files are - immutable and which can vary. On the other hand, it's much simpler - to just use an external proxy cache. - - Perhaps ~/.bzr/http-cache. Baz has a fairly simple cache under - ~/.arch-cache, containing revision information encoded almost as a - bunch of archives. Perhaps we could simply store full paths. - -* Maybe also store directories in the statcache so that we can quickly - identify that they still exist. - -* Diff should show timestamps; for files from the working directory we - can use the file itself; for files from a revision we should use the - commit time of the revision. - -* Perhaps split command infrastructure from the actual command - definitions. - -* Cleaner support for negative boolean options like --no-recurse. - -* Statcache should possibly map all file paths to / separators - -* quotefn doubles all backslashes on Windows; this is probably not the - best thing to do. What would be a better way to safely represent - filenames? Perhaps we could doublequote things containing spaces, - on the principle that filenames containing quotes are unlikely? - Nice for humans; less good for machine parsing. - -* Patches should probably use only forward slashes, even on Windows, - otherwise Unix patch can't apply them. (?) - -* Branch.update_revisions() inefficiently fetches revisions from the - remote server twice; once to find out what text and inventory they - need and then again to actually get the thing. This is a bit - inefficient. - - One complicating factor here is that we don't really want to have - revisions present in the revision-store until all their constituent - parts are also stored. - - The basic problem is that RemoteBranch.get_revision() and similar - methods return object, but what we really want is the raw XML, which - can be popped into our own store. That needs to be refactored. - -* Guard against repeatedly merging any particular patch. - -* More options for diff: - - - diff two revisions of the same tree - - - diff two different branches, optionally at different revisions - - - diff a particular file in another tree against the corresponding - version in this tree (which should be the default if the second - parameter is a tree root) - - - diff everything under a particular directory, in any of the above - ways - - - diff two files inside the same tree, even if they have different - ids - - - and, of course, tests for all this - -* Reproducible performance benchmark to measure whether performance is - getting better or worse. - -* ``bzr log -m foo`` should perhaps error if nothing matches? - -* ``bzr diff -r 30 -r 40 foo.c`` or ``bzr diff -r30..40 foo.c`` - - If diffing between two branches then we probably want two -r - options, since the revisions don't form a range that can be - evaluated on either one. - -* bzr diff shouldn't diff binary files - -* setup.py install when run from a bzr tree should freeze the tree - revision-id into the installed bzr. - -* bzr script should trap ImportError and perhaps give a better error - message? - -* revert after a merge should possibly remove all the BASE/THIS/OTHER - files to get you back to where you were. - -* files that are added and then deleted are still reported as added - -* stores should raise KeyError, not IndexError - -* merging from a remote branch seems to sometimes raise errors not - present locally - -* should be possible to give a related branch when pulling from a - remote branch to make things faster - -* sometimes gives "conflicting add" even when the contents are in fact - the same??? - -* BZRDIR should be in branch.py not __init__.py. - -* bzrlib.delta.compare_trees() shouldn't need to sort all of the result - lists, since they are being added in alphabetical order. Write tests - to guarantee this, and remove the sort() calls. - -Medium things -------------- - -* merge should add all revision and inventory XML to the local store. - -* check should give a warning for revisions that are named in the - chain but not actually present in the store. - -* remove anything outside of the branch implementation that directly - accesses the stores. - -* More efficient diff of only selected files. We should be able to - just get the id for the selected files, look up their location and - diff just those files. No need to traverse the entire inventories. - -* Fix up Inventory objects to represent root object as an entry. - -* Don't convert entire entry from ElementTree to an object when it is - read in, but rather wait until the program actually wants to know - about that node. - -* Extract changes from one revision to the next to a text form - suitable for transmission over email. - -* More test cases. - - - ``missing`` command - - - Selected-file commit - - - Impossible selected-file commit: adding things in non-versioned - directories, crossing renames, etc. - -* Write a reproducible benchmark, perhaps importing various kernel versions. - -* Directly import diffs! It seems a bit redundant to need to rescan - the directory to work out what files diff added/deleted/changed when - all the information is there in the diff in the first place. - Getting the exact behaviour for added/deleted subdirectories etc - might be hard. - - At the very least we could run diffstat over the diff, or perhaps - read the status output from patch. Just knowing which files might - be modified would be enough to guide the add and commit. - - Given this we might be able to import patches at 1/second or better. - -* revfile compression. - -* Split inventory into per-directory files? - -* Fix ignore file parsing: - - - fnmatch is not the same as unix patterns - - - perhaps add extended globs from rsh/rsync - - - perhaps a pattern that matches only directories or non-directories - -* Consider using Python logging library as well as/instead of - bzrlib.trace. - -* Commands should give some progress indication by default. - - - But quieten this with ``--silent``. - -* Change to using gettext message localization. - -* Make a clearer separation between internal and external bzrlib - interfaces. Make internal interfaces use protected names. Write at - least some documentation for those APIs, probably as docstrings. - - Consider using ZopeInterface definitions for the external interface; - I think these are already used in PyBaz. They allow automatic - checking of the interface but may be unfamiliar to general Python - developers, so I'm not really keen. - -* Commands to dump out all command help into a manpage or HTML file or - whatever. - -* Handle symlinks in the working directory; at the very least it - should be possible for them to be present and ignored/unknown - without causing assertion failures. - - Eventually symlinks should be versioned. - -* Allow init in a subdirectory to create a nested repository, but only - if the subdirectory is not already versioned. Perhaps also require - a ``--nested`` to protect against confusion. - -* Branch names? - -* More test framework: - - - Class that describes the state of a working tree so we can just - assert it's equal. - -* Try using XSLT to add some formatting to REST-generated HTML. Or - maybe write a small Python program that specifies a header and foot - for the pages and calls into the docutils libraries. - -* --format=xml for log, status and other commands. - -* Attempting to explicitly add a file that's already added should give - a warning; however there should be no warning for directories (since - we scan for new children) or files encountered in a directory that's - being scanned. - -* Better handling of possible collisions on case-losing filesystems; - make sure a single file does not get added twice under different - names. - -* Clean up XML inventory: - - - Use nesting rather than parent_id pointers. - - - Hold the ElementTree in memory in the Inventory object and work - directly on that, rather than converting into Python objects every - time it is read in. Probably still expose it through some kind of - object interface though, but perhaps that should just be a proxy - for the elements. - - - Less special cases for the root directory. - -* Perhaps inventories should remember the revision in which each file - was last changed, as well as its current state? This is a bit - redundant but might often be interested to know. - -* stat cache should perhaps only stat files as necessary, rather than - doing them all up-front. On the other hand, that disallows the - optimization of stating them in inode order. - -* It'd be nice to pipeline multiple HTTP requests. Often we can - predict what will be wanted in future: all revisions, or all texts - in a particular revision, etc. - - urlgrabber's docs say they are working on batched downloads; we - could perhaps ride on that or just create a background thread (ew). - -* Paranoid mode where we never trust SHA-1 matches. - -* --dry-run mode for commit? (Or maybe just run with - check-command=false?) - -* Generally, be a bit more verbose unless --silent is specified. - -* Function that finds all changes to files under a given directory; - perhaps log should use this if a directory is given. - -* XML attributes might have trouble with filenames containing \n and - \r. Do we really want to support this? I think perhaps not. - -* Unify smart_add and plain Branch.add(); perhaps smart_add should - just build a list of files to add and pass that to the regular add - function. - -* Function to list a directory, saying in which revision each file was - last modified. Useful for web and GUI interfaces, and slow to - compute one file at a time. - - This will be done when we track file texts by referring to the - version that created them. - -* Check locking is correct during merge-related operations. - -* Perhaps attempts to get locks should timeout after some period of - time, or at least display a progress message. - -* Don't pass around command classes but rather pass objects. This'd - make it cleaner to construct objects wrapping external commands. - -* Track all merged-in revisions in a versioned add-only metafile. - -* ``uncommit`` command that removes a revision from the end of the - revision-history; just doing this is enough to remove the commit, - and a new commit will automatically be made against the - predecessor. This can be repeated. - - It only makes sense to delete from the tail of history. - - This has been implemented, but it does not remove the texts from - the store. - -* ``bzrlib.lazy_import.lazy_import`` could check to see if a given - module has already been imported (look at ``sys.modules``). If it - has, then just import it directly, rather than creating a lazy - object. - - -Large things ------------- - -* Generate annotations from current file relative to previous - annotations. - - - Is it necessary to store any kind of annotation where data was - deleted? - -* Update revfile_ format and make it active: - - - Texts should be identified by something keyed on the revision, not - an individual text-id. This is much more useful for annotate I - think; we want to map back to the revision that last changed it. - - - Access revfile revisions through the Tree/Store classes. - - - Check them from check commands. - - - Store annotations. - -.. _revfile: revfile.html - -* Hooks for pre-commit, post-commit, etc. - - Consider the security implications; probably should not enable hooks - for remotely-fetched branches by default. - -* Pre-commit check. If this hook is defined, it needs to be handled - specially: create a temporary directory containing the tree as it - will be after the commit. This means excluding any ignored/unknown - files, and respecting selective commits. Run the pre-commit check - (e.g. compile and run test suite) in there. - - Possibly this should be done by splitting the commit function into - several parts (under a single interface). It is already rather - large. Decomposition: - - - find tree modifications and prepare in-memory inventory - - - export that inventory to a temporary directory - - - run the test in that temporary directory - - - if that succeeded, continue to actually finish the commit - - What should be done with the text of modified files while this is - underway? I don't think we want to count on holding them in memory - and we can't trust the working files to stay in one place so I - suppose we need to move them into the text store, or otherwise into - a temporary directory. - - If the commit does not actually complete, we would rather the - content was not left behind in the stores. - -* Web interface - -* GUI (maybe in Python GTK+?) - -* C library interface - -* Expansion of $Id$ keywords within working files. Perhaps do this in - exports first as a simpler case because then we don't need to deal - with removing the tags on the way back in. - -* ``bzr find`` - -Selftest --------- - -* Write some benchmark tests - -* we could display the ids of some tests selected by time to rune, or cputime, - rusage. - -* We could run tests multiple times and report deviation/slowest/fastest. - -* Gather lsprofile output for each test individually - log that somewhere. - -* Should plugins be able to offer benchmark tests ? - -CHANGESETS ----------- -Ensure changeset command behaves properly w/revisions (e.g. 0) -Figure out whether testament-related bug is my problem -Get rid of the 'old' directory -Bundle signatures -What to do about ghost ancestors in remote branch that are present locally? +For things to do in Bazaar development, see + +https://bugs.launchpad.net/bzr/ +https://blueprints.launchpad.net/bzr/ === modified file doc/tutorial.txt // last-changed:elliot.murphy@canonical.com- ... 20070403225812-yopxs3blqm1ed1uq --- doc/tutorial.txt +++ doc/tutorial.txt @@ -122,12 +122,12 @@ To set a global identity, use:: - % bzr whoami 'Your Name ' + % bzr whoami "Your Name " If you'd like to use a different address for a specific branch, enter the branch folder and use:: - % bzr whoami --branch 'Your Name ' + % bzr whoami --branch "Your Name " #. Setting the email address in the ``~/.bazaar/bazaar.conf`` [1]_ by adding the following lines. Please note that ``[DEFAULT]`` is case sensitive:: === modified directory // last-changed:mbp@sourcefrog.net-20070404061754-219dh ... 4vrn8309pbp # revision id: mbp@sourcefrog.net-20070404061754-219dh4vrn8309pbp # sha1: 96b8f44c56aab81af4c552c93069ae62b06170e7 # inventory sha1: 84125d7a355bf6e15d7757dfe2100edb359fba19 # parent ids: # mbp@sourcefrog.net-20070404061731-tt2xrzllqhbodn83 # base id: pqm@pqm.ubuntu.com-20070402183941-55dc90797840300e # properties: # branch-nick: doc # message: # Contents of TODO file moved into bug tracker # committer: Martin Pool # date: Wed 2007-04-04 16:17:31.904999971 +1000 === modified file TODO // encoding:base64 LS0tIFRPRE8KKysrIFRPRE8KQEAgLTEsMzU3ICsxLDQgQEAKLSogcXVvdGVmbiBkb3VibGVzIGFs bCBiYWNrc2xhc2hlcyBvbiBXaW5kb3dzOyB0aGlzIGlzIHByb2JhYmx5IG5vdCB0aGUKLSAgYmVz dCB0aGluZyB0byBkby4gIFdoYXQgd291bGQgYmUgYSBiZXR0ZXIgd2F5IHRvIHNhZmVseSByZXBy ZXNlbnQKLSAgZmlsZW5hbWVzPyAgUGVyaGFwcyB3ZSBjb3VsZCBkb3VibGVxdW90ZSB0aGluZ3Mg Y29udGFpbmluZyBzcGFjZXMsCi0gIG9uIHRoZSBwcmluY2lwbGUgdGhhdCBmaWxlbmFtZXMgY29u dGFpbmluZyBxdW90ZXMgYXJlIHVubGlrZWx5PwotICBOaWNlIGZvciBodW1hbnM7IGxlc3MgZ29v ZCBmb3IgbWFjaGluZSBwYXJzaW5nLgotCi0qIEJyYW5jaC51cGRhdGVfcmV2aXNpb25zKCkgaW5l ZmZpY2llbnRseSBmZXRjaGVzIHJldmlzaW9ucyBmcm9tIHRoZQotICByZW1vdGUgc2VydmVyIHR3 aWNlOyBvbmNlIHRvIGZpbmQgb3V0IHdoYXQgdGV4dCBhbmQgaW52ZW50b3J5IHRoZXkKLSAgbmVl ZCBhbmQgdGhlbiBhZ2FpbiB0byBhY3R1YWxseSBnZXQgdGhlIHRoaW5nLiAgVGhpcyBpcyBhIGJp dAotICBpbmVmZmljaWVudC4KLQotICBPbmUgY29tcGxpY2F0aW5nIGZhY3RvciBoZXJlIGlzIHRo YXQgd2UgZG9uJ3QgcmVhbGx5IHdhbnQgdG8gaGF2ZQotICByZXZpc2lvbnMgcHJlc2VudCBpbiB0 aGUgcmV2aXNpb24tc3RvcmUgdW50aWwgYWxsIHRoZWlyIGNvbnN0aXR1ZW50Ci0gIHBhcnRzIGFy ZSBhbHNvIHN0b3JlZC4KLQotICBUaGUgYmFzaWMgcHJvYmxlbSBpcyB0aGF0IFJlbW90ZUJyYW5j aC5nZXRfcmV2aXNpb24oKSBhbmQgc2ltaWxhcgotICBtZXRob2RzIHJldHVybiBvYmplY3QsIGJ1 dCB3aGF0IHdlIHJlYWxseSB3YW50IGlzIHRoZSByYXcgWE1MLCB3aGljaAotICBjYW4gYmUgcG9w cGVkIGludG8gb3VyIG93biBzdG9yZS4gIFRoYXQgbmVlZHMgdG8gYmUgcmVmYWN0b3JlZC4KLQot KiBHdWFyZCBhZ2FpbnN0IHJlcGVhdGVkbHkgbWVyZ2luZyBhbnkgcGFydGljdWxhciBwYXRjaC4K LQotKiBNb3JlIG9wdGlvbnMgZm9yIGRpZmY6Ci0KLSAgLSBkaWZmIHR3byByZXZpc2lvbnMgb2Yg dGhlIHNhbWUgdHJlZQotCi0gIC0gZGlmZiB0d28gZGlmZmVyZW50IGJyYW5jaGVzLCBvcHRpb25h bGx5IGF0IGRpZmZlcmVudCByZXZpc2lvbnMKLQotICAtIGRpZmYgYSBwYXJ0aWN1bGFyIGZpbGUg aW4gYW5vdGhlciB0cmVlIGFnYWluc3QgdGhlIGNvcnJlc3BvbmRpbmcKLSAgICB2ZXJzaW9uIGlu IHRoaXMgdHJlZSAod2hpY2ggc2hvdWxkIGJlIHRoZSBkZWZhdWx0IGlmIHRoZSBzZWNvbmQKLSAg ICBwYXJhbWV0ZXIgaXMgYSB0cmVlIHJvb3QpCi0KLSAgLSBkaWZmIGV2ZXJ5dGhpbmcgdW5kZXIg YSBwYXJ0aWN1bGFyIGRpcmVjdG9yeSwgaW4gYW55IG9mIHRoZSBhYm92ZQotICAgIHdheXMKLQot ICAtIGRpZmYgdHdvIGZpbGVzIGluc2lkZSB0aGUgc2FtZSB0cmVlLCBldmVuIGlmIHRoZXkgaGF2 ZSBkaWZmZXJlbnQKLSAgICBpZHMKLQotICAtIGFuZCwgb2YgY291cnNlLCB0ZXN0cyBmb3IgYWxs IHRoaXMKLQotKiBSZXByb2R1Y2libGUgcGVyZm9ybWFuY2UgYmVuY2htYXJrIHRvIG1lYXN1cmUg d2hldGhlciBwZXJmb3JtYW5jZSBpcyAKLSAgZ2V0dGluZyBiZXR0ZXIgb3Igd29yc2UuCi0KLSog YGBienIgbG9nIC1tIGZvb2BgIHNob3VsZCBwZXJoYXBzIGVycm9yIGlmIG5vdGhpbmcgbWF0Y2hl cz8KLQotKiBgYGJ6ciBkaWZmIC1yIDMwIC1yIDQwIGZvby5jYGAgb3IgYGBienIgZGlmZiAtcjMw Li40MCBmb28uY2BgCi0KLSAgSWYgZGlmZmluZyBiZXR3ZWVuIHR3byBicmFuY2hlcyB0aGVuIHdl IHByb2JhYmx5IHdhbnQgdHdvIC1yCi0gIG9wdGlvbnMsIHNpbmNlIHRoZSByZXZpc2lvbnMgZG9u J3QgZm9ybSBhIHJhbmdlIHRoYXQgY2FuIGJlCi0gIGV2YWx1YXRlZCBvbiBlaXRoZXIgb25lLgot Ci0qIGJ6ciBkaWZmIHNob3VsZG4ndCBkaWZmIGJpbmFyeSBmaWxlcwotCi0qIHNldHVwLnB5IGlu c3RhbGwgd2hlbiBydW4gZnJvbSBhIGJ6ciB0cmVlIHNob3VsZCBmcmVlemUgdGhlIHRyZWUKLSAg cmV2aXNpb24taWQgaW50byB0aGUgaW5zdGFsbGVkIGJ6ci4KLQotKiBienIgc2NyaXB0IHNob3Vs ZCB0cmFwIEltcG9ydEVycm9yIGFuZCBwZXJoYXBzIGdpdmUgYSBiZXR0ZXIgZXJyb3IKLSAgbWVz c2FnZT8KLQotKiByZXZlcnQgYWZ0ZXIgYSBtZXJnZSBzaG91bGQgcG9zc2libHkgcmVtb3ZlIGFs bCB0aGUgQkFTRS9USElTL09USEVSCi0gIGZpbGVzIHRvIGdldCB5b3UgYmFjayB0byB3aGVyZSB5 b3Ugd2VyZS4KLQotKiBmaWxlcyB0aGF0IGFyZSBhZGRlZCBhbmQgdGhlbiBkZWxldGVkIGFyZSBz dGlsbCByZXBvcnRlZCBhcyBhZGRlZAotCi0qIHN0b3JlcyBzaG91bGQgcmFpc2UgS2V5RXJyb3Is IG5vdCBJbmRleEVycm9yCi0KLSogbWVyZ2luZyBmcm9tIGEgcmVtb3RlIGJyYW5jaCBzZWVtcyB0 byBzb21ldGltZXMgcmFpc2UgZXJyb3JzIG5vdAotICBwcmVzZW50IGxvY2FsbHkKLQotKiBzaG91 bGQgYmUgcG9zc2libGUgdG8gZ2l2ZSBhIHJlbGF0ZWQgYnJhbmNoIHdoZW4gcHVsbGluZyBmcm9t IGEKLSAgcmVtb3RlIGJyYW5jaCB0byBtYWtlIHRoaW5ncyBmYXN0ZXIKLQotKiBzb21ldGltZXMg Z2l2ZXMgImNvbmZsaWN0aW5nIGFkZCIgZXZlbiB3aGVuIHRoZSBjb250ZW50cyBhcmUgaW4gZmFj dAotICB0aGUgc2FtZT8/PwotCi0qIEJaUkRJUiBzaG91bGQgYmUgaW4gYnJhbmNoLnB5IG5vdCBf X2luaXRfXy5weS4KLQotKiBienJsaWIuZGVsdGEuY29tcGFyZV90cmVlcygpIHNob3VsZG4ndCBu ZWVkIHRvIHNvcnQgYWxsIG9mIHRoZSByZXN1bHQKLSAgbGlzdHMsIHNpbmNlIHRoZXkgYXJlIGJl aW5nIGFkZGVkIGluIGFscGhhYmV0aWNhbCBvcmRlci4gV3JpdGUgdGVzdHMKLSAgdG8gZ3VhcmFu dGVlIHRoaXMsIGFuZCByZW1vdmUgdGhlIHNvcnQoKSBjYWxscy4KLQotTWVkaXVtIHRoaW5ncwot LS0tLS0tLS0tLS0tLQotCi0qIG1lcmdlIHNob3VsZCBhZGQgYWxsIHJldmlzaW9uIGFuZCBpbnZl bnRvcnkgWE1MIHRvIHRoZSBsb2NhbCBzdG9yZS4KLQotKiBjaGVjayBzaG91bGQgZ2l2ZSBhIHdh cm5pbmcgZm9yIHJldmlzaW9ucyB0aGF0IGFyZSBuYW1lZCBpbiB0aGUKLSAgY2hhaW4gYnV0IG5v dCBhY3R1YWxseSBwcmVzZW50IGluIHRoZSBzdG9yZS4KLQotKiByZW1vdmUgYW55dGhpbmcgb3V0 c2lkZSBvZiB0aGUgYnJhbmNoIGltcGxlbWVudGF0aW9uIHRoYXQgZGlyZWN0bHkKLSAgYWNjZXNz ZXMgdGhlIHN0b3Jlcy4KLQotKiBNb3JlIGVmZmljaWVudCBkaWZmIG9mIG9ubHkgc2VsZWN0ZWQg ZmlsZXMuICBXZSBzaG91bGQgYmUgYWJsZSB0bwotICBqdXN0IGdldCB0aGUgaWQgZm9yIHRoZSBz ZWxlY3RlZCBmaWxlcywgbG9vayB1cCB0aGVpciBsb2NhdGlvbiBhbmQKLSAgZGlmZiBqdXN0IHRo b3NlIGZpbGVzLiAgTm8gbmVlZCB0byB0cmF2ZXJzZSB0aGUgZW50aXJlIGludmVudG9yaWVzLgot Ci0qIEZpeCB1cCBJbnZlbnRvcnkgb2JqZWN0cyB0byByZXByZXNlbnQgcm9vdCBvYmplY3QgYXMg YW4gZW50cnkuCi0KLSogRG9uJ3QgY29udmVydCBlbnRpcmUgZW50cnkgZnJvbSBFbGVtZW50VHJl ZSB0byBhbiBvYmplY3Qgd2hlbiBpdCBpcwotICByZWFkIGluLCBidXQgcmF0aGVyIHdhaXQgdW50 aWwgdGhlIHByb2dyYW0gYWN0dWFsbHkgd2FudHMgdG8ga25vdwotICBhYm91dCB0aGF0IG5vZGUu Ci0KLSogRXh0cmFjdCBjaGFuZ2VzIGZyb20gb25lIHJldmlzaW9uIHRvIHRoZSBuZXh0IHRvIGEg dGV4dCBmb3JtCi0gIHN1aXRhYmxlIGZvciB0cmFuc21pc3Npb24gb3ZlciBlbWFpbC4KLQotKiBN b3JlIHRlc3QgY2FzZXMuCi0KLSAgLSBgYG1pc3NpbmdgYCBjb21tYW5kCi0KLSAgLSBTZWxlY3Rl ZC1maWxlIGNvbW1pdAotCi0gIC0gSW1wb3NzaWJsZSBzZWxlY3RlZC1maWxlIGNvbW1pdDogYWRk aW5nIHRoaW5ncyBpbiBub24tdmVyc2lvbmVkCi0gICAgZGlyZWN0b3JpZXMsIGNyb3NzaW5nIHJl bmFtZXMsIGV0Yy4KLQotKiBXcml0ZSBhIHJlcHJvZHVjaWJsZSBiZW5jaG1hcmssIHBlcmhhcHMg aW1wb3J0aW5nIHZhcmlvdXMga2VybmVsIHZlcnNpb25zLgotCi0qIERpcmVjdGx5IGltcG9ydCBk aWZmcyEgIEl0IHNlZW1zIGEgYml0IHJlZHVuZGFudCB0byBuZWVkIHRvIHJlc2NhbgotICB0aGUg ZGlyZWN0b3J5IHRvIHdvcmsgb3V0IHdoYXQgZmlsZXMgZGlmZiBhZGRlZC9kZWxldGVkL2NoYW5n ZWQgd2hlbgotICBhbGwgdGhlIGluZm9ybWF0aW9uIGlzIHRoZXJlIGluIHRoZSBkaWZmIGluIHRo ZSBmaXJzdCBwbGFjZS4KLSAgR2V0dGluZyB0aGUgZXhhY3QgYmVoYXZpb3VyIGZvciBhZGRlZC9k ZWxldGVkIHN1YmRpcmVjdG9yaWVzIGV0YwotICBtaWdodCBiZSBoYXJkLgotCi0gIEF0IHRoZSB2 ZXJ5IGxlYXN0IHdlIGNvdWxkIHJ1biBkaWZmc3RhdCBvdmVyIHRoZSBkaWZmLCBvciBwZXJoYXBz Ci0gIHJlYWQgdGhlIHN0YXR1cyBvdXRwdXQgZnJvbSBwYXRjaC4gIEp1c3Qga25vd2luZyB3aGlj aCBmaWxlcyBtaWdodAotICBiZSBtb2RpZmllZCB3b3VsZCBiZSBlbm91Z2ggdG8gZ3VpZGUgdGhl IGFkZCBhbmQgY29tbWl0LgotCi0gIEdpdmVuIHRoaXMgd2UgbWlnaHQgYmUgYWJsZSB0byBpbXBv cnQgcGF0Y2hlcyBhdCAxL3NlY29uZCBvciBiZXR0ZXIuCi0KLSogcmV2ZmlsZSBjb21wcmVzc2lv bi4KLQotKiBTcGxpdCBpbnZlbnRvcnkgaW50byBwZXItZGlyZWN0b3J5IGZpbGVzPwotCi0qIEZp eCBpZ25vcmUgZmlsZSBwYXJzaW5nOgotCi0gIC0gZm5tYXRjaCBpcyBub3QgdGhlIHNhbWUgYXMg dW5peCBwYXR0ZXJucwotCi0gIC0gcGVyaGFwcyBhZGQgZXh0ZW5kZWQgZ2xvYnMgZnJvbSByc2gv cnN5bmMKLQotICAtIHBlcmhhcHMgYSBwYXR0ZXJuIHRoYXQgbWF0Y2hlcyBvbmx5IGRpcmVjdG9y aWVzIG9yIG5vbi1kaXJlY3RvcmllcwotCi0qIENvbnNpZGVyIHVzaW5nIFB5dGhvbiBsb2dnaW5n IGxpYnJhcnkgYXMgd2VsbCBhcy9pbnN0ZWFkIG9mCi0gIGJ6cmxpYi50cmFjZS4KLQotKiBDb21t YW5kcyBzaG91bGQgZ2l2ZSBzb21lIHByb2dyZXNzIGluZGljYXRpb24gYnkgZGVmYXVsdC4KLQot ICAtIEJ1dCBxdWlldGVuIHRoaXMgd2l0aCBgYC0tc2lsZW50YGAuCi0KLSogQ2hhbmdlIHRvIHVz aW5nIGdldHRleHQgbWVzc2FnZSBsb2NhbGl6YXRpb24uCi0KLSogTWFrZSBhIGNsZWFyZXIgc2Vw YXJhdGlvbiBiZXR3ZWVuIGludGVybmFsIGFuZCBleHRlcm5hbCBienJsaWIKLSAgaW50ZXJmYWNl cy4gIE1ha2UgaW50ZXJuYWwgaW50ZXJmYWNlcyB1c2UgcHJvdGVjdGVkIG5hbWVzLiAgV3JpdGUg YXQKLSAgbGVhc3Qgc29tZSBkb2N1bWVudGF0aW9uIGZvciB0aG9zZSBBUElzLCBwcm9iYWJseSBh cyBkb2NzdHJpbmdzLgotCi0gIENvbnNpZGVyIHVzaW5nIFpvcGVJbnRlcmZhY2UgZGVmaW5pdGlv bnMgZm9yIHRoZSBleHRlcm5hbCBpbnRlcmZhY2U7Ci0gIEkgdGhpbmsgdGhlc2UgYXJlIGFscmVh ZHkgdXNlZCBpbiBQeUJhei4gIFRoZXkgYWxsb3cgYXV0b21hdGljCi0gIGNoZWNraW5nIG9mIHRo ZSBpbnRlcmZhY2UgYnV0IG1heSBiZSB1bmZhbWlsaWFyIHRvIGdlbmVyYWwgUHl0aG9uCi0gIGRl dmVsb3BlcnMsIHNvIEknbSBub3QgcmVhbGx5IGtlZW4uCi0KLSogQ29tbWFuZHMgdG8gZHVtcCBv dXQgYWxsIGNvbW1hbmQgaGVscCBpbnRvIGEgbWFucGFnZSBvciBIVE1MIGZpbGUgb3IKLSAgd2hh dGV2ZXIuCi0KLSogSGFuZGxlIHN5bWxpbmtzIGluIHRoZSB3b3JraW5nIGRpcmVjdG9yeTsgYXQg dGhlIHZlcnkgbGVhc3QgaXQKLSAgc2hvdWxkIGJlIHBvc3NpYmxlIGZvciB0aGVtIHRvIGJlIHBy ZXNlbnQgYW5kIGlnbm9yZWQvdW5rbm93bgotICB3aXRob3V0IGNhdXNpbmcgYXNzZXJ0aW9uIGZh aWx1cmVzLgotCi0gIEV2ZW50dWFsbHkgc3ltbGlua3Mgc2hvdWxkIGJlIHZlcnNpb25lZC4KLQot KiBBbGxvdyBpbml0IGluIGEgc3ViZGlyZWN0b3J5IHRvIGNyZWF0ZSBhIG5lc3RlZCByZXBvc2l0 b3J5LCBidXQgb25seQotICBpZiB0aGUgc3ViZGlyZWN0b3J5IGlzIG5vdCBhbHJlYWR5IHZlcnNp b25lZC4gICBQZXJoYXBzIGFsc28gcmVxdWlyZQotICBhIGBgLS1uZXN0ZWRgYCB0byBwcm90ZWN0 IGFnYWluc3QgY29uZnVzaW9uLgotCi0qIEJyYW5jaCBuYW1lcz8KLQotKiBNb3JlIHRlc3QgZnJh bWV3b3JrOgotCi0gIC0gQ2xhc3MgdGhhdCBkZXNjcmliZXMgdGhlIHN0YXRlIG9mIGEgd29ya2lu ZyB0cmVlIHNvIHdlIGNhbiBqdXN0Ci0gICAgYXNzZXJ0IGl0J3MgZXF1YWwuCi0KLSogVHJ5IHVz aW5nIFhTTFQgdG8gYWRkIHNvbWUgZm9ybWF0dGluZyB0byBSRVNULWdlbmVyYXRlZCBIVE1MLiAg T3IKLSAgbWF5YmUgd3JpdGUgYSBzbWFsbCBQeXRob24gcHJvZ3JhbSB0aGF0IHNwZWNpZmllcyBh IGhlYWRlciBhbmQgZm9vdAotICBmb3IgdGhlIHBhZ2VzIGFuZCBjYWxscyBpbnRvIHRoZSBkb2N1 dGlscyBsaWJyYXJpZXMuCi0KLSogLS1mb3JtYXQ9eG1sIGZvciBsb2csIHN0YXR1cyBhbmQgb3Ro ZXIgY29tbWFuZHMuCi0KLSogQXR0ZW1wdGluZyB0byBleHBsaWNpdGx5IGFkZCBhIGZpbGUgdGhh dCdzIGFscmVhZHkgYWRkZWQgc2hvdWxkIGdpdmUKLSAgYSB3YXJuaW5nOyBob3dldmVyIHRoZXJl IHNob3VsZCBiZSBubyB3YXJuaW5nIGZvciBkaXJlY3RvcmllcyAoc2luY2UKLSAgd2Ugc2NhbiBm b3IgbmV3IGNoaWxkcmVuKSBvciBmaWxlcyBlbmNvdW50ZXJlZCBpbiBhIGRpcmVjdG9yeSB0aGF0 J3MKLSAgYmVpbmcgc2Nhbm5lZC4KLQotKiBCZXR0ZXIgaGFuZGxpbmcgb2YgcG9zc2libGUgY29s bGlzaW9ucyBvbiBjYXNlLWxvc2luZyBmaWxlc3lzdGVtczsKLSAgbWFrZSBzdXJlIGEgc2luZ2xl IGZpbGUgZG9lcyBub3QgZ2V0IGFkZGVkIHR3aWNlIHVuZGVyIGRpZmZlcmVudAotICBuYW1lcy4K LQotKiBDbGVhbiB1cCBYTUwgaW52ZW50b3J5OgotCi0gIC0gVXNlIG5lc3RpbmcgcmF0aGVyIHRo YW4gcGFyZW50X2lkIHBvaW50ZXJzLgotCi0gIC0gSG9sZCB0aGUgRWxlbWVudFRyZWUgaW4gbWVt b3J5IGluIHRoZSBJbnZlbnRvcnkgb2JqZWN0IGFuZCB3b3JrCi0gICAgZGlyZWN0bHkgb24gdGhh dCwgcmF0aGVyIHRoYW4gY29udmVydGluZyBpbnRvIFB5dGhvbiBvYmplY3RzIGV2ZXJ5Ci0gICAg dGltZSBpdCBpcyByZWFkIGluLiAgUHJvYmFibHkgc3RpbGwgZXhwb3NlIGl0IHRocm91Z2ggc29t ZSBraW5kIG9mCi0gICAgb2JqZWN0IGludGVyZmFjZSB0aG91Z2gsIGJ1dCBwZXJoYXBzIHRoYXQg c2hvdWxkIGp1c3QgYmUgYSBwcm94eQotICAgIGZvciB0aGUgZWxlbWVudHMuCi0KLSAgLSBMZXNz IHNwZWNpYWwgY2FzZXMgZm9yIHRoZSByb290IGRpcmVjdG9yeS4KLQotKiBQZXJoYXBzIGludmVu dG9yaWVzIHNob3VsZCByZW1lbWJlciB0aGUgcmV2aXNpb24gaW4gd2hpY2ggZWFjaCBmaWxlCi0g IHdhcyBsYXN0IGNoYW5nZWQsIGFzIHdlbGwgYXMgaXRzIGN1cnJlbnQgc3RhdGU/ICBUaGlzIGlz IGEgYml0Ci0gIHJlZHVuZGFudCBidXQgbWlnaHQgb2Z0ZW4gYmUgaW50ZXJlc3RlZCB0byBrbm93 LgotCi0qIHN0YXQgY2FjaGUgc2hvdWxkIHBlcmhhcHMgb25seSBzdGF0IGZpbGVzIGFzIG5lY2Vz c2FyeSwgcmF0aGVyIHRoYW4KLSAgZG9pbmcgdGhlbSBhbGwgdXAtZnJvbnQuICBPbiB0aGUgb3Ro ZXIgaGFuZCwgdGhhdCBkaXNhbGxvd3MgdGhlCi0gIG9wdGltaXphdGlvbiBvZiBzdGF0aW5nIHRo ZW0gaW4gaW5vZGUgb3JkZXIuCi0KLSogSXQnZCBiZSBuaWNlIHRvIHBpcGVsaW5lIG11bHRpcGxl IEhUVFAgcmVxdWVzdHMuICBPZnRlbiB3ZSBjYW4KLSAgcHJlZGljdCB3aGF0IHdpbGwgYmUgd2Fu dGVkIGluIGZ1dHVyZTogYWxsIHJldmlzaW9ucywgb3IgYWxsIHRleHRzCi0gIGluIGEgcGFydGlj dWxhciByZXZpc2lvbiwgZXRjLgotCi0gIHVybGdyYWJiZXIncyBkb2NzIHNheSB0aGV5IGFyZSB3 b3JraW5nIG9uIGJhdGNoZWQgZG93bmxvYWRzOyB3ZQotICBjb3VsZCBwZXJoYXBzIHJpZGUgb24g dGhhdCBvciBqdXN0IGNyZWF0ZSBhIGJhY2tncm91bmQgdGhyZWFkIChldykuCi0KLSogUGFyYW5v aWQgbW9kZSB3aGVyZSB3ZSBuZXZlciB0cnVzdCBTSEEtMSBtYXRjaGVzLgotCi0qIC0tZHJ5LXJ1 biBtb2RlIGZvciBjb21taXQ/ICAoT3IgbWF5YmUganVzdCBydW4gd2l0aAotICBjaGVjay1jb21t YW5kPWZhbHNlPykKLQotKiBHZW5lcmFsbHksIGJlIGEgYml0IG1vcmUgdmVyYm9zZSB1bmxlc3Mg LS1zaWxlbnQgaXMgc3BlY2lmaWVkLgotCi0qIEZ1bmN0aW9uIHRoYXQgZmluZHMgYWxsIGNoYW5n ZXMgdG8gZmlsZXMgdW5kZXIgYSBnaXZlbiBkaXJlY3Rvcnk7Ci0gIHBlcmhhcHMgbG9nIHNob3Vs ZCB1c2UgdGhpcyBpZiBhIGRpcmVjdG9yeSBpcyBnaXZlbi4KLQotKiBYTUwgYXR0cmlidXRlcyBt aWdodCBoYXZlIHRyb3VibGUgd2l0aCBmaWxlbmFtZXMgY29udGFpbmluZyBcbiBhbmQKLSAgXHIu ICBEbyB3ZSByZWFsbHkgd2FudCB0byBzdXBwb3J0IHRoaXM/ICBJIHRoaW5rIHBlcmhhcHMgbm90 LgotCi0qIFVuaWZ5IHNtYXJ0X2FkZCBhbmQgcGxhaW4gQnJhbmNoLmFkZCgpOyBwZXJoYXBzIHNt YXJ0X2FkZCBzaG91bGQKLSAganVzdCBidWlsZCBhIGxpc3Qgb2YgZmlsZXMgdG8gYWRkIGFuZCBw YXNzIHRoYXQgdG8gdGhlIHJlZ3VsYXIgYWRkCi0gIGZ1bmN0aW9uLgotCi0qIEZ1bmN0aW9uIHRv IGxpc3QgYSBkaXJlY3RvcnksIHNheWluZyBpbiB3aGljaCByZXZpc2lvbiBlYWNoIGZpbGUgd2Fz Ci0gIGxhc3QgbW9kaWZpZWQuICBVc2VmdWwgZm9yIHdlYiBhbmQgR1VJIGludGVyZmFjZXMsIGFu ZCBzbG93IHRvCi0gIGNvbXB1dGUgb25lIGZpbGUgYXQgYSB0aW1lLgotICAKLSAgVGhpcyB3aWxs IGJlIGRvbmUgd2hlbiB3ZSB0cmFjayBmaWxlIHRleHRzIGJ5IHJlZmVycmluZyB0byB0aGUKLSAg dmVyc2lvbiB0aGF0IGNyZWF0ZWQgdGhlbS4gCi0KLSogQ2hlY2sgbG9ja2luZyBpcyBjb3JyZWN0 IGR1cmluZyBtZXJnZS1yZWxhdGVkIG9wZXJhdGlvbnMuCi0KLSogUGVyaGFwcyBhdHRlbXB0cyB0 byBnZXQgbG9ja3Mgc2hvdWxkIHRpbWVvdXQgYWZ0ZXIgc29tZSBwZXJpb2Qgb2YKLSAgdGltZSwg b3IgYXQgbGVhc3QgZGlzcGxheSBhIHByb2dyZXNzIG1lc3NhZ2UuCi0KLSogRG9uJ3QgcGFzcyBh cm91bmQgY29tbWFuZCBjbGFzc2VzIGJ1dCByYXRoZXIgcGFzcyBvYmplY3RzLiAgVGhpcydkCi0g IG1ha2UgaXQgY2xlYW5lciB0byBjb25zdHJ1Y3Qgb2JqZWN0cyB3cmFwcGluZyBleHRlcm5hbCBj b21tYW5kcy4KLQotKiBUcmFjayBhbGwgbWVyZ2VkLWluIHJldmlzaW9ucyBpbiBhIHZlcnNpb25l ZCBhZGQtb25seSBtZXRhZmlsZS4KLQotKiBgYHVuY29tbWl0YGAgY29tbWFuZCB0aGF0IHJlbW92 ZXMgYSByZXZpc2lvbiBmcm9tIHRoZSBlbmQgb2YgdGhlCi0gIHJldmlzaW9uLWhpc3Rvcnk7IGp1 c3QgZG9pbmcgdGhpcyBpcyBlbm91Z2ggdG8gcmVtb3ZlIHRoZSBjb21taXQsCi0gIGFuZCBhIG5l dyBjb21taXQgd2lsbCBhdXRvbWF0aWNhbGx5IGJlIG1hZGUgYWdhaW5zdCB0aGUKLSAgcHJlZGVj ZXNzb3IuICBUaGlzIGNhbiBiZSByZXBlYXRlZC4KLQotICBJdCBvbmx5IG1ha2VzIHNlbnNlIHRv IGRlbGV0ZSBmcm9tIHRoZSB0YWlsIG9mIGhpc3RvcnkuCi0KLSAgVGhpcyBoYXMgYmVlbiBpbXBs ZW1lbnRlZCwgYnV0IGl0IGRvZXMgbm90IHJlbW92ZSB0aGUgdGV4dHMgZnJvbQotICB0aGUgc3Rv cmUuCi0KLSogYGBienJsaWIubGF6eV9pbXBvcnQubGF6eV9pbXBvcnRgYCBjb3VsZCBjaGVjayB0 byBzZWUgaWYgYSBnaXZlbgotICBtb2R1bGUgaGFzIGFscmVhZHkgYmVlbiBpbXBvcnRlZCAobG9v ayBhdCBgYHN5cy5tb2R1bGVzYGApLiBJZiBpdAotICBoYXMsIHRoZW4ganVzdCBpbXBvcnQgaXQg ZGlyZWN0bHksIHJhdGhlciB0aGFuIGNyZWF0aW5nIGEgbGF6eQotICBvYmplY3QuCi0KLQotTGFy Z2UgdGhpbmdzCi0tLS0tLS0tLS0tLS0KLQotKiBHZW5lcmF0ZSBhbm5vdGF0aW9ucyBmcm9tIGN1 cnJlbnQgZmlsZSByZWxhdGl2ZSB0byBwcmV2aW91cwotICBhbm5vdGF0aW9ucy4KLQotICAtIElz IGl0IG5lY2Vzc2FyeSB0byBzdG9yZSBhbnkga2luZCBvZiBhbm5vdGF0aW9uIHdoZXJlIGRhdGEg d2FzCi0gICAgZGVsZXRlZD8KLQotKiBVcGRhdGUgcmV2ZmlsZV8gZm9ybWF0IGFuZCBtYWtlIGl0 IGFjdGl2ZToKLQotICAtIFRleHRzIHNob3VsZCBiZSBpZGVudGlmaWVkIGJ5IHNvbWV0aGluZyBr ZXllZCBvbiB0aGUgcmV2aXNpb24sIG5vdAotICAgIGFuIGluZGl2aWR1YWwgdGV4dC1pZC4gIFRo aXMgaXMgbXVjaCBtb3JlIHVzZWZ1bCBmb3IgYW5ub3RhdGUgSQotICAgIHRoaW5rOyB3ZSB3YW50 IHRvIG1hcCBiYWNrIHRvIHRoZSByZXZpc2lvbiB0aGF0IGxhc3QgY2hhbmdlZCBpdC4KLQotICAt IEFjY2VzcyByZXZmaWxlIHJldmlzaW9ucyB0aHJvdWdoIHRoZSBUcmVlL1N0b3JlIGNsYXNzZXMu Ci0KLSAgLSBDaGVjayB0aGVtIGZyb20gY2hlY2sgY29tbWFuZHMuCi0KLSAgLSBTdG9yZSBhbm5v dGF0aW9ucy4KLQotLi4gX3JldmZpbGU6IHJldmZpbGUuaHRtbAotCi0qIEhvb2tzIGZvciBwcmUt Y29tbWl0LCBwb3N0LWNvbW1pdCwgZXRjLgotCi0gIENvbnNpZGVyIHRoZSBzZWN1cml0eSBpbXBs aWNhdGlvbnM7IHByb2JhYmx5IHNob3VsZCBub3QgZW5hYmxlIGhvb2tzCi0gIGZvciByZW1vdGVs eS1mZXRjaGVkIGJyYW5jaGVzIGJ5IGRlZmF1bHQuCi0KLSogUHJlLWNvbW1pdCBjaGVjay4gIElm IHRoaXMgaG9vayBpcyBkZWZpbmVkLCBpdCBuZWVkcyB0byBiZSBoYW5kbGVkCi0gIHNwZWNpYWxs eTogY3JlYXRlIGEgdGVtcG9yYXJ5IGRpcmVjdG9yeSBjb250YWluaW5nIHRoZSB0cmVlIGFzIGl0 Ci0gIHdpbGwgYmUgYWZ0ZXIgdGhlIGNvbW1pdC4gIFRoaXMgbWVhbnMgZXhjbHVkaW5nIGFueSBp Z25vcmVkL3Vua25vd24KLSAgZmlsZXMsIGFuZCByZXNwZWN0aW5nIHNlbGVjdGl2ZSBjb21taXRz LiAgUnVuIHRoZSBwcmUtY29tbWl0IGNoZWNrCi0gIChlLmcuIGNvbXBpbGUgYW5kIHJ1biB0ZXN0 IHN1aXRlKSBpbiB0aGVyZS4KLQotICBQb3NzaWJseSB0aGlzIHNob3VsZCBiZSBkb25lIGJ5IHNw bGl0dGluZyB0aGUgY29tbWl0IGZ1bmN0aW9uIGludG8KLSAgc2V2ZXJhbCBwYXJ0cyAodW5kZXIg YSBzaW5nbGUgaW50ZXJmYWNlKS4gIEl0IGlzIGFscmVhZHkgcmF0aGVyCi0gIGxhcmdlLiAgRGVj b21wb3NpdGlvbjoKLQotICAgLSBmaW5kIHRyZWUgbW9kaWZpY2F0aW9ucyBhbmQgcHJlcGFyZSBp bi1tZW1vcnkgaW52ZW50b3J5Ci0KLSAgIC0gZXhwb3J0IHRoYXQgaW52ZW50b3J5IHRvIGEgdGVt cG9yYXJ5IGRpcmVjdG9yeQotCi0gICAtIHJ1biB0aGUgdGVzdCBpbiB0aGF0IHRlbXBvcmFyeSBk aXJlY3RvcnkKLQotICAgLSBpZiB0aGF0IHN1Y2NlZWRlZCwgY29udGludWUgdG8gYWN0dWFsbHkg ZmluaXNoIHRoZSBjb21taXQKLQotICBXaGF0IHNob3VsZCBiZSBkb25lIHdpdGggdGhlIHRleHQg b2YgbW9kaWZpZWQgZmlsZXMgd2hpbGUgdGhpcyBpcwotICB1bmRlcndheT8gIEkgZG9uJ3QgdGhp bmsgd2Ugd2FudCB0byBjb3VudCBvbiBob2xkaW5nIHRoZW0gaW4gbWVtb3J5Ci0gIGFuZCB3ZSBj YW4ndCB0cnVzdCB0aGUgd29ya2luZyBmaWxlcyB0byBzdGF5IGluIG9uZSBwbGFjZSBzbyBJCi0g IHN1cHBvc2Ugd2UgbmVlZCB0byBtb3ZlIHRoZW0gaW50byB0aGUgdGV4dCBzdG9yZSwgb3Igb3Ro ZXJ3aXNlIGludG8KLSAgYSB0ZW1wb3JhcnkgZGlyZWN0b3J5LgotCi0gIElmIHRoZSBjb21taXQg ZG9lcyBub3QgYWN0dWFsbHkgY29tcGxldGUsIHdlIHdvdWxkIHJhdGhlciB0aGUKLSAgY29udGVu dCB3YXMgbm90IGxlZnQgYmVoaW5kIGluIHRoZSBzdG9yZXMuCi0KLSogV2ViIGludGVyZmFjZQot Ci0qIEdVSSAobWF5YmUgaW4gUHl0aG9uIEdUSys/KQotCi0qIEMgbGlicmFyeSBpbnRlcmZhY2UK LQotKiBFeHBhbnNpb24gb2YgJElkJCBrZXl3b3JkcyB3aXRoaW4gd29ya2luZyBmaWxlcy4gIFBl cmhhcHMgZG8gdGhpcyBpbgotICBleHBvcnRzIGZpcnN0IGFzIGEgc2ltcGxlciBjYXNlIGJlY2F1 c2UgdGhlbiB3ZSBkb24ndCBuZWVkIHRvIGRlYWwKLSAgd2l0aCByZW1vdmluZyB0aGUgdGFncyBv biB0aGUgd2F5IGJhY2sgaW4uCi0KLSogYGBienIgZmluZGBgCi0KLVNlbGZ0ZXN0Ci0tLS0tLS0t LQotCi0qIFdyaXRlIHNvbWUgYmVuY2htYXJrIHRlc3RzCi0KLSogd2UgY291bGQgZGlzcGxheSB0 aGUgaWRzIG9mIHNvbWUgdGVzdHMgc2VsZWN0ZWQgYnkgdGltZSB0byBydW5lLCBvciBjcHV0aW1l LAotICBydXNhZ2UuIAotCi0qIFdlIGNvdWxkIHJ1biB0ZXN0cyBtdWx0aXBsZSB0aW1lcyBhbmQg cmVwb3J0IGRldmlhdGlvbi9zbG93ZXN0L2Zhc3Rlc3QuCi0KLSogR2F0aGVyIGxzcHJvZmlsZSBv dXRwdXQgZm9yIGVhY2ggdGVzdCBpbmRpdmlkdWFsbHkgLSBsb2cgdGhhdCBzb21ld2hlcmUuCi0K LSogU2hvdWxkIHBsdWdpbnMgYmUgYWJsZSB0byBvZmZlciBiZW5jaG1hcmsgdGVzdHMgPwotCi1D SEFOR0VTRVRTCi0tLS0tLS0tLS0tCi1FbnN1cmUgY2hhbmdlc2V0IGNvbW1hbmQgYmVoYXZlcyBw cm9wZXJseSB3L3JldmlzaW9ucyAoZS5nLiAwKQotRmlndXJlIG91dCB3aGV0aGVyIHRlc3RhbWVu dC1yZWxhdGVkIGJ1ZyBpcyBteSBwcm9ibGVtCi1HZXQgcmlkIG9mIHRoZSAnb2xkJyBkaXJlY3Rv cnkKLUJ1bmRsZSBzaWduYXR1cmVzCi1XaGF0IHRvIGRvIGFib3V0IGdob3N0IGFuY2VzdG9ycyBp biByZW1vdGUgYnJhbmNoIHRoYXQgYXJlIHByZXNlbnQgbG9jYWxseT8KK0ZvciB0aGluZ3MgdG8g ZG8gaW4gQmF6YWFyIGRldmVsb3BtZW50LCBzZWUKKworaHR0cHM6Ly9idWdzLmxhdW5jaHBhZC5u ZXQvYnpyLworaHR0cHM6Ly9ibHVlcHJpbnRzLmxhdW5jaHBhZC5uZXQvYnpyLwoK === modified directory // last-changed:mbp@sourcefrog.net-20070404061731-tt2xr ... zllqhbodn83 # revision id: mbp@sourcefrog.net-20070404061731-tt2xrzllqhbodn83 # sha1: 83f2fdd0de9e1d698473ea0982931a6495b31dbd # inventory sha1: 517aad42adfded5c2b15fe4904189d081816f246 # parent ids: # mbp@sourcefrog.net-20070404012211-sq269me6bai9m6xk # properties: # branch-nick: doc # message: # merge trunk and doc fix from elliot # committer: Martin Pool # date: Wed 2007-04-04 11:22:11.450000048 +1000 === removed file NEWS.developers === modified file INSTALL // last-changed:mbp@sourcefrog.net-20070404011507-l85 ... 4uqbc192pnbgj // encoding:base64 LS0tIElOU1RBTEwKKysrIElOU1RBTEwKQEAgLTI0LDMgKzI0LDYgQEAKIAogICBweXRob24gc2V0 dXAucHkgaW5zdGFsbAogCitGb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiBpbnN0YWxsYXRpb24sIHNl ZQoraHR0cDovL2JhemFhci12Y3Mub3JnL0luc3RhbGxhdGlvbkZhcQorb3Igd3JpdGUgdG8gYmF6 YWFyQGxpc3RzLmNhbm9uaWNhbC5jb20uCgo= === modified file NEWS // encoding:base64 LS0tIE5FV1MKKysrIE5FV1MKQEAgLTIyNjgsNiArMjI2OCwyNCBAQAogICAgICAgYnpyIGJyYW5j aCBpdCBjYW5ub3QgdW5kZXJzdGFuZC4gVGhpcyBhbGxvd3MgZm9yIHByZWNpc2UKICAgICAgIGhh bmRsaW5nIG9mIHN1Y2ggY2lyY3Vtc3RhbmNlcy4KIAorICAgICogUmVtb3ZlIFJldmlzaW9uUmVm ZXJlbmNlIGNsYXNzOyBSZXZpc2lvbi5wYXJlbnRfaWRzIGlzIG5vdyBzaW1wbHkgYQorICAgICAg bGlzdCBvZiB0aGVpciBpZHMgYW5kIHBhcmVudF9zaGExcyBpcyBhIGxpc3Qgb2YgdGhlaXIgY29y cmVzcG9uZGluZworICAgICAgc2hhMXMgKGZvciBvbGQgYnJhbmNoZXMgb25seSBhdCB0aGUgbW9t ZW50LikKKworICAgICogTmV3IG1ldGhvZC1vYmplY3Qgc3R5bGUgaW50ZXJmYWNlIGZvciBDb21t aXQoKSBhbmQgRmV0Y2goKS4KKworICAgICogUmVuYW1lZCBCcmFuY2gubGFzdF9wYXRjaCgpIHRv IEJyYW5jaC5sYXN0X3JldmlzaW9uKCksIHNpbmNlCisgICAgICB3ZSBjYWxsIHRoZW0gcmV2aXNp b25zIG5vdCBwYXRjaGVzLgorCisgICAgKiBNb3ZlIGNvcHlfYnJhbmNoIHRvIGJ6cmxpYi5jbG9u ZS5jb3B5X2JyYW5jaC4gIFRoZSBkZXN0aW5hdGlvbgorICAgICAgZGlyZWN0b3J5IGlzIGNyZWF0 ZWQgaWYgaXQgZG9lc24ndCBleGlzdC4KKworICAgICogSW52ZW50b3JpZXMgbm93IGlkZW50aWZ5 IHRoZSBmaWxlcyB3aGljaCB3ZXJlIHByZXNlbnQgYnkgCisgICAgICBnaXZpbmcgdGhlIHJldmlz aW9uICpvZiB0aGF0IGZpbGUqLgorCisgICAgKiBJbnZlbnRvcnkgYW5kIFJldmlzaW9uIFhNTCBj b250YWlucyBhIHZlcnNpb24gaWRlbnRpZmllci4gIAorICAgICAgVGhpcyBtdXN0IGJlIGNvbnNp c3RlbnQgd2l0aCB0aGUgb3ZlcmFsbCBicmFuY2ggdmVyc2lvbgorICAgICAgYnV0IGFsbG93cyBm b3IgbW9yZSBmbGV4aWJpbGl0eSBpbiBmdXR1cmUgdXBncmFkZXMuCiAKICAgVEVTVElORzoKIAoK === modified file TODO // last-changed:mbp@sourcefrog.net-20070404011452-zu2bwb ... 9ajc78m37s // encoding:base64 LS0tIFRPRE8KKysrIFRPRE8KQEAgLTEsMTE5ICsxLDkgQEAKLS4uIC0qLSBtb2RlOiBpbmRlbnRl ZC10ZXh0OyBjb21waWxlLWNvbW1hbmQ6ICJtYWtlIC1DIGRvYyIgLSotCi0KLQotKioqKioqKioq KioqKioqKioqKgotVGhpbmdzIHRvIGRvIGluIGJ6cgotKioqKioqKioqKioqKioqKioqKgotCi0K LVNlZSBhbHNvIHZhcmlvdXMgbG93LWxldmVsIFRPRE9zIGluIHRoZSBzb3VyY2UgY29kZS4gIFRy eSBsb29raW5nIGluCi10aGUgbGlzdCBhcmNoaXZlIG9yIG9uIGdtYW5lLm9yZyBmb3IgcHJldmlv dXMgZGlzY3Vzc2lvbiBvZiB0aGVzZQotaXNzdWVzLgotCi1UaGVzZSBhcmUgY2xhc3NpZmllZCBi eSBhcHByb3hpbWF0ZSBzaXplOiBhbiBob3VyIG9yIGxlc3MsIGEgZGF5IG9yCi1sZXNzLCBhbmQg c2V2ZXJhbCBkYXlzIG9yIG1vcmUuCi0KLQotU21hbGwgdGhpbmdzCi0tLS0tLS0tLS0tLS0KLQot KiBGaXggdGVzdHMgc28gdGhhdCBpbXBvcnQgZXJyb3JzIGNhdXNlZCBieSBtb2R1bGVzIGRvbid0 IHByb2R1Y2UgZmFsc2UgcmVwb3J0cwotICB0aGF0IHRoZSB0ZXN0cyB0aGVtc2VsdmVzIGRvbid0 IGV4aXN0LgotCi0qIEZpeCB0ZXN0cyBzbyB0aGF0IG9uZSB0ZXN0IGZhaWx1cmUgZG9lc24ndCBw cmV2ZW50IG90aGVyIHRlc3RzIGZyb20gcnVubmluZwotCi0qIHByaW50IGEgbWVzc2FnZSBhdCB0 aGUgZW5kIG9mIHJ1bm5pbmcgdGhlIHRlc3RzIHRlbGxpbmcgdGhlbSB0aGF0IHRoZQotICB0ZXN0 IGxvZyBhbmQgb3V0cHV0IGV4aXN0cyBidXQgY2FuIGJlIHJlbW92ZWQKLQotKiB0ZXN0cyBmb3Ig cnVubmluZyB0aGUgY29tbWl0IGVkaXRvciwgYW5kIGZpeCBwcm9ibGVtIG9mIG5vdCBwYXNzaW5n IGluIAotICBtdWx0aXBsZSBhcmd1bWVudHMKLQotKiBNZXJnaW5nIGFkZCBvZiBhIG5ldyBmaWxl IGNsYXNoaW5nIHdpdGggYW4gZXhpc3RpbmcgZmlsZSBkb2Vzbid0Ci0gIHdvcms7IGFkZCBnZXRz IGFuIGVycm9yIHRoYXQgaXQncyBhbHJlYWR5IHZlcnNpb25lZCBhbmQgdGhlIG1lcmdlCi0gIGFi b3J0cy4KLQotKiBNZXJnZSBzaG91bGQgaWdub3JlIHRoZSBkZXN0aW5hdGlvbidzIHdvcmtpbmcg ZGlyZWN0b3J5LCBvdGhlcndpc2UKLSAgd2UgZ2V0IGFuIGVycm9yIGFib3V0IHRoZSBzdGF0Y2Fj aGUgd2hlbiBwdWxsaW5nIGZyb20gYSByZW1vdGUKLSAgYnJhbmNoLgotCi0qIEFkZCBvZiBhIGZp bGUgdGhhdCB3YXMgcHJlc2VudCBpbiB0aGUgYmFzZSByZXZpc2lvbiBzaG91bGQgcHV0IGJhY2sK LSAgdGhlIHByZXZpb3VzIGZpbGUtaWQuCi0KLSogTm90IHN1cmUgSSdtIGhhcHB5IHdpdGggbmVl ZGluZyB0byBwYXNzIGEgcm9vdCBpZCB0byBFbXB0eVRyZWU7Ci0gIGNvbXBhcmluZyBhbnl0aGlu ZyBhZ2FpbnN0IGFuIEVtcHR5VHJlZSB3aXRoIG5vIHJvb3Qgc2hvdWxkIGhhdmUgdGhlCi0gIHNh bWUgZWZmZWN0KD8pCi0KLSogSGFuZGxlIGRpZmYgb2YgZmlsZXMgd2hpY2ggZG8gbm90IGhhdmUg YSB0cmFpbGluZyBuZXdsaW5lOyBwcm9iYWJseQotICByZXF1aXJlcyBwYXRjaGluZyBkaWZmbGli IHRvIGdldCBpdCBleGFjdGx5IHJpZ2h0LCBvciBvdGhlcndpc2UKLSAgY2FsbGluZyBvdXQgdG8g R05VIGRpZmYuCi0KLSogU2hvdWxkIGJlIGFibGUgdG8gY29weSBmaWxlcyBiZXR3ZWVuIGJyYW5j aGVzIHRvIHByZXNlcnZlIHRoZWlyCi0gIGZpbGUtaWQgKGFuZCBwZXJoYXBzIGV2ZW50dWFsbHkg cGFyZW50YWdlLikKLQotKiAtciBvcHRpb24gc2hvdWxkIHRha2UgYSByZXZpc2lvbi1pZCBhcyB3 ZWxsIGFzIGEgcmV2bm8uCi0KLSogYGBienIgaW5mb2BgIHNob3VsZCBjb3VudCBvbmx5IHBlb3Bs ZSB3aXRoIGRpc3RpbmN0IGVtYWlsIGFkZHJlc3NlcyBhcwotICBkaWZmZXJlbnQgY29tbWl0dGVy cy4gIChPciBwZXJoYXBzIG9ubHkgZGlzdGluY3QgdXNlcmlkcz8pCi0KLSogT24gV2luZG93cywg Y29tbWFuZC1saW5lIGFyZ3VtZW50cyBzaG91bGQgYmUgYGdsb2ItZXhwYW5kZWRgX18sCi0gIGJl Y2F1c2UgdGhlIHNoZWxsIGRvZXNuJ3QgZG8gdGhpcy4gIEhvd2V2ZXIsIHRoZXJlIGFyZSBwcm9i YWJseSBzb21lCi0gIGNvbW1hbmRzIHdoZXJlIHRoaXMgc2hvdWxkbid0IGJlIGRvbmUsIHN1Y2gg YXMgJ2J6ciBpZ25vcmUnLCBiZWNhdXNlCi0gIHdlIHdhbnQgdG8gYWNjZXB0IGdsb2JzLgotCi0q IGBgYnpyIGlnbm9yZWBgIGNvbW1hbmQgdGhhdCBqdXN0IGFkZHMgYSBsaW5lIHRvIHRoZSBgYC5i enJpZ25vcmVgYCBmaWxlCi0gIGFuZCBtYWtlcyBpdCB2ZXJzaW9uZWQuICBGaXggdGhpcyB0byBi cmVhayBzeW1saW5rcy4KLQotKiBBbnkgdXNlZnVsIHNhbml0eSBjaGVja3MgaW4gJ2J6ciBpZ25v cmUnPyAgUGVyaGFwcyBnaXZlIGEgd2FybmluZyBpZgotICB0aGV5IHRyeSB0byBhZGQgYSBzaW5n bGUgZmlsZSB3aGljaCBpcyBhbHJlYWR5IHZlcnNpb25lZCwgb3IgaWYgdGhleQotICBhZGQgYSBw YXR0ZXJuIHdoaWNoIGFscmVhZHkgZXhpc3RzLCBvciBpZiBpdCBsb29rcyBsaWtlIHRoZXkgZ2F2 ZSBhbgotICB1bnF1b3RlZCBnbG9iLgotCi1fXyBodHRwOi8vbWFpbC5weXRob24ub3JnL3BpcGVy bWFpbC9weXRob24tbGlzdC8yMDAxLUFwcmlsLzAzNzg0Ny5odG1sCi0KLSogU2VwYXJhdGUgcmVh ZCBhbmQgd3JpdGUgdmVyc2lvbiBjaGVja3M/Ci0KLSogYGBienIgc3RhdHVzIERJUmBgIHNob3Vs ZCBnaXZlIHN0YXR1cyBvbiBhbGwgZmlsZXMgdW5kZXIgdGhhdAotICBkaXJlY3RvcnkuCi0KLSog YGBienIgbG9nIERJUmBgIHNob3VsZCBnaXZlIGNoYW5nZXMgdG8gYW55IGZpbGVzIHdpdGhpbiBE SVI7IGF0IHRoZQotICBtb21lbnQgaXQgb25seSBsaXN0cyB0aGluZ3Mgd2hpY2ggbW9kaWZ5IHRo ZSBzcGVjaWZpYyBuYW1lZCBmaWxlCi0gIChhbmQgbm90IGl0cyBjb250ZW50cykKLQotKiBgYGJ6 ciBpbnZlbnRvcnkgLXIgUkVWYGAgYW5kIHBlcmhhcHMgdW5pZnkgdGhpcyB3aXRoIGBgYnpyIGxz YGAsCi0gIGdpdmluZyBvcHRpb25zIHRvIGRpc3BsYXkgaWRzLCB0eXBlcywgZXRjLgotCi0qIFJl bW90ZUJyYW5jaCBjb3VsZCBtYWludGFpbiBhIGNhY2hlIGVpdGhlciBpbiBtZW1vcnkgb3Igb24g ZGlzay4gIFdlCi0gIGtub3cgbW9yZSB0aGFuIGFuIGV4dGVybmFsIGNhY2hlIG1pZ2h0IGFib3V0 IHdoaWNoIGZpbGVzIGFyZQotICBpbW11dGFibGUgYW5kIHdoaWNoIGNhbiB2YXJ5LiAgT24gdGhl IG90aGVyIGhhbmQsIGl0J3MgbXVjaCBzaW1wbGVyCi0gIHRvIGp1c3QgdXNlIGFuIGV4dGVybmFs IHByb3h5IGNhY2hlLgotCi0gIFBlcmhhcHMgfi8uYnpyL2h0dHAtY2FjaGUuICBCYXogaGFzIGEg ZmFpcmx5IHNpbXBsZSBjYWNoZSB1bmRlcgotICB+Ly5hcmNoLWNhY2hlLCBjb250YWluaW5nIHJl dmlzaW9uIGluZm9ybWF0aW9uIGVuY29kZWQgYWxtb3N0IGFzIGEKLSAgYnVuY2ggb2YgYXJjaGl2 ZXMuICBQZXJoYXBzIHdlIGNvdWxkIHNpbXBseSBzdG9yZSBmdWxsIHBhdGhzLgotCi0qIE1heWJl IGFsc28gc3RvcmUgZGlyZWN0b3JpZXMgaW4gdGhlIHN0YXRjYWNoZSBzbyB0aGF0IHdlIGNhbiBx dWlja2x5Ci0gIGlkZW50aWZ5IHRoYXQgdGhleSBzdGlsbCBleGlzdC4KLQotKiBEaWZmIHNob3Vs ZCBzaG93IHRpbWVzdGFtcHM7IGZvciBmaWxlcyBmcm9tIHRoZSB3b3JraW5nIGRpcmVjdG9yeSB3 ZQotICBjYW4gdXNlIHRoZSBmaWxlIGl0c2VsZjsgZm9yIGZpbGVzIGZyb20gYSByZXZpc2lvbiB3 ZSBzaG91bGQgdXNlIHRoZQotICBjb21taXQgdGltZSBvZiB0aGUgcmV2aXNpb24uCi0KLSogUGVy aGFwcyBzcGxpdCBjb21tYW5kIGluZnJhc3RydWN0dXJlIGZyb20gdGhlIGFjdHVhbCBjb21tYW5k Ci0gIGRlZmluaXRpb25zLgotCi0qIENsZWFuZXIgc3VwcG9ydCBmb3IgbmVnYXRpdmUgYm9vbGVh biBvcHRpb25zIGxpa2UgLS1uby1yZWN1cnNlLgotCi0qIFN0YXRjYWNoZSBzaG91bGQgcG9zc2li bHkgbWFwIGFsbCBmaWxlIHBhdGhzIHRvIC8gc2VwYXJhdG9ycwotCiAqIHF1b3RlZm4gZG91Ymxl cyBhbGwgYmFja3NsYXNoZXMgb24gV2luZG93czsgdGhpcyBpcyBwcm9iYWJseSBub3QgdGhlCiAg IGJlc3QgdGhpbmcgdG8gZG8uICBXaGF0IHdvdWxkIGJlIGEgYmV0dGVyIHdheSB0byBzYWZlbHkg cmVwcmVzZW50CiAgIGZpbGVuYW1lcz8gIFBlcmhhcHMgd2UgY291bGQgZG91YmxlcXVvdGUgdGhp bmdzIGNvbnRhaW5pbmcgc3BhY2VzLAogICBvbiB0aGUgcHJpbmNpcGxlIHRoYXQgZmlsZW5hbWVz IGNvbnRhaW5pbmcgcXVvdGVzIGFyZSB1bmxpa2VseT8KICAgTmljZSBmb3IgaHVtYW5zOyBsZXNz IGdvb2QgZm9yIG1hY2hpbmUgcGFyc2luZy4KIAotKiBQYXRjaGVzIHNob3VsZCBwcm9iYWJseSB1 c2Ugb25seSBmb3J3YXJkIHNsYXNoZXMsIGV2ZW4gb24gV2luZG93cywKLSAgb3RoZXJ3aXNlIFVu aXggcGF0Y2ggY2FuJ3QgYXBwbHkgdGhlbS4gKD8pCi0KICogQnJhbmNoLnVwZGF0ZV9yZXZpc2lv bnMoKSBpbmVmZmljaWVudGx5IGZldGNoZXMgcmV2aXNpb25zIGZyb20gdGhlCiAgIHJlbW90ZSBz ZXJ2ZXIgdHdpY2U7IG9uY2UgdG8gZmluZCBvdXQgd2hhdCB0ZXh0IGFuZCBpbnZlbnRvcnkgdGhl eQogICBuZWVkIGFuZCB0aGVuIGFnYWluIHRvIGFjdHVhbGx5IGdldCB0aGUgdGhpbmcuICBUaGlz IGlzIGEgYml0Cgo= === modified directory // last-changed:mbp@sourcefrog.net-20070404012211-sq269 ... me6bai9m6xk # revision id: mbp@sourcefrog.net-20070404012211-sq269me6bai9m6xk # sha1: e916e6377d834b46778283f46fd5de4e34ff6fa9 # inventory sha1: bfeb56dfa02161ce679ad48b6bce20f6f0eefe23 # parent ids: # mbp@sourcefrog.net-20070404011507-l854uqbc192pnbgj # elliot.murphy@canonical.com-20070403225812-yopxs3blqm1ed1uq # properties: # branch-nick: doc # message: # Link from INSTALL to faq and wiki # committer: Martin Pool # date: Wed 2007-04-04 11:15:07.976999998 +1000 === modified file INSTALL // encoding:base64 LS0tIElOU1RBTEwKKysrIElOU1RBTEwKQEAgLTI0LDMgKzI0LDYgQEAKIAogICBweXRob24gc2V0 dXAucHkgaW5zdGFsbAogCitGb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiBpbnN0YWxsYXRpb24sIHNl ZQoraHR0cDovL2JhemFhci12Y3Mub3JnL0luc3RhbGxhdGlvbkZhcQorb3Igd3JpdGUgdG8gYmF6 YWFyQGxpc3RzLmNhbm9uaWNhbC5jb20uCgo= === modified directory // last-changed:mbp@sourcefrog.net-20070404011507-l854u ... qbc192pnbgj # revision id: mbp@sourcefrog.net-20070404011507-l854uqbc192pnbgj # sha1: 7c0a1858e3f2c9fb71d1da67937846d0830f4a5e # inventory sha1: ecaf29f7c0295c1739b3b68b6e3ec8bd1f44bed9 # parent ids: # mbp@sourcefrog.net-20070404011452-zu2bwb9ajc78m37s # properties: # branch-nick: doc # message: # Move some TODO items into the bug tracker # committer: Martin Pool # date: Wed 2007-04-04 11:14:52.539000034 +1000 === modified file TODO // encoding:base64 LS0tIFRPRE8KKysrIFRPRE8KQEAgLTEsMTE5ICsxLDkgQEAKLS4uIC0qLSBtb2RlOiBpbmRlbnRl ZC10ZXh0OyBjb21waWxlLWNvbW1hbmQ6ICJtYWtlIC1DIGRvYyIgLSotCi0KLQotKioqKioqKioq KioqKioqKioqKgotVGhpbmdzIHRvIGRvIGluIGJ6cgotKioqKioqKioqKioqKioqKioqKgotCi0K LVNlZSBhbHNvIHZhcmlvdXMgbG93LWxldmVsIFRPRE9zIGluIHRoZSBzb3VyY2UgY29kZS4gIFRy eSBsb29raW5nIGluCi10aGUgbGlzdCBhcmNoaXZlIG9yIG9uIGdtYW5lLm9yZyBmb3IgcHJldmlv dXMgZGlzY3Vzc2lvbiBvZiB0aGVzZQotaXNzdWVzLgotCi1UaGVzZSBhcmUgY2xhc3NpZmllZCBi eSBhcHByb3hpbWF0ZSBzaXplOiBhbiBob3VyIG9yIGxlc3MsIGEgZGF5IG9yCi1sZXNzLCBhbmQg c2V2ZXJhbCBkYXlzIG9yIG1vcmUuCi0KLQotU21hbGwgdGhpbmdzCi0tLS0tLS0tLS0tLS0KLQot KiBGaXggdGVzdHMgc28gdGhhdCBpbXBvcnQgZXJyb3JzIGNhdXNlZCBieSBtb2R1bGVzIGRvbid0 IHByb2R1Y2UgZmFsc2UgcmVwb3J0cwotICB0aGF0IHRoZSB0ZXN0cyB0aGVtc2VsdmVzIGRvbid0 IGV4aXN0LgotCi0qIEZpeCB0ZXN0cyBzbyB0aGF0IG9uZSB0ZXN0IGZhaWx1cmUgZG9lc24ndCBw cmV2ZW50IG90aGVyIHRlc3RzIGZyb20gcnVubmluZwotCi0qIHByaW50IGEgbWVzc2FnZSBhdCB0 aGUgZW5kIG9mIHJ1bm5pbmcgdGhlIHRlc3RzIHRlbGxpbmcgdGhlbSB0aGF0IHRoZQotICB0ZXN0 IGxvZyBhbmQgb3V0cHV0IGV4aXN0cyBidXQgY2FuIGJlIHJlbW92ZWQKLQotKiB0ZXN0cyBmb3Ig cnVubmluZyB0aGUgY29tbWl0IGVkaXRvciwgYW5kIGZpeCBwcm9ibGVtIG9mIG5vdCBwYXNzaW5n IGluIAotICBtdWx0aXBsZSBhcmd1bWVudHMKLQotKiBNZXJnaW5nIGFkZCBvZiBhIG5ldyBmaWxl IGNsYXNoaW5nIHdpdGggYW4gZXhpc3RpbmcgZmlsZSBkb2Vzbid0Ci0gIHdvcms7IGFkZCBnZXRz IGFuIGVycm9yIHRoYXQgaXQncyBhbHJlYWR5IHZlcnNpb25lZCBhbmQgdGhlIG1lcmdlCi0gIGFi b3J0cy4KLQotKiBNZXJnZSBzaG91bGQgaWdub3JlIHRoZSBkZXN0aW5hdGlvbidzIHdvcmtpbmcg ZGlyZWN0b3J5LCBvdGhlcndpc2UKLSAgd2UgZ2V0IGFuIGVycm9yIGFib3V0IHRoZSBzdGF0Y2Fj aGUgd2hlbiBwdWxsaW5nIGZyb20gYSByZW1vdGUKLSAgYnJhbmNoLgotCi0qIEFkZCBvZiBhIGZp bGUgdGhhdCB3YXMgcHJlc2VudCBpbiB0aGUgYmFzZSByZXZpc2lvbiBzaG91bGQgcHV0IGJhY2sK LSAgdGhlIHByZXZpb3VzIGZpbGUtaWQuCi0KLSogTm90IHN1cmUgSSdtIGhhcHB5IHdpdGggbmVl ZGluZyB0byBwYXNzIGEgcm9vdCBpZCB0byBFbXB0eVRyZWU7Ci0gIGNvbXBhcmluZyBhbnl0aGlu ZyBhZ2FpbnN0IGFuIEVtcHR5VHJlZSB3aXRoIG5vIHJvb3Qgc2hvdWxkIGhhdmUgdGhlCi0gIHNh bWUgZWZmZWN0KD8pCi0KLSogSGFuZGxlIGRpZmYgb2YgZmlsZXMgd2hpY2ggZG8gbm90IGhhdmUg YSB0cmFpbGluZyBuZXdsaW5lOyBwcm9iYWJseQotICByZXF1aXJlcyBwYXRjaGluZyBkaWZmbGli IHRvIGdldCBpdCBleGFjdGx5IHJpZ2h0LCBvciBvdGhlcndpc2UKLSAgY2FsbGluZyBvdXQgdG8g R05VIGRpZmYuCi0KLSogU2hvdWxkIGJlIGFibGUgdG8gY29weSBmaWxlcyBiZXR3ZWVuIGJyYW5j aGVzIHRvIHByZXNlcnZlIHRoZWlyCi0gIGZpbGUtaWQgKGFuZCBwZXJoYXBzIGV2ZW50dWFsbHkg cGFyZW50YWdlLikKLQotKiAtciBvcHRpb24gc2hvdWxkIHRha2UgYSByZXZpc2lvbi1pZCBhcyB3 ZWxsIGFzIGEgcmV2bm8uCi0KLSogYGBienIgaW5mb2BgIHNob3VsZCBjb3VudCBvbmx5IHBlb3Bs ZSB3aXRoIGRpc3RpbmN0IGVtYWlsIGFkZHJlc3NlcyBhcwotICBkaWZmZXJlbnQgY29tbWl0dGVy cy4gIChPciBwZXJoYXBzIG9ubHkgZGlzdGluY3QgdXNlcmlkcz8pCi0KLSogT24gV2luZG93cywg Y29tbWFuZC1saW5lIGFyZ3VtZW50cyBzaG91bGQgYmUgYGdsb2ItZXhwYW5kZWRgX18sCi0gIGJl Y2F1c2UgdGhlIHNoZWxsIGRvZXNuJ3QgZG8gdGhpcy4gIEhvd2V2ZXIsIHRoZXJlIGFyZSBwcm9i YWJseSBzb21lCi0gIGNvbW1hbmRzIHdoZXJlIHRoaXMgc2hvdWxkbid0IGJlIGRvbmUsIHN1Y2gg YXMgJ2J6ciBpZ25vcmUnLCBiZWNhdXNlCi0gIHdlIHdhbnQgdG8gYWNjZXB0IGdsb2JzLgotCi0q IGBgYnpyIGlnbm9yZWBgIGNvbW1hbmQgdGhhdCBqdXN0IGFkZHMgYSBsaW5lIHRvIHRoZSBgYC5i enJpZ25vcmVgYCBmaWxlCi0gIGFuZCBtYWtlcyBpdCB2ZXJzaW9uZWQuICBGaXggdGhpcyB0byBi cmVhayBzeW1saW5rcy4KLQotKiBBbnkgdXNlZnVsIHNhbml0eSBjaGVja3MgaW4gJ2J6ciBpZ25v cmUnPyAgUGVyaGFwcyBnaXZlIGEgd2FybmluZyBpZgotICB0aGV5IHRyeSB0byBhZGQgYSBzaW5n bGUgZmlsZSB3aGljaCBpcyBhbHJlYWR5IHZlcnNpb25lZCwgb3IgaWYgdGhleQotICBhZGQgYSBw YXR0ZXJuIHdoaWNoIGFscmVhZHkgZXhpc3RzLCBvciBpZiBpdCBsb29rcyBsaWtlIHRoZXkgZ2F2 ZSBhbgotICB1bnF1b3RlZCBnbG9iLgotCi1fXyBodHRwOi8vbWFpbC5weXRob24ub3JnL3BpcGVy bWFpbC9weXRob24tbGlzdC8yMDAxLUFwcmlsLzAzNzg0Ny5odG1sCi0KLSogU2VwYXJhdGUgcmVh ZCBhbmQgd3JpdGUgdmVyc2lvbiBjaGVja3M/Ci0KLSogYGBienIgc3RhdHVzIERJUmBgIHNob3Vs ZCBnaXZlIHN0YXR1cyBvbiBhbGwgZmlsZXMgdW5kZXIgdGhhdAotICBkaXJlY3RvcnkuCi0KLSog YGBienIgbG9nIERJUmBgIHNob3VsZCBnaXZlIGNoYW5nZXMgdG8gYW55IGZpbGVzIHdpdGhpbiBE SVI7IGF0IHRoZQotICBtb21lbnQgaXQgb25seSBsaXN0cyB0aGluZ3Mgd2hpY2ggbW9kaWZ5IHRo ZSBzcGVjaWZpYyBuYW1lZCBmaWxlCi0gIChhbmQgbm90IGl0cyBjb250ZW50cykKLQotKiBgYGJ6 ciBpbnZlbnRvcnkgLXIgUkVWYGAgYW5kIHBlcmhhcHMgdW5pZnkgdGhpcyB3aXRoIGBgYnpyIGxz YGAsCi0gIGdpdmluZyBvcHRpb25zIHRvIGRpc3BsYXkgaWRzLCB0eXBlcywgZXRjLgotCi0qIFJl bW90ZUJyYW5jaCBjb3VsZCBtYWludGFpbiBhIGNhY2hlIGVpdGhlciBpbiBtZW1vcnkgb3Igb24g ZGlzay4gIFdlCi0gIGtub3cgbW9yZSB0aGFuIGFuIGV4dGVybmFsIGNhY2hlIG1pZ2h0IGFib3V0 IHdoaWNoIGZpbGVzIGFyZQotICBpbW11dGFibGUgYW5kIHdoaWNoIGNhbiB2YXJ5LiAgT24gdGhl IG90aGVyIGhhbmQsIGl0J3MgbXVjaCBzaW1wbGVyCi0gIHRvIGp1c3QgdXNlIGFuIGV4dGVybmFs IHByb3h5IGNhY2hlLgotCi0gIFBlcmhhcHMgfi8uYnpyL2h0dHAtY2FjaGUuICBCYXogaGFzIGEg ZmFpcmx5IHNpbXBsZSBjYWNoZSB1bmRlcgotICB+Ly5hcmNoLWNhY2hlLCBjb250YWluaW5nIHJl dmlzaW9uIGluZm9ybWF0aW9uIGVuY29kZWQgYWxtb3N0IGFzIGEKLSAgYnVuY2ggb2YgYXJjaGl2 ZXMuICBQZXJoYXBzIHdlIGNvdWxkIHNpbXBseSBzdG9yZSBmdWxsIHBhdGhzLgotCi0qIE1heWJl IGFsc28gc3RvcmUgZGlyZWN0b3JpZXMgaW4gdGhlIHN0YXRjYWNoZSBzbyB0aGF0IHdlIGNhbiBx dWlja2x5Ci0gIGlkZW50aWZ5IHRoYXQgdGhleSBzdGlsbCBleGlzdC4KLQotKiBEaWZmIHNob3Vs ZCBzaG93IHRpbWVzdGFtcHM7IGZvciBmaWxlcyBmcm9tIHRoZSB3b3JraW5nIGRpcmVjdG9yeSB3 ZQotICBjYW4gdXNlIHRoZSBmaWxlIGl0c2VsZjsgZm9yIGZpbGVzIGZyb20gYSByZXZpc2lvbiB3 ZSBzaG91bGQgdXNlIHRoZQotICBjb21taXQgdGltZSBvZiB0aGUgcmV2aXNpb24uCi0KLSogUGVy aGFwcyBzcGxpdCBjb21tYW5kIGluZnJhc3RydWN0dXJlIGZyb20gdGhlIGFjdHVhbCBjb21tYW5k Ci0gIGRlZmluaXRpb25zLgotCi0qIENsZWFuZXIgc3VwcG9ydCBmb3IgbmVnYXRpdmUgYm9vbGVh biBvcHRpb25zIGxpa2UgLS1uby1yZWN1cnNlLgotCi0qIFN0YXRjYWNoZSBzaG91bGQgcG9zc2li bHkgbWFwIGFsbCBmaWxlIHBhdGhzIHRvIC8gc2VwYXJhdG9ycwotCiAqIHF1b3RlZm4gZG91Ymxl cyBhbGwgYmFja3NsYXNoZXMgb24gV2luZG93czsgdGhpcyBpcyBwcm9iYWJseSBub3QgdGhlCiAg IGJlc3QgdGhpbmcgdG8gZG8uICBXaGF0IHdvdWxkIGJlIGEgYmV0dGVyIHdheSB0byBzYWZlbHkg cmVwcmVzZW50CiAgIGZpbGVuYW1lcz8gIFBlcmhhcHMgd2UgY291bGQgZG91YmxlcXVvdGUgdGhp bmdzIGNvbnRhaW5pbmcgc3BhY2VzLAogICBvbiB0aGUgcHJpbmNpcGxlIHRoYXQgZmlsZW5hbWVz IGNvbnRhaW5pbmcgcXVvdGVzIGFyZSB1bmxpa2VseT8KICAgTmljZSBmb3IgaHVtYW5zOyBsZXNz IGdvb2QgZm9yIG1hY2hpbmUgcGFyc2luZy4KIAotKiBQYXRjaGVzIHNob3VsZCBwcm9iYWJseSB1 c2Ugb25seSBmb3J3YXJkIHNsYXNoZXMsIGV2ZW4gb24gV2luZG93cywKLSAgb3RoZXJ3aXNlIFVu aXggcGF0Y2ggY2FuJ3QgYXBwbHkgdGhlbS4gKD8pCi0KICogQnJhbmNoLnVwZGF0ZV9yZXZpc2lv bnMoKSBpbmVmZmljaWVudGx5IGZldGNoZXMgcmV2aXNpb25zIGZyb20gdGhlCiAgIHJlbW90ZSBz ZXJ2ZXIgdHdpY2U7IG9uY2UgdG8gZmluZCBvdXQgd2hhdCB0ZXh0IGFuZCBpbnZlbnRvcnkgdGhl eQogICBuZWVkIGFuZCB0aGVuIGFnYWluIHRvIGFjdHVhbGx5IGdldCB0aGUgdGhpbmcuICBUaGlz IGlzIGEgYml0Cgo= === modified directory // last-changed:mbp@sourcefrog.net-20070404011452-zu2bw ... b9ajc78m37s # revision id: mbp@sourcefrog.net-20070404011452-zu2bwb9ajc78m37s # sha1: 15d45cef7801a6084bdbce900f2c21d4c175cd42 # inventory sha1: eeda264c16f198a82d500d6c8dd51f4c5a98e5ec # parent ids: # mbp@sourcefrog.net-20070329041656-u4j50rtp4e01aej4 # properties: # branch-nick: doc # message: # Move old NEWS.developers entries into NEWS # committer: Martin Pool # date: Thu 2007-03-29 14:16:56.305999994 +1000 === removed file NEWS.developers === modified file NEWS // encoding:base64 LS0tIE5FV1MKKysrIE5FV1MKQEAgLTIxNzYsNiArMjE3NiwyNCBAQAogICAgICAgYnpyIGJyYW5j aCBpdCBjYW5ub3QgdW5kZXJzdGFuZC4gVGhpcyBhbGxvd3MgZm9yIHByZWNpc2UKICAgICAgIGhh bmRsaW5nIG9mIHN1Y2ggY2lyY3Vtc3RhbmNlcy4KIAorICAgICogUmVtb3ZlIFJldmlzaW9uUmVm ZXJlbmNlIGNsYXNzOyBSZXZpc2lvbi5wYXJlbnRfaWRzIGlzIG5vdyBzaW1wbHkgYQorICAgICAg bGlzdCBvZiB0aGVpciBpZHMgYW5kIHBhcmVudF9zaGExcyBpcyBhIGxpc3Qgb2YgdGhlaXIgY29y cmVzcG9uZGluZworICAgICAgc2hhMXMgKGZvciBvbGQgYnJhbmNoZXMgb25seSBhdCB0aGUgbW9t ZW50LikKKworICAgICogTmV3IG1ldGhvZC1vYmplY3Qgc3R5bGUgaW50ZXJmYWNlIGZvciBDb21t aXQoKSBhbmQgRmV0Y2goKS4KKworICAgICogUmVuYW1lZCBCcmFuY2gubGFzdF9wYXRjaCgpIHRv IEJyYW5jaC5sYXN0X3JldmlzaW9uKCksIHNpbmNlCisgICAgICB3ZSBjYWxsIHRoZW0gcmV2aXNp b25zIG5vdCBwYXRjaGVzLgorCisgICAgKiBNb3ZlIGNvcHlfYnJhbmNoIHRvIGJ6cmxpYi5jbG9u ZS5jb3B5X2JyYW5jaC4gIFRoZSBkZXN0aW5hdGlvbgorICAgICAgZGlyZWN0b3J5IGlzIGNyZWF0 ZWQgaWYgaXQgZG9lc24ndCBleGlzdC4KKworICAgICogSW52ZW50b3JpZXMgbm93IGlkZW50aWZ5 IHRoZSBmaWxlcyB3aGljaCB3ZXJlIHByZXNlbnQgYnkgCisgICAgICBnaXZpbmcgdGhlIHJldmlz aW9uICpvZiB0aGF0IGZpbGUqLgorCisgICAgKiBJbnZlbnRvcnkgYW5kIFJldmlzaW9uIFhNTCBj b250YWlucyBhIHZlcnNpb24gaWRlbnRpZmllci4gIAorICAgICAgVGhpcyBtdXN0IGJlIGNvbnNp c3RlbnQgd2l0aCB0aGUgb3ZlcmFsbCBicmFuY2ggdmVyc2lvbgorICAgICAgYnV0IGFsbG93cyBm b3IgbW9yZSBmbGV4aWJpbGl0eSBpbiBmdXR1cmUgdXBncmFkZXMuCiAKICAgVEVTVElORzoKIAoK === modified directory // last-changed:mbp@sourcefrog.net-20070329041656-u4j50 ... rtp4e01aej4 # revision id: mbp@sourcefrog.net-20070329041656-u4j50rtp4e01aej4 # sha1: e127f179a39e3a9f81b93b66f96e65d5391dfdd9 # inventory sha1: 7b8d2a86a03c6e353ea566d6c8345e1848b63691 # parent ids: # pqm@pqm.ubuntu.com-20070329014424-0947dae124353e1f # properties: # branch-nick: doc # message: # Use double quotes instead of single quotes for bzr whoami examples to keep # windows systems happy. https://answers.launchpad.net/bzr/+ticket/4604 # # committer: Elliot Murphy # date: Tue 2007-04-03 18:58:12.058000088 -0400 === modified file doc/tutorial.txt // encoding:base64 LS0tIGRvYy90dXRvcmlhbC50eHQKKysrIGRvYy90dXRvcmlhbC50eHQKQEAgLTEyMiwxMiArMTIy LDEyIEBACiAKICAgICBUbyBzZXQgYSBnbG9iYWwgaWRlbnRpdHksIHVzZTo6CiAgCi0gICAgJSBi enIgd2hvYW1pICdZb3VyIE5hbWUgPGVtYWlsQGV4YW1wbGUuY29tPicKKyAgICAlIGJ6ciB3aG9h bWkgIllvdXIgTmFtZSA8ZW1haWxAZXhhbXBsZS5jb20+IgogIAogICAgIElmIHlvdSdkIGxpa2Ug dG8gdXNlIGEgZGlmZmVyZW50IGFkZHJlc3MgZm9yIGEgc3BlY2lmaWMgYnJhbmNoLCBlbnRlcgog ICAgIHRoZSBicmFuY2ggZm9sZGVyIGFuZCB1c2U6OgogIAotICAgICUgYnpyIHdob2FtaSAtLWJy YW5jaCAnWW91ciBOYW1lIDxlbWFpbEBleGFtcGxlLmNvbT4nCisgICAgJSBienIgd2hvYW1pIC0t YnJhbmNoICJZb3VyIE5hbWUgPGVtYWlsQGV4YW1wbGUuY29tPiIKICAKICAjLiBTZXR0aW5nIHRo ZSBlbWFpbCBhZGRyZXNzIGluIHRoZSBgYH4vLmJhemFhci9iYXphYXIuY29uZmBgIFsxXV8gYnkg YWRkaW5nIHRoZSBmb2xsb3dpbmcgbGluZXMuCiAgICAgUGxlYXNlIG5vdGUgdGhhdCAgYGBbREVG QVVMVF1gYCBpcyBjYXNlIHNlbnNpdGl2ZTo6Cgo= === modified directory // last-changed:elliot.murphy@canonical.com-20070403225 ... 812-yopxs3blqm1ed1uq # revision id: elliot.murphy@canonical.com-20070403225812-yopxs3blqm1ed1uq # sha1: 5b07aa2ff378e2ffbd9433f2157ce2a296267840 # inventory sha1: 6e5543aa08d5cb859256d1f9dd15189c2b530f87 # parent ids: # pqm@pqm.ubuntu.com-20070402183941-55dc90797840300e # properties: # branch-nick: bzr.docs