Page MenuHomestyx hydra

No OneTemporary

diff --git a/conf/__init_conf__.php b/conf/__init_conf__.php
index 3dd66b2ddd..18c132c6d4 100644
--- a/conf/__init_conf__.php
+++ b/conf/__init_conf__.php
@@ -1,69 +1,68 @@
<?php
function phabricator_read_config_file($original_config) {
$root = dirname(dirname(__FILE__));
// Accept either "myconfig" (preferred) or "myconfig.conf.php".
$config = preg_replace('/\.conf\.php$/', '', $original_config);
$full_config_path = $root.'/conf/'.$config.'.conf.php';
if (!Filesystem::pathExists($full_config_path)) {
// These are very old configuration files which we used to ship with
// by default. File based configuration was de-emphasized once web-based
// configuration was built. The actual files were removed to reduce
// user confusion over how to configure Phabricator.
switch ($config) {
case 'default':
case 'production':
return array();
case 'development':
return array(
'phabricator.developer-mode' => true,
'darkconsole.enabled' => true,
- 'celerity.minify' => false,
);
}
$files = id(new FileFinder($root.'/conf/'))
->withType('f')
->withSuffix('conf.php')
->withFollowSymlinks(true)
->find();
foreach ($files as $key => $file) {
$file = trim($file, './');
$files[$key] = preg_replace('/\.conf\.php$/', '', $file);
}
$files = ' '.implode("\n ", $files);
throw new Exception(
pht(
"CONFIGURATION ERROR\n".
"Config file '%s' does not exist. Valid config files are:\n\n%s",
$original_config,
$files));
}
// Make sure config file errors are reported.
$old_error_level = error_reporting(E_ALL | E_STRICT);
$old_display_errors = ini_get('display_errors');
ini_set('display_errors', 1);
ob_start();
$conf = include $full_config_path;
$errors = ob_get_clean();
error_reporting($old_error_level);
ini_set('display_errors', $old_display_errors);
if ($conf === false) {
throw new Exception(
pht(
"Failed to read config file '%s': %s",
$config,
$errors));
}
return $conf;
}
diff --git a/resources/celerity/map.php b/resources/celerity/map.php
index cbe14c82a7..316357bb7a 100644
--- a/resources/celerity/map.php
+++ b/resources/celerity/map.php
@@ -1,2356 +1,2356 @@
<?php
/**
* This file is automatically generated. Use 'bin/celerity map' to rebuild it.
*
* @generated
*/
return array(
'names' => array(
- 'conpherence.pkg.css' => 'e68cf1fa',
- 'conpherence.pkg.js' => '15191c65',
- 'core.pkg.css' => '47535fd5',
- 'core.pkg.js' => 'bd89cb1d',
- 'differential.pkg.css' => '06dc617c',
- 'differential.pkg.js' => '853c3461',
- 'diffusion.pkg.css' => 'a2d17c7d',
- 'diffusion.pkg.js' => '6134c5a1',
- 'maniphest.pkg.css' => '4845691a',
- 'maniphest.pkg.js' => '4d7e79c8',
- 'rsrc/audio/basic/alert.mp3' => '98461568',
- 'rsrc/audio/basic/bing.mp3' => 'ab8603a5',
- 'rsrc/audio/basic/pock.mp3' => '0cc772f5',
- 'rsrc/audio/basic/tap.mp3' => 'fc2fd796',
- 'rsrc/audio/basic/ting.mp3' => '17660001',
- 'rsrc/css/aphront/aphront-bars.css' => '231ac33c',
- 'rsrc/css/aphront/dark-console.css' => '0e14e8f6',
- 'rsrc/css/aphront/dialog-view.css' => '6bfc244b',
- 'rsrc/css/aphront/list-filter-view.css' => '5d6f0526',
- 'rsrc/css/aphront/multi-column.css' => '84cc6640',
- 'rsrc/css/aphront/notification.css' => '457861ec',
- 'rsrc/css/aphront/panel-view.css' => '8427b78d',
- 'rsrc/css/aphront/phabricator-nav-view.css' => '694d7723',
- 'rsrc/css/aphront/table-view.css' => '8c9bbafe',
- 'rsrc/css/aphront/tokenizer.css' => '15d5ff71',
- 'rsrc/css/aphront/tooltip.css' => 'cb1397a4',
- 'rsrc/css/aphront/typeahead-browse.css' => 'f2818435',
- 'rsrc/css/aphront/typeahead.css' => 'a4a21016',
- 'rsrc/css/application/almanac/almanac.css' => 'dbb9b3af',
- 'rsrc/css/application/auth/auth.css' => '0877ed6e',
- 'rsrc/css/application/base/main-menu-view.css' => '1802a242',
- 'rsrc/css/application/base/notification-menu.css' => 'ef480927',
- 'rsrc/css/application/base/phui-theme.css' => '9f261c6b',
- 'rsrc/css/application/base/standard-page-view.css' => '34ee718b',
- 'rsrc/css/application/chatlog/chatlog.css' => 'd295b020',
- 'rsrc/css/application/conduit/conduit-api.css' => '7bc725c4',
- 'rsrc/css/application/config/config-options.css' => '4615667b',
- 'rsrc/css/application/config/config-template.css' => '8f18fa41',
- 'rsrc/css/application/config/setup-issue.css' => '30ee0173',
- 'rsrc/css/application/config/unhandled-exception.css' => '4c96257a',
- 'rsrc/css/application/conpherence/color.css' => 'abb4c358',
- 'rsrc/css/application/conpherence/durable-column.css' => '89ea6bef',
- 'rsrc/css/application/conpherence/header-pane.css' => 'cb6f4e19',
- 'rsrc/css/application/conpherence/menu.css' => '69368e97',
- 'rsrc/css/application/conpherence/message-pane.css' => 'b0f55ecc',
- 'rsrc/css/application/conpherence/notification.css' => 'cef0a3fc',
- 'rsrc/css/application/conpherence/participant-pane.css' => '26a3ce56',
- 'rsrc/css/application/conpherence/transaction.css' => '85129c68',
- 'rsrc/css/application/contentsource/content-source-view.css' => '4b8b05d4',
- 'rsrc/css/application/countdown/timer.css' => '16c52f5c',
- 'rsrc/css/application/daemon/bulk-job.css' => 'df9c1d4a',
- 'rsrc/css/application/dashboard/dashboard.css' => 'fe5b1869',
- 'rsrc/css/application/diff/inline-comment-summary.css' => 'f23d4e8f',
- 'rsrc/css/application/differential/add-comment.css' => 'c47f8c40',
- 'rsrc/css/application/differential/changeset-view.css' => 'db34a142',
- 'rsrc/css/application/differential/core.css' => '5b7b8ff4',
- 'rsrc/css/application/differential/phui-inline-comment.css' => '65ae3bc2',
- 'rsrc/css/application/differential/revision-comment.css' => '14b8565a',
- 'rsrc/css/application/differential/revision-history.css' => '0e8eb855',
- 'rsrc/css/application/differential/revision-list.css' => 'f3c47d33',
- 'rsrc/css/application/differential/table-of-contents.css' => 'ae4b7a55',
- 'rsrc/css/application/diffusion/diffusion-icons.css' => '0c15255e',
- 'rsrc/css/application/diffusion/diffusion-readme.css' => '419dd5b6',
- 'rsrc/css/application/diffusion/diffusion-repository.css' => 'ee6f20ec',
- 'rsrc/css/application/diffusion/diffusion.css' => '45727264',
- 'rsrc/css/application/feed/feed.css' => 'ecd4ec57',
- 'rsrc/css/application/files/global-drag-and-drop.css' => 'b556a948',
- 'rsrc/css/application/flag/flag.css' => 'bba8f811',
- 'rsrc/css/application/harbormaster/harbormaster.css' => '7446ce72',
- 'rsrc/css/application/herald/herald-test.css' => 'a52e323e',
- 'rsrc/css/application/herald/herald.css' => 'cd8d0134',
- 'rsrc/css/application/maniphest/report.css' => '9b9580b7',
- 'rsrc/css/application/maniphest/task-edit.css' => 'fda62a9b',
- 'rsrc/css/application/maniphest/task-summary.css' => '11cc5344',
- 'rsrc/css/application/objectselector/object-selector.css' => '85ee8ce6',
- 'rsrc/css/application/owners/owners-path-editor.css' => '9c136c29',
- 'rsrc/css/application/paste/paste.css' => '9fcc9773',
- 'rsrc/css/application/people/people-picture-menu-item.css' => 'a06f7f34',
- 'rsrc/css/application/people/people-profile.css' => '4df76faf',
- 'rsrc/css/application/phame/phame.css' => '8cb3afcd',
- 'rsrc/css/application/pholio/pholio-edit.css' => '07676f51',
- 'rsrc/css/application/pholio/pholio-inline-comments.css' => '8e545e49',
- 'rsrc/css/application/pholio/pholio.css' => 'ca89d380',
- 'rsrc/css/application/phortune/phortune-credit-card-form.css' => '8391eb02',
- 'rsrc/css/application/phortune/phortune-invoice.css' => '476055e2',
- 'rsrc/css/application/phortune/phortune.css' => '5b99dae0',
- 'rsrc/css/application/phrequent/phrequent.css' => 'ffc185ad',
- 'rsrc/css/application/phriction/phriction-document-css.css' => '4282e4ad',
- 'rsrc/css/application/policy/policy-edit.css' => '815c66f7',
- 'rsrc/css/application/policy/policy-transaction-detail.css' => '82100a43',
- 'rsrc/css/application/policy/policy.css' => '957ea14c',
- 'rsrc/css/application/ponder/ponder-view.css' => 'fbd45f96',
- 'rsrc/css/application/project/project-card-view.css' => '0010bb52',
- 'rsrc/css/application/project/project-view.css' => '792c9057',
- 'rsrc/css/application/releeph/releeph-core.css' => '9b3c5733',
- 'rsrc/css/application/releeph/releeph-preview-branch.css' => 'b7a6f4a5',
- 'rsrc/css/application/releeph/releeph-request-differential-create-dialog.css' => '8d8b92cd',
- 'rsrc/css/application/releeph/releeph-request-typeahead.css' => '667a48ae',
- 'rsrc/css/application/search/application-search-view.css' => '787f5b76',
- 'rsrc/css/application/search/search-results.css' => '505dd8cf',
- 'rsrc/css/application/slowvote/slowvote.css' => 'a94b7230',
- 'rsrc/css/application/tokens/tokens.css' => '3d0f239e',
- 'rsrc/css/application/uiexample/example.css' => '528b19de',
- 'rsrc/css/core/core.css' => '62fa3ace',
- 'rsrc/css/core/remarkup.css' => 'b182076e',
- 'rsrc/css/core/syntax.css' => 'e9c95dd4',
- 'rsrc/css/core/z-index.css' => '9d8f7c4b',
- 'rsrc/css/diviner/diviner-shared.css' => '896f1d43',
- 'rsrc/css/font/font-awesome.css' => 'e838e088',
- 'rsrc/css/font/font-lato.css' => 'c7ccd872',
- 'rsrc/css/font/phui-font-icon-base.css' => '870a7360',
- 'rsrc/css/layout/phabricator-filetree-view.css' => 'b912ad97',
- 'rsrc/css/layout/phabricator-source-code-view.css' => '2ab25dfa',
- 'rsrc/css/phui/button/phui-button-bar.css' => 'f1ff5494',
- 'rsrc/css/phui/button/phui-button-simple.css' => '8e1baf68',
- 'rsrc/css/phui/button/phui-button.css' => '6ccb303c',
- 'rsrc/css/phui/calendar/phui-calendar-day.css' => '572b1893',
- 'rsrc/css/phui/calendar/phui-calendar-list.css' => '576be600',
- 'rsrc/css/phui/calendar/phui-calendar-month.css' => '21154caf',
- 'rsrc/css/phui/calendar/phui-calendar.css' => 'f1ddf11c',
- 'rsrc/css/phui/object-item/phui-oi-big-ui.css' => '7a7c22af',
- 'rsrc/css/phui/object-item/phui-oi-color.css' => 'cd2b9b77',
- 'rsrc/css/phui/object-item/phui-oi-drag-ui.css' => '08f4ccc3',
- 'rsrc/css/phui/object-item/phui-oi-flush-ui.css' => '9d9685d6',
- 'rsrc/css/phui/object-item/phui-oi-list-view.css' => '7c5c1291',
- 'rsrc/css/phui/object-item/phui-oi-simple-ui.css' => 'a8beebea',
- 'rsrc/css/phui/phui-action-list.css' => '0bcd9a45',
- 'rsrc/css/phui/phui-action-panel.css' => 'b4798122',
- 'rsrc/css/phui/phui-badge.css' => '22c0cf4f',
- 'rsrc/css/phui/phui-basic-nav-view.css' => '98c11ab3',
- 'rsrc/css/phui/phui-big-info-view.css' => 'acc3492c',
- 'rsrc/css/phui/phui-box.css' => '4bd6cdb9',
- 'rsrc/css/phui/phui-bulk-editor.css' => '9a81e5d5',
- 'rsrc/css/phui/phui-chart.css' => '6bf6f78e',
- 'rsrc/css/phui/phui-cms.css' => '504b4b23',
- 'rsrc/css/phui/phui-comment-form.css' => 'ac68149f',
- 'rsrc/css/phui/phui-comment-panel.css' => 'f50152ad',
- 'rsrc/css/phui/phui-crumbs-view.css' => '10728aaa',
- 'rsrc/css/phui/phui-curtain-view.css' => '2bdaf026',
- 'rsrc/css/phui/phui-document-pro.css' => 'dd79b5df',
- 'rsrc/css/phui/phui-document-summary.css' => '9ca48bdf',
- 'rsrc/css/phui/phui-document.css' => 'c4ac41f9',
- 'rsrc/css/phui/phui-feed-story.css' => '44a9c8e9',
- 'rsrc/css/phui/phui-fontkit.css' => '1320ed01',
- 'rsrc/css/phui/phui-form-view.css' => 'b04e08d9',
- 'rsrc/css/phui/phui-form.css' => '7aaa04e3',
- 'rsrc/css/phui/phui-head-thing.css' => 'fd311e5f',
- 'rsrc/css/phui/phui-header-view.css' => '1ba8b707',
- 'rsrc/css/phui/phui-hovercard.css' => '4a484541',
- 'rsrc/css/phui/phui-icon-set-selector.css' => '87db8fee',
- 'rsrc/css/phui/phui-icon.css' => 'cf24ceec',
- 'rsrc/css/phui/phui-image-mask.css' => 'a8498f9c',
- 'rsrc/css/phui/phui-info-view.css' => 'e929f98c',
- 'rsrc/css/phui/phui-invisible-character-view.css' => '6993d9f0',
- 'rsrc/css/phui/phui-left-right.css' => '75227a4d',
- 'rsrc/css/phui/phui-lightbox.css' => '0a035e40',
- 'rsrc/css/phui/phui-list.css' => '38f8c9bd',
- 'rsrc/css/phui/phui-object-box.css' => '9cff003c',
- 'rsrc/css/phui/phui-pager.css' => 'edcbc226',
- 'rsrc/css/phui/phui-pinboard-view.css' => '2495140e',
- 'rsrc/css/phui/phui-property-list-view.css' => '546a04ae',
- 'rsrc/css/phui/phui-remarkup-preview.css' => '54a34863',
- 'rsrc/css/phui/phui-segment-bar-view.css' => 'b1d1b892',
- 'rsrc/css/phui/phui-spacing.css' => '042804d6',
- 'rsrc/css/phui/phui-status.css' => 'd5263e49',
- 'rsrc/css/phui/phui-tag-view.css' => 'b4719c50',
- 'rsrc/css/phui/phui-timeline-view.css' => '6ddf8126',
- 'rsrc/css/phui/phui-two-column-view.css' => '44ec4951',
- 'rsrc/css/phui/workboards/phui-workboard-color.css' => '783cdff5',
- 'rsrc/css/phui/workboards/phui-workboard.css' => '3bc85455',
- 'rsrc/css/phui/workboards/phui-workcard.css' => 'cca5fa92',
- 'rsrc/css/phui/workboards/phui-workpanel.css' => 'a3a63478',
- 'rsrc/css/sprite-login.css' => '396f3c3a',
- 'rsrc/css/sprite-tokens.css' => '9cdfd599',
- 'rsrc/css/syntax/syntax-default.css' => '9923583c',
- 'rsrc/externals/d3/d3.min.js' => 'a11a5ff2',
- 'rsrc/externals/font/fontawesome/fontawesome-webfont.eot' => '24a7064f',
- 'rsrc/externals/font/fontawesome/fontawesome-webfont.ttf' => '0039fe26',
- 'rsrc/externals/font/fontawesome/fontawesome-webfont.woff' => 'de978a43',
- 'rsrc/externals/font/fontawesome/fontawesome-webfont.woff2' => '2a832057',
- 'rsrc/externals/font/lato/lato-bold.eot' => '99fbcf8c',
- 'rsrc/externals/font/lato/lato-bold.svg' => '2aa83045',
- 'rsrc/externals/font/lato/lato-bold.ttf' => '0a7141f7',
- 'rsrc/externals/font/lato/lato-bold.woff' => 'f5db2061',
- 'rsrc/externals/font/lato/lato-bold.woff2' => '37a94ecd',
- 'rsrc/externals/font/lato/lato-bolditalic.eot' => 'b93389d0',
- 'rsrc/externals/font/lato/lato-bolditalic.svg' => '5442e1ef',
- 'rsrc/externals/font/lato/lato-bolditalic.ttf' => 'dad31252',
- 'rsrc/externals/font/lato/lato-bolditalic.woff' => 'e53bcf47',
- 'rsrc/externals/font/lato/lato-bolditalic.woff2' => 'd035007f',
- 'rsrc/externals/font/lato/lato-italic.eot' => '6a903f5d',
- 'rsrc/externals/font/lato/lato-italic.svg' => '0dc7cf2f',
- 'rsrc/externals/font/lato/lato-italic.ttf' => '629f64f0',
- 'rsrc/externals/font/lato/lato-italic.woff' => '678dc4bb',
- 'rsrc/externals/font/lato/lato-italic.woff2' => '7c8dd650',
- 'rsrc/externals/font/lato/lato-regular.eot' => '848dfb1e',
- 'rsrc/externals/font/lato/lato-regular.svg' => 'cbd5fd6b',
- 'rsrc/externals/font/lato/lato-regular.ttf' => 'e270165b',
- 'rsrc/externals/font/lato/lato-regular.woff' => '13d39fe2',
- 'rsrc/externals/font/lato/lato-regular.woff2' => '57a9f742',
- 'rsrc/externals/javelin/core/Event.js' => 'ef7e057f',
- 'rsrc/externals/javelin/core/Stratcom.js' => '327f418a',
- 'rsrc/externals/javelin/core/__tests__/event-stop-and-kill.js' => '717554e4',
- 'rsrc/externals/javelin/core/__tests__/install.js' => 'c432ee85',
- 'rsrc/externals/javelin/core/__tests__/stratcom.js' => '88bf7313',
- 'rsrc/externals/javelin/core/__tests__/util.js' => 'e251703d',
- 'rsrc/externals/javelin/core/init.js' => '8d83d2a1',
- 'rsrc/externals/javelin/core/init_node.js' => 'f7732951',
- 'rsrc/externals/javelin/core/install.js' => '05270951',
- 'rsrc/externals/javelin/core/util.js' => '93cc50d6',
- 'rsrc/externals/javelin/docs/Base.js' => '74676256',
- 'rsrc/externals/javelin/docs/onload.js' => 'e819c479',
- 'rsrc/externals/javelin/ext/fx/Color.js' => '7e41274a',
- 'rsrc/externals/javelin/ext/fx/FX.js' => '54b612ba',
- 'rsrc/externals/javelin/ext/reactor/core/DynVal.js' => 'f6555212',
- 'rsrc/externals/javelin/ext/reactor/core/Reactor.js' => '2b8de964',
- 'rsrc/externals/javelin/ext/reactor/core/ReactorNode.js' => '1ad0a787',
- 'rsrc/externals/javelin/ext/reactor/core/ReactorNodeCalmer.js' => '76f4ebed',
- 'rsrc/externals/javelin/ext/reactor/dom/RDOM.js' => 'c90a04fc',
- 'rsrc/externals/javelin/ext/view/HTMLView.js' => 'fe287620',
- 'rsrc/externals/javelin/ext/view/View.js' => '0f764c35',
- 'rsrc/externals/javelin/ext/view/ViewInterpreter.js' => 'f829edb3',
- 'rsrc/externals/javelin/ext/view/ViewPlaceholder.js' => '47830651',
- 'rsrc/externals/javelin/ext/view/ViewRenderer.js' => '6c2b09a2',
- 'rsrc/externals/javelin/ext/view/ViewVisitor.js' => 'efe49472',
- 'rsrc/externals/javelin/ext/view/__tests__/HTMLView.js' => 'f92d7bcb',
- 'rsrc/externals/javelin/ext/view/__tests__/View.js' => '6450b38b',
- 'rsrc/externals/javelin/ext/view/__tests__/ViewInterpreter.js' => '7a94d6a5',
- 'rsrc/externals/javelin/ext/view/__tests__/ViewRenderer.js' => '6ea96ac9',
- 'rsrc/externals/javelin/lib/Cookie.js' => '62dfea03',
- 'rsrc/externals/javelin/lib/DOM.js' => '4976858c',
- 'rsrc/externals/javelin/lib/History.js' => 'd4505101',
- 'rsrc/externals/javelin/lib/JSON.js' => '69adf288',
- 'rsrc/externals/javelin/lib/Leader.js' => '7f243deb',
- 'rsrc/externals/javelin/lib/Mask.js' => '8a41885b',
- 'rsrc/externals/javelin/lib/Quicksand.js' => '6b8ef10b',
- 'rsrc/externals/javelin/lib/Request.js' => '94b750d2',
- 'rsrc/externals/javelin/lib/Resource.js' => '44959b73',
- 'rsrc/externals/javelin/lib/Routable.js' => 'b3e7d692',
- 'rsrc/externals/javelin/lib/Router.js' => '29274e2b',
- 'rsrc/externals/javelin/lib/Scrollbar.js' => '9065f639',
- 'rsrc/externals/javelin/lib/Sound.js' => '949c0fe5',
- 'rsrc/externals/javelin/lib/URI.js' => 'c989ade3',
- 'rsrc/externals/javelin/lib/Vector.js' => '2caa8fb8',
- 'rsrc/externals/javelin/lib/WebSocket.js' => '3ffe32d6',
- 'rsrc/externals/javelin/lib/Workflow.js' => '6a726c55',
- 'rsrc/externals/javelin/lib/__tests__/Cookie.js' => '5ed109e8',
- 'rsrc/externals/javelin/lib/__tests__/DOM.js' => 'c984504b',
- 'rsrc/externals/javelin/lib/__tests__/JSON.js' => '837a7d68',
- 'rsrc/externals/javelin/lib/__tests__/URI.js' => '1e45fda9',
- 'rsrc/externals/javelin/lib/__tests__/behavior.js' => '1ea62783',
- 'rsrc/externals/javelin/lib/behavior.js' => '61cbc29a',
- 'rsrc/externals/javelin/lib/control/tokenizer/Tokenizer.js' => 'bb6e5c16',
- 'rsrc/externals/javelin/lib/control/typeahead/Typeahead.js' => '70baed2f',
- 'rsrc/externals/javelin/lib/control/typeahead/normalizer/TypeaheadNormalizer.js' => '185bbd53',
- 'rsrc/externals/javelin/lib/control/typeahead/source/TypeaheadCompositeSource.js' => '503e17fd',
- 'rsrc/externals/javelin/lib/control/typeahead/source/TypeaheadOnDemandSource.js' => '013ffff9',
- 'rsrc/externals/javelin/lib/control/typeahead/source/TypeaheadPreloadedSource.js' => '54f314a0',
- 'rsrc/externals/javelin/lib/control/typeahead/source/TypeaheadSource.js' => 'ab9e0a82',
- 'rsrc/externals/javelin/lib/control/typeahead/source/TypeaheadStaticSource.js' => '6c0e62fa',
- 'rsrc/favicons/favicon-16x16.png' => 'fc6275ba',
- 'rsrc/favicons/mask-icon.svg' => 'e132a80f',
- 'rsrc/image/BFCFDA.png' => 'd5ec91f4',
- 'rsrc/image/actions/edit.png' => '2fc41442',
- 'rsrc/image/avatar.png' => '17d346a4',
- 'rsrc/image/checker_dark.png' => 'd8e65881',
- 'rsrc/image/checker_light.png' => 'a0155918',
- 'rsrc/image/checker_lighter.png' => 'd5da91b6',
- 'rsrc/image/controls/checkbox-checked.png' => 'ad6441ea',
- 'rsrc/image/controls/checkbox-unchecked.png' => '8eb1f0ae',
- 'rsrc/image/d5d8e1.png' => '0c2a1497',
- 'rsrc/image/darkload.gif' => '1ffd3ec6',
- 'rsrc/image/divot.png' => '94dded62',
- 'rsrc/image/examples/hero.png' => '979a86ae',
- 'rsrc/image/grippy_texture.png' => 'aca81e2f',
- 'rsrc/image/icon/fatcow/arrow_branch.png' => '2537c01c',
- 'rsrc/image/icon/fatcow/arrow_merge.png' => '21b660e0',
- 'rsrc/image/icon/fatcow/calendar_edit.png' => '24632275',
- 'rsrc/image/icon/fatcow/document_black.png' => '45fe1c60',
- 'rsrc/image/icon/fatcow/flag_blue.png' => 'a01abb1d',
- 'rsrc/image/icon/fatcow/flag_finish.png' => '67825cee',
- 'rsrc/image/icon/fatcow/flag_ghost.png' => '20ca8783',
- 'rsrc/image/icon/fatcow/flag_green.png' => '7e0eaa7a',
- 'rsrc/image/icon/fatcow/flag_orange.png' => '9e73df66',
- 'rsrc/image/icon/fatcow/flag_pink.png' => '7e92f3b2',
- 'rsrc/image/icon/fatcow/flag_purple.png' => 'cc517522',
- 'rsrc/image/icon/fatcow/flag_red.png' => '04ec726f',
- 'rsrc/image/icon/fatcow/flag_yellow.png' => '73946fd4',
- 'rsrc/image/icon/fatcow/key_question.png' => '52a0c26a',
- 'rsrc/image/icon/fatcow/link.png' => '7afd4d5e',
- 'rsrc/image/icon/fatcow/page_white_edit.png' => '39a2eed8',
- 'rsrc/image/icon/fatcow/page_white_put.png' => '08c95a0c',
- 'rsrc/image/icon/fatcow/source/conduit.png' => '4ea01d2f',
- 'rsrc/image/icon/fatcow/source/email.png' => '9bab3239',
- 'rsrc/image/icon/fatcow/source/fax.png' => '04195e68',
- 'rsrc/image/icon/fatcow/source/mobile.png' => 'f1321264',
- 'rsrc/image/icon/fatcow/source/tablet.png' => '49396799',
- 'rsrc/image/icon/fatcow/source/web.png' => '136ccb5d',
- 'rsrc/image/icon/subscribe.png' => 'd03ed5a5',
- 'rsrc/image/icon/tango/attachment.png' => 'ecc8022e',
- 'rsrc/image/icon/tango/edit.png' => '929a1363',
- 'rsrc/image/icon/tango/go-down.png' => '96d95e43',
- 'rsrc/image/icon/tango/log.png' => 'b08cc63a',
- 'rsrc/image/icon/tango/upload.png' => '7bbb7984',
- 'rsrc/image/icon/unsubscribe.png' => '25725013',
- 'rsrc/image/lightblue-header.png' => '5c168b6d',
- 'rsrc/image/logo/light-eye.png' => '1a576ddd',
- 'rsrc/image/main_texture.png' => '29a2c5ad',
- 'rsrc/image/menu_texture.png' => '5a17580d',
- 'rsrc/image/people/harding.png' => '45aa614e',
- 'rsrc/image/people/jefferson.png' => 'afca0e53',
- 'rsrc/image/people/lincoln.png' => '9369126d',
- 'rsrc/image/people/mckinley.png' => 'fb8f16ce',
- 'rsrc/image/people/taft.png' => 'd7bc402c',
- 'rsrc/image/people/user0.png' => '03dacaea',
- 'rsrc/image/people/user1.png' => '4a4e7702',
- 'rsrc/image/people/user2.png' => '47a0ee40',
- 'rsrc/image/people/user3.png' => '835ff627',
- 'rsrc/image/people/user4.png' => 'b0e830f1',
- 'rsrc/image/people/user5.png' => '9c95b369',
- 'rsrc/image/people/user6.png' => 'ba3fbfb0',
- 'rsrc/image/people/user7.png' => 'da613924',
- 'rsrc/image/people/user8.png' => 'f1035edf',
- 'rsrc/image/people/user9.png' => '66730be3',
- 'rsrc/image/people/washington.png' => '40dd301c',
- 'rsrc/image/phrequent_active.png' => 'a466a8ed',
- 'rsrc/image/phrequent_inactive.png' => 'bfc15a69',
- 'rsrc/image/resize.png' => 'fd476de4',
- 'rsrc/image/sprite-login-X2.png' => '308c92c4',
- 'rsrc/image/sprite-login.png' => '9ec54245',
- 'rsrc/image/sprite-tokens-X2.png' => '804a5232',
- 'rsrc/image/sprite-tokens.png' => 'b41d03da',
- 'rsrc/image/texture/card-gradient.png' => '815f26e8',
- 'rsrc/image/texture/dark-menu-hover.png' => '5fa7ece8',
- 'rsrc/image/texture/dark-menu.png' => '7e22296e',
- 'rsrc/image/texture/grip.png' => '719404f3',
- 'rsrc/image/texture/panel-header-gradient.png' => 'e3b8dcfe',
- 'rsrc/image/texture/phlnx-bg.png' => '8d819209',
- 'rsrc/image/texture/pholio-background.gif' => 'ba29239c',
- 'rsrc/image/texture/table_header.png' => '5c433037',
- 'rsrc/image/texture/table_header_hover.png' => '038ec3b9',
- 'rsrc/image/texture/table_header_tall.png' => 'd56b434f',
- 'rsrc/js/application/aphlict/Aphlict.js' => 'e1d4b11a',
- 'rsrc/js/application/aphlict/behavior-aphlict-dropdown.js' => 'caade6f2',
- 'rsrc/js/application/aphlict/behavior-aphlict-listen.js' => '599a8f5f',
- 'rsrc/js/application/aphlict/behavior-aphlict-status.js' => '5e2634b9',
- 'rsrc/js/application/aphlict/behavior-desktop-notifications-control.js' => '27ca6289',
- 'rsrc/js/application/calendar/behavior-day-view.js' => '4b3c4443',
- 'rsrc/js/application/calendar/behavior-event-all-day.js' => 'b41537c9',
- 'rsrc/js/application/calendar/behavior-month-view.js' => 'fe33e256',
- 'rsrc/js/application/config/behavior-reorder-fields.js' => 'b6993408',
- 'rsrc/js/application/conpherence/ConpherenceThreadManager.js' => '4d863052',
- 'rsrc/js/application/conpherence/behavior-conpherence-search.js' => '9bbf3762',
- 'rsrc/js/application/conpherence/behavior-durable-column.js' => '2ae077e1',
- 'rsrc/js/application/conpherence/behavior-menu.js' => '4047cd35',
- 'rsrc/js/application/conpherence/behavior-participant-pane.js' => 'd057e45a',
- 'rsrc/js/application/conpherence/behavior-pontificate.js' => '55616e04',
- 'rsrc/js/application/conpherence/behavior-quicksand-blacklist.js' => '7927a7d3',
- 'rsrc/js/application/conpherence/behavior-toggle-widget.js' => '3dbf94d5',
- 'rsrc/js/application/countdown/timer.js' => 'e4cc26b3',
- 'rsrc/js/application/daemon/behavior-bulk-job-reload.js' => 'edf8a145',
- 'rsrc/js/application/dashboard/behavior-dashboard-async-panel.js' => '469c0d9e',
- 'rsrc/js/application/dashboard/behavior-dashboard-move-panels.js' => '408bf173',
- 'rsrc/js/application/dashboard/behavior-dashboard-query-panel-select.js' => '453c5375',
- 'rsrc/js/application/dashboard/behavior-dashboard-tab-panel.js' => 'd4eecc63',
- 'rsrc/js/application/diff/DiffChangeset.js' => 'b49b59d6',
- 'rsrc/js/application/diff/DiffChangesetList.js' => '0a84bcc1',
- 'rsrc/js/application/diff/DiffInline.js' => 'e83d28f3',
- 'rsrc/js/application/diff/behavior-preview-link.js' => '051c7832',
- 'rsrc/js/application/differential/behavior-diff-radios.js' => 'e1ff79b1',
- 'rsrc/js/application/differential/behavior-populate.js' => 'f0eb6708',
- 'rsrc/js/application/differential/behavior-user-select.js' => 'a8d8459d',
- 'rsrc/js/application/diffusion/DiffusionLocateFileSource.js' => '00676f00',
- 'rsrc/js/application/diffusion/behavior-audit-preview.js' => 'd835b03a',
- 'rsrc/js/application/diffusion/behavior-commit-branches.js' => 'bdaf4d04',
- 'rsrc/js/application/diffusion/behavior-commit-graph.js' => '75b83cbb',
- 'rsrc/js/application/diffusion/behavior-locate-file.js' => '6d3e1947',
- 'rsrc/js/application/diffusion/behavior-pull-lastmodified.js' => 'f01586dc',
- 'rsrc/js/application/doorkeeper/behavior-doorkeeper-tag.js' => '1db13e70',
- 'rsrc/js/application/drydock/drydock-live-operation-status.js' => '901935ef',
- 'rsrc/js/application/files/behavior-document-engine.js' => '3935d8c4',
- 'rsrc/js/application/files/behavior-icon-composer.js' => '8499b6ab',
- 'rsrc/js/application/files/behavior-launch-icon-composer.js' => '48086888',
- 'rsrc/js/application/harbormaster/behavior-harbormaster-log.js' => '549459b8',
- 'rsrc/js/application/herald/HeraldRuleEditor.js' => 'dca75c0e',
- 'rsrc/js/application/herald/PathTypeahead.js' => '6d8c7912',
- 'rsrc/js/application/herald/herald-rule-editor.js' => '7ebaeed3',
- 'rsrc/js/application/maniphest/behavior-batch-selector.js' => 'ad54037e',
- 'rsrc/js/application/maniphest/behavior-line-chart.js' => 'e4232876',
- 'rsrc/js/application/maniphest/behavior-list-edit.js' => 'a9f88de2',
- 'rsrc/js/application/maniphest/behavior-subpriorityeditor.js' => '71237763',
- 'rsrc/js/application/owners/OwnersPathEditor.js' => 'c96502cf',
- 'rsrc/js/application/owners/owners-path-editor.js' => '7a68dda3',
- 'rsrc/js/application/passphrase/passphrase-credential-control.js' => '3cb0b2fc',
- 'rsrc/js/application/pholio/behavior-pholio-mock-edit.js' => 'bee502c8',
- 'rsrc/js/application/pholio/behavior-pholio-mock-view.js' => 'ec1f3669',
- 'rsrc/js/application/phortune/behavior-stripe-payment-form.js' => 'a6b98425',
- 'rsrc/js/application/phortune/behavior-test-payment-form.js' => 'fc91ab6c',
- 'rsrc/js/application/phortune/phortune-credit-card-form.js' => '2290aeef',
- 'rsrc/js/application/policy/behavior-policy-control.js' => 'd0c516d5',
- 'rsrc/js/application/policy/behavior-policy-rule-editor.js' => '5e9f347c',
- 'rsrc/js/application/projects/WorkboardBoard.js' => '8935deef',
- 'rsrc/js/application/projects/WorkboardCard.js' => 'c587b80f',
- 'rsrc/js/application/projects/WorkboardColumn.js' => '758b4758',
- 'rsrc/js/application/projects/WorkboardController.js' => '26167537',
- 'rsrc/js/application/projects/behavior-project-boards.js' => '4250a34e',
- 'rsrc/js/application/projects/behavior-project-create.js' => '065227cc',
- 'rsrc/js/application/projects/behavior-reorder-columns.js' => 'e1d25dfb',
- 'rsrc/js/application/releeph/releeph-preview-branch.js' => 'b2b4fbaf',
- 'rsrc/js/application/releeph/releeph-request-state-change.js' => 'a0b57eb8',
- 'rsrc/js/application/releeph/releeph-request-typeahead.js' => 'de2e896f',
- 'rsrc/js/application/repository/repository-crossreference.js' => '9a860428',
- 'rsrc/js/application/search/behavior-reorder-profile-menu-items.js' => 'e2e0a072',
- 'rsrc/js/application/search/behavior-reorder-queries.js' => 'e9581f08',
- 'rsrc/js/application/transactions/behavior-comment-actions.js' => 'd848ec84',
- 'rsrc/js/application/transactions/behavior-reorder-configs.js' => 'd7a74243',
- 'rsrc/js/application/transactions/behavior-reorder-fields.js' => 'b59e1e96',
- 'rsrc/js/application/transactions/behavior-show-older-transactions.js' => '0e1eca96',
- 'rsrc/js/application/transactions/behavior-transaction-comment-form.js' => 'b23b49e6',
- 'rsrc/js/application/transactions/behavior-transaction-list.js' => '1f6794f6',
- 'rsrc/js/application/typeahead/behavior-typeahead-browse.js' => '635de1ec',
- 'rsrc/js/application/typeahead/behavior-typeahead-search.js' => '93d0c9e3',
- 'rsrc/js/application/uiexample/gesture-example.js' => '558829c2',
- 'rsrc/js/application/uiexample/notification-example.js' => '8ce821c5',
- 'rsrc/js/core/Busy.js' => '59a7976a',
- 'rsrc/js/core/DragAndDropFileUpload.js' => '58dea2fa',
- 'rsrc/js/core/DraggableList.js' => 'bea6e7f4',
- 'rsrc/js/core/Favicon.js' => '1fe2510c',
- 'rsrc/js/core/FileUpload.js' => '680ea2c8',
- 'rsrc/js/core/Hovercard.js' => '1bd28176',
- 'rsrc/js/core/KeyboardShortcut.js' => '1ae869f2',
- 'rsrc/js/core/KeyboardShortcutManager.js' => 'c19dd9b9',
- 'rsrc/js/core/MultirowRowManager.js' => 'b5d57730',
- 'rsrc/js/core/Notification.js' => '4f774dac',
- 'rsrc/js/core/Prefab.js' => '77b0ae28',
- 'rsrc/js/core/ShapedRequest.js' => '7cbe244b',
- 'rsrc/js/core/TextAreaUtils.js' => '320810c8',
- 'rsrc/js/core/Title.js' => '485aaa6c',
- 'rsrc/js/core/ToolTip.js' => '358b8c04',
- 'rsrc/js/core/behavior-active-nav.js' => 'e379b58e',
- 'rsrc/js/core/behavior-audio-source.js' => '59b251eb',
- 'rsrc/js/core/behavior-autofocus.js' => '7319e029',
- 'rsrc/js/core/behavior-badge-view.js' => '8ff5e24c',
- 'rsrc/js/core/behavior-bulk-editor.js' => '66a6def1',
- 'rsrc/js/core/behavior-choose-control.js' => '327a00d1',
- 'rsrc/js/core/behavior-copy.js' => 'b0b8f86d',
- 'rsrc/js/core/behavior-detect-timezone.js' => '4c193c96',
- 'rsrc/js/core/behavior-device.js' => 'a3714c76',
- 'rsrc/js/core/behavior-drag-and-drop-textarea.js' => '484a6e22',
- 'rsrc/js/core/behavior-fancy-datepicker.js' => 'ecf4e799',
- 'rsrc/js/core/behavior-file-tree.js' => '88236f00',
- 'rsrc/js/core/behavior-form.js' => '5c54cbf3',
- 'rsrc/js/core/behavior-gesture.js' => '3ab51e2c',
- 'rsrc/js/core/behavior-global-drag-and-drop.js' => '960f6a39',
- 'rsrc/js/core/behavior-high-security-warning.js' => 'a464fe03',
- 'rsrc/js/core/behavior-history-install.js' => '7ee2b591',
- 'rsrc/js/core/behavior-hovercard.js' => 'bcaccd64',
- 'rsrc/js/core/behavior-keyboard-pager.js' => 'a8da01f0',
- 'rsrc/js/core/behavior-keyboard-shortcuts.js' => '01fca1f0',
- 'rsrc/js/core/behavior-lightbox-attachments.js' => '6b31879a',
- 'rsrc/js/core/behavior-line-linker.js' => '66a62306',
- 'rsrc/js/core/behavior-linked-container.js' => '291da458',
- 'rsrc/js/core/behavior-more.js' => 'a80d0378',
- 'rsrc/js/core/behavior-object-selector.js' => '77c1f0b0',
- 'rsrc/js/core/behavior-oncopy.js' => '2926fff2',
- 'rsrc/js/core/behavior-phabricator-nav.js' => '9d32bc88',
- 'rsrc/js/core/behavior-phabricator-remarkup-assist.js' => 'acd29eee',
- 'rsrc/js/core/behavior-read-only-warning.js' => 'ba158207',
- 'rsrc/js/core/behavior-redirect.js' => '0213259f',
- 'rsrc/js/core/behavior-refresh-csrf.js' => 'ab2f381b',
- 'rsrc/js/core/behavior-remarkup-load-image.js' => '040fce04',
- 'rsrc/js/core/behavior-remarkup-preview.js' => '4b700e9e',
- 'rsrc/js/core/behavior-reorder-applications.js' => '76b9fc3e',
- 'rsrc/js/core/behavior-reveal-content.js' => '60821bc7',
- 'rsrc/js/core/behavior-scrollbar.js' => '834a1173',
- 'rsrc/js/core/behavior-search-typeahead.js' => 'c3e917d9',
- 'rsrc/js/core/behavior-select-content.js' => 'bf5374ef',
- 'rsrc/js/core/behavior-select-on-click.js' => '4e3e79a6',
- 'rsrc/js/core/behavior-setup-check-https.js' => '491416b3',
- 'rsrc/js/core/behavior-time-typeahead.js' => '522431f7',
- 'rsrc/js/core/behavior-toggle-class.js' => '92b9ec77',
- 'rsrc/js/core/behavior-tokenizer.js' => 'b3a4b884',
- 'rsrc/js/core/behavior-tooltip.js' => 'c420b0b9',
- 'rsrc/js/core/behavior-user-menu.js' => '31420f77',
- 'rsrc/js/core/behavior-watch-anchor.js' => '9f36c42d',
- 'rsrc/js/core/behavior-workflow.js' => '0a3f3021',
- 'rsrc/js/core/darkconsole/DarkLog.js' => 'c8e1ffe3',
- 'rsrc/js/core/darkconsole/DarkMessage.js' => 'c48cccdd',
- 'rsrc/js/core/darkconsole/behavior-dark-console.js' => '66888767',
- 'rsrc/js/core/phtize.js' => 'd254d646',
- 'rsrc/js/phui/behavior-phui-dropdown-menu.js' => 'b95d6f7d',
- 'rsrc/js/phui/behavior-phui-file-upload.js' => 'b003d4fb',
- 'rsrc/js/phui/behavior-phui-selectable-list.js' => '464259a2',
- 'rsrc/js/phui/behavior-phui-submenu.js' => 'a6f7a73b',
- 'rsrc/js/phui/behavior-phui-tab-group.js' => '0a0b10e9',
- 'rsrc/js/phuix/PHUIXActionListView.js' => 'b5c256b8',
- 'rsrc/js/phuix/PHUIXActionView.js' => '8d4a8c72',
- 'rsrc/js/phuix/PHUIXAutocomplete.js' => 'df1bbd34',
- 'rsrc/js/phuix/PHUIXButtonView.js' => '85ac9772',
- 'rsrc/js/phuix/PHUIXDropdownMenu.js' => '04b2ae03',
- 'rsrc/js/phuix/PHUIXExample.js' => '68af71ca',
- 'rsrc/js/phuix/PHUIXFormControl.js' => '210a16c1',
- 'rsrc/js/phuix/PHUIXIconView.js' => 'bff6884b',
+ 'conpherence.pkg.css' => '3c8a0668',
+ 'conpherence.pkg.js' => '020aebcf',
+ 'core.pkg.css' => '7fa376a9',
+ 'core.pkg.js' => '5c737607',
+ 'differential.pkg.css' => 'b8df73d4',
+ 'differential.pkg.js' => '67c9ea4c',
+ 'diffusion.pkg.css' => '42c75c37',
+ 'diffusion.pkg.js' => '91192d85',
+ 'maniphest.pkg.css' => '35995d6d',
+ 'maniphest.pkg.js' => '286955ae',
+ 'rsrc/audio/basic/alert.mp3' => '17889334',
+ 'rsrc/audio/basic/bing.mp3' => 'a817a0c3',
+ 'rsrc/audio/basic/pock.mp3' => '0fa843d0',
+ 'rsrc/audio/basic/tap.mp3' => '02d16994',
+ 'rsrc/audio/basic/ting.mp3' => 'a6b6540e',
+ 'rsrc/css/aphront/aphront-bars.css' => '4a327b4a',
+ 'rsrc/css/aphront/dark-console.css' => '7f06cda2',
+ 'rsrc/css/aphront/dialog-view.css' => 'b70c70df',
+ 'rsrc/css/aphront/list-filter-view.css' => 'feb64255',
+ 'rsrc/css/aphront/multi-column.css' => 'fbc00ba3',
+ 'rsrc/css/aphront/notification.css' => '30240bd2',
+ 'rsrc/css/aphront/panel-view.css' => '46923d46',
+ 'rsrc/css/aphront/phabricator-nav-view.css' => 'f8a0c1bf',
+ 'rsrc/css/aphront/table-view.css' => '76eda3f8',
+ 'rsrc/css/aphront/tokenizer.css' => 'b52d0668',
+ 'rsrc/css/aphront/tooltip.css' => 'e3f2412f',
+ 'rsrc/css/aphront/typeahead-browse.css' => 'b7ed02d2',
+ 'rsrc/css/aphront/typeahead.css' => '8779483d',
+ 'rsrc/css/application/almanac/almanac.css' => '2e050f4f',
+ 'rsrc/css/application/auth/auth.css' => '9f6e4ed8',
+ 'rsrc/css/application/base/main-menu-view.css' => '8e2d9a28',
+ 'rsrc/css/application/base/notification-menu.css' => 'e6962e89',
+ 'rsrc/css/application/base/phui-theme.css' => '35883b37',
+ 'rsrc/css/application/base/standard-page-view.css' => '8a295cb9',
+ 'rsrc/css/application/chatlog/chatlog.css' => 'abdc76ee',
+ 'rsrc/css/application/conduit/conduit-api.css' => 'ce2cfc41',
+ 'rsrc/css/application/config/config-options.css' => '16c920ae',
+ 'rsrc/css/application/config/config-template.css' => '20babf50',
+ 'rsrc/css/application/config/setup-issue.css' => '5eed85b2',
+ 'rsrc/css/application/config/unhandled-exception.css' => '9da8fdab',
+ 'rsrc/css/application/conpherence/color.css' => 'b17746b0',
+ 'rsrc/css/application/conpherence/durable-column.css' => '2d57072b',
+ 'rsrc/css/application/conpherence/header-pane.css' => 'c9a3db8e',
+ 'rsrc/css/application/conpherence/menu.css' => '67f4680d',
+ 'rsrc/css/application/conpherence/message-pane.css' => 'd244db1e',
+ 'rsrc/css/application/conpherence/notification.css' => '6a3d4e58',
+ 'rsrc/css/application/conpherence/participant-pane.css' => '69e0058a',
+ 'rsrc/css/application/conpherence/transaction.css' => '3a3f5e7e',
+ 'rsrc/css/application/contentsource/content-source-view.css' => 'cdf0d579',
+ 'rsrc/css/application/countdown/timer.css' => 'bff8012f',
+ 'rsrc/css/application/daemon/bulk-job.css' => '73af99f5',
+ 'rsrc/css/application/dashboard/dashboard.css' => '4267d6c6',
+ 'rsrc/css/application/diff/inline-comment-summary.css' => '81eb368d',
+ 'rsrc/css/application/differential/add-comment.css' => '7e5900d9',
+ 'rsrc/css/application/differential/changeset-view.css' => '73660575',
+ 'rsrc/css/application/differential/core.css' => 'bdb93065',
+ 'rsrc/css/application/differential/phui-inline-comment.css' => '48acce5b',
+ 'rsrc/css/application/differential/revision-comment.css' => '7dbc8d1d',
+ 'rsrc/css/application/differential/revision-history.css' => '8aa3eac5',
+ 'rsrc/css/application/differential/revision-list.css' => '93d2df7d',
+ 'rsrc/css/application/differential/table-of-contents.css' => '0e3364c7',
+ 'rsrc/css/application/diffusion/diffusion-icons.css' => '23b31a1b',
+ 'rsrc/css/application/diffusion/diffusion-readme.css' => 'b68a76e4',
+ 'rsrc/css/application/diffusion/diffusion-repository.css' => 'b89e8c6c',
+ 'rsrc/css/application/diffusion/diffusion.css' => 'b54c77b0',
+ 'rsrc/css/application/feed/feed.css' => 'd8b6e3f8',
+ 'rsrc/css/application/files/global-drag-and-drop.css' => '1d2713a4',
+ 'rsrc/css/application/flag/flag.css' => '2b77be8d',
+ 'rsrc/css/application/harbormaster/harbormaster.css' => '8dfe16b2',
+ 'rsrc/css/application/herald/herald-test.css' => 'e004176f',
+ 'rsrc/css/application/herald/herald.css' => '648d39e2',
+ 'rsrc/css/application/maniphest/report.css' => '3d53188b',
+ 'rsrc/css/application/maniphest/task-edit.css' => '272daa84',
+ 'rsrc/css/application/maniphest/task-summary.css' => '61d1667e',
+ 'rsrc/css/application/objectselector/object-selector.css' => 'ee77366f',
+ 'rsrc/css/application/owners/owners-path-editor.css' => 'fa7c13ef',
+ 'rsrc/css/application/paste/paste.css' => 'b37bcd38',
+ 'rsrc/css/application/people/people-picture-menu-item.css' => 'fe8e07cf',
+ 'rsrc/css/application/people/people-profile.css' => '2ea2daa1',
+ 'rsrc/css/application/phame/phame.css' => '799febf9',
+ 'rsrc/css/application/pholio/pholio-edit.css' => '4df55b3b',
+ 'rsrc/css/application/pholio/pholio-inline-comments.css' => '722b48c2',
+ 'rsrc/css/application/pholio/pholio.css' => '88ef5ef1',
+ 'rsrc/css/application/phortune/phortune-credit-card-form.css' => '3b9868a8',
+ 'rsrc/css/application/phortune/phortune-invoice.css' => 'e41765fc',
+ 'rsrc/css/application/phortune/phortune.css' => '12e8251a',
+ 'rsrc/css/application/phrequent/phrequent.css' => 'bd79cc67',
+ 'rsrc/css/application/phriction/phriction-document-css.css' => '03380da0',
+ 'rsrc/css/application/policy/policy-edit.css' => '8794e2ed',
+ 'rsrc/css/application/policy/policy-transaction-detail.css' => 'c02b8384',
+ 'rsrc/css/application/policy/policy.css' => 'ceb56a08',
+ 'rsrc/css/application/ponder/ponder-view.css' => '05a09d0a',
+ 'rsrc/css/application/project/project-card-view.css' => '3b1f7b20',
+ 'rsrc/css/application/project/project-view.css' => '567858b3',
+ 'rsrc/css/application/releeph/releeph-core.css' => 'f81ff2db',
+ 'rsrc/css/application/releeph/releeph-preview-branch.css' => '22db5c07',
+ 'rsrc/css/application/releeph/releeph-request-differential-create-dialog.css' => '0ac1ea31',
+ 'rsrc/css/application/releeph/releeph-request-typeahead.css' => 'bce37359',
+ 'rsrc/css/application/search/application-search-view.css' => '0f7c06d8',
+ 'rsrc/css/application/search/search-results.css' => '9ea70ace',
+ 'rsrc/css/application/slowvote/slowvote.css' => '1694baed',
+ 'rsrc/css/application/tokens/tokens.css' => 'ce5a50bd',
+ 'rsrc/css/application/uiexample/example.css' => 'b4795059',
+ 'rsrc/css/core/core.css' => '1b29ed61',
+ 'rsrc/css/core/remarkup.css' => '9e627d41',
+ 'rsrc/css/core/syntax.css' => '8a16f91b',
+ 'rsrc/css/core/z-index.css' => '99c0f5eb',
+ 'rsrc/css/diviner/diviner-shared.css' => '4bd263b0',
+ 'rsrc/css/font/font-awesome.css' => '3883938a',
+ 'rsrc/css/font/font-lato.css' => '23631304',
+ 'rsrc/css/font/phui-font-icon-base.css' => 'd7994e06',
+ 'rsrc/css/layout/phabricator-filetree-view.css' => '56cdd875',
+ 'rsrc/css/layout/phabricator-source-code-view.css' => '03d7ac28',
+ 'rsrc/css/phui/button/phui-button-bar.css' => 'a4aa75c4',
+ 'rsrc/css/phui/button/phui-button-simple.css' => '1ff278aa',
+ 'rsrc/css/phui/button/phui-button.css' => 'ea704902',
+ 'rsrc/css/phui/calendar/phui-calendar-day.css' => '9597d706',
+ 'rsrc/css/phui/calendar/phui-calendar-list.css' => 'ccd7e4e2',
+ 'rsrc/css/phui/calendar/phui-calendar-month.css' => 'cb758c42',
+ 'rsrc/css/phui/calendar/phui-calendar.css' => 'f11073aa',
+ 'rsrc/css/phui/object-item/phui-oi-big-ui.css' => 'e5b1fb04',
+ 'rsrc/css/phui/object-item/phui-oi-color.css' => 'b517bfa0',
+ 'rsrc/css/phui/object-item/phui-oi-drag-ui.css' => 'da15d3dc',
+ 'rsrc/css/phui/object-item/phui-oi-flush-ui.css' => '490e2e2e',
+ 'rsrc/css/phui/object-item/phui-oi-list-view.css' => '909f3844',
+ 'rsrc/css/phui/object-item/phui-oi-simple-ui.css' => '6a30fa46',
+ 'rsrc/css/phui/phui-action-list.css' => 'c1a7631d',
+ 'rsrc/css/phui/phui-action-panel.css' => '6c386cbf',
+ 'rsrc/css/phui/phui-badge.css' => '666e25ad',
+ 'rsrc/css/phui/phui-basic-nav-view.css' => '56ebd66d',
+ 'rsrc/css/phui/phui-big-info-view.css' => '362ad37b',
+ 'rsrc/css/phui/phui-box.css' => '5ed3b8cb',
+ 'rsrc/css/phui/phui-bulk-editor.css' => '374d5e30',
+ 'rsrc/css/phui/phui-chart.css' => '7853a69b',
+ 'rsrc/css/phui/phui-cms.css' => '8c05c41e',
+ 'rsrc/css/phui/phui-comment-form.css' => '68a2d99a',
+ 'rsrc/css/phui/phui-comment-panel.css' => 'ec4e31c0',
+ 'rsrc/css/phui/phui-crumbs-view.css' => '614f43cf',
+ 'rsrc/css/phui/phui-curtain-view.css' => '68c5efb6',
+ 'rsrc/css/phui/phui-document-pro.css' => 'b9613a10',
+ 'rsrc/css/phui/phui-document-summary.css' => 'b068eed1',
+ 'rsrc/css/phui/phui-document.css' => '52b748a5',
+ 'rsrc/css/phui/phui-feed-story.css' => 'a0c05029',
+ 'rsrc/css/phui/phui-fontkit.css' => '9b714a5e',
+ 'rsrc/css/phui/phui-form-view.css' => '9508671e',
+ 'rsrc/css/phui/phui-form.css' => '159e2d9c',
+ 'rsrc/css/phui/phui-head-thing.css' => 'd7f293df',
+ 'rsrc/css/phui/phui-header-view.css' => '93cea4ec',
+ 'rsrc/css/phui/phui-hovercard.css' => '6ca90fa0',
+ 'rsrc/css/phui/phui-icon-set-selector.css' => '7aa5f3ec',
+ 'rsrc/css/phui/phui-icon.css' => '281f964d',
+ 'rsrc/css/phui/phui-image-mask.css' => '62c7f4d2',
+ 'rsrc/css/phui/phui-info-view.css' => 'f9464caf',
+ 'rsrc/css/phui/phui-invisible-character-view.css' => 'c694c4a4',
+ 'rsrc/css/phui/phui-left-right.css' => '68513c34',
+ 'rsrc/css/phui/phui-lightbox.css' => '4ebf22da',
+ 'rsrc/css/phui/phui-list.css' => '470b1adb',
+ 'rsrc/css/phui/phui-object-box.css' => '9b58483d',
+ 'rsrc/css/phui/phui-pager.css' => 'd022c7ad',
+ 'rsrc/css/phui/phui-pinboard-view.css' => '1f08f5d8',
+ 'rsrc/css/phui/phui-property-list-view.css' => 'cad62236',
+ 'rsrc/css/phui/phui-remarkup-preview.css' => '91767007',
+ 'rsrc/css/phui/phui-segment-bar-view.css' => '5166b370',
+ 'rsrc/css/phui/phui-spacing.css' => 'b05cadc3',
+ 'rsrc/css/phui/phui-status.css' => 'e5ff8be0',
+ 'rsrc/css/phui/phui-tag-view.css' => 'a42fe34f',
+ 'rsrc/css/phui/phui-timeline-view.css' => '1e348e4b',
+ 'rsrc/css/phui/phui-two-column-view.css' => '01e6991e',
+ 'rsrc/css/phui/workboards/phui-workboard-color.css' => 'e86de308',
+ 'rsrc/css/phui/workboards/phui-workboard.css' => '74fc9d98',
+ 'rsrc/css/phui/workboards/phui-workcard.css' => '8c536f90',
+ 'rsrc/css/phui/workboards/phui-workpanel.css' => 'bd546a49',
+ 'rsrc/css/sprite-login.css' => '18b368a6',
+ 'rsrc/css/sprite-tokens.css' => 'f1896dc5',
+ 'rsrc/css/syntax/syntax-default.css' => '055fc231',
+ 'rsrc/externals/d3/d3.min.js' => 'd67475f5',
+ 'rsrc/externals/font/fontawesome/fontawesome-webfont.eot' => '23f8c698',
+ 'rsrc/externals/font/fontawesome/fontawesome-webfont.ttf' => '70983df0',
+ 'rsrc/externals/font/fontawesome/fontawesome-webfont.woff' => 'cd02f93b',
+ 'rsrc/externals/font/fontawesome/fontawesome-webfont.woff2' => '351fd46a',
+ 'rsrc/externals/font/lato/lato-bold.eot' => '7367aa5e',
+ 'rsrc/externals/font/lato/lato-bold.svg' => '681aa4f5',
+ 'rsrc/externals/font/lato/lato-bold.ttf' => '66d3c296',
+ 'rsrc/externals/font/lato/lato-bold.woff' => '89d9fba7',
+ 'rsrc/externals/font/lato/lato-bold.woff2' => '389fcdb1',
+ 'rsrc/externals/font/lato/lato-bolditalic.eot' => '03eeb4da',
+ 'rsrc/externals/font/lato/lato-bolditalic.svg' => 'f56fa11c',
+ 'rsrc/externals/font/lato/lato-bolditalic.ttf' => '9c3aec21',
+ 'rsrc/externals/font/lato/lato-bolditalic.woff' => 'bfbd0616',
+ 'rsrc/externals/font/lato/lato-bolditalic.woff2' => 'bc7d1274',
+ 'rsrc/externals/font/lato/lato-italic.eot' => '7db5b247',
+ 'rsrc/externals/font/lato/lato-italic.svg' => 'b1ae496f',
+ 'rsrc/externals/font/lato/lato-italic.ttf' => '43eed813',
+ 'rsrc/externals/font/lato/lato-italic.woff' => 'c28975e1',
+ 'rsrc/externals/font/lato/lato-italic.woff2' => 'fffc0d8c',
+ 'rsrc/externals/font/lato/lato-regular.eot' => '06e0c291',
+ 'rsrc/externals/font/lato/lato-regular.svg' => '3ad95f53',
+ 'rsrc/externals/font/lato/lato-regular.ttf' => 'e2e9c398',
+ 'rsrc/externals/font/lato/lato-regular.woff' => '0b13d332',
+ 'rsrc/externals/font/lato/lato-regular.woff2' => '8f846797',
+ 'rsrc/externals/javelin/core/Event.js' => 'c03f2fb4',
+ 'rsrc/externals/javelin/core/Stratcom.js' => '0889b835',
+ 'rsrc/externals/javelin/core/__tests__/event-stop-and-kill.js' => '048472d2',
+ 'rsrc/externals/javelin/core/__tests__/install.js' => '14a7e671',
+ 'rsrc/externals/javelin/core/__tests__/stratcom.js' => 'a28464bb',
+ 'rsrc/externals/javelin/core/__tests__/util.js' => 'e29a4354',
+ 'rsrc/externals/javelin/core/init.js' => '98e6504a',
+ 'rsrc/externals/javelin/core/init_node.js' => '16961339',
+ 'rsrc/externals/javelin/core/install.js' => '5902260c',
+ 'rsrc/externals/javelin/core/util.js' => '22ae1776',
+ 'rsrc/externals/javelin/docs/Base.js' => '5a401d7d',
+ 'rsrc/externals/javelin/docs/onload.js' => 'ee58fb62',
+ 'rsrc/externals/javelin/ext/fx/Color.js' => '78f811c9',
+ 'rsrc/externals/javelin/ext/fx/FX.js' => '34450586',
+ 'rsrc/externals/javelin/ext/reactor/core/DynVal.js' => '202a2e85',
+ 'rsrc/externals/javelin/ext/reactor/core/Reactor.js' => '1c850a26',
+ 'rsrc/externals/javelin/ext/reactor/core/ReactorNode.js' => '72960bc1',
+ 'rsrc/externals/javelin/ext/reactor/core/ReactorNodeCalmer.js' => '225bbb98',
+ 'rsrc/externals/javelin/ext/reactor/dom/RDOM.js' => '6cfa0008',
+ 'rsrc/externals/javelin/ext/view/HTMLView.js' => 'f8c4e135',
+ 'rsrc/externals/javelin/ext/view/View.js' => '289bf236',
+ 'rsrc/externals/javelin/ext/view/ViewInterpreter.js' => '876506b6',
+ 'rsrc/externals/javelin/ext/view/ViewPlaceholder.js' => 'a9942052',
+ 'rsrc/externals/javelin/ext/view/ViewRenderer.js' => '9aae2b66',
+ 'rsrc/externals/javelin/ext/view/ViewVisitor.js' => '308f9fe4',
+ 'rsrc/externals/javelin/ext/view/__tests__/HTMLView.js' => '6e50a13f',
+ 'rsrc/externals/javelin/ext/view/__tests__/View.js' => 'd284be5d',
+ 'rsrc/externals/javelin/ext/view/__tests__/ViewInterpreter.js' => 'a9f35511',
+ 'rsrc/externals/javelin/ext/view/__tests__/ViewRenderer.js' => '3a1b81f6',
+ 'rsrc/externals/javelin/lib/Cookie.js' => '05d290ef',
+ 'rsrc/externals/javelin/lib/DOM.js' => '94681e22',
+ 'rsrc/externals/javelin/lib/History.js' => '030b4f7a',
+ 'rsrc/externals/javelin/lib/JSON.js' => '541f81c3',
+ 'rsrc/externals/javelin/lib/Leader.js' => '0d2490ce',
+ 'rsrc/externals/javelin/lib/Mask.js' => '7c4d8998',
+ 'rsrc/externals/javelin/lib/Quicksand.js' => 'd3799cb4',
+ 'rsrc/externals/javelin/lib/Request.js' => '91863989',
+ 'rsrc/externals/javelin/lib/Resource.js' => '740956e1',
+ 'rsrc/externals/javelin/lib/Routable.js' => '6a18c42e',
+ 'rsrc/externals/javelin/lib/Router.js' => '32755edb',
+ 'rsrc/externals/javelin/lib/Scrollbar.js' => 'a43ae2ae',
+ 'rsrc/externals/javelin/lib/Sound.js' => 'e562708c',
+ 'rsrc/externals/javelin/lib/URI.js' => '2e255291',
+ 'rsrc/externals/javelin/lib/Vector.js' => 'e9c80beb',
+ 'rsrc/externals/javelin/lib/WebSocket.js' => 'fdc13e4e',
+ 'rsrc/externals/javelin/lib/Workflow.js' => '958e9045',
+ 'rsrc/externals/javelin/lib/__tests__/Cookie.js' => 'ca686f71',
+ 'rsrc/externals/javelin/lib/__tests__/DOM.js' => '4566e249',
+ 'rsrc/externals/javelin/lib/__tests__/JSON.js' => '710377ae',
+ 'rsrc/externals/javelin/lib/__tests__/URI.js' => '6fff0c2b',
+ 'rsrc/externals/javelin/lib/__tests__/behavior.js' => '8426ebeb',
+ 'rsrc/externals/javelin/lib/behavior.js' => 'fce5d170',
+ 'rsrc/externals/javelin/lib/control/tokenizer/Tokenizer.js' => '89a1ae3a',
+ 'rsrc/externals/javelin/lib/control/typeahead/Typeahead.js' => 'a4356cde',
+ 'rsrc/externals/javelin/lib/control/typeahead/normalizer/TypeaheadNormalizer.js' => 'a241536a',
+ 'rsrc/externals/javelin/lib/control/typeahead/source/TypeaheadCompositeSource.js' => '22ee68a5',
+ 'rsrc/externals/javelin/lib/control/typeahead/source/TypeaheadOnDemandSource.js' => '23387297',
+ 'rsrc/externals/javelin/lib/control/typeahead/source/TypeaheadPreloadedSource.js' => '5a79f6c3',
+ 'rsrc/externals/javelin/lib/control/typeahead/source/TypeaheadSource.js' => '8badee71',
+ 'rsrc/externals/javelin/lib/control/typeahead/source/TypeaheadStaticSource.js' => '80bff3af',
+ 'rsrc/favicons/favicon-16x16.png' => '4c51a03a',
+ 'rsrc/favicons/mask-icon.svg' => 'db699fe1',
+ 'rsrc/image/BFCFDA.png' => '74b5c88b',
+ 'rsrc/image/actions/edit.png' => 'fd987dff',
+ 'rsrc/image/avatar.png' => '0d17c6c4',
+ 'rsrc/image/checker_dark.png' => '7fc8fa7b',
+ 'rsrc/image/checker_light.png' => '3157a202',
+ 'rsrc/image/checker_lighter.png' => 'c45928c1',
+ 'rsrc/image/controls/checkbox-checked.png' => '1770d7a0',
+ 'rsrc/image/controls/checkbox-unchecked.png' => 'e1deba0a',
+ 'rsrc/image/d5d8e1.png' => '6764616e',
+ 'rsrc/image/darkload.gif' => '5bd41a89',
+ 'rsrc/image/divot.png' => '0fbe2453',
+ 'rsrc/image/examples/hero.png' => '5d8c4b21',
+ 'rsrc/image/grippy_texture.png' => 'a7d222b5',
+ 'rsrc/image/icon/fatcow/arrow_branch.png' => '98149d9f',
+ 'rsrc/image/icon/fatcow/arrow_merge.png' => 'e142f4f8',
+ 'rsrc/image/icon/fatcow/calendar_edit.png' => '5ff44a08',
+ 'rsrc/image/icon/fatcow/document_black.png' => 'd3515fa5',
+ 'rsrc/image/icon/fatcow/flag_blue.png' => '54db2e5c',
+ 'rsrc/image/icon/fatcow/flag_finish.png' => '2953a51b',
+ 'rsrc/image/icon/fatcow/flag_ghost.png' => '7d9ada92',
+ 'rsrc/image/icon/fatcow/flag_green.png' => '010f7161',
+ 'rsrc/image/icon/fatcow/flag_orange.png' => '6c384ca5',
+ 'rsrc/image/icon/fatcow/flag_pink.png' => '11ac6b12',
+ 'rsrc/image/icon/fatcow/flag_purple.png' => 'c4f423a4',
+ 'rsrc/image/icon/fatcow/flag_red.png' => '9e6d8817',
+ 'rsrc/image/icon/fatcow/flag_yellow.png' => '906733f4',
+ 'rsrc/image/icon/fatcow/key_question.png' => 'c10c26db',
+ 'rsrc/image/icon/fatcow/link.png' => '8edbf327',
+ 'rsrc/image/icon/fatcow/page_white_edit.png' => '17ef5625',
+ 'rsrc/image/icon/fatcow/page_white_put.png' => '82430c91',
+ 'rsrc/image/icon/fatcow/source/conduit.png' => '5b55130c',
+ 'rsrc/image/icon/fatcow/source/email.png' => '8a32b77f',
+ 'rsrc/image/icon/fatcow/source/fax.png' => '8bc2a49b',
+ 'rsrc/image/icon/fatcow/source/mobile.png' => '0a918412',
+ 'rsrc/image/icon/fatcow/source/tablet.png' => 'fc50b050',
+ 'rsrc/image/icon/fatcow/source/web.png' => '70433af3',
+ 'rsrc/image/icon/subscribe.png' => '07ef454e',
+ 'rsrc/image/icon/tango/attachment.png' => 'bac9032d',
+ 'rsrc/image/icon/tango/edit.png' => 'e6296206',
+ 'rsrc/image/icon/tango/go-down.png' => '0b903712',
+ 'rsrc/image/icon/tango/log.png' => '86b6a6f4',
+ 'rsrc/image/icon/tango/upload.png' => '3fe6b92d',
+ 'rsrc/image/icon/unsubscribe.png' => 'db04378a',
+ 'rsrc/image/lightblue-header.png' => 'e6d483c6',
+ 'rsrc/image/logo/light-eye.png' => '72337472',
+ 'rsrc/image/main_texture.png' => '894d03c4',
+ 'rsrc/image/menu_texture.png' => '896c9ade',
+ 'rsrc/image/people/harding.png' => '95b2db63',
+ 'rsrc/image/people/jefferson.png' => 'e883a3a2',
+ 'rsrc/image/people/lincoln.png' => 'be2c07c5',
+ 'rsrc/image/people/mckinley.png' => '6af510a0',
+ 'rsrc/image/people/taft.png' => 'b15ab07e',
+ 'rsrc/image/people/user0.png' => '4bc64b40',
+ 'rsrc/image/people/user1.png' => '8063f445',
+ 'rsrc/image/people/user2.png' => 'd28246c0',
+ 'rsrc/image/people/user3.png' => 'fb1ac12d',
+ 'rsrc/image/people/user4.png' => 'fe4fac8f',
+ 'rsrc/image/people/user5.png' => '3d07065c',
+ 'rsrc/image/people/user6.png' => 'e4bd47c8',
+ 'rsrc/image/people/user7.png' => '71d8fe8b',
+ 'rsrc/image/people/user8.png' => '85f86bf7',
+ 'rsrc/image/people/user9.png' => '523db8aa',
+ 'rsrc/image/people/washington.png' => '86159e68',
+ 'rsrc/image/phrequent_active.png' => 'de66dc50',
+ 'rsrc/image/phrequent_inactive.png' => '79c61baf',
+ 'rsrc/image/resize.png' => '9cc83373',
+ 'rsrc/image/sprite-login-X2.png' => '604545f6',
+ 'rsrc/image/sprite-login.png' => '7a001a9a',
+ 'rsrc/image/sprite-tokens-X2.png' => '21621dd9',
+ 'rsrc/image/sprite-tokens.png' => 'bede2580',
+ 'rsrc/image/texture/card-gradient.png' => 'e6892cb4',
+ 'rsrc/image/texture/dark-menu-hover.png' => '390a4fa1',
+ 'rsrc/image/texture/dark-menu.png' => '542f699c',
+ 'rsrc/image/texture/grip.png' => 'bc80753a',
+ 'rsrc/image/texture/panel-header-gradient.png' => '65004dbf',
+ 'rsrc/image/texture/phlnx-bg.png' => '6c9cd31d',
+ 'rsrc/image/texture/pholio-background.gif' => '84910bfc',
+ 'rsrc/image/texture/table_header.png' => '7652d1ad',
+ 'rsrc/image/texture/table_header_hover.png' => '12ea5236',
+ 'rsrc/image/texture/table_header_tall.png' => '5cc420c4',
+ 'rsrc/js/application/aphlict/Aphlict.js' => '022516b4',
+ 'rsrc/js/application/aphlict/behavior-aphlict-dropdown.js' => 'e9a2940f',
+ 'rsrc/js/application/aphlict/behavior-aphlict-listen.js' => '4e61fa88',
+ 'rsrc/js/application/aphlict/behavior-aphlict-status.js' => 'c3703a16',
+ 'rsrc/js/application/aphlict/behavior-desktop-notifications-control.js' => '070679fe',
+ 'rsrc/js/application/calendar/behavior-day-view.js' => '727a5a61',
+ 'rsrc/js/application/calendar/behavior-event-all-day.js' => '0b1bc990',
+ 'rsrc/js/application/calendar/behavior-month-view.js' => '158c64e0',
+ 'rsrc/js/application/config/behavior-reorder-fields.js' => '2539f834',
+ 'rsrc/js/application/conpherence/ConpherenceThreadManager.js' => 'aec8e38c',
+ 'rsrc/js/application/conpherence/behavior-conpherence-search.js' => '91befbcc',
+ 'rsrc/js/application/conpherence/behavior-durable-column.js' => 'fa6f30b2',
+ 'rsrc/js/application/conpherence/behavior-menu.js' => '8c2ed2bf',
+ 'rsrc/js/application/conpherence/behavior-participant-pane.js' => '43ba89a2',
+ 'rsrc/js/application/conpherence/behavior-pontificate.js' => '4ae58b5a',
+ 'rsrc/js/application/conpherence/behavior-quicksand-blacklist.js' => '5a6f6a06',
+ 'rsrc/js/application/conpherence/behavior-toggle-widget.js' => '8f959ad0',
+ 'rsrc/js/application/countdown/timer.js' => '6a162524',
+ 'rsrc/js/application/daemon/behavior-bulk-job-reload.js' => '3829a3cf',
+ 'rsrc/js/application/dashboard/behavior-dashboard-async-panel.js' => '09ecf50c',
+ 'rsrc/js/application/dashboard/behavior-dashboard-move-panels.js' => '076bd092',
+ 'rsrc/js/application/dashboard/behavior-dashboard-query-panel-select.js' => '1e413dc9',
+ 'rsrc/js/application/dashboard/behavior-dashboard-tab-panel.js' => '9b1cbd76',
+ 'rsrc/js/application/diff/DiffChangeset.js' => 'e7cf10d6',
+ 'rsrc/js/application/diff/DiffChangesetList.js' => 'b91204e9',
+ 'rsrc/js/application/diff/DiffInline.js' => 'a4a14a94',
+ 'rsrc/js/application/diff/behavior-preview-link.js' => 'f51e9c17',
+ 'rsrc/js/application/differential/behavior-diff-radios.js' => '925fe8cd',
+ 'rsrc/js/application/differential/behavior-populate.js' => 'dfa1d313',
+ 'rsrc/js/application/differential/behavior-user-select.js' => 'e18685c0',
+ 'rsrc/js/application/diffusion/DiffusionLocateFileSource.js' => '94243d89',
+ 'rsrc/js/application/diffusion/behavior-audit-preview.js' => 'b7b73831',
+ 'rsrc/js/application/diffusion/behavior-commit-branches.js' => '4b671572',
+ 'rsrc/js/application/diffusion/behavior-commit-graph.js' => '1c88f154',
+ 'rsrc/js/application/diffusion/behavior-locate-file.js' => '87428eb2',
+ 'rsrc/js/application/diffusion/behavior-pull-lastmodified.js' => 'c715c123',
+ 'rsrc/js/application/doorkeeper/behavior-doorkeeper-tag.js' => '6a85bc5a',
+ 'rsrc/js/application/drydock/drydock-live-operation-status.js' => '47a0728b',
+ 'rsrc/js/application/files/behavior-document-engine.js' => '243d6c22',
+ 'rsrc/js/application/files/behavior-icon-composer.js' => '38a6cedb',
+ 'rsrc/js/application/files/behavior-launch-icon-composer.js' => 'a17b84f1',
+ 'rsrc/js/application/harbormaster/behavior-harbormaster-log.js' => 'b347a301',
+ 'rsrc/js/application/herald/HeraldRuleEditor.js' => '27daef73',
+ 'rsrc/js/application/herald/PathTypeahead.js' => 'ad486db3',
+ 'rsrc/js/application/herald/herald-rule-editor.js' => '0922e81d',
+ 'rsrc/js/application/maniphest/behavior-batch-selector.js' => 'cffd39b4',
+ 'rsrc/js/application/maniphest/behavior-line-chart.js' => '3e9da12d',
+ 'rsrc/js/application/maniphest/behavior-list-edit.js' => 'c687e867',
+ 'rsrc/js/application/maniphest/behavior-subpriorityeditor.js' => '8400307c',
+ 'rsrc/js/application/owners/OwnersPathEditor.js' => '2a8b62d9',
+ 'rsrc/js/application/owners/owners-path-editor.js' => 'ff688a7a',
+ 'rsrc/js/application/passphrase/passphrase-credential-control.js' => '48fe33d0',
+ 'rsrc/js/application/pholio/behavior-pholio-mock-edit.js' => '3eed1f2b',
+ 'rsrc/js/application/pholio/behavior-pholio-mock-view.js' => '5aa1544e',
+ 'rsrc/js/application/phortune/behavior-stripe-payment-form.js' => '02cb4398',
+ 'rsrc/js/application/phortune/behavior-test-payment-form.js' => '4a7fb02b',
+ 'rsrc/js/application/phortune/phortune-credit-card-form.js' => 'd12d214f',
+ 'rsrc/js/application/policy/behavior-policy-control.js' => '0eaa33a9',
+ 'rsrc/js/application/policy/behavior-policy-rule-editor.js' => '9347f172',
+ 'rsrc/js/application/projects/WorkboardBoard.js' => '45d0b2b1',
+ 'rsrc/js/application/projects/WorkboardCard.js' => '9a513421',
+ 'rsrc/js/application/projects/WorkboardColumn.js' => '8573dc1b',
+ 'rsrc/js/application/projects/WorkboardController.js' => '42c7a5a7',
+ 'rsrc/js/application/projects/behavior-project-boards.js' => '05c74d65',
+ 'rsrc/js/application/projects/behavior-project-create.js' => '34c53422',
+ 'rsrc/js/application/projects/behavior-reorder-columns.js' => '8ac32fd9',
+ 'rsrc/js/application/releeph/releeph-preview-branch.js' => '75184d68',
+ 'rsrc/js/application/releeph/releeph-request-state-change.js' => '9f081f05',
+ 'rsrc/js/application/releeph/releeph-request-typeahead.js' => 'aa3a100c',
+ 'rsrc/js/application/repository/repository-crossreference.js' => 'db0c0214',
+ 'rsrc/js/application/search/behavior-reorder-profile-menu-items.js' => 'e5bdb730',
+ 'rsrc/js/application/search/behavior-reorder-queries.js' => 'b86f297f',
+ 'rsrc/js/application/transactions/behavior-comment-actions.js' => '4dffaeb2',
+ 'rsrc/js/application/transactions/behavior-reorder-configs.js' => '4842f137',
+ 'rsrc/js/application/transactions/behavior-reorder-fields.js' => '0ad8d31f',
+ 'rsrc/js/application/transactions/behavior-show-older-transactions.js' => '600f440c',
+ 'rsrc/js/application/transactions/behavior-transaction-comment-form.js' => '2bdadf1a',
+ 'rsrc/js/application/transactions/behavior-transaction-list.js' => '9cec214e',
+ 'rsrc/js/application/typeahead/behavior-typeahead-browse.js' => '70245195',
+ 'rsrc/js/application/typeahead/behavior-typeahead-search.js' => '7b139193',
+ 'rsrc/js/application/uiexample/gesture-example.js' => '242dedd0',
+ 'rsrc/js/application/uiexample/notification-example.js' => '29819b75',
+ 'rsrc/js/core/Busy.js' => '5202e831',
+ 'rsrc/js/core/DragAndDropFileUpload.js' => '4370900d',
+ 'rsrc/js/core/DraggableList.js' => '3c6bd549',
+ 'rsrc/js/core/Favicon.js' => '7930776a',
+ 'rsrc/js/core/FileUpload.js' => 'ab85e184',
+ 'rsrc/js/core/Hovercard.js' => '074f0783',
+ 'rsrc/js/core/KeyboardShortcut.js' => 'c9749dcd',
+ 'rsrc/js/core/KeyboardShortcutManager.js' => '37b8a04a',
+ 'rsrc/js/core/MultirowRowManager.js' => '5b54c823',
+ 'rsrc/js/core/Notification.js' => 'a9b91e3f',
+ 'rsrc/js/core/Prefab.js' => 'bf457520',
+ 'rsrc/js/core/ShapedRequest.js' => 'abf88db8',
+ 'rsrc/js/core/TextAreaUtils.js' => 'f340a484',
+ 'rsrc/js/core/Title.js' => '43bc9360',
+ 'rsrc/js/core/ToolTip.js' => '83754533',
+ 'rsrc/js/core/behavior-active-nav.js' => '7353f43d',
+ 'rsrc/js/core/behavior-audio-source.js' => '3dc5ad43',
+ 'rsrc/js/core/behavior-autofocus.js' => '65bb0011',
+ 'rsrc/js/core/behavior-badge-view.js' => '92cdd7b6',
+ 'rsrc/js/core/behavior-bulk-editor.js' => 'aa6d2308',
+ 'rsrc/js/core/behavior-choose-control.js' => '04f8a1e3',
+ 'rsrc/js/core/behavior-copy.js' => 'cf32921f',
+ 'rsrc/js/core/behavior-detect-timezone.js' => '78bc5d94',
+ 'rsrc/js/core/behavior-device.js' => '0cf79f45',
+ 'rsrc/js/core/behavior-drag-and-drop-textarea.js' => '7ad020a5',
+ 'rsrc/js/core/behavior-fancy-datepicker.js' => '956f3eeb',
+ 'rsrc/js/core/behavior-file-tree.js' => 'ee82cedb',
+ 'rsrc/js/core/behavior-form.js' => '55d7b788',
+ 'rsrc/js/core/behavior-gesture.js' => 'b58d1a2a',
+ 'rsrc/js/core/behavior-global-drag-and-drop.js' => '1cab0e9a',
+ 'rsrc/js/core/behavior-high-security-warning.js' => 'dae2d55b',
+ 'rsrc/js/core/behavior-history-install.js' => '6a1583a8',
+ 'rsrc/js/core/behavior-hovercard.js' => '6c379000',
+ 'rsrc/js/core/behavior-keyboard-pager.js' => '1325b731',
+ 'rsrc/js/core/behavior-keyboard-shortcuts.js' => '2cc87f49',
+ 'rsrc/js/core/behavior-lightbox-attachments.js' => 'c7e748bf',
+ 'rsrc/js/core/behavior-line-linker.js' => 'e15c8b1f',
+ 'rsrc/js/core/behavior-linked-container.js' => '74446546',
+ 'rsrc/js/core/behavior-more.js' => '506aa3f4',
+ 'rsrc/js/core/behavior-object-selector.js' => 'a4af0b4a',
+ 'rsrc/js/core/behavior-oncopy.js' => '418f6684',
+ 'rsrc/js/core/behavior-phabricator-nav.js' => 'f166c949',
+ 'rsrc/js/core/behavior-phabricator-remarkup-assist.js' => '2f80333f',
+ 'rsrc/js/core/behavior-read-only-warning.js' => 'b9109f8f',
+ 'rsrc/js/core/behavior-redirect.js' => '407ee861',
+ 'rsrc/js/core/behavior-refresh-csrf.js' => '46116c01',
+ 'rsrc/js/core/behavior-remarkup-load-image.js' => '202bfa3f',
+ 'rsrc/js/core/behavior-remarkup-preview.js' => 'd8a86cfb',
+ 'rsrc/js/core/behavior-reorder-applications.js' => 'aa371860',
+ 'rsrc/js/core/behavior-reveal-content.js' => 'b105a3a6',
+ 'rsrc/js/core/behavior-scrollbar.js' => '92388bae',
+ 'rsrc/js/core/behavior-search-typeahead.js' => '1cb7d027',
+ 'rsrc/js/core/behavior-select-content.js' => 'e8240b50',
+ 'rsrc/js/core/behavior-select-on-click.js' => '66365ee2',
+ 'rsrc/js/core/behavior-setup-check-https.js' => '01384686',
+ 'rsrc/js/core/behavior-time-typeahead.js' => '5803b9e7',
+ 'rsrc/js/core/behavior-toggle-class.js' => 'f5c78ae3',
+ 'rsrc/js/core/behavior-tokenizer.js' => '3b4899b0',
+ 'rsrc/js/core/behavior-tooltip.js' => '73ecc1f8',
+ 'rsrc/js/core/behavior-user-menu.js' => '60cd9241',
+ 'rsrc/js/core/behavior-watch-anchor.js' => '0e6d261f',
+ 'rsrc/js/core/behavior-workflow.js' => '9623adc1',
+ 'rsrc/js/core/darkconsole/DarkLog.js' => '3b869402',
+ 'rsrc/js/core/darkconsole/DarkMessage.js' => '26cd4b73',
+ 'rsrc/js/core/darkconsole/behavior-dark-console.js' => 'f39d968b',
+ 'rsrc/js/core/phtize.js' => '2f1db1ed',
+ 'rsrc/js/phui/behavior-phui-dropdown-menu.js' => '5cf0501a',
+ 'rsrc/js/phui/behavior-phui-file-upload.js' => 'e150bd50',
+ 'rsrc/js/phui/behavior-phui-selectable-list.js' => 'b26a41e4',
+ 'rsrc/js/phui/behavior-phui-submenu.js' => 'b5e9bff9',
+ 'rsrc/js/phui/behavior-phui-tab-group.js' => '242aa08b',
+ 'rsrc/js/phuix/PHUIXActionListView.js' => 'c68f183f',
+ 'rsrc/js/phuix/PHUIXActionView.js' => 'aaa08f3b',
+ 'rsrc/js/phuix/PHUIXAutocomplete.js' => '58cc4ab8',
+ 'rsrc/js/phuix/PHUIXButtonView.js' => '55a24e84',
+ 'rsrc/js/phuix/PHUIXDropdownMenu.js' => 'bdce4d78',
+ 'rsrc/js/phuix/PHUIXExample.js' => 'c2c500a7',
+ 'rsrc/js/phuix/PHUIXFormControl.js' => '38c1f3fb',
+ 'rsrc/js/phuix/PHUIXIconView.js' => 'a5257c4e',
),
'symbols' => array(
- 'almanac-css' => 'dbb9b3af',
- 'aphront-bars' => '231ac33c',
- 'aphront-dark-console-css' => '0e14e8f6',
- 'aphront-dialog-view-css' => '6bfc244b',
- 'aphront-list-filter-view-css' => '5d6f0526',
- 'aphront-multi-column-view-css' => '84cc6640',
- 'aphront-panel-view-css' => '8427b78d',
- 'aphront-table-view-css' => '8c9bbafe',
- 'aphront-tokenizer-control-css' => '15d5ff71',
- 'aphront-tooltip-css' => 'cb1397a4',
- 'aphront-typeahead-control-css' => 'a4a21016',
- 'application-search-view-css' => '787f5b76',
- 'auth-css' => '0877ed6e',
- 'bulk-job-css' => 'df9c1d4a',
- 'conduit-api-css' => '7bc725c4',
- 'config-options-css' => '4615667b',
- 'conpherence-color-css' => 'abb4c358',
- 'conpherence-durable-column-view' => '89ea6bef',
- 'conpherence-header-pane-css' => 'cb6f4e19',
- 'conpherence-menu-css' => '69368e97',
- 'conpherence-message-pane-css' => 'b0f55ecc',
- 'conpherence-notification-css' => 'cef0a3fc',
- 'conpherence-participant-pane-css' => '26a3ce56',
- 'conpherence-thread-manager' => '4d863052',
- 'conpherence-transaction-css' => '85129c68',
- 'd3' => 'a11a5ff2',
- 'differential-changeset-view-css' => 'db34a142',
- 'differential-core-view-css' => '5b7b8ff4',
- 'differential-revision-add-comment-css' => 'c47f8c40',
- 'differential-revision-comment-css' => '14b8565a',
- 'differential-revision-history-css' => '0e8eb855',
- 'differential-revision-list-css' => 'f3c47d33',
- 'differential-table-of-contents-css' => 'ae4b7a55',
- 'diffusion-css' => '45727264',
- 'diffusion-icons-css' => '0c15255e',
- 'diffusion-readme-css' => '419dd5b6',
- 'diffusion-repository-css' => 'ee6f20ec',
- 'diviner-shared-css' => '896f1d43',
- 'font-fontawesome' => 'e838e088',
- 'font-lato' => 'c7ccd872',
- 'global-drag-and-drop-css' => 'b556a948',
- 'harbormaster-css' => '7446ce72',
- 'herald-css' => 'cd8d0134',
- 'herald-rule-editor' => 'dca75c0e',
- 'herald-test-css' => 'a52e323e',
- 'inline-comment-summary-css' => 'f23d4e8f',
- 'javelin-aphlict' => 'e1d4b11a',
- 'javelin-behavior' => '61cbc29a',
- 'javelin-behavior-aphlict-dropdown' => 'caade6f2',
- 'javelin-behavior-aphlict-listen' => '599a8f5f',
- 'javelin-behavior-aphlict-status' => '5e2634b9',
- 'javelin-behavior-aphront-basic-tokenizer' => 'b3a4b884',
- 'javelin-behavior-aphront-drag-and-drop-textarea' => '484a6e22',
- 'javelin-behavior-aphront-form-disable-on-submit' => '5c54cbf3',
- 'javelin-behavior-aphront-more' => 'a80d0378',
- 'javelin-behavior-audio-source' => '59b251eb',
- 'javelin-behavior-audit-preview' => 'd835b03a',
- 'javelin-behavior-badge-view' => '8ff5e24c',
- 'javelin-behavior-bulk-editor' => '66a6def1',
- 'javelin-behavior-bulk-job-reload' => 'edf8a145',
- 'javelin-behavior-calendar-month-view' => 'fe33e256',
- 'javelin-behavior-choose-control' => '327a00d1',
- 'javelin-behavior-comment-actions' => 'd848ec84',
- 'javelin-behavior-config-reorder-fields' => 'b6993408',
- 'javelin-behavior-conpherence-menu' => '4047cd35',
- 'javelin-behavior-conpherence-participant-pane' => 'd057e45a',
- 'javelin-behavior-conpherence-pontificate' => '55616e04',
- 'javelin-behavior-conpherence-search' => '9bbf3762',
- 'javelin-behavior-countdown-timer' => 'e4cc26b3',
- 'javelin-behavior-dark-console' => '66888767',
- 'javelin-behavior-dashboard-async-panel' => '469c0d9e',
- 'javelin-behavior-dashboard-move-panels' => '408bf173',
- 'javelin-behavior-dashboard-query-panel-select' => '453c5375',
- 'javelin-behavior-dashboard-tab-panel' => 'd4eecc63',
- 'javelin-behavior-day-view' => '4b3c4443',
- 'javelin-behavior-desktop-notifications-control' => '27ca6289',
- 'javelin-behavior-detect-timezone' => '4c193c96',
- 'javelin-behavior-device' => 'a3714c76',
- 'javelin-behavior-diff-preview-link' => '051c7832',
- 'javelin-behavior-differential-diff-radios' => 'e1ff79b1',
- 'javelin-behavior-differential-populate' => 'f0eb6708',
- 'javelin-behavior-differential-user-select' => 'a8d8459d',
- 'javelin-behavior-diffusion-commit-branches' => 'bdaf4d04',
- 'javelin-behavior-diffusion-commit-graph' => '75b83cbb',
- 'javelin-behavior-diffusion-locate-file' => '6d3e1947',
- 'javelin-behavior-diffusion-pull-lastmodified' => 'f01586dc',
- 'javelin-behavior-document-engine' => '3935d8c4',
- 'javelin-behavior-doorkeeper-tag' => '1db13e70',
- 'javelin-behavior-drydock-live-operation-status' => '901935ef',
- 'javelin-behavior-durable-column' => '2ae077e1',
- 'javelin-behavior-editengine-reorder-configs' => 'd7a74243',
- 'javelin-behavior-editengine-reorder-fields' => 'b59e1e96',
- 'javelin-behavior-event-all-day' => 'b41537c9',
- 'javelin-behavior-fancy-datepicker' => 'ecf4e799',
- 'javelin-behavior-global-drag-and-drop' => '960f6a39',
- 'javelin-behavior-harbormaster-log' => '549459b8',
- 'javelin-behavior-herald-rule-editor' => '7ebaeed3',
- 'javelin-behavior-high-security-warning' => 'a464fe03',
- 'javelin-behavior-history-install' => '7ee2b591',
- 'javelin-behavior-icon-composer' => '8499b6ab',
- 'javelin-behavior-launch-icon-composer' => '48086888',
- 'javelin-behavior-lightbox-attachments' => '6b31879a',
- 'javelin-behavior-line-chart' => 'e4232876',
- 'javelin-behavior-linked-container' => '291da458',
- 'javelin-behavior-maniphest-batch-selector' => 'ad54037e',
- 'javelin-behavior-maniphest-list-editor' => 'a9f88de2',
- 'javelin-behavior-maniphest-subpriority-editor' => '71237763',
- 'javelin-behavior-owners-path-editor' => '7a68dda3',
- 'javelin-behavior-passphrase-credential-control' => '3cb0b2fc',
- 'javelin-behavior-phabricator-active-nav' => 'e379b58e',
- 'javelin-behavior-phabricator-autofocus' => '7319e029',
- 'javelin-behavior-phabricator-clipboard-copy' => 'b0b8f86d',
- 'javelin-behavior-phabricator-file-tree' => '88236f00',
- 'javelin-behavior-phabricator-gesture' => '3ab51e2c',
- 'javelin-behavior-phabricator-gesture-example' => '558829c2',
- 'javelin-behavior-phabricator-keyboard-pager' => 'a8da01f0',
- 'javelin-behavior-phabricator-keyboard-shortcuts' => '01fca1f0',
- 'javelin-behavior-phabricator-line-linker' => '66a62306',
- 'javelin-behavior-phabricator-nav' => '9d32bc88',
- 'javelin-behavior-phabricator-notification-example' => '8ce821c5',
- 'javelin-behavior-phabricator-object-selector' => '77c1f0b0',
- 'javelin-behavior-phabricator-oncopy' => '2926fff2',
- 'javelin-behavior-phabricator-remarkup-assist' => 'acd29eee',
- 'javelin-behavior-phabricator-reveal-content' => '60821bc7',
- 'javelin-behavior-phabricator-search-typeahead' => 'c3e917d9',
- 'javelin-behavior-phabricator-show-older-transactions' => '0e1eca96',
- 'javelin-behavior-phabricator-tooltips' => 'c420b0b9',
- 'javelin-behavior-phabricator-transaction-comment-form' => 'b23b49e6',
- 'javelin-behavior-phabricator-transaction-list' => '1f6794f6',
- 'javelin-behavior-phabricator-watch-anchor' => '9f36c42d',
- 'javelin-behavior-pholio-mock-edit' => 'bee502c8',
- 'javelin-behavior-pholio-mock-view' => 'ec1f3669',
- 'javelin-behavior-phui-dropdown-menu' => 'b95d6f7d',
- 'javelin-behavior-phui-file-upload' => 'b003d4fb',
- 'javelin-behavior-phui-hovercards' => 'bcaccd64',
- 'javelin-behavior-phui-selectable-list' => '464259a2',
- 'javelin-behavior-phui-submenu' => 'a6f7a73b',
- 'javelin-behavior-phui-tab-group' => '0a0b10e9',
- 'javelin-behavior-phuix-example' => '68af71ca',
- 'javelin-behavior-policy-control' => 'd0c516d5',
- 'javelin-behavior-policy-rule-editor' => '5e9f347c',
- 'javelin-behavior-project-boards' => '4250a34e',
- 'javelin-behavior-project-create' => '065227cc',
- 'javelin-behavior-quicksand-blacklist' => '7927a7d3',
- 'javelin-behavior-read-only-warning' => 'ba158207',
- 'javelin-behavior-redirect' => '0213259f',
- 'javelin-behavior-refresh-csrf' => 'ab2f381b',
- 'javelin-behavior-releeph-preview-branch' => 'b2b4fbaf',
- 'javelin-behavior-releeph-request-state-change' => 'a0b57eb8',
- 'javelin-behavior-releeph-request-typeahead' => 'de2e896f',
- 'javelin-behavior-remarkup-load-image' => '040fce04',
- 'javelin-behavior-remarkup-preview' => '4b700e9e',
- 'javelin-behavior-reorder-applications' => '76b9fc3e',
- 'javelin-behavior-reorder-columns' => 'e1d25dfb',
- 'javelin-behavior-reorder-profile-menu-items' => 'e2e0a072',
- 'javelin-behavior-repository-crossreference' => '9a860428',
- 'javelin-behavior-scrollbar' => '834a1173',
- 'javelin-behavior-search-reorder-queries' => 'e9581f08',
- 'javelin-behavior-select-content' => 'bf5374ef',
- 'javelin-behavior-select-on-click' => '4e3e79a6',
- 'javelin-behavior-setup-check-https' => '491416b3',
- 'javelin-behavior-stripe-payment-form' => 'a6b98425',
- 'javelin-behavior-test-payment-form' => 'fc91ab6c',
- 'javelin-behavior-time-typeahead' => '522431f7',
- 'javelin-behavior-toggle-class' => '92b9ec77',
- 'javelin-behavior-toggle-widget' => '3dbf94d5',
- 'javelin-behavior-typeahead-browse' => '635de1ec',
- 'javelin-behavior-typeahead-search' => '93d0c9e3',
- 'javelin-behavior-user-menu' => '31420f77',
- 'javelin-behavior-view-placeholder' => '47830651',
- 'javelin-behavior-workflow' => '0a3f3021',
- 'javelin-color' => '7e41274a',
- 'javelin-cookie' => '62dfea03',
- 'javelin-diffusion-locate-file-source' => '00676f00',
- 'javelin-dom' => '4976858c',
- 'javelin-dynval' => 'f6555212',
- 'javelin-event' => 'ef7e057f',
- 'javelin-fx' => '54b612ba',
- 'javelin-history' => 'd4505101',
- 'javelin-install' => '05270951',
- 'javelin-json' => '69adf288',
- 'javelin-leader' => '7f243deb',
- 'javelin-magical-init' => '8d83d2a1',
- 'javelin-mask' => '8a41885b',
- 'javelin-quicksand' => '6b8ef10b',
- 'javelin-reactor' => '2b8de964',
- 'javelin-reactor-dom' => 'c90a04fc',
- 'javelin-reactor-node-calmer' => '76f4ebed',
- 'javelin-reactornode' => '1ad0a787',
- 'javelin-request' => '94b750d2',
- 'javelin-resource' => '44959b73',
- 'javelin-routable' => 'b3e7d692',
- 'javelin-router' => '29274e2b',
- 'javelin-scrollbar' => '9065f639',
- 'javelin-sound' => '949c0fe5',
- 'javelin-stratcom' => '327f418a',
- 'javelin-tokenizer' => 'bb6e5c16',
- 'javelin-typeahead' => '70baed2f',
- 'javelin-typeahead-composite-source' => '503e17fd',
- 'javelin-typeahead-normalizer' => '185bbd53',
- 'javelin-typeahead-ondemand-source' => '013ffff9',
- 'javelin-typeahead-preloaded-source' => '54f314a0',
- 'javelin-typeahead-source' => 'ab9e0a82',
- 'javelin-typeahead-static-source' => '6c0e62fa',
- 'javelin-uri' => 'c989ade3',
- 'javelin-util' => '93cc50d6',
- 'javelin-vector' => '2caa8fb8',
- 'javelin-view' => '0f764c35',
- 'javelin-view-html' => 'fe287620',
- 'javelin-view-interpreter' => 'f829edb3',
- 'javelin-view-renderer' => '6c2b09a2',
- 'javelin-view-visitor' => 'efe49472',
- 'javelin-websocket' => '3ffe32d6',
- 'javelin-workboard-board' => '8935deef',
- 'javelin-workboard-card' => 'c587b80f',
- 'javelin-workboard-column' => '758b4758',
- 'javelin-workboard-controller' => '26167537',
- 'javelin-workflow' => '6a726c55',
- 'maniphest-report-css' => '9b9580b7',
- 'maniphest-task-edit-css' => 'fda62a9b',
- 'maniphest-task-summary-css' => '11cc5344',
- 'multirow-row-manager' => 'b5d57730',
- 'owners-path-editor' => 'c96502cf',
- 'owners-path-editor-css' => '9c136c29',
- 'paste-css' => '9fcc9773',
- 'path-typeahead' => '6d8c7912',
- 'people-picture-menu-item-css' => 'a06f7f34',
- 'people-profile-css' => '4df76faf',
- 'phabricator-action-list-view-css' => '0bcd9a45',
- 'phabricator-busy' => '59a7976a',
- 'phabricator-chatlog-css' => 'd295b020',
- 'phabricator-content-source-view-css' => '4b8b05d4',
- 'phabricator-core-css' => '62fa3ace',
- 'phabricator-countdown-css' => '16c52f5c',
- 'phabricator-darklog' => 'c8e1ffe3',
- 'phabricator-darkmessage' => 'c48cccdd',
- 'phabricator-dashboard-css' => 'fe5b1869',
- 'phabricator-diff-changeset' => 'b49b59d6',
- 'phabricator-diff-changeset-list' => '0a84bcc1',
- 'phabricator-diff-inline' => 'e83d28f3',
- 'phabricator-drag-and-drop-file-upload' => '58dea2fa',
- 'phabricator-draggable-list' => 'bea6e7f4',
- 'phabricator-fatal-config-template-css' => '8f18fa41',
- 'phabricator-favicon' => '1fe2510c',
- 'phabricator-feed-css' => 'ecd4ec57',
- 'phabricator-file-upload' => '680ea2c8',
- 'phabricator-filetree-view-css' => 'b912ad97',
- 'phabricator-flag-css' => 'bba8f811',
- 'phabricator-keyboard-shortcut' => '1ae869f2',
- 'phabricator-keyboard-shortcut-manager' => 'c19dd9b9',
- 'phabricator-main-menu-view' => '1802a242',
- 'phabricator-nav-view-css' => '694d7723',
- 'phabricator-notification' => '4f774dac',
- 'phabricator-notification-css' => '457861ec',
- 'phabricator-notification-menu-css' => 'ef480927',
- 'phabricator-object-selector-css' => '85ee8ce6',
- 'phabricator-phtize' => 'd254d646',
- 'phabricator-prefab' => '77b0ae28',
- 'phabricator-remarkup-css' => 'b182076e',
- 'phabricator-search-results-css' => '505dd8cf',
- 'phabricator-shaped-request' => '7cbe244b',
- 'phabricator-slowvote-css' => 'a94b7230',
- 'phabricator-source-code-view-css' => '2ab25dfa',
- 'phabricator-standard-page-view' => '34ee718b',
- 'phabricator-textareautils' => '320810c8',
- 'phabricator-title' => '485aaa6c',
- 'phabricator-tooltip' => '358b8c04',
- 'phabricator-ui-example-css' => '528b19de',
- 'phabricator-zindex-css' => '9d8f7c4b',
- 'phame-css' => '8cb3afcd',
- 'pholio-css' => 'ca89d380',
- 'pholio-edit-css' => '07676f51',
- 'pholio-inline-comments-css' => '8e545e49',
- 'phortune-credit-card-form' => '2290aeef',
- 'phortune-credit-card-form-css' => '8391eb02',
- 'phortune-css' => '5b99dae0',
- 'phortune-invoice-css' => '476055e2',
- 'phrequent-css' => 'ffc185ad',
- 'phriction-document-css' => '4282e4ad',
- 'phui-action-panel-css' => 'b4798122',
- 'phui-badge-view-css' => '22c0cf4f',
- 'phui-basic-nav-view-css' => '98c11ab3',
- 'phui-big-info-view-css' => 'acc3492c',
- 'phui-box-css' => '4bd6cdb9',
- 'phui-bulk-editor-css' => '9a81e5d5',
- 'phui-button-bar-css' => 'f1ff5494',
- 'phui-button-css' => '6ccb303c',
- 'phui-button-simple-css' => '8e1baf68',
- 'phui-calendar-css' => 'f1ddf11c',
- 'phui-calendar-day-css' => '572b1893',
- 'phui-calendar-list-css' => '576be600',
- 'phui-calendar-month-css' => '21154caf',
- 'phui-chart-css' => '6bf6f78e',
- 'phui-cms-css' => '504b4b23',
- 'phui-comment-form-css' => 'ac68149f',
- 'phui-comment-panel-css' => 'f50152ad',
- 'phui-crumbs-view-css' => '10728aaa',
- 'phui-curtain-view-css' => '2bdaf026',
- 'phui-document-summary-view-css' => '9ca48bdf',
- 'phui-document-view-css' => 'c4ac41f9',
- 'phui-document-view-pro-css' => 'dd79b5df',
- 'phui-feed-story-css' => '44a9c8e9',
- 'phui-font-icon-base-css' => '870a7360',
- 'phui-fontkit-css' => '1320ed01',
- 'phui-form-css' => '7aaa04e3',
- 'phui-form-view-css' => 'b04e08d9',
- 'phui-head-thing-view-css' => 'fd311e5f',
- 'phui-header-view-css' => '1ba8b707',
- 'phui-hovercard' => '1bd28176',
- 'phui-hovercard-view-css' => '4a484541',
- 'phui-icon-set-selector-css' => '87db8fee',
- 'phui-icon-view-css' => 'cf24ceec',
- 'phui-image-mask-css' => 'a8498f9c',
- 'phui-info-view-css' => 'e929f98c',
- 'phui-inline-comment-view-css' => '65ae3bc2',
- 'phui-invisible-character-view-css' => '6993d9f0',
- 'phui-left-right-css' => '75227a4d',
- 'phui-lightbox-css' => '0a035e40',
- 'phui-list-view-css' => '38f8c9bd',
- 'phui-object-box-css' => '9cff003c',
- 'phui-oi-big-ui-css' => '7a7c22af',
- 'phui-oi-color-css' => 'cd2b9b77',
- 'phui-oi-drag-ui-css' => '08f4ccc3',
- 'phui-oi-flush-ui-css' => '9d9685d6',
- 'phui-oi-list-view-css' => '7c5c1291',
- 'phui-oi-simple-ui-css' => 'a8beebea',
- 'phui-pager-css' => 'edcbc226',
- 'phui-pinboard-view-css' => '2495140e',
- 'phui-property-list-view-css' => '546a04ae',
- 'phui-remarkup-preview-css' => '54a34863',
- 'phui-segment-bar-view-css' => 'b1d1b892',
- 'phui-spacing-css' => '042804d6',
- 'phui-status-list-view-css' => 'd5263e49',
- 'phui-tag-view-css' => 'b4719c50',
- 'phui-theme-css' => '9f261c6b',
- 'phui-timeline-view-css' => '6ddf8126',
- 'phui-two-column-view-css' => '44ec4951',
- 'phui-workboard-color-css' => '783cdff5',
- 'phui-workboard-view-css' => '3bc85455',
- 'phui-workcard-view-css' => 'cca5fa92',
- 'phui-workpanel-view-css' => 'a3a63478',
- 'phuix-action-list-view' => 'b5c256b8',
- 'phuix-action-view' => '8d4a8c72',
- 'phuix-autocomplete' => 'df1bbd34',
- 'phuix-button-view' => '85ac9772',
- 'phuix-dropdown-menu' => '04b2ae03',
- 'phuix-form-control-view' => '210a16c1',
- 'phuix-icon-view' => 'bff6884b',
- 'policy-css' => '957ea14c',
- 'policy-edit-css' => '815c66f7',
- 'policy-transaction-detail-css' => '82100a43',
- 'ponder-view-css' => 'fbd45f96',
- 'project-card-view-css' => '0010bb52',
- 'project-view-css' => '792c9057',
- 'releeph-core' => '9b3c5733',
- 'releeph-preview-branch' => 'b7a6f4a5',
- 'releeph-request-differential-create-dialog' => '8d8b92cd',
- 'releeph-request-typeahead-css' => '667a48ae',
- 'setup-issue-css' => '30ee0173',
- 'sprite-login-css' => '396f3c3a',
- 'sprite-tokens-css' => '9cdfd599',
- 'syntax-default-css' => '9923583c',
- 'syntax-highlighting-css' => 'e9c95dd4',
- 'tokens-css' => '3d0f239e',
- 'typeahead-browse-css' => 'f2818435',
- 'unhandled-exception-css' => '4c96257a',
+ 'almanac-css' => '2e050f4f',
+ 'aphront-bars' => '4a327b4a',
+ 'aphront-dark-console-css' => '7f06cda2',
+ 'aphront-dialog-view-css' => 'b70c70df',
+ 'aphront-list-filter-view-css' => 'feb64255',
+ 'aphront-multi-column-view-css' => 'fbc00ba3',
+ 'aphront-panel-view-css' => '46923d46',
+ 'aphront-table-view-css' => '76eda3f8',
+ 'aphront-tokenizer-control-css' => 'b52d0668',
+ 'aphront-tooltip-css' => 'e3f2412f',
+ 'aphront-typeahead-control-css' => '8779483d',
+ 'application-search-view-css' => '0f7c06d8',
+ 'auth-css' => '9f6e4ed8',
+ 'bulk-job-css' => '73af99f5',
+ 'conduit-api-css' => 'ce2cfc41',
+ 'config-options-css' => '16c920ae',
+ 'conpherence-color-css' => 'b17746b0',
+ 'conpherence-durable-column-view' => '2d57072b',
+ 'conpherence-header-pane-css' => 'c9a3db8e',
+ 'conpherence-menu-css' => '67f4680d',
+ 'conpherence-message-pane-css' => 'd244db1e',
+ 'conpherence-notification-css' => '6a3d4e58',
+ 'conpherence-participant-pane-css' => '69e0058a',
+ 'conpherence-thread-manager' => 'aec8e38c',
+ 'conpherence-transaction-css' => '3a3f5e7e',
+ 'd3' => 'd67475f5',
+ 'differential-changeset-view-css' => '73660575',
+ 'differential-core-view-css' => 'bdb93065',
+ 'differential-revision-add-comment-css' => '7e5900d9',
+ 'differential-revision-comment-css' => '7dbc8d1d',
+ 'differential-revision-history-css' => '8aa3eac5',
+ 'differential-revision-list-css' => '93d2df7d',
+ 'differential-table-of-contents-css' => '0e3364c7',
+ 'diffusion-css' => 'b54c77b0',
+ 'diffusion-icons-css' => '23b31a1b',
+ 'diffusion-readme-css' => 'b68a76e4',
+ 'diffusion-repository-css' => 'b89e8c6c',
+ 'diviner-shared-css' => '4bd263b0',
+ 'font-fontawesome' => '3883938a',
+ 'font-lato' => '23631304',
+ 'global-drag-and-drop-css' => '1d2713a4',
+ 'harbormaster-css' => '8dfe16b2',
+ 'herald-css' => '648d39e2',
+ 'herald-rule-editor' => '27daef73',
+ 'herald-test-css' => 'e004176f',
+ 'inline-comment-summary-css' => '81eb368d',
+ 'javelin-aphlict' => '022516b4',
+ 'javelin-behavior' => 'fce5d170',
+ 'javelin-behavior-aphlict-dropdown' => 'e9a2940f',
+ 'javelin-behavior-aphlict-listen' => '4e61fa88',
+ 'javelin-behavior-aphlict-status' => 'c3703a16',
+ 'javelin-behavior-aphront-basic-tokenizer' => '3b4899b0',
+ 'javelin-behavior-aphront-drag-and-drop-textarea' => '7ad020a5',
+ 'javelin-behavior-aphront-form-disable-on-submit' => '55d7b788',
+ 'javelin-behavior-aphront-more' => '506aa3f4',
+ 'javelin-behavior-audio-source' => '3dc5ad43',
+ 'javelin-behavior-audit-preview' => 'b7b73831',
+ 'javelin-behavior-badge-view' => '92cdd7b6',
+ 'javelin-behavior-bulk-editor' => 'aa6d2308',
+ 'javelin-behavior-bulk-job-reload' => '3829a3cf',
+ 'javelin-behavior-calendar-month-view' => '158c64e0',
+ 'javelin-behavior-choose-control' => '04f8a1e3',
+ 'javelin-behavior-comment-actions' => '4dffaeb2',
+ 'javelin-behavior-config-reorder-fields' => '2539f834',
+ 'javelin-behavior-conpherence-menu' => '8c2ed2bf',
+ 'javelin-behavior-conpherence-participant-pane' => '43ba89a2',
+ 'javelin-behavior-conpherence-pontificate' => '4ae58b5a',
+ 'javelin-behavior-conpherence-search' => '91befbcc',
+ 'javelin-behavior-countdown-timer' => '6a162524',
+ 'javelin-behavior-dark-console' => 'f39d968b',
+ 'javelin-behavior-dashboard-async-panel' => '09ecf50c',
+ 'javelin-behavior-dashboard-move-panels' => '076bd092',
+ 'javelin-behavior-dashboard-query-panel-select' => '1e413dc9',
+ 'javelin-behavior-dashboard-tab-panel' => '9b1cbd76',
+ 'javelin-behavior-day-view' => '727a5a61',
+ 'javelin-behavior-desktop-notifications-control' => '070679fe',
+ 'javelin-behavior-detect-timezone' => '78bc5d94',
+ 'javelin-behavior-device' => '0cf79f45',
+ 'javelin-behavior-diff-preview-link' => 'f51e9c17',
+ 'javelin-behavior-differential-diff-radios' => '925fe8cd',
+ 'javelin-behavior-differential-populate' => 'dfa1d313',
+ 'javelin-behavior-differential-user-select' => 'e18685c0',
+ 'javelin-behavior-diffusion-commit-branches' => '4b671572',
+ 'javelin-behavior-diffusion-commit-graph' => '1c88f154',
+ 'javelin-behavior-diffusion-locate-file' => '87428eb2',
+ 'javelin-behavior-diffusion-pull-lastmodified' => 'c715c123',
+ 'javelin-behavior-document-engine' => '243d6c22',
+ 'javelin-behavior-doorkeeper-tag' => '6a85bc5a',
+ 'javelin-behavior-drydock-live-operation-status' => '47a0728b',
+ 'javelin-behavior-durable-column' => 'fa6f30b2',
+ 'javelin-behavior-editengine-reorder-configs' => '4842f137',
+ 'javelin-behavior-editengine-reorder-fields' => '0ad8d31f',
+ 'javelin-behavior-event-all-day' => '0b1bc990',
+ 'javelin-behavior-fancy-datepicker' => '956f3eeb',
+ 'javelin-behavior-global-drag-and-drop' => '1cab0e9a',
+ 'javelin-behavior-harbormaster-log' => 'b347a301',
+ 'javelin-behavior-herald-rule-editor' => '0922e81d',
+ 'javelin-behavior-high-security-warning' => 'dae2d55b',
+ 'javelin-behavior-history-install' => '6a1583a8',
+ 'javelin-behavior-icon-composer' => '38a6cedb',
+ 'javelin-behavior-launch-icon-composer' => 'a17b84f1',
+ 'javelin-behavior-lightbox-attachments' => 'c7e748bf',
+ 'javelin-behavior-line-chart' => '3e9da12d',
+ 'javelin-behavior-linked-container' => '74446546',
+ 'javelin-behavior-maniphest-batch-selector' => 'cffd39b4',
+ 'javelin-behavior-maniphest-list-editor' => 'c687e867',
+ 'javelin-behavior-maniphest-subpriority-editor' => '8400307c',
+ 'javelin-behavior-owners-path-editor' => 'ff688a7a',
+ 'javelin-behavior-passphrase-credential-control' => '48fe33d0',
+ 'javelin-behavior-phabricator-active-nav' => '7353f43d',
+ 'javelin-behavior-phabricator-autofocus' => '65bb0011',
+ 'javelin-behavior-phabricator-clipboard-copy' => 'cf32921f',
+ 'javelin-behavior-phabricator-file-tree' => 'ee82cedb',
+ 'javelin-behavior-phabricator-gesture' => 'b58d1a2a',
+ 'javelin-behavior-phabricator-gesture-example' => '242dedd0',
+ 'javelin-behavior-phabricator-keyboard-pager' => '1325b731',
+ 'javelin-behavior-phabricator-keyboard-shortcuts' => '2cc87f49',
+ 'javelin-behavior-phabricator-line-linker' => 'e15c8b1f',
+ 'javelin-behavior-phabricator-nav' => 'f166c949',
+ 'javelin-behavior-phabricator-notification-example' => '29819b75',
+ 'javelin-behavior-phabricator-object-selector' => 'a4af0b4a',
+ 'javelin-behavior-phabricator-oncopy' => '418f6684',
+ 'javelin-behavior-phabricator-remarkup-assist' => '2f80333f',
+ 'javelin-behavior-phabricator-reveal-content' => 'b105a3a6',
+ 'javelin-behavior-phabricator-search-typeahead' => '1cb7d027',
+ 'javelin-behavior-phabricator-show-older-transactions' => '600f440c',
+ 'javelin-behavior-phabricator-tooltips' => '73ecc1f8',
+ 'javelin-behavior-phabricator-transaction-comment-form' => '2bdadf1a',
+ 'javelin-behavior-phabricator-transaction-list' => '9cec214e',
+ 'javelin-behavior-phabricator-watch-anchor' => '0e6d261f',
+ 'javelin-behavior-pholio-mock-edit' => '3eed1f2b',
+ 'javelin-behavior-pholio-mock-view' => '5aa1544e',
+ 'javelin-behavior-phui-dropdown-menu' => '5cf0501a',
+ 'javelin-behavior-phui-file-upload' => 'e150bd50',
+ 'javelin-behavior-phui-hovercards' => '6c379000',
+ 'javelin-behavior-phui-selectable-list' => 'b26a41e4',
+ 'javelin-behavior-phui-submenu' => 'b5e9bff9',
+ 'javelin-behavior-phui-tab-group' => '242aa08b',
+ 'javelin-behavior-phuix-example' => 'c2c500a7',
+ 'javelin-behavior-policy-control' => '0eaa33a9',
+ 'javelin-behavior-policy-rule-editor' => '9347f172',
+ 'javelin-behavior-project-boards' => '05c74d65',
+ 'javelin-behavior-project-create' => '34c53422',
+ 'javelin-behavior-quicksand-blacklist' => '5a6f6a06',
+ 'javelin-behavior-read-only-warning' => 'b9109f8f',
+ 'javelin-behavior-redirect' => '407ee861',
+ 'javelin-behavior-refresh-csrf' => '46116c01',
+ 'javelin-behavior-releeph-preview-branch' => '75184d68',
+ 'javelin-behavior-releeph-request-state-change' => '9f081f05',
+ 'javelin-behavior-releeph-request-typeahead' => 'aa3a100c',
+ 'javelin-behavior-remarkup-load-image' => '202bfa3f',
+ 'javelin-behavior-remarkup-preview' => 'd8a86cfb',
+ 'javelin-behavior-reorder-applications' => 'aa371860',
+ 'javelin-behavior-reorder-columns' => '8ac32fd9',
+ 'javelin-behavior-reorder-profile-menu-items' => 'e5bdb730',
+ 'javelin-behavior-repository-crossreference' => 'db0c0214',
+ 'javelin-behavior-scrollbar' => '92388bae',
+ 'javelin-behavior-search-reorder-queries' => 'b86f297f',
+ 'javelin-behavior-select-content' => 'e8240b50',
+ 'javelin-behavior-select-on-click' => '66365ee2',
+ 'javelin-behavior-setup-check-https' => '01384686',
+ 'javelin-behavior-stripe-payment-form' => '02cb4398',
+ 'javelin-behavior-test-payment-form' => '4a7fb02b',
+ 'javelin-behavior-time-typeahead' => '5803b9e7',
+ 'javelin-behavior-toggle-class' => 'f5c78ae3',
+ 'javelin-behavior-toggle-widget' => '8f959ad0',
+ 'javelin-behavior-typeahead-browse' => '70245195',
+ 'javelin-behavior-typeahead-search' => '7b139193',
+ 'javelin-behavior-user-menu' => '60cd9241',
+ 'javelin-behavior-view-placeholder' => 'a9942052',
+ 'javelin-behavior-workflow' => '9623adc1',
+ 'javelin-color' => '78f811c9',
+ 'javelin-cookie' => '05d290ef',
+ 'javelin-diffusion-locate-file-source' => '94243d89',
+ 'javelin-dom' => '94681e22',
+ 'javelin-dynval' => '202a2e85',
+ 'javelin-event' => 'c03f2fb4',
+ 'javelin-fx' => '34450586',
+ 'javelin-history' => '030b4f7a',
+ 'javelin-install' => '5902260c',
+ 'javelin-json' => '541f81c3',
+ 'javelin-leader' => '0d2490ce',
+ 'javelin-magical-init' => '98e6504a',
+ 'javelin-mask' => '7c4d8998',
+ 'javelin-quicksand' => 'd3799cb4',
+ 'javelin-reactor' => '1c850a26',
+ 'javelin-reactor-dom' => '6cfa0008',
+ 'javelin-reactor-node-calmer' => '225bbb98',
+ 'javelin-reactornode' => '72960bc1',
+ 'javelin-request' => '91863989',
+ 'javelin-resource' => '740956e1',
+ 'javelin-routable' => '6a18c42e',
+ 'javelin-router' => '32755edb',
+ 'javelin-scrollbar' => 'a43ae2ae',
+ 'javelin-sound' => 'e562708c',
+ 'javelin-stratcom' => '0889b835',
+ 'javelin-tokenizer' => '89a1ae3a',
+ 'javelin-typeahead' => 'a4356cde',
+ 'javelin-typeahead-composite-source' => '22ee68a5',
+ 'javelin-typeahead-normalizer' => 'a241536a',
+ 'javelin-typeahead-ondemand-source' => '23387297',
+ 'javelin-typeahead-preloaded-source' => '5a79f6c3',
+ 'javelin-typeahead-source' => '8badee71',
+ 'javelin-typeahead-static-source' => '80bff3af',
+ 'javelin-uri' => '2e255291',
+ 'javelin-util' => '22ae1776',
+ 'javelin-vector' => 'e9c80beb',
+ 'javelin-view' => '289bf236',
+ 'javelin-view-html' => 'f8c4e135',
+ 'javelin-view-interpreter' => '876506b6',
+ 'javelin-view-renderer' => '9aae2b66',
+ 'javelin-view-visitor' => '308f9fe4',
+ 'javelin-websocket' => 'fdc13e4e',
+ 'javelin-workboard-board' => '45d0b2b1',
+ 'javelin-workboard-card' => '9a513421',
+ 'javelin-workboard-column' => '8573dc1b',
+ 'javelin-workboard-controller' => '42c7a5a7',
+ 'javelin-workflow' => '958e9045',
+ 'maniphest-report-css' => '3d53188b',
+ 'maniphest-task-edit-css' => '272daa84',
+ 'maniphest-task-summary-css' => '61d1667e',
+ 'multirow-row-manager' => '5b54c823',
+ 'owners-path-editor' => '2a8b62d9',
+ 'owners-path-editor-css' => 'fa7c13ef',
+ 'paste-css' => 'b37bcd38',
+ 'path-typeahead' => 'ad486db3',
+ 'people-picture-menu-item-css' => 'fe8e07cf',
+ 'people-profile-css' => '2ea2daa1',
+ 'phabricator-action-list-view-css' => 'c1a7631d',
+ 'phabricator-busy' => '5202e831',
+ 'phabricator-chatlog-css' => 'abdc76ee',
+ 'phabricator-content-source-view-css' => 'cdf0d579',
+ 'phabricator-core-css' => '1b29ed61',
+ 'phabricator-countdown-css' => 'bff8012f',
+ 'phabricator-darklog' => '3b869402',
+ 'phabricator-darkmessage' => '26cd4b73',
+ 'phabricator-dashboard-css' => '4267d6c6',
+ 'phabricator-diff-changeset' => 'e7cf10d6',
+ 'phabricator-diff-changeset-list' => 'b91204e9',
+ 'phabricator-diff-inline' => 'a4a14a94',
+ 'phabricator-drag-and-drop-file-upload' => '4370900d',
+ 'phabricator-draggable-list' => '3c6bd549',
+ 'phabricator-fatal-config-template-css' => '20babf50',
+ 'phabricator-favicon' => '7930776a',
+ 'phabricator-feed-css' => 'd8b6e3f8',
+ 'phabricator-file-upload' => 'ab85e184',
+ 'phabricator-filetree-view-css' => '56cdd875',
+ 'phabricator-flag-css' => '2b77be8d',
+ 'phabricator-keyboard-shortcut' => 'c9749dcd',
+ 'phabricator-keyboard-shortcut-manager' => '37b8a04a',
+ 'phabricator-main-menu-view' => '8e2d9a28',
+ 'phabricator-nav-view-css' => 'f8a0c1bf',
+ 'phabricator-notification' => 'a9b91e3f',
+ 'phabricator-notification-css' => '30240bd2',
+ 'phabricator-notification-menu-css' => 'e6962e89',
+ 'phabricator-object-selector-css' => 'ee77366f',
+ 'phabricator-phtize' => '2f1db1ed',
+ 'phabricator-prefab' => 'bf457520',
+ 'phabricator-remarkup-css' => '9e627d41',
+ 'phabricator-search-results-css' => '9ea70ace',
+ 'phabricator-shaped-request' => 'abf88db8',
+ 'phabricator-slowvote-css' => '1694baed',
+ 'phabricator-source-code-view-css' => '03d7ac28',
+ 'phabricator-standard-page-view' => '8a295cb9',
+ 'phabricator-textareautils' => 'f340a484',
+ 'phabricator-title' => '43bc9360',
+ 'phabricator-tooltip' => '83754533',
+ 'phabricator-ui-example-css' => 'b4795059',
+ 'phabricator-zindex-css' => '99c0f5eb',
+ 'phame-css' => '799febf9',
+ 'pholio-css' => '88ef5ef1',
+ 'pholio-edit-css' => '4df55b3b',
+ 'pholio-inline-comments-css' => '722b48c2',
+ 'phortune-credit-card-form' => 'd12d214f',
+ 'phortune-credit-card-form-css' => '3b9868a8',
+ 'phortune-css' => '12e8251a',
+ 'phortune-invoice-css' => 'e41765fc',
+ 'phrequent-css' => 'bd79cc67',
+ 'phriction-document-css' => '03380da0',
+ 'phui-action-panel-css' => '6c386cbf',
+ 'phui-badge-view-css' => '666e25ad',
+ 'phui-basic-nav-view-css' => '56ebd66d',
+ 'phui-big-info-view-css' => '362ad37b',
+ 'phui-box-css' => '5ed3b8cb',
+ 'phui-bulk-editor-css' => '374d5e30',
+ 'phui-button-bar-css' => 'a4aa75c4',
+ 'phui-button-css' => 'ea704902',
+ 'phui-button-simple-css' => '1ff278aa',
+ 'phui-calendar-css' => 'f11073aa',
+ 'phui-calendar-day-css' => '9597d706',
+ 'phui-calendar-list-css' => 'ccd7e4e2',
+ 'phui-calendar-month-css' => 'cb758c42',
+ 'phui-chart-css' => '7853a69b',
+ 'phui-cms-css' => '8c05c41e',
+ 'phui-comment-form-css' => '68a2d99a',
+ 'phui-comment-panel-css' => 'ec4e31c0',
+ 'phui-crumbs-view-css' => '614f43cf',
+ 'phui-curtain-view-css' => '68c5efb6',
+ 'phui-document-summary-view-css' => 'b068eed1',
+ 'phui-document-view-css' => '52b748a5',
+ 'phui-document-view-pro-css' => 'b9613a10',
+ 'phui-feed-story-css' => 'a0c05029',
+ 'phui-font-icon-base-css' => 'd7994e06',
+ 'phui-fontkit-css' => '9b714a5e',
+ 'phui-form-css' => '159e2d9c',
+ 'phui-form-view-css' => '9508671e',
+ 'phui-head-thing-view-css' => 'd7f293df',
+ 'phui-header-view-css' => '93cea4ec',
+ 'phui-hovercard' => '074f0783',
+ 'phui-hovercard-view-css' => '6ca90fa0',
+ 'phui-icon-set-selector-css' => '7aa5f3ec',
+ 'phui-icon-view-css' => '281f964d',
+ 'phui-image-mask-css' => '62c7f4d2',
+ 'phui-info-view-css' => 'f9464caf',
+ 'phui-inline-comment-view-css' => '48acce5b',
+ 'phui-invisible-character-view-css' => 'c694c4a4',
+ 'phui-left-right-css' => '68513c34',
+ 'phui-lightbox-css' => '4ebf22da',
+ 'phui-list-view-css' => '470b1adb',
+ 'phui-object-box-css' => '9b58483d',
+ 'phui-oi-big-ui-css' => 'e5b1fb04',
+ 'phui-oi-color-css' => 'b517bfa0',
+ 'phui-oi-drag-ui-css' => 'da15d3dc',
+ 'phui-oi-flush-ui-css' => '490e2e2e',
+ 'phui-oi-list-view-css' => '909f3844',
+ 'phui-oi-simple-ui-css' => '6a30fa46',
+ 'phui-pager-css' => 'd022c7ad',
+ 'phui-pinboard-view-css' => '1f08f5d8',
+ 'phui-property-list-view-css' => 'cad62236',
+ 'phui-remarkup-preview-css' => '91767007',
+ 'phui-segment-bar-view-css' => '5166b370',
+ 'phui-spacing-css' => 'b05cadc3',
+ 'phui-status-list-view-css' => 'e5ff8be0',
+ 'phui-tag-view-css' => 'a42fe34f',
+ 'phui-theme-css' => '35883b37',
+ 'phui-timeline-view-css' => '1e348e4b',
+ 'phui-two-column-view-css' => '01e6991e',
+ 'phui-workboard-color-css' => 'e86de308',
+ 'phui-workboard-view-css' => '74fc9d98',
+ 'phui-workcard-view-css' => '8c536f90',
+ 'phui-workpanel-view-css' => 'bd546a49',
+ 'phuix-action-list-view' => 'c68f183f',
+ 'phuix-action-view' => 'aaa08f3b',
+ 'phuix-autocomplete' => '58cc4ab8',
+ 'phuix-button-view' => '55a24e84',
+ 'phuix-dropdown-menu' => 'bdce4d78',
+ 'phuix-form-control-view' => '38c1f3fb',
+ 'phuix-icon-view' => 'a5257c4e',
+ 'policy-css' => 'ceb56a08',
+ 'policy-edit-css' => '8794e2ed',
+ 'policy-transaction-detail-css' => 'c02b8384',
+ 'ponder-view-css' => '05a09d0a',
+ 'project-card-view-css' => '3b1f7b20',
+ 'project-view-css' => '567858b3',
+ 'releeph-core' => 'f81ff2db',
+ 'releeph-preview-branch' => '22db5c07',
+ 'releeph-request-differential-create-dialog' => '0ac1ea31',
+ 'releeph-request-typeahead-css' => 'bce37359',
+ 'setup-issue-css' => '5eed85b2',
+ 'sprite-login-css' => '18b368a6',
+ 'sprite-tokens-css' => 'f1896dc5',
+ 'syntax-default-css' => '055fc231',
+ 'syntax-highlighting-css' => '8a16f91b',
+ 'tokens-css' => 'ce5a50bd',
+ 'typeahead-browse-css' => 'b7ed02d2',
+ 'unhandled-exception-css' => '9da8fdab',
),
'requires' => array(
- '00676f00' => array(
+ '01384686' => array(
+ 'javelin-behavior',
+ 'javelin-uri',
+ 'phabricator-notification',
+ ),
+ '022516b4' => array(
'javelin-install',
- 'javelin-dom',
- 'javelin-typeahead-preloaded-source',
'javelin-util',
+ 'javelin-websocket',
+ 'javelin-leader',
+ 'javelin-json',
+ ),
+ '02cb4398' => array(
+ 'javelin-behavior',
+ 'javelin-dom',
+ 'phortune-credit-card-form',
),
- '013ffff9' => array(
+ '030b4f7a' => array(
+ 'javelin-stratcom',
'javelin-install',
+ 'javelin-uri',
'javelin-util',
- 'javelin-request',
- 'javelin-typeahead-source',
),
- '01fca1f0' => array(
+ '04f8a1e3' => array(
'javelin-behavior',
- 'javelin-workflow',
- 'javelin-json',
+ 'javelin-stratcom',
'javelin-dom',
- 'phabricator-keyboard-shortcut',
+ 'javelin-workflow',
),
- '0213259f' => array(
+ '05c74d65' => array(
'javelin-behavior',
- 'javelin-uri',
+ 'javelin-dom',
+ 'javelin-util',
+ 'javelin-vector',
+ 'javelin-stratcom',
+ 'javelin-workflow',
+ 'javelin-workboard-controller',
+ ),
+ '05d290ef' => array(
+ 'javelin-install',
+ 'javelin-util',
),
- '040fce04' => array(
+ '070679fe' => array(
'javelin-behavior',
- 'javelin-request',
+ 'javelin-stratcom',
+ 'javelin-dom',
+ 'javelin-uri',
+ 'phabricator-notification',
),
- '04b2ae03' => array(
+ '074f0783' => array(
'javelin-install',
- 'javelin-util',
'javelin-dom',
'javelin-vector',
- 'javelin-stratcom',
+ 'javelin-request',
+ 'javelin-uri',
),
- '051c7832' => array(
+ '076bd092' => array(
'javelin-behavior',
- 'javelin-stratcom',
'javelin-dom',
+ 'javelin-util',
+ 'javelin-stratcom',
+ 'javelin-workflow',
+ 'phabricator-draggable-list',
),
- '05270951' => array(
+ '0889b835' => array(
+ 'javelin-install',
+ 'javelin-event',
'javelin-util',
'javelin-magical-init',
),
- '065227cc' => array(
+ '0922e81d' => array(
+ 'herald-rule-editor',
+ 'javelin-behavior',
+ ),
+ '09ecf50c' => array(
'javelin-behavior',
'javelin-dom',
- 'javelin-stratcom',
'javelin-workflow',
),
- '08f4ccc3' => array(
- 'phui-oi-list-view-css',
- ),
- '0a0b10e9' => array(
+ '0ad8d31f' => array(
'javelin-behavior',
'javelin-stratcom',
+ 'javelin-workflow',
'javelin-dom',
+ 'phabricator-draggable-list',
),
- '0a3f3021' => array(
+ '0cf79f45' => array(
'javelin-behavior',
'javelin-stratcom',
- 'javelin-workflow',
'javelin-dom',
- 'javelin-router',
+ 'javelin-vector',
+ 'javelin-install',
),
- '0a84bcc1' => array(
+ '0d2490ce' => array(
'javelin-install',
- 'phuix-button-view',
),
- '0e1eca96' => array(
+ '0e6d261f' => array(
'javelin-behavior',
'javelin-stratcom',
'javelin-dom',
- 'phabricator-busy',
+ 'javelin-vector',
),
- '0f764c35' => array(
- 'javelin-install',
+ '0eaa33a9' => array(
+ 'javelin-behavior',
+ 'javelin-dom',
'javelin-util',
+ 'phuix-dropdown-menu',
+ 'phuix-action-list-view',
+ 'phuix-action-view',
+ 'javelin-workflow',
+ 'phuix-icon-view',
),
- '15d5ff71' => array(
- 'aphront-typeahead-control-css',
- 'phui-tag-view-css',
- ),
- '1802a242' => array(
- 'phui-theme-css',
- ),
- '185bbd53' => array(
- 'javelin-install',
+ '1325b731' => array(
+ 'javelin-behavior',
+ 'javelin-uri',
+ 'phabricator-keyboard-shortcut',
),
- '1ad0a787' => array(
+ '1c850a26' => array(
'javelin-install',
- 'javelin-reactor',
'javelin-util',
- 'javelin-reactor-node-calmer',
),
- '1ae869f2' => array(
- 'javelin-install',
- 'javelin-util',
- 'phabricator-keyboard-shortcut-manager',
+ '1c88f154' => array(
+ 'javelin-behavior',
+ 'javelin-dom',
+ 'javelin-stratcom',
),
- '1bd28176' => array(
- 'javelin-install',
+ '1cab0e9a' => array(
+ 'javelin-behavior',
'javelin-dom',
- 'javelin-vector',
- 'javelin-request',
'javelin-uri',
+ 'javelin-mask',
+ 'phabricator-drag-and-drop-file-upload',
),
- '1db13e70' => array(
+ '1cb7d027' => array(
'javelin-behavior',
+ 'javelin-typeahead-ondemand-source',
+ 'javelin-typeahead',
'javelin-dom',
- 'javelin-json',
- 'javelin-workflow',
- 'javelin-magical-init',
+ 'javelin-uri',
+ 'javelin-util',
+ 'javelin-stratcom',
+ 'phabricator-prefab',
+ 'phuix-icon-view',
),
- '1f6794f6' => array(
+ '1e413dc9' => array(
'javelin-behavior',
- 'javelin-stratcom',
- 'javelin-workflow',
'javelin-dom',
- 'javelin-uri',
- 'phabricator-textareautils',
),
- '1fe2510c' => array(
+ '1ff278aa' => array(
+ 'phui-button-css',
+ ),
+ '202a2e85' => array(
'javelin-install',
- 'javelin-dom',
+ 'javelin-reactornode',
+ 'javelin-util',
+ 'javelin-reactor',
+ ),
+ '202bfa3f' => array(
+ 'javelin-behavior',
+ 'javelin-request',
),
- '210a16c1' => array(
+ '225bbb98' => array(
'javelin-install',
- 'javelin-dom',
+ 'javelin-reactor',
+ 'javelin-util',
),
- '2290aeef' => array(
+ '22ee68a5' => array(
'javelin-install',
- 'javelin-dom',
- 'javelin-json',
- 'javelin-workflow',
+ 'javelin-typeahead-source',
'javelin-util',
),
- 26167537 => array(
+ 23387297 => array(
'javelin-install',
- 'javelin-dom',
'javelin-util',
- 'javelin-vector',
- 'javelin-stratcom',
- 'javelin-workflow',
- 'phabricator-drag-and-drop-file-upload',
- 'javelin-workboard-board',
+ 'javelin-request',
+ 'javelin-typeahead-source',
),
- '27ca6289' => array(
+ 23631304 => array(
+ 'phui-fontkit-css',
+ ),
+ '242aa08b' => array(
'javelin-behavior',
'javelin-stratcom',
'javelin-dom',
- 'javelin-uri',
- 'phabricator-notification',
),
- '291da458' => array(
+ '242dedd0' => array(
+ 'javelin-stratcom',
+ 'javelin-behavior',
+ 'javelin-vector',
+ 'javelin-dom',
+ ),
+ '243d6c22' => array(
'javelin-behavior',
'javelin-dom',
+ 'javelin-stratcom',
),
- '2926fff2' => array(
+ '2539f834' => array(
'javelin-behavior',
+ 'javelin-stratcom',
'javelin-dom',
+ 'javelin-json',
+ 'phabricator-draggable-list',
),
- '29274e2b' => array(
+ '27daef73' => array(
+ 'multirow-row-manager',
'javelin-install',
'javelin-util',
- ),
- '2ae077e1' => array(
- 'javelin-behavior',
'javelin-dom',
'javelin-stratcom',
- 'javelin-behavior-device',
- 'javelin-scrollbar',
- 'javelin-quicksand',
- 'phabricator-keyboard-shortcut',
- 'conpherence-thread-manager',
+ 'javelin-json',
+ 'phabricator-prefab',
),
- '2b8de964' => array(
+ '289bf236' => array(
'javelin-install',
'javelin-util',
),
- '2caa8fb8' => array(
+ '29819b75' => array(
+ 'phabricator-notification',
+ 'javelin-stratcom',
+ 'javelin-behavior',
+ ),
+ '2a8b62d9' => array(
+ 'multirow-row-manager',
'javelin-install',
- 'javelin-event',
+ 'path-typeahead',
+ 'javelin-dom',
+ 'javelin-util',
+ 'phabricator-prefab',
+ 'phuix-form-control-view',
),
- '31420f77' => array(
+ '2bdadf1a' => array(
'javelin-behavior',
+ 'javelin-dom',
+ 'javelin-util',
+ 'javelin-request',
+ 'phabricator-shaped-request',
),
- '320810c8' => array(
- 'javelin-install',
+ '2cc87f49' => array(
+ 'javelin-behavior',
+ 'javelin-workflow',
+ 'javelin-json',
'javelin-dom',
- 'javelin-vector',
+ 'phabricator-keyboard-shortcut',
),
- '327a00d1' => array(
+ '2e255291' => array(
+ 'javelin-install',
+ 'javelin-util',
+ 'javelin-stratcom',
+ ),
+ '2f1db1ed' => array(
+ 'javelin-util',
+ ),
+ '2f80333f' => array(
'javelin-behavior',
'javelin-stratcom',
'javelin-dom',
+ 'phabricator-phtize',
+ 'phabricator-textareautils',
'javelin-workflow',
+ 'javelin-vector',
+ 'phuix-autocomplete',
+ 'javelin-mask',
),
- '327f418a' => array(
+ '308f9fe4' => array(
'javelin-install',
- 'javelin-event',
'javelin-util',
- 'javelin-magical-init',
),
- '358b8c04' => array(
+ '32755edb' => array(
+ 'javelin-install',
+ 'javelin-util',
+ ),
+ 34450586 => array(
+ 'javelin-color',
'javelin-install',
'javelin-util',
- 'javelin-dom',
- 'javelin-vector',
),
- '3935d8c4' => array(
+ '34c53422' => array(
'javelin-behavior',
'javelin-dom',
'javelin-stratcom',
+ 'javelin-workflow',
),
- '3ab51e2c' => array(
- 'javelin-behavior',
- 'javelin-behavior-device',
+ '37b8a04a' => array(
+ 'javelin-install',
+ 'javelin-util',
'javelin-stratcom',
- 'javelin-vector',
'javelin-dom',
- 'javelin-magical-init',
+ 'javelin-vector',
),
- '3cb0b2fc' => array(
+ '3829a3cf' => array(
'javelin-behavior',
- 'javelin-dom',
- 'javelin-stratcom',
- 'javelin-workflow',
- 'javelin-util',
'javelin-uri',
),
- '3dbf94d5' => array(
+ '38a6cedb' => array(
'javelin-behavior',
'javelin-dom',
- 'javelin-util',
- 'javelin-workflow',
'javelin-stratcom',
),
- '3ffe32d6' => array(
+ '38c1f3fb' => array(
'javelin-install',
+ 'javelin-dom',
),
- '4047cd35' => array(
+ '3b4899b0' => array(
'javelin-behavior',
+ 'phabricator-prefab',
+ ),
+ '3c6bd549' => array(
+ 'javelin-install',
'javelin-dom',
+ 'javelin-stratcom',
'javelin-util',
+ 'javelin-vector',
+ 'javelin-magical-init',
+ ),
+ '3dc5ad43' => array(
+ 'javelin-behavior',
'javelin-stratcom',
- 'javelin-workflow',
- 'javelin-behavior-device',
- 'javelin-history',
'javelin-vector',
- 'javelin-scrollbar',
- 'phabricator-title',
- 'phabricator-shaped-request',
- 'conpherence-thread-manager',
+ 'javelin-dom',
),
- '408bf173' => array(
+ '3e9da12d' => array(
'javelin-behavior',
'javelin-dom',
- 'javelin-util',
+ 'javelin-vector',
+ 'phui-chart-css',
+ ),
+ '3eed1f2b' => array(
+ 'javelin-behavior',
'javelin-stratcom',
+ 'javelin-dom',
'javelin-workflow',
+ 'javelin-quicksand',
+ 'phabricator-phtize',
+ 'phabricator-drag-and-drop-file-upload',
'phabricator-draggable-list',
),
- '4250a34e' => array(
+ '407ee861' => array(
+ 'javelin-behavior',
+ 'javelin-uri',
+ ),
+ '418f6684' => array(
'javelin-behavior',
'javelin-dom',
+ ),
+ '42c7a5a7' => array(
+ 'javelin-install',
+ 'javelin-dom',
'javelin-util',
'javelin-vector',
'javelin-stratcom',
'javelin-workflow',
- 'javelin-workboard-controller',
+ 'phabricator-drag-and-drop-file-upload',
+ 'javelin-workboard-board',
),
- '44959b73' => array(
+ '4370900d' => array(
+ 'javelin-install',
'javelin-util',
+ 'javelin-request',
+ 'javelin-dom',
'javelin-uri',
- 'javelin-install',
+ 'phabricator-file-upload',
),
- '453c5375' => array(
+ '43ba89a2' => array(
'javelin-behavior',
'javelin-dom',
- ),
- '464259a2' => array(
- 'javelin-behavior',
'javelin-stratcom',
- 'javelin-dom',
- ),
- '469c0d9e' => array(
- 'javelin-behavior',
- 'javelin-dom',
'javelin-workflow',
+ 'javelin-util',
+ 'phabricator-notification',
+ 'conpherence-thread-manager',
),
- 47830651 => array(
- 'javelin-behavior',
- 'javelin-dom',
- 'javelin-view-renderer',
- 'javelin-install',
- ),
- 48086888 => array(
- 'javelin-behavior',
- 'javelin-dom',
- 'javelin-workflow',
- ),
- '484a6e22' => array(
- 'javelin-behavior',
- 'javelin-dom',
- 'phabricator-drag-and-drop-file-upload',
- 'phabricator-textareautils',
- ),
- '485aaa6c' => array(
+ '43bc9360' => array(
'javelin-install',
),
- '491416b3' => array(
- 'javelin-behavior',
- 'javelin-uri',
- 'phabricator-notification',
- ),
- '4976858c' => array(
- 'javelin-magical-init',
+ '45d0b2b1' => array(
'javelin-install',
+ 'javelin-dom',
'javelin-util',
- 'javelin-vector',
'javelin-stratcom',
+ 'javelin-workflow',
+ 'phabricator-draggable-list',
+ 'javelin-workboard-column',
),
- '4b3c4443' => array(
- 'phuix-icon-view',
- ),
- '4b700e9e' => array(
+ '46116c01' => array(
+ 'javelin-request',
'javelin-behavior',
'javelin-dom',
+ 'javelin-router',
'javelin-util',
- 'phabricator-shaped-request',
+ 'phabricator-busy',
),
- '4c193c96' => array(
+ '47a0728b' => array(
'javelin-behavior',
- 'javelin-uri',
- 'phabricator-notification',
- ),
- '4d863052' => array(
'javelin-dom',
- 'javelin-util',
- 'javelin-stratcom',
- 'javelin-install',
- 'javelin-aphlict',
- 'javelin-workflow',
- 'javelin-router',
- 'javelin-behavior-device',
- 'javelin-vector',
+ 'javelin-request',
),
- '4e3e79a6' => array(
+ '4842f137' => array(
'javelin-behavior',
'javelin-stratcom',
+ 'javelin-workflow',
'javelin-dom',
+ 'phabricator-draggable-list',
),
- '4f774dac' => array(
- 'javelin-install',
+ '48fe33d0' => array(
+ 'javelin-behavior',
'javelin-dom',
'javelin-stratcom',
+ 'javelin-workflow',
'javelin-util',
- 'phabricator-notification-css',
+ 'javelin-uri',
),
- '503e17fd' => array(
- 'javelin-install',
- 'javelin-typeahead-source',
- 'javelin-util',
+ '490e2e2e' => array(
+ 'phui-oi-list-view-css',
),
- '522431f7' => array(
+ '4a7fb02b' => array(
'javelin-behavior',
- 'javelin-util',
'javelin-dom',
- 'javelin-stratcom',
- 'javelin-vector',
- 'javelin-typeahead-static-source',
- ),
- '549459b8' => array(
- 'javelin-behavior',
- ),
- '54b612ba' => array(
- 'javelin-color',
- 'javelin-install',
- 'javelin-util',
- ),
- '54f314a0' => array(
- 'javelin-install',
- 'javelin-util',
- 'javelin-request',
- 'javelin-typeahead-source',
+ 'phortune-credit-card-form',
),
- '55616e04' => array(
+ '4ae58b5a' => array(
'javelin-behavior',
'javelin-dom',
'javelin-util',
'javelin-workflow',
'javelin-stratcom',
'conpherence-thread-manager',
),
- '558829c2' => array(
- 'javelin-stratcom',
+ '4b671572' => array(
'javelin-behavior',
- 'javelin-vector',
'javelin-dom',
- ),
- '58dea2fa' => array(
- 'javelin-install',
'javelin-util',
'javelin-request',
+ ),
+ '4dffaeb2' => array(
+ 'javelin-behavior',
+ 'javelin-stratcom',
+ 'javelin-workflow',
'javelin-dom',
- 'javelin-uri',
- 'phabricator-file-upload',
+ 'phuix-form-control-view',
+ 'phuix-icon-view',
+ 'javelin-behavior-phabricator-gesture',
),
- '599a8f5f' => array(
+ '4e61fa88' => array(
'javelin-behavior',
'javelin-aphlict',
'javelin-stratcom',
'javelin-request',
'javelin-uri',
'javelin-dom',
'javelin-json',
'javelin-router',
'javelin-util',
'javelin-leader',
'javelin-sound',
'phabricator-notification',
),
- '59a7976a' => array(
+ '506aa3f4' => array(
+ 'javelin-behavior',
+ 'javelin-stratcom',
+ 'javelin-dom',
+ ),
+ '5202e831' => array(
'javelin-install',
'javelin-dom',
'javelin-fx',
),
- '59b251eb' => array(
- 'javelin-behavior',
- 'javelin-stratcom',
- 'javelin-vector',
+ '541f81c3' => array(
+ 'javelin-install',
+ ),
+ '55a24e84' => array(
+ 'javelin-install',
'javelin-dom',
),
- '5c54cbf3' => array(
+ '55d7b788' => array(
'javelin-behavior',
'javelin-stratcom',
'javelin-dom',
),
- '5e2634b9' => array(
+ '5803b9e7' => array(
'javelin-behavior',
- 'javelin-aphlict',
- 'phabricator-phtize',
+ 'javelin-util',
'javelin-dom',
+ 'javelin-stratcom',
+ 'javelin-vector',
+ 'javelin-typeahead-static-source',
),
- '5e9f347c' => array(
- 'javelin-behavior',
- 'multirow-row-manager',
+ '58cc4ab8' => array(
+ 'javelin-install',
'javelin-dom',
- 'javelin-util',
+ 'phuix-icon-view',
'phabricator-prefab',
- 'javelin-json',
),
- '60821bc7' => array(
+ '5902260c' => array(
+ 'javelin-util',
+ 'javelin-magical-init',
+ ),
+ '5a6f6a06' => array(
+ 'javelin-behavior',
+ 'javelin-quicksand',
+ ),
+ '5a79f6c3' => array(
+ 'javelin-install',
+ 'javelin-util',
+ 'javelin-request',
+ 'javelin-typeahead-source',
+ ),
+ '5aa1544e' => array(
'javelin-behavior',
+ 'javelin-util',
'javelin-stratcom',
'javelin-dom',
- ),
- '61cbc29a' => array(
+ 'javelin-vector',
'javelin-magical-init',
- 'javelin-util',
+ 'javelin-request',
+ 'javelin-history',
+ 'javelin-workflow',
+ 'javelin-mask',
+ 'javelin-behavior-device',
+ 'phabricator-keyboard-shortcut',
),
- '62dfea03' => array(
+ '5b54c823' => array(
'javelin-install',
+ 'javelin-stratcom',
+ 'javelin-dom',
'javelin-util',
),
- '635de1ec' => array(
+ '5cf0501a' => array(
'javelin-behavior',
'javelin-stratcom',
- 'javelin-workflow',
'javelin-dom',
+ 'phuix-dropdown-menu',
),
- 66888767 => array(
+ '600f440c' => array(
'javelin-behavior',
'javelin-stratcom',
- 'javelin-util',
'javelin-dom',
- 'javelin-request',
- 'phabricator-keyboard-shortcut',
- 'phabricator-darklog',
- 'phabricator-darkmessage',
+ 'phabricator-busy',
+ ),
+ '60cd9241' => array(
+ 'javelin-behavior',
+ ),
+ '65bb0011' => array(
+ 'javelin-behavior',
+ 'javelin-dom',
),
- '66a62306' => array(
+ '66365ee2' => array(
'javelin-behavior',
'javelin-stratcom',
'javelin-dom',
+ ),
+ '6a1583a8' => array(
+ 'javelin-behavior',
'javelin-history',
),
- '66a6def1' => array(
+ '6a162524' => array(
'javelin-behavior',
'javelin-dom',
- 'javelin-util',
- 'multirow-row-manager',
- 'javelin-json',
- 'phuix-form-control-view',
),
- '680ea2c8' => array(
+ '6a18c42e' => array(
'javelin-install',
- 'javelin-dom',
- 'phabricator-notification',
),
- '68af71ca' => array(
- 'javelin-install',
+ '6a30fa46' => array(
+ 'phui-oi-list-view-css',
+ ),
+ '6a85bc5a' => array(
+ 'javelin-behavior',
'javelin-dom',
- 'phuix-button-view',
+ 'javelin-json',
+ 'javelin-workflow',
+ 'javelin-magical-init',
+ ),
+ '6c379000' => array(
+ 'javelin-behavior',
+ 'javelin-behavior-device',
+ 'javelin-stratcom',
+ 'javelin-vector',
+ 'phui-hovercard',
),
- '69adf288' => array(
+ '6cfa0008' => array(
+ 'javelin-dom',
+ 'javelin-dynval',
+ 'javelin-reactor',
+ 'javelin-reactornode',
'javelin-install',
+ 'javelin-util',
),
- '6a726c55' => array(
+ 70245195 => array(
+ 'javelin-behavior',
'javelin-stratcom',
- 'javelin-request',
+ 'javelin-workflow',
'javelin-dom',
- 'javelin-vector',
+ ),
+ '727a5a61' => array(
+ 'phuix-icon-view',
+ ),
+ '72960bc1' => array(
'javelin-install',
+ 'javelin-reactor',
'javelin-util',
- 'javelin-mask',
- 'javelin-uri',
- 'javelin-routable',
+ 'javelin-reactor-node-calmer',
),
- '6b31879a' => array(
+ '7353f43d' => array(
'javelin-behavior',
'javelin-stratcom',
+ 'javelin-vector',
'javelin-dom',
- 'javelin-mask',
- 'javelin-util',
- 'phuix-icon-view',
- 'phabricator-busy',
+ 'javelin-uri',
+ ),
+ 73660575 => array(
+ 'phui-inline-comment-view-css',
+ ),
+ '73ecc1f8' => array(
+ 'javelin-behavior',
+ 'javelin-behavior-device',
+ 'javelin-stratcom',
+ 'phabricator-tooltip',
),
- '6b8ef10b' => array(
+ '740956e1' => array(
+ 'javelin-util',
+ 'javelin-uri',
'javelin-install',
),
- '6c0e62fa' => array(
+ 74446546 => array(
+ 'javelin-behavior',
+ 'javelin-dom',
+ ),
+ '75184d68' => array(
+ 'javelin-behavior',
+ 'javelin-dom',
+ 'javelin-uri',
+ 'javelin-request',
+ ),
+ '78bc5d94' => array(
+ 'javelin-behavior',
+ 'javelin-uri',
+ 'phabricator-notification',
+ ),
+ '78f811c9' => array(
'javelin-install',
- 'javelin-typeahead-source',
),
- '6c2b09a2' => array(
+ '7930776a' => array(
'javelin-install',
- 'javelin-util',
+ 'javelin-dom',
),
- '6d3e1947' => array(
+ '7ad020a5' => array(
'javelin-behavior',
- 'javelin-diffusion-locate-file-source',
'javelin-dom',
- 'javelin-typeahead',
- 'javelin-uri',
+ 'phabricator-drag-and-drop-file-upload',
+ 'phabricator-textareautils',
),
- '6d8c7912' => array(
+ '7b139193' => array(
+ 'javelin-behavior',
+ 'javelin-stratcom',
+ 'javelin-workflow',
+ 'javelin-dom',
+ ),
+ '7c4d8998' => array(
'javelin-install',
- 'javelin-typeahead',
'javelin-dom',
- 'javelin-request',
- 'javelin-typeahead-ondemand-source',
- 'javelin-util',
),
- '70baed2f' => array(
+ '80bff3af' => array(
+ 'javelin-install',
+ 'javelin-typeahead-source',
+ ),
+ 83754533 => array(
'javelin-install',
+ 'javelin-util',
'javelin-dom',
'javelin-vector',
- 'javelin-util',
),
- 71237763 => array(
+ '8400307c' => array(
'javelin-behavior',
'javelin-dom',
'javelin-stratcom',
'javelin-workflow',
'phabricator-draggable-list',
),
- '7319e029' => array(
+ '8573dc1b' => array(
+ 'javelin-install',
+ 'javelin-workboard-card',
+ ),
+ '87428eb2' => array(
'javelin-behavior',
+ 'javelin-diffusion-locate-file-source',
'javelin-dom',
+ 'javelin-typeahead',
+ 'javelin-uri',
),
- '758b4758' => array(
+ '876506b6' => array(
+ 'javelin-view',
'javelin-install',
- 'javelin-workboard-card',
+ 'javelin-dom',
),
- '75b83cbb' => array(
- 'javelin-behavior',
+ '89a1ae3a' => array(
'javelin-dom',
+ 'javelin-util',
'javelin-stratcom',
+ 'javelin-install',
+ ),
+ '8a16f91b' => array(
+ 'syntax-default-css',
),
- '76b9fc3e' => array(
+ '8ac32fd9' => array(
'javelin-behavior',
'javelin-stratcom',
'javelin-workflow',
'javelin-dom',
'phabricator-draggable-list',
),
- '76f4ebed' => array(
- 'javelin-install',
- 'javelin-reactor',
- 'javelin-util',
- ),
- '77b0ae28' => array(
+ '8badee71' => array(
'javelin-install',
'javelin-util',
'javelin-dom',
- 'javelin-typeahead',
- 'javelin-tokenizer',
- 'javelin-typeahead-preloaded-source',
- 'javelin-typeahead-ondemand-source',
- 'javelin-dom',
- 'javelin-stratcom',
- 'javelin-util',
+ 'javelin-typeahead-normalizer',
),
- '77c1f0b0' => array(
+ '8c2ed2bf' => array(
'javelin-behavior',
'javelin-dom',
- 'javelin-request',
'javelin-util',
+ 'javelin-stratcom',
+ 'javelin-workflow',
+ 'javelin-behavior-device',
+ 'javelin-history',
+ 'javelin-vector',
+ 'javelin-scrollbar',
+ 'phabricator-title',
+ 'phabricator-shaped-request',
+ 'conpherence-thread-manager',
),
- '7927a7d3' => array(
- 'javelin-behavior',
- 'javelin-quicksand',
+ '8e2d9a28' => array(
+ 'phui-theme-css',
),
- '7a68dda3' => array(
- 'owners-path-editor',
+ '8f959ad0' => array(
'javelin-behavior',
- ),
- '7a7c22af' => array(
- 'phui-oi-list-view-css',
- ),
- '7cbe244b' => array(
- 'javelin-install',
+ 'javelin-dom',
'javelin-util',
- 'javelin-request',
- 'javelin-router',
+ 'javelin-workflow',
+ 'javelin-stratcom',
),
- '7e41274a' => array(
+ 91863989 => array(
'javelin-install',
- ),
- '7ebaeed3' => array(
- 'herald-rule-editor',
+ 'javelin-stratcom',
+ 'javelin-util',
'javelin-behavior',
+ 'javelin-json',
+ 'javelin-dom',
+ 'javelin-resource',
+ 'javelin-routable',
),
- '7ee2b591' => array(
+ '91befbcc' => array(
'javelin-behavior',
- 'javelin-history',
- ),
- '7f243deb' => array(
- 'javelin-install',
+ 'javelin-dom',
+ 'javelin-util',
+ 'javelin-workflow',
+ 'javelin-stratcom',
),
- '834a1173' => array(
+ '92388bae' => array(
'javelin-behavior',
'javelin-scrollbar',
),
- '8499b6ab' => array(
+ '925fe8cd' => array(
'javelin-behavior',
- 'javelin-dom',
'javelin-stratcom',
- ),
- '85ac9772' => array(
- 'javelin-install',
'javelin-dom',
),
- '85ee8ce6' => array(
- 'aphront-dialog-view-css',
- ),
- '88236f00' => array(
+ '92cdd7b6' => array(
'javelin-behavior',
- 'phabricator-keyboard-shortcut',
'javelin-stratcom',
+ 'javelin-dom',
),
- '8935deef' => array(
- 'javelin-install',
+ '9347f172' => array(
+ 'javelin-behavior',
+ 'multirow-row-manager',
'javelin-dom',
'javelin-util',
- 'javelin-stratcom',
- 'javelin-workflow',
- 'phabricator-draggable-list',
- 'javelin-workboard-column',
+ 'phabricator-prefab',
+ 'javelin-json',
),
- '8a41885b' => array(
+ '94243d89' => array(
'javelin-install',
'javelin-dom',
+ 'javelin-typeahead-preloaded-source',
+ 'javelin-util',
),
- '8ce821c5' => array(
- 'phabricator-notification',
- 'javelin-stratcom',
- 'javelin-behavior',
- ),
- '8d4a8c72' => array(
+ '94681e22' => array(
+ 'javelin-magical-init',
'javelin-install',
- 'javelin-dom',
'javelin-util',
- ),
- '8e1baf68' => array(
- 'phui-button-css',
- ),
- '8ff5e24c' => array(
- 'javelin-behavior',
+ 'javelin-vector',
'javelin-stratcom',
- 'javelin-dom',
),
- '901935ef' => array(
+ '956f3eeb' => array(
'javelin-behavior',
- 'javelin-dom',
- 'javelin-request',
- ),
- '9065f639' => array(
- 'javelin-install',
+ 'javelin-util',
'javelin-dom',
'javelin-stratcom',
'javelin-vector',
),
- '92b9ec77' => array(
- 'javelin-behavior',
+ '958e9045' => array(
'javelin-stratcom',
+ 'javelin-request',
'javelin-dom',
+ 'javelin-vector',
+ 'javelin-install',
+ 'javelin-util',
+ 'javelin-mask',
+ 'javelin-uri',
+ 'javelin-routable',
),
- '93d0c9e3' => array(
+ '9623adc1' => array(
'javelin-behavior',
'javelin-stratcom',
'javelin-workflow',
'javelin-dom',
+ 'javelin-router',
),
- '949c0fe5' => array(
+ '9a513421' => array(
'javelin-install',
),
- '94b750d2' => array(
+ '9aae2b66' => array(
'javelin-install',
- 'javelin-stratcom',
'javelin-util',
- 'javelin-behavior',
- 'javelin-json',
- 'javelin-dom',
- 'javelin-resource',
- 'javelin-routable',
),
- '960f6a39' => array(
- 'javelin-behavior',
- 'javelin-dom',
- 'javelin-uri',
- 'javelin-mask',
- 'phabricator-drag-and-drop-file-upload',
- ),
- '9a860428' => array(
+ '9b1cbd76' => array(
'javelin-behavior',
'javelin-dom',
'javelin-stratcom',
- 'javelin-uri',
),
- '9bbf3762' => array(
- 'javelin-behavior',
- 'javelin-dom',
- 'javelin-util',
- 'javelin-workflow',
- 'javelin-stratcom',
- ),
- '9d32bc88' => array(
- 'javelin-behavior',
- 'javelin-behavior-device',
- 'javelin-stratcom',
- 'javelin-dom',
- 'javelin-magical-init',
- 'javelin-vector',
- 'javelin-request',
- 'javelin-util',
- ),
- '9d9685d6' => array(
- 'phui-oi-list-view-css',
- ),
- '9f36c42d' => array(
+ '9cec214e' => array(
'javelin-behavior',
'javelin-stratcom',
+ 'javelin-workflow',
'javelin-dom',
- 'javelin-vector',
+ 'javelin-uri',
+ 'phabricator-textareautils',
),
- 'a0b57eb8' => array(
+ '9f081f05' => array(
'javelin-behavior',
'javelin-dom',
'javelin-stratcom',
'javelin-workflow',
'javelin-util',
'phabricator-keyboard-shortcut',
),
- 'a3714c76' => array(
+ 'a17b84f1' => array(
'javelin-behavior',
- 'javelin-stratcom',
'javelin-dom',
- 'javelin-vector',
- 'javelin-install',
- ),
- 'a3a63478' => array(
- 'phui-workcard-view-css',
+ 'javelin-workflow',
),
- 'a464fe03' => array(
- 'javelin-behavior',
- 'javelin-uri',
- 'phabricator-notification',
+ 'a241536a' => array(
+ 'javelin-install',
),
- 'a6b98425' => array(
- 'javelin-behavior',
+ 'a4356cde' => array(
+ 'javelin-install',
'javelin-dom',
- 'phortune-credit-card-form',
+ 'javelin-vector',
+ 'javelin-util',
),
- 'a6f7a73b' => array(
- 'javelin-behavior',
- 'javelin-stratcom',
+ 'a43ae2ae' => array(
+ 'javelin-install',
'javelin-dom',
- ),
- 'a80d0378' => array(
- 'javelin-behavior',
'javelin-stratcom',
- 'javelin-dom',
- ),
- 'a8beebea' => array(
- 'phui-oi-list-view-css',
+ 'javelin-vector',
),
- 'a8d8459d' => array(
- 'javelin-behavior',
+ 'a4a14a94' => array(
'javelin-dom',
- 'javelin-stratcom',
),
- 'a8da01f0' => array(
- 'javelin-behavior',
- 'javelin-uri',
- 'phabricator-keyboard-shortcut',
+ 'a4aa75c4' => array(
+ 'phui-button-css',
+ 'phui-button-simple-css',
),
- 'a9f88de2' => array(
+ 'a4af0b4a' => array(
'javelin-behavior',
'javelin-dom',
- 'javelin-stratcom',
- 'javelin-workflow',
- 'javelin-fx',
- 'javelin-util',
- ),
- 'ab2f381b' => array(
'javelin-request',
- 'javelin-behavior',
- 'javelin-dom',
- 'javelin-router',
'javelin-util',
- 'phabricator-busy',
),
- 'ab9e0a82' => array(
+ 'a5257c4e' => array(
'javelin-install',
- 'javelin-util',
'javelin-dom',
- 'javelin-typeahead-normalizer',
),
- 'acd29eee' => array(
+ 'a9942052' => array(
'javelin-behavior',
- 'javelin-stratcom',
'javelin-dom',
- 'phabricator-phtize',
- 'phabricator-textareautils',
- 'javelin-workflow',
- 'javelin-vector',
- 'phuix-autocomplete',
- 'javelin-mask',
+ 'javelin-view-renderer',
+ 'javelin-install',
),
- 'ad54037e' => array(
- 'javelin-behavior',
+ 'a9b91e3f' => array(
+ 'javelin-install',
'javelin-dom',
'javelin-stratcom',
'javelin-util',
+ 'phabricator-notification-css',
),
- 'b003d4fb' => array(
+ 'aa371860' => array(
'javelin-behavior',
'javelin-stratcom',
+ 'javelin-workflow',
'javelin-dom',
- 'phuix-dropdown-menu',
+ 'phabricator-draggable-list',
),
- 'b0b8f86d' => array(
+ 'aa3a100c' => array(
'javelin-behavior',
'javelin-dom',
- 'javelin-stratcom',
+ 'javelin-typeahead',
+ 'javelin-typeahead-ondemand-source',
+ 'javelin-dom',
),
- 'b23b49e6' => array(
+ 'aa6d2308' => array(
'javelin-behavior',
'javelin-dom',
'javelin-util',
- 'javelin-request',
- 'phabricator-shaped-request',
+ 'multirow-row-manager',
+ 'javelin-json',
+ 'phuix-form-control-view',
),
- 'b2b4fbaf' => array(
- 'javelin-behavior',
+ 'aaa08f3b' => array(
+ 'javelin-install',
'javelin-dom',
- 'javelin-uri',
- 'javelin-request',
+ 'javelin-util',
),
- 'b3a4b884' => array(
- 'javelin-behavior',
- 'phabricator-prefab',
+ 'ab85e184' => array(
+ 'javelin-install',
+ 'javelin-dom',
+ 'phabricator-notification',
+ ),
+ 'abf88db8' => array(
+ 'javelin-install',
+ 'javelin-util',
+ 'javelin-request',
+ 'javelin-router',
),
- 'b3e7d692' => array(
+ 'ad486db3' => array(
'javelin-install',
+ 'javelin-typeahead',
+ 'javelin-dom',
+ 'javelin-request',
+ 'javelin-typeahead-ondemand-source',
+ 'javelin-util',
),
- 'b49b59d6' => array(
+ 'aec8e38c' => array(
'javelin-dom',
'javelin-util',
'javelin-stratcom',
'javelin-install',
+ 'javelin-aphlict',
'javelin-workflow',
'javelin-router',
'javelin-behavior-device',
'javelin-vector',
- 'phabricator-diff-inline',
),
- 'b59e1e96' => array(
+ 'b105a3a6' => array(
'javelin-behavior',
'javelin-stratcom',
- 'javelin-workflow',
'javelin-dom',
- 'phabricator-draggable-list',
),
- 'b5c256b8' => array(
- 'javelin-install',
- 'javelin-dom',
- ),
- 'b5d57730' => array(
- 'javelin-install',
- 'javelin-stratcom',
- 'javelin-dom',
- 'javelin-util',
- ),
- 'b6993408' => array(
+ 'b26a41e4' => array(
'javelin-behavior',
'javelin-stratcom',
'javelin-dom',
- 'javelin-json',
- 'phabricator-draggable-list',
),
- 'b95d6f7d' => array(
+ 'b347a301' => array(
'javelin-behavior',
- 'javelin-stratcom',
- 'javelin-dom',
- 'phuix-dropdown-menu',
),
- 'ba158207' => array(
- 'javelin-behavior',
- 'javelin-uri',
- 'phabricator-notification',
+ 'b517bfa0' => array(
+ 'phui-oi-list-view-css',
),
- 'bb6e5c16' => array(
- 'javelin-dom',
- 'javelin-util',
- 'javelin-stratcom',
- 'javelin-install',
+ 'b52d0668' => array(
+ 'aphront-typeahead-control-css',
+ 'phui-tag-view-css',
),
- 'bcaccd64' => array(
+ 'b58d1a2a' => array(
'javelin-behavior',
'javelin-behavior-device',
'javelin-stratcom',
'javelin-vector',
- 'phui-hovercard',
+ 'javelin-dom',
+ 'javelin-magical-init',
),
- 'bdaf4d04' => array(
+ 'b5e9bff9' => array(
'javelin-behavior',
+ 'javelin-stratcom',
'javelin-dom',
- 'javelin-util',
- 'javelin-request',
),
- 'bea6e7f4' => array(
- 'javelin-install',
+ 'b7b73831' => array(
+ 'javelin-behavior',
'javelin-dom',
- 'javelin-stratcom',
'javelin-util',
- 'javelin-vector',
- 'javelin-magical-init',
+ 'phabricator-shaped-request',
),
- 'bee502c8' => array(
+ 'b86f297f' => array(
'javelin-behavior',
'javelin-stratcom',
- 'javelin-dom',
'javelin-workflow',
- 'javelin-quicksand',
- 'phabricator-phtize',
- 'phabricator-drag-and-drop-file-upload',
+ 'javelin-dom',
'phabricator-draggable-list',
),
- 'bf5374ef' => array(
+ 'b9109f8f' => array(
'javelin-behavior',
- 'javelin-stratcom',
- 'javelin-dom',
+ 'javelin-uri',
+ 'phabricator-notification',
),
- 'bff6884b' => array(
+ 'b91204e9' => array(
'javelin-install',
- 'javelin-dom',
+ 'phuix-button-view',
),
- 'c19dd9b9' => array(
+ 'bd546a49' => array(
+ 'phui-workcard-view-css',
+ ),
+ 'bdce4d78' => array(
'javelin-install',
'javelin-util',
- 'javelin-stratcom',
'javelin-dom',
'javelin-vector',
- ),
- 'c3e917d9' => array(
- 'javelin-behavior',
- 'javelin-typeahead-ondemand-source',
- 'javelin-typeahead',
- 'javelin-dom',
- 'javelin-uri',
- 'javelin-util',
- 'javelin-stratcom',
- 'phabricator-prefab',
- 'phuix-icon-view',
- ),
- 'c420b0b9' => array(
- 'javelin-behavior',
- 'javelin-behavior-device',
'javelin-stratcom',
- 'phabricator-tooltip',
),
- 'c587b80f' => array(
+ 'bf457520' => array(
'javelin-install',
- ),
- 'c7ccd872' => array(
- 'phui-fontkit-css',
- ),
- 'c90a04fc' => array(
+ 'javelin-util',
'javelin-dom',
- 'javelin-dynval',
- 'javelin-reactor',
- 'javelin-reactornode',
- 'javelin-install',
+ 'javelin-typeahead',
+ 'javelin-tokenizer',
+ 'javelin-typeahead-preloaded-source',
+ 'javelin-typeahead-ondemand-source',
+ 'javelin-dom',
+ 'javelin-stratcom',
'javelin-util',
),
- 'c96502cf' => array(
- 'multirow-row-manager',
+ 'c03f2fb4' => array(
'javelin-install',
- 'path-typeahead',
- 'javelin-dom',
- 'javelin-util',
- 'phabricator-prefab',
- 'phuix-form-control-view',
),
- 'c989ade3' => array(
+ 'c2c500a7' => array(
'javelin-install',
- 'javelin-util',
- 'javelin-stratcom',
+ 'javelin-dom',
+ 'phuix-button-view',
),
- 'caade6f2' => array(
+ 'c3703a16' => array(
'javelin-behavior',
- 'javelin-request',
- 'javelin-stratcom',
- 'javelin-vector',
+ 'javelin-aphlict',
+ 'phabricator-phtize',
'javelin-dom',
- 'javelin-uri',
- 'javelin-behavior-device',
- 'phabricator-title',
- 'phabricator-favicon',
- ),
- 'cd2b9b77' => array(
- 'phui-oi-list-view-css',
),
- 'd057e45a' => array(
+ 'c687e867' => array(
'javelin-behavior',
'javelin-dom',
'javelin-stratcom',
'javelin-workflow',
+ 'javelin-fx',
'javelin-util',
- 'phabricator-notification',
- 'conpherence-thread-manager',
),
- 'd0c516d5' => array(
+ 'c68f183f' => array(
+ 'javelin-install',
+ 'javelin-dom',
+ ),
+ 'c715c123' => array(
'javelin-behavior',
'javelin-dom',
'javelin-util',
- 'phuix-dropdown-menu',
- 'phuix-action-list-view',
- 'phuix-action-view',
'javelin-workflow',
- 'phuix-icon-view',
+ 'javelin-json',
),
- 'd254d646' => array(
+ 'c7e748bf' => array(
+ 'javelin-behavior',
+ 'javelin-stratcom',
+ 'javelin-dom',
+ 'javelin-mask',
'javelin-util',
+ 'phuix-icon-view',
+ 'phabricator-busy',
),
- 'd4505101' => array(
- 'javelin-stratcom',
+ 'c9749dcd' => array(
'javelin-install',
- 'javelin-uri',
'javelin-util',
+ 'phabricator-keyboard-shortcut-manager',
),
- 'd4eecc63' => array(
+ 'cf32921f' => array(
'javelin-behavior',
'javelin-dom',
'javelin-stratcom',
),
- 'd7a74243' => array(
+ 'cffd39b4' => array(
'javelin-behavior',
+ 'javelin-dom',
'javelin-stratcom',
- 'javelin-workflow',
+ 'javelin-util',
+ ),
+ 'd12d214f' => array(
+ 'javelin-install',
'javelin-dom',
- 'phabricator-draggable-list',
+ 'javelin-json',
+ 'javelin-workflow',
+ 'javelin-util',
+ ),
+ 'd3799cb4' => array(
+ 'javelin-install',
),
- 'd835b03a' => array(
+ 'd8a86cfb' => array(
'javelin-behavior',
'javelin-dom',
'javelin-util',
'phabricator-shaped-request',
),
- 'd848ec84' => array(
+ 'da15d3dc' => array(
+ 'phui-oi-list-view-css',
+ ),
+ 'dae2d55b' => array(
'javelin-behavior',
- 'javelin-stratcom',
- 'javelin-workflow',
- 'javelin-dom',
- 'phuix-form-control-view',
- 'phuix-icon-view',
- 'javelin-behavior-phabricator-gesture',
+ 'javelin-uri',
+ 'phabricator-notification',
),
- 'db34a142' => array(
- 'phui-inline-comment-view-css',
+ 'db0c0214' => array(
+ 'javelin-behavior',
+ 'javelin-dom',
+ 'javelin-stratcom',
+ 'javelin-uri',
),
- 'dca75c0e' => array(
- 'multirow-row-manager',
- 'javelin-install',
- 'javelin-util',
+ 'dfa1d313' => array(
+ 'javelin-behavior',
'javelin-dom',
'javelin-stratcom',
- 'javelin-json',
- 'phabricator-prefab',
+ 'phabricator-tooltip',
+ 'phabricator-diff-changeset-list',
+ 'phabricator-diff-changeset',
),
- 'de2e896f' => array(
+ 'e150bd50' => array(
'javelin-behavior',
+ 'javelin-stratcom',
'javelin-dom',
- 'javelin-typeahead',
- 'javelin-typeahead-ondemand-source',
+ 'phuix-dropdown-menu',
+ ),
+ 'e15c8b1f' => array(
+ 'javelin-behavior',
+ 'javelin-stratcom',
'javelin-dom',
+ 'javelin-history',
),
- 'df1bbd34' => array(
- 'javelin-install',
+ 'e18685c0' => array(
+ 'javelin-behavior',
'javelin-dom',
- 'phuix-icon-view',
- 'phabricator-prefab',
+ 'javelin-stratcom',
+ ),
+ 'e562708c' => array(
+ 'javelin-install',
+ ),
+ 'e5b1fb04' => array(
+ 'phui-oi-list-view-css',
),
- 'e1d25dfb' => array(
+ 'e5bdb730' => array(
'javelin-behavior',
'javelin-stratcom',
'javelin-workflow',
'javelin-dom',
'phabricator-draggable-list',
),
- 'e1d4b11a' => array(
- 'javelin-install',
+ 'e7cf10d6' => array(
+ 'javelin-dom',
'javelin-util',
- 'javelin-websocket',
- 'javelin-leader',
- 'javelin-json',
- ),
- 'e1ff79b1' => array(
- 'javelin-behavior',
'javelin-stratcom',
- 'javelin-dom',
+ 'javelin-install',
+ 'javelin-workflow',
+ 'javelin-router',
+ 'javelin-behavior-device',
+ 'javelin-vector',
+ 'phabricator-diff-inline',
),
- 'e2e0a072' => array(
+ 'e8240b50' => array(
'javelin-behavior',
'javelin-stratcom',
- 'javelin-workflow',
'javelin-dom',
- 'phabricator-draggable-list',
),
- 'e379b58e' => array(
+ 'e9a2940f' => array(
'javelin-behavior',
+ 'javelin-request',
'javelin-stratcom',
'javelin-vector',
'javelin-dom',
'javelin-uri',
+ 'javelin-behavior-device',
+ 'phabricator-title',
+ 'phabricator-favicon',
),
- 'e4232876' => array(
- 'javelin-behavior',
- 'javelin-dom',
- 'javelin-vector',
- 'phui-chart-css',
+ 'e9c80beb' => array(
+ 'javelin-install',
+ 'javelin-event',
),
- 'e4cc26b3' => array(
- 'javelin-behavior',
- 'javelin-dom',
+ 'ec4e31c0' => array(
+ 'phui-timeline-view-css',
),
- 'e83d28f3' => array(
- 'javelin-dom',
+ 'ee77366f' => array(
+ 'aphront-dialog-view-css',
),
- 'e9581f08' => array(
+ 'ee82cedb' => array(
'javelin-behavior',
+ 'phabricator-keyboard-shortcut',
'javelin-stratcom',
- 'javelin-workflow',
- 'javelin-dom',
- 'phabricator-draggable-list',
),
- 'e9c95dd4' => array(
- 'syntax-default-css',
- ),
- 'ec1f3669' => array(
+ 'f166c949' => array(
'javelin-behavior',
- 'javelin-util',
+ 'javelin-behavior-device',
'javelin-stratcom',
'javelin-dom',
- 'javelin-vector',
'javelin-magical-init',
+ 'javelin-vector',
'javelin-request',
- 'javelin-history',
- 'javelin-workflow',
- 'javelin-mask',
- 'javelin-behavior-device',
- 'phabricator-keyboard-shortcut',
+ 'javelin-util',
),
- 'ecf4e799' => array(
+ 'f340a484' => array(
+ 'javelin-install',
+ 'javelin-dom',
+ 'javelin-vector',
+ ),
+ 'f39d968b' => array(
'javelin-behavior',
+ 'javelin-stratcom',
'javelin-util',
'javelin-dom',
- 'javelin-stratcom',
- 'javelin-vector',
+ 'javelin-request',
+ 'phabricator-keyboard-shortcut',
+ 'phabricator-darklog',
+ 'phabricator-darkmessage',
),
- 'edf8a145' => array(
+ 'f51e9c17' => array(
'javelin-behavior',
- 'javelin-uri',
+ 'javelin-stratcom',
+ 'javelin-dom',
),
- 'ef7e057f' => array(
- 'javelin-install',
+ 'f5c78ae3' => array(
+ 'javelin-behavior',
+ 'javelin-stratcom',
+ 'javelin-dom',
),
- 'efe49472' => array(
+ 'f8c4e135' => array(
'javelin-install',
- 'javelin-util',
- ),
- 'f01586dc' => array(
- 'javelin-behavior',
'javelin-dom',
+ 'javelin-view-visitor',
'javelin-util',
- 'javelin-workflow',
- 'javelin-json',
),
- 'f0eb6708' => array(
+ 'fa6f30b2' => array(
'javelin-behavior',
'javelin-dom',
'javelin-stratcom',
- 'phabricator-tooltip',
- 'phabricator-diff-changeset-list',
- 'phabricator-diff-changeset',
- ),
- 'f1ff5494' => array(
- 'phui-button-css',
- 'phui-button-simple-css',
- ),
- 'f50152ad' => array(
- 'phui-timeline-view-css',
+ 'javelin-behavior-device',
+ 'javelin-scrollbar',
+ 'javelin-quicksand',
+ 'phabricator-keyboard-shortcut',
+ 'conpherence-thread-manager',
),
- 'f6555212' => array(
- 'javelin-install',
- 'javelin-reactornode',
+ 'fce5d170' => array(
+ 'javelin-magical-init',
'javelin-util',
- 'javelin-reactor',
),
- 'f829edb3' => array(
- 'javelin-view',
+ 'fdc13e4e' => array(
'javelin-install',
- 'javelin-dom',
),
- 'fc91ab6c' => array(
+ 'ff688a7a' => array(
+ 'owners-path-editor',
'javelin-behavior',
- 'javelin-dom',
- 'phortune-credit-card-form',
- ),
- 'fe287620' => array(
- 'javelin-install',
- 'javelin-dom',
- 'javelin-view-visitor',
- 'javelin-util',
),
),
'packages' => array(
'conpherence.pkg.css' => array(
'conpherence-durable-column-view',
'conpherence-menu-css',
'conpherence-color-css',
'conpherence-message-pane-css',
'conpherence-notification-css',
'conpherence-transaction-css',
'conpherence-participant-pane-css',
'conpherence-header-pane-css',
),
'conpherence.pkg.js' => array(
'javelin-behavior-conpherence-menu',
'javelin-behavior-conpherence-participant-pane',
'javelin-behavior-conpherence-pontificate',
'javelin-behavior-toggle-widget',
),
'core.pkg.css' => array(
'phabricator-core-css',
'phabricator-zindex-css',
'phui-button-css',
'phui-button-simple-css',
'phui-theme-css',
'phabricator-standard-page-view',
'aphront-dialog-view-css',
'phui-form-view-css',
'aphront-panel-view-css',
'aphront-table-view-css',
'aphront-tokenizer-control-css',
'aphront-typeahead-control-css',
'aphront-list-filter-view-css',
'application-search-view-css',
'phabricator-remarkup-css',
'syntax-highlighting-css',
'syntax-default-css',
'phui-pager-css',
'aphront-tooltip-css',
'phabricator-flag-css',
'phui-info-view-css',
'phabricator-main-menu-view',
'phabricator-notification-css',
'phabricator-notification-menu-css',
'phui-lightbox-css',
'phui-comment-panel-css',
'phui-header-view-css',
'phabricator-nav-view-css',
'phui-basic-nav-view-css',
'phui-crumbs-view-css',
'phui-oi-list-view-css',
'phui-oi-color-css',
'phui-oi-big-ui-css',
'phui-oi-drag-ui-css',
'phui-oi-simple-ui-css',
'phui-oi-flush-ui-css',
'global-drag-and-drop-css',
'phui-spacing-css',
'phui-form-css',
'phui-icon-view-css',
'phabricator-action-list-view-css',
'phui-property-list-view-css',
'phui-tag-view-css',
'phui-list-view-css',
'font-fontawesome',
'font-lato',
'phui-font-icon-base-css',
'phui-fontkit-css',
'phui-box-css',
'phui-object-box-css',
'phui-timeline-view-css',
'phui-two-column-view-css',
'phui-curtain-view-css',
'sprite-login-css',
'sprite-tokens-css',
'tokens-css',
'auth-css',
'phui-status-list-view-css',
'phui-feed-story-css',
'phabricator-feed-css',
'phabricator-dashboard-css',
'aphront-multi-column-view-css',
),
'core.pkg.js' => array(
'javelin-util',
'javelin-install',
'javelin-event',
'javelin-stratcom',
'javelin-behavior',
'javelin-resource',
'javelin-request',
'javelin-vector',
'javelin-dom',
'javelin-json',
'javelin-uri',
'javelin-workflow',
'javelin-mask',
'javelin-typeahead',
'javelin-typeahead-normalizer',
'javelin-typeahead-source',
'javelin-typeahead-preloaded-source',
'javelin-typeahead-ondemand-source',
'javelin-tokenizer',
'javelin-history',
'javelin-router',
'javelin-routable',
'javelin-behavior-aphront-basic-tokenizer',
'javelin-behavior-workflow',
'javelin-behavior-aphront-form-disable-on-submit',
'phabricator-keyboard-shortcut-manager',
'phabricator-keyboard-shortcut',
'javelin-behavior-phabricator-keyboard-shortcuts',
'javelin-behavior-refresh-csrf',
'javelin-behavior-phabricator-watch-anchor',
'javelin-behavior-phabricator-autofocus',
'phuix-dropdown-menu',
'phuix-action-list-view',
'phuix-action-view',
'phuix-icon-view',
'phabricator-phtize',
'javelin-behavior-phabricator-oncopy',
'phabricator-tooltip',
'javelin-behavior-phabricator-tooltips',
'phabricator-prefab',
'javelin-behavior-device',
'javelin-behavior-toggle-class',
'javelin-behavior-lightbox-attachments',
'phabricator-busy',
'javelin-sound',
'javelin-aphlict',
'phabricator-notification',
'javelin-behavior-aphlict-listen',
'javelin-behavior-phabricator-search-typeahead',
'javelin-behavior-aphlict-dropdown',
'javelin-behavior-history-install',
'javelin-behavior-phabricator-gesture',
'javelin-behavior-phabricator-active-nav',
'javelin-behavior-phabricator-nav',
'javelin-behavior-phabricator-remarkup-assist',
'phabricator-textareautils',
'phabricator-file-upload',
'javelin-behavior-global-drag-and-drop',
'javelin-behavior-phabricator-reveal-content',
'phui-hovercard',
'javelin-behavior-phui-hovercards',
'javelin-color',
'javelin-fx',
'phabricator-draggable-list',
'javelin-behavior-phabricator-transaction-list',
'javelin-behavior-phabricator-show-older-transactions',
'javelin-behavior-phui-dropdown-menu',
'javelin-behavior-doorkeeper-tag',
'phabricator-title',
'javelin-leader',
'javelin-websocket',
'javelin-behavior-dashboard-async-panel',
'javelin-behavior-dashboard-tab-panel',
'javelin-quicksand',
'javelin-behavior-quicksand-blacklist',
'javelin-behavior-high-security-warning',
'javelin-behavior-read-only-warning',
'javelin-scrollbar',
'javelin-behavior-scrollbar',
'javelin-behavior-durable-column',
'conpherence-thread-manager',
'javelin-behavior-detect-timezone',
'javelin-behavior-setup-check-https',
'javelin-behavior-aphlict-status',
'javelin-behavior-user-menu',
'phabricator-favicon',
),
'differential.pkg.css' => array(
'differential-core-view-css',
'differential-changeset-view-css',
'differential-revision-history-css',
'differential-revision-list-css',
'differential-table-of-contents-css',
'differential-revision-comment-css',
'differential-revision-add-comment-css',
'phabricator-object-selector-css',
'phabricator-content-source-view-css',
'inline-comment-summary-css',
'phui-inline-comment-view-css',
'phabricator-filetree-view-css',
),
'differential.pkg.js' => array(
'phabricator-drag-and-drop-file-upload',
'phabricator-shaped-request',
'javelin-behavior-differential-populate',
'javelin-behavior-differential-diff-radios',
'javelin-behavior-aphront-drag-and-drop-textarea',
'javelin-behavior-phabricator-object-selector',
'javelin-behavior-repository-crossreference',
'javelin-behavior-differential-user-select',
'javelin-behavior-aphront-more',
'phabricator-diff-inline',
'phabricator-diff-changeset',
'phabricator-diff-changeset-list',
),
'diffusion.pkg.css' => array(
'diffusion-icons-css',
),
'diffusion.pkg.js' => array(
'javelin-behavior-diffusion-pull-lastmodified',
'javelin-behavior-diffusion-commit-graph',
'javelin-behavior-audit-preview',
),
'maniphest.pkg.css' => array(
'maniphest-task-summary-css',
),
'maniphest.pkg.js' => array(
'javelin-behavior-maniphest-batch-selector',
'javelin-behavior-maniphest-subpriority-editor',
'javelin-behavior-maniphest-list-editor',
),
),
);
diff --git a/src/applications/cache/PhabricatorKeyValueDatabaseCache.php b/src/applications/cache/PhabricatorKeyValueDatabaseCache.php
index 0b4609074a..d6674c5671 100644
--- a/src/applications/cache/PhabricatorKeyValueDatabaseCache.php
+++ b/src/applications/cache/PhabricatorKeyValueDatabaseCache.php
@@ -1,174 +1,173 @@
<?php
final class PhabricatorKeyValueDatabaseCache
extends PhutilKeyValueCache {
const CACHE_FORMAT_RAW = 'raw';
const CACHE_FORMAT_DEFLATE = 'deflate';
public function setKeys(array $keys, $ttl = null) {
if (PhabricatorEnv::isReadOnly()) {
return;
}
if ($keys) {
$map = $this->digestKeys(array_keys($keys));
$conn_w = $this->establishConnection('w');
$sql = array();
foreach ($map as $key => $hash) {
$value = $keys[$key];
list($format, $storage_value) = $this->willWriteValue($key, $value);
$sql[] = qsprintf(
$conn_w,
'(%s, %s, %s, %B, %d, %nd)',
$hash,
$key,
$format,
$storage_value,
time(),
$ttl ? (time() + $ttl) : null);
}
$guard = AphrontWriteGuard::beginScopedUnguardedWrites();
foreach (PhabricatorLiskDAO::chunkSQL($sql) as $chunk) {
queryfx(
$conn_w,
'INSERT INTO %T
(cacheKeyHash, cacheKey, cacheFormat, cacheData,
cacheCreated, cacheExpires) VALUES %LQ
ON DUPLICATE KEY UPDATE
cacheKey = VALUES(cacheKey),
cacheFormat = VALUES(cacheFormat),
cacheData = VALUES(cacheData),
cacheCreated = VALUES(cacheCreated),
cacheExpires = VALUES(cacheExpires)',
$this->getTableName(),
$chunk);
}
unset($guard);
}
return $this;
}
public function getKeys(array $keys) {
$results = array();
if ($keys) {
$map = $this->digestKeys($keys);
$rows = queryfx_all(
$this->establishConnection('r'),
'SELECT * FROM %T WHERE cacheKeyHash IN (%Ls)',
$this->getTableName(),
$map);
$rows = ipull($rows, null, 'cacheKey');
foreach ($keys as $key) {
if (empty($rows[$key])) {
continue;
}
$row = $rows[$key];
if ($row['cacheExpires'] && ($row['cacheExpires'] < time())) {
continue;
}
try {
$results[$key] = $this->didReadValue(
$row['cacheFormat'],
$row['cacheData']);
} catch (Exception $ex) {
// Treat this as a cache miss.
phlog($ex);
}
}
}
return $results;
}
public function deleteKeys(array $keys) {
if ($keys) {
$map = $this->digestKeys($keys);
queryfx(
$this->establishConnection('w'),
'DELETE FROM %T WHERE cacheKeyHash IN (%Ls)',
$this->getTableName(),
$map);
}
return $this;
}
public function destroyCache() {
queryfx(
$this->establishConnection('w'),
'DELETE FROM %T',
$this->getTableName());
return $this;
}
/* -( Raw Cache Access )--------------------------------------------------- */
public function establishConnection($mode) {
// TODO: This is the only concrete table we have on the database right
// now.
return id(new PhabricatorMarkupCache())->establishConnection($mode);
}
public function getTableName() {
return 'cache_general';
}
/* -( Implementation )----------------------------------------------------- */
private function digestKeys(array $keys) {
$map = array();
foreach ($keys as $key) {
$map[$key] = PhabricatorHash::digestForIndex($key);
}
return $map;
}
private function willWriteValue($key, $value) {
if (!is_string($value)) {
throw new Exception(pht('Only strings may be written to the DB cache!'));
}
static $can_deflate;
if ($can_deflate === null) {
- $can_deflate = function_exists('gzdeflate') &&
- PhabricatorEnv::getEnvConfig('cache.enable-deflate');
+ $can_deflate = function_exists('gzdeflate');
}
if ($can_deflate) {
$deflated = PhabricatorCaches::maybeDeflateData($value);
if ($deflated !== null) {
return array(self::CACHE_FORMAT_DEFLATE, $deflated);
}
}
return array(self::CACHE_FORMAT_RAW, $value);
}
private function didReadValue($format, $value) {
switch ($format) {
case self::CACHE_FORMAT_RAW:
return $value;
case self::CACHE_FORMAT_DEFLATE:
return PhabricatorCaches::inflateData($value);
default:
throw new Exception(pht('Unknown cache format.'));
}
}
}
diff --git a/src/applications/celerity/CelerityResourceMapGenerator.php b/src/applications/celerity/CelerityResourceMapGenerator.php
index 91d0193ade..9280c9ecc2 100644
--- a/src/applications/celerity/CelerityResourceMapGenerator.php
+++ b/src/applications/celerity/CelerityResourceMapGenerator.php
@@ -1,397 +1,407 @@
<?php
final class CelerityResourceMapGenerator extends Phobject {
private $debug = false;
private $resources;
private $nameMap = array();
private $symbolMap = array();
private $requiresMap = array();
private $packageMap = array();
public function __construct(CelerityPhysicalResources $resources) {
$this->resources = $resources;
}
public function getNameMap() {
return $this->nameMap;
}
public function getSymbolMap() {
return $this->symbolMap;
}
public function getRequiresMap() {
return $this->requiresMap;
}
public function getPackageMap() {
return $this->packageMap;
}
public function setDebug($debug) {
$this->debug = $debug;
return $this;
}
protected function log($message) {
if ($this->debug) {
$console = PhutilConsole::getConsole();
$console->writeErr("%s\n", $message);
}
}
public function generate() {
$binary_map = $this->rebuildBinaryResources($this->resources);
$this->log(pht('Found %d binary resources.', count($binary_map)));
$xformer = id(new CelerityResourceTransformer())
->setMinify(false)
->setRawURIMap(ipull($binary_map, 'uri'));
$text_map = $this->rebuildTextResources($this->resources, $xformer);
$this->log(pht('Found %d text resources.', count($text_map)));
$resource_graph = array();
$requires_map = array();
$symbol_map = array();
foreach ($text_map as $name => $info) {
if (isset($info['provides'])) {
$symbol_map[$info['provides']] = $info['hash'];
// We only need to check for cycles and add this to the requires map
// if it actually requires anything.
if (!empty($info['requires'])) {
$resource_graph[$info['provides']] = $info['requires'];
$requires_map[$info['hash']] = $info['requires'];
}
}
}
$this->detectGraphCycles($resource_graph);
$name_map = ipull($binary_map, 'hash') + ipull($text_map, 'hash');
$hash_map = array_flip($name_map);
$package_map = $this->rebuildPackages(
$this->resources,
$symbol_map,
$hash_map);
$this->log(pht('Found %d packages.', count($package_map)));
$component_map = array();
foreach ($package_map as $package_name => $package_info) {
foreach ($package_info['symbols'] as $symbol) {
$component_map[$symbol] = $package_name;
}
}
$name_map = $this->mergeNameMaps(
array(
array(pht('Binary'), ipull($binary_map, 'hash')),
array(pht('Text'), ipull($text_map, 'hash')),
array(pht('Package'), ipull($package_map, 'hash')),
));
$package_map = ipull($package_map, 'symbols');
ksort($name_map, SORT_STRING);
ksort($symbol_map, SORT_STRING);
ksort($requires_map, SORT_STRING);
ksort($package_map, SORT_STRING);
$this->nameMap = $name_map;
$this->symbolMap = $symbol_map;
$this->requiresMap = $requires_map;
$this->packageMap = $package_map;
return $this;
}
public function write() {
$map_content = $this->formatMapContent(array(
'names' => $this->getNameMap(),
'symbols' => $this->getSymbolMap(),
'requires' => $this->getRequiresMap(),
'packages' => $this->getPackageMap(),
));
$map_path = $this->resources->getPathToMap();
$this->log(pht('Writing map "%s".', Filesystem::readablePath($map_path)));
Filesystem::writeFile($map_path, $map_content);
return $this;
}
private function formatMapContent(array $data) {
$content = phutil_var_export($data);
$generated = '@'.'generated';
return <<<EOFILE
<?php
/**
* This file is automatically generated. Use 'bin/celerity map' to rebuild it.
*
* {$generated}
*/
return {$content};
EOFILE;
}
/**
* Find binary resources (like PNG and SWF) and return information about
* them.
*
* @param CelerityPhysicalResources Resource map to find binary resources for.
* @return map<string, map<string, string>> Resource information map.
*/
private function rebuildBinaryResources(
CelerityPhysicalResources $resources) {
$binary_map = $resources->findBinaryResources();
$result_map = array();
foreach ($binary_map as $name => $data_hash) {
- $hash = $resources->getCelerityHash($data_hash.$name);
+ $hash = $this->newResourceHash($data_hash.$name);
$result_map[$name] = array(
'hash' => $hash,
'uri' => $resources->getResourceURI($hash, $name),
);
}
return $result_map;
}
/**
* Find text resources (like JS and CSS) and return information about them.
*
* @param CelerityPhysicalResources Resource map to find text resources for.
* @param CelerityResourceTransformer Configured resource transformer.
* @return map<string, map<string, string>> Resource information map.
*/
private function rebuildTextResources(
CelerityPhysicalResources $resources,
CelerityResourceTransformer $xformer) {
$text_map = $resources->findTextResources();
$result_map = array();
foreach ($text_map as $name => $data_hash) {
$raw_data = $resources->getResourceData($name);
$xformed_data = $xformer->transformResource($name, $raw_data);
- $data_hash = $resources->getCelerityHash($xformed_data);
- $hash = $resources->getCelerityHash($data_hash.$name);
+ $data_hash = $this->newResourceHash($xformed_data);
+ $hash = $this->newResourceHash($data_hash.$name);
list($provides, $requires) = $this->getProvidesAndRequires(
$name,
$raw_data);
$result_map[$name] = array(
'hash' => $hash,
);
if ($provides !== null) {
$result_map[$name] += array(
'provides' => $provides,
'requires' => $requires,
);
}
}
return $result_map;
}
/**
* Parse the `@provides` and `@requires` symbols out of a text resource, like
* JS or CSS.
*
* @param string Resource name.
* @param string Resource data.
* @return pair<string|null, list<string>|null> The `@provides` symbol and
* the list of `@requires` symbols. If the resource is not part of the
* dependency graph, both are null.
*/
private function getProvidesAndRequires($name, $data) {
$parser = new PhutilDocblockParser();
$matches = array();
$ok = preg_match('@/[*][*].*?[*]/@s', $data, $matches);
if (!$ok) {
throw new Exception(
pht(
'Resource "%s" does not have a header doc comment. Encode '.
'dependency data in a header docblock.',
$name));
}
list($description, $metadata) = $parser->parse($matches[0]);
$provides = $this->parseResourceSymbolList(idx($metadata, 'provides'));
$requires = $this->parseResourceSymbolList(idx($metadata, 'requires'));
if (!$provides) {
// Tests and documentation-only JS is permitted to @provide no targets.
return array(null, null);
}
if (count($provides) > 1) {
throw new Exception(
pht(
'Resource "%s" must %s at most one Celerity target.',
$name,
'@provide'));
}
return array(head($provides), $requires);
}
/**
* Check for dependency cycles in the resource graph. Raises an exception if
* a cycle is detected.
*
* @param map<string, list<string>> Map of `@provides` symbols to their
* `@requires` symbols.
* @return void
*/
private function detectGraphCycles(array $nodes) {
$graph = id(new CelerityResourceGraph())
->addNodes($nodes)
->setResourceGraph($nodes)
->loadGraph();
foreach ($nodes as $provides => $requires) {
$cycle = $graph->detectCycles($provides);
if ($cycle) {
throw new Exception(
pht(
'Cycle detected in resource graph: %s',
implode(' > ', $cycle)));
}
}
}
/**
* Build package specifications for a given resource source.
*
* @param CelerityPhysicalResources Resource source to rebuild.
* @param map<string, string> Map of `@provides` to hashes.
* @param map<string, string> Map of hashes to resource names.
* @return map<string, map<string, string>> Package information maps.
*/
private function rebuildPackages(
CelerityPhysicalResources $resources,
array $symbol_map,
array $reverse_map) {
$package_map = array();
$package_spec = $resources->getResourcePackages();
foreach ($package_spec as $package_name => $package_symbols) {
$type = null;
$hashes = array();
foreach ($package_symbols as $symbol) {
$symbol_hash = idx($symbol_map, $symbol);
if ($symbol_hash === null) {
throw new Exception(
pht(
'Package specification for "%s" includes "%s", but that symbol '.
'is not %s by any resource.',
$package_name,
$symbol,
'@provided'));
}
$resource_name = $reverse_map[$symbol_hash];
$resource_type = $resources->getResourceType($resource_name);
if ($type === null) {
$type = $resource_type;
} else if ($type !== $resource_type) {
throw new Exception(
pht(
'Package specification for "%s" includes resources of multiple '.
'types (%s, %s). Each package may only contain one type of '.
'resource.',
$package_name,
$type,
$resource_type));
}
$hashes[] = $symbol.':'.$symbol_hash;
}
- $hash = $resources->getCelerityHash(implode("\n", $hashes));
+ $hash = $this->newResourceHash(implode("\n", $hashes));
$package_map[$package_name] = array(
'hash' => $hash,
'symbols' => $package_symbols,
);
}
return $package_map;
}
private function mergeNameMaps(array $maps) {
$result = array();
$origin = array();
foreach ($maps as $map) {
list($map_name, $data) = $map;
foreach ($data as $name => $hash) {
if (empty($result[$name])) {
$result[$name] = $hash;
$origin[$name] = $map_name;
} else {
$old = $origin[$name];
$new = $map_name;
throw new Exception(
pht(
'Resource source defines two resources with the same name, '.
'"%s". One is defined in the "%s" map; the other in the "%s" '.
'map. Each resource must have a unique name.',
$name,
$old,
$new));
}
}
}
return $result;
}
private function parseResourceSymbolList($list) {
if (!$list) {
return array();
}
// This is valid:
//
// @requires x y
//
// But so is this:
//
// @requires x
// @requires y
//
// Accept either form and produce a list of symbols.
$list = (array)$list;
// We can get `true` values if there was a bare `@requires` in the input.
foreach ($list as $key => $item) {
if ($item === true) {
unset($list[$key]);
}
}
$list = implode(' ', $list);
$list = trim($list);
$list = preg_split('/\s+/', $list);
$list = array_filter($list);
return $list;
}
+ private function newResourceHash($data) {
+ // This HMAC key is a static, hard-coded value because we don't want the
+ // hashes in the map to depend on database state: when two different
+ // developers regenerate the map, they should end up with the same output.
+
+ $hash = PhabricatorHash::digestHMACSHA256($data, 'celerity-resource-data');
+
+ return substr($hash, 0, 8);
+ }
+
}
diff --git a/src/applications/celerity/controller/CelerityPhabricatorResourceController.php b/src/applications/celerity/controller/CelerityPhabricatorResourceController.php
index 5751996db8..375a19dd68 100644
--- a/src/applications/celerity/controller/CelerityPhabricatorResourceController.php
+++ b/src/applications/celerity/controller/CelerityPhabricatorResourceController.php
@@ -1,57 +1,55 @@
<?php
/**
* Delivers CSS and JS resources to the browser. This controller handles all
* `/res/` requests, and manages caching, package construction, and resource
* preprocessing.
*/
final class CelerityPhabricatorResourceController
extends CelerityResourceController {
private $path;
private $hash;
private $library;
private $postprocessorKey;
public function getCelerityResourceMap() {
return CelerityResourceMap::getNamedInstance($this->library);
}
public function handleRequest(AphrontRequest $request) {
$this->path = $request->getURIData('path');
$this->hash = $request->getURIData('hash');
$this->library = $request->getURIData('library');
$this->postprocessorKey = $request->getURIData('postprocessor');
// Check that the resource library exists before trying to serve resources
// from it.
try {
$this->getCelerityResourceMap();
} catch (Exception $ex) {
return new Aphront400Response();
}
return $this->serveResource(
array(
'path' => $this->path,
'hash' => $this->hash,
));
}
protected function buildResourceTransformer() {
- $minify_on = PhabricatorEnv::getEnvConfig('celerity.minify');
$developer_on = PhabricatorEnv::getEnvConfig('phabricator.developer-mode');
-
- $should_minify = ($minify_on && !$developer_on);
+ $should_minify = !$developer_on;
return id(new CelerityResourceTransformer())
->setMinify($should_minify)
->setPostprocessorKey($this->postprocessorKey)
->setCelerityMap($this->getCelerityResourceMap());
}
protected function getCacheKey($path) {
return parent::getCacheKey($path.';'.$this->postprocessorKey);
}
}
diff --git a/src/applications/celerity/resources/CelerityResources.php b/src/applications/celerity/resources/CelerityResources.php
index e0b9191702..a5f3fd20e9 100644
--- a/src/applications/celerity/resources/CelerityResources.php
+++ b/src/applications/celerity/resources/CelerityResources.php
@@ -1,38 +1,32 @@
<?php
/**
* Defines the location of static resources.
*/
abstract class CelerityResources extends Phobject {
abstract public function getName();
abstract public function getResourceData($name);
public function getResourceModifiedTime($name) {
return 0;
}
- public function getCelerityHash($data) {
- $tail = PhabricatorEnv::getEnvConfig('celerity.resource-hash');
- $hash = PhabricatorHash::weakDigest($data, $tail);
- return substr($hash, 0, 8);
- }
-
public function getResourceType($path) {
return CelerityResourceTransformer::getResourceType($path);
}
public function getResourceURI($hash, $name) {
$resources = $this->getName();
return "/res/{$resources}/{$hash}/{$name}";
}
public function getResourcePackages() {
return array();
}
public function loadMap() {
return array();
}
}
diff --git a/src/applications/config/check/PhabricatorExtraConfigSetupCheck.php b/src/applications/config/check/PhabricatorExtraConfigSetupCheck.php
index 286de7f63b..5f84376e67 100644
--- a/src/applications/config/check/PhabricatorExtraConfigSetupCheck.php
+++ b/src/applications/config/check/PhabricatorExtraConfigSetupCheck.php
@@ -1,380 +1,388 @@
<?php
final class PhabricatorExtraConfigSetupCheck extends PhabricatorSetupCheck {
public function getDefaultGroup() {
return self::GROUP_OTHER;
}
protected function executeChecks() {
$ancient_config = self::getAncientConfig();
$all_keys = PhabricatorEnv::getAllConfigKeys();
$all_keys = array_keys($all_keys);
sort($all_keys);
$defined_keys = PhabricatorApplicationConfigOptions::loadAllOptions();
foreach ($all_keys as $key) {
if (isset($defined_keys[$key])) {
continue;
}
if (isset($ancient_config[$key])) {
$summary = pht(
'This option has been removed. You may delete it at your '.
'convenience.');
$message = pht(
"The configuration option '%s' has been removed. You may delete ".
"it at your convenience.".
"\n\n%s",
$key,
$ancient_config[$key]);
$short = pht('Obsolete Config');
$name = pht('Obsolete Configuration Option "%s"', $key);
} else {
$summary = pht('This option is not recognized. It may be misspelled.');
$message = pht(
"The configuration option '%s' is not recognized. It may be ".
"misspelled, or it might have existed in an older version of ".
"Phabricator. It has no effect, and should be corrected or deleted.",
$key);
$short = pht('Unknown Config');
$name = pht('Unknown Configuration Option "%s"', $key);
}
$issue = $this->newIssue('config.unknown.'.$key)
->setShortName($short)
->setName($name)
->setSummary($summary);
$stack = PhabricatorEnv::getConfigSourceStack();
$stack = $stack->getStack();
$found = array();
$found_local = false;
$found_database = false;
foreach ($stack as $source_key => $source) {
$value = $source->getKeys(array($key));
if ($value) {
$found[] = $source->getName();
if ($source instanceof PhabricatorConfigDatabaseSource) {
$found_database = true;
}
if ($source instanceof PhabricatorConfigLocalSource) {
$found_local = true;
}
}
}
$message = $message."\n\n".pht(
'This configuration value is defined in these %d '.
'configuration source(s): %s.',
count($found),
implode(', ', $found));
$issue->setMessage($message);
if ($found_local) {
$command = csprintf('phabricator/ $ ./bin/config delete %s', $key);
$issue->addCommand($command);
}
if ($found_database) {
$issue->addPhabricatorConfig($key);
}
}
}
/**
* Return a map of deleted config options. Keys are option keys; values are
* explanations of what happened to the option.
*/
public static function getAncientConfig() {
$reason_auth = pht(
'This option has been migrated to the "Auth" application. Your old '.
'configuration is still in effect, but now stored in "Auth" instead of '.
'configuration. Going forward, you can manage authentication from '.
'the web UI.');
$auth_config = array(
'controller.oauth-registration',
'auth.password-auth-enabled',
'facebook.auth-enabled',
'facebook.registration-enabled',
'facebook.auth-permanent',
'facebook.application-id',
'facebook.application-secret',
'facebook.require-https-auth',
'github.auth-enabled',
'github.registration-enabled',
'github.auth-permanent',
'github.application-id',
'github.application-secret',
'google.auth-enabled',
'google.registration-enabled',
'google.auth-permanent',
'google.application-id',
'google.application-secret',
'ldap.auth-enabled',
'ldap.hostname',
'ldap.port',
'ldap.base_dn',
'ldap.search_attribute',
'ldap.search-first',
'ldap.username-attribute',
'ldap.real_name_attributes',
'ldap.activedirectory_domain',
'ldap.version',
'ldap.referrals',
'ldap.anonymous-user-name',
'ldap.anonymous-user-password',
'ldap.start-tls',
'disqus.auth-enabled',
'disqus.registration-enabled',
'disqus.auth-permanent',
'disqus.application-id',
'disqus.application-secret',
'phabricator.oauth-uri',
'phabricator.auth-enabled',
'phabricator.registration-enabled',
'phabricator.auth-permanent',
'phabricator.application-id',
'phabricator.application-secret',
);
$ancient_config = array_fill_keys($auth_config, $reason_auth);
$markup_reason = pht(
'Custom remarkup rules are now added by subclassing '.
'%s or %s.',
'PhabricatorRemarkupCustomInlineRule',
'PhabricatorRemarkupCustomBlockRule');
$session_reason = pht(
'Sessions now expire and are garbage collected rather than having an '.
'arbitrary concurrency limit.');
$differential_field_reason = pht(
'All Differential fields are now managed through the configuration '.
'option "%s". Use that option to configure which fields are shown.',
'differential.fields');
$reply_domain_reason = pht(
'Individual application reply handler domains have been removed. '.
'Configure a reply domain with "%s".',
'metamta.reply-handler-domain');
$reply_handler_reason = pht(
'Reply handlers can no longer be overridden with configuration.');
$monospace_reason = pht(
'Phabricator no longer supports global customization of monospaced '.
'fonts.');
$public_mail_reason = pht(
'Inbound mail addresses are now configured for each application '.
'in the Applications tool.');
$gc_reason = pht(
'Garbage collectors are now configured with "%s".',
'bin/garbage set-policy');
$aphlict_reason = pht(
'Configuration of the notification server has changed substantially. '.
'For discussion, see T10794.');
$stale_reason = pht(
'The Differential revision list view age UI elements have been removed '.
'to simplify the interface.');
$global_settings_reason = pht(
'The "Re: Prefix" and "Vary Subjects" settings are now configured '.
'in global settings.');
$dashboard_reason = pht(
'This option has been removed, you can use Dashboards to provide '.
'homepage customization. See T11533 for more details.');
$elastic_reason = pht(
'Elasticsearch is now configured with "%s".',
'cluster.search');
$mailers_reason = pht(
'Inbound and outbound mail is now configured with "cluster.mailers".');
$ancient_config += array(
'phid.external-loaders' =>
pht(
'External loaders have been replaced. Extend `%s` '.
'to implement new PHID and handle types.',
'PhabricatorPHIDType'),
'maniphest.custom-task-extensions-class' =>
pht(
'Maniphest fields are now loaded automatically. '.
'You can configure them with `%s`.',
'maniphest.fields'),
'maniphest.custom-fields' =>
pht(
'Maniphest fields are now defined in `%s`. '.
'Existing definitions have been migrated.',
'maniphest.custom-field-definitions'),
'differential.custom-remarkup-rules' => $markup_reason,
'differential.custom-remarkup-block-rules' => $markup_reason,
'auth.sshkeys.enabled' => pht(
'SSH keys are now actually useful, so they are always enabled.'),
'differential.anonymous-access' => pht(
'Phabricator now has meaningful global access controls. See `%s`.',
'policy.allow-public'),
'celerity.resource-path' => pht(
'An alternate resource map is no longer supported. Instead, use '.
'multiple maps. See T4222.'),
'metamta.send-immediately' => pht(
'Mail is now always delivered by the daemons.'),
'auth.sessions.conduit' => $session_reason,
'auth.sessions.web' => $session_reason,
'tokenizer.ondemand' => pht(
'Phabricator now manages typeahead strategies automatically.'),
'differential.revision-custom-detail-renderer' => pht(
'Obsolete; use standard rendering events instead.'),
'differential.show-host-field' => $differential_field_reason,
'differential.show-test-plan-field' => $differential_field_reason,
'differential.field-selector' => $differential_field_reason,
'phabricator.show-beta-applications' => pht(
'This option has been renamed to `%s` to emphasize the '.
'unfinished nature of many prototype applications. '.
'Your existing setting has been migrated.',
'phabricator.show-prototypes'),
'notification.user' => pht(
'The notification server no longer requires root permissions. Start '.
'the server as the user you want it to run under.'),
'notification.debug' => pht(
'Notifications no longer have a dedicated debugging mode.'),
'translation.provider' => pht(
'The translation implementation has changed and providers are no '.
'longer used or supported.'),
'config.mask' => pht(
'Use `%s` instead of this option.',
'config.hide'),
'phd.start-taskmasters' => pht(
'Taskmasters now use an autoscaling pool. You can configure the '.
'pool size with `%s`.',
'phd.taskmasters'),
'storage.engine-selector' => pht(
'Phabricator now automatically discovers available storage engines '.
'at runtime.'),
'storage.upload-size-limit' => pht(
'Phabricator now supports arbitrarily large files. Consult the '.
'documentation for configuration details.'),
'security.allow-outbound-http' => pht(
'This option has been replaced with the more granular option `%s`.',
'security.outbound-blacklist'),
'metamta.reply.show-hints' => pht(
'Phabricator no longer shows reply hints in mail.'),
'metamta.differential.reply-handler-domain' => $reply_domain_reason,
'metamta.diffusion.reply-handler-domain' => $reply_domain_reason,
'metamta.macro.reply-handler-domain' => $reply_domain_reason,
'metamta.maniphest.reply-handler-domain' => $reply_domain_reason,
'metamta.pholio.reply-handler-domain' => $reply_domain_reason,
'metamta.diffusion.reply-handler' => $reply_handler_reason,
'metamta.differential.reply-handler' => $reply_handler_reason,
'metamta.maniphest.reply-handler' => $reply_handler_reason,
'metamta.package.reply-handler' => $reply_handler_reason,
'metamta.precedence-bulk' => pht(
'Phabricator now always sends transaction mail with '.
'"Precedence: bulk" to improve deliverability.'),
'style.monospace' => $monospace_reason,
'style.monospace.windows' => $monospace_reason,
'search.engine-selector' => pht(
'Phabricator now automatically discovers available search engines '.
'at runtime.'),
'metamta.files.public-create-email' => $public_mail_reason,
'metamta.maniphest.public-create-email' => $public_mail_reason,
'metamta.maniphest.default-public-author' => $public_mail_reason,
'metamta.paste.public-create-email' => $public_mail_reason,
'security.allow-conduit-act-as-user' => pht(
'Impersonating users over the API is no longer supported.'),
'feed.public' => pht('The framable public feed is no longer supported.'),
'auth.login-message' => pht(
'This configuration option has been replaced with a modular '.
'handler. See T9346.'),
'gcdaemon.ttl.herald-transcripts' => $gc_reason,
'gcdaemon.ttl.daemon-logs' => $gc_reason,
'gcdaemon.ttl.differential-parse-cache' => $gc_reason,
'gcdaemon.ttl.markup-cache' => $gc_reason,
'gcdaemon.ttl.task-archive' => $gc_reason,
'gcdaemon.ttl.general-cache' => $gc_reason,
'gcdaemon.ttl.conduit-logs' => $gc_reason,
'phd.variant-config' => pht(
'This configuration is no longer relevant because daemons '.
'restart automatically on configuration changes.'),
'notification.ssl-cert' => $aphlict_reason,
'notification.ssl-key' => $aphlict_reason,
'notification.pidfile' => $aphlict_reason,
'notification.log' => $aphlict_reason,
'notification.enabled' => $aphlict_reason,
'notification.client-uri' => $aphlict_reason,
'notification.server-uri' => $aphlict_reason,
'metamta.differential.unified-comment-context' => pht(
'Inline comments are now always rendered with a limited amount '.
'of context.'),
'differential.days-fresh' => $stale_reason,
'differential.days-stale' => $stale_reason,
'metamta.re-prefix' => $global_settings_reason,
'metamta.vary-subjects' => $global_settings_reason,
'ui.custom-header' => pht(
'This option has been replaced with `ui.logo`, which provides more '.
'flexible configuration options.'),
'welcome.html' => $dashboard_reason,
'maniphest.priorities.unbreak-now' => $dashboard_reason,
'maniphest.priorities.needs-triage' => $dashboard_reason,
'mysql.implementation' => pht(
'Phabricator now automatically selects the best available '.
'MySQL implementation.'),
'mysql.configuration-provider' => pht(
'Phabricator now has application-level management of partitioning '.
'and replicas.'),
'search.elastic.host' => $elastic_reason,
'search.elastic.namespace' => $elastic_reason,
'metamta.mail-adapter' => $mailers_reason,
'amazon-ses.access-key' => $mailers_reason,
'amazon-ses.secret-key' => $mailers_reason,
'amazon-ses.endpoint' => $mailers_reason,
'mailgun.domain' => $mailers_reason,
'mailgun.api-key' => $mailers_reason,
'phpmailer.mailer' => $mailers_reason,
'phpmailer.smtp-host' => $mailers_reason,
'phpmailer.smtp-port' => $mailers_reason,
'phpmailer.smtp-protocol' => $mailers_reason,
'phpmailer.smtp-user' => $mailers_reason,
'phpmailer.smtp-password' => $mailers_reason,
'phpmailer.smtp-encoding' => $mailers_reason,
'sendgrid.api-user' => $mailers_reason,
'sendgrid.api-key' => $mailers_reason,
+
+ 'celerity.resource-hash' => pht(
+ 'This option generally did not prove useful. Resource hash keys '.
+ 'are now managed automatically.'),
+ 'celerity.enable-deflate' => pht(
+ 'Resource deflation is now managed automatically.'),
+ 'celerity.minify' => pht(
+ 'Resource minification is now managed automatically.'),
);
return $ancient_config;
}
}
diff --git a/src/applications/config/option/PhabricatorDeveloperConfigOptions.php b/src/applications/config/option/PhabricatorDeveloperConfigOptions.php
index a84a7484a6..f4b8e8b157 100644
--- a/src/applications/config/option/PhabricatorDeveloperConfigOptions.php
+++ b/src/applications/config/option/PhabricatorDeveloperConfigOptions.php
@@ -1,183 +1,157 @@
<?php
final class PhabricatorDeveloperConfigOptions
extends PhabricatorApplicationConfigOptions {
public function getName() {
return pht('Developer / Debugging');
}
public function getDescription() {
return pht('Options for Phabricator developers, including debugging.');
}
public function getIcon() {
return 'fa-bug';
}
public function getGroup() {
return 'core';
}
public function getOptions() {
return array(
$this->newOption('darkconsole.enabled', 'bool', false)
->setBoolOptions(
array(
pht('Enable DarkConsole'),
pht('Disable DarkConsole'),
))
->setSummary(pht("Enable Phabricator's debugging console."))
->setDescription(
pht(
"DarkConsole is a development and profiling tool built into ".
"Phabricator's web interface. You should leave it disabled unless ".
"you are developing or debugging Phabricator.\n\n".
"Once you activate DarkConsole for the install, **you need to ".
"enable it for your account before it will actually appear on ".
"pages.** You can do this in Settings > Developer Settings.\n\n".
"DarkConsole exposes potentially sensitive data (like queries, ".
"stack traces, and configuration) so you generally should not ".
"turn it on in production.")),
$this->newOption('darkconsole.always-on', 'bool', false)
->setBoolOptions(
array(
pht('Always Activate DarkConsole'),
pht('Require DarkConsole Activation'),
))
->setSummary(pht('Activate DarkConsole on every page.'))
->setDescription(
pht(
"This option allows you to enable DarkConsole on every page, ".
"even for logged-out users. This is only really useful if you ".
"need to debug something on a logged-out page. You should not ".
"enable this option in production.\n\n".
"You must enable DarkConsole by setting '%s' ".
"before this option will have any effect.",
'darkconsole.enabled')),
$this->newOption('debug.time-limit', 'int', null)
->setSummary(
pht(
'Limit page execution time to debug hangs.'))
->setDescription(
pht(
"This option can help debug pages which are taking a very ".
"long time (more than 30 seconds) to render.\n\n".
"If a page is slow to render (but taking less than 30 seconds), ".
"the best tools to use to figure out why it is slow are usually ".
"the DarkConsole service call profiler and XHProf.\n\n".
"However, if a request takes a very long time to return, some ".
"components (like Apache, nginx, or PHP itself) may abort the ".
"request before it finishes. This can prevent you from using ".
"profiling tools to understand page performance in detail.\n\n".
"In these cases, you can use this option to force the page to ".
"abort after a smaller number of seconds (for example, 10), and ".
"dump a useful stack trace. This can provide useful information ".
"about why a page is hanging.\n\n".
"To use this option, set it to a small number (like 10), and ".
"reload a hanging page. The page should exit after 10 seconds ".
"and give you a stack trace.\n\n".
"You should turn this option off (set it to 0) when you are ".
"done with it. Leaving it on creates a small amount of overhead ".
"for all requests, even if they do not hit the time limit.")),
$this->newOption('debug.stop-on-redirect', 'bool', false)
->setBoolOptions(
array(
pht('Stop Before HTTP Redirect'),
pht('Use Normal HTTP Redirects'),
))
->setSummary(
pht(
'Confirm before redirecting so DarkConsole can be examined.'))
->setDescription(
pht(
'Normally, Phabricator issues HTTP redirects after a successful '.
'POST. This can make it difficult to debug things which happen '.
'while processing the POST, because service and profiling '.
'information are lost. By setting this configuration option, '.
'Phabricator will show a page instead of automatically '.
'redirecting, allowing you to examine service and profiling '.
'information. It also makes the UX awful, so you should only '.
'enable it when debugging.')),
$this->newOption('debug.profile-rate', 'int', 0)
->addExample(0, pht('No profiling'))
->addExample(1, pht('Profile every request (slow)'))
->addExample(1000, pht('Profile 0.1%% of all requests'))
->setSummary(pht('Automatically profile some percentage of pages.'))
->setDescription(
pht(
"Normally, Phabricator profiles pages only when explicitly ".
"requested via DarkConsole. However, it may be useful to profile ".
"some pages automatically.\n\n".
"Set this option to a positive integer N to profile 1 / N pages ".
"automatically. For example, setting it to 1 will profile every ".
"page, while setting it to 1000 will profile 1 page per 1000 ".
"requests (i.e., 0.1%% of requests).\n\n".
"Since profiling is slow and generates a lot of data, you should ".
"set this to 0 in production (to disable it) or to a large number ".
"(to collect a few samples, if you're interested in having some ".
"data to look at eventually). In development, it may be useful to ".
"set it to 1 in order to debug performance problems.\n\n".
"NOTE: You must install XHProf for profiling to work.")),
$this->newOption('debug.sample-rate', 'int', 1000)
->setLocked(true)
->addExample(0, pht('No performance sampling.'))
->addExample(1, pht('Sample every request (slow).'))
->addExample(1000, pht('Sample 0.1%% of requests.'))
->setSummary(pht('Automatically sample some fraction of requests.'))
->setDescription(
pht(
"The Multimeter application collects performance samples. You ".
"can use this data to help you understand what Phabricator is ".
"spending time and resources doing, and to identify problematic ".
"access patterns.".
"\n\n".
"This option controls how frequently sampling activates. Set it ".
"to some positive integer N to sample every 1 / N pages.".
"\n\n".
"For most installs, the default value (1 sample per 1000 pages) ".
"should collect enough data to be useful without requiring much ".
"storage or meaningfully impacting performance. If you're ".
"investigating performance issues, you can adjust the rate ".
"in order to collect more data.")),
$this->newOption('phabricator.developer-mode', 'bool', false)
->setBoolOptions(
array(
pht('Enable developer mode'),
pht('Disable developer mode'),
))
- ->setSummary(pht('Enable verbose error reporting and disk reads.'))
- ->setDescription(
- pht(
- 'This option enables verbose error reporting (stack traces, '.
- 'error callouts) and forces disk reads of static assets on '.
- 'every reload.')),
- $this->newOption('celerity.minify', 'bool', true)
- ->setBoolOptions(
- array(
- pht('Minify static resources.'),
- pht("Don't minify static resources."),
- ))
- ->setSummary(pht('Minify static Celerity resources.'))
- ->setDescription(
- pht(
- 'Minify static resources by removing whitespace and comments. You '.
- 'should enable this in production, but disable it in '.
- 'development.')),
- $this->newOption('cache.enable-deflate', 'bool', true)
- ->setBoolOptions(
- array(
- pht('Enable deflate compression'),
- pht('Disable deflate compression'),
- ))
- ->setSummary(
- pht('Toggle %s-based compression for some caches.', 'gzdeflate()'))
+ ->setSummary(pht('Enable verbose error reporting and disk reads.'))
->setDescription(
pht(
- 'Set this to false to disable the use of %s-based '.
- 'compression in some caches. This may give you less performant '.
- '(but more debuggable) caching.',
- 'gzdeflate()')),
+ 'This option enables verbose error reporting (stack traces, '.
+ 'error callouts) and forces disk reads of static assets on '.
+ 'every reload.')),
);
}
}
diff --git a/src/applications/config/option/PhabricatorSecurityConfigOptions.php b/src/applications/config/option/PhabricatorSecurityConfigOptions.php
index 78f8e89e6a..2b511ee023 100644
--- a/src/applications/config/option/PhabricatorSecurityConfigOptions.php
+++ b/src/applications/config/option/PhabricatorSecurityConfigOptions.php
@@ -1,365 +1,350 @@
<?php
final class PhabricatorSecurityConfigOptions
extends PhabricatorApplicationConfigOptions {
public function getName() {
return pht('Security');
}
public function getDescription() {
return pht('Security options.');
}
public function getIcon() {
return 'fa-lock';
}
public function getGroup() {
return 'core';
}
public function getOptions() {
$doc_href = PhabricatorEnv::getDoclink('Configuring a File Domain');
$doc_name = pht('Configuration Guide: Configuring a File Domain');
$default_address_blacklist = array(
// This is all of the IANA special/reserved blocks in IPv4 space.
'0.0.0.0/8',
'10.0.0.0/8',
'100.64.0.0/10',
'127.0.0.0/8',
'169.254.0.0/16',
'172.16.0.0/12',
'192.0.0.0/24',
'192.0.2.0/24',
'192.88.99.0/24',
'192.168.0.0/16',
'198.18.0.0/15',
'198.51.100.0/24',
'203.0.113.0/24',
'224.0.0.0/4',
'240.0.0.0/4',
'255.255.255.255/32',
// And these are the IANA special/reserved blocks in IPv6 space.
'::/128',
'::1/128',
'::ffff:0:0/96',
'100::/64',
'64:ff9b::/96',
'2001::/32',
'2001:10::/28',
'2001:20::/28',
'2001:db8::/32',
'2002::/16',
'fc00::/7',
'fe80::/10',
'ff00::/8',
);
$keyring_type = 'custom:PhabricatorKeyringConfigOptionType';
$keyring_description = $this->deformat(pht(<<<EOTEXT
The keyring stores master encryption keys. For help with configuring a keyring
and encryption, see **[[ %s | Configuring Encryption ]]**.
EOTEXT
,
PhabricatorEnv::getDoclink('Configuring Encryption')));
$require_mfa_description = $this->deformat(pht(<<<EOTEXT
By default, Phabricator allows users to add multi-factor authentication to
their accounts, but does not require it. By enabling this option, you can
force all users to add at least one authentication factor before they can use
their accounts.
Administrators can query a list of users who do not have MFA configured in
{nav People}:
- **[[ %s | %s ]]**
EOTEXT
,
'/people/?mfa=false',
pht('List of Users Without MFA')));
return array(
$this->newOption('security.alternate-file-domain', 'string', null)
->setLocked(true)
->setSummary(pht('Alternate domain to serve files from.'))
->setDescription(
pht(
'By default, Phabricator serves files from the same domain '.
'the application is served from. This is convenient, but '.
'presents a security risk.'.
"\n\n".
'You should configure a CDN or alternate file domain to mitigate '.
'this risk. Configuring a CDN will also improve performance. See '.
'[[ %s | %s ]] for instructions.',
$doc_href,
$doc_name))
->addExample('https://files.phabcdn.net/', pht('Valid Setting')),
$this->newOption(
'security.hmac-key',
'string',
'[D\t~Y7eNmnQGJ;rnH6aF;m2!vJ8@v8C=Cs:aQS\.Qw')
->setHidden(true)
->setSummary(
pht('Key for HMAC digests.'))
->setDescription(
pht(
'Default key for HMAC digests where the key is not important '.
'(i.e., the hash itself is secret). You can change this if you '.
'want (to any other string), but doing so will break existing '.
'sessions and CSRF tokens. This option is deprecated. Newer '.
'code automatically manages HMAC keys.')),
$this->newOption('security.require-https', 'bool', false)
->setLocked(true)
->setSummary(
pht('Force users to connect via HTTPS instead of HTTP.'))
->setDescription(
pht(
"If the web server responds to both HTTP and HTTPS requests but ".
"you want users to connect with only HTTPS, you can set this ".
"to `true` to make Phabricator redirect HTTP requests to HTTPS.".
"\n\n".
"Normally, you should just configure your server not to accept ".
"HTTP traffic, but this setting may be useful if you originally ".
"used HTTP and have now switched to HTTPS but don't want to ".
"break old links, or if your webserver sits behind a load ".
"balancer which terminates HTTPS connections and you can not ".
"reasonably configure more granular behavior there.".
"\n\n".
"IMPORTANT: Phabricator determines if a request is HTTPS or not ".
"by examining the PHP `%s` variable. If you run ".
"Apache/mod_php this will probably be set correctly for you ".
"automatically, but if you run Phabricator as CGI/FCGI (e.g., ".
"through nginx or lighttpd), you need to configure your web ".
"server so that it passes the value correctly based on the ".
"connection type.".
"\n\n".
"If you configure Phabricator in cluster mode, note that this ".
"setting is ignored by intracluster requests.",
"\$_SERVER['HTTPS']"))
->setBoolOptions(
array(
pht('Force HTTPS'),
pht('Allow HTTP'),
)),
$this->newOption('security.require-multi-factor-auth', 'bool', false)
->setLocked(true)
->setSummary(
pht('Require all users to configure multi-factor authentication.'))
->setDescription($require_mfa_description)
->setBoolOptions(
array(
pht('Multi-Factor Required'),
pht('Multi-Factor Optional'),
)),
$this->newOption(
'phabricator.csrf-key',
'string',
'0b7ec0592e0a2829d8b71df2fa269b2c6172eca3')
->setHidden(true)
->setSummary(
pht('Hashed with other inputs to generate CSRF tokens.'))
->setDescription(
pht(
'This is hashed with other inputs to generate CSRF tokens. If '.
'you want, you can change it to some other string which is '.
'unique to your install. This will make your install more secure '.
'in a vague, mostly theoretical way. But it will take you like 3 '.
'seconds of mashing on your keyboard to set it up so you might '.
'as well.')),
$this->newOption(
'phabricator.mail-key',
'string',
'5ce3e7e8787f6e40dfae861da315a5cdf1018f12')
->setHidden(true)
->setSummary(
pht('Hashed with other inputs to generate mail tokens.'))
->setDescription(
pht(
"This is hashed with other inputs to generate mail tokens. If ".
"you want, you can change it to some other string which is ".
"unique to your install. In particular, you will want to do ".
"this if you accidentally send a bunch of mail somewhere you ".
"shouldn't have, to invalidate all old reply-to addresses.")),
$this->newOption(
'uri.allowed-protocols',
'set',
array(
'http' => true,
'https' => true,
'mailto' => true,
))
->setSummary(
pht('Determines which URI protocols are auto-linked.'))
->setDescription(
pht(
"When users write comments which have URIs, they'll be ".
"automatically linked if the protocol appears in this set. This ".
"whitelist is primarily to prevent security issues like ".
"%s URIs.",
'javascript://'))
->addExample("http\nhttps", pht('Valid Setting'))
->setLocked(true),
$this->newOption(
'uri.allowed-editor-protocols',
'set',
array(
'http' => true,
'https' => true,
// This handler is installed by Textmate.
'txmt' => true,
// This handler is for MacVim.
'mvim' => true,
// Unofficial handler for Vim.
'vim' => true,
// Unofficial handler for Sublime.
'subl' => true,
// Unofficial handler for Emacs.
'emacs' => true,
// This isn't a standard handler installed by an application, but
// is a reasonable name for a user-installed handler.
'editor' => true,
))
->setSummary(pht('Whitelists editor protocols for "Open in Editor".'))
->setDescription(
pht(
'Users can configure a URI pattern to open files in a text '.
'editor. The URI must use a protocol on this whitelist.'))
->setLocked(true),
- $this->newOption(
- 'celerity.resource-hash',
- 'string',
- 'd9455ea150622ee044f7931dabfa52aa')
- ->setSummary(
- pht('An input to the hash function when building resource hashes.'))
- ->setDescription(
- pht(
- 'This value is an input to the hash function when building '.
- 'resource hashes. It has no security value, but if you '.
- 'accidentally poison user caches (by pushing a bad patch or '.
- 'having something go wrong with a CDN, e.g.) you can change this '.
- 'to something else and rebuild the Celerity map to break user '.
- 'caches. Unless you are doing Celerity development, it is '.
- 'exceptionally unlikely that you need to modify this.')),
$this->newOption('remarkup.enable-embedded-youtube', 'bool', false)
->setBoolOptions(
array(
pht('Embed YouTube videos'),
pht("Don't embed YouTube videos"),
))
->setSummary(
pht('Determines whether or not YouTube videos get embedded.'))
->setDescription(
pht(
"If you enable this, linked YouTube videos will be embedded ".
"inline. This has mild security implications (you'll leak ".
"referrers to YouTube) and is pretty silly (but sort of ".
"awesome).")),
$this->newOption(
'security.outbound-blacklist',
'list<string>',
$default_address_blacklist)
->setLocked(true)
->setSummary(
pht(
'Blacklist subnets to prevent user-initiated outbound '.
'requests.'))
->setDescription(
pht(
'Phabricator users can make requests to other services from '.
'the Phabricator host in some circumstances (for example, by '.
'creating a repository with a remote URL or having Phabricator '.
'fetch an image from a remote server).'.
"\n\n".
'This may represent a security vulnerability if services on '.
'the same subnet will accept commands or reveal private '.
'information over unauthenticated HTTP GET, based on the source '.
'IP address. In particular, all hosts in EC2 have access to '.
'such a service.'.
"\n\n".
'This option defines a list of netblocks which Phabricator '.
'will decline to connect to. Generally, you should list all '.
'private IP space here.'))
->addExample(array('0.0.0.0/0'), pht('No Outbound Requests')),
$this->newOption('security.strict-transport-security', 'bool', false)
->setLocked(true)
->setBoolOptions(
array(
pht('Use HSTS'),
pht('Do Not Use HSTS'),
))
->setSummary(pht('Enable HTTP Strict Transport Security (HSTS).'))
->setDescription(
pht(
'HTTP Strict Transport Security (HSTS) sends a header which '.
'instructs browsers that the site should only be accessed '.
'over HTTPS, never HTTP. This defuses an attack where an '.
'adversary gains access to your network, then proxies requests '.
'through an unsecured link.'.
"\n\n".
'Do not enable this option if you serve (or plan to ever serve) '.
'unsecured content over plain HTTP. It is very difficult to '.
'undo this change once users\' browsers have accepted the '.
'setting.')),
$this->newOption('keyring', $keyring_type, array())
->setHidden(true)
->setSummary(pht('Configure master encryption keys.'))
->setDescription($keyring_description),
);
}
protected function didValidateOption(
PhabricatorConfigOption $option,
$value) {
$key = $option->getKey();
if ($key == 'security.alternate-file-domain') {
$uri = new PhutilURI($value);
$protocol = $uri->getProtocol();
if ($protocol !== 'http' && $protocol !== 'https') {
throw new PhabricatorConfigValidationException(
pht(
"Config option '%s' is invalid. The URI must start with ".
"'%s' or '%s'.",
$key,
'http://',
'https://'));
}
$domain = $uri->getDomain();
if (strpos($domain, '.') === false) {
throw new PhabricatorConfigValidationException(
pht(
"Config option '%s' is invalid. The URI must contain a dot ('.'), ".
"like '%s', not just a bare name like '%s'. ".
"Some web browsers will not set cookies on domains with no TLD.",
$key,
'http://example.com/',
'http://example/'));
}
$path = $uri->getPath();
if ($path !== '' && $path !== '/') {
throw new PhabricatorConfigValidationException(
pht(
"Config option '%s' is invalid. The URI must NOT have a path, ".
"e.g. '%s' is OK, but '%s' is not. Phabricator must be installed ".
"on an entire domain; it can not be installed on a path.",
$key,
'http://phabricator.example.com/',
'http://example.com/phabricator/'));
}
}
}
}

File Metadata

Mime Type
text/x-diff
Expires
Thu, Aug 14, 10:04 PM (2 d, 18 h ago)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
199162
Default Alt Text
(213 KB)

Event Timeline