text:
package org.jivesoftware.openfire.http;

import java.io.File;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import org.apache.jasper.servlet.JasperInitializer;
import org.apache.tomcat.InstanceManager;
import org.apache.tomcat.SimpleInstanceManager;
import org.eclipse.jetty.http.HttpMethod;
import org.eclipse.jetty.plus.annotation.ContainerInitializer;
import org.eclipse.jetty.server.Connector;
import org.eclipse.jetty.server.ForwardedRequestCustomizer;
import org.eclipse.jetty.server.Handler;
import org.eclipse.jetty.server.HttpConfiguration;
import org.eclipse.jetty.server.HttpConnectionFactory;
import org.eclipse.jetty.server.SecureRequestCustomizer;
import org.eclipse.jetty.server.Server;
import org.eclipse.jetty.server.ServerConnector;
import org.eclipse.jetty.server.SslConnectionFactory;
import org.eclipse.jetty.server.handler.HandlerCollection;
import org.eclipse.jetty.server.handler.HandlerList;
import org.eclipse.jetty.server.handler.gzip.GzipHandler;
import org.eclipse.jetty.servlet.ServletContextHandler;
import org.eclipse.jetty.servlet.ServletHolder;
import org.eclipse.jetty.util.WebAppLoaderFix;
import org.eclipse.jetty.util.ssl.SslContextFactory;
import org.eclipse.jetty.util.thread.QueuedThreadPool;
import org.eclipse.jetty.webapp.WebAppContext;
import org.jivesoftware.openfire.Connection;
import org.jivesoftware.openfire.JMXManager;
import org.jivesoftware.openfire.XMPPServer;
import org.jivesoftware.openfire.keystore.CertificateStore;
import org.jivesoftware.openfire.keystore.IdentityStore;
import org.jivesoftware.openfire.spi.ConnectionConfiguration;
import org.jivesoftware.openfire.spi.ConnectionManagerImpl;
import org.jivesoftware.openfire.spi.ConnectionType;
import org.jivesoftware.openfire.spi.EncryptionArtifactFactory;
import org.jivesoftware.openfire.websocket.OpenfireWebSocketServlet;
import org.jivesoftware.util.CertificateEventListener;
import org.jivesoftware.util.CertificateManager;
import org.jivesoftware.util.JiveConstants;
import org.jivesoftware.util.JiveGlobals;
import org.jivesoftware.util.PropertyEventDispatcher;
import org.jivesoftware.util.PropertyEventListener;
import org.jivesoftware.util.TaskEngine;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

/**
 * Responsible for making available BOSH (functionality to the outside world, using an embedded web server.
 */
public final class HttpBindManager implements CertificateEventListener, PropertyEventListener {

    private static final Logger Log = LoggerFactory.getLogger(HttpBindManager.class);

    public static final String HTTP_BIND_ENABLED = "httpbind.enabled";

    public static final boolean HTTP_BIND_ENABLED_DEFAULT = true;

    public static final String HTTP_BIND_PORT = "httpbind.port.plain";

    public static final int HTTP_BIND_PORT_DEFAULT = 7070;

    public static final String HTTP_BIND_SECURE_PORT = "httpbind.port.secure";

    public static final int HTTP_BIND_SECURE_PORT_DEFAULT = 7443;

    public static final String HTTP_BIND_THREADS = "httpbind.client.processing.threads";

    public static final String HTTP_BIND_AUTH_PER_CLIENTCERT_POLICY = "httpbind.client.cert.policy";

    public static final int HTTP_BIND_THREADS_DEFAULT = 200;

    private static final String HTTP_BIND_FORWARDED = "httpbind.forwarded.enabled";

    private static final String HTTP_BIND_FORWARDED_FOR = "httpbind.forwarded.for.header";

    private static final String HTTP_BIND_FORWARDED_SERVER = "httpbind.forwarded.server.header";

    private static final String HTTP_BIND_FORWARDED_HOST = "httpbind.forwarded.host.header";

    private static final String HTTP_BIND_FORWARDED_HOST_NAME = "httpbind.forwarded.host.name";

    // http binding CORS default properties

    public static final String HTTP_BIND_CORS_ENABLED = "httpbind.CORS.enabled";

    public static final boolean HTTP_BIND_CORS_ENABLED_DEFAULT = true;

    public static final String HTTP_BIND_CORS_ALLOW_ORIGIN = "httpbind.CORS.domains";

    public static final String HTTP_BIND_CORS_ALLOW_ORIGIN_DEFAULT = "*";

    public static final String HTTP_BIND_CORS_ALLOW_METHODS_DEFAULT = "PROPFIND, PROPPATCH, COPY, MOVE, DELETE, MKCOL, LOCK, UNLOCK, PUT, GETLIB, VERSION-CONTROL, CHECKIN, CHECKOUT, UNCHECKOUT, REPORT, UPDATE, CANCELUPLOAD, HEAD, OPTIONS, GET, POST";

    public static final String HTTP_BIND_CORS_ALLOW_HEADERS_DEFAULT = "Overwrite, Destination, Content-Type, Depth, User-Agent, X-File-Size, X-Requested-With, If-Modified-Since, X-File-Name, Cache-Control";

    public static final String HTTP_BIND_CORS_MAX_AGE_DEFAULT = "86400";

    public static final String HTTP_BIND_REQUEST_HEADER_SIZE = "httpbind.request.header.size";

    public static final int HTTP_BIND_REQUEST_HEADER_SIZE_DEFAULT = 32768;

    public static Map<String, Boolean> HTTP_BIND_ALLOWED_ORIGINS = new HashMap<>();

    private static HttpBindManager instance = new HttpBindManager();

    private Server httpBindServer;

    private final HttpSessionManager httpSessionManager;

    /**
     * An ordered collection of all handlers (that is created to include the #extensionHandlers).
     *
     * A reference to this collection is maintained outside of the Jetty server implementation ({@link #httpBindServer})
     * as its lifecycle differs from that server: the server is recreated upon configuration changes, while the
     * collection of handlers need not be.
     *
     * This collection is ordered, which ensures that:
     *

     *
The handlers providing BOSH functionality are tried first.

     *
Any handlers that are registered by external sources ({@link #extensionHandlers}) are tried in between.

     *
The 'catch-all' handler that maps to static content is tried last.

     *

     *
     * This collection should be regarded as immutable. When handlers are to be added/removed dynamically, this should
     * occur in {@link #extensionHandlers}, to which a reference is stored in this list by the constructor of this class.
     */
    private final HandlerList handlerList = new HandlerList();

    /**
     * Contains all Jetty handlers that are added as an extension.
     *
     * This collection is mutable. Handlers can be added and removed at runtime.
     */
    private final HandlerCollection extensionHandlers = new HandlerCollection( true );

    /**
     * A task that, periodically, updates the 'last modified' date of all files in the Jetty 'tmp' directories. This
     * prevents operating systems from removing files that are deemed unused.
     *
     * @see OF-1534
     */
    private TempFileToucherTask tempFileToucherTask;

    public static HttpBindManager getInstance() {
        return instance;
    }

    private HttpBindManager() {
        JiveGlobals.migrateProperty(HTTP_BIND_ENABLED);
        JiveGlobals.migrateProperty(HTTP_BIND_PORT);
        JiveGlobals.migrateProperty(HTTP_BIND_SECURE_PORT);
        JiveGlobals.migrateProperty(HTTP_BIND_THREADS);
        JiveGlobals.migrateProperty(HTTP_BIND_FORWARDED);
        JiveGlobals.migrateProperty(HTTP_BIND_FORWARDED_FOR);
        JiveGlobals.migrateProperty(HTTP_BIND_FORWARDED_SERVER);
        JiveGlobals.migrateProperty(HTTP_BIND_FORWARDED_HOST);
        JiveGlobals.migrateProperty(HTTP_BIND_FORWARDED_HOST_NAME);
        JiveGlobals.migrateProperty(HTTP_BIND_CORS_ENABLED);
        JiveGlobals.migrateProperty(HTTP_BIND_CORS_ALLOW_ORIGIN);
        JiveGlobals.migrateProperty(HTTP_BIND_REQUEST_HEADER_SIZE);

        PropertyEventDispatcher.addListener( this );
        this.httpSessionManager = new HttpSessionManager();

        // setup the cache for the allowed origins
        this.setupAllowedOriginsMap();

        // Setup the default handlers. Order is important here. First, evaluate if the 'standard' handlers can be used to fulfill requests.
        this.handlerList.addHandler( createBoshHandler() );
        this.handlerList.addHandler( createWebsocketHandler() );
        this.handlerList.addHandler( createCrossDomainHandler() );

        // When standard handling does not apply, see if any of the handlers in the extension pool of handlers applies to the request.
        this.handlerList.addHandler( this.extensionHandlers );

        // When everything else fails, use the static content handler. This one should be last, as it is mapping to the root context.
        // This means that it will catch everything and prevent the invocation of later handlers.
        final Handler staticContentHandler = createStaticContentHandler();
        if ( staticContentHandler != null )
        {
            this.handlerList.addHandler( staticContentHandler );
        }
    }

    public void start() {

        if (!isHttpBindServiceEnabled()) {
            return;
        }

        // this is the number of threads allocated to each connector/port
        final int processingThreads = JiveGlobals.getIntProperty(HTTP_BIND_THREADS, HTTP_BIND_THREADS_DEFAULT);

        final QueuedThreadPool tp = new QueuedThreadPool(processingThreads);
        tp.setName("Jetty-QTP-BOSH");

        httpBindServer = new Server(tp);
        if (JMXManager.isEnabled()) {
            JMXManager jmx = JMXManager.getInstance();
            httpBindServer.addBean(jmx.getContainer());
        }

        final Connector httpConnector = createConnector( httpBindServer );
        final Connector httpsConnector = createSSLConnector( httpBindServer);

        if (httpConnector == null && httpsConnector == null) {
            httpBindServer = null;
            return;
        }
        if (httpConnector != null) {
            httpBindServer.addConnector(httpConnector);
        }
        if (httpsConnector != null) {
            httpBindServer.addConnector(httpsConnector);
        }

        httpBindServer.setHandler( handlerList );

        try {
            httpBindServer.start();
            handlerList.start();
            extensionHandlers.start();

            CertificateManager.addListener(this);

            Log.info("HTTP bind service started");
        }
        catch (Exception e) {
            Log.error("Error starting HTTP bind service", e);
        }

        if ( JiveGlobals.getBooleanProperty( "jetty.temp-file-toucher.enabled", true ) ) {
            tempFileToucherTask = new TempFileToucherTask( httpBindServer );
            final long period = JiveGlobals.getLongProperty( "jetty.temp-file-toucher.period", JiveConstants.DAY );
            TaskEngine.getInstance().schedule( tempFileToucherTask, period, period );
        }
    }

    public void stop() {
        CertificateManager.removeListener(this);

        if ( tempFileToucherTask != null ) {
            TaskEngine.getInstance().cancelScheduledTask( tempFileToucherTask );
            tempFileToucherTask = null;
        }

        if (httpBindServer != null) {
            try {
                handlerList.stop();
                extensionHandlers.stop();
                httpBindServer.stop();
                Log.info("HTTP bind service stopped");
            }
            catch (Exception e) {
                Log.error("Error stopping HTTP bind service", e);
            }
            httpBindServer = null;
        }
    }

