From 897a334bf6d0b1d5974427b518e777e7f0934672 Mon Sep 17 00:00:00 2001 From: Will Bradley Date: Fri, 1 Dec 2017 19:35:11 -0800 Subject: [PATCH] Initial commit --- build.docset/Contents/Info.plist | 18 + .../Contents/Resources/Documents/.buildinfo | 4 + .../blending-orm-and-mongodb-odm.doctree | Bin 0 -> 20483 bytes ...ng-array-access-for-domain-objects.doctree | Bin 0 -> 12233 bytes ...g-the-notify-changetracking-policy.doctree | Bin 0 -> 9831 bytes .../implementing-wakeup-or-clone.doctree | Bin 0 -> 10687 bytes .../mapping-classes-to-orm-and-odm.doctree | Bin 0 -> 22768 bytes .../resolve-target-document-listener.doctree | Bin 0 -> 15984 bytes .../cookbook/simple-search-engine.doctree | Bin 0 -> 17250 bytes .../cookbook/soft-delete-extension.doctree | Bin 0 -> 21309 bytes .../cookbook/validation-of-documents.doctree | Bin 0 -> 16311 bytes .../Documents/.doctrees/environment.pickle | Bin 0 -> 144789 bytes .../Documents/.doctrees/index.doctree | Bin 0 -> 39910 bytes .../reference/aggregation-builder.doctree | Bin 0 -> 102656 bytes .../reference/annotations-reference.doctree | Bin 0 -> 191713 bytes .../.doctrees/reference/architecture.doctree | Bin 0 -> 27570 bytes .../.doctrees/reference/basic-mapping.doctree | Bin 0 -> 87815 bytes .../reference/best-practices.doctree | Bin 0 -> 9596 bytes .../bidirectional-references.doctree | Bin 0 -> 21380 bytes .../reference/capped-collections.doctree | Bin 0 -> 11461 bytes .../change-tracking-policies.doctree | Bin 0 -> 17298 bytes .../reference/complex-references.doctree | Bin 0 -> 19342 bytes .../reference/console-commands.doctree | Bin 0 -> 12940 bytes .../reference/custom-collections.doctree | Bin 0 -> 18685 bytes .../reference/document-repositories.doctree | Bin 0 -> 27759 bytes .../.doctrees/reference/eager-cursors.doctree | Bin 0 -> 6830 bytes .../reference/embedded-mapping.doctree | Bin 0 -> 29031 bytes .../.doctrees/reference/events.doctree | Bin 0 -> 65898 bytes .../.doctrees/reference/filters.doctree | Bin 0 -> 15258 bytes .../reference/find-and-update.doctree | Bin 0 -> 11281 bytes .../reference/geospatial-queries.doctree | Bin 0 -> 16734 bytes .../.doctrees/reference/indexes.doctree | Bin 0 -> 57516 bytes .../reference/inheritance-mapping.doctree | Bin 0 -> 34316 bytes .../.doctrees/reference/introduction.doctree | Bin 0 -> 42874 bytes .../.doctrees/reference/logging.doctree | Bin 0 -> 4511 bytes .../.doctrees/reference/map-reduce.doctree | Bin 0 -> 12289 bytes .../reference/metadata-drivers.doctree | Bin 0 -> 25935 bytes .../reference/migrating-schemas.doctree | Bin 0 -> 27495 bytes .../reference/priming-references.doctree | Bin 0 -> 22676 bytes .../reference/query-builder-api.doctree | Bin 0 -> 120994 bytes .../reference/reference-mapping.doctree | Bin 0 -> 71030 bytes .../.doctrees/reference/sharding.doctree | Bin 0 -> 11931 bytes .../reference/slave-okay-queries.doctree | Bin 0 -> 8812 bytes .../reference/storage-strategies.doctree | Bin 0 -> 24664 bytes .../storing-files-with-mongogridfs.doctree | Bin 0 -> 12163 bytes .../transactions-and-concurrency.doctree | Bin 0 -> 50406 bytes .../.doctrees/reference/trees.doctree | Bin 0 -> 20649 bytes .../reference/upserting-documents.doctree | Bin 0 -> 5606 bytes .../reference/working-with-objects.doctree | Bin 0 -> 76952 bytes .../.doctrees/reference/xml-mapping.doctree | Bin 0 -> 30926 bytes .../.doctrees/reference/yml-mapping.doctree | Bin 0 -> 24288 bytes .../tutorials/getting-started.doctree | Bin 0 -> 29585 bytes .../blending-orm-and-mongodb-odm.rst.txt | 210 + ...ng-array-access-for-domain-objects.rst.txt | 123 + ...g-the-notify-changetracking-policy.rst.txt | 75 + .../implementing-wakeup-or-clone.rst.txt | 77 + .../mapping-classes-to-orm-and-odm.rst.txt | 232 + .../resolve-target-document-listener.rst.txt | 139 + .../cookbook/simple-search-engine.rst.txt | 170 + .../cookbook/soft-delete-extension.rst.txt | 224 + .../cookbook/validation-of-documents.rst.txt | 130 + .../Documents/_sources/index.rst.txt | 107 + .../reference/aggregation-builder.rst.txt | 814 ++ .../reference/annotations-reference.rst.txt | 1482 +++ .../_sources/reference/architecture.rst.txt | 124 + .../_sources/reference/basic-mapping.rst.txt | 621 + .../_sources/reference/best-practices.rst.txt | 70 + .../bidirectional-references.rst.txt | 218 + .../reference/capped-collections.rst.txt | 92 + .../change-tracking-policies.rst.txt | 150 + .../reference/complex-references.rst.txt | 152 + .../reference/console-commands.rst.txt | 54 + .../reference/custom-collections.rst.txt | 170 + .../reference/document-repositories.rst.txt | 210 + .../_sources/reference/eager-cursors.rst.txt | 46 + .../reference/embedded-mapping.rst.txt | 283 + .../_sources/reference/events.rst.txt | 717 ++ .../_sources/reference/filters.rst.txt | 93 + .../reference/find-and-update.rst.txt | 84 + .../reference/geospatial-queries.rst.txt | 141 + .../_sources/reference/indexes.rst.txt | 549 + .../reference/inheritance-mapping.rst.txt | 280 + .../_sources/reference/introduction.rst.txt | 494 + .../_sources/reference/logging.rst.txt | 31 + .../_sources/reference/map-reduce.rst.txt | 117 + .../reference/metadata-drivers.rst.txt | 196 + .../reference/migrating-schemas.rst.txt | 219 + .../reference/priming-references.rst.txt | 168 + .../reference/query-builder-api.rst.txt | 998 ++ .../reference/reference-mapping.rst.txt | 495 + .../_sources/reference/sharding.rst.txt | 69 + .../reference/slave-okay-queries.rst.txt | 71 + .../reference/storage-strategies.rst.txt | 97 + .../storing-files-with-mongogridfs.rst.txt | 190 + .../transactions-and-concurrency.rst.txt | 306 + .../_sources/reference/trees.rst.txt | 267 + .../reference/upserting-documents.rst.txt | 34 + .../reference/working-with-objects.rst.txt | 573 + .../_sources/reference/xml-mapping.rst.txt | 188 + .../_sources/reference/yml-mapping.rst.txt | 211 + .../tutorials/getting-started.rst.txt | 301 + .../Documents/_static/ajax-loader.gif | Bin 0 -> 673 bytes .../Resources/Documents/_static/arrows.jpg | Bin 0 -> 5947 bytes .../Resources/Documents/_static/basic.css | 639 + .../Documents/_static/bg-gradient.jpg | Bin 0 -> 3704 bytes .../Resources/Documents/_static/bl-corner.gif | Bin 0 -> 108 bytes .../bootstrap/css/bootstrap-responsive.css | 1092 ++ .../css/bootstrap-responsive.min.css | 9 + .../_static/bootstrap/css/bootstrap.css | 6039 +++++++++ .../_static/bootstrap/css/bootstrap.min.css | 9 + .../img/glyphicons-halflings-white.png | Bin 0 -> 8777 bytes .../bootstrap/img/glyphicons-halflings.png | Bin 0 -> 12799 bytes .../_static/bootstrap/js/bootstrap.js | 2159 ++++ .../_static/bootstrap/js/bootstrap.min.js | 6 + .../Resources/Documents/_static/br-corner.gif | Bin 0 -> 105 bytes .../Documents/_static/bullet_white.gif | Bin 0 -> 180 bytes .../Resources/Documents/_static/caution.png | Bin 0 -> 2132 bytes .../Documents/_static/comment-bright.png | Bin 0 -> 756 bytes .../Documents/_static/comment-close.png | Bin 0 -> 829 bytes .../Resources/Documents/_static/comment.png | Bin 0 -> 641 bytes .../Documents/_static/configurationblock.css | 97 + .../Documents/_static/configurationblock.js | 34 + .../Resources/Documents/_static/default.css | 1042 ++ .../Resources/Documents/_static/disk.gif | Bin 0 -> 426 bytes .../Resources/Documents/_static/doctools.js | 287 + .../Documents/_static/down-pressed.png | Bin 0 -> 222 bytes .../Resources/Documents/_static/down.png | Bin 0 -> 202 bytes .../Resources/Documents/_static/file.png | Bin 0 -> 286 bytes .../Documents/_static/jquery-3.1.0.js | 10074 ++++++++++++++++ .../Resources/Documents/_static/jquery.js | 4 + .../Resources/Documents/_static/layout.css | 485 + .../Resources/Documents/_static/logo.jpg | Bin 0 -> 9772 bytes .../Resources/Documents/_static/minus.png | Bin 0 -> 90 bytes .../Resources/Documents/_static/note.png | Bin 0 -> 1371 bytes .../Resources/Documents/_static/plus.png | Bin 0 -> 90 bytes .../Resources/Documents/_static/pygments.css | 70 + .../Documents/_static/searchtools.js | 758 ++ .../Documents/_static/servergrove.jpg | Bin 0 -> 3941 bytes .../Documents/_static/sidebox-foot.jpg | Bin 0 -> 437 bytes .../Resources/Documents/_static/sidebox.jpg | Bin 0 -> 3172 bytes .../Resources/Documents/_static/tip.png | Bin 0 -> 1997 bytes .../Resources/Documents/_static/ul-corner.jpg | Bin 0 -> 589 bytes .../Documents/_static/underscore-1.3.1.js | 999 ++ .../Resources/Documents/_static/underscore.js | 31 + .../Documents/_static/up-pressed.png | Bin 0 -> 214 bytes .../Resources/Documents/_static/up.png | Bin 0 -> 203 bytes .../Resources/Documents/_static/ur-corner.gif | Bin 0 -> 116 bytes .../Resources/Documents/_static/websupport.js | 808 ++ .../blending-orm-and-mongodb-odm.html | 334 + ...nting-array-access-for-domain-objects.html | 264 + ...ting-the-notify-changetracking-policy.html | 213 + .../implementing-wakeup-or-clone.html | 216 + .../mapping-classes-to-orm-and-odm.html | 366 + .../resolve-target-document-listener.html | 271 + .../cookbook/simple-search-engine.html | 300 + .../cookbook/soft-delete-extension.html | 343 + .../cookbook/validation-of-documents.html | 256 + .../Contents/Resources/Documents/index.html | 250 + .../Contents/Resources/Documents/objects.inv | Bin 0 -> 2029 bytes .../reference/aggregation-builder.html | 912 ++ .../reference/annotations-reference.html | 1459 +++ .../Documents/reference/architecture.html | 271 + .../Documents/reference/basic-mapping.html | 747 ++ .../Documents/reference/best-practices.html | 212 + .../reference/bidirectional-references.html | 348 + .../reference/capped-collections.html | 233 + .../reference/change-tracking-policies.html | 280 + .../reference/complex-references.html | 283 + .../Documents/reference/console-commands.html | 188 + .../reference/custom-collections.html | 303 + .../reference/document-repositories.html | 337 + .../Documents/reference/eager-cursors.html | 174 + .../Documents/reference/embedded-mapping.html | 426 + .../Resources/Documents/reference/events.html | 796 ++ .../Documents/reference/filters.html | 228 + .../Documents/reference/find-and-update.html | 219 + .../reference/geospatial-queries.html | 276 + .../Documents/reference/indexes.html | 677 ++ .../reference/inheritance-mapping.html | 416 + .../Documents/reference/introduction.html | 600 + .../Documents/reference/logging.html | 163 + .../Documents/reference/map-reduce.html | 242 + .../Documents/reference/metadata-drivers.html | 326 + .../reference/migrating-schemas.html | 343 + .../reference/priming-references.html | 299 + .../reference/query-builder-api.html | 1014 ++ .../reference/reference-mapping.html | 625 + .../Documents/reference/sharding.html | 204 + .../reference/slave-okay-queries.html | 208 + .../reference/storage-strategies.html | 228 + .../storing-files-with-mongogridfs.html | 311 + .../transactions-and-concurrency.html | 458 + .../Resources/Documents/reference/trees.html | 389 + .../reference/upserting-documents.html | 165 + .../reference/working-with-objects.html | 653 + .../Documents/reference/xml-mapping.html | 317 + .../Documents/reference/yml-mapping.html | 342 + .../Contents/Resources/Documents/search.html | 151 + .../Resources/Documents/searchindex.js | 1 + .../Documents/tutorials/getting-started.html | 427 + build.docset/Contents/Resources/docSet.dsidx | Bin 0 -> 2048 bytes 201 files changed, 56590 insertions(+) create mode 100644 build.docset/Contents/Info.plist create mode 100644 build.docset/Contents/Resources/Documents/.buildinfo create mode 100644 build.docset/Contents/Resources/Documents/.doctrees/cookbook/blending-orm-and-mongodb-odm.doctree create mode 100644 build.docset/Contents/Resources/Documents/.doctrees/cookbook/implementing-array-access-for-domain-objects.doctree create mode 100644 build.docset/Contents/Resources/Documents/.doctrees/cookbook/implementing-the-notify-changetracking-policy.doctree create mode 100644 build.docset/Contents/Resources/Documents/.doctrees/cookbook/implementing-wakeup-or-clone.doctree create mode 100644 build.docset/Contents/Resources/Documents/.doctrees/cookbook/mapping-classes-to-orm-and-odm.doctree create mode 100644 build.docset/Contents/Resources/Documents/.doctrees/cookbook/resolve-target-document-listener.doctree create mode 100644 build.docset/Contents/Resources/Documents/.doctrees/cookbook/simple-search-engine.doctree create mode 100644 build.docset/Contents/Resources/Documents/.doctrees/cookbook/soft-delete-extension.doctree create mode 100644 build.docset/Contents/Resources/Documents/.doctrees/cookbook/validation-of-documents.doctree create mode 100644 build.docset/Contents/Resources/Documents/.doctrees/environment.pickle create mode 100644 build.docset/Contents/Resources/Documents/.doctrees/index.doctree create mode 100644 build.docset/Contents/Resources/Documents/.doctrees/reference/aggregation-builder.doctree create mode 100644 build.docset/Contents/Resources/Documents/.doctrees/reference/annotations-reference.doctree create mode 100644 build.docset/Contents/Resources/Documents/.doctrees/reference/architecture.doctree create mode 100644 build.docset/Contents/Resources/Documents/.doctrees/reference/basic-mapping.doctree create mode 100644 build.docset/Contents/Resources/Documents/.doctrees/reference/best-practices.doctree create mode 100644 build.docset/Contents/Resources/Documents/.doctrees/reference/bidirectional-references.doctree create mode 100644 build.docset/Contents/Resources/Documents/.doctrees/reference/capped-collections.doctree create mode 100644 build.docset/Contents/Resources/Documents/.doctrees/reference/change-tracking-policies.doctree create mode 100644 build.docset/Contents/Resources/Documents/.doctrees/reference/complex-references.doctree create mode 100644 build.docset/Contents/Resources/Documents/.doctrees/reference/console-commands.doctree create mode 100644 build.docset/Contents/Resources/Documents/.doctrees/reference/custom-collections.doctree create mode 100644 build.docset/Contents/Resources/Documents/.doctrees/reference/document-repositories.doctree create mode 100644 build.docset/Contents/Resources/Documents/.doctrees/reference/eager-cursors.doctree create mode 100644 build.docset/Contents/Resources/Documents/.doctrees/reference/embedded-mapping.doctree create mode 100644 build.docset/Contents/Resources/Documents/.doctrees/reference/events.doctree create mode 100644 build.docset/Contents/Resources/Documents/.doctrees/reference/filters.doctree create mode 100644 build.docset/Contents/Resources/Documents/.doctrees/reference/find-and-update.doctree create mode 100644 build.docset/Contents/Resources/Documents/.doctrees/reference/geospatial-queries.doctree create mode 100644 build.docset/Contents/Resources/Documents/.doctrees/reference/indexes.doctree create mode 100644 build.docset/Contents/Resources/Documents/.doctrees/reference/inheritance-mapping.doctree create mode 100644 build.docset/Contents/Resources/Documents/.doctrees/reference/introduction.doctree create mode 100644 build.docset/Contents/Resources/Documents/.doctrees/reference/logging.doctree create mode 100644 build.docset/Contents/Resources/Documents/.doctrees/reference/map-reduce.doctree create mode 100644 build.docset/Contents/Resources/Documents/.doctrees/reference/metadata-drivers.doctree create mode 100644 build.docset/Contents/Resources/Documents/.doctrees/reference/migrating-schemas.doctree create mode 100644 build.docset/Contents/Resources/Documents/.doctrees/reference/priming-references.doctree create mode 100644 build.docset/Contents/Resources/Documents/.doctrees/reference/query-builder-api.doctree create mode 100644 build.docset/Contents/Resources/Documents/.doctrees/reference/reference-mapping.doctree create mode 100644 build.docset/Contents/Resources/Documents/.doctrees/reference/sharding.doctree create mode 100644 build.docset/Contents/Resources/Documents/.doctrees/reference/slave-okay-queries.doctree create mode 100644 build.docset/Contents/Resources/Documents/.doctrees/reference/storage-strategies.doctree create mode 100644 build.docset/Contents/Resources/Documents/.doctrees/reference/storing-files-with-mongogridfs.doctree create mode 100644 build.docset/Contents/Resources/Documents/.doctrees/reference/transactions-and-concurrency.doctree create mode 100644 build.docset/Contents/Resources/Documents/.doctrees/reference/trees.doctree create mode 100644 build.docset/Contents/Resources/Documents/.doctrees/reference/upserting-documents.doctree create mode 100644 build.docset/Contents/Resources/Documents/.doctrees/reference/working-with-objects.doctree create mode 100644 build.docset/Contents/Resources/Documents/.doctrees/reference/xml-mapping.doctree create mode 100644 build.docset/Contents/Resources/Documents/.doctrees/reference/yml-mapping.doctree create mode 100644 build.docset/Contents/Resources/Documents/.doctrees/tutorials/getting-started.doctree create mode 100644 build.docset/Contents/Resources/Documents/_sources/cookbook/blending-orm-and-mongodb-odm.rst.txt create mode 100644 build.docset/Contents/Resources/Documents/_sources/cookbook/implementing-array-access-for-domain-objects.rst.txt create mode 100644 build.docset/Contents/Resources/Documents/_sources/cookbook/implementing-the-notify-changetracking-policy.rst.txt create mode 100644 build.docset/Contents/Resources/Documents/_sources/cookbook/implementing-wakeup-or-clone.rst.txt create mode 100644 build.docset/Contents/Resources/Documents/_sources/cookbook/mapping-classes-to-orm-and-odm.rst.txt create mode 100644 build.docset/Contents/Resources/Documents/_sources/cookbook/resolve-target-document-listener.rst.txt create mode 100644 build.docset/Contents/Resources/Documents/_sources/cookbook/simple-search-engine.rst.txt create mode 100644 build.docset/Contents/Resources/Documents/_sources/cookbook/soft-delete-extension.rst.txt create mode 100644 build.docset/Contents/Resources/Documents/_sources/cookbook/validation-of-documents.rst.txt create mode 100644 build.docset/Contents/Resources/Documents/_sources/index.rst.txt create mode 100644 build.docset/Contents/Resources/Documents/_sources/reference/aggregation-builder.rst.txt create mode 100644 build.docset/Contents/Resources/Documents/_sources/reference/annotations-reference.rst.txt create mode 100644 build.docset/Contents/Resources/Documents/_sources/reference/architecture.rst.txt create mode 100644 build.docset/Contents/Resources/Documents/_sources/reference/basic-mapping.rst.txt create mode 100644 build.docset/Contents/Resources/Documents/_sources/reference/best-practices.rst.txt create mode 100644 build.docset/Contents/Resources/Documents/_sources/reference/bidirectional-references.rst.txt create mode 100644 build.docset/Contents/Resources/Documents/_sources/reference/capped-collections.rst.txt create mode 100644 build.docset/Contents/Resources/Documents/_sources/reference/change-tracking-policies.rst.txt create mode 100644 build.docset/Contents/Resources/Documents/_sources/reference/complex-references.rst.txt create mode 100644 build.docset/Contents/Resources/Documents/_sources/reference/console-commands.rst.txt create mode 100644 build.docset/Contents/Resources/Documents/_sources/reference/custom-collections.rst.txt create mode 100644 build.docset/Contents/Resources/Documents/_sources/reference/document-repositories.rst.txt create mode 100644 build.docset/Contents/Resources/Documents/_sources/reference/eager-cursors.rst.txt create mode 100644 build.docset/Contents/Resources/Documents/_sources/reference/embedded-mapping.rst.txt create mode 100644 build.docset/Contents/Resources/Documents/_sources/reference/events.rst.txt create mode 100644 build.docset/Contents/Resources/Documents/_sources/reference/filters.rst.txt create mode 100644 build.docset/Contents/Resources/Documents/_sources/reference/find-and-update.rst.txt create mode 100644 build.docset/Contents/Resources/Documents/_sources/reference/geospatial-queries.rst.txt create mode 100644 build.docset/Contents/Resources/Documents/_sources/reference/indexes.rst.txt create mode 100644 build.docset/Contents/Resources/Documents/_sources/reference/inheritance-mapping.rst.txt create mode 100644 build.docset/Contents/Resources/Documents/_sources/reference/introduction.rst.txt create mode 100644 build.docset/Contents/Resources/Documents/_sources/reference/logging.rst.txt create mode 100644 build.docset/Contents/Resources/Documents/_sources/reference/map-reduce.rst.txt create mode 100644 build.docset/Contents/Resources/Documents/_sources/reference/metadata-drivers.rst.txt create mode 100644 build.docset/Contents/Resources/Documents/_sources/reference/migrating-schemas.rst.txt create mode 100644 build.docset/Contents/Resources/Documents/_sources/reference/priming-references.rst.txt create mode 100644 build.docset/Contents/Resources/Documents/_sources/reference/query-builder-api.rst.txt create mode 100644 build.docset/Contents/Resources/Documents/_sources/reference/reference-mapping.rst.txt create mode 100644 build.docset/Contents/Resources/Documents/_sources/reference/sharding.rst.txt create mode 100644 build.docset/Contents/Resources/Documents/_sources/reference/slave-okay-queries.rst.txt create mode 100644 build.docset/Contents/Resources/Documents/_sources/reference/storage-strategies.rst.txt create mode 100644 build.docset/Contents/Resources/Documents/_sources/reference/storing-files-with-mongogridfs.rst.txt create mode 100644 build.docset/Contents/Resources/Documents/_sources/reference/transactions-and-concurrency.rst.txt create mode 100644 build.docset/Contents/Resources/Documents/_sources/reference/trees.rst.txt create mode 100644 build.docset/Contents/Resources/Documents/_sources/reference/upserting-documents.rst.txt create mode 100644 build.docset/Contents/Resources/Documents/_sources/reference/working-with-objects.rst.txt create mode 100644 build.docset/Contents/Resources/Documents/_sources/reference/xml-mapping.rst.txt create mode 100644 build.docset/Contents/Resources/Documents/_sources/reference/yml-mapping.rst.txt create mode 100644 build.docset/Contents/Resources/Documents/_sources/tutorials/getting-started.rst.txt create mode 100644 build.docset/Contents/Resources/Documents/_static/ajax-loader.gif create mode 100644 build.docset/Contents/Resources/Documents/_static/arrows.jpg create mode 100644 build.docset/Contents/Resources/Documents/_static/basic.css create mode 100644 build.docset/Contents/Resources/Documents/_static/bg-gradient.jpg create mode 100644 build.docset/Contents/Resources/Documents/_static/bl-corner.gif create mode 100644 build.docset/Contents/Resources/Documents/_static/bootstrap/css/bootstrap-responsive.css create mode 100644 build.docset/Contents/Resources/Documents/_static/bootstrap/css/bootstrap-responsive.min.css create mode 100644 build.docset/Contents/Resources/Documents/_static/bootstrap/css/bootstrap.css create mode 100644 build.docset/Contents/Resources/Documents/_static/bootstrap/css/bootstrap.min.css create mode 100644 build.docset/Contents/Resources/Documents/_static/bootstrap/img/glyphicons-halflings-white.png create mode 100644 build.docset/Contents/Resources/Documents/_static/bootstrap/img/glyphicons-halflings.png create mode 100644 build.docset/Contents/Resources/Documents/_static/bootstrap/js/bootstrap.js create mode 100644 build.docset/Contents/Resources/Documents/_static/bootstrap/js/bootstrap.min.js create mode 100644 build.docset/Contents/Resources/Documents/_static/br-corner.gif create mode 100644 build.docset/Contents/Resources/Documents/_static/bullet_white.gif create mode 100644 build.docset/Contents/Resources/Documents/_static/caution.png create mode 100644 build.docset/Contents/Resources/Documents/_static/comment-bright.png create mode 100644 build.docset/Contents/Resources/Documents/_static/comment-close.png create mode 100644 build.docset/Contents/Resources/Documents/_static/comment.png create mode 100644 build.docset/Contents/Resources/Documents/_static/configurationblock.css create mode 100644 build.docset/Contents/Resources/Documents/_static/configurationblock.js create mode 100644 build.docset/Contents/Resources/Documents/_static/default.css create mode 100644 build.docset/Contents/Resources/Documents/_static/disk.gif create mode 100644 build.docset/Contents/Resources/Documents/_static/doctools.js create mode 100644 build.docset/Contents/Resources/Documents/_static/down-pressed.png create mode 100644 build.docset/Contents/Resources/Documents/_static/down.png create mode 100644 build.docset/Contents/Resources/Documents/_static/file.png create mode 100644 build.docset/Contents/Resources/Documents/_static/jquery-3.1.0.js create mode 100644 build.docset/Contents/Resources/Documents/_static/jquery.js create mode 100644 build.docset/Contents/Resources/Documents/_static/layout.css create mode 100644 build.docset/Contents/Resources/Documents/_static/logo.jpg create mode 100644 build.docset/Contents/Resources/Documents/_static/minus.png create mode 100644 build.docset/Contents/Resources/Documents/_static/note.png create mode 100644 build.docset/Contents/Resources/Documents/_static/plus.png create mode 100644 build.docset/Contents/Resources/Documents/_static/pygments.css create mode 100644 build.docset/Contents/Resources/Documents/_static/searchtools.js create mode 100644 build.docset/Contents/Resources/Documents/_static/servergrove.jpg create mode 100644 build.docset/Contents/Resources/Documents/_static/sidebox-foot.jpg create mode 100644 build.docset/Contents/Resources/Documents/_static/sidebox.jpg create mode 100644 build.docset/Contents/Resources/Documents/_static/tip.png create mode 100644 build.docset/Contents/Resources/Documents/_static/ul-corner.jpg create mode 100644 build.docset/Contents/Resources/Documents/_static/underscore-1.3.1.js create mode 100644 build.docset/Contents/Resources/Documents/_static/underscore.js create mode 100644 build.docset/Contents/Resources/Documents/_static/up-pressed.png create mode 100644 build.docset/Contents/Resources/Documents/_static/up.png create mode 100644 build.docset/Contents/Resources/Documents/_static/ur-corner.gif create mode 100644 build.docset/Contents/Resources/Documents/_static/websupport.js create mode 100644 build.docset/Contents/Resources/Documents/cookbook/blending-orm-and-mongodb-odm.html create mode 100644 build.docset/Contents/Resources/Documents/cookbook/implementing-array-access-for-domain-objects.html create mode 100644 build.docset/Contents/Resources/Documents/cookbook/implementing-the-notify-changetracking-policy.html create mode 100644 build.docset/Contents/Resources/Documents/cookbook/implementing-wakeup-or-clone.html create mode 100644 build.docset/Contents/Resources/Documents/cookbook/mapping-classes-to-orm-and-odm.html create mode 100644 build.docset/Contents/Resources/Documents/cookbook/resolve-target-document-listener.html create mode 100644 build.docset/Contents/Resources/Documents/cookbook/simple-search-engine.html create mode 100644 build.docset/Contents/Resources/Documents/cookbook/soft-delete-extension.html create mode 100644 build.docset/Contents/Resources/Documents/cookbook/validation-of-documents.html create mode 100644 build.docset/Contents/Resources/Documents/index.html create mode 100644 build.docset/Contents/Resources/Documents/objects.inv create mode 100644 build.docset/Contents/Resources/Documents/reference/aggregation-builder.html create mode 100644 build.docset/Contents/Resources/Documents/reference/annotations-reference.html create mode 100644 build.docset/Contents/Resources/Documents/reference/architecture.html create mode 100644 build.docset/Contents/Resources/Documents/reference/basic-mapping.html create mode 100644 build.docset/Contents/Resources/Documents/reference/best-practices.html create mode 100644 build.docset/Contents/Resources/Documents/reference/bidirectional-references.html create mode 100644 build.docset/Contents/Resources/Documents/reference/capped-collections.html create mode 100644 build.docset/Contents/Resources/Documents/reference/change-tracking-policies.html create mode 100644 build.docset/Contents/Resources/Documents/reference/complex-references.html create mode 100644 build.docset/Contents/Resources/Documents/reference/console-commands.html create mode 100644 build.docset/Contents/Resources/Documents/reference/custom-collections.html create mode 100644 build.docset/Contents/Resources/Documents/reference/document-repositories.html create mode 100644 build.docset/Contents/Resources/Documents/reference/eager-cursors.html create mode 100644 build.docset/Contents/Resources/Documents/reference/embedded-mapping.html create mode 100644 build.docset/Contents/Resources/Documents/reference/events.html create mode 100644 build.docset/Contents/Resources/Documents/reference/filters.html create mode 100644 build.docset/Contents/Resources/Documents/reference/find-and-update.html create mode 100644 build.docset/Contents/Resources/Documents/reference/geospatial-queries.html create mode 100644 build.docset/Contents/Resources/Documents/reference/indexes.html create mode 100644 build.docset/Contents/Resources/Documents/reference/inheritance-mapping.html create mode 100644 build.docset/Contents/Resources/Documents/reference/introduction.html create mode 100644 build.docset/Contents/Resources/Documents/reference/logging.html create mode 100644 build.docset/Contents/Resources/Documents/reference/map-reduce.html create mode 100644 build.docset/Contents/Resources/Documents/reference/metadata-drivers.html create mode 100644 build.docset/Contents/Resources/Documents/reference/migrating-schemas.html create mode 100644 build.docset/Contents/Resources/Documents/reference/priming-references.html create mode 100644 build.docset/Contents/Resources/Documents/reference/query-builder-api.html create mode 100644 build.docset/Contents/Resources/Documents/reference/reference-mapping.html create mode 100644 build.docset/Contents/Resources/Documents/reference/sharding.html create mode 100644 build.docset/Contents/Resources/Documents/reference/slave-okay-queries.html create mode 100644 build.docset/Contents/Resources/Documents/reference/storage-strategies.html create mode 100644 build.docset/Contents/Resources/Documents/reference/storing-files-with-mongogridfs.html create mode 100644 build.docset/Contents/Resources/Documents/reference/transactions-and-concurrency.html create mode 100644 build.docset/Contents/Resources/Documents/reference/trees.html create mode 100644 build.docset/Contents/Resources/Documents/reference/upserting-documents.html create mode 100644 build.docset/Contents/Resources/Documents/reference/working-with-objects.html create mode 100644 build.docset/Contents/Resources/Documents/reference/xml-mapping.html create mode 100644 build.docset/Contents/Resources/Documents/reference/yml-mapping.html create mode 100644 build.docset/Contents/Resources/Documents/search.html create mode 100644 build.docset/Contents/Resources/Documents/searchindex.js create mode 100644 build.docset/Contents/Resources/Documents/tutorials/getting-started.html create mode 100644 build.docset/Contents/Resources/docSet.dsidx diff --git a/build.docset/Contents/Info.plist b/build.docset/Contents/Info.plist new file mode 100644 index 0000000..a14accc --- /dev/null +++ b/build.docset/Contents/Info.plist @@ -0,0 +1,18 @@ + + + + + CFBundleIdentifier + build + CFBundleName + build + DashDocSetFamily + python + DocSetPlatformFamily + build + isDashDocset + + isJavaScriptEnabled + + + diff --git a/build.docset/Contents/Resources/Documents/.buildinfo b/build.docset/Contents/Resources/Documents/.buildinfo new file mode 100644 index 0000000..445bf8b --- /dev/null +++ b/build.docset/Contents/Resources/Documents/.buildinfo @@ -0,0 +1,4 @@ +# Sphinx build info version 1 +# This file hashes the configuration used when building these files. When it is not found, a full rebuild will be done. +config: b9a0aa75b165bda23dea90cac5cdb554 +tags: 645f666f9bcd5a90fca523b33c5a78b7 diff --git a/build.docset/Contents/Resources/Documents/.doctrees/cookbook/blending-orm-and-mongodb-odm.doctree b/build.docset/Contents/Resources/Documents/.doctrees/cookbook/blending-orm-and-mongodb-odm.doctree new file mode 100644 index 0000000000000000000000000000000000000000..5da30454982336f9b24b86c94e95cae7e1612dab GIT binary patch literal 20483 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 literal 0 HcmV?d00001 diff --git a/build.docset/Contents/Resources/Documents/.doctrees/cookbook/implementing-array-access-for-domain-objects.doctree b/build.docset/Contents/Resources/Documents/.doctrees/cookbook/implementing-array-access-for-domain-objects.doctree new file mode 100644 index 0000000000000000000000000000000000000000..2f20eb656c54aa3b2282abd1933c2d2070b91734 GIT binary patch literal 12233 zcmeHN378y5b=I|4OS>z{l5A`pt+i~=TAmqe5tb!Owk6-Jy*8HGtTDs5r@LmWcYC_0 zs=9Y~5DgZ@i3CZ296&B7A$LeZ$Vo0j4#@2!D8P>!CE=uwi?F8P?{R6Dct`GdqqhzTINd zRB@9@;wFa9&JLqFY(`!fmC9~aP82BwQGSf*gC5)Na+M?o`io6Iyhe6e4 zbtN_?Vv{x2w54Lz21KyuAn9mDj9Ft&EG1;DsxX!g6XP?M;W8(bHuV;pXRNJu9EJ5T zjDj#?RTbGX5?iL%T0^9>=PI!^5myxWptZkK;bMovMJQZM6)xrqZ{tJOxK_8gqV9G+ zYz?Q%77vIWe8d`AQT0l0v_DRXt72=|;hyh8c=57|xVm?m6zmEO3~>!+X=fsKVV0!5 zl&QJfT4N2u9?)Fu;p?oytlgZoVc#+j8?3xkleX)#R@rVgRk;xcbD>)+hHj$_7f@vu zl$|hKsNsKkwdTciuKTE7k}48=t)a-CBMXWNYbcXdTx%J26iKfZN0^^|iMXy{4ZCrZ z=#;p=VhuUItrVVbs93`_+gXq_yM>Cio+e_lB5vf{Y-=E;-(L|o@j*MbHuzq^L~(i@ zm}Sl@N_-uM*~*1pyTNgMW{8_%wF8NmD)8OfnIGtM=Hukd$5)*B?$ntd&Ybz>d=KBr zO}>{;SOc1$ILM*RD+>Jj3csPk3l%wL>wbs4`KRGrmkbc@p&kZn2$oez&sI3<#6Vk z1xfFBI*10vy6r@vY?VSeH`$@}NSnL3oix9rU~P(|9Vp+9?3&Nck^ZnkYL3(p1GypY z>=l(Yn%q{NGQ@F6dLj{b{ck0ONO!NEj6M7)`NTa1erR@cA3KP9VcGim(2JWjMXf%p{nlqs3xHJQ2O`M#-mxMa4%*rdNv zXtraI*}E)3B$2K<6OBnZN4iKd=xO^tSTsV(%sB86q#I@$wQkZWiY?o;=nZsswKNBaRDsBJki$3E8PcM7fRfwSO&17_8G>oEN-&pQ{oe?+-js-^z?c)S)=G#!lZZFdcpt`i zI;0}Xw*#og-tD;Buon=Z5pl!1`N;i`D3g10+;5p~3qI>PMqo!VLO23?)`IBR$|AYh zlp$>M--j=jk2 zNF5Px>9CUyyr0+4PUE@BpN5?-3%x%d^ZNyfI7{1jhBEBXc-xyr*7NJNp6^Y>H_%8ozMzrB zH)5z~I?eJ;eTJIeMrQeDnB@g>{}veMTNCkZWE>jly}5A^HhbOEhmT0xuh#s~Sun)6 z!+P&a#CMQR&j5cOy`#yShGFAKL1MFG>K&+=?)cIT-%5l~oe0wd~ZT~_;k~{BVY922Pb{WT~<5#|1EbB-;coX1Bv)StZtot-lqdY z4yHbsh#$(obb+ZK?g~!gNBC75O#LV~G?<#oz2L`EF!iBC{5Zvr4lpz&J`7*|U?-UR zi7uv@L$z7`Bpj-%|4%{mpH9R_z?c)S4{6bL4E|^$eul<-mSQmNPgld1e3RMNsfVL|0}fy3(7?K9~xd zYV5jcM~>rSqYbTow!>;Veg0fOs~yZI;OAkr%g_qHfVuz0MEnxXJz3D&{TdNvWi zjArf4xqE5+^eY8^e%y38H`uQhG+y{vB7TiL$V{`iWWGksG^+%%ae(iH!6KdI<52w9 zA;GhmCu^AS8-3=a4HJG-yXeOg@mnN4_5E09-v8}BeWwpo-v1rU1E_OdPC5ejZFuqoUT{L`IY#?UKRhSkC<&0|5&T| z$wd4Ki9mfn(W&B}_USu)gjD=9sQ7~9`g5rI7m4`Ge4I~qsrp!$|%C zzJeHeCqg`yN7{db3%}%JFV4QDXR0m}9~1wMSoI%?_)ml*ozFk5V^xk$pHIYp3?^HO}PfUR(>S`RJoQOM>Ix#BJ)GJ4s9By%Jq0k0dSR*KTmbt?C2vyeFJY~H3#i`^pdF&sJ=?FeHEIHCsEKq z*v3@2_NHS(!lD@h#jC+=hiBuI%#(y&TQ~p&a!zwBw%a&NakIBHLAJUllE}T-{lYg8n$x*1?VQ|8_a!i|IwZSX-T#i$xL;v4QwHaE&qqg8r zBDZQA?VeBVH%~s4dK7ZIyh4*~OG##npSuj-&tr8eykORXXMLuFoYc_*wsaoPDop5G z(fl|Z&Yd1$O_(Lx_*L~=dd4(~rU}9q?X|LZqMZOQEpG$cT$<(=%-5eSohj+(0g#fu z+^!wz;_`kiU!yzF32XEv=cCB_lJi~cf=lF;a2$lWtMDh0FVn84VZl5_wHz4$9N2^w ztc|+9hKd-Nlvjgd#u{x`t>Hpb$!j#Do%pqe(V&Z@03P|uhXs9g8Xs57BQW;4_7OCrKE=MY132lii z)0fR&;CiStiK^*6uaY zW)<}&RGz8iQQbNkg*0R?<1u15fbX&;Z>Q(c{PY|hQ9*MDwXMeyy1bK~MqH|oiBK{l zkK>&*(6dza*&_4h3ACXAZxeJyZ6?kUagZeM(u4-LeOwP}vb%|Fz#7d2OsoCmJw(S3 z&R9D!=b@~^QlX3KsHU$R=nM5T@?MZxn@I!InJJF(eON=@N6iB+tHpEje&S?pW{nyn zpK19_amFI~0NT%4yTUkX#?krszmgaYl4wpOr|D&sDi?#eQC+5mCm%!`rghwn8_jCl zhn0K??O2W|KBQWojCdv`9$T_yK)Qf0vm5eZO}m}ut?v1H`m1^Qk$eOnaY@0N#p`Z9 z=*m~o>lU04pnMg}D^{5mA0^fU)*#O8>fW3@safhthkGx2%0tbbJf&N=JAP;{RBS%W|k`6R4jI(Wy6nSQ#gtKcS)^y(ygc{rt z)xBlu5ZM}Qm%~v>=|Hp8_|TFfSrwIC3vpArpgM(srFdybxmvWjHM@y7RB8Hg=x;I;}ggZ8u5$Q(o1v}r=;(J*6;Y3Exp^@48Q zq^Q!YDq_?&DCwi^oVAI3tQ}$+XtT^b#4If>m6|P_?FTxV%MpQe=4=&xw2kehd66oE&XKVcrg0Rc_}Vzmh*6 zTU)z|)YDv?=uU6MFP}he1mJv=W`GT#uF=e^v{6``UO-wSd2UhiDUep=8T{&sEfV6* NcuC}2@Eg}k{{y_T=biun literal 0 HcmV?d00001 diff --git a/build.docset/Contents/Resources/Documents/.doctrees/cookbook/implementing-the-notify-changetracking-policy.doctree b/build.docset/Contents/Resources/Documents/.doctrees/cookbook/implementing-the-notify-changetracking-policy.doctree new file mode 100644 index 0000000000000000000000000000000000000000..cc78bfbfe989d932f4738c2ddd4731fc216388be GIT binary patch literal 9831 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 BT8RJv literal 0 HcmV?d00001 diff --git a/build.docset/Contents/Resources/Documents/.doctrees/cookbook/implementing-wakeup-or-clone.doctree b/build.docset/Contents/Resources/Documents/.doctrees/cookbook/implementing-wakeup-or-clone.doctree new file mode 100644 index 0000000000000000000000000000000000000000..e8fadc82d0293b83c777371d1c6de897fea21aab GIT binary patch literal 10687 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 II1upv07R9TEdT%j literal 0 HcmV?d00001 diff --git a/build.docset/Contents/Resources/Documents/.doctrees/cookbook/resolve-target-document-listener.doctree b/build.docset/Contents/Resources/Documents/.doctrees/cookbook/resolve-target-document-listener.doctree new file mode 100644 index 0000000000000000000000000000000000000000..0df07d0963f519a8c27aaee3436217ab20cc76e6 GIT binary patch literal 15984 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 literal 0 HcmV?d00001 diff --git a/build.docset/Contents/Resources/Documents/.doctrees/cookbook/validation-of-documents.doctree b/build.docset/Contents/Resources/Documents/.doctrees/cookbook/validation-of-documents.doctree new file mode 100644 index 0000000000000000000000000000000000000000..23f0a77c38fc5373c7fe8d0222aa3e0ad4a0642b GIT binary patch literal 16311 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�&TY%E)6pF*xA~d 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 literal 0 HcmV?d00001 diff --git a/build.docset/Contents/Resources/Documents/.doctrees/index.doctree b/build.docset/Contents/Resources/Documents/.doctrees/index.doctree new file mode 100644 index 0000000000000000000000000000000000000000..f8b8cd6a833ae5e38b1200d37dfd4ff8941fc838 GIT binary patch literal 39910 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 literal 0 HcmV?d00001 diff --git a/build.docset/Contents/Resources/Documents/.doctrees/reference/architecture.doctree b/build.docset/Contents/Resources/Documents/.doctrees/reference/architecture.doctree new file mode 100644 index 0000000000000000000000000000000000000000..ae2aaa377a6b3845614ecefb2d2f58547a4d5bbc GIT binary patch literal 27570 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 aKcna<{RO{ro|tj|D?TFn8-APP`TqyGEQ}@q literal 0 HcmV?d00001 diff --git a/build.docset/Contents/Resources/Documents/.doctrees/reference/basic-mapping.doctree b/build.docset/Contents/Resources/Documents/.doctrees/reference/basic-mapping.doctree new file mode 100644 index 0000000000000000000000000000000000000000..d69c4bb3648964647c6fc197dc699b29e57268df GIT binary patch literal 87815 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

eB(mQ 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 C`^_H! literal 0 HcmV?d00001 diff --git a/build.docset/Contents/Resources/Documents/.doctrees/reference/best-practices.doctree b/build.docset/Contents/Resources/Documents/.doctrees/reference/best-practices.doctree new file mode 100644 index 0000000000000000000000000000000000000000..7c490b926b2e0f27c0ae682ea3b3b7474db8ea04 GIT binary patch literal 9596 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 literal 0 HcmV?d00001 diff --git a/build.docset/Contents/Resources/Documents/.doctrees/reference/bidirectional-references.doctree b/build.docset/Contents/Resources/Documents/.doctrees/reference/bidirectional-references.doctree new file mode 100644 index 0000000000000000000000000000000000000000..41ad65deafd841f669a90c8b60e69348bcdc0a8c GIT binary patch literal 21380 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 BfG+?5 literal 0 HcmV?d00001 diff --git a/build.docset/Contents/Resources/Documents/.doctrees/reference/document-repositories.doctree b/build.docset/Contents/Resources/Documents/.doctrees/reference/document-repositories.doctree new file mode 100644 index 0000000000000000000000000000000000000000..3087cc54765c2dcc22341ed602af49369710b6a1 GIT binary patch literal 27759 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 literal 0 HcmV?d00001 diff --git a/build.docset/Contents/Resources/Documents/.doctrees/reference/eager-cursors.doctree b/build.docset/Contents/Resources/Documents/.doctrees/reference/eager-cursors.doctree new file mode 100644 index 0000000000000000000000000000000000000000..7227b450847f369f7f0fcb3ed70a1aa0479403fe GIT binary patch literal 6830 zcmeHMXOtYp5k7@WE8Xb?5>bLd2-Cb2*Ree=mbM^9? z7uAy356om3dD0a4&!!CH0xjEmkd~*kVq6S|Zd1l{Eoo?FO8xsr`uh5$+mPC+CE7&V z&_KzEwI->W*pG2q6jnT0H#C^ikQi;b+Q>>%8iPHChRakCqu8k-redN**CeefiGn9< zk#>1EtuBef+$4_bQ51(!EGs5KM^)chEKkeJ94%ab#$c3tFe>+j#X`^Qx*En-glJAgC zG>tTfmCVndboMIWIKBzD#7@=qwiVz}#~^HCAD*;ZXWTG$;wTg2xIw@I_z2I9UB^aD zFgNM!jxE;xOMoMRLGO|lgvB{`7<<3fJ z2dCUHcyXr;W!;a>b~?N3cV(S@uce&5s_pD^;OvD5?1aQ~Q`*H6`LMH=O#fxGL`x<9LM+U-z*_Ckj}nGTuL#1ew1M!0HR0*Bo$S(n1U`%-!U z`&m8S@7ix zkgTWFV1q)I5!HZVC>@33#T@Nc{lJgsn6epQeCS56Ej4nsCR?_ybSh-XCDOJ|SpmxX z9tXXWgH|U>c!Bh8jlNm}gAV$>MgNMF4zRM#J6c%^09?J-W6dSBom$Ht3*oUlUcm@n zZly%*WmfizwwEPRhIv@0WEi_4V0T{DE^Mb5EAuWb%jje&vkq@_$uvw`uzv4(54WinC0zDYoT$$2CSeu)m&6#JnRI5^Hmw zyJsctG7{f8#Ue*`qC@mzA^JV^;!L^iOxT}yh5IkqwP(L=a5JG@*u=;J>nLSHe(1Ou zOw3|%!Zh5|QiBxsN6>U}FEurJIq=$71jTlvaLk0LB zS6tmN^zfA1=B)OtZ+qk#c;vqnL%J5h^N5rli8!$J_(~f*Hdqg(G|%C2GtfE*O)&S$ zEi{m^?K#2ZE?Q?Nh+GepZaY=3nGJ^+;ewp zMQ?YFZWbG(>J{jHjpajJFR{0ggp`-rMQWx#uHzbu+8TiN(5hF#qP7Y_Om^6X z=U>=9aFQO?ji4;?9=%lJ9oKgAW8mihSu7rlICxx2k7p8LTn=^P;JTEaz;UpEbe^~v zyC*G$-KI8nPhLz~Pl3Frrt~zH$7fxa$zxi&KBcF#yz{%X#FrNrec5Y(Z-z3NT!&20;w2@C$6 z8qu?Wz_U|&4otO~cYPP}8&Y~MBXA=SC?Vwe+Szld&Dts4Wx1E?$q+Zj)vhMD*(~U$ z6p|F99(zP63lUn2_E`>g;PQ>uw$nLqk>G^lyD?apucb8w=9HZ4vEmJUQl9*I$0xml zy=G3*^Ll``SBmE^6&BmtpuPa0{`VRALU`^)DZQ9umkqwbdJZ+-Wmk$-v35g)kZnp$ zFDZ$U&S1=rfnJ)@%ft{qX5*iir}PRjX6BmJD5$ho8hT}!ZWL=5jMeP!SC#42V%?(U z75mj|%Jf<>T=V0swWimV=_UqRtOgC+`JEjwy&mJbj)vVy-y6#GMpmn3Z$9*u9h=L14h$&CR0Ulhvd_pD&3q*{n+T>|7v? zk}{?*%!`dt61S50U!D0y%vJ$MEv8$b5}X?*&B`o?IDH9DS>q+mR;3eEhQ182Kr((< zkMd<-!LrdASBI=H&XR7EzFHFN8Th&%ShrPhS%uZy*E*2nM} zah;ePn{NP{0o*C;euKW5I}0HO4HQ`k{11H9%

    J?qEBf^mUI#3UH2RI`7khU@x!;Px_S=BpsiVajBzlY~F{caK>6m_hNDMbHXhJc8 zJN^LWZHRP1`yVg`!H>S!nla@kUev! zUWSMB;@B)7Wgsmp0IFD3@@czI%o|clTSihM6ZTG8(cvGK!$)JbvIn@RHRAXwLL4@|c@Uf*w zud-`a^O|E&C^n>e1fOlewv)E@3l+RS$Syr%xXsE&k78+Aufb0-z!BydJ%&G0y%s-{ H>f}EGiST|c literal 0 HcmV?d00001 diff --git a/build.docset/Contents/Resources/Documents/.doctrees/reference/embedded-mapping.doctree b/build.docset/Contents/Resources/Documents/.doctrees/reference/embedded-mapping.doctree new file mode 100644 index 0000000000000000000000000000000000000000..40906f481548a55ec1933ce8e85a85b0f5c5e0f7 GIT binary patch literal 29031 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

    &6B!g!O^syl{WY8g*-Ic*oU-=>T3xF=%FBH

    {uO)ws`%UKHF5G9G!uC=HYx0 zyoV$3%f%wTX_c|d19Db9Pw={FJ%hBsxu$ISh|vb*cjD7ecB%SB7>_mz@m3G7J(iNG zVxB*T|cbB2xfkj+Mi=N_e_Y=P(!)=r>S*nTgJ2IOl|3 z^Kj_ANXg*i0ZE;85SHa|$tPl(GnfMphz{z{K^k-(-=2`R`zwQVK2!3)=LDM>&e@)0 z+huw_?(Z_^;jwe6QXYx^1x#onHw~|i_Hkw!e`N{>iY9mP;7l*TJ*ahhx{@y?!*R}| zB<^F#Mi`kX3>1Cfts1y>$f5#F3$4ME>^xZl+s1ku$mB%*Nql|*rm?- zi%v>YinB8jiDIgPA-LlCQcN@H3FbuoF&VOjq$nNV2il(TGI$-82IOvA3R^3tP2e?EFC=DhqB4Tn#=Q zGLYFp6$Tq)&co-f(CNUL7CyM-*-kQV(Y8v7wgYMx`lZ#M9Ll824h`YP`pIT%ttHbA zrZz#og+ar7Jt>%dUWlAC&zz3WOqKERF7CDXh)J0)!u_3Q%b<;^6~A9h7vn~+*(%0Y z6}6JPQ$4h&oOCOgsd{t??(H(CvWh&}@)4MB8;V}R_3^jFhQM7C#yDz8FD(e+G2s_vs3 ea4pA1S-K(T#k0r&X!+cl|#g8(^jY literal 0 HcmV?d00001 diff --git a/build.docset/Contents/Resources/Documents/.doctrees/reference/events.doctree b/build.docset/Contents/Resources/Documents/.doctrees/reference/events.doctree new file mode 100644 index 0000000000000000000000000000000000000000..c0e374b8903b8408b9bdff58e4c89dd53f6eb708 GIT binary patch literal 65898 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 ABme*a literal 0 HcmV?d00001 diff --git a/build.docset/Contents/Resources/Documents/.doctrees/reference/geospatial-queries.doctree b/build.docset/Contents/Resources/Documents/.doctrees/reference/geospatial-queries.doctree new file mode 100644 index 0000000000000000000000000000000000000000..06fc5e54a0046fc9463e01b7d71b2deaba6d37c9 GIT binary patch literal 16734 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 F{tsm}i0uFX literal 0 HcmV?d00001 diff --git a/build.docset/Contents/Resources/Documents/.doctrees/reference/indexes.doctree b/build.docset/Contents/Resources/Documents/.doctrees/reference/indexes.doctree new file mode 100644 index 0000000000000000000000000000000000000000..056f1aea2256bba67bc378ffc7de307a58c50c26 GIT binary patch literal 57516 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 literal 0 HcmV?d00001 diff --git a/build.docset/Contents/Resources/Documents/.doctrees/reference/inheritance-mapping.doctree b/build.docset/Contents/Resources/Documents/.doctrees/reference/inheritance-mapping.doctree new file mode 100644 index 0000000000000000000000000000000000000000..4ba7a3dd4656b6f0ea76a4a8422de8ab12542cea GIT binary patch literal 34316 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 E0Sw(MGynhq literal 0 HcmV?d00001 diff --git a/build.docset/Contents/Resources/Documents/.doctrees/reference/logging.doctree b/build.docset/Contents/Resources/Documents/.doctrees/reference/logging.doctree new file mode 100644 index 0000000000000000000000000000000000000000..ff075273a416343e47d19709c629d4a8d07e9d15 GIT binary patch literal 4511 zcmd5=33D7r6;@>H8e6jL*iP)&$t1Dk6=Esq<|_Qs7h74v)!-1_r0UPHxCZ_f%0<` zMtUYufzXcq8jHj@blKE-8Z2mCjg2Kd7N(mDP3sF9Ix{jbFc7IuCrmmt+|X>Z&Rg1q z26j~91){BKq@YnYk@8FnFBV$!4mOW9$zcb{}!!twUvzM_E3nL6PO%$|A4zrOyhDpsveHlgp?9%2YZCUG-7QQv^(B<%H zYeC!KQ^ps12)45UHVmi$MOVl{Hr#uD<(b29v@TUF>ImW?mMN-d1Tfl@b>OEL9nKrb8jTqjsz-cEN>EWQOn8S_9!d7lT%dUcU*Vt%~r*@sD ztD9`ZkGR(Od`**$wzxkB>zdpqTW9^hwn^8?NzR6<_18CPj~wPXTOWmqpuMw$FxCqr z-5>`gDA`wA%L(EY35RN6WU8R2)#Uavu6Ot1`gD1P+$yh>JLFC_RIa7{5=f_O^6I9% zrYYT~ytXN?Z{`vQ%HAmAeZ(F|JXr$+N^&iQD7d97oxbcs{tk4z~VzZ0R23Xs^? zVjLaRDMvd$!A8?eXpzkeI%zuu`UD!#Lp!EOVrxi)ST z&Y^9CDxRpM8>?Kq{baWdeqQXanz+iNz)f+9F0<}b(Q#Gle#n94LM?;IT?ibh0?W6J z@s8wC*(?{%hi>=qfbu=dj2C&=zjP-S5O4!%2wPieMT?k_5s^q zGM;FA=ZlQu1{+`2k)?u43Q}woA1mdQ7DQ}PcjK0dy#7i}S(6}YFH)i9ZquZkZC$h6 zD}S1A(gGXvLsLo(O^Z$HTIbouzT7Rf*~_7Bml3WA;|H4b3JWV$8Tt(s4K^AEJ>~mK zDBtnbSTwz=Ne{B|{$Uk>^98+{O@>JjLi!jFqPZiCrq?v-wQLj@gh5Nu^w269*v?d9 zL=rfsd6Yx>)9VyHT+oFY+tR1Pv(gj5=QJ$=#^o@rvH%J{#Xe|V=qP%m!8T@XA4?(i z^DLs*vt81dR3EI@jZzpaLSfo7D(lpxiK9BbfsKIzUs&7p#tWDdL~4Dg)U&2HHQ0oP z+DbiN#dZ|Y^kxLoD0@a9&Rf_Je#yG@RyN+hkgz@w^ftB*R}#IQjX~83D6%-EcUX)i zyIv&bMMUp}M&1ZNFtsGr-0?1qA(BU?x8U8gLu|ZmD~B12@B!_MngVf`ycu z4|Ql%MxTIXKT>?o6EP1Xj|Z5`%38dpQ0*+Wi zJbjT3<)%G-6Mcy}z3n!mzl_~svN}Zc6*g9`oYrB7zREUvL8z_rLJr!YfWFpXV<=%r zp?0`PUq@%!?MqBFK7dy=!U@|FyqITmc}m|{LRs*Zw-5$K(l=)@Jztz@^er~TPTc`; z-)1BI;rTmq2it@~HyE>Qxj=#$`tAib))5Jmvkk}h0KQC-71F+sa?m)}c$8zr*7SoV zw$UcTat;5Gx&0bmSXh`zySN;avW5dOU&m5irytqQnHaw4Eo(daF=kLqNAwf6>te#z z)X7ifV{F1UHE)HapRvI(pq~RRhAlgs_G0;qC3aO+i6RnZKLANadi@dkm&o@X?PWG= z`c;!{FY_7`naIkQ5+bqD3Fy}s*al4gsI}_*Z)|rh=~?cPzis3#wry>fuUp}J PzF@-tTS0%%TQmOvYu;NK literal 0 HcmV?d00001 diff --git a/build.docset/Contents/Resources/Documents/.doctrees/reference/map-reduce.doctree b/build.docset/Contents/Resources/Documents/.doctrees/reference/map-reduce.doctree new file mode 100644 index 0000000000000000000000000000000000000000..54287a97beff9ebfaf72fbfce9e01843490e3e78 GIT binary patch literal 12289 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 b7E_cA0a}z1K6TS3ZN7*fv0TDuRL=i5mhQ?* literal 0 HcmV?d00001 diff --git a/build.docset/Contents/Resources/Documents/.doctrees/reference/metadata-drivers.doctree b/build.docset/Contents/Resources/Documents/.doctrees/reference/metadata-drivers.doctree new file mode 100644 index 0000000000000000000000000000000000000000..b1f21337283f3fd5c54f3f61419936b2c1ebb5a7 GIT binary patch literal 25935 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 literal 0 HcmV?d00001 diff --git a/build.docset/Contents/Resources/Documents/.doctrees/reference/migrating-schemas.doctree b/build.docset/Contents/Resources/Documents/.doctrees/reference/migrating-schemas.doctree new file mode 100644 index 0000000000000000000000000000000000000000..521c53e14f52c87dd236b6a9fbed341b7a59c151 GIT binary patch literal 27495 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 AQUCw| literal 0 HcmV?d00001 diff --git a/build.docset/Contents/Resources/Documents/.doctrees/reference/priming-references.doctree b/build.docset/Contents/Resources/Documents/.doctrees/reference/priming-references.doctree new file mode 100644 index 0000000000000000000000000000000000000000..41dbf267ba791d8e9fc2e6ad2ad54f4de411f4cd GIT binary patch literal 22676 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 E3$h&x&j0`b literal 0 HcmV?d00001 diff --git a/build.docset/Contents/Resources/Documents/.doctrees/reference/query-builder-api.doctree b/build.docset/Contents/Resources/Documents/.doctrees/reference/query-builder-api.doctree new file mode 100644 index 0000000000000000000000000000000000000000..c95aa9d775766fcb20ca045458b5a42440fba728 GIT binary patch literal 120994 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�~K?Ch**OSiYAo0iw4bxSSod3UtN*VN8g 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 literal 0 HcmV?d00001 diff --git a/build.docset/Contents/Resources/Documents/.doctrees/reference/reference-mapping.doctree b/build.docset/Contents/Resources/Documents/.doctrees/reference/reference-mapping.doctree new file mode 100644 index 0000000000000000000000000000000000000000..9d1f5ffbf51c8638adc747c6d7f2b0fe330463ff GIT binary patch literal 71030 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 M3!s-&r83m@f9OtLHvj+t literal 0 HcmV?d00001 diff --git a/build.docset/Contents/Resources/Documents/.doctrees/reference/sharding.doctree b/build.docset/Contents/Resources/Documents/.doctrees/reference/sharding.doctree new file mode 100644 index 0000000000000000000000000000000000000000..25b9f184ed75b9bd3b7c32c7d53c5e35c5ab46b1 GIT binary patch literal 11931 zcmeHN3wRt?b(U>C*On~VaYC>iCW?dCjZwCi2@d@*_|uhk!EN1 zo;zbnF#|Cq!Qu@8Qu?MeZRwjnX`8n64SmxV`h?OKeLrZS^g$p0xwEsok~XEOTS@}{ zlGV(ebI(2Zod2AA@44rpjTJYn#F6LgLJ+z_=lHcMf+(jp?7N^gCTdgO?hBl%h?Z+Y ztIkAq<)?Z(Iy$s;$n}Cb)qQblYxXW&tK!Ex5~O-APHjPRH4NrLw`_s0R=pQvdq~G+ z9eEK34TF*^X0_@|RL&l#Iiy9YDztXyFw*8}wPmevdKs*%8BI?0L&SkZZH0*BEb1_( zico`ghusZkn1mWy$3awh+??8muGN1$kBV^Bj)@I&NN%*d>-;XCI*fS~ zWmpx(#WFdrFP4i=t)`3hxs8TywaD`;ilEqFRLm4qARVbI>?_4m4TF~&1a7IkTw=|t z=OpS%*}YcO$e}p_J3JSX?o8A!NIKOINeTt4l<^*8N#*783cDwA<_xplc6ZuSU1jH- zC?c;MN6_c<5@qG>O`faO)zfxw*{Li*6s?Bw;>I=ZtJO8rc2C83w8rzEX}c?Jy%tZP z^<4FQyEhwJ?TzhD-wTAwPiz2-I&RcHsIIpnJ>P{s)&6N%Tkf`dbgFoDorEAGd3nvW z8eNT}f+P1#%i(Ex^|UJHAby$5`BkaFC}V3XgMe z?J#G=63jNfn)jhcE~vwax($O$9_Qw`?8N1@T>)EXj+~mzsoNptkwo3WQg&_V=s3xa zbo36(@%?a7Tgzc=MWH1_@*WI>2(8POt~kEnFJ!q+1oMdLt)xdk#Lb*K z4%fIlQ4>7#gRto(Ac~Q5B5!wcpfl@Lh7Sg(-HkzG^3=(xeHiAyjZ`&>7{-w-jT#&; zFeQfJDWH&7#nw^OJuu|GiFyg9V|Re^ZiEIzpuWb8)#mIox70mvl;^FcoL1@81F{#SZj8c~4Cy zK)_+^Y@(+5(?>vh3TvtfR?;~qEXSHL!J)ZN`25qTge1}^Al%XV?qbv-EHM$*l$eAb ztx@R4W?|3mXzIz_tc-rkk}O zmJ#A|9J#WNyz181329=_%iG1CTo!vu9D4@a=t9jvk4~b>tgLnf80Rc>%6P9N%4M<& z_&VPs z782#N((Z+*|LZ`jJJs3Dsj5w<;(4gR-de|chFTS__N$ugY5G+eGXCEqS1D+W5~W!! zUzj0N5F<8JDq%3|&BbK)3S~d6EaciWsR(e76Ll^#DqL+6@o?LETD8bHU25ZflbQ1^ zuiavmW8W81$@eriX%Awk^ND&zIuv*%>v;`Hj(zHt>$a23qJ$t+&8b&`&qIm2(BSjx zc6`n=pVycW`Ea5hVH11;R=?-2d&Y08$yzQ~+`m6(?YC|}njOOUgXs8E_R_qEoLk>9lk#9LVH-W#P9G1kK3=;{ucBI$*jehF zx(KzdBkzd2EFNlh{&SJG9rH{-6}x_*!0 z!W}G~gERQM?A{s{WZ=kyRi)>t z!OUa78b*B9Yg>H{;Q6(Q`nn9BkD2qJz+!S|ef!r4FY4>D2jB?v?nHe}wfSxt^<3rb>RB| zwlAY63nG^FrGy^!{fI6i=SlAK(?EM?T`cu8nElTt>gTfAe_(ZN{a~U##M8JH^#AiI49O>3 z9rWkx4$49-JO7o3-jI3dFF@u?l0p3`sHk*A8cc0?1}8nEvGj1D~4$8xh@DJ zCJQ!5|NmO`gO+2Z>+~kzHzMmh{5wm6ZMcf{0`9d zj4`45T_E}Q67?~dL-Hg)YCwuB9%HDFC+hdvQ11aGvyA9oui5jbc~HgfWkuVGp) zYz(}3x6Y7dyj4OZG18mNMTv_`)0piDQ_Plu$_S}bw_u$Kk-9V)&Jhk{hInQMx0dw{ z_n6^7GlOhQ6}K*K%QZ`y-~2>7BOT7dz#nja^U*JwnW;a7DgG!?f6NO1;t>m&`1n(1 z9CGSU5V$^>s6S<)FM}@I*@vUTpRG3q7_-0pIjq1*ilV&yH z&u{|syXOQQajXML&6 z0D#ZH`i$4lCFbK0#MEsldg>JGt-be8MW;S| zTrYjvopSgH={Ms~LR$hY<>ge*tIpL$S#av9%HvWFV$!c6s@nG_BX+g(Cr`^dZVY~DA>S?+4~q@uw5-AEV6V6Et7Vy=ho4481EAs?fzC%X}S%q({ww2 z?f%RPseO*1EulO3%b*vy9%1uWNGZ&ECbC3NGo1!Vqzep#Tqz|yE2vdW067LsL{U>V8(l||% zhWP;BF4amLBH^Z*PMOyJDC8kC8Si0+UHDGRbT2>mXLl3mh{C6raN8zaP|#_9>f_MJ^Mn{S9eQ1MT%FSJ_D93a3GUj9tifUOf zW|n=Sr4SLFMf-}q8)aFwIC?7n)6A%wMZx2KH>^U)JCs8 zaFa_ezYd8d51|&pCDwH<3TEA9cc(YIG;3HIqXXXOJni8CLvyBeN5v1Fg%U0zJip|) zC@$n8MUwb<(cX=zRvXcl-&=jL?fz-@A{K!G71V25bL4NakG-MYqNR711f6-Tq9 zw~*rJT%8rW5v82Gpw-BvnXJ!r8P(n#Mf|?CTq-rL9qHBF z+{wutdJRABTCL+Xj`}c2=8XdlaHK9ZmHG&G-srjXC_fCqV_L!SS~RZMJJaAGd|{#& z^cu-hy}Fhzf&{Ksx0-PwO)F@ewl6pSg!?f;rbarg+H~o4_f7qsXt=@-hr2d-icqi OcbXpOzdId_Tli0g#Cqlc literal 0 HcmV?d00001 diff --git a/build.docset/Contents/Resources/Documents/.doctrees/reference/slave-okay-queries.doctree b/build.docset/Contents/Resources/Documents/.doctrees/reference/slave-okay-queries.doctree new file mode 100644 index 0000000000000000000000000000000000000000..dca2f785b0281b94c9522dde41c8e02d950b3114 GIT binary patch literal 8812 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 ucN^WblTmTArMKdz38=qk_tT_RiPl?Ve=;O9>&! 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�Q3x&OU|55z{If#1s0(p^0lX?zG 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 literal 0 HcmV?d00001 diff --git a/build.docset/Contents/Resources/Documents/.doctrees/reference/storing-files-with-mongogridfs.doctree b/build.docset/Contents/Resources/Documents/.doctrees/reference/storing-files-with-mongogridfs.doctree new file mode 100644 index 0000000000000000000000000000000000000000..dc5251512f4a81f5be94cfa39a452b771b653b6f GIT binary patch literal 12163 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 BSD63+ literal 0 HcmV?d00001 diff --git a/build.docset/Contents/Resources/Documents/.doctrees/reference/trees.doctree b/build.docset/Contents/Resources/Documents/.doctrees/reference/trees.doctree new file mode 100644 index 0000000000000000000000000000000000000000..ea30dde73596dd5e7073a411b113c6bf11684d39 GIT binary patch literal 20649 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 literal 0 HcmV?d00001 diff --git a/build.docset/Contents/Resources/Documents/.doctrees/reference/upserting-documents.doctree b/build.docset/Contents/Resources/Documents/.doctrees/reference/upserting-documents.doctree new file mode 100644 index 0000000000000000000000000000000000000000..79ae7396b1041d2064b332d875a8d2cebacbf30a GIT binary patch literal 5606 zcmdT|XOtYp5f&1cR?_K&gh&z$CTP#r-GYs6ERZlDF!Gtj#%e4ZujhJadbfw0otc{M zxxKYLCfI<^Ip>^hoN&$o=bSUnIp_SxUr*TEJ4yBr{CHUJ^xn=)b@x|QUv-6RRy%I! zB--=UbP&2iRm@{Y1iC^;OkPW?Q(9AHV*&37-HU{xBU2jMziHK~RY{~oti7OZl`9kt z*A?5SlBUw0#-3qdyP~CNB&AU{9`RTSyCan1ZEQ5wpb8szk~qd;whEKj5wy0>Dz0$C zn48tKuFj6)i4I#~sDn@oTWKC^T0e6H8!?bPSJ8M%8{{zC)W*kb>hORO17HGDxRcsir0g#T7tJ!ez{@DF{VSt(pJEGQY#@zKq zug0TD)jDC&4&CNd=yqy=p=u(i#iAv!g(GT*fH)m1O~QbSq|d2&OZ(nur@m&K9OD^J`f7C^n)VUIcE`fKUT zlB(i}ONG)Q#!{u?T!Nr z<~{3RuK6CE!~F`K3#RQ#X}1Agfi0JOY#eaj!4AN7ChYDF+YduNX9S%O-7iS#LTtlU z;mBQJIAUs~IEVHmO)S`q1&5*zU4-Qqr*t2K;&4K_BGLf9B&EHBfO94p!1p~Y;F&&P zBTe_iiI=8SF9BbY0hT$=6AjM)NMgDS>+he^0}PD+E%siN@;(o#pQ!q90B2J2s}8YhnN$y=NyTEJIoz(Wl9e#ciBfTaAILfgL=}r z!V_JUt#vz7yK#dlPwDo|D^JHa^xiX{bBdSs^%04gURdR`fa*%RcO0zx^X8k`?no{`j zQ7K(raAX*-1sd5r>N8<@!0!FJs*oLT}EOHt*N z7Y*th5IT%q5m!)Kp_CRVo)qfq%wJ2tl`@;LsuxsBOca5_+?Ru?fnrOwv(8_=x9dTL5fW25+)w^mP2=^1Q7^*YVa zw@XPy&uq}M*v4h;Yqt8?4SEjSyh7a0K0UWV&tqebr?Y-Q(eoSh0>ehOuI!Vu=Iw=O zi~9(dI_eiS=*0$B6vn7X=_PeG>bXVB{8F^c>j$wYdRc>B&eoTQ?bjVw6MQ^UNafRM1vYoJFiWWt0fg^Qj&M4u$l?~xb z+@rUlE-8u*$h(5x&eovppm(q_)1_hT(23}s24iMj+ZXe~r+1-=UI#re?g;XM#k(=T zklfdWz4S@GTbSr5(TCgfLzrH`9FC@2013`TX0#U!#p%Ov z$_6*-M0TH4iar8k;jZ<9R#=FA6k_9D9tQ?6_7c29AFH#Yjp19KpSjJ}0);OuMjuC& zCZeg+&N$1ZPq2+*!NZUTyiQbMn@_?v!%i5qyf%HRa26;x?~m?6#a~^c^Dtc|pe*#zA21AxycvShR$A{-RX)ix!V%_;iPB3oz3(2wCCGpmf@Znrxf^|TCw zEQVb%UxTQs(NE0H8EC#>_v?51DTY)S#n8{#*5w9U5hp*Fx3F<@si8zHjr0q)+H>ib zK#S3fnO+sX{M8~mA&*4iXHATPk+ihS8QQPG_rmNMn-%@0LBC~NGG=4wVrHF~XNti1 z$EDvLU~4fb>_7kB+^?B|`nTjC>PeFwz4D&VCzyYnS(Q)e{*=<6<%Ha8#G{*^SR{|&ib&f)+7 literal 0 HcmV?d00001 diff --git a/build.docset/Contents/Resources/Documents/.doctrees/reference/working-with-objects.doctree b/build.docset/Contents/Resources/Documents/.doctrees/reference/working-with-objects.doctree new file mode 100644 index 0000000000000000000000000000000000000000..21db88897ce315d19f0a17a3e8f06992bba3eb64 GIT binary patch literal 76952 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�W9oaLq4%&CWj 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 literal 0 HcmV?d00001 diff --git a/build.docset/Contents/Resources/Documents/.doctrees/tutorials/getting-started.doctree b/build.docset/Contents/Resources/Documents/.doctrees/tutorials/getting-started.doctree new file mode 100644 index 0000000000000000000000000000000000000000..4e36523e633b29f39bca85c662541863bbbf122a GIT binary patch literal 29585 zcmeHQ2Y4LS@i*Xl?grD#S{QsXmd-X+ash)Wj*&3ng##>3dv`1C$#=K+X7?-!*iaG@ zJ3t^EQXnCf6w-UIr1#!K64HBb|NMV5Z+EZS$Y4r7-Nv( z-CWf#6us`Uo436Lzn1K>pHTaCUa$5K)B#CzR@o}q{&>aq)YL#tOQz>fnKEVA_WeS6 z*zkOdd^@kE_oo*k*)oO-|A(54-tnmz6IS$_z4M=lm6h z<9fhgxMgFw;5*f;o5ftqX1t61dOnUd{sEuNY;pyr$Na#bQA z$arp*a<*E~Zzl3~&LxXWtA+jMBCG1VL$2$WUEj_~#Gu8_40EB?CG6>{vFBiCrn$U@ISjze>C(LEa?4#IZw_&0nbS094s{adVIg0@ zTkxezv!zSea+ovQTv%g@hVazkRdZ&}DHQW)s5)Xm9oZ}b9_mGF6Y3~Pz|ny^1`cRCM@5lLbmFozm5;ovZOgPU#&2lr;-Ea zj9k(3JpAq)FlT11+;-yLUOr$Rz#VhKfLh@!w#;c7zH2~rJJYSIIki|Q+bXqre;^Bm zU#)cZcfgue$!6X_kcxIftp;aK4Ae8tmTzS(beK^rY`2X*)(#ubgc8_ca|Omw(H<*g3&nyz&UI$15L(8{<)C+5vJ)1$ z)pB0QG2ASVn2;P$j%s{kN5Qj=9ncI`w{aP8=B%G z!&N=n4MySFezn4F>xFFe4sI&@OF2Q!wllO9$L(+IEC_9x0TOpucTs^dE{rtFq#tT9B8t019cv=_(B++eLgnTCZ;3Q z-*f6KS5M-RvpH$b0440+qz?cA&<&C>YEfC8zZ2#XnHIscslN1K0NAY_5Kyg01(WCJ zRX>{sSgqNtI>s=@a|M5AXg9hB%;`u*h3W#qyjw%6wy z1GSZH$R=)>8L9+zNz$Ck%vP5={plHK0SN2jTGMu&?ONiT%lI#2O#zs_(~jzLjFc+^ zwGFkKQ^4?xVZmT8r)%oefEYBO9%cqUI@(fQ37Rs28f4LW6zkPuZ&$Mp`&?F_vJq24 zFTy#FyC>J6u~ptV%z_W0Y$suHXU~mv_fXPd4`nz|4mX6|=d(lixlg;#7i;(VOm?3O zsNK@S?ueH%(ojw4rNqd$qe~tHV-Z{|1*(k79mYPayOKQ+H&7L(=}OSF)irXk#lH41 zwCjqgL+H`2Fp9Q+|8;l3JMlc2RdGXx++xukWosw?M%^sH7`3wo%r1tDcpAM*)wN3u z9<^)N{D^5D+Vv<<<%2iXK^dlQ z6${AKNpreRRM(_oyQg$%T@q^#7L$chi-Q*Tmg~zDe7lrTPe!HJ2I@NQtOdZtq5_AI zeZ{J0Q@6Sv#E*qKa#mbW-N1A_r46V1qiUb(uprzRsHZUx7|pez^hqy0y-iur3_Y_G zJ=B(zUEt|60(Db_??&M%++l}XadV(<;Z__SwSwsvN3dkU?c}+VQNa|{OVnEANHd<< zhLpG&w@Nc^3)Hh1`B4vsTs<4uZ?13XbJ}3vyoek6Tr~8-5k3#Cetw`{z^!KFw?(an z9*I=R?SZ-j`64zAs^oON9UZPdWoq@WGo5@rB4J}jrm!kID z>ov&B8nA~NB*u9+n%5rD%h9A)1nQOCBu08?O>w*`P_JeRc7cL(Fo)ntiIs(eY;d>& z^Huo4vF7kF3-#eb3`2KBp#uCul2>z~W!{2PqX;?}l_F1Nww$-c2q%%d<^LT*Iv~+ zRmC*VCaaiGZ@`$nH&Ab6DrbUQ5!+d@ys4GJK*nR{&EV}+Kyw$Vx1gbK4b))QeW~7oLhlUJySU!QEKM-RRI?)$;>$pX-xjiKOpYZ3{OGlR)ZT%9oRuR?_#Yz&t&{F=rj8#C=wr0pkyqml+oSYod{~8Y0hmRQ@xKF`F^;t>;#rwPkmsQIkRY$hpQZJ`=I!t zpxc}^Rx0*-Ot<=wIkQ4GNZnzp5633OoaYpVog)7G8F;&%`bfaB4IR}uJd*m4g42&R zGt|e>w;vDGCnAA(PffAh7pPBihaHCw>vuaqO>CWdF+CybrSF1Sk8K;& z_rUV+2kHk=_k2r)G&1Es4AhUJoCZ^Ve}e$1A3KMODgTKxTTJ0G{fs+| zE%26F$Xq4{p87eY?uYfJ{1*+_!@(Wn{3W>79?`GRm|q9#H>k>Cqz}|a+;0Q*JEq{B zpa63K@xp56JhZ>Hh$FrbSO|`d+D6%ixklJ6?{d%*A@UuCyeL&2$P`1)rXMIP6{h?8 z|qy z#`09FM-)SC%5y%uH?fmc$VVn1LUm5TF6NUQlv~%~u|^o~=xiybeJkxL?N!0h18XdK zQ54+ov&!R19rBA>w5}tvbsZ}(+w^i)9)v-YwV`UyuG}8k6;%=%)JK42p=oYx`GlCQ z4fyU0LY>-exUpL!4`H7tGT1y&mW;4;v&hcp{AM@ZE>#e@D0m54fNaR~LOcRm#IP8n z2SAwVK)mp1I!F>*E8ro(6)fgwk2uL(>|ng!cs(70M?i<-Z#d{jxC$r^jQg2U^>mn| zvD-w4OMxSFfwaPinjB8sCWq4=b=STgPD@5asO2-YxXpB=$m7I3=Z&HHrK3;?BVtm9 z#h^{f@S`cibToty`u7+-0y0E=#pxPh1uKr5?JRZ95KZjdpd-SxM4&rjXsG>T<)u~a zN3PIPI>gSh zj}-kAw7p|qAx1qqI@&#Yq99zoa^CGee9FA;%2l*jAI62A~d?fdTnjliqIt7Wx*8oLXc}hTH;kZktDBABqoP~EZm#mppE4$ z>Yqn^D72B7hcz5zcCaVuZW(Lr#_Uyrcs>x7l6iw3bRvllCY9{hFWZfRU&4wVetnYj zN5c6*Ctd5)cAI^^WkypKuv1=NsV9jCa2ZDx9y3j@#$o!YIyXg;1STNqU?3V ziJkY|MVw9(=$;rF6Nz4VX`M(!5vMiCmx$9^DZ5UWP4B>yzmi7L08fG&y_iVKM9bq} z24WfdX-J@=7w_Rr6Bz~vIpmc?8I5rIyP0H4*kU)iam0eZdubR6Rm9*80gK++x~EuV zLUO{$Loa{fPsICYYLdkW_r6^+Cyi;r2SMx?ln;VZE6+c7n;FkF8zFec$+N%p(hIGf z#{J8)ztcHCnnj+0mw+}%5yPCyy+&s;AP}7;sjY~(vl-Dwe(Du%QtoWLL+Z}KBcOBf zH=0LsB`x#F^8{>@21^s3lj6cs(0&*^LgKPyL^`w1HGGnEh`5HlRB_zelW%xS>tuLq2G+vx;v=NL%FB>ns8i}`5jwaf!iNZQ1d^Nz* zrQ$f&+i*x98ymw77K4M45`fmmQctX8#sVoF_U|?>iZ?}KRdv;Xr^rXjmN!eq? zV7eGoKvuTm5s)b)8ILVV&XN(9K)sBVE)l{m4GB9CylNv8%x~U1(z@hI<6`S{8SnQfEfjDJ#PE4gMMvvGb4y zr4}o!T#L#34k^c#wro9g&fn?m{We3&a~*ryY3N+w$R5IbxW{dV z#(qH>!jFK4nG(ks5kf(kBkwXmsUW{E9pMV<_YTqs5*oG-jxaA7`*wa#WD{Yt8lfUe zLflGt1XRY~$S-0#wYbF_36U}d+vdp?;ED!jQJ(^Z6ONN`Su-htVVett>5Jp_If;h# zZqZt|v)po7pPI0y5ukoS9Dr)O%l81+G@|wZ87;Bfh@AsA)vdJC30NRkTYRUJdV9$p z=0h^5mUEUqH9>X|EY)iiv8$krUFQuHbAFiJwI0@C3%O(C8w-?Nma163lk#1h9jpu>IrQINR!t56GQMtMrqNEnsKHIl=HLqsN zCTyio);JRJN>2vr8ki5ifTqGl%F8-=+r`p+2@GrMw%*>bbjZk1K9Zd)jF5|+YwFA# zuUaQh#4QdTViU&hLx=Z9rq4$qjGajlb<2|?>c$`G_mPNF72*Y*$zg|pMnyoiJ!cK6 z{a<(&*tSe#0y16$iH<;#&C7I^WYqa^bTv|(LwU0TUBf?T$$o{8MuHtk0c>QZC*xN@ z*UGygM+2FBXb)Y-rIw6v#dTX2=z0OHt0~;I5M#c93-r_>dI}QI$fx2F(2Y{u7zwd+ z<z`0o>ANL~{v;UT~F3AvbJ`9Cl-1{zv0_TPyey)~^{5 zasw8nel&arNtdVsM=E3sP(sc>3ZubtER)`F6$hFPK6j0GaxwC89BWi3=jK!_y!nB)6#3crVQh8IE_gya+!6da-~TkHZ#n4}^A2?8Hli(w2s8zMrR1cS>eYdhNsP zD7p)XAT}?>BcPWFR^wq~MSn53!#KpMM~Snr{&* zdKD5t@~iO(=rvMWOFCBsNk>Rd?{Vdr!@dzfx<}XfTB-AOx=x8X>>KHSxA_X7ROh}VD)g$2v)pGtkK7rf*5|IZg^sv zmk{%k=Wt$R)bKOJfG3V3krU7KzDS-m$*FC%1J%OeoEU65$B?6u?GJez%&>7Uy6$#E zD-=r9?`*EC7Ew}%eJpXV_?R@$=9Al?XmIF5ZU26QN|1fobg!_gS&&kje;S#&Hwr*c z`c@es7<^L}C7*kr{=Zs|qT^iE{48e!)J$5`=4&b>W>R1VpyQi0wL9O+IF z8m{fqhj6mTni?6!6eQIm@$??9UgBzXr|v*&y_eH__LdTQABsT?-j7E>AHd%zz{Ske zxRsO;8m0gd~RPaB|*NP&-r1=^fBKp&I5=7FUJfi?8Uk&m|4 zA3i{zKpGlyA07dHQV?h*&DGT_>D8>HYg%W5!=FB-@qb$Ie@5d^KQvr1JECadX9el! zLZp8KfgAYHjYKkG;NKOQLVmzlx867jzRk&}ozgRu&#hjydgW=W@+;+^hLR6d0@pgh z&=CA(S_4dMZlO!*i4Nuzbw&A`Pk1OLQ^@}`t@<};#=(;UziRcVC!V_cL~I8UY;itx zx(2AFcP2W)nK5u7^h#uY@p<7&!vPENAt1kw6zvzdP*3^^%sKiZSOEF|5*`74S(v8f zpM|StPu-qH}QS#zq)yK+u*?KIT(G88AL1t(U$AJdJ%Op5)gB zee?KDZT@@IU*8Y_J%Xe9>6=JI3%-R%K;IS!eL_zJftr~7(98Rdz;BCQ_E+0}|(K%JT=L7IXYpsbWImzP@=e8~%n;V8gzmi~bILV9Y=82`RU`ql?zDbdA#_An=JNB_<&AleaLg%axeV{MH(9~cJ2QJQ)_=8 z5;yd}T(Dht&a~7kf|C(j>8Z8xS=O;D)2=%RA&KS zI1xscF751E&#k?nY@a#a5hPo@?mk?r=t|w&gb;+6T)Z)5P~%`@d#*^ z(4>2rIZ^B7gyhfG`RU70{U#l=7{&4=o{PxIfACoOxO3@ou`IQ|kLPw6^f5sbM~d8=R?6EkNX7wmb2shf{Vz_0~)1hi0SGDbp@nM*ZUS|lI` zYLN8$x-Qea3Dp9GX$xC>{*Hmum24~L82ZbBFiC$yFs|m~09!Q0L4tf@LbN32(_)kY zpB_F%bTBZ18HeD3qf>+!Ej`@!n)Dnd`G@QL^ahMLwht07M%cH2Qxzp7J?heS?6%jZ zc}C}WK~w-E2Z5HXVU8WkYC4W2NdQUWVK_=3A8J?*S(Xs6LQvYrvV;{0a2NJQhrM_` z9RH5v-%?f|7N{>E@a*D{K4r{ChzeV|K^)2=a>ZdeoGWTuREwFxXUFWL{Iv6ki{oh571F)J4E$pJOVmK7-2jS z838TA!x0laUI}LiJC=m(cw|<>bpU%g1J&wV7 zDcte+fsN%%3S0uA6cgK|yvsIBh1cJn8F-be)`T${$|%06%lKPgdFEvkPsa9)S0obK@JJK$J(l zNDOEV{&IwRi2YQL)=J_!{N3A_?*OewsSytFTAsPU8!u(uVkWB6qtlT)Kxg1DE|jXj zj!KBxAh~C9?mkG1IGv0AW*4%nxJvv{C_Hog<5gnSsexwC-0p~1$ zTU_8TSsC5E9&M3g7jovzaFM!47vZ(;*ta2qb;X?_iA$_v6}OrZua0wREB<0(Hp7~W zB7SE0rYN*>yGNHG2Xr2Y`drH6vM|2-1Lyd_8K6s%*Kf|Dp&Sa};;WS*<#^wT%g5{rH&uVJ@aPIbK94skRWkUv zz(<;Uv`tdy`Yu-)(Kx^ery-xl=}P`RH#)i*1@ks#IPCz8K^o*=vk*o>GzE93k%f0| zf%H28@vPi?tS98!-T#{B6S)iN%CLF7X8wdm}&tTKcxgmji!6?}b=bX}S9*I78 zDHEM|l+myH_9&tufSC)p1s)1IsJ{qq&@d-Y%iG!NFgc9LTws^7Hp|R-(Z;<-yyXGu zyUe4oAE8q9cZYw35lv^(uxw~Mzs%)ZmCDspW{gKI6_JK+ou99kDw$Y@Jt`p`V;PG& z`DoG*xU7Na@m((PCqWGyv=X@jyO{fJs8E#d&)}W}Gz9`*K_*Vfwkuu7tvo4Dd=i?u z5O-JM9ytuJsuyyR81*!Bx?W>To}iRYhj`O0=!gnv+ zlSNfz?lg}=Q%kWvsL4@AmetY@0PQjlu**AWRFLV0S3J9#M=MK38k6J&Sh9gH!5O)* ztBkwYXk5}4G52t5o_wzexpI}@oUQMA!?hIU?R2#O&*K46C&|}H>ini2qX5acw$2~w zI*p#pzY`%U9!A${OoeiNC)0HdHcN`&TDxJop5NzZ@&(Vzq60!E-XLXXLDk@Z@}a^Q zJ%z!hm`CLtTz!^9=V<1mm8{7!C5yIKEA&)A?ZUXUvYF9B-goFmBy65(&TEupdKzP! zCI@)Y)A{#|@M=KXi8tq1ea#=%qw%Q4QRzPILON~$3YS8oL!W_!esi7(Uyao_N$MOA z^!OQ7#rhSGZbsTJ6ZZ{OYAWUyq?uwRS;g?t5)~`~bIYP)^7f7tpuH45lfhsq%Dy$0 ziBDyxTRC}Z5nq$&HvV~JBafQ~>azecA_Hh1YifMeikSLrF1&vsPtV~W^DtuSh2yzM z++`l2m4jWhMSFp-zLN>pNz?NHf}s}nnhYV2o{z)a1PZI<%6ButL7pMgWBbh+OFRz#qZ)GOJOSEX}nZW!K2VVWOySY kF8|Zt!OU5asqyG#03D#a@mD@EGdVBE3)Z~gZ#CQf|9Ad^=l}o! literal 0 HcmV?d00001 diff --git a/build.docset/Contents/Resources/Documents/_sources/cookbook/blending-orm-and-mongodb-odm.rst.txt b/build.docset/Contents/Resources/Documents/_sources/cookbook/blending-orm-and-mongodb-odm.rst.txt new file mode 100644 index 0000000..712a25f --- /dev/null +++ b/build.docset/Contents/Resources/Documents/_sources/cookbook/blending-orm-and-mongodb-odm.rst.txt @@ -0,0 +1,210 @@ +Blending the ORM and MongoDB ODM +================================ + +Since the start of the `Doctrine MongoDB Object Document Mapper`_ project people have asked how it can be integrated with the `ORM`_. This article will demonstrates how you can integrate the two transparently, maintaining a clean domain model. + +This example will have a `Product` that is stored in MongoDB and the `Order` stored in a MySQL database. + +Define Product +-------------- + +First lets define our `Product` document: + +.. code-block:: php + + id; + } + + public function getTitle() + { + return $this->title; + } + + public function setTitle($title) + { + $this->title = $title; + } + } + +Define Entity +------------- + +Next create the `Order` entity that has a `$product` and `$productId` property linking it to the `Product` that is stored with MongoDB: + +.. code-block:: php + + id; + } + + public function getProductId() + { + return $this->productId; + } + + public function setProduct(Product $product) + { + $this->productId = $product->getId(); + $this->product = $product; + } + + public function getProduct() + { + return $this->product; + } + } + +Event Subscriber +---------------- + +Now we need to setup an event subscriber that will set the `$product` property of all `Order` instances to a reference to the document product so it can be lazily loaded when it is accessed the first time. So first register a new event subscriber: + +.. code-block:: php + + getEventManager(); + $eventManager->addEventListener( + array(\Doctrine\ORM\Events::postLoad), new MyEventSubscriber($dm) + ); + +So now we need to define a class named `MyEventSubscriber` and pass a dependency to the `DocumentManager`. It will have a `postLoad()` method that sets the product document reference: + +.. code-block:: php + + dm = $dm; + } + + public function postLoad(LifecycleEventArgs $eventArgs) + { + $order = $eventArgs->getEntity(); + $em = $eventArgs->getEntityManager(); + $productReflProp = $em->getClassMetadata('Entities\Order') + ->reflClass->getProperty('product'); + $productReflProp->setAccessible(true); + $productReflProp->setValue( + $order, $this->dm->getReference('Documents\Product', $order->getProductId()) + ); + } + } + +The `postLoad` method will be invoked after an ORM entity is loaded from the database. This allows us to use the `DocumentManager` to set the `$product` property with a reference to the `Product` document with the product id we previously stored. + +Working with Products and Orders +-------------------------------- + +First create a new `Product`: + +.. code-block:: php + + setTitle('Test Product'); + $dm->persist($product); + $dm->flush(); + +Now create a new `Order` and link it to a `Product` in MySQL: + +.. code-block:: php + + setProduct($product); + $em->persist($order); + $em->flush(); + +Later we can retrieve the entity and lazily load the reference to the document in MongoDB: + +.. code-block:: php + + find('Order', $order->getId()); + + // Instance of an uninitialized product proxy + $product = $order->getProduct(); + + // Initializes proxy and queries the database + echo "Order Title: " . $product->getTitle(); + +If you were to print the `$order` you would see that we got back regular PHP objects: + +.. code-block:: php + + 53 + [productId:Entities\Order:private] => 4c74a1868ead0ed7a9000000 + [product:Entities\Order:private] => Proxies\DocumentsProductProxy Object + ( + [__isInitialized__] => 1 + [id:Documents\Product:private] => 4c74a1868ead0ed7a9000000 + [title:Documents\Product:private] => Test Product + ) + ) + +.. _Doctrine MongoDB Object Document Mapper: http://www.doctrine-project.org/projects/mongodb_odm +.. _ORM: http://www.doctrine-project.org/projects/orm diff --git a/build.docset/Contents/Resources/Documents/_sources/cookbook/implementing-array-access-for-domain-objects.rst.txt b/build.docset/Contents/Resources/Documents/_sources/cookbook/implementing-array-access-for-domain-objects.rst.txt new file mode 100644 index 0000000..1b62c24 --- /dev/null +++ b/build.docset/Contents/Resources/Documents/_sources/cookbook/implementing-array-access-for-domain-objects.rst.txt @@ -0,0 +1,123 @@ +Implementing ArrayAccess for Domain Objects +=========================================== + +.. sectionauthor:: Roman Borschel (roman@code-factory.org) + +This recipe will show you how to implement ArrayAccess for your +domain objects in order to allow more uniform access, for example +in templates. In these examples we will implement ArrayAccess on a +`Layer Supertype `_ +for all our domain objects. + +Option 1 +-------- + +In this implementation we will make use of PHPs highly dynamic +nature to dynamically access properties of a subtype in a supertype +at runtime. Note that this implementation has 2 main caveats: + +- It will not work with private fields +- It will not go through any getters/setters + +.. code-block:: php + + $offset); + } + + public function offsetSet($offset, $value) + { + $this->$offset = $value; + } + + public function offsetGet($offset) + { + return $this->$offset; + } + + public function offsetUnset($offset) + { + $this->$offset = null; + } + } + +Option 2 +-------- + +In this implementation we will dynamically invoke getters/setters. +Again we use PHPs dynamic nature to invoke methods on a subtype +from a supertype at runtime. This implementation has the following +caveats: + +- It relies on a naming convention +- The semantics of offsetExists can differ +- offsetUnset will not work with typehinted setters + +.. code-block:: php + + {"get$offset"}(); + return $value !== null; + } + + public function offsetSet($offset, $value) + { + $this->{"set$offset"}($value); + } + + public function offsetGet($offset) + { + return $this->{"get$offset"}(); + } + + public function offsetUnset($offset) + { + $this->{"set$offset"}(null); + } + } + +Read-only +--------- + +You can slightly tweak option 1 or option 2 in order to make array +access read-only. This will also circumvent some of the caveats of +each option. Simply make offsetSet and offsetUnset throw an +exception (i.e. BadMethodCallException). + +.. code-block:: php + + `_ +for all our domain objects. + +Implementing NotifyPropertyChanged +---------------------------------- + +The NOTIFY policy is based on the assumption that the entities +notify interested listeners of changes to their properties. For +that purpose, a class that wants to use this policy needs to +implement the ``NotifyPropertyChanged`` interface from the +``Doctrine\Common`` namespace. + +.. code-block:: php + + _listeners[] = $listener; + } + + /** Notifies listeners of a change. */ + protected function _onPropertyChanged($propName, $oldValue, $newValue) + { + if ($this->_listeners) { + foreach ($this->_listeners as $listener) { + $listener->propertyChanged($this, $propName, $oldValue, $newValue); + } + } + } + } + +Then, in each property setter of concrete, derived domain classes, +you need to invoke \_onPropertyChanged as follows to notify +listeners: + +.. code-block:: php + + data) { // check: is it actually modified? + $this->_onPropertyChanged('data', $this->data, $data); + $this->data = $data; + } + } + } + +The check whether the new value is different from the old one is +not mandatory but recommended. That way you can avoid unnecessary +updates and also have full control over when you consider a +property changed. \ No newline at end of file diff --git a/build.docset/Contents/Resources/Documents/_sources/cookbook/implementing-wakeup-or-clone.rst.txt b/build.docset/Contents/Resources/Documents/_sources/cookbook/implementing-wakeup-or-clone.rst.txt new file mode 100644 index 0000000..1a595ff --- /dev/null +++ b/build.docset/Contents/Resources/Documents/_sources/cookbook/implementing-wakeup-or-clone.rst.txt @@ -0,0 +1,77 @@ +Implementing Wakeup or Clone +============================ + +.. sectionauthor:: Roman Borschel (roman@code-factory.org) + +As explained in the +:doc:`restrictions for document classes in the manual <../reference/architecture>`. +it is usually not allowed for a document to implement ``__wakeup`` +or ``__clone``, because Doctrine makes special use of them. +However, it is quite easy to make use of these methods in a safe +way by guarding the custom wakeup or clone code with a document +identity check, as demonstrated in the following sections. + +Safely implementing \_\_wakeup +------------------------------ + +To safely implement ``__wakeup``, simply enclose your +implementation code in an identity check as follows: + +.. code-block:: php + + id) { + // ... Your code here as normal ... + } + // otherwise do nothing, do NOT throw an exception! + } + + //... + } + +Safely implementing \_\_clone +----------------------------- + +Safely implementing ``__clone`` is pretty much the same: + +.. code-block:: php + + id) { + // ... Your code here as normal ... + } + // otherwise do nothing, do NOT throw an exception! + } + + //... + } + +Summary +------- + +As you have seen, it is quite easy to safely make use of +``__wakeup`` and ``__clone`` in your documents without adding any +really Doctrine-specific or Doctrine-dependant code. + +These implementations are possible and safe because when Doctrine +invokes these methods, the documents never have an identity (yet). +Furthermore, it is possibly a good idea to check for the identity +in your code anyway, since it's rarely the case that you want to +unserialize or clone a document with no identity. \ No newline at end of file diff --git a/build.docset/Contents/Resources/Documents/_sources/cookbook/mapping-classes-to-orm-and-odm.rst.txt b/build.docset/Contents/Resources/Documents/_sources/cookbook/mapping-classes-to-orm-and-odm.rst.txt new file mode 100644 index 0000000..fb8f294 --- /dev/null +++ b/build.docset/Contents/Resources/Documents/_sources/cookbook/mapping-classes-to-orm-and-odm.rst.txt @@ -0,0 +1,232 @@ +Mapping Classes to the ORM and ODM +================================== + +Because of the non intrusive design of Doctrine it is possible for you to have plain PHP classes +that are mapped to both a relational database with the Doctrine2 Object Relational Mapper and +MongoDB with the Doctrine MongoDB Object Document Mapper, or any other persistence layer that +implements the Doctrine Common `persistence`_ interfaces. + +Test Subject +------------ + +For this cookbook entry we need to define a class that can be persisted to both MySQL and MongoDB. +We'll use a ``BlogPost`` as you may want to write some generic blogging functionality that has support +for multiple Doctrine persistence layers: + +.. code-block:: php + + + + + + + + + + + + .. code-block:: yaml + + Documents\BlogPost: + repositoryClass: Doctrine\Blog\ORM\BlogPostRepository + id: + id: + type: integer + fields: + title: + type: string + body: + type: text + +Now you are able to persist the ``Documents\BlogPost`` with an instance of ``EntityManager``: + +.. code-block:: php + + setTitle('test'); + + $em->persist($blogPost); + $em->flush(); + +You can find the blog post: + +.. code-block:: php + + getRepository('Documents\BlogPost')->findOneByTitle('test'); + +MongoDB ODM +~~~~~~~~~~~ + +Now map the same class to the Doctrine MongoDB ODM: + +.. configuration-block:: + + .. code-block:: php + + + + + + + + + + + + .. code-block:: yaml + + Documents\BlogPost: + repositoryClass: Doctrine\Blog\ODM\MongoDB\BlogPostRepository + fields: + id: + type: id + title: + type: string + body: + type: text + +Now the same class is able to be persisted in the same way using an instance of ``DocumentManager``: + +.. code-block:: php + + setTitle('test'); + + $dm->persist($blogPost); + $dm->flush(); + +You can find the blog post: + +.. code-block:: php + + getRepository('Documents\BlogPost')->findOneByTitle('test'); + +Repository Classes +------------------ + +You can implement the same repository interface for the ORM and MongoDB ODM easily: + +.. code-block:: php + + findOneBy(array('id' => $id)); + } + } + +Now define the same repository methods for the MongoDB ODM: + +.. code-block:: php + + findOneBy(array('id' => $id)); + } + } + +As you can see the repositories are the same and the final returned data is the same vanilla +PHP objects. The data is transparently injected to the objects for you automatically so you +are not forced to extend some base class or shape your domain in any certain way for it to work +with the Doctrine persistence layers. + +.. _persistence: https://github.com/doctrine/common/tree/master/lib/Doctrine/Common/Persistence diff --git a/build.docset/Contents/Resources/Documents/_sources/cookbook/resolve-target-document-listener.rst.txt b/build.docset/Contents/Resources/Documents/_sources/cookbook/resolve-target-document-listener.rst.txt new file mode 100644 index 0000000..cd0a384 --- /dev/null +++ b/build.docset/Contents/Resources/Documents/_sources/cookbook/resolve-target-document-listener.rst.txt @@ -0,0 +1,139 @@ +Keeping Your Modules Independent +================================ + +One of the goals of using modules is to create discrete units of functionality +that do not have many (if any) dependencies, allowing you to use that +functionality in other applications without including unnecessary items. + +Doctrine MongoDB ODM includes a utility called +``ResolveTargetDocumentListener``, that functions by intercepting certain calls +inside Doctrine and rewriting ``targetDocument`` parameters in your metadata +mapping at runtime. This allows your bundle to use an interface or abstract +class in its mappings while still allowing the mapping to resolve to a concrete +document class at runtime. + +This functionality allows you to define relationships between different +documents without creating hard dependencies. + +Background +---------- + +In the following example, we have an `InvoiceModule` that provides invoicing +functionality, and a `CustomerModule` that contains customer management tools. +We want to keep these separated, because they can be used in other systems +without each other; however, we'd like to use them together in our application. + +In this case, we have an ``Invoice`` document with a relationship to a +non-existent object, an ``InvoiceSubjectInterface``. The goal is to get +the ``ResolveTargetDocumentListener`` to replace any mention of the interface +with a real class that implements that interface. + +Configuration +------------- + +We're going to use the following basic documents (which are incomplete +for brevity) to explain how to set up and use the +``ResolveTargetDocumentListener``. + +A Customer document: + +.. code-block:: php + + addResolveTargetDocument( + 'Acme\\InvoiceModule\\Model\\InvoiceSubjectInterface', + 'Acme\\CustomerModule\\Document\\Customer', + array() + ); + + // Add the ResolveTargetDocumentListener + $evm->addEventListener(\Doctrine\ODM\MongoDB\Events::loadClassMetadata, $rtdl); + + // Create the document manager as you normally would + $dm = \Doctrine\ODM\MongoDB\DocumentManager::create($connectionOptions, $config, $evm); + +Final Thoughts +-------------- + +With ``ResolveTargetDocumentListener``, we are able to decouple our bundles so +that they are usable by themselves and easier to maintain independently, while +still being able to define relationships between different objects. diff --git a/build.docset/Contents/Resources/Documents/_sources/cookbook/simple-search-engine.rst.txt b/build.docset/Contents/Resources/Documents/_sources/cookbook/simple-search-engine.rst.txt new file mode 100644 index 0000000..13192a9 --- /dev/null +++ b/build.docset/Contents/Resources/Documents/_sources/cookbook/simple-search-engine.rst.txt @@ -0,0 +1,170 @@ +Simple Search Engine +==================== + +It is very easy to implement a simple keyword search engine with MongoDB. Because of +its flexible schema less nature we can store the keywords we want to search through directly +on the document. MongoDB is capable of indexing the embedded documents so the results are fast +and scalable. + +Sample Model: Product +--------------------- + +Imagine you had a ``Product`` document and you want to search the products by keywords. You can +setup a document like the following with a ``$keywords`` property that is mapped as a collection: + +.. code-block:: php + + setTitle('Nike Air Jordan 2011'); + $product->addKeyword('nike shoes'); + $product->addKeyword('jordan shoes'); + $product->addKeyword('air jordan'); + $product->addKeyword('shoes'); + $product->addKeyword('2011'); + + $dm->persist($product); + $dm->flush(); + +The above example populates the keywords manually but you could very easily write some code which +automatically generates your keywords from a string built by the Product that may include the title, +description and other fields. You could also use a tool like the `AlchemyAPI`_ if you want to do +some more intelligent keyword extraction. + +Searching Keywords +------------------ + +Searching the keywords in the ``Product`` collection is easy! You can run a query like the following +to find documents that have at least one of the keywords: + +.. code-block:: php + + createQueryBuilder('Product') + ->field('keywords')->in($keywords); + +You can make the query more strict by using the ``all()`` method instead of ``in()``: + +.. code-block:: php + + createQueryBuilder('Product') + ->field('keywords')->all($keywords); + +The above query would only return products that have both of the keywords! + +User Input +~~~~~~~~~~ + +You can easily build keywords from a user search form by exploding whitespace and passing +the results to your query. Here is an example: + +.. code-block:: php + + createQueryBuilder('Product') + ->field('keywords')->all($keywords); + +Embedded Documents +------------------ + +If you want to use an embedded document instead of just an array then you can. It will allow you to store +additional information with each keyword, like its weight. + +Definition +~~~~~~~~~~ + +You can setup a ``Keyword`` document like the following: + +.. code-block:: php + + keyword = $keyword; + $this->weight = $weight; + } + + // ... + } + +Now you can embed the ``Keyword`` document many times in the ``Product``: + +.. code-block:: php + + addKeyword(new Keyword('nike shoes', 1)); + +This is a very basic search engine example and can work for many small and simple applications. If you +need better searching functionality you can look at integrating something like `Solr`_ in your project. + +.. _AlchemyAPI: http://www.alchemyapi.com +.. _Solr: http://lucene.apache.org/solr diff --git a/build.docset/Contents/Resources/Documents/_sources/cookbook/soft-delete-extension.rst.txt b/build.docset/Contents/Resources/Documents/_sources/cookbook/soft-delete-extension.rst.txt new file mode 100644 index 0000000..052e03d --- /dev/null +++ b/build.docset/Contents/Resources/Documents/_sources/cookbook/soft-delete-extension.rst.txt @@ -0,0 +1,224 @@ +Soft Delete Extension +===================== + +Sometimes you may not want to delete data from your database completely, but you want to +disable or temporarily delete some records so they do not appear anymore in your frontend. +Then, later you might want to restore that deleted data like it was never deleted. + +This is possible with the ``SoftDelete`` extension which can be found on `github`_. + +Installation +------------ + +First you just need to get the code by cloning the `github`_ repository: + +.. code-block:: console + + $ git clone git://github.com/doctrine/mongodb-odm-softdelete.git + +Now once you have the code you can setup the autoloader for it: + +.. code-block:: php + + register(); + +Setup +----- + +Now you can autoload the classes you need to setup the ``SoftDeleteManager`` instance you need to manage +the soft delete state of your documents: + +.. code-block:: php + + deletedAt; + } + + // ... + } + +Usage +----- + +Once you have the ``$sdm`` you can start managing the soft delete state of your documents: + +.. code-block:: php + + getRepository('User')->findOneByUsername('jwage'); + $fabpot = $dm->getRepository('User')->findOneByUsername('fabpot'); + $sdm->delete($jwage); + $sdm->delete($fabpot); + $sdm->flush(); + +The call to ``SoftDeleteManager#flush()`` would persist the deleted state to the database +for all the documents it knows about and run a query like the following: + +.. code-block:: javascript + + db.users.update({ _id : { $in : userIds }}, { $set : { deletedAt : new Date() } }) + +Now if we were to restore the documents: + +.. code-block:: php + + restore($jwage); + $sdm->flush(); + +It would execute a query like the following: + +.. code-block:: javascript + + db.users.update({ _id : { $in : userIds }}, { $unset : { deletedAt : true } }) + +Events +------ + +We trigger some additional lifecycle events when documents are soft deleted and restored: + +- Events::preSoftDelete +- Events::postSoftDelete +- Events::preRestore +- Events::postRestore + +Using the events is easy, just define a class like the following: + +.. code-block:: php + + getDocument(); + $sdm = $args->getSoftDeleteManager(); + } + + public function getSubscribedEvents() + { + return array(Events::preSoftDelete); + } + } + +Now we just need to add the event subscriber to the EventManager: + +.. code-block:: php + + addEventSubscriber($eventSubscriber); + +When we soft delete something the preSoftDelete() method will be invoked before any queries are sent +to the database: + +.. code-block:: php + + delete($fabpot); + $sdm->flush(); + +Cascading Soft Deletes +---------------------- + +You can easily implement cascading soft deletes by using events in a certain way. Imagine you have +a User and Post document and you want to soft delete a users posts when you delete him. + +You just need to setup an event listener like the following: + +.. code-block:: php + + getSoftDeleteManager(); + $document = $args->getDocument(); + if ($document instanceof User) { + $sdm->deleteBy('Post', array('user.id' => $document->getId())); + } + } + + public function preRestore(LifecycleEventArgs $args) + { + $sdm = $args->getSoftDeleteManager(); + $document = $args->getDocument(); + if ($document instanceof User) { + $sdm->restoreBy('Post', array('user.id' => $document->getId())); + } + } + + public function getSubscribedEvents() + { + return array( + Events::preSoftDelete, + Events::preRestore + ); + } + } + +Now when you delete an instance of User it will also delete any Post documents where they +reference the User being deleted. If you restore the User, his Post documents will also be restored. + +.. _github: https://github.com/doctrine/mongodb-odm-softdelete diff --git a/build.docset/Contents/Resources/Documents/_sources/cookbook/validation-of-documents.rst.txt b/build.docset/Contents/Resources/Documents/_sources/cookbook/validation-of-documents.rst.txt new file mode 100644 index 0000000..b80d908 --- /dev/null +++ b/build.docset/Contents/Resources/Documents/_sources/cookbook/validation-of-documents.rst.txt @@ -0,0 +1,130 @@ +Validation of Documents +======================= + +.. sectionauthor:: Benjamin Eberlei + +Doctrine does not ship with any internal validators, the reason +being that we think all the frameworks out there already ship with +quite decent ones that can be integrated into your Domain easily. +What we offer are hooks to execute any kind of validation. + +.. note:: + + You don't need to validate your documents in the lifecycle + events. Its only one of many options. Of course you can also + perform validations in value setters or any other method of your + documents that are used in your code. + +Documents can register lifecycle event methods with Doctrine that +are called on different occasions. For validation we would need to +hook into the events called before persisting and updating. Even +though we don't support validation out of the box, the +implementation is even simpler than in Doctrine 1 and you will get +the additional benefit of being able to re-use your validation in +any other part of your domain. + +Say we have an ``Order`` with several ``OrderLine`` instances. We +never want to allow any customer to order for a larger sum than he +is allowed to: + +.. code-block:: php + + customer->getOrderLimit(); + + $amount = 0; + foreach ($this->orderLines AS $line) { + $amount += $line->getAmount(); + } + + if ($amount > $orderLimit) { + throw new CustomerOrderLimitExceededException(); + } + } + } + +Now this is some pretty important piece of business logic in your +code, enforcing it at any time is important so that customers with +a unknown reputation don't owe your business too much money. + +We can enforce this constraint in any of the metadata drivers. +First Annotations: + +.. configuration-block:: + + .. code-block:: php + + + + + + + + + + +Now validation is performed whenever you call +``DocumentManager#persist($order)`` or when you call +``DocumentManager#flush()`` and an order is about to be updated. Any +Exception that happens in the lifecycle callbacks will be cached by +the DocumentManager and the current transaction is rolled back. + +Of course you can do any type of primitive checks, not null, +email-validation, string size, integer and date ranges in your +validation callbacks. + +.. code-block:: php + + plannedShipDate instanceof DateTime)) { + throw new ValidateException(); + } + + if ($this->plannedShipDate->format('U') < time()) { + throw new ValidateException(); + } + + if ($this->customer == null) { + throw new OrderRequiresCustomerException(); + } + } + } + +What is nice about lifecycle events is, you can also re-use the +methods at other places in your domain, for example in combination +with your form library. Additionally there is no limitation in the +number of methods you register on one particular event, i.e. you +can register multiple methods for validation in "PrePersist" or +"PreUpdate" or mix and share them in any combinations between those +two events. + +There is no limit to what you can and can't validate in +"PrePersist" and "PreUpdate" as long as you don't create new document +instances. This was already discussed in the previous blog post on +the Versionable extension, which requires another type of event +called "onFlush". + +Further readings: :doc:`Lifecycle Events <../reference/events>` \ No newline at end of file diff --git a/build.docset/Contents/Resources/Documents/_sources/index.rst.txt b/build.docset/Contents/Resources/Documents/_sources/index.rst.txt new file mode 100644 index 0000000..a54e1bf --- /dev/null +++ b/build.docset/Contents/Resources/Documents/_sources/index.rst.txt @@ -0,0 +1,107 @@ +Doctrine MongoDB ODM's documentation! +===================================== + +The Doctrine MongoDB ODM documentation is comprised of tutorials, a reference section and +cookbook articles that explain different parts of the Object Document mapper. + +Getting Help +------------ + +If this documentation is not helping to answer questions you have about +Doctrine MongoDB ODM don't panic. You can get help from different sources: + +- The `Doctrine Mailing List `_ +- Internet Relay Chat (IRC) in `#doctrine on Freenode `_ +- Report a bug on `GitHub `_. +- On `StackOverflow `_ + +Getting Started +--------------- + + :doc:`Getting Started ` | + :doc:`Introduction ` | + :doc:`Architecture ` + +Mapping Objects onto a Database +------------------------------- + +* **Basic Reference**: + :doc:`Objects and Fields ` | + :doc:`References ` | + :doc:`Bi-Directional References ` | + :doc:`Complex References ` | + :doc:`Indexes ` | + :doc:`Inheritance ` + +* **Embedded Data**: + :doc:`Embedded ` | + :doc:`Trees ` + +* **GridFS**: + :doc:`Storing Files in GridFS ` + +* **Mapping Driver References**: + :doc:`XML ` | + :doc:`YAML ` | + :doc:`Docblock Annotations ` | + :doc:`Metadata Drivers ` + +Working with Objects +-------------------- + +* **Basic Reference**: + :doc:`Documents ` | + :doc:`Repositories ` | + :doc:`Events ` | + :doc:`Migrations ` + +* **Query Reference**: + :doc:`Query Builder API ` | + :doc:`Aggregation Pipeline queries ` | + :doc:`Geo Spatial Queries ` | + :doc:`Slave Okay Queries ` | + :doc:`Find and Update ` | + :doc:`Filters ` | + :doc:`Priming References ` | + :doc:`Eager Cursors ` | + :doc:`Map Reduce ` + +Advanced Topics +--------------- + +* **Collections**: + :doc:`Capped Collections ` | + :doc:`Storage Strategies ` | + :doc:`Custom Collections ` | + :doc:`Sharded setups ` + +* **Transactions and Concurrency**: + :doc:`Transactions and Concurrency ` + +* **Best Practices**: + :doc:`Best Practices ` + +* **Performance**: + :doc:`Change Tracking Policies ` + +* **Logging**: + :doc:`Logging ` + +Cookbook +-------- + +* **Examples**: + :doc:`Soft Delete ` | + :doc:`Simple Search Engine ` + +* **Tricks**: + :doc:`Blending ORM and MongoDB ODM ` | + :doc:`Mapping classes to ORM and ODM ` + +* **Implementation**: + :doc:`Array Access ` | + :doc:`Notify ChangeTracking Example ` | + :doc:`Using Wakeup Or Clone ` | + :doc:`Validation ` | + :doc:`Simple Search Engine ` | + :doc:`Keeping Your Modules Independent ` diff --git a/build.docset/Contents/Resources/Documents/_sources/reference/aggregation-builder.rst.txt b/build.docset/Contents/Resources/Documents/_sources/reference/aggregation-builder.rst.txt new file mode 100644 index 0000000..8ded612 --- /dev/null +++ b/build.docset/Contents/Resources/Documents/_sources/reference/aggregation-builder.rst.txt @@ -0,0 +1,814 @@ +Aggregation builder +=================== + +.. note:: + This feature is introduced in version 1.2 + +The aggregation framework provides an easy way to process records and return +computed results. The aggregation builder helps to build complex aggregation +pipelines. + +Creating an Aggregation Builder +------------------------------- + +You can easily create a new ``Aggregation\Builder`` object with the +``DocumentManager::createAggregationBuilder()`` method: + +.. code-block:: php + + createAggregationBuilder(\Documents\User::class); + +The first argument indicates the document for which you want to create the +builder. + +Adding pipeline stages +~~~~~~~~~~~~~~~~~~~~~~ + +To add a pipeline stage to the builder, call the corresponding method on the +builder object: + +.. code-block:: php + + createAggregationBuilder(\Documents\Orders::class); + $builder + ->match() + ->field('purchaseDate') + ->gte($from) + ->lt($to) + ->field('user') + ->references($user) + ->group() + ->field('id') + ->expression('$user') + ->field('numPurchases') + ->sum(1) + ->field('amount') + ->sum('$amount'); + +Just like the query builder, the aggregation builder takes care of converting +``DateTime`` objects into ``MongoDate`` objects. + +Nesting expressions +~~~~~~~~~~~~~~~~~~~ + +You can create more complex aggregation stages by using the ``expr()`` method in +the aggregation builder. + +.. code-block:: php + + createAggregationBuilder(\Documents\Orders::class); + $builder + ->match() + ->field('purchaseDate') + ->gte($from) + ->lt($to) + ->field('user') + ->references($user) + ->group() + ->field('id') + ->expression( + $builder->expr() + ->field('month') + ->month('purchaseDate') + ->field('year') + ->year('purchaseDate') + ) + ->field('numPurchases') + ->sum(1) + ->field('amount') + ->sum('$amount'); + +This aggregation would group all purchases by their month and year by projecting +those values into an embedded object for the ``id`` field. For example: + +.. code-block:: json + + { + _id: { + month: 1, + year: 2016 + }, + numPurchases: 1, + amount: 27.89 + } + +Executing an aggregation pipeline +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +You can execute a pipeline using the ``execute()`` method. This will run the +aggregation pipeline and return a cursor for you to iterate over the results: + +.. code-block:: php + + createAggregationBuilder(\Documents\User::class); + $result = $builder->execute(); + +If you instead want to look at the built aggregation pipeline, call the +``Builder::getPipeline()`` method. + +Hydration +~~~~~~~~~ + +By default, aggregation results are returned as PHP arrays. This is because the +result of an aggregation pipeline may look completely different from the source +document. In order to get hydrated aggregation results, you first have to map +a ``QueryResultDocument``. These are written like regular mapped documents, but +they can't be persisted to the database. + +.. configuration-block:: + + .. code-block:: php + + + + + + + + + + + .. code-block:: yaml + + Documents\User: + type: queryResultDocument + fields: + user: + name: _id + targetDocument: Documents\User + numPurchases: + type: int + amount: + type: float + +Once you have mapped the document, use the ``hydrate()`` method to tell the +aggregation builder about this document: + +.. code-block:: php + + createAggregationBuilder(\Documents\Orders::class); + $builder + ->hydrate(\Documents\UserPurchases::class) + ->match() + ->field('purchaseDate') + ->gte($from) + ->lt($to) + ->field('user') + ->references($user) + ->group() + ->field('id') + ->expression('$user') + ->field('numPurchases') + ->sum(1) + ->field('amount') + ->sum('$amount'); + +When you run the queries, all results will be returned as instances of the +specified document. + +.. note:: + + Query result documents can use all features regular documents can use: you + can map embedded documents, define references, and even use discriminators + to get different result documents according to the aggregation result. + +Aggregation pipeline stages +--------------------------- + +MongoDB provides the following aggregation pipeline stages: + +- `$addFields `_ +- `$bucket `_ +- `$bucketAuto `_ +- `$collStats `_ +- `$count `_ +- `$facet `_ +- `$geoNear `_ +- `$graphLookup `_ +- `$group `_ +- `$indexStats `_ +- `$limit `_ +- `$lookup `_ +- `$match `_ +- `$out `_ +- `$project `_ +- `$redact `_ +- `$replaceRoot `_ +- `$sample `_ +- `$skip `_ +- `$sort `_ +- `$sortByCount `_ +- `$unwind `_ + +.. note:: + + The ``$lookup``, ``$sample`` and ``$indexStats`` stages were added in MongoDB + 3.2. The ``$addFields``, ``$bucket``, ``$bucketAuto``, ``$sortByCount``, + ``$replaceRoot``, ``$facet``, ``$graphLookup``, ``$coun`` and ``$collStats`` + stages were added in MongoDB 3.4. + +$addFields +~~~~~~~~~~ + +Adds new fields to documents. ``$addFields`` outputs documents that contain all +existing fields from the input documents and newly added fields. + +The ``$addFields`` stage is equivalent to a ``$project`` stage that explicitly +specifies all existing fields in the input documents and adds the new fields. + +.. code-block:: php + + createAggregationBuilder(\Documents\Orders::class); + $builder + ->addFields() + ->field('purchaseYear') + ->year('$purchaseDate'); + +$bucket +~~~~~~~ + +Categorizes incoming documents into groups, called buckets, based on a specified +expression and bucket boundaries. + +Each bucket is represented as a document in the output. The document for each +bucket contains an _id field, whose value specifies the inclusive lower bound of +the bucket and a count field that contains the number of documents in the bucket. +The count field is included by default when the output is not specified. + +``$bucket`` only produces output documents for buckets that contain at least one +input document. + +.. code-block:: php + + createAggregationBuilder(\Documents\Orders::class); + $builder + ->bucket() + ->groupBy('$itemCount') + ->boundaries(1, 2, 3, 4, 5, '5+') + ->defaultBucket('5+') + ->output() + ->field('lowestValue') + ->min('$value') + ->field('highestValue') + ->max('$value') + ; + +$bucketAuto +~~~~~~~~~~~ + +Similar to ``$bucket``, except that boundaries are automatically determined in +an attempt to evenly distribute the documents into the specified number of +buckets. + +.. code-block:: php + + createAggregationBuilder(\Documents\Orders::class); + $builder + ->bucketAuto() + ->groupBy('$itemCount') + ->buckets(5) + ->output() + ->field('lowestValue') + ->min('$value') + ->field('highestValue') + ->max('$value') + ; + +$collStats +~~~~~~~~~~ + +The ``$collStats`` stage returns statistics regarding a collection or view. + +$count +~~~~~~ + +Returns a document that contains a count of the number of documents input to the +stage. + +.. code-block:: php + + createAggregationBuilder(\Documents\Orders::class); + $builder + ->match() + ->field('itemCount') + ->eq(1) + ->count('numSingleItemOrders') + ; + +The example above returns a single document with the ``numSingleItemOrders`` +containing the number of orders found. + +$facet +~~~~~~ + +Processes multiple aggregation pipelines within a single stage on the same set +of input documents. Each sub-pipeline has its own field in the output document +where its results are stored as an array of documents. + +.. code-block:: php + + createAggregationBuilder(\Documents\Orders::class); + $builder + ->facet() + ->field('groupedByItemCount') + ->pipeline( + $dm->createAggregationBuilder(\Documents\Orders::class)->group() + ->field('id') + ->expression('$itemCount') + ->field('lowestValue') + ->min('$value') + ->field('highestValue') + ->max('$value') + ->field('totalValue') + ->sum('$value') + ->field('averageValue') + ->avg('$value') + ) + ->field('groupedByYear') + ->pipeline( + $dm->createAggregationBuilder(\Documents\Orders::class)->group() + ->field('id') + ->year('purchaseDate') + ->field('lowestValue') + ->min('$value') + ->field('highestValue') + ->max('$value') + ->field('totalValue') + ->sum('$value') + ->field('averageValue') + ->avg('$value') + ) + ; + +$geoNear +~~~~~~~~ + +The ``$geoNear`` stage finds and outputs documents in order of nearest to +farthest from a specified point. + +.. code-block:: php + + dm->createAggregationBuilder(\Documents\City::class); + $builder + ->geoNear(120, 40) + ->spherical(true) + ->distanceField('distance') + // Convert radians to kilometers (use 3963.192 for miles) + ->distanceMultiplier(6378.137); + +.. note:: + + The ``$geoNear`` stage must be the first stage in the pipeline and the + collection must contain a single geospatial index. You must include the + ``distanceField`` option for the stage to work. + +$graphLookup +~~~~~~~~~~~~ + +Performs a recursive search on a collection, with options for restricting the +search by recursion depth and query filter. The ``$graphLookup`` stage can be +used to resolve association graphs and flatten them into a single list. + +.. code-block:: php + + dm->createAggregationBuilder(\Documents\Traveller::class); + $builder + ->graphLookup('nearestAirport') + ->connectFromField('connections') + ->maxDepth(2) + ->depthField('numConnections') + ->alias('destinations'); + +.. note:: + + The target document of the reference used in ``connectFromField`` must be + the very same document. The aggregation builder will throw an exception if + you try to resolve a different document. + +.. note:: + + Due to a limitation in MongoDB, the ``$graphLookup`` stage can not be used + with references that are stored as DBRef. To use references in a + ``$graphLookup`` stage, store the reference as ID or ``ref``. This is + explained in the :doc:`Reference mapping ` chapter. + +.. _aggregation_builder_group: + +$group +~~~~~~ + +The ``$group`` stage is used to do calculations based on previously matched +documents: + +.. code-block:: php + + createAggregationBuilder(\Documents\Orders::class); + $builder + ->match() + ->field('user') + ->references($user) + ->group() + ->field('id') + ->expression( + $builder->expr() + ->field('month') + ->month('purchaseDate') + ->field('year') + ->year('purchaseDate') + ) + ->field('numPurchases') + ->sum(1) + ->field('amount') + ->sum('$amount'); + +$indexStats +~~~~~~~~~~~ + +The ``$indexStats`` stage returns statistics regarding the use of each index for +the collection. More information can be found in the `official Documentation `_ + +$lookup +~~~~~~~ + +.. note:: + + The ``$lookup`` stage was introduced in MongoDB 3.2. Using it on older servers + will result in an error. + +The ``$lookup`` stage is used to fetch documents from different collections in +pipeline stages. Take the following relationship for example: + +.. code-block:: php + + createAggregationBuilder(\Documents\Orders::class); + $builder + ->lookup('items') + ->alias('items'); + +The resulting array will contain all matched item documents in an array. This has +to be considered when looking up one-to-one relationships: + +.. code-block:: php + + createAggregationBuilder(\Documents\Orders::class); + $builder + ->lookup('user') + ->alias('user') + ->unwind('$user'); + +MongoDB will always return an array, even if the lookup only returned a single +document. Thus, when looking up one-to-one references the result must be flattened +using the ``$unwind`` operator. + +.. note:: + + Due to a limitation in MongoDB, the ``$lookup`` stage can not be used with + references that are stored as DBRef. To use references in a ``$lookup`` + stage, store the reference as ID or ``ref``. This is explained in the + :doc:`Reference mapping ` chapter. + +You can also configure your lookup manually if you don't have it mapped in your +document: + +.. code-block:: php + + createAggregationBuilder(\Documents\Orders::class); + $builder + ->lookup('unmappedCollection') + ->localField('_id') + ->foreignField('userId') + ->alias('items'); + +$match +~~~~~~ + +The ``$match`` stage lets you filter documents according to certain criteria. It +works just like the query builder: + +.. code-block:: php + + createAggregationBuilder(\Documents\Orders::class); + $builder + ->match() + ->field('purchaseDate') + ->gte($from) + ->lt($to) + ->field('user') + ->references($user); + +You can also use fields defined in previous stages: + +.. code-block:: php + + createAggregationBuilder(\Documents\Orders::class); + $builder + ->project() + ->excludeIdField() + ->includeFields(['purchaseDate', 'user']) + ->field('purchaseYear') + ->year('$purchaseDate') + ->match() + ->field('purchaseYear') + ->equals(2016); + +$out +~~~~ + +The ``$out`` stage is used to store the result of the aggregation pipeline in a +collection instead of returning an iterable cursor of results. This must be the +last stage in an aggregation pipeline. + +If the collection specified by the ``$out`` operation already exists, then upon +completion of the aggregation, the existing collection is atomically replaced. +Any indexes that existed on the collection are left intact. If the aggregation +fails, the ``$out`` operation does not remove the data from an existing +collection. + +.. note:: + + The aggregation pipeline will fail to complete if the result would violate + any unique index constraints, including those on the ``id`` field. + +$project +~~~~~~~~ + +The ``$project`` stage lets you reshape the current document or define a completely +new one: + +.. code-block:: php + + createAggregationBuilder(\Documents\Orders::class); + $builder + ->project() + ->excludeIdField() + ->includeFields(['purchaseDate', 'user']) + ->field('purchaseYear') + ->year('$purchaseDate'); + +$redact +~~~~~~~ + +The redact stage can be used to restrict the contents of the documents based on +information stored in the documents themselves. You can read more about the +``$redact`` stage in the `MongoDB documentation `_. + +The following example taken from the official documentation checks the ``level`` +field on all document levels and evaluates it to grant or deny access: + +.. code-block:: json + + { + _id: 1, + level: 1, + acct_id: "xyz123", + cc: { + level: 5, + type: "yy", + num: 000000000000, + exp_date: ISODate("2015-11-01T00:00:00.000Z"), + billing_addr: { + level: 5, + addr1: "123 ABC Street", + city: "Some City" + }, + shipping_addr: [ + { + level: 3, + addr1: "987 XYZ Ave", + city: "Some City" + }, + { + level: 3, + addr1: "PO Box 0123", + city: "Some City" + } + ] + }, + status: "A" + } + +.. code-block:: php + + createAggregationBuilder(\Documents\Orders::class); + $builder + ->redact() + ->cond( + $builder->expr()->gte('$$level', 5), + '$$PRUNE', + '$$DESCEND' + ) + +$replaceRoot +~~~~~~~~~~~~ + +Promotes a specified document to the top level and replaces all other fields. +The operation replaces all existing fields in the input document, including the +``_id`` field. You can promote an existing embedded document to the top level, +or create a new document for promotion. + +.. code-block:: php + + createAggregationBuilder(\Documents\Orders::class); + $builder + ->replaceRoot('$embeddedField'); + + $builder = $dm->createAggregationBuilder(\Documents\Orders::class); + $builder + ->replaceRoot() + ->field('averagePricePerItem') + ->divide('$value', '$itemCount'); + +$sample +~~~~~~~ + +The sample stage can be used to randomly select a subset of documents in the +aggregation pipeline. It behaves like the ``$limit`` stage, but instead of +returning the first ``n`` documents it returns ``n`` random documents. + +$sort, $limit and $skip +~~~~~~~~~~~~~~~~~~~~~~~ + +The ``$sort``, ``$limit`` and ``$skip`` stages behave like the corresponding +query options, allowing you to control the order and subset of results returned +by the aggregation pipeline. + +$sortByCount +~~~~~~~~~~~~ + +Groups incoming documents based on the value of a specified expression, then +computes the count of documents in each distinct group. + +Each output document contains two fields: an _id field containing the distinct +grouping value, and a count field containing the number of documents belonging +to that grouping or category. + +The documents are sorted by count in descending order. + +.. code-block:: php + + createAggregationBuilder(\Documents\Orders::class); + $builder->sortByCount('$items'); + +The example above is equivalent to the following pipeline: + +.. code-block:: php + + createAggregationBuilder(\Documents\Orders::class); + $builder + ->group() + ->field('_id') + ->expression('$items') + ->field('count') + ->sum(1) + ->sort(['count' => -1]) + ; + +$unwind +~~~~~~~ + +The ``$unwind`` stage flattens an array in a document, returning a copy for each +item. Take this sample document: + +.. code-block:: json + + { + _id: { + month: 1, + year: 2016 + }, + purchaseDates: [ + '2016-01-07', + '2016-03-10', + '2016-06-25' + ] + } + +To flatten the ``purchaseDates`` array, we would apply the following pipeline +stage: + +.. code-block:: php + + createAggregationBuilder(\Documents\User::class); + $builder->unwind('$purchaseDates'); + +The stage would return three documents, each containing a single purchase date: + +.. code-block:: json + + { + _id: { + month: 1, + year: 2016 + }, + purchaseDates: '2016-01-07' + }, + { + _id: { + month: 1, + year: 2016 + }, + purchaseDates: '2016-03-10' + }, + { + _id: { + month: 1, + year: 2016 + }, + purchaseDates: '2016-06-25' + } diff --git a/build.docset/Contents/Resources/Documents/_sources/reference/annotations-reference.rst.txt b/build.docset/Contents/Resources/Documents/_sources/reference/annotations-reference.rst.txt new file mode 100644 index 0000000..5539c10 --- /dev/null +++ b/build.docset/Contents/Resources/Documents/_sources/reference/annotations-reference.rst.txt @@ -0,0 +1,1482 @@ +Annotations Reference +===================== + +In this chapter a reference of every Doctrine 2 ODM Annotation is +given with short explanations on their context and usage. + +@AlsoLoad +--------- + +Specify one or more MongoDB fields to use for loading data if the original field +does not exist. + +.. code-block:: php + + firstName, $this->lastName) = explode(' ', $name); + } + +For additional information on using `@AlsoLoad`_, see +:doc:`Migrations `. + +@Bin +---- + +Alias of `@Field`_, with "type" attribute set to "bin". Converts value to +`MongoBinData`_ with ``MongoBinData::GENERIC`` sub-type. + +.. code-block:: php + + `. + + +@Collection +----------- + +Alias of `@Field`_, with "type" attribute set to "collection". Stores and +retrieves the value as a numerically indexed array. + +.. code-block:: php + + ` hierarchy. +It takes a string as its only argument, which specifies the database field to +store a class name or key (if a discriminator map is used). ODM uses this field +during hydration to select the instantiation class. + +.. code-block:: php + + ` hierarchy. +It takes an array as its only argument, which maps keys to class names. The +class names may be fully qualified or relative to the current namespace. When +a document is persisted to the database, its class name key will be stored in +the discriminator field instead of the |FQCN|. + +.. code-block:: php + + ` query method to populate the property with the +calculated distance value. + +.. code-block:: php + + dm->createQuery('City') + ->geoNear(50, 60) + ->limit(1) + ->getQuery() + ->getSingleResult(); + echo $city->distance; + +@Document +--------- + +Required annotation to mark a PHP class as a document, whose peristence will be +managed by ODM. + +Optional attributes: + +- + db - By default, the document manager will use the MongoDB database defined + in the configuration, but this option may be used to override the database + for a particular document class. +- + collection - By default, the collection name is derived from the document's + class name, but this option may be used to override that behavior. +- + repositoryClass - Specifies a custom repository class to use. +- + indexes - Specifies an array of indexes for this document. +- + readOnly - Prevents document from being updated: it can only be inserted, + upserted or removed. +- + requireIndexes - Specifies whether or not queries for this document should + require indexes by default. This may also be specified per query. +- + writeConcern - Specifies the write concern for this document that overwrites + the default write concern specified in the configuration. It does not overwrite + a write concern given as :ref:`option ` to the ``flush`` + method when committing your documents. + +.. code-block:: php + + amount = (float) $amount; + } + //... + } + + /** @Document(db="finance", collection="wallets") */ + class Wallet + { + /** @EmbedOne(targetDocument="Money") */ + private $money; + + public function setMoney(Money $money) + { + $this->money = $money; + } + //... + } + //... + $wallet = new Wallet(); + $wallet->setMoney(new Money(34.39)); + $dm->persist($wallet); + $dm->flush(); + +Unlike normal documents, embedded documents cannot specify their own database or +collection. That said, a single embedded document class may be used with +multiple document classes, and even other embedded documents! + +Optional attributes: + +- + indexes - Specifies an array of indexes for this embedded document, to be + included in the schemas of any embedding documents. + +@Field +------ + +Marks an annotated instance variable for persistence. Values for this field will +be saved to and loaded from the document store as part of the document class' +lifecycle. + +Optional attributes: + +- + type - Name of the ODM type, which will determine the value's representation + in PHP and BSON (i.e. MongoDB). See :ref:`doctrine_mapping_types` for a list + of types. Defaults to "string". +- + name - By default, the property name is used for the field name in MongoDB; + however, this option may be used to specify a database field name. +- + nullable - By default, ODM will ``$unset`` fields in MongoDB if the PHP value + is null. Specify true for this option to force ODM to store a null value in + the database instead of unsetting the field. + +Examples: + +.. code-block:: php + + ` attribute. + +.. code-block:: php + + downloads++; + } + + // ... + } + +Now, update a Package instance like so: + +.. code-block:: php + + incrementDownloads(); + $dm->flush(); + +The query sent to Mongo would resemble the following: + +.. code-block:: json + + { "$inc": { "downloads": 1 } } + +The field will be incremented by the difference between the new and old values. +This is useful if many requests are attempting to update the field concurrently. + +.. note:: + + This annotation is deprecated and will be removed in ODM 2.0. Please use the + `@Field`_ annotation with type "int" or "float" and use the "increment" + strategy. + +@Index +------ + +This annotation is used inside of the class-level `@Document`_ or +`@EmbeddedDocument`_ annotations to specify indexes to be created on the +collection (or embedding document's collection in the case of +`@EmbeddedDocument`_). It may also be used at the property-level to define +single-field indexes. + +Optional attributes: + +- + keys - Mapping of indexed fields to their ordering or index type. ODM will + allow "asc" and "desc" to be used in place of ``1`` and ``-1``, + respectively. Special index types (e.g. "2dsphere") should be specified as + strings. This is required when `@Index`_ is used at the class level. +- + options - Options for creating the index + +The ``keys`` and ``options`` attributes correspond to the arguments for +`MongoCollection::createIndex() `_. +ODM allows mapped field names (i.e. PHP property names) to be used when defining +``keys``. + +.. code-block:: php + + `. ``SINGLE_COLLECTION`` and +``COLLECTION_PER_CLASS`` are currently supported. + +Examples: + +.. code-block:: php + + `. +This is only compatible with the ``int`` type, and cannot be combined with `@Id`_. + +.. code-block:: php + + ` for additional information. + +.. code-block:: php + + _` +that will be applied when querying for the annotated document. + +.. code-block:: php + + `. +This is only compatible with ``int`` and ``date`` field types, and cannot be combined with `@Id`_. + +.. code-block:: php + + ` and +:ref:`reference-many ` collections in separate write operations, +which do not bump the document version. Users employing document versioning are +encouraged to use the :ref:`atomicSet ` or +:ref:`atomicSetArray ` strategies for such collections, which +will ensure that collections are updated in the same write operation as the +versioned parent document. + +.. _BSON specification: http://bsonspec.org/spec.html +.. _DBRef: https://docs.mongodb.com/manual/reference/database-references/#dbrefs +.. _geoNear command: https://docs.mongodb.com/manual/reference/command/geoNear/ +.. _GridFS: https://docs.mongodb.com/manual/core/gridfs/ +.. _MongoBinData: http://php.net/manual/en/class.mongobindata.php +.. _MongoDate: http://php.net/manual/en/class.mongodate.php +.. _MongoGridFSFile: http://php.net/manual/en/class.mongogridfsfile.php +.. _MongoId: http://php.net/manual/en/class.mongoid.php +.. _MongoMaxKey: http://php.net/manual/en/class.mongomaxkey.php +.. _MongoMinKey: http://php.net/manual/en/class.mongominkey.php +.. _MongoTimestamp: http://php.net/manual/en/class.mongotimestamp.php +.. |FQCN| raw:: html + FQCN diff --git a/build.docset/Contents/Resources/Documents/_sources/reference/architecture.rst.txt b/build.docset/Contents/Resources/Documents/_sources/reference/architecture.rst.txt new file mode 100644 index 0000000..6b4fe7d --- /dev/null +++ b/build.docset/Contents/Resources/Documents/_sources/reference/architecture.rst.txt @@ -0,0 +1,124 @@ +Architecture +============ + +This chapter gives an overview of the overall architecture, +terminology and constraints of Doctrine. It is recommended to +read this chapter carefully. + +Documents +--------- + +A document is a lightweight, persistent domain object. A document can +be any regular PHP class observing the following restrictions: + +- A document class must not be final or contain final methods. +- All persistent properties/field of any document class should + always be private or protected, otherwise lazy-loading might not + work as expected. +- A document class must not implement ``__clone`` or + :doc:`do so safely <../cookbook/implementing-wakeup-or-clone>`. +- A document class must not implement ``__wakeup`` or + :doc:`do so safely <../cookbook/implementing-wakeup-or-clone>`. + Also consider implementing + `Serializable `_ + instead. +- Any two document classes in a class hierarchy that inherit + directly or indirectly from one another must not have a mapped + property with the same name. That is, if B inherits from A then B + must not have a mapped field with the same name as an already + mapped field that is inherited from A. + +Documents support inheritance, polymorphic associations, and +polymorphic queries. Both abstract and concrete classes can be +documents. Documents may extend non-document classes as well as document +classes, and non-document classes may extend document classes. + +.. tip:: + + The constructor of a document is only ever invoked when + *you* construct a new instance with the *new* keyword. Doctrine + never calls document constructors, thus you are free to use them as + you wish and even have it require arguments of any type. + +Document states +~~~~~~~~~~~~~~~ + +A document instance can be characterized as being NEW, MANAGED, DETACHED or REMOVED. + +- A NEW document instance has no persistent identity, and is not yet + associated with a DocumentManager and a UnitOfWork (i.e. those just + created with the "new" operator). +- A MANAGED document instance is an instance with a persistent + identity that is associated with a DocumentManager and whose + persistence is thus managed. +- A DETACHED document instance is an instance with a persistent + identity that is not (or no longer) associated with a + DocumentManager and a UnitOfWork. +- A REMOVED document instance is an instance with a persistent + identity, associated with a DocumentManager, that will be removed + from the database upon transaction commit. + +Persistent fields +~~~~~~~~~~~~~~~~~ + +The persistent state of a document is represented by instance +variables. An instance variable must be directly accessed only from +within the methods of the document by the document instance itself. +Instance variables must not be accessed by clients of the document. +The state of the document is available to clients only through the +document's methods, i.e. accessor methods (getter/setter methods) or +other business methods. + +Collection-valued persistent fields and properties must be defined +in terms of the ``Doctrine\Common\Collections\Collection`` +interface. The collection implementation type may be used by the +application to initialize fields or properties before the document is +made persistent. Once the document becomes managed (or detached), +subsequent access must be through the interface type. + +Serializing documents +~~~~~~~~~~~~~~~~~~~~~ + +Serializing documents can be problematic and is not really +recommended, at least not as long as a document instance still holds +references to proxy objects or is still managed by an +DocumentManager. If you intend to serialize (and unserialize) document +instances that still hold references to proxy objects you may run +into problems with private properties because of technical +limitations. Proxy objects implement ``__sleep`` and it is not +possible for ``__sleep`` to return names of private properties in +parent classes. On the other hand it is not a solution for proxy +objects to implement ``Serializable`` because Serializable does not +work well with any potential cyclic object references (at least we +did not find a way yet, if you did, please contact us). + +The DocumentManager +------------------- + +The ``DocumentManager`` class is a central access point to the ODM +functionality provided by Doctrine. The ``DocumentManager`` API is +used to manage the persistence of your objects and to query for +persistent objects. + +Transactional write-behind +~~~~~~~~~~~~~~~~~~~~~~~~~~ + +An ``DocumentManager`` and the underlying ``UnitOfWork`` employ a +strategy called "transactional write-behind" that delays the +execution of query statements in order to execute them in the most +efficient way and to execute them at the end of a transaction so +that all write locks are quickly released. You should see Doctrine +as a tool to synchronize your in-memory objects with the database +in well defined units of work. Work with your objects and modify +them as usual and when you're done call ``DocumentManager#flush()`` +to make your changes persistent. + +The Unit of Work +~~~~~~~~~~~~~~~~ + +Internally an ``DocumentManager`` uses a ``UnitOfWork``, which is a +typical implementation of the +`Unit of Work pattern `_, +to keep track of all the things that need to be done the next time +``flush`` is invoked. You usually do not directly interact with a +``UnitOfWork`` but with the ``DocumentManager`` instead. diff --git a/build.docset/Contents/Resources/Documents/_sources/reference/basic-mapping.rst.txt b/build.docset/Contents/Resources/Documents/_sources/reference/basic-mapping.rst.txt new file mode 100644 index 0000000..52900f8 --- /dev/null +++ b/build.docset/Contents/Resources/Documents/_sources/reference/basic-mapping.rst.txt @@ -0,0 +1,621 @@ +Basic Mapping +============= + +This chapter explains the basic mapping of objects and properties. +Mapping of references and embedded documents will be covered in the +next chapter "Reference Mapping". + +Mapping Drivers +--------------- + +Doctrine provides several different ways for specifying object +document mapping metadata: + +- Docblock Annotations +- XML +- YAML +- Raw PHP Code + +.. note:: + + If you're wondering which mapping driver gives the best + performance, the answer is: None. Once the metadata of a class has + been read from the source (annotations, xml or yaml) it is stored + in an instance of the + ``Doctrine\ODM\MongoDB\Mapping\ClassMetadata`` class and these + instances are stored in the metadata cache. Therefore at the end of + the day all drivers perform equally well. If you're not using a + metadata cache (not recommended!) then the XML driver might have a + slight edge in performance due to the powerful native XML support + in PHP. + +Introduction to Docblock Annotations +------------------------------------ + +You've probably used docblock annotations in some form already, +most likely to provide documentation metadata for a tool like +``PHPDocumentor`` (@author, @link, ...). Docblock annotations are a +tool to embed metadata inside the documentation section which can +then be processed by some tool. Doctrine generalizes the concept of +docblock annotations so that they can be used for any kind of +metadata and so that it is easy to define new docblock annotations. +In order to allow more involved annotation values and to reduce the +chances of clashes with other docblock annotations, the Doctrine +docblock annotations feature an alternative syntax that is heavily +inspired by the Annotation syntax introduced in Java 5. + +The implementation of these enhanced docblock annotations is +located in the ``Doctrine\Common\Annotations`` namespace and +therefore part of the Common package. Doctrine docblock annotations +support namespaces and nested annotations among other things. The +Doctrine MongoDB ODM defines its own set of docblock annotations +for supplying object document mapping metadata. + +.. note:: + + If you're not comfortable with the concept of docblock + annotations, don't worry, as mentioned earlier Doctrine 2 provides + XML and YAML alternatives and you could easily implement your own + favorite mechanism for defining ORM metadata. + +Persistent classes +------------------ + +In order to mark a class for object-relational persistence it needs +to be designated as a document. This can be done through the +``@Document`` marker annotation. + +.. configuration-block:: + + .. code-block:: php + + + + + + + + .. code-block:: yaml + + Documents\User: + type: document + +By default, the document will be persisted to a database named +doctrine and a collection with the same name as the class name. In +order to change that, you can use the ``db`` and ``collection`` +option as follows: + +.. configuration-block:: + + .. code-block:: php + + + + + + + + .. code-block:: yaml + + Documents\User: + type: document + db: my_db + collection: users + +Now instances of ``Documents\User`` will be persisted into a +collection named ``users`` in the database ``my_db``. + +If you want to omit the db attribute you can configure the default db +to use with the ``setDefaultDB`` method: + +.. code-block:: php + + setDefaultDB('my_db'); + +.. _doctrine_mapping_types: + +Doctrine Mapping Types +---------------------- + +A Doctrine Mapping Type defines the mapping between a PHP type and +an MongoDB type. You can even write your own custom mapping types. + +Here is a quick overview of the built-in mapping types: + +- ``bin`` +- ``bin_bytearray`` +- ``bin_custom`` +- ``bin_func`` +- ``bin_md5`` +- ``bin_uuid`` +- ``boolean`` +- ``collection`` +- ``custom_id`` +- ``date`` +- ``file`` +- ``float`` +- ``hash`` +- ``id`` +- ``int`` +- ``key`` +- ``object_id`` +- ``raw`` +- ``string`` +- ``timestamp`` + +You can read more about the available MongoDB types on `php.net `_. + +.. note:: + + The Doctrine mapping types are used to convert the local PHP types to the MongoDB types + when persisting so that your domain is not bound to MongoDB-specific types. For example a + DateTime instance may be converted to MongoDate when you persist your documents, and vice + versa during hydration. + +Generally, the name of each built-in mapping type hints as to how the value will be converted. +This list explains some of the less obvious mapping types: + +- ``bin``: string to MongoBinData instance with a "generic" type (default) +- ``bin_bytearray``: string to MongoBinData instance with a "byte array" type +- ``bin_custom``: string to MongoBinData instance with a "custom" type +- ``bin_func``: string to MongoBinData instance with a "function" type +- ``bin_md5``: string to MongoBinData instance with a "md5" type +- ``bin_uuid``: string to MongoBinData instance with a "uuid" type +- ``collection``: numerically indexed array to MongoDB array +- ``date``: DateTime to MongoDate +- ``hash``: associative array to MongoDB object +- ``id``: string to MongoId by default, but other formats are possible +- ``timestamp``: string to MongoTimestamp +- ``raw``: any type + +.. note:: + + If you are using the hash type, values within the associative array are + passed to MongoDB directly, without being prepared. Only formats suitable for + the Mongo driver should be used. If your hash contains values which are not + suitable you should either use an embedded document or use formats provided + by the MongoDB driver (e.g. ``\MongoDate`` instead of ``\DateTime``). + +Property Mapping +---------------- + +After a class has been marked as a document it can specify +mappings for its instance fields. Here we will only look at simple +fields that hold scalar values like strings, numbers, etc. +References to other objects and embedded objects are covered in the +chapter "Reference Mapping". + +.. _basic_mapping_identifiers: + +Identifiers +~~~~~~~~~~~ + +Every document class needs an identifier. You designate the field +that serves as the identifier with the ``@Id`` marker annotation. +Here is an example: + +.. configuration-block:: + + .. code-block:: php + + + + + + + + + .. code-block:: yaml + + Documents\User: + fields: + id: + type: id + id: true + +You can configure custom ID strategies if you don't want to use the default MongoId. +The available strategies are: + +- ``AUTO`` - Uses the native generated MongoId. +- ``ALNUM`` - Generates an alpha-numeric string (based on an incrementing value). +- ``CUSTOM`` - Defers generation to a AbstractIdGenerator implementation specified in the ``class`` option. +- ``INCREMENT`` - Uses another collection to auto increment an integer identifier. +- ``UUID`` - Generates a UUID identifier. +- ``NONE`` - Do not generate any identifier. ID must be manually set. + +Here is an example how to manually set a string identifier for your documents: + +.. configuration-block:: + + .. code-block:: php + + id = $id; + } + + //... + } + + .. code-block:: xml + + + + + + + + + .. code-block:: yaml + + MyPersistentClass: + fields: + id: + type: string + id: true + strategy: NONE + +When using the ``NONE`` strategy you will have to explicitly set an id before persisting the document: + +.. code-block:: php + + setId('my_unique_identifier'); + $dm->persist($document); + $dm->flush(); + +Now you can retrieve the document later: + +.. code-block:: php + + find('MyPersistentClass', 'my_unique_identifier'); + +You can define your own ID generator by extending the +``Doctrine\ODM\MongoDB\Id\AbstractIdGenerator`` class and specifying the class +as an option for the ``CUSTOM`` strategy: + +.. configuration-block:: + + .. code-block:: php + + id = $id; + } + + //... + } + + .. code-block:: xml + + + + + + + + + + + .. code-block:: yaml + + MyPersistentClass: + fields: + id: + id: true + strategy: CUSTOM + type: string + options: + class: Vendor\Specific\Generator + + + +Fields +~~~~~~ + +To mark a property for document persistence the ``@Field`` docblock +annotation can be used. This annotation usually requires at least 1 +attribute to be set, the ``type``. The ``type`` attribute specifies +the Doctrine Mapping Type to use for the field. If the type is not +specified, 'string' is used as the default mapping type since it is +the most flexible. + +Example: + +.. configuration-block:: + + .. code-block:: php + + + + + + + + + + .. code-block:: yaml + + Documents\User: + fields: + id: + type: id + id: true + username: + type: string + +In that example we mapped the property ``id`` to the field ``id`` +using the mapping type ``id`` and the property ``name`` is mapped +to the field ``name`` with the default mapping type ``string``. As +you can see, by default the mongo field names are assumed to be the +same as the property names. To specify a different name for the +field, you can use the ``name`` attribute of the Field annotation +as follows: + +.. configuration-block:: + + .. code-block:: php + + + + .. code-block:: yaml + + name: + name: db_name + +Custom Mapping Types +-------------------- + +Doctrine allows you to create new mapping types. This can come in +handy when you're missing a specific mapping type or when you want +to replace the existing implementation of a mapping type. + +In order to create a new mapping type you need to subclass +``Doctrine\ODM\MongoDB\Types\Type`` and implement/override +the methods. Here is an example skeleton of such a custom type +class: + +.. code-block:: php + + sec); + } + + public function closureToPHP() + { + // Return the string body of a PHP closure that will receive $value + // and store the result of a conversion in a $return variable + return '$return = new \DateTime($value);'; + } + + public function convertToDatabaseValue($value) + { + // This is called to convert a PHP value to its Mongo equivalent + return new \MongoDate($value); + } + } + +Restrictions to keep in mind: + +- + If the value of the field is *NULL* the method + ``convertToDatabaseValue()`` is not called. +- + The ``UnitOfWork`` never passes values to the database convert + method that did not change in the request. + +When you have implemented the type you still need to let Doctrine +know about it. This can be achieved through the +``Doctrine\ODM\MongoDB\Types\Type#registerType($name, $class)`` +method. + +Here is an example: + +.. code-block:: php + + + + .. code-block:: yaml + + field: + type: mytype + +Multiple Document Types in a Collection +--------------------------------------- + +You can easily store multiple types of documents in a single collection. This +requires specifying the same collection name, ``discriminatorField``, and +(optionally) ``discriminatorMap`` mapping options for each class that will share +the collection. Here is an example: + +.. code-block:: php + + createQuery(array('Article', 'Album')); + $documents = $query->execute(); + +The above will return a cursor that will allow you to iterate over all +``Article`` and ``Album`` documents in the collections. + +.. |FQCN| raw:: html + FQCN diff --git a/build.docset/Contents/Resources/Documents/_sources/reference/best-practices.rst.txt b/build.docset/Contents/Resources/Documents/_sources/reference/best-practices.rst.txt new file mode 100644 index 0000000..33913b2 --- /dev/null +++ b/build.docset/Contents/Resources/Documents/_sources/reference/best-practices.rst.txt @@ -0,0 +1,70 @@ +Best Practices +============== + +Here are some best practices you can follow when working with the Doctrine MongoDB ODM. + +Constrain relationships as much as possible +------------------------------------------- + +It is important to constrain relationships as much as possible. This means: + +- Impose a traversal direction (avoid bidirectional associations if possible) +- Eliminate nonessential associations + +This has several benefits: + +- Reduced coupling in your domain model +- Simpler code in your domain model (no need to maintain bidirectionality properly) +- Less work for Doctrine + +Use events judiciously +---------------------- + +The event system of Doctrine is great and fast. Even though making +heavy use of events, especially lifecycle events, can have a +negative impact on the performance of your application. Thus you +should use events judiciously. + +Use cascades judiciously +------------------------ + +Automatic cascades of the persist/remove/merge/etc. operations are +very handy but should be used wisely. Do NOT simply add all +cascades to all associations. Think about which cascades actually +do make sense for you for a particular association, given the +scenarios it is most likely used in. + +Don't use special characters +---------------------------- + +Avoid using any non-ASCII characters in class, field, table or +column names. Doctrine itself is not unicode-safe in many places +and will not be until PHP itself is fully unicode-aware. + +Initialize collections in the constructor +----------------------------------------- + +It is recommended best practice to initialize any business +collections in documents in the constructor. + +Example: + +.. code-block:: php + + addresses = new ArrayCollection; + $this->articles = new ArrayCollection; + } + } diff --git a/build.docset/Contents/Resources/Documents/_sources/reference/bidirectional-references.rst.txt b/build.docset/Contents/Resources/Documents/_sources/reference/bidirectional-references.rst.txt new file mode 100644 index 0000000..6827be5 --- /dev/null +++ b/build.docset/Contents/Resources/Documents/_sources/reference/bidirectional-references.rst.txt @@ -0,0 +1,218 @@ +Bi-Directional References +========================= + +By default when you map a bi-directional reference, the reference is maintained on both sides +of the relationship and there is not a single "owning side". Both sides are considered owning +and changes are tracked and persisted separately. Here is an example: + +.. code-block:: php + + setUser($user); + + $post2 = new BlogPost(); + $post2->setUser($user); + + $post3 = new BlogPost(); + $post3->setUser($user); + + $dm->persist($post1); + $dm->persist($post2); + $dm->persist($post3); + $dm->flush(); + +And we retrieve the ``User`` later to access the posts for that user: + +.. code-block:: php + + find('User', $user->id); + + $posts = $user->getPosts(); + foreach ($posts as $post) { + // ... + } + +The above will execute a query like the following to lazily load the collection of posts to +iterate over: + +.. code-block:: javascript + + db.BlogPost.find( { 'user.$id' : user.id } ) + +.. note:: + + Remember that the inverse side, the side which specified ``mappedBy`` is immutable and + any changes to the state of the reference will not be persisted. + +Other Examples +-------------- + +Here are several examples which implement the ``inversedBy`` and ``mappedBy`` options: + +One to One +~~~~~~~~~~~ + +Here is an example where we have a one to one relationship between ``Cart`` and ``Customer``: + +.. code-block:: php + + setCustomer(null); + $dm->flush(); + +.. note:: + + When specifying inverse one-to-one relationships the referenced document is + loaded directly when the owning document is hydrated instead of using a + proxy. In the example above, loading a ``Customer`` object from the database + would also cause the corresponding ``Cart`` to be loaded. This can cause + performance issues when loading many ``Customer`` objects at once. + +Self-Referencing Many to Many +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +.. code-block:: php + + name = $name; + $this->friendsWithMe = new \Doctrine\Common\Collections\ArrayCollection(); + $this->myFriends = new \Doctrine\Common\Collections\ArrayCollection(); + } + + public function addFriend(User $user) + { + $user->friendsWithMe[] = $this; + $this->myFriends[] = $user; + } + } + +.. _DBRef: https://docs.mongodb.com/manual/reference/database-references/#dbrefs diff --git a/build.docset/Contents/Resources/Documents/_sources/reference/capped-collections.rst.txt b/build.docset/Contents/Resources/Documents/_sources/reference/capped-collections.rst.txt new file mode 100644 index 0000000..d48dad0 --- /dev/null +++ b/build.docset/Contents/Resources/Documents/_sources/reference/capped-collections.rst.txt @@ -0,0 +1,92 @@ +Capped Collections +================== + +Capped collections are fixed sized collections that have a very +high performance auto-LRU age-out feature (age out is based on +insertion order). + +In addition, capped collections automatically, with high +performance, maintain insertion order for the objects in the +collection; this is very powerful for certain use cases such as +logging. + +Mapping +------- + +You can configure the collection in the ``collection`` attribute of +the ``@Document`` annotation: + +.. configuration-block:: + + .. code-block:: php + + + + + + + + + + .. code-block:: yaml + + Documents\Category: + type: document + collection: + name: collname + capped: true + size: 100000 + max: 1000 + fields: + id: + type: id + id: true + name: + type: string + +Creating +-------- + +Remember that you must manually create the collections. If you let +MongoDB create the collection lazily the first time it is selected, +it will not be created with the capped configuration. You can +create the collection for a document with the ``SchemaManager`` +that can be acquired from your ``DocumentManager`` instance: + +.. code-block:: php + + getSchemaManager()->createDocumentCollection('Category'); + +You can drop the collection too if it already exists: + +.. code-block:: php + + getSchemaManager()->dropDocumentCollection('Category'); diff --git a/build.docset/Contents/Resources/Documents/_sources/reference/change-tracking-policies.rst.txt b/build.docset/Contents/Resources/Documents/_sources/reference/change-tracking-policies.rst.txt new file mode 100644 index 0000000..5e5bca3 --- /dev/null +++ b/build.docset/Contents/Resources/Documents/_sources/reference/change-tracking-policies.rst.txt @@ -0,0 +1,150 @@ +.. _change_tracking_policies: + +Change Tracking Policies +======================== + +Change tracking is the process of determining what has changed in +managed documents since the last time they were synchronized with +the database. + +Doctrine provides 3 different change tracking policies, each having +its particular advantages and disadvantages. The change tracking +policy can be defined on a per-class basis (or more precisely, +per-hierarchy). + +Deferred Implicit +~~~~~~~~~~~~~~~~~ + +The deferred implicit policy is the default change tracking policy +and the most convenient one. With this policy, Doctrine detects the +changes by a property-by-property comparison at commit time and +also detects changes to documents or new documents that are +referenced by other managed documents. Although the most convenient policy, +it can have negative effects on performance if you are dealing with large units +of work. Since Doctrine can't know what has changed, it needs to check +all managed documents for changes every time you invoke DocumentManager#flush(), +making this operation rather costly. + +Deferred Explicit +~~~~~~~~~~~~~~~~~ + +The deferred explicit policy is similar to the deferred implicit +policy in that it detects changes through a property-by-property +comparison at commit time. The difference is that only documents are +considered that have been explicitly marked for change detection +through a call to DocumentManager#persist(document) or through a save +cascade. All other documents are skipped. This policy therefore +gives improved performance for larger units of work while +sacrificing the behavior of "automatic dirty checking". + +Therefore, flush() operations are potentially cheaper with this +policy. The negative aspect this has is that if you have a rather +large application and you pass your objects through several layers +for processing purposes and business tasks you may need to track +yourself which documents have changed on the way so you can pass +them to DocumentManager#persist(). + +This policy can be configured as follows: + +.. code-block:: php + + _listeners[] = $listener; + } + } + +Then, in each property setter of this class or derived classes, you +need to notify all the ``PropertyChangedListener`` instances. As an +example we add a convenience method on ``MyDocument`` that shows this +behavior: + +.. code-block:: php + + _listeners) { + foreach ($this->_listeners as $listener) { + $listener->propertyChanged($this, $propName, $oldValue, $newValue); + } + } + } + + public function setData($data) + { + if ($data != $this->data) { + $this->_onPropertyChanged('data', $this->data, $data); + $this->data = $data; + } + } + } + +You have to invoke ``_onPropertyChanged`` inside every method that +changes the persistent state of ``MyDocument``. + +The check whether the new value is different from the old one is +not mandatory but recommended. That way you also have full control +over when you consider a property changed. + +The negative point of this policy is obvious: You need implement an +interface and write some plumbing code. But also note that we tried +hard to keep this notification functionality abstract. Strictly +speaking, it has nothing to do with the persistence layer. You may +find that property notification events come in handy in many other +scenarios as well. As mentioned earlier, the ``Doctrine\Common`` +namespace is not that evil and consists solely of very small classes +and interfaces that have almost no external dependencies and that you can easily take with you should +you want to swap out the persistence layer. This change tracking policy +does not introduce a dependency on the Doctrine persistence +layer. + +The positive point and main advantage of this policy is its +effectiveness. It has the best performance characteristics of the 3 +policies with larger units of work and a flush() operation is very +cheap when nothing has changed. diff --git a/build.docset/Contents/Resources/Documents/_sources/reference/complex-references.rst.txt b/build.docset/Contents/Resources/Documents/_sources/reference/complex-references.rst.txt new file mode 100644 index 0000000..263e5a9 --- /dev/null +++ b/build.docset/Contents/Resources/Documents/_sources/reference/complex-references.rst.txt @@ -0,0 +1,152 @@ +Complex References +================== + +Sometimes you may want to access related documents using custom criteria or from +the inverse side of a relationship. + +You can create an `immutable`_ reference to one or many documents and specify +how that reference is to be loaded. The reference is immutable in that it is +defined only in the mapping, unlike a typical reference where a `MongoDBRef`_ or +identifier (see :ref:`storing_references`) is stored on the document itself. + +The following options may be used for :ref:`one ` and +:ref:`many ` reference mappings: + + - ``criteria`` - Query criteria to apply to the cursor. + - ``repositoryMethod`` - The repository method used to create the cursor. + - ``sort`` - Sort criteria for the cursor. + - ``skip`` - Skip offset to apply to the cursor. + - ``limit`` - Limit to apply to the cursor. + +Basic Example +------------- + +In the following example, ``$comments`` will refer to all Comments for the +BlogPost and ``$last5Comments`` will refer to only the last five Comments. The +``mappedBy`` field is used to determine which Comment field should be used for +querying by the BlogPost's ID. + +.. code-block:: php + + createQueryBuilder() + ->field('blogPost')->references($blogPost); + ->getQuery()->execute(); + } + } + +.. _MongoDBRef: http://php.net/manual/en/class.mongodbref.php +.. _immutable: http://en.wikipedia.org/wiki/Immutable diff --git a/build.docset/Contents/Resources/Documents/_sources/reference/console-commands.rst.txt b/build.docset/Contents/Resources/Documents/_sources/reference/console-commands.rst.txt new file mode 100644 index 0000000..f697867 --- /dev/null +++ b/build.docset/Contents/Resources/Documents/_sources/reference/console-commands.rst.txt @@ -0,0 +1,54 @@ +Console Commands +================ + +Doctrine MongoDB ODM offers some console commands, which utilize Symfony2's +Console component, to ease your development process: + +- ``odm:clear-cache:metadata`` - Clear all metadata cache of the various cache drivers. +- ``odm:query`` - Query mongodb and inspect the outputted results from your document classes. +- ``odm:generate:documents`` - Generate document classes and method stubs from your mapping information. +- ``odm:generate:hydrators`` - Generates hydrator classes for document classes. +- ``odm:generate:proxies`` - Generates proxy classes for document classes. +- ``odm:generate:repositories`` - Generate repository classes from your mapping information. +- ``odm:schema:create`` - Allows you to create databases, collections and indexes for your documents +- ``odm:schema:drop`` - Allows you to drop databases, collections and indexes for your documents +- ``odm:schema:update`` - Allows you to update indexes for your documents +- ``odm:schema:shard`` - Allows you to enable sharding for your documents + +Provided you have an existing ``DocumentManager`` instance, you can setup a +console command easily with the following code: + +.. code-block:: php + + new \Doctrine\ODM\MongoDB\Tools\Console\Helper\DocumentManagerHelper($dm), + )); + + $app = new Application('Doctrine MongoDB ODM'); + $app->setHelperSet($helperSet); + $app->addCommands(array( + new \Doctrine\ODM\MongoDB\Tools\Console\Command\GenerateDocumentsCommand(), + new \Doctrine\ODM\MongoDB\Tools\Console\Command\GenerateHydratorsCommand(), + new \Doctrine\ODM\MongoDB\Tools\Console\Command\GenerateProxiesCommand(), + new \Doctrine\ODM\MongoDB\Tools\Console\Command\GenerateRepositoriesCommand(), + new \Doctrine\ODM\MongoDB\Tools\Console\Command\QueryCommand(), + new \Doctrine\ODM\MongoDB\Tools\Console\Command\ClearCache\MetadataCommand(), + new \Doctrine\ODM\MongoDB\Tools\Console\Command\Schema\CreateCommand(), + new \Doctrine\ODM\MongoDB\Tools\Console\Command\Schema\DropCommand(), + new \Doctrine\ODM\MongoDB\Tools\Console\Command\Schema\UpdateCommand(), + new \Doctrine\ODM\MongoDB\Tools\Console\Command\Schema\ShardCommand(), + )); + + $app->run(); + +A reference implementation of the console command may be found in the +``tools/sandbox`` directory of the project repository. That command is +configured to store generated hydrators and proxies in the same directory, and +relies on the main project's Composer dependencies. You will want to customize +its configuration files if you intend to use it in your own project. diff --git a/build.docset/Contents/Resources/Documents/_sources/reference/custom-collections.rst.txt b/build.docset/Contents/Resources/Documents/_sources/reference/custom-collections.rst.txt new file mode 100644 index 0000000..40aa155 --- /dev/null +++ b/build.docset/Contents/Resources/Documents/_sources/reference/custom-collections.rst.txt @@ -0,0 +1,170 @@ +.. _custom_collection: + +Custom Collections +================== + +.. note:: + This feature was introduced in version 1.1 + +By default, Doctrine uses ``ArrayCollection`` implementation of its ``Collection`` +interface to hold both embedded and referenced documents. That collection may then +be wrapped by a ``PersistentCollection`` to allow for change tracking and other +persistence-related features. + +.. code-block:: php + + sections = new ArrayCollection(); + } + + // ... + } + +For most cases this solution is sufficient but more sophisticated domains could use +their own collections (e.g. a collection that ensures its contained objects are sorted) +or to simply add common filtering methods that otherwise would otherwise be added to +owning document's class. + +Custom Collection Classes +------------------------- + +.. note:: + You may want to check `malarzm/collections `_ + which provides alternative implementations of Doctrine's ``Collection`` interface and + aims to kickstart development of your own collections. + +Using your own ``Collection`` implementation is as simple as specifying the +``collectionClass`` parameter in the ``@EmbedMany`` or ``@ReferenceMany`` mapping +and ensuring that your custom class is initialized in the owning class' constructor: + +.. code-block:: php + + sections = new SectionCollection(); + } + + // ... + } + +If you are satisfied with ``ArrayCollection`` and only want +to sprinkle it with some filtering methods, you may just extend it: + +.. code-block:: php + + filter(function(Section $s) { + return $s->isEnabled(); + }); + } + } + +Alternatively, you may want to implement the whole class from scratch: + +.. code-block:: php + + elements = $elements; + } + + // your implementation of all methods interface requires + } + +Taking Control of the Collection's Constructor +---------------------------------------------- + +By default, Doctrine assumes that it can instantiate your collections in same +manner as an ``ArrayCollection`` (i.e. the only parameter is an optional PHP +array); however, you may want to inject additional dependencies into your +custom collection class(es). This will require you to create a +`PersistentCollectionFactory implementation `_, +which Doctrine will then use to construct its persistent collections. +You may decide to implement this class from scratch or extend our +``AbstractPersistentCollectionFactory``: + +.. code-block:: php + + eventDispatcher = $eventDispatcher; + } + + protected function createCollectionClass($collectionClass) + { + switch ($collectionClass) { + case SectionCollection::class: + return new $collectionClass(array(), $this->eventDispatcher); + default: + return new $collectionClass; + } + } + } + +The factory class must then be registered in the ``Configuration``: + +.. code-block:: php + + get('event_dispatcher'); + $collFactory = new YourPersistentCollectionFactory($eventDispatcher); + $configuration = new Configuration(); + // your other config here + $configuration->setPersistentCollectionFactory($collFactory); diff --git a/build.docset/Contents/Resources/Documents/_sources/reference/document-repositories.rst.txt b/build.docset/Contents/Resources/Documents/_sources/reference/document-repositories.rst.txt new file mode 100644 index 0000000..a86111d --- /dev/null +++ b/build.docset/Contents/Resources/Documents/_sources/reference/document-repositories.rst.txt @@ -0,0 +1,210 @@ +.. _document_repositories: + +Document Repositories +===================== + +.. note:: + + A repository mediates between the domain and data mapping layers using a + collection-like interface for accessing domain objects. + +In Doctrine, a repository is a class that concentrates code responsible for +querying and filtering your documents. ODM provides you with a default +``DocumentRepository`` for all of your documents: + +.. code-block:: php + + getRepository(User::class); + $disabledUsers = $repository->findBy(['disabled' => true, 'activated' => true]); + +The array passed to ``findBy`` specifies the criteria for which documents are matched. +ODM will assist with converting PHP values to equivalent BSON types whenever possible: + +.. code-block:: php + + find(Group::class, 123); + /* @var $repository \Doctrine\ODM\MongoDB\DocumentRepository */ + $repository = $documentManager->getRepository(User::class); + $usersInGroup = $repository->findBy(['group' => $group]); + +The default repository implementation provides the following methods: + +- ``find()`` - finds one document by its identifier. This may skip a database query +if the document is already managed by ODM. +- ``findAll()`` - finds all documents in the collection. +- ``findBy()`` - finds all documents matching the given criteria. Additional query +options may be specified (e.g. sort, limit, skip). +- ``findOneBy()`` - finds one document matching the given criteria. +- ``matching()`` - Finds all documents matching the given criteria, as expressed +with Doctrine's Criteria API. + +.. note:: + + All above methods will include additional criteria specified by :ref:`Filters `. + +.. note:: + + Magic ``findBy`` and ``findOneBy`` calls described below are deprecated in 1.2 and + will be removed in 2.0. + +Additional methods that are not defined explicitly in the repository class may also be +used if they follow a specific naming convention: + +.. code-block:: php + + find(Group::class, 123); + /* @var $repository \Doctrine\ODM\MongoDB\DocumentRepository */ + $repository = $documentManager->getRepository(User::class); + $usersInGroup = $repository->findByGroup($group); + $randomUser = $repository->findOneByStatus('active'); + +In the above example, ``findByGroup()`` and ``findOneByStatus()`` will be handled by +the ``__call`` method, which intercepts calls to undefined methods. If the invoked +method's name starts with "findBy" or "findOneBy", ODM will attempt to infer mapped +properties from the remainder of the method name ("Group" or "Status" as per example). +The above calls are equivalent to: + +.. code-block:: php + + find(Group::class, 123); + /* @var $repository \Doctrine\ODM\MongoDB\DocumentRepository */ + $repository = $documentManager->getRepository(User::class); + $usersInGroup = $repository->findBy(['group' => $group]); + $randomUser = $repository->findOneBy(['status' => 'active']); + +Custom Repositories +------------------- + +A custom repository allows filtering logic to be consolidated into a single class instead +of spreading it throughout a project. A custom repository class may be specified for a +document class like so: + +.. configuration-block:: + + .. code-block:: php + + + + + + .. code-block:: yaml + + Documents\User: + repositoryClass: Repositories\\UserRepository + collection: user + # ... + +The next step is implementing your repository class. In most cases, ODM's default +``DocumentRepository`` class may be extended with additional methods that you need. +More complex cases that require passing additional dependencies to a custom repository +class will be discussed in the next section. + +.. code-block:: php + + findBy(['disabled' => true, 'activated' => true]); + } + } + +It is also possible to change ODM's default ``DocumentRepository`` to your own +implementation for all documents (unless overridden by the mapping): + +.. code-block:: php + + $documentManager->getConfiguration() + ->setDefaultRepositoryClassName(MyDefaultRepository::class); + +Repositories with Additional Dependencies +----------------------------------------- + +.. note:: + + Implementing your own RepositoryFactory is possible since version 1.0, but the + ``AbstractRepositoryFactory`` class used in this example is only available since 1.2. + +By default, Doctrine assumes that it can instantiate your repositories in same manner +as its default one: + +.. code-block:: php + + `_ + +.. code-block:: php + + eventDispatcher = $eventDispatcher; + } + + protected function instantiateRepository($repositoryClassName, DocumentManager $documentManager, ClassMetadata $metadata) + { + switch ($repositoryClassName) { + case UserRepository::class: + return new UserRepository($this->eventDispatcher, $documentManager, $metadata); + default: + return new $repositoryClassName($documentManager, $documentManager->getUnitOfWork(), $metadata); + } + } + } + +The factory class must then be registered in the ``Configuration``: + +.. code-block:: php + + get('event_dispatcher'); + $repoFactory = new YourRepositoryFactory($eventDispatcher); + $configuration = new Configuration(); + // your other config here + $configuration->setRepositoryFactory($repoFactory); diff --git a/build.docset/Contents/Resources/Documents/_sources/reference/eager-cursors.rst.txt b/build.docset/Contents/Resources/Documents/_sources/reference/eager-cursors.rst.txt new file mode 100644 index 0000000..256c828 --- /dev/null +++ b/build.docset/Contents/Resources/Documents/_sources/reference/eager-cursors.rst.txt @@ -0,0 +1,46 @@ +Eager Cursors +------------- + +With a typical MongoDB cursor, it stays open during iteration and fetches +batches of documents as you iterate over the cursor. This isn't bad, +but sometimes you want to fetch all of the data eagerly. For example +when dealing with web applications, and you want to only show 50 +documents from a collection you should fetch all the data in your +controller first before going on to the view. + +Benefits: + +- The cursor stays open for a much shorter period of time. + +- Data retrieval and hydration are consolidated operations. + +- Doctrine has the ability to retry the cursor when exceptions during interaction with mongodb are encountered. + +Example: + +.. code-block:: php + + createQueryBuilder('User') + ->eagerCursor(true); + $query = $qb->getQuery(); + $users = $query->execute(); // returns instance of Doctrine\MongoDB\ODM\EagerCursor + +At this point all data is loaded from the database and cursors to MongoDB +have been closed but hydration of the data in to objects has not begun. Once +insertion starts the data will be hydrated in to PHP objects. + +Example: + +.. code-block:: php + + getUsername()."\n"; + } + +Not all documents are converted to objects at once, the hydration is still done +one document at a time during iteration. The only change is that all data is retrieved +first. diff --git a/build.docset/Contents/Resources/Documents/_sources/reference/embedded-mapping.rst.txt b/build.docset/Contents/Resources/Documents/_sources/reference/embedded-mapping.rst.txt new file mode 100644 index 0000000..4e2f27e --- /dev/null +++ b/build.docset/Contents/Resources/Documents/_sources/reference/embedded-mapping.rst.txt @@ -0,0 +1,283 @@ +Embedded Mapping +================ + +This chapter explains how embedded documents are mapped in +Doctrine. + +.. _embed_one: + +Embed One +--------- + +Embed a single document: + +.. configuration-block:: + + .. code-block:: php + + + + + + + + + .. code-block:: yaml + + User: + type: document + embedOne: + address: + targetDocument: Address + + Address: + type: embeddedDocument + +.. _embed_many: + +Embed Many +---------- + +Embed many documents: + +.. configuration-block:: + + .. code-block:: php + + + + + + + + + .. code-block:: yaml + + User: + type: document + embedMany: + phonenumbers: + targetDocument: Phonenumber + + Phonenumber: + type: embeddedDocument + +.. _embed_mixing_document_types: + +Mixing Document Types +--------------------- + +If you want to store different types of embedded documents in the same field, +you can simply omit the ``targetDocument`` option: + +.. configuration-block:: + + .. code-block:: php + + + + .. code-block:: yaml + + embedMany: + tasks: ~ + +Now the ``$tasks`` property can store any type of document! The class name will +be automatically stored in a field named ``_doctrine_class_name`` within +the embedded document. The field name can be customized with the +``discriminatorField`` option: + +.. configuration-block:: + + .. code-block:: php + + + + + + .. code-block:: yaml + + embedMany: + tasks: + discriminatorField: type + +You can also specify a discriminator map to avoid storing the |FQCN| +in each embedded document: + +.. configuration-block:: + + .. code-block:: php + + + + + + + + + .. code-block:: yaml + + embedMany: + tasks: + discriminatorMap: + download: DownloadTask + build: BuildTask + +If you have embedded documents without a discriminator value that need to be +treated correctly you can optionally specify a default value for the +discriminator: + +.. configuration-block:: + + .. code-block:: php + + + + + + + + + + .. code-block:: yaml + + embedMany: + tasks: + discriminatorMap: + download: DownloadTask + build: BuildTask + defaultDiscriminatorValue: download + +Cascading Operations +-------------------- + +All operations on embedded documents are automatically cascaded. +This is because embedded documents are part of their parent +document and cannot exist without those by nature. + +.. |FQCN| raw:: html + FQCN diff --git a/build.docset/Contents/Resources/Documents/_sources/reference/events.rst.txt b/build.docset/Contents/Resources/Documents/_sources/reference/events.rst.txt new file mode 100644 index 0000000..5a10c9d --- /dev/null +++ b/build.docset/Contents/Resources/Documents/_sources/reference/events.rst.txt @@ -0,0 +1,717 @@ +Events +====== + +Doctrine features a lightweight event system that is part of the +Common package. + +The Event System +---------------- + +The event system is controlled by the ``EventManager``. It is the +central point of Doctrine's event listener system. Listeners are +registered on the manager and events are dispatched through the +manager. + +.. code-block:: php + + addEventListener(array(self::preFoo, self::postFoo), $this); + } + + public function preFoo(EventArgs $e) + { + $this->preFooInvoked = true; + } + + public function postFoo(EventArgs $e) + { + $this->postFooInvoked = true; + } + } + + // Create a new instance + $test = new EventTest($evm); + +Events can be dispatched by using the ``dispatchEvent()`` method. + +.. code-block:: php + + dispatchEvent(EventTest::preFoo); + $evm->dispatchEvent(EventTest::postFoo); + +You can easily remove a listener with the ``removeEventListener()`` +method. + +.. code-block:: php + + removeEventListener(array(self::preFoo, self::postFoo), $this); + +The Doctrine event system also has a simple concept of event +subscribers. We can define a simple ``TestEventSubscriber`` class +which implements the ``\Doctrine\Common\EventSubscriber`` interface +and implements a ``getSubscribedEvents()`` method which returns an +array of events it should be subscribed to. + +.. code-block:: php + + preFooInvoked = true; + } + + public function getSubscribedEvents() + { + return array(self::preFoo); + } + } + + $eventSubscriber = new TestEventSubscriber(); + $evm->addEventSubscriber($eventSubscriber); + +Now when you dispatch an event any event subscribers will be +notified for that event. + +.. code-block:: php + + dispatchEvent(TestEventSubscriber::preFoo); + +Now test the ``$eventSubscriber`` instance to see if the +``preFoo()`` method was invoked. + +.. code-block:: php + + preFooInvoked) { + echo 'pre foo invoked!'; + } + +.. _lifecycle_events: + +Lifecycle Events +---------------- + +The DocumentManager and UnitOfWork trigger several events during +the life-time of their registered documents. + +- + preRemove - The preRemove event occurs for a given document before + the respective DocumentManager remove operation for that document + is executed. +- + postRemove - The postRemove event occurs for a document after the + document has been removed. It will be invoked after the database + delete operations. +- + prePersist - The prePersist event occurs for a given document + before the respective DocumentManager persist operation for that + document is executed. +- + postPersist - The postPersist event occurs for a document after + the document has been made persistent. It will be invoked after the + database insert operations. Generated primary key values are + available in the postPersist event. +- + preUpdate - The preUpdate event occurs before the database update + operations to document data. +- + postUpdate - The postUpdate event occurs after the database update + operations to document data. +- + preLoad - The preLoad event occurs for a document before the + document has been loaded into the current DocumentManager from the + database or after the refresh operation has been applied to it. +- + postLoad - The postLoad event occurs for a document after the + document has been loaded into the current DocumentManager from the + database or after the refresh operation has been applied to it. +- + loadClassMetadata - The loadClassMetadata event occurs after the + mapping metadata for a class has been loaded from a mapping source + (annotations/xml/yaml). +- + preFlush - The preFlush event occurs before the change-sets of all + managed documents are computed. This both a lifecycle call back and + and listener. +- + postFlush - The postFlush event occurs after the change-sets of all + managed documents are computed. +- + onFlush - The onFlush event occurs after the change-sets of all + managed documents are computed. This event is not a lifecycle + callback. +- + onClear - The onClear event occurs after the UnitOfWork has had + its state cleared. +- + documentNotFound - The documentNotFound event occurs when a proxy object + could not be initialized. This event is not a lifecycle callback. +- + postCollectionLoad - The postCollectionLoad event occurs just after + collection has been initialized (loaded) and before new elements + are re-added to it. + +You can access the Event constants from the ``Events`` class in the +ODM package. + +.. code-block:: php + + createdAt = date('Y-m-d H:i:s'); + } + + /** @PrePersist */ + public function doOtherStuffOnPrePersist(\Doctrine\ODM\MongoDB\Event\LifecycleEventArgs $eventArgs) + { + $this->value = 'changed from prePersist callback!'; + } + + /** @PostPersist */ + public function doStuffOnPostPersist(\Doctrine\ODM\MongoDB\Event\LifecycleEventArgs $eventArgs) + { + $this->value = 'changed from postPersist callback!'; + } + + /** @PreLoad */ + public function doStuffOnPreLoad(\Doctrine\ODM\MongoDB\Event\PreLoadEventArgs $eventArgs) + { + $data =& $eventArgs->getData(); + $data['value'] = 'changed from preLoad callback'; + } + + /** @PostLoad */ + public function doStuffOnPostLoad(\Doctrine\ODM\MongoDB\Event\LifecycleEventArgs $eventArgs) + { + $this->value = 'changed from postLoad callback!'; + } + + /** @PreUpdate */ + public function doStuffOnPreUpdate(\Doctrine\ODM\MongoDB\Event\PreUpdateEventArgs $eventArgs) + { + $this->value = 'changed from preUpdate callback!'; + } + + /** @PreFlush */ + public function preFlush(\Doctrine\ODM\MongoDB\Event\PreFlushEventArgs $eventArgs) + { + $this->value = 'changed from preFlush callback!'; + } + } + +Note that when using annotations you have to apply the +@HasLifecycleCallbacks marker annotation on the document class. + +Listening to Lifecycle Events +----------------------------- + +Lifecycle event listeners are much more powerful than the simple +lifecycle callbacks that are defined on the document classes. They +allow to implement re-usable behaviours between different document +classes, yet require much more detailed knowledge about the inner +workings of the DocumentManager and UnitOfWork. Please read the +*Implementing Event Listeners* section carefully if you are trying +to write your own listener. + +To register an event listener you have to hook it into the +EventManager that is passed to the DocumentManager factory: + +.. code-block:: php + + addEventListener(array(Events::preUpdate), new MyEventListener()); + $eventManager->addEventSubscriber(new MyEventSubscriber()); + + $documentManager = DocumentManager::create($mongo, $config, $eventManager); + +You can also retrieve the event manager instance after the +DocumentManager was created: + +.. code-block:: php + + getEventManager()->addEventListener(array(Events::preUpdate), new MyEventListener()); + $documentManager->getEventManager()->addEventSubscriber(new MyEventSubscriber()); + +Implementing Event Listeners +---------------------------- + +This section explains what is and what is not allowed during +specific lifecycle events of the UnitOfWork. Although you get +passed the DocumentManager in all of these events, you have to +follow this restrictions very carefully since operations in the +wrong event may produce lots of different errors, such as +inconsistent data and lost updates/persists/removes. + +prePersist +~~~~~~~~~~ + +Listen to the ``prePersist`` event: + +.. code-block:: php + + getEventManager(); + $evm->addEventListener(Events::prePersist, $test); + +Define the ``EventTest`` class: + +.. code-block:: php + + getDocument(); + $document->setSomething(); + } + } + +preLoad +~~~~~~~ + +.. code-block:: php + + getEventManager(); + $evm->addEventListener(Events::preLoad, $test); + +Define the ``EventTest`` class with a ``preLoad()`` method: + +.. code-block:: php + + getData(); + // do something + } + } + +postLoad +~~~~~~~~ + +.. code-block:: php + + getEventManager(); + $evm->addEventListener(Events::postLoad, $test); + +Define the ``EventTest`` class with a ``postLoad()`` method: + +.. code-block:: php + + getDocument(); + // do something + } + } + +preRemove +~~~~~~~~~ + +.. code-block:: php + + getEventManager(); + $evm->addEventListener(Events::preRemove, $test); + +Define the ``EventTest`` class with a ``preRemove()`` method: + +.. code-block:: php + + getDocument(); + // do something + } + } + +preFlush +~~~~~~~~ + +.. code-block:: php + + getEventManager(); + $evm->addEventListener(Events::preFlush, $test); + +Define the ``EventTest`` class with a ``preFlush()`` method: + +.. code-block:: php + + getDocumentManager(); + $uow = $dm->getUnitOfWork(); + // do something + } + } + +onFlush +~~~~~~~ + +.. code-block:: php + + getEventManager(); + $evm->addEventListener(Events::onFlush, $test); + +Define the ``EventTest`` class with a ``onFlush()`` method: + +.. code-block:: php + + getDocumentManager(); + $uow = $dm->getUnitOfWork(); + // do something + } + } + +postFlush +~~~~~~~~~ + +.. code-block:: php + + getEventManager(); + $evm->addEventListener(Events::postFlush, $test); + +Define the ``EventTest`` class with a ``postFlush()`` method: + +.. code-block:: php + + getDocumentManager(); + $uow = $dm->getUnitOfWork(); + // do something + } + } + +preUpdate +~~~~~~~~~ + +.. code-block:: php + + getEventManager(); + $evm->addEventListener(Events::preUpdate, $test); + +Define the ``EventTest`` class with a ``preUpdate()`` method: + +.. code-block:: php + + getDocument(); + $document->setSomething(); + $dm = $eventArgs->getDocumentManager(); + $class = $dm->getClassMetadata(get_class($document)); + $dm->getUnitOfWork()->recomputeSingleDocumentChangeSet($class, $document); + } + } + +.. note:: + + If you modify a document in the preUpdate event you must call ``recomputeSingleDocumentChangeSet`` + for the modified document in order for the changes to be persisted. + +onClear +~~~~~~~ + +.. code-block:: php + + getEventManager(); + $evm->addEventListener(Events::onClear, $test); + +Define the ``EventTest`` class with a ``onClear()`` method: + +.. code-block:: php + + getDocumentClass(); + $dm = $eventArgs->getDocumentManager(); + $uow = $dm->getUnitOfWork(); + + // Check if event clears all documents. + if ($eventArgs->clearsAllDocuments()) { + // do something + } + // do something + } + } + +documentNotFound +~~~~~~~~~~~~~~~~ + +.. code-block:: php + + getEventManager(); + $evm->addEventListener(Events::documentNotFound, $test); + +Define the ``EventTest`` class with a ``documentNotFound()`` method: + +.. code-block:: php + + getObject(); + $identifier = $eventArgs->getIdentifier(); + // do something + // To prevent the documentNotFound exception from being thrown, call the disableException() method: + $eventArgs->disableException(); + } + } + + +postUpdate, postRemove, postPersist +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +.. code-block:: php + + getEventManager(); + $evm->addEventListener(Events::postUpdate, $test); + $evm->addEventListener(Events::postRemove, $test); + $evm->addEventListener(Events::postPersist, $test); + +Define the ``EventTest`` class with a ``postUpdate()``, ``postRemove()`` and ``postPersist()`` method: + +.. code-block:: php + + getEventManager(); + $evm->addEventListener(Events::postCollectionLoad, $test); + +Define the ``EventTest`` class with a ``postCollectionLoad()`` method: + +.. code-block:: php + + getCollection(); + if ($collection instanceof \Malarzm\Collections\DiffableCollection) { + $collection->snapshot(); + } + } + } + + +Load ClassMetadata Event +------------------------ + +When the mapping information for a document is read, it is +populated in to a ``ClassMetadata`` instance. You can hook in to +this process and manipulate the instance with the ``loadClassMetadata`` event: + +.. code-block:: php + + getMetadataFactory(); + $evm = $dm->getEventManager(); + $evm->addEventListener(Events::loadClassMetadata, $test); + + class EventTest + { + public function loadClassMetadata(\Doctrine\ODM\MongoDB\Event\LoadClassMetadataEventArgs $eventArgs) + { + $classMetadata = $eventArgs->getClassMetadata(); + $fieldMapping = array( + 'fieldName' => 'about', + 'type' => 'string' + ); + $classMetadata->mapField($fieldMapping); + } + } diff --git a/build.docset/Contents/Resources/Documents/_sources/reference/filters.rst.txt b/build.docset/Contents/Resources/Documents/_sources/reference/filters.rst.txt new file mode 100644 index 0000000..e3dce70 --- /dev/null +++ b/build.docset/Contents/Resources/Documents/_sources/reference/filters.rst.txt @@ -0,0 +1,93 @@ +.. _filters: + +Filters +======= + +Doctrine features a filter system that allows the developer to add additional +criteria to queries, regardless of where the query is generated within the +application (e.g. from a query builder, loading referenced documents). This is +useful for excluding documents at a low level, to ensure that they are neither +returned from MongoDB nor hydrated by ODM. + +Example filter class +-------------------- + +Throughout this document, the example ``MyLocaleFilter`` class will be used to +illustrate how the filter feature works. A filter class must extend the base +``Doctrine\ODM\MongoDB\Query\Filter\BsonFilter`` class and implement the +``addFilterCriteria()`` method. This method receives ``ClassMetadata`` and is +invoked whenever a query is prepared for any class. Since filters are typically +designed with a specific class or interface in mind, ``addFilterCriteria()`` +will frequently start by checking ``ClassMetadata`` and returning immediately if +it is not supported. + +Parameters for the query should be set on the filter object by calling the +``BsonFilter::setParameter()`` method. Within the filter class, parameters +should be accessed via ``BsonFilter::getParameter()``. + +.. code-block:: php + + reflClass->implementsInterface('LocaleAware')) { + return array(); + } + + return array('locale' => $this->getParameter('locale')); + } + } + +Configuration +------------- +Filter classes are added to the configuration as following: + +.. code-block:: php + + addFilter('locale', '\Vendor\Filter\MyLocaleFilter'); + +The ``Configuration#addFilter()`` method takes a name for the filter and the +name of the filter class, which will be constructed as necessary. + +An optional third parameter may be used to set parameters at configuration time: + +.. code-block:: php + + addFilter('locale', '\Vendor\Filter\MyLocaleFilter', array('locale' => 'en')); + +Disabling/Enabling Filters and Setting Parameters +------------------------------------------------- + +Filters can be disabled and enabled via the ``FilterCollection``, which is +stored in the ``DocumentManager``. The ``FilterCollection#enable($name)`` method +may be used to enabled and return a filter, after which you may set parameters. + +.. code-block:: php + + getFilterCollection()->enable("locale"); + $filter->setParameter('locale', array('$in' => array('en', 'fr')); + + // Disable the filter (perhaps temporarily to run an unfiltered query) + $filter = $dm->getFilterCollection()->disable("locale"); + +.. warning:: + + Disabling and enabling filters has no effect on managed documents. If you + want to refresh or reload an object after having modified a filter or the + FilterCollection, then you should clear the DocumentManager and re-fetch + your documents so the new filtering rules may be applied. diff --git a/build.docset/Contents/Resources/Documents/_sources/reference/find-and-update.rst.txt b/build.docset/Contents/Resources/Documents/_sources/reference/find-and-update.rst.txt new file mode 100644 index 0000000..8f9dfc2 --- /dev/null +++ b/build.docset/Contents/Resources/Documents/_sources/reference/find-and-update.rst.txt @@ -0,0 +1,84 @@ +Find and Modify +=============== + +.. note:: + + From MongoDB.org: + + MongoDB supports a "find, modify, and return" command. This command + can be used to atomically modify a document (at most one) and + return it. Note that, by default, the document returned will not + include the modifications made on the update. + +Doctrine fully integrates the find and modify functionality to the +query builder object so you can easily run these types of queries! + +Update +------ + +For example you can update a job and return it: + +.. code-block:: php + + createQueryBuilder('Job') + // Find the job + ->findAndUpdate() + ->field('in_progress')->equals(false) + ->sort('priority', 'desc') + + // Update found job + ->field('started')->set(new \MongoDate()) + ->field('in_progress')->set(true) + ->getQuery() + ->execute(); + +If you want to update a job and return the new document you can +call the ``returnNew()`` method. + +Here is an example where we return the new updated job document: + +.. code-block:: php + + createQueryBuilder('Job') + // Find the job + ->findAndUpdate() + ->returnNew() + ->field('in_progress')->equals(false) + ->sort('priority', 'desc') + + // Update found job + ->field('started')->set(new \MongoDate()) + ->field('in_progress')->set(true) + ->getQuery() + ->execute(); + +The returned ``$job`` will be a managed ``Job`` instance with the +``started`` and ``in_progress`` fields updated. + +Remove +------ + +You can also remove a document and return it: + +.. code-block:: php + + createQueryBuilder('Job') + ->findAndRemove() + ->sort('priority', 'desc') + ->getQuery() + ->execute(); + +You can read more about the find and modify functionality on the +`MongoDB website `_. + +.. note:: + + If you don't need to return the document, you can use just run a normal update which can + affect multiple documents, as well. For multiple update to happen you need to use + ``->updateMany()`` method of the builder (or ``update()->multiple()`` combination that + was deprecated in version 1.2). diff --git a/build.docset/Contents/Resources/Documents/_sources/reference/geospatial-queries.rst.txt b/build.docset/Contents/Resources/Documents/_sources/reference/geospatial-queries.rst.txt new file mode 100644 index 0000000..fd22ab9 --- /dev/null +++ b/build.docset/Contents/Resources/Documents/_sources/reference/geospatial-queries.rst.txt @@ -0,0 +1,141 @@ +Geospatial Queries +================== + +You can execute some special queries when using geospatial indexes +like checking for documents within a rectangle or circle. + +Mapping +------- + +First, setup some documents like the following: + +.. configuration-block:: + + .. code-block:: php + + + + + + + + .. code-block:: yaml + + indexes: + coordinates: + keys: + coordinates: 2d + +Near Query +---------- + +Now you can execute queries against these documents like the +following. Check for the 10 nearest cities to a given longitude +and latitude with the ``near($longitude, $latitude)`` method: + +.. code-block:: php + + dm->createQuery('City') + ->field('coordinates')->near(-120, 40) + ->execute(); + +.. _geonear: + +GeoNear Command +--------------- + +You can also execute the `geoNear command`_ using the query builder's +``geoNear()`` method. Additional builder methods can be used to set options for +this command (e.g. ``distanceMultipler()``, ``maxDistance()``, ``spherical()``). +Unlike ``near()``, which uses a query operator, ``geoNear()`` does not require +the location field to be specified in the builder, as MongoDB will use the +single geospatial index for the collection. Documents will be returned in order +of nearest to farthest. + +.. code-block:: php + + dm->createQuery('City') + ->geoNear(-120, 40) + ->spherical(true) + // Convert radians to kilometers (use 3963.192 for miles) + ->distanceMultiplier(6378.137) + ->execute(); + +If the model has a property mapped with :ref:`@Distance `, +that field will be set with the calculated distance between the document and the +query coordinates. + +.. code-block:: php + + name, $city->distance); + } + +.. _`geoNear command`: https://docs.mongodb.com/manual/reference/command/geoNear/ + +Within Box +---------- + +You can also query for cities within a given rectangle using the +``withinBox($x1, $y1, $x2, $y2)`` method: + +.. code-block:: php + + dm->createQuery('City') + ->field('coordinates')->withinBox(41, 41, 72, 72) + ->execute(); + +Within Center +------------- + +In addition to boxes you can check for cities within a circle using +the ``withinCenter($x, $y, $radius)`` method: + +.. code-block:: php + + dm->createQuery('City') + ->field('coordinates')->withinCenter(50, 50, 20) + ->execute(); diff --git a/build.docset/Contents/Resources/Documents/_sources/reference/indexes.rst.txt b/build.docset/Contents/Resources/Documents/_sources/reference/indexes.rst.txt new file mode 100644 index 0000000..6c527dd --- /dev/null +++ b/build.docset/Contents/Resources/Documents/_sources/reference/indexes.rst.txt @@ -0,0 +1,549 @@ +Indexes +======= + +Working with indexes in the MongoDB ODM is pretty straight forward. +You can have multiple indexes, they can consist of multiple fields, +they can be unique and you can give them an order. In this chapter +we'll show you examples of indexes using annotations. + +First here is an example where we put an index on a single +property: + +.. configuration-block:: + + .. code-block:: php + + + + .. code-block:: yaml + + fields: + username: + index: true + + +Index Options +------------- + +You can customize the index with some additional options: + +- + **name** - The name of the index. This can be useful if you are + indexing many keys and Mongo complains about the index name being + too long. +- + **dropDups** - If a unique index is being created and duplicate + values exist, drop all but one duplicate value. +- + **background** - Create indexes in the background while other + operations are taking place. By default, index creation happens + synchronously. If you specify TRUE with this option, index creation + will be asynchronous. +- + **safe** - You can specify a boolean value for checking if the + index creation succeeded. The driver will throw a + MongoCursorException if index creation failed. +- + **expireAfterSeconds** - If you specify this option then the associated + document will be automatically removed when the provided time (in seconds) + has passed. This option is bound to a number of limitations, which + are documented at https://docs.mongodb.com/manual/tutorial/expire-data/. +- + **order** - The order of the index (asc or desc). +- + **unique** - Create a unique index. +- + **sparse** - Create a sparse index. If a unique index is being created + the sparse option will allow duplicate null entries, but the field must be + unique otherwise. +- + **partialFilterExpression** - Create a partial index. Partial indexes only + index the documents in a collection that meet a specified filter expression. + By indexing a subset of the documents in a collection, partial indexes have + lower storage requirements and reduced performance costs for index creation + and maintenance. This feature was introduced with MongoDB 3.2 and is not + available on older versions. + +Unique Index +------------ + +.. configuration-block:: + + .. code-block:: php + + + + .. code-block:: yaml + + fields: + username: + index: true + unique: true + order: true + +For your convenience you can quickly specify a unique index with +``@UniqueIndex``: + +.. configuration-block:: + + .. code-block:: php + + + + .. code-block:: yaml + + fields: + username: + unique: true + order: true + +If you want to specify an index that consists of multiple fields +you can specify them on the class doc block: + +.. configuration-block:: + + .. code-block:: php + + + + + + + + + + + + .. code-block:: yaml + + Documents\User: + indexes: + usernameacctid: + options: + unique: true + keys: + accountId: + order: asc + username: + order: asc + +To specify multiple indexes you must use the ``@Indexes`` +annotation: + +.. configuration-block:: + + .. code-block:: php + + + + + + + + + + + + + + + + .. code-block:: yaml + + Documents\User: + indexes: + accountId: + keys: + accountId: + order: asc + username: + keys: + username: + order: asc + +Embedded Indexes +---------------- + +You can specify indexes on embedded documents just like you do on normal documents. When Doctrine +creates the indexes for a document it will also create all the indexes from its mapped embedded +documents. + +.. code-block:: php + + ensureIndexes(); + +It will create the indexes from the ``BlogPost`` document but will also create the indexes that are +defined on the ``Comment`` embedded document. The following would be executed on the underlying MongoDB +database: + +.. + + db.BlogPost.ensureIndexes({ 'slug' : 1, 'comments.date': 1 }) + +Also, for your convenience you can create the indexes for your mapped documents from the +:doc:`console `: + +.. + + $ php mongodb.php mongodb:schema:create --index + +.. note:: + + If you are :ref:`mixing document types ` for your + embedded documents, ODM will not be able to create indexes for their fields + unless you specify a discriminator map for the :ref:`embed-one ` + or :ref:`embed-many ` relationship. + +Geospatial Indexing +------------------- + +You can specify a geospatial index by just specifying the keys and +options structures manually: + +.. configuration-block:: + + .. code-block:: php + + + + + + + + .. code-block:: yaml + + indexes: + coordinates: + keys: + coordinates: 2d + +Partial indexes +--------------- + +You can create a partial index by adding a ``partialFilterExpression`` to any +index. + +.. configuration-block:: + + .. code-block:: php + + + + + + + + + + + .. code-block:: yaml + + indexes: + partialIndexExample: + keys: + coordinates: asc + options: + partialFilterExpression: + version: { $gt: 1 } + +.. note:: + + Partial indexes are only available with MongoDB 3.2 or newer. For more + information on partial filter expressions, read the + `official MongoDB documentation `_. + +Requiring Indexes +----------------- + +.. note:: + Requiring Indexes was deprecated in 1.2 and will be removed in 2.0. + +Sometimes you may want to require indexes for all your queries to ensure you don't let stray unindexed queries +make it to the database and cause performance problems. + + +.. configuration-block:: + + .. code-block:: php + + + + + + + + + + + + + + + + + .. code-block:: yaml + + # Documents.Place.dcm.yml + + Documents\Place: + fields: + id: + id: true + city: + type: string + indexes: + index1: + keys: + city: asc + +When you run queries it will check that it is indexed and throw an exception if it is not indexed: + +.. code-block:: php + + createQueryBuilder('Documents\Place') + ->field('city')->equals('Nashville'); + $query = $qb->getQuery(); + $places = $query->execute(); + +When you execute the query it will throw an exception if `city` was not indexed in the database. You can control +whether or not an exception will be thrown by using the `requireIndexes()` method: + +.. code-block:: php + + requireIndexes(false); + +You can also check if the query is indexed and with the `isIndexed()` method and use it to display your +own notification when a query is unindexed: + +.. code-block:: php + + getQuery(); + if (!$query->isIndexed()) { + $notifier->addError('Cannot execute queries that are not indexed.'); + } + +If you don't want to require indexes for all queries you can set leave `requireIndexes` as false and control +it on a per query basis: + +.. code-block:: php + + requireIndexes(true); + $query = $qb->getQuery(); + $results = $query->execute(); diff --git a/build.docset/Contents/Resources/Documents/_sources/reference/inheritance-mapping.rst.txt b/build.docset/Contents/Resources/Documents/_sources/reference/inheritance-mapping.rst.txt new file mode 100644 index 0000000..1f5fec3 --- /dev/null +++ b/build.docset/Contents/Resources/Documents/_sources/reference/inheritance-mapping.rst.txt @@ -0,0 +1,280 @@ +.. _inheritance_mapping: + +Inheritance Mapping +=================== + +Doctrine currently offers two supported methods of inheritance: +:ref:`single collection ` and +:ref:`collection per class ` inheritance. + +Mapped Superclasses +------------------- + +A mapped superclass is an abstract or concrete class that provides mapping +information for its subclasses, but is not itself a document. Typically, the +purpose of such a mapped superclass is to define state and mapping information +that is common to multiple document classes. + +Just like non-mapped classes, mapped superclasses may appear in the middle of +an otherwise mapped inheritance hierarchy (through +:ref:`single collection ` or +:ref:`collection per class `) inheritance. + +.. note:: + + A mapped superclass cannot be a document and is not queryable. + +Example: + +.. configuration-block:: + + .. code-block:: php + + + + + + + + .. code-block:: yaml + + Documents\BaseDocument: + type: mappedSuperclass + +.. _single_collection_inheritance: + +Single Collection Inheritance +----------------------------- + +In single collection inheritance, each document is stored in a single collection +and a discriminator field is used to distinguish one document type from another. + +Simple example: + +.. configuration-block:: + + .. code-block:: php + + + + + + + + + + + + + + + + + + + .. code-block:: yaml + + Documents\Person: + type: document + inheritanceType: SINGLE_COLLECTION + discriminatorField: type + discriminatorMap: + person: Person + employee: Employee + +The discriminator value allows Doctrine to infer the class name to instantiate +when hydrating a document. If a discriminator map is used, the discriminator +value will be used to look up the class name in the map. + +Now, if we query for a Person and its discriminator value is ``employee``, we +would get an Employee instance back: + +.. code-block:: php + + persist($employee); + $dm->flush(); + + $employee = $dm->find('Person', $employee->getId()); // instanceof Employee + +Even though we queried for a Person, Doctrine will know to return an Employee +instance because of the discriminator map! + +If your document structure has changed and you've added discriminators after +already having a bunch of documents, you can specify a default value for the +discriminator field: + +.. configuration-block:: + + .. code-block:: php + + + + + + + + + + + + + + + + + + + + .. code-block:: yaml + + Documents\Person: + type: document + inheritanceType: SINGLE_COLLECTION + discriminatorField: type + defaultDiscriminatorValue: person + discriminatorMap: + person: Person + employee: Employee + +.. _collection_per_class_inheritance: + +Collection Per Class Inheritance +-------------------------------- + +With collection per class inheritance, each document is stored in its own +collection and contains all inherited fields: + +.. configuration-block:: + + .. code-block:: php + + + + + + + + + + + + + + .. code-block:: yaml + + Documents\Person: + type: document + inheritanceType: COLLECTION_PER_CLASS + +A discriminator is not needed with this type of inheritance since the data is +separated in different collections. diff --git a/build.docset/Contents/Resources/Documents/_sources/reference/introduction.rst.txt b/build.docset/Contents/Resources/Documents/_sources/reference/introduction.rst.txt new file mode 100644 index 0000000..2d1f295 --- /dev/null +++ b/build.docset/Contents/Resources/Documents/_sources/reference/introduction.rst.txt @@ -0,0 +1,494 @@ +Introduction +============ + +Doctrine MongoDB Object Document Mapper is built for PHP 5.3.0+ and +provides transparent persistence for PHP objects to the popular `MongoDB`_ database by `10gen`_. + +Features Overview +----------------- + +- Transparent persistence. +- Map one or many embedded documents. +- Map one or many referenced documents. +- Create references between documents in different databases. +- Map documents with Annotations, XML, YAML or plain old PHP code. +- Documents can be stored on the `MongoGridFS `_. +- Collection per class(concrete) and single collection inheritance supported. +- Map your Doctrine 2 ORM Entities to the ODM and use mixed data stores. +- Inserts are performed using `MongoCollection::batchInsert() `_ +- Updates are performed using atomic operators. + +Here is a quick example of some PHP object documents that demonstrates a few of the features: + +.. code-block:: php + + id; } + + public function getChanges() { return $this->changes; } + public function incrementChanges() { $this->changes++; } + + public function getNotes() { return $this->notes; } + public function addNote($note) { $this->notes[] = $note; } + + public function getName() { return $this->name; } + public function setName($name) { $this->name = $name; } + + public function getSalary() { return $this->salary; } + public function setSalary($salary) { $this->salary = (int) $salary; } + + public function getStarted() { return $this->started; } + public function setStarted(DateTime $started) { $this->started = $started; } + + public function getLeft() { return $this->left; } + public function setLeft(DateTime $left) { $this->left = $left; } + + public function getAddress() { return $this->address; } + public function setAddress(Address $address) { $this->address = $address; } + } + + /** @ODM\Document */ + class Employee extends BaseEmployee + { + /** @ODM\ReferenceOne(targetDocument="Documents\Manager") */ + private $manager; + + public function getManager() { return $this->manager; } + public function setManager(Manager $manager) { $this->manager = $manager; } + } + + /** @ODM\Document */ + class Manager extends BaseEmployee + { + /** @ODM\ReferenceMany(targetDocument="Documents\Project") */ + private $projects; + + public __construct() { $this->projects = new ArrayCollection(); } + + public function getProjects() { return $this->projects; } + public function addProject(Project $project) { $this->projects[] = $project; } + } + + /** @ODM\EmbeddedDocument */ + class Address + { + /** @ODM\Field(type="string") */ + private $address; + + /** @ODM\Field(type="string") */ + private $city; + + /** @ODM\Field(type="string") */ + private $state; + + /** @ODM\Field(type="string") */ + private $zipcode; + + public function getAddress() { return $this->address; } + public function setAddress($address) { $this->address = $address; } + + public function getCity() { return $this->city; } + public function setCity($city) { $this->city = $city; } + + public function getState() { return $this->state; } + public function setState($state) { $this->state = $state; } + + public function getZipcode() { return $this->zipcode; } + public function setZipcode($zipcode) { $this->zipcode = $zipcode; } + } + + /** @ODM\Document */ + class Project + { + /** @ODM\Id */ + private $id; + + /** @ODM\Field(type="string") */ + private $name; + + public function __construct($name) { $this->name = $name; } + + public function getId() { return $this->id; } + + public function getName() { return $this->name; } + public function setName($name) { $this->name = $name; } + } + +Now those objects can be used just like you weren't using any +persistence layer at all and can be persisted transparently by +Doctrine: + +.. code-block:: php + + setName('Employee'); + $employee->setSalary(50000); + $employee->setStarted(new DateTime()); + + $address = new Address(); + $address->setAddress('555 Doctrine Rd.'); + $address->setCity('Nashville'); + $address->setState('TN'); + $address->setZipcode('37209'); + $employee->setAddress($address); + + $project = new Project('New Project'); + $manager = new Manager(); + $manager->setName('Manager'); + $manager->setSalary(100000); + $manager->setStarted(new DateTime()); + $manager->addProject($project); + + $dm->persist($employee); + $dm->persist($address); + $dm->persist($project); + $dm->persist($manager); + $dm->flush(); + +The above would insert the following: + +:: + + Array + ( + [000000004b0a33690000000001c304c6] => Array + ( + [name] => New Project + ) + + ) + Array + ( + [000000004b0a33660000000001c304c6] => Array + ( + [changes] => 0 + [notes] => Array + ( + ) + + [name] => Manager + [salary] => 100000 + [started] => MongoDate Object + ( + [sec] => 1275265048 + [usec] => 0 + ) + + [projects] => Array + ( + [0] => Array + ( + [$ref] => projects + [$id] => 4c0300188ead0e947a000000 + [$db] => my_db + ) + + ) + + ) + + ) + Array + ( + [000000004b0a336a0000000001c304c6] => Array + ( + [changes] => 0 + [notes] => Array + ( + ) + + [name] => Employee + [salary] => 50000 + [started] => MongoDate Object + ( + [sec] => 1275265048 + [usec] => 0 + ) + + [address] => Array + ( + [address] => 555 Doctrine Rd. + [city] => Nashville + [state] => TN + [zipcode] => 37209 + ) + + ) + + ) + +If we update a property and call ``->flush()`` again we'll get an +efficient update query using the atomic operators: + +.. code-block:: php + + setSalary(200000); + $manager->addNote('Gave user 100k a year raise'); + $manager->incrementChanges(2); + $manager->addProject($newProject); + + $dm->persist($newProject); + $dm->flush(); + +The above could would produce an update that looks something like +this: + +:: + + Array + ( + [$inc] => Array + ( + [changes] => 2 + ) + + [$pushAll] => Array + ( + [notes] => Array + ( + [0] => Gave user 100k a year raise + ) + + [projects] => Array + ( + [0] => Array + ( + [$ref] => projects + [$id] => 4c0310718ead0e767e030000 + [$db] => my_db + ) + + ) + + ) + + [$set] => Array + ( + [salary] => 200000 + ) + + ) + +This is a simple example, but it demonstrates well that you can +transparently persist PHP objects while still utilizing the +atomic operators for updating documents! Continue reading to learn +how to get the Doctrine MongoDB Object Document Mapper setup and +running! + +Setup +----- + +Before we can begin, we'll need to install the Doctrine MongoDB ODM library and +its dependencies. The easiest way to do this is with `Composer`_: + +:: + + $ composer require "doctrine/mongodb-odm" + +Once ODM and its dependencies have been downloaded, we can begin by creating a +``bootstrap.php`` file in our project's root directory, where Composer's +``vendor/`` directory also resides. Let's start by importing some of the classes +we'll use: + +.. code-block:: php + + add('Documents', __DIR__); + +Ultimately, our application will utilize ODM through its ``DocumentManager`` +class. Before we can instantiate a ``DocumentManager``, we need to construct the +``Connection`` and ``Configuration`` objects required by its factory method: + +.. code-block:: php + + setProxyDir(__DIR__ . '/Proxies'); + $config->setProxyNamespace('Proxies'); + $config->setHydratorDir(__DIR__ . '/Hydrators'); + $config->setHydratorNamespace('Hydrators'); + $config->setDefaultDB('doctrine_odm'); + +The easiest way to define mappings for our document classes is with annotations. +We'll need to specify an annotation driver in our configuration (with one or +more paths) and register the annotations for the driver: + +.. code-block:: php + + setMetadataDriverImpl(AnnotationDriver::create(__DIR__ . '/Documents')); + + AnnotationDriver::registerAnnotationClasses(); + +At this point, we have everything necessary to construct a ``DocumentManager``: + +.. code-block:: php + + add('Documents', __DIR__); + + $connection = new Connection(); + + $config = new Configuration(); + $config->setProxyDir(__DIR__ . '/Proxies'); + $config->setProxyNamespace('Proxies'); + $config->setHydratorDir(__DIR__ . '/Hydrators'); + $config->setHydratorNamespace('Hydrators'); + $config->setDefaultDB('doctrine_odm'); + $config->setMetadataDriverImpl(AnnotationDriver::create(__DIR__ . '/Documents')); + + AnnotationDriver::registerAnnotationClasses(); + + $dm = DocumentManager::create($connection, $config); + +That is it! Your ``DocumentManager`` instance is ready to be used! + +Using PHP 7 +----------- + +You can use Doctrine MongoDB ODM with PHP 7, but there are a few extra steps during +the installation. Since the legacy driver (referred to as ``ext-mongo``) is not +available on PHP 7, you will need the new driver (``ext-mongodb``) installed and +use a polyfill to provide the API of the legacy driver. + +To do this, you have to require ``alcaeus/mongo-php-adapter`` before adding a composer +dependency to ODM. To do this, run the following command: + +:: + + $ composer require "alcaeus/mongo-php-adapter" + +Next, manually add a ``provide`` section to your ``composer.json``: + +.. code-block:: json + + "provide": { + "ext-mongo": "1.6.14" + } + +This section needs to be added to work around a composer issue with libraries +providing platform packages (such as ``ext-mongo``). Now, you may install ODM as +described above: + +:: + + $ composer require "doctrine/mongodb-odm" + +.. _MongoDB: https://www.mongodb.com/ +.. _10gen: http://www.10gen.com +.. _Composer: http://getcomposer.org/ diff --git a/build.docset/Contents/Resources/Documents/_sources/reference/logging.rst.txt b/build.docset/Contents/Resources/Documents/_sources/reference/logging.rst.txt new file mode 100644 index 0000000..c150a1b --- /dev/null +++ b/build.docset/Contents/Resources/Documents/_sources/reference/logging.rst.txt @@ -0,0 +1,31 @@ +Logging +======= + +If you want to turn on logging and receive information about +queries made to the database you can do so on your +``Doctrine\ODM\MongoDB\Configuration`` instance: + +.. code-block:: php + + setLoggerCallable(function(array $log) { + print_r($log); + }); + +You can register any PHP callable and it will be notified with a +single argument that is an array of information about the query +being sent to the database. + +Just like the anonymous function above, you could pass an array +with a object instance and a method to call: + +.. code-block:: php + + setLoggerCallable(array($obj, 'method')); \ No newline at end of file diff --git a/build.docset/Contents/Resources/Documents/_sources/reference/map-reduce.rst.txt b/build.docset/Contents/Resources/Documents/_sources/reference/map-reduce.rst.txt new file mode 100644 index 0000000..a6115f9 --- /dev/null +++ b/build.docset/Contents/Resources/Documents/_sources/reference/map-reduce.rst.txt @@ -0,0 +1,117 @@ +Map Reduce +========== + +The Doctrine MongoDB ODM fully supports the `map reduce`_ functionality via its +:doc:`Query Builder API `. + +.. note:: + + From the MongoDB manual: + + Map-reduce is a data processing paradigm for condensing large volumes of + data into useful aggregated results. In MongoDB, map-reduce operations use + custom JavaScript functions to map, or associate, values to a key. If a key + has multiple values mapped to it, the operation reduces the values for the + key to a single object. + +Imagine a situation where you had an application with a document +named ``Event`` and it was related to a ``User`` document: + +.. code-block:: php + + createQueryBuilder('Documents\User') + ->field('type') + ->equals('sale') + ->map('function() { emit(this.user.$id, 1); }') + ->reduce('function(k, vals) { + var sum = 0; + for (var i in vals) { + sum += vals[i]; + } + return sum; + }'); + $query = $qb->getQuery(); + $results = $query->execute(); + + foreach ($results as $user) { + printf("User %s had %d sale(s).\n", $user['_id'], $user['value']); + } + +.. note:: + + The query builder also has a ``finalize()`` method, which may be used to + specify a `finalize function`_ to be executed after the reduce step. + +When using map reduce with Doctrine, the results are not hydrated into objects. +Instead, the raw results are returned directly from MongoDB. + +The preceding example is equivalent to executing the following command via the +PHP driver directly: + +.. code-block:: php + + selectDB('my_db'); + + $map = new MongoCode('function() { emit(this.user.$id, 1); }'); + $reduce = new MongoCode('function(k, vals) { + var sum = 0; + for (var i in vals) { + sum += vals[i]; + } + return sum; + }'); + + $result = $db->command(array( + 'mapreduce' => 'events', + 'map' => $map, + 'reduce' => $reduce, + 'query' => array('type' => 'sale'), + )); + + foreach ($result['results'] as $user) { + printf("User %s had %d sale(s).\n", $user['_id'], $user['value']); + } + +.. _`map reduce`: https://docs.mongodb.com/manual/core/map-reduce/ +.. _`finalize function`: https://docs.mongodb.com/master/reference/command/mapReduce/#mapreduce-finalize-cmd diff --git a/build.docset/Contents/Resources/Documents/_sources/reference/metadata-drivers.rst.txt b/build.docset/Contents/Resources/Documents/_sources/reference/metadata-drivers.rst.txt new file mode 100644 index 0000000..9723364 --- /dev/null +++ b/build.docset/Contents/Resources/Documents/_sources/reference/metadata-drivers.rst.txt @@ -0,0 +1,196 @@ +Metadata Drivers +================ + +The heart of an object mapper is the mapping information +that glues everything together. It instructs the DocumentManager how +it should behave when dealing with the different documents. + +Core Metadata Drivers +--------------------- + +Doctrine provides a few different ways for you to specify your +metadata: + +- **XML files** (XmlDriver) +- **Class DocBlock Annotations** (AnnotationDriver) +- **YAML files** (YamlDriver) +- **PHP Code in files or static functions** (PhpDriver) + +Something important to note about the above drivers is they are all +an intermediate step to the same end result. The mapping +information is populated to ``Doctrine\ODM\MongoDB\Mapping\ClassMetadata`` +instances. So in the end, Doctrine only ever has to work with the +API of the ``ClassMetadata`` class to get mapping information for +a document. + +.. note:: + + The populated ``ClassMetadata`` instances are also cached + so in a production environment the parsing and populating only ever + happens once. You can configure the metadata cache implementation + using the ``setMetadataCacheImpl()`` method on the + ``Doctrine\ODM\MongoDB\Configuration`` class: + + .. code-block:: php + + getConfiguration()->setMetadataCacheImpl(new ApcCache()); + +If you want to use one of the included core metadata drivers you +just need to configure it. All the drivers are in the +``Doctrine\ODM\MongoDB\Mapping\Driver`` namespace: + +.. code-block:: php + + getConfiguration()->setMetadataDriverImpl($driver); + +Implementing Metadata Drivers +----------------------------- + +In addition to the included metadata drivers you can very easily +implement your own. All you need to do is define a class which +implements the ``Driver`` interface: + +.. code-block:: php + + _loadMappingFile($file); + + // populate ClassMetadataInfo instance from $data + } + + /** + * {@inheritdoc} + */ + protected function _loadMappingFile($file) + { + // parse contents of $file and return php data structure + } + } + +.. note:: + + When using the ``AbstractFileDriver`` it requires that you + only have one document defined per file and the file named after the + class described inside where namespace separators are replaced by + periods. So if you have a document named ``Documents\User`` and you + wanted to write a mapping file for your driver above you would need + to name the file ``Documents.User.dcm.ext`` for it to be + recognized. + +Now you can use your ``MyMetadataDriver`` implementation by setting +it with the ``setMetadataDriverImpl()`` method: + +.. code-block:: php + + getConfiguration()->setMetadataDriverImpl($driver); + +ClassMetadata +------------- + +The last piece you need to know and understand about metadata in +Doctrine is the API of the ``ClassMetadata`` classes. You need to +be familiar with them in order to implement your own drivers but +more importantly to retrieve mapping information for a certain +document when needed. + +You have all the methods you need to manually specify the mapping +information instead of using some mapping file to populate it from. +The base ``ClassMetadataInfo`` class is responsible for only data +storage and is not meant for runtime use. It does not require that +the class actually exists yet so it is useful for describing some +document before it exists and using that information to generate for +example the documents themselves. The class ``ClassMetadata`` +extends ``ClassMetadataInfo`` and adds some functionality required +for runtime usage and requires that the PHP class is present and +can be autoloaded. + +You can read more about the API of the ``ClassMetadata`` classes in +the PHP Mapping chapter. + +Getting ClassMetadata Instances +------------------------------- + +If you want to get the ``ClassMetadata`` instance for a document in +your project to programmatically use some mapping information to +generate some HTML or something similar you can retrieve it through +the ``ClassMetadataFactory``: + +.. code-block:: php + + getMetadataFactory(); + $class = $cmf->getMetadataFor('MyDocumentName'); + +Now you can learn about the document and use the data stored in the +``ClassMetadata`` instance to get all mapped fields for example and +iterate over them: + +.. code-block:: php + + fieldMappings as $fieldMapping) { + echo $fieldMapping['fieldName'] . "\n"; + } \ No newline at end of file diff --git a/build.docset/Contents/Resources/Documents/_sources/reference/migrating-schemas.rst.txt b/build.docset/Contents/Resources/Documents/_sources/reference/migrating-schemas.rst.txt new file mode 100644 index 0000000..17db2e2 --- /dev/null +++ b/build.docset/Contents/Resources/Documents/_sources/reference/migrating-schemas.rst.txt @@ -0,0 +1,219 @@ +Migrating Schemas +================= + +Even though MongoDB is schemaless, introducing some kind of object mapper means +that your object definitions become your schema. You may have a situation where +you rename a property in your object model but need to load values from older +documents where the field is still using the former name. While you could use +MongoDB's `$rename`_ operator to migrate everything, sometimes a lazy migration +is preferable. Doctrine offers a few different methods for dealing with this +problem! + +.. note:: + + The features in this chapter were inspired by `Objectify`_, an object mapper + for the Google App Engine datastore. Additional information may be found in + the `Objectify schema migration`_ documentation. + +Renaming a Field +---------------- + +Let's say you have a simple document that starts off with the following fields: + +.. code-block:: php + + firstName, $this->lastName) = explode(' ', $fullName); + } + } + +The annotation is defined with one or a list of field names. During hydration, +these fields will be checked in order and, for each field present, the annotated +method will be invoked with its value as a single argument. Since the +``firstName`` and ``lastName`` fields are mapped, they would then be updated +when the Person was persisted back to MongoDB. + +Unlike lifecycle callbacks, the ``@AlsoLoad`` method annotation does not require +the :ref:`haslifecyclecallbacks` class annotation to be present. + +Moving Fields +------------- + +Migrating your schema can be a difficult task, but Doctrine provides a few +different methods for dealing with it: + +- **@AlsoLoad** - load values from old fields or transform data through methods +- **@NotSaved** - load values into fields without saving them again +- **@PostLoad** - execute code after all fields have been loaded +- **@PrePersist** - execute code before your document gets saved + +Imagine you have some address-related fields on a Person document: + +.. code-block:: php + + street = $street; + $this->city = $city; + } + } + + /** @Document @HasLifecycleCallbacks */ + class Person + { + /** @Id */ + public $id; + + /** @Field(type="string") */ + public $name; + + /** @NotSaved */ + public $street; + + /** @NotSaved */ + public $city; + + /** @EmbedOne(targetDocument="Address") */ + public $address; + + /** @PostLoad */ + public function postLoad() + { + if ($this->street !== null || $this->city !== null) + { + $this->address = new Address($this->street, $this->city); + } + } + } + +Person's ``street`` and ``city`` fields will be hydrated, but not saved. Once +the Person has loaded, the ``postLoad()`` method will be invoked and construct +a new Address object, which is mapped and will be persisted. + +Alternatively, you could defer this migration until the Person is saved: + +.. code-block:: php + + street !== null || $this->city !== null) + { + $this->address = new Address($this->street, $this->city); + } + } + } + +The :ref:`haslifecyclecallbacks` annotation must be present on the class in +which the method is declared for the lifecycle callback to be registered. + +.. _`$rename`: https://docs.mongodb.com/manual/reference/operator/update/rename/ +.. _`Objectify`: https://github.com/objectify/objectify +.. _`Objectify schema migration`: https://github.com/objectify/objectify/wiki/SchemaMigration +.. _`$or`: https://docs.mongodb.com/manual/reference/operator/query/or/ diff --git a/build.docset/Contents/Resources/Documents/_sources/reference/priming-references.rst.txt b/build.docset/Contents/Resources/Documents/_sources/reference/priming-references.rst.txt new file mode 100644 index 0000000..d2c296b --- /dev/null +++ b/build.docset/Contents/Resources/Documents/_sources/reference/priming-references.rst.txt @@ -0,0 +1,168 @@ +Priming References +================== + +Priming references allows you to consolidate database queries when working with +:ref:`one ` and :ref:`many ` reference mappings. +This is useful for avoiding the +`n+1 problem `_ in your application. + +Query Builder +------------- + +Consider the following abbreviated model: + +.. code-block:: php + + createQueryBuilder('User') + ->limit(100); + $query = $qb->getQuery(); + $users = $query->execute(); + + foreach ($users as $user) { + /* PersistentCollection::initialize() will be invoked when we begin + * iterating through the user's accounts. Any accounts not already + * managed by the unit of work will need to be queried. + */ + foreach ($user->getAccounts() as $account) { + // ... + } + } + +In this example, ODM would query the database once for the result set of users +and then, for each user, issue a separate query to load any accounts that are +not already being managed by the unit of work. This could result in as many as +100 additional database queries! + +If we expect to iterate through all users and their accounts, we could optimize +this process by loading all of the referenced accounts with one query. The query +builder's ``prime()`` method allows us to do just that. + +.. code-block:: php + + createQueryBuilder('User') + ->field('accounts')->prime(true) + ->limit(100); + $query = $qb->getQuery(); + + /* After querying for the users, ODM will collect the IDs of all referenced + * accounts and load them with a single additional query. + */ + $users = $query->execute(); + + foreach ($users as $user) { + /* Accounts have already been loaded, so iterating through accounts will + * not query an additional query. + */ + foreach ($user->getAccounts() as $account) { + + } + } + +In this case, priming will allow us to load all users and referenced accounts in +two database queries. If the accounts had used an +:ref:`inheritance mapping `, priming might require several +queries (one per discriminated class name). + +.. note:: + + Priming is also compatible with :ref:`simple references ` + and discriminated references. When priming discriminated references, ODM + will issue one query per distinct class among the referenced document(s). + +.. note:: + + Hydration must be enabled in the query builder for priming to work properly. + Disabling hydration will cause the DBRef to be returned for a referenced + document instead of the hydrated document object. + +Inverse references +------------------ + +.. note:: + + This feature was added in version 1.2. + +When using inverse references (references mapped using ``mappedBy`` or +``repositoryMethod``) you can also enable primers on one-to-many references by +specifying them in the mapping: + +.. code-block:: php + + createQueryBuilder($class->name) + ->field($class->identifier)->in($ids); + + if ( ! empty($hints[Query::HINT_SLAVE_OKAY])) { + $qb->slaveOkay(true); + } + + if ( ! empty($hints[Query::HINT_READ_PREFERENCE])) { + $qb->setReadPreference( + $hints[Query::HINT_READ_PREFERENCE], + $hints[Query::HINT_READ_PREFERENCE_TAGS] + ); + } + + $qb->getQuery()->toArray(); + }; + +Firstly, the callable is passed the ``DocumentManager`` of the main query. This +is necessary to create the query used for priming, and ensures that the results +will become managed in the same scope. The ``ClassMetadata`` argument provides +mapping information for the referenced class as well as its name, which is used +to create the query builder. An array of identifiers follows, which is used to +query for the documents to be primed. Lastly, the ``UnitOfWork`` hints from the +original query are provided so that the priming query can apply them as well. diff --git a/build.docset/Contents/Resources/Documents/_sources/reference/query-builder-api.rst.txt b/build.docset/Contents/Resources/Documents/_sources/reference/query-builder-api.rst.txt new file mode 100644 index 0000000..71518cb --- /dev/null +++ b/build.docset/Contents/Resources/Documents/_sources/reference/query-builder-api.rst.txt @@ -0,0 +1,998 @@ +Query Builder API +================= + +.. role:: math(raw) + :format: html latex + +Querying for documents with Doctrine is just as simple as if you +weren't using Doctrine at all. Of course you always have your +traditional ``find()`` and ``findOne()`` methods but you also have +a ``Query`` object with a fluent API for defining the query that +should be executed. + +The ``Query`` object supports several types of queries + +- FIND +- FIND_AND_UPDATE +- FIND_AND_REMOVE +- INSERT +- UPDATE +- REMOVE +- GROUP +- MAP_REDUCE +- DISTINCT_FIELD +- GEO_LOCATION + +This section will show examples for the different types of queries. + +Finding Documents +----------------- + +You have a few different ways to find documents. You can use the ``find()`` method +to find a document by its identifier: + +.. code-block:: php + + find('User', $id); + +The ``find()`` method is just a convenience shortcut method to: + +.. code-block:: php + + getRepository('User')->find($id); + +.. note:: + + The ``find()`` method checks the local in memory identity map for the document + before querying the database for the document. + +On the ``DocumentRepository`` you have a few other methods for finding documents: + +- ``findBy`` - find documents by an array of criteria +- ``findOneBy`` - find one document by an array of criteria + +.. code-block:: php + + getRepository('User')->findBy(array('type' => 'employee')); + $user = $dm->getRepository('User')->findOneBy(array('username' => 'jwage')); + +Creating a Query Builder +------------------------ + +You can easily create a new ``Query\Builder`` object with the +``DocumentManager::createQueryBuilder()`` method: + +.. code-block:: php + + createQueryBuilder('User'); + +The first and only argument is optional, you can specify it later +with the ``find()``, ``update()`` (deprecated), ``updateOne()``, +``updateMany()`` or ``remove()`` method: + +.. code-block:: php + + createQueryBuilder(); + + // ... + + $qb->find('User'); + +Executing Queries +~~~~~~~~~~~~~~~~~ + +You can execute a query by getting a ``Query`` through the ``getQuery()`` method: + +.. code-block:: php + + createQueryBuilder('User'); + $query = $qb->getQuery(); + +Now you can ``execute()`` that query and it will return a cursor for you to iterate over the results: + +.. code-block:: php + + execute(); + +Debugging Queries +~~~~~~~~~~~~~~~~~ + +While building not complicated queries is really simple sometimes it might be hard to wrap your head +around more sophisticated queries that involves building separate expressions to work properly. If +you are not sure if your the query constructed with Builder is in fact correct you may want to ``debug()`` it + +.. code-block:: php + + createQueryBuilder('User'); + $query = $qb->getQuery(); + $debug = $query->debug(); + +At this point your query is *prepared* - that means ODM done all its job in renaming fields to match their +database name, added discriminator fields, applied filters, created correct references and all other things +you employ ODM to. The array returned by ``->debug()`` is what is passed to the underlying driver for the +query to be performed. + +Eager Cursors +~~~~~~~~~~~~~ + +You can configure queries to return an eager cursor instead of a normal mongodb cursor using the ``Builder#eagerCursor()`` method: + +.. code-block:: php + + createQueryBuilder('User') + ->eagerCursor(true); + $query = $qb->getQuery(); + $cursor = $query->execute(); // instanceof Doctrine\ODM\MongoDB\EagerCursor + +Iterating over the ``$cursor`` will fetch all the data in a short and small cursor all at once and will hydrate +one document at a time in to an object as you iterate: + +.. code-block:: php + + createQueryBuilder('User') + ->field('username')->equals('jwage') + ->getQuery() + ->getSingleResult(); + +Selecting Fields +~~~~~~~~~~~~~~~~ + +You can limit the fields that are returned in the results by using +the ``select()`` method: + +.. code-block:: php + + createQueryBuilder('User') + ->select('username', 'password'); + $query = $qb->getQuery(); + $users = $query->execute(); + +In the results only the data from the username and password will be +returned. + +Index hints +~~~~~~~~~~~ + +You can force MongoDB to use a specific index for a query with the ``hint()`` method (see `hint `_) + +.. code-block:: php + + createQueryBuilder('User') + ->hint('user_pass_idx'); + $query = $qb->getQuery(); + $users = $query->execute(); + +.. note:: + + Combining ``select()`` and ``hint()`` on appropriate indexes can result in very fast + `covered queries `_ + +Selecting Distinct Values +~~~~~~~~~~~~~~~~~~~~~~~~~ + +Sometimes you may want to get an array of distinct values in a +collection. You can accomplish this using the ``distinct()`` +method: + +.. code-block:: php + + createQueryBuilder('User') + ->distinct('age') + ->getQuery() + ->execute(); + +The above would give you an ``ArrayCollection`` of all the distinct user ages! + +.. note:: + + MongoDB's `distinct command `_ + does not support sorting, so you cannot combine ``distinct()`` with + ``sort()``. If you would like to sort the results of a distinct query, you + will need to do so in PHP after executing the query. + +Refreshing Documents +~~~~~~~~~~~~~~~~~~~~ + +When a query (e.g. geoNear, find) returns one or more hydrated documents whose +identifiers are already in the identity map, ODM returns the managed document +instances for those results. In this case, a managed document's data may differ +from whatever was just returned by the database query. + +The query builder's ``refresh()`` method may be used to instruct ODM to override +the managed document with data from the query result. This is comparable to +calling ``DocumentManager::refresh()`` for a managed document. The document's +changeset will be reset in the process. + +.. code-block:: php + + createQueryBuilder('User') + ->field('username')->equals('jwage') + ->refresh() + ->getQuery() + ->getSingleResult(); + + // Jon's user will have the latest data, even if it was already managed + +Refreshing is not applicable if hydration is disabled. + +Fetching Documents as Read-Only +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Similar to ``refresh()``, ``readOnly()`` instructs ODM to not only hydrate the +latest data but also to create new document's instance (i.e. if found document +would be already managed by Doctrine, new instance will be returned) and not +register it in ``UnitOfWork``. + +This technique can prove especially useful when using ``select()`` with no intent +to update fetched documents. + +.. code-block:: php + + createQueryBuilder('User') + ->field('username')->equals('malarzm') + ->readOnly() + ->getQuery() + ->getSingleResult(); + + // Maciej's user will have the latest data, and will not be the same object + // as the one that was already managed (if it was) + +Read-Only is not applicable if hydration is disabled. + +.. note:: + + Read-only mode is not deep, i.e. any references (be it owning or inverse) of + fetched WILL be managed by Doctrine. This is a shortcoming of current + implementation, may change in future and will not be considered a BC break + (will be treated as a feature instead). + +.. note:: + + To manage a document previously fetched in read-only mode, always use the + `merge` method of the DocumentManager. Using `persist` in these cases can + have unwanted side effects. + +Disabling Hydration +~~~~~~~~~~~~~~~~~~~ + +For find queries the results by default are hydrated and you get +document objects back instead of arrays. You can disable this and +get the raw results directly back from mongo by using the +``hydrate(false)`` method: + +.. code-block:: php + + createQueryBuilder('User') + ->hydrate(false) + ->getQuery() + ->execute(); + + print_r($users); + +Limiting Results +~~~~~~~~~~~~~~~~ + +You can limit results similar to how you would in a relational +database with a limit and offset by using the ``limit()`` and +``skip()`` method. + +Here is an example where we get the third page of blog posts when +we show twenty at a time: + +.. code-block:: php + + createQueryBuilder('BlogPost') + ->limit(20) + ->skip(40) + ->getQuery() + ->execute(); + +Sorting Results +~~~~~~~~~~~~~~~ + +You can sort the results by using the ``sort()`` method: + +.. code-block:: php + + createQueryBuilder('Article') + ->sort('createdAt', 'desc'); + +If you want to an additional sort you can call ``sort()`` again. The calls are stacked and ordered +in the order you call the method: + +.. code-block:: php + + sort('featured', 'desc'); + +Map Reduce +~~~~~~~~~~ + +You can also run map reduced find queries using the ``Query`` +object: + +.. code-block:: php + + dm->createQueryBuilder('Event') + ->field('type')->equals('sale') + ->map('function() { emit(this.userId, 1); }') + ->reduce("function(k, vals) { + var sum = 0; + for (var i in vals) { + sum += vals[i]; + } + return sum; + }"); + $query = $qb->getQuery(); + $results = $query->execute(); + +.. note:: + + When you specify a ``map()`` and ``reduce()`` operation + the results will not be hydrated and the raw results from the map + reduce operation will be returned. + +If you just want to reduce the results using a javascript function +you can just call the ``where()`` method: + +.. code-block:: php + + createQueryBuilder('User') + ->where("function() { return this.type == 'admin'; }"); + +You can read more about the `$where operator `_ in the Mongo docs. + +Conditional Operators +~~~~~~~~~~~~~~~~~~~~~ + +The conditional operators in Mongo are available to limit the returned results through a easy to use API. Doctrine abstracts this to a fluent object oriented interface with a fluent API. Here is a list of all the conditional operation methods you can use on the `Query\Builder` object. + +* ``where($javascript)`` +* ``in($values)`` +* ``notIn($values)`` +* ``equals($value)`` +* ``notEqual($value)`` +* ``gt($value)`` +* ``gte($value)`` +* ``lt($value)`` +* ``lte($value)`` +* ``range($start, $end)`` +* ``size($size)`` +* ``exists($bool)`` +* ``type($type)`` +* ``all($values)`` +* ``mod($mod)`` +* ``addOr($expr)`` +* ``references($document)`` +* ``includesReferenceTo($document)`` + +Query for active administrator users: + +.. code-block:: php + + createQueryBuilder('User') + ->field('type')->equals('admin') + ->field('active')->equals(true); + +Query for articles that have some tags: + +.. code-block:: php + + createQueryBuilder('Article') + ->field('tags.name')->in(array('tag1', 'tag2')); + +Read more about the +`$in operator `_ +in the Mongo docs + +Query for articles that do not have some tags: + +.. code-block:: php + + createQueryBuilder('Article') + ->field('tags.name')->notIn(array('tag3')); + +Read more about the +`$nin operator `_ +in the Mongo docs. + +.. code-block:: php + + createQueryBuilder('User') + ->field('type')->notEqual('admin'); + +Read more about the +`$ne operator `_ +in the Mongo docs. + +Query for accounts with an amount due greater than 30: + +.. code-block:: php + + createQueryBuilder('Account') + ->field('amount_due')->gt(30); + +Query for accounts with an amount due greater than or equal to 30: + +.. code-block:: php + + createQueryBuilder('Account') + ->field('amount_due')->gte(30); + +Query for accounts with an amount due less than 30: + +.. code-block:: php + + createQueryBuilder('Account') + ->field('amount_due')->lt(30); + +Query for accounts with an amount due less than or equal to 30: + +.. code-block:: php + + createQueryBuilder('Account') + ->field('amount_due')->lte(30); + +Query for accounts with an amount due between 10 and 20: + +.. code-block:: php + + createQueryBuilder('Account') + ->field('amount_due')->range(10, 20); + +Read more about +`conditional operators `_ +in the Mongo docs. + +Query for articles with no comments: + +.. code-block:: php + + createQueryBuilder('Article') + ->field('comments')->size(0); + +Read more about the +`$size operator `_ +in the Mongo docs. + +Query for users that have a login field before it was renamed to +username: + +.. code-block:: php + + createQueryBuilder('User') + ->field('login')->exists(true); + +Read more about the +`$exists operator `_ +in the Mongo docs. + +Query for users that have a type field that is of integer bson +type: + +.. code-block:: php + + createQueryBuilder('User') + ->field('type')->type('integer'); + +Read more about the +`$type operator `_ +in the Mongo docs. + +Query for users that are in all the specified Groups: + +.. code-block:: php + + createQueryBuilder('User') + ->field('groups')->all(array('Group 1', 'Group 2')); + +Read more about the +`$all operator `_ +in the Mongo docs. + +.. code-block:: php + + createQueryBuilder('Transaction') + ->field('field')->mod('field', array(10, 1)); + +Read more about the +`$mod operator `_ in the Mongo docs. + +Query for users who have subscribed or are in a trial. + +.. code-block:: php + + createQueryBuilder('User'); + $qb->addOr($qb->expr()->field('subscriber')->equals(true)); + $qb->addOr($qb->expr()->field('inTrial')->equals(true)); + +Read more about the +`$or operator `_ in the Mongo docs. + +The ``references()`` method may be used to query the owning side of a +:ref:`@ReferenceOne ` relationship. In the +following example, we query for all articles written by a particular user. + +.. code-block:: php + + createQueryBuilder('Article') + ->field('user')->references($user); + +The ``includesReferenceTo()`` method may be used to query the owning side of a +:ref:`@ReferenceMany ` relationship. In +the following example, we query for the user(s) that have access to a particular +account. + +.. code-block:: php + + createQueryBuilder('User') + ->field('accounts')->includesReferenceTo($account); + +Text Search +~~~~~~~~~~~ + +You can use the +`$text operator `_ +to run a text search against a field with a text index. To do so, create a +document with a text index: + +.. code-block:: php + + createQueryBuilder('Document') + ->text('words you are looking for'); + +To fetch the calculated score for the text search, use the ``selectMeta()`` +method: + +.. code-block:: php + + createQueryBuilder('Document') + ->selectMeta('score', 'textScore') + ->text('words you are looking for'); + +You can also change the language used for stemming using the ``language()`` +method: + +.. code-block:: php + + createQueryBuilder('Document') + ->language('it') + ->text('parole che stai cercando'); + + +Update Queries +~~~~~~~~~~~~~~ + +Doctrine also supports executing atomic update queries using the `Query\Builder` +object. You can use the conditional operations in combination with the ability to +change document field values atomically. Additionally if you are modifying a field +that is a reference you can pass managed document to the Builder and let ODM build +``DBRef`` object for you. + +You have several modifier operations +available to you that make it easy to update documents in Mongo: + +* ``set($name, $value, $atomic = true)`` +* ``setNewObj($newObj)`` +* ``inc($name, $value)`` +* ``unsetField($field)`` +* ``push($field, $value)`` +* ``pushAll($field, array $valueArray)`` +* ``addToSet($field, $value)`` +* ``addManyToSet($field, array $values)`` +* ``popFirst($field)`` +* ``popLast($field)`` +* ``pull($field, $value)`` +* ``pullAll($field, array $valueArray)`` + +Updating multiple documents +--------------------------- + +By default Mongo updates only one document unless ``multi`` option is provided and true. +In ODM the distinction is done by explicitly calling ``updateMany()`` method of the builder: + +.. code-block:: php + + createQueryBuilder('User') + ->updateMany() + ->field('someField')->set('newValue') + ->field('username')->equals('sgoettschkes') + ->getQuery() + ->execute(); + +.. note:: + ``updateMany()`` and ``updateOne()`` methods were introduced in version 1.2. If you're + using one of previous version you need to use ``update()`` combined with ``multiple(true)``. + +Modifier Operations +------------------- + +Change a users password: + +.. code-block:: php + + createQueryBuilder('User') + ->updateOne() + ->field('password')->set('newpassword') + ->field('username')->equals('jwage') + ->getQuery() + ->execute(); + +If you want to just set the values of an entirely new object you +can do so by passing false as the third argument of ``set()`` to +tell it the update is not an atomic one: + +.. code-block:: php + + createQueryBuilder('User') + ->updateOne() + ->field('username')->set('jwage', false) + ->field('password')->set('password', false) + // ... set other remaining fields + ->field('username')->equals('jwage') + ->getQuery() + ->execute(); + +Read more about the +`$set modifier `_ +in the Mongo docs. + +You can set an entirely new object to update as well: + +.. code-block:: php + + createQueryBuilder('User') + ->setNewObj(array( + 'username' => 'jwage', + 'password' => 'password', + // ... other fields + )) + ->field('username')->equals('jwage') + ->getQuery() + ->execute(); + +Increment the value of a document: + +.. code-block:: php + + createQueryBuilder('Package') + ->field('id')->equals('theid') + ->field('downloads')->inc(1) + ->getQuery() + ->execute(); + +Read more about the +`$inc modifier `_ +in the Mongo docs. + +Unset the login field from users where the login field still +exists: + +.. code-block:: php + + createQueryBuilder('User') + ->updateMany() + ->field('login')->unsetField()->exists(true) + ->getQuery() + ->execute(); + +Read more about the +`$unset modifier `_ +in the Mongo docs. + +Append new tag to the tags array: + +.. code-block:: php + + createQueryBuilder('Article') + ->updateOne() + ->field('tags')->push('tag5') + ->field('id')->equals('theid') + ->getQuery() + ->execute(); + +Read more about the +`$push modifier `_ +in the Mongo docs. + +Append new tags to the tags array: + +.. code-block:: php + + createQueryBuilder('Article') + ->updateOne() + ->field('tags')->pushAll(array('tag6', 'tag7')) + ->field('id')->equals('theid') + ->getQuery() + ->execute(); + +Read more about the +`$pushAll modifier `_ +in the Mongo docs. + +Add value to array only if its not in the array already: + +.. code-block:: php + + createQueryBuilder('Article') + ->updateOne() + ->field('tags')->addToSet('tag1') + ->field('id')->equals('theid') + ->getQuery() + ->execute(); + +Read more about the +`$addToSet modifier `_ +in the Mongo docs. + +Add many values to the array only if they do not exist in the array +already: + +.. code-block:: php + + createQueryBuilder('Article') + ->updateOne() + ->field('tags')->addManyToSet(array('tag6', 'tag7')) + ->field('id')->equals('theid') + ->getQuery() + ->execute(); + +Read more about the +`$addManyToSet modifier `_ +in the Mongo docs. + +Remove first element in an array: + +.. code-block:: php + + createQueryBuilder('Article') + ->updateOne() + ->field('tags')->popFirst() + ->field('id')->equals('theid') + ->getQuery() + ->execute(); + +Remove last element in an array: + +.. code-block:: php + + createQueryBuilder('Article') + ->updateOne() + ->field('tags')->popLast() + ->field('id')->equals('theid') + ->getQuery() + ->execute(); + +Read more about the +`$pop modifier `_ +in the Mongo docs. + +Remove all occurrences of value from array: + +.. code-block:: php + + createQueryBuilder('Article') + ->updateMany() + ->field('tags')->pull('tag1') + ->getQuery() + ->execute(); + +Read more about the +`$pull modifier `_ +in the Mongo docs. + +.. code-block:: php + + createQueryBuilder('Article') + ->updateMany() + ->field('tags')->pullAll(array('tag1', 'tag2')) + ->getQuery() + ->execute(); + +Read more about the +`$pullAll modifier `_ +in the Mongo docs. + +Remove Queries +-------------- + +In addition to updating you can also issue queries to remove +documents from a collection. It works pretty much the same way as +everything else and you can use the conditional operations to +specify which documents you want to remove. + +Here is an example where we remove users who have never logged in: + +.. code-block:: php + + createQueryBuilder('User') + ->remove() + ->field('num_logins')->equals(0) + ->getQuery() + ->execute(); + +Group Queries +------------- + +.. note:: + + Due to deprecation of ``group`` command in MongoDB 3.4 the ODM + also deprecates its usage through Query Builder in 1.2. Please + use :ref:`$group stage ` of the + Aggregation Builder instead. + +The last type of supported query is a group query. It performs an +operation similar to SQL's GROUP BY command. + +.. code-block:: php + + dm->createQueryBuilder('Documents\User') + ->group(array(), array('count' => 0)) + ->reduce('function (obj, prev) { prev.count++; }') + ->field('a')->gt(1) + ->getQuery() + ->execute(); + +This is the same as if we were to do the group with the raw PHP +code: + +.. code-block:: php + + array( '$gt' => 1)); + $result = $collection->group(array(), array('count' => 0), $reduce, $condition); diff --git a/build.docset/Contents/Resources/Documents/_sources/reference/reference-mapping.rst.txt b/build.docset/Contents/Resources/Documents/_sources/reference/reference-mapping.rst.txt new file mode 100644 index 0000000..6280ef6 --- /dev/null +++ b/build.docset/Contents/Resources/Documents/_sources/reference/reference-mapping.rst.txt @@ -0,0 +1,495 @@ +Reference Mapping +================= + +This chapter explains how references between documents are mapped with Doctrine. + +Collections +----------- + +Examples of many-valued references in this manual make use of a ``Collection`` +interface and a corresponding ``ArrayCollection`` implementation, which are +defined in the ``Doctrine\Common\Collections`` namespace. These classes have no +dependencies on ODM, and can therefore be used within your domain model and +elsewhere without introducing coupling to the persistence layer. + +ODM also provides a ``PersistentCollection`` implementation of ``Collection``, +which incorporates change-tracking functionality; however, this class is +constructed internally during hydration. As a developer, you should develop with +the ``Collection`` interface in mind so that your code can operate with any +implementation. + +.. note:: + + New in 1.1: you are no longer limited to using ``ArrayCollection`` and can + freely use your own ``Collection`` implementation. For more details please + see :doc:`Custom Collections ` chapter. + +Why are these classes used over PHP arrays? Native arrays cannot be +transparently extended in PHP, which is necessary for many advanced features +provided by the ODM. Although PHP does provide various interfaces that allow +objects to operate like arrays (e.g. ``Traversable``, ``Countable``, +``ArrayAccess``), and even a concrete implementation in ``ArrayObject``, these +objects cannot always be used everywhere that a native array is accepted. +Doctrine's ``Collection`` interface and ``ArrayCollection`` implementation are +conceptually very similar to ``ArrayObject``, with some slight differences and +improvements. + +.. _reference_one: + +Reference One +------------- + +Reference one document: + +.. configuration-block:: + + .. code-block:: php + + + + + + + + + .. code-block:: yaml + + Product: + type: document + referenceOne: + shipping: + targetDocument: Documents\Shipping + +.. _reference_many: + +Reference Many +-------------- + +Reference many documents: + +.. configuration-block:: + + .. code-block:: php + + + + + + + + + .. code-block:: yaml + + User: + type: document + referenceMany: + accounts: + targetDocument: Documents\Account + +.. _reference_mixing_document_types: + +Mixing Document Types +--------------------- + +If you want to store different types of documents in references, you can simply +omit the ``targetDocument`` option: + +.. configuration-block:: + + .. code-block:: php + + + + .. code-block:: yaml + + referenceMany: + favorites: ~ + +Now the ``$favorites`` property can store a reference to any type of document! +The class name will be automatically stored in a field named +``_doctrine_class_name`` within the `DBRef`_ object. + +.. note:: + + The MongoDB shell tends to ignore fields other than ``$id`` and ``$ref`` + when displaying `DBRef`_ objects. You can verify the presence of any ``$db`` + and discriminator fields by querying and examining the document with a + driver. See `SERVER-10777 `_ + for additional discussion on this issue. + +The name of the field within the DBRef object can be customized via the +``discriminatorField`` option: + +.. configuration-block:: + + .. code-block:: php + + + + + + .. code-block:: yaml + + referenceMany: + favorites: + discriminatorField: type + +You can also specify a discriminator map to avoid storing the |FQCN| +in each `DBRef`_ object: + +.. configuration-block:: + + .. code-block:: php + + + + + + + + + .. code-block:: yaml + + referenceMany: + favorites: + discriminatorMap: + album: Documents\Album + song: Documents\Song + +If you have references without a discriminator value that should be considered +a certain class, you can optionally specify a default discriminator value: + +.. configuration-block:: + + .. code-block:: php + + + + + + + + + + .. code-block:: yaml + + referenceMany: + favorites: + discriminatorMap: + album: Documents\Album + song: Documents\Song + defaultDiscriminatorValue: album + +.. _storing_references: + +Storing References +------------------ + +By default all references are stored as a `DBRef`_ object with the traditional +``$ref``, ``$id``, and (optionally) ``$db`` fields (in that order). For references to +documents of a single collection, storing the collection (and database) names for +each reference may be redundant. You can use simple references to store the +referenced document's identifier (e.g. ``MongoId``) instead of a `DBRef`_. + +Example: + +.. configuration-block:: + + .. code-block:: php + + + + .. code-block:: yaml + + referenceOne: + profile: + storeAs: id + +Now, the ``profile`` field will only store the ``MongoId`` of the referenced +Profile document. + +Simple references reduce the amount of storage used, both for the document +itself and any indexes on the reference field; however, simple references cannot +be used with discriminators, since there is no `DBRef`_ object in which to store +a discriminator value. + +In addition to saving references as `DBRef`_ with ``$ref``, ``$id``, and ``$db`` +fields and as ``MongoId``, it is possible to save references as `DBRef`_ without +the ``$db`` field. This solves problems when the database name changes (and also +reduces the amount of storage used). + +The ``storeAs`` option has the following possible values: + +- **dbRefWithDb**: Uses a `DBRef`_ with ``$ref``, ``$id``, and ``$db`` fields (this is the default) +- **dbRef**: Uses a `DBRef`_ with ``$ref`` and ``$id`` +- **ref**: Uses a custom embedded object with an ``id`` field +- **id**: Uses the identifier of the referenced object + +.. note:: + + The ``storeAs=id`` option used to be called a "simple reference". The old syntax is + still recognized (so using ``simple=true`` will imply ``storeAs=id``). + +.. note:: + + For backwards compatibility ``storeAs=dbRefWithDb`` is the default, but +    ``storeAs=ref`` is the recommended setting. + + +Cascading Operations +-------------------- + +By default, Doctrine will not cascade any ``UnitOfWork`` operations to +referenced documents. You must explicitly enable this functionality: + +.. configuration-block:: + + .. code-block:: php + + + + + + + + .. code-block:: yaml + + referenceOne: + profile: + cascade: [persist] + +The valid values are: + +- **all** - cascade all operations by default. +- **detach** - cascade detach operation to referenced documents. +- **merge** - cascade merge operation to referenced documents. +- **refresh** - cascade refresh operation to referenced documents. +- **remove** - cascade remove operation to referenced documents. +- **persist** - cascade persist operation to referenced documents. + +Orphan Removal +-------------- + +There is another concept of cascading that is relevant only when removing documents +from collections. If a Document of type ``A`` contains references to privately +owned Documents ``B`` then if the reference from ``A`` to ``B`` is removed the +document ``B`` should also be removed, because it is not used anymore. + +OrphanRemoval works with both reference one and many mapped fields. + +.. note:: + + When using the ``orphanRemoval=true`` option Doctrine makes the assumption + that the documents are privately owned and will **NOT** be reused by other documents. + If you neglect this assumption your documents will get deleted by Doctrine even if + you assigned the orphaned documents to another one. + +As a better example consider an Addressbook application where you have Contacts, Addresses +and StandingData: + +.. code-block:: php + + addresses = new ArrayCollection(); + } + + public function newStandingData(StandingData $sd) + { + $this->standingData = $sd; + } + + public function removeAddress($pos) + { + unset($this->addresses[$pos]); + } + } + +Now two examples of what happens when you remove the references: + +.. code-block:: php + + find("Addressbook\Contact", $contactId); + $contact->newStandingData(new StandingData("Firstname", "Lastname", "Street")); + $contact->removeAddress(1); + + $dm->flush(); + +In this case you have not only changed the ``Contact`` document itself but +you have also removed the references for standing data and as well as one +address reference. When flush is called not only are the references removed +but both the old standing data and the one address documents are also deleted +from the database. + +.. _`DBRef`: https://docs.mongodb.com/manual/reference/database-references/#dbrefs +.. |FQCN| raw:: html + FQCN diff --git a/build.docset/Contents/Resources/Documents/_sources/reference/sharding.rst.txt b/build.docset/Contents/Resources/Documents/_sources/reference/sharding.rst.txt new file mode 100644 index 0000000..8e95007 --- /dev/null +++ b/build.docset/Contents/Resources/Documents/_sources/reference/sharding.rst.txt @@ -0,0 +1,69 @@ +.. _sharding: + +Sharding +======== + +MongoDB allows you to horizontally scale your database. In order to enable this, +Doctrine MongoDB ODM needs to know about your sharding setup. For basic information +about sharding, please refer to the `MongoDB docs `_. + +Once you have a `sharded cluster `_, +you can enable sharding for a document. You can do this by defining a shard key in +the document: + +.. configuration-block:: + + .. code-block:: php + + + + + + + + + + + .. code-block:: yaml + + Documents\User: + shardKey: + keys: + username: asc + +.. note:: + When a shard key is defined for a document, Doctrine MongoDB ODM will no + longer persist changes to the shard key as these fields become immutable in + a sharded setup. + +Once you've defined a shard key you need to enable sharding for the collection +where the document will be stored. To do this, use the ``odm:schema:shard`` +command. + +.. note:: + + For performance reasons, sharding is not enabled during the + ``odm:schema:create`` and ``odm:schema:update`` commmands. diff --git a/build.docset/Contents/Resources/Documents/_sources/reference/slave-okay-queries.rst.txt b/build.docset/Contents/Resources/Documents/_sources/reference/slave-okay-queries.rst.txt new file mode 100644 index 0000000..8623dbf --- /dev/null +++ b/build.docset/Contents/Resources/Documents/_sources/reference/slave-okay-queries.rst.txt @@ -0,0 +1,71 @@ +Slave Okay Queries +================== + +.. note:: + + ``slaveOkay`` was deprecated in 1.2 - please use `Read Preference `_ + instead. + +Documents +~~~~~~~~~ + +You can configure an entire document to send all reads to the slaves by using the ``slaveOkay`` flag: + +.. code-block:: php + + createQueryBuilder('User') + ->slaveOkay(true); + $query = $qb->getQuery(); + $users = $query->execute(); + +The data in the query above will be read from a slave. Even if you have a ``@ReferenceOne`` or +``@ReferenceMany`` resulting from the query above it will be initialized and loaded from a slave. + +.. code-block:: php + + createQueryBuilder('User') + ->slaveOkay(true); + $query = $qb->getQuery(); + $users = $query->execute(); + + foreach ($users as $user) { + foreach ($user->getAccounts() as $account) { + echo $account->getName(); + } + } diff --git a/build.docset/Contents/Resources/Documents/_sources/reference/storage-strategies.rst.txt b/build.docset/Contents/Resources/Documents/_sources/reference/storage-strategies.rst.txt new file mode 100644 index 0000000..53ed07d --- /dev/null +++ b/build.docset/Contents/Resources/Documents/_sources/reference/storage-strategies.rst.txt @@ -0,0 +1,97 @@ +.. _storage_strategies: + +Storage Strategies +================== + +Doctrine MongoDB ODM implements several different strategies for persisting changes +to mapped fields. These strategies apply to the following mapping types: + +- :ref:`int` +- :ref:`float` +- :ref:`embed_many` +- :ref:`reference_many` + +For collections, Doctrine tracks changes via the PersistentCollection class. The +strategies described on this page are implemented by the CollectionPersister +class. The ``increment`` strategy cannot be used for collections. + +increment +--------- + +The ``increment`` strategy does not apply to collections but can be used for +``int`` and ``float`` fields. When using the ``increment`` strategy, the field +value will be updated using the `$inc`_ operator. + +addToSet +-------- + +The ``addToSet`` strategy uses MongoDB's `$addToSet`_ operator to insert +elements into the array. This strategy is useful for ensuring that duplicate +values will not be inserted into the collection. Like the `pushAll`_ strategy, +elements are inserted in a separate query after removing deleted elements. + +set +--- + +The ``set`` strategy uses MongoDB's `$set`_ operator to update the entire +collection with a single update query. + +.. note:: + + Doctrine's Collection interface is modeled after PHP's associative arrays, + so they cannot always be represented as a BSON array. If the collection's + keys are not sequential integers starting with zero, the ``set`` strategy + will store the collection as a BSON object instead of an array. Use the + `setArray`_ strategy if you want to ensure that the collection is always + stored as a BSON array. + +setArray +-------- + +The ``setArray`` strategy uses MongoDB's `$set`_ operator, just like the ``set`` +strategy, but will first numerically reindex the collection to ensure that it is +stored as a BSON array. + +pushAll +------- + +The ``pushAll`` strategy uses MongoDB's `$pushAll`_ operator to insert +elements into the array. MongoDB does not allow elements to be added and removed +from an array in a single operation, so this strategy relies on multiple update +queries to remove and insert elements (in that order). + +.. _atomic_set: + +atomicSet +--------- + +The ``atomicSet`` strategy uses MongoDB's `$set`_ operator to update the entire +collection with a single update query. Unlike with ``set`` strategy there will +be only one query for updating both parent document and collection itself. This +strategy can be especially useful when dealing with high concurrency and +:ref:`versioned documents `. + +.. note:: + + The ``atomicSet`` and ``atomicSetArray`` strategies may only be used for + collections mapped directly in a top-level document. + +.. _atomic_set_array: + +atomicSetArray +-------------- + +The ``atomicSetArray`` strategy works exactly like ``atomicSet`` strategy, but +will first numerically reindex the collection to ensure that it is stored as a +BSON array. + +.. note:: + + The ``atomicSet`` and ``atomicSetArray`` strategies may only be used for + collections mapped directly in a top-level document. + +.. _`$addToSet`: https://docs.mongodb.com/manual/reference/operator/update/addToSet/ +.. _`$inc`: https://docs.mongodb.com/manual/reference/operator/update/inc/ +.. _`$pushAll`: https://docs.mongodb.com/manual/reference/operator/update/pushAll/ +.. _`$set`: https://docs.mongodb.com/manual/reference/operator/update/set/ +.. _`$unset`: https://docs.mongodb.com/manual/reference/operator/update/unset/ diff --git a/build.docset/Contents/Resources/Documents/_sources/reference/storing-files-with-mongogridfs.rst.txt b/build.docset/Contents/Resources/Documents/_sources/reference/storing-files-with-mongogridfs.rst.txt new file mode 100644 index 0000000..18582b7 --- /dev/null +++ b/build.docset/Contents/Resources/Documents/_sources/reference/storing-files-with-mongogridfs.rst.txt @@ -0,0 +1,190 @@ +Storing Files with MongoGridFS +============================== + +The PHP Mongo extension provides a nice and convenient way to store +files in chunks of data with the +`MongoGridFS `_. + +It uses two database collections, one to store the metadata for the +file, and another to store the contents of the file. The contents +are stored in chunks to avoid going over the maximum allowed size +of a MongoDB document. + +You can easily setup a Document that is stored using the +MongoGridFS: + +.. code-block:: php + + id; + } + + public function setName($name) + { + $this->name = $name; + } + + public function getName() + { + return $this->name; + } + + public function getFile() + { + return $this->file; + } + + public function setFile($file) + { + $this->file = $file; + } + } + +Notice how we annotated the $file property with @File. This is what +tells the Document that it is to be stored using the MongoGridFS +and the MongoGridFSFile instance is placed in the $file property +for you to access the actual file itself. + +The $uploadDate, $chunkSize and $md5 properties are automatically filled in +for each file stored in GridFS (whether you like that or not). +Feel free to create getters in your document to actually make use of them, +but keep in mind that their values will be initially unset for new objects +until the next time the document is hydrated (fetched from the database). + +First you need to create a new Image: + +.. code-block:: php + + setName('Test image'); + $image->setFile('/path/to/image.png'); + + $dm->persist($image); + $dm->flush(); + +Now you can later query for the Image and render it: + +.. code-block:: php + + createQueryBuilder('Documents\Image') + ->field('name')->equals('Test image') + ->getQuery() + ->getSingleResult(); + + header('Content-type: image/png;'); + echo $image->getFile()->getBytes(); + +You can of course make references to this Image document from +another document. Imagine you had a Profile document and you wanted +every Profile to have a profile image: + +.. code-block:: php + + id; + } + + public function getName() + { + return $this->name; + } + + public function setName($name) + { + $this->name = $name; + } + + public function getImage() + { + return $this->image; + } + + public function setImage(Image $image) + { + $this->image = $image; + } + } + +Now you can create a new Profile and give it an Image: + +.. code-block:: php + + setName('Test image'); + $image->setFile('/path/to/image.png'); + + $profile = new Profile(); + $profile->setName('Jonathan H. Wage'); + $profile->setImage($image); + + $dm->persist($profile); + $dm->flush(); + +If you want to query for the Profile and load the Image reference +in a query you can use: + +.. code-block:: php + + createQueryBuilder('Profile') + ->field('name')->equals('Jonathan H. Wage') + ->getQuery() + ->getSingleResult(); + + $image = $profile->getImage(); + + header('Content-type: image/png;'); + echo $image->getFile()->getBytes(); diff --git a/build.docset/Contents/Resources/Documents/_sources/reference/transactions-and-concurrency.rst.txt b/build.docset/Contents/Resources/Documents/_sources/reference/transactions-and-concurrency.rst.txt new file mode 100644 index 0000000..afa8eed --- /dev/null +++ b/build.docset/Contents/Resources/Documents/_sources/reference/transactions-and-concurrency.rst.txt @@ -0,0 +1,306 @@ +.. Heavily inspired by Doctrine 2 ORM documentation + +Transactions and Concurrency +============================ + +Transactions +------------ + +As per the `documentation `_, MongoDB +write operations are "atomic on the level of a single document". + +Even when updating multiple documents within a single write operation, +though the modification of each document is atomic, +the operation as a whole is not and other operations may interleave. + +As stated in the `FAQ `_, +"MongoDB does not support multi-document transactions" and neither does Doctrine MongoDB ODM. + +Limitation +~~~~~~~~~~ +At the moment, Doctrine MongoDB ODM does not provide any native strategy to emulate multi-document transactions. + +Workaround +~~~~~~~~~~ +To work around this limitation, one can utilize `two phase commits `_. + +Concurrency +----------- + +Doctrine MongoDB ODM offers native support for pessimistic and optimistic locking strategies. +This allows for very fine-grained control over what kind of locking is required for documents in your application. + +.. _transactions_and_concurrency_optimistic_locking: + +Optimistic Locking +~~~~~~~~~~~~~~~~~~ + +Approach +^^^^^^^^ + +Doctrine has integrated support for automatic optimistic locking +via a ``version`` field. Any document that should be +protected against concurrent modifications during long-running +business transactions gets a ``version`` field that is either a simple +number (mapping type: ``int``) or a date (mapping type: ``date``). +When changes to the document are persisted, +the expected version and version increment are incorporated into the update criteria and modifiers, respectively. +If this results in no document being modified by the update (i.e. expected version did not match), +a ``LockException`` is thrown, which indicates that the document was already modified by another query. + +.. note:: + + | Versioning can only be used on *root* (top-level) documents. + +Document Configuration +^^^^^^^^^^^^^^^^^^^^^^ + +The following example designates a version field using the ``int`` type: + +.. configuration-block:: + + .. code-block:: php + + + + .. code-block:: yaml + + version: + type: int + version: true + + +Alternatively, the ``date`` type may be used: + +.. configuration-block:: + + .. code-block:: php + + + + .. code-block:: yaml + + version: + type: date + version: true + +Choosing the Field Type +""""""""""""""""""""""" + +When using the ``date`` type in a high-concurrency environment, it is still possible to create multiple documents +with the same version and cause a conflict. This can be avoided by using the ``int`` type. + +Usage +""""" + +When a version conflict is encountered during +``DocumentManager#flush()``, a ``LockException`` is thrown. +This exception can be caught and handled. Potential responses to a +``LockException`` are to present the conflict to the user or +to refresh or reload objects and then retry the update. + +With PHP promoting a share-nothing architecture, +the worst case scenario for a delay between rendering an update form (with existing document data) +and modifying the document after a form submission may be your application's session timeout. +If the document is changed within that time frame by some other request, +it may be preferable to encounter a ``LockException`` when retrieving the document instead of executing the update. + +You can specify the expected version of a document during a query with ``DocumentManager#find()``: + +.. code-block:: php + + find('User', $theDocumentId, LockMode::OPTIMISTIC, $expectedVersion); + + // do the work + + $dm->flush(); + } catch(LockException $e) { + echo "Sorry, but someone else has already changed this document. Please apply the changes again!"; + } + +Alternatively, an expected version may be specified for an existing document with ``DocumentManager#lock()``: + +.. code-block:: php + + find('User', $theDocumentId); + + try { + // assert version + $dm->lock($document, LockMode::OPTIMISTIC, $expectedVersion); + + } catch(LockException $e) { + echo "Sorry, but someone else has already changed this document. Please apply the changes again!"; + } + +Important Implementation Notes +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +You can easily get the optimistic locking workflow wrong if you +compare the wrong versions. + +Workflow +"""""""" + +Say you have Alice and Bob editing a +hypothetical blog post: + +- Alice reads the headline of the blog post being "Foo", at + optimistic lock version 1 (GET Request) +- Bob reads the headline of the blog post being "Foo", at + optimistic lock version 1 (GET Request) +- Bob updates the headline to "Bar", upgrading the optimistic lock + version to 2 (POST Request of a Form) +- Alice updates the headline to "Baz", ... (POST Request of a + Form) + +At the last stage of this scenario the blog post has to be read +again from the database before Alice's headline can be applied. At +this point you will want to check if the blog post is still at +version 1 (which it is not in this scenario). + +In order to correctly utilize optimistic locking, you *must* add the version as hidden form field or, +for more security, session attribute. +Otherwise, you cannot verify that the version at the time of update is the same as what was originally read +from the database when Alice performed her original GET request for the blog post. +Without correlating the version across form submissions, the application could lose updates. + +Example Code +"""""""""""" + +The form (GET Request): + +.. code-block:: php + + find('BlogPost', 123456); + + echo ''; + echo ''; + +And the change headline action (POST Request): + +.. code-block:: php + + find('BlogPost', $postId, LockMode::OPTIMISTIC, $postVersion); + +.. _transactions_and_concurrency_pessimistic_locking: + +Pessimistic Locking +~~~~~~~~~~~~~~~~~~~ + +Doctrine MongoDB ODM also supports pessimistic locking via a configurable ``lock`` field. +This functionality is implemented entirely by Doctrine; MongoDB has no native support for pessimistic locking. + +Document Configuration +^^^^^^^^^^^^^^^^^^^^^^ + +Pessimistic locking requires a document to designate a lock field using the ``int`` type: + +.. configuration-block:: + + .. code-block:: php + + + + .. code-block:: yaml + + lock: + type: int + lock: true + +Lock Modes +^^^^^^^^^^ + +Doctrine MongoDB ODM currently supports two pessimistic lock modes: + +- Pessimistic Write + (``\Doctrine\ODM\MongoDB\LockMode::PESSIMISTIC_WRITE``): locks the + underlying document for concurrent read and write operations. +- Pessimistic Read (``\Doctrine\ODM\MongoDB\LockMode::PESSIMISTIC_READ``): + locks other concurrent requests that attempt to update or lock documents + in write mode. + +Usage +^^^^^ + +You can use pessimistic locks in two different scenarios: + +1. Using + ``DocumentManager#find($className, $id, \Doctrine\ODM\MongoDB\LockMode::PESSIMISTIC_WRITE)`` + or + ``DocumentManager#find($className, $id, \Doctrine\ODM\MongoDB\LockMode::PESSIMISTIC_READ)`` +2. Using + ``DocumentManager#lock($document, \Doctrine\ODM\MongoDB\LockMode::PESSIMISTIC_WRITE)`` + or + ``DocumentManager#lock($document, \Doctrine\ODM\MongoDB\LockMode::PESSIMISTIC_READ)`` + +.. warning:: + + | A few things could go wrong: + | + | If a request fails to complete (e.g. unhandled exception), you may end up with stale locks. + Said locks would need to be manually released or you would need to devise a strategy to automatically do so. + One way to mitigate stale locks after an application error would be to gracefully catch the exception + and ensure that relevant documents are unlocked before the request ends. + | + | `Deadlock `_ situations are also possible. + Suppose process P1 needs resource R1 and has locked resource R2 + and that another process P2 has locked resource R1 but also needs resource R2. + If both processes continue waiting for the respective resources, the application will be stuck. + When loading a document, Doctrine can immediately throw an exception if it is already locked. + A deadlock could be created by endlessly retrying attempts to acquire the lock. + One can avoid a possible deadlock by designating a maximum number of retry attempts + and automatically releasing any active locks with the request ends, + thereby allowing a process to end gracefully while another completes its task. diff --git a/build.docset/Contents/Resources/Documents/_sources/reference/trees.rst.txt b/build.docset/Contents/Resources/Documents/_sources/reference/trees.rst.txt new file mode 100644 index 0000000..182f784 --- /dev/null +++ b/build.docset/Contents/Resources/Documents/_sources/reference/trees.rst.txt @@ -0,0 +1,267 @@ +Trees +===== + +MongoDB lends itself quite well to storing hierarchical data. This +chapter will demonstrate some examples! + +Full Tree in Single Document +---------------------------- + +.. code-block:: php + + createQueryBuilder('BlogPost') + ->selectSlice('replies', 0, 10) + ->getQuery() + ->getSingleResult(); + + $replies = $post->getReplies(); + +You can read more about this pattern on the MongoDB documentation page "Trees in MongoDB" in the +`Full Tree in Single Document `_ section. + +Parent Reference +---------------- + +.. code-block:: php + + createQueryBuilder('Category') + ->field('parent.id')->equals('theid') + ->getQuery() + ->execute(); + +You can read more about this pattern on the MongoDB documentation page "Trees in MongoDB" in the +`Parent Links `_ section. + +Child Reference +--------------- + +.. code-block:: php + + createQueryBuilder('Category') + ->field('id')->equals('theid') + ->getQuery() + ->getSingleResult(); + + $children = $category->getChildren(); + +Query for immediate parent of a category: + +.. code-block:: php + + createQueryBuilder('Category') + ->field('children.id')->equals('theid') + ->getQuery() + ->getSingleResult(); + +You can read more about this pattern on the MongoDB documentation page "Trees in MongoDB" in the +`Child Links `_ section. + +Array of Ancestors +------------------ + +.. code-block:: php + + createQueryBuilder('Category') + ->field('ancestors.id')->equals('theid') + ->getQuery() + ->execute(); + +Query for all ancestors of a category: + +.. code-block:: php + + createQuery('Category') + ->field('id')->equals('theid') + ->getQuery() + ->getSingleResult(); + + $ancestors = $category->getAncestors(); + +You can read more about this pattern on the MongoDB documentation page "Trees in MongoDB" in the +`Array of Ancestors `_ section. + +Materialized Paths +------------------ + +.. code-block:: php + + createQuery('Category') + ->sort('path', 'asc') + ->getQuery() + ->execute(); + +Query for the node 'b' and all its descendants: + +.. code-block:: php + + createQuery('Category') + ->field('path')->equals('/^a,b,/') + ->getQuery() + ->execute(); + +You can read more about this pattern on the MongoDB documentation page "Trees in MongoDB" in the +`Materialized Paths (Full Path in Each Node) `_ section. diff --git a/build.docset/Contents/Resources/Documents/_sources/reference/upserting-documents.rst.txt b/build.docset/Contents/Resources/Documents/_sources/reference/upserting-documents.rst.txt new file mode 100644 index 0000000..0b2db07 --- /dev/null +++ b/build.docset/Contents/Resources/Documents/_sources/reference/upserting-documents.rst.txt @@ -0,0 +1,34 @@ +Upserting Documents +=================== + +Upserting documents in the MongoDB ODM is easy. All you really have to do +is specify an ID ahead of time and Doctrine will perform an ``update`` operation +with the ``upsert`` flag internally instead of a ``batchInsert``. + +Example: + +.. code-block:: php + + setId($articleId); + $article->incrementNumViews(); + $dm->persist($article); + $dm->flush(); + +The above would result in an operation like the following: + +.. code-block:: php + + update( + array('_id' => new MongoId($articleId)), + array('$inc' => array('numViews' => 1)), + array('upsert' => true, 'safe' => true) + ); + +The extra benefit is the fact that you don't have to fetch the ``$article`` in order +to append some new data to the document or change something. All you need is the +identifier. \ No newline at end of file diff --git a/build.docset/Contents/Resources/Documents/_sources/reference/working-with-objects.rst.txt b/build.docset/Contents/Resources/Documents/_sources/reference/working-with-objects.rst.txt new file mode 100644 index 0000000..33efe00 --- /dev/null +++ b/build.docset/Contents/Resources/Documents/_sources/reference/working-with-objects.rst.txt @@ -0,0 +1,573 @@ +Working with Objects +==================== + +Understanding +------------- + +In this chapter we will help you understand the ``DocumentManager`` +and the ``UnitOfWork``. A Unit of Work is similar to an +object-level transaction. A new Unit of Work is implicitly started +when a DocumentManager is initially created or after +``DocumentManager#flush()`` has been invoked. A Unit of Work is +committed (and a new one started) by invoking +``DocumentManager#flush()``. + +A Unit of Work can be manually closed by calling +``DocumentManager#close()``. Any changes to objects within this +Unit of Work that have not yet been persisted are lost. + +The size of a Unit of Work +~~~~~~~~~~~~~~~~~~~~~~~~~~ + +The size of a Unit of Work mainly refers to the number of managed +documents at a particular point in time. + +The cost of flush() +~~~~~~~~~~~~~~~~~~~ + +How costly a flush operation is in terms of performance mainly +depends on the size. You can get the size of your Unit of Work as +follows: + +.. code-block:: php + + getUnitOfWork()->size(); + +The size represents the number of managed documents in the Unit of +Work. This size affects the performance of flush() operations due +to change tracking and, of course, memory consumption, so you may +want to check it from time to time during development. + +.. caution:: + + Do not invoke ``flush`` after every change to a + document or every single invocation of persist/remove/merge/... + This is an anti-pattern and unnecessarily reduces the performance + of your application. Instead, form units of work that operate on + your objects and call ``flush`` when you are done. While serving a + single HTTP request there should be usually no need for invoking + ``flush`` more than 0-2 times. + +Direct access to a Unit of Work +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +You can get direct access to the Unit of Work by calling +``DocumentManager#getUnitOfWork()``. This will return the +UnitOfWork instance the DocumentManager is currently using. + +.. code-block:: php + + getUnitOfWork(); + +.. note:: + + Directly manipulating a UnitOfWork is not recommended. + When working directly with the UnitOfWork API, respect methods + marked as INTERNAL by not using them and carefully read the API + documentation. + +Persisting documents +-------------------- + +A document can be made persistent by passing it to the +``DocumentManager#persist($document)`` method. By applying the +persist operation on some document, that document becomes MANAGED, +which means that its persistence is from now on managed by an +DocumentManager. As a result the persistent state of such a +document will subsequently be properly synchronized with the +database when ``DocumentManager#flush()`` is invoked. + +.. caution:: + + Invoking the ``persist`` method on a document does NOT + cause an immediate insert to be issued on the database. Doctrine + applies a strategy called "transactional write-behind", which means + that it will delay most operations until + ``DocumentManager#flush()`` is invoked which will then issue all + necessary queries to synchronize your objects with the database in + the most efficient way. + +Example: + +.. code-block:: php + + setUsername('jwage'); + $user->setPassword('changeme'); + $dm->persist($user); + $dm->flush(); + +.. caution:: + + The document identifier is generated during ``persist`` if not previously + specified. Users cannot rely on a document identifier being available during + the ``prePersist`` event. + +The semantics of the persist operation, applied on a document X, +are as follows: + +- + If X is a new document, it becomes managed. The document X will be + entered into the database as a result of the flush operation. +- + If X is a preexisting managed document, it is ignored by the + persist operation. However, the persist operation is cascaded to + documents referenced by X, if the relationships from X to these + other documents are mapped with cascade=PERSIST or cascade=ALL. +- If X is a removed document, it becomes managed. +- If X is a detached document, the behavior is undefined. + +.. caution:: + + Do not pass detached documents to the persist operation. + +.. _flush_options: + +Flush Options +------------- + +When committing your documents you can specify an array of options to the +``flush`` method. With it you can send options to the underlying database +like ``safe``, ``fsync``, etc. + +Example: + +.. code-block:: php + + getRepository('User')->find($userId); + // ... + $user->setPassword('changeme'); + $dm->flush(null, array('safe' => true, 'fsync' => true)); + +You can configure the default flush options on your ``Configuration`` object +if you want to set them globally for all flushes. + +Example: + +.. code-block:: php + + setDefaultCommitOptions(array( + 'safe' => true, + 'fsync' => true + )); + +.. note:: + + Safe is set to true by default for all writes when using the ODM. + +Removing documents +------------------ + +A document can be removed from persistent storage by passing it to +the ``DocumentManager#remove($document)`` method. By applying the +``remove`` operation on some document, that document becomes +REMOVED, which means that its persistent state will be deleted once +``DocumentManager#flush()`` is invoked. The in-memory state of a +document is unaffected by the ``remove`` operation. + +.. caution:: + + Just like ``persist``, invoking ``remove`` on a + document does NOT cause an immediate query to be issued on the + database. The document will be removed on the next invocation of + ``DocumentManager#flush()`` that involves that document. + +Example: + +.. code-block:: php + + remove($user); + $dm->flush(); + +The semantics of the remove operation, applied to a document X are +as follows: + +- + If X is a new document, it is ignored by the remove operation. + However, the remove operation is cascaded to documents referenced + by X, if the relationship from X to these other documents is mapped + with cascade=REMOVE or cascade=ALL. +- + If X is a managed document, the remove operation causes it to + become removed. The remove operation is cascaded to documents + referenced by X, if the relationships from X to these other + documents is mapped with cascade=REMOVE or cascade=ALL. +- + If X is a detached document, an InvalidArgumentException will be + thrown. +- + If X is a removed document, it is ignored by the remove operation. +- + A removed document X will be removed from the database as a result + of the flush operation. + +Detaching documents +------------------- + +A document is detached from a DocumentManager and thus no longer +managed by invoking the ``DocumentManager#detach($document)`` +method on it or by cascading the detach operation to it. Changes +made to the detached document, if any (including removal of the +document), will not be synchronized to the database after the +document has been detached. + +Doctrine will not hold on to any references to a detached +document. + +Example: + +.. code-block:: php + + detach($document); + +The semantics of the detach operation, applied to a document X are +as follows: + + +- + If X is a managed document, the detach operation causes it to + become detached. The detach operation is cascaded to documents + referenced by X, if the relationships from X to these other + documents is mapped with cascade=DETACH or cascade=ALL. Documents + which previously referenced X will continue to reference X. +- + If X is a new or detached document, it is ignored by the detach + operation. +- + If X is a removed document, the detach operation is cascaded to + documents referenced by X, if the relationships from X to these + other documents is mapped with cascade=DETACH or + cascade=ALL/Documents which previously referenced X will continue + to reference X. + +There are several situations in which a document is detached +automatically without invoking the ``detach`` method: + + +- + When ``DocumentManager#clear()`` is invoked, all documents that are + currently managed by the DocumentManager instance become detached. +- + When serializing a document. The document retrieved upon subsequent + unserialization will be detached (This is the case for all + documents that are serialized and stored in some cache). + +The ``detach`` operation is usually not as frequently needed and +used as ``persist`` and ``remove``. + +Merging documents +----------------- + +Merging documents refers to the merging of (usually detached) +documents into the context of a DocumentManager so that they +become managed again. To merge the state of a document into an +DocumentManager use the ``DocumentManager#merge($document)`` +method. The state of the passed document will be merged into a +managed copy of this document and this copy will subsequently be +returned. + +Example: + +.. code-block:: php + + merge($detachedDocument); + // $document now refers to the fully managed copy returned by the merge operation. + // The DocumentManager $dm now manages the persistence of $document as usual. + + The semantics of the merge operation, applied to a document X, are + as follows: + +- + If X is a detached document, the state of X is copied onto a + pre-existing managed document instance X' of the same iddocument or + a new managed copy X' of X is created. +- + If X is a new document instance, an InvalidArgumentException will + be thrown. +- + If X is a removed document instance, an InvalidArgumentException + will be thrown. +- + If X is a managed document, it is ignored by the merge operation, + however, the merge operation is cascaded to documents referenced by + relationships from X if these relationships have been mapped with + the cascade element value MERGE or ALL. +- + For all documents Y referenced by relationships from X having the + cascade element value MERGE or ALL, Y is merged recursively as Y'. + For all such Y referenced by X, X' is set to reference Y'. (Note + that if X is managed then X is the same object as X'.) +- + If X is a document merged to X', with a reference to another + document Y, where cascade=MERGE or cascade=ALL is not specified, + then navigation of the same association from X' yields a reference + to a managed object Y' with the same persistent iddocument as Y. + +The ``merge`` operation is usually not as frequently needed and +used as ``persist`` and ``remove``. The most common scenario for +the ``merge`` operation is to reattach documents to an +DocumentManager that come from some cache (and are therefore +detached) and you want to modify and persist such a document. + +.. note:: + + If you load some detached documents from a cache and you + do not need to persist or delete them or otherwise make use of them + without the need for persistence services there is no need to use + ``merge``. I.e. you can simply pass detached objects from a cache + directly to the view. + +References +---------- + +References between documents and embedded documents are represented +just like in regular object-oriented PHP, with references to other +objects or collections of objects. + +Establishing References +----------------------- + +Establishing a reference to another document is straight forward: + +Here is an example where we add a new comment to an article: + +.. code-block:: php + + getComments()->add($comment); + +Or you can set a single reference: + +.. code-block:: php + + setAddress($address); + +Removing References +------------------- + +Removing an association between two documents is similarly +straight-forward. There are two strategies to do so, by key and by +element. Here are some examples: + +.. code-block:: php + + getComments()->removeElement($comment); + $article->getComments()->remove($ithComment); + +Or you can remove a single reference: + +.. code-block:: php + + setAddress(null); + +When working with collections, keep in mind that a Collection is +essentially an ordered map (just like a PHP array). That is why the +``remove`` operation accepts an index/key. ``removeElement`` is a +separate method that has O(n) complexity, where n is the size of +the map. + +Transitive persistence +---------------------- + +Persisting, removing, detaching and merging individual documents +can become pretty cumbersome, especially when a larger object graph +with collections is involved. Therefore Doctrine provides a +mechanism for transitive persistence through cascading of these +operations. Each reference to another document or a collection of +documents can be configured to automatically cascade certain +operations. By default, no operations are cascaded. + +The following cascade options exist: + + +- + persist : Cascades persist operations to the associated documents. +- remove : Cascades remove operations to the associated documents. +- merge : Cascades merge operations to the associated documents. +- detach : Cascades detach operations to the associated documents. +- + all : Cascades persist, remove, merge and detach operations to + associated documents. + +The following example shows an association to a number of +addresses. If persist() or remove() is invoked on any User +document, it will be cascaded to all associated Address documents +in the $addresses collection. + +.. code-block:: php + + find('User', $id); + +The return value is either the found document instance or null if +no instance could be found with the given identifier. + +Essentially, ``DocumentManager#find()`` is just a shortcut for the +following: + +.. code-block:: php + + getRepository('User')->find($id); + +``DocumentManager#getRepository($documentName)`` returns a +repository object which provides many ways to retrieve documents of +the specified type. By default, the repository instance is of type +``Doctrine\ODM\MongoDB\DocumentRepository``. You can also use +custom repository classes. + +By Simple Conditions +~~~~~~~~~~~~~~~~~~~~ + +To query for one or more documents based on several conditions that +form a logical conjunction, use the ``findBy`` and ``findOneBy`` +methods on a repository as follows: + +.. code-block:: php + + getRepository('User')->findBy(array('age' => 20)); + + // All users that are 20 years old and have a surname of 'Miller' + $users = $dm->getRepository('User')->findBy(array('age' => 20, 'surname' => 'Miller')); + + // A single user by its nickname + $user = $dm->getRepository('User')->findOneBy(array('nickname' => 'romanb')); + +A DocumentRepository also provides a mechanism for more concise +calls through its use of ``__call``. Thus, the following two +examples are equivalent: + +.. code-block:: php + + getRepository('User')->findOneBy(array('nickname' => 'romanb')); + + // A single user by its nickname (__call magic) + $user = $dm->getRepository('User')->findOneByNickname('romanb'); + +.. note:: + + You can learn more about Repositories in a :ref:`dedicated chapter `. + +By Lazy Loading +~~~~~~~~~~~~~~~ + +Whenever you have a managed document instance at hand, you can +traverse and use any associations of that document as if they were +in-memory already. Doctrine will automatically load the associated +objects on demand through the concept of lazy-loading. + +By Query Builder Objects +~~~~~~~~~~~~~~~~ + +The most powerful and flexible method to query for persistent +objects is the Query\Builder object. The Query\Builder object enables you to query +for persistent objects with a fluent object oriented interface. + +You can create a query using +``DocumentManager#createQueryBuilder($documentName = null)``. Here is a +simple example: + +.. code-block:: php + + createQueryBuilder('User') + ->field('age')->range(20, 30); + $q = $qb->getQuery() + $users = $q->execute(); + +By Reference +~~~~~~~~~~~~~~~~ + +To query documents with a ReferenceOne association to another document, use the ``references($document)`` expression: + +.. code-block:: php + + find('Group', $id); + $usersWithGroup = $dm->createQueryBuilder('User') + ->field('group')->references($group) + ->getQuery()->execute(); + +To find documents with a ReferenceMany association that includes a certain document, use the ``includesReferenceTo($document)`` expression: + +.. code-block:: php + + createQueryBuilder('User') + ->field('groups')->includesReferenceTo($group) + ->getQuery()->execute(); diff --git a/build.docset/Contents/Resources/Documents/_sources/reference/xml-mapping.rst.txt b/build.docset/Contents/Resources/Documents/_sources/reference/xml-mapping.rst.txt new file mode 100644 index 0000000..1f56097 --- /dev/null +++ b/build.docset/Contents/Resources/Documents/_sources/reference/xml-mapping.rst.txt @@ -0,0 +1,188 @@ +XML Mapping +=========== + +The XML mapping driver enables you to provide the ODM metadata in +form of XML documents. + +The XML driver is backed by an XML Schema document that describes +the structure of a mapping document. The most recent version of the +XML Schema document is available online at +`http://doctrine-project.org/schemas/odm/doctrine-mongo-mapping.xsd `_. +The most convenient way to work with XML mapping files is to use an +IDE/editor that can provide code-completion based on such an XML +Schema document. The following is an outline of a XML mapping +document with the proper xmlns/xsi setup for the latest code in +trunk. + +.. code-block:: xml + + + + ... + + + +.. note:: + + If you do not want to use latest XML Schema document please use link like + `http://doctrine-project.org/schemas/odm/doctrine-mongo-mapping-1.0.0-BETA12.xsd `_. + You can change ``1.0.0-BETA12`` part of the URL to + `any other ODM version `_. + +The XML mapping document of a class is loaded on-demand the first +time it is requested and subsequently stored in the metadata cache. +In order to work, this requires certain conventions: + + +- + Each document/mapped superclass must get its own dedicated XML + mapping document. +- + The name of the mapping document must consist of the fully + qualified name of the class, where namespace separators are + replaced by dots (.). +- + All mapping documents should get the extension ".dcm.xml" to + identify it as a Doctrine mapping file. This is more of a + convention and you are not forced to do this. You can change the + file extension easily enough. + +.. code-block:: php + + setFileExtension('.xml'); + +It is recommended to put all XML mapping documents in a single +folder but you can spread the documents over several folders if you +want to. In order to tell the XmlDriver where to look for your +mapping documents, supply an array of paths as the first argument +of the constructor, like this: + +.. code-block:: php + + setMetadataDriverImpl($driver); + +Simplified XML Driver +~~~~~~~~~~~~~~~~~~~~~ + +The Symfony project sponsored a driver that simplifies usage of the XML Driver. +The changes between the original driver are: + +1. File Extension is .mongodb-odm.xml +2. Filenames are shortened, "MyProject\Documents\User" will become User.mongodb-odm.xml +3. You can add a global file and add multiple documents in this file. + +Configuration of this client works a little bit different: + +.. code-block:: php + + '/path/to/files1', + 'OtherProject\Documents' => '/path/to/files2' + ); + $driver = new \Doctrine\ODM\MongoDB\Mapping\Driver\SimplifiedXmlDriver($namespaces); + $driver->setGlobalBasename('global'); // global.mongodb-odm.xml + +Example +------- + +As a quick start, here is a small example document that makes use +of several common elements: + +.. code-block:: xml + + // Documents.User.dcm.xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Be aware that class-names specified in the XML files should be fully qualified. + +.. note:: + + ``field-name`` is the name of **property in your object** while ``name`` specifies + name of the field **in the database**. Specifying latter is optional and defaults to + ``field-name`` if not set explicitly. + +Reference +--------- + +.. _xml_reference_lock: + +Lock +^^^^ + +The field with the ``lock`` attribute will be used to store lock information for :ref:`pessimistic locking `. +This is only compatible with the ``int`` field type, and cannot be combined with ``id="true"``. + +.. code-block:: xml + + + + + +.. _xml_reference_version: + +Version +^^^^^^^ + +The field with the ``version`` attribute will be used to store version information for :ref:`optimistic locking `. +This is only compatible with ``int`` and ``date`` field types, and cannot be combined with ``id="true"``. + +.. code-block:: xml + + + + + +By default, Doctrine ODM updates :ref:`embed-many ` and +:ref:`reference-many ` collections in separate write operations, +which do not bump the document version. Users employing document versioning are +encouraged to use the :ref:`atomicSet ` or +:ref:`atomicSetArray ` strategies for such collections, which +will ensure that collections are updated in the same write operation as the +versioned parent document. diff --git a/build.docset/Contents/Resources/Documents/_sources/reference/yml-mapping.rst.txt b/build.docset/Contents/Resources/Documents/_sources/reference/yml-mapping.rst.txt new file mode 100644 index 0000000..f26854f --- /dev/null +++ b/build.docset/Contents/Resources/Documents/_sources/reference/yml-mapping.rst.txt @@ -0,0 +1,211 @@ +YAML Mapping +============ + +The YAML mapping driver enables you to provide the ODM metadata in +form of YAML documents. + +The YAML mapping document of a class is loaded on-demand the first +time it is requested and subsequently stored in the metadata cache. +In order to work, this requires certain conventions: + +- + Each document/mapped superclass must get its own dedicated YAML + mapping document. +- + The name of the mapping document must consist of the fully + qualified name of the class, where namespace separators are + replaced by dots (.). +- + All mapping documents should get the extension ".dcm.yml" to + identify it as a Doctrine mapping file. This is more of a + convention and you are not forced to do this. You can change the + file extension easily enough. + +- + +.. code-block:: php + + setFileExtension('.yml'); + +It is recommended to put all YAML mapping documents in a single +folder but you can spread the documents over several folders if you +want to. In order to tell the YamlDriver where to look for your +mapping documents, supply an array of paths as the first argument +of the constructor, like this: + +.. code-block:: php + + setMetadataDriverImpl($driver); + +Simplified YAML Driver +~~~~~~~~~~~~~~~~~~~~~~ + +The Symfony project sponsored a driver that simplifies usage of the YAML Driver. +The changes between the original driver are: + +1. File Extension is .mongodb-odm.yml +2. Filenames are shortened, "MyProject\\Documents\\User" will become User.mongodb-odm.yml +3. You can add a global file and add multiple documents in this file. + +Configuration of this client works a little bit different: + +.. code-block:: php + + 'MyProject\Documents', + '/path/to/files2' => 'OtherProject\Documents' + ); + $driver = new \Doctrine\ODM\MongoDB\Mapping\Driver\SimplifiedYamlDriver($namespaces); + $driver->setGlobalBasename('global'); // global.mongodb-odm.yml + +Example +------- + +As a quick start, here is a small example document that makes use +of several common elements: + +.. code-block:: yaml + + # Documents.User.dcm.yml + + Documents\User: + db: documents + collection: user + fields: + id: + id: true + username: + name: login + type: string + email: + unique: + order: desc + createdAt: + type: date + indexes: + index1: + keys: + username: desc + options: + unique: true + dropDups: true + safe: true + embedOne: + address: + targetDocument: Documents\Address + embedMany: + phonenumbers: + targetDocument: Documents\Phonenumber + referenceOne: + profile: + targetDocument: Documents\Profile + cascade: all + account: + targetDocument: Documents\Account + cascade: all + referenceMany: + groups: + targetDocument: Documents\Group + cascade: all + + # Alternative syntax for the exact same example + # (allows custom key name for embedded document and reference). + Documents\User: + db: documents + collection: user + fields: + id: + id: true + username: + name: login + type: string + email: + unique: + order: desc + createdAt: + type: date + address: + embedded: true + type: one + targetDocument: Documents\Address + phonenumbers: + embedded: true + type: many + targetDocument: Documents\Phonenumber + profile: + reference: true + type: one + targetDocument: Documents\Profile + cascade: all + account: + reference: true + type: one + targetDocument: Documents\Account + cascade: all + groups: + reference: true + type: many + targetDocument: Documents\Group + cascade: all + indexes: + index1: + keys: + username: desc + options: + unique: true + dropDups: true + safe: true + +Be aware that class-names specified in the YAML files should be fully qualified. + +.. note:: + + The ``name`` property is an optional setting to change name of the field + **in the database**. Specifying it is optional and defaults to the name + of mapped field. + +Reference +--------- + +.. _yml_reference_lock: + +Lock +^^^^ + +The field with the ``lock`` property will be used to store lock information for :ref:`pessimistic locking `. +This is only compatible with the ``int`` field type, and cannot be combined with ``id: true``. + +.. code-block:: yaml + + lock: + type: int + lock: true + +.. _yml_reference_version: + +Version +^^^^^^^ + +The field with the ``version`` property will be used to store version information for :ref:`optimistic locking `. +This is only compatible with ``int`` and ``date`` field types, and cannot be combined with ``id: true``. + +.. code-block:: yaml + + version: + type: int + version: true + +By default, Doctrine ODM updates :ref:`embed-many ` and +:ref:`reference-many ` collections in separate write operations, +which do not bump the document version. Users employing document versioning are +encouraged to use the :ref:`atomicSet ` or +:ref:`atomicSetArray ` strategies for such collections, which +will ensure that collections are updated in the same write operation as the +versioned parent document. diff --git a/build.docset/Contents/Resources/Documents/_sources/tutorials/getting-started.rst.txt b/build.docset/Contents/Resources/Documents/_sources/tutorials/getting-started.rst.txt new file mode 100644 index 0000000..0a3698b --- /dev/null +++ b/build.docset/Contents/Resources/Documents/_sources/tutorials/getting-started.rst.txt @@ -0,0 +1,301 @@ +Getting Started +=============== + +Doctrine is a project that aims to handle the persistence of your +domain model in a non-interfering way. Non-relational or no-sql +databases like MongoDB give you flexibility of building data store +around your object model and not vise versa. You can read more on the +initial configuration and setup in :doc:`Introduction to MongoDB Object +Document Mapper <../reference/introduction>`. This section will give you a basic +overview of what could be accomplished using Doctrine MongoDB ODM. + +Example Model: Simple Blog +-------------------------- + +To create the simplest example, let’s assume the following in a simple blog web application: + +- Blog has a user. +- Blog user can make blog posts + +A first prototype +----------------- + +For the above mentioned example, something as simple as this could be modeled with plain PHP classes. +First define the ``User`` document: + +.. code-block:: php + + + + + + + + + + + + + + + + + + + + + + + + + + .. code-block:: yaml + + Documents\User: + fields: + id: + type: id + id: true + name: + type: string + email: + type: string + referenceMany: + posts: + targetDocument: Documents\BlogPost + cascade: all + + Documents\BlogPost: + fields: + id: + type: id + id: true + title: + type: string + body: + type: string + createdAt: + type: date + +That’s it, we have our models, and we can save and retrieve them. Now +all we need to do is to properly instantiate the ``DocumentManager`` +instance. Read more about setting up the Doctrine MongoDB ODM in the +:doc:`Introduction to MongoDB Object Document Mapper <../reference/introduction>`: + +.. code-block:: php + + setProxyDir('/path/to/generate/proxies'); + $config->setProxyNamespace('Proxies'); + $config->setHydratorDir('/path/to/generate/hydrators'); + $config->setHydratorNamespace('Hydrators'); + $config->setMetadataDriverImpl(AnnotationDriver::create('/path/to/document/classes')); + + $dm = DocumentManager::create(new Connection(), $config); + +Usage +----- + +Here is how you would use your models now: + +.. code-block:: php + + setName('Bulat S.'); + $user->setEmail('email@example.com'); + + // tell Doctrine 2 to save $user on the next flush() + $dm->persist($user); + + // create blog post + $post = new BlogPost(); + $post->setTitle('My First Blog Post'); + $post->setBody('MongoDB + Doctrine 2 ODM = awesomeness!'); + $post->setCreatedAt(new DateTime()); + + $user->addPost($post); + + // store everything to MongoDB + $dm->flush(); + +.. note:: + + Note that you do not need to explicitly call persist on the ``$post`` because the operation + will cascade on to the reference automatically. + +Now if you did everything correctly, you should have those two objects +stored in MongoDB in correct collections and databases. You can use the +`php-mongodb-admin project, hosted on github`_ to look at your +``BlogPost`` collection, where you will see only one document: + +:: + + Array + ( + [_id] => 4bec5869fdc212081d000000 + [title] => My First Blog Post + [body] => MongoDB + Doctrine 2 ODM = awesomeness! + [createdAt] => MongoDate Object + ( + [sec] => 1273723200 + [usec] => 0 + ) + ) + +And the ``User`` collection would consist of the following: + +:: + + Array + ( + [_id] => 4bec5869fdc212081d010000 + [name] => Bulat S. + [email] => email@example.com + [posts] => Array + ( + [0] => Array + ( + [$ref] => blog_posts + [$id] => 4bec5869fdc212081d000000 + [$db] => test_database + ) + ) + ) + +You can retrieve the user later by its identifier: + +.. code-block:: php + + find('User', $userId); + +Or you can find the user by name even: + +.. code-block:: php + + getRepository('User')->findOneByName('Bulat S.'); + +If you want to iterate over the posts the user references it is as easy as the following: + +.. code-block:: php + + getPosts(); + foreach ($posts as $post) { + } + +You will notice that working with objects is nothing magical and you only have access to the properties, +getters and setters that you have defined yourself so the semantics are very clear. You can continue +reading about the MongoDB in the :doc:`Introduction to MongoDB Object Document Mapper <../reference/introduction>`. + +.. _php-mongodb-admin project, hosted on github: http://github.com/jwage/php-mongodb-admin diff --git a/build.docset/Contents/Resources/Documents/_static/ajax-loader.gif b/build.docset/Contents/Resources/Documents/_static/ajax-loader.gif new file mode 100644 index 0000000000000000000000000000000000000000..61faf8cab23993bd3e1560bff0668bd628642330 GIT binary patch literal 673 zcmZ?wbhEHb6krfw_{6~Q|Nno%(3)e{?)x>&1u}A`t?OF7Z|1gRivOgXi&7IyQd1Pl zGfOfQ60;I3a`F>X^fL3(@);C=vM_KlFfb_o=k{|A33hf2a5d61U}gjg=>Rd%XaNQW zW@Cw{|b%Y*pl8F?4B9 zlo4Fz*0kZGJabY|>}Okf0}CCg{u4`zEPY^pV?j2@h+|igy0+Kz6p;@SpM4s6)XEMg z#3Y4GX>Hjlml5ftdH$4x0JGdn8~MX(U~_^d!Hi)=HU{V%g+mi8#UGbE-*ao8f#h+S z2a0-5+vc7MU$e-NhmBjLIC1v|)9+Im8x1yacJ7{^tLX(ZhYi^rpmXm0`@ku9b53aN zEXH@Y3JaztblgpxbJt{AtE1ad1Ca>{v$rwwvK(>{m~Gf_=-Ro7Fk{#;i~+{{>QtvI yb2P8Zac~?~=sRA>$6{!(^3;ZP0TPFR(G_-UDU(8Jl0?(IXu$~#4A!880|o%~Al1tN literal 0 HcmV?d00001 diff --git a/build.docset/Contents/Resources/Documents/_static/arrows.jpg b/build.docset/Contents/Resources/Documents/_static/arrows.jpg new file mode 100644 index 0000000000000000000000000000000000000000..9ea7fae818057a4445e6ff9d9e64fab2900db9b4 GIT binary patch literal 5947 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 tbody > tr > td > ul { + padding-left: 0em; +} + +table.indextable tr.pcap { + height: 10px; +} + +table.indextable tr.cap { + margin-top: 10px; + background-color: #f2f2f2; +} + +img.toggler { + margin-right: 3px; + margin-top: 3px; + cursor: pointer; +} + +div.modindex-jumpbox { + border-top: 1px solid #ddd; + border-bottom: 1px solid #ddd; + margin: 1em 0 1em 0; + padding: 0.4em; +} + +div.genindex-jumpbox { + border-top: 1px solid #ddd; + border-bottom: 1px solid #ddd; + margin: 1em 0 1em 0; + padding: 0.4em; +} + +/* -- domain module index --------------------------------------------------- */ + +table.modindextable td { + padding: 2px; + border-collapse: collapse; +} + +/* -- general body styles --------------------------------------------------- */ + +div.body p, div.body dd, div.body li, div.body blockquote { + -moz-hyphens: auto; + -ms-hyphens: auto; + -webkit-hyphens: auto; + hyphens: auto; +} + +a.headerlink { + visibility: hidden; +} + +h1:hover > a.headerlink, +h2:hover > a.headerlink, +h3:hover > a.headerlink, +h4:hover > a.headerlink, +h5:hover > a.headerlink, +h6:hover > a.headerlink, +dt:hover > a.headerlink, +caption:hover > a.headerlink, +p.caption:hover > a.headerlink, +div.code-block-caption:hover > a.headerlink { + visibility: visible; +} + +div.body p.caption { + text-align: inherit; +} + +div.body td { + text-align: left; +} + +.first { + margin-top: 0 !important; +} + +p.rubric { + margin-top: 30px; + font-weight: bold; +} + +img.align-left, .figure.align-left, object.align-left { + clear: left; + float: left; + margin-right: 1em; +} + +img.align-right, .figure.align-right, object.align-right { + clear: right; + float: right; + margin-left: 1em; +} + +img.align-center, .figure.align-center, object.align-center { + display: block; + margin-left: auto; + margin-right: auto; +} + +.align-left { + text-align: left; +} + +.align-center { + text-align: center; +} + +.align-right { + text-align: right; +} + +/* -- sidebars -------------------------------------------------------------- */ + +div.sidebar { + margin: 0 0 0.5em 1em; + border: 1px solid #ddb; + padding: 7px 7px 0 7px; + background-color: #ffe; + width: 40%; + float: right; +} + +p.sidebar-title { + font-weight: bold; +} + +/* -- topics ---------------------------------------------------------------- */ + +div.topic { + border: 1px solid #ccc; + padding: 7px 7px 0 7px; + margin: 10px 0 10px 0; +} + +p.topic-title { + font-size: 1.1em; + font-weight: bold; + margin-top: 10px; +} + +/* -- admonitions ----------------------------------------------------------- */ + +div.admonition { + margin-top: 10px; + margin-bottom: 10px; + padding: 7px; +} + +div.admonition dt { + font-weight: bold; +} + +div.admonition dl { + margin-bottom: 0; +} + +p.admonition-title { + margin: 0px 10px 5px 0px; + font-weight: bold; +} + +div.body p.centered { + text-align: center; + margin-top: 25px; +} + +/* -- tables ---------------------------------------------------------------- */ + +table.docutils { + border: 0; + border-collapse: collapse; +} + +table caption span.caption-number { + font-style: italic; +} + +table caption span.caption-text { +} + +table.docutils td, table.docutils th { + padding: 1px 8px 1px 5px; + border-top: 0; + border-left: 0; + border-right: 0; + border-bottom: 1px solid #aaa; +} + +table.footnote td, table.footnote th { + border: 0 !important; +} + +th { + text-align: left; + padding-right: 5px; +} + +table.citation { + border-left: solid 1px gray; + margin-left: 1px; +} + +table.citation td { + border-bottom: none; +} + +/* -- figures --------------------------------------------------------------- */ + +div.figure { + margin: 0.5em; + padding: 0.5em; +} + +div.figure p.caption { + padding: 0.3em; +} + +div.figure p.caption span.caption-number { + font-style: italic; +} + +div.figure p.caption span.caption-text { +} + +/* -- field list styles ----------------------------------------------------- */ + +table.field-list td, table.field-list th { + border: 0 !important; +} + +.field-list ul { + margin: 0; + padding-left: 1em; +} + +.field-list p { + margin: 0; +} + +.field-name { + -moz-hyphens: manual; + -ms-hyphens: manual; + -webkit-hyphens: manual; + hyphens: manual; +} + +/* -- other body styles ----------------------------------------------------- */ + +ol.arabic { + list-style: decimal; +} + +ol.loweralpha { + list-style: lower-alpha; +} + +ol.upperalpha { + list-style: upper-alpha; +} + +ol.lowerroman { + list-style: lower-roman; +} + +ol.upperroman { + list-style: upper-roman; +} + +dl { + margin-bottom: 15px; +} + +dd p { + margin-top: 0px; +} + +dd ul, dd table { + margin-bottom: 10px; +} + +dd { + margin-top: 3px; + margin-bottom: 10px; + margin-left: 30px; +} + +dt:target, .highlighted { + background-color: #fbe54e; +} + +dl.glossary dt { + font-weight: bold; + font-size: 1.1em; +} + +.optional { + font-size: 1.3em; +} + +.sig-paren { + font-size: larger; +} + +.versionmodified { + font-style: italic; +} + +.system-message { + background-color: #fda; + padding: 5px; + border: 3px solid red; +} + +.footnote:target { + background-color: #ffa; +} + +.line-block { + display: block; + margin-top: 1em; + margin-bottom: 1em; +} + +.line-block .line-block { + margin-top: 0; + margin-bottom: 0; + margin-left: 1.5em; +} + +.guilabel, .menuselection { + font-family: sans-serif; +} + +.accelerator { + text-decoration: underline; +} + +.classifier { + font-style: oblique; +} + +abbr, acronym { + border-bottom: dotted 1px; + cursor: help; +} + +/* -- code displays --------------------------------------------------------- */ + +pre { + overflow: auto; + overflow-y: hidden; /* fixes display issues on Chrome browsers */ +} + +span.pre { + -moz-hyphens: none; + -ms-hyphens: none; + -webkit-hyphens: none; + hyphens: none; +} + +td.linenos pre { + padding: 5px 0px; + border: 0; + background-color: transparent; + color: #aaa; +} + +table.highlighttable { + margin-left: 0.5em; +} + +table.highlighttable td { + padding: 0 0.5em 0 0.5em; +} + +div.code-block-caption { + padding: 2px 5px; + font-size: small; +} + +div.code-block-caption code { + background-color: transparent; +} + +div.code-block-caption + div > div.highlight > pre { + margin-top: 0; +} + +div.code-block-caption span.caption-number { + padding: 0.1em 0.3em; + font-style: italic; +} + +div.code-block-caption span.caption-text { +} + +div.literal-block-wrapper { + padding: 1em 1em 0; +} + +div.literal-block-wrapper div.highlight { + margin: 0; +} + +code.descname { + background-color: transparent; + font-weight: bold; + font-size: 1.2em; +} + +code.descclassname { + background-color: transparent; +} + +code.xref, a code { + background-color: transparent; + font-weight: bold; +} + +h1 code, h2 code, h3 code, h4 code, h5 code, h6 code { + background-color: transparent; +} + +.viewcode-link { + float: right; +} + +.viewcode-back { + float: right; + font-family: sans-serif; +} + +div.viewcode-block:target { + margin: -1px -10px; + padding: 0 10px; +} + +/* -- math display ---------------------------------------------------------- */ + +img.math { + vertical-align: middle; +} + +div.body div.math p { + text-align: center; +} + +span.eqno { + float: right; +} + +span.eqno a.headerlink { + position: relative; + left: 0px; + z-index: 1; +} + +div.math:hover a.headerlink { + visibility: visible; +} + +/* -- printout stylesheet --------------------------------------------------- */ + +@media print { + div.document, + div.documentwrapper, + div.bodywrapper { + margin: 0 !important; + width: 100%; + } + + div.sphinxsidebar, + div.related, + div.footer, + #top-link { + display: none; + } +} \ No newline at end of file diff --git a/build.docset/Contents/Resources/Documents/_static/bg-gradient.jpg b/build.docset/Contents/Resources/Documents/_static/bg-gradient.jpg new file mode 100644 index 0000000000000000000000000000000000000000..e48d841cbf6b1d3f46f50171c02a26b8ca6761b9 GIT binary patch literal 3704 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 literal 0 HcmV?d00001 diff --git a/build.docset/Contents/Resources/Documents/_static/bl-corner.gif b/build.docset/Contents/Resources/Documents/_static/bl-corner.gif new file mode 100644 index 0000000000000000000000000000000000000000..f40f7fcc424589a119e6c132820677f0a7cbae23 GIT binary patch literal 108 zcmZ?wbhEHb li { + margin-left: 30px; + } + .row-fluid .thumbnails { + margin-left: 0; + } +} + +@media (min-width: 768px) and (max-width: 979px) { + .row { + margin-left: -20px; + *zoom: 1; + } + .row:before, + .row:after { + display: table; + line-height: 0; + content: ""; + } + .row:after { + clear: both; + } + [class*="span"] { + float: left; + min-height: 1px; + margin-left: 20px; + } + .container, + .navbar-static-top .container, + .navbar-fixed-top .container, + .navbar-fixed-bottom .container { + width: 724px; + } + .span12 { + width: 724px; + } + .span11 { + width: 662px; + } + .span10 { + width: 600px; + } + .span9 { + width: 538px; + } + .span8 { + width: 476px; + } + .span7 { + width: 414px; + } + .span6 { + width: 352px; + } + .span5 { + width: 290px; + } + .span4 { + width: 228px; + } + .span3 { + width: 166px; + } + .span2 { + width: 104px; + } + .span1 { + width: 42px; + } + .offset12 { + margin-left: 764px; + } + .offset11 { + margin-left: 702px; + } + .offset10 { + margin-left: 640px; + } + .offset9 { + margin-left: 578px; + } + .offset8 { + margin-left: 516px; + } + .offset7 { + margin-left: 454px; + } + .offset6 { + margin-left: 392px; + } + .offset5 { + margin-left: 330px; + } + .offset4 { + margin-left: 268px; + } + .offset3 { + margin-left: 206px; + } + .offset2 { + margin-left: 144px; + } + .offset1 { + margin-left: 82px; + } + .row-fluid { + width: 100%; + *zoom: 1; + } + .row-fluid:before, + .row-fluid:after { + display: table; + line-height: 0; + content: ""; + } + .row-fluid:after { + clear: both; + } + .row-fluid [class*="span"] { + display: block; + float: left; + width: 100%; + min-height: 30px; + margin-left: 2.7624309392265194%; + *margin-left: 2.709239449864817%; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + } + .row-fluid [class*="span"]:first-child { + margin-left: 0; + } + .row-fluid .controls-row [class*="span"] + [class*="span"] { + margin-left: 2.7624309392265194%; + } + .row-fluid .span12 { + width: 100%; + *width: 99.94680851063829%; + } + .row-fluid .span11 { + width: 91.43646408839778%; + *width: 91.38327259903608%; + } + .row-fluid .span10 { + width: 82.87292817679558%; + *width: 82.81973668743387%; + } + .row-fluid .span9 { + width: 74.30939226519337%; + *width: 74.25620077583166%; + } + .row-fluid .span8 { + width: 65.74585635359117%; + *width: 65.69266486422946%; + } + .row-fluid .span7 { + width: 57.18232044198895%; + *width: 57.12912895262725%; + } + .row-fluid .span6 { + width: 48.61878453038674%; + *width: 48.56559304102504%; + } + .row-fluid .span5 { + width: 40.05524861878453%; + *width: 40.00205712942283%; + } + .row-fluid .span4 { + width: 31.491712707182323%; + *width: 31.43852121782062%; + } + .row-fluid .span3 { + width: 22.92817679558011%; + *width: 22.87498530621841%; + } + .row-fluid .span2 { + width: 14.3646408839779%; + *width: 14.311449394616199%; + } + .row-fluid .span1 { + width: 5.801104972375691%; + *width: 5.747913483013988%; + } + .row-fluid .offset12 { + margin-left: 105.52486187845304%; + *margin-left: 105.41847889972962%; + } + .row-fluid .offset12:first-child { + margin-left: 102.76243093922652%; + *margin-left: 102.6560479605031%; + } + .row-fluid .offset11 { + margin-left: 96.96132596685082%; + *margin-left: 96.8549429881274%; + } + .row-fluid .offset11:first-child { + margin-left: 94.1988950276243%; + *margin-left: 94.09251204890089%; + } + .row-fluid .offset10 { + margin-left: 88.39779005524862%; + *margin-left: 88.2914070765252%; + } + .row-fluid .offset10:first-child { + margin-left: 85.6353591160221%; + *margin-left: 85.52897613729868%; + } + .row-fluid .offset9 { + margin-left: 79.8342541436464%; + *margin-left: 79.72787116492299%; + } + .row-fluid .offset9:first-child { + margin-left: 77.07182320441989%; + *margin-left: 76.96544022569647%; + } + .row-fluid .offset8 { + margin-left: 71.2707182320442%; + *margin-left: 71.16433525332079%; + } + .row-fluid .offset8:first-child { + margin-left: 68.50828729281768%; + *margin-left: 68.40190431409427%; + } + .row-fluid .offset7 { + margin-left: 62.70718232044199%; + *margin-left: 62.600799341718584%; + } + .row-fluid .offset7:first-child { + margin-left: 59.94475138121547%; + *margin-left: 59.838368402492065%; + } + .row-fluid .offset6 { + margin-left: 54.14364640883978%; + *margin-left: 54.037263430116376%; + } + .row-fluid .offset6:first-child { + margin-left: 51.38121546961326%; + *margin-left: 51.27483249088986%; + } + .row-fluid .offset5 { + margin-left: 45.58011049723757%; + *margin-left: 45.47372751851417%; + } + .row-fluid .offset5:first-child { + margin-left: 42.81767955801105%; + *margin-left: 42.71129657928765%; + } + .row-fluid .offset4 { + margin-left: 37.01657458563536%; + *margin-left: 36.91019160691196%; + } + .row-fluid .offset4:first-child { + margin-left: 34.25414364640884%; + *margin-left: 34.14776066768544%; + } + .row-fluid .offset3 { + margin-left: 28.45303867403315%; + *margin-left: 28.346655695309746%; + } + .row-fluid .offset3:first-child { + margin-left: 25.69060773480663%; + *margin-left: 25.584224756083227%; + } + .row-fluid .offset2 { + margin-left: 19.88950276243094%; + *margin-left: 19.783119783707537%; + } + .row-fluid .offset2:first-child { + margin-left: 17.12707182320442%; + *margin-left: 17.02068884448102%; + } + .row-fluid .offset1 { + margin-left: 11.32596685082873%; + *margin-left: 11.219583872105325%; + } + .row-fluid .offset1:first-child { + margin-left: 8.56353591160221%; + *margin-left: 8.457152932878806%; + } + input, + textarea, + .uneditable-input { + margin-left: 0; + } + .controls-row [class*="span"] + [class*="span"] { + margin-left: 20px; + } + input.span12, + textarea.span12, + .uneditable-input.span12 { + width: 710px; + } + input.span11, + textarea.span11, + .uneditable-input.span11 { + width: 648px; + } + input.span10, + textarea.span10, + .uneditable-input.span10 { + width: 586px; + } + input.span9, + textarea.span9, + .uneditable-input.span9 { + width: 524px; + } + input.span8, + textarea.span8, + .uneditable-input.span8 { + width: 462px; + } + input.span7, + textarea.span7, + .uneditable-input.span7 { + width: 400px; + } + input.span6, + textarea.span6, + .uneditable-input.span6 { + width: 338px; + } + input.span5, + textarea.span5, + .uneditable-input.span5 { + width: 276px; + } + input.span4, + textarea.span4, + .uneditable-input.span4 { + width: 214px; + } + input.span3, + textarea.span3, + .uneditable-input.span3 { + width: 152px; + } + input.span2, + textarea.span2, + .uneditable-input.span2 { + width: 90px; + } + input.span1, + textarea.span1, + .uneditable-input.span1 { + width: 28px; + } +} + +@media (max-width: 767px) { + body { + padding-right: 20px; + padding-left: 20px; + } + .navbar-fixed-top, + .navbar-fixed-bottom, + .navbar-static-top { + margin-right: -20px; + margin-left: -20px; + } + .container-fluid { + padding: 0; + } + .dl-horizontal dt { + float: none; + width: auto; + clear: none; + text-align: left; + } + .dl-horizontal dd { + margin-left: 0; + } + .container { + width: auto; + } + .row-fluid { + width: 100%; + } + .row, + .thumbnails { + margin-left: 0; + } + .thumbnails > li { + float: none; + margin-left: 0; + } + [class*="span"], + .uneditable-input[class*="span"], + .row-fluid [class*="span"] { + display: block; + float: none; + width: 100%; + margin-left: 0; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + } + .span12, + .row-fluid .span12 { + width: 100%; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + } + .row-fluid [class*="offset"]:first-child { + margin-left: 0; + } + .input-large, + .input-xlarge, + .input-xxlarge, + input[class*="span"], + select[class*="span"], + textarea[class*="span"], + .uneditable-input { + display: block; + width: 100%; + min-height: 30px; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + } + .input-prepend input, + .input-append input, + .input-prepend input[class*="span"], + .input-append input[class*="span"] { + display: inline-block; + width: auto; + } + .controls-row [class*="span"] + [class*="span"] { + margin-left: 0; + } + .modal { + position: fixed; + top: 20px; + right: 20px; + left: 20px; + width: auto; + margin: 0; + } + .modal.fade { + top: -100px; + } + .modal.fade.in { + top: 20px; + } +} + +@media (max-width: 480px) { + .nav-collapse { + -webkit-transform: translate3d(0, 0, 0); + } + .page-header h1 small { + display: block; + line-height: 20px; + } + input[type="checkbox"], + input[type="radio"] { + border: 1px solid #ccc; + } + .form-horizontal .control-label { + float: none; + width: auto; + padding-top: 0; + text-align: left; + } + .form-horizontal .controls { + margin-left: 0; + } + .form-horizontal .control-list { + padding-top: 0; + } + .form-horizontal .form-actions { + padding-right: 10px; + padding-left: 10px; + } + .media .pull-left, + .media .pull-right { + display: block; + float: none; + margin-bottom: 10px; + } + .media-object { + margin-right: 0; + margin-left: 0; + } + .modal { + top: 10px; + right: 10px; + left: 10px; + } + .modal-header .close { + padding: 10px; + margin: -10px; + } + .carousel-caption { + position: static; + } +} + +@media (max-width: 979px) { + body { + padding-top: 0; + } + .navbar-fixed-top, + .navbar-fixed-bottom { + position: static; + } + .navbar-fixed-top { + margin-bottom: 20px; + } + .navbar-fixed-bottom { + margin-top: 20px; + } + .navbar-fixed-top .navbar-inner, + .navbar-fixed-bottom .navbar-inner { + padding: 5px; + } + .navbar .container { + width: auto; + padding: 0; + } + .navbar .brand { + padding-right: 10px; + padding-left: 10px; + margin: 0 0 0 -5px; + } + .nav-collapse { + clear: both; + } + .nav-collapse .nav { + float: none; + margin: 0 0 10px; + } + .nav-collapse .nav > li { + float: none; + } + .nav-collapse .nav > li > a { + margin-bottom: 2px; + } + .nav-collapse .nav > .divider-vertical { + display: none; + } + .nav-collapse .nav .nav-header { + color: #777777; + text-shadow: none; + } + .nav-collapse .nav > li > a, + .nav-collapse .dropdown-menu a { + padding: 9px 15px; + font-weight: bold; + color: #777777; + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + border-radius: 3px; + } + .nav-collapse .btn { + padding: 4px 10px 4px; + font-weight: normal; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; + } + .nav-collapse .dropdown-menu li + li a { + margin-bottom: 2px; + } + .nav-collapse .nav > li > a:hover, + .nav-collapse .dropdown-menu a:hover { + background-color: #f2f2f2; + } + .navbar-inverse .nav-collapse .nav > li > a, + .navbar-inverse .nav-collapse .dropdown-menu a { + color: #999999; + } + .navbar-inverse .nav-collapse .nav > li > a:hover, + .navbar-inverse .nav-collapse .dropdown-menu a:hover { + background-color: #111111; + } + .nav-collapse.in .btn-group { + padding: 0; + margin-top: 5px; + } + .nav-collapse .dropdown-menu { + position: static; + top: auto; + left: auto; + display: none; + float: none; + max-width: none; + padding: 0; + margin: 0 15px; + background-color: transparent; + border: none; + -webkit-border-radius: 0; + -moz-border-radius: 0; + border-radius: 0; + -webkit-box-shadow: none; + -moz-box-shadow: none; + box-shadow: none; + } + .nav-collapse .open > .dropdown-menu { + display: block; + } + .nav-collapse .dropdown-menu:before, + .nav-collapse .dropdown-menu:after { + display: none; + } + .nav-collapse .dropdown-menu .divider { + display: none; + } + .nav-collapse .nav > li > .dropdown-menu:before, + .nav-collapse .nav > li > .dropdown-menu:after { + display: none; + } + .nav-collapse .navbar-form, + .nav-collapse .navbar-search { + float: none; + padding: 10px 15px; + margin: 10px 0; + border-top: 1px solid #f2f2f2; + border-bottom: 1px solid #f2f2f2; + -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1); + -moz-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1); + box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1); + } + .navbar-inverse .nav-collapse .navbar-form, + .navbar-inverse .nav-collapse .navbar-search { + border-top-color: #111111; + border-bottom-color: #111111; + } + .navbar .nav-collapse .nav.pull-right { + float: none; + margin-left: 0; + } + .nav-collapse, + .nav-collapse.collapse { + height: 0; + overflow: hidden; + } + .navbar .btn-navbar { + display: block; + } + .navbar-static .navbar-inner { + padding-right: 10px; + padding-left: 10px; + } +} + +@media (min-width: 980px) { + .nav-collapse.collapse { + height: auto !important; + overflow: visible !important; + } +} diff --git a/build.docset/Contents/Resources/Documents/_static/bootstrap/css/bootstrap-responsive.min.css b/build.docset/Contents/Resources/Documents/_static/bootstrap/css/bootstrap-responsive.min.css new file mode 100644 index 0000000..5cb833f --- /dev/null +++ b/build.docset/Contents/Resources/Documents/_static/bootstrap/css/bootstrap-responsive.min.css @@ -0,0 +1,9 @@ +/*! + * Bootstrap Responsive v2.2.2 + * + * Copyright 2012 Twitter, Inc + * Licensed under the Apache License v2.0 + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Designed and built with all the love in the world @twitter by @mdo and @fat. + */@-ms-viewport{width:device-width}.clearfix{*zoom:1}.clearfix:before,.clearfix:after{display:table;line-height:0;content:""}.clearfix:after{clear:both}.hide-text{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.input-block-level{display:block;width:100%;min-height:30px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.hidden{display:none;visibility:hidden}.visible-phone{display:none!important}.visible-tablet{display:none!important}.hidden-desktop{display:none!important}.visible-desktop{display:inherit!important}@media(min-width:768px) and (max-width:979px){.hidden-desktop{display:inherit!important}.visible-desktop{display:none!important}.visible-tablet{display:inherit!important}.hidden-tablet{display:none!important}}@media(max-width:767px){.hidden-desktop{display:inherit!important}.visible-desktop{display:none!important}.visible-phone{display:inherit!important}.hidden-phone{display:none!important}}@media(min-width:1200px){.row{margin-left:-30px;*zoom:1}.row:before,.row:after{display:table;line-height:0;content:""}.row:after{clear:both}[class*="span"]{float:left;min-height:1px;margin-left:30px}.container,.navbar-static-top .container,.navbar-fixed-top .container,.navbar-fixed-bottom .container{width:1170px}.span12{width:1170px}.span11{width:1070px}.span10{width:970px}.span9{width:870px}.span8{width:770px}.span7{width:670px}.span6{width:570px}.span5{width:470px}.span4{width:370px}.span3{width:270px}.span2{width:170px}.span1{width:70px}.offset12{margin-left:1230px}.offset11{margin-left:1130px}.offset10{margin-left:1030px}.offset9{margin-left:930px}.offset8{margin-left:830px}.offset7{margin-left:730px}.offset6{margin-left:630px}.offset5{margin-left:530px}.offset4{margin-left:430px}.offset3{margin-left:330px}.offset2{margin-left:230px}.offset1{margin-left:130px}.row-fluid{width:100%;*zoom:1}.row-fluid:before,.row-fluid:after{display:table;line-height:0;content:""}.row-fluid:after{clear:both}.row-fluid [class*="span"]{display:block;float:left;width:100%;min-height:30px;margin-left:2.564102564102564%;*margin-left:2.5109110747408616%;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.row-fluid [class*="span"]:first-child{margin-left:0}.row-fluid .controls-row [class*="span"]+[class*="span"]{margin-left:2.564102564102564%}.row-fluid .span12{width:100%;*width:99.94680851063829%}.row-fluid .span11{width:91.45299145299145%;*width:91.39979996362975%}.row-fluid .span10{width:82.90598290598291%;*width:82.8527914166212%}.row-fluid .span9{width:74.35897435897436%;*width:74.30578286961266%}.row-fluid .span8{width:65.81196581196582%;*width:65.75877432260411%}.row-fluid .span7{width:57.26495726495726%;*width:57.21176577559556%}.row-fluid .span6{width:48.717948717948715%;*width:48.664757228587014%}.row-fluid .span5{width:40.17094017094017%;*width:40.11774868157847%}.row-fluid .span4{width:31.623931623931625%;*width:31.570740134569924%}.row-fluid .span3{width:23.076923076923077%;*width:23.023731587561375%}.row-fluid .span2{width:14.52991452991453%;*width:14.476723040552828%}.row-fluid .span1{width:5.982905982905983%;*width:5.929714493544281%}.row-fluid .offset12{margin-left:105.12820512820512%;*margin-left:105.02182214948171%}.row-fluid .offset12:first-child{margin-left:102.56410256410257%;*margin-left:102.45771958537915%}.row-fluid .offset11{margin-left:96.58119658119658%;*margin-left:96.47481360247316%}.row-fluid .offset11:first-child{margin-left:94.01709401709402%;*margin-left:93.91071103837061%}.row-fluid .offset10{margin-left:88.03418803418803%;*margin-left:87.92780505546462%}.row-fluid .offset10:first-child{margin-left:85.47008547008548%;*margin-left:85.36370249136206%}.row-fluid .offset9{margin-left:79.48717948717949%;*margin-left:79.38079650845607%}.row-fluid .offset9:first-child{margin-left:76.92307692307693%;*margin-left:76.81669394435352%}.row-fluid .offset8{margin-left:70.94017094017094%;*margin-left:70.83378796144753%}.row-fluid .offset8:first-child{margin-left:68.37606837606839%;*margin-left:68.26968539734497%}.row-fluid .offset7{margin-left:62.393162393162385%;*margin-left:62.28677941443899%}.row-fluid .offset7:first-child{margin-left:59.82905982905982%;*margin-left:59.72267685033642%}.row-fluid .offset6{margin-left:53.84615384615384%;*margin-left:53.739770867430444%}.row-fluid .offset6:first-child{margin-left:51.28205128205128%;*margin-left:51.175668303327875%}.row-fluid .offset5{margin-left:45.299145299145295%;*margin-left:45.1927623204219%}.row-fluid .offset5:first-child{margin-left:42.73504273504273%;*margin-left:42.62865975631933%}.row-fluid .offset4{margin-left:36.75213675213675%;*margin-left:36.645753773413354%}.row-fluid .offset4:first-child{margin-left:34.18803418803419%;*margin-left:34.081651209310785%}.row-fluid .offset3{margin-left:28.205128205128204%;*margin-left:28.0987452264048%}.row-fluid .offset3:first-child{margin-left:25.641025641025642%;*margin-left:25.53464266230224%}.row-fluid .offset2{margin-left:19.65811965811966%;*margin-left:19.551736679396257%}.row-fluid .offset2:first-child{margin-left:17.094017094017094%;*margin-left:16.98763411529369%}.row-fluid .offset1{margin-left:11.11111111111111%;*margin-left:11.004728132387708%}.row-fluid .offset1:first-child{margin-left:8.547008547008547%;*margin-left:8.440625568285142%}input,textarea,.uneditable-input{margin-left:0}.controls-row [class*="span"]+[class*="span"]{margin-left:30px}input.span12,textarea.span12,.uneditable-input.span12{width:1156px}input.span11,textarea.span11,.uneditable-input.span11{width:1056px}input.span10,textarea.span10,.uneditable-input.span10{width:956px}input.span9,textarea.span9,.uneditable-input.span9{width:856px}input.span8,textarea.span8,.uneditable-input.span8{width:756px}input.span7,textarea.span7,.uneditable-input.span7{width:656px}input.span6,textarea.span6,.uneditable-input.span6{width:556px}input.span5,textarea.span5,.uneditable-input.span5{width:456px}input.span4,textarea.span4,.uneditable-input.span4{width:356px}input.span3,textarea.span3,.uneditable-input.span3{width:256px}input.span2,textarea.span2,.uneditable-input.span2{width:156px}input.span1,textarea.span1,.uneditable-input.span1{width:56px}.thumbnails{margin-left:-30px}.thumbnails>li{margin-left:30px}.row-fluid .thumbnails{margin-left:0}}@media(min-width:768px) and (max-width:979px){.row{margin-left:-20px;*zoom:1}.row:before,.row:after{display:table;line-height:0;content:""}.row:after{clear:both}[class*="span"]{float:left;min-height:1px;margin-left:20px}.container,.navbar-static-top .container,.navbar-fixed-top .container,.navbar-fixed-bottom .container{width:724px}.span12{width:724px}.span11{width:662px}.span10{width:600px}.span9{width:538px}.span8{width:476px}.span7{width:414px}.span6{width:352px}.span5{width:290px}.span4{width:228px}.span3{width:166px}.span2{width:104px}.span1{width:42px}.offset12{margin-left:764px}.offset11{margin-left:702px}.offset10{margin-left:640px}.offset9{margin-left:578px}.offset8{margin-left:516px}.offset7{margin-left:454px}.offset6{margin-left:392px}.offset5{margin-left:330px}.offset4{margin-left:268px}.offset3{margin-left:206px}.offset2{margin-left:144px}.offset1{margin-left:82px}.row-fluid{width:100%;*zoom:1}.row-fluid:before,.row-fluid:after{display:table;line-height:0;content:""}.row-fluid:after{clear:both}.row-fluid [class*="span"]{display:block;float:left;width:100%;min-height:30px;margin-left:2.7624309392265194%;*margin-left:2.709239449864817%;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.row-fluid [class*="span"]:first-child{margin-left:0}.row-fluid .controls-row [class*="span"]+[class*="span"]{margin-left:2.7624309392265194%}.row-fluid .span12{width:100%;*width:99.94680851063829%}.row-fluid .span11{width:91.43646408839778%;*width:91.38327259903608%}.row-fluid .span10{width:82.87292817679558%;*width:82.81973668743387%}.row-fluid .span9{width:74.30939226519337%;*width:74.25620077583166%}.row-fluid .span8{width:65.74585635359117%;*width:65.69266486422946%}.row-fluid .span7{width:57.18232044198895%;*width:57.12912895262725%}.row-fluid .span6{width:48.61878453038674%;*width:48.56559304102504%}.row-fluid .span5{width:40.05524861878453%;*width:40.00205712942283%}.row-fluid .span4{width:31.491712707182323%;*width:31.43852121782062%}.row-fluid .span3{width:22.92817679558011%;*width:22.87498530621841%}.row-fluid .span2{width:14.3646408839779%;*width:14.311449394616199%}.row-fluid .span1{width:5.801104972375691%;*width:5.747913483013988%}.row-fluid .offset12{margin-left:105.52486187845304%;*margin-left:105.41847889972962%}.row-fluid .offset12:first-child{margin-left:102.76243093922652%;*margin-left:102.6560479605031%}.row-fluid .offset11{margin-left:96.96132596685082%;*margin-left:96.8549429881274%}.row-fluid .offset11:first-child{margin-left:94.1988950276243%;*margin-left:94.09251204890089%}.row-fluid .offset10{margin-left:88.39779005524862%;*margin-left:88.2914070765252%}.row-fluid .offset10:first-child{margin-left:85.6353591160221%;*margin-left:85.52897613729868%}.row-fluid .offset9{margin-left:79.8342541436464%;*margin-left:79.72787116492299%}.row-fluid .offset9:first-child{margin-left:77.07182320441989%;*margin-left:76.96544022569647%}.row-fluid .offset8{margin-left:71.2707182320442%;*margin-left:71.16433525332079%}.row-fluid .offset8:first-child{margin-left:68.50828729281768%;*margin-left:68.40190431409427%}.row-fluid .offset7{margin-left:62.70718232044199%;*margin-left:62.600799341718584%}.row-fluid .offset7:first-child{margin-left:59.94475138121547%;*margin-left:59.838368402492065%}.row-fluid .offset6{margin-left:54.14364640883978%;*margin-left:54.037263430116376%}.row-fluid .offset6:first-child{margin-left:51.38121546961326%;*margin-left:51.27483249088986%}.row-fluid .offset5{margin-left:45.58011049723757%;*margin-left:45.47372751851417%}.row-fluid .offset5:first-child{margin-left:42.81767955801105%;*margin-left:42.71129657928765%}.row-fluid .offset4{margin-left:37.01657458563536%;*margin-left:36.91019160691196%}.row-fluid .offset4:first-child{margin-left:34.25414364640884%;*margin-left:34.14776066768544%}.row-fluid .offset3{margin-left:28.45303867403315%;*margin-left:28.346655695309746%}.row-fluid .offset3:first-child{margin-left:25.69060773480663%;*margin-left:25.584224756083227%}.row-fluid .offset2{margin-left:19.88950276243094%;*margin-left:19.783119783707537%}.row-fluid .offset2:first-child{margin-left:17.12707182320442%;*margin-left:17.02068884448102%}.row-fluid .offset1{margin-left:11.32596685082873%;*margin-left:11.219583872105325%}.row-fluid .offset1:first-child{margin-left:8.56353591160221%;*margin-left:8.457152932878806%}input,textarea,.uneditable-input{margin-left:0}.controls-row [class*="span"]+[class*="span"]{margin-left:20px}input.span12,textarea.span12,.uneditable-input.span12{width:710px}input.span11,textarea.span11,.uneditable-input.span11{width:648px}input.span10,textarea.span10,.uneditable-input.span10{width:586px}input.span9,textarea.span9,.uneditable-input.span9{width:524px}input.span8,textarea.span8,.uneditable-input.span8{width:462px}input.span7,textarea.span7,.uneditable-input.span7{width:400px}input.span6,textarea.span6,.uneditable-input.span6{width:338px}input.span5,textarea.span5,.uneditable-input.span5{width:276px}input.span4,textarea.span4,.uneditable-input.span4{width:214px}input.span3,textarea.span3,.uneditable-input.span3{width:152px}input.span2,textarea.span2,.uneditable-input.span2{width:90px}input.span1,textarea.span1,.uneditable-input.span1{width:28px}}@media(max-width:767px){body{padding-right:20px;padding-left:20px}.navbar-fixed-top,.navbar-fixed-bottom,.navbar-static-top{margin-right:-20px;margin-left:-20px}.container-fluid{padding:0}.dl-horizontal dt{float:none;width:auto;clear:none;text-align:left}.dl-horizontal dd{margin-left:0}.container{width:auto}.row-fluid{width:100%}.row,.thumbnails{margin-left:0}.thumbnails>li{float:none;margin-left:0}[class*="span"],.uneditable-input[class*="span"],.row-fluid [class*="span"]{display:block;float:none;width:100%;margin-left:0;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.span12,.row-fluid .span12{width:100%;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.row-fluid [class*="offset"]:first-child{margin-left:0}.input-large,.input-xlarge,.input-xxlarge,input[class*="span"],select[class*="span"],textarea[class*="span"],.uneditable-input{display:block;width:100%;min-height:30px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.input-prepend input,.input-append input,.input-prepend input[class*="span"],.input-append input[class*="span"]{display:inline-block;width:auto}.controls-row [class*="span"]+[class*="span"]{margin-left:0}.modal{position:fixed;top:20px;right:20px;left:20px;width:auto;margin:0}.modal.fade{top:-100px}.modal.fade.in{top:20px}}@media(max-width:480px){.nav-collapse{-webkit-transform:translate3d(0,0,0)}.page-header h1 small{display:block;line-height:20px}input[type="checkbox"],input[type="radio"]{border:1px solid #ccc}.form-horizontal .control-label{float:none;width:auto;padding-top:0;text-align:left}.form-horizontal .controls{margin-left:0}.form-horizontal .control-list{padding-top:0}.form-horizontal .form-actions{padding-right:10px;padding-left:10px}.media .pull-left,.media .pull-right{display:block;float:none;margin-bottom:10px}.media-object{margin-right:0;margin-left:0}.modal{top:10px;right:10px;left:10px}.modal-header .close{padding:10px;margin:-10px}.carousel-caption{position:static}}@media(max-width:979px){body{padding-top:0}.navbar-fixed-top,.navbar-fixed-bottom{position:static}.navbar-fixed-top{margin-bottom:20px}.navbar-fixed-bottom{margin-top:20px}.navbar-fixed-top .navbar-inner,.navbar-fixed-bottom .navbar-inner{padding:5px}.navbar .container{width:auto;padding:0}.navbar .brand{padding-right:10px;padding-left:10px;margin:0 0 0 -5px}.nav-collapse{clear:both}.nav-collapse .nav{float:none;margin:0 0 10px}.nav-collapse .nav>li{float:none}.nav-collapse .nav>li>a{margin-bottom:2px}.nav-collapse .nav>.divider-vertical{display:none}.nav-collapse .nav .nav-header{color:#777;text-shadow:none}.nav-collapse .nav>li>a,.nav-collapse .dropdown-menu a{padding:9px 15px;font-weight:bold;color:#777;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px}.nav-collapse .btn{padding:4px 10px 4px;font-weight:normal;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}.nav-collapse .dropdown-menu li+li a{margin-bottom:2px}.nav-collapse .nav>li>a:hover,.nav-collapse .dropdown-menu a:hover{background-color:#f2f2f2}.navbar-inverse .nav-collapse .nav>li>a,.navbar-inverse .nav-collapse .dropdown-menu a{color:#999}.navbar-inverse .nav-collapse .nav>li>a:hover,.navbar-inverse .nav-collapse .dropdown-menu a:hover{background-color:#111}.nav-collapse.in .btn-group{padding:0;margin-top:5px}.nav-collapse .dropdown-menu{position:static;top:auto;left:auto;display:none;float:none;max-width:none;padding:0;margin:0 15px;background-color:transparent;border:0;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none}.nav-collapse .open>.dropdown-menu{display:block}.nav-collapse .dropdown-menu:before,.nav-collapse .dropdown-menu:after{display:none}.nav-collapse .dropdown-menu .divider{display:none}.nav-collapse .nav>li>.dropdown-menu:before,.nav-collapse .nav>li>.dropdown-menu:after{display:none}.nav-collapse .navbar-form,.nav-collapse .navbar-search{float:none;padding:10px 15px;margin:10px 0;border-top:1px solid #f2f2f2;border-bottom:1px solid #f2f2f2;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,0.1),0 1px 0 rgba(255,255,255,0.1);-moz-box-shadow:inset 0 1px 0 rgba(255,255,255,0.1),0 1px 0 rgba(255,255,255,0.1);box-shadow:inset 0 1px 0 rgba(255,255,255,0.1),0 1px 0 rgba(255,255,255,0.1)}.navbar-inverse .nav-collapse .navbar-form,.navbar-inverse .nav-collapse .navbar-search{border-top-color:#111;border-bottom-color:#111}.navbar .nav-collapse .nav.pull-right{float:none;margin-left:0}.nav-collapse,.nav-collapse.collapse{height:0;overflow:hidden}.navbar .btn-navbar{display:block}.navbar-static .navbar-inner{padding-right:10px;padding-left:10px}}@media(min-width:980px){.nav-collapse.collapse{height:auto!important;overflow:visible!important}} diff --git a/build.docset/Contents/Resources/Documents/_static/bootstrap/css/bootstrap.css b/build.docset/Contents/Resources/Documents/_static/bootstrap/css/bootstrap.css new file mode 100644 index 0000000..8ab3cef --- /dev/null +++ b/build.docset/Contents/Resources/Documents/_static/bootstrap/css/bootstrap.css @@ -0,0 +1,6039 @@ +/*! + * Bootstrap v2.2.2 + * + * Copyright 2012 Twitter, Inc + * Licensed under the Apache License v2.0 + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Designed and built with all the love in the world @twitter by @mdo and @fat. + */ + +article, +aside, +details, +figcaption, +figure, +footer, +header, +hgroup, +nav, +section { + display: block; +} + +audio, +canvas, +video { + display: inline-block; + *display: inline; + *zoom: 1; +} + +audio:not([controls]) { + display: none; +} + +html { + font-size: 100%; + -webkit-text-size-adjust: 100%; + -ms-text-size-adjust: 100%; +} + +a:focus { + outline: thin dotted #333; + outline: 5px auto -webkit-focus-ring-color; + outline-offset: -2px; +} + +a:hover, +a:active { + outline: 0; +} + +sub, +sup { + position: relative; + font-size: 75%; + line-height: 0; + vertical-align: baseline; +} + +sup { + top: -0.5em; +} + +sub { + bottom: -0.25em; +} + +img { + width: auto\9; + height: auto; + max-width: 100%; + vertical-align: middle; + border: 0; + -ms-interpolation-mode: bicubic; +} + +#map_canvas img, +.google-maps img { + max-width: none; +} + +button, +input, +select, +textarea { + margin: 0; + font-size: 100%; + vertical-align: middle; +} + +button, +input { + *overflow: visible; + line-height: normal; +} + +button::-moz-focus-inner, +input::-moz-focus-inner { + padding: 0; + border: 0; +} + +button, +html input[type="button"], +input[type="reset"], +input[type="submit"] { + cursor: pointer; + -webkit-appearance: button; +} + +label, +select, +button, +input[type="button"], +input[type="reset"], +input[type="submit"], +input[type="radio"], +input[type="checkbox"] { + cursor: pointer; +} + +input[type="search"] { + -webkit-box-sizing: content-box; + -moz-box-sizing: content-box; + box-sizing: content-box; + -webkit-appearance: textfield; +} + +input[type="search"]::-webkit-search-decoration, +input[type="search"]::-webkit-search-cancel-button { + -webkit-appearance: none; +} + +textarea { + overflow: auto; + vertical-align: top; +} + +@media print { + * { + color: #000 !important; + text-shadow: none !important; + background: transparent !important; + box-shadow: none !important; + } + a, + a:visited { + text-decoration: underline; + } + a[href]:after { + content: " (" attr(href) ")"; + } + abbr[title]:after { + content: " (" attr(title) ")"; + } + .ir a:after, + a[href^="javascript:"]:after, + a[href^="#"]:after { + content: ""; + } + pre, + blockquote { + border: 1px solid #999; + page-break-inside: avoid; + } + thead { + display: table-header-group; + } + tr, + img { + page-break-inside: avoid; + } + img { + max-width: 100% !important; + } + @page { + margin: 0.5cm; + } + p, + h2, + h3 { + orphans: 3; + widows: 3; + } + h2, + h3 { + page-break-after: avoid; + } +} + +.clearfix { + *zoom: 1; +} + +.clearfix:before, +.clearfix:after { + display: table; + line-height: 0; + content: ""; +} + +.clearfix:after { + clear: both; +} + +.hide-text { + font: 0/0 a; + color: transparent; + text-shadow: none; + background-color: transparent; + border: 0; +} + +.input-block-level { + display: block; + width: 100%; + min-height: 30px; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; +} + +body { + margin: 0; + font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; + font-size: 14px; + line-height: 20px; + color: #333333; + background-color: #ffffff; +} + +a { + color: #0088cc; + text-decoration: none; +} + +a:hover { + color: #005580; + text-decoration: underline; +} + +.img-rounded { + -webkit-border-radius: 6px; + -moz-border-radius: 6px; + border-radius: 6px; +} + +.img-polaroid { + padding: 4px; + background-color: #fff; + border: 1px solid #ccc; + border: 1px solid rgba(0, 0, 0, 0.2); + -webkit-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1); + -moz-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1); + box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1); +} + +.img-circle { + -webkit-border-radius: 500px; + -moz-border-radius: 500px; + border-radius: 500px; +} + +.row { + margin-left: -20px; + *zoom: 1; +} + +.row:before, +.row:after { + display: table; + line-height: 0; + content: ""; +} + +.row:after { + clear: both; +} + +[class*="span"] { + float: left; + min-height: 1px; + margin-left: 20px; +} + +.container, +.navbar-static-top .container, +.navbar-fixed-top .container, +.navbar-fixed-bottom .container { + width: 940px; +} + +.span12 { + width: 940px; +} + +.span11 { + width: 860px; +} + +.span10 { + width: 780px; +} + +.span9 { + width: 700px; +} + +.span8 { + width: 620px; +} + +.span7 { + width: 540px; +} + +.span6 { + width: 460px; +} + +.span5 { + width: 380px; +} + +.span4 { + width: 300px; +} + +.span3 { + width: 220px; +} + +.span2 { + width: 140px; +} + +.span1 { + width: 60px; +} + +.offset12 { + margin-left: 980px; +} + +.offset11 { + margin-left: 900px; +} + +.offset10 { + margin-left: 820px; +} + +.offset9 { + margin-left: 740px; +} + +.offset8 { + margin-left: 660px; +} + +.offset7 { + margin-left: 580px; +} + +.offset6 { + margin-left: 500px; +} + +.offset5 { + margin-left: 420px; +} + +.offset4 { + margin-left: 340px; +} + +.offset3 { + margin-left: 260px; +} + +.offset2 { + margin-left: 180px; +} + +.offset1 { + margin-left: 100px; +} + +.row-fluid { + width: 100%; + *zoom: 1; +} + +.row-fluid:before, +.row-fluid:after { + display: table; + line-height: 0; + content: ""; +} + +.row-fluid:after { + clear: both; +} + +.row-fluid [class*="span"] { + display: block; + float: left; + width: 100%; + min-height: 30px; + margin-left: 2.127659574468085%; + *margin-left: 2.074468085106383%; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; +} + +.row-fluid [class*="span"]:first-child { + margin-left: 0; +} + +.row-fluid .controls-row [class*="span"] + [class*="span"] { + margin-left: 2.127659574468085%; +} + +.row-fluid .span12 { + width: 100%; + *width: 99.94680851063829%; +} + +.row-fluid .span11 { + width: 91.48936170212765%; + *width: 91.43617021276594%; +} + +.row-fluid .span10 { + width: 82.97872340425532%; + *width: 82.92553191489361%; +} + +.row-fluid .span9 { + width: 74.46808510638297%; + *width: 74.41489361702126%; +} + +.row-fluid .span8 { + width: 65.95744680851064%; + *width: 65.90425531914893%; +} + +.row-fluid .span7 { + width: 57.44680851063829%; + *width: 57.39361702127659%; +} + +.row-fluid .span6 { + width: 48.93617021276595%; + *width: 48.88297872340425%; +} + +.row-fluid .span5 { + width: 40.42553191489362%; + *width: 40.37234042553192%; +} + +.row-fluid .span4 { + width: 31.914893617021278%; + *width: 31.861702127659576%; +} + +.row-fluid .span3 { + width: 23.404255319148934%; + *width: 23.351063829787233%; +} + +.row-fluid .span2 { + width: 14.893617021276595%; + *width: 14.840425531914894%; +} + +.row-fluid .span1 { + width: 6.382978723404255%; + *width: 6.329787234042553%; +} + +.row-fluid .offset12 { + margin-left: 104.25531914893617%; + *margin-left: 104.14893617021275%; +} + +.row-fluid .offset12:first-child { + margin-left: 102.12765957446808%; + *margin-left: 102.02127659574467%; +} + +.row-fluid .offset11 { + margin-left: 95.74468085106382%; + *margin-left: 95.6382978723404%; +} + +.row-fluid .offset11:first-child { + margin-left: 93.61702127659574%; + *margin-left: 93.51063829787232%; +} + +.row-fluid .offset10 { + margin-left: 87.23404255319149%; + *margin-left: 87.12765957446807%; +} + +.row-fluid .offset10:first-child { + margin-left: 85.1063829787234%; + *margin-left: 84.99999999999999%; +} + +.row-fluid .offset9 { + margin-left: 78.72340425531914%; + *margin-left: 78.61702127659572%; +} + +.row-fluid .offset9:first-child { + margin-left: 76.59574468085106%; + *margin-left: 76.48936170212764%; +} + +.row-fluid .offset8 { + margin-left: 70.2127659574468%; + *margin-left: 70.10638297872339%; +} + +.row-fluid .offset8:first-child { + margin-left: 68.08510638297872%; + *margin-left: 67.9787234042553%; +} + +.row-fluid .offset7 { + margin-left: 61.70212765957446%; + *margin-left: 61.59574468085106%; +} + +.row-fluid .offset7:first-child { + margin-left: 59.574468085106375%; + *margin-left: 59.46808510638297%; +} + +.row-fluid .offset6 { + margin-left: 53.191489361702125%; + *margin-left: 53.085106382978715%; +} + +.row-fluid .offset6:first-child { + margin-left: 51.063829787234035%; + *margin-left: 50.95744680851063%; +} + +.row-fluid .offset5 { + margin-left: 44.68085106382979%; + *margin-left: 44.57446808510638%; +} + +.row-fluid .offset5:first-child { + margin-left: 42.5531914893617%; + *margin-left: 42.4468085106383%; +} + +.row-fluid .offset4 { + margin-left: 36.170212765957444%; + *margin-left: 36.06382978723405%; +} + +.row-fluid .offset4:first-child { + margin-left: 34.04255319148936%; + *margin-left: 33.93617021276596%; +} + +.row-fluid .offset3 { + margin-left: 27.659574468085104%; + *margin-left: 27.5531914893617%; +} + +.row-fluid .offset3:first-child { + margin-left: 25.53191489361702%; + *margin-left: 25.425531914893618%; +} + +.row-fluid .offset2 { + margin-left: 19.148936170212764%; + *margin-left: 19.04255319148936%; +} + +.row-fluid .offset2:first-child { + margin-left: 17.02127659574468%; + *margin-left: 16.914893617021278%; +} + +.row-fluid .offset1 { + margin-left: 10.638297872340425%; + *margin-left: 10.53191489361702%; +} + +.row-fluid .offset1:first-child { + margin-left: 8.51063829787234%; + *margin-left: 8.404255319148938%; +} + +[class*="span"].hide, +.row-fluid [class*="span"].hide { + display: none; +} + +[class*="span"].pull-right, +.row-fluid [class*="span"].pull-right { + float: right; +} + +.container { + margin-right: auto; + margin-left: auto; + *zoom: 1; +} + +.container:before, +.container:after { + display: table; + line-height: 0; + content: ""; +} + +.container:after { + clear: both; +} + +.container-fluid { + padding-right: 20px; + padding-left: 20px; + *zoom: 1; +} + +.container-fluid:before, +.container-fluid:after { + display: table; + line-height: 0; + content: ""; +} + +.container-fluid:after { + clear: both; +} + +p { + margin: 0 0 10px; +} + +.lead { + margin-bottom: 20px; + font-size: 21px; + font-weight: 200; + line-height: 30px; +} + +small { + font-size: 85%; +} + +strong { + font-weight: bold; +} + +em { + font-style: italic; +} + +cite { + font-style: normal; +} + +.muted { + color: #999999; +} + +a.muted:hover { + color: #808080; +} + +.text-warning { + color: #c09853; +} + +a.text-warning:hover { + color: #a47e3c; +} + +.text-error { + color: #b94a48; +} + +a.text-error:hover { + color: #953b39; +} + +.text-info { + color: #3a87ad; +} + +a.text-info:hover { + color: #2d6987; +} + +.text-success { + color: #468847; +} + +a.text-success:hover { + color: #356635; +} + +h1, +h2, +h3, +h4, +h5, +h6 { + margin: 10px 0; + font-family: inherit; + font-weight: bold; + line-height: 20px; + color: inherit; + text-rendering: optimizelegibility; +} + +h1 small, +h2 small, +h3 small, +h4 small, +h5 small, +h6 small { + font-weight: normal; + line-height: 1; + color: #999999; +} + +h1, +h2, +h3 { + line-height: 40px; +} + +h1 { + font-size: 38.5px; +} + +h2 { + font-size: 31.5px; +} + +h3 { + font-size: 24.5px; +} + +h4 { + font-size: 17.5px; +} + +h5 { + font-size: 14px; +} + +h6 { + font-size: 11.9px; +} + +h1 small { + font-size: 24.5px; +} + +h2 small { + font-size: 17.5px; +} + +h3 small { + font-size: 14px; +} + +h4 small { + font-size: 14px; +} + +.page-header { + padding-bottom: 9px; + margin: 20px 0 30px; + border-bottom: 1px solid #eeeeee; +} + +ul, +ol { + padding: 0; + margin: 0 0 10px 25px; +} + +ul ul, +ul ol, +ol ol, +ol ul { + margin-bottom: 0; +} + +li { + line-height: 20px; +} + +ul.unstyled, +ol.unstyled { + margin-left: 0; + list-style: none; +} + +ul.inline, +ol.inline { + margin-left: 0; + list-style: none; +} + +ul.inline > li, +ol.inline > li { + display: inline-block; + padding-right: 5px; + padding-left: 5px; +} + +dl { + margin-bottom: 20px; +} + +dt, +dd { + line-height: 20px; +} + +dt { + font-weight: bold; +} + +dd { + margin-left: 10px; +} + +.dl-horizontal { + *zoom: 1; +} + +.dl-horizontal:before, +.dl-horizontal:after { + display: table; + line-height: 0; + content: ""; +} + +.dl-horizontal:after { + clear: both; +} + +.dl-horizontal dt { + float: left; + width: 160px; + overflow: hidden; + clear: left; + text-align: right; + text-overflow: ellipsis; + white-space: nowrap; +} + +.dl-horizontal dd { + margin-left: 180px; +} + +hr { + margin: 20px 0; + border: 0; + border-top: 1px solid #eeeeee; + border-bottom: 1px solid #ffffff; +} + +abbr[title], +abbr[data-original-title] { + cursor: help; + border-bottom: 1px dotted #999999; +} + +abbr.initialism { + font-size: 90%; + text-transform: uppercase; +} + +blockquote { + padding: 0 0 0 15px; + margin: 0 0 20px; + border-left: 5px solid #eeeeee; +} + +blockquote p { + margin-bottom: 0; + font-size: 16px; + font-weight: 300; + line-height: 25px; +} + +blockquote small { + display: block; + line-height: 20px; + color: #999999; +} + +blockquote small:before { + content: '\2014 \00A0'; +} + +blockquote.pull-right { + float: right; + padding-right: 15px; + padding-left: 0; + border-right: 5px solid #eeeeee; + border-left: 0; +} + +blockquote.pull-right p, +blockquote.pull-right small { + text-align: right; +} + +blockquote.pull-right small:before { + content: ''; +} + +blockquote.pull-right small:after { + content: '\00A0 \2014'; +} + +q:before, +q:after, +blockquote:before, +blockquote:after { + content: ""; +} + +address { + display: block; + margin-bottom: 20px; + font-style: normal; + line-height: 20px; +} + +code, +pre { + padding: 0 3px 2px; + font-family: Monaco, Menlo, Consolas, "Courier New", monospace; + font-size: 12px; + color: #333333; + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + border-radius: 3px; +} + +code { + padding: 2px 4px; + color: #d14; + white-space: nowrap; + background-color: #f7f7f9; + border: 1px solid #e1e1e8; +} + +pre { + display: block; + padding: 9.5px; + margin: 0 0 10px; + font-size: 13px; + line-height: 20px; + word-break: break-all; + word-wrap: break-word; + white-space: pre; + white-space: pre-wrap; + background-color: #f5f5f5; + border: 1px solid #ccc; + border: 1px solid rgba(0, 0, 0, 0.15); + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; +} + +pre.prettyprint { + margin-bottom: 20px; +} + +pre code { + padding: 0; + color: inherit; + white-space: pre; + white-space: pre-wrap; + background-color: transparent; + border: 0; +} + +.pre-scrollable { + max-height: 340px; + overflow-y: scroll; +} + +form { + margin: 0 0 20px; +} + +fieldset { + padding: 0; + margin: 0; + border: 0; +} + +legend { + display: block; + width: 100%; + padding: 0; + margin-bottom: 20px; + font-size: 21px; + line-height: 40px; + color: #333333; + border: 0; + border-bottom: 1px solid #e5e5e5; +} + +legend small { + font-size: 15px; + color: #999999; +} + +label, +input, +button, +select, +textarea { + font-size: 14px; + font-weight: normal; + line-height: 20px; +} + +input, +button, +select, +textarea { + font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; +} + +label { + display: block; + margin-bottom: 5px; +} + +select, +textarea, +input[type="text"], +input[type="password"], +input[type="datetime"], +input[type="datetime-local"], +input[type="date"], +input[type="month"], +input[type="time"], +input[type="week"], +input[type="number"], +input[type="email"], +input[type="url"], +input[type="search"], +input[type="tel"], +input[type="color"], +.uneditable-input { + display: inline-block; + height: 20px; + padding: 4px 6px; + margin-bottom: 10px; + font-size: 14px; + line-height: 20px; + color: #555555; + vertical-align: middle; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; +} + +input, +textarea, +.uneditable-input { + width: 206px; +} + +textarea { + height: auto; +} + +textarea, +input[type="text"], +input[type="password"], +input[type="datetime"], +input[type="datetime-local"], +input[type="date"], +input[type="month"], +input[type="time"], +input[type="week"], +input[type="number"], +input[type="email"], +input[type="url"], +input[type="search"], +input[type="tel"], +input[type="color"], +.uneditable-input { + background-color: #ffffff; + border: 1px solid #cccccc; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + -webkit-transition: border linear 0.2s, box-shadow linear 0.2s; + -moz-transition: border linear 0.2s, box-shadow linear 0.2s; + -o-transition: border linear 0.2s, box-shadow linear 0.2s; + transition: border linear 0.2s, box-shadow linear 0.2s; +} + +textarea:focus, +input[type="text"]:focus, +input[type="password"]:focus, +input[type="datetime"]:focus, +input[type="datetime-local"]:focus, +input[type="date"]:focus, +input[type="month"]:focus, +input[type="time"]:focus, +input[type="week"]:focus, +input[type="number"]:focus, +input[type="email"]:focus, +input[type="url"]:focus, +input[type="search"]:focus, +input[type="tel"]:focus, +input[type="color"]:focus, +.uneditable-input:focus { + border-color: rgba(82, 168, 236, 0.8); + outline: 0; + outline: thin dotted \9; + /* IE6-9 */ + + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(82, 168, 236, 0.6); + -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(82, 168, 236, 0.6); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(82, 168, 236, 0.6); +} + +input[type="radio"], +input[type="checkbox"] { + margin: 4px 0 0; + margin-top: 1px \9; + *margin-top: 0; + line-height: normal; +} + +input[type="file"], +input[type="image"], +input[type="submit"], +input[type="reset"], +input[type="button"], +input[type="radio"], +input[type="checkbox"] { + width: auto; +} + +select, +input[type="file"] { + height: 30px; + /* In IE7, the height of the select element cannot be changed by height, only font-size */ + + *margin-top: 4px; + /* For IE7, add top margin to align select with labels */ + + line-height: 30px; +} + +select { + width: 220px; + background-color: #ffffff; + border: 1px solid #cccccc; +} + +select[multiple], +select[size] { + height: auto; +} + +select:focus, +input[type="file"]:focus, +input[type="radio"]:focus, +input[type="checkbox"]:focus { + outline: thin dotted #333; + outline: 5px auto -webkit-focus-ring-color; + outline-offset: -2px; +} + +.uneditable-input, +.uneditable-textarea { + color: #999999; + cursor: not-allowed; + background-color: #fcfcfc; + border-color: #cccccc; + -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.025); + -moz-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.025); + box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.025); +} + +.uneditable-input { + overflow: hidden; + white-space: nowrap; +} + +.uneditable-textarea { + width: auto; + height: auto; +} + +input:-moz-placeholder, +textarea:-moz-placeholder { + color: #999999; +} + +input:-ms-input-placeholder, +textarea:-ms-input-placeholder { + color: #999999; +} + +input::-webkit-input-placeholder, +textarea::-webkit-input-placeholder { + color: #999999; +} + +.radio, +.checkbox { + min-height: 20px; + padding-left: 20px; +} + +.radio input[type="radio"], +.checkbox input[type="checkbox"] { + float: left; + margin-left: -20px; +} + +.controls > .radio:first-child, +.controls > .checkbox:first-child { + padding-top: 5px; +} + +.radio.inline, +.checkbox.inline { + display: inline-block; + padding-top: 5px; + margin-bottom: 0; + vertical-align: middle; +} + +.radio.inline + .radio.inline, +.checkbox.inline + .checkbox.inline { + margin-left: 10px; +} + +.input-mini { + width: 60px; +} + +.input-small { + width: 90px; +} + +.input-medium { + width: 150px; +} + +.input-large { + width: 210px; +} + +.input-xlarge { + width: 270px; +} + +.input-xxlarge { + width: 530px; +} + +input[class*="span"], +select[class*="span"], +textarea[class*="span"], +.uneditable-input[class*="span"], +.row-fluid input[class*="span"], +.row-fluid select[class*="span"], +.row-fluid textarea[class*="span"], +.row-fluid .uneditable-input[class*="span"] { + float: none; + margin-left: 0; +} + +.input-append input[class*="span"], +.input-append .uneditable-input[class*="span"], +.input-prepend input[class*="span"], +.input-prepend .uneditable-input[class*="span"], +.row-fluid input[class*="span"], +.row-fluid select[class*="span"], +.row-fluid textarea[class*="span"], +.row-fluid .uneditable-input[class*="span"], +.row-fluid .input-prepend [class*="span"], +.row-fluid .input-append [class*="span"] { + display: inline-block; +} + +input, +textarea, +.uneditable-input { + margin-left: 0; +} + +.controls-row [class*="span"] + [class*="span"] { + margin-left: 20px; +} + +input.span12, +textarea.span12, +.uneditable-input.span12 { + width: 926px; +} + +input.span11, +textarea.span11, +.uneditable-input.span11 { + width: 846px; +} + +input.span10, +textarea.span10, +.uneditable-input.span10 { + width: 766px; +} + +input.span9, +textarea.span9, +.uneditable-input.span9 { + width: 686px; +} + +input.span8, +textarea.span8, +.uneditable-input.span8 { + width: 606px; +} + +input.span7, +textarea.span7, +.uneditable-input.span7 { + width: 526px; +} + +input.span6, +textarea.span6, +.uneditable-input.span6 { + width: 446px; +} + +input.span5, +textarea.span5, +.uneditable-input.span5 { + width: 366px; +} + +input.span4, +textarea.span4, +.uneditable-input.span4 { + width: 286px; +} + +input.span3, +textarea.span3, +.uneditable-input.span3 { + width: 206px; +} + +input.span2, +textarea.span2, +.uneditable-input.span2 { + width: 126px; +} + +input.span1, +textarea.span1, +.uneditable-input.span1 { + width: 46px; +} + +.controls-row { + *zoom: 1; +} + +.controls-row:before, +.controls-row:after { + display: table; + line-height: 0; + content: ""; +} + +.controls-row:after { + clear: both; +} + +.controls-row [class*="span"], +.row-fluid .controls-row [class*="span"] { + float: left; +} + +.controls-row .checkbox[class*="span"], +.controls-row .radio[class*="span"] { + padding-top: 5px; +} + +input[disabled], +select[disabled], +textarea[disabled], +input[readonly], +select[readonly], +textarea[readonly] { + cursor: not-allowed; + background-color: #eeeeee; +} + +input[type="radio"][disabled], +input[type="checkbox"][disabled], +input[type="radio"][readonly], +input[type="checkbox"][readonly] { + background-color: transparent; +} + +.control-group.warning .control-label, +.control-group.warning .help-block, +.control-group.warning .help-inline { + color: #c09853; +} + +.control-group.warning .checkbox, +.control-group.warning .radio, +.control-group.warning input, +.control-group.warning select, +.control-group.warning textarea { + color: #c09853; +} + +.control-group.warning input, +.control-group.warning select, +.control-group.warning textarea { + border-color: #c09853; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); +} + +.control-group.warning input:focus, +.control-group.warning select:focus, +.control-group.warning textarea:focus { + border-color: #a47e3c; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #dbc59e; + -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #dbc59e; + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #dbc59e; +} + +.control-group.warning .input-prepend .add-on, +.control-group.warning .input-append .add-on { + color: #c09853; + background-color: #fcf8e3; + border-color: #c09853; +} + +.control-group.error .control-label, +.control-group.error .help-block, +.control-group.error .help-inline { + color: #b94a48; +} + +.control-group.error .checkbox, +.control-group.error .radio, +.control-group.error input, +.control-group.error select, +.control-group.error textarea { + color: #b94a48; +} + +.control-group.error input, +.control-group.error select, +.control-group.error textarea { + border-color: #b94a48; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); +} + +.control-group.error input:focus, +.control-group.error select:focus, +.control-group.error textarea:focus { + border-color: #953b39; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #d59392; + -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #d59392; + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #d59392; +} + +.control-group.error .input-prepend .add-on, +.control-group.error .input-append .add-on { + color: #b94a48; + background-color: #f2dede; + border-color: #b94a48; +} + +.control-group.success .control-label, +.control-group.success .help-block, +.control-group.success .help-inline { + color: #468847; +} + +.control-group.success .checkbox, +.control-group.success .radio, +.control-group.success input, +.control-group.success select, +.control-group.success textarea { + color: #468847; +} + +.control-group.success input, +.control-group.success select, +.control-group.success textarea { + border-color: #468847; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); +} + +.control-group.success input:focus, +.control-group.success select:focus, +.control-group.success textarea:focus { + border-color: #356635; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7aba7b; + -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7aba7b; + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7aba7b; +} + +.control-group.success .input-prepend .add-on, +.control-group.success .input-append .add-on { + color: #468847; + background-color: #dff0d8; + border-color: #468847; +} + +.control-group.info .control-label, +.control-group.info .help-block, +.control-group.info .help-inline { + color: #3a87ad; +} + +.control-group.info .checkbox, +.control-group.info .radio, +.control-group.info input, +.control-group.info select, +.control-group.info textarea { + color: #3a87ad; +} + +.control-group.info input, +.control-group.info select, +.control-group.info textarea { + border-color: #3a87ad; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); +} + +.control-group.info input:focus, +.control-group.info select:focus, +.control-group.info textarea:focus { + border-color: #2d6987; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7ab5d3; + -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7ab5d3; + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7ab5d3; +} + +.control-group.info .input-prepend .add-on, +.control-group.info .input-append .add-on { + color: #3a87ad; + background-color: #d9edf7; + border-color: #3a87ad; +} + +input:focus:invalid, +textarea:focus:invalid, +select:focus:invalid { + color: #b94a48; + border-color: #ee5f5b; +} + +input:focus:invalid:focus, +textarea:focus:invalid:focus, +select:focus:invalid:focus { + border-color: #e9322d; + -webkit-box-shadow: 0 0 6px #f8b9b7; + -moz-box-shadow: 0 0 6px #f8b9b7; + box-shadow: 0 0 6px #f8b9b7; +} + +.form-actions { + padding: 19px 20px 20px; + margin-top: 20px; + margin-bottom: 20px; + background-color: #f5f5f5; + border-top: 1px solid #e5e5e5; + *zoom: 1; +} + +.form-actions:before, +.form-actions:after { + display: table; + line-height: 0; + content: ""; +} + +.form-actions:after { + clear: both; +} + +.help-block, +.help-inline { + color: #595959; +} + +.help-block { + display: block; + margin-bottom: 10px; +} + +.help-inline { + display: inline-block; + *display: inline; + padding-left: 5px; + vertical-align: middle; + *zoom: 1; +} + +.input-append, +.input-prepend { + margin-bottom: 5px; + font-size: 0; + white-space: nowrap; +} + +.input-append input, +.input-prepend input, +.input-append select, +.input-prepend select, +.input-append .uneditable-input, +.input-prepend .uneditable-input, +.input-append .dropdown-menu, +.input-prepend .dropdown-menu { + font-size: 14px; +} + +.input-append input, +.input-prepend input, +.input-append select, +.input-prepend select, +.input-append .uneditable-input, +.input-prepend .uneditable-input { + position: relative; + margin-bottom: 0; + *margin-left: 0; + vertical-align: top; + -webkit-border-radius: 0 4px 4px 0; + -moz-border-radius: 0 4px 4px 0; + border-radius: 0 4px 4px 0; +} + +.input-append input:focus, +.input-prepend input:focus, +.input-append select:focus, +.input-prepend select:focus, +.input-append .uneditable-input:focus, +.input-prepend .uneditable-input:focus { + z-index: 2; +} + +.input-append .add-on, +.input-prepend .add-on { + display: inline-block; + width: auto; + height: 20px; + min-width: 16px; + padding: 4px 5px; + font-size: 14px; + font-weight: normal; + line-height: 20px; + text-align: center; + text-shadow: 0 1px 0 #ffffff; + background-color: #eeeeee; + border: 1px solid #ccc; +} + +.input-append .add-on, +.input-prepend .add-on, +.input-append .btn, +.input-prepend .btn, +.input-append .btn-group > .dropdown-toggle, +.input-prepend .btn-group > .dropdown-toggle { + vertical-align: top; + -webkit-border-radius: 0; + -moz-border-radius: 0; + border-radius: 0; +} + +.input-append .active, +.input-prepend .active { + background-color: #a9dba9; + border-color: #46a546; +} + +.input-prepend .add-on, +.input-prepend .btn { + margin-right: -1px; +} + +.input-prepend .add-on:first-child, +.input-prepend .btn:first-child { + -webkit-border-radius: 4px 0 0 4px; + -moz-border-radius: 4px 0 0 4px; + border-radius: 4px 0 0 4px; +} + +.input-append input, +.input-append select, +.input-append .uneditable-input { + -webkit-border-radius: 4px 0 0 4px; + -moz-border-radius: 4px 0 0 4px; + border-radius: 4px 0 0 4px; +} + +.input-append input + .btn-group .btn:last-child, +.input-append select + .btn-group .btn:last-child, +.input-append .uneditable-input + .btn-group .btn:last-child { + -webkit-border-radius: 0 4px 4px 0; + -moz-border-radius: 0 4px 4px 0; + border-radius: 0 4px 4px 0; +} + +.input-append .add-on, +.input-append .btn, +.input-append .btn-group { + margin-left: -1px; +} + +.input-append .add-on:last-child, +.input-append .btn:last-child, +.input-append .btn-group:last-child > .dropdown-toggle { + -webkit-border-radius: 0 4px 4px 0; + -moz-border-radius: 0 4px 4px 0; + border-radius: 0 4px 4px 0; +} + +.input-prepend.input-append input, +.input-prepend.input-append select, +.input-prepend.input-append .uneditable-input { + -webkit-border-radius: 0; + -moz-border-radius: 0; + border-radius: 0; +} + +.input-prepend.input-append input + .btn-group .btn, +.input-prepend.input-append select + .btn-group .btn, +.input-prepend.input-append .uneditable-input + .btn-group .btn { + -webkit-border-radius: 0 4px 4px 0; + -moz-border-radius: 0 4px 4px 0; + border-radius: 0 4px 4px 0; +} + +.input-prepend.input-append .add-on:first-child, +.input-prepend.input-append .btn:first-child { + margin-right: -1px; + -webkit-border-radius: 4px 0 0 4px; + -moz-border-radius: 4px 0 0 4px; + border-radius: 4px 0 0 4px; +} + +.input-prepend.input-append .add-on:last-child, +.input-prepend.input-append .btn:last-child { + margin-left: -1px; + -webkit-border-radius: 0 4px 4px 0; + -moz-border-radius: 0 4px 4px 0; + border-radius: 0 4px 4px 0; +} + +.input-prepend.input-append .btn-group:first-child { + margin-left: 0; +} + +input.search-query { + padding-right: 14px; + padding-right: 4px \9; + padding-left: 14px; + padding-left: 4px \9; + /* IE7-8 doesn't have border-radius, so don't indent the padding */ + + margin-bottom: 0; + -webkit-border-radius: 15px; + -moz-border-radius: 15px; + border-radius: 15px; +} + +/* Allow for input prepend/append in search forms */ + +.form-search .input-append .search-query, +.form-search .input-prepend .search-query { + -webkit-border-radius: 0; + -moz-border-radius: 0; + border-radius: 0; +} + +.form-search .input-append .search-query { + -webkit-border-radius: 14px 0 0 14px; + -moz-border-radius: 14px 0 0 14px; + border-radius: 14px 0 0 14px; +} + +.form-search .input-append .btn { + -webkit-border-radius: 0 14px 14px 0; + -moz-border-radius: 0 14px 14px 0; + border-radius: 0 14px 14px 0; +} + +.form-search .input-prepend .search-query { + -webkit-border-radius: 0 14px 14px 0; + -moz-border-radius: 0 14px 14px 0; + border-radius: 0 14px 14px 0; +} + +.form-search .input-prepend .btn { + -webkit-border-radius: 14px 0 0 14px; + -moz-border-radius: 14px 0 0 14px; + border-radius: 14px 0 0 14px; +} + +.form-search input, +.form-inline input, +.form-horizontal input, +.form-search textarea, +.form-inline textarea, +.form-horizontal textarea, +.form-search select, +.form-inline select, +.form-horizontal select, +.form-search .help-inline, +.form-inline .help-inline, +.form-horizontal .help-inline, +.form-search .uneditable-input, +.form-inline .uneditable-input, +.form-horizontal .uneditable-input, +.form-search .input-prepend, +.form-inline .input-prepend, +.form-horizontal .input-prepend, +.form-search .input-append, +.form-inline .input-append, +.form-horizontal .input-append { + display: inline-block; + *display: inline; + margin-bottom: 0; + vertical-align: middle; + *zoom: 1; +} + +.form-search .hide, +.form-inline .hide, +.form-horizontal .hide { + display: none; +} + +.form-search label, +.form-inline label, +.form-search .btn-group, +.form-inline .btn-group { + display: inline-block; +} + +.form-search .input-append, +.form-inline .input-append, +.form-search .input-prepend, +.form-inline .input-prepend { + margin-bottom: 0; +} + +.form-search .radio, +.form-search .checkbox, +.form-inline .radio, +.form-inline .checkbox { + padding-left: 0; + margin-bottom: 0; + vertical-align: middle; +} + +.form-search .radio input[type="radio"], +.form-search .checkbox input[type="checkbox"], +.form-inline .radio input[type="radio"], +.form-inline .checkbox input[type="checkbox"] { + float: left; + margin-right: 3px; + margin-left: 0; +} + +.control-group { + margin-bottom: 10px; +} + +legend + .control-group { + margin-top: 20px; + -webkit-margin-top-collapse: separate; +} + +.form-horizontal .control-group { + margin-bottom: 20px; + *zoom: 1; +} + +.form-horizontal .control-group:before, +.form-horizontal .control-group:after { + display: table; + line-height: 0; + content: ""; +} + +.form-horizontal .control-group:after { + clear: both; +} + +.form-horizontal .control-label { + float: left; + width: 160px; + padding-top: 5px; + text-align: right; +} + +.form-horizontal .controls { + *display: inline-block; + *padding-left: 20px; + margin-left: 180px; + *margin-left: 0; +} + +.form-horizontal .controls:first-child { + *padding-left: 180px; +} + +.form-horizontal .help-block { + margin-bottom: 0; +} + +.form-horizontal input + .help-block, +.form-horizontal select + .help-block, +.form-horizontal textarea + .help-block, +.form-horizontal .uneditable-input + .help-block, +.form-horizontal .input-prepend + .help-block, +.form-horizontal .input-append + .help-block { + margin-top: 10px; +} + +.form-horizontal .form-actions { + padding-left: 180px; +} + +table { + max-width: 100%; + background-color: transparent; + border-collapse: collapse; + border-spacing: 0; +} + +.table { + width: 100%; + margin-bottom: 20px; +} + +.table th, +.table td { + padding: 8px; + line-height: 20px; + text-align: left; + vertical-align: top; + border-top: 1px solid #dddddd; +} + +.table th { + font-weight: bold; +} + +.table thead th { + vertical-align: bottom; +} + +.table caption + thead tr:first-child th, +.table caption + thead tr:first-child td, +.table colgroup + thead tr:first-child th, +.table colgroup + thead tr:first-child td, +.table thead:first-child tr:first-child th, +.table thead:first-child tr:first-child td { + border-top: 0; +} + +.table tbody + tbody { + border-top: 2px solid #dddddd; +} + +.table .table { + background-color: #ffffff; +} + +.table-condensed th, +.table-condensed td { + padding: 4px 5px; +} + +.table-bordered { + border: 1px solid #dddddd; + border-collapse: separate; + *border-collapse: collapse; + border-left: 0; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; +} + +.table-bordered th, +.table-bordered td { + border-left: 1px solid #dddddd; +} + +.table-bordered caption + thead tr:first-child th, +.table-bordered caption + tbody tr:first-child th, +.table-bordered caption + tbody tr:first-child td, +.table-bordered colgroup + thead tr:first-child th, +.table-bordered colgroup + tbody tr:first-child th, +.table-bordered colgroup + tbody tr:first-child td, +.table-bordered thead:first-child tr:first-child th, +.table-bordered tbody:first-child tr:first-child th, +.table-bordered tbody:first-child tr:first-child td { + border-top: 0; +} + +.table-bordered thead:first-child tr:first-child > th:first-child, +.table-bordered tbody:first-child tr:first-child > td:first-child { + -webkit-border-top-left-radius: 4px; + border-top-left-radius: 4px; + -moz-border-radius-topleft: 4px; +} + +.table-bordered thead:first-child tr:first-child > th:last-child, +.table-bordered tbody:first-child tr:first-child > td:last-child { + -webkit-border-top-right-radius: 4px; + border-top-right-radius: 4px; + -moz-border-radius-topright: 4px; +} + +.table-bordered thead:last-child tr:last-child > th:first-child, +.table-bordered tbody:last-child tr:last-child > td:first-child, +.table-bordered tfoot:last-child tr:last-child > td:first-child { + -webkit-border-bottom-left-radius: 4px; + border-bottom-left-radius: 4px; + -moz-border-radius-bottomleft: 4px; +} + +.table-bordered thead:last-child tr:last-child > th:last-child, +.table-bordered tbody:last-child tr:last-child > td:last-child, +.table-bordered tfoot:last-child tr:last-child > td:last-child { + -webkit-border-bottom-right-radius: 4px; + border-bottom-right-radius: 4px; + -moz-border-radius-bottomright: 4px; +} + +.table-bordered tfoot + tbody:last-child tr:last-child td:first-child { + -webkit-border-bottom-left-radius: 0; + border-bottom-left-radius: 0; + -moz-border-radius-bottomleft: 0; +} + +.table-bordered tfoot + tbody:last-child tr:last-child td:last-child { + -webkit-border-bottom-right-radius: 0; + border-bottom-right-radius: 0; + -moz-border-radius-bottomright: 0; +} + +.table-bordered caption + thead tr:first-child th:first-child, +.table-bordered caption + tbody tr:first-child td:first-child, +.table-bordered colgroup + thead tr:first-child th:first-child, +.table-bordered colgroup + tbody tr:first-child td:first-child { + -webkit-border-top-left-radius: 4px; + border-top-left-radius: 4px; + -moz-border-radius-topleft: 4px; +} + +.table-bordered caption + thead tr:first-child th:last-child, +.table-bordered caption + tbody tr:first-child td:last-child, +.table-bordered colgroup + thead tr:first-child th:last-child, +.table-bordered colgroup + tbody tr:first-child td:last-child { + -webkit-border-top-right-radius: 4px; + border-top-right-radius: 4px; + -moz-border-radius-topright: 4px; +} + +.table-striped tbody > tr:nth-child(odd) > td, +.table-striped tbody > tr:nth-child(odd) > th { + background-color: #f9f9f9; +} + +.table-hover tbody tr:hover td, +.table-hover tbody tr:hover th { + background-color: #f5f5f5; +} + +table td[class*="span"], +table th[class*="span"], +.row-fluid table td[class*="span"], +.row-fluid table th[class*="span"] { + display: table-cell; + float: none; + margin-left: 0; +} + +.table td.span1, +.table th.span1 { + float: none; + width: 44px; + margin-left: 0; +} + +.table td.span2, +.table th.span2 { + float: none; + width: 124px; + margin-left: 0; +} + +.table td.span3, +.table th.span3 { + float: none; + width: 204px; + margin-left: 0; +} + +.table td.span4, +.table th.span4 { + float: none; + width: 284px; + margin-left: 0; +} + +.table td.span5, +.table th.span5 { + float: none; + width: 364px; + margin-left: 0; +} + +.table td.span6, +.table th.span6 { + float: none; + width: 444px; + margin-left: 0; +} + +.table td.span7, +.table th.span7 { + float: none; + width: 524px; + margin-left: 0; +} + +.table td.span8, +.table th.span8 { + float: none; + width: 604px; + margin-left: 0; +} + +.table td.span9, +.table th.span9 { + float: none; + width: 684px; + margin-left: 0; +} + +.table td.span10, +.table th.span10 { + float: none; + width: 764px; + margin-left: 0; +} + +.table td.span11, +.table th.span11 { + float: none; + width: 844px; + margin-left: 0; +} + +.table td.span12, +.table th.span12 { + float: none; + width: 924px; + margin-left: 0; +} + +.table tbody tr.success td { + background-color: #dff0d8; +} + +.table tbody tr.error td { + background-color: #f2dede; +} + +.table tbody tr.warning td { + background-color: #fcf8e3; +} + +.table tbody tr.info td { + background-color: #d9edf7; +} + +.table-hover tbody tr.success:hover td { + background-color: #d0e9c6; +} + +.table-hover tbody tr.error:hover td { + background-color: #ebcccc; +} + +.table-hover tbody tr.warning:hover td { + background-color: #faf2cc; +} + +.table-hover tbody tr.info:hover td { + background-color: #c4e3f3; +} + +[class^="icon-"], +[class*=" icon-"] { + display: inline-block; + width: 14px; + height: 14px; + margin-top: 1px; + *margin-right: .3em; + line-height: 14px; + vertical-align: text-top; + background-image: url("../img/glyphicons-halflings.png"); + background-position: 14px 14px; + background-repeat: no-repeat; +} + +/* White icons with optional class, or on hover/active states of certain elements */ + +.icon-white, +.nav-pills > .active > a > [class^="icon-"], +.nav-pills > .active > a > [class*=" icon-"], +.nav-list > .active > a > [class^="icon-"], +.nav-list > .active > a > [class*=" icon-"], +.navbar-inverse .nav > .active > a > [class^="icon-"], +.navbar-inverse .nav > .active > a > [class*=" icon-"], +.dropdown-menu > li > a:hover > [class^="icon-"], +.dropdown-menu > li > a:hover > [class*=" icon-"], +.dropdown-menu > .active > a > [class^="icon-"], +.dropdown-menu > .active > a > [class*=" icon-"], +.dropdown-submenu:hover > a > [class^="icon-"], +.dropdown-submenu:hover > a > [class*=" icon-"] { + background-image: url("../img/glyphicons-halflings-white.png"); +} + +.icon-glass { + background-position: 0 0; +} + +.icon-music { + background-position: -24px 0; +} + +.icon-search { + background-position: -48px 0; +} + +.icon-envelope { + background-position: -72px 0; +} + +.icon-heart { + background-position: -96px 0; +} + +.icon-star { + background-position: -120px 0; +} + +.icon-star-empty { + background-position: -144px 0; +} + +.icon-user { + background-position: -168px 0; +} + +.icon-film { + background-position: -192px 0; +} + +.icon-th-large { + background-position: -216px 0; +} + +.icon-th { + background-position: -240px 0; +} + +.icon-th-list { + background-position: -264px 0; +} + +.icon-ok { + background-position: -288px 0; +} + +.icon-remove { + background-position: -312px 0; +} + +.icon-zoom-in { + background-position: -336px 0; +} + +.icon-zoom-out { + background-position: -360px 0; +} + +.icon-off { + background-position: -384px 0; +} + +.icon-signal { + background-position: -408px 0; +} + +.icon-cog { + background-position: -432px 0; +} + +.icon-trash { + background-position: -456px 0; +} + +.icon-home { + background-position: 0 -24px; +} + +.icon-file { + background-position: -24px -24px; +} + +.icon-time { + background-position: -48px -24px; +} + +.icon-road { + background-position: -72px -24px; +} + +.icon-download-alt { + background-position: -96px -24px; +} + +.icon-download { + background-position: -120px -24px; +} + +.icon-upload { + background-position: -144px -24px; +} + +.icon-inbox { + background-position: -168px -24px; +} + +.icon-play-circle { + background-position: -192px -24px; +} + +.icon-repeat { + background-position: -216px -24px; +} + +.icon-refresh { + background-position: -240px -24px; +} + +.icon-list-alt { + background-position: -264px -24px; +} + +.icon-lock { + background-position: -287px -24px; +} + +.icon-flag { + background-position: -312px -24px; +} + +.icon-headphones { + background-position: -336px -24px; +} + +.icon-volume-off { + background-position: -360px -24px; +} + +.icon-volume-down { + background-position: -384px -24px; +} + +.icon-volume-up { + background-position: -408px -24px; +} + +.icon-qrcode { + background-position: -432px -24px; +} + +.icon-barcode { + background-position: -456px -24px; +} + +.icon-tag { + background-position: 0 -48px; +} + +.icon-tags { + background-position: -25px -48px; +} + +.icon-book { + background-position: -48px -48px; +} + +.icon-bookmark { + background-position: -72px -48px; +} + +.icon-print { + background-position: -96px -48px; +} + +.icon-camera { + background-position: -120px -48px; +} + +.icon-font { + background-position: -144px -48px; +} + +.icon-bold { + background-position: -167px -48px; +} + +.icon-italic { + background-position: -192px -48px; +} + +.icon-text-height { + background-position: -216px -48px; +} + +.icon-text-width { + background-position: -240px -48px; +} + +.icon-align-left { + background-position: -264px -48px; +} + +.icon-align-center { + background-position: -288px -48px; +} + +.icon-align-right { + background-position: -312px -48px; +} + +.icon-align-justify { + background-position: -336px -48px; +} + +.icon-list { + background-position: -360px -48px; +} + +.icon-indent-left { + background-position: -384px -48px; +} + +.icon-indent-right { + background-position: -408px -48px; +} + +.icon-facetime-video { + background-position: -432px -48px; +} + +.icon-picture { + background-position: -456px -48px; +} + +.icon-pencil { + background-position: 0 -72px; +} + +.icon-map-marker { + background-position: -24px -72px; +} + +.icon-adjust { + background-position: -48px -72px; +} + +.icon-tint { + background-position: -72px -72px; +} + +.icon-edit { + background-position: -96px -72px; +} + +.icon-share { + background-position: -120px -72px; +} + +.icon-check { + background-position: -144px -72px; +} + +.icon-move { + background-position: -168px -72px; +} + +.icon-step-backward { + background-position: -192px -72px; +} + +.icon-fast-backward { + background-position: -216px -72px; +} + +.icon-backward { + background-position: -240px -72px; +} + +.icon-play { + background-position: -264px -72px; +} + +.icon-pause { + background-position: -288px -72px; +} + +.icon-stop { + background-position: -312px -72px; +} + +.icon-forward { + background-position: -336px -72px; +} + +.icon-fast-forward { + background-position: -360px -72px; +} + +.icon-step-forward { + background-position: -384px -72px; +} + +.icon-eject { + background-position: -408px -72px; +} + +.icon-chevron-left { + background-position: -432px -72px; +} + +.icon-chevron-right { + background-position: -456px -72px; +} + +.icon-plus-sign { + background-position: 0 -96px; +} + +.icon-minus-sign { + background-position: -24px -96px; +} + +.icon-remove-sign { + background-position: -48px -96px; +} + +.icon-ok-sign { + background-position: -72px -96px; +} + +.icon-question-sign { + background-position: -96px -96px; +} + +.icon-info-sign { + background-position: -120px -96px; +} + +.icon-screenshot { + background-position: -144px -96px; +} + +.icon-remove-circle { + background-position: -168px -96px; +} + +.icon-ok-circle { + background-position: -192px -96px; +} + +.icon-ban-circle { + background-position: -216px -96px; +} + +.icon-arrow-left { + background-position: -240px -96px; +} + +.icon-arrow-right { + background-position: -264px -96px; +} + +.icon-arrow-up { + background-position: -289px -96px; +} + +.icon-arrow-down { + background-position: -312px -96px; +} + +.icon-share-alt { + background-position: -336px -96px; +} + +.icon-resize-full { + background-position: -360px -96px; +} + +.icon-resize-small { + background-position: -384px -96px; +} + +.icon-plus { + background-position: -408px -96px; +} + +.icon-minus { + background-position: -433px -96px; +} + +.icon-asterisk { + background-position: -456px -96px; +} + +.icon-exclamation-sign { + background-position: 0 -120px; +} + +.icon-gift { + background-position: -24px -120px; +} + +.icon-leaf { + background-position: -48px -120px; +} + +.icon-fire { + background-position: -72px -120px; +} + +.icon-eye-open { + background-position: -96px -120px; +} + +.icon-eye-close { + background-position: -120px -120px; +} + +.icon-warning-sign { + background-position: -144px -120px; +} + +.icon-plane { + background-position: -168px -120px; +} + +.icon-calendar { + background-position: -192px -120px; +} + +.icon-random { + width: 16px; + background-position: -216px -120px; +} + +.icon-comment { + background-position: -240px -120px; +} + +.icon-magnet { + background-position: -264px -120px; +} + +.icon-chevron-up { + background-position: -288px -120px; +} + +.icon-chevron-down { + background-position: -313px -119px; +} + +.icon-retweet { + background-position: -336px -120px; +} + +.icon-shopping-cart { + background-position: -360px -120px; +} + +.icon-folder-close { + background-position: -384px -120px; +} + +.icon-folder-open { + width: 16px; + background-position: -408px -120px; +} + +.icon-resize-vertical { + background-position: -432px -119px; +} + +.icon-resize-horizontal { + background-position: -456px -118px; +} + +.icon-hdd { + background-position: 0 -144px; +} + +.icon-bullhorn { + background-position: -24px -144px; +} + +.icon-bell { + background-position: -48px -144px; +} + +.icon-certificate { + background-position: -72px -144px; +} + +.icon-thumbs-up { + background-position: -96px -144px; +} + +.icon-thumbs-down { + background-position: -120px -144px; +} + +.icon-hand-right { + background-position: -144px -144px; +} + +.icon-hand-left { + background-position: -168px -144px; +} + +.icon-hand-up { + background-position: -192px -144px; +} + +.icon-hand-down { + background-position: -216px -144px; +} + +.icon-circle-arrow-right { + background-position: -240px -144px; +} + +.icon-circle-arrow-left { + background-position: -264px -144px; +} + +.icon-circle-arrow-up { + background-position: -288px -144px; +} + +.icon-circle-arrow-down { + background-position: -312px -144px; +} + +.icon-globe { + background-position: -336px -144px; +} + +.icon-wrench { + background-position: -360px -144px; +} + +.icon-tasks { + background-position: -384px -144px; +} + +.icon-filter { + background-position: -408px -144px; +} + +.icon-briefcase { + background-position: -432px -144px; +} + +.icon-fullscreen { + background-position: -456px -144px; +} + +.dropup, +.dropdown { + position: relative; +} + +.dropdown-toggle { + *margin-bottom: -3px; +} + +.dropdown-toggle:active, +.open .dropdown-toggle { + outline: 0; +} + +.caret { + display: inline-block; + width: 0; + height: 0; + vertical-align: top; + border-top: 4px solid #000000; + border-right: 4px solid transparent; + border-left: 4px solid transparent; + content: ""; +} + +.dropdown .caret { + margin-top: 8px; + margin-left: 2px; +} + +.dropdown-menu { + position: absolute; + top: 100%; + left: 0; + z-index: 1000; + display: none; + float: left; + min-width: 160px; + padding: 5px 0; + margin: 2px 0 0; + list-style: none; + background-color: #ffffff; + border: 1px solid #ccc; + border: 1px solid rgba(0, 0, 0, 0.2); + *border-right-width: 2px; + *border-bottom-width: 2px; + -webkit-border-radius: 6px; + -moz-border-radius: 6px; + border-radius: 6px; + -webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); + -moz-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); + box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); + -webkit-background-clip: padding-box; + -moz-background-clip: padding; + background-clip: padding-box; +} + +.dropdown-menu.pull-right { + right: 0; + left: auto; +} + +.dropdown-menu .divider { + *width: 100%; + height: 1px; + margin: 9px 1px; + *margin: -5px 0 5px; + overflow: hidden; + background-color: #e5e5e5; + border-bottom: 1px solid #ffffff; +} + +.dropdown-menu li > a { + display: block; + padding: 3px 20px; + clear: both; + font-weight: normal; + line-height: 20px; + color: #333333; + white-space: nowrap; +} + +.dropdown-menu li > a:hover, +.dropdown-menu li > a:focus, +.dropdown-submenu:hover > a { + color: #ffffff; + text-decoration: none; + background-color: #0081c2; + background-image: -moz-linear-gradient(top, #0088cc, #0077b3); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#0088cc), to(#0077b3)); + background-image: -webkit-linear-gradient(top, #0088cc, #0077b3); + background-image: -o-linear-gradient(top, #0088cc, #0077b3); + background-image: linear-gradient(to bottom, #0088cc, #0077b3); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff0088cc', endColorstr='#ff0077b3', GradientType=0); +} + +.dropdown-menu .active > a, +.dropdown-menu .active > a:hover { + color: #ffffff; + text-decoration: none; + background-color: #0081c2; + background-image: -moz-linear-gradient(top, #0088cc, #0077b3); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#0088cc), to(#0077b3)); + background-image: -webkit-linear-gradient(top, #0088cc, #0077b3); + background-image: -o-linear-gradient(top, #0088cc, #0077b3); + background-image: linear-gradient(to bottom, #0088cc, #0077b3); + background-repeat: repeat-x; + outline: 0; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff0088cc', endColorstr='#ff0077b3', GradientType=0); +} + +.dropdown-menu .disabled > a, +.dropdown-menu .disabled > a:hover { + color: #999999; +} + +.dropdown-menu .disabled > a:hover { + text-decoration: none; + cursor: default; + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.gradient(enabled=false); +} + +.open { + *z-index: 1000; +} + +.open > .dropdown-menu { + display: block; +} + +.pull-right > .dropdown-menu { + right: 0; + left: auto; +} + +.dropup .caret, +.navbar-fixed-bottom .dropdown .caret { + border-top: 0; + border-bottom: 4px solid #000000; + content: ""; +} + +.dropup .dropdown-menu, +.navbar-fixed-bottom .dropdown .dropdown-menu { + top: auto; + bottom: 100%; + margin-bottom: 1px; +} + +.dropdown-submenu { + position: relative; +} + +.dropdown-submenu > .dropdown-menu { + top: 0; + left: 100%; + margin-top: -6px; + margin-left: -1px; + -webkit-border-radius: 0 6px 6px 6px; + -moz-border-radius: 0 6px 6px 6px; + border-radius: 0 6px 6px 6px; +} + +.dropdown-submenu:hover > .dropdown-menu { + display: block; +} + +.dropup .dropdown-submenu > .dropdown-menu { + top: auto; + bottom: 0; + margin-top: 0; + margin-bottom: -2px; + -webkit-border-radius: 5px 5px 5px 0; + -moz-border-radius: 5px 5px 5px 0; + border-radius: 5px 5px 5px 0; +} + +.dropdown-submenu > a:after { + display: block; + float: right; + width: 0; + height: 0; + margin-top: 5px; + margin-right: -10px; + border-color: transparent; + border-left-color: #cccccc; + border-style: solid; + border-width: 5px 0 5px 5px; + content: " "; +} + +.dropdown-submenu:hover > a:after { + border-left-color: #ffffff; +} + +.dropdown-submenu.pull-left { + float: none; +} + +.dropdown-submenu.pull-left > .dropdown-menu { + left: -100%; + margin-left: 10px; + -webkit-border-radius: 6px 0 6px 6px; + -moz-border-radius: 6px 0 6px 6px; + border-radius: 6px 0 6px 6px; +} + +.dropdown .dropdown-menu .nav-header { + padding-right: 20px; + padding-left: 20px; +} + +.typeahead { + z-index: 1051; + margin-top: 2px; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; +} + +.well { + min-height: 20px; + padding: 19px; + margin-bottom: 20px; + background-color: #f5f5f5; + border: 1px solid #e3e3e3; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05); + -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05); +} + +.well blockquote { + border-color: #ddd; + border-color: rgba(0, 0, 0, 0.15); +} + +.well-large { + padding: 24px; + -webkit-border-radius: 6px; + -moz-border-radius: 6px; + border-radius: 6px; +} + +.well-small { + padding: 9px; + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + border-radius: 3px; +} + +.fade { + opacity: 0; + -webkit-transition: opacity 0.15s linear; + -moz-transition: opacity 0.15s linear; + -o-transition: opacity 0.15s linear; + transition: opacity 0.15s linear; +} + +.fade.in { + opacity: 1; +} + +.collapse { + position: relative; + height: 0; + overflow: hidden; + -webkit-transition: height 0.35s ease; + -moz-transition: height 0.35s ease; + -o-transition: height 0.35s ease; + transition: height 0.35s ease; +} + +.collapse.in { + height: auto; +} + +.close { + float: right; + font-size: 20px; + font-weight: bold; + line-height: 20px; + color: #000000; + text-shadow: 0 1px 0 #ffffff; + opacity: 0.2; + filter: alpha(opacity=20); +} + +.close:hover { + color: #000000; + text-decoration: none; + cursor: pointer; + opacity: 0.4; + filter: alpha(opacity=40); +} + +button.close { + padding: 0; + cursor: pointer; + background: transparent; + border: 0; + -webkit-appearance: none; +} + +.btn { + display: inline-block; + *display: inline; + padding: 4px 12px; + margin-bottom: 0; + *margin-left: .3em; + font-size: 14px; + line-height: 20px; + color: #333333; + text-align: center; + text-shadow: 0 1px 1px rgba(255, 255, 255, 0.75); + vertical-align: middle; + cursor: pointer; + background-color: #f5f5f5; + *background-color: #e6e6e6; + background-image: -moz-linear-gradient(top, #ffffff, #e6e6e6); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ffffff), to(#e6e6e6)); + background-image: -webkit-linear-gradient(top, #ffffff, #e6e6e6); + background-image: -o-linear-gradient(top, #ffffff, #e6e6e6); + background-image: linear-gradient(to bottom, #ffffff, #e6e6e6); + background-repeat: repeat-x; + border: 1px solid #bbbbbb; + *border: 0; + border-color: #e6e6e6 #e6e6e6 #bfbfbf; + border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); + border-bottom-color: #a2a2a2; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#ffe6e6e6', GradientType=0); + filter: progid:DXImageTransform.Microsoft.gradient(enabled=false); + *zoom: 1; + -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05); + -moz-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05); + box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05); +} + +.btn:hover, +.btn:active, +.btn.active, +.btn.disabled, +.btn[disabled] { + color: #333333; + background-color: #e6e6e6; + *background-color: #d9d9d9; +} + +.btn:active, +.btn.active { + background-color: #cccccc \9; +} + +.btn:first-child { + *margin-left: 0; +} + +.btn:hover { + color: #333333; + text-decoration: none; + background-position: 0 -15px; + -webkit-transition: background-position 0.1s linear; + -moz-transition: background-position 0.1s linear; + -o-transition: background-position 0.1s linear; + transition: background-position 0.1s linear; +} + +.btn:focus { + outline: thin dotted #333; + outline: 5px auto -webkit-focus-ring-color; + outline-offset: -2px; +} + +.btn.active, +.btn:active { + background-image: none; + outline: 0; + -webkit-box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05); + -moz-box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05); + box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05); +} + +.btn.disabled, +.btn[disabled] { + cursor: default; + background-image: none; + opacity: 0.65; + filter: alpha(opacity=65); + -webkit-box-shadow: none; + -moz-box-shadow: none; + box-shadow: none; +} + +.btn-large { + padding: 11px 19px; + font-size: 17.5px; + -webkit-border-radius: 6px; + -moz-border-radius: 6px; + border-radius: 6px; +} + +.btn-large [class^="icon-"], +.btn-large [class*=" icon-"] { + margin-top: 4px; +} + +.btn-small { + padding: 2px 10px; + font-size: 11.9px; + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + border-radius: 3px; +} + +.btn-small [class^="icon-"], +.btn-small [class*=" icon-"] { + margin-top: 0; +} + +.btn-mini [class^="icon-"], +.btn-mini [class*=" icon-"] { + margin-top: -1px; +} + +.btn-mini { + padding: 0 6px; + font-size: 10.5px; + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + border-radius: 3px; +} + +.btn-block { + display: block; + width: 100%; + padding-right: 0; + padding-left: 0; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; +} + +.btn-block + .btn-block { + margin-top: 5px; +} + +input[type="submit"].btn-block, +input[type="reset"].btn-block, +input[type="button"].btn-block { + width: 100%; +} + +.btn-primary.active, +.btn-warning.active, +.btn-danger.active, +.btn-success.active, +.btn-info.active, +.btn-inverse.active { + color: rgba(255, 255, 255, 0.75); +} + +.btn { + border-color: #c5c5c5; + border-color: rgba(0, 0, 0, 0.15) rgba(0, 0, 0, 0.15) rgba(0, 0, 0, 0.25); +} + +.btn-primary { + color: #ffffff; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); + background-color: #006dcc; + *background-color: #0044cc; + background-image: -moz-linear-gradient(top, #0088cc, #0044cc); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#0088cc), to(#0044cc)); + background-image: -webkit-linear-gradient(top, #0088cc, #0044cc); + background-image: -o-linear-gradient(top, #0088cc, #0044cc); + background-image: linear-gradient(to bottom, #0088cc, #0044cc); + background-repeat: repeat-x; + border-color: #0044cc #0044cc #002a80; + border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff0088cc', endColorstr='#ff0044cc', GradientType=0); + filter: progid:DXImageTransform.Microsoft.gradient(enabled=false); +} + +.btn-primary:hover, +.btn-primary:active, +.btn-primary.active, +.btn-primary.disabled, +.btn-primary[disabled] { + color: #ffffff; + background-color: #0044cc; + *background-color: #003bb3; +} + +.btn-primary:active, +.btn-primary.active { + background-color: #003399 \9; +} + +.btn-warning { + color: #ffffff; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); + background-color: #faa732; + *background-color: #f89406; + background-image: -moz-linear-gradient(top, #fbb450, #f89406); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#fbb450), to(#f89406)); + background-image: -webkit-linear-gradient(top, #fbb450, #f89406); + background-image: -o-linear-gradient(top, #fbb450, #f89406); + background-image: linear-gradient(to bottom, #fbb450, #f89406); + background-repeat: repeat-x; + border-color: #f89406 #f89406 #ad6704; + border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffbb450', endColorstr='#fff89406', GradientType=0); + filter: progid:DXImageTransform.Microsoft.gradient(enabled=false); +} + +.btn-warning:hover, +.btn-warning:active, +.btn-warning.active, +.btn-warning.disabled, +.btn-warning[disabled] { + color: #ffffff; + background-color: #f89406; + *background-color: #df8505; +} + +.btn-warning:active, +.btn-warning.active { + background-color: #c67605 \9; +} + +.btn-danger { + color: #ffffff; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); + background-color: #da4f49; + *background-color: #bd362f; + background-image: -moz-linear-gradient(top, #ee5f5b, #bd362f); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ee5f5b), to(#bd362f)); + background-image: -webkit-linear-gradient(top, #ee5f5b, #bd362f); + background-image: -o-linear-gradient(top, #ee5f5b, #bd362f); + background-image: linear-gradient(to bottom, #ee5f5b, #bd362f); + background-repeat: repeat-x; + border-color: #bd362f #bd362f #802420; + border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffee5f5b', endColorstr='#ffbd362f', GradientType=0); + filter: progid:DXImageTransform.Microsoft.gradient(enabled=false); +} + +.btn-danger:hover, +.btn-danger:active, +.btn-danger.active, +.btn-danger.disabled, +.btn-danger[disabled] { + color: #ffffff; + background-color: #bd362f; + *background-color: #a9302a; +} + +.btn-danger:active, +.btn-danger.active { + background-color: #942a25 \9; +} + +.btn-success { + color: #ffffff; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); + background-color: #5bb75b; + *background-color: #51a351; + background-image: -moz-linear-gradient(top, #62c462, #51a351); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#62c462), to(#51a351)); + background-image: -webkit-linear-gradient(top, #62c462, #51a351); + background-image: -o-linear-gradient(top, #62c462, #51a351); + background-image: linear-gradient(to bottom, #62c462, #51a351); + background-repeat: repeat-x; + border-color: #51a351 #51a351 #387038; + border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff62c462', endColorstr='#ff51a351', GradientType=0); + filter: progid:DXImageTransform.Microsoft.gradient(enabled=false); +} + +.btn-success:hover, +.btn-success:active, +.btn-success.active, +.btn-success.disabled, +.btn-success[disabled] { + color: #ffffff; + background-color: #51a351; + *background-color: #499249; +} + +.btn-success:active, +.btn-success.active { + background-color: #408140 \9; +} + +.btn-info { + color: #ffffff; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); + background-color: #49afcd; + *background-color: #2f96b4; + background-image: -moz-linear-gradient(top, #5bc0de, #2f96b4); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#5bc0de), to(#2f96b4)); + background-image: -webkit-linear-gradient(top, #5bc0de, #2f96b4); + background-image: -o-linear-gradient(top, #5bc0de, #2f96b4); + background-image: linear-gradient(to bottom, #5bc0de, #2f96b4); + background-repeat: repeat-x; + border-color: #2f96b4 #2f96b4 #1f6377; + border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff2f96b4', GradientType=0); + filter: progid:DXImageTransform.Microsoft.gradient(enabled=false); +} + +.btn-info:hover, +.btn-info:active, +.btn-info.active, +.btn-info.disabled, +.btn-info[disabled] { + color: #ffffff; + background-color: #2f96b4; + *background-color: #2a85a0; +} + +.btn-info:active, +.btn-info.active { + background-color: #24748c \9; +} + +.btn-inverse { + color: #ffffff; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); + background-color: #363636; + *background-color: #222222; + background-image: -moz-linear-gradient(top, #444444, #222222); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#444444), to(#222222)); + background-image: -webkit-linear-gradient(top, #444444, #222222); + background-image: -o-linear-gradient(top, #444444, #222222); + background-image: linear-gradient(to bottom, #444444, #222222); + background-repeat: repeat-x; + border-color: #222222 #222222 #000000; + border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff444444', endColorstr='#ff222222', GradientType=0); + filter: progid:DXImageTransform.Microsoft.gradient(enabled=false); +} + +.btn-inverse:hover, +.btn-inverse:active, +.btn-inverse.active, +.btn-inverse.disabled, +.btn-inverse[disabled] { + color: #ffffff; + background-color: #222222; + *background-color: #151515; +} + +.btn-inverse:active, +.btn-inverse.active { + background-color: #080808 \9; +} + +button.btn, +input[type="submit"].btn { + *padding-top: 3px; + *padding-bottom: 3px; +} + +button.btn::-moz-focus-inner, +input[type="submit"].btn::-moz-focus-inner { + padding: 0; + border: 0; +} + +button.btn.btn-large, +input[type="submit"].btn.btn-large { + *padding-top: 7px; + *padding-bottom: 7px; +} + +button.btn.btn-small, +input[type="submit"].btn.btn-small { + *padding-top: 3px; + *padding-bottom: 3px; +} + +button.btn.btn-mini, +input[type="submit"].btn.btn-mini { + *padding-top: 1px; + *padding-bottom: 1px; +} + +.btn-link, +.btn-link:active, +.btn-link[disabled] { + background-color: transparent; + background-image: none; + -webkit-box-shadow: none; + -moz-box-shadow: none; + box-shadow: none; +} + +.btn-link { + color: #0088cc; + cursor: pointer; + border-color: transparent; + -webkit-border-radius: 0; + -moz-border-radius: 0; + border-radius: 0; +} + +.btn-link:hover { + color: #005580; + text-decoration: underline; + background-color: transparent; +} + +.btn-link[disabled]:hover { + color: #333333; + text-decoration: none; +} + +.btn-group { + position: relative; + display: inline-block; + *display: inline; + *margin-left: .3em; + font-size: 0; + white-space: nowrap; + vertical-align: middle; + *zoom: 1; +} + +.btn-group:first-child { + *margin-left: 0; +} + +.btn-group + .btn-group { + margin-left: 5px; +} + +.btn-toolbar { + margin-top: 10px; + margin-bottom: 10px; + font-size: 0; +} + +.btn-toolbar > .btn + .btn, +.btn-toolbar > .btn-group + .btn, +.btn-toolbar > .btn + .btn-group { + margin-left: 5px; +} + +.btn-group > .btn { + position: relative; + -webkit-border-radius: 0; + -moz-border-radius: 0; + border-radius: 0; +} + +.btn-group > .btn + .btn { + margin-left: -1px; +} + +.btn-group > .btn, +.btn-group > .dropdown-menu, +.btn-group > .popover { + font-size: 14px; +} + +.btn-group > .btn-mini { + font-size: 10.5px; +} + +.btn-group > .btn-small { + font-size: 11.9px; +} + +.btn-group > .btn-large { + font-size: 17.5px; +} + +.btn-group > .btn:first-child { + margin-left: 0; + -webkit-border-bottom-left-radius: 4px; + border-bottom-left-radius: 4px; + -webkit-border-top-left-radius: 4px; + border-top-left-radius: 4px; + -moz-border-radius-bottomleft: 4px; + -moz-border-radius-topleft: 4px; +} + +.btn-group > .btn:last-child, +.btn-group > .dropdown-toggle { + -webkit-border-top-right-radius: 4px; + border-top-right-radius: 4px; + -webkit-border-bottom-right-radius: 4px; + border-bottom-right-radius: 4px; + -moz-border-radius-topright: 4px; + -moz-border-radius-bottomright: 4px; +} + +.btn-group > .btn.large:first-child { + margin-left: 0; + -webkit-border-bottom-left-radius: 6px; + border-bottom-left-radius: 6px; + -webkit-border-top-left-radius: 6px; + border-top-left-radius: 6px; + -moz-border-radius-bottomleft: 6px; + -moz-border-radius-topleft: 6px; +} + +.btn-group > .btn.large:last-child, +.btn-group > .large.dropdown-toggle { + -webkit-border-top-right-radius: 6px; + border-top-right-radius: 6px; + -webkit-border-bottom-right-radius: 6px; + border-bottom-right-radius: 6px; + -moz-border-radius-topright: 6px; + -moz-border-radius-bottomright: 6px; +} + +.btn-group > .btn:hover, +.btn-group > .btn:focus, +.btn-group > .btn:active, +.btn-group > .btn.active { + z-index: 2; +} + +.btn-group .dropdown-toggle:active, +.btn-group.open .dropdown-toggle { + outline: 0; +} + +.btn-group > .btn + .dropdown-toggle { + *padding-top: 5px; + padding-right: 8px; + *padding-bottom: 5px; + padding-left: 8px; + -webkit-box-shadow: inset 1px 0 0 rgba(255, 255, 255, 0.125), inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05); + -moz-box-shadow: inset 1px 0 0 rgba(255, 255, 255, 0.125), inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05); + box-shadow: inset 1px 0 0 rgba(255, 255, 255, 0.125), inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05); +} + +.btn-group > .btn-mini + .dropdown-toggle { + *padding-top: 2px; + padding-right: 5px; + *padding-bottom: 2px; + padding-left: 5px; +} + +.btn-group > .btn-small + .dropdown-toggle { + *padding-top: 5px; + *padding-bottom: 4px; +} + +.btn-group > .btn-large + .dropdown-toggle { + *padding-top: 7px; + padding-right: 12px; + *padding-bottom: 7px; + padding-left: 12px; +} + +.btn-group.open .dropdown-toggle { + background-image: none; + -webkit-box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05); + -moz-box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05); + box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05); +} + +.btn-group.open .btn.dropdown-toggle { + background-color: #e6e6e6; +} + +.btn-group.open .btn-primary.dropdown-toggle { + background-color: #0044cc; +} + +.btn-group.open .btn-warning.dropdown-toggle { + background-color: #f89406; +} + +.btn-group.open .btn-danger.dropdown-toggle { + background-color: #bd362f; +} + +.btn-group.open .btn-success.dropdown-toggle { + background-color: #51a351; +} + +.btn-group.open .btn-info.dropdown-toggle { + background-color: #2f96b4; +} + +.btn-group.open .btn-inverse.dropdown-toggle { + background-color: #222222; +} + +.btn .caret { + margin-top: 8px; + margin-left: 0; +} + +.btn-mini .caret, +.btn-small .caret, +.btn-large .caret { + margin-top: 6px; +} + +.btn-large .caret { + border-top-width: 5px; + border-right-width: 5px; + border-left-width: 5px; +} + +.dropup .btn-large .caret { + border-bottom-width: 5px; +} + +.btn-primary .caret, +.btn-warning .caret, +.btn-danger .caret, +.btn-info .caret, +.btn-success .caret, +.btn-inverse .caret { + border-top-color: #ffffff; + border-bottom-color: #ffffff; +} + +.btn-group-vertical { + display: inline-block; + *display: inline; + /* IE7 inline-block hack */ + + *zoom: 1; +} + +.btn-group-vertical > .btn { + display: block; + float: none; + max-width: 100%; + -webkit-border-radius: 0; + -moz-border-radius: 0; + border-radius: 0; +} + +.btn-group-vertical > .btn + .btn { + margin-top: -1px; + margin-left: 0; +} + +.btn-group-vertical > .btn:first-child { + -webkit-border-radius: 4px 4px 0 0; + -moz-border-radius: 4px 4px 0 0; + border-radius: 4px 4px 0 0; +} + +.btn-group-vertical > .btn:last-child { + -webkit-border-radius: 0 0 4px 4px; + -moz-border-radius: 0 0 4px 4px; + border-radius: 0 0 4px 4px; +} + +.btn-group-vertical > .btn-large:first-child { + -webkit-border-radius: 6px 6px 0 0; + -moz-border-radius: 6px 6px 0 0; + border-radius: 6px 6px 0 0; +} + +.btn-group-vertical > .btn-large:last-child { + -webkit-border-radius: 0 0 6px 6px; + -moz-border-radius: 0 0 6px 6px; + border-radius: 0 0 6px 6px; +} + +.alert { + padding: 8px 35px 8px 14px; + margin-bottom: 20px; + text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5); + background-color: #fcf8e3; + border: 1px solid #fbeed5; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; +} + +.alert, +.alert h4 { + color: #c09853; +} + +.alert h4 { + margin: 0; +} + +.alert .close { + position: relative; + top: -2px; + right: -21px; + line-height: 20px; +} + +.alert-success { + color: #468847; + background-color: #dff0d8; + border-color: #d6e9c6; +} + +.alert-success h4 { + color: #468847; +} + +.alert-danger, +.alert-error { + color: #b94a48; + background-color: #f2dede; + border-color: #eed3d7; +} + +.alert-danger h4, +.alert-error h4 { + color: #b94a48; +} + +.alert-info { + color: #3a87ad; + background-color: #d9edf7; + border-color: #bce8f1; +} + +.alert-info h4 { + color: #3a87ad; +} + +.alert-block { + padding-top: 14px; + padding-bottom: 14px; +} + +.alert-block > p, +.alert-block > ul { + margin-bottom: 0; +} + +.alert-block p + p { + margin-top: 5px; +} + +.nav { + margin-bottom: 20px; + margin-left: 0; + list-style: none; +} + +.nav > li > a { + display: block; +} + +.nav > li > a:hover { + text-decoration: none; + background-color: #eeeeee; +} + +.nav > li > a > img { + max-width: none; +} + +.nav > .pull-right { + float: right; +} + +.nav-header { + display: block; + padding: 3px 15px; + font-size: 11px; + font-weight: bold; + line-height: 20px; + color: #999999; + text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5); + text-transform: uppercase; +} + +.nav li + .nav-header { + margin-top: 9px; +} + +.nav-list { + padding-right: 15px; + padding-left: 15px; + margin-bottom: 0; +} + +.nav-list > li > a, +.nav-list .nav-header { + margin-right: -15px; + margin-left: -15px; + text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5); +} + +.nav-list > li > a { + padding: 3px 15px; +} + +.nav-list > .active > a, +.nav-list > .active > a:hover { + color: #ffffff; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.2); + background-color: #0088cc; +} + +.nav-list [class^="icon-"], +.nav-list [class*=" icon-"] { + margin-right: 2px; +} + +.nav-list .divider { + *width: 100%; + height: 1px; + margin: 9px 1px; + *margin: -5px 0 5px; + overflow: hidden; + background-color: #e5e5e5; + border-bottom: 1px solid #ffffff; +} + +.nav-tabs, +.nav-pills { + *zoom: 1; +} + +.nav-tabs:before, +.nav-pills:before, +.nav-tabs:after, +.nav-pills:after { + display: table; + line-height: 0; + content: ""; +} + +.nav-tabs:after, +.nav-pills:after { + clear: both; +} + +.nav-tabs > li, +.nav-pills > li { + float: left; +} + +.nav-tabs > li > a, +.nav-pills > li > a { + padding-right: 12px; + padding-left: 12px; + margin-right: 2px; + line-height: 14px; +} + +.nav-tabs { + border-bottom: 1px solid #ddd; +} + +.nav-tabs > li { + margin-bottom: -1px; +} + +.nav-tabs > li > a { + padding-top: 8px; + padding-bottom: 8px; + line-height: 20px; + border: 1px solid transparent; + -webkit-border-radius: 4px 4px 0 0; + -moz-border-radius: 4px 4px 0 0; + border-radius: 4px 4px 0 0; +} + +.nav-tabs > li > a:hover { + border-color: #eeeeee #eeeeee #dddddd; +} + +.nav-tabs > .active > a, +.nav-tabs > .active > a:hover { + color: #555555; + cursor: default; + background-color: #ffffff; + border: 1px solid #ddd; + border-bottom-color: transparent; +} + +.nav-pills > li > a { + padding-top: 8px; + padding-bottom: 8px; + margin-top: 2px; + margin-bottom: 2px; + -webkit-border-radius: 5px; + -moz-border-radius: 5px; + border-radius: 5px; +} + +.nav-pills > .active > a, +.nav-pills > .active > a:hover { + color: #ffffff; + background-color: #0088cc; +} + +.nav-stacked > li { + float: none; +} + +.nav-stacked > li > a { + margin-right: 0; +} + +.nav-tabs.nav-stacked { + border-bottom: 0; +} + +.nav-tabs.nav-stacked > li > a { + border: 1px solid #ddd; + -webkit-border-radius: 0; + -moz-border-radius: 0; + border-radius: 0; +} + +.nav-tabs.nav-stacked > li:first-child > a { + -webkit-border-top-right-radius: 4px; + border-top-right-radius: 4px; + -webkit-border-top-left-radius: 4px; + border-top-left-radius: 4px; + -moz-border-radius-topright: 4px; + -moz-border-radius-topleft: 4px; +} + +.nav-tabs.nav-stacked > li:last-child > a { + -webkit-border-bottom-right-radius: 4px; + border-bottom-right-radius: 4px; + -webkit-border-bottom-left-radius: 4px; + border-bottom-left-radius: 4px; + -moz-border-radius-bottomright: 4px; + -moz-border-radius-bottomleft: 4px; +} + +.nav-tabs.nav-stacked > li > a:hover { + z-index: 2; + border-color: #ddd; +} + +.nav-pills.nav-stacked > li > a { + margin-bottom: 3px; +} + +.nav-pills.nav-stacked > li:last-child > a { + margin-bottom: 1px; +} + +.nav-tabs .dropdown-menu { + -webkit-border-radius: 0 0 6px 6px; + -moz-border-radius: 0 0 6px 6px; + border-radius: 0 0 6px 6px; +} + +.nav-pills .dropdown-menu { + -webkit-border-radius: 6px; + -moz-border-radius: 6px; + border-radius: 6px; +} + +.nav .dropdown-toggle .caret { + margin-top: 6px; + border-top-color: #0088cc; + border-bottom-color: #0088cc; +} + +.nav .dropdown-toggle:hover .caret { + border-top-color: #005580; + border-bottom-color: #005580; +} + +/* move down carets for tabs */ + +.nav-tabs .dropdown-toggle .caret { + margin-top: 8px; +} + +.nav .active .dropdown-toggle .caret { + border-top-color: #fff; + border-bottom-color: #fff; +} + +.nav-tabs .active .dropdown-toggle .caret { + border-top-color: #555555; + border-bottom-color: #555555; +} + +.nav > .dropdown.active > a:hover { + cursor: pointer; +} + +.nav-tabs .open .dropdown-toggle, +.nav-pills .open .dropdown-toggle, +.nav > li.dropdown.open.active > a:hover { + color: #ffffff; + background-color: #999999; + border-color: #999999; +} + +.nav li.dropdown.open .caret, +.nav li.dropdown.open.active .caret, +.nav li.dropdown.open a:hover .caret { + border-top-color: #ffffff; + border-bottom-color: #ffffff; + opacity: 1; + filter: alpha(opacity=100); +} + +.tabs-stacked .open > a:hover { + border-color: #999999; +} + +.tabbable { + *zoom: 1; +} + +.tabbable:before, +.tabbable:after { + display: table; + line-height: 0; + content: ""; +} + +.tabbable:after { + clear: both; +} + +.tab-content { + overflow: auto; +} + +.tabs-below > .nav-tabs, +.tabs-right > .nav-tabs, +.tabs-left > .nav-tabs { + border-bottom: 0; +} + +.tab-content > .tab-pane, +.pill-content > .pill-pane { + display: none; +} + +.tab-content > .active, +.pill-content > .active { + display: block; +} + +.tabs-below > .nav-tabs { + border-top: 1px solid #ddd; +} + +.tabs-below > .nav-tabs > li { + margin-top: -1px; + margin-bottom: 0; +} + +.tabs-below > .nav-tabs > li > a { + -webkit-border-radius: 0 0 4px 4px; + -moz-border-radius: 0 0 4px 4px; + border-radius: 0 0 4px 4px; +} + +.tabs-below > .nav-tabs > li > a:hover { + border-top-color: #ddd; + border-bottom-color: transparent; +} + +.tabs-below > .nav-tabs > .active > a, +.tabs-below > .nav-tabs > .active > a:hover { + border-color: transparent #ddd #ddd #ddd; +} + +.tabs-left > .nav-tabs > li, +.tabs-right > .nav-tabs > li { + float: none; +} + +.tabs-left > .nav-tabs > li > a, +.tabs-right > .nav-tabs > li > a { + min-width: 74px; + margin-right: 0; + margin-bottom: 3px; +} + +.tabs-left > .nav-tabs { + float: left; + margin-right: 19px; + border-right: 1px solid #ddd; +} + +.tabs-left > .nav-tabs > li > a { + margin-right: -1px; + -webkit-border-radius: 4px 0 0 4px; + -moz-border-radius: 4px 0 0 4px; + border-radius: 4px 0 0 4px; +} + +.tabs-left > .nav-tabs > li > a:hover { + border-color: #eeeeee #dddddd #eeeeee #eeeeee; +} + +.tabs-left > .nav-tabs .active > a, +.tabs-left > .nav-tabs .active > a:hover { + border-color: #ddd transparent #ddd #ddd; + *border-right-color: #ffffff; +} + +.tabs-right > .nav-tabs { + float: right; + margin-left: 19px; + border-left: 1px solid #ddd; +} + +.tabs-right > .nav-tabs > li > a { + margin-left: -1px; + -webkit-border-radius: 0 4px 4px 0; + -moz-border-radius: 0 4px 4px 0; + border-radius: 0 4px 4px 0; +} + +.tabs-right > .nav-tabs > li > a:hover { + border-color: #eeeeee #eeeeee #eeeeee #dddddd; +} + +.tabs-right > .nav-tabs .active > a, +.tabs-right > .nav-tabs .active > a:hover { + border-color: #ddd #ddd #ddd transparent; + *border-left-color: #ffffff; +} + +.nav > .disabled > a { + color: #999999; +} + +.nav > .disabled > a:hover { + text-decoration: none; + cursor: default; + background-color: transparent; +} + +.navbar { + *position: relative; + *z-index: 2; + margin-bottom: 20px; + overflow: visible; +} + +.navbar-inner { + min-height: 40px; + padding-right: 20px; + padding-left: 20px; + background-color: #fafafa; + background-image: -moz-linear-gradient(top, #ffffff, #f2f2f2); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ffffff), to(#f2f2f2)); + background-image: -webkit-linear-gradient(top, #ffffff, #f2f2f2); + background-image: -o-linear-gradient(top, #ffffff, #f2f2f2); + background-image: linear-gradient(to bottom, #ffffff, #f2f2f2); + background-repeat: repeat-x; + border: 1px solid #d4d4d4; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#fff2f2f2', GradientType=0); + *zoom: 1; + -webkit-box-shadow: 0 1px 4px rgba(0, 0, 0, 0.065); + -moz-box-shadow: 0 1px 4px rgba(0, 0, 0, 0.065); + box-shadow: 0 1px 4px rgba(0, 0, 0, 0.065); +} + +.navbar-inner:before, +.navbar-inner:after { + display: table; + line-height: 0; + content: ""; +} + +.navbar-inner:after { + clear: both; +} + +.navbar .container { + width: auto; +} + +.nav-collapse.collapse { + height: auto; + overflow: visible; +} + +.navbar .brand { + display: block; + float: left; + padding: 10px 20px 10px; + margin-left: -20px; + font-size: 20px; + font-weight: 200; + color: #777777; + text-shadow: 0 1px 0 #ffffff; +} + +.navbar .brand:hover { + text-decoration: none; +} + +.navbar-text { + margin-bottom: 0; + line-height: 40px; + color: #777777; +} + +.navbar-link { + color: #777777; +} + +.navbar-link:hover { + color: #333333; +} + +.navbar .divider-vertical { + height: 40px; + margin: 0 9px; + border-right: 1px solid #ffffff; + border-left: 1px solid #f2f2f2; +} + +.navbar .btn, +.navbar .btn-group { + margin-top: 5px; +} + +.navbar .btn-group .btn, +.navbar .input-prepend .btn, +.navbar .input-append .btn { + margin-top: 0; +} + +.navbar-form { + margin-bottom: 0; + *zoom: 1; +} + +.navbar-form:before, +.navbar-form:after { + display: table; + line-height: 0; + content: ""; +} + +.navbar-form:after { + clear: both; +} + +.navbar-form input, +.navbar-form select, +.navbar-form .radio, +.navbar-form .checkbox { + margin-top: 5px; +} + +.navbar-form input, +.navbar-form select, +.navbar-form .btn { + display: inline-block; + margin-bottom: 0; +} + +.navbar-form input[type="image"], +.navbar-form input[type="checkbox"], +.navbar-form input[type="radio"] { + margin-top: 3px; +} + +.navbar-form .input-append, +.navbar-form .input-prepend { + margin-top: 5px; + white-space: nowrap; +} + +.navbar-form .input-append input, +.navbar-form .input-prepend input { + margin-top: 0; +} + +.navbar-search { + position: relative; + float: left; + margin-top: 5px; + margin-bottom: 0; +} + +.navbar-search .search-query { + padding: 4px 14px; + margin-bottom: 0; + font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; + font-size: 13px; + font-weight: normal; + line-height: 1; + -webkit-border-radius: 15px; + -moz-border-radius: 15px; + border-radius: 15px; +} + +.navbar-static-top { + position: static; + margin-bottom: 0; +} + +.navbar-static-top .navbar-inner { + -webkit-border-radius: 0; + -moz-border-radius: 0; + border-radius: 0; +} + +.navbar-fixed-top, +.navbar-fixed-bottom { + position: fixed; + right: 0; + left: 0; + z-index: 1030; + margin-bottom: 0; +} + +.navbar-fixed-top .navbar-inner, +.navbar-static-top .navbar-inner { + border-width: 0 0 1px; +} + +.navbar-fixed-bottom .navbar-inner { + border-width: 1px 0 0; +} + +.navbar-fixed-top .navbar-inner, +.navbar-fixed-bottom .navbar-inner { + padding-right: 0; + padding-left: 0; + -webkit-border-radius: 0; + -moz-border-radius: 0; + border-radius: 0; +} + +.navbar-static-top .container, +.navbar-fixed-top .container, +.navbar-fixed-bottom .container { + width: 940px; +} + +.navbar-fixed-top { + top: 0; +} + +.navbar-fixed-top .navbar-inner, +.navbar-static-top .navbar-inner { + -webkit-box-shadow: 0 1px 10px rgba(0, 0, 0, 0.1); + -moz-box-shadow: 0 1px 10px rgba(0, 0, 0, 0.1); + box-shadow: 0 1px 10px rgba(0, 0, 0, 0.1); +} + +.navbar-fixed-bottom { + bottom: 0; +} + +.navbar-fixed-bottom .navbar-inner { + -webkit-box-shadow: 0 -1px 10px rgba(0, 0, 0, 0.1); + -moz-box-shadow: 0 -1px 10px rgba(0, 0, 0, 0.1); + box-shadow: 0 -1px 10px rgba(0, 0, 0, 0.1); +} + +.navbar .nav { + position: relative; + left: 0; + display: block; + float: left; + margin: 0 10px 0 0; +} + +.navbar .nav.pull-right { + float: right; + margin-right: 0; +} + +.navbar .nav > li { + float: left; +} + +.navbar .nav > li > a { + float: none; + padding: 10px 15px 10px; + color: #777777; + text-decoration: none; + text-shadow: 0 1px 0 #ffffff; +} + +.navbar .nav .dropdown-toggle .caret { + margin-top: 8px; +} + +.navbar .nav > li > a:focus, +.navbar .nav > li > a:hover { + color: #333333; + text-decoration: none; + background-color: transparent; +} + +.navbar .nav > .active > a, +.navbar .nav > .active > a:hover, +.navbar .nav > .active > a:focus { + color: #555555; + text-decoration: none; + background-color: #e5e5e5; + -webkit-box-shadow: inset 0 3px 8px rgba(0, 0, 0, 0.125); + -moz-box-shadow: inset 0 3px 8px rgba(0, 0, 0, 0.125); + box-shadow: inset 0 3px 8px rgba(0, 0, 0, 0.125); +} + +.navbar .btn-navbar { + display: none; + float: right; + padding: 7px 10px; + margin-right: 5px; + margin-left: 5px; + color: #ffffff; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); + background-color: #ededed; + *background-color: #e5e5e5; + background-image: -moz-linear-gradient(top, #f2f2f2, #e5e5e5); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#f2f2f2), to(#e5e5e5)); + background-image: -webkit-linear-gradient(top, #f2f2f2, #e5e5e5); + background-image: -o-linear-gradient(top, #f2f2f2, #e5e5e5); + background-image: linear-gradient(to bottom, #f2f2f2, #e5e5e5); + background-repeat: repeat-x; + border-color: #e5e5e5 #e5e5e5 #bfbfbf; + border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2f2f2', endColorstr='#ffe5e5e5', GradientType=0); + filter: progid:DXImageTransform.Microsoft.gradient(enabled=false); + -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.075); + -moz-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.075); + box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.075); +} + +.navbar .btn-navbar:hover, +.navbar .btn-navbar:active, +.navbar .btn-navbar.active, +.navbar .btn-navbar.disabled, +.navbar .btn-navbar[disabled] { + color: #ffffff; + background-color: #e5e5e5; + *background-color: #d9d9d9; +} + +.navbar .btn-navbar:active, +.navbar .btn-navbar.active { + background-color: #cccccc \9; +} + +.navbar .btn-navbar .icon-bar { + display: block; + width: 18px; + height: 2px; + background-color: #f5f5f5; + -webkit-border-radius: 1px; + -moz-border-radius: 1px; + border-radius: 1px; + -webkit-box-shadow: 0 1px 0 rgba(0, 0, 0, 0.25); + -moz-box-shadow: 0 1px 0 rgba(0, 0, 0, 0.25); + box-shadow: 0 1px 0 rgba(0, 0, 0, 0.25); +} + +.btn-navbar .icon-bar + .icon-bar { + margin-top: 3px; +} + +.navbar .nav > li > .dropdown-menu:before { + position: absolute; + top: -7px; + left: 9px; + display: inline-block; + border-right: 7px solid transparent; + border-bottom: 7px solid #ccc; + border-left: 7px solid transparent; + border-bottom-color: rgba(0, 0, 0, 0.2); + content: ''; +} + +.navbar .nav > li > .dropdown-menu:after { + position: absolute; + top: -6px; + left: 10px; + display: inline-block; + border-right: 6px solid transparent; + border-bottom: 6px solid #ffffff; + border-left: 6px solid transparent; + content: ''; +} + +.navbar-fixed-bottom .nav > li > .dropdown-menu:before { + top: auto; + bottom: -7px; + border-top: 7px solid #ccc; + border-bottom: 0; + border-top-color: rgba(0, 0, 0, 0.2); +} + +.navbar-fixed-bottom .nav > li > .dropdown-menu:after { + top: auto; + bottom: -6px; + border-top: 6px solid #ffffff; + border-bottom: 0; +} + +.navbar .nav li.dropdown > a:hover .caret { + border-top-color: #555555; + border-bottom-color: #555555; +} + +.navbar .nav li.dropdown.open > .dropdown-toggle, +.navbar .nav li.dropdown.active > .dropdown-toggle, +.navbar .nav li.dropdown.open.active > .dropdown-toggle { + color: #555555; + background-color: #e5e5e5; +} + +.navbar .nav li.dropdown > .dropdown-toggle .caret { + border-top-color: #777777; + border-bottom-color: #777777; +} + +.navbar .nav li.dropdown.open > .dropdown-toggle .caret, +.navbar .nav li.dropdown.active > .dropdown-toggle .caret, +.navbar .nav li.dropdown.open.active > .dropdown-toggle .caret { + border-top-color: #555555; + border-bottom-color: #555555; +} + +.navbar .pull-right > li > .dropdown-menu, +.navbar .nav > li > .dropdown-menu.pull-right { + right: 0; + left: auto; +} + +.navbar .pull-right > li > .dropdown-menu:before, +.navbar .nav > li > .dropdown-menu.pull-right:before { + right: 12px; + left: auto; +} + +.navbar .pull-right > li > .dropdown-menu:after, +.navbar .nav > li > .dropdown-menu.pull-right:after { + right: 13px; + left: auto; +} + +.navbar .pull-right > li > .dropdown-menu .dropdown-menu, +.navbar .nav > li > .dropdown-menu.pull-right .dropdown-menu { + right: 100%; + left: auto; + margin-right: -1px; + margin-left: 0; + -webkit-border-radius: 6px 0 6px 6px; + -moz-border-radius: 6px 0 6px 6px; + border-radius: 6px 0 6px 6px; +} + +.navbar-inverse .navbar-inner { + background-color: #1b1b1b; + background-image: -moz-linear-gradient(top, #222222, #111111); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#222222), to(#111111)); + background-image: -webkit-linear-gradient(top, #222222, #111111); + background-image: -o-linear-gradient(top, #222222, #111111); + background-image: linear-gradient(to bottom, #222222, #111111); + background-repeat: repeat-x; + border-color: #252525; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff222222', endColorstr='#ff111111', GradientType=0); +} + +.navbar-inverse .brand, +.navbar-inverse .nav > li > a { + color: #999999; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); +} + +.navbar-inverse .brand:hover, +.navbar-inverse .nav > li > a:hover { + color: #ffffff; +} + +.navbar-inverse .brand { + color: #999999; +} + +.navbar-inverse .navbar-text { + color: #999999; +} + +.navbar-inverse .nav > li > a:focus, +.navbar-inverse .nav > li > a:hover { + color: #ffffff; + background-color: transparent; +} + +.navbar-inverse .nav .active > a, +.navbar-inverse .nav .active > a:hover, +.navbar-inverse .nav .active > a:focus { + color: #ffffff; + background-color: #111111; +} + +.navbar-inverse .navbar-link { + color: #999999; +} + +.navbar-inverse .navbar-link:hover { + color: #ffffff; +} + +.navbar-inverse .divider-vertical { + border-right-color: #222222; + border-left-color: #111111; +} + +.navbar-inverse .nav li.dropdown.open > .dropdown-toggle, +.navbar-inverse .nav li.dropdown.active > .dropdown-toggle, +.navbar-inverse .nav li.dropdown.open.active > .dropdown-toggle { + color: #ffffff; + background-color: #111111; +} + +.navbar-inverse .nav li.dropdown > a:hover .caret { + border-top-color: #ffffff; + border-bottom-color: #ffffff; +} + +.navbar-inverse .nav li.dropdown > .dropdown-toggle .caret { + border-top-color: #999999; + border-bottom-color: #999999; +} + +.navbar-inverse .nav li.dropdown.open > .dropdown-toggle .caret, +.navbar-inverse .nav li.dropdown.active > .dropdown-toggle .caret, +.navbar-inverse .nav li.dropdown.open.active > .dropdown-toggle .caret { + border-top-color: #ffffff; + border-bottom-color: #ffffff; +} + +.navbar-inverse .navbar-search .search-query { + color: #ffffff; + background-color: #515151; + border-color: #111111; + -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1), 0 1px 0 rgba(255, 255, 255, 0.15); + -moz-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1), 0 1px 0 rgba(255, 255, 255, 0.15); + box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1), 0 1px 0 rgba(255, 255, 255, 0.15); + -webkit-transition: none; + -moz-transition: none; + -o-transition: none; + transition: none; +} + +.navbar-inverse .navbar-search .search-query:-moz-placeholder { + color: #cccccc; +} + +.navbar-inverse .navbar-search .search-query:-ms-input-placeholder { + color: #cccccc; +} + +.navbar-inverse .navbar-search .search-query::-webkit-input-placeholder { + color: #cccccc; +} + +.navbar-inverse .navbar-search .search-query:focus, +.navbar-inverse .navbar-search .search-query.focused { + padding: 5px 15px; + color: #333333; + text-shadow: 0 1px 0 #ffffff; + background-color: #ffffff; + border: 0; + outline: 0; + -webkit-box-shadow: 0 0 3px rgba(0, 0, 0, 0.15); + -moz-box-shadow: 0 0 3px rgba(0, 0, 0, 0.15); + box-shadow: 0 0 3px rgba(0, 0, 0, 0.15); +} + +.navbar-inverse .btn-navbar { + color: #ffffff; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); + background-color: #0e0e0e; + *background-color: #040404; + background-image: -moz-linear-gradient(top, #151515, #040404); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#151515), to(#040404)); + background-image: -webkit-linear-gradient(top, #151515, #040404); + background-image: -o-linear-gradient(top, #151515, #040404); + background-image: linear-gradient(to bottom, #151515, #040404); + background-repeat: repeat-x; + border-color: #040404 #040404 #000000; + border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff151515', endColorstr='#ff040404', GradientType=0); + filter: progid:DXImageTransform.Microsoft.gradient(enabled=false); +} + +.navbar-inverse .btn-navbar:hover, +.navbar-inverse .btn-navbar:active, +.navbar-inverse .btn-navbar.active, +.navbar-inverse .btn-navbar.disabled, +.navbar-inverse .btn-navbar[disabled] { + color: #ffffff; + background-color: #040404; + *background-color: #000000; +} + +.navbar-inverse .btn-navbar:active, +.navbar-inverse .btn-navbar.active { + background-color: #000000 \9; +} + +.breadcrumb { + padding: 8px 15px; + margin: 0 0 20px; + list-style: none; + background-color: #f5f5f5; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; +} + +.breadcrumb > li { + display: inline-block; + *display: inline; + text-shadow: 0 1px 0 #ffffff; + *zoom: 1; +} + +.breadcrumb > li > .divider { + padding: 0 5px; + color: #ccc; +} + +.breadcrumb > .active { + color: #999999; +} + +.pagination { + margin: 20px 0; +} + +.pagination ul { + display: inline-block; + *display: inline; + margin-bottom: 0; + margin-left: 0; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; + *zoom: 1; + -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05); + -moz-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05); + box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05); +} + +.pagination ul > li { + display: inline; +} + +.pagination ul > li > a, +.pagination ul > li > span { + float: left; + padding: 4px 12px; + line-height: 20px; + text-decoration: none; + background-color: #ffffff; + border: 1px solid #dddddd; + border-left-width: 0; +} + +.pagination ul > li > a:hover, +.pagination ul > .active > a, +.pagination ul > .active > span { + background-color: #f5f5f5; +} + +.pagination ul > .active > a, +.pagination ul > .active > span { + color: #999999; + cursor: default; +} + +.pagination ul > .disabled > span, +.pagination ul > .disabled > a, +.pagination ul > .disabled > a:hover { + color: #999999; + cursor: default; + background-color: transparent; +} + +.pagination ul > li:first-child > a, +.pagination ul > li:first-child > span { + border-left-width: 1px; + -webkit-border-bottom-left-radius: 4px; + border-bottom-left-radius: 4px; + -webkit-border-top-left-radius: 4px; + border-top-left-radius: 4px; + -moz-border-radius-bottomleft: 4px; + -moz-border-radius-topleft: 4px; +} + +.pagination ul > li:last-child > a, +.pagination ul > li:last-child > span { + -webkit-border-top-right-radius: 4px; + border-top-right-radius: 4px; + -webkit-border-bottom-right-radius: 4px; + border-bottom-right-radius: 4px; + -moz-border-radius-topright: 4px; + -moz-border-radius-bottomright: 4px; +} + +.pagination-centered { + text-align: center; +} + +.pagination-right { + text-align: right; +} + +.pagination-large ul > li > a, +.pagination-large ul > li > span { + padding: 11px 19px; + font-size: 17.5px; +} + +.pagination-large ul > li:first-child > a, +.pagination-large ul > li:first-child > span { + -webkit-border-bottom-left-radius: 6px; + border-bottom-left-radius: 6px; + -webkit-border-top-left-radius: 6px; + border-top-left-radius: 6px; + -moz-border-radius-bottomleft: 6px; + -moz-border-radius-topleft: 6px; +} + +.pagination-large ul > li:last-child > a, +.pagination-large ul > li:last-child > span { + -webkit-border-top-right-radius: 6px; + border-top-right-radius: 6px; + -webkit-border-bottom-right-radius: 6px; + border-bottom-right-radius: 6px; + -moz-border-radius-topright: 6px; + -moz-border-radius-bottomright: 6px; +} + +.pagination-mini ul > li:first-child > a, +.pagination-small ul > li:first-child > a, +.pagination-mini ul > li:first-child > span, +.pagination-small ul > li:first-child > span { + -webkit-border-bottom-left-radius: 3px; + border-bottom-left-radius: 3px; + -webkit-border-top-left-radius: 3px; + border-top-left-radius: 3px; + -moz-border-radius-bottomleft: 3px; + -moz-border-radius-topleft: 3px; +} + +.pagination-mini ul > li:last-child > a, +.pagination-small ul > li:last-child > a, +.pagination-mini ul > li:last-child > span, +.pagination-small ul > li:last-child > span { + -webkit-border-top-right-radius: 3px; + border-top-right-radius: 3px; + -webkit-border-bottom-right-radius: 3px; + border-bottom-right-radius: 3px; + -moz-border-radius-topright: 3px; + -moz-border-radius-bottomright: 3px; +} + +.pagination-small ul > li > a, +.pagination-small ul > li > span { + padding: 2px 10px; + font-size: 11.9px; +} + +.pagination-mini ul > li > a, +.pagination-mini ul > li > span { + padding: 0 6px; + font-size: 10.5px; +} + +.pager { + margin: 20px 0; + text-align: center; + list-style: none; + *zoom: 1; +} + +.pager:before, +.pager:after { + display: table; + line-height: 0; + content: ""; +} + +.pager:after { + clear: both; +} + +.pager li { + display: inline; +} + +.pager li > a, +.pager li > span { + display: inline-block; + padding: 5px 14px; + background-color: #fff; + border: 1px solid #ddd; + -webkit-border-radius: 15px; + -moz-border-radius: 15px; + border-radius: 15px; +} + +.pager li > a:hover { + text-decoration: none; + background-color: #f5f5f5; +} + +.pager .next > a, +.pager .next > span { + float: right; +} + +.pager .previous > a, +.pager .previous > span { + float: left; +} + +.pager .disabled > a, +.pager .disabled > a:hover, +.pager .disabled > span { + color: #999999; + cursor: default; + background-color: #fff; +} + +.modal-backdrop { + position: fixed; + top: 0; + right: 0; + bottom: 0; + left: 0; + z-index: 1040; + background-color: #000000; +} + +.modal-backdrop.fade { + opacity: 0; +} + +.modal-backdrop, +.modal-backdrop.fade.in { + opacity: 0.8; + filter: alpha(opacity=80); +} + +.modal { + position: fixed; + top: 10%; + left: 50%; + z-index: 1050; + width: 560px; + margin-left: -280px; + background-color: #ffffff; + border: 1px solid #999; + border: 1px solid rgba(0, 0, 0, 0.3); + *border: 1px solid #999; + -webkit-border-radius: 6px; + -moz-border-radius: 6px; + border-radius: 6px; + outline: none; + -webkit-box-shadow: 0 3px 7px rgba(0, 0, 0, 0.3); + -moz-box-shadow: 0 3px 7px rgba(0, 0, 0, 0.3); + box-shadow: 0 3px 7px rgba(0, 0, 0, 0.3); + -webkit-background-clip: padding-box; + -moz-background-clip: padding-box; + background-clip: padding-box; +} + +.modal.fade { + top: -25%; + -webkit-transition: opacity 0.3s linear, top 0.3s ease-out; + -moz-transition: opacity 0.3s linear, top 0.3s ease-out; + -o-transition: opacity 0.3s linear, top 0.3s ease-out; + transition: opacity 0.3s linear, top 0.3s ease-out; +} + +.modal.fade.in { + top: 10%; +} + +.modal-header { + padding: 9px 15px; + border-bottom: 1px solid #eee; +} + +.modal-header .close { + margin-top: 2px; +} + +.modal-header h3 { + margin: 0; + line-height: 30px; +} + +.modal-body { + position: relative; + max-height: 400px; + padding: 15px; + overflow-y: auto; +} + +.modal-form { + margin-bottom: 0; +} + +.modal-footer { + padding: 14px 15px 15px; + margin-bottom: 0; + text-align: right; + background-color: #f5f5f5; + border-top: 1px solid #ddd; + -webkit-border-radius: 0 0 6px 6px; + -moz-border-radius: 0 0 6px 6px; + border-radius: 0 0 6px 6px; + *zoom: 1; + -webkit-box-shadow: inset 0 1px 0 #ffffff; + -moz-box-shadow: inset 0 1px 0 #ffffff; + box-shadow: inset 0 1px 0 #ffffff; +} + +.modal-footer:before, +.modal-footer:after { + display: table; + line-height: 0; + content: ""; +} + +.modal-footer:after { + clear: both; +} + +.modal-footer .btn + .btn { + margin-bottom: 0; + margin-left: 5px; +} + +.modal-footer .btn-group .btn + .btn { + margin-left: -1px; +} + +.modal-footer .btn-block + .btn-block { + margin-left: 0; +} + +.tooltip { + position: absolute; + z-index: 1030; + display: block; + padding: 5px; + font-size: 11px; + opacity: 0; + filter: alpha(opacity=0); + visibility: visible; +} + +.tooltip.in { + opacity: 0.8; + filter: alpha(opacity=80); +} + +.tooltip.top { + margin-top: -3px; +} + +.tooltip.right { + margin-left: 3px; +} + +.tooltip.bottom { + margin-top: 3px; +} + +.tooltip.left { + margin-left: -3px; +} + +.tooltip-inner { + max-width: 200px; + padding: 3px 8px; + color: #ffffff; + text-align: center; + text-decoration: none; + background-color: #000000; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; +} + +.tooltip-arrow { + position: absolute; + width: 0; + height: 0; + border-color: transparent; + border-style: solid; +} + +.tooltip.top .tooltip-arrow { + bottom: 0; + left: 50%; + margin-left: -5px; + border-top-color: #000000; + border-width: 5px 5px 0; +} + +.tooltip.right .tooltip-arrow { + top: 50%; + left: 0; + margin-top: -5px; + border-right-color: #000000; + border-width: 5px 5px 5px 0; +} + +.tooltip.left .tooltip-arrow { + top: 50%; + right: 0; + margin-top: -5px; + border-left-color: #000000; + border-width: 5px 0 5px 5px; +} + +.tooltip.bottom .tooltip-arrow { + top: 0; + left: 50%; + margin-left: -5px; + border-bottom-color: #000000; + border-width: 0 5px 5px; +} + +.popover { + position: absolute; + top: 0; + left: 0; + z-index: 1010; + display: none; + width: 236px; + padding: 1px; + text-align: left; + white-space: normal; + background-color: #ffffff; + border: 1px solid #ccc; + border: 1px solid rgba(0, 0, 0, 0.2); + -webkit-border-radius: 6px; + -moz-border-radius: 6px; + border-radius: 6px; + -webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); + -moz-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); + box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); + -webkit-background-clip: padding-box; + -moz-background-clip: padding; + background-clip: padding-box; +} + +.popover.top { + margin-top: -10px; +} + +.popover.right { + margin-left: 10px; +} + +.popover.bottom { + margin-top: 10px; +} + +.popover.left { + margin-left: -10px; +} + +.popover-title { + padding: 8px 14px; + margin: 0; + font-size: 14px; + font-weight: normal; + line-height: 18px; + background-color: #f7f7f7; + border-bottom: 1px solid #ebebeb; + -webkit-border-radius: 5px 5px 0 0; + -moz-border-radius: 5px 5px 0 0; + border-radius: 5px 5px 0 0; +} + +.popover-content { + padding: 9px 14px; +} + +.popover .arrow, +.popover .arrow:after { + position: absolute; + display: block; + width: 0; + height: 0; + border-color: transparent; + border-style: solid; +} + +.popover .arrow { + border-width: 11px; +} + +.popover .arrow:after { + border-width: 10px; + content: ""; +} + +.popover.top .arrow { + bottom: -11px; + left: 50%; + margin-left: -11px; + border-top-color: #999; + border-top-color: rgba(0, 0, 0, 0.25); + border-bottom-width: 0; +} + +.popover.top .arrow:after { + bottom: 1px; + margin-left: -10px; + border-top-color: #ffffff; + border-bottom-width: 0; +} + +.popover.right .arrow { + top: 50%; + left: -11px; + margin-top: -11px; + border-right-color: #999; + border-right-color: rgba(0, 0, 0, 0.25); + border-left-width: 0; +} + +.popover.right .arrow:after { + bottom: -10px; + left: 1px; + border-right-color: #ffffff; + border-left-width: 0; +} + +.popover.bottom .arrow { + top: -11px; + left: 50%; + margin-left: -11px; + border-bottom-color: #999; + border-bottom-color: rgba(0, 0, 0, 0.25); + border-top-width: 0; +} + +.popover.bottom .arrow:after { + top: 1px; + margin-left: -10px; + border-bottom-color: #ffffff; + border-top-width: 0; +} + +.popover.left .arrow { + top: 50%; + right: -11px; + margin-top: -11px; + border-left-color: #999; + border-left-color: rgba(0, 0, 0, 0.25); + border-right-width: 0; +} + +.popover.left .arrow:after { + right: 1px; + bottom: -10px; + border-left-color: #ffffff; + border-right-width: 0; +} + +.thumbnails { + margin-left: -20px; + list-style: none; + *zoom: 1; +} + +.thumbnails:before, +.thumbnails:after { + display: table; + line-height: 0; + content: ""; +} + +.thumbnails:after { + clear: both; +} + +.row-fluid .thumbnails { + margin-left: 0; +} + +.thumbnails > li { + float: left; + margin-bottom: 20px; + margin-left: 20px; +} + +.thumbnail { + display: block; + padding: 4px; + line-height: 20px; + border: 1px solid #ddd; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; + -webkit-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.055); + -moz-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.055); + box-shadow: 0 1px 3px rgba(0, 0, 0, 0.055); + -webkit-transition: all 0.2s ease-in-out; + -moz-transition: all 0.2s ease-in-out; + -o-transition: all 0.2s ease-in-out; + transition: all 0.2s ease-in-out; +} + +a.thumbnail:hover { + border-color: #0088cc; + -webkit-box-shadow: 0 1px 4px rgba(0, 105, 214, 0.25); + -moz-box-shadow: 0 1px 4px rgba(0, 105, 214, 0.25); + box-shadow: 0 1px 4px rgba(0, 105, 214, 0.25); +} + +.thumbnail > img { + display: block; + max-width: 100%; + margin-right: auto; + margin-left: auto; +} + +.thumbnail .caption { + padding: 9px; + color: #555555; +} + +.media, +.media-body { + overflow: hidden; + *overflow: visible; + zoom: 1; +} + +.media, +.media .media { + margin-top: 15px; +} + +.media:first-child { + margin-top: 0; +} + +.media-object { + display: block; +} + +.media-heading { + margin: 0 0 5px; +} + +.media .pull-left { + margin-right: 10px; +} + +.media .pull-right { + margin-left: 10px; +} + +.media-list { + margin-left: 0; + list-style: none; +} + +.label, +.badge { + display: inline-block; + padding: 2px 4px; + font-size: 11.844px; + font-weight: bold; + line-height: 14px; + color: #ffffff; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); + white-space: nowrap; + vertical-align: baseline; + background-color: #999999; +} + +.label { + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + border-radius: 3px; +} + +.badge { + padding-right: 9px; + padding-left: 9px; + -webkit-border-radius: 9px; + -moz-border-radius: 9px; + border-radius: 9px; +} + +.label:empty, +.badge:empty { + display: none; +} + +a.label:hover, +a.badge:hover { + color: #ffffff; + text-decoration: none; + cursor: pointer; +} + +.label-important, +.badge-important { + background-color: #b94a48; +} + +.label-important[href], +.badge-important[href] { + background-color: #953b39; +} + +.label-warning, +.badge-warning { + background-color: #f89406; +} + +.label-warning[href], +.badge-warning[href] { + background-color: #c67605; +} + +.label-success, +.badge-success { + background-color: #468847; +} + +.label-success[href], +.badge-success[href] { + background-color: #356635; +} + +.label-info, +.badge-info { + background-color: #3a87ad; +} + +.label-info[href], +.badge-info[href] { + background-color: #2d6987; +} + +.label-inverse, +.badge-inverse { + background-color: #333333; +} + +.label-inverse[href], +.badge-inverse[href] { + background-color: #1a1a1a; +} + +.btn .label, +.btn .badge { + position: relative; + top: -1px; +} + +.btn-mini .label, +.btn-mini .badge { + top: 0; +} + +@-webkit-keyframes progress-bar-stripes { + from { + background-position: 40px 0; + } + to { + background-position: 0 0; + } +} + +@-moz-keyframes progress-bar-stripes { + from { + background-position: 40px 0; + } + to { + background-position: 0 0; + } +} + +@-ms-keyframes progress-bar-stripes { + from { + background-position: 40px 0; + } + to { + background-position: 0 0; + } +} + +@-o-keyframes progress-bar-stripes { + from { + background-position: 0 0; + } + to { + background-position: 40px 0; + } +} + +@keyframes progress-bar-stripes { + from { + background-position: 40px 0; + } + to { + background-position: 0 0; + } +} + +.progress { + height: 20px; + margin-bottom: 20px; + overflow: hidden; + background-color: #f7f7f7; + background-image: -moz-linear-gradient(top, #f5f5f5, #f9f9f9); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#f5f5f5), to(#f9f9f9)); + background-image: -webkit-linear-gradient(top, #f5f5f5, #f9f9f9); + background-image: -o-linear-gradient(top, #f5f5f5, #f9f9f9); + background-image: linear-gradient(to bottom, #f5f5f5, #f9f9f9); + background-repeat: repeat-x; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#fff9f9f9', GradientType=0); + -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1); + -moz-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1); + box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1); +} + +.progress .bar { + float: left; + width: 0; + height: 100%; + font-size: 12px; + color: #ffffff; + text-align: center; + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); + background-color: #0e90d2; + background-image: -moz-linear-gradient(top, #149bdf, #0480be); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#149bdf), to(#0480be)); + background-image: -webkit-linear-gradient(top, #149bdf, #0480be); + background-image: -o-linear-gradient(top, #149bdf, #0480be); + background-image: linear-gradient(to bottom, #149bdf, #0480be); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff149bdf', endColorstr='#ff0480be', GradientType=0); + -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15); + -moz-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15); + box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15); + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + -webkit-transition: width 0.6s ease; + -moz-transition: width 0.6s ease; + -o-transition: width 0.6s ease; + transition: width 0.6s ease; +} + +.progress .bar + .bar { + -webkit-box-shadow: inset 1px 0 0 rgba(0, 0, 0, 0.15), inset 0 -1px 0 rgba(0, 0, 0, 0.15); + -moz-box-shadow: inset 1px 0 0 rgba(0, 0, 0, 0.15), inset 0 -1px 0 rgba(0, 0, 0, 0.15); + box-shadow: inset 1px 0 0 rgba(0, 0, 0, 0.15), inset 0 -1px 0 rgba(0, 0, 0, 0.15); +} + +.progress-striped .bar { + background-color: #149bdf; + background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + -webkit-background-size: 40px 40px; + -moz-background-size: 40px 40px; + -o-background-size: 40px 40px; + background-size: 40px 40px; +} + +.progress.active .bar { + -webkit-animation: progress-bar-stripes 2s linear infinite; + -moz-animation: progress-bar-stripes 2s linear infinite; + -ms-animation: progress-bar-stripes 2s linear infinite; + -o-animation: progress-bar-stripes 2s linear infinite; + animation: progress-bar-stripes 2s linear infinite; +} + +.progress-danger .bar, +.progress .bar-danger { + background-color: #dd514c; + background-image: -moz-linear-gradient(top, #ee5f5b, #c43c35); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ee5f5b), to(#c43c35)); + background-image: -webkit-linear-gradient(top, #ee5f5b, #c43c35); + background-image: -o-linear-gradient(top, #ee5f5b, #c43c35); + background-image: linear-gradient(to bottom, #ee5f5b, #c43c35); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffee5f5b', endColorstr='#ffc43c35', GradientType=0); +} + +.progress-danger.progress-striped .bar, +.progress-striped .bar-danger { + background-color: #ee5f5b; + background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); +} + +.progress-success .bar, +.progress .bar-success { + background-color: #5eb95e; + background-image: -moz-linear-gradient(top, #62c462, #57a957); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#62c462), to(#57a957)); + background-image: -webkit-linear-gradient(top, #62c462, #57a957); + background-image: -o-linear-gradient(top, #62c462, #57a957); + background-image: linear-gradient(to bottom, #62c462, #57a957); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff62c462', endColorstr='#ff57a957', GradientType=0); +} + +.progress-success.progress-striped .bar, +.progress-striped .bar-success { + background-color: #62c462; + background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); +} + +.progress-info .bar, +.progress .bar-info { + background-color: #4bb1cf; + background-image: -moz-linear-gradient(top, #5bc0de, #339bb9); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#5bc0de), to(#339bb9)); + background-image: -webkit-linear-gradient(top, #5bc0de, #339bb9); + background-image: -o-linear-gradient(top, #5bc0de, #339bb9); + background-image: linear-gradient(to bottom, #5bc0de, #339bb9); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff339bb9', GradientType=0); +} + +.progress-info.progress-striped .bar, +.progress-striped .bar-info { + background-color: #5bc0de; + background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); +} + +.progress-warning .bar, +.progress .bar-warning { + background-color: #faa732; + background-image: -moz-linear-gradient(top, #fbb450, #f89406); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#fbb450), to(#f89406)); + background-image: -webkit-linear-gradient(top, #fbb450, #f89406); + background-image: -o-linear-gradient(top, #fbb450, #f89406); + background-image: linear-gradient(to bottom, #fbb450, #f89406); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffbb450', endColorstr='#fff89406', GradientType=0); +} + +.progress-warning.progress-striped .bar, +.progress-striped .bar-warning { + background-color: #fbb450; + background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); +} + +.accordion { + margin-bottom: 20px; +} + +.accordion-group { + margin-bottom: 2px; + border: 1px solid #e5e5e5; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; +} + +.accordion-heading { + border-bottom: 0; +} + +.accordion-heading .accordion-toggle { + display: block; + padding: 8px 15px; +} + +.accordion-toggle { + cursor: pointer; +} + +.accordion-inner { + padding: 9px 15px; + border-top: 1px solid #e5e5e5; +} + +.carousel { + position: relative; + margin-bottom: 20px; + line-height: 1; +} + +.carousel-inner { + position: relative; + width: 100%; + overflow: hidden; +} + +.carousel-inner > .item { + position: relative; + display: none; + -webkit-transition: 0.6s ease-in-out left; + -moz-transition: 0.6s ease-in-out left; + -o-transition: 0.6s ease-in-out left; + transition: 0.6s ease-in-out left; +} + +.carousel-inner > .item > img { + display: block; + line-height: 1; +} + +.carousel-inner > .active, +.carousel-inner > .next, +.carousel-inner > .prev { + display: block; +} + +.carousel-inner > .active { + left: 0; +} + +.carousel-inner > .next, +.carousel-inner > .prev { + position: absolute; + top: 0; + width: 100%; +} + +.carousel-inner > .next { + left: 100%; +} + +.carousel-inner > .prev { + left: -100%; +} + +.carousel-inner > .next.left, +.carousel-inner > .prev.right { + left: 0; +} + +.carousel-inner > .active.left { + left: -100%; +} + +.carousel-inner > .active.right { + left: 100%; +} + +.carousel-control { + position: absolute; + top: 40%; + left: 15px; + width: 40px; + height: 40px; + margin-top: -20px; + font-size: 60px; + font-weight: 100; + line-height: 30px; + color: #ffffff; + text-align: center; + background: #222222; + border: 3px solid #ffffff; + -webkit-border-radius: 23px; + -moz-border-radius: 23px; + border-radius: 23px; + opacity: 0.5; + filter: alpha(opacity=50); +} + +.carousel-control.right { + right: 15px; + left: auto; +} + +.carousel-control:hover { + color: #ffffff; + text-decoration: none; + opacity: 0.9; + filter: alpha(opacity=90); +} + +.carousel-caption { + position: absolute; + right: 0; + bottom: 0; + left: 0; + padding: 15px; + background: #333333; + background: rgba(0, 0, 0, 0.75); +} + +.carousel-caption h4, +.carousel-caption p { + line-height: 20px; + color: #ffffff; +} + +.carousel-caption h4 { + margin: 0 0 5px; +} + +.carousel-caption p { + margin-bottom: 0; +} + +.hero-unit { + padding: 60px; + margin-bottom: 30px; + font-size: 18px; + font-weight: 200; + line-height: 30px; + color: inherit; + background-color: #eeeeee; + -webkit-border-radius: 6px; + -moz-border-radius: 6px; + border-radius: 6px; +} + +.hero-unit h1 { + margin-bottom: 0; + font-size: 60px; + line-height: 1; + letter-spacing: -1px; + color: inherit; +} + +.hero-unit li { + line-height: 30px; +} + +.pull-right { + float: right; +} + +.pull-left { + float: left; +} + +.hide { + display: none; +} + +.show { + display: block; +} + +.invisible { + visibility: hidden; +} + +.affix { + position: fixed; +} diff --git a/build.docset/Contents/Resources/Documents/_static/bootstrap/css/bootstrap.min.css b/build.docset/Contents/Resources/Documents/_static/bootstrap/css/bootstrap.min.css new file mode 100644 index 0000000..140f731 --- /dev/null +++ b/build.docset/Contents/Resources/Documents/_static/bootstrap/css/bootstrap.min.css @@ -0,0 +1,9 @@ +/*! + * Bootstrap v2.2.2 + * + * Copyright 2012 Twitter, Inc + * Licensed under the Apache License v2.0 + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Designed and built with all the love in the world @twitter by @mdo and @fat. + */article,aside,details,figcaption,figure,footer,header,hgroup,nav,section{display:block}audio,canvas,video{display:inline-block;*display:inline;*zoom:1}audio:not([controls]){display:none}html{font-size:100%;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%}a:focus{outline:thin dotted #333;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}a:hover,a:active{outline:0}sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}sup{top:-0.5em}sub{bottom:-0.25em}img{width:auto\9;height:auto;max-width:100%;vertical-align:middle;border:0;-ms-interpolation-mode:bicubic}#map_canvas img,.google-maps img{max-width:none}button,input,select,textarea{margin:0;font-size:100%;vertical-align:middle}button,input{*overflow:visible;line-height:normal}button::-moz-focus-inner,input::-moz-focus-inner{padding:0;border:0}button,html input[type="button"],input[type="reset"],input[type="submit"]{cursor:pointer;-webkit-appearance:button}label,select,button,input[type="button"],input[type="reset"],input[type="submit"],input[type="radio"],input[type="checkbox"]{cursor:pointer}input[type="search"]{-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;-webkit-appearance:textfield}input[type="search"]::-webkit-search-decoration,input[type="search"]::-webkit-search-cancel-button{-webkit-appearance:none}textarea{overflow:auto;vertical-align:top}@media print{*{color:#000!important;text-shadow:none!important;background:transparent!important;box-shadow:none!important}a,a:visited{text-decoration:underline}a[href]:after{content:" (" attr(href) ")"}abbr[title]:after{content:" (" attr(title) ")"}.ir a:after,a[href^="javascript:"]:after,a[href^="#"]:after{content:""}pre,blockquote{border:1px solid #999;page-break-inside:avoid}thead{display:table-header-group}tr,img{page-break-inside:avoid}img{max-width:100%!important}@page{margin:.5cm}p,h2,h3{orphans:3;widows:3}h2,h3{page-break-after:avoid}}.clearfix{*zoom:1}.clearfix:before,.clearfix:after{display:table;line-height:0;content:""}.clearfix:after{clear:both}.hide-text{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.input-block-level{display:block;width:100%;min-height:30px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}body{margin:0;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;line-height:20px;color:#333;background-color:#fff}a{color:#08c;text-decoration:none}a:hover{color:#005580;text-decoration:underline}.img-rounded{-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px}.img-polaroid{padding:4px;background-color:#fff;border:1px solid #ccc;border:1px solid rgba(0,0,0,0.2);-webkit-box-shadow:0 1px 3px rgba(0,0,0,0.1);-moz-box-shadow:0 1px 3px rgba(0,0,0,0.1);box-shadow:0 1px 3px rgba(0,0,0,0.1)}.img-circle{-webkit-border-radius:500px;-moz-border-radius:500px;border-radius:500px}.row{margin-left:-20px;*zoom:1}.row:before,.row:after{display:table;line-height:0;content:""}.row:after{clear:both}[class*="span"]{float:left;min-height:1px;margin-left:20px}.container,.navbar-static-top .container,.navbar-fixed-top .container,.navbar-fixed-bottom .container{width:940px}.span12{width:940px}.span11{width:860px}.span10{width:780px}.span9{width:700px}.span8{width:620px}.span7{width:540px}.span6{width:460px}.span5{width:380px}.span4{width:300px}.span3{width:220px}.span2{width:140px}.span1{width:60px}.offset12{margin-left:980px}.offset11{margin-left:900px}.offset10{margin-left:820px}.offset9{margin-left:740px}.offset8{margin-left:660px}.offset7{margin-left:580px}.offset6{margin-left:500px}.offset5{margin-left:420px}.offset4{margin-left:340px}.offset3{margin-left:260px}.offset2{margin-left:180px}.offset1{margin-left:100px}.row-fluid{width:100%;*zoom:1}.row-fluid:before,.row-fluid:after{display:table;line-height:0;content:""}.row-fluid:after{clear:both}.row-fluid [class*="span"]{display:block;float:left;width:100%;min-height:30px;margin-left:2.127659574468085%;*margin-left:2.074468085106383%;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.row-fluid [class*="span"]:first-child{margin-left:0}.row-fluid .controls-row [class*="span"]+[class*="span"]{margin-left:2.127659574468085%}.row-fluid .span12{width:100%;*width:99.94680851063829%}.row-fluid .span11{width:91.48936170212765%;*width:91.43617021276594%}.row-fluid .span10{width:82.97872340425532%;*width:82.92553191489361%}.row-fluid .span9{width:74.46808510638297%;*width:74.41489361702126%}.row-fluid .span8{width:65.95744680851064%;*width:65.90425531914893%}.row-fluid .span7{width:57.44680851063829%;*width:57.39361702127659%}.row-fluid .span6{width:48.93617021276595%;*width:48.88297872340425%}.row-fluid .span5{width:40.42553191489362%;*width:40.37234042553192%}.row-fluid .span4{width:31.914893617021278%;*width:31.861702127659576%}.row-fluid .span3{width:23.404255319148934%;*width:23.351063829787233%}.row-fluid .span2{width:14.893617021276595%;*width:14.840425531914894%}.row-fluid .span1{width:6.382978723404255%;*width:6.329787234042553%}.row-fluid .offset12{margin-left:104.25531914893617%;*margin-left:104.14893617021275%}.row-fluid .offset12:first-child{margin-left:102.12765957446808%;*margin-left:102.02127659574467%}.row-fluid .offset11{margin-left:95.74468085106382%;*margin-left:95.6382978723404%}.row-fluid .offset11:first-child{margin-left:93.61702127659574%;*margin-left:93.51063829787232%}.row-fluid .offset10{margin-left:87.23404255319149%;*margin-left:87.12765957446807%}.row-fluid .offset10:first-child{margin-left:85.1063829787234%;*margin-left:84.99999999999999%}.row-fluid .offset9{margin-left:78.72340425531914%;*margin-left:78.61702127659572%}.row-fluid .offset9:first-child{margin-left:76.59574468085106%;*margin-left:76.48936170212764%}.row-fluid .offset8{margin-left:70.2127659574468%;*margin-left:70.10638297872339%}.row-fluid .offset8:first-child{margin-left:68.08510638297872%;*margin-left:67.9787234042553%}.row-fluid .offset7{margin-left:61.70212765957446%;*margin-left:61.59574468085106%}.row-fluid .offset7:first-child{margin-left:59.574468085106375%;*margin-left:59.46808510638297%}.row-fluid .offset6{margin-left:53.191489361702125%;*margin-left:53.085106382978715%}.row-fluid .offset6:first-child{margin-left:51.063829787234035%;*margin-left:50.95744680851063%}.row-fluid .offset5{margin-left:44.68085106382979%;*margin-left:44.57446808510638%}.row-fluid .offset5:first-child{margin-left:42.5531914893617%;*margin-left:42.4468085106383%}.row-fluid .offset4{margin-left:36.170212765957444%;*margin-left:36.06382978723405%}.row-fluid .offset4:first-child{margin-left:34.04255319148936%;*margin-left:33.93617021276596%}.row-fluid .offset3{margin-left:27.659574468085104%;*margin-left:27.5531914893617%}.row-fluid .offset3:first-child{margin-left:25.53191489361702%;*margin-left:25.425531914893618%}.row-fluid .offset2{margin-left:19.148936170212764%;*margin-left:19.04255319148936%}.row-fluid .offset2:first-child{margin-left:17.02127659574468%;*margin-left:16.914893617021278%}.row-fluid .offset1{margin-left:10.638297872340425%;*margin-left:10.53191489361702%}.row-fluid .offset1:first-child{margin-left:8.51063829787234%;*margin-left:8.404255319148938%}[class*="span"].hide,.row-fluid [class*="span"].hide{display:none}[class*="span"].pull-right,.row-fluid [class*="span"].pull-right{float:right}.container{margin-right:auto;margin-left:auto;*zoom:1}.container:before,.container:after{display:table;line-height:0;content:""}.container:after{clear:both}.container-fluid{padding-right:20px;padding-left:20px;*zoom:1}.container-fluid:before,.container-fluid:after{display:table;line-height:0;content:""}.container-fluid:after{clear:both}p{margin:0 0 10px}.lead{margin-bottom:20px;font-size:21px;font-weight:200;line-height:30px}small{font-size:85%}strong{font-weight:bold}em{font-style:italic}cite{font-style:normal}.muted{color:#999}a.muted:hover{color:#808080}.text-warning{color:#c09853}a.text-warning:hover{color:#a47e3c}.text-error{color:#b94a48}a.text-error:hover{color:#953b39}.text-info{color:#3a87ad}a.text-info:hover{color:#2d6987}.text-success{color:#468847}a.text-success:hover{color:#356635}h1,h2,h3,h4,h5,h6{margin:10px 0;font-family:inherit;font-weight:bold;line-height:20px;color:inherit;text-rendering:optimizelegibility}h1 small,h2 small,h3 small,h4 small,h5 small,h6 small{font-weight:normal;line-height:1;color:#999}h1,h2,h3{line-height:40px}h1{font-size:38.5px}h2{font-size:31.5px}h3{font-size:24.5px}h4{font-size:17.5px}h5{font-size:14px}h6{font-size:11.9px}h1 small{font-size:24.5px}h2 small{font-size:17.5px}h3 small{font-size:14px}h4 small{font-size:14px}.page-header{padding-bottom:9px;margin:20px 0 30px;border-bottom:1px solid #eee}ul,ol{padding:0;margin:0 0 10px 25px}ul ul,ul ol,ol ol,ol ul{margin-bottom:0}li{line-height:20px}ul.unstyled,ol.unstyled{margin-left:0;list-style:none}ul.inline,ol.inline{margin-left:0;list-style:none}ul.inline>li,ol.inline>li{display:inline-block;padding-right:5px;padding-left:5px}dl{margin-bottom:20px}dt,dd{line-height:20px}dt{font-weight:bold}dd{margin-left:10px}.dl-horizontal{*zoom:1}.dl-horizontal:before,.dl-horizontal:after{display:table;line-height:0;content:""}.dl-horizontal:after{clear:both}.dl-horizontal dt{float:left;width:160px;overflow:hidden;clear:left;text-align:right;text-overflow:ellipsis;white-space:nowrap}.dl-horizontal dd{margin-left:180px}hr{margin:20px 0;border:0;border-top:1px solid #eee;border-bottom:1px solid #fff}abbr[title],abbr[data-original-title]{cursor:help;border-bottom:1px dotted #999}abbr.initialism{font-size:90%;text-transform:uppercase}blockquote{padding:0 0 0 15px;margin:0 0 20px;border-left:5px solid #eee}blockquote p{margin-bottom:0;font-size:16px;font-weight:300;line-height:25px}blockquote small{display:block;line-height:20px;color:#999}blockquote small:before{content:'\2014 \00A0'}blockquote.pull-right{float:right;padding-right:15px;padding-left:0;border-right:5px solid #eee;border-left:0}blockquote.pull-right p,blockquote.pull-right small{text-align:right}blockquote.pull-right small:before{content:''}blockquote.pull-right small:after{content:'\00A0 \2014'}q:before,q:after,blockquote:before,blockquote:after{content:""}address{display:block;margin-bottom:20px;font-style:normal;line-height:20px}code,pre{padding:0 3px 2px;font-family:Monaco,Menlo,Consolas,"Courier New",monospace;font-size:12px;color:#333;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px}code{padding:2px 4px;color:#d14;white-space:nowrap;background-color:#f7f7f9;border:1px solid #e1e1e8}pre{display:block;padding:9.5px;margin:0 0 10px;font-size:13px;line-height:20px;word-break:break-all;word-wrap:break-word;white-space:pre;white-space:pre-wrap;background-color:#f5f5f5;border:1px solid #ccc;border:1px solid rgba(0,0,0,0.15);-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}pre.prettyprint{margin-bottom:20px}pre code{padding:0;color:inherit;white-space:pre;white-space:pre-wrap;background-color:transparent;border:0}.pre-scrollable{max-height:340px;overflow-y:scroll}form{margin:0 0 20px}fieldset{padding:0;margin:0;border:0}legend{display:block;width:100%;padding:0;margin-bottom:20px;font-size:21px;line-height:40px;color:#333;border:0;border-bottom:1px solid #e5e5e5}legend small{font-size:15px;color:#999}label,input,button,select,textarea{font-size:14px;font-weight:normal;line-height:20px}input,button,select,textarea{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif}label{display:block;margin-bottom:5px}select,textarea,input[type="text"],input[type="password"],input[type="datetime"],input[type="datetime-local"],input[type="date"],input[type="month"],input[type="time"],input[type="week"],input[type="number"],input[type="email"],input[type="url"],input[type="search"],input[type="tel"],input[type="color"],.uneditable-input{display:inline-block;height:20px;padding:4px 6px;margin-bottom:10px;font-size:14px;line-height:20px;color:#555;vertical-align:middle;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}input,textarea,.uneditable-input{width:206px}textarea{height:auto}textarea,input[type="text"],input[type="password"],input[type="datetime"],input[type="datetime-local"],input[type="date"],input[type="month"],input[type="time"],input[type="week"],input[type="number"],input[type="email"],input[type="url"],input[type="search"],input[type="tel"],input[type="color"],.uneditable-input{background-color:#fff;border:1px solid #ccc;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);-webkit-transition:border linear .2s,box-shadow linear .2s;-moz-transition:border linear .2s,box-shadow linear .2s;-o-transition:border linear .2s,box-shadow linear .2s;transition:border linear .2s,box-shadow linear .2s}textarea:focus,input[type="text"]:focus,input[type="password"]:focus,input[type="datetime"]:focus,input[type="datetime-local"]:focus,input[type="date"]:focus,input[type="month"]:focus,input[type="time"]:focus,input[type="week"]:focus,input[type="number"]:focus,input[type="email"]:focus,input[type="url"]:focus,input[type="search"]:focus,input[type="tel"]:focus,input[type="color"]:focus,.uneditable-input:focus{border-color:rgba(82,168,236,0.8);outline:0;outline:thin dotted \9;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 8px rgba(82,168,236,0.6);-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 8px rgba(82,168,236,0.6);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 8px rgba(82,168,236,0.6)}input[type="radio"],input[type="checkbox"]{margin:4px 0 0;margin-top:1px \9;*margin-top:0;line-height:normal}input[type="file"],input[type="image"],input[type="submit"],input[type="reset"],input[type="button"],input[type="radio"],input[type="checkbox"]{width:auto}select,input[type="file"]{height:30px;*margin-top:4px;line-height:30px}select{width:220px;background-color:#fff;border:1px solid #ccc}select[multiple],select[size]{height:auto}select:focus,input[type="file"]:focus,input[type="radio"]:focus,input[type="checkbox"]:focus{outline:thin dotted #333;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.uneditable-input,.uneditable-textarea{color:#999;cursor:not-allowed;background-color:#fcfcfc;border-color:#ccc;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,0.025);-moz-box-shadow:inset 0 1px 2px rgba(0,0,0,0.025);box-shadow:inset 0 1px 2px rgba(0,0,0,0.025)}.uneditable-input{overflow:hidden;white-space:nowrap}.uneditable-textarea{width:auto;height:auto}input:-moz-placeholder,textarea:-moz-placeholder{color:#999}input:-ms-input-placeholder,textarea:-ms-input-placeholder{color:#999}input::-webkit-input-placeholder,textarea::-webkit-input-placeholder{color:#999}.radio,.checkbox{min-height:20px;padding-left:20px}.radio input[type="radio"],.checkbox input[type="checkbox"]{float:left;margin-left:-20px}.controls>.radio:first-child,.controls>.checkbox:first-child{padding-top:5px}.radio.inline,.checkbox.inline{display:inline-block;padding-top:5px;margin-bottom:0;vertical-align:middle}.radio.inline+.radio.inline,.checkbox.inline+.checkbox.inline{margin-left:10px}.input-mini{width:60px}.input-small{width:90px}.input-medium{width:150px}.input-large{width:210px}.input-xlarge{width:270px}.input-xxlarge{width:530px}input[class*="span"],select[class*="span"],textarea[class*="span"],.uneditable-input[class*="span"],.row-fluid input[class*="span"],.row-fluid select[class*="span"],.row-fluid textarea[class*="span"],.row-fluid .uneditable-input[class*="span"]{float:none;margin-left:0}.input-append input[class*="span"],.input-append .uneditable-input[class*="span"],.input-prepend input[class*="span"],.input-prepend .uneditable-input[class*="span"],.row-fluid input[class*="span"],.row-fluid select[class*="span"],.row-fluid textarea[class*="span"],.row-fluid .uneditable-input[class*="span"],.row-fluid .input-prepend [class*="span"],.row-fluid .input-append [class*="span"]{display:inline-block}input,textarea,.uneditable-input{margin-left:0}.controls-row [class*="span"]+[class*="span"]{margin-left:20px}input.span12,textarea.span12,.uneditable-input.span12{width:926px}input.span11,textarea.span11,.uneditable-input.span11{width:846px}input.span10,textarea.span10,.uneditable-input.span10{width:766px}input.span9,textarea.span9,.uneditable-input.span9{width:686px}input.span8,textarea.span8,.uneditable-input.span8{width:606px}input.span7,textarea.span7,.uneditable-input.span7{width:526px}input.span6,textarea.span6,.uneditable-input.span6{width:446px}input.span5,textarea.span5,.uneditable-input.span5{width:366px}input.span4,textarea.span4,.uneditable-input.span4{width:286px}input.span3,textarea.span3,.uneditable-input.span3{width:206px}input.span2,textarea.span2,.uneditable-input.span2{width:126px}input.span1,textarea.span1,.uneditable-input.span1{width:46px}.controls-row{*zoom:1}.controls-row:before,.controls-row:after{display:table;line-height:0;content:""}.controls-row:after{clear:both}.controls-row [class*="span"],.row-fluid .controls-row [class*="span"]{float:left}.controls-row .checkbox[class*="span"],.controls-row .radio[class*="span"]{padding-top:5px}input[disabled],select[disabled],textarea[disabled],input[readonly],select[readonly],textarea[readonly]{cursor:not-allowed;background-color:#eee}input[type="radio"][disabled],input[type="checkbox"][disabled],input[type="radio"][readonly],input[type="checkbox"][readonly]{background-color:transparent}.control-group.warning .control-label,.control-group.warning .help-block,.control-group.warning .help-inline{color:#c09853}.control-group.warning .checkbox,.control-group.warning .radio,.control-group.warning input,.control-group.warning select,.control-group.warning textarea{color:#c09853}.control-group.warning input,.control-group.warning select,.control-group.warning textarea{border-color:#c09853;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.control-group.warning input:focus,.control-group.warning select:focus,.control-group.warning textarea:focus{border-color:#a47e3c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #dbc59e;-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #dbc59e;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #dbc59e}.control-group.warning .input-prepend .add-on,.control-group.warning .input-append .add-on{color:#c09853;background-color:#fcf8e3;border-color:#c09853}.control-group.error .control-label,.control-group.error .help-block,.control-group.error .help-inline{color:#b94a48}.control-group.error .checkbox,.control-group.error .radio,.control-group.error input,.control-group.error select,.control-group.error textarea{color:#b94a48}.control-group.error input,.control-group.error select,.control-group.error textarea{border-color:#b94a48;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.control-group.error input:focus,.control-group.error select:focus,.control-group.error textarea:focus{border-color:#953b39;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #d59392;-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #d59392;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #d59392}.control-group.error .input-prepend .add-on,.control-group.error .input-append .add-on{color:#b94a48;background-color:#f2dede;border-color:#b94a48}.control-group.success .control-label,.control-group.success .help-block,.control-group.success .help-inline{color:#468847}.control-group.success .checkbox,.control-group.success .radio,.control-group.success input,.control-group.success select,.control-group.success textarea{color:#468847}.control-group.success input,.control-group.success select,.control-group.success textarea{border-color:#468847;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.control-group.success input:focus,.control-group.success select:focus,.control-group.success textarea:focus{border-color:#356635;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #7aba7b;-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #7aba7b;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #7aba7b}.control-group.success .input-prepend .add-on,.control-group.success .input-append .add-on{color:#468847;background-color:#dff0d8;border-color:#468847}.control-group.info .control-label,.control-group.info .help-block,.control-group.info .help-inline{color:#3a87ad}.control-group.info .checkbox,.control-group.info .radio,.control-group.info input,.control-group.info select,.control-group.info textarea{color:#3a87ad}.control-group.info input,.control-group.info select,.control-group.info textarea{border-color:#3a87ad;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.control-group.info input:focus,.control-group.info select:focus,.control-group.info textarea:focus{border-color:#2d6987;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #7ab5d3;-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #7ab5d3;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #7ab5d3}.control-group.info .input-prepend .add-on,.control-group.info .input-append .add-on{color:#3a87ad;background-color:#d9edf7;border-color:#3a87ad}input:focus:invalid,textarea:focus:invalid,select:focus:invalid{color:#b94a48;border-color:#ee5f5b}input:focus:invalid:focus,textarea:focus:invalid:focus,select:focus:invalid:focus{border-color:#e9322d;-webkit-box-shadow:0 0 6px #f8b9b7;-moz-box-shadow:0 0 6px #f8b9b7;box-shadow:0 0 6px #f8b9b7}.form-actions{padding:19px 20px 20px;margin-top:20px;margin-bottom:20px;background-color:#f5f5f5;border-top:1px solid #e5e5e5;*zoom:1}.form-actions:before,.form-actions:after{display:table;line-height:0;content:""}.form-actions:after{clear:both}.help-block,.help-inline{color:#595959}.help-block{display:block;margin-bottom:10px}.help-inline{display:inline-block;*display:inline;padding-left:5px;vertical-align:middle;*zoom:1}.input-append,.input-prepend{margin-bottom:5px;font-size:0;white-space:nowrap}.input-append input,.input-prepend input,.input-append select,.input-prepend select,.input-append .uneditable-input,.input-prepend .uneditable-input,.input-append .dropdown-menu,.input-prepend .dropdown-menu{font-size:14px}.input-append input,.input-prepend input,.input-append select,.input-prepend select,.input-append .uneditable-input,.input-prepend .uneditable-input{position:relative;margin-bottom:0;*margin-left:0;vertical-align:top;-webkit-border-radius:0 4px 4px 0;-moz-border-radius:0 4px 4px 0;border-radius:0 4px 4px 0}.input-append input:focus,.input-prepend input:focus,.input-append select:focus,.input-prepend select:focus,.input-append .uneditable-input:focus,.input-prepend .uneditable-input:focus{z-index:2}.input-append .add-on,.input-prepend .add-on{display:inline-block;width:auto;height:20px;min-width:16px;padding:4px 5px;font-size:14px;font-weight:normal;line-height:20px;text-align:center;text-shadow:0 1px 0 #fff;background-color:#eee;border:1px solid #ccc}.input-append .add-on,.input-prepend .add-on,.input-append .btn,.input-prepend .btn,.input-append .btn-group>.dropdown-toggle,.input-prepend .btn-group>.dropdown-toggle{vertical-align:top;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0}.input-append .active,.input-prepend .active{background-color:#a9dba9;border-color:#46a546}.input-prepend .add-on,.input-prepend .btn{margin-right:-1px}.input-prepend .add-on:first-child,.input-prepend .btn:first-child{-webkit-border-radius:4px 0 0 4px;-moz-border-radius:4px 0 0 4px;border-radius:4px 0 0 4px}.input-append input,.input-append select,.input-append .uneditable-input{-webkit-border-radius:4px 0 0 4px;-moz-border-radius:4px 0 0 4px;border-radius:4px 0 0 4px}.input-append input+.btn-group .btn:last-child,.input-append select+.btn-group .btn:last-child,.input-append .uneditable-input+.btn-group .btn:last-child{-webkit-border-radius:0 4px 4px 0;-moz-border-radius:0 4px 4px 0;border-radius:0 4px 4px 0}.input-append .add-on,.input-append .btn,.input-append .btn-group{margin-left:-1px}.input-append .add-on:last-child,.input-append .btn:last-child,.input-append .btn-group:last-child>.dropdown-toggle{-webkit-border-radius:0 4px 4px 0;-moz-border-radius:0 4px 4px 0;border-radius:0 4px 4px 0}.input-prepend.input-append input,.input-prepend.input-append select,.input-prepend.input-append .uneditable-input{-webkit-border-radius:0;-moz-border-radius:0;border-radius:0}.input-prepend.input-append input+.btn-group .btn,.input-prepend.input-append select+.btn-group .btn,.input-prepend.input-append .uneditable-input+.btn-group .btn{-webkit-border-radius:0 4px 4px 0;-moz-border-radius:0 4px 4px 0;border-radius:0 4px 4px 0}.input-prepend.input-append .add-on:first-child,.input-prepend.input-append .btn:first-child{margin-right:-1px;-webkit-border-radius:4px 0 0 4px;-moz-border-radius:4px 0 0 4px;border-radius:4px 0 0 4px}.input-prepend.input-append .add-on:last-child,.input-prepend.input-append .btn:last-child{margin-left:-1px;-webkit-border-radius:0 4px 4px 0;-moz-border-radius:0 4px 4px 0;border-radius:0 4px 4px 0}.input-prepend.input-append .btn-group:first-child{margin-left:0}input.search-query{padding-right:14px;padding-right:4px \9;padding-left:14px;padding-left:4px \9;margin-bottom:0;-webkit-border-radius:15px;-moz-border-radius:15px;border-radius:15px}.form-search .input-append .search-query,.form-search .input-prepend .search-query{-webkit-border-radius:0;-moz-border-radius:0;border-radius:0}.form-search .input-append .search-query{-webkit-border-radius:14px 0 0 14px;-moz-border-radius:14px 0 0 14px;border-radius:14px 0 0 14px}.form-search .input-append .btn{-webkit-border-radius:0 14px 14px 0;-moz-border-radius:0 14px 14px 0;border-radius:0 14px 14px 0}.form-search .input-prepend .search-query{-webkit-border-radius:0 14px 14px 0;-moz-border-radius:0 14px 14px 0;border-radius:0 14px 14px 0}.form-search .input-prepend .btn{-webkit-border-radius:14px 0 0 14px;-moz-border-radius:14px 0 0 14px;border-radius:14px 0 0 14px}.form-search input,.form-inline input,.form-horizontal input,.form-search textarea,.form-inline textarea,.form-horizontal textarea,.form-search select,.form-inline select,.form-horizontal select,.form-search .help-inline,.form-inline .help-inline,.form-horizontal .help-inline,.form-search .uneditable-input,.form-inline .uneditable-input,.form-horizontal .uneditable-input,.form-search .input-prepend,.form-inline .input-prepend,.form-horizontal .input-prepend,.form-search .input-append,.form-inline .input-append,.form-horizontal .input-append{display:inline-block;*display:inline;margin-bottom:0;vertical-align:middle;*zoom:1}.form-search .hide,.form-inline .hide,.form-horizontal .hide{display:none}.form-search label,.form-inline label,.form-search .btn-group,.form-inline .btn-group{display:inline-block}.form-search .input-append,.form-inline .input-append,.form-search .input-prepend,.form-inline .input-prepend{margin-bottom:0}.form-search .radio,.form-search .checkbox,.form-inline .radio,.form-inline .checkbox{padding-left:0;margin-bottom:0;vertical-align:middle}.form-search .radio input[type="radio"],.form-search .checkbox input[type="checkbox"],.form-inline .radio input[type="radio"],.form-inline .checkbox input[type="checkbox"]{float:left;margin-right:3px;margin-left:0}.control-group{margin-bottom:10px}legend+.control-group{margin-top:20px;-webkit-margin-top-collapse:separate}.form-horizontal .control-group{margin-bottom:20px;*zoom:1}.form-horizontal .control-group:before,.form-horizontal .control-group:after{display:table;line-height:0;content:""}.form-horizontal .control-group:after{clear:both}.form-horizontal .control-label{float:left;width:160px;padding-top:5px;text-align:right}.form-horizontal .controls{*display:inline-block;*padding-left:20px;margin-left:180px;*margin-left:0}.form-horizontal .controls:first-child{*padding-left:180px}.form-horizontal .help-block{margin-bottom:0}.form-horizontal input+.help-block,.form-horizontal select+.help-block,.form-horizontal textarea+.help-block,.form-horizontal .uneditable-input+.help-block,.form-horizontal .input-prepend+.help-block,.form-horizontal .input-append+.help-block{margin-top:10px}.form-horizontal .form-actions{padding-left:180px}table{max-width:100%;background-color:transparent;border-collapse:collapse;border-spacing:0}.table{width:100%;margin-bottom:20px}.table th,.table td{padding:8px;line-height:20px;text-align:left;vertical-align:top;border-top:1px solid #ddd}.table th{font-weight:bold}.table thead th{vertical-align:bottom}.table caption+thead tr:first-child th,.table caption+thead tr:first-child td,.table colgroup+thead tr:first-child th,.table colgroup+thead tr:first-child td,.table thead:first-child tr:first-child th,.table thead:first-child tr:first-child td{border-top:0}.table tbody+tbody{border-top:2px solid #ddd}.table .table{background-color:#fff}.table-condensed th,.table-condensed td{padding:4px 5px}.table-bordered{border:1px solid #ddd;border-collapse:separate;*border-collapse:collapse;border-left:0;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}.table-bordered th,.table-bordered td{border-left:1px solid #ddd}.table-bordered caption+thead tr:first-child th,.table-bordered caption+tbody tr:first-child th,.table-bordered caption+tbody tr:first-child td,.table-bordered colgroup+thead tr:first-child th,.table-bordered colgroup+tbody tr:first-child th,.table-bordered colgroup+tbody tr:first-child td,.table-bordered thead:first-child tr:first-child th,.table-bordered tbody:first-child tr:first-child th,.table-bordered tbody:first-child tr:first-child td{border-top:0}.table-bordered thead:first-child tr:first-child>th:first-child,.table-bordered tbody:first-child tr:first-child>td:first-child{-webkit-border-top-left-radius:4px;border-top-left-radius:4px;-moz-border-radius-topleft:4px}.table-bordered thead:first-child tr:first-child>th:last-child,.table-bordered tbody:first-child tr:first-child>td:last-child{-webkit-border-top-right-radius:4px;border-top-right-radius:4px;-moz-border-radius-topright:4px}.table-bordered thead:last-child tr:last-child>th:first-child,.table-bordered tbody:last-child tr:last-child>td:first-child,.table-bordered tfoot:last-child tr:last-child>td:first-child{-webkit-border-bottom-left-radius:4px;border-bottom-left-radius:4px;-moz-border-radius-bottomleft:4px}.table-bordered thead:last-child tr:last-child>th:last-child,.table-bordered tbody:last-child tr:last-child>td:last-child,.table-bordered tfoot:last-child tr:last-child>td:last-child{-webkit-border-bottom-right-radius:4px;border-bottom-right-radius:4px;-moz-border-radius-bottomright:4px}.table-bordered tfoot+tbody:last-child tr:last-child td:first-child{-webkit-border-bottom-left-radius:0;border-bottom-left-radius:0;-moz-border-radius-bottomleft:0}.table-bordered tfoot+tbody:last-child tr:last-child td:last-child{-webkit-border-bottom-right-radius:0;border-bottom-right-radius:0;-moz-border-radius-bottomright:0}.table-bordered caption+thead tr:first-child th:first-child,.table-bordered caption+tbody tr:first-child td:first-child,.table-bordered colgroup+thead tr:first-child th:first-child,.table-bordered colgroup+tbody tr:first-child td:first-child{-webkit-border-top-left-radius:4px;border-top-left-radius:4px;-moz-border-radius-topleft:4px}.table-bordered caption+thead tr:first-child th:last-child,.table-bordered caption+tbody tr:first-child td:last-child,.table-bordered colgroup+thead tr:first-child th:last-child,.table-bordered colgroup+tbody tr:first-child td:last-child{-webkit-border-top-right-radius:4px;border-top-right-radius:4px;-moz-border-radius-topright:4px}.table-striped tbody>tr:nth-child(odd)>td,.table-striped tbody>tr:nth-child(odd)>th{background-color:#f9f9f9}.table-hover tbody tr:hover td,.table-hover tbody tr:hover th{background-color:#f5f5f5}table td[class*="span"],table th[class*="span"],.row-fluid table td[class*="span"],.row-fluid table th[class*="span"]{display:table-cell;float:none;margin-left:0}.table td.span1,.table th.span1{float:none;width:44px;margin-left:0}.table td.span2,.table th.span2{float:none;width:124px;margin-left:0}.table td.span3,.table th.span3{float:none;width:204px;margin-left:0}.table td.span4,.table th.span4{float:none;width:284px;margin-left:0}.table td.span5,.table th.span5{float:none;width:364px;margin-left:0}.table td.span6,.table th.span6{float:none;width:444px;margin-left:0}.table td.span7,.table th.span7{float:none;width:524px;margin-left:0}.table td.span8,.table th.span8{float:none;width:604px;margin-left:0}.table td.span9,.table th.span9{float:none;width:684px;margin-left:0}.table td.span10,.table th.span10{float:none;width:764px;margin-left:0}.table td.span11,.table th.span11{float:none;width:844px;margin-left:0}.table td.span12,.table th.span12{float:none;width:924px;margin-left:0}.table tbody tr.success td{background-color:#dff0d8}.table tbody tr.error td{background-color:#f2dede}.table tbody tr.warning td{background-color:#fcf8e3}.table tbody tr.info td{background-color:#d9edf7}.table-hover tbody tr.success:hover td{background-color:#d0e9c6}.table-hover tbody tr.error:hover td{background-color:#ebcccc}.table-hover tbody tr.warning:hover td{background-color:#faf2cc}.table-hover tbody tr.info:hover td{background-color:#c4e3f3}[class^="icon-"],[class*=" icon-"]{display:inline-block;width:14px;height:14px;margin-top:1px;*margin-right:.3em;line-height:14px;vertical-align:text-top;background-image:url("../img/glyphicons-halflings.png");background-position:14px 14px;background-repeat:no-repeat}.icon-white,.nav-pills>.active>a>[class^="icon-"],.nav-pills>.active>a>[class*=" icon-"],.nav-list>.active>a>[class^="icon-"],.nav-list>.active>a>[class*=" icon-"],.navbar-inverse .nav>.active>a>[class^="icon-"],.navbar-inverse .nav>.active>a>[class*=" icon-"],.dropdown-menu>li>a:hover>[class^="icon-"],.dropdown-menu>li>a:hover>[class*=" icon-"],.dropdown-menu>.active>a>[class^="icon-"],.dropdown-menu>.active>a>[class*=" icon-"],.dropdown-submenu:hover>a>[class^="icon-"],.dropdown-submenu:hover>a>[class*=" icon-"]{background-image:url("../img/glyphicons-halflings-white.png")}.icon-glass{background-position:0 0}.icon-music{background-position:-24px 0}.icon-search{background-position:-48px 0}.icon-envelope{background-position:-72px 0}.icon-heart{background-position:-96px 0}.icon-star{background-position:-120px 0}.icon-star-empty{background-position:-144px 0}.icon-user{background-position:-168px 0}.icon-film{background-position:-192px 0}.icon-th-large{background-position:-216px 0}.icon-th{background-position:-240px 0}.icon-th-list{background-position:-264px 0}.icon-ok{background-position:-288px 0}.icon-remove{background-position:-312px 0}.icon-zoom-in{background-position:-336px 0}.icon-zoom-out{background-position:-360px 0}.icon-off{background-position:-384px 0}.icon-signal{background-position:-408px 0}.icon-cog{background-position:-432px 0}.icon-trash{background-position:-456px 0}.icon-home{background-position:0 -24px}.icon-file{background-position:-24px -24px}.icon-time{background-position:-48px -24px}.icon-road{background-position:-72px -24px}.icon-download-alt{background-position:-96px -24px}.icon-download{background-position:-120px -24px}.icon-upload{background-position:-144px -24px}.icon-inbox{background-position:-168px -24px}.icon-play-circle{background-position:-192px -24px}.icon-repeat{background-position:-216px -24px}.icon-refresh{background-position:-240px -24px}.icon-list-alt{background-position:-264px -24px}.icon-lock{background-position:-287px -24px}.icon-flag{background-position:-312px -24px}.icon-headphones{background-position:-336px -24px}.icon-volume-off{background-position:-360px -24px}.icon-volume-down{background-position:-384px -24px}.icon-volume-up{background-position:-408px -24px}.icon-qrcode{background-position:-432px -24px}.icon-barcode{background-position:-456px -24px}.icon-tag{background-position:0 -48px}.icon-tags{background-position:-25px -48px}.icon-book{background-position:-48px -48px}.icon-bookmark{background-position:-72px -48px}.icon-print{background-position:-96px -48px}.icon-camera{background-position:-120px -48px}.icon-font{background-position:-144px -48px}.icon-bold{background-position:-167px -48px}.icon-italic{background-position:-192px -48px}.icon-text-height{background-position:-216px -48px}.icon-text-width{background-position:-240px -48px}.icon-align-left{background-position:-264px -48px}.icon-align-center{background-position:-288px -48px}.icon-align-right{background-position:-312px -48px}.icon-align-justify{background-position:-336px -48px}.icon-list{background-position:-360px -48px}.icon-indent-left{background-position:-384px -48px}.icon-indent-right{background-position:-408px -48px}.icon-facetime-video{background-position:-432px -48px}.icon-picture{background-position:-456px -48px}.icon-pencil{background-position:0 -72px}.icon-map-marker{background-position:-24px -72px}.icon-adjust{background-position:-48px -72px}.icon-tint{background-position:-72px -72px}.icon-edit{background-position:-96px -72px}.icon-share{background-position:-120px -72px}.icon-check{background-position:-144px -72px}.icon-move{background-position:-168px -72px}.icon-step-backward{background-position:-192px -72px}.icon-fast-backward{background-position:-216px -72px}.icon-backward{background-position:-240px -72px}.icon-play{background-position:-264px -72px}.icon-pause{background-position:-288px -72px}.icon-stop{background-position:-312px -72px}.icon-forward{background-position:-336px -72px}.icon-fast-forward{background-position:-360px -72px}.icon-step-forward{background-position:-384px -72px}.icon-eject{background-position:-408px -72px}.icon-chevron-left{background-position:-432px -72px}.icon-chevron-right{background-position:-456px -72px}.icon-plus-sign{background-position:0 -96px}.icon-minus-sign{background-position:-24px -96px}.icon-remove-sign{background-position:-48px -96px}.icon-ok-sign{background-position:-72px -96px}.icon-question-sign{background-position:-96px -96px}.icon-info-sign{background-position:-120px -96px}.icon-screenshot{background-position:-144px -96px}.icon-remove-circle{background-position:-168px -96px}.icon-ok-circle{background-position:-192px -96px}.icon-ban-circle{background-position:-216px -96px}.icon-arrow-left{background-position:-240px -96px}.icon-arrow-right{background-position:-264px -96px}.icon-arrow-up{background-position:-289px -96px}.icon-arrow-down{background-position:-312px -96px}.icon-share-alt{background-position:-336px -96px}.icon-resize-full{background-position:-360px -96px}.icon-resize-small{background-position:-384px -96px}.icon-plus{background-position:-408px -96px}.icon-minus{background-position:-433px -96px}.icon-asterisk{background-position:-456px -96px}.icon-exclamation-sign{background-position:0 -120px}.icon-gift{background-position:-24px -120px}.icon-leaf{background-position:-48px -120px}.icon-fire{background-position:-72px -120px}.icon-eye-open{background-position:-96px -120px}.icon-eye-close{background-position:-120px -120px}.icon-warning-sign{background-position:-144px -120px}.icon-plane{background-position:-168px -120px}.icon-calendar{background-position:-192px -120px}.icon-random{width:16px;background-position:-216px -120px}.icon-comment{background-position:-240px -120px}.icon-magnet{background-position:-264px -120px}.icon-chevron-up{background-position:-288px -120px}.icon-chevron-down{background-position:-313px -119px}.icon-retweet{background-position:-336px -120px}.icon-shopping-cart{background-position:-360px -120px}.icon-folder-close{background-position:-384px -120px}.icon-folder-open{width:16px;background-position:-408px -120px}.icon-resize-vertical{background-position:-432px -119px}.icon-resize-horizontal{background-position:-456px -118px}.icon-hdd{background-position:0 -144px}.icon-bullhorn{background-position:-24px -144px}.icon-bell{background-position:-48px -144px}.icon-certificate{background-position:-72px -144px}.icon-thumbs-up{background-position:-96px -144px}.icon-thumbs-down{background-position:-120px -144px}.icon-hand-right{background-position:-144px -144px}.icon-hand-left{background-position:-168px -144px}.icon-hand-up{background-position:-192px -144px}.icon-hand-down{background-position:-216px -144px}.icon-circle-arrow-right{background-position:-240px -144px}.icon-circle-arrow-left{background-position:-264px -144px}.icon-circle-arrow-up{background-position:-288px -144px}.icon-circle-arrow-down{background-position:-312px -144px}.icon-globe{background-position:-336px -144px}.icon-wrench{background-position:-360px -144px}.icon-tasks{background-position:-384px -144px}.icon-filter{background-position:-408px -144px}.icon-briefcase{background-position:-432px -144px}.icon-fullscreen{background-position:-456px -144px}.dropup,.dropdown{position:relative}.dropdown-toggle{*margin-bottom:-3px}.dropdown-toggle:active,.open .dropdown-toggle{outline:0}.caret{display:inline-block;width:0;height:0;vertical-align:top;border-top:4px solid #000;border-right:4px solid transparent;border-left:4px solid transparent;content:""}.dropdown .caret{margin-top:8px;margin-left:2px}.dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:160px;padding:5px 0;margin:2px 0 0;list-style:none;background-color:#fff;border:1px solid #ccc;border:1px solid rgba(0,0,0,0.2);*border-right-width:2px;*border-bottom-width:2px;-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px;-webkit-box-shadow:0 5px 10px rgba(0,0,0,0.2);-moz-box-shadow:0 5px 10px rgba(0,0,0,0.2);box-shadow:0 5px 10px rgba(0,0,0,0.2);-webkit-background-clip:padding-box;-moz-background-clip:padding;background-clip:padding-box}.dropdown-menu.pull-right{right:0;left:auto}.dropdown-menu .divider{*width:100%;height:1px;margin:9px 1px;*margin:-5px 0 5px;overflow:hidden;background-color:#e5e5e5;border-bottom:1px solid #fff}.dropdown-menu li>a{display:block;padding:3px 20px;clear:both;font-weight:normal;line-height:20px;color:#333;white-space:nowrap}.dropdown-menu li>a:hover,.dropdown-menu li>a:focus,.dropdown-submenu:hover>a{color:#fff;text-decoration:none;background-color:#0081c2;background-image:-moz-linear-gradient(top,#08c,#0077b3);background-image:-webkit-gradient(linear,0 0,0 100%,from(#08c),to(#0077b3));background-image:-webkit-linear-gradient(top,#08c,#0077b3);background-image:-o-linear-gradient(top,#08c,#0077b3);background-image:linear-gradient(to bottom,#08c,#0077b3);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff0088cc',endColorstr='#ff0077b3',GradientType=0)}.dropdown-menu .active>a,.dropdown-menu .active>a:hover{color:#fff;text-decoration:none;background-color:#0081c2;background-image:-moz-linear-gradient(top,#08c,#0077b3);background-image:-webkit-gradient(linear,0 0,0 100%,from(#08c),to(#0077b3));background-image:-webkit-linear-gradient(top,#08c,#0077b3);background-image:-o-linear-gradient(top,#08c,#0077b3);background-image:linear-gradient(to bottom,#08c,#0077b3);background-repeat:repeat-x;outline:0;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff0088cc',endColorstr='#ff0077b3',GradientType=0)}.dropdown-menu .disabled>a,.dropdown-menu .disabled>a:hover{color:#999}.dropdown-menu .disabled>a:hover{text-decoration:none;cursor:default;background-color:transparent;background-image:none;filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.open{*z-index:1000}.open>.dropdown-menu{display:block}.pull-right>.dropdown-menu{right:0;left:auto}.dropup .caret,.navbar-fixed-bottom .dropdown .caret{border-top:0;border-bottom:4px solid #000;content:""}.dropup .dropdown-menu,.navbar-fixed-bottom .dropdown .dropdown-menu{top:auto;bottom:100%;margin-bottom:1px}.dropdown-submenu{position:relative}.dropdown-submenu>.dropdown-menu{top:0;left:100%;margin-top:-6px;margin-left:-1px;-webkit-border-radius:0 6px 6px 6px;-moz-border-radius:0 6px 6px 6px;border-radius:0 6px 6px 6px}.dropdown-submenu:hover>.dropdown-menu{display:block}.dropup .dropdown-submenu>.dropdown-menu{top:auto;bottom:0;margin-top:0;margin-bottom:-2px;-webkit-border-radius:5px 5px 5px 0;-moz-border-radius:5px 5px 5px 0;border-radius:5px 5px 5px 0}.dropdown-submenu>a:after{display:block;float:right;width:0;height:0;margin-top:5px;margin-right:-10px;border-color:transparent;border-left-color:#ccc;border-style:solid;border-width:5px 0 5px 5px;content:" "}.dropdown-submenu:hover>a:after{border-left-color:#fff}.dropdown-submenu.pull-left{float:none}.dropdown-submenu.pull-left>.dropdown-menu{left:-100%;margin-left:10px;-webkit-border-radius:6px 0 6px 6px;-moz-border-radius:6px 0 6px 6px;border-radius:6px 0 6px 6px}.dropdown .dropdown-menu .nav-header{padding-right:20px;padding-left:20px}.typeahead{z-index:1051;margin-top:2px;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}.well{min-height:20px;padding:19px;margin-bottom:20px;background-color:#f5f5f5;border:1px solid #e3e3e3;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.05);-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,0.05);box-shadow:inset 0 1px 1px rgba(0,0,0,0.05)}.well blockquote{border-color:#ddd;border-color:rgba(0,0,0,0.15)}.well-large{padding:24px;-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px}.well-small{padding:9px;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px}.fade{opacity:0;-webkit-transition:opacity .15s linear;-moz-transition:opacity .15s linear;-o-transition:opacity .15s linear;transition:opacity .15s linear}.fade.in{opacity:1}.collapse{position:relative;height:0;overflow:hidden;-webkit-transition:height .35s ease;-moz-transition:height .35s ease;-o-transition:height .35s ease;transition:height .35s ease}.collapse.in{height:auto}.close{float:right;font-size:20px;font-weight:bold;line-height:20px;color:#000;text-shadow:0 1px 0 #fff;opacity:.2;filter:alpha(opacity=20)}.close:hover{color:#000;text-decoration:none;cursor:pointer;opacity:.4;filter:alpha(opacity=40)}button.close{padding:0;cursor:pointer;background:transparent;border:0;-webkit-appearance:none}.btn{display:inline-block;*display:inline;padding:4px 12px;margin-bottom:0;*margin-left:.3em;font-size:14px;line-height:20px;color:#333;text-align:center;text-shadow:0 1px 1px rgba(255,255,255,0.75);vertical-align:middle;cursor:pointer;background-color:#f5f5f5;*background-color:#e6e6e6;background-image:-moz-linear-gradient(top,#fff,#e6e6e6);background-image:-webkit-gradient(linear,0 0,0 100%,from(#fff),to(#e6e6e6));background-image:-webkit-linear-gradient(top,#fff,#e6e6e6);background-image:-o-linear-gradient(top,#fff,#e6e6e6);background-image:linear-gradient(to bottom,#fff,#e6e6e6);background-repeat:repeat-x;border:1px solid #bbb;*border:0;border-color:#e6e6e6 #e6e6e6 #bfbfbf;border-color:rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25);border-bottom-color:#a2a2a2;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff',endColorstr='#ffe6e6e6',GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);*zoom:1;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,0.2),0 1px 2px rgba(0,0,0,0.05);-moz-box-shadow:inset 0 1px 0 rgba(255,255,255,0.2),0 1px 2px rgba(0,0,0,0.05);box-shadow:inset 0 1px 0 rgba(255,255,255,0.2),0 1px 2px rgba(0,0,0,0.05)}.btn:hover,.btn:active,.btn.active,.btn.disabled,.btn[disabled]{color:#333;background-color:#e6e6e6;*background-color:#d9d9d9}.btn:active,.btn.active{background-color:#ccc \9}.btn:first-child{*margin-left:0}.btn:hover{color:#333;text-decoration:none;background-position:0 -15px;-webkit-transition:background-position .1s linear;-moz-transition:background-position .1s linear;-o-transition:background-position .1s linear;transition:background-position .1s linear}.btn:focus{outline:thin dotted #333;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.btn.active,.btn:active{background-image:none;outline:0;-webkit-box-shadow:inset 0 2px 4px rgba(0,0,0,0.15),0 1px 2px rgba(0,0,0,0.05);-moz-box-shadow:inset 0 2px 4px rgba(0,0,0,0.15),0 1px 2px rgba(0,0,0,0.05);box-shadow:inset 0 2px 4px rgba(0,0,0,0.15),0 1px 2px rgba(0,0,0,0.05)}.btn.disabled,.btn[disabled]{cursor:default;background-image:none;opacity:.65;filter:alpha(opacity=65);-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none}.btn-large{padding:11px 19px;font-size:17.5px;-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px}.btn-large [class^="icon-"],.btn-large [class*=" icon-"]{margin-top:4px}.btn-small{padding:2px 10px;font-size:11.9px;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px}.btn-small [class^="icon-"],.btn-small [class*=" icon-"]{margin-top:0}.btn-mini [class^="icon-"],.btn-mini [class*=" icon-"]{margin-top:-1px}.btn-mini{padding:0 6px;font-size:10.5px;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px}.btn-block{display:block;width:100%;padding-right:0;padding-left:0;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.btn-block+.btn-block{margin-top:5px}input[type="submit"].btn-block,input[type="reset"].btn-block,input[type="button"].btn-block{width:100%}.btn-primary.active,.btn-warning.active,.btn-danger.active,.btn-success.active,.btn-info.active,.btn-inverse.active{color:rgba(255,255,255,0.75)}.btn{border-color:#c5c5c5;border-color:rgba(0,0,0,0.15) rgba(0,0,0,0.15) rgba(0,0,0,0.25)}.btn-primary{color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,0.25);background-color:#006dcc;*background-color:#04c;background-image:-moz-linear-gradient(top,#08c,#04c);background-image:-webkit-gradient(linear,0 0,0 100%,from(#08c),to(#04c));background-image:-webkit-linear-gradient(top,#08c,#04c);background-image:-o-linear-gradient(top,#08c,#04c);background-image:linear-gradient(to bottom,#08c,#04c);background-repeat:repeat-x;border-color:#04c #04c #002a80;border-color:rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff0088cc',endColorstr='#ff0044cc',GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.btn-primary:hover,.btn-primary:active,.btn-primary.active,.btn-primary.disabled,.btn-primary[disabled]{color:#fff;background-color:#04c;*background-color:#003bb3}.btn-primary:active,.btn-primary.active{background-color:#039 \9}.btn-warning{color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,0.25);background-color:#faa732;*background-color:#f89406;background-image:-moz-linear-gradient(top,#fbb450,#f89406);background-image:-webkit-gradient(linear,0 0,0 100%,from(#fbb450),to(#f89406));background-image:-webkit-linear-gradient(top,#fbb450,#f89406);background-image:-o-linear-gradient(top,#fbb450,#f89406);background-image:linear-gradient(to bottom,#fbb450,#f89406);background-repeat:repeat-x;border-color:#f89406 #f89406 #ad6704;border-color:rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffbb450',endColorstr='#fff89406',GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.btn-warning:hover,.btn-warning:active,.btn-warning.active,.btn-warning.disabled,.btn-warning[disabled]{color:#fff;background-color:#f89406;*background-color:#df8505}.btn-warning:active,.btn-warning.active{background-color:#c67605 \9}.btn-danger{color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,0.25);background-color:#da4f49;*background-color:#bd362f;background-image:-moz-linear-gradient(top,#ee5f5b,#bd362f);background-image:-webkit-gradient(linear,0 0,0 100%,from(#ee5f5b),to(#bd362f));background-image:-webkit-linear-gradient(top,#ee5f5b,#bd362f);background-image:-o-linear-gradient(top,#ee5f5b,#bd362f);background-image:linear-gradient(to bottom,#ee5f5b,#bd362f);background-repeat:repeat-x;border-color:#bd362f #bd362f #802420;border-color:rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffee5f5b',endColorstr='#ffbd362f',GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.btn-danger:hover,.btn-danger:active,.btn-danger.active,.btn-danger.disabled,.btn-danger[disabled]{color:#fff;background-color:#bd362f;*background-color:#a9302a}.btn-danger:active,.btn-danger.active{background-color:#942a25 \9}.btn-success{color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,0.25);background-color:#5bb75b;*background-color:#51a351;background-image:-moz-linear-gradient(top,#62c462,#51a351);background-image:-webkit-gradient(linear,0 0,0 100%,from(#62c462),to(#51a351));background-image:-webkit-linear-gradient(top,#62c462,#51a351);background-image:-o-linear-gradient(top,#62c462,#51a351);background-image:linear-gradient(to bottom,#62c462,#51a351);background-repeat:repeat-x;border-color:#51a351 #51a351 #387038;border-color:rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff62c462',endColorstr='#ff51a351',GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.btn-success:hover,.btn-success:active,.btn-success.active,.btn-success.disabled,.btn-success[disabled]{color:#fff;background-color:#51a351;*background-color:#499249}.btn-success:active,.btn-success.active{background-color:#408140 \9}.btn-info{color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,0.25);background-color:#49afcd;*background-color:#2f96b4;background-image:-moz-linear-gradient(top,#5bc0de,#2f96b4);background-image:-webkit-gradient(linear,0 0,0 100%,from(#5bc0de),to(#2f96b4));background-image:-webkit-linear-gradient(top,#5bc0de,#2f96b4);background-image:-o-linear-gradient(top,#5bc0de,#2f96b4);background-image:linear-gradient(to bottom,#5bc0de,#2f96b4);background-repeat:repeat-x;border-color:#2f96b4 #2f96b4 #1f6377;border-color:rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de',endColorstr='#ff2f96b4',GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.btn-info:hover,.btn-info:active,.btn-info.active,.btn-info.disabled,.btn-info[disabled]{color:#fff;background-color:#2f96b4;*background-color:#2a85a0}.btn-info:active,.btn-info.active{background-color:#24748c \9}.btn-inverse{color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,0.25);background-color:#363636;*background-color:#222;background-image:-moz-linear-gradient(top,#444,#222);background-image:-webkit-gradient(linear,0 0,0 100%,from(#444),to(#222));background-image:-webkit-linear-gradient(top,#444,#222);background-image:-o-linear-gradient(top,#444,#222);background-image:linear-gradient(to bottom,#444,#222);background-repeat:repeat-x;border-color:#222 #222 #000;border-color:rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff444444',endColorstr='#ff222222',GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.btn-inverse:hover,.btn-inverse:active,.btn-inverse.active,.btn-inverse.disabled,.btn-inverse[disabled]{color:#fff;background-color:#222;*background-color:#151515}.btn-inverse:active,.btn-inverse.active{background-color:#080808 \9}button.btn,input[type="submit"].btn{*padding-top:3px;*padding-bottom:3px}button.btn::-moz-focus-inner,input[type="submit"].btn::-moz-focus-inner{padding:0;border:0}button.btn.btn-large,input[type="submit"].btn.btn-large{*padding-top:7px;*padding-bottom:7px}button.btn.btn-small,input[type="submit"].btn.btn-small{*padding-top:3px;*padding-bottom:3px}button.btn.btn-mini,input[type="submit"].btn.btn-mini{*padding-top:1px;*padding-bottom:1px}.btn-link,.btn-link:active,.btn-link[disabled]{background-color:transparent;background-image:none;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none}.btn-link{color:#08c;cursor:pointer;border-color:transparent;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0}.btn-link:hover{color:#005580;text-decoration:underline;background-color:transparent}.btn-link[disabled]:hover{color:#333;text-decoration:none}.btn-group{position:relative;display:inline-block;*display:inline;*margin-left:.3em;font-size:0;white-space:nowrap;vertical-align:middle;*zoom:1}.btn-group:first-child{*margin-left:0}.btn-group+.btn-group{margin-left:5px}.btn-toolbar{margin-top:10px;margin-bottom:10px;font-size:0}.btn-toolbar>.btn+.btn,.btn-toolbar>.btn-group+.btn,.btn-toolbar>.btn+.btn-group{margin-left:5px}.btn-group>.btn{position:relative;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0}.btn-group>.btn+.btn{margin-left:-1px}.btn-group>.btn,.btn-group>.dropdown-menu,.btn-group>.popover{font-size:14px}.btn-group>.btn-mini{font-size:10.5px}.btn-group>.btn-small{font-size:11.9px}.btn-group>.btn-large{font-size:17.5px}.btn-group>.btn:first-child{margin-left:0;-webkit-border-bottom-left-radius:4px;border-bottom-left-radius:4px;-webkit-border-top-left-radius:4px;border-top-left-radius:4px;-moz-border-radius-bottomleft:4px;-moz-border-radius-topleft:4px}.btn-group>.btn:last-child,.btn-group>.dropdown-toggle{-webkit-border-top-right-radius:4px;border-top-right-radius:4px;-webkit-border-bottom-right-radius:4px;border-bottom-right-radius:4px;-moz-border-radius-topright:4px;-moz-border-radius-bottomright:4px}.btn-group>.btn.large:first-child{margin-left:0;-webkit-border-bottom-left-radius:6px;border-bottom-left-radius:6px;-webkit-border-top-left-radius:6px;border-top-left-radius:6px;-moz-border-radius-bottomleft:6px;-moz-border-radius-topleft:6px}.btn-group>.btn.large:last-child,.btn-group>.large.dropdown-toggle{-webkit-border-top-right-radius:6px;border-top-right-radius:6px;-webkit-border-bottom-right-radius:6px;border-bottom-right-radius:6px;-moz-border-radius-topright:6px;-moz-border-radius-bottomright:6px}.btn-group>.btn:hover,.btn-group>.btn:focus,.btn-group>.btn:active,.btn-group>.btn.active{z-index:2}.btn-group .dropdown-toggle:active,.btn-group.open .dropdown-toggle{outline:0}.btn-group>.btn+.dropdown-toggle{*padding-top:5px;padding-right:8px;*padding-bottom:5px;padding-left:8px;-webkit-box-shadow:inset 1px 0 0 rgba(255,255,255,0.125),inset 0 1px 0 rgba(255,255,255,0.2),0 1px 2px rgba(0,0,0,0.05);-moz-box-shadow:inset 1px 0 0 rgba(255,255,255,0.125),inset 0 1px 0 rgba(255,255,255,0.2),0 1px 2px rgba(0,0,0,0.05);box-shadow:inset 1px 0 0 rgba(255,255,255,0.125),inset 0 1px 0 rgba(255,255,255,0.2),0 1px 2px rgba(0,0,0,0.05)}.btn-group>.btn-mini+.dropdown-toggle{*padding-top:2px;padding-right:5px;*padding-bottom:2px;padding-left:5px}.btn-group>.btn-small+.dropdown-toggle{*padding-top:5px;*padding-bottom:4px}.btn-group>.btn-large+.dropdown-toggle{*padding-top:7px;padding-right:12px;*padding-bottom:7px;padding-left:12px}.btn-group.open .dropdown-toggle{background-image:none;-webkit-box-shadow:inset 0 2px 4px rgba(0,0,0,0.15),0 1px 2px rgba(0,0,0,0.05);-moz-box-shadow:inset 0 2px 4px rgba(0,0,0,0.15),0 1px 2px rgba(0,0,0,0.05);box-shadow:inset 0 2px 4px rgba(0,0,0,0.15),0 1px 2px rgba(0,0,0,0.05)}.btn-group.open .btn.dropdown-toggle{background-color:#e6e6e6}.btn-group.open .btn-primary.dropdown-toggle{background-color:#04c}.btn-group.open .btn-warning.dropdown-toggle{background-color:#f89406}.btn-group.open .btn-danger.dropdown-toggle{background-color:#bd362f}.btn-group.open .btn-success.dropdown-toggle{background-color:#51a351}.btn-group.open .btn-info.dropdown-toggle{background-color:#2f96b4}.btn-group.open .btn-inverse.dropdown-toggle{background-color:#222}.btn .caret{margin-top:8px;margin-left:0}.btn-mini .caret,.btn-small .caret,.btn-large .caret{margin-top:6px}.btn-large .caret{border-top-width:5px;border-right-width:5px;border-left-width:5px}.dropup .btn-large .caret{border-bottom-width:5px}.btn-primary .caret,.btn-warning .caret,.btn-danger .caret,.btn-info .caret,.btn-success .caret,.btn-inverse .caret{border-top-color:#fff;border-bottom-color:#fff}.btn-group-vertical{display:inline-block;*display:inline;*zoom:1}.btn-group-vertical>.btn{display:block;float:none;max-width:100%;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0}.btn-group-vertical>.btn+.btn{margin-top:-1px;margin-left:0}.btn-group-vertical>.btn:first-child{-webkit-border-radius:4px 4px 0 0;-moz-border-radius:4px 4px 0 0;border-radius:4px 4px 0 0}.btn-group-vertical>.btn:last-child{-webkit-border-radius:0 0 4px 4px;-moz-border-radius:0 0 4px 4px;border-radius:0 0 4px 4px}.btn-group-vertical>.btn-large:first-child{-webkit-border-radius:6px 6px 0 0;-moz-border-radius:6px 6px 0 0;border-radius:6px 6px 0 0}.btn-group-vertical>.btn-large:last-child{-webkit-border-radius:0 0 6px 6px;-moz-border-radius:0 0 6px 6px;border-radius:0 0 6px 6px}.alert{padding:8px 35px 8px 14px;margin-bottom:20px;text-shadow:0 1px 0 rgba(255,255,255,0.5);background-color:#fcf8e3;border:1px solid #fbeed5;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}.alert,.alert h4{color:#c09853}.alert h4{margin:0}.alert .close{position:relative;top:-2px;right:-21px;line-height:20px}.alert-success{color:#468847;background-color:#dff0d8;border-color:#d6e9c6}.alert-success h4{color:#468847}.alert-danger,.alert-error{color:#b94a48;background-color:#f2dede;border-color:#eed3d7}.alert-danger h4,.alert-error h4{color:#b94a48}.alert-info{color:#3a87ad;background-color:#d9edf7;border-color:#bce8f1}.alert-info h4{color:#3a87ad}.alert-block{padding-top:14px;padding-bottom:14px}.alert-block>p,.alert-block>ul{margin-bottom:0}.alert-block p+p{margin-top:5px}.nav{margin-bottom:20px;margin-left:0;list-style:none}.nav>li>a{display:block}.nav>li>a:hover{text-decoration:none;background-color:#eee}.nav>li>a>img{max-width:none}.nav>.pull-right{float:right}.nav-header{display:block;padding:3px 15px;font-size:11px;font-weight:bold;line-height:20px;color:#999;text-shadow:0 1px 0 rgba(255,255,255,0.5);text-transform:uppercase}.nav li+.nav-header{margin-top:9px}.nav-list{padding-right:15px;padding-left:15px;margin-bottom:0}.nav-list>li>a,.nav-list .nav-header{margin-right:-15px;margin-left:-15px;text-shadow:0 1px 0 rgba(255,255,255,0.5)}.nav-list>li>a{padding:3px 15px}.nav-list>.active>a,.nav-list>.active>a:hover{color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,0.2);background-color:#08c}.nav-list [class^="icon-"],.nav-list [class*=" icon-"]{margin-right:2px}.nav-list .divider{*width:100%;height:1px;margin:9px 1px;*margin:-5px 0 5px;overflow:hidden;background-color:#e5e5e5;border-bottom:1px solid #fff}.nav-tabs,.nav-pills{*zoom:1}.nav-tabs:before,.nav-pills:before,.nav-tabs:after,.nav-pills:after{display:table;line-height:0;content:""}.nav-tabs:after,.nav-pills:after{clear:both}.nav-tabs>li,.nav-pills>li{float:left}.nav-tabs>li>a,.nav-pills>li>a{padding-right:12px;padding-left:12px;margin-right:2px;line-height:14px}.nav-tabs{border-bottom:1px solid #ddd}.nav-tabs>li{margin-bottom:-1px}.nav-tabs>li>a{padding-top:8px;padding-bottom:8px;line-height:20px;border:1px solid transparent;-webkit-border-radius:4px 4px 0 0;-moz-border-radius:4px 4px 0 0;border-radius:4px 4px 0 0}.nav-tabs>li>a:hover{border-color:#eee #eee #ddd}.nav-tabs>.active>a,.nav-tabs>.active>a:hover{color:#555;cursor:default;background-color:#fff;border:1px solid #ddd;border-bottom-color:transparent}.nav-pills>li>a{padding-top:8px;padding-bottom:8px;margin-top:2px;margin-bottom:2px;-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px}.nav-pills>.active>a,.nav-pills>.active>a:hover{color:#fff;background-color:#08c}.nav-stacked>li{float:none}.nav-stacked>li>a{margin-right:0}.nav-tabs.nav-stacked{border-bottom:0}.nav-tabs.nav-stacked>li>a{border:1px solid #ddd;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0}.nav-tabs.nav-stacked>li:first-child>a{-webkit-border-top-right-radius:4px;border-top-right-radius:4px;-webkit-border-top-left-radius:4px;border-top-left-radius:4px;-moz-border-radius-topright:4px;-moz-border-radius-topleft:4px}.nav-tabs.nav-stacked>li:last-child>a{-webkit-border-bottom-right-radius:4px;border-bottom-right-radius:4px;-webkit-border-bottom-left-radius:4px;border-bottom-left-radius:4px;-moz-border-radius-bottomright:4px;-moz-border-radius-bottomleft:4px}.nav-tabs.nav-stacked>li>a:hover{z-index:2;border-color:#ddd}.nav-pills.nav-stacked>li>a{margin-bottom:3px}.nav-pills.nav-stacked>li:last-child>a{margin-bottom:1px}.nav-tabs .dropdown-menu{-webkit-border-radius:0 0 6px 6px;-moz-border-radius:0 0 6px 6px;border-radius:0 0 6px 6px}.nav-pills .dropdown-menu{-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px}.nav .dropdown-toggle .caret{margin-top:6px;border-top-color:#08c;border-bottom-color:#08c}.nav .dropdown-toggle:hover .caret{border-top-color:#005580;border-bottom-color:#005580}.nav-tabs .dropdown-toggle .caret{margin-top:8px}.nav .active .dropdown-toggle .caret{border-top-color:#fff;border-bottom-color:#fff}.nav-tabs .active .dropdown-toggle .caret{border-top-color:#555;border-bottom-color:#555}.nav>.dropdown.active>a:hover{cursor:pointer}.nav-tabs .open .dropdown-toggle,.nav-pills .open .dropdown-toggle,.nav>li.dropdown.open.active>a:hover{color:#fff;background-color:#999;border-color:#999}.nav li.dropdown.open .caret,.nav li.dropdown.open.active .caret,.nav li.dropdown.open a:hover .caret{border-top-color:#fff;border-bottom-color:#fff;opacity:1;filter:alpha(opacity=100)}.tabs-stacked .open>a:hover{border-color:#999}.tabbable{*zoom:1}.tabbable:before,.tabbable:after{display:table;line-height:0;content:""}.tabbable:after{clear:both}.tab-content{overflow:auto}.tabs-below>.nav-tabs,.tabs-right>.nav-tabs,.tabs-left>.nav-tabs{border-bottom:0}.tab-content>.tab-pane,.pill-content>.pill-pane{display:none}.tab-content>.active,.pill-content>.active{display:block}.tabs-below>.nav-tabs{border-top:1px solid #ddd}.tabs-below>.nav-tabs>li{margin-top:-1px;margin-bottom:0}.tabs-below>.nav-tabs>li>a{-webkit-border-radius:0 0 4px 4px;-moz-border-radius:0 0 4px 4px;border-radius:0 0 4px 4px}.tabs-below>.nav-tabs>li>a:hover{border-top-color:#ddd;border-bottom-color:transparent}.tabs-below>.nav-tabs>.active>a,.tabs-below>.nav-tabs>.active>a:hover{border-color:transparent #ddd #ddd #ddd}.tabs-left>.nav-tabs>li,.tabs-right>.nav-tabs>li{float:none}.tabs-left>.nav-tabs>li>a,.tabs-right>.nav-tabs>li>a{min-width:74px;margin-right:0;margin-bottom:3px}.tabs-left>.nav-tabs{float:left;margin-right:19px;border-right:1px solid #ddd}.tabs-left>.nav-tabs>li>a{margin-right:-1px;-webkit-border-radius:4px 0 0 4px;-moz-border-radius:4px 0 0 4px;border-radius:4px 0 0 4px}.tabs-left>.nav-tabs>li>a:hover{border-color:#eee #ddd #eee #eee}.tabs-left>.nav-tabs .active>a,.tabs-left>.nav-tabs .active>a:hover{border-color:#ddd transparent #ddd #ddd;*border-right-color:#fff}.tabs-right>.nav-tabs{float:right;margin-left:19px;border-left:1px solid #ddd}.tabs-right>.nav-tabs>li>a{margin-left:-1px;-webkit-border-radius:0 4px 4px 0;-moz-border-radius:0 4px 4px 0;border-radius:0 4px 4px 0}.tabs-right>.nav-tabs>li>a:hover{border-color:#eee #eee #eee #ddd}.tabs-right>.nav-tabs .active>a,.tabs-right>.nav-tabs .active>a:hover{border-color:#ddd #ddd #ddd transparent;*border-left-color:#fff}.nav>.disabled>a{color:#999}.nav>.disabled>a:hover{text-decoration:none;cursor:default;background-color:transparent}.navbar{*position:relative;*z-index:2;margin-bottom:20px;overflow:visible}.navbar-inner{min-height:40px;padding-right:20px;padding-left:20px;background-color:#fafafa;background-image:-moz-linear-gradient(top,#fff,#f2f2f2);background-image:-webkit-gradient(linear,0 0,0 100%,from(#fff),to(#f2f2f2));background-image:-webkit-linear-gradient(top,#fff,#f2f2f2);background-image:-o-linear-gradient(top,#fff,#f2f2f2);background-image:linear-gradient(to bottom,#fff,#f2f2f2);background-repeat:repeat-x;border:1px solid #d4d4d4;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff',endColorstr='#fff2f2f2',GradientType=0);*zoom:1;-webkit-box-shadow:0 1px 4px rgba(0,0,0,0.065);-moz-box-shadow:0 1px 4px rgba(0,0,0,0.065);box-shadow:0 1px 4px rgba(0,0,0,0.065)}.navbar-inner:before,.navbar-inner:after{display:table;line-height:0;content:""}.navbar-inner:after{clear:both}.navbar .container{width:auto}.nav-collapse.collapse{height:auto;overflow:visible}.navbar .brand{display:block;float:left;padding:10px 20px 10px;margin-left:-20px;font-size:20px;font-weight:200;color:#777;text-shadow:0 1px 0 #fff}.navbar .brand:hover{text-decoration:none}.navbar-text{margin-bottom:0;line-height:40px;color:#777}.navbar-link{color:#777}.navbar-link:hover{color:#333}.navbar .divider-vertical{height:40px;margin:0 9px;border-right:1px solid #fff;border-left:1px solid #f2f2f2}.navbar .btn,.navbar .btn-group{margin-top:5px}.navbar .btn-group .btn,.navbar .input-prepend .btn,.navbar .input-append .btn{margin-top:0}.navbar-form{margin-bottom:0;*zoom:1}.navbar-form:before,.navbar-form:after{display:table;line-height:0;content:""}.navbar-form:after{clear:both}.navbar-form input,.navbar-form select,.navbar-form .radio,.navbar-form .checkbox{margin-top:5px}.navbar-form input,.navbar-form select,.navbar-form .btn{display:inline-block;margin-bottom:0}.navbar-form input[type="image"],.navbar-form input[type="checkbox"],.navbar-form input[type="radio"]{margin-top:3px}.navbar-form .input-append,.navbar-form .input-prepend{margin-top:5px;white-space:nowrap}.navbar-form .input-append input,.navbar-form .input-prepend input{margin-top:0}.navbar-search{position:relative;float:left;margin-top:5px;margin-bottom:0}.navbar-search .search-query{padding:4px 14px;margin-bottom:0;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:13px;font-weight:normal;line-height:1;-webkit-border-radius:15px;-moz-border-radius:15px;border-radius:15px}.navbar-static-top{position:static;margin-bottom:0}.navbar-static-top .navbar-inner{-webkit-border-radius:0;-moz-border-radius:0;border-radius:0}.navbar-fixed-top,.navbar-fixed-bottom{position:fixed;right:0;left:0;z-index:1030;margin-bottom:0}.navbar-fixed-top .navbar-inner,.navbar-static-top .navbar-inner{border-width:0 0 1px}.navbar-fixed-bottom .navbar-inner{border-width:1px 0 0}.navbar-fixed-top .navbar-inner,.navbar-fixed-bottom .navbar-inner{padding-right:0;padding-left:0;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0}.navbar-static-top .container,.navbar-fixed-top .container,.navbar-fixed-bottom .container{width:940px}.navbar-fixed-top{top:0}.navbar-fixed-top .navbar-inner,.navbar-static-top .navbar-inner{-webkit-box-shadow:0 1px 10px rgba(0,0,0,0.1);-moz-box-shadow:0 1px 10px rgba(0,0,0,0.1);box-shadow:0 1px 10px rgba(0,0,0,0.1)}.navbar-fixed-bottom{bottom:0}.navbar-fixed-bottom .navbar-inner{-webkit-box-shadow:0 -1px 10px rgba(0,0,0,0.1);-moz-box-shadow:0 -1px 10px rgba(0,0,0,0.1);box-shadow:0 -1px 10px rgba(0,0,0,0.1)}.navbar .nav{position:relative;left:0;display:block;float:left;margin:0 10px 0 0}.navbar .nav.pull-right{float:right;margin-right:0}.navbar .nav>li{float:left}.navbar .nav>li>a{float:none;padding:10px 15px 10px;color:#777;text-decoration:none;text-shadow:0 1px 0 #fff}.navbar .nav .dropdown-toggle .caret{margin-top:8px}.navbar .nav>li>a:focus,.navbar .nav>li>a:hover{color:#333;text-decoration:none;background-color:transparent}.navbar .nav>.active>a,.navbar .nav>.active>a:hover,.navbar .nav>.active>a:focus{color:#555;text-decoration:none;background-color:#e5e5e5;-webkit-box-shadow:inset 0 3px 8px rgba(0,0,0,0.125);-moz-box-shadow:inset 0 3px 8px rgba(0,0,0,0.125);box-shadow:inset 0 3px 8px rgba(0,0,0,0.125)}.navbar .btn-navbar{display:none;float:right;padding:7px 10px;margin-right:5px;margin-left:5px;color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,0.25);background-color:#ededed;*background-color:#e5e5e5;background-image:-moz-linear-gradient(top,#f2f2f2,#e5e5e5);background-image:-webkit-gradient(linear,0 0,0 100%,from(#f2f2f2),to(#e5e5e5));background-image:-webkit-linear-gradient(top,#f2f2f2,#e5e5e5);background-image:-o-linear-gradient(top,#f2f2f2,#e5e5e5);background-image:linear-gradient(to bottom,#f2f2f2,#e5e5e5);background-repeat:repeat-x;border-color:#e5e5e5 #e5e5e5 #bfbfbf;border-color:rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2f2f2',endColorstr='#ffe5e5e5',GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,0.1),0 1px 0 rgba(255,255,255,0.075);-moz-box-shadow:inset 0 1px 0 rgba(255,255,255,0.1),0 1px 0 rgba(255,255,255,0.075);box-shadow:inset 0 1px 0 rgba(255,255,255,0.1),0 1px 0 rgba(255,255,255,0.075)}.navbar .btn-navbar:hover,.navbar .btn-navbar:active,.navbar .btn-navbar.active,.navbar .btn-navbar.disabled,.navbar .btn-navbar[disabled]{color:#fff;background-color:#e5e5e5;*background-color:#d9d9d9}.navbar .btn-navbar:active,.navbar .btn-navbar.active{background-color:#ccc \9}.navbar .btn-navbar .icon-bar{display:block;width:18px;height:2px;background-color:#f5f5f5;-webkit-border-radius:1px;-moz-border-radius:1px;border-radius:1px;-webkit-box-shadow:0 1px 0 rgba(0,0,0,0.25);-moz-box-shadow:0 1px 0 rgba(0,0,0,0.25);box-shadow:0 1px 0 rgba(0,0,0,0.25)}.btn-navbar .icon-bar+.icon-bar{margin-top:3px}.navbar .nav>li>.dropdown-menu:before{position:absolute;top:-7px;left:9px;display:inline-block;border-right:7px solid transparent;border-bottom:7px solid #ccc;border-left:7px solid transparent;border-bottom-color:rgba(0,0,0,0.2);content:''}.navbar .nav>li>.dropdown-menu:after{position:absolute;top:-6px;left:10px;display:inline-block;border-right:6px solid transparent;border-bottom:6px solid #fff;border-left:6px solid transparent;content:''}.navbar-fixed-bottom .nav>li>.dropdown-menu:before{top:auto;bottom:-7px;border-top:7px solid #ccc;border-bottom:0;border-top-color:rgba(0,0,0,0.2)}.navbar-fixed-bottom .nav>li>.dropdown-menu:after{top:auto;bottom:-6px;border-top:6px solid #fff;border-bottom:0}.navbar .nav li.dropdown>a:hover .caret{border-top-color:#555;border-bottom-color:#555}.navbar .nav li.dropdown.open>.dropdown-toggle,.navbar .nav li.dropdown.active>.dropdown-toggle,.navbar .nav li.dropdown.open.active>.dropdown-toggle{color:#555;background-color:#e5e5e5}.navbar .nav li.dropdown>.dropdown-toggle .caret{border-top-color:#777;border-bottom-color:#777}.navbar .nav li.dropdown.open>.dropdown-toggle .caret,.navbar .nav li.dropdown.active>.dropdown-toggle .caret,.navbar .nav li.dropdown.open.active>.dropdown-toggle .caret{border-top-color:#555;border-bottom-color:#555}.navbar .pull-right>li>.dropdown-menu,.navbar .nav>li>.dropdown-menu.pull-right{right:0;left:auto}.navbar .pull-right>li>.dropdown-menu:before,.navbar .nav>li>.dropdown-menu.pull-right:before{right:12px;left:auto}.navbar .pull-right>li>.dropdown-menu:after,.navbar .nav>li>.dropdown-menu.pull-right:after{right:13px;left:auto}.navbar .pull-right>li>.dropdown-menu .dropdown-menu,.navbar .nav>li>.dropdown-menu.pull-right .dropdown-menu{right:100%;left:auto;margin-right:-1px;margin-left:0;-webkit-border-radius:6px 0 6px 6px;-moz-border-radius:6px 0 6px 6px;border-radius:6px 0 6px 6px}.navbar-inverse .navbar-inner{background-color:#1b1b1b;background-image:-moz-linear-gradient(top,#222,#111);background-image:-webkit-gradient(linear,0 0,0 100%,from(#222),to(#111));background-image:-webkit-linear-gradient(top,#222,#111);background-image:-o-linear-gradient(top,#222,#111);background-image:linear-gradient(to bottom,#222,#111);background-repeat:repeat-x;border-color:#252525;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff222222',endColorstr='#ff111111',GradientType=0)}.navbar-inverse .brand,.navbar-inverse .nav>li>a{color:#999;text-shadow:0 -1px 0 rgba(0,0,0,0.25)}.navbar-inverse .brand:hover,.navbar-inverse .nav>li>a:hover{color:#fff}.navbar-inverse .brand{color:#999}.navbar-inverse .navbar-text{color:#999}.navbar-inverse .nav>li>a:focus,.navbar-inverse .nav>li>a:hover{color:#fff;background-color:transparent}.navbar-inverse .nav .active>a,.navbar-inverse .nav .active>a:hover,.navbar-inverse .nav .active>a:focus{color:#fff;background-color:#111}.navbar-inverse .navbar-link{color:#999}.navbar-inverse .navbar-link:hover{color:#fff}.navbar-inverse .divider-vertical{border-right-color:#222;border-left-color:#111}.navbar-inverse .nav li.dropdown.open>.dropdown-toggle,.navbar-inverse .nav li.dropdown.active>.dropdown-toggle,.navbar-inverse .nav li.dropdown.open.active>.dropdown-toggle{color:#fff;background-color:#111}.navbar-inverse .nav li.dropdown>a:hover .caret{border-top-color:#fff;border-bottom-color:#fff}.navbar-inverse .nav li.dropdown>.dropdown-toggle .caret{border-top-color:#999;border-bottom-color:#999}.navbar-inverse .nav li.dropdown.open>.dropdown-toggle .caret,.navbar-inverse .nav li.dropdown.active>.dropdown-toggle .caret,.navbar-inverse .nav li.dropdown.open.active>.dropdown-toggle .caret{border-top-color:#fff;border-bottom-color:#fff}.navbar-inverse .navbar-search .search-query{color:#fff;background-color:#515151;border-color:#111;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,0.1),0 1px 0 rgba(255,255,255,0.15);-moz-box-shadow:inset 0 1px 2px rgba(0,0,0,0.1),0 1px 0 rgba(255,255,255,0.15);box-shadow:inset 0 1px 2px rgba(0,0,0,0.1),0 1px 0 rgba(255,255,255,0.15);-webkit-transition:none;-moz-transition:none;-o-transition:none;transition:none}.navbar-inverse .navbar-search .search-query:-moz-placeholder{color:#ccc}.navbar-inverse .navbar-search .search-query:-ms-input-placeholder{color:#ccc}.navbar-inverse .navbar-search .search-query::-webkit-input-placeholder{color:#ccc}.navbar-inverse .navbar-search .search-query:focus,.navbar-inverse .navbar-search .search-query.focused{padding:5px 15px;color:#333;text-shadow:0 1px 0 #fff;background-color:#fff;border:0;outline:0;-webkit-box-shadow:0 0 3px rgba(0,0,0,0.15);-moz-box-shadow:0 0 3px rgba(0,0,0,0.15);box-shadow:0 0 3px rgba(0,0,0,0.15)}.navbar-inverse .btn-navbar{color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,0.25);background-color:#0e0e0e;*background-color:#040404;background-image:-moz-linear-gradient(top,#151515,#040404);background-image:-webkit-gradient(linear,0 0,0 100%,from(#151515),to(#040404));background-image:-webkit-linear-gradient(top,#151515,#040404);background-image:-o-linear-gradient(top,#151515,#040404);background-image:linear-gradient(to bottom,#151515,#040404);background-repeat:repeat-x;border-color:#040404 #040404 #000;border-color:rgba(0,0,0,0.1) rgba(0,0,0,0.1) rgba(0,0,0,0.25);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff151515',endColorstr='#ff040404',GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.navbar-inverse .btn-navbar:hover,.navbar-inverse .btn-navbar:active,.navbar-inverse .btn-navbar.active,.navbar-inverse .btn-navbar.disabled,.navbar-inverse .btn-navbar[disabled]{color:#fff;background-color:#040404;*background-color:#000}.navbar-inverse .btn-navbar:active,.navbar-inverse .btn-navbar.active{background-color:#000 \9}.breadcrumb{padding:8px 15px;margin:0 0 20px;list-style:none;background-color:#f5f5f5;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}.breadcrumb>li{display:inline-block;*display:inline;text-shadow:0 1px 0 #fff;*zoom:1}.breadcrumb>li>.divider{padding:0 5px;color:#ccc}.breadcrumb>.active{color:#999}.pagination{margin:20px 0}.pagination ul{display:inline-block;*display:inline;margin-bottom:0;margin-left:0;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;*zoom:1;-webkit-box-shadow:0 1px 2px rgba(0,0,0,0.05);-moz-box-shadow:0 1px 2px rgba(0,0,0,0.05);box-shadow:0 1px 2px rgba(0,0,0,0.05)}.pagination ul>li{display:inline}.pagination ul>li>a,.pagination ul>li>span{float:left;padding:4px 12px;line-height:20px;text-decoration:none;background-color:#fff;border:1px solid #ddd;border-left-width:0}.pagination ul>li>a:hover,.pagination ul>.active>a,.pagination ul>.active>span{background-color:#f5f5f5}.pagination ul>.active>a,.pagination ul>.active>span{color:#999;cursor:default}.pagination ul>.disabled>span,.pagination ul>.disabled>a,.pagination ul>.disabled>a:hover{color:#999;cursor:default;background-color:transparent}.pagination ul>li:first-child>a,.pagination ul>li:first-child>span{border-left-width:1px;-webkit-border-bottom-left-radius:4px;border-bottom-left-radius:4px;-webkit-border-top-left-radius:4px;border-top-left-radius:4px;-moz-border-radius-bottomleft:4px;-moz-border-radius-topleft:4px}.pagination ul>li:last-child>a,.pagination ul>li:last-child>span{-webkit-border-top-right-radius:4px;border-top-right-radius:4px;-webkit-border-bottom-right-radius:4px;border-bottom-right-radius:4px;-moz-border-radius-topright:4px;-moz-border-radius-bottomright:4px}.pagination-centered{text-align:center}.pagination-right{text-align:right}.pagination-large ul>li>a,.pagination-large ul>li>span{padding:11px 19px;font-size:17.5px}.pagination-large ul>li:first-child>a,.pagination-large ul>li:first-child>span{-webkit-border-bottom-left-radius:6px;border-bottom-left-radius:6px;-webkit-border-top-left-radius:6px;border-top-left-radius:6px;-moz-border-radius-bottomleft:6px;-moz-border-radius-topleft:6px}.pagination-large ul>li:last-child>a,.pagination-large ul>li:last-child>span{-webkit-border-top-right-radius:6px;border-top-right-radius:6px;-webkit-border-bottom-right-radius:6px;border-bottom-right-radius:6px;-moz-border-radius-topright:6px;-moz-border-radius-bottomright:6px}.pagination-mini ul>li:first-child>a,.pagination-small ul>li:first-child>a,.pagination-mini ul>li:first-child>span,.pagination-small ul>li:first-child>span{-webkit-border-bottom-left-radius:3px;border-bottom-left-radius:3px;-webkit-border-top-left-radius:3px;border-top-left-radius:3px;-moz-border-radius-bottomleft:3px;-moz-border-radius-topleft:3px}.pagination-mini ul>li:last-child>a,.pagination-small ul>li:last-child>a,.pagination-mini ul>li:last-child>span,.pagination-small ul>li:last-child>span{-webkit-border-top-right-radius:3px;border-top-right-radius:3px;-webkit-border-bottom-right-radius:3px;border-bottom-right-radius:3px;-moz-border-radius-topright:3px;-moz-border-radius-bottomright:3px}.pagination-small ul>li>a,.pagination-small ul>li>span{padding:2px 10px;font-size:11.9px}.pagination-mini ul>li>a,.pagination-mini ul>li>span{padding:0 6px;font-size:10.5px}.pager{margin:20px 0;text-align:center;list-style:none;*zoom:1}.pager:before,.pager:after{display:table;line-height:0;content:""}.pager:after{clear:both}.pager li{display:inline}.pager li>a,.pager li>span{display:inline-block;padding:5px 14px;background-color:#fff;border:1px solid #ddd;-webkit-border-radius:15px;-moz-border-radius:15px;border-radius:15px}.pager li>a:hover{text-decoration:none;background-color:#f5f5f5}.pager .next>a,.pager .next>span{float:right}.pager .previous>a,.pager .previous>span{float:left}.pager .disabled>a,.pager .disabled>a:hover,.pager .disabled>span{color:#999;cursor:default;background-color:#fff}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1040;background-color:#000}.modal-backdrop.fade{opacity:0}.modal-backdrop,.modal-backdrop.fade.in{opacity:.8;filter:alpha(opacity=80)}.modal{position:fixed;top:10%;left:50%;z-index:1050;width:560px;margin-left:-280px;background-color:#fff;border:1px solid #999;border:1px solid rgba(0,0,0,0.3);*border:1px solid #999;-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px;outline:0;-webkit-box-shadow:0 3px 7px rgba(0,0,0,0.3);-moz-box-shadow:0 3px 7px rgba(0,0,0,0.3);box-shadow:0 3px 7px rgba(0,0,0,0.3);-webkit-background-clip:padding-box;-moz-background-clip:padding-box;background-clip:padding-box}.modal.fade{top:-25%;-webkit-transition:opacity .3s linear,top .3s ease-out;-moz-transition:opacity .3s linear,top .3s ease-out;-o-transition:opacity .3s linear,top .3s ease-out;transition:opacity .3s linear,top .3s ease-out}.modal.fade.in{top:10%}.modal-header{padding:9px 15px;border-bottom:1px solid #eee}.modal-header .close{margin-top:2px}.modal-header h3{margin:0;line-height:30px}.modal-body{position:relative;max-height:400px;padding:15px;overflow-y:auto}.modal-form{margin-bottom:0}.modal-footer{padding:14px 15px 15px;margin-bottom:0;text-align:right;background-color:#f5f5f5;border-top:1px solid #ddd;-webkit-border-radius:0 0 6px 6px;-moz-border-radius:0 0 6px 6px;border-radius:0 0 6px 6px;*zoom:1;-webkit-box-shadow:inset 0 1px 0 #fff;-moz-box-shadow:inset 0 1px 0 #fff;box-shadow:inset 0 1px 0 #fff}.modal-footer:before,.modal-footer:after{display:table;line-height:0;content:""}.modal-footer:after{clear:both}.modal-footer .btn+.btn{margin-bottom:0;margin-left:5px}.modal-footer .btn-group .btn+.btn{margin-left:-1px}.modal-footer .btn-block+.btn-block{margin-left:0}.tooltip{position:absolute;z-index:1030;display:block;padding:5px;font-size:11px;opacity:0;filter:alpha(opacity=0);visibility:visible}.tooltip.in{opacity:.8;filter:alpha(opacity=80)}.tooltip.top{margin-top:-3px}.tooltip.right{margin-left:3px}.tooltip.bottom{margin-top:3px}.tooltip.left{margin-left:-3px}.tooltip-inner{max-width:200px;padding:3px 8px;color:#fff;text-align:center;text-decoration:none;background-color:#000;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}.tooltip-arrow{position:absolute;width:0;height:0;border-color:transparent;border-style:solid}.tooltip.top .tooltip-arrow{bottom:0;left:50%;margin-left:-5px;border-top-color:#000;border-width:5px 5px 0}.tooltip.right .tooltip-arrow{top:50%;left:0;margin-top:-5px;border-right-color:#000;border-width:5px 5px 5px 0}.tooltip.left .tooltip-arrow{top:50%;right:0;margin-top:-5px;border-left-color:#000;border-width:5px 0 5px 5px}.tooltip.bottom .tooltip-arrow{top:0;left:50%;margin-left:-5px;border-bottom-color:#000;border-width:0 5px 5px}.popover{position:absolute;top:0;left:0;z-index:1010;display:none;width:236px;padding:1px;text-align:left;white-space:normal;background-color:#fff;border:1px solid #ccc;border:1px solid rgba(0,0,0,0.2);-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px;-webkit-box-shadow:0 5px 10px rgba(0,0,0,0.2);-moz-box-shadow:0 5px 10px rgba(0,0,0,0.2);box-shadow:0 5px 10px rgba(0,0,0,0.2);-webkit-background-clip:padding-box;-moz-background-clip:padding;background-clip:padding-box}.popover.top{margin-top:-10px}.popover.right{margin-left:10px}.popover.bottom{margin-top:10px}.popover.left{margin-left:-10px}.popover-title{padding:8px 14px;margin:0;font-size:14px;font-weight:normal;line-height:18px;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;-webkit-border-radius:5px 5px 0 0;-moz-border-radius:5px 5px 0 0;border-radius:5px 5px 0 0}.popover-content{padding:9px 14px}.popover .arrow,.popover .arrow:after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.popover .arrow{border-width:11px}.popover .arrow:after{border-width:10px;content:""}.popover.top .arrow{bottom:-11px;left:50%;margin-left:-11px;border-top-color:#999;border-top-color:rgba(0,0,0,0.25);border-bottom-width:0}.popover.top .arrow:after{bottom:1px;margin-left:-10px;border-top-color:#fff;border-bottom-width:0}.popover.right .arrow{top:50%;left:-11px;margin-top:-11px;border-right-color:#999;border-right-color:rgba(0,0,0,0.25);border-left-width:0}.popover.right .arrow:after{bottom:-10px;left:1px;border-right-color:#fff;border-left-width:0}.popover.bottom .arrow{top:-11px;left:50%;margin-left:-11px;border-bottom-color:#999;border-bottom-color:rgba(0,0,0,0.25);border-top-width:0}.popover.bottom .arrow:after{top:1px;margin-left:-10px;border-bottom-color:#fff;border-top-width:0}.popover.left .arrow{top:50%;right:-11px;margin-top:-11px;border-left-color:#999;border-left-color:rgba(0,0,0,0.25);border-right-width:0}.popover.left .arrow:after{right:1px;bottom:-10px;border-left-color:#fff;border-right-width:0}.thumbnails{margin-left:-20px;list-style:none;*zoom:1}.thumbnails:before,.thumbnails:after{display:table;line-height:0;content:""}.thumbnails:after{clear:both}.row-fluid .thumbnails{margin-left:0}.thumbnails>li{float:left;margin-bottom:20px;margin-left:20px}.thumbnail{display:block;padding:4px;line-height:20px;border:1px solid #ddd;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;-webkit-box-shadow:0 1px 3px rgba(0,0,0,0.055);-moz-box-shadow:0 1px 3px rgba(0,0,0,0.055);box-shadow:0 1px 3px rgba(0,0,0,0.055);-webkit-transition:all .2s ease-in-out;-moz-transition:all .2s ease-in-out;-o-transition:all .2s ease-in-out;transition:all .2s ease-in-out}a.thumbnail:hover{border-color:#08c;-webkit-box-shadow:0 1px 4px rgba(0,105,214,0.25);-moz-box-shadow:0 1px 4px rgba(0,105,214,0.25);box-shadow:0 1px 4px rgba(0,105,214,0.25)}.thumbnail>img{display:block;max-width:100%;margin-right:auto;margin-left:auto}.thumbnail .caption{padding:9px;color:#555}.media,.media-body{overflow:hidden;*overflow:visible;zoom:1}.media,.media .media{margin-top:15px}.media:first-child{margin-top:0}.media-object{display:block}.media-heading{margin:0 0 5px}.media .pull-left{margin-right:10px}.media .pull-right{margin-left:10px}.media-list{margin-left:0;list-style:none}.label,.badge{display:inline-block;padding:2px 4px;font-size:11.844px;font-weight:bold;line-height:14px;color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,0.25);white-space:nowrap;vertical-align:baseline;background-color:#999}.label{-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px}.badge{padding-right:9px;padding-left:9px;-webkit-border-radius:9px;-moz-border-radius:9px;border-radius:9px}.label:empty,.badge:empty{display:none}a.label:hover,a.badge:hover{color:#fff;text-decoration:none;cursor:pointer}.label-important,.badge-important{background-color:#b94a48}.label-important[href],.badge-important[href]{background-color:#953b39}.label-warning,.badge-warning{background-color:#f89406}.label-warning[href],.badge-warning[href]{background-color:#c67605}.label-success,.badge-success{background-color:#468847}.label-success[href],.badge-success[href]{background-color:#356635}.label-info,.badge-info{background-color:#3a87ad}.label-info[href],.badge-info[href]{background-color:#2d6987}.label-inverse,.badge-inverse{background-color:#333}.label-inverse[href],.badge-inverse[href]{background-color:#1a1a1a}.btn .label,.btn .badge{position:relative;top:-1px}.btn-mini .label,.btn-mini .badge{top:0}@-webkit-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@-moz-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@-ms-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@-o-keyframes progress-bar-stripes{from{background-position:0 0}to{background-position:40px 0}}@keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}.progress{height:20px;margin-bottom:20px;overflow:hidden;background-color:#f7f7f7;background-image:-moz-linear-gradient(top,#f5f5f5,#f9f9f9);background-image:-webkit-gradient(linear,0 0,0 100%,from(#f5f5f5),to(#f9f9f9));background-image:-webkit-linear-gradient(top,#f5f5f5,#f9f9f9);background-image:-o-linear-gradient(top,#f5f5f5,#f9f9f9);background-image:linear-gradient(to bottom,#f5f5f5,#f9f9f9);background-repeat:repeat-x;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5',endColorstr='#fff9f9f9',GradientType=0);-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,0.1);-moz-box-shadow:inset 0 1px 2px rgba(0,0,0,0.1);box-shadow:inset 0 1px 2px rgba(0,0,0,0.1)}.progress .bar{float:left;width:0;height:100%;font-size:12px;color:#fff;text-align:center;text-shadow:0 -1px 0 rgba(0,0,0,0.25);background-color:#0e90d2;background-image:-moz-linear-gradient(top,#149bdf,#0480be);background-image:-webkit-gradient(linear,0 0,0 100%,from(#149bdf),to(#0480be));background-image:-webkit-linear-gradient(top,#149bdf,#0480be);background-image:-o-linear-gradient(top,#149bdf,#0480be);background-image:linear-gradient(to bottom,#149bdf,#0480be);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff149bdf',endColorstr='#ff0480be',GradientType=0);-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,0.15);-moz-box-shadow:inset 0 -1px 0 rgba(0,0,0,0.15);box-shadow:inset 0 -1px 0 rgba(0,0,0,0.15);-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;-webkit-transition:width .6s ease;-moz-transition:width .6s ease;-o-transition:width .6s ease;transition:width .6s ease}.progress .bar+.bar{-webkit-box-shadow:inset 1px 0 0 rgba(0,0,0,0.15),inset 0 -1px 0 rgba(0,0,0,0.15);-moz-box-shadow:inset 1px 0 0 rgba(0,0,0,0.15),inset 0 -1px 0 rgba(0,0,0,0.15);box-shadow:inset 1px 0 0 rgba(0,0,0,0.15),inset 0 -1px 0 rgba(0,0,0,0.15)}.progress-striped .bar{background-color:#149bdf;background-image:-webkit-gradient(linear,0 100%,100% 0,color-stop(0.25,rgba(255,255,255,0.15)),color-stop(0.25,transparent),color-stop(0.5,transparent),color-stop(0.5,rgba(255,255,255,0.15)),color-stop(0.75,rgba(255,255,255,0.15)),color-stop(0.75,transparent),to(transparent));background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-moz-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);-webkit-background-size:40px 40px;-moz-background-size:40px 40px;-o-background-size:40px 40px;background-size:40px 40px}.progress.active .bar{-webkit-animation:progress-bar-stripes 2s linear infinite;-moz-animation:progress-bar-stripes 2s linear infinite;-ms-animation:progress-bar-stripes 2s linear infinite;-o-animation:progress-bar-stripes 2s linear infinite;animation:progress-bar-stripes 2s linear infinite}.progress-danger .bar,.progress .bar-danger{background-color:#dd514c;background-image:-moz-linear-gradient(top,#ee5f5b,#c43c35);background-image:-webkit-gradient(linear,0 0,0 100%,from(#ee5f5b),to(#c43c35));background-image:-webkit-linear-gradient(top,#ee5f5b,#c43c35);background-image:-o-linear-gradient(top,#ee5f5b,#c43c35);background-image:linear-gradient(to bottom,#ee5f5b,#c43c35);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffee5f5b',endColorstr='#ffc43c35',GradientType=0)}.progress-danger.progress-striped .bar,.progress-striped .bar-danger{background-color:#ee5f5b;background-image:-webkit-gradient(linear,0 100%,100% 0,color-stop(0.25,rgba(255,255,255,0.15)),color-stop(0.25,transparent),color-stop(0.5,transparent),color-stop(0.5,rgba(255,255,255,0.15)),color-stop(0.75,rgba(255,255,255,0.15)),color-stop(0.75,transparent),to(transparent));background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-moz-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent)}.progress-success .bar,.progress .bar-success{background-color:#5eb95e;background-image:-moz-linear-gradient(top,#62c462,#57a957);background-image:-webkit-gradient(linear,0 0,0 100%,from(#62c462),to(#57a957));background-image:-webkit-linear-gradient(top,#62c462,#57a957);background-image:-o-linear-gradient(top,#62c462,#57a957);background-image:linear-gradient(to bottom,#62c462,#57a957);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff62c462',endColorstr='#ff57a957',GradientType=0)}.progress-success.progress-striped .bar,.progress-striped .bar-success{background-color:#62c462;background-image:-webkit-gradient(linear,0 100%,100% 0,color-stop(0.25,rgba(255,255,255,0.15)),color-stop(0.25,transparent),color-stop(0.5,transparent),color-stop(0.5,rgba(255,255,255,0.15)),color-stop(0.75,rgba(255,255,255,0.15)),color-stop(0.75,transparent),to(transparent));background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-moz-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent)}.progress-info .bar,.progress .bar-info{background-color:#4bb1cf;background-image:-moz-linear-gradient(top,#5bc0de,#339bb9);background-image:-webkit-gradient(linear,0 0,0 100%,from(#5bc0de),to(#339bb9));background-image:-webkit-linear-gradient(top,#5bc0de,#339bb9);background-image:-o-linear-gradient(top,#5bc0de,#339bb9);background-image:linear-gradient(to bottom,#5bc0de,#339bb9);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de',endColorstr='#ff339bb9',GradientType=0)}.progress-info.progress-striped .bar,.progress-striped .bar-info{background-color:#5bc0de;background-image:-webkit-gradient(linear,0 100%,100% 0,color-stop(0.25,rgba(255,255,255,0.15)),color-stop(0.25,transparent),color-stop(0.5,transparent),color-stop(0.5,rgba(255,255,255,0.15)),color-stop(0.75,rgba(255,255,255,0.15)),color-stop(0.75,transparent),to(transparent));background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-moz-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent)}.progress-warning .bar,.progress .bar-warning{background-color:#faa732;background-image:-moz-linear-gradient(top,#fbb450,#f89406);background-image:-webkit-gradient(linear,0 0,0 100%,from(#fbb450),to(#f89406));background-image:-webkit-linear-gradient(top,#fbb450,#f89406);background-image:-o-linear-gradient(top,#fbb450,#f89406);background-image:linear-gradient(to bottom,#fbb450,#f89406);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffbb450',endColorstr='#fff89406',GradientType=0)}.progress-warning.progress-striped .bar,.progress-striped .bar-warning{background-color:#fbb450;background-image:-webkit-gradient(linear,0 100%,100% 0,color-stop(0.25,rgba(255,255,255,0.15)),color-stop(0.25,transparent),color-stop(0.5,transparent),color-stop(0.5,rgba(255,255,255,0.15)),color-stop(0.75,rgba(255,255,255,0.15)),color-stop(0.75,transparent),to(transparent));background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-moz-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,0.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,0.15) 50%,rgba(255,255,255,0.15) 75%,transparent 75%,transparent)}.accordion{margin-bottom:20px}.accordion-group{margin-bottom:2px;border:1px solid #e5e5e5;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}.accordion-heading{border-bottom:0}.accordion-heading .accordion-toggle{display:block;padding:8px 15px}.accordion-toggle{cursor:pointer}.accordion-inner{padding:9px 15px;border-top:1px solid #e5e5e5}.carousel{position:relative;margin-bottom:20px;line-height:1}.carousel-inner{position:relative;width:100%;overflow:hidden}.carousel-inner>.item{position:relative;display:none;-webkit-transition:.6s ease-in-out left;-moz-transition:.6s ease-in-out left;-o-transition:.6s ease-in-out left;transition:.6s ease-in-out left}.carousel-inner>.item>img{display:block;line-height:1}.carousel-inner>.active,.carousel-inner>.next,.carousel-inner>.prev{display:block}.carousel-inner>.active{left:0}.carousel-inner>.next,.carousel-inner>.prev{position:absolute;top:0;width:100%}.carousel-inner>.next{left:100%}.carousel-inner>.prev{left:-100%}.carousel-inner>.next.left,.carousel-inner>.prev.right{left:0}.carousel-inner>.active.left{left:-100%}.carousel-inner>.active.right{left:100%}.carousel-control{position:absolute;top:40%;left:15px;width:40px;height:40px;margin-top:-20px;font-size:60px;font-weight:100;line-height:30px;color:#fff;text-align:center;background:#222;border:3px solid #fff;-webkit-border-radius:23px;-moz-border-radius:23px;border-radius:23px;opacity:.5;filter:alpha(opacity=50)}.carousel-control.right{right:15px;left:auto}.carousel-control:hover{color:#fff;text-decoration:none;opacity:.9;filter:alpha(opacity=90)}.carousel-caption{position:absolute;right:0;bottom:0;left:0;padding:15px;background:#333;background:rgba(0,0,0,0.75)}.carousel-caption h4,.carousel-caption p{line-height:20px;color:#fff}.carousel-caption h4{margin:0 0 5px}.carousel-caption p{margin-bottom:0}.hero-unit{padding:60px;margin-bottom:30px;font-size:18px;font-weight:200;line-height:30px;color:inherit;background-color:#eee;-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px}.hero-unit h1{margin-bottom:0;font-size:60px;line-height:1;letter-spacing:-1px;color:inherit}.hero-unit li{line-height:30px}.pull-right{float:right}.pull-left{float:left}.hide{display:none}.show{display:block}.invisible{visibility:hidden}.affix{position:fixed} diff --git a/build.docset/Contents/Resources/Documents/_static/bootstrap/img/glyphicons-halflings-white.png b/build.docset/Contents/Resources/Documents/_static/bootstrap/img/glyphicons-halflings-white.png new file mode 100644 index 0000000000000000000000000000000000000000..3bf6484a29d8da269f9bc874b25493a45fae3bae GIT binary patch literal 8777 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 B7G?kd literal 0 HcmV?d00001 diff --git a/build.docset/Contents/Resources/Documents/_static/bootstrap/img/glyphicons-halflings.png b/build.docset/Contents/Resources/Documents/_static/bootstrap/img/glyphicons-halflings.png new file mode 100644 index 0000000000000000000000000000000000000000..a9969993201f9cee63cf9f49217646347297b643 GIT binary patch literal 12799 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 literal 0 HcmV?d00001 diff --git a/build.docset/Contents/Resources/Documents/_static/bootstrap/js/bootstrap.js b/build.docset/Contents/Resources/Documents/_static/bootstrap/js/bootstrap.js new file mode 100644 index 0000000..6c15a58 --- /dev/null +++ b/build.docset/Contents/Resources/Documents/_static/bootstrap/js/bootstrap.js @@ -0,0 +1,2159 @@ +/* =================================================== + * bootstrap-transition.js v2.2.2 + * http://twitter.github.com/bootstrap/javascript.html#transitions + * =================================================== + * Copyright 2012 Twitter, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ========================================================== */ + + +!function ($) { + + "use strict"; // jshint ;_; + + + /* CSS TRANSITION SUPPORT (http://www.modernizr.com/) + * ======================================================= */ + + $(function () { + + $.support.transition = (function () { + + var transitionEnd = (function () { + + var el = document.createElement('bootstrap') + , transEndEventNames = { + 'WebkitTransition' : 'webkitTransitionEnd' + , 'MozTransition' : 'transitionend' + , 'OTransition' : 'oTransitionEnd otransitionend' + , 'transition' : 'transitionend' + } + , name + + for (name in transEndEventNames){ + if (el.style[name] !== undefined) { + return transEndEventNames[name] + } + } + + }()) + + return transitionEnd && { + end: transitionEnd + } + + })() + + }) + +}(window.jQuery);/* ========================================================== + * bootstrap-alert.js v2.2.2 + * http://twitter.github.com/bootstrap/javascript.html#alerts + * ========================================================== + * Copyright 2012 Twitter, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ========================================================== */ + + +!function ($) { + + "use strict"; // jshint ;_; + + + /* ALERT CLASS DEFINITION + * ====================== */ + + var dismiss = '[data-dismiss="alert"]' + , Alert = function (el) { + $(el).on('click', dismiss, this.close) + } + + Alert.prototype.close = function (e) { + var $this = $(this) + , selector = $this.attr('data-target') + , $parent + + if (!selector) { + selector = $this.attr('href') + selector = selector && selector.replace(/.*(?=#[^\s]*$)/, '') //strip for ie7 + } + + $parent = $(selector) + + e && e.preventDefault() + + $parent.length || ($parent = $this.hasClass('alert') ? $this : $this.parent()) + + $parent.trigger(e = $.Event('close')) + + if (e.isDefaultPrevented()) return + + $parent.removeClass('in') + + function removeElement() { + $parent + .trigger('closed') + .remove() + } + + $.support.transition && $parent.hasClass('fade') ? + $parent.on($.support.transition.end, removeElement) : + removeElement() + } + + + /* ALERT PLUGIN DEFINITION + * ======================= */ + + var old = $.fn.alert + + $.fn.alert = function (option) { + return this.each(function () { + var $this = $(this) + , data = $this.data('alert') + if (!data) $this.data('alert', (data = new Alert(this))) + if (typeof option == 'string') data[option].call($this) + }) + } + + $.fn.alert.Constructor = Alert + + + /* ALERT NO CONFLICT + * ================= */ + + $.fn.alert.noConflict = function () { + $.fn.alert = old + return this + } + + + /* ALERT DATA-API + * ============== */ + + $(document).on('click.alert.data-api', dismiss, Alert.prototype.close) + +}(window.jQuery);/* ============================================================ + * bootstrap-button.js v2.2.2 + * http://twitter.github.com/bootstrap/javascript.html#buttons + * ============================================================ + * Copyright 2012 Twitter, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================ */ + + +!function ($) { + + "use strict"; // jshint ;_; + + + /* BUTTON PUBLIC CLASS DEFINITION + * ============================== */ + + var Button = function (element, options) { + this.$element = $(element) + this.options = $.extend({}, $.fn.button.defaults, options) + } + + Button.prototype.setState = function (state) { + var d = 'disabled' + , $el = this.$element + , data = $el.data() + , val = $el.is('input') ? 'val' : 'html' + + state = state + 'Text' + data.resetText || $el.data('resetText', $el[val]()) + + $el[val](data[state] || this.options[state]) + + // push to event loop to allow forms to submit + setTimeout(function () { + state == 'loadingText' ? + $el.addClass(d).attr(d, d) : + $el.removeClass(d).removeAttr(d) + }, 0) + } + + Button.prototype.toggle = function () { + var $parent = this.$element.closest('[data-toggle="buttons-radio"]') + + $parent && $parent + .find('.active') + .removeClass('active') + + this.$element.toggleClass('active') + } + + + /* BUTTON PLUGIN DEFINITION + * ======================== */ + + var old = $.fn.button + + $.fn.button = function (option) { + return this.each(function () { + var $this = $(this) + , data = $this.data('button') + , options = typeof option == 'object' && option + if (!data) $this.data('button', (data = new Button(this, options))) + if (option == 'toggle') data.toggle() + else if (option) data.setState(option) + }) + } + + $.fn.button.defaults = { + loadingText: 'loading...' + } + + $.fn.button.Constructor = Button + + + /* BUTTON NO CONFLICT + * ================== */ + + $.fn.button.noConflict = function () { + $.fn.button = old + return this + } + + + /* BUTTON DATA-API + * =============== */ + + $(document).on('click.button.data-api', '[data-toggle^=button]', function (e) { + var $btn = $(e.target) + if (!$btn.hasClass('btn')) $btn = $btn.closest('.btn') + $btn.button('toggle') + }) + +}(window.jQuery);/* ========================================================== + * bootstrap-carousel.js v2.2.2 + * http://twitter.github.com/bootstrap/javascript.html#carousel + * ========================================================== + * Copyright 2012 Twitter, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ========================================================== */ + + +!function ($) { + + "use strict"; // jshint ;_; + + + /* CAROUSEL CLASS DEFINITION + * ========================= */ + + var Carousel = function (element, options) { + this.$element = $(element) + this.options = options + this.options.pause == 'hover' && this.$element + .on('mouseenter', $.proxy(this.pause, this)) + .on('mouseleave', $.proxy(this.cycle, this)) + } + + Carousel.prototype = { + + cycle: function (e) { + if (!e) this.paused = false + this.options.interval + && !this.paused + && (this.interval = setInterval($.proxy(this.next, this), this.options.interval)) + return this + } + + , to: function (pos) { + var $active = this.$element.find('.item.active') + , children = $active.parent().children() + , activePos = children.index($active) + , that = this + + if (pos > (children.length - 1) || pos < 0) return + + if (this.sliding) { + return this.$element.one('slid', function () { + that.to(pos) + }) + } + + if (activePos == pos) { + return this.pause().cycle() + } + + return this.slide(pos > activePos ? 'next' : 'prev', $(children[pos])) + } + + , pause: function (e) { + if (!e) this.paused = true + if (this.$element.find('.next, .prev').length && $.support.transition.end) { + this.$element.trigger($.support.transition.end) + this.cycle() + } + clearInterval(this.interval) + this.interval = null + return this + } + + , next: function () { + if (this.sliding) return + return this.slide('next') + } + + , prev: function () { + if (this.sliding) return + return this.slide('prev') + } + + , slide: function (type, next) { + var $active = this.$element.find('.item.active') + , $next = next || $active[type]() + , isCycling = this.interval + , direction = type == 'next' ? 'left' : 'right' + , fallback = type == 'next' ? 'first' : 'last' + , that = this + , e + + this.sliding = true + + isCycling && this.pause() + + $next = $next.length ? $next : this.$element.find('.item')[fallback]() + + e = $.Event('slide', { + relatedTarget: $next[0] + }) + + if ($next.hasClass('active')) return + + if ($.support.transition && this.$element.hasClass('slide')) { + this.$element.trigger(e) + if (e.isDefaultPrevented()) return + $next.addClass(type) + $next[0].offsetWidth // force reflow + $active.addClass(direction) + $next.addClass(direction) + this.$element.one($.support.transition.end, function () { + $next.removeClass([type, direction].join(' ')).addClass('active') + $active.removeClass(['active', direction].join(' ')) + that.sliding = false + setTimeout(function () { that.$element.trigger('slid') }, 0) + }) + } else { + this.$element.trigger(e) + if (e.isDefaultPrevented()) return + $active.removeClass('active') + $next.addClass('active') + this.sliding = false + this.$element.trigger('slid') + } + + isCycling && this.cycle() + + return this + } + + } + + + /* CAROUSEL PLUGIN DEFINITION + * ========================== */ + + var old = $.fn.carousel + + $.fn.carousel = function (option) { + return this.each(function () { + var $this = $(this) + , data = $this.data('carousel') + , options = $.extend({}, $.fn.carousel.defaults, typeof option == 'object' && option) + , action = typeof option == 'string' ? option : options.slide + if (!data) $this.data('carousel', (data = new Carousel(this, options))) + if (typeof option == 'number') data.to(option) + else if (action) data[action]() + else if (options.interval) data.cycle() + }) + } + + $.fn.carousel.defaults = { + interval: 5000 + , pause: 'hover' + } + + $.fn.carousel.Constructor = Carousel + + + /* CAROUSEL NO CONFLICT + * ==================== */ + + $.fn.carousel.noConflict = function () { + $.fn.carousel = old + return this + } + + /* CAROUSEL DATA-API + * ================= */ + + $(document).on('click.carousel.data-api', '[data-slide]', function (e) { + var $this = $(this), href + , $target = $($this.attr('data-target') || (href = $this.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '')) //strip for ie7 + , options = $.extend({}, $target.data(), $this.data()) + $target.carousel(options) + e.preventDefault() + }) + +}(window.jQuery);/* ============================================================= + * bootstrap-collapse.js v2.2.2 + * http://twitter.github.com/bootstrap/javascript.html#collapse + * ============================================================= + * Copyright 2012 Twitter, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================ */ + + +!function ($) { + + "use strict"; // jshint ;_; + + + /* COLLAPSE PUBLIC CLASS DEFINITION + * ================================ */ + + var Collapse = function (element, options) { + this.$element = $(element) + this.options = $.extend({}, $.fn.collapse.defaults, options) + + if (this.options.parent) { + this.$parent = $(this.options.parent) + } + + this.options.toggle && this.toggle() + } + + Collapse.prototype = { + + constructor: Collapse + + , dimension: function () { + var hasWidth = this.$element.hasClass('width') + return hasWidth ? 'width' : 'height' + } + + , show: function () { + var dimension + , scroll + , actives + , hasData + + if (this.transitioning) return + + dimension = this.dimension() + scroll = $.camelCase(['scroll', dimension].join('-')) + actives = this.$parent && this.$parent.find('> .accordion-group > .in') + + if (actives && actives.length) { + hasData = actives.data('collapse') + if (hasData && hasData.transitioning) return + actives.collapse('hide') + hasData || actives.data('collapse', null) + } + + this.$element[dimension](0) + this.transition('addClass', $.Event('show'), 'shown') + $.support.transition && this.$element[dimension](this.$element[0][scroll]) + } + + , hide: function () { + var dimension + if (this.transitioning) return + dimension = this.dimension() + this.reset(this.$element[dimension]()) + this.transition('removeClass', $.Event('hide'), 'hidden') + this.$element[dimension](0) + } + + , reset: function (size) { + var dimension = this.dimension() + + this.$element + .removeClass('collapse') + [dimension](size || 'auto') + [0].offsetWidth + + this.$element[size !== null ? 'addClass' : 'removeClass']('collapse') + + return this + } + + , transition: function (method, startEvent, completeEvent) { + var that = this + , complete = function () { + if (startEvent.type == 'show') that.reset() + that.transitioning = 0 + that.$element.trigger(completeEvent) + } + + this.$element.trigger(startEvent) + + if (startEvent.isDefaultPrevented()) return + + this.transitioning = 1 + + this.$element[method]('in') + + $.support.transition && this.$element.hasClass('collapse') ? + this.$element.one($.support.transition.end, complete) : + complete() + } + + , toggle: function () { + this[this.$element.hasClass('in') ? 'hide' : 'show']() + } + + } + + + /* COLLAPSE PLUGIN DEFINITION + * ========================== */ + + var old = $.fn.collapse + + $.fn.collapse = function (option) { + return this.each(function () { + var $this = $(this) + , data = $this.data('collapse') + , options = typeof option == 'object' && option + if (!data) $this.data('collapse', (data = new Collapse(this, options))) + if (typeof option == 'string') data[option]() + }) + } + + $.fn.collapse.defaults = { + toggle: true + } + + $.fn.collapse.Constructor = Collapse + + + /* COLLAPSE NO CONFLICT + * ==================== */ + + $.fn.collapse.noConflict = function () { + $.fn.collapse = old + return this + } + + + /* COLLAPSE DATA-API + * ================= */ + + $(document).on('click.collapse.data-api', '[data-toggle=collapse]', function (e) { + var $this = $(this), href + , target = $this.attr('data-target') + || e.preventDefault() + || (href = $this.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '') //strip for ie7 + , option = $(target).data('collapse') ? 'toggle' : $this.data() + $this[$(target).hasClass('in') ? 'addClass' : 'removeClass']('collapsed') + $(target).collapse(option) + }) + +}(window.jQuery);/* ============================================================ + * bootstrap-dropdown.js v2.2.2 + * http://twitter.github.com/bootstrap/javascript.html#dropdowns + * ============================================================ + * Copyright 2012 Twitter, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================ */ + + +!function ($) { + + "use strict"; // jshint ;_; + + + /* DROPDOWN CLASS DEFINITION + * ========================= */ + + var toggle = '[data-toggle=dropdown]' + , Dropdown = function (element) { + var $el = $(element).on('click.dropdown.data-api', this.toggle) + $('html').on('click.dropdown.data-api', function () { + $el.parent().removeClass('open') + }) + } + + Dropdown.prototype = { + + constructor: Dropdown + + , toggle: function (e) { + var $this = $(this) + , $parent + , isActive + + if ($this.is('.disabled, :disabled')) return + + $parent = getParent($this) + + isActive = $parent.hasClass('open') + + clearMenus() + + if (!isActive) { + $parent.toggleClass('open') + } + + $this.focus() + + return false + } + + , keydown: function (e) { + var $this + , $items + , $active + , $parent + , isActive + , index + + if (!/(38|40|27)/.test(e.keyCode)) return + + $this = $(this) + + e.preventDefault() + e.stopPropagation() + + if ($this.is('.disabled, :disabled')) return + + $parent = getParent($this) + + isActive = $parent.hasClass('open') + + if (!isActive || (isActive && e.keyCode == 27)) return $this.click() + + $items = $('[role=menu] li:not(.divider):visible a', $parent) + + if (!$items.length) return + + index = $items.index($items.filter(':focus')) + + if (e.keyCode == 38 && index > 0) index-- // up + if (e.keyCode == 40 && index < $items.length - 1) index++ // down + if (!~index) index = 0 + + $items + .eq(index) + .focus() + } + + } + + function clearMenus() { + $(toggle).each(function () { + getParent($(this)).removeClass('open') + }) + } + + function getParent($this) { + var selector = $this.attr('data-target') + , $parent + + if (!selector) { + selector = $this.attr('href') + selector = selector && /#/.test(selector) && selector.replace(/.*(?=#[^\s]*$)/, '') //strip for ie7 + } + + $parent = $(selector) + $parent.length || ($parent = $this.parent()) + + return $parent + } + + + /* DROPDOWN PLUGIN DEFINITION + * ========================== */ + + var old = $.fn.dropdown + + $.fn.dropdown = function (option) { + return this.each(function () { + var $this = $(this) + , data = $this.data('dropdown') + if (!data) $this.data('dropdown', (data = new Dropdown(this))) + if (typeof option == 'string') data[option].call($this) + }) + } + + $.fn.dropdown.Constructor = Dropdown + + + /* DROPDOWN NO CONFLICT + * ==================== */ + + $.fn.dropdown.noConflict = function () { + $.fn.dropdown = old + return this + } + + + /* APPLY TO STANDARD DROPDOWN ELEMENTS + * =================================== */ + + $(document) + .on('click.dropdown.data-api touchstart.dropdown.data-api', clearMenus) + .on('click.dropdown touchstart.dropdown.data-api', '.dropdown form', function (e) { e.stopPropagation() }) + .on('touchstart.dropdown.data-api', '.dropdown-menu', function (e) { e.stopPropagation() }) + .on('click.dropdown.data-api touchstart.dropdown.data-api' , toggle, Dropdown.prototype.toggle) + .on('keydown.dropdown.data-api touchstart.dropdown.data-api', toggle + ', [role=menu]' , Dropdown.prototype.keydown) + +}(window.jQuery);/* ========================================================= + * bootstrap-modal.js v2.2.2 + * http://twitter.github.com/bootstrap/javascript.html#modals + * ========================================================= + * Copyright 2012 Twitter, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ========================================================= */ + + +!function ($) { + + "use strict"; // jshint ;_; + + + /* MODAL CLASS DEFINITION + * ====================== */ + + var Modal = function (element, options) { + this.options = options + this.$element = $(element) + .delegate('[data-dismiss="modal"]', 'click.dismiss.modal', $.proxy(this.hide, this)) + this.options.remote && this.$element.find('.modal-body').load(this.options.remote) + } + + Modal.prototype = { + + constructor: Modal + + , toggle: function () { + return this[!this.isShown ? 'show' : 'hide']() + } + + , show: function () { + var that = this + , e = $.Event('show') + + this.$element.trigger(e) + + if (this.isShown || e.isDefaultPrevented()) return + + this.isShown = true + + this.escape() + + this.backdrop(function () { + var transition = $.support.transition && that.$element.hasClass('fade') + + if (!that.$element.parent().length) { + that.$element.appendTo(document.body) //don't move modals dom position + } + + that.$element + .show() + + if (transition) { + that.$element[0].offsetWidth // force reflow + } + + that.$element + .addClass('in') + .attr('aria-hidden', false) + + that.enforceFocus() + + transition ? + that.$element.one($.support.transition.end, function () { that.$element.focus().trigger('shown') }) : + that.$element.focus().trigger('shown') + + }) + } + + , hide: function (e) { + e && e.preventDefault() + + var that = this + + e = $.Event('hide') + + this.$element.trigger(e) + + if (!this.isShown || e.isDefaultPrevented()) return + + this.isShown = false + + this.escape() + + $(document).off('focusin.modal') + + this.$element + .removeClass('in') + .attr('aria-hidden', true) + + $.support.transition && this.$element.hasClass('fade') ? + this.hideWithTransition() : + this.hideModal() + } + + , enforceFocus: function () { + var that = this + $(document).on('focusin.modal', function (e) { + if (that.$element[0] !== e.target && !that.$element.has(e.target).length) { + that.$element.focus() + } + }) + } + + , escape: function () { + var that = this + if (this.isShown && this.options.keyboard) { + this.$element.on('keyup.dismiss.modal', function ( e ) { + e.which == 27 && that.hide() + }) + } else if (!this.isShown) { + this.$element.off('keyup.dismiss.modal') + } + } + + , hideWithTransition: function () { + var that = this + , timeout = setTimeout(function () { + that.$element.off($.support.transition.end) + that.hideModal() + }, 500) + + this.$element.one($.support.transition.end, function () { + clearTimeout(timeout) + that.hideModal() + }) + } + + , hideModal: function (that) { + this.$element + .hide() + .trigger('hidden') + + this.backdrop() + } + + , removeBackdrop: function () { + this.$backdrop.remove() + this.$backdrop = null + } + + , backdrop: function (callback) { + var that = this + , animate = this.$element.hasClass('fade') ? 'fade' : '' + + if (this.isShown && this.options.backdrop) { + var doAnimate = $.support.transition && animate + + this.$backdrop = $('