Skip to content

Commit

Permalink
Optimize
Browse files Browse the repository at this point in the history
  • Loading branch information
Hilen committed Nov 26, 2016
1 parent fede5a9 commit 45c486f
Show file tree
Hide file tree
Showing 24 changed files with 51 additions and 645 deletions.
4 changes: 2 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,9 +9,9 @@
TSWeChat - A [WeChat](https://itunes.apple.com/cn/app/wei/id414478124) alternative, written in Swift.       [中文说明](Chinese_README.md)

## Requirements
- [Cocoapods](https://github.com/CocoaPods/CocoaPods) 0.39.0 +
- [Cocoapods](https://github.com/CocoaPods/CocoaPods) 1.1.1 +
- iOS 8.0+ / Mac OS X 10.9+
- Xcode 7.3+
- Xcode 8.1+


## Features
Expand Down
20 changes: 0 additions & 20 deletions TSWeChat.xcodeproj/project.pbxproj
Original file line number Diff line number Diff line change
Expand Up @@ -49,12 +49,9 @@
AE8742911C7B3547003A435C /* TSContactTableViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = AE87428F1C7B3547003A435C /* TSContactTableViewCell.swift */; };
AE8742921C7B3547003A435C /* TSContactTableViewCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = AE8742901C7B3547003A435C /* TSContactTableViewCell.xib */; };
AE8F49AC1C46A905009C1541 /* AboutApp.swift in Sources */ = {isa = PBXBuildFile; fileRef = AE8F499D1C46A905009C1541 /* AboutApp.swift */; };
AE8F49AD1C46A905009C1541 /* CGRect+Extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = AE8F499E1C46A905009C1541 /* CGRect+Extension.swift */; };
AE8F49AE1C46A905009C1541 /* Device.swift in Sources */ = {isa = PBXBuildFile; fileRef = AE8F499F1C46A905009C1541 /* Device.swift */; };
AE8F49B01C46A905009C1541 /* NSDictionary+Extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = AE8F49A11C46A905009C1541 /* NSDictionary+Extension.swift */; };
AE8F49B21C46A905009C1541 /* NSObject+String.swift in Sources */ = {isa = PBXBuildFile; fileRef = AE8F49A31C46A905009C1541 /* NSObject+String.swift */; };
AE8F49B31C46A905009C1541 /* UIBarButtonItem+Block.swift in Sources */ = {isa = PBXBuildFile; fileRef = AE8F49A41C46A905009C1541 /* UIBarButtonItem+Block.swift */; };
AE8F49B51C46A905009C1541 /* UIScreen+Extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = AE8F49A61C46A905009C1541 /* UIScreen+Extension.swift */; };
AE8F49B61C46A905009C1541 /* UISearchBar+Extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = AE8F49A71C46A905009C1541 /* UISearchBar+Extension.swift */; };
AE8F49B91C46A905009C1541 /* UIView+Frame.swift in Sources */ = {isa = PBXBuildFile; fileRef = AE8F49AA1C46A905009C1541 /* UIView+Frame.swift */; };
AE8F49BA1C46A905009C1541 /* UIViewController+Extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = AE8F49AB1C46A905009C1541 /* UIViewController+Extension.swift */; };
Expand Down Expand Up @@ -90,7 +87,6 @@
AEE69A5A1C7CB07C00C69224 /* Expression.plist in Resources */ = {isa = PBXBuildFile; fileRef = AEE69A591C7CB07C00C69224 /* Expression.plist */; };
AEE69B251C7CB2AF00C69224 /* Expression.bundle in Resources */ = {isa = PBXBuildFile; fileRef = AEE69B241C7CB2AF00C69224 /* Expression.bundle */; };
AEE69B621C81997500C69224 /* PHAsset+Extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = AEE69B5F1C81997500C69224 /* PHAsset+Extension.swift */; };
AEE69B661C81999E00C69224 /* UIImage+Orientation.swift in Sources */ = {isa = PBXBuildFile; fileRef = AEE69B651C81999E00C69224 /* UIImage+Orientation.swift */; };
AEE69BA01C81B58600C69224 /* TSChatBaseCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = AEE69B691C81B58600C69224 /* TSChatBaseCell.swift */; };
AEE69BA11C81B58600C69224 /* TSChatCellDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = AEE69B6A1C81B58600C69224 /* TSChatCellDelegate.swift */; };
AEE69BA21C81B58600C69224 /* TSChatImageCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = AEE69B6B1C81B58600C69224 /* TSChatImageCell.swift */; };
Expand Down Expand Up @@ -138,7 +134,6 @@
AEE69C121C81B66100C69224 /* TSChatSubModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = AEE69C111C81B66100C69224 /* TSChatSubModel.swift */; };
AEE69C141C81B68500C69224 /* TSLogger.swift in Sources */ = {isa = PBXBuildFile; fileRef = AEE69C131C81B68500C69224 /* TSLogger.swift */; };
AEE69C161C81B6DD00C69224 /* TSChatModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = AEE69C151C81B6DD00C69224 /* TSChatModel.swift */; };
AEE69C181C81B92700C69224 /* UILabel+Extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = AEE69C171C81B92700C69224 /* UILabel+Extension.swift */; };
AEE69C1B1C81B97F00C69224 /* TSWebViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = AEE69C1A1C81B97F00C69224 /* TSWebViewController.swift */; };
AEE69C1F1C81BF1F00C69224 /* TSConfig.swift in Sources */ = {isa = PBXBuildFile; fileRef = AEE69C1E1C81BF1F00C69224 /* TSConfig.swift */; };
/* End PBXBuildFile section */
Expand Down Expand Up @@ -197,12 +192,9 @@
AE87428F1C7B3547003A435C /* TSContactTableViewCell.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = TSContactTableViewCell.swift; sourceTree = "<group>"; };
AE8742901C7B3547003A435C /* TSContactTableViewCell.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = TSContactTableViewCell.xib; sourceTree = "<group>"; };
AE8F499D1C46A905009C1541 /* AboutApp.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AboutApp.swift; sourceTree = "<group>"; };
AE8F499E1C46A905009C1541 /* CGRect+Extension.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "CGRect+Extension.swift"; sourceTree = "<group>"; };
AE8F499F1C46A905009C1541 /* Device.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Device.swift; sourceTree = "<group>"; };
AE8F49A11C46A905009C1541 /* NSDictionary+Extension.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "NSDictionary+Extension.swift"; sourceTree = "<group>"; };
AE8F49A31C46A905009C1541 /* NSObject+String.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "NSObject+String.swift"; sourceTree = "<group>"; };
AE8F49A41C46A905009C1541 /* UIBarButtonItem+Block.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "UIBarButtonItem+Block.swift"; sourceTree = "<group>"; };
AE8F49A61C46A905009C1541 /* UIScreen+Extension.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "UIScreen+Extension.swift"; sourceTree = "<group>"; };
AE8F49A71C46A905009C1541 /* UISearchBar+Extension.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "UISearchBar+Extension.swift"; sourceTree = "<group>"; };
AE8F49AA1C46A905009C1541 /* UIView+Frame.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "UIView+Frame.swift"; sourceTree = "<group>"; };
AE8F49AB1C46A905009C1541 /* UIViewController+Extension.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "UIViewController+Extension.swift"; sourceTree = "<group>"; };
Expand Down Expand Up @@ -243,7 +235,6 @@
AEE69A591C7CB07C00C69224 /* Expression.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = Expression.plist; sourceTree = "<group>"; };
AEE69B241C7CB2AF00C69224 /* Expression.bundle */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.plug-in"; path = Expression.bundle; sourceTree = "<group>"; };
AEE69B5F1C81997500C69224 /* PHAsset+Extension.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "PHAsset+Extension.swift"; sourceTree = "<group>"; };
AEE69B651C81999E00C69224 /* UIImage+Orientation.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "UIImage+Orientation.swift"; sourceTree = "<group>"; };
AEE69B691C81B58600C69224 /* TSChatBaseCell.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = TSChatBaseCell.swift; sourceTree = "<group>"; };
AEE69B6A1C81B58600C69224 /* TSChatCellDelegate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = TSChatCellDelegate.swift; sourceTree = "<group>"; };
AEE69B6B1C81B58600C69224 /* TSChatImageCell.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = TSChatImageCell.swift; sourceTree = "<group>"; };
Expand Down Expand Up @@ -291,7 +282,6 @@
AEE69C111C81B66100C69224 /* TSChatSubModel.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = TSChatSubModel.swift; sourceTree = "<group>"; };
AEE69C131C81B68500C69224 /* TSLogger.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = TSLogger.swift; sourceTree = "<group>"; };
AEE69C151C81B6DD00C69224 /* TSChatModel.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = TSChatModel.swift; sourceTree = "<group>"; };
AEE69C171C81B92700C69224 /* UILabel+Extension.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "UILabel+Extension.swift"; sourceTree = "<group>"; };
AEE69C1A1C81B97F00C69224 /* TSWebViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = TSWebViewController.swift; sourceTree = "<group>"; };
AEE69C1E1C81BF1F00C69224 /* TSConfig.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = TSConfig.swift; sourceTree = "<group>"; };
EEDE4F6B7BF2C153C58B4744 /* Pods_TSWeChat.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_TSWeChat.framework; sourceTree = BUILT_PRODUCTS_DIR; };
Expand Down Expand Up @@ -391,17 +381,12 @@
AE8F499C1C46A905009C1541 /* Helpers */ = {
isa = PBXGroup;
children = (
AEE69C171C81B92700C69224 /* UILabel+Extension.swift */,
AE8F499D1C46A905009C1541 /* AboutApp.swift */,
AE8F499E1C46A905009C1541 /* CGRect+Extension.swift */,
AE8F499F1C46A905009C1541 /* Device.swift */,
AE8742781C7AE48A003A435C /* NSDate+Extension.swift */,
AE8F49A11C46A905009C1541 /* NSDictionary+Extension.swift */,
AE8F49A31C46A905009C1541 /* NSObject+String.swift */,
AEE69B5F1C81997500C69224 /* PHAsset+Extension.swift */,
AE8F49A41C46A905009C1541 /* UIBarButtonItem+Block.swift */,
AEE69B651C81999E00C69224 /* UIImage+Orientation.swift */,
AE8F49A61C46A905009C1541 /* UIScreen+Extension.swift */,
AE8F49A71C46A905009C1541 /* UISearchBar+Extension.swift */,
AE8F49AA1C46A905009C1541 /* UIView+Frame.swift */,
AE8F49AB1C46A905009C1541 /* UIViewController+Extension.swift */,
Expand Down Expand Up @@ -894,7 +879,6 @@
files = (
AE8F49BA1C46A905009C1541 /* UIViewController+Extension.swift in Sources */,
AE8742751C7AE23E003A435C /* TSModel.swift in Sources */,
AE8F49AE1C46A905009C1541 /* Device.swift in Sources */,
AEBEE5B01C8754BD00956B0C /* TSChatButton+UI.swift in Sources */,
AEE69BB71C81B58600C69224 /* TSChatEmojiDictionary.swift in Sources */,
AE8F49B91C46A905009C1541 /* UIView+Frame.swift in Sources */,
Expand Down Expand Up @@ -944,7 +928,6 @@
AE8742611C7AE0F1003A435C /* TSProgressHUD.swift in Sources */,
AEE69BB61C81B58600C69224 /* ImageFilesManager.swift in Sources */,
AEE69C141C81B68500C69224 /* TSLogger.swift in Sources */,
AE8F49AD1C46A905009C1541 /* CGRect+Extension.swift in Sources */,
AEE69BCE1C81B58600C69224 /* TSChatShareMoreCollectionViewCell.swift in Sources */,
AE8742741C7AE23E003A435C /* TSMessageModel.swift in Sources */,
AEE69BBB1C81B58600C69224 /* UITableView+ChatAdditions.swift in Sources */,
Expand All @@ -962,9 +945,7 @@
AEE69BC51C81B58600C69224 /* TSChatViewController.swift in Sources */,
AE040A9F1C990B4A003A764D /* TSLocationManager.swift in Sources */,
AEE69BB81C81B58600C69224 /* TSChatTextParser.swift in Sources */,
AE8F49B51C46A905009C1541 /* UIScreen+Extension.swift in Sources */,
AE92B7881C3FF7C900968A3A /* TSAppMacro.swift in Sources */,
AEE69C181C81B92700C69224 /* UILabel+Extension.swift in Sources */,
AEE69BD31C81B58600C69224 /* TSChatVoiceIndicatorView.swift in Sources */,
AEBEE5AE1C8754BD00956B0C /* TSChatSystemEdgeLabel.swift in Sources */,
AEE69BB91C81B58600C69224 /* TSYYTextLinePositionModifier.swift in Sources */,
Expand All @@ -977,7 +958,6 @@
AEE69C1F1C81BF1F00C69224 /* TSConfig.swift in Sources */,
AEE69BAD1C81B58600C69224 /* AudioDelegate.swift in Sources */,
AEBEE5A21C87087600956B0C /* TSResponseSerializer.swift in Sources */,
AEE69B661C81999E00C69224 /* UIImage+Orientation.swift in Sources */,
AEE69BC91C81B58600C69224 /* TSChatEmotionCell.swift in Sources */,
AE40FD241C5B644300CB7339 /* TSImageTextTableViewCell.swift in Sources */,
AEE69C161C81B6DD00C69224 /* TSChatModel.swift in Sources */,
Expand Down
2 changes: 1 addition & 1 deletion TSWeChat/Classes/Chat/Cells/TSChatBaseCell.swift
Original file line number Diff line number Diff line change
Expand Up @@ -76,7 +76,7 @@ class TSChatBaseCell: UITableViewCell {
}
if model.fromMe {
self.nicknameLabel.height = 0
self.avatarImageView.left = UIScreen.width - kChatAvatarMarginLeft - kChatAvatarWidth
self.avatarImageView.left = UIScreen.ts_width - kChatAvatarMarginLeft - kChatAvatarWidth
} else {
self.nicknameLabel.height = 0
self.avatarImageView.left = kChatAvatarMarginLeft
Expand Down
2 changes: 1 addition & 1 deletion TSWeChat/Classes/Chat/Cells/TSChatImageCell.swift
Original file line number Diff line number Diff line change
Expand Up @@ -74,7 +74,7 @@ class TSChatImageCell: TSChatBaseCell {

if model.fromMe {
//value = 屏幕宽 - 头像的边距10 - 头像宽 - 气泡距离头像的 gap 值 - 图片宽
self.chatImageView.left = UIScreen.width - kChatAvatarMarginLeft - kChatAvatarWidth - kChatBubbleMaginLeft - self.chatImageView.width
self.chatImageView.left = UIScreen.ts_width - kChatAvatarMarginLeft - kChatAvatarWidth - kChatBubbleMaginLeft - self.chatImageView.width
} else {
//value = 距离屏幕左边的距离
self.chatImageView.left = kChatBubbleLeft
Expand Down
6 changes: 3 additions & 3 deletions TSWeChat/Classes/Chat/Cells/TSChatSystemCell.swift
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@
import UIKit

private let kChatInfoFont: UIFont = UIFont.systemFont(ofSize: 13)
private let kChatInfoLabelMaxWdith : CGFloat = UIScreen.width - 40*2
private let kChatInfoLabelMaxWdith : CGFloat = UIScreen.ts_width - 40*2
private let kChatInfoLabelPaddingLeft: CGFloat = 8 //左右分别留出 8 像素的留白
private let kChatInfoLabelPaddingTop: CGFloat = 4 //上下分别留出 4 像素的留白
private let kChatInfoLabelMarginTop: CGFloat = 3 //距离顶部
Expand Down Expand Up @@ -46,10 +46,10 @@ class TSChatSystemCell: UITableViewCell {
guard let model = self.model else {
return
}
self.infomationLabel.setFrameWithString(model.messageContent!, width: kChatInfoLabelMaxWdith)
self.infomationLabel.ts_setFrameWithString(model.messageContent!, width: kChatInfoLabelMaxWdith)
self.infomationLabel.width = self.infomationLabel.width + kChatInfoLabelPaddingLeft*2 //左右的留白
self.infomationLabel.height = self.infomationLabel.height + kChatInfoLabelPaddingTop*2 //上下的留白
self.infomationLabel.left = (UIScreen.width - self.infomationLabel.width) / 2
self.infomationLabel.left = (UIScreen.ts_width - self.infomationLabel.width) / 2
self.infomationLabel.top = kChatInfoLabelMarginTop
}

Expand Down
4 changes: 2 additions & 2 deletions TSWeChat/Classes/Chat/Cells/TSChatTextCell.swift
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ import UIKit
import YYText

let kChatTextLeft: CGFloat = 72 //消息在左边的时候, 文字距离屏幕左边的距离
let kChatTextMaxWidth: CGFloat = UIScreen.width - kChatTextLeft - 82 //消息在右边, 70:文本离屏幕左的距离, 82:文本离屏幕右的距离
let kChatTextMaxWidth: CGFloat = UIScreen.ts_width - kChatTextLeft - 82 //消息在右边, 70:文本离屏幕左的距离, 82:文本离屏幕右的距离
let kChatTextMarginTop: CGFloat = 12 //文字的顶部和气泡顶部相差 12 像素
let kChatTextMarginBottom: CGFloat = 11 //文字的底部和气泡底部相差 11 像素
let kChatTextMarginLeft: CGFloat = 17 //文字的左边 和气泡的左边相差 17 ,包括剪头部门
Expand Down Expand Up @@ -84,7 +84,7 @@ class TSChatTextCell: TSChatBaseCell {

if model.fromMe {
//value = 屏幕宽 - 头像的边距10 - 头像宽 - 气泡距离头像的 gap 值 - (文字宽 - 2倍的文字和气泡的左右距离 , 或者是最小的气泡图片距离)
self.bubbleImageView.left = UIScreen.width - kChatAvatarMarginLeft - kChatAvatarWidth - kChatBubbleMaginLeft - max(self.contentLabel.width + kChatBubbleWidthBuffer, kChatBubbleImageViewWidth)
self.bubbleImageView.left = UIScreen.ts_width - kChatAvatarMarginLeft - kChatAvatarWidth - kChatBubbleMaginLeft - max(self.contentLabel.width + kChatBubbleWidthBuffer, kChatBubbleImageViewWidth)
} else {
//value = 距离屏幕左边的距离
self.bubbleImageView.left = kChatBubbleLeft
Expand Down
6 changes: 3 additions & 3 deletions TSWeChat/Classes/Chat/Cells/TSChatTimeCell.swift
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@

import UIKit

private let kChatTimeLabelMaxWdith : CGFloat = UIScreen.width - 30*2
private let kChatTimeLabelMaxWdith : CGFloat = UIScreen.ts_width - 30*2
private let kChatTimeLabelPaddingLeft: CGFloat = 6 //左右分别留出 6 像素的留白
private let kChatTimeLabelPaddingTop: CGFloat = 3 //上下分别留出 3 像素的留白
private let kChatTimeLabelMarginTop: CGFloat = 10 //顶部 10 px
Expand Down Expand Up @@ -38,9 +38,9 @@ class TSChatTimeCell: UITableViewCell {
guard let message = self.model?.messageContent else {
return
}
self.timeLabel.setFrameWithString(message, width: kChatTimeLabelMaxWdith)
self.timeLabel.ts_setFrameWithString(message, width: kChatTimeLabelMaxWdith)
self.timeLabel.width = self.timeLabel.width + kChatTimeLabelPaddingLeft*2 //左右的留白
self.timeLabel.left = (UIScreen.width - self.timeLabel.width) / 2
self.timeLabel.left = (UIScreen.ts_width - self.timeLabel.width) / 2
self.timeLabel.height = self.timeLabel.height + kChatTimeLabelPaddingTop*2
self.timeLabel.top = kChatTimeLabelMarginTop
}
Expand Down
2 changes: 1 addition & 1 deletion TSWeChat/Classes/Chat/Cells/TSChatVoiceCell.swift
Original file line number Diff line number Diff line change
Expand Up @@ -103,7 +103,7 @@ class TSChatVoiceCell: TSChatBaseCell {

if model.fromMe {
//value = 屏幕宽 - 头像的边距10 - 头像宽 - 气泡距离头像的 gap 值 - 文字宽 - 2倍的文字和气泡的左右距离
self.listenVoiceButton.left = UIScreen.width - kChatAvatarMarginLeft - kChatAvatarWidth - kChatBubbleMaginLeft - self.listenVoiceButton.width
self.listenVoiceButton.left = UIScreen.ts_width - kChatAvatarMarginLeft - kChatAvatarWidth - kChatBubbleMaginLeft - self.listenVoiceButton.width
//value = 声音的左 - 秒数文字的宽 - 间隔值
self.durationLabel.left = self.listenVoiceButton.left - self.durationLabel.width
self.durationLabel.textAlignment = .right
Expand Down
Loading

0 comments on commit 45c486f

Please sign in to comment.