    public HttpSessionManager getSessionManager() {
        return httpSessionManager;
    }

    private boolean isHttpBindServiceEnabled() {
        return JiveGlobals.getBooleanProperty(HTTP_BIND_ENABLED, HTTP_BIND_ENABLED_DEFAULT);
    }

    private Connector createConnector( final Server httpBindServer ) {
        final int port = getHttpBindUnsecurePort();
        if (port > 0) {
            HttpConfiguration httpConfig = new HttpConfiguration();
            httpConfig.setSendServerVersion( false );
            configureProxiedConnector(httpConfig);
            ServerConnector connector = new ServerConnector(httpBindServer, new HttpConnectionFactory(httpConfig));

            // Listen on a specific network interface if it has been set.
            connector.setHost(getBindInterface());
            connector.setPort(port);
            return connector;
        }
        else
        {
            return null;
        }
    }

    private Connector createSSLConnector( final Server httpBindServer ) {
        final int securePort = getHttpBindSecurePort();
        try {
            final IdentityStore identityStore = XMPPServer.getInstance().getCertificateStoreManager().getIdentityStore( ConnectionType.BOSH_C2S );

            if (securePort > 0 && identityStore.getStore().aliases().hasMoreElements() ) {
                if ( !identityStore.containsDomainCertificate( ) ) {
                    Log.warn("HTTP binding: Using certificates but they are not valid for the hosted domain");
                }

                final ConnectionManagerImpl connectionManager = ((ConnectionManagerImpl) XMPPServer.getInstance().getConnectionManager());
                final ConnectionConfiguration configuration = connectionManager.getListener( ConnectionType.BOSH_C2S, true ).generateConnectionConfiguration();
                final SslContextFactory sslContextFactory = new EncryptionArtifactFactory(configuration).getSslContextFactory();

                final HttpConfiguration httpsConfig = new HttpConfiguration();
                httpsConfig.setSecureScheme("https");
                httpsConfig.setSecurePort(securePort);
                configureProxiedConnector(httpsConfig);
                httpsConfig.addCustomizer(new SecureRequestCustomizer());
                httpsConfig.setSendServerVersion( false );

                final ServerConnector sslConnector = new ServerConnector(httpBindServer, new SslConnectionFactory(sslContextFactory, "http/1.1"), new HttpConnectionFactory(httpsConfig));
                sslConnector.setHost(getBindInterface());
                sslConnector.setPort(securePort);
                return sslConnector;
            }
        }
        catch (Exception e) {
            Log.error("Error creating SSL connector for Http bind", e);
        }

        return null;
    }

    private void configureProxiedConnector(HttpConfiguration httpConfig) {
        // Check to see if we are deployed behind a proxy
        // Refer to http://eclipse.org/jetty/documentation/current/configuring-connectors.html
        if (isXFFEnabled()) {
            ForwardedRequestCustomizer customizer = new ForwardedRequestCustomizer();
            // default: "X-Forwarded-For"
            String forwardedForHeader = getXFFHeader();
            if (forwardedForHeader != null) {
                customizer.setForwardedForHeader(forwardedForHeader);
            }
            // default: "X-Forwarded-Server"
            String forwardedServerHeader = getXFFServerHeader();
            if (forwardedServerHeader != null) {
                customizer.setForwardedServerHeader(forwardedServerHeader);
            }
            // default: "X-Forwarded-Host"
            String forwardedHostHeader = getXFFHostHeader();
            if (forwardedHostHeader != null) {
                customizer.setForwardedHostHeader(forwardedHostHeader);
            }
            // default: none
            String hostName = getXFFHostName();
            if (hostName != null) {
                customizer.setHostHeader(hostName);
            }

            httpConfig.addCustomizer(customizer);
        }
        httpConfig.setRequestHeaderSize(JiveGlobals.getIntProperty(HTTP_BIND_REQUEST_HEADER_SIZE, HTTP_BIND_REQUEST_HEADER_SIZE_DEFAULT));
   }

    private String getBindInterface() {
        String interfaceName = JiveGlobals.getXMLProperty("network.interface");
        String bindInterface = null;
        if (interfaceName != null) {
            if (interfaceName.trim().length() > 0) {
                bindInterface = interfaceName;
            }
        }
        return bindInterface;
    }

    /**
     * Returns true if the HTTP binding server is currently enabled.
     *
     * @return true if the HTTP binding server is currently enabled.
     */
    public boolean isHttpBindEnabled() {
        return httpBindServer != null && httpBindServer.isRunning();
    }

    /**
     * Returns true if a listener on the HTTP binding port is running.
     *
     * @return true if a listener on the HTTP binding port is running.
     */
    public boolean isHttpBindActive()
    {
        if ( isHttpBindEnabled() )
        {
            final int configuredPort = getHttpBindUnsecurePort();
            for ( final Connector connector : httpBindServer.getConnectors() )
            {
                if ( !( connector instanceof ServerConnector ) )
                {
                    continue;
                }
                final int activePort = ( (ServerConnector) connector ).getLocalPort();

                if ( activePort == configuredPort )
                {
                    return true;
                }
            }
        }
        return false;
    }

    /**
     * Returns true if a listener on the HTTPS binding port is running.
     *
     * @return true if a listener on the HTTPS binding port is running.
     */
    public boolean isHttpsBindActive()
    {
        if ( isHttpBindEnabled() )
        {
            final int configuredPort = getHttpBindSecurePort();
            for ( final Connector connector : httpBindServer.getConnectors() )
            {
                if ( !( connector instanceof ServerConnector ) )
                {
                    continue;
                }
                final int activePort = ( (ServerConnector) connector ).getLocalPort();

                if ( activePort == configuredPort )
                {
                    return true;
                }
            }
        }
        return false;
    }

    public String getHttpBindUnsecureAddress() {
        return "http://" + XMPPServer.getInstance().getServerInfo().getHostname() + ":" + getHttpBindUnsecurePort() + "/http-bind/";
    }

    public String getHttpBindSecureAddress() {
        return "https://" + XMPPServer.getInstance().getServerInfo().getHostname() + ":" + getHttpBindSecurePort() + "/http-bind/";
    }

    public String getJavaScriptUrl() {
        return "http://" + XMPPServer.getInstance().getServerInfo().getHostname() + ":" + getHttpBindUnsecurePort() + "/scripts/";
    }

    // http binding CORS support start

    private void setupAllowedOriginsMap() {
        final String originString = getCORSAllowOrigin();
        if (!originString.equals(HTTP_BIND_CORS_ALLOW_ORIGIN_DEFAULT)) {
            String[] origins = originString.split(",");
            // reset the cache
            HTTP_BIND_ALLOWED_ORIGINS.clear();
            for (String str : origins) {
                HTTP_BIND_ALLOWED_ORIGINS.put(str, true);
            }
        }
    }

    public boolean isCORSEnabled() {
        return JiveGlobals.getBooleanProperty(HTTP_BIND_CORS_ENABLED, HTTP_BIND_CORS_ENABLED_DEFAULT);
    }

    public void setCORSEnabled(Boolean value) {
        if (value != null)
            JiveGlobals.setProperty(HTTP_BIND_CORS_ENABLED, String.valueOf(value));
    }

    public String getCORSAllowOrigin() {
        return JiveGlobals.getProperty(HTTP_BIND_CORS_ALLOW_ORIGIN , HTTP_BIND_CORS_ALLOW_ORIGIN_DEFAULT);
    }

    public void setCORSAllowOrigin(String origins) {
        if (origins == null || origins.trim().length() == 0)
             origins = HTTP_BIND_CORS_ALLOW_ORIGIN_DEFAULT;
        else {
            origins = origins.replaceAll("\\s+", "");
        }
        JiveGlobals.setProperty(HTTP_BIND_CORS_ALLOW_ORIGIN, origins);
        setupAllowedOriginsMap();
    }

    public boolean isAllOriginsAllowed() {
        return HTTP_BIND_CORS_ALLOW_ORIGIN_DEFAULT.equals( getCORSAllowOrigin() );
    }

    public boolean isThisOriginAllowed(String origin) {
        return isAllOriginsAllowed() || HTTP_BIND_ALLOWED_ORIGINS.get(origin) != null;
    }

    // http binding CORS support end

    public boolean isXFFEnabled() {
        return JiveGlobals.getBooleanProperty(HTTP_BIND_FORWARDED, false);
    }

    public void setXFFEnabled(boolean enabled) {
        JiveGlobals.setProperty(HTTP_BIND_FORWARDED, String.valueOf(enabled));
    }

    public String getXFFHeader() {
        return JiveGlobals.getProperty(HTTP_BIND_FORWARDED_FOR);
    }

    public void setXFFHeader(String header) {
        if (header == null || header.trim().length() == 0) {
            JiveGlobals.deleteProperty(HTTP_BIND_FORWARDED_FOR);
        } else {
            JiveGlobals.setProperty(HTTP_BIND_FORWARDED_FOR, header);
        }
    }

    public String getXFFServerHeader() {
        return JiveGlobals.getProperty(HTTP_BIND_FORWARDED_SERVER);
    }

    public void setXFFServerHeader(String header) {
        if (header == null || header.trim().length() == 0) {
            JiveGlobals.deleteProperty(HTTP_BIND_FORWARDED_SERVER);
        } else {
            JiveGlobals.setProperty(HTTP_BIND_FORWARDED_SERVER, header);
        }
    }

    public String getXFFHostHeader() {
        return JiveGlobals.getProperty(HTTP_BIND_FORWARDED_HOST);
    }

    public void setXFFHostHeader(String header) {
        if (header == null || header.trim().length() == 0) {
            JiveGlobals.deleteProperty(HTTP_BIND_FORWARDED_HOST);
        } else {
            JiveGlobals.setProperty(HTTP_BIND_FORWARDED_HOST, header);
        }
    }

    public String getXFFHostName() {
        return JiveGlobals.getProperty(HTTP_BIND_FORWARDED_HOST_NAME);
    }

    public void setXFFHostName(String name) {
        if (name == null || name.trim().length() == 0) {
            JiveGlobals.deleteProperty(HTTP_BIND_FORWARDED_HOST_NAME);
        } else {
            JiveGlobals.setProperty(HTTP_BIND_FORWARDED_HOST_NAME, name);
        }
    }

    public void setHttpBindEnabled(boolean isEnabled) {
        JiveGlobals.setProperty(HTTP_BIND_ENABLED, String.valueOf(isEnabled));
    }

    /**
     * Set the ports on which the HTTP binding service will be running.
     *
     * @param unsecurePort the unsecured connection port which clients can connect to.
     * @param securePort the secured connection port which clients can connect to.
     * @throws Exception when there is an error configuring the HTTP binding ports.
     */
    public void setHttpBindPorts(int unsecurePort, int securePort) throws Exception {
        if (unsecurePort != HTTP_BIND_PORT_DEFAULT) {
            JiveGlobals.setProperty(HTTP_BIND_PORT, String.valueOf(unsecurePort));
        }
        else {
            JiveGlobals.deleteProperty(HTTP_BIND_PORT);
        }
        if (securePort != HTTP_BIND_SECURE_PORT_DEFAULT) {
            JiveGlobals.setProperty(HTTP_BIND_SECURE_PORT, String.valueOf(securePort));
        }
        else {
            JiveGlobals.deleteProperty(HTTP_BIND_SECURE_PORT);
        }
    }

