text:
alter table quotation add column font_face varchar(32);
update quotation set font_face = 'unspecified';
alter table quotation change font_face font_face varchar(32) not null;
alter table correction add column font_face varchar(32);
update correction set font_face = 'unspecified';
alter table correction change font_face font_face varchar(32) not null;


text:
package rds

//Licensed under the Apache License, Version 2.0 (the "License");
//you may not use this file except in compliance with the License.
//You may obtain a copy of the License at
//
//http://www.apache.org/licenses/LICENSE-2.0
//
//Unless required by applicable law or agreed to in writing, software
//distributed under the License is distributed on an "AS IS" BASIS,
//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
//See the License for the specific language governing permissions and
//limitations under the License.
//
// Code generated by Alibaba Cloud SDK Code Generator.
// Changes may cause incorrect behavior and will be lost if the code is regenerated.

// DBInstanceEndpoint is a nested struct in rds response
type DBInstanceEndpoint struct {
	EndpointId          string       `json:"EndpointId" xml:"EndpointId"`
	EndpointType        string       `json:"EndpointType" xml:"EndpointType"`
	EndpointDescription string       `json:"EndpointDescription" xml:"EndpointDescription"`
	NodeItems           NodeItems    `json:"NodeItems" xml:"NodeItems"`
	AddressItems        AddressItems `json:"AddressItems" xml:"AddressItems"`
}

redpajama_set_name: RedPajamaGithub


text:
Install homebrew
```
$ /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
```

Install homebrew packages
```
$ brew install \
     n \
     git \
     gh \
     ack \
     autojump \
     tree \
     wget \
     mono \
     michaeldfallen/formula/git-radar \
     zsh-syntax-highlighting \
     azure-cli
```

Install Node LTS
```
$ sudo n lts
```

Install brew casks
```
$ brew tap homebrew/cask-versions
$ brew tap homebrew/cask-fonts
$ brew install --cask \
       azure-data-studio \
       docker \
       firefox \
       font-fira-code \
       gitup \
       google-chrome \
       google-chrome-canary \
       macpass \
       postman \
       slack \
       the-unarchiver \
       visual-studio-code \
       viscosity
```

install ohmyzsh
```
$ sh -c "$(curl -fsSL https://raw.github.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"
```

Install dotnet core sdk from https://dot.net.

Install Azure Functions Core Tools
```
$ brew tap azure/functions
$ brew install azure-functions-core-tools@3
```

## Setup SSH
### Generate keys
Generate new SSH keys for every hostname (i.e. github.com, bitbucket.org, ...):
```
$ ssh_keygen -f ~/.ssh/id_rsa.<hostname+customer>
```
e.g.
```
$ ssh_keygen -f ~/.ssh/id_rsa.github.com-parkero
```

Save passphrase to 1Password.

### Edit SSH config
Create or edit `~/.ssh/config`:
```
# Use identity files instead of SSH
IdentitiesOnly yes

# Default
Host *
    AddKeysToAgent yes
    UseKeychain yes

# Github
Host <hostname+customer, e.g. "github.com-parkero>
    HostName <real hostname>
    IdentityFile ~/.ssh/id_rsa.<hostname+customer>
```

## Copy dotfiles
Copy dotfiles stored in this repo to home folder:
```
$ cd <this repo>
$ cp -R user/. ~
```

## Create local gitconfig
Create `~/.gitconfig.local` which is linked from the gitconfig in this repo:
```
[user]
    name = Per Töyrä
    email = <email>

# Only needed if specific gitconfigs are needed for certain folders
# [includeIf "gitdir:~/Repos/<customer>/"]
#    path = ~/Repos/<customer>/.gitconfig
```

## Copy VS Code settings
⚠ Only needed if vscode sync is not working correctly:
```
$ cp -R vscode/. ~/Library/Application\ Support/Code/User
```

## Install macOS Terminal theme
Double click the terminal theme file `Bright Lights.terminal` to install.

## Set macOS defaults
Run to set macOS defaults:
```
./macos
```

## Reboot
Reboot the computer...


text:
package com.nepxion.coroutine.service.impl;

import java.util.List;
import java.util.Map;

import com.nepxion.coroutine.service.DService;

public class DServiceImpl implements DService {
    @Override
    public String doThen(String value) {
        return CoroutineInvoker.doThen(value, "D");
    }

    @Override
    public String doWhen(String value) {
        return CoroutineInvoker.doWhen(value, "D");
    }

    @Override
    public String doMerge(List<Map<String, Object>> value) {
        return CoroutineInvoker.doMerge(value, "D");
    }
}


text:
namespace backend {

    // SwapChain

    SwapChainBase::SwapChainBase(SwapChainBuilder* builder)
        : mDevice(builder->mDevice), mImplementation(builder->mImplementation) {
    }

    SwapChainBase::~SwapChainBase() {
        const auto& im = GetImplementation();
        im.Destroy(im.userData);
    }

    DeviceBase* SwapChainBase::GetDevice() {
        return mDevice;
    }

    void SwapChainBase::Configure(dawn::TextureFormat format,
                                  dawn::TextureUsageBit allowedUsage,
                                  uint32_t width,
                                  uint32_t height) {
        if (width == 0 || height == 0) {
            mDevice->HandleError("Swap chain cannot be configured to zero size");
            return;
        }
        allowedUsage |= dawn::TextureUsageBit::Present;

        mFormat = format;
        mAllowedUsage = allowedUsage;
        mWidth = width;
        mHeight = height;
        mImplementation.Configure(mImplementation.userData, static_cast<dawnTextureFormat>(format),
                                  static_cast<dawnTextureUsageBit>(allowedUsage), width, height);
    }

    TextureBase* SwapChainBase::GetNextTexture() {
        if (mWidth == 0) {
            // If width is 0, it implies swap chain has never been configured
            mDevice->HandleError("Swap chain needs to be configured before GetNextTexture");
            return nullptr;
        }

        auto* builder = mDevice->CreateTextureBuilder();
        builder->SetDimension(dawn::TextureDimension::e2D);
        builder->SetExtent(mWidth, mHeight, 1);
        builder->SetFormat(mFormat);
        builder->SetMipLevels(1);
        builder->SetAllowedUsage(mAllowedUsage);

        auto* texture = GetNextTextureImpl(builder);
        mLastNextTexture = texture;
        builder->Release();
        return texture;
    }

    void SwapChainBase::Present(TextureBase* texture) {
        if (texture != mLastNextTexture) {
            mDevice->HandleError("Tried to present something other than the last NextTexture");
            return;
        }

        OnBeforePresent(texture);

        mImplementation.Present(mImplementation.userData);
    }

    const dawnSwapChainImplementation& SwapChainBase::GetImplementation() {
        return mImplementation;
    }

    // SwapChain Builder

    SwapChainBuilder::SwapChainBuilder(DeviceBase* device) : Builder(device) {
    }

    SwapChainBase* SwapChainBuilder::GetResultImpl() {
        if (!mImplementation.Init) {
            HandleError("Implementation not set");
            return nullptr;
        }
        return mDevice->CreateSwapChain(this);
    }

    void SwapChainBuilder::SetImplementation(uint64_t implementation) {
        if (!implementation) {
            HandleError("Implementation pointer is invalid");
            return;
        }

        dawnSwapChainImplementation& impl =
            *reinterpret_cast<dawnSwapChainImplementation*>(implementation);

        if (!impl.Init || !impl.Destroy || !impl.Configure || !impl.GetNextTexture ||
            !impl.Present) {
            HandleError("Implementation is incomplete");
            return;
        }

        mImplementation = impl;
    }
}  // namespace backend


text:
package org.innovateuk.ifs.project.correspondenceaddress.controller;

import org.innovateuk.ifs.address.form.AddressForm;
import org.innovateuk.ifs.commons.service.ServiceResult;
import org.innovateuk.ifs.competition.resource.CompetitionResource;
import org.innovateuk.ifs.competition.service.CompetitionRestService;
import org.innovateuk.ifs.controller.ValidationHandler;
import org.innovateuk.ifs.organisation.resource.OrganisationResource;
import org.innovateuk.ifs.project.AddressLookupBaseController;
import org.innovateuk.ifs.project.ProjectService;
import org.innovateuk.ifs.project.correspondenceaddress.form.ProjectDetailsAddressForm;
import org.innovateuk.ifs.project.correspondenceaddress.viewmodel.ProjectDetailsAddressViewModel;
import org.innovateuk.ifs.project.resource.ProjectResource;
import org.innovateuk.ifs.projectdetails.ProjectDetailsService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.validation.BindingResult;
import org.springframework.web.bind.annotation.*;

import javax.validation.Valid;

import static org.innovateuk.ifs.address.form.AddressForm.FORM_ACTION_PARAMETER;
import static org.innovateuk.ifs.controller.ErrorToObjectErrorConverterFactory.asGlobalErrors;

/**
 * This controller will handle all requests that are related to project details.
 */
@Controller
@RequestMapping("/project")
public class ProjectUKCorrespondenceAddressController extends AddressLookupBaseController {

    @Autowired
    private ProjectService projectService;

    @Autowired
    private ProjectDetailsService projectDetailsService;

    @Autowired
    private CompetitionRestService competitionRestService;

    @PreAuthorize("hasPermission(#projectId, 'org.innovateuk.ifs.project.resource.ProjectCompositeId', 'ACCESS_PROJECT_ADDRESS_PAGE')")
    @GetMapping("/{projectId}/details/project-address/UK")
    public String viewAddress(@PathVariable("projectId") final Long projectId,
                              Model model,
                              @ModelAttribute(name = FORM_ATTR_NAME, binding = false) ProjectDetailsAddressForm form) {

        ProjectResource project = projectService.getById(projectId);
        ProjectDetailsAddressViewModel projectDetailsAddressViewModel = loadDataIntoModel(project);
        if (project.getAddress() != null) {
            form.getAddressForm().editAddress(project.getAddress());
        }

        model.addAttribute("model", projectDetailsAddressViewModel);
        return "project/details-address";
    }

    @PreAuthorize("hasPermission(#projectId, 'org.innovateuk.ifs.project.resource.ProjectCompositeId', 'ACCESS_PROJECT_ADDRESS_PAGE')")
    @PostMapping("/{projectId}/details/project-address/UK")
    public String updateAddress(@PathVariable("projectId") final Long projectId,
                                Model model,
                                @Valid @ModelAttribute(FORM_ATTR_NAME) ProjectDetailsAddressForm form,
                                @SuppressWarnings("unused") BindingResult bindingResult,
                                ValidationHandler validationHandler) {
        ProjectResource projectResource = projectService.getById(projectId);

        if (validationHandler.hasErrors()) {
            return viewCurrentAddressForm(model, form, projectResource);
        }
        projectResource.setAddress(form.getAddressForm().getSelectedAddress(this::searchPostcode));
        OrganisationResource leadOrganisation = projectService.getLeadOrganisation(projectResource.getId());
        ServiceResult<Void> updateResult = projectDetailsService.updateAddress(projectId, projectResource.getAddress());
        return updateResult.handleSuccessOrFailure(
                failure -> {
                    validationHandler.addAnyErrors(failure, asGlobalErrors());
                    return viewAddress(projectId, model, form);
                },
                success -> redirectToProjectDetails(projectId));
    }

