gitextract_v9i4r49y/ ├── .babelrc ├── .eslintignore ├── .eslintrc ├── .gitignore ├── .npmignore ├── .nvmrc ├── .prettierrc.json ├── .sequelizerc ├── .travis.yml ├── LICENSE ├── README.md ├── changelog.md ├── cli/ │ ├── configure.js │ ├── defaults/ │ │ ├── chainqueryConfig.json │ │ ├── lbryConfig.json │ │ ├── loggerConfig.json │ │ ├── mysqlConfig.json │ │ ├── siteConfig.json │ │ └── slackConfig.json │ └── questions/ │ ├── mysqlQuestions.js │ └── siteQuestions.js ├── client/ │ ├── scss/ │ │ ├── _asset-blocked.scss │ │ ├── _asset-display.scss │ │ ├── _asset-preview.scss │ │ ├── _body.scss │ │ ├── _button-primary.scss │ │ ├── _button-secondary.scss │ │ ├── _button.scss │ │ ├── _channel-claims-display.scss │ │ ├── _claim-pending.scss │ │ ├── _click-to-copy.scss │ │ ├── _dropzone.scss │ │ ├── _form-feedback.scss │ │ ├── _form.scss │ │ ├── _horizontal-split.scss │ │ ├── _html.scss │ │ ├── _input.scss │ │ ├── _label.scss │ │ ├── _link.scss │ │ ├── _markdown.scss │ │ ├── _media-queries.scss │ │ ├── _nav-bar.scss │ │ ├── _page-content.scss │ │ ├── _page-layout-show-lite.scss │ │ ├── _page-layout.scss │ │ ├── _progress-bar.scss │ │ ├── _publish-disabled-message.scss │ │ ├── _publish-preview.scss │ │ ├── _publish-status.scss │ │ ├── _publish-url-input.scss │ │ ├── _react-app.scss │ │ ├── _reset.scss │ │ ├── _row.scss │ │ ├── _select.scss │ │ ├── _share-buttons.scss │ │ ├── _social-share-link.scss │ │ ├── _space-around.scss │ │ ├── _space-between.scss │ │ ├── _text.scss │ │ ├── _textarea.scss │ │ ├── _tooltip.scss │ │ ├── _variables.scss │ │ ├── _video.scss │ │ ├── all.scss │ │ └── font/ │ │ ├── Lekton/ │ │ │ └── OFL.txt │ │ └── _font.scss │ └── src/ │ ├── actions/ │ │ ├── channel.js │ │ ├── channelCreate.js │ │ ├── index.js │ │ ├── publish.js │ │ └── show.js │ ├── api/ │ │ ├── assetApi.js │ │ ├── authApi.js │ │ ├── channelApi.js │ │ ├── fileApi.js │ │ ├── homepageApi.js │ │ └── specialAssetApi.js │ ├── app.js │ ├── channels/ │ │ └── publish.js │ ├── components/ │ │ ├── AboutSpeechDetails/ │ │ │ └── index.jsx │ │ ├── AboutSpeechOverview/ │ │ │ └── index.jsx │ │ ├── ActiveStatusBar/ │ │ │ └── index.jsx │ │ ├── AssetInfoFooter/ │ │ │ └── index.js │ │ ├── AssetPreview/ │ │ │ └── index.jsx │ │ ├── AssetShareButtons/ │ │ │ └── index.js │ │ ├── ButtonPrimary/ │ │ │ └── index.jsx │ │ ├── ButtonPrimaryJumbo/ │ │ │ └── index.jsx │ │ ├── ButtonSecondary/ │ │ │ └── index.jsx │ │ ├── ChannelAbout/ │ │ │ └── index.jsx │ │ ├── ChannelCreateNameInput/ │ │ │ └── index.jsx │ │ ├── ChannelCreatePasswordInput/ │ │ │ └── index.jsx │ │ ├── ChannelInfoDisplay/ │ │ │ └── index.jsx │ │ ├── ChannelLoginNameInput/ │ │ │ └── index.jsx │ │ ├── ChannelLoginPasswordInput/ │ │ │ └── index.jsx │ │ ├── ChannelSelectDropdown/ │ │ │ └── index.jsx │ │ ├── ChooseAnonymousPublishRadio/ │ │ │ └── index.jsx │ │ ├── ChooseChannelPublishRadio/ │ │ │ └── index.jsx │ │ ├── ClickToCopy/ │ │ │ └── index.jsx │ │ ├── DropzoneDropItDisplay/ │ │ │ └── index.jsx │ │ ├── DropzoneInstructionsDisplay/ │ │ │ └── index.jsx │ │ ├── DropzonePreviewImage/ │ │ │ └── index.jsx │ │ ├── ErrorBoundary/ │ │ │ └── index.jsx │ │ ├── ExpandingTextArea/ │ │ │ └── index.jsx │ │ ├── FileViewer/ │ │ │ └── index.jsx │ │ ├── FormFeedbackDisplay/ │ │ │ └── index.jsx │ │ ├── GAListener/ │ │ │ └── index.jsx │ │ ├── HorizontalSplit/ │ │ │ └── index.jsx │ │ ├── InactiveStatusBar/ │ │ │ └── index.jsx │ │ ├── Label/ │ │ │ └── index.jsx │ │ ├── Logo/ │ │ │ └── index.jsx │ │ ├── Memeify/ │ │ │ ├── EditableFontface/ │ │ │ │ └── index.js │ │ │ ├── FontFaces/ │ │ │ │ ├── .gitkeep │ │ │ │ ├── GreenMachine.js │ │ │ │ ├── Inferno.js │ │ │ │ ├── Lazer.js │ │ │ │ ├── Neon.js │ │ │ │ ├── OldBlue.js │ │ │ │ ├── Outline.js │ │ │ │ ├── RetroRainbow.js │ │ │ │ ├── TheSpecial.js │ │ │ │ └── VaporWave.js │ │ │ ├── RichDraggable/ │ │ │ │ └── index.js │ │ │ └── index.js │ │ ├── NavBar/ │ │ │ └── index.jsx │ │ ├── NavBarChannelOptionsDropdown/ │ │ │ └── index.jsx │ │ ├── PageLayout/ │ │ │ └── index.jsx │ │ ├── PageLayoutShowLite/ │ │ │ └── index.jsx │ │ ├── ProgressBar/ │ │ │ └── index.jsx │ │ ├── PublishDescriptionInput/ │ │ │ └── index.jsx │ │ ├── PublishFinePrint/ │ │ │ └── index.jsx │ │ ├── PublishLicenseInput/ │ │ │ └── index.jsx │ │ ├── PublishLicenseUrlInput/ │ │ │ └── index.jsx │ │ ├── PublishNsfwInput/ │ │ │ └── index.jsx │ │ ├── PublishPreview/ │ │ │ └── index.jsx │ │ ├── PublishUrlMiddleDisplay/ │ │ │ └── index.jsx │ │ ├── Row/ │ │ │ └── index.jsx │ │ ├── RowLabeled/ │ │ │ └── index.jsx │ │ ├── SocialShareLink/ │ │ │ └── index.jsx │ │ ├── SpaceAround/ │ │ │ └── index.jsx │ │ ├── SpaceBetween/ │ │ │ └── index.jsx │ │ └── VerticalSplit/ │ │ └── index.jsx │ ├── constants/ │ │ ├── asset_display_states.js │ │ ├── channel_action_types.js │ │ ├── channel_create_action_types.js │ │ ├── confirmation_messages.js │ │ ├── publish_action_types.js │ │ ├── publish_channel_select_states.js │ │ ├── publish_claim_states.js │ │ ├── publish_license_urls.js │ │ ├── show_action_types.js │ │ └── show_request_types.js │ ├── containers/ │ │ ├── AssetBlocked/ │ │ │ ├── index.js │ │ │ └── view.jsx │ │ ├── AssetDisplay/ │ │ │ ├── index.js │ │ │ └── view.jsx │ │ ├── AssetInfo/ │ │ │ ├── index.js │ │ │ └── view.jsx │ │ ├── AssetTitle/ │ │ │ ├── index.js │ │ │ └── view.jsx │ │ ├── ChannelClaimsDisplay/ │ │ │ ├── index.js │ │ │ └── view.jsx │ │ ├── ChannelCreateForm/ │ │ │ ├── index.js │ │ │ └── view.jsx │ │ ├── ChannelLoginForm/ │ │ │ ├── index.js │ │ │ └── view.jsx │ │ ├── ChannelSelect/ │ │ │ ├── index.js │ │ │ └── view.jsx │ │ ├── ChannelTools/ │ │ │ ├── index.js │ │ │ └── view.jsx │ │ ├── Dropzone/ │ │ │ ├── index.js │ │ │ └── view.jsx │ │ ├── NavigationLinks/ │ │ │ ├── index.jsx │ │ │ └── view.jsx │ │ ├── PublishDetails/ │ │ │ ├── index.js │ │ │ └── view.jsx │ │ ├── PublishDisabledMessage/ │ │ │ ├── index.js │ │ │ └── view.jsx │ │ ├── PublishMetadataInputs/ │ │ │ ├── index.js │ │ │ └── view.jsx │ │ ├── PublishStatus/ │ │ │ ├── index.js │ │ │ └── view.jsx │ │ ├── PublishThumbnailInput/ │ │ │ ├── index.js │ │ │ └── view.jsx │ │ ├── PublishTitleInput/ │ │ │ ├── index.js │ │ │ └── view.jsx │ │ ├── PublishTool/ │ │ │ ├── index.js │ │ │ └── view.jsx │ │ ├── PublishUrlInput/ │ │ │ ├── index.js │ │ │ └── view.jsx │ │ ├── SEO/ │ │ │ ├── index.js │ │ │ └── view.jsx │ │ └── SiteDescription/ │ │ ├── index.jsx │ │ └── view.jsx │ ├── index.js │ ├── pages/ │ │ ├── AboutPage/ │ │ │ └── index.jsx │ │ ├── ContentPageWrapper/ │ │ │ ├── index.jsx │ │ │ └── view.jsx │ │ ├── EditPage/ │ │ │ ├── index.js │ │ │ └── view.jsx │ │ ├── ErrorPage/ │ │ │ └── index.jsx │ │ ├── FaqPage/ │ │ │ └── index.jsx │ │ ├── FourOhFourPage/ │ │ │ └── index.jsx │ │ ├── HomePage/ │ │ │ ├── index.js │ │ │ └── view.jsx │ │ ├── LoginPage/ │ │ │ ├── index.jsx │ │ │ └── view.jsx │ │ ├── MultisitePage/ │ │ │ └── index.jsx │ │ ├── PopularPage/ │ │ │ ├── index.jsx │ │ │ └── view.jsx │ │ ├── ShowAssetDetails/ │ │ │ ├── index.js │ │ │ └── view.jsx │ │ ├── ShowAssetLite/ │ │ │ ├── index.js │ │ │ └── view.jsx │ │ ├── ShowChannel/ │ │ │ ├── index.js │ │ │ └── view.jsx │ │ └── TosPage/ │ │ └── index.jsx │ ├── reducers/ │ │ ├── channel.js │ │ ├── channelCreate.js │ │ ├── index.js │ │ ├── publish.js │ │ ├── show.js │ │ └── site.js │ ├── sagas/ │ │ ├── abandon.js │ │ ├── checkForLoggedInChannel.js │ │ ├── createChannel.js │ │ ├── file.js │ │ ├── index.js │ │ ├── logoutChannel.js │ │ ├── publish.js │ │ ├── rootSaga.js │ │ ├── show_asset.js │ │ ├── show_channel.js │ │ ├── show_special.js │ │ ├── show_uri.js │ │ ├── updateChannelAvailability.js │ │ └── updateClaimAvailability.js │ ├── selectors/ │ │ ├── channel.js │ │ ├── channelCreate.js │ │ ├── publish.js │ │ ├── show.js │ │ └── site.js │ └── utils/ │ ├── createAssetMetaTags.js │ ├── createBasicMetaTags.js │ ├── createChannelMetaTags.js │ ├── createGroupedList.js │ ├── createMetaTags.js │ ├── createMetaTagsArray.js │ ├── createPageTitle.js │ ├── createPermanentURI.js │ ├── determineContentTypeFromExtension.js │ ├── dynamicImport.js │ ├── file.js │ ├── oEmbed.js │ ├── publish.js │ ├── request.js │ └── validate.js ├── customize.md ├── devConfig/ │ ├── sequelizeCliConfig.example.js │ └── testingConfig.example.js ├── docs/ │ ├── settings.md │ ├── setup/ │ │ ├── conf/ │ │ │ ├── caddy/ │ │ │ │ ├── Caddyfile.template │ │ │ │ └── caddy.service │ │ │ ├── lbrynet/ │ │ │ │ ├── lbrynet.service.example │ │ │ │ └── lbrynet.service.template │ │ │ ├── nginx/ │ │ │ │ ├── letsencrypt.conf │ │ │ │ ├── myspeech │ │ │ │ └── ssl.conf │ │ │ └── speech/ │ │ │ ├── chainqueryConfig.json │ │ │ └── speech.service.draft │ │ └── scripts/ │ │ ├── firewall.sh │ │ └── newuser.sh │ └── ubuntuinstall.md ├── fullstart.md ├── lintstagedrc.json ├── nginx_example_config ├── package.json ├── public/ │ ├── bundle/ │ │ └── .gitkeep │ └── robots.txt ├── server/ │ ├── chainquery/ │ │ ├── index.debug.js │ │ ├── index.js │ │ ├── models/ │ │ │ ├── AbnormalClaimModel.js │ │ │ ├── AddressModel.js │ │ │ ├── BlockModel.js │ │ │ ├── ClaimModel.js │ │ │ ├── InputModel.js │ │ │ ├── OutputModel.js │ │ │ ├── SupportModel.js │ │ │ ├── TransactionAddressModel.js │ │ │ └── TransactionModel.js │ │ ├── queries/ │ │ │ ├── abnormalClaimQueries.js │ │ │ ├── addressQueries.js │ │ │ ├── blockQueries.js │ │ │ ├── claimQueries.js │ │ │ ├── inputQueries.js │ │ │ ├── outputQueries.js │ │ │ ├── supportQueries.js │ │ │ ├── transactionAddressQueries.js │ │ │ └── transactionQueries.js │ │ └── tables/ │ │ ├── abnormalClaimTable.js │ │ ├── addressTable.js │ │ ├── blockTable.js │ │ ├── claimTable.js │ │ ├── inputTable.js │ │ ├── outputTable.js │ │ ├── supportTable.js │ │ ├── transactionAddressTable.js │ │ └── transactionTable.js │ ├── controllers/ │ │ ├── api/ │ │ │ ├── blocked/ │ │ │ │ └── index.js │ │ │ ├── channel/ │ │ │ │ ├── availability/ │ │ │ │ │ ├── checkChannelAvailability.js │ │ │ │ │ └── index.js │ │ │ │ ├── claims/ │ │ │ │ │ ├── channelPagination.js │ │ │ │ │ ├── getChannelClaims.js │ │ │ │ │ └── index.js │ │ │ │ ├── data/ │ │ │ │ │ ├── getChannelData.js │ │ │ │ │ └── index.js │ │ │ │ └── shortId/ │ │ │ │ └── index.js │ │ │ ├── claim/ │ │ │ │ ├── abandon/ │ │ │ │ │ └── index.js │ │ │ │ ├── availability/ │ │ │ │ │ ├── checkClaimAvailability.js │ │ │ │ │ └── index.js │ │ │ │ ├── data/ │ │ │ │ │ └── index.js │ │ │ │ ├── get/ │ │ │ │ │ └── index.js │ │ │ │ ├── list/ │ │ │ │ │ └── index.js │ │ │ │ ├── longId/ │ │ │ │ │ └── index.js │ │ │ │ ├── publish/ │ │ │ │ │ ├── authentication.js │ │ │ │ │ ├── createPublishParams.js │ │ │ │ │ ├── createThumbnailPublishParams.js │ │ │ │ │ ├── deleteFile.js │ │ │ │ │ ├── index.js │ │ │ │ │ ├── parsePublishApiRequestBody.js │ │ │ │ │ ├── parsePublishApiRequestBody.test.js │ │ │ │ │ ├── parsePublishApiRequestFiles.js │ │ │ │ │ ├── parsePublishApiRequestFiles.test.js │ │ │ │ │ ├── publish.js │ │ │ │ │ ├── validateFileForPublish.js │ │ │ │ │ └── validateFileTypeAndSize.js │ │ │ │ ├── resolve/ │ │ │ │ │ └── index.js │ │ │ │ ├── shortId/ │ │ │ │ │ └── index.js │ │ │ │ ├── update/ │ │ │ │ │ └── index.js │ │ │ │ └── views/ │ │ │ │ └── index.js │ │ │ ├── file/ │ │ │ │ └── availability/ │ │ │ │ └── index.js │ │ │ ├── homepage/ │ │ │ │ └── data/ │ │ │ │ ├── getChannelData.js │ │ │ │ └── index.js │ │ │ ├── oEmbed/ │ │ │ │ ├── getOEmbedDataForAsset.js │ │ │ │ ├── getOEmbedDataForChannel.js │ │ │ │ ├── index.js │ │ │ │ └── parseSpeechUrl.js │ │ │ ├── special/ │ │ │ │ └── claims/ │ │ │ │ └── index.js │ │ │ ├── tor/ │ │ │ │ └── index.js │ │ │ └── user/ │ │ │ └── password/ │ │ │ └── index.js │ │ ├── assets/ │ │ │ ├── constants/ │ │ │ │ └── request_types.js │ │ │ ├── serveAsset/ │ │ │ │ └── index.js │ │ │ ├── serveByClaim/ │ │ │ │ └── index.js │ │ │ ├── serveByIdentifierAndClaim/ │ │ │ │ └── index.js │ │ │ └── utils/ │ │ │ ├── determineRequestType.js │ │ │ ├── flipClaimNameAndId.js │ │ │ ├── getClaimIdAndServeAsset.js │ │ │ ├── getLocalFileRecord.js │ │ │ ├── logRequestData.js │ │ │ ├── serveFile.js │ │ │ └── transformImage.js │ │ ├── auth/ │ │ │ ├── login/ │ │ │ │ └── index.js │ │ │ ├── logout/ │ │ │ │ └── index.js │ │ │ ├── signup/ │ │ │ │ └── index.js │ │ │ └── user/ │ │ │ └── index.js │ │ ├── pages/ │ │ │ ├── sendReactApp.js │ │ │ └── sendVideoEmbedPage.js │ │ └── utils/ │ │ ├── errorHandlers.js │ │ ├── getClaimId.js │ │ └── redirect.js │ ├── index.js │ ├── lbrynet/ │ │ ├── index.js │ │ └── utils/ │ │ └── handleLbrynetResponse.js │ ├── middleware/ │ │ ├── autoblockPublishMiddleware.js │ │ ├── httpContextMiddleware.js │ │ ├── logMetricsMiddleware.js │ │ ├── multipartMiddleware.js │ │ ├── requestLogger.js │ │ └── torCheckMiddleware.js │ ├── migrations/ │ │ ├── ChangeCertificateColumnTypes2.js │ │ ├── ChangeClaimColumnTypes.js │ │ └── File_AddHeightAndWidthColumn.js │ ├── models/ │ │ ├── blocked.js │ │ ├── certificate.js │ │ ├── channel.js │ │ ├── claim.js │ │ ├── file.js │ │ ├── index.js │ │ ├── metrics.js │ │ ├── tor.js │ │ ├── trending.js │ │ ├── user.js │ │ ├── utils/ │ │ │ ├── createClaimRecordData.js │ │ │ ├── createDatabaseIfNotExists.js │ │ │ ├── createFileRecordData.js │ │ │ ├── returnShortId.js │ │ │ ├── returnShortId.test.js │ │ │ └── trendingAnalysis.js │ │ └── views.js │ ├── render/ │ │ ├── handleShowRender.jsx │ │ └── renderFullPage.js │ ├── routes/ │ │ ├── api/ │ │ │ └── index.js │ │ ├── assets/ │ │ │ └── index.js │ │ ├── auth/ │ │ │ └── index.js │ │ ├── fallback/ │ │ │ └── index.js │ │ ├── index.js │ │ └── pages/ │ │ └── index.js │ ├── speechPassport/ │ │ ├── index.js │ │ └── utils/ │ │ ├── deserializeUser.js │ │ ├── local-login.js │ │ ├── local-signup.js │ │ └── serializeUser.js │ ├── task-scripts/ │ │ ├── update-channel-names.js │ │ └── update-password.js │ ├── utils/ │ │ ├── awaitFileSize.js │ │ ├── blockList.js │ │ ├── configureLogging.js │ │ ├── configureSlack.js │ │ ├── createModuleAliases.js │ │ ├── fetchClaimData.js │ │ ├── getClaimData.js │ │ ├── getMediaDimensions.js │ │ ├── googleAnalytics.js │ │ ├── imageProcessing.js │ │ ├── isRequestLocal.js │ │ ├── isValidQueryObj.js │ │ ├── processTrending.js │ │ └── videoProcessing.js │ └── views/ │ ├── embed.handlebars │ ├── layouts/ │ │ └── embed.handlebars │ └── partials/ │ └── logo.handlebars ├── server.js ├── test/ │ ├── end-to-end/ │ │ └── end-to-end.test.js │ └── module-alias-boilerplate.js ├── utils/ │ ├── checkForLocalConfig.js │ ├── createCanonicalLink.js │ ├── createModuleAliases.js │ ├── isApprovedChannel.js │ ├── lbryUri.js │ └── validateFileForPublish.js ├── webpack/ │ ├── webpack.client.config.js │ └── webpack.server.config.js └── webpack.config.js