    /**
     * Creates a Jetty context handler that can be used to expose BOSH (HTTP-Bind) functionality.
     *
     * Note that an invocation of this method will not register the handler (and thus make the related functionality
     * available to the end user). Instead, the created handler is returned by this method, and will need to be
     * registered with the embedded Jetty webserver by the caller.
     *
     * @return A Jetty context handler (never null).
     */
    protected Handler createBoshHandler()
    {
        final int options;
        if(isHttpCompressionEnabled()) {
            options = ServletContextHandler.SESSIONS | ServletContextHandler.GZIP;
        } else {
            options = ServletContextHandler.SESSIONS;
        }
        final ServletContextHandler context = new ServletContextHandler( null, "/http-bind", options );

        // Ensure the JSP engine is initialized correctly (in order to be able to cope with Tomcat/Jasper precompiled JSPs).
        final List<ContainerInitializer> initializers = new ArrayList<>();
        initializers.add( new ContainerInitializer( new JasperInitializer(), null ) );
        context.setAttribute( "org.eclipse.jetty.containerInitializers", initializers );
        context.setAttribute( InstanceManager.class.getName(), new SimpleInstanceManager() );

        // Generic configuration of the context.
        context.setAllowNullPathInfo( true );

        // Add the functionality-providers.
        context.addServlet( new ServletHolder( new HttpBindServlet() ), "/*" );

        // Add compression filter when needed.
        if (isHttpCompressionEnabled()) {
            final GzipHandler gzipHandler = context.getGzipHandler();
            gzipHandler.addIncludedPaths("/*");
            gzipHandler.addIncludedMethods(HttpMethod.POST.asString());
        }

        return context;
    }

    /**
     * Creates a Jetty context handler that can be used to expose Websocket functionality.
     *
     * Note that an invocation of this method will not register the handler (and thus make the related functionality
     * available to the end user). Instead, the created handler is returned by this method, and will need to be
     * registered with the embedded Jetty webserver by the caller.
     *
     * @return A Jetty context handler (never null).
     */
    protected Handler createWebsocketHandler()
    {
        final ServletContextHandler context = new ServletContextHandler( null, "/ws", ServletContextHandler.SESSIONS );
        context.setAllowNullPathInfo(true);
        // Add the functionality-providers.
        context.addServlet( new ServletHolder( new OpenfireWebSocketServlet() ), "/*" );

        return context;
    }

    // NOTE: enabled by default
    private boolean isHttpCompressionEnabled() {
        final ConnectionManagerImpl connectionManager = ((ConnectionManagerImpl) XMPPServer.getInstance().getConnectionManager());
        final ConnectionConfiguration configuration = connectionManager.getListener( ConnectionType.BOSH_C2S, true ).generateConnectionConfiguration();
        return configuration.getCompressionPolicy() == null || configuration.getCompressionPolicy().equals( Connection.CompressionPolicy.optional );
    }

    /**
     * Creates a Jetty context handler that can be used to expose the cross-domain functionality as implemented by
     * {@link FlashCrossDomainServlet}.
     *
     * Note that an invocation of this method will not register the handler (and thus make the related functionality
     * available to the end user). Instead, the created handler is returned by this method, and will need to be
     * registered with the embedded Jetty webserver by the caller.
     *
     * @return A Jetty context handler (never null).
     */
    protected Handler createCrossDomainHandler()
    {
        final ServletContextHandler context = new ServletContextHandler( null, "/crossdomain.xml", ServletContextHandler.SESSIONS );

        // Ensure the JSP engine is initialized correctly (in order to be able to cope with Tomcat/Jasper precompiled JSPs).
        final List<ContainerInitializer> initializers = new ArrayList<>();
        initializers.add( new ContainerInitializer( new JasperInitializer(), null ) );
        context.setAttribute( "org.eclipse.jetty.containerInitializers", initializers );
        context.setAttribute( InstanceManager.class.getName(), new SimpleInstanceManager() );

        // Generic configuration of the context.
        context.setAllowNullPathInfo( true );

        // Add the functionality-providers.
        context.addServlet( new ServletHolder( new FlashCrossDomainServlet() ), "" );

        return context;
    }

    /**
     * Creates a Jetty context handler that can be used to expose static files.
     *
     * Note that an invocation of this method will not register the handler (and thus make the related functionality
     * available to the end user). Instead, the created handler is returned by this method, and will need to be
     * registered with the embedded Jetty webserver by the caller.
     *
     * @return A Jetty context handler, or null when the static content could not be accessed.
     */
    protected Handler createStaticContentHandler()
    {
        final File spankDirectory = new File( JiveGlobals.getHomeDirectory() + File.separator + "resources" + File.separator + "spank" );
        if ( spankDirectory.exists() )
        {
            if ( spankDirectory.canRead() )
            {
                final WebAppContext context = new WebAppContext( null, spankDirectory.getPath(), "/" );
                context.setWelcomeFiles( new String[] { "index.html" } );

                return context;
            }
            else
            {
                Log.warn( "Openfire cannot read the directory: " + spankDirectory );
            }
        }
        return null;
    }

    /**
     * Adds a Jetty handler to be added to the embedded web server that is used to expose BOSH (HTTP-bind)
     * functionality.
     *
     * @param handler The handler (cannot be null).
     */
    public void addJettyHandler( Handler handler )
    {
        if ( handler == null )
        {
            throw new IllegalArgumentException( "Argument 'handler' cannot be null." );
        }

        extensionHandlers.addHandler( handler );

        if ( !handler.isStarted() && extensionHandlers.isStarted() )
        {
            try
            {
                handler.start();
            }
            catch ( Exception e )
            {
                Log.warn( "Unable to start handler {}", handler, e );
            }
        }
    }

    /**
     * Removes a Jetty handler to be added to the embedded web server that is used to expose BOSH (HTTP-bind)
     * functionality.
     *
     * Removing a handler, even when null, or non-existing, might have side-effects as introduced by the Jetty
     * implementation. At the time of writing, Jetty will re
     *
     * @param handler The handler (should not be null).
     */
    public void removeJettyHandler( Handler handler )
    {
        if (handler instanceof WebAppContext) {
            // A work-around of the Jetty bug described at https://github.com/eclipse/jetty.project/issues/1425
            // NOTE: According to some comments on WebAppLoaderFix, this may stop working on Java 9.
            // Hopefully the Jetty team will have fixed the underlying bug by then
            WebAppLoaderFix.checkAndClose(((WebAppContext) handler).getClassLoader());
        }
        extensionHandlers.removeHandler( handler );
        if ( handler.isStarted() )
        {
            try
            {
                handler.stop();
            }
            catch ( Exception e )
            {
                Log.warn( "Unable to stop the handler that was removed: {}", handler, e );
            }
        }

    }

    private void doEnableHttpBind(boolean shouldEnable) {
        if (shouldEnable && httpBindServer == null) {
            start();
        }
        else if (!shouldEnable && httpBindServer != null) {
            stop();
        }
    }

    /**
     * Returns the HTTP binding port which does not use SSL.
     *
     * @return the HTTP binding port which does not use SSL.
     */
    public int getHttpBindUnsecurePort() {
        return JiveGlobals.getIntProperty(HTTP_BIND_PORT, HTTP_BIND_PORT_DEFAULT);
    }

    /**
     * Returns the HTTP binding port which uses SSL.
     *
     * @return the HTTP binding port which uses SSL.
     */
    public int getHttpBindSecurePort() {
        return JiveGlobals.getIntProperty(HTTP_BIND_SECURE_PORT, HTTP_BIND_SECURE_PORT_DEFAULT);
    }

    /**
     * Returns true if script syntax is enabled. Script syntax allows BOSH to be used in
     * environments where clients may be restricted to using a particular server. Instead of using
     * standard HTTP Post requests to transmit data,  HTTP Get requests are used.
     *
     * @return true if script syntax is enabled.
     * @see BOSH: Alternative Script
     * Syntax
     */
    public boolean isScriptSyntaxEnabled() {
        return JiveGlobals.getBooleanProperty("xmpp.httpbind.scriptSyntax.enabled", false);
    }

    /**
     * Enables or disables script syntax.
     *
     * @param isEnabled true to enable script syntax and false to disable it.
     * @see #isScriptSyntaxEnabled()
     * @see BOSH: Alternative Script
     * Syntax
     */
    public void setScriptSyntaxEnabled(boolean isEnabled) {
        final String property = "xmpp.httpbind.scriptSyntax.enabled";
        if(!isEnabled) {
            JiveGlobals.deleteProperty(property);
        }
        else {
            JiveGlobals.setProperty(property, String.valueOf(isEnabled));
        }
    }

    private synchronized void restartServer() {
        stop();
        start();
    }

    @Override
    public void propertySet(String property, Map<String, Object> params) {
        if (property.equalsIgnoreCase(HTTP_BIND_ENABLED)) {
            doEnableHttpBind(Boolean.valueOf(params.get("value").toString()));
        }
        else if (property.equalsIgnoreCase(HTTP_BIND_PORT)) {
            try {
                Integer.valueOf(params.get("value").toString());
            }
            catch (NumberFormatException ne) {
                JiveGlobals.deleteProperty(HTTP_BIND_PORT);
                return;
            }
            restartServer();
        }
        else if (property.equalsIgnoreCase(HTTP_BIND_SECURE_PORT)) {
            try {
                Integer.valueOf(params.get("value").toString());
            }
            catch (NumberFormatException ne) {
                JiveGlobals.deleteProperty(HTTP_BIND_SECURE_PORT);
                return;
            }
            restartServer();
        }
        else if (HTTP_BIND_AUTH_PER_CLIENTCERT_POLICY.equalsIgnoreCase( property )) {
            restartServer();
        }
    }

    @Override
    public void propertyDeleted(String property, Map<String, Object> params) {
        if (property.equalsIgnoreCase(HTTP_BIND_ENABLED)) {
            doEnableHttpBind(HTTP_BIND_ENABLED_DEFAULT);
        }
        else if (property.equalsIgnoreCase(HTTP_BIND_PORT)) {
            restartServer();
        }
        else if (property.equalsIgnoreCase(HTTP_BIND_SECURE_PORT)) {
            restartServer();
        }
        else if (HTTP_BIND_AUTH_PER_CLIENTCERT_POLICY.equalsIgnoreCase( property )) {
            restartServer();
        }
    }

    @Override
    public void xmlPropertySet(String property, Map<String, Object> params) {
    }

    @Override
    public void xmlPropertyDeleted(String property, Map<String, Object> params) {
    }

    @Override
    public void storeContentChanged( CertificateStore store )
    {
        restartServer();
    }
}

redpajama_set_name: RedPajamaGithub


text:
package org.apache.camel.component.properties;

import org.apache.camel.spring.SpringTestSupport;
import org.junit.Test;
import org.springframework.context.support.AbstractXmlApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