    @PreAuthorize("hasPermission(#projectId, 'org.innovateuk.ifs.project.resource.ProjectCompositeId', 'ACCESS_PROJECT_ADDRESS_PAGE')")
    @PostMapping(value = "/{projectId}/details/project-address/UK", params = FORM_ACTION_PARAMETER)
    public String addressFormAction(@PathVariable("projectId") Long projectId,
                                Model model,
                                @ModelAttribute(FORM_ATTR_NAME) ProjectDetailsAddressForm form,
                                BindingResult bindingResult,
                                ValidationHandler validationHandler) {

        ProjectResource project = projectService.getById(projectId);
        form.getAddressForm().validateAction(bindingResult);
        if (validationHandler.hasErrors()) {
            return viewCurrentAddressForm(model, form, project);
        }

        AddressForm addressForm = form.getAddressForm();
        addressForm.handleAction(this::searchPostcode);

        return viewCurrentAddressForm(model, form, project);
    }

    private String viewCurrentAddressForm(Model model, ProjectDetailsAddressForm form,
                                          ProjectResource project) {
        ProjectDetailsAddressViewModel projectDetailsAddressViewModel = loadDataIntoModel(project);
        model.addAttribute("model", projectDetailsAddressViewModel);
        return "project/details-address";
    }

    private ProjectDetailsAddressViewModel loadDataIntoModel(final ProjectResource project) {
        CompetitionResource competition = competitionRestService.getCompetitionById(project.getCompetition()).getSuccess();
        return new ProjectDetailsAddressViewModel(project, competition.isKtp());
    }

    private String redirectToProjectDetails(long projectId) {
        return "redirect:/project/" + projectId + "/details";
    }

}


text:
package com.gzmelife.app.adapter;

import java.util.List;

import android.content.Context;
import android.support.v7.widget.RecyclerView;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.view.ViewGroup.LayoutParams;
import android.widget.TextView;

import com.gzmelife.app.R;
import com.gzmelife.app.bean.CategorySecondBean;
import com.gzmelife.app.tools.DensityUtil;
import com.gzmelife.app.tools.MyLog;

public class GalleryAdapter extends
		RecyclerView.Adapter<GalleryAdapter.ViewHolder> {
	private LayoutInflater mInflater;
	private List<CategorySecondBean> mDatas;

	private int width = 0; // 每一项的长度

	String TAG = "GalleryAdapter";

	private Context context;
	private TextView selectView;
	private int position;

	private OnRecyclerViewItemClickListener mOnItemClickListener = null;

	public GalleryAdapter(Context context, List<CategorySecondBean> datats,
			int position) {
		this.context = context;
		this.position = position;
		mInflater = LayoutInflater.from(context);
		mDatas = datats;
	}

	public GalleryAdapter(Context context) {
		this.context = context;
		mInflater = LayoutInflater.from(context);
	}

	public static class ViewHolder extends RecyclerView.ViewHolder {
		public ViewHolder(View arg0) {
			super(arg0);
		}

		TextView mTxt;
	}

	@Override
	public int getItemCount() {
		return mDatas == null ? 0 : mDatas.size();
	}

	/**
	 * 创建ViewHolder
	 */
	@Override
	public ViewHolder onCreateViewHolder(ViewGroup viewGroup, final int i) {
		if (width == 0) {
			if (getItemCount() >= 3) {
				width = DensityUtil.getWidth(context) / 3;
			} else {
				width = DensityUtil.getWidth(context) / getItemCount();
			}
		}

		View view = mInflater.inflate(R.layout.item_text, viewGroup, false);
		LayoutParams lp = view.getLayoutParams();
		lp.width = width;
		view.setLayoutParams(lp);
		ViewHolder viewHolder = new ViewHolder(view);
		viewHolder.mTxt = (TextView) view.findViewById(R.id.tv);

		return viewHolder;
	}

	/**
	 * 设置值
	 */
	@Override
	public void onBindViewHolder(final ViewHolder viewHolder, final int i) {
		viewHolder.mTxt.setText(mDatas.get(i).getScName());
		MyLog.d("--->i=" + i + ",position=" + position);
		if (position == i) {
			viewHolder.mTxt.setSelected(true);
			if (mOnItemClickListener != null) {
				// 注意这里使用getTag方法获取数据
				mOnItemClickListener.onItemClick(viewHolder.mTxt, mDatas.get(i)
						.getScId(), i);
				selectView = viewHolder.mTxt;
			}

		} else {
			viewHolder.mTxt.setSelected(false);
			// if (mOnItemClickListener != null) {
			// // 注意这里使用getTag方法获取数据
			// mOnItemClickListener.onItemClick(viewHolder.mTxt, mDatas.get(i)
			// .getScId(), i);
			// selectView = viewHolder.mTxt;
			// selectView.setSelected(true);
			// }
		}
		if (mDatas.get(i).getScId() == position) {
			viewHolder.mTxt.setSelected(true);
		}
		viewHolder.mTxt.setOnClickListener(new OnClickListener() {
			@Override
			public void onClick(View v) {
				position = i;
				Log.i(TAG, "点击了");
				// selectView.setSelected(false);
				selectView = viewHolder.mTxt;
				// selectView.setSelected(true);
				if (mOnItemClickListener != null) {
					// 注意这里使用getTag方法获取数据
					mOnItemClickListener.onItemClick(v,
							mDatas.get(i).getScId(), i);
					// selectView = (TextView) v;
					v.setSelected(true);
				}
			}
		});
	}

	public static interface OnRecyclerViewItemClickListener {
		void onItemClick(View view, int position, int pos);
	}

	public void setOnItemClickListener(OnRecyclerViewItemClickListener listener) {
		this.mOnItemClickListener = listener;
	}

}