/**
 * @version
 */
public class SpringAttributeNewLineTest extends SpringTestSupport {

    @Override
    protected AbstractXmlApplicationContext createApplicationContext() {
        return new ClassPathXmlApplicationContext("org/apache/camel/component/properties/SpringAttributeNewLineTest.xml");
    }

    @Test
    public void testSpringAttributeNewLineTest() throws Exception {
        getMockEndpoint("mock:bar").expectedMessageCount(1);

        template.sendBody("direct:start", "Hello World");

        assertMockEndpointsSatisfied();

        Object stub = context.hasEndpoint("stub:GET    /v1/phonebook/companies/{companyCode}?oauth=OPTIONAL");
        assertNotNull("Should have stub endpoint with double spaces", stub);
    }

}


text:
NetworkCategory
The Current State of 5G
By Neville Ray, President of TechnologyApril 19, 2021
For the last eight years, T-Mobile has been rewriting the rules of a broken, arrogant industry. Now T-Mobile is the network leader, and we showed two weeks ago how this supercharged Un-carrier will write the rules for the 5G era from the start. The contrast between how we are leading now and how Verizon and AT&T led in the early days of wireless is stark. They led with contracts and limits and fees. And we're leading with free upgrades, disrupting one of America's most disliked industries – broadband providers – and hiring thousands of people in the heartland. And the network is what makes that difference possible.
Nowhere was that clearer than last month, when in the space of less than 48 hours, we – along with Verizon and AT&T – held investor days to lay out our plans for the next few years, including our plans for 5G after the record-setting C-band spectrum auction. This gave a very clear picture of the current and future state of 5G in this country and an even clearer picture of T-Mobile's leadership. But don't take my word for it, here's how one analyst characterized it:
"The most important takeaway here is that T-Mobile's clear spectrum advantage was fully reinforced by all three players. Put simply…T-Mobile wins." [1]
"They [T-Mobile] will be first to 5G, and they will be best in 5G. Everything we heard from all three carriers over three days underscored that simple point."[2]
As much as I enjoy seeing the world recognize reality, there are a few facts worth highlighting about the current state of 5G in this country and what that means for the future.
We're now in the second phase of 5G, and it's all about mid-band.
The first phase of 5G was confusing, like watching a basketball team play a football and baseball team simultaneously. We all had radically different strategies. Verizon was focused on mmWave but limited 5G coverage. AT&T was focused on marketing 4G as if it were 5G. And at T-Mobile, we were focused on laying the foundation for 5G with low-band spectrum and delivered nationwide 5G coverage
In this second phase, everyone in the industry is playing the same game – building out optimal mid-band spectrum to deliver the perfect combo of speeds and coverage. Often called the "goldilocks" of spectrum for this reason, mid-band spectrum is clearly the global sweet spot for 5G. It's going to be much easier to compare progress and benchmark success in this phase of 5G, which leads me to my second point.
T-Mobile has a winning hand and a lasting advantage.
Verizon and AT&T have very limited mid-band deployments to date while T-Mobile started preparing for the Sprint merger well over two years ago and began work in earnest last year. Already, we cover 125 million people with mid-band 5G today. By the end of 2021, we expect to reach 200 million nationwide. By end of 2022, that'll grow to 250 million, and to nearly 285 million (90% of Americans) by the end of 2023. And we'll only continue to grow from there at a pace that can't be matched.
By comparison, Verizon announced plans to cover 100 million people with mid-band over the next 12 months and 175 million by the end of 2023 – just 61% of T-Mobile's planned coverage. AT&T said they expect to cover just 75 million people by the end of 2022 and 100 million people by early 2023, a fraction of T-Mobile's coverage.
So even once competitive deployments are well underway, by the end of this year, T-Mobile will cover twice as many people as Verizon.
One analyst recently said this about it:
"T-Mobile has a strong performance lead. Three factors will drive 'fast 5G' network performance: 1) POPs covered; 2) the consistency of performance in covered markets; 3) capacity per subscriber. T-Mobile has a strong lead on all three measures, which should drive accelerating market share gains. They will maintain this lead through the forecast period and perhaps indefinitely."[3]
Now that they've invested tens of billions to acquire C-band spectrum, Verizon will have access to 60 MHz and AT&T will have access to 40 MHz of their new C-band spectrum by the end of this year and will have to wait until the end of 2023 to use the rest. And, of course, we had just the right success in this spectrum auction ourselves to round out our network strategy… and will get access to that spectrum at the same time.
But beyond this, T-Mobile's winning hand and lasting advantage includes an amazing team. That's why we have achieved so many 5G firsts, including being the first – and still only – to light up standalone 5G. It's why we have the largest, fastest and now the most reliable 5G network. And that's why we're the premier provider positioned to deliver innovations like 5G carrier aggregation, ever-expanding 5G coverage, improved network response times and combined layers of capacity for greater speed and performance. Competition delivers!
The laws of physics don't bend
One analyst had this to say about the physics of mid-band:
"[T-Mobile's] spectrum propagates farther. This last point – the propagation advantage of 2.5 GHz – hung over both Verizon's and AT&T's presentations, but neither was able to make a convincing case that they would be able to counter this advantage."[4]
C-band spectrum is great. We bought a bunch of it, too. But spectrum obeys the immutable laws of physics. The higher the frequency, the shorter the distance it can travel and the more easily it is blocked by objects. C-band is 3.7 to 3.98 GHz. T-Mobile's existing mid-band 5G network uses 2.5 GHz spectrum. Higher banded spectrum cannot travel as far.
The coverage that wireless companies can get from a frequency band depends on a variety of factors – things like base station equipment, end-user device specifications, operating environment, performance margins, FCC Rules and the propagation characteristics of the frequency band itself. And when you look at 2.5 GHz vs. C-Band, most of these factors leave little difference between the two bands other than the better propagation characteristics of 2.5 GHz, resulting in its superior coverage compared to C-Band. The base station equipment for both bands has a similar Massive MIMO antenna implementation, but the maximum allowed output power levels are different and significantly larger for 2.5 GHz where it matters the most and where more than 83% of the population lives. The chipset and mobile device specifications are the same, but 2.5 GHz rules allow twice as high maximum power than C-band, which is particularly beneficial in the context of in-home broadband to support improved uplink coverage. The same is true for operating margins and cell edge performance.
With that in mind, we conducted extensive RF simulations and analysis as well as material field testing to assess C-band performance across various geographies and topographies. And we saw that C-band performs well in dense urban environments with low inter-site distances, but that performance is lower in other environments. We estimate C-band will require 50% more cell sites for meaningful and continuous coverage, and in some areas, for example in-building, the required densification can be 4x higher than 2.5 GHz.
Now, Verizon is trying to convince the world it can bend the laws of physics and make C-band work similarly to 2.5 GHz. Of course, this is not new for the Verizon team. They tried to convince the world they could bend the laws of physics with mmWave, and after years of trying, they failed. As some analysts put it coming out of Verizon's presentation:
"The lie of millimeter wave is dead" [5]
"After years of LTE network capacity constraints and Verizon's "staggering whiff" at setting expectations in 2018 for its ability to pass and serve homes with a superior service relying on millimeter wave spectrum, the market heavily discounts telco fixed wireless home broadband forecasts."[6]
Verizon has recently put a lot of misinformation into the market, and I'm sure they'll double down at their earnings this week. But here's how it breaks down:
The inescapable fact is that delivering seamless mid-band 5G coverage with C-band alone requires extensive network densification and updates to all 5G sites. That's both time-consuming and expensive outside of urban areas. So Verizon and AT&T, following their failed business strategies to date, now have a choice: spend more to provide contiguous coverage with C-band, or leave their customers with performance and quality holes in their 5G coverage. We are making them have to compete harder!
C-band propagation vs. 2.5 GHz
5G Home Internet is here
One really big point of good news for customers is that 5G enables a real alternative to cable. While AT&T seems to be sitting this one out over concerns their network cannot deliver enough bandwidth to challenge and replace home internet, Verizon committed to offering service to 20 million homes by year-end 2023.
Two weeks ago, we launched T-Mobile 5G Home Internet with 30 million homes eligible on launch day, 10 million of them in rural areas and small towns. Competition has arrived for the nation's ISPs, and consumers – especially those in under-served areas of the country – will be the winners.
Overall I couldn't be prouder of the incredible work the team here at T-Mobile is doing and will do to truly deliver 5G for All. What are your thoughts about the state of 5G? Let me know, as always on Twitter, @NevilleRay.
This blog includes forward-looking statements within the meaning of the Private Securities Litigation Reform Act of 1995. All statements other than statements of historical fact, including information concerning T-Mobile US, Inc.'s future network coverage, are forward-looking statements. These forward-looking statements are generally identified by the words "anticipate," "believe," "estimate," "expect," "intend," "may," "could" or similar expressions. Forward-looking statements are based on current expectations and assumptions, which are subject to risks and uncertainties and may cause actual results to differ materially from the forward-looking statements. Important factors that could affect future results and cause those results to differ materially from those expressed in the forward-looking statements include, among others, the following: natural disasters, public health crises, including the COVID-19 pandemic (the "Pandemic"), terrorist attacks or similar incidents; adverse economic, political or market conditions in the U.S. and international markets, including those caused by the Pandemic; competition, industry consolidation and changes in the market condition for wireless services; data loss or other security breaches; the scarcity and cost of additional wireless spectrum, and regulations relating to spectrum use; our inability to retain or motivate key personnel, hire qualified personnel or maintain our corporate culture; our inability to take advantage of technological developments on a timely basis; system failures and business disruptions, allowing for unauthorized use of or interference with our network and other systems; the impacts of the actions we have taken and conditions we have agreed to in connection with the regulatory proceedings and approvals of the Transactions (as defined below), including the acquisition by DISH of the prepaid wireless business under the Boost Mobile and Sprint prepaid brands (excluding the Assurance brand Lifeline customers and the prepaid wireless customers of Shentel and Swiftel), the complaint and proposed final judgment agreed to by us, Deutsche Telekom AG ("DT"), Sprint Corporation ("Sprint"), SoftBank Group Corp. ("SoftBank") and DISH Network Corporation ("DISH") with the U.S. District Court for the District of Columbia, which was approved by the Court on April 1, 2020, the proposed commitments filed with the Secretary of the Federal Communications Commission ("FCC"), which we announced on May 20, 2019, certain national security commitments and undertakings, and any other commitments or undertakings entered into including but not limited to those we have made to certain states and nongovernmental organizations (collectively, the "Government Commitments"), and the challenges in satisfying the Government Commitments in the required time frames and the significant cumulative cost incurred in tracking, monitoring and complying with them; our inability to manage the ongoing commercial and transition services arrangements that we entered into with DISH in connection with the Prepaid Transaction, which we completed on July 1, 2020, and known or unknown liabilities arising in connection therewith; the effects of any future acquisition, investment, or merger involving us; any disruption or failure of our third parties (including key suppliers) to provide products or services for the operation of our business; the occurrence of high fraud rates or volumes related to device financing, customer payment cards, third-party dealers, employees, subscriptions, identities or account takeover fraud; our substantial level of indebtedness and our inability to service our debt obligations in accordance with their terms or to comply with the restrictive covenants contained therein; adverse changes in the ratings of our debt securities or adverse conditions in the credit markets; the risk of future material weaknesses we may identify while we work to integrate and align policies, principles and practices of the two companies following the Merger (as defined below), or any other failure by us to maintain effective internal controls, and the resulting significant costs and reputational damage; any changes in regulations or in the regulatory framework under which we operate; laws and regulations relating to the handling of privacy and data protection; unfavorable outcomes of existing or future legal proceedings; our offering of regulated financial services products and exposure to a wide variety of state and federal regulations; new or amended tax laws or regulations or administrative interpretations and judicial decisions affecting the scope or application of tax laws or regulations; the possibility that we may be unable to renew our spectrum leases on attractive terms or the possible revocation of our existing licenses in the event that we violate applicable laws; interests of our significant stockholders that may differ from the interests of other stockholders; future sales of our common stock by DT and SoftBank and our inability to attract additional equity financing outside the United States due to foreign ownership limitations by the FCC; the volatility of our stock price and our lack of plan to pay cash dividends in the foreseeable future; failure to realize the expected benefits and synergies of the merger (the "Merger") with Sprint, pursuant to the Business Combination Agreement with Sprint and the other parties named therein and the other transactions contemplated thereby (collectively, the "Transactions") in the expected timeframes or in the amounts anticipated; any delay and costs of, or difficulties in, integrating our business and Sprint's business and operations, and unexpected additional operating costs, customer loss and business disruption, including maintaining relationships with employees, customers, suppliers or vendors; unanticipated difficulties, disruption, or significant delays in our long-term strategy to migrate Sprint's legacy customers onto T-Mobile's existing billing platforms; and changes to existing or the issuance of new accounting standards by the Financial Accounting Standards Board or other regulatory agencies. Given these risks and uncertainties, readers are cautioned not to place undue reliance on such forward-looking statements. We undertake no obligation to revise or publicly release the results of any revision to these forward-looking statements, except as required by law.
[1] Moffett Nathanson report "U.S. Wireless: Seven Takeaways from Three Analyst Days", March 15, 2021
[3] New Street Research Report "4Q20 Wireless Trends: The race to real 5G is on", April 12, 2021
[5] New Street Research report "The Analyst Days: What We Learned About Network Strategies and Competitive Positioning", March 15, 2021
[6] Sanford C. Bernstein & Co report "U.S. Telecom, Cable & Satellite: Telco home Internet guidance implies industry net adds and penetration that we don't believe", March 24, 2021
T-Mobile US Media RelationsMediaRelations@t-mobile.com
Investor Relationsinvestor.relations@t-mobile.com
Tags5GNetwork

redpajama_set_name: RedPajamaCommonCrawl


text:
Article with images (34)
[[missing key: search-facet.tree.open-section]] Agriculture (2)
[[missing key: search-facet.tree.open-section]] agriculture (general) (1)
agriculturist (1)
[[missing key: search-facet.tree.open-section]] farming (1)
farmer (general) (1)
[[missing key: search-facet.tree.open-section]] horticulture (1)
horticulturist (general) (1)
fashion, jewelery, and body art (1)
[[missing key: search-facet.tree.open-section]] writers, scholars, and museum professionals (2)
architectural historian (1)
art historian (1)
financier or moneylender (2)
[[missing key: search-facet.tree.open-section]] Education and scholarship (27)
[[missing key: search-facet.tree.open-section]] administration of education (2)
education administrator (general) (2)
[[missing key: search-facet.tree.open-section]] anthropology and ethnography (2)
anthropologist (2)
folklorist (2)
[[missing key: search-facet.tree.open-section]] linguistics (3)
lexicographer (3)
[[missing key: search-facet.tree.open-section]] philosophy (1)
philosopher (general) (1)
[[missing key: search-facet.tree.open-section]] scholars of language and culture (1)
translator or interpreter (1)
[[missing key: search-facet.tree.open-section]] social science (1)
sociologist or social theorist (1)
[[missing key: search-facet.tree.open-section]] university and higher education (10)
university or college teacher (10)
[[missing key: search-facet.tree.open-section]] Individuals (3)
[[missing key: search-facet.tree.open-section]] lifestyle (3)
salon hostess (1)
social celebrity (2)
[[missing key: search-facet.tree.open-section]] victims of crime (1)
murder victim (1)
[[missing key: search-facet.tree.open-section]] Manufacture and trade (23)
[[missing key: search-facet.tree.open-section]] food and beverages (1)
writer or scholar on food and drink (1)
[[missing key: search-facet.tree.open-section]] industrial relations (5)
labor leader (5)
manufacture of building materials (1)
[[missing key: search-facet.tree.open-section]] retailing and wholesaling (2)
bookseller (1)
public utilities executive (1)
[[missing key: search-facet.tree.open-section]] slave trade (11)
[[missing key: search-facet.tree.open-section]] trade in commodities (1)
merchant or trader (1)
[[missing key: search-facet.tree.open-section]] entertainment (1)
psychic (1)
[[missing key: search-facet.tree.open-section]] film (2)
documentary film-maker (1)
film actor or actress (1)
film director (1)
[[missing key: search-facet.tree.open-section]] radio (3)
radio producer or director (2)
[[missing key: search-facet.tree.open-section]] theater (4)
stage actor or actress (1)
theater critic (3)
theater producer (1)
[[missing key: search-facet.tree.open-section]] Medicine and health (2)
[[missing key: search-facet.tree.open-section]] health administration (1)
health administrator (general) (1)
[[missing key: search-facet.tree.open-section]] Politics (35)
[[missing key: search-facet.tree.open-section]] diplomacy and international relations (4)
[[missing key: search-facet.tree.open-section]] government and civil service (1)
public health official (1)
[[missing key: search-facet.tree.open-section]] nationalists and community leaders (3)
black nationalist (1)
sectarian leader (1)
utopian community leader (1)
civic leader (2)
[[missing key: search-facet.tree.open-section]] political reform (7)
women's suffragist (7)
[[missing key: search-facet.tree.open-section]] politics and the law (4)
pacifist or peace campaigner (4)
[[missing key: search-facet.tree.open-section]] rebels and revolutionaries (3)
[[missing key: search-facet.tree.open-section]] US government (federal) (1)
US representative (1)
[[missing key: search-facet.tree.open-section]] Religion and belief (18)
[[missing key: search-facet.tree.open-section]] alternative belief systems (2)
transcendentalist (2)
[[missing key: search-facet.tree.open-section]] Christian: Anglican - episcopacy (2)
clergyman (United States Episcopal) (2)
[[missing key: search-facet.tree.open-section]] Christian: Baptist (3)
Christian: Catholic - clergy (1)
Christian: Catholic - laity (3)
[[missing key: search-facet.tree.open-section]] Christian: Methodist (1)
other Methodist (1)
[[missing key: search-facet.tree.open-section]] Christian: Presbyterian (1)
Presbyterian minister or preacher (1)
[[missing key: search-facet.tree.open-section]] Christian: Quaker (1)
Quaker layperson (1)
[[missing key: search-facet.tree.open-section]] writing and scholarship in science and technology (1)
writer or scholar on science and technology (1)
[[missing key: search-facet.tree.open-section]] Social welfare and reform (252)
conservationist or environmentalist (6)
[[missing key: search-facet.tree.open-section]] lifestyle and morality (17)
dress reformer (2)
gay rights activist (4)
home economist (1)
sex or birth control reformer (1)
temperance reformer (10)
[[missing key: search-facet.tree.open-section]] living and working conditions (7)
health and safety reformer (5)
land reformer (2)
[[missing key: search-facet.tree.open-section]] philanthropy, charity, and aid (20)
aid or welfare worker (1)
city and town founder or benefactor (1)
philanthropist (18)
[[missing key: search-facet.tree.open-section]] slavery abolition (41)
slavery abolitionist (41)
[[missing key: search-facet.tree.open-section]] social observation and research (32)
social commentator (32)
[[missing key: search-facet.tree.open-section]] social reform (101)
activist or protestor (44)
civil liberties activist (6)
human rights campaigner (2)
social reformer (general) (1)
social worker (2)
[[missing key: search-facet.tree.open-section]] women's rights (41)
clubwomen (3)
feminist or activist (38)
[[missing key: search-facet.tree.open-section]] Sports, games, and pastimes (1)
fitness professional (1)
[[missing key: search-facet.tree.open-section]] Travel and exploration (5)
[[missing key: search-facet.tree.open-section]] migration and settlement (1)
colonist (1)
[[missing key: search-facet.tree.open-section]] seafaring (3)
writer on seafaring (1)
[[missing key: search-facet.tree.open-section]] travel (1)
[[missing key: search-facet.tree.open-section]] Writing and publishing (252)
[[missing key: search-facet.tree.open-section]] drama (3)
[[missing key: search-facet.tree.open-section]] editing and compilation (2)
anthologist (2)
[[missing key: search-facet.tree.open-section]] journalism (138)
journal editor (35)
journalist (59)
newspaper editor (56)
[[missing key: search-facet.tree.open-section]] literary associates and assistants (2)
literary prototype (2)
[[missing key: search-facet.tree.open-section]] literary criticism and scholarship (10)
literary critic (8)
literary scholar (2)
[[missing key: search-facet.tree.open-section]] non-fiction (49)
autobiographer (14)
biographer (13)
diarist (5)
essayist (14)
letter-writer (2)
pamphleteer (2)
slave narrative author (4)
[[missing key: search-facet.tree.open-section]] poetry (30)
poet (general) (30)
[[missing key: search-facet.tree.open-section]] prose fiction (50)
novelist (14)
short-story writer (1)
[[missing key: search-facet.tree.open-section]] publishing and the book trade (10)
publisher (6)
writer (general) (1)
1-20 of 252 results for:
1234567 ... 1213
Adams, Henry (1838-1918), historian, novelist, and critic
David R. Contosta
Adams, Henry (16 February 1838–27 March 1918), historian, novelist, and critic, was born Henry Brooks Adams in Boston, Massachusetts, the son of Charles Francis Adams, a diplomat, legislator, and writer, and Abigail Brooks. He enjoyed unparalleled advantages, chief among them his famous name and many family connections: he was the great-grandson of President ...
Adams, John Quincy (1848-1922), newspaper editor and publisher, civil rights leader, and Republican party activist
Wilbert H. Ahern
Adams, John Quincy (04 May 1848–03 September 1922), newspaper editor and publisher, civil rights leader, and Republican party activist, was born in Louisville, Kentucky, the son of Henry Adams, a prominent minister and educator, and Margaret Corbin. Both his parents were free persons of color. Following private schooling in Wisconsin and Ohio, Adams graduated from Oberlin College. After a brief teaching stint in Louisville, in 1870 he followed his uncle, Joseph C. Corbin, to work in Arkansas in the Reconstruction. By 1874 he had risen from schoolteacher to assistant superintendent of public instruction. His lifelong activism in the Republican party began in Arkansas; there he twice served as secretary to Republican state conventions, was elected as justice of the peace on the party ticket, and held the offices of engrossing clerk of the state senate and deputy commissioner of public works. The defeat of the Arkansas Republican party in 1874 and the racial repression that followed led Adams to return to Louisville, where he again engaged in teaching....
Albert, Octavia Victoria Rogers (24 December 1853–1890?), author and activist
Frances Smith Foster
Albert, Octavia Victoria Rogers (24 December 1853–1890?), author and activist, was born in Oglethorpe, Georgia, the daughter of slaves. Details of her life are sketchy. Little is known of her parents or her childhood beyond the date and place of her birth and the fact that she was born into bondage; thus, it is particularly intriguing that in 1870, only five years after the Thirteenth Amendment abolished slavery and one year after Atlanta University opened, seventeen-year-old Octavia was among the 170 students enrolled at that institution. Further details of her life are equally sketchy. Most of what we know is culled from information in ...
Allen, Frederick Lewis (1890-1954), editor and social historian
James Ross Moore
Allen, Frederick Lewis (05 July 1890–13 February 1954), editor and social historian, was born in Boston, Massachusetts, the son of Frederick Baylies Allen, a clergyman, and Alberta Hildegarde Lewis. Allen was educated at Groton School and Harvard University, where he received his B.A. in English in 1912 and his M.A. in 1913 in modern languages. Allen edited the literary magazine at Harvard and subsequently taught composition there for two years; he became an assistant editor at the ...
Anthony, Katharine Susan (1877-1965), author
Maureen A. Flanagan
Anthony, Katharine Susan (27 November 1877–20 November 1965), author, was born in Roseville, Arkansas, the daughter of Ernest A. Anthony and Susan Jane Cathey. Her father was a distant relative of suffrage activist Susan B. Anthony, and her mother was an energetic suffragist. Anthony's life work reflected a keen interest in women's issues that undoubtedly flowed from her family circumstances....
Arthur, Timothy Shay (1809-1885), editor, temperance crusader, and novelist
Claudia Durst Johnson
Arthur, Timothy Shay (06 June 1809–06 March 1885), editor, temperance crusader, and novelist, was born in Orange County, New York, the son of William Arthur and Anna Shay, occupations unknown. He was named for his maternal grandfather, Timothy Shay, an officer in the revolutionary war. By his mid-twenties, Arthur had yet to identify a profession or receive an education. In the 1830s, however, he began an intense program of self-education as well as a writing career as a journalist in Baltimore, where he quickly became a well-known and articulate champion of numerous social causes including temperance, Swedenborgianism, feminism, and socialism. In 1836 he married Eliza Alden; they had seven children....
Asbury, Herbert (1891-1963), journalist and popular historian
A. J. Kaul
Asbury, Herbert (01 September 1891–24 February 1963), journalist and popular historian, was born in Farmington, Missouri, the son of Samuel Lester Asbury, a surveyor and city clerk, and Ellen N. Prichard. His grandfather and great-grandfather were Methodist ministers. Asbury claimed that his great-great uncle was ...
Bailey, Gamaliel (1807-1859), antislavery journalist and political organizer
Stanley Harrold
Bailey, Gamaliel (03 December 1807–05 June 1859), antislavery journalist and political organizer, was born in Mount Holly, New Jersey, the son of Gamaliel Bailey, Sr., a silversmith and Methodist minister, and Sarah Page. As the son of a minister, Bailey enjoyed educational advantages and an early association with evangelical Christianity. Following the relocation of his family to Philadelphia in 1816, Bailey joined with several other adolescents in forming a literary debating society, which stimulated his lifelong interest in literature. He graduated from Jefferson Medical College in 1828, but medicine was never his main interest, and he ceased to practice it by the early 1840s....
Banning, Margaret Culkin (1891-1982), writer
Ann T. Keene
Banning, Margaret Culkin (18 March 1891–04 January 1982), writer, was born in Buffalo, Minnesota, the daughter of William Edgar Culkin, a Duluth newspaper executive, and Hannah Alice Young. She attended Vassar College, where she was elected to Phi Beta Kappa, and graduated in 1912. Pursuing an interest in social work, she attended Russell Sage College on a fellowship in 1912–1913, then spent the following academic year at the Chicago School of Philanthropy, which awarded her a certificate in 1914 for completion of its program. That same year she married a Duluth lawyer, Archibald T. Banning, Jr. The couple, who were divorced in 1934, had four children, two of whom survived into adulthood....
Barber, Jesse Max (1878-1949), African-American journalist, dentist, and civil rights activist
Ralph E. Luker
Barber, Jesse Max (05 July 1878–23 September 1949), African-American journalist, dentist, and civil rights activist, was born in Blackstock, South Carolina, the son of Jesse Max Barber and Susan Crawford, former slaves. Barber studied in public schools for African-American students and at Friendship Institute in Rock Hill, South Carolina, where he graduated as valedictorian. In 1901 he completed the normal school course for teachers at Benedict College in Columbia, South Carolina, and afterward entered Virginia Union University in Richmond. There Barber was president of the literary society and edited the ...
Barrows, Samuel June (1845-1909), minister, reformer, and editor
Leslie H. Fishel
Barrows, Samuel June (26 May 1845–21 April 1909), minister, reformer, and editor, was born in New York City, the son of Richard Barrows, a printer, and Jane Weekes. He was four when his father died and nine when his mother asked her husband's cousin, printing-press innovator ...
Bass, Charlotta Spears (October 1880?–12 April 1969), editor and civil rights activist
Norah C. Chase
Bass, Charlotta Spears ( October 1880?–12 April 1969), editor and civil rights activist, was born in Sumter, South Carolina, the daughter of Hiram Spears and Kate (maiden name unknown). Before 1900 she joined her oldest brother (one of her ten siblings) in Rhode Island and worked for a newspaper. In 1910 she went to Los Angeles, California, for her health. She remained in Los Angeles except for a brief stay in New York City. She took journalism courses at Brown University, Columbia University, and the University of California at Los Angeles....
Bates, Daisy (1914-1999)
Bates, Daisy (1914-1999), civil rights activist, newspaper founder and publisher
Daisy Bates state president of the NAACP, stands in front of metal guards on the living room window of her home in Little Rock, 13 August 1959. Associated Press
Barbara McCaskill
Bates, Daisy (11 November 1914–04 November 1999), civil rights activist, newspaper founder and publisher, was born Daisy Lee Gatson in Huttig, Arkansas. Her biological father and mother, reputedly John Gatson and Millie Riley, remain shrouded in mystery, and scholars have been unable to find evidence confirming her parentage. (Thus, her reported birth date varies: the one given here is widely acknowledged.) Bates grew up hearing that several white men had raped and murdered her mother and thrown the body in a pond. Leaving his infant daughter in the care of friends Orlee and Susie Smith, who became her foster parents, her father abandoned her, never to return. This was Bates's baptism into the poverty, insecurity, and racial violence that segregation fostered....
Bell, James Madison (1826-1902), abolitionist, poet, and lecturer
Mamie E. Locke
Bell, James Madison (03 April 1826–1902), abolitionist, poet, and lecturer, was born in Gallipolis, Ohio. His parents' identities are unknown. At age sixteen, in 1842, he moved to Cincinnati. While there, in 1848, he married Louisiana Sanderlin (or Sanderline), with whom he had several children, and also learned the plastering trade from his brother-in-law George Knight. Bell worked as a plasterer during the day and attended Cincinnati High School for Colored People at night. Founded in 1844 by Reverend Hiram S. Gilmore, the school had a connection to Oberlin College and was said to have given impetus to the sentiment found in ...
Bell, Philip Alexander (1808-1889), abolitionist and journalist
Michael F. Hembree
Bell, Philip Alexander (1808–24 April 1889), abolitionist and journalist, was born in New York City (of unknown parents) and received his education there at the African Free School. He married Rebecca Elizabeth Fenwick, originally from Charleston, South Carolina, in 1832 (number of children unknown). Bell established his reputation as a civic leader in the early 1830s by participating in a wide range of activities in New York City's African-American community. He was a member of the American Anti-Slavery Society, served as New York's first subscription agent for ...
Bibb, Henry Walton (1815-1854)
Bibb, Henry Walton (1815-1854), author, editor, and antislavery lecturer
Henry Walton Bibb. Lithograph on paper, 1847, by Unidentified Artist. National Portrait Gallery, Smithsonian Institution.
Gregory S. Jackson
Bibb, Henry Walton (10 May 1815–1854), author, editor, and antislavery lecturer, was born into slavery on the plantation of David White of Shelby County, Kentucky, the son of James Bibb, a slaveholding planter and state senator, and Mildred Jackson. White began hiring Bibb out as a laborer on several neighboring plantations before the age of ten. The constant change in living situations throughout his childhood, combined with the inhumane treatment he often received at the hands of strangers, set a pattern for life that he would later refer to in his autobiography as "my manner of living on the road." Bibb was sold more than six times between 1832 and 1840 and was forced to relocate to at least seven states throughout the South; later, as a free man, his campaign for abolition took him throughout eastern Canada and the northern United States. But such early instability also made the young Bibb both self-sufficient and resourceful, two characteristics that were useful against the day-to-day assault of slavery: "The only weapon of self defense that I could use successfully," he wrote, "was that of deception."...
Bissell, Emily Perkins (1861-1948), volunteer social worker and author
Carol Hoffecker
Bissell, Emily Perkins (31 May 1861–08 March 1948), volunteer social worker and author, was born in Wilmington, Delaware, the daughter of Champion Aristarcus Bissell, a lawyer and banker, and Josephine Wales. Her forebears settled in Connecticut where her father, a Yale graduate, was reared. Her maternal grandfather, John Wales, served as a U.S. senator from Delaware from 1849 to 1851. Bissell was educated in Wilmington and at Miss Charlier's School in New York City....
Blackwell, Henry Browne (1825-1909), social reformer, editor, and entrepreneur
Debra Viles
Blackwell, Henry Browne (04 May 1825–07 September 1909), social reformer, editor, and entrepreneur, was born in Bristol, England, the son of Samuel Blackwell, a sugar refiner and antislavery reformer, and Hannah Lane. After business reversals the family moved in 1832 to New York, where their household became a haven for abolitionists, women's rights advocates, and self-emancipated slaves. In 1838 the debt-ridden Blackwells moved to Cincinnati, Ohio. When his father died a few months later, thirteen-year-old Henry went to work to support the family, initially as a clerk in a flour mill. In 1845 he joined the two illiterate millers as a partner, and two years later his brother made him a partner in a hardware firm. Within a few years the enterprising Henry ("Harry" to his friends) had his finger in many economic pies—among them an agricultural publishing firm, land speculation, and sugar beet production (perhaps after his father, who had sought an alternative to slave-based sugar cane). At the same time Harry moved to the forefront of women's rights agitation and abolitionism....