text:
asynctest(
  'browser.tinymce.core.keyboard.EnterKeyListsTest',
  [
    'ephox.agar.api.Pipeline',
    'ephox.mcagar.api.LegacyUnit',
    'ephox.mcagar.api.TinyLoader',
    'tinymce.core.test.HtmlUtils',
    'tinymce.core.util.Tools',
    'tinymce.themes.modern.Theme'
  ],
  function (Pipeline, LegacyUnit, TinyLoader, HtmlUtils, Tools, Theme) {
    var success = arguments[arguments.length - 2];
    var failure = arguments[arguments.length - 1];
    var suite = LegacyUnit.createSuite();

    Theme();

    var pressEnter = function (editor, evt) {
      var dom = editor.dom, target = editor.selection.getNode();

      evt = Tools.extend({ keyCode: 13 }, evt);

      dom.fire(target, 'keydown', evt);
      dom.fire(target, 'keypress', evt);
      dom.fire(target, 'keyup', evt);
    };

    var trimBrsOnIE = function (html) {
      return html.replace(/
]*>/gi, '');
    };

    suite.test('Enter inside empty li in beginning of ol', function (editor) {
      editor.getBody().innerHTML = '

a

';
      LegacyUnit.setSelection(editor, 'li', 0);
      pressEnter(editor);
      LegacyUnit.equal(editor.getContent(), '
\u00a0

a

');
      LegacyUnit.equal(editor.selection.getNode().nodeName, 'P');
    });

    suite.test('Enter inside empty li at the end of ol', function (editor) {
      editor.getBody().innerHTML = '

a

';
      LegacyUnit.setSelection(editor, 'li:last', 0);
      pressEnter(editor);
      LegacyUnit.equal(editor.getContent(), '

a

\u00a0
');
      LegacyUnit.equal(editor.selection.getNode().nodeName, 'P');
    });

    suite.test('Shift+Enter inside empty li in the middle of ol', function (editor) {
      editor.getBody().innerHTML = '

a

b

';
      LegacyUnit.setSelection(editor, 'li:nth-child(2)', 0);
      pressEnter(editor, { shiftKey: true });
      LegacyUnit.equal(editor.getContent(), '

a

\u00a0

b

');
      LegacyUnit.equal(editor.selection.getNode().nodeName, 'P');
    });

    suite.test('Shift+Enter inside empty li in beginning of ol', function (editor) {
      editor.getBody().innerHTML = '

a

';
      LegacyUnit.setSelection(editor, 'li', 0);
      pressEnter(editor, { shiftKey: true });
      LegacyUnit.equal(editor.getContent(), '
\u00a0

a

');
      LegacyUnit.equal(editor.selection.getNode().nodeName, 'P');
    });

    suite.test('Shift+Enter inside empty li at the end of ol', function (editor) {
      editor.getBody().innerHTML = '

a

';
      LegacyUnit.setSelection(editor, 'li:last', 0);
      pressEnter(editor, { shiftKey: true });
      LegacyUnit.equal(editor.getContent(), '

a

\u00a0
');
      LegacyUnit.equal(editor.selection.getNode().nodeName, 'P');
    });

    suite.test('Enter inside empty li in the middle of ol with forced_root_block: false', function (editor) {
      editor.settings.forced_root_block = false;
      editor.getBody().innerHTML = '

a

b

';
      LegacyUnit.setSelection(editor, 'li:nth-child(2)', 0);
      pressEnter(editor);
      LegacyUnit.equal(editor.getContent(), '

a

b

');
      LegacyUnit.equal(editor.selection.getNode().nodeName, 'BODY');
      editor.settings.forced_root_block = 'p';
    });

    suite.test('Enter inside empty li in beginning of ol with forced_root_block: false', function (editor) {
      editor.settings.forced_root_block = false;
      editor.getBody().innerHTML = '

a

';
      LegacyUnit.setSelection(editor, 'li', 0);
      pressEnter(editor);
      LegacyUnit.equal(editor.getContent(), '

a

');
      LegacyUnit.equal(editor.selection.getNode().nodeName, 'BODY');
      editor.settings.forced_root_block = 'p';
    });

    suite.test('Enter inside empty li at the end of ol with forced_root_block: false', function (editor) {
      editor.settings.forced_root_block = false;
      editor.getBody().innerHTML = '

a

';
      LegacyUnit.setSelection(editor, 'li:last', 0);
      pressEnter(editor);
      LegacyUnit.equal(HtmlUtils.cleanHtml(editor.getBody().innerHTML), '

a

');
      LegacyUnit.equal(editor.selection.getNode().nodeName, 'BODY');
      editor.settings.forced_root_block = 'p';
    });

    suite.test('Enter inside empty li in the middle of ol', function (editor) {
      editor.getBody().innerHTML = '

a

b

';
      LegacyUnit.setSelection(editor, 'li:nth-child(2)', 0);
      pressEnter(editor);
      LegacyUnit.equal(editor.getContent(), '

a

\u00a0

b

');
      LegacyUnit.equal(editor.selection.getNode().nodeName, 'P');
    });

    // Nested lists in LI elements

    suite.test('Enter inside empty LI in beginning of OL in LI', function (editor) {
      editor.getBody().innerHTML = trimBrsOnIE(
        '
' +
        '
a' +
        '
' +
        '

' +
        '
a
' +
        '
' +
        '
' +
        '
'
      );

      LegacyUnit.setSelection(editor, 'li li', 0);
      editor.focus();
      pressEnter(editor);

      LegacyUnit.equal(editor.getContent(),
        '
' +
        '
a
' +
        '
' +
        '
' +
        '
a
' +
        '
' +
        '
' +
        '
'
      );

      LegacyUnit.equal(editor.selection.getNode().nodeName, 'LI');
    });

    suite.test('Enter inside empty LI in middle of OL in LI', function (editor) {
      editor.getBody().innerHTML = trimBrsOnIE(
        '
' +
        '
a' +
        '
' +
        '
a
' +
        '

' +
        '
b
' +
        '
' +
        '
' +
        '
'
      );

      LegacyUnit.setSelection(editor, 'li li:nth-child(2)', 0);
      editor.focus();
      pressEnter(editor);

      LegacyUnit.equal(editor.getContent(),
        '
' +
        '
a' +
        '
' +
        '
a
' +
        '
' +
        '
' +
        '
\u00a0' +
        '
' +
        '
b
' +
        '
' +
        '
' +
        '
'
      );

      LegacyUnit.equal(editor.selection.getNode().nodeName, 'LI');
    });

    suite.test('Enter inside empty LI in end of OL in LI', function (editor) {
      editor.getBody().innerHTML = trimBrsOnIE(
        '
' +
        '
a' +
        '
' +
        '
a
' +
        '

' +
        '
' +
        '
' +
        '
'
      );

      LegacyUnit.setSelection(editor, 'li li:last', 0);
      editor.focus();
      pressEnter(editor);

      LegacyUnit.equal(editor.getContent(),
        '
' +
        '
a' +
        '
' +
        '
a
' +
        '
' +
        '
' +
        '
\u00a0
' +
        '
'
      );

      LegacyUnit.equal(editor.selection.getNode().nodeName, 'LI');
    });

    // Nested lists in OL elements

    suite.test('Enter before nested list', function (editor) {
      editor.getBody().innerHTML = trimBrsOnIE(
        '
' +
        '
a' +
        '
' +
        '
b
' +
        '
c
' +
        '
' +
        '
' +
        '
'
      );

      LegacyUnit.setSelection(editor, 'ol > li', 1);
      editor.focus();
      pressEnter(editor);

      LegacyUnit.equal(editor.getContent(),
        '
' +
        '
a
' +
        '
\u00a0' +
        '
' +
        '
b
' +
        '
c
' +
        '
' +
        '
' +
        '
'
      );

      LegacyUnit.equal(editor.selection.getNode().nodeName, 'LI');
    });

    suite.test('Enter inside empty LI in beginning of OL in OL', function (editor) {
      editor.getBody().innerHTML = trimBrsOnIE(
        '
' +
        '
a
' +
        '
' +
        '

' +
        '
a
' +
        '
' +
        '
'
      );

      LegacyUnit.setSelection(editor, 'ol ol li', 0);
      editor.focus();
      pressEnter(editor);

      LegacyUnit.equal(editor.getContent(),
        '
' +
        '
a
' +
        '
\u00a0
' +
        '
' +
        '
a
' +
        '
' +
        '
'
      );

      LegacyUnit.equal(editor.selection.getNode().nodeName, 'LI');
    });

    suite.test('Enter inside empty LI in middle of OL in OL', function (editor) {
      editor.getBody().innerHTML = trimBrsOnIE(
        '
' +
        '
a
' +
        '
' +
        '
a
' +
        '

' +
        '
b
' +
        '
' +
        '
'
      );

      LegacyUnit.setSelection(editor, 'ol ol li:nth-child(2)', 0);
      editor.focus();
      pressEnter(editor);

      LegacyUnit.equal(editor.getContent(),
        '
' +
        '
a
' +
        '
' +
        '
a
' +
        '
' +
        '
\u00a0
' +
        '
' +
        '
b
' +
        '
' +
        '
'
      );

      LegacyUnit.equal(editor.selection.getNode().nodeName, 'LI');
    });

    suite.test('Enter inside empty LI in end of OL in OL', function (editor) {
      editor.getBody().innerHTML = trimBrsOnIE(
        '
' +
        '
a
' +
        '
' +
        '
a
' +
        '

' +
        '
' +
        '
'
      );

      LegacyUnit.setSelection(editor, 'ol ol li:last', 0);
      editor.focus();
      pressEnter(editor);

      LegacyUnit.equal(editor.getContent(),
        '
' +
        '
a
' +
        '
' +
        '
a
' +
        '
' +
        '
\u00a0
' +
        '
'
      );

      LegacyUnit.equal(editor.selection.getNode().nodeName, 'LI');
    });

    suite.test('Enter at beginning of first DT inside DL', function (editor) {
      editor.getBody().innerHTML = '

a

';
      LegacyUnit.setSelection(editor, 'dt', 0);
      pressEnter(editor);
      LegacyUnit.equal(editor.getContent(), '

\u00a0

a

');
      LegacyUnit.equal(editor.selection.getNode().nodeName, 'DT');
    });

    suite.test('Enter at beginning of first DD inside DL', function (editor) {
      editor.getBody().innerHTML = '

a

';
      LegacyUnit.setSelection(editor, 'dd', 0);
      pressEnter(editor);
      LegacyUnit.equal(editor.getContent(), '

\u00a0

a

');
      LegacyUnit.equal(editor.selection.getNode().nodeName, 'DD');
    });

    suite.test('Enter at beginning of middle DT inside DL', function (editor) {
      editor.getBody().innerHTML = '

a

b

c

';
      LegacyUnit.setSelection(editor, 'dt:nth-child(2)', 0);
      pressEnter(editor);
      LegacyUnit.equal(editor.getContent(), '

a

\u00a0

b

c

');
      LegacyUnit.equal(editor.selection.getNode().nodeName, 'DT');
    });

    suite.test('Enter at beginning of middle DD inside DL', function (editor) {
      editor.getBody().innerHTML = '

a

b

c

';
      LegacyUnit.setSelection(editor, 'dd:nth-child(2)', 0);
      pressEnter(editor);
      LegacyUnit.equal(editor.getContent(), '

a

\u00a0

b

c

');
      LegacyUnit.equal(editor.selection.getNode().nodeName, 'DD');
    });

    suite.test('Enter at end of last DT inside DL', function (editor) {
      editor.getBody().innerHTML = '

a

';
      LegacyUnit.setSelection(editor, 'dt', 1);
      pressEnter(editor);
      LegacyUnit.equal(editor.getContent(), '

a

\u00a0

');
      LegacyUnit.equal(editor.selection.getNode().nodeName, 'DT');
    });

    suite.test('Enter at end of last DD inside DL', function (editor) {
      editor.getBody().innerHTML = '

a

';
      LegacyUnit.setSelection(editor, 'dd', 1);
      pressEnter(editor);
      LegacyUnit.equal(editor.getContent(), '

a

\u00a0

');
      LegacyUnit.equal(editor.selection.getNode().nodeName, 'DD');
    });

    suite.test('Enter at end of last empty DT inside DL', function (editor) {
      editor.getBody().innerHTML = '

a

';
      LegacyUnit.setSelection(editor, 'dt:nth-child(2)', 0);
      pressEnter(editor);
      LegacyUnit.equal(editor.getContent(), '

a

\u00a0
');
      LegacyUnit.equal(editor.selection.getNode().nodeName, 'P');
    });

    suite.test('Enter at end of last empty DD inside DL', function (editor) {
      editor.getBody().innerHTML = '

a

';
      LegacyUnit.setSelection(editor, 'dd:nth-child(2)', 0);
      pressEnter(editor);
      LegacyUnit.equal(editor.getContent(), '

a

\u00a0
');
      LegacyUnit.equal(editor.selection.getNode().nodeName, 'P');
    });

    suite.test('Enter at beginning of P inside LI', function (editor) {
      editor.getBody().innerHTML = '

abcd

';
      LegacyUnit.setSelection(editor, 'p', 0);
      pressEnter(editor);
      LegacyUnit.equal(editor.getContent(), '

\u00a0

abcd

');
      LegacyUnit.equal(editor.selection.getNode().nodeName, 'P');
    });

    suite.test('Enter inside middle of P inside LI', function (editor) {
      editor.getBody().innerHTML = '

abcd

';
      LegacyUnit.setSelection(editor, 'p', 2);
      pressEnter(editor);
      LegacyUnit.equal(editor.getContent(), '

ab

cd

');
      LegacyUnit.equal(editor.selection.getNode().nodeName, 'P');
    });

    suite.test('Enter at end of P inside LI', function (editor) {
      editor.getBody().innerHTML = '

abcd

';
      LegacyUnit.setSelection(editor, 'p', 4);
      pressEnter(editor);
      LegacyUnit.equal(editor.getContent(), '

abcd

\u00a0

');
      LegacyUnit.equal(editor.selection.getNode().nodeName, 'LI');
    });

    suite.test('Shift+Enter at beginning of P inside LI', function (editor) {
      editor.getBody().innerHTML = '

abcd

';
      LegacyUnit.setSelection(editor, 'p', 0);
      pressEnter(editor, { shiftKey: true });
      LegacyUnit.equal(editor.getContent(), '

abcd

');
      LegacyUnit.equal(editor.selection.getNode().nodeName, 'P');
    });

    suite.test('Shift+Enter inside middle of P inside LI', function (editor) {
      editor.getBody().innerHTML = '

abcd

';
      LegacyUnit.setSelection(editor, 'p', 2);
      pressEnter(editor, { shiftKey: true });
      LegacyUnit.equal(editor.getContent(), '

ab
cd

');
      LegacyUnit.equal(editor.selection.getNode().nodeName, 'P');
    });

    suite.test('Shift+Enter at end of P inside LI', function (editor) {
      editor.getBody().innerHTML = '

abcd

';
      LegacyUnit.setSelection(editor, 'p', 4);
      pressEnter(editor, { shiftKey: true });
      LegacyUnit.equal(
        editor.getContent(),
        '

abcd

'
      );
      LegacyUnit.equal(editor.selection.getNode().nodeName, 'P');
    });

    suite.test('Ctrl+Enter at beginning of P inside LI', function (editor) {
      editor.getBody().innerHTML = '

abcd

';
      LegacyUnit.setSelection(editor, 'p', 0);
      pressEnter(editor, { ctrlKey: true });
      LegacyUnit.equal(editor.getContent(), '

\u00a0

abcd

');
      LegacyUnit.equal(editor.selection.getNode().nodeName, 'P');
    });

    suite.test('Ctrl+Enter inside middle of P inside LI', function (editor) {
      editor.getBody().innerHTML = '

abcd

';
      LegacyUnit.setSelection(editor, 'p', 2);
      pressEnter(editor, { ctrlKey: true });
      LegacyUnit.equal(editor.getContent(), '

ab

cd

');
      LegacyUnit.equal(editor.selection.getNode().nodeName, 'P');
    });

    suite.test('Ctrl+Enter at end of P inside LI', function (editor) {
      editor.getBody().innerHTML = '

abcd

';
      LegacyUnit.setSelection(editor, 'p', 4);
      pressEnter(editor, { ctrlKey: true });
      LegacyUnit.equal(editor.getContent(), '

abcd

\u00a0

');
      LegacyUnit.equal(editor.selection.getNode().nodeName, 'P');
    });

    suite.test('Shift+enter in LI when forced_root_block: false', function (editor) {
      editor.settings.forced_root_block = false;
      editor.getBody().innerHTML = '

text

';
      LegacyUnit.setSelection(editor, 'li', 2);
      pressEnter(editor, { shiftKey: true });
      LegacyUnit.equal(editor.getContent(), '

te
xt

');
      editor.settings.forced_root_block = 'p';
    });

    TinyLoader.setup(function (editor, onSuccess, onFailure) {
      Pipeline.async({}, suite.toSteps(editor), onSuccess, onFailure);
    }, {
      add_unload_trigger: false,
      disable_nodechange: true,
      schema: 'html5',
      extended_valid_elements: 'div[id|style|contenteditable],span[id|style|contenteditable],#dt,#dd',
      entities: 'raw',
      indent: false,
      skin_url: '/project/src/skins/lightgray/dist/lightgray'
    }, success, failure);
  }
);


text:
"""Utility functions to save/load keras Model to/from SavedModel."""
from __future__ import absolute_import
from __future__ import division
from __future__ import print_function

from tensorflow.python.keras import saving

# TODO(kathywu): Remove all contrib callers, switch to tf.keras.
save_keras_model = saving.export_saved_model
load_keras_model = saving.load_from_saved_model


text:
- lxml fixed to be lower than 4.7.1 since it seems to have issues validating the signature of encrypted elements  See https://github.com/onelogin/python3-saml/issues/292

### 2.11.0 (Jan 28, 2022)
- [#292](https://github.com/onelogin/python-saml/pull/292) Add rejectDeprecatedAlgorithm settings in order to be able reject messages signed with deprecated algorithms.
- Upgrade dm.xmlsec.binding to 2.1
- Set sha256 and rsa-sha256 as default algorithms
- Added warning about Open Redirect and Reply attacks

### 2.10.0 (Jul 23, 2021)
* Removed CC-BY-SA 3.0 non compliant implementation of dict_deep_merge
* Update expired dates from test responses
* Add warning about the use of OneLogin_Saml2_IdPMetadataParser class about SSRF attacks
* Migrate from Travis to Github Actions

### 2.9.0 (Jan 13, 2021)
* Destination URL Comparison is now case-insensitive for netloc
* Support single-label-domains as valid. New security parameter allowSingleLabelDomains
* Added get_idp_sso_url, get_idp_slo_url and get_idp_slo_response_url methods to the Settings class and use it in the toolkit
* [#267](https://github.com/onelogin/python-saml/issues/267) Custom lxml parser based on the one defined at xmldefused. Parser will ignore comments and processing instructions and by default have deactivated huge_tree, DTD and access to external documents
* Add get_friendlyname_attributes support
* Remove external lib method get_ext_lib_path. Add set_cert_path in order to allow set the cert path in a different folder than the toolkit
* Add python2 deprecation info
* [#269](https://github.com/onelogin/python-saml/issues/269) Add sha256 instead sha1 algorithm for sign/digest as recommended value on documentation and settings

### 2.8.0 (NOv 20, 2019)
* [#258](https://github.com/onelogin/python-saml/issues/258) Fix failOnAuthnContextMismatch feature
* [#250](https://github.com/onelogin/python-saml/issues/250) Allow any number of decimal places for seconds on SAML datetimes
* Update demo versions. Improve them and add Tornado demo.

### 2.7.0 (Sep 11, 2019)
* Set true as the default value for strict setting

### 2.6.0 (Jul 02, 2019)
* Adjusted acs endpoint to extract NameQualifier and SPNameQualifier from SAMLResponse. Adjusted single logout service to provide NameQualifier and SPNameQualifier to logout method. Add getNameIdNameQualifier to Auth and SamlResponse. Extend logout method from Auth and LogoutRequest constructor to support SPNameQualifier parameter. Align LogoutRequest constructor with SAML specs
* Added get_in_response_to method to Response and LogoutResponse classes
* Add get_last_authn_contexts method
* Fix bug on friendlyName/nameFormat parameters on RequestedAttribute elements. Wrong variable name caused FriendlyName to overwrite NameFormat
* Add support for Subjects on AuthNRequests by the new name_id_value_req parameeter.Fix testshib test. Improve README: Added inline markup to important references
* Update defusedxml
* Fix path in flask demo

### 2.5.0 (Jan 29, 2019)
* Security improvements. Use of tagid to prevent XPath injection. Disable DTD on fromstring defusedxml method
* [#239](https://github.com/onelogin/python-saml/issues/239) Check that the response has all of the AuthnContexts that we provided
* Fixed a ValidationError misspelling
* Don't require compression on LogoutResponse messages by relaxing the decode_base64_and_inflate method
* Add expected/received in WRONG_ISSUER error
* If debug enable, print reason for the SAMLResponse invalidation
* [#238](https://github.com/onelogin/python-saml/issues/238) Fix DSA constant
* Start using flake8 for code quality

### 2.4.2 (Sep 05, 2018)
* Update dm.xmlsec.binding dependency to 1.3.7
* Update pylint dependency to 1.9.1
* Update Django demo to use LTS version of Django

### 2.4.1 (Apr 25, 2018)
* Add ID to EntityDescriptor before sign it on add_sign method. Improve the way ds namespace is handled in add_sign method
* Update defusedxml, coveralls and coverage dependencies
* Update copyright and license reference

### 2.4.0 (Feb 27, 2018)
* Fix vulnerability [CVE-2017-11427](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-11427). Process text of nodes properly, ignoring comments
* Improve how fingerprint is calcultated
* Fix issue with LogoutRequest rejected by ADFS due NameID with unspecified format instead no format attribute
* Be able to invalidate a SAMLResponse if it contains InResponseTo value but no RequestId parameter provided at the is_valid method. See rejectUnsolicitedResponsesWithInResponseTo security parameter (By default deactivated)
* Fix signature position in the SP metadata
* Redefine NSMAP constant

### 2.3.0 (Sep 15, 2017)
* [#205](https://github.com/onelogin/python-saml/pull/205) Improve decrypt method, Add an option to decrypt an element in place or copy it before decryption.
* [#204](https://github.com/onelogin/python-saml/pull/204) On a LogoutRequest if the NameIdFormat is entity, NameQualifier and SPNameQualifier will be ommited. If the NameIdFormat is not entity and a NameQualifier is provided, then the SPNameQualifier will be also added.
* Be able to get at the auth object the last processed ID (response/assertion) and the last generated ID.
* Reset errorReason attribute of the auth object before each Process method
* Fix issue on getting multiple certs when only sign or encryption certs
* Allow empty nameid if setting wantNameId is false. Only raise Exceptions when strict mode is enabled

### 2.2.3 (Jun 15, 2017)
* Replace some etree.tostring calls, that were introduced recfently,  by the sanitized call provided by defusedxml
* Update dm.xmlsec.binding requirement to 1.3.3 version

### 2.2.2 (May 18, 2017)
* Be able to relax SSL Certificate verification when retrieving idp metadata
* [#195](https://github.com/onelogin/python-saml/pull/195) Be able to register future SP x509cert on the settings and publish it on SP metadata
* [#195](https://github.com/onelogin/python-saml/pull/195) Be able to register more than 1 Identity Provider x509cert, linked with an specific use (signing or encryption
* [#195](https://github.com/onelogin/python-saml/pull/195) Allow metadata to be retrieved from source containing data of multiple entities
* [#195](https://github.com/onelogin/python-saml/pull/195) Adapt IdP XML metadata parser to take care of multiple IdP certtificates and be able to inject the data obtained on the settings.
* [#194](https://github.com/onelogin/python-saml/pull/194) Publish KeyDescriptor[use=encryption] only when required
* [#190](https://github.com/onelogin/python-saml/pull/190) Checking the status of response before assertion count
* Add Pyramid demo example
* Allows underscores in URL hosts
* NameID Format improvements
* [#184](https://github.com/onelogin/python-saml/pull/184) Be able to provide a NameIDFormat to LogoutRequest
* [#180](https://github.com/onelogin/python-saml/pull/180) Add DigestMethod support. (Add sign_algorithm and digest_algorithm parameters to sign_metadata and add_sign)
* Validate serial number as string to work around libxml2 limitation
* Make the Issuer on the Response Optional

### 2.2.1 (Jan 11, 2017)
* [#175](https://github.com/onelogin/python-saml/pull/175)  Optionally raise detailed exceptions vs. returning False.
Implement a more specific exception class for handling some validation errors. Improve/Fix tests
* [#171](https://github.com/onelogin/python-saml/pull/171) Add hooks to retrieve last-sent and last-received requests and responses
* Improved inResponse validation on Responses
* [#173](https://github.com/onelogin/python-saml/pull/173) Fix attributeConsumingService serviceName format in README

### 2.2.0 (Oct 14, 2016)
* Several security improvements:
  * Conditions element required and unique.
  * AuthnStatement element required and unique.
  * SPNameQualifier must math the SP EntityID
  * Reject saml:Attribute element with same "Name" attribute
  * Reject empty nameID
  * Require Issuer element. (Must match IdP EntityID).
  * Destination value can't be blank (if present must match ACS URL).
  * Check that the EncryptedAssertion element only contains 1 Assertion element.
* Improve Signature validation process
* [#149](https://github.com/onelogin/python-saml/pull/149) Work-around for xmlsec.initialize
* [#151](https://github.com/onelogin/python-saml/pull/151) Fix flask demo error handling and improve documentation
* [#152](https://github.com/onelogin/python-saml/pull/152) Update LICENSE to include MIT rather than BSD license
* [#155](https://github.com/onelogin/python-saml/pull/155) Fix typographical errors in docstring
* Fix RequestedAttribute Issue
* Fix __build_signature method. If relay_state is null not be part of the SignQuery
* [#164](https://github.com/onelogin/python-saml/pull/164) Add support for non-ascii fields in settings

### 2.1.9 (Jun 27, 2016)
* Change the decrypt assertion process.
* Add 2 extra validations to prevent Signature wrapping attacks.

### 2.1.8 (Jun 02, 2016)
* Fix Metadata XML (RequestedAttribute)
* Fix Windows specific Unix date formatting bug.
* Docs for OSx instlltion of libsecxml1
* Fix SHA384 Constant URI
* [#142](https://github.com/onelogin/python-saml/pull/142) Refactor of settings.py to make it a little more readable.
* Bugfix for ADFS lowercase signatures
* READMEs suggested wrong cert name

### 2.1.7 (May 14, 2016)
* [#117](https://github.com/onelogin/python-saml/pull/117) AttributeConsumingService support
* [#114](https://github.com/onelogin/python-saml/pull/114) Compare Assertion InResponseTo if not None
* Return empty list when there are no audience values
* Passing NameQualifier through to logout request
* Make deflate process when retrieving built SAML messages optional
* Add debug parameter to decrypt method
* Fix Idp Metadata parser
* Add documentation related to the new IdP metadata parser methods
* Extract the already encoded value directly from get_data
* [#133](https://github.com/onelogin/python-saml/pull/133) Fix typo and add extra assertions in util decrypt test
* Fix Signature with empty URI support
* Allow AuthnRequest with no NameIDPolicy
* Remove requirement of NameID on SAML responses

### 2.1.6 (Feb 15, 2016)
* Prevent signature wrapping attack!!
* [#111](https://github.com/onelogin/python-saml/pull/111) Add support for nested `NameID` children inside `AttributeValue`s
* ALOWED Misspell
* Improve how we obtain the settings path.
* Update docs adding reference to test depencence installation
* Fix Organization element on SP metadata.
* [#100](https://github.com/onelogin/python-saml/pull/100) Support Responses that don't have AttributeStatements.

### 2.1.5 (Nov 3, 2015)
* [#86](https://github.com/onelogin/python-saml/pull/86) Make idp settings optional (Usefull when validating SP metadata)
* [#79](https://github.com/onelogin/python-saml/pull/79) Remove unnecesary dependence. M2crypto is not used.
* [#77](https://github.com/onelogin/python-saml/pull/77) Fix server_port can be None
* Fix bug on settings constructor related to sp_validation_only
* Make SPNameQualifier optional on the generateNameId method. Avoid the use of SPNameQualifier when generating the NameID on the LogoutRequest builder.
* Allows the RequestedAuthnContext Comparison attribute to be set via settings
* Be able to retrieve Session Timeout after processResponse
* Update documentation. Clarify the use of the certFingerprint

### 2.1.4 (Jul 17, 2015)
* Now the SP is able to select the algorithm to be used on signatures (DSA_SHA1, RSA_SHA1, RSA_SHA256, RSA_SHA384, RSA_SHA512).
* Support sign validation of different kinds of algorithm
* Add demo example of the Bottle framework.
* [#73](https://github.com/onelogin/python-saml/pull/73) Improve decrypt method
* Handle valid but uncommon dsig block with no URI in the reference
* Split the setting check methods. Now 1 method for IdP settings and other for SP settings
* Let the setting object to avoid the IdP setting check. required if we want to publish SP * SAML Metadata when the IdP data is still not provided.

### 2.1.3 (Jun 25, 2015)
* Do accesible the ID of the object Logout Request (id attribute)
* Add SAMLServiceProviderBackend reference to the README.md
* Solve HTTPs issue on demos
* Fix PHP-style array element in settings json
* Add fingerprint algorithm support. Previously the toolkit assumed SHA-1 algorithm
* Fix creation of metadata with no SLS, when using settings.get_sp_metadata()
* Allow configuration of metadata caching/expiry via settings
* Allow metadata signing with SP key specified as config value, not file
* Set NAMEID_UNSPECIFIED as default NameIDFormat to prevent conflicts
* Improve validUntil/cacheDuration metadata settings

### 2.1.2 (Feb 26, 2015)
* Fix wrong element order in generated metadata (SLS before NameID). metadata xsd updated
* Added SLO with nameID and SessionIndex in the demos
* Fix Exception message on Destination validation of the Logout_request

### 2.1.0 (Jan 14, 2015)
* Update the dm.xmlsec.binding library to 1.3.2 (Improved transform support, Workaround for buildout problem)
* Fix flask demo settings example.
* Add nameID & sessionIndex support on Logout Request
* Reject SAML Response if not signed and strict = false
* Add ForceAuh and IsPassive support on AuthN Request

### 2.0.2 (Dec 5, 2014)
* Adding AuthnContextClassRef support
* Process nested StatusCode
* Fix settings bug

### 2.0.1 (Nov 13, 2014)
* SSO and SLO (SP-Initiated and IdP-Initiated).
* Assertion and nameId encryption.
* Assertion signature.
* Message signature: AuthNRequest, LogoutRequest, LogoutResponses.
* Enable an Assertion Consumer Service endpoint.
* Enable a Single Logout Service endpoint.
* Publish the SP metadata (which can be signed).

### 1.1.0 (Sep 4, 2014)
* Security improved, added more checks at the SAMLResponse validation

### 1.0.0 (Jun 26, 2014)
* OneLogin's SAML Python Toolkit v1.0.0


text:
#ifndef __EFFEKSEER_PARAMETERS_H__
#define __EFFEKSEER_PARAMETERS_H__

#include "../Effekseer.Base.Pre.h"
#include "../Effekseer.InternalStruct.h"

namespace Effekseer
{

void LoadGradient(Gradient& gradient, uint8_t*& pos, int32_t version);

/**
	@brief
	\~English	How to treat an uv of texture type for ribbon and track
	\~Japanese	リボンと軌跡向けのテクスチャのUVの扱い方
*/
enum class TextureUVType : int32_t
{
	Strech,
	Tile,
};

/**
	@brief	\~english	uv texture parameters which is passed into a renderer
			\~japanese	レンダラーに渡されるUVTextureに関するパラメーター
*/
struct NodeRendererTextureUVTypeParameter
{
	TextureUVType Type = TextureUVType::Strech;
	float TileLength = 0.0f;
	int32_t TileEdgeHead = 0;
	int32_t TileEdgeTail = 0;
	float TileLoopAreaBegin = 0.0f;
	float TileLoopAreaEnd = 0.0f;

	void Load(uint8_t*& pos, int32_t version);
};

struct FalloffParameter
{
	enum BlendType
	{
		Add = 0,
		Sub = 1,
		Mul = 2,
	} ColorBlendType;
	Color BeginColor;
	Color EndColor;
	float Pow;

	FalloffParameter()
	{
		ColorBlendType = BlendType::Add;
		BeginColor = Color(255, 255, 255, 255);
		EndColor = Color(255, 255, 255, 255);
		Pow = 1.0f;
	}
};

} // namespace Effekseer

#endif // __EFFEKSEER_PARAMETERS_H__


text:
echo 'Installing git'
choco install -y git

echo 'Installing notepad++'
choco install -y notepadplusplus

echo 'Installing Maven'
choco install -y maven


text:
package edu.sampleu.kim.api.location;

import edu.sampleu.admin.AdminTmplMthdAftNavBase;
import org.kuali.rice.testtools.common.JiraAwareFailable;
import org.kuali.rice.testtools.selenium.AutomatedFunctionalTestUtils;
import org.kuali.rice.testtools.selenium.WebDriverUtils;

/**
 * @author Kuali Rice Team (rice.collab@kuali.org)
 */
public abstract class LocationCountryBlanketAppAftBase extends AdminTmplMthdAftNavBase {

    /**
     * ITUtil.PORTAL + "?channelTitle=Country&channelUrl="
     * + WebDriverUtils.getBaseUrlString() + ITUtil.KNS_LOOKUP_METHOD + "org.kuali.rice.location.impl.country.CountryBo&docFormKey=88888888&returnLocation=" +
     * ITUtil.PORTAL_URL + ITUtil.HIDE_RETURN_LINK;
     */
    public static final String BOOKMARK_URL = AutomatedFunctionalTestUtils.PORTAL + "?channelTitle=Country&channelUrl="
            + WebDriverUtils.getBaseUrlString() + AutomatedFunctionalTestUtils.KNS_LOOKUP_METHOD +
            "org.kuali.rice.location.impl.country.CountryBo&docFormKey=88888888&returnLocation=" +
            AutomatedFunctionalTestUtils.PORTAL_URL + AutomatedFunctionalTestUtils.HIDE_RETURN_LINK ;

    @Override
    protected String getBookmarkUrl() {
        return BOOKMARK_URL;
    }

    /**
     * {@inheritDoc}
     * Country
     * @return
     */
    @Override
    protected String getLinkLocator() {
        return "Country";
    }

    public void testLocationCountryBlanketAppBookmark(JiraAwareFailable failable) throws Exception {
        testLocationCountryBlanketApprove();
        passed();
    }

    public void testLocationCountryBlanketAppNav(JiraAwareFailable failable) throws Exception {
        testLocationCountryBlanketApprove();
        passed();
    }
}


text:
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
</head>
<body>
The api package defines the main hector api entry points (aka the v2 API)
</body>
</html>


text:
module Thinreports
  module Generator
    class PDF
      module Drawer
        class ListSection < Page
          # @param pdf (see PDF::Drawer::Page#initialize)
          # @param section [Thinreports::Core::Shape::List::SectionInternal] section
          def initialize(pdf, section)
            super(pdf, section.format)
            @section = section
            @stamp_created = false
          end

          # @param [Thinreports::Core::Shape::List::SectionInternal] section
          # @param [Array<Numeric>] at
          def draw(section, at)
            @draw_at = at
            draw_section
            super(section)
          end

          private

          def draw_section
            id = @format.identifier.to_s

            unless @stamp_created
              @pdf.create_stamp(id) { @pdf.draw_template_items(@format.attributes['items']) }
              @stamp_created = true
            end
            pdf_stamp(id)
          end

          # @see Thinreports::Generator::PDF::Drawer::Page#draw_tblock_shape
          def draw_tblock_shape(shape)
            @pdf.translate(*@draw_at) { super }
          end

          # @see Thinreports::Generator::PDF::Drawer::Page#draw_iblock_shape
          def draw_iblock_shape(shape)
            @pdf.translate(*@draw_at) { super }
          end
        end
      end
    end
  end
end


text:
import zipfile
import datetime
from shutil import copyfile
import sys
import os
import os.path

emptyfile = 'empty'
open(emptyfile, 'a').close()
if(len(sys.argv) < 2):
	raise ValueError('You must input one apk')
originApk = sys.argv[1]
if not os.path.isfile(originApk):
	raise ValueError('You must input one existing apk')

print 'now generate muti-channal apks for', originApk

beginTime = datetime.datetime.now()

# 渠道名,按需求定义
channles = [
1,2,3,4,5,6,7,8,9,10,
11,12,13,14,15,16,17,18,19,20,
21,22,23,24,25,26,27,28,29,30,
31,32,33,34,35,36,37,38,39,40,
41,42,43,44,45,46,47,48,49,50
]

for name in channles:
	index = originApk.find('.apk')
	channelX = originApk[:index] + '_' + str(name) + originApk[index:]
	copyfile(originApk, channelX)
	zipped = zipfile.ZipFile(channelX, 'a', zipfile.ZIP_DEFLATED)
	empty_channel_file = "META-INF/channel_{channel}".format(channel=name)
	zipped.write(emptyfile, empty_channel_file)
	print 'Generating ', channelX

print 'Generated channel count ', len(channles)
print 'Total used time ', datetime.datetime.now() - beginTime


text:
<?php

namespace Windows\Registry\Tests;

use Windows\Registry\Registry;
use Windows\Registry\RegistryHandle;
use Windows\Registry\RegistryKey;

class RegistryKeyTest extends \PHPUnit_Framework_TestCase
{
    protected $stubHandle;

    protected function newKey($hive = Registry::HKEY_LOCAL_MACHINE, $name = 'Software')
    {
        return new RegistryKey($this->stubHandle, $hive, $name);
    }

    public function setUp()
    {
        $this->stubHandle = $this->getMockBuilder(RegistryHandle::class)->disableOriginalConstructor()->getMock();
    }

    public function testGetHandleReturnsHandle()
    {
        $key = $this->newKey();
        $this->assertSame($this->stubHandle, $key->getHandle());
    }

    public function testGetHiveReturnsHive()
    {
        $hive = Registry::HKEY_LOCAL_MACHINE;
        $key = $this->newKey($hive);
        $this->assertSame($hive, $key->getHive());
    }

    public function testGetNameReturnsName()
    {
        $key = $this->newKey(Registry::HKEY_LOCAL_MACHINE, 'Software\Microsoft');
        $this->assertSame('Microsoft', $key->getName());
    }

    public function testGetQualifiedNameReturnsQualifiedName()
    {
        $key = $this->newKey(Registry::HKEY_LOCAL_MACHINE, 'Software\Microsoft');
        $this->assertSame('Software\Microsoft', $key->getQualifiedName());
    }

    public function testGetParentKey()
    {
        $key = $this->newKey(Registry::HKEY_LOCAL_MACHINE, 'Software\Microsoft');
        $this->assertSame('Software', $key->getParentKey()->getQualifiedName());
    }

    public function testGetParentKeyGetsHiveKey()
    {
        $key = $this->newKey(Registry::HKEY_LOCAL_MACHINE, 'Software');
        $this->assertSame('', $key->getParentKey()->getQualifiedName());
    }
}


text:
using System.Threading.Tasks;
using Abp.MultiTenancy;
using Microsoft.EntityFrameworkCore;

namespace Abp.EntityFrameworkCore
{
    public interface IDbContextProvider<TDbContext>
        where TDbContext : DbContext
    {
        Task<TDbContext> GetDbContextAsync();

        Task<TDbContext> GetDbContextAsync(MultiTenancySides? multiTenancySide);

        TDbContext GetDbContext();

        TDbContext GetDbContext(MultiTenancySides? multiTenancySide);
    }
}


text:
"""Classes and functions for UnofficialDDNSnix.
https://github.com/Robpol86/UnofficialDDNSnix
"""

from __future__ import division
from __future__ import print_function
import StringIO
import functools
import logging
import logging.handlers
import os
import re
import sys
import yaml
import yaml.parser
import yaml.reader
import yaml.scanner

# noinspection PyCallingNonCallable
class Color(str):
    """Converts {color} tags to Bash color codes. However len() will show the length of visible colors and not include \
    the invisible color codes."""

    _codes = dict(b=1, i=3, u=4, flash=5, outline=6, negative=7, invis=8, strike=9, black=30, red=31, green=32,
                  brown=33, blue=34, purple=35, cyan=36, gray=37, bgblack=40, bgred=41, bggreen=42, bgbrown=43,
                  bgblue=44, bgpurple=45, bgcyan=46, bggray=47, hiblack=90, hired=91, higreen=92, hibrown=93, hiblue=94,
                  hipurple=95, hicyan=96, higray=97, hibgblack=100, hibgred=101, hibggreen=102, hibgbrown=103,
                  hibgblue=104, hibgpurple=105, hibgcyan=106, hibggray=107, pink=95, yellow=93, white=97, bgyellow=103,
                  bgpink=105, bgwhite=107)
    _codes.update({'/all': 0, '/attr': 10, '/b': 22, '/i': 23, '/u': 24, '/flash': 25, '/outline': 26, '/negative': 27,
                   '/strike': 29, '/fg': 39, '/bg': 49})
    _codes_parsed = dict([(k, "\033[%sm" % v) for k, v in _codes.iteritems()])

    def __new__(cls, value):
        parsed = str(value.format(**cls._codes_parsed))
        for p in [(sub, sub.replace("m\033[", ';')) for sub in re.compile(r"((?:\033\[[\d;]+m){2,})").findall(parsed)]:
            parsed = str.replace(parsed, p[0], p[1])  # Merge consecutive formatting.
        obj = str.__new__(cls, parsed)
        obj.stripped = str(re.compile(r"\033\[[\d;]+m").sub('', parsed))
        return obj

    def __len__(self):
        return str.__len__(self.stripped)

    def _case(self):
        """Fix bash color code casing."""
        @functools.wraps(self)
        def wrapped(inst, *args, **kwargs):
            return re.sub(r"\033\[([\d;]+)M", r"\033\[\1m", self(inst, *args, **kwargs))
        return wrapped

    def _stp(self):
        """String to parsed conversion."""
        @functools.wraps(self)
        def wrapped(inst, *args, **kwargs):
            return str.replace(self(inst, *args, **kwargs), inst.stripped, inst)
        return wrapped

    def _color(self):
        """Converts string type outputs to Color type."""
        @functools.wraps(self)
        def wrapped(inst, *args, **kwargs):
            return Color(self(inst, *args, **kwargs))
        return wrapped

    for f in ['center', 'ljust', 'rjust', 'zfill']:
        exec("@_stp\n@_color\ndef {0}(self, *args, **kwargs): return str.{0}(self.stripped, *args, **kwargs)".format(f))

    for f in ['join', 'lower', 'lstrip', 'replace', 'rstrip', 'strip']:
        exec("@_color\ndef {0}(self, *args, **kwargs): return str.{0}(self, *args, **kwargs)".format(f))

    for f in ['swapcase', 'upper']:
        exec("@_case\n@_color\ndef {0}(self, *args, **kwargs): return str.{0}(self, *args, **kwargs)".format(f))

    for f in ['rsplit', 'split']:
        exec("def {0}(self, *args, **kwargs): return [Color(s) for s in str.{0}(self, *args, **kwargs)]".format(f))

    def title(self, *args, **kwargs):
        """Don't use: Can't figure out how to implement this properly."""
        raise NotImplementedError

class LoggingSetup(object):
    """Generates a StringIO pseudo file handler to be passed to logging.config.fileConfig. Use it with "with"."""

    def __init__(self, verbose=False, log_file='', console_quiet=False):
        self.level = "INFO" if not verbose else "DEBUG"
        self.log_file = log_file
        self.console_quiet = console_quiet
        self.draft = StringIO.StringIO()
        self.config = StringIO.StringIO()

    def __enter__(self):
        self.generate_draft()
        self.draft_to_config()
        return self

    def __exit__(self, exc_type, exc_val, exc_tb):
        self.draft.close()
        self.config.close()

    class ConsoleHandler(logging.StreamHandler):
        """A handler that logs to console in the sensible way.

        StreamHandler can log to *one of* sys.stdout or sys.stderr.

        It is more sensible to log to sys.stdout by default with only error
        (logging.WARNING and above) messages going to sys.stderr. This is how
        ConsoleHandler behaves.

        http://code.activestate.com/recipes/576819-logging-to-console-without-surprises/

        Modified by @Robpol86.
        """

        def __init__(self):
            logging.StreamHandler.__init__(self)

        def emit(self, record):
            self.stream = sys.stderr if record.levelno >= logging.WARNING else sys.stdout
            logging.StreamHandler.emit(self, record)

        def flush(self):
            # Workaround a bug in logging module
            # See:
            #   http://bugs.python.org/issue6333
            if self.stream and hasattr(self.stream, 'flush') and not self.stream.closed:
                logging.StreamHandler.flush(self)

    class NullHandler(logging.Handler):
        def emit(self, record):
            pass

    class TimedRotatingFileHandler(logging.handlers.TimedRotatingFileHandler, object):
        """Overrides TimedRotatingFileHandler to support the Color class. Gets rid of colors from file logging."""
        def emit(self, record):
            if isinstance(record, Color):
                record = record.stripped
            super(LoggingSetup.TimedRotatingFileHandler, self).emit(record)

    def generate_draft(self):
        """Create a first draft of the pseudo config file for logging."""
        # Write static data to the pseudo config file.
        self.draft.write(
            """
            [formatters]
            keys=console,file

            [formatter_console]
            format=%(message)s

            [formatter_file]
            format=%(asctime)s %(levelname)-8s %(name)-30s %(message)s
            datefmt=%Y-%m-%dT%H:%M:%S

            [loggers]
            keys=root

            [handler_null]
            class=libs.LoggingSetup.NullHandler
            args=()
            """
        )

        # Add handlers.
        handlers = []
        if not self.console_quiet:
            handlers.append('console')
            self.draft.write(
                """
                [handler_console]
                class=libs.LoggingSetup.ConsoleHandler
                level=DEBUG
                formatter=console
                args=()
                """
            )
        if self.log_file:
            handlers.append('file')
            self.draft.write(
                """
                [handler_file]
                class=libs.LoggingSetup.TimedRotatingFileHandler
                level=DEBUG
                formatter=file
                args=('%s','D',30,5)
                """ % self.log_file
            )
        if not handlers:
            handlers.append('null')
        self.draft.write(
            """
            [logger_root]
            level={level}
            handlers={handlers}

            [handlers]
            keys={handlers}
            """.format(level=self.level, handlers=','.join(handlers))
        )

    def draft_to_config(self):
        self.draft.seek(0)
        self.config.writelines(("%s\n" % line for line in (l.strip() for l in self.draft) if line))
        self.config.seek(0)

class MultipleConfigSources(object):
    """Handles configuration options from command line and YAML config file."""
    def __init__(self, docopt_parsed, config_file):
        self.docopt_parsed = dict([(o[2:], v) for o, v in docopt_parsed.iteritems()])
        if not config_file:
            self.config_file_parsed = dict()
            return
        if not os.path.isfile(config_file):
            raise self.ConfigError("Config file %s does not exist, not a file, or no permission." % config_file)
        try:
            with open(config_file, 'rb') as f:
                self.config_file_parsed = yaml.load(f)
        except IOError:
            raise self.ConfigError("Unable to read config file %s." % config_file)
        except yaml.reader.ReaderError:
            raise self.ConfigError("Unable to read config file %s, invalid data." % config_file)
        except (yaml.scanner.ScannerError, yaml.parser.ParserError) as e:
            if r"found character '\t' that cannot start any token" in str(e):
                raise self.ConfigError("Tab character found in config file %s. Must use spaces only!" % config_file)
            raise self.ConfigError("Config file %s contents not YAML formatted: %s" % (config_file, e))
        if not isinstance(self.config_file_parsed, dict):
            raise self.ConfigError(
                "Config file %s contents didn't yield dict or not YAML: %s" % (config_file, self.config_file_parsed)
            )
        for key in self.config_file_parsed:
            if key not in self.docopt_parsed:
                raise self.ConfigError("Unknown option %s in config file %s." % (key, config_file))
            if isinstance(self.docopt_parsed[key], bool) and not isinstance(self.config_file_parsed[key], bool):
                raise self.ConfigError("Config file option %s must be True or False." % key)

    class ConfigError(Exception):
        """Raised when insufficient/invalid config file or CLI options are given."""
        pass

    def merge(self):
        """Merges command line options and config file options, config file taking precedence."""
        config = self.docopt_parsed.copy()
        for key, value in config.iteritems():
            if isinstance(value, str) and value.isdigit():
                config[key] = int(value)
        for key, value in self.config_file_parsed.iteritems():
            config[key] = value
        return config

def get_config(cli_args, test=False):
    """Verifies all the required config options for UnofficialDDNS are satisfied."""
    # Read from multiple sources and get final config.
    multi_config = MultipleConfigSources(cli_args, cli_args.get('--config', ''))
    config = multi_config.merge()
    if test:
        # Skip checks if testing.
        return config
    config['registrar'] = 'name.com'  # In the future I might support other registrars.

    # Validate interval.
    if not isinstance(config['interval'], int):
        raise multi_config.ConfigError("Config option 'interval' must be a number.")
    if not config['interval']:
        raise multi_config.ConfigError("Config option 'interval' must be greater than 0.")

    # Validate pid and log.
    for option in ('log', 'pid'):
        if not config[option]:
            continue
        parent = os.path.dirname(config[option])
        if not os.path.exists(parent):
            raise multi_config.ConfigError("Parent directory %s of %s file does not exist." % (parent, option))
        if not os.access(parent, os.W_OK):
            raise multi_config.ConfigError("Parent directory %s of %s file not writable." % (parent, option))

    # Now make sure we got everything we need.
    if not all([config.get(o, None) for o in ('domain', 'user', 'passwd')]):
        raise multi_config.ConfigError("A domain, username, and password must be specified.")

    # Done.
    return config


text:
namespace AngleSharp.Css.Values
{
    using AngleSharp.Css;
    using AngleSharp.Extensions;
    using System;
    using System.Runtime.InteropServices;

    /// <summary>
    /// Represents a color value.
    /// </summary>
    [StructLayout(LayoutKind.Explicit, Pack = 1, CharSet = CharSet.Unicode)]
    public struct Color : IEquatable<Color>, IComparable<Color>, IFormattable
    {
        #region Basic colors

        /// <summary>
        /// The color #000000.
        /// </summary>
        public static readonly Color Black = new Color(0, 0, 0);

        /// <summary>
        /// The color #FFFFFF.
        /// </summary>
        public static readonly Color White = new Color(255, 255, 255);

        /// <summary>
        /// The color #FF0000.
        /// </summary>
        public static readonly Color Red = new Color(255, 0, 0);

        /// <summary>
        /// The color #FF00FF.
        /// </summary>
        public static readonly Color Magenta = new Color(255, 0, 255);

        /// <summary>
        /// The color #008000.
        /// </summary>
        public static readonly Color Green = new Color(0, 128, 0);

        /// <summary>
        /// The color #00FF00.
        /// </summary>
        public static readonly Color PureGreen = new Color(0, 255, 0);

        /// <summary>
        /// The color #0000FF.
        /// </summary>
        public static readonly Color Blue = new Color(0, 0, 255);

        /// <summary>
        /// The color #00000000.
        /// </summary>
        public static readonly Color Transparent = new Color(0, 0, 0, 0);

        #endregion

        #region Fields

        [FieldOffset(0)]
        readonly Byte _alpha;
        [FieldOffset(1)]
        readonly Byte _red;
        [FieldOffset(2)]
        readonly Byte _green;
        [FieldOffset(3)]
        readonly Byte _blue;
        [FieldOffset(0)]
        readonly Int32 _hashcode;

        #endregion

        #region ctor

        /// <summary>
        /// Creates a CSS color type without any transparency (alpha = 100%).
        /// </summary>
        /// <param name="r">The red value.</param>
        /// <param name="g">The green value.</param>
        /// <param name="b">The blue value.</param>
        public Color(Byte r, Byte g, Byte b)
        {
            _hashcode = 0;
            _alpha = 255;
            _red = r;
            _blue = b;
            _green = g;
        }

        /// <summary>
        /// Creates a CSS color type.
        /// </summary>
        /// <param name="r">The red value.</param>
        /// <param name="g">The green value.</param>
        /// <param name="b">The blue value.</param>
        /// <param name="a">The alpha value.</param>
        public Color(Byte r, Byte g, Byte b, Byte a)
        {
            _hashcode = 0;
            _alpha = a;
            _red = r;
            _blue = b;
            _green = g;
        }

        #endregion

        #region Static constructors

        /// <summary>
        /// Returns the color from the given primitives.
        /// </summary>
        /// <param name="r">The value for red [0,255].</param>
        /// <param name="g">The value for green [0,255].</param>
        /// <param name="b">The value for blue [0,255].</param>
        /// <param name="a">The value for alpha [0,1].</param>
        /// <returns>The CSS color value.</returns>
        public static Color FromRgba(Byte r, Byte g, Byte b, Single a)
        {
            return new Color(r, g, b, Normalize(a));
        }

        /// <summary>
        /// Returns the color from the given primitives.
        /// </summary>
        /// <param name="r">The value for red [0,1].</param>
        /// <param name="g">The value for green [0,1].</param>
        /// <param name="b">The value for blue [0,1].</param>
        /// <param name="a">The value for alpha [0,1].</param>
        /// <returns>The CSS color value.</returns>
        public static Color FromRgba(Single r, Single g, Single b, Single a)
        {
            return new Color(Normalize(r), Normalize(g), Normalize(b), Normalize(a));
        }

        /// <summary>
        /// Returns the gray color from the given value.
        /// </summary>
        /// <param name="number">The value for each component [0,255].</param>
        /// <param name="alpha">The value for alpha [0,1].</param>
        /// <returns>The CSS color value.</returns>
        public static Color FromGray(Byte number, Single alpha = 1f)
        {
            return new Color(number, number, number, Normalize(alpha));
        }

        /// <summary>
        /// Returns the gray color from the given value.
        /// </summary>
        /// <param name="value">The value for each component [0,1].</param>
        /// <param name="alpha">The value for alpha [0,1].</param>
        /// <returns>The CSS color value.</returns>
        public static Color FromGray(Single value, Single alpha = 1f)
        {
            return FromGray(Normalize(value), alpha);
        }

        /// <summary>
        /// Returns the color with the given name.
        /// </summary>
        /// <param name="name">The name of the color.</param>
        /// <returns>The CSS color value.</returns>
        public static Color? FromName(String name)
        {
            return Colors.GetColor(name);
        }

        /// <summary>
        /// Returns the color from the given primitives without any alpha.
        /// </summary>
        /// <param name="r">The value for red [0,255].</param>
        /// <param name="g">The value for green [0,255].</param>
        /// <param name="b">The value for blue [0,255].</param>
        /// <returns>The CSS color value.</returns>
        public static Color FromRgb(Byte r, Byte g, Byte b)
        {
            return new Color(r, g, b);
        }

        /// <summary>
        /// Returns the color from the given hex string.
        /// </summary>
        /// <param name="color">The hex string like fff or abc123 or AA126B etc.</param>
        /// <returns>The CSS color value.</returns>
        public static Color FromHex(String color)
        {
            int r = 0, g = 0, b = 0, a = 255;

            switch (color.Length)
            {
                case 4:
                    a = 17 * color[3].FromHex();
                    goto case 3;
                case 3:
                    r = 17 * color[0].FromHex();
                    g = 17 * color[1].FromHex();
                    b = 17 * color[2].FromHex();
                    break;
                case 8:
                    a = 16 * color[6].FromHex() + color[7].FromHex();
                    goto case 6;
                case 6:
                    r = 16 * color[0].FromHex() + color[1].FromHex();
                    g = 16 * color[2].FromHex() + color[3].FromHex();
                    b = 16 * color[4].FromHex() + color[5].FromHex();
                    break;
            }

            return new Color((Byte)r, (Byte)g, (Byte)b, (Byte)a);
        }

        /// <summary>
        /// Returns the color from the given hex string if it can be converted, otherwise
        /// the color is not set.
        /// </summary>
        /// <param name="color">The hexadecimal reresentation of the color.</param>
        /// <param name="value">The color value to be created.</param>
        /// <returns>The status if the string can be converted.</returns>
        public static Boolean TryFromHex(String color, out Color value)
        {
            if (color.Length == 6 || color.Length == 3 || color.Length == 8 || color.Length == 4)
            {
                for (int i = 0; i < color.Length; i++)
                {
                    if (!color[i].IsHex())
                        goto fail;
                }

                value = FromHex(color);
                return true;
            }

            fail:
            value = new Color();
            return false;
        }

        /// <summary>
        /// Returns the color of non-CSS colors in a special IE notation known
        /// as "flex hex". Computes the part without the hash and possible color
        /// names. More information can be found at:
        /// http://scrappy-do.blogspot.de/2004/08/little-rant-about-microsoft-internet.html
        /// </summary>
        /// <param name="color">The color string to evaluate.</param>
        /// <returns>The color for the color string.</returns>
        public static Color FromFlexHex(String color)
        {
            var length = Math.Max(color.Length, 3);
            var remaining = length % 3;

            if (remaining != 0)
                length += 3 - remaining;

            var n = length / 3;
            var d = Math.Min(2, n);
            var s = Math.Max(n - 8, 0);
            var chars = new Char[length];

            for (int i = 0; i < color.Length; i++)
                chars[i] = color[i].IsHex() ? color[i] : '0';

            for (int i = color.Length; i < length; i++)
                chars[i] = '0';

            if (d == 1)
            {
                var r = chars[0 * n + s].FromHex();
                var g = chars[1 * n + s].FromHex();
                var b = chars[2 * n + s].FromHex();
                return new Color((Byte)r, (Byte)g, (Byte)b);
            }
            else
            {
                var r = 16 * chars[0 * n + s].FromHex() + chars[0 * n + s + 1].FromHex();
                var g = 16 * chars[1 * n + s].FromHex() + chars[1 * n + s + 1].FromHex();
                var b = 16 * chars[2 * n + s].FromHex() + chars[2 * n + s + 1].FromHex();
                return new Color((Byte)r, (Byte)g, (Byte)b);
            }
        }

        /// <summary>
        /// Returns the color that represents the given HSL values.
        /// </summary>
        /// <param name="h">The color angle [0,1].</param>
        /// <param name="s">The saturation [0,1].</param>
        /// <param name="l">The light value [0,1].</param>
        /// <returns>The CSS color.</returns>
        public static Color FromHsl(Single h, Single s, Single l)
        {
            return FromHsla(h, s, l, 1f);
        }

        /// <summary>
        /// Returns the color that represents the given HSL values.
        /// </summary>
        /// <param name="h">The color angle [0,1].</param>
        /// <param name="s">The saturation [0,1].</param>
        /// <param name="l">The light value [0,1].</param>
        /// <param name="alpha">The alpha value [0,1].</param>
        /// <returns>The CSS color.</returns>
        public static Color FromHsla(Single h, Single s, Single l, Single alpha)
        {
            const Single third = 1f / 3f;

            var m2 = l <= 0.5f ? (l * (s + 1f)) : (l + s - l * s);
            var m1 = 2f * l - m2;
            var r = Convert(HueToRgb(m1, m2, h + third));
            var g = Convert(HueToRgb(m1, m2, h));
            var b = Convert(HueToRgb(m1, m2, h - third));
            return new Color(r, g, b, Normalize(alpha));
        }

        /// <summary>
        /// Returns the color that represents Hue-Whiteness-Blackness.
        /// </summary>
        /// <param name="h">The color angle [0,1].</param>
        /// <param name="w">The whiteness [0,1].</param>
        /// <param name="b">The blackness [0,1].</param>
        /// <returns>The CSS color.</returns>
        public static Color FromHwb(Single h, Single w, Single b)
        {
            return FromHwba(h, w, b, 1f);
        }

        /// <summary>
        /// Returns the color that represents Hue-Whiteness-Blackness.
        /// </summary>
        /// <param name="h">The color angle [0,1].</param>
        /// <param name="w">The whiteness [0,1].</param>
        /// <param name="b">The blackness [0,1].</param>
        /// <param name="alpha">The alpha value [0,1].</param>
        /// <returns>The CSS color.</returns>
        public static Color FromHwba(Single h, Single w, Single b, Single alpha)
        {
            var ratio = 1f / (w + b);
            var red = 0f;
            var green = 0f;
            var blue = 0f;

            if (ratio < 1f)
            {
                w *= ratio;
                b *= ratio;
            }

            var p = (Int32)(6 * h);
            var f = 6 * h - p;

            if ((p & 0x01) != 0)
                f = 1 - f;

            var v = 1 - b;
            var n = w + f * (v - w);

            switch (p)
            {
                default:
                case 6:
                case 0: red = v; green = n; blue = w; break;
                case 1: red = n; green = v; blue = w; break;
                case 2: red = w; green = v; blue = n; break;
                case 3: red = w; green = n; blue = v; break;
                case 4: red = n; green = w; blue = v; break;
                case 5: red = v; green = w; blue = n; break;
            }

            return FromRgba(red, green, blue, alpha);
        }

        #endregion

        #region Properties

        /// <summary>
        /// Gets the Int32 value of the color.
        /// </summary>
        public Int32 Value
        {
            get { return _hashcode; }
        }

        /// <summary>
        /// Gets the alpha part of the color.
        /// </summary>
        public Byte A
        {
            get { return _alpha; }
        }

        /// <summary>
        /// Gets the alpha part of the color in percent (0..1).
        /// </summary>
        public Double Alpha
        {
            get { return _alpha / 255.0; }
        }

        /// <summary>
        /// Gets the red part of the color.
        /// </summary>
        public Byte R
        {
            get { return _red; }
        }

        /// <summary>
        /// Gets the green part of the color.
        /// </summary>
        public Byte G
        {
            get { return _green; }
        }

        /// <summary>
        /// Gets the blue part of the color.
        /// </summary>
        public Byte B
        {
            get { return _blue; }
        }

        #endregion

        #region Equality

        /// <summary>
        /// Compares two colors and returns a boolean indicating if the two do match.
        /// </summary>
        /// <param name="a">The first color to use.</param>
        /// <param name="b">The second color to use.</param>
        /// <returns>True if both colors are equal, otherwise false.</returns>
        public static Boolean operator ==(Color a, Color b)
        {
            return a._hashcode == b._hashcode;
        }

        /// <summary>
        /// Compares two colors and returns a boolean indicating if the two do not match.
        /// </summary>
        /// <param name="a">The first color to use.</param>
        /// <param name="b">The second color to use.</param>
        /// <returns>True if both colors are not equal, otherwise false.</returns>
        public static Boolean operator !=(Color a, Color b)
        {
            return a._hashcode != b._hashcode;
        }

        /// <summary>
        /// Checks two colors for equality.
        /// </summary>
        /// <param name="other">The other color.</param>
        /// <returns>True if both colors or equal, otherwise false.</returns>
        public Boolean Equals(Color other)
        {
            return this._hashcode == other._hashcode;
        }

        /// <summary>
        /// Tests if another object is equal to this object.
        /// </summary>
        /// <param name="obj">The object to test with.</param>
        /// <returns>True if the two objects are equal, otherwise false.</returns>
        public override Boolean Equals(Object obj)
        {
            var other = obj as Color?;

            if (other != null)
            {
                return Equals(other.Value);
            }

            return false;
        }

        Int32 IComparable<Color>.CompareTo(Color other)
        {
            return _hashcode - other._hashcode;
        }

        /// <summary>
        /// Returns a hash code that defines the current color.
        /// </summary>
        /// <returns>The integer value of the hashcode.</returns>
        public override Int32 GetHashCode()
        {
            return _hashcode;
        }

        #endregion

        #region Methods

        /// <summary>
        /// Mixes two colors using alpha compositing as described here:
        /// http://en.wikipedia.org/wiki/Alpha_compositing
        /// </summary>
        /// <param name="above">The first color (above) with transparency.</param>
        /// <param name="below">The second color (below the first one) without transparency.</param>
        /// <returns>The outcome in the crossing section.</returns>
        public static Color Mix(Color above, Color below)
        {
            return Mix(above.Alpha, above, below);
        }

        /// <summary>
        /// Mixes two colors using alpha compositing as described here:
        /// http://en.wikipedia.org/wiki/Alpha_compositing
        /// </summary>
        /// <param name="alpha">The mixing parameter.</param>
        /// <param name="above">The first color (above) (no transparency).</param>
        /// <param name="below">The second color (below the first one) (no transparency).</param>
        /// <returns>The outcome in the crossing section.</returns>
        public static Color Mix(Double alpha, Color above, Color below)
        {
            var gamma = 1.0 - alpha;
            var r = gamma * below.R + alpha * above.R;
            var g = gamma * below.G + alpha * above.G;
            var b = gamma * below.B + alpha * above.B;
            return new Color((Byte)r, (Byte)g, (Byte)b);
        }

        #endregion

        #region Helpers

        static Byte Normalize(Single value)
        {
            return (Byte)Math.Max(Math.Min(Math.Round(255 * value), 255), 0);
        }

        static Byte Convert(Single value)
        {
            return (Byte)Math.Round(255f * value);
        }

        static Single HueToRgb(Single m1, Single m2, Single h)
        {
            const Single oneSixth = 1f / 6f;
            const Single twoThird = 2f / 3f;

            if (h < 0f)
                h += 1f;
            else if (h > 1f)
                h -= 1f;

            if (h < oneSixth)
                return m1 + (m2 - m1) * h * 6f;
            else if (h < 0.5)
                return m2;
            else if (h < twoThird)
                return m1 + (m2 - m1) * (twoThird - h) * 6f;

            return m1;
        }

        #endregion

        #region String Representation

        /// <summary>
        /// Returns a string representing the color in ARGB hex.
        /// </summary>
        /// <returns>The ARGB string.</returns>
        public override String ToString()
        {
            if (_alpha == 255)
            {
                var arguments = String.Join(", ", new[]
                {
                    R.ToString(),
                    G.ToString(),
                    B.ToString()
                });
                return FunctionNames.Rgb.CssFunction(arguments);
            }
            else
            {
                var arguments = String.Join(", ", new[]
                {
                    R.ToString(),
                    G.ToString(),
                    B.ToString(),
                    Alpha.ToString()
                });
                return FunctionNames.Rgba.CssFunction(arguments);
            }
        }

        /// <summary>
        /// Returns a formatted string representing the length.
        /// </summary>
        /// <param name="format">The format of the number.</param>
        /// <param name="formatProvider">The provider to use.</param>
        /// <returns>The unit string.</returns>
        public String ToString(String format, IFormatProvider formatProvider)
        {
            if (_alpha == 255)
            {
                var arguments = String.Join(", ", new[]
                {
                    R.ToString(format, formatProvider),
                    G.ToString(format, formatProvider),
                    B.ToString(format, formatProvider)
                });
                return FunctionNames.Rgb.CssFunction(arguments);
            }
            else
            {
                var arguments = String.Join(", ", new[]
                {
                    R.ToString(format, formatProvider),
                    G.ToString(format, formatProvider),
                    B.ToString(format, formatProvider),
                    Alpha.ToString(format, formatProvider)
                });
                return FunctionNames.Rgba.CssFunction(arguments);
            }
        }

        #endregion
    }
}


text:
<component name="libraryTable">
  <library name="support-fragment-25.3.0">
    <CLASSES>
      <root url="jar://$USER_HOME$/.android/build-cache/63ede2f11f268d19ca0504cf221bdab6963177a7/output/jars/classes.jar!/" />
      <root url="file://$USER_HOME$/.android/build-cache/63ede2f11f268d19ca0504cf221bdab6963177a7/output/res" />
    </CLASSES>
    <JAVADOC />
    <SOURCES>
      <root url="jar://F:/AppData/Local/Android/sdk/extras/android/m2repository/com/android/support/support-fragment/25.3.0/support-fragment-25.3.0-sources.jar!/" />
    </SOURCES>
  </library>
</component>