As you may have seen, our friends at Bocada today announced that Vision, their new solution focused on managing the complexities of backup and recovery in virtual environments, now supports vRanger®, Quest's market-leading, vSphere 5 certified, VMware backup, replication and recovery solution. We've been working with our counterparts at Bocada for months now to support their efforts to develop an API that would allow for the interoperability between the two products, so it goes without saying that we're extremely proud of this news. Quest made the vRanger API available to the Bocada team, worked to educate them on the ins and outs of the product, and helped them access information in the vRanger database in order for their tool to render report tables and charts.
If you feel like you've seen a lot of this type of activity from Quest's data protection team in recent months, it's because you have. Throughout the year, we've completed and announced a host of interoperability initiatives with a variety of leading data protection vendors, including companies such as Riverbed, StorSimple and Quantum. And most recently, we announced that Quest has certified vRanger on HP StoreOnce Backup Systems to deliver a safe, efficient and cost-effective solution for backing up and recovering VMware virtual environments.
So why have we been so active and dedicated so much time to supporting these initiatives? In a word: Flexibility.
Quest understands that companies are intent on getting the most value they possibly can out of their new and existing IT investments, including their storage-related investments (both hardware and software), and we believe it's our responsibility to ensure that our vRanger customers (all 38,000 and counting) have the flexibility they need to do just that. So if there's a vendor out there, like StorSimple for cloud storage, Quantum for appliance-based deduplication, or Bocada for data protection service management, you can be sure we'll be looking for ways to work with them.
Bocada specifically is a company we think can deliver real value to our customers. Among a host of great capabilities, Bocada Vision provides in-depth visibility into VM snapshot and backup activity, helping to ensure VM recoverability while showing users what resources are being used to protect VMs. Hats off to Bocada for all the hard work they put into this initiative. They have a great product, backed by a great team, and we encourage all of our customers to take a close look at what they have to offer.
As for Quest, we'll continue monitoring the industry in search of opportunities to deliver even more flexibility to our great customers.
Want more interaction with the Quest data protection team? Follow us on Twitter at @QuestDP or check us out on Facebook.


text:
Why is darth maul alive in solo?
Why is Darth Maul in Solo?
Maul's appearance in "Solo" suggests there's still more to his story, though. Crimson Dawn is described as being an extremely powerful criminal syndicate that works both within the Empire and against it. That means he's clearly a force in the galaxy.
Why did Darth Maul die so easily?
Maul died because he was to slow and mentally unstable. He was killed by obi-wan kenobi who struck him down with his lightsaber because that's how fast it can end.
Does Darth Maul come back in Solo?
Yes, that was the character formerly known as Darth Maul you saw in hologram form at the end of Solo: A Star Wars Story. The villainous character was first introduced in 1999's The Phantom Menace. But he is still played by actor-stunt performer Ray Park, who originated the role in The Phantom Menace.
Why is Darth Maul alive in solo Reddit?
He was killed long before Palpatine formed the Empire, but in the han solo movie he is alive even though the empire has replaced the republic. He was basically abandoned by Palpatine and rebuilt with robotic legs.
Is Darth Maul alive in the Mandalorian?
Maul fought Ahsoka in the animated Star Wars: The Clone Wars and died at the hands of Obi-Wan Kenobi in Star Wars Rebels. With that in mind, it's not likely that Maul will show up at all in The Mandalorian. However, there's another way that Morgan can carry on his legacy.
Is Darth Maul still alive in rise of Skywalker?
He dies his final death to Obi wan on Tatooine, finally able to let go if his hate. Nope. No, Obi-Wan finally killed him in Rebels.
You might be interested: Why use gel electrophoresis?
Did Obi Wan die a virgin?
Obi Wan died a virgin. Qui Gon died because the multitude of STD's he'd contracted slowed his reflexes down.
How did Kenobi kill Maul?
Dissecting the short fight, Obi-Wan used the same moves Qui-Gon Jinn did during their battle in The Phantom Menace, tricking Maul into executing the same parry he did before. However, instead of committing the fatal error his master did, Obi-Wan pivoted and hit Maul in the body, killing him.
Who finally killed Maul?
Maul's weapon was cut in two, as was his chest. He fell, caught by the Jedi before he hit the cold night sands. Obi-Wan cradled Maul in his final moments.
Is Darth Maul a snoke?
Now that the agile Sith has been confirmed to be very much alive, many fans have speculated that Darth Maul is actually Supreme Leader Snoke. In 2015's The Force Awakens, Snoke reveals that he witnessed the rise and fall of the Galactic Empire, which would match-up with Maul's timeline.
How did maul lose the Darksaber?
Maul, however, soon lost the Darksaber when Darth Sidious defeated him in combat and sent him away to prison on Stygeon Prime. Wren eventually passed the Darksaber to Bo-Katan Kryze, who used the fabled Mandalorian sword to become the new Mandalore.
Will there be a solo 2?
A Solo 2 may not be a project that Lucasfilm is keen on tackling now, considering the tumultuous production and underwhelming box office. Still, there's a genuine clamor to see a sequel. Howard admits there are no plans for a follow-up right now.
You might be interested: Often asked: Why did the homestead strike turn violent?
How did Darth Maul survive Reddit?
Hardly bottomless. And through sheer force of rage. He manifested Force legs (spider-like) and escaped the planet. He lived off of vermin for 12 years before his brother found him.
How did Darth Maul die Reddit?
What's the science behind how he died? A light saber through the sternum. But he was still able to speak/move. Damage to vital organs.
What happens to Qi RA after solo?
She grew up on the streets along with Han as part of the White Worms. After the mission was unsuccessful, she returned to Vos, whom she betrayed and killed to save Han. Despite this, however, Qi'ra left Solo behind as she traveled to Dathomir to meet with Maul, the true leader of Crimson Dawn.
Readers ask: Why would a tv turn on by itself?
Readers ask: Why is inflammation good?
Readers ask: Why did angelea get disqualified from antm all stars?
Often asked: Why is simon bolivar important?


Sylilia Lee Lamb Anderson, "Cootie", was born to the union of Orville and Ernestine Jackson on July 5, 1935 in Kansas City, Kansas. She attended public school in Kansas City, Kansas graduating from Sumner High School in 1953. She was married first to Quintly T. Lamb Sr. and last to Clyde Anderson, who both preceded her in death. Cootie worked as a private duty nurse for over 60 years, caring for loved ones of many prominent families in the Kansas City metropolitan area. She accepted Christ in her life and was a member of St. James United Methodist Church. She lived her life to the fullest travelling and spending time with family and many special friends who include but are not limited to: Bonita Jones, Detra Estelle, Verlene Lewis, Shirley Mae Sanders, Janie Phiffer, Jackie Ramey, Eddie and DeAnna Strong, Lucille Anson, Jackie Gregg and Brenda Blount. Her parents, sister Willa Jean Bennett, brother Orville Jackson Jr., brother Kevin Jackson, son Quintly T. Lamb Jr., daughter Deborah Lamb and son James Lamb all proceeded her in death.
She leaves to mourn her passing, sister: Verna Estelle (Harold) of Grandview, MO; two brothers, Leon Fritz (Alta) and Eathan Fritz, both of Kansas City, MO; her daughters all of Kansas City, Toya Charles, Karen Greene, and Jacqueline Cunningham (Paul); sons Duane Lamb of Washington D.C., Michael Lamb (Elvie) of Sacremento, CA, and Kenny Lamb (Karen) of Atlanta, GA; her grandchildren: Drummond Lamb, Eddie Lamb, Dennis Lamb, Daniel Lamb, Tasia Charles, Angela Taylor, Renita Lewis, Camellia Taylor, Tyrone Cunningham, Tyrese Cunningham, Shelton Smith, Chris Lamb, Stephen Lamb, Krystyna Burnett, Jerrett Lamb, Jamie Lamb and Dennis Jackson, 32 great-grandchildren, special nieces and nephews – Harold Estelle III (Teretha Moore) of Grandview, MO, Annette Crabtree of Grandview, MO, Brian Estelle (Eva) of Houston, TX, Dawn Hickman (Mark) of Lee's Summit, MO and Correy Estelle of Omaha, NE; and a host of nieces, nephews, relatives and other longtime friends.


text:
from __future__ import absolute_import

from rest_framework.response import Response

from sentry.api.base import DocSection, EnvironmentMixin
from sentry.api.bases.project import ProjectEndpoint, ProjectPermission
from sentry.api.helpers.releases import get_group_ids_resolved_in_release
from sentry.api.serializers import serialize
from sentry.api.serializers.models.group import GroupSerializer
from sentry.models import Group

class ProjectIssuesResolvedInReleaseEndpoint(ProjectEndpoint, EnvironmentMixin):
    doc_section = DocSection.RELEASES
    permission_classes = (ProjectPermission,)

    def get(self, request, project, version):
        """
        List issues to be resolved in a particular release
        ``````````````````````````````````````````````````

        Retrieve a list of issues to be resolved in a given release.

        :pparam string organization_slug: the slug of the organization the
                                          release belongs to.
        :pparam string project_slug: the slug of the project associated with the release.
        :pparam string version: the version identifier of the release.
        :auth: required
        """
        group_ids = get_group_ids_resolved_in_release(project.organization, version)
        groups = Group.objects.filter(project=project, id__in=group_ids)

        context = serialize(
            list(groups),
            request.user,
            GroupSerializer(
                environment_func=self._get_environment_func(request, project.organization_id)
            ),
        )

        return Response(context)


The big guns got the job done.
The Riverside County Board of Supervisors this week ignored the advice of its Planning Commission by voting to reject an application from a 6-bed drug and alcohol rehab facility in Wine Country that wanted to expand its operations.
The commission voted in January to recommend approval of the application, which sought permission to add 10 more beds at the gated residence that is being used as a rehab facility and hire new staffers to handle additional clients.
The supervisors' decision, a 5-0 vote, was considered a victory for a heavy-hitting coalition of winery owners, real estate professionals and neighboring residents that opposed the expansion plans on grounds that large rehab facilities — smaller facilities are allowed by right in residential zones because the inhabitants are considered by the state to be a protected class — should not be allowed in Wine Country.
The facility, which opened in January of 2016, is located at 36500 De Portola Road in a 7,384 square-foot home that sits on a 10.4 acre lot. It is run by the Southern California Addiction Center, which operates similar facilities in the region.
During Tuesday's hearing, the supervisors heard from members of the coalition, who took apart the application piece-by-piece to show why they felt the plans weren't consistent with the county's vision for Wine Country, and supporters of the facility, who shared stories of how the owners helped them get their lives on track following epic battles with addiction.
Martin, a real estate appraiser who serves on the board of the Rancho California Water District, praised the county's decision and said county counsel is working on amending the zoning rules for the area that will prevent future drug facility operators from trying to open similar facilities in the agricultural region.
"It was a relief to win this battle," he said.
County spokesman Ray Smith said the rehab item will come back to the board on the policy agenda for the final denial with written findings that the board would adopt as its decision.
"That action would then be final. There isn't an administrative appeal from that decision. Should the applicant want to challenge the board's decision, it would have to be via court action," he said in an email.


Kraft Heinz Dividend History: Can the Food Giant Keep Paying Investors More?
The newly combined Kraft and Heinz continue to treat shareholders well.
Kraft Heinz (NASDAQ:KHC) has only existed in its current form for a couple of years, but the recently merged entity has a long history dating back for decades. The combination of Kraft Foods and Heinz created a massive food company that has plenty of well-known brand favorites among consumers, and the company has retained its predecessor components' commitment to dividend payments for its shareholders. Now, investors want to know what they can expect from the company going forward, and a look at Kraft Heinz's dividend history should shed some light on what the future is likely to bring.
Kraft and Heinz joined forces in 2015, and since then, the company has been good about making regular increases to its dividend payout. After starting out at $0.55 per share, the company has made two increases to its quarterly payment, one in late 2015 and the other in mid-2016. The boosts amounted to 4% to 5% each and have helped keep the stock's dividend yield stable at between 2.5% and 3%.
KHC Dividend data by YCharts.
Yet when you look back to the dividend legacies that the two companies brought to the merger, you get a more complete picture of what their dividend policies actually were. Heinz was actually a Dividend Aristocrat for more than a decade until it reduced its dividend in 2003, and since then, the food company had been back on the right track, with consistent increases in its dividend dating back to 2004.
For Kraft's part, it was itself a spinoff from Mondelez International (NASDAQ:MDLZ), and Mondelez put together an attractive track record of dividend growth that dates back to the early 2000s. The aftermath of the financial crisis led Mondelez to keep its dividend flat for a while after successive annual increases, but what the complete picture tells is that both Kraft and Heinz have the history of commitment to dividends that they have both carried forward into their merged business.
Still, one challenge that Kraft Heinz has faced recently is that its earnings haven't grown as much as investors would have liked. Consumer giants like Kraft Heinz often pay a relatively large portion of their earnings to shareholders as dividends, especially if they believe that the prospects for investing capital internally back into their businesses doesn't make sense in such a mature industry.
In that light, the company's payout ratio of 80% to 85% isn't all that extreme. Moreover, with Kraft Heinz having eliminated a commitment to pay dividends on previously issued preferred stock, that payout ratio has fallen toward the 65% range on a current and going-forward basis.
What's next for Kraft Heinz's dividend history?
In the near future, Kraft Heinz has identified getting its balance sheet healthier as a core priority for the business. With a relatively high leverage ratio, the food giant is looking to use free cash flow in large part to reduce debt to more manageable levels over the long haul. That will have the impact of diverting some money that could otherwise be used to produce dividend growth, but it will also reduce interest expense and potentially put Kraft Heinz into an even better position to grow dividends in future years.
That said, the food industry is competitive, and headwinds could slow Kraft Heinz's progress toward improving its financial strength. That in turn could make future dividend increases slower than investors would like. But with a big vote of confidence from Warren Buffett as a major stakeholder, Kraft Heinz looks like it's poised to keep delivering solid dividends in the future.
Income investors can appreciate the boring but beautiful business that Kraft Heinz has put together. With good current dividends and prospects for future growth, Kraft Heinz's dividend history is just getting started for those who appreciate investments that produce income.


text:
International Political Economy Series
South-South Cooperation Beyond the Myths
Rising Donors, New Aid Practices?
Editors: Bergamaschi, Isaline, MOORE, PHOEBE, Tickner, Arlene B. (Eds.)
Makes a significant contribution to the study of aid and cooperation
Brings together international relations, critical political economy and postcolonial/critical development theory
Uses a comparative analytical framework to link its ten case studies
eBook $119.00
price for USA
This book, which brings together scholars from the developed and developing world, explores one of the most salient features of contemporary international relations: South-South cooperation. It builds on existing empirical evidence and offers a comparative analytical framework to critically analyse the aid policies and programmes of ten rising donors from the global South. Amongst these are several BRICS (Brazil, India, China and South Africa) but also a number of less studied countries, including Cuba, Venezuela, the United Arab Emirates, Colombia, Turkey, and Korea. The chapters trace the ideas, identities and actors that shape contemporary South-South cooperation, and also explore potential differences and points of convergence with traditional North-South aid. This thought-provoking edited collection will appeal to students and scholars of international relations, international political economy, development, economics, area studies and business.
Isaline Bergamaschi is a Lecturer in the Deparment of Political Science at the Université Libre de Bruxelles, Belgium.
Phoebe Moore is Senior Lecturer in International Relations and International Political Economy at the School of Law, Middlesex University, UK.
Arlene B. Tickner is Professor of International Relations in the Political Science Department at the Universidad de los Andes, Bogotá, Colombia.
"This edited volume is a welcome contribution to the critical understanding of South-South cooperation in international politics. The chapters are written by an impressive group of scholars from both the North and the South with extensive knowledge of development cooperation mechanisms and the specific areas they look into. The book will most certainly become required reading for scholars, students and practioners involved in this field and eager to understand the trends in development cooperation, but also in the changing international power relations." (Monica Herz, Pontifical Catholic University of Rio de Janeiro, Brazil)
"This collection is a valuable corrective to stereotypical analyses of South-South cooperation. Bergamaschi, Moore and Tickner have assembled a first-rate set of chapters by an outstanding group of experts deeply engaged in the reassessment of the conceptualization and operation of cooperation strategies. Filled with important actor-based and issue-oriented insights from a diverse range of fascinating case studies, the volume deserves a wide readership from scholars, students and practitioners." (Andrew F. Cooper, University of Waterloo, Canada)
Introduction: South–South Cooperation Beyond the Myths—A Critical Analysis
Bergamaschi, Isaline (et al.)
Malleable Identities and Blurring Frontiers of Cooperation: Reflections from India's "Distinct" Engagement with Senegal and Mozambique
Jain, Pooja (et al.)
The Turkish Way of Doing Development Aid?: An Analysis from the Somali Laboratory
Ozkan, Mehmet
Good-Bye Che?: Scope, Identity, and Change in Cuba's South–South Cooperation
Benzi, Daniele (et al.)
The South–South Partnership Puzzle: The Brazilian Health Expert Community in Mozambique
Esteves, Paulo (et al.)
South Africa's Development Diplomacy and South–South Cooperation: Issues of Institutionalization and Formalization?
Naidu, Sanusha
Venezuela and South–South Cooperation: Solidarity or Realpolitik?
Briceño-Ruiz, José
Emerging Donors on the Field: A Study Case of China and South Korea in Lao PDR
Laporte, Camille
From Identities to Politics: UAE Foreign Aid
Al-Mezaini, Khaled Salem
Going South to Reach the North?: The Case of Colombia
Resisting South–South Cooperation? Mozambican Civil Society and Brazilian Agricultural Technical Cooperation
Durán, Jimena (et al.)
Conclusion: South–South Cooperation Experiences Compared and the Way Forward
Download High-Resolution Cover
Isaline Bergamaschi
PHOEBE MOORE
Arlene B. Tickner
The Editor(s) (if applicable) and The Author(s)
20 b/w illustrations
International Political Economy


text:
Q: Problems in reading date column of SQL Server in Python using pymssql package I have a date column (trnDate) in an SQL Server Table, which is stored like this in DB

2021-11-29 09:48:05.0000000 +04:00

To read this in Jupyter Notebook, I am using the pymssql package. My code looks like this below
import pymssql
import pandas as pd
import datetime as datetime
conn = pymssql.connect(server, user, password, "HecPoll5")
df = pd.read_sql_query('select * from dbo.v_beeah_data where customerid=379691', conn )
print(df)

The result set however gives me the output where i get hex characters in my dates (marked in bold).
TID----Number----trnDate----LiveMandatorID----Quantity----CustomerID
63221----731----b'\x00$\xd5\xffB\x00\x00\x00\xbc\xae\x00\x00\x...----1----80.0----379691
I have tried adding
parse_dates={"trnDate":"%Y%m%d %H:%M:%S"} &
parse_dates=True in read_sql_query & adding charset="UTF-8" parameters in connect as well, nothing have so far worked well.
This is the first time I am using this library, all other columns in the result set works well except the date column. If anyone has previously encountered such issue, kindly help with what I am missing here.

redpajama_set_name: RedPajamaStackExchange


text:
Celebrities Biography Benjamin Pavard
Birth Name: Benjamin Pavard
Occupation: Soccer Player
Born In: Maubeuge, France
Benjamin Pavard was born on the 28th of March, 1996. He is popular for being a Soccer Player. Both he and Serge Gnabry played for VfB Stuttgart. Benjamin Pavard's age is 25. French defender known for his time with the German club VfB Stuttgart. He became a member of the French national team and helped the team capture the 2018 World Cup.
The 25-year-old soccer player was born in Maubeuge, France. He started his career by joining US Jeaumont in 2002. He made his Ligue 1 debut playing for Lille against FC Nantes in 2015.
Countdown to Benjamin's next birthday.
Benjamin Pavard is a Aries and his 26th birthday is in .
JUMP TO: Benjamin Pavard's biography, facts, family, personal life, zodiac, videos, net worth, and popularity.
Benjamin Pavard was born in 1990s. The 1990s is often remembered as a decade of peace, prosperity and the rise of the Internet (World Wide Web). In 1992 the first text message was sent, DVDs were invented, Sony PlayStation was released and Google was founded. Oh, and the Soviet Union fell and boy bands ruled the music charts. Discover what happened on this day.
Benjamin Pavard is part of a Millennial Generation (also known as Generation Y). Millennials is a generation who grew up with computers, internet and social networks. Having been raised under the mantra "follow your dreams" and being told they were special, they tend to be confident and tolerant of difference.
You can also find out who is Benjamin Pavard dating now and celebrity dating histories at CelebsCouples.
While we don't know Benjamin Pavard birth time, but we do know his mother gave birth to his on a Thursday. People born on a Thursday are naturally well-meaning and open. Luck is on their side.
The 25-year-old French was born in the Millennials Generation and the Year of the Rat
Benjamin Pavard's mother's name is unknown at this time and his father's name is under review. We will continue to update information on Benjamin Pavard's parents.
Like many famous people and celebrities, Benjamin Pavard keeps his personal life private. Once more details are available on who he is dating, we will update this section.
REAL NAME: Benjamin Pavard
NICKNAME: Benjamin Pavard
BIRTH DAY: Thursday
The 25-year-old French soccer player has done well thus far. Majority of Benjamin's money comes from being a soccer player. CelebsMoney has recently updated Benjamin Pavard's net worth.
Zodiac Sign: Benjamin Pavard is a Aries. People of this zodiac sign like physical challenges, taking on leadership roles, individual sports and dislike inactivity, delays, and work that doesn't use one's talents. The strengths of this sign are being courageous, determined, confident, enthusiastic, optimistic, while weaknesses can be to be impatient, moody, short-tempered, impulsive and aggressive. The greatest overall compatibility with Aries is Libra and Leo.
Chinese Zodiac: Benjamin Pavard was born in the Year of the Tiger. People born under this sign are clever and charming. They're curious, but sometimes too motivated by money.
Ruling Planet: Benjamin Pavard has a ruling planet of Mars and has a ruling planet of Mars and by astrological associations Tuesday is ruled by Mars. This planet symbolizes the principle of assertive drive and energy. People who are born with Mars as the ruling planet have huge drive, aggression and commpetitiveness.
Benjamin Pavard's birth sign is Aries and he has a ruling planet of Mars.
– Who's the richest Soccer Player in the world?
– Benjamin Pavard Net Worth Stats
– When is Benjamin Pavard's birthday?
Steven Zuber
Andrija Zivkovic
Mehdi Zeffane
Alex Scott
João Félix
Fact Check: We strive for accuracy and fairness. If you see something that doesn't look right, contact us. This page is updated often with new details about Benjamin Pavard. Bookmark this page and come back often for